From d3d16435168247d51d49119d2be825602254258a Mon Sep 17 00:00:00 2001 From: abdussamedulutas Date: Tue, 28 Jul 2026 17:50:35 +0300 Subject: [PATCH] vendor: add Skia shared artifact --- vendor/artifacts/skia/build/args.gn | 14 + vendor/artifacts/skia/include/BUILD.bazel | 5 + vendor/artifacts/skia/include/OWNERS | 16 + .../include/android/AHardwareBufferUtils.h | 26 + .../skia/include/android/BUILD.bazel | 36 + .../include/android/GrAHardwareBufferUtils.h | 97 + .../include/android/SkAndroidFrameworkUtils.h | 85 + .../skia/include/android/SkAnimatedImage.h | 193 + .../skia/include/android/SkCanvasAndroid.h | 20 + .../skia/include/android/SkImageAndroid.h | 100 + .../skia/include/android/SkSurfaceAndroid.h | 50 + .../include/android/graphite/SurfaceAndroid.h | 59 + .../android/vk/AndroidVulkanMemoryAllocator.h | 31 + .../artifacts/skia/include/codec/BUILD.bazel | 124 + .../skia/include/codec/SkAndroidCodec.h | 302 + .../skia/include/codec/SkAvifDecoder.h | 80 + .../skia/include/codec/SkBmpDecoder.h | 44 + vendor/artifacts/skia/include/codec/SkCodec.h | 1177 + .../skia/include/codec/SkCodecAnimation.h | 61 + .../skia/include/codec/SkEncodedImageFormat.h | 33 + .../skia/include/codec/SkEncodedOrigin.h | 71 + .../skia/include/codec/SkGifDecoder.h | 44 + .../skia/include/codec/SkIcoDecoder.h | 44 + .../skia/include/codec/SkJpegDecoder.h | 51 + .../skia/include/codec/SkJpegxlDecoder.h | 44 + .../skia/include/codec/SkPixmapUtils.h | 31 + .../skia/include/codec/SkPngChunkReader.h | 45 + .../skia/include/codec/SkPngDecoder.h | 51 + .../skia/include/codec/SkPngRustDecoder.h | 30 + .../skia/include/codec/SkRawDecoder.h | 50 + .../skia/include/codec/SkWbmpDecoder.h | 44 + .../skia/include/codec/SkWebpDecoder.h | 51 + .../artifacts/skia/include/config/BUILD.bazel | 27 + .../skia/include/config/MODULE.bazel | 5 + vendor/artifacts/skia/include/config/OWNERS | 2 + .../skia/include/config/SkUserConfig.h | 141 + .../skia/include/config/WORKSPACE.bazel | 3 + .../artifacts/skia/include/config/copts.bzl | 181 + .../skia/include/config/linkopts.bzl | 35 + .../artifacts/skia/include/core/BUILD.bazel | 127 + .../artifacts/skia/include/core/SkAlphaType.h | 45 + .../skia/include/core/SkAnnotation.h | 52 + vendor/artifacts/skia/include/core/SkArc.h | 69 + .../skia/include/core/SkBBHFactory.h | 67 + vendor/artifacts/skia/include/core/SkBitmap.h | 1264 + .../artifacts/skia/include/core/SkBlendMode.h | 112 + .../artifacts/skia/include/core/SkBlender.h | 30 + .../artifacts/skia/include/core/SkBlurTypes.h | 20 + .../skia/include/core/SkCPUContext.h | 31 + .../skia/include/core/SkCPURecorder.h | 77 + vendor/artifacts/skia/include/core/SkCanvas.h | 2762 + .../include/core/SkCanvasVirtualEnforcer.h | 61 + .../skia/include/core/SkCapabilities.h | 35 + vendor/artifacts/skia/include/core/SkClipOp.h | 19 + vendor/artifacts/skia/include/core/SkColor.h | 469 + .../skia/include/core/SkColorFilter.h | 150 + .../skia/include/core/SkColorSpace.h | 432 + .../skia/include/core/SkColorTable.h | 62 + .../artifacts/skia/include/core/SkColorType.h | 159 + .../skia/include/core/SkContourMeasure.h | 215 + .../skia/include/core/SkCoverageMode.h | 28 + .../artifacts/skia/include/core/SkCubicMap.h | 47 + vendor/artifacts/skia/include/core/SkData.h | 225 + .../artifacts/skia/include/core/SkDataTable.h | 122 + .../artifacts/skia/include/core/SkDocument.h | 93 + .../artifacts/skia/include/core/SkDrawable.h | 178 + .../artifacts/skia/include/core/SkExecutor.h | 59 + .../skia/include/core/SkFlattenable.h | 115 + vendor/artifacts/skia/include/core/SkFont.h | 536 + .../skia/include/core/SkFontArguments.h | 116 + .../skia/include/core/SkFontMetrics.h | 139 + .../artifacts/skia/include/core/SkFontMgr.h | 178 + .../skia/include/core/SkFontParameters.h | 43 + .../skia/include/core/SkFontScanner.h | 45 + .../artifacts/skia/include/core/SkFontStyle.h | 84 + .../artifacts/skia/include/core/SkFontTypes.h | 25 + .../skia/include/core/SkFourByteTag.h | 19 + .../artifacts/skia/include/core/SkGraphics.h | 169 + vendor/artifacts/skia/include/core/SkImage.h | 918 + .../skia/include/core/SkImageFilter.h | 119 + .../skia/include/core/SkImageGenerator.h | 140 + .../artifacts/skia/include/core/SkImageInfo.h | 634 + vendor/artifacts/skia/include/core/SkM44.h | 442 + .../skia/include/core/SkMallocPixelRef.h | 45 + .../skia/include/core/SkMaskFilter.h | 45 + vendor/artifacts/skia/include/core/SkMatrix.h | 1887 + vendor/artifacts/skia/include/core/SkMesh.h | 429 + .../artifacts/skia/include/core/SkMilestone.h | 9 + .../skia/include/core/SkOpenTypeSVGDecoder.h | 30 + .../skia/include/core/SkOverdrawCanvas.h | 94 + vendor/artifacts/skia/include/core/SkPaint.h | 698 + vendor/artifacts/skia/include/core/SkPath.h | 1163 + .../skia/include/core/SkPathBuilder.h | 1050 + .../skia/include/core/SkPathEffect.h | 88 + .../artifacts/skia/include/core/SkPathIter.h | 90 + .../skia/include/core/SkPathMeasure.h | 96 + .../artifacts/skia/include/core/SkPathTypes.h | 71 + .../artifacts/skia/include/core/SkPathUtils.h | 39 + .../artifacts/skia/include/core/SkPicture.h | 291 + .../skia/include/core/SkPictureRecorder.h | 115 + .../artifacts/skia/include/core/SkPixelRef.h | 122 + vendor/artifacts/skia/include/core/SkPixmap.h | 731 + vendor/artifacts/skia/include/core/SkPoint.h | 10 + vendor/artifacts/skia/include/core/SkPoint3.h | 149 + vendor/artifacts/skia/include/core/SkRRect.h | 540 + .../artifacts/skia/include/core/SkRSXform.h | 71 + .../include/core/SkRasterHandleAllocator.h | 94 + .../artifacts/skia/include/core/SkRecorder.h | 50 + vendor/artifacts/skia/include/core/SkRect.h | 1419 + vendor/artifacts/skia/include/core/SkRefCnt.h | 391 + vendor/artifacts/skia/include/core/SkRegion.h | 701 + .../skia/include/core/SkSamplingOptions.h | 107 + vendor/artifacts/skia/include/core/SkScalar.h | 149 + .../skia/include/core/SkSerialProcs.h | 127 + vendor/artifacts/skia/include/core/SkShader.h | 123 + vendor/artifacts/skia/include/core/SkSize.h | 93 + vendor/artifacts/skia/include/core/SkSpan.h | 13 + vendor/artifacts/skia/include/core/SkStream.h | 524 + .../artifacts/skia/include/core/SkStrikeRef.h | 80 + vendor/artifacts/skia/include/core/SkString.h | 297 + .../artifacts/skia/include/core/SkStrokeRec.h | 160 + .../artifacts/skia/include/core/SkSurface.h | 689 + .../skia/include/core/SkSurfaceProps.h | 122 + .../artifacts/skia/include/core/SkSwizzle.h | 21 + .../artifacts/skia/include/core/SkTextBlob.h | 541 + .../include/core/SkTextureCompressionType.h | 30 + .../artifacts/skia/include/core/SkTileMode.h | 41 + .../skia/include/core/SkTiledImageUtils.h | 125 + .../skia/include/core/SkTraceMemoryDump.h | 121 + .../artifacts/skia/include/core/SkTypeface.h | 462 + vendor/artifacts/skia/include/core/SkTypes.h | 193 + .../skia/include/core/SkUnPreMultiply.h | 55 + .../artifacts/skia/include/core/SkVertices.h | 136 + .../artifacts/skia/include/core/SkYUVAInfo.h | 311 + .../skia/include/core/SkYUVAPixmaps.h | 335 + .../artifacts/skia/include/docs/BUILD.bazel | 48 + .../include/docs/SkMultiPictureDocument.h | 53 + .../skia/include/docs/SkPDFDocument.h | 271 + .../skia/include/docs/SkPDFJpegHelpers.h | 41 + .../skia/include/docs/SkXPSDocument.h | 43 + .../skia/include/effects/BUILD.bazel | 50 + .../skia/include/effects/Sk1DPathEffect.h | 40 + .../skia/include/effects/Sk2DPathEffect.h | 33 + .../skia/include/effects/SkBlenders.h | 27 + .../skia/include/effects/SkBlurMaskFilter.h | 35 + .../skia/include/effects/SkColorMatrix.h | 57 + .../include/effects/SkColorMatrixFilter.h | 22 + .../skia/include/effects/SkCornerPathEffect.h | 32 + .../skia/include/effects/SkDashPathEffect.h | 43 + .../include/effects/SkDiscretePathEffect.h | 37 + .../skia/include/effects/SkGradient.h | 206 + .../include/effects/SkHighContrastFilter.h | 84 + .../skia/include/effects/SkImageFilters.h | 641 + .../skia/include/effects/SkLumaColorFilter.h | 37 + .../include/effects/SkOverdrawColorFilter.h | 33 + .../include/effects/SkPerlinNoiseShader.h | 53 + .../skia/include/effects/SkRuntimeEffect.h | 503 + .../skia/include/effects/SkShaderMaskFilter.h | 28 + .../skia/include/effects/SkTableMaskFilter.h | 47 + .../skia/include/effects/SkTrimPathEffect.h | 45 + .../artifacts/skia/include/encode/BUILD.bazel | 65 + .../artifacts/skia/include/encode/SkEncoder.h | 63 + vendor/artifacts/skia/include/encode/SkICC.h | 36 + .../skia/include/encode/SkJpegEncoder.h | 127 + .../skia/include/encode/SkPngEncoder.h | 132 + .../skia/include/encode/SkPngRustEncoder.h | 106 + .../skia/include/encode/SkWebpEncoder.h | 87 + vendor/artifacts/skia/include/gpu/BUILD.bazel | 24 + vendor/artifacts/skia/include/gpu/GpuTypes.h | 98 + .../skia/include/gpu/MutableTextureState.h | 68 + .../skia/include/gpu/ShaderErrorHandler.h | 46 + .../skia/include/gpu/ganesh/BUILD.bazel | 35 + .../include/gpu/ganesh/GrBackendSemaphore.h | 50 + .../include/gpu/ganesh/GrBackendSurface.h | 257 + .../include/gpu/ganesh/GrContextOptions.h | 384 + .../gpu/ganesh/GrContextThreadSafeProxy.h | 175 + .../skia/include/gpu/ganesh/GrDirectContext.h | 1027 + .../gpu/ganesh/GrDriverBugWorkarounds.h | 53 + .../ganesh/GrDriverBugWorkaroundsAutogen.h | 45 + .../gpu/ganesh/GrExternalTextureGenerator.h | 54 + .../include/gpu/ganesh/GrRecordingContext.h | 299 + .../skia/include/gpu/ganesh/GrTypes.h | 193 + .../gpu/ganesh/GrYUVABackendTextures.h | 130 + .../skia/include/gpu/ganesh/SkImageGanesh.h | 361 + .../skia/include/gpu/ganesh/SkMeshGanesh.h | 57 + .../skia/include/gpu/ganesh/SkSurfaceGanesh.h | 218 + .../skia/include/gpu/ganesh/d3d/BUILD.bazel | 19 + .../gpu/ganesh/d3d/GrD3DBackendContext.h | 35 + .../gpu/ganesh/d3d/GrD3DBackendSemaphore.h | 20 + .../gpu/ganesh/d3d/GrD3DBackendSurface.h | 59 + .../gpu/ganesh/d3d/GrD3DDirectContext.h | 28 + .../skia/include/gpu/ganesh/d3d/GrD3DTypes.h | 248 + .../skia/include/gpu/ganesh/gl/BUILD.bazel | 44 + .../gpu/ganesh/gl/GrGLAssembleHelpers.h | 17 + .../gpu/ganesh/gl/GrGLAssembleInterface.h | 45 + .../gpu/ganesh/gl/GrGLBackendSurface.h | 64 + .../skia/include/gpu/ganesh/gl/GrGLConfig.h | 69 + .../include/gpu/ganesh/gl/GrGLDirectContext.h | 30 + .../include/gpu/ganesh/gl/GrGLExtensions.h | 79 + .../include/gpu/ganesh/gl/GrGLFunctions.h | 313 + .../include/gpu/ganesh/gl/GrGLInterface.h | 337 + .../gpu/ganesh/gl/GrGLMakeWebGLInterface.h | 19 + .../skia/include/gpu/ganesh/gl/GrGLTypes.h | 219 + .../include/gpu/ganesh/gl/egl/BUILD.bazel | 16 + .../gpu/ganesh/gl/egl/GrGLMakeEGLInterface.h | 23 + .../include/gpu/ganesh/gl/epoxy/BUILD.bazel | 15 + .../gl/epoxy/GrGLMakeEpoxyEGLInterface.h | 20 + .../include/gpu/ganesh/gl/glx/BUILD.bazel | 16 + .../gpu/ganesh/gl/glx/GrGLMakeGLXInterface.h | 23 + .../include/gpu/ganesh/gl/ios/BUILD.bazel | 15 + .../gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h | 20 + .../include/gpu/ganesh/gl/mac/BUILD.bazel | 15 + .../gpu/ganesh/gl/mac/GrGLMakeMacInterface.h | 20 + .../include/gpu/ganesh/gl/win/BUILD.bazel | 15 + .../gpu/ganesh/gl/win/GrGLMakeWinInterface.h | 20 + .../skia/include/gpu/ganesh/mock/BUILD.bazel | 26 + .../gpu/ganesh/mock/GrMockBackendSurface.h | 59 + .../include/gpu/ganesh/mock/GrMockTypes.h | 166 + .../skia/include/gpu/ganesh/mtl/BUILD.bazel | 30 + .../gpu/ganesh/mtl/GrMtlBackendContext.h | 21 + .../gpu/ganesh/mtl/GrMtlBackendSemaphore.h | 23 + .../gpu/ganesh/mtl/GrMtlBackendSurface.h | 44 + .../gpu/ganesh/mtl/GrMtlDirectContext.h | 30 + .../skia/include/gpu/ganesh/mtl/GrMtlTypes.h | 61 + .../include/gpu/ganesh/mtl/SkSurfaceMetal.h | 73 + .../skia/include/gpu/ganesh/vk/BUILD.bazel | 29 + .../gpu/ganesh/vk/GrBackendDrawableInfo.h | 44 + .../gpu/ganesh/vk/GrVkBackendSemaphore.h | 20 + .../gpu/ganesh/vk/GrVkBackendSurface.h | 71 + .../include/gpu/ganesh/vk/GrVkDirectContext.h | 33 + .../skia/include/gpu/ganesh/vk/GrVkTypes.h | 101 + .../skia/include/gpu/graphite/BUILD.bazel | 35 + .../include/gpu/graphite/BackendSemaphore.h | 60 + .../include/gpu/graphite/BackendTexture.h | 65 + .../skia/include/gpu/graphite/Context.h | 440 + .../include/gpu/graphite/ContextOptions.h | 233 + .../skia/include/gpu/graphite/GraphiteTypes.h | 315 + .../skia/include/gpu/graphite/Image.h | 428 + .../skia/include/gpu/graphite/ImageProvider.h | 68 + .../gpu/graphite/PersistentPipelineStorage.h | 45 + .../include/gpu/graphite/PrecompileContext.h | 95 + .../skia/include/gpu/graphite/Recorder.h | 354 + .../skia/include/gpu/graphite/Recording.h | 98 + .../skia/include/gpu/graphite/Surface.h | 121 + .../skia/include/gpu/graphite/TextureInfo.h | 133 + .../gpu/graphite/YUVABackendTextures.h | 148 + .../include/gpu/graphite/dawn/BUILD.bazel | 18 + .../gpu/graphite/dawn/DawnBackendContext.h | 77 + .../gpu/graphite/dawn/DawnGraphiteTypes.h | 163 + .../include/gpu/graphite/dawn/DawnTypes.h | 9 + .../include/gpu/graphite/dawn/DawnUtils.h | 9 + .../skia/include/gpu/graphite/mtl/BUILD.bazel | 28 + .../gpu/graphite/mtl/MtlBackendContext.h | 34 + .../gpu/graphite/mtl/MtlGraphiteTypes.h | 73 + .../gpu/graphite/mtl/MtlGraphiteTypesUtils.h | 10 + .../gpu/graphite/mtl/MtlGraphiteTypes_cpp.h | 50 + .../gpu/graphite/mtl/MtlGraphiteUtils.h | 9 + .../gpu/graphite/precompile/BUILD.bazel | 30 + .../gpu/graphite/precompile/PaintOptions.h | 211 + .../gpu/graphite/precompile/Precompile.h | 59 + .../gpu/graphite/precompile/PrecompileBase.h | 76 + .../graphite/precompile/PrecompileBlender.h | 56 + .../precompile/PrecompileColorFilter.h | 95 + .../precompile/PrecompileImageFilter.h | 116 + .../precompile/PrecompileMaskFilter.h | 49 + .../precompile/PrecompileRuntimeEffect.h | 47 + .../graphite/precompile/PrecompileShader.h | 268 + .../skia/include/gpu/graphite/vk/BUILD.bazel | 26 + .../gpu/graphite/vk/VulkanGraphiteContext.h | 31 + .../gpu/graphite/vk/VulkanGraphiteTypes.h | 104 + .../gpu/graphite/vk/VulkanGraphiteUtils.h | 10 + .../gpu/graphite/vk/precompile/BUILD.bazel | 21 + .../vk/precompile/VulkanPrecompileShader.h | 39 + .../skia/include/gpu/mtl/BUILD.bazel | 19 + .../skia/include/gpu/mtl/MtlMemoryAllocator.h | 41 + .../artifacts/skia/include/gpu/vk/BUILD.bazel | 32 + .../include/gpu/vk/VulkanBackendContext.h | 57 + .../skia/include/gpu/vk/VulkanExtensions.h | 73 + .../include/gpu/vk/VulkanMemoryAllocator.h | 117 + .../gpu/vk/VulkanMutableTextureState.h | 26 + .../include/gpu/vk/VulkanPreferredFeatures.h | 225 + .../skia/include/gpu/vk/VulkanTypes.h | 245 + .../skia/include/pathops/BUILD.bazel | 22 + .../skia/include/pathops/SkPathOps.h | 150 + .../artifacts/skia/include/ports/BUILD.bazel | 141 + .../artifacts/skia/include/ports/SkCFObject.h | 180 + .../include/ports/SkFontConfigInterface.h | 112 + .../ports/SkFontMgr_FontConfigInterface.h | 24 + .../skia/include/ports/SkFontMgr_Fontations.h | 20 + .../skia/include/ports/SkFontMgr_android.h | 48 + .../include/ports/SkFontMgr_android_ndk.h | 27 + .../skia/include/ports/SkFontMgr_data.h | 22 + .../skia/include/ports/SkFontMgr_directory.h | 21 + .../skia/include/ports/SkFontMgr_empty.h | 21 + .../skia/include/ports/SkFontMgr_fontconfig.h | 24 + .../skia/include/ports/SkFontMgr_fuchsia.h | 21 + .../skia/include/ports/SkFontMgr_mac_ct.h | 27 + .../include/ports/SkFontScanner_Fontations.h | 15 + .../include/ports/SkFontScanner_FreeType.h | 15 + .../skia/include/ports/SkImageGeneratorCG.h | 28 + .../skia/include/ports/SkImageGeneratorNDK.h | 40 + .../skia/include/ports/SkImageGeneratorWIC.h | 41 + .../include/ports/SkTypeface_fontations.h | 24 + .../skia/include/ports/SkTypeface_mac.h | 44 + .../skia/include/ports/SkTypeface_win.h | 63 + .../skia/include/private/BUILD.bazel | 74 + vendor/artifacts/skia/include/private/OWNERS | 4 + .../skia/include/private/SkEncodedInfo.h | 249 + .../artifacts/skia/include/private/SkExif.h | 69 + .../skia/include/private/SkGainmapInfo.h | 140 + .../skia/include/private/SkGainmapShader.h | 60 + .../skia/include/private/SkHdrMetadata.h | 357 + .../skia/include/private/SkIDChangeListener.h | 76 + .../include/private/SkJpegGainmapEncoder.h | 48 + .../include/private/SkJpegMetadataDecoder.h | 103 + .../skia/include/private/SkPathRef.h | 90 + .../skia/include/private/SkPixelStorage.h | 37 + .../skia/include/private/SkSLSampleUsage.h | 85 + .../skia/include/private/SkWeakRefCnt.h | 173 + vendor/artifacts/skia/include/private/SkXmp.h | 62 + .../skia/include/private/base/BUILD.bazel | 69 + .../skia/include/private/base/README.md | 4 + .../skia/include/private/base/SingleOwner.h | 75 + .../skia/include/private/base/SkAPI.h | 52 + .../skia/include/private/base/SkASAN.h | 56 + .../skia/include/private/base/SkAlign.h | 51 + .../include/private/base/SkAlignedStorage.h | 32 + .../skia/include/private/base/SkAnySubclass.h | 79 + .../skia/include/private/base/SkAssert.h | 203 + .../skia/include/private/base/SkAttributes.h | 96 + .../skia/include/private/base/SkCPUTypes.h | 25 + .../skia/include/private/base/SkContainers.h | 54 + .../skia/include/private/base/SkDebug.h | 27 + .../skia/include/private/base/SkDeque.h | 138 + .../skia/include/private/base/SkFeatures.h | 173 + .../skia/include/private/base/SkFixed.h | 143 + .../include/private/base/SkFloatingPoint.h | 183 + .../include/private/base/SkLoadUserConfig.h | 64 + .../skia/include/private/base/SkLog.h | 62 + .../skia/include/private/base/SkLogPriority.h | 34 + .../skia/include/private/base/SkMacros.h | 170 + .../skia/include/private/base/SkMalloc.h | 152 + .../skia/include/private/base/SkMath.h | 77 + .../skia/include/private/base/SkMutex.h | 72 + .../skia/include/private/base/SkNoncopyable.h | 30 + .../skia/include/private/base/SkOnce.h | 55 + .../skia/include/private/base/SkPoint_impl.h | 560 + .../skia/include/private/base/SkSafe32.h | 49 + .../skia/include/private/base/SkSemaphore.h | 84 + .../skia/include/private/base/SkSpan_impl.h | 158 + .../skia/include/private/base/SkTArray.h | 824 + .../skia/include/private/base/SkTDArray.h | 247 + .../skia/include/private/base/SkTFitsIn.h | 94 + .../skia/include/private/base/SkTLogic.h | 56 + .../skia/include/private/base/SkTPin.h | 23 + .../skia/include/private/base/SkTemplates.h | 501 + .../private/base/SkThreadAnnotations.h | 104 + .../skia/include/private/base/SkThreadID.h | 23 + .../skia/include/private/base/SkTo.h | 39 + .../skia/include/private/base/SkTypeTraits.h | 33 + .../skia/include/private/chromium/BUILD.bazel | 71 + .../private/chromium/GrDeferredDisplayList.h | 120 + .../chromium/GrDeferredDisplayListRecorder.h | 62 + .../private/chromium/GrPromiseImageTexture.h | 43 + .../chromium/GrSurfaceCharacterization.h | 211 + .../chromium/GrVkSecondaryCBDrawContext.h | 131 + .../chromium/SkChromeRemoteGlyphCache.h | 150 + .../chromium/SkCodecsICCProfileChromium.h | 52 + .../private/chromium/SkDiscardableMemory.h | 70 + .../include/private/chromium/SkExifChromium.h | 26 + .../private/chromium/SkImageChromium.h | 117 + .../skia/include/private/chromium/SkPMColor.h | 38 + .../skia/include/private/chromium/Slug.h | 72 + .../skia/include/private/gpu/BUILD.bazel | 5 + .../include/private/gpu/ganesh/BUILD.bazel | 26 + .../private/gpu/ganesh/GrContext_Base.h | 104 + .../private/gpu/ganesh/GrD3DTypesMinimal.h | 60 + .../private/gpu/ganesh/GrImageContext.h | 56 + .../private/gpu/ganesh/GrTextureGenerator.h | 66 + .../include/private/gpu/ganesh/GrTypesPriv.h | 959 + .../skia/include/private/gpu/vk/BUILD.bazel | 18 + .../skia/include/private/gpu/vk/SkiaVulkan.h | 36 + .../artifacts/skia/include/skcms/BUILD.bazel | 123 + vendor/artifacts/skia/include/skcms/BUILD.gn | 100 + vendor/artifacts/skia/include/skcms/OWNERS | 2 + .../skia/include/skcms/README.chromium | 5 + vendor/artifacts/skia/include/skcms/skcms.cc | 3221 + vendor/artifacts/skia/include/skcms/skcms.gni | 43 + vendor/artifacts/skia/include/skcms/skcms.h | 10 + .../skia/include/skcms/src/Transform_inl.h | 1600 + .../skia/include/skcms/src/skcms_Transform.h | 167 + .../skcms/src/skcms_TransformBaseline.cc | 50 + .../include/skcms/src/skcms_TransformHsw.cc | 61 + .../include/skcms/src/skcms_TransformSkx.cc | 58 + .../skia/include/skcms/src/skcms_internals.h | 157 + .../skia/include/skcms/src/skcms_public.h | 496 + .../artifacts/skia/include/skcms/version.sha1 | 1 + .../artifacts/skia/include/sksl/BUILD.bazel | 25 + .../skia/include/sksl/SkSLDebugTrace.h | 25 + .../artifacts/skia/include/sksl/SkSLVersion.h | 27 + vendor/artifacts/skia/include/svg/BUILD.bazel | 22 + .../artifacts/skia/include/svg/SkSVGCanvas.h | 62 + .../include/third_party/vulkan/BUILD.bazel | 38 + .../skia/include/third_party/vulkan/LICENSE | 29 + .../third_party/vulkan/vulkan/vk_icd.h | 245 + .../third_party/vulkan/vulkan/vk_layer.h | 192 + .../third_party/vulkan/vulkan/vk_platform.h | 84 + .../vk_video/vulkan_video_codec_av1std.h | 394 + .../vulkan_video_codec_av1std_decode.h | 109 + .../vulkan_video_codec_av1std_encode.h | 143 + .../vk_video/vulkan_video_codec_h264std.h | 312 + .../vulkan_video_codec_h264std_decode.h | 77 + .../vulkan_video_codec_h264std_encode.h | 147 + .../vk_video/vulkan_video_codec_h265std.h | 446 + .../vulkan_video_codec_h265std_decode.h | 67 + .../vulkan_video_codec_h265std_encode.h | 157 + .../vk_video/vulkan_video_codec_vp9std.h | 151 + .../vulkan_video_codec_vp9std_decode.h | 68 + .../vk_video/vulkan_video_codecs_common.h | 36 + .../third_party/vulkan/vulkan/vulkan.cppm | 1309 + .../third_party/vulkan/vulkan/vulkan.h | 103 + .../third_party/vulkan/vulkan/vulkan.hpp | 26501 ++ .../vulkan/vulkan/vulkan_android.h | 159 + .../third_party/vulkan/vulkan/vulkan_beta.h | 375 + .../third_party/vulkan/vulkan/vulkan_core.h | 25896 ++ .../vulkan/vulkan/vulkan_directfb.h | 59 + .../vulkan/vulkan/vulkan_enums.hpp | 10198 + .../vulkan/vulkan_extension_inspection.hpp | 4242 + .../vulkan/vulkan/vulkan_format_traits.hpp | 10655 + .../vulkan/vulkan/vulkan_fuchsia.h | 282 + .../vulkan/vulkan/vulkan_funcs.hpp | 32974 +++ .../third_party/vulkan/vulkan/vulkan_ggp.h | 62 + .../vulkan/vulkan/vulkan_handles.hpp | 23390 ++ .../third_party/vulkan/vulkan/vulkan_hash.hpp | 21927 ++ .../vulkan/vulkan/vulkan_hpp_macros.hpp | 356 + .../third_party/vulkan/vulkan/vulkan_ios.h | 50 + .../third_party/vulkan/vulkan/vulkan_macos.h | 50 + .../third_party/vulkan/vulkan/vulkan_metal.h | 244 + .../third_party/vulkan/vulkan/vulkan_ohos.h | 120 + .../third_party/vulkan/vulkan/vulkan_raii.hpp | 29518 ++ .../third_party/vulkan/vulkan/vulkan_screen.h | 114 + .../vulkan/vulkan/vulkan_shared.hpp | 1207 + .../vulkan/vulkan_static_assertions.hpp | 10092 + .../vulkan/vulkan/vulkan_structs.hpp | 211080 +++++++++++++++ .../vulkan/vulkan/vulkan_to_string.hpp | 11250 + .../third_party/vulkan/vulkan/vulkan_vi.h | 50 + .../vulkan/vulkan/vulkan_video.cppm | 72 + .../vulkan/vulkan/vulkan_video.hpp | 5945 + .../vulkan/vulkan/vulkan_wayland.h | 59 + .../third_party/vulkan/vulkan/vulkan_win32.h | 372 + .../third_party/vulkan/vulkan/vulkan_xcb.h | 60 + .../third_party/vulkan/vulkan/vulkan_xlib.h | 60 + .../vulkan/vulkan/vulkan_xlib_xrandr.h | 50 + .../artifacts/skia/include/utils/BUILD.bazel | 35 + .../artifacts/skia/include/utils/SkCamera.h | 109 + .../skia/include/utils/SkCanvasStateUtils.h | 81 + .../skia/include/utils/SkCustomTypeface.h | 70 + .../skia/include/utils/SkEventTracer.h | 93 + .../skia/include/utils/SkNWayCanvas.h | 123 + .../skia/include/utils/SkNoDrawCanvas.h | 78 + .../skia/include/utils/SkNullCanvas.h | 22 + .../skia/include/utils/SkOrderedFontMgr.h | 66 + .../skia/include/utils/SkPaintFilterCanvas.h | 140 + vendor/artifacts/skia/include/utils/SkParse.h | 36 + .../skia/include/utils/SkParsePath.h | 33 + .../skia/include/utils/SkShadowUtils.h | 102 + .../skia/include/utils/SkTextUtils.h | 43 + .../skia/include/utils/SkTraceEventPhase.h | 19 + .../skia/include/utils/mac/BUILD.bazel | 15 + .../skia/include/utils/mac/SkCGUtils.h | 90 + vendor/artifacts/skia/lib/libskia.so | Bin 0 -> 12522064 bytes 471 files changed, 493399 insertions(+) create mode 100644 vendor/artifacts/skia/build/args.gn create mode 100644 vendor/artifacts/skia/include/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/OWNERS create mode 100644 vendor/artifacts/skia/include/android/AHardwareBufferUtils.h create mode 100644 vendor/artifacts/skia/include/android/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/android/GrAHardwareBufferUtils.h create mode 100644 vendor/artifacts/skia/include/android/SkAndroidFrameworkUtils.h create mode 100644 vendor/artifacts/skia/include/android/SkAnimatedImage.h create mode 100644 vendor/artifacts/skia/include/android/SkCanvasAndroid.h create mode 100644 vendor/artifacts/skia/include/android/SkImageAndroid.h create mode 100644 vendor/artifacts/skia/include/android/SkSurfaceAndroid.h create mode 100644 vendor/artifacts/skia/include/android/graphite/SurfaceAndroid.h create mode 100644 vendor/artifacts/skia/include/android/vk/AndroidVulkanMemoryAllocator.h create mode 100644 vendor/artifacts/skia/include/codec/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/codec/SkAndroidCodec.h create mode 100644 vendor/artifacts/skia/include/codec/SkAvifDecoder.h create mode 100644 vendor/artifacts/skia/include/codec/SkBmpDecoder.h create mode 100644 vendor/artifacts/skia/include/codec/SkCodec.h create mode 100644 vendor/artifacts/skia/include/codec/SkCodecAnimation.h create mode 100644 vendor/artifacts/skia/include/codec/SkEncodedImageFormat.h create mode 100644 vendor/artifacts/skia/include/codec/SkEncodedOrigin.h create mode 100644 vendor/artifacts/skia/include/codec/SkGifDecoder.h create mode 100644 vendor/artifacts/skia/include/codec/SkIcoDecoder.h create mode 100644 vendor/artifacts/skia/include/codec/SkJpegDecoder.h create mode 100644 vendor/artifacts/skia/include/codec/SkJpegxlDecoder.h create mode 100644 vendor/artifacts/skia/include/codec/SkPixmapUtils.h create mode 100644 vendor/artifacts/skia/include/codec/SkPngChunkReader.h create mode 100644 vendor/artifacts/skia/include/codec/SkPngDecoder.h create mode 100644 vendor/artifacts/skia/include/codec/SkPngRustDecoder.h create mode 100644 vendor/artifacts/skia/include/codec/SkRawDecoder.h create mode 100644 vendor/artifacts/skia/include/codec/SkWbmpDecoder.h create mode 100644 vendor/artifacts/skia/include/codec/SkWebpDecoder.h create mode 100644 vendor/artifacts/skia/include/config/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/config/MODULE.bazel create mode 100644 vendor/artifacts/skia/include/config/OWNERS create mode 100644 vendor/artifacts/skia/include/config/SkUserConfig.h create mode 100644 vendor/artifacts/skia/include/config/WORKSPACE.bazel create mode 100644 vendor/artifacts/skia/include/config/copts.bzl create mode 100644 vendor/artifacts/skia/include/config/linkopts.bzl create mode 100644 vendor/artifacts/skia/include/core/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/core/SkAlphaType.h create mode 100644 vendor/artifacts/skia/include/core/SkAnnotation.h create mode 100644 vendor/artifacts/skia/include/core/SkArc.h create mode 100644 vendor/artifacts/skia/include/core/SkBBHFactory.h create mode 100644 vendor/artifacts/skia/include/core/SkBitmap.h create mode 100644 vendor/artifacts/skia/include/core/SkBlendMode.h create mode 100644 vendor/artifacts/skia/include/core/SkBlender.h create mode 100644 vendor/artifacts/skia/include/core/SkBlurTypes.h create mode 100644 vendor/artifacts/skia/include/core/SkCPUContext.h create mode 100644 vendor/artifacts/skia/include/core/SkCPURecorder.h create mode 100644 vendor/artifacts/skia/include/core/SkCanvas.h create mode 100644 vendor/artifacts/skia/include/core/SkCanvasVirtualEnforcer.h create mode 100644 vendor/artifacts/skia/include/core/SkCapabilities.h create mode 100644 vendor/artifacts/skia/include/core/SkClipOp.h create mode 100644 vendor/artifacts/skia/include/core/SkColor.h create mode 100644 vendor/artifacts/skia/include/core/SkColorFilter.h create mode 100644 vendor/artifacts/skia/include/core/SkColorSpace.h create mode 100644 vendor/artifacts/skia/include/core/SkColorTable.h create mode 100644 vendor/artifacts/skia/include/core/SkColorType.h create mode 100644 vendor/artifacts/skia/include/core/SkContourMeasure.h create mode 100644 vendor/artifacts/skia/include/core/SkCoverageMode.h create mode 100644 vendor/artifacts/skia/include/core/SkCubicMap.h create mode 100644 vendor/artifacts/skia/include/core/SkData.h create mode 100644 vendor/artifacts/skia/include/core/SkDataTable.h create mode 100644 vendor/artifacts/skia/include/core/SkDocument.h create mode 100644 vendor/artifacts/skia/include/core/SkDrawable.h create mode 100644 vendor/artifacts/skia/include/core/SkExecutor.h create mode 100644 vendor/artifacts/skia/include/core/SkFlattenable.h create mode 100644 vendor/artifacts/skia/include/core/SkFont.h create mode 100644 vendor/artifacts/skia/include/core/SkFontArguments.h create mode 100644 vendor/artifacts/skia/include/core/SkFontMetrics.h create mode 100644 vendor/artifacts/skia/include/core/SkFontMgr.h create mode 100644 vendor/artifacts/skia/include/core/SkFontParameters.h create mode 100644 vendor/artifacts/skia/include/core/SkFontScanner.h create mode 100644 vendor/artifacts/skia/include/core/SkFontStyle.h create mode 100644 vendor/artifacts/skia/include/core/SkFontTypes.h create mode 100644 vendor/artifacts/skia/include/core/SkFourByteTag.h create mode 100644 vendor/artifacts/skia/include/core/SkGraphics.h create mode 100644 vendor/artifacts/skia/include/core/SkImage.h create mode 100644 vendor/artifacts/skia/include/core/SkImageFilter.h create mode 100644 vendor/artifacts/skia/include/core/SkImageGenerator.h create mode 100644 vendor/artifacts/skia/include/core/SkImageInfo.h create mode 100644 vendor/artifacts/skia/include/core/SkM44.h create mode 100644 vendor/artifacts/skia/include/core/SkMallocPixelRef.h create mode 100644 vendor/artifacts/skia/include/core/SkMaskFilter.h create mode 100644 vendor/artifacts/skia/include/core/SkMatrix.h create mode 100644 vendor/artifacts/skia/include/core/SkMesh.h create mode 100644 vendor/artifacts/skia/include/core/SkMilestone.h create mode 100644 vendor/artifacts/skia/include/core/SkOpenTypeSVGDecoder.h create mode 100644 vendor/artifacts/skia/include/core/SkOverdrawCanvas.h create mode 100644 vendor/artifacts/skia/include/core/SkPaint.h create mode 100644 vendor/artifacts/skia/include/core/SkPath.h create mode 100644 vendor/artifacts/skia/include/core/SkPathBuilder.h create mode 100644 vendor/artifacts/skia/include/core/SkPathEffect.h create mode 100644 vendor/artifacts/skia/include/core/SkPathIter.h create mode 100644 vendor/artifacts/skia/include/core/SkPathMeasure.h create mode 100644 vendor/artifacts/skia/include/core/SkPathTypes.h create mode 100644 vendor/artifacts/skia/include/core/SkPathUtils.h create mode 100644 vendor/artifacts/skia/include/core/SkPicture.h create mode 100644 vendor/artifacts/skia/include/core/SkPictureRecorder.h create mode 100644 vendor/artifacts/skia/include/core/SkPixelRef.h create mode 100644 vendor/artifacts/skia/include/core/SkPixmap.h create mode 100644 vendor/artifacts/skia/include/core/SkPoint.h create mode 100644 vendor/artifacts/skia/include/core/SkPoint3.h create mode 100644 vendor/artifacts/skia/include/core/SkRRect.h create mode 100644 vendor/artifacts/skia/include/core/SkRSXform.h create mode 100644 vendor/artifacts/skia/include/core/SkRasterHandleAllocator.h create mode 100644 vendor/artifacts/skia/include/core/SkRecorder.h create mode 100644 vendor/artifacts/skia/include/core/SkRect.h create mode 100644 vendor/artifacts/skia/include/core/SkRefCnt.h create mode 100644 vendor/artifacts/skia/include/core/SkRegion.h create mode 100644 vendor/artifacts/skia/include/core/SkSamplingOptions.h create mode 100644 vendor/artifacts/skia/include/core/SkScalar.h create mode 100644 vendor/artifacts/skia/include/core/SkSerialProcs.h create mode 100644 vendor/artifacts/skia/include/core/SkShader.h create mode 100644 vendor/artifacts/skia/include/core/SkSize.h create mode 100644 vendor/artifacts/skia/include/core/SkSpan.h create mode 100644 vendor/artifacts/skia/include/core/SkStream.h create mode 100644 vendor/artifacts/skia/include/core/SkStrikeRef.h create mode 100644 vendor/artifacts/skia/include/core/SkString.h create mode 100644 vendor/artifacts/skia/include/core/SkStrokeRec.h create mode 100644 vendor/artifacts/skia/include/core/SkSurface.h create mode 100644 vendor/artifacts/skia/include/core/SkSurfaceProps.h create mode 100644 vendor/artifacts/skia/include/core/SkSwizzle.h create mode 100644 vendor/artifacts/skia/include/core/SkTextBlob.h create mode 100644 vendor/artifacts/skia/include/core/SkTextureCompressionType.h create mode 100644 vendor/artifacts/skia/include/core/SkTileMode.h create mode 100644 vendor/artifacts/skia/include/core/SkTiledImageUtils.h create mode 100644 vendor/artifacts/skia/include/core/SkTraceMemoryDump.h create mode 100644 vendor/artifacts/skia/include/core/SkTypeface.h create mode 100644 vendor/artifacts/skia/include/core/SkTypes.h create mode 100644 vendor/artifacts/skia/include/core/SkUnPreMultiply.h create mode 100644 vendor/artifacts/skia/include/core/SkVertices.h create mode 100644 vendor/artifacts/skia/include/core/SkYUVAInfo.h create mode 100644 vendor/artifacts/skia/include/core/SkYUVAPixmaps.h create mode 100644 vendor/artifacts/skia/include/docs/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/docs/SkMultiPictureDocument.h create mode 100644 vendor/artifacts/skia/include/docs/SkPDFDocument.h create mode 100644 vendor/artifacts/skia/include/docs/SkPDFJpegHelpers.h create mode 100644 vendor/artifacts/skia/include/docs/SkXPSDocument.h create mode 100644 vendor/artifacts/skia/include/effects/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/effects/Sk1DPathEffect.h create mode 100644 vendor/artifacts/skia/include/effects/Sk2DPathEffect.h create mode 100644 vendor/artifacts/skia/include/effects/SkBlenders.h create mode 100644 vendor/artifacts/skia/include/effects/SkBlurMaskFilter.h create mode 100644 vendor/artifacts/skia/include/effects/SkColorMatrix.h create mode 100644 vendor/artifacts/skia/include/effects/SkColorMatrixFilter.h create mode 100644 vendor/artifacts/skia/include/effects/SkCornerPathEffect.h create mode 100644 vendor/artifacts/skia/include/effects/SkDashPathEffect.h create mode 100644 vendor/artifacts/skia/include/effects/SkDiscretePathEffect.h create mode 100644 vendor/artifacts/skia/include/effects/SkGradient.h create mode 100644 vendor/artifacts/skia/include/effects/SkHighContrastFilter.h create mode 100644 vendor/artifacts/skia/include/effects/SkImageFilters.h create mode 100644 vendor/artifacts/skia/include/effects/SkLumaColorFilter.h create mode 100644 vendor/artifacts/skia/include/effects/SkOverdrawColorFilter.h create mode 100644 vendor/artifacts/skia/include/effects/SkPerlinNoiseShader.h create mode 100644 vendor/artifacts/skia/include/effects/SkRuntimeEffect.h create mode 100644 vendor/artifacts/skia/include/effects/SkShaderMaskFilter.h create mode 100644 vendor/artifacts/skia/include/effects/SkTableMaskFilter.h create mode 100644 vendor/artifacts/skia/include/effects/SkTrimPathEffect.h create mode 100644 vendor/artifacts/skia/include/encode/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/encode/SkEncoder.h create mode 100644 vendor/artifacts/skia/include/encode/SkICC.h create mode 100644 vendor/artifacts/skia/include/encode/SkJpegEncoder.h create mode 100644 vendor/artifacts/skia/include/encode/SkPngEncoder.h create mode 100644 vendor/artifacts/skia/include/encode/SkPngRustEncoder.h create mode 100644 vendor/artifacts/skia/include/encode/SkWebpEncoder.h create mode 100644 vendor/artifacts/skia/include/gpu/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/GpuTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/MutableTextureState.h create mode 100644 vendor/artifacts/skia/include/gpu/ShaderErrorHandler.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrBackendSemaphore.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrBackendSurface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrContextOptions.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrDirectContext.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrExternalTextureGenerator.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrRecordingContext.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/GrYUVABackendTextures.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/SkImageGanesh.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/SkMeshGanesh.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/SkSurfaceGanesh.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/d3d/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendSemaphore.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendSurface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DDirectContext.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLConfig.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLDirectContext.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLExtensions.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLFunctions.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLInterface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/egl/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/egl/GrGLMakeEGLInterface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/epoxy/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/glx/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/glx/GrGLMakeGLXInterface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/ios/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/mac/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/win/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/mock/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/mock/GrMockBackendSurface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/mock/GrMockTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/mtl/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendContext.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/vk/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkDirectContext.h create mode 100644 vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/graphite/BackendSemaphore.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/BackendTexture.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/Context.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/ContextOptions.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/GraphiteTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/Image.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/ImageProvider.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/PersistentPipelineStorage.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/PrecompileContext.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/Recorder.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/Recording.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/Surface.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/TextureInfo.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/YUVABackendTextures.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/dawn/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/graphite/dawn/DawnBackendContext.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/dawn/DawnGraphiteTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/dawn/DawnTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/dawn/DawnUtils.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/mtl/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/graphite/mtl/MtlBackendContext.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypesUtils.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypes_cpp.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/precompile/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/graphite/precompile/PaintOptions.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/precompile/Precompile.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileBase.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileBlender.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileShader.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/vk/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteContext.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteUtils.h create mode 100644 vendor/artifacts/skia/include/gpu/graphite/vk/precompile/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/graphite/vk/precompile/VulkanPrecompileShader.h create mode 100644 vendor/artifacts/skia/include/gpu/mtl/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/mtl/MtlMemoryAllocator.h create mode 100644 vendor/artifacts/skia/include/gpu/vk/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/gpu/vk/VulkanBackendContext.h create mode 100644 vendor/artifacts/skia/include/gpu/vk/VulkanExtensions.h create mode 100644 vendor/artifacts/skia/include/gpu/vk/VulkanMemoryAllocator.h create mode 100644 vendor/artifacts/skia/include/gpu/vk/VulkanMutableTextureState.h create mode 100644 vendor/artifacts/skia/include/gpu/vk/VulkanPreferredFeatures.h create mode 100644 vendor/artifacts/skia/include/gpu/vk/VulkanTypes.h create mode 100644 vendor/artifacts/skia/include/pathops/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/pathops/SkPathOps.h create mode 100644 vendor/artifacts/skia/include/ports/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/ports/SkCFObject.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontConfigInterface.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontMgr_FontConfigInterface.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontMgr_Fontations.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontMgr_android.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontMgr_android_ndk.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontMgr_data.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontMgr_directory.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontMgr_empty.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontMgr_fontconfig.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontMgr_fuchsia.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontMgr_mac_ct.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontScanner_Fontations.h create mode 100644 vendor/artifacts/skia/include/ports/SkFontScanner_FreeType.h create mode 100644 vendor/artifacts/skia/include/ports/SkImageGeneratorCG.h create mode 100644 vendor/artifacts/skia/include/ports/SkImageGeneratorNDK.h create mode 100644 vendor/artifacts/skia/include/ports/SkImageGeneratorWIC.h create mode 100644 vendor/artifacts/skia/include/ports/SkTypeface_fontations.h create mode 100644 vendor/artifacts/skia/include/ports/SkTypeface_mac.h create mode 100644 vendor/artifacts/skia/include/ports/SkTypeface_win.h create mode 100644 vendor/artifacts/skia/include/private/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/private/OWNERS create mode 100644 vendor/artifacts/skia/include/private/SkEncodedInfo.h create mode 100644 vendor/artifacts/skia/include/private/SkExif.h create mode 100644 vendor/artifacts/skia/include/private/SkGainmapInfo.h create mode 100644 vendor/artifacts/skia/include/private/SkGainmapShader.h create mode 100644 vendor/artifacts/skia/include/private/SkHdrMetadata.h create mode 100644 vendor/artifacts/skia/include/private/SkIDChangeListener.h create mode 100644 vendor/artifacts/skia/include/private/SkJpegGainmapEncoder.h create mode 100644 vendor/artifacts/skia/include/private/SkJpegMetadataDecoder.h create mode 100644 vendor/artifacts/skia/include/private/SkPathRef.h create mode 100644 vendor/artifacts/skia/include/private/SkPixelStorage.h create mode 100644 vendor/artifacts/skia/include/private/SkSLSampleUsage.h create mode 100644 vendor/artifacts/skia/include/private/SkWeakRefCnt.h create mode 100644 vendor/artifacts/skia/include/private/SkXmp.h create mode 100644 vendor/artifacts/skia/include/private/base/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/private/base/README.md create mode 100644 vendor/artifacts/skia/include/private/base/SingleOwner.h create mode 100644 vendor/artifacts/skia/include/private/base/SkAPI.h create mode 100644 vendor/artifacts/skia/include/private/base/SkASAN.h create mode 100644 vendor/artifacts/skia/include/private/base/SkAlign.h create mode 100644 vendor/artifacts/skia/include/private/base/SkAlignedStorage.h create mode 100644 vendor/artifacts/skia/include/private/base/SkAnySubclass.h create mode 100644 vendor/artifacts/skia/include/private/base/SkAssert.h create mode 100644 vendor/artifacts/skia/include/private/base/SkAttributes.h create mode 100644 vendor/artifacts/skia/include/private/base/SkCPUTypes.h create mode 100644 vendor/artifacts/skia/include/private/base/SkContainers.h create mode 100644 vendor/artifacts/skia/include/private/base/SkDebug.h create mode 100644 vendor/artifacts/skia/include/private/base/SkDeque.h create mode 100644 vendor/artifacts/skia/include/private/base/SkFeatures.h create mode 100644 vendor/artifacts/skia/include/private/base/SkFixed.h create mode 100644 vendor/artifacts/skia/include/private/base/SkFloatingPoint.h create mode 100644 vendor/artifacts/skia/include/private/base/SkLoadUserConfig.h create mode 100644 vendor/artifacts/skia/include/private/base/SkLog.h create mode 100644 vendor/artifacts/skia/include/private/base/SkLogPriority.h create mode 100644 vendor/artifacts/skia/include/private/base/SkMacros.h create mode 100644 vendor/artifacts/skia/include/private/base/SkMalloc.h create mode 100644 vendor/artifacts/skia/include/private/base/SkMath.h create mode 100644 vendor/artifacts/skia/include/private/base/SkMutex.h create mode 100644 vendor/artifacts/skia/include/private/base/SkNoncopyable.h create mode 100644 vendor/artifacts/skia/include/private/base/SkOnce.h create mode 100644 vendor/artifacts/skia/include/private/base/SkPoint_impl.h create mode 100644 vendor/artifacts/skia/include/private/base/SkSafe32.h create mode 100644 vendor/artifacts/skia/include/private/base/SkSemaphore.h create mode 100644 vendor/artifacts/skia/include/private/base/SkSpan_impl.h create mode 100644 vendor/artifacts/skia/include/private/base/SkTArray.h create mode 100644 vendor/artifacts/skia/include/private/base/SkTDArray.h create mode 100644 vendor/artifacts/skia/include/private/base/SkTFitsIn.h create mode 100644 vendor/artifacts/skia/include/private/base/SkTLogic.h create mode 100644 vendor/artifacts/skia/include/private/base/SkTPin.h create mode 100644 vendor/artifacts/skia/include/private/base/SkTemplates.h create mode 100644 vendor/artifacts/skia/include/private/base/SkThreadAnnotations.h create mode 100644 vendor/artifacts/skia/include/private/base/SkThreadID.h create mode 100644 vendor/artifacts/skia/include/private/base/SkTo.h create mode 100644 vendor/artifacts/skia/include/private/base/SkTypeTraits.h create mode 100644 vendor/artifacts/skia/include/private/chromium/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/private/chromium/GrDeferredDisplayList.h create mode 100644 vendor/artifacts/skia/include/private/chromium/GrDeferredDisplayListRecorder.h create mode 100644 vendor/artifacts/skia/include/private/chromium/GrPromiseImageTexture.h create mode 100644 vendor/artifacts/skia/include/private/chromium/GrSurfaceCharacterization.h create mode 100644 vendor/artifacts/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h create mode 100644 vendor/artifacts/skia/include/private/chromium/SkChromeRemoteGlyphCache.h create mode 100644 vendor/artifacts/skia/include/private/chromium/SkCodecsICCProfileChromium.h create mode 100644 vendor/artifacts/skia/include/private/chromium/SkDiscardableMemory.h create mode 100644 vendor/artifacts/skia/include/private/chromium/SkExifChromium.h create mode 100644 vendor/artifacts/skia/include/private/chromium/SkImageChromium.h create mode 100644 vendor/artifacts/skia/include/private/chromium/SkPMColor.h create mode 100644 vendor/artifacts/skia/include/private/chromium/Slug.h create mode 100644 vendor/artifacts/skia/include/private/gpu/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/private/gpu/ganesh/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/private/gpu/ganesh/GrContext_Base.h create mode 100644 vendor/artifacts/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h create mode 100644 vendor/artifacts/skia/include/private/gpu/ganesh/GrImageContext.h create mode 100644 vendor/artifacts/skia/include/private/gpu/ganesh/GrTextureGenerator.h create mode 100644 vendor/artifacts/skia/include/private/gpu/ganesh/GrTypesPriv.h create mode 100644 vendor/artifacts/skia/include/private/gpu/vk/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/private/gpu/vk/SkiaVulkan.h create mode 100644 vendor/artifacts/skia/include/skcms/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/skcms/BUILD.gn create mode 100644 vendor/artifacts/skia/include/skcms/OWNERS create mode 100644 vendor/artifacts/skia/include/skcms/README.chromium create mode 100644 vendor/artifacts/skia/include/skcms/skcms.cc create mode 100644 vendor/artifacts/skia/include/skcms/skcms.gni create mode 100644 vendor/artifacts/skia/include/skcms/skcms.h create mode 100644 vendor/artifacts/skia/include/skcms/src/Transform_inl.h create mode 100644 vendor/artifacts/skia/include/skcms/src/skcms_Transform.h create mode 100644 vendor/artifacts/skia/include/skcms/src/skcms_TransformBaseline.cc create mode 100644 vendor/artifacts/skia/include/skcms/src/skcms_TransformHsw.cc create mode 100644 vendor/artifacts/skia/include/skcms/src/skcms_TransformSkx.cc create mode 100644 vendor/artifacts/skia/include/skcms/src/skcms_internals.h create mode 100644 vendor/artifacts/skia/include/skcms/src/skcms_public.h create mode 100755 vendor/artifacts/skia/include/skcms/version.sha1 create mode 100644 vendor/artifacts/skia/include/sksl/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/sksl/SkSLDebugTrace.h create mode 100644 vendor/artifacts/skia/include/sksl/SkSLVersion.h create mode 100644 vendor/artifacts/skia/include/svg/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/svg/SkSVGCanvas.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/LICENSE create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_icd.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_layer.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_platform.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_decode.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_encode.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_encode.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_encode.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std_decode.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.cppm create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_android.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_beta.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_core.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_directfb.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_enums.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_extension_inspection.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_format_traits.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_fuchsia.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_funcs.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ggp.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_handles.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_hash.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_hpp_macros.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ios.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_macos.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_metal.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ohos.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_raii.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_screen.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_shared.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_static_assertions.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_structs.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_to_string.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_vi.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_video.cppm create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_video.hpp create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_wayland.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_win32.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xlib.h create mode 100644 vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xlib_xrandr.h create mode 100644 vendor/artifacts/skia/include/utils/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/utils/SkCamera.h create mode 100644 vendor/artifacts/skia/include/utils/SkCanvasStateUtils.h create mode 100644 vendor/artifacts/skia/include/utils/SkCustomTypeface.h create mode 100644 vendor/artifacts/skia/include/utils/SkEventTracer.h create mode 100644 vendor/artifacts/skia/include/utils/SkNWayCanvas.h create mode 100644 vendor/artifacts/skia/include/utils/SkNoDrawCanvas.h create mode 100644 vendor/artifacts/skia/include/utils/SkNullCanvas.h create mode 100644 vendor/artifacts/skia/include/utils/SkOrderedFontMgr.h create mode 100644 vendor/artifacts/skia/include/utils/SkPaintFilterCanvas.h create mode 100644 vendor/artifacts/skia/include/utils/SkParse.h create mode 100644 vendor/artifacts/skia/include/utils/SkParsePath.h create mode 100644 vendor/artifacts/skia/include/utils/SkShadowUtils.h create mode 100644 vendor/artifacts/skia/include/utils/SkTextUtils.h create mode 100644 vendor/artifacts/skia/include/utils/SkTraceEventPhase.h create mode 100644 vendor/artifacts/skia/include/utils/mac/BUILD.bazel create mode 100644 vendor/artifacts/skia/include/utils/mac/SkCGUtils.h create mode 100755 vendor/artifacts/skia/lib/libskia.so diff --git a/vendor/artifacts/skia/build/args.gn b/vendor/artifacts/skia/build/args.gn new file mode 100644 index 000000000..1b382dac5 --- /dev/null +++ b/vendor/artifacts/skia/build/args.gn @@ -0,0 +1,14 @@ +is_debug = false +is_official_build = true +is_component_build = true +skia_enable_tools = false +skia_use_gl = true +skia_use_egl = true +skia_use_vulkan = true +skia_use_x11 = true +skia_use_dawn = false +skia_use_angle = false +skia_enable_pdf = true +skia_enable_svg = true +skia_enable_skottie = false +skia_build_fuzzers = false diff --git a/vendor/artifacts/skia/include/BUILD.bazel b/vendor/artifacts/skia/include/BUILD.bazel new file mode 100644 index 000000000..800b999ab --- /dev/null +++ b/vendor/artifacts/skia/include/BUILD.bazel @@ -0,0 +1,5 @@ +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) diff --git a/vendor/artifacts/skia/include/OWNERS b/vendor/artifacts/skia/include/OWNERS new file mode 100644 index 000000000..e86926196 --- /dev/null +++ b/vendor/artifacts/skia/include/OWNERS @@ -0,0 +1,16 @@ +set noparent + +# Include one of the following reviewers for CLs that add or change Skia's public API: +egdaniel@google.com +fmalita@google.com +hcm@google.com +kjlubick@google.com +michaelludwig@google.com +robertphillips@google.com +# Note: please update ../OWNERS.android when modifying this list. + +per-file BUILD.bazel=borenet@google.com +per-file BUILD.bazel=kjlubick@google.com +per-file *.bzl=borenet@google.com +per-file *.bzl=kjlubick@google.com +per-file core/SkMilestone.h=chrome-branch-day@chops-service-accounts.iam.gserviceaccount.com diff --git a/vendor/artifacts/skia/include/android/AHardwareBufferUtils.h b/vendor/artifacts/skia/include/android/AHardwareBufferUtils.h new file mode 100644 index 000000000..fef353135 --- /dev/null +++ b/vendor/artifacts/skia/include/android/AHardwareBufferUtils.h @@ -0,0 +1,26 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef AHardwareBufferUtils_DEFINED +#define AHardwareBufferUtils_DEFINED + +#include "include/core/SkColorType.h" +#include "include/core/SkTypes.h" + +#if __ANDROID_API__ >= 26 + +namespace AHardwareBufferUtils { + +// SkColorType expected for AHBs imported as external images +static const SkColorType kExternalFormatColorType = SkColorType::kRGBA_8888_SkColorType; + +SkColorType GetSkColorTypeFromBufferFormat(uint32_t bufferFormat); + +} // namespace AHardwareBufferUtils + +#endif + +#endif // AHardwareBufferUtils_DEFINED diff --git a/vendor/artifacts/skia/include/android/BUILD.bazel b/vendor/artifacts/skia/include/android/BUILD.bazel new file mode 100644 index 000000000..caf1f15fe --- /dev/null +++ b/vendor/artifacts/skia/include/android/BUILD.bazel @@ -0,0 +1,36 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "private_hdrs", + srcs = [ + "AHardwareBufferUtils.h", + "GrAHardwareBufferUtils.h", + "SkCanvasAndroid.h", + "SkImageAndroid.h", + "SkSurfaceAndroid.h", + ], + visibility = [ + "//src/gpu/ganesh:__pkg__", + ], +) + +skia_filegroup( + name = "animated_image_hdrs", + srcs = [ + "SkAnimatedImage.h", + ], + visibility = ["//src/android:__pkg__"], +) + +skia_filegroup( + name = "graphite_android_hdrs", + srcs = [ + "SkSurfaceAndroid.h", + ], +) diff --git a/vendor/artifacts/skia/include/android/GrAHardwareBufferUtils.h b/vendor/artifacts/skia/include/android/GrAHardwareBufferUtils.h new file mode 100644 index 000000000..47a5918f5 --- /dev/null +++ b/vendor/artifacts/skia/include/android/GrAHardwareBufferUtils.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GrAHardwareBufferUtils_DEFINED +#define GrAHardwareBufferUtils_DEFINED + +#include "include/core/SkTypes.h" + +#if defined(SK_BUILD_FOR_ANDROID) && __ANDROID_API__ >= 26 + +#include "include/gpu/ganesh/GrBackendSurface.h" +#include "include/gpu/ganesh/GrTypes.h" + +class GrDirectContext; + +extern "C" { + typedef struct AHardwareBuffer AHardwareBuffer; +} + +namespace GrAHardwareBufferUtils { + +#if !defined(SK_DISABLE_LEGACY_ANDROID_HW_UTILS) +GrBackendFormat GetBackendFormat(GrDirectContext* dContext, AHardwareBuffer* hardwareBuffer, + uint32_t bufferFormat, bool requireKnownFormat); +#endif + +GrBackendFormat GetGLBackendFormat(GrDirectContext* dContext, uint32_t bufferFormat, + bool requireKnownFormat); +GrBackendFormat GetVulkanBackendFormat(GrDirectContext* dContext, AHardwareBuffer* hardwareBuffer, + uint32_t bufferFormat, bool requireKnownFormat); + +typedef void* TexImageCtx; +typedef void (*DeleteImageProc)(TexImageCtx); +typedef void (*UpdateImageProc)(TexImageCtx, GrDirectContext*); + +/** + * Create a GrBackendTexture from AHardwareBuffer + * + * @param context GPU context + * @param hardwareBuffer AHB + * @param width texture width + * @param height texture height + * @param deleteProc returns a function that deletes the texture and + * other GPU resources. Must be invoked on the same + * thread as MakeBackendTexture + * @param updateProc returns a function, that needs to be invoked, when + * AHB buffer content has changed. Must be invoked on + * the same thread as MakeBackendTexture + * @param imageCtx returns an opaque image context, that is passed as + * first argument to deleteProc and updateProc + * @param isProtectedContent if true, GL backend uses EXT_protected_content + * @param backendFormat backend format, usually created with helper + * function GetBackendFormat + * @param isRenderable true if GrBackendTexture can be used as a color + * attachment + * @return valid GrBackendTexture object on success + */ +#if !defined(SK_DISABLE_LEGACY_ANDROID_HW_UTILS) +GrBackendTexture MakeBackendTexture(GrDirectContext* dContext, AHardwareBuffer* hardwareBuffer, + int width, int height, + DeleteImageProc* deleteProc, + UpdateImageProc* updateProc, + TexImageCtx* imageCtx, + bool isProtectedContent, + const GrBackendFormat& backendFormat, + bool isRenderable, + bool fromAndroidWindow = false); +#endif + +GrBackendTexture MakeGLBackendTexture(GrDirectContext* dContext, + AHardwareBuffer* hardwareBuffer, + int width, int height, + DeleteImageProc* deleteProc, + UpdateImageProc* updateProc, + TexImageCtx* imageCtx, + bool isProtectedContent, + const GrBackendFormat& backendFormat, + bool isRenderable); + +GrBackendTexture MakeVulkanBackendTexture(GrDirectContext* dContext, + AHardwareBuffer* hardwareBuffer, + int width, int height, + DeleteImageProc* deleteProc, + UpdateImageProc* updateProc, + TexImageCtx* imageCtx, + bool isProtectedContent, + const GrBackendFormat& backendFormat, + bool isRenderable, + bool fromAndroidWindow = false); + +} // namespace GrAHardwareBufferUtils + +#endif +#endif diff --git a/vendor/artifacts/skia/include/android/SkAndroidFrameworkUtils.h b/vendor/artifacts/skia/include/android/SkAndroidFrameworkUtils.h new file mode 100644 index 000000000..a8b38b125 --- /dev/null +++ b/vendor/artifacts/skia/include/android/SkAndroidFrameworkUtils.h @@ -0,0 +1,85 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAndroidFrameworkUtils_DEFINED +#define SkAndroidFrameworkUtils_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkTileMode.h" + +class SkCanvas; +struct SkIRect; +struct SkRect; +class SkSurface; +class SkShader; + +/** + * SkAndroidFrameworkUtils expose private APIs used only by Android framework. + */ +class SkAndroidFrameworkUtils { +public: + +#if defined(SK_GANESH) + /** + * clipWithStencil draws the current clip into a stencil buffer with reference value and mask + * set to 0x1. This function works only on a GPU canvas. + * + * @param canvas A GPU canvas that has a non-empty clip. + * + * @return true on success or false if clip is empty or not a GPU canvas. + */ + static bool clipWithStencil(SkCanvas* canvas); +#endif //defined(SK_GANESH) + + static void SafetyNetLog(const char*); + + static sk_sp getSurfaceFromCanvas(SkCanvas* canvas); + + static int SaveBehind(SkCanvas* canvas, const SkRect* subset); + + // Operating within the canvas' clip stack, this resets the geometry of the clip to be wide + // open modula any device clip restriction that was set outside of the clip stack. + static void ResetClip(SkCanvas* canvas); + + /** + * Unrolls a chain of nested SkPaintFilterCanvas to return the base wrapped canvas. + * + * @param canvas A SkPaintFilterCanvas or any other SkCanvas subclass. + * + * @return SkCanvas that was found in the innermost SkPaintFilterCanvas. + */ + static SkCanvas* getBaseWrappedCanvas(SkCanvas* canvas); + + /** + * If the shader represents a linear gradient ShaderAsALinearGradient + * returns true and if info is not null, ShaderAsALinearGradient populates + * info with the parameters for the gradient. fColorCount is both an input + * and output parameter. On input, it indicates how many entries in + * fColors and fColorOffsets can be used, if they are not nullptr. After + * asAGradient has run, fColorCount indicates how many color-offset pairs + * there are in the gradient. fColorOffsets specifies where on the range of + * 0 to 1 to transition to the given color. fPoints represent the endpoints + * of the gradient. + */ + struct LinearGradientInfo { + int fColorCount = 0; //!< In-out parameter, specifies passed size + // of fColors/fColorOffsets on input, and + // actual number of colors/offsets on + // output. + SkColor4f* fColors = nullptr; //!< The colors in the gradient. + SkScalar* fColorOffsets = nullptr; //!< The unit offset for color transitions. + SkPoint fPoints[2]; //!< Type specific, see above. + SkTileMode fTileMode; + uint32_t fGradientFlags = 0; //!< see SkGradientShader::Flags + }; + + static bool ShaderAsALinearGradient(SkShader* shader, LinearGradientInfo*); +}; + +#endif // SkAndroidFrameworkUtils_DEFINED diff --git a/vendor/artifacts/skia/include/android/SkAnimatedImage.h b/vendor/artifacts/skia/include/android/SkAnimatedImage.h new file mode 100644 index 000000000..6ba40f2f3 --- /dev/null +++ b/vendor/artifacts/skia/include/android/SkAnimatedImage.h @@ -0,0 +1,193 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAnimatedImage_DEFINED +#define SkAnimatedImage_DEFINED + +#include "include/codec/SkCodecAnimation.h" +#include "include/core/SkBitmap.h" +#include "include/core/SkDrawable.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkRect.h" + +class SkAndroidCodec; +class SkImage; +class SkPicture; + +/** + * Thread unsafe drawable for drawing animated images (e.g. GIF). + */ +class SK_API SkAnimatedImage : public SkDrawable { +public: + /** + * Create an SkAnimatedImage from the SkAndroidCodec. + * + * Returns null on failure to allocate pixels. On success, this will + * decode the first frame. + * + * @param info Width and height may require scaling. + * @param cropRect Rectangle to crop to after scaling. + * @param postProcess Picture to apply after scaling and cropping. + */ + static sk_sp Make(std::unique_ptr, + const SkImageInfo& info, SkIRect cropRect, sk_sp postProcess); + + /** + * Simpler version that uses the default size, no cropping, and no postProcess. + */ + static sk_sp Make(std::unique_ptr); + + ~SkAnimatedImage() override; + + /** + * Reset the animation to the beginning. + */ + void reset(); + + /** + * Whether the animation completed. + * + * Returns true after all repetitions are complete, or an error stops the + * animation. Gets reset to false if the animation is restarted. + */ + bool isFinished() const { return fFinished; } + + /** + * Returned by decodeNextFrame and currentFrameDuration if the animation + * is not running. + */ + static constexpr int kFinished = -1; + + /** + * Decode the next frame. + * + * If the animation is on the last frame or has hit an error, returns + * kFinished. + */ + int decodeNextFrame(); + + /** + * Returns the current frame as an SkImage. The SkImage will not change + * after it has been returned. + * If there is no current frame, nullptr will be returned. + */ + sk_sp getCurrentFrame(); + + /** + * How long to display the current frame. + * + * Useful for the first frame, for which decodeNextFrame is called + * internally. + */ + int currentFrameDuration() { + return fCurrentFrameDuration; + } + + /** + * Change the repetition count. + * + * By default, the image will repeat the number of times indicated in the + * encoded data. + * + * Use SkCodec::kRepetitionCountInfinite for infinite, and 0 to show all + * frames once and then stop. + */ + void setRepetitionCount(int count); + + /** + * Return the currently set repetition count. + */ + int getRepetitionCount() const { + return fRepetitionCount; + } + + /** + * Return the total number of frames in the animation. + */ + int getFrameCount() const { return fFrameCount; } + + /** + * Change the filter mode. + * + * By default, the image will apply bilinear filtering when drawing in the + * OnDraw method. + */ + void setFilterMode(SkFilterMode filterMode); + + /** + * Return the filter mode used for sampling when drawing. + */ + SkFilterMode getFilterMode() const { return fFilterMode; } + +protected: + SkRect onGetBounds() override; + void onDraw(SkCanvas*) override; + +private: + struct Frame { + SkBitmap fBitmap; + int fIndex; + SkCodecAnimation::DisposalMethod fDisposalMethod; + + // init() may have to create a new SkPixelRef, if the + // current one is already in use by another owner (e.g. + // an SkPicture). This determines whether to copy the + // existing one to the new one. + enum class OnInit { + // Restore the image from the old SkPixelRef to the + // new one. + kRestoreIfNecessary, + // No need to restore. + kNoRestore, + }; + + Frame(); + bool init(const SkImageInfo& info, OnInit); + bool copyTo(Frame*) const; + }; + + std::unique_ptr fCodec; + SkImageInfo fDecodeInfo; + const SkIRect fCropRect; + const sk_sp fPostProcess; + const int fFrameCount; + SkMatrix fMatrix; + int fSampleSize; + + bool fFinished; + int fCurrentFrameDuration; + Frame fDisplayFrame; + Frame fDecodingFrame; + Frame fRestoreFrame; + int fRepetitionCount; + int fRepetitionsCompleted; + SkFilterMode fFilterMode = SkFilterMode::kLinear; + + SkAnimatedImage(std::unique_ptr, const SkImageInfo& requestedInfo, + SkIRect cropRect, sk_sp postProcess); + + int computeNextFrame(int current, bool* animationEnded); + double finish(); + + /** + * True if there is no crop, orientation, or post decoding scaling. + */ + bool simple() const { return fMatrix.isIdentity() && !fPostProcess + && fCropRect == fDecodeInfo.bounds(); } + + /** + * Returns the current frame as an SkImage. + * + * Like getCurrentFrame, but only returns the raw data from the internal SkBitmap. (i.e. no + * scaling, orientation-correction or cropping.) If simple(), this is the final output. + */ + sk_sp getCurrentFrameSimple(); + + using INHERITED = SkDrawable; +}; + +#endif // SkAnimatedImage_DEFINED diff --git a/vendor/artifacts/skia/include/android/SkCanvasAndroid.h b/vendor/artifacts/skia/include/android/SkCanvasAndroid.h new file mode 100644 index 000000000..06a0ce221 --- /dev/null +++ b/vendor/artifacts/skia/include/android/SkCanvasAndroid.h @@ -0,0 +1,20 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCanvasAndroid_DEFINED +#define SkCanvasAndroid_DEFINED + +class SkCanvas; +struct SkIRect; +class GrBackendRenderTarget; + +namespace skgpu::ganesh { +SkIRect TopLayerBounds(const SkCanvas*); +GrBackendRenderTarget TopLayerBackendRenderTarget(const SkCanvas*); +} + +#endif diff --git a/vendor/artifacts/skia/include/android/SkImageAndroid.h b/vendor/artifacts/skia/include/android/SkImageAndroid.h new file mode 100644 index 000000000..2520a5ada --- /dev/null +++ b/vendor/artifacts/skia/include/android/SkImageAndroid.h @@ -0,0 +1,100 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImageAndroid_DEFINED +#define SkImageAndroid_DEFINED + +#include "include/core/SkImage.h" +#include "include/core/SkRefCnt.h" +#include "include/gpu/ganesh/GrTypes.h" + +class SkColorSpace; +class GrDirectContext; +class GrRecordingContext; +class SkPixmap; +struct AHardwareBuffer; + +namespace SkImages { + +/** (See skbug.com/40038695) + Creates SkImage from Android hardware buffer. + Returned SkImage takes a reference on the buffer. + Only available on Android, when __ANDROID_API__ is defined to be 26 or greater. + @param hardwareBuffer AHardwareBuffer Android hardware buffer + @param colorSpace range of colors; may be nullptr + @return created SkImage, or nullptr +*/ +SK_API sk_sp DeferredFromAHardwareBuffer(AHardwareBuffer* hardwareBuffer, + SkAlphaType alphaType = kPremul_SkAlphaType); +SK_API sk_sp DeferredFromAHardwareBuffer( + AHardwareBuffer* hardwareBuffer, + SkAlphaType alphaType, + sk_sp colorSpace, + GrSurfaceOrigin surfaceOrigin = kTopLeft_GrSurfaceOrigin); + +/** Creates SkImage from Android hardware buffer and uploads the data from the SkPixmap to it. + Returned SkImage takes a reference on the buffer. + Only available on Android, when __ANDROID_API__ is defined to be 26 or greater. + @param context GPU context + @param pixmap SkPixmap that contains data to be uploaded to the AHardwareBuffer + @param hardwareBuffer AHardwareBuffer Android hardware buffer + @param surfaceOrigin surface origin for resulting image + @return created SkImage, or nullptr +*/ +SK_API sk_sp TextureFromAHardwareBufferWithData( + GrDirectContext* context, + const SkPixmap& pixmap, + AHardwareBuffer* hardwareBuffer, + GrSurfaceOrigin surfaceOrigin = kTopLeft_GrSurfaceOrigin); + +/** + * Like SkImage::MakeFromBitmap, except this can be pinned using + * skgpu::ganesh::PinAsTexture and Skia will *not* copy the bitmap. + */ +SK_API sk_sp PinnableRasterFromBitmap(const SkBitmap&); + +/** + * Like SkImage::MakeFromBitmap, except and Skia will *not* copy the bitmap. + */ +SK_API sk_sp RasterFromBitmapNoCopy(const SkBitmap&); + +} // namespace SkImages + +namespace skgpu::ganesh { +/** + * Will attempt to upload and lock the contents of the image as a texture, so that subsequent + * draws to a gpu-target will come from that texture (and not by looking at the original image + * src). In particular this is intended to use the texture even if the image's original content + * changes subsequent to this call (i.e. the src is mutable!). + * + * Only compatible with SkImages created from SkImages::PinnableRasterFromBitmap. + * + * All successful calls must be balanced by an equal number of calls to UnpinTexture(). + * + * Once in this "pinned" state, the image has all of the same thread restrictions that exist + * for a natively created gpu image (e.g. SkImage::MakeFromTexture) + * - all drawing, pinning, unpinning must happen in the same thread as the GrContext. + * + * @return true if the image was successfully uploaded and locked into a texture + */ +bool PinAsTexture(GrRecordingContext*, SkImage*); + +/** + * The balancing call to a successful invocation of PinAsTexture. When a balanced + * number of calls have been made, then the "pinned" texture is free to be purged, etc. This + * also means that a subsequent "pin" call will look at the original content again, and if + * its uniqueID/generationID has changed, then a newer texture will be uploaded/pinned. + * + * Only compatible with SkImages created from SkImages::PinnableRasterFromBitmap. + * + * The context passed to unpin must match the one passed to pin. + */ +void UnpinTexture(GrRecordingContext*, SkImage*); + +} // namespace skgpu::ganesh + +#endif diff --git a/vendor/artifacts/skia/include/android/SkSurfaceAndroid.h b/vendor/artifacts/skia/include/android/SkSurfaceAndroid.h new file mode 100644 index 000000000..cd50da0b0 --- /dev/null +++ b/vendor/artifacts/skia/include/android/SkSurfaceAndroid.h @@ -0,0 +1,50 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSurfaceAndroid_DEFINED +#define SkSurfaceAndroid_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSurface.h" +#include "include/gpu/ganesh/GrTypes.h" + +class SkColorSpace; +class GrDirectContext; +class SkPixmap; +struct AHardwareBuffer; + +namespace SkSurfaces { + +/** Private; only to be used by Android Framework. + Creates SkSurface from Android hardware buffer. + Returned SkSurface takes a reference on the buffer. The ref on the buffer will be released + when the SkSurface is destroyed and there is no pending work on the GPU involving the + buffer. + + Currently this is only supported for buffers that can be textured as well as rendered to. + In other words that must have both AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT and + AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE usage bits. + + @param context GPU context + @param hardwareBuffer AHardwareBuffer Android hardware buffer + @param colorSpace range of colors; may be nullptr + @param surfaceProps LCD striping orientation and setting for device independent + fonts; may be nullptr + @param fromWindow Whether or not the AHardwareBuffer is part of an Android Window. + Currently only used with Vulkan backend. + @return created SkSurface, or nullptr +*/ +SK_API sk_sp WrapAndroidHardwareBuffer(GrDirectContext* context, + AHardwareBuffer* hardwareBuffer, + GrSurfaceOrigin origin, + sk_sp colorSpace, + const SkSurfaceProps* surfaceProps, + bool fromWindow = false); + +} // namespace SkSurfaces + +#endif diff --git a/vendor/artifacts/skia/include/android/graphite/SurfaceAndroid.h b/vendor/artifacts/skia/include/android/graphite/SurfaceAndroid.h new file mode 100644 index 000000000..d965765af --- /dev/null +++ b/vendor/artifacts/skia/include/android/graphite/SurfaceAndroid.h @@ -0,0 +1,59 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SurfaceAndroid_DEFINED +#define SurfaceAndroid_DEFINED + +#include "include/core/SkRefCnt.h" + +struct AHardwareBuffer; +class SkColorSpace; +class SkSurface; +class SkSurfaceProps; + +namespace skgpu::graphite { + class Recorder; +} + +namespace SkSurfaces { + +using ReleaseContext = void*; +using BufferReleaseProc = void (*)(ReleaseContext); + +/** Private; only to be used by Android Framework. + Creates an SkSurface from an Android hardware buffer. + + Upon success bufferReleaseProc is called when it is safe to delete the buffer in the + backend API (accounting only for use of the buffer by this surface). If SkSurface creation + fails bufferReleaseProc is called before this function returns. + + Currently this is only supported for buffers that can be textured as well as rendered to. + In other words the buffer must have both AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT and + AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE usage bits. + + @param recorder the applicable Graphite recorder + @param hardwareBuffer an Android hardware buffer + @param colorSpace range of colors; may be nullptr + @param surfaceProps LCD striping orientation and setting for device independent + fonts; may be nullptr + @param bufferReleaseProc function called when the buffer can be released + @param ReleaseContext state passed to bufferReleaseProc + @param fromWindow Whether or not the AHardwareBuffer is part of an Android Window. + Currently only used with Vulkan backend. + @return created SkSurface, or nullptr +*/ +SK_API sk_sp WrapAndroidHardwareBuffer(skgpu::graphite::Recorder* recorder, + AHardwareBuffer* hardwareBuffer, + sk_sp colorSpace, + const SkSurfaceProps* surfaceProps, + BufferReleaseProc = nullptr, + ReleaseContext = nullptr, + bool fromWindow = false); + +} // namespace SkSurfaces + +#endif // SurfaceAndroid_DEFINED diff --git a/vendor/artifacts/skia/include/android/vk/AndroidVulkanMemoryAllocator.h b/vendor/artifacts/skia/include/android/vk/AndroidVulkanMemoryAllocator.h new file mode 100644 index 000000000..a91eb2841 --- /dev/null +++ b/vendor/artifacts/skia/include/android/vk/AndroidVulkanMemoryAllocator.h @@ -0,0 +1,31 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef AndroidVulkanMemoryAllocator_DEFINED +#define AndroidVulkanMemoryAllocator_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +namespace skgpu { +struct VulkanBackendContext; +class VulkanMemoryAllocator; +} + +namespace SkiaVMA { + +struct Options { + bool fThreadSafe = true; +}; + +// Returns a concrete implementation of a memory allocator using some hard-coded settings. +// If Android Framework ever wants to make their own, they can stop using this. +sk_sp Make(const skgpu::VulkanBackendContext&, Options); + +} // namespace SkiaVMA + +#endif diff --git a/vendor/artifacts/skia/include/codec/BUILD.bazel b/vendor/artifacts/skia/include/codec/BUILD.bazel new file mode 100644 index 000000000..54b0dbe2a --- /dev/null +++ b/vendor/artifacts/skia/include/codec/BUILD.bazel @@ -0,0 +1,124 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +CORE_HDRS = ["SkEncodedOrigin.h"] + +skia_filegroup( + name = "core_hdrs", + srcs = CORE_HDRS, + visibility = ["//src/core:__pkg__"], +) + +ANY_CODEC_HDRS = [ + "SkCodec.h", + "SkCodecAnimation.h", + "SkEncodedImageFormat.h", + "SkPixmapUtils.h", +] + +skia_filegroup( + name = "any_codec_hdrs", + srcs = ANY_CODEC_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +ANDROID_PUBLIC_HDRS = ["SkAndroidCodec.h"] + +skia_filegroup( + name = "android_public_hdrs", + srcs = ANDROID_PUBLIC_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +BMP_PUBLIC_HDRS = ["SkBmpDecoder.h"] + +skia_filegroup( + name = "bmp_public_hdrs", + srcs = BMP_PUBLIC_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +GIF_PUBLIC_HDRS = ["SkGifDecoder.h"] + +skia_filegroup( + name = "gif_public_hdrs", + srcs = GIF_PUBLIC_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +ICO_PUBLIC_HDRS = ["SkIcoDecoder.h"] + +skia_filegroup( + name = "ico_public_hdrs", + srcs = ICO_PUBLIC_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +JPEG_PUBLIC_HDRS = ["SkJpegDecoder.h"] + +skia_filegroup( + name = "jpeg_public_hdrs", + srcs = JPEG_PUBLIC_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +JPEGXL_PUBLIC_HDRS = ["SkJpegxlDecoder.h"] + +skia_filegroup( + name = "jpegxl_public_hdrs", + srcs = JPEGXL_PUBLIC_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +PNG_PUBLIC_HDRS = [ + "SkPngChunkReader.h", + "SkPngDecoder.h", +] + +skia_filegroup( + name = "libpng_public_hdrs", + srcs = PNG_PUBLIC_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +skia_filegroup( + name = "rust_png_public_hdrs", + srcs = ["SkPngRustDecoder.h"], + visibility = ["//src/codec:__pkg__"], +) + +WBMP_PUBLIC_HDRS = ["SkWbmpDecoder.h"] + +skia_filegroup( + name = "wbmp_public_hdrs", + srcs = WBMP_PUBLIC_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +WEBP_PUBLIC_HDRS = ["SkWebpDecoder.h"] + +skia_filegroup( + name = "webp_public_hdrs", + srcs = WEBP_PUBLIC_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = CORE_HDRS + + ANY_CODEC_HDRS + + ANDROID_PUBLIC_HDRS + + BMP_PUBLIC_HDRS + + GIF_PUBLIC_HDRS + + ICO_PUBLIC_HDRS + + JPEG_PUBLIC_HDRS + + JPEGXL_PUBLIC_HDRS + + PNG_PUBLIC_HDRS + + WBMP_PUBLIC_HDRS + + WEBP_PUBLIC_HDRS, +) diff --git a/vendor/artifacts/skia/include/codec/SkAndroidCodec.h b/vendor/artifacts/skia/include/codec/SkAndroidCodec.h new file mode 100644 index 000000000..4079efe9a --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkAndroidCodec.h @@ -0,0 +1,302 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAndroidCodec_DEFINED +#define SkAndroidCodec_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkColorSpace.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/core/SkTypes.h" +#include "include/private/SkEncodedInfo.h" +#include "include/private/base/SkNoncopyable.h" +#include "modules/skcms/skcms.h" + +// TODO(kjlubick, bungeman) Replace these includes with forward declares +#include "include/codec/SkEncodedImageFormat.h" // IWYU pragma: keep +#include "include/core/SkAlphaType.h" // IWYU pragma: keep +#include "include/core/SkColorType.h" // IWYU pragma: keep + +#include +#include + +class SkData; +class SkPngChunkReader; +class SkStream; +struct SkGainmapInfo; +struct SkIRect; + +/** + * Abstract interface defining image codec functionality that is necessary for + * Android. + */ +class SK_API SkAndroidCodec : SkNoncopyable { +public: + /** + * Deprecated. + * + * Now that SkAndroidCodec supports multiframe images, there are multiple + * ways to handle compositing an oriented frame on top of an oriented frame + * with different tradeoffs. SkAndroidCodec now ignores the orientation and + * forces the client to handle it. + */ + enum class ExifOrientationBehavior { + kIgnore, + kRespect, + }; + + /** + * Pass ownership of an SkCodec to a newly-created SkAndroidCodec. + */ + static std::unique_ptr MakeFromCodec(std::unique_ptr); + + /** + * If this stream represents an encoded image that we know how to decode, + * return an SkAndroidCodec that can decode it. Otherwise return NULL. + * + * The SkPngChunkReader handles unknown chunks in PNGs. + * See SkCodec.h for more details. + * + * If NULL is returned, the stream is deleted immediately. Otherwise, the + * SkCodec takes ownership of it, and will delete it when done with it. + */ + static std::unique_ptr MakeFromStream(std::unique_ptr, + SkPngChunkReader* = nullptr); + + /** + * If this data represents an encoded image that we know how to decode, + * return an SkAndroidCodec that can decode it. Otherwise return NULL. + * + * The SkPngChunkReader handles unknown chunks in PNGs. + * See SkCodec.h for more details. + */ + static std::unique_ptr MakeFromData(sk_sp, + SkPngChunkReader* = nullptr); + + virtual ~SkAndroidCodec(); + + // TODO: fInfo is now just a cache of SkCodec's SkImageInfo. No need to + // cache and return a reference here, once Android call-sites are updated. + const SkImageInfo& getInfo() const { return fInfo; } + + /** + * Return the ICC profile of the encoded data. + */ + const skcms_ICCProfile* getICCProfile() const { + return fCodec->getEncodedInfo().profile(); + } + + /** + * Format of the encoded data. + */ + SkEncodedImageFormat getEncodedFormat() const { return fCodec->getEncodedFormat(); } + + /** + * @param requestedColorType Color type requested by the client + * + * |requestedColorType| may be overriden. We will default to kF16 + * for high precision images. + * + * In the general case, if it is possible to decode to + * |requestedColorType|, this returns |requestedColorType|. + * Otherwise, this returns a color type that is an appropriate + * match for the the encoded data. + */ + SkColorType computeOutputColorType(SkColorType requestedColorType); + + /** + * @param requestedUnpremul Indicates if the client requested + * unpremultiplied output + * + * Returns the appropriate alpha type to decode to. If the image + * has alpha, the value of requestedUnpremul will be honored. + */ + SkAlphaType computeOutputAlphaType(bool requestedUnpremul); + + /** + * @param outputColorType Color type that the client will decode to. + * @param prefColorSpace Preferred color space to decode to. + * This may not return |prefColorSpace| for + * specific color types. + * + * Returns the appropriate color space to decode to. + */ + sk_sp computeOutputColorSpace(SkColorType outputColorType, + sk_sp prefColorSpace = nullptr); + + /** + * Compute the appropriate sample size to get to |size|. + * + * @param size As an input parameter, the desired output size of + * the decode. As an output parameter, the smallest sampled size + * larger than the input. + * @return the sample size to set AndroidOptions::fSampleSize to decode + * to the output |size|. + */ + int computeSampleSize(SkISize* size) const; + + /** + * Returns the dimensions of the scaled output image, for an input + * sampleSize. + * + * When the sample size divides evenly into the original dimensions, the + * scaled output dimensions will simply be equal to the original + * dimensions divided by the sample size. + * + * When the sample size does not divide even into the original + * dimensions, the codec may round up or down, depending on what is most + * efficient to decode. + * + * Finally, the codec will always recommend a non-zero output, so the output + * dimension will always be one if the sampleSize is greater than the + * original dimension. + */ + SkISize getSampledDimensions(int sampleSize) const; + + /** + * Return (via desiredSubset) a subset which can decoded from this codec, + * or false if the input subset is invalid. + * + * @param desiredSubset in/out parameter + * As input, a desired subset of the original bounds + * (as specified by getInfo). + * As output, if true is returned, desiredSubset may + * have been modified to a subset which is + * supported. Although a particular change may have + * been made to desiredSubset to create something + * supported, it is possible other changes could + * result in a valid subset. If false is returned, + * desiredSubset's value is undefined. + * @return true If the input desiredSubset is valid. + * desiredSubset may be modified to a subset + * supported by the codec. + * false If desiredSubset is invalid (NULL or not fully + * contained within the image). + */ + bool getSupportedSubset(SkIRect* desiredSubset) const; + // TODO: Rename SkCodec::getValidSubset() to getSupportedSubset() + + /** + * Returns the dimensions of the scaled, partial output image, for an + * input sampleSize and subset. + * + * @param sampleSize Factor to scale down by. + * @param subset Must be a valid subset of the original image + * dimensions and a subset supported by SkAndroidCodec. + * getSubset() can be used to obtain a subset supported + * by SkAndroidCodec. + * @return Size of the scaled partial image. Or zero size + * if either of the inputs is invalid. + */ + SkISize getSampledSubsetDimensions(int sampleSize, const SkIRect& subset) const; + + /** + * Additional options to pass to getAndroidPixels(). + */ + // FIXME: It's a bit redundant to name these AndroidOptions when this class is already + // called SkAndroidCodec. On the other hand, it's may be a bit confusing to call + // these Options when SkCodec has a slightly different set of Options. Maybe these + // should be DecodeOptions or SamplingOptions? + struct AndroidOptions : public SkCodec::Options { + AndroidOptions() + : SkCodec::Options() + , fSampleSize(1) + {} + + /** + * The client may provide an integer downscale factor for the decode. + * The codec may implement this downscaling by sampling or another + * method if it is more efficient. + * + * The default is 1, representing no downscaling. + */ + int fSampleSize; + }; + + /** + * Decode into the given pixels, a block of memory of size at + * least (info.fHeight - 1) * rowBytes + (info.fWidth * + * bytesPerPixel) + * + * Repeated calls to this function should give the same results, + * allowing the PixelRef to be immutable. + * + * @param info A description of the format (config, size) + * expected by the caller. This can simply be identical + * to the info returned by getInfo(). + * + * This contract also allows the caller to specify + * different output-configs, which the implementation can + * decide to support or not. + * + * A size that does not match getInfo() implies a request + * to scale or subset. If the codec cannot perform this + * scaling or subsetting, it will return an error code. + * + * The AndroidOptions object is also used to specify any requested scaling or subsetting + * using options->fSampleSize and options->fSubset. If NULL, the defaults (as specified above + * for AndroidOptions) are used. + * + * @return Result kSuccess, or another value explaining the type of failure. + */ + // FIXME: It's a bit redundant to name this getAndroidPixels() when this class is already + // called SkAndroidCodec. On the other hand, it's may be a bit confusing to call + // this getPixels() when it is a slightly different API than SkCodec's getPixels(). + // Maybe this should be decode() or decodeSubset()? + SkCodec::Result getAndroidPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, + const AndroidOptions* options); + + /** + * Simplified version of getAndroidPixels() where we supply the default AndroidOptions as + * specified above for AndroidOptions. It will not perform any scaling or subsetting. + */ + SkCodec::Result getAndroidPixels(const SkImageInfo& info, void* pixels, size_t rowBytes); + + SkCodec::Result getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes) { + return this->getAndroidPixels(info, pixels, rowBytes); + } + + SkCodec* codec() const { return fCodec.get(); } + + /** + * Retrieve the gainmap codec for an image. + * + * @param outInfo On success, this is populated with the parameters for + * rendering this gainmap. This parameter must be non-nullptr. + * + * @param outGainmapCodec On success, this is populated with a codec from which the + * gainmap image may be decoded. This parameter is optional, and + * may be set to nullptr. + * + * @return If this has a gainmap image and that gainmap image was + * successfully extracted then return true. Otherwise return + * false. + */ + bool getGainmapAndroidCodec(SkGainmapInfo* outInfo, std::unique_ptr* outCodec); + + // TODO(issues.skia.org/363544350): This API only works for JPEG images. Remove this API once + // it is no longer used. + bool getAndroidGainmap(SkGainmapInfo* outInfo, + std::unique_ptr* outGainmapImageStream); + +protected: + explicit SkAndroidCodec(SkCodec*); + + virtual SkISize onGetSampledDimensions(int sampleSize) const = 0; + + virtual bool onGetSupportedSubset(SkIRect* desiredSubset) const = 0; + + virtual SkCodec::Result onGetAndroidPixels(const SkImageInfo& info, void* pixels, + size_t rowBytes, const AndroidOptions& options) = 0; + +private: + const SkImageInfo fInfo; + std::unique_ptr fCodec; +}; +#endif // SkAndroidCodec_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkAvifDecoder.h b/vendor/artifacts/skia/include/codec/SkAvifDecoder.h new file mode 100644 index 000000000..4edb8f141 --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkAvifDecoder.h @@ -0,0 +1,80 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkAvifDecoder_DEFINED +#define SkAvifDecoder_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +class SkStream; + +#include + +namespace SkAvifDecoder { + +namespace LibAvif { + +/** Returns true if this data claims to be an AVIF image. */ +SK_API bool IsAvif(const void*, size_t); + +/** + * Attempts to decode the given bytes as an AVIF. + * + * If the bytes are not an AVIF, returns nullptr. + * + * DecodeContext is ignored + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +inline constexpr SkCodecs::Decoder Decoder() { + return { "avif", IsAvif, Decode }; +} + +} // namespace LibAvif + +// This function is in the root SkAvifDecoder namespace. It simply routes +// everything through the LibAvif namespace and exists for backwards +// compatibility. +inline constexpr SkCodecs::Decoder Decoder() { + return { "avif", LibAvif::IsAvif, LibAvif::Decode }; +} + +namespace CrabbyAvif { + +/** Returns true if this data claims to be an AVIF image. */ +SK_API bool IsAvif(const void*, size_t); + +/** + * Attempts to decode the given bytes as an AVIF. + * + * If the bytes are not an AVIF, returns nullptr. + * + * DecodeContext is ignored + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +inline constexpr SkCodecs::Decoder Decoder() { + return { "avif", IsAvif, Decode }; +} + +} // namespace CrabbyAvif + +} // namespace SkAvifDecoder + +#endif // SkAvifDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkBmpDecoder.h b/vendor/artifacts/skia/include/codec/SkBmpDecoder.h new file mode 100644 index 000000000..524c24790 --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkBmpDecoder.h @@ -0,0 +1,44 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkBmpDecoder_DEFINED +#define SkBmpDecoder_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +class SkStream; + +#include + +namespace SkBmpDecoder { + +/** Returns true if this data claims to be a BMP image. */ +SK_API bool IsBmp(const void*, size_t); + +/** + * Attempts to decode the given bytes as a BMP. + * + * If the bytes are not a BMP, returns nullptr. + * + * DecodeContext is ignored + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +inline constexpr SkCodecs::Decoder Decoder() { + return { "bmp", IsBmp, Decode }; +} + +} // namespace SkBmpDecoder + +#endif // SkBmpDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkCodec.h b/vendor/artifacts/skia/include/codec/SkCodec.h new file mode 100644 index 000000000..b9d868ba4 --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkCodec.h @@ -0,0 +1,1177 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCodec_DEFINED +#define SkCodec_DEFINED + +#include "include/codec/SkEncodedOrigin.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkPixmap.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" +#include "include/core/SkYUVAPixmaps.h" +#include "include/private/SkEncodedInfo.h" +#include "include/private/SkHdrMetadata.h" +#include "include/private/base/SkNoncopyable.h" +#include "modules/skcms/skcms.h" + +#include +#include +#include +#include +#include +#include +#include + +class SkData; +class SkFrameHolder; +class SkImage; +class SkPngChunkReader; +class SkSampler; +class SkStream; +struct SkGainmapInfo; +enum SkAlphaType : int; +enum class SkEncodedImageFormat; + +namespace SkCodecAnimation { +enum class Blend; +enum class DisposalMethod; +} + +namespace DM { +class CodecSrc; +} // namespace DM + +namespace SkCodecs { +struct Decoder; +} + +/** + * Abstraction layer directly on top of an image codec. + */ +class SK_API SkCodec : SkNoncopyable { +public: + /** + * Minimum number of bytes that must be buffered in SkStream input. + * + * An SkStream passed to NewFromStream must be able to use this many + * bytes to determine the image type. Then the same SkStream must be + * passed to the correct decoder to read from the beginning. + * + * This can be accomplished by implementing peek() to support peeking + * this many bytes, or by implementing rewind() to be able to rewind() + * after reading this many bytes. + */ + static constexpr size_t MinBufferedBytesNeeded() { return 32; } + + /** + * Error codes for various SkCodec methods. + */ + enum Result { + /** + * General return value for success. + */ + kSuccess, + /** + * The input is incomplete. A partial image was generated. + */ + kIncompleteInput, + /** + * Like kIncompleteInput, except the input had an error. + * + * If returned from an incremental decode, decoding cannot continue, + * even with more data. + */ + kErrorInInput, + /** + * The generator cannot convert to match the request, ignoring + * dimensions. + */ + kInvalidConversion, + /** + * The generator cannot scale to requested size. + */ + kInvalidScale, + /** + * Parameters (besides info) are invalid. e.g. NULL pixels, rowBytes + * too small, etc. + */ + kInvalidParameters, + /** + * The input did not contain a valid image. + */ + kInvalidInput, + /** + * Fulfilling this request requires rewinding the input, which is not + * supported for this input. + */ + kCouldNotRewind, + /** + * An internal error, such as OOM. + */ + kInternalError, + /** + * This method is not implemented by this codec. + * FIXME: Perhaps this should be kUnsupported? + */ + kUnimplemented, + /** + * If the memory allocation exceeded the provided budget. + */ + kOutOfMemory, + }; + + /** + * Readable string representing the error code. + */ + static const char* ResultToString(Result); + + /** + * For container formats that contain both still images and image sequences, + * instruct the decoder how the output should be selected. (Refer to comments + * for each value for more details.) + */ + enum class SelectionPolicy { + /** + * If the container format contains both still images and image sequences, + * SkCodec should choose one of the still images. This is the default. + * Note that kPreferStillImage may prevent use of the animation features + * if the input is not rewindable. + */ + kPreferStillImage, + /** + * If the container format contains both still images and image sequences, + * SkCodec should choose one of the image sequences for animation. + */ + kPreferAnimation, + }; + + /** + * If this stream represents an encoded image that we know how to decode, + * return an SkCodec that can decode it. Otherwise return NULL. + * + * As stated above, this call must be able to peek or read + * MinBufferedBytesNeeded to determine the correct format, and then start + * reading from the beginning. First it will attempt to peek, and it + * assumes that if less than MinBufferedBytesNeeded bytes (but more than + * zero) are returned, this is because the stream is shorter than this, + * so falling back to reading would not provide more data. If peek() + * returns zero bytes, this call will instead attempt to read(). This + * will require that the stream can be rewind()ed. + * + * If Result is not NULL, it will be set to either kSuccess if an SkCodec + * is returned or a reason for the failure if NULL is returned. + * + * If SkPngChunkReader is not NULL, take a ref and pass it to libpng if + * the image is a png. + * + * If the SkPngChunkReader is not NULL then: + * If the image is not a PNG, the SkPngChunkReader will be ignored. + * If the image is a PNG, the SkPngChunkReader will be reffed. + * If the PNG has unknown chunks, the SkPngChunkReader will be used + * to handle these chunks. SkPngChunkReader will be called to read + * any unknown chunk at any point during the creation of the codec + * or the decode. Note that if SkPngChunkReader fails to read a + * chunk, this could result in a failure to create the codec or a + * failure to decode the image. + * If the PNG does not contain unknown chunks, the SkPngChunkReader + * will not be used or modified. + * + * If NULL is returned, the stream is deleted immediately. Otherwise, the + * SkCodec takes ownership of it, and will delete it when done with it. + */ + static std::unique_ptr MakeFromStream( + std::unique_ptr, + SkSpan decoders, + Result* = nullptr, + SkPngChunkReader* = nullptr, + SelectionPolicy selectionPolicy = SelectionPolicy::kPreferStillImage); + // deprecated + static std::unique_ptr MakeFromStream( + std::unique_ptr, + Result* = nullptr, + SkPngChunkReader* = nullptr, + SelectionPolicy selectionPolicy = SelectionPolicy::kPreferStillImage); + + /** + * If this data represents an encoded image that we know how to decode, + * return an SkCodec that can decode it. Otherwise return NULL. + * + * If the SkPngChunkReader is not NULL then: + * If the image is not a PNG, the SkPngChunkReader will be ignored. + * If the image is a PNG, the SkPngChunkReader will be reffed. + * If the PNG has unknown chunks, the SkPngChunkReader will be used + * to handle these chunks. SkPngChunkReader will be called to read + * any unknown chunk at any point during the creation of the codec + * or the decode. Note that if SkPngChunkReader fails to read a + * chunk, this could result in a failure to create the codec or a + * failure to decode the image. + * If the PNG does not contain unknown chunks, the SkPngChunkReader + * will not be used or modified. + */ + static std::unique_ptr MakeFromData(sk_sp, + SkSpan decoders, + SkPngChunkReader* = nullptr); + // deprecated + static std::unique_ptr MakeFromData(sk_sp, SkPngChunkReader* = nullptr); + + virtual ~SkCodec(); + + /** + * Return a reasonable SkImageInfo to decode into. + * + * If the image has an ICC profile that does not map to an SkColorSpace, + * the returned SkImageInfo will use SRGB. + */ + SkImageInfo getInfo() const { return fEncodedInfo.makeImageInfo(); } + + SkISize dimensions() const { return {fEncodedInfo.width(), fEncodedInfo.height()}; } + SkIRect bounds() const { + return SkIRect::MakeWH(fEncodedInfo.width(), fEncodedInfo.height()); + } + + /** + * Return the ICC profile of the encoded data. + */ + const skcms_ICCProfile* getICCProfile() const { + return this->getEncodedInfo().profile(); + } + + /** + * Return the HDR metadata associated with this image. Note that even SDR images can include + * HDR metadata (e.g, indicating how to inverse tone map when displayed on an HDR display). + */ + const skhdr::Metadata& getHdrMetadata() const { return fEncodedInfo.getHdrMetadata(); } + + /** + * Whether the encoded input uses 16 or more bits per component. + */ + bool hasHighBitDepthEncodedData() const { + // API design note: We don't return `bitsPerComponent` because it may be + // misleading in some cases - see https://crbug.com/359350061#comment4 + // for more details. + return this->getEncodedInfo().bitsPerComponent() >= 16; + } + + /** + * Returns the image orientation stored in the EXIF data. + * If there is no EXIF data, or if we cannot read the EXIF data, returns kTopLeft. + */ + SkEncodedOrigin getOrigin() const { return fOrigin; } + + /** + * Return a size that approximately supports the desired scale factor. + * The codec may not be able to scale efficiently to the exact scale + * factor requested, so return a size that approximates that scale. + * The returned value is the codec's suggestion for the closest valid + * scale that it can natively support + */ + SkISize getScaledDimensions(float desiredScale) const { + // Negative and zero scales are errors. + SkASSERT(desiredScale > 0.0f); + if (desiredScale <= 0.0f) { + return SkISize::Make(0, 0); + } + + // Upscaling is not supported. Return the original size if the client + // requests an upscale. + if (desiredScale >= 1.0f) { + return this->dimensions(); + } + return this->onGetScaledDimensions(desiredScale); + } + + /** + * Return (via desiredSubset) a subset which can decoded from this codec, + * or false if this codec cannot decode subsets or anything similar to + * desiredSubset. + * + * @param desiredSubset In/out parameter. As input, a desired subset of + * the original bounds (as specified by getInfo). If true is returned, + * desiredSubset may have been modified to a subset which is + * supported. Although a particular change may have been made to + * desiredSubset to create something supported, it is possible other + * changes could result in a valid subset. + * If false is returned, desiredSubset's value is undefined. + * @return true if this codec supports decoding desiredSubset (as + * returned, potentially modified) + */ + bool getValidSubset(SkIRect* desiredSubset) const { + return this->onGetValidSubset(desiredSubset); + } + + /** + * Format of the encoded data. + */ + SkEncodedImageFormat getEncodedFormat() const { return this->onGetEncodedFormat(); } + + /** + * Whether or not the memory passed to getPixels is zero initialized. + */ + enum ZeroInitialized { + /** + * The memory passed to getPixels is zero initialized. The SkCodec + * may take advantage of this by skipping writing zeroes. + */ + kYes_ZeroInitialized, + /** + * The memory passed to getPixels has not been initialized to zero, + * so the SkCodec must write all zeroes to memory. + * + * This is the default. It will be used if no Options struct is used. + */ + kNo_ZeroInitialized, + }; + + /** + * Additional options to pass to getPixels. + */ + struct Options { + Options() + : fZeroInitialized(kNo_ZeroInitialized) + , fSubset(nullptr) + , fFrameIndex(0) + , fPriorFrame(kNoFrame) + , fMaxDecodeMemory(0) {} + + ZeroInitialized fZeroInitialized; + /** + * If not NULL, represents a subset of the original image to decode. + * Must be within the bounds returned by getInfo(). + * If the EncodedFormat is SkEncodedImageFormat::kWEBP (the only one which + * currently supports subsets), the top and left values must be even. + * + * In getPixels and incremental decode, we will attempt to decode the + * exact rectangular subset specified by fSubset. + * + * In a scanline decode, it does not make sense to specify a subset + * top or subset height, since the client already controls which rows + * to get and which rows to skip. During scanline decodes, we will + * require that the subset top be zero and the subset height be equal + * to the full height. We will, however, use the values of + * subset left and subset width to decode partial scanlines on calls + * to getScanlines(). + */ + const SkIRect* fSubset; + + /** + * The frame to decode. + * + * Only meaningful for multi-frame images. + */ + int fFrameIndex; + + /** + * If not kNoFrame, the dst already contains the prior frame at this index. + * + * Only meaningful for multi-frame images. + * + * If fFrameIndex needs to be blended with a prior frame (as reported by + * getFrameInfo[fFrameIndex].fRequiredFrame), the client can set this to + * any non-kRestorePrevious frame in [fRequiredFrame, fFrameIndex) to + * indicate that that frame is already in the dst. Options.fZeroInitialized + * is ignored in this case. + * + * If set to kNoFrame, the codec will decode any necessary required frame(s) first. + */ + int fPriorFrame; + + /** + * If non-zero, image decoding will fail if cumulative allocations exceed this many bytes. + */ + size_t fMaxDecodeMemory; + }; + + /** + * Decode into the given pixels, a block of memory of size at + * least (info.fHeight - 1) * rowBytes + (info.fWidth * + * bytesPerPixel) + * + * Repeated calls to this function should give the same results, + * allowing the PixelRef to be immutable. + * + * @param info A description of the format (config, size) + * expected by the caller. This can simply be identical + * to the info returned by getInfo(). + * + * This contract also allows the caller to specify + * different output-configs, which the implementation can + * decide to support or not. + * + * A size that does not match getInfo() implies a request + * to scale. If the generator cannot perform this scale, + * it will return kInvalidScale. + * + * If the info contains a non-null SkColorSpace, the codec + * will perform the appropriate color space transformation. + * + * If the caller passes in the SkColorSpace that maps to the + * ICC profile reported by getICCProfile(), the color space + * transformation is a no-op. + * + * If the caller passes a null SkColorSpace, no color space + * transformation will be done. + * + * If a scanline decode is in progress, scanline mode will end, requiring the client to call + * startScanlineDecode() in order to return to decoding scanlines. + * + * For certain codecs, reading into a smaller bitmap than the original dimensions may not + * produce correct results (e.g. animated webp). + * + * @return Result kSuccess, or another value explaining the type of failure. + */ + Result getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, const Options*); + + /** + * Simplified version of getPixels() that uses the default Options. + */ + Result getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes) { + return this->getPixels(info, pixels, rowBytes, nullptr); + } + + Result getPixels(const SkPixmap& pm, const Options* opts = nullptr) { + return this->getPixels(pm.info(), pm.writable_addr(), pm.rowBytes(), opts); + } + + /** + * Return an image containing the pixels. If the codec's origin is not "upper left", + * This will rotate the output image accordingly. + */ + std::tuple, SkCodec::Result> getImage(const SkImageInfo& info, + const Options* opts = nullptr); + std::tuple, SkCodec::Result> getImage(); + + /** + * If decoding to YUV is supported, this returns true. Otherwise, this + * returns false and the caller will ignore output parameter yuvaPixmapInfo. + * + * @param supportedDataTypes Indicates the data type/planar config combinations that are + * supported by the caller. If the generator supports decoding to + * YUV(A), but not as a type in supportedDataTypes, this method + * returns false. + * @param yuvaPixmapInfo Output parameter that specifies the planar configuration, subsampling, + * orientation, chroma siting, plane color types, and row bytes. + */ + bool queryYUVAInfo(const SkYUVAPixmapInfo::SupportedDataTypes& supportedDataTypes, + SkYUVAPixmapInfo* yuvaPixmapInfo) const; + + /** + * Returns kSuccess, or another value explaining the type of failure. + * This always attempts to perform a full decode. To get the planar + * configuration without decoding use queryYUVAInfo(). + * + * @param yuvaPixmaps Contains preallocated pixmaps configured according to a successful call + * to queryYUVAInfo(). + */ + Result getYUVAPlanes(const SkYUVAPixmaps& yuvaPixmaps); + + /** + * Prepare for an incremental decode with the specified options. + * + * This may require a rewind. + * + * If kIncompleteInput is returned, may be called again after more data has + * been provided to the source SkStream. + * + * @param dstInfo Info of the destination. If the dimensions do not match + * those of getInfo, this implies a scale. + * @param dst Memory to write to. Needs to be large enough to hold the subset, + * if present, or the full image as described in dstInfo. + * @param options Contains decoding options, including if memory is zero + * initialized and whether to decode a subset. + * @return Enum representing success or reason for failure. + */ + Result startIncrementalDecode(const SkImageInfo& dstInfo, void* dst, size_t rowBytes, + const Options*); + + Result startIncrementalDecode(const SkImageInfo& dstInfo, void* dst, size_t rowBytes) { + return this->startIncrementalDecode(dstInfo, dst, rowBytes, nullptr); + } + + /** + * Start/continue the incremental decode. + * + * Not valid to call before a call to startIncrementalDecode() returns + * kSuccess. + * + * If kIncompleteInput is returned, may be called again after more data has + * been provided to the source SkStream. + * + * Unlike getPixels and getScanlines, this does not do any filling. This is + * left up to the caller, since they may be skipping lines or continuing the + * decode later. In the latter case, they may choose to initialize all lines + * first, or only initialize the remaining lines after the first call. + * + * @param rowsDecoded Optional output variable returning the total number of + * lines initialized. Only meaningful if this method returns kIncompleteInput. + * Otherwise the implementation may not set it. + * Note that some implementations may have initialized this many rows, but + * not necessarily finished those rows (e.g. interlaced PNG). This may be + * useful for determining what rows the client needs to initialize. + * @return kSuccess if all lines requested in startIncrementalDecode have + * been completely decoded. kIncompleteInput otherwise. + */ + Result incrementalDecode(int* rowsDecoded = nullptr) { + if (!fStartedIncrementalDecode) { + return kInvalidParameters; + } + return this->onIncrementalDecode(rowsDecoded); + } + + /** + * The remaining functions revolve around decoding scanlines. + */ + + /** + * Prepare for a scanline decode with the specified options. + * + * After this call, this class will be ready to decode the first scanline. + * + * This must be called in order to call getScanlines or skipScanlines. + * + * This may require rewinding the stream. + * + * Not all SkCodecs support this. + * + * @param dstInfo Info of the destination. If the dimensions do not match + * those of getInfo, this implies a scale. + * @param options Contains decoding options, including if memory is zero + * initialized. + * @return Enum representing success or reason for failure. + */ + Result startScanlineDecode(const SkImageInfo& dstInfo, const Options* options); + + /** + * Simplified version of startScanlineDecode() that uses the default Options. + */ + Result startScanlineDecode(const SkImageInfo& dstInfo) { + return this->startScanlineDecode(dstInfo, nullptr); + } + + /** + * Write the next countLines scanlines into dst. + * + * Not valid to call before calling startScanlineDecode(). + * + * @param dst Must be non-null, and large enough to hold countLines + * scanlines of size rowBytes. + * @param countLines Number of lines to write. + * @param rowBytes Number of bytes per row. Must be large enough to hold + * a scanline based on the SkImageInfo used to create this object. + * @return the number of lines successfully decoded. If this value is + * less than countLines, this will fill the remaining lines with a + * default value. + */ + int getScanlines(void* dst, int countLines, size_t rowBytes); + + /** + * Skip count scanlines. + * + * Not valid to call before calling startScanlineDecode(). + * + * The default version just calls onGetScanlines and discards the dst. + * NOTE: If skipped lines are the only lines with alpha, this default + * will make reallyHasAlpha return true, when it could have returned + * false. + * + * @return true if the scanlines were successfully skipped + * false on failure, possible reasons for failure include: + * An incomplete input image stream. + * Calling this function before calling startScanlineDecode(). + * If countLines is less than zero or so large that it moves + * the current scanline past the end of the image. + */ + bool skipScanlines(int countLines); + + /** + * The order in which rows are output from the scanline decoder is not the + * same for all variations of all image types. This explains the possible + * output row orderings. + */ + enum SkScanlineOrder { + /* + * By far the most common, this indicates that the image can be decoded + * reliably using the scanline decoder, and that rows will be output in + * the logical order. + */ + kTopDown_SkScanlineOrder, + + /* + * This indicates that the scanline decoder reliably outputs rows, but + * they will be returned in reverse order. If the scanline format is + * kBottomUp, the nextScanline() API can be used to determine the actual + * y-coordinate of the next output row, but the client is not forced + * to take advantage of this, given that it's not too tough to keep + * track independently. + * + * For full image decodes, it is safe to get all of the scanlines at + * once, since the decoder will handle inverting the rows as it + * decodes. + * + * For subset decodes and sampling, it is simplest to get and skip + * scanlines one at a time, using the nextScanline() API. It is + * possible to ask for larger chunks at a time, but this should be used + * with caution. As with full image decodes, the decoder will handle + * inverting the requested rows, but rows will still be delivered + * starting from the bottom of the image. + * + * Upside down bmps are an example. + */ + kBottomUp_SkScanlineOrder, + }; + + /** + * An enum representing the order in which scanlines will be returned by + * the scanline decoder. + * + * This is undefined before startScanlineDecode() is called. + */ + SkScanlineOrder getScanlineOrder() const { return this->onGetScanlineOrder(); } + + /** + * Returns the y-coordinate of the next row to be returned by the scanline + * decoder. + * + * This will equal fCurrScanline, except in the case of strangely + * encoded image types (bottom-up bmps). + * + * Results are undefined when not in scanline decoding mode. + */ + int nextScanline() const { return this->outputScanline(fCurrScanline); } + + /** + * Returns the output y-coordinate of the row that corresponds to an input + * y-coordinate. The input y-coordinate represents where the scanline + * is located in the encoded data. + * + * This will equal inputScanline, except in the case of strangely + * encoded image types (bottom-up bmps, interlaced gifs). + */ + int outputScanline(int inputScanline) const; + + /** + * Return the number of frames in the image. + * + * May require reading through the stream. + * + * Note that some codecs may be unable to gather `FrameInfo` for all frames + * in case of `kIncompleteInput`. For such codecs `getFrameCount` may + * initially report a low frame count. After the underlying `SkStream` + * provides additional data, then calling `getFrameCount` again may return + * an updated, increased frame count. + */ + int getFrameCount() { + return this->onGetFrameCount(); + } + + // Sentinel value used when a frame index implies "no frame": + // - FrameInfo::fRequiredFrame set to this value means the frame + // is independent. + // - Options::fPriorFrame set to this value means no (relevant) prior frame + // is residing in dst's memory. + static constexpr int kNoFrame = -1; + + /** + * Information about individual frames in a multi-framed image. + */ + struct FrameInfo { + /** + * The frame that this frame needs to be blended with, or + * kNoFrame if this frame is independent (so it can be + * drawn over an uninitialized buffer). + * + * Note that this is the *earliest* frame that can be used + * for blending. Any frame from [fRequiredFrame, i) can be + * used, unless its fDisposalMethod is kRestorePrevious. + */ + int fRequiredFrame; + + /** + * Number of milliseconds to show this frame. + */ + int fDuration; + + /** + * Whether the end marker for this frame is contained in the stream. + * + * Note: this does not guarantee that an attempt to decode will be complete. + * There could be an error in the stream. + */ + bool fFullyReceived; + + /** + * This is conservative; it will still return non-opaque if e.g. a + * color index-based frame has a color with alpha but does not use it. + */ + SkAlphaType fAlphaType; + + /** + * Whether the updated rectangle contains alpha. + * + * This is conservative; it will still be set to true if e.g. a color + * index-based frame has a color with alpha but does not use it. In + * addition, it may be set to true, even if the final frame, after + * blending, is opaque. + */ + bool fHasAlphaWithinBounds; + + /** + * How this frame should be modified before decoding the next one. + */ + SkCodecAnimation::DisposalMethod fDisposalMethod; + + /** + * How this frame should blend with the prior frame. + */ + SkCodecAnimation::Blend fBlend; + + /** + * The rectangle updated by this frame. + * + * It may be empty, if the frame does not change the image. It will + * always be contained by SkCodec::dimensions(). + */ + SkIRect fFrameRect; + }; + + /** + * Return info about a single frame. + * + * Does not read through the stream, so it should be called after + * getFrameCount() to parse any frames that have not already been parsed. + * + * Only supported by animated (multi-frame) codecs. Note that this is a + * property of the codec (the SkCodec subclass), not the image. + * + * To elaborate, some codecs support animation (e.g. GIF). Others do not + * (e.g. BMP). Animated codecs can still represent single frame images. + * Calling getFrameInfo(0, etc) will return true for a single frame GIF + * even if the overall image is not animated (in that the pixels on screen + * do not change over time). When incrementally decoding a GIF image, we + * might only know that there's a single frame *so far*. + * + * For non-animated SkCodec subclasses, it's sufficient but not necessary + * for this method to always return false. + */ + bool getFrameInfo(int index, FrameInfo* info) const { + if (index < 0) { + return false; + } + return this->onGetFrameInfo(index, info); + } + + /** + * Return info about all the frames in the image. + * + * May require reading through the stream to determine info about the + * frames (including the count). + * + * As such, future decoding calls may require a rewind. + * + * This may return an empty vector for non-animated codecs. See the + * getFrameInfo(int, FrameInfo*) comment. + */ + std::vector getFrameInfo(); + + static constexpr int kRepetitionCountInfinite = -1; + + /** + * Return the number of times to repeat, if this image is animated. This number does not + * include the first play through of each frame. For example, a repetition count of 4 means + * that each frame is played 5 times and then the animation stops. + * + * It can return kRepetitionCountInfinite, a negative number, meaning that the animation + * should loop forever. + * + * May require reading the stream to find the repetition count. + * + * As such, future decoding calls may require a rewind. + * + * `getRepetitionCount` will return `0` in two cases: + * 1. Still (non-animated) images. + * 2. Animated images that only play the animation once (i.e. that don't + * repeat the animation) + * `isAnimated` can be used to disambiguate between these two cases. + */ + int getRepetitionCount() { + return this->onGetRepetitionCount(); + } + + /** + * `isAnimated` returns whether the full input is expected to contain an + * animated image (i.e. more than 1 image frame). This can be used to + * disambiguate the meaning of `getRepetitionCount` returning `0` (see + * `getRepetitionCount`'s doc comment for more details). + * + * Note that in some codecs `getFrameCount()` only returns the number of + * frames for which all the metadata has been already successfully decoded. + * Therefore for a partial input `isAnimated()` may return "yes", even + * though `getFrameCount()` may temporarily return `1` until more of the + * input is available. + * + * When handling partial input, some codecs may not know until later (e.g. + * until encountering additional image frames) whether the given image has + * more than one frame. Such codecs may initially return + * `IsAnimated::kUnknown` and only later give a definitive "yes" or "no" + * answer. GIF format is one example where this may happen. + * + * Other codecs may be able to decode the information from the metadata + * present before the first image frame. Such codecs should be able to give + * a definitive "yes" or "no" answer as soon as they are constructed. PNG + * format is one example where this happens. + */ + enum class IsAnimated { + kYes, + kNo, + kUnknown, + }; + IsAnimated isAnimated() { return this->onIsAnimated(); } + +protected: + const SkEncodedInfo& getEncodedInfo() const { return fEncodedInfo; } + + using XformFormat = skcms_PixelFormat; + + SkCodec(SkEncodedInfo&&, + XformFormat srcFormat, + std::unique_ptr, + SkEncodedOrigin = kTopLeft_SkEncodedOrigin); + + virtual bool onGetGainmapCodec(SkGainmapInfo*, std::unique_ptr*) { return false; } + virtual bool onGetGainmapInfo(SkGainmapInfo*) { return false; } + + // TODO(issues.skia.org/363544350): This API only works for JPEG images. Remove this API once + // it is no longer used. + virtual bool onGetGainmapInfo(SkGainmapInfo*, std::unique_ptr*) { return false; } + + virtual SkISize onGetScaledDimensions(float /*desiredScale*/) const { + // By default, scaling is not supported. + return this->dimensions(); + } + + // FIXME: What to do about subsets?? + /** + * Subclasses should override if they support dimensions other than the + * srcInfo's. + */ + virtual bool onDimensionsSupported(const SkISize&) { + return false; + } + + virtual SkEncodedImageFormat onGetEncodedFormat() const = 0; + + /** + * @param rowsDecoded When the encoded image stream is incomplete, this function + * will return kIncompleteInput and rowsDecoded will be set to + * the number of scanlines that were successfully decoded. + * This will allow getPixels() to fill the uninitialized memory. + */ + virtual Result onGetPixels(const SkImageInfo& info, + void* pixels, size_t rowBytes, const Options&, + int* rowsDecoded) = 0; + + virtual bool onQueryYUVAInfo(const SkYUVAPixmapInfo::SupportedDataTypes&, + SkYUVAPixmapInfo*) const { return false; } + + virtual Result onGetYUVAPlanes(const SkYUVAPixmaps&) { return kUnimplemented; } + + virtual bool onGetValidSubset(SkIRect* /*desiredSubset*/) const { + // By default, subsets are not supported. + return false; + } + + /** + * If the stream was previously read, attempt to rewind. + * + * If the stream needed to be rewound, call onRewind. + * @returns true if the codec is at the right position and can be used. + * false if there was a failure to rewind. + * + * This is called by getPixels(), getYUV8Planes(), startIncrementalDecode() and + * startScanlineDecode(). Subclasses may call if they need to rewind at another time. + */ + [[nodiscard]] bool rewindIfNeeded(); + + /** + * Called by onRewind(), attempts to rewind fStream. + */ + bool rewindStream(); + + /** + * Called by rewindIfNeeded, if the stream needed to be rewound. + * + * Subclasses should call rewindStream() if they own one, and then + * do any set up needed after. + */ + virtual bool onRewind() { + if (!this->rewindStream()) { + return false; + } + return true; + } + + /** + * Get method for the input stream + */ + SkStream* stream() { + return fStream.get(); + } + + /** + * The remaining functions revolve around decoding scanlines. + */ + + /** + * Most images types will be kTopDown and will not need to override this function. + */ + virtual SkScanlineOrder onGetScanlineOrder() const { return kTopDown_SkScanlineOrder; } + + const SkImageInfo& dstInfo() const { return fDstInfo; } + + const Options& options() const { return fOptions; } + + /** + * Returns the number of scanlines that have been decoded so far. + * This is unaffected by the SkScanlineOrder. + * + * Returns -1 if we have not started a scanline decode. + */ + int currScanline() const { return fCurrScanline; } + + virtual int onOutputScanline(int inputScanline) const; + + /** + * Return whether we can convert to dst. + * + * Will be called for the appropriate frame, prior to initializing the colorXform. + */ + virtual bool conversionSupported(const SkImageInfo& dst, bool srcIsOpaque, + bool needsColorXform); + + // Some classes never need a colorXform e.g. + // - ICO uses its embedded codec's colorXform + // - WBMP is just Black/White + virtual bool usesColorXform() const { return true; } + void applyColorXform(void* dst, const void* src, int count) const; + + bool colorXform() const { return fXformTime != kNo_XformTime; } + bool xformOnDecode() const { return fXformTime == kDecodeRow_XformTime; } + + virtual int onGetFrameCount() { + return 1; + } + + virtual bool onGetFrameInfo(int, FrameInfo*) const { + return false; + } + + virtual int onGetRepetitionCount() { + return 0; + } + + virtual IsAnimated onIsAnimated() { + return IsAnimated::kNo; + } + + // Returns true if the requested amount keeps the current total under Options::fMaxDecodeMemory. + bool allocateFromBudget(size_t numBytes); + +private: + const SkEncodedInfo fEncodedInfo; + XformFormat fSrcXformFormat; + std::unique_ptr fStream; + bool fNeedsRewind = false; + const SkEncodedOrigin fOrigin; + + SkImageInfo fDstInfo; + Options fOptions; + + enum XformTime { + kNo_XformTime, + kPalette_XformTime, + kDecodeRow_XformTime, + }; + XformTime fXformTime; + XformFormat fDstXformFormat; // Based on fDstInfo. + skcms_ICCProfile fDstProfileStorage; + // This tracks either fDstProfileStorage or the ICC profile in fEncodedInfo. + // For the latter case it is important to not make a profile copy because skcms_Transform + // only performs a shallow pointer comparison to decide whether it can skip the color space + // transformation. + const skcms_ICCProfile* fDstProfile = &fDstProfileStorage; + skcms_AlphaFormat fDstXformAlphaFormat; + + // Only meaningful during scanline decodes. + int fCurrScanline = -1; + + // How many bytes we are allowed to use when decoding. + size_t fDecodeBudget = 0; + + bool fStartedIncrementalDecode = false; + + // Allows SkAndroidCodec to call handleFrameIndex (potentially decoding a prior frame and + // clearing to transparent) without SkCodec itself calling it, too. + bool fUsingCallbackForHandleFrameIndex = false; + + bool initializeColorXform(const SkImageInfo& dstInfo, SkEncodedInfo::Alpha, bool srcIsOpaque); + + /** + * Return whether these dimensions are supported as a scale. + * + * The codec may choose to cache the information about scale and subset. + * Either way, the same information will be passed to onGetPixels/onStart + * on success. + * + * This must return true for a size returned from getScaledDimensions. + */ + bool dimensionsSupported(const SkISize& dim) { + return dim == this->dimensions() || this->onDimensionsSupported(dim); + } + + Result getPixelsBudgeted(const SkImageInfo& info, + void* pixels, + size_t rowBytes, + const Options*); + + /** + * For multi-framed images, return the object with information about the frames. + */ + virtual const SkFrameHolder* getFrameHolder() const { + return nullptr; + } + + // Callback for decoding a prior frame. The `Options::fFrameIndex` is ignored, + // being replaced by frameIndex. This allows opts to actually be a subclass of + // SkCodec::Options which SkCodec itself does not know how to copy or modify, + // but just passes through to the caller (where it can be reinterpret_cast'd). + using GetPixelsCallback = std::function; + + /** + * Check for a valid Options.fFrameIndex, and decode prior frames if necessary. + * + * If GetPixelsCallback is not null, it will be used to decode a prior frame instead + * of using this SkCodec directly. It may also be used recursively, if that in turn + * depends on a prior frame. This is used by SkAndroidCodec. + */ + Result handleFrameIndex(const SkImageInfo&, void* pixels, size_t rowBytes, const Options&, + GetPixelsCallback = nullptr); + + // Methods for scanline decoding. + virtual Result onStartScanlineDecode(const SkImageInfo& /*dstInfo*/, + const Options& /*options*/) { + return kUnimplemented; + } + + /** + * Checks whether the implementation supports incremental decoding for the given info. + * + * Note that onStartIncrementalDecode can stil fail regardless of this result. + */ + virtual bool onSupportsIncrementalDecode(const SkImageInfo&) { return false; } + + virtual Result onStartIncrementalDecode(const SkImageInfo& /*dstInfo*/, void*, size_t, + const Options&) { + return kUnimplemented; + } + + virtual Result onIncrementalDecode(int*) { + return kUnimplemented; + } + + + virtual bool onSkipScanlines(int /*countLines*/) { return false; } + + virtual int onGetScanlines(void* /*dst*/, int /*countLines*/, size_t /*rowBytes*/) { return 0; } + + /** + * On an incomplete decode, getPixels() and getScanlines() will call this function + * to fill any uinitialized memory. + * + * @param dstInfo Contains the destination color type + * Contains the destination alpha type + * Contains the destination width + * The height stored in this info is unused + * @param dst Pointer to the start of destination pixel memory + * @param rowBytes Stride length in destination pixel memory + * @param zeroInit Indicates if memory is zero initialized + * @param linesRequested Number of lines that the client requested + * @param linesDecoded Number of lines that were successfully decoded + */ + void fillIncompleteImage(const SkImageInfo& dstInfo, void* dst, size_t rowBytes, + ZeroInitialized zeroInit, int linesRequested, int linesDecoded); + + /** + * Return an object which will allow forcing scanline decodes to sample in X. + * + * May create a sampler, if one is not currently being used. Otherwise, does + * not affect ownership. + * + * Only valid during scanline decoding or incremental decoding. + */ + virtual SkSampler* getSampler(bool /*createIfNecessary*/) { return nullptr; } + + /** + * Return the underlying encoded data. This may be nullptr if the original + * stream could not be duplicated/read. + */ + virtual sk_sp getEncodedData() const; + + friend class DM::CodecSrc; // for fillIncompleteImage + friend class PNGCodecGM; // for fillIncompleteImage + friend class SkSampledCodec; + friend class SkIcoCodec; + friend class SkPngCodec; // for onGetGainmapCodec + friend class SkAndroidCodec; // for handleFrameIndex + friend class SkCodecPriv; // for fEncodedInfo +}; + +namespace SkCodecs { + +using DecodeContext = void*; +using IsFormatCallback = bool (*)(const void* data, size_t len); +using MakeFromStreamCallback = std::unique_ptr (*)(std::unique_ptr, + SkCodec::Result*, + DecodeContext); + +struct SK_API Decoder { + // By convention, we use all lowercase letters and go with the primary filename extension. + // For example "png", "jpg", "ico", "webp", etc + std::string_view id; + IsFormatCallback isFormat; + MakeFromStreamCallback makeFromStream; +}; + +// Add the decoder to the end of a linked list of decoders, which will be used to identify calls to +// SkCodec::MakeFromStream. If a decoder with the same id already exists, this new decoder +// will replace the existing one (in the same position). This is not thread-safe, so make sure all +// initialization is done before the first call. +void SK_API Register(Decoder d); + +/** + * Return a SkImage produced by the codec, but attempts to defer image allocation until the + * image is actually used/drawn. This deferral allows the system to cache the result, either on the + * CPU or on the GPU, depending on where the image is drawn. If memory is low, the cache may + * be purged, causing the next draw of the image to have to re-decode. + * + * If alphaType is nullopt, the image's alpha type will be chosen automatically based on the + * image format. Transparent images will default to kPremul_SkAlphaType. If alphaType contains + * kPremul_SkAlphaType or kUnpremul_SkAlphaType, that alpha type will be used. Forcing opaque + * (passing kOpaque_SkAlphaType) is not allowed, and will return nullptr. + * + * @param codec A non-null codec (e.g. from SkPngDecoder::Decode) + * @return created SkImage, or nullptr + */ +SK_API sk_sp DeferredImage(std::unique_ptr codec, + std::optional alphaType = std::nullopt); +} + +#endif // SkCodec_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkCodecAnimation.h b/vendor/artifacts/skia/include/codec/SkCodecAnimation.h new file mode 100644 index 000000000..c5883e2af --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkCodecAnimation.h @@ -0,0 +1,61 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCodecAnimation_DEFINED +#define SkCodecAnimation_DEFINED + +namespace SkCodecAnimation { + /** + * This specifies how the next frame is based on this frame. + * + * Names are based on the GIF 89a spec. + * + * The numbers correspond to values in a GIF. + */ + enum class DisposalMethod { + /** + * The next frame should be drawn on top of this one. + * + * In a GIF, a value of 0 (not specified) is also treated as Keep. + */ + kKeep = 1, + + /** + * Similar to Keep, except the area inside this frame's rectangle + * should be cleared to the BackGround color (transparent) before + * drawing the next frame. + */ + kRestoreBGColor = 2, + + /** + * The next frame should be drawn on top of the previous frame - i.e. + * disregarding this one. + * + * In a GIF, a value of 4 is also treated as RestorePrevious. + */ + kRestorePrevious = 3, + }; + + /** + * How to blend the current frame. + */ + enum class Blend { + /** + * Blend with the prior frame as if using SkBlendMode::kSrcOver. + */ + kSrcOver, + + /** + * Blend with the prior frame as if using SkBlendMode::kSrc. + * + * This frame's pixels replace the destination pixels. + */ + kSrc, + }; + +} // namespace SkCodecAnimation +#endif // SkCodecAnimation_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkEncodedImageFormat.h b/vendor/artifacts/skia/include/codec/SkEncodedImageFormat.h new file mode 100644 index 000000000..e664c7db0 --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkEncodedImageFormat.h @@ -0,0 +1,33 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkEncodedImageFormat_DEFINED +#define SkEncodedImageFormat_DEFINED + +#include + +/** + * Enum describing format of encoded data. + */ +enum class SkEncodedImageFormat { + kBMP, + kGIF, + kICO, + kJPEG, + kPNG, + kWBMP, + kWEBP, + kPKM, + kKTX, + kASTC, + kDNG, + kHEIF, + kAVIF, + kJPEGXL, +}; + +#endif // SkEncodedImageFormat_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkEncodedOrigin.h b/vendor/artifacts/skia/include/codec/SkEncodedOrigin.h new file mode 100644 index 000000000..7cbea073a --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkEncodedOrigin.h @@ -0,0 +1,71 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkEncodedOrigin_DEFINED +#define SkEncodedOrigin_DEFINED + +#include "include/core/SkMatrix.h" + +// These values match the orientation www.exif.org/Exif2-2.PDF. +enum SkEncodedOrigin { + kTopLeft_SkEncodedOrigin = 1, // Default + kTopRight_SkEncodedOrigin = 2, // Reflected across y-axis + kBottomRight_SkEncodedOrigin = 3, // Rotated 180 + kBottomLeft_SkEncodedOrigin = 4, // Reflected across x-axis + kLeftTop_SkEncodedOrigin = 5, // Reflected across x-axis, Rotated 90 CCW + kRightTop_SkEncodedOrigin = 6, // Rotated 90 CW + kRightBottom_SkEncodedOrigin = 7, // Reflected across x-axis, Rotated 90 CW + kLeftBottom_SkEncodedOrigin = 8, // Rotated 90 CCW + kDefault_SkEncodedOrigin = kTopLeft_SkEncodedOrigin, + kLast_SkEncodedOrigin = kLeftBottom_SkEncodedOrigin, +}; + +/** + * Given an encoded origin and the width and height of the source data, returns a matrix + * that transforms the source rectangle with upper left corner at [0, 0] and origin to a correctly + * oriented destination rectangle of [0, 0, w, h]. + */ +static inline SkMatrix SkEncodedOriginToMatrix(SkEncodedOrigin origin, int w, int h) { + switch (origin) { + case kTopLeft_SkEncodedOrigin: return SkMatrix::I(); + case kTopRight_SkEncodedOrigin: return SkMatrix::MakeAll(-1, 0, w, 0, 1, 0, 0, 0, 1); + case kBottomRight_SkEncodedOrigin: return SkMatrix::MakeAll(-1, 0, w, 0, -1, h, 0, 0, 1); + case kBottomLeft_SkEncodedOrigin: return SkMatrix::MakeAll( 1, 0, 0, 0, -1, h, 0, 0, 1); + case kLeftTop_SkEncodedOrigin: return SkMatrix::MakeAll( 0, 1, 0, 1, 0, 0, 0, 0, 1); + case kRightTop_SkEncodedOrigin: return SkMatrix::MakeAll( 0, -1, w, 1, 0, 0, 0, 0, 1); + case kRightBottom_SkEncodedOrigin: return SkMatrix::MakeAll( 0, -1, w, -1, 0, h, 0, 0, 1); + case kLeftBottom_SkEncodedOrigin: return SkMatrix::MakeAll( 0, 1, 0, -1, 0, h, 0, 0, 1); + } + SK_ABORT("Unexpected origin"); +} + +/** + * Return a matrix equal to SkEncodedOriginToMatrix(origin, w, h).invert(). + */ +static inline SkMatrix SkEncodedOriginToMatrixInverse(SkEncodedOrigin origin, int w, int h) { + switch (origin) { + case kTopLeft_SkEncodedOrigin: return SkMatrix::I(); + case kTopRight_SkEncodedOrigin: return SkMatrix::MakeAll(-1, 0, w, 0, 1, 0, 0, 0, 1); + case kBottomRight_SkEncodedOrigin: return SkMatrix::MakeAll(-1, 0, w, 0, -1, h, 0, 0, 1); + case kBottomLeft_SkEncodedOrigin: return SkMatrix::MakeAll( 1, 0, 0, 0, -1, h, 0, 0, 1); + case kLeftTop_SkEncodedOrigin: return SkMatrix::MakeAll( 0, 1, 0, 1, 0, 0, 0, 0, 1); + case kRightTop_SkEncodedOrigin: return SkMatrix::MakeAll( 0, 1, 0, -1, 0, w, 0, 0, 1); + case kRightBottom_SkEncodedOrigin: return SkMatrix::MakeAll( 0, -1, h, -1, 0, w, 0, 0, 1); + case kLeftBottom_SkEncodedOrigin: return SkMatrix::MakeAll( 0, -1, h, 1, 0, 0, 0, 0, 1); + } + SK_ABORT("Unexpected origin"); +} + +/** + * Return true if the encoded origin includes a 90 degree rotation, in which case the width + * and height of the source data are swapped relative to a correctly oriented destination. + */ +static inline bool SkEncodedOriginSwapsWidthHeight(SkEncodedOrigin origin) { + return origin >= kLeftTop_SkEncodedOrigin; +} + +#endif // SkEncodedOrigin_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkGifDecoder.h b/vendor/artifacts/skia/include/codec/SkGifDecoder.h new file mode 100644 index 000000000..dae7139f6 --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkGifDecoder.h @@ -0,0 +1,44 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkGifDecoder_DEFINED +#define SkGifDecoder_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +class SkStream; + +#include + +namespace SkGifDecoder { + +/** Returns true if this data claims to be a GIF image. */ +SK_API bool IsGif(const void*, size_t); + +/** + * Attempts to decode the given bytes as a GIF. + * + * If the bytes are not a GIF, returns nullptr. + * + * DecodeContext is ignored + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +inline constexpr SkCodecs::Decoder Decoder() { + return { "gif", IsGif, Decode }; +} + +} // namespace SkGifDecoder + +#endif // SkGifDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkIcoDecoder.h b/vendor/artifacts/skia/include/codec/SkIcoDecoder.h new file mode 100644 index 000000000..df9e304c8 --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkIcoDecoder.h @@ -0,0 +1,44 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkIcoDecoder_DEFINED +#define SkIcoDecoder_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +class SkStream; + +#include + +namespace SkIcoDecoder { + +/** Returns true if this data claims to be a ICO image. */ +SK_API bool IsIco(const void*, size_t); + +/** + * Attempts to decode the given bytes as a ICO. + * + * If the bytes are not a ICO, returns nullptr. + * + * DecodeContext is ignored + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +inline constexpr SkCodecs::Decoder Decoder() { + return { "ico", IsIco, Decode }; +} + +} // namespace SkIcoDecoder + +#endif // SkIcoDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkJpegDecoder.h b/vendor/artifacts/skia/include/codec/SkJpegDecoder.h new file mode 100644 index 000000000..57f131488 --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkJpegDecoder.h @@ -0,0 +1,51 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkJpegDecoder_DEFINED +#define SkJpegDecoder_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +class SkStream; + +#include + +namespace SkJpegDecoder { + +/** Returns true if this data claims to be a JPEG image. */ +SK_API bool IsJpeg(const void*, size_t); + +/** + * Attempts to decode the given bytes as a JPEG. + * + * If the bytes are not a JPEG, returns nullptr. + * + * DecodeContext is ignored + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +// TODO: remove after client migration +inline std::unique_ptr Decode(sk_sp data, + SkCodec::Result* result, + SkCodecs::DecodeContext ctx = nullptr) { + return Decode(sk_sp(static_cast(data.release())), result, ctx); +} + +inline constexpr SkCodecs::Decoder Decoder() { + return { "jpeg", IsJpeg, Decode }; +} + +} // namespace SkJpegDecoder + +#endif // SkJpegDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkJpegxlDecoder.h b/vendor/artifacts/skia/include/codec/SkJpegxlDecoder.h new file mode 100644 index 000000000..8f292199d --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkJpegxlDecoder.h @@ -0,0 +1,44 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkJpegxlDecoder_DEFINED +#define SkJpegxlDecoder_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +class SkStream; + +#include + +namespace SkJpegxlDecoder { + +/** Returns true if this data claims to be a JPEGXL image. */ +SK_API bool IsJpegxl(const void*, size_t); + +/** + * Attempts to decode the given bytes as a JPEGXL. + * + * If the bytes are not a JPEGXL, returns nullptr. + * + * DecodeContext is ignored + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +inline constexpr SkCodecs::Decoder Decoder() { + return { "jpegxl", IsJpegxl, Decode }; +} + +} // namespace SkJpegxlDecoder + +#endif // SkJpegxlDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkPixmapUtils.h b/vendor/artifacts/skia/include/codec/SkPixmapUtils.h new file mode 100644 index 000000000..0df4a36f0 --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkPixmapUtils.h @@ -0,0 +1,31 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPixmapUtils_DEFINED +#define SkPixmapUtils_DEFINED + +#include "include/codec/SkEncodedOrigin.h" +#include "include/core/SkImageInfo.h" +#include "include/private/base/SkAPI.h" + +class SkPixmap; + +namespace SkPixmapUtils { +/** + * Copy the pixels in src into dst, applying the orientation transformations specified + * by origin. If the inputs are invalid, this returns false and no copy is made. + */ +SK_API bool Orient(const SkPixmap& dst, const SkPixmap& src, SkEncodedOrigin origin); + +/** + * Return a copy of the provided ImageInfo with the width and height swapped. + */ +SK_API SkImageInfo SwapWidthHeight(const SkImageInfo& info); + +} // namespace SkPixmapUtils + +#endif // SkPixmapUtils_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkPngChunkReader.h b/vendor/artifacts/skia/include/codec/SkPngChunkReader.h new file mode 100644 index 000000000..0ee8a9ecc --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkPngChunkReader.h @@ -0,0 +1,45 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPngChunkReader_DEFINED +#define SkPngChunkReader_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +/** + * SkPngChunkReader + * + * Base class for optional callbacks to retrieve meta/chunk data out of a PNG + * encoded image as it is being decoded. + * Used by SkCodec. + */ +class SkPngChunkReader : public SkRefCnt { +public: + /** + * This will be called by the decoder when it sees an unknown chunk. + * + * Use by SkCodec: + * Depending on the location of the unknown chunks, this callback may be + * called by + * - the factory (NewFromStream/NewFromData) + * - getPixels + * - startScanlineDecode + * - the first call to getScanlines/skipScanlines + * The callback may be called from a different thread (e.g. if the SkCodec + * is passed to another thread), and it may be called multiple times, if + * the SkCodec is used multiple times. + * + * @param tag Name for this type of chunk. + * @param data Data to be interpreted by the subclass. + * @param length Number of bytes of data in the chunk. + * @return true to continue decoding, or false to indicate an error, which + * will cause the decoder to not return the image. + */ + virtual bool readChunk(const char tag[], const void* data, size_t length) = 0; +}; +#endif // SkPngChunkReader_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkPngDecoder.h b/vendor/artifacts/skia/include/codec/SkPngDecoder.h new file mode 100644 index 000000000..eaa2a3cdb --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkPngDecoder.h @@ -0,0 +1,51 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkPngDecoder_DEFINED +#define SkPngDecoder_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +class SkStream; + +#include + +namespace SkPngDecoder { + +/** Returns true if this data claims to be a PNG image. */ +SK_API bool IsPng(const void*, size_t); + +/** + * Attempts to decode the given bytes as a PNG. + * + * If the bytes are not a PNG, returns nullptr. + * + * DecodeContext, if non-null, is expected to be a SkPngChunkReader* + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +// TODO: remove after client migration +inline std::unique_ptr Decode(sk_sp data, + SkCodec::Result* result, + SkCodecs::DecodeContext ctx = nullptr) { + return Decode(sk_sp(static_cast(data.release())), result, ctx); +} + +inline constexpr SkCodecs::Decoder Decoder() { + return { "png", IsPng, Decode }; +} + +} // namespace SkPngDecoder + +#endif // SkPngDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkPngRustDecoder.h b/vendor/artifacts/skia/include/codec/SkPngRustDecoder.h new file mode 100644 index 000000000..f96d03cb0 --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkPngRustDecoder.h @@ -0,0 +1,30 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkPngRustDecoder_DEFINED +#define SkPngRustDecoder_DEFINED + +#include + +#include "include/codec/SkCodec.h" +#include "include/private/base/SkAPI.h" + +class SkStream; + +namespace SkPngRustDecoder { + +/** Returns true if this data claims to be a PNG image. */ +SK_API bool IsPng(const void*, size_t); + +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +inline constexpr SkCodecs::Decoder Decoder() { return {"png", IsPng, Decode}; } + +} // namespace SkPngRustDecoder + +#endif // SkPngRustDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkRawDecoder.h b/vendor/artifacts/skia/include/codec/SkRawDecoder.h new file mode 100644 index 000000000..1ba4f080a --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkRawDecoder.h @@ -0,0 +1,50 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkRawDecoder_DEFINED +#define SkRawDecoder_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +class SkStream; + +#include + +namespace SkRawDecoder { + +inline bool IsRaw(const void*, size_t) { + // Raw formats are tricky to detect just by reading in the first several bytes. + // For example, PIEX might need to read 10k bytes to detect Sony's arw format + // https://github.com/google/piex/blob/f1e15dd837c04347504149f71db67a78fbeddc73/src/image_type_recognition/image_type_recognition_lite.cc#L152 + // Thus, we just assume everything might be a RAW file and check it last. + return true; +} + +/** + * Attempts to decode the given bytes as a raw image. + * + * If the bytes are not a raw, returns nullptr. + * + * DecodeContext is ignored + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +// This decoder will always be checked last, no matter when it is registered. +inline constexpr SkCodecs::Decoder Decoder() { + return { "raw", IsRaw, Decode }; +} + +} // namespace SkRawDecoder + +#endif // SkRawDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkWbmpDecoder.h b/vendor/artifacts/skia/include/codec/SkWbmpDecoder.h new file mode 100644 index 000000000..eeb56e40d --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkWbmpDecoder.h @@ -0,0 +1,44 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkWbmpDecoder_DEFINED +#define SkWbmpDecoder_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +class SkStream; + +#include + +namespace SkWbmpDecoder { + +/** Returns true if this data claims to be a WBMP image. */ +SK_API bool IsWbmp(const void*, size_t); + +/** + * Attempts to decode the given bytes as a WBMP. + * + * If the bytes are not a WBMP, returns nullptr. + * + * DecodeContext is ignored + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +inline constexpr SkCodecs::Decoder Decoder() { + return { "wbmp", IsWbmp, Decode }; +} + +} // namespace SkWbmpDecoder + +#endif // SkWbmpDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/codec/SkWebpDecoder.h b/vendor/artifacts/skia/include/codec/SkWebpDecoder.h new file mode 100644 index 000000000..8eeba908d --- /dev/null +++ b/vendor/artifacts/skia/include/codec/SkWebpDecoder.h @@ -0,0 +1,51 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkWebpDecoder_DEFINED +#define SkWebpDecoder_DEFINED + +#include "include/codec/SkCodec.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +class SkStream; + +#include + +namespace SkWebpDecoder { + +/** Returns true if this data claims to be a WEBP image. */ +SK_API bool IsWebp(const void*, size_t); + +/** + * Attempts to decode the given bytes as a WEBP. + * + * If the bytes are not a WEBP, returns nullptr. + * + * DecodeContext is ignored + */ +SK_API std::unique_ptr Decode(std::unique_ptr, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); +SK_API std::unique_ptr Decode(sk_sp, + SkCodec::Result*, + SkCodecs::DecodeContext = nullptr); + +// TODO: remove after client migration +inline std::unique_ptr Decode(sk_sp data, + SkCodec::Result* result, + SkCodecs::DecodeContext ctx = nullptr) { + return Decode(sk_sp(static_cast(data.release())), result, ctx); +} + +inline constexpr SkCodecs::Decoder Decoder() { + return { "webp", IsWebp, Decode }; +} + +} // namespace SkWebpDecoder + +#endif // SkWebpDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/config/BUILD.bazel b/vendor/artifacts/skia/include/config/BUILD.bazel new file mode 100644 index 000000000..bd767495b --- /dev/null +++ b/vendor/artifacts/skia/include/config/BUILD.bazel @@ -0,0 +1,27 @@ +load("@rules_cc//cc:cc_library.bzl", "cc_library") + +licenses(["notice"]) + +exports_files( + ["SkUserConfig.h"], + visibility = ["//visibility:public"], +) + +config_setting( + name = "debug_build", + values = {"compilation_mode": "dbg"}, +) + +cc_library( + name = "user_config", + hdrs = [ + "SkUserConfig.h", + ], + defines = [ + "SK_USE_BAZEL_CONFIG_HEADER", + ] + select({ + ":debug_build": ["SK_DEBUG"], + "//conditions:default": ["SK_RELEASE"], + }), + visibility = ["//visibility:public"], +) diff --git a/vendor/artifacts/skia/include/config/MODULE.bazel b/vendor/artifacts/skia/include/config/MODULE.bazel new file mode 100644 index 000000000..071661e7b --- /dev/null +++ b/vendor/artifacts/skia/include/config/MODULE.bazel @@ -0,0 +1,5 @@ +module( + name = "skia_user_config", +) + +bazel_dep(name = "rules_cc", version = "0.1.1") diff --git a/vendor/artifacts/skia/include/config/OWNERS b/vendor/artifacts/skia/include/config/OWNERS new file mode 100644 index 000000000..25b714bb2 --- /dev/null +++ b/vendor/artifacts/skia/include/config/OWNERS @@ -0,0 +1,2 @@ +bungeman@google.com +kjlubick@google.com \ No newline at end of file diff --git a/vendor/artifacts/skia/include/config/SkUserConfig.h b/vendor/artifacts/skia/include/config/SkUserConfig.h new file mode 100644 index 000000000..1af3e0cb4 --- /dev/null +++ b/vendor/artifacts/skia/include/config/SkUserConfig.h @@ -0,0 +1,141 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkUserConfig_DEFINED +#define SkUserConfig_DEFINED + +/* SkTypes.h, the root of the public header files, includes this file + SkUserConfig.h after first initializing certain Skia defines, letting + this file change or augment those flags. + + Below are optional defines that add, subtract, or change default behavior + in Skia. Your port can locally edit this file to enable/disable flags as + you choose, or these can be declared on your command line (i.e. -Dfoo). + + By default, this #include file will always default to having all the flags + commented out, so including it will have no effect. +*/ + +/////////////////////////////////////////////////////////////////////////////// + +/* Skia has lots of debug-only code. Often this is just null checks or other + parameter checking, but sometimes it can be quite intrusive (e.g. check that + each 32bit pixel is in premultiplied form). This code can be very useful + during development, but will slow things down in a shipping product. + + By default, these mutually exclusive flags are defined in SkTypes.h, + based on the presence or absence of NDEBUG, but that decision can be changed + here. +*/ +//#define SK_DEBUG +//#define SK_RELEASE + +/* To write debug messages to a console, skia will call SkDebugf(...) following + printf conventions (e.g. const char* format, ...). If you want to redirect + this to something other than printf, define yours here +*/ +//#define SkDebugf(...) MyFunction(__VA_ARGS__) + +/* Skia has both debug and release asserts. When an assert fails SK_ABORT will + be used to report an abort message. SK_ABORT is expected not to return. Skia + provides a default implementation which will print the message with SkDebugf + and then call sk_abort_no_print. +*/ +//#define SK_ABORT(message, ...) + +/* To specify a different default font strike cache memory limit, define this. If this is + undefined, skia will use a built-in value. +*/ +//#define SK_DEFAULT_FONT_CACHE_LIMIT (1024 * 1024) + +/* To specify a different default font strike cache count limit, define this. If this is + undefined, skia will use a built-in value. +*/ +// #define SK_DEFAULT_FONT_CACHE_COUNT_LIMIT 2048 + +/* To specify the default size of the image cache, undefine this and set it to + the desired value (in bytes). SkGraphics.h as a runtime API to set this + value as well. If this is undefined, a built-in value will be used. +*/ +//#define SK_DEFAULT_IMAGE_CACHE_LIMIT (1024 * 1024) + +/* Define this to set the upper limit for text to support LCD. Values that + are very large increase the cost in the font cache and draw slower, without + improving readability. If this is undefined, Skia will use its default + value (e.g. 48) +*/ +//#define SK_MAX_SIZE_FOR_LCDTEXT 48 + +/* Change the kN32_SkColorType ordering to BGRA to work in X windows. +*/ +//#define SK_R32_SHIFT 16 + +/* This controls how much space should be pre-allocated in an SkCanvas object + to store the SkMatrix and clip via calls to SkCanvas::save() (and balanced with + SkCanvas::restore()). +*/ +//#define SK_CANVAS_SAVE_RESTORE_PREALLOC_COUNT 32 + +/* Skia makes use of histogram logging macros to trace the frequency of + events. By default, Skia provides no-op versions of these macros. + Skia consumers can provide their own definitions of these macros to + integrate with their histogram collection backend. +*/ +//#define SK_HISTOGRAM_BOOLEAN(name, sample) +//#define SK_HISTOGRAM_ENUMERATION(name, sampleEnum, enumSize) +//#define SK_HISTOGRAM_EXACT_LINEAR(name, sample, valueMax) +//#define SK_HISTOGRAM_CUSTOM_EXACT_LINEAR(name, sample, value_min, value_max, bucket_count) +//#define SK_HISTOGRAM_MEMORY_KB(name, sample) +//#define SK_HISTOGRAM_CUSTOM_COUNTS(name, sample, countMin, countMax, bucketCount) +//#define SK_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(name, sampleUSec, minUSec, maxUSec, bucketCount) + +/* + * Skia can provide extensive logging of Graphite Pipeline lifetimes. + */ +//#define SK_PIPELINE_LIFETIME_LOGGING + +// To use smaller but slower mipmap builder +//#define SK_USE_DRAWING_MIPMAP_DOWNSAMPLER + +/* Skia tries to make use of some non-standard C++ language extensions. + By default, Skia provides msvc and clang/gcc versions of these macros. + Skia consumers can provide their own definitions of these macros to + integrate with their own compilers and build system. +*/ +//#define SK_ALWAYS_INLINE inline __attribute__((always_inline)) +//#define SK_NEVER_INLINE __attribute__((noinline)) +//#define SK_PRINTF_LIKE(A, B) __attribute__((format(printf, (A), (B)))) +//#define SK_NO_SANITIZE(A) __attribute__((no_sanitize(A))) +//#define SK_TRIVIAL_ABI [[clang::trivial_abi]] + +/* + * If compiling Skia as a DLL, public APIs should be exported. Skia will set + * SK_API to something sensible for Clang and MSVC, but if clients need to + * customize it for their build system or compiler, they may. + * If a client needs to use SK_API (e.g. overriding SK_ABORT), then they + * *must* define their own, the default will not be defined prior to loading + * this file. + */ +//#define SK_API __declspec(dllexport) + +/* + * If using DNG support, set the version of the dng_sdk being compiled against here + * following the versioning scheme of dng_tag_valus.h + * eg, DNG 1.4 is 0x01040000, DNG 1.7.1 is 0x01070100, etc... + * If unspecified, DNG SDK 1.4 is assumed + */ +// #define SK_DNG_VERSION 0x01040000 + +/* + * By default, Skia uses SIMD operations for many internal calculations, especially + * for the CPU backend. These defines can be set to disable SIMD in SkVx and + * SkRasterPipeline, respectively. + */ +// #define SKVX_DISABLE_SIMD +// #define SKRP_CPU_SCALAR + +#endif diff --git a/vendor/artifacts/skia/include/config/WORKSPACE.bazel b/vendor/artifacts/skia/include/config/WORKSPACE.bazel new file mode 100644 index 000000000..aa3d6b65d --- /dev/null +++ b/vendor/artifacts/skia/include/config/WORKSPACE.bazel @@ -0,0 +1,3 @@ +# This empty workspace file lets the SkUserConfig.h file be defined separately from Skia itself. +# Clients can more easily set their own #defines, copts, and linkopts when building Skia using +# Bazel. diff --git a/vendor/artifacts/skia/include/config/copts.bzl b/vendor/artifacts/skia/include/config/copts.bzl new file mode 100644 index 000000000..c23d42eac --- /dev/null +++ b/vendor/artifacts/skia/include/config/copts.bzl @@ -0,0 +1,181 @@ +""" +THIS IS THE EXTERNAL-ONLY VERSION OF THIS FILE. G3 HAS ITS OWN. + +This file contains flags for the C++ compiler, referred to by Bazel as copts. + +The copts in a cc_library do not flow to the children (dependencies) nor the parents +(dependents), so we use skia_cc_library to inject them in every library along the chain. + +Now that we have a modular build, this file could maybe go away and folded into our toolchains. + +They are divided into several lists/selects and were initially created to be identical to the + GN ones [2][3]. + +[2] https://github.com/google/skia/blob/2b07cdb07e88f2870260eabac708f31bc7977d08/gn/BUILDCONFIG.gn#L177-L181 +[3] https://github.com/google/skia/blob/2b07cdb07e88f2870260eabac708f31bc7977d08/gn/skia/BUILD.gn#L593-L630 +""" + +CORE_COPTS = [ + "-fstrict-aliasing", +] + select({ + "@platforms//os:android": [], + "//conditions:default": [ + # On Android, this option causes the linker to fail + # (e.g. "undefined reference to `SkString::data()'"). + "-fvisibility=hidden", + ], +}) + select({ + "@platforms//os:windows": [], + "//conditions:default": [ + # In Clang 14, this default was changed. We turn this off to (hopefully) make our + # GMs more consistent and avoid some floating-point related test failures on M1 macs. + "-ffp-contract=off", + # Windows doesn't support position-independent code. + "-fPIC", + ], +}) + select({ + # Turning off RTTI reduces code size, but is necessary for connecting C++ + # and Objective-C code. + "@platforms//os:macos": [], + "@platforms//os:ios": [], + "//conditions:default": [ + "-fno-rtti", + ], +}) + +OPT_LEVEL = select({ + "//bazel/common_config_settings:debug_build": [ + "--optimize=0", + "--debug", + ], + "//bazel/common_config_settings:release_build": [ + "--optimize=3", + # Strip dead code (in conjunction with linkopts) + "-fdata-sections", + "-ffunction-sections", + ], + "//bazel/common_config_settings:fast_build": [ + "--optimize=0", + "-gline-tables-only", + ], +}) + +WARNINGS = [ + "-fcolor-diagnostics", + "-Wall", + "-Werror", + "-Weverything", + "-Wextra", + "-Wpointer-arith", + "-Wsign-compare", + "-Wvla", + #### Warnings we are unlikely to fix #### + "-Wno-c++98-compat", + "-Wno-c++98-compat-pedantic", + "-Wno-covered-switch-default", + "-Wno-declaration-after-statement", + "-Wno-deprecated", + "-Wno-missing-noreturn", + "-Wno-newline-eof", + "-Wno-old-style-cast", + "-Wno-padded", + "-Wno-psabi", # noisy + "-Wno-return-std-move-in-c++11", + "-Wno-shadow-field-in-constructor", + "-Wno-shadow-uncaptured-local", + "-Wno-switch-default", # Warns even when all values are covered + "-Wno-undefined-func-template", + "-Wno-unused-parameter", # It is common to have unused parameters in src/ + "-Wno-zero-as-null-pointer-constant", # VK_NULL_HANDLE is defined as 0 + "-Wno-unsafe-buffer-usage", + #### Warnings we would like to fix #### + "-Wno-abstract-vbase-init", + "-Wno-cast-align", + "-Wno-cast-function-type-strict", + "-Wno-cast-qual", + "-Wno-class-varargs", + "-Wno-conversion", # -Wsign-conversion re-enabled for header sources + "-Wno-disabled-macro-expansion", + "-Wno-documentation", + "-Wno-documentation-unknown-command", + "-Wno-double-promotion", + "-Wno-exit-time-destructors", # TODO: OK outside libskia + "-Wno-float-equal", + "-Wno-global-constructors", # TODO: OK outside libskia + "-Wno-missing-prototypes", + "-Wno-missing-variable-declarations", + "-Wno-nrvo", + "-Wno-pedantic", + "-Wno-reserved-id-macro", + "-Wno-reserved-identifier", + "-Wno-shift-sign-overflow", + "-Wno-signed-enum-bitfield", + "-Wno-switch-enum", + "-Wno-thread-safety-negative", + "-Wno-undef", + "-Wno-unreachable-code-break", + "-Wno-unreachable-code-return", + "-Wno-unused-macros", + "-Wno-unused-member-function", + "-Wno-weak-template-vtables", # This was deprecated in Clang 14 and removed in Clang 15. + "-Wno-weak-vtables", + # https://quuxplusone.github.io/blog/2020/08/26/wrange-loop-analysis/ + # https://bugzilla.mozilla.org/show_bug.cgi?id=1683213 + # https://reviews.llvm.org/D73007 + # May be re-enabled once clang > 12 or XCode > 12 are required. + # When this line is removed the -Wrange-loop-construct line below can also be removed. + "-Wno-range-loop-analysis", + # Wno-range-loop-analysis turns off the whole group, but this warning was later split into + # range-loop-construct and range-loop-bind-reference. We want the former but not the latter. + # Created from + # https://github.com/llvm/llvm-project/blob/bd08f413c089da5a56438cc8902f60df91a08a66/clang/include/clang/Basic/DiagnosticGroups.td + "-Wrange-loop-construct", + # Wno-deprecated turns off the whole group, but also has its own warnings like + # out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated [-Werror,-Wdeprecated] + # but we would like others. Created from + # https://github.com/llvm/llvm-project/blob/bd08f413c089da5a56438cc8902f60df91a08a66/clang/include/clang/Basic/DiagnosticGroups.td + "-Wdeprecated-anon-enum-enum-conversion", + "-Wdeprecated-array-compare", + "-Wdeprecated-attributes", + "-Wdeprecated-comma-subscript", + "-Wdeprecated-copy", + "-Wdeprecated-copy-dtor", + "-Wdeprecated-dynamic-exception-spec", + "-Wdeprecated-enum-compare", + "-Wdeprecated-enum-compare-conditional", + "-Wdeprecated-enum-enum-conversion", + "-Wdeprecated-enum-float-conversion", + "-Wdeprecated-increment-bool", + "-Wdeprecated-register", + "-Wdeprecated-this-capture", + "-Wdeprecated-volatile", + "-Wdeprecated-writable-strings", + # Shows up in imgui's public headers a bunch + "-Wno-nontrivial-memcall", + # A catch-all for when the version of clang we are using does not have the prior options + "-Wno-unknown-warning-option", + # Skia must be compiled with C++20 now. + "-Wno-c++20-compat", +] + select({ + "@platforms//os:windows": [ + # skbug.com/40045281 + "-Wno-nonportable-system-include-path", + "-Wno-unknown-argument", + # Clang warns even when all enum values are covered. + "-Wno-switch-default", + # The Windows build fails without these options: + "-Wno-extra-semi-stmt", + "-Wno-invalid-constexpr", + "-D_CRT_USE_BUILTIN_OFFSETOF", + ], + "//conditions:default": [], +}) + +DEFAULT_COPTS = CORE_COPTS + OPT_LEVEL + WARNINGS + +OBJC_COPTS = [ + "-Wno-direct-ivar-access", + "-Wno-objc-interface-ivars", +] + +DEFAULT_OBJC_COPTS = DEFAULT_COPTS + OBJC_COPTS diff --git a/vendor/artifacts/skia/include/config/linkopts.bzl b/vendor/artifacts/skia/include/config/linkopts.bzl new file mode 100644 index 000000000..1e9d60445 --- /dev/null +++ b/vendor/artifacts/skia/include/config/linkopts.bzl @@ -0,0 +1,35 @@ +""" +THIS IS THE EXTERNAL-ONLY VERSION OF THIS FILE. G3 HAS ITS OWN. + +This file contains flags for the C++ linker, referred to by Bazel as linkopts. + +Now that we have a modular build, this file could maybe go away and folded into our toolchains. + +""" + +CORE_LINKOPTS = select({ + "@platforms//os:android": [ + "-landroid", + "-ldl", + "-llog", # Provides __android_log_vprint, needed by //src/ports/SkLog_android.cpp. + ], + "//conditions:default": [], +}) + +OPT_LEVEL = select({ + "//bazel/common_config_settings:debug_build": [], + "//bazel/common_config_settings:fast_build_linux": [ + "-Wl,--strip-debug", + ], + "//bazel/common_config_settings:fast_build_mac": [], + "//bazel/common_config_settings:release_build_mac": [ + "-dead_strip", + ], + "//bazel/common_config_settings:release_build_linux": [ + "-Wl,--gc-sections", + "-Wl,--strip-all", + ], + "//conditions:default": [], +}) + +DEFAULT_LINKOPTS = CORE_LINKOPTS + OPT_LEVEL diff --git a/vendor/artifacts/skia/include/core/BUILD.bazel b/vendor/artifacts/skia/include/core/BUILD.bazel new file mode 100644 index 000000000..392710e3e --- /dev/null +++ b/vendor/artifacts/skia/include/core/BUILD.bazel @@ -0,0 +1,127 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "SkAlphaType.h", + "SkAnnotation.h", + "SkArc.h", + "SkBBHFactory.h", + "SkBitmap.h", + "SkBlendMode.h", + "SkBlender.h", + "SkBlurTypes.h", + "SkCPUContext.h", + "SkCPURecorder.h", + "SkCanvas.h", + "SkCanvasVirtualEnforcer.h", + "SkCapabilities.h", + "SkClipOp.h", + "SkColor.h", + "SkColorFilter.h", + "SkColorSpace.h", + "SkColorTable.h", + "SkColorType.h", + "SkContourMeasure.h", + "SkCoverageMode.h", + "SkCubicMap.h", + "SkData.h", + "SkDataTable.h", + "SkDocument.h", + "SkDrawable.h", + "SkExecutor.h", + "SkFlattenable.h", + "SkFont.h", + "SkFontArguments.h", + "SkFontMetrics.h", + "SkFontMgr.h", + "SkFontParameters.h", + "SkFontScanner.h", + "SkFontStyle.h", + "SkFontTypes.h", + "SkFourByteTag.h", + "SkGraphics.h", + "SkImage.h", + "SkImageFilter.h", + "SkImageGenerator.h", + "SkImageInfo.h", + "SkM44.h", + "SkMallocPixelRef.h", + "SkMaskFilter.h", + "SkMatrix.h", + "SkMesh.h", + "SkMilestone.h", + "SkOpenTypeSVGDecoder.h", + "SkOverdrawCanvas.h", + "SkPaint.h", + "SkPath.h", + "SkPathBuilder.h", + "SkPathEffect.h", + "SkPathIter.h", + "SkPathMeasure.h", + "SkPathTypes.h", + "SkPathUtils.h", + "SkPicture.h", + "SkPictureRecorder.h", + "SkPixelRef.h", + "SkPixmap.h", + "SkPoint.h", + "SkPoint3.h", + "SkRRect.h", + "SkRSXform.h", + "SkRasterHandleAllocator.h", + "SkRecorder.h", + "SkRect.h", + "SkRefCnt.h", + "SkRegion.h", + "SkSamplingOptions.h", + "SkScalar.h", + "SkSerialProcs.h", + "SkShader.h", + "SkSize.h", + "SkSpan.h", + "SkStream.h", + "SkString.h", + "SkStrikeRef.h", + "SkStrokeRec.h", + "SkSurface.h", + "SkSurfaceProps.h", + "SkSwizzle.h", + "SkTextBlob.h", + "SkTextureCompressionType.h", + "SkTileMode.h", + "SkTiledImageUtils.h", + "SkTraceMemoryDump.h", + "SkTypeface.h", + "SkTypes.h", + "SkUnPreMultiply.h", + "SkVertices.h", + "SkYUVAInfo.h", + "SkYUVAPixmaps.h", +] + +skia_filegroup( + name = "core_hdrs", + srcs = PUBLIC_HEADERS, + visibility = ["//src/core:__pkg__"], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) + +skia_filegroup( + name = "opts_srcs", + srcs = [ + "SkAlphaType.h", + "SkColor.h", + "SkScalar.h", + "SkTypes.h", + ], + visibility = ["//src/opts:__pkg__"], +) diff --git a/vendor/artifacts/skia/include/core/SkAlphaType.h b/vendor/artifacts/skia/include/core/SkAlphaType.h new file mode 100644 index 000000000..0c99906df --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkAlphaType.h @@ -0,0 +1,45 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAlphaType_DEFINED +#define SkAlphaType_DEFINED + +/** \enum SkAlphaType + Describes how to interpret the alpha component of a pixel. A pixel may + be opaque, or alpha, describing multiple levels of transparency. + + In simple blending, alpha weights the draw color and the destination + color to create a new color. If alpha describes a weight from zero to one: + + new color = draw color * alpha + destination color * (1 - alpha) + + In practice alpha is encoded in two or more bits, where 1.0 equals all bits set. + + RGB may have alpha included in each component value; the stored + value is the original RGB multiplied by alpha. Premultiplied color + components improve performance. +*/ +enum SkAlphaType : int { + kUnknown_SkAlphaType, //!< uninitialized + kOpaque_SkAlphaType, //!< pixel is opaque + kPremul_SkAlphaType, //!< pixel components are premultiplied by alpha + kUnpremul_SkAlphaType, //!< pixel components are independent of alpha + kLastEnum_SkAlphaType = kUnpremul_SkAlphaType, //!< last valid value +}; + +/** Returns true if SkAlphaType equals kOpaque_SkAlphaType. + + kOpaque_SkAlphaType is a hint that the SkColorType is opaque, or that all + alpha values are set to their 1.0 equivalent. If SkAlphaType is + kOpaque_SkAlphaType, and SkColorType is not opaque, then the result of + drawing any pixel with a alpha value less than 1.0 is undefined. +*/ +static inline bool SkAlphaTypeIsOpaque(SkAlphaType at) { + return kOpaque_SkAlphaType == at; +} + +#endif diff --git a/vendor/artifacts/skia/include/core/SkAnnotation.h b/vendor/artifacts/skia/include/core/SkAnnotation.h new file mode 100644 index 000000000..2006f309e --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkAnnotation.h @@ -0,0 +1,52 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAnnotation_DEFINED +#define SkAnnotation_DEFINED + +#include "include/core/SkTypes.h" + +class SkData; +struct SkPoint; +struct SkRect; +class SkCanvas; + +/** + * Annotate the canvas by associating the specified URL with the + * specified rectangle (in local coordinates, just like drawRect). + * + * The URL is expected to be escaped and be valid 7-bit ASCII. + * + * If the backend of this canvas does not support annotations, this call is + * safely ignored. + * + * The caller is responsible for managing its ownership of the SkData. + */ +SK_API void SkAnnotateRectWithURL(SkCanvas*, const SkRect&, SkData*); + +/** + * Annotate the canvas by associating a name with the specified point. + * + * If the backend of this canvas does not support annotations, this call is + * safely ignored. + * + * The caller is responsible for managing its ownership of the SkData. + */ +SK_API void SkAnnotateNamedDestination(SkCanvas*, const SkPoint&, SkData*); + +/** + * Annotate the canvas by making the specified rectangle link to a named + * destination. + * + * If the backend of this canvas does not support annotations, this call is + * safely ignored. + * + * The caller is responsible for managing its ownership of the SkData. + */ +SK_API void SkAnnotateLinkToDestination(SkCanvas*, const SkRect&, SkData*); + +#endif diff --git a/vendor/artifacts/skia/include/core/SkArc.h b/vendor/artifacts/skia/include/core/SkArc.h new file mode 100644 index 000000000..9e530ebd2 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkArc.h @@ -0,0 +1,69 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkArc_DEFINED +#define SkArc_DEFINED + +#include "include/core/SkRect.h" +#include "include/core/SkScalar.h" + +// Represents an arc along an oval boundary, or a closed wedge of the oval. +struct SkArc { + enum class Type : bool { + kArc, // An arc along the perimeter of the oval + kWedge // A closed wedge that includes the oval's center + }; + + SkArc() = default; + SkArc(const SkArc& arc) = default; + SkArc& operator=(const SkArc& arc) = default; + + const SkRect& oval() const { return fOval; } + SkScalar startAngle() const { return fStartAngle; } + SkScalar sweepAngle() const { return fSweepAngle; } + bool isWedge() const { return fType == Type::kWedge; } + + friend bool operator==(const SkArc& a, const SkArc& b) { + return a.fOval == b.fOval && a.fStartAngle == b.fStartAngle && + a.fSweepAngle == b.fSweepAngle && a.fType == b.fType; + } + + friend bool operator!=(const SkArc& a, const SkArc& b) { return !(a == b); } + + // Preferred factory that explicitly states which type of arc + static SkArc Make(const SkRect& oval, + SkScalar startAngleDegrees, + SkScalar sweepAngleDegrees, + Type type) { + return SkArc(oval, startAngleDegrees, sweepAngleDegrees, type); + } + + // Deprecated factory to assist with legacy code based on `useCenter` + static SkArc Make(const SkRect& oval, + SkScalar startAngleDegrees, + SkScalar sweepAngleDegrees, + bool useCenter) { + return SkArc( + oval, startAngleDegrees, sweepAngleDegrees, useCenter ? Type::kWedge : Type::kArc); + } + + // Bounds of oval containing the arc. + SkRect fOval = SkRect::MakeEmpty(); + + // Angle in degrees where the arc begins. Zero means horizontally to the right. + SkScalar fStartAngle = 0; + // Sweep angle in degrees; positive is clockwise. + SkScalar fSweepAngle = 0; + + Type fType = Type::kArc; + +private: + SkArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, Type type) + : fOval(oval), fStartAngle(startAngle), fSweepAngle(sweepAngle), fType(type) {} +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkBBHFactory.h b/vendor/artifacts/skia/include/core/SkBBHFactory.h new file mode 100644 index 000000000..5d9f9009a --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkBBHFactory.h @@ -0,0 +1,67 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkBBHFactory_DEFINED +#define SkBBHFactory_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +// TODO(kjlubick) fix client users and then make this a forward declare +#include "include/core/SkRect.h" // IWYU pragma: keep + +#include +#include + +class SkBBoxHierarchy : public SkRefCnt { +public: + struct Metadata { + bool isDraw; // The corresponding SkRect bounds a draw command, not a pure state change. + }; + + /** + * Insert N bounding boxes into the hierarchy. + */ + virtual void insert(const SkRect[], int N) = 0; + virtual void insert(const SkRect[], const Metadata[], int N); + + /** + * Populate results with the indices of bounding boxes intersecting that query. + */ + virtual void search(const SkRect& query, std::vector* results) const = 0; + + /** + * Return approximate size in memory of *this. + */ + virtual size_t bytesUsed() const = 0; + +protected: + SkBBoxHierarchy() = default; + SkBBoxHierarchy(const SkBBoxHierarchy&) = delete; + SkBBoxHierarchy& operator=(const SkBBoxHierarchy&) = delete; +}; + +class SK_API SkBBHFactory { +public: + /** + * Allocate a new SkBBoxHierarchy. Return NULL on failure. + */ + virtual sk_sp operator()() const = 0; + virtual ~SkBBHFactory() {} + +protected: + SkBBHFactory() = default; + SkBBHFactory(const SkBBHFactory&) = delete; + SkBBHFactory& operator=(const SkBBHFactory&) = delete; +}; + +class SK_API SkRTreeFactory : public SkBBHFactory { +public: + sk_sp operator()() const override; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkBitmap.h b/vendor/artifacts/skia/include/core/SkBitmap.h new file mode 100644 index 000000000..fcd590346 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkBitmap.h @@ -0,0 +1,1264 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkBitmap_DEFINED +#define SkBitmap_DEFINED + +#include "include/core/SkAlphaType.h" +#include "include/core/SkColor.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkPixmap.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSamplingOptions.h" +#include "include/core/SkSize.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkCPUTypes.h" +#include "include/private/base/SkDebug.h" + +#include +#include + +class SkColorSpace; +class SkImage; +class SkMatrix; +class SkPaint; +class SkPixelRef; +class SkShader; +enum SkColorType : int; +enum class SkTileMode; + +/** \class SkBitmap + SkBitmap describes a two-dimensional raster pixel array. SkBitmap is built on + SkImageInfo, containing integer width and height, SkColorType and SkAlphaType + describing the pixel format, and SkColorSpace describing the range of colors. + SkBitmap points to SkPixelRef, which describes the physical array of pixels. + SkImageInfo bounds may be located anywhere fully inside SkPixelRef bounds. + + SkBitmap can be drawn using SkCanvas. SkBitmap can be a drawing destination for SkCanvas + draw member functions. SkBitmap flexibility as a pixel container limits some + optimizations available to the target platform. + + If pixel array is primarily read-only, use SkImage for better performance. + If pixel array is primarily written to, use SkSurface for better performance. + + Declaring SkBitmap const prevents altering SkImageInfo: the SkBitmap height, width, + and so on cannot change. It does not affect SkPixelRef: a caller may write its + pixels. Declaring SkBitmap const affects SkBitmap configuration, not its contents. + + SkBitmap is not thread safe. Each thread must have its own copy of SkBitmap fields, + although threads may share the underlying pixel array. +*/ +class SK_API SkBitmap { +public: + class SK_API Allocator; + + /** Creates an empty SkBitmap without pixels, with kUnknown_SkColorType, + kUnknown_SkAlphaType, and with a width and height of zero. SkPixelRef origin is + set to (0, 0). + + Use setInfo() to associate SkColorType, SkAlphaType, width, and height + after SkBitmap has been created. + + @return empty SkBitmap + + example: https://fiddle.skia.org/c/@Bitmap_empty_constructor + */ + SkBitmap(); + + /** Copies settings from src to returned SkBitmap. Shares pixels if src has pixels + allocated, so both bitmaps reference the same pixels. + + @param src SkBitmap to copy SkImageInfo, and share SkPixelRef + @return copy of src + + example: https://fiddle.skia.org/c/@Bitmap_copy_const_SkBitmap + */ + SkBitmap(const SkBitmap& src); + + /** Copies settings from src to returned SkBitmap. Moves ownership of src pixels to + SkBitmap. + + @param src SkBitmap to copy SkImageInfo, and reassign SkPixelRef + @return copy of src + + example: https://fiddle.skia.org/c/@Bitmap_move_SkBitmap + */ + SkBitmap(SkBitmap&& src); + + /** Decrements SkPixelRef reference count, if SkPixelRef is not nullptr. + */ + ~SkBitmap(); + + /** Copies settings from src to returned SkBitmap. Shares pixels if src has pixels + allocated, so both bitmaps reference the same pixels. + + @param src SkBitmap to copy SkImageInfo, and share SkPixelRef + @return copy of src + + example: https://fiddle.skia.org/c/@Bitmap_copy_operator + */ + SkBitmap& operator=(const SkBitmap& src); + + /** Copies settings from src to returned SkBitmap. Moves ownership of src pixels to + SkBitmap. + + @param src SkBitmap to copy SkImageInfo, and reassign SkPixelRef + @return copy of src + + example: https://fiddle.skia.org/c/@Bitmap_move_operator + */ + SkBitmap& operator=(SkBitmap&& src); + + /** Swaps the fields of the two bitmaps. + + @param other SkBitmap exchanged with original + + example: https://fiddle.skia.org/c/@Bitmap_swap + */ + void swap(SkBitmap& other); + + /** Returns a constant reference to the SkPixmap holding the SkBitmap pixel + address, row bytes, and SkImageInfo. + + @return reference to SkPixmap describing this SkBitmap + */ + const SkPixmap& pixmap() const { return fPixmap; } + + /** Returns width, height, SkAlphaType, SkColorType, and SkColorSpace. + + @return reference to SkImageInfo + */ + const SkImageInfo& info() const { return fPixmap.info(); } + + /** Returns pixel count in each row. Should be equal or less than + rowBytes() / info().bytesPerPixel(). + + May be less than pixelRef().width(). Will not exceed pixelRef().width() less + pixelRefOrigin().fX. + + @return pixel width in SkImageInfo + */ + int width() const { return fPixmap.width(); } + + /** Returns pixel row count. + + Maybe be less than pixelRef().height(). Will not exceed pixelRef().height() less + pixelRefOrigin().fY. + + @return pixel height in SkImageInfo + */ + int height() const { return fPixmap.height(); } + + SkColorType colorType() const { return fPixmap.colorType(); } + + SkAlphaType alphaType() const { return fPixmap.alphaType(); } + + /** Returns SkColorSpace, the range of colors, associated with SkImageInfo. The + reference count of SkColorSpace is unchanged. The returned SkColorSpace is + immutable. + + @return SkColorSpace in SkImageInfo, or nullptr + */ + SkColorSpace* colorSpace() const; + + /** Returns smart pointer to SkColorSpace, the range of colors, associated with + SkImageInfo. The smart pointer tracks the number of objects sharing this + SkColorSpace reference so the memory is released when the owners destruct. + + The returned SkColorSpace is immutable. + + @return SkColorSpace in SkImageInfo wrapped in a smart pointer + */ + sk_sp refColorSpace() const; + + /** Returns number of bytes per pixel required by SkColorType. + Returns zero if colorType( is kUnknown_SkColorType. + + @return bytes in pixel + */ + int bytesPerPixel() const { return fPixmap.info().bytesPerPixel(); } + + /** Returns number of pixels that fit on row. Should be greater than or equal to + width(). + + @return maximum pixels per row + */ + int rowBytesAsPixels() const { return fPixmap.rowBytesAsPixels(); } + + /** Returns bit shift converting row bytes to row pixels. + Returns zero for kUnknown_SkColorType. + + @return one of: 0, 1, 2, 3; left shift to convert pixels to bytes + */ + int shiftPerPixel() const { return fPixmap.shiftPerPixel(); } + + /** Returns true if either width() or height() are zero. + + Does not check if SkPixelRef is nullptr; call drawsNothing() to check width(), + height(), and SkPixelRef. + + @return true if dimensions do not enclose area + */ + bool empty() const { return fPixmap.info().isEmpty(); } + + /** Returns true if SkPixelRef is nullptr. + + Does not check if width() or height() are zero; call drawsNothing() to check + width(), height(), and SkPixelRef. + + @return true if no SkPixelRef is associated + */ + bool isNull() const { return nullptr == fPixelRef; } + + /** Returns true if width() or height() are zero, or if SkPixelRef is nullptr. + If true, SkBitmap has no effect when drawn or drawn into. + + @return true if drawing has no effect + */ + bool drawsNothing() const { + return this->empty() || this->isNull(); + } + + /** Returns row bytes, the interval from one pixel row to the next. Row bytes + is at least as large as: width() * info().bytesPerPixel(). + + Returns zero if colorType() is kUnknown_SkColorType, or if row bytes supplied to + setInfo() is not large enough to hold a row of pixels. + + @return byte length of pixel row + */ + size_t rowBytes() const { return fPixmap.rowBytes(); } + + /** Sets SkAlphaType, if alphaType is compatible with SkColorType. + Returns true unless alphaType is kUnknown_SkAlphaType and current SkAlphaType + is not kUnknown_SkAlphaType. + + Returns true if SkColorType is kUnknown_SkColorType. alphaType is ignored, and + SkAlphaType remains kUnknown_SkAlphaType. + + Returns true if SkColorType is kRGB_565_SkColorType or kGray_8_SkColorType. + alphaType is ignored, and SkAlphaType remains kOpaque_SkAlphaType. + + If SkColorType is kARGB_4444_SkColorType, kRGBA_8888_SkColorType, + kBGRA_8888_SkColorType, or kRGBA_F16_SkColorType: returns true unless + alphaType is kUnknown_SkAlphaType and SkAlphaType is not kUnknown_SkAlphaType. + If SkAlphaType is kUnknown_SkAlphaType, alphaType is ignored. + + If SkColorType is kAlpha_8_SkColorType, returns true unless + alphaType is kUnknown_SkAlphaType and SkAlphaType is not kUnknown_SkAlphaType. + If SkAlphaType is kUnknown_SkAlphaType, alphaType is ignored. If alphaType is + kUnpremul_SkAlphaType, it is treated as kPremul_SkAlphaType. + + This changes SkAlphaType in SkPixelRef; all bitmaps sharing SkPixelRef + are affected. + + @return true if SkAlphaType is set + + example: https://fiddle.skia.org/c/@Bitmap_setAlphaType + */ + bool setAlphaType(SkAlphaType alphaType); + + /** Sets the SkColorSpace associated with this SkBitmap. + + The raw pixel data is not altered by this call; no conversion is + performed. + + This changes SkColorSpace in SkPixelRef; all bitmaps sharing SkPixelRef + are affected. + */ + void setColorSpace(sk_sp colorSpace); + + /** Returns pixel address, the base address corresponding to the pixel origin. + + @return pixel address + */ + void* getPixels() const { return fPixmap.writable_addr(); } + + /** Returns minimum memory required for pixel storage. + Does not include unused memory on last row when rowBytesAsPixels() exceeds width(). + Returns SIZE_MAX if result does not fit in size_t. + Returns zero if height() or width() is 0. + Returns height() times rowBytes() if colorType() is kUnknown_SkColorType. + + @return size in bytes of image buffer + */ + size_t computeByteSize() const { return fPixmap.computeByteSize(); } + + /** Returns true if pixels can not change. + + Most immutable SkBitmap checks trigger an assert only on debug builds. + + @return true if pixels are immutable + + example: https://fiddle.skia.org/c/@Bitmap_isImmutable + */ + bool isImmutable() const; + + /** Sets internal flag to mark SkBitmap as immutable. Once set, pixels can not change. + Any other bitmap sharing the same SkPixelRef are also marked as immutable. + Once SkPixelRef is marked immutable, the setting cannot be cleared. + + Writing to immutable SkBitmap pixels triggers an assert on debug builds. + + example: https://fiddle.skia.org/c/@Bitmap_setImmutable + */ + void setImmutable(); + + /** Returns true if SkAlphaType is set to hint that all pixels are opaque; their + alpha value is implicitly or explicitly 1.0. If true, and all pixels are + not opaque, Skia may draw incorrectly. + + Does not check if SkColorType allows alpha, or if any pixel value has + transparency. + + @return true if SkImageInfo SkAlphaType is kOpaque_SkAlphaType + */ + bool isOpaque() const { + return SkAlphaTypeIsOpaque(this->alphaType()); + } + + /** Resets to its initial state; all fields are set to zero, as if SkBitmap had + been initialized by SkBitmap(). + + Sets width, height, row bytes to zero; pixel address to nullptr; SkColorType to + kUnknown_SkColorType; and SkAlphaType to kUnknown_SkAlphaType. + + If SkPixelRef is allocated, its reference count is decreased by one, releasing + its memory if SkBitmap is the sole owner. + + example: https://fiddle.skia.org/c/@Bitmap_reset + */ + void reset(); + + /** Returns true if all pixels are opaque. SkColorType determines how pixels + are encoded, and whether pixel describes alpha. Returns true for SkColorType + without alpha in each pixel; for other SkColorType, returns true if all + pixels have alpha values equivalent to 1.0 or greater. + + For SkColorType kRGB_565_SkColorType or kGray_8_SkColorType: always + returns true. For SkColorType kAlpha_8_SkColorType, kBGRA_8888_SkColorType, + kRGBA_8888_SkColorType: returns true if all pixel alpha values are 255. + For SkColorType kARGB_4444_SkColorType: returns true if all pixel alpha values are 15. + For kRGBA_F16_SkColorType: returns true if all pixel alpha values are 1.0 or + greater. + + Returns false for kUnknown_SkColorType. + + @param bm SkBitmap to check + @return true if all pixels have opaque values or SkColorType is opaque + */ + static bool ComputeIsOpaque(const SkBitmap& bm) { + return bm.pixmap().computeIsOpaque(); + } + + /** Returns SkRect { 0, 0, width(), height() }. + + @param bounds container for floating point rectangle + + example: https://fiddle.skia.org/c/@Bitmap_getBounds + */ + void getBounds(SkRect* bounds) const; + + /** Returns SkIRect { 0, 0, width(), height() }. + + @param bounds container for integral rectangle + + example: https://fiddle.skia.org/c/@Bitmap_getBounds_2 + */ + void getBounds(SkIRect* bounds) const; + + /** Returns SkIRect { 0, 0, width(), height() }. + + @return integral rectangle from origin to width() and height() + */ + SkIRect bounds() const { return fPixmap.info().bounds(); } + + /** Returns SkISize { width(), height() }. + + @return integral size of width() and height() + */ + SkISize dimensions() const { return fPixmap.info().dimensions(); } + + /** Returns the bounds of this bitmap, offset by its SkPixelRef origin. + + @return bounds within SkPixelRef bounds + */ + SkIRect getSubset() const { + SkIPoint origin = this->pixelRefOrigin(); + return SkIRect::MakeXYWH(origin.x(), origin.y(), this->width(), this->height()); + } + + /** Sets width, height, SkAlphaType, SkColorType, SkColorSpace, and optional + rowBytes. Frees pixels, and returns true if successful. + + imageInfo.alphaType() may be altered to a value permitted by imageInfo.colorSpace(). + If imageInfo.colorType() is kUnknown_SkColorType, imageInfo.alphaType() is + set to kUnknown_SkAlphaType. + If imageInfo.colorType() is kAlpha_8_SkColorType and imageInfo.alphaType() is + kUnpremul_SkAlphaType, imageInfo.alphaType() is replaced by kPremul_SkAlphaType. + If imageInfo.colorType() is kRGB_565_SkColorType or kGray_8_SkColorType, + imageInfo.alphaType() is set to kOpaque_SkAlphaType. + If imageInfo.colorType() is kARGB_4444_SkColorType, kRGBA_8888_SkColorType, + kBGRA_8888_SkColorType, or kRGBA_F16_SkColorType: imageInfo.alphaType() remains + unchanged. + + rowBytes must equal or exceed imageInfo.minRowBytes(). If imageInfo.colorSpace() is + kUnknown_SkColorType, rowBytes is ignored and treated as zero; for all other + SkColorSpace values, rowBytes of zero is treated as imageInfo.minRowBytes(). + + Calls reset() and returns false if: + - rowBytes exceeds 31 bits + - imageInfo.width() is negative + - imageInfo.height() is negative + - rowBytes is positive and less than imageInfo.width() times imageInfo.bytesPerPixel() + + @param imageInfo contains width, height, SkAlphaType, SkColorType, SkColorSpace + @param rowBytes imageInfo.minRowBytes() or larger; or zero + @return true if SkImageInfo set successfully + + example: https://fiddle.skia.org/c/@Bitmap_setInfo + */ + bool setInfo(const SkImageInfo& imageInfo, size_t rowBytes = 0); + + /** \enum SkBitmap::AllocFlags + AllocFlags is obsolete. We always zero pixel memory when allocated. + */ + enum AllocFlags { + kZeroPixels_AllocFlag = 1 << 0, //!< zero pixel memory. No effect. This is the default. + }; + + /** Sets SkImageInfo to info following the rules in setInfo() and allocates pixel + memory. Memory is zeroed. + + Returns false and calls reset() if SkImageInfo could not be set, or memory could + not be allocated, or memory could not optionally be zeroed. + + On most platforms, allocating pixel memory may succeed even though there is + not sufficient memory to hold pixels; allocation does not take place + until the pixels are written to. The actual behavior depends on the platform + implementation of calloc(). + + @param info contains width, height, SkAlphaType, SkColorType, SkColorSpace + @param flags kZeroPixels_AllocFlag, or zero + @return true if pixels allocation is successful + */ + [[nodiscard]] bool tryAllocPixelsFlags(const SkImageInfo& info, uint32_t flags); + + /** Sets SkImageInfo to info following the rules in setInfo() and allocates pixel + memory. Memory is zeroed. + + Aborts execution if SkImageInfo could not be set, or memory could + not be allocated, or memory could not optionally + be zeroed. Abort steps may be provided by the user at compile time by defining + SK_ABORT. + + On most platforms, allocating pixel memory may succeed even though there is + not sufficient memory to hold pixels; allocation does not take place + until the pixels are written to. The actual behavior depends on the platform + implementation of calloc(). + + @param info contains width, height, SkAlphaType, SkColorType, SkColorSpace + @param flags kZeroPixels_AllocFlag, or zero + + example: https://fiddle.skia.org/c/@Bitmap_allocPixelsFlags + */ + void allocPixelsFlags(const SkImageInfo& info, uint32_t flags); + + /** Sets SkImageInfo to info following the rules in setInfo() and allocates pixel + memory. rowBytes must equal or exceed info.width() times info.bytesPerPixel(), + or equal zero. Pass in zero for rowBytes to compute the minimum valid value. + + Returns false and calls reset() if SkImageInfo could not be set, or memory could + not be allocated. + + On most platforms, allocating pixel memory may succeed even though there is + not sufficient memory to hold pixels; allocation does not take place + until the pixels are written to. The actual behavior depends on the platform + implementation of malloc(). + + @param info contains width, height, SkAlphaType, SkColorType, SkColorSpace + @param rowBytes size of pixel row or larger; may be zero + @return true if pixel storage is allocated + */ + [[nodiscard]] bool tryAllocPixels(const SkImageInfo& info, size_t rowBytes); + + /** Sets SkImageInfo to info following the rules in setInfo() and allocates pixel + memory. rowBytes must equal or exceed info.width() times info.bytesPerPixel(), + or equal zero. Pass in zero for rowBytes to compute the minimum valid value. + + Aborts execution if SkImageInfo could not be set, or memory could + not be allocated. Abort steps may be provided by + the user at compile time by defining SK_ABORT. + + On most platforms, allocating pixel memory may succeed even though there is + not sufficient memory to hold pixels; allocation does not take place + until the pixels are written to. The actual behavior depends on the platform + implementation of malloc(). + + @param info contains width, height, SkAlphaType, SkColorType, SkColorSpace + @param rowBytes size of pixel row or larger; may be zero + + example: https://fiddle.skia.org/c/@Bitmap_allocPixels + */ + void allocPixels(const SkImageInfo& info, size_t rowBytes); + + /** Sets SkImageInfo to info following the rules in setInfo() and allocates pixel + memory. + + Returns false and calls reset() if SkImageInfo could not be set, or memory could + not be allocated. + + On most platforms, allocating pixel memory may succeed even though there is + not sufficient memory to hold pixels; allocation does not take place + until the pixels are written to. The actual behavior depends on the platform + implementation of malloc(). + + @param info contains width, height, SkAlphaType, SkColorType, SkColorSpace + @return true if pixel storage is allocated + */ + [[nodiscard]] bool tryAllocPixels(const SkImageInfo& info) { + return this->tryAllocPixels(info, info.minRowBytes()); + } + + /** Sets SkImageInfo to info following the rules in setInfo() and allocates pixel + memory. + + Aborts execution if SkImageInfo could not be set, or memory could + not be allocated. Abort steps may be provided by + the user at compile time by defining SK_ABORT. + + On most platforms, allocating pixel memory may succeed even though there is + not sufficient memory to hold pixels; allocation does not take place + until the pixels are written to. The actual behavior depends on the platform + implementation of malloc(). + + @param info contains width, height, SkAlphaType, SkColorType, SkColorSpace + + example: https://fiddle.skia.org/c/@Bitmap_allocPixels_2 + */ + void allocPixels(const SkImageInfo& info); + + /** Sets SkImageInfo to width, height, and native color type; and allocates + pixel memory. If isOpaque is true, sets SkImageInfo to kOpaque_SkAlphaType; + otherwise, sets to kPremul_SkAlphaType. + + Calls reset() and returns false if width exceeds 29 bits or is negative, + or height is negative. + + Returns false if allocation fails. + + Use to create SkBitmap that matches SkPMColor, the native pixel arrangement on + the platform. SkBitmap drawn to output device skips converting its pixel format. + + @param width pixel column count; must be zero or greater + @param height pixel row count; must be zero or greater + @param isOpaque true if pixels do not have transparency + @return true if pixel storage is allocated + */ + [[nodiscard]] bool tryAllocN32Pixels(int width, int height, bool isOpaque = false); + + /** Sets SkImageInfo to width, height, and the native color type; and allocates + pixel memory. If isOpaque is true, sets SkImageInfo to kOpaque_SkAlphaType; + otherwise, sets to kPremul_SkAlphaType. + + Aborts if width exceeds 29 bits or is negative, or height is negative, or + allocation fails. Abort steps may be provided by the user at compile time by + defining SK_ABORT. + + Use to create SkBitmap that matches SkPMColor, the native pixel arrangement on + the platform. SkBitmap drawn to output device skips converting its pixel format. + + @param width pixel column count; must be zero or greater + @param height pixel row count; must be zero or greater + @param isOpaque true if pixels do not have transparency + + example: https://fiddle.skia.org/c/@Bitmap_allocN32Pixels + */ + void allocN32Pixels(int width, int height, bool isOpaque = false); + + /** Sets SkImageInfo to info following the rules in setInfo(), and creates SkPixelRef + containing pixels and rowBytes. releaseProc, if not nullptr, is called + immediately on failure or when pixels are no longer referenced. context may be + nullptr. + + If SkImageInfo could not be set, or rowBytes is less than info.minRowBytes(): + calls releaseProc if present, calls reset(), and returns false. + + Otherwise, if pixels equals nullptr: sets SkImageInfo, calls releaseProc if + present, returns true. + + If SkImageInfo is set, pixels is not nullptr, and releaseProc is not nullptr: + when pixels are no longer referenced, calls releaseProc with pixels and context + as parameters. + + @param info contains width, height, SkAlphaType, SkColorType, SkColorSpace + @param pixels address or pixel storage; may be nullptr + @param rowBytes size of pixel row or larger + @param releaseProc function called when pixels can be deleted; may be nullptr + @param context caller state passed to releaseProc; may be nullptr + @return true if SkImageInfo is set to info + */ + bool installPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, + void (*releaseProc)(void* addr, void* context), void* context); + + /** Sets SkImageInfo to info following the rules in setInfo(), and creates SkPixelRef + containing pixels and rowBytes. + + If SkImageInfo could not be set, or rowBytes is less than info.minRowBytes(): + calls reset(), and returns false. + + Otherwise, if pixels equals nullptr: sets SkImageInfo, returns true. + + Caller must ensure that pixels are valid for the lifetime of SkBitmap and SkPixelRef. + + @param info contains width, height, SkAlphaType, SkColorType, SkColorSpace + @param pixels address or pixel storage; may be nullptr + @param rowBytes size of pixel row or larger + @return true if SkImageInfo is set to info + */ + bool installPixels(const SkImageInfo& info, void* pixels, size_t rowBytes) { + return this->installPixels(info, pixels, rowBytes, nullptr, nullptr); + } + + /** Sets SkImageInfo to pixmap.info() following the rules in setInfo(), and creates + SkPixelRef containing pixmap.addr() and pixmap.rowBytes(). + + If SkImageInfo could not be set, or pixmap.rowBytes() is less than + SkImageInfo::minRowBytes(): calls reset(), and returns false. + + Otherwise, if pixmap.addr() equals nullptr: sets SkImageInfo, returns true. + + Caller must ensure that pixmap is valid for the lifetime of SkBitmap and SkPixelRef. + + @param pixmap SkImageInfo, pixel address, and rowBytes() + @return true if SkImageInfo was set to pixmap.info() + + example: https://fiddle.skia.org/c/@Bitmap_installPixels_3 + */ + bool installPixels(const SkPixmap& pixmap); + + /** Replaces SkPixelRef with pixels, preserving SkImageInfo and rowBytes(). + Sets SkPixelRef origin to (0, 0). + + If pixels is nullptr, or if info().colorType() equals kUnknown_SkColorType; + release reference to SkPixelRef, and set SkPixelRef to nullptr. + + Caller is responsible for handling ownership pixel memory for the lifetime + of SkBitmap and SkPixelRef. + + @param pixels address of pixel storage, managed by caller + + example: https://fiddle.skia.org/c/@Bitmap_setPixels + */ + void setPixels(void* pixels); + + /** Allocates pixel memory with HeapAllocator, and replaces existing SkPixelRef. + The allocation size is determined by SkImageInfo width, height, and SkColorType. + + Returns false if info().colorType() is kUnknown_SkColorType, or allocation fails. + + @return true if the allocation succeeds + */ + [[nodiscard]] bool tryAllocPixels() { + return this->tryAllocPixels((Allocator*)nullptr); + } + + /** Allocates pixel memory with HeapAllocator, and replaces existing SkPixelRef. + The allocation size is determined by SkImageInfo width, height, and SkColorType. + + Aborts if info().colorType() is kUnknown_SkColorType, or allocation fails. + Abort steps may be provided by the user at compile + time by defining SK_ABORT. + + example: https://fiddle.skia.org/c/@Bitmap_allocPixels_3 + */ + void allocPixels(); + + /** Allocates pixel memory with allocator, and replaces existing SkPixelRef. + The allocation size is determined by SkImageInfo width, height, and SkColorType. + If allocator is nullptr, use HeapAllocator instead. + + Returns false if Allocator::allocPixelRef return false. + + @param allocator instance of SkBitmap::Allocator instantiation + @return true if custom allocator reports success + */ + [[nodiscard]] bool tryAllocPixels(Allocator* allocator); + + /** Allocates pixel memory with allocator, and replaces existing SkPixelRef. + The allocation size is determined by SkImageInfo width, height, and SkColorType. + If allocator is nullptr, use HeapAllocator instead. + + Aborts if Allocator::allocPixelRef return false. Abort steps may be provided by + the user at compile time by defining SK_ABORT. + + @param allocator instance of SkBitmap::Allocator instantiation + + example: https://fiddle.skia.org/c/@Bitmap_allocPixels_4 + */ + void allocPixels(Allocator* allocator); + + /** Returns SkPixelRef, which contains: pixel base address; its dimensions; and + rowBytes(), the interval from one row to the next. Does not change SkPixelRef + reference count. SkPixelRef may be shared by multiple bitmaps. + If SkPixelRef has not been set, returns nullptr. + + @return SkPixelRef, or nullptr + */ + SkPixelRef* pixelRef() const { return fPixelRef.get(); } + + /** Returns origin of pixels within SkPixelRef. SkBitmap bounds is always contained + by SkPixelRef bounds, which may be the same size or larger. Multiple SkBitmap + can share the same SkPixelRef, where each SkBitmap has different bounds. + + The returned origin added to SkBitmap dimensions equals or is smaller than the + SkPixelRef dimensions. + + Returns (0, 0) if SkPixelRef is nullptr. + + @return pixel origin within SkPixelRef + + example: https://fiddle.skia.org/c/@Bitmap_pixelRefOrigin + */ + SkIPoint pixelRefOrigin() const; + + /** Replaces pixelRef and origin in SkBitmap. dx and dy specify the offset + within the SkPixelRef pixels for the top-left corner of the bitmap. + + Asserts in debug builds if dx or dy are out of range. Pins dx and dy + to legal range in release builds. + + The caller is responsible for ensuring that the pixels match the + SkColorType and SkAlphaType in SkImageInfo. + + @param pixelRef SkPixelRef describing pixel address and rowBytes() + @param dx column offset in SkPixelRef for bitmap origin + @param dy row offset in SkPixelRef for bitmap origin + + example: https://fiddle.skia.org/c/@Bitmap_setPixelRef + */ + void setPixelRef(sk_sp pixelRef, int dx, int dy); + + /** Returns true if SkBitmap is can be drawn. + + @return true if getPixels() is not nullptr + */ + bool readyToDraw() const { + return this->getPixels() != nullptr; + } + + /** Returns a unique value corresponding to the pixels in SkPixelRef. + Returns a different value after notifyPixelsChanged() has been called. + Returns zero if SkPixelRef is nullptr. + + Determines if pixels have changed since last examined. + + @return unique value for pixels in SkPixelRef + + example: https://fiddle.skia.org/c/@Bitmap_getGenerationID + */ + uint32_t getGenerationID() const; + + /** Marks that pixels in SkPixelRef have changed. Subsequent calls to + getGenerationID() return a different value. + + example: https://fiddle.skia.org/c/@Bitmap_notifyPixelsChanged + */ + void notifyPixelsChanged() const; + + /** Replaces pixel values with c, interpreted as being in the sRGB SkColorSpace. + All pixels contained by bounds() are affected. If the colorType() is + kGray_8_SkColorType or kRGB_565_SkColorType, then alpha is ignored; RGB is + treated as opaque. If colorType() is kAlpha_8_SkColorType, then RGB is ignored. + + @param c unpremultiplied color + + example: https://fiddle.skia.org/c/@Bitmap_eraseColor + */ + void eraseColor(SkColor4f) const; + + /** Replaces pixel values with c, interpreted as being in the sRGB SkColorSpace. + All pixels contained by bounds() are affected. If the colorType() is + kGray_8_SkColorType or kRGB_565_SkColorType, then alpha is ignored; RGB is + treated as opaque. If colorType() is kAlpha_8_SkColorType, then RGB is ignored. + + Input color is ultimately converted to an SkColor4f, so eraseColor(SkColor4f c) + will have higher color resolution. + + @param c unpremultiplied color. + + example: https://fiddle.skia.org/c/@Bitmap_eraseColor + */ + void eraseColor(SkColor c) const; + + /** Replaces pixel values with unpremultiplied color built from a, r, g, and b, + interpreted as being in the sRGB SkColorSpace. All pixels contained by + bounds() are affected. If the colorType() is kGray_8_SkColorType or + kRGB_565_SkColorType, then a is ignored; r, g, and b are treated as opaque. + If colorType() is kAlpha_8_SkColorType, then r, g, and b are ignored. + + @param a amount of alpha, from fully transparent (0) to fully opaque (255) + @param r amount of red, from no red (0) to full red (255) + @param g amount of green, from no green (0) to full green (255) + @param b amount of blue, from no blue (0) to full blue (255) + */ + void eraseARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) const { + this->eraseColor(SkColorSetARGB(a, r, g, b)); + } + + /** Replaces pixel values inside area with c. interpreted as being in the sRGB + SkColorSpace. If area does not intersect bounds(), call has no effect. + + If the colorType() is kGray_8_SkColorType or kRGB_565_SkColorType, then alpha + is ignored; RGB is treated as opaque. If colorType() is kAlpha_8_SkColorType, + then RGB is ignored. + + @param c unpremultiplied color + @param area rectangle to fill + + example: https://fiddle.skia.org/c/@Bitmap_erase + */ + void erase(SkColor4f c, const SkIRect& area) const; + + /** Replaces pixel values inside area with c. interpreted as being in the sRGB + SkColorSpace. If area does not intersect bounds(), call has no effect. + + If the colorType() is kGray_8_SkColorType or kRGB_565_SkColorType, then alpha + is ignored; RGB is treated as opaque. If colorType() is kAlpha_8_SkColorType, + then RGB is ignored. + + Input color is ultimately converted to an SkColor4f, so erase(SkColor4f c) + will have higher color resolution. + + @param c unpremultiplied color + @param area rectangle to fill + + example: https://fiddle.skia.org/c/@Bitmap_erase + */ + void erase(SkColor c, const SkIRect& area) const; + + /** Deprecated. + */ + void eraseArea(const SkIRect& area, SkColor c) const { + this->erase(c, area); + } + + /** Returns pixel at (x, y) as unpremultiplied color. + Returns black with alpha if SkColorType is kAlpha_8_SkColorType. + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined; and returns undefined values or may crash if + SK_RELEASE is defined. Fails if SkColorType is kUnknown_SkColorType or + pixel address is nullptr. + + SkColorSpace in SkImageInfo is ignored. Some color precision may be lost in the + conversion to unpremultiplied color; original pixel data may have additional + precision. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return pixel converted to unpremultiplied color + */ + SkColor getColor(int x, int y) const { + return this->pixmap().getColor(x, y); + } + + /** Returns pixel at (x, y) as unpremultiplied float color. + Returns black with alpha if SkColorType is kAlpha_8_SkColorType. + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined; and returns undefined values or may crash if + SK_RELEASE is defined. Fails if SkColorType is kUnknown_SkColorType or + pixel address is nullptr. + + SkColorSpace in SkImageInfo is ignored. Some color precision may be lost in the + conversion to unpremultiplied color. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return pixel converted to unpremultiplied color + */ + SkColor4f getColor4f(int x, int y) const { return this->pixmap().getColor4f(x, y); } + + /** Look up the pixel at (x,y) and return its alpha component, normalized to [0..1]. + This is roughly equivalent to SkGetColorA(getColor()), but can be more efficent + (and more precise if the pixels store more than 8 bits per component). + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return alpha converted to normalized float + */ + float getAlphaf(int x, int y) const { + return this->pixmap().getAlphaf(x, y); + } + + /** Returns pixel address at (x, y). + + Input is not validated: out of bounds values of x or y, or kUnknown_SkColorType, + trigger an assert() if built with SK_DEBUG defined. Returns nullptr if + SkColorType is kUnknown_SkColorType, or SkPixelRef is nullptr. + + Performs a lookup of pixel size; for better performance, call + one of: getAddr8(), getAddr16(), or getAddr32(). + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return generic pointer to pixel + + example: https://fiddle.skia.org/c/@Bitmap_getAddr + */ + void* getAddr(int x, int y) const; + + /** Returns address at (x, y). + + Input is not validated. Triggers an assert() if built with SK_DEBUG defined and: + - SkPixelRef is nullptr + - bytesPerPixel() is not four + - x is negative, or not less than width() + - y is negative, or not less than height() + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return unsigned 32-bit pointer to pixel at (x, y) + */ + inline uint32_t* getAddr32(int x, int y) const; + + /** Returns address at (x, y). + + Input is not validated. Triggers an assert() if built with SK_DEBUG defined and: + - SkPixelRef is nullptr + - bytesPerPixel() is not two + - x is negative, or not less than width() + - y is negative, or not less than height() + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return unsigned 16-bit pointer to pixel at (x, y) + */ + inline uint16_t* getAddr16(int x, int y) const; + + /** Returns address at (x, y). + + Input is not validated. Triggers an assert() if built with SK_DEBUG defined and: + - SkPixelRef is nullptr + - bytesPerPixel() is not one + - x is negative, or not less than width() + - y is negative, or not less than height() + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return unsigned 8-bit pointer to pixel at (x, y) + */ + inline uint8_t* getAddr8(int x, int y) const; + + /** Shares SkPixelRef with dst. Pixels are not copied; SkBitmap and dst point + to the same pixels; dst bounds() are set to the intersection of subset + and the original bounds(). + + subset may be larger than bounds(). Any area outside of bounds() is ignored. + + Any contents of dst are discarded. + + Return false if: + - dst is nullptr + - SkPixelRef is nullptr + - subset does not intersect bounds() + + @param dst SkBitmap set to subset + @param subset rectangle of pixels to reference + @return true if dst is replaced by subset + + example: https://fiddle.skia.org/c/@Bitmap_extractSubset + */ + bool extractSubset(SkBitmap* dst, const SkIRect& subset) const; + + /** Copies a SkRect of pixels from SkBitmap to dstPixels. Copy starts at (srcX, srcY), + and does not exceed SkBitmap (width(), height()). + + dstInfo specifies width, height, SkColorType, SkAlphaType, and SkColorSpace of + destination. dstRowBytes specifics the gap from one destination row to the next. + Returns true if pixels are copied. Returns false if: + - dstInfo has no address + - dstRowBytes is less than dstInfo.minRowBytes() + - SkPixelRef is nullptr + + Pixels are copied only if pixel conversion is possible. If SkBitmap colorType() is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dstInfo.colorType() must match. + If SkBitmap colorType() is kGray_8_SkColorType, dstInfo.colorSpace() must match. + If SkBitmap alphaType() is kOpaque_SkAlphaType, dstInfo.alphaType() must + match. If SkBitmap colorSpace() is nullptr, dstInfo.colorSpace() must match. Returns + false if pixel conversion is not possible. + + srcX and srcY may be negative to copy only top or left of source. Returns + false if width() or height() is zero or negative. + Returns false if abs(srcX) >= Bitmap width(), or if abs(srcY) >= Bitmap height(). + + @param dstInfo destination width, height, SkColorType, SkAlphaType, SkColorSpace + @param dstPixels destination pixel storage + @param dstRowBytes destination row length + @param srcX column index whose absolute value is less than width() + @param srcY row index whose absolute value is less than height() + @return true if pixels are copied to dstPixels + */ + bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, + int srcX, int srcY) const; + + /** Copies a SkRect of pixels from SkBitmap to dst. Copy starts at (srcX, srcY), and + does not exceed SkBitmap (width(), height()). + + dst specifies width, height, SkColorType, SkAlphaType, SkColorSpace, pixel storage, + and row bytes of destination. dst.rowBytes() specifics the gap from one destination + row to the next. Returns true if pixels are copied. Returns false if: + - dst pixel storage equals nullptr + - dst.rowBytes is less than SkImageInfo::minRowBytes() + - SkPixelRef is nullptr + + Pixels are copied only if pixel conversion is possible. If SkBitmap colorType() is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dst SkColorType must match. + If SkBitmap colorType() is kGray_8_SkColorType, dst SkColorSpace must match. + If SkBitmap alphaType() is kOpaque_SkAlphaType, dst SkAlphaType must + match. If SkBitmap colorSpace() is nullptr, dst SkColorSpace must match. Returns + false if pixel conversion is not possible. + + srcX and srcY may be negative to copy only top or left of source. Returns + false if width() or height() is zero or negative. + Returns false if abs(srcX) >= Bitmap width(), or if abs(srcY) >= Bitmap height(). + + @param dst destination SkPixmap: SkImageInfo, pixels, row bytes + @param srcX column index whose absolute value is less than width() + @param srcY row index whose absolute value is less than height() + @return true if pixels are copied to dst + + example: https://fiddle.skia.org/c/@Bitmap_readPixels_2 + */ + bool readPixels(const SkPixmap& dst, int srcX, int srcY) const; + + /** Copies a SkRect of pixels from SkBitmap to dst. Copy starts at (0, 0), and + does not exceed SkBitmap (width(), height()). + + dst specifies width, height, SkColorType, SkAlphaType, SkColorSpace, pixel storage, + and row bytes of destination. dst.rowBytes() specifics the gap from one destination + row to the next. Returns true if pixels are copied. Returns false if: + - dst pixel storage equals nullptr + - dst.rowBytes is less than SkImageInfo::minRowBytes() + - SkPixelRef is nullptr + + Pixels are copied only if pixel conversion is possible. If SkBitmap colorType() is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dst SkColorType must match. + If SkBitmap colorType() is kGray_8_SkColorType, dst SkColorSpace must match. + If SkBitmap alphaType() is kOpaque_SkAlphaType, dst SkAlphaType must + match. If SkBitmap colorSpace() is nullptr, dst SkColorSpace must match. Returns + false if pixel conversion is not possible. + + @param dst destination SkPixmap: SkImageInfo, pixels, row bytes + @return true if pixels are copied to dst + */ + bool readPixels(const SkPixmap& dst) const { + return this->readPixels(dst, 0, 0); + } + + /** Copies a SkRect of pixels from src. Copy starts at (dstX, dstY), and does not exceed + (src.width(), src.height()). + + src specifies width, height, SkColorType, SkAlphaType, SkColorSpace, pixel storage, + and row bytes of source. src.rowBytes() specifics the gap from one source + row to the next. Returns true if pixels are copied. Returns false if: + - src pixel storage equals nullptr + - src.rowBytes is less than SkImageInfo::minRowBytes() + - SkPixelRef is nullptr + + Pixels are copied only if pixel conversion is possible. If SkBitmap colorType() is + kGray_8_SkColorType, or kAlpha_8_SkColorType; src SkColorType must match. + If SkBitmap colorType() is kGray_8_SkColorType, src SkColorSpace must match. + If SkBitmap alphaType() is kOpaque_SkAlphaType, src SkAlphaType must + match. If SkBitmap colorSpace() is nullptr, src SkColorSpace must match. Returns + false if pixel conversion is not possible. + + dstX and dstY may be negative to copy only top or left of source. Returns + false if width() or height() is zero or negative. + Returns false if abs(dstX) >= Bitmap width(), or if abs(dstY) >= Bitmap height(). + + @param src source SkPixmap: SkImageInfo, pixels, row bytes + @param dstX column index whose absolute value is less than width() + @param dstY row index whose absolute value is less than height() + @return true if src pixels are copied to SkBitmap + + example: https://fiddle.skia.org/c/@Bitmap_writePixels + */ + bool writePixels(const SkPixmap& src, int dstX, int dstY); + + /** Copies a SkRect of pixels from src. Copy starts at (0, 0), and does not exceed + (src.width(), src.height()). + + src specifies width, height, SkColorType, SkAlphaType, SkColorSpace, pixel storage, + and row bytes of source. src.rowBytes() specifics the gap from one source + row to the next. Returns true if pixels are copied. Returns false if: + - src pixel storage equals nullptr + - src.rowBytes is less than SkImageInfo::minRowBytes() + - SkPixelRef is nullptr + + Pixels are copied only if pixel conversion is possible. If SkBitmap colorType() is + kGray_8_SkColorType, or kAlpha_8_SkColorType; src SkColorType must match. + If SkBitmap colorType() is kGray_8_SkColorType, src SkColorSpace must match. + If SkBitmap alphaType() is kOpaque_SkAlphaType, src SkAlphaType must + match. If SkBitmap colorSpace() is nullptr, src SkColorSpace must match. Returns + false if pixel conversion is not possible. + + @param src source SkPixmap: SkImageInfo, pixels, row bytes + @return true if src pixels are copied to SkBitmap + */ + bool writePixels(const SkPixmap& src) { + return this->writePixels(src, 0, 0); + } + + /** Sets dst to alpha described by pixels. Returns false if dst cannot be written to + or dst pixels cannot be allocated. + + Uses HeapAllocator to reserve memory for dst SkPixelRef. + + @param dst holds SkPixelRef to fill with alpha layer + @return true if alpha layer was constructed in dst SkPixelRef + */ + bool extractAlpha(SkBitmap* dst) const { + return this->extractAlpha(dst, nullptr, nullptr, nullptr); + } + + /** Sets dst to alpha described by pixels. Returns false if dst cannot be written to + or dst pixels cannot be allocated. + + If paint is not nullptr and contains SkMaskFilter, SkMaskFilter + generates mask alpha from SkBitmap. Uses HeapAllocator to reserve memory for dst + SkPixelRef. Sets offset to top-left position for dst for alignment with SkBitmap; + (0, 0) unless SkMaskFilter generates mask. + + @param dst holds SkPixelRef to fill with alpha layer + @param paint holds optional SkMaskFilter; may be nullptr + @param offset top-left position for dst; may be nullptr + @return true if alpha layer was constructed in dst SkPixelRef + */ + bool extractAlpha(SkBitmap* dst, const SkPaint* paint, + SkIPoint* offset) const { + return this->extractAlpha(dst, paint, nullptr, offset); + } + + /** Sets dst to alpha described by pixels. Returns false if dst cannot be written to + or dst pixels cannot be allocated. + + If paint is not nullptr and contains SkMaskFilter, SkMaskFilter + generates mask alpha from SkBitmap. allocator may reference a custom allocation + class or be set to nullptr to use HeapAllocator. Sets offset to top-left + position for dst for alignment with SkBitmap; (0, 0) unless SkMaskFilter generates + mask. + + @param dst holds SkPixelRef to fill with alpha layer + @param paint holds optional SkMaskFilter; may be nullptr + @param allocator function to reserve memory for SkPixelRef; may be nullptr + @param offset top-left position for dst; may be nullptr + @return true if alpha layer was constructed in dst SkPixelRef + */ + bool extractAlpha(SkBitmap* dst, const SkPaint* paint, Allocator* allocator, + SkIPoint* offset) const; + + /** Copies SkBitmap pixel address, row bytes, and SkImageInfo to pixmap, if address + is available, and returns true. If pixel address is not available, return + false and leave pixmap unchanged. + + pixmap contents become invalid on any future change to SkBitmap. + + @param pixmap storage for pixel state if pixels are readable; otherwise, ignored + @return true if SkBitmap has direct access to pixels + + example: https://fiddle.skia.org/c/@Bitmap_peekPixels + */ + bool peekPixels(SkPixmap* pixmap) const; + + /** + * Make a shader with the specified tiling, matrix and sampling. + */ + sk_sp makeShader(SkTileMode tmx, SkTileMode tmy, const SkSamplingOptions&, + const SkMatrix* localMatrix = nullptr) const; + sk_sp makeShader(SkTileMode tmx, SkTileMode tmy, const SkSamplingOptions& sampling, + const SkMatrix& lm) const; + /** Defaults to clamp in both X and Y. */ + sk_sp makeShader(const SkSamplingOptions& sampling, const SkMatrix& lm) const; + sk_sp makeShader(const SkSamplingOptions& sampling, + const SkMatrix* lm = nullptr) const; + + /** + * Returns a new image from the bitmap. If the bitmap is marked immutable, this will + * share the pixel buffer. If not, it will make a copy of the pixels for the image. + */ + sk_sp asImage() const; + + /** Asserts if internal values are illegal or inconsistent. Only available if + SK_DEBUG is defined at compile time. + */ + SkDEBUGCODE(void validate() const;) + + /** \class SkBitmap::Allocator + Abstract subclass of HeapAllocator. + */ + class Allocator : public SkRefCnt { + public: + + /** Allocates the pixel memory for the bitmap, given its dimensions and + SkColorType. Returns true on success, where success means either setPixels() + or setPixelRef() was called. + + @param bitmap SkBitmap containing SkImageInfo as input, and SkPixelRef as output + @return true if SkPixelRef was allocated + */ + virtual bool allocPixelRef(SkBitmap* bitmap) = 0; + private: + using INHERITED = SkRefCnt; + }; + + /** \class SkBitmap::HeapAllocator + Subclass of SkBitmap::Allocator that returns a SkPixelRef that allocates its pixel + memory from the heap. This is the default SkBitmap::Allocator invoked by + allocPixels(). + */ + class SK_API HeapAllocator : public Allocator { + public: + + /** Allocates the pixel memory for the bitmap, given its dimensions and + SkColorType. Returns true on success, where success means either setPixels() + or setPixelRef() was called. + + @param bitmap SkBitmap containing SkImageInfo as input, and SkPixelRef as output + @return true if pixels are allocated + + example: https://fiddle.skia.org/c/@Bitmap_HeapAllocator_allocPixelRef + */ + bool allocPixelRef(SkBitmap* bitmap) override; + }; + +private: + sk_sp fPixelRef; + SkPixmap fPixmap; +}; + +/////////////////////////////////////////////////////////////////////////////// + +inline uint32_t* SkBitmap::getAddr32(int x, int y) const { + SkASSERT(fPixmap.addr()); + return fPixmap.writable_addr32(x, y); +} + +inline uint16_t* SkBitmap::getAddr16(int x, int y) const { + SkASSERT(fPixmap.addr()); + return fPixmap.writable_addr16(x, y); +} + +inline uint8_t* SkBitmap::getAddr8(int x, int y) const { + SkASSERT(fPixmap.addr()); + return fPixmap.writable_addr8(x, y); +} + +#endif diff --git a/vendor/artifacts/skia/include/core/SkBlendMode.h b/vendor/artifacts/skia/include/core/SkBlendMode.h new file mode 100644 index 000000000..4abe91576 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkBlendMode.h @@ -0,0 +1,112 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkBlendMode_DEFINED +#define SkBlendMode_DEFINED + +#include "include/core/SkTypes.h" + +/** + * Blends are operators that take in two colors (source, destination) and return a new color. + * Many of these operate the same on all 4 components: red, green, blue, alpha. For these, + * we just document what happens to one component, rather than naming each one separately. + * + * Different SkColorTypes have different representations for color components: + * 8-bit: 0..255 + * 6-bit: 0..63 + * 5-bit: 0..31 + * 4-bit: 0..15 + * floats: 0...1 + * + * The documentation is expressed as if the component values are always 0..1 (floats). + * + * For brevity, the documentation uses the following abbreviations + * s : source + * d : destination + * sa : source alpha + * da : destination alpha + * + * Results are abbreviated + * r : if all 4 components are computed in the same manner + * ra : result alpha component + * rc : result "color": red, green, blue components + */ +enum class SkBlendMode { + kClear, //!< r = 0 + kSrc, //!< r = s + kDst, //!< r = d + kSrcOver, //!< r = s + (1-sa)*d + kDstOver, //!< r = d + (1-da)*s + kSrcIn, //!< r = s * da + kDstIn, //!< r = d * sa + kSrcOut, //!< r = s * (1-da) + kDstOut, //!< r = d * (1-sa) + kSrcATop, //!< r = s*da + d*(1-sa) + kDstATop, //!< r = d*sa + s*(1-da) + kXor, //!< r = s*(1-da) + d*(1-sa) + kPlus, //!< r = min(s + d, 1) + kModulate, //!< r = s*d + kScreen, //!< r = s + d - s*d + + kOverlay, //!< multiply or screen, depending on destination + kDarken, //!< rc = s + d - max(s*da, d*sa), ra = kSrcOver + kLighten, //!< rc = s + d - min(s*da, d*sa), ra = kSrcOver + kColorDodge, //!< brighten destination to reflect source + kColorBurn, //!< darken destination to reflect source + kHardLight, //!< multiply or screen, depending on source + kSoftLight, //!< lighten or darken, depending on source + kDifference, //!< rc = s + d - 2*(min(s*da, d*sa)), ra = kSrcOver + kExclusion, //!< rc = s + d - two(s*d), ra = kSrcOver + kMultiply, //!< r = s*(1-da) + d*(1-sa) + s*d + + kHue, //!< hue of source with saturation and luminosity of destination + kSaturation, //!< saturation of source with hue and luminosity of destination + kColor, //!< hue and saturation of source with luminosity of destination + kLuminosity, //!< luminosity of source with hue and saturation of destination + + kLastCoeffMode = kScreen, //!< last porter duff blend mode + kLastSeparableMode = kMultiply, //!< last blend mode operating separately on components + kLastMode = kLuminosity, //!< last valid value +}; + +static constexpr int kSkBlendModeCount = static_cast(SkBlendMode::kLastMode) + 1; + +/** + * For Porter-Duff SkBlendModes (those <= kLastCoeffMode), these coefficients describe the blend + * equation used. Coefficient-based blend modes specify an equation: + * ('dstCoeff' * dst + 'srcCoeff' * src), where the coefficient values are constants, functions of + * the src or dst alpha, or functions of the src or dst color. + */ +enum class SkBlendModeCoeff { + kZero, /** 0 */ + kOne, /** 1 */ + kSC, /** src color */ + kISC, /** inverse src color (i.e. 1 - sc) */ + kDC, /** dst color */ + kIDC, /** inverse dst color (i.e. 1 - dc) */ + kSA, /** src alpha */ + kISA, /** inverse src alpha (i.e. 1 - sa) */ + kDA, /** dst alpha */ + kIDA, /** inverse dst alpha (i.e. 1 - da) */ + + kCoeffCount +}; + +/** + * Returns true if 'mode' is a coefficient-based blend mode (<= kLastCoeffMode). If true is + * returned, the mode's src and dst coefficient functions are set in 'src' and 'dst'. + */ +SK_API bool SkBlendMode_AsCoeff(SkBlendMode mode, SkBlendModeCoeff* src, SkBlendModeCoeff* dst); + + +/** Returns name of blendMode as null-terminated C string. + + @return C string +*/ +SK_API const char* SkBlendMode_Name(SkBlendMode blendMode); + +#endif diff --git a/vendor/artifacts/skia/include/core/SkBlender.h b/vendor/artifacts/skia/include/core/SkBlender.h new file mode 100644 index 000000000..b82ee7aef --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkBlender.h @@ -0,0 +1,30 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkBlender_DEFINED +#define SkBlender_DEFINED + +#include "include/core/SkBlendMode.h" +#include "include/core/SkFlattenable.h" + +/** + * SkBlender represents a custom blend function in the Skia pipeline. A blender combines a source + * color (the result of our paint) and destination color (from the canvas) into a final color. + */ +class SK_API SkBlender : public SkFlattenable { +public: + /** + * Create a blender that implements the specified BlendMode. + */ + static sk_sp Mode(SkBlendMode mode); + +private: + SkBlender() = default; + friend class SkBlenderBase; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkBlurTypes.h b/vendor/artifacts/skia/include/core/SkBlurTypes.h new file mode 100644 index 000000000..f0dde10f2 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkBlurTypes.h @@ -0,0 +1,20 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkBlurTypes_DEFINED +#define SkBlurTypes_DEFINED + +enum SkBlurStyle : int { + kNormal_SkBlurStyle, //!< fuzzy inside and outside + kSolid_SkBlurStyle, //!< solid inside, fuzzy outside + kOuter_SkBlurStyle, //!< nothing inside, fuzzy outside + kInner_SkBlurStyle, //!< fuzzy inside, nothing outside + + kLastEnum_SkBlurStyle = kInner_SkBlurStyle, +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkCPUContext.h b/vendor/artifacts/skia/include/core/SkCPUContext.h new file mode 100644 index 000000000..2ffa73945 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkCPUContext.h @@ -0,0 +1,31 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef skcpu_Context_DEFINED +#define skcpu_Context_DEFINED + +#include "include/private/base/SkAPI.h" + +#include + +namespace skcpu { +class Recorder; + +class SK_API Context { +public: + struct Options {}; + + std::unique_ptr makeRecorder() const; + + static std::unique_ptr Make(const Options&); + static std::unique_ptr Make(); + +protected: + Context() = default; +}; +} // namespace skcpu + +#endif diff --git a/vendor/artifacts/skia/include/core/SkCPURecorder.h b/vendor/artifacts/skia/include/core/SkCPURecorder.h new file mode 100644 index 000000000..b9dbb4f3c --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkCPURecorder.h @@ -0,0 +1,77 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skcpu_Recorder_DEFINED +#define skcpu_Recorder_DEFINED + +#include +#include "include/core/SkRecorder.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkCanvas; +class SkContentID; +class SkSurface; +class SkSurfaceProps; +struct SkImageInfo; + +#include + +namespace skcpu { + +class SK_API Recorder : public SkRecorder { +public: + /** Returns a non-null global context. Can be used as a means of transitioning onto + * new APIs when a skcpu::Context/Recorder has not been piped down into the code paths + */ + static Recorder* TODO(); + + SkRecorder::Type type() const final { return SkRecorder::Type::kCPU; } + skcpu::Recorder* cpuRecorder() final { return this; } + + /** Allocates a bitmap-backed SkSurface. SkCanvas returned by SkSurface draws directly into + * those allocated pixels, which are zeroed before use. Pixel memory size is imageInfo.height() + * times imageInfo.minRowBytes() or rowBytes, if provided and non-zero. + * + * Pixel memory is deleted when SkSurface is deleted. + * + * Validity constraints include: + * - info dimensions are greater than zero; + * - info contains SkColorType and SkAlphaType supported by raster surface. + * + * @param imageInfo width, height, SkColorType, SkAlphaType, SkColorSpace, + * of raster surface; width and height must be greater than zero + * @param rowBytes interval from one SkSurface row to the next. + * @param props LCD striping orientation and setting for device independent fonts; + * may be nullptr + * @return SkSurface if parameters are valid and memory was allocated, else nullptr. + */ + sk_sp makeBitmapSurface(const SkImageInfo& imageInfo, + size_t rowBytes, + const SkSurfaceProps* surfaceProps); + sk_sp makeBitmapSurface(const SkImageInfo& imageInfo, + const SkSurfaceProps* surfaceProps = nullptr); + +private: + // TODO (b/412351769): Implement this so we can capture from a CPU Recorder. + SkCanvas* makeCaptureCanvas(SkCanvas*) final { return nullptr; } + SkContentID createCaptureBreakpoint(SkSurface*) final; +}; + +inline Recorder* AsRecorder(SkRecorder* recorder) { + if (!recorder) { + return nullptr; + } + if (recorder->type() != SkRecorder::Type::kCPU) { + return nullptr; + } + return static_cast(recorder); +} + +} // namespace skcpu + +#endif diff --git a/vendor/artifacts/skia/include/core/SkCanvas.h b/vendor/artifacts/skia/include/core/SkCanvas.h new file mode 100644 index 000000000..cf31ffaea --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkCanvas.h @@ -0,0 +1,2762 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCanvas_DEFINED +#define SkCanvas_DEFINED + +#include "include/core/SkArc.h" +#include "include/core/SkBlendMode.h" +#include "include/core/SkClipOp.h" +#include "include/core/SkColor.h" +#include "include/core/SkFontTypes.h" +#include "include/core/SkImageFilter.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkM44.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkPaint.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRSXform.h" // IWYU pragma: keep (for unspanned apis) +#include "include/core/SkRasterHandleAllocator.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSamplingOptions.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" +#include "include/core/SkSpan.h" +#include "include/core/SkString.h" +#include "include/core/SkSurfaceProps.h" +#include "include/core/SkTileMode.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkCPUTypes.h" +#include "include/private/base/SkDeque.h" +#include "include/private/base/SkTArray.h" + +#include +#include +#include +#include +#include + +#ifndef SK_SUPPORT_LEGACY_GETTOTALMATRIX +#define SK_SUPPORT_LEGACY_GETTOTALMATRIX +#endif + +namespace sktext { +class GlyphRunBuilder; +class GlyphRunList; +} + +class AutoLayerForImageFilter; +class GrRecordingContext; + +class SkBitmap; +class SkBlender; +class SkBlurMaskFilterImpl; +class SkColorSpace; +class SkData; +class SkDevice; +class SkDrawable; +class SkFont; +class SkImage; +class SkMesh; +class SkPaintFilterCanvas; +class SkPath; +class SkPicture; +class SkPixmap; +class SkRRect; +class SkRegion; +class SkRecorder; +class SkShader; +class SkSpecialImage; +class SkSurface; +class SkSurface_Base; +class SkTextBlob; +class SkVertices; +struct SkDrawShadowRec; + +template +class SkEnumBitMask; + +namespace skgpu::graphite { class Recorder; } +namespace sktext::gpu { class Slug; } +namespace SkRecords { class Draw; } +namespace skiatest { +template +class TestCanvas;// IWYU pragma: keep +} + +/** \class SkCanvas + SkCanvas provides an interface for drawing, and how the drawing is clipped and transformed. + SkCanvas contains a stack of SkMatrix and clip values. + + SkCanvas and SkPaint together provide the state to draw into SkSurface or SkDevice. + Each SkCanvas draw call transforms the geometry of the object by the concatenation of all + SkMatrix values in the stack. The transformed geometry is clipped by the intersection + of all of clip values in the stack. The SkCanvas draw calls use SkPaint to supply drawing + state such as color, SkTypeface, text size, stroke width, SkShader and so on. + + To draw to a pixel-based destination, create raster surface or GPU surface. + Request SkCanvas from SkSurface to obtain the interface to draw. + SkCanvas generated by raster surface draws to memory visible to the CPU. + SkCanvas generated by GPU surface uses Vulkan or OpenGL to draw to the GPU. + + To draw to a document, obtain SkCanvas from SVG canvas, document PDF, or SkPictureRecorder. + SkDocument based SkCanvas and other SkCanvas subclasses reference SkDevice describing the + destination. + + SkCanvas can be constructed to draw to SkBitmap without first creating raster surface. + This approach may be deprecated in the future. +*/ +class SK_API SkCanvas { +public: + + /** Allocates raster SkCanvas that will draw directly into pixels. + + SkCanvas is returned if all parameters are valid. + Valid parameters include: + info dimensions are zero or positive; + info contains SkColorType and SkAlphaType supported by raster surface; + pixels is not nullptr; + rowBytes is zero or large enough to contain info width pixels of SkColorType. + + Pass zero for rowBytes to compute rowBytes from info width and size of pixel. + If rowBytes is greater than zero, it must be equal to or greater than + info width times bytes required for SkColorType. + + Pixel buffer size should be info height times computed rowBytes. + Pixels are not initialized. + To access pixels after drawing, call flush() or peekPixels(). + + @param info width, height, SkColorType, SkAlphaType, SkColorSpace, of raster surface; + width, or height, or both, may be zero + @param pixels pointer to destination pixels buffer + @param rowBytes interval from one SkSurface row to the next, or zero + @param props LCD striping orientation and setting for device independent fonts; + may be nullptr + @return SkCanvas if all parameters are valid; otherwise, nullptr + */ + static std::unique_ptr MakeRasterDirect(const SkImageInfo& info, void* pixels, + size_t rowBytes, + const SkSurfaceProps* props = nullptr); + + /** Allocates raster SkCanvas specified by inline image specification. Subsequent SkCanvas + calls draw into pixels. + SkColorType is set to kN32_SkColorType. + SkAlphaType is set to kPremul_SkAlphaType. + To access pixels after drawing, call flush() or peekPixels(). + + SkCanvas is returned if all parameters are valid. + Valid parameters include: + width and height are zero or positive; + pixels is not nullptr; + rowBytes is zero or large enough to contain width pixels of kN32_SkColorType. + + Pass zero for rowBytes to compute rowBytes from width and size of pixel. + If rowBytes is greater than zero, it must be equal to or greater than + width times bytes required for SkColorType. + + Pixel buffer size should be height times rowBytes. + + @param width pixel column count on raster surface created; must be zero or greater + @param height pixel row count on raster surface created; must be zero or greater + @param pixels pointer to destination pixels buffer; buffer size should be height + times rowBytes + @param rowBytes interval from one SkSurface row to the next, or zero + @return SkCanvas if all parameters are valid; otherwise, nullptr + */ + static std::unique_ptr MakeRasterDirectN32(int width, int height, SkPMColor* pixels, + size_t rowBytes) { + return MakeRasterDirect(SkImageInfo::MakeN32Premul(width, height), pixels, rowBytes); + } + + /** Creates an empty SkCanvas with no backing device or pixels, with + a width and height of zero. + + @return empty SkCanvas + + example: https://fiddle.skia.org/c/@Canvas_empty_constructor + */ + SkCanvas(); + + /** Creates SkCanvas of the specified dimensions without a SkSurface. + Used by subclasses with custom implementations for draw member functions. + + If props equals nullptr, SkSurfaceProps are created with + SkSurfaceProps::InitType settings, which choose the pixel striping + direction and order. Since a platform may dynamically change its direction when + the device is rotated, and since a platform may have multiple monitors with + different characteristics, it is best not to rely on this legacy behavior. + + @param width zero or greater + @param height zero or greater + @param props LCD striping orientation and setting for device independent fonts; + may be nullptr + @return SkCanvas placeholder with dimensions + + example: https://fiddle.skia.org/c/@Canvas_int_int_const_SkSurfaceProps_star + */ + SkCanvas(int width, int height, const SkSurfaceProps* props = nullptr); + + /** Private. For internal use only. + */ + explicit SkCanvas(sk_sp device); + + /** Constructs a canvas that draws into bitmap. + Sets kUnknown_SkPixelGeometry in constructed SkSurface. + + SkBitmap is copied so that subsequently editing bitmap will not affect + constructed SkCanvas. + + May be deprecated in the future. + + @param bitmap width, height, SkColorType, SkAlphaType, and pixel + storage of raster surface + @return SkCanvas that can be used to draw into bitmap + + example: https://fiddle.skia.org/c/@Canvas_copy_const_SkBitmap + */ + explicit SkCanvas(const SkBitmap& bitmap); + +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + /** Private. + */ + enum class ColorBehavior { + kLegacy, //!< placeholder + }; + + /** Private. For use by Android framework only. + + @param bitmap specifies a bitmap for the canvas to draw into + @param behavior specializes this constructor; value is unused + @return SkCanvas that can be used to draw into bitmap + */ + SkCanvas(const SkBitmap& bitmap, ColorBehavior behavior); +#endif + + /** Constructs a canvas that draws into bitmap. + Use props to match the device characteristics, like LCD striping. + + bitmap is copied so that subsequently editing bitmap will not affect + constructed SkCanvas. + + @param bitmap width, height, SkColorType, SkAlphaType, + and pixel storage of raster surface + @param props order and orientation of RGB striping; and whether to use + device independent fonts + @return SkCanvas that can be used to draw into bitmap + + example: https://fiddle.skia.org/c/@Canvas_const_SkBitmap_const_SkSurfaceProps + */ + SkCanvas(const SkBitmap& bitmap, const SkSurfaceProps& props); + + /** Draws saved layers, if any. + Frees up resources used by SkCanvas. + + example: https://fiddle.skia.org/c/@Canvas_destructor + */ + virtual ~SkCanvas(); + + /** Returns SkImageInfo for SkCanvas. If SkCanvas is not associated with raster surface or + GPU surface, returned SkColorType is set to kUnknown_SkColorType. + + @return dimensions and SkColorType of SkCanvas + + example: https://fiddle.skia.org/c/@Canvas_imageInfo + */ + SkImageInfo imageInfo() const; + + /** Copies SkSurfaceProps, if SkCanvas is associated with raster surface or + GPU surface, and returns true. Otherwise, returns false and leave props unchanged. + + @param props storage for writable SkSurfaceProps + @return true if SkSurfaceProps was copied + + DEPRECATED: Replace usage with getBaseProps() or getTopProps() + + example: https://fiddle.skia.org/c/@Canvas_getProps + */ + bool getProps(SkSurfaceProps* props) const; + + /** Returns the SkSurfaceProps associated with the canvas (i.e., at the base of the layer + stack). + + @return base SkSurfaceProps + */ + SkSurfaceProps getBaseProps() const; + + /** Returns the SkSurfaceProps associated with the canvas that are currently active (i.e., at + the top of the layer stack). This can differ from getBaseProps depending on the flags + passed to saveLayer (see SaveLayerFlagsSet). + + @return SkSurfaceProps active in the current/top layer + */ + SkSurfaceProps getTopProps() const; + + /** Gets the size of the base or root layer in global canvas coordinates. The + origin of the base layer is always (0,0). The area available for drawing may be + smaller (due to clipping or saveLayer). + + @return integral width and height of base layer + + example: https://fiddle.skia.org/c/@Canvas_getBaseLayerSize + */ + virtual SkISize getBaseLayerSize() const; + + /** Creates SkSurface matching info and props, and associates it with SkCanvas. + Returns nullptr if no match found. + + If props is nullptr, matches SkSurfaceProps in SkCanvas. If props is nullptr and SkCanvas + does not have SkSurfaceProps, creates SkSurface with default SkSurfaceProps. + + @param info width, height, SkColorType, SkAlphaType, and SkColorSpace + @param props SkSurfaceProps to match; may be nullptr to match SkCanvas + @return SkSurface matching info and props, or nullptr if no match is available + + example: https://fiddle.skia.org/c/@Canvas_makeSurface + */ + sk_sp makeSurface(const SkImageInfo& info, const SkSurfaceProps* props = nullptr); + + /** Returns Ganesh context of the GPU surface associated with SkCanvas. + + @return GPU context, if available; nullptr otherwise + + example: https://fiddle.skia.org/c/@Canvas_recordingContext + */ + virtual GrRecordingContext* recordingContext() const; + + /** Returns Recorder for the GPU surface associated with SkCanvas. + + @return Recorder, if available; nullptr otherwise + */ + virtual skgpu::graphite::Recorder* recorder() const; + + /** Returns Recorder for the surface associated with SkCanvas. + + @return Recorder, should be non-null + */ + virtual SkRecorder* baseRecorder() const; + + /** Sometimes a canvas is owned by a surface. If it is, getSurface() will return a bare + * pointer to that surface, else this will return nullptr. + */ + SkSurface* getSurface() const; + + /** Returns the pixel base address, SkImageInfo, rowBytes, and origin if the pixels + can be read directly. The returned address is only valid + while SkCanvas is in scope and unchanged. Any SkCanvas call or SkSurface call + may invalidate the returned address and other returned values. + + If pixels are inaccessible, info, rowBytes, and origin are unchanged. + + @param info storage for writable pixels' SkImageInfo; may be nullptr + @param rowBytes storage for writable pixels' row bytes; may be nullptr + @param origin storage for SkCanvas top layer origin, its top-left corner; + may be nullptr + @return address of pixels, or nullptr if inaccessible + + example: https://fiddle.skia.org/c/@Canvas_accessTopLayerPixels_a + example: https://fiddle.skia.org/c/@Canvas_accessTopLayerPixels_b + */ + void* accessTopLayerPixels(SkImageInfo* info, size_t* rowBytes, SkIPoint* origin = nullptr); + + /** Returns custom context that tracks the SkMatrix and clip. + + Use SkRasterHandleAllocator to blend Skia drawing with custom drawing, typically performed + by the host platform user interface. The custom context returned is generated by + SkRasterHandleAllocator::MakeCanvas, which creates a custom canvas with raster storage for + the drawing destination. + + @return context of custom allocation + + example: https://fiddle.skia.org/c/@Canvas_accessTopRasterHandle + */ + SkRasterHandleAllocator::Handle accessTopRasterHandle() const; + + /** Returns true if SkCanvas has direct access to its pixels. + + Pixels are readable when SkDevice is raster. Pixels are not readable when SkCanvas + is returned from GPU surface, returned by SkDocument::beginPage, returned by + SkPictureRecorder::beginRecording, or SkCanvas is the base of a utility class + like DebugCanvas. + + pixmap is valid only while SkCanvas is in scope and unchanged. Any + SkCanvas or SkSurface call may invalidate the pixmap values. + + @param pixmap storage for pixel state if pixels are readable; otherwise, ignored + @return true if SkCanvas has direct access to pixels + + example: https://fiddle.skia.org/c/@Canvas_peekPixels + */ + bool peekPixels(SkPixmap* pixmap); + + /** Copies SkRect of pixels from SkCanvas into dstPixels. SkMatrix and clip are + ignored. + + Source SkRect corners are (srcX, srcY) and (imageInfo().width(), imageInfo().height()). + Destination SkRect corners are (0, 0) and (dstInfo.width(), dstInfo.height()). + Copies each readable pixel intersecting both rectangles, without scaling, + converting to dstInfo.colorType() and dstInfo.alphaType() if required. + + Pixels are readable when SkDevice is raster, or backed by a GPU. + Pixels are not readable when SkCanvas is returned by SkDocument::beginPage, + returned by SkPictureRecorder::beginRecording, or SkCanvas is the base of a utility + class like DebugCanvas. + + The destination pixel storage must be allocated by the caller. + + Pixel values are converted only if SkColorType and SkAlphaType + do not match. Only pixels within both source and destination rectangles + are copied. dstPixels contents outside SkRect intersection are unchanged. + + Pass negative values for srcX or srcY to offset pixels across or down destination. + + Does not copy, and returns false if: + - Source and destination rectangles do not intersect. + - SkCanvas pixels could not be converted to dstInfo.colorType() or dstInfo.alphaType(). + - SkCanvas pixels are not readable; for instance, SkCanvas is document-based. + - dstRowBytes is too small to contain one row of pixels. + + @param dstInfo width, height, SkColorType, and SkAlphaType of dstPixels + @param dstPixels storage for pixels; dstInfo.height() times dstRowBytes, or larger + @param dstRowBytes size of one destination row; dstInfo.width() times pixel size, or larger + @param srcX offset into readable pixels on x-axis; may be negative + @param srcY offset into readable pixels on y-axis; may be negative + @return true if pixels were copied + */ + bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, + int srcX, int srcY); + + /** Copies SkRect of pixels from SkCanvas into pixmap. SkMatrix and clip are + ignored. + + Source SkRect corners are (srcX, srcY) and (imageInfo().width(), imageInfo().height()). + Destination SkRect corners are (0, 0) and (pixmap.width(), pixmap.height()). + Copies each readable pixel intersecting both rectangles, without scaling, + converting to pixmap.colorType() and pixmap.alphaType() if required. + + Pixels are readable when SkDevice is raster, or backed by a GPU. + Pixels are not readable when SkCanvas is returned by SkDocument::beginPage, + returned by SkPictureRecorder::beginRecording, or SkCanvas is the base of a utility + class like DebugCanvas. + + Caller must allocate pixel storage in pixmap if needed. + + Pixel values are converted only if SkColorType and SkAlphaType + do not match. Only pixels within both source and destination SkRect + are copied. pixmap pixels contents outside SkRect intersection are unchanged. + + Pass negative values for srcX or srcY to offset pixels across or down pixmap. + + Does not copy, and returns false if: + - Source and destination rectangles do not intersect. + - SkCanvas pixels could not be converted to pixmap.colorType() or pixmap.alphaType(). + - SkCanvas pixels are not readable; for instance, SkCanvas is document-based. + - SkPixmap pixels could not be allocated. + - pixmap.rowBytes() is too small to contain one row of pixels. + + @param pixmap storage for pixels copied from SkCanvas + @param srcX offset into readable pixels on x-axis; may be negative + @param srcY offset into readable pixels on y-axis; may be negative + @return true if pixels were copied + + example: https://fiddle.skia.org/c/@Canvas_readPixels_2 + */ + bool readPixels(const SkPixmap& pixmap, int srcX, int srcY); + + /** Copies SkRect of pixels from SkCanvas into bitmap. SkMatrix and clip are + ignored. + + Source SkRect corners are (srcX, srcY) and (imageInfo().width(), imageInfo().height()). + Destination SkRect corners are (0, 0) and (bitmap.width(), bitmap.height()). + Copies each readable pixel intersecting both rectangles, without scaling, + converting to bitmap.colorType() and bitmap.alphaType() if required. + + Pixels are readable when SkDevice is raster, or backed by a GPU. + Pixels are not readable when SkCanvas is returned by SkDocument::beginPage, + returned by SkPictureRecorder::beginRecording, or SkCanvas is the base of a utility + class like DebugCanvas. + + Caller must allocate pixel storage in bitmap if needed. + + SkBitmap values are converted only if SkColorType and SkAlphaType + do not match. Only pixels within both source and destination rectangles + are copied. SkBitmap pixels outside SkRect intersection are unchanged. + + Pass negative values for srcX or srcY to offset pixels across or down bitmap. + + Does not copy, and returns false if: + - Source and destination rectangles do not intersect. + - SkCanvas pixels could not be converted to bitmap.colorType() or bitmap.alphaType(). + - SkCanvas pixels are not readable; for instance, SkCanvas is document-based. + - bitmap pixels could not be allocated. + - bitmap.rowBytes() is too small to contain one row of pixels. + + @param bitmap storage for pixels copied from SkCanvas + @param srcX offset into readable pixels on x-axis; may be negative + @param srcY offset into readable pixels on y-axis; may be negative + @return true if pixels were copied + + example: https://fiddle.skia.org/c/@Canvas_readPixels_3 + */ + bool readPixels(const SkBitmap& bitmap, int srcX, int srcY); + + /** Copies SkRect from pixels to SkCanvas. SkMatrix and clip are ignored. + Source SkRect corners are (0, 0) and (info.width(), info.height()). + Destination SkRect corners are (x, y) and + (imageInfo().width(), imageInfo().height()). + + Copies each readable pixel intersecting both rectangles, without scaling, + converting to imageInfo().colorType() and imageInfo().alphaType() if required. + + Pixels are writable when SkDevice is raster, or backed by a GPU. + Pixels are not writable when SkCanvas is returned by SkDocument::beginPage, + returned by SkPictureRecorder::beginRecording, or SkCanvas is the base of a utility + class like DebugCanvas. + + Pixel values are converted only if SkColorType and SkAlphaType + do not match. Only pixels within both source and destination rectangles + are copied. SkCanvas pixels outside SkRect intersection are unchanged. + + Pass negative values for x or y to offset pixels to the left or + above SkCanvas pixels. + + Does not copy, and returns false if: + - Source and destination rectangles do not intersect. + - pixels could not be converted to SkCanvas imageInfo().colorType() or + imageInfo().alphaType(). + - SkCanvas pixels are not writable; for instance, SkCanvas is document-based. + - rowBytes is too small to contain one row of pixels. + + @param info width, height, SkColorType, and SkAlphaType of pixels + @param pixels pixels to copy, of size info.height() times rowBytes, or larger + @param rowBytes size of one row of pixels; info.width() times pixel size, or larger + @param x offset into SkCanvas writable pixels on x-axis; may be negative + @param y offset into SkCanvas writable pixels on y-axis; may be negative + @return true if pixels were written to SkCanvas + + example: https://fiddle.skia.org/c/@Canvas_writePixels + */ + bool writePixels(const SkImageInfo& info, const void* pixels, size_t rowBytes, int x, int y); + + /** Copies SkRect from pixels to SkCanvas. SkMatrix and clip are ignored. + Source SkRect corners are (0, 0) and (bitmap.width(), bitmap.height()). + + Destination SkRect corners are (x, y) and + (imageInfo().width(), imageInfo().height()). + + Copies each readable pixel intersecting both rectangles, without scaling, + converting to imageInfo().colorType() and imageInfo().alphaType() if required. + + Pixels are writable when SkDevice is raster, or backed by a GPU. + Pixels are not writable when SkCanvas is returned by SkDocument::beginPage, + returned by SkPictureRecorder::beginRecording, or SkCanvas is the base of a utility + class like DebugCanvas. + + Pixel values are converted only if SkColorType and SkAlphaType + do not match. Only pixels within both source and destination rectangles + are copied. SkCanvas pixels outside SkRect intersection are unchanged. + + Pass negative values for x or y to offset pixels to the left or + above SkCanvas pixels. + + Does not copy, and returns false if: + - Source and destination rectangles do not intersect. + - bitmap does not have allocated pixels. + - bitmap pixels could not be converted to SkCanvas imageInfo().colorType() or + imageInfo().alphaType(). + - SkCanvas pixels are not writable; for instance, SkCanvas is document based. + - bitmap pixels are inaccessible; for instance, bitmap wraps a texture. + + @param bitmap contains pixels copied to SkCanvas + @param x offset into SkCanvas writable pixels on x-axis; may be negative + @param y offset into SkCanvas writable pixels on y-axis; may be negative + @return true if pixels were written to SkCanvas + + example: https://fiddle.skia.org/c/@Canvas_writePixels_2 + example: https://fiddle.skia.org/c/@State_Stack_a + example: https://fiddle.skia.org/c/@State_Stack_b + */ + bool writePixels(const SkBitmap& bitmap, int x, int y); + + /** Saves SkMatrix and clip. + Calling restore() discards changes to SkMatrix and clip, + restoring the SkMatrix and clip to their state when save() was called. + + SkMatrix may be changed by translate(), scale(), rotate(), skew(), concat(), setMatrix(), + and resetMatrix(). Clip may be changed by clipRect(), clipRRect(), clipPath(), clipRegion(). + + Saved SkCanvas state is put on a stack; multiple calls to save() should be balance + by an equal number of calls to restore(). + + Call restoreToCount() with result to restore this and subsequent saves. + + @return depth of saved stack + + example: https://fiddle.skia.org/c/@Canvas_save + */ + int save(); + + /** Saves SkMatrix and clip, and allocates a SkSurface for subsequent drawing. + Calling restore() discards changes to SkMatrix and clip, and draws the SkSurface. + + SkMatrix may be changed by translate(), scale(), rotate(), skew(), concat(), + setMatrix(), and resetMatrix(). Clip may be changed by clipRect(), clipRRect(), + clipPath(), clipRegion(). + + SkRect bounds suggests but does not define the SkSurface size. To clip drawing to + a specific rectangle, use clipRect(). + + Optional SkPaint paint applies alpha, SkColorFilter, SkImageFilter, and + SkBlendMode when restore() is called. + + Call restoreToCount() with returned value to restore this and subsequent saves. + + @param bounds hint to limit the size of the layer; may be nullptr + @param paint graphics state for layer; may be nullptr + @return depth of saved stack + + example: https://fiddle.skia.org/c/@Canvas_saveLayer + example: https://fiddle.skia.org/c/@Canvas_saveLayer_4 + */ + int saveLayer(const SkRect* bounds, const SkPaint* paint); + + /** Saves SkMatrix and clip, and allocates a SkSurface for subsequent drawing. + Calling restore() discards changes to SkMatrix and clip, and draws the SkSurface. + + SkMatrix may be changed by translate(), scale(), rotate(), skew(), concat(), + setMatrix(), and resetMatrix(). Clip may be changed by clipRect(), clipRRect(), + clipPath(), clipRegion(). + + SkRect bounds suggests but does not define the layer size. To clip drawing to + a specific rectangle, use clipRect(). + + Optional SkPaint paint applies alpha, SkColorFilter, SkImageFilter, and + SkBlendMode when restore() is called. + + Call restoreToCount() with returned value to restore this and subsequent saves. + + @param bounds hint to limit the size of layer; may be nullptr + @param paint graphics state for layer; may be nullptr + @return depth of saved stack + */ + int saveLayer(const SkRect& bounds, const SkPaint* paint) { + return this->saveLayer(&bounds, paint); + } + + /** Saves SkMatrix and clip, and allocates SkSurface for subsequent drawing. + + Calling restore() discards changes to SkMatrix and clip, + and blends layer with alpha opacity onto prior layer. + + SkMatrix may be changed by translate(), scale(), rotate(), skew(), concat(), + setMatrix(), and resetMatrix(). Clip may be changed by clipRect(), clipRRect(), + clipPath(), clipRegion(). + + SkRect bounds suggests but does not define layer size. To clip drawing to + a specific rectangle, use clipRect(). + + alpha of zero is fully transparent, 1.0f is fully opaque. + + Call restoreToCount() with returned value to restore this and subsequent saves. + + @param bounds hint to limit the size of layer; may be nullptr + @param alpha opacity of layer + @return depth of saved stack + + example: https://fiddle.skia.org/c/@Canvas_saveLayerAlpha + */ + int saveLayerAlphaf(const SkRect* bounds, float alpha); + // Helper that accepts an int between 0 and 255, and divides it by 255.0 + int saveLayerAlpha(const SkRect* bounds, U8CPU alpha) { + return this->saveLayerAlphaf(bounds, alpha * (1.0f / 255)); + } + + /** \enum SkCanvas::SaveLayerFlagsSet + SaveLayerFlags provides options that may be used in any combination in SaveLayerRec, + defining how layer allocated by saveLayer() operates. It may be set to zero, + kPreserveLCDText_SaveLayerFlag, kInitWithPrevious_SaveLayerFlag, or both flags. + */ + enum SaveLayerFlagsSet { + kPreserveLCDText_SaveLayerFlag = 1 << 1, + kInitWithPrevious_SaveLayerFlag = 1 << 2, //!< initializes with previous contents + // instead of matching previous layer's colortype, use F16 + kF16ColorType = 1 << 4, + }; + + using SaveLayerFlags = uint32_t; + using FilterSpan = SkSpan>; + static constexpr int kMaxFiltersPerLayer = 16; + + /** \struct SkCanvas::SaveLayerRec + SaveLayerRec contains the state used to create the layer. + */ + struct SaveLayerRec { + /** Sets fBounds, fPaint, and fBackdrop to nullptr. Clears fSaveLayerFlags. + + @return empty SaveLayerRec + */ + SaveLayerRec() {} + + /** Sets fBounds, fPaint, and fSaveLayerFlags; sets fBackdrop to nullptr. + + @param bounds layer dimensions; may be nullptr + @param paint applied to layer when overlaying prior layer; may be nullptr + @param saveLayerFlags SaveLayerRec options to modify layer + @return SaveLayerRec with empty fBackdrop + */ + SaveLayerRec(const SkRect* bounds, const SkPaint* paint, SaveLayerFlags saveLayerFlags = 0) + : SaveLayerRec(bounds, paint, nullptr, nullptr, 1.f, SkTileMode::kClamp, + saveLayerFlags, /*filters=*/{}) {} + + /** Sets fBounds, fPaint, fBackdrop, and fSaveLayerFlags. + + @param bounds layer dimensions; may be nullptr + @param paint applied to layer when overlaying prior layer; + may be nullptr + @param backdrop If not null, this causes the current layer to be filtered by + backdrop, and then drawn into the new layer + (respecting the current clip). + If null, the new layer is initialized with transparent-black. + @param saveLayerFlags SaveLayerRec options to modify layer + @return SaveLayerRec fully specified + */ + SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop, + SaveLayerFlags saveLayerFlags) + : SaveLayerRec(bounds, paint, backdrop, nullptr, 1.f, SkTileMode::kClamp, + saveLayerFlags, /*filters=*/{}) {} + + /** Sets fBounds, fBackdrop, fColorSpace, and fSaveLayerFlags. + + @param bounds layer dimensions; may be nullptr + @param paint applied to layer when overlaying prior layer; + may be nullptr + @param backdrop If not null, this causes the current layer to be filtered by + backdrop, and then drawn into the new layer + (respecting the current clip). + If null, the new layer is initialized with transparent-black. + @param colorSpace If not null, when the layer is restored, a color space + conversion will be applied from this color space to the + parent's color space. The restore paint and backdrop filters will + be applied in this color space. + If null, the new layer will inherit the color space from its + parent. + @param saveLayerFlags SaveLayerRec options to modify layer + @return SaveLayerRec fully specified + */ + SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop, + const SkColorSpace* colorSpace, SaveLayerFlags saveLayerFlags) + : SaveLayerRec(bounds, paint, backdrop, colorSpace, 1.f, SkTileMode::kClamp, + saveLayerFlags, /*filters=*/{}) {} + + + /** Sets fBounds, fBackdrop, fBackdropTileMode, fColorSpace, and fSaveLayerFlags. + + @param bounds layer dimensions; may be nullptr + @param paint applied to layer when overlaying prior layer; + may be nullptr + @param backdrop If not null, this causes the current layer to be filtered by + backdrop, and then drawn into the new layer + (respecting the current clip). + If null, the new layer is initialized with transparent-black. + @param backdropTileMode If the 'backdrop' is not null, or 'saveLayerFlags' has + kInitWithPrevious set, this tile mode is used when the new layer + would read outside the backdrop image's available content. + @param colorSpace If not null, when the layer is restored, a color space + conversion will be applied from this color space to the parent's + color space. The restore paint and backdrop filters will be + applied in this color space. + If null, the new layer will inherit the color space from its + parent. + @param saveLayerFlags SaveLayerRec options to modify layer + @return SaveLayerRec fully specified + */ + SaveLayerRec(const SkRect* bounds, const SkPaint* paint, const SkImageFilter* backdrop, + SkTileMode backdropTileMode, const SkColorSpace* colorSpace, + SaveLayerFlags saveLayerFlags) + : SaveLayerRec(bounds, paint, backdrop, colorSpace, 1.f, backdropTileMode, + saveLayerFlags, /*filters=*/{}) {} + + /** hints at layer size limit */ + const SkRect* fBounds = nullptr; + + /** modifies overlay */ + const SkPaint* fPaint = nullptr; + + FilterSpan fFilters = {}; + + /** + * If not null, this triggers the same initialization behavior as setting + * kInitWithPrevious_SaveLayerFlag on fSaveLayerFlags: the current layer is copied into + * the new layer, rather than initializing the new layer with transparent-black. + * This is then filtered by fBackdrop (respecting the current clip). + */ + const SkImageFilter* fBackdrop = nullptr; + + /** + * If the layer is initialized with prior content (and/or with a backdrop filter) and this + * would require sampling outside of the available backdrop, this is the tilemode applied + * to the boundary of the prior layer's image. + */ + SkTileMode fBackdropTileMode = SkTileMode::kClamp; + + /** + * If not null, this triggers a color space conversion when the layer is restored. It + * will be as if the layer's contents are drawn in this color space. Filters from + * fBackdrop and fPaint will be applied in this color space. + */ + const SkColorSpace* fColorSpace = nullptr; + + /** preserves LCD text, creates with prior layer contents */ + SaveLayerFlags fSaveLayerFlags = 0; + + private: + friend class SkCanvas; + friend class SkCanvasPriv; + + SaveLayerRec(const SkRect* bounds, + const SkPaint* paint, + const SkImageFilter* backdrop, + const SkColorSpace* colorSpace, + SkScalar backdropScale, + SkTileMode backdropTileMode, + SaveLayerFlags saveLayerFlags, + FilterSpan filters) + : fBounds(bounds) + , fPaint(paint) + , fFilters(filters) + , fBackdrop(backdrop) + , fBackdropTileMode(backdropTileMode) + , fColorSpace(colorSpace) + , fSaveLayerFlags(saveLayerFlags) + , fExperimentalBackdropScale(backdropScale) { + // We only allow the paint's image filter or the side-car list of filters -- not both. + SkASSERT(fFilters.empty() || !paint || !paint->getImageFilter()); + // To keep things reasonable (during deserialization), we limit filter list size. + SkASSERT(fFilters.size() <= kMaxFiltersPerLayer); + } + + // Relative scale factor that the image content used to initialize the layer when the + // kInitFromPrevious flag or a backdrop filter is used. + SkScalar fExperimentalBackdropScale = 1.f; + }; + + /** Saves SkMatrix and clip, and allocates SkSurface for subsequent drawing. + + Calling restore() discards changes to SkMatrix and clip, + and blends SkSurface with alpha opacity onto the prior layer. + + SkMatrix may be changed by translate(), scale(), rotate(), skew(), concat(), + setMatrix(), and resetMatrix(). Clip may be changed by clipRect(), clipRRect(), + clipPath(), clipRegion(). + + SaveLayerRec contains the state used to create the layer. + + Call restoreToCount() with returned value to restore this and subsequent saves. + + @param layerRec layer state + @return depth of save state stack before this call was made. + + example: https://fiddle.skia.org/c/@Canvas_saveLayer_3 + */ + int saveLayer(const SaveLayerRec& layerRec); + + /** Removes changes to SkMatrix and clip since SkCanvas state was + last saved. The state is removed from the stack. + + Does nothing if the stack is empty. + + example: https://fiddle.skia.org/c/@AutoCanvasRestore_restore + + example: https://fiddle.skia.org/c/@Canvas_restore + */ + void restore(); + + /** Returns the number of saved states, each containing: SkMatrix and clip. + Equals the number of save() calls less the number of restore() calls plus one. + The save count of a new canvas is one. + + @return depth of save state stack + + example: https://fiddle.skia.org/c/@Canvas_getSaveCount + */ + int getSaveCount() const; + + /** Restores state to SkMatrix and clip values when save(), saveLayer(), + saveLayerPreserveLCDTextRequests(), or saveLayerAlpha() returned saveCount. + + Does nothing if saveCount is greater than state stack count. + Restores state to initial values if saveCount is less than or equal to one. + + @param saveCount depth of state stack to restore + + example: https://fiddle.skia.org/c/@Canvas_restoreToCount + */ + void restoreToCount(int saveCount); + + /** Translates SkMatrix by dx along the x-axis and dy along the y-axis. + + Mathematically, replaces SkMatrix with a translation matrix + premultiplied with SkMatrix. + + This has the effect of moving the drawing by (dx, dy) before transforming + the result with SkMatrix. + + @param dx distance to translate on x-axis + @param dy distance to translate on y-axis + + example: https://fiddle.skia.org/c/@Canvas_translate + */ + void translate(SkScalar dx, SkScalar dy); + + /** Scales SkMatrix by sx on the x-axis and sy on the y-axis. + + Mathematically, replaces SkMatrix with a scale matrix + premultiplied with SkMatrix. + + This has the effect of scaling the drawing by (sx, sy) before transforming + the result with SkMatrix. + + @param sx amount to scale on x-axis + @param sy amount to scale on y-axis + + example: https://fiddle.skia.org/c/@Canvas_scale + */ + void scale(SkScalar sx, SkScalar sy); + + /** Rotates SkMatrix by degrees. Positive degrees rotates clockwise. + + Mathematically, replaces SkMatrix with a rotation matrix + premultiplied with SkMatrix. + + This has the effect of rotating the drawing by degrees before transforming + the result with SkMatrix. + + @param degrees amount to rotate, in degrees + + example: https://fiddle.skia.org/c/@Canvas_rotate + */ + void rotate(SkScalar degrees); + + /** Rotates SkMatrix by degrees about a point at (px, py). Positive degrees rotates + clockwise. + + Mathematically, constructs a rotation matrix; premultiplies the rotation matrix by + a translation matrix; then replaces SkMatrix with the resulting matrix + premultiplied with SkMatrix. + + This has the effect of rotating the drawing about a given point before + transforming the result with SkMatrix. + + @param degrees amount to rotate, in degrees + @param px x-axis value of the point to rotate about + @param py y-axis value of the point to rotate about + + example: https://fiddle.skia.org/c/@Canvas_rotate_2 + */ + void rotate(SkScalar degrees, SkScalar px, SkScalar py); + + /** Skews SkMatrix by sx on the x-axis and sy on the y-axis. A positive value of sx + skews the drawing right as y-axis values increase; a positive value of sy skews + the drawing down as x-axis values increase. + + Mathematically, replaces SkMatrix with a skew matrix premultiplied with SkMatrix. + + This has the effect of skewing the drawing by (sx, sy) before transforming + the result with SkMatrix. + + @param sx amount to skew on x-axis + @param sy amount to skew on y-axis + + example: https://fiddle.skia.org/c/@Canvas_skew + */ + void skew(SkScalar sx, SkScalar sy); + + /** Replaces SkMatrix with matrix premultiplied with existing SkMatrix. + + This has the effect of transforming the drawn geometry by matrix, before + transforming the result with existing SkMatrix. + + @param matrix matrix to premultiply with existing SkMatrix + + example: https://fiddle.skia.org/c/@Canvas_concat + */ + void concat(const SkMatrix& matrix); + void concat(const SkM44&); + + /** Replaces SkMatrix with matrix. + Unlike concat(), any prior matrix state is overwritten. + + @param matrix matrix to copy, replacing existing SkMatrix + + example: https://fiddle.skia.org/c/@Canvas_setMatrix + */ + void setMatrix(const SkM44& matrix); + + // DEPRECATED -- use SkM44 version + void setMatrix(const SkMatrix& matrix); + + /** Sets SkMatrix to the identity matrix. + Any prior matrix state is overwritten. + + example: https://fiddle.skia.org/c/@Canvas_resetMatrix + */ + void resetMatrix(); + + /** Replaces clip with the intersection or difference of clip and rect, + with an aliased or anti-aliased clip edge. rect is transformed by SkMatrix + before it is combined with clip. + + @param rect SkRect to combine with clip + @param op SkClipOp to apply to clip + @param doAntiAlias true if clip is to be anti-aliased + + example: https://fiddle.skia.org/c/@Canvas_clipRect + */ + void clipRect(const SkRect& rect, SkClipOp op, bool doAntiAlias); + + /** Replaces clip with the intersection or difference of clip and rect. + Resulting clip is aliased; pixels are fully contained by the clip. + rect is transformed by SkMatrix before it is combined with clip. + + @param rect SkRect to combine with clip + @param op SkClipOp to apply to clip + */ + void clipRect(const SkRect& rect, SkClipOp op) { + this->clipRect(rect, op, false); + } + + /** Replaces clip with the intersection of clip and rect. + Resulting clip is aliased; pixels are fully contained by the clip. + rect is transformed by SkMatrix + before it is combined with clip. + + @param rect SkRect to combine with clip + @param doAntiAlias true if clip is to be anti-aliased + */ + void clipRect(const SkRect& rect, bool doAntiAlias = false) { + this->clipRect(rect, SkClipOp::kIntersect, doAntiAlias); + } + + void clipIRect(const SkIRect& irect, SkClipOp op = SkClipOp::kIntersect) { + this->clipRect(SkRect::Make(irect), op, false); + } + + /** Sets the maximum clip rectangle, which can be set by clipRect(), clipRRect() and + clipPath() and intersect the current clip with the specified rect. + The maximum clip affects only future clipping operations; it is not retroactive. + The clip restriction is not recorded in pictures. + + Pass an empty rect to disable maximum clip. + This private API is for use by Android framework only. + + DEPRECATED: Replace usage with SkAndroidFrameworkUtils::replaceClip() + + @param rect maximum allowed clip in device coordinates + */ + void androidFramework_setDeviceClipRestriction(const SkIRect& rect); + + /** Replaces clip with the intersection or difference of clip and rrect, + with an aliased or anti-aliased clip edge. + rrect is transformed by SkMatrix + before it is combined with clip. + + @param rrect SkRRect to combine with clip + @param op SkClipOp to apply to clip + @param doAntiAlias true if clip is to be anti-aliased + + example: https://fiddle.skia.org/c/@Canvas_clipRRect + */ + void clipRRect(const SkRRect& rrect, SkClipOp op, bool doAntiAlias); + + /** Replaces clip with the intersection or difference of clip and rrect. + Resulting clip is aliased; pixels are fully contained by the clip. + rrect is transformed by SkMatrix before it is combined with clip. + + @param rrect SkRRect to combine with clip + @param op SkClipOp to apply to clip + */ + void clipRRect(const SkRRect& rrect, SkClipOp op) { + this->clipRRect(rrect, op, false); + } + + /** Replaces clip with the intersection of clip and rrect, + with an aliased or anti-aliased clip edge. + rrect is transformed by SkMatrix before it is combined with clip. + + @param rrect SkRRect to combine with clip + @param doAntiAlias true if clip is to be anti-aliased + */ + void clipRRect(const SkRRect& rrect, bool doAntiAlias = false) { + this->clipRRect(rrect, SkClipOp::kIntersect, doAntiAlias); + } + + /** Replaces clip with the intersection or difference of clip and path, + with an aliased or anti-aliased clip edge. SkPath::FillType determines if path + describes the area inside or outside its contours; and if path contour overlaps + itself or another path contour, whether the overlaps form part of the area. + path is transformed by SkMatrix before it is combined with clip. + + @param path SkPath to combine with clip + @param op SkClipOp to apply to clip + @param doAntiAlias true if clip is to be anti-aliased + + example: https://fiddle.skia.org/c/@Canvas_clipPath + */ + void clipPath(const SkPath& path, SkClipOp op, bool doAntiAlias); + + /** Replaces clip with the intersection or difference of clip and path. + Resulting clip is aliased; pixels are fully contained by the clip. + SkPath::FillType determines if path + describes the area inside or outside its contours; and if path contour overlaps + itself or another path contour, whether the overlaps form part of the area. + path is transformed by SkMatrix + before it is combined with clip. + + @param path SkPath to combine with clip + @param op SkClipOp to apply to clip + */ + void clipPath(const SkPath& path, SkClipOp op) { + this->clipPath(path, op, false); + } + + /** Replaces clip with the intersection of clip and path. + Resulting clip is aliased; pixels are fully contained by the clip. + SkPath::FillType determines if path + describes the area inside or outside its contours; and if path contour overlaps + itself or another path contour, whether the overlaps form part of the area. + path is transformed by SkMatrix before it is combined with clip. + + @param path SkPath to combine with clip + @param doAntiAlias true if clip is to be anti-aliased + */ + void clipPath(const SkPath& path, bool doAntiAlias = false) { + this->clipPath(path, SkClipOp::kIntersect, doAntiAlias); + } + + void clipShader(sk_sp, SkClipOp = SkClipOp::kIntersect); + + /** Replaces clip with the intersection or difference of clip and SkRegion deviceRgn. + Resulting clip is aliased; pixels are fully contained by the clip. + deviceRgn is unaffected by SkMatrix. + + @param deviceRgn SkRegion to combine with clip + @param op SkClipOp to apply to clip + + example: https://fiddle.skia.org/c/@Canvas_clipRegion + */ + void clipRegion(const SkRegion& deviceRgn, SkClipOp op = SkClipOp::kIntersect); + + /** Returns true if SkRect rect, transformed by SkMatrix, can be quickly determined to be + outside of clip. May return false even though rect is outside of clip. + + Use to check if an area to be drawn is clipped out, to skip subsequent draw calls. + + @param rect SkRect to compare with clip + @return true if rect, transformed by SkMatrix, does not intersect clip + + example: https://fiddle.skia.org/c/@Canvas_quickReject + */ + bool quickReject(const SkRect& rect) const; + + /** Returns true if path, transformed by SkMatrix, can be quickly determined to be + outside of clip. May return false even though path is outside of clip. + + Use to check if an area to be drawn is clipped out, to skip subsequent draw calls. + + @param path SkPath to compare with clip + @return true if path, transformed by SkMatrix, does not intersect clip + + example: https://fiddle.skia.org/c/@Canvas_quickReject_2 + */ + bool quickReject(const SkPath& path) const; + + /** Returns bounds of clip, transformed by inverse of SkMatrix. If clip is empty, + return SkRect::MakeEmpty, where all SkRect sides equal zero. + + SkRect returned is outset by one to account for partial pixel coverage if clip + is anti-aliased. + + @return bounds of clip in local coordinates + + example: https://fiddle.skia.org/c/@Canvas_getLocalClipBounds + */ + SkRect getLocalClipBounds() const; + + /** Returns bounds of clip, transformed by inverse of SkMatrix. If clip is empty, + return false, and set bounds to SkRect::MakeEmpty, where all SkRect sides equal zero. + + bounds is outset by one to account for partial pixel coverage if clip + is anti-aliased. + + @param bounds SkRect of clip in local coordinates + @return true if clip bounds is not empty + */ + bool getLocalClipBounds(SkRect* bounds) const { + *bounds = this->getLocalClipBounds(); + return !bounds->isEmpty(); + } + + /** Returns SkIRect bounds of clip, unaffected by SkMatrix. If clip is empty, + return SkRect::MakeEmpty, where all SkRect sides equal zero. + + Unlike getLocalClipBounds(), returned SkIRect is not outset. + + @return bounds of clip in base device coordinates + + example: https://fiddle.skia.org/c/@Canvas_getDeviceClipBounds + */ + SkIRect getDeviceClipBounds() const; + + /** Returns SkIRect bounds of clip, unaffected by SkMatrix. If clip is empty, + return false, and set bounds to SkRect::MakeEmpty, where all SkRect sides equal zero. + + Unlike getLocalClipBounds(), bounds is not outset. + + @param bounds SkRect of clip in device coordinates + @return true if clip bounds is not empty + */ + bool getDeviceClipBounds(SkIRect* bounds) const { + *bounds = this->getDeviceClipBounds(); + return !bounds->isEmpty(); + } + + /** Fills clip with color color. + mode determines how ARGB is combined with destination. + + @param color unpremultiplied ARGB + @param mode SkBlendMode used to combine source color and destination + + example: https://fiddle.skia.org/c/@Canvas_drawColor + */ + void drawColor(SkColor color, SkBlendMode mode = SkBlendMode::kSrcOver) { + this->drawColor(SkColor4f::FromColor(color), mode); + } + + /** Fills clip with color color. + mode determines how ARGB is combined with destination. + + @param color SkColor4f representing unpremultiplied color. + @param mode SkBlendMode used to combine source color and destination + */ + void drawColor(const SkColor4f& color, SkBlendMode mode = SkBlendMode::kSrcOver); + + /** Fills clip with color color using SkBlendMode::kSrc. + This has the effect of replacing all pixels contained by clip with color. + + @param color unpremultiplied ARGB + */ + void clear(SkColor color) { + this->clear(SkColor4f::FromColor(color)); + } + + /** Fills clip with color color using SkBlendMode::kSrc. + This has the effect of replacing all pixels contained by clip with color. + + @param color SkColor4f representing unpremultiplied color. + */ + void clear(const SkColor4f& color) { + this->drawColor(color, SkBlendMode::kSrc); + } + + /** Makes SkCanvas contents undefined. Subsequent calls that read SkCanvas pixels, + such as drawing with SkBlendMode, return undefined results. discard() does + not change clip or SkMatrix. + + discard() may do nothing, depending on the implementation of SkSurface or SkDevice + that created SkCanvas. + + discard() allows optimized performance on subsequent draws by removing + cached data associated with SkSurface or SkDevice. + It is not necessary to call discard() once done with SkCanvas; + any cached data is deleted when owning SkSurface or SkDevice is deleted. + */ + void discard() { this->onDiscard(); } + + /** Fills clip with SkPaint paint. SkPaint components, SkShader, + SkColorFilter, SkImageFilter, and SkBlendMode affect drawing; + SkMaskFilter and SkPathEffect in paint are ignored. + + @param paint graphics state used to fill SkCanvas + + example: https://fiddle.skia.org/c/@Canvas_drawPaint + */ + void drawPaint(const SkPaint& paint); + + /** \enum SkCanvas::PointMode + Selects if an array of points are drawn as discrete points, as lines, or as + an open polygon. + */ + enum PointMode { + kPoints_PointMode, //!< draw each point separately + kLines_PointMode, //!< draw each pair of points as a line segment + kPolygon_PointMode, //!< draw the array of points as a open polygon + }; + + /** Draws pts using clip, SkMatrix and SkPaint paint. + count is the number of points; if count is less than one, has no effect. + mode may be one of: kPoints_PointMode, kLines_PointMode, or kPolygon_PointMode. + + If mode is kPoints_PointMode, the shape of point drawn depends on paint + SkPaint::Cap. If paint is set to SkPaint::kRound_Cap, each point draws a + circle of diameter SkPaint stroke width. If paint is set to SkPaint::kSquare_Cap + or SkPaint::kButt_Cap, each point draws a square of width and height + SkPaint stroke width. + + If mode is kLines_PointMode, each pair of points draws a line segment. + One line is drawn for every two points; each point is used once. If count is odd, + the final point is ignored. + + If mode is kPolygon_PointMode, each adjacent pair of points draws a line segment. + count minus one lines are drawn; the first and last point are used once. + + Each line segment respects paint SkPaint::Cap and SkPaint stroke width. + SkPaint::Style is ignored, as if were set to SkPaint::kStroke_Style. + + Always draws each element one at a time; is not affected by + SkPaint::Join, and unlike drawPath(), does not create a mask from all points + and lines before drawing. + + @param mode whether pts draws points or lines + @param count number of points in the array + @param pts array of points to draw + @param paint stroke, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawPoints + */ + void drawPoints(PointMode mode, SkSpan, const SkPaint& paint); + + /** Draws point at (x, y) using clip, SkMatrix and SkPaint paint. + + The shape of point drawn depends on paint SkPaint::Cap. + If paint is set to SkPaint::kRound_Cap, draw a circle of diameter + SkPaint stroke width. If paint is set to SkPaint::kSquare_Cap or SkPaint::kButt_Cap, + draw a square of width and height SkPaint stroke width. + SkPaint::Style is ignored, as if were set to SkPaint::kStroke_Style. + + @param x left edge of circle or square + @param y top edge of circle or square + @param paint stroke, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawPoint + */ + void drawPoint(SkScalar x, SkScalar y, const SkPaint& paint); + + /** Draws point p using clip, SkMatrix and SkPaint paint. + + The shape of point drawn depends on paint SkPaint::Cap. + If paint is set to SkPaint::kRound_Cap, draw a circle of diameter + SkPaint stroke width. If paint is set to SkPaint::kSquare_Cap or SkPaint::kButt_Cap, + draw a square of width and height SkPaint stroke width. + SkPaint::Style is ignored, as if were set to SkPaint::kStroke_Style. + + @param p top-left edge of circle or square + @param paint stroke, blend, color, and so on, used to draw + */ + void drawPoint(SkPoint p, const SkPaint& paint) { + this->drawPoint(p.x(), p.y(), paint); + } + + /** Draws line segment from (x0, y0) to (x1, y1) using clip, SkMatrix, and SkPaint paint. + In paint: SkPaint stroke width describes the line thickness; + SkPaint::Cap draws the end rounded or square; + SkPaint::Style is ignored, as if were set to SkPaint::kStroke_Style. + + @param x0 start of line segment on x-axis + @param y0 start of line segment on y-axis + @param x1 end of line segment on x-axis + @param y1 end of line segment on y-axis + @param paint stroke, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawLine + */ + void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const SkPaint& paint); + + /** Draws line segment from p0 to p1 using clip, SkMatrix, and SkPaint paint. + In paint: SkPaint stroke width describes the line thickness; + SkPaint::Cap draws the end rounded or square; + SkPaint::Style is ignored, as if were set to SkPaint::kStroke_Style. + + @param p0 start of line segment + @param p1 end of line segment + @param paint stroke, blend, color, and so on, used to draw + */ + void drawLine(SkPoint p0, SkPoint p1, const SkPaint& paint) { + this->drawLine(p0.x(), p0.y(), p1.x(), p1.y(), paint); + } + + /** Draws SkRect rect using clip, SkMatrix, and SkPaint paint. + In paint: SkPaint::Style determines if rectangle is stroked or filled; + if stroked, SkPaint stroke width describes the line thickness, and + SkPaint::Join draws the corners rounded or square. + + @param rect rectangle to draw + @param paint stroke or fill, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawRect + */ + void drawRect(const SkRect& rect, const SkPaint& paint); + + /** Draws SkIRect rect using clip, SkMatrix, and SkPaint paint. + In paint: SkPaint::Style determines if rectangle is stroked or filled; + if stroked, SkPaint stroke width describes the line thickness, and + SkPaint::Join draws the corners rounded or square. + + @param rect rectangle to draw + @param paint stroke or fill, blend, color, and so on, used to draw + */ + void drawIRect(const SkIRect& rect, const SkPaint& paint) { + SkRect r; + r.set(rect); // promotes the ints to scalars + this->drawRect(r, paint); + } + + /** Draws SkRegion region using clip, SkMatrix, and SkPaint paint. + In paint: SkPaint::Style determines if rectangle is stroked or filled; + if stroked, SkPaint stroke width describes the line thickness, and + SkPaint::Join draws the corners rounded or square. + + @param region region to draw + @param paint SkPaint stroke or fill, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawRegion + */ + void drawRegion(const SkRegion& region, const SkPaint& paint); + + /** Draws oval oval using clip, SkMatrix, and SkPaint. + In paint: SkPaint::Style determines if oval is stroked or filled; + if stroked, SkPaint stroke width describes the line thickness. + + @param oval SkRect bounds of oval + @param paint SkPaint stroke or fill, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawOval + */ + void drawOval(const SkRect& oval, const SkPaint& paint); + + /** Draws SkRRect rrect using clip, SkMatrix, and SkPaint paint. + In paint: SkPaint::Style determines if rrect is stroked or filled; + if stroked, SkPaint stroke width describes the line thickness. + + rrect may represent a rectangle, circle, oval, uniformly rounded rectangle, or + may have any combination of positive non-square radii for the four corners. + + @param rrect SkRRect with up to eight corner radii to draw + @param paint SkPaint stroke or fill, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawRRect + */ + void drawRRect(const SkRRect& rrect, const SkPaint& paint); + + /** Draws SkRRect outer and inner + using clip, SkMatrix, and SkPaint paint. + outer must contain inner or the drawing is undefined. + In paint: SkPaint::Style determines if SkRRect is stroked or filled; + if stroked, SkPaint stroke width describes the line thickness. + If stroked and SkRRect corner has zero length radii, SkPaint::Join can + draw corners rounded or square. + + GPU-backed platforms optimize drawing when both outer and inner are + concave and outer contains inner. These platforms may not be able to draw + SkPath built with identical data as fast. + + @param outer SkRRect outer bounds to draw + @param inner SkRRect inner bounds to draw + @param paint SkPaint stroke or fill, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawDRRect_a + example: https://fiddle.skia.org/c/@Canvas_drawDRRect_b + */ + void drawDRRect(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint); + + /** Draws circle at (cx, cy) with radius using clip, SkMatrix, and SkPaint paint. + If radius is zero or less, nothing is drawn. + In paint: SkPaint::Style determines if circle is stroked or filled; + if stroked, SkPaint stroke width describes the line thickness. + + @param cx circle center on the x-axis + @param cy circle center on the y-axis + @param radius half the diameter of circle + @param paint SkPaint stroke or fill, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawCircle + */ + void drawCircle(SkScalar cx, SkScalar cy, SkScalar radius, const SkPaint& paint); + + /** Draws circle at center with radius using clip, SkMatrix, and SkPaint paint. + If radius is zero or less, nothing is drawn. + In paint: SkPaint::Style determines if circle is stroked or filled; + if stroked, SkPaint stroke width describes the line thickness. + + @param center circle center + @param radius half the diameter of circle + @param paint SkPaint stroke or fill, blend, color, and so on, used to draw + */ + void drawCircle(SkPoint center, SkScalar radius, const SkPaint& paint) { + this->drawCircle(center.x(), center.y(), radius, paint); + } + + /** Draws arc using clip, SkMatrix, and SkPaint paint. + + Arc is part of oval bounded by oval, sweeping from startAngle to startAngle plus + sweepAngle. startAngle and sweepAngle are in degrees. + + startAngle of zero places start point at the right middle edge of oval. + A positive sweepAngle places arc end point clockwise from start point; + a negative sweepAngle places arc end point counterclockwise from start point. + sweepAngle may exceed 360 degrees, a full circle. + If useCenter is true, draw a wedge that includes lines from oval + center to arc end points. If useCenter is false, draw arc between end points. + + If SkRect oval is empty or sweepAngle is zero, nothing is drawn. + + @param oval SkRect bounds of oval containing arc to draw + @param startAngle angle in degrees where arc begins + @param sweepAngle sweep angle in degrees; positive is clockwise + @param useCenter if true, include the center of the oval + @param paint SkPaint stroke or fill, blend, color, and so on, used to draw + */ + void drawArc(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, + bool useCenter, const SkPaint& paint); + + /** Draws arc using clip, SkMatrix, and SkPaint paint. + + Arc is part of oval bounded by oval, sweeping from startAngle to startAngle plus + sweepAngle. startAngle and sweepAngle are in degrees. + + startAngle of zero places start point at the right middle edge of oval. + A positive sweepAngle places arc end point clockwise from start point; + a negative sweepAngle places arc end point counterclockwise from start point. + sweepAngle may exceed 360 degrees, a full circle. + If useCenter is true, draw a wedge that includes lines from oval + center to arc end points. If useCenter is false, draw arc between end points. + + If SkRect oval is empty or sweepAngle is zero, nothing is drawn. + + @param arc SkArc specifying oval, startAngle, sweepAngle, and arc-vs-wedge + @param paint SkPaint stroke or fill, blend, color, and so on, used to draw + */ + void drawArc(const SkArc& arc, const SkPaint& paint) { + this->drawArc(arc.fOval, arc.fStartAngle, arc.fSweepAngle, arc.isWedge(), paint); + } + + /** Draws SkRRect bounded by SkRect rect, with corner radii (rx, ry) using clip, + SkMatrix, and SkPaint paint. + + In paint: SkPaint::Style determines if SkRRect is stroked or filled; + if stroked, SkPaint stroke width describes the line thickness. + If rx or ry are less than zero, they are treated as if they are zero. + If rx plus ry exceeds rect width or rect height, radii are scaled down to fit. + If rx and ry are zero, SkRRect is drawn as SkRect and if stroked is affected by + SkPaint::Join. + + @param rect SkRect bounds of SkRRect to draw + @param rx axis length on x-axis of oval describing rounded corners + @param ry axis length on y-axis of oval describing rounded corners + @param paint stroke, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawRoundRect + */ + void drawRoundRect(const SkRect& rect, SkScalar rx, SkScalar ry, const SkPaint& paint); + + /** Draws SkPath path using clip, SkMatrix, and SkPaint paint. + SkPath contains an array of path contour, each of which may be open or closed. + + In paint: SkPaint::Style determines if SkRRect is stroked or filled: + if filled, SkPath::FillType determines whether path contour describes inside or + outside of fill; if stroked, SkPaint stroke width describes the line thickness, + SkPaint::Cap describes line ends, and SkPaint::Join describes how + corners are drawn. + + @param path SkPath to draw + @param paint stroke, blend, color, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawPath + */ + void drawPath(const SkPath& path, const SkPaint& paint); + + void drawImage(const SkImage* image, SkScalar left, SkScalar top) { + this->drawImage(image, left, top, SkSamplingOptions(), nullptr); + } + void drawImage(const sk_sp& image, SkScalar left, SkScalar top) { + this->drawImage(image.get(), left, top, SkSamplingOptions(), nullptr); + } + + /** \enum SkCanvas::SrcRectConstraint + SrcRectConstraint controls the behavior at the edge of source SkRect, + provided to drawImageRect() when there is any filtering. If kStrict is set, + then extra code is used to ensure it never samples outside of the src-rect. + kStrict_SrcRectConstraint disables the use of mipmaps and anisotropic filtering. + */ + enum SrcRectConstraint { + kStrict_SrcRectConstraint, //!< sample only inside bounds; slower + kFast_SrcRectConstraint, //!< sample outside bounds; faster + }; + + void drawImage(const SkImage*, SkScalar x, SkScalar y, const SkSamplingOptions&, + const SkPaint* = nullptr); + void drawImage(const sk_sp& image, SkScalar x, SkScalar y, + const SkSamplingOptions& sampling, const SkPaint* paint = nullptr) { + this->drawImage(image.get(), x, y, sampling, paint); + } + void drawImageRect(const SkImage*, const SkRect& src, const SkRect& dst, + const SkSamplingOptions&, const SkPaint*, SrcRectConstraint); + void drawImageRect(const SkImage*, const SkRect& dst, const SkSamplingOptions&, + const SkPaint* = nullptr); + void drawImageRect(const sk_sp& image, const SkRect& src, const SkRect& dst, + const SkSamplingOptions& sampling, const SkPaint* paint, + SrcRectConstraint constraint) { + this->drawImageRect(image.get(), src, dst, sampling, paint, constraint); + } + void drawImageRect(const sk_sp& image, const SkRect& dst, + const SkSamplingOptions& sampling, const SkPaint* paint = nullptr) { + this->drawImageRect(image.get(), dst, sampling, paint); + } + + /** Draws SkImage image stretched proportionally to fit into SkRect dst. + SkIRect center divides the image into nine sections: four sides, four corners, and + the center. Corners are unmodified or scaled down proportionately if their sides + are larger than dst; center and four sides are scaled to fit remaining space, if any. + + Additionally transform draw using clip, SkMatrix, and optional SkPaint paint. + + If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter, and + SkBlendMode. If image is kAlpha_8_SkColorType, apply SkShader. + If paint contains SkMaskFilter, generate mask from image bounds. + Any SkMaskFilter on paint is ignored as is paint anti-aliasing state. + + If generated mask extends beyond image bounds, replicate image edge colors, just + as SkShader made from SkImage::makeShader with SkShader::kClamp_TileMode set + replicates the image edge color when it samples outside of its bounds. + + @param image SkImage containing pixels, dimensions, and format + @param center SkIRect edge of image corners and sides + @param dst destination SkRect of image to draw to + @param filter what technique to use when sampling the image + @param paint SkPaint containing SkBlendMode, SkColorFilter, SkImageFilter, + and so on; or nullptr + */ + void drawImageNine(const SkImage* image, const SkIRect& center, const SkRect& dst, + SkFilterMode filter, const SkPaint* paint = nullptr); + + /** \struct SkCanvas::Lattice + SkCanvas::Lattice divides SkBitmap or SkImage into a rectangular grid. + Grid entries on even columns and even rows are fixed; these entries are + always drawn at their original size if the destination is large enough. + If the destination side is too small to hold the fixed entries, all fixed + entries are proportionately scaled down to fit. + The grid entries not on even columns and rows are scaled to fit the + remaining space, if any. + */ + struct Lattice { + + /** \enum SkCanvas::Lattice::RectType + Optional setting per rectangular grid entry to make it transparent, + or to fill the grid entry with a color. + */ + enum RectType : uint8_t { + kDefault = 0, //!< draws SkBitmap into lattice rectangle + kTransparent, //!< skips lattice rectangle by making it transparent + kFixedColor, //!< draws one of fColors into lattice rectangle + }; + + const int* fXDivs; //!< x-axis values dividing bitmap + const int* fYDivs; //!< y-axis values dividing bitmap + const RectType* fRectTypes; //!< array of fill types + int fXCount; //!< number of x-coordinates + int fYCount; //!< number of y-coordinates + const SkIRect* fBounds; //!< source bounds to draw from + const SkColor* fColors; //!< array of colors + }; + + /** Draws SkImage image stretched proportionally to fit into SkRect dst. + + SkCanvas::Lattice lattice divides image into a rectangular grid. + Each intersection of an even-numbered row and column is fixed; + fixed lattice elements never scale larger than their initial + size and shrink proportionately when all fixed elements exceed the bitmap + dimension. All other grid elements scale to fill the available space, if any. + + Additionally transform draw using clip, SkMatrix, and optional SkPaint paint. + + If SkPaint paint is supplied, apply SkColorFilter, alpha, SkImageFilter, and + SkBlendMode. If image is kAlpha_8_SkColorType, apply SkShader. + If paint contains SkMaskFilter, generate mask from image bounds. + Any SkMaskFilter on paint is ignored as is paint anti-aliasing state. + + If generated mask extends beyond bitmap bounds, replicate bitmap edge colors, + just as SkShader made from SkShader::MakeBitmapShader with + SkShader::kClamp_TileMode set replicates the bitmap edge color when it samples + outside of its bounds. + + @param image SkImage containing pixels, dimensions, and format + @param lattice division of bitmap into fixed and variable rectangles + @param dst destination SkRect of image to draw to + @param filter what technique to use when sampling the image + @param paint SkPaint containing SkBlendMode, SkColorFilter, SkImageFilter, + and so on; or nullptr + */ + void drawImageLattice(const SkImage* image, const Lattice& lattice, const SkRect& dst, + SkFilterMode filter, const SkPaint* paint = nullptr); + void drawImageLattice(const SkImage* image, const Lattice& lattice, const SkRect& dst) { + this->drawImageLattice(image, lattice, dst, SkFilterMode::kNearest, nullptr); + } + + /** + * Experimental. Controls anti-aliasing of each edge of images in an image-set. + */ + enum QuadAAFlags : unsigned { + kLeft_QuadAAFlag = 0b0001, + kTop_QuadAAFlag = 0b0010, + kRight_QuadAAFlag = 0b0100, + kBottom_QuadAAFlag = 0b1000, + + kNone_QuadAAFlags = 0b0000, + kAll_QuadAAFlags = 0b1111, + }; + + /** This is used by the experimental API below. */ + struct SK_API ImageSetEntry { + ImageSetEntry(sk_sp image, const SkRect& srcRect, const SkRect& dstRect, + int matrixIndex, float alpha, unsigned aaFlags, bool hasClip); + + ImageSetEntry(sk_sp image, const SkRect& srcRect, const SkRect& dstRect, + float alpha, unsigned aaFlags); + + ImageSetEntry(); + ~ImageSetEntry(); + ImageSetEntry(const ImageSetEntry&); + ImageSetEntry& operator=(const ImageSetEntry&); + + sk_sp fImage; + SkRect fSrcRect; + SkRect fDstRect; + int fMatrixIndex = -1; // Index into the preViewMatrices arg, or < 0 + float fAlpha = 1.f; + unsigned fAAFlags = kNone_QuadAAFlags; // QuadAAFlags + bool fHasClip = false; // True to use next 4 points in dstClip arg as quad + }; + + /** + * This is an experimental API for the SkiaRenderer Chromium project, and its API will surely + * evolve if it is not removed outright. + * + * This behaves very similarly to drawRect() combined with a clipPath() formed by clip + * quadrilateral. 'rect' and 'clip' are in the same coordinate space. If 'clip' is null, then it + * is as if the rectangle was not clipped (or, alternatively, clipped to itself). If not null, + * then it must provide 4 points. + * + * In addition to combining the draw and clipping into one operation, this function adds the + * additional capability of controlling each of the rectangle's edges anti-aliasing + * independently. The edges of the clip will respect the per-edge AA flags. It is required that + * 'clip' be contained inside 'rect'. In terms of mapping to edge labels, the 'clip' points + * should be ordered top-left, top-right, bottom-right, bottom-left so that the edge between [0] + * and [1] is "top", [1] and [2] is "right", [2] and [3] is "bottom", and [3] and [0] is "left". + * This ordering matches SkRect::toQuad(). + * + * This API only draws solid color, filled rectangles so it does not accept a full SkPaint. + */ + void experimental_DrawEdgeAAQuad(const SkRect& rect, const SkPoint clip[4], QuadAAFlags aaFlags, + const SkColor4f& color, SkBlendMode mode); + void experimental_DrawEdgeAAQuad(const SkRect& rect, const SkPoint clip[4], QuadAAFlags aaFlags, + SkColor color, SkBlendMode mode) { + this->experimental_DrawEdgeAAQuad(rect, clip, aaFlags, SkColor4f::FromColor(color), mode); + } + + /** + * This is an bulk variant of experimental_DrawEdgeAAQuad() that renders 'cnt' textured quads. + * For each entry, 'fDstRect' is rendered with its clip (determined by entry's 'fHasClip' and + * the current index in 'dstClip'). The entry's fImage is applied to the destination rectangle + * by sampling from 'fSrcRect' sub-image. The corners of 'fSrcRect' map to the corners of + * 'fDstRect', just like in drawImageRect(), and they will be properly interpolated when + * applying a clip. + * + * Like experimental_DrawEdgeAAQuad(), each entry can specify edge AA flags that apply to both + * the destination rect and its clip. + * + * If provided, the 'dstClips' array must have length equal 4 * the number of entries with + * fHasClip true. If 'dstClips' is null, every entry must have 'fHasClip' set to false. The + * destination clip coordinates will be read consecutively with the image set entries, advancing + * by 4 points every time an entry with fHasClip is passed. + * + * This entry point supports per-entry manipulations to the canvas's current matrix. If an + * entry provides 'fMatrixIndex' >= 0, it will be drawn as if the canvas's CTM was + * canvas->getTotalMatrix() * preViewMatrices[fMatrixIndex]. If 'fMatrixIndex' is less than 0, + * the pre-view matrix transform is implicitly the identity, so it will be drawn using just the + * current canvas matrix. The pre-view matrix modifies the canvas's view matrix, it does not + * affect the local coordinates of each entry. + * + * An optional paint may be provided, which supports the same subset of features usable with + * drawImageRect (i.e. assumed to be filled and no path effects). When a paint is provided, the + * image set is drawn as if each image used the applied paint independently, so each is affected + * by the image, color, and/or mask filter. + */ + void experimental_DrawEdgeAAImageSet(const ImageSetEntry imageSet[], int cnt, + const SkPoint dstClips[], const SkMatrix preViewMatrices[], + const SkSamplingOptions&, const SkPaint* paint = nullptr, + SrcRectConstraint constraint = kStrict_SrcRectConstraint); + + /** Draws text, with origin at (x, y), using clip, SkMatrix, SkFont font, + and SkPaint paint. + + When encoding is SkTextEncoding::kUTF8, SkTextEncoding::kUTF16, or + SkTextEncoding::kUTF32, this function uses the default + character-to-glyph mapping from the SkTypeface in font. It does not + perform typeface fallback for characters not found in the SkTypeface. + It does not perform kerning or other complex shaping; glyphs are + positioned based on their default advances. + + Text meaning depends on SkTextEncoding. + + Text size is affected by SkMatrix and SkFont text size. Default text + size is 12 point. + + All elements of paint: SkPathEffect, SkMaskFilter, SkShader, + SkColorFilter, and SkImageFilter; apply to text. By + default, draws filled black glyphs. + + @param text character code points or glyphs drawn + @param byteLength byte length of text array + @param encoding text encoding used in the text array + @param x start of text on x-axis + @param y start of text on y-axis + @param font typeface, text size and so, used to describe the text + @param paint blend, color, and so on, used to draw + */ + void drawSimpleText(const void* text, size_t byteLength, SkTextEncoding encoding, + SkScalar x, SkScalar y, const SkFont& font, const SkPaint& paint); + + /** Draws null terminated string, with origin at (x, y), using clip, SkMatrix, + SkFont font, and SkPaint paint. + + This function uses the default character-to-glyph mapping from the + SkTypeface in font. It does not perform typeface fallback for + characters not found in the SkTypeface. It does not perform kerning; + glyphs are positioned based on their default advances. + + String str is encoded as UTF-8. + + Text size is affected by SkMatrix and font text size. Default text + size is 12 point. + + All elements of paint: SkPathEffect, SkMaskFilter, SkShader, + SkColorFilter, and SkImageFilter; apply to text. By + default, draws filled black glyphs. + + @param str character code points drawn, + ending with a char value of zero + @param x start of string on x-axis + @param y start of string on y-axis + @param font typeface, text size and so, used to describe the text + @param paint blend, color, and so on, used to draw + */ + void drawString(const char str[], SkScalar x, SkScalar y, const SkFont& font, + const SkPaint& paint) { + this->drawSimpleText(str, strlen(str), SkTextEncoding::kUTF8, x, y, font, paint); + } + + /** Draws SkString, with origin at (x, y), using clip, SkMatrix, SkFont font, + and SkPaint paint. + + This function uses the default character-to-glyph mapping from the + SkTypeface in font. It does not perform typeface fallback for + characters not found in the SkTypeface. It does not perform kerning; + glyphs are positioned based on their default advances. + + SkString str is encoded as UTF-8. + + Text size is affected by SkMatrix and SkFont text size. Default text + size is 12 point. + + All elements of paint: SkPathEffect, SkMaskFilter, SkShader, + SkColorFilter, and SkImageFilter; apply to text. By + default, draws filled black glyphs. + + @param str character code points drawn, + ending with a char value of zero + @param x start of string on x-axis + @param y start of string on y-axis + @param font typeface, text size and so, used to describe the text + @param paint blend, color, and so on, used to draw + */ + void drawString(const SkString& str, SkScalar x, SkScalar y, const SkFont& font, + const SkPaint& paint) { + this->drawSimpleText(str.c_str(), str.size(), SkTextEncoding::kUTF8, x, y, font, paint); + } + + /** Draws count glyphs, at positions relative to origin styled with font and paint with + supporting utf8 and cluster information. + + This function draw glyphs at the given positions relative to the given origin. + It does not perform typeface fallback for glyphs not found in the SkTypeface in font. + + The drawing obeys the current transform matrix and clipping. + + All elements of paint: SkPathEffect, SkMaskFilter, SkShader, + SkColorFilter, and SkImageFilter; apply to text. By + default, draws filled black glyphs. + + @param glyphs the span of glyphIDs to draw + @param positions where to draw each glyph relative to origin + @param clusters cluster information + @param utf8text utf8text supporting information for the glyphs + @param origin the origin of all the positions + @param font typeface, text size and so, used to describe the text + @param paint blend, color, and so on, used to draw + */ + void drawGlyphs(SkSpan glyphs, SkSpan positions, + SkSpan clusters, SkSpan utf8text, + SkPoint origin, const SkFont& font, const SkPaint& paint); + + /** Draws count glyphs, at positions relative to origin styled with font and paint. + + This function draw glyphs at the given positions relative to the given origin. + It does not perform typeface fallback for glyphs not found in the SkTypeface in font. + + The drawing obeys the current transform matrix and clipping. + + All elements of paint: SkPathEffect, SkMaskFilter, SkShader, + SkColorFilter, and SkImageFilter; apply to text. By + default, draws filled black glyphs. + + @param count number of glyphs to draw + @param glyphs the array of glyphIDs to draw + @param positions where to draw each glyph relative to origin + @param origin the origin of all the positions + @param font typeface, text size and so, used to describe the text + @param paint blend, color, and so on, used to draw + */ + void drawGlyphs(SkSpan glyphs, SkSpan positions, + SkPoint origin, const SkFont& font, const SkPaint& paint); + + /** Draws count glyphs, at positions relative to origin styled with font and paint. + + This function draw glyphs using the given scaling and rotations. They are positioned + relative to the given origin. It does not perform typeface fallback for glyphs not found + in the SkTypeface in font. + + The drawing obeys the current transform matrix and clipping. + + All elements of paint: SkPathEffect, SkMaskFilter, SkShader, + SkColorFilter, and SkImageFilter; apply to text. By + default, draws filled black glyphs. + + @param count number of glyphs to draw + @param glyphs the array of glyphIDs to draw + @param xforms where to draw and orient each glyph + @param origin the origin of all the positions + @param font typeface, text size and so, used to describe the text + @param paint blend, color, and so on, used to draw + */ + void drawGlyphsRSXform(SkSpan glyphs, SkSpan xforms, + SkPoint origin, const SkFont& font, const SkPaint& paint); + + /** Draws SkTextBlob blob at (x, y), using clip, SkMatrix, and SkPaint paint. + + blob contains glyphs, their positions, and paint attributes specific to text: + SkTypeface, SkPaint text size, SkPaint text scale x, + SkPaint text skew x, SkPaint::Align, SkPaint::Hinting, anti-alias, SkPaint fake bold, + SkPaint font embedded bitmaps, SkPaint full hinting spacing, LCD text, SkPaint linear text, + and SkPaint subpixel text. + + SkTextEncoding must be set to SkTextEncoding::kGlyphID. + + Elements of paint: anti-alias, SkBlendMode, color including alpha, + SkColorFilter, SkPaint dither, SkMaskFilter, SkPathEffect, SkShader, and + SkPaint::Style; apply to blob. If SkPaint contains SkPaint::kStroke_Style: + SkPaint miter limit, SkPaint::Cap, SkPaint::Join, and SkPaint stroke width; + apply to SkPath created from blob. + + @param blob glyphs, positions, and their paints' text size, typeface, and so on + @param x horizontal offset applied to blob + @param y vertical offset applied to blob + @param paint blend, color, stroking, and so on, used to draw + + example: https://fiddle.skia.org/c/@Canvas_drawTextBlob + */ + void drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, const SkPaint& paint); + + /** Draws SkTextBlob blob at (x, y), using clip, SkMatrix, and SkPaint paint. + + blob contains glyphs, their positions, and paint attributes specific to text: + SkTypeface, SkPaint text size, SkPaint text scale x, + SkPaint text skew x, SkPaint::Align, SkPaint::Hinting, anti-alias, SkPaint fake bold, + SkPaint font embedded bitmaps, SkPaint full hinting spacing, LCD text, SkPaint linear text, + and SkPaint subpixel text. + + SkTextEncoding must be set to SkTextEncoding::kGlyphID. + + Elements of paint: SkPathEffect, SkMaskFilter, SkShader, SkColorFilter, + and SkImageFilter; apply to blob. + + @param blob glyphs, positions, and their paints' text size, typeface, and so on + @param x horizontal offset applied to blob + @param y vertical offset applied to blob + @param paint blend, color, stroking, and so on, used to draw + */ + void drawTextBlob(const sk_sp& blob, SkScalar x, SkScalar y, const SkPaint& paint) { + this->drawTextBlob(blob.get(), x, y, paint); + } + + /** Draws SkPicture picture, using clip and SkMatrix. + Clip and SkMatrix are unchanged by picture contents, as if + save() was called before and restore() was called after drawPicture(). + + SkPicture records a series of draw commands for later playback. + + @param picture recorded drawing commands to play + */ + void drawPicture(const SkPicture* picture) { + this->drawPicture(picture, nullptr, nullptr); + } + + /** Draws SkPicture picture, using clip and SkMatrix. + Clip and SkMatrix are unchanged by picture contents, as if + save() was called before and restore() was called after drawPicture(). + + SkPicture records a series of draw commands for later playback. + + @param picture recorded drawing commands to play + */ + void drawPicture(const sk_sp& picture) { + this->drawPicture(picture.get()); + } + + /** Draws SkPicture picture, using clip and SkMatrix; transforming picture with + SkMatrix matrix, if provided; and use SkPaint paint alpha, SkColorFilter, + SkImageFilter, and SkBlendMode, if provided. + + If paint is non-null, then the picture is always drawn into a temporary layer before + actually landing on the canvas. Note that drawing into a layer can also change its + appearance if there are any non-associative blendModes inside any of the pictures elements. + + @param picture recorded drawing commands to play + @param matrix SkMatrix to rotate, scale, translate, and so on; may be nullptr + @param paint SkPaint to apply transparency, filtering, and so on; may be nullptr + + example: https://fiddle.skia.org/c/@Canvas_drawPicture_3 + */ + void drawPicture(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint); + + /** Draws SkPicture picture, using clip and SkMatrix; transforming picture with + SkMatrix matrix, if provided; and use SkPaint paint alpha, SkColorFilter, + SkImageFilter, and SkBlendMode, if provided. + + If paint is non-null, then the picture is always drawn into a temporary layer before + actually landing on the canvas. Note that drawing into a layer can also change its + appearance if there are any non-associative blendModes inside any of the pictures elements. + + @param picture recorded drawing commands to play + @param matrix SkMatrix to rotate, scale, translate, and so on; may be nullptr + @param paint SkPaint to apply transparency, filtering, and so on; may be nullptr + */ + void drawPicture(const sk_sp& picture, const SkMatrix* matrix, + const SkPaint* paint) { + this->drawPicture(picture.get(), matrix, paint); + } + + /** Draws SkVertices vertices, a triangle mesh, using clip and SkMatrix. + If paint contains an SkShader and vertices does not contain texCoords, the shader + is mapped using the vertices' positions. + + SkBlendMode is ignored if SkVertices does not have colors. Otherwise, it combines + - the SkShader if SkPaint contains SkShader + - or the opaque SkPaint color if SkPaint does not contain SkShader + as the src of the blend and the interpolated vertex colors as the dst. + + SkMaskFilter, SkPathEffect, and antialiasing on SkPaint are ignored. + + @param vertices triangle mesh to draw + @param mode combines vertices' colors with SkShader if present or SkPaint opaque color + if not. Ignored if the vertices do not contain color. + @param paint specifies the SkShader, used as SkVertices texture, and SkColorFilter. + + example: https://fiddle.skia.org/c/@Canvas_drawVertices + */ + void drawVertices(const SkVertices* vertices, SkBlendMode mode, const SkPaint& paint); + + /** Draws SkVertices vertices, a triangle mesh, using clip and SkMatrix. + If paint contains an SkShader and vertices does not contain texCoords, the shader + is mapped using the vertices' positions. + + SkBlendMode is ignored if SkVertices does not have colors. Otherwise, it combines + - the SkShader if SkPaint contains SkShader + - or the opaque SkPaint color if SkPaint does not contain SkShader + as the src of the blend and the interpolated vertex colors as the dst. + + SkMaskFilter, SkPathEffect, and antialiasing on SkPaint are ignored. + + @param vertices triangle mesh to draw + @param mode combines vertices' colors with SkShader if present or SkPaint opaque color + if not. Ignored if the vertices do not contain color. + @param paint specifies the SkShader, used as SkVertices texture, may be nullptr + + example: https://fiddle.skia.org/c/@Canvas_drawVertices_2 + */ + void drawVertices(const sk_sp& vertices, SkBlendMode mode, const SkPaint& paint); + + /** + Experimental, under active development, and subject to change without notice. + + Draws a mesh using a user-defined specification (see SkMeshSpecification). Requires + a GPU backend or SkSL to be compiled in. + + SkBlender is ignored if SkMesh's specification does not output fragment shader color. + Otherwise, it combines + - the SkShader if SkPaint contains SkShader + - or the opaque SkPaint color if SkPaint does not contain SkShader + as the src of the blend and the mesh's fragment color as the dst. + + SkMaskFilter, SkPathEffect, and antialiasing on SkPaint are ignored. + + @param mesh the mesh vertices and compatible specification. + @param blender combines vertices colors with SkShader if present or SkPaint opaque color + if not. Ignored if the custom mesh does not output color. Defaults to + SkBlendMode::kModulate if nullptr. + @param paint specifies the SkShader, used as SkVertices texture, may be nullptr + */ + void drawMesh(const SkMesh& mesh, sk_sp blender, const SkPaint& paint); + + /** Draws a Coons patch: the interpolation of four cubics with shared corners, + associating a color, and optionally a texture SkPoint, with each corner. + + SkPoint array cubics specifies four SkPath cubic starting at the top-left corner, + in clockwise order, sharing every fourth point. The last SkPath cubic ends at the + first point. + + Color array color associates colors with corners in top-left, top-right, + bottom-right, bottom-left order. + + If paint contains SkShader, SkPoint array texCoords maps SkShader as texture to + corners in top-left, top-right, bottom-right, bottom-left order. If texCoords is + nullptr, SkShader is mapped using positions (derived from cubics). + + SkBlendMode is ignored if colors is null. Otherwise, it combines + - the SkShader if SkPaint contains SkShader + - or the opaque SkPaint color if SkPaint does not contain SkShader + as the src of the blend and the interpolated patch colors as the dst. + + SkMaskFilter, SkPathEffect, and antialiasing on SkPaint are ignored. + + @param cubics SkPath cubic array, sharing common points + @param colors color array, one for each corner + @param texCoords SkPoint array of texture coordinates, mapping SkShader to corners; + may be nullptr + @param mode combines patch's colors with SkShader if present or SkPaint opaque color + if not. Ignored if colors is null. + @param paint SkShader, SkColorFilter, SkBlendMode, used to draw + */ + void drawPatch(const SkPoint cubics[12], const SkColor colors[4], + const SkPoint texCoords[4], SkBlendMode mode, const SkPaint& paint); + + /** Draws a set of sprites from atlas, using clip, SkMatrix, and optional SkPaint paint. + paint uses anti-alias, alpha, SkColorFilter, SkImageFilter, and SkBlendMode + to draw, if present. For each entry in the array, SkRect tex locates sprite in + atlas, and SkRSXform xform transforms it into destination space. + + SkMaskFilter and SkPathEffect on paint are ignored. + + For non-empty spans, the number of draws will be the min of + xform.size(), tex.size(), and (if not empty) colors.size(). + + Optional colors are applied for each sprite using SkBlendMode mode, treating + sprite as source and colors as destination. + Optional cullRect is a conservative bounds of all transformed sprites. + If cullRect is outside of clip, canvas can skip drawing. + + If atlas is nullptr, this draws nothing. + + @param atlas SkImage containing sprites + @param xform SkRSXform mappings for sprites in atlas + @param tex SkRect locations of sprites in atlas + @param colors one per sprite, blended with sprite using SkBlendMode; may be nullptr + @param mode SkBlendMode combining colors and sprites + @param sampling SkSamplingOptions used when sampling from the atlas image + @param cullRect bounds of transformed sprites for efficient clipping; may be nullptr + @param paint SkColorFilter, SkImageFilter, SkBlendMode, and so on; may be nullptr + */ + void drawAtlas(const SkImage* atlas, SkSpan xform, + SkSpan tex, SkSpan colors, SkBlendMode mode, + const SkSamplingOptions& sampling, const SkRect* cullRect, const SkPaint* paint); + + /** Draws SkDrawable drawable using clip and SkMatrix, concatenated with + optional matrix. + + If SkCanvas has an asynchronous implementation, as is the case + when it is recording into SkPicture, then drawable will be referenced, + so that SkDrawable::draw() can be called when the operation is finalized. To force + immediate drawing, call SkDrawable::draw() instead. + + @param drawable custom struct encapsulating drawing commands + @param matrix transformation applied to drawing; may be nullptr + + example: https://fiddle.skia.org/c/@Canvas_drawDrawable + */ + void drawDrawable(SkDrawable* drawable, const SkMatrix* matrix = nullptr); + + /** Draws SkDrawable drawable using clip and SkMatrix, offset by (x, y). + + If SkCanvas has an asynchronous implementation, as is the case + when it is recording into SkPicture, then drawable will be referenced, + so that SkDrawable::draw() can be called when the operation is finalized. To force + immediate drawing, call SkDrawable::draw() instead. + + @param drawable custom struct encapsulating drawing commands + @param x offset into SkCanvas writable pixels on x-axis + @param y offset into SkCanvas writable pixels on y-axis + + example: https://fiddle.skia.org/c/@Canvas_drawDrawable_2 + */ + void drawDrawable(SkDrawable* drawable, SkScalar x, SkScalar y); + + /** Associates SkRect on SkCanvas with an annotation; a key-value pair, where the key is + a null-terminated UTF-8 string, and optional value is stored as SkData. + + Only some canvas implementations, such as recording to SkPicture, or drawing to + document PDF, use annotations. + + @param rect SkRect extent of canvas to annotate + @param key string used for lookup + @param value data holding value stored in annotation + + example: https://fiddle.skia.org/c/@Canvas_drawAnnotation_2 + */ + void drawAnnotation(const SkRect& rect, const char key[], SkData* value); + + /** Associates SkRect on SkCanvas when an annotation; a key-value pair, where the key is + a null-terminated UTF-8 string, and optional value is stored as SkData. + + Only some canvas implementations, such as recording to SkPicture, or drawing to + document PDF, use annotations. + + @param rect SkRect extent of canvas to annotate + @param key string used for lookup + @param value data holding value stored in annotation + */ + void drawAnnotation(const SkRect& rect, const char key[], const sk_sp& value) { + this->drawAnnotation(rect, key, value.get()); + } + + /** Returns true if clip is empty; that is, nothing will draw. + + May do work when called; it should not be called + more often than needed. However, once called, subsequent calls perform no + work until clip changes. + + @return true if clip is empty + + example: https://fiddle.skia.org/c/@Canvas_isClipEmpty + */ + virtual bool isClipEmpty() const; + + /** Returns true if clip is SkRect and not empty. + Returns false if the clip is empty, or if it is not SkRect. + + @return true if clip is SkRect and not empty + + example: https://fiddle.skia.org/c/@Canvas_isClipRect + */ + virtual bool isClipRect() const; + + /** Returns the current transform from local coordinates to the 'device', which for most + * purposes means pixels. + * + * @return transformation from local coordinates to device / pixels. + */ + SkM44 getLocalToDevice() const; + + /** + * Throws away the 3rd row and column in the matrix, so be warned. + */ + SkMatrix getLocalToDeviceAs3x3() const { + return this->getLocalToDevice().asM33(); + } + +#ifdef SK_SUPPORT_LEGACY_GETTOTALMATRIX + /** DEPRECATED + * Legacy version of getLocalToDevice(), which strips away any Z information, and + * just returns a 3x3 version. + * + * @return 3x3 version of getLocalToDevice() + * + * example: https://fiddle.skia.org/c/@Canvas_getTotalMatrix + * example: https://fiddle.skia.org/c/@Clip + */ + SkMatrix getTotalMatrix() const; +#endif + + /////////////////////////////////////////////////////////////////////////// + + /** + * Returns the global clip as a region. If the clip contains AA, then only the bounds + * of the clip may be returned. + */ + void temporary_internal_getRgnClip(SkRegion* region); + + void private_draw_shadow_rec(const SkPath&, const SkDrawShadowRec&); + + +protected: + // default impl defers to getDevice()->newSurface(info) + virtual sk_sp onNewSurface(const SkImageInfo& info, const SkSurfaceProps& props); + + // default impl defers to its device + virtual bool onPeekPixels(SkPixmap* pixmap); + virtual bool onAccessTopLayerPixels(SkPixmap* pixmap); + virtual SkImageInfo onImageInfo() const; + virtual bool onGetProps(SkSurfaceProps* props, bool top) const; + + // Subclass save/restore notifiers. + // Overriders should call the corresponding INHERITED method up the inheritance chain. + // getSaveLayerStrategy()'s return value may suppress full layer allocation. + enum SaveLayerStrategy { + kFullLayer_SaveLayerStrategy, + kNoLayer_SaveLayerStrategy, + }; + + virtual void willSave() {} + // Overriders should call the corresponding INHERITED method up the inheritance chain. + virtual SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec& ) { + return kFullLayer_SaveLayerStrategy; + } + + // returns true if we should actually perform the saveBehind, or false if we should just save. + virtual bool onDoSaveBehind(const SkRect*) { return true; } + virtual void willRestore() {} + virtual void didRestore() {} + + virtual void didConcat44(const SkM44&) {} + virtual void didSetM44(const SkM44&) {} + virtual void didTranslate(SkScalar, SkScalar) {} + virtual void didScale(SkScalar, SkScalar) {} + + // NOTE: If you are adding a new onDraw virtual to SkCanvas, PLEASE add an override to + // SkCanvasVirtualEnforcer (in SkCanvasVirtualEnforcer.h). This ensures that subclasses using + // that mechanism will be required to implement the new function. + virtual void onDrawPaint(const SkPaint& paint); + virtual void onDrawBehind(const SkPaint& paint); + virtual void onDrawRect(const SkRect& rect, const SkPaint& paint); + virtual void onDrawRRect(const SkRRect& rrect, const SkPaint& paint); + virtual void onDrawDRRect(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint); + virtual void onDrawOval(const SkRect& rect, const SkPaint& paint); + virtual void onDrawArc(const SkRect& rect, SkScalar startAngle, SkScalar sweepAngle, + bool useCenter, const SkPaint& paint); + virtual void onDrawPath(const SkPath& path, const SkPaint& paint); + virtual void onDrawRegion(const SkRegion& region, const SkPaint& paint); + + virtual void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, + const SkPaint& paint); + + virtual void onDrawGlyphRunList(const sktext::GlyphRunList& glyphRunList, const SkPaint& paint); + + virtual void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], + const SkPoint texCoords[4], SkBlendMode mode, const SkPaint& paint); + virtual void onDrawPoints(PointMode mode, size_t count, const SkPoint pts[], + const SkPaint& paint); + + virtual void onDrawImage2(const SkImage*, SkScalar dx, SkScalar dy, const SkSamplingOptions&, + const SkPaint*); + virtual void onDrawImageRect2(const SkImage*, const SkRect& src, const SkRect& dst, + const SkSamplingOptions&, const SkPaint*, SrcRectConstraint); + virtual void onDrawImageLattice2(const SkImage*, const Lattice&, const SkRect& dst, + SkFilterMode, const SkPaint*); + virtual void onDrawAtlas2(const SkImage*, const SkRSXform[], const SkRect src[], + const SkColor[], int count, SkBlendMode, const SkSamplingOptions&, + const SkRect* cull, const SkPaint*); + virtual void onDrawEdgeAAImageSet2(const ImageSetEntry imageSet[], int count, + const SkPoint dstClips[], const SkMatrix preViewMatrices[], + const SkSamplingOptions&, const SkPaint*, + SrcRectConstraint); + + virtual void onDrawVerticesObject(const SkVertices* vertices, SkBlendMode mode, + const SkPaint& paint); + virtual void onDrawMesh(const SkMesh&, sk_sp, const SkPaint&); + virtual void onDrawAnnotation(const SkRect& rect, const char key[], SkData* value); + virtual void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&); + + virtual void onDrawDrawable(SkDrawable* drawable, const SkMatrix* matrix); + virtual void onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, + const SkPaint* paint); + + virtual void onDrawEdgeAAQuad(const SkRect& rect, const SkPoint clip[4], QuadAAFlags aaFlags, + const SkColor4f& color, SkBlendMode mode); + + enum ClipEdgeStyle { + kHard_ClipEdgeStyle, + kSoft_ClipEdgeStyle + }; + + virtual void onClipRect(const SkRect& rect, SkClipOp op, ClipEdgeStyle edgeStyle); + virtual void onClipRRect(const SkRRect& rrect, SkClipOp op, ClipEdgeStyle edgeStyle); + virtual void onClipPath(const SkPath& path, SkClipOp op, ClipEdgeStyle edgeStyle); + virtual void onClipShader(sk_sp, SkClipOp); + virtual void onClipRegion(const SkRegion& deviceRgn, SkClipOp op); + virtual void onResetClip(); + + virtual void onDiscard(); + + /** + */ + virtual sk_sp onConvertGlyphRunListToSlug( + const sktext::GlyphRunList& glyphRunList, const SkPaint& paint); + + /** + */ + virtual void onDrawSlug(const sktext::gpu::Slug* slug, const SkPaint& paint); + +private: + enum class PredrawFlags : unsigned { + kNone = 0, + kOpaqueShaderOverride = 1, // The paint's shader is overridden with an opaque image + kNonOpaqueShaderOverride = 2, // The paint's shader is overridden but is not opaque + kCheckForOverwrite = 4, // Check if the draw would overwrite the entire surface + kSkipMaskFilterAutoLayer = 8, // Do not apply mask filters in the AutoLayer + }; + // Inlined SK_DECL_BITMASK_OPS_FRIENDS to avoid including SkEnumBitMask.h + friend constexpr SkEnumBitMask operator|(PredrawFlags, PredrawFlags); + friend constexpr SkEnumBitMask operator&(PredrawFlags, PredrawFlags); + friend constexpr SkEnumBitMask operator^(PredrawFlags, PredrawFlags); + friend constexpr SkEnumBitMask operator~(PredrawFlags); + + // notify our surface (if we have one) that we are about to draw, so it + // can perform copy-on-write or invalidate any cached images + // returns false if the copy failed + [[nodiscard]] bool predrawNotify(bool willOverwritesEntireSurface = false); + [[nodiscard]] bool predrawNotify(const SkRect*, const SkPaint*, SkEnumBitMask); + + // call the appropriate predrawNotify and create a layer if needed. + std::optional aboutToDraw( + const SkPaint& paint, + const SkRect* rawBounds, + SkEnumBitMask flags); + std::optional aboutToDraw( + const SkPaint& paint, + const SkRect* rawBounds = nullptr); + + // The bottom-most device in the stack, only changed by init(). Image properties and the final + // canvas pixels are determined by this device. + SkDevice* rootDevice() const { + SkASSERT(fRootDevice); + return fRootDevice.get(); + } + + // The top-most device in the stack, will change within saveLayer()'s. All drawing and clipping + // operations should route to this device. + SkDevice* topDevice() const; + + // Canvases maintain a sparse stack of layers, where the top-most layer receives the drawing, + // clip, and matrix commands. There is a layer per call to saveLayer() using the + // kFullLayer_SaveLayerStrategy. + struct Layer { + sk_sp fDevice; + skia_private::STArray<1, sk_sp> fImageFilters; + SkPaint fPaint; + bool fIsCoverage; + bool fDiscard; + + // If true, the layer image is sized to include a 1px buffer that remains transparent + // to allow for faster linear filtering under complex transforms. + bool fIncludesPadding; + + Layer(sk_sp device, + FilterSpan imageFilters, + const SkPaint& paint, + bool isCoverage, + bool includesPadding); + }; + + // Encapsulate state needed to restore from saveBehind() + struct BackImage { + // Out of line to avoid including SkSpecialImage.h + BackImage(sk_sp, SkIPoint); + BackImage(const BackImage&); + BackImage(BackImage&&); + BackImage& operator=(const BackImage&); + ~BackImage(); + + sk_sp fImage; + SkIPoint fLoc; + }; + + class MCRec { + public: + // If not null, this MCRec corresponds with the saveLayer() record that made the layer. + // The base "layer" is not stored here, since it is stored inline in SkCanvas and has no + // restoration behavior. + std::unique_ptr fLayer; + + // This points to the device of the top-most layer (which may be lower in the stack), or + // to the canvas's fRootDevice. The MCRec does not own the device. + SkDevice* fDevice; + + std::unique_ptr fBackImage; + SkM44 fMatrix; + int fDeferredSaveCount = 0; + + MCRec(SkDevice* device); + MCRec(const MCRec* prev); + ~MCRec(); + + void newLayer(sk_sp layerDevice, + FilterSpan filters, + const SkPaint& restorePaint, + bool layerIsCoverage, + bool includesPadding); + + void reset(SkDevice* device); + }; + +#if defined(SK_CANVAS_SAVE_RESTORE_PREALLOC_COUNT) + static constexpr int kMCRecCount = SK_CANVAS_SAVE_RESTORE_PREALLOC_COUNT; +#else + static constexpr int kMCRecCount = 32; // common depth for save/restores +#endif + + // This stack allocation of memory will be used to house the first kMCRecCount + // layers without need to call malloc. + alignas(MCRec) std::byte fMCRecStorage[sizeof(MCRec) * kMCRecCount]; + + SkDeque fMCStack; // uses the stack memory + MCRec* fMCRec; // points to top of stack for convenience + + // Installed via init() + sk_sp fRootDevice; + const SkSurfaceProps fProps; + + int fSaveCount; // value returned by getSaveCount() + + std::unique_ptr fAllocator; + + SkSurface_Base* fSurfaceBase; + SkSurface_Base* getSurfaceBase() const { return fSurfaceBase; } + void setSurfaceBase(SkSurface_Base* sb) { + fSurfaceBase = sb; + } + friend class SkSurface_Base; + friend class SkSurface_Ganesh; + + SkIRect fClipRestrictionRect = SkIRect::MakeEmpty(); + int fClipRestrictionSaveCount = -1; + + void doSave(); + void checkForDeferredSave(); + void internalSetMatrix(const SkM44&); + + virtual void onSurfaceDelete() {} + + friend class SkAndroidFrameworkUtils; + friend class SkCanvasPriv; // needs to expose android functions for testing outside android + friend class AutoLayerForImageFilter; + friend class SkSurface_Raster; // needs getDevice() + friend class SkNoDrawCanvas; // needs resetForNextPicture() + friend class SkNWayCanvas; + friend class SkPictureRecord; // predrawNotify (why does it need it? ) + friend class SkOverdrawCanvas; + friend class SkRasterHandleAllocator; + friend class SkRecords::Draw; + template + friend class skiatest::TestCanvas; + +protected: + // For use by SkNoDrawCanvas (via SkCanvasVirtualEnforcer, which can't be a friend) + explicit SkCanvas(const SkIRect& bounds); + +private: + SkCanvas(const SkBitmap&, std::unique_ptr, + SkRasterHandleAllocator::Handle, const SkSurfaceProps* props); + + SkCanvas(SkCanvas&&) = delete; + SkCanvas(const SkCanvas&) = delete; + SkCanvas& operator=(SkCanvas&&) = delete; + SkCanvas& operator=(const SkCanvas&) = delete; + + friend class sktext::gpu::Slug; + friend class SkPicturePlayback; + /** + * Convert a SkTextBlob to a sktext::gpu::Slug using the current canvas state. + */ + sk_sp convertBlobToSlug(const SkTextBlob& blob, SkPoint origin, + const SkPaint& paint); + + /** + * Draw an sktext::gpu::Slug given the current canvas state. + */ + void drawSlug(const sktext::gpu::Slug* slug, const SkPaint& paint); + + /** Experimental + * Saves the specified subset of the current pixels in the current layer, + * and then clears those pixels to transparent black. + * Restores the pixels on restore() by drawing them in SkBlendMode::kDstOver. + * + * @param subset conservative bounds of the area to be saved / restored. + * @return depth of save state stack before this call was made. + */ + int only_axis_aligned_saveBehind(const SkRect* subset); + + /** + * Like drawPaint, but magically clipped to the most recent saveBehind buffer rectangle. + * If there is no active saveBehind, then this draws nothing. + */ + void drawClippedToSaveBehind(const SkPaint&); + + void resetForNextPicture(const SkIRect& bounds); + + // needs gettotalclip() + friend class SkCanvasStateUtils; + + void init(sk_sp); + + bool nothingToDraw(const SkPaint& paint) const; + + // All base onDrawX() functions should call this and skip drawing if it returns true. + // If 'matrix' is non-null, it maps the paint's fast bounds before checking for quick rejection + bool internalQuickReject(const SkRect& bounds, const SkPaint& paint, + const SkMatrix* matrix = nullptr); + + void internalDrawPaint(const SkPaint& paint); + void internalSaveLayer(const SaveLayerRec&, SaveLayerStrategy, bool coverageOnly=false); + void internalSaveBehind(const SkRect*); + + void internalConcat44(const SkM44&); + + // shared by save() and saveLayer() + void internalSave(); + void internalRestore(); + + enum class DeviceCompatibleWithFilter : int { + // Check the src device's local-to-device matrix for compatibility with the filter, and if + // it is not compatible, introduce an intermediate image and transformation that allows the + // filter to be evaluated on the modified src content. + kUnknown, + // Assume that the src device's local-to-device matrix is compatible with the filter. + kYes, + // Assume that the src device's local-to-device matrix is compatible with the filter, + // *and* the source image has a 1px buffer of padding. + kYesWithPadding + }; + /** + * Filters the contents of 'src' and draws the result into 'dst'. The filter is evaluated + * relative to the current canvas matrix, and src is drawn to dst using their relative transform + * 'paint' is applied after the filter and must not have a mask or image filter of its own. + * A null 'filter' behaves as if the identity filter were used. + * + * 'scaleFactor' is an extra uniform scale transform applied to downscale the 'src' image + * before any filtering, or as part of the copy, and is then drawn with 1/scaleFactor to 'dst'. + * Must be 1.0 if 'compat' is kYes (i.e. any scale factor has already been baked into the + * relative transforms between the devices). + * + * 'srcTileMode' is the tile mode to apply to the boundary of the 'src' image when insufficient + * content is available. It defaults to kDecal for the regular saveLayer() case. + */ + void internalDrawDeviceWithFilter(SkDevice* src, SkDevice* dst, + FilterSpan filters, const SkPaint& paint, + DeviceCompatibleWithFilter compat, + const SkColorInfo& filterColorInfo, + SkScalar scaleFactor = 1.f, + SkTileMode srcTileMode = SkTileMode::kDecal, + bool srcIsCoverageLayer = false); + + /* + * Returns true if drawing the specified rect (or all if it is null) with the specified + * paint (or default if null) would overwrite the entire root device of the canvas + * (i.e. the canvas' surface if it had one). + */ + bool wouldOverwriteEntireSurface(const SkRect*, const SkPaint*, + SkEnumBitMask) const; + + /** + * Returns true if the clip (for any active layer) contains antialiasing. + * If the clip is empty, this will return false. + */ + bool androidFramework_isClipAA() const; + + /** + * Reset the clip to be wide-open (modulo any separately specified device clip restriction). + * This operate within the save/restore clip stack so it can be undone by restoring to an + * earlier save point. + */ + void internal_private_resetClip(); + + virtual SkPaintFilterCanvas* internal_private_asPaintFilterCanvas() const { return nullptr; } + + // Keep track of the device clip bounds in the canvas' global space to reject draws before + // invoking the top-level device. + SkRect fQuickRejectBounds; + + // Compute the clip's bounds based on all clipped SkDevice's reported device bounds transformed + // into the canvas' global space. + SkRect computeDeviceClipBounds(bool outsetForAA=true) const; + + // Returns the paint's mask filter if it can be used to draw an rrect with an analytic blur, and + // returns null otherwise. + const SkBlurMaskFilterImpl* canAttemptBlurredRRectDraw(const SkPaint&) const; + + // Attempt to draw a rrect with an analytic blur. If the draw succeeds or predrawNotify fails, + // nullopt is returned indicating that nothing further should be drawn. + std::optional attemptBlurredRRectDraw(const SkRRect&, + const SkBlurMaskFilterImpl*, + const SkPaint&, + SkEnumBitMask); + + class AutoUpdateQRBounds; + void validateClip() const; + + std::unique_ptr fScratchGlyphRunBuilder; +}; + +/** \class SkAutoCanvasRestore + Stack helper class calls SkCanvas::restoreToCount when SkAutoCanvasRestore + goes out of scope. Use this to guarantee that the canvas is restored to a known + state. +*/ +class [[nodiscard]] SkAutoCanvasRestore { +public: + + /** Preserves SkCanvas::save() count. Optionally saves SkCanvas clip and SkCanvas matrix. + + @param canvas SkCanvas to guard + @param doSave call SkCanvas::save() + @return utility to restore SkCanvas state on destructor + */ + SkAutoCanvasRestore(SkCanvas* canvas, bool doSave) : fCanvas(canvas), fSaveCount(0) { + if (fCanvas) { + fSaveCount = canvas->getSaveCount(); + if (doSave) { + canvas->save(); + } + } + } + + /** Restores SkCanvas to saved state. Destructor is called when container goes out of + scope. + */ + ~SkAutoCanvasRestore() { + if (fCanvas) { + fCanvas->restoreToCount(fSaveCount); + } + } + + /** Restores SkCanvas to saved state immediately. Subsequent calls and + ~SkAutoCanvasRestore() have no effect. + */ + void restore() { + if (fCanvas) { + fCanvas->restoreToCount(fSaveCount); + fCanvas = nullptr; + } + } + +private: + SkCanvas* fCanvas; + int fSaveCount; + + SkAutoCanvasRestore(SkAutoCanvasRestore&&) = delete; + SkAutoCanvasRestore(const SkAutoCanvasRestore&) = delete; + SkAutoCanvasRestore& operator=(SkAutoCanvasRestore&&) = delete; + SkAutoCanvasRestore& operator=(const SkAutoCanvasRestore&) = delete; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkCanvasVirtualEnforcer.h b/vendor/artifacts/skia/include/core/SkCanvasVirtualEnforcer.h new file mode 100644 index 000000000..ab0d505de --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkCanvasVirtualEnforcer.h @@ -0,0 +1,61 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCanvasVirtualEnforcer_DEFINED +#define SkCanvasVirtualEnforcer_DEFINED + +#include "include/core/SkCanvas.h" + +// If you would ordinarily want to inherit from Base (eg SkCanvas, SkNWayCanvas), instead +// inherit from SkCanvasVirtualEnforcer, which will make the build fail if you forget +// to override one of SkCanvas' key virtual hooks. +template +class SkCanvasVirtualEnforcer : public Base { +public: + using Base::Base; + +protected: + void onDrawPaint(const SkPaint& paint) override = 0; + void onDrawBehind(const SkPaint&) override {} // make zero after android updates + void onDrawRect(const SkRect& rect, const SkPaint& paint) override = 0; + void onDrawRRect(const SkRRect& rrect, const SkPaint& paint) override = 0; + void onDrawDRRect(const SkRRect& outer, const SkRRect& inner, + const SkPaint& paint) override = 0; + void onDrawOval(const SkRect& rect, const SkPaint& paint) override = 0; + void onDrawArc(const SkRect& rect, SkScalar startAngle, SkScalar sweepAngle, bool useCenter, + const SkPaint& paint) override = 0; + void onDrawPath(const SkPath& path, const SkPaint& paint) override = 0; + void onDrawRegion(const SkRegion& region, const SkPaint& paint) override = 0; + + void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, + const SkPaint& paint) override = 0; + + void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], + const SkPoint texCoords[4], SkBlendMode mode, + const SkPaint& paint) override = 0; + void onDrawPoints(SkCanvas::PointMode mode, size_t count, const SkPoint pts[], + const SkPaint& paint) override = 0; + +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + // This is under active development for Chrome and not used in Android. Hold off on adding + // implementations in Android's SkCanvas subclasses until this stabilizes. + void onDrawEdgeAAQuad(const SkRect& rect, const SkPoint clip[4], + SkCanvas::QuadAAFlags aaFlags, const SkColor4f& color, SkBlendMode mode) override {} +#else + void onDrawEdgeAAQuad(const SkRect& rect, const SkPoint clip[4], + SkCanvas::QuadAAFlags aaFlags, const SkColor4f& color, SkBlendMode mode) override = 0; +#endif + + void onDrawAnnotation(const SkRect& rect, const char key[], SkData* value) override = 0; + void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&) override = 0; + + void onDrawDrawable(SkDrawable* drawable, const SkMatrix* matrix) override = 0; + void onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, + const SkPaint* paint) override = 0; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkCapabilities.h b/vendor/artifacts/skia/include/core/SkCapabilities.h new file mode 100644 index 000000000..3b7e25206 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkCapabilities.h @@ -0,0 +1,35 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCapabilities_DEFINED +#define SkCapabilities_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" +#include "include/sksl/SkSLVersion.h" + +namespace SkSL { struct ShaderCaps; } + +namespace skgpu::graphite { class Caps; } + +class SK_API SkCapabilities : public SkRefCnt { +public: + static sk_sp RasterBackend(); + + SkSL::Version skslVersion() const { return fSkSLVersion; } + +protected: + friend class skgpu::graphite::Caps; // for ctor + + SkCapabilities() = default; + + void initSkCaps(const SkSL::ShaderCaps*); + + SkSL::Version fSkSLVersion = SkSL::Version::k100; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkClipOp.h b/vendor/artifacts/skia/include/core/SkClipOp.h new file mode 100644 index 000000000..3da6c6113 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkClipOp.h @@ -0,0 +1,19 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkClipOp_DEFINED +#define SkClipOp_DEFINED + +#include "include/core/SkTypes.h" + +enum class SkClipOp { + kDifference = 0, + kIntersect = 1, + kMax_EnumValue = kIntersect +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkColor.h b/vendor/artifacts/skia/include/core/SkColor.h new file mode 100644 index 000000000..1df732ddf --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkColor.h @@ -0,0 +1,469 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkColor_DEFINED +#define SkColor_DEFINED + +#include "include/core/SkAlphaType.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkCPUTypes.h" +#include "include/private/base/SkTPin.h" + +#include +#include + +/** \file SkColor.h + + Types, consts, functions, and macros for colors. +*/ + +/** 8-bit type for an alpha value. 255 is 100% opaque, zero is 100% transparent. +*/ +typedef uint8_t SkAlpha; + +/** 32-bit ARGB color value, unpremultiplied. Color components are always in + a known order. This is different from SkPMColor, which has its bytes in a configuration + dependent order, to match the format of kBGRA_8888_SkColorType bitmaps. SkColor + is the type used to specify colors in SkPaint and in gradients. + + Color that is premultiplied has the same component values as color + that is unpremultiplied if alpha is 255, fully opaque, although may have the + component values in a different order. +*/ +typedef uint32_t SkColor; + +/** Returns color value from 8-bit component values. Asserts if SK_DEBUG is defined + if a, r, g, or b exceed 255. Since color is unpremultiplied, a may be smaller + than the largest of r, g, and b. + + @param a amount of alpha, from fully transparent (0) to fully opaque (255) + @param r amount of red, from no red (0) to full red (255) + @param g amount of green, from no green (0) to full green (255) + @param b amount of blue, from no blue (0) to full blue (255) + @return color and alpha, unpremultiplied +*/ +static constexpr inline SkColor SkColorSetARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b) { + return SkASSERT(a <= 255 && r <= 255 && g <= 255 && b <= 255), + (a << 24) | (r << 16) | (g << 8) | (b << 0); +} + +/** Returns color value from 8-bit component values, with alpha set + fully opaque to 255. +*/ +#define SkColorSetRGB(r, g, b) SkColorSetARGB(0xFF, r, g, b) + +/** Returns alpha byte from color value. +*/ +#define SkColorGetA(color) (((color) >> 24) & 0xFF) + +/** Returns red component of color, from zero to 255. +*/ +#define SkColorGetR(color) (((color) >> 16) & 0xFF) + +/** Returns green component of color, from zero to 255. +*/ +#define SkColorGetG(color) (((color) >> 8) & 0xFF) + +/** Returns blue component of color, from zero to 255. +*/ +#define SkColorGetB(color) (((color) >> 0) & 0xFF) + +/** Returns unpremultiplied color with red, blue, and green set from c; and alpha set + from a. Alpha component of c is ignored and is replaced by a in result. + + @param c packed RGB, eight bits per component + @param a alpha: transparent at zero, fully opaque at 255 + @return color with transparency +*/ +[[nodiscard]] static constexpr inline SkColor SkColorSetA(SkColor c, U8CPU a) { + return (c & 0x00FFFFFF) | (a << 24); +} + +/** Represents fully transparent SkAlpha value. SkAlpha ranges from zero, + fully transparent; to 255, fully opaque. +*/ +constexpr SkAlpha SK_AlphaTRANSPARENT = 0x00; + +/** Represents fully opaque SkAlpha value. SkAlpha ranges from zero, + fully transparent; to 255, fully opaque. +*/ +constexpr SkAlpha SK_AlphaOPAQUE = 0xFF; + +/** Represents fully transparent SkColor. May be used to initialize a destination + containing a mask or a non-rectangular image. +*/ +constexpr SkColor SK_ColorTRANSPARENT = SkColorSetARGB(0x00, 0x00, 0x00, 0x00); + +/** Represents fully opaque black. +*/ +constexpr SkColor SK_ColorBLACK = SkColorSetARGB(0xFF, 0x00, 0x00, 0x00); + +/** Represents fully opaque dark gray. + Note that SVG dark gray is equivalent to 0xFFA9A9A9. +*/ +constexpr SkColor SK_ColorDKGRAY = SkColorSetARGB(0xFF, 0x44, 0x44, 0x44); + +/** Represents fully opaque gray. + Note that HTML gray is equivalent to 0xFF808080. +*/ +constexpr SkColor SK_ColorGRAY = SkColorSetARGB(0xFF, 0x88, 0x88, 0x88); + +/** Represents fully opaque light gray. HTML silver is equivalent to 0xFFC0C0C0. + Note that SVG light gray is equivalent to 0xFFD3D3D3. +*/ +constexpr SkColor SK_ColorLTGRAY = SkColorSetARGB(0xFF, 0xCC, 0xCC, 0xCC); + +/** Represents fully opaque white. +*/ +constexpr SkColor SK_ColorWHITE = SkColorSetARGB(0xFF, 0xFF, 0xFF, 0xFF); + +/** Represents fully opaque red. +*/ +constexpr SkColor SK_ColorRED = SkColorSetARGB(0xFF, 0xFF, 0x00, 0x00); + +/** Represents fully opaque green. HTML lime is equivalent. + Note that HTML green is equivalent to 0xFF008000. +*/ +constexpr SkColor SK_ColorGREEN = SkColorSetARGB(0xFF, 0x00, 0xFF, 0x00); + +/** Represents fully opaque blue. +*/ +constexpr SkColor SK_ColorBLUE = SkColorSetARGB(0xFF, 0x00, 0x00, 0xFF); + +/** Represents fully opaque yellow. +*/ +constexpr SkColor SK_ColorYELLOW = SkColorSetARGB(0xFF, 0xFF, 0xFF, 0x00); + +/** Represents fully opaque cyan. HTML aqua is equivalent. +*/ +constexpr SkColor SK_ColorCYAN = SkColorSetARGB(0xFF, 0x00, 0xFF, 0xFF); + +/** Represents fully opaque magenta. HTML fuchsia is equivalent. +*/ +constexpr SkColor SK_ColorMAGENTA = SkColorSetARGB(0xFF, 0xFF, 0x00, 0xFF); + +/** Converts RGB to its HSV components. + hsv[0] contains hsv hue, a value from zero to less than 360. + hsv[1] contains hsv saturation, a value from zero to one. + hsv[2] contains hsv value, a value from zero to one. + + @param red red component value from zero to 255 + @param green green component value from zero to 255 + @param blue blue component value from zero to 255 + @param hsv three element array which holds the resulting HSV components +*/ +SK_API void SkRGBToHSV(U8CPU red, U8CPU green, U8CPU blue, SkScalar hsv[3]); + +/** Converts ARGB to its HSV components. Alpha in ARGB is ignored. + hsv[0] contains hsv hue, and is assigned a value from zero to less than 360. + hsv[1] contains hsv saturation, a value from zero to one. + hsv[2] contains hsv value, a value from zero to one. + + @param color ARGB color to convert + @param hsv three element array which holds the resulting HSV components +*/ +static inline void SkColorToHSV(SkColor color, SkScalar hsv[3]) { + SkRGBToHSV(SkColorGetR(color), SkColorGetG(color), SkColorGetB(color), hsv); +} + +/** Converts HSV components to an ARGB color. Alpha is passed through unchanged. + hsv[0] represents hsv hue, an angle from zero to less than 360. + hsv[1] represents hsv saturation, and varies from zero to one. + hsv[2] represents hsv value, and varies from zero to one. + + Out of range hsv values are pinned. + + @param alpha alpha component of the returned ARGB color + @param hsv three element array which holds the input HSV components + @return ARGB equivalent to HSV +*/ +SK_API SkColor SkHSVToColor(U8CPU alpha, const SkScalar hsv[3]); + +/** Converts HSV components to an ARGB color. Alpha is set to 255. + hsv[0] represents hsv hue, an angle from zero to less than 360. + hsv[1] represents hsv saturation, and varies from zero to one. + hsv[2] represents hsv value, and varies from zero to one. + + Out of range hsv values are pinned. + + @param hsv three element array which holds the input HSV components + @return RGB equivalent to HSV +*/ +static inline SkColor SkHSVToColor(const SkScalar hsv[3]) { + return SkHSVToColor(0xFF, hsv); +} + +/** 32-bit ARGB color value, premultiplied. The byte order for this value is + configuration dependent, matching the format of kBGRA_8888_SkColorType bitmaps. + This is different from SkColor, which is unpremultiplied, and is always in the + same byte order. +*/ +typedef uint32_t SkPMColor; + +/** Returns a SkPMColor value from unpremultiplied 8-bit component values. + + @param a amount of alpha, from fully transparent (0) to fully opaque (255) + @param r amount of red, from no red (0) to full red (255) + @param g amount of green, from no green (0) to full green (255) + @param b amount of blue, from no blue (0) to full blue (255) + @return premultiplied color +*/ +SK_API SkPMColor SkPreMultiplyARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b); + +/** Returns pmcolor closest to color c. Multiplies c RGB components by the c alpha, + and arranges the bytes to match the format of kN32_SkColorType. + + @param c unpremultiplied ARGB color + @return premultiplied color +*/ +SK_API SkPMColor SkPreMultiplyColor(SkColor c); + +/** \enum SkColorChannel + Describes different color channels one can manipulate +*/ +enum class SkColorChannel { + kR, // the red channel + kG, // the green channel + kB, // the blue channel + kA, // the alpha channel + + kLastEnum = kA, +}; + +/** Used to represent the channels available in a color type or texture format as a mask. */ +enum SkColorChannelFlag : uint32_t { + kRed_SkColorChannelFlag = 1 << static_cast(SkColorChannel::kR), + kGreen_SkColorChannelFlag = 1 << static_cast(SkColorChannel::kG), + kBlue_SkColorChannelFlag = 1 << static_cast(SkColorChannel::kB), + kAlpha_SkColorChannelFlag = 1 << static_cast(SkColorChannel::kA), + kGray_SkColorChannelFlag = 0x10, + // Convenience values + kGrayAlpha_SkColorChannelFlags = kGray_SkColorChannelFlag | kAlpha_SkColorChannelFlag, + kRG_SkColorChannelFlags = kRed_SkColorChannelFlag | kGreen_SkColorChannelFlag, + kRGB_SkColorChannelFlags = kRG_SkColorChannelFlags | kBlue_SkColorChannelFlag, + kRGBA_SkColorChannelFlags = kRGB_SkColorChannelFlags | kAlpha_SkColorChannelFlag, +}; +static_assert(0 == (kGray_SkColorChannelFlag & kRGBA_SkColorChannelFlags), "bitfield conflict"); + +/** \struct SkRGBA4f + RGBA color value, holding four floating point components. Color components are always in + a known order. kAT determines if the SkRGBA4f's R, G, and B components are premultiplied + by alpha or not. + + Skia's public API always uses unpremultiplied colors, which can be stored as + SkRGBA4f. For convenience, this type can also be referred to + as SkColor4f. +*/ +template +struct SkRGBA4f { + float fR; //!< red component + float fG; //!< green component + float fB; //!< blue component + float fA; //!< alpha component + + /** Compares SkRGBA4f with other, and returns true if all components are equal. + + @param other SkRGBA4f to compare + @return true if SkRGBA4f equals other + */ + bool operator==(const SkRGBA4f& other) const { + return fA == other.fA && fR == other.fR && fG == other.fG && fB == other.fB; + } + + /** Compares SkRGBA4f with other, and returns true if not all components are equal. + + @param other SkRGBA4f to compare + @return true if SkRGBA4f is not equal to other + */ + bool operator!=(const SkRGBA4f& other) const { + return !(*this == other); + } + + /** Returns SkRGBA4f multiplied by scale. + + @param scale value to multiply by + @return SkRGBA4f as (fR * scale, fG * scale, fB * scale, fA * scale) + */ + SkRGBA4f operator*(float scale) const { + return { fR * scale, fG * scale, fB * scale, fA * scale }; + } + + /** Returns SkRGBA4f multiplied component-wise by scale. + + @param scale SkRGBA4f to multiply by + @return SkRGBA4f as (fR * scale.fR, fG * scale.fG, fB * scale.fB, fA * scale.fA) + */ + SkRGBA4f operator*(const SkRGBA4f& scale) const { + return { fR * scale.fR, fG * scale.fG, fB * scale.fB, fA * scale.fA }; + } + + /** Returns a pointer to components of SkRGBA4f, for array access. + + @return pointer to array [fR, fG, fB, fA] + */ + const float* vec() const { return &fR; } + + /** Returns a pointer to components of SkRGBA4f, for array access. + + @return pointer to array [fR, fG, fB, fA] + */ + float* vec() { return &fR; } + + /** As a std::array */ + std::array array() const { return {fR, fG, fB, fA}; } + + /** Returns one component. Asserts if index is out of range and SK_DEBUG is defined. + + @param index one of: 0 (fR), 1 (fG), 2 (fB), 3 (fA) + @return value corresponding to index + */ + float operator[](int index) const { + SkASSERT(index >= 0 && index < 4); + return this->vec()[index]; + } + + /** Returns one component. Asserts if index is out of range and SK_DEBUG is defined. + + @param index one of: 0 (fR), 1 (fG), 2 (fB), 3 (fA) + @return value corresponding to index + */ + float& operator[](int index) { + SkASSERT(index >= 0 && index < 4); + return this->vec()[index]; + } + + /** Returns true if SkRGBA4f is an opaque color. Asserts if fA is out of range and + SK_DEBUG is defined. + + @return true if SkRGBA4f is opaque + */ + bool isOpaque() const { + SkASSERT(fA <= 1.0f && fA >= 0.0f); + return fA == 1.0f; + } + + /** Returns true if all channels are in [0, 1]. */ + bool fitsInBytes() const { + SkASSERT(fA >= 0.0f && fA <= 1.0f); + return fR >= 0.0f && fR <= 1.0f && + fG >= 0.0f && fG <= 1.0f && + fB >= 0.0f && fB <= 1.0f; + } + + /** Returns closest SkRGBA4f to SkColor. Only allowed if SkRGBA4f is unpremultiplied. + + @param color Color with Alpha, red, blue, and green components + @return SkColor as SkRGBA4f + + example: https://fiddle.skia.org/c/@RGBA4f_FromColor + */ + static SkRGBA4f FromColor(SkColor color); // impl. depends on kAT + + /** Returns closest SkColor to SkRGBA4f. Only allowed if SkRGBA4f is unpremultiplied. + + @return color as SkColor + + example: https://fiddle.skia.org/c/@RGBA4f_toSkColor + */ + SkColor toSkColor() const; // impl. depends on kAT + + /** Returns closest SkRGBA4f to SkPMColor. Only allowed if SkRGBA4f is premultiplied. + + @return SkPMColor as SkRGBA4f + */ + static SkRGBA4f FromPMColor(SkPMColor); // impl. depends on kAT + + /** Returns SkRGBA4f premultiplied by alpha. Asserts at compile time if SkRGBA4f is + already premultiplied. + + @return premultiplied color + */ + SkRGBA4f premul() const { + static_assert(kAT == kUnpremul_SkAlphaType, ""); + return { fR * fA, fG * fA, fB * fA, fA }; + } + + /** Returns SkRGBA4f unpremultiplied by alpha. Asserts at compile time if SkRGBA4f is + already unpremultiplied. + + @return unpremultiplied color + */ + SkRGBA4f unpremul() const { + static_assert(kAT == kPremul_SkAlphaType, ""); + + if (fA == 0.0f) { + return { 0, 0, 0, 0 }; + } else { + float invAlpha = 1 / fA; + return { fR * invAlpha, fG * invAlpha, fB * invAlpha, fA }; + } + } + + // This produces bytes in RGBA order (eg GrColor). Impl. is the same, regardless of kAT + uint32_t toBytes_RGBA() const; + static SkRGBA4f FromBytes_RGBA(uint32_t color); + + /** + Returns a copy of the SkRGBA4f but with alpha component set to 1.0f. + + @return opaque color + */ + SkRGBA4f makeOpaque() const { + return { fR, fG, fB, 1.0f }; + } + + /** + Returns a copy of the SkRGBA4f but with the alpha component pinned to [0, 1]. + + @return color with pinned alpha + */ + SkRGBA4f pinAlpha() const { + return { fR, fG, fB, SkTPin(fA, 0.f, 1.f) }; + } + + /** Returns this color, having replaced its alpha value. + */ + SkRGBA4f withAlpha(float a) const { + return { fR, fG, fB, a }; + } + + /** Returns this color, having replaced its alpha value specified as a byte. + */ + SkRGBA4f withAlphaByte(uint8_t a) const { + return { fR, fG, fB, a/255.f }; + } +}; + +/** \struct SkColor4f + RGBA color value, holding four floating point components. Color components are always in + a known order, and are unpremultiplied. + + This is a specialization of SkRGBA4f. For details, @see SkRGBA4f. +*/ +using SkColor4f = SkRGBA4f; + +template <> SK_API SkColor4f SkColor4f::FromColor(SkColor); +template <> SK_API SkColor SkColor4f::toSkColor() const; +template <> SK_API uint32_t SkColor4f::toBytes_RGBA() const; +template <> SK_API SkColor4f SkColor4f::FromBytes_RGBA(uint32_t color); + +namespace SkColors { +constexpr SkColor4f kTransparent = {0, 0, 0, 0}; +constexpr SkColor4f kBlack = {0, 0, 0, 1}; +constexpr SkColor4f kDkGray = {0.25f, 0.25f, 0.25f, 1}; +constexpr SkColor4f kGray = {0.50f, 0.50f, 0.50f, 1}; +constexpr SkColor4f kLtGray = {0.75f, 0.75f, 0.75f, 1}; +constexpr SkColor4f kWhite = {1, 1, 1, 1}; +constexpr SkColor4f kRed = {1, 0, 0, 1}; +constexpr SkColor4f kGreen = {0, 1, 0, 1}; +constexpr SkColor4f kBlue = {0, 0, 1, 1}; +constexpr SkColor4f kYellow = {1, 1, 0, 1}; +constexpr SkColor4f kCyan = {0, 1, 1, 1}; +constexpr SkColor4f kMagenta = {1, 0, 1, 1}; +} // namespace SkColors +#endif diff --git a/vendor/artifacts/skia/include/core/SkColorFilter.h b/vendor/artifacts/skia/include/core/SkColorFilter.h new file mode 100644 index 000000000..5cb14b5b7 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkColorFilter.h @@ -0,0 +1,150 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkColorFilter_DEFINED +#define SkColorFilter_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkFlattenable.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include +#include +#include + +class SkColorMatrix; +class SkColorSpace; +class SkColorTable; + +enum class SkBlendMode; +struct SkDeserialProcs; + +/** +* ColorFilters are optional objects in the drawing pipeline. When present in +* a paint, they are called with the "src" colors, and return new colors, which +* are then passed onto the next stage (either ImageFilter or Xfermode). +* +* All subclasses are required to be reentrant-safe : it must be legal to share +* the same instance between several threads. +*/ +class SK_API SkColorFilter : public SkFlattenable { +public: + /** If the filter can be represented by a source color plus Mode, this + * returns true, and sets (if not NULL) the color and mode appropriately. + * If not, this returns false and ignores the parameters. + */ + bool asAColorMode(SkColor* color, SkBlendMode* mode) const; + + /** If the filter can be represented by a 5x4 matrix, this + * returns true, and sets the matrix appropriately. + * If not, this returns false and ignores the parameter. + */ + bool asAColorMatrix(float matrix[20]) const; + + // Returns true if the filter is guaranteed to never change the alpha of a color it filters. + bool isAlphaUnchanged() const; + + /** + * Converts the src color (in src colorspace), into the dst colorspace, + * then applies this filter to it, returning the filtered color in the dst colorspace. + */ + SkColor4f filterColor4f(const SkColor4f& srcColor, SkColorSpace* srcCS, + SkColorSpace* dstCS) const; + + /** Construct a colorfilter whose effect is to first apply the inner filter and then apply + * this filter, applied to the output of the inner filter. + * + * result = this(inner(...)) + */ + sk_sp makeComposed(sk_sp inner) const; + + /** Return a colorfilter that will compute this filter in a specific color space. By default all + * filters operate in the destination (surface) color space. This allows filters like Blend and + * Matrix, or runtime color filters to perform their math in a known space. + */ + sk_sp makeWithWorkingColorSpace(sk_sp) const; + + static sk_sp Deserialize(const void* data, size_t size, + const SkDeserialProcs* procs = nullptr); + +private: + SkColorFilter() = default; + friend class SkColorFilterBase; + + using INHERITED = SkFlattenable; +}; + +class SK_API SkColorFilters { +public: + static sk_sp Compose(const sk_sp& outer, + sk_sp inner) { + return outer ? outer->makeComposed(std::move(inner)) + : std::move(inner); + } + + // Blends between the constant color (src) and input color (dst) based on the SkBlendMode. + // If the color space is null, the constant color is assumed to be defined in sRGB. + static sk_sp Blend(const SkColor4f& c, sk_sp, SkBlendMode mode); + static sk_sp Blend(SkColor c, SkBlendMode mode); + + enum class Clamp : bool { kNo, kYes }; + + static sk_sp Matrix(const SkColorMatrix&, Clamp clamp = Clamp::kYes); + static sk_sp Matrix(const float rowMajor[20], Clamp clamp = Clamp::kYes); + + // A version of Matrix which operates in HSLA space instead of RGBA. + // I.e. HSLA-to-RGBA(Matrix(RGBA-to-HSLA(input))). + static sk_sp HSLAMatrix(const SkColorMatrix&); + static sk_sp HSLAMatrix(const float rowMajor[20]); + + static sk_sp LinearToSRGBGamma(); + static sk_sp SRGBToLinearGamma(); + static sk_sp Lerp(float t, sk_sp dst, sk_sp src); + + /** + * Create a table colorfilter, copying the table into the filter, and + * applying it to all 4 components. + * a' = table[a]; + * r' = table[r]; + * g' = table[g]; + * b' = table[b]; + * Components are operated on in unpremultiplied space. If the incomming + * colors are premultiplied, they are temporarily unpremultiplied, then + * the table is applied, and then the result is remultiplied. + */ + static sk_sp Table(const uint8_t table[256]); + + /** + * Create a table colorfilter, with a different table for each + * component [A, R, G, B]. If a given table is NULL, then it is + * treated as identity, with the component left unchanged. If a table + * is not null, then its contents are copied into the filter. + */ + static sk_sp TableARGB(const uint8_t tableA[256], + const uint8_t tableR[256], + const uint8_t tableG[256], + const uint8_t tableB[256]); + + /** + * Create a table colorfilter that holds a ref to the shared color table. + */ + static sk_sp Table(sk_sp table); + + /** + * Create a colorfilter that multiplies the RGB channels by one color, and + * then adds a second color, pinning the result for each component to + * [0..255]. The alpha components of the mul and add arguments + * are ignored. + */ + static sk_sp Lighting(SkColor mul, SkColor add); + +private: + SkColorFilters() = delete; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkColorSpace.h b/vendor/artifacts/skia/include/core/SkColorSpace.h new file mode 100644 index 000000000..753491bdb --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkColorSpace.h @@ -0,0 +1,432 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkColorSpace_DEFINED +#define SkColorSpace_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkFixed.h" +#include "include/private/base/SkOnce.h" +#include "modules/skcms/skcms.h" + +#include +#include + +class SkData; + +/** + * Describes a color gamut with primaries and a white point. + */ +struct SK_API SkColorSpacePrimaries { + float fRX; + float fRY; + float fGX; + float fGY; + float fBX; + float fBY; + float fWX; + float fWY; + + /** + * Convert primaries and a white point to a toXYZD50 matrix, the preferred color gamut + * representation of SkColorSpace. + */ + bool toXYZD50(skcms_Matrix3x3* toXYZD50) const; + + bool operator==(const SkColorSpacePrimaries& other) const { + return fRX == other.fRX && fRY == other.fRY && fGX == other.fGX && fGY == other.fGY && + fBX == other.fBX && fBY == other.fBY && fWX == other.fWX && fWY == other.fWY; + } +}; + +// TODO(https://issuetracker.google.com/issues/40044808): Remove this when no longer needed by +// Chromium. +#define SKIA_COLOR_SPACE_PRIMARIES_OPERATOR_EQUAL + +namespace SkNamedPrimaries { + +//////////////////////////////////////////////////////////////////////////////// +// Color primaries defined by ITU-T H.273, table 2. Names are given by the first +// specification referenced in the value's row. + +// Rec. ITU-R BT.709-6, value 1. +static constexpr SkColorSpacePrimaries kRec709 = { + 0.64f, 0.33f, 0.3f, 0.6f, 0.15f, 0.06f, 0.3127f, 0.329f}; + +// Rec. ITU-R BT.470-6 System M (historical), value 4. +static constexpr SkColorSpacePrimaries kRec470SystemM = { + 0.67f, 0.33f, 0.21f, 0.71f, 0.14f, 0.08f, 0.31f, 0.316f}; + +// Rec. ITU-R BT.470-6 System B, G (historical), value 5. +static constexpr SkColorSpacePrimaries kRec470SystemBG = { + 0.64f, 0.33f, 0.29f, 0.60f, 0.15f, 0.06f, 0.3127f, 0.3290f}; + +// Rec. ITU-R BT.601-7 525, value 6. +static constexpr SkColorSpacePrimaries kRec601 = { + 0.630f, 0.340f, 0.310f, 0.595f, 0.155f, 0.070f, 0.3127f, 0.3290f}; + +// SMPTE ST 240, value 7 (functionally the same as value 6). +static constexpr SkColorSpacePrimaries kSMPTE_ST_240 = kRec601; + +// Generic film (colour filters using Illuminant C), value 8. +static constexpr SkColorSpacePrimaries kGenericFilm = { + 0.681f, 0.319f, 0.243f, 0.692f, 0.145f, 0.049f, 0.310f, 0.316f}; + +// Rec. ITU-R BT.2020-2, value 9. +static constexpr SkColorSpacePrimaries kRec2020{ + 0.708f, 0.292f, 0.170f, 0.797f, 0.131f, 0.046f, 0.3127f, 0.3290f}; + +// SMPTE ST 428-1, value 10. +static constexpr SkColorSpacePrimaries kSMPTE_ST_428_1 = { + 1.f, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f / 3.f, 1.f / 3.f}; + +// SMPTE RP 431-2, value 11. +static constexpr SkColorSpacePrimaries kSMPTE_RP_431_2 = { + 0.680f, 0.320f, 0.265f, 0.690f, 0.150f, 0.060f, 0.314f, 0.351f}; + +// SMPTE EG 432-1, value 12. +static constexpr SkColorSpacePrimaries kSMPTE_EG_432_1 = { + 0.680f, 0.320f, 0.265f, 0.690f, 0.150f, 0.060f, 0.3127f, 0.3290f}; + +// No corresponding industry specification identified, value 22. +// This is sometimes referred to as EBU 3213-E, but that document doesn't +// specify these values. +static constexpr SkColorSpacePrimaries kITU_T_H273_Value22 = { + 0.630f, 0.340f, 0.295f, 0.605f, 0.155f, 0.077f, 0.3127f, 0.3290f}; + +// Mapping between names of color primaries and the number of the corresponding +// row in ITU-T H.273, table 2. As above, the constants are named based on the +// first specification referenced in the value's row. +enum class CicpId : uint8_t { + // Value 0 is reserved. + kRec709 = 1, + // Value 2 is unspecified. + // Value 3 is reserved. + kRec470SystemM = 4, + kRec470SystemBG = 5, + kRec601 = 6, + kSMPTE_ST_240 = 7, + kGenericFilm = 8, + kRec2020 = 9, + kSMPTE_ST_428_1 = 10, + kSMPTE_RP_431_2 = 11, + kSMPTE_EG_432_1 = 12, + // Values 13-21 are reserved. + kITU_T_H273_Value22 = 22, + // Values 23-255 are reserved. +}; + +// https://www.w3.org/TR/css-color-4/#predefined-prophoto-rgb +static constexpr SkColorSpacePrimaries kProPhotoRGB = { + 0.7347f, 0.2653f, 0.1596f, 0.8404f, 0.0366f, 0.0001f, 0.34567f, 0.35850f}; + +} // namespace SkNamedPrimaries + +namespace SkNamedTransferFn { + +// Like SkNamedGamut::kSRGB, keeping this bitwise exactly the same as skcms makes things fastest. +static constexpr skcms_TransferFunction kSRGB = + { 2.4f, (float)(1/1.055), (float)(0.055/1.055), (float)(1/12.92), 0.04045f, 0.0f, 0.0f }; + +static constexpr skcms_TransferFunction k2Dot2 = + { 2.2f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + +static constexpr skcms_TransferFunction kRec2020 = { + 2.22222f, 0.909672f, 0.0903276f, 0.222222f, 0.0812429f, 0, 0}; + +//////////////////////////////////////////////////////////////////////////////// +// Transfer function defined by ITU-T H.273, table 3. Names are given by the +// first specification referenced in the value's row. The equations in table 3 +// "either indicates the reference [OETF] ... or indicates the inverse of the +// reference EOTF". The transfer functions provided are reference EOTFs. + +// Rec. ITU-R BT.709-6, value 1. This follows note 1, which reads: "In the cases +// of [...] TransferCharacteristics equal to 1, 6, 14 or 15 [...], although the +// value is defined in terms of a reference [OETF], a suggested corresponding +// reference [EOTF] has been specified in Rec. ITU-R BT.1886-0." +static constexpr skcms_TransferFunction kRec709 = {2.4f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f}; + +// Rec. ITU-R BT.470-6 System M (historical) assumed display gamma 2.2, value 4. +static constexpr skcms_TransferFunction kRec470SystemM = {2.2f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f}; + +// Rec. ITU-R BT.470-6 System B, G (historical) assumed display gamma 2.8, +// value 5. +static constexpr skcms_TransferFunction kRec470SystemBG = {2.8f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f}; + +// Rec. ITU-R BT.601-7, same as kRec709, value 6. +static constexpr skcms_TransferFunction kRec601 = kRec709; + +// SMPTE ST 240, value 7. +static constexpr skcms_TransferFunction kSMPTE_ST_240 = { + 2.222222222222f, 0.899626676224f, 0.100373323776f, 0.25f, 0.091286342118f, 0.f, 0.f}; + +// Linear, value 8 +static constexpr skcms_TransferFunction kLinear = + { 1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + +// IEC 61966-2-4, value 11, same as kRec709 (but is explicitly extended). +static constexpr skcms_TransferFunction kIEC61966_2_4 = kRec709; + +// IEC 61966-2-1 sRGB, value 13. +static constexpr skcms_TransferFunction kIEC61966_2_1 = kSRGB; + +// Rec. ITU-R BT.2020-2 (10-bit system), value 14. +static constexpr skcms_TransferFunction kRec2020_10bit = kRec709; + +// Rec. ITU-R BT.2020-2 (12-bit system), value 15. +static constexpr skcms_TransferFunction kRec2020_12bit = kRec709; + +// Rec. ITU-R BT.2100-2 perceptual quantization (PQ) system, value 16. +static constexpr skcms_TransferFunction kPQ = + {-5.0f, 203.f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; + +// SMPTE ST 428-1, value 17. +static constexpr skcms_TransferFunction kSMPTE_ST_428_1 = { + 2.6f, 1.034080527699f, 0.f, 0.f, 0.f, 0.f, 0.f}; + +// Rec. ITU-R BT.2100-2 hybrid log-gamma (HLG) system, value 18. +static constexpr skcms_TransferFunction kHLG = + {-6.0f, 203.f, 1000.0f, 1.2f, 0.0f, 0.0f, 0.0f }; + +// Mapping between transfer function names and the number of the corresponding +// row in ITU-T H.273, table 3. As above, the constants are named based on the +// first specification referenced in the value's row. +enum class CicpId : uint8_t { + // Value 0 is reserved. + kRec709 = 1, + // Value 2 is unspecified. + // Value 3 is reserved. + kRec470SystemM = 4, + kRec470SystemBG = 5, + kRec601 = 6, + kSMPTE_ST_240 = 7, + kLinear = 8, + // Value 9 is not supported by `SkColorSpace::MakeCICP`. + // Value 10 is not supported by `SkColorSpace::MakeCICP`. + kIEC61966_2_4 = 11, + // Value 12 is not supported by `SkColorSpace::MakeCICP`. + kIEC61966_2_1 = 13, + kSRGB = kIEC61966_2_1, + kRec2020_10bit = 14, + kRec2020_12bit = 15, + kPQ = 16, + kSMPTE_ST_428_1 = 17, + kHLG = 18, + // Values 19-255 are reserved. +}; + +// https://w3.org/TR/css-color-4/#valdef-color-prophoto-rgb +// "The transfer curve is a gamma function with a value of 1/1.8" +static constexpr skcms_TransferFunction kProPhotoRGB = {1.8f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}; + +// https://www.w3.org/TR/css-color-4/#predefined-a98-rgb +static constexpr skcms_TransferFunction kA98RGB = k2Dot2; + +} // namespace SkNamedTransferFn + +namespace SkNamedGamut { + +static constexpr skcms_Matrix3x3 kSRGB = {{ + // ICC fixed-point (16.16) representation, taken from skcms. Please keep them exactly in sync. + // 0.436065674f, 0.385147095f, 0.143066406f, + // 0.222488403f, 0.716873169f, 0.060607910f, + // 0.013916016f, 0.097076416f, 0.714096069f, + { SkFixedToFloat(0x6FA2), SkFixedToFloat(0x6299), SkFixedToFloat(0x24A0) }, + { SkFixedToFloat(0x38F5), SkFixedToFloat(0xB785), SkFixedToFloat(0x0F84) }, + { SkFixedToFloat(0x0390), SkFixedToFloat(0x18DA), SkFixedToFloat(0xB6CF) }, +}}; + +static constexpr skcms_Matrix3x3 kAdobeRGB = {{ + // ICC fixed-point (16.16) repesentation of: + // 0.60974, 0.20528, 0.14919, + // 0.31111, 0.62567, 0.06322, + // 0.01947, 0.06087, 0.74457, + { SkFixedToFloat(0x9c18), SkFixedToFloat(0x348d), SkFixedToFloat(0x2631) }, + { SkFixedToFloat(0x4fa5), SkFixedToFloat(0xa02c), SkFixedToFloat(0x102f) }, + { SkFixedToFloat(0x04fc), SkFixedToFloat(0x0f95), SkFixedToFloat(0xbe9c) }, +}}; + +static constexpr skcms_Matrix3x3 kDisplayP3 = {{ + { 0.515102f, 0.291965f, 0.157153f }, + { 0.241182f, 0.692236f, 0.0665819f }, + { -0.00104941f, 0.0418818f, 0.784378f }, +}}; + +static constexpr skcms_Matrix3x3 kRec2020 = {{ + { 0.673459f, 0.165661f, 0.125100f }, + { 0.279033f, 0.675338f, 0.0456288f }, + { -0.00193139f, 0.0299794f, 0.797162f }, +}}; + +static constexpr skcms_Matrix3x3 kXYZ = {{ + { 1.0f, 0.0f, 0.0f }, + { 0.0f, 1.0f, 0.0f }, + { 0.0f, 0.0f, 1.0f }, +}}; + +} // namespace SkNamedGamut + +class SK_API SkColorSpace : public SkNVRefCnt { +public: + /** + * Create the sRGB color space. + */ + static sk_sp MakeSRGB(); + + /** + * Colorspace with the sRGB primaries, but a linear (1.0) gamma. + */ + static sk_sp MakeSRGBLinear(); + + /** + * Create an SkColorSpace from a transfer function and a row-major 3x3 transformation to XYZ. + */ + static sk_sp MakeRGB(const skcms_TransferFunction& transferFn, + const skcms_Matrix3x3& toXYZ); + + /** + * Create an SkColorSpace from code points specified in Rec. ITU-T H.273. + * Null will be returned for invalid or unsupported combination of code + * points. + * + * Parameters: + * + * - `color_primaries` identifies an entry in Rec. ITU-T H.273, Table 2. + * - `transfer_characteristics` identifies an entry in Rec. ITU-T H.273, Table 3. + * + * `SkColorSpace` (and the underlying `skcms_ICCProfile`) only supports RGB + * color spaces and therefore this function does not take a + * `matrix_coefficients` parameter - the caller is expected to verify that + * `matrix_coefficients` is `0`. + * + * Narrow range images are extremely rare - see + * https://github.com/w3c/png/issues/312#issuecomment-2327349614. Therefore + * this function doesn't take a `video_full_range_flag` - the caller is + * expected to verify that it is `1` (indicating a full range image). + */ + static sk_sp MakeCICP(SkNamedPrimaries::CicpId color_primaries, + SkNamedTransferFn::CicpId transfer_characteristics); + + /** + * Create an SkColorSpace from a parsed (skcms) ICC profile. + */ + static sk_sp Make(const skcms_ICCProfile&); + + /** + * Convert this color space to an skcms ICC profile struct. + */ + void toProfile(skcms_ICCProfile*) const; + + /** + * Returns true if the color space gamma is near enough to be approximated as sRGB. + */ + bool gammaCloseToSRGB() const; + + /** + * Returns true if the color space gamma is linear. + */ + bool gammaIsLinear() const; + + /** + * Sets |fn| to the transfer function from this color space. Returns true if the transfer + * function can be represented as coefficients to the standard ICC 7-parameter equation. + * Returns false otherwise (eg, PQ, HLG). + */ + bool isNumericalTransferFn(skcms_TransferFunction* fn) const; + + /** + * Returns true and sets |toXYZD50|. + */ + bool toXYZD50(skcms_Matrix3x3* toXYZD50) const; + + /** + * Returns a hash of the gamut transformation to XYZ D50. Allows for fast equality checking + * of gamuts, at the (very small) risk of collision. + */ + uint32_t toXYZD50Hash() const { return fToXYZD50Hash; } + + /** + * Returns a color space with the same gamut as this one, but with a linear gamma. + */ + sk_sp makeLinearGamma() const; + + /** + * Returns a color space with the same gamut as this one, but with the sRGB transfer + * function. + */ + sk_sp makeSRGBGamma() const; + + /** + * Returns a color space with the same transfer function as this one, but with the primary + * colors rotated. In other words, this produces a new color space that maps RGB to GBR + * (when applied to a source), and maps RGB to BRG (when applied to a destination). + * + * This is used for testing, to construct color spaces that have severe and testable behavior. + */ + sk_sp makeColorSpin() const; + + /** + * Returns true if the color space is sRGB. + * Returns false otherwise. + * + * This allows a little bit of tolerance, given that we might see small numerical error + * in some cases: converting ICC fixed point to float, converting white point to D50, + * rounding decisions on transfer function and matrix. + * + * This does not consider a 2.2f exponential transfer function to be sRGB. While these + * functions are similar (and it is sometimes useful to consider them together), this + * function checks for logical equality. + */ + bool isSRGB() const; + + /** + * Returns a serialized representation of this color space. + */ + sk_sp serialize() const; + + /** + * If |memory| is nullptr, returns the size required to serialize. + * Otherwise, serializes into |memory| and returns the size. + */ + size_t writeToMemory(void* memory) const; + + static sk_sp Deserialize(const void* data, size_t length); + + /** + * If both are null, we return true. If one is null and the other is not, we return false. + * If both are non-null, we do a deeper compare. + */ + static bool Equals(const SkColorSpace*, const SkColorSpace*); + + void transferFn(float gabcdef[7]) const; // DEPRECATED: Remove when webview usage is gone + void transferFn(skcms_TransferFunction* fn) const; + void invTransferFn(skcms_TransferFunction* fn) const; + void gamutTransformTo(const SkColorSpace* dst, skcms_Matrix3x3* src_to_dst) const; + + uint32_t transferFnHash() const { return fTransferFnHash; } + uint64_t hash() const { return (uint64_t)fTransferFnHash << 32 | fToXYZD50Hash; } + +private: + friend class SkColorSpaceSingletonFactory; + + SkColorSpace(const skcms_TransferFunction& transferFn, const skcms_Matrix3x3& toXYZ); + + void computeLazyDstFields() const; + + uint32_t fTransferFnHash; + uint32_t fToXYZD50Hash; + + skcms_TransferFunction fTransferFn; + skcms_Matrix3x3 fToXYZD50; + + mutable skcms_TransferFunction fInvTransferFn; + mutable skcms_Matrix3x3 fFromXYZD50; + mutable SkOnce fLazyDstFieldsOnce; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkColorTable.h b/vendor/artifacts/skia/include/core/SkColorTable.h new file mode 100644 index 000000000..5c0379b89 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkColorTable.h @@ -0,0 +1,62 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkColorTable_DEFINED +#define SkColorTable_DEFINED + +#include "include/core/SkBitmap.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include + +class SkReadBuffer; +class SkWriteBuffer; + +/** + * SkColorTable holds the lookup tables for each channel (ARGB) used to define the filter behavior + * of `SkColorFilters::Table`, and provides a way to share the table data between client code and + * the returned SkColorFilter. Once created, an SkColorTable is immutable. +*/ +class SK_API SkColorTable : public SkRefCnt { +public: + // Creates a new SkColorTable with 'table' used for all four channels. The table is copied into + // the SkColorTable. + static sk_sp Make(const uint8_t table[256]) { + return Make(table, table, table, table); + } + + // Creates a new SkColorTable with the per-channel lookup tables. Each non-null table is copied + // into the SkColorTable. Null parameters are interpreted as the identity table. + static sk_sp Make(const uint8_t tableA[256], + const uint8_t tableR[256], + const uint8_t tableG[256], + const uint8_t tableB[256]); + + // Per-channel constant value lookup (0-255). + const uint8_t* alphaTable() const { return fTable.getAddr8(0, 0); } + const uint8_t* redTable() const { return fTable.getAddr8(0, 1); } + const uint8_t* greenTable() const { return fTable.getAddr8(0, 2); } + const uint8_t* blueTable() const { return fTable.getAddr8(0, 3); } + + void flatten(SkWriteBuffer& buffer) const; + + static sk_sp Deserialize(SkReadBuffer& buffer); + +private: + friend class SkTableColorFilter; // for bitmap() + + explicit SkColorTable(const SkBitmap& table) : fTable(table) {} + + // The returned SkBitmap is immutable; attempting to modify its pixel data will trigger asserts + // in debug builds and cause undefined behavior in release builds. + const SkBitmap& bitmap() const { return fTable; } + + SkBitmap fTable; // A 256x4 A8 image +}; + +#endif // SkColorTable_DEFINED diff --git a/vendor/artifacts/skia/include/core/SkColorType.h b/vendor/artifacts/skia/include/core/SkColorType.h new file mode 100644 index 000000000..e9a52ac27 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkColorType.h @@ -0,0 +1,159 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkColorType_DEFINED +#define SkColorType_DEFINED + +#include "include/core/SkTypes.h" + +/** \enum SkColorType + Describes how pixel bits encode color. A pixel may be an alpha mask, a grayscale, RGB, or ARGB. + + kN32_SkColorType selects the native 32-bit ARGB format for the current configuration. This can + lead to inconsistent results across platforms, so use with caution. + + By default, Skia operates with the assumption of a little-Endian system. The names of each + SkColorType implicitly define the channel ordering and size in memory. Due to historical reasons + the names do not follow 100% identical convention, but are typically labeled from least + significant to most significant. To help clarify when the actual data layout differs from the + default convention, every SkColorType's comment includes a bit-labeled description of a pixel + in that color type on a LE system. + + Unless specified otherwise, a channel's value is treated as an unsigned integer with a range of + of [0, 2^N-1] and this is mapped uniformly to a floating point value of [0.0, 1.0]. Some color + types instead store data directly in 32-bit floating point (assumed to be IEEE), or in 16-bit + "half" floating point values. A half float, or F16/float16, is interpreted as FP 1-5-10 or + Bits: [sign:15 exp:14..10 man:9..0] +*/ +enum SkColorType : int { + // Unknown or unrepresentable as an SkColorType. + kUnknown_SkColorType, + // Single channel data (8-bit) interpreted as an alpha value. RGB are 0. + // Bits: [A:7..0] + kAlpha_8_SkColorType, + // Three channel BGR data (5 bits red, 6 bits green, 5 bits blue) packed into a LE 16-bit word. + // NOTE: The name of this enum value does not match the standard convention for SkColorType. + // Bits: [R:15..11 G:10..5 B:4..0] + kRGB_565_SkColorType, + // Four channel ABGR data (4 bits per channel) packed into a LE 16-bit word. + // NOTE: The name of this enum value does not match the standard convention for SkColorType. + // Bits: [R:15..12 G:11..8 B:7..4 A:3..0] + kARGB_4444_SkColorType, + // Four channel RGBA data (8 bits per channel) packed into a LE 32-bit word. + // Bits: [A:31..24 B:23..16 G:15..8 R:7..0] + kRGBA_8888_SkColorType, + // Three channel RGB data (8 bits per channel) packed into a LE 32-bit word. The remaining bits + // are ignored and alpha is forced to opaque. + // Bits: [x:31..24 B:23..16 G:15..8 R:7..0] + kRGB_888x_SkColorType, + // Four channel BGRA data (8 bits per channel) packed into a LE 32-bit word. R and B are swapped + // relative to kRGBA_8888. + // Bits: [A:31..24 R:23..16 G:15..8 B:7..0] + kBGRA_8888_SkColorType, + // Four channel RGBA data (10 bits per color, 2 bits for alpha) packed into a LE 32-bit word. + // Bits: [A:31..30 B:29..20 G:19..10 R:9..0] + kRGBA_1010102_SkColorType, + // Four channel BGRA data (10 bits per color, 2 bits for alpha) packed into a LE 32-bit word. + // R and B are swapped relative to kRGBA_1010102. + // Bits: [A:31..30 R:29..20 G:19..10 B:9..0] + kBGRA_1010102_SkColorType, + // Three channel RGB data (10 bits per channel) packed into a LE 32-bit word. The remaining bits + // are ignored and alpha is forced to opaque. + // Bits: [x:31..30 B:29..20 G:19..10 R:9..0] + kRGB_101010x_SkColorType, + // Three channel BGR data (10 bits per channel) packed into a LE 32-bit word. The remaining bits + // are ignored and alpha is forced to opaque. R and B are swapped relative to kRGB_101010x. + // Bits: [x:31..30 R:29..20 G:19..10 B:9..0] + kBGR_101010x_SkColorType, + // Three channel BGR data (10 bits per channel) packed into a LE 32-bit word. The remaining bits + // are ignored and alpha is forced to opaque. Instead of normalizing [0, 1023] to [0.0, 1.0] the + // color channels map to an extended range of [-0.752941, 1.25098], compatible with + // MTLPixelFormatBGR10_XR. + // Bits: [x:31..30 R:29..20 G:19..10 B:9..0] + kBGR_101010x_XR_SkColorType, + // Four channel BGRA data (10 bits per channel) packed into a LE 64-bit word. Each channel is + // preceded by 6 bits of padding. Instead of normalizing [0, 1023] to [0.0, 1.0] the color and + // alpha channels map to an extended range of [-0.752941, 1.25098], compatible with + // MTLPixelFormatBGRA10_XR. + // Bits: [A:63..54 x:53..48 R:47..38 x:37..32 G:31..22 x:21..16 B:15..6 x:5..0] + kBGRA_10101010_XR_SkColorType, + // Four channel RGBA data (10 bits per channel) packed into a LE 64-bit word. Each channel is + // preceded by 6 bits of padding. + // Bits: [A:63..54 x:53..48 B:47..38 x:37..32 G:31..22 x:21..16 R:15..6 x:5..0] + kRGBA_10x6_SkColorType, + // Single channel data (8-bit) interpreted as a grayscale value (e.g. replicated to RGB). + // Bits: [G:7..0] + kGray_8_SkColorType, + // Four channel RGBA data (16-bit half-float per channel) packed into a LE 64-bit word. Values + // are assumed to be in [0.0,1.0] range, unlike kRGBA_F16. + // Bits: [A:63..48 B:47..32 G:31..16 R:15..0] + kRGBA_F16Norm_SkColorType, + // Four channel RGBA data (16-bit half-float per channel) packed into a LE 64-bit word. + // This has extended range compared to kRGBA_F16Norm. + // Bits: [A:63..48 B:47..32 G:31..16 R:15..0] + kRGBA_F16_SkColorType, + // Three channel RGB data (16-bit half-float per channel) packed into a LE 64-bit word. The last + // 16 bits are ignored and alpha is forced to opaque. + // Bits: [x:63..48 B:47..32 G:31..16 R:15..0] + kRGB_F16F16F16x_SkColorType, + // Four channel RGBA data (32-bit float per channel) packed into a LE 128-bit word. + // Bits: [A:127..96 B:95..64 G:63..32 R:31..0] + kRGBA_F32_SkColorType, + // Two channel RG data (8 bits per channel). Blue is forced to 0, alpha is forced to opaque. + // Bits: [G:15..8 R:7..0] + kR8G8_unorm_SkColorType, + // Single channel data (16-bit half-float) interpreted as alpha. RGB are 0. + // Bits: [A:15..0] + kA16_float_SkColorType, + + // Single channel data (16 bits half-float) interpreted as red. G and B are forced to 0, alpha + // is forced to opaque. + // Bits: [R:15..0] + kR16_float_SkColorType, + // Two channel RG data (16-bit half-float per channel) packed into a LE 32-bit word. + // Blue is forced to 0, alpha is forced to opaque. + // Bits: [G:31..16 R:15..0] + kR16G16_float_SkColorType, + // Single channel data (16 bits) interpreted as alpha. RGB are 0. + // Bits: [A:15..0] + kA16_unorm_SkColorType, + // Single channel data (16 bits) interpreted as red. G and B are forced to 0, alpha is forced to + // opaque. + // Bits: [R:15..0] + kR16_unorm_SkColorType, + // Two channel RG data (16 bits per channel) packed into a LE 32-bit word. B is forced to 0, + // alpha is forced to opaque. + // Bits: [G:31..16 R:15..0] + kR16G16_unorm_SkColorType, + // Four channel RGBA data (16 bits per channel) packed into a LE 64-bit word. + // Bits: [A:63..48 B:47..32 G:31..16 R:15..0] + kR16G16B16A16_unorm_SkColorType, + // Four channel RGBA data (8 bits per channel) packed into a LE 32-bit word. The RGB values are + // assumed to be encoded with the sRGB transfer function, which can be decoded automatically + // by GPU hardware with certain texture formats. + // Bits: [A:31..24 B:23..16 G:15..8 R:7..0] + kSRGBA_8888_SkColorType, + // Single channel data (8 bits) interpreted as red. G and B are forced to 0, alpha is forced to + // opaque. + // Bits: [R:7..0] + kR8_unorm_SkColorType, + + kLastEnum_SkColorType = kR8_unorm_SkColorType, //!< last valid value + +#if SK_PMCOLOR_BYTE_ORDER(B,G,R,A) + kN32_SkColorType = kBGRA_8888_SkColorType,//!< native 32-bit BGRA encoding + +#elif SK_PMCOLOR_BYTE_ORDER(R,G,B,A) + kN32_SkColorType = kRGBA_8888_SkColorType,//!< native 32-bit RGBA encoding + +#else + #error "SK_*32_SHIFT values must correspond to BGRA or RGBA byte order" +#endif +}; +static constexpr int kSkColorTypeCnt = static_cast(kLastEnum_SkColorType) + 1; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkContourMeasure.h b/vendor/artifacts/skia/include/core/SkContourMeasure.h new file mode 100644 index 000000000..812e01a50 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkContourMeasure.h @@ -0,0 +1,215 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkContourMeasure_DEFINED +#define SkContourMeasure_DEFINED + +#include "include/core/SkPathTypes.h" // IWYU pragma: keep +#include "include/core/SkPoint.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkTDArray.h" + +#include +#include + +class SkMatrix; +class SkPath; +class SkPathBuilder; + +class SK_API SkContourMeasure : public SkRefCnt { +public: + /** Return the length of the contour. + */ + SkScalar length() const { return fLength; } + + /** Pins distance to 0 <= distance <= length(), and then computes the corresponding + * position and tangent. + */ + [[nodiscard]] bool getPosTan(SkScalar distance, SkPoint* position, SkVector* tangent) const; + + enum MatrixFlags { + kGetPosition_MatrixFlag = 0x01, + kGetTangent_MatrixFlag = 0x02, + kGetPosAndTan_MatrixFlag = kGetPosition_MatrixFlag | kGetTangent_MatrixFlag + }; + + /** Pins distance to 0 <= distance <= getLength(), and then computes + the corresponding matrix (by calling getPosTan). + Returns false if there is no path, or a zero-length path was specified, in which case + matrix is unchanged. + */ + [[nodiscard]] bool getMatrix(SkScalar distance, SkMatrix* matrix, + MatrixFlags flags = kGetPosAndTan_MatrixFlag) const; + + /** Given a start and stop distance, append to dst the intervening segment(s). + If the segment is zero-length, return false, else return true. + startD and stopD are pinned to legal values (0..getLength()). If startD > stopD + then return false (and leave dst untouched). + Begin the segment with a moveTo if startWithMoveTo is true + */ + [[nodiscard]] bool getSegment(SkScalar startD, SkScalar stopD, SkPathBuilder* dst, + bool startWithMoveTo) const; + + /** Return true if the contour is closed() + */ + bool isClosed() const { return fIsClosed; } + + /** Measurement data for individual verbs. + */ + struct VerbMeasure { + SkScalar fDistance; // Cumulative distance along the current contour. + SkPathVerb fVerb; // Verb type. + SkSpan fPts; // Verb points. + }; + +private: + struct Segment; + +public: + /** Utility for iterating over the current contour verbs: + * + * for (const auto verb_measure : contour_measure) { + * ... + * } + */ + class ForwardVerbIterator final { + public: + VerbMeasure operator*() const; + + ForwardVerbIterator& operator++() { + SkASSERT(!fSegments.empty()); + + fSegments = LastSegForCurrentVerb(fSegments.subspan(1)); + + return *this; + } + + bool operator==(const ForwardVerbIterator& other) const { + SkASSERT(fSegments.data() != other.fSegments.data() || + fSegments.size() == other.fSegments.size()); + return fSegments.data() == other.fSegments.data(); + } + + bool operator!=(const ForwardVerbIterator& other) const { + return !((*this) == other); + } + + private: + friend class SkContourMeasure; + + ForwardVerbIterator(SkSpan segs, SkSpan pts) + : fSegments(LastSegForCurrentVerb(segs)) + , fPts(pts) {} + + static SkSpan LastSegForCurrentVerb(const SkSpan& segs) { + size_t i = 1; + while (i < segs.size() && segs[0].fPtIndex == segs[i].fPtIndex) { + ++i; + } + + return segs.subspan(i - 1); + } + + // Remaining segments for forward iteration. The first segment in the span is + // adjusted to always point to the last segment of the current verb, such that its distance + // corresponds to the verb distance. + SkSpan fSegments; + + // All path points (indexed in segments). + SkSpan fPts; + }; + + ForwardVerbIterator begin() const { + return ForwardVerbIterator(fSegments, fPts); + } + ForwardVerbIterator end() const { + return ForwardVerbIterator(SkSpan(fSegments.end(), 0), fPts); + } + +private: + struct Segment { + SkScalar fDistance; // total distance up to this point + unsigned fPtIndex; // index into the fPts array + unsigned fTValue : 30; + unsigned fType : 2; // actually the enum SkSegType + // See SkPathMeasurePriv.h + + SkScalar getScalarT() const; + + static const Segment* Next(const Segment* seg) { + unsigned ptIndex = seg->fPtIndex; + do { + ++seg; + } while (seg->fPtIndex == ptIndex); + return seg; + } + + }; + + const SkTDArray fSegments; + const SkTDArray fPts; // Points used to define the segments + + const SkScalar fLength; + const bool fIsClosed; + + SkContourMeasure(SkTDArray&& segs, SkTDArray&& pts, + SkScalar length, bool isClosed); + ~SkContourMeasure() override {} + + const Segment* distanceToSegment(SkScalar distance, SkScalar* t) const; + + friend class SkContourMeasureIter; + friend class SkPathMeasurePriv; +}; + +class SK_API SkContourMeasureIter { +public: + SkContourMeasureIter(); + /** + * Initialize the Iter with a path. + * The parts of the path that are needed are copied, so the client is free to modify/delete + * the path after this call. + * + * resScale controls the precision of the measure. values > 1 increase the + * precision (and possibly slow down the computation). + */ + SkContourMeasureIter(const SkPath& path, bool forceClosed, SkScalar resScale = 1); + ~SkContourMeasureIter(); + + SkContourMeasureIter(SkContourMeasureIter&&); + SkContourMeasureIter& operator=(SkContourMeasureIter&&); + + /** + * Reset the Iter with a path. + * The parts of the path that are needed are copied, so the client is free to modify/delete + * the path after this call. + */ + void reset(const SkPath& path, bool forceClosed, SkScalar resScale = 1); + + /** + * Iterates through contours in path, returning a contour-measure object for each contour + * in the path. Returns null when it is done. + * + * This only returns non-zero length contours, where a contour is the segments between + * a kMove_Verb and either ... + * - the next kMove_Verb + * - kClose_Verb (1 or more) + * - kDone_Verb + * If it encounters a zero-length contour, it is skipped. + */ + sk_sp next(); + +private: + class Impl; + + std::unique_ptr fImpl; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkCoverageMode.h b/vendor/artifacts/skia/include/core/SkCoverageMode.h new file mode 100644 index 000000000..625a948a4 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkCoverageMode.h @@ -0,0 +1,28 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCoverageMode_DEFINED +#define SkCoverageMode_DEFINED + +/** + * Describes geometric operations (ala SkRegion::Op) that can be applied to coverage bytes. + * These can be thought of as variants of porter-duff (SkBlendMode) modes, but only applied + * to the alpha channel. + * + * See SkMaskFilter for ways to use these when combining two different masks. + */ +enum class SkCoverageMode { + kUnion, // A ∪ B A+B-A*B + kIntersect, // A ∩ B A*B + kDifference, // A - B A*(1-B) + kReverseDifference, // B - A B*(1-A) + kXor, // A ⊕ B A+B-2*A*B + + kLast = kXor, +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkCubicMap.h b/vendor/artifacts/skia/include/core/SkCubicMap.h new file mode 100644 index 000000000..5fc7ad1e1 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkCubicMap.h @@ -0,0 +1,47 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCubicMap_DEFINED +#define SkCubicMap_DEFINED + +#include "include/core/SkPoint.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +/** + * Fast evaluation of a cubic ease-in / ease-out curve. This is defined as a parametric cubic + * curve inside the unit square. + * + * pt[0] is implicitly { 0, 0 } + * pt[3] is implicitly { 1, 1 } + * pts[1,2].X are inside the unit [0..1] + */ +class SK_API SkCubicMap { +public: + SkCubicMap(SkPoint p1, SkPoint p2); + + static bool IsLinear(SkPoint p1, SkPoint p2) { + return SkScalarNearlyEqual(p1.fX, p1.fY) && SkScalarNearlyEqual(p2.fX, p2.fY); + } + + float computeYFromX(float x) const; + + SkPoint computeFromT(float t) const; + +private: + enum Type { + kLine_Type, // x == y + kCubeRoot_Type, // At^3 == x + kSolver_Type, // general monotonic cubic solver + }; + + SkPoint fCoeff[3]; + Type fType; +}; + +#endif + diff --git a/vendor/artifacts/skia/include/core/SkData.h b/vendor/artifacts/skia/include/core/SkData.h new file mode 100644 index 000000000..0225208b1 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkData.h @@ -0,0 +1,225 @@ +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkData_DEFINED +#define SkData_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" +#include "include/private/base/SkAPI.h" + +#include +#include +#include + +class SkStream; + +/** + * SkData holds a data buffer. It can be created to allocate its own buffer + * for the contents, or to share a pointer to the client's buffer. The size and + * address of the contents never change for the lifetime of the data object. + */ +class SK_API SkData final : public SkNVRefCnt { +public: + /** + * Returns true if this and rhs are the same size, and contain the same contents. + * All empty objects compare as equal. + */ + bool operator==(const SkData& rhs) const; + bool operator!=(const SkData& rhs) const { return !(*this == rhs); } + + /** + * Calls == operator, but first checks if other is null (in which case it returns false) + */ + bool equals(const SkData* other) const { + return (other != nullptr) && *this == *other; + } + + /** + * Return true if both arguments are the same size and contain the same bytes, or if both + * arguments are null. + */ + static bool Equals(const SkData* a, const SkData* b) { + return (a == nullptr) ? (b == nullptr) : a->equals(b); + } + + /** + * Returns the number of bytes stored. + */ + size_t size() const { return fSpan.size(); } + + /** + * Returns the ptr to the data. + */ + const void* data() const { return fSpan.data(); } + + bool empty() const { return fSpan.empty(); } + + const uint8_t* bytes() const { return reinterpret_cast(this->data()); } + + SkSpan byteSpan() const { return {this->bytes(), this->size()}; } + + /** + * USE WITH CAUTION. + * Be sure other 'owners' of this object are not accessing it in aother thread. + */ + void* writable_data() { + return fSpan.data(); + } + + /** Attempt to create a deep copy of the original data, using the default allocator. + * + * If offset+length > this->size(), then this returns nullptr. + */ + sk_sp copySubset(size_t offset, size_t length) const; + + /** Attempt to return a data that is a reference to a subset of the original data, + * This will never make a deep copy of the contents, but will retain a reference + * to the original data object. + * + * If offset+length > this->size(), then this returns nullptr. + */ + sk_sp shareSubset(size_t offset, size_t length); + sk_sp shareSubset(size_t offset, size_t length) const; + + /** + * Helper to copy a range of the data into a caller-provided buffer. + * Returns the actual number of bytes copied, after clamping offset and + * length to the size of this data. If buffer is NULL, it is ignored, and + * only the computed number of bytes is returned. + */ + size_t copyRange(size_t offset, size_t length, void* buffer) const; + + /** + * Function that, if provided, will be called when the SkData goes out + * of scope, allowing for custom allocation/freeing of the data's contents. + */ + typedef void (*ReleaseProc)(const void* ptr, void* context); + + /** + * Create a new dataref by copying the specified data + */ + static sk_sp MakeWithCopy(const void* data, size_t length); + + + /** + * Create a new data with uninitialized contents. The caller should call writable_data() + * to write into the buffer, but this must be done before another ref() is made. + */ + static sk_sp MakeUninitialized(size_t length); + + /** + * Create a new data with zero-initialized contents. The caller should call writable_data() + * to write into the buffer, but this must be done before another ref() is made. + */ + static sk_sp MakeZeroInitialized(size_t length); + + /** + * Create a new dataref by copying the specified c-string + * (a null-terminated array of bytes). The returned SkData will have size() + * equal to strlen(cstr) + 1. If cstr is NULL, it will be treated the same + * as "". + */ + static sk_sp MakeWithCString(const char cstr[]); + + /** + * Create a new dataref, taking the ptr as is, and using the + * releaseproc to free it. The proc may be NULL. + */ + static sk_sp MakeWithProc(const void* ptr, size_t length, ReleaseProc proc, void* ctx); + + /** + * Call this when the data parameter is already const and will outlive the lifetime of the + * SkData. Suitable for globals. + */ + static sk_sp MakeWithoutCopy(const void* data, size_t length) { + return MakeWithProc(data, length, NoopReleaseProc, nullptr); + } + + /** + * Create a new dataref from a pointer allocated by malloc. The Data object + * takes ownership of that allocation, and will handling calling sk_free. + */ + static sk_sp MakeFromMalloc(const void* data, size_t length); + + /** + * Create a new dataref the file with the specified path. + * If the file cannot be opened, this returns NULL. + */ + static sk_sp MakeFromFileName(const char path[]); + + /** + * Create a new dataref from a stdio FILE. + * This does not take ownership of the FILE, nor close it. + * The caller is free to close the FILE at its convenience. + * The FILE must be open for reading only. + * Returns NULL on failure. + */ + static sk_sp MakeFromFILE(FILE* f); + + /** + * Create a new dataref from a file descriptor. + * This does not take ownership of the file descriptor, nor close it. + * The caller is free to close the file descriptor at its convenience. + * The file descriptor must be open for reading only. + * Returns NULL on failure. + */ + static sk_sp MakeFromFD(int fd); + + /** + * Attempt to read size bytes into a SkData. If the read succeeds, return the data, + * else return NULL. Either way the stream's cursor may have been changed as a result + * of calling read(). + */ + static sk_sp MakeFromStream(SkStream*, size_t size); + + /** + * DEPRECATED variant of src->shareSubset(offset, length) + * + * This variant checks if shaerSubset() returned null (because offset or length were out-of-range) + * and returns an empty SkData, rather than returning null. + */ + static sk_sp MakeSubset(const SkData* src, size_t offset, size_t length) { + if (sk_sp dst = const_cast(src)->shareSubset(offset, length)) { + return dst; + } + return SkData::MakeEmpty(); + } + + /** + * Returns a new empty dataref (or a reference to a shared empty dataref). + * New or shared, the caller must see that unref() is eventually called. + */ + static sk_sp MakeEmpty(); + + /** + * DEPRECATED -- use empty() + */ + bool isEmpty() const { return fSpan.empty(); } + +private: + friend class SkNVRefCnt; + ReleaseProc fReleaseProc; + void* fReleaseProcContext; + SkSpan fSpan; + + SkData(SkSpan, ReleaseProc, void* context); + explicit SkData(size_t size); // inplace new/delete + ~SkData(); + + // Ensure the unsized delete is called. + void operator delete(void* p); + + // shared internal factory + static sk_sp PrivateNewWithCopy(const void* srcOrNull, size_t length); + + static void NoopReleaseProc(const void*, void*); // {} + + using INHERITED = SkRefCnt; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkDataTable.h b/vendor/artifacts/skia/include/core/SkDataTable.h new file mode 100644 index 000000000..3aa48d5f3 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkDataTable.h @@ -0,0 +1,122 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkDataTable_DEFINED +#define SkDataTable_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAssert.h" + +#include +#include + +/** + * Like SkData, SkDataTable holds an immutable data buffer. The data buffer is + * organized into a table of entries, each with a length, so the entries are + * not required to all be the same size. + */ +class SK_API SkDataTable : public SkRefCnt { +public: + /** + * Returns true if the table is empty (i.e. has no entries). + */ + bool isEmpty() const { return 0 == fCount; } + + /** + * Return the number of entries in the table. 0 for an empty table + */ + int count() const { return fCount; } + + /** + * Return the size of the index'th entry in the table. The caller must + * ensure that index is valid for this table. + */ + size_t atSize(int index) const; + + /** + * Return a pointer to the data of the index'th entry in the table. + * The caller must ensure that index is valid for this table. + * + * @param size If non-null, this returns the byte size of this entry. This + * will be the same value that atSize(index) would return. + */ + const void* at(int index, size_t* size = nullptr) const; + + template + const T* atT(int index, size_t* size = nullptr) const { + return reinterpret_cast(this->at(index, size)); + } + + /** + * Returns the index'th entry as a c-string, and assumes that the trailing + * null byte had been copied into the table as well. + */ + const char* atStr(int index) const { + size_t size; + const char* str = this->atT(index, &size); + SkASSERT(strlen(str) + 1 == size); + return str; + } + + typedef void (*FreeProc)(void* context); + + static sk_sp MakeEmpty(); + + /** + * Return a new DataTable that contains a copy of the data stored in each + * "array". + * + * @param ptrs array of points to each element to be copied into the table. + * @param sizes array of byte-lengths for each entry in the corresponding + * ptrs[] array. + * @param count the number of array elements in ptrs[] and sizes[] to copy. + */ + static sk_sp MakeCopyArrays(const void * const * ptrs, + const size_t sizes[], int count); + + /** + * Return a new table that contains a copy of the data in array. + * + * @param array contiguous array of data for all elements to be copied. + * @param elemSize byte-length for a given element. + * @param count the number of entries to be copied out of array. The number + * of bytes that will be copied is count * elemSize. + */ + static sk_sp MakeCopyArray(const void* array, size_t elemSize, int count); + + static sk_sp MakeArrayProc(const void* array, size_t elemSize, int count, + FreeProc proc, void* context); + +private: + struct Dir { + const void* fPtr; + uintptr_t fSize; + }; + + int fCount; + size_t fElemSize; + union { + const Dir* fDir; + const char* fElems; + } fU; + + FreeProc fFreeProc; + void* fFreeProcContext; + + SkDataTable(); + SkDataTable(const void* array, size_t elemSize, int count, + FreeProc, void* context); + SkDataTable(const Dir*, int count, FreeProc, void* context); + ~SkDataTable() override; + + friend class SkDataTableBuilder; // access to Dir + + using INHERITED = SkRefCnt; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkDocument.h b/vendor/artifacts/skia/include/core/SkDocument.h new file mode 100644 index 000000000..d56c77777 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkDocument.h @@ -0,0 +1,93 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkDocument_DEFINED +#define SkDocument_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/private/base/SkAPI.h" + +class SkCanvas; +class SkWStream; +struct SkRect; + +/** SK_ScalarDefaultDPI is 72 dots per inch. */ +static constexpr SkScalar SK_ScalarDefaultRasterDPI = 72.0f; + +/** + * High-level API for creating a document-based canvas. To use.. + * + * 1. Create a document, specifying a stream to store the output. + * 2. For each "page" of content: + * a. canvas = doc->beginPage(...) + * b. draw_my_content(canvas); + * c. doc->endPage(); + * 3. Close the document with doc->close(). + */ +class SK_API SkDocument : public SkRefCnt { +public: + + /** + * Begin a new page for the document, returning the canvas that will draw + * into the page. The document owns this canvas, and it will go out of + * scope when endPage() or close() is called, or the document is deleted. + * This will call endPage() if there is a currently active page. + */ + SkCanvas* beginPage(SkScalar width, SkScalar height, const SkRect* content = nullptr); + + /** + * Call endPage() when the content for the current page has been drawn + * (into the canvas returned by beginPage()). After this call the canvas + * returned by beginPage() will be out-of-scope. + */ + void endPage(); + + /** + * Call close() when all pages have been drawn. This will close the file + * or stream holding the document's contents. After close() the document + * can no longer add new pages. Deleting the document will automatically + * call close() if need be. + */ + void close(); + + /** + * Call abort() to stop producing the document immediately. + * The stream output must be ignored, and should not be trusted. + */ + void abort(); + +protected: + explicit SkDocument(SkWStream*); + + // note: subclasses must call close() in their destructor, as the base class + // cannot do this for them. + ~SkDocument() override; + + virtual SkCanvas* onBeginPage(SkScalar width, SkScalar height) = 0; + virtual void onEndPage() = 0; + virtual void onClose(SkWStream*) = 0; + virtual void onAbort() = 0; + + // Allows subclasses to write to the stream as pages are written. + SkWStream* getStream() { return fStream; } + + enum State { + kBetweenPages_State, + kInPage_State, + kClosed_State + }; + State getState() const { return fState; } + +private: + SkWStream* fStream; + State fState; + + using INHERITED = SkRefCnt; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkDrawable.h b/vendor/artifacts/skia/include/core/SkDrawable.h new file mode 100644 index 000000000..764a82544 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkDrawable.h @@ -0,0 +1,178 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkDrawable_DEFINED +#define SkDrawable_DEFINED + +#include "include/core/SkFlattenable.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/private/base/SkAPI.h" + +#include +#include +#include + +class GrBackendDrawableInfo; +class SkCanvas; +class SkMatrix; +class SkPicture; +enum class GrBackendApi : unsigned int; +struct SkDeserialProcs; +struct SkIRect; +struct SkImageInfo; +struct SkRect; + +/** + * Base-class for objects that draw into SkCanvas. + * + * The object has a generation ID, which is guaranteed to be unique across all drawables. To + * allow for clients of the drawable that may want to cache the results, the drawable must + * change its generation ID whenever its internal state changes such that it will draw differently. + */ +class SK_API SkDrawable : public SkFlattenable { +public: + /** + * Draws into the specified content. The drawing sequence will be balanced upon return + * (i.e. the saveLevel() on the canvas will match what it was when draw() was called, + * and the current matrix and clip settings will not be changed. + */ + void draw(SkCanvas*, const SkMatrix* = nullptr); + void draw(SkCanvas*, SkScalar x, SkScalar y); + + /** + * When using the GPU backend it is possible for a drawable to execute using the underlying 3D + * API rather than the SkCanvas API. It does so by creating a GpuDrawHandler. The GPU backend + * is deferred so the handler will be given access to the 3D API at the correct point in the + * drawing stream as the GPU backend flushes. Since the drawable may mutate, each time it is + * drawn to a GPU-backed canvas a new handler is snapped, representing the drawable's state at + * the time of the snap. + * + * When the GPU backend flushes to the 3D API it will call the draw method on the + * GpuDrawHandler. At this time the drawable may add commands to the stream of GPU commands for + * the unerlying 3D API. The draw function takes a GrBackendDrawableInfo which contains + * information about the current state of 3D API which the caller must respect. See + * GrBackendDrawableInfo for more specific details on what information is sent and the + * requirements for different 3D APIs. + * + * Additionaly there may be a slight delay from when the drawable adds its commands to when + * those commands are actually submitted to the GPU. Thus the drawable or GpuDrawHandler is + * required to keep any resources that are used by its added commands alive and valid until + * those commands are submitted to the GPU. The GpuDrawHandler will be kept alive and then + * deleted once the commands are submitted to the GPU. The dtor of the GpuDrawHandler is the + * signal to the drawable that the commands have all been submitted. Different 3D APIs may have + * additional requirements for certain resources which require waiting for the GPU to finish + * all work on those resources before reusing or deleting them. In this case, the drawable can + * use the dtor call of the GpuDrawHandler to add a fence to the GPU to track when the GPU work + * has completed. + * + * Currently this is only supported for the GPU Vulkan backend. + */ + + class GpuDrawHandler { + public: + virtual ~GpuDrawHandler() {} + + virtual void draw(const GrBackendDrawableInfo&) {} + }; + + /** + * Snaps off a GpuDrawHandler to represent the state of the SkDrawable at the time the snap is + * called. This is used for executing GPU backend specific draws intermixed with normal Skia GPU + * draws. The GPU API, which will be used for the draw, as well as the full matrix, device clip + * bounds and imageInfo of the target buffer are passed in as inputs. + */ + std::unique_ptr snapGpuDrawHandler(GrBackendApi backendApi, + const SkMatrix& matrix, + const SkIRect& clipBounds, + const SkImageInfo& bufferInfo) { + return this->onSnapGpuDrawHandler(backendApi, matrix, clipBounds, bufferInfo); + } + + /** + * Returns an SkPicture with the contents of this SkDrawable. + */ + sk_sp makePictureSnapshot(); + + /** + * Return a unique value for this instance. If two calls to this return the same value, + * it is presumed that calling the draw() method will render the same thing as well. + * + * Subclasses that change their state should call notifyDrawingChanged() to ensure that + * a new value will be returned the next time it is called. + */ + uint32_t getGenerationID(); + + /** + * Return the (conservative) bounds of what the drawable will draw. If the drawable can + * change what it draws (e.g. animation or in response to some external change), then this + * must return a bounds that is always valid for all possible states. + */ + SkRect getBounds(); + + /** + * Return approximately how many bytes would be freed if this drawable is destroyed. + * The base implementation returns 0 to indicate that this is unknown. + */ + size_t approximateBytesUsed(); + + /** + * Calling this invalidates the previous generation ID, and causes a new one to be computed + * the next time getGenerationID() is called. Typically this is called by the object itself, + * in response to its internal state changing. + */ + void notifyDrawingChanged(); + + static SkFlattenable::Type GetFlattenableType() { + return kSkDrawable_Type; + } + + SkFlattenable::Type getFlattenableType() const override { + return kSkDrawable_Type; + } + + static sk_sp Deserialize(const void* data, size_t size, + const SkDeserialProcs* procs = nullptr) { + return sk_sp(static_cast( + SkFlattenable::Deserialize( + kSkDrawable_Type, data, size, procs).release())); + } + + Factory getFactory() const override { return nullptr; } + const char* getTypeName() const override { return nullptr; } + +protected: + SkDrawable(); + + virtual SkRect onGetBounds() = 0; + virtual size_t onApproximateBytesUsed(); + virtual void onDraw(SkCanvas*) = 0; + + virtual std::unique_ptr onSnapGpuDrawHandler(GrBackendApi, const SkMatrix&, + const SkIRect& /*clipBounds*/, + const SkImageInfo&) { + return nullptr; + } + + // TODO: Delete this once Android gets updated to take the clipBounds version above. + virtual std::unique_ptr onSnapGpuDrawHandler(GrBackendApi, const SkMatrix&) { + return nullptr; + } + + /** + * Default implementation calls onDraw() with a canvas that records into a picture. Subclasses + * may override if they have a more efficient way to return a picture for the current state + * of their drawable. Note: this picture must draw the same as what would be drawn from + * onDraw(). + */ + virtual sk_sp onMakePictureSnapshot(); + +private: + int32_t fGenerationID; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkExecutor.h b/vendor/artifacts/skia/include/core/SkExecutor.h new file mode 100644 index 000000000..4703b4f01 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkExecutor.h @@ -0,0 +1,59 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkExecutor_DEFINED +#define SkExecutor_DEFINED + +#include +#include +#include "include/core/SkTypes.h" + +class SK_API SkExecutor { +public: + virtual ~SkExecutor(); + + // Create a thread pool SkExecutor with a fixed thread count, by default the number of cores. + static std::unique_ptr MakeFIFOThreadPool(int threads = 0, + bool allowBorrowing = true); + static std::unique_ptr MakeLIFOThreadPool(int threads = 0, + bool allowBorrowing = true); + + // A work list is the queue or stack to which work is added and removed. The above two + // factory functions create an executor with only one list while the following two factories + // can create executors with multiple work lists. Having multiple work lists allows for + // prioritization with work being pulled from the lower indexed work lists first - with + // work list '0' being the highest priority. + static std::unique_ptr MakeMultiListFIFOThreadPool(int numWorkLists, + int threads = 0, + bool allowBorrowing = true); + static std::unique_ptr MakeMultiListLIFOThreadPool(int numWorkLists, + int threads = 0, + bool allowBorrowing = true); + + // There is always a default SkExecutor available by calling SkExecutor::GetDefault(). + static SkExecutor& GetDefault(); + static void SetDefault(SkExecutor*); // Does not take ownership. Not thread safe. + + // Add work to execute. + virtual void add(std::function fn, int /* workList */) { this->add(std::move(fn)); } + + // deprecated + virtual void add(std::function) = 0; + + // Returns the number of discarded work units + virtual int discardAllPendingWork() { return 0; } + + // If it makes sense for this executor, use this thread to execute work for a little while. + virtual void borrow() {} + +protected: + SkExecutor() = default; + SkExecutor(const SkExecutor&) = delete; + SkExecutor& operator=(const SkExecutor&) = delete; +}; + +#endif//SkExecutor_DEFINED diff --git a/vendor/artifacts/skia/include/core/SkFlattenable.h b/vendor/artifacts/skia/include/core/SkFlattenable.h new file mode 100644 index 000000000..892a5933a --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkFlattenable.h @@ -0,0 +1,115 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFlattenable_DEFINED +#define SkFlattenable_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +#include + +class SkData; +class SkReadBuffer; +class SkWriteBuffer; +struct SkDeserialProcs; +struct SkSerialProcs; + +/** \class SkFlattenable + + SkFlattenable is the base class for objects that need to be flattened + into a data stream for either transport or as part of the key to the + font cache. + */ +class SK_API SkFlattenable : public SkRefCnt { +public: + enum Type { + kSkColorFilter_Type, + kSkBlender_Type, + kSkDrawable_Type, + kSkDrawLooper_Type, // no longer supported by Skia + kSkImageFilter_Type, + kSkMaskFilter_Type, + kSkPathEffect_Type, + kSkShader_Type, + }; + + typedef sk_sp (*Factory)(SkReadBuffer&); + + SkFlattenable() {} + + /** Implement this to return a factory function pointer that can be called + to recreate your class given a buffer (previously written to by your + override of flatten(). + */ + virtual Factory getFactory() const = 0; + + /** + * Returns the name of the object's class. + */ + virtual const char* getTypeName() const = 0; + + static Factory NameToFactory(const char name[]); + static const char* FactoryToName(Factory); + + static void Register(const char name[], Factory); + + /** + * Override this if your subclass needs to record data that it will need to recreate itself + * from its CreateProc (returned by getFactory()). + * + * DEPRECATED public : will move to protected ... use serialize() instead + */ + virtual void flatten(SkWriteBuffer&) const {} + + virtual Type getFlattenableType() const = 0; + + // + // public ways to serialize / deserialize + // + sk_sp serialize(const SkSerialProcs* = nullptr) const; + size_t serialize(void* memory, size_t memory_size, + const SkSerialProcs* = nullptr) const; + static sk_sp Deserialize(Type, const void* data, size_t length, + const SkDeserialProcs* procs = nullptr); + +protected: + class PrivateInitializer { + public: + static void InitEffects(); + static void InitImageFilters(); + }; + +private: + static void RegisterFlattenablesIfNeeded(); + static void Finalize(); + + friend class SkGraphics; + + using INHERITED = SkRefCnt; +}; + +#if defined(SK_DISABLE_EFFECT_DESERIALIZATION) + #define SK_REGISTER_FLATTENABLE(type) do{}while(false) + + #define SK_FLATTENABLE_HOOKS(type) \ + static sk_sp CreateProc(SkReadBuffer&); \ + friend class SkFlattenable::PrivateInitializer; \ + Factory getFactory() const override { return nullptr; } \ + const char* getTypeName() const override { return #type; } +#else + #define SK_REGISTER_FLATTENABLE(type) \ + SkFlattenable::Register(#type, type::CreateProc) + + #define SK_FLATTENABLE_HOOKS(type) \ + static sk_sp CreateProc(SkReadBuffer&); \ + friend class SkFlattenable::PrivateInitializer; \ + Factory getFactory() const override { return type::CreateProc; } \ + const char* getTypeName() const override { return #type; } +#endif + +#endif diff --git a/vendor/artifacts/skia/include/core/SkFont.h b/vendor/artifacts/skia/include/core/SkFont.h new file mode 100644 index 000000000..742e7ca5d --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkFont.h @@ -0,0 +1,536 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFont_DEFINED +#define SkFont_DEFINED + +#include "include/core/SkPath.h" +#include "include/core/SkPoint.h" // IWYU pragma: keep (for unspanned apis) +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypeface.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkTo.h" +#include "include/private/base/SkTypeTraits.h" + +#include +#include +#include +#include + +class SkMatrix; +class SkPaint; +class SkStrikeRef; +enum class SkFontHinting; +enum class SkTextEncoding; +struct SkFontMetrics; + +namespace skcpu { class GlyphRunListPainter; } + +/** \class SkFont + SkFont controls options applied when drawing and measuring text. +*/ +class SK_API SkFont { +public: + /** Whether edge pixels draw opaque or with partial transparency. + */ + enum class Edging { + kAlias, //!< no transparent pixels on glyph edges + kAntiAlias, //!< may have transparent pixels on glyph edges + kSubpixelAntiAlias, //!< glyph positioned in pixel using transparency + }; + + /** Constructs SkFont with default values. + + @return default initialized SkFont + */ + SkFont(); + + /** Constructs SkFont with default values with SkTypeface and size. + + @param typeface font and style used to draw and measure text + @param size EM size in local coordinate units + @return initialized SkFont + */ + SkFont(sk_sp typeface, SkScalar size); + + /** Constructs SkFont with default values with SkTypeface. + + @param typeface font and style used to draw and measure text + @return initialized SkFont + */ + explicit SkFont(sk_sp typeface); + + + /** Constructs SkFont with default values with SkTypeface and size in points, + horizontal scale, and horizontal skew. Horizontal scale emulates condensed + and expanded fonts. Horizontal skew emulates oblique fonts. + + @param typeface font and style used to draw and measure text + @param size EM size in local coordinate units + @param scaleX text horizontal scale + @param skewX additional shear on x-axis relative to y-axis + @return initialized SkFont + */ + SkFont(sk_sp typeface, SkScalar size, SkScalar scaleX, SkScalar skewX); + + + /** Compares SkFont and font, and returns true if they are equivalent. + May return false if SkTypeface has identical contents but different pointers. + + @param font font to compare + @return true if SkFont pair are equivalent + */ + bool operator==(const SkFont& font) const; + + /** Compares SkFont and font, and returns true if they are not equivalent. + May return true if SkTypeface has identical contents but different pointers. + + @param font font to compare + @return true if SkFont pair are not equivalent + */ + bool operator!=(const SkFont& font) const { return !(*this == font); } + + /** If true, instructs the font manager to always hint glyphs. + Returned value is only meaningful if platform uses FreeType as the font manager. + + @return true if all glyphs are hinted + */ + bool isForceAutoHinting() const { return SkToBool(fFlags & kForceAutoHinting_PrivFlag); } + + /** Returns true if font engine may return glyphs from font bitmaps instead of from outlines. + + @return true if glyphs may be font bitmaps + */ + bool isEmbeddedBitmaps() const { return SkToBool(fFlags & kEmbeddedBitmaps_PrivFlag); } + + /** Returns true if glyphs may be drawn at sub-pixel offsets. + + @return true if glyphs may be drawn at sub-pixel offsets. + */ + bool isSubpixel() const { return SkToBool(fFlags & kSubpixel_PrivFlag); } + + /** Returns true if font and glyph metrics are requested to be linearly scalable. + + @return true if font and glyph metrics are requested to be linearly scalable. + */ + bool isLinearMetrics() const { return SkToBool(fFlags & kLinearMetrics_PrivFlag); } + + /** Returns true if bold is approximated by increasing the stroke width when creating glyph + bitmaps from outlines. + + @return bold is approximated through stroke width + */ + bool isEmbolden() const { return SkToBool(fFlags & kEmbolden_PrivFlag); } + + /** Returns true if baselines will be snapped to pixel positions when the current transformation + matrix is axis aligned. + + @return baselines may be snapped to pixels + */ + bool isBaselineSnap() const { return SkToBool(fFlags & kBaselineSnap_PrivFlag); } + + /** Sets whether to always hint glyphs. + If forceAutoHinting is set, instructs the font manager to always hint glyphs. + + Only affects platforms that use FreeType as the font manager. + + @param forceAutoHinting setting to always hint glyphs + */ + void setForceAutoHinting(bool forceAutoHinting); + + /** Requests, but does not require, to use bitmaps in fonts instead of outlines. + + @param embeddedBitmaps setting to use bitmaps in fonts + */ + void setEmbeddedBitmaps(bool embeddedBitmaps); + + /** Requests, but does not require, that glyphs respect sub-pixel positioning. + + @param subpixel setting for sub-pixel positioning + */ + void setSubpixel(bool subpixel); + + /** Requests, but does not require, linearly scalable font and glyph metrics. + + For outline fonts 'true' means font and glyph metrics should ignore hinting and rounding. + Note that some bitmap formats may not be able to scale linearly and will ignore this flag. + + @param linearMetrics setting for linearly scalable font and glyph metrics. + */ + void setLinearMetrics(bool linearMetrics); + + /** Increases stroke width when creating glyph bitmaps to approximate a bold typeface. + + @param embolden setting for bold approximation + */ + void setEmbolden(bool embolden); + + /** Requests that baselines be snapped to pixels when the current transformation matrix is axis + aligned. + + @param baselineSnap setting for baseline snapping to pixels + */ + void setBaselineSnap(bool baselineSnap); + + /** Whether edge pixels draw opaque or with partial transparency. + */ + Edging getEdging() const { return (Edging)fEdging; } + + /** Requests, but does not require, that edge pixels draw opaque or with + partial transparency. + */ + void setEdging(Edging edging); + + /** Sets level of glyph outline adjustment. + Does not check for valid values of hintingLevel. + */ + void setHinting(SkFontHinting hintingLevel); + + /** Returns level of glyph outline adjustment. + */ + SkFontHinting getHinting() const { return (SkFontHinting)fHinting; } + + /** Returns a font with the same attributes of this font, but with the specified size. + Returns nullptr if size is less than zero, infinite, or NaN. + + @param size EM size in local coordinate units + @return initialized SkFont + */ + SkFont makeWithSize(SkScalar size) const; + + /** Does not alter SkTypeface SkRefCnt. + + @return non-null SkTypeface + */ + SkTypeface* getTypeface() const { + SkASSERT(fTypeface); + return fTypeface.get(); + } + + /** Return EM size in local coordinate units. + See https://skia.org/docs/user/coordinates/#local-coordinates . + + @return EM size in local coordinate units + */ + SkScalar getSize() const { return fSize; } + + /** Returns text scale on x-axis. + Default value is 1. + + @return text horizontal scale + */ + SkScalar getScaleX() const { return fScaleX; } + + /** Returns text skew on x-axis. + Default value is zero. + + @return additional shear on x-axis relative to y-axis + */ + SkScalar getSkewX() const { return fSkewX; } + + /** Increases SkTypeface SkRefCnt by one. + + @return A non-null SkTypeface. + */ + sk_sp refTypeface() const { + SkASSERT(fTypeface); + return fTypeface; + } + + /** Sets SkTypeface to typeface, decreasing SkRefCnt of the previous SkTypeface. + Pass nullptr to clear SkTypeface and use an empty typeface (which draws nothing). + Increments tf SkRefCnt by one. + + @param tf font and style used to draw text + */ + void setTypeface(sk_sp tf); + + /** Sets the EM size in local coordinate units. + See https://skia.org/docs/user/coordinates/#local-coordinates . + Has no effect if textSize is not greater than or equal to zero. + + @param textSize EM size in local coordinate units + */ + void setSize(SkScalar textSize); + + /** Sets text scale on x-axis. + Default value is 1. + + @param scaleX text horizontal scale + */ + void setScaleX(SkScalar scaleX); + + /** Sets text skew on x-axis. + Default value is zero. + + @param skewX additional shear on x-axis relative to y-axis + */ + void setSkewX(SkScalar skewX); + + /** Converts text into glyph indices. + Returns the number of glyph indices represented by text. + SkTextEncoding specifies how text represents characters or glyphs. + glyphs may be empty, to compute the glyph count. + + Does not check text for valid character codes or valid glyph indices. + + If byteLength equals zero, returns zero. + If byteLength includes a partial character, the partial character is ignored. + + If encoding is SkTextEncoding::kUTF8 and text contains an invalid UTF-8 sequence, + zero is returned. + + When encoding is SkTextEncoding::kUTF8, SkTextEncoding::kUTF16, or + SkTextEncoding::kUTF32; then each Unicode codepoint is mapped to a + single glyph. This function uses the default character-to-glyph + mapping from the SkTypeface and maps characters not found in the + SkTypeface to zero. + + If glyphs.size() is not sufficient to store all the glyphs, no glyphs are copied. + The total glyph count is returned for subsequent buffer reallocation. + + @param text character storage encoded with SkTextEncoding + @param byteLength length of character storage in bytes + @param glyphs storage for glyph indices; may be empty + @return number of glyphs represented by text of length byteLength + */ + size_t textToGlyphs(const void* text, size_t byteLength, SkTextEncoding encoding, + SkSpan glyphs) const; + + /** Returns glyph index for Unicode character. + + If the character is not supported by the SkTypeface, returns 0. + + @param uni Unicode character + @return glyph index + */ + SkGlyphID unicharToGlyph(SkUnichar uni) const; + + void unicharsToGlyphs(SkSpan src, SkSpan dst) const; + + /** Returns number of glyphs represented by text. + + If encoding is SkTextEncoding::kUTF8, SkTextEncoding::kUTF16, or + SkTextEncoding::kUTF32; then each Unicode codepoint is mapped to a + single glyph. + + @param text character storage encoded with SkTextEncoding + @param byteLength length of character storage in bytes + @return number of glyphs represented by text of length byteLength + */ + size_t countText(const void* text, size_t byteLength, SkTextEncoding encoding) const { + return this->textToGlyphs(text, byteLength, encoding, {}); + } + + /** Returns the advance width of text. + The advance is the normal distance to move before drawing additional text. + Returns the bounding box of text if bounds is not nullptr. + + @param text character storage encoded with SkTextEncoding + @param byteLength length of character storage in bytes + @param bounds returns bounding box relative to (0, 0) if not nullptr + @return the sum of the default advance widths + */ + SkScalar measureText(const void* text, size_t byteLength, SkTextEncoding encoding, + SkRect* bounds = nullptr) const { + return this->measureText(text, byteLength, encoding, bounds, nullptr); + } + + /** Returns the advance width of text. + The advance is the normal distance to move before drawing additional text. + Returns the bounding box of text if bounds is not nullptr. The paint + stroke settings, mask filter, or path effect may modify the bounds. + + @param text character storage encoded with SkTextEncoding + @param byteLength length of character storage in bytes + @param bounds returns bounding box relative to (0, 0) if not nullptr + @param paint optional; may be nullptr + @return the sum of the default advance widths + */ + SkScalar measureText(const void* text, size_t byteLength, SkTextEncoding encoding, + SkRect* bounds, const SkPaint* paint) const; + + /** Returns an SkStrikeRef for this font's current settings. + + An SkStrikeRef caches the resolved strike (font metrics engine), avoiding the overhead + of descriptor construction, hashing, and global cache lookup on each glyph query. + This is useful when making many glyph metric calls (e.g. getWidths) with the same + font configuration. + + The returned SkStrikeRef is independent of this SkFont; subsequent changes to this + SkFont do not affect it. Create a new SkStrikeRef after changing font properties. + + @return an SkStrikeRef for the current font settings + */ + SkStrikeRef makeStrikeRef() const; + + /** Retrieves the advance and bounds for each glyph in glyphs. + widths receives min(widths.size(), glyphs.size()) values. + bounds receives min(bounds.size(), glyphs.size()) values. + + @param glyphs array of glyph indices to be measured + @param widths returns text advances for each glyph + @param bounds returns bounds for each glyph relative to (0, 0) + @param paint optional, specifies stroking, SkPathEffect and SkMaskFilter + */ + void getWidthsBounds(SkSpan glyphs, SkSpan widths, SkSpan bounds, + const SkPaint* paint) const; + + /** Retrieves the advance and bounds for each glyph in glyphs. + widths receives min(widths.size(), glyphs.size()) values. + + @param glyphs array of glyph indices to be measured + @param widths returns text advances for each glyph + */ + void getWidths(SkSpan glyphs, SkSpan widths) const { + this->getWidthsBounds(glyphs, widths, {}, nullptr); + } + SkScalar getWidth(SkGlyphID glyph) const { + SkScalar width; + this->getWidthsBounds({&glyph, 1}, {&width, 1}, {}, nullptr); + return width; + } + + /** Retrieves the bounds for each glyph in glyphs. + bounds receives min(bounds.size(), glyphs.size()) values. + If paint is not nullptr, its stroking, SkPathEffect, and SkMaskFilter fields are respected. + + @param glyphs array of glyph indices to be measured + @param bounds returns bounds for each glyph relative to (0, 0); may be nullptr + @param paint optional, specifies stroking, SkPathEffect, and SkMaskFilter + */ + void getBounds(SkSpan glyphs, SkSpan bounds, + const SkPaint* paint) const { + this->getWidthsBounds(glyphs, {}, bounds, paint); + } + SkRect getBounds(SkGlyphID glyph, const SkPaint* paint) const { + SkRect bounds; + this->getBounds({&glyph, 1}, {&bounds, 1}, paint); + return bounds; + } + + /** Retrieves the positions for each glyph, beginning at the specified origin. + pos receives min(pos.size(), glyphs.size()) values. + + @param glyphs array of glyph indices to be positioned + @param pos returns glyphs positions + @param origin location of the first glyph. Defaults to {0, 0}. + */ + void getPos(SkSpan glyphs, SkSpan pos, SkPoint origin = {0, 0}) const; + + /** Retrieves the x-positions for each glyph, beginning at the specified origin. + xpos receives min(xpos.size(), glyphs.size()) values. + + @param glyphs array of glyph indices to be positioned + @param xpos returns glyphs x-positions + @param origin x-position of the first glyph. Defaults to 0. + */ + void getXPos(SkSpan glyphs, SkSpan xpos, SkScalar origin = 0) const; + + /** Returns intervals [start, end] describing lines parallel to the advance that intersect + * with the glyphs. + * + * @param glyphs the glyphs to intersect + * @param pos the position of each glyph + * @param top the top of the line intersecting + * @param bottom the bottom of the line intersecting + @return array of pairs of x values [start, end]. May be empty. + */ + std::vector getIntercepts(SkSpan glyphs, + SkSpan pos, + SkScalar top, SkScalar bottom, + const SkPaint* = nullptr) const; + + /* + * If the specified glyph can be represented as a path, return its path. + * If it is not (e.g. it is represented with a bitmap) return {}. + * + * Note: an 'empty' glyph (e.g. what a space " " character might map to) can return + * a path, but that path may have zero contours. + */ + std::optional getPath(SkGlyphID glyphID) const; + + /** Returns path corresponding to glyph array. + + @param glyphIDs array of glyph indices + @param glyphPathProc function returning one glyph description as path + @param ctx function context + */ + void getPaths(SkSpan glyphIDs, + void (*glyphPathProc)(const SkPath* pathOrNull, const SkMatrix& mx, void* ctx), + void* ctx) const; + + /** Returns SkFontMetrics associated with SkTypeface. + The return value is the recommended spacing between lines: the sum of metrics + descent, ascent, and leading. + If metrics is not nullptr, SkFontMetrics is copied to metrics. + Results are scaled by text size but does not take into account + dimensions required by text scale, text skew, fake bold, + style stroke, and SkPathEffect. + + @param metrics storage for SkFontMetrics; may be nullptr + @return recommended spacing between lines + */ + SkScalar getMetrics(SkFontMetrics* metrics) const; + + /** Returns the recommended spacing between lines: the sum of metrics + descent, ascent, and leading. + Result is scaled by text size but does not take into account + dimensions required by stroking and SkPathEffect. + Returns the same result as getMetrics(). + + @return recommended spacing between lines + */ + SkScalar getSpacing() const { return this->getMetrics(nullptr); } + + /** Dumps fields of the font to SkDebugf. May change its output over time, so clients should + * not rely on this for anything specific. Used to aid in debugging. + */ + void dump() const; + + using sk_is_trivially_relocatable = std::true_type; + +private: + enum PrivFlags { + kForceAutoHinting_PrivFlag = 1 << 0, + kEmbeddedBitmaps_PrivFlag = 1 << 1, + kSubpixel_PrivFlag = 1 << 2, + kLinearMetrics_PrivFlag = 1 << 3, + kEmbolden_PrivFlag = 1 << 4, + kBaselineSnap_PrivFlag = 1 << 5, + }; + + static constexpr unsigned kAllFlags = kForceAutoHinting_PrivFlag + | kEmbeddedBitmaps_PrivFlag + | kSubpixel_PrivFlag + | kLinearMetrics_PrivFlag + | kEmbolden_PrivFlag + | kBaselineSnap_PrivFlag; + + sk_sp fTypeface; + SkScalar fSize; + SkScalar fScaleX; + SkScalar fSkewX; + uint8_t fFlags; + uint8_t fEdging; + uint8_t fHinting; + + static_assert(::sk_is_trivially_relocatable::value); + + SkScalar setupForAsPaths(SkPaint*); + bool hasSomeAntiAliasing() const; + + friend class SkFontPriv; + friend class skcpu::GlyphRunListPainter; + friend class SkStrikeSpec; + friend class SkRemoteGlyphCacheTest; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkFontArguments.h b/vendor/artifacts/skia/include/core/SkFontArguments.h new file mode 100644 index 000000000..1ba983d65 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkFontArguments.h @@ -0,0 +1,116 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontArguments_DEFINED +#define SkFontArguments_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkFourByteTag.h" +#include "include/core/SkTypes.h" + +#include +#include + +/** Represents a set of actual arguments for a font. */ +struct SkFontArguments { + struct VariationPosition { + struct Coordinate { + static constexpr SkFourByteTag wght = SkSetFourByteTag('w', 'g', 'h', 't'); + static constexpr SkFourByteTag wdth = SkSetFourByteTag('w', 'd', 't', 'h'); + static constexpr SkFourByteTag slnt = SkSetFourByteTag('s', 'l', 'n', 't'); + static constexpr SkFourByteTag ital = SkSetFourByteTag('i', 't', 'a', 'l'); + static constexpr SkFourByteTag opsz = SkSetFourByteTag('o', 'p', 's', 'z'); + SkFourByteTag axis; + float value; + }; + const Coordinate* coordinates; + int coordinateCount; + }; + + /** Specify a palette to use and overrides for palette entries. + * + * `overrides` is a list of pairs of palette entry index and color. + * The overriden palette entries will use the associated color. + * Override pairs with palette entry indices out of range will not be applied. + * Later override entries override earlier ones. + */ + struct Palette { + struct Override { + uint16_t index; + SkColor color; + }; + int index; + const Override* overrides; + int overrideCount; + }; + + SkFontArguments() + : fCollectionIndex(0) + , fVariationDesignPosition{nullptr, 0} + , fPalette{0, nullptr, 0} {} + + /** Specify the index of the desired font. + * + * Font formats like ttc, dfont, cff, cid, pfr, t42, t1, and fon may actually be indexed + * collections of fonts. + */ + SkFontArguments& setCollectionIndex(int collectionIndex) { + fCollectionIndex = collectionIndex; + return *this; + } + + /** Specify a position in the variation design space. + * + * Any axis not specified will use the default value. + * Any specified axis not actually present in the font will be ignored. + * + * @param position not copied. The value must remain valid for life of SkFontArguments. + */ + SkFontArguments& setVariationDesignPosition(VariationPosition position) { + fVariationDesignPosition.coordinates = position.coordinates; + fVariationDesignPosition.coordinateCount = position.coordinateCount; + return *this; + } + + int getCollectionIndex() const { + return fCollectionIndex; + } + + VariationPosition getVariationDesignPosition() const { + return fVariationDesignPosition; + } + + SkFontArguments& setPalette(Palette palette) { + fPalette.index = palette.index; + fPalette.overrides = palette.overrides; + fPalette.overrideCount = palette.overrideCount; + return *this; + } + + Palette getPalette() const { return fPalette; } + + SkFontArguments& setSyntheticBold(std::optional bold) { + fSyntheticBold = bold; + return *this; + } + std::optional getSyntheticBold() const { return fSyntheticBold; } + + SkFontArguments& setSyntheticOblique(std::optional oblique) { + fSyntheticOblique = oblique; + return *this; + } + std::optional getSyntheticOblique() const { return fSyntheticOblique; } + +private: + int fCollectionIndex; + VariationPosition fVariationDesignPosition; + Palette fPalette; + std::optional fSyntheticBold; + std::optional fSyntheticOblique; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkFontMetrics.h b/vendor/artifacts/skia/include/core/SkFontMetrics.h new file mode 100644 index 000000000..263455857 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkFontMetrics.h @@ -0,0 +1,139 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMetrics_DEFINED +#define SkFontMetrics_DEFINED + +#include "include/core/SkScalar.h" +#include "include/private/base/SkTo.h" + +/** \class SkFontMetrics + The metrics of an SkFont. + The metric values are consistent with the Skia y-down coordinate system. + */ +struct SK_API SkFontMetrics { + bool operator==(const SkFontMetrics& that) const { + return + this->fFlags == that.fFlags && + this->fTop == that.fTop && + this->fAscent == that.fAscent && + this->fDescent == that.fDescent && + this->fBottom == that.fBottom && + this->fLeading == that.fLeading && + this->fAvgCharWidth == that.fAvgCharWidth && + this->fMaxCharWidth == that.fMaxCharWidth && + this->fXMin == that.fXMin && + this->fXMax == that.fXMax && + this->fXHeight == that.fXHeight && + this->fCapHeight == that.fCapHeight && + this->fUnderlineThickness == that.fUnderlineThickness && + this->fUnderlinePosition == that.fUnderlinePosition && + this->fStrikeoutThickness == that.fStrikeoutThickness && + this->fStrikeoutPosition == that.fStrikeoutPosition; + } + + /** \enum FontMetricsFlags + FontMetricsFlags indicate when certain metrics are valid; + the underline or strikeout metrics may be valid and zero. + Fonts with embedded bitmaps may not have valid underline or strikeout metrics. + */ + enum FontMetricsFlags { + kUnderlineThicknessIsValid_Flag = 1 << 0, //!< set if fUnderlineThickness is valid + kUnderlinePositionIsValid_Flag = 1 << 1, //!< set if fUnderlinePosition is valid + kStrikeoutThicknessIsValid_Flag = 1 << 2, //!< set if fStrikeoutThickness is valid + kStrikeoutPositionIsValid_Flag = 1 << 3, //!< set if fStrikeoutPosition is valid + kBoundsInvalid_Flag = 1 << 4, //!< set if fTop, fBottom, fXMin, fXMax invalid + }; + + uint32_t fFlags; //!< FontMetricsFlags indicating which metrics are valid + SkScalar fTop; //!< greatest extent above origin of any glyph bounding box, typically negative; deprecated with variable fonts + SkScalar fAscent; //!< distance to reserve above baseline, typically negative + SkScalar fDescent; //!< distance to reserve below baseline, typically positive + SkScalar fBottom; //!< greatest extent below origin of any glyph bounding box, typically positive; deprecated with variable fonts + SkScalar fLeading; //!< distance to add between lines, typically positive or zero + SkScalar fAvgCharWidth; //!< average character width, zero if unknown + SkScalar fMaxCharWidth; //!< maximum character width, zero if unknown + SkScalar fXMin; //!< greatest extent to left of origin of any glyph bounding box, typically negative; deprecated with variable fonts + SkScalar fXMax; //!< greatest extent to right of origin of any glyph bounding box, typically positive; deprecated with variable fonts + SkScalar fXHeight; //!< height of lower-case 'x', zero if unknown, typically negative + SkScalar fCapHeight; //!< height of an upper-case letter, zero if unknown, typically negative + SkScalar fUnderlineThickness; //!< underline thickness + SkScalar fUnderlinePosition; //!< distance from baseline to top of stroke, typically positive + SkScalar fStrikeoutThickness; //!< strikeout thickness + SkScalar fStrikeoutPosition; //!< distance from baseline to bottom of stroke, typically negative + + /** Returns true if SkFontMetrics has a valid underline thickness, and sets + thickness to that value. If the underline thickness is not valid, + return false, and ignore thickness. + + @param thickness storage for underline width + @return true if font specifies underline width + */ + bool hasUnderlineThickness(SkScalar* thickness) const { + if (SkToBool(fFlags & kUnderlineThicknessIsValid_Flag)) { + *thickness = fUnderlineThickness; + return true; + } + return false; + } + + /** Returns true if SkFontMetrics has a valid underline position, and sets + position to that value. If the underline position is not valid, + return false, and ignore position. + + @param position storage for underline position + @return true if font specifies underline position + */ + bool hasUnderlinePosition(SkScalar* position) const { + if (SkToBool(fFlags & kUnderlinePositionIsValid_Flag)) { + *position = fUnderlinePosition; + return true; + } + return false; + } + + /** Returns true if SkFontMetrics has a valid strikeout thickness, and sets + thickness to that value. If the underline thickness is not valid, + return false, and ignore thickness. + + @param thickness storage for strikeout width + @return true if font specifies strikeout width + */ + bool hasStrikeoutThickness(SkScalar* thickness) const { + if (SkToBool(fFlags & kStrikeoutThicknessIsValid_Flag)) { + *thickness = fStrikeoutThickness; + return true; + } + return false; + } + + /** Returns true if SkFontMetrics has a valid strikeout position, and sets + position to that value. If the underline position is not valid, + return false, and ignore position. + + @param position storage for strikeout position + @return true if font specifies strikeout position + */ + bool hasStrikeoutPosition(SkScalar* position) const { + if (SkToBool(fFlags & kStrikeoutPositionIsValid_Flag)) { + *position = fStrikeoutPosition; + return true; + } + return false; + } + + /** Returns true if SkFontMetrics has a valid fTop, fBottom, fXMin, and fXMax. + If the bounds are not valid, return false. + + @return true if font specifies maximum glyph bounds + */ + bool hasBounds() const { + return !SkToBool(fFlags & kBoundsInvalid_Flag); + } +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkFontMgr.h b/vendor/artifacts/skia/include/core/SkFontMgr.h new file mode 100644 index 000000000..7b3222096 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkFontMgr.h @@ -0,0 +1,178 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMgr_DEFINED +#define SkFontMgr_DEFINED + +#include "include/core/SkFontArguments.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" + +#include + +class SkData; +class SkFontStyle; +class SkStreamAsset; +class SkString; +class SkTypeface; + +class SK_API SkFontStyleSet : public SkRefCnt { +public: + virtual int count() = 0; + virtual void getStyle(int index, SkFontStyle*, SkString* style) = 0; + virtual sk_sp createTypeface(int index) = 0; + virtual sk_sp matchStyle(const SkFontStyle& pattern) = 0; + + static sk_sp CreateEmpty(); + +protected: + sk_sp matchStyleCSS3(const SkFontStyle& pattern); +}; + +class SK_API SkFontMgr : public SkRefCnt { +public: + int countFamilies() const; + void getFamilyName(int index, SkString* familyName) const; + sk_sp createStyleSet(int index) const; + + /** + * The caller must call unref() on the returned object. + * Never returns NULL; will return an empty set if the name is not found. + * + * Passing nullptr as the parameter will return the default system family. + * Note that most systems don't have a default system family, so passing nullptr will often + * result in the empty set. + * + * It is possible that this will return a style set not accessible from + * createStyleSet(int) due to hidden or auto-activated fonts. + */ + sk_sp matchFamily(const char familyName[]) const; + + /** + * Find the closest matching typeface to the specified familyName and style + * and return a ref to it. The caller must call unref() on the returned + * object. Will return nullptr if no 'good' match is found. + * + * Passing |nullptr| as the parameter for |familyName| will return the + * default system font. + * + * It is possible that this will return a style set not accessible from + * createStyleSet(int) or matchFamily(const char[]) due to hidden or + * auto-activated fonts. + */ + sk_sp matchFamilyStyle(const char familyName[], const SkFontStyle&) const; + + /** + * Use the system fallback to find a typeface for the given character. + * Note that bcp47 is a combination of ISO 639, 15924, and 3166-1 codes, + * so it is fine to just pass a ISO 639 here. + * + * Will return NULL if no family can be found for the character + * in the system fallback. + * + * Passing |nullptr| as the parameter for |familyName| will return the + * default system font. + * + * bcp47[0] is the least significant fallback, bcp47[bcp47Count-1] is the + * most significant. If no specified bcp47 codes match, any font with the + * requested character will be matched. + */ + sk_sp matchFamilyStyleCharacter(const char familyName[], const SkFontStyle&, + const char* bcp47[], int bcp47Count, + SkUnichar character) const; + + struct Request { + struct CMapEntry { + SkUnichar character; + SkUnichar variation; // Zero for default variation. + }; + SkSpan cmapEntries; + + /** + * bcp47[0] is the least significant fallback, bcp47[bcp47Count-1] is the most significant. + * If no specified bcp47 codes match any font with the requested character will be matched. + */ + SkSpan bcp47; + + const char* familyName; + + SkSpan model; + SkFontStyle fontStyleFromModel() const; + static void SetModel(SkFontStyle s, SkFontArguments::VariationPosition::Coordinate(&m)[4]); + + std::optional syntheticBold; + std::optional syntheticOblique; + }; + + /** The familyName must strongly match, everything else is tie breakers. */ + sk_sp match(const Request&) const; + + /** + * The first cmapEntry must match. Then matched by bcp47, then familyName, + * then model (italic, slant, width, weight), with synthetics allowed or not. + */ + sk_sp fallback(const Request&) const; + + /** + * Create a typeface for the specified data and TTC index (pass 0 for none) + * or NULL if the data is not recognized. The caller must call unref() on + * the returned object if it is not null. + */ + sk_sp makeFromData(sk_sp, int ttcIndex = 0) const; + + /** + * Create a typeface for the specified stream and TTC index + * (pass 0 for none) or NULL if the stream is not recognized. The caller + * must call unref() on the returned object if it is not null. + */ + sk_sp makeFromStream(std::unique_ptr, int ttcIndex = 0) const; + + /* Experimental, API subject to change. */ + sk_sp makeFromStream(std::unique_ptr, const SkFontArguments&) const; + + /** + * Create a typeface for the specified fileName and TTC index + * (pass 0 for none) or NULL if the file is not found, or its contents are + * not recognized. The caller must call unref() on the returned object + * if it is not null. + */ + sk_sp makeFromFile(const char path[], int ttcIndex = 0) const; + + sk_sp legacyMakeTypeface(const char familyName[], SkFontStyle style) const; + + /* Returns an empty font manager without any typeface dependencies */ + static sk_sp RefEmpty(); + +protected: + virtual int onCountFamilies() const = 0; + virtual void onGetFamilyName(int index, SkString* familyName) const = 0; + virtual sk_sp onCreateStyleSet(int index)const = 0; + + /** May return NULL if the name is not found. */ + virtual sk_sp onMatchFamily(const char familyName[]) const = 0; + + virtual sk_sp onMatchFamilyStyle(const char familyName[], + const SkFontStyle&) const = 0; + virtual sk_sp onMatchFamilyStyleCharacter(const char familyName[], + const SkFontStyle&, + const char* bcp47[], int bcp47Count, + SkUnichar character) const = 0; + virtual sk_sp onMatch(const Request&) const; // TODO: pure virtual + virtual sk_sp onFallback(const Request&) const; // TODO: pure virtual + + virtual sk_sp onMakeFromData(sk_sp, int ttcIndex) const = 0; + virtual sk_sp onMakeFromStreamIndex(std::unique_ptr, + int ttcIndex) const = 0; + virtual sk_sp onMakeFromStreamArgs(std::unique_ptr, + const SkFontArguments&) const = 0; + virtual sk_sp onMakeFromFile(const char path[], int ttcIndex) const = 0; + + virtual sk_sp onLegacyMakeTypeface(const char familyName[], SkFontStyle) const = 0; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkFontParameters.h b/vendor/artifacts/skia/include/core/SkFontParameters.h new file mode 100644 index 000000000..cef7e150f --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkFontParameters.h @@ -0,0 +1,43 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontParameters_DEFINED +#define SkFontParameters_DEFINED + +#include "include/core/SkFourByteTag.h" + +#include + +struct SkFontParameters { + struct Variation { + // Parameters in a variation font axis. + struct Axis { + constexpr Axis() : tag(0), min(0), def(0), max(0), flags(0) {} + constexpr Axis(SkFourByteTag tag, float min, float def, float max, bool hidden) : + tag(tag), min(min), def(def), max(max), flags(hidden ? HIDDEN : 0) {} + + // Four character identifier of the font axis (weight, width, slant, italic...). + SkFourByteTag tag; + // Minimum value supported by this axis. + float min; + // Default value set by this axis. + float def; + // Maximum value supported by this axis. The maximum can equal the minimum. + float max; + // Return whether this axis is recommended to be remain hidden in user interfaces. + bool isHidden() const { return flags & HIDDEN; } + // Set this axis to be remain hidden in user interfaces. + void setHidden(bool hidden) { flags = hidden ? (flags | HIDDEN) : (flags & ~HIDDEN); } + private: + static constexpr uint16_t HIDDEN = 0x0001; + // Attributes for a font axis. + uint16_t flags; + }; + }; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkFontScanner.h b/vendor/artifacts/skia/include/core/SkFontScanner.h new file mode 100644 index 000000000..905559eb1 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkFontScanner.h @@ -0,0 +1,45 @@ +/* +* Copyright 2024 Google LLC +* +* Use of this source code is governed by a BSD-style license that can be +* found in the LICENSE file. +*/ + +#ifndef SKFONTSCANNER_H_ +#define SKFONTSCANNER_H_ + +#include "include/core/SkFontArguments.h" +#include "include/core/SkFontParameters.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkFixed.h" +#include "include/private/base/SkNoncopyable.h" +#include "include/private/base/SkTArray.h" +class SkFontStyle; +class SkStreamAsset; +class SkString; +class SkTypeface; + +class SkFontScanner : public SkNoncopyable { +public: + virtual ~SkFontScanner() = default; + using AxisDefinitions = skia_private::STArray<4, SkFontParameters::Variation::Axis, true>; + using VariationPosition = skia_private::STArray<4, SkFontArguments::VariationPosition::Coordinate, true>; + + virtual bool scanFile(SkStreamAsset* stream, int* numFaces) const = 0; + virtual bool scanFace(SkStreamAsset* stream, int faceIndex, int* numInstances) const = 0; + /* instanceIndex 0 is the default instance, 1 to numInstances are the named instances. */ + virtual bool scanInstance(SkStreamAsset* stream, + int faceIndex, + int instanceIndex, + SkString* name, + SkFontStyle* style, + bool* isFixedPitch, + AxisDefinitions* axes, + VariationPosition* position) const = 0; + virtual sk_sp MakeFromStream(std::unique_ptr stream, + const SkFontArguments& args) const = 0; + virtual SkFourByteTag getFactoryId() const = 0; +}; + +#endif // SKFONTSCANNER_H_ diff --git a/vendor/artifacts/skia/include/core/SkFontStyle.h b/vendor/artifacts/skia/include/core/SkFontStyle.h new file mode 100644 index 000000000..078bce9f7 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkFontStyle.h @@ -0,0 +1,84 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontStyle_DEFINED +#define SkFontStyle_DEFINED + +#include "include/core/SkTypes.h" +#include "include/private/base/SkTPin.h" + +#include + +class SK_API SkFontStyle { +public: + enum Weight { + kInvisible_Weight = 0, + kThin_Weight = 100, + kExtraLight_Weight = 200, + kLight_Weight = 300, + kNormal_Weight = 400, + kMedium_Weight = 500, + kSemiBold_Weight = 600, + kBold_Weight = 700, + kExtraBold_Weight = 800, + kBlack_Weight = 900, + kExtraBlack_Weight = 1000, + }; + + enum Width { + kUltraCondensed_Width = 1, + kExtraCondensed_Width = 2, + kCondensed_Width = 3, + kSemiCondensed_Width = 4, + kNormal_Width = 5, + kSemiExpanded_Width = 6, + kExpanded_Width = 7, + kExtraExpanded_Width = 8, + kUltraExpanded_Width = 9, + }; + + enum Slant : uint8_t { + kUpright_Slant, + kItalic_Slant, + kOblique_Slant, + }; + + constexpr SkFontStyle(int weight, int width, Slant slant) : fValue( + (SkTPin(weight, kInvisible_Weight, kExtraBlack_Weight)) + + (SkTPin(width, kUltraCondensed_Width, kUltraExpanded_Width) << 16) + + (SkTPin(slant, kUpright_Slant, kOblique_Slant) << 24) + ) { } + + constexpr SkFontStyle() : SkFontStyle{kNormal_Weight, kNormal_Width, kUpright_Slant} { } + + bool operator==(const SkFontStyle& rhs) const { + return fValue == rhs.fValue; + } + + int weight() const { return fValue & 0xFFFF; } + int width() const { return (fValue >> 16) & 0xFF; } + Slant slant() const { return (Slant)((fValue >> 24) & 0xFF); } + + static constexpr SkFontStyle Normal() { + return SkFontStyle(kNormal_Weight, kNormal_Width, kUpright_Slant); + } + static constexpr SkFontStyle Bold() { + return SkFontStyle(kBold_Weight, kNormal_Width, kUpright_Slant); + } + static constexpr SkFontStyle Italic() { + return SkFontStyle(kNormal_Weight, kNormal_Width, kItalic_Slant ); + } + static constexpr SkFontStyle BoldItalic() { + return SkFontStyle(kBold_Weight, kNormal_Width, kItalic_Slant ); + } + +private: + friend class SkTypefaceProxyPrototype; // To serialize fValue + int32_t fValue; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkFontTypes.h b/vendor/artifacts/skia/include/core/SkFontTypes.h new file mode 100644 index 000000000..121fcf7b3 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkFontTypes.h @@ -0,0 +1,25 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontTypes_DEFINED +#define SkFontTypes_DEFINED + +enum class SkTextEncoding { + kUTF8, //!< uses bytes to represent UTF-8 or ASCII + kUTF16, //!< uses two byte words to represent most of Unicode + kUTF32, //!< uses four byte words to represent all of Unicode + kGlyphID, //!< uses two byte words to represent glyph indices +}; + +enum class SkFontHinting { + kNone, //!< glyph outlines unchanged + kSlight, //!< minimal modification to improve constrast + kNormal, //!< glyph outlines modified to improve constrast + kFull, //!< modifies glyph outlines for maximum constrast +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkFourByteTag.h b/vendor/artifacts/skia/include/core/SkFourByteTag.h new file mode 100644 index 000000000..41c053ea0 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkFourByteTag.h @@ -0,0 +1,19 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFourByteTag_DEFINED +#define SkFourByteTag_DEFINED + +#include + +using SkFourByteTag = uint32_t; + +static inline constexpr SkFourByteTag SkSetFourByteTag(char a, char b, char c, char d) { + return (((uint32_t)a << 24) | ((uint32_t)b << 16) | ((uint32_t)c << 8) | (uint32_t)d); +} + +#endif diff --git a/vendor/artifacts/skia/include/core/SkGraphics.h b/vendor/artifacts/skia/include/core/SkGraphics.h new file mode 100644 index 000000000..ad70d21a4 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkGraphics.h @@ -0,0 +1,169 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkGraphics_DEFINED +#define SkGraphics_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include +#include +#include + +class SkData; +class SkImageGenerator; +class SkOpenTypeSVGDecoder; +class SkTraceMemoryDump; + +class SK_API SkGraphics { +public: + /** + * Call this at process initialization time if your environment does not + * permit static global initializers that execute code. + * Init() is thread-safe and idempotent. + */ + static void Init(); + + /** + * Return the max number of bytes that should be used by the font cache. + * If the cache needs to allocate more, it will purge previous entries. + * This max can be changed by calling SetFontCacheLimit(). + */ + static size_t GetFontCacheLimit(); + + /** + * Specify the max number of bytes that should be used by the font cache. + * If the cache needs to allocate more, it will purge previous entries. + * + * This function returns the previous setting, as if GetFontCacheLimit() + * had be called before the new limit was set. + */ + static size_t SetFontCacheLimit(size_t bytes); + + /** + * Return the number of bytes currently used by the font cache. + */ + static size_t GetFontCacheUsed(); + + /** + * Return the number of entries in the font cache. + * A cache "entry" is associated with each typeface + pointSize + matrix. + */ + static int GetFontCacheCountUsed(); + + /** + * Return the current limit to the number of entries in the font cache. + * A cache "entry" is associated with each typeface + pointSize + matrix. + */ + static int GetFontCacheCountLimit(); + + /** + * Set the limit to the number of entries in the font cache, and return + * the previous value. If this new value is lower than the previous, + * it will automatically try to purge entries to meet the new limit. + */ + static int SetFontCacheCountLimit(int count); + + /** + * Return the current limit to the number of entries in the typeface cache. + * A cache "entry" is associated with each typeface. + */ + static int GetTypefaceCacheCountLimit(); + + /** + * Set the limit to the number of entries in the typeface cache, and return + * the previous value. Changes to this only take effect the next time + * each cache object is modified. + */ + static int SetTypefaceCacheCountLimit(int count); + + /** + * For debugging purposes, this will attempt to purge the font cache. It + * does not change the limit, but will cause subsequent font measures and + * draws to be recreated, since they will no longer be in the cache. + */ + static void PurgeFontCache(); + + /** + * If the strike cache is above the cache limit, attempt to purge strikes + * with pinners. This should be called after clients release locks on + * pinned strikes. + */ + static void PurgePinnedFontCache(); + + /** + * This function returns the memory used for temporary images and other resources. + */ + static size_t GetResourceCacheTotalBytesUsed(); + + /** + * These functions get/set the memory usage limit for the resource cache, used for temporary + * bitmaps and other resources. Entries are purged from the cache when the memory useage + * exceeds this limit. + */ + static size_t GetResourceCacheTotalByteLimit(); + static size_t SetResourceCacheTotalByteLimit(size_t newLimit); + + /** + * For debugging purposes, this will attempt to purge the resource cache. It + * does not change the limit. + */ + static void PurgeResourceCache(); + + /** + * When the cachable entry is very lage (e.g. a large scaled bitmap), adding it to the cache + * can cause most/all of the existing entries to be purged. To avoid the, the client can set + * a limit for a single allocation. If a cacheable entry would have been cached, but its size + * exceeds this limit, then we do not attempt to cache it at all. + * + * Zero is the default value, meaning we always attempt to cache entries. + */ + static size_t GetResourceCacheSingleAllocationByteLimit(); + static size_t SetResourceCacheSingleAllocationByteLimit(size_t newLimit); + + /** + * Dumps memory usage of caches using the SkTraceMemoryDump interface. See SkTraceMemoryDump + * for usage of this method. + */ + static void DumpMemoryStatistics(SkTraceMemoryDump* dump); + + /** + * Free as much globally cached memory as possible. This will purge all private caches in Skia, + * including font and image caches. + * + * If there are caches associated with GPU context, those will not be affected by this call. + */ + static void PurgeAllCaches(); + + using ImageGeneratorFromEncodedDataFactory = + std::unique_ptr (*)(sk_sp); + + /** + * To instantiate images from encoded data, first looks at this runtime function-ptr. If it + * exists, it is called to create an SkImageGenerator from SkData. If there is no function-ptr + * or there is, but it returns NULL, then skia will call its internal default implementation. + * + * Returns the previous factory (which could be NULL). + */ + static ImageGeneratorFromEncodedDataFactory + SetImageGeneratorFromEncodedDataFactory(ImageGeneratorFromEncodedDataFactory); + + /** + * To draw OpenType SVG data, Skia will look at this runtime function pointer. If this function + * pointer is set, the SkTypeface implementations which support OpenType SVG will call this + * function to create an SkOpenTypeSVGDecoder to decode the OpenType SVG and draw it as needed. + * If this function is not set, the SkTypeface implementations will generally not support + * OpenType SVG and attempt to use other glyph representations if available. + */ + using OpenTypeSVGDecoderFactory = + std::unique_ptr (*)(const uint8_t* svg, size_t length); + static OpenTypeSVGDecoderFactory SetOpenTypeSVGDecoderFactory(OpenTypeSVGDecoderFactory); + static OpenTypeSVGDecoderFactory GetOpenTypeSVGDecoderFactory(); +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkImage.h b/vendor/artifacts/skia/include/core/SkImage.h new file mode 100644 index 000000000..3e99204db --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkImage.h @@ -0,0 +1,918 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImage_DEFINED +#define SkImage_DEFINED + +#include "include/core/SkAlphaType.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/private/base/SkAPI.h" + +#include +#include +#include +#include + +class GrDirectContext; +class SkBitmap; +class SkColorSpace; +class SkData; +class SkImage; +class SkImageFilter; +class SkImageGenerator; +class SkMatrix; +class SkMipmap; +class SkPaint; +class SkPicture; +class SkPixmap; +class SkRecorder; +class SkShader; +class SkSurfaceProps; +enum SkColorType : int; +enum class SkTextureCompressionType; +enum class SkTileMode; + +struct SkIPoint; +struct SkSamplingOptions; + +namespace SkImages { + +/** Caller data passed to RasterReleaseProc; may be nullptr. */ +using ReleaseContext = void*; +/** Function called when SkImage no longer shares pixels. ReleaseContext is + provided by caller when SkImage is created, and may be nullptr. +*/ +using RasterReleaseProc = void(const void* pixels, ReleaseContext); + +/** Creates a CPU-backed SkImage from bitmap, sharing or copying bitmap pixels. If the bitmap + is marked immutable, and its pixel memory is shareable, it may be shared + instead of copied. + + SkImage is returned if bitmap is valid. Valid SkBitmap parameters include: + dimensions are greater than zero; + each dimension fits in 29 bits; + SkColorType and SkAlphaType are valid, and SkColorType is not kUnknown_SkColorType; + row bytes are large enough to hold one row of pixels; + pixel address is not nullptr. + + @param bitmap SkImageInfo, row bytes, and pixels + @return created SkImage, or nullptr +*/ +SK_API sk_sp RasterFromBitmap(const SkBitmap& bitmap); + +/** Creates a CPU-backed SkImage from compressed data. + + This method will decompress the compressed data and create an image wrapping + it. Any mipmap levels present in the compressed data are discarded. + + @param data compressed data to store in SkImage + @param width width of full SkImage + @param height height of full SkImage + @param type type of compression used + @return created SkImage, or nullptr +*/ +SK_API sk_sp RasterFromCompressedTextureData(sk_sp data, + int width, + int height, + SkTextureCompressionType type); + +/** + * Return a SkImage using the encoded data, but attempts to defer decoding until the + * image is actually used/drawn. This deferral allows the system to cache the result, either on the + * CPU or on the GPU, depending on where the image is drawn. If memory is low, the cache may + * be purged, causing the next draw of the image to have to re-decode. + * + * If alphaType is nullopt, the image's alpha type will be chosen automatically based on the + * image format. Transparent images will default to kPremul_SkAlphaType. If alphaType contains + * kPremul_SkAlphaType or kUnpremul_SkAlphaType, that alpha type will be used. Forcing opaque + * (passing kOpaque_SkAlphaType) is not allowed, and will return nullptr. + * + * If the encoded format is not supported, nullptr is returned. + * + * If possible, clients should use SkCodecs::DeferredImage instead. + * + * @param encoded the encoded data + * @return created SkImage, or nullptr + + example: https://fiddle.skia.org/c/@Image_DeferredFromEncodedData +*/ +SK_API sk_sp DeferredFromEncodedData(sk_sp encoded, + std::optional alphaType = std::nullopt); + +/** Creates SkImage from data returned by imageGenerator. The image data will not be created + (on either the CPU or GPU) until the image is actually drawn. + Generated data is owned by SkImage and may not be shared or accessed. + + SkImage is returned if generator data is valid. Valid data parameters vary by type of data + and platform. + + imageGenerator may wrap SkPicture data, codec data, or custom data. + + @param imageGenerator stock or custom routines to retrieve SkImage + @return created SkImage, or nullptr +*/ +SK_API sk_sp DeferredFromGenerator(std::unique_ptr imageGenerator); + +enum class BitDepth { + kU8, //!< uses 8-bit unsigned int per color component + kF16, //!< uses 16-bit float per color component +}; + +/** Creates SkImage from picture. Returned SkImage width and height are set by dimensions. + SkImage draws picture with matrix and paint, set to bitDepth and colorSpace. + + The Picture data is not turned into an image (CPU or GPU) until it is drawn. + + If matrix is nullptr, draws with identity SkMatrix. If paint is nullptr, draws + with default SkPaint. colorSpace may be nullptr. + + @param picture stream of drawing commands + @param dimensions width and height + @param matrix SkMatrix to rotate, scale, translate, and so on; may be nullptr + @param paint SkPaint to apply transparency, filtering, and so on; may be nullptr + @param bitDepth 8-bit integer or 16-bit float: per component + @param colorSpace range of colors; may be nullptr + @param props props to use when rasterizing the picture + @return created SkImage, or nullptr +*/ +SK_API sk_sp DeferredFromPicture(sk_sp picture, + const SkISize& dimensions, + const SkMatrix* matrix, + const SkPaint* paint, + BitDepth bitDepth, + sk_sp colorSpace, + SkSurfaceProps props); +SK_API sk_sp DeferredFromPicture(sk_sp picture, + const SkISize& dimensions, + const SkMatrix* matrix, + const SkPaint* paint, + BitDepth bitDepth, + sk_sp colorSpace); + +/** Creates a CPU-backed SkImage from pixmap, copying the pixel data. + As a result, pixmap pixels may be modified or deleted without affecting SkImage. + + SkImage is returned if SkPixmap is valid. Valid SkPixmap parameters include: + dimensions are greater than zero; + each dimension fits in 29 bits; + SkColorType and SkAlphaType are valid, and SkColorType is not kUnknown_SkColorType; + row bytes are large enough to hold one row of pixels; + pixel address is not nullptr. + + @param pixmap SkImageInfo, pixel address, and row bytes + @return copy of SkPixmap pixels, or nullptr + + example: https://fiddle.skia.org/c/@Image_RasterFromPixmapCopy +*/ +SK_API sk_sp RasterFromPixmapCopy(const SkPixmap& pixmap); + +/** Creates CPU-backed SkImage from pixmap, sharing SkPixmap pixels. Pixels must remain valid and + unchanged until rasterReleaseProc is called. rasterReleaseProc is passed + releaseContext when SkImage is deleted or no longer refers to pixmap pixels. + + Pass nullptr for rasterReleaseProc to share SkPixmap without requiring a callback + when SkImage is released. Pass nullptr for releaseContext if rasterReleaseProc + does not require state. + + SkImage is returned if pixmap is valid. Valid SkPixmap parameters include: + dimensions are greater than zero; + each dimension fits in 29 bits; + SkColorType and SkAlphaType are valid, and SkColorType is not kUnknown_SkColorType; + row bytes are large enough to hold one row of pixels; + pixel address is not nullptr. + + @param pixmap SkImageInfo, pixel address, and row bytes + @param rasterReleaseProc function called when pixels can be released; or nullptr + @param releaseContext state passed to rasterReleaseProc; or nullptr + @return SkImage sharing pixmap +*/ +SK_API sk_sp RasterFromPixmap(const SkPixmap& pixmap, + RasterReleaseProc rasterReleaseProc, + ReleaseContext releaseContext); + +/** Creates CPU-backed SkImage from pixel data described by info. + The pixels data will *not* be copied. + + SkImage is returned if SkImageInfo is valid. Valid SkImageInfo parameters include: + dimensions are greater than zero; + each dimension fits in 29 bits; + SkColorType and SkAlphaType are valid, and SkColorType is not kUnknown_SkColorType; + rowBytes are large enough to hold one row of pixels; + pixels is not nullptr, and contains enough data for SkImage. + + @param info contains width, height, SkAlphaType, SkColorType, SkColorSpace + @param pixels address or pixel storage + @param rowBytes size of pixel row or larger + @return SkImage sharing pixels, or nullptr +*/ +SK_API sk_sp RasterFromData(const SkImageInfo& info, + sk_sp pixels, + size_t rowBytes); + +/** Creates a filtered SkImage on the CPU. filter processes the src image, potentially changing + the color, position, and size. subset is the bounds of src that are processed + by filter. clipBounds is the expected bounds of the filtered SkImage. outSubset + is required storage for the actual bounds of the filtered SkImage. offset is + required storage for translation of returned SkImage. + + Returns nullptr a filtered result could not be created. If nullptr is returned, outSubset + and offset are undefined. + + Useful for animation of SkImageFilter that varies size from frame to frame. + outSubset describes the valid bounds of returned image. offset translates the returned SkImage + to keep subsequent animation frames aligned with respect to each other. + + @param src the image to be filtered + @param filter the image filter to be applied + @param subset bounds of SkImage processed by filter + @param clipBounds expected bounds of filtered SkImage + @param outSubset storage for returned SkImage bounds + @param offset storage for returned SkImage translation + @return filtered SkImage, or nullptr +*/ +SK_API sk_sp MakeWithFilter(sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset); + +} // namespace SkImages + +/** \class SkImage + SkImage describes a two dimensional array of pixels to draw. The pixels may be + decoded in a raster bitmap, encoded in a SkPicture or compressed data stream, + or located in GPU memory as a GPU texture. + + SkImage cannot be modified after it is created. SkImage may allocate additional + storage as needed; for instance, an encoded SkImage may decode when drawn. + + SkImage width and height are greater than zero. Creating an SkImage with zero width + or height returns SkImage equal to nullptr. + + SkImage may be created from SkBitmap, SkPixmap, SkSurface, SkPicture, encoded streams, + GPU texture, YUV_ColorSpace data, or hardware buffer. Encoded streams supported + include BMP, GIF, HEIF, ICO, JPEG, PNG, WBMP, WebP. Supported encoding details + vary with platform. + + See SkImages namespace for the static factory methods to make SkImages. + + Clients should *not* subclass SkImage as there is a lot of internal machinery that is + not publicly accessible. +*/ +class SK_API SkImage : public SkRefCnt { +public: + /** Returns a SkImageInfo describing the width, height, color type, alpha type, and color space + of the SkImage. + + @return image info of SkImage. + */ + const SkImageInfo& imageInfo() const { return fInfo; } + + /** Returns pixel count in each row. + + @return pixel width in SkImage + */ + int width() const { return fInfo.width(); } + + /** Returns pixel row count. + + @return pixel height in SkImage + */ + int height() const { return fInfo.height(); } + + /** Returns SkISize { width(), height() }. + + @return integral size of width() and height() + */ + SkISize dimensions() const { return SkISize::Make(fInfo.width(), fInfo.height()); } + + /** Returns SkIRect { 0, 0, width(), height() }. + + @return integral rectangle from origin to width() and height() + */ + SkIRect bounds() const { return SkIRect::MakeWH(fInfo.width(), fInfo.height()); } + + /** Returns value unique to image. SkImage contents cannot change after SkImage is + created. Any operation to create a new SkImage will receive generate a new + unique number. + + @return unique identifier + */ + uint32_t uniqueID() const { return fUniqueID; } + + /** Returns SkAlphaType. + + SkAlphaType returned was a parameter to an SkImage constructor, + or was parsed from encoded data. + + @return SkAlphaType in SkImage + + example: https://fiddle.skia.org/c/@Image_alphaType + */ + SkAlphaType alphaType() const; + + /** Returns SkColorType if known; otherwise, returns kUnknown_SkColorType. + + @return SkColorType of SkImage + + example: https://fiddle.skia.org/c/@Image_colorType + */ + SkColorType colorType() const; + + /** Returns SkColorSpace, the range of colors, associated with SkImage. The + reference count of SkColorSpace is unchanged. The returned SkColorSpace is + immutable. + + SkColorSpace returned was passed to an SkImage constructor, + or was parsed from encoded data. SkColorSpace returned may be ignored when SkImage + is drawn, depending on the capabilities of the SkSurface receiving the drawing. + + @return SkColorSpace in SkImage, or nullptr + + example: https://fiddle.skia.org/c/@Image_colorSpace + */ + SkColorSpace* colorSpace() const; + + /** Returns a smart pointer to SkColorSpace, the range of colors, associated with + SkImage. The smart pointer tracks the number of objects sharing this + SkColorSpace reference so the memory is released when the owners destruct. + + The returned SkColorSpace is immutable. + + SkColorSpace returned was passed to an SkImage constructor, + or was parsed from encoded data. SkColorSpace returned may be ignored when SkImage + is drawn, depending on the capabilities of the SkSurface receiving the drawing. + + @return SkColorSpace in SkImage, or nullptr, wrapped in a smart pointer + + example: https://fiddle.skia.org/c/@Image_refColorSpace + */ + sk_sp refColorSpace() const; + + /** Returns true if SkImage pixels represent transparency only. If true, each pixel + is packed in 8 bits as defined by kAlpha_8_SkColorType. + + @return true if pixels represent a transparency mask + + example: https://fiddle.skia.org/c/@Image_isAlphaOnly + */ + bool isAlphaOnly() const; + + /** Returns true if pixels ignore their alpha value and are treated as fully opaque. + + @return true if SkAlphaType is kOpaque_SkAlphaType + */ + bool isOpaque() const { return SkAlphaTypeIsOpaque(this->alphaType()); } + + /** + * Make a shader with the specified tiling and mipmap sampling. + */ + sk_sp makeShader(SkTileMode tmx, SkTileMode tmy, const SkSamplingOptions&, + const SkMatrix* localMatrix = nullptr) const; + sk_sp makeShader(SkTileMode tmx, SkTileMode tmy, const SkSamplingOptions& sampling, + const SkMatrix& lm) const; + /** Defaults to clamp in both X and Y. */ + sk_sp makeShader(const SkSamplingOptions& sampling, const SkMatrix& lm) const; + sk_sp makeShader(const SkSamplingOptions& sampling, + const SkMatrix* lm = nullptr) const; + + /** + * makeRawShader functions like makeShader, but for images that contain non-color data. + * This includes images encoding things like normals, material properties (eg, roughness), + * heightmaps, or any other purely mathematical data that happens to be stored in an image. + * These types of images are useful with some programmable shaders (see: SkRuntimeEffect). + * + * Raw image shaders work like regular image shaders (including filtering and tiling), with + * a few major differences: + * - No color space transformation is ever applied (the color space of the image is ignored). + * - Images with an alpha type of kUnpremul are *not* automatically premultiplied. + * - Bicubic filtering is not supported. If SkSamplingOptions::useCubic is true, these + * factories will return nullptr. + */ + sk_sp makeRawShader(SkTileMode tmx, SkTileMode tmy, const SkSamplingOptions&, + const SkMatrix* localMatrix = nullptr) const; + sk_sp makeRawShader(SkTileMode tmx, SkTileMode tmy, const SkSamplingOptions& sampling, + const SkMatrix& lm) const; + /** Defaults to clamp in both X and Y. */ + sk_sp makeRawShader(const SkSamplingOptions& sampling, const SkMatrix& lm) const; + sk_sp makeRawShader(const SkSamplingOptions& sampling, + const SkMatrix* lm = nullptr) const; + + /** Copies SkImage pixel address, row bytes, and SkImageInfo to pixmap, if address + is available, and returns true. If pixel address is not available, return + false and leave pixmap unchanged. + + @param pixmap storage for pixel state if pixels are readable; otherwise, ignored + @return true if SkImage has direct access to pixels + + example: https://fiddle.skia.org/c/@Image_peekPixels + */ + bool peekPixels(SkPixmap* pixmap) const; + + /** Returns true if the contents of SkImage was created on or uploaded to GPU memory, + and is available as a GPU texture. + + @return true if SkImage is a GPU texture + + example: https://fiddle.skia.org/c/@Image_isTextureBacked + */ + virtual bool isTextureBacked() const = 0; + + /** Returns an approximation of the amount of texture memory used by the image. Returns + zero if the image is not texture backed or if the texture has an external format. + */ + virtual size_t textureSize() const = 0; + + /** Returns true if SkImage can be drawn on either raster surface or GPU surface. + If recorder is nullptr, tests if SkImage draws on raster surface; + otherwise, tests if SkImage draws on the associated GPU surface. + + SkImage backed by GPU texture may become invalid if associated context is + invalid. lazy image may be invalid and may not draw to raster surface or + GPU surface or both. + + @param context GPU context + @return true if SkImage can be drawn + + example: https://fiddle.skia.org/c/@Image_isValid + */ + virtual bool isValid(SkRecorder*) const = 0; + + /** \enum SkImage::CachingHint + CachingHint selects whether Skia may internally cache SkBitmap generated by + decoding SkImage, or by copying SkImage from GPU to CPU. The default behavior + allows caching SkBitmap. + + Choose kDisallow_CachingHint if SkImage pixels are to be used only once, or + if SkImage pixels reside in a cache outside of Skia, or to reduce memory pressure. + + Choosing kAllow_CachingHint does not ensure that pixels will be cached. + SkImage pixels may not be cached if memory requirements are too large or + pixels are not accessible. + */ + enum CachingHint { + kAllow_CachingHint, //!< allows internally caching decoded and copied pixels + kDisallow_CachingHint, //!< disallows internally caching decoded and copied pixels + }; + + /** Copies SkRect of pixels from SkImage to dstPixels. Copy starts at offset (srcX, srcY), + and does not exceed SkImage (width(), height()). + + Graphite has deprecated this API in favor of the equivalent asynchronous API on + skgpu::graphite::Context (with an optional explicit synchonization). + + dstInfo specifies width, height, SkColorType, SkAlphaType, and SkColorSpace of + destination. dstRowBytes specifies the gap from one destination row to the next. + Returns true if pixels are copied. Returns false if: + - dstInfo.addr() equals nullptr + - dstRowBytes is less than dstInfo.minRowBytes() + - SkPixelRef is nullptr + + Pixels are copied only if pixel conversion is possible. If SkImage SkColorType is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dstInfo.colorType() must match. + If SkImage SkColorType is kGray_8_SkColorType, dstInfo.colorSpace() must match. + If SkImage SkAlphaType is kOpaque_SkAlphaType, dstInfo.alphaType() must + match. If SkImage SkColorSpace is nullptr, dstInfo.colorSpace() must match. Returns + false if pixel conversion is not possible. + + srcX and srcY may be negative to copy only top or left of source. Returns + false if width() or height() is zero or negative. + Returns false if abs(srcX) >= Image width(), or if abs(srcY) >= Image height(). + + If cachingHint is kAllow_CachingHint, pixels may be retained locally. + If cachingHint is kDisallow_CachingHint, pixels are not added to the local cache. + + @param context the GrDirectContext in play, if it exists + @param dstInfo destination width, height, SkColorType, SkAlphaType, SkColorSpace + @param dstPixels destination pixel storage + @param dstRowBytes destination row length + @param srcX column index whose absolute value is less than width() + @param srcY row index whose absolute value is less than height() + @param cachingHint whether the pixels should be cached locally + @return true if pixels are copied to dstPixels + */ + bool readPixels(GrDirectContext* context, + const SkImageInfo& dstInfo, + void* dstPixels, + size_t dstRowBytes, + int srcX, int srcY, + CachingHint cachingHint = kAllow_CachingHint) const; + + /** Copies a SkRect of pixels from SkImage to dst. Copy starts at (srcX, srcY), and + does not exceed SkImage (width(), height()). + + Graphite has deprecated this API in favor of the equivalent asynchronous API on + skgpu::graphite::Context (with an optional explicit synchonization). + + dst specifies width, height, SkColorType, SkAlphaType, SkColorSpace, pixel storage, + and row bytes of destination. dst.rowBytes() specifics the gap from one destination + row to the next. Returns true if pixels are copied. Returns false if: + - dst pixel storage equals nullptr + - dst.rowBytes is less than SkImageInfo::minRowBytes + - SkPixelRef is nullptr + + Pixels are copied only if pixel conversion is possible. If SkImage SkColorType is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dst.colorType() must match. + If SkImage SkColorType is kGray_8_SkColorType, dst.colorSpace() must match. + If SkImage SkAlphaType is kOpaque_SkAlphaType, dst.alphaType() must + match. If SkImage SkColorSpace is nullptr, dst.colorSpace() must match. Returns + false if pixel conversion is not possible. + + srcX and srcY may be negative to copy only top or left of source. Returns + false if width() or height() is zero or negative. + Returns false if abs(srcX) >= Image width(), or if abs(srcY) >= Image height(). + + If cachingHint is kAllow_CachingHint, pixels may be retained locally. + If cachingHint is kDisallow_CachingHint, pixels are not added to the local cache. + + @param context the GrDirectContext in play, if it exists + @param dst destination SkPixmap: SkImageInfo, pixels, row bytes + @param srcX column index whose absolute value is less than width() + @param srcY row index whose absolute value is less than height() + @param cachingHint whether the pixels should be cached locallyZ + @return true if pixels are copied to dst + */ + bool readPixels(GrDirectContext* context, + const SkPixmap& dst, + int srcX, + int srcY, + CachingHint cachingHint = kAllow_CachingHint) const; + +#ifndef SK_IMAGE_READ_PIXELS_DISABLE_LEGACY_API + /** Deprecated. Use the variants that accept a GrDirectContext. */ + bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, + int srcX, int srcY, CachingHint cachingHint = kAllow_CachingHint) const; + bool readPixels(const SkPixmap& dst, int srcX, int srcY, + CachingHint cachingHint = kAllow_CachingHint) const; +#endif + + /** The result from asyncRescaleAndReadPixels() or asyncRescaleAndReadPixelsYUV420(). */ + class AsyncReadResult { + public: + AsyncReadResult(const AsyncReadResult&) = delete; + AsyncReadResult(AsyncReadResult&&) = delete; + AsyncReadResult& operator=(const AsyncReadResult&) = delete; + AsyncReadResult& operator=(AsyncReadResult&&) = delete; + + virtual ~AsyncReadResult() = default; + /** Returns how many planes of data are in the result. e.g. 3 for YUV data. */ + virtual int count() const = 0; + /** Returns the raw pixel data for a given plane. + * + * It will be organized as per the dst SkImageInfo passed in to the async read call. + * + * Clients may wish to create an SkPixmap with this data using the dst SkImageInfo + * and rowBytes(i). + */ + virtual const void* data(int i) const = 0; + /** Returns how many bytes correspond to a single row of image data */ + virtual size_t rowBytes(int i) const = 0; + + protected: + AsyncReadResult() = default; + }; + + /** Client-provided context that is passed to client-provided ReadPixelsContext. */ + using ReadPixelsContext = void*; + + /** Client-provided callback to asyncRescaleAndReadPixels() or + asyncRescaleAndReadPixelsYUV420() that is called when read result is ready or on failure. + */ + using ReadPixelsCallback = void(ReadPixelsContext, std::unique_ptr); + + enum class RescaleGamma : bool { kSrc, kLinear }; + + enum class RescaleMode { + kNearest, + kLinear, + kRepeatedLinear, + kRepeatedCubic, + }; + + /** Makes image pixel data available to caller, possibly asynchronously. It can also rescale + the image pixels. + + Currently asynchronous reads are only supported in the Ganesh GPU backend and only when the + underlying 3D API supports transfer buffers and CPU/GPU synchronization primitives. In all + other cases this operates synchronously. + + For the Graphite backend this API has been deprecated in favor of the equivalent API + on skgpu::graphite::Context. + + Data is read from the source sub-rectangle, is optionally converted to a linear gamma, is + rescaled to the size indicated by 'info', is then converted to the color space, color type, + and alpha type of 'info'. A 'srcRect' that is not contained by the bounds of the image + causes failure. + + When the pixel data is ready the caller's ReadPixelsCallback is called with a + AsyncReadResult containing pixel data in the requested color type, alpha type, and color + space. The AsyncReadResult will have count() == 1. Upon failure the callback is called with + nullptr for AsyncReadResult. For a GPU image this flushes work but a submit must occur to + guarantee a finite time before the callback is called. + + The data is valid for the lifetime of AsyncReadResult with the exception that if the SkImage + is GPU-backed the data is immediately invalidated if the context is abandoned or + destroyed. + + @param info info of the requested pixels + @param srcRect subrectangle of image to read + @param rescaleGamma controls whether rescaling is done in the image's gamma or whether + the source data is transformed to a linear gamma before rescaling. + @param rescaleMode controls the technique (and cost) of the rescaling + @param callback function to call with result of the read + @param context passed to callback + */ + void asyncRescaleAndReadPixels(const SkImageInfo& info, + const SkIRect& srcRect, + RescaleGamma rescaleGamma, + RescaleMode rescaleMode, + ReadPixelsCallback callback, + ReadPixelsContext context) const; + + /** + Similar to asyncRescaleAndReadPixels but performs an additional conversion to YUV. The + RGB->YUV conversion is controlled by 'yuvColorSpace'. The YUV data is returned as three + planes ordered y, u, v. The u and v planes are half the width and height of the resized + rectangle. The y, u, and v values are single bytes. Currently this fails if 'dstSize' + width and height are not even. A 'srcRect' that is not contained by the bounds of the + image causes failure. + + When the pixel data is ready the caller's ReadPixelsCallback is called with a + AsyncReadResult containing the planar data. The AsyncReadResult will have count() == 3. + Upon failure the callback is called with nullptr for AsyncReadResult. For a GPU image this + flushes work but a submit must occur to guarantee a finite time before the callback is + called. + + The data is valid for the lifetime of AsyncReadResult with the exception that if the SkImage + is GPU-backed the data is immediately invalidated if the context is abandoned or + destroyed. + + @param yuvColorSpace The transformation from RGB to YUV. Applied to the resized image + after it is converted to dstColorSpace. + @param dstColorSpace The color space to convert the resized image to, after rescaling. + @param srcRect The portion of the image to rescale and convert to YUV planes. + @param dstSize The size to rescale srcRect to + @param rescaleGamma controls whether rescaling is done in the image's gamma or whether + the source data is transformed to a linear gamma before rescaling. + @param rescaleMode controls the technique (and cost) of the rescaling + @param callback function to call with the planar read result + @param context passed to callback + */ + void asyncRescaleAndReadPixelsYUV420(SkYUVColorSpace yuvColorSpace, + sk_sp dstColorSpace, + const SkIRect& srcRect, + const SkISize& dstSize, + RescaleGamma rescaleGamma, + RescaleMode rescaleMode, + ReadPixelsCallback callback, + ReadPixelsContext context) const; + + /** + * Identical to asyncRescaleAndReadPixelsYUV420 but a fourth plane is returned in the + * AsyncReadResult passed to 'callback'. The fourth plane contains the alpha chanel at the + * same full resolution as the Y plane. + */ + void asyncRescaleAndReadPixelsYUVA420(SkYUVColorSpace yuvColorSpace, + sk_sp dstColorSpace, + const SkIRect& srcRect, + const SkISize& dstSize, + RescaleGamma rescaleGamma, + RescaleMode rescaleMode, + ReadPixelsCallback callback, + ReadPixelsContext context) const; + + /** Copies SkImage to dst, scaling pixels to fit dst.width() and dst.height(), and + converting pixels to match dst.colorType() and dst.alphaType(). Returns true if + pixels are copied. Returns false if dst.addr() is nullptr, or dst.rowBytes() is + less than dst SkImageInfo::minRowBytes. + + Pixels are copied only if pixel conversion is possible. If SkImage SkColorType is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dst.colorType() must match. + If SkImage SkColorType is kGray_8_SkColorType, dst.colorSpace() must match. + If SkImage SkAlphaType is kOpaque_SkAlphaType, dst.alphaType() must + match. If SkImage SkColorSpace is nullptr, dst.colorSpace() must match. Returns + false if pixel conversion is not possible. + + If cachingHint is kAllow_CachingHint, pixels may be retained locally. + If cachingHint is kDisallow_CachingHint, pixels are not added to the local cache. + + @param dst destination SkPixmap: SkImageInfo, pixels, row bytes + @return true if pixels are scaled to fit dst + */ + bool scalePixels(const SkPixmap& dst, const SkSamplingOptions&, + CachingHint cachingHint = kAllow_CachingHint) const; + + /** + * Create a new image by copying this image and scaling to fit the ImageInfo's dimensions + * and converting the pixels into the ImageInfo's ColorInfo. + * This is done retaining the domain (backend) of the image (e.g. gpu, raster) + * + * The Recorder parameter is required if the original image was created on a graphite Recorder, + * but must be nullptr if it was create in some other way (e.g. GrContext, raster, deferred). + * + * return nullptr if the requested ColorInfo is not supported, its dimesions are out of range, + * or if the recorder is null on a graphite Image. + */ + sk_sp makeScaled(SkRecorder*, const SkImageInfo&, const SkSamplingOptions&) const; + sk_sp makeScaled(SkRecorder*, + const SkImageInfo&, + const SkSamplingOptions&, + const SkSurfaceProps&) const; + + sk_sp makeScaled(const SkImageInfo& info, const SkSamplingOptions& sampling) const; + + /** Returns encoded SkImage pixels as SkData, if SkImage was created from supported + encoded stream format. Platform support for formats vary and may require building + with one or more of: SK_ENCODE_JPEG, SK_ENCODE_PNG, SK_ENCODE_WEBP. + + Returns nullptr if SkImage contents are not encoded. + + @return encoded SkImage, or nullptr + + example: https://fiddle.skia.org/c/@Image_refEncodedData + */ + sk_sp refEncodedData() const; + + struct RequiredProperties { + bool fMipmapped = false; + + bool operator==(const RequiredProperties& other) const { + return fMipmapped == other.fMipmapped; + } + + bool operator!=(const RequiredProperties& other) const { return !(*this == other); } + + bool operator<(const RequiredProperties& other) const { + return fMipmapped < other.fMipmapped; + } + }; + + /** Returns subset of this image. + + Returns nullptr if any of the following are true: + - Subset is empty + - Subset is not contained inside the image's bounds + - Pixels in the image could not be read or copied + - This image is texture-backed and the provided context is null or does not match + the source image's context. + + If the source image was texture-backed, the resulting image will be texture-backed also. + Otherwise, the returned image will be raster-backed. + + @param recorder the recorder of the source image (nullptr is ok if the + source image was texture-backed). + @param subset bounds of returned SkImage + @param RequiredProperties properties the returned SkImage must possess (e.g. mipmaps) + @return the subsetted image, or nullptr + */ + virtual sk_sp makeSubset(SkRecorder*, + const SkIRect& subset, + RequiredProperties) const = 0; + + /** + * Returns true if the image has mipmap levels. + */ + bool hasMipmaps() const; + + /** + * Returns true if the image holds protected content. + */ + bool isProtected() const; + + /** + * Returns an image with the same "base" pixels as the this image, but with mipmap levels + * automatically generated and attached. + */ + sk_sp withDefaultMipmaps() const; + + /** Returns raster image or lazy image. Copies SkImage backed by GPU texture into + CPU memory if needed. Returns original SkImage if decoded in raster bitmap, + or if encoded in a stream. + + Returns nullptr if backed by GPU texture and copy fails. + + @return raster image, lazy image, or nullptr + + example: https://fiddle.skia.org/c/@Image_makeNonTextureImage + */ + sk_sp makeNonTextureImage(GrDirectContext* = nullptr) const; + + /** Returns raster image. Copies SkImage backed by GPU texture into CPU memory, + or decodes SkImage from lazy image. Returns original SkImage if decoded in + raster bitmap. + + Returns nullptr if copy, decode, or pixel read fails. + + If cachingHint is kAllow_CachingHint, pixels may be retained locally. + If cachingHint is kDisallow_CachingHint, pixels are not added to the local cache. + + @return raster image, or nullptr + + example: https://fiddle.skia.org/c/@Image_makeRasterImage + */ + sk_sp makeRasterImage(GrDirectContext*, + CachingHint cachingHint = kDisallow_CachingHint) const; + +#if !defined(SK_IMAGE_READ_PIXELS_DISABLE_LEGACY_API) + sk_sp makeRasterImage(CachingHint cachingHint = kDisallow_CachingHint) const { + return this->makeRasterImage(nullptr, cachingHint); + } +#endif + + /** Deprecated. + */ + enum LegacyBitmapMode { + kRO_LegacyBitmapMode, //!< returned bitmap is read-only and immutable + }; + + /** Deprecated. + Creates raster SkBitmap with same pixels as SkImage. If legacyBitmapMode is + kRO_LegacyBitmapMode, returned bitmap is read-only and immutable. + Returns true if SkBitmap is stored in bitmap. Returns false and resets bitmap if + SkBitmap write did not succeed. + + @param bitmap storage for legacy SkBitmap + @param legacyBitmapMode bitmap is read-only and immutable + @return true if SkBitmap was created + */ + bool asLegacyBitmap(SkBitmap* bitmap, + LegacyBitmapMode legacyBitmapMode = kRO_LegacyBitmapMode) const; + + /** Returns true if SkImage is backed by an image-generator or other service that creates + and caches its pixels or texture on-demand. + + @return true if SkImage is created as needed + + example: https://fiddle.skia.org/c/@Image_isLazyGenerated_a + example: https://fiddle.skia.org/c/@Image_isLazyGenerated_b + */ + virtual bool isLazyGenerated() const = 0; + + /** Creates SkImage in target SkColorSpace. + Returns nullptr if SkImage could not be created. + + Returns original SkImage if it is in target SkColorSpace. + Otherwise, converts pixels from SkImage SkColorSpace to target SkColorSpace. + If SkImage colorSpace() returns nullptr, SkImage SkColorSpace is assumed to be sRGB. + + If this image is graphite-backed, the recorder parameter is required. + + @param targetColorSpace SkColorSpace describing color range of returned SkImage + @param recorder The Recorder in which to create the new image + @param RequiredProperties properties the returned SkImage must possess (e.g. mipmaps) + @return created SkImage in target SkColorSpace + */ + virtual sk_sp makeColorSpace(SkRecorder*, + sk_sp targetColorSpace, + RequiredProperties) const = 0; + + /** Experimental. + Creates SkImage in target SkColorType and SkColorSpace. + Returns nullptr if SkImage could not be created. + + Returns original SkImage if it is in target SkColorType and SkColorSpace. + + If this image is graphite-backed, the recorder parameter is required. + + @param targetColorType SkColorType of returned SkImage + @param targetColorSpace SkColorSpace of returned SkImage + @param recorder The Recorder in which to create the new image + @param RequiredProperties properties the returned SkImage must possess (e.g. mipmaps) + @return created SkImage in target SkColorType and SkColorSpace + */ + virtual sk_sp makeColorTypeAndColorSpace(SkRecorder*, + SkColorType targetColorType, + sk_sp targetColorSpace, + RequiredProperties) const = 0; + + /** Creates a new SkImage identical to this one, but with a different SkColorSpace. + This does not convert the underlying pixel data, so the resulting image will draw + differently. + */ + sk_sp reinterpretColorSpace(sk_sp newColorSpace) const; + +private: + SkImage(const SkImageInfo& info, uint32_t uniqueID); + + friend class SkBitmap; + friend class SkImage_Base; // for private ctor + friend class SkImage_Raster; // for withMipmaps + friend class SkMipmapBuilder; + + SkImageInfo fInfo; + const uint32_t fUniqueID; + + sk_sp withMipmaps(sk_sp) const; + + using INHERITED = SkRefCnt; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkImageFilter.h b/vendor/artifacts/skia/include/core/SkImageFilter.h new file mode 100644 index 000000000..7352cf71f --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkImageFilter.h @@ -0,0 +1,119 @@ +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImageFilter_DEFINED +#define SkImageFilter_DEFINED + +#include "include/core/SkFlattenable.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include + +class SkColorFilter; +class SkMatrix; +struct SkDeserialProcs; + +/** + * Base class for image filters. If one is installed in the paint, then all drawing occurs as + * usual, but it is as if the drawing happened into an offscreen (before the xfermode is applied). + * This offscreen bitmap will then be handed to the imagefilter, who in turn creates a new bitmap + * which is what will finally be drawn to the device (using the original xfermode). + * + * The local space of image filters matches the local space of the drawn geometry. For instance if + * there is rotation on the canvas, the blur will be computed along those rotated axes and not in + * the device space. In order to achieve this result, the actual drawing of the geometry may happen + * in an unrotated coordinate system so that the filtered image can be computed more easily, and + * then it will be post transformed to match what would have been produced if the geometry were + * drawn with the total canvas matrix to begin with. + */ +class SK_API SkImageFilter : public SkFlattenable { +public: + enum MapDirection { + kForward_MapDirection, + kReverse_MapDirection, + }; + /** + * Map a device-space rect recursively forward or backward through the filter DAG. + * kForward_MapDirection is used to determine which pixels of the destination canvas a source + * image rect would touch after filtering. kReverse_MapDirection is used to determine which rect + * of the source image would be required to fill the given rect (typically, clip bounds). Used + * for clipping and temp-buffer allocations, so the result need not be exact, but should never + * be smaller than the real answer. The default implementation recursively unions all input + * bounds, or returns the source rect if no inputs. + * + * In kReverse mode, 'inputRect' is the device-space bounds of the input pixels. In kForward + * mode it should always be null. If 'inputRect' is null in kReverse mode the resulting answer + * may be incorrect. + */ + SkIRect filterBounds(const SkIRect& src, const SkMatrix& ctm, + MapDirection, const SkIRect* inputRect = nullptr) const; + + /** + * Returns whether this image filter is a color filter and puts the color filter into the + * "filterPtr" parameter if it can. Does nothing otherwise. + * If this returns false, then the filterPtr is unchanged. + * If this returns true, then if filterPtr is not null, it must be set to a ref'd colorfitler + * (i.e. it may not be set to NULL). + */ + bool isColorFilterNode(SkColorFilter** filterPtr) const; + + // DEPRECATED : use isColorFilterNode() instead + bool asColorFilter(SkColorFilter** filterPtr) const { + return this->isColorFilterNode(filterPtr); + } + + /** + * Returns true (and optionally returns a ref'd filter) if this imagefilter can be completely + * replaced by the returned colorfilter. i.e. the two effects will affect drawing in the same + * way. + */ + bool asAColorFilter(SkColorFilter** filterPtr) const; + + /** + * Returns the number of inputs this filter will accept (some inputs can be NULL). + */ + int countInputs() const; + + /** + * Returns the input filter at a given index, or NULL if no input is connected. The indices + * used are filter-specific. + */ + const SkImageFilter* getInput(int i) const; + + // Default impl returns union of all input bounds. + virtual SkRect computeFastBounds(const SkRect& bounds) const; + + // Can this filter DAG compute the resulting bounds of an object-space rectangle? + bool canComputeFastBounds() const; + + /** + * If this filter can be represented by another filter + a localMatrix, return that filter, + * else return null. + */ + sk_sp makeWithLocalMatrix(const SkMatrix& matrix) const; + + static sk_sp Deserialize(const void* data, size_t size, + const SkDeserialProcs* procs = nullptr) { + return sk_sp(static_cast( + SkFlattenable::Deserialize(kSkImageFilter_Type, data, size, procs).release())); + } + +protected: + + sk_sp refMe() const { + return sk_ref_sp(const_cast(this)); + } + +private: + friend class SkImageFilter_Base; + + using INHERITED = SkFlattenable; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkImageGenerator.h b/vendor/artifacts/skia/include/core/SkImageGenerator.h new file mode 100644 index 000000000..ede3b2c87 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkImageGenerator.h @@ -0,0 +1,140 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImageGenerator_DEFINED +#define SkImageGenerator_DEFINED + +#include "include/core/SkData.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkPixmap.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkYUVAPixmaps.h" +#include "include/private/base/SkAPI.h" + +#include +#include + +class SkRecorder; + +class SK_API SkImageGenerator { +public: + /** + * The PixelRef which takes ownership of this SkImageGenerator + * will call the image generator's destructor. + */ + virtual ~SkImageGenerator() { } + + uint32_t uniqueID() const { return fUniqueID; } + + /** + * Return a ref to the encoded (i.e. compressed) representation + * of this data. + * + * If non-NULL is returned, the caller is responsible for calling + * unref() on the data when it is finished. + */ + sk_sp refEncodedData() { return this->onRefEncodedData(); } + + /** + * Return the ImageInfo associated with this generator. + */ + const SkImageInfo& getInfo() const { return fInfo; } + + /** + * Can this generator be used to produce images that will be drawable to the specified context + * (or to CPU, if context is nullptr)? + */ + bool isValid(SkRecorder* recorder) const { return this->onIsValid(recorder); } + + /** + * Will this generator produce protected content + */ + bool isProtected() const { + return this->onIsProtected(); + } + + /** + * Decode into the given pixels, a block of memory of size at + * least (info.fHeight - 1) * rowBytes + (info.fWidth * + * bytesPerPixel) + * + * Repeated calls to this function should give the same results, + * allowing the PixelRef to be immutable. + * + * @param info A description of the format + * expected by the caller. This can simply be identical + * to the info returned by getInfo(). + * + * This contract also allows the caller to specify + * different output-configs, which the implementation can + * decide to support or not. + * + * A size that does not match getInfo() implies a request + * to scale. If the generator cannot perform this scale, + * it will return false. + * + * @return true on success. + */ + bool getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes); + + bool getPixels(const SkPixmap& pm) { + return this->getPixels(pm.info(), pm.writable_addr(), pm.rowBytes()); + } + + /** + * If decoding to YUV is supported, this returns true. Otherwise, this + * returns false and the caller will ignore output parameter yuvaPixmapInfo. + * + * @param supportedDataTypes Indicates the data type/planar config combinations that are + * supported by the caller. If the generator supports decoding to + * YUV(A), but not as a type in supportedDataTypes, this method + * returns false. + * @param yuvaPixmapInfo Output parameter that specifies the planar configuration, subsampling, + * orientation, chroma siting, plane color types, and row bytes. + */ + bool queryYUVAInfo(const SkYUVAPixmapInfo::SupportedDataTypes& supportedDataTypes, + SkYUVAPixmapInfo* yuvaPixmapInfo) const; + + /** + * Returns true on success and false on failure. + * This always attempts to perform a full decode. To get the planar + * configuration without decoding use queryYUVAInfo(). + * + * @param yuvaPixmaps Contains preallocated pixmaps configured according to a successful call + * to queryYUVAInfo(). + */ + bool getYUVAPlanes(const SkYUVAPixmaps& yuvaPixmaps); + + virtual bool isTextureGenerator() const { return false; } + +protected: + static constexpr int kNeedNewImageUniqueID = 0; + + SkImageGenerator(const SkImageInfo& info, uint32_t uniqueId = kNeedNewImageUniqueID); + + virtual sk_sp onRefEncodedData() { return nullptr; } + + struct Options {}; + virtual bool onGetPixels(const SkImageInfo&, void*, size_t, const Options&) { return false; } + virtual bool onIsValid(SkRecorder*) const { return true; } + virtual bool onIsProtected() const { return false; } + virtual bool onQueryYUVAInfo(const SkYUVAPixmapInfo::SupportedDataTypes&, + SkYUVAPixmapInfo*) const { return false; } + virtual bool onGetYUVAPlanes(const SkYUVAPixmaps&) { return false; } + + const SkImageInfo fInfo; + +private: + const uint32_t fUniqueID; + + SkImageGenerator(SkImageGenerator&&) = delete; + SkImageGenerator(const SkImageGenerator&) = delete; + SkImageGenerator& operator=(SkImageGenerator&&) = delete; + SkImageGenerator& operator=(const SkImageGenerator&) = delete; +}; + +#endif // SkImageGenerator_DEFINED diff --git a/vendor/artifacts/skia/include/core/SkImageInfo.h b/vendor/artifacts/skia/include/core/SkImageInfo.h new file mode 100644 index 000000000..40a2c4fee --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkImageInfo.h @@ -0,0 +1,634 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImageInfo_DEFINED +#define SkImageInfo_DEFINED + +#include "include/core/SkAlphaType.h" +#include "include/core/SkColorType.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkMath.h" +#include "include/private/base/SkTFitsIn.h" + +#include +#include +#include + +class SkColorSpace; + +/** Returns the number of bytes required to store a pixel, including unused padding. + Returns zero if ct is kUnknown_SkColorType or invalid. + + @return bytes per pixel +*/ +SK_API int SkColorTypeBytesPerPixel(SkColorType ct); + +/** Returns true if SkColorType always decodes alpha to 1.0, making the pixel + fully opaque. If true, SkColorType does not reserve bits to encode alpha. + + @return true if alpha is always set to 1.0 +*/ +SK_API bool SkColorTypeIsAlwaysOpaque(SkColorType ct); + +/** Returns true if canonical can be set to a valid SkAlphaType for colorType. If + there is more than one valid canonical SkAlphaType, set to alphaType, if valid. + If true is returned and canonical is not nullptr, store valid SkAlphaType. + + Returns false only if alphaType is kUnknown_SkAlphaType, color type is not + kUnknown_SkColorType, and SkColorType is not always opaque. If false is returned, + canonical is ignored. + + @param canonical storage for SkAlphaType + @return true if valid SkAlphaType can be associated with colorType +*/ +SK_API bool SkColorTypeValidateAlphaType(SkColorType colorType, SkAlphaType alphaType, + SkAlphaType* canonical = nullptr); + +/** \enum SkImageInfo::SkYUVColorSpace + Describes color range of YUV pixels. The color mapping from YUV to RGB varies + depending on the source. YUV pixels may be generated by JPEG images, standard + video streams, or high definition video streams. Each has its own mapping from + YUV to RGB. + + JPEG YUV values encode the full range of 0 to 255 for all three components. + Video YUV values often range from 16 to 235 for Y and from 16 to 240 for U and V (limited). + Details of encoding and conversion to RGB are described in YCbCr color space. + + The identity colorspace exists to provide a utility mapping from Y to R, U to G and V to B. + It can be used to visualize the YUV planes or to explicitly post process the YUV channels. +*/ +enum SkYUVColorSpace : int { + kJPEG_Full_SkYUVColorSpace, //!< describes full range + kRec601_Limited_SkYUVColorSpace, //!< describes SDTV range + kRec709_Full_SkYUVColorSpace, //!< describes HDTV range + kRec709_Limited_SkYUVColorSpace, + kBT2020_8bit_Full_SkYUVColorSpace, //!< describes UHDTV range, non-constant-luminance + kBT2020_8bit_Limited_SkYUVColorSpace, + kBT2020_10bit_Full_SkYUVColorSpace, + kBT2020_10bit_Limited_SkYUVColorSpace, + kBT2020_12bit_Full_SkYUVColorSpace, + kBT2020_12bit_Limited_SkYUVColorSpace, + kBT2020_16bit_Full_SkYUVColorSpace, + kBT2020_16bit_Limited_SkYUVColorSpace, + kFCC_Full_SkYUVColorSpace, //!< describes FCC range + kFCC_Limited_SkYUVColorSpace, + kSMPTE240_Full_SkYUVColorSpace, //!< describes SMPTE240M range + kSMPTE240_Limited_SkYUVColorSpace, + kYDZDX_Full_SkYUVColorSpace, //!< describes YDZDX range + kYDZDX_Limited_SkYUVColorSpace, + kGBR_Full_SkYUVColorSpace, //!< describes GBR range + kGBR_Limited_SkYUVColorSpace, + kYCgCo_8bit_Full_SkYUVColorSpace, //!< describes YCgCo matrix + kYCgCo_8bit_Limited_SkYUVColorSpace, + kYCgCo_10bit_Full_SkYUVColorSpace, + kYCgCo_10bit_Limited_SkYUVColorSpace, + kYCgCo_12bit_Full_SkYUVColorSpace, + kYCgCo_12bit_Limited_SkYUVColorSpace, + kYCgCo_16bit_Full_SkYUVColorSpace, + kYCgCo_16bit_Limited_SkYUVColorSpace, + kIdentity_SkYUVColorSpace, //!< maps Y->R, U->G, V->B + + kLastEnum_SkYUVColorSpace = kIdentity_SkYUVColorSpace, //!< last valid value + + // Legacy (deprecated) names: + kJPEG_SkYUVColorSpace = kJPEG_Full_SkYUVColorSpace, + kRec601_SkYUVColorSpace = kRec601_Limited_SkYUVColorSpace, + kRec709_SkYUVColorSpace = kRec709_Limited_SkYUVColorSpace, + kBT2020_SkYUVColorSpace = kBT2020_8bit_Limited_SkYUVColorSpace, +}; + +SK_API bool SkYUVColorSpaceIsLimitedRange(SkYUVColorSpace cs); + +/** \struct SkColorInfo + Describes pixel and encoding. SkImageInfo can be created from SkColorInfo by + providing dimensions. + + It encodes how pixel bits describe alpha, transparency; color components red, blue, + and green; and SkColorSpace, the range and linearity of colors. +*/ +class SK_API SkColorInfo { +public: + /** Creates an SkColorInfo with kUnknown_SkColorType, kUnknown_SkAlphaType, + and no SkColorSpace. + + @return empty SkImageInfo + */ + SkColorInfo(); + ~SkColorInfo(); + + /** Creates SkColorInfo from SkColorType ct, SkAlphaType at, and optionally SkColorSpace cs. + + If SkColorSpace cs is nullptr and SkColorInfo is part of drawing source: SkColorSpace + defaults to sRGB, mapping into SkSurface SkColorSpace. + + Parameters are not validated to see if their values are legal, or that the + combination is supported. + @return created SkColorInfo + */ + SkColorInfo(SkColorType ct, SkAlphaType at, sk_sp cs); + + SkColorInfo(const SkColorInfo&); + SkColorInfo(SkColorInfo&&); + + SkColorInfo& operator=(const SkColorInfo&); + SkColorInfo& operator=(SkColorInfo&&); + + SkColorSpace* colorSpace() const; + sk_sp refColorSpace() const; + SkColorType colorType() const { return fColorType; } + SkAlphaType alphaType() const { return fAlphaType; } + + bool isOpaque() const { + return SkAlphaTypeIsOpaque(fAlphaType) + || SkColorTypeIsAlwaysOpaque(fColorType); + } + + bool gammaCloseToSRGB() const; + + /** Does other represent the same color type, alpha type, and color space? */ + bool operator==(const SkColorInfo& other) const; + + /** Does other represent a different color type, alpha type, or color space? */ + bool operator!=(const SkColorInfo& other) const; + + /** Creates SkColorInfo with same SkColorType, SkColorSpace, with SkAlphaType set + to newAlphaType. + + Created SkColorInfo contains newAlphaType even if it is incompatible with + SkColorType, in which case SkAlphaType in SkColorInfo is ignored. + */ + SkColorInfo makeAlphaType(SkAlphaType newAlphaType) const; + + /** Creates new SkColorInfo with same SkAlphaType, SkColorSpace, with SkColorType + set to newColorType. + */ + SkColorInfo makeColorType(SkColorType newColorType) const; + + /** Creates SkColorInfo with same SkAlphaType, SkColorType, with SkColorSpace + set to cs. cs may be nullptr. + */ + SkColorInfo makeColorSpace(sk_sp cs) const; + + /** Returns number of bytes per pixel required by SkColorType. + Returns zero if colorType() is kUnknown_SkColorType. + + @return bytes in pixel + + example: https://fiddle.skia.org/c/@ImageInfo_bytesPerPixel + */ + int bytesPerPixel() const; + + /** Returns bit shift converting row bytes to row pixels. + Returns zero for kUnknown_SkColorType. + + @return one of: 0, 1, 2, 3, 4; left shift to convert pixels to bytes + + example: https://fiddle.skia.org/c/@ImageInfo_shiftPerPixel + */ + int shiftPerPixel() const; + +private: + sk_sp fColorSpace; + SkColorType fColorType = kUnknown_SkColorType; + SkAlphaType fAlphaType = kUnknown_SkAlphaType; +}; + +/** \struct SkImageInfo + Describes pixel dimensions and encoding. SkBitmap, SkImage, PixMap, and SkSurface + can be created from SkImageInfo. SkImageInfo can be retrieved from SkBitmap and + SkPixmap, but not from SkImage and SkSurface. For example, SkImage and SkSurface + implementations may defer pixel depth, so may not completely specify SkImageInfo. + + SkImageInfo contains dimensions, the pixel integral width and height. It encodes + how pixel bits describe alpha, transparency; color components red, blue, + and green; and SkColorSpace, the range and linearity of colors. +*/ +struct SK_API SkImageInfo { +public: + + /** Creates an empty SkImageInfo with kUnknown_SkColorType, kUnknown_SkAlphaType, + a width and height of zero, and no SkColorSpace. + + @return empty SkImageInfo + */ + SkImageInfo() = default; + + /** Creates SkImageInfo from integral dimensions width and height, SkColorType ct, + SkAlphaType at, and optionally SkColorSpace cs. + + If SkColorSpace cs is nullptr and SkImageInfo is part of drawing source: SkColorSpace + defaults to sRGB, mapping into SkSurface SkColorSpace. + + Parameters are not validated to see if their values are legal, or that the + combination is supported. + + @param width pixel column count; must be zero or greater + @param height pixel row count; must be zero or greater + @param cs range of colors; may be nullptr + @return created SkImageInfo + */ + static SkImageInfo Make(int width, int height, SkColorType ct, SkAlphaType at); + static SkImageInfo Make(int width, int height, SkColorType ct, SkAlphaType at, + sk_sp cs); + static SkImageInfo Make(SkISize dimensions, SkColorType ct, SkAlphaType at); + static SkImageInfo Make(SkISize dimensions, SkColorType ct, SkAlphaType at, + sk_sp cs); + + /** Creates SkImageInfo from integral dimensions and SkColorInfo colorInfo, + + Parameters are not validated to see if their values are legal, or that the + combination is supported. + + @param dimensions pixel column and row count; must be zeros or greater + @param SkColorInfo the pixel encoding consisting of SkColorType, SkAlphaType, and + SkColorSpace (which may be nullptr) + @return created SkImageInfo + */ + static SkImageInfo Make(SkISize dimensions, const SkColorInfo& colorInfo) { + return SkImageInfo(dimensions, colorInfo); + } + static SkImageInfo Make(SkISize dimensions, SkColorInfo&& colorInfo) { + return SkImageInfo(dimensions, std::move(colorInfo)); + } + + /** Creates SkImageInfo from integral dimensions width and height, kN32_SkColorType, + SkAlphaType at, and optionally SkColorSpace cs. kN32_SkColorType will equal either + kBGRA_8888_SkColorType or kRGBA_8888_SkColorType, whichever is optimal. + + If SkColorSpace cs is nullptr and SkImageInfo is part of drawing source: SkColorSpace + defaults to sRGB, mapping into SkSurface SkColorSpace. + + Parameters are not validated to see if their values are legal, or that the + combination is supported. + + @param width pixel column count; must be zero or greater + @param height pixel row count; must be zero or greater + @param cs range of colors; may be nullptr + @return created SkImageInfo + */ + static SkImageInfo MakeN32(int width, int height, SkAlphaType at); + static SkImageInfo MakeN32(int width, int height, SkAlphaType at, sk_sp cs); + + /** Creates SkImageInfo from integral dimensions width and height, kN32_SkColorType, + SkAlphaType at, with sRGB SkColorSpace. + + Parameters are not validated to see if their values are legal, or that the + combination is supported. + + @param width pixel column count; must be zero or greater + @param height pixel row count; must be zero or greater + @return created SkImageInfo + + example: https://fiddle.skia.org/c/@ImageInfo_MakeS32 + */ + static SkImageInfo MakeS32(int width, int height, SkAlphaType at); + + /** Creates SkImageInfo from integral dimensions width and height, kN32_SkColorType, + kPremul_SkAlphaType, with optional SkColorSpace. + + If SkColorSpace cs is nullptr and SkImageInfo is part of drawing source: SkColorSpace + defaults to sRGB, mapping into SkSurface SkColorSpace. + + Parameters are not validated to see if their values are legal, or that the + combination is supported. + + @param width pixel column count; must be zero or greater + @param height pixel row count; must be zero or greater + @param cs range of colors; may be nullptr + @return created SkImageInfo + */ + static SkImageInfo MakeN32Premul(int width, int height); + static SkImageInfo MakeN32Premul(int width, int height, sk_sp cs); + + /** Creates SkImageInfo from integral dimensions width and height, kN32_SkColorType, + kPremul_SkAlphaType, with SkColorSpace set to nullptr. + + If SkImageInfo is part of drawing source: SkColorSpace defaults to sRGB, mapping + into SkSurface SkColorSpace. + + Parameters are not validated to see if their values are legal, or that the + combination is supported. + + @param dimensions width and height, each must be zero or greater + @param cs range of colors; may be nullptr + @return created SkImageInfo + */ + static SkImageInfo MakeN32Premul(SkISize dimensions); + static SkImageInfo MakeN32Premul(SkISize dimensions, sk_sp cs); + + /** Creates SkImageInfo from integral dimensions width and height, kAlpha_8_SkColorType, + kPremul_SkAlphaType, with SkColorSpace set to nullptr. + + @param width pixel column count; must be zero or greater + @param height pixel row count; must be zero or greater + @return created SkImageInfo + */ + static SkImageInfo MakeA8(int width, int height); + /** Creates SkImageInfo from integral dimensions, kAlpha_8_SkColorType, + kPremul_SkAlphaType, with SkColorSpace set to nullptr. + + @param dimensions pixel row and column count; must be zero or greater + @return created SkImageInfo + */ + static SkImageInfo MakeA8(SkISize dimensions); + + /** Creates SkImageInfo from integral dimensions width and height, kUnknown_SkColorType, + kUnknown_SkAlphaType, with SkColorSpace set to nullptr. + + Returned SkImageInfo as part of source does not draw, and as part of destination + can not be drawn to. + + @param width pixel column count; must be zero or greater + @param height pixel row count; must be zero or greater + @return created SkImageInfo + */ + static SkImageInfo MakeUnknown(int width, int height); + + /** Creates SkImageInfo from integral dimensions width and height set to zero, + kUnknown_SkColorType, kUnknown_SkAlphaType, with SkColorSpace set to nullptr. + + Returned SkImageInfo as part of source does not draw, and as part of destination + can not be drawn to. + + @return created SkImageInfo + */ + static SkImageInfo MakeUnknown() { + return MakeUnknown(0, 0); + } + + /** Returns pixel count in each row. + + @return pixel width + */ + int width() const { return fDimensions.width(); } + + /** Returns pixel row count. + + @return pixel height + */ + int height() const { return fDimensions.height(); } + + SkColorType colorType() const { return fColorInfo.colorType(); } + + SkAlphaType alphaType() const { return fColorInfo.alphaType(); } + + /** Returns SkColorSpace, the range of colors. The reference count of + SkColorSpace is unchanged. The returned SkColorSpace is immutable. + + @return SkColorSpace, or nullptr + */ + SkColorSpace* colorSpace() const; + + /** Returns smart pointer to SkColorSpace, the range of colors. The smart pointer + tracks the number of objects sharing this SkColorSpace reference so the memory + is released when the owners destruct. + + The returned SkColorSpace is immutable. + + @return SkColorSpace wrapped in a smart pointer + */ + sk_sp refColorSpace() const; + + /** Returns if SkImageInfo describes an empty area of pixels by checking if either + width or height is zero or smaller. + + @return true if either dimension is zero or smaller + */ + bool isEmpty() const { return fDimensions.isEmpty(); } + + /** Returns the dimensionless SkColorInfo that represents the same color type, + alpha type, and color space as this SkImageInfo. + */ + const SkColorInfo& colorInfo() const { return fColorInfo; } + + /** Returns true if SkAlphaType is set to hint that all pixels are opaque; their + alpha value is implicitly or explicitly 1.0. If true, and all pixels are + not opaque, Skia may draw incorrectly. + + Does not check if SkColorType allows alpha, or if any pixel value has + transparency. + + @return true if SkAlphaType is kOpaque_SkAlphaType + */ + bool isOpaque() const { return fColorInfo.isOpaque(); } + + /** Returns SkISize { width(), height() }. + + @return integral size of width() and height() + */ + SkISize dimensions() const { return fDimensions; } + + /** Returns SkIRect { 0, 0, width(), height() }. + + @return integral rectangle from origin to width() and height() + */ + SkIRect bounds() const { return SkIRect::MakeSize(fDimensions); } + + /** Returns true if associated SkColorSpace is not nullptr, and SkColorSpace gamma + is approximately the same as sRGB. + This includes the + + @return true if SkColorSpace gamma is approximately the same as sRGB + */ + bool gammaCloseToSRGB() const { return fColorInfo.gammaCloseToSRGB(); } + + /** Creates SkImageInfo with the same SkColorType, SkColorSpace, and SkAlphaType, + with dimensions set to width and height. + + @param newWidth pixel column count; must be zero or greater + @param newHeight pixel row count; must be zero or greater + @return created SkImageInfo + */ + SkImageInfo makeWH(int newWidth, int newHeight) const { + return Make({newWidth, newHeight}, fColorInfo); + } + + /** Creates SkImageInfo with the same SkColorType, SkColorSpace, and SkAlphaType, + with dimensions set to newDimensions. + + @param newSize pixel column and row count; must be zero or greater + @return created SkImageInfo + */ + SkImageInfo makeDimensions(SkISize newSize) const { + return Make(newSize, fColorInfo); + } + + /** Creates SkImageInfo with same SkColorType, SkColorSpace, width, and height, + with SkAlphaType set to newAlphaType. + + Created SkImageInfo contains newAlphaType even if it is incompatible with + SkColorType, in which case SkAlphaType in SkImageInfo is ignored. + + @return created SkImageInfo + */ + SkImageInfo makeAlphaType(SkAlphaType newAlphaType) const { + return Make(fDimensions, fColorInfo.makeAlphaType(newAlphaType)); + } + + /** Creates SkImageInfo with same SkAlphaType, SkColorSpace, width, and height, + with SkColorType set to newColorType. + + @return created SkImageInfo + */ + SkImageInfo makeColorType(SkColorType newColorType) const { + return Make(fDimensions, fColorInfo.makeColorType(newColorType)); + } + + /** Creates SkImageInfo with same SkAlphaType, SkColorType, width, and height, + with SkColorSpace set to cs. + + @param cs range of colors; may be nullptr + @return created SkImageInfo + */ + SkImageInfo makeColorSpace(sk_sp cs) const; + + /** Returns number of bytes per pixel required by SkColorType. + Returns zero if colorType( is kUnknown_SkColorType. + + @return bytes in pixel + */ + int bytesPerPixel() const { return fColorInfo.bytesPerPixel(); } + + /** Returns bit shift converting row bytes to row pixels. + Returns zero for kUnknown_SkColorType. + + @return one of: 0, 1, 2, 3; left shift to convert pixels to bytes + */ + int shiftPerPixel() const { return fColorInfo.shiftPerPixel(); } + + /** Returns minimum bytes per row, computed from pixel width() and SkColorType, which + specifies bytesPerPixel(). SkBitmap maximum value for row bytes must fit + in 31 bits. + + @return width() times bytesPerPixel() as unsigned 64-bit integer + */ + uint64_t minRowBytes64() const { + return (uint64_t)sk_64_mul(this->width(), this->bytesPerPixel()); + } + + /** Returns minimum bytes per row, computed from pixel width() and SkColorType, which + specifies bytesPerPixel(). SkBitmap maximum value for row bytes must fit + in 31 bits. + + @return width() times bytesPerPixel() as size_t + */ + size_t minRowBytes() const { + uint64_t minRowBytes = this->minRowBytes64(); + if (!SkTFitsIn(minRowBytes)) { + return 0; + } + return (size_t)minRowBytes; + } + + /** Returns byte offset of pixel from pixel base address. + + Asserts in debug build if x or y is outside of bounds. Does not assert if + rowBytes is smaller than minRowBytes(), even though result may be incorrect. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @param rowBytes size of pixel row or larger + @return offset within pixel array + + example: https://fiddle.skia.org/c/@ImageInfo_computeOffset + */ + size_t computeOffset(int x, int y, size_t rowBytes) const; + + /** Compares SkImageInfo with other, and returns true if width, height, SkColorType, + SkAlphaType, and SkColorSpace are equivalent. + + @param other SkImageInfo to compare + @return true if SkImageInfo equals other + */ + bool operator==(const SkImageInfo& other) const { + return fDimensions == other.fDimensions && fColorInfo == other.fColorInfo; + } + + /** Compares SkImageInfo with other, and returns true if width, height, SkColorType, + SkAlphaType, and SkColorSpace are not equivalent. + + @param other SkImageInfo to compare + @return true if SkImageInfo is not equal to other + */ + bool operator!=(const SkImageInfo& other) const { + return !(*this == other); + } + + /** Returns storage required by pixel array, given SkImageInfo dimensions, SkColorType, + and rowBytes. rowBytes is assumed to be at least as large as minRowBytes(). + + Returns zero if height is zero. + Returns SIZE_MAX if answer exceeds the range of size_t. + + @param rowBytes size of pixel row or larger + @return memory required by pixel buffer + */ + size_t computeByteSize(size_t rowBytes) const; + + /** Returns storage required by pixel array, given SkImageInfo dimensions, and + SkColorType. Uses minRowBytes() to compute bytes for pixel row. + + Returns zero if height is zero. + Returns SIZE_MAX if answer exceeds the range of size_t. + + @return least memory required by pixel buffer + */ + size_t computeMinByteSize() const { + return this->computeByteSize(this->minRowBytes()); + } + + /** Returns true if byteSize equals SIZE_MAX. computeByteSize() and + computeMinByteSize() return SIZE_MAX if size_t can not hold buffer size. + + @param byteSize result of computeByteSize() or computeMinByteSize() + @return true if computeByteSize() or computeMinByteSize() result exceeds size_t + */ + static bool ByteSizeOverflowed(size_t byteSize) { + return SIZE_MAX == byteSize; + } + + /** Returns true if rowBytes is valid for this SkImageInfo. + + @param rowBytes size of pixel row including padding + @return true if rowBytes is large enough to contain pixel row and is properly + aligned + */ + bool validRowBytes(size_t rowBytes) const { + if (rowBytes < this->minRowBytes64()) { + return false; + } + int shift = this->shiftPerPixel(); + size_t alignedRowBytes = rowBytes >> shift << shift; + return alignedRowBytes == rowBytes; + } + + /** Creates an empty SkImageInfo with kUnknown_SkColorType, kUnknown_SkAlphaType, + a width and height of zero, and no SkColorSpace. + */ + void reset() { *this = {}; } + + /** Asserts if internal values are illegal or inconsistent. Only available if + SK_DEBUG is defined at compile time. + */ + SkDEBUGCODE(void validate() const;) + +private: + SkColorInfo fColorInfo; + SkISize fDimensions = {0, 0}; + + SkImageInfo(SkISize dimensions, const SkColorInfo& colorInfo) + : fColorInfo(colorInfo), fDimensions(dimensions) {} + + SkImageInfo(SkISize dimensions, SkColorInfo&& colorInfo) + : fColorInfo(std::move(colorInfo)), fDimensions(dimensions) {} +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkM44.h b/vendor/artifacts/skia/include/core/SkM44.h new file mode 100644 index 000000000..89eabf552 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkM44.h @@ -0,0 +1,442 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkM44_DEFINED +#define SkM44_DEFINED + +#include "include/core/SkMatrix.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +#include + +struct SkRect; + +struct SK_API SkV2 { + float x, y; + + bool operator==(SkV2 v) const { return x == v.x && y == v.y; } + bool operator!=(SkV2 v) const { return !(*this == v); } + + static SkScalar Dot(SkV2 a, SkV2 b) { return a.x * b.x + a.y * b.y; } + static SkScalar Cross(SkV2 a, SkV2 b) { return a.x * b.y - a.y * b.x; } + static SkV2 Normalize(SkV2 v) { return v * (1.0f / v.length()); } + + SkV2 operator-() const { return {-x, -y}; } + SkV2 operator+(SkV2 v) const { return {x+v.x, y+v.y}; } + SkV2 operator-(SkV2 v) const { return {x-v.x, y-v.y}; } + + SkV2 operator*(SkV2 v) const { return {x*v.x, y*v.y}; } + friend SkV2 operator*(SkV2 v, SkScalar s) { return {v.x*s, v.y*s}; } + friend SkV2 operator*(SkScalar s, SkV2 v) { return {v.x*s, v.y*s}; } + friend SkV2 operator/(SkV2 v, SkScalar s) { return {v.x/s, v.y/s}; } + friend SkV2 operator/(SkScalar s, SkV2 v) { return {s/v.x, s/v.y}; } + + void operator+=(SkV2 v) { *this = *this + v; } + void operator-=(SkV2 v) { *this = *this - v; } + void operator*=(SkV2 v) { *this = *this * v; } + void operator*=(SkScalar s) { *this = *this * s; } + void operator/=(SkScalar s) { *this = *this / s; } + + SkScalar lengthSquared() const { return Dot(*this, *this); } + SkScalar length() const { return SkScalarSqrt(this->lengthSquared()); } + + SkScalar dot(SkV2 v) const { return Dot(*this, v); } + SkScalar cross(SkV2 v) const { return Cross(*this, v); } + SkV2 normalize() const { return Normalize(*this); } + + const float* ptr() const { return &x; } + float* ptr() { return &x; } +}; + +struct SK_API SkV3 { + float x, y, z; + + bool operator==(const SkV3& v) const { + return x == v.x && y == v.y && z == v.z; + } + bool operator!=(const SkV3& v) const { return !(*this == v); } + + static SkScalar Dot(const SkV3& a, const SkV3& b) { return a.x*b.x + a.y*b.y + a.z*b.z; } + static SkV3 Cross(const SkV3& a, const SkV3& b) { + return { a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - a.y*b.x }; + } + static SkV3 Normalize(const SkV3& v) { return v * (1.0f / v.length()); } + + SkV3 operator-() const { return {-x, -y, -z}; } + SkV3 operator+(const SkV3& v) const { return { x + v.x, y + v.y, z + v.z }; } + SkV3 operator-(const SkV3& v) const { return { x - v.x, y - v.y, z - v.z }; } + + SkV3 operator*(const SkV3& v) const { + return { x*v.x, y*v.y, z*v.z }; + } + friend SkV3 operator*(const SkV3& v, SkScalar s) { + return { v.x*s, v.y*s, v.z*s }; + } + friend SkV3 operator*(SkScalar s, const SkV3& v) { return v*s; } + + void operator+=(SkV3 v) { *this = *this + v; } + void operator-=(SkV3 v) { *this = *this - v; } + void operator*=(SkV3 v) { *this = *this * v; } + void operator*=(SkScalar s) { *this = *this * s; } + + SkScalar lengthSquared() const { return Dot(*this, *this); } + SkScalar length() const { return SkScalarSqrt(Dot(*this, *this)); } + + SkScalar dot(const SkV3& v) const { return Dot(*this, v); } + SkV3 cross(const SkV3& v) const { return Cross(*this, v); } + SkV3 normalize() const { return Normalize(*this); } + + const float* ptr() const { return &x; } + float* ptr() { return &x; } +}; + +struct SK_API SkV4 { + float x, y, z, w; + + bool operator==(const SkV4& v) const { + return x == v.x && y == v.y && z == v.z && w == v.w; + } + bool operator!=(const SkV4& v) const { return !(*this == v); } + + static SkScalar Dot(const SkV4& a, const SkV4& b) { + return a.x*b.x + a.y*b.y + a.z*b.z + a.w*b.w; + } + static SkV4 Normalize(const SkV4& v) { return v * (1.0f / v.length()); } + + SkV4 operator-() const { return {-x, -y, -z, -w}; } + SkV4 operator+(const SkV4& v) const { return { x + v.x, y + v.y, z + v.z, w + v.w }; } + SkV4 operator-(const SkV4& v) const { return { x - v.x, y - v.y, z - v.z, w - v.w }; } + + SkV4 operator*(const SkV4& v) const { + return { x*v.x, y*v.y, z*v.z, w*v.w }; + } + friend SkV4 operator*(const SkV4& v, SkScalar s) { + return { v.x*s, v.y*s, v.z*s, v.w*s }; + } + friend SkV4 operator*(SkScalar s, const SkV4& v) { return v*s; } + + SkScalar lengthSquared() const { return Dot(*this, *this); } + SkScalar length() const { return SkScalarSqrt(Dot(*this, *this)); } + + SkScalar dot(const SkV4& v) const { return Dot(*this, v); } + SkV4 normalize() const { return Normalize(*this); } + + const float* ptr() const { return &x; } + float* ptr() { return &x; } + + float operator[](int i) const { + SkASSERT(i >= 0 && i < 4); + return this->ptr()[i]; + } + float& operator[](int i) { + SkASSERT(i >= 0 && i < 4); + return this->ptr()[i]; + } +}; + +/** + * 4x4 matrix used by SkCanvas and other parts of Skia. + * + * Skia assumes a right-handed coordinate system: + * +X goes to the right + * +Y goes down + * +Z goes into the screen (away from the viewer) + */ +class SK_API SkM44 { +public: + SkM44(const SkM44& src) = default; + SkM44& operator=(const SkM44& src) = default; + + constexpr SkM44() + : fMat{1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1} + {} + + SkM44(const SkM44& a, const SkM44& b) { + this->setConcat(a, b); + } + + enum Uninitialized_Constructor { + kUninitialized_Constructor + }; + explicit SkM44(Uninitialized_Constructor) {} + + enum NaN_Constructor { + kNaN_Constructor + }; + constexpr SkM44(NaN_Constructor) + : fMat{SK_ScalarNaN, SK_ScalarNaN, SK_ScalarNaN, SK_ScalarNaN, + SK_ScalarNaN, SK_ScalarNaN, SK_ScalarNaN, SK_ScalarNaN, + SK_ScalarNaN, SK_ScalarNaN, SK_ScalarNaN, SK_ScalarNaN, + SK_ScalarNaN, SK_ScalarNaN, SK_ScalarNaN, SK_ScalarNaN} + {} + + /** + * The constructor parameters are in row-major order. + */ + constexpr SkM44(SkScalar m0, SkScalar m4, SkScalar m8, SkScalar m12, + SkScalar m1, SkScalar m5, SkScalar m9, SkScalar m13, + SkScalar m2, SkScalar m6, SkScalar m10, SkScalar m14, + SkScalar m3, SkScalar m7, SkScalar m11, SkScalar m15) + // fMat is column-major order in memory. + : fMat{m0, m1, m2, m3, + m4, m5, m6, m7, + m8, m9, m10, m11, + m12, m13, m14, m15} + {} + + static SkM44 Rows(const SkV4& r0, const SkV4& r1, const SkV4& r2, const SkV4& r3) { + SkM44 m(kUninitialized_Constructor); + m.setRow(0, r0); + m.setRow(1, r1); + m.setRow(2, r2); + m.setRow(3, r3); + return m; + } + static SkM44 Cols(const SkV4& c0, const SkV4& c1, const SkV4& c2, const SkV4& c3) { + SkM44 m(kUninitialized_Constructor); + m.setCol(0, c0); + m.setCol(1, c1); + m.setCol(2, c2); + m.setCol(3, c3); + return m; + } + + static SkM44 RowMajor(const SkScalar r[16]) { + return SkM44(r[ 0], r[ 1], r[ 2], r[ 3], + r[ 4], r[ 5], r[ 6], r[ 7], + r[ 8], r[ 9], r[10], r[11], + r[12], r[13], r[14], r[15]); + } + static SkM44 ColMajor(const SkScalar c[16]) { + return SkM44(c[0], c[4], c[ 8], c[12], + c[1], c[5], c[ 9], c[13], + c[2], c[6], c[10], c[14], + c[3], c[7], c[11], c[15]); + } + + static SkM44 Translate(SkScalar x, SkScalar y, SkScalar z = 0) { + return SkM44(1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1); + } + + static SkM44 Scale(SkScalar x, SkScalar y, SkScalar z = 1) { + return SkM44(x, 0, 0, 0, + 0, y, 0, 0, + 0, 0, z, 0, + 0, 0, 0, 1); + } + + static SkM44 Rotate(SkV3 axis, SkScalar radians) { + SkM44 m(kUninitialized_Constructor); + m.setRotate(axis, radians); + return m; + } + + // Scales and translates 'src' to fill 'dst' exactly. + static SkM44 RectToRect(const SkRect& src, const SkRect& dst); + + static SkM44 LookAt(const SkV3& eye, const SkV3& center, const SkV3& up); + static SkM44 Perspective(float near, float far, float angle); + + bool operator==(const SkM44& other) const; + bool operator!=(const SkM44& other) const { + return !(other == *this); + } + + void getColMajor(SkScalar v[]) const { + memcpy(v, fMat, sizeof(fMat)); + } + void getRowMajor(SkScalar v[]) const; + + SkScalar rc(int r, int c) const { + SkASSERT(r >= 0 && r <= 3); + SkASSERT(c >= 0 && c <= 3); + return fMat[c*4 + r]; + } + void setRC(int r, int c, SkScalar value) { + SkASSERT(r >= 0 && r <= 3); + SkASSERT(c >= 0 && c <= 3); + fMat[c*4 + r] = value; + } + + SkV4 row(int i) const { + SkASSERT(i >= 0 && i <= 3); + return {fMat[i + 0], fMat[i + 4], fMat[i + 8], fMat[i + 12]}; + } + SkV4 col(int i) const { + SkASSERT(i >= 0 && i <= 3); + return {fMat[i*4 + 0], fMat[i*4 + 1], fMat[i*4 + 2], fMat[i*4 + 3]}; + } + + void setRow(int i, const SkV4& v) { + SkASSERT(i >= 0 && i <= 3); + fMat[i + 0] = v.x; + fMat[i + 4] = v.y; + fMat[i + 8] = v.z; + fMat[i + 12] = v.w; + } + void setCol(int i, const SkV4& v) { + SkASSERT(i >= 0 && i <= 3); + memcpy(&fMat[i*4], v.ptr(), sizeof(v)); + } + + SkM44& setIdentity() { + *this = { 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 }; + return *this; + } + + SkM44& setTranslate(SkScalar x, SkScalar y, SkScalar z = 0) { + *this = { 1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1 }; + return *this; + } + + SkM44& setScale(SkScalar x, SkScalar y, SkScalar z = 1) { + *this = { x, 0, 0, 0, + 0, y, 0, 0, + 0, 0, z, 0, + 0, 0, 0, 1 }; + return *this; + } + + /** + * Set this matrix to rotate about the specified unit-length axis vector, + * by an angle specified by its sin() and cos(). + * + * This does not attempt to verify that axis.length() == 1 or that the sin,cos values + * are correct. + */ + SkM44& setRotateUnitSinCos(SkV3 axis, SkScalar sinAngle, SkScalar cosAngle); + + /** + * Set this matrix to rotate about the specified unit-length axis vector, + * by an angle specified in radians. + * + * This does not attempt to verify that axis.length() == 1. + */ + SkM44& setRotateUnit(SkV3 axis, SkScalar radians) { + return this->setRotateUnitSinCos(axis, SkScalarSin(radians), SkScalarCos(radians)); + } + + /** + * Set this matrix to rotate about the specified axis vector, + * by an angle specified in radians. + * + * Note: axis is not assumed to be unit-length, so it will be normalized internally. + * If axis is already unit-length, call setRotateAboutUnitRadians() instead. + */ + SkM44& setRotate(SkV3 axis, SkScalar radians); + + SkM44& setConcat(const SkM44& a, const SkM44& b); + + friend SkM44 operator*(const SkM44& a, const SkM44& b) { + return SkM44(a, b); + } + + SkM44& preConcat(const SkM44& m) { + return this->setConcat(*this, m); + } + + SkM44& postConcat(const SkM44& m) { + return this->setConcat(m, *this); + } + + /** + * A matrix is categorized as 'perspective' if the bottom row is not [0, 0, 0, 1]. + * For most uses, a bottom row of [0, 0, 0, X] behaves like a non-perspective matrix, though + * it will be categorized as perspective. Calling normalizePerspective() will change the + * matrix such that, if its bottom row was [0, 0, 0, X], it will be changed to [0, 0, 0, 1] + * by scaling the rest of the matrix by 1/X. + * + * | A B C D | | A/X B/X C/X D/X | + * | E F G H | -> | E/X F/X G/X H/X | for X != 0 + * | I J K L | | I/X J/X K/X L/X | + * | 0 0 0 X | | 0 0 0 1 | + */ + void normalizePerspective(); + + /** Returns true if all elements of the matrix are finite. Returns false if any + element is infinity, or NaN. + + @return true if matrix has only finite elements + */ + bool isFinite() const { return SkIsFinite(fMat, 16); } + + /** If this is invertible, return that in inverse and return true. If it is + * not invertible, return false and leave the inverse parameter unchanged. + */ + [[nodiscard]] bool invert(SkM44* inverse) const; + + [[nodiscard]] SkM44 transpose() const; + + void dump() const; + + //////////// + + SkV4 map(float x, float y, float z, float w) const; + SkV4 operator*(const SkV4& v) const { + return this->map(v.x, v.y, v.z, v.w); + } + SkV3 operator*(SkV3 v) const { + auto v4 = this->map(v.x, v.y, v.z, 0); + return {v4.x, v4.y, v4.z}; + } + ////////////////////// Converting to/from SkMatrix + + /* When converting from SkM44 to SkMatrix, the third row and + * column is dropped. When converting from SkMatrix to SkM44 + * the third row and column remain as identity: + * [ a b c ] [ a b 0 c ] + * [ d e f ] -> [ d e 0 f ] + * [ g h i ] [ 0 0 1 0 ] + * [ g h 0 i ] + */ + SkMatrix asM33() const { + return SkMatrix::MakeAll(fMat[0], fMat[4], fMat[12], + fMat[1], fMat[5], fMat[13], + fMat[3], fMat[7], fMat[15]); + } + + explicit SkM44(const SkMatrix& src) + : SkM44(src[SkMatrix::kMScaleX], src[SkMatrix::kMSkewX], 0, src[SkMatrix::kMTransX], + src[SkMatrix::kMSkewY], src[SkMatrix::kMScaleY], 0, src[SkMatrix::kMTransY], + 0, 0, 1, 0, + src[SkMatrix::kMPersp0], src[SkMatrix::kMPersp1], 0, src[SkMatrix::kMPersp2]) + {} + + SkM44& preTranslate(SkScalar x, SkScalar y, SkScalar z = 0); + SkM44& postTranslate(SkScalar x, SkScalar y, SkScalar z = 0); + + SkM44& preScale(SkScalar x, SkScalar y); + SkM44& preScale(SkScalar x, SkScalar y, SkScalar z); + SkM44& preConcat(const SkMatrix&); + +private: + /* Stored in column-major. + * Indices + * 0 4 8 12 1 0 0 trans_x + * 1 5 9 13 e.g. 0 1 0 trans_y + * 2 6 10 14 0 0 1 trans_z + * 3 7 11 15 0 0 0 1 + */ + SkScalar fMat[16]; + + friend class SkMatrixPriv; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkMallocPixelRef.h b/vendor/artifacts/skia/include/core/SkMallocPixelRef.h new file mode 100644 index 000000000..5f3734858 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkMallocPixelRef.h @@ -0,0 +1,45 @@ +/* + * Copyright 2008 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkMallocPixelRef_DEFINED +#define SkMallocPixelRef_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +#include + +class SkData; +class SkPixelRef; +struct SkImageInfo; + +/** We explicitly use the same allocator for our pixels that SkMask does, + so that we can freely assign memory allocated by one class to the other. +*/ +namespace SkMallocPixelRef { + /** + * Return a new SkMallocPixelRef, automatically allocating storage for the + * pixels. If rowBytes are 0, an optimal value will be chosen automatically. + * If rowBytes is > 0, then it will be respected, or NULL will be returned + * if rowBytes is invalid for the specified info. + * + * All pixel bytes are zeroed. + * + * Returns NULL on failure. + */ + SK_API sk_sp MakeAllocate(const SkImageInfo&, size_t rowBytes); + + /** + * Return a new SkMallocPixelRef that will use the provided SkData and + * rowBytes as pixel storage. The SkData will be ref()ed and on + * destruction of the PixelRef, the SkData will be unref()ed. + * + * Returns NULL on failure. + */ + SK_API sk_sp MakeWithData(const SkImageInfo&, size_t rowBytes, sk_sp data); +} // namespace SkMallocPixelRef +#endif diff --git a/vendor/artifacts/skia/include/core/SkMaskFilter.h b/vendor/artifacts/skia/include/core/SkMaskFilter.h new file mode 100644 index 000000000..2dac989e4 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkMaskFilter.h @@ -0,0 +1,45 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkMaskFilter_DEFINED +#define SkMaskFilter_DEFINED + +#include "include/core/SkFlattenable.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +#include + +enum SkBlurStyle : int; +struct SkDeserialProcs; + +/** \class SkMaskFilter + + SkMaskFilter is the base class for object that perform transformations on + the mask before drawing it. An example subclass is Blur. +*/ +class SK_API SkMaskFilter : public SkFlattenable { +public: + /** Create a blur maskfilter. + * @param style The SkBlurStyle to use + * @param sigma Standard deviation of the Gaussian blur to apply. Must be > 0. + * @param respectCTM if true the blur's sigma is modified by the CTM. + * @return The new blur maskfilter + */ + static sk_sp MakeBlur(SkBlurStyle style, SkScalar sigma, + bool respectCTM = true); + + static sk_sp Deserialize(const void* data, size_t size, + const SkDeserialProcs* procs = nullptr); + +private: + static void RegisterFlattenables(); + friend class SkFlattenable; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkMatrix.h b/vendor/artifacts/skia/include/core/SkMatrix.h new file mode 100644 index 000000000..50f22ae1c --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkMatrix.h @@ -0,0 +1,1887 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkMatrix_DEFINED +#define SkMatrix_DEFINED + +#include "include/core/SkPoint.h" +#include "include/core/SkPoint3.h" +#include "include/core/SkRect.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkFloatingPoint.h" +#include "include/private/base/SkMacros.h" +#include "include/private/base/SkTo.h" + +#include +#include +#include + +struct SkRSXform; +struct SkSize; + +// Remove when clients are updated to live without this +#define SK_SUPPORT_LEGACY_MATRIX_RECTTORECT + +/** \class SkMatrix + SkMatrix holds a 3x3 matrix for transforming coordinates. This allows mapping + SkPoint and vectors with translation, scaling, skewing, rotation, and + perspective. + + SkMatrix elements are in row major order. + SkMatrix constexpr default constructs to identity. + + SkMatrix includes a hidden variable that classifies the type of matrix to + improve performance. SkMatrix is not thread safe unless getType() is called first. + + example: https://fiddle.skia.org/c/@Matrix_063 +*/ +SK_BEGIN_REQUIRE_DENSE +class SK_API SkMatrix { +public: + + /** Creates an identity SkMatrix: + + | 1 0 0 | + | 0 1 0 | + | 0 0 1 | + */ + constexpr SkMatrix() : SkMatrix(1,0,0, 0,1,0, 0,0,1, kIdentity_Mask | kRectStaysRect_Mask) {} + + /** Sets SkMatrix to scale by (sx, sy). Returned matrix is: + + | sx 0 0 | + | 0 sy 0 | + | 0 0 1 | + + @param sx horizontal scale factor + @param sy vertical scale factor + @return SkMatrix with scale + */ + [[nodiscard]] static SkMatrix Scale(SkScalar sx, SkScalar sy) { + SkMatrix m; + m.setScale(sx, sy); + return m; + } + + /** Sets SkMatrix to translate by (dx, dy). Returned matrix is: + + | 1 0 dx | + | 0 1 dy | + | 0 0 1 | + + @param dx horizontal translation + @param dy vertical translation + @return SkMatrix with translation + */ + [[nodiscard]] static SkMatrix Translate(SkScalar dx, SkScalar dy) { + SkMatrix m; + m.setTranslate(dx, dy); + return m; + } + [[nodiscard]] static SkMatrix Translate(SkVector t) { return Translate(t.x(), t.y()); } + [[nodiscard]] static SkMatrix Translate(SkIVector t) { return Translate(t.x(), t.y()); } + + [[nodiscard]] static SkMatrix ScaleTranslate(float sx, float sy, float tx, float ty); + + /** Sets SkMatrix to rotate by |deg| about a pivot point at (0, 0). + + @param deg rotation angle in degrees (positive rotates clockwise) + @return SkMatrix with rotation + */ + [[nodiscard]] static SkMatrix RotateDeg(SkScalar deg) { + SkMatrix m; + m.setRotate(deg); + return m; + } + [[nodiscard]] static SkMatrix RotateDeg(SkScalar deg, SkPoint pt) { + SkMatrix m; + m.setRotate(deg, pt.x(), pt.y()); + return m; + } + [[nodiscard]] static SkMatrix RotateRad(SkScalar rad) { + return RotateDeg(SkRadiansToDegrees(rad)); + } + + /** Sets SkMatrix to skew by (kx, ky) about pivot point (0, 0). + + @param kx horizontal skew factor + @param ky vertical skew factor + @return SkMatrix with skew + */ + [[nodiscard]] static SkMatrix Skew(SkScalar kx, SkScalar ky) { + SkMatrix m; + m.setSkew(kx, ky); + return m; + } + + /** \enum SkMatrix::ScaleToFit + ScaleToFit describes how SkMatrix is constructed to map one SkRect to another. + ScaleToFit may allow SkMatrix to have unequal horizontal and vertical scaling, + or may restrict SkMatrix to square scaling. If restricted, ScaleToFit specifies + how SkMatrix maps to the side or center of the destination SkRect. + */ + enum ScaleToFit { + kFill_ScaleToFit, //!< scales in x and y to fill destination SkRect + kStart_ScaleToFit, //!< scales and aligns to left and top + kCenter_ScaleToFit, //!< scales and aligns to center + kEnd_ScaleToFit, //!< scales and aligns to right and bottom + }; + + /** Sets SkMatrix to: + + | scaleX skewX transX | + | skewY scaleY transY | + | pers0 pers1 pers2 | + + @param scaleX horizontal scale factor + @param skewX horizontal skew factor + @param transX horizontal translation + @param skewY vertical skew factor + @param scaleY vertical scale factor + @param transY vertical translation + @param pers0 input x-axis perspective factor + @param pers1 input y-axis perspective factor + @param pers2 perspective scale factor + @return SkMatrix constructed from parameters + */ + [[nodiscard]] static SkMatrix MakeAll(SkScalar scaleX, SkScalar skewX, SkScalar transX, + SkScalar skewY, SkScalar scaleY, SkScalar transY, + SkScalar pers0, SkScalar pers1, SkScalar pers2) { + SkMatrix m; + m.setAll(scaleX, skewX, transX, skewY, scaleY, transY, pers0, pers1, pers2); + return m; + } + + /** \enum SkMatrix::TypeMask + Enum of bit fields for mask returned by getType(). + Used to identify the complexity of SkMatrix, to optimize performance. + */ + enum TypeMask { + kIdentity_Mask = 0, //!< identity SkMatrix; all bits clear + kTranslate_Mask = 0x01, //!< translation SkMatrix + kScale_Mask = 0x02, //!< scale SkMatrix + kAffine_Mask = 0x04, //!< skew or rotate SkMatrix + kPerspective_Mask = 0x08, //!< perspective SkMatrix + }; + + /** Returns a bit field describing the transformations the matrix may + perform. The bit field is computed conservatively, so it may include + false positives. For example, when kPerspective_Mask is set, all + other bits are set. + + @return kIdentity_Mask, or combinations of: kTranslate_Mask, kScale_Mask, + kAffine_Mask, kPerspective_Mask + */ + TypeMask getType() const { + if (fTypeMask & kUnknown_Mask) { + fTypeMask = this->computeTypeMask(); + } + // only return the public masks + return (TypeMask)(fTypeMask & 0xF); + } + + /** Returns true if SkMatrix is identity. Identity matrix is: + + | 1 0 0 | + | 0 1 0 | + | 0 0 1 | + + @return true if SkMatrix has no effect + */ + bool isIdentity() const { + return this->getType() == 0; + } + + /** Returns true if SkMatrix at most scales and translates. SkMatrix may be identity, + contain only scale elements, only translate elements, or both. SkMatrix form is: + + | scale-x 0 translate-x | + | 0 scale-y translate-y | + | 0 0 1 | + + @return true if SkMatrix is identity; or scales, translates, or both + */ + bool isScaleTranslate() const { + return !(this->getType() & ~(kScale_Mask | kTranslate_Mask)); + } + + /** Returns true if SkMatrix is identity, or translates. SkMatrix form is: + + | 1 0 translate-x | + | 0 1 translate-y | + | 0 0 1 | + + @return true if SkMatrix is identity, or translates + */ + bool isTranslate() const { return !(this->getType() & ~(kTranslate_Mask)); } + + /** Returns true SkMatrix maps SkRect to another SkRect. If true, SkMatrix is identity, + or scales, or rotates a multiple of 90 degrees, or mirrors on axes. In all + cases, SkMatrix may also have translation. SkMatrix form is either: + + | scale-x 0 translate-x | + | 0 scale-y translate-y | + | 0 0 1 | + + or + + | 0 rotate-x translate-x | + | rotate-y 0 translate-y | + | 0 0 1 | + + for non-zero values of scale-x, scale-y, rotate-x, and rotate-y. + + Also called preservesAxisAlignment(); use the one that provides better inline + documentation. + + @return true if SkMatrix maps one SkRect into another + */ + bool rectStaysRect() const { + if (fTypeMask & kUnknown_Mask) { + fTypeMask = this->computeTypeMask(); + } + return (fTypeMask & kRectStaysRect_Mask) != 0; + } + + /** Returns true SkMatrix maps SkRect to another SkRect. If true, SkMatrix is identity, + or scales, or rotates a multiple of 90 degrees, or mirrors on axes. In all + cases, SkMatrix may also have translation. SkMatrix form is either: + + | scale-x 0 translate-x | + | 0 scale-y translate-y | + | 0 0 1 | + + or + + | 0 rotate-x translate-x | + | rotate-y 0 translate-y | + | 0 0 1 | + + for non-zero values of scale-x, scale-y, rotate-x, and rotate-y. + + Also called rectStaysRect(); use the one that provides better inline + documentation. + + @return true if SkMatrix maps one SkRect into another + */ + bool preservesAxisAlignment() const { return this->rectStaysRect(); } + + /** Returns true if the matrix contains perspective elements. SkMatrix form is: + + | -- -- -- | + | -- -- -- | + | perspective-x perspective-y perspective-scale | + + where perspective-x or perspective-y is non-zero, or perspective-scale is + not one. All other elements may have any value. + + @return true if SkMatrix is in most general form + */ + bool hasPerspective() const { + return SkToBool(this->getPerspectiveTypeMaskOnly() & + kPerspective_Mask); + } + + /** Returns true if SkMatrix contains only translation, rotation, reflection, and + uniform scale. + Returns false if SkMatrix contains different scales, skewing, perspective, or + degenerate forms that collapse to a line or point. + + Describes that the SkMatrix makes rendering with and without the matrix are + visually alike; a transformed circle remains a circle. Mathematically, this is + referred to as similarity of a Euclidean space, or a similarity transformation. + + Preserves right angles, keeping the arms of the angle equal lengths. + + @param tol to be deprecated + @return true if SkMatrix only rotates, uniformly scales, translates + + example: https://fiddle.skia.org/c/@Matrix_isSimilarity + */ + bool isSimilarity(SkScalar tol = SK_ScalarNearlyZero) const; + + /** Returns true if SkMatrix contains only translation, rotation, reflection, and + scale. Scale may differ along rotated axes. + Returns false if SkMatrix skewing, perspective, or degenerate forms that collapse + to a line or point. + + Preserves right angles, but not requiring that the arms of the angle + retain equal lengths. + + @param tol to be deprecated + @return true if SkMatrix only rotates, scales, translates + + example: https://fiddle.skia.org/c/@Matrix_preservesRightAngles + */ + bool preservesRightAngles(SkScalar tol = SK_ScalarNearlyZero) const; + + /** SkMatrix organizes its values in row-major order. These members correspond to + each value in SkMatrix. + */ + static constexpr int kMScaleX = 0; //!< horizontal scale factor + static constexpr int kMSkewX = 1; //!< horizontal skew factor + static constexpr int kMTransX = 2; //!< horizontal translation + static constexpr int kMSkewY = 3; //!< vertical skew factor + static constexpr int kMScaleY = 4; //!< vertical scale factor + static constexpr int kMTransY = 5; //!< vertical translation + static constexpr int kMPersp0 = 6; //!< input x perspective factor + static constexpr int kMPersp1 = 7; //!< input y perspective factor + static constexpr int kMPersp2 = 8; //!< perspective bias + + /** Affine arrays are in column-major order to match the matrix used by + PDF and XPS. + */ + static constexpr int kAScaleX = 0; //!< horizontal scale factor + static constexpr int kASkewY = 1; //!< vertical skew factor + static constexpr int kASkewX = 2; //!< horizontal skew factor + static constexpr int kAScaleY = 3; //!< vertical scale factor + static constexpr int kATransX = 4; //!< horizontal translation + static constexpr int kATransY = 5; //!< vertical translation + + /** Returns one matrix value. Asserts if index is out of range and SK_DEBUG is + defined. + + @param index one of: kMScaleX, kMSkewX, kMTransX, kMSkewY, kMScaleY, kMTransY, + kMPersp0, kMPersp1, kMPersp2 + @return value corresponding to index + */ + SkScalar operator[](int index) const { + SkASSERT((unsigned)index < 9); + return fMat[index]; + } + + /** Returns one matrix value. Asserts if index is out of range and SK_DEBUG is + defined. + + @param index one of: kMScaleX, kMSkewX, kMTransX, kMSkewY, kMScaleY, kMTransY, + kMPersp0, kMPersp1, kMPersp2 + @return value corresponding to index + */ + SkScalar get(int index) const { + SkASSERT((unsigned)index < 9); + return fMat[index]; + } + + /** Returns one matrix value from a particular row/column. Asserts if index is out + of range and SK_DEBUG is defined. + + @param r matrix row to fetch + @param c matrix column to fetch + @return value at the given matrix position + */ + SkScalar rc(int r, int c) const { + SkASSERT(r >= 0 && r <= 2); + SkASSERT(c >= 0 && c <= 2); + return fMat[r*3 + c]; + } + + /** Returns scale factor multiplied by x-axis input, contributing to x-axis output. + With mapPoints(), scales SkPoint along the x-axis. + + @return horizontal scale factor + */ + SkScalar getScaleX() const { return fMat[kMScaleX]; } + + /** Returns scale factor multiplied by y-axis input, contributing to y-axis output. + With mapPoints(), scales SkPoint along the y-axis. + + @return vertical scale factor + */ + SkScalar getScaleY() const { return fMat[kMScaleY]; } + + /** Returns scale factor multiplied by x-axis input, contributing to y-axis output. + With mapPoints(), skews SkPoint along the y-axis. + Skewing both axes can rotate SkPoint. + + @return vertical skew factor + */ + SkScalar getSkewY() const { return fMat[kMSkewY]; } + + /** Returns scale factor multiplied by y-axis input, contributing to x-axis output. + With mapPoints(), skews SkPoint along the x-axis. + Skewing both axes can rotate SkPoint. + + @return horizontal scale factor + */ + SkScalar getSkewX() const { return fMat[kMSkewX]; } + + /** Returns translation contributing to x-axis output. + With mapPoints(), moves SkPoint along the x-axis. + + @return horizontal translation factor + */ + SkScalar getTranslateX() const { return fMat[kMTransX]; } + + /** Returns translation contributing to y-axis output. + With mapPoints(), moves SkPoint along the y-axis. + + @return vertical translation factor + */ + SkScalar getTranslateY() const { return fMat[kMTransY]; } + + /** Returns factor scaling input x-axis relative to input y-axis. + + @return input x-axis perspective factor + */ + SkScalar getPerspX() const { return fMat[kMPersp0]; } + + /** Returns factor scaling input y-axis relative to input x-axis. + + @return input y-axis perspective factor + */ + SkScalar getPerspY() const { return fMat[kMPersp1]; } + + /** Returns writable SkMatrix value. Asserts if index is out of range and SK_DEBUG is + defined. Clears internal cache anticipating that caller will change SkMatrix value. + + Next call to read SkMatrix state may recompute cache; subsequent writes to SkMatrix + value must be followed by dirtyMatrixTypeCache(). + + @param index one of: kMScaleX, kMSkewX, kMTransX, kMSkewY, kMScaleY, kMTransY, + kMPersp0, kMPersp1, kMPersp2 + @return writable value corresponding to index + */ + SkScalar& operator[](int index) { + SkASSERT((unsigned)index < 9); + this->setTypeMask(kUnknown_Mask); + return fMat[index]; + } + + /** Sets SkMatrix value. Asserts if index is out of range and SK_DEBUG is + defined. Safer than operator[]; internal cache is always maintained. + + @param index one of: kMScaleX, kMSkewX, kMTransX, kMSkewY, kMScaleY, kMTransY, + kMPersp0, kMPersp1, kMPersp2 + @param value scalar to store in SkMatrix + */ + SkMatrix& set(int index, SkScalar value) { + SkASSERT((unsigned)index < 9); + fMat[index] = value; + this->setTypeMask(kUnknown_Mask); + return *this; + } + + /** Sets horizontal scale factor. + + @param v horizontal scale factor to store + */ + SkMatrix& setScaleX(SkScalar v) { return this->set(kMScaleX, v); } + + /** Sets vertical scale factor. + + @param v vertical scale factor to store + */ + SkMatrix& setScaleY(SkScalar v) { return this->set(kMScaleY, v); } + + /** Sets vertical skew factor. + + @param v vertical skew factor to store + */ + SkMatrix& setSkewY(SkScalar v) { return this->set(kMSkewY, v); } + + /** Sets horizontal skew factor. + + @param v horizontal skew factor to store + */ + SkMatrix& setSkewX(SkScalar v) { return this->set(kMSkewX, v); } + + /** Sets horizontal translation. + + @param v horizontal translation to store + */ + SkMatrix& setTranslateX(SkScalar v) { return this->set(kMTransX, v); } + + /** Sets vertical translation. + + @param v vertical translation to store + */ + SkMatrix& setTranslateY(SkScalar v) { return this->set(kMTransY, v); } + + /** Sets input x-axis perspective factor, which causes mapPoints() to vary input x-axis values + inversely proportional to input y-axis values. + + @param v perspective factor + */ + SkMatrix& setPerspX(SkScalar v) { return this->set(kMPersp0, v); } + + /** Sets input y-axis perspective factor, which causes mapPoints() to vary input y-axis values + inversely proportional to input x-axis values. + + @param v perspective factor + */ + SkMatrix& setPerspY(SkScalar v) { return this->set(kMPersp1, v); } + + /** Sets all values from parameters. Sets matrix to: + + | scaleX skewX transX | + | skewY scaleY transY | + | persp0 persp1 persp2 | + + @param scaleX horizontal scale factor to store + @param skewX horizontal skew factor to store + @param transX horizontal translation to store + @param skewY vertical skew factor to store + @param scaleY vertical scale factor to store + @param transY vertical translation to store + @param persp0 input x-axis values perspective factor to store + @param persp1 input y-axis values perspective factor to store + @param persp2 perspective scale factor to store + */ + SkMatrix& setAll(SkScalar scaleX, SkScalar skewX, SkScalar transX, + SkScalar skewY, SkScalar scaleY, SkScalar transY, + SkScalar persp0, SkScalar persp1, SkScalar persp2) { + fMat[kMScaleX] = scaleX; + fMat[kMSkewX] = skewX; + fMat[kMTransX] = transX; + fMat[kMSkewY] = skewY; + fMat[kMScaleY] = scaleY; + fMat[kMTransY] = transY; + fMat[kMPersp0] = persp0; + fMat[kMPersp1] = persp1; + fMat[kMPersp2] = persp2; + this->setTypeMask(kUnknown_Mask); + return *this; + } + + /** Copies nine scalar values contained by SkMatrix into buffer, in member value + ascending order: kMScaleX, kMSkewX, kMTransX, kMSkewY, kMScaleY, kMTransY, + kMPersp0, kMPersp1, kMPersp2. + + @param buffer storage for nine scalar values + */ + void get9(SkScalar buffer[9]) const { + memcpy(buffer, fMat, 9 * sizeof(SkScalar)); + } + + /** Sets SkMatrix to nine scalar values in buffer, in member value ascending order: + kMScaleX, kMSkewX, kMTransX, kMSkewY, kMScaleY, kMTransY, kMPersp0, kMPersp1, + kMPersp2. + + Sets matrix to: + + | buffer[0] buffer[1] buffer[2] | + | buffer[3] buffer[4] buffer[5] | + | buffer[6] buffer[7] buffer[8] | + + In the future, set9 followed by get9 may not return the same values. Since SkMatrix + maps non-homogeneous coordinates, scaling all nine values produces an equivalent + transformation, possibly improving precision. + + @param buffer nine scalar values + */ + SkMatrix& set9(const SkScalar buffer[9]); + + /** Sets SkMatrix to identity; which has no effect on mapped SkPoint. Sets SkMatrix to: + + | 1 0 0 | + | 0 1 0 | + | 0 0 1 | + + Also called setIdentity(); use the one that provides better inline + documentation. + */ + SkMatrix& reset(); + + /** Sets SkMatrix to identity; which has no effect on mapped SkPoint. Sets SkMatrix to: + + | 1 0 0 | + | 0 1 0 | + | 0 0 1 | + + Also called reset(); use the one that provides better inline + documentation. + */ + SkMatrix& setIdentity() { return this->reset(); } + + /** Sets SkMatrix to translate by (dx, dy). + + @param dx horizontal translation + @param dy vertical translation + */ + SkMatrix& setTranslate(SkScalar dx, SkScalar dy); + + /** Sets SkMatrix to translate by (v.fX, v.fY). + + @param v vector containing horizontal and vertical translation + */ + SkMatrix& setTranslate(const SkVector& v) { return this->setTranslate(v.fX, v.fY); } + + /** Sets SkMatrix to scale by sx and sy, about a pivot point at (px, py). + The pivot point is unchanged when mapped with SkMatrix. + + @param sx horizontal scale factor + @param sy vertical scale factor + @param px pivot on x-axis + @param py pivot on y-axis + */ + SkMatrix& setScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py); + + /** Sets SkMatrix to scale by sx and sy about at pivot point at (0, 0). + + @param sx horizontal scale factor + @param sy vertical scale factor + */ + SkMatrix& setScale(SkScalar sx, SkScalar sy); + + /** Sets SkMatrix to rotate by degrees about a pivot point at (px, py). + The pivot point is unchanged when mapped with SkMatrix. + + Positive degrees rotates clockwise. + + @param degrees angle of axes relative to upright axes + @param px pivot on x-axis + @param py pivot on y-axis + */ + SkMatrix& setRotate(SkScalar degrees, SkScalar px, SkScalar py); + + /** Sets SkMatrix to rotate by degrees about a pivot point at (0, 0). + Positive degrees rotates clockwise. + + @param degrees angle of axes relative to upright axes + */ + SkMatrix& setRotate(SkScalar degrees); + + /** Sets SkMatrix to rotate by sinValue and cosValue, about a pivot point at (px, py). + The pivot point is unchanged when mapped with SkMatrix. + + Vector (sinValue, cosValue) describes the angle of rotation relative to (0, 1). + Vector length specifies scale. + + @param sinValue rotation vector x-axis component + @param cosValue rotation vector y-axis component + @param px pivot on x-axis + @param py pivot on y-axis + */ + SkMatrix& setSinCos(SkScalar sinValue, SkScalar cosValue, + SkScalar px, SkScalar py); + + /** Sets SkMatrix to rotate by sinValue and cosValue, about a pivot point at (0, 0). + + Vector (sinValue, cosValue) describes the angle of rotation relative to (0, 1). + Vector length specifies scale. + + @param sinValue rotation vector x-axis component + @param cosValue rotation vector y-axis component + */ + SkMatrix& setSinCos(SkScalar sinValue, SkScalar cosValue); + + /** Sets SkMatrix to rotate, scale, and translate using a compressed matrix form. + + Vector (rsxForm.fSSin, rsxForm.fSCos) describes the angle of rotation relative + to (0, 1). Vector length specifies scale. Mapped point is rotated and scaled + by vector, then translated by (rsxForm.fTx, rsxForm.fTy). + + @param rsxForm compressed SkRSXform matrix + @return reference to SkMatrix + + example: https://fiddle.skia.org/c/@Matrix_setRSXform + */ + SkMatrix& setRSXform(const SkRSXform& rsxForm); + + /** Sets SkMatrix to skew by kx and ky, about a pivot point at (px, py). + The pivot point is unchanged when mapped with SkMatrix. + + @param kx horizontal skew factor + @param ky vertical skew factor + @param px pivot on x-axis + @param py pivot on y-axis + */ + SkMatrix& setSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py); + + /** Sets SkMatrix to skew by kx and ky, about a pivot point at (0, 0). + + @param kx horizontal skew factor + @param ky vertical skew factor + */ + SkMatrix& setSkew(SkScalar kx, SkScalar ky); + + /** Sets SkMatrix to SkMatrix a multiplied by SkMatrix b. Either a or b may be this. + + Given: + + | A B C | | J K L | + a = | D E F |, b = | M N O | + | G H I | | P Q R | + + sets SkMatrix to: + + | A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR | + a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR | + | G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR | + + @param a SkMatrix on left side of multiply expression + @param b SkMatrix on right side of multiply expression + */ + SkMatrix& setConcat(const SkMatrix& a, const SkMatrix& b); + + /** Sets SkMatrix to SkMatrix multiplied by SkMatrix constructed from translation (dx, dy). + This can be thought of as moving the point to be mapped before applying SkMatrix. + + Given: + + | A B C | | 1 0 dx | + Matrix = | D E F |, T(dx, dy) = | 0 1 dy | + | G H I | | 0 0 1 | + + sets SkMatrix to: + + | A B C | | 1 0 dx | | A B A*dx+B*dy+C | + Matrix * T(dx, dy) = | D E F | | 0 1 dy | = | D E D*dx+E*dy+F | + | G H I | | 0 0 1 | | G H G*dx+H*dy+I | + + @param dx x-axis translation before applying SkMatrix + @param dy y-axis translation before applying SkMatrix + */ + SkMatrix& preTranslate(SkScalar dx, SkScalar dy); + + /** Sets SkMatrix to SkMatrix multiplied by SkMatrix constructed from scaling by (sx, sy) + about pivot point (px, py). + This can be thought of as scaling about a pivot point before applying SkMatrix. + + Given: + + | A B C | | sx 0 dx | + Matrix = | D E F |, S(sx, sy, px, py) = | 0 sy dy | + | G H I | | 0 0 1 | + + where + + dx = px - sx * px + dy = py - sy * py + + sets SkMatrix to: + + | A B C | | sx 0 dx | | A*sx B*sy A*dx+B*dy+C | + Matrix * S(sx, sy, px, py) = | D E F | | 0 sy dy | = | D*sx E*sy D*dx+E*dy+F | + | G H I | | 0 0 1 | | G*sx H*sy G*dx+H*dy+I | + + @param sx horizontal scale factor + @param sy vertical scale factor + @param px pivot on x-axis + @param py pivot on y-axis + */ + SkMatrix& preScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py); + + /** Sets SkMatrix to SkMatrix multiplied by SkMatrix constructed from scaling by (sx, sy) + about pivot point (0, 0). + This can be thought of as scaling about the origin before applying SkMatrix. + + Given: + + | A B C | | sx 0 0 | + Matrix = | D E F |, S(sx, sy) = | 0 sy 0 | + | G H I | | 0 0 1 | + + sets SkMatrix to: + + | A B C | | sx 0 0 | | A*sx B*sy C | + Matrix * S(sx, sy) = | D E F | | 0 sy 0 | = | D*sx E*sy F | + | G H I | | 0 0 1 | | G*sx H*sy I | + + @param sx horizontal scale factor + @param sy vertical scale factor + */ + SkMatrix& preScale(SkScalar sx, SkScalar sy); + + /** Sets SkMatrix to SkMatrix multiplied by SkMatrix constructed from rotating by degrees + about pivot point (px, py). + This can be thought of as rotating about a pivot point before applying SkMatrix. + + Positive degrees rotates clockwise. + + Given: + + | A B C | | c -s dx | + Matrix = | D E F |, R(degrees, px, py) = | s c dy | + | G H I | | 0 0 1 | + + where + + c = cos(degrees) + s = sin(degrees) + dx = s * py + (1 - c) * px + dy = -s * px + (1 - c) * py + + sets SkMatrix to: + + | A B C | | c -s dx | | Ac+Bs -As+Bc A*dx+B*dy+C | + Matrix * R(degrees, px, py) = | D E F | | s c dy | = | Dc+Es -Ds+Ec D*dx+E*dy+F | + | G H I | | 0 0 1 | | Gc+Hs -Gs+Hc G*dx+H*dy+I | + + @param degrees angle of axes relative to upright axes + @param px pivot on x-axis + @param py pivot on y-axis + */ + SkMatrix& preRotate(SkScalar degrees, SkScalar px, SkScalar py); + + /** Sets SkMatrix to SkMatrix multiplied by SkMatrix constructed from rotating by degrees + about pivot point (0, 0). + This can be thought of as rotating about the origin before applying SkMatrix. + + Positive degrees rotates clockwise. + + Given: + + | A B C | | c -s 0 | + Matrix = | D E F |, R(degrees, px, py) = | s c 0 | + | G H I | | 0 0 1 | + + where + + c = cos(degrees) + s = sin(degrees) + + sets SkMatrix to: + + | A B C | | c -s 0 | | Ac+Bs -As+Bc C | + Matrix * R(degrees, px, py) = | D E F | | s c 0 | = | Dc+Es -Ds+Ec F | + | G H I | | 0 0 1 | | Gc+Hs -Gs+Hc I | + + @param degrees angle of axes relative to upright axes + */ + SkMatrix& preRotate(SkScalar degrees); + + /** Sets SkMatrix to SkMatrix multiplied by SkMatrix constructed from skewing by (kx, ky) + about pivot point (px, py). + This can be thought of as skewing about a pivot point before applying SkMatrix. + + Given: + + | A B C | | 1 kx dx | + Matrix = | D E F |, K(kx, ky, px, py) = | ky 1 dy | + | G H I | | 0 0 1 | + + where + + dx = -kx * py + dy = -ky * px + + sets SkMatrix to: + + | A B C | | 1 kx dx | | A+B*ky A*kx+B A*dx+B*dy+C | + Matrix * K(kx, ky, px, py) = | D E F | | ky 1 dy | = | D+E*ky D*kx+E D*dx+E*dy+F | + | G H I | | 0 0 1 | | G+H*ky G*kx+H G*dx+H*dy+I | + + @param kx horizontal skew factor + @param ky vertical skew factor + @param px pivot on x-axis + @param py pivot on y-axis + */ + SkMatrix& preSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py); + + /** Sets SkMatrix to SkMatrix multiplied by SkMatrix constructed from skewing by (kx, ky) + about pivot point (0, 0). + This can be thought of as skewing about the origin before applying SkMatrix. + + Given: + + | A B C | | 1 kx 0 | + Matrix = | D E F |, K(kx, ky) = | ky 1 0 | + | G H I | | 0 0 1 | + + sets SkMatrix to: + + | A B C | | 1 kx 0 | | A+B*ky A*kx+B C | + Matrix * K(kx, ky) = | D E F | | ky 1 0 | = | D+E*ky D*kx+E F | + | G H I | | 0 0 1 | | G+H*ky G*kx+H I | + + @param kx horizontal skew factor + @param ky vertical skew factor + */ + SkMatrix& preSkew(SkScalar kx, SkScalar ky); + + /** Sets SkMatrix to SkMatrix multiplied by SkMatrix other. + This can be thought of mapping by other before applying SkMatrix. + + Given: + + | A B C | | J K L | + Matrix = | D E F |, other = | M N O | + | G H I | | P Q R | + + sets SkMatrix to: + + | A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR | + Matrix * other = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR | + | G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR | + + @param other SkMatrix on right side of multiply expression + */ + SkMatrix& preConcat(const SkMatrix& other); + + /** Sets SkMatrix to SkMatrix constructed from translation (dx, dy) multiplied by SkMatrix. + This can be thought of as moving the point to be mapped after applying SkMatrix. + + Given: + + | J K L | | 1 0 dx | + Matrix = | M N O |, T(dx, dy) = | 0 1 dy | + | P Q R | | 0 0 1 | + + sets SkMatrix to: + + | 1 0 dx | | J K L | | J+dx*P K+dx*Q L+dx*R | + T(dx, dy) * Matrix = | 0 1 dy | | M N O | = | M+dy*P N+dy*Q O+dy*R | + | 0 0 1 | | P Q R | | P Q R | + + @param dx x-axis translation after applying SkMatrix + @param dy y-axis translation after applying SkMatrix + */ + SkMatrix& postTranslate(SkScalar dx, SkScalar dy); + + /** Sets SkMatrix to SkMatrix constructed from scaling by (sx, sy) about pivot point + (px, py), multiplied by SkMatrix. + This can be thought of as scaling about a pivot point after applying SkMatrix. + + Given: + + | J K L | | sx 0 dx | + Matrix = | M N O |, S(sx, sy, px, py) = | 0 sy dy | + | P Q R | | 0 0 1 | + + where + + dx = px - sx * px + dy = py - sy * py + + sets SkMatrix to: + + | sx 0 dx | | J K L | | sx*J+dx*P sx*K+dx*Q sx*L+dx+R | + S(sx, sy, px, py) * Matrix = | 0 sy dy | | M N O | = | sy*M+dy*P sy*N+dy*Q sy*O+dy*R | + | 0 0 1 | | P Q R | | P Q R | + + @param sx horizontal scale factor + @param sy vertical scale factor + @param px pivot on x-axis + @param py pivot on y-axis + */ + SkMatrix& postScale(SkScalar sx, SkScalar sy, SkScalar px, SkScalar py); + + /** Sets SkMatrix to SkMatrix constructed from scaling by (sx, sy) about pivot point + (0, 0), multiplied by SkMatrix. + This can be thought of as scaling about the origin after applying SkMatrix. + + Given: + + | J K L | | sx 0 0 | + Matrix = | M N O |, S(sx, sy) = | 0 sy 0 | + | P Q R | | 0 0 1 | + + sets SkMatrix to: + + | sx 0 0 | | J K L | | sx*J sx*K sx*L | + S(sx, sy) * Matrix = | 0 sy 0 | | M N O | = | sy*M sy*N sy*O | + | 0 0 1 | | P Q R | | P Q R | + + @param sx horizontal scale factor + @param sy vertical scale factor + */ + SkMatrix& postScale(SkScalar sx, SkScalar sy); + + /** Sets SkMatrix to SkMatrix constructed from rotating by degrees about pivot point + (px, py), multiplied by SkMatrix. + This can be thought of as rotating about a pivot point after applying SkMatrix. + + Positive degrees rotates clockwise. + + Given: + + | J K L | | c -s dx | + Matrix = | M N O |, R(degrees, px, py) = | s c dy | + | P Q R | | 0 0 1 | + + where + + c = cos(degrees) + s = sin(degrees) + dx = s * py + (1 - c) * px + dy = -s * px + (1 - c) * py + + sets SkMatrix to: + + |c -s dx| |J K L| |cJ-sM+dx*P cK-sN+dx*Q cL-sO+dx+R| + R(degrees, px, py) * Matrix = |s c dy| |M N O| = |sJ+cM+dy*P sK+cN+dy*Q sL+cO+dy*R| + |0 0 1| |P Q R| | P Q R| + + @param degrees angle of axes relative to upright axes + @param px pivot on x-axis + @param py pivot on y-axis + */ + SkMatrix& postRotate(SkScalar degrees, SkScalar px, SkScalar py); + + /** Sets SkMatrix to SkMatrix constructed from rotating by degrees about pivot point + (0, 0), multiplied by SkMatrix. + This can be thought of as rotating about the origin after applying SkMatrix. + + Positive degrees rotates clockwise. + + Given: + + | J K L | | c -s 0 | + Matrix = | M N O |, R(degrees, px, py) = | s c 0 | + | P Q R | | 0 0 1 | + + where + + c = cos(degrees) + s = sin(degrees) + + sets SkMatrix to: + + | c -s dx | | J K L | | cJ-sM cK-sN cL-sO | + R(degrees, px, py) * Matrix = | s c dy | | M N O | = | sJ+cM sK+cN sL+cO | + | 0 0 1 | | P Q R | | P Q R | + + @param degrees angle of axes relative to upright axes + */ + SkMatrix& postRotate(SkScalar degrees); + + /** Sets SkMatrix to SkMatrix constructed from skewing by (kx, ky) about pivot point + (px, py), multiplied by SkMatrix. + This can be thought of as skewing about a pivot point after applying SkMatrix. + + Given: + + | J K L | | 1 kx dx | + Matrix = | M N O |, K(kx, ky, px, py) = | ky 1 dy | + | P Q R | | 0 0 1 | + + where + + dx = -kx * py + dy = -ky * px + + sets SkMatrix to: + + | 1 kx dx| |J K L| |J+kx*M+dx*P K+kx*N+dx*Q L+kx*O+dx+R| + K(kx, ky, px, py) * Matrix = |ky 1 dy| |M N O| = |ky*J+M+dy*P ky*K+N+dy*Q ky*L+O+dy*R| + | 0 0 1| |P Q R| | P Q R| + + @param kx horizontal skew factor + @param ky vertical skew factor + @param px pivot on x-axis + @param py pivot on y-axis + */ + SkMatrix& postSkew(SkScalar kx, SkScalar ky, SkScalar px, SkScalar py); + + /** Sets SkMatrix to SkMatrix constructed from skewing by (kx, ky) about pivot point + (0, 0), multiplied by SkMatrix. + This can be thought of as skewing about the origin after applying SkMatrix. + + Given: + + | J K L | | 1 kx 0 | + Matrix = | M N O |, K(kx, ky) = | ky 1 0 | + | P Q R | | 0 0 1 | + + sets SkMatrix to: + + | 1 kx 0 | | J K L | | J+kx*M K+kx*N L+kx*O | + K(kx, ky) * Matrix = | ky 1 0 | | M N O | = | ky*J+M ky*K+N ky*L+O | + | 0 0 1 | | P Q R | | P Q R | + + @param kx horizontal skew factor + @param ky vertical skew factor + */ + SkMatrix& postSkew(SkScalar kx, SkScalar ky); + + /** Sets SkMatrix to SkMatrix other multiplied by SkMatrix. + This can be thought of mapping by other after applying SkMatrix. + + Given: + + | J K L | | A B C | + Matrix = | M N O |, other = | D E F | + | P Q R | | G H I | + + sets SkMatrix to: + + | A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR | + other * Matrix = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR | + | G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR | + + @param other SkMatrix on left side of multiply expression + */ + SkMatrix& postConcat(const SkMatrix& other); + + /** If possible, return a matrix that will transform the src rect to the dst rect. + * If the src is empty, this will return {}. + * If the dst is empty, this will return the zero matrix (degenerate). + */ + static std::optional Rect2Rect(const SkRect& src, const SkRect& dst, + ScaleToFit = kFill_ScaleToFit); + + static SkMatrix RectToRectOrIdentity(const SkRect& src, const SkRect& dst, + ScaleToFit stf = kFill_ScaleToFit) { + return Rect2Rect(src, dst, stf).value_or(SkMatrix::I()); + } + +#ifdef SK_SUPPORT_LEGACY_MATRIX_RECTTORECT + bool setRectToRect(const SkRect& src, const SkRect& dst, ScaleToFit stf) { + if (auto mx = Rect2Rect(src, dst, stf)) { + *this = *mx; + return true; + } + this->reset(); + return false; + } + + static SkMatrix MakeRectToRect(const SkRect& src, const SkRect& dst, ScaleToFit stf) { + if (auto mx = Rect2Rect(src, dst, stf)) { + return *mx; + } + return SkMatrix::I(); + } + + [[nodiscard]] static SkMatrix RectToRect(const SkRect& src, const SkRect& dst, + ScaleToFit mode = kFill_ScaleToFit) { + return MakeRectToRect(src, dst, mode); + } +#endif + + /** Compute a matrix from two polygons, such that if the matrix was applied + * to the src polygon, it would produce the dst polygon. + * + * If the size of the two spans are not equal, or if they are > 4, return {}. + * If the resulting matrix is non-invertible, return {}. + * + * example: https://fiddle.skia.org/c/@Matrix_setPolyToPoly + */ + static std::optional PolyToPoly(SkSpan src, SkSpan dst); + + bool setPolyToPoly(SkSpan src, SkSpan dst) { + if (auto mx = PolyToPoly(src, dst)) { + *this = *mx; + return true; + } + return false; + } + + /* + * If this matrix is invertible, return its inverse, else return {}. + */ + std::optional invert() const; + + // deprecated + [[nodiscard]] bool invert(SkMatrix* inverse) const { + if (auto inv = this->invert()) { + if (inverse) { + *inverse = *inv; + } + return true; + } + return false; + } + + /** Fills affine with identity values in column major order. + Sets affine to: + + | 1 0 0 | + | 0 1 0 | + + Affine 3 by 2 matrices in column major order are used by OpenGL and XPS. + + @param affine storage for 3 by 2 affine matrix + + example: https://fiddle.skia.org/c/@Matrix_SetAffineIdentity + */ + static void SetAffineIdentity(SkScalar affine[6]); + + /** Fills affine in column major order. Sets affine to: + + | scale-x skew-x translate-x | + | skew-y scale-y translate-y | + + If SkMatrix contains perspective, returns false and leaves affine unchanged. + + @param affine storage for 3 by 2 affine matrix; may be nullptr + @return true if SkMatrix does not contain perspective + */ + [[nodiscard]] bool asAffine(SkScalar affine[6]) const; + + /** Sets SkMatrix to affine values, passed in column major order. Given affine, + column, then row, as: + + | scale-x skew-x translate-x | + | skew-y scale-y translate-y | + + SkMatrix is set, row, then column, to: + + | scale-x skew-x translate-x | + | skew-y scale-y translate-y | + | 0 0 1 | + + @param affine 3 by 2 affine matrix + */ + SkMatrix& setAffine(const SkScalar affine[6]); + + /** + * A matrix is categorized as 'perspective' if the bottom row is not [0, 0, 1]. + * However, for most uses (e.g. mapPoints) a bottom row of [0, 0, X] behaves like a + * non-perspective matrix, though it will be categorized as perspective. Calling + * normalizePerspective() will change the matrix such that, if its bottom row was [0, 0, X], + * it will be changed to [0, 0, 1] by scaling the rest of the matrix by 1/X. + * + * | A B C | | A/X B/X C/X | + * | D E F | -> | D/X E/X F/X | for X != 0 + * | 0 0 X | | 0 0 1 | + */ + void normalizePerspective() { + if (fMat[8] != 1) { + this->doNormalizePerspective(); + } + } + + /** Maps src SkPoint array of length count to dst SkPoint array of equal or greater + length. SkPoint are mapped by multiplying each SkPoint by SkMatrix. Given: + + | A B C | | x | + Matrix = | D E F |, pt = | y | + | G H I | | 1 | + + where + + for (i = 0; i < count; ++i) { + x = src[i].fX + y = src[i].fY + } + + each dst SkPoint is computed as: + + |A B C| |x| Ax+By+C Dx+Ey+F + Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- + |G H I| |1| Gx+Hy+I Gx+Hy+I + + src and dst may point to the same storage. + + @param dst span where the transformed points are written + @param src spen where the points are read from + + Note: min(dst.size(), src.size()) is the number of points that will be written to dst. + + example: https://fiddle.skia.org/c/@Matrix_mapPoints + */ + void mapPoints(SkSpan dst, SkSpan src) const; + + /** Maps pts SkPoint array of length count in place. SkPoint are mapped by multiplying + each SkPoint by SkMatrix. Given: + + | A B C | | x | + Matrix = | D E F |, pt = | y | + | G H I | | 1 | + + where + + for (i = 0; i < count; ++i) { + x = pts[i].fX + y = pts[i].fY + } + + each resulting pts SkPoint is computed as: + + |A B C| |x| Ax+By+C Dx+Ey+F + Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- + |G H I| |1| Gx+Hy+I Gx+Hy+I + + @param pts span of points to be transformed in-place + */ + void mapPoints(SkSpan pts) const { + this->mapPoints(pts, pts); + } + + /** Maps src SkPoint3 array of length count to dst SkPoint3 array, which must of length count or + greater. SkPoint3 array is mapped by multiplying each SkPoint3 by SkMatrix. Given: + + | A B C | | x | + Matrix = | D E F |, src = | y | + | G H I | | z | + + each resulting dst SkPoint is computed as: + + |A B C| |x| + Matrix * src = |D E F| |y| = |Ax+By+Cz Dx+Ey+Fz Gx+Hy+Iz| + |G H I| |z| + + @param dst span where the transformed points are written + @param src spen where the points are read from + + Note: min(dst.size(), src.size()) is the number of points that will be written to dst. + + example: https://fiddle.skia.org/c/@Matrix_mapHomogeneousPoints + */ + void mapHomogeneousPoints(SkSpan dst, SkSpan src) const; + + SkPoint3 mapHomogeneousPoint(SkPoint3 src) const { + SkPoint3 dst; + this->mapHomogeneousPoints({&dst, 1}, {&src, 1}); + return dst; + } + + /** + * Returns homogeneous points, starting with 2D src points (with implied w = 1). + * + * Note: min(dst.size(), src.size()) is the number of points that will be written to dst. + + */ + void mapPointsToHomogeneous(SkSpan dst, SkSpan src) const; + + SkPoint3 mapPointToHomogeneous(SkPoint src) const { + SkPoint3 dst; + this->mapPointsToHomogeneous({&dst, 1}, {&src, 1}); + return dst; + } + + /** Returns SkPoint pt multiplied by SkMatrix. Given: + + | A B C | | x | + Matrix = | D E F |, pt = | y | + | G H I | | 1 | + + result is computed as: + + |A B C| |x| Ax+By+C Dx+Ey+F + Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- + |G H I| |1| Gx+Hy+I Gx+Hy+I + + @param p SkPoint to map + @return mapped SkPoint + */ + SkPoint mapPoint(SkPoint p) const { + if (this->hasPerspective()) { + return this->mapPointPerspective(p); + } else { + return this->mapPointAffine(p); + } + } + + /* + * If the caller knows the matrix has no perspective, this will inline the + * math, making it more efficient than calling mapPoint(). + */ + SkPoint mapPointAffine(SkPoint p) const { + SkASSERT(!this->hasPerspective()); + return { + (p.fX * fMat[0] + p.fY * fMat[1]) + fMat[2], + (p.fX * fMat[3] + p.fY * fMat[4]) + fMat[5], + }; + } + + /** Returns (0, 0) multiplied by SkMatrix. Given: + + | A B C | | 0 | + Matrix = | D E F |, pt = | 0 | + | G H I | | 1 | + + result is computed as: + + |A B C| |0| C F + Matrix * pt = |D E F| |0| = |C F I| = - , - + |G H I| |1| I I + + @return mapped (0, 0) + */ + SkPoint mapOrigin() const { + SkScalar x = this->getTranslateX(), + y = this->getTranslateY(); + if (this->hasPerspective()) { + SkScalar w = fMat[kMPersp2]; + if ((bool)w) { w = 1 / w; } + x *= w; + y *= w; + } + return {x, y}; + } + + /** Maps src vector array of length count to vector SkPoint array of equal or greater + length. Vectors are mapped by multiplying each vector by SkMatrix, treating + SkMatrix translation as zero. Given: + + | A B 0 | | x | + Matrix = | D E 0 |, src = | y | + | G H I | | 1 | + + where + + for (i = 0; i < count; ++i) { + x = src[i].fX + y = src[i].fY + } + + each dst vector is computed as: + + |A B 0| |x| Ax+By Dx+Ey + Matrix * src = |D E 0| |y| = |Ax+By Dx+Ey Gx+Hy+I| = ------- , ------- + |G H I| |1| Gx+Hy+I Gx+Hy+I + + src and dst may point to the same storage. + + @param dst span where the transformed vectors are written + @param src spen where the vectors are read from + + Note: min(dst.size(), src.size()) is the number of points that will be written to dst. + + example: https://fiddle.skia.org/c/@Matrix_mapVectors + */ + void mapVectors(SkSpan dst, SkSpan src) const; + + /** Maps vecs vector array of length count in place, multiplying each vector by + SkMatrix, treating SkMatrix translation as zero. Given: + + | A B 0 | | x | + Matrix = | D E 0 |, vec = | y | + | G H I | | 1 | + + where + + for (i = 0; i < count; ++i) { + x = vecs[i].fX + y = vecs[i].fY + } + + each result vector is computed as: + + |A B 0| |x| Ax+By Dx+Ey + Matrix * vec = |D E 0| |y| = |Ax+By Dx+Ey Gx+Hy+I| = ------- , ------- + |G H I| |1| Gx+Hy+I Gx+Hy+I + + @param vecs vectors to transform, and storage for mapped vectors + */ + void mapVectors(SkSpan vecs) const { + this->mapVectors(vecs, vecs); + } + + /** Returns vector (dx, dy) multiplied by SkMatrix, treating SkMatrix translation as zero. + Given: + + | A B 0 | | dx | + Matrix = | D E 0 |, vec = | dy | + | G H I | | 1 | + + each result vector is computed as: + + |A B 0| |dx| A*dx+B*dy D*dx+E*dy + Matrix * vec = |D E 0| |dy| = |A*dx+B*dy D*dx+E*dy G*dx+H*dy+I| = ----------- , ----------- + |G H I| | 1| G*dx+H*dy+I G*dx+*dHy+I + + @param dx x-axis value of vector to map + @param dy y-axis value of vector to map + @return mapped vector + */ + SkVector mapVector(SkVector vec) const { + this->mapVectors({&vec, 1}); + return vec; + } + SkVector mapVector(SkScalar dx, SkScalar dy) const { + return this->mapVector({dx, dy}); + } + + /** Sets dst to bounds of src corners mapped by SkMatrix. + Returns true if mapped corners are dst corners. + + Returned value is the same as calling rectStaysRect(). + + @param dst storage for bounds of mapped SkPoint + @param src SkRect to map + @param pc whether to apply perspective clipping + @return true if dst is equivalent to mapped src + + example: https://fiddle.skia.org/c/@Matrix_mapRect + */ + bool mapRect(SkRect* dst, const SkRect& src) const; + + /** Sets rect to bounds of rect corners mapped by SkMatrix. + Returns true if mapped corners are computed rect corners. + + Returned value is the same as calling rectStaysRect(). + + @param rect rectangle to map, and storage for bounds of mapped corners + @param pc whether to apply perspective clipping + @return true if result is equivalent to mapped rect + */ + bool mapRect(SkRect* rect) const { + return this->mapRect(rect, *rect); + } + + /** Returns bounds of src corners mapped by SkMatrix. + + @param src rectangle to map + @return mapped bounds + */ + SkRect mapRect(const SkRect& src) const { + SkRect dst; + (void)this->mapRect(&dst, src); + return dst; + } + + /** Maps four corners of rect to dst. SkPoint are mapped by multiplying each + rect corner by SkMatrix. rect corner is processed in this order: + (rect.fLeft, rect.fTop), (rect.fRight, rect.fTop), (rect.fRight, rect.fBottom), + (rect.fLeft, rect.fBottom). + + rect may be empty: rect.fLeft may be greater than or equal to rect.fRight; + rect.fTop may be greater than or equal to rect.fBottom. + + Given: + + | A B C | | x | + Matrix = | D E F |, pt = | y | + | G H I | | 1 | + + where pt is initialized from each of (rect.fLeft, rect.fTop), + (rect.fRight, rect.fTop), (rect.fRight, rect.fBottom), (rect.fLeft, rect.fBottom), + each dst SkPoint is computed as: + + |A B C| |x| Ax+By+C Dx+Ey+F + Matrix * pt = |D E F| |y| = |Ax+By+C Dx+Ey+F Gx+Hy+I| = ------- , ------- + |G H I| |1| Gx+Hy+I Gx+Hy+I + + @param dst storage for mapped corner SkPoint + @param rect SkRect to map + + Note: this does not perform perspective clipping (as that might result in more than + 4 points, so results are suspect if the matrix contains perspective. + */ + void mapRectToQuad(SkPoint dst[4], const SkRect& rect) const { + // This could potentially be faster if we only transformed each x and y of the rect once. + this->mapPoints({dst, 4}, rect.toQuad()); + } + + /** Sets dst to bounds of src corners mapped by SkMatrix. If matrix contains + elements other than scale or translate: asserts if SK_DEBUG is defined; + otherwise, results are undefined. + + @param dst storage for bounds of mapped SkPoint + @param src SkRect to map + + example: https://fiddle.skia.org/c/@Matrix_mapRectScaleTranslate + */ + void mapRectScaleTranslate(SkRect* dst, const SkRect& src) const; + + /** Returns geometric mean radius of ellipse formed by constructing circle of + size radius, and mapping constructed circle with SkMatrix. The result squared is + equal to the major axis length times the minor axis length. + Result is not meaningful if SkMatrix contains perspective elements. + + @param radius circle size to map + @return average mapped radius + + example: https://fiddle.skia.org/c/@Matrix_mapRadius + */ + SkScalar mapRadius(SkScalar radius) const; + + /** Compares a and b; returns true if a and b are numerically equal. Returns true + even if sign of zero values are different. Returns false if either SkMatrix + contains NaN, even if the other SkMatrix also contains NaN. + + @param a SkMatrix to compare + @param b SkMatrix to compare + @return true if SkMatrix a and SkMatrix b are numerically equal + */ + friend SK_API bool operator==(const SkMatrix& a, const SkMatrix& b); + + /** Compares a and b; returns true if a and b are not numerically equal. Returns false + even if sign of zero values are different. Returns true if either SkMatrix + contains NaN, even if the other SkMatrix also contains NaN. + + @param a SkMatrix to compare + @param b SkMatrix to compare + @return true if SkMatrix a and SkMatrix b are numerically not equal + */ + friend SK_API bool operator!=(const SkMatrix& a, const SkMatrix& b) { + return !(a == b); + } + + /** Writes text representation of SkMatrix to standard output. Floating point values + are written with limited precision; it may not be possible to reconstruct + original SkMatrix from output. + + example: https://fiddle.skia.org/c/@Matrix_dump + */ + void dump() const; + + /** Returns the minimum scaling factor of SkMatrix by decomposing the scaling and + skewing elements. + Returns -1 if scale factor overflows or SkMatrix contains perspective. + + @return minimum scale factor + + example: https://fiddle.skia.org/c/@Matrix_getMinScale + */ + SkScalar getMinScale() const; + + /** Returns the maximum scaling factor of SkMatrix by decomposing the scaling and + skewing elements. + Returns -1 if scale factor overflows or SkMatrix contains perspective. + + @return maximum scale factor + + example: https://fiddle.skia.org/c/@Matrix_getMaxScale + */ + SkScalar getMaxScale() const; + + /** Sets scaleFactors[0] to the minimum scaling factor, and scaleFactors[1] to the + maximum scaling factor. Scaling factors are computed by decomposing + the SkMatrix scaling and skewing elements. + + Returns true if scaleFactors are found; otherwise, returns false and sets + scaleFactors to undefined values. + + @param scaleFactors storage for minimum and maximum scale factors + @return true if scale factors were computed correctly + */ + [[nodiscard]] bool getMinMaxScales(SkScalar scaleFactors[2]) const; + + /** Decomposes SkMatrix into scale components and whatever remains. Returns false if + SkMatrix could not be decomposed. + + Sets scale to portion of SkMatrix that scale axes. Sets remaining to SkMatrix + with scaling factored out. remaining may be passed as nullptr + to determine if SkMatrix can be decomposed without computing remainder. + + Returns true if scale components are found. scale and remaining are + unchanged if SkMatrix contains perspective; scale factors are not finite, or + are nearly zero. + + On success: Matrix = Remaining * scale. + + @param scale axes scaling factors; may be nullptr + @param remaining SkMatrix without scaling; may be nullptr + @return true if scale can be computed + + example: https://fiddle.skia.org/c/@Matrix_decomposeScale + */ + bool decomposeScale(SkSize* scale, SkMatrix* remaining = nullptr) const; + + /** Returns reference to const identity SkMatrix. Returned SkMatrix is set to: + + | 1 0 0 | + | 0 1 0 | + | 0 0 1 | + + @return const identity SkMatrix + + example: https://fiddle.skia.org/c/@Matrix_I + */ + static const SkMatrix& I(); + + /** Returns reference to a const SkMatrix with invalid values. Returned SkMatrix is set + to: + + | SK_ScalarMax SK_ScalarMax SK_ScalarMax | + | SK_ScalarMax SK_ScalarMax SK_ScalarMax | + | SK_ScalarMax SK_ScalarMax SK_ScalarMax | + + @return const invalid SkMatrix + + example: https://fiddle.skia.org/c/@Matrix_InvalidMatrix + */ + static const SkMatrix& InvalidMatrix(); + + /** Returns SkMatrix a multiplied by SkMatrix b. + + Given: + + | A B C | | J K L | + a = | D E F |, b = | M N O | + | G H I | | P Q R | + + sets SkMatrix to: + + | A B C | | J K L | | AJ+BM+CP AK+BN+CQ AL+BO+CR | + a * b = | D E F | * | M N O | = | DJ+EM+FP DK+EN+FQ DL+EO+FR | + | G H I | | P Q R | | GJ+HM+IP GK+HN+IQ GL+HO+IR | + + @param a SkMatrix on left side of multiply expression + @param b SkMatrix on right side of multiply expression + @return SkMatrix computed from a times b + */ + static SkMatrix Concat(const SkMatrix& a, const SkMatrix& b) { + SkMatrix result; + result.setConcat(a, b); + return result; + } + + friend SkMatrix operator*(const SkMatrix& a, const SkMatrix& b) { + return Concat(a, b); + } + + /** Sets internal cache to unknown state. Use to force update after repeated + modifications to SkMatrix element reference returned by operator[](int index). + */ + void dirtyMatrixTypeCache() { + this->setTypeMask(kUnknown_Mask); + } + + /** Initializes SkMatrix with scale and translate elements. + + | sx 0 tx | + | 0 sy ty | + | 0 0 1 | + + @param sx horizontal scale factor to store + @param sy vertical scale factor to store + @param tx horizontal translation to store + @param ty vertical translation to store + */ + void setScaleTranslate(SkScalar sx, SkScalar sy, SkScalar tx, SkScalar ty) { + *this = SkMatrix::ScaleTranslate(sx, sy, tx, ty); + } + + /** Returns true if all elements of the matrix are finite. Returns false if any + element is infinity, or NaN. + + @return true if matrix has only finite elements + */ + bool isFinite() const { return SkIsFinite(fMat, 9); } + +private: + /** Set if the matrix will map a rectangle to another rectangle. This + can be true if the matrix is scale-only, or rotates a multiple of + 90 degrees. + + This bit will be set on identity matrices + */ + static constexpr int kRectStaysRect_Mask = 0x10; + + /** Set if the perspective bit is valid even though the rest of + the matrix is Unknown. + */ + static constexpr int kOnlyPerspectiveValid_Mask = 0x40; + + static constexpr int kUnknown_Mask = 0x80; + + static constexpr int kORableMasks = kTranslate_Mask | + kScale_Mask | + kAffine_Mask | + kPerspective_Mask; + + static constexpr int kAllMasks = kTranslate_Mask | + kScale_Mask | + kAffine_Mask | + kPerspective_Mask | + kRectStaysRect_Mask; + + SkScalar fMat[9]; + mutable int32_t fTypeMask; + + constexpr SkMatrix(SkScalar sx, SkScalar kx, SkScalar tx, + SkScalar ky, SkScalar sy, SkScalar ty, + SkScalar p0, SkScalar p1, SkScalar p2, int typeMask) + : fMat{sx, kx, tx, + ky, sy, ty, + p0, p1, p2} + , fTypeMask(typeMask) {} + + static void ComputeInv(SkScalar dst[9], const SkScalar src[9], double invDet, bool isPersp); + + uint8_t computeTypeMask() const; + uint8_t computePerspectiveTypeMask() const; + + void setTypeMask(int mask) { + // allow kUnknown or a valid mask + SkASSERT(kUnknown_Mask == mask || (mask & kAllMasks) == mask || + ((kUnknown_Mask | kOnlyPerspectiveValid_Mask) & mask) + == (kUnknown_Mask | kOnlyPerspectiveValid_Mask)); + fTypeMask = mask; + } + + void orTypeMask(int mask) { + SkASSERT((mask & kORableMasks) == mask); + fTypeMask |= mask; + } + + void clearTypeMask(int mask) { + // only allow a valid mask + SkASSERT((mask & kAllMasks) == mask); + fTypeMask &= ~mask; + } + + TypeMask getPerspectiveTypeMaskOnly() const { + if ((fTypeMask & kUnknown_Mask) && + !(fTypeMask & kOnlyPerspectiveValid_Mask)) { + fTypeMask = this->computePerspectiveTypeMask(); + } + return (TypeMask)(fTypeMask & 0xF); + } + + /** Returns true if we already know that the matrix is identity; + false otherwise. + */ + bool isTriviallyIdentity() const { + if (fTypeMask & kUnknown_Mask) { + return false; + } + return ((fTypeMask & 0xF) == 0); + } + + inline void updateTranslateMask() { + if ((fMat[kMTransX] != 0) | (fMat[kMTransY] != 0)) { + fTypeMask |= kTranslate_Mask; + } else { + fTypeMask &= ~kTranslate_Mask; + } + } + + /* + * If the caller knows the matrix perspective, this dos the extra work to + * correctly compute the mapping. mapPoint() calls this, but only after + * checking if the matrix includes perspective. + */ + SkPoint mapPointPerspective(SkPoint pt) const; + + typedef void (*MapPtsProc)(const SkMatrix& mat, SkPoint dst[], + const SkPoint src[], int count); + + static MapPtsProc GetMapPtsProc(TypeMask mask) { + SkASSERT((mask & ~kAllMasks) == 0); + return gMapPtsProcs[mask & kAllMasks]; + } + + MapPtsProc getMapPtsProc() const { + return GetMapPtsProc(this->getType()); + } + + static bool Poly2Proc(const SkPoint[], SkMatrix*); + static bool Poly3Proc(const SkPoint[], SkMatrix*); + static bool Poly4Proc(const SkPoint[], SkMatrix*); + + static void Identity_pts(const SkMatrix&, SkPoint[], const SkPoint[], int); + static void Trans_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], int); + static void Scale_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], int); + static void ScaleTrans_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], + int count); + static void Persp_pts(const SkMatrix&, SkPoint dst[], const SkPoint[], int); + + static void Affine_vpts(const SkMatrix&, SkPoint dst[], const SkPoint[], int); + + static const MapPtsProc gMapPtsProcs[]; + + // return the number of bytes written, whether or not buffer is null + size_t writeToMemory(void* buffer) const; + /** + * Reads data from the buffer parameter + * + * @param buffer Memory to read from + * @param length Amount of memory available in the buffer + * @return number of bytes read (must be a multiple of 4) or + * 0 if there was not enough memory available + */ + size_t readFromMemory(const void* buffer, size_t length); + + // legacy method -- still needed? why not just postScale(1/divx, ...)? + bool postIDiv(int divx, int divy); + void doNormalizePerspective(); + + friend class SkPerspIter; + friend class SkMatrixPriv; + friend class SerializationTest; +}; +SK_END_REQUIRE_DENSE + +#endif diff --git a/vendor/artifacts/skia/include/core/SkMesh.h b/vendor/artifacts/skia/include/core/SkMesh.h new file mode 100644 index 000000000..6eccc937f --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkMesh.h @@ -0,0 +1,429 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkMesh_DEFINED +#define SkMesh_DEFINED + +#include "include/core/SkData.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" +#include "include/core/SkString.h" +#include "include/effects/SkRuntimeEffect.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkTArray.h" + +#include +#include +#include +#include +#include +#include + +class GrDirectContext; +class SkColorSpace; +enum SkAlphaType : int; + +namespace SkSL { struct Program; } + +/** + * A specification for custom meshes. Specifies the vertex buffer attributes and stride, the + * vertex program that produces a user-defined set of varyings, and a fragment program that ingests + * the interpolated varyings and produces local coordinates for shading and optionally a color. + * + * The varyings must include a float2 named "position". If the passed varyings does not + * contain such a varying then one is implicitly added to the final specification and the SkSL + * Varyings struct described below. It is an error to have a varying named "position" that has a + * type other than float2. + * + * The provided attributes and varyings are used to create Attributes and Varyings structs in SkSL + * that are used by the shaders. Each attribute from the Attribute span becomes a member of the + * SkSL Attributes struct and likewise for the varyings. + * + * The signature of the vertex program must be: + * Varyings main(const Attributes). + * + * The signature of the fragment program must be either: + * float2 main(const Varyings) + * or + * float2 main(const Varyings, out (half4|float4) color) + * + * where the return value is the local coordinates that will be used to access SkShader. If the + * color variant is used, the returned color will be blended with SkPaint's SkShader (or SkPaint + * color in absence of a SkShader) using the SkBlender passed to SkCanvas drawMesh(). To use + * interpolated local space positions as the shader coordinates, equivalent to how SkPaths are + * shaded, return the position field from the Varying struct as the coordinates. + * + * The vertex and fragment programs may both contain uniforms. Uniforms with the same name are + * assumed to be shared between stages. It is an error to specify uniforms in the vertex and + * fragment program with the same name but different types, dimensionality, or layouts. + */ +class SK_API SkMeshSpecification : public SkNVRefCnt { +public: + /** These values are enforced when creating a specification. */ + static constexpr size_t kMaxStride = 1024; + static constexpr size_t kMaxAttributes = 8; + static constexpr size_t kStrideAlignment = 4; + static constexpr size_t kOffsetAlignment = 4; + static constexpr size_t kMaxVaryings = 6; + + struct Attribute { + enum class Type : uint32_t { // CPU representation Shader Type + kFloat, // float float + kFloat2, // two floats float2 + kFloat3, // three floats float3 + kFloat4, // four floats float4 + kUByte4_unorm, // four bytes half4 + + kLast = kUByte4_unorm + }; + Type type; + size_t offset; + SkString name; + }; + + struct Varying { + enum class Type : uint32_t { + kFloat, // "float" + kFloat2, // "float2" + kFloat3, // "float3" + kFloat4, // "float4" + kHalf, // "half" + kHalf2, // "half2" + kHalf3, // "half3" + kHalf4, // "half4" + + kLast = kHalf4 + }; + Type type; + SkString name; + }; + + using Uniform = SkRuntimeEffect::Uniform; + using Child = SkRuntimeEffect::Child; + + ~SkMeshSpecification(); + + struct Result { + sk_sp specification; + SkString error; + }; + + /** + * If successful the return is a specification and an empty error string. Otherwise, it is a + * null specification a non-empty error string. + * + * @param attributes The vertex attributes that will be consumed by 'vs'. Attributes need + * not be tightly packed but attribute offsets must be aligned to + * kOffsetAlignment and offset + size may not be greater than + * 'vertexStride'. At least one attribute is required. + * @param vertexStride The offset between successive attribute values. This must be aligned to + * kStrideAlignment. + * @param varyings The varyings that will be written by 'vs' and read by 'fs'. This may + * be empty. + * @param vs The vertex shader code that computes a vertex position and the varyings + * from the attributes. + * @param fs The fragment code that computes a local coordinate and optionally a + * color from the varyings. The local coordinate is used to sample + * SkShader. + * @param cs The colorspace of the color produced by 'fs'. Ignored if 'fs's main() + * function does not have a color out param. + * @param at The alpha type of the color produced by 'fs'. Ignored if 'fs's main() + * function does not have a color out param. Cannot be kUnknown. + */ + static Result Make(SkSpan attributes, + size_t vertexStride, + SkSpan varyings, + const SkString& vs, + const SkString& fs); + static Result Make(SkSpan attributes, + size_t vertexStride, + SkSpan varyings, + const SkString& vs, + const SkString& fs, + sk_sp cs); + static Result Make(SkSpan attributes, + size_t vertexStride, + SkSpan varyings, + const SkString& vs, + const SkString& fs, + sk_sp cs, + SkAlphaType at); + + SkSpan attributes() const { return SkSpan(fAttributes); } + + /** + * Combined size of all 'uniform' variables. When creating a SkMesh with this specification + * provide an SkData of this size, containing values for all of those variables. Use uniforms() + * to get the offset of each uniform within the SkData. + */ + size_t uniformSize() const; + + /** + * Provides info about individual uniforms including the offset into an SkData where each + * uniform value should be placed. + */ + SkSpan uniforms() const { return SkSpan(fUniforms); } + + /** Provides basic info about individual children: names, indices and runtime effect type. */ + SkSpan children() const { return SkSpan(fChildren); } + + /** Returns a pointer to the named child's description, or nullptr if not found. */ + const Child* findChild(std::string_view name) const; + + /** Returns a pointer to the named uniform variable's description, or nullptr if not found. */ + const Uniform* findUniform(std::string_view name) const; + + /** Returns a pointer to the named attribute, or nullptr if not found. */ + const Attribute* findAttribute(std::string_view name) const; + + /** Returns a pointer to the named varying, or nullptr if not found. */ + const Varying* findVarying(std::string_view name) const; + + size_t stride() const { return fStride; } + + SkColorSpace* colorSpace() const { return fColorSpace.get(); } + +private: + friend struct SkMeshSpecificationPriv; + + enum class ColorType { + kNone, + kHalf4, + kFloat4, + }; + + static Result MakeFromSourceWithStructs(SkSpan attributes, + size_t stride, + SkSpan varyings, + const SkString& vs, + const SkString& fs, + sk_sp cs, + SkAlphaType at); + + SkMeshSpecification(SkSpan, + size_t, + SkSpan, + int passthroughLocalCoordsVaryingIndex, + uint32_t deadVaryingMask, + std::vector uniforms, + std::vector children, + std::unique_ptr, + std::unique_ptr, + ColorType, + sk_sp, + SkAlphaType); + + SkMeshSpecification(const SkMeshSpecification&) = delete; + SkMeshSpecification(SkMeshSpecification&&) = delete; + + SkMeshSpecification& operator=(const SkMeshSpecification&) = delete; + SkMeshSpecification& operator=(SkMeshSpecification&&) = delete; + + const std::vector fAttributes; + const std::vector fVaryings; + const std::vector fUniforms; + const std::vector fChildren; + const std::unique_ptr fVS; + const std::unique_ptr fFS; + const size_t fStride; + uint32_t fHash; + const int fPassthroughLocalCoordsVaryingIndex; + const uint32_t fDeadVaryingMask; + const ColorType fColorType; + const sk_sp fColorSpace; + const SkAlphaType fAlphaType; +}; + +/** + * A vertex buffer, a topology, optionally an index buffer, and a compatible SkMeshSpecification. + * + * The data in the vertex buffer is expected to contain the attributes described by the spec + * for vertexCount vertices, beginning at vertexOffset. vertexOffset must be aligned to the + * SkMeshSpecification's vertex stride. The size of the buffer must be at least vertexOffset + + * spec->stride()*vertexCount (even if vertex attributes contains pad at the end of the stride). If + * the specified bounds do not contain all the points output by the spec's vertex program when + * applied to the vertices in the custom mesh, then the result is undefined. + * + * MakeIndexed may be used to create an indexed mesh. indexCount indices are read from the index + * buffer at the specified offset, which must be aligned to 2. The indices are always unsigned + * 16-bit integers. The index count must be at least 3. + * + * If Make() is used, the implicit index sequence is 0, 1, 2, 3, ... and vertexCount must be at + * least 3. + * + * Both Make() and MakeIndexed() take a SkData with the uniform values. See + * SkMeshSpecification::uniformSize() and SkMeshSpecification::uniforms() for sizing and packing + * uniforms into the SkData. + */ +class SK_API SkMesh { +public: + class IndexBuffer : public SkRefCnt { + public: + virtual size_t size() const = 0; + + /** + * Modifies the data in the IndexBuffer by copying size bytes from data into the buffer + * at offset. Fails if offset + size > this->size() or if either offset or size is not + * aligned to 4 bytes. The GrDirectContext* must match that used to create the buffer. We + * take it as a parameter to emphasize that the context must be used to update the data and + * thus the context must be valid for the current thread. + */ + bool update(GrDirectContext*, const void* data, size_t offset, size_t size); + + private: + virtual bool onUpdate(GrDirectContext*, const void* data, size_t offset, size_t size) = 0; + }; + + class VertexBuffer : public SkRefCnt { + public: + virtual size_t size() const = 0; + + /** + * Modifies the data in the IndexBuffer by copying size bytes from data into the buffer + * at offset. Fails if offset + size > this->size() or if either offset or size is not + * aligned to 4 bytes. The GrDirectContext* must match that used to create the buffer. We + * take it as a parameter to emphasize that the context must be used to update the data and + * thus the context must be valid for the current thread. + */ + bool update(GrDirectContext*, const void* data, size_t offset, size_t size); + + private: + virtual bool onUpdate(GrDirectContext*, const void* data, size_t offset, size_t size) = 0; + }; + + SkMesh(); + ~SkMesh(); + + SkMesh(const SkMesh&); + SkMesh(SkMesh&&); + + SkMesh& operator=(const SkMesh&); + SkMesh& operator=(SkMesh&&); + + enum class Mode { kTriangles, kTriangleStrip }; + + struct Result; + + using ChildPtr = SkRuntimeEffect::ChildPtr; + + /** + * Creates a non-indexed SkMesh. The returned SkMesh can be tested for validity using + * SkMesh::isValid(). An invalid mesh simply fails to draws if passed to SkCanvas::drawMesh(). + * If the mesh is invalid the returned string give contain the reason for the failure (e.g. the + * vertex buffer was null or uniform data too small). + */ + static Result Make(sk_sp, + Mode, + sk_sp, + size_t vertexCount, + size_t vertexOffset, + sk_sp uniforms, + SkSpan children, + const SkRect& bounds); + + /** + * Creates an indexed SkMesh. The returned SkMesh can be tested for validity using + * SkMesh::isValid(). A invalid mesh simply fails to draw if passed to SkCanvas::drawMesh(). + * If the mesh is invalid the returned string give contain the reason for the failure (e.g. the + * index buffer was null or uniform data too small). + */ + static Result MakeIndexed(sk_sp, + Mode, + sk_sp, + size_t vertexCount, + size_t vertexOffset, + sk_sp, + size_t indexCount, + size_t indexOffset, + sk_sp uniforms, + SkSpan children, + const SkRect& bounds); + + sk_sp refSpec() const { return fSpec; } + SkMeshSpecification* spec() const { return fSpec.get(); } + + Mode mode() const { return fMode; } + + sk_sp refVertexBuffer() const { return fVB; } + VertexBuffer* vertexBuffer() const { return fVB.get(); } + + size_t vertexOffset() const { return fVOffset; } + size_t vertexCount() const { return fVCount; } + + sk_sp refIndexBuffer() const { return fIB; } + IndexBuffer* indexBuffer() const { return fIB.get(); } + + size_t indexOffset() const { return fIOffset; } + size_t indexCount() const { return fICount; } + + sk_sp refUniforms() const { return fUniforms; } + const SkData* uniforms() const { return fUniforms.get(); } + + SkSpan children() const { return SkSpan(fChildren); } + + SkRect bounds() const { return fBounds; } + + bool isValid() const; + +private: + std::tuple validate() const; + + sk_sp fSpec; + + sk_sp fVB; + sk_sp fIB; + + sk_sp fUniforms; + skia_private::STArray<2, ChildPtr> fChildren; + + size_t fVOffset = 0; // Must be a multiple of spec->stride() + size_t fVCount = 0; + + size_t fIOffset = 0; // Must be a multiple of sizeof(uint16_t) + size_t fICount = 0; + + Mode fMode = Mode::kTriangles; + + SkRect fBounds = SkRect::MakeEmpty(); +}; + +struct SkMesh::Result { SkMesh mesh; SkString error; }; + +namespace SkMeshes { +/** + * Makes a CPU-backed index buffer to be used with SkMeshes. + * + * @param data The data used to populate the buffer, or nullptr to create a zero- + * initialized buffer. + * @param size Both the size of the data in 'data' and the size of the resulting + * buffer, in bytes. + */ +SK_API sk_sp MakeIndexBuffer(const void* data, size_t size); + +/** + * Makes a copy of an index buffer. The copy will be CPU-backed. + */ +SK_API sk_sp CopyIndexBuffer(const sk_sp&); + +/** + * Makes a CPU-backed vertex buffer to be used with SkMeshes. + * + * @param data The data used to populate the buffer, or nullptr to create a zero- + * initialized buffer. + * @param size Both the size of the data in 'data' and the size of the resulting + * buffer, in bytes. + */ +SK_API sk_sp MakeVertexBuffer(const void*, size_t size); + +/** + * Makes a copy of a vertex buffer. The copy will be CPU-backed. + */ +SK_API sk_sp CopyVertexBuffer(const sk_sp&); +} // namespace SkMeshes + +#endif diff --git a/vendor/artifacts/skia/include/core/SkMilestone.h b/vendor/artifacts/skia/include/core/SkMilestone.h new file mode 100644 index 000000000..7703687e2 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkMilestone.h @@ -0,0 +1,9 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SK_MILESTONE +#define SK_MILESTONE 150 +#endif diff --git a/vendor/artifacts/skia/include/core/SkOpenTypeSVGDecoder.h b/vendor/artifacts/skia/include/core/SkOpenTypeSVGDecoder.h new file mode 100644 index 000000000..1bfe4045c --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkOpenTypeSVGDecoder.h @@ -0,0 +1,30 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkOpenTypeSVGDecoder_DEFINED +#define SkOpenTypeSVGDecoder_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" + +#include + +class SkCanvas; + +class SkOpenTypeSVGDecoder { +public: + /** Each instance probably owns an SVG DOM. + * The instance may be cached so needs to report how much memory it retains. + */ + virtual size_t approximateSize() = 0; + virtual bool render(SkCanvas&, int upem, SkGlyphID glyphId, + SkColor foregroundColor, SkSpan palette) = 0; + virtual ~SkOpenTypeSVGDecoder() = default; +}; + +#endif // SkOpenTypeSVGDecoder_DEFINED diff --git a/vendor/artifacts/skia/include/core/SkOverdrawCanvas.h b/vendor/artifacts/skia/include/core/SkOverdrawCanvas.h new file mode 100644 index 000000000..cef991d6a --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkOverdrawCanvas.h @@ -0,0 +1,94 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkOverdrawCanvas_DEFINED +#define SkOverdrawCanvas_DEFINED + +#include "include/core/SkCanvas.h" +#include "include/core/SkCanvasVirtualEnforcer.h" +#include "include/core/SkColor.h" +#include "include/core/SkPaint.h" +#include "include/core/SkSamplingOptions.h" +#include "include/core/SkScalar.h" +#include "include/private/base/SkAPI.h" +#include "include/utils/SkNWayCanvas.h" + +#include + +class SkData; +class SkDrawable; +class SkImage; +class SkMatrix; +class SkPath; +class SkPicture; +class SkRRect; +class SkRegion; +class SkTextBlob; +class SkVertices; +enum class SkBlendMode; +namespace sktext { class GlyphRunList; } +struct SkDrawShadowRec; +struct SkPoint; +struct SkRSXform; +struct SkRect; + +/** + * Captures all drawing commands. Rather than draw the actual content, this device + * increments the alpha channel of each pixel every time it would have been touched + * by a draw call. This is useful for detecting overdraw. + */ +class SK_API SkOverdrawCanvas : public SkCanvasVirtualEnforcer { +public: + /* Does not take ownership of canvas */ + explicit SkOverdrawCanvas(SkCanvas*); + + void onDrawTextBlob(const SkTextBlob*, SkScalar, SkScalar, const SkPaint&) override; + void onDrawGlyphRunList( + const sktext::GlyphRunList& glyphRunList, const SkPaint& paint) override; + void onDrawPatch(const SkPoint[12], const SkColor[4], const SkPoint[4], SkBlendMode, + const SkPaint&) override; + void onDrawPaint(const SkPaint&) override; + void onDrawBehind(const SkPaint& paint) override; + void onDrawRect(const SkRect&, const SkPaint&) override; + void onDrawRegion(const SkRegion&, const SkPaint&) override; + void onDrawOval(const SkRect&, const SkPaint&) override; + void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override; + void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; + void onDrawRRect(const SkRRect&, const SkPaint&) override; + void onDrawPoints(PointMode, size_t, const SkPoint[], const SkPaint&) override; + void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override; + void onDrawPath(const SkPath&, const SkPaint&) override; + + void onDrawImage2(const SkImage*, SkScalar, SkScalar, const SkSamplingOptions&, + const SkPaint*) override; + void onDrawImageRect2(const SkImage*, const SkRect&, const SkRect&, const SkSamplingOptions&, + const SkPaint*, SrcRectConstraint) override; + void onDrawImageLattice2(const SkImage*, const Lattice&, const SkRect&, SkFilterMode, + const SkPaint*) override; + void onDrawAtlas2(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int, + SkBlendMode, const SkSamplingOptions&, const SkRect*, const SkPaint*) override; + + void onDrawDrawable(SkDrawable*, const SkMatrix*) override; + void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; + + void onDrawAnnotation(const SkRect&, const char key[], SkData* value) override; + void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&) override; + + void onDrawEdgeAAQuad(const SkRect&, const SkPoint[4], SkCanvas::QuadAAFlags, const SkColor4f&, + SkBlendMode) override; + void onDrawEdgeAAImageSet2(const ImageSetEntry[], int count, const SkPoint[], const SkMatrix[], + const SkSamplingOptions&,const SkPaint*, SrcRectConstraint) override; + +private: + inline SkPaint overdrawPaint(const SkPaint& paint); + + SkPaint fPaint; + + using INHERITED = SkCanvasVirtualEnforcer; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPaint.h b/vendor/artifacts/skia/include/core/SkPaint.h new file mode 100644 index 000000000..a97ba0d05 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPaint.h @@ -0,0 +1,698 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPaint_DEFINED +#define SkPaint_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkCPUTypes.h" +#include "include/private/base/SkFloatingPoint.h" +#include "include/private/base/SkTo.h" +#include "include/private/base/SkTypeTraits.h" + +#include +#include +#include + +class SkBlender; +class SkColorFilter; +class SkColorSpace; +class SkImageFilter; +class SkMaskFilter; +class SkPathEffect; +class SkShader; +enum class SkBlendMode; +struct SkRect; + +/** \class SkPaint + SkPaint controls options applied when drawing. SkPaint collects all + options outside of the SkCanvas clip and SkCanvas matrix. + + Various options apply to strokes and fills, and images. + + SkPaint collects effects and filters that describe single-pass and multiple-pass + algorithms that alter the drawing geometry, color, and transparency. For instance, + SkPaint does not directly implement dashing or blur, but contains the objects that do so. +*/ +class SK_API SkPaint { +public: + + /** Constructs SkPaint with default values. + + @return default initialized SkPaint + + example: https://fiddle.skia.org/c/@Paint_empty_constructor + */ + SkPaint(); + + /** Constructs SkPaint with default values and the given color. + + Sets alpha and RGB used when stroking and filling. The color is four floating + point values, unpremultiplied. The color values are interpreted as being in + the colorSpace. If colorSpace is nullptr, then color is assumed to be in the + sRGB color space. + + @param color unpremultiplied RGBA + @param colorSpace SkColorSpace describing the encoding of color + @return SkPaint with the given color + */ + explicit SkPaint(const SkColor4f& color, SkColorSpace* colorSpace = nullptr); + + /** Makes a shallow copy of SkPaint. SkPathEffect, SkShader, + SkMaskFilter, SkColorFilter, and SkImageFilter are shared + between the original paint and the copy. Objects containing SkRefCnt increment + their references by one. + + The referenced objects SkPathEffect, SkShader, SkMaskFilter, SkColorFilter, + and SkImageFilter cannot be modified after they are created. + This prevents objects with SkRefCnt from being modified once SkPaint refers to them. + + @param paint original to copy + @return shallow copy of paint + + example: https://fiddle.skia.org/c/@Paint_copy_const_SkPaint + */ + SkPaint(const SkPaint& paint); + + /** Implements a move constructor to avoid increasing the reference counts + of objects referenced by the paint. + + After the call, paint is undefined, and can be safely destructed. + + @param paint original to move + @return content of paint + + example: https://fiddle.skia.org/c/@Paint_move_SkPaint + */ + SkPaint(SkPaint&& paint); + + /** Decreases SkPaint SkRefCnt of owned objects: SkPathEffect, SkShader, + SkMaskFilter, SkColorFilter, and SkImageFilter. If the + objects containing SkRefCnt go to zero, they are deleted. + */ + ~SkPaint(); + + /** Makes a shallow copy of SkPaint. SkPathEffect, SkShader, + SkMaskFilter, SkColorFilter, and SkImageFilter are shared + between the original paint and the copy. Objects containing SkRefCnt in the + prior destination are decreased by one, and the referenced objects are deleted if the + resulting count is zero. Objects containing SkRefCnt in the parameter paint + are increased by one. paint is unmodified. + + @param paint original to copy + @return content of paint + + example: https://fiddle.skia.org/c/@Paint_copy_operator + */ + SkPaint& operator=(const SkPaint& paint); + + /** Moves the paint to avoid increasing the reference counts + of objects referenced by the paint parameter. Objects containing SkRefCnt in the + prior destination are decreased by one; those objects are deleted if the resulting count + is zero. + + After the call, paint is undefined, and can be safely destructed. + + @param paint original to move + @return content of paint + + example: https://fiddle.skia.org/c/@Paint_move_operator + */ + SkPaint& operator=(SkPaint&& paint); + + /** Compares a and b, and returns true if a and b are equivalent. May return false + if SkPathEffect, SkShader, SkMaskFilter, SkColorFilter, + or SkImageFilter have identical contents but different pointers. + + @param a SkPaint to compare + @param b SkPaint to compare + @return true if SkPaint pair are equivalent + */ + SK_API friend bool operator==(const SkPaint& a, const SkPaint& b); + + /** Compares a and b, and returns true if a and b are not equivalent. May return true + if SkPathEffect, SkShader, SkMaskFilter, SkColorFilter, + or SkImageFilter have identical contents but different pointers. + + @param a SkPaint to compare + @param b SkPaint to compare + @return true if SkPaint pair are not equivalent + */ + friend bool operator!=(const SkPaint& a, const SkPaint& b) { + return !(a == b); + } + + /** Sets all SkPaint contents to their initial values. This is equivalent to replacing + SkPaint with the result of SkPaint(). + + example: https://fiddle.skia.org/c/@Paint_reset + */ + void reset(); + + /** Returns true if pixels on the active edges of SkPath may be drawn with partial transparency. + @return antialiasing state + */ + bool isAntiAlias() const { + return SkToBool(fBitfields.fAntiAlias); + } + + /** Requests, but does not require, that edge pixels draw opaque or with + partial transparency. + @param aa setting for antialiasing + */ + void setAntiAlias(bool aa) { fBitfields.fAntiAlias = static_cast(aa); } + + /** Returns true if color error may be distributed to smooth color transition. + @return dithering state + */ + bool isDither() const { + return SkToBool(fBitfields.fDither); + } + + /** Requests, but does not require, to distribute color error. + @param dither setting for dithering + */ + void setDither(bool dither) { fBitfields.fDither = static_cast(dither); } + + /** \enum SkPaint::Style + Set Style to fill, stroke, or both fill and stroke geometry. + The stroke and fill + share all paint attributes; for instance, they are drawn with the same color. + + Use kStrokeAndFill_Style to avoid hitting the same pixels twice with a stroke draw and + a fill draw. + */ + enum Style : uint8_t { + kFill_Style, //!< set to fill geometry + kStroke_Style, //!< set to stroke geometry + kStrokeAndFill_Style, //!< sets to stroke and fill geometry + }; + + /** May be used to verify that SkPaint::Style is a legal value. + */ + static constexpr int kStyleCount = kStrokeAndFill_Style + 1; + + /** Returns whether the geometry is filled, stroked, or filled and stroked. + */ + Style getStyle() const { return (Style)fBitfields.fStyle; } + + /** Sets whether the geometry is filled, stroked, or filled and stroked. + Has no effect if style is not a legal SkPaint::Style value. + + example: https://fiddle.skia.org/c/@Paint_setStyle + example: https://fiddle.skia.org/c/@Stroke_Width + */ + void setStyle(Style style); + + /** + * Set paint's style to kStroke if true, or kFill if false. + */ + void setStroke(bool); + + /** Retrieves alpha and RGB, unpremultiplied, packed into 32 bits. + Use helpers SkColorGetA(), SkColorGetR(), SkColorGetG(), and SkColorGetB() to extract + a color component. + + @return unpremultiplied ARGB + */ + SkColor getColor() const { return fColor4f.toSkColor(); } + + /** Retrieves alpha and RGB, unpremultiplied, as four floating point values. RGB are + extended sRGB values (sRGB gamut, and encoded with the sRGB transfer function). + + @return unpremultiplied RGBA + */ + SkColor4f getColor4f() const { return fColor4f; } + + /** Sets alpha and RGB used when stroking and filling. The color is a 32-bit value, + unpremultiplied, packing 8-bit components for alpha, red, blue, and green. + + @param color unpremultiplied ARGB + + example: https://fiddle.skia.org/c/@Paint_setColor + */ + void setColor(SkColor color); + + /** Sets alpha and RGB used when stroking and filling. The color is four floating + point values, unpremultiplied. The color values are interpreted as being in + the colorSpace. If colorSpace is nullptr, then color is assumed to be in the + sRGB color space. + + @param color unpremultiplied RGBA + @param colorSpace SkColorSpace describing the encoding of color + */ + void setColor(const SkColor4f& color, SkColorSpace* colorSpace = nullptr); + + void setColor4f(const SkColor4f& color, SkColorSpace* colorSpace = nullptr) { + this->setColor(color, colorSpace); + } + + /** Retrieves alpha from the color used when stroking and filling. + + @return alpha ranging from zero, fully transparent, to one, fully opaque + */ + float getAlphaf() const { return fColor4f.fA; } + + // Helper that scales the alpha by 255. + uint8_t getAlpha() const { + return static_cast(sk_float_round2int(this->getAlphaf() * 255)); + } + + /** Replaces alpha, leaving RGB + unchanged. An out of range value triggers an assert in the debug + build. a is a value from 0.0 to 1.0. + a set to zero makes color fully transparent; a set to 1.0 makes color + fully opaque. + + @param a alpha component of color + */ + void setAlphaf(float a); + + // Helper that accepts an int between 0 and 255, and divides it by 255.0 + void setAlpha(U8CPU a) { + this->setAlphaf(a * (1.0f / 255)); + } + + /** Sets color used when drawing solid fills. The color components range from 0 to 255. + The color is unpremultiplied; alpha sets the transparency independent of RGB. + + @param a amount of alpha, from fully transparent (0) to fully opaque (255) + @param r amount of red, from no red (0) to full red (255) + @param g amount of green, from no green (0) to full green (255) + @param b amount of blue, from no blue (0) to full blue (255) + + example: https://fiddle.skia.org/c/@Paint_setARGB + */ + void setARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b); + + /** Returns the thickness of the pen used by SkPaint to + outline the shape. + + @return zero for hairline, greater than zero for pen thickness + */ + SkScalar getStrokeWidth() const { return fWidth; } + + /** Sets the thickness of the pen used by the paint to outline the shape. + A stroke-width of zero is treated as "hairline" width. Hairlines are always exactly one + pixel wide in device space (their thickness does not change as the canvas is scaled). + Negative stroke-widths are invalid; setting a negative width will have no effect. + + @param width zero thickness for hairline; greater than zero for pen thickness + + example: https://fiddle.skia.org/c/@Miter_Limit + example: https://fiddle.skia.org/c/@Paint_setStrokeWidth + */ + void setStrokeWidth(SkScalar width); + + /** Returns the limit at which a sharp corner is drawn beveled. + + @return zero and greater miter limit + */ + SkScalar getStrokeMiter() const { return fMiterLimit; } + + /** When stroking a small joinAngle with miter, the miterLength may be very long. + When miterLength > maxMiterLength (or joinAngle < minJoinAngle) the join will become bevel. + miterLimit = maxMiterLength / strokeWidth or miterLimit = 1 / sin(minJoinAngle / 2). + + This call has no effect if the miterLimit passed is less than zero. + Values less than one will be treated as bevel. + + @param miterLimit zero and greater miter limit + + example: https://fiddle.skia.org/c/@Paint_setStrokeMiter + */ + void setStrokeMiter(SkScalar miterLimit); + + /** \enum SkPaint::Cap + Cap draws at the beginning and end of an open path contour. + */ + enum Cap { + kButt_Cap, //!< no stroke extension + kRound_Cap, //!< adds circle + kSquare_Cap, //!< adds square + kLast_Cap = kSquare_Cap, //!< largest Cap value + kDefault_Cap = kButt_Cap, //!< equivalent to kButt_Cap + }; + + /** May be used to verify that SkPaint::Cap is a legal value. + */ + static constexpr int kCapCount = kLast_Cap + 1; + + /** \enum SkPaint::Join + Join specifies how corners are drawn when a shape is stroked. Join + affects the four corners of a stroked rectangle, and the connected segments in a + stroked path. + + Choose miter join to draw sharp corners. Choose round join to draw a circle with a + radius equal to the stroke width on top of the corner. Choose bevel join to minimally + connect the thick strokes. + + The fill path constructed to describe the stroked path respects the join setting but may + not contain the actual join. For instance, a fill path constructed with round joins does + not necessarily include circles at each connected segment. + */ + enum Join : uint8_t { + kMiter_Join, //!< extends to miter limit + kRound_Join, //!< adds circle + kBevel_Join, //!< connects outside edges + kLast_Join = kBevel_Join, //!< equivalent to the largest value for Join + kDefault_Join = kMiter_Join, //!< equivalent to kMiter_Join + }; + + /** May be used to verify that SkPaint::Join is a legal value. + */ + static constexpr int kJoinCount = kLast_Join + 1; + + /** Returns the geometry drawn at the beginning and end of strokes. + */ + Cap getStrokeCap() const { return (Cap)fBitfields.fCapType; } + + /** Sets the geometry drawn at the beginning and end of strokes. + + example: https://fiddle.skia.org/c/@Paint_setStrokeCap_a + example: https://fiddle.skia.org/c/@Paint_setStrokeCap_b + */ + void setStrokeCap(Cap cap); + + /** Returns the geometry drawn at the corners of strokes. + */ + Join getStrokeJoin() const { return (Join)fBitfields.fJoinType; } + + /** Sets the geometry drawn at the corners of strokes. + + example: https://fiddle.skia.org/c/@Paint_setStrokeJoin + */ + void setStrokeJoin(Join join); + + /** Returns optional colors used when filling a path, such as a gradient. + + Does not alter SkShader SkRefCnt. + + @return SkShader if previously set, nullptr otherwise + */ + SkShader* getShader() const { return fShader.get(); } + + /** Returns optional colors used when filling a path, such as a gradient. + + Increases SkShader SkRefCnt by one. + + @return SkShader if previously set, nullptr otherwise + + example: https://fiddle.skia.org/c/@Paint_refShader + */ + sk_sp refShader() const; + + /** Sets optional colors used when filling a path, such as a gradient. + + Sets SkShader to shader, decreasing SkRefCnt of the previous SkShader. + Increments shader SkRefCnt by one. + + @param shader how geometry is filled with color; if nullptr, color is used instead + + example: https://fiddle.skia.org/c/@Color_Filter_Methods + example: https://fiddle.skia.org/c/@Paint_setShader + */ + void setShader(sk_sp shader); + + /** Returns SkColorFilter if set, or nullptr. + Does not alter SkColorFilter SkRefCnt. + + @return SkColorFilter if previously set, nullptr otherwise + */ + SkColorFilter* getColorFilter() const { return fColorFilter.get(); } + + /** Returns SkColorFilter if set, or nullptr. + Increases SkColorFilter SkRefCnt by one. + + @return SkColorFilter if set, or nullptr + + example: https://fiddle.skia.org/c/@Paint_refColorFilter + */ + sk_sp refColorFilter() const; + + /** Sets SkColorFilter to filter, decreasing SkRefCnt of the previous + SkColorFilter. Pass nullptr to clear SkColorFilter. + + Increments filter SkRefCnt by one. + + @param colorFilter SkColorFilter to apply to subsequent draw + + example: https://fiddle.skia.org/c/@Blend_Mode_Methods + example: https://fiddle.skia.org/c/@Paint_setColorFilter + */ + void setColorFilter(sk_sp colorFilter); + + /** If the current blender can be represented as a SkBlendMode enum, this returns that + * enum in the optional's value(). If it cannot, then the returned optional does not + * contain a value. + */ + std::optional asBlendMode() const; + + /** + * Queries the blender, and if it can be represented as a SkBlendMode, return that mode, + * else return the defaultMode provided. + */ + SkBlendMode getBlendMode_or(SkBlendMode defaultMode) const; + + /** Returns true iff the current blender claims to be equivalent to SkBlendMode::kSrcOver. + * + * Also returns true of the current blender is nullptr. + */ + bool isSrcOver() const; + + /** Helper method for calling setBlender(). + * + * This sets a blender that implements the specified blendmode enum. + */ + void setBlendMode(SkBlendMode mode); + + /** Returns the user-supplied blend function, if one has been set. + * Does not alter SkBlender's SkRefCnt. + * + * A nullptr blender signifies the default SrcOver behavior. + * + * @return the SkBlender assigned to this paint, otherwise nullptr + */ + SkBlender* getBlender() const { return fBlender.get(); } + + /** Returns the user-supplied blend function, if one has been set. + * Increments the SkBlender's SkRefCnt by one. + * + * A nullptr blender signifies the default SrcOver behavior. + * + * @return the SkBlender assigned to this paint, otherwise nullptr + */ + sk_sp refBlender() const; + + /** Sets the current blender, increasing its refcnt, and if a blender is already + * present, decreasing that object's refcnt. + * + * A nullptr blender signifies the default SrcOver behavior. + * + * For convenience, you can call setBlendMode() if the blend effect can be expressed + * as one of those values. + */ + void setBlender(sk_sp blender); + + /** Returns SkPathEffect if set, or nullptr. + Does not alter SkPathEffect SkRefCnt. + + @return SkPathEffect if previously set, nullptr otherwise + */ + SkPathEffect* getPathEffect() const { return fPathEffect.get(); } + + /** Returns SkPathEffect if set, or nullptr. + Increases SkPathEffect SkRefCnt by one. + + @return SkPathEffect if previously set, nullptr otherwise + + example: https://fiddle.skia.org/c/@Paint_refPathEffect + */ + sk_sp refPathEffect() const; + + /** Sets SkPathEffect to pathEffect, decreasing SkRefCnt of the previous + SkPathEffect. Pass nullptr to leave the path geometry unaltered. + + Increments pathEffect SkRefCnt by one. + + @param pathEffect replace SkPath with a modification when drawn + + example: https://fiddle.skia.org/c/@Mask_Filter_Methods + example: https://fiddle.skia.org/c/@Paint_setPathEffect + */ + void setPathEffect(sk_sp pathEffect); + + /** Returns SkMaskFilter if set, or nullptr. + Does not alter SkMaskFilter SkRefCnt. + + @return SkMaskFilter if previously set, nullptr otherwise + */ + SkMaskFilter* getMaskFilter() const { return fMaskFilter.get(); } + + /** Returns SkMaskFilter if set, or nullptr. + + Increases SkMaskFilter SkRefCnt by one. + + @return SkMaskFilter if previously set, nullptr otherwise + + example: https://fiddle.skia.org/c/@Paint_refMaskFilter + */ + sk_sp refMaskFilter() const; + + /** Sets SkMaskFilter to maskFilter, decreasing SkRefCnt of the previous + SkMaskFilter. Pass nullptr to clear SkMaskFilter and leave SkMaskFilter effect on + mask alpha unaltered. + + Increments maskFilter SkRefCnt by one. + + @param maskFilter modifies clipping mask generated from drawn geometry + + example: https://fiddle.skia.org/c/@Paint_setMaskFilter + example: https://fiddle.skia.org/c/@Typeface_Methods + */ + void setMaskFilter(sk_sp maskFilter); + + /** Returns SkImageFilter if set, or nullptr. + Does not alter SkImageFilter SkRefCnt. + + @return SkImageFilter if previously set, nullptr otherwise + */ + SkImageFilter* getImageFilter() const { return fImageFilter.get(); } + + /** Returns SkImageFilter if set, or nullptr. + Increases SkImageFilter SkRefCnt by one. + + @return SkImageFilter if previously set, nullptr otherwise + + example: https://fiddle.skia.org/c/@Paint_refImageFilter + */ + sk_sp refImageFilter() const; + + /** Sets SkImageFilter to imageFilter, decreasing SkRefCnt of the previous + SkImageFilter. Pass nullptr to clear SkImageFilter, and remove SkImageFilter effect + on drawing. + + Increments imageFilter SkRefCnt by one. + + @param imageFilter how SkImage is sampled when transformed + + example: https://fiddle.skia.org/c/@Paint_setImageFilter + */ + void setImageFilter(sk_sp imageFilter); + + /** Returns true if SkPaint prevents all drawing; + otherwise, the SkPaint may or may not allow drawing. + + Returns true if, for example, SkBlendMode combined with alpha computes a + new alpha of zero. + + @return true if SkPaint prevents all drawing + + example: https://fiddle.skia.org/c/@Paint_nothingToDraw + */ + bool nothingToDraw() const; + + /** (to be made private) + Returns true if SkPaint does not include elements requiring extensive computation + to compute device bounds of drawn geometry. For instance, SkPaint with SkPathEffect + always returns false. + + @return true if SkPaint allows for fast computation of bounds + */ + bool canComputeFastBounds() const; + + /** (to be made private) + Only call this if canComputeFastBounds() returned true. This takes a + raw rectangle (the raw bounds of a shape), and adjusts it for stylistic + effects in the paint (e.g. stroking). If needed, it uses the storage + parameter. It returns the adjusted bounds that can then be used + for SkCanvas::quickReject tests. + + The returned SkRect will either be orig or storage, thus the caller + should not rely on storage being set to the result, but should always + use the returned value. It is legal for orig and storage to be the same + SkRect. + For example: + if (!path.isInverseFillType() && paint.canComputeFastBounds()) { + SkRect storage; + if (canvas->quickReject(paint.computeFastBounds(path.getBounds(), &storage))) { + return; // do not draw the path + } + } + // draw the path + + @param orig geometry modified by SkPaint when drawn + @param storage computed bounds of geometry; may not be nullptr + @return fast computed bounds + */ + const SkRect& computeFastBounds(const SkRect& orig, SkRect* storage) const; + + /** (to be made private) + + @param orig geometry modified by SkPaint when drawn + @param storage computed bounds of geometry + @return fast computed bounds + */ + const SkRect& computeFastStrokeBounds(const SkRect& orig, + SkRect* storage) const { + return this->doComputeFastBounds(orig, storage, kStroke_Style); + } + + /** (to be made private) + Computes the bounds, overriding the SkPaint SkPaint::Style. This can be used to + account for additional width required by stroking orig, without + altering SkPaint::Style set to fill. + + @param orig geometry modified by SkPaint when drawn + @param storage computed bounds of geometry + @param style overrides SkPaint::Style + @return fast computed bounds + */ + const SkRect& doComputeFastBounds(const SkRect& orig, SkRect* storage, + Style style) const; + + using sk_is_trivially_relocatable = std::true_type; + +private: + sk_sp fPathEffect; + sk_sp fShader; + sk_sp fMaskFilter; + sk_sp fColorFilter; + sk_sp fImageFilter; + sk_sp fBlender; + + SkColor4f fColor4f; + SkScalar fWidth; + SkScalar fMiterLimit; + union { + struct { + unsigned fAntiAlias : 1; + unsigned fDither : 1; + unsigned fCapType : 2; + unsigned fJoinType : 2; + unsigned fStyle : 2; + unsigned fPadding : 24; // 24 == 32 -1-1-2-2-2 + } fBitfields; + uint32_t fBitfieldsUInt; + }; + + static_assert(::sk_is_trivially_relocatable::value); + static_assert(::sk_is_trivially_relocatable::value); + static_assert(::sk_is_trivially_relocatable::value); + static_assert(::sk_is_trivially_relocatable::value); + static_assert(::sk_is_trivially_relocatable::value); + static_assert(::sk_is_trivially_relocatable::value); + static_assert(::sk_is_trivially_relocatable::value); + static_assert(::sk_is_trivially_relocatable::value); + + friend class SkPaintPriv; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPath.h b/vendor/artifacts/skia/include/core/SkPath.h new file mode 100644 index 000000000..fd4868e1a --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPath.h @@ -0,0 +1,1163 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPath_DEFINED +#define SkPath_DEFINED + +#include "include/core/SkMatrix.h" +#include "include/core/SkPathIter.h" +#include "include/core/SkPathTypes.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkTo.h" +#include "include/private/base/SkTypeTraits.h" + +#include +#include +#include +#include +#include + +class SkData; +class SkRRect; +class SkWStream; +enum class SkPathConvexity; +enum class SkResolveConvexity; +struct SkPathRaw; +struct SkPathOvalInfo; +struct SkPathRRectInfo; + +// Migrate clients so this is unneeded +#define SK_LEGACY_PATH_ACCESSORS + +class SkPathData; + +/** \class SkPath + SkPath contain geometry. SkPath may be empty, or contain one or more verbs that + outline a figure. SkPath always starts with a move verb to a Cartesian coordinate, + and may be followed by additional verbs that add lines or curves. + Adding a close verb makes the geometry into a continuous loop, a closed contour. + SkPath may contain any number of contours, each beginning with a move verb. + + SkPath contours may contain only a move verb, or may also contain lines, + quadratic beziers, conics, and cubic beziers. SkPath contours may be open or + closed. + + When used to draw a filled area, SkPath describes whether the fill is inside or + outside the geometry. SkPath also describes the winding rule used to fill + overlapping contours. + + Internally, SkPath lazily computes metrics likes bounds and convexity. Call + SkPath::updateBoundsCache to make SkPath thread safe. +*/ +class SK_API SkPath { +public: + /** + * Create a new path with the specified spans. + * + * The points and weights arrays are read in order, based on the sequence of verbs. + * + * Move 1 point + * Line 1 point + * Quad 2 points + * Conic 2 points and 1 weight + * Cubic 3 points + * Close 0 points + * + * If an illegal sequence of verbs is encountered, or the specified number of points + * or weights is not sufficient given the verbs, an empty Path is returned. + * + * A legal sequence of verbs consists of any number of Contours. A contour always begins + * with a Move verb, followed by 0 or more segments: Line, Quad, Conic, Cubic, followed + * by an optional Close. + */ + static SkPath Raw(SkSpan pts, + SkSpan verbs, + SkSpan conics, + SkPathFillType, bool isVolatile = false); + + static SkPath Rect(const SkRect&, SkPathFillType, SkPathDirection = SkPathDirection::kDefault, + unsigned startIndex = 0); + static SkPath Rect(const SkRect& r, SkPathDirection direction = SkPathDirection::kDefault, + unsigned startIndex = 0) { + return Rect(r, SkPathFillType::kDefault, direction, startIndex); + } + static SkPath Oval(const SkRect&, SkPathDirection = SkPathDirection::kDefault); + static SkPath Oval(const SkRect&, SkPathDirection, unsigned startIndex); + static SkPath Circle(SkScalar center_x, SkScalar center_y, SkScalar radius, + SkPathDirection dir = SkPathDirection::kCW); + static SkPath RRect(const SkRRect&, SkPathDirection dir = SkPathDirection::kDefault); + static SkPath RRect(const SkRRect&, SkPathDirection, unsigned startIndex); + static SkPath RRect(const SkRect& bounds, SkScalar rx, SkScalar ry, + SkPathDirection dir = SkPathDirection::kDefault); + + static SkPath Polygon(SkSpan pts, bool isClosed, + SkPathFillType fillType = SkPathFillType::kDefault, + bool isVolatile = false); + + static SkPath Line(SkPoint a, SkPoint b) { + return Polygon({{a, b}}, false); + } + + // Deprecated: use Raw() + static SkPath Make(SkSpan pts, + SkSpan verbs, + SkSpan conics, + SkPathFillType fillType, + bool isVolatile = false) { + return Raw(pts, {reinterpret_cast(verbs.data()), verbs.size()}, + conics, fillType, isVolatile); + } + + /** Constructs an empty SkPath: no verbs, no points, no conic weights. + + @return empty SkPath + + example: https://fiddle.skia.org/c/@Path_empty_constructor + */ + explicit SkPath(SkPathFillType); + + SkPath() : SkPath(SkPathFillType::kDefault) {} + + /** Constructs a copy of an existing path. + Copy constructor makes two paths identical by value. Internally, path and + the returned result share pointer values. The underlying verb array, SkPoint array + and weights are copied when modified. + + Creating a SkPath copy is very efficient and never allocates memory. + SkPath are always copied by value from the interface; the underlying shared + pointers are not exposed. + + @param path SkPath to copy by value + @return copy of SkPath + + example: https://fiddle.skia.org/c/@Path_copy_const_SkPath + */ + SkPath(const SkPath&); + SkPath(SkPath&&); + + /** Releases ownership of any shared data and deletes data if SkPath is sole owner. + + example: https://fiddle.skia.org/c/@Path_destructor + */ + ~SkPath(); + + /** Returns a copy of this path in the current state. */ + SkPath snapshot() const { + return *this; + } + + /** Constructs a copy of an existing path. + SkPath assignment makes two paths identical by value. Internally, assignment + shares pointer values. The underlying verb array, SkPoint array and weights + are copied when modified. + + Copying SkPath by assignment is very efficient and never allocates memory. + SkPath are always copied by value from the interface; the underlying shared + pointers are not exposed. + + @param path verb array, SkPoint array, weights, and SkPath::FillType to copy + @return SkPath copied by value + + example: https://fiddle.skia.org/c/@Path_copy_operator + */ + SkPath& operator=(const SkPath&); + SkPath& operator=(SkPath&&); + + /** Compares a and b; returns true if SkPath::FillType, verb array, SkPoint array, and weights + are equivalent. + + @param a SkPath to compare + @param b SkPath to compare + @return true if SkPath pair are equivalent + */ + friend SK_API bool operator==(const SkPath& a, const SkPath& b); + + /** Compares a and b; returns true if SkPath::FillType, verb array, SkPoint array, and weights + are not equivalent. + + @param a SkPath to compare + @param b SkPath to compare + @return true if SkPath pair are not equivalent + */ + friend bool operator!=(const SkPath& a, const SkPath& b) { + return !(a == b); + } + +// Note: These 3 interpolate() methods no long use any private access/info, +// and could trivially be implemented directly by the client. + + /** Returns true if SkPath contain equal verbs and equal weights. + If SkPath contain one or more conics, the weights must match. + + conicTo() may add different verbs depending on conic weight, so it is not + trivial to interpolate a pair of SkPath containing conics with different + conic weight values. + + @param compare SkPath to compare + @return true if SkPath verb array and weights are equivalent + + example: https://fiddle.skia.org/c/@Path_isInterpolatable + */ + bool isInterpolatable(const SkPath& compare) const; + + /** Interpolates between SkPath with SkPoint array of equal size. + Copy verb array and weights to out, and set out SkPoint array to a weighted + average of this SkPoint array and ending SkPoint array, using the formula: + (Path Point * weight) + ending Point * (1 - weight). + + weight is most useful when between zero (ending SkPoint array) and + one (this Point_Array); will work with values outside of this + range. + + interpolate() returns an empty SkPath if SkPoint array is not the same size + as ending SkPoint array. Call isInterpolatable() to check SkPath compatibility + prior to calling makeInterpolate(). + + @param ending SkPoint array averaged with this SkPoint array + @param weight contribution of this SkPoint array, and + one minus contribution of ending SkPoint array + @return SkPath replaced by interpolated averages + + example: https://fiddle.skia.org/c/@Path_interpolate + */ + SkPath makeInterpolate(const SkPath& ending, SkScalar weight) const; + + /** Interpolates between SkPath with SkPoint array of equal size. + Copy verb array and weights to out, and set out SkPoint array to a weighted + average of this SkPoint array and ending SkPoint array, using the formula: + (Path Point * weight) + ending Point * (1 - weight). + + weight is most useful when between zero (ending SkPoint array) and + one (this Point_Array); will work with values outside of this + range. + + interpolate() returns false and leaves out unchanged if SkPoint array is not + the same size as ending SkPoint array. Call isInterpolatable() to check SkPath + compatibility prior to calling interpolate(). + + @param ending SkPoint array averaged with this SkPoint array + @param weight contribution of this SkPoint array, and + one minus contribution of ending SkPoint array + @param out SkPath replaced by interpolated averages + @return true if SkPath contain same number of SkPoint + + example: https://fiddle.skia.org/c/@Path_interpolate + */ + bool interpolate(const SkPath& ending, SkScalar weight, SkPath* out) const; + + /** Returns SkPathFillType, the rule used to fill SkPath. + + @return current SkPathFillType setting + */ + SkPathFillType getFillType() const { return (SkPathFillType)fFillType; } + + /** Creates an SkPath with the same properties and data, and with SkPathFillType + set to newFillType. + */ + SkPath makeFillType(SkPathFillType newFillType) const; + + /** Returns if SkPathFillType describes area outside SkPath geometry. The inverse fill area + extends indefinitely. + + @return true if FillType is kInverseWinding or kInverseEvenOdd + */ + bool isInverseFillType() const { return SkPathFillType_IsInverse(this->getFillType()); } + + /** Creates an SkPath with the same properties and data, and with SkPathFillType + replaced with its inverse. The inverse of SkPathFillType describes the area unmodified + by the original FillType. + */ + SkPath makeToggleInverseFillType() const; + + /** Returns true if the path is convex. If necessary, it will first compute the convexity. + */ + bool isConvex() const; + + /** Returns true if this path is recognized as an oval or circle. + + bounds receives bounds of oval. + + bounds is unmodified if oval is not found. + + @param bounds storage for bounding SkRect of oval; may be nullptr + @return true if SkPath is recognized as an oval or circle + + example: https://fiddle.skia.org/c/@Path_isOval + */ + bool isOval(SkRect* bounds) const; + + /** Returns true if path is representable as SkRRect. + Returns false if path is representable as oval, circle, or SkRect. + + rrect receives bounds of SkRRect. + + rrect is unmodified if SkRRect is not found. + + @param rrect storage for bounding SkRect of SkRRect; may be nullptr + @return true if SkPath contains only SkRRect + + example: https://fiddle.skia.org/c/@Path_isRRect + */ + bool isRRect(SkRRect* rrect) const; + + /** Returns if SkPath is empty. + Empty SkPath may have FillType but has no SkPoint, SkPath::Verb, or conic weight. + SkPath() constructs empty SkPath; reset() and rewind() make SkPath empty. + + @return true if the path contains no SkPath::Verb array + */ + bool isEmpty() const; + + /** Returns if contour is closed. + Contour is closed if SkPath SkPath::Verb array was last modified by close(). When stroked, + closed contour draws SkPaint::Join instead of SkPaint::Cap at first and last SkPoint. + + @return true if the last contour ends with a kClose_Verb + + example: https://fiddle.skia.org/c/@Path_isLastContourClosed + */ + bool isLastContourClosed() const; + + /** Returns true for finite SkPoint array values between negative SK_ScalarMax and + positive SK_ScalarMax. Returns false for any SkPoint array value of + SK_ScalarInfinity, SK_ScalarNegativeInfinity, or SK_ScalarNaN. + + @return true if all SkPoint values are finite + */ + bool isFinite() const; + + /** Returns true if the path is volatile; it will not be altered or discarded + by the caller after it is drawn. SkPath by default have volatile set false, allowing + SkSurface to attach a cache of data which speeds repeated drawing. If true, SkSurface + may not speed repeated drawing. + + @return true if caller will alter SkPath after drawing + */ + bool isVolatile() const { + return SkToBool(fIsVolatile); + } + + /** Return a copy of SkPath with isVolatile indicating whether it will be altered + or discarded by the caller after it is drawn. SkPath by default have volatile + set false, allowing Skia to attach a cache of data which speeds repeated drawing. + + Mark temporary paths, discarded or modified after use, as volatile + to inform Skia that the path need not be cached. + + Mark animating SkPath volatile to improve performance. + Mark unchanging SkPath non-volatile to improve repeated rendering. + + raster surface SkPath draws are affected by volatile for some shadows. + GPU surface SkPath draws are affected by volatile for some shadows and concave geometries. + + @param isVolatile true if caller will alter SkPath after drawing + @return SkPath + */ + SkPath makeIsVolatile(bool isVolatile) const; + + /** Tests if line between SkPoint pair is degenerate. + Line with no length or that moves a very short distance is degenerate; it is + treated as a point. + + exact changes the equality test. If true, returns true only if p1 equals p2. + If false, returns true if p1 equals or nearly equals p2. + + @param p1 line start point + @param p2 line end point + @param exact if false, allow nearly equals + @return true if line is degenerate; its length is effectively zero + + example: https://fiddle.skia.org/c/@Path_IsLineDegenerate + */ + static bool IsLineDegenerate(const SkPoint& p1, const SkPoint& p2, bool exact); + + /** Tests if quad is degenerate. + Quad with no length or that moves a very short distance is degenerate; it is + treated as a point. + + @param p1 quad start point + @param p2 quad control point + @param p3 quad end point + @param exact if true, returns true only if p1, p2, and p3 are equal; + if false, returns true if p1, p2, and p3 are equal or nearly equal + @return true if quad is degenerate; its length is effectively zero + */ + static bool IsQuadDegenerate(const SkPoint& p1, const SkPoint& p2, + const SkPoint& p3, bool exact); + + /** Tests if cubic is degenerate. + Cubic with no length or that moves a very short distance is degenerate; it is + treated as a point. + + @param p1 cubic start point + @param p2 cubic control point 1 + @param p3 cubic control point 2 + @param p4 cubic end point + @param exact if true, returns true only if p1, p2, p3, and p4 are equal; + if false, returns true if p1, p2, p3, and p4 are equal or nearly equal + @return true if cubic is degenerate; its length is effectively zero + */ + static bool IsCubicDegenerate(const SkPoint& p1, const SkPoint& p2, + const SkPoint& p3, const SkPoint& p4, bool exact); + + /** Returns true if SkPath contains only one line; + SkPath::Verb array has two entries: kMove_Verb, kLine_Verb. + If SkPath contains one line and line is not nullptr, line is set to + line start point and line end point. + Returns false if SkPath is not one line; line is unaltered. + + @param line storage for line. May be nullptr + @return true if SkPath contains exactly one line + + example: https://fiddle.skia.org/c/@Path_isLine + */ + bool isLine(SkPoint line[2]) const; + + /* + * Return a read-only view into the path's points. + */ + SkSpan points() const; + + /* + * Return a read-only view into the path's verbs. + */ + SkSpan verbs() const; + + /* + * Return a read-only view into the path's conic-weights. + */ + SkSpan conicWeights() const; + + int countPoints() const { return SkToInt(this->points().size()); } + int countVerbs() const { return SkToInt(this->verbs().size()); } + + /** Return the last point, or {} + + @return The last if the path contains one or more SkPoint, else returns {} + + example: https://fiddle.skia.org/c/@Path_getLastPt + */ + std::optional getLastPt() const; + +#ifdef SK_LEGACY_PATH_ACCESSORS + /** Returns SkPoint at index in SkPoint array. Valid range for index is + 0 to countPoints() - 1. + Returns (0, 0) if index is out of range. + DEPRECATED + @param index SkPoint array element selector + @return SkPoint array value or (0, 0) + */ + SkPoint getPoint(int index) const; + + /** Returns number of points in SkPath. + Copies N points from the path into the span, where N = min(#points, span capacity) + DEPRECATED + @param points span to receive the points. may be empty + @return the number of points in the path + */ + size_t getPoints(SkSpan points) const; + + /** Returns number of points in SkPath. + Copies N points from the path into the span, where N = min(#points, span capacity) + DEPRECATED + @param verbs span to store the verbs. may be empty. + @return the number of verbs in the path + + example: https://fiddle.skia.org/c/@Path_getVerbs + */ + size_t getVerbs(SkSpan verbs) const; + + // DEPRECATED + bool getLastPt(SkPoint* lastPt) const { + if (auto lp = this->getLastPt()) { + if (lastPt) { + *lastPt = *lp; + } + return true; + } + if (lastPt) { + *lastPt = {0, 0}; + } + return false; + } +#endif + + /** Returns the approximate byte size of the SkPath in memory. + + @return approximate size + */ + size_t approximateBytesUsed() const; + + /** Returns the min/max of the path's 'trimmed' points. The trimmed points are all of the + points in the path, with the exception of the path having more than one contour, and the + final contour containing only a kMove verb. In that case the trailing kMove point + is ignored when computing the bounds. + + If the path has no verbs, or the path contains non-finite values, + then {0, 0, 0, 0} is returned. (see isFinite()) + + @return bounds of the path's points + */ + const SkRect& getBounds() const; + + /** Updates internal bounds so that subsequent calls to getBounds() are instantaneous. + Unaltered copies of SkPath may also access cached bounds through getBounds(). + + For now, identical to calling getBounds() and ignoring the returned value. + + Call to prepare SkPath subsequently drawn from multiple threads, + to avoid a race condition where each draw separately computes the bounds. + */ + void updateBoundsCache() const { + // for now, just calling getBounds() is sufficient + this->getBounds(); + } + + /** Returns minimum and maximum axes values of the lines and curves in SkPath. + Returns (0, 0, 0, 0) if SkPath contains no points. + Returned bounds width and height may be larger or smaller than area affected + when SkPath is drawn. + + Includes SkPoint associated with kMove_Verb that define empty + contours. + + Behaves identically to getBounds() when SkPath contains + only lines. If SkPath contains curves, computed bounds includes + the maximum extent of the quad, conic, or cubic; is slower than getBounds(); + and unlike getBounds(), does not cache the result. + + @return tight bounds of curves in SkPath + + example: https://fiddle.skia.org/c/@Path_computeTightBounds + */ + SkRect computeTightBounds() const; + + /** Returns true if rect is contained by SkPath. + May return false when rect is contained by SkPath. + + For now, only returns true if SkPath has one contour and is convex. + rect may share points and edges with SkPath and be contained. + Returns true if rect is empty, that is, it has zero width or height; and + the SkPoint or line described by rect is contained by SkPath. + + @param rect SkRect, line, or SkPoint checked for containment + @return true if rect is contained + + example: https://fiddle.skia.org/c/@Path_conservativelyContainsRect + */ + bool conservativelyContainsRect(const SkRect& rect) const; + + /** Approximates conic with quad array. Conic is constructed from start SkPoint p0, + control SkPoint p1, end SkPoint p2, and weight w. + Quad array is stored in pts; this storage is supplied by caller. + Maximum quad count is 2 to the pow2. + Every third point in array shares last SkPoint of previous quad and first SkPoint of + next quad. Maximum pts storage size is given by: + (1 + 2 * (1 << pow2)) * sizeof(SkPoint). + + Returns quad count used the approximation, which may be smaller + than the number requested. + + conic weight determines the amount of influence conic control point has on the curve. + w less than one represents an elliptical section. w greater than one represents + a hyperbolic section. w equal to one represents a parabolic section. + + Two quad curves are sufficient to approximate an elliptical conic with a sweep + of up to 90 degrees; in this case, set pow2 to one. + + @param p0 conic start SkPoint + @param p1 conic control SkPoint + @param p2 conic end SkPoint + @param w conic weight + @param pts storage for quad array + @param pow2 quad count, as power of two, normally 0 to 5 (1 to 32 quad curves) + @return number of quad curves written to pts + */ + static int ConvertConicToQuads(const SkPoint& p0, const SkPoint& p1, const SkPoint& p2, + SkScalar w, SkPoint pts[], int pow2); + + /** Returns true if SkPath is equivalent to SkRect when filled. + If false: rect, isClosed, and direction are unchanged. + If true: rect, isClosed, and direction are written to if not nullptr. + + rect may be smaller than the SkPath bounds. SkPath bounds may include kMove_Verb points + that do not alter the area drawn by the returned rect. + + @param rect storage for bounds of SkRect; may be nullptr + @param isClosed storage set to true if SkPath is closed; may be nullptr + @param direction storage set to SkRect direction; may be nullptr + @return true if SkPath contains SkRect + + example: https://fiddle.skia.org/c/@Path_isRect + */ + bool isRect(SkRect* rect, bool* isClosed = nullptr, SkPathDirection* direction = nullptr) const; + + /** \enum SkPath::AddPathMode + AddPathMode chooses how addPath() appends. Adding one SkPath to another can extend + the last contour or start a new contour. + */ + enum AddPathMode { + /** Contours are appended to the destination path as new contours. + */ + kAppend_AddPathMode, + /** Extends the last contour of the destination path with the first countour + of the source path, connecting them with a line. If the last contour is + closed, a new empty contour starting at its start point is extended instead. + If the destination path is empty, the result is the source path. + The last path of the result is closed only if the last path of the source is. + */ + kExtend_AddPathMode, + }; + + /** Return a copy of SkPath with verb array, SkPoint array, and weight transformed + by matrix. makeTransform may change verbs and increase their number. + + If the resulting path has any non-finite values, returns {}. + + @param matrix SkMatrix to apply to SkPath + @return SkPath if finite, or {} + */ + std::optional tryMakeTransform(const SkMatrix& matrix) const; + + std::optional tryMakeOffset(float dx, float dy) const { + return this->tryMakeTransform(SkMatrix::Translate(dx, dy)); + } + + std::optional tryMakeScale(float sx, float sy) const { + return this->tryMakeTransform(SkMatrix::Scale(sx, sy)); + } + + /** Return a copy of SkPath with verb array, SkPoint array, and weight transformed + by matrix. makeTransform may change verbs and increase their number. + + If the resulting path has any non-finite values, this will still return a path + but that path will return true for isFinite(). + + The newer pattern is to call tryMakeTransform(matrix) which will only return a + path if the result is finite. + + @param matrix SkMatrix to apply to SkPath + @return SkPath + */ + SkPath makeTransform(const SkMatrix& matrix) const; + + /** Returns SkPath with SkPoint array offset by (dx, dy). + + @param dx offset added to SkPoint array x-axis coordinates + @param dy offset added to SkPoint array y-axis coordinates + */ + SkPath makeOffset(SkScalar dx, SkScalar dy) const { + return this->makeTransform(SkMatrix::Translate(dx, dy)); + } + + SkPath makeScale(SkScalar sx, SkScalar sy) const { + return this->makeTransform(SkMatrix::Scale(sx, sy)); + } + + /** \enum SkPath::SegmentMask + SegmentMask constants correspond to each drawing Verb type in SkPath; for + instance, if SkPath only contains lines, only the kLine_SegmentMask bit is set. + */ + enum SegmentMask { + kLine_SegmentMask = kLine_SkPathSegmentMask, + kQuad_SegmentMask = kQuad_SkPathSegmentMask, + kConic_SegmentMask = kConic_SkPathSegmentMask, + kCubic_SegmentMask = kCubic_SkPathSegmentMask, + }; + + /** Returns a mask, where each set bit corresponds to a SegmentMask constant + if SkPath contains one or more verbs of that type. + Returns zero if SkPath contains no lines, or curves: quads, conics, or cubics. + + getSegmentMasks() returns a cached result; it is very fast. + + @return SegmentMask bits or zero + */ + uint32_t getSegmentMasks() const; + + /** \enum SkPath::Verb + Verb instructs SkPath how to interpret one or more SkPoint and optional conic weight; + manage contour, and terminate SkPath. + */ + enum Verb { + kMove_Verb = static_cast(SkPathVerb::kMove), + kLine_Verb = static_cast(SkPathVerb::kLine), + kQuad_Verb = static_cast(SkPathVerb::kQuad), + kConic_Verb = static_cast(SkPathVerb::kConic), + kCubic_Verb = static_cast(SkPathVerb::kCubic), + kClose_Verb = static_cast(SkPathVerb::kClose), + kDone_Verb = kClose_Verb + 1 + }; + + /** Specifies whether SkPath is volatile; whether it will be altered or discarded + by the caller after it is drawn. SkPath by default have volatile set false, allowing + Skia to attach a cache of data which speeds repeated drawing. + + Mark temporary paths, discarded or modified after use, as volatile + to inform Skia that the path need not be cached. + + Mark animating SkPath volatile to improve performance. + Mark unchanging SkPath non-volatile to improve repeated rendering. + + raster surface SkPath draws are affected by volatile for some shadows. + GPU surface SkPath draws are affected by volatile for some shadows and concave geometries. + + @param isVolatile true if caller will alter SkPath after drawing + @return reference to SkPath + */ + SkPath& setIsVolatile(bool isVolatile) { + fIsVolatile = isVolatile; + return *this; + } + + /** Exchanges the verb array, SkPoint array, weights, and SkPath::FillType with other. + Cached state is also exchanged. swap() internally exchanges pointers, so + it is lightweight and does not allocate memory. + + swap() usage has largely been replaced by operator=(const SkPath& path). + SkPath do not copy their content on assignment until they are written to, + making assignment as efficient as swap(). + + @param other SkPath exchanged by value + + example: https://fiddle.skia.org/c/@Path_swap + */ + void swap(SkPath& other); + + /** Sets SkPathFillType, the rule used to fill SkPath. While there is no + check that ft is legal, values outside of SkPathFillType are not supported. + */ + void setFillType(SkPathFillType ft) { + fFillType = ft; + } + + /** Replaces SkPathFillType with its inverse. The inverse of SkPathFillType describes the area + unmodified by the original SkPathFillType. + */ + void toggleInverseFillType() { + fFillType = SkPathFillType_ToggleInverse(fFillType); + } + + /** Sets SkPath to its initial state. + Removes verb array, SkPoint array, and weights, and sets FillType to kWinding. + Internal storage associated with SkPath is released. + + @return reference to SkPath + + example: https://fiddle.skia.org/c/@Path_reset + */ + SkPath& reset(); + + SkPathIter iter() const; + + struct IterRec { + SkPathVerb fVerb; + SkSpan fPoints; + float fConicWeight; + + float conicWeight() const { + SkASSERT(fVerb == SkPathVerb::kConic); + return fConicWeight; + } + }; + + /** \class SkPath::Iter + Iterates through verb array, and associated SkPoint array and conic weight. + Provides options to treat open contours as closed, and to ignore + degenerate data. + */ + class SK_API Iter { + public: + + /** Initializes SkPath::Iter with an empty SkPath. next() on SkPath::Iter returns + kDone_Verb. + Call setPath to initialize SkPath::Iter at a later time. + + @return SkPath::Iter of empty SkPath + + example: https://fiddle.skia.org/c/@Path_Iter_Iter + */ + Iter(); + + /** Sets SkPath::Iter to return elements of verb array, SkPoint array, and conic weight in + path. If forceClose is true, SkPath::Iter will add kLine_Verb and kClose_Verb after each + open contour. path is not altered. + + @param path SkPath to iterate + @param forceClose true if open contours generate kClose_Verb + @return SkPath::Iter of path + + example: https://fiddle.skia.org/c/@Path_Iter_const_SkPath + */ + Iter(const SkPath& path, bool forceClose); + + /** Sets SkPath::Iter to return elements of verb array, SkPoint array, and conic weight in + path. If forceClose is true, SkPath::Iter will add kLine_Verb and kClose_Verb after each + open contour. path is not altered. + + @param path SkPath to iterate + @param forceClose true if open contours generate kClose_Verb + + example: https://fiddle.skia.org/c/@Path_Iter_setPath + */ + void setPath(const SkPath& path, bool forceClose); + + /** Returns next SkPath::Verb in verb array, and advances SkPath::Iter. + When verb array is exhausted, returns kDone_Verb. + + Zero to four SkPoint are stored in pts, depending on the returned SkPath::Verb. + + @param pts storage for SkPoint data describing returned SkPath::Verb + @return next SkPath::Verb from verb array + + example: https://fiddle.skia.org/c/@Path_RawIter_next + */ + Verb next(SkPoint pts[4]); + + std::optional next(); + + /** Returns conic weight if next() returned kConic_Verb. + + If next() has not been called, or next() did not return kConic_Verb, + result is undefined. + + @return conic weight for conic SkPoint returned by next() + */ + SkScalar conicWeight() const { return *fConicWeights; } + + /** Returns true if last kLine_Verb returned by next() was generated + by kClose_Verb. When true, the end point returned by next() is + also the start point of contour. + + If next() has not been called, or next() did not return kLine_Verb, + result is undefined. + + @return true if last kLine_Verb was generated by kClose_Verb + */ + bool isCloseLine() const { return SkToBool(fCloseLine); } + + /** Returns true if subsequent calls to next() return kClose_Verb before returning + kMove_Verb. if true, contour SkPath::Iter is processing may end with kClose_Verb, or + SkPath::Iter may have been initialized with force close set to true. + + @return true if contour is closed + + example: https://fiddle.skia.org/c/@Path_Iter_isClosedContour + */ + bool isClosedContour() const; + + private: + const SkPoint* fPts; + const SkPathVerb* fVerbs; + const SkPathVerb* fVerbStop; + const SkScalar* fConicWeights; + SkPoint fMoveTo; + SkPoint fLastPt; + std::array fStorage; + bool fForceClose; + bool fNeedClose; + bool fCloseLine; + + SkPathVerb autoClose(SkPoint pts[2]); + }; + +private: + std::optional getOvalInfo() const; + std::optional getRRectInfo() const; + std::optional raw(SkResolveConvexity) const; + + /** \class SkPath::RangeIter + Iterates through a raw range of path verbs, points, and conics. All values are returned + unaltered. + + NOTE: This class will be moved into SkPathPriv once RangeIter is removed. + */ + class RangeIter { + public: + RangeIter() = default; + RangeIter(const SkPathVerb* verbs, const SkPoint* points, const SkScalar* weights) + : fVerb(verbs), fPoints(points), fWeights(weights) { + SkDEBUGCODE(fInitialPoints = fPoints;) + } + bool operator!=(const RangeIter& that) const { + return fVerb != that.fVerb; + } + bool operator==(const RangeIter& that) const { + return fVerb == that.fVerb; + } + RangeIter& operator++() { + auto verb = *fVerb++; + fPoints += pts_advance_after_verb(verb); + if (verb == SkPathVerb::kConic) { + ++fWeights; + } + return *this; + } + RangeIter operator++(int) { + RangeIter copy = *this; + this->operator++(); + return copy; + } + SkPathVerb peekVerb() const { + return *fVerb; + } + std::tuple operator*() const { + SkPathVerb verb = this->peekVerb(); + // We provide the starting point for beziers by peeking backwards from the current + // point, which works fine as long as there is always a kMove before any geometry. + // (SkPath::injectMoveToIfNeeded should have guaranteed this to be the case.) + int backset = pts_backset_for_verb(verb); + SkASSERT(fPoints + backset >= fInitialPoints); + return {verb, fPoints + backset, fWeights}; + } + private: + constexpr static int pts_advance_after_verb(SkPathVerb verb) { + switch (verb) { + case SkPathVerb::kMove: return 1; + case SkPathVerb::kLine: return 1; + case SkPathVerb::kQuad: return 2; + case SkPathVerb::kConic: return 2; + case SkPathVerb::kCubic: return 3; + case SkPathVerb::kClose: return 0; + } + SkUNREACHABLE; + } + constexpr static int pts_backset_for_verb(SkPathVerb verb) { + switch (verb) { + case SkPathVerb::kMove: return 0; + case SkPathVerb::kLine: return -1; + case SkPathVerb::kQuad: return -1; + case SkPathVerb::kConic: return -1; + case SkPathVerb::kCubic: return -1; + case SkPathVerb::kClose: return -1; + } + SkUNREACHABLE; + } + const SkPathVerb* fVerb = nullptr; + const SkPoint* fPoints = nullptr; + const SkScalar* fWeights = nullptr; + SkDEBUGCODE(const SkPoint* fInitialPoints = nullptr;) + }; +public: + + /** \class SkPath::RawIter + Use Iter instead. This class will soon be removed and RangeIter will be made private. + */ + class SK_API RawIter { + public: + + /** Initializes RawIter with an empty SkPath. next() on RawIter returns kDone_Verb. + Call setPath to initialize SkPath::Iter at a later time. + + @return RawIter of empty SkPath + */ + RawIter() {} + + /** Sets RawIter to return elements of verb array, SkPoint array, and conic weight in path. + + @param path SkPath to iterate + @return RawIter of path + */ + RawIter(const SkPath& path) { + setPath(path); + } + + /** Sets SkPath::Iter to return elements of verb array, SkPoint array, and conic weight in + path. + + @param path SkPath to iterate + */ + void setPath(const SkPath&); + + /** Returns next SkPath::Verb in verb array, and advances RawIter. + When verb array is exhausted, returns kDone_Verb. + Zero to four SkPoint are stored in pts, depending on the returned SkPath::Verb. + + @param pts storage for SkPoint data describing returned SkPath::Verb + @return next SkPath::Verb from verb array + */ + Verb next(SkPoint[4]); + + std::optional next(); + + /** Returns next SkPath::Verb, but does not advance RawIter. + + @return next SkPath::Verb from verb array + */ + Verb peek() const { + return (fIter != fEnd) ? static_cast(std::get<0>(*fIter)) : kDone_Verb; + } + + /** Returns conic weight if next() returned kConic_Verb. + + If next() has not been called, or next() did not return kConic_Verb, + result is undefined. + + @return conic weight for conic SkPoint returned by next() + */ + SkScalar conicWeight() const { + return fConicWeight; + } + + private: + RangeIter fIter; + RangeIter fEnd; + SkScalar fConicWeight = 0; + friend class SkPath; + + }; + + /** Returns true if the point is contained by SkPath, taking into + account FillType. + + @param point the point to test + @return true if SkPoint is in SkPath + */ + bool contains(SkPoint point) const; + + // deprecated + bool contains(SkScalar x, SkScalar y) const { + return this->contains({x, y}); + } + + /** Writes text representation of SkPath to stream. If stream is nullptr, writes to + standard output. Set dumpAsHex true to generate exact binary representations + of floating point numbers used in SkPoint array and conic weights. + + @param stream writable SkWStream receiving SkPath text representation; may be nullptr + @param dumpAsHex true if SkScalar values are written as hexadecimal + + example: https://fiddle.skia.org/c/@Path_dump + */ + void dump(SkWStream* stream, bool dumpAsHex) const; + + void dump() const { this->dump(nullptr, false); } + void dumpHex() const { this->dump(nullptr, true); } + + /** Writes SkPath to buffer, returning the number of bytes written. + Pass nullptr to obtain the storage size. + + Writes SkPath::FillType, verb array, SkPoint array, conic weight, and + additionally writes computed information like SkPath::Convexity and bounds. + + Use only be used in concert with readFromMemory(); + the format used for SkPath in memory is not guaranteed. + + @param buffer storage for SkPath; may be nullptr + @return size of storage required for SkPath; always a multiple of 4 + + example: https://fiddle.skia.org/c/@Path_writeToMemory + */ + size_t writeToMemory(void* buffer) const; + + /** Writes SkPath to buffer, returning the buffer written to, wrapped in SkData. + + serialize() writes SkPath::FillType, verb array, SkPoint array, conic weight, and + additionally writes computed information like SkPath::Convexity and bounds. + + serialize() should only be used in concert with readFromMemory(). + The format used for SkPath in memory is not guaranteed. + + @return SkPath data wrapped in SkData buffer + + example: https://fiddle.skia.org/c/@Path_serialize + */ + sk_sp serialize() const; + + /** Returns a SkPath from buffer of size length. If the buffer data is inconsistent, or the + length is too small, returns a nullopt. + + Reads SkPath::FillType, verb array, SkPoint array, conic weight, and + additionally reads computed information like SkPath::Convexity and bounds. + + Used only in concert with writeToMemory(); + the format used for SkPath in memory is not guaranteed. + + @param buffer storage for SkPath + @param length buffer size in bytes; must be multiple of 4 + @param bytesRead if not null, the number of bytes read from buffer will be written here + @return the path read, or nullopt on failure + + example: https://fiddle.skia.org/c/@Path_readFromMemory + */ + static std::optional ReadFromMemory(const void* buffer, size_t length, + size_t* bytesRead = nullptr); + + /** (See skbug.com/40032862) + Returns a non-zero, globally unique value. A different value is returned + if verb array, SkPoint array, or conic weight changes. + + Setting SkPath::FillType does not change generation identifier. + + Each time the path is modified, a different generation identifier will be returned. + SkPath::FillType does affect generation identifier on Android framework. + + @return non-zero, globally unique value + + example: https://fiddle.skia.org/c/@Path_getGenerationID + */ + uint32_t getGenerationID() const; + + /** Returns if SkPath data is consistent. Corrupt SkPath data is detected if + internal values are out of range or internal storage does not match + array dimensions. + + @return true if SkPath data is consistent + */ + bool isValid() const; + + using sk_is_trivially_relocatable = std::true_type; + +private: + static SkPath MakeNullCheck(sk_sp, SkPathFillType, bool isVolatile); + static SkPathData* PeekErrorSingleton(); + + SkPath(sk_sp, SkPathFillType, bool isVolatile); + + sk_sp fPathData; + SkPathFillType fFillType; + bool fIsVolatile; + + size_t writeToMemoryAsRRect(void* buffer) const; + + friend class Iter; + friend class SkPathPriv; + friend class SkPathStroker; + + SkPathConvexity computeConvexity() const; + + bool isValidImpl() const; + /** Asserts if SkPath data is inconsistent. + Debugging check intended for internal use only. + */ +#ifdef SK_DEBUG + void validate() const; +#endif + + /** Returns the comvexity type, computing if needed. Never returns kUnknown. + @return path's convexity type (convex or concave) + */ + SkPathConvexity getConvexity() const; + + SkPathConvexity getConvexityOrUnknown() const; + + /** Stores a convexity type for this path. This is what will be returned if + * getConvexityOrUnknown() is called. If you pass kUnknown, then if getContexityType() + * is called, the real convexity will be computed. + */ + void setConvexity(SkPathConvexity) const; + + friend class SkPathBuilder; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPathBuilder.h b/vendor/artifacts/skia/include/core/SkPathBuilder.h new file mode 100644 index 000000000..b9199bbc7 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPathBuilder.h @@ -0,0 +1,1050 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPathBuilder_DEFINED +#define SkPathBuilder_DEFINED + +#include "include/core/SkMatrix.h" +#include "include/core/SkPath.h" +#include "include/core/SkPathIter.h" +#include "include/core/SkPathTypes.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" +#include "include/private/SkPathRef.h" +#include "include/private/base/SkTArray.h" + +#include +#include +#include + +class SkPathData; +class SkRRect; +struct SkPathRaw; +class SkString; + +// todo: add this flag to clients +#ifndef SK_SUPPORT_LEGACY_PATHBUILDER_SETLASTPT +#define SK_SUPPORT_LEGACY_PATHBUILDER_SETLASTPT +#endif + +class SK_API SkPathBuilder { + using PointsArray = skia_private::STArray<32, SkPoint>; + using VerbsArray = skia_private::STArray<32, SkPathVerb>; + using ConicWeightsArray = skia_private::STArray<16, float>; +public: + /** Constructs an empty SkPathBuilder. By default, SkPathBuilder has no verbs, no SkPoint, and + no weights. FillType is set to kWinding. + + @return empty SkPathBuilder + */ + SkPathBuilder(); + + SkPathBuilder(const SkPathBuilder&); + SkPathBuilder& operator=(const SkPathBuilder&); + SkPathBuilder(SkPathBuilder&&); + SkPathBuilder& operator=(SkPathBuilder&&); + ~SkPathBuilder(); + + /** Constructs an empty SkPathBuilder with the given FillType. By default, SkPathBuilder has no + verbs, no SkPoint, and no weights. + + @param fillType SkPathFillType to set on the SkPathBuilder. + @return empty SkPathBuilder + */ + explicit SkPathBuilder(SkPathFillType fillType); + + /** Constructs an SkPathBuilder that is a copy of an existing SkPath. + Copies the FillType and replays all of the verbs from the SkPath into the SkPathBuilder. + + @param path SkPath to copy + @return SkPathBuilder + */ + explicit SkPathBuilder(const SkPath& path); + + /** Sets an SkPathBuilder to be a copy of an existing SkPath. + Copies the FillType and replays all of the verbs from the SkPath into the SkPathBuilder. + + @param path SkPath to copy + @return SkPathBuilder + */ + SkPathBuilder& operator=(const SkPath&); + + bool operator==(const SkPathBuilder&) const; + bool operator!=(const SkPathBuilder& o) const { return !(*this == o); } + + /** Returns SkPathFillType, the rule used to fill SkPath. + + @return current SkPathFillType setting + */ + SkPathFillType fillType() const { return fFillType; } + + /** Returns minimum and maximum axes values of SkPoint array. + Returns (0, 0, 0, 0) if SkPathBuilder contains no points. + + SkRect returned includes all SkPoint added to SkPathBuilder, including SkPoint associated + with kMove_Verb that define empty contours. + + If any of the points are non-finite, returns {}. + + @return bounds of all SkPoint in SkPoint array, or {}. + */ + std::optional computeFiniteBounds() const; + + /** Like computeFiniteBounds() but returns a 'tight' bounds, meaning when there are curve + * segments, this computes the X/Y limits of the curve itself, not the curve's control + * point(s). For a polygon, this returns the same as computeFiniteBounds(). + */ + std::optional computeTightBounds() const; + + // DEPRECATED -- returns "empty" if the bounds are non-finite + SkRect computeBounds() const { + if (auto bounds = this->computeFiniteBounds()) { + return *bounds; + } + return SkRect::MakeEmpty(); + } + + /** Returns an SkPath representing the current state of the SkPathBuilder. The builder is + unchanged after returning the path. + + @param mx if present, applied to the points after they are copied into the resulting path. + @return SkPath representing the current state of the builder. + */ + SkPath snapshot(const SkMatrix* mx = nullptr) const; + + /** Returns an SkPath representing the current state of the SkPathBuilder. The builder is + reset to empty after returning the path. + + @param mx if present, applied to the points after they are copied into the resulting path. + @return SkPath representing the current state of the builder. + */ + SkPath detach(const SkMatrix* mx = nullptr); + + sk_sp snapshotData() const; + sk_sp detachData(); + + /** Sets SkPathFillType, the rule used to fill SkPath. While there is no + check that ft is legal, values outside of SkPathFillType are not supported. + + @param ft SkPathFillType to be used by SKPaths generated from this builder. + @return reference to SkPathBuilder + */ + SkPathBuilder& setFillType(SkPathFillType ft) { fFillType = ft; return *this; } + + /** Specifies whether SkPath is volatile; whether it will be altered or discarded + by the caller after it is drawn. SkPath by default have volatile set false, allowing + Skia to attach a cache of data which speeds repeated drawing. + + Mark temporary paths, discarded or modified after use, as volatile + to inform Skia that the path need not be cached. + + Mark animating SkPath volatile to improve performance. + Mark unchanging SkPath non-volatile to improve repeated rendering. + + raster surface SkPath draws are affected by volatile for some shadows. + GPU surface SkPath draws are affected by volatile for some shadows and concave geometries. + + @param isVolatile true if caller will alter SkPath after drawing + @return reference to SkPathBuilder + */ + SkPathBuilder& setIsVolatile(bool isVolatile) { fIsVolatile = isVolatile; return *this; } + + /** Sets SkPathBuilder to its initial state. + Removes verb array, SkPoint array, and weights, and sets FillType to kWinding. + Internal storage associated with SkPathBuilder is preserved. + + @return reference to SkPathBuilder + */ + SkPathBuilder& reset(); + + /** Specifies the beginning of contour. If the previous verb was a "move" verb, + * then this just replaces the point value of that move, otherwise it appends a new + * "move" verb to the builder using the point. + * + * Thus, each contour can only have 1 move verb in it (the last one specified). + */ + SkPathBuilder& moveTo(SkPoint point); + + SkPathBuilder& moveTo(SkScalar x, SkScalar y) { + return this->moveTo(SkPoint::Make(x, y)); + } + + /** Adds line from last point to SkPoint p. If SkPathBuilder is empty, or last SkPath::Verb is + kClose_Verb, last point is set to (0, 0) before adding line. + + lineTo() first appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed. + lineTo() then appends kLine_Verb to verb array and SkPoint p to SkPoint array. + + @param p end SkPoint of added line + @return reference to SkPathBuilder + */ + SkPathBuilder& lineTo(SkPoint pt); + + /** Adds line from last point to (x, y). If SkPathBuilder is empty, or last SkPath::Verb is + kClose_Verb, last point is set to (0, 0) before adding line. + + lineTo() appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed. + lineTo() then appends kLine_Verb to verb array and (x, y) to SkPoint array. + + @param x end of added line on x-axis + @param y end of added line on y-axis + @return reference to SkPathBuilder + */ + SkPathBuilder& lineTo(SkScalar x, SkScalar y) { return this->lineTo(SkPoint::Make(x, y)); } + + /** Adds quad from last point towards SkPoint p1, to SkPoint p2. + If SkPathBuilder is empty, or last SkPath::Verb is kClose_Verb, last point is set to (0, 0) + before adding quad. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed; + then appends kQuad_Verb to verb array; and SkPoint p1, p2 + to SkPoint array. + + @param p1 control SkPoint of added quad + @param p2 end SkPoint of added quad + @return reference to SkPathBuilder + */ + SkPathBuilder& quadTo(SkPoint pt1, SkPoint pt2); + + /** Adds quad from last point towards (x1, y1), to (x2, y2). + If SkPath is empty, or last SkPath::Verb is kClose_Verb, last point is set to (0, 0) + before adding quad. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed; + then appends kQuad_Verb to verb array; and (x1, y1), (x2, y2) + to SkPoint array. + + @param x1 control SkPoint of quad on x-axis + @param y1 control SkPoint of quad on y-axis + @param x2 end SkPoint of quad on x-axis + @param y2 end SkPoint of quad on y-axis + @return reference to SkPath + + example: https://fiddle.skia.org/c/@Path_quadTo + */ + SkPathBuilder& quadTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2) { + return this->quadTo(SkPoint::Make(x1, y1), SkPoint::Make(x2, y2)); + } + + /** Adds quad from last point towards the first SkPoint in pts, to the second. + If SkPathBuilder is empty, or last SkPath::Verb is kClose_Verb, last point is set to (0, 0) + before adding quad. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed; + then appends kQuad_Verb to verb array; and the SkPoints to SkPoint array. + + @param pts control point and endpoint of added quad. + @return reference to SkPathBuilder + */ + SkPathBuilder& quadTo(const SkPoint pts[2]) { return this->quadTo(pts[0], pts[1]); } + + /** Adds conic from last point towards pt1, to pt2, weighted by w. + If SkPathBuilder is empty, or last SkPath::Verb is kClose_Verb, last point is set to (0, 0) + before adding conic. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed. + + If w is finite and not one, appends kConic_Verb to verb array; + and pt1, pt2 to SkPoint array; and w to conic weights. + + If w is one, appends kQuad_Verb to verb array, and + pt1, pt2 to SkPoint array. + + If w is not finite, appends kLine_Verb twice to verb array, and + pt1, pt2 to SkPoint array. + + @param pt1 control SkPoint of conic + @param pt2 end SkPoint of conic + @param w weight of added conic + @return reference to SkPathBuilder + */ + SkPathBuilder& conicTo(SkPoint pt1, SkPoint pt2, SkScalar w); + + /** Adds conic from last point towards (x1, y1), to (x2, y2), weighted by w. + If SkPathBuilder is empty, or last SkPath::Verb is kClose_Verb, last point is set to (0, 0) + before adding conic. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed. + + If w is finite and not one, appends kConic_Verb to verb array; + and (x1, y1), (x2, y2) to SkPoint array; and w to conic weights. + + If w is one, appends kQuad_Verb to verb array, and + (x1, y1), (x2, y2) to SkPoint array. + + If w is not finite, appends kLine_Verb twice to verb array, and + (x1, y1), (x2, y2) to SkPoint array. + + @param x1 control SkPoint of conic on x-axis + @param y1 control SkPoint of conic on y-axis + @param x2 end SkPoint of conic on x-axis + @param y2 end SkPoint of conic on y-axis + @param w weight of added conic + @return reference to SkPathBuilder + */ + SkPathBuilder& conicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar w) { + return this->conicTo(SkPoint::Make(x1, y1), SkPoint::Make(x2, y2), w); + } + + /** Adds conic from last point towards SkPoint p1, to SkPoint p2, weighted by w. + If SkPathBuilder is empty, or last SkPath::Verb is kClose_Verb, last point is set to (0, 0) + before adding conic. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed. + + If w is finite and not one, appends kConic_Verb to verb array; + and SkPoint p1, p2 to SkPoint array; and w to conic weights. + + If w is one, appends kQuad_Verb to verb array, and SkPoint p1, p2 + to SkPoint array. + + If w is not finite, appends kLine_Verb twice to verb array, and + SkPoint p1, p2 to SkPoint array. + + @param p1 control SkPoint of added conic + @param p2 end SkPoint of added conic + @param w weight of added conic + @return reference to SkPathBuilder + */ + SkPathBuilder& conicTo(const SkPoint pts[2], SkScalar w) { + return this->conicTo(pts[0], pts[1], w); + } + + /** Adds cubic from last point towards SkPoint p1, then towards SkPoint p2, ending at + SkPoint p3. If SkPathBuilder is empty, or last SkPath::Verb is kClose_Verb, last point is + set to (0, 0) before adding cubic. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed; + then appends kCubic_Verb to verb array; and SkPoint p1, p2, p3 + to SkPoint array. + + @param p1 first control SkPoint of cubic + @param p2 second control SkPoint of cubic + @param p3 end SkPoint of cubic + @return reference to SkPathBuilder + */ + SkPathBuilder& cubicTo(SkPoint pt1, SkPoint pt2, SkPoint pt3); + + /** Adds cubic from last point towards (x1, y1), then towards (x2, y2), ending at + (x3, y3). If SkPathBuilder is empty, or last SkPath::Verb is kClose_Verb, last point is set + to (0, 0) before adding cubic. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed; + then appends kCubic_Verb to verb array; and (x1, y1), (x2, y2), (x3, y3) + to SkPoint array. + + @param x1 first control SkPoint of cubic on x-axis + @param y1 first control SkPoint of cubic on y-axis + @param x2 second control SkPoint of cubic on x-axis + @param y2 second control SkPoint of cubic on y-axis + @param x3 end SkPoint of cubic on x-axis + @param y3 end SkPoint of cubic on y-axis + @return reference to SkPathBuilder + */ + SkPathBuilder& cubicTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2, SkScalar x3, SkScalar y3) { + return this->cubicTo(SkPoint::Make(x1, y1), SkPoint::Make(x2, y2), SkPoint::Make(x3, y3)); + } + + /** Adds cubic from last point towards the first SkPoint, then towards the second, ending at + the third. If SkPathBuilder is empty, or last SkPath::Verb is kClose_Verb, last point is + set to (0, 0) before adding cubic. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed; + then appends kCubic_Verb to verb array; and SkPoint p1, p2, p3 + to SkPoint array. + + @param pts first and second control SkPoints of cubic, and end SkPoint. + @return reference to SkPathBuilder + */ + SkPathBuilder& cubicTo(const SkPoint pts[3]) { + return this->cubicTo(pts[0], pts[1], pts[2]); + } + + /** Appends kClose_Verb to SkPathBuilder. A closed contour connects the first and last SkPoint + with line, forming a continuous loop. Open and closed contour draw the same + with SkPaint::kFill_Style. With SkPaint::kStroke_Style, open contour draws + SkPaint::Cap at contour start and end; closed contour draws + SkPaint::Join at contour start and end. + + close() has no effect if SkPathBuilder is empty or last SkPath SkPath::Verb is kClose_Verb. + + @return reference to SkPathBuilder + */ + SkPathBuilder& close(); + + /** Append a series of lineTo(...) + + @param pts span of SkPoint + @return reference to SkPathBuilder. + */ + SkPathBuilder& polylineTo(SkSpan pts); + + // Relative versions of segments, relative to the previous position. + + /** Adds beginning of contour relative to last point. + If SkPathBuilder is empty, starts contour at (dx, dy). + Otherwise, start contour at last point offset by (dx, dy). + Function name stands for "relative move to". + + @param pt vector offset from last point to contour start + @return reference to SkPathBuilder + + example: https://fiddle.skia.org/c/@Path_rMoveTo + */ + SkPathBuilder& rMoveTo(SkVector pt); + + /** Adds beginning of contour relative to last point. + If SkPathBuilder is empty, starts contour at (dx, dy). + Otherwise, start contour at last point offset by (dx, dy). + Function name stands for "relative move to". + + @param dx offset from last point to contour start on x-axis + @param dy offset from last point to contour start on y-axis + @return reference to SkPathBuilder + + example: https://fiddle.skia.org/c/@Path_rMoveTo + */ + SkPathBuilder& rMoveTo(SkScalar dx, SkScalar dy) { return this->rMoveTo({dx, dy}); } + + /** Adds line from last point to vector given by pt. If SkPathBuilder is empty, or last + SkPath::Verb is kClose_Verb, last point is set to (0, 0) before adding line. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed; + then appends kLine_Verb to verb array and line end to SkPoint array. + Line end is last point plus vector given by pt. + Function name stands for "relative line to". + + @param pt vector offset from last point to line end + @return reference to SkPathBuilder + */ + SkPathBuilder& rLineTo(SkVector pt); + + /** Adds line from last point to vector (dx, dy). If SkPathBuilder is empty, or last + SkPath::Verb is kClose_Verb, last point is set to (0, 0) before adding line. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, if needed; + then appends kLine_Verb to verb array and line end to SkPoint array. + Line end is last point plus vector (dx, dy). + Function name stands for "relative line to". + + @param dx offset from last point to line end on x-axis + @param dy offset from last point to line end on y-axis + @return reference to SkPathBuilder + */ + SkPathBuilder& rLineTo(SkScalar dx, SkScalar dy) { return this->rLineTo({dx, dy}); } + + /** Adds quad from last point towards vector pt1, to vector pt2. + If SkPathBuilder is empty, or last SkPath::Verb + is kClose_Verb, last point is set to (0, 0) before adding quad. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, + if needed; then appends kQuad_Verb to verb array; and appends quad + control and quad end to SkPoint array. + Quad control is last point plus vector pt1. + Quad end is last point plus vector pt2. + Function name stands for "relative quad to". + + @param pt1 offset vector from last point to quad control + @param pt2 offset vector from last point to quad end + @return reference to SkPathBuilder + */ + SkPathBuilder& rQuadTo(SkVector pt1, SkVector pt2); + + /** Adds quad from last point towards vector (dx1, dy1), to vector (dx2, dy2). + If SkPathBuilder is empty, or last SkPath::Verb + is kClose_Verb, last point is set to (0, 0) before adding quad. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, + if needed; then appends kQuad_Verb to verb array; and appends quad + control and quad end to SkPoint array. + Quad control is last point plus vector (dx1, dy1). + Quad end is last point plus vector (dx2, dy2). + Function name stands for "relative quad to". + + @param dx1 offset from last point to quad control on x-axis + @param dy1 offset from last point to quad control on y-axis + @param dx2 offset from last point to quad end on x-axis + @param dy2 offset from last point to quad end on y-axis + @return reference to SkPathBuilder + */ + SkPathBuilder& rQuadTo(SkScalar dx1, SkScalar dy1, SkScalar dx2, SkScalar dy2) { + return this->rQuadTo({dx1, dy1}, {dx2, dy2}); + } + + /** Adds conic from last point towards vector p1, to vector p2, + weighted by w. If SkPathBuilder is empty, or last SkPath::Verb + is kClose_Verb, last point is set to (0, 0) before adding conic. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, + if needed. + + If w is finite and not one, next appends kConic_Verb to verb array, + and w is recorded as conic weight; otherwise, if w is one, appends + kQuad_Verb to verb array; or if w is not finite, appends kLine_Verb + twice to verb array. + + In all cases appends SkPoint control and end to SkPoint array. + control is last point plus vector p1. + end is last point plus vector p2. + + Function name stands for "relative conic to". + + @param p1 offset vector from last point to conic control + @param p2 offset vector from last point to conic end + @param w weight of added conic + @return reference to SkPathBuilder + */ + SkPathBuilder& rConicTo(SkVector p1, SkVector p2, SkScalar w); + + /** Adds conic from last point towards vector (dx1, dy1), to vector (dx2, dy2), + weighted by w. If SkPathBuilder is empty, or last SkPath::Verb + is kClose_Verb, last point is set to (0, 0) before adding conic. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, + if needed. + + If w is finite and not one, next appends kConic_Verb to verb array, + and w is recorded as conic weight; otherwise, if w is one, appends + kQuad_Verb to verb array; or if w is not finite, appends kLine_Verb + twice to verb array. + + In all cases appends SkPoint control and end to SkPoint array. + control is last point plus vector (dx1, dy1). + end is last point plus vector (dx2, dy2). + + Function name stands for "relative conic to". + + @param dx1 offset from last point to conic control on x-axis + @param dy1 offset from last point to conic control on y-axis + @param dx2 offset from last point to conic end on x-axis + @param dy2 offset from last point to conic end on y-axis + @param w weight of added conic + @return reference to SkPathBuilder + */ + SkPathBuilder& rConicTo(SkScalar dx1, SkScalar dy1, SkScalar dx2, SkScalar dy2, SkScalar w) { + return this->rConicTo({dx1, dy1}, {dx2, dy2}, w); + } + + /** Adds cubic from last point towards vector pt1, then towards + vector pt2, to vector pt3. + If SkPathBuilder is empty, or last SkPath::Verb + is kClose_Verb, last point is set to (0, 0) before adding cubic. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, + if needed; then appends kCubic_Verb to verb array; and appends cubic + control and cubic end to SkPoint array. + Cubic control is last point plus vector (dx1, dy1). + Cubic end is last point plus vector (dx2, dy2). + Function name stands for "relative cubic to". + + @param pt1 offset vector from last point to first cubic control + @param pt2 offset vector from last point to second cubic control + @param pt3 offset vector from last point to cubic end + @return reference to SkPathBuilder + */ + SkPathBuilder& rCubicTo(SkVector pt1, SkVector pt2, SkVector pt3); + + /** Adds cubic from last point towards vector (dx1, dy1), then towards + vector (dx2, dy2), to vector (dx3, dy3). + If SkPathBuilder is empty, or last SkPath::Verb + is kClose_Verb, last point is set to (0, 0) before adding cubic. + + Appends kMove_Verb to verb array and (0, 0) to SkPoint array, + if needed; then appends kCubic_Verb to verb array; and appends cubic + control and cubic end to SkPoint array. + Cubic control is last point plus vector (dx1, dy1). + Cubic end is last point plus vector (dx2, dy2). + Function name stands for "relative cubic to". + + @param dx1 offset from last point to first cubic control on x-axis + @param dy1 offset from last point to first cubic control on y-axis + @param dx2 offset from last point to second cubic control on x-axis + @param dy2 offset from last point to second cubic control on y-axis + @param dx3 offset from last point to cubic end on x-axis + @param dy3 offset from last point to cubic end on y-axis + @return reference to SkPathBuilder + */ + SkPathBuilder& rCubicTo(SkScalar dx1, SkScalar dy1, + SkScalar dx2, SkScalar dy2, + SkScalar dx3, SkScalar dy3) { + return this->rCubicTo({dx1, dy1}, {dx2, dy2}, {dx3, dy3}); + } + + // Arcs + + enum ArcSize { + kSmall_ArcSize, //!< smaller of arc pair + kLarge_ArcSize, //!< larger of arc pair + }; + + /** Appends arc to SkPathBuilder, relative to last SkPath SkPoint. Arc is implemented by one or + more conic, weighted to describe part of oval with radii (rx, ry) rotated by + xAxisRotate degrees. Arc curves from last SkPathBuilder SkPoint to relative end SkPoint: + (dx, dy), choosing one of four possible routes: clockwise or + counterclockwise, and smaller or larger. If SkPathBuilder is empty, the start arc SkPoint + is (0, 0). + + Arc sweep is always less than 360 degrees. arcTo() appends line to end SkPoint + if either radii are zero, or if last SkPath SkPoint equals end SkPoint. + arcTo() scales radii (rx, ry) to fit last SkPath SkPoint and end SkPoint if both are + greater than zero but too small to describe an arc. + + arcTo() appends up to four conic curves. + arcTo() implements the functionality of svg arc, although SVG "sweep-flag" value is + opposite the integer value of sweep; SVG "sweep-flag" uses 1 for clockwise, while + kCW_Direction cast to int is zero. + + @param r radii on axes before x-axis rotation + @param xAxisRotate x-axis rotation in degrees; positive values are clockwise + @param largeArc chooses smaller or larger arc + @param sweep chooses clockwise or counterclockwise arc + @param dxdy offset end of arc from last SkPath point + @return reference to SkPath + */ + SkPathBuilder& rArcTo(SkPoint r, SkScalar xAxisRotate, ArcSize largeArc, + SkPathDirection sweep, SkVector dxdy); + + /** Appends arc to the builder. Arc added is part of ellipse + bounded by oval, from startAngle through sweepAngle. Both startAngle and + sweepAngle are measured in degrees, where zero degrees is aligned with the + positive x-axis, and positive sweeps extends arc clockwise. + + arcTo() adds line connecting the builder's last point to initial arc point if forceMoveTo + is false and the builder is not empty. Otherwise, added contour begins with first point + of arc. Angles greater than -360 and less than 360 are treated modulo 360. + + @param oval bounds of ellipse containing arc + @param startAngleDeg starting angle of arc in degrees + @param sweepAngleDeg sweep, in degrees. Positive is clockwise; treated modulo 360 + @param forceMoveTo true to start a new contour with arc + @return reference to the builder + */ + SkPathBuilder& arcTo(const SkRect& oval, SkScalar startAngleDeg, SkScalar sweepAngleDeg, + bool forceMoveTo); + + /** Appends arc to SkPath, after appending line if needed. Arc is implemented by conic + weighted to describe part of circle. Arc is contained by tangent from + last SkPath point to p1, and tangent from p1 to p2. Arc + is part of circle sized to radius, positioned so it touches both tangent lines. + + If last SkPath SkPoint does not start arc, arcTo() appends connecting line to SkPath. + The length of vector from p1 to p2 does not affect arc. + + Arc sweep is always less than 180 degrees. If radius is zero, or if + tangents are nearly parallel, arcTo() appends line from last SkPath SkPoint to p1. + + arcTo() appends at most one line and one conic. + arcTo() implements the functionality of PostScript arct and HTML Canvas arcTo. + + @param p1 SkPoint common to pair of tangents + @param p2 end of second tangent + @param radius distance from arc to circle center + @return reference to SkPath + */ + SkPathBuilder& arcTo(SkPoint p1, SkPoint p2, SkScalar radius); + + /** Appends arc to SkPath. Arc is implemented by one or more conic weighted to describe + part of oval with radii (r.fX, r.fY) rotated by xAxisRotate degrees. Arc curves + from last SkPath SkPoint to (xy.fX, xy.fY), choosing one of four possible routes: + clockwise or counterclockwise, + and smaller or larger. + + Arc sweep is always less than 360 degrees. arcTo() appends line to xy if either + radii are zero, or if last SkPath SkPoint equals (xy.fX, xy.fY). arcTo() scales radii r to + fit last SkPath SkPoint and xy if both are greater than zero but too small to describe + an arc. + + arcTo() appends up to four conic curves. + arcTo() implements the functionality of SVG arc, although SVG sweep-flag value is + opposite the integer value of sweep; SVG sweep-flag uses 1 for clockwise, while + kCW_Direction cast to int is zero. + + @param r radii on axes before x-axis rotation + @param xAxisRotate x-axis rotation in degrees; positive values are clockwise + @param largeArc chooses smaller or larger arc + @param sweep chooses clockwise or counterclockwise arc + @param xy end of arc + @return reference to SkPath + */ + SkPathBuilder& arcTo(SkPoint r, SkScalar xAxisRotate, ArcSize largeArc, SkPathDirection sweep, + SkPoint xy); + + /** Appends arc to the builder, as the start of new contour. Arc added is part of ellipse + bounded by oval, from startAngle through sweepAngle. Both startAngle and + sweepAngle are measured in degrees, where zero degrees is aligned with the + positive x-axis, and positive sweeps extends arc clockwise. + + If sweepAngle <= -360, or sweepAngle >= 360; and startAngle modulo 90 is nearly + zero, append oval instead of arc. Otherwise, sweepAngle values are treated + modulo 360, and arc may or may not draw depending on numeric rounding. + + @param oval bounds of ellipse containing arc + @param startAngleDeg starting angle of arc in degrees + @param sweepAngleDeg sweep, in degrees. Positive is clockwise; treated modulo 360 + @return reference to this builder + */ + SkPathBuilder& addArc(const SkRect& oval, SkScalar startAngleDeg, SkScalar sweepAngleDeg); + + SkPathBuilder& addLine(SkPoint a, SkPoint b) { + return this->moveTo(a).lineTo(b); + } + + /** Adds a new contour to the SkPathBuilder, defined by the rect, and wound in the + specified direction. The verbs added to the path will be: + + kMove, kLine, kLine, kLine, kClose + + start specifies which corner to begin the contour: + 0: upper-left corner + 1: upper-right corner + 2: lower-right corner + 3: lower-left corner + + This start point also acts as the implied beginning of the subsequent, + contour, if it does not have an explicit moveTo(). e.g. + + path.addRect(...) + // if we don't say moveTo() here, we will use the rect's start point + path.lineTo(...) + + @param rect SkRect to add as a closed contour + @param dir SkPath::Direction to orient the new contour + @param start initial corner of SkRect to add + @return reference to SkPathBuilder + */ + SkPathBuilder& addRect(const SkRect&, SkPathDirection, unsigned startIndex); + + /** Adds a new contour to the SkPathBuilder, defined by the rect, and wound in the + specified direction. The verbs added to the path will be: + + kMove, kLine, kLine, kLine, kClose + + The contour starts at the upper-left corner of the rect, which also acts as the implied + beginning of the subsequent contour, if it does not have an explicit moveTo(). e.g. + + path.addRect(...) + // if we don't say moveTo() here, we will use the rect's upper-left corner + path.lineTo(...) + + @param rect SkRect to add as a closed contour + @param dir SkPath::Direction to orient the new contour + @return reference to SkPathBuilder + */ + SkPathBuilder& addRect(const SkRect& rect, SkPathDirection dir = SkPathDirection::kDefault) { + return this->addRect(rect, dir, 0); + } + + /** Adds oval to SkPathBuilder, appending kMove_Verb, four kConic_Verb, and kClose_Verb. + Oval is upright ellipse bounded by SkRect oval with radii equal to half oval width + and half oval height. Oval begins at (oval.fRight, oval.centerY()) and continues + clockwise if dir is kCW_Direction, counterclockwise if dir is kCCW_Direction. + + @param oval bounds of ellipse added + @param dir SkPath::Direction to wind ellipse + @return reference to SkPathBuilder + */ + SkPathBuilder& addOval(const SkRect&, SkPathDirection, unsigned startIndex); + + /** Appends SkRRect to SkPathBuilder, creating a new closed contour. If dir is kCW_Direction, + SkRRect winds clockwise. If dir is kCCW_Direction, SkRRect winds counterclockwise. + + After appending, SkPathBuilder may be empty, or may contain: SkRect, oval, or SkRRect. + + @param rrect SkRRect to add + @param dir SkPath::Direction to wind SkRRect + @param start index of initial point of SkRRect + @return reference to SkPathBuilder + */ + SkPathBuilder& addRRect(const SkRRect& rrect, SkPathDirection, unsigned start); + + /** Appends SkRRect to SkPathBuilder, creating a new closed contour. If dir is kCW_Direction, + SkRRect starts at top-left of the lower-left corner and winds clockwise. If dir is + kCCW_Direction, SkRRect starts at the bottom-left of the upper-left corner and winds + counterclockwise. + + After appending, SkPathBuilder may be empty, or may contain: SkRect, oval, or SkRRect. + + @param rrect SkRRect to add + @param dir SkPath::Direction to wind SkRRect + @return reference to SkPathBuilder + */ + SkPathBuilder& addRRect(const SkRRect& rrect, SkPathDirection dir = SkPathDirection::kDefault) { + // legacy start indices: 6 (CW) and 7 (CCW) + return this->addRRect(rrect, dir, dir == SkPathDirection::kCW ? 6 : 7); + } + + /** Adds oval to SkPathBuilder, appending kMove_Verb, four kConic_Verb, and kClose_Verb. + Oval is upright ellipse bounded by SkRect oval with radii equal to half oval width + and half oval height. Oval begins at start and continues + clockwise if dir is kCW_Direction, counterclockwise if dir is kCCW_Direction. + + @param oval bounds of ellipse added + @param dir SkPath::Direction to wind ellipse + @return reference to SkPath + + example: https://fiddle.skia.org/c/@Path_addOval_2 + */ + SkPathBuilder& addOval(const SkRect& oval, SkPathDirection dir = SkPathDirection::kDefault) { + // legacy start index: 1 + return this->addOval(oval, dir, 1); + } + + /** Adds circle with center and radius to SkPathBuilder, appending kMove_Verb, + four kConic_Verb, and kClose_Verb. Circle begins at: (center.fX + radius, center.fY). + + Has no effect if radius is zero or negative. + + @param center center of circle + @param radius distance from center to edge + @param dir SkPath::Direction to wind circle + @return reference to SkPathBuilder + */ + SkPathBuilder& addCircle(SkPoint center, float radius, + SkPathDirection dir = SkPathDirection::kDefault); + SkPathBuilder& addCircle(float x, float y, float radius, + SkPathDirection dir = SkPathDirection::kDefault) { + return this->addCircle({x, y}, radius, dir); + } + + /** Adds contour created from line array, adding (pts.size() - 1) line segments. + Contour added starts at pts[0], then adds a line for every additional SkPoint + in pts array. If close is true, appends kClose_Verb to SkPath, connecting + pts[count - 1] and pts[0]. + + @param pts array of line sharing end and start SkPoint + @param close true to add line connecting contour end and start + @return reference to SkPath + */ + SkPathBuilder& addPolygon(SkSpan pts, bool close); + + /** Appends src to SkPathBuilder, offset by (dx, dy). + + If mode is kAppend_AddPathMode, src verb array, SkPoint array, and conic weights are + added unaltered. If mode is kExtend_AddPathMode, add line before appending + verbs, SkPoint, and conic weights. + + @param src SkPath verbs, SkPoint, and conic weights to add + @param dx offset added to src SkPoint array x-axis coordinates + @param dy offset added to src SkPoint array y-axis coordinates + @param mode kAppend_AddPathMode or kExtend_AddPathMode + @return reference to SkPathBuilder + */ + SkPathBuilder& addPath(const SkPath& src, SkScalar dx, SkScalar dy, + SkPath::AddPathMode mode = SkPath::kAppend_AddPathMode); + + /** Appends src to SkPathBuilder. + + If mode is kAppend_AddPathMode, src verb array, SkPoint array, and conic weights are + added unaltered. If mode is kExtend_AddPathMode, add line before appending + verbs, SkPoint, and conic weights. + + @param src SkPath verbs, SkPoint, and conic weights to add + @param mode kAppend_AddPathMode or kExtend_AddPathMode + @return reference to SkPathBuilder + */ + SkPathBuilder& addPath(const SkPath& src, + SkPath::AddPathMode mode = SkPath::kAppend_AddPathMode) { + return this->addPath(src, SkMatrix::I(), mode); + } + + /** Appends src to SkPathBuilder, transformed by matrix. Transformed curves may have different + verbs, SkPoint, and conic weights. + + If mode is kAppend_AddPathMode, src verb array, SkPoint array, and conic weights are + added unaltered. If mode is kExtend_AddPathMode, add line before appending + verbs, SkPoint, and conic weights. + + @param src SkPath verbs, SkPoint, and conic weights to add + @param matrix transform applied to src + @param mode kAppend_AddPathMode or kExtend_AddPathMode + @return reference to SkPathBuilder + */ + SkPathBuilder& addPath(const SkPath& src, const SkMatrix& matrix, + SkPath::AddPathMode mode = SkPath::AddPathMode::kAppend_AddPathMode); + + // Performance hint, to reserve extra storage for subsequent calls to lineTo, quadTo, etc. + + /** Grows SkPathBuilder verb array and SkPoint array to contain additional space. + May improve performance and use less memory by + reducing the number and size of allocations when creating SkPathBuilder. + + @param extraPtCount number of additional SkPoint to allocate + @param extraVerbCount number of additional verbs + @param extraConicCount number of additional conic weights + */ + void incReserve(int extraPtCount, int extraVerbCount, int extraConicCount); + + /** Grows SkPathBuilder verb array and SkPoint array to contain additional space. + May improve performance and use less memory by + reducing the number and size of allocations when creating SkPathBuilder. + + @param extraPtCount number of additional SkPoints and verbs to allocate + */ + void incReserve(int extraPtCount) { + this->incReserve(extraPtCount, extraPtCount, 0); + } + + /** Offsets SkPoint array by (dx, dy). + + @param dx offset added to SkPoint array x-axis coordinates + @param dy offset added to SkPoint array y-axis coordinates + */ + SkPathBuilder& offset(SkScalar dx, SkScalar dy); + + /** Transforms verb array, SkPoint array, and weight by matrix. + transform may change verbs and increase their number. + + @param matrix SkMatrix to apply to SkPath + @param pc whether to apply perspective clipping + */ + SkPathBuilder& transform(const SkMatrix& matrix); + + /* + * Returns true if the builder is empty, or all of its points are finite. + */ + bool isFinite() const; + + /** Replaces SkPathFillType with its inverse. The inverse of SkPathFillType describes the area + unmodified by the original SkPathFillType. + */ + SkPathBuilder& toggleInverseFillType() { + fFillType = SkPathFillType_ToggleInverse(fFillType); + return *this; + } + + /** Returns if SkPath is empty. + Empty SkPathBuilder may have FillType but has no SkPoint, SkPath::Verb, or conic weight. + SkPathBuilder() constructs empty SkPathBuilder; reset() and rewind() make SkPath empty. + + @return true if the path contains no SkPath::Verb array + */ + bool isEmpty() const { return fVerbs.empty(); } + + /** Returns last point on SkPathBuilder. Returns nullopt if SkPoint array is empty. + + @return last SkPoint if SkPoint array contains one or more SkPoint, otherwise nullopt + + example: https://fiddle.skia.org/c/@Path_getLastPt + */ + std::optional getLastPt() const; + + /** Change the point at the specified index (see countPoints()). + * If index is out of range, the call does nothing. + * + * @param index which point to replace + * @param p the new point value + */ + void setPoint(size_t index, SkPoint p); + + /** Change the last point in the builder. + * If the builder is empty, the call does nothing. + * + * @param p the new point value + */ + void setLastPoint(SkPoint p) { + this->setPoint(this->points().size() - 1, p); + } + +#ifdef SK_SUPPORT_LEGACY_PATHBUILDER_SETLASTPT + /** DEPRECATED: use setLastPoint() or setPoint() + Sets the last point on the path. If SkPoint array is empty, this behaves like moveTo(). + + @param pt the new value for the last point in the path + */ + void setLastPt(SkPoint pt); + void setLastPt(float x, float y) { this->setLastPt({x, y}); } +#endif + + /** Returns the number of points in SkPathBuilder. + SkPoint count is initially zero. + + @return SkPathBuilder SkPoint array length + */ + int countPoints() const { return fPts.size(); } + + /** Returns if SkPathFillType describes area outside SkPath geometry. The inverse fill area + extends indefinitely. + + @return true if FillType is kInverseWinding or kInverseEvenOdd + */ + bool isInverseFillType() const { return SkPathFillType_IsInverse(fFillType); } + + SkSpan points() const { + return fPts; + } + SkSpan verbs() const { + return fVerbs; + } + SkSpan conicWeights() const { + return fConicWeights; + } + + enum class Reserve { + // Reserves the exact amount of storage needed for pathraw (never overallocates). + kExact, + // Allows the storage buffers to overallocate, based on their internal growth policy. + kGrow + }; + SkPathBuilder& addRaw(const SkPathRaw&, Reserve); + + SkPathIter iter() const; + + enum class DumpFormat { + kDecimal, + kHex, + }; + SkString dumpToString(DumpFormat = DumpFormat::kDecimal) const; + void dump(DumpFormat) const; + // can't use default argument easily in debugger, so we name this + // helper explicitly. + void dump() const { this->dump(DumpFormat::kDecimal); } + + bool contains(SkPoint) const; + +private: + PointsArray fPts; + VerbsArray fVerbs; + ConicWeightsArray fConicWeights; + + SkPathFillType fFillType; + bool fIsVolatile; + SkPathConvexity fConvexity; + + unsigned fSegmentMask; + int fLastMoveIndex; // only needed until SkPath is immutable + + SkPathIsAType fType = SkPathIsAType::kGeneral; + SkPathIsAData fIsA {}; + + // called right before we add a (non-move) verb + void ensureMove() { + fType = SkPathIsAType::kGeneral; + if (fVerbs.empty()) { + this->moveTo({0, 0}); + } else if (fVerbs.back() == SkPathVerb::kClose) { + this->moveTo(fPts[fLastMoveIndex]); + } + } + + bool isZeroLengthSincePoint(int startPtIndex) const; + + SkPathBuilder& privateReverseAddPath(const SkPath&); + SkPathBuilder& privateReversePathTo(const SkPath&); + + std::tuple growForVerbsInPath(const SkPath& path); + + friend class SkPathPriv; + friend class SkStroke; + friend class SkPathStroker; +}; + +#endif + diff --git a/vendor/artifacts/skia/include/core/SkPathEffect.h b/vendor/artifacts/skia/include/core/SkPathEffect.h new file mode 100644 index 000000000..e92133bdf --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPathEffect.h @@ -0,0 +1,88 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPathEffect_DEFINED +#define SkPathEffect_DEFINED + +#include "include/core/SkFlattenable.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +// TODO(kjlubick) update clients and remove this unnecessary #include +#include "include/core/SkPath.h" // IWYU pragma: keep + +#include + +class SkMatrix; +class SkPathBuilder; +class SkStrokeRec; +struct SkDeserialProcs; +struct SkRect; + +/** \class SkPathEffect + + SkPathEffect is the base class for objects in the SkPaint that affect + the geometry of a drawing primitive before it is transformed by the + canvas' matrix and drawn. + + Dashing is implemented as a subclass of SkPathEffect. +*/ +class SK_API SkPathEffect : public SkFlattenable { +public: + /** + * Returns a patheffect that apples each effect (first and second) to the original path, + * and returns a path with the sum of these. + * + * result = first(path) + second(path) + * + */ + static sk_sp MakeSum(sk_sp first, sk_sp second); + + /** + * Returns a patheffect that applies the inner effect to the path, and then applies the + * outer effect to the result of the inner's. + * + * result = outer(inner(path)) + */ + static sk_sp MakeCompose(sk_sp outer, sk_sp inner); + + static SkFlattenable::Type GetFlattenableType() { + return kSkPathEffect_Type; + } + + /** + * Given a src path (input) and a stroke-rec (input and output), apply + * this effect to the src path, returning the new path in dst, and return + * true. If this effect cannot be applied, return false and ignore dst + * and stroke-rec. + * + * The stroke-rec specifies the initial request for stroking (if any). + * The effect can treat this as input only, or it can choose to change + * the rec as well. For example, the effect can decide to change the + * stroke's width or join, or the effect can change the rec from stroke + * to fill (or fill to stroke) in addition to returning a new (dst) path. + * + * If this method returns true, the caller will apply (as needed) the + * resulting stroke-rec to dst and then draw. + */ + bool filterPath(SkPathBuilder* dst, const SkPath& src, SkStrokeRec*, const SkRect* cullR, + const SkMatrix& ctm) const; + bool filterPath(SkPathBuilder* dst, const SkPath& src, SkStrokeRec*) const; + + /** True if this path effect requires a valid CTM */ + bool needsCTM() const; + + static sk_sp Deserialize(const void* data, size_t size, + const SkDeserialProcs* procs = nullptr); +private: + SkPathEffect() = default; + friend class SkPathEffectBase; + + using INHERITED = SkFlattenable; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPathIter.h b/vendor/artifacts/skia/include/core/SkPathIter.h new file mode 100644 index 000000000..d9546bada --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPathIter.h @@ -0,0 +1,90 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPathIter_DEFINED +#define SkPathIter_DEFINED + +#include "include/core/SkPathTypes.h" +#include "include/core/SkPoint.h" +#include "include/core/SkSpan.h" + +#include +#include +#include + +class SK_API SkPathIter { +public: + struct Rec { + SkSpan fPoints; + float fConicWeight; + SkPathVerb fVerb; + + float conicWeight() const { + SkASSERT(fVerb == SkPathVerb::kConic); + return fConicWeight; + } + }; + + SkPathIter(SkSpan pts, SkSpan vbs, SkSpan cns) + : pIndex(0), vIndex(0), cIndex(0) + , fPoints(pts), fVerbs(vbs), fConics(cns) + { + // For compat older iterators, we trim off a trailing Move. + // SkPathData is defined to never create this pattern, so perhaps in the future + // this check can be removed (or replaced by an assert) + if (!vbs.empty() && vbs.back() == SkPathVerb::kMove) { + fVerbs = vbs.first(vbs.size() - 1); + } + } + + /* Holds the current verb, and its associated points + * move: pts[0] + * line: pts[0..1] + * quad: pts[0..2] + * conic: pts[0..2] fConicWeight + * cubic: pts[0..3] + * close: pts[0..1] ... as if close were a line from pts[0] to pts[1] + */ + std::optional next(); + + std::optional peekNextVerb() const { + if (vIndex < fVerbs.size()) { + return fVerbs[vIndex]; + } + return {}; + } + +private: + size_t pIndex, vIndex, cIndex; + SkSpan fPoints; + SkSpan fVerbs; + SkSpan fConics; + std::array fClosePointStorage; +}; + +class SkPathContourIter { +public: + struct Rec { + SkSpan fPoints; + SkSpan fVerbs; + SkSpan fConics; + }; + + SkPathContourIter(SkSpan pts, SkSpan vbs, + SkSpan cns) + : fPoints(pts), fVerbs(vbs), fConics(cns) + {} + + std::optional next(); + +private: + SkSpan fPoints; + SkSpan fVerbs; + SkSpan fConics; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPathMeasure.h b/vendor/artifacts/skia/include/core/SkPathMeasure.h new file mode 100644 index 000000000..5bf0664cc --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPathMeasure.h @@ -0,0 +1,96 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPathMeasure_DEFINED +#define SkPathMeasure_DEFINED + +#include "include/core/SkContourMeasure.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkDebug.h" + +class SkMatrix; +class SkPath; +class SkPathBuilder; + +class SK_API SkPathMeasure { +public: + SkPathMeasure(); + /** Initialize the pathmeasure with the specified path. The parts of the path that are needed + * are copied, so the client is free to modify/delete the path after this call. + * + * resScale controls the precision of the measure. values > 1 increase the + * precision (and possibly slow down the computation). + */ + SkPathMeasure(const SkPath& path, bool forceClosed, SkScalar resScale = 1); + ~SkPathMeasure(); + + SkPathMeasure(SkPathMeasure&&) = default; + SkPathMeasure& operator=(SkPathMeasure&&) = default; + + /** Reset the pathmeasure with the specified path. The parts of the path that are needed + * are copied, so the client is free to modify/delete the path after this call.. + */ + void setPath(const SkPath*, bool forceClosed); + + /** Return the total length of the current contour, or 0 if no path + is associated (e.g. resetPath(null)) + */ + SkScalar getLength(); + + /** Pins distance to 0 <= distance <= getLength(), and then computes + the corresponding position and tangent. + Returns false if there is no path, or a zero-length path was specified, in which case + position and tangent are unchanged. + */ + [[nodiscard]] bool getPosTan(SkScalar distance, SkPoint* position, SkVector* tangent); + + enum MatrixFlags { + kGetPosition_MatrixFlag = 0x01, + kGetTangent_MatrixFlag = 0x02, + kGetPosAndTan_MatrixFlag = kGetPosition_MatrixFlag | kGetTangent_MatrixFlag + }; + + /** Pins distance to 0 <= distance <= getLength(), and then computes + the corresponding matrix (by calling getPosTan). + Returns false if there is no path, or a zero-length path was specified, in which case + matrix is unchanged. + */ + [[nodiscard]] bool getMatrix(SkScalar distance, SkMatrix* matrix, + MatrixFlags flags = kGetPosAndTan_MatrixFlag); + + /** Given a start and stop distance, append to dst the intervening segment(s). + If the segment is zero-length, return false, else return true. + startD and stopD are pinned to legal values (0..getLength()). If startD > stopD + then return false (and leave dst untouched). + Begin the segment with a moveTo if startWithMoveTo is true + */ + bool getSegment(SkScalar startD, SkScalar stopD, SkPathBuilder* dst, bool startWithMoveTo); + + /** Return true if the current contour is closed() + */ + bool isClosed(); + + /** Move to the next contour in the path. Return true if one exists, or false if + we're done with the path. + */ + bool nextContour(); + +#ifdef SK_DEBUG + void dump(); +#endif + + const SkContourMeasure* currentMeasure() const { return fContour.get(); } + +private: + SkContourMeasureIter fIter; + sk_sp fContour; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPathTypes.h b/vendor/artifacts/skia/include/core/SkPathTypes.h new file mode 100644 index 000000000..84facc4a1 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPathTypes.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPathTypes_DEFINED +#define SkPathTypes_DEFINED + +#include "include/core/SkTypes.h" + +#include + +enum class SkPathFillType : uint8_t { + /** Specifies that "inside" is computed by a non-zero sum of signed edge crossings */ + kWinding, + /** Specifies that "inside" is computed by an odd number of edge crossings */ + kEvenOdd, + /** Same as Winding, but draws outside of the path, rather than inside */ + kInverseWinding, + /** Same as EvenOdd, but draws outside of the path, rather than inside */ + kInverseEvenOdd, + + kDefault = kWinding, +}; + +static inline bool SkPathFillType_IsEvenOdd(SkPathFillType ft) { + return (static_cast(ft) & 1) != 0; +} + +static inline bool SkPathFillType_IsInverse(SkPathFillType ft) { + return (static_cast(ft) & 2) != 0; +} + +static inline SkPathFillType SkPathFillType_ToggleInverse(SkPathFillType ft) { + return static_cast(static_cast(ft) ^ 2); +} + +static inline SkPathFillType SkPathFillType_ConvertToNonInverse(SkPathFillType ft) { + return static_cast(static_cast(ft) & 1); +} + +enum class SkPathDirection : uint8_t { + /** clockwise direction for adding closed contours */ + kCW, + /** counter-clockwise direction for adding closed contours */ + kCCW, + + kDefault = kCW, +}; + +enum SkPathSegmentMask { + kLine_SkPathSegmentMask = 1 << 0, + kQuad_SkPathSegmentMask = 1 << 1, + kConic_SkPathSegmentMask = 1 << 2, + kCubic_SkPathSegmentMask = 1 << 3, +}; + +enum class SkPathVerb : uint8_t { + kMove, //!< SkPath::RawIter returns 1 point + kLine, //!< SkPath::RawIter returns 2 points + kQuad, //!< SkPath::RawIter returns 3 points + kConic, //!< SkPath::RawIter returns 3 points + 1 weight + kCubic, //!< SkPath::RawIter returns 4 points + kClose, //!< SkPath::RawIter returns 0 points + + kLast_Verb = kClose, +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPathUtils.h b/vendor/artifacts/skia/include/core/SkPathUtils.h new file mode 100644 index 000000000..84699a079 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPathUtils.h @@ -0,0 +1,39 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkPathUtils_DEFINED +#define SkPathUtils_DEFINED + +#include "include/core/SkScalar.h" // IWYU pragma: keep +#include "include/core/SkTypes.h" + +class SkMatrix; +class SkPaint; +class SkPath; +class SkPathBuilder; +struct SkRect; + +namespace skpathutils { + +/* Returns the filled equivalent of the stroked path. + * + * @param src SkPath read to create a filled version + * @param paint uses settings for stroke cap, width, miter, join, and patheffect. + * @param dst results are written to this builder. + * @param cullRect optional limit passed to SkPathEffect + * @param ctm matrix to take into acount for increased precision (if it scales up). + * @return true if the result can be filled, or false if it is a hairline (to be stroked). + */ +SK_API bool FillPathWithPaint(const SkPath& src, const SkPaint& paint, SkPathBuilder* dst, + const SkRect* cullRect, const SkMatrix& ctm); + +SK_API bool FillPathWithPaint(const SkPath& src, const SkPaint& paint, SkPathBuilder* dst); + +SK_API SkPath FillPathWithPaint(const SkPath& src, const SkPaint& paint, bool* isFill = nullptr); + +} + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPicture.h b/vendor/artifacts/skia/include/core/SkPicture.h new file mode 100644 index 000000000..f4ab3ed29 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPicture.h @@ -0,0 +1,291 @@ +/* + * Copyright 2007 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPicture_DEFINED +#define SkPicture_DEFINED + +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkShader.h" // IWYU pragma: keep +#include "include/core/SkTypes.h" + +#include +#include +#include + +class SkCanvas; +class SkData; +class SkMatrix; +class SkStream; +class SkWStream; +enum class SkFilterMode; +struct SkDeserialProcs; +struct SkSerialProcs; + +// TODO(kjlubick) Remove this after cleaning up clients +#include "include/core/SkTileMode.h" // IWYU pragma: keep + +/** \class SkPicture + SkPicture records drawing commands made to SkCanvas. The command stream may be + played in whole or in part at a later time. + + SkPicture is an abstract class. SkPicture may be generated by SkPictureRecorder + or SkDrawable, or from SkPicture previously saved to SkData or SkStream. + + SkPicture may contain any SkCanvas drawing command, as well as one or more + SkCanvas matrix or SkCanvas clip. SkPicture has a cull SkRect, which is used as + a bounding box hint. To limit SkPicture bounds, use SkCanvas clip when + recording or drawing SkPicture. +*/ +class SK_API SkPicture : public SkRefCnt { +public: + ~SkPicture() override; + + /** Recreates SkPicture that was serialized into a stream. Returns constructed SkPicture + if successful; otherwise, returns nullptr. Fails if data does not permit + constructing valid SkPicture. + + procs->fPictureProc permits supplying a custom function to decode SkPicture. + If procs->fPictureProc is nullptr, default decoding is used. procs->fPictureCtx + may be used to provide user context to procs->fPictureProc; procs->fPictureProc + is called with a pointer to data, data byte length, and user context. + + @param stream container for serial data + @param procs custom serial data decoders; may be nullptr + @return SkPicture constructed from stream data + */ + static sk_sp MakeFromStream(SkStream* stream, + const SkDeserialProcs* procs = nullptr); + + /** Recreates SkPicture that was serialized into data. Returns constructed SkPicture + if successful; otherwise, returns nullptr. Fails if data does not permit + constructing valid SkPicture. + + procs->fPictureProc permits supplying a custom function to decode SkPicture. + If procs->fPictureProc is nullptr, default decoding is used. procs->fPictureCtx + may be used to provide user context to procs->fPictureProc; procs->fPictureProc + is called with a pointer to data, data byte length, and user context. + + @param data container for serial data + @param procs custom serial data decoders; may be nullptr + @return SkPicture constructed from data + */ + static sk_sp MakeFromData(const SkData* data, + const SkDeserialProcs* procs = nullptr); + + /** + + @param data pointer to serial data + @param size size of data + @param procs custom serial data decoders; may be nullptr + @return SkPicture constructed from data + */ + static sk_sp MakeFromData(const void* data, size_t size, + const SkDeserialProcs* procs = nullptr); + + /** \class SkPicture::AbortCallback + AbortCallback is an abstract class. An implementation of AbortCallback may + passed as a parameter to SkPicture::playback, to stop it before all drawing + commands have been processed. + + If AbortCallback::abort returns true, SkPicture::playback is interrupted. + */ + class SK_API AbortCallback { + public: + /** Has no effect. + */ + virtual ~AbortCallback() = default; + + /** Stops SkPicture playback when some condition is met. A subclass of + AbortCallback provides an override for abort() that can stop SkPicture::playback. + + The part of SkPicture drawn when aborted is undefined. SkPicture instantiations are + free to stop drawing at different points during playback. + + If the abort happens inside one or more calls to SkCanvas::save(), stack + of SkCanvas matrix and SkCanvas clip values is restored to its state before + SkPicture::playback was called. + + @return true to stop playback + + example: https://fiddle.skia.org/c/@Picture_AbortCallback_abort + */ + virtual bool abort() = 0; + + protected: + AbortCallback() = default; + AbortCallback(const AbortCallback&) = delete; + AbortCallback& operator=(const AbortCallback&) = delete; + }; + + /** Replays the drawing commands on the specified canvas. In the case that the + commands are recorded, each command in the SkPicture is sent separately to canvas. + + To add a single command to draw SkPicture to recording canvas, call + SkCanvas::drawPicture instead. + + @param canvas receiver of drawing commands + @param callback allows interruption of playback + + example: https://fiddle.skia.org/c/@Picture_playback + */ + virtual void playback(SkCanvas* canvas, AbortCallback* callback = nullptr) const = 0; + + /** Returns cull SkRect for this picture, passed in when SkPicture was created. + Returned SkRect does not specify clipping SkRect for SkPicture; cull is hint + of SkPicture bounds. + + SkPicture is free to discard recorded drawing commands that fall outside + cull. + + @return bounds passed when SkPicture was created + + example: https://fiddle.skia.org/c/@Picture_cullRect + */ + virtual SkRect cullRect() const = 0; + + /** Returns a non-zero value unique among SkPicture in Skia process. + + @return identifier for SkPicture + */ + uint32_t uniqueID() const { return fUniqueID; } + + /** Returns storage containing SkData describing SkPicture, using optional custom + encoders. + + procs->fPictureProc permits supplying a custom function to encode SkPicture. + If procs->fPictureProc is nullptr, default encoding is used. procs->fPictureCtx + may be used to provide user context to procs->fPictureProc; procs->fPictureProc + is called with a pointer to SkPicture and user context. + + The default behavior for serializing SkImages is to encode a nullptr. Should + clients want to, for example, encode these SkImages as PNGs so they can be + deserialized, they must provide SkSerialProcs with the fImageProc set to do so. + + @param procs custom serial data encoders; may be nullptr + @return storage containing serialized SkPicture + + example: https://fiddle.skia.org/c/@Picture_serialize + */ + sk_sp serialize(const SkSerialProcs* procs = nullptr) const; + + /** Writes picture to stream, using optional custom encoders. + + procs->fPictureProc permits supplying a custom function to encode SkPicture. + If procs->fPictureProc is nullptr, default encoding is used. procs->fPictureCtx + may be used to provide user context to procs->fPictureProc; procs->fPictureProc + is called with a pointer to SkPicture and user context. + + The default behavior for serializing SkImages is to encode a nullptr. Should + clients want to, for example, encode these SkImages as PNGs so they can be + deserialized, they must provide SkSerialProcs with the fImageProc set to do so. + + @param stream writable serial data stream + @param procs custom serial data encoders; may be nullptr + + example: https://fiddle.skia.org/c/@Picture_serialize_2 + */ + void serialize(SkWStream* stream, const SkSerialProcs* procs = nullptr) const; + + /** Returns a placeholder SkPicture. Result does not draw, and contains only + cull SkRect, a hint of its bounds. Result is immutable; it cannot be changed + later. Result identifier is unique. + + Returned placeholder can be intercepted during playback to insert other + commands into SkCanvas draw stream. + + @param cull placeholder dimensions + @return placeholder with unique identifier + + example: https://fiddle.skia.org/c/@Picture_MakePlaceholder + */ + static sk_sp MakePlaceholder(SkRect cull); + + /** Returns the approximate number of operations in SkPicture. Returned value + may be greater or less than the number of SkCanvas calls + recorded: some calls may be recorded as more than one operation, other + calls may be optimized away. + + @param nested if true, include the op-counts of nested pictures as well, else + just return count the ops in the top-level picture. + @return approximate operation count + + example: https://fiddle.skia.org/c/@Picture_approximateOpCount + */ + virtual int approximateOpCount(bool nested = false) const = 0; + + /** Returns the approximate byte size of SkPicture. Does not include large objects + referenced by SkPicture. + + @return approximate size + + example: https://fiddle.skia.org/c/@Picture_approximateBytesUsed + */ + virtual size_t approximateBytesUsed() const = 0; + + /** Return a new shader that will draw with this picture. + * + * @param tmx The tiling mode to use when sampling in the x-direction. + * @param tmy The tiling mode to use when sampling in the y-direction. + * @param mode How to filter the tiles + * @param localMatrix Optional matrix used when sampling + * @param tileRect The tile rectangle in picture coordinates: this represents the subset + * (or superset) of the picture used when building a tile. It is not + * affected by localMatrix and does not imply scaling (only translation + * and cropping). If null, the tile rect is considered equal to the picture + * bounds. + * @return Returns a new shader object. Note: this function never returns null. + */ + sk_sp makeShader(SkTileMode tmx, SkTileMode tmy, SkFilterMode mode, + const SkMatrix* localMatrix, const SkRect* tileRect) const; + + sk_sp makeShader(SkTileMode tmx, SkTileMode tmy, SkFilterMode mode) const { + return this->makeShader(tmx, tmy, mode, nullptr, nullptr); + } + +private: + // Allowed subclasses. + SkPicture(); + friend class SkBigPicture; + friend class SkEmptyPicture; + friend class SkPicturePriv; + + void serialize(SkWStream*, const SkSerialProcs*, class SkRefCntSet* typefaces, + bool textBlobsOnly=false) const; + static sk_sp MakeFromStreamPriv(SkStream*, const SkDeserialProcs*, + class SkTypefacePlayback*, + int recursionLimit); + friend class SkPictureData; + + /** Return true if the SkStream/Buffer represents a serialized picture, and + fills out SkPictInfo. After this function returns, the data source is not + rewound so it will have to be manually reset before passing to + MakeFromStream or MakeFromBuffer. Note, MakeFromStream and + MakeFromBuffer perform this check internally so these entry points are + intended for stand alone tools. + If false is returned, SkPictInfo is unmodified. + */ + static bool StreamIsSKP(SkStream*, struct SkPictInfo*); + static bool BufferIsSKP(class SkReadBuffer*, struct SkPictInfo*); + friend bool SkPicture_StreamIsSKP(SkStream*, struct SkPictInfo*); + + // Returns NULL if this is not an SkBigPicture. + virtual const class SkBigPicture* asSkBigPicture() const { return nullptr; } + + static bool IsValidPictInfo(const struct SkPictInfo& info); + static sk_sp Forwardport(const struct SkPictInfo&, + const class SkPictureData*, + class SkReadBuffer* buffer); + + struct SkPictInfo createHeader() const; + class SkPictureData* backport() const; + + uint32_t fUniqueID; + mutable std::atomic fAddedToCache{false}; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPictureRecorder.h b/vendor/artifacts/skia/include/core/SkPictureRecorder.h new file mode 100644 index 000000000..ebd1c18cb --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPictureRecorder.h @@ -0,0 +1,115 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPictureRecorder_DEFINED +#define SkPictureRecorder_DEFINED + +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/private/base/SkAPI.h" + +#include + +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK +namespace android { + class Picture; +}; +#endif + +class SkBBHFactory; +class SkBBoxHierarchy; +class SkCanvas; +class SkDrawable; +class SkPicture; +class SkRecord; +class SkRecordCanvas; + +class SK_API SkPictureRecorder { +public: + SkPictureRecorder(); + ~SkPictureRecorder(); + + /** Returns the canvas that records the drawing commands. + @param bounds the cull rect used when recording this picture. Any drawing the falls outside + of this rect is undefined, and may be drawn or it may not. + @param bbh optional acceleration structure + @param recordFlags optional flags that control recording. + @return the canvas. + */ + SkCanvas* beginRecording(const SkRect& bounds, sk_sp bbh); + + SkCanvas* beginRecording(const SkRect& bounds, SkBBHFactory* bbhFactory = nullptr); + + SkCanvas* beginRecording(SkScalar width, SkScalar height, + SkBBHFactory* bbhFactory = nullptr) { + return this->beginRecording(SkRect::MakeWH(width, height), bbhFactory); + } + + /** Returns the recording canvas if one is active, or NULL if recording is + not active. This does not alter the refcnt on the canvas (if present). + */ + SkCanvas* getRecordingCanvas(); + + /** + * Signal that the caller is done recording. This invalidates the canvas returned by + * beginRecording/getRecordingCanvas. Ownership of the object is passed to the caller, who + * must call unref() when they are done using it. + * + * The returned picture is immutable. If during recording drawables were added to the canvas, + * these will have been "drawn" into a recording canvas, so that this resulting picture will + * reflect their current state, but will not contain a live reference to the drawables + * themselves. + */ + sk_sp finishRecordingAsPicture(); + + /** + * Signal that the caller is done recording, and update the cull rect to use for bounding + * box hierarchy (BBH) generation. The behavior is the same as calling + * finishRecordingAsPicture(), except that this method updates the cull rect initially passed + * into beginRecording. + * @param cullRect the new culling rectangle to use as the overall bound for BBH generation + * and subsequent culling operations. + * @return the picture containing the recorded content. + */ + sk_sp finishRecordingAsPictureWithCull(const SkRect& cullRect); + + /** + * Signal that the caller is done recording. This invalidates the canvas returned by + * beginRecording/getRecordingCanvas. Ownership of the object is passed to the caller, who + * must call unref() when they are done using it. + * + * Unlike finishRecordingAsPicture(), which returns an immutable picture, the returned drawable + * may contain live references to other drawables (if they were added to the recording canvas) + * and therefore this drawable will reflect the current state of those nested drawables anytime + * it is drawn or a new picture is snapped from it (by calling drawable->makePictureSnapshot()). + */ + sk_sp finishRecordingAsDrawable(); + +private: + void reset(); + + /** Replay the current (partially recorded) operation stream into + canvas. This call doesn't close the current recording. + */ +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + friend class android::Picture; +#endif + friend class SkPictureRecorderReplayTester; // for unit testing + void partialReplay(SkCanvas* canvas) const; + + sk_sp fBBH; + std::unique_ptr fRecorder; + sk_sp fRecord; + SkRect fCullRect; + bool fActivelyRecording; + + SkPictureRecorder(SkPictureRecorder&&) = delete; + SkPictureRecorder& operator=(SkPictureRecorder&&) = delete; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPixelRef.h b/vendor/artifacts/skia/include/core/SkPixelRef.h new file mode 100644 index 000000000..b48690fa6 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPixelRef.h @@ -0,0 +1,122 @@ +/* + * Copyright 2008 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPixelRef_DEFINED +#define SkPixelRef_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/private/SkIDChangeListener.h" +#include "include/private/SkPixelStorage.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkTo.h" + +#include +#include +#include + +class SkDiscardableMemory; + +/** \class SkPixelRef + + This class is the smart container for pixel memory, and is used with SkBitmap. + This class can be shared/accessed between multiple threads. +*/ +class SK_API SkPixelRef : public SkPixelStorage, public SkRefCnt { +public: + SkPixelRef(int width, int height, void* addr, size_t rowBytes); + ~SkPixelRef() override; + + Type type() const override; + + SkISize dimensions() const { return {fWidth, fHeight}; } + int width() const { return fWidth; } + int height() const { return fHeight; } + void* pixels() const { return fPixels; } + size_t rowBytes() const { return fRowBytes; } + + /** Returns a non-zero, unique value corresponding to the pixels in this + pixelref. Each time the pixels are changed (and notifyPixelsChanged is + called), a different generation ID will be returned. + */ + uint32_t getGenerationID() const; + + /** + * Call this if you have changed the contents of the pixels. This will in- + * turn cause a different generation ID value to be returned from + * getGenerationID(). + */ + void notifyPixelsChanged(); + + /** Returns true if this pixelref is marked as immutable, meaning that the + contents of its pixels will not change for the lifetime of the pixelref. + */ + bool isImmutable() const { return fMutability != kMutable; } + + /** Marks this pixelref is immutable, meaning that the contents of its + pixels will not change for the lifetime of the pixelref. This state can + be set on a pixelref, but it cannot be cleared once it is set. + */ + void setImmutable(); + + // Register a listener that may be called the next time our generation ID changes. + // + // We'll only call the listener if we're confident that we are the only SkPixelRef with this + // generation ID. If our generation ID changes and we decide not to call the listener, we'll + // never call it: you must add a new listener for each generation ID change. We also won't call + // the listener when we're certain no one knows what our generation ID is. + // + // This can be used to invalidate caches keyed by SkPixelRef generation ID. + // Takes ownership of listener. Threadsafe. + void addGenIDChangeListener(sk_sp listener); + + // Call when this pixelref is part of the key to a resourcecache entry. This allows the cache + // to know automatically those entries can be purged when this pixelref is changed or deleted. + void notifyAddedToCache() { + fAddedToCache.store(true); + } + + virtual SkDiscardableMemory* diagnostic_only_getDiscardable() const { return nullptr; } + +protected: + void android_only_reset(int width, int height, size_t rowBytes); + +private: + int fWidth; + int fHeight; + void* fPixels; + size_t fRowBytes; + + // Bottom bit indicates the Gen ID is unique. + bool genIDIsUnique() const { return SkToBool(fTaggedGenID.load() & 1); } + mutable std::atomic fTaggedGenID; + + SkIDChangeListener::List fGenIDChangeListeners; + + // Set true by caches when they cache content that's derived from the current pixels. + std::atomic fAddedToCache; + + enum Mutability { + kMutable, // PixelRefs begin mutable. + kTemporarilyImmutable, // Considered immutable, but can revert to mutable. + kImmutable, // Once set to this state, it never leaves. + } fMutability : 8; // easily fits inside a byte + + void needsNewGenID(); + void callGenIDChangeListeners(); + + void setTemporarilyImmutable(); + void restoreMutability(); + friend class SkSurface_Raster; // For temporary immutable methods above. + + void setImmutableWithID(uint32_t genID); + friend void SkBitmapCache_setImmutableWithID(SkPixelRef*, uint32_t); + + using INHERITED = SkRefCnt; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPixmap.h b/vendor/artifacts/skia/include/core/SkPixmap.h new file mode 100644 index 000000000..12d5a0a1e --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPixmap.h @@ -0,0 +1,731 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPixmap_DEFINED +#define SkPixmap_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkColorType.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSamplingOptions.h" +#include "include/core/SkSize.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAssert.h" + +#include +#include + +class SkColorSpace; +enum SkAlphaType : int; +struct SkMask; + +/** \class SkPixmap + SkPixmap provides a utility to pair SkImageInfo with pixels and row bytes. + SkPixmap is a low level class which provides convenience functions to access + raster destinations. SkCanvas can not draw SkPixmap, nor does SkPixmap provide + a direct drawing destination. + + Use SkBitmap to draw pixels referenced by SkPixmap; use SkSurface to draw into + pixels referenced by SkPixmap. + + SkPixmap does not try to manage the lifetime of the pixel memory. Use SkPixelRef + to manage pixel memory; SkPixelRef is safe across threads. +*/ +class SK_API SkPixmap { +public: + + /** Creates an empty SkPixmap without pixels, with kUnknown_SkColorType, with + kUnknown_SkAlphaType, and with a width and height of zero. Use + reset() to associate pixels, SkColorType, SkAlphaType, width, and height + after SkPixmap has been created. + + @return empty SkPixmap + */ + SkPixmap() + : fPixels(nullptr), fRowBytes(0), fInfo(SkImageInfo::MakeUnknown(0, 0)) + {} + + /** Creates SkPixmap from info width, height, SkAlphaType, and SkColorType. + addr points to pixels, or nullptr. rowBytes should be info.width() times + info.bytesPerPixel(), or larger. + + No parameter checking is performed; it is up to the caller to ensure that + addr and rowBytes agree with info. + + The memory lifetime of pixels is managed by the caller. When SkPixmap goes + out of scope, addr is unaffected. + + SkPixmap may be later modified by reset() to change its size, pixel type, or + storage. + + @param info width, height, SkAlphaType, SkColorType of SkImageInfo + @param addr pointer to pixels allocated by caller; may be nullptr + @param rowBytes size of one row of addr; width times pixel size, or larger + @return initialized SkPixmap + */ + SkPixmap(const SkImageInfo& info, const void* addr, size_t rowBytes) + : fPixels(addr), fRowBytes(rowBytes), fInfo(info) + {} + + /** Sets width, height, row bytes to zero; pixel address to nullptr; SkColorType to + kUnknown_SkColorType; and SkAlphaType to kUnknown_SkAlphaType. + + The prior pixels are unaffected; it is up to the caller to release pixels + memory if desired. + + example: https://fiddle.skia.org/c/@Pixmap_reset + */ + void reset(); + + /** Sets width, height, SkAlphaType, and SkColorType from info. + Sets pixel address from addr, which may be nullptr. + Sets row bytes from rowBytes, which should be info.width() times + info.bytesPerPixel(), or larger. + + Does not check addr. Asserts if built with SK_DEBUG defined and if rowBytes is + too small to hold one row of pixels. + + The memory lifetime pixels are managed by the caller. When SkPixmap goes + out of scope, addr is unaffected. + + @param info width, height, SkAlphaType, SkColorType of SkImageInfo + @param addr pointer to pixels allocated by caller; may be nullptr + @param rowBytes size of one row of addr; width times pixel size, or larger + + example: https://fiddle.skia.org/c/@Pixmap_reset_2 + */ + void reset(const SkImageInfo& info, const void* addr, size_t rowBytes); + + /** Changes SkColorSpace in SkImageInfo; preserves width, height, SkAlphaType, and + SkColorType in SkImage, and leaves pixel address and row bytes unchanged. + SkColorSpace reference count is incremented. + + @param colorSpace SkColorSpace moved to SkImageInfo + + example: https://fiddle.skia.org/c/@Pixmap_setColorSpace + */ + void setColorSpace(sk_sp colorSpace); + + /** Deprecated. + */ + [[nodiscard]] bool reset(const SkMask& mask); + + /** Sets subset width, height, pixel address to intersection of SkPixmap with area, + if intersection is not empty; and return true. Otherwise, leave subset unchanged + and return false. + + Failing to read the return value generates a compile time warning. + + @param subset storage for width, height, pixel address of intersection + @param area bounds to intersect with SkPixmap + @return true if intersection of SkPixmap and area is not empty + */ + [[nodiscard]] bool extractSubset(SkPixmap* subset, const SkIRect& area) const; + + /** Returns width, height, SkAlphaType, SkColorType, and SkColorSpace. + + @return reference to SkImageInfo + */ + const SkImageInfo& info() const { return fInfo; } + + /** Returns row bytes, the interval from one pixel row to the next. Row bytes + is at least as large as: width() * info().bytesPerPixel(). + + Returns zero if colorType() is kUnknown_SkColorType. + It is up to the SkBitmap creator to ensure that row bytes is a useful value. + + @return byte length of pixel row + */ + size_t rowBytes() const { return fRowBytes; } + + /** Returns pixel address, the base address corresponding to the pixel origin. + + It is up to the SkPixmap creator to ensure that pixel address is a useful value. + + @return pixel address + */ + const void* addr() const { return fPixels; } + + /** Returns pixel count in each pixel row. Should be equal or less than: + rowBytes() / info().bytesPerPixel(). + + @return pixel width in SkImageInfo + */ + int width() const { return fInfo.width(); } + + /** Returns pixel row count. + + @return pixel height in SkImageInfo + */ + int height() const { return fInfo.height(); } + + /** + * Return the dimensions of the pixmap (from its ImageInfo) + */ + SkISize dimensions() const { return fInfo.dimensions(); } + + SkColorType colorType() const { return fInfo.colorType(); } + + SkAlphaType alphaType() const { return fInfo.alphaType(); } + + /** Returns SkColorSpace, the range of colors, associated with SkImageInfo. The + reference count of SkColorSpace is unchanged. The returned SkColorSpace is + immutable. + + @return SkColorSpace in SkImageInfo, or nullptr + */ + SkColorSpace* colorSpace() const; + + /** Returns smart pointer to SkColorSpace, the range of colors, associated with + SkImageInfo. The smart pointer tracks the number of objects sharing this + SkColorSpace reference so the memory is released when the owners destruct. + + The returned SkColorSpace is immutable. + + @return SkColorSpace in SkImageInfo wrapped in a smart pointer + */ + sk_sp refColorSpace() const; + + /** Returns true if SkAlphaType is kOpaque_SkAlphaType. + Does not check if SkColorType allows alpha, or if any pixel value has + transparency. + + @return true if SkImageInfo has opaque SkAlphaType + */ + bool isOpaque() const { return fInfo.isOpaque(); } + + /** Returns SkIRect { 0, 0, width(), height() }. + + @return integral rectangle from origin to width() and height() + */ + SkIRect bounds() const { return SkIRect::MakeWH(this->width(), this->height()); } + + /** Returns number of pixels that fit on row. Should be greater than or equal to + width(). + + @return maximum pixels per row + */ + int rowBytesAsPixels() const { return int(fRowBytes >> this->shiftPerPixel()); } + + /** Returns bit shift converting row bytes to row pixels. + Returns zero for kUnknown_SkColorType. + + @return one of: 0, 1, 2, 3; left shift to convert pixels to bytes + */ + int shiftPerPixel() const { return fInfo.shiftPerPixel(); } + + /** Returns minimum memory required for pixel storage. + Does not include unused memory on last row when rowBytesAsPixels() exceeds width(). + Returns SIZE_MAX if result does not fit in size_t. + Returns zero if height() or width() is 0. + Returns height() times rowBytes() if colorType() is kUnknown_SkColorType. + + @return size in bytes of image buffer + */ + size_t computeByteSize() const { return fInfo.computeByteSize(fRowBytes); } + + /** Returns true if all pixels are opaque. SkColorType determines how pixels + are encoded, and whether pixel describes alpha. Returns true for SkColorType + without alpha in each pixel; for other SkColorType, returns true if all + pixels have alpha values equivalent to 1.0 or greater. + + For SkColorType kRGB_565_SkColorType or kGray_8_SkColorType: always + returns true. For SkColorType kAlpha_8_SkColorType, kBGRA_8888_SkColorType, + kRGBA_8888_SkColorType: returns true if all pixel alpha values are 255. + For SkColorType kARGB_4444_SkColorType: returns true if all pixel alpha values are 15. + For kRGBA_F16_SkColorType: returns true if all pixel alpha values are 1.0 or + greater. + + Returns false for kUnknown_SkColorType. + + @return true if all pixels have opaque values or SkColorType is opaque + + example: https://fiddle.skia.org/c/@Pixmap_computeIsOpaque + */ + bool computeIsOpaque() const; + + /** Returns pixel at (x, y) as unpremultiplied color. + Returns black with alpha if SkColorType is kAlpha_8_SkColorType. + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined; and returns undefined values or may crash if + SK_RELEASE is defined. Fails if SkColorType is kUnknown_SkColorType or + pixel address is nullptr. + + SkColorSpace in SkImageInfo is ignored. Some color precision may be lost in the + conversion to unpremultiplied color; original pixel data may have additional + precision. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return pixel converted to unpremultiplied color + + example: https://fiddle.skia.org/c/@Pixmap_getColor + */ + SkColor getColor(int x, int y) const; + + /** Returns pixel at (x, y) as unpremultiplied color as an SkColor4f. + Returns black with alpha if SkColorType is kAlpha_8_SkColorType. + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined; and returns undefined values or may crash if + SK_RELEASE is defined. Fails if SkColorType is kUnknown_SkColorType or + pixel address is nullptr. + + SkColorSpace in SkImageInfo is ignored. Some color precision may be lost in the + conversion to unpremultiplied color; original pixel data may have additional + precision, though this is less likely than for getColor(). Rounding errors may + occur if the underlying type has lower precision. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return pixel converted to unpremultiplied float color + */ + SkColor4f getColor4f(int x, int y) const; + + /** Look up the pixel at (x,y) and return its alpha component, normalized to [0..1]. + This is roughly equivalent to SkGetColorA(getColor()), but can be more efficent + (and more precise if the pixels store more than 8 bits per component). + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return alpha converted to normalized float + */ + float getAlphaf(int x, int y) const; + + /** Returns readable pixel address at (x, y). Returns nullptr if SkPixelRef is nullptr. + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined. Returns nullptr if SkColorType is kUnknown_SkColorType. + + Performs a lookup of pixel size; for better performance, call + one of: addr8, addr16, addr32, addr64, or addrF16(). + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return readable generic pointer to pixel + */ + const void* addr(int x, int y) const { + return (const char*)fPixels + fInfo.computeOffset(x, y, fRowBytes); + } + + /** Returns readable base pixel address. Result is addressable as unsigned 8-bit bytes. + Will trigger an assert() if SkColorType is not kAlpha_8_SkColorType or + kGray_8_SkColorType, and is built with SK_DEBUG defined. + + One byte corresponds to one pixel. + + @return readable unsigned 8-bit pointer to pixels + */ + const uint8_t* addr8() const { + SkASSERT(1 == fInfo.bytesPerPixel()); + return reinterpret_cast(fPixels); + } + + /** Returns readable base pixel address. Result is addressable as unsigned 16-bit words. + Will trigger an assert() if SkColorType is not kRGB_565_SkColorType or + kARGB_4444_SkColorType, and is built with SK_DEBUG defined. + + One word corresponds to one pixel. + + @return readable unsigned 16-bit pointer to pixels + */ + const uint16_t* addr16() const { + SkASSERT(2 == fInfo.bytesPerPixel()); + return reinterpret_cast(fPixels); + } + + /** Returns readable base pixel address. Result is addressable as unsigned 32-bit words. + Will trigger an assert() if SkColorType is not kRGBA_8888_SkColorType or + kBGRA_8888_SkColorType, and is built with SK_DEBUG defined. + + One word corresponds to one pixel. + + @return readable unsigned 32-bit pointer to pixels + */ + const uint32_t* addr32() const { + SkASSERT(4 == fInfo.bytesPerPixel()); + return reinterpret_cast(fPixels); + } + + /** Returns readable base pixel address. Result is addressable as unsigned 64-bit words. + Will trigger an assert() if SkColorType is not kRGBA_F16_SkColorType and is built + with SK_DEBUG defined. + + One word corresponds to one pixel. + + @return readable unsigned 64-bit pointer to pixels + */ + const uint64_t* addr64() const { + SkASSERT(8 == fInfo.bytesPerPixel()); + return reinterpret_cast(fPixels); + } + + /** Returns readable base pixel address. Result is addressable as unsigned 16-bit words. + Will trigger an assert() if SkColorType is not kRGBA_F16_SkColorType and is built + with SK_DEBUG defined. + + Each word represents one color component encoded as a half float. + Four words correspond to one pixel. + + @return readable unsigned 16-bit pointer to first component of pixels + */ + const uint16_t* addrF16() const { + SkASSERT(8 == fInfo.bytesPerPixel()); + SkASSERT(kRGBA_F16_SkColorType == fInfo.colorType() || + kRGBA_F16Norm_SkColorType == fInfo.colorType()); + return reinterpret_cast(fPixels); + } + + /** Returns readable pixel address at (x, y). + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined. + + Will trigger an assert() if SkColorType is not kAlpha_8_SkColorType or + kGray_8_SkColorType, and is built with SK_DEBUG defined. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return readable unsigned 8-bit pointer to pixel at (x, y) + */ + const uint8_t* addr8(int x, int y) const { + SkASSERTF(x >= 0 && x < this->width(), "x=%d; width=%d\n", x, fInfo.width()); + SkASSERTF(y >= 0 && y < this->height(), "y=%d; height=%d\n", y, fInfo.height()); + return (const uint8_t*)((const char*)this->addr8() + (size_t)y * fRowBytes + (x << 0)); + } + + /** Returns readable pixel address at (x, y). + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined. + + Will trigger an assert() if SkColorType is not kRGB_565_SkColorType or + kARGB_4444_SkColorType, and is built with SK_DEBUG defined. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return readable unsigned 16-bit pointer to pixel at (x, y) + */ + const uint16_t* addr16(int x, int y) const { + SkASSERTF(x >= 0 && x < this->width(), "x=%d; width=%d\n", x, fInfo.width()); + SkASSERTF(y >= 0 && y < this->height(), "y=%d; height=%d\n", y, fInfo.height()); + return (const uint16_t*)((const char*)this->addr16() + (size_t)y * fRowBytes + (x << 1)); + } + + /** Returns readable pixel address at (x, y). + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined. + + Will trigger an assert() if SkColorType is not kRGBA_8888_SkColorType or + kBGRA_8888_SkColorType, and is built with SK_DEBUG defined. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return readable unsigned 32-bit pointer to pixel at (x, y) + */ + const uint32_t* addr32(int x, int y) const { + SkASSERTF(x >= 0 && x < this->width(), "x=%d; width=%d\n", x, fInfo.width()); + SkASSERTF(y >= 0 && y < this->height(), "y=%d; height=%d\n", y, fInfo.height()); + return (const uint32_t*)((const char*)this->addr32() + (size_t)y * fRowBytes + (x << 2)); + } + + /** Returns readable pixel address at (x, y). + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined. + + Will trigger an assert() if SkColorType is not kRGBA_F16_SkColorType and is built + with SK_DEBUG defined. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return readable unsigned 64-bit pointer to pixel at (x, y) + */ + const uint64_t* addr64(int x, int y) const { + SkASSERTF(x >= 0 && x < this->width(), "x=%d; width=%d\n", x, fInfo.width()); + SkASSERTF(y >= 0 && y < this->height(), "y=%d; height=%d\n", y, fInfo.height()); + return (const uint64_t*)((const char*)this->addr64() + (size_t)y * fRowBytes + (x << 3)); + } + + /** Returns readable pixel address at (x, y). + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined. + + Will trigger an assert() if SkColorType is not kRGBA_F16_SkColorType and is built + with SK_DEBUG defined. + + Each unsigned 16-bit word represents one color component encoded as a half float. + Four words correspond to one pixel. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return readable unsigned 16-bit pointer to pixel component at (x, y) + */ + const uint16_t* addrF16(int x, int y) const { + SkASSERT(kRGBA_F16_SkColorType == fInfo.colorType() || + kRGBA_F16Norm_SkColorType == fInfo.colorType()); + return reinterpret_cast(this->addr64(x, y)); + } + + /** Returns writable base pixel address. + + @return writable generic base pointer to pixels + */ + void* writable_addr() const { return const_cast(fPixels); } + + /** Returns writable pixel address at (x, y). + + Input is not validated: out of bounds values of x or y trigger an assert() if + built with SK_DEBUG defined. Returns zero if SkColorType is kUnknown_SkColorType. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return writable generic pointer to pixel + */ + void* writable_addr(int x, int y) const { + return const_cast(this->addr(x, y)); + } + + /** Returns writable pixel address at (x, y). Result is addressable as unsigned + 8-bit bytes. Will trigger an assert() if SkColorType is not kAlpha_8_SkColorType + or kGray_8_SkColorType, and is built with SK_DEBUG defined. + + One byte corresponds to one pixel. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return writable unsigned 8-bit pointer to pixels + */ + uint8_t* writable_addr8(int x, int y) const { + return const_cast(this->addr8(x, y)); + } + + /** Returns writable_addr pixel address at (x, y). Result is addressable as unsigned + 16-bit words. Will trigger an assert() if SkColorType is not kRGB_565_SkColorType + or kARGB_4444_SkColorType, and is built with SK_DEBUG defined. + + One word corresponds to one pixel. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return writable unsigned 16-bit pointer to pixel + */ + uint16_t* writable_addr16(int x, int y) const { + return const_cast(this->addr16(x, y)); + } + + /** Returns writable pixel address at (x, y). Result is addressable as unsigned + 32-bit words. Will trigger an assert() if SkColorType is not + kRGBA_8888_SkColorType or kBGRA_8888_SkColorType, and is built with SK_DEBUG + defined. + + One word corresponds to one pixel. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return writable unsigned 32-bit pointer to pixel + */ + uint32_t* writable_addr32(int x, int y) const { + return const_cast(this->addr32(x, y)); + } + + /** Returns writable pixel address at (x, y). Result is addressable as unsigned + 64-bit words. Will trigger an assert() if SkColorType is not + kRGBA_F16_SkColorType and is built with SK_DEBUG defined. + + One word corresponds to one pixel. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return writable unsigned 64-bit pointer to pixel + */ + uint64_t* writable_addr64(int x, int y) const { + return const_cast(this->addr64(x, y)); + } + + /** Returns writable pixel address at (x, y). Result is addressable as unsigned + 16-bit words. Will trigger an assert() if SkColorType is not + kRGBA_F16_SkColorType and is built with SK_DEBUG defined. + + Each word represents one color component encoded as a half float. + Four words correspond to one pixel. + + @param x column index, zero or greater, and less than width() + @param y row index, zero or greater, and less than height() + @return writable unsigned 16-bit pointer to first component of pixel + */ + uint16_t* writable_addrF16(int x, int y) const { + return reinterpret_cast(writable_addr64(x, y)); + } + + /** Copies a SkRect of pixels to dstPixels. Copy starts at (0, 0), and does not + exceed SkPixmap (width(), height()). + + dstInfo specifies width, height, SkColorType, SkAlphaType, and + SkColorSpace of destination. dstRowBytes specifics the gap from one destination + row to the next. Returns true if pixels are copied. Returns false if + dstInfo address equals nullptr, or dstRowBytes is less than dstInfo.minRowBytes(). + + Pixels are copied only if pixel conversion is possible. If SkPixmap colorType() is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dstInfo.colorType() must match. + If SkPixmap colorType() is kGray_8_SkColorType, dstInfo.colorSpace() must match. + If SkPixmap alphaType() is kOpaque_SkAlphaType, dstInfo.alphaType() must + match. If SkPixmap colorSpace() is nullptr, dstInfo.colorSpace() must match. Returns + false if pixel conversion is not possible. + + Returns false if SkPixmap width() or height() is zero or negative. + + @param dstInfo destination width, height, SkColorType, SkAlphaType, SkColorSpace + @param dstPixels destination pixel storage + @param dstRowBytes destination row length + @return true if pixels are copied to dstPixels + */ + bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes) const { + return this->readPixels(dstInfo, dstPixels, dstRowBytes, 0, 0); + } + + /** Copies a SkRect of pixels to dstPixels. Copy starts at (srcX, srcY), and does not + exceed SkPixmap (width(), height()). + + dstInfo specifies width, height, SkColorType, SkAlphaType, and + SkColorSpace of destination. dstRowBytes specifics the gap from one destination + row to the next. Returns true if pixels are copied. Returns false if + dstInfo address equals nullptr, or dstRowBytes is less than dstInfo.minRowBytes(). + + Pixels are copied only if pixel conversion is possible. If SkPixmap colorType() is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dstInfo.colorType() must match. + If SkPixmap colorType() is kGray_8_SkColorType, dstInfo.colorSpace() must match. + If SkPixmap alphaType() is kOpaque_SkAlphaType, dstInfo.alphaType() must + match. If SkPixmap colorSpace() is nullptr, dstInfo.colorSpace() must match. Returns + false if pixel conversion is not possible. + + srcX and srcY may be negative to copy only top or left of source. Returns + false if SkPixmap width() or height() is zero or negative. Returns false if: + abs(srcX) >= Pixmap width(), or if abs(srcY) >= Pixmap height(). + + @param dstInfo destination width, height, SkColorType, SkAlphaType, SkColorSpace + @param dstPixels destination pixel storage + @param dstRowBytes destination row length + @param srcX column index whose absolute value is less than width() + @param srcY row index whose absolute value is less than height() + @return true if pixels are copied to dstPixels + */ + bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, int srcX, + int srcY) const; + + /** Copies a SkRect of pixels to dst. Copy starts at (srcX, srcY), and does not + exceed SkPixmap (width(), height()). dst specifies width, height, SkColorType, + SkAlphaType, and SkColorSpace of destination. Returns true if pixels are copied. + Returns false if dst address equals nullptr, or dst.rowBytes() is less than + dst SkImageInfo::minRowBytes. + + Pixels are copied only if pixel conversion is possible. If SkPixmap colorType() is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dst.info().colorType must match. + If SkPixmap colorType() is kGray_8_SkColorType, dst.info().colorSpace must match. + If SkPixmap alphaType() is kOpaque_SkAlphaType, dst.info().alphaType must + match. If SkPixmap colorSpace() is nullptr, dst.info().colorSpace must match. Returns + false if pixel conversion is not possible. + + srcX and srcY may be negative to copy only top or left of source. Returns + false SkPixmap width() or height() is zero or negative. Returns false if: + abs(srcX) >= Pixmap width(), or if abs(srcY) >= Pixmap height(). + + @param dst SkImageInfo and pixel address to write to + @param srcX column index whose absolute value is less than width() + @param srcY row index whose absolute value is less than height() + @return true if pixels are copied to dst + */ + bool readPixels(const SkPixmap& dst, int srcX, int srcY) const { + return this->readPixels(dst.info(), dst.writable_addr(), dst.rowBytes(), srcX, srcY); + } + + /** Copies pixels inside bounds() to dst. dst specifies width, height, SkColorType, + SkAlphaType, and SkColorSpace of destination. Returns true if pixels are copied. + Returns false if dst address equals nullptr, or dst.rowBytes() is less than + dst SkImageInfo::minRowBytes. + + Pixels are copied only if pixel conversion is possible. If SkPixmap colorType() is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dst SkColorType must match. + If SkPixmap colorType() is kGray_8_SkColorType, dst SkColorSpace must match. + If SkPixmap alphaType() is kOpaque_SkAlphaType, dst SkAlphaType must + match. If SkPixmap colorSpace() is nullptr, dst SkColorSpace must match. Returns + false if pixel conversion is not possible. + + Returns false if SkPixmap width() or height() is zero or negative. + + @param dst SkImageInfo and pixel address to write to + @return true if pixels are copied to dst + */ + bool readPixels(const SkPixmap& dst) const { + return this->readPixels(dst.info(), dst.writable_addr(), dst.rowBytes(), 0, 0); + } + + /** Copies SkBitmap to dst, scaling pixels to fit dst.width() and dst.height(), and + converting pixels to match dst.colorType() and dst.alphaType(). Returns true if + pixels are copied. Returns false if dst address is nullptr, or dst.rowBytes() is + less than dst SkImageInfo::minRowBytes. + + Pixels are copied only if pixel conversion is possible. If SkPixmap colorType() is + kGray_8_SkColorType, or kAlpha_8_SkColorType; dst SkColorType must match. + If SkPixmap colorType() is kGray_8_SkColorType, dst SkColorSpace must match. + If SkPixmap alphaType() is kOpaque_SkAlphaType, dst SkAlphaType must + match. If SkPixmap colorSpace() is nullptr, dst SkColorSpace must match. Returns + false if pixel conversion is not possible. + + Returns false if SkBitmap width() or height() is zero or negative. + + @param dst SkImageInfo and pixel address to write to + @return true if pixels are scaled to fit dst + + example: https://fiddle.skia.org/c/@Pixmap_scalePixels + */ + bool scalePixels(const SkPixmap& dst, const SkSamplingOptions&) const; + + /** Writes color to pixels bounded by subset; returns true on success. + Returns false if colorType() is kUnknown_SkColorType, or if subset does + not intersect bounds(). + + @param color sRGB unpremultiplied color to write + @param subset bounding integer SkRect of written pixels + @return true if pixels are changed + + example: https://fiddle.skia.org/c/@Pixmap_erase + */ + bool erase(SkColor color, const SkIRect& subset) const; + + /** Writes color to pixels inside bounds(); returns true on success. + Returns false if colorType() is kUnknown_SkColorType, or if bounds() + is empty. + + @param color sRGB unpremultiplied color to write + @return true if pixels are changed + */ + bool erase(SkColor color) const { return this->erase(color, this->bounds()); } + + /** Writes color to pixels bounded by subset; returns true on success. + if subset is nullptr, writes colors pixels inside bounds(). Returns false if + colorType() is kUnknown_SkColorType, if subset is not nullptr and does + not intersect bounds(), or if subset is nullptr and bounds() is empty. + + @param color unpremultiplied color to write + @param subset bounding integer SkRect of pixels to write; may be nullptr + @return true if pixels are changed + */ + bool erase(const SkColor4f& color, const SkIRect* subset = nullptr) const; + +private: + const void* fPixels; + size_t fRowBytes; + SkImageInfo fInfo; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkPoint.h b/vendor/artifacts/skia/include/core/SkPoint.h new file mode 100644 index 000000000..4c7e0943c --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPoint.h @@ -0,0 +1,10 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + */ + +// SkPoint is part of the public API, but is also required by code in base. The following include +// forwarding allows SkPoint to participate in the API and for use by code in base. + +#include "include/private/base/SkPoint_impl.h" // IWYU pragma: export diff --git a/vendor/artifacts/skia/include/core/SkPoint3.h b/vendor/artifacts/skia/include/core/SkPoint3.h new file mode 100644 index 000000000..abf8dfd9c --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkPoint3.h @@ -0,0 +1,149 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPoint3_DEFINED +#define SkPoint3_DEFINED + +#include "include/core/SkScalar.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkFloatingPoint.h" + +struct SK_API SkPoint3 { + SkScalar fX, fY, fZ; + + static SkPoint3 Make(SkScalar x, SkScalar y, SkScalar z) { + SkPoint3 pt; + pt.set(x, y, z); + return pt; + } + + SkScalar x() const { return fX; } + SkScalar y() const { return fY; } + SkScalar z() const { return fZ; } + + void set(SkScalar x, SkScalar y, SkScalar z) { fX = x; fY = y; fZ = z; } + + friend bool operator==(const SkPoint3& a, const SkPoint3& b) { + return a.fX == b.fX && a.fY == b.fY && a.fZ == b.fZ; + } + + friend bool operator!=(const SkPoint3& a, const SkPoint3& b) { + return !(a == b); + } + + /** Returns the Euclidian distance from (0,0,0) to (x,y,z) + */ + static SkScalar Length(SkScalar x, SkScalar y, SkScalar z); + + /** Return the Euclidian distance from (0,0,0) to the point + */ + SkScalar length() const { return SkPoint3::Length(fX, fY, fZ); } + + /** Set the point (vector) to be unit-length in the same direction as it + already points. If the point has a degenerate length (i.e., nearly 0) + then set it to (0,0,0) and return false; otherwise return true. + */ + bool normalize(); + + /** Return a new point whose X, Y and Z coordinates are scaled. + */ + SkPoint3 makeScale(SkScalar scale) const { + SkPoint3 p; + p.set(scale * fX, scale * fY, scale * fZ); + return p; + } + + /** Scale the point's coordinates by scale. + */ + void scale(SkScalar value) { + fX *= value; + fY *= value; + fZ *= value; + } + + /** Return a new point whose X, Y and Z coordinates are the negative of the + original point's + */ + SkPoint3 operator-() const { + SkPoint3 neg; + neg.fX = -fX; + neg.fY = -fY; + neg.fZ = -fZ; + return neg; + } + + /** Returns a new point whose coordinates are the difference between + a and b (i.e., a - b) + */ + friend SkPoint3 operator-(const SkPoint3& a, const SkPoint3& b) { + return { a.fX - b.fX, a.fY - b.fY, a.fZ - b.fZ }; + } + + /** Returns a new point whose coordinates are the sum of a and b (a + b) + */ + friend SkPoint3 operator+(const SkPoint3& a, const SkPoint3& b) { + return { a.fX + b.fX, a.fY + b.fY, a.fZ + b.fZ }; + } + + /** Add v's coordinates to the point's + */ + void operator+=(const SkPoint3& v) { + fX += v.fX; + fY += v.fY; + fZ += v.fZ; + } + + /** Subtract v's coordinates from the point's + */ + void operator-=(const SkPoint3& v) { + fX -= v.fX; + fY -= v.fY; + fZ -= v.fZ; + } + + friend SkPoint3 operator*(SkScalar t, SkPoint3 p) { + return { t * p.fX, t * p.fY, t * p.fZ }; + } + + /** Returns true if fX, fY, and fZ are measurable values. + + @return true for values other than infinities and NaN + */ + bool isFinite() const { + return SkIsFinite(fX, fY, fZ); + } + + /** Returns the dot product of a and b, treating them as 3D vectors + */ + static SkScalar DotProduct(const SkPoint3& a, const SkPoint3& b) { + return a.fX * b.fX + a.fY * b.fY + a.fZ * b.fZ; + } + + SkScalar dot(const SkPoint3& vec) const { + return DotProduct(*this, vec); + } + + /** Returns the cross product of a and b, treating them as 3D vectors + */ + static SkPoint3 CrossProduct(const SkPoint3& a, const SkPoint3& b) { + SkPoint3 result; + result.fX = a.fY*b.fZ - a.fZ*b.fY; + result.fY = a.fZ*b.fX - a.fX*b.fZ; + result.fZ = a.fX*b.fY - a.fY*b.fX; + + return result; + } + + SkPoint3 cross(const SkPoint3& vec) const { + return CrossProduct(*this, vec); + } +}; + +typedef SkPoint3 SkVector3; +typedef SkPoint3 SkColor3f; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkRRect.h b/vendor/artifacts/skia/include/core/SkRRect.h new file mode 100644 index 000000000..20086dc78 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkRRect.h @@ -0,0 +1,540 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkRRect_DEFINED +#define SkRRect_DEFINED + +#include "include/core/SkPoint.h" +#include "include/core/SkRect.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkMacros.h" + +#include +#include +#include + +class SkMatrix; +class SkString; + +/** \class SkRRect + SkRRect describes a rounded rectangle with a bounds and a pair of radii for each corner. + The bounds and radii can be set so that SkRRect describes: a rectangle with sharp corners; + a circle; an oval; or a rectangle with one or more rounded corners. + + SkRRect allows implementing CSS properties that describe rounded corners. + SkRRect may have up to eight different radii, one for each axis on each of its four + corners. + + SkRRect may modify the provided parameters when initializing bounds and radii. + If either axis radii is zero or less: radii are stored as zero; corner is square. + If corner curves overlap, radii are proportionally reduced to fit within bounds. +*/ +SK_BEGIN_REQUIRE_DENSE +class SK_API SkRRect { +public: + + /** Initializes bounds at (0, 0), the origin, with zero width and height. + Initializes corner radii to (0, 0), and sets type of kEmpty_Type. + + @return empty SkRRect + */ + SkRRect() = default; + + /** Initializes to copy of rrect bounds and corner radii. + + @param rrect bounds and corner to copy + @return copy of rrect + */ + SkRRect(const SkRRect& rrect) = default; + + /** Copies rrect bounds and corner radii. + + @param rrect bounds and corner to copy + @return copy of rrect + */ + SkRRect& operator=(const SkRRect& rrect) = default; + + /** \enum SkRRect::Type + Type describes possible specializations of SkRRect. Each Type is + exclusive; a SkRRect may only have one type. + + Type members become progressively less restrictive; larger values of + Type have more degrees of freedom than smaller values. + */ + enum Type { + kEmpty_Type, //!< zero width or height + kRect_Type, //!< non-zero width and height, and zeroed radii + kOval_Type, //!< non-zero width and height filled with radii + kSimple_Type, //!< non-zero width and height with equal radii + kNinePatch_Type, //!< non-zero width and height with axis-aligned radii + kComplex_Type, //!< non-zero width and height with arbitrary radii + kLastType = kComplex_Type, //!< largest Type value + }; + + Type getType() const { + SkASSERT(this->isValid()); + return static_cast(fType); + } + + Type type() const { return this->getType(); } + + inline bool isEmpty() const { return kEmpty_Type == this->getType(); } + inline bool isRect() const { return kRect_Type == this->getType(); } + inline bool isOval() const { return kOval_Type == this->getType(); } + inline bool isSimple() const { return kSimple_Type == this->getType(); } + inline bool isNinePatch() const { return kNinePatch_Type == this->getType(); } + inline bool isComplex() const { return kComplex_Type == this->getType(); } + + /** Returns span on the x-axis. This does not check if result fits in 32-bit float; + result may be infinity. + + @return rect().fRight minus rect().fLeft + */ + SkScalar width() const { return fRect.width(); } + + /** Returns span on the y-axis. This does not check if result fits in 32-bit float; + result may be infinity. + + @return rect().fBottom minus rect().fTop + */ + SkScalar height() const { return fRect.height(); } + + /** Returns top-left corner radii. If type() returns kEmpty_Type, kRect_Type, + kOval_Type, or kSimple_Type, returns a value representative of all corner radii. + If type() returns kNinePatch_Type or kComplex_Type, at least one of the + remaining three corners has a different value. + + @return corner radii for simple types + */ + SkVector getSimpleRadii() const { + return fRadii[0]; + } + + /** Sets bounds to zero width and height at (0, 0), the origin. Sets + corner radii to zero and sets type to kEmpty_Type. + */ + void setEmpty() { *this = SkRRect(); } + + /** Sets bounds to sorted rect, and sets corner radii to zero. + If set bounds has width and height, and sets type to kRect_Type; + otherwise, sets type to kEmpty_Type. + + @param rect bounds to set + */ + void setRect(const SkRect& rect) { + if (!this->initializeRect(rect)) { + return; + } + + memset(fRadii, 0, sizeof(fRadii)); + fType = kRect_Type; + + SkASSERT(this->isValid()); + } + + /** Initializes bounds at (0, 0), the origin, with zero width and height. + Initializes corner radii to (0, 0), and sets type of kEmpty_Type. + + @return empty SkRRect + */ + static SkRRect MakeEmpty() { return SkRRect(); } + + /** Initializes to copy of r bounds and zeroes corner radii. + + @param r bounds to copy + @return copy of r + */ + static SkRRect MakeRect(const SkRect& r) { + SkRRect rr; + rr.setRect(r); + return rr; + } + + /** Initializes to oval, x-axis radii to half oval.width(), and all y-axis radii + to half oval.height(). If oval bounds is empty, sets to kEmpty_Type. + Otherwise, sets to kOval_Type. + + @param oval bounds of oval + @return oval + */ + static SkRRect MakeOval(const SkRect& oval) { + SkRRect rr; + rr.setOval(oval); + return rr; + } + + /** Initializes to rounded rectangle with the same radii for all four corners. + If rect is empty, sets to kEmpty_Type. + Otherwise, if xRad and yRad are zero, sets to kRect_Type. + Otherwise, if xRad is at least half rect.width() and yRad is at least half + rect.height(), sets to kOval_Type. + Otherwise, sets to kSimple_Type. + + @param rect bounds of rounded rectangle + @param xRad x-axis radius of corners + @param yRad y-axis radius of corners + @return rounded rectangle + */ + static SkRRect MakeRectXY(const SkRect& rect, SkScalar xRad, SkScalar yRad) { + SkRRect rr; + rr.setRectXY(rect, xRad, yRad); + return rr; + } + + /** Initializes to rounded rectangle with a radii array for individual control + of all four corners. + + If rect is empty, sets to kEmpty_Type. + Otherwise, if one of each corner radii are zero, sets to kRect_Type. + Otherwise, if all x-axis radii are equal and at least half rect.width(), and + all y-axis radii are equal at least half rect.height(), sets to kOval_Type. + Otherwise, if all x-axis radii are equal, and all y-axis radii are equal, + sets to kSimple_Type. Otherwise, sets to kNinePatch_Type. + + @param rect bounds of rounded rectangle + @param radii corner x-axis and y-axis radii + + example: https://fiddle.skia.org/c/@RRect_setRectRadii + */ + static SkRRect MakeRectRadii(const SkRect& rect, const SkVector radii[4]) { + SkRRect rr; + rr.setRectRadii(rect, radii); + return rr; + } + + /** Sets bounds to oval, x-axis radii to half oval.width(), and all y-axis radii + to half oval.height(). If oval bounds is empty, sets to kEmpty_Type. + Otherwise, sets to kOval_Type. + + @param oval bounds of oval + */ + void setOval(const SkRect& oval); + + /** Sets to rounded rectangle with the same radii for all four corners. + If rect is empty, sets to kEmpty_Type. + Otherwise, if xRad or yRad is zero, sets to kRect_Type. + Otherwise, if xRad is at least half rect.width() and yRad is at least half + rect.height(), sets to kOval_Type. + Otherwise, sets to kSimple_Type. + + @param rect bounds of rounded rectangle + @param xRad x-axis radius of corners + @param yRad y-axis radius of corners + + example: https://fiddle.skia.org/c/@RRect_setRectXY + */ + void setRectXY(const SkRect& rect, SkScalar xRad, SkScalar yRad); + + /** Sets bounds to rect. Sets radii to (leftRad, topRad), (rightRad, topRad), + (rightRad, bottomRad), (leftRad, bottomRad). + + If rect is empty, sets to kEmpty_Type. + Otherwise, if leftRad and rightRad are zero, sets to kRect_Type. + Otherwise, if topRad and bottomRad are zero, sets to kRect_Type. + Otherwise, if leftRad and rightRad are equal and at least half rect.width(), and + topRad and bottomRad are equal at least half rect.height(), sets to kOval_Type. + Otherwise, if leftRad and rightRad are equal, and topRad and bottomRad are equal, + sets to kSimple_Type. Otherwise, sets to kNinePatch_Type. + + Nine patch refers to the nine parts defined by the radii: one center rectangle, + four edge patches, and four corner patches. + + @param rect bounds of rounded rectangle + @param leftRad left-top and left-bottom x-axis radius + @param topRad left-top and right-top y-axis radius + @param rightRad right-top and right-bottom x-axis radius + @param bottomRad left-bottom and right-bottom y-axis radius + */ + void setNinePatch(const SkRect& rect, SkScalar leftRad, SkScalar topRad, + SkScalar rightRad, SkScalar bottomRad); + + /** Sets bounds to rect. Sets radii array for individual control of all four corners. + + If rect is empty, sets to kEmpty_Type. + Otherwise, if one of each corner radii are zero, sets to kRect_Type. + Otherwise, if all x-axis radii are equal and at least half rect.width(), and + all y-axis radii are equal at least half rect.height(), sets to kOval_Type. + Otherwise, if all x-axis radii are equal, and all y-axis radii are equal, + sets to kSimple_Type. Otherwise, sets to kNinePatch_Type. + + @param rect bounds of rounded rectangle + @param radii corner x-axis and y-axis radii + + example: https://fiddle.skia.org/c/@RRect_setRectRadii + */ + void setRectRadii(const SkRect& rect, const SkVector radii[4]); + + /** \enum SkRRect::Corner + The radii are stored: top-left, top-right, bottom-right, bottom-left. + */ + enum Corner { + kUpperLeft_Corner, //!< index of top-left corner radii + kUpperRight_Corner, //!< index of top-right corner radii + kLowerRight_Corner, //!< index of bottom-right corner radii + kLowerLeft_Corner, //!< index of bottom-left corner radii + }; + + /** Returns bounds. Bounds may have zero width or zero height. Bounds right is + greater than or equal to left; bounds bottom is greater than or equal to top. + Result is identical to getBounds(). + + @return bounding box + */ + const SkRect& rect() const { return fRect; } + + /** Returns scalar pair for radius of curve on x-axis and y-axis for one corner. + Both radii may be zero. If not zero, both are positive and finite. + + @return x-axis and y-axis radii for one corner + */ + SkVector radii(Corner corner) const { return fRadii[corner]; } + /** + * Returns the corner radii for all four corners, in the same order as `Corner`. + */ + SkSpan radii() const { return SkSpan(fRadii, 4); } + + /** Returns bounds. Bounds may have zero width or zero height. Bounds right is + greater than or equal to left; bounds bottom is greater than or equal to top. + Result is identical to rect(). + + @return bounding box + */ + const SkRect& getBounds() const { return fRect; } + + /** Returns true if bounds and radii in a are equal to bounds and radii in b. + + a and b are not equal if either contain NaN. a and b are equal if members + contain zeroes with different signs. + + @param a SkRect bounds and radii to compare + @param b SkRect bounds and radii to compare + @return true if members are equal + */ + friend bool operator==(const SkRRect& a, const SkRRect& b) { + return a.fRect == b.fRect && SkScalarsEqual(&a.fRadii[0].fX, &b.fRadii[0].fX, 8); + } + + /** Returns true if bounds and radii in a are not equal to bounds and radii in b. + + a and b are not equal if either contain NaN. a and b are equal if members + contain zeroes with different signs. + + @param a SkRect bounds and radii to compare + @param b SkRect bounds and radii to compare + @return true if members are not equal + */ + friend bool operator!=(const SkRRect& a, const SkRRect& b) { + return a.fRect != b.fRect || !SkScalarsEqual(&a.fRadii[0].fX, &b.fRadii[0].fX, 8); + } + + /** Copies SkRRect to dst, then insets dst bounds by dx and dy, and adjusts dst + radii by dx and dy. dx and dy may be positive, negative, or zero. dst may be + SkRRect. + + If either corner radius is zero, the corner has no curvature and is unchanged. + Otherwise, if adjusted radius becomes negative, pins radius to zero. + If dx exceeds half dst bounds width, dst bounds left and right are set to + bounds x-axis center. If dy exceeds half dst bounds height, dst bounds top and + bottom are set to bounds y-axis center. + + If dx or dy cause the bounds to become infinite, dst bounds is zeroed. + + @param dx added to rect().fLeft, and subtracted from rect().fRight + @param dy added to rect().fTop, and subtracted from rect().fBottom + @param dst insets bounds and radii + + example: https://fiddle.skia.org/c/@RRect_inset + */ + void inset(SkScalar dx, SkScalar dy, SkRRect* dst) const; + + /** Insets bounds by dx and dy, and adjusts radii by dx and dy. dx and dy may be + positive, negative, or zero. + + If either corner radius is zero, the corner has no curvature and is unchanged. + Otherwise, if adjusted radius becomes negative, pins radius to zero. + If dx exceeds half bounds width, bounds left and right are set to + bounds x-axis center. If dy exceeds half bounds height, bounds top and + bottom are set to bounds y-axis center. + + If dx or dy cause the bounds to become infinite, bounds is zeroed. + + @param dx added to rect().fLeft, and subtracted from rect().fRight + @param dy added to rect().fTop, and subtracted from rect().fBottom + */ + void inset(SkScalar dx, SkScalar dy) { + this->inset(dx, dy, this); + } + + /** Outsets dst bounds by dx and dy, and adjusts radii by dx and dy. dx and dy may be + positive, negative, or zero. + + If either corner radius is zero, the corner has no curvature and is unchanged. + Otherwise, if adjusted radius becomes negative, pins radius to zero. + If dx exceeds half dst bounds width, dst bounds left and right are set to + bounds x-axis center. If dy exceeds half dst bounds height, dst bounds top and + bottom are set to bounds y-axis center. + + If dx or dy cause the bounds to become infinite, dst bounds is zeroed. + + @param dx subtracted from rect().fLeft, and added to rect().fRight + @param dy subtracted from rect().fTop, and added to rect().fBottom + @param dst outset bounds and radii + */ + void outset(SkScalar dx, SkScalar dy, SkRRect* dst) const { + this->inset(-dx, -dy, dst); + } + + /** Outsets bounds by dx and dy, and adjusts radii by dx and dy. dx and dy may be + positive, negative, or zero. + + If either corner radius is zero, the corner has no curvature and is unchanged. + Otherwise, if adjusted radius becomes negative, pins radius to zero. + If dx exceeds half bounds width, bounds left and right are set to + bounds x-axis center. If dy exceeds half bounds height, bounds top and + bottom are set to bounds y-axis center. + + If dx or dy cause the bounds to become infinite, bounds is zeroed. + + @param dx subtracted from rect().fLeft, and added to rect().fRight + @param dy subtracted from rect().fTop, and added to rect().fBottom + */ + void outset(SkScalar dx, SkScalar dy) { + this->inset(-dx, -dy, this); + } + + /** Translates SkRRect by (dx, dy). + + @param dx offset added to rect().fLeft and rect().fRight + @param dy offset added to rect().fTop and rect().fBottom + */ + void offset(SkScalar dx, SkScalar dy) { + fRect.offset(dx, dy); + } + + /** Returns SkRRect translated by (dx, dy). + + @param dx offset added to rect().fLeft and rect().fRight + @param dy offset added to rect().fTop and rect().fBottom + @return SkRRect bounds offset by (dx, dy), with unchanged corner radii + */ + [[nodiscard]] SkRRect makeOffset(SkScalar dx, SkScalar dy) const { + return SkRRect(fRect.makeOffset(dx, dy), fRadii, fType); + } + + /** Returns true if rect is inside the bounds and corner radii, and if + SkRRect and rect are not empty. + + @param rect area tested for containment + @return true if SkRRect contains rect + + example: https://fiddle.skia.org/c/@RRect_contains + */ + bool contains(const SkRect& rect) const; + + /** Returns true if bounds and radii values are finite and describe a SkRRect + SkRRect::Type that matches getType(). All SkRRect methods construct valid types, + even if the input values are not valid. Invalid SkRRect data can only + be generated by corrupting memory. + + @return true if bounds and radii match type() + + example: https://fiddle.skia.org/c/@RRect_isValid + */ + bool isValid() const; + + static constexpr size_t kSizeInMemory = 12 * sizeof(SkScalar); + + /** Writes SkRRect to buffer. Writes kSizeInMemory bytes, and returns + kSizeInMemory, the number of bytes written. + + @param buffer storage for SkRRect + @return bytes written, kSizeInMemory + + example: https://fiddle.skia.org/c/@RRect_writeToMemory + */ + size_t writeToMemory(void* buffer) const; + + /** Reads SkRRect from buffer, reading kSizeInMemory bytes. + Returns kSizeInMemory, bytes read if length is at least kSizeInMemory. + Otherwise, returns zero. + + @param buffer memory to read from + @param length size of buffer + @return bytes read, or 0 if length is less than kSizeInMemory + + example: https://fiddle.skia.org/c/@RRect_readFromMemory + */ + size_t readFromMemory(const void* buffer, size_t length); + + /** Transforms by SkRRect by matrix and return it if possible. + * If the matrix does not preserve axis-alignment (e.g. rotates, skews, etc.) + * then this returns {}. + */ + std::optional transform(const SkMatrix&) const; + + // Deprecated: use optional form + bool transform(const SkMatrix& matrix, SkRRect* dst) const; + + /** Writes text representation of SkRRect to standard output. + Set asHex true to generate exact binary representations + of floating point numbers. + + @param asHex true if SkScalar values are written as hexadecimal + + example: https://fiddle.skia.org/c/@RRect_dump + */ + void dump(bool asHex) const; + SkString dumpToString(bool asHex) const; + + /** Writes text representation of SkRRect to standard output. The representation + may be directly compiled as C++ code. Floating point values are written + with limited precision; it may not be possible to reconstruct original + SkRRect from output. + */ + void dump() const { this->dump(false); } + + /** Writes text representation of SkRRect to standard output. The representation + may be directly compiled as C++ code. Floating point values are written + in hexadecimal to preserve their exact bit pattern. The output reconstructs the + original SkRRect. + */ + void dumpHex() const { this->dump(true); } + +private: + static bool AreRectAndRadiiValid(const SkRect&, const SkVector[4]); + + SkRRect(const SkRect& rect, const SkVector radii[4], int32_t type) + : fRect(rect) + , fRadii{radii[0], radii[1], radii[2], radii[3]} + , fType(type) {} + + /** + * Initializes fRect. If the passed in rect is not finite or empty the rrect will be fully + * initialized and false is returned. Otherwise, just fRect is initialized and true is returned. + */ + bool initializeRect(const SkRect&); + + void computeType(); + bool checkCornerContainment(SkScalar x, SkScalar y) const; + // Returns true if the radii had to be scaled to fit rect + bool scaleRadii(); + + SkRect fRect = SkRect::MakeEmpty(); + // Radii order is UL, UR, LR, LL. Use Corner enum to index into fRadii[] + SkVector fRadii[4] = {{0, 0}, {0, 0}, {0,0}, {0,0}}; + // use an explicitly sized type so we're sure the class is dense (no uninitialized bytes) + int32_t fType = kEmpty_Type; + + // to access fRadii directly + friend class SkPath; + friend class SkRRectPriv; +}; +SK_END_REQUIRE_DENSE + +#endif diff --git a/vendor/artifacts/skia/include/core/SkRSXform.h b/vendor/artifacts/skia/include/core/SkRSXform.h new file mode 100644 index 000000000..de6bafd35 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkRSXform.h @@ -0,0 +1,71 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkRSXform_DEFINED +#define SkRSXform_DEFINED + +#include "include/core/SkPoint.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" +#include "include/private/base/SkAPI.h" + +/** + * A compressed form of a rotation+scale matrix. + * + * [ fSCos -fSSin fTx ] + * [ fSSin fSCos fTy ] + * [ 0 0 1 ] + */ +struct SK_API SkRSXform { + static SkRSXform Make(SkScalar scos, SkScalar ssin, SkScalar tx, SkScalar ty) { + SkRSXform xform = { scos, ssin, tx, ty }; + return xform; + } + + /* + * Initialize a new xform based on the scale, rotation (in radians), final tx,ty location + * and anchor-point ax,ay within the src quad. + * + * Note: the anchor point is not normalized (e.g. 0...1) but is in pixels of the src image. + */ + static SkRSXform MakeFromRadians(SkScalar scale, SkScalar radians, SkScalar tx, SkScalar ty, + SkScalar ax, SkScalar ay) { + const SkScalar s = SkScalarSin(radians) * scale; + const SkScalar c = SkScalarCos(radians) * scale; + return Make(c, s, tx + -c * ax + s * ay, ty + -s * ax - c * ay); + } + + SkScalar fSCos; + SkScalar fSSin; + SkScalar fTx; + SkScalar fTy; + + bool rectStaysRect() const { + return 0 == fSCos || 0 == fSSin; + } + + void setIdentity() { + fSCos = 1; + fSSin = fTx = fTy = 0; + } + + void set(SkScalar scos, SkScalar ssin, SkScalar tx, SkScalar ty) { + fSCos = scos; + fSSin = ssin; + fTx = tx; + fTy = ty; + } + + void toQuad(SkScalar width, SkScalar height, SkPoint quad[4]) const; + void toQuad(const SkSize& size, SkPoint quad[4]) const { + this->toQuad(size.width(), size.height(), quad); + } + void toTriStrip(SkScalar width, SkScalar height, SkPoint strip[4]) const; +}; + +#endif + diff --git a/vendor/artifacts/skia/include/core/SkRasterHandleAllocator.h b/vendor/artifacts/skia/include/core/SkRasterHandleAllocator.h new file mode 100644 index 000000000..6fe121a6d --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkRasterHandleAllocator.h @@ -0,0 +1,94 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkRasterHandleAllocator_DEFINED +#define SkRasterHandleAllocator_DEFINED + +#include "include/core/SkImageInfo.h" + +class SkBitmap; +class SkCanvas; +class SkMatrix; +class SkSurfaceProps; + +/** + * If a client wants to control the allocation of raster layers in a canvas, it should subclass + * SkRasterHandleAllocator. This allocator performs two tasks: + * 1. controls how the memory for the pixels is allocated + * 2. associates a "handle" to a private object that can track the matrix/clip of the SkCanvas + * + * This example allocates a canvas, and defers to the allocator to create the base layer. + * + * std::unique_ptr canvas = SkRasterHandleAllocator::MakeCanvas( + * SkImageInfo::Make(...), + * std::make_unique(...), + * nullptr); + * + * If you have already allocated the base layer (and its handle, release-proc etc.) then you + * can pass those in using the last parameter to MakeCanvas(). + * + * Regardless of how the base layer is allocated, each time canvas->saveLayer() is called, + * your allocator's allocHandle() will be called. + */ +class SK_API SkRasterHandleAllocator { +public: + virtual ~SkRasterHandleAllocator() = default; + + // The value that is returned to clients of the canvas that has this allocator installed. + typedef void* Handle; + + struct Rec { + // When the allocation goes out of scope, this proc is called to free everything associated + // with it: the pixels, the "handle", etc. This is passed the pixel address and fReleaseCtx. + void (*fReleaseProc)(void* pixels, void* ctx); + void* fReleaseCtx; // context passed to fReleaseProc + void* fPixels; // pixels for this allocation + size_t fRowBytes; // rowbytes for these pixels + Handle fHandle; // public handle returned by SkCanvas::accessTopRasterHandle() + }; + + /** + * Given a requested info, allocate the corresponding pixels/rowbytes, and whatever handle + * is desired to give clients access to those pixels. The rec also contains a proc and context + * which will be called when this allocation goes out of scope. + * + * e.g. + * when canvas->saveLayer() is called, the allocator will be called to allocate the pixels + * for the layer. When canvas->restore() is called, the fReleaseProc will be called. + */ + virtual bool allocHandle(const SkImageInfo&, Rec*) = 0; + + /** + * Clients access the handle for a given layer by calling SkCanvas::accessTopRasterHandle(). + * To allow the handle to reflect the current matrix/clip in the canvs, updateHandle() is + * is called. The subclass is responsible to update the handle as it sees fit. + */ + virtual void updateHandle(Handle, const SkMatrix&, const SkIRect&) = 0; + + /** + * This creates a canvas which will use the allocator to manage pixel allocations, including + * all calls to saveLayer(). + * + * If rec is non-null, then it will be used as the base-layer of pixels/handle. + * If rec is null, then the allocator will be called for the base-layer as well. + */ + static std::unique_ptr MakeCanvas(std::unique_ptr, + const SkImageInfo&, const Rec* rec = nullptr, + const SkSurfaceProps* props = nullptr); + +protected: + SkRasterHandleAllocator() = default; + SkRasterHandleAllocator(const SkRasterHandleAllocator&) = delete; + SkRasterHandleAllocator& operator=(const SkRasterHandleAllocator&) = delete; + +private: + friend class SkBitmapDevice; + + Handle allocBitmap(const SkImageInfo&, SkBitmap*); +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkRecorder.h b/vendor/artifacts/skia/include/core/SkRecorder.h new file mode 100644 index 000000000..db19ec8b5 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkRecorder.h @@ -0,0 +1,50 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkRecorder_DEFINED +#define SkRecorder_DEFINED + +#include "include/private/base/SkAPI.h" + +class SkCanvas; +class SkContentID; +class SkSurface; + +namespace skcpu { +class Recorder; +} + +class SK_API SkRecorder { +public: + SkRecorder() = default; + virtual ~SkRecorder() = default; + SkRecorder(const SkRecorder&) = delete; + SkRecorder(SkRecorder&&) = delete; + SkRecorder& operator=(const SkRecorder&) = delete; + + enum class Type { + kCPU, + kGanesh, + kGraphite, + }; + + virtual Type type() const = 0; + + virtual skcpu::Recorder* cpuRecorder() = 0; + +private: + + /** + * Attempts to create and return an SkCaptureCanvas that wraps the provided base canvas. + * Returns nullptr if capture is not enabled. + */ + virtual SkCanvas* makeCaptureCanvas(SkCanvas*) = 0; + virtual SkContentID createCaptureBreakpoint(SkSurface*) = 0; + + friend class SkSurface_Base; // for capture functionality +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkRect.h b/vendor/artifacts/skia/include/core/SkRect.h new file mode 100644 index 000000000..1b1f61794 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkRect.h @@ -0,0 +1,1419 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkRect_DEFINED +#define SkRect_DEFINED + +#include "include/core/SkPathTypes.h" +#include "include/core/SkPoint.h" +#include "include/core/SkSize.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkFloatingPoint.h" +#include "include/private/base/SkSafe32.h" +#include "include/private/base/SkTFitsIn.h" + +#include +#include +#include +#include +#include +#include + +struct SkRect; +class SkString; + +/** \struct SkIRect + SkIRect holds four 32-bit integer coordinates describing the upper and + lower bounds of a rectangle. SkIRect may be created from outer bounds or + from position, width, and height. SkIRect describes an area; if its right + is less than or equal to its left, or if its bottom is less than or equal to + its top, it is considered empty. +*/ +struct SK_API SkIRect { + int32_t fLeft = 0; //!< smaller x-axis bounds + int32_t fTop = 0; //!< smaller y-axis bounds + int32_t fRight = 0; //!< larger x-axis bounds + int32_t fBottom = 0; //!< larger y-axis bounds + + /** Returns constructed SkIRect set to (0, 0, 0, 0). + Many other rectangles are empty; if left is equal to or greater than right, + or if top is equal to or greater than bottom. Setting all members to zero + is a convenience, but does not designate a special empty rectangle. + + @return bounds (0, 0, 0, 0) + */ + [[nodiscard]] static constexpr SkIRect MakeEmpty() { + return SkIRect{0, 0, 0, 0}; + } + + /** Returns constructed SkIRect set to (0, 0, w, h). Does not validate input; w or h + may be negative. + + @param w width of constructed SkIRect + @param h height of constructed SkIRect + @return bounds (0, 0, w, h) + */ + [[nodiscard]] static constexpr SkIRect MakeWH(int32_t w, int32_t h) { + return SkIRect{0, 0, w, h}; + } + + /** Returns constructed SkIRect set to (0, 0, size.width(), size.height()). + Does not validate input; size.width() or size.height() may be negative. + + @param size values for SkIRect width and height + @return bounds (0, 0, size.width(), size.height()) + */ + [[nodiscard]] static constexpr SkIRect MakeSize(const SkISize& size) { + return SkIRect{0, 0, size.fWidth, size.fHeight}; + } + + /** Returns constructed SkIRect set to (pt.x(), pt.y(), pt.x() + size.width(), + pt.y() + size.height()). Does not validate input; size.width() or size.height() may be + negative. + + @param pt values for SkIRect fLeft and fTop + @param size values for SkIRect width and height + @return bounds at pt with width and height of size + */ + [[nodiscard]] static constexpr SkIRect MakePtSize(SkIPoint pt, SkISize size) { + return MakeXYWH(pt.x(), pt.y(), size.width(), size.height()); + } + + /** Returns constructed SkIRect set to (l, t, r, b). Does not sort input; SkIRect may + result in fLeft greater than fRight, or fTop greater than fBottom. + + @param l integer stored in fLeft + @param t integer stored in fTop + @param r integer stored in fRight + @param b integer stored in fBottom + @return bounds (l, t, r, b) + */ + [[nodiscard]] static constexpr SkIRect MakeLTRB(int32_t l, int32_t t, int32_t r, int32_t b) { + return SkIRect{l, t, r, b}; + } + + /** Returns constructed SkIRect set to: (x, y, x + w, y + h). + Does not validate input; w or h may be negative. + + @param x stored in fLeft + @param y stored in fTop + @param w added to x and stored in fRight + @param h added to y and stored in fBottom + @return bounds at (x, y) with width w and height h + */ + [[nodiscard]] static constexpr SkIRect MakeXYWH(int32_t x, int32_t y, int32_t w, int32_t h) { + return { x, y, Sk32_sat_add(x, w), Sk32_sat_add(y, h) }; + } + + /** Returns left edge of SkIRect, if sorted. + Call sort() to reverse fLeft and fRight if needed. + + @return fLeft + */ + constexpr int32_t left() const { return fLeft; } + + /** Returns top edge of SkIRect, if sorted. Call isEmpty() to see if SkIRect may be invalid, + and sort() to reverse fTop and fBottom if needed. + + @return fTop + */ + constexpr int32_t top() const { return fTop; } + + /** Returns right edge of SkIRect, if sorted. + Call sort() to reverse fLeft and fRight if needed. + + @return fRight + */ + constexpr int32_t right() const { return fRight; } + + /** Returns bottom edge of SkIRect, if sorted. Call isEmpty() to see if SkIRect may be invalid, + and sort() to reverse fTop and fBottom if needed. + + @return fBottom + */ + constexpr int32_t bottom() const { return fBottom; } + + /** Returns left edge of SkIRect, if sorted. Call isEmpty() to see if SkIRect may be invalid, + and sort() to reverse fLeft and fRight if needed. + + @return fLeft + */ + constexpr int32_t x() const { return fLeft; } + + /** Returns top edge of SkIRect, if sorted. Call isEmpty() to see if SkIRect may be invalid, + and sort() to reverse fTop and fBottom if needed. + + @return fTop + */ + constexpr int32_t y() const { return fTop; } + + // Experimental + constexpr SkIPoint topLeft() const { return {fLeft, fTop}; } + + /** Returns span on the x-axis. This does not check if SkIRect is sorted, or if + result fits in 32-bit signed integer; result may be negative. + + @return fRight minus fLeft + */ + constexpr int32_t width() const { return Sk32_can_overflow_sub(fRight, fLeft); } + + /** Returns span on the y-axis. This does not check if SkIRect is sorted, or if + result fits in 32-bit signed integer; result may be negative. + + @return fBottom minus fTop + */ + constexpr int32_t height() const { return Sk32_can_overflow_sub(fBottom, fTop); } + + /** Returns spans on the x-axis and y-axis. This does not check if SkIRect is sorted, + or if result fits in 32-bit signed integer; result may be negative. + + @return SkISize (width, height) + */ + constexpr SkISize size() const { return SkISize::Make(this->width(), this->height()); } + + /** Returns span on the x-axis. This does not check if SkIRect is sorted, so the + result may be negative. This is safer than calling width() since width() might + overflow in its calculation. + + @return fRight minus fLeft cast to int64_t + */ + constexpr int64_t width64() const { return (int64_t)fRight - (int64_t)fLeft; } + + /** Returns span on the y-axis. This does not check if SkIRect is sorted, so the + result may be negative. This is safer than calling height() since height() might + overflow in its calculation. + + @return fBottom minus fTop cast to int64_t + */ + constexpr int64_t height64() const { return (int64_t)fBottom - (int64_t)fTop; } + + /** Returns true if fLeft is equal to or greater than fRight, or if fTop is equal + to or greater than fBottom. Call sort() to reverse rectangles with negative + width64() or height64(). + + @return true if width64() or height64() are zero or negative + */ + bool isEmpty64() const { return fRight <= fLeft || fBottom <= fTop; } + + /** Returns true if width() or height() are zero or negative. + + @return true if width() or height() are zero or negative + */ + bool isEmpty() const { + int64_t w = this->width64(); + int64_t h = this->height64(); + if (w <= 0 || h <= 0) { + return true; + } + // Return true if either exceeds int32_t + return !SkTFitsIn(w | h); + } + + /** Returns true if all members in a: fLeft, fTop, fRight, and fBottom; are + identical to corresponding members in b. + + @param a SkIRect to compare + @param b SkIRect to compare + @return true if members are equal + */ + friend bool operator==(const SkIRect& a, const SkIRect& b) { + return a.fLeft == b.fLeft && a.fTop == b.fTop && + a.fRight == b.fRight && a.fBottom == b.fBottom; + } + + /** Returns true if any member in a: fLeft, fTop, fRight, and fBottom; is not + identical to the corresponding member in b. + + @param a SkIRect to compare + @param b SkIRect to compare + @return true if members are not equal + */ + friend bool operator!=(const SkIRect& a, const SkIRect& b) { + return a.fLeft != b.fLeft || a.fTop != b.fTop || + a.fRight != b.fRight || a.fBottom != b.fBottom; + } + + /** Sets SkIRect to (0, 0, 0, 0). + + Many other rectangles are empty; if left is equal to or greater than right, + or if top is equal to or greater than bottom. Setting all members to zero + is a convenience, but does not designate a special empty rectangle. + */ + void setEmpty() { memset(this, 0, sizeof(*this)); } + + /** Sets SkIRect to (left, top, right, bottom). + left and right are not sorted; left is not necessarily less than right. + top and bottom are not sorted; top is not necessarily less than bottom. + + @param left stored in fLeft + @param top stored in fTop + @param right stored in fRight + @param bottom stored in fBottom + */ + void setLTRB(int32_t left, int32_t top, int32_t right, int32_t bottom) { + fLeft = left; + fTop = top; + fRight = right; + fBottom = bottom; + } + + /** Sets SkIRect to: (x, y, x + width, y + height). + Does not validate input; width or height may be negative. + + @param x stored in fLeft + @param y stored in fTop + @param width added to x and stored in fRight + @param height added to y and stored in fBottom + */ + void setXYWH(int32_t x, int32_t y, int32_t width, int32_t height) { + fLeft = x; + fTop = y; + fRight = Sk32_sat_add(x, width); + fBottom = Sk32_sat_add(y, height); + } + + void setWH(int32_t width, int32_t height) { + fLeft = 0; + fTop = 0; + fRight = width; + fBottom = height; + } + + void setSize(SkISize size) { + fLeft = 0; + fTop = 0; + fRight = size.width(); + fBottom = size.height(); + } + + /** Returns SkIRect offset by (dx, dy). + + If dx is negative, SkIRect returned is moved to the left. + If dx is positive, SkIRect returned is moved to the right. + If dy is negative, SkIRect returned is moved upward. + If dy is positive, SkIRect returned is moved downward. + + @param dx offset added to fLeft and fRight + @param dy offset added to fTop and fBottom + @return SkIRect offset by dx and dy, with original width and height + */ + constexpr SkIRect makeOffset(int32_t dx, int32_t dy) const { + return { + Sk32_sat_add(fLeft, dx), Sk32_sat_add(fTop, dy), + Sk32_sat_add(fRight, dx), Sk32_sat_add(fBottom, dy), + }; + } + + /** Returns SkIRect offset by (offset.x(), offset.y()). + + If offset.x() is negative, SkIRect returned is moved to the left. + If offset.x() is positive, SkIRect returned is moved to the right. + If offset.y() is negative, SkIRect returned is moved upward. + If offset.y() is positive, SkIRect returned is moved downward. + + @param offset translation vector + @return SkIRect translated by offset, with original width and height + */ + constexpr SkIRect makeOffset(SkIVector offset) const { + return this->makeOffset(offset.x(), offset.y()); + } + + /** Returns SkIRect, inset by (dx, dy). + + If dx is negative, SkIRect returned is wider. + If dx is positive, SkIRect returned is narrower. + If dy is negative, SkIRect returned is taller. + If dy is positive, SkIRect returned is shorter. + + @param dx offset added to fLeft and subtracted from fRight + @param dy offset added to fTop and subtracted from fBottom + @return SkIRect inset symmetrically left and right, top and bottom + */ + SkIRect makeInset(int32_t dx, int32_t dy) const { + return { + Sk32_sat_add(fLeft, dx), Sk32_sat_add(fTop, dy), + Sk32_sat_sub(fRight, dx), Sk32_sat_sub(fBottom, dy), + }; + } + + /** Returns SkIRect, outset by (dx, dy). + + If dx is negative, SkIRect returned is narrower. + If dx is positive, SkIRect returned is wider. + If dy is negative, SkIRect returned is shorter. + If dy is positive, SkIRect returned is taller. + + @param dx offset subtracted to fLeft and added from fRight + @param dy offset subtracted to fTop and added from fBottom + @return SkIRect outset symmetrically left and right, top and bottom + */ + SkIRect makeOutset(int32_t dx, int32_t dy) const { + return { + Sk32_sat_sub(fLeft, dx), Sk32_sat_sub(fTop, dy), + Sk32_sat_add(fRight, dx), Sk32_sat_add(fBottom, dy), + }; + } + + /** Offsets SkIRect by adding dx to fLeft, fRight; and by adding dy to fTop, fBottom. + + If dx is negative, moves SkIRect returned to the left. + If dx is positive, moves SkIRect returned to the right. + If dy is negative, moves SkIRect returned upward. + If dy is positive, moves SkIRect returned downward. + + @param dx offset added to fLeft and fRight + @param dy offset added to fTop and fBottom + */ + void offset(int32_t dx, int32_t dy) { + fLeft = Sk32_sat_add(fLeft, dx); + fTop = Sk32_sat_add(fTop, dy); + fRight = Sk32_sat_add(fRight, dx); + fBottom = Sk32_sat_add(fBottom, dy); + } + + /** Offsets SkIRect by adding delta.fX to fLeft, fRight; and by adding delta.fY to + fTop, fBottom. + + If delta.fX is negative, moves SkIRect returned to the left. + If delta.fX is positive, moves SkIRect returned to the right. + If delta.fY is negative, moves SkIRect returned upward. + If delta.fY is positive, moves SkIRect returned downward. + + @param delta offset added to SkIRect + */ + void offset(const SkIPoint& delta) { + this->offset(delta.fX, delta.fY); + } + + /** Offsets SkIRect so that fLeft equals newX, and fTop equals newY. width and height + are unchanged. + + @param newX stored in fLeft, preserving width() + @param newY stored in fTop, preserving height() + */ + void offsetTo(int32_t newX, int32_t newY) { + fRight = Sk64_pin_to_s32((int64_t)fRight + newX - fLeft); + fBottom = Sk64_pin_to_s32((int64_t)fBottom + newY - fTop); + fLeft = newX; + fTop = newY; + } + + /** Insets SkIRect by (dx,dy). + + If dx is positive, makes SkIRect narrower. + If dx is negative, makes SkIRect wider. + If dy is positive, makes SkIRect shorter. + If dy is negative, makes SkIRect taller. + + @param dx offset added to fLeft and subtracted from fRight + @param dy offset added to fTop and subtracted from fBottom + */ + void inset(int32_t dx, int32_t dy) { + fLeft = Sk32_sat_add(fLeft, dx); + fTop = Sk32_sat_add(fTop, dy); + fRight = Sk32_sat_sub(fRight, dx); + fBottom = Sk32_sat_sub(fBottom, dy); + } + + /** Outsets SkIRect by (dx, dy). + + If dx is positive, makes SkIRect wider. + If dx is negative, makes SkIRect narrower. + If dy is positive, makes SkIRect taller. + If dy is negative, makes SkIRect shorter. + + @param dx subtracted to fLeft and added from fRight + @param dy subtracted to fTop and added from fBottom + */ + void outset(int32_t dx, int32_t dy) { this->inset(-dx, -dy); } + + /** Adjusts SkIRect by adding dL to fLeft, dT to fTop, dR to fRight, and dB to fBottom. + + If dL is positive, narrows SkIRect on the left. If negative, widens it on the left. + If dT is positive, shrinks SkIRect on the top. If negative, lengthens it on the top. + If dR is positive, narrows SkIRect on the right. If negative, widens it on the right. + If dB is positive, shrinks SkIRect on the bottom. If negative, lengthens it on the bottom. + + The resulting SkIRect is not checked for validity. Thus, if the resulting SkIRect left is + greater than right, the SkIRect will be considered empty. Call sort() after this call + if that is not the desired behavior. + + @param dL offset added to fLeft + @param dT offset added to fTop + @param dR offset added to fRight + @param dB offset added to fBottom + */ + void adjust(int32_t dL, int32_t dT, int32_t dR, int32_t dB) { + fLeft = Sk32_sat_add(fLeft, dL); + fTop = Sk32_sat_add(fTop, dT); + fRight = Sk32_sat_add(fRight, dR); + fBottom = Sk32_sat_add(fBottom, dB); + } + + /** Returns true if: fLeft <= x < fRight && fTop <= y < fBottom. + Returns false if SkIRect is empty. + + Considers input to describe constructed SkIRect: (x, y, x + 1, y + 1) and + returns true if constructed area is completely enclosed by SkIRect area. + + @param x test SkIPoint x-coordinate + @param y test SkIPoint y-coordinate + @return true if (x, y) is inside SkIRect + */ + bool contains(int32_t x, int32_t y) const { + return x >= fLeft && x < fRight && y >= fTop && y < fBottom; + } + + /** Returns true if SkIRect contains r. + Returns false if SkIRect is empty or r is empty. + + SkIRect contains r when SkIRect area completely includes r area. + + @param r SkIRect contained + @return true if all sides of SkIRect are outside r + */ + bool contains(const SkIRect& r) const { + return !r.isEmpty() && !this->isEmpty() && // check for empties + fLeft <= r.fLeft && fTop <= r.fTop && + fRight >= r.fRight && fBottom >= r.fBottom; + } + + /** Returns true if SkIRect contains r. + Returns false if SkIRect is empty or r is empty. + + SkIRect contains r when SkIRect area completely includes r area. + + @param r SkRect contained + @return true if all sides of SkIRect are outside r + */ + inline bool contains(const SkRect& r) const; + + /** Returns true if SkIRect contains construction. + Asserts if SkIRect is empty or construction is empty, and if SK_DEBUG is defined. + + Return is undefined if SkIRect is empty or construction is empty. + + @param r SkIRect contained + @return true if all sides of SkIRect are outside r + */ + bool containsNoEmptyCheck(const SkIRect& r) const { + SkASSERT(fLeft < fRight && fTop < fBottom); + SkASSERT(r.fLeft < r.fRight && r.fTop < r.fBottom); + return fLeft <= r.fLeft && fTop <= r.fTop && fRight >= r.fRight && fBottom >= r.fBottom; + } + + /** Returns true if SkIRect intersects r, and sets SkIRect to intersection. + Returns false if SkIRect does not intersect r, and leaves SkIRect unchanged. + + Returns false if either r or SkIRect is empty, leaving SkIRect unchanged. + + @param r limit of result + @return true if r and SkIRect have area in common + */ + bool intersect(const SkIRect& r) { + return this->intersect(*this, r); + } + + /** Returns true if a intersects b, and sets SkIRect to intersection. + Returns false if a does not intersect b, and leaves SkIRect unchanged. + + Returns false if either a or b is empty, leaving SkIRect unchanged. + + @param a SkIRect to intersect + @param b SkIRect to intersect + @return true if a and b have area in common + */ + [[nodiscard]] bool intersect(const SkIRect& a, const SkIRect& b); + + /** Returns true if a intersects b. + Returns false if either a or b is empty, or do not intersect. + + @param a SkIRect to intersect + @param b SkIRect to intersect + @return true if a and b have area in common + */ + static bool Intersects(const SkIRect& a, const SkIRect& b) { + return SkIRect{}.intersect(a, b); + } + + /** Sets SkIRect to the union of itself and r. + + Has no effect if r is empty. Otherwise, if SkIRect is empty, sets SkIRect to r. + + @param r expansion SkIRect + + example: https://fiddle.skia.org/c/@IRect_join_2 + */ + void join(const SkIRect& r); + + /** Swaps fLeft and fRight if fLeft is greater than fRight; and swaps + fTop and fBottom if fTop is greater than fBottom. Result may be empty, + and width() and height() will be zero or positive. + */ + void sort() { + using std::swap; + if (fLeft > fRight) { + swap(fLeft, fRight); + } + if (fTop > fBottom) { + swap(fTop, fBottom); + } + } + + /** Returns SkIRect with fLeft and fRight swapped if fLeft is greater than fRight; and + with fTop and fBottom swapped if fTop is greater than fBottom. Result may be empty; + and width() and height() will be zero or positive. + + @return sorted SkIRect + */ + SkIRect makeSorted() const { + return MakeLTRB(std::min(fLeft, fRight), std::min(fTop, fBottom), + std::max(fLeft, fRight), std::max(fTop, fBottom)); + } + + /** Returns pointer to first int32 in SkIRect, to treat it as an array with four + entries. + + @return pointer to fLeft + */ + const int32_t* asInt32s() const { return &fLeft; } +}; + +/** \struct SkRect + SkRect holds four float coordinates describing the upper and + lower bounds of a rectangle. SkRect may be created from outer bounds or + from position, width, and height. SkRect describes an area; if its right + is less than or equal to its left, or if its bottom is less than or equal to + its top, it is considered empty. +*/ +struct SK_API SkRect { + float fLeft = 0; //!< smaller x-axis bounds + float fTop = 0; //!< smaller y-axis bounds + float fRight = 0; //!< larger x-axis bounds + float fBottom = 0; //!< larger y-axis bounds + + /** Returns constructed SkRect set to (0, 0, 0, 0). + Many other rectangles are empty; if left is equal to or greater than right, + or if top is equal to or greater than bottom. Setting all members to zero + is a convenience, but does not designate a special empty rectangle. + + @return bounds (0, 0, 0, 0) + */ + [[nodiscard]] static constexpr SkRect MakeEmpty() { + return SkRect{0, 0, 0, 0}; + } + + /** Returns constructed SkRect set to float values (0, 0, w, h). Does not + validate input; w or h may be negative. + + Passing integer values may generate a compiler warning since SkRect cannot + represent 32-bit integers exactly. Use SkIRect for an exact integer rectangle. + + @param w float width of constructed SkRect + @param h float height of constructed SkRect + @return bounds (0, 0, w, h) + */ + [[nodiscard]] static constexpr SkRect MakeWH(float w, float h) { + return SkRect{0, 0, w, h}; + } + + /** Returns constructed SkRect set to integer values (0, 0, w, h). Does not validate + input; w or h may be negative. + + Use to avoid a compiler warning that input may lose precision when stored. + Use SkIRect for an exact integer rectangle. + + @param w integer width of constructed SkRect + @param h integer height of constructed SkRect + @return bounds (0, 0, w, h) + */ + [[nodiscard]] static SkRect MakeIWH(int w, int h) { + return {0, 0, static_cast(w), static_cast(h)}; + } + + /** Returns constructed SkRect set to (0, 0, size.width(), size.height()). Does not + validate input; size.width() or size.height() may be negative. + + @param size float values for SkRect width and height + @return bounds (0, 0, size.width(), size.height()) + */ + [[nodiscard]] static constexpr SkRect MakeSize(const SkSize& size) { + return SkRect{0, 0, size.fWidth, size.fHeight}; + } + + /** Returns constructed SkRect set to (l, t, r, b). Does not sort input; SkRect may + result in fLeft greater than fRight, or fTop greater than fBottom. + + @param l float stored in fLeft + @param t float stored in fTop + @param r float stored in fRight + @param b float stored in fBottom + @return bounds (l, t, r, b) + */ + [[nodiscard]] static constexpr SkRect MakeLTRB(float l, float t, float r, float b) { + return SkRect {l, t, r, b}; + } + + /** Returns constructed SkRect set to (x, y, x + w, y + h). + Does not validate input; w or h may be negative. + + @param x stored in fLeft + @param y stored in fTop + @param w added to x and stored in fRight + @param h added to y and stored in fBottom + @return bounds at (x, y) with width w and height h + */ + [[nodiscard]] static constexpr SkRect MakeXYWH(float x, float y, float w, float h) { + return SkRect {x, y, x + w, y + h}; + } + + /** Returns constructed SkIRect set to (0, 0, size.width(), size.height()). + Does not validate input; size.width() or size.height() may be negative. + + @param size integer values for SkRect width and height + @return bounds (0, 0, size.width(), size.height()) + */ + static SkRect Make(const SkISize& size) { + return MakeIWH(size.width(), size.height()); + } + + /** Returns constructed SkIRect set to irect, promoting integers to float. + Does not validate input; fLeft may be greater than fRight, fTop may be greater + than fBottom. + + @param irect integer unsorted bounds + @return irect members converted to float + */ + [[nodiscard]] static SkRect Make(const SkIRect& irect) { + return { + static_cast(irect.fLeft), static_cast(irect.fTop), + static_cast(irect.fRight), static_cast(irect.fBottom) + }; + } + + /** Returns true if fLeft is equal to or greater than fRight, or if fTop is equal + to or greater than fBottom. Call sort() to reverse rectangles with negative + width() or height(). + + @return true if width() or height() are zero or negative + */ + bool isEmpty() const { + // We write it as the NOT of a non-empty rect, so we will return true if any values + // are NaN. + return !(fLeft < fRight && fTop < fBottom); + } + + /** Returns true if fLeft is equal to or less than fRight, or if fTop is equal + to or less than fBottom. Call sort() to reverse rectangles with negative + width() or height(). + + @return true if width() or height() are zero or positive + */ + bool isSorted() const { return fLeft <= fRight && fTop <= fBottom; } + + /** Returns true if all values in the rectangle are finite. + + @return true if no member is infinite or NaN + */ + bool isFinite() const { + return SkIsFinite(fLeft, fTop, fRight, fBottom); + } + + /** Returns left edge of SkRect, if sorted. Call isSorted() to see if SkRect is valid. + Call sort() to reverse fLeft and fRight if needed. + + @return fLeft + */ + constexpr float x() const { return fLeft; } + + /** Returns top edge of SkRect, if sorted. Call isEmpty() to see if SkRect may be invalid, + and sort() to reverse fTop and fBottom if needed. + + @return fTop + */ + constexpr float y() const { return fTop; } + + /** Returns left edge of SkRect, if sorted. Call isSorted() to see if SkRect is valid. + Call sort() to reverse fLeft and fRight if needed. + + @return fLeft + */ + constexpr float left() const { return fLeft; } + + /** Returns top edge of SkRect, if sorted. Call isEmpty() to see if SkRect may be invalid, + and sort() to reverse fTop and fBottom if needed. + + @return fTop + */ + constexpr float top() const { return fTop; } + + /** Returns right edge of SkRect, if sorted. Call isSorted() to see if SkRect is valid. + Call sort() to reverse fLeft and fRight if needed. + + @return fRight + */ + constexpr float right() const { return fRight; } + + /** Returns bottom edge of SkRect, if sorted. Call isEmpty() to see if SkRect may be invalid, + and sort() to reverse fTop and fBottom if needed. + + @return fBottom + */ + constexpr float bottom() const { return fBottom; } + + /** Returns span on the x-axis. This does not check if SkRect is sorted, or if + result fits in 32-bit float; result may be negative or infinity. + + @return fRight minus fLeft + */ + constexpr float width() const { return fRight - fLeft; } + + /** Returns span on the y-axis. This does not check if SkRect is sorted, or if + result fits in 32-bit float; result may be negative or infinity. + + @return fBottom minus fTop + */ + constexpr float height() const { return fBottom - fTop; } + + /** Returns average of left edge and right edge. Result does not change if SkRect + is sorted. Result may overflow to infinity if SkRect is far from the origin. + + @return midpoint on x-axis + */ + constexpr float centerX() const { + return sk_float_midpoint(fLeft, fRight); + } + + /** Returns average of top edge and bottom edge. Result does not change if SkRect + is sorted. + + @return midpoint on y-axis + */ + constexpr float centerY() const { + return sk_float_midpoint(fTop, fBottom); + } + + /** Returns the point this->centerX(), this->centerY(). + @return rectangle center + */ + constexpr SkPoint center() const { return {this->centerX(), this->centerY()}; } + + /** Returns true if all members in a: fLeft, fTop, fRight, and fBottom; are + equal to the corresponding members in b. + + a and b are not equal if either contain NaN. a and b are equal if members + contain zeroes with different signs. + + @param a SkRect to compare + @param b SkRect to compare + @return true if members are equal + */ + friend bool operator==(const SkRect& a, const SkRect& b) { + return a.fLeft == b.fLeft && + a.fTop == b.fTop && + a.fRight == b.fRight && + a.fBottom == b.fBottom; + } + + /** Returns true if any in a: fLeft, fTop, fRight, and fBottom; does not + equal the corresponding members in b. + + a and b are not equal if either contain NaN. a and b are equal if members + contain zeroes with different signs. + + @param a SkRect to compare + @param b SkRect to compare + @return true if members are not equal + */ + friend bool operator!=(const SkRect& a, const SkRect& b) { + return !(a == b); + } + + SkPoint TL() const { return {fLeft, fTop}; } + SkPoint TR() const { return {fRight, fTop}; } + SkPoint BL() const { return {fLeft, fBottom}; } + SkPoint BR() const { return {fRight, fBottom}; } + + /** Returns four points in quad that enclose SkRect, + * respect the specified path-direction. + */ + std::array toQuad(SkPathDirection dir = SkPathDirection::kCW) const { + std::array storage; + this->copyToQuad(storage, dir); + return storage; + } + + // Same as toQuad(), but copies the 4 points into the specified storage + // which must be at least a size of 4. + void copyToQuad(SkSpan pts, SkPathDirection dir = SkPathDirection::kCW) const { + SkASSERT(pts.size() >= 4); + pts[0] = this->TL(); + pts[2] = this->BR(); + if (dir == SkPathDirection::kCW) { + pts[1] = this->TR(); + pts[3] = this->BL(); + } else { + pts[1] = this->BL(); + pts[3] = this->TR(); + } + } + + // DEPRECATED: use std::array or copyToQuad versions + void toQuad(SkPoint quad[4]) const { + this->copyToQuad({quad, 4}); + } + + /** Sets SkRect to (0, 0, 0, 0). + + Many other rectangles are empty; if left is equal to or greater than right, + or if top is equal to or greater than bottom. Setting all members to zero + is a convenience, but does not designate a special empty rectangle. + */ + void setEmpty() { *this = MakeEmpty(); } + + /** Sets SkRect to src, promoting src members from integer to float. + Very large values in src may lose precision. + + @param src integer SkRect + */ + void set(const SkIRect& src) { + fLeft = src.fLeft; + fTop = src.fTop; + fRight = src.fRight; + fBottom = src.fBottom; + } + + /** Sets SkRect to (left, top, right, bottom). + left and right are not sorted; left is not necessarily less than right. + top and bottom are not sorted; top is not necessarily less than bottom. + + @param left stored in fLeft + @param top stored in fTop + @param right stored in fRight + @param bottom stored in fBottom + */ + void setLTRB(float left, float top, float right, float bottom) { + fLeft = left; + fTop = top; + fRight = right; + fBottom = bottom; + } + + /** + * Compute the bounds of the span of points. + * If the span is empty, returns the empty-rect {0, 0, 0, 0. + * If the span contains non-finite values (inf or nan), returns {} + */ + static std::optional Bounds(SkSpan pts); + + static SkRect BoundsOrEmpty(SkSpan pts) { + if (auto bounds = Bounds(pts)) { + return bounds.value(); + } else { + return MakeEmpty(); + } + } + + /** Sets to bounds of SkPoint array with count entries. If count is zero or smaller, + or if SkPoint array contains an infinity or NaN, sets to (0, 0, 0, 0). + + Result is either empty or sorted: fLeft is less than or equal to fRight, and + fTop is less than or equal to fBottom. + + @param pts SkPoint span + */ + void setBounds(SkSpan pts) { + (void)this->setBoundsCheck(pts); + } + + /** Sets to bounds of the span of points, and return true (if all point values were finite). + * + * If the span is empty, set the rect to empty() and return true. + * If any point contains an infinity or NaN, set the rect to empty and return false. + * + * @param pts SkPoint span + * example: https://fiddle.skia.org/c/@Rect_setBoundsCheck + */ + bool setBoundsCheck(SkSpan pts); + + /** Sets to bounds of the span of points. + * + * If the span is empty, set the rect to empty(). + * If any point contains an infinity or NaN, set the rect to NaN. + * + * @param pts SkPoint span + * example: https://fiddle.skia.org/c/@Rect_setBoundsNoCheck + */ + void setBoundsNoCheck(SkSpan pts); + + /** Sets bounds to the smallest SkRect enclosing SkPoint p0 and p1. The result is + sorted and may be empty. Does not check to see if values are finite. + + @param p0 corner to include + @param p1 corner to include + */ + void set(const SkPoint& p0, const SkPoint& p1) { + fLeft = std::min(p0.fX, p1.fX); + fRight = std::max(p0.fX, p1.fX); + fTop = std::min(p0.fY, p1.fY); + fBottom = std::max(p0.fY, p1.fY); + } + + /** Sets SkRect to (x, y, x + width, y + height). + Does not validate input; width or height may be negative. + + @param x stored in fLeft + @param y stored in fTop + @param width added to x and stored in fRight + @param height added to y and stored in fBottom + */ + void setXYWH(float x, float y, float width, float height) { + fLeft = x; + fTop = y; + fRight = x + width; + fBottom = y + height; + } + + /** Sets SkRect to (0, 0, width, height). Does not validate input; + width or height may be negative. + + @param width stored in fRight + @param height stored in fBottom + */ + void setWH(float width, float height) { + fLeft = 0; + fTop = 0; + fRight = width; + fBottom = height; + } + void setIWH(int32_t width, int32_t height) { + this->setWH(width, height); + } + + /** Returns SkRect offset by (dx, dy). + + If dx is negative, SkRect returned is moved to the left. + If dx is positive, SkRect returned is moved to the right. + If dy is negative, SkRect returned is moved upward. + If dy is positive, SkRect returned is moved downward. + + @param dx added to fLeft and fRight + @param dy added to fTop and fBottom + @return SkRect offset on axes, with original width and height + */ + constexpr SkRect makeOffset(float dx, float dy) const { + return MakeLTRB(fLeft + dx, fTop + dy, fRight + dx, fBottom + dy); + } + + /** Returns SkRect offset by v. + + @param v added to rect + @return SkRect offset on axes, with original width and height + */ + constexpr SkRect makeOffset(SkVector v) const { return this->makeOffset(v.x(), v.y()); } + + /** Returns SkRect, inset by (dx, dy). + + If dx is negative, SkRect returned is wider. + If dx is positive, SkRect returned is narrower. + If dy is negative, SkRect returned is taller. + If dy is positive, SkRect returned is shorter. + + @param dx added to fLeft and subtracted from fRight + @param dy added to fTop and subtracted from fBottom + @return SkRect inset symmetrically left and right, top and bottom + */ + SkRect makeInset(float dx, float dy) const { + return MakeLTRB(fLeft + dx, fTop + dy, fRight - dx, fBottom - dy); + } + + /** Returns SkRect, outset by (dx, dy). + + If dx is negative, SkRect returned is narrower. + If dx is positive, SkRect returned is wider. + If dy is negative, SkRect returned is shorter. + If dy is positive, SkRect returned is taller. + + @param dx subtracted to fLeft and added from fRight + @param dy subtracted to fTop and added from fBottom + @return SkRect outset symmetrically left and right, top and bottom + */ + SkRect makeOutset(float dx, float dy) const { + return MakeLTRB(fLeft - dx, fTop - dy, fRight + dx, fBottom + dy); + } + + /** Offsets SkRect by adding dx to fLeft, fRight; and by adding dy to fTop, fBottom. + + If dx is negative, moves SkRect to the left. + If dx is positive, moves SkRect to the right. + If dy is negative, moves SkRect upward. + If dy is positive, moves SkRect downward. + + @param dx offset added to fLeft and fRight + @param dy offset added to fTop and fBottom + */ + void offset(float dx, float dy) { + fLeft += dx; + fTop += dy; + fRight += dx; + fBottom += dy; + } + + /** Offsets SkRect by adding delta.fX to fLeft, fRight; and by adding delta.fY to + fTop, fBottom. + + If delta.fX is negative, moves SkRect to the left. + If delta.fX is positive, moves SkRect to the right. + If delta.fY is negative, moves SkRect upward. + If delta.fY is positive, moves SkRect downward. + + @param delta added to SkRect + */ + void offset(const SkPoint& delta) { + this->offset(delta.fX, delta.fY); + } + + /** Offsets SkRect so that fLeft equals newX, and fTop equals newY. width and height + are unchanged. + + @param newX stored in fLeft, preserving width() + @param newY stored in fTop, preserving height() + */ + void offsetTo(float newX, float newY) { + fRight += newX - fLeft; + fBottom += newY - fTop; + fLeft = newX; + fTop = newY; + } + + /** Insets SkRect by (dx, dy). + + If dx is positive, makes SkRect narrower. + If dx is negative, makes SkRect wider. + If dy is positive, makes SkRect shorter. + If dy is negative, makes SkRect taller. + + @param dx added to fLeft and subtracted from fRight + @param dy added to fTop and subtracted from fBottom + */ + void inset(float dx, float dy) { + fLeft += dx; + fTop += dy; + fRight -= dx; + fBottom -= dy; + } + + /** Outsets SkRect by (dx, dy). + + If dx is positive, makes SkRect wider. + If dx is negative, makes SkRect narrower. + If dy is positive, makes SkRect taller. + If dy is negative, makes SkRect shorter. + + @param dx subtracted to fLeft and added from fRight + @param dy subtracted to fTop and added from fBottom + */ + void outset(float dx, float dy) { this->inset(-dx, -dy); } + + /** Returns true if SkRect intersects r, and sets SkRect to intersection. + Returns false if SkRect does not intersect r, and leaves SkRect unchanged. + + Returns false if either r or SkRect is empty, leaving SkRect unchanged. + + @param r limit of result + @return true if r and SkRect have area in common + + example: https://fiddle.skia.org/c/@Rect_intersect + */ + bool intersect(const SkRect& r); + + /** Returns true if a intersects b, and sets SkRect to intersection. + Returns false if a does not intersect b, and leaves SkRect unchanged. + + Returns false if either a or b is empty, leaving SkRect unchanged. + + @param a SkRect to intersect + @param b SkRect to intersect + @return true if a and b have area in common + */ + [[nodiscard]] bool intersect(const SkRect& a, const SkRect& b); + + +private: + static bool Intersects(float al, float at, float ar, float ab, + float bl, float bt, float br, float bb) { + float L = std::max(al, bl); + float R = std::min(ar, br); + float T = std::max(at, bt); + float B = std::min(ab, bb); + return L < R && T < B; + } + +public: + + /** Returns true if SkRect intersects r. + Returns false if either r or SkRect is empty, or do not intersect. + + @param r SkRect to intersect + @return true if r and SkRect have area in common + */ + bool intersects(const SkRect& r) const { + return Intersects(fLeft, fTop, fRight, fBottom, + r.fLeft, r.fTop, r.fRight, r.fBottom); + } + + /** Returns true if a intersects b. + Returns false if either a or b is empty, or do not intersect. + + @param a SkRect to intersect + @param b SkRect to intersect + @return true if a and b have area in common + */ + static bool Intersects(const SkRect& a, const SkRect& b) { + return Intersects(a.fLeft, a.fTop, a.fRight, a.fBottom, + b.fLeft, b.fTop, b.fRight, b.fBottom); + } + + /** Sets SkRect to the union of itself and r. + + Has no effect if r is empty. Otherwise, if SkRect is empty, sets + SkRect to r. + + @param r expansion SkRect + + example: https://fiddle.skia.org/c/@Rect_join_2 + */ + void join(const SkRect& r); + + /** Sets SkRect to the union of itself and r. + + Asserts if r is empty and SK_DEBUG is defined. + If SkRect is empty, sets SkRect to r. + + May produce incorrect results if r is empty. + + @param r expansion SkRect + */ + void joinNonEmptyArg(const SkRect& r) { + SkASSERT(!r.isEmpty()); + // if we are empty, just assign + if (fLeft >= fRight || fTop >= fBottom) { + *this = r; + } else { + this->joinPossiblyEmptyRect(r); + } + } + + /** Sets SkRect to the union of itself and the construction. + + May produce incorrect results if SkRect or r is empty. + + @param r expansion SkRect + */ + void joinPossiblyEmptyRect(const SkRect& r) { + fLeft = std::min(fLeft, r.left()); + fTop = std::min(fTop, r.top()); + fRight = std::max(fRight, r.right()); + fBottom = std::max(fBottom, r.bottom()); + } + + /** Returns true if: fLeft <= x < fRight && fTop <= y < fBottom. + Returns false if SkRect is empty. + + @param x test SkPoint x-coordinate + @param y test SkPoint y-coordinate + @return true if (x, y) is inside SkRect + */ + bool contains(float x, float y) const { + return x >= fLeft && x < fRight && y >= fTop && y < fBottom; + } + + /** Returns true if SkRect contains r. + Returns false if SkRect is empty or r is empty. + + SkRect contains r when SkRect area completely includes r area. + + @param r SkRect contained + @return true if all sides of SkRect are outside r + */ + bool contains(const SkRect& r) const { + // todo: can we eliminate the this->isEmpty check? + return !r.isEmpty() && !this->isEmpty() && + fLeft <= r.fLeft && fTop <= r.fTop && + fRight >= r.fRight && fBottom >= r.fBottom; + } + + /** Returns true if SkRect contains r. + Returns false if SkRect is empty or r is empty. + + SkRect contains r when SkRect area completely includes r area. + + @param r SkIRect contained + @return true if all sides of SkRect are outside r + */ + bool contains(const SkIRect& r) const { + // todo: can we eliminate the this->isEmpty check? + return !r.isEmpty() && !this->isEmpty() && + fLeft <= r.fLeft && fTop <= r.fTop && + fRight >= r.fRight && fBottom >= r.fBottom; + } + + /** Sets SkIRect by adding 0.5 and discarding the fractional portion of SkRect + members, using (sk_float_round2int(fLeft), sk_float_round2int(fTop), + sk_float_round2int(fRight), sk_float_round2int(fBottom)). + + @param dst storage for SkIRect + */ + void round(SkIRect* dst) const { + SkASSERT(dst); + dst->setLTRB(sk_float_round2int(fLeft), sk_float_round2int(fTop), + sk_float_round2int(fRight), sk_float_round2int(fBottom)); + } + + /** Sets SkIRect by discarding the fractional portion of fLeft and fTop; and rounding + up fRight and fBottom, using + (sk_float_floor2int(fLeft), sk_float_floor2int(fTop), + sk_float_ceil2int(fRight), sk_float_ceil2int(fBottom)). + + @param dst storage for SkIRect + */ + void roundOut(SkIRect* dst) const { + SkASSERT(dst); + dst->setLTRB(sk_float_floor2int(fLeft), sk_float_floor2int(fTop), + sk_float_ceil2int(fRight), sk_float_ceil2int(fBottom)); + } + + /** Sets SkRect by discarding the fractional portion of fLeft and fTop; and rounding + up fRight and fBottom, using + (std::floor(fLeft), std::floor(fTop), + std::ceil(fRight), std::ceil(fBottom)). + + @param dst storage for SkRect + */ + void roundOut(SkRect* dst) const { + dst->setLTRB(std::floor(fLeft), std::floor(fTop), + std::ceil(fRight), std::ceil(fBottom)); + } + + /** Sets SkRect by rounding up fLeft and fTop; and discarding the fractional portion + of fRight and fBottom, using + (sk_float_ceil2int(fLeft), sk_float_ceil2int(fTop), + sk_float_floor2int(fRight), sk_float_floor2int(fBottom)). + + @param dst storage for SkIRect + */ + void roundIn(SkIRect* dst) const { + SkASSERT(dst); + dst->setLTRB(sk_float_ceil2int(fLeft), sk_float_ceil2int(fTop), + sk_float_floor2int(fRight), sk_float_floor2int(fBottom)); + } + + /** Returns SkIRect by adding 0.5 and discarding the fractional portion of SkRect + members, using (sk_float_round2int(fLeft), sk_float_round2int(fTop), + sk_float_round2int(fRight), sk_float_round2int(fBottom)). + + @return rounded SkIRect + */ + SkIRect round() const { + SkIRect ir; + this->round(&ir); + return ir; + } + + /** Sets SkIRect by discarding the fractional portion of fLeft and fTop; and rounding + up fRight and fBottom, using + (sk_float_floor2int(fLeft), sk_float_floor2int(fTop), + sk_float_ceil2int(fRight), sk_float_ceil2int(fBottom)). + + @return rounded SkIRect + */ + SkIRect roundOut() const { + SkIRect ir; + this->roundOut(&ir); + return ir; + } + /** Sets SkIRect by rounding up fLeft and fTop; and discarding the fractional portion + of fRight and fBottom, using + (sk_float_ceil2int(fLeft), sk_float_ceil2int(fTop), + sk_float_floor2int(fRight), sk_float_floor2int(fBottom)). + + @return rounded SkIRect + */ + SkIRect roundIn() const { + SkIRect ir; + this->roundIn(&ir); + return ir; + } + + /** Swaps fLeft and fRight if fLeft is greater than fRight; and swaps + fTop and fBottom if fTop is greater than fBottom. Result may be empty; + and width() and height() will be zero or positive. + */ + void sort() { + using std::swap; + if (fLeft > fRight) { + swap(fLeft, fRight); + } + + if (fTop > fBottom) { + swap(fTop, fBottom); + } + } + + /** Returns SkRect with fLeft and fRight swapped if fLeft is greater than fRight; and + with fTop and fBottom swapped if fTop is greater than fBottom. Result may be empty; + and width() and height() will be zero or positive. + + @return sorted SkRect + */ + SkRect makeSorted() const { + return MakeLTRB(std::min(fLeft, fRight), std::min(fTop, fBottom), + std::max(fLeft, fRight), std::max(fTop, fBottom)); + } + + /** Returns pointer to first float in SkRect, to treat it as an array with four + entries. + + @return pointer to fLeft + */ + const float* asScalars() const { return &fLeft; } + + /** Writes text representation of SkRect to standard output. Set asHex to true to + generate exact binary representations of floating point numbers. + + @param asHex true if SkScalar values are written as hexadecimal + + example: https://fiddle.skia.org/c/@Rect_dump + */ + void dump(bool asHex) const; + SkString dumpToString(bool asHex) const; + + /** Writes text representation of SkRect to standard output. The representation may be + directly compiled as C++ code. Floating point values are written + with limited precision; it may not be possible to reconstruct original SkRect + from output. + */ + void dump() const { this->dump(false); } + + /** Writes text representation of SkRect to standard output. The representation may be + directly compiled as C++ code. Floating point values are written + in hexadecimal to preserve their exact bit pattern. The output reconstructs the + original SkRect. + + Use instead of dump() when submitting + */ + void dumpHex() const { this->dump(true); } +}; + +inline bool SkIRect::contains(const SkRect& r) const { + return !r.isEmpty() && !this->isEmpty() && // check for empties + fLeft <= r.fLeft && fTop <= r.fTop && + fRight >= r.fRight && fBottom >= r.fBottom; +} + +#endif diff --git a/vendor/artifacts/skia/include/core/SkRefCnt.h b/vendor/artifacts/skia/include/core/SkRefCnt.h new file mode 100644 index 000000000..0737ae5be --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkRefCnt.h @@ -0,0 +1,391 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkRefCnt_DEFINED +#define SkRefCnt_DEFINED + +#include "include/core/SkTypes.h" +#include "include/private/base/SkDebug.h" + +#include +#include +#include +#include +#include +#include + +/** \class SkRefCntBase + + SkRefCntBase is the base class for objects that may be shared by multiple + objects. When an existing owner wants to share a reference, it calls ref(). + When an owner wants to release its reference, it calls unref(). When the + shared object's reference count goes to zero as the result of an unref() + call, its (virtual) destructor is called. It is an error for the + destructor to be called explicitly (or via the object going out of scope on + the stack or calling delete) if getRefCnt() > 1. +*/ +class SK_API SkRefCntBase { +public: + /** Default construct, initializing the reference count to 1. + */ + SkRefCntBase() : fRefCnt(1) {} + + /** Destruct, asserting that the reference count is 1. + */ + virtual ~SkRefCntBase() { + #ifdef SK_DEBUG + SkASSERTF(this->getRefCnt() == 1, "fRefCnt was %d", this->getRefCnt()); + // illegal value, to catch us if we reuse after delete + fRefCnt.store(0, std::memory_order_relaxed); + #endif + } + + /** May return true if the caller is the only owner. + * Ensures that all previous owner's actions are complete. + */ + bool unique() const { + if (1 == fRefCnt.load(std::memory_order_acquire)) { + // The acquire barrier is only really needed if we return true. It + // prevents code conditioned on the result of unique() from running + // until previous owners are all totally done calling unref(). + return true; + } + return false; + } + + /** Increment the reference count. Must be balanced by a call to unref(). + */ + void ref() const { + SkASSERT(this->getRefCnt() > 0); + // No barrier required. + (void)fRefCnt.fetch_add(+1, std::memory_order_relaxed); + } + + /** Decrement the reference count. If the reference count is 1 before the + decrement, then delete the object. Note that if this is the case, then + the object needs to have been allocated via new, and not on the stack. + */ + void unref() const { + SkASSERT(this->getRefCnt() > 0); + // A release here acts in place of all releases we "should" have been doing in ref(). + if (1 == fRefCnt.fetch_add(-1, std::memory_order_acq_rel)) { + // Like unique(), the acquire is only needed on success, to make sure + // code in internal_dispose() doesn't happen before the decrement. + this->internal_dispose(); + } + } + +private: + +#ifdef SK_DEBUG + /** Return the reference count. Use only for debugging. */ + int32_t getRefCnt() const { + return fRefCnt.load(std::memory_order_relaxed); + } +#endif + + /** + * Called when the ref count goes to 0. + */ + virtual void internal_dispose() const { + #ifdef SK_DEBUG + SkASSERT(0 == this->getRefCnt()); + fRefCnt.store(1, std::memory_order_relaxed); + #endif + delete this; + } + + // The following friends are those which override internal_dispose() + // and conditionally call SkRefCnt::internal_dispose(). + friend class SkWeakRefCnt; + + mutable std::atomic fRefCnt; + + SkRefCntBase(SkRefCntBase&&) = delete; + SkRefCntBase(const SkRefCntBase&) = delete; + SkRefCntBase& operator=(SkRefCntBase&&) = delete; + SkRefCntBase& operator=(const SkRefCntBase&) = delete; +}; + +#ifdef SK_REF_CNT_MIXIN_INCLUDE +// It is the responsibility of the following include to define the type SkRefCnt. +// This SkRefCnt should normally derive from SkRefCntBase. +#include SK_REF_CNT_MIXIN_INCLUDE +#else +class SK_API SkRefCnt : public SkRefCntBase { + // "#include SK_REF_CNT_MIXIN_INCLUDE" doesn't work with this build system. + #if defined(SK_BUILD_FOR_GOOGLE3) + public: + void deref() const { this->unref(); } + #endif +}; +#endif + +/////////////////////////////////////////////////////////////////////////////// + +/** Call obj->ref() and return obj. The obj must not be nullptr. + */ +template static inline T* SkRef(T* obj) { + SkASSERT(obj); + obj->ref(); + return obj; +} + +/** Check if the argument is non-null, and if so, call obj->ref() and return obj. + */ +template static inline T* SkSafeRef(T* obj) { + if (obj) { + obj->ref(); + } + return obj; +} + +/** Check if the argument is non-null, and if so, call obj->unref() + */ +template static inline void SkSafeUnref(T* obj) { + if (obj) { + obj->unref(); + } +} + +/////////////////////////////////////////////////////////////////////////////// + +// This is a variant of SkRefCnt that's Not Virtual, so weighs 4 bytes instead of 8 or 16. +// There's only benefit to using this if the deriving class does not otherwise need a vtable. +template +class SkNVRefCnt { +public: + SkNVRefCnt() : fRefCnt(1) {} + ~SkNVRefCnt() { + #ifdef SK_DEBUG + int rc = fRefCnt.load(std::memory_order_relaxed); + SkASSERTF(rc == 1, "NVRefCnt was %d", rc); + #endif + } + + // Implementation is pretty much the same as SkRefCntBase. All required barriers are the same: + // - unique() needs acquire when it returns true, and no barrier if it returns false; + // - ref() doesn't need any barrier; + // - unref() needs a release barrier, and an acquire if it's going to call delete. + + bool unique() const { return 1 == fRefCnt.load(std::memory_order_acquire); } + void ref() const { (void)fRefCnt.fetch_add(+1, std::memory_order_relaxed); } + void unref() const { + if (1 == fRefCnt.fetch_add(-1, std::memory_order_acq_rel)) { + // restore the 1 for our destructor's assert + SkDEBUGCODE(fRefCnt.store(1, std::memory_order_relaxed)); + delete (const Derived*)this; + } + } + void deref() const { this->unref(); } + + // This must be used with caution. It is only valid to call this when 'threadIsolatedTestCnt' + // refs are known to be isolated to the current thread. That is, it is known that there are at + // least 'threadIsolatedTestCnt' refs for which no other thread may make a balancing unref() + // call. Assuming the contract is followed, if this returns false then no other thread has + // ownership of this. If it returns true then another thread *may* have ownership. + bool refCntGreaterThan(int32_t threadIsolatedTestCnt) const { + int cnt = fRefCnt.load(std::memory_order_acquire); + // If this fails then the above contract has been violated. + SkASSERT(cnt >= threadIsolatedTestCnt); + return cnt > threadIsolatedTestCnt; + } + +private: + mutable std::atomic fRefCnt; + + SkNVRefCnt(SkNVRefCnt&&) = delete; + SkNVRefCnt(const SkNVRefCnt&) = delete; + SkNVRefCnt& operator=(SkNVRefCnt&&) = delete; + SkNVRefCnt& operator=(const SkNVRefCnt&) = delete; +}; + +/////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * Shared pointer class to wrap classes that support a ref()/unref() interface. + * + * This can be used for classes inheriting from SkRefCnt, but it also works for other + * classes that match the interface, but have different internal choices: e.g. the hosted class + * may have its ref/unref be thread-safe, but that is not assumed/imposed by sk_sp. + * + * Declared with the trivial_abi attribute where supported so that sk_sp and types containing it + * may be considered as trivially relocatable by the compiler so that destroying-move operations + * i.e. move constructor followed by destructor can be optimized to memcpy. + */ +template class SK_TRIVIAL_ABI sk_sp { +public: + using element_type = T; + + constexpr sk_sp() : fPtr(nullptr) {} + constexpr sk_sp(std::nullptr_t) : fPtr(nullptr) {} + + /** + * Shares the underlying object by calling ref(), so that both the argument and the newly + * created sk_sp both have a reference to it. + */ + sk_sp(const sk_sp& that) : fPtr(SkSafeRef(that.get())) {} + template ::value>::type> + sk_sp(const sk_sp& that) : fPtr(SkSafeRef(that.get())) {} + + /** + * Move the underlying object from the argument to the newly created sk_sp. Afterwards only + * the new sk_sp will have a reference to the object, and the argument will point to null. + * No call to ref() or unref() will be made. + */ + sk_sp(sk_sp&& that) : fPtr(that.release()) {} + template ::value>::type> + sk_sp(sk_sp&& that) : fPtr(that.release()) {} + + /** + * Adopt the bare pointer into the newly created sk_sp. + * No call to ref() or unref() will be made. + */ + explicit sk_sp(T* obj) : fPtr(obj) {} + + /** + * Calls unref() on the underlying object pointer. + */ + ~sk_sp() { + SkSafeUnref(fPtr); + SkDEBUGCODE(fPtr = nullptr); + } + + sk_sp& operator=(std::nullptr_t) { this->reset(); return *this; } + + /** + * Shares the underlying object referenced by the argument by calling ref() on it. If this + * sk_sp previously had a reference to an object (i.e. not null) it will call unref() on that + * object. + */ + sk_sp& operator=(const sk_sp& that) { + if (this != &that) { + this->reset(SkSafeRef(that.get())); + } + return *this; + } + template ::value>::type> + sk_sp& operator=(const sk_sp& that) { + this->reset(SkSafeRef(that.get())); + return *this; + } + + /** + * Move the underlying object from the argument to the sk_sp. If the sk_sp previously held + * a reference to another object, unref() will be called on that object. No call to ref() + * will be made. + */ + sk_sp& operator=(sk_sp&& that) { + this->reset(that.release()); + return *this; + } + template ::value>::type> + sk_sp& operator=(sk_sp&& that) { + this->reset(that.release()); + return *this; + } + + T& operator*() const { + SkASSERT(this->get() != nullptr); + return *this->get(); + } + + explicit operator bool() const { return this->get() != nullptr; } + + T* get() const { return fPtr; } + T* operator->() const { return fPtr; } + + /** + * Adopt the new bare pointer, and call unref() on any previously held object (if not null). + * No call to ref() will be made. + */ + void reset(T* ptr = nullptr) { + // Calling fPtr->unref() may call this->~() or this->reset(T*). + // http://wg21.cmeerw.net/lwg/issue998 + // http://wg21.cmeerw.net/lwg/issue2262 + T* oldPtr = fPtr; + fPtr = ptr; + SkSafeUnref(oldPtr); + } + + /** + * Return the bare pointer, and set the internal object pointer to nullptr. + * The caller must assume ownership of the object, and manage its reference count directly. + * No call to unref() will be made. + */ + [[nodiscard]] T* release() { + T* ptr = fPtr; + fPtr = nullptr; + return ptr; + } + + void swap(sk_sp& that) /*noexcept*/ { + using std::swap; + swap(fPtr, that.fPtr); + } + + using sk_is_trivially_relocatable = std::true_type; + +private: + T* fPtr; +}; + +template inline void swap(sk_sp& a, sk_sp& b) /*noexcept*/ { + a.swap(b); +} + +template inline bool operator==(const sk_sp& a, const sk_sp& b) { + return a.get() == b.get(); +} +template inline bool operator==(const sk_sp& a, std::nullptr_t) /*noexcept*/ { + return !a; +} +template inline bool operator==(std::nullptr_t, const sk_sp& b) /*noexcept*/ { + return !b; +} + +template inline bool operator!=(const sk_sp& a, const sk_sp& b) { + return a.get() != b.get(); +} +template inline bool operator!=(const sk_sp& a, std::nullptr_t) /*noexcept*/ { + return static_cast(a); +} +template inline bool operator!=(std::nullptr_t, const sk_sp& b) /*noexcept*/ { + return static_cast(b); +} + +template +auto operator<<(std::basic_ostream& os, const sk_sp& sp) -> decltype(os << sp.get()) { + return os << sp.get(); +} + +template sk_sp(T*) -> sk_sp; + +template +sk_sp sk_make_sp(Args&&... args) { + return sk_sp(new T(std::forward(args)...)); +} + +/* + * Returns a sk_sp wrapping the provided ptr AND calls ref on it (if not null). + * + * This is different than the semantics of the constructor for sk_sp, which just wraps the ptr, + * effectively "adopting" it. + */ +template sk_sp sk_ref_sp(T* obj) { + return sk_sp(SkSafeRef(obj)); +} + +template sk_sp sk_ref_sp(const T* obj) { + return sk_sp(const_cast(SkSafeRef(obj))); +} + +#endif diff --git a/vendor/artifacts/skia/include/core/SkRegion.h b/vendor/artifacts/skia/include/core/SkRegion.h new file mode 100644 index 000000000..b86e1301b --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkRegion.h @@ -0,0 +1,701 @@ +/* + * Copyright 2005 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkRegion_DEFINED +#define SkRegion_DEFINED + +#include "include/core/SkPath.h" +#include "include/core/SkRect.h" +#include "include/core/SkSpan.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkTypeTraits.h" + +#include +#include +#include + +class SkPathBuilder; + +/** \class SkRegion + SkRegion describes the set of pixels used to clip SkCanvas. SkRegion is compact, + efficiently storing a single integer rectangle, or a run length encoded array + of rectangles. SkRegion may reduce the current SkCanvas clip, or may be drawn as + one or more integer rectangles. SkRegion iterator returns the scan lines or + rectangles contained by it, optionally intersecting a bounding rectangle. +*/ +class SK_API SkRegion { + typedef int32_t RunType; +public: + + /** Constructs an empty SkRegion. SkRegion is set to empty bounds + at (0, 0) with zero width and height. + + @return empty SkRegion + + example: https://fiddle.skia.org/c/@Region_empty_constructor + */ + SkRegion(); + + /** Constructs a copy of an existing region. + Copy constructor makes two regions identical by value. Internally, region and + the returned result share pointer values. The underlying SkRect array is + copied when modified. + + Creating a SkRegion copy is very efficient and never allocates memory. + SkRegion are always copied by value from the interface; the underlying shared + pointers are not exposed. + + @param region SkRegion to copy by value + @return copy of SkRegion + + example: https://fiddle.skia.org/c/@Region_copy_const_SkRegion + */ + SkRegion(const SkRegion& region); + + /** Constructs a rectangular SkRegion matching the bounds of rect. + + @param rect bounds of constructed SkRegion + @return rectangular SkRegion + + example: https://fiddle.skia.org/c/@Region_copy_const_SkIRect + */ + explicit SkRegion(const SkIRect& rect); + + /** Releases ownership of any shared data and deletes data if SkRegion is sole owner. + + example: https://fiddle.skia.org/c/@Region_destructor + */ + ~SkRegion(); + + /** Constructs a copy of an existing region. + Makes two regions identical by value. Internally, region and + the returned result share pointer values. The underlying SkRect array is + copied when modified. + + Creating a SkRegion copy is very efficient and never allocates memory. + SkRegion are always copied by value from the interface; the underlying shared + pointers are not exposed. + + @param region SkRegion to copy by value + @return SkRegion to copy by value + + example: https://fiddle.skia.org/c/@Region_copy_operator + */ + SkRegion& operator=(const SkRegion& region); + + /** Compares SkRegion and other; returns true if they enclose exactly + the same area. + + @param other SkRegion to compare + @return true if SkRegion pair are equivalent + + example: https://fiddle.skia.org/c/@Region_equal1_operator + */ + bool operator==(const SkRegion& other) const; + + /** Compares SkRegion and other; returns true if they do not enclose the same area. + + @param other SkRegion to compare + @return true if SkRegion pair are not equivalent + */ + bool operator!=(const SkRegion& other) const { + return !(*this == other); + } + + /** Sets SkRegion to src, and returns true if src bounds is not empty. + This makes SkRegion and src identical by value. Internally, + SkRegion and src share pointer values. The underlying SkRect array is + copied when modified. + + Creating a SkRegion copy is very efficient and never allocates memory. + SkRegion are always copied by value from the interface; the underlying shared + pointers are not exposed. + + @param src SkRegion to copy + @return copy of src + */ + bool set(const SkRegion& src) { + *this = src; + return !this->isEmpty(); + } + + /** Exchanges SkIRect array of SkRegion and other. swap() internally exchanges pointers, + so it is lightweight and does not allocate memory. + + swap() usage has largely been replaced by operator=(const SkRegion& region). + SkPath do not copy their content on assignment until they are written to, + making assignment as efficient as swap(). + + @param other operator=(const SkRegion& region) set + + example: https://fiddle.skia.org/c/@Region_swap + */ + void swap(SkRegion& other); + + /** Returns true if SkRegion is empty. + Empty SkRegion has bounds width or height less than or equal to zero. + SkRegion() constructs empty SkRegion; setEmpty() + and setRect() with dimensionless data make SkRegion empty. + + @return true if bounds has no width or height + */ + bool isEmpty() const { return fRunHead == emptyRunHeadPtr(); } + + /** Returns true if SkRegion is one SkIRect with positive dimensions. + + @return true if SkRegion contains one SkIRect + */ + bool isRect() const { return fRunHead == kRectRunHeadPtr; } + + /** Returns true if SkRegion is described by more than one rectangle. + + @return true if SkRegion contains more than one SkIRect + */ + bool isComplex() const { return !this->isEmpty() && !this->isRect(); } + + /** Returns minimum and maximum axes values of SkIRect array. + Returns (0, 0, 0, 0) if SkRegion is empty. + + @return combined bounds of all SkIRect elements + */ + const SkIRect& getBounds() const { return fBounds; } + + /** Returns a value that increases with the number of + elements in SkRegion. Returns zero if SkRegion is empty. + Returns one if SkRegion equals SkIRect; otherwise, returns + value greater than one indicating that SkRegion is complex. + + Call to compare SkRegion for relative complexity. + + @return relative complexity + + example: https://fiddle.skia.org/c/@Region_computeRegionComplexity + */ + int computeRegionComplexity() const; + + /** Appends outline of SkRegion to path builder. + Returns true if SkRegion is not empty; otherwise, returns false, and leaves path + unmodified. + + @param path SkPath to append to + @return true if path changed + + example: https://fiddle.skia.org/c/@Region_getBoundaryPath + */ + bool addBoundaryPath(SkPathBuilder*) const; + + /** + * Return the boundary of the region as a path. + */ + SkPath getBoundaryPath() const; + + /** Constructs an empty SkRegion. SkRegion is set to empty bounds + at (0, 0) with zero width and height. Always returns false. + + @return false + + example: https://fiddle.skia.org/c/@Region_setEmpty + */ + bool setEmpty(); + + /** Constructs a rectangular SkRegion matching the bounds of rect. + If rect is empty, constructs empty and returns false. + + @param rect bounds of constructed SkRegion + @return true if rect is not empty + + example: https://fiddle.skia.org/c/@Region_setRect + */ + bool setRect(const SkIRect& rect); + + /** Constructs SkRegion as the union of SkIRect in rects array. If count is + zero, constructs empty SkRegion. Returns false if constructed SkRegion is empty. + + May be faster than repeated calls to op(). + + @param rects array of SkIRect + @param count array size + @return true if constructed SkRegion is not empty + + example: https://fiddle.skia.org/c/@Region_setRects + */ + bool setRects(SkSpan rects); +#if !defined(SK_DISABLE_LEGACY_SKREGION_UNSPANNED_APIS) + bool setRects(const SkIRect rects[], int count) { + return this->setRects({rects, count}); + } +#endif + + /** Constructs a copy of an existing region. + Makes two regions identical by value. Internally, region and + the returned result share pointer values. The underlying SkRect array is + copied when modified. + + Creating a SkRegion copy is very efficient and never allocates memory. + SkRegion are always copied by value from the interface; the underlying shared + pointers are not exposed. + + @param region SkRegion to copy by value + @return SkRegion to copy by value + + example: https://fiddle.skia.org/c/@Region_setRegion + */ + bool setRegion(const SkRegion& region); + + /** Constructs SkRegion to match outline of path within clip. + Returns false if constructed SkRegion is empty. + + Constructed SkRegion draws the same pixels as path through clip when + anti-aliasing is disabled. + + @param path SkPath providing outline + @param clip SkRegion containing path + @return true if constructed SkRegion is not empty + + example: https://fiddle.skia.org/c/@Region_setPath + */ + bool setPath(const SkPath& path, const SkRegion& clip); + + /** Returns true if SkRegion intersects rect. + Returns false if either rect or SkRegion is empty, or do not intersect. + + @param rect SkIRect to intersect + @return true if rect and SkRegion have area in common + + example: https://fiddle.skia.org/c/@Region_intersects + */ + bool intersects(const SkIRect& rect) const; + + /** Returns true if SkRegion intersects other. + Returns false if either other or SkRegion is empty, or do not intersect. + + @param other SkRegion to intersect + @return true if other and SkRegion have area in common + + example: https://fiddle.skia.org/c/@Region_intersects_2 + */ + bool intersects(const SkRegion& other) const; + + /** Returns true if SkIPoint (x, y) is inside SkRegion. + Returns false if SkRegion is empty. + + @param x test SkIPoint x-coordinate + @param y test SkIPoint y-coordinate + @return true if (x, y) is inside SkRegion + + example: https://fiddle.skia.org/c/@Region_contains + */ + bool contains(int32_t x, int32_t y) const; + + /** Returns true if other is completely inside SkRegion. + Returns false if SkRegion or other is empty. + + @param other SkIRect to contain + @return true if other is inside SkRegion + + example: https://fiddle.skia.org/c/@Region_contains_2 + */ + bool contains(const SkIRect& other) const; + + /** Returns true if other is completely inside SkRegion. + Returns false if SkRegion or other is empty. + + @param other SkRegion to contain + @return true if other is inside SkRegion + + example: https://fiddle.skia.org/c/@Region_contains_3 + */ + bool contains(const SkRegion& other) const; + + /** Returns true if SkRegion is a single rectangle and contains r. + May return false even though SkRegion contains r. + + @param r SkIRect to contain + @return true quickly if r points are equal or inside + */ + bool quickContains(const SkIRect& r) const { + SkASSERT(this->isEmpty() == fBounds.isEmpty()); // valid region + + return r.fLeft < r.fRight && r.fTop < r.fBottom && + fRunHead == kRectRunHeadPtr && // this->isRect() + /* fBounds.contains(left, top, right, bottom); */ + fBounds.fLeft <= r.fLeft && fBounds.fTop <= r.fTop && + fBounds.fRight >= r.fRight && fBounds.fBottom >= r.fBottom; + } + + /** Returns true if SkRegion does not intersect rect. + Returns true if rect is empty or SkRegion is empty. + May return false even though SkRegion does not intersect rect. + + @param rect SkIRect to intersect + @return true if rect does not intersect + */ + bool quickReject(const SkIRect& rect) const { + return this->isEmpty() || rect.isEmpty() || + !SkIRect::Intersects(fBounds, rect); + } + + /** Returns true if SkRegion does not intersect rgn. + Returns true if rgn is empty or SkRegion is empty. + May return false even though SkRegion does not intersect rgn. + + @param rgn SkRegion to intersect + @return true if rgn does not intersect + */ + bool quickReject(const SkRegion& rgn) const { + return this->isEmpty() || rgn.isEmpty() || + !SkIRect::Intersects(fBounds, rgn.fBounds); + } + + /** Offsets SkRegion by ivector (dx, dy). Has no effect if SkRegion is empty. + + @param dx x-axis offset + @param dy y-axis offset + */ + void translate(int dx, int dy) { this->translate(dx, dy, this); } + + /** Offsets SkRegion by ivector (dx, dy), writing result to dst. SkRegion may be passed + as dst parameter, translating SkRegion in place. Has no effect if dst is nullptr. + If SkRegion is empty, sets dst to empty. + + @param dx x-axis offset + @param dy y-axis offset + @param dst translated result + + example: https://fiddle.skia.org/c/@Region_translate_2 + */ + void translate(int dx, int dy, SkRegion* dst) const; + + /** \enum SkRegion::Op + The logical operations that can be performed when combining two SkRegion. + */ + enum Op { + kDifference_Op, //!< target minus operand + kIntersect_Op, //!< target intersected with operand + kUnion_Op, //!< target unioned with operand + kXOR_Op, //!< target exclusive or with operand + kReverseDifference_Op, //!< operand minus target + kReplace_Op, //!< replace target with operand + kLastOp = kReplace_Op, //!< last operator + }; + + static const int kOpCnt = kLastOp + 1; + + /** Replaces SkRegion with the result of SkRegion op rect. + Returns true if replaced SkRegion is not empty. + + @param rect SkIRect operand + @return false if result is empty + */ + bool op(const SkIRect& rect, Op op) { + if (this->isRect() && kIntersect_Op == op) { + if (!fBounds.intersect(rect)) { + return this->setEmpty(); + } + return true; + } + return this->op(*this, rect, op); + } + + /** Replaces SkRegion with the result of SkRegion op rgn. + Returns true if replaced SkRegion is not empty. + + @param rgn SkRegion operand + @return false if result is empty + */ + bool op(const SkRegion& rgn, Op op) { return this->op(*this, rgn, op); } + + /** Replaces SkRegion with the result of rect op rgn. + Returns true if replaced SkRegion is not empty. + + @param rect SkIRect operand + @param rgn SkRegion operand + @return false if result is empty + + example: https://fiddle.skia.org/c/@Region_op_4 + */ + bool op(const SkIRect& rect, const SkRegion& rgn, Op op); + + /** Replaces SkRegion with the result of rgn op rect. + Returns true if replaced SkRegion is not empty. + + @param rgn SkRegion operand + @param rect SkIRect operand + @return false if result is empty + + example: https://fiddle.skia.org/c/@Region_op_5 + */ + bool op(const SkRegion& rgn, const SkIRect& rect, Op op); + + /** Replaces SkRegion with the result of rgna op rgnb. + Returns true if replaced SkRegion is not empty. + + @param rgna SkRegion operand + @param rgnb SkRegion operand + @return false if result is empty + + example: https://fiddle.skia.org/c/@Region_op_6 + */ + bool op(const SkRegion& rgna, const SkRegion& rgnb, Op op); + +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + /** Private. Android framework only. + + @return string representation of SkRegion + */ + char* toString(); +#endif + + /** \class SkRegion::Iterator + Goes through the region one rectangle at a time. For each "strip" of one or more contiguous + Y values (scanlines) in ascending order, the iterator returns each rectangle in that strip + (from left to right) before advancing to the next strip (which may or may not have a gap). + */ + class SK_API Iterator { + public: + + /** Initializes SkRegion::Iterator with an empty SkRegion. done() on SkRegion::Iterator + returns true. + Call reset() to initialized SkRegion::Iterator at a later time. + + @return empty SkRegion iterator + */ + Iterator() : fRgn(nullptr), fDone(true) {} + + /** Sets SkRegion::Iterator to return elements of SkIRect array in region. + + @param region SkRegion to iterate + @return SkRegion iterator + + example: https://fiddle.skia.org/c/@Region_Iterator_copy_const_SkRegion + */ + Iterator(const SkRegion& region); + + /** SkPoint SkRegion::Iterator to start of SkRegion. + Returns true if SkRegion was set; otherwise, returns false. + + @return true if SkRegion was set + + example: https://fiddle.skia.org/c/@Region_Iterator_rewind + */ + bool rewind(); + + /** Resets iterator, using the new SkRegion. + + @param region SkRegion to iterate + + example: https://fiddle.skia.org/c/@Region_Iterator_reset + */ + void reset(const SkRegion& region); + + /** Returns true if SkRegion::Iterator is pointing to final SkIRect in SkRegion. + + @return true if data parsing is complete + */ + bool done() const { return fDone; } + + /** Advances SkRegion::Iterator to next SkIRect in SkRegion if it is not done. + * This moves to the next rectangle to the right within the current + * horizontal strip. If the end of the strip is reached, it automatically + * advances to the first rectangle in the next strip, skipping any vertical gaps. + * + * example: https://fiddle.skia.org/c/@Region_Iterator_next + */ + void next(); + + /** Returns SkIRect element in SkRegion. Does not return predictable results if SkRegion + is empty. + + @return part of SkRegion as SkIRect + */ + const SkIRect& rect() const { return fRect; } + + /** Returns SkRegion if set; otherwise, returns nullptr. + + @return iterated SkRegion + */ + const SkRegion* rgn() const { return fRgn; } + + private: + const SkRegion* fRgn; + // See top of SkRegion.cpp for more on the RLE encoding + const SkRegion::RunType* fRuns; + SkIRect fRect = {0, 0, 0, 0}; + bool fDone; + }; + + /** \class SkRegion::Cliperator + Returns the sequence of rectangles, sorted along y-axis, then x-axis, that make + up SkRegion intersected with the specified clip rectangle. + */ + class SK_API Cliperator { + public: + + /** Sets SkRegion::Cliperator to return elements of SkIRect array in SkRegion within clip. + + @param region SkRegion to iterate + @param clip bounds of iteration + @return SkRegion iterator + + example: https://fiddle.skia.org/c/@Region_Cliperator_const_SkRegion_const_SkIRect + */ + Cliperator(const SkRegion& region, const SkIRect& clip); + + /** Returns true if SkRegion::Cliperator is pointing to final SkIRect in SkRegion. + + @return true if data parsing is complete + */ + bool done() { return fDone; } + + /** Advances iterator to next SkIRect in SkRegion contained by clip. + + example: https://fiddle.skia.org/c/@Region_Cliperator_next + */ + void next(); + + /** Returns SkIRect element in SkRegion, intersected with clip passed to + SkRegion::Cliperator constructor. Does not return predictable results if SkRegion + is empty. + + @return part of SkRegion inside clip as SkIRect + */ + const SkIRect& rect() const { return fRect; } + + private: + Iterator fIter; + SkIRect fClip; + SkIRect fRect = {0, 0, 0, 0}; + bool fDone; + }; + + /** \class SkRegion::Spanerator + Returns the line segment ends within SkRegion that intersect a horizontal line. + */ + class SK_API Spanerator { + public: + + /** Sets SkRegion::Spanerator to return line segments in SkRegion on scan line. + + @param region SkRegion to iterate + @param y horizontal line to intersect + @param left bounds of iteration + @param right bounds of iteration + @return SkRegion iterator + + example: https://fiddle.skia.org/c/@Region_Spanerator_const_SkRegion_int_int_int + */ + Spanerator(const SkRegion& region, int y, int left, int right); + + /** Advances iterator to next span intersecting SkRegion within line segment provided + in constructor. Returns true if interval was found. + + @param left pointer to span start; may be nullptr + @param right pointer to span end; may be nullptr + @return true if interval was found + + example: https://fiddle.skia.org/c/@Region_Spanerator_next + */ + bool next(int* left, int* right); + + private: + const SkRegion::RunType* fRuns; + int fLeft, fRight; + bool fDone; + }; + + /** Writes SkRegion to buffer, and returns number of bytes written. + If buffer is nullptr, returns number number of bytes that would be written. + + @param buffer storage for binary data + @return size of SkRegion + + example: https://fiddle.skia.org/c/@Region_writeToMemory + */ + size_t writeToMemory(void* buffer) const; + + /** Constructs SkRegion from buffer of size length. Returns bytes read. + Returned value will be multiple of four or zero if length was too small. + + @param buffer storage for binary data + @param length size of buffer + @return bytes read + + example: https://fiddle.skia.org/c/@Region_readFromMemory + */ + size_t readFromMemory(const void* buffer, size_t length); + + using sk_is_trivially_relocatable = std::true_type; + +private: + static constexpr int kOpCount = kReplace_Op + 1; + + // T + // [B N L R S] + // S + static constexpr int kRectRegionRuns = 7; + + struct RunHead; + + static RunHead* emptyRunHeadPtr() { return (SkRegion::RunHead*) -1; } + static constexpr const RunHead* const kRectRunHeadPtr = nullptr; + + // allocate space for count runs + void allocateRuns(int count); + void allocateRuns(int count, int ySpanCount, int intervalCount); + void allocateRuns(const RunHead& src); + + SkDEBUGCODE(void dump() const;) + + SkIRect fBounds; + RunHead* fRunHead; + + static_assert(::sk_is_trivially_relocatable::value); + static_assert(::sk_is_trivially_relocatable::value); + + void freeRuns(); + + /** + * Return the runs from this region, consing up fake runs if the region + * is empty or a rect. In those 2 cases, we use tmpStorage to hold the + * run data. + */ + const RunType* getRuns(RunType tmpStorage[], int* intervals) const; + + // This is called with runs[] that do not yet have their interval-count + // field set on each scanline. That is computed as part of this call + // (inside ComputeRunBounds). + bool setRuns(RunType runs[], int count); + + int count_runtype_values(int* itop, int* ibot) const; + + bool isValid() const; + + static void BuildRectRuns(const SkIRect& bounds, + RunType runs[kRectRegionRuns]); + + // If the runs define a simple rect, return true and set bounds to that + // rect. If not, return false and ignore bounds. + static bool RunsAreARect(const SkRegion::RunType runs[], int count, + SkIRect* bounds); + + /** + * If the last arg is null, just return if the result is non-empty, + * else store the result in the last arg. + */ + static bool Oper(const SkRegion&, const SkRegion&, SkRegion::Op, SkRegion*); + + friend struct RunHead; + friend class Iterator; + friend class Spanerator; + friend class SkRegionPriv; + friend class SkRgnBuilder; + friend class SkFlatRegion; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkSamplingOptions.h b/vendor/artifacts/skia/include/core/SkSamplingOptions.h new file mode 100644 index 000000000..9e5079234 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkSamplingOptions.h @@ -0,0 +1,107 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImageSampling_DEFINED +#define SkImageSampling_DEFINED + +#include "include/core/SkTypes.h" + +#include +#include + +enum class SkFilterMode { + kNearest, // single sample point (nearest neighbor) + kLinear, // interporate between 2x2 sample points (bilinear interpolation) + + kLast = kLinear, +}; +static constexpr int kSkFilterModeCount = static_cast(SkFilterMode::kLast) + 1; + +enum class SkMipmapMode { + kNone, // ignore mipmap levels, sample from the "base" + kNearest, // sample from the nearest level + kLinear, // interpolate between the two nearest levels + + kLast = kLinear, +}; +static constexpr int kSkMipmapModeCount = static_cast(SkMipmapMode::kLast) + 1; + +/* + * Specify B and C (each between 0...1) to create a shader that applies the corresponding + * cubic reconstruction filter to the image. + * + * Example values: + * B = 1/3, C = 1/3 "Mitchell" filter + * B = 0, C = 1/2 "Catmull-Rom" filter + * + * See "Reconstruction Filters in Computer Graphics" + * Don P. Mitchell + * Arun N. Netravali + * 1988 + * https://www.cs.utexas.edu/~fussell/courses/cs384g-fall2013/lectures/mitchell/Mitchell.pdf + * + * Desmos worksheet https://www.desmos.com/calculator/aghdpicrvr + * Nice overview https://entropymine.com/imageworsener/bicubic/ + */ +struct SkCubicResampler { + float B, C; + + // Historic default for kHigh_SkFilterQuality + static constexpr SkCubicResampler Mitchell() { return {1/3.0f, 1/3.0f}; } + static constexpr SkCubicResampler CatmullRom() { return {0.0f, 1/2.0f}; } +}; + +struct SK_API SkSamplingOptions { + const int maxAniso = 0; + const bool useCubic = false; + const SkCubicResampler cubic = {0, 0}; + const SkFilterMode filter = SkFilterMode::kNearest; + const SkMipmapMode mipmap = SkMipmapMode::kNone; + + constexpr SkSamplingOptions() = default; + SkSamplingOptions(const SkSamplingOptions&) = default; + SkSamplingOptions& operator=(const SkSamplingOptions& that) { + this->~SkSamplingOptions(); // A pedantic no-op. + new (this) SkSamplingOptions(that); + return *this; + } + + constexpr SkSamplingOptions(SkFilterMode fm, SkMipmapMode mm) + : filter(fm) + , mipmap(mm) {} + + // These are intentionally implicit because the single parameter clearly conveys what the + // implicitly created SkSamplingOptions will be. + constexpr SkSamplingOptions(SkFilterMode fm) + : filter(fm) + , mipmap(SkMipmapMode::kNone) {} + + constexpr SkSamplingOptions(const SkCubicResampler& c) + : useCubic(true) + , cubic(c) {} + + static constexpr SkSamplingOptions Aniso(int maxAniso) { + return SkSamplingOptions{std::max(maxAniso, 1)}; + } + + bool operator==(const SkSamplingOptions& other) const { + return maxAniso == other.maxAniso + && useCubic == other.useCubic + && cubic.B == other.cubic.B + && cubic.C == other.cubic.C + && filter == other.filter + && mipmap == other.mipmap; + } + bool operator!=(const SkSamplingOptions& other) const { return !(*this == other); } + + bool isAniso() const { return maxAniso != 0; } + +private: + constexpr SkSamplingOptions(int maxAniso) : maxAniso(maxAniso) {} +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkScalar.h b/vendor/artifacts/skia/include/core/SkScalar.h new file mode 100644 index 000000000..104b04bdf --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkScalar.h @@ -0,0 +1,149 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkScalar_DEFINED +#define SkScalar_DEFINED + +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkFloatingPoint.h" + +#include + +typedef float SkScalar; + +#define SK_Scalar1 1.0f +#define SK_ScalarHalf 0.5f +#define SK_ScalarSqrt2 SK_FloatSqrt2 +#define SK_ScalarPI SK_FloatPI +#define SK_ScalarTanPIOver8 0.414213562f +#define SK_ScalarRoot2Over2 0.707106781f +#define SK_ScalarMax 3.402823466e+38f +#define SK_ScalarMin (-SK_ScalarMax) +#define SK_ScalarInfinity SK_FloatInfinity +#define SK_ScalarNegativeInfinity SK_FloatNegativeInfinity +#define SK_ScalarNaN SK_FloatNaN + +#define SkScalarFloorToScalar(x) std::floor(x) +#define SkScalarCeilToScalar(x) std::ceil(x) +#define SkScalarRoundToScalar(x) sk_float_round(x) +#define SkScalarTruncToScalar(x) std::trunc(x) + +#define SkScalarFloorToInt(x) sk_float_floor2int(x) +#define SkScalarCeilToInt(x) sk_float_ceil2int(x) +#define SkScalarRoundToInt(x) sk_float_round2int(x) + +#define SkScalarAbs(x) std::fabs(x) +#define SkScalarCopySign(x, y) std::copysign(x, y) +#define SkScalarMod(x, y) std::fmod(x,y) +#define SkScalarSqrt(x) std::sqrt(x) +#define SkScalarPow(b, e) std::pow(b, e) + +#define SkScalarSin(radians) ((float)std::sin(radians)) +#define SkScalarCos(radians) ((float)std::cos(radians)) +#define SkScalarTan(radians) ((float)std::tan(radians)) +#define SkScalarASin(val) ((float)std::asin(val)) +#define SkScalarACos(val) ((float)std::acos(val)) +#define SkScalarATan2(y, x) ((float)std::atan2(y,x)) +#define SkScalarExp(x) ((float)std::exp(x)) +#define SkScalarLog(x) ((float)std::log(x)) +#define SkScalarLog2(x) ((float)std::log2(x)) + +////////////////////////////////////////////////////////////////////////////////////////////////// + +#define SkIntToScalar(x) static_cast(x) +#define SkIntToFloat(x) static_cast(x) +#define SkScalarTruncToInt(x) sk_float_saturate2int(x) + +#define SkScalarToFloat(x) static_cast(x) +#define SkFloatToScalar(x) static_cast(x) +#define SkScalarToDouble(x) static_cast(x) +#define SkDoubleToScalar(x) sk_double_to_float(x) + +/** Returns the fractional part of the scalar. */ +static inline SkScalar SkScalarFraction(SkScalar x) { + return x - SkScalarTruncToScalar(x); +} + +static inline SkScalar SkScalarSquare(SkScalar x) { return x * x; } + +#define SkScalarInvert(x) (SK_Scalar1 / (x)) +#define SkScalarHalf(a) ((a) * SK_ScalarHalf) +#define SkScalarAve(a, b) sk_float_midpoint(a, b) + +#define SkDegreesToRadians(degrees) ((degrees) * (SK_ScalarPI / 180)) +#define SkRadiansToDegrees(radians) ((radians) * (180 / SK_ScalarPI)) + +static inline bool SkScalarIsInt(SkScalar x) { + return x == SkScalarFloorToScalar(x); +} + +/** + * Returns -1 || 0 || 1 depending on the sign of value: + * -1 if x < 0 + * 0 if x == 0 + * 1 if x > 0 + */ +static inline int SkScalarSignAsInt(SkScalar x) { + return x < 0 ? -1 : (x > 0); +} + +// Scalar result version of above +static inline SkScalar SkScalarSignAsScalar(SkScalar x) { + return x < 0 ? -SK_Scalar1 : ((x > 0) ? SK_Scalar1 : 0); +} + +#define SK_ScalarNearlyZero (SK_Scalar1 / (1 << 12)) + +static inline bool SkScalarNearlyZero(SkScalar x, + SkScalar tolerance = SK_ScalarNearlyZero) { + SkASSERT(tolerance >= 0); + return SkScalarAbs(x) <= tolerance; +} + +static inline bool SkScalarNearlyEqual(SkScalar x, SkScalar y, + SkScalar tolerance = SK_ScalarNearlyZero) { + SkASSERT(tolerance >= 0); + return SkScalarAbs(x-y) <= tolerance; +} + +#define SK_ScalarSinCosNearlyZero (SK_Scalar1 / (1 << 16)) + +static inline float SkScalarSinSnapToZero(SkScalar radians) { + float v = SkScalarSin(radians); + return SkScalarNearlyZero(v, SK_ScalarSinCosNearlyZero) ? 0.0f : v; +} + +static inline float SkScalarCosSnapToZero(SkScalar radians) { + float v = SkScalarCos(radians); + return SkScalarNearlyZero(v, SK_ScalarSinCosNearlyZero) ? 0.0f : v; +} + +/** Linearly interpolate between A and B, based on t. + If t is 0, return A + If t is 1, return B + else interpolate. + t must be [0..SK_Scalar1] +*/ +static inline SkScalar SkScalarInterp(SkScalar A, SkScalar B, SkScalar t) { + SkASSERT(t >= 0 && t <= SK_Scalar1); + return A + (B - A) * t; +} + +/* + * Helper to compare an array of scalars. + */ +static inline bool SkScalarsEqual(const SkScalar a[], const SkScalar b[], int n) { + SkASSERT(n >= 0); + for (int i = 0; i < n; ++i) { + if (a[i] != b[i]) { + return false; + } + } + return true; +} + +#endif diff --git a/vendor/artifacts/skia/include/core/SkSerialProcs.h b/vendor/artifacts/skia/include/core/SkSerialProcs.h new file mode 100644 index 000000000..c5d385061 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkSerialProcs.h @@ -0,0 +1,127 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSerialProcs_DEFINED +#define SkSerialProcs_DEFINED + +#include "include/core/SkFourByteTag.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include +#include + +class SkData; +class SkImage; +class SkPicture; +class SkTypeface; +class SkReadBuffer; +class SkStream; +enum SkAlphaType : int; +namespace sktext::gpu { + class Slug; +} + +using SkSerialReturnType = sk_sp; +/** + * A serial-proc is asked to serialize the specified object (e.g. picture or image). + * If a data object is returned, it will be used (even if it is zero-length). + * If null is returned, then Skia will take its default action. + * + * The default action for pictures is to use Skia's internal format. + * The default action for images is to encode either in its native format or PNG. + * The default action for typefaces is to use Skia's internal format. + */ +using SkSerialPictureProc = SkSerialReturnType (*)(SkPicture*, void* ctx); +using SkSerialImageProc = SkSerialReturnType (*)(SkImage*, void* ctx); +using SkSerialTypefaceProc = SkSerialReturnType (*)(SkTypeface*, void* ctx); + +/** + * Called with the encoded form of a picture (previously written with a custom + * SkSerialPictureProc proc). Return a picture object, or nullptr indicating failure. + */ +using SkDeserialPictureProc = sk_sp (*)(const void* data, size_t length, void* ctx); + +/** + * Called with the encoded form of an image. The proc can return an image object, or if it + * returns nullptr, then Skia will take its default action to try to create an image from the data. + * + * This will also be used to decode the internal mipmap layers that are saved on some images. + * + * An explicit SkAlphaType may have been encoded in the bytestream; if not, then the passed in + * optional will be not present. + * + * Clients should set at least SkDeserialImageProc; SkDeserialImageFromDataProc may be called + * if the internal implementation has a SkData copy already. Implementations of SkDeserialImageProc + * must make a copy of any data they needed after the proc finishes, since the data will go away + * after serialization ends. + */ +#if !defined(SK_LEGACY_DESERIAL_IMAGE_PROC) +using SkDeserialImageProc = sk_sp (*)(const void* data, size_t length, void* ctx); +#else +using SkDeserialImageProc = sk_sp (*)(const void* data, + size_t length, + std::optional, + void* ctx); +#endif +using SkDeserialImageFromDataProc = sk_sp (*)(sk_sp, + std::optional, + void* ctx); + +/** + * Slugs are currently only deserializable with a GPU backend. Clients will not be able to + * provide a custom mechanism here, but can enable Slug deserialization by calling + * sktext::gpu::AddDeserialProcs to add Skia's implementation. + */ +using SkSlugProc = sk_sp (*)(SkReadBuffer&, void* ctx); + +/** + * Called with the encoded form of a typeface (previously written with a custom + * SkSerialTypefaceProc proc). Return a typeface object, or nullptr indicating failure. + * TODO: Users must not attempt to fork or duplicate the passed stream and hold on to the result. + */ +using SkDeserialTypefaceStreamProc = sk_sp (*)(SkStream&, void* ctx); +using SkDeserialTypefaceProc = sk_sp (*)(const void* data, size_t length, void* ctx); + +using SkDeserialAllowTagsProc = bool(*)(SkFourByteTag, void* ctx); + +struct SK_API SkSerialProcs { + SkSerialPictureProc fPictureProc = nullptr; + void* fPictureCtx = nullptr; + + SkSerialImageProc fImageProc = nullptr; + void* fImageCtx = nullptr; + + SkSerialTypefaceProc fTypefaceProc = nullptr; + void* fTypefaceCtx = nullptr; +}; + +struct SK_API SkDeserialProcs { + SkDeserialPictureProc fPictureProc = nullptr; + void* fPictureCtx = nullptr; + + SkDeserialImageProc fImageProc = nullptr; + SkDeserialImageFromDataProc fImageDataProc = nullptr; + void* fImageCtx = nullptr; + + SkSlugProc fSlugProc = nullptr; + void* fSlugCtx = nullptr; + + SkDeserialTypefaceStreamProc fTypefaceStreamProc = nullptr; + void* fTypefaceCtx = nullptr; + + // This looks like a flag, but it could be considered a proc as well (one that takes no + // parameters and returns a bool). Given that there are only two valid implementations of that + // proc, we just insert the bool directly. + bool fAllowSkSL = true; + + // Can be used to restrict the tags that will be deserialized from SkPictures. + SkDeserialAllowTagsProc fAllowTagsProc = nullptr; + void* fAllowTagsCtx = nullptr; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkShader.h b/vendor/artifacts/skia/include/core/SkShader.h new file mode 100644 index 000000000..79a90ea06 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkShader.h @@ -0,0 +1,123 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkShader_DEFINED +#define SkShader_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkColorSpace.h" +#include "include/core/SkFlattenable.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkBlender; +class SkColorFilter; +class SkImage; +class SkMatrix; +enum class SkBlendMode; +enum class SkTileMode; +struct SkRect; +struct SkSamplingOptions; + +/** \class SkShader + * + * Shaders specify the premultiplied source color(s) for what is being drawn. + * If a paint has no shader, then the paint's color is used. If the paint has a + * shader, then the shader's color(s) are used instead, but they are + * modulated by the paint's alpha. This makes it easy to create a shader + * once (e.g. bitmap tiling or gradient) and then change its transparency + * w/o having to modify the original shader... only the paint's alpha needs + * to be modified. + */ +class SK_API SkShader : public SkFlattenable { +public: + /** + * Returns true if the shader is guaranteed to produce only opaque colors, subject to the + * SkPaint using the shader to apply an opaque alpha value. + */ + virtual bool isOpaque() const = 0; + + /** + * Iff this shader is backed by a single SkImage, return its ptr (the caller must ref this + * if they want to keep it longer than the lifetime of the shader). If not, return nullptr. + */ + SkImage* isAImage(SkMatrix* localMatrix, SkTileMode xy[2]) const; + + bool isAImage() const { + return this->isAImage(nullptr, (SkTileMode*)nullptr) != nullptr; + } + + ////////////////////////////////////////////////////////////////////////// + // Methods to create combinations or variants of shaders + + /** + * Return a shader that will apply the specified localMatrix to this shader. + * The specified matrix will be applied before any matrix associated with this shader. + */ + sk_sp makeWithLocalMatrix(const SkMatrix&) const; + + /** + * Create a new shader that produces the same colors as invoking this shader and then applying + * the colorfilter. + */ + sk_sp makeWithColorFilter(sk_sp) const; + + /** + * Return a shader that will compute this shader in a context such that any child shaders + * return RGBA values converted to the `inputCS` colorspace. + * + * It is then assumed that the RGBA values returned by this shader have been transformed into + * `outputCS` by the shader being wrapped. By default, shaders are assumed to return values + * in the destination colorspace and premultiplied. Using a different outputCS than inputCS + * allows custom shaders to replace the color management Skia normally performs w/o forcing + * authors to otherwise manipulate surface/image color info to avoid unnecessary or incorrect + * work. + * + * If the shader is not performing colorspace conversion but needs to operate in the `inputCS` + * then it should have `outputCS` be the same as `inputCS`. Regardless of the `outputCS` here, + * the RGBA values of the returned SkShader are always converted from `outputCS` to the + * destination surface color space. + * + * A null inputCS is assumed to be the destination CS. + * A null outputCS is assumed to be the inputCS. + */ + sk_sp makeWithWorkingColorSpace(sk_sp inputCS, + sk_sp outputCS=nullptr) const; + +private: + SkShader() = default; + friend class SkShaderBase; + + using INHERITED = SkFlattenable; +}; + +namespace SkShaders { +SK_API sk_sp Empty(); +SK_API sk_sp Color(SkColor); +SK_API sk_sp Color(const SkColor4f&, sk_sp); +SK_API sk_sp Blend(SkBlendMode mode, sk_sp dst, sk_sp src); +SK_API sk_sp Blend(sk_sp, sk_sp dst, sk_sp src); +SK_API sk_sp CoordClamp(sk_sp, const SkRect& subset); + +/* + * Create an SkShader that will sample the 'image'. This is equivalent to SkImage::makeShader. + */ +SK_API sk_sp Image(sk_sp image, + SkTileMode tmx, SkTileMode tmy, + const SkSamplingOptions& options, + const SkMatrix* localMatrix = nullptr); +/* + * Create an SkShader that will sample 'image' with minimal processing. This is equivalent to + * SkImage::makeRawShader. + */ +SK_API sk_sp RawImage(sk_sp image, + SkTileMode tmx, SkTileMode tmy, + const SkSamplingOptions& options, + const SkMatrix* localMatrix = nullptr); +} + +#endif diff --git a/vendor/artifacts/skia/include/core/SkSize.h b/vendor/artifacts/skia/include/core/SkSize.h new file mode 100644 index 000000000..3be747d27 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkSize.h @@ -0,0 +1,93 @@ +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSize_DEFINED +#define SkSize_DEFINED + +#include "include/core/SkScalar.h" +#include "include/private/base/SkTo.h" + +#include + +struct SkISize { + int32_t fWidth; + int32_t fHeight; + + static constexpr SkISize Make(int32_t w, int32_t h) { return {w, h}; } + + static constexpr SkISize MakeEmpty() { return {0, 0}; } + + void set(int32_t w, int32_t h) { *this = SkISize{w, h}; } + + /** Returns true iff fWidth == 0 && fHeight == 0 + */ + bool isZero() const { return 0 == fWidth && 0 == fHeight; } + + /** Returns true if either width or height are <= 0 */ + bool isEmpty() const { return fWidth <= 0 || fHeight <= 0; } + + /** Set the width and height to 0 */ + void setEmpty() { fWidth = fHeight = 0; } + + constexpr int32_t width() const { return fWidth; } + constexpr int32_t height() const { return fHeight; } + + constexpr int64_t area() const { return SkToS64(fWidth) * SkToS64(fHeight); } + + bool equals(int32_t w, int32_t h) const { return fWidth == w && fHeight == h; } +}; + +static inline bool operator==(const SkISize& a, const SkISize& b) { + return a.fWidth == b.fWidth && a.fHeight == b.fHeight; +} + +static inline bool operator!=(const SkISize& a, const SkISize& b) { return !(a == b); } + +/////////////////////////////////////////////////////////////////////////////// + +struct SkSize { + SkScalar fWidth; + SkScalar fHeight; + + static constexpr SkSize Make(SkScalar w, SkScalar h) { return {w, h}; } + + static constexpr SkSize Make(const SkISize& src) { + return {SkIntToScalar(src.width()), SkIntToScalar(src.height())}; + } + + static constexpr SkSize MakeEmpty() { return {0, 0}; } + + void set(SkScalar w, SkScalar h) { *this = SkSize{w, h}; } + + /** Returns true iff fWidth == 0 && fHeight == 0 + */ + bool isZero() const { return 0 == fWidth && 0 == fHeight; } + + /** Returns true if either width or height are <= 0 */ + bool isEmpty() const { return fWidth <= 0 || fHeight <= 0; } + + /** Set the width and height to 0 */ + void setEmpty() { *this = SkSize{0, 0}; } + + SkScalar width() const { return fWidth; } + SkScalar height() const { return fHeight; } + + bool equals(SkScalar w, SkScalar h) const { return fWidth == w && fHeight == h; } + + SkISize toRound() const { return {SkScalarRoundToInt(fWidth), SkScalarRoundToInt(fHeight)}; } + + SkISize toCeil() const { return {SkScalarCeilToInt(fWidth), SkScalarCeilToInt(fHeight)}; } + + SkISize toFloor() const { return {SkScalarFloorToInt(fWidth), SkScalarFloorToInt(fHeight)}; } +}; + +static inline bool operator==(const SkSize& a, const SkSize& b) { + return a.fWidth == b.fWidth && a.fHeight == b.fHeight; +} + +static inline bool operator!=(const SkSize& a, const SkSize& b) { return !(a == b); } +#endif diff --git a/vendor/artifacts/skia/include/core/SkSpan.h b/vendor/artifacts/skia/include/core/SkSpan.h new file mode 100644 index 000000000..d59be0630 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkSpan.h @@ -0,0 +1,13 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +// We want SkSpan to be a public API, but it is also fundamental to many of our internal types. +// Thus, we have a public file that clients can include. This file defers to the private copy +// so we do not have a dependency cycle from our "base" files to our "core" files. + +#include "include/private/base/SkSpan_impl.h" // IWYU pragma: export + diff --git a/vendor/artifacts/skia/include/core/SkStream.h b/vendor/artifacts/skia/include/core/SkStream.h new file mode 100644 index 000000000..0930cda7f --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkStream.h @@ -0,0 +1,524 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkStream_DEFINED +#define SkStream_DEFINED + +#include "include/core/SkData.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkCPUTypes.h" +#include "include/private/base/SkTo.h" + +#include +#include +#include +#include +#include +#include + +class SkStreamAsset; + +/** + * SkStream -- abstraction for a source of bytes. Subclasses can be backed by + * memory, or a file, or something else. + */ +class SK_API SkStream { +public: + virtual ~SkStream() {} + SkStream() {} + + /** + * Attempts to open the specified file as a stream, returns nullptr on failure. + */ + static std::unique_ptr MakeFromFile(const char path[]); + + /** Reads or skips size number of bytes. + * If buffer == NULL, skip size bytes, return how many were skipped. + * If buffer != NULL, copy size bytes into buffer, return how many were copied. + * @param buffer when NULL skip size bytes, otherwise copy size bytes into buffer + * @param size the number of bytes to skip or copy + * @return the number of bytes actually read. + */ + virtual size_t read(void* buffer, size_t size) = 0; + + /** Skip size number of bytes. + * @return the actual number bytes that could be skipped. + */ + size_t skip(size_t size) { + return this->read(nullptr, size); + } + + /** + * Attempt to peek at size bytes. + * If this stream supports peeking, copy min(size, peekable bytes) into + * buffer, and return the number of bytes copied. + * If the stream does not support peeking, or cannot peek any bytes, + * return 0 and leave buffer unchanged. + * The stream is guaranteed to be in the same visible state after this + * call, regardless of success or failure. + * @param buffer Must not be NULL, and must be at least size bytes. Destination + * to copy bytes. + * @param size Number of bytes to copy. + * @return The number of bytes peeked/copied. + */ + virtual size_t peek(void* /*buffer*/, size_t /*size*/) const { return 0; } + + /** Returns true when all the bytes in the stream have been read. + * As SkStream represents synchronous I/O, isAtEnd returns false when the + * final stream length isn't known yet, even when all the bytes available + * so far have been read. + * This may return true early (when there are no more bytes to be read) + * or late (after the first unsuccessful read). + */ + virtual bool isAtEnd() const = 0; + + [[nodiscard]] bool readS8(int8_t*); + [[nodiscard]] bool readS16(int16_t*); + [[nodiscard]] bool readS32(int32_t*); + [[nodiscard]] bool readS64(int64_t*); + + [[nodiscard]] bool readU8(uint8_t* i) { return this->readS8((int8_t*)i); } + [[nodiscard]] bool readU16(uint16_t* i) { return this->readS16((int16_t*)i); } + [[nodiscard]] bool readU32(uint32_t* i) { return this->readS32((int32_t*)i); } + [[nodiscard]] bool readU64(uint64_t* i) { return this->readS64((int64_t*)i); } + + [[nodiscard]] bool readBool(bool* b) { + uint8_t i; + if (!this->readU8(&i)) { return false; } + *b = (i != 0); + return true; + } + [[nodiscard]] bool readScalar(SkScalar*); + [[nodiscard]] bool readPackedUInt(size_t*); + +//SkStreamRewindable + /** Rewinds to the beginning of the stream. Returns true if the stream is known + * to be at the beginning after this call returns. + */ + virtual bool rewind() { return false; } + + /** Duplicates this stream. If this cannot be done, returns NULL. + * The returned stream will be positioned at the beginning of its data. + */ + std::unique_ptr duplicate() const { + return std::unique_ptr(this->onDuplicate()); + } + /** Duplicates this stream. If this cannot be done, returns NULL. + * The returned stream will be positioned the same as this stream. + */ + std::unique_ptr fork() const { + return std::unique_ptr(this->onFork()); + } + +//SkStreamSeekable + /** Returns true if this stream can report its current position. */ + virtual bool hasPosition() const { return false; } + /** Returns the current position in the stream. If this cannot be done, returns 0. */ + virtual size_t getPosition() const { return 0; } + + /** Seeks to an absolute position in the stream. If this cannot be done, returns false. + * If an attempt is made to seek past the end of the stream, the position will be set + * to the end of the stream. + */ + virtual bool seek(size_t /*position*/) { return false; } + + /** Seeks to an relative offset in the stream. If this cannot be done, returns false. + * If an attempt is made to move to a position outside the stream, the position will be set + * to the closest point within the stream (beginning or end). + */ + virtual bool move(long /*offset*/) { return false; } + +//SkStreamAsset + /** Returns true if this stream can report its total length. */ + virtual bool hasLength() const { return false; } + /** Returns the total length of the stream. If this cannot be done, returns 0. */ + virtual size_t getLength() const { return 0; } + +//SkStreamMemory + /** Returns the starting address for the data. If this cannot be done, returns NULL. */ + virtual const void* getMemoryBase() { return nullptr; } + virtual sk_sp getData() const { return nullptr; } + +private: + virtual SkStream* onDuplicate() const { return nullptr; } + virtual SkStream* onFork() const { return nullptr; } + + SkStream(SkStream&&) = delete; + SkStream(const SkStream&) = delete; + SkStream& operator=(SkStream&&) = delete; + SkStream& operator=(const SkStream&) = delete; +}; + +/** SkStreamRewindable is a SkStream for which rewind and duplicate are required. */ +class SK_API SkStreamRewindable : public SkStream { +public: + bool rewind() override = 0; + std::unique_ptr duplicate() const { + return std::unique_ptr(this->onDuplicate()); + } +private: + SkStreamRewindable* onDuplicate() const override = 0; +}; + +/** SkStreamSeekable is a SkStreamRewindable for which position, seek, move, and fork are required. */ +class SK_API SkStreamSeekable : public SkStreamRewindable { +public: + std::unique_ptr duplicate() const { + return std::unique_ptr(this->onDuplicate()); + } + + bool hasPosition() const override { return true; } + size_t getPosition() const override = 0; + bool seek(size_t position) override = 0; + bool move(long offset) override = 0; + + std::unique_ptr fork() const { + return std::unique_ptr(this->onFork()); + } +private: + SkStreamSeekable* onDuplicate() const override = 0; + SkStreamSeekable* onFork() const override = 0; +}; + +/** SkStreamAsset is a SkStreamSeekable for which getLength is required. */ +class SK_API SkStreamAsset : public SkStreamSeekable { +public: + bool hasLength() const override { return true; } + size_t getLength() const override = 0; + + std::unique_ptr duplicate() const { + return std::unique_ptr(this->onDuplicate()); + } + std::unique_ptr fork() const { + return std::unique_ptr(this->onFork()); + } +private: + SkStreamAsset* onDuplicate() const override = 0; + SkStreamAsset* onFork() const override = 0; +}; + +/** SkStreamMemory is a SkStreamAsset for which getMemoryBase is required. */ +class SK_API SkStreamMemory : public SkStreamAsset { +public: + const void* getMemoryBase() override = 0; + + std::unique_ptr duplicate() const { + return std::unique_ptr(this->onDuplicate()); + } + std::unique_ptr fork() const { + return std::unique_ptr(this->onFork()); + } +private: + SkStreamMemory* onDuplicate() const override = 0; + SkStreamMemory* onFork() const override = 0; +}; + +class SK_API SkWStream { +public: + virtual ~SkWStream(); + SkWStream() {} + + /** Called to write bytes to a SkWStream. Returns true on success + @param buffer the address of at least size bytes to be written to the stream + @param size The number of bytes in buffer to write to the stream + @return true on success + */ + virtual bool write(const void* buffer, size_t size) = 0; + virtual void flush(); + + virtual size_t bytesWritten() const = 0; + + // helpers + + bool write8(U8CPU value) { + uint8_t v = SkToU8(value); + return this->write(&v, 1); + } + bool write16(U16CPU value) { + uint16_t v = SkToU16(value); + return this->write(&v, 2); + } + bool write32(uint32_t value) { + return this->write(&value, 4); + } + bool write64(uint64_t value) { + return this->write(&value, 8); + } + + bool writeText(const char text[]) { + SkASSERT(text); + return this->write(text, std::strlen(text)); + } + + bool newline() { return this->write("\n", std::strlen("\n")); } + + bool writeDecAsText(int32_t); + bool writeBigDecAsText(int64_t, int minDigits = 0); + bool writeHexAsText(uint32_t, int minDigits = 0); + bool writeScalarAsText(SkScalar); + + bool writeBool(bool v) { return this->write8(v); } + bool writeScalar(SkScalar); + bool writePackedUInt(size_t); + + bool writeStream(SkStream* input, size_t length); + + /** + * This returns the number of bytes in the stream required to store + * 'value'. + */ + static int SizeOfPackedUInt(size_t value); + +private: + SkWStream(const SkWStream&) = delete; + SkWStream& operator=(const SkWStream&) = delete; +}; + +class SK_API SkNullWStream : public SkWStream { +public: + SkNullWStream() : fBytesWritten(0) {} + + bool write(const void* , size_t n) override { fBytesWritten += n; return true; } + void flush() override {} + size_t bytesWritten() const override { return fBytesWritten; } + +private: + size_t fBytesWritten; +}; + +//////////////////////////////////////////////////////////////////////////////////////// + +/** A stream that wraps a C FILE* file stream. */ +class SK_API SkFILEStream : public SkStreamAsset { +public: + /** Initialize the stream by calling sk_fopen on the specified path. + * This internal stream will be closed in the destructor. + */ + explicit SkFILEStream(const char path[] = nullptr); + + /** Initialize the stream with an existing C FILE stream. + * The current position of the C FILE stream will be considered the + * beginning of the SkFILEStream and the current seek end of the FILE will be the end. + * The C FILE stream will be closed in the destructor. + */ + explicit SkFILEStream(FILE* file); + + /** Initialize the stream with an existing C FILE stream. + * The current position of the C FILE stream will be considered the + * beginning of the SkFILEStream and size bytes later will be the end. + * The C FILE stream will be closed in the destructor. + */ + explicit SkFILEStream(FILE* file, size_t size); + + ~SkFILEStream() override; + + static std::unique_ptr Make(const char path[]) { + auto stream = std::make_unique(path); + return stream->isValid() ? std::move(stream) : nullptr; + } + + /** Returns true if the current path could be opened. */ + bool isValid() const { return fFILE != nullptr; } + + /** Close this SkFILEStream. */ + void close(); + + size_t read(void* buffer, size_t size) override; + bool isAtEnd() const override; + + bool rewind() override; + std::unique_ptr duplicate() const { + return std::unique_ptr(this->onDuplicate()); + } + + size_t getPosition() const override; + bool seek(size_t position) override; + bool move(long offset) override; + + std::unique_ptr fork() const { + return std::unique_ptr(this->onFork()); + } + + size_t getLength() const override; + +private: + explicit SkFILEStream(FILE*, size_t size, size_t start); + explicit SkFILEStream(std::shared_ptr, size_t end, size_t start); + explicit SkFILEStream(std::shared_ptr, size_t end, size_t start, size_t current); + + SkStreamAsset* onDuplicate() const override; + SkStreamAsset* onFork() const override; + + std::shared_ptr fFILE; + // My own council will I keep on sizes and offsets. + // These are seek positions in the underling FILE, not offsets into the stream. + size_t fEnd; + size_t fStart; + size_t fCurrent; + + using INHERITED = SkStreamAsset; +}; + +// A read only view into a block of memory. +class SK_API SkMemoryStream : public SkStreamMemory { +public: + SkMemoryStream(); + + /** We allocate (and free) the memory. Write to it via getMemoryBase() */ + explicit SkMemoryStream(size_t length); + + /** If copyData is true, the stream makes a private copy of the data. */ + SkMemoryStream(const void* data, size_t length, bool copyData = false); + + /** Creates the stream to read from the specified data */ + explicit SkMemoryStream(sk_sp data); + + /** Returns a stream with a copy of the input data. */ + static std::unique_ptr MakeCopy(const void* data, size_t length); + + /** Returns a stream with a bare pointer reference to the input data. */ + static std::unique_ptr MakeDirect(const void* data, size_t length); + + /** Returns a stream with a shared reference to the input data. */ + static std::unique_ptr Make(sk_sp data); + + /** Resets the stream to the specified data and length, + just like the constructor. + if copyData is true, the stream makes a private copy of the data + */ + virtual void setMemory(const void* data, size_t length, + bool copyData = false); + /** Replace any memory buffer with the specified buffer. The caller + must have allocated data with sk_malloc or sk_realloc, since it + will be freed with sk_free. + */ + void setMemoryOwned(const void* data, size_t length); + + sk_sp getData() const override { return fData; } + + void setData(sk_sp data); + + const void* getAtPos(); + + size_t read(void* buffer, size_t size) override; + bool isAtEnd() const override; + + size_t peek(void* buffer, size_t size) const override; + + bool rewind() override; + + std::unique_ptr duplicate() const { + return std::unique_ptr(this->onDuplicate()); + } + + size_t getPosition() const override; + bool seek(size_t position) override; + bool move(long offset) override; + + std::unique_ptr fork() const { + return std::unique_ptr(this->onFork()); + } + + size_t getLength() const override; + + const void* getMemoryBase() override; + +private: + SkMemoryStream* onDuplicate() const override; + SkMemoryStream* onFork() const override; + + sk_sp fData; + size_t fOffset; + + using INHERITED = SkStreamMemory; +}; + +///////////////////////////////////////////////////////////////////////////////////////////// + +class SK_API SkFILEWStream : public SkWStream { +public: + explicit SkFILEWStream(const char path[]); + ~SkFILEWStream() override; + + /** Returns true if the current path could be opened. + */ + bool isValid() const { return fFILE != nullptr; } + + bool write(const void* buffer, size_t size) override; + void flush() override; + void fsync(); + size_t bytesWritten() const override; + +private: + FILE* fFILE; + + using INHERITED = SkWStream; +}; + +class SK_API SkDynamicMemoryWStream : public SkWStream { +public: + SkDynamicMemoryWStream() = default; + SkDynamicMemoryWStream(SkDynamicMemoryWStream&&); + SkDynamicMemoryWStream& operator=(SkDynamicMemoryWStream&&); + ~SkDynamicMemoryWStream() override; + + bool write(const void* buffer, size_t size) override; + size_t bytesWritten() const override; + + bool read(void* buffer, size_t offset, size_t size); + + /** More efficient version of read(dst, 0, bytesWritten()). */ + void copyTo(void* dst) const; + bool writeToStream(SkWStream* dst) const; + + /** Equivalent to copyTo() followed by reset(), but may save memory use. */ + void copyToAndReset(void* dst); + + /** Equivalent to writeToStream() followed by reset(), but may save memory use. */ + bool writeToAndReset(SkWStream* dst); + + /** Equivalent to writeToStream() followed by reset(), but may save memory use. + When the dst is also a SkDynamicMemoryWStream, the implementation is constant time. */ + bool writeToAndReset(SkDynamicMemoryWStream* dst); + + /** Prepend this stream to dst, resetting this. */ + void prependToAndReset(SkDynamicMemoryWStream* dst); + + /** Return the contents as SkData, and then reset the stream. */ + sk_sp detachAsData(); + + /** Return the contents as vector, and then reset the stream. */ + std::vector detachAsVector(); + + /** Reset, returning a reader stream with the current content. */ + std::unique_ptr detachAsStream(); + + /** Reset the stream to its original, empty, state. */ + void reset(); + void padToAlign4(); +private: + struct Block; + Block* fHead = nullptr; + Block* fTail = nullptr; + size_t fBytesWrittenBeforeTail = 0; + +#ifdef SK_DEBUG + void validate() const; +#else + void validate() const {} +#endif + + // For access to the Block type. + friend class SkBlockMemoryStream; + friend class SkBlockMemoryRefCnt; + + using INHERITED = SkWStream; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkStrikeRef.h b/vendor/artifacts/skia/include/core/SkStrikeRef.h new file mode 100644 index 000000000..f2af5260b --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkStrikeRef.h @@ -0,0 +1,80 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkStrikeRef_DEFINED +#define SkStrikeRef_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" + +class SkFont; +class SkStrike; +struct SkRect; + +/** \class SkStrikeRef + SkStrikeRef is a lightweight, thread-safe handle to a resolved font strike. + It caches the result of looking up an SkStrike for a particular SkFont configuration, + allowing repeated glyph metric queries (advances, bounds) without the overhead of + descriptor construction, hashing, and global cache lookup on each call. + + Obtain an SkStrikeRef from SkFont::makeStrikeRef(). The returned object remains valid + as long as it is held; the underlying SkStrike is atomically reference counted. + + SkStrikeRef does not track changes to the SkFont it was created from. If the SkFont's + properties change (size, typeface, hinting, etc.), a new SkStrikeRef must be obtained. +*/ +class SK_API SkStrikeRef { +public: + SkStrikeRef(); + ~SkStrikeRef(); + + SkStrikeRef(const SkStrikeRef&); + SkStrikeRef& operator=(const SkStrikeRef&); + SkStrikeRef(SkStrikeRef&&); + SkStrikeRef& operator=(SkStrikeRef&&); + + /** Returns true if this SkStrikeRef holds a valid strike. */ + explicit operator bool() const { return fStrike != nullptr; } + + /** Retrieves the advance widths for each glyph. + widths receives min(widths.size(), glyphs.size()) values. + + @param glyphs array of glyph indices to be measured + @param widths returns text advances for each glyph, in font units + */ + void getWidths(SkSpan glyphs, SkSpan widths) const; + + /** Retrieves the advance width for a single glyph. + + @param glyph glyph index to be measured + @return advance width in font units + */ + SkScalar getWidth(SkGlyphID glyph) const; + + /** Retrieves the advance widths and bounds for each glyph. + widths receives min(widths.size(), glyphs.size()) values. + bounds receives min(bounds.size(), glyphs.size()) values. + + @param glyphs array of glyph indices to be measured + @param widths returns text advances for each glyph + @param bounds returns bounds for each glyph relative to (0, 0) + */ + void getWidthsBounds(SkSpan glyphs, + SkSpan widths, + SkSpan bounds) const; + +private: + friend class SkFont; + SkStrikeRef(sk_sp strike, SkScalar strikeToSourceScale); + + sk_sp fStrike; + SkScalar fStrikeToSourceScale = 0; +}; + +#endif // SkStrikeRef_DEFINED diff --git a/vendor/artifacts/skia/include/core/SkString.h b/vendor/artifacts/skia/include/core/SkString.h new file mode 100644 index 000000000..fa6ace739 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkString.h @@ -0,0 +1,297 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkString_DEFINED +#define SkString_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkTo.h" +#include "include/private/base/SkTypeTraits.h" + +#include +#include +#include +#include +#include +#include +#include + +/* Some helper functions for C strings */ +static inline bool SkStrStartsWith(const char string[], const char prefixStr[]) { + SkASSERT(string); + SkASSERT(prefixStr); + return !strncmp(string, prefixStr, strlen(prefixStr)); +} +static inline bool SkStrStartsWith(const char string[], char prefixChar) { + SkASSERT(string); + return (prefixChar == *string); +} + +bool SkStrEndsWith(const char string[], const char suffixStr[]); +bool SkStrEndsWith(const char string[], char suffixChar); + +int SkStrStartsWithOneOf(const char string[], const char prefixes[]); + +static inline int SkStrFind(const char string[], const char substring[]) { + const char *first = strstr(string, substring); + if (nullptr == first) return -1; + return SkToInt(first - &string[0]); +} + +static inline int SkStrFindLastOf(const char string[], char subchar) { + const char* last = strrchr(string, subchar); + if (nullptr == last) return -1; + return SkToInt(last - &string[0]); +} + +static inline bool SkStrContains(const char string[], const char substring[]) { + SkASSERT(string); + SkASSERT(substring); + return (-1 != SkStrFind(string, substring)); +} +static inline bool SkStrContains(const char string[], char subchar) { + SkASSERT(string); + char tmp[2]; + tmp[0] = subchar; + tmp[1] = '\0'; + return (-1 != SkStrFind(string, tmp)); +} + +/* + * The SkStrAppend... methods will write into the provided buffer, assuming it is large enough. + * Each method has an associated const (e.g. kSkStrAppendU32_MaxSize) which will be the largest + * value needed for that method's buffer. + * + * char storage[kSkStrAppendU32_MaxSize]; + * SkStrAppendU32(storage, value); + * + * Note : none of the SkStrAppend... methods write a terminating 0 to their buffers. Instead, + * the methods return the ptr to the end of the written part of the buffer. This can be used + * to compute the length, and/or know where to write a 0 if that is desired. + * + * char storage[kSkStrAppendU32_MaxSize + 1]; + * char* stop = SkStrAppendU32(storage, value); + * size_t len = stop - storage; + * *stop = 0; // valid, since storage was 1 byte larger than the max. + */ + +static constexpr int kSkStrAppendU32_MaxSize = 10; +char* SkStrAppendU32(char buffer[], uint32_t); +static constexpr int kSkStrAppendU64_MaxSize = 20; +char* SkStrAppendU64(char buffer[], uint64_t, int minDigits); + +static constexpr int kSkStrAppendS32_MaxSize = kSkStrAppendU32_MaxSize + 1; +char* SkStrAppendS32(char buffer[], int32_t); +static constexpr int kSkStrAppendS64_MaxSize = kSkStrAppendU64_MaxSize + 1; +char* SkStrAppendS64(char buffer[], int64_t, int minDigits); + +/** + * Floats have at most 8 significant digits, so we limit our %g to that. + * However, the total string could be 15 characters: -1.2345678e-005 + * + * In theory we should only expect up to 2 digits for the exponent, but on + * some platforms we have seen 3 (as in the example above). + */ +static constexpr int kSkStrAppendScalar_MaxSize = 15; + +/** + * Write the scalar in decimal format into buffer, and return a pointer to + * the next char after the last one written. Note: a terminating 0 is not + * written into buffer, which must be at least kSkStrAppendScalar_MaxSize. + * Thus if the caller wants to add a 0 at the end, buffer must be at least + * kSkStrAppendScalar_MaxSize + 1 bytes large. + */ +char* SkStrAppendScalar(char buffer[], SkScalar); + +/** \class SkString + + Light weight class for managing strings. Uses reference + counting to make string assignments and copies very fast + with no extra RAM cost. Assumes UTF8 encoding. +*/ +class SK_API SkString { +public: + SkString(); + explicit SkString(size_t len); + explicit SkString(const char text[]); + SkString(const char text[], size_t len); + SkString(const SkString&); + SkString(SkString&&); + explicit SkString(const std::string&); + explicit SkString(std::string_view); + ~SkString(); + + bool isEmpty() const { return 0 == fRec->fLength; } + size_t size() const { return (size_t) fRec->fLength; } + const char* data() const { return fRec->data(); } + const char* c_str() const { return fRec->data(); } + char operator[](size_t n) const { return this->c_str()[n]; } + const char* begin() const { return data(); } + const char* end() const { return data() + size(); } + + bool equals(const SkString&) const; + bool equals(const char text[]) const; + bool equals(const char text[], size_t len) const; + + bool startsWith(const char prefixStr[]) const { + return SkStrStartsWith(fRec->data(), prefixStr); + } + bool startsWith(char prefixChar) const { + return SkStrStartsWith(fRec->data(), prefixChar); + } + bool endsWith(const char suffixStr[]) const { + return SkStrEndsWith(fRec->data(), suffixStr); + } + bool endsWith(char suffixChar) const { + return SkStrEndsWith(fRec->data(), suffixChar); + } + bool contains(const char substring[]) const { + return SkStrContains(fRec->data(), substring); + } + bool contains(char subchar) const { + return SkStrContains(fRec->data(), subchar); + } + int find(const char substring[]) const { + return SkStrFind(fRec->data(), substring); + } + int findLastOf(char subchar) const { + return SkStrFindLastOf(fRec->data(), subchar); + } + + friend bool operator==(const SkString& a, const SkString& b) { + return a.equals(b); + } + friend bool operator!=(const SkString& a, const SkString& b) { + return !a.equals(b); + } + + // these methods edit the string + + SkString& operator=(const SkString&); + SkString& operator=(SkString&&); + SkString& operator=(const char text[]); + + char* data(); + char& operator[](size_t n) { return this->data()[n]; } + char* begin() { return data(); } + char* end() { return data() + size(); } + + void reset(); + /** String contents are preserved on resize. (For destructive resize, `set(nullptr, length)`.) + * `resize` automatically reserves an extra byte at the end of the buffer for a null terminator. + */ + void resize(size_t len); + void set(const SkString& src) { *this = src; } + void set(const char text[]); + void set(const char text[], size_t len); + void set(std::string_view str) { this->set(str.data(), str.size()); } + + void insert(size_t offset, const char text[]); + void insert(size_t offset, const char text[], size_t len); + void insert(size_t offset, const SkString& str) { this->insert(offset, str.c_str(), str.size()); } + void insert(size_t offset, std::string_view str) { this->insert(offset, str.data(), str.size()); } + void insertUnichar(size_t offset, SkUnichar); + void insertS32(size_t offset, int32_t value); + void insertS64(size_t offset, int64_t value, int minDigits = 0); + void insertU32(size_t offset, uint32_t value); + void insertU64(size_t offset, uint64_t value, int minDigits = 0); + void insertHex(size_t offset, uint32_t value, int minDigits = 0); + void insertScalar(size_t offset, SkScalar); + + void append(const char text[]) { this->insert((size_t)-1, text); } + void append(const char text[], size_t len) { this->insert((size_t)-1, text, len); } + void append(const SkString& str) { this->insert((size_t)-1, str.c_str(), str.size()); } + void append(std::string_view str) { this->insert((size_t)-1, str.data(), str.size()); } + void appendUnichar(SkUnichar uni) { this->insertUnichar((size_t)-1, uni); } + void appendS32(int32_t value) { this->insertS32((size_t)-1, value); } + void appendS64(int64_t value, int minDigits = 0) { this->insertS64((size_t)-1, value, minDigits); } + void appendU32(uint32_t value) { this->insertU32((size_t)-1, value); } + void appendU64(uint64_t value, int minDigits = 0) { this->insertU64((size_t)-1, value, minDigits); } + void appendHex(uint32_t value, int minDigits = 0) { this->insertHex((size_t)-1, value, minDigits); } + void appendScalar(SkScalar value) { this->insertScalar((size_t)-1, value); } + + void prepend(const char text[]) { this->insert(0, text); } + void prepend(const char text[], size_t len) { this->insert(0, text, len); } + void prepend(const SkString& str) { this->insert(0, str.c_str(), str.size()); } + void prepend(std::string_view str) { this->insert(0, str.data(), str.size()); } + void prependUnichar(SkUnichar uni) { this->insertUnichar(0, uni); } + void prependS32(int32_t value) { this->insertS32(0, value); } + void prependS64(int32_t value, int minDigits = 0) { this->insertS64(0, value, minDigits); } + void prependHex(uint32_t value, int minDigits = 0) { this->insertHex(0, value, minDigits); } + void prependScalar(SkScalar value) { this->insertScalar((size_t)-1, value); } + + void printf(const char format[], ...) SK_PRINTF_LIKE(2, 3); + void printVAList(const char format[], va_list) SK_PRINTF_LIKE(2, 0); + void appendf(const char format[], ...) SK_PRINTF_LIKE(2, 3); + void appendVAList(const char format[], va_list) SK_PRINTF_LIKE(2, 0); + void prependf(const char format[], ...) SK_PRINTF_LIKE(2, 3); + void prependVAList(const char format[], va_list) SK_PRINTF_LIKE(2, 0); + + void remove(size_t offset, size_t length); + + SkString& operator+=(const SkString& s) { this->append(s); return *this; } + SkString& operator+=(const char text[]) { this->append(text); return *this; } + SkString& operator+=(char c) { this->append(&c, 1); return *this; } + + /** + * Swap contents between this and other. This function is guaranteed + * to never fail or throw. + */ + void swap(SkString& other); + + using sk_is_trivially_relocatable = std::true_type; + +private: + struct Rec { + public: + constexpr Rec(uint32_t len, int32_t refCnt) : fLength(len), fRefCnt(refCnt) {} + static sk_sp Make(const char text[], size_t len); + char* data() { return fBeginningOfData; } + const char* data() const { return fBeginningOfData; } + void ref() const; + void unref() const; + bool unique() const; +#ifdef SK_DEBUG + int32_t getRefCnt() const; +#endif + uint32_t fLength; // logically size_t, but we want it to stay 32 bits + + private: + mutable std::atomic fRefCnt; + char fBeginningOfData[1] = {'\0'}; + + // Ensure the unsized delete is called. + void operator delete(void* p) { ::operator delete(p); } + }; + sk_sp fRec; + + static_assert(::sk_is_trivially_relocatable::value); + +#ifdef SK_DEBUG + SkString& validate(); + const SkString& validate() const; +#else + SkString& validate() { return *this; } + const SkString& validate() const { return *this; } +#endif + + static const Rec gEmptyRec; +}; + +/// Creates a new string and writes into it using a printf()-style format. +SK_API SkString SkStringPrintf(const char* format, ...) SK_PRINTF_LIKE(1, 2); +/// This makes it easier to write a caller as a VAR_ARGS function where the format string is +/// optional. +static inline SkString SkStringPrintf() { return SkString(); } + +static inline void swap(SkString& a, SkString& b) { + a.swap(b); +} + +#endif diff --git a/vendor/artifacts/skia/include/core/SkStrokeRec.h b/vendor/artifacts/skia/include/core/SkStrokeRec.h new file mode 100644 index 000000000..329a24f3f --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkStrokeRec.h @@ -0,0 +1,160 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkStrokeRec_DEFINED +#define SkStrokeRec_DEFINED + +#include "include/core/SkPaint.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkMacros.h" + +#include +#include + +class SkPath; +class SkPathBuilder; + +SK_BEGIN_REQUIRE_DENSE +class SK_API SkStrokeRec { +public: + enum InitStyle { + kHairline_InitStyle, + kFill_InitStyle + }; + explicit SkStrokeRec(InitStyle style); + SkStrokeRec(const SkPaint&, SkPaint::Style, SkScalar resScale = 1); + explicit SkStrokeRec(const SkPaint&, SkScalar resScale = 1); + + enum Style { + kHairline_Style, + kFill_Style, + kStroke_Style, + kStrokeAndFill_Style + }; + + static constexpr int kStyleCount = kStrokeAndFill_Style + 1; + + Style getStyle() const; + SkScalar getWidth() const { return fWidth; } + SkScalar getMiter() const { return fMiterLimit; } + SkPaint::Cap getCap() const { return (SkPaint::Cap)fCap; } + SkPaint::Join getJoin() const { return (SkPaint::Join)fJoin; } + + bool isHairlineStyle() const { + return kHairline_Style == this->getStyle(); + } + + bool isFillStyle() const { + return kFill_Style == this->getStyle(); + } + + void setFillStyle(); + void setHairlineStyle(); + /** + * Specify the strokewidth, and optionally if you want stroke + fill. + * Note, if width==0, then this request is taken to mean: + * strokeAndFill==true -> new style will be Fill + * strokeAndFill==false -> new style will be Hairline + */ + void setStrokeStyle(SkScalar width, bool strokeAndFill = false); + + void setStrokeParams(SkPaint::Cap cap, SkPaint::Join join, SkScalar miterLimit) { + fCap = cap; + fJoin = join; + fMiterLimit = miterLimit; + } + + SkScalar getResScale() const { + return fResScale; + } + + void setResScale(SkScalar rs) { + SkASSERT(rs > 0 && std::isfinite(rs)); + fResScale = rs; + } + + /** + * Returns true if this specifes any thick stroking, i.e. applyToPath() + * will return true. + */ + bool needToApply() const { + Style style = this->getStyle(); + return (kStroke_Style == style) || (kStrokeAndFill_Style == style); + } + + /** + * Apply these stroke parameters to the src path, returning the result + * in dst. + * + * If there was no change (i.e. style == hairline or fill) this returns + * false and dst is unchanged. Otherwise returns true and the result is + * stored in dst. + * + * src and dst may be the same path. + */ + bool applyToPath(SkPathBuilder* dst, const SkPath& src) const; + + /** + * Apply these stroke parameters to a paint. + */ + void applyToPaint(SkPaint* paint) const; + + /** + * Gives a conservative value for the outset that should applied to a + * geometries bounds to account for any inflation due to applying this + * strokeRec to the geometry. + */ + SkScalar getInflationRadius() const; + + /** + * Equivalent to: + * SkStrokeRec rec(paint, style); + * rec.getInflationRadius(); + * This does not account for other effects on the paint (i.e. path + * effect). + */ + static SkScalar GetInflationRadius(const SkPaint&, SkPaint::Style); + + static SkScalar GetInflationRadius(SkPaint::Join, SkScalar miterLimit, SkPaint::Cap, + SkScalar strokeWidth); + + /** + * Compare if two SkStrokeRecs have an equal effect on a path. + * Equal SkStrokeRecs produce equal paths. Equality of produced + * paths does not take the ResScale parameter into account. + */ + bool hasEqualEffect(const SkStrokeRec& other) const { + if (!this->needToApply()) { + return this->getStyle() == other.getStyle(); + } + return fWidth == other.fWidth && + (fJoin != SkPaint::kMiter_Join || fMiterLimit == other.fMiterLimit) && + fCap == other.fCap && + fJoin == other.fJoin && + fStrokeAndFill == other.fStrokeAndFill; + } + +private: + void init(const SkPaint&, SkPaint::Style, SkScalar resScale); + + SkScalar fResScale; + SkScalar fWidth; + SkScalar fMiterLimit; + // The following three members are packed together into a single u32. + // This is to avoid unnecessary padding and ensure binary equality for + // hashing (because the padded areas might contain garbage values). + // + // fCap and fJoin are larger than needed to avoid having to initialize + // any pad values + uint32_t fCap : 16; // SkPaint::Cap + uint32_t fJoin : 15; // SkPaint::Join + uint32_t fStrokeAndFill : 1; // bool +}; +SK_END_REQUIRE_DENSE + +#endif diff --git a/vendor/artifacts/skia/include/core/SkSurface.h b/vendor/artifacts/skia/include/core/SkSurface.h new file mode 100644 index 000000000..2a4dbeef9 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkSurface.h @@ -0,0 +1,689 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSurface_DEFINED +#define SkSurface_DEFINED + +#include "include/core/SkImage.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkPixmap.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSamplingOptions.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSurfaceProps.h" +#include "include/core/SkTypes.h" + +#include +#include +#include + +class GrBackendSemaphore; +class GrBackendTexture; +class GrRecordingContext; +class GrSurfaceCharacterization; +class SkBitmap; +class SkCanvas; +class SkCapabilities; +class SkColorSpace; +class SkPaint; +class SkRecorder; +class SkSurface; +enum GrSurfaceOrigin : int; +struct SkIRect; +struct SkISize; + +namespace skgpu::graphite { +class Recorder; +} + +namespace SkSurfaces { + +enum class BackendSurfaceAccess { + kNoAccess, //!< back-end surface will not be used by client + kPresent, //!< back-end surface will be used for presenting to screen +}; + +/** Returns SkSurface without backing pixels. Drawing to SkCanvas returned from SkSurface + has no effect. Calling makeImageSnapshot() on returned SkSurface returns nullptr. + + @param width one or greater + @param height one or greater + @return SkSurface if width and height are positive; otherwise, nullptr + + example: https://fiddle.skia.org/c/@Surface_MakeNull +*/ +SK_API sk_sp Null(int width, int height); + +/** Allocates raster SkSurface. SkCanvas returned by SkSurface draws directly into those allocated + pixels, which are zeroed before use. Pixel memory size is imageInfo.height() times + imageInfo.minRowBytes() or rowBytes, if provided and non-zero. + + Pixel memory is deleted when SkSurface is deleted. + + Validity constraints include: + - info dimensions are greater than zero; + - info contains SkColorType and SkAlphaType supported by raster surface. + + @param imageInfo width, height, SkColorType, SkAlphaType, SkColorSpace, + of raster surface; width and height must be greater than zero + @param rowBytes interval from one SkSurface row to the next. + @param props LCD striping orientation and setting for device independent fonts; + may be nullptr + @return SkSurface if parameters are valid and memory was allocated, else nullptr. +*/ +SK_API sk_sp Raster(const SkImageInfo& imageInfo, + size_t rowBytes, + const SkSurfaceProps* surfaceProps); +inline sk_sp Raster(const SkImageInfo& imageInfo, + const SkSurfaceProps* props = nullptr) { + return Raster(imageInfo, 0, props); +} + +/** Allocates raster SkSurface. SkCanvas returned by SkSurface draws directly into the + provided pixels. + + SkSurface is returned if all parameters are valid. + Valid parameters include: + info dimensions are greater than zero; + info contains SkColorType and SkAlphaType supported by raster surface; + pixels is not nullptr; + rowBytes is large enough to contain info width pixels of SkColorType. + + Pixel buffer size should be info height times computed rowBytes. + Pixels are not initialized. + To access pixels after drawing, peekPixels() or readPixels(). + + @param imageInfo width, height, SkColorType, SkAlphaType, SkColorSpace, + of raster surface; width and height must be greater than zero + @param pixels pointer to destination pixels buffer + @param rowBytes interval from one SkSurface row to the next + @param surfaceProps LCD striping orientation and setting for device independent fonts; + may be nullptr + @return SkSurface if all parameters are valid; otherwise, nullptr +*/ + +SK_API sk_sp WrapPixels(const SkImageInfo& imageInfo, + void* pixels, + size_t rowBytes, + const SkSurfaceProps* surfaceProps = nullptr); +inline sk_sp WrapPixels(const SkPixmap& pm, const SkSurfaceProps* props = nullptr) { + return WrapPixels(pm.info(), pm.writable_addr(), pm.rowBytes(), props); +} + +using PixelsReleaseProc = void(void* pixels, void* context); + +/** Allocates raster SkSurface. SkCanvas returned by SkSurface draws directly into the provided + pixels. releaseProc is called with pixels and context when SkSurface is deleted. + + SkSurface is returned if all parameters are valid. + Valid parameters include: + info dimensions are greater than zero; + info contains SkColorType and SkAlphaType supported by raster surface; + pixels is not nullptr; + rowBytes is large enough to contain info width pixels of SkColorType. + + Pixel buffer size should be info height times computed rowBytes. + Pixels are not initialized. + To access pixels after drawing, call flush() or peekPixels(). + + @param imageInfo width, height, SkColorType, SkAlphaType, SkColorSpace, + of raster surface; width and height must be greater than zero + @param pixels pointer to destination pixels buffer + @param rowBytes interval from one SkSurface row to the next + @param releaseProc called when SkSurface is deleted; may be nullptr + @param context passed to releaseProc; may be nullptr + @param surfaceProps LCD striping orientation and setting for device independent fonts; + may be nullptr + @return SkSurface if all parameters are valid; otherwise, nullptr +*/ +SK_API sk_sp WrapPixels(const SkImageInfo& imageInfo, + void* pixels, + size_t rowBytes, + PixelsReleaseProc, + void* context, + const SkSurfaceProps* surfaceProps = nullptr); +} // namespace SkSurfaces + +/** \class SkSurface + SkSurface is responsible for managing the pixels that a canvas draws into. The pixels can be + allocated either in CPU memory (a raster surface) or on the GPU (a GrRenderTarget surface). + SkSurface takes care of allocating a SkCanvas that will draw into the surface. Call + surface->getCanvas() to use that canvas (but don't delete it, it is owned by the surface). + SkSurface always has non-zero dimensions. If there is a request for a new surface, and either + of the requested dimensions are zero, then nullptr will be returned. + + Clients should *not* subclass SkSurface as there is a lot of internal machinery that is + not publicly accessible. +*/ +class SK_API SkSurface : public SkRefCnt { +public: + /** Is this surface compatible with the provided characterization? + + This method can be used to determine if an existing SkSurface is a viable destination + for an GrDeferredDisplayList. + + @param characterization The characterization for which a compatibility check is desired + @return true if this surface is compatible with the characterization; + false otherwise + */ + bool isCompatible(const GrSurfaceCharacterization& characterization) const; + + /** Returns pixel count in each row; may be zero or greater. + + @return number of pixel columns + */ + int width() const { return fWidth; } + + /** Returns pixel row count; may be zero or greater. + + @return number of pixel rows + */ + int height() const { return fHeight; } + + /** Returns an ImageInfo describing the surface. + */ + virtual SkImageInfo imageInfo() const { return SkImageInfo::MakeUnknown(fWidth, fHeight); } + + /** Returns unique value identifying the content of SkSurface. Returned value changes + each time the content changes. Content is changed by drawing, or by calling + notifyContentWillChange(). + + @return unique content identifier + + example: https://fiddle.skia.org/c/@Surface_notifyContentWillChange + */ + uint32_t generationID(); + + /** \enum SkSurface::ContentChangeMode + ContentChangeMode members are parameters to notifyContentWillChange(). + */ + enum ContentChangeMode { + kDiscard_ContentChangeMode, //!< discards surface on change + kRetain_ContentChangeMode, //!< preserves surface on change + }; + + /** Notifies that SkSurface contents will be changed by code outside of Skia. + Subsequent calls to generationID() return a different value. + + TODO: Can kRetain_ContentChangeMode be deprecated? + + example: https://fiddle.skia.org/c/@Surface_notifyContentWillChange + */ + void notifyContentWillChange(ContentChangeMode mode); + + /** Returns the recording context being used by the SkSurface. + + @return the recording context, if available; nullptr otherwise + */ + GrRecordingContext* recordingContext() const; + + /** Returns the recorder being used by the SkSurface. + + @return the recorder, if available; nullptr otherwise + */ + skgpu::graphite::Recorder* recorder() const; + + /** Returns the base SkRecorder being used by the SkSurface. + + @return the recorder; should be non-null for drawable surfaces + */ + SkRecorder* baseRecorder() const; + + enum class BackendHandleAccess { + kFlushRead, //!< back-end object is readable + kFlushWrite, //!< back-end object is writable + kDiscardWrite, //!< back-end object must be overwritten + + // Legacy names, remove when clients are migrated + kFlushRead_BackendHandleAccess = kFlushRead, + kFlushWrite_BackendHandleAccess = kFlushWrite, + kDiscardWrite_BackendHandleAccess = kDiscardWrite, + }; + + // Legacy names, remove when clients are migrated + static constexpr BackendHandleAccess kFlushRead_BackendHandleAccess = + BackendHandleAccess::kFlushRead; + static constexpr BackendHandleAccess kFlushWrite_BackendHandleAccess = + BackendHandleAccess::kFlushWrite; + static constexpr BackendHandleAccess kDiscardWrite_BackendHandleAccess = + BackendHandleAccess::kDiscardWrite; + + /** Caller data passed to TextureReleaseProc; may be nullptr. */ + using ReleaseContext = void*; + /** User function called when supplied texture may be deleted. */ + using TextureReleaseProc = void (*)(ReleaseContext); + + /** If the surface was made via MakeFromBackendTexture then it's backing texture may be + substituted with a different texture. The contents of the previous backing texture are + copied into the new texture. SkCanvas state is preserved. The original sample count is + used. The GrBackendFormat and dimensions of replacement texture must match that of + the original. + + Upon success textureReleaseProc is called when it is safe to delete the texture in the + backend API (accounting only for use of the texture by this surface). If SkSurface creation + fails textureReleaseProc is called before this function returns. + + @param backendTexture the new backing texture for the surface + @param mode Retain or discard current Content + @param TextureReleaseProc function called when texture can be released + @param ReleaseContext state passed to textureReleaseProc + */ + virtual bool replaceBackendTexture(const GrBackendTexture& backendTexture, + GrSurfaceOrigin origin, + ContentChangeMode mode = kRetain_ContentChangeMode, + TextureReleaseProc = nullptr, + ReleaseContext = nullptr) = 0; + + /** Returns SkCanvas that draws into SkSurface. Subsequent calls return the same SkCanvas. + SkCanvas returned is managed and owned by SkSurface, and is deleted when SkSurface + is deleted. + + @return drawing SkCanvas for SkSurface + + example: https://fiddle.skia.org/c/@Surface_getCanvas + */ + SkCanvas* getCanvas(); + + /** Returns SkCapabilities that describes the capabilities of the SkSurface's device. + + @return SkCapabilities of SkSurface's device. + */ + sk_sp capabilities(); + + /** Returns a compatible SkSurface, or nullptr. Returned SkSurface contains + the same raster, GPU, or null properties as the original. Returned SkSurface + does not share the same pixels. + + Returns nullptr if imageInfo width or height are zero, or if imageInfo + is incompatible with SkSurface. + + @param imageInfo width, height, SkColorType, SkAlphaType, SkColorSpace, + of SkSurface; width and height must be greater than zero + @return compatible SkSurface or nullptr + + example: https://fiddle.skia.org/c/@Surface_makeSurface + */ + sk_sp makeSurface(const SkImageInfo& imageInfo); + + /** Calls makeSurface(ImageInfo) with the same ImageInfo as this surface, but with the + * specified width and height. + */ + sk_sp makeSurface(int width, int height); + + /** Returns SkImage capturing SkSurface contents. Subsequent drawing to SkSurface contents + are not captured. SkImage allocation is accounted for if SkSurface was created with + skgpu::Budgeted::kYes. + + @return SkImage initialized with SkSurface contents + + example: https://fiddle.skia.org/c/@Surface_makeImageSnapshot + */ + sk_sp makeImageSnapshot(); + + /** + * Like the no-parameter version, this returns an image of the current surface contents. + * This variant takes a rectangle specifying the subset of the surface that is of interest. + * These bounds will be sanitized before being used. + * - If bounds extends beyond the surface, it will be trimmed to just the intersection of + * it and the surface. + * - If bounds does not intersect the surface, then this returns nullptr. + * - If bounds == the surface, then this is the same as calling the no-parameter variant. + + example: https://fiddle.skia.org/c/@Surface_makeImageSnapshot_2 + */ + sk_sp makeImageSnapshot(const SkIRect& bounds); + + /** Returns an SkImage capturing the current SkSurface contents. However, the contents of the + SkImage are only valid as long as no other writes to the SkSurface occur. If writes to the + original SkSurface happen then contents of the SkImage are undefined. However, continued use + of the SkImage should not cause crashes or similar fatal behavior. + + This API is useful for cases where the client either immediately destroys the SkSurface + after the SkImage is created or knows they will destroy the SkImage before writing to the + SkSurface again. + + This API can be more performant than makeImageSnapshot as it never does an internal copy + of the data assuming the user frees either the SkImage or SkSurface as described above. + */ + sk_sp makeTemporaryImage(); + + /** Draws SkSurface contents to canvas, with its top-left corner at (x, y). + + If SkPaint paint is not nullptr, apply SkColorFilter, alpha, SkImageFilter, and SkBlendMode. + + @param canvas SkCanvas drawn into + @param x horizontal offset in SkCanvas + @param y vertical offset in SkCanvas + @param sampling what technique to use when sampling the surface pixels + @param paint SkPaint containing SkBlendMode, SkColorFilter, SkImageFilter, + and so on; or nullptr + + example: https://fiddle.skia.org/c/@Surface_draw + */ + void draw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkSamplingOptions& sampling, + const SkPaint* paint); + + void draw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint = nullptr) { + this->draw(canvas, x, y, SkSamplingOptions(), paint); + } + + /** Copies SkSurface pixel address, row bytes, and SkImageInfo to SkPixmap, if address + is available, and returns true. If pixel address is not available, return + false and leave SkPixmap unchanged. + + pixmap contents become invalid on any future change to SkSurface. + + @param pixmap storage for pixel state if pixels are readable; otherwise, ignored + @return true if SkSurface has direct access to pixels + + example: https://fiddle.skia.org/c/@Surface_peekPixels + */ + bool peekPixels(SkPixmap* pixmap); + + /** Copies SkRect of pixels to dst. + + Source SkRect corners are (srcX, srcY) and SkSurface (width(), height()). + Destination SkRect corners are (0, 0) and (dst.width(), dst.height()). + Copies each readable pixel intersecting both rectangles, without scaling, + converting to dst.colorType() and dst.alphaType() if required. + + Pixels are readable when SkSurface is raster, or backed by a Ganesh GPU backend. Graphite + has deprecated this API in favor of the equivalent asynchronous API on + skgpu::graphite::Context (with an optional explicit synchonization). + + The destination pixel storage must be allocated by the caller. + + Pixel values are converted only if SkColorType and SkAlphaType + do not match. Only pixels within both source and destination rectangles + are copied. dst contents outside SkRect intersection are unchanged. + + Pass negative values for srcX or srcY to offset pixels across or down destination. + + Does not copy, and returns false if: + - Source and destination rectangles do not intersect. + - SkPixmap pixels could not be allocated. + - dst.rowBytes() is too small to contain one row of pixels. + + @param dst storage for pixels copied from SkSurface + @param srcX offset into readable pixels on x-axis; may be negative + @param srcY offset into readable pixels on y-axis; may be negative + @return true if pixels were copied + + example: https://fiddle.skia.org/c/@Surface_readPixels + */ + bool readPixels(const SkPixmap& dst, int srcX, int srcY); + + /** Copies SkRect of pixels from SkCanvas into dstPixels. + + Source SkRect corners are (srcX, srcY) and SkSurface (width(), height()). + Destination SkRect corners are (0, 0) and (dstInfo.width(), dstInfo.height()). + Copies each readable pixel intersecting both rectangles, without scaling, + converting to dstInfo.colorType() and dstInfo.alphaType() if required. + + Pixels are readable when SkSurface is raster, or backed by a Ganesh GPU backend. Graphite + has deprecated this API in favor of the equivalent asynchronous API on + skgpu::graphite::Context (with an optional explicit synchonization). + + The destination pixel storage must be allocated by the caller. + + Pixel values are converted only if SkColorType and SkAlphaType + do not match. Only pixels within both source and destination rectangles + are copied. dstPixels contents outside SkRect intersection are unchanged. + + Pass negative values for srcX or srcY to offset pixels across or down destination. + + Does not copy, and returns false if: + - Source and destination rectangles do not intersect. + - SkSurface pixels could not be converted to dstInfo.colorType() or dstInfo.alphaType(). + - dstRowBytes is too small to contain one row of pixels. + + @param dstInfo width, height, SkColorType, and SkAlphaType of dstPixels + @param dstPixels storage for pixels; dstInfo.height() times dstRowBytes, or larger + @param dstRowBytes size of one destination row; dstInfo.width() times pixel size, or larger + @param srcX offset into readable pixels on x-axis; may be negative + @param srcY offset into readable pixels on y-axis; may be negative + @return true if pixels were copied + */ + bool readPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t dstRowBytes, + int srcX, int srcY); + + /** Copies SkRect of pixels from SkSurface into bitmap. + + Source SkRect corners are (srcX, srcY) and SkSurface (width(), height()). + Destination SkRect corners are (0, 0) and (bitmap.width(), bitmap.height()). + Copies each readable pixel intersecting both rectangles, without scaling, + converting to bitmap.colorType() and bitmap.alphaType() if required. + + Pixels are readable when SkSurface is raster, or backed by a Ganesh GPU backend. Graphite + has deprecated this API in favor of the equivalent asynchronous API on + skgpu::graphite::Context (with an optional explicit synchonization). + + The destination pixel storage must be allocated by the caller. + + Pixel values are converted only if SkColorType and SkAlphaType + do not match. Only pixels within both source and destination rectangles + are copied. dst contents outside SkRect intersection are unchanged. + + Pass negative values for srcX or srcY to offset pixels across or down destination. + + Does not copy, and returns false if: + - Source and destination rectangles do not intersect. + - SkSurface pixels could not be converted to dst.colorType() or dst.alphaType(). + - dst pixels could not be allocated. + - dst.rowBytes() is too small to contain one row of pixels. + + @param dst storage for pixels copied from SkSurface + @param srcX offset into readable pixels on x-axis; may be negative + @param srcY offset into readable pixels on y-axis; may be negative + @return true if pixels were copied + + example: https://fiddle.skia.org/c/@Surface_readPixels_3 + */ + bool readPixels(const SkBitmap& dst, int srcX, int srcY); + + using AsyncReadResult = SkImage::AsyncReadResult; + + /** Client-provided context that is passed to client-provided ReadPixelsContext. */ + using ReadPixelsContext = void*; + + /** Client-provided callback to asyncRescaleAndReadPixels() or + asyncRescaleAndReadPixelsYUV420() that is called when read result is ready or on failure. + */ + using ReadPixelsCallback = void(ReadPixelsContext, std::unique_ptr); + + /** Controls the gamma that rescaling occurs in for asyncRescaleAndReadPixels() and + asyncRescaleAndReadPixelsYUV420(). + */ + using RescaleGamma = SkImage::RescaleGamma; + using RescaleMode = SkImage::RescaleMode; + + /** Makes surface pixel data available to caller, possibly asynchronously. It can also rescale + the surface pixels. + + Currently asynchronous reads are only supported in the Ganesh GPU backend and only when the + underlying 3D API supports transfer buffers and CPU/GPU synchronization primitives. In all + other cases this operates synchronously. + + For the Graphite backend this API has been deprecated in favor of the equivalent API + on skgpu::graphite::Context. + + Data is read from the source sub-rectangle, is optionally converted to a linear gamma, is + rescaled to the size indicated by 'info', is then converted to the color space, color type, + and alpha type of 'info'. A 'srcRect' that is not contained by the bounds of the surface + causes failure. + + When the pixel data is ready the caller's ReadPixelsCallback is called with a + AsyncReadResult containing pixel data in the requested color type, alpha type, and color + space. The AsyncReadResult will have count() == 1. Upon failure the callback is called + with nullptr for AsyncReadResult. For a GPU surface this flushes work but a submit must + occur to guarantee a finite time before the callback is called. + + The data is valid for the lifetime of AsyncReadResult with the exception that if the + SkSurface is GPU-backed the data is immediately invalidated if the context is abandoned + or destroyed. + + @param info info of the requested pixels + @param srcRect subrectangle of surface to read + @param rescaleGamma controls whether rescaling is done in the surface's gamma or whether + the source data is transformed to a linear gamma before rescaling. + @param rescaleMode controls the technique of the rescaling + @param callback function to call with result of the read + @param context passed to callback + */ + void asyncRescaleAndReadPixels(const SkImageInfo& info, + const SkIRect& srcRect, + RescaleGamma rescaleGamma, + RescaleMode rescaleMode, + ReadPixelsCallback callback, + ReadPixelsContext context); + + /** + Similar to asyncRescaleAndReadPixels but performs an additional conversion to YUV. The + RGB->YUV conversion is controlled by 'yuvColorSpace'. The YUV data is returned as three + planes ordered y, u, v. The u and v planes are half the width and height of the resized + rectangle. The y, u, and v values are single bytes. Currently this fails if 'dstSize' + width and height are not even. A 'srcRect' that is not contained by the bounds of the + surface causes failure. + + When the pixel data is ready the caller's ReadPixelsCallback is called with a + AsyncReadResult containing the planar data. The AsyncReadResult will have count() == 3. + Upon failure the callback is called with nullptr for AsyncReadResult. For a GPU surface this + flushes work but a submit must occur to guarantee a finite time before the callback is + called. + + The data is valid for the lifetime of AsyncReadResult with the exception that if the + SkSurface is GPU-backed the data is immediately invalidated if the context is abandoned + or destroyed. + + @param yuvColorSpace The transformation from RGB to YUV. Applied to the resized image + after it is converted to dstColorSpace. + @param dstColorSpace The color space to convert the resized image to, after rescaling. + @param srcRect The portion of the surface to rescale and convert to YUV planes. + @param dstSize The size to rescale srcRect to + @param rescaleGamma controls whether rescaling is done in the surface's gamma or whether + the source data is transformed to a linear gamma before rescaling. + @param rescaleMode controls the sampling technique of the rescaling + @param callback function to call with the planar read result + @param context passed to callback + */ + void asyncRescaleAndReadPixelsYUV420(SkYUVColorSpace yuvColorSpace, + sk_sp dstColorSpace, + const SkIRect& srcRect, + const SkISize& dstSize, + RescaleGamma rescaleGamma, + RescaleMode rescaleMode, + ReadPixelsCallback callback, + ReadPixelsContext context); + + /** + * Identical to asyncRescaleAndReadPixelsYUV420 but a fourth plane is returned in the + * AsyncReadResult passed to 'callback'. The fourth plane contains the alpha chanel at the + * same full resolution as the Y plane. + */ + void asyncRescaleAndReadPixelsYUVA420(SkYUVColorSpace yuvColorSpace, + sk_sp dstColorSpace, + const SkIRect& srcRect, + const SkISize& dstSize, + RescaleGamma rescaleGamma, + RescaleMode rescaleMode, + ReadPixelsCallback callback, + ReadPixelsContext context); + + /** Copies SkRect of pixels from the src SkPixmap to the SkSurface. + + Source SkRect corners are (0, 0) and (src.width(), src.height()). + Destination SkRect corners are (dstX, dstY) and + (dstX + Surface width(), dstY + Surface height()). + + Copies each readable pixel intersecting both rectangles, without scaling, + converting to SkSurface colorType() and SkSurface alphaType() if required. + + @param src storage for pixels to copy to SkSurface + @param dstX x-axis position relative to SkSurface to begin copy; may be negative + @param dstY y-axis position relative to SkSurface to begin copy; may be negative + + example: https://fiddle.skia.org/c/@Surface_writePixels + */ + void writePixels(const SkPixmap& src, int dstX, int dstY); + + /** Copies SkRect of pixels from the src SkBitmap to the SkSurface. + + Source SkRect corners are (0, 0) and (src.width(), src.height()). + Destination SkRect corners are (dstX, dstY) and + (dstX + Surface width(), dstY + Surface height()). + + Copies each readable pixel intersecting both rectangles, without scaling, + converting to SkSurface colorType() and SkSurface alphaType() if required. + + @param src storage for pixels to copy to SkSurface + @param dstX x-axis position relative to SkSurface to begin copy; may be negative + @param dstY y-axis position relative to SkSurface to begin copy; may be negative + + example: https://fiddle.skia.org/c/@Surface_writePixels_2 + */ + void writePixels(const SkBitmap& src, int dstX, int dstY); + + /** Returns SkSurfaceProps for surface. + + @return LCD striping orientation and setting for device independent fonts + */ + const SkSurfaceProps& props() const { return fProps; } + + /** Inserts a list of GPU semaphores that the current GPU-backed API must wait on before + executing any more commands on the GPU for this surface. We only guarantee blocking + transfer and fragment shader work, but may block earlier stages as well depending on the + backend. + If this call returns false, then the GPU back-end will not wait on any passed in + semaphores, and the client will still own the semaphores, regardless of the value of + deleteSemaphoresAfterWait. + + If deleteSemaphoresAfterWait is false then Skia will not delete the semaphores. In this case + it is the client's responsibility to not destroy or attempt to reuse the semaphores until it + knows that Skia has finished waiting on them. This can be done by using finishedProcs + on flush calls. + + @param numSemaphores size of waitSemaphores array + @param waitSemaphores array of semaphore containers + @paramm deleteSemaphoresAfterWait who owns and should delete the semaphores + @return true if GPU is waiting on semaphores + */ + bool wait(int numSemaphores, const GrBackendSemaphore* waitSemaphores, + bool deleteSemaphoresAfterWait = true); + + /** Initializes GrSurfaceCharacterization that can be used to perform GPU back-end + processing in a separate thread. Typically this is used to divide drawing + into multiple tiles. GrDeferredDisplayListRecorder records the drawing commands + for each tile. + + Return true if SkSurface supports characterization. raster surface returns false. + + @param characterization properties for parallel drawing + @return true if supported + + example: https://fiddle.skia.org/c/@Surface_characterize + */ + bool characterize(GrSurfaceCharacterization* characterization) const; + +protected: + SkSurface(int width, int height, const SkSurfaceProps* surfaceProps); + SkSurface(const SkImageInfo& imageInfo, const SkSurfaceProps* surfaceProps); + + // called by subclass if their contents have changed + void dirtyGenerationID() { + fGenerationID = 0; + } + +private: + const SkSurfaceProps fProps; + const int fWidth; + const int fHeight; + uint32_t fGenerationID; + + using INHERITED = SkRefCnt; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkSurfaceProps.h b/vendor/artifacts/skia/include/core/SkSurfaceProps.h new file mode 100644 index 000000000..bac7ae7bd --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkSurfaceProps.h @@ -0,0 +1,122 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSurfaceProps_DEFINED +#define SkSurfaceProps_DEFINED + +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkTo.h" + +/** + * Description of how the LCD strips are arranged for each pixel. If this is unknown, or the + * pixels are meant to be "portable" and/or transformed before showing (e.g. rotated, scaled) + * then use kUnknown_SkPixelGeometry. + */ +enum SkPixelGeometry { + kUnknown_SkPixelGeometry, + kRGB_H_SkPixelGeometry, + kBGR_H_SkPixelGeometry, + kRGB_V_SkPixelGeometry, + kBGR_V_SkPixelGeometry, +}; + +// Returns true iff geo is a known geometry and is RGB. +static inline bool SkPixelGeometryIsRGB(SkPixelGeometry geo) { + return kRGB_H_SkPixelGeometry == geo || kRGB_V_SkPixelGeometry == geo; +} + +// Returns true iff geo is a known geometry and is BGR. +static inline bool SkPixelGeometryIsBGR(SkPixelGeometry geo) { + return kBGR_H_SkPixelGeometry == geo || kBGR_V_SkPixelGeometry == geo; +} + +// Returns true iff geo is a known geometry and is horizontal. +static inline bool SkPixelGeometryIsH(SkPixelGeometry geo) { + return kRGB_H_SkPixelGeometry == geo || kBGR_H_SkPixelGeometry == geo; +} + +// Returns true iff geo is a known geometry and is vertical. +static inline bool SkPixelGeometryIsV(SkPixelGeometry geo) { + return kRGB_V_SkPixelGeometry == geo || kBGR_V_SkPixelGeometry == geo; +} + +/** + * Describes properties and constraints of a given SkSurface. The rendering engine can parse these + * during drawing, and can sometimes optimize its performance (e.g. disabling an expensive + * feature). + */ +class SK_API SkSurfaceProps { +public: + enum Flags { + kDefault_Flag = 0, + kUseDeviceIndependentFonts_Flag = 1 << 0, + // Use internal MSAA to render to non-MSAA GPU surfaces. + kDynamicMSAA_Flag = 1 << 1, + // If set, all rendering will have dithering enabled + // Currently this only impacts GPU backends + kAlwaysDither_Flag = 1 << 2, + // The surface will preserve transparent draws (instead of skipping them). + kPreservesTransparentDraws_Flag = 1 << 3, + }; + + /** No flags, unknown pixel geometry, platform-default contrast/gamma. */ + SkSurfaceProps(); + /** TODO(kschmi): Remove this constructor and replace with the one below. **/ + SkSurfaceProps(uint32_t flags, SkPixelGeometry); + /** Specified pixel geometry, text contrast, and gamma **/ + SkSurfaceProps(uint32_t flags, SkPixelGeometry, SkScalar textContrast, SkScalar textGamma); + + SkSurfaceProps(const SkSurfaceProps&) = default; + SkSurfaceProps& operator=(const SkSurfaceProps&) = default; + + SkSurfaceProps cloneWithPixelGeometry(SkPixelGeometry newPixelGeometry) const { + return SkSurfaceProps(fFlags, newPixelGeometry, fTextContrast, fTextGamma); + } + + static constexpr SkScalar kMaxContrastInclusive = 1; + static constexpr SkScalar kMinContrastInclusive = 0; + static constexpr SkScalar kMaxGammaExclusive = 4; + static constexpr SkScalar kMinGammaInclusive = 0; + + uint32_t flags() const { return fFlags; } + SkPixelGeometry pixelGeometry() const { return fPixelGeometry; } + SkScalar textContrast() const { return fTextContrast; } + SkScalar textGamma() const { return fTextGamma; } + + bool isUseDeviceIndependentFonts() const { + return SkToBool(fFlags & kUseDeviceIndependentFonts_Flag); + } + + bool isAlwaysDither() const { + return SkToBool(fFlags & kAlwaysDither_Flag); + } + + bool preservesTransparentDraws() const { + return SkToBool(fFlags & kPreservesTransparentDraws_Flag); + } + + bool operator==(const SkSurfaceProps& that) const { + return fFlags == that.fFlags && fPixelGeometry == that.fPixelGeometry && + fTextContrast == that.fTextContrast && fTextGamma == that.fTextGamma; + } + + bool operator!=(const SkSurfaceProps& that) const { + return !(*this == that); + } + +private: + uint32_t fFlags; + SkPixelGeometry fPixelGeometry; + + // This gamma value is specifically about blending of mask coverage. + // The surface also has a color space, but that applies to the colors. + SkScalar fTextContrast; + SkScalar fTextGamma; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkSwizzle.h b/vendor/artifacts/skia/include/core/SkSwizzle.h new file mode 100644 index 000000000..f7ef65889 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkSwizzle.h @@ -0,0 +1,21 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSwizzle_DEFINED +#define SkSwizzle_DEFINED + +#include "include/private/base/SkAPI.h" + +#include + +/** + Swizzles byte order of |count| 32-bit pixels, swapping R and B. + (RGBA <-> BGRA) +*/ +SK_API void SkSwapRB(uint32_t* dest, const uint32_t* src, int count); + +#endif diff --git a/vendor/artifacts/skia/include/core/SkTextBlob.h b/vendor/artifacts/skia/include/core/SkTextBlob.h new file mode 100644 index 000000000..f2e9eacbb --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkTextBlob.h @@ -0,0 +1,541 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTextBlob_DEFINED +#define SkTextBlob_DEFINED + +#include "include/core/SkFont.h" +#include "include/core/SkFontTypes.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRSXform.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkTemplates.h" + +#include +#include +#include + +class SkData; +class SkPaint; +class SkTypeface; +struct SkDeserialProcs; +struct SkSerialProcs; + +namespace sktext { +class GlyphRunList; +} + +/** \class SkTextBlob + SkTextBlob combines multiple text runs into an immutable container. Each text + run consists of glyphs, SkPaint, and position. Only parts of SkPaint related to + fonts and text rendering are used by run. +*/ +class SK_API SkTextBlob final : public SkNVRefCnt { +private: + class RunRecord; + +public: + + /** Returns conservative bounding box. Uses SkPaint associated with each glyph to + determine glyph bounds, and unions all bounds. Returned bounds may be + larger than the bounds of all glyphs in runs. + + @return conservative bounding box + */ + const SkRect& bounds() const { return fBounds; } + + /** Returns a non-zero value unique among all text blobs. + + @return identifier for SkTextBlob + */ + uint32_t uniqueID() const { return fUniqueID; } + + /** Returns the number of intervals that intersect bounds. + bounds describes a pair of lines parallel to the text advance. + The return count is zero or a multiple of two, and is at most twice the number of glyphs in + the the blob. + + Pass nullptr for intervals to determine the size of the interval array. + + Runs within the blob that contain SkRSXform are ignored when computing intercepts. + + @param bounds lower and upper line parallel to the advance + @param intervals returned intersections; may be nullptr + @param paint specifies stroking, SkPathEffect that affects the result; may be nullptr + @return number of intersections; may be zero + */ + int getIntercepts(const SkScalar bounds[2], SkScalar intervals[], + const SkPaint* paint = nullptr) const; + + /** Creates SkTextBlob with a single run. + + font contains attributes used to define the run text. + + When encoding is SkTextEncoding::kUTF8, SkTextEncoding::kUTF16, or + SkTextEncoding::kUTF32, this function uses the default + character-to-glyph mapping from the SkTypeface in font. It does not + perform typeface fallback for characters not found in the SkTypeface. + It does not perform kerning or other complex shaping; glyphs are + positioned based on their default advances. + + @param text character code points or glyphs drawn + @param byteLength byte length of text array + @param font text size, typeface, text scale, and so on, used to draw + @param encoding text encoding used in the text array + @return SkTextBlob constructed from one run + */ + static sk_sp MakeFromText(const void* text, size_t byteLength, const SkFont& font, + SkTextEncoding encoding = SkTextEncoding::kUTF8); + + /** Creates SkTextBlob with a single run. string meaning depends on SkTextEncoding; + by default, string is encoded as UTF-8. + + font contains attributes used to define the run text. + + When encoding is SkTextEncoding::kUTF8, SkTextEncoding::kUTF16, or + SkTextEncoding::kUTF32, this function uses the default + character-to-glyph mapping from the SkTypeface in font. It does not + perform typeface fallback for characters not found in the SkTypeface. + It does not perform kerning or other complex shaping; glyphs are + positioned based on their default advances. + + @param string character code points or glyphs drawn + @param font text size, typeface, text scale, and so on, used to draw + @param encoding text encoding used in the text array + @return SkTextBlob constructed from one run + */ + static sk_sp MakeFromString(const char* string, const SkFont& font, + SkTextEncoding encoding = SkTextEncoding::kUTF8) { + if (!string) { + return nullptr; + } + return MakeFromText(string, strlen(string), font, encoding); + } + + /** Returns a textblob built from a single run of text with x-positions and a single y value. + This is equivalent to using SkTextBlobBuilder and calling allocRunPosH(). + Returns nullptr if byteLength is zero. + + @param text character code points or glyphs drawn (based on encoding) + @param byteLength byte length of text array + @param xpos array of x-positions, must contain values for all of the character points. + @param constY shared y-position for each character point, to be paired with each xpos. + @param font SkFont used for this run + @param encoding specifies the encoding of the text array. + @return new textblob or nullptr + */ + static sk_sp MakeFromPosTextH(const void* text, size_t byteLength, + SkSpan xpos, SkScalar constY, + const SkFont& font, + SkTextEncoding encoding = SkTextEncoding::kUTF8); + + /** Returns a textblob built from a single run of text with positions. + This is equivalent to using SkTextBlobBuilder and calling allocRunPos(). + Returns nullptr if byteLength is zero. + + @param text character code points or glyphs drawn (based on encoding) + @param byteLength byte length of text array + @param pos array of positions, must contain values for all of the character points. + @param font SkFont used for this run + @param encoding specifies the encoding of the text array. + @return new textblob or nullptr + */ + static sk_sp MakeFromPosText(const void* text, size_t byteLength, + SkSpan pos, const SkFont& font, + SkTextEncoding encoding = SkTextEncoding::kUTF8); + + static sk_sp MakeFromRSXform(const void* text, size_t byteLength, + SkSpan xform, const SkFont& font, + SkTextEncoding encoding = SkTextEncoding::kUTF8); + + // Helpers for glyphs + + static sk_sp MakeFromPosHGlyphs(SkSpan glyphs, + SkSpan xpos, SkScalar constY, + const SkFont& font) { + return MakeFromPosTextH(glyphs.data(), glyphs.size() * sizeof(SkGlyphID), xpos, constY, + font, SkTextEncoding::kGlyphID); + } + static sk_sp MakeFromPosGlyphs(SkSpan glyphs, + SkSpan pos, const SkFont& font) { + return MakeFromPosText(glyphs.data(), glyphs.size() * sizeof(SkGlyphID), pos, font, + SkTextEncoding::kGlyphID); + } + static sk_sp MakeFromRSXformGlyphs(SkSpan glyphs, + SkSpan xform, + const SkFont& font) { + return MakeFromRSXform(glyphs.data(), glyphs.size() * sizeof(SkGlyphID), xform, font, + SkTextEncoding::kGlyphID); + } + + /** Writes data to allow later reconstruction of SkTextBlob. memory points to storage + to receive the encoded data, and memory_size describes the size of storage. + Returns bytes used if provided storage is large enough to hold all data; + otherwise, returns zero. + + procs.fTypefaceProc permits supplying a custom function to encode SkTypeface. + If procs.fTypefaceProc is nullptr, default encoding is used. procs.fTypefaceCtx + may be used to provide user context to procs.fTypefaceProc; procs.fTypefaceProc + is called with a pointer to SkTypeface and user context. + + @param procs custom serial data encoders; may be nullptr + @param memory storage for data + @param memory_size size of storage + @return bytes written, or zero if required storage is larger than memory_size + + example: https://fiddle.skia.org/c/@TextBlob_serialize + */ + size_t serialize(const SkSerialProcs& procs, void* memory, size_t memory_size) const; + + /** Returns storage containing SkData describing SkTextBlob, using optional custom + encoders. + + procs.fTypefaceProc permits supplying a custom function to encode SkTypeface. + If procs.fTypefaceProc is nullptr, default encoding is used. procs.fTypefaceCtx + may be used to provide user context to procs.fTypefaceProc; procs.fTypefaceProc + is called with a pointer to SkTypeface and user context. + + @param procs custom serial data encoders; may be nullptr + @return storage containing serialized SkTextBlob + + example: https://fiddle.skia.org/c/@TextBlob_serialize_2 + */ + sk_sp serialize(const SkSerialProcs& procs) const; + + /** Recreates SkTextBlob that was serialized into data. Returns constructed SkTextBlob + if successful; otherwise, returns nullptr. Fails if size is smaller than + required data length, or if data does not permit constructing valid SkTextBlob. + + procs.fTypefaceProc permits supplying a custom function to decode SkTypeface. + If procs.fTypefaceProc is nullptr, default decoding is used. procs.fTypefaceCtx + may be used to provide user context to procs.fTypefaceProc; procs.fTypefaceProc + is called with a pointer to SkTypeface data, data byte length, and user context. + + @param data pointer for serial data + @param size size of data + @param procs custom serial data decoders; may be nullptr + @return SkTextBlob constructed from data in memory + */ + static sk_sp Deserialize(const void* data, size_t size, + const SkDeserialProcs& procs); + + class SK_API Iter { + public: + struct Run { + SkTypeface* fTypeface; + int fGlyphCount; + const SkGlyphID* fGlyphIndices; +#ifdef SK_UNTIL_CRBUG_1187654_IS_FIXED + const uint32_t* fClusterIndex_forTest; + int fUtf8Size_forTest; + const char* fUtf8_forTest; +#endif + }; + + Iter(const SkTextBlob&); + + /** + * Returns true for each "run" inside the textblob, setting the Run fields (if not null). + * If this returns false, there are no more runs, and the Run parameter will be ignored. + */ + bool next(Run*); + + // Experimental, DO NO USE, will change/go-away + struct ExperimentalRun { + SkFont font; + int count; + const SkGlyphID* glyphs; + const SkPoint* positions; + }; + bool experimentalNext(ExperimentalRun*); + + private: + const RunRecord* fRunRecord; + }; + +private: + friend class SkNVRefCnt; + + enum GlyphPositioning : uint8_t; + + explicit SkTextBlob(const SkRect& bounds); + + ~SkTextBlob(); + + // Memory for objects of this class is created with sk_malloc rather than operator new and must + // be freed with sk_free. + void operator delete(void* p); + void* operator new(size_t); + void* operator new(size_t, void* p); + + static unsigned ScalarsPerGlyph(GlyphPositioning pos); + + using PurgeDelegate = void (*)(uint32_t blobID, uint32_t cacheID); + + // Call when this blob is part of the key to a cache entry. This allows the cache + // to know automatically those entries can be purged when this SkTextBlob is deleted. + void notifyAddedToCache(uint32_t cacheID, PurgeDelegate purgeDelegate) const { + fCacheID.store(cacheID); + fPurgeDelegate.store(purgeDelegate); + } + + friend class sktext::GlyphRunList; + friend class SkTextBlobBuilder; + friend class SkTextBlobPriv; + friend class SkTextBlobRunIterator; + + const SkRect fBounds; + const uint32_t fUniqueID; + mutable std::atomic fCacheID; + mutable std::atomic fPurgeDelegate; + + SkDEBUGCODE(size_t fStorageSize;) + + // The actual payload resides in externally-managed storage, following the object. + // (see the .cpp for more details) + + using INHERITED = SkRefCnt; +}; + +/** \class SkTextBlobBuilder + Helper class for constructing SkTextBlob. +*/ +class SK_API SkTextBlobBuilder { +public: + + /** Constructs empty SkTextBlobBuilder. By default, SkTextBlobBuilder has no runs. + + @return empty SkTextBlobBuilder + + example: https://fiddle.skia.org/c/@TextBlobBuilder_empty_constructor + */ + SkTextBlobBuilder(); + + /** Deletes data allocated internally by SkTextBlobBuilder. + */ + ~SkTextBlobBuilder(); + + /** Returns SkTextBlob built from runs of glyphs added by builder. Returned + SkTextBlob is immutable; it may be copied, but its contents may not be altered. + Returns nullptr if no runs of glyphs were added by builder. + + Resets SkTextBlobBuilder to its initial empty state, allowing it to be + reused to build a new set of runs. + + @return SkTextBlob or nullptr + + example: https://fiddle.skia.org/c/@TextBlobBuilder_make + */ + sk_sp make(); + + /** \struct SkTextBlobBuilder::RunBuffer + RunBuffer supplies storage for glyphs and positions within a run. + + A run is a sequence of glyphs sharing font metrics and positioning. + Each run may position its glyphs in one of three ways: + by specifying where the first glyph is drawn, and allowing font metrics to + determine the advance to subsequent glyphs; by specifying a baseline, and + the position on that baseline for each glyph in run; or by providing SkPoint + array, one per glyph. + */ + struct RunBuffer { + SkGlyphID* glyphs; //!< storage for glyph indexes in run + SkScalar* pos; //!< storage for glyph positions in run + char* utf8text; //!< storage for text UTF-8 code units in run + uint32_t* clusters; //!< storage for glyph clusters (index of UTF-8 code unit) + + // Helpers, since the "pos" field can be different types (always some number of floats). + SkPoint* points() const { return reinterpret_cast(pos); } + SkRSXform* xforms() const { return reinterpret_cast(pos); } + }; + + /** Returns run with storage for glyphs. Caller must write count glyphs to + RunBuffer::glyphs before next call to SkTextBlobBuilder. + + RunBuffer::pos, RunBuffer::utf8text, and RunBuffer::clusters should be ignored. + + Glyphs share metrics in font. + + Glyphs are positioned on a baseline at (x, y), using font metrics to + determine their relative placement. + + bounds defines an optional bounding box, used to suppress drawing when SkTextBlob + bounds does not intersect SkSurface bounds. If bounds is nullptr, SkTextBlob bounds + is computed from (x, y) and RunBuffer::glyphs metrics. + + @param font SkFont used for this run + @param count number of glyphs + @param x horizontal offset within the blob + @param y vertical offset within the blob + @param bounds optional run bounding box + @return writable glyph buffer + */ + const RunBuffer& allocRun(const SkFont& font, int count, SkScalar x, SkScalar y, + const SkRect* bounds = nullptr); + + /** Returns run with storage for glyphs and positions along baseline. Caller must + write count glyphs to RunBuffer::glyphs and count scalars to RunBuffer::pos + before next call to SkTextBlobBuilder. + + RunBuffer::utf8text and RunBuffer::clusters should be ignored. + + Glyphs share metrics in font. + + Glyphs are positioned on a baseline at y, using x-axis positions written by + caller to RunBuffer::pos. + + bounds defines an optional bounding box, used to suppress drawing when SkTextBlob + bounds does not intersect SkSurface bounds. If bounds is nullptr, SkTextBlob bounds + is computed from y, RunBuffer::pos, and RunBuffer::glyphs metrics. + + @param font SkFont used for this run + @param count number of glyphs + @param y vertical offset within the blob + @param bounds optional run bounding box + @return writable glyph buffer and x-axis position buffer + */ + const RunBuffer& allocRunPosH(const SkFont& font, int count, SkScalar y, + const SkRect* bounds = nullptr); + + /** Returns run with storage for glyphs and SkPoint positions. Caller must + write count glyphs to RunBuffer::glyphs and count SkPoint to RunBuffer::pos + before next call to SkTextBlobBuilder. + + RunBuffer::utf8text and RunBuffer::clusters should be ignored. + + Glyphs share metrics in font. + + Glyphs are positioned using SkPoint written by caller to RunBuffer::pos, using + two scalar values for each SkPoint. + + bounds defines an optional bounding box, used to suppress drawing when SkTextBlob + bounds does not intersect SkSurface bounds. If bounds is nullptr, SkTextBlob bounds + is computed from RunBuffer::pos, and RunBuffer::glyphs metrics. + + @param font SkFont used for this run + @param count number of glyphs + @param bounds optional run bounding box + @return writable glyph buffer and SkPoint buffer + */ + const RunBuffer& allocRunPos(const SkFont& font, int count, + const SkRect* bounds = nullptr); + + // RunBuffer.pos points to SkRSXform array + const RunBuffer& allocRunRSXform(const SkFont& font, int count); + + /** Returns run with storage for glyphs, text, and clusters. Caller must + write count glyphs to RunBuffer::glyphs, textByteCount UTF-8 code units + into RunBuffer::utf8text, and count monotonic indexes into utf8text + into RunBuffer::clusters before next call to SkTextBlobBuilder. + + RunBuffer::pos should be ignored. + + Glyphs share metrics in font. + + Glyphs are positioned on a baseline at (x, y), using font metrics to + determine their relative placement. + + bounds defines an optional bounding box, used to suppress drawing when SkTextBlob + bounds does not intersect SkSurface bounds. If bounds is nullptr, SkTextBlob bounds + is computed from (x, y) and RunBuffer::glyphs metrics. + + @param font SkFont used for this run + @param count number of glyphs + @param x horizontal offset within the blob + @param y vertical offset within the blob + @param textByteCount number of UTF-8 code units + @param bounds optional run bounding box + @return writable glyph buffer, text buffer, and cluster buffer + */ + const RunBuffer& allocRunText(const SkFont& font, int count, SkScalar x, SkScalar y, + int textByteCount, const SkRect* bounds = nullptr); + + /** Returns run with storage for glyphs, positions along baseline, text, + and clusters. Caller must write count glyphs to RunBuffer::glyphs, + count scalars to RunBuffer::pos, textByteCount UTF-8 code units into + RunBuffer::utf8text, and count monotonic indexes into utf8text into + RunBuffer::clusters before next call to SkTextBlobBuilder. + + Glyphs share metrics in font. + + Glyphs are positioned on a baseline at y, using x-axis positions written by + caller to RunBuffer::pos. + + bounds defines an optional bounding box, used to suppress drawing when SkTextBlob + bounds does not intersect SkSurface bounds. If bounds is nullptr, SkTextBlob bounds + is computed from y, RunBuffer::pos, and RunBuffer::glyphs metrics. + + @param font SkFont used for this run + @param count number of glyphs + @param y vertical offset within the blob + @param textByteCount number of UTF-8 code units + @param bounds optional run bounding box + @return writable glyph buffer, x-axis position buffer, text buffer, and cluster buffer + */ + const RunBuffer& allocRunTextPosH(const SkFont& font, int count, SkScalar y, int textByteCount, + const SkRect* bounds = nullptr); + + /** Returns run with storage for glyphs, SkPoint positions, text, and + clusters. Caller must write count glyphs to RunBuffer::glyphs, count + SkPoint to RunBuffer::pos, textByteCount UTF-8 code units into + RunBuffer::utf8text, and count monotonic indexes into utf8text into + RunBuffer::clusters before next call to SkTextBlobBuilder. + + Glyphs share metrics in font. + + Glyphs are positioned using SkPoint written by caller to RunBuffer::pos, using + two scalar values for each SkPoint. + + bounds defines an optional bounding box, used to suppress drawing when SkTextBlob + bounds does not intersect SkSurface bounds. If bounds is nullptr, SkTextBlob bounds + is computed from RunBuffer::pos, and RunBuffer::glyphs metrics. + + @param font SkFont used for this run + @param count number of glyphs + @param textByteCount number of UTF-8 code units + @param bounds optional run bounding box + @return writable glyph buffer, SkPoint buffer, text buffer, and cluster buffer + */ + const RunBuffer& allocRunTextPos(const SkFont& font, int count, int textByteCount, + const SkRect* bounds = nullptr); + + // RunBuffer.pos points to SkRSXform array + const RunBuffer& allocRunTextRSXform(const SkFont& font, int count, int textByteCount, + const SkRect* bounds = nullptr); + +private: + void reserve(size_t size); + void allocInternal(const SkFont& font, SkTextBlob::GlyphPositioning positioning, + int count, int textBytes, SkPoint offset, const SkRect* bounds); + bool mergeRun(const SkFont& font, SkTextBlob::GlyphPositioning positioning, + uint32_t count, SkPoint offset); + void updateDeferredBounds(); + + static SkRect ConservativeRunBounds(const SkTextBlob::RunRecord&); + static SkRect TightRunBounds(const SkTextBlob::RunRecord&); + + friend class SkTextBlobPriv; + friend class SkTextBlobBuilderPriv; + + skia_private::AutoTMalloc fStorage; + size_t fStorageSize; + size_t fStorageUsed; + + SkRect fBounds; + int fRunCount; + bool fDeferredBounds; + size_t fLastRun; // index into fStorage + + RunBuffer fCurrentRunBuffer; +}; + +#endif // SkTextBlob_DEFINED diff --git a/vendor/artifacts/skia/include/core/SkTextureCompressionType.h b/vendor/artifacts/skia/include/core/SkTextureCompressionType.h new file mode 100644 index 000000000..e9b441378 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkTextureCompressionType.h @@ -0,0 +1,30 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTextureCompressionType_DEFINED +#define SkTextureCompressionType_DEFINED +/* + * Skia | GL_COMPRESSED_* | MTLPixelFormat* | VK_FORMAT_*_BLOCK + * -------------------------------------------------------------------------------------- + * kETC2_RGB8_UNORM | ETC1_RGB8 | ETC2_RGB8 (iOS-only) | ETC2_R8G8B8_UNORM + * | RGB8_ETC2 | | + * -------------------------------------------------------------------------------------- + * kBC1_RGB8_UNORM | RGB_S3TC_DXT1_EXT | N/A | BC1_RGB_UNORM + * -------------------------------------------------------------------------------------- + * kBC1_RGBA8_UNORM | RGBA_S3TC_DXT1_EXT | BC1_RGBA (macOS-only)| BC1_RGBA_UNORM + */ +enum class SkTextureCompressionType { + kNone, + kETC2_RGB8_UNORM, + + kBC1_RGB8_UNORM, + kBC1_RGBA8_UNORM, + kLast = kBC1_RGBA8_UNORM, + kETC1_RGB8 = kETC2_RGB8_UNORM, +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkTileMode.h b/vendor/artifacts/skia/include/core/SkTileMode.h new file mode 100644 index 000000000..bfb26c349 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkTileMode.h @@ -0,0 +1,41 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTileModes_DEFINED +#define SkTileModes_DEFINED + +#include "include/core/SkTypes.h" + +enum class SkTileMode { + /** + * Replicate the edge color if the shader draws outside of its + * original bounds. + */ + kClamp, + + /** + * Repeat the shader's image horizontally and vertically. + */ + kRepeat, + + /** + * Repeat the shader's image horizontally and vertically, alternating + * mirror images so that adjacent images always seam. + */ + kMirror, + + /** + * Only draw within the original domain, return transparent-black everywhere else. + */ + kDecal, + + kLastTileMode = kDecal, +}; + +static constexpr int kSkTileModeCount = static_cast(SkTileMode::kLastTileMode) + 1; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkTiledImageUtils.h b/vendor/artifacts/skia/include/core/SkTiledImageUtils.h new file mode 100644 index 000000000..fc5a4f25c --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkTiledImageUtils.h @@ -0,0 +1,125 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTiledImageUtils_DEFINED +#define SkTiledImageUtils_DEFINED + +#include "include/core/SkCanvas.h" +#include "include/core/SkImage.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSamplingOptions.h" +#include "include/core/SkScalar.h" +#include "include/private/base/SkAPI.h" + +#include + +class SkPaint; + +/** \namespace SkTiledImageUtils + SkTiledImageUtils' DrawImage/DrawImageRect methods are intended to be direct replacements + for their SkCanvas equivalents. The SkTiledImageUtils calls will break SkBitmap-backed + SkImages into smaller tiles and draw them if the original image is too large to be + uploaded to the GPU. If the original image doesn't need tiling or is already gpu-backed + the DrawImage/DrawImageRect calls will fall through to the matching SkCanvas call. +*/ +namespace SkTiledImageUtils { + +SK_API void DrawImageRect(SkCanvas* canvas, + const SkImage* image, + const SkRect& src, + const SkRect& dst, + const SkSamplingOptions& sampling = {}, + const SkPaint* paint = nullptr, + SkCanvas::SrcRectConstraint constraint = + SkCanvas::kFast_SrcRectConstraint); + +inline void DrawImageRect(SkCanvas* canvas, + const sk_sp& image, + const SkRect& src, + const SkRect& dst, + const SkSamplingOptions& sampling = {}, + const SkPaint* paint = nullptr, + SkCanvas::SrcRectConstraint constraint = + SkCanvas::kFast_SrcRectConstraint) { + DrawImageRect(canvas, image.get(), src, dst, sampling, paint, constraint); +} + +inline void DrawImageRect(SkCanvas* canvas, + const SkImage* image, + const SkRect& dst, + const SkSamplingOptions& sampling = {}, + const SkPaint* paint = nullptr, + SkCanvas::SrcRectConstraint constraint = + SkCanvas::kFast_SrcRectConstraint) { + if (!image) { + return; + } + + SkRect src = SkRect::MakeIWH(image->width(), image->height()); + + DrawImageRect(canvas, image, src, dst, sampling, paint, constraint); +} + +inline void DrawImageRect(SkCanvas* canvas, + const sk_sp& image, + const SkRect& dst, + const SkSamplingOptions& sampling = {}, + const SkPaint* paint = nullptr, + SkCanvas::SrcRectConstraint constraint = + SkCanvas::kFast_SrcRectConstraint) { + DrawImageRect(canvas, image.get(), dst, sampling, paint, constraint); +} + +inline void DrawImage(SkCanvas* canvas, + const SkImage* image, + SkScalar x, SkScalar y, + const SkSamplingOptions& sampling = {}, + const SkPaint* paint = nullptr, + SkCanvas::SrcRectConstraint constraint = + SkCanvas::kFast_SrcRectConstraint) { + if (!image) { + return; + } + + SkRect src = SkRect::MakeIWH(image->width(), image->height()); + SkRect dst = SkRect::MakeXYWH(x, y, image->width(), image->height()); + + DrawImageRect(canvas, image, src, dst, sampling, paint, constraint); +} + +inline void DrawImage(SkCanvas* canvas, + const sk_sp& image, + SkScalar x, SkScalar y, + const SkSamplingOptions& sampling = {}, + const SkPaint* paint = nullptr, + SkCanvas::SrcRectConstraint constraint = + SkCanvas::kFast_SrcRectConstraint) { + DrawImage(canvas, image.get(), x, y, sampling, paint, constraint); +} + +static constexpr int kNumImageKeyValues = 6; + +/** Retrieves a set of values that can be used as part of a cache key for the provided image. + + Unfortunately, SkImage::uniqueID isn't sufficient as an SkImage cache key. In particular, + SkBitmap-backed SkImages can share a single SkBitmap and refer to different subsets of it. + In this situation the optimal key is based on the SkBitmap's generation ID and the subset + rectangle. + For Picture-backed images this method will attempt to generate a concise internally-based + key (i.e., containing picture ID, matrix translation, width and height, etc.). For complicated + Picture-backed images (i.e., those w/ a paint or a full matrix) it will fall back to + using 'image's unique key. + + @param image The image for which key values are desired + @param keyValues The resulting key values +*/ +SK_API void GetImageKeyValues(const SkImage* image, uint32_t keyValues[kNumImageKeyValues]); + +} // namespace SkTiledImageUtils + +#endif // SkTiledImageUtils_DEFINED diff --git a/vendor/artifacts/skia/include/core/SkTraceMemoryDump.h b/vendor/artifacts/skia/include/core/SkTraceMemoryDump.h new file mode 100644 index 000000000..54032d9be --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkTraceMemoryDump.h @@ -0,0 +1,121 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTraceMemoryDump_DEFINED +#define SkTraceMemoryDump_DEFINED + +#include "include/core/SkTypes.h" + +class SkDiscardableMemory; + +/** + * Interface for memory tracing. + * This interface is meant to be passed as argument to the memory dump methods of Skia objects. + * The implementation of this interface is provided by the embedder. + */ +class SK_API SkTraceMemoryDump { +public: + /** + * Enum to specify the level of the requested details for the dump from the Skia objects. + */ + enum LevelOfDetail { + // Dump only the minimal details to get the total memory usage (Usually just the totals). + kLight_LevelOfDetail, + + // Dump the detailed breakdown of the objects in the caches. + kObjectsBreakdowns_LevelOfDetail + }; + + /** + * Appends a new memory dump (i.e. a row) to the trace memory infrastructure. + * If dumpName does not exist yet, a new one is created. Otherwise, a new column is appended to + * the previously created dump. + * Arguments: + * dumpName: an absolute, slash-separated, name for the item being dumped + * e.g., "skia/CacheX/EntryY". + * valueName: a string indicating the name of the column. + * e.g., "size", "active_size", "number_of_objects". + * This string is supposed to be long lived and is NOT copied. + * units: a string indicating the units for the value. + * e.g., "bytes", "objects". + * This string is supposed to be long lived and is NOT copied. + * value: the actual value being dumped. + */ + virtual void dumpNumericValue(const char* dumpName, + const char* valueName, + const char* units, + uint64_t value) = 0; + + virtual void dumpStringValue(const char* /*dumpName*/, + const char* /*valueName*/, + const char* /*value*/) { } + + /** + * Sets the memory backing for an existing dump. + * backingType and backingObjectId are used by the embedder to associate the memory dumped via + * dumpNumericValue with the corresponding dump that backs the memory. + */ + virtual void setMemoryBacking(const char* dumpName, + const char* backingType, + const char* backingObjectId) = 0; + + /** + * Specialization for memory backed by discardable memory. + */ + virtual void setDiscardableMemoryBacking( + const char* dumpName, + const SkDiscardableMemory& discardableMemoryObject) = 0; + + /** + * Returns the type of details requested in the dump. The granularity of the dump is supposed to + * match the LevelOfDetail argument. The level of detail must not affect the total size + * reported, but only granularity of the child entries. + */ + virtual LevelOfDetail getRequestedDetails() const = 0; + + /** + * Returns true if we should dump wrapped objects. Wrapped objects come from outside Skia, and + * may be independently tracked there. + */ + virtual bool shouldDumpWrappedObjects() const { return true; } + + /** + * If shouldDumpWrappedObjects() returns true then this function will be called to populate + * the output with information on whether the item being dumped is a wrapped object. + */ + virtual void dumpWrappedState(const char* /*dumpName*/, bool /*isWrappedObject*/) {} + + /** + * Returns true if we should dump unbudgeted objects. Unbudgeted objects can either come from + * wrapped objects passed into Skia from the client or from Skia created objects currently held + * by the client in a public Skia object (e.g. SkSurface or SkImage). This call is only used + * when dumping Graphite memory statistics. + */ + virtual bool shouldDumpUnbudgetedObjects() const { return true; } + + /** + * If shouldDumpUnbudgetedObjects() returns true then this function will be called to populate + * the output with information on whether the item being dumped is budgeted. This call is only + * used when dumping Graphite memory statistics. + */ + virtual void dumpBudgetedState(const char* /*dumpName*/, bool /*isBudgeted*/) {} + + /** + * Returns true if we should dump sizeless non-texture objects (e.g. Samplers, pipelines, etc). + * Memoryless textures are always dumped. This call is only used when dumping Graphite memory + * statistics. + */ + virtual bool shouldDumpSizelessObjects() const { return false; } + +protected: + virtual ~SkTraceMemoryDump() = default; + SkTraceMemoryDump() = default; + SkTraceMemoryDump(const SkTraceMemoryDump&) = delete; + SkTraceMemoryDump& operator=(const SkTraceMemoryDump&) = delete; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkTypeface.h b/vendor/artifacts/skia/include/core/SkTypeface.h new file mode 100644 index 000000000..1bc8e706e --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkTypeface.h @@ -0,0 +1,462 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTypeface_DEFINED +#define SkTypeface_DEFINED + +#include "include/core/SkFontArguments.h" +#include "include/core/SkFontParameters.h" +#include "include/core/SkFontStyle.h" +#include "include/core/SkFourByteTag.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" +#include "include/core/SkString.h" +#include "include/core/SkTypes.h" +#include "include/private/SkWeakRefCnt.h" +#include "include/private/base/SkOnce.h" + +#include +#include +#include + +class SkData; +class SkDescriptor; +class SkFontMgr; +class SkFontDescriptor; +class SkScalerContext; +class SkStream; +class SkStreamAsset; +class SkWStream; +enum class SkTextEncoding; +struct SkAdvancedTypefaceMetrics; +struct SkScalerContextEffects; +struct SkScalerContextRec; + +using SkTypefaceID = uint32_t; + +/** Machine endian. */ +typedef uint32_t SkFontTableTag; + +/** \class SkTypeface + + The SkTypeface class specifies the typeface and intrinsic style of a font. + This is used in the paint, along with optionally algorithmic settings like + textSize, textSkewX, textScaleX, kFakeBoldText_Mask, to specify + how text appears when drawn (and measured). + + Typeface objects are immutable, and so they can be shared between threads. +*/ +class SK_API SkTypeface : public SkWeakRefCnt { +public: + /** Returns the typeface's intrinsic style attributes. */ + SkFontStyle fontStyle() const; + + /** Returns true if fontStyle() weight is at least semi bold */ + bool isBold() const; + + /** Returns true if fontStyle() is not upright. */ + bool isItalic() const; + + /** Returns true if the typeface claims to be fixed-pitch. + * This is a style bit, advance widths may vary even if this returns true. + */ + bool isFixedPitch() const; + + /** Copy into 'coordinates' (allocated by the caller) the design variation coordinates. + * + * @param coordinates the span into which to write the design variation coordinates. + * + * @return The number of axes, or -1 if there is an error. + * If 'coordinates.size() >= numAxes' then 'coordinates' will be + * filled with the variation coordinates describing the position of this typeface in design + * variation space. It is possible the number of axes can be retrieved but actual position + * cannot. + */ + int getVariationDesignPosition( + SkSpan coordinates) const; + + /** Copy into 'parameters' (allocated by the caller) the design variation parameters. + * + * @param parameters the span into which to write the design variation parameters. + * + * @return The number of axes, or -1 if there is an error. + * If 'parameters.size() >= numAxes' then 'parameters' will be + * filled with the variation parameters describing the position of this typeface in design + * variation space. It is possible the number of axes can be retrieved but actual parameters + * cannot. + */ + int getVariationDesignParameters(SkSpan parameters) const; + + /** Returns true if the typeface is internally being fake bolded. */ + bool isSyntheticBold() const; + + /** Returns true if the typeface is internally being fake obliqued. */ + bool isSyntheticOblique() const; + + /** Return a 32bit value for this typeface, unique for the underlying font + data. Will never return 0. + */ + SkTypefaceID uniqueID() const { return fUniqueID; } + + /** Returns true if the two typefaces reference the same underlying font, + handling either being null (treating null as not equal to any font). + */ + static bool Equal(const SkTypeface* facea, const SkTypeface* faceb); + + /** Returns a non-null typeface which contains no glyphs. */ + static sk_sp MakeEmpty(); + + /** Return a new typeface based on this typeface but parameterized as specified in the + SkFontArguments. If the SkFontArguments does not supply an argument for a parameter + in the font then the value from this typeface will be used as the value for that + argument. If the cloned typeface would be exaclty the same as this typeface then + this typeface may be ref'ed and returned. May return nullptr on failure. + */ + sk_sp makeClone(const SkFontArguments&) const; + + /** + * A typeface can serialize just a descriptor (names, etc.), or it can also include the + * actual font data (which can be large). This enum controls how serialize() decides what + * to serialize. + */ + enum class SerializeBehavior { + kDoIncludeData, + kDontIncludeData, + kIncludeDataIfLocal, + }; + + /** Write a unique signature to a stream, sufficient to reconstruct a + typeface referencing the same font when Deserialize is called. + */ + bool serialize(SkWStream*, SerializeBehavior = SerializeBehavior::kIncludeDataIfLocal) const; + + /** + * Same as serialize(SkWStream*, ...) but returns the serialized data in SkData, instead of + * writing it to a stream. + */ + sk_sp serialize(SerializeBehavior = SerializeBehavior::kIncludeDataIfLocal) const; + + /** Given the data previously written by serialize(), return a new instance + of a typeface referring to the same font. If that font is not available, + return nullptr. + Goes through all registered typeface factories and lastResortMgr (if non-null). + Does not affect ownership of SkStream. + */ + + static sk_sp MakeDeserialize(SkStream*, sk_sp lastResortMgr); + + /** + * Given an array of UTF32 character codes, return their corresponding glyph IDs. + * + * @param unis span of UTF32 chars + * @param glyphs returns the corresponding glyph IDs for each character. + */ + void unicharsToGlyphs(SkSpan unis, SkSpan glyphs) const; + + size_t textToGlyphs(const void* text, size_t byteLength, SkTextEncoding encoding, + SkSpan glyphs) const; + + /** + * Return the glyphID that corresponds to the specified unicode code-point + * (in UTF32 encoding). If the unichar is not supported, returns 0. + * + * This is a short-cut for calling unicharsToGlyphs(). + */ + SkGlyphID unicharToGlyph(SkUnichar unichar) const; + + /** + * Return the number of glyphs in the typeface. + */ + int countGlyphs() const; + + // Table getters -- may fail if the underlying font format is not organized + // as 4-byte tables. + + /** Return the number of tables in the font. */ + int countTables() const; + + /** Copy into tags[] (allocated by the caller) the list of table tags in + * the font, and return the number. This will be the same as CountTables() + * or 0 if an error occurred. If tags is empty, this only returns the count + * (the same as calling countTables()). + */ + int readTableTags(SkSpan tags) const; + + /** Given a table tag, return the size of its contents, or 0 if not present + */ + size_t getTableSize(SkFontTableTag) const; + + /** Copy the contents of a table into data (allocated by the caller). Note + * that the contents of the table will be in their native endian order + * (which for most truetype tables is big endian). If the table tag is + * not found, or there is an error copying the data, then 0 is returned. + * If this happens, it is possible that some or all of the memory pointed + * to by data may have been written to, even though an error has occurred. + * + * @param tag The table tag whose contents are to be copied + * @param offset The offset in bytes into the table's contents where the + * copy should start from. + * @param length The number of bytes, starting at offset, of table data + * to copy. + * @param data storage address where the table contents are copied to + * @return the number of bytes actually copied into data. If offset+length + * exceeds the table's size, then only the bytes up to the table's + * size are actually copied, and this is the value returned. If + * offset > the table's size, or tag is not a valid table, + * then 0 is returned. + */ + size_t getTableData(SkFontTableTag tag, size_t offset, size_t length, + void* data) const; + + /** + * Return an immutable copy of the requested font table, or nullptr if that table was + * not found. This can sometimes be faster than calling getTableData() twice: once to find + * the length, and then again to copy the data. + * + * @param tag The table tag whose contents are to be copied + * @return an immutable copy of the table's data, or nullptr. + */ + sk_sp copyTableData(SkFontTableTag tag) const; + + /** + * Return the units-per-em value for this typeface, or zero if there is an + * error. + */ + int getUnitsPerEm() const; + + /** + * Given a run of glyphs, return the associated horizontal adjustments. + * Adjustments are in "design units", which are integers relative to the + * typeface's units per em (see getUnitsPerEm). + * + * Some typefaces are known to never support kerning. Calling this method + * with empty spans (e.g. getKerningPairAdustments({}, {})) returns + * a boolean indicating if the typeface might support kerning. If it + * returns false, then it will always return false (no kerning) for all + * possible glyph runs. If it returns true, then it *may* return true for + * some glyph runs. + * + * If the method returns true, and there are 1 or more glyphs in the span, then + * this will return in adjustments N values, + * where N = min(glyphs.size() - 1, adjustments.size()). + + * If the method returns false, then no kerning should be applied, and the adjustments + * array will be in an undefined state (possibly some values may have been + * written, but none of them should be interpreted as valid values). + */ + bool getKerningPairAdjustments(SkSpan glyphs, + SkSpan adjustments) const; + + struct LocalizedString { + SkString fString; + SkString fLanguage; + }; + class LocalizedStrings { + public: + LocalizedStrings() = default; + virtual ~LocalizedStrings() { } + virtual bool next(LocalizedString* localizedString) = 0; + void unref() { delete this; } + + private: + LocalizedStrings(const LocalizedStrings&) = delete; + LocalizedStrings& operator=(const LocalizedStrings&) = delete; + }; + /** + * Returns an iterator which will attempt to enumerate all of the + * family names specified by the font. + * It is the caller's responsibility to unref() the returned pointer. + */ + LocalizedStrings* createFamilyNameIterator() const; + + /** + * Return the family name for this typeface. It will always be returned + * encoded as UTF8, but the language of the name is whatever the host + * platform chooses. + */ + void getFamilyName(SkString* name) const; + + /** + * Return the PostScript name for this typeface. + * Value may change based on variation parameters. + * Returns false if no PostScript name is available. + */ + bool getPostScriptName(SkString* name) const; + + /** + * If the primary resource backing this typeface has a name (like a file + * path or URL) representable by unicode code points, the `resourceName` + * will be set. The primary purpose is as a user facing indication about + * where the data was obtained (which font file was used). + * + * Returns the number of resources backing this typeface. + * + * For local font collections resource name will often be a file path. The + * file path may or may not exist. If it does exist, using it to create an + * SkTypeface may or may not create a similar SkTypeface to this one. + */ + int getResourceName(SkString* resourceName) const; + + /** + * Return a stream for the contents of the font data, or NULL on failure. + * If ttcIndex is not null, it is set to the TrueTypeCollection index + * of this typeface within the stream, or 0 if the stream is not a + * collection. + * The caller is responsible for deleting the stream. + */ + std::unique_ptr openStream(int* ttcIndex) const; + + /** + * Return a stream for the contents of the font data. + * Returns nullptr on failure or if the font data isn't already available in stream form. + * Use when the stream can be used opportunistically but the calling code would prefer + * to fall back to table access if creating the stream would be expensive. + * Otherwise acts the same as openStream. + */ + std::unique_ptr openExistingStream(int* ttcIndex) const; + + /** + * Return a scalercontext for the given descriptor. It may return a + * stub scalercontext that will not crash, but will draw nothing. + */ + std::unique_ptr createScalerContext(const SkScalerContextEffects&, + const SkDescriptor*) const; + + /** + * Return a rectangle (scaled to 1-pt) that represents the union of the bounds of all + * of the glyphs, but each one positioned at (0,). This may be conservatively large, and + * will not take into account any hinting or other size-specific adjustments. + */ + SkRect getBounds() const; + + // PRIVATE / EXPERIMENTAL -- do not call + void filterRec(SkScalerContextRec* rec) const { + this->onFilterRec(rec); + } + // PRIVATE / EXPERIMENTAL -- do not call + void getFontDescriptor(SkFontDescriptor* desc, bool* isLocal) const { + this->onGetFontDescriptor(desc, isLocal); + } + // PRIVATE / EXPERIMENTAL -- do not call + void* internal_private_getCTFontRef() const { + return this->onGetCTFontRef(); + } + + /* Skia reserves all tags that begin with a lower case letter and 0 */ + using FactoryId = SkFourByteTag; + static void Register( + FactoryId id, + sk_sp (*make)(std::unique_ptr, const SkFontArguments&)); + +protected: + // needed until onGetTableTags() is updated to take a span + enum { MAX_REASONABLE_TABLE_COUNT = (1 << 16) - 1 }; + + explicit SkTypeface(const SkFontStyle& style, bool isFixedPitch = false); + ~SkTypeface() override; + + virtual sk_sp onMakeClone(const SkFontArguments&) const = 0; + + /** Sets the fixedPitch bit. If used, must be called in the constructor. */ + void setIsFixedPitch(bool isFixedPitch) { fIsFixedPitch = isFixedPitch; } + /** Sets the font style. If used, must be called in the constructor. */ + void setFontStyle(SkFontStyle style) { fStyle = style; } + + virtual SkFontStyle onGetFontStyle() const; // TODO: = 0; + + virtual bool onGetFixedPitch() const; // TODO: = 0; + + // Must return a valid scaler context. It can not return nullptr. + virtual std::unique_ptr onCreateScalerContext( + const SkScalerContextEffects&, const SkDescriptor*) const = 0; + virtual std::unique_ptr onCreateScalerContextAsProxyTypeface + (const SkScalerContextEffects&, const SkDescriptor*, SkTypeface* proxyTypeface) const; + virtual void onFilterRec(SkScalerContextRec*) const = 0; + friend class SkScalerContext; // onFilterRec + + // Subclasses *must* override this method to work with the PDF backend. + virtual std::unique_ptr onGetAdvancedMetrics() const = 0; + // For type1 postscript fonts only, set the glyph names for each glyph. + // destination array is non-null, and points to an array of size this->countGlyphs(). + // Backends that do not suport type1 fonts should not override. + virtual void getPostScriptGlyphNames(SkString*) const = 0; + + // The mapping from glyph to Unicode; array indices are glyph ids. + // For each glyph, give the default Unicode value, if it exists. + // dstArray is non-null, and points to an array of size this->countGlyphs(). + virtual void getGlyphToUnicodeMap(SkSpan dstArray) const = 0; + + virtual std::unique_ptr onOpenStream(int* ttcIndex) const = 0; + + virtual std::unique_ptr onOpenExistingStream(int* ttcIndex) const; + + virtual bool onGlyphMaskNeedsCurrentColor() const = 0; + + virtual int onGetVariationDesignPosition( + SkSpan) const = 0; + + virtual int onGetVariationDesignParameters(SkSpan) const = 0; + + virtual bool onIsSyntheticBold() const; + virtual bool onIsSyntheticOblique() const; + + virtual void onGetFontDescriptor(SkFontDescriptor*, bool* isLocal) const = 0; + + virtual void onCharsToGlyphs(SkSpan, SkSpan) const = 0; + virtual int onCountGlyphs() const = 0; + + virtual int onGetUPEM() const = 0; + virtual bool onGetKerningPairAdjustments(SkSpan, + SkSpan adjustments) const; + + /** Returns the family name of the typeface as known by its font manager. + * This name may or may not be produced by the family name iterator. + */ + virtual void onGetFamilyName(SkString* familyName) const = 0; + virtual bool onGetPostScriptName(SkString*) const = 0; + virtual int onGetResourceName(SkString* resourceName) const; // TODO: = 0; + + /** Returns an iterator over the family names in the font. */ + virtual LocalizedStrings* onCreateFamilyNameIterator() const = 0; + + virtual int onGetTableTags(SkSpan) const = 0; + virtual size_t onGetTableData(SkFontTableTag, size_t offset, + size_t length, void* data) const = 0; + virtual sk_sp onCopyTableData(SkFontTableTag) const; + + virtual bool onComputeBounds(SkRect*) const; + + virtual void* onGetCTFontRef() const { return nullptr; } + +private: + /** Returns true if the typeface's glyph masks may refer to the foreground + * paint foreground color. This is needed to determine caching requirements. Usually true for + * typefaces that contain a COLR table. + */ + bool glyphMaskNeedsCurrentColor() const; + friend class SkStrikeServerImpl; // glyphMaskNeedsCurrentColor + friend class SkTypefaceProxyPrototype; // glyphMaskNeedsCurrentColor + + /** Retrieve detailed typeface metrics. Used by the PDF backend. */ + std::unique_ptr getAdvancedMetrics() const; + friend class SkRandomTypeface; // getAdvancedMetrics + friend class SkPDFFont; // getAdvancedMetrics + friend class SkTypeface_proxy; + friend class SkFontPriv; // getGlyphToUnicodeMap + friend void TestSkTypefaceGlyphToUnicodeMap(SkTypeface&, SkSpan); + +private: + SkTypefaceID fUniqueID; + SkFontStyle fStyle; + mutable SkRect fBounds; + mutable SkOnce fBoundsOnce; + bool fIsFixedPitch; + + using INHERITED = SkWeakRefCnt; +}; +#endif diff --git a/vendor/artifacts/skia/include/core/SkTypes.h b/vendor/artifacts/skia/include/core/SkTypes.h new file mode 100644 index 000000000..79644da04 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkTypes.h @@ -0,0 +1,193 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTypes_DEFINED +#define SkTypes_DEFINED + +// All of these files should be independent of things users can set via the user config file. +// They should also be able to be included in any order. +// IWYU pragma: begin_exports +#include "include/private/base/SkFeatures.h" + +// Load and verify defines from the user config file. +#include "include/private/base/SkLoadUserConfig.h" + +// Any includes or defines below can be configured by the user config file. +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkAttributes.h" +#include "include/private/base/SkDebug.h" +// IWYU pragma: end_exports + +#include + +#if !defined(SK_GANESH) && !defined(SK_GRAPHITE) +# undef SK_GL +# undef SK_VULKAN +# undef SK_METAL +# undef SK_DAWN +# undef SK_DIRECT3D +#endif + +// If SK_R32_SHIFT is set, we'll use that to choose RGBA or BGRA. +// If not, we'll default to RGBA everywhere except BGRA on Windows. +#if defined(SK_R32_SHIFT) + static_assert(SK_R32_SHIFT == 0 || SK_R32_SHIFT == 16, ""); +#elif defined(SK_BUILD_FOR_WIN) + #define SK_R32_SHIFT 16 +#else + #define SK_R32_SHIFT 0 +#endif + +#if defined(SK_B32_SHIFT) + static_assert(SK_B32_SHIFT == (16-SK_R32_SHIFT), ""); +#else + #define SK_B32_SHIFT (16-SK_R32_SHIFT) +#endif + +#define SK_G32_SHIFT 8 +#define SK_A32_SHIFT 24 + +/** + * SK_PMCOLOR_BYTE_ORDER can be used to query the byte order of SkPMColor at compile time. + */ +#ifdef SK_CPU_BENDIAN +# define SK_PMCOLOR_BYTE_ORDER(C0, C1, C2, C3) \ + (SK_ ## C3 ## 32_SHIFT == 0 && \ + SK_ ## C2 ## 32_SHIFT == 8 && \ + SK_ ## C1 ## 32_SHIFT == 16 && \ + SK_ ## C0 ## 32_SHIFT == 24) +#else +# define SK_PMCOLOR_BYTE_ORDER(C0, C1, C2, C3) \ + (SK_ ## C0 ## 32_SHIFT == 0 && \ + SK_ ## C1 ## 32_SHIFT == 8 && \ + SK_ ## C2 ## 32_SHIFT == 16 && \ + SK_ ## C3 ## 32_SHIFT == 24) +#endif + +#if defined SK_DEBUG && defined SK_BUILD_FOR_WIN + #ifdef free + #undef free + #endif + #include + #undef free +#endif + +#ifndef SK_ALLOW_STATIC_GLOBAL_INITIALIZERS + #define SK_ALLOW_STATIC_GLOBAL_INITIALIZERS 0 +#endif + +#if !defined(SK_GAMMA_EXPONENT) + #define SK_GAMMA_EXPONENT (0.0f) // SRGB +#endif + +#if !defined(SK_GAMMA_CONTRAST) + // A value of 0.5 for SK_GAMMA_CONTRAST appears to be a good compromise. + // With lower values small text appears washed out (though correctly so). + // With higher values lcd fringing is worse and the smoothing effect of + // partial coverage is diminished. + #define SK_GAMMA_CONTRAST (0.5f) +#endif + +#if defined(SK_HISTOGRAM_ENUMERATION) || \ + defined(SK_HISTOGRAM_BOOLEAN) || \ + defined(SK_HISTOGRAM_EXACT_LINEAR) || \ + defined(SK_HISTOGRAM_CUSTOM_EXACT_LINEAR) || \ + defined(SK_HISTOGRAM_MEMORY_KB) || \ + defined(SK_HISTOGRAM_CUSTOM_COUNTS)|| \ + defined(SK_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES) +# define SK_HISTOGRAMS_ENABLED 1 +#else +# define SK_HISTOGRAMS_ENABLED 0 +#endif + +#ifndef SK_HISTOGRAM_BOOLEAN +# define SK_HISTOGRAM_BOOLEAN(name, sample) +#endif + +#ifndef SK_HISTOGRAM_ENUMERATION +# define SK_HISTOGRAM_ENUMERATION(name, sampleEnum, enumSize) +#endif + +#ifndef SK_HISTOGRAM_EXACT_LINEAR +# define SK_HISTOGRAM_EXACT_LINEAR(name, sample, valueMax) +#endif + +#ifndef SK_HISTOGRAM_CUSTOM_EXACT_LINEAR +# define SK_HISTOGRAM_CUSTOM_EXACT_LINEAR(name, sample, value_min, \ + value_max, bucket_count) +#endif + +#ifndef SK_HISTOGRAM_MEMORY_KB +# define SK_HISTOGRAM_MEMORY_KB(name, sample) +#endif + +#ifndef SK_HISTOGRAM_CUSTOM_COUNTS +# define SK_HISTOGRAM_CUSTOM_COUNTS(name, sample, countMin, countMax, bucketCount) +#endif + +#ifndef SK_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES +# define SK_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES(name, sampleUSec, minUSec, maxUSec, bucketCount) +#endif + +#define SK_HISTOGRAM_PERCENTAGE(name, percent_as_int) \ + SK_HISTOGRAM_EXACT_LINEAR(name, percent_as_int, 101) + +// The top-level define SK_ENABLE_OPTIMIZE_SIZE can be used to remove several large features at once +#if defined(SK_ENABLE_OPTIMIZE_SIZE) + #if !defined(SK_FORCE_RASTER_PIPELINE_BLITTER) + #define SK_FORCE_RASTER_PIPELINE_BLITTER + #endif + #define SK_DISABLE_SDF_TEXT +#endif + +#if defined(SK_BUILD_FOR_LIBFUZZER) || defined(SK_BUILD_FOR_AFL_FUZZ) +#if !defined(SK_BUILD_FOR_FUZZER) + #define SK_BUILD_FOR_FUZZER +#endif +#endif + +/** + * These defines are set to 0 or 1, rather than being undefined or defined + * TODO: consider updating these for consistency + */ + +#if !defined(GR_CACHE_STATS) + #if defined(SK_DEBUG) || defined(SK_DUMP_STATS) + #define GR_CACHE_STATS 1 + #else + #define GR_CACHE_STATS 0 + #endif +#endif + +#if !defined(GR_GPU_STATS) + #if defined(SK_DEBUG) || defined(SK_DUMP_STATS) || defined(GPU_TEST_UTILS) + #define GR_GPU_STATS 1 + #else + #define GR_GPU_STATS 0 + #endif +#endif + +//////////////////////////////////////////////////////////////////////////////// + +/** 32 bit integer to hold a unicode value +*/ +typedef int32_t SkUnichar; + +/** 16 bit unsigned integer to hold a glyph index +*/ +typedef uint16_t SkGlyphID; + +/** The generation IDs in Skia reserve 0 has an invalid marker. +*/ +static constexpr uint32_t SK_InvalidGenID = 0; + +/** The unique IDs in Skia reserve 0 has an invalid marker. +*/ +static constexpr uint32_t SK_InvalidUniqueID = 0; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkUnPreMultiply.h b/vendor/artifacts/skia/include/core/SkUnPreMultiply.h new file mode 100644 index 000000000..649c89f9c --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkUnPreMultiply.h @@ -0,0 +1,55 @@ + +/* + * Copyright 2008 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkUnPreMultiply_DEFINED +#define SkUnPreMultiply_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkCPUTypes.h" + +#include + +class SK_API SkUnPreMultiply { +public: + typedef uint32_t Scale; + + // index this table with alpha [0..255] + static const Scale* GetScaleTable() { + return gTable; + } + + static Scale GetScale(U8CPU alpha) { + SkASSERT(alpha <= 255); + return gTable[alpha]; + } + + /** Usage: + + const Scale* table = SkUnPreMultiply::GetScaleTable(); + + for (...) { + unsigned a = ... + SkUnPreMultiply::Scale scale = table[a]; + + red = SkUnPreMultiply::ApplyScale(scale, red); + ... + // now red is unpremultiplied + } + */ + static U8CPU ApplyScale(Scale scale, U8CPU component) { + SkASSERT(component <= 255); + return (scale * component + (1 << 23)) >> 24; + } + + static SkColor PMColorToColor(SkPMColor c); + +private: + static const uint32_t gTable[256]; +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkVertices.h b/vendor/artifacts/skia/include/core/SkVertices.h new file mode 100644 index 000000000..cd25bdb5e --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkVertices.h @@ -0,0 +1,136 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkVertices_DEFINED +#define SkVertices_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkPoint.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include +#include +#include + +class SkVerticesPriv; + +/** + * An immutable set of vertex data that can be used with SkCanvas::drawVertices. + */ +class SK_API SkVertices : public SkNVRefCnt { + struct Desc; + struct Sizes; +public: + enum VertexMode { + kTriangles_VertexMode, + kTriangleStrip_VertexMode, + kTriangleFan_VertexMode, + + kLast_VertexMode = kTriangleFan_VertexMode, + }; + + /** + * Create a vertices by copying the specified arrays. texs, colors may be nullptr, + * and indices is ignored if indexCount == 0. + */ + static sk_sp MakeCopy(VertexMode mode, int vertexCount, + const SkPoint positions[], + const SkPoint texs[], + const SkColor colors[], + int indexCount, + const uint16_t indices[]); + + static sk_sp MakeCopy(VertexMode mode, int vertexCount, + const SkPoint positions[], + const SkPoint texs[], + const SkColor colors[]) { + return MakeCopy(mode, + vertexCount, + positions, + texs, + colors, + 0, + nullptr); + } + + enum BuilderFlags { + kHasTexCoords_BuilderFlag = 1 << 0, + kHasColors_BuilderFlag = 1 << 1, + }; + class SK_API Builder { + public: + Builder(VertexMode mode, int vertexCount, int indexCount, uint32_t flags); + + bool isValid() const { return fVertices != nullptr; } + + SkPoint* positions(); + uint16_t* indices(); // returns null if there are no indices + + // If we have custom attributes, these will always be null + SkPoint* texCoords(); // returns null if there are no texCoords + SkColor* colors(); // returns null if there are no colors + + // Detach the built vertices object. After the first call, this will always return null. + sk_sp detach(); + + private: + Builder(const Desc&); + + void init(const Desc&); + + // holds a partially complete object. only completed in detach() + sk_sp fVertices; + // Extra storage for intermediate vertices in the case where the client specifies indexed + // triangle fans. These get converted to indexed triangles when the Builder is finalized. + std::unique_ptr fIntermediateFanIndices; + + friend class SkVertices; + friend class SkVerticesPriv; + }; + + uint32_t uniqueID() const { return fUniqueID; } + const SkRect& bounds() const { return fBounds; } + + // returns approximate byte size of the vertices object + size_t approximateSize() const; + + // Provides access to functions that aren't part of the public API. + SkVerticesPriv priv(); + const SkVerticesPriv priv() const; // NOLINT(readability-const-return-type) + +private: + SkVertices() {} + + friend class SkVerticesPriv; + + // these are needed since we've manually sized our allocation (see Builder::init) + friend class SkNVRefCnt; + void operator delete(void* p); + + Sizes getSizes() const; + + // we store this first, to pair with the refcnt in our base-class, so we don't have an + // unnecessary pad between it and the (possibly 8-byte aligned) ptrs. + uint32_t fUniqueID; + + // these point inside our allocation, so none of these can be "freed" + SkPoint* fPositions; // [vertexCount] + uint16_t* fIndices; // [indexCount] or null + SkPoint* fTexs; // [vertexCount] or null + SkColor* fColors; // [vertexCount] or null + + SkRect fBounds; // computed to be the union of the fPositions[] + int fVertexCount; + int fIndexCount; + + VertexMode fMode; + // below here is where the actual array data is stored. +}; + +#endif diff --git a/vendor/artifacts/skia/include/core/SkYUVAInfo.h b/vendor/artifacts/skia/include/core/SkYUVAInfo.h new file mode 100644 index 000000000..01eeff723 --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkYUVAInfo.h @@ -0,0 +1,311 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkYUVAInfo_DEFINED +#define SkYUVAInfo_DEFINED + +#include "include/codec/SkEncodedOrigin.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkSize.h" +#include "include/core/SkTypes.h" + +#include +#include +#include +#include + +/** + * Specifies the structure of planes for a YUV image with optional alpha. The actual planar data + * is not part of this structure and depending on usage is in external textures or pixmaps. + */ +class SK_API SkYUVAInfo { +public: + enum YUVAChannels { kY, kU, kV, kA, kLast = kA }; + static constexpr int kYUVAChannelCount = static_cast(YUVAChannels::kLast + 1); + + struct YUVALocation; // For internal use. + using YUVALocations = std::array; + + /** + * Specifies how YUV (and optionally A) are divided among planes. Planes are separated by + * underscores in the enum value names. Within each plane the pixmap/texture channels are + * mapped to the YUVA channels in the order specified, e.g. for kY_UV Y is in channel 0 of plane + * 0, U is in channel 0 of plane 1, and V is in channel 1 of plane 1. Channel ordering + * within a pixmap/texture given the channels it contains: + * A: 0:A + * Luminance/Gray: 0:Gray + * Luminance/Gray + Alpha: 0:Gray, 1:A + * RG 0:R, 1:G + * RGB 0:R, 1:G, 2:B + * RGBA 0:R, 1:G, 2:B, 3:A + */ + enum class PlaneConfig { + kUnknown, + + kY_U_V, ///< Plane 0: Y, Plane 1: U, Plane 2: V + kY_V_U, ///< Plane 0: Y, Plane 1: V, Plane 2: U + kY_UV, ///< Plane 0: Y, Plane 1: UV + kY_VU, ///< Plane 0: Y, Plane 1: VU + kYUV, ///< Plane 0: YUV + kUYV, ///< Plane 0: UYV + + kY_U_V_A, ///< Plane 0: Y, Plane 1: U, Plane 2: V, Plane 3: A + kY_V_U_A, ///< Plane 0: Y, Plane 1: V, Plane 2: U, Plane 3: A + kY_UV_A, ///< Plane 0: Y, Plane 1: UV, Plane 2: A + kY_VU_A, ///< Plane 0: Y, Plane 1: VU, Plane 2: A + kYUVA, ///< Plane 0: YUVA + kUYVA, ///< Plane 0: UYVA + + kLast = kUYVA + }; + + /** + * UV subsampling is also specified in the enum value names using J:a:b notation (e.g. 4:2:0 is + * 1/2 horizontal and 1/2 vertical resolution for U and V). If alpha is present it is not sub- + * sampled. Note that Subsampling values other than k444 are only valid with PlaneConfig values + * that have U and V in different planes than Y (and A, if present). + */ + enum class Subsampling { + kUnknown, + + k444, ///< No subsampling. UV values for each Y. + k422, ///< 1 set of UV values for each 2x1 block of Y values. + k420, ///< 1 set of UV values for each 2x2 block of Y values. + k440, ///< 1 set of UV values for each 1x2 block of Y values. + k411, ///< 1 set of UV values for each 4x1 block of Y values. + k410, ///< 1 set of UV values for each 4x2 block of Y values. + + kLast = k410 + }; + + /** + * Describes how subsampled chroma values are sited relative to luma values. + * + * Currently only centered siting is supported but will expand to support additional sitings. + */ + enum class Siting { + /** + * Subsampled chroma value is sited at the center of the block of corresponding luma values. + */ + kCentered, + }; + + static constexpr int kMaxPlanes = 4; + + /** ratio of Y/A values to U/V values in x and y. */ + static std::tuple SubsamplingFactors(Subsampling); + + /** + * SubsamplingFactors(Subsampling) if planedIdx refers to a U/V plane and otherwise {1, 1} if + * inputs are valid. Invalid inputs consist of incompatible PlaneConfig/Subsampling/planeIdx + * combinations. {0, 0} is returned for invalid inputs. + */ + static std::tuple PlaneSubsamplingFactors(PlaneConfig, Subsampling, int planeIdx); + + /** + * Given image dimensions, a planer configuration, subsampling, and origin, determine the + * expected size of each plane. Returns the number of expected planes. planeDimensions[0] + * through planeDimensions[] are written. The input image dimensions are as displayed + * (after the planes have been transformed to the intended display orientation). The plane + * dimensions are output as the planes are stored in memory (may be rotated from image + * dimensions). + */ + static int PlaneDimensions(SkISize imageDimensions, + PlaneConfig, + Subsampling, + SkEncodedOrigin, + SkISize planeDimensions[kMaxPlanes]); + + /** Number of planes for a given PlaneConfig. */ + static constexpr int NumPlanes(PlaneConfig); + + /** + * Number of Y, U, V, A channels in the ith plane for a given PlaneConfig (or 0 if i is + * invalid). + */ + static constexpr int NumChannelsInPlane(PlaneConfig, int i); + + /** + * Given a PlaneConfig and a set of channel flags for each plane, convert to YUVALocations + * representation. Fails if channel flags aren't valid for the PlaneConfig (i.e. don't have + * enough channels in a plane) by returning an invalid set of locations (plane indices are -1). + */ + static YUVALocations GetYUVALocations(PlaneConfig, const uint32_t* planeChannelFlags); + + /** Does the PlaneConfig have alpha values? */ + static bool HasAlpha(PlaneConfig); + + SkYUVAInfo() = default; + SkYUVAInfo(const SkYUVAInfo&) = default; + + /** + * 'dimensions' should specify the size of the full resolution image (after planes have been + * oriented to how the image is displayed as indicated by 'origin'). + */ + SkYUVAInfo(SkISize dimensions, + PlaneConfig, + Subsampling, + SkYUVColorSpace, + SkEncodedOrigin origin = kTopLeft_SkEncodedOrigin, + Siting sitingX = Siting::kCentered, + Siting sitingY = Siting::kCentered); + + SkYUVAInfo& operator=(const SkYUVAInfo& that) = default; + + PlaneConfig planeConfig() const { return fPlaneConfig; } + Subsampling subsampling() const { return fSubsampling; } + + std::tuple planeSubsamplingFactors(int planeIdx) const { + return PlaneSubsamplingFactors(fPlaneConfig, fSubsampling, planeIdx); + } + + /** + * Dimensions of the full resolution image (after planes have been oriented to how the image + * is displayed as indicated by fOrigin). + */ + SkISize dimensions() const { return fDimensions; } + int width() const { return fDimensions.width(); } + int height() const { return fDimensions.height(); } + + SkYUVColorSpace yuvColorSpace() const { return fYUVColorSpace; } + Siting sitingX() const { return fSitingX; } + Siting sitingY() const { return fSitingY; } + + SkEncodedOrigin origin() const { return fOrigin; } + + SkMatrix originMatrix() const { + return SkEncodedOriginToMatrix(fOrigin, this->width(), this->height()); + } + SkMatrix inverseOriginMatrix() const { + return SkEncodedOriginToMatrixInverse(fOrigin, this->width(), this->height()); + } + + bool hasAlpha() const { return HasAlpha(fPlaneConfig); } + + /** + * Returns the number of planes and initializes planeDimensions[0]..planeDimensions[] to + * the expected dimensions for each plane. Dimensions are as stored in memory, before + * transformation to image display space as indicated by origin(). + */ + int planeDimensions(SkISize planeDimensions[kMaxPlanes]) const { + return PlaneDimensions(fDimensions, fPlaneConfig, fSubsampling, fOrigin, planeDimensions); + } + + /** + * Given a per-plane row bytes, determine size to allocate for all planes. Optionally retrieves + * the per-plane byte sizes in planeSizes if not null. If total size overflows will return + * SIZE_MAX and set all planeSizes to SIZE_MAX. + */ + size_t computeTotalBytes(const size_t rowBytes[kMaxPlanes], + size_t planeSizes[kMaxPlanes] = nullptr) const; + + int numPlanes() const { return NumPlanes(fPlaneConfig); } + + int numChannelsInPlane(int i) const { return NumChannelsInPlane(fPlaneConfig, i); } + + /** + * Given a set of channel flags for each plane, converts this->planeConfig() to YUVALocations + * representation. Fails if the channel flags aren't valid for the PlaneConfig (i.e. don't have + * enough channels in a plane) by returning default initialized locations (all plane indices are + * -1). + */ + YUVALocations toYUVALocations(const uint32_t* channelFlags) const; + + /** + * Makes a SkYUVAInfo that is identical to this one but with the passed Subsampling. If the + * passed Subsampling is not k444 and this info's PlaneConfig is not compatible with chroma + * subsampling (because Y is in the same plane as UV) then the result will be an invalid + * SkYUVAInfo. + */ + SkYUVAInfo makeSubsampling(SkYUVAInfo::Subsampling) const; + + /** + * Makes a SkYUVAInfo that is identical to this one but with the passed dimensions. If the + * passed dimensions is empty then the result will be an invalid SkYUVAInfo. + */ + SkYUVAInfo makeDimensions(SkISize) const; + + bool operator==(const SkYUVAInfo& that) const; + bool operator!=(const SkYUVAInfo& that) const { return !(*this == that); } + + bool isValid() const { return fPlaneConfig != PlaneConfig::kUnknown; } + +private: + SkISize fDimensions = {0, 0}; + + PlaneConfig fPlaneConfig = PlaneConfig::kUnknown; + Subsampling fSubsampling = Subsampling::kUnknown; + + SkYUVColorSpace fYUVColorSpace = SkYUVColorSpace::kIdentity_SkYUVColorSpace; + + /** + * YUVA data often comes from formats like JPEG that support EXIF orientation. + * Code that operates on the raw YUV data often needs to know that orientation. + */ + SkEncodedOrigin fOrigin = kTopLeft_SkEncodedOrigin; + + Siting fSitingX = Siting::kCentered; + Siting fSitingY = Siting::kCentered; +}; + +constexpr int SkYUVAInfo::NumPlanes(PlaneConfig planeConfig) { + switch (planeConfig) { + case PlaneConfig::kUnknown: return 0; + case PlaneConfig::kY_U_V: return 3; + case PlaneConfig::kY_V_U: return 3; + case PlaneConfig::kY_UV: return 2; + case PlaneConfig::kY_VU: return 2; + case PlaneConfig::kYUV: return 1; + case PlaneConfig::kUYV: return 1; + case PlaneConfig::kY_U_V_A: return 4; + case PlaneConfig::kY_V_U_A: return 4; + case PlaneConfig::kY_UV_A: return 3; + case PlaneConfig::kY_VU_A: return 3; + case PlaneConfig::kYUVA: return 1; + case PlaneConfig::kUYVA: return 1; + } + SkUNREACHABLE; +} + +constexpr int SkYUVAInfo::NumChannelsInPlane(PlaneConfig config, int i) { + switch (config) { + case PlaneConfig::kUnknown: + return 0; + + case SkYUVAInfo::PlaneConfig::kY_U_V: + case SkYUVAInfo::PlaneConfig::kY_V_U: + return i >= 0 && i < 3 ? 1 : 0; + case SkYUVAInfo::PlaneConfig::kY_UV: + case SkYUVAInfo::PlaneConfig::kY_VU: + switch (i) { + case 0: return 1; + case 1: return 2; + default: return 0; + } + case SkYUVAInfo::PlaneConfig::kYUV: + case SkYUVAInfo::PlaneConfig::kUYV: + return i == 0 ? 3 : 0; + case SkYUVAInfo::PlaneConfig::kY_U_V_A: + case SkYUVAInfo::PlaneConfig::kY_V_U_A: + return i >= 0 && i < 4 ? 1 : 0; + case SkYUVAInfo::PlaneConfig::kY_UV_A: + case SkYUVAInfo::PlaneConfig::kY_VU_A: + switch (i) { + case 0: return 1; + case 1: return 2; + case 2: return 1; + default: return 0; + } + case SkYUVAInfo::PlaneConfig::kYUVA: + case SkYUVAInfo::PlaneConfig::kUYVA: + return i == 0 ? 4 : 0; + } + return 0; +} + +#endif diff --git a/vendor/artifacts/skia/include/core/SkYUVAPixmaps.h b/vendor/artifacts/skia/include/core/SkYUVAPixmaps.h new file mode 100644 index 000000000..e3ceb818f --- /dev/null +++ b/vendor/artifacts/skia/include/core/SkYUVAPixmaps.h @@ -0,0 +1,335 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkYUVAPixmaps_DEFINED +#define SkYUVAPixmaps_DEFINED + +#include "include/core/SkColorType.h" +#include "include/core/SkData.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkPixmap.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/core/SkTypes.h" +#include "include/core/SkYUVAInfo.h" +#include "include/private/base/SkTo.h" + +#include +#include +#include +#include + +/** + * SkYUVAInfo combined with per-plane SkColorTypes and row bytes. Fully specifies the SkPixmaps + * for a YUVA image without the actual pixel memory and data. + */ +class SK_API SkYUVAPixmapInfo { +public: + static constexpr auto kMaxPlanes = SkYUVAInfo::kMaxPlanes; + + using PlaneConfig = SkYUVAInfo::PlaneConfig; + using Subsampling = SkYUVAInfo::Subsampling; + + /** + * Data type for Y, U, V, and possibly A channels independent of how values are packed into + * planes. + **/ + enum class DataType { + kUnorm8, ///< 8 bit unsigned normalized + kUnorm16, ///< 16 bit unsigned normalized + kFloat16, ///< 16 bit (half) floating point + kUnorm10_Unorm2, ///< 10 bit unorm for Y, U, and V. 2 bit unorm for alpha (if present). + + kLast = kUnorm10_Unorm2 + }; + static constexpr int kDataTypeCnt = static_cast(DataType::kLast) + 1; + + class SK_API SupportedDataTypes { + public: + /** Defaults to nothing supported. */ + constexpr SupportedDataTypes() = default; + + /** All legal combinations of PlaneConfig and DataType are supported. */ + static constexpr SupportedDataTypes All(); + + /** + * Checks whether there is a supported combination of color types for planes structured + * as indicated by PlaneConfig with channel data types as indicated by DataType. + */ + constexpr bool supported(PlaneConfig, DataType) const; + + /** + * Update to add support for pixmaps with numChannel channels where each channel is + * represented as DataType. + */ + void enableDataType(DataType, int numChannels); + + private: + // The bit for DataType dt with n channels is at index kDataTypeCnt*(n-1) + dt. + std::bitset fDataTypeSupport = {}; + }; + + /** + * Gets the default SkColorType to use with numChannels channels, each represented as DataType. + * Returns kUnknown_SkColorType if no such color type. + */ + static constexpr SkColorType DefaultColorTypeForDataType(DataType dataType, int numChannels); + + /** + * If the SkColorType is supported for YUVA pixmaps this will return the number of YUVA channels + * that can be stored in a plane of this color type and what the DataType is of those channels. + * If the SkColorType is not supported as a YUVA plane the number of channels is reported as 0 + * and the DataType returned should be ignored. + */ + static std::tuple NumChannelsAndDataType(SkColorType); + + /** Default SkYUVAPixmapInfo is invalid. */ + SkYUVAPixmapInfo() = default; + + /** + * Initializes the SkYUVAPixmapInfo from a SkYUVAInfo with per-plane color types and row bytes. + * This will be invalid if the colorTypes aren't compatible with the SkYUVAInfo or if a + * rowBytes entry is not valid for the plane dimensions and color type. Color type and + * row byte values beyond the number of planes in SkYUVAInfo are ignored. All SkColorTypes + * must have the same DataType or this will be invalid. + * + * If rowBytes is nullptr then bpp*width is assumed for each plane. + */ + SkYUVAPixmapInfo(const SkYUVAInfo&, + const SkColorType[kMaxPlanes], + const size_t rowBytes[kMaxPlanes]); + /** + * Like above but uses DefaultColorTypeForDataType to determine each plane's SkColorType. If + * rowBytes is nullptr then bpp*width is assumed for each plane. + */ + SkYUVAPixmapInfo(const SkYUVAInfo&, DataType, const size_t rowBytes[kMaxPlanes]); + + SkYUVAPixmapInfo(const SkYUVAPixmapInfo&) = default; + + SkYUVAPixmapInfo& operator=(const SkYUVAPixmapInfo&) = default; + + bool operator==(const SkYUVAPixmapInfo&) const; + bool operator!=(const SkYUVAPixmapInfo& that) const { return !(*this == that); } + + const SkYUVAInfo& yuvaInfo() const { return fYUVAInfo; } + + SkYUVColorSpace yuvColorSpace() const { return fYUVAInfo.yuvColorSpace(); } + + /** The number of SkPixmap planes, 0 if this SkYUVAPixmapInfo is invalid. */ + int numPlanes() const { return fYUVAInfo.numPlanes(); } + + /** The per-YUV[A] channel data type. */ + DataType dataType() const { return fDataType; } + + /** + * Row bytes for the ith plane. Returns zero if this SkYUVAPixmapInfo is invalid. + */ + size_t rowBytes(int i) const { return fRowBytes[static_cast(i)]; } + + /** Image info for the ith plane */ + const SkImageInfo& planeInfo(int i) const { return fPlaneInfos[static_cast(i)]; } + + /** + * Determine size to allocate for all planes. Optionally retrieves the per-plane sizes in + * planeSizes if not null. If total size overflows will return SIZE_MAX and set all planeSizes + * to SIZE_MAX. Returns 0 and fills planesSizes with 0 if this SkYUVAPixmapInfo is not valid. + */ + size_t computeTotalBytes(size_t planeSizes[kMaxPlanes] = nullptr) const; + + /** + * Takes an allocation that is assumed to be at least computeTotalBytes() in size and configures + * the first numPlanes() entries in pixmaps array to point into that memory. The remaining + * entries of pixmaps are default initialized. Fails if this SkYUVAPixmapInfo not valid. + */ + bool initPixmapsFromSingleAllocation(void* memory, SkPixmap pixmaps[kMaxPlanes]) const; + + /** + * Returns true if this has been configured with a non-empty dimensioned SkYUVAInfo with + * compatible color types and row bytes. + */ + bool isValid() const { return fYUVAInfo.isValid(); } + + /** Is this valid and does it use color types allowed by the passed SupportedDataTypes? */ + bool isSupported(const SupportedDataTypes&) const; + +private: + SkYUVAInfo fYUVAInfo; + std::array fPlaneInfos = {}; + std::array fRowBytes = {}; + DataType fDataType = DataType::kUnorm8; + static_assert(kUnknown_SkColorType == 0, "default init isn't kUnknown"); +}; + +/** + * Helper to store SkPixmap planes as described by a SkYUVAPixmapInfo. Can be responsible for + * allocating/freeing memory for pixmaps or use external memory. + */ +class SK_API SkYUVAPixmaps { +public: + using DataType = SkYUVAPixmapInfo::DataType; + static constexpr auto kMaxPlanes = SkYUVAPixmapInfo::kMaxPlanes; + + static SkColorType RecommendedRGBAColorType(DataType); + + /** Allocate space for pixmaps' pixels in the SkYUVAPixmaps. */ + static SkYUVAPixmaps Allocate(const SkYUVAPixmapInfo& yuvaPixmapInfo); + + /** + * Use storage in SkData as backing store for pixmaps' pixels. SkData is retained by the + * SkYUVAPixmaps. + */ + static SkYUVAPixmaps FromData(const SkYUVAPixmapInfo&, sk_sp); + + /** + * Makes a deep copy of the src SkYUVAPixmaps. The returned SkYUVAPixmaps owns its planes' + * backing stores. + */ + static SkYUVAPixmaps MakeCopy(const SkYUVAPixmaps& src); + + /** + * Use passed in memory as backing store for pixmaps' pixels. Caller must ensure memory remains + * allocated while pixmaps are in use. There must be at least + * SkYUVAPixmapInfo::computeTotalBytes() allocated starting at memory. + */ + static SkYUVAPixmaps FromExternalMemory(const SkYUVAPixmapInfo&, void* memory); + + /** + * Wraps existing SkPixmaps. The SkYUVAPixmaps will have no ownership of the SkPixmaps' pixel + * memory so the caller must ensure it remains valid. Will return an invalid SkYUVAPixmaps if + * the SkYUVAInfo isn't compatible with the SkPixmap array (number of planes, plane dimensions, + * sufficient color channels in planes, ...). + */ + static SkYUVAPixmaps FromExternalPixmaps(const SkYUVAInfo&, const SkPixmap[kMaxPlanes]); + + /** Default SkYUVAPixmaps is invalid. */ + SkYUVAPixmaps() = default; + ~SkYUVAPixmaps() = default; + + SkYUVAPixmaps(SkYUVAPixmaps&& that) = default; + SkYUVAPixmaps& operator=(SkYUVAPixmaps&& that) = default; + SkYUVAPixmaps(const SkYUVAPixmaps&) = default; + SkYUVAPixmaps& operator=(const SkYUVAPixmaps& that) = default; + + /** Does have initialized pixmaps compatible with its SkYUVAInfo. */ + bool isValid() const { return !fYUVAInfo.dimensions().isEmpty(); } + + const SkYUVAInfo& yuvaInfo() const { return fYUVAInfo; } + + DataType dataType() const { return fDataType; } + + SkYUVAPixmapInfo pixmapsInfo() const; + + /** Number of pixmap planes or 0 if this SkYUVAPixmaps is invalid. */ + int numPlanes() const { return this->isValid() ? fYUVAInfo.numPlanes() : 0; } + + /** + * Access the SkPixmap planes. They are default initialized if this is not a valid + * SkYUVAPixmaps. + */ + const std::array& planes() const { return fPlanes; } + + /** + * Get the ith SkPixmap plane. SkPixmap will be default initialized if SkYUVAPixmaps is invalid. + */ + const SkPixmap& plane(int i) const { return fPlanes[SkToSizeT(i)]; } + + /** + * Computes a YUVALocations representation of the planar layout. The result is guaranteed to be + * valid if this->isValid(). + */ + SkYUVAInfo::YUVALocations toYUVALocations() const; + + /** Does this SkPixmaps own the backing store of the planes? */ + bool ownsStorage() const { return SkToBool(fData); } + +private: + SkYUVAPixmaps(const SkYUVAPixmapInfo&, sk_sp); + SkYUVAPixmaps(const SkYUVAInfo&, DataType, const SkPixmap[kMaxPlanes]); + + std::array fPlanes = {}; + sk_sp fData; + SkYUVAInfo fYUVAInfo; + DataType fDataType; +}; + +////////////////////////////////////////////////////////////////////////////// + +constexpr SkYUVAPixmapInfo::SupportedDataTypes SkYUVAPixmapInfo::SupportedDataTypes::All() { + using ULL = unsigned long long; // bitset cons. takes this. + ULL bits = 0; + for (ULL c = 1; c <= 4; ++c) { + for (ULL dt = 0; dt <= ULL(kDataTypeCnt); ++dt) { + if (DefaultColorTypeForDataType(static_cast(dt), + static_cast(c)) != kUnknown_SkColorType) { + bits |= ULL(1) << (dt + static_cast(kDataTypeCnt)*(c - 1)); + } + } + } + SupportedDataTypes combinations; + combinations.fDataTypeSupport = bits; + return combinations; +} + +constexpr bool SkYUVAPixmapInfo::SupportedDataTypes::supported(PlaneConfig config, + DataType type) const { + int n = SkYUVAInfo::NumPlanes(config); + for (int i = 0; i < n; ++i) { + auto c = static_cast(SkYUVAInfo::NumChannelsInPlane(config, i)); + SkASSERT(c >= 1 && c <= 4); + if (!fDataTypeSupport[static_cast(type) + + (c - 1)*static_cast(kDataTypeCnt)]) { + return false; + } + } + return true; +} + +constexpr SkColorType SkYUVAPixmapInfo::DefaultColorTypeForDataType(DataType dataType, + int numChannels) { + switch (numChannels) { + case 1: + switch (dataType) { + case DataType::kUnorm8: return kGray_8_SkColorType; + case DataType::kUnorm16: return kA16_unorm_SkColorType; + case DataType::kFloat16: return kA16_float_SkColorType; + case DataType::kUnorm10_Unorm2: return kUnknown_SkColorType; + } + break; + case 2: + switch (dataType) { + case DataType::kUnorm8: return kR8G8_unorm_SkColorType; + case DataType::kUnorm16: return kR16G16_unorm_SkColorType; + case DataType::kFloat16: return kR16G16_float_SkColorType; + case DataType::kUnorm10_Unorm2: return kUnknown_SkColorType; + } + break; + case 3: + // None of these are tightly packed. The intended use case is for interleaved YUVA + // planes where we're forcing opaqueness by ignoring the alpha values. + // There are "x" rather than "A" variants for Unorm8 and Unorm10_Unorm2 but we don't + // choose them because 1) there is no inherent advantage and 2) there is better support + // in the GPU backend for the "A" versions. + switch (dataType) { + case DataType::kUnorm8: return kRGBA_8888_SkColorType; + case DataType::kUnorm16: return kR16G16B16A16_unorm_SkColorType; + case DataType::kFloat16: return kRGBA_F16_SkColorType; + case DataType::kUnorm10_Unorm2: return kRGBA_1010102_SkColorType; + } + break; + case 4: + switch (dataType) { + case DataType::kUnorm8: return kRGBA_8888_SkColorType; + case DataType::kUnorm16: return kR16G16B16A16_unorm_SkColorType; + case DataType::kFloat16: return kRGBA_F16_SkColorType; + case DataType::kUnorm10_Unorm2: return kRGBA_1010102_SkColorType; + } + break; + } + return kUnknown_SkColorType; +} + +#endif diff --git a/vendor/artifacts/skia/include/docs/BUILD.bazel b/vendor/artifacts/skia/include/docs/BUILD.bazel new file mode 100644 index 000000000..b00abd7ee --- /dev/null +++ b/vendor/artifacts/skia/include/docs/BUILD.bazel @@ -0,0 +1,48 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +XPS_HDRS = ["SkXPSDocument.h"] + +MULTI_PICTURE_DOCUMENT_HDRS = ["SkMultiPictureDocument.h"] + +PDF_HDRS = ["SkPDFDocument.h"] + +PDF_JPEG_HDRS = ["SkPDFJpegHelpers.h"] + +# Not yet referenced by Bazel build. +# In separate group for exporting to xps.gni:skia_xps_public. +skia_filegroup( + name = "xps_hdrs", + srcs = XPS_HDRS, +) + +skia_filegroup( + name = "multi_picture_document_hdrs", + srcs = MULTI_PICTURE_DOCUMENT_HDRS, + visibility = ["//src/utils:__pkg__"], +) + +skia_filegroup( + name = "pdf_hdrs", + srcs = PDF_HDRS, + visibility = ["//src/pdf:__pkg__"], +) + +skia_filegroup( + name = "pdf_jpeg_hdrs", + srcs = PDF_JPEG_HDRS, + visibility = ["//src/pdf:__pkg__"], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = XPS_HDRS + + MULTI_PICTURE_DOCUMENT_HDRS + + PDF_HDRS + + PDF_JPEG_HDRS, +) diff --git a/vendor/artifacts/skia/include/docs/SkMultiPictureDocument.h b/vendor/artifacts/skia/include/docs/SkMultiPictureDocument.h new file mode 100644 index 000000000..5b8b8063b --- /dev/null +++ b/vendor/artifacts/skia/include/docs/SkMultiPictureDocument.h @@ -0,0 +1,53 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkMultiPictureDocument_DEFINED +#define SkMultiPictureDocument_DEFINED + +#include "include/core/SkPicture.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/core/SkTypes.h" + +#include + +class SkDocument; +class SkStreamSeekable; +class SkWStream; +struct SkDeserialProcs; +struct SkSerialProcs; + +struct SkDocumentPage { + sk_sp fPicture; + SkSize fSize; +}; + +namespace SkMultiPictureDocument { +/** + * Writes into a file format that is similar to SkPicture::serialize() + * Accepts a callback for endPage behavior + */ +SK_API sk_sp Make(SkWStream* dst, const SkSerialProcs* = nullptr, + std::function onEndPage = nullptr); + +/** + * Returns the number of pages in the SkMultiPictureDocument. + */ +SK_API int ReadPageCount(SkStreamSeekable* src); + +/** + * Read the SkMultiPictureDocument into the provided array of pages. + * dstArrayCount must equal SkMultiPictureDocumentReadPageCount(). + * Return false on error. + */ +SK_API bool Read(SkStreamSeekable* src, + SkDocumentPage* dstArray, + int dstArrayCount, + const SkDeserialProcs* = nullptr); +} // namespace SkMultiPictureDocument + +#endif // SkMultiPictureDocument_DEFINED diff --git a/vendor/artifacts/skia/include/docs/SkPDFDocument.h b/vendor/artifacts/skia/include/docs/SkPDFDocument.h new file mode 100644 index 000000000..4f7f612ef --- /dev/null +++ b/vendor/artifacts/skia/include/docs/SkPDFDocument.h @@ -0,0 +1,271 @@ +// Copyright 2018 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. +#ifndef SkPDFDocument_DEFINED +#define SkPDFDocument_DEFINED + +#include "include/core/SkDocument.h" +#include "include/core/SkMilestone.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSpan.h" +#include "include/core/SkString.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkMacros.h" +#include "include/private/base/SkNoncopyable.h" + +#include +#include +#include + +class SkCanvas; +class SkCodec; +class SkData; +class SkExecutor; +class SkPDFArray; +class SkPDFStructTree; +class SkPixmap; +class SkWStream; + +namespace SkPDF { + +/** Attributes for nodes in the PDF tree. + * + * Each attribute must have an owner (e.g. "Layout", "List", "Table", etc) + * and an attribute name (e.g. "BBox", "RowSpan", etc.) from PDF32000_2008 14.8.5, + * and then a value of the proper type according to the spec. + * + * Parameters of type `const char*` will not be copied and the pointers must remain valid until + * `SkDocument::close` or `SkDocument::abort` is called. + * Names are expected to be constants and are taken as `const char*`. + * Parameters not taken as `const char*` will be copied. + */ +class SK_API AttributeList : SkNoncopyable { +public: + AttributeList(); + ~AttributeList(); + + void appendInt(const char* owner, const char* name, int value); + void appendFloat(const char* owner, const char* name, float value); + void appendName(const char* owner, const char* name, const char* value); + void appendTextString(const char* owner, const char* name, const char* value); + void appendTextString(const char* owner, const char* name, SkString value); + void appendFloatArray(const char* owner, const char* name, SkSpan value); + void appendNodeIdArray(const char* owner, const char* name, SkSpan nodeIds); + +private: + friend class ::SkPDFStructTree; + + std::unique_ptr fAttrs; + std::vector fElemIds; // element identifiers referenced by fAttrs +}; + +/** A node in a PDF structure tree, giving a semantic representation + of the content. Each node ID is associated with content + by passing the SkCanvas and node ID to SkPDF::SetNodeId() when drawing. + NodeIDs should be unique within each tree. +*/ +struct StructureElementNode { + SkString fTypeString; + std::vector> fChildVector; + int fNodeId = 0; + AttributeList fAttributes; + SkString fAlt; + SkString fLang; +}; + +struct DateTime { + int16_t fTimeZoneMinutes; // The number of minutes that this + // is ahead of or behind UTC. + uint16_t fYear; //!< e.g. 2005 + uint8_t fMonth; //!< 1..12 + uint8_t fDayOfWeek; //!< 0..6, 0==Sunday + uint8_t fDay; //!< 1..31 + uint8_t fHour; //!< 0..23 + uint8_t fMinute; //!< 0..59 + uint8_t fSecond; //!< 0..59 + + void toISO8601(SkString* dst) const; +}; + +using DecodeJpegCallback = std::unique_ptr (*)(sk_sp); +using EncodeJpegCallback = bool (*)(SkWStream* dst, const SkPixmap& src, int quality); + +/** Optional metadata to be passed into the PDF factory function. +*/ +struct Metadata { + /** The document's title. + */ + SkString fTitle; + + /** The name of the person who created the document. + */ + SkString fAuthor; + + /** The subject of the document. + */ + SkString fSubject; + + /** Keywords associated with the document. Commas may be used to delineate + keywords within the string. + */ + SkString fKeywords; + + /** If the document was converted to PDF from another format, + the name of the conforming product that created the + original document from which it was converted. + */ + SkString fCreator; + + /** The product that is converting this document to PDF. + */ + SkString fProducer = SkString("Skia/PDF m" SK_MACRO_STRINGIFY(SK_MILESTONE)); + + /** The date and time the document was created. + The zero default value represents an unknown/unset time. + */ + DateTime fCreation = {0, 0, 0, 0, 0, 0, 0, 0}; + + /** The date and time the document was most recently modified. + The zero default value represents an unknown/unset time. + */ + DateTime fModified = {0, 0, 0, 0, 0, 0, 0, 0}; + + /** The natural language of the text in the PDF. If fLang is empty, the root + StructureElementNode::fLang will be used (if not empty). Text not in + this language should be marked with StructureElementNode::fLang. + */ + SkString fLang; + + /** The DPI (pixels-per-inch) at which features without native PDF support + will be rasterized (e.g. draw image with perspective, draw text with + perspective, ...) A larger DPI would create a PDF that reflects the + original intent with better fidelity, but it can make for larger PDF + files too, which would use more memory while rendering, and it would be + slower to be processed or sent online or to printer. + */ + SkScalar fRasterDPI = SK_ScalarDefaultRasterDPI; + + /** If true, include XMP metadata, a document UUID, and sRGB output intent + information. This adds length to the document and makes it + non-reproducable, but are necessary features for PDF/A-2b conformance + */ + bool fPDFA = false; + + /** Encoding quality controls the trade-off between size and quality. By + default this is set to 101 percent, which corresponds to lossless + encoding. If this value is set to a value <= 100, and the image is + opaque, it will be encoded (using JPEG) with that quality setting. + */ + int fEncodingQuality = 101; + + /** An optional tree of structured document tags that provide + a semantic representation of the content. The caller + should retain ownership. + */ + StructureElementNode* fStructureElementTreeRoot = nullptr; + + enum class Outline : int { + None = 0, + StructureElementHeaders = 1, + StructureElements = 2, + } fOutline = Outline::None; + + /** Executor to handle threaded work within PDF Backend. If this is nullptr, + then all work will be done serially on the main thread. To have worker + threads assist with various tasks, set this to a valid SkExecutor + instance. Currently used for executing Deflate algorithm in parallel. + + If set, the PDF output will be non-reproducible in the order and + internal numbering of objects, but should render the same. + + Experimental. + */ + SkExecutor* fExecutor = nullptr; + + /** PDF streams may be compressed to save space. + Use this to specify the desired compression vs time tradeoff. + */ + enum class CompressionLevel : int { + Default = -1, + None = 0, + LowButFast = 1, + Average = 6, + HighButSlow = 9, + } fCompressionLevel = CompressionLevel::Default; + + /** Preferred Subsetter. */ + enum Subsetter { + kHarfbuzz_Subsetter, + } fSubsetter = kHarfbuzz_Subsetter; + + /** Clients can provide a way to decode jpeg. To use Skia's JPEG decoder, pass in + SkJpegDecoder::Decode. If not supplied, all images will need to be re-encoded + as jpegs or deflated images before embedding. If supplied, Skia may be able to + skip the re-encoding step. + Skia's JPEG decoder can be used here. + */ + SkPDF::DecodeJpegCallback jpegDecoder = nullptr; + + /** Clients can provide a way to encode jpeg. If not supplied, images will be embedded + as a deflated image, potentially making them much larger. If clients provide + their own implementation, JPEGs should be encoded to RGB (not YUV) otherwise they + will have the wrong surrounding metadata provided by Skia. + Skia's JPEG encoder can be used here. + */ + SkPDF::EncodeJpegCallback jpegEncoder = nullptr; + + // Skia's PDF support depends on having both a jpeg encoder and decoder for writing + // compact PDFs. It will technically work, but produce larger than optimal PDFs + // if either the decoder or encoder are left as nullptr. If clients will be creating + // PDFs that don't use images or otherwise want to incur this cost (with the upside + // of not having a jpeg library), they should set this to true to avoid an internal + // assert from firing. + bool allowNoJpegs = false; +}; + +namespace NodeID { +static const constexpr int Nothing = 0; +static const constexpr int OtherArtifact = -1; +static const constexpr int PaginationArtifact = -2; +static const constexpr int PaginationHeaderArtifact = -3; +static const constexpr int PaginationFooterArtifact = -4; +static const constexpr int PaginationWatermarkArtifact = -5; +static const constexpr int LayoutArtifact = -6; +static const constexpr int PageArtifact = -7; +static const constexpr int BackgroundArtifact = -8; +} // namespace NodeID + +/** Associate a node ID with subsequent drawing commands in an + SkCanvas. The same node ID can appear in a StructureElementNode + in order to associate a document's structure element tree with + its content. + + A node ID of zero indicates no node ID. Negative node IDs are reserved. + + @param canvas The canvas used to draw to the PDF. + @param nodeId The node ID for subsequent drawing commands. +*/ +SK_API void SetNodeId(SkCanvas* dst, int nodeID); + +/** Create a PDF-backed document, writing the results into a SkWStream. + + PDF pages are sized in point units. 1 pt == 1/72 inch == 127/360 mm. + + @param stream A PDF document will be written to this stream. The document may write + to the stream at anytime during its lifetime, until either close() is + called or the document is deleted. + @param metadata a PDFmetadata object. Some fields may be left empty. + + @returns NULL if there is an error, otherwise a newly created PDF-backed SkDocument. +*/ +SK_API sk_sp MakeDocument(SkWStream* stream, const Metadata& metadata); + +#if !defined(SK_DISABLE_LEGACY_PDF_JPEG) +static inline sk_sp MakeDocument(SkWStream* stream) { + return MakeDocument(stream, Metadata()); +} +#endif + +} // namespace SkPDF + +#endif // SkPDFDocument_DEFINED diff --git a/vendor/artifacts/skia/include/docs/SkPDFJpegHelpers.h b/vendor/artifacts/skia/include/docs/SkPDFJpegHelpers.h new file mode 100644 index 000000000..469569e86 --- /dev/null +++ b/vendor/artifacts/skia/include/docs/SkPDFJpegHelpers.h @@ -0,0 +1,41 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkPDFJPEGHelpers_DEFINED +#define SkPDFJPEGHelpers_DEFINED + +#include "include/codec/SkJpegDecoder.h" +#include "include/core/SkData.h" +#include "include/core/SkRefCnt.h" +#include "include/docs/SkPDFDocument.h" +#include "include/encode/SkJpegEncoder.h" + +class SkPixmap; +class SkWStream; + +#include + +namespace SkPDF::JPEG { +inline std::unique_ptr Decode(sk_sp data) { + return SkJpegDecoder::Decode(data, nullptr, nullptr); +} + +inline bool Encode(SkWStream* dst, const SkPixmap& src, int quality) { + SkJpegEncoder::Options jOpts; + jOpts.fQuality = quality; + return SkJpegEncoder::Encode(dst, src, jOpts); +} + +inline SkPDF::Metadata MetadataWithCallbacks() { + SkPDF::Metadata m; + m.jpegDecoder = SkPDF::JPEG::Decode; + m.jpegEncoder = SkPDF::JPEG::Encode; + return m; +} + +} // namespace SkPDF::JPEG + +#endif diff --git a/vendor/artifacts/skia/include/docs/SkXPSDocument.h b/vendor/artifacts/skia/include/docs/SkXPSDocument.h new file mode 100644 index 000000000..e8d3aa4a4 --- /dev/null +++ b/vendor/artifacts/skia/include/docs/SkXPSDocument.h @@ -0,0 +1,43 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkXPSDocument_DEFINED +#define SkXPSDocument_DEFINED + +#include "include/core/SkTypes.h" + +#ifdef SK_BUILD_FOR_WIN + +#include "include/core/SkDocument.h" + +struct IXpsOMObjectFactory; +class SKWStream; +class SkPixmap; + +namespace SkXPS { + +using EncodePngCallback = bool (*)(SkWStream* dst, const SkPixmap& src); + +struct Options { + float dpi = SK_ScalarDefaultRasterDPI; + + /** Clients can provide a way to encode png. */ + EncodePngCallback pngEncoder = nullptr; + + /** Skia's XPS support depends on having a png encoder registered to handle + * XPS image brushes. Clients that create XPS documents without images may + * set `allowNoPngs` to true to acknowledge this. + */ + bool allowNoPngs = false; +}; + +SK_API sk_sp MakeDocument(SkWStream* stream, + IXpsOMObjectFactory* xpsFactory, + Options opts); +} // namespace SkXPS +#endif // SK_BUILD_FOR_WIN +#endif // SkXPSDocument_DEFINED diff --git a/vendor/artifacts/skia/include/effects/BUILD.bazel b/vendor/artifacts/skia/include/effects/BUILD.bazel new file mode 100644 index 000000000..aa310ca7f --- /dev/null +++ b/vendor/artifacts/skia/include/effects/BUILD.bazel @@ -0,0 +1,50 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_IMAGEFILTERS_HDRS = ["SkImageFilters.h"] + +PUBLIC_HEADERS = [ + "Sk1DPathEffect.h", + "Sk2DPathEffect.h", + "SkBlenders.h", + "SkBlurMaskFilter.h", + "SkColorMatrix.h", + "SkColorMatrixFilter.h", + "SkCornerPathEffect.h", + "SkDashPathEffect.h", + "SkDiscretePathEffect.h", + "SkGradient.h", + "SkHighContrastFilter.h", + "SkLumaColorFilter.h", + "SkOverdrawColorFilter.h", + "SkPerlinNoiseShader.h", + "SkRuntimeEffect.h", + "SkShaderMaskFilter.h", + "SkTableMaskFilter.h", + "SkTrimPathEffect.h", +] + +# In a separate file group so that these file(s) can be mapped +# into the gn/effects_imagefilters.gni file when exporting. +skia_filegroup( + name = "public_imagefilters_hdrs", + srcs = PUBLIC_IMAGEFILTERS_HDRS, +) + +skia_filegroup( + name = "core_hdrs", + srcs = PUBLIC_HEADERS + PUBLIC_IMAGEFILTERS_HDRS, + visibility = [ + "//src/core:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS + PUBLIC_IMAGEFILTERS_HDRS, +) diff --git a/vendor/artifacts/skia/include/effects/Sk1DPathEffect.h b/vendor/artifacts/skia/include/effects/Sk1DPathEffect.h new file mode 100644 index 000000000..fd05c52df --- /dev/null +++ b/vendor/artifacts/skia/include/effects/Sk1DPathEffect.h @@ -0,0 +1,40 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef Sk1DPathEffect_DEFINED +#define Sk1DPathEffect_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +class SkPath; +class SkPathEffect; + +class SK_API SkPath1DPathEffect { +public: + enum Style { + kTranslate_Style, // translate the shape to each position + kRotate_Style, // rotate the shape about its center + kMorph_Style, // transform each point, and turn lines into curves + + kLastEnum_Style = kMorph_Style, + }; + + /** Dash by replicating the specified path. + @param path The path to replicate (dash) + @param advance The space between instances of path + @param phase distance (mod advance) along path for its initial position + @param style how to transform path at each point (based on the current + position and tangent) + */ + static sk_sp Make(const SkPath& path, SkScalar advance, SkScalar phase, Style); + + static void RegisterFlattenables(); +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/Sk2DPathEffect.h b/vendor/artifacts/skia/include/effects/Sk2DPathEffect.h new file mode 100644 index 000000000..b8b3ba398 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/Sk2DPathEffect.h @@ -0,0 +1,33 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef Sk2DPathEffect_DEFINED +#define Sk2DPathEffect_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +class SkMatrix; +class SkPath; +class SkPathEffect; + +class SK_API SkLine2DPathEffect { +public: + static sk_sp Make(SkScalar width, const SkMatrix& matrix); + + static void RegisterFlattenables(); +}; + +class SK_API SkPath2DPathEffect { +public: + static sk_sp Make(const SkMatrix& matrix, const SkPath& path); + + static void RegisterFlattenables(); +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkBlenders.h b/vendor/artifacts/skia/include/effects/SkBlenders.h new file mode 100644 index 000000000..7507071b0 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkBlenders.h @@ -0,0 +1,27 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkBlenders_DEFINED +#define SkBlenders_DEFINED + +#include "include/core/SkBlender.h" + +class SK_API SkBlenders { +public: + /** + * Create a blender that implements the following: + * k1 * src * dst + k2 * src + k3 * dst + k4 + * @param k1, k2, k3, k4 The four coefficients. + * @param enforcePMColor If true, the RGB channels will be clamped to the calculated alpha. + */ + static sk_sp Arithmetic(float k1, float k2, float k3, float k4, bool enforcePremul); + +private: + SkBlenders() = delete; +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkBlurMaskFilter.h b/vendor/artifacts/skia/include/effects/SkBlurMaskFilter.h new file mode 100644 index 000000000..1b9319869 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkBlurMaskFilter.h @@ -0,0 +1,35 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkBlurMaskFilter_DEFINED +#define SkBlurMaskFilter_DEFINED + +// we include this since our callers will need to at least be able to ref/unref +#include "include/core/SkBlurTypes.h" +#include "include/core/SkMaskFilter.h" +#include "include/core/SkRect.h" +#include "include/core/SkScalar.h" + +class SkRRect; + +class SK_API SkBlurMaskFilter { +public: +#ifdef SK_SUPPORT_LEGACY_EMBOSSMASKFILTER + /** Create an emboss maskfilter + @param blurSigma standard deviation of the Gaussian blur to apply + before applying lighting (e.g. 3) + @param direction array of 3 scalars [x, y, z] specifying the direction of the light source + @param ambient 0...1 amount of ambient light + @param specular coefficient for specular highlights (e.g. 8) + @return the emboss maskfilter + */ + static sk_sp MakeEmboss(SkScalar blurSigma, const SkScalar direction[3], + SkScalar ambient, SkScalar specular); +#endif +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkColorMatrix.h b/vendor/artifacts/skia/include/effects/SkColorMatrix.h new file mode 100644 index 000000000..5092278f0 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkColorMatrix.h @@ -0,0 +1,57 @@ +/* + * Copyright 2007 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkColorMatrix_DEFINED +#define SkColorMatrix_DEFINED + +#include "include/core/SkTypes.h" + +#include +#include + +enum SkYUVColorSpace : int; + +class SK_API SkColorMatrix { +public: + constexpr SkColorMatrix() : SkColorMatrix(1, 0, 0, 0, 0, + 0, 1, 0, 0, 0, + 0, 0, 1, 0, 0, + 0, 0, 0, 1, 0) {} + + constexpr SkColorMatrix(float m00, float m01, float m02, float m03, float m04, + float m10, float m11, float m12, float m13, float m14, + float m20, float m21, float m22, float m23, float m24, + float m30, float m31, float m32, float m33, float m34) + : fMat { m00, m01, m02, m03, m04, + m10, m11, m12, m13, m14, + m20, m21, m22, m23, m24, + m30, m31, m32, m33, m34 } {} + + static SkColorMatrix RGBtoYUV(SkYUVColorSpace); + static SkColorMatrix YUVtoRGB(SkYUVColorSpace); + + void setIdentity(); + void setScale(float rScale, float gScale, float bScale, float aScale = 1.0f); + + void postTranslate(float dr, float dg, float db, float da); + + void setConcat(const SkColorMatrix& a, const SkColorMatrix& b); + void preConcat(const SkColorMatrix& mat) { this->setConcat(*this, mat); } + void postConcat(const SkColorMatrix& mat) { this->setConcat(mat, *this); } + + void setSaturation(float sat); + + void setRowMajor(const float src[20]) { std::copy_n(src, 20, fMat.begin()); } + void getRowMajor(float dst[20]) const { std::copy_n(fMat.begin(), 20, dst); } + +private: + std::array fMat; + + friend class SkColorFilters; +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkColorMatrixFilter.h b/vendor/artifacts/skia/include/effects/SkColorMatrixFilter.h new file mode 100644 index 000000000..3e5337b0c --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkColorMatrixFilter.h @@ -0,0 +1,22 @@ +/* + * Copyright 2007 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkColorMatrixFilter_DEFINED +#define SkColorMatrixFilter_DEFINED + +#include "include/core/SkColorFilter.h" + +// (DEPRECATED) This factory function is deprecated. Please use the one in +// SkColorFilters (i.e., Lighting). +class SK_API SkColorMatrixFilter : public SkColorFilter { +public: + static sk_sp MakeLightingFilter(SkColor mul, SkColor add) { + return SkColorFilters::Lighting(mul, add); + } +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkCornerPathEffect.h b/vendor/artifacts/skia/include/effects/SkCornerPathEffect.h new file mode 100644 index 000000000..7f7e7159f --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkCornerPathEffect.h @@ -0,0 +1,32 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCornerPathEffect_DEFINED +#define SkCornerPathEffect_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +class SkPathEffect; + +/** \class SkCornerPathEffect + + SkCornerPathEffect is a subclass of SkPathEffect that can turn sharp corners + into various treatments (e.g. rounded corners) +*/ +class SK_API SkCornerPathEffect { +public: + /** radius must be > 0 to have an effect. It specifies the distance from each corner + that should be "rounded". + */ + static sk_sp Make(SkScalar radius); + + static void RegisterFlattenables(); +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkDashPathEffect.h b/vendor/artifacts/skia/include/effects/SkDashPathEffect.h new file mode 100644 index 000000000..796336129 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkDashPathEffect.h @@ -0,0 +1,43 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkDashPathEffect_DEFINED +#define SkDashPathEffect_DEFINED + +#include "include/core/SkPathEffect.h" // IWYU pragma: keep (for unspanned apis) +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" + +class SK_API SkDashPathEffect { +public: + /** intervals: array containing an even number of entries (>=2), with + the even indices specifying the length of "on" intervals, and the odd + indices specifying the length of "off" intervals. This array will be + copied in Make, and can be disposed of freely after. + count: number of elements in the intervals array + phase: offset into the intervals array (mod the sum of all of the + intervals). + + For example: if intervals[] = {10, 20}, count = 2, and phase = 25, + this will set up a dashed path like so: + 5 pixels off + 10 pixels on + 20 pixels off + 10 pixels on + 20 pixels off + ... + A phase of -5, 25, 55, 85, etc. would all result in the same path, + because the sum of all the intervals is 30. + + Note: only affects stroked paths. + */ + static sk_sp Make(SkSpan intervals, SkScalar phase); +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkDiscretePathEffect.h b/vendor/artifacts/skia/include/effects/SkDiscretePathEffect.h new file mode 100644 index 000000000..6054cbdc9 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkDiscretePathEffect.h @@ -0,0 +1,37 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkDiscretePathEffect_DEFINED +#define SkDiscretePathEffect_DEFINED + +#include "include/core/SkPathEffect.h" + +/** \class SkDiscretePathEffect + + This path effect chops a path into discrete segments, and randomly displaces them. +*/ +class SK_API SkDiscretePathEffect { +public: + /** Break the path into segments of segLength length, and randomly move the endpoints + away from the original path by a maximum of deviation. + Note: works on filled or framed paths + + @param seedAssist This is a caller-supplied seedAssist that modifies + the seed value that is used to randomize the path + segments' endpoints. If not supplied it defaults to 0, + in which case filtering a path multiple times will + result in the same set of segments (this is useful for + testing). If a caller does not want this behaviour + they can pass in a different seedAssist to get a + different set of path segments. + */ + static sk_sp Make(SkScalar segLength, SkScalar dev, uint32_t seedAssist = 0); + + static void RegisterFlattenables(); +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkGradient.h b/vendor/artifacts/skia/include/effects/SkGradient.h new file mode 100644 index 000000000..4f5cc36d6 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkGradient.h @@ -0,0 +1,206 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkGradient_DEFINED +#define SkGradient_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkColorSpace.h" +#include "include/core/SkPoint.h" +#include "include/core/SkShader.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTileMode.h" +#include "include/private/base/SkAPI.h" + +class SkMatrix; + +class SkGradient { +public: + struct Interpolation { + enum class InPremul : bool { kNo = false, kYes = true }; + + enum class ColorSpace : uint8_t { + // Default Skia behavior: interpolate in the color space of the destination surface + kDestination, + + // https://www.w3.org/TR/css-color-4/#interpolation-space + kSRGBLinear, + kLab, + kOKLab, + // This is the same as kOKLab, except it has a simplified version of the CSS gamut + // mapping algorithm (https://www.w3.org/TR/css-color-4/#css-gamut-mapping) + // into Rec2020 space applied to it. + // Warning: This space is experimental and should not be used in production. + kOKLabGamutMap, + kLCH, + kOKLCH, + // This is the same as kOKLCH, except it has the same gamut mapping applied to it + // as kOKLabGamutMap does. + // Warning: This space is experimental and should not be used in production. + kOKLCHGamutMap, + kSRGB, + kHSL, + kHWB, + + kDisplayP3, + kRec2020, + kProphotoRGB, + kA98RGB, + + kLastColorSpace = kA98RGB, + }; + static constexpr int kColorSpaceCount = static_cast(ColorSpace::kLastColorSpace) + 1; + + enum class HueMethod : uint8_t { + // https://www.w3.org/TR/css-color-4/#hue-interpolation + kShorter, + kLonger, + kIncreasing, + kDecreasing, + + kLastHueMethod = kDecreasing, + }; + static constexpr int kHueMethodCount = static_cast(HueMethod::kLastHueMethod) + 1; + + InPremul fInPremul = InPremul::kNo; + ColorSpace fColorSpace = ColorSpace::kDestination; + HueMethod fHueMethod = HueMethod::kShorter; // Only relevant for LCH, OKLCH, HSL, or HWB + + // legacy compatibility -- remove when we can + static Interpolation FromFlags(uint32_t flags) { + return {flags & 1 ? InPremul::kYes : InPremul::kNo, + ColorSpace::kDestination, + HueMethod::kShorter}; + } + }; + + /** + * Specification for the colors in a gradient. + * + * @param colors The span of colors for the gradient. + * @param pos Relative positions of each color across the gradient. If empty, + * the the colors are distributed evenly. If this is not null, the values + * must lie between 0.0 and 1.0, and be strictly increasing. If the first + * value is not 0.0, then an additional color stop is added at position 0.0, + * with the same color as colors[0]. If the the last value is less than 1.0, + * then an additional color stop is added at position 1.0, with the same color + * as colors[count - 1]. + * @param mode Tiling mode for the gradient. + * @param cs Optional colorspace associated with the span of colors. If this is null, + * the colors are treated as sRGB. + */ + class Colors { + public: + Colors() {} + Colors(SkSpan colors, + SkSpan pos, + SkTileMode mode, + sk_sp cs = nullptr) + : fColors(colors), fPos(pos), fColorSpace(std::move(cs)), fTileMode(mode) { + SkASSERT(fPos.size() == 0 || fPos.size() == fColors.size()); + + // throw away inconsistent inputs + if (fPos.size() != fColors.size()) { + fPos = {}; + } + } + + Colors(SkSpan colors, SkTileMode tm, sk_sp cs = nullptr) + : Colors(colors, {}, tm, std::move(cs)) {} + + SkSpan colors() const { return fColors; } + SkSpan positions() const { return fPos; } + const sk_sp& colorSpace() const { return fColorSpace; } + SkTileMode tileMode() const { return fTileMode; } + + private: + SkSpan fColors; + SkSpan fPos; + sk_sp fColorSpace; + SkTileMode fTileMode = SkTileMode::kClamp; + }; + + SkGradient() {} + SkGradient(const Colors& colors, const Interpolation& interp) + : fColors(colors), fInterpolation(interp) {} + + const Colors& colors() const { return fColors; } + const Interpolation& interpolation() const { return fInterpolation; } + +private: + Colors fColors; + Interpolation fInterpolation; +}; + +namespace SkShaders { +/** Returns a shader that generates a linear gradient between the two specified points. + * If the inputs are invalid, this will return nullptr. + * @param points Array of 2 points, the end-points of the line segment + * @param grad Description of the colors and interpolation method + * @param lm Optional local matrix, may be null + */ +SK_API sk_sp LinearGradient(const SkPoint pts[2], + const SkGradient&, + const SkMatrix* lm = nullptr); + +/** Returns a shader that generates a radial gradient given the center and radius. + * @param center The center of the circle for this gradient + * @param radius Must be positive. The radius of the circle for this gradient + * @param grad Description of the colors and interpolation method + * @param lm Optional local matrix, may be null + */ +SK_API sk_sp RadialGradient(SkPoint center, + float radius, + const SkGradient& grad, + const SkMatrix* lm = nullptr); + +/** Returns a shader that generates a conical gradient given two circles, or + * returns null if the inputs are invalid. The gradient interprets the + * two circles according to the following HTML spec. + * http://dev.w3.org/html5/2dcontext/#dom-context-2d-createradialgradient + * @param start The center of the circle for this gradient + * @param startRadius Must be positive. The radius of the circle for this gradient + * @param end The center of the circle for this gradient + * @param startRadius Must be positive. The radius of the circle for this gradient + * @param grad Description of the colors and interpolation method + * @param lm Optional local matrix, may be null + */ +SK_API sk_sp TwoPointConicalGradient(SkPoint start, + float startRadius, + SkPoint end, + float endRadius, + const SkGradient& grad, + const SkMatrix* lm = nullptr); + +/** Returns a shader that generates a sweep gradient given a center. + * The shader accepts negative angles and angles larger than 360, draws + * between 0 and 360 degrees, similar to the CSS conic-gradient + * semantics. 0 degrees means horizontal positive x axis. The start angle + * must be less than the end angle, otherwise a null pointer is + * returned. If color stops do not contain 0 and 1 but are within this + * range, the respective outer color stop is repeated for 0 and 1. Color + * stops less than 0 are clamped to 0, and greater than 1 are clamped to 1. + * @param center The center of the sweep + * @param startAngle Start of the angular range, corresponding to pos == 0. + * @param endAngle End of the angular range, corresponding to pos == 1. + * @param grad Description of the colors and interpolation method + * @param lm Optional local matrix, may be null + */ +SK_API sk_sp SweepGradient(SkPoint center, + float startAngle, + float endAngle, + const SkGradient&, + const SkMatrix* lm = nullptr); +static inline sk_sp SweepGradient(SkPoint center, + const SkGradient& grad, + const SkMatrix* lm = nullptr) { + return SweepGradient(center, 0, 360, grad, lm); +} + +} // namespace SkShaders + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkHighContrastFilter.h b/vendor/artifacts/skia/include/effects/SkHighContrastFilter.h new file mode 100644 index 000000000..a3eb36c07 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkHighContrastFilter.h @@ -0,0 +1,84 @@ +/* +* Copyright 2017 Google LLC +* +* Use of this source code is governed by a BSD-style license that can be +* found in the LICENSE file. +*/ + +#ifndef SkHighContrastFilter_DEFINED +#define SkHighContrastFilter_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +class SkColorFilter; + +/** + * Configuration struct for SkHighContrastFilter. + * + * Provides transformations to improve contrast for users with low vision. + */ +struct SkHighContrastConfig { + enum class InvertStyle { + kNoInvert, + kInvertBrightness, + kInvertLightness, + + kLast = kInvertLightness + }; + + SkHighContrastConfig() { + fGrayscale = false; + fInvertStyle = InvertStyle::kNoInvert; + fContrast = 0.0f; + } + + SkHighContrastConfig(bool grayscale, + InvertStyle invertStyle, + SkScalar contrast) + : fGrayscale(grayscale) + , fInvertStyle(invertStyle) + , fContrast(contrast) {} + + // Returns true if all of the fields are set within the valid range. + bool isValid() const { + return fInvertStyle >= InvertStyle::kNoInvert && + fInvertStyle <= InvertStyle::kInvertLightness && + fContrast >= -1.0f && + fContrast <= 1.0f; + } + + // If true, the color will be converted to grayscale. + bool fGrayscale; + + // Whether to invert brightness, lightness, or neither. + InvertStyle fInvertStyle; + + // After grayscale and inverting, the contrast can be adjusted linearly. + // The valid range is -1.0 through 1.0, where 0.0 is no adjustment. + SkScalar fContrast; +}; + +/** + * Color filter that provides transformations to improve contrast + * for users with low vision. + * + * Applies the following transformations in this order. Each of these + * can be configured using SkHighContrastConfig. + * + * - Conversion to grayscale + * - Color inversion (either in RGB or HSL space) + * - Increasing the resulting contrast. + * + * Calling SkHighContrastFilter::Make will return nullptr if the config is + * not valid, e.g. if you try to call it with a contrast outside the range of + * -1.0 to 1.0. + */ + +struct SK_API SkHighContrastFilter { + // Returns the filter, or nullptr if the config is invalid. + static sk_sp Make(const SkHighContrastConfig& config); +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkImageFilters.h b/vendor/artifacts/skia/include/effects/SkImageFilters.h new file mode 100644 index 000000000..7340073ea --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkImageFilters.h @@ -0,0 +1,641 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImageFilters_DEFINED +#define SkImageFilters_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkColorSpace.h" +#include "include/core/SkImage.h" +#include "include/core/SkImageFilter.h" +#include "include/core/SkPicture.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkShader.h" +#include "include/core/SkTileMode.h" +#include "include/core/SkTypes.h" + +#include +#include +#include +#include + +class SkBlender; +class SkColorFilter; +class SkMatrix; +class SkRuntimeEffectBuilder; +enum class SkBlendMode; +struct SkIPoint; +struct SkISize; +struct SkPoint3; +struct SkSamplingOptions; + +// A set of factory functions providing useful SkImageFilter effects. For image filters that take an +// input filter, providing nullptr means it will automatically use the dynamic source image. This +// source depends on how the filter is applied, but is either the contents of a saved layer when +// drawing with SkCanvas, or an explicit SkImage if using one of the SkImages::MakeWithFilter +// factories. +class SK_API SkImageFilters { +public: + // This is just a convenience type to allow passing SkIRects, SkRects, and optional pointers + // to those types as a crop rect for the image filter factories. It's not intended to be used + // directly. + struct CropRect : public std::optional { + CropRect() {} + // Intentionally not explicit so callers don't have to use this type but can use SkIRect or + // SkRect as desired. + CropRect(const SkIRect& crop) : std::optional(SkRect::Make(crop)) {} + CropRect(const SkRect& crop) : std::optional(crop) {} + CropRect(const std::optional& crop) : std::optional(crop) {} + CropRect(const std::nullopt_t&) : std::optional() {} + + // Backwards compatibility for when the APIs used to explicitly accept "const SkRect*" + CropRect(std::nullptr_t) {} + CropRect(const SkIRect* optionalCrop) { + if (optionalCrop) { + *this = SkRect::Make(*optionalCrop); + } + } + CropRect(const SkRect* optionalCrop) { + if (optionalCrop) { + *this = *optionalCrop; + } + } + + // std::optional doesn't define == when comparing to another optional... + bool operator==(const CropRect& o) const { + return this->has_value() == o.has_value() && + (!this->has_value() || this->value() == *o); + } + }; + + /** + * Create a filter that implements a custom blend mode. Each output pixel is the result of + * combining the corresponding background and foreground pixels using the 4 coefficients: + * k1 * foreground * background + k2 * foreground + k3 * background + k4 + * @param k1, k2, k3, k4 The four coefficients used to combine the foreground and background. + * @param enforcePMColor If true, the RGB channels will be clamped to the calculated alpha. + * @param background The background content, using the source bitmap when this is null. + * @param foreground The foreground content, using the source bitmap when this is null. + * @param cropRect Optional rectangle that crops the inputs and output. + */ + static sk_sp Arithmetic(SkScalar k1, SkScalar k2, SkScalar k3, SkScalar k4, + bool enforcePMColor, sk_sp background, + sk_sp foreground, + const CropRect& cropRect = {}); + + /** + * This filter takes an SkBlendMode and uses it to composite the two filters together. + * @param mode The blend mode that defines the compositing operation + * @param background The Dst pixels used in blending, if null the source bitmap is used. + * @param foreground The Src pixels used in blending, if null the source bitmap is used. + * @cropRect Optional rectangle to crop input and output. + */ + static sk_sp Blend(SkBlendMode mode, sk_sp background, + sk_sp foreground = nullptr, + const CropRect& cropRect = {}); + + /** + * This filter takes an SkBlendMode and uses it to composite the two filters together. + * @param blender The blender that defines the compositing operation + * @param background The Dst pixels used in blending, if null the source bitmap is used. + * @param foreground The Src pixels used in blending, if null the source bitmap is used. + * @cropRect Optional rectangle to crop input and output. + */ + static sk_sp Blend(sk_sp blender, sk_sp background, + sk_sp foreground = nullptr, + const CropRect& cropRect = {}); + + /** + * Create a filter that blurs its input by the separate X and Y sigmas. The provided tile mode + * is used when the blur kernel goes outside the input image. + * @param sigmaX The Gaussian sigma value for blurring along the X axis. + * @param sigmaY The Gaussian sigma value for blurring along the Y axis. + * @param tileMode The tile mode applied at edges . + * TODO (michaelludwig) - kMirror is not supported yet + * @param input The input filter that is blurred, uses source bitmap if this is null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp Blur(SkScalar sigmaX, SkScalar sigmaY, SkTileMode tileMode, + sk_sp input, const CropRect& cropRect = {}); + // As above, but defaults to the decal tile mode. + static sk_sp Blur(SkScalar sigmaX, SkScalar sigmaY, sk_sp input, + const CropRect& cropRect = {}) { + return Blur(sigmaX, sigmaY, SkTileMode::kDecal, std::move(input), cropRect); + } + + /** + * Create a filter that applies the color filter to the input filter results. + * @param cf The color filter that transforms the input image. + * @param input The input filter, or uses the source bitmap if this is null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp ColorFilter(sk_sp cf, sk_sp input, + const CropRect& cropRect = {}); + + /** + * Create a filter that composes 'inner' with 'outer', such that the results of 'inner' are + * treated as the source bitmap passed to 'outer', i.e. result = outer(inner(source)). + * @param outer The outer filter that evaluates the results of inner. + * @param inner The inner filter that produces the input to outer. + */ + static sk_sp Compose(sk_sp outer, sk_sp inner); + + /** + * Create a filter that applies a crop to the result of the 'input' filter. Pixels within the + * crop rectangle are unmodified from what 'input' produced. Pixels outside of crop match the + * provided SkTileMode (defaulting to kDecal). + * + * NOTE: The optional CropRect argument for many of the factories is equivalent to creating the + * filter without a CropRect and then wrapping it in ::Crop(rect, kDecal). Explicitly adding + * Crop filters lets you control their tiling and use different geometry for the input and the + * output of another filter. + * + * @param rect The cropping geometry + * @param tileMode The tilemode applied to pixels *outside* of 'crop' + * @param input The input filter that is cropped, uses source image if this is null + */ + static sk_sp Crop(const SkRect& rect, + SkTileMode tileMode, + sk_sp input); + static sk_sp Crop(const SkRect& rect, sk_sp input) { + return Crop(rect, SkTileMode::kDecal, std::move(input)); + } + + /** + * Create a filter that moves each pixel in its color input based on an (x,y) vector encoded + * in its displacement input filter. Two color components of the displacement image are + * mapped into a vector as scale * (color[xChannel], color[yChannel]), where the channel + * selectors are one of R, G, B, or A. + * @param xChannelSelector RGBA channel that encodes the x displacement per pixel. + * @param yChannelSelector RGBA channel that encodes the y displacement per pixel. + * @param scale Scale applied to displacement extracted from image. + * @param displacement The filter defining the displacement image, or null to use source. + * @param color The filter providing the color pixels to be displaced. If null, + * it will use the source. + * @param cropRect Optional rectangle that crops the color input and output. + */ + static sk_sp DisplacementMap(SkColorChannel xChannelSelector, + SkColorChannel yChannelSelector, + SkScalar scale, sk_sp displacement, + sk_sp color, + const CropRect& cropRect = {}); + + /** + * Create a filter that draws a drop shadow under the input content. This filter produces an + * image that includes the inputs' content. + * @param dx X offset of the shadow. + * @param dy Y offset of the shadow. + * @param sigmaX blur radius for the shadow, along the X axis. + * @param sigmaY blur radius for the shadow, along the Y axis. + * @param color color of the drop shadow. + * @param colorSpace The color space of the drop shadow color. + * @param input The input filter, or will use the source bitmap if this is null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp DropShadow(SkScalar dx, SkScalar dy, + SkScalar sigmaX, SkScalar sigmaY, + SkColor4f color, sk_sp colorSpace, + sk_sp input, + const CropRect& cropRect = {}); + static sk_sp DropShadow(SkScalar dx, SkScalar dy, + SkScalar sigmaX, SkScalar sigmaY, + SkColor color, sk_sp input, + const CropRect& cropRect = {}) { + return DropShadow(dx, dy, + sigmaX, sigmaY, + SkColor4f::FromColor(color), /*colorSpace=*/nullptr, + std::move(input), + cropRect); + } + + /** + * Create a filter that renders a drop shadow, in exactly the same manner as ::DropShadow, + * except that the resulting image does not include the input content. This allows the shadow + * and input to be composed by a filter DAG in a more flexible manner. + * @param dx The X offset of the shadow. + * @param dy The Y offset of the shadow. + * @param sigmaX The blur radius for the shadow, along the X axis. + * @param sigmaY The blur radius for the shadow, along the Y axis. + * @param color The color of the drop shadow. + * @param colorSpace The color space of the drop shadow color. + * @param input The input filter, or will use the source bitmap if this is null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp DropShadowOnly(SkScalar dx, SkScalar dy, + SkScalar sigmaX, SkScalar sigmaY, + SkColor4f color, sk_sp, + sk_sp input, + const CropRect& cropRect = {}); + static sk_sp DropShadowOnly(SkScalar dx, SkScalar dy, + SkScalar sigmaX, SkScalar sigmaY, + SkColor color, sk_sp input, + const CropRect& cropRect = {}) { + return DropShadowOnly(dx, dy, + sigmaX, sigmaY, + SkColor4f::FromColor(color), /*colorSpace=*/nullptr, + std::move(input), + cropRect); + } + + /** + * Create a filter that always produces transparent black. + */ + static sk_sp Empty(); + + /** + * Create a filter that draws the 'srcRect' portion of image into 'dstRect' using the given + * filter quality. Similar to SkCanvas::drawImageRect. The returned image filter evaluates + * to transparent black if 'image' is null. + * + * @param image The image that is output by the filter, subset by 'srcRect'. + * @param srcRect The source pixels sampled into 'dstRect' + * @param dstRect The local rectangle to draw the image into. + * @param sampling The sampling to use when drawing the image. + */ + static sk_sp Image(sk_sp image, const SkRect& srcRect, + const SkRect& dstRect, const SkSamplingOptions& sampling); + + /** + * Create a filter that draws the image using the given sampling. + * Similar to SkCanvas::drawImage. The returned image filter evaluates to transparent black if + * 'image' is null. + * + * @param image The image that is output by the filter. + * @param sampling The sampling to use when drawing the image. + */ + static sk_sp Image(sk_sp image, const SkSamplingOptions& sampling) { + if (image) { + SkRect r = SkRect::Make(image->bounds()); + return Image(std::move(image), r, r, sampling); + } else { + return nullptr; + } + } + + /** + * Create a filter that fills 'lensBounds' with a magnification of the input. + * + * @param lensBounds The outer bounds of the magnifier effect + * @param zoomAmount The amount of magnification applied to the input image + * @param inset The size or width of the fish-eye distortion around the magnified content + * @param sampling The SkSamplingOptions applied to the input image when magnified + * @param input The input filter that is magnified; if null the source bitmap is used + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp Magnifier(const SkRect& lensBounds, + SkScalar zoomAmount, + SkScalar inset, + const SkSamplingOptions& sampling, + sk_sp input, + const CropRect& cropRect = {}); + + /** + * Create a filter that applies an NxM image processing kernel to the input image. This can be + * used to produce effects such as sharpening, blurring, edge detection, etc. + * @param kernelSize The kernel size in pixels, in each dimension (N by M). + * @param kernel The image processing kernel. Must contain N * M elements, in row order. + * @param gain A scale factor applied to each pixel after convolution. This can be + * used to normalize the kernel, if it does not already sum to 1. + * @param bias A bias factor added to each pixel after convolution. + * @param kernelOffset An offset applied to each pixel coordinate before convolution. + * This can be used to center the kernel over the image + * (e.g., a 3x3 kernel should have an offset of {1, 1}). + * @param tileMode How accesses outside the image are treated. + * TODO (michaelludwig) - kMirror is not supported yet + * @param convolveAlpha If true, all channels are convolved. If false, only the RGB channels + * are convolved, and alpha is copied from the source image. + * @param input The input image filter, if null the source bitmap is used instead. + * @param cropRect Optional rectangle to which the output processing will be limited. + */ + static sk_sp MatrixConvolution(const SkISize& kernelSize, + const SkScalar kernel[], SkScalar gain, + SkScalar bias, const SkIPoint& kernelOffset, + SkTileMode tileMode, bool convolveAlpha, + sk_sp input, + const CropRect& cropRect = {}); + + /** + * Create a filter that transforms the input image by 'matrix'. This matrix transforms the + * local space, which means it effectively happens prior to any transformation coming from the + * SkCanvas initiating the filtering. + * @param matrix The matrix to apply to the original content. + * @param sampling How the image will be sampled when it is transformed + * @param input The image filter to transform, or null to use the source image. + */ + static sk_sp MatrixTransform(const SkMatrix& matrix, + const SkSamplingOptions& sampling, + sk_sp input); + + /** + * Create a filter that merges the 'count' filters together by drawing their results in order + * with src-over blending. + * @param filters The input filter array to merge, which must have 'count' elements. Any null + * filter pointers will use the source bitmap instead. + * @param count The number of input filters to be merged. + * @param cropRect Optional rectangle that crops all input filters and the output. + */ + static sk_sp Merge(sk_sp* const filters, int count, + const CropRect& cropRect = {}); + /** + * Create a filter that merges the results of the two filters together with src-over blending. + * @param first The first input filter, or the source bitmap if this is null. + * @param second The second input filter, or the source bitmap if this null. + * @param cropRect Optional rectangle that crops the inputs and output. + */ + static sk_sp Merge(sk_sp first, sk_sp second, + const CropRect& cropRect = {}) { + sk_sp array[] = { std::move(first), std::move(second) }; + return Merge(array, 2, cropRect); + } + + /** + * Create a filter that offsets the input filter by the given vector. + * @param dx The x offset in local space that the image is shifted. + * @param dy The y offset in local space that the image is shifted. + * @param input The input that will be moved, if null the source bitmap is used instead. + * @param cropRect Optional rectangle to crop the input and output. + */ + static sk_sp Offset(SkScalar dx, SkScalar dy, sk_sp input, + const CropRect& cropRect = {}); + + /** + * Create a filter that produces the SkPicture as its output, clipped to both 'targetRect' and + * the picture's internal cull rect. + * + * If 'pic' is null, the returned image filter produces transparent black. + * + * @param pic The picture that is drawn for the filter output. + * @param targetRect The drawing region for the picture. + */ + static sk_sp Picture(sk_sp pic, const SkRect& targetRect); + // As above, but uses SkPicture::cullRect for the drawing region. + static sk_sp Picture(sk_sp pic) { + SkRect target = pic ? pic->cullRect() : SkRect::MakeEmpty(); + return Picture(std::move(pic), target); + } + + /** + * Create a filter that fills the output with the per-pixel evaluation of the SkShader produced + * by the SkRuntimeEffectBuilder. The shader is defined in the image filter's local coordinate + * system, so it will automatically be affected by SkCanvas' transform. + * + * This variant assumes that the runtime shader samples 'childShaderName' with the same input + * coordinate passed to to shader. + * + * This requires a GPU backend or SkSL to be compiled in. + * + * @param builder The builder used to produce the runtime shader, that will in turn + * fill the result image + * @param childShaderName The name of the child shader defined in the builder that will be + * bound to the input param (or the source image if the input param + * is null). If empty, the builder can have exactly one child shader, + * which automatically binds the input param. + * @param input The image filter that will be provided as input to the runtime + * shader. If null the implicit source image is used instead + */ + static sk_sp RuntimeShader(const SkRuntimeEffectBuilder& builder, + std::string_view childShaderName, + sk_sp input) { + return RuntimeShader(builder, /*sampleRadius=*/0.f, childShaderName, std::move(input)); + } + + /** + * As above, but 'sampleRadius' defines the sampling radius of 'childShaderName' relative to + * the runtime shader produced by 'builder'. If greater than 0, the coordinate passed to + * childShader.eval() will be up to 'sampleRadius' away (maximum absolute offset in 'x' or 'y') + * from the coordinate passed into the runtime shader. + * + * This allows Skia to provide sampleable values for the image filter without worrying about + * boundary conditions. + * + * This requires a GPU backend or SkSL to be compiled in. + */ + static sk_sp RuntimeShader(const SkRuntimeEffectBuilder& builder, + SkScalar sampleRadius, + std::string_view childShaderName, + sk_sp input); + + /** + * Create a filter that fills the output with the per-pixel evaluation of the SkShader produced + * by the SkRuntimeEffectBuilder. The shader is defined in the image filter's local coordinate + * system, so it will automatically be affected by SkCanvas' transform. + * + * This requires a GPU backend or SkSL to be compiled in. + * + * @param builder The builder used to produce the runtime shader, that will in turn + * fill the result image + * @param childShaderNames The names of the child shaders defined in the builder that will be + * bound to the input params (or the source image if the input param + * is null). If any name is null, or appears more than once, factory + * fails and returns nullptr. + * @param inputs The image filters that will be provided as input to the runtime + * shader. If any are null, the implicit source image is used instead. + * @param inputCount How many entries are present in 'childShaderNames' and 'inputs'. + */ + static sk_sp RuntimeShader(const SkRuntimeEffectBuilder& builder, + std::string_view childShaderNames[], + const sk_sp inputs[], + int inputCount) { + return RuntimeShader(builder, /*maxSampleRadius=*/0.f, childShaderNames, + inputs, inputCount); + } + + /** + * As above, but 'maxSampleRadius' defines the sampling limit on coordinates provided to all + * child shaders. Like the single-child variant with a sample radius, this can be used to + * inform Skia that the runtime shader guarantees that all dynamic children (defined in + * childShaderNames) will be evaluated with coordinates at most 'maxSampleRadius' away from the + * coordinate provided to the runtime shader itself. + * + * This requires a GPU backend or SkSL to be compiled in. + */ + static sk_sp RuntimeShader(const SkRuntimeEffectBuilder& builder, + SkScalar maxSampleRadius, + std::string_view childShaderNames[], + const sk_sp inputs[], + int inputCount); + + enum class Dither : bool { + kNo = false, + kYes = true + }; + + /** + * Create a filter that fills the output with the per-pixel evaluation of the SkShader. The + * shader is defined in the image filter's local coordinate system, so will automatically + * be affected by SkCanvas' transform. + * + * Like Image() and Picture(), this is a leaf filter that can be used to introduce inputs to + * a complex filter graph, but should generally be combined with a filter that as at least + * one null input to use the implicit source image. + * + * Returns an image filter that evaluates to transparent black if 'shader' is null. + * + * @param shader The shader that fills the result image + */ + static sk_sp Shader(sk_sp shader, const CropRect& cropRect = {}) { + return Shader(std::move(shader), Dither::kNo, cropRect); + } + static sk_sp Shader(sk_sp shader, Dither dither, + const CropRect& cropRect = {}); + + /** + * Create a tile image filter. + * @param src Defines the pixels to tile + * @param dst Defines the pixel region that the tiles will be drawn to + * @param input The input that will be tiled, if null the source bitmap is used instead. + */ + static sk_sp Tile(const SkRect& src, const SkRect& dst, + sk_sp input); + + // Morphology filter effects + + /** + * Create a filter that dilates each input pixel's channel values to the max value within the + * given radii along the x and y axes. + * @param radiusX The distance to dilate along the x axis to either side of each pixel. + * @param radiusY The distance to dilate along the y axis to either side of each pixel. + * @param input The image filter that is dilated, using source bitmap if this is null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp Dilate(SkScalar radiusX, SkScalar radiusY, + sk_sp input, + const CropRect& cropRect = {}); + + /** + * Create a filter that erodes each input pixel's channel values to the minimum channel value + * within the given radii along the x and y axes. + * @param radiusX The distance to erode along the x axis to either side of each pixel. + * @param radiusY The distance to erode along the y axis to either side of each pixel. + * @param input The image filter that is eroded, using source bitmap if this is null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp Erode(SkScalar radiusX, SkScalar radiusY, + sk_sp input, + const CropRect& cropRect = {}); + + // Lighting filter effects + + /** + * Create a filter that calculates the diffuse illumination from a distant light source, + * interpreting the alpha channel of the input as the height profile of the surface (to + * approximate normal vectors). + * @param direction The direction to the distance light. + * @param lightColor The color of the diffuse light source. + * @param surfaceScale Scale factor to transform from alpha values to physical height. + * @param kd Diffuse reflectance coefficient. + * @param input The input filter that defines surface normals (as alpha), or uses the + * source bitmap when null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp DistantLitDiffuse(const SkPoint3& direction, SkColor lightColor, + SkScalar surfaceScale, SkScalar kd, + sk_sp input, + const CropRect& cropRect = {}); + /** + * Create a filter that calculates the diffuse illumination from a point light source, using + * alpha channel of the input as the height profile of the surface (to approximate normal + * vectors). + * @param location The location of the point light. + * @param lightColor The color of the diffuse light source. + * @param surfaceScale Scale factor to transform from alpha values to physical height. + * @param kd Diffuse reflectance coefficient. + * @param input The input filter that defines surface normals (as alpha), or uses the + * source bitmap when null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp PointLitDiffuse(const SkPoint3& location, SkColor lightColor, + SkScalar surfaceScale, SkScalar kd, + sk_sp input, + const CropRect& cropRect = {}); + /** + * Create a filter that calculates the diffuse illumination from a spot light source, using + * alpha channel of the input as the height profile of the surface (to approximate normal + * vectors). The spot light is restricted to be within 'cutoffAngle' of the vector between + * the location and target. + * @param location The location of the spot light. + * @param target The location that the spot light is point towards + * @param falloffExponent Exponential falloff parameter for illumination outside of cutoffAngle + * @param cutoffAngle Maximum angle from lighting direction that receives full light + * @param lightColor The color of the diffuse light source. + * @param surfaceScale Scale factor to transform from alpha values to physical height. + * @param kd Diffuse reflectance coefficient. + * @param input The input filter that defines surface normals (as alpha), or uses the + * source bitmap when null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp SpotLitDiffuse(const SkPoint3& location, const SkPoint3& target, + SkScalar falloffExponent, SkScalar cutoffAngle, + SkColor lightColor, SkScalar surfaceScale, + SkScalar kd, sk_sp input, + const CropRect& cropRect = {}); + + /** + * Create a filter that calculates the specular illumination from a distant light source, + * interpreting the alpha channel of the input as the height profile of the surface (to + * approximate normal vectors). + * @param direction The direction to the distance light. + * @param lightColor The color of the specular light source. + * @param surfaceScale Scale factor to transform from alpha values to physical height. + * @param ks Specular reflectance coefficient. + * @param shininess The specular exponent determining how shiny the surface is. + * @param input The input filter that defines surface normals (as alpha), or uses the + * source bitmap when null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp DistantLitSpecular(const SkPoint3& direction, SkColor lightColor, + SkScalar surfaceScale, SkScalar ks, + SkScalar shininess, sk_sp input, + const CropRect& cropRect = {}); + /** + * Create a filter that calculates the specular illumination from a point light source, using + * alpha channel of the input as the height profile of the surface (to approximate normal + * vectors). + * @param location The location of the point light. + * @param lightColor The color of the specular light source. + * @param surfaceScale Scale factor to transform from alpha values to physical height. + * @param ks Specular reflectance coefficient. + * @param shininess The specular exponent determining how shiny the surface is. + * @param input The input filter that defines surface normals (as alpha), or uses the + * source bitmap when null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp PointLitSpecular(const SkPoint3& location, SkColor lightColor, + SkScalar surfaceScale, SkScalar ks, + SkScalar shininess, sk_sp input, + const CropRect& cropRect = {}); + /** + * Create a filter that calculates the specular illumination from a spot light source, using + * alpha channel of the input as the height profile of the surface (to approximate normal + * vectors). The spot light is restricted to be within 'cutoffAngle' of the vector between + * the location and target. + * @param location The location of the spot light. + * @param target The location that the spot light is point towards + * @param falloffExponent Exponential falloff parameter for illumination outside of cutoffAngle + * @param cutoffAngle Maximum angle from lighting direction that receives full light + * @param lightColor The color of the specular light source. + * @param surfaceScale Scale factor to transform from alpha values to physical height. + * @param ks Specular reflectance coefficient. + * @param shininess The specular exponent determining how shiny the surface is. + * @param input The input filter that defines surface normals (as alpha), or uses the + * source bitmap when null. + * @param cropRect Optional rectangle that crops the input and output. + */ + static sk_sp SpotLitSpecular(const SkPoint3& location, const SkPoint3& target, + SkScalar falloffExponent, SkScalar cutoffAngle, + SkColor lightColor, SkScalar surfaceScale, + SkScalar ks, SkScalar shininess, + sk_sp input, + const CropRect& cropRect = {}); + +private: + SkImageFilters() = delete; +}; + +#endif // SkImageFilters_DEFINED diff --git a/vendor/artifacts/skia/include/effects/SkLumaColorFilter.h b/vendor/artifacts/skia/include/effects/SkLumaColorFilter.h new file mode 100644 index 000000000..41a9a45f3 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkLumaColorFilter.h @@ -0,0 +1,37 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkLumaColorFilter_DEFINED +#define SkLumaColorFilter_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +class SkColorFilter; + +/** + * SkLumaColorFilter multiplies the luma of its input into the alpha channel, + * and sets the red, green, and blue channels to zero. + * + * SkLumaColorFilter(r,g,b,a) = {0,0,0, a * luma(r,g,b)} + * + * This is similar to a luminanceToAlpha feColorMatrix, + * but note how this filter folds in the previous alpha, + * something an feColorMatrix cannot do. + * + * feColorMatrix(luminanceToAlpha; r,g,b,a) = {0,0,0, luma(r,g,b)} + * + * (Despite its name, an feColorMatrix using luminanceToAlpha does + * actually compute luma, a dot-product of gamma-encoded color channels, + * not luminance, a dot-product of linear color channels. So at least + * SkLumaColorFilter and feColorMatrix+luminanceToAlpha agree there.) + */ +struct SK_API SkLumaColorFilter { + static sk_sp Make(); +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkOverdrawColorFilter.h b/vendor/artifacts/skia/include/effects/SkOverdrawColorFilter.h new file mode 100644 index 000000000..faa037e9f --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkOverdrawColorFilter.h @@ -0,0 +1,33 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "include/core/SkColor.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +class SkColorFilter; + +#ifndef SkOverdrawColorFilter_DEFINED +#define SkOverdrawColorFilter_DEFINED + +/** + * Uses the value in the src alpha channel to set the dst pixel. + * 0 -> colors[0] + * 1 -> colors[1] + * ... + * 5 (or larger) -> colors[5] + * + * https://fiddle.skia.org/c/@overdrawcolorfilter_grid + */ +class SK_API SkOverdrawColorFilter { +public: + static constexpr int kNumColors = 6; + + static sk_sp MakeWithSkColors(const SkColor[kNumColors]); +}; + +#endif // SkOverdrawColorFilter_DEFINED diff --git a/vendor/artifacts/skia/include/effects/SkPerlinNoiseShader.h b/vendor/artifacts/skia/include/effects/SkPerlinNoiseShader.h new file mode 100644 index 000000000..7ef2f1fc5 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkPerlinNoiseShader.h @@ -0,0 +1,53 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPerlinNoiseShader_DEFINED +#define SkPerlinNoiseShader_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkShader.h" // IWYU pragma: keep +#include "include/private/base/SkAPI.h" + +struct SkISize; + +/** \class SkPerlinNoiseShader + + SkPerlinNoiseShader creates an image using the Perlin turbulence function. + + It can produce tileable noise if asked to stitch tiles and provided a tile size. + In order to fill a large area with repeating noise, set the stitchTiles flag to + true, and render exactly a single tile of noise. Without this flag, the result + will contain visible seams between tiles. + + The algorithm used is described here : + http://www.w3.org/TR/SVG/filters.html#feTurbulenceElement +*/ +namespace SkShaders { +/** + * This will construct Perlin noise of the given type (Fractal Noise or Turbulence). + * + * Both base frequencies (X and Y) have a usual range of (0..1) and must be non-negative. + * + * The number of octaves provided should be fairly small, with a limit of 255 enforced. + * Each octave doubles the frequency, so 10 octaves would produce noise from + * baseFrequency * 1, * 2, * 4, ..., * 512, which quickly yields insignificantly small + * periods and resembles regular unstructured noise rather than Perlin noise. + * + * If tileSize isn't NULL or an empty size, the tileSize parameter will be used to modify + * the frequencies so that the noise will be tileable for the given tile size. If tileSize + * is NULL or an empty size, the frequencies will be used as is without modification. + */ +SK_API sk_sp MakeFractalNoise(SkScalar baseFrequencyX, SkScalar baseFrequencyY, + int numOctaves, SkScalar seed, + const SkISize* tileSize = nullptr); +SK_API sk_sp MakeTurbulence(SkScalar baseFrequencyX, SkScalar baseFrequencyY, + int numOctaves, SkScalar seed, + const SkISize* tileSize = nullptr); +} // namespace SkShaders + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkRuntimeEffect.h b/vendor/artifacts/skia/include/effects/SkRuntimeEffect.h new file mode 100644 index 000000000..a53e72139 --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkRuntimeEffect.h @@ -0,0 +1,503 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkRuntimeEffect_DEFINED +#define SkRuntimeEffect_DEFINED + +#include "include/core/SkBlender.h" // IWYU pragma: keep +#include "include/core/SkColorFilter.h" // IWYU pragma: keep +#include "include/core/SkData.h" +#include "include/core/SkFlattenable.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkShader.h" +#include "include/core/SkSpan.h" +#include "include/core/SkString.h" +#include "include/core/SkTypes.h" +#include "include/private/SkSLSampleUsage.h" +#include "include/private/base/SkOnce.h" +#include "include/private/base/SkTemplates.h" +#include "include/private/base/SkTo.h" +#include "include/private/base/SkTypeTraits.h" +#include "include/sksl/SkSLDebugTrace.h" +#include "include/sksl/SkSLVersion.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct SkIPoint; + +namespace SkSL { +class DebugTracePriv; +class FunctionDefinition; +struct Program; +enum class ProgramKind : int8_t; +struct ProgramSettings; +} // namespace SkSL + +namespace SkSL::RP { +class Program; +} + +/* + * SkRuntimeEffect supports creating custom SkShader and SkColorFilter objects using Skia's SkSL + * shading language. + * + * NOTE: This API is experimental and subject to change. + */ +class SK_API SkRuntimeEffect : public SkRefCnt { +public: + // Reflected description of a uniform variable in the effect's SkSL + struct SK_API Uniform { + enum class Type { + kFloat, + kFloat2, + kFloat3, + kFloat4, + kFloat2x2, + kFloat3x3, + kFloat4x4, + kInt, + kInt2, + kInt3, + kInt4, + }; + + enum Flags { + // Uniform is declared as an array. 'count' contains array length. + kArray_Flag = 0x1, + + // Uniform is declared with layout(color). Colors should be supplied as unpremultiplied, + // extended-range (unclamped) sRGB (ie SkColor4f). The uniform will be automatically + // transformed to unpremultiplied extended-range working-space colors. + kColor_Flag = 0x2, + + // When used with SkMeshSpecification, indicates that the uniform is present in the + // vertex shader. Not used with SkRuntimeEffect. + kVertex_Flag = 0x4, + + // When used with SkMeshSpecification, indicates that the uniform is present in the + // fragment shader. Not used with SkRuntimeEffect. + kFragment_Flag = 0x8, + + // This flag indicates that the SkSL uniform uses a medium-precision type + // (i.e., `half` instead of `float`). + kHalfPrecision_Flag = 0x10, + }; + + std::string_view name; + size_t offset; + Type type; + int count; + uint32_t flags; + + bool isArray() const { return SkToBool(this->flags & kArray_Flag); } + bool isColor() const { return SkToBool(this->flags & kColor_Flag); } + size_t sizeInBytes() const; + }; + + // Reflected description of a uniform child (shader or colorFilter) in the effect's SkSL + enum class ChildType { + kShader, + kColorFilter, + kBlender, + }; + + struct Child { + std::string_view name; + ChildType type; + int index; + }; + + class Options { + public: + // For testing purposes, disables optimization and inlining. (Normally, Runtime Effects + // don't run the inliner directly, but they still get an inlining pass once they are + // painted.) + bool forceUnoptimized = false; + // When possible this name will be used to identify the created runtime effect. + std::string_view fName; + + private: + friend class SkRuntimeEffect; + friend class SkRuntimeEffectPriv; + + // This flag allows Runtime Effects to access Skia implementation details like sk_FragCoord + // and functions with private identifiers (e.g. $rgb_to_hsl). + bool allowPrivateAccess = false; + // When not 0, this field allows Skia to assign a stable key to a known runtime effect + uint32_t fStableKey = 0; + + // TODO(skbug.com/40042585) - Replace this with a promised SkCapabilities? + // This flag lifts the ES2 restrictions on Runtime Effects that are gated by the + // `strictES2Mode` check. Be aware that the software renderer and pipeline-stage effect are + // still largely ES3-unaware and can still fail or crash if post-ES2 features are used. + // This is only intended for use by tests and certain internally created effects. + SkSL::Version maxVersionAllowed = SkSL::Version::k100; + }; + + // If the effect is compiled successfully, `effect` will be non-null. + // Otherwise, `errorText` will contain the reason for failure. + struct Result { + sk_sp effect; + SkString errorText; + }; + + // MakeForColorFilter and MakeForShader verify that the SkSL code is valid for those stages of + // the Skia pipeline. In all of the signatures described below, color parameters and return + // values are flexible. They are listed as being 'vec4', but they can also be 'half4' or + // 'float4'. ('vec4' is an alias for 'float4'). + + // We can't use a default argument for `options` due to a bug in Clang. + // https://bugs.llvm.org/show_bug.cgi?id=36684 + + // Color filter SkSL requires an entry point that looks like: + // vec4 main(vec4 inColor) { ... } + // https://fiddle.skia.org/c/@runtimeeffect_colorfilter_grid + static Result MakeForColorFilter(SkString sksl, const Options&); + static Result MakeForColorFilter(SkString sksl) { + return MakeForColorFilter(std::move(sksl), Options{}); + } + + // Shader SkSL requires an entry point that looks like: + // vec4 main(vec2 inCoords) { ... } + // The color that is returned should be premultiplied. + static Result MakeForShader(SkString sksl, const Options&); + static Result MakeForShader(SkString sksl) { + return MakeForShader(std::move(sksl), Options{}); + } + + // Blend SkSL requires an entry point that looks like: + // vec4 main(vec4 srcColor, vec4 dstColor) { ... } + static Result MakeForBlender(SkString sksl, const Options&); + static Result MakeForBlender(SkString sksl) { + return MakeForBlender(std::move(sksl), Options{}); + } + + // Object that allows passing a SkShader, SkColorFilter or SkBlender as a child + class SK_API ChildPtr { + public: + ChildPtr() = default; + // Intentionally don't declare these to be explicit for convenience. + ChildPtr(sk_sp s) : fChild(std::move(s)) {} + ChildPtr(sk_sp cf) : fChild(std::move(cf)) {} + ChildPtr(sk_sp b) : fChild(std::move(b)) {} + + // Asserts that the flattenable is either null, or one of the legal derived types + ChildPtr(sk_sp f); + + std::optional type() const; + + SkShader* shader() const; + SkColorFilter* colorFilter() const; + SkBlender* blender() const; + SkFlattenable* flattenable() const { return fChild.get(); } + + using sk_is_trivially_relocatable = std::true_type; + + private: + sk_sp fChild; + + static_assert(::sk_is_trivially_relocatable::value); + }; + + sk_sp makeShader(sk_sp uniforms, + sk_sp children[], + size_t childCount, + const SkMatrix* localMatrix = nullptr) const; + sk_sp makeShader(sk_sp uniforms, + SkSpan children, + const SkMatrix* localMatrix = nullptr) const; + + sk_sp makeColorFilter(sk_sp uniforms) const; + sk_sp makeColorFilter(sk_sp uniforms, + sk_sp children[], + size_t childCount) const; + sk_sp makeColorFilter(sk_sp uniforms, + SkSpan children) const; + + sk_sp makeBlender(sk_sp uniforms, + SkSpan children = {}) const; + + /** + * Creates a new Runtime Effect patterned after an already-existing one. The new shader behaves + * like the original, but also creates a debug trace of its execution at the requested + * coordinate. After painting with this shader, the associated DebugTrace object will contain a + * shader execution trace. Call `writeTrace` on the debug trace object to generate a full trace + * suitable for a debugger, or call `dump` to emit a human-readable trace. + * + * Debug traces are only supported on a raster (non-GPU) canvas. + + * Debug traces are currently only supported on shaders. Color filter and blender tracing is a + * work-in-progress. + */ + struct TracedShader { + sk_sp shader; + sk_sp debugTrace; + }; + static TracedShader MakeTraced(sk_sp shader, const SkIPoint& traceCoord); + + // Returns the SkSL source of the runtime effect shader. + const std::string& source() const; + + // Combined size of all 'uniform' variables. When calling makeColorFilter or makeShader, + // provide an SkData of this size, containing values for all of those variables. + size_t uniformSize() const; + + SkSpan uniforms() const { return SkSpan(fUniforms); } + SkSpan children() const { return SkSpan(fChildren); } + + // Returns pointer to the named uniform variable's description, or nullptr if not found + const Uniform* findUniform(std::string_view name) const; + + // Returns pointer to the named child's description, or nullptr if not found + const Child* findChild(std::string_view name) const; + + // Allows the runtime effect type to be identified. + bool allowShader() const { return (fFlags & kAllowShader_Flag); } + bool allowColorFilter() const { return (fFlags & kAllowColorFilter_Flag); } + bool allowBlender() const { return (fFlags & kAllowBlender_Flag); } + + static void RegisterFlattenables(); + ~SkRuntimeEffect() override; + +private: + enum Flags { + kUsesSampleCoords_Flag = 0x001, + kAllowColorFilter_Flag = 0x002, + kAllowShader_Flag = 0x004, + kAllowBlender_Flag = 0x008, + kSamplesOutsideMain_Flag = 0x010, + kUsesColorTransform_Flag = 0x020, + kAlwaysOpaque_Flag = 0x040, + kAlphaUnchanged_Flag = 0x080, + kDisableOptimization_Flag = 0x100, + }; + + SkRuntimeEffect(std::unique_ptr baseProgram, + const Options& options, + const SkSL::FunctionDefinition& main, + std::vector&& uniforms, + std::vector&& children, + std::vector&& sampleUsages, + uint32_t flags); + + sk_sp makeUnoptimizedClone(); + + static Result MakeFromSource(SkString sksl, const Options& options, SkSL::ProgramKind kind); + + static Result MakeInternal(std::unique_ptr program, + const Options& options, + SkSL::ProgramKind kind); + + static SkSL::ProgramSettings MakeSettings(const Options& options); + + uint32_t hash() const { return fHash; } + bool usesSampleCoords() const { return (fFlags & kUsesSampleCoords_Flag); } + bool samplesOutsideMain() const { return (fFlags & kSamplesOutsideMain_Flag); } + bool usesColorTransform() const { return (fFlags & kUsesColorTransform_Flag); } + bool alwaysOpaque() const { return (fFlags & kAlwaysOpaque_Flag); } + bool isAlphaUnchanged() const { return (fFlags & kAlphaUnchanged_Flag); } + + const SkSL::RP::Program* getRPProgram(SkSL::DebugTracePriv* debugTrace) const; + + friend class GrSkSLFP; // usesColorTransform + friend class SkRuntimeShader; // fBaseProgram, fMain, fSampleUsages, getRPProgram() + friend class SkRuntimeBlender; // + friend class SkRuntimeColorFilter; // + + friend class SkRuntimeEffectPriv; + + uint32_t fHash; + // When not 0, this field holds a StableKey value or a user-defined stable key + uint32_t fStableKey = 0; + SkString fName; + + std::unique_ptr fBaseProgram; + std::unique_ptr fRPProgram; + mutable SkOnce fCompileRPProgramOnce; + const SkSL::FunctionDefinition& fMain; + std::vector fUniforms; + std::vector fChildren; + std::vector fSampleUsages; + + uint32_t fFlags; // Flags +}; + +/** + * SkRuntimeEffectBuilder is a utility to simplify creating SkShader, SkColorFilter, and SkBlender + * objects from SkRuntimeEffects. + * + * NOTE: Like SkRuntimeEffect, this API is experimental and subject to change! + * + * Given an SkRuntimeEffect, the SkRuntimeEffectBuilder manages creating an input data block and + * provides named access to the 'uniform' variables in that block, as well as named access + * to a list of child shader slots. Usage: + * + * sk_sp effect = ...; + * SkRuntimeEffectBuilder builder(effect); + * builder.uniform("some_uniform_float") = 3.14f; + * builder.uniform("some_uniform_matrix") = SkM44::Rotate(...); + * builder.child("some_child_effect") = mySkImage->makeShader(...); + * ... + * sk_sp shader = builder.makeShader(nullptr, false); + * + * Upon calling makeShader, makeColorFilter, or makeBlender, the builder will check the validity + * of the SkSL to see if the entry point is correct. + * + * Note that SkRuntimeEffectBuilder is built entirely on the public API of SkRuntimeEffect, + * so can be used as-is or serve as inspiration for other interfaces or binding techniques. + */ +class SK_API SkRuntimeEffectBuilder { +public: + explicit SkRuntimeEffectBuilder(sk_sp effect) + : fEffect(std::move(effect)) + , fUniforms(SkData::MakeZeroInitialized(fEffect->uniformSize())) + , fChildren(fEffect->children().size()) {} + explicit SkRuntimeEffectBuilder(sk_sp effect, sk_sp uniforms) + : fEffect(std::move(effect)) + , fUniforms(std::move(uniforms)) + , fChildren(fEffect->children().size()) {} + + // This is currently required by Android Framework but may go away if that dependency + // can be removed. + SkRuntimeEffectBuilder(const SkRuntimeEffectBuilder&) = default; + + struct BuilderUniform { + // Copy 'val' to this variable. No type conversion is performed - 'val' must be same + // size as expected by the effect. Information about the variable can be queried by + // looking at fVar. If the size is incorrect, no copy will be performed, and debug + // builds will abort. If this is the result of querying a missing variable, fVar will + // be nullptr, and assigning will also do nothing (and abort in debug builds). + template + std::enable_if_t::value, BuilderUniform&> operator=( + const T& val) { + if (!fVar) { + SkDEBUGFAIL("Assigning to missing variable"); + } else if (sizeof(val) != fVar->sizeInBytes()) { + SkDEBUGFAIL("Incorrect value size"); + } else { + memcpy(SkTAddOffset(fOwner->writableUniformData(), fVar->offset), + &val, sizeof(val)); + } + return *this; + } + + BuilderUniform& operator=(const SkMatrix& val) { + if (!fVar) { + SkDEBUGFAIL("Assigning to missing variable"); + } else if (fVar->sizeInBytes() != 9 * sizeof(float)) { + SkDEBUGFAIL("Incorrect value size"); + } else { + float* data = SkTAddOffset(fOwner->writableUniformData(), + (ptrdiff_t)fVar->offset); + data[0] = val.get(0); data[1] = val.get(3); data[2] = val.get(6); + data[3] = val.get(1); data[4] = val.get(4); data[5] = val.get(7); + data[6] = val.get(2); data[7] = val.get(5); data[8] = val.get(8); + } + return *this; + } + + template + bool set(const T val[], const int count) { + static_assert(std::is_trivially_copyable::value, "Value must be trivial copyable"); + if (!fVar) { + SkDEBUGFAIL("Assigning to missing variable"); + return false; + } else if (sizeof(T) * count != fVar->sizeInBytes()) { + SkDEBUGFAIL("Incorrect value size"); + return false; + } else { + memcpy(SkTAddOffset(fOwner->writableUniformData(), fVar->offset), + val, sizeof(T) * count); + } + return true; + } + + SkRuntimeEffectBuilder* fOwner; + const SkRuntimeEffect::Uniform* fVar; // nullptr if the variable was not found + }; + + struct BuilderChild { + template BuilderChild& operator=(sk_sp val) { + if (!fChild) { + SkDEBUGFAIL("Assigning to missing child"); + } else { + fOwner->fChildren[(size_t)fChild->index] = + SkRuntimeEffect::ChildPtr(std::move(val)); + } + return *this; + } + + BuilderChild& operator=(std::nullptr_t) { + if (!fChild) { + SkDEBUGFAIL("Assigning to missing child"); + } else { + fOwner->fChildren[(size_t)fChild->index] = SkRuntimeEffect::ChildPtr{}; + } + return *this; + } + + SkRuntimeEffectBuilder* fOwner; + const SkRuntimeEffect::Child* fChild; // nullptr if the child was not found + }; + + const SkRuntimeEffect* effect() const { return fEffect.get(); } + + BuilderUniform uniform(std::string_view name) { return { this, fEffect->findUniform(name) }; } + BuilderChild child(std::string_view name) { return { this, fEffect->findChild(name) }; } + + // Get access to the collated uniforms and children (in the order expected by APIs like + // makeShader on the effect): + sk_sp uniforms() const { return fUniforms; } + SkSpan children() const { return fChildren; } + + // Build methods, at this point checks are made to ensure the SkSL entry point `main` is correct + sk_sp makeShader(const SkMatrix* localMatrix = nullptr) const; + sk_sp makeColorFilter() const; + sk_sp makeBlender() const; + + ~SkRuntimeEffectBuilder() = default; + +protected: + SkRuntimeEffectBuilder() = delete; + + SkRuntimeEffectBuilder(SkRuntimeEffectBuilder&&) = default; + + SkRuntimeEffectBuilder& operator=(SkRuntimeEffectBuilder&&) = delete; + SkRuntimeEffectBuilder& operator=(const SkRuntimeEffectBuilder&) = delete; + +private: + void* writableUniformData() { + if (!fUniforms->unique()) { + fUniforms = SkData::MakeWithCopy(fUniforms->data(), fUniforms->size()); + } + return fUniforms->writable_data(); + } + + sk_sp fEffect; + sk_sp fUniforms; + std::vector fChildren; + + friend class SkRuntimeImageFilter; +}; + +/** + * DEPRECATED: Subclass logic has been moved to base class SkRuntimeEffectBuilder. + */ +using SkRuntimeShaderBuilder = SkRuntimeEffectBuilder; +using SkRuntimeColorFilterBuilder = SkRuntimeEffectBuilder; +using SkRuntimeBlendBuilder = SkRuntimeEffectBuilder; + +#endif // SkRuntimeEffect_DEFINED diff --git a/vendor/artifacts/skia/include/effects/SkShaderMaskFilter.h b/vendor/artifacts/skia/include/effects/SkShaderMaskFilter.h new file mode 100644 index 000000000..1524f959f --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkShaderMaskFilter.h @@ -0,0 +1,28 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkShaderMaskFilter_DEFINED +#define SkShaderMaskFilter_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +class SkMaskFilter; +class SkShader; + +// (DEPRECATED) This factory function is deprecated. ShaderMaskFilters will be deleted entirely +// in an upcoming Skia release. +class SK_API SkShaderMaskFilter { +public: + static sk_sp Make(sk_sp shader); + +private: + static void RegisterFlattenables(); + friend class SkFlattenable; +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkTableMaskFilter.h b/vendor/artifacts/skia/include/effects/SkTableMaskFilter.h new file mode 100644 index 000000000..2cc439c1c --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkTableMaskFilter.h @@ -0,0 +1,47 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTableMaskFilter_DEFINED +#define SkTableMaskFilter_DEFINED + +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +#include + +class SkMaskFilter; + +/** \class SkTableMaskFilter + + Applies a table lookup on each of the alpha values in the mask. + Helper methods create some common tables (e.g. gamma, clipping) + */ +// (DEPRECATED) These factory functions are deprecated. The TableMaskFilter will be +// removed entirely in an upcoming release of Skia. +class SK_API SkTableMaskFilter { +public: + /** Utility that sets the gamma table + */ + static void MakeGammaTable(uint8_t table[256], SkScalar gamma); + + /** Utility that creates a clipping table: clamps values below min to 0 + and above max to 255, and rescales the remaining into 0..255 + */ + static void MakeClipTable(uint8_t table[256], uint8_t min, uint8_t max); + + static SkMaskFilter* Create(const uint8_t table[256]); + static SkMaskFilter* CreateGamma(SkScalar gamma); + static SkMaskFilter* CreateClip(uint8_t min, uint8_t max); + + SkTableMaskFilter() = delete; + +private: + static void RegisterFlattenables(); + friend class SkFlattenable; +}; + +#endif diff --git a/vendor/artifacts/skia/include/effects/SkTrimPathEffect.h b/vendor/artifacts/skia/include/effects/SkTrimPathEffect.h new file mode 100644 index 000000000..cf9f4dc6f --- /dev/null +++ b/vendor/artifacts/skia/include/effects/SkTrimPathEffect.h @@ -0,0 +1,45 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTrimPathEffect_DEFINED +#define SkTrimPathEffect_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +class SkPathEffect; + +class SK_API SkTrimPathEffect { +public: + enum class Mode { + kNormal, // return the subset path [start,stop] + kInverted, // return the complement/subset paths [0,start] + [stop,1] + }; + + /** + * Take start and stop "t" values (values between 0...1), and return a path that is that + * subset of the original path. + * + * e.g. + * Make(0.5, 1.0) --> return the 2nd half of the path + * Make(0.33333, 0.66667) --> return the middle third of the path + * + * The trim values apply to the entire path, so if it contains several contours, all of them + * are including in the calculation. + * + * startT and stopT must be 0..1 inclusive. If they are outside of that interval, they will + * be pinned to the nearest legal value. If either is NaN, null will be returned. + * + * Note: for Mode::kNormal, this will return one (logical) segment (even if it is spread + * across multiple contours). For Mode::kInverted, this will return 2 logical + * segments: stopT..1 and 0...startT, in this order. + */ + static sk_sp Make(SkScalar startT, SkScalar stopT, Mode = Mode::kNormal); +}; + +#endif diff --git a/vendor/artifacts/skia/include/encode/BUILD.bazel b/vendor/artifacts/skia/include/encode/BUILD.bazel new file mode 100644 index 000000000..d76667c14 --- /dev/null +++ b/vendor/artifacts/skia/include/encode/BUILD.bazel @@ -0,0 +1,65 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +ENCODE_HDRS = ["SkEncoder.h"] + +skia_filegroup( + name = "encode_hdrs", + srcs = ENCODE_HDRS, + visibility = ["//src/encode:__pkg__"], +) + +ICC_HDRS = ["SkICC.h"] + +skia_filegroup( + name = "icc_hdrs", + srcs = ICC_HDRS, + visibility = ["//src/encode:__pkg__"], +) + +JPEG_HDRS = ["SkJpegEncoder.h"] + +skia_filegroup( + name = "jpeg_hdrs", + srcs = JPEG_HDRS, + visibility = ["//src/encode:__pkg__"], +) + +PNG_HDRS = ["SkPngEncoder.h"] + +skia_filegroup( + name = "png_hdrs", + srcs = PNG_HDRS, + visibility = ["//src/encode:__pkg__"], +) + +RUST_PNG_HDRS = ["SkPngRustEncoder.h"] + +skia_filegroup( + name = "rust_png_public_hdrs", + srcs = RUST_PNG_HDRS, + visibility = ["//src/encode:__pkg__"], +) + +WEBP_HDRS = ["SkWebpEncoder.h"] + +skia_filegroup( + name = "webp_hdrs", + srcs = WEBP_HDRS, + visibility = ["//src/encode:__pkg__"], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = ENCODE_HDRS + + ICC_HDRS + + JPEG_HDRS + + PNG_HDRS + + RUST_PNG_HDRS + + WEBP_HDRS, +) diff --git a/vendor/artifacts/skia/include/encode/SkEncoder.h b/vendor/artifacts/skia/include/encode/SkEncoder.h new file mode 100644 index 000000000..9603d99e9 --- /dev/null +++ b/vendor/artifacts/skia/include/encode/SkEncoder.h @@ -0,0 +1,63 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkEncoder_DEFINED +#define SkEncoder_DEFINED + +#include "include/core/SkPixmap.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkNoncopyable.h" +#include "include/private/base/SkTemplates.h" + +#include +#include + +class SK_API SkEncoder : SkNoncopyable { +public: + /** + * A single frame to be encoded into an animated image. + * + * If a frame does not fit in the canvas size, this is an error. + * TODO(skbug.com/40044793): Add offsets when we have support for an encoder that supports using + * offsets. + */ + struct SK_API Frame { + /** + * Pixmap of the frame. + */ + SkPixmap pixmap; + /** + * Duration of the frame in millseconds. + */ + int duration; + }; + + /** + * Encode |numRows| rows of input. If the caller requests more rows than are remaining + * in the src, this will encode all of the remaining rows. |numRows| must be greater + * than zero. + */ + bool encodeRows(int numRows); + + virtual ~SkEncoder() {} + +protected: + + virtual bool onEncodeRows(int numRows) = 0; + + SkEncoder(const SkPixmap& src, size_t storageBytes) + : fSrc(src) + , fCurrRow(0) + , fStorage(storageBytes) + {} + + const SkPixmap& fSrc; + int fCurrRow; + skia_private::AutoTMalloc fStorage; +}; + +#endif diff --git a/vendor/artifacts/skia/include/encode/SkICC.h b/vendor/artifacts/skia/include/encode/SkICC.h new file mode 100644 index 000000000..919224551 --- /dev/null +++ b/vendor/artifacts/skia/include/encode/SkICC.h @@ -0,0 +1,36 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkICC_DEFINED +#define SkICC_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include + +class SkData; +struct skcms_ICCProfile; +struct skcms_Matrix3x3; +struct skcms_TransferFunction; + +SK_API sk_sp SkWriteICCProfile(const skcms_TransferFunction&, + const skcms_Matrix3x3& toXYZD50); + +SK_API sk_sp SkWriteICCProfile(const skcms_ICCProfile*, const char* description); + +// Utility function for populating the grid_16 member of skcms_A2B and skcms_B2A +// structures. This converts a point in XYZD50 to its representation in grid_16_lab. +// It will write 6 bytes. The behavior of this function matches how skcms will decode +// values, but might not match the specification, see skbug.com/40044907. +SK_API void SkICCFloatXYZD50ToGrid16Lab(const float* float_xyz, uint8_t* grid16_lab); + +// Utility function for popluating the table_16 member of skcms_Curve structure. +// This converts a float to its representation in table_16. It will write 2 bytes. +SK_API void SkICCFloatToTable16(const float f, uint8_t* table_16); + +#endif//SkICC_DEFINED diff --git a/vendor/artifacts/skia/include/encode/SkJpegEncoder.h b/vendor/artifacts/skia/include/encode/SkJpegEncoder.h new file mode 100644 index 000000000..773a62bdb --- /dev/null +++ b/vendor/artifacts/skia/include/encode/SkJpegEncoder.h @@ -0,0 +1,127 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkJpegEncoder_DEFINED +#define SkJpegEncoder_DEFINED + +#include "include/codec/SkEncodedOrigin.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include +#include + +class SkColorSpace; +class SkData; +class SkEncoder; +class SkPixmap; +class SkWStream; +class SkImage; +class GrDirectContext; +class SkYUVAPixmaps; +struct skcms_ICCProfile; + +namespace SkJpegEncoder { + +enum class AlphaOption { + kIgnore, + kBlendOnBlack, +}; + +enum class Downsample { + /** + * Reduction by a factor of two in both the horizontal and vertical directions. + */ + k420, + + /** + * Reduction by a factor of two in the horizontal direction. + */ + k422, + + /** + * No downsampling. + */ + k444, +}; + +struct Options { + /** + * |fQuality| must be in [0, 100] where 0 corresponds to the lowest quality. + */ + int fQuality = 100; + + /** + * Choose the downsampling factor for the U and V components. This is only + * meaningful if the |src| is not kGray, since kGray will not be encoded as YUV. + * This is ignored in favor of |src|'s subsampling when |src| is an SkYUVAPixmaps. + * + * Our default value matches the libjpeg-turbo default. + */ + Downsample fDownsample = Downsample::k420; + + /** + * Jpegs must be opaque. This instructs the encoder on how to handle input + * images with alpha. + * + * The default is to ignore the alpha channel and treat the image as opaque. + * Another option is to blend the pixels onto a black background before encoding. + * In the second case, the encoder supports linear or legacy blending. + */ + AlphaOption fAlphaOption = AlphaOption::kIgnore; + + /** + * Optional XMP metadata. + */ + const SkData* xmpMetadata = nullptr; + + std::optional fOrigin; +}; + +/** + * Encode the |src| pixels to the |dst| stream. + * |options| may be used to control the encoding behavior. + * + * Returns true on success. Returns false on an invalid or unsupported |src|. + */ +SK_API bool Encode(SkWStream* dst, const SkPixmap& src, const Options& options); +SK_API bool Encode(SkWStream* dst, + const SkYUVAPixmaps& src, + const SkColorSpace* srcColorSpace, + const Options& options); + +/** + * Returns the encoded data for the pixmap, or nullptr on failure. + */ +SK_API sk_sp Encode(const SkPixmap& src, const Options& options); + +/** +* Encode the provided image and return the resulting bytes. If the image was created as +* a texture-backed image on a GPU context, that |ctx| must be provided so the pixels +* can be read before being encoded. For raster-backed images, |ctx| can be nullptr. +* |options| may be used to control the encoding behavior. +* +* Returns nullptr if the pixels could not be read or encoding otherwise fails. +*/ +SK_API sk_sp Encode(GrDirectContext* ctx, const SkImage* img, const Options& options); + +/** + * Create a jpeg encoder that will encode the |src| pixels to the |dst| stream. + * |options| may be used to control the encoding behavior. + * + * |dst| is unowned but must remain valid for the lifetime of the object. + * + * This returns nullptr on an invalid or unsupported |src|. + */ +SK_API std::unique_ptr Make(SkWStream* dst, const SkPixmap& src, const Options& options); +SK_API std::unique_ptr Make(SkWStream* dst, + const SkYUVAPixmaps& src, + const SkColorSpace* srcColorSpace, + const Options& options); +} // namespace SkJpegEncoder + +#endif diff --git a/vendor/artifacts/skia/include/encode/SkPngEncoder.h b/vendor/artifacts/skia/include/encode/SkPngEncoder.h new file mode 100644 index 000000000..c44a2d653 --- /dev/null +++ b/vendor/artifacts/skia/include/encode/SkPngEncoder.h @@ -0,0 +1,132 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPngEncoder_DEFINED +#define SkPngEncoder_DEFINED + +#include "include/core/SkDataTable.h" +#include "include/core/SkRefCnt.h" +#include "include/private/SkHdrMetadata.h" +#include "include/private/base/SkAPI.h" + +// TODO(kjlubick) update clients to directly include this +#include "include/encode/SkEncoder.h" // IWYU pragma: keep + +#include + +class GrDirectContext; +class SkData; +class SkImage; +class SkPixmap; +class SkWStream; +struct skcms_ICCProfile; +struct SkGainmapInfo; + +namespace SkPngEncoder { + +enum class FilterFlag : int { + kZero = 0x00, + kNone = 0x08, + kSub = 0x10, + kUp = 0x20, + kAvg = 0x40, + kPaeth = 0x80, + kAll = kNone | kSub | kUp | kAvg | kPaeth, +}; + +inline FilterFlag operator|(FilterFlag x, FilterFlag y) { return (FilterFlag)((int)x | (int)y); } + +struct Options { + /** + * Selects which filtering strategies to use. + * + * If a single filter is chosen, libpng will use that filter for every row. + * + * If multiple filters are chosen, libpng will use a heuristic to guess which filter + * will encode smallest, then apply that filter. This happens on a per row basis, + * different rows can use different filters. + * + * Using a single filter (or less filters) is typically faster. Trying all of the + * filters may help minimize the output file size. + * + * Our default value matches libpng's default. + */ + FilterFlag fFilterFlags = FilterFlag::kAll; + + /** + * Must be in [0, 9] where 9 corresponds to maximal compression. This value is passed + * directly to zlib. 0 is a special case to skip zlib entirely, creating dramatically + * larger pngs. + * + * Our default value matches libpng's default. + */ + int fZLibLevel = 6; + + /** + * Represents comments in the tEXt ancillary chunk of the png. + * The 2i-th entry is the keyword for the i-th comment, + * and the (2i + 1)-th entry is the text for the i-th comment. + */ + sk_sp fComments; + + /** + * Container for any HDR metadata to include in the encoded image. + */ + skhdr::Metadata fHdrMetadata; + + /** + * If non-null, then a gainmap and its metadata will be encoded as png chunks. + * The gainmap will be encoded in a gmAP chunk as a full PNG container. The + * gainmap info will be encoded in a gdAT chunk inside of the gmAP chunk. + * This effectively is Option B proposed in this discussion for adding gainmaps + * into PNG: https://github.com/w3c/png/issues/380#issuecomment-2325163149. + * + * Note that if fGainmapInfo is null, then fGainmap will fail to encode, as the + * gainmap metadata is required to correctly interpret the encoded gainmap. + */ + const SkPixmap* fGainmap = nullptr; + const SkGainmapInfo* fGainmapInfo = nullptr; +}; + +/** + * Encode the |src| pixels to the |dst| stream. + * |options| may be used to control the encoding behavior. + * + * Returns true on success. Returns false on an invalid or unsupported |src|. + */ +SK_API bool Encode(SkWStream* dst, const SkPixmap& src, const Options& options); + +/** + * Returns the encoded data for the pixmap, or nullptr on failure. + */ +SK_API sk_sp Encode(const SkPixmap& src, const Options& options); + +/** +* Encode the provided image and return the resulting bytes. If the image was created as +* a texture-backed image on a GPU context, that |ctx| must be provided so the pixels +* can be read before being encoded. For raster-backed images, |ctx| can be nullptr. +* |options| may be used to control the encoding behavior. +* +* Returns nullptr if the pixels could not be read or encoding otherwise fails. +*/ +SK_API sk_sp Encode(GrDirectContext* ctx, const SkImage* img, const Options& options); + +/** + * Create a png encoder that will encode the |src| pixels to the |dst| stream. + * |options| may be used to control the encoding behavior. + * + * The primary use of this is incremental encoding of the pixels. + * + * |dst| is unowned but must remain valid for the lifetime of the object. + * + * This returns nullptr on an invalid or unsupported |src|. + */ +SK_API std::unique_ptr Make(SkWStream* dst, const SkPixmap& src, const Options& options); + +} // namespace SkPngEncoder + +#endif diff --git a/vendor/artifacts/skia/include/encode/SkPngRustEncoder.h b/vendor/artifacts/skia/include/encode/SkPngRustEncoder.h new file mode 100644 index 000000000..509e058ff --- /dev/null +++ b/vendor/artifacts/skia/include/encode/SkPngRustEncoder.h @@ -0,0 +1,106 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkPngRustEncoder_DEFINED +#define SkPngRustEncoder_DEFINED + +#include +#include + +#include "include/core/SkDataTable.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class GrDirectContext; +class SkData; +class SkEncoder; +class SkImage; +class SkPixmap; +class SkWStream; + +namespace SkPngRustEncoder { + +/* + * Compression level. + */ +enum class CompressionLevel : uint8_t { + // Low compression level - fast, but may result in bigger PNG files. + kLow, + + // Medium compression level - somewhere in-between `kLow` and `kHigh`. + kMedium, + + // High compression level - slow, but should results in smaller PNG files. + kHigh, +}; + +/* + * PNG encoding options. + * + * TODO(https://crbug.com/379312510): Add support for `SkPngEncoder::Options` + * like: + * - Comments - `tEXt` chunks. + * - Color profile - `iCCP` chunk. + */ +struct Options { + CompressionLevel fCompressionLevel = CompressionLevel::kMedium; + + /** + * Represents comments to be written into tEXt chunks of the png. + * + * The 2i-th entry is the keyword for the i-th comment, + * and the (2i + 1)-th entry is the text for the i-th comment. + * + * All entries are treated as strings encoded as Latin-1 (i.e. + * ISO-8859-1). The strings may, but don't have to be NUL-terminated + * (trailing NUL characters will be stripped). Encoding will fail if + * keyword or text don't meet the requirements of the PNG spec - text may + * have any length and contain any of the 191 Latin-1 characters (and/or + * the linefeed character), but keyword's length is restricted to at most + * 79 characters and it can't contain a non-breaking space character. + */ + sk_sp fComments; +}; + +/** + * Encode the |src| pixels to the |dst| stream. + * |options| may be used to control the encoding behavior. + * + * Returns true on success. Returns false on an invalid or unsupported |src|. + * + */ +SK_API bool Encode(SkWStream* dst, const SkPixmap& src, const Options& options); + +/** + * Returns the encoded data for the pixmap, or nullptr on failure. + */ +SK_API sk_sp Encode(const SkPixmap& src, const Options& options); + +/** + * Encode the provided image and return the resulting bytes. If the image was created as + * a texture-backed image on a GPU context, that |ctx| must be provided so the pixels + * can be read before being encoded. For raster-backed images, |ctx| can be nullptr. + * |options| may be used to control the encoding behavior. + * + * Returns nullptr if the pixels could not be read or encoding otherwise fails. + */ +SK_API sk_sp Encode(GrDirectContext* ctx, const SkImage* img, const Options& options); + +/** + * Create a png encoder that will encode the |src| pixels to the |dst| stream. + * |options| may be used to control the encoding behavior. + * + * The primary use of this is incremental encoding of the pixels. + * + * |dst| is unowned but must remain valid for the lifetime of the object. + * + * This returns nullptr on an invalid or unsupported |src|. + */ +SK_API std::unique_ptr Make(SkWStream* dst, const SkPixmap& src, const Options& options); + +} // namespace SkPngRustEncoder + +#endif // SkPngRustEncoder_DEFINED diff --git a/vendor/artifacts/skia/include/encode/SkWebpEncoder.h b/vendor/artifacts/skia/include/encode/SkWebpEncoder.h new file mode 100644 index 000000000..015a4ef2e --- /dev/null +++ b/vendor/artifacts/skia/include/encode/SkWebpEncoder.h @@ -0,0 +1,87 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkWebpEncoder_DEFINED +#define SkWebpEncoder_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" // IWYU pragma: keep +#include "include/encode/SkEncoder.h" +#include "include/private/base/SkAPI.h" + +class SkPixmap; +class SkWStream; +class SkData; +class GrDirectContext; +class SkImage; +struct skcms_ICCProfile; + +namespace SkWebpEncoder { + +enum class Compression { + kLossy, + kLossless, +}; + +struct SK_API Options { + /** + * |fCompression| determines whether we will use webp lossy or lossless compression. + * + * |fQuality| must be in [0.0f, 100.0f]. + * If |fCompression| is kLossy, |fQuality| corresponds to the visual quality of the + * encoding. Decreasing the quality will result in a smaller encoded image. + * If |fCompression| is kLossless, |fQuality| corresponds to the amount of effort + * put into the encoding. Lower values will compress faster into larger files, + * while larger values will compress slower into smaller files. + * + * This scheme is designed to match the libwebp API. + */ + Compression fCompression = Compression::kLossy; + float fQuality = 100.0f; +}; + +/** + * Encode the |src| pixels to the |dst| stream. + * |options| may be used to control the encoding behavior. + * + * Returns true on success. Returns false on an invalid or unsupported |src|. + */ +SK_API bool Encode(SkWStream* dst, const SkPixmap& src, const Options& options); + +/** + * Returns the encoded data for the pixmap, or nullptr on failure. + */ +SK_API sk_sp Encode(const SkPixmap& src, const Options& options); + +/** +* Encode the provided image and return the resulting bytes. If the image was created as +* a texture-backed image on a GPU context, that |ctx| must be provided so the pixels +* can be read before being encoded. For raster-backed images, |ctx| can be nullptr. +* |options| may be used to control the encoding behavior. +* +* Returns nullptr if the pixels could not be read or encoding otherwise fails. +*/ +SK_API sk_sp Encode(GrDirectContext* ctx, const SkImage* img, const Options& options); + +/** + * Encode the |src| frames to the |dst| stream. + * |options| may be used to control the encoding behavior. + * + * The size of the first frame will be used as the canvas size. If any other frame does + * not match the canvas size, this is an error. + * + * Returns true on success. Returns false on an invalid or unsupported |src|. + * + * Note: libwebp API also supports set background color, loop limit and customize + * lossy/lossless for each frame. These could be added later as needed. + */ +SK_API bool EncodeAnimated(SkWStream* dst, + SkSpan src, + const Options& options); +} // namespace SkWebpEncoder + +#endif diff --git a/vendor/artifacts/skia/include/gpu/BUILD.bazel b/vendor/artifacts/skia/include/gpu/BUILD.bazel new file mode 100644 index 000000000..b1aceda54 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/BUILD.bazel @@ -0,0 +1,24 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "GpuTypes.h", + "MutableTextureState.h", + "ShaderErrorHandler.h", +] + +skia_filegroup( + name = "shared_gpu_hdrs", + srcs = PUBLIC_HEADERS, + visibility = ["//src/gpu:__subpackages__"], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/GpuTypes.h b/vendor/artifacts/skia/include/gpu/GpuTypes.h new file mode 100644 index 000000000..4329585e6 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/GpuTypes.h @@ -0,0 +1,98 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_GpuTypes_DEFINED +#define skgpu_GpuTypes_DEFINED + +#include "include/core/SkTypes.h" +#include "include/private/base/SkMacros.h" + +/** + * This file includes numerous public types that are used by all of our gpu backends. + */ + +namespace skgpu { + +/** + * Possible 3D APIs that may be used by Graphite. + */ +enum class BackendApi : unsigned { + kDawn, + kMetal, + kVulkan, + kMock, + + /** + * Graphite doesn't support some context types (e.g. Direct3D) and will return Unsupported. + */ + kUnsupported, +}; + +/** Indicates whether an allocation should count against a cache budget. */ +enum class Budgeted : bool { + kNo = false, + kYes = true, +}; + +/** + * Value passed into various callbacks to tell the client the result of operations connected to a + * specific callback. The actual interpretation of kFailed and kSuccess are dependent on the + * specific callbacks and are documented with the callback itself. + */ +enum class CallbackResult : bool { + kFailed = false, + kSuccess = true, +}; + +/** + * Is the texture mipmapped or not + */ +enum class Mipmapped : bool { + kNo = false, + kYes = true, +}; + +/** + * Is the data protected on the GPU or not. + */ +enum class Protected : bool { + kNo = false, + kYes = true, +}; + +/** + * Is a texture renderable or not + */ +enum class Renderable : bool { + kNo = false, + kYes = true, +}; + +/** + * What is the logical origin of a BackendTexture passed into Skia + */ +enum class Origin : unsigned { + kTopLeft, + kBottomLeft, +}; + +enum class GpuStatsFlags : uint32_t { + kNone = 0b00, + kElapsedTime = 0b01, + kOcclusionPassSamples = 0b10, +}; +SK_MAKE_BITFIELD_CLASS_OPS(GpuStatsFlags) + +struct GpuStats { + uint64_t elapsedTime = 0; + uint64_t numOcclusionPassSamples = 0; +}; + +} // namespace skgpu + + +#endif // skgpu_GpuTypes_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/MutableTextureState.h b/vendor/artifacts/skia/include/gpu/MutableTextureState.h new file mode 100644 index 000000000..771f58df0 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/MutableTextureState.h @@ -0,0 +1,68 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_MutableTextureState_DEFINED +#define skgpu_MutableTextureState_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkAnySubclass.h" + +#include + +namespace skgpu { +enum class BackendApi : unsigned int; +class MutableTextureStateData; + +/** + * Since Skia and clients can both modify gpu textures and their connected state, Skia needs a way + * for clients to inform us if they have modifiend any of this state. In order to not need setters + * for every single API and state, we use this class to be a generic wrapper around all the mutable + * state. This class is used for calls that inform Skia of these texture/image state changes by the + * client as well as for requesting state changes to be done by Skia. The backend specific state + * that is wrapped by this class are located in files like: + * - include/gpu/vk/VulkanMutableTextureState.h + */ +class SK_API MutableTextureState : public SkRefCnt { +public: + MutableTextureState(); + ~MutableTextureState() override; + + MutableTextureState(const MutableTextureState& that); + + MutableTextureState& operator=(const MutableTextureState& that); + + void set(const MutableTextureState& that); + + BackendApi backend() const { return fBackend; } + + // Returns true if the backend mutable state has been initialized. + bool isValid() const { return fIsValid; } + +private: + friend class MutableTextureStateData; + friend class MutableTextureStatePriv; + // Size determined by looking at the MutableTextureStateData subclasses, then + // guessing-and-checking. Compiler will complain if this is too small - in that case, + // just increase the number. + inline constexpr static size_t kMaxSubclassSize = 16; + using AnyStateData = SkAnySubclass; + + template + MutableTextureState(BackendApi api, const StateData& data) : fBackend(api), fIsValid(true) { + fStateData.emplace(data); + } + + AnyStateData fStateData; + + BackendApi fBackend; + bool fIsValid; +}; + +} // namespace skgpu + +#endif // skgpu_MutableTextureState_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ShaderErrorHandler.h b/vendor/artifacts/skia/include/gpu/ShaderErrorHandler.h new file mode 100644 index 000000000..7e294dc6a --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ShaderErrorHandler.h @@ -0,0 +1,46 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_ShaderErrorHandler_DEFINED +#define skgpu_ShaderErrorHandler_DEFINED + +#include "include/core/SkTypes.h" + +namespace skgpu { +/** + * Abstract class to report errors when compiling shaders. + */ +class SK_API ShaderErrorHandler { +public: + virtual ~ShaderErrorHandler() = default; + + /** + * compileError(shader, errors) is kept for backward compatibility with older clients. + */ + virtual void compileError([[maybe_unused]] const char* shader, + [[maybe_unused]] const char* errors) {} + virtual void compileError(const char* shader, + const char* errors, + [[maybe_unused]] bool shaderWasCached) { + // Default implementation. Ignore shaderWasCached. + this->compileError(shader, errors); + } + +protected: + ShaderErrorHandler() = default; + ShaderErrorHandler(const ShaderErrorHandler&) = delete; + ShaderErrorHandler& operator=(const ShaderErrorHandler&) = delete; +}; + +/** + * Used when no error handler is set. Will report failures via SkDebugf and asserts. + */ +ShaderErrorHandler* DefaultShaderErrorHandler(); + +} // namespace skgpu + +#endif // skgpu_ShaderErrorHandler_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/BUILD.bazel new file mode 100644 index 000000000..dca7cc474 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/BUILD.bazel @@ -0,0 +1,35 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "GrBackendSemaphore.h", + "GrBackendSurface.h", + "GrContextOptions.h", + "GrContextThreadSafeProxy.h", + "GrDirectContext.h", + "GrDriverBugWorkarounds.h", + "GrDriverBugWorkaroundsAutogen.h", + "GrExternalTextureGenerator.h", + "GrRecordingContext.h", + "GrTypes.h", + "GrYUVABackendTextures.h", + "SkImageGanesh.h", + "SkMeshGanesh.h", + "SkSurfaceGanesh.h", +] + +skia_filegroup( + name = "ganesh_hdrs", + srcs = PUBLIC_HEADERS, + visibility = ["//src/gpu/ganesh:__subpackages__"], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/GrBackendSemaphore.h b/vendor/artifacts/skia/include/gpu/ganesh/GrBackendSemaphore.h new file mode 100644 index 000000000..576a2db8b --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/GrBackendSemaphore.h @@ -0,0 +1,50 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GrBackendSemaphore_DEFINED +#define GrBackendSemaphore_DEFINED + +#include "include/gpu/ganesh/GrTypes.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAnySubclass.h" + +#include + +class GrBackendSemaphoreData; + +/** + * Wrapper class for passing into and receiving data from Ganesh about a backend semaphore object. + */ +class SK_API GrBackendSemaphore { +public: + // An empty semaphore. To instantiate, see GrBackendSemaphores::MakeVk and similar + GrBackendSemaphore(); + ~GrBackendSemaphore(); + GrBackendSemaphore(const GrBackendSemaphore&); + GrBackendSemaphore& operator=(const GrBackendSemaphore&); + + GrBackendApi backend() const { return fBackend; } + bool isInitialized() const { return fBackend != GrBackendApi::kUnsupported; } + +private: + friend class GrBackendSemaphorePriv; + friend class GrBackendSemaphoreData; + // Size determined by looking at the GrBackendSemaphoreData subclasses, then + // guessing-and-checking. Compiler will complain if this is too small - in that case, + // just increase the number. + inline constexpr static size_t kMaxSubclassSize = 24; + using AnySemaphoreData = SkAnySubclass; + + template + GrBackendSemaphore(GrBackendApi api, SemaphoreData data) : fBackend(api) { + fSemaphoreData.emplace(data); + } + + GrBackendApi fBackend = GrBackendApi::kUnsupported; + AnySemaphoreData fSemaphoreData; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/GrBackendSurface.h b/vendor/artifacts/skia/include/gpu/ganesh/GrBackendSurface.h new file mode 100644 index 000000000..eec529ec4 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/GrBackendSurface.h @@ -0,0 +1,257 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrBackendSurface_DEFINED +#define GrBackendSurface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/gpu/GpuTypes.h" +#include "include/gpu/ganesh/GrTypes.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAnySubclass.h" +#include "include/private/base/SkDebug.h" +#include "include/private/gpu/ganesh/GrTypesPriv.h" + +class GrBackendFormatData; +class GrBackendTextureData; +class GrBackendRenderTargetData; + +namespace skgpu { +class MutableTextureState; +} + +#if defined(SK_DEBUG) || defined(GPU_TEST_UTILS) +class SkString; +#endif + +#include +#include +#include +#include + +class SK_API GrBackendFormat { +public: + // Creates an invalid backend format. + GrBackendFormat(); + GrBackendFormat(const GrBackendFormat&); + GrBackendFormat& operator=(const GrBackendFormat&); + ~GrBackendFormat(); + + bool operator==(const GrBackendFormat& that) const; + bool operator!=(const GrBackendFormat& that) const { return !(*this == that); } + + GrBackendApi backend() const { return fBackend; } + GrTextureType textureType() const { return fTextureType; } + + /** + * Gets the channels present in the format as a bitfield of SkColorChannelFlag values. + * Luminance channels are reported as kGray_SkColorChannelFlag. + */ + uint32_t channelMask() const; + + GrColorFormatDesc desc() const; + + // If possible, copies the GrBackendFormat and forces the texture type to be Texture2D. If the + // GrBackendFormat was for Vulkan and it originally had a skgpu::VulkanYcbcrConversionInfo, + // we will remove the conversion and set the format to be VK_FORMAT_R8G8B8A8_UNORM. + GrBackendFormat makeTexture2D() const; + + // Returns true if the backend format has been initialized. + bool isValid() const { return fValid; } + +#if defined(SK_DEBUG) || defined(GPU_TEST_UTILS) + SkString toStr() const; +#endif + +private: + // Size determined by looking at the GrBackendFormatData subclasses, then guessing-and-checking. + // Compiler will complain if this is too small - in that case, just increase the number. + inline constexpr static size_t kMaxSubclassSize = 80; + using AnyFormatData = SkAnySubclass; + + friend class GrBackendSurfacePriv; + friend class GrBackendFormatData; + + // Used by internal factories. Should not be used externally. Use factories like + // GrBackendFormats::MakeGL instead. + template + GrBackendFormat(GrTextureType textureType, GrBackendApi api, const FormatData& formatData) + : fBackend(api), fTextureType(textureType), fValid(true) { + fFormatData.emplace(formatData); + } + + AnyFormatData fFormatData; + GrBackendApi fBackend = GrBackendApi::kUnsupported; + GrTextureType fTextureType = GrTextureType::kNone; + bool fValid = false; +}; + +class SK_API GrBackendTexture { +public: + // Creates an invalid backend texture. + GrBackendTexture(); + GrBackendTexture(const GrBackendTexture& that); + ~GrBackendTexture(); + GrBackendTexture& operator=(const GrBackendTexture& that); + + SkISize dimensions() const { return {fWidth, fHeight}; } + int width() const { return fWidth; } + int height() const { return fHeight; } + std::string_view getLabel() const { return fLabel; } + skgpu::Mipmapped mipmapped() const { return fMipmapped; } + bool hasMipmaps() const { return fMipmapped == skgpu::Mipmapped::kYes; } + GrBackendApi backend() const {return fBackend; } + GrTextureType textureType() const { return fTextureType; } + + // Get the GrBackendFormat for this texture (or an invalid format if this is not valid). + GrBackendFormat getBackendFormat() const; + + // If the client changes any of the mutable backend of the GrBackendTexture they should call + // this function to inform Skia that those values have changed. The backend API specific state + // that can be set from this function are: + // + // Vulkan: VkImageLayout and QueueFamilyIndex + void setMutableState(const skgpu::MutableTextureState&); + + // Returns true if we are working with protected content. + bool isProtected() const; + + // Returns true if the backend texture has been initialized. + bool isValid() const { return fIsValid; } + + // Returns true if both textures are valid and refer to the same API texture. + bool isSameTexture(const GrBackendTexture&); + +#if defined(GPU_TEST_UTILS) + static bool TestingOnly_Equals(const GrBackendTexture&, const GrBackendTexture&); +#endif + +private: + // Size determined by looking at the GrBackendTextureData subclasses, then guessing-and-checking. + // Compiler will complain if this is too small - in that case, just increase the number. + inline constexpr static size_t kMaxSubclassSize = 176; + using AnyTextureData = SkAnySubclass; + + friend class GrBackendSurfacePriv; + friend class GrBackendTextureData; + + // Used by internal factories. Should not be used externally. Use factories like + // GrBackendTextures::MakeGL instead. + template + GrBackendTexture(int width, + int height, + std::string_view label, + skgpu::Mipmapped mipped, + GrBackendApi backend, + GrTextureType texture, + const TextureData& textureData) + : fIsValid(true) + , fWidth(width) + , fHeight(height) + , fLabel(label) + , fMipmapped(mipped) + , fBackend(backend) + , fTextureType(texture) { + fTextureData.emplace(textureData); + } + + friend class GrVkGpu; // for getMutableState + sk_sp getMutableState() const; + + bool fIsValid; + int fWidth; //; + + friend class GrBackendSurfacePriv; + friend class GrBackendRenderTargetData; + + // Used by internal factories. Should not be used externally. Use factories like + // GrBackendRenderTargets::MakeGL instead. + template + GrBackendRenderTarget(int width, + int height, + int sampleCnt, + int stencilBits, + GrBackendApi backend, + bool framebufferOnly, + const RenderTargetData& rtData) + : fIsValid(true) + , fFramebufferOnly(framebufferOnly) + , fWidth(width) + , fHeight(height) + , fSampleCnt(sampleCnt) + , fStencilBits(stencilBits) + , fBackend(backend) { + fRTData.emplace(rtData); + } + + friend class GrVkGpu; // for getMutableState + sk_sp getMutableState() const; + + bool fIsValid; + bool fFramebufferOnly = false; + int fWidth; // +#include + +class SkExecutor; + +struct SK_API GrContextOptions { + enum class Enable { + /** Forces an option to be disabled. */ + kNo, + /** Forces an option to be enabled. */ + kYes, + /** + * Uses Skia's default behavior, which may use runtime properties (e.g. driver version). + */ + kDefault + }; + + enum class ShaderCacheStrategy { + kSkSL, + kBackendSource, + kBackendBinary, + }; + + /** + * Abstract class which stores Skia data in a cache that persists between sessions. Currently, + * Skia stores compiled shader binaries (only when glProgramBinary / glGetProgramBinary are + * supported) when provided a persistent cache, but this may extend to other data in the future. + */ + class SK_API PersistentCache { + public: + virtual ~PersistentCache() = default; + + /** + * Returns the data for the key if it exists in the cache, otherwise returns null. + */ + virtual sk_sp load(const SkData& key) = 0; + + // Placeholder until all clients override the 3-parameter store(), then remove this, and + // make that version pure virtual. + virtual void store(const SkData& /*key*/, const SkData& /*data*/) { SkASSERT(false); } + + /** + * Stores data in the cache, indexed by key. description provides a human-readable + * version of the key. + */ + virtual void store(const SkData& key, const SkData& data, const SkString& /*description*/) { + this->store(key, data); + } + + protected: + PersistentCache() = default; + PersistentCache(const PersistentCache&) = delete; + PersistentCache& operator=(const PersistentCache&) = delete; + }; + + using ShaderErrorHandler = skgpu::ShaderErrorHandler; + + GrContextOptions() {} + + /** + * Optional callback that can be passed into the GrDirectContext which will be called when the + * GrDirectContext is about to be destroyed. When this call is made, it will be safe for the + * client to delete the GPU backend context that is backing the GrDirectContext. The + * GrDirectContextDestroyedContext will be passed back to the client in the callback. + */ + GrDirectContextDestroyedContext fContextDeleteContext = nullptr; + GrDirectContextDestroyedProc fContextDeleteProc = nullptr; + + /** + * Executor to handle threaded work within Ganesh. If this is nullptr, then all work will be + * done serially on the main thread. To have worker threads assist with various tasks, set this + * to a valid SkExecutor instance. Currently, used for software path rendering, but may be used + * for other tasks. + */ + SkExecutor* fExecutor = nullptr; + + /** + * Cache in which to store compiled shader binaries between runs. + */ + PersistentCache* fPersistentCache = nullptr; + + /** + * If present, use this object to report shader compilation failures. If not, report failures + * via SkDebugf and assert. + */ + ShaderErrorHandler* fShaderErrorHandler = nullptr; + + /** Default minimum size to use when allocating buffers for uploading data to textures. The + larger the value the more uploads can be packed into one buffer, but at the cost of + more gpu memory allocated that may not be used. Uploads larger than the minimum will still + work by allocating a dedicated buffer. */ + size_t fMinimumStagingBufferSize = 64 * 1024; + + /** + * The maximum size of cache textures used for Skia's Glyph cache. + */ + size_t fGlyphCacheTextureMaximumBytes = 2048 * 1024 * 4; + + /** + * Controls whether we check for GL errors after functions that allocate resources (e.g. + * glTexImage2D), at the end of a GPU submission, or checking framebuffer completeness. The + * results of shader compilation and program linking are always checked, regardless of this + * option. Ignored on backends other than GL. + */ + Enable fSkipGLErrorChecks = Enable::kDefault; + + /** + * Can the glyph atlas use multiple textures. If allowed, the each texture's size is bound by + * fGlypheCacheTextureMaximumBytes. + */ + Enable fAllowMultipleGlyphCacheTextures = Enable::kDefault; + + /** + * Enables driver workaround to use draws instead of HW clears, e.g. glClear on the GL backend. + */ + Enable fUseDrawInsteadOfClear = Enable::kDefault; + + /** + * Allow Ganesh to more aggressively reorder operations to reduce the number of render passes. + * Offscreen draws will be done upfront instead of interrupting the main render pass when + * possible. May increase VRAM usage, but still observes the resource cache limit. + * Enabled by default. + */ + Enable fReduceOpsTaskSplitting = Enable::kDefault; + + /** + * This affects the usage of the PersistentCache. We can cache SkSL, backend source (GLSL), or + * backend binaries (GL program binaries). By default we cache binaries, but if the driver's + * binary loading/storing is believed to have bugs, this can be limited to caching GLSL. + * Caching GLSL strings still saves CPU work when a GL program is created. + */ + ShaderCacheStrategy fShaderCacheStrategy = ShaderCacheStrategy::kBackendBinary; + + /** Overrides: These options override feature detection using backend API queries. These + overrides can only reduce the feature set or limits, never increase them beyond the + detected values. */ + + int fMaxTextureSizeOverride = SK_MaxS32; + + /** the threshold in bytes above which we will use a buffer mapping API to map vertex and index + buffers to CPU memory in order to update them. A value of -1 means the GrContext should + deduce the optimal value for this platform. */ + int fBufferMapThreshold = -1; + + /** + * Maximum number of GPU programs or pipelines to keep active in the runtime cache. + */ + int fRuntimeProgramCacheSize = 256; + + /** + * Specifies the number of samples Ganesh should use when performing internal draws with MSAA + * (hardware capabilities permitting). + * + * If 0, Ganesh will disable internal code paths that use multisampling. + */ + int fInternalMultisampleCount = 4; + + /** + * In Skia's vulkan backend a single GrContext submit equates to the submission of a single + * primary command buffer to the VkQueue. This value specifies how many vulkan secondary command + * buffers we will cache for reuse on a given primary command buffer. A single submit may use + * more than this many secondary command buffers, but after the primary command buffer is + * finished on the GPU it will only hold on to this many secondary command buffers for reuse. + * + * A value of -1 means we will pick a limit value internally. + */ + int fMaxCachedVulkanSecondaryCommandBuffers = -1; + + /** + * Below this threshold size in device space distance field fonts won't be used. Distance field + * fonts don't support hinting which is more important at smaller sizes. + */ + float fMinDistanceFieldFontSize = 18; + + /** + * Above this threshold size in device space glyphs are drawn as individual paths. + */ +#if defined(SK_BUILD_FOR_ANDROID) + float fGlyphsAsPathsFontSize = 384; +#elif defined(SK_BUILD_FOR_MAC) + float fGlyphsAsPathsFontSize = 256; +#else + float fGlyphsAsPathsFontSize = 324; +#endif + + GrDriverBugWorkarounds fDriverBugWorkarounds; + + /** Construct mipmaps manually, via repeated downsampling draw-calls. This is used when + the driver's implementation (glGenerateMipmap) contains bugs. This requires mipmap + level control (ie desktop or ES3). */ + bool fDoManualMipmapping = false; + + /** + * Disables the use of coverage counting shortcuts to render paths. Coverage counting can cause + * artifacts along shared edges if care isn't taken to ensure both contours wind in the same + * direction. + */ + // FIXME: Once this is removed from Chrome and Android, rename to fEnable"". + bool fDisableCoverageCountingPaths = true; + + /** + * Disables distance field rendering for paths. Distance field computation can be expensive, + * and yields no benefit if a path is not rendered multiple times with different transforms. + */ + bool fDisableDistanceFieldPaths = false; + + /** + * If true this allows path mask textures to be cached. This is only really useful if paths + * are commonly rendered at the same scale and fractional translation. + */ + bool fAllowPathMaskCaching = true; + + /** + * If true, the GPU will not be used to perform YUV -> RGB conversion when generating + * textures from codec-backed images. + */ + bool fDisableGpuYUVConversion = false; + + /** + * Bugs on certain drivers cause stencil buffers to leak. This flag causes Skia to avoid + * allocating stencil buffers and use alternate rasterization paths, avoiding the leak. + */ + bool fAvoidStencilBuffers = false; + + /** + * If true, texture fetches from mip-mapped textures will be biased to read larger MIP levels. + * This has the effect of sharpening those textures, at the cost of some aliasing, and possible + * performance impact. + */ + bool fSharpenMipmappedTextures = true; + + /** + * Some ES3 contexts report the ES2 external image extension, but not the ES3 version. + * If support for external images is critical, enabling this option will cause Ganesh to limit + * shaders to the ES2 shading language in that situation. + */ + bool fPreferExternalImagesOverES3 = false; + + /** + * Disables correctness workarounds that are enabled for particular GPUs, OSes, or drivers. + * This does not affect code path choices that are made for perfomance reasons nor does it + * override other GrContextOption settings. + */ + bool fDisableDriverCorrectnessWorkarounds = false; + + /** + * If true, the caps will never support mipmaps. + */ + bool fSuppressMipmapSupport = false; + + /** + * If true, the TessellationPathRenderer will not be used for path rendering. + * If false, will fallback to any driver workarounds, if set. + */ + bool fDisableTessellationPathRenderer = false; + + /** + * If true, and if supported, enables hardware tessellation in the caps. + * DEPRECATED: This value is ignored; experimental hardware tessellation is always disabled. + */ + bool fEnableExperimentalHardwareTessellation = false; + + /** + * If true, then add 1 pixel padding to all glyph masks in the atlas to support bi-lerp + * rendering of all glyphs. This must be set to true to use Slugs. + */ + bool fSupportBilerpFromGlyphAtlas = false; + + /** + * Uses a reduced variety of shaders. May perform less optimally in steady state but can reduce + * jank due to shader compilations. + */ + bool fReducedShaderVariations = false; + + /** + * If true, then allow to enable MSAA on new Intel GPUs. + */ + bool fAllowMSAAOnNewIntel = false; + + /** + * Currently on ARM Android we disable the use of GL TexStorage because of memory regressions. + * However, some clients may still want to use TexStorage. For example, TexStorage support is + * required for creating protected textures. + * + * This flag has no impact on non GL backends. + */ + bool fAlwaysUseTexStorageWhenAvailable = false; + + // Suppress prints for the GrContext. + bool fSuppressPrints = false; + +#if defined(GPU_TEST_UTILS) + /** + * Private options that are only meant for testing within Skia's tools. + */ + + /** + * Include or exclude specific GPU path renderers. + */ + GpuPathRenderers fGpuPathRenderers = GpuPathRenderers::kDefault; + + /** + * Specify the GPU resource cache limit. Equivalent to calling `setResourceCacheLimit` on the + * context at construction time. + * + * A value of -1 means use the default limit value. + */ + int fResourceCacheLimitOverride = -1; + + /** + * Maximum width and height of internal texture atlases. + */ + int fMaxTextureAtlasSize = 2048; + + /** + * Testing-only mode to exercise allocation failures in the flush-time callback objects. + * For now it only simulates allocation failure during the preFlush callback. + */ + bool fFailFlushTimeCallbacks = false; + + /** + * Prevents use of dual source blending, to test that all xfer modes work correctly without it. + */ + bool fSuppressDualSourceBlending = false; + + /** + * Prevents the use of non-coefficient-based blend equations, for testing dst reads, barriers, + * and in-shader blending. + */ + bool fSuppressAdvancedBlendEquations = false; + + /** + * Prevents the use of framebuffer fetches, for testing dst reads and texture barriers. + */ + bool fSuppressFramebufferFetch = false; + + /** + * If true, then all paths are processed as if "setIsVolatile" had been called. + */ + bool fAllPathsVolatile = false; + + /** + * Render everything in wireframe + */ + bool fWireframeMode = false; + + /** + * Enforces clearing of all textures when they're created. + */ + bool fClearAllTextures = false; + + /** + * Randomly generate a (false) GL_OUT_OF_MEMORY error + */ + bool fRandomGLOOM = false; + + /** + * Force off support for write/transfer pixels row bytes in caps. + */ + bool fDisallowWriteAndTransferPixelRowBytes = false; + +#endif + +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h b/vendor/artifacts/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h new file mode 100644 index 000000000..e5bf3e9de --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/GrContextThreadSafeProxy.h @@ -0,0 +1,175 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrContextThreadSafeProxy_DEFINED +#define GrContextThreadSafeProxy_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" +#include "include/gpu/GpuTypes.h" +#include "include/gpu/ganesh/GrContextOptions.h" +#include "include/gpu/ganesh/GrTypes.h" + +#include +#include +#include +#include + +class GrBackendFormat; +class GrCaps; +class GrContextThreadSafeProxyPriv; +class GrSurfaceCharacterization; +class GrThreadSafeCache; +class GrThreadSafePipelineBuilder; +class SkSurfaceProps; +enum SkColorType : int; +enum class SkTextureCompressionType; +struct SkImageInfo; + +namespace sktext::gpu { class TextBlobRedrawCoordinator; } + +/** + * Can be used to perform actions related to the generating GrContext in a thread safe manner. The + * proxy does not access the 3D API (e.g. OpenGL) that backs the generating GrContext. + */ +class SK_API GrContextThreadSafeProxy : public SkNVRefCnt { +public: + virtual ~GrContextThreadSafeProxy(); + + /** + * Create a surface characterization for a DDL that will be replayed into the GrContext + * that created this proxy. On failure the resulting characterization will be invalid (i.e., + * "!c.isValid()"). + * + * @param cacheMaxResourceBytes The max resource bytes limit that will be in effect + * when the DDL created with this characterization is + * replayed. + * Note: the contract here is that the DDL will be + * created as if it had a full 'cacheMaxResourceBytes' + * to use. If replayed into a GrContext that already has + * locked GPU memory, the replay can exceed the budget. + * To rephrase, all resource allocation decisions are + * made at record time and at playback time the budget + * limits will be ignored. + * @param ii The image info specifying properties of the SkSurface + * that the DDL created with this characterization will + * be replayed into. + * Note: Ganesh doesn't make use of the SkImageInfo's + * alphaType + * @param backendFormat Information about the format of the GPU surface that + * will back the SkSurface upon replay + * @param sampleCount The sample count of the SkSurface that the DDL + * created with this characterization will be replayed + * into + * @param origin The origin of the SkSurface that the DDL created with + * this characterization will be replayed into + * @param surfaceProps The surface properties of the SkSurface that the DDL + * created with this characterization will be replayed + * into + * @param isMipmapped Will the surface the DDL will be replayed into have + * space allocated for mipmaps? + * @param willUseGLFBO0 Will the surface the DDL will be replayed into be + * backed by GL FBO 0. This flag is only valid if using + * an GL backend. + * @param isTextureable Will the surface be able to act as a texture? + * @param isProtected Will the (Vulkan) surface be DRM protected? + * @param vkRTSupportsInputAttachment Can the vulkan surface be used as in input + attachment? + * @param forVulkanSecondaryCommandBuffer Will the surface be wrapping a vulkan secondary + * command buffer via a GrVkSecondaryCBDrawContext? If + * this is true then the following is required: + * isTexureable = false + * isMipmapped = false + * willUseGLFBO0 = false + * vkRTSupportsInputAttachment = false + */ + GrSurfaceCharacterization createCharacterization( + size_t cacheMaxResourceBytes, + const SkImageInfo& ii, + const GrBackendFormat& backendFormat, + int sampleCount, + GrSurfaceOrigin origin, + const SkSurfaceProps& surfaceProps, + skgpu::Mipmapped isMipmapped, + bool willUseGLFBO0 = false, + bool isTextureable = true, + skgpu::Protected isProtected = GrProtected::kNo, + bool vkRTSupportsInputAttachment = false, + bool forVulkanSecondaryCommandBuffer = false); + + /* + * Retrieve the default GrBackendFormat for a given SkColorType and renderability. + * It is guaranteed that this backend format will be the one used by the following + * SkColorType and GrSurfaceCharacterization-based createBackendTexture methods. + * + * The caller should check that the returned format is valid. + */ + GrBackendFormat defaultBackendFormat(SkColorType ct, GrRenderable renderable) const; + + /** + * Retrieve the GrBackendFormat for a given SkTextureCompressionType. This is + * guaranteed to match the backend format used by the following + * createCompressedBackendTexture methods that take a CompressionType. + * + * The caller should check that the returned format is valid. + */ + GrBackendFormat compressedBackendFormat(SkTextureCompressionType c) const; + + /** + * Gets the maximum supported sample count for a color type. 1 is returned if only non-MSAA + * rendering is supported for the color type. 0 is returned if rendering to this color type + * is not supported at all. + */ + int maxSurfaceSampleCountForColorType(SkColorType colorType) const; + + bool isValid() const { return nullptr != fCaps; } + + bool operator==(const GrContextThreadSafeProxy& that) const { + // Each GrContext should only ever have a single thread-safe proxy. + SkASSERT((this == &that) == (this->fContextID == that.fContextID)); + return this == &that; + } + + bool operator!=(const GrContextThreadSafeProxy& that) const { return !(*this == that); } + + // Provides access to functions that aren't part of the public API. + GrContextThreadSafeProxyPriv priv(); + const GrContextThreadSafeProxyPriv priv() const; // NOLINT(readability-const-return-type) + +protected: + // DDL TODO: need to add unit tests for backend & maybe options + GrContextThreadSafeProxy(GrBackendApi, const GrContextOptions&); + +private: + friend class GrContextThreadSafeProxyPriv; // for ctor and hidden methods + + void abandonContext(); + bool abandoned() const; + + // TODO: This should be part of the constructor but right now we have a chicken-and-egg problem + // with GrContext where we get the caps by creating a GPU which requires a context (see the + // `init` method on GrContext_Base). + void init(sk_sp, sk_sp); + + virtual bool isValidCharacterizationForVulkan(sk_sp, + bool isTextureable, + skgpu::Mipmapped isMipmapped, + skgpu::Protected isProtected, + bool vkRTSupportsInputAttachment, + bool forVulkanSecondaryCommandBuffer); + + const GrBackendApi fBackend; + const GrContextOptions fOptions; + const uint32_t fContextID; + sk_sp fCaps; + std::unique_ptr fTextBlobRedrawCoordinator; + std::unique_ptr fThreadSafeCache; + sk_sp fPipelineBuilder; + std::atomic fAbandoned{false}; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/GrDirectContext.h b/vendor/artifacts/skia/include/gpu/ganesh/GrDirectContext.h new file mode 100644 index 000000000..9dc6f62e9 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/GrDirectContext.h @@ -0,0 +1,1027 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrDirectContext_DEFINED +#define GrDirectContext_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" +#include "include/gpu/GpuTypes.h" +#include "include/gpu/ganesh/GrContextOptions.h" +#include "include/gpu/ganesh/GrRecordingContext.h" +#include "include/gpu/ganesh/GrTypes.h" + +#include +#include +#include +#include +#include + +class GrAtlasManager; +class GrBackendSemaphore; +class GrBackendFormat; +class GrBackendTexture; +class GrBackendRenderTarget; +class GrClientMappedBufferManager; +class GrContextThreadSafeProxy; +class GrDirectContextPriv; +class GrGpu; +class GrResourceCache; +class GrResourceProvider; +class SkData; +class SkImage; +class SkPixmap; +class SkSurface; +class SkTaskGroup; +class SkTraceMemoryDump; +enum SkColorType : int; +enum class SkTextureCompressionType; +struct GrMockOptions; + +namespace skgpu { + class MutableTextureState; +#if !defined(SK_ENABLE_OPTIMIZE_SIZE) + namespace ganesh { class SmallPathAtlasMgr; } +#endif +} +namespace sktext { namespace gpu { class StrikeCache; } } +namespace wgpu { class Device; } // IWYU pragma: keep + +namespace SkSurfaces { +enum class BackendSurfaceAccess; +} + +class SK_API GrDirectContext : public GrRecordingContext { +public: + + static sk_sp MakeMock(const GrMockOptions*, const GrContextOptions&); + static sk_sp MakeMock(const GrMockOptions*); + + ~GrDirectContext() override; + + /** + * The context normally assumes that no outsider is setting state + * within the underlying 3D API's context/device/whatever. This call informs + * the context that the state was modified and it should resend. Shouldn't + * be called frequently for good performance. + * The flag bits, state, is dependent on which backend is used by the + * context, either GL or D3D (possible in future). + */ + void resetContext(uint32_t state = kAll_GrBackendState); + + /** + * If the backend is GrBackendApi::kOpenGL, then all texture unit/target combinations for which + * the context has modified the bound texture will have texture id 0 bound. This does not + * flush the context. Calling resetContext() does not change the set that will be bound + * to texture id 0 on the next call to resetGLTextureBindings(). After this is called + * all unit/target combinations are considered to have unmodified bindings until the context + * subsequently modifies them (meaning if this is called twice in a row with no intervening + * context usage then the second call is a no-op.) + */ + void resetGLTextureBindings(); + + /** + * Abandons all GPU resources and assumes the underlying backend 3D API context is no longer + * usable. Call this if you have lost the associated GPU context, and thus internal texture, + * buffer, etc. references/IDs are now invalid. Calling this ensures that the destructors of the + * context and any of its created resource objects will not make backend 3D API calls. Content + * rendered but not previously flushed may be lost. After this function is called all subsequent + * calls on the context will fail or be no-ops. + * + * The typical use case for this function is that the underlying 3D context was lost and further + * API calls may crash. + * + * This call is not valid to be made inside ReleaseProcs passed into SkSurface or SkImages. The + * call will simply fail (and assert in debug) if it is called while inside a ReleaseProc. + * + * For Vulkan, even if the device becomes lost, the VkQueue, VkDevice, or VkInstance used to + * create the context must be kept alive even after abandoning the context. Those objects must + * live for the lifetime of the context object itself. The reason for this is so that + * we can continue to delete any outstanding GrBackendTextures/RenderTargets which must be + * cleaned up even in a device lost state. + */ + void abandonContext() override; + + /** + * Returns true if the context was abandoned or if the backend specific context has gotten into + * an unrecoverarble, lost state (e.g. in Vulkan backend if we've gotten a + * VK_ERROR_DEVICE_LOST). If the backend context is lost, this call will also abandon this + * context. + */ + bool abandoned() override; + + /** + * Returns true if the backend specific context has gotten into an unrecoverarble, lost state + * (e.g. in Vulkan backend if we've gotten a VK_ERROR_DEVICE_LOST). If the backend context is + * lost, this call will also abandon this context. + */ + bool isDeviceLost(); + + // TODO: Remove this from public after migrating Chrome. + sk_sp threadSafeProxy(); + + /** + * Checks if the underlying 3D API reported an out-of-memory error. If this returns true it is + * reset and will return false until another out-of-memory error is reported by the 3D API. If + * the context is abandoned then this will report false. + * + * Currently this is implemented for: + * + * OpenGL [ES] - Note that client calls to glGetError() may swallow GL_OUT_OF_MEMORY errors and + * therefore hide the error from Skia. Also, it is not advised to use this in combination with + * enabling GrContextOptions::fSkipGLErrorChecks. That option may prevent the context from ever + * checking the GL context for OOM. + * + * Vulkan - Reports true if VK_ERROR_OUT_OF_HOST_MEMORY or VK_ERROR_OUT_OF_DEVICE_MEMORY has + * occurred. + */ + bool oomed(); + + /** + * This is similar to abandonContext() however the underlying 3D context is not yet lost and + * the context will cleanup all allocated resources before returning. After returning it will + * assume that the underlying context may no longer be valid. + * + * The typical use case for this function is that the client is going to destroy the 3D context + * but can't guarantee that context will be destroyed first (perhaps because it may be ref'ed + * elsewhere by either the client or Skia objects). + * + * For Vulkan, even if the device becomes lost, the VkQueue, VkDevice, or VkInstance used to + * create the context must be alive before calling releaseResourcesAndAbandonContext. + */ + void releaseResourcesAndAbandonContext(); + + /////////////////////////////////////////////////////////////////////////// + // Resource Cache + + /** DEPRECATED + * Return the current GPU resource cache limits. + * + * @param maxResources If non-null, will be set to -1. + * @param maxResourceBytes If non-null, returns maximum number of bytes of + * video memory that can be held in the cache. + */ + void getResourceCacheLimits(int* maxResources, size_t* maxResourceBytes) const; + + /** + * Return the current GPU resource cache limit in bytes. + */ + size_t getResourceCacheLimit() const; + + /** + * Gets the current GPU resource cache usage. + * + * @param resourceCount If non-null, returns the number of resources that are held in the + * cache. + * @param maxResourceBytes If non-null, returns the total number of bytes of video memory held + * in the cache. + */ + void getResourceCacheUsage(int* resourceCount, size_t* resourceBytes) const; + + /** + * Gets the number of bytes in the cache consumed by purgeable (e.g. unlocked) resources. + */ + size_t getResourceCachePurgeableBytes() const; + + /** DEPRECATED + * Specify the GPU resource cache limits. If the current cache exceeds the maxResourceBytes + * limit, it will be purged (LRU) to keep the cache within the limit. + * + * @param maxResources Unused. + * @param maxResourceBytes The maximum number of bytes of video memory + * that can be held in the cache. + */ + void setResourceCacheLimits(int maxResources, size_t maxResourceBytes); + + /** + * Specify the GPU resource cache limit. If the cache currently exceeds this limit, + * it will be purged (LRU) to keep the cache within the limit. + * + * @param maxResourceBytes The maximum number of bytes of video memory + * that can be held in the cache. + */ + void setResourceCacheLimit(size_t maxResourceBytes); + + /** + * Frees GPU created by the context. Can be called to reduce GPU memory + * pressure. + */ + void freeGpuResources(); + + /** + * Purge GPU resources that haven't been used in the past 'msNotUsed' milliseconds or are + * otherwise marked for deletion, regardless of whether the context is under budget. + + * + * @param msNotUsed Only unlocked resources not used in these last milliseconds will be + * cleaned up. + * @param opts Specify which resources should be cleaned up. If kScratchResourcesOnly + * then, all unlocked scratch resources older than 'msNotUsed' will be purged + * but the unlocked resources with persistent data will remain. If + * kAllResources + */ + + void performDeferredCleanup( + std::chrono::milliseconds msNotUsed, + GrPurgeResourceOptions opts = GrPurgeResourceOptions::kAllResources); + + // Temporary compatibility API for Android. + void purgeResourcesNotUsedInMs(std::chrono::milliseconds msNotUsed) { + this->performDeferredCleanup(msNotUsed); + } + + /** + * Purge unlocked resources from the cache until the the provided byte count has been reached + * or we have purged all unlocked resources. The default policy is to purge in LRU order, but + * can be overridden to prefer purging scratch resources (in LRU order) prior to purging other + * resource types. + * + * @param maxBytesToPurge the desired number of bytes to be purged. + * @param preferScratchResources If true scratch resources will be purged prior to other + * resource types. + */ + void purgeUnlockedResources(size_t bytesToPurge, bool preferScratchResources); + + /** + * This entry point is intended for instances where an app has been backgrounded or + * suspended. + * If 'scratchResourcesOnly' is true all unlocked scratch resources will be purged but the + * unlocked resources with persistent data will remain. If 'scratchResourcesOnly' is false + * then all unlocked resources will be purged. + * In either case, after the unlocked resources are purged a separate pass will be made to + * ensure that resource usage is under budget (i.e., even if 'scratchResourcesOnly' is true + * some resources with persistent data may be purged to be under budget). + * + * @param opts If kScratchResourcesOnly only unlocked scratch resources will be purged prior + * enforcing the budget requirements. + */ + void purgeUnlockedResources(GrPurgeResourceOptions opts); + + /* + * Gets the types of GPU stats supported by this Context. + */ + skgpu::GpuStatsFlags supportedGpuStats() const; + + /** + * Gets the maximum supported texture size. + */ + using GrRecordingContext::maxTextureSize; + + /** + * Gets the maximum supported render target size. + */ + using GrRecordingContext::maxRenderTargetSize; + + /** + * Can a SkImage be created with the given color type. + */ + using GrRecordingContext::colorTypeSupportedAsImage; + + /** + * Does this context support protected content? + */ + using GrRecordingContext::supportsProtectedContent; + + /** + * Can a SkSurface be created with the given color type. To check whether MSAA is supported + * use maxSurfaceSampleCountForColorType(). + */ + using GrRecordingContext::colorTypeSupportedAsSurface; + + /** + * Gets the maximum supported sample count for a color type. 1 is returned if only non-MSAA + * rendering is supported for the color type. 0 is returned if rendering to this color type + * is not supported at all. + */ + using GrRecordingContext::maxSurfaceSampleCountForColorType; + + /////////////////////////////////////////////////////////////////////////// + // Misc. + + /** + * Inserts a list of GPU semaphores that the current GPU-backed API must wait on before + * executing any more commands on the GPU. We only guarantee blocking transfer and fragment + * shader work, but may block earlier stages as well depending on the backend.If this call + * returns false, then the GPU back-end will not wait on any passed in semaphores, and the + * client will still own the semaphores, regardless of the value of deleteSemaphoresAfterWait. + * + * If deleteSemaphoresAfterWait is false then Skia will not delete the semaphores. In this case + * it is the client's responsibility to not destroy or attempt to reuse the semaphores until it + * knows that Skia has finished waiting on them. This can be done by using finishedProcs on + * flush calls. + * + * This is not supported on the GL backend. + */ + bool wait(int numSemaphores, const GrBackendSemaphore* waitSemaphores, + bool deleteSemaphoresAfterWait = true); + + /** + * Call to ensure all drawing to the context has been flushed and submitted to the underlying 3D + * API. This is equivalent to calling GrContext::flush with a default GrFlushInfo followed by + * GrContext::submit(sync). + */ + void flushAndSubmit(GrSyncCpu sync = GrSyncCpu::kNo) { + this->flush(GrFlushInfo()); + this->submit(sync); + } + + /** + * Call to ensure all drawing to the context has been flushed to underlying 3D API specific + * objects. A call to `submit` is always required to ensure work is actually sent to + * the gpu. Some specific API details: + * GL: Commands are actually sent to the driver, but glFlush is never called. Thus some + * sync objects from the flush will not be valid until a submission occurs. + * + * Vulkan/Metal/D3D/Dawn: Commands are recorded to the backend APIs corresponding command + * buffer or encoder objects. However, these objects are not sent to the gpu until a + * submission occurs. + * + * If the return is GrSemaphoresSubmitted::kYes, only initialized GrBackendSemaphores will be + * submitted to the gpu during the next submit call (it is possible Skia failed to create a + * subset of the semaphores). The client should not wait on these semaphores until after submit + * has been called, and must keep them alive until then. If this call returns + * GrSemaphoresSubmitted::kNo, the GPU backend will not submit any semaphores to be signaled on + * the GPU. Thus the client should not have the GPU wait on any of the semaphores passed in with + * the GrFlushInfo. Regardless of whether semaphores were submitted to the GPU or not, the + * client is still responsible for deleting any initialized semaphores. + * Regardless of semaphore submission the context will still be flushed. It should be + * emphasized that a return value of GrSemaphoresSubmitted::kNo does not mean the flush did not + * happen. It simply means there were no semaphores submitted to the GPU. A caller should only + * take this as a failure if they passed in semaphores to be submitted. + */ + GrSemaphoresSubmitted flush(const GrFlushInfo& info); + + void flush() { this->flush(GrFlushInfo()); } + + /** Flushes any pending uses of texture-backed images in the GPU backend. If the image is not + * texture-backed (including promise texture images) or if the GrDirectContext does not + * have the same context ID as the context backing the image then this is a no-op. + * If the image was not used in any non-culled draws in the current queue of work for the + * passed GrDirectContext then this is a no-op unless the GrFlushInfo contains semaphores or + * a finish proc. Those are respected even when the image has not been used. + * @param image the non-null image to flush. + * @param info flush options + */ + GrSemaphoresSubmitted flush(const sk_sp& image, const GrFlushInfo& info); + void flush(const sk_sp& image); + + /** Version of flush() that uses a default GrFlushInfo. Also submits the flushed work to the + * GPU. + */ + void flushAndSubmit(const sk_sp& image); + + /** Issues pending SkSurface commands to the GPU-backed API objects and resolves any SkSurface + * MSAA. A call to GrDirectContext::submit is always required to ensure work is actually sent + * to the gpu. Some specific API details: + * GL: Commands are actually sent to the driver, but glFlush is never called. Thus some + * sync objects from the flush will not be valid until a submission occurs. + * + * Vulkan/Metal/D3D/Dawn: Commands are recorded to the backend APIs corresponding command + * buffer or encoder objects. However, these objects are not sent to the gpu until a + * submission occurs. + * + * The work that is submitted to the GPU will be dependent on the BackendSurfaceAccess that is + * passed in. + * + * If BackendSurfaceAccess::kNoAccess is passed in all commands will be issued to the GPU. + * + * If BackendSurfaceAccess::kPresent is passed in and the backend API is not Vulkan, it is + * treated the same as kNoAccess. If the backend API is Vulkan, the VkImage that backs the + * SkSurface will be transferred back to its original queue. If the SkSurface was created by + * wrapping a VkImage, the queue will be set to the queue which was originally passed in on + * the GrVkImageInfo. Additionally, if the original queue was not external or foreign the + * layout of the VkImage will be set to VK_IMAGE_LAYOUT_PRESENT_SRC_KHR. + * + * The GrFlushInfo describes additional options to flush. Please see documentation at + * GrFlushInfo for more info. + * + * If the return is GrSemaphoresSubmitted::kYes, only initialized GrBackendSemaphores will be + * submitted to the gpu during the next submit call (it is possible Skia failed to create a + * subset of the semaphores). The client should not wait on these semaphores until after submit + * has been called, but must keep them alive until then. If a submit flag was passed in with + * the flush these valid semaphores can we waited on immediately. If this call returns + * GrSemaphoresSubmitted::kNo, the GPU backend will not submit any semaphores to be signaled on + * the GPU. Thus the client should not have the GPU wait on any of the semaphores passed in + * with the GrFlushInfo. Regardless of whether semaphores were submitted to the GPU or not, the + * client is still responsible for deleting any initialized semaphores. + * Regardless of semaphore submission the context will still be flushed. It should be + * emphasized that a return value of GrSemaphoresSubmitted::kNo does not mean the flush did not + * happen. It simply means there were no semaphores submitted to the GPU. A caller should only + * take this as a failure if they passed in semaphores to be submitted. + * + * Pending surface commands are flushed regardless of the return result. + * + * @param surface The GPU backed surface to be flushed. Has no effect on a CPU-backed surface. + * @param access type of access the call will do on the backend object after flush + * @param info flush options + */ + GrSemaphoresSubmitted flush(SkSurface* surface, + SkSurfaces::BackendSurfaceAccess access, + const GrFlushInfo& info); + + /** + * Same as above except: + * + * If a skgpu::MutableTextureState is passed in, at the end of the flush we will transition + * the surface to be in the state requested by the skgpu::MutableTextureState. If the surface + * (or SkImage or GrBackendSurface wrapping the same backend object) is used again after this + * flush the state may be changed and no longer match what is requested here. This is often + * used if the surface will be used for presenting or external use and the client wants backend + * object to be prepped for that use. A finishedProc or semaphore on the GrFlushInfo will also + * include the work for any requested state change. + * + * If the backend API is Vulkan, the caller can set the skgpu::MutableTextureState's + * VkImageLayout to VK_IMAGE_LAYOUT_UNDEFINED or queueFamilyIndex to VK_QUEUE_FAMILY_IGNORED to + * tell Skia to not change those respective states. + * + * @param surface The GPU backed surface to be flushed. Has no effect on a CPU-backed surface. + * @param info flush options + * @param newState optional state change request after flush + */ + GrSemaphoresSubmitted flush(SkSurface* surface, + const GrFlushInfo& info, + const skgpu::MutableTextureState* newState = nullptr); + + /** Call to ensure all reads/writes of the surface have been issued to the underlying 3D API. + * Skia will correctly order its own draws and pixel operations. This must to be used to ensure + * correct ordering when the surface backing store is accessed outside Skia (e.g. direct use of + * the 3D API or a windowing system). This is equivalent to + * calling ::flush with a default GrFlushInfo followed by ::submit(syncCpu). + * + * Has no effect on a CPU-backed surface. + */ + void flushAndSubmit(SkSurface* surface, GrSyncCpu sync = GrSyncCpu::kNo); + + /** + * Flushes the given surface with the default GrFlushInfo. + * + * Has no effect on a CPU-backed surface. + */ + void flush(SkSurface* surface); + + /** + * Submit outstanding work to the gpu from all previously un-submitted flushes. The return + * value of the submit will indicate whether or not the submission to the GPU was successful. + * + * If the call returns true, all previously passed in semaphores in flush calls will have been + * submitted to the GPU and they can safely be waited on. The caller should wait on those + * semaphores or perform some other global synchronization before deleting the semaphores. + * + * If it returns false, then those same semaphores will not have been submitted and we will not + * try to submit them again. The caller is free to delete the semaphores at any time. + * + * If GrSubmitInfo::fSync flag is GrSyncCpu::kYes, this function will return once the gpu has + * finished with all submitted work. + * + * If GrSubmitInfo::fMarkBoundary flag is GrMarkFrameBoundary::kYes and the GPU supports a way + * to be notified about frame boundaries, then we will notify the GPU during/after the + * submission of work to the GPU. GrSubmitInfo::fFrameID is a frame ID that is passed to the + * GPU when marking a boundary. Ideally this value should be unique for each frame. Currently + * marking frame boundaries is only supported with the Vulkan backend and only if the + * VK_EXT_frame_boudnary extenstion is available. + */ + bool submit(const GrSubmitInfo&); + + bool submit(GrSyncCpu sync = GrSyncCpu::kNo) { + GrSubmitInfo info; + info.fSync = sync; + + return this->submit(info); + } + + + /** + * Checks whether any asynchronous work is complete and if so calls related callbacks. + */ + void checkAsyncWorkCompletion(); + + /** Enumerates all cached GPU resources and dumps their memory to traceMemoryDump. */ + // Chrome is using this! + void dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const; + + bool supportsDistanceFieldText() const; + + /** + * Returns true if the underlying Vulkan implementation can accurately detect when the data in + * the pipeline cache changes. Returns false on non-Vulkan implementations. + * + * When this is false, the return value of `hasNewVkPipelineCacheData` will occasionally issue a + * false positive. + */ + bool canDetectNewVkPipelineCacheData() const; + /** + * For Vulkan implementations, returns true if the data in the pipeline cache could have changed + * since the last call to `storeVkPipelineCacheData`. Always returns true on non-Vulkan + * implementations. + * + * Pipeline cache changes are detected when creating new pipelines, however this will + * occasionally result in a false positive. When VK_EXT_pipeline_creation_cache_control is + * enabled, we additionally know when a pipeline creation does not change the cache, thus + * eliminating false-positives. + * + * Check `canDetectNewVkPipelineCacheData` to see whether VK_EXT_pipeline_creation_cache_control + * is available and enabled. + */ + bool hasNewVkPipelineCacheData() const; + void storeVkPipelineCacheData(); + void storeVkPipelineCacheData(size_t maxSize); + + /** + * Retrieve the default GrBackendFormat for a given SkColorType and renderability. + * It is guaranteed that this backend format will be the one used by the following + * SkColorType and GrSurfaceCharacterization-based createBackendTexture methods. + * + * The caller should check that the returned format is valid. + */ + using GrRecordingContext::defaultBackendFormat; + + /** + * The explicitly allocated backend texture API allows clients to use Skia to create backend + * objects outside of Skia proper (i.e., Skia's caching system will not know about them.) + * + * It is the client's responsibility to delete all these objects (using deleteBackendTexture) + * before deleting the context used to create them. If the backend is Vulkan, the textures must + * be deleted before abandoning the context as well. Additionally, clients should only delete + * these objects on the thread for which that context is active. + * + * The client is responsible for ensuring synchronization between different uses + * of the backend object (i.e., wrapping it in a surface, rendering to it, deleting the + * surface, rewrapping it in a image and drawing the image will require explicit + * synchronization on the client's part). + */ + + /** + * If possible, create an uninitialized backend texture. The client should ensure that the + * returned backend texture is valid. + * For the Vulkan backend the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_UNDEFINED. + */ + GrBackendTexture createBackendTexture(int width, + int height, + const GrBackendFormat&, + skgpu::Mipmapped, + GrRenderable, + GrProtected = GrProtected::kNo, + std::string_view label = {}); + + /** + * If possible, create an uninitialized backend texture. The client should ensure that the + * returned backend texture is valid. + * If successful, the created backend texture will be compatible with the provided + * SkColorType. + * For the Vulkan backend the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_UNDEFINED. + */ + GrBackendTexture createBackendTexture(int width, + int height, + SkColorType, + skgpu::Mipmapped, + GrRenderable, + GrProtected = GrProtected::kNo, + std::string_view label = {}); + + /** + * If possible, create a backend texture initialized to a particular color. The client should + * ensure that the returned backend texture is valid. The client can pass in a finishedProc + * to be notified when the data has been uploaded by the gpu and the texture can be deleted. The + * client is required to call `submit` to send the upload work to the gpu. The + * finishedProc will always get called even if we failed to create the GrBackendTexture. + * For the Vulkan backend the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + GrBackendTexture createBackendTexture(int width, + int height, + const GrBackendFormat&, + const SkColor4f& color, + skgpu::Mipmapped, + GrRenderable, + GrProtected = GrProtected::kNo, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr, + std::string_view label = {}); + + /** + * If possible, create a backend texture initialized to a particular color. The client should + * ensure that the returned backend texture is valid. The client can pass in a finishedProc + * to be notified when the data has been uploaded by the gpu and the texture can be deleted. The + * client is required to call `submit` to send the upload work to the gpu. The + * finishedProc will always get called even if we failed to create the GrBackendTexture. + * If successful, the created backend texture will be compatible with the provided + * SkColorType. + * For the Vulkan backend the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + GrBackendTexture createBackendTexture(int width, + int height, + SkColorType, + const SkColor4f& color, + skgpu::Mipmapped, + GrRenderable, + GrProtected = GrProtected::kNo, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr, + std::string_view label = {}); + + /** + * If possible, create a backend texture initialized with the provided pixmap data. The client + * should ensure that the returned backend texture is valid. The client can pass in a + * finishedProc to be notified when the data has been uploaded by the gpu and the texture can be + * deleted. The client is required to call `submit` to send the upload work to the gpu. + * The finishedProc will always get called even if we failed to create the GrBackendTexture. + * If successful, the created backend texture will be compatible with the provided + * pixmap(s). Compatible, in this case, means that the backend format will be the result + * of calling defaultBackendFormat on the base pixmap's colortype. The src data can be deleted + * when this call returns. + * If numLevels is 1 a non-mipmapped texture will result. If a mipmapped texture is desired + * the data for all the mipmap levels must be provided. In the mipmapped case all the + * colortypes of the provided pixmaps must be the same. Additionally, all the miplevels + * must be sized correctly (please see SkMipmap::ComputeLevelSize and ComputeLevelCount). The + * GrSurfaceOrigin controls whether the pixmap data is vertically flipped in the texture. + * Note: the pixmap's alphatypes and colorspaces are ignored. + * For the Vulkan backend the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + GrBackendTexture createBackendTexture(const SkPixmap srcData[], + int numLevels, + GrSurfaceOrigin, + GrRenderable, + GrProtected, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr, + std::string_view label = {}); + + /** + * Convenience version createBackendTexture() that takes just a base level pixmap. + */ + GrBackendTexture createBackendTexture(const SkPixmap& srcData, + GrSurfaceOrigin textureOrigin, + GrRenderable renderable, + GrProtected isProtected, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr, + std::string_view label = {}); + + // Deprecated versions that do not take origin and assume top-left. + GrBackendTexture createBackendTexture(const SkPixmap srcData[], + int numLevels, + GrRenderable renderable, + GrProtected isProtected, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr, + std::string_view label = {}); + + GrBackendTexture createBackendTexture(const SkPixmap& srcData, + GrRenderable renderable, + GrProtected isProtected, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr, + std::string_view label = {}); + + /** + * If possible, updates a backend texture to be filled to a particular color. The client should + * check the return value to see if the update was successful. The client can pass in a + * finishedProc to be notified when the data has been uploaded by the gpu and the texture can be + * deleted. The client is required to call `submit` to send the upload work to the gpu. + * The finishedProc will always get called even if we failed to update the GrBackendTexture. + * For the Vulkan backend after a successful update the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + bool updateBackendTexture(const GrBackendTexture&, + const SkColor4f& color, + GrGpuFinishedProc finishedProc, + GrGpuFinishedContext finishedContext); + + /** + * If possible, updates a backend texture to be filled to a particular color. The data in + * GrBackendTexture and passed in color is interpreted with respect to the passed in + * SkColorType. The client should check the return value to see if the update was successful. + * The client can pass in a finishedProc to be notified when the data has been uploaded by the + * gpu and the texture can be deleted. The client is required to call `submit` to send + * the upload work to the gpu. The finishedProc will always get called even if we failed to + * update the GrBackendTexture. + * For the Vulkan backend after a successful update the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + bool updateBackendTexture(const GrBackendTexture&, + SkColorType skColorType, + const SkColor4f& color, + GrGpuFinishedProc finishedProc, + GrGpuFinishedContext finishedContext); + + /** + * If possible, updates a backend texture filled with the provided pixmap data. The client + * should check the return value to see if the update was successful. The client can pass in a + * finishedProc to be notified when the data has been uploaded by the gpu and the texture can be + * deleted. The client is required to call `submit` to send the upload work to the gpu. + * The finishedProc will always get called even if we failed to create the GrBackendTexture. + * The backend texture must be compatible with the provided pixmap(s). Compatible, in this case, + * means that the backend format is compatible with the base pixmap's colortype. The src data + * can be deleted when this call returns. + * If the backend texture is mip mapped, the data for all the mipmap levels must be provided. + * In the mipmapped case all the colortypes of the provided pixmaps must be the same. + * Additionally, all the miplevels must be sized correctly (please see + * SkMipmap::ComputeLevelSize and ComputeLevelCount). The GrSurfaceOrigin controls whether the + * pixmap data is vertically flipped in the texture. + * Note: the pixmap's alphatypes and colorspaces are ignored. + * For the Vulkan backend after a successful update the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + bool updateBackendTexture(const GrBackendTexture&, + const SkPixmap srcData[], + int numLevels, + GrSurfaceOrigin = kTopLeft_GrSurfaceOrigin, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr); + + /** + * Convenience version of updateBackendTexture that takes just a base level pixmap. + */ + bool updateBackendTexture(const GrBackendTexture& texture, + const SkPixmap& srcData, + GrSurfaceOrigin textureOrigin = kTopLeft_GrSurfaceOrigin, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr) { + return this->updateBackendTexture(texture, + &srcData, + 1, + textureOrigin, + finishedProc, + finishedContext); + } + + // Deprecated version that does not take origin and assumes top-left. + bool updateBackendTexture(const GrBackendTexture& texture, + const SkPixmap srcData[], + int numLevels, + GrGpuFinishedProc finishedProc, + GrGpuFinishedContext finishedContext); + + /** + * Retrieve the GrBackendFormat for a given SkTextureCompressionType. This is + * guaranteed to match the backend format used by the following + * createCompressedBackendTexture methods that take a CompressionType. + * + * The caller should check that the returned format is valid. + */ + using GrRecordingContext::compressedBackendFormat; + + /** + *If possible, create a compressed backend texture initialized to a particular color. The + * client should ensure that the returned backend texture is valid. The client can pass in a + * finishedProc to be notified when the data has been uploaded by the gpu and the texture can be + * deleted. The client is required to call `submit` to send the upload work to the gpu. + * The finishedProc will always get called even if we failed to create the GrBackendTexture. + * For the Vulkan backend the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + GrBackendTexture createCompressedBackendTexture(int width, + int height, + const GrBackendFormat&, + const SkColor4f& color, + skgpu::Mipmapped, + GrProtected = GrProtected::kNo, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr); + + GrBackendTexture createCompressedBackendTexture(int width, + int height, + SkTextureCompressionType, + const SkColor4f& color, + skgpu::Mipmapped, + GrProtected = GrProtected::kNo, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr); + + /** + * If possible, create a backend texture initialized with the provided raw data. The client + * should ensure that the returned backend texture is valid. The client can pass in a + * finishedProc to be notified when the data has been uploaded by the gpu and the texture can be + * deleted. The client is required to call `submit` to send the upload work to the gpu. + * The finishedProc will always get called even if we failed to create the GrBackendTexture + * If numLevels is 1 a non-mipmapped texture will result. If a mipmapped texture is desired + * the data for all the mipmap levels must be provided. Additionally, all the miplevels + * must be sized correctly (please see SkMipmap::ComputeLevelSize and ComputeLevelCount). + * For the Vulkan backend the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + GrBackendTexture createCompressedBackendTexture(int width, + int height, + const GrBackendFormat&, + const void* data, + size_t dataSize, + skgpu::Mipmapped, + GrProtected = GrProtected::kNo, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr); + + GrBackendTexture createCompressedBackendTexture(int width, + int height, + SkTextureCompressionType, + const void* data, + size_t dataSize, + skgpu::Mipmapped, + GrProtected = GrProtected::kNo, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr); + + /** + * If possible, updates a backend texture filled with the provided color. If the texture is + * mipmapped, all levels of the mip chain will be updated to have the supplied color. The client + * should check the return value to see if the update was successful. The client can pass in a + * finishedProc to be notified when the data has been uploaded by the gpu and the texture can be + * deleted. The client is required to call `submit` to send the upload work to the gpu. + * The finishedProc will always get called even if we failed to create the GrBackendTexture. + * For the Vulkan backend after a successful update the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + bool updateCompressedBackendTexture(const GrBackendTexture&, + const SkColor4f& color, + GrGpuFinishedProc finishedProc, + GrGpuFinishedContext finishedContext); + + /** + * If possible, updates a backend texture filled with the provided raw data. The client + * should check the return value to see if the update was successful. The client can pass in a + * finishedProc to be notified when the data has been uploaded by the gpu and the texture can be + * deleted. The client is required to call `submit` to send the upload work to the gpu. + * The finishedProc will always get called even if we failed to create the GrBackendTexture. + * If a mipmapped texture is passed in, the data for all the mipmap levels must be provided. + * Additionally, all the miplevels must be sized correctly (please see + * SkMipMap::ComputeLevelSize and ComputeLevelCount). + * For the Vulkan backend after a successful update the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + bool updateCompressedBackendTexture(const GrBackendTexture&, + const void* data, + size_t dataSize, + GrGpuFinishedProc finishedProc, + GrGpuFinishedContext finishedContext); + + /** + * Updates the state of the GrBackendTexture/RenderTarget to have the passed in + * skgpu::MutableTextureState. All objects that wrap the backend surface (i.e. SkSurfaces and + * SkImages) will also be aware of this state change. This call does not submit the state change + * to the gpu, but requires the client to call `submit` to send it to the GPU. The work + * for this call is ordered linearly with all other calls that require GrContext::submit to be + * called (e.g updateBackendTexture and flush). If finishedProc is not null then it will be + * called with finishedContext after the state transition is known to have occurred on the GPU. + * + * See skgpu::MutableTextureState to see what state can be set via this call. + * + * If the backend API is Vulkan, the caller can set the skgpu::MutableTextureState's + * VkImageLayout to VK_IMAGE_LAYOUT_UNDEFINED or queueFamilyIndex to VK_QUEUE_FAMILY_IGNORED to + * tell Skia to not change those respective states. + * + * If previousState is not null and this returns true, then Skia will have filled in + * previousState to have the values of the state before this call. + */ + bool setBackendTextureState(const GrBackendTexture&, + const skgpu::MutableTextureState&, + skgpu::MutableTextureState* previousState = nullptr, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr); + bool setBackendRenderTargetState(const GrBackendRenderTarget&, + const skgpu::MutableTextureState&, + skgpu::MutableTextureState* previousState = nullptr, + GrGpuFinishedProc finishedProc = nullptr, + GrGpuFinishedContext finishedContext = nullptr); + + void deleteBackendTexture(const GrBackendTexture&); + + // This interface allows clients to pre-compile shaders and populate the runtime program cache. + // The key and data blobs should be the ones passed to the PersistentCache, in SkSL format. + // + // Steps to use this API: + // + // 1) Create a GrDirectContext as normal, but set fPersistentCache on GrContextOptions to + // something that will save the cached shader blobs. Set fShaderCacheStrategy to kSkSL. This + // will ensure that the blobs are SkSL, and are suitable for pre-compilation. + // 2) Run your application, and save all of the key/data pairs that are fed to the cache. + // + // 3) Switch over to shipping your application. Include the key/data pairs from above. + // 4) At startup (or any convenient time), call precompileShader for each key/data pair. + // This will compile the SkSL to create a GL program, and populate the runtime cache. + // + // This is only guaranteed to work if the context/device used in step #2 are created in the + // same way as the one used in step #4, and the same GrContextOptions are specified. + // Using cached shader blobs on a different device or driver are undefined. + bool precompileShader(const SkData& key, const SkData& data); + +#ifdef SK_ENABLE_DUMP_GPU + /** Returns a string with detailed information about the context & GPU, in JSON format. */ + SkString dump() const; +#endif + + class DirectContextID { + public: + static GrDirectContext::DirectContextID Next(); + + DirectContextID() : fID(SK_InvalidUniqueID) {} + + bool operator==(const DirectContextID& that) const { return fID == that.fID; } + bool operator!=(const DirectContextID& that) const { return !(*this == that); } + + void makeInvalid() { fID = SK_InvalidUniqueID; } + bool isValid() const { return fID != SK_InvalidUniqueID; } + + private: + constexpr DirectContextID(uint32_t id) : fID(id) {} + uint32_t fID; + }; + + DirectContextID directContextID() const { return fDirectContextID; } + + // Provides access to functions that aren't part of the public API. + GrDirectContextPriv priv(); + const GrDirectContextPriv priv() const; // NOLINT(readability-const-return-type) + +protected: + GrDirectContext(GrBackendApi backend, + const GrContextOptions& options, + sk_sp proxy); + + bool init() override; + + GrAtlasManager* onGetAtlasManager() { return fAtlasManager.get(); } +#if !defined(SK_ENABLE_OPTIMIZE_SIZE) + skgpu::ganesh::SmallPathAtlasMgr* onGetSmallPathAtlasMgr(); +#endif + + GrDirectContext* asDirectContext() override { return this; } + +private: + // This call will make sure out work on the GPU is finished and will execute any outstanding + // asynchronous work (e.g. calling finished procs, freeing resources, etc.) related to the + // outstanding work on the gpu. The main use currently for this function is when tearing down or + // abandoning the context. + // + // When we finish up work on the GPU it could trigger callbacks to the client. In the case we + // are abandoning the context we don't want the client to be able to use the GrDirectContext to + // issue more commands during the callback. Thus before calling this function we set the + // GrDirectContext's state to be abandoned. However, we need to be able to get by the abaonded + // check in the call to know that it is safe to execute this. The shouldExecuteWhileAbandoned + // bool is used for this signal. + void syncAllOutstandingGpuWork(bool shouldExecuteWhileAbandoned); + + // This delete callback needs to be the first thing on the GrDirectContext so that it is the + // last thing destroyed. The callback may signal the client to clean up things that may need + // to survive the lifetime of some of the other objects on the GrDirectCotnext. So make sure + // we don't call it until all else has been destroyed. + class DeleteCallbackHelper { + public: + DeleteCallbackHelper(GrDirectContextDestroyedContext context, + GrDirectContextDestroyedProc proc) + : fContext(context), fProc(proc) {} + + ~DeleteCallbackHelper() { + if (fProc) { + fProc(fContext); + } + } + + private: + GrDirectContextDestroyedContext fContext; + GrDirectContextDestroyedProc fProc; + }; + std::unique_ptr fDeleteCallbackHelper; + + const DirectContextID fDirectContextID; + // fTaskGroup must appear before anything that uses it (e.g. fGpu), so that it is destroyed + // after all of its users. Clients of fTaskGroup will generally want to ensure that they call + // wait() on it as they are being destroyed, to avoid the possibility of pending tasks being + // invoked after objects they depend upon have already been destroyed. + std::unique_ptr fTaskGroup; + std::unique_ptr fStrikeCache; + std::unique_ptr fGpu; + std::unique_ptr fResourceCache; + std::unique_ptr fResourceProvider; + + // This is incremented before we start calling ReleaseProcs from GrSurfaces and decremented + // after. A ReleaseProc may trigger code causing another resource to get freed so we to track + // the count to know if we in a ReleaseProc at any level. When this is set to a value greated + // than zero we will not allow abandonContext calls to be made on the context. + int fInsideReleaseProcCnt = 0; + + bool fDidTestPMConversions; + // true if the PM/UPM conversion succeeded; false otherwise + bool fPMUPMConversionsRoundTrip; + + GrContextOptions::PersistentCache* fPersistentCache; + + std::unique_ptr fMappedBufferManager; + std::unique_ptr fAtlasManager; + +#if !defined(SK_ENABLE_OPTIMIZE_SIZE) + std::unique_ptr fSmallPathAtlasMgr; +#endif + + friend class GrDirectContextPriv; +}; + + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h b/vendor/artifacts/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h new file mode 100644 index 000000000..a9468e928 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/GrDriverBugWorkarounds.h @@ -0,0 +1,53 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrDriverBugWorkarounds_DEFINED +#define GrDriverBugWorkarounds_DEFINED + +// External embedders of Skia can override this to use their own list +// of workaround names. +#ifdef SK_GPU_WORKAROUNDS_HEADER +#include SK_GPU_WORKAROUNDS_HEADER +#else +// To regenerate this file, set gn arg "skia_generate_workarounds = true" +// or invoke `bazel run //tools:generate_workarounds` +// This is not rebuilt by default to avoid embedders having to have extra +// build steps. +#include "include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h" +#endif + +#include "include/core/SkTypes.h" + +#include +#include + +enum GrDriverBugWorkaroundType { +#define GPU_OP(type, name) type, + GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) +#undef GPU_OP + NUMBER_OF_GPU_DRIVER_BUG_WORKAROUND_TYPES +}; + +class SK_API GrDriverBugWorkarounds { + public: + GrDriverBugWorkarounds() = default; + GrDriverBugWorkarounds(const GrDriverBugWorkarounds&) = default; + ~GrDriverBugWorkarounds() = default; + + explicit GrDriverBugWorkarounds(const std::vector& workarounds); + + GrDriverBugWorkarounds& operator=(const GrDriverBugWorkarounds&) = default; + + // Turn on any workarounds listed in |workarounds| (but don't turn any off). + void applyOverrides(const GrDriverBugWorkarounds& workarounds); + +#define GPU_OP(type, name) bool name = false; + GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) +#undef GPU_OP +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h b/vendor/artifacts/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h new file mode 100644 index 000000000..ab6db1c22 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h @@ -0,0 +1,45 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file is auto-generated from build_workaround_header.py +// DO NOT EDIT! + +#ifndef GPU_DRIVER_BUG_WORKAROUNDS +#define GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP) \ + GPU_OP(ADD_AND_TRUE_TO_LOOP_CONDITION, \ + add_and_true_to_loop_condition) \ + GPU_OP(DISABLE_BLEND_EQUATION_ADVANCED, \ + disable_blend_equation_advanced) \ + GPU_OP(DISABLE_DISCARD_FRAMEBUFFER, \ + disable_discard_framebuffer) \ + GPU_OP(DISABLE_DUAL_SOURCE_BLENDING_SUPPORT, \ + disable_dual_source_blending_support) \ + GPU_OP(DISABLE_TEXTURE_STORAGE, \ + disable_texture_storage) \ + GPU_OP(DISALLOW_LARGE_INSTANCED_DRAW, \ + disallow_large_instanced_draw) \ + GPU_OP(EMULATE_ABS_INT_FUNCTION, \ + emulate_abs_int_function) \ + GPU_OP(FLUSH_ON_FRAMEBUFFER_CHANGE, \ + flush_on_framebuffer_change) \ + GPU_OP(FORCE_UPDATE_SCISSOR_STATE_WHEN_BINDING_FBO0, \ + force_update_scissor_state_when_binding_fbo0) \ + GPU_OP(GL_CLEAR_BROKEN, \ + gl_clear_broken) \ + GPU_OP(MAX_FRAGMENT_UNIFORM_VECTORS_32, \ + max_fragment_uniform_vectors_32) \ + GPU_OP(MAX_MSAA_SAMPLE_COUNT_4, \ + max_msaa_sample_count_4) \ + GPU_OP(PACK_PARAMETERS_WORKAROUND_WITH_PACK_BUFFER, \ + pack_parameters_workaround_with_pack_buffer) \ + GPU_OP(REMOVE_POW_WITH_CONSTANT_EXPONENT, \ + remove_pow_with_constant_exponent) \ + GPU_OP(REWRITE_DO_WHILE_LOOPS, \ + rewrite_do_while_loops) \ + GPU_OP(UNBIND_ATTACHMENTS_ON_BOUND_RENDER_FBO_DELETE, \ + unbind_attachments_on_bound_render_fbo_delete) \ + GPU_OP(UNFOLD_SHORT_CIRCUIT_AS_TERNARY_OPERATION, \ + unfold_short_circuit_as_ternary_operation) \ + +#endif // GPU_DRIVER_BUG_WORKAROUNDS diff --git a/vendor/artifacts/skia/include/gpu/ganesh/GrExternalTextureGenerator.h b/vendor/artifacts/skia/include/gpu/ganesh/GrExternalTextureGenerator.h new file mode 100644 index 000000000..2c4df34b2 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/GrExternalTextureGenerator.h @@ -0,0 +1,54 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrExternalTextureGenerator_DEFINED +#define GrExternalTextureGenerator_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/gpu/ganesh/GrBackendSurface.h" +#include "include/private/base/SkAPI.h" +#include "include/private/gpu/ganesh/GrTextureGenerator.h" + +#include + +class GrRecordingContext; +class GrSurfaceProxyView; +class SkImage; +enum class GrImageTexGenPolicy : int; +namespace skgpu { enum class Mipmapped : bool; } +struct SkImageInfo; + +class GrExternalTexture { +public: + virtual ~GrExternalTexture() = default; + virtual GrBackendTexture getBackendTexture() = 0; + virtual void dispose() = 0; +}; + +class SK_API GrExternalTextureGenerator : public GrTextureGenerator { +public: + explicit GrExternalTextureGenerator(const SkImageInfo& info); + + GrSurfaceProxyView onGenerateTexture(GrRecordingContext*, + const SkImageInfo&, + skgpu::Mipmapped, + GrImageTexGenPolicy) override; + virtual std::unique_ptr generateExternalTexture(GrRecordingContext *, + skgpu::Mipmapped) = 0; +}; + +namespace SkImages { +/** + * Like SkImages::DeferredFromGenerator except allows for the use of GrTextureGenerator. + * + * @param gen producer of textures + * @return created SkImage, or nullptr + */ +SK_API sk_sp DeferredFromTextureGenerator(std::unique_ptr gen); +} + +#endif // GrExternalTextureGenerator_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/GrRecordingContext.h b/vendor/artifacts/skia/include/gpu/ganesh/GrRecordingContext.h new file mode 100644 index 000000000..bd596ec4a --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/GrRecordingContext.h @@ -0,0 +1,299 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrRecordingContext_DEFINED +#define GrRecordingContext_DEFINED + +#include "include/core/SkColorType.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkString.h" // IWYU pragma: keep +#include "include/core/SkTypes.h" +#include "include/private/base/SkTArray.h" +#include "include/private/gpu/ganesh/GrContext_Base.h" +#include "include/private/gpu/ganesh/GrImageContext.h" + +#include +#include +#include + +class GrAuditTrail; +class GrContextThreadSafeProxy; +class GrDirectContext; +class GrDrawingManager; +class GrOnFlushCallbackObject; +class GrProgramDesc; +class GrProgramInfo; +class GrProxyProvider; +class GrRecordingContextPriv; +class GrThreadSafeCache; +class SkArenaAlloc; +class SkCapabilities; +class SkJSONWriter; +class SkGaneshRecorder; +class SkRecorder; + +namespace skcpu { +class ContextImpl; +class Recorder; +} // namespace skcpu + +namespace sktext::gpu { +class SubRunAllocator; +class TextBlobRedrawCoordinator; +} + +class GrRecordingContext : public GrImageContext { +public: + ~GrRecordingContext() override; + + /** + * Reports whether the GrDirectContext associated with this GrRecordingContext is abandoned. + * When called on a GrDirectContext it may actively check whether the underlying 3D API + * device/context has been disconnected before reporting the status. If so, calling this + * method will transition the GrDirectContext to the abandoned state. + */ + bool abandoned() override { return GrImageContext::abandoned(); } + + /* + * Can a SkSurface be created with the given color type. To check whether MSAA is supported + * use maxSurfaceSampleCountForColorType(). + */ + SK_API bool colorTypeSupportedAsSurface(SkColorType colorType) const { + if (colorType == kR16G16_unorm_SkColorType || + colorType == kA16_unorm_SkColorType || + colorType == kA16_float_SkColorType || + colorType == kR16_unorm_SkColorType || + colorType == kR16_float_SkColorType || + colorType == kR16G16_float_SkColorType || + colorType == kR16G16B16A16_unorm_SkColorType || + colorType == kGray_8_SkColorType) { + return false; + } + + return this->maxSurfaceSampleCountForColorType(colorType) > 0; + } + + /** + * Gets the maximum supported texture size. + */ + SK_API int maxTextureSize() const; + + /** + * Gets the maximum supported render target size. + */ + SK_API int maxRenderTargetSize() const; + + /** + * Can a SkImage be created with the given color type. + */ + SK_API bool colorTypeSupportedAsImage(SkColorType) const; + + /** + * Does this context support protected content? + */ + SK_API bool supportsProtectedContent() const; + + /** + * Gets the maximum supported sample count for a color type. 1 is returned if only non-MSAA + * rendering is supported for the color type. 0 is returned if rendering to this color type + * is not supported at all. + */ + SK_API int maxSurfaceSampleCountForColorType(SkColorType colorType) const { + return GrImageContext::maxSurfaceSampleCountForColorType(colorType); + } + + SK_API sk_sp skCapabilities() const; + + SK_API SkRecorder* asRecorder(); + SK_API std::unique_ptr makeCPURecorder(); + + // Provides access to functions that aren't part of the public API. + GrRecordingContextPriv priv(); + const GrRecordingContextPriv priv() const; // NOLINT(readability-const-return-type) + + // The collection of specialized memory arenas for different types of data recorded by a + // GrRecordingContext. Arenas does not maintain ownership of the pools it groups together. + class Arenas { + public: + Arenas(SkArenaAlloc*, sktext::gpu::SubRunAllocator*); + + // For storing pipelines and other complex data as-needed by ops + SkArenaAlloc* recordTimeAllocator() { return fRecordTimeAllocator; } + + // For storing GrTextBlob SubRuns + sktext::gpu::SubRunAllocator* recordTimeSubRunAllocator() { + return fRecordTimeSubRunAllocator; + } + + private: + SkArenaAlloc* fRecordTimeAllocator; + sktext::gpu::SubRunAllocator* fRecordTimeSubRunAllocator; + }; + +protected: + friend class GrRecordingContextPriv; // for hidden functions + friend class GrDeferredDisplayList; // for OwnedArenas + friend class GrDeferredDisplayListPriv; // for ProgramData + + // Like Arenas, but preserves ownership of the underlying pools. + class OwnedArenas { + public: + OwnedArenas(bool ddlRecording); + ~OwnedArenas(); + + Arenas get(); + + OwnedArenas& operator=(OwnedArenas&&); + + private: + bool fDDLRecording; + std::unique_ptr fRecordTimeAllocator; + std::unique_ptr fRecordTimeSubRunAllocator; + }; + + GrRecordingContext(sk_sp, bool ddlRecording); + + bool init() override; + + void abandonContext() override; + + GrDrawingManager* drawingManager(); + + // There is no going back from this method. It should only be called to control the timing + // during abandon or destruction of the context. + void destroyDrawingManager(); + + Arenas arenas() { return fArenas.get(); } + // This entry point should only be used for DDL creation where we want the ops' lifetime to + // match that of the DDL. + OwnedArenas&& detachArenas(); + + GrProxyProvider* proxyProvider() { return fProxyProvider.get(); } + const GrProxyProvider* proxyProvider() const { return fProxyProvider.get(); } + + struct ProgramData { + ProgramData(std::unique_ptr, const GrProgramInfo*); + ProgramData(ProgramData&&); // for SkTArray + ProgramData(const ProgramData&) = delete; + ~ProgramData(); + + const GrProgramDesc& desc() const { return *fDesc; } + const GrProgramInfo& info() const { return *fInfo; } + + private: + // TODO: store the GrProgramDescs in the 'fRecordTimeData' arena + std::unique_ptr fDesc; + // The program infos should be stored in 'fRecordTimeData' so do not need to be ref + // counted or deleted in the destructor. + const GrProgramInfo* fInfo = nullptr; + }; + + // This entry point gives the recording context a chance to cache the provided + // programInfo. The DDL context takes this opportunity to store programInfos as a sidecar + // to the DDL. + virtual void recordProgramInfo(const GrProgramInfo*) {} + // This asks the recording context to return any programInfos it may have collected + // via the 'recordProgramInfo' call. It is up to the caller to ensure that the lifetime + // of the programInfos matches the intended use. For example, in DDL-record mode it + // is known that all the programInfos will have been allocated in an arena with the + // same lifetime at the DDL itself. + virtual void detachProgramData(skia_private::TArray*) {} + + sktext::gpu::TextBlobRedrawCoordinator* getTextBlobRedrawCoordinator(); + const sktext::gpu::TextBlobRedrawCoordinator* getTextBlobRedrawCoordinator() const; + + GrThreadSafeCache* threadSafeCache(); + const GrThreadSafeCache* threadSafeCache() const; + + /** + * Registers an object for flush-related callbacks. (See GrOnFlushCallbackObject.) + * + * NOTE: the drawing manager tracks this object as a raw pointer; it is up to the caller to + * ensure its lifetime is tied to that of the context. + */ + void addOnFlushCallbackObject(GrOnFlushCallbackObject*); + + GrRecordingContext* asRecordingContext() override { return this; } + + class Stats { + public: + Stats() = default; + +#if GR_GPU_STATS + void reset() { *this = {}; } + + int numPathMasksGenerated() const { return fNumPathMasksGenerated; } + void incNumPathMasksGenerated() { fNumPathMasksGenerated++; } + + int numPathMaskCacheHits() const { return fNumPathMaskCacheHits; } + void incNumPathMasksCacheHits() { fNumPathMaskCacheHits++; } + +#if defined(GPU_TEST_UTILS) + void dump(SkString* out) const; + void dumpKeyValuePairs(skia_private::TArray* keys, + skia_private::TArray* values) const; +#endif + + private: + int fNumPathMasksGenerated{0}; + int fNumPathMaskCacheHits{0}; + +#else // GR_GPU_STATS + void incNumPathMasksGenerated() {} + void incNumPathMasksCacheHits() {} + +#if defined(GPU_TEST_UTILS) + void dump(SkString*) const {} + void dumpKeyValuePairs(skia_private::TArray* keys, + skia_private::TArray* values) const {} +#endif +#endif // GR_GPU_STATS + } fStats; + +#if GR_GPU_STATS && defined(GPU_TEST_UTILS) + struct DMSAAStats { + void dumpKeyValuePairs(skia_private::TArray* keys, + skia_private::TArray* values) const; + void dump() const; + void merge(const DMSAAStats&); + int fNumRenderPasses = 0; + int fNumMultisampleRenderPasses = 0; + std::map fTriggerCounts; + }; + + DMSAAStats fDMSAAStats; +#endif + + Stats* stats() { return &fStats; } + const Stats* stats() const { return &fStats; } + void dumpJSON(SkJSONWriter*) const; + +protected: + // Delete last in case other objects call it during destruction. + std::unique_ptr fAuditTrail; + +private: + OwnedArenas fArenas; + + std::unique_ptr fDrawingManager; + std::unique_ptr fProxyProvider; + std::unique_ptr fCPUContext; + std::unique_ptr fRecorder; + +#if defined(GPU_TEST_UTILS) + int fSuppressWarningMessages = 0; +#endif +}; + +/** + * Safely cast a possibly-null base context to direct context. + */ +static inline GrDirectContext* GrAsDirectContext(GrContext_Base* base) { + return base ? base->asDirectContext() : nullptr; +} + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/GrTypes.h b/vendor/artifacts/skia/include/gpu/ganesh/GrTypes.h new file mode 100644 index 000000000..129092ad9 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/GrTypes.h @@ -0,0 +1,193 @@ +/* + * Copyright 2010 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrTypes_DEFINED +#define GrTypes_DEFINED + +#include "include/core/SkTypes.h" +#include "include/gpu/GpuTypes.h" +#include "include/private/base/SkTo.h" // IWYU pragma: keep + +#include +#include +class GrBackendSemaphore; + +/////////////////////////////////////////////////////////////////////////////// + +/** + * Possible 3D APIs that may be used by Ganesh. + */ +enum class GrBackendApi : unsigned { + kOpenGL, + kVulkan, + kMetal, + kDirect3D, + + /** + * Mock is a backend that does not draw anything. It is used for unit tests + * and to measure CPU overhead. + */ + kMock, + + /** + * Ganesh doesn't support some context types (e.g. Dawn) and will return Unsupported. + */ + kUnsupported, + + /** + * Added here to support the legacy GrBackend enum value and clients who referenced it using + * GrBackend::kOpenGL_GrBackend. + */ + kOpenGL_GrBackend = kOpenGL, +}; + +/** + * Previously the above enum was not an enum class but a normal enum. To support the legacy use of + * the enum values we define them below so that no clients break. + */ +typedef GrBackendApi GrBackend; + +static constexpr GrBackendApi kMetal_GrBackend = GrBackendApi::kMetal; +static constexpr GrBackendApi kVulkan_GrBackend = GrBackendApi::kVulkan; +static constexpr GrBackendApi kMock_GrBackend = GrBackendApi::kMock; + +/////////////////////////////////////////////////////////////////////////////// + +/* + * Can a GrBackendObject be rendered to? + */ +using GrRenderable = skgpu::Renderable; + +/* + * Used to say whether texture is backed by protected memory. + */ +using GrProtected = skgpu::Protected; + +/////////////////////////////////////////////////////////////////////////////// + +/** + * GPU SkImage and SkSurfaces can be stored such that (0, 0) in texture space may correspond to + * either the top-left or bottom-left content pixel. + */ +enum GrSurfaceOrigin : int { + kTopLeft_GrSurfaceOrigin, + kBottomLeft_GrSurfaceOrigin, +}; + +/** + * A GrContext's cache of backend context state can be partially invalidated. + * These enums are specific to the GL backend and we'd add a new set for an alternative backend. + */ +enum GrGLBackendState { + kRenderTarget_GrGLBackendState = 1 << 0, + // Also includes samplers bound to texture units. + kTextureBinding_GrGLBackendState = 1 << 1, + // View state stands for scissor and viewport + kView_GrGLBackendState = 1 << 2, + kBlend_GrGLBackendState = 1 << 3, + kMSAAEnable_GrGLBackendState = 1 << 4, + kVertex_GrGLBackendState = 1 << 5, + kStencil_GrGLBackendState = 1 << 6, + kPixelStore_GrGLBackendState = 1 << 7, + kProgram_GrGLBackendState = 1 << 8, + kFixedFunction_GrGLBackendState = 1 << 9, + kMisc_GrGLBackendState = 1 << 10, + kALL_GrGLBackendState = 0xffff +}; + +/** + * This value translates to reseting all the context state for any backend. + */ +static const uint32_t kAll_GrBackendState = 0xffffffff; + +typedef void* GrGpuFinishedContext; +typedef void (*GrGpuFinishedProc)(GrGpuFinishedContext finishedContext); +typedef void (*GrGpuFinishedWithStatsProc)(GrGpuFinishedContext finishedContext, + const skgpu::GpuStats&); + +typedef void* GrGpuSubmittedContext; +typedef void (*GrGpuSubmittedProc)(GrGpuSubmittedContext submittedContext, bool success); + +typedef void* GrDirectContextDestroyedContext; +typedef void (*GrDirectContextDestroyedProc)(GrDirectContextDestroyedContext destroyedContext); + +/** + * Struct to supply options to flush calls. + * + * After issuing all commands, fNumSemaphore semaphores will be signaled by the gpu. The client + * passes in an array of fNumSemaphores GrBackendSemaphores. In general these GrBackendSemaphore's + * can be either initialized or not. If they are initialized, the backend uses the passed in + * semaphore. If it is not initialized, a new semaphore is created and the GrBackendSemaphore + * object is initialized with that semaphore. The semaphores are not sent to the GPU until the next + * GrContext::submit call is made. See the GrContext::submit for more information. + * + * The client will own and be responsible for deleting the underlying semaphores that are stored + * and returned in initialized GrBackendSemaphore objects. The GrBackendSemaphore objects + * themselves can be deleted as soon as this function returns. + * + * If a finishedProc or finishedWithStatsProc is provided, the proc will be called when all work + * submitted to the gpu from this flush call and all previous flush calls has finished on the GPU. + * If the flush call fails due to an error and nothing ends up getting sent to the GPU, the finished + * proc is called immediately. If both types of proc are provided then finishedWithStatsProc is + * preferred. + * + * When finishedWithStatsProc is called the GpuStats passed will contain valid values for stats + * by requested by gpuStatsFlags, assuming the stats are supported by the underlying backend GPU + * context and the GPU work completed successfully. + * + * If a submittedProc is provided, the submittedProc will be called when all work from this flush + * call is submitted to the GPU. If the flush call fails due to an error and nothing will get sent + * to the GPU, the submitted proc is called immediately. It is possibly that when work is finally + * submitted, that the submission actual fails. In this case we will not reattempt to do the + * submission. Skia notifies the client of these via the success bool passed into the submittedProc. + * The submittedProc is useful to the client to know when semaphores that were sent with the flush + * have actually been submitted to the GPU so that they can be waited on (or deleted if the submit + * fails). + * GrBackendSemaphores are not supported for the GL backend and will be ignored if set. + */ +struct GrFlushInfo { + size_t fNumSemaphores = 0; + skgpu::GpuStatsFlags fGpuStatsFlags = skgpu::GpuStatsFlags::kNone; + GrBackendSemaphore* fSignalSemaphores = nullptr; + GrGpuFinishedProc fFinishedProc = nullptr; + GrGpuFinishedWithStatsProc fFinishedWithStatsProc = nullptr; + GrGpuFinishedContext fFinishedContext = nullptr; + GrGpuSubmittedProc fSubmittedProc = nullptr; + GrGpuSubmittedContext fSubmittedContext = nullptr; +}; + +/** + * Enum used as return value when flush with semaphores so the client knows whether the valid + * semaphores will be submitted on the next GrContext::submit call. + */ +enum class GrSemaphoresSubmitted : bool { + kNo = false, + kYes = true +}; + +enum class GrPurgeResourceOptions { + kAllResources, + kScratchResourcesOnly, +}; + +enum class GrSyncCpu : bool { + kNo = false, + kYes = true, +}; + +enum class GrMarkFrameBoundary : bool { + kNo = false, + kYes = true, +}; + +struct GrSubmitInfo { + GrSyncCpu fSync = GrSyncCpu::kNo; + GrMarkFrameBoundary fMarkBoundary = GrMarkFrameBoundary::kNo; + uint64_t fFrameID = 0; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/GrYUVABackendTextures.h b/vendor/artifacts/skia/include/gpu/ganesh/GrYUVABackendTextures.h new file mode 100644 index 000000000..25b6da4ef --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/GrYUVABackendTextures.h @@ -0,0 +1,130 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrYUVABackendTextures_DEFINED +#define GrYUVABackendTextures_DEFINED + +#include "include/core/SkTypes.h" +#include "include/core/SkYUVAInfo.h" +#include "include/gpu/GpuTypes.h" +#include "include/gpu/ganesh/GrBackendSurface.h" +#include "include/gpu/ganesh/GrTypes.h" + +#include +#include + +enum SkYUVColorSpace : int; + +/** + * A description of a set GrBackendTextures that hold the planar data described by a SkYUVAInfo. + */ +class SK_API GrYUVABackendTextureInfo { +public: + static constexpr auto kMaxPlanes = SkYUVAInfo::kMaxPlanes; + + /** Default GrYUVABackendTextureInfo is invalid. */ + GrYUVABackendTextureInfo() = default; + + /** + * Initializes a GrYUVABackendTextureInfo to describe a set of textures that can store the + * planes indicated by the SkYUVAInfo. The texture dimensions are taken from the SkYUVAInfo's + * plane dimensions. All the described textures share a common origin. The planar image this + * describes will be mip mapped if all the textures are individually mip mapped as indicated + * by skgpu::Mipmapped. This will produce an invalid result (return false from isValid()) if the + * passed formats' channels don't agree with SkYUVAInfo. + */ + GrYUVABackendTextureInfo(const SkYUVAInfo&, + const GrBackendFormat[kMaxPlanes], + skgpu::Mipmapped, + GrSurfaceOrigin); + + GrYUVABackendTextureInfo(const GrYUVABackendTextureInfo&) = default; + + GrYUVABackendTextureInfo& operator=(const GrYUVABackendTextureInfo&) = default; + + bool operator==(const GrYUVABackendTextureInfo&) const; + bool operator!=(const GrYUVABackendTextureInfo& that) const { return !(*this == that); } + + const SkYUVAInfo& yuvaInfo() const { return fYUVAInfo; } + + SkYUVColorSpace yuvColorSpace() const { return fYUVAInfo.yuvColorSpace(); } + + skgpu::Mipmapped mipmapped() const { return fMipmapped; } + + GrSurfaceOrigin textureOrigin() const { return fTextureOrigin; } + + /** The number of SkPixmap planes, 0 if this GrYUVABackendTextureInfo is invalid. */ + int numPlanes() const { return fYUVAInfo.numPlanes(); } + + /** Format of the ith plane, or invalid format if i >= numPlanes() */ + const GrBackendFormat& planeFormat(int i) const { return fPlaneFormats[i]; } + + /** + * Returns true if this has been configured with a valid SkYUVAInfo with compatible texture + * formats. + */ + bool isValid() const { return fYUVAInfo.isValid(); } + + /** + * Computes a YUVALocations representation of the planar layout. The result is guaranteed to be + * valid if this->isValid(). + */ + SkYUVAInfo::YUVALocations toYUVALocations() const; + +private: + SkYUVAInfo fYUVAInfo; + GrBackendFormat fPlaneFormats[kMaxPlanes]; + skgpu::Mipmapped fMipmapped = skgpu::Mipmapped::kNo; + GrSurfaceOrigin fTextureOrigin = kTopLeft_GrSurfaceOrigin; +}; + +/** + * A set of GrBackendTextures that hold the planar data for an image described a SkYUVAInfo. + */ +class SK_API GrYUVABackendTextures { +public: + GrYUVABackendTextures() = default; + GrYUVABackendTextures(const GrYUVABackendTextures&) = delete; + GrYUVABackendTextures(GrYUVABackendTextures&&) = default; + + GrYUVABackendTextures& operator=(const GrYUVABackendTextures&) = delete; + GrYUVABackendTextures& operator=(GrYUVABackendTextures&&) = default; + + GrYUVABackendTextures(const SkYUVAInfo&, + const GrBackendTexture[SkYUVAInfo::kMaxPlanes], + GrSurfaceOrigin textureOrigin); + + const std::array& textures() const { + return fTextures; + } + + GrBackendTexture texture(int i) const { + SkASSERT(i >= 0 && i < SkYUVAInfo::kMaxPlanes); + return fTextures[static_cast(i)]; + } + + const SkYUVAInfo& yuvaInfo() const { return fYUVAInfo; } + + int numPlanes() const { return fYUVAInfo.numPlanes(); } + + GrSurfaceOrigin textureOrigin() const { return fTextureOrigin; } + + bool isValid() const { return fYUVAInfo.isValid(); } + + /** + * Computes a YUVALocations representation of the planar layout. The result is guaranteed to be + * valid if this->isValid(). + */ + SkYUVAInfo::YUVALocations toYUVALocations() const; + +private: + SkYUVAInfo fYUVAInfo; + std::array fTextures; + GrSurfaceOrigin fTextureOrigin = kTopLeft_GrSurfaceOrigin; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/SkImageGanesh.h b/vendor/artifacts/skia/include/gpu/ganesh/SkImageGanesh.h new file mode 100644 index 000000000..498ee1d23 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/SkImageGanesh.h @@ -0,0 +1,361 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImageGanesh_DEFINED +#define SkImageGanesh_DEFINED + +#include "include/core/SkImage.h" +#include "include/core/SkRefCnt.h" +#include "include/gpu/GpuTypes.h" +#include "include/gpu/ganesh/GrTypes.h" +#include "include/private/base/SkAPI.h" + +#include +#include + +class GrBackendTexture; +class GrDirectContext; +class GrRecordingContext; +class GrYUVABackendTextures; +class SkColorSpace; +class SkData; +class SkImageFilter; +struct SkIPoint; +class SkPixmap; +class SkYUVAPixmaps; +enum SkAlphaType : int; +enum SkColorType : int; +enum class SkTextureCompressionType; +struct SkIRect; + +/** + * All factories in this file refer to the Ganesh GPU backend when they say GPU. + */ + +namespace SkImages { +/** Defines a callback function, taking one parameter of type GrBackendTexture with + no return value. Function is called when backend texture is to be released. +*/ +using BackendTextureReleaseProc = std::function; +/** User function called when supplied texture may be deleted. */ +using TextureReleaseProc = void (*)(ReleaseContext); + +/** Creates GPU-backed SkImage from backendTexture associated with context. + Skia will assume ownership of the resource and will release it when no longer needed. + A non-null SkImage is returned if format of backendTexture is recognized and supported. + Recognized formats vary by GPU backend. + @param context GPU context + @param backendTexture texture residing on GPU + @param textureOrigin origin of backendTexture + @param colorType color type of the resulting image + @param alphaType alpha type of the resulting image + @param colorSpace range of colors; may be nullptr + @return created SkImage, or nullptr +*/ +SK_API sk_sp AdoptTextureFrom(GrRecordingContext* context, + const GrBackendTexture& backendTexture, + GrSurfaceOrigin textureOrigin, + SkColorType colorType); +SK_API sk_sp AdoptTextureFrom(GrRecordingContext* context, + const GrBackendTexture& backendTexture, + GrSurfaceOrigin textureOrigin, + SkColorType colorType, + SkAlphaType alphaType); +SK_API sk_sp AdoptTextureFrom(GrRecordingContext* context, + const GrBackendTexture& backendTexture, + GrSurfaceOrigin textureOrigin, + SkColorType colorType, + SkAlphaType alphaType, + sk_sp colorSpace); + +/** Creates GPU-backed SkImage from the provided GPU texture associated with context. + GPU texture must stay valid and unchanged until textureReleaseProc is called by Skia. + Skia will call textureReleaseProc with the passed-in releaseContext when SkImage + is deleted or no longer refers to the texture. + A non-null SkImage is returned if format of backendTexture is recognized and supported. + Recognized formats vary by GPU backend. + @note When using a DDL recording context, textureReleaseProc will be called on the + GPU thread after the DDL is played back on the direct context. + @param context GPU context + @param backendTexture texture residing on GPU + @param colorSpace This describes the color space of this image's contents, as + seen after sampling. In general, if the format of the backend + texture is SRGB, some linear colorSpace should be supplied + (e.g., SkColorSpace::MakeSRGBLinear()). If the format of the + backend texture is linear, then the colorSpace should include + a description of the transfer function as + well (e.g., SkColorSpace::MakeSRGB()). + @param textureReleaseProc function called when texture can be released + @param releaseContext state passed to textureReleaseProc + @return created SkImage, or nullptr +*/ +SK_API sk_sp BorrowTextureFrom(GrRecordingContext* context, + const GrBackendTexture& backendTexture, + GrSurfaceOrigin origin, + SkColorType colorType, + SkAlphaType alphaType, + sk_sp colorSpace, + TextureReleaseProc textureReleaseProc = nullptr, + ReleaseContext releaseContext = nullptr); + +/** Creates a GPU-backed SkImage from pixmap. It is uploaded to GPU backend using context. + Created SkImage is available to other GPU contexts, and is available across thread + boundaries. All contexts must be in the same GPU share group, or otherwise + share resources. + When SkImage is no longer referenced, context releases texture memory + asynchronously. + SkColorSpace of SkImage is determined by pixmap.colorSpace(). + SkImage is returned referring to GPU backend if context is not nullptr, + format of data is recognized and supported, and if context supports moving + resources between contexts. Otherwise, pixmap pixel data is copied and SkImage + as returned in raster format if possible; nullptr may be returned. + Recognized GPU formats vary by platform and GPU backend. + @param context GPU context + @param pixmap SkImageInfo, pixel address, and row bytes + @param buildMips create SkImage as mip map if true + @param limitToMaxTextureSize downscale image to GPU maximum texture size, if necessary + @return created SkImage, or nullptr +*/ +SK_API sk_sp CrossContextTextureFromPixmap(GrDirectContext* context, + const SkPixmap& pixmap, + bool buildMips, + bool limitToMaxTextureSize = false); + +/** Creates a GPU-backed SkImage from a GPU backend texture. The backend texture must stay + valid and unchanged until textureReleaseProc is called. The textureReleaseProc is + called when the SkImage is deleted or no longer refers to the texture and will be + passed the releaseContext. + An SkImage is returned if the format of backendTexture is recognized and supported. + Recognized formats vary by GPU backend. + @note When using a DDL recording context, textureReleaseProc will be called on the + GPU thread after the DDL is played back on the direct context. + @param context the GPU context + @param backendTexture a texture already allocated by the GPU + @param alphaType This characterizes the nature of the alpha values in the + backend texture. For opaque compressed formats (e.g., ETC1) + this should usually be set to kOpaq + ue_SkAlphaType. + @param colorSpace This describes the color space of this image's contents, as + seen after sampling. In general, if the format of the backend + texture is SRGB, some linear colorSpace should be supplied + (e.g., SkColorSpace::MakeSRGBLinear()). If the format of the + backend texture is linear, then the colorSpace should include + a description of the transfer function as + well (e.g., SkColorSpace::MakeSRGB()). + @param textureReleaseProc function called when the backend texture can be released + @param releaseContext state passed to textureReleaseProc + @return created SkImage, or nullptr +*/ +SK_API sk_sp TextureFromCompressedTexture(GrRecordingContext* context, + const GrBackendTexture& backendTexture, + GrSurfaceOrigin origin, + SkAlphaType alphaType, + sk_sp colorSpace, + TextureReleaseProc textureReleaseProc = nullptr, + ReleaseContext releaseContext = nullptr); + +/** Creates a GPU-backed SkImage from compressed data. + This method will return an SkImage representing the compressed data. + If the GPU doesn't support the specified compression method, the data + will be decompressed and then wrapped in a GPU-backed image. + Note: one can query the supported compression formats via + GrRecordingContext::compressedBackendFormat. + @param context GPU context + @param data compressed data to store in SkImage + @param width width of full SkImage + @param height height of full SkImage + @param type type of compression used + @param mipmapped does 'data' contain data for all the mipmap levels? + @param isProtected do the contents of 'data' require DRM protection (on Vulkan)? + @return created SkImage, or nullptr +*/ +SK_API sk_sp TextureFromCompressedTextureData( + GrDirectContext* direct, + sk_sp data, + int width, + int height, + SkTextureCompressionType type, + skgpu::Mipmapped mipmapped = skgpu::Mipmapped::kNo, + GrProtected isProtected = GrProtected::kNo); + +/** Returns SkImage backed by GPU texture associated with context. Returned SkImage is + compatible with SkSurface created with dstColorSpace. The returned SkImage respects + mipmapped setting; if mipmapped equals skgpu::Mipmapped::kYes, the backing texture + allocates mip map levels. + The mipmapped parameter is effectively treated as kNo if MIP maps are not supported by the + GPU. + Returns original SkImage if the image is already texture-backed, the context matches, and + mipmapped is compatible with the backing GPU texture. skgpu::Budgeted is ignored in this + case. + Returns nullptr if context is nullptr, or if SkImage was created with another + GrDirectContext. + @param GrDirectContext the GrDirectContext in play, if it exists + @param SkImage a non-null pointer to an SkImage. + @param skgpu::Mipmapped Whether created SkImage texture must allocate mip map levels. + Defaults to no. + @param skgpu::Budgeted Whether to count a newly created texture for the returned image + counts against the context's budget. Defaults to yes. + @return created SkImage, or nullptr +*/ +SK_API sk_sp TextureFromImage(GrDirectContext*, + const SkImage*, + skgpu::Mipmapped = skgpu::Mipmapped::kNo, + skgpu::Budgeted = skgpu::Budgeted::kYes); +inline sk_sp TextureFromImage(GrDirectContext* ctx, + const sk_sp& img, + skgpu::Mipmapped m = skgpu::Mipmapped::kNo, + skgpu::Budgeted b = skgpu::Budgeted::kYes) { + return TextureFromImage(ctx, img.get(), m, b); +} + +/** Creates a GPU-backed SkImage from SkYUVAPixmaps. + The image will remain planar with each plane converted to a texture using the passed + GrRecordingContext. + SkYUVAPixmaps has a SkYUVAInfo which specifies the transformation from YUV to RGB. + The SkColorSpace of the resulting RGB values is specified by imageColorSpace. This will + be the SkColorSpace reported by the image and when drawn the RGB values will be converted + from this space into the destination space (if the destination is tagged). + Currently, this is only supported using the GPU backend and will fail if context is nullptr. + SkYUVAPixmaps does not need to remain valid after this returns. + @param context GPU context + @param pixmaps The planes as pixmaps with supported SkYUVAInfo that + specifies conversion to RGB. + @param buildMips create internal YUVA textures as mip map if kYes. This is + silently ignored if the context does not support mip maps. + @param limitToMaxTextureSize downscale image to GPU maximum texture size, if necessary + @param imageColorSpace range of colors of the resulting image; may be nullptr + @return created SkImage, or nullptr +*/ +SK_API sk_sp TextureFromYUVAPixmaps(GrRecordingContext* context, + const SkYUVAPixmaps& pixmaps, + skgpu::Mipmapped buildMips, + bool limitToMaxTextureSize, + sk_sp imageColorSpace); +SK_API sk_sp TextureFromYUVAPixmaps(GrRecordingContext* context, + const SkYUVAPixmaps& pixmaps, + skgpu::Mipmapped buildMips = skgpu::Mipmapped::kNo, + bool limitToMaxTextureSize = false); + +/** Creates a GPU-backed SkImage from YUV[A] planar textures. This requires that the textures + * stay valid for the lifetime of the image. The ReleaseContext can be used to know when it is + * safe to either delete or overwrite the textures. If ReleaseProc is provided it is also called + * before return on failure. + @param context GPU context + @param yuvaTextures A set of textures containing YUVA data and a description of the + data and transformation to RGBA. + @param imageColorSpace range of colors of the resulting image after conversion to RGB; + may be nullptr + @param textureReleaseProc called when the backend textures can be released + @param releaseContext state passed to textureReleaseProc + @return created SkImage, or nullptr +*/ +SK_API sk_sp TextureFromYUVATextures(GrRecordingContext* context, + const GrYUVABackendTextures& yuvaTextures, + sk_sp imageColorSpace, + TextureReleaseProc textureReleaseProc = nullptr, + ReleaseContext releaseContext = nullptr); +SK_API sk_sp TextureFromYUVATextures(GrRecordingContext* context, + const GrYUVABackendTextures& yuvaTextures); + +/** Retrieves the existing backend texture. If SkImage is not a Ganesh-backend texture image + or otherwise does not have such a texture, false is returned. Otherwise, outTexture will + be set to the image's texture. + + If flushPendingGrContextIO is true, completes deferred I/O operations. + If origin in not nullptr, copies location of content drawn into SkImage. + @param outTexture Will be set to the underlying texture of the image if non-null. + @param flushPendingGrContextIO flag to flush outstanding requests + @param origin Will be set to the origin orientation of the image if non-null. + @return false if a Ganesh backend texture cannot be retrieved. +*/ +SK_API bool GetBackendTextureFromImage(const SkImage* img, + GrBackendTexture* outTexture, + bool flushPendingGrContextIO, + GrSurfaceOrigin* origin = nullptr); +inline bool GetBackendTextureFromImage(const sk_sp& img, + GrBackendTexture* outTexture, + bool flushPendingGrContextIO, + GrSurfaceOrigin* origin = nullptr) { + return GetBackendTextureFromImage(img.get(), outTexture, flushPendingGrContextIO, origin); +} + +/** Extracts the backendTexture from an existing SkImage. + If the image is not already GPU-backed, the raster data will be uploaded as a texture + and returned. + If this is the only reference to the image, the old image's texture will be + moved out of the passed in image. + If the image is shared (has a refcount > 1), the texture will be copied and then returned. + @param context GPU context + @param image image, either CPU-backed or GPU-backed + @param backendTexture Will be set to the underlying texture of the image. + @param backendTextureReleaseProc Called when the texture is released + @return false if image cannot be uploaded. +*/ +SK_API bool MakeBackendTextureFromImage(GrDirectContext* context, + sk_sp image, + GrBackendTexture* backendTexture, + BackendTextureReleaseProc* backendTextureReleaseProc); +// Legacy name +inline bool GetBackendTextureFromImage(GrDirectContext* context, + sk_sp image, + GrBackendTexture* backendTexture, + BackendTextureReleaseProc* backendTextureReleaseProc) { + return MakeBackendTextureFromImage(context, std::move(image), backendTexture, + backendTextureReleaseProc); +} + +/** Returns subset of this image as a texture-backed image. + + Returns nullptr if any of the following are true: + - Subset is empty + - Subset is not contained inside the image's bounds + - Pixels in the source image could not be read or copied + - The source image is texture-backed and context does not match the source image's context. + + @param context the non-null GrDirectContext to which the subset should be uploaded. + @param subset bounds of returned SkImage + @return the subsetted image, uploaded as a texture, or nullptr +*/ +SK_API sk_sp SubsetTextureFrom(GrDirectContext* context, + const SkImage* img, + const SkIRect& subset); + +/** Creates a filtered SkImage on the GPU. filter processes the src image, potentially changing + color, position, and size. subset is the bounds of src that are processed + by filter. clipBounds is the expected bounds of the filtered SkImage. outSubset + is required storage for the actual bounds of the filtered SkImage. offset is + required storage for translation of returned SkImage. + + Returns nullptr if SkImage could not be created or if the recording context provided doesn't + match the GPU context in which the image was created. If nullptr is returned, outSubset + and offset are undefined. + + Useful for animation of SkImageFilter that varies size from frame to frame. + Returned SkImage is created larger than required by filter so that GPU texture + can be reused with different sized effects. outSubset describes the valid bounds + of GPU texture returned. offset translates the returned SkImage to keep subsequent + animation frames aligned with respect to each other. + + @param context the GrRecordingContext in play - if it exists + @param filter how SkImage is sampled when transformed + @param subset bounds of SkImage processed by filter + @param clipBounds expected bounds of filtered SkImage + @param outSubset storage for returned SkImage bounds + @param offset storage for returned SkImage translation + @return filtered SkImage, or nullptr +*/ +SK_API sk_sp MakeWithFilter(GrRecordingContext* context, + sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset); + +} // namespace SkImages + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/SkMeshGanesh.h b/vendor/artifacts/skia/include/gpu/ganesh/SkMeshGanesh.h new file mode 100644 index 000000000..d05db8331 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/SkMeshGanesh.h @@ -0,0 +1,57 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkMeshGanesh_DEFINED +#define SkMeshGanesh_DEFINED + +#include "include/core/SkMesh.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include + +class GrDirectContext; + +namespace SkMeshes { +/** + * Makes a GPU-backed index buffer to be used with SkMeshes. + * + * @param GrDirectContext* If non-null, the data will be uploaded to the corresponding GPU and the + * returned buffer will only be compatible with surfaces using the same + * context. If null, the data will be uploaded to a CPU buffer. + * @param data The data used to populate the buffer, or nullptr to create a zero- + * initialized buffer. + * @param size Both the size of the data in 'data' and the size of the resulting + * buffer. + */ +SK_API sk_sp MakeIndexBuffer(GrDirectContext*, const void* data, size_t size); + +/** + * Makes a copy of an index buffer. The copy will be GPU backed if the context is non-null. + */ +SK_API sk_sp CopyIndexBuffer(GrDirectContext*, sk_sp); + +/** + * Makes a GPU-backed vertex buffer to be used with SkMeshes. + * + * @param GrDirectContext* If non-null, the data will be uploaded to the corresponding GPU and the + * returned buffer will only be compatible with surfaces using the same + * context. If null, the data will be uploaded to a CPU buffer. + * @param data The data used to populate the buffer, or nullptr to create a zero- + * initialized buffer. + * @param size Both the size of the data in 'data' and the size of the resulting + * buffer. + */ +SK_API sk_sp MakeVertexBuffer(GrDirectContext*, const void*, size_t size); + +/** + * Makes a copy of a vertex buffer. The copy will be GPU backed if the context is non-null. + */ +SK_API sk_sp CopyVertexBuffer(GrDirectContext*, sk_sp); +} // namespace SkMeshes + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/SkSurfaceGanesh.h b/vendor/artifacts/skia/include/gpu/ganesh/SkSurfaceGanesh.h new file mode 100644 index 000000000..18fdfc5d1 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/SkSurfaceGanesh.h @@ -0,0 +1,218 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSurfaceGanesh_DEFINED +#define SkSurfaceGanesh_DEFINED + +#include "include/core/SkImageInfo.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSurface.h" +#include "include/gpu/ganesh/GrTypes.h" +#include "include/private/base/SkAPI.h" + +class GrBackendRenderTarget; +class GrBackendTexture; +class GrRecordingContext; +class SkColorSpace; +class GrSurfaceCharacterization; +class SkSurfaceProps; +enum SkColorType : int; +namespace skgpu { +enum class Budgeted : bool; +} + +namespace SkSurfaces { + +/** Caller data passed to RenderTarget/TextureReleaseProc; may be nullptr. */ +using ReleaseContext = void*; + +/** User function called when supplied render target may be deleted. */ +using RenderTargetReleaseProc = void (*)(ReleaseContext); + +/** User function called when supplied texture may be deleted. */ +using TextureReleaseProc = void (*)(ReleaseContext); + +/** Returns SkSurface on GPU indicated by context. Allocates memory for + pixels, based on the width, height, and SkColorType in SkImageInfo. budgeted + selects whether allocation for pixels is tracked by context. imageInfo + describes the pixel format in SkColorType, and transparency in + SkAlphaType, and color matching in SkColorSpace. + + sampleCount requests the number of samples per pixel. + Pass zero to disable multi-sample anti-aliasing. The request is rounded + up to the next supported count, or rounded down if it is larger than the + maximum supported count. + + surfaceOrigin pins either the top-left or the bottom-left corner to the origin. + + shouldCreateWithMips hints that SkImage returned by makeImageSnapshot() is mip map. + + @param context GPU context + @param imageInfo width, height, SkColorType, SkAlphaType, SkColorSpace; + width, or height, or both, may be zero + @param sampleCount samples per pixel, or 0 to disable full scene anti-aliasing + @param surfaceOrigin How to align the pixel data. + @param surfaceProps LCD striping orientation and setting for device independent + fonts; may be nullptr + @param shouldCreateWithMips hint that SkSurface will host mip map images + @return SkSurface if all parameters are valid; otherwise, nullptr +*/ +SK_API sk_sp RenderTarget(GrRecordingContext* context, + skgpu::Budgeted budgeted, + const SkImageInfo& imageInfo, + int sampleCount, + GrSurfaceOrigin surfaceOrigin, + const SkSurfaceProps* surfaceProps, + bool shouldCreateWithMips = false, + bool isProtected = false); +inline sk_sp RenderTarget(GrRecordingContext* context, + skgpu::Budgeted budgeted, + const SkImageInfo& imageInfo, + int sampleCount, + const SkSurfaceProps* surfaceProps) { + return RenderTarget( + context, budgeted, imageInfo, sampleCount, kBottomLeft_GrSurfaceOrigin, surfaceProps); +} +inline sk_sp RenderTarget(GrRecordingContext* context, + skgpu::Budgeted budgeted, + const SkImageInfo& imageInfo) { + if (!imageInfo.width() || !imageInfo.height()) { + return nullptr; + } + return RenderTarget(context, budgeted, imageInfo, 0, kBottomLeft_GrSurfaceOrigin, nullptr); +} + +/** Returns SkSurface on GPU indicated by context that is compatible with the provided + characterization. budgeted selects whether allocation for pixels is tracked by context. + + @param context GPU context + @param characterization description of the desired SkSurface + @return SkSurface if all parameters are valid; otherwise, nullptr +*/ +SK_API sk_sp RenderTarget(GrRecordingContext* context, + const GrSurfaceCharacterization& characterization, + skgpu::Budgeted budgeted); + +/** Wraps a GPU-backed texture into SkSurface. Caller must ensure the texture is + valid for the lifetime of returned SkSurface. If sampleCnt greater than zero, + creates an intermediate MSAA SkSurface which is used for drawing backendTexture. + + SkSurface is returned if all parameters are valid. backendTexture is valid if + its pixel configuration agrees with colorSpace and context; for instance, if + backendTexture has an sRGB configuration, then context must support sRGB, + and colorSpace must be present. Further, backendTexture width and height must + not exceed context capabilities, and the context must be able to support + back-end textures. + + Upon success textureReleaseProc is called when it is safe to delete the texture in the + backend API (accounting only for use of the texture by this surface). If SkSurface creation + fails textureReleaseProc is called before this function returns. + + @param context GPU context + @param backendTexture texture residing on GPU + @param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing + @param colorSpace range of colors; may be nullptr + @param surfaceProps LCD striping orientation and setting for device independent + fonts; may be nullptr + @param textureReleaseProc function called when texture can be released + @param releaseContext state passed to textureReleaseProc + @return SkSurface if all parameters are valid; otherwise, nullptr +*/ +SK_API sk_sp WrapBackendTexture(GrRecordingContext* context, + const GrBackendTexture& backendTexture, + GrSurfaceOrigin origin, + int sampleCnt, + SkColorType colorType, + sk_sp colorSpace, + const SkSurfaceProps* surfaceProps, + TextureReleaseProc textureReleaseProc = nullptr, + ReleaseContext releaseContext = nullptr); + +/** Wraps a GPU-backed buffer into SkSurface. Caller must ensure backendRenderTarget + is valid for the lifetime of returned SkSurface. + + SkSurface is returned if all parameters are valid. backendRenderTarget is valid if + its pixel configuration agrees with colorSpace and context; for instance, if + backendRenderTarget has an sRGB configuration, then context must support sRGB, + and colorSpace must be present. Further, backendRenderTarget width and height must + not exceed context capabilities, and the context must be able to support + back-end render targets. + + Upon success releaseProc is called when it is safe to delete the render target in the + backend API (accounting only for use of the render target by this surface). If SkSurface + creation fails releaseProc is called before this function returns. + + @param context GPU context + @param backendRenderTarget GPU intermediate memory buffer + @param colorSpace range of colors + @param surfaceProps LCD striping orientation and setting for device independent + fonts; may be nullptr + @param releaseProc function called when backendRenderTarget can be released + @param releaseContext state passed to releaseProc + @return SkSurface if all parameters are valid; otherwise, nullptr +*/ +SK_API sk_sp WrapBackendRenderTarget(GrRecordingContext* context, + const GrBackendRenderTarget& backendRenderTarget, + GrSurfaceOrigin origin, + SkColorType colorType, + sk_sp colorSpace, + const SkSurfaceProps* surfaceProps, + RenderTargetReleaseProc releaseProc = nullptr, + ReleaseContext releaseContext = nullptr); + +using BackendHandleAccess = SkSurface::BackendHandleAccess; + +/** Retrieves the back-end texture. If SkSurface has no back-end texture, an invalid + object is returned. Call GrBackendTexture::isValid to determine if the result + is valid. + + The returned GrBackendTexture should be discarded if the SkSurface is drawn to or deleted. + + @return GPU texture reference; invalid on failure +*/ +SK_API GrBackendTexture GetBackendTexture(SkSurface*, BackendHandleAccess); + +/** Retrieves the back-end render target. If SkSurface has no back-end render target, an invalid + object is returned. Call GrBackendRenderTarget::isValid to determine if the result + is valid. + + The returned GrBackendRenderTarget should be discarded if the SkSurface is drawn to + or deleted. + + @return GPU render target reference; invalid on failure +*/ +SK_API GrBackendRenderTarget GetBackendRenderTarget(SkSurface*, BackendHandleAccess); + +/** If a surface is a Ganesh-backed surface, is being drawn with MSAA, and there is a resolve + texture, this call will insert a resolve command into the stream of gpu commands. In order + for the resolve to actually have an effect, the work still needs to be flushed and submitted + to the GPU after recording the resolve command. If a resolve is not supported or the + SkSurface has no dirty work to resolve, then this call is a no-op. + + This call is most useful when the SkSurface is created by wrapping a single sampled gpu + texture, but asking Skia to render with MSAA. If the client wants to use the wrapped texture + outside of Skia, the only way to trigger a resolve is either to call this command or use + GrDirectContext::flush. + */ +SK_API void ResolveMSAA(SkSurface* surface); +inline void ResolveMSAA(const sk_sp& surface) { + return ResolveMSAA(surface.get()); +} + +} // namespace SkSurfaces + +namespace skgpu::ganesh { +// Clients should strive to call GrDirectContext::flush directly. However, there exist some +// places where the GrDirectContext is hard to find, these helpers allow for the flushing of the +// provided surface. This is a no-op if the surface is nullptr or not GPU backed. +SK_API GrSemaphoresSubmitted Flush(sk_sp); +SK_API GrSemaphoresSubmitted Flush(SkSurface*); +SK_API void FlushAndSubmit(sk_sp); +SK_API void FlushAndSubmit(SkSurface*); +} // namespace skgpu::ganesh + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/d3d/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/d3d/BUILD.bazel new file mode 100644 index 000000000..5cf77f9e7 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/d3d/BUILD.bazel @@ -0,0 +1,19 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +# In own file group for gni export +skia_filegroup( + name = "public_hdrs", + srcs = [ + "GrD3DBackendContext.h", + "GrD3DBackendSemaphore.h", + "GrD3DBackendSurface.h", + "GrD3DDirectContext.h", + "GrD3DTypes.h", + ], +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h b/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h new file mode 100644 index 000000000..730ba4230 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendContext.h @@ -0,0 +1,35 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrD3DBackendContext_DEFINED +#define GrD3DBackendContext_DEFINED + +// GrD3DTypes.h includes d3d12.h, which in turn includes windows.h, which redefines many +// common identifiers such as: +// * interface +// * small +// * near +// * far +// * CreateSemaphore +// * MemoryBarrier +// +// You should only include GrD3DBackendContext.h if you are prepared to rename those identifiers. +#include "include/gpu/ganesh/d3d/GrD3DTypes.h" + +#include "include/gpu/ganesh/GrTypes.h" + +// The BackendContext contains all of the base D3D objects needed by the GrD3DGpu. The assumption +// is that the client will set these up and pass them to the GrD3DGpu constructor. +struct SK_API GrD3DBackendContext { + gr_cp fAdapter; + gr_cp fDevice; + gr_cp fQueue; + sk_sp fMemoryAllocator; + GrProtected fProtectedContext = GrProtected::kNo; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendSemaphore.h b/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendSemaphore.h new file mode 100644 index 000000000..f1ab1005c --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendSemaphore.h @@ -0,0 +1,20 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * + */ +#ifndef GrD3DBackendSemaphore_DEFINED +#define GrD3DBackendSemaphore_DEFINED + +#include "include/gpu/ganesh/GrBackendSemaphore.h" +#include "include/private/base/SkAPI.h" +#include "include/private/gpu/ganesh/GrD3DTypesMinimal.h" + +namespace GrBackendSemaphores { +SK_API GrBackendSemaphore MakeD3D(const GrD3DFenceInfo& info); +SK_API GrD3DFenceInfo GetD3DFenceInfo(const GrBackendSemaphore&); +} // namespace GrBackendSemaphores + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendSurface.h b/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendSurface.h new file mode 100644 index 000000000..1619c868d --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DBackendSurface.h @@ -0,0 +1,59 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GrD3DBackendSurface_DEFINED +#define GrD3DBackendSurface_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/gpu/ganesh/GrD3DTypesMinimal.h" + +#include + +class GrBackendFormat; +class GrBackendTexture; +class GrBackendRenderTarget; + +namespace GrBackendFormats { + +SK_API GrBackendFormat MakeD3D(DXGI_FORMAT); +SK_API DXGI_FORMAT AsDxgiFormat(const GrBackendFormat&); + +} // namespace GrBackendFormats + +namespace GrBackendTextures { + +SK_API GrBackendTexture MakeD3D(int width, + int height, + const GrD3DTextureResourceInfo& d3dInfo, + std::string_view label = {}); + +// Return a snapshot of the GrD3DTextureResourceInfo struct. +// This snapshot will set the fResourceState to the current resource state. +SK_API GrD3DTextureResourceInfo GetD3DTextureResourceInfo(const GrBackendTexture&); + +// Anytime the client changes the D3D12_RESOURCE_STATES of the D3D12_RESOURCE captured by this +// GrBackendTexture, they must call this function to notify Skia of the changed layout. +SK_API void SetD3DResourceState(GrBackendTexture*, GrD3DResourceStateEnum); + +} // namespace GrBackendTextures + +namespace GrBackendRenderTargets { + +SK_API GrBackendRenderTarget MakeD3D(int width, + int height, + const GrD3DTextureResourceInfo& d3dInfo); + +// Return a snapshot of the GrD3DTextureResourceInfo struct. +// This snapshot will set the fResourceState to the current resource state. +SK_API GrD3DTextureResourceInfo GetD3DTextureResourceInfo(const GrBackendRenderTarget&); + +// Anytime the client changes the D3D12_RESOURCE_STATES of the D3D12_RESOURCE captured by this +// GrBackendRenderTarget, they must call this function to notify Skia of the changed layout. +SK_API void SetD3DResourceState(GrBackendRenderTarget*, GrD3DResourceStateEnum); + +} // namespace GrBackendRenderTargets + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DDirectContext.h b/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DDirectContext.h new file mode 100644 index 000000000..9e74627d8 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DDirectContext.h @@ -0,0 +1,28 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrD3DDirectContext_DEFINED +#define GrD3DDirectContext_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class GrDirectContext; +struct GrContextOptions; +struct GrD3DBackendContext; + +namespace GrDirectContexts { +/** + * Makes a GrDirectContext which uses Direct3D as the backend. The Direct3D context + * must be kept alive until the returned GrDirectContext is first destroyed or abandoned. + */ +SK_API sk_sp MakeD3D(const GrD3DBackendContext& backendContext, + const GrContextOptions& options); +SK_API sk_sp MakeD3D(const GrD3DBackendContext& backendContext); +} // namespace GrDirectContexts + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DTypes.h b/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DTypes.h new file mode 100644 index 000000000..3e6fbcd71 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/d3d/GrD3DTypes.h @@ -0,0 +1,248 @@ + +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrD3DTypes_DEFINED +#define GrD3DTypes_DEFINED + +// This file includes d3d12.h, which in turn includes windows.h, which redefines many +// common identifiers such as: +// * interface +// * small +// * near +// * far +// * CreateSemaphore +// * MemoryBarrier +// +// You should only include this header if you need the Direct3D definitions and are +// prepared to rename those identifiers. + +#include "include/core/SkRefCnt.h" +#include "include/gpu/GpuTypes.h" +#include +#include + +class GrD3DGpu; + + /** Check if the argument is non-null, and if so, call obj->AddRef() and return obj. + */ +template static inline T* GrSafeComAddRef(T* obj) { + if (obj) { + obj->AddRef(); + } + return obj; +} + +/** Check if the argument is non-null, and if so, call obj->Release() + */ +template static inline void GrSafeComRelease(T* obj) { + if (obj) { + obj->Release(); + } +} + +template class gr_cp { +public: + using element_type = T; + + constexpr gr_cp() : fObject(nullptr) {} + constexpr gr_cp(std::nullptr_t) : fObject(nullptr) {} + + /** + * Shares the underlying object by calling AddRef(), so that both the argument and the newly + * created gr_cp both have a reference to it. + */ + gr_cp(const gr_cp& that) : fObject(GrSafeComAddRef(that.get())) {} + + /** + * Move the underlying object from the argument to the newly created gr_cp. Afterwards only + * the new gr_cp will have a reference to the object, and the argument will point to null. + * No call to AddRef() or Release() will be made. + */ + gr_cp(gr_cp&& that) : fObject(that.release()) {} + + /** + * Adopt the bare object into the newly created gr_cp. + * No call to AddRef() or Release() will be made. + */ + explicit gr_cp(T* obj) { + fObject = obj; + } + + /** + * Calls Release() on the underlying object pointer. + */ + ~gr_cp() { + GrSafeComRelease(fObject); + SkDEBUGCODE(fObject = nullptr); + } + + /** + * Shares the underlying object referenced by the argument by calling AddRef() on it. If this + * gr_cp previously had a reference to an object (i.e. not null) it will call Release() + * on that object. + */ + gr_cp& operator=(const gr_cp& that) { + if (this != &that) { + this->reset(GrSafeComAddRef(that.get())); + } + return *this; + } + + /** + * Move the underlying object from the argument to the gr_cp. If the gr_cp + * previously held a reference to another object, Release() will be called on that object. + * No call to AddRef() will be made. + */ + gr_cp& operator=(gr_cp&& that) { + this->reset(that.release()); + return *this; + } + + explicit operator bool() const { return this->get() != nullptr; } + + T* get() const { return fObject; } + T* operator->() const { return fObject; } + T** operator&() { return &fObject; } + + /** + * Adopt the new object, and call Release() on any previously held object (if not null). + * No call to AddRef() will be made. + */ + void reset(T* object = nullptr) { + T* oldObject = fObject; + fObject = object; + GrSafeComRelease(oldObject); + } + + /** + * Shares the new object by calling AddRef() on it. If this gr_cp previously had a + * reference to an object (i.e. not null) it will call Release() on that object. + */ + void retain(T* object) { + if (this->fObject != object) { + this->reset(GrSafeComAddRef(object)); + } + } + + /** + * Return the original object, and set the internal object to nullptr. + * The caller must assume ownership of the object, and manage its reference count directly. + * No call to Release() will be made. + */ + [[nodiscard]] T* release() { + T* obj = fObject; + fObject = nullptr; + return obj; + } + +private: + T* fObject; +}; + +template inline bool operator==(const gr_cp& a, + const gr_cp& b) { + return a.get() == b.get(); +} + +template inline bool operator!=(const gr_cp& a, + const gr_cp& b) { + return a.get() != b.get(); +} + +// interface classes for the GPU memory allocator +class GrD3DAlloc : public SkRefCnt { +public: + ~GrD3DAlloc() override = default; +}; + +class GrD3DMemoryAllocator : public SkRefCnt { +public: + virtual gr_cp createResource(D3D12_HEAP_TYPE, const D3D12_RESOURCE_DESC*, + D3D12_RESOURCE_STATES initialResourceState, + sk_sp* allocation, + const D3D12_CLEAR_VALUE*) = 0; + virtual gr_cp createAliasingResource(sk_sp& allocation, + uint64_t localOffset, + const D3D12_RESOURCE_DESC*, + D3D12_RESOURCE_STATES initialResourceState, + const D3D12_CLEAR_VALUE*) = 0; +}; + +// Note: there is no notion of Borrowed or Adopted resources in the D3D backend, +// so Ganesh will ref fResource once it's asked to wrap it. +// Clients are responsible for releasing their own ref to avoid memory leaks. +struct GrD3DTextureResourceInfo { + gr_cp fResource = nullptr; + sk_sp fAlloc = nullptr; + D3D12_RESOURCE_STATES fResourceState = D3D12_RESOURCE_STATE_COMMON; + DXGI_FORMAT fFormat = DXGI_FORMAT_UNKNOWN; + uint32_t fSampleCount = 1; + uint32_t fLevelCount = 0; + unsigned int fSampleQualityPattern = DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN; + skgpu::Protected fProtected = skgpu::Protected::kNo; + + GrD3DTextureResourceInfo() = default; + + GrD3DTextureResourceInfo(ID3D12Resource* resource, + const sk_sp alloc, + D3D12_RESOURCE_STATES resourceState, + DXGI_FORMAT format, + uint32_t sampleCount, + uint32_t levelCount, + unsigned int sampleQualityLevel, + skgpu::Protected isProtected = skgpu::Protected::kNo) + : fResource(resource) + , fAlloc(alloc) + , fResourceState(resourceState) + , fFormat(format) + , fSampleCount(sampleCount) + , fLevelCount(levelCount) + , fSampleQualityPattern(sampleQualityLevel) + , fProtected(isProtected) {} + + GrD3DTextureResourceInfo(const GrD3DTextureResourceInfo& info, + D3D12_RESOURCE_STATES resourceState) + : fResource(info.fResource) + , fAlloc(info.fAlloc) + , fResourceState(resourceState) + , fFormat(info.fFormat) + , fSampleCount(info.fSampleCount) + , fLevelCount(info.fLevelCount) + , fSampleQualityPattern(info.fSampleQualityPattern) + , fProtected(info.fProtected) {} + +#if defined(GPU_TEST_UTILS) + bool operator==(const GrD3DTextureResourceInfo& that) const { + return fResource == that.fResource && fResourceState == that.fResourceState && + fFormat == that.fFormat && fSampleCount == that.fSampleCount && + fLevelCount == that.fLevelCount && + fSampleQualityPattern == that.fSampleQualityPattern && fProtected == that.fProtected; + } +#endif +}; + +struct GrD3DFenceInfo { + GrD3DFenceInfo() + : fFence(nullptr) + , fValue(0) { + } + + gr_cp fFence; + uint64_t fValue; // signal value for the fence +}; + +struct GrD3DSurfaceInfo { + uint32_t fSampleCount = 1; + uint32_t fLevelCount = 0; + skgpu::Protected fProtected = skgpu::Protected::kNo; + + DXGI_FORMAT fFormat = DXGI_FORMAT_UNKNOWN; + unsigned int fSampleQualityPattern = DXGI_STANDARD_MULTISAMPLE_QUALITY_PATTERN; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/gl/BUILD.bazel new file mode 100644 index 000000000..fe2414b74 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/BUILD.bazel @@ -0,0 +1,44 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "GrGLAssembleHelpers.h", + "GrGLAssembleInterface.h", + "GrGLBackendSurface.h", + "GrGLConfig.h", + "GrGLDirectContext.h", + "GrGLExtensions.h", + "GrGLFunctions.h", + "GrGLInterface.h", + "GrGLTypes.h", +] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = [ + "//src/gpu/ganesh/gl:__pkg__", + ], +) + +WEBGL_HEADERS = [ + "GrGLMakeWebGLInterface.h", +] + +skia_filegroup( + name = "webgl_hdrs", + srcs = WEBGL_HEADERS, + visibility = [ + "//src/gpu/ganesh/gl/webgl:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS + WEBGL_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h new file mode 100644 index 000000000..2294330dd --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLAssembleHelpers.h @@ -0,0 +1,17 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GrGLAssembleHelpers_DEFINED +#define GrGLAssembleHelpers_DEFINED + +#include "include/gpu/ganesh/gl/GrGLAssembleInterface.h" +#include "include/gpu/ganesh/gl/GrGLFunctions.h" +#include "include/gpu/ganesh/gl/GrGLTypes.h" + +void GrGetEGLQueryAndDisplay(GrEGLQueryStringFn** queryString, GrEGLDisplay* display, + void* ctx, GrGLGetProc get); + +#endif // GrGLAssembleHelpers_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h new file mode 100644 index 000000000..3b7d76076 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLAssembleInterface.h @@ -0,0 +1,45 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GrGLAssembleInterface_DEFINED +#define GrGLAssembleInterface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/gpu/ganesh/gl/GrGLInterface.h" +#include "include/private/base/SkAPI.h" + +typedef GrGLFuncPtr (*GrGLGetProc)(void* ctx, const char name[]); + +/** + * Generic function for creating a GrGLInterface for an either OpenGL or GLES. It calls + * get() to get each function address. ctx is a generic ptr passed to and interpreted by get(). + */ +SK_API sk_sp GrGLMakeAssembledInterface(void *ctx, GrGLGetProc get); + +/** + * Generic function for creating a GrGLInterface for an OpenGL (but not GLES) context. It calls + * get() to get each function address. ctx is a generic ptr passed to and interpreted by get(). + */ +SK_API sk_sp GrGLMakeAssembledGLInterface(void *ctx, GrGLGetProc get); + +/** + * Generic function for creating a GrGLInterface for an OpenGL ES (but not Open GL) context. It + * calls get() to get each function address. ctx is a generic ptr passed to and interpreted by + * get(). + */ +SK_API sk_sp GrGLMakeAssembledGLESInterface(void *ctx, GrGLGetProc get); + +/** + * Generic function for creating a GrGLInterface for a WebGL (similar to OpenGL ES) context. It + * calls get() to get each function address. ctx is a generic ptr passed to and interpreted by + * get(). + */ +SK_API sk_sp GrGLMakeAssembledWebGLInterface(void *ctx, GrGLGetProc get); + +/** Deprecated version of GrGLMakeAssembledInterface() that returns a bare pointer. */ +SK_API const GrGLInterface* GrGLAssembleInterface(void *ctx, GrGLGetProc get); + +#endif // GrGLAssembleInterface_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h new file mode 100644 index 000000000..e76c047fd --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLBackendSurface.h @@ -0,0 +1,64 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLBackendSurface_DEFINED +#define GrGLBackendSurface_DEFINED + +#include "include/gpu/ganesh/gl/GrGLTypes.h" +#include "include/private/base/SkAPI.h" + +#include + +class GrBackendFormat; +class GrBackendTexture; +class GrBackendRenderTarget; + +namespace skgpu { enum class Mipmapped : bool; } + +namespace GrBackendFormats { + +// DEPRECATED: Prefer MakeGL(format) for GL_TEXTURE_2D targets and MakeGLExternal() for +// GL_TEXTURE_EXTERNAL targets. +SK_API GrBackendFormat MakeGL(GrGLenum format, GrGLenum target); + +SK_API GrBackendFormat MakeGL(GrGLenum format); // For GL_TEXTURE_2D textures +SK_API GrBackendFormat MakeGLExternal(); // For GL_TEXTURE_EXTERNAL textures + +SK_API GrGLFormat AsGLFormat(const GrBackendFormat&); +SK_API GrGLenum AsGLFormatEnum(const GrBackendFormat&); +} // namespace GrBackendFormats + +namespace GrBackendTextures { +// The GrGLTextureInfo must have a valid fFormat. +SK_API GrBackendTexture MakeGL(int width, + int height, + skgpu::Mipmapped, + const GrGLTextureInfo& glInfo, + std::string_view label = {}); + +// If the backend API is GL, copies a snapshot of the GrGLTextureInfo struct into the passed in +// pointer and returns true. Otherwise returns false if the backend API is not GL. +SK_API bool GetGLTextureInfo(const GrBackendTexture&, GrGLTextureInfo*); + +// Call this to indicate that the texture parameters have been modified in the GL context +// externally to GrContext. +SK_API void GLTextureParametersModified(GrBackendTexture*); +} // namespace GrBackendTextures + +namespace GrBackendRenderTargets { +// The GrGLTextureInfo must have a valid fFormat. If wrapping in an SkSurface we require the +// stencil bits to be either 0, 8 or 16. +SK_API GrBackendRenderTarget MakeGL(int width, + int height, + int sampleCnt, + int stencilBits, + const GrGLFramebufferInfo& glInfo); + +SK_API bool GetGLFramebufferInfo(const GrBackendRenderTarget&, GrGLFramebufferInfo*); +} // namespace GrBackendRenderTargets + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLConfig.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLConfig.h new file mode 100644 index 000000000..0e494e7c8 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLConfig.h @@ -0,0 +1,69 @@ +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLConfig_DEFINED +#define GrGLConfig_DEFINED + +#include "include/private/base/SkLoadUserConfig.h" + +#if !defined(GR_GL_FUNCTION_TYPE) + #if defined(SK_BUILD_FOR_WIN) + #define GR_GL_FUNCTION_TYPE __stdcall + #else + #define GR_GL_FUNCTION_TYPE + #endif +#endif + +/** + * The following are optional defines that can be enabled at the compiler + * command line, in a IDE project, in a GrUserConfig.h file, or in a GL custom + * file (if one is in use). If a GR_GL_CUSTOM_SETUP_HEADER is used they can + * also be placed there. + * + * GR_GL_LOG_CALLS: if 1 Gr can print every GL call using SkDebugf. Defaults to + * 0. Logging can be enabled and disabled at runtime using a debugger via to + * global gLogCallsGL. The initial value of gLogCallsGL is controlled by + * GR_GL_LOG_CALLS_START. + * + * GR_GL_LOG_CALLS_START: controls the initial value of gLogCallsGL when + * GR_GL_LOG_CALLS is 1. Defaults to 0. + * + * GR_GL_CHECK_ERROR: if enabled Gr can do a glGetError() after every GL call. + * Defaults to 1 if SK_DEBUG is set, otherwise 0. When GR_GL_CHECK_ERROR is 1 + * this can be toggled in a debugger using the gCheckErrorGL global. The initial + * value of gCheckErrorGL is controlled by by GR_GL_CHECK_ERROR_START. + * + * GR_GL_CHECK_ERROR_START: controls the initial value of gCheckErrorGL + * when GR_GL_CHECK_ERROR is 1. Defaults to 1. + * + */ + +#if !defined(GR_GL_LOG_CALLS) + #ifdef SK_DEBUG + #define GR_GL_LOG_CALLS 1 + #else + #define GR_GL_LOG_CALLS 0 + #endif +#endif + +#if !defined(GR_GL_LOG_CALLS_START) + #define GR_GL_LOG_CALLS_START 0 +#endif + +#if !defined(GR_GL_CHECK_ERROR) + #ifdef SK_DEBUG + #define GR_GL_CHECK_ERROR 1 + #else + #define GR_GL_CHECK_ERROR 0 + #endif +#endif + +#if !defined(GR_GL_CHECK_ERROR_START) + #define GR_GL_CHECK_ERROR_START 1 +#endif + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLDirectContext.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLDirectContext.h new file mode 100644 index 000000000..c6c07b192 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLDirectContext.h @@ -0,0 +1,30 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLDirectContext_DEFINED +#define GrGLDirectContext_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class GrDirectContext; +struct GrContextOptions; +struct GrGLInterface; + +namespace GrDirectContexts { +/** + * Creates a GrDirectContext for a backend context. GrGLInterface must be non-null. + */ +SK_API sk_sp MakeGL(sk_sp, const GrContextOptions&); +SK_API sk_sp MakeGL(sk_sp); +#if !defined(SK_DISABLE_LEGACY_GL_MAKE_NATIVE_INTERFACE) +SK_API sk_sp MakeGL(const GrContextOptions&); +SK_API sk_sp MakeGL(); +#endif +} + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLExtensions.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLExtensions.h new file mode 100644 index 000000000..ee089bf6a --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLExtensions.h @@ -0,0 +1,79 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLExtensions_DEFINED +#define GrGLExtensions_DEFINED + +#include "include/core/SkString.h" +#include "include/gpu/ganesh/gl/GrGLFunctions.h" +#include "include/gpu/ganesh/gl/GrGLTypes.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkTArray.h" + +#include + +class SkJSONWriter; + +/** + * This helper queries the current GL context for its extensions, remembers them, and can be + * queried. It supports both glGetString- and glGetStringi-style extension string APIs and will + * use the latter if it is available. It also will query for EGL extensions if a eglQueryString + * implementation is provided. + */ +class SK_API GrGLExtensions { +public: + GrGLExtensions() {} + + GrGLExtensions(const GrGLExtensions&); + + GrGLExtensions& operator=(const GrGLExtensions&); + + void swap(GrGLExtensions* that) { + using std::swap; + swap(fStrings, that->fStrings); + swap(fInitialized, that->fInitialized); + } + + /** + * We sometimes need to use this class without having yet created a GrGLInterface. This version + * of init expects that getString is always non-NULL while getIntegerv and getStringi are non- + * NULL if on desktop GL with version 3.0 or higher. Otherwise it will fail. + */ + bool init(GrGLStandard standard, + GrGLFunction getString, + GrGLFunction getStringi, + GrGLFunction getIntegerv, + GrGLFunction queryString = nullptr, + GrEGLDisplay eglDisplay = nullptr); + + bool isInitialized() const { return fInitialized; } + + /** + * Queries whether an extension is present. This will fail if init() has not been called. + */ + bool has(const char[]) const; + + /** + * Removes an extension if present. Returns true if the extension was present before the call. + */ + bool remove(const char[]); + + /** + * Adds an extension to list + */ + void add(const char[]); + + void reset() { fStrings.clear(); } + + void dumpJSON(SkJSONWriter*) const; + +private: + bool fInitialized = false; + skia_private::TArray fStrings; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLFunctions.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLFunctions.h new file mode 100644 index 000000000..cc118ac2f --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLFunctions.h @@ -0,0 +1,313 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLFunctions_DEFINED +#define GrGLFunctions_DEFINED + +#include +#include "include/gpu/ganesh/gl/GrGLTypes.h" +#include "include/private/base/SkTLogic.h" + +#if defined(__EMSCRIPTEN__) +#include +#endif + +extern "C" { + +/////////////////////////////////////////////////////////////////////////////// + +using GrGLActiveTextureFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum texture); +using GrGLAttachShaderFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program, GrGLuint shader); +using GrGLBeginQueryFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLuint id); +using GrGLBindAttribLocationFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program, GrGLuint index, const char* name); +using GrGLBindBufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLuint buffer); +using GrGLBindFramebufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLuint framebuffer); +using GrGLBindRenderbufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLuint renderbuffer); +using GrGLBindTextureFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLuint texture); +using GrGLBindFragDataLocationFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program, GrGLuint colorNumber, const GrGLchar* name); +using GrGLBindFragDataLocationIndexedFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program, GrGLuint colorNumber, GrGLuint index, const GrGLchar* name); +using GrGLBindSamplerFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint unit, GrGLuint sampler); +using GrGLBindVertexArrayFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint array); +using GrGLBlendBarrierFn = GrGLvoid GR_GL_FUNCTION_TYPE(); +using GrGLBlendColorFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLclampf red, GrGLclampf green, GrGLclampf blue, GrGLclampf alpha); +using GrGLBlendEquationFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode); +using GrGLBlendFuncFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum sfactor, GrGLenum dfactor); +using GrGLBlitFramebufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint srcX0, GrGLint srcY0, GrGLint srcX1, GrGLint srcY1, GrGLint dstX0, GrGLint dstY0, GrGLint dstX1, GrGLint dstY1, GrGLbitfield mask, GrGLenum filter); +using GrGLBufferDataFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLsizeiptr size, const GrGLvoid* data, GrGLenum usage); +using GrGLBufferSubDataFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLintptr offset, GrGLsizeiptr size, const GrGLvoid* data); +using GrGLCheckFramebufferStatusFn = GrGLenum GR_GL_FUNCTION_TYPE(GrGLenum target); +using GrGLClearFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLbitfield mask); +using GrGLClearColorFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLclampf red, GrGLclampf green, GrGLclampf blue, GrGLclampf alpha); +using GrGLClearStencilFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint s); +using GrGLClearTexImageFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint texture, GrGLint level, GrGLenum format, GrGLenum type, const GrGLvoid* data); +using GrGLClearTexSubImageFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint texture, GrGLint level, GrGLint xoffset, GrGLint yoffset, GrGLint zoffset, GrGLsizei width, GrGLsizei height, GrGLsizei depth, GrGLenum format, GrGLenum type, const GrGLvoid* data); +using GrGLColorMaskFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLboolean red, GrGLboolean green, GrGLboolean blue, GrGLboolean alpha); +using GrGLCompileShaderFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint shader); +using GrGLCompressedTexImage2DFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLint level, GrGLenum internalformat, GrGLsizei width, GrGLsizei height, GrGLint border, GrGLsizei imageSize, const GrGLvoid* data); +using GrGLCompressedTexSubImage2DFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLint level, GrGLint xoffset, GrGLint yoffset, GrGLsizei width, GrGLsizei height, GrGLenum format, GrGLsizei imageSize, const GrGLvoid* data); +using GrGLCopyBufferSubDataFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum readTargt, GrGLenum writeTarget, GrGLintptr readOffset, GrGLintptr writeOffset, GrGLsizeiptr size); +using GrGLCopyTexSubImage2DFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLint level, GrGLint xoffset, GrGLint yoffset, GrGLint x, GrGLint y, GrGLsizei width, GrGLsizei height); +using GrGLCreateProgramFn = GrGLuint GR_GL_FUNCTION_TYPE(); +using GrGLCreateShaderFn = GrGLuint GR_GL_FUNCTION_TYPE(GrGLenum type); +using GrGLCullFaceFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode); +using GrGLDeleteBuffersFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, const GrGLuint* buffers); +using GrGLDeleteFencesFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, const GrGLuint* fences); +using GrGLDeleteFramebuffersFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, const GrGLuint* framebuffers); +using GrGLDeleteProgramFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program); +using GrGLDeleteQueriesFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, const GrGLuint* ids); +using GrGLDeleteRenderbuffersFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, const GrGLuint* renderbuffers); +using GrGLDeleteSamplersFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei count, const GrGLuint* samplers); +using GrGLDeleteShaderFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint shader); +using GrGLDeleteTexturesFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, const GrGLuint* textures); +using GrGLDeleteVertexArraysFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, const GrGLuint* arrays); +using GrGLDepthMaskFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLboolean flag); +using GrGLDisableFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum cap); +using GrGLDisableVertexAttribArrayFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint index); +using GrGLDrawArraysFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, GrGLint first, GrGLsizei count); +using GrGLDrawArraysInstancedFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, GrGLint first, GrGLsizei count, GrGLsizei primcount); +using GrGLDrawArraysIndirectFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, const GrGLvoid* indirect); +using GrGLDrawBufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode); +using GrGLDrawBuffersFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, const GrGLenum* bufs); +using GrGLDrawElementsFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, GrGLsizei count, GrGLenum type, const GrGLvoid* indices); +using GrGLDrawElementsInstancedFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, GrGLsizei count, GrGLenum type, const GrGLvoid* indices, GrGLsizei primcount); +using GrGLDrawElementsIndirectFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, GrGLenum type, const GrGLvoid* indirect); +using GrGLDrawRangeElementsFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, GrGLuint start, GrGLuint end, GrGLsizei count, GrGLenum type, const GrGLvoid* indices); +using GrGLEnableFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum cap); +using GrGLEnableVertexAttribArrayFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint index); +using GrGLEndQueryFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target); +using GrGLFinishFn = GrGLvoid GR_GL_FUNCTION_TYPE(); +using GrGLFinishFenceFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint fence); +using GrGLFlushFn = GrGLvoid GR_GL_FUNCTION_TYPE(); +using GrGLFlushMappedBufferRangeFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLintptr offset, GrGLsizeiptr length); +using GrGLFramebufferRenderbufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum attachment, GrGLenum renderbuffertarget, GrGLuint renderbuffer); +using GrGLFramebufferTexture2DFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum attachment, GrGLenum textarget, GrGLuint texture, GrGLint level); +using GrGLFramebufferTexture2DMultisampleFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum attachment, GrGLenum textarget, GrGLuint texture, GrGLint level, GrGLsizei samples); +using GrGLFrontFaceFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode); +using GrGLGenBuffersFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, GrGLuint* buffers); +using GrGLGenFencesFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, GrGLuint* fences); +using GrGLGenFramebuffersFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, GrGLuint* framebuffers); +using GrGLGenerateMipmapFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target); +using GrGLGenQueriesFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, GrGLuint* ids); +using GrGLGenRenderbuffersFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, GrGLuint* renderbuffers); +using GrGLGenSamplersFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei count, GrGLuint* samplers); +using GrGLGenTexturesFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, GrGLuint* textures); +using GrGLGenVertexArraysFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei n, GrGLuint* arrays); +using GrGLGetBufferParameterivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum pname, GrGLint* params); +using GrGLGetErrorFn = GrGLenum GR_GL_FUNCTION_TYPE(); +using GrGLGetFramebufferAttachmentParameterivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum attachment, GrGLenum pname, GrGLint* params); +using GrGLGetFloatvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum pname, GrGLfloat* params); +using GrGLGetIntegervFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum pname, GrGLint* params); +using GrGLGetMultisamplefvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum pname, GrGLuint index, GrGLfloat* val); +using GrGLGetProgramBinaryFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program, GrGLsizei bufsize, GrGLsizei* length, GrGLenum* binaryFormat, void* binary); +using GrGLGetProgramInfoLogFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program, GrGLsizei bufsize, GrGLsizei* length, char* infolog); +using GrGLGetProgramivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program, GrGLenum pname, GrGLint* params); +using GrGLGetQueryivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum GLtarget, GrGLenum pname, GrGLint* params); +using GrGLGetQueryObjecti64vFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint id, GrGLenum pname, GrGLint64* params); +using GrGLGetQueryObjectui64vFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint id, GrGLenum pname, GrGLuint64* params); +using GrGLGetQueryObjectuivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint id, GrGLenum pname, GrGLuint* params); +using GrGLGetRenderbufferParameterivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum pname, GrGLint* params); +using GrGLGetShaderInfoLogFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint shader, GrGLsizei bufsize, GrGLsizei* length, char* infolog); +using GrGLGetShaderivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint shader, GrGLenum pname, GrGLint* params); +using GrGLGetShaderPrecisionFormatFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum shadertype, GrGLenum precisiontype, GrGLint* range, GrGLint* precision); +using GrGLGetStringFn = const GrGLubyte* GR_GL_FUNCTION_TYPE(GrGLenum name); +using GrGLGetStringiFn = const GrGLubyte* GR_GL_FUNCTION_TYPE(GrGLenum name, GrGLuint index); +using GrGLGetTexLevelParameterivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLint level, GrGLenum pname, GrGLint* params); +using GrGLGetUniformLocationFn = GrGLint GR_GL_FUNCTION_TYPE(GrGLuint program, const char* name); +using GrGLInsertEventMarkerFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei length, const char* marker); +using GrGLInvalidateBufferDataFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint buffer); +using GrGLInvalidateBufferSubDataFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint buffer, GrGLintptr offset, GrGLsizeiptr length); +using GrGLInvalidateFramebufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLsizei numAttachments, const GrGLenum* attachments); +using GrGLInvalidateSubFramebufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLsizei numAttachments, const GrGLenum* attachments, GrGLint x, GrGLint y, GrGLsizei width, GrGLsizei height); +using GrGLInvalidateTexImageFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint texture, GrGLint level); +using GrGLInvalidateTexSubImageFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint texture, GrGLint level, GrGLint xoffset, GrGLint yoffset, GrGLint zoffset, GrGLsizei width, GrGLsizei height, GrGLsizei depth); +using GrGLIsTextureFn = GrGLboolean GR_GL_FUNCTION_TYPE(GrGLuint texture); +using GrGLLineWidthFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLfloat width); +using GrGLLinkProgramFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program); +using GrGLMapBufferFn = GrGLvoid* GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum access); +using GrGLMapBufferRangeFn = GrGLvoid* GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLintptr offset, GrGLsizeiptr length, GrGLbitfield access); +using GrGLMapBufferSubDataFn = GrGLvoid* GR_GL_FUNCTION_TYPE(GrGLuint target, GrGLintptr offset, GrGLsizeiptr size, GrGLenum access); +using GrGLMapTexSubImage2DFn = GrGLvoid* GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLint level, GrGLint xoffset, GrGLint yoffset, GrGLsizei width, GrGLsizei height, GrGLenum format, GrGLenum type, GrGLenum access); +using GrGLMemoryBarrierFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLbitfield barriers); +using GrGLPatchParameteriFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum pname, GrGLint value); +using GrGLPixelStoreiFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum pname, GrGLint param); +using GrGLPolygonModeFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum face, GrGLenum mode); +using GrGLPopGroupMarkerFn = GrGLvoid GR_GL_FUNCTION_TYPE(); +using GrGLProgramBinaryFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program, GrGLenum binaryFormat, void* binary, GrGLsizei length); +using GrGLProgramParameteriFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program, GrGLenum pname, GrGLint value); +using GrGLPushGroupMarkerFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsizei length, const char* marker); +using GrGLQueryCounterFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint id, GrGLenum target); +using GrGLReadBufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum src); +using GrGLReadPixelsFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint x, GrGLint y, GrGLsizei width, GrGLsizei height, GrGLenum format, GrGLenum type, GrGLvoid* pixels); +using GrGLRenderbufferStorageFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum internalformat, GrGLsizei width, GrGLsizei height); +using GrGLRenderbufferStorageMultisampleFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLsizei samples, GrGLenum internalformat, GrGLsizei width, GrGLsizei height); +using GrGLResolveMultisampleFramebufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(); +using GrGLSamplerParameterfFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint sampler, GrGLenum pname, GrGLfloat param); +using GrGLSamplerParameteriFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint sampler, GrGLenum pname, GrGLint param); +using GrGLSamplerParameterivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint sampler, GrGLenum pname, const GrGLint* params); +using GrGLScissorFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint x, GrGLint y, GrGLsizei width, GrGLsizei height); +// GL_CHROMIUM_bind_uniform_location +using GrGLBindUniformLocationFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program, GrGLint location, const char* name); +using GrGLSetFenceFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint fence, GrGLenum condition); +using GrGLShaderSourceFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint shader, GrGLsizei count, const char* const* str, const GrGLint* length); +using GrGLStencilFuncFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum func, GrGLint ref, GrGLuint mask); +using GrGLStencilFuncSeparateFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum face, GrGLenum func, GrGLint ref, GrGLuint mask); +using GrGLStencilMaskFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint mask); +using GrGLStencilMaskSeparateFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum face, GrGLuint mask); +using GrGLStencilOpFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum fail, GrGLenum zfail, GrGLenum zpass); +using GrGLStencilOpSeparateFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum face, GrGLenum fail, GrGLenum zfail, GrGLenum zpass); +using GrGLTexBufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum internalformat, GrGLuint buffer); +using GrGLTexBufferRangeFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum internalformat, GrGLuint buffer, GrGLintptr offset, GrGLsizeiptr size); +using GrGLTexImage2DFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLint level, GrGLint internalformat, GrGLsizei width, GrGLsizei height, GrGLint border, GrGLenum format, GrGLenum type, const GrGLvoid* pixels); +using GrGLTexParameterfFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum pname, GrGLfloat param); +using GrGLTexParameterfvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum pname, const GrGLfloat* params); +using GrGLTexParameteriFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum pname, GrGLint param); +using GrGLTexParameterivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum pname, const GrGLint* params); +using GrGLTexStorage2DFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLsizei levels, GrGLenum internalformat, GrGLsizei width, GrGLsizei height); +using GrGLDiscardFramebufferFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLsizei numAttachments, const GrGLenum* attachments); +using GrGLTestFenceFn = GrGLboolean GR_GL_FUNCTION_TYPE(GrGLuint fence); +using GrGLTexSubImage2DFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLint level, GrGLint xoffset, GrGLint yoffset, GrGLsizei width, GrGLsizei height, GrGLenum format, GrGLenum type, const GrGLvoid* pixels); +using GrGLTextureBarrierFn = GrGLvoid GR_GL_FUNCTION_TYPE(); +using GrGLUniform1fFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLfloat v0); +using GrGLUniform1iFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLint v0); +using GrGLUniform1fvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, const GrGLfloat* v); +using GrGLUniform1ivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, const GrGLint* v); +using GrGLUniform2fFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLfloat v0, GrGLfloat v1); +using GrGLUniform2iFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLint v0, GrGLint v1); +using GrGLUniform2fvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, const GrGLfloat* v); +using GrGLUniform2ivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, const GrGLint* v); +using GrGLUniform3fFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLfloat v0, GrGLfloat v1, GrGLfloat v2); +using GrGLUniform3iFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLint v0, GrGLint v1, GrGLint v2); +using GrGLUniform3fvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, const GrGLfloat* v); +using GrGLUniform3ivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, const GrGLint* v); +using GrGLUniform4fFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLfloat v0, GrGLfloat v1, GrGLfloat v2, GrGLfloat v3); +using GrGLUniform4iFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLint v0, GrGLint v1, GrGLint v2, GrGLint v3); +using GrGLUniform4fvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, const GrGLfloat* v); +using GrGLUniform4ivFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, const GrGLint* v); +using GrGLUniformMatrix2fvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, GrGLboolean transpose, const GrGLfloat* value); +using GrGLUniformMatrix3fvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, GrGLboolean transpose, const GrGLfloat* value); +using GrGLUniformMatrix4fvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint location, GrGLsizei count, GrGLboolean transpose, const GrGLfloat* value); +using GrGLUnmapBufferFn = GrGLboolean GR_GL_FUNCTION_TYPE(GrGLenum target); +using GrGLUnmapBufferSubDataFn = GrGLvoid GR_GL_FUNCTION_TYPE(const GrGLvoid* mem); +using GrGLUnmapTexSubImage2DFn = GrGLvoid GR_GL_FUNCTION_TYPE(const GrGLvoid* mem); +using GrGLUseProgramFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint program); +using GrGLVertexAttrib1fFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint indx, const GrGLfloat value); +using GrGLVertexAttrib2fvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint indx, const GrGLfloat* values); +using GrGLVertexAttrib3fvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint indx, const GrGLfloat* values); +using GrGLVertexAttrib4fvFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint indx, const GrGLfloat* values); +using GrGLVertexAttribDivisorFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint index, GrGLuint divisor); +using GrGLVertexAttribIPointerFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint indx, GrGLint size, GrGLenum type, GrGLsizei stride, const GrGLvoid* ptr); +using GrGLVertexAttribPointerFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint indx, GrGLint size, GrGLenum type, GrGLboolean normalized, GrGLsizei stride, const GrGLvoid* ptr); +using GrGLViewportFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLint x, GrGLint y, GrGLsizei width, GrGLsizei height); + +/* GL_NV_framebuffer_mixed_samples */ +using GrGLCoverageModulationFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum components); + +/* EXT_base_instance */ +using GrGLDrawArraysInstancedBaseInstanceFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, GrGLint first, GrGLsizei count, GrGLsizei instancecount, GrGLuint baseinstance); +using GrGLDrawElementsInstancedBaseVertexBaseInstanceFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, GrGLsizei count, GrGLenum type, const void *indices, GrGLsizei instancecount, GrGLint basevertex, GrGLuint baseinstance); + +/* EXT_multi_draw_indirect */ +using GrGLMultiDrawArraysIndirectFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, const GrGLvoid* indirect, GrGLsizei drawcount, GrGLsizei stride); +using GrGLMultiDrawElementsIndirectFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, GrGLenum type, const GrGLvoid* indirect, GrGLsizei drawcount, GrGLsizei stride); + +/* ANGLE_base_vertex_base_instance */ +using GrGLMultiDrawArraysInstancedBaseInstanceFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, const GrGLint* firsts, const GrGLsizei* counts, const GrGLsizei* instanceCounts, const GrGLuint* baseInstances, const GrGLsizei drawcount); +using GrGLMultiDrawElementsInstancedBaseVertexBaseInstanceFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, const GrGLint* counts, GrGLenum type, const GrGLvoid* const* indices, const GrGLsizei* instanceCounts, const GrGLint* baseVertices, const GrGLuint* baseInstances, const GrGLsizei drawcount); + +/* ARB_sync */ +using GrGLFenceSyncFn = GrGLsync GR_GL_FUNCTION_TYPE(GrGLenum condition, GrGLbitfield flags); +using GrGLIsSyncFn = GrGLboolean GR_GL_FUNCTION_TYPE(GrGLsync sync); +#if defined(__EMSCRIPTEN__) && (__EMSCRIPTEN_major__ < 5) +using GrGLClientWaitSyncFn = GrGLenum GR_GL_FUNCTION_TYPE(GrGLsync sync, GrGLbitfield flags, GrGLint timeoutLo, GrGLint timeoutHi); +using GrGLWaitSyncFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsync sync, GrGLbitfield flags, GrGLuint timeoutLo, GrGLuint timeoutHi); +#else +using GrGLClientWaitSyncFn = GrGLenum GR_GL_FUNCTION_TYPE(GrGLsync sync, GrGLbitfield flags, GrGLuint64 timeout); +using GrGLWaitSyncFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsync sync, GrGLbitfield flags, GrGLuint64 timeout); +#endif +using GrGLDeleteSyncFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLsync sync); + +/* ARB_internalformat_query */ +using GrGLGetInternalformativFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum target, GrGLenum internalformat, GrGLenum pname, GrGLsizei bufSize, GrGLint* params); + +/* KHR_debug */ +using GrGLDebugMessageControlFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum source, GrGLenum type, GrGLenum severity, GrGLsizei count, const GrGLuint* ids, GrGLboolean enabled); +using GrGLDebugMessageInsertFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum source, GrGLenum type, GrGLuint id, GrGLenum severity, GrGLsizei length, const GrGLchar* buf); +using GrGLDebugMessageCallbackFn = GrGLvoid GR_GL_FUNCTION_TYPE(GRGLDEBUGPROC callback, const GrGLvoid* userParam); +using GrGLGetDebugMessageLogFn = GrGLuint GR_GL_FUNCTION_TYPE(GrGLuint count, GrGLsizei bufSize, GrGLenum* sources, GrGLenum* types, GrGLuint* ids, GrGLenum* severities, GrGLsizei* lengths, GrGLchar* messageLog); +using GrGLPushDebugGroupFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum source, GrGLuint id, GrGLsizei length, const GrGLchar* message); +using GrGLPopDebugGroupFn = GrGLvoid GR_GL_FUNCTION_TYPE(); +using GrGLObjectLabelFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum identifier, GrGLuint name, GrGLsizei length, const GrGLchar* label); + +/** EXT_window_rectangles */ +using GrGLWindowRectanglesFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLenum mode, GrGLsizei count, const GrGLint box[]); + +/** GL_QCOM_tiled_rendering */ +using GrGLStartTilingFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLuint x, GrGLuint y, GrGLuint width, GrGLuint height, GrGLbitfield preserveMask); +using GrGLEndTilingFn = GrGLvoid GR_GL_FUNCTION_TYPE(GrGLbitfield preserveMask); + +/** EGL functions */ +using GrEGLQueryStringFn = const char* GR_GL_FUNCTION_TYPE(GrEGLDisplay dpy, GrEGLint name); +using GrEGLGetCurrentDisplayFn = GrEGLDisplay GR_GL_FUNCTION_TYPE(); +using GrEGLCreateImageFn = GrEGLImage GR_GL_FUNCTION_TYPE(GrEGLDisplay dpy, GrEGLContext ctx, GrEGLenum target, GrEGLClientBuffer buffer, const GrEGLint* attrib_list); +using GrEGLDestroyImageFn = GrEGLBoolean GR_GL_FUNCTION_TYPE(GrEGLDisplay dpy, GrEGLImage image); +} // extern "C" + +// This is a lighter-weight std::function, trying to reduce code size and compile time +// by only supporting the exact use cases we require. +template class GrGLFunction; + +template +class GrGLFunction { +public: + using Fn = R GR_GL_FUNCTION_TYPE(Args...); + // Construct empty. + GrGLFunction() = default; + GrGLFunction(std::nullptr_t) {} + + // Construct from a simple function pointer. + GrGLFunction(Fn* fn_ptr) { + static_assert(sizeof(fn_ptr) <= sizeof(fBuf), "fBuf is too small"); + if (fn_ptr) { + memcpy(fBuf, &fn_ptr, sizeof(fn_ptr)); + fCall = [](const void* buf, Args... args) { + return (*(Fn* const *)buf)(std::forward(args)...); + }; + } + } + + // Construct from a small closure. + template + GrGLFunction(Closure closure) : GrGLFunction() { + static_assert(sizeof(Closure) <= sizeof(fBuf), "fBuf is too small"); +#if defined(__APPLE__) // I am having serious trouble getting these to work with all STLs... + static_assert(std::is_trivially_copyable::value, ""); + static_assert(std::is_trivially_destructible::value, ""); +#endif + + memcpy(fBuf, &closure, sizeof(closure)); + fCall = [](const void* buf, Args... args) { + auto closure = (const Closure*)buf; + return (*closure)(args...); + }; + } + + R operator()(Args... args) const { + SkASSERT(fCall); + return fCall(fBuf, std::forward(args)...); + } + + explicit operator bool() const { return fCall != nullptr; } + + void reset() { fCall = nullptr; } + +private: + using Call = R(const void* buf, Args...); + Call* fCall = nullptr; + size_t fBuf[4]; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLInterface.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLInterface.h new file mode 100644 index 000000000..4a159963e --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLInterface.h @@ -0,0 +1,337 @@ +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLInterface_DEFINED +#define GrGLInterface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/gpu/ganesh/gl/GrGLExtensions.h" +#include "include/gpu/ganesh/gl/GrGLFunctions.h" + +//////////////////////////////////////////////////////////////////////////////// + +typedef void(*GrGLFuncPtr)(); +struct GrGLInterface; + + +#if !defined(SK_DISABLE_LEGACY_GL_MAKE_NATIVE_INTERFACE) +/** + * Rather than depend on platform-specific GL headers and libraries, we require + * the client to provide a struct of GL function pointers. This struct can be + * specified per-GrContext as a parameter to GrContext::MakeGL. If no interface is + * passed to MakeGL then a default GL interface is created using GrGLMakeNativeInterface(). + * If this returns nullptr then GrContext::MakeGL() will fail. + * + * The implementation of GrGLMakeNativeInterface is platform-specific. Several + * implementations have been provided (for GLX, WGL, EGL, etc), along with an + * implementation that simply returns nullptr. Clients should select the most + * appropriate one to build. + */ +SK_API sk_sp GrGLMakeNativeInterface(); +#endif + +/** + * GrContext uses the following interface to make all calls into OpenGL. When a + * GrContext is created it is given a GrGLInterface. The interface's function + * pointers must be valid for the OpenGL context associated with the GrContext. + * On some platforms, such as Windows, function pointers for OpenGL extensions + * may vary between OpenGL contexts. So the caller must be careful to use a + * GrGLInterface initialized for the correct context. All functions that should + * be available based on the OpenGL's version and extension string must be + * non-NULL or GrContext creation will fail. This can be tested with the + * validate() method when the OpenGL context has been made current. + */ +struct SK_API GrGLInterface : public SkRefCnt { +private: + using INHERITED = SkRefCnt; + +#if GR_GL_CHECK_ERROR + // This is here to avoid having our debug code that checks for a GL error after most GL calls + // accidentally swallow an OOM that should be reported. + mutable bool fOOMed = false; + bool fSuppressErrorLogging = false; +#endif + +public: + GrGLInterface(); + + // Validates that the GrGLInterface supports its advertised standard. This means the necessary + // function pointers have been initialized for both the GL version and any advertised + // extensions. + bool validate() const; + +#if GR_GL_CHECK_ERROR + GrGLenum checkError(const char* location, const char* call) const; + bool checkAndResetOOMed() const; + void suppressErrorLogging(); +#endif + +#if defined(GPU_TEST_UTILS) + GrGLInterface(const GrGLInterface& that) + : fStandard(that.fStandard) + , fExtensions(that.fExtensions) + , fFunctions(that.fFunctions) {} +#endif + + // Indicates the type of GL implementation + GrGLStandard fStandard; + GrGLExtensions fExtensions; + + bool hasExtension(const char ext[]) const { return fExtensions.has(ext); } + + /** + * The function pointers are in a struct so that we can have a compiler generated assignment + * operator. + */ + struct Functions { + GrGLFunction fActiveTexture; + GrGLFunction fAttachShader; + GrGLFunction fBeginQuery; + GrGLFunction fBindAttribLocation; + GrGLFunction fBindBuffer; + GrGLFunction fBindFragDataLocation; + GrGLFunction fBindFragDataLocationIndexed; + GrGLFunction fBindFramebuffer; + GrGLFunction fBindRenderbuffer; + GrGLFunction fBindSampler; + GrGLFunction fBindTexture; + GrGLFunction fBindVertexArray; + GrGLFunction fBlendBarrier; + GrGLFunction fBlendColor; + GrGLFunction fBlendEquation; + GrGLFunction fBlendFunc; + GrGLFunction fBlitFramebuffer; + GrGLFunction fBufferData; + GrGLFunction fBufferSubData; + GrGLFunction fCheckFramebufferStatus; + GrGLFunction fClear; + GrGLFunction fClearColor; + GrGLFunction fClearStencil; + GrGLFunction fClearTexImage; + GrGLFunction fClearTexSubImage; + GrGLFunction fColorMask; + GrGLFunction fCompileShader; + GrGLFunction fCompressedTexImage2D; + GrGLFunction fCompressedTexSubImage2D; + GrGLFunction fCopyBufferSubData; + GrGLFunction fCopyTexSubImage2D; + GrGLFunction fCreateProgram; + GrGLFunction fCreateShader; + GrGLFunction fCullFace; + GrGLFunction fDeleteBuffers; + GrGLFunction fDeleteFences; + GrGLFunction fDeleteFramebuffers; + GrGLFunction fDeleteProgram; + GrGLFunction fDeleteQueries; + GrGLFunction fDeleteRenderbuffers; + GrGLFunction fDeleteSamplers; + GrGLFunction fDeleteShader; + GrGLFunction fDeleteTextures; + GrGLFunction fDeleteVertexArrays; + GrGLFunction fDepthMask; + GrGLFunction fDisable; + GrGLFunction fDisableVertexAttribArray; + GrGLFunction fDrawArrays; + GrGLFunction fDrawArraysIndirect; + GrGLFunction fDrawArraysInstanced; + GrGLFunction fDrawBuffer; + GrGLFunction fDrawBuffers; + GrGLFunction fDrawElements; + GrGLFunction fDrawElementsIndirect; + GrGLFunction fDrawElementsInstanced; + GrGLFunction fDrawRangeElements; + GrGLFunction fEnable; + GrGLFunction fEnableVertexAttribArray; + GrGLFunction fEndQuery; + GrGLFunction fFinish; + GrGLFunction fFinishFence; + GrGLFunction fFlush; + GrGLFunction fFlushMappedBufferRange; + GrGLFunction fFramebufferRenderbuffer; + GrGLFunction fFramebufferTexture2D; + GrGLFunction fFramebufferTexture2DMultisample; + GrGLFunction fFrontFace; + GrGLFunction fGenBuffers; + GrGLFunction fGenFences; + GrGLFunction fGenFramebuffers; + GrGLFunction fGenerateMipmap; + GrGLFunction fGenQueries; + GrGLFunction fGenRenderbuffers; + GrGLFunction fGenSamplers; + GrGLFunction fGenTextures; + GrGLFunction fGenVertexArrays; + GrGLFunction fGetBufferParameteriv; + GrGLFunction fGetError; + GrGLFunction fGetFramebufferAttachmentParameteriv; + GrGLFunction fGetFloatv; + GrGLFunction fGetIntegerv; + GrGLFunction fGetMultisamplefv; + GrGLFunction fGetProgramBinary; + GrGLFunction fGetProgramInfoLog; + GrGLFunction fGetProgramiv; + GrGLFunction fGetQueryObjecti64v; + GrGLFunction fGetQueryObjectui64v; + GrGLFunction fGetQueryObjectuiv; + GrGLFunction fGetQueryiv; + GrGLFunction fGetRenderbufferParameteriv; + GrGLFunction fGetShaderInfoLog; + GrGLFunction fGetShaderiv; + GrGLFunction fGetShaderPrecisionFormat; + GrGLFunction fGetString; + GrGLFunction fGetStringi; + GrGLFunction fGetTexLevelParameteriv; + GrGLFunction fGetUniformLocation; + GrGLFunction fInsertEventMarker; + GrGLFunction fInvalidateBufferData; + GrGLFunction fInvalidateBufferSubData; + GrGLFunction fInvalidateFramebuffer; + GrGLFunction fInvalidateSubFramebuffer; + GrGLFunction fInvalidateTexImage; + GrGLFunction fInvalidateTexSubImage; + GrGLFunction fIsTexture; + GrGLFunction fLineWidth; + GrGLFunction fLinkProgram; + GrGLFunction fProgramBinary; + GrGLFunction fProgramParameteri; + GrGLFunction fMapBuffer; + GrGLFunction fMapBufferRange; + GrGLFunction fMapBufferSubData; + GrGLFunction fMapTexSubImage2D; + GrGLFunction fMemoryBarrier; + GrGLFunction fDrawArraysInstancedBaseInstance; + GrGLFunction fDrawElementsInstancedBaseVertexBaseInstance; + GrGLFunction fMultiDrawArraysIndirect; + GrGLFunction fMultiDrawElementsIndirect; + GrGLFunction fMultiDrawArraysInstancedBaseInstance; + GrGLFunction fMultiDrawElementsInstancedBaseVertexBaseInstance; + GrGLFunction fPatchParameteri; + GrGLFunction fPixelStorei; + GrGLFunction fPolygonMode; + GrGLFunction fPopGroupMarker; + GrGLFunction fPushGroupMarker; + GrGLFunction fQueryCounter; + GrGLFunction fReadBuffer; + GrGLFunction fReadPixels; + GrGLFunction fRenderbufferStorage; + + // On OpenGL ES there are multiple incompatible extensions that add support for MSAA + // and ES3 adds MSAA support to the standard. On an ES3 driver we may still use the + // older extensions for performance reasons or due to ES3 driver bugs. We want the function + // that creates the GrGLInterface to provide all available functions and internally + // we will select among them. They all have a method called glRenderbufferStorageMultisample*. + // So we have separate function pointers for GL_IMG/EXT_multisampled_to_texture, + // GL_CHROMIUM/ANGLE_framebuffer_multisample/ES3, and GL_APPLE_framebuffer_multisample + // variations. + // + // If a driver supports multiple GL_ARB_framebuffer_multisample-style extensions then we will + // assume the function pointers for the standard (or equivalent GL_ARB) version have + // been preferred over GL_EXT, GL_CHROMIUM, or GL_ANGLE variations that have reduced + // functionality. + + // GL_EXT_multisampled_render_to_texture (preferred) or GL_IMG_multisampled_render_to_texture + GrGLFunction fRenderbufferStorageMultisampleES2EXT; + // GL_APPLE_framebuffer_multisample + GrGLFunction fRenderbufferStorageMultisampleES2APPLE; + + // This is used to store the pointer for GL_ARB/EXT/ANGLE/CHROMIUM_framebuffer_multisample or + // the standard function in ES3+ or GL 3.0+. + GrGLFunction fRenderbufferStorageMultisample; + + // Pointer to BindUniformLocationCHROMIUM from the GL_CHROMIUM_bind_uniform_location extension. + GrGLFunction fBindUniformLocation; + + GrGLFunction fResolveMultisampleFramebuffer; + GrGLFunction fSamplerParameterf; + GrGLFunction fSamplerParameteri; + GrGLFunction fSamplerParameteriv; + GrGLFunction fScissor; + GrGLFunction fSetFence; + GrGLFunction fShaderSource; + GrGLFunction fStencilFunc; + GrGLFunction fStencilFuncSeparate; + GrGLFunction fStencilMask; + GrGLFunction fStencilMaskSeparate; + GrGLFunction fStencilOp; + GrGLFunction fStencilOpSeparate; + GrGLFunction fTestFence; + GrGLFunction fTexBuffer; + GrGLFunction fTexBufferRange; + GrGLFunction fTexImage2D; + GrGLFunction fTexParameterf; + GrGLFunction fTexParameterfv; + GrGLFunction fTexParameteri; + GrGLFunction fTexParameteriv; + GrGLFunction fTexSubImage2D; + GrGLFunction fTexStorage2D; + GrGLFunction fTextureBarrier; + GrGLFunction fDiscardFramebuffer; + GrGLFunction fUniform1f; + GrGLFunction fUniform1i; + GrGLFunction fUniform1fv; + GrGLFunction fUniform1iv; + GrGLFunction fUniform2f; + GrGLFunction fUniform2i; + GrGLFunction fUniform2fv; + GrGLFunction fUniform2iv; + GrGLFunction fUniform3f; + GrGLFunction fUniform3i; + GrGLFunction fUniform3fv; + GrGLFunction fUniform3iv; + GrGLFunction fUniform4f; + GrGLFunction fUniform4i; + GrGLFunction fUniform4fv; + GrGLFunction fUniform4iv; + GrGLFunction fUniformMatrix2fv; + GrGLFunction fUniformMatrix3fv; + GrGLFunction fUniformMatrix4fv; + GrGLFunction fUnmapBuffer; + GrGLFunction fUnmapBufferSubData; + GrGLFunction fUnmapTexSubImage2D; + GrGLFunction fUseProgram; + GrGLFunction fVertexAttrib1f; + GrGLFunction fVertexAttrib2fv; + GrGLFunction fVertexAttrib3fv; + GrGLFunction fVertexAttrib4fv; + GrGLFunction fVertexAttribDivisor; + GrGLFunction fVertexAttribIPointer; + GrGLFunction fVertexAttribPointer; + GrGLFunction fViewport; + + /* ARB_sync */ + GrGLFunction fFenceSync; + GrGLFunction fIsSync; + GrGLFunction fClientWaitSync; + GrGLFunction fWaitSync; + GrGLFunction fDeleteSync; + + /* ARB_internalforamt_query */ + GrGLFunction fGetInternalformativ; + + /* KHR_debug */ + GrGLFunction fDebugMessageControl; + GrGLFunction fDebugMessageInsert; + GrGLFunction fDebugMessageCallback; + GrGLFunction fGetDebugMessageLog; + GrGLFunction fPushDebugGroup; + GrGLFunction fPopDebugGroup; + GrGLFunction fObjectLabel; + + /* EXT_window_rectangles */ + GrGLFunction fWindowRectangles; + + /* GL_QCOM_tiled_rendering */ + GrGLFunction fStartTiling; + GrGLFunction fEndTiling; + } fFunctions; + +#if defined(GPU_TEST_UTILS) + // This exists for internal testing. + virtual void abandon() const; +#endif +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h new file mode 100644 index 000000000..05452d13a --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLMakeWebGLInterface.h @@ -0,0 +1,19 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GrGLMakeWebGLInterface_DEFINED +#define GrGLMakeWebGLInterface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +struct GrGLInterface; + +namespace GrGLInterfaces { +SK_API sk_sp MakeWebGL(); +} + +#endif // GrGLMakeWebGLInterface_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLTypes.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLTypes.h new file mode 100644 index 000000000..a1bdfa8f5 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/GrGLTypes.h @@ -0,0 +1,219 @@ + +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLTypes_DEFINED +#define GrGLTypes_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/gpu/GpuTypes.h" +#include "include/gpu/ganesh/gl/GrGLConfig.h" + +/** + * Classifies GL contexts by which standard they implement (currently as OpenGL vs. OpenGL ES). + */ +enum GrGLStandard { + kNone_GrGLStandard, + kGL_GrGLStandard, + kGLES_GrGLStandard, + kWebGL_GrGLStandard, +}; +static const int kGrGLStandardCnt = 4; + +// The following allow certain interfaces to be turned off at compile time +// (for example, to lower code size). +#if SK_ASSUME_GL_ES + #define GR_IS_GR_GL(standard) false + #define GR_IS_GR_GL_ES(standard) true + #define GR_IS_GR_WEBGL(standard) false + #define SK_DISABLE_GL_INTERFACE 1 + #define SK_DISABLE_WEBGL_INTERFACE 1 +#elif SK_ASSUME_GL + #define GR_IS_GR_GL(standard) true + #define GR_IS_GR_GL_ES(standard) false + #define GR_IS_GR_WEBGL(standard) false + #define SK_DISABLE_GL_ES_INTERFACE 1 + #define SK_DISABLE_WEBGL_INTERFACE 1 +#elif SK_ASSUME_WEBGL + #define GR_IS_GR_GL(standard) false + #define GR_IS_GR_GL_ES(standard) false + #define GR_IS_GR_WEBGL(standard) true + #define SK_DISABLE_GL_ES_INTERFACE 1 + #define SK_DISABLE_GL_INTERFACE 1 +#else + #define GR_IS_GR_GL(standard) (kGL_GrGLStandard == standard) + #define GR_IS_GR_GL_ES(standard) (kGLES_GrGLStandard == standard) + #define GR_IS_GR_WEBGL(standard) (kWebGL_GrGLStandard == standard) +#endif + +/////////////////////////////////////////////////////////////////////////////// + +/** + * The supported GL formats represented as an enum. Actual support by GrContext depends on GL + * context version and extensions. + */ +enum class GrGLFormat { + kUnknown, + + kRGBA8, + kR8, + kALPHA8, + kLUMINANCE8, + kLUMINANCE8_ALPHA8, + kBGRA8, + kRGB565, + kRGBA16F, + kR16F, + kRGB8, + kRGBX8, + kRG8, + kRGB10_A2, + kRGBA4, + kSRGB8_ALPHA8, + kCOMPRESSED_ETC1_RGB8, + kCOMPRESSED_RGB8_ETC2, + kCOMPRESSED_RGB8_BC1, + kCOMPRESSED_RGBA8_BC1, + kR16, + kRG16, + kRGBA16, + kRG16F, + kLUMINANCE16F, + + kLastColorFormat = kLUMINANCE16F, + + // Depth/Stencil formats + kSTENCIL_INDEX8, + kSTENCIL_INDEX16, + kDEPTH24_STENCIL8, + + kLast = kDEPTH24_STENCIL8 +}; + +/////////////////////////////////////////////////////////////////////////////// +/** + * Declares typedefs for all the GL functions used in GrGLInterface + */ + +typedef unsigned int GrGLenum; +typedef unsigned char GrGLboolean; +typedef unsigned int GrGLbitfield; +typedef signed char GrGLbyte; +typedef char GrGLchar; +typedef short GrGLshort; +typedef int GrGLint; +typedef int GrGLsizei; +typedef int64_t GrGLint64; +typedef unsigned char GrGLubyte; +typedef unsigned short GrGLushort; +typedef unsigned int GrGLuint; +typedef uint64_t GrGLuint64; +typedef unsigned short int GrGLhalf; +typedef float GrGLfloat; +typedef float GrGLclampf; +typedef double GrGLdouble; +typedef double GrGLclampd; +typedef void GrGLvoid; +#ifdef _WIN64 +typedef signed long long int GrGLintptr; +typedef signed long long int GrGLsizeiptr; +#else +typedef signed long int GrGLintptr; +typedef signed long int GrGLsizeiptr; +#endif +typedef void* GrGLeglImage; +typedef struct __GLsync* GrGLsync; + +struct GrGLDrawArraysIndirectCommand { + GrGLuint fCount; + GrGLuint fInstanceCount; + GrGLuint fFirst; + GrGLuint fBaseInstance; // Requires EXT_base_instance on ES. +}; + +// static_asserts must have messages in this file because its included in C++14 client code. +static_assert(16 == sizeof(GrGLDrawArraysIndirectCommand), ""); + +struct GrGLDrawElementsIndirectCommand { + GrGLuint fCount; + GrGLuint fInstanceCount; + GrGLuint fFirstIndex; + GrGLuint fBaseVertex; + GrGLuint fBaseInstance; // Requires EXT_base_instance on ES. +}; + +static_assert(20 == sizeof(GrGLDrawElementsIndirectCommand), ""); + +/** + * KHR_debug + */ +typedef void (GR_GL_FUNCTION_TYPE* GRGLDEBUGPROC)(GrGLenum source, + GrGLenum type, + GrGLuint id, + GrGLenum severity, + GrGLsizei length, + const GrGLchar* message, + const void* userParam); + +/** + * EGL types. + */ +typedef void* GrEGLImage; +typedef void* GrEGLDisplay; +typedef void* GrEGLContext; +typedef void* GrEGLClientBuffer; +typedef unsigned int GrEGLenum; +typedef int32_t GrEGLint; +typedef unsigned int GrEGLBoolean; + +/////////////////////////////////////////////////////////////////////////////// +/** + * Types for interacting with GL resources created externally to Skia. GrBackendObjects for GL + * textures are really const GrGLTexture*. The fFormat here should be a sized, internal format + * for the texture. We will try to use the sized format if the GL Context supports it, otherwise + * we will internally fall back to using the base internal formats. + */ +struct GrGLTextureInfo { + GrGLenum fTarget; + GrGLuint fID; + GrGLenum fFormat = 0; + skgpu::Protected fProtected = skgpu::Protected::kNo; + + bool operator==(const GrGLTextureInfo& that) const { + return fTarget == that.fTarget && + fID == that.fID && + fFormat == that.fFormat && + fProtected == that.fProtected; + } + + bool isProtected() const { return fProtected == skgpu::Protected::kYes; } +}; + +struct GrGLFramebufferInfo { + GrGLuint fFBOID; + GrGLenum fFormat = 0; + skgpu::Protected fProtected = skgpu::Protected::kNo; + + bool operator==(const GrGLFramebufferInfo& that) const { + return fFBOID == that.fFBOID && + fFormat == that.fFormat && + fProtected == that.fProtected; + } + + bool isProtected() const { return fProtected == skgpu::Protected::kYes; } +}; + +struct GrGLSurfaceInfo { + uint32_t fSampleCount = 1; + uint32_t fLevelCount = 0; + skgpu::Protected fProtected = skgpu::Protected::kNo; + + GrGLenum fTarget = 0; + GrGLenum fFormat = 0; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/egl/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/gl/egl/BUILD.bazel new file mode 100644 index 000000000..d435e9921 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/egl/BUILD.bazel @@ -0,0 +1,16 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "public_hdrs", + srcs = ["GrGLMakeEGLInterface.h"], + visibility = [ + "//src/gpu/ganesh/gl/egl:__pkg__", + "//tools/ganesh/gl/egl:__pkg__", + ], +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/egl/GrGLMakeEGLInterface.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/egl/GrGLMakeEGLInterface.h new file mode 100644 index 000000000..8b14b8881 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/egl/GrGLMakeEGLInterface.h @@ -0,0 +1,23 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GrGLMakeEGLInterface_DEFINED +#define GrGLMakeEGLInterface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/gpu/ganesh/GrTypes.h" + +struct GrGLInterface; + +namespace GrGLInterfaces { +SK_API sk_sp MakeEGL(); +} + +#if !defined(SK_DISABLE_LEGACY_EGLINTERFACE_FACTORY) +sk_sp GrGLMakeEGLInterface(); +#endif + +#endif // GrGLMakeEGLInterface_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/epoxy/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/gl/epoxy/BUILD.bazel new file mode 100644 index 000000000..e82164407 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/epoxy/BUILD.bazel @@ -0,0 +1,15 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "public_hdrs", + srcs = ["GrGLMakeEpoxyEGLInterface.h"], + visibility = [ + "//src/gpu/ganesh/gl/epoxy:__pkg__", + ], +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h new file mode 100644 index 000000000..8dc6d1b97 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/epoxy/GrGLMakeEpoxyEGLInterface.h @@ -0,0 +1,20 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLMakeEpoxyEGLInterface_DEFINED +#define GrGLMakeEpoxyEGLInterface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +struct GrGLInterface; + +namespace GrGLInterfaces { +SK_API sk_sp MakeEpoxyEGL(); +} + +#endif // GrGLMakeEpoxyEGLInterface_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/glx/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/gl/glx/BUILD.bazel new file mode 100644 index 000000000..f7e902050 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/glx/BUILD.bazel @@ -0,0 +1,16 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "public_hdrs", + srcs = ["GrGLMakeGLXInterface.h"], + visibility = [ + "//src/gpu/ganesh/gl/glx:__pkg__", + "//tools/ganesh/gl/glx:__pkg__", + ], +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/glx/GrGLMakeGLXInterface.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/glx/GrGLMakeGLXInterface.h new file mode 100644 index 000000000..74d07bd30 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/glx/GrGLMakeGLXInterface.h @@ -0,0 +1,23 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GrGLMakeGLXInterface_DEFINED +#define GrGLMakeGLXInterface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +struct GrGLInterface; + +namespace GrGLInterfaces { +SK_API sk_sp MakeGLX(); +} + +#if !defined(SK_DISABLE_LEGACY_GLXINTERFACE_FACTORY) +sk_sp GrGLMakeGLXInterface(); +#endif + +#endif // GrGLMakeGLXInterface_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/ios/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/gl/ios/BUILD.bazel new file mode 100644 index 000000000..8c88d94b1 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/ios/BUILD.bazel @@ -0,0 +1,15 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "public_hdrs", + srcs = ["GrGLMakeIOSInterface.h"], + visibility = [ + "//src/gpu/ganesh/gl/iOS:__pkg__", + ], +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h new file mode 100644 index 000000000..e6369347a --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/ios/GrGLMakeIOSInterface.h @@ -0,0 +1,20 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLMakeIOSInterface_DEFINED +#define GrGLMakeIOSInterface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +struct GrGLInterface; + +namespace GrGLInterfaces { +SK_API sk_sp MakeIOS(); +} + +#endif // GrGLMakeIOSInterface_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/mac/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/gl/mac/BUILD.bazel new file mode 100644 index 000000000..dcbae04ad --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/mac/BUILD.bazel @@ -0,0 +1,15 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "public_hdrs", + srcs = ["GrGLMakeMacInterface.h"], + visibility = [ + "//src/gpu/ganesh/gl/mac:__pkg__", + ], +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h new file mode 100644 index 000000000..b12461ae5 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/mac/GrGLMakeMacInterface.h @@ -0,0 +1,20 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLMakeMacInterface_DEFINED +#define GrGLMakeMacInterface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +struct GrGLInterface; + +namespace GrGLInterfaces { +SK_API sk_sp MakeMac(); +} + +#endif // GrGLMakeMacInterface_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/win/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/gl/win/BUILD.bazel new file mode 100644 index 000000000..24bad9924 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/win/BUILD.bazel @@ -0,0 +1,15 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "public_hdrs", + srcs = ["GrGLMakeWinInterface.h"], + visibility = [ + "//src/gpu/ganesh/gl/win:__pkg__", + ], +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h b/vendor/artifacts/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h new file mode 100644 index 000000000..fe359fdab --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/gl/win/GrGLMakeWinInterface.h @@ -0,0 +1,20 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrGLMakeWinInterface_DEFINED +#define GrGLMakeWinInterface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +struct GrGLInterface; + +namespace GrGLInterfaces { +SK_API sk_sp MakeWin(); +} + +#endif // GrGLMakeWinInterface_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/ganesh/mock/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/mock/BUILD.bazel new file mode 100644 index 000000000..9cd48e5b6 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/mock/BUILD.bazel @@ -0,0 +1,26 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "GrMockBackendSurface.h", + "GrMockTypes.h", +] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = [ + "//src/gpu/ganesh:__subpackages__", + "//src/gpu/ganesh/mock:__subpackages__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/mock/GrMockBackendSurface.h b/vendor/artifacts/skia/include/gpu/ganesh/mock/GrMockBackendSurface.h new file mode 100644 index 000000000..abbe00e88 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/mock/GrMockBackendSurface.h @@ -0,0 +1,59 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GrMockBackendSurface_DEFINED +#define GrMockBackendSurface_DEFINED + +#include "include/gpu/ganesh/GrTypes.h" +#include "include/gpu/ganesh/mock/GrMockTypes.h" +#include "include/private/base/SkAPI.h" + +#include + +class GrBackendFormat; +class GrBackendTexture; +class GrBackendRenderTarget; +enum class SkTextureCompressionType; +enum class GrColorType; + +namespace GrBackendFormats { + +SK_API GrBackendFormat MakeMockColorType(GrColorType colorType); +SK_API GrBackendFormat MakeMockCompressionType(SkTextureCompressionType compression); +SK_API GrBackendFormat MakeMockStencilFormat(); + +// Only one of these getters will return a non-unknown, non-false value +SK_API GrColorType AsMockColorType(const GrBackendFormat&); +SK_API SkTextureCompressionType AsMockCompressionType(const GrBackendFormat&); +SK_API bool IsMockStencilFormat(const GrBackendFormat&); + +} // namespace GrBackendFormats + +namespace GrBackendTextures { + +SK_API GrBackendTexture MakeMock(int width, + int height, + skgpu::Mipmapped, + const GrMockTextureInfo& mockInfo, + std::string_view label = {}); + +SK_API GrMockTextureInfo GetMockTextureInfo(const GrBackendTexture&); + +} // namespace GrBackendTextures + +namespace GrBackendRenderTargets { + +SK_API GrBackendRenderTarget MakeMock(int width, + int height, + int sampleCnt, + int stencilBits, + const GrMockRenderTargetInfo& mockInfo); + +SK_API GrMockRenderTargetInfo GetMockRenderTargetInfo(const GrBackendRenderTarget&); + +} // namespace GrBackendRenderTargets + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/mock/GrMockTypes.h b/vendor/artifacts/skia/include/gpu/ganesh/mock/GrMockTypes.h new file mode 100644 index 000000000..d3cff79c9 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/mock/GrMockTypes.h @@ -0,0 +1,166 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrMockOptions_DEFINED +#define GrMockOptions_DEFINED + +#include "include/core/SkTextureCompressionType.h" +#include "include/gpu/GpuTypes.h" +#include "include/private/base/SkAssert.h" +#include "include/private/gpu/ganesh/GrTypesPriv.h" + +#include + +class GrBackendFormat; + +struct GrMockTextureInfo { + GrMockTextureInfo() + : fColorType(GrColorType::kUnknown) + , fCompressionType(SkTextureCompressionType::kNone) + , fID(0) {} + + GrMockTextureInfo(GrColorType colorType, + SkTextureCompressionType compressionType, + int id, + skgpu::Protected isProtected = skgpu::Protected::kNo) + : fColorType(colorType) + , fCompressionType(compressionType) + , fID(id) + , fProtected(isProtected) { + SkASSERT(fID); + if (fCompressionType != SkTextureCompressionType::kNone) { + SkASSERT(colorType == GrColorType::kUnknown); + } + } + + bool operator==(const GrMockTextureInfo& that) const { + return fColorType == that.fColorType && + fCompressionType == that.fCompressionType && + fID == that.fID && + fProtected == that.fProtected; + } + + GrBackendFormat getBackendFormat() const; + + SkTextureCompressionType compressionType() const { return fCompressionType; } + + GrColorType colorType() const { + SkASSERT(fCompressionType == SkTextureCompressionType::kNone); + return fColorType; + } + + int id() const { return fID; } + + skgpu::Protected getProtected() const { return fProtected; } + bool isProtected() const { return fProtected == skgpu::Protected::kYes; } + +private: + GrColorType fColorType; + SkTextureCompressionType fCompressionType; + int fID; + skgpu::Protected fProtected = skgpu::Protected::kNo; +}; + +struct GrMockRenderTargetInfo { + GrMockRenderTargetInfo() + : fColorType(GrColorType::kUnknown) + , fID(0) {} + + GrMockRenderTargetInfo(GrColorType colorType, + int id, + skgpu::Protected isProtected = skgpu::Protected::kNo) + : fColorType(colorType) + , fID(id) + , fProtected(isProtected) { + SkASSERT(fID); + } + + bool operator==(const GrMockRenderTargetInfo& that) const { + return fColorType == that.fColorType && + fID == that.fID && + fProtected == that.fProtected; + } + + GrBackendFormat getBackendFormat() const; + + GrColorType colorType() const { return fColorType; } + + skgpu::Protected getProtected() const { return fProtected; } + bool isProtected() const { return fProtected == skgpu::Protected::kYes; } + +private: + GrColorType fColorType; + int fID; + skgpu::Protected fProtected = skgpu::Protected::kNo; +}; + +struct GrMockSurfaceInfo { + uint32_t fSampleCount = 1; + uint32_t fLevelCount = 0; + skgpu::Protected fProtected = skgpu::Protected::kNo; + + GrColorType fColorType = GrColorType::kUnknown; + SkTextureCompressionType fCompressionType = SkTextureCompressionType::kNone; +}; + +static constexpr int kSkTextureCompressionTypeCount = + static_cast(SkTextureCompressionType::kLast) + 1; + +/** + * A pointer to this type is used as the GrBackendContext when creating a Mock GrContext. It can be + * used to specify capability options for the mock context. If nullptr is used a default constructed + * GrMockOptions is used. + */ +struct GrMockOptions { + GrMockOptions() { + using Renderability = ConfigOptions::Renderability; + // By default RGBA_8888 and BGRA_8888 are textureable and renderable and + // A8 and RGB565 are texturable. + fConfigOptions[(int)GrColorType::kRGBA_8888].fRenderability = Renderability::kNonMSAA; + fConfigOptions[(int)GrColorType::kRGBA_8888].fTexturable = true; + fConfigOptions[(int)GrColorType::kAlpha_8].fTexturable = true; + fConfigOptions[(int)GrColorType::kBGR_565].fTexturable = true; + fConfigOptions[(int)GrColorType::kRGB_565].fTexturable = true; + + fConfigOptions[(int)GrColorType::kBGRA_8888] = fConfigOptions[(int)GrColorType::kRGBA_8888]; + + fCompressedOptions[(int)SkTextureCompressionType::kETC2_RGB8_UNORM].fTexturable = true; + fCompressedOptions[(int)SkTextureCompressionType::kBC1_RGB8_UNORM].fTexturable = true; + fCompressedOptions[(int)SkTextureCompressionType::kBC1_RGBA8_UNORM].fTexturable = true; + } + + struct ConfigOptions { + enum Renderability { kNo, kNonMSAA, kMSAA }; + Renderability fRenderability = kNo; + bool fTexturable = false; + }; + + // GrCaps options. + bool fMipmapSupport = false; + bool fDrawInstancedSupport = false; + bool fHalfFloatVertexAttributeSupport = false; + uint32_t fMapBufferFlags = 0; + int fMaxTextureSize = 2048; + int fMaxRenderTargetSize = 2048; + int fMaxWindowRectangles = 0; + int fMaxVertexAttributes = 16; + ConfigOptions fConfigOptions[kGrColorTypeCnt]; + ConfigOptions fCompressedOptions[kSkTextureCompressionTypeCount]; + + // GrShaderCaps options. + bool fIntegerSupport = false; + bool fFlatInterpolationSupport = false; + int fMaxVertexSamplers = 0; + int fMaxFragmentSamplers = 8; + bool fShaderDerivativeSupport = true; + bool fDualSourceBlendingSupport = false; + + // GrMockGpu options. + bool fFailTextureAllocations = false; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/mtl/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/mtl/BUILD.bazel new file mode 100644 index 000000000..bd5e5f64f --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/mtl/BUILD.bazel @@ -0,0 +1,30 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "GrMtlBackendContext.h", + "GrMtlBackendSemaphore.h", + "GrMtlBackendSurface.h", + "GrMtlDirectContext.h", + "GrMtlTypes.h", + "SkSurfaceMetal.h", +] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = [ + "//include/gpu/ganesh:__pkg__", + "//src/gpu/ganesh/mtl:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendContext.h b/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendContext.h new file mode 100644 index 000000000..242085745 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendContext.h @@ -0,0 +1,21 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrMtlBackendContext_DEFINED +#define GrMtlBackendContext_DEFINED + +#include "include/gpu/ganesh/mtl/GrMtlTypes.h" +#include "include/ports/SkCFObject.h" + +// The BackendContext contains all of the base Metal objects needed by the GrMtlGpu. The assumption +// is that the client will set these up and pass them to the GrMtlGpu constructor. +struct SK_API GrMtlBackendContext { + sk_cfp fDevice; + sk_cfp fQueue; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h b/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h new file mode 100644 index 000000000..05954a0f5 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendSemaphore.h @@ -0,0 +1,23 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * + */ +#ifndef GrMtlBackendSemaphore_DEFINED +#define GrMtlBackendSemaphore_DEFINED + +#include "include/gpu/ganesh/GrBackendSemaphore.h" +#include "include/gpu/ganesh/mtl/GrMtlTypes.h" +#include "include/private/base/SkAPI.h" + +namespace GrBackendSemaphores { +// It is the creator's responsibility to ref the MTLEvent passed in here, via __bridge_retained. +// The other end will wrap this BackendSemaphore and take the ref, via __bridge_transfer. +SK_API GrBackendSemaphore MakeMtl(GrMTLHandle event, uint64_t value); +SK_API GrMTLHandle GetMtlHandle(const GrBackendSemaphore&); +SK_API uint64_t GetMtlValue(const GrBackendSemaphore&); +} // namespace GrBackendSemaphores + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h b/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h new file mode 100644 index 000000000..d150bd73c --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlBackendSurface.h @@ -0,0 +1,44 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef GrMtlBackendSurface_DEFINED +#define GrMtlBackendSurface_DEFINED + +#include "include/gpu/ganesh/mtl/GrMtlTypes.h" +#include "include/private/base/SkAPI.h" + +#include + +class GrBackendFormat; +class GrBackendTexture; +class GrBackendRenderTarget; + +namespace GrBackendFormats { +SK_API GrBackendFormat MakeMtl(GrMTLPixelFormat format); + +SK_API GrMTLPixelFormat AsMtlFormat(const GrBackendFormat&); + +} // namespace GrBackendFormats + +namespace GrBackendTextures { +SK_API GrBackendTexture MakeMtl(int width, + int height, + skgpu::Mipmapped, + const GrMtlTextureInfo& mtlInfo, + std::string_view label = {}); + +SK_API bool GetMtlTextureInfo(const GrBackendTexture&, GrMtlTextureInfo*); + +} // namespace GrBackendTextures + +namespace GrBackendRenderTargets { +SK_API GrBackendRenderTarget MakeMtl(int width, int height, const GrMtlTextureInfo& mtlInfo); + +SK_API bool GetMtlTextureInfo(const GrBackendRenderTarget&, GrMtlTextureInfo*); + +} // namespace GrBackendRenderTargets + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h b/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h new file mode 100644 index 000000000..9b9f7cc15 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlDirectContext.h @@ -0,0 +1,30 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrMtlDirectContext_DEFINED +#define GrMtlDirectContext_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class GrDirectContext; +struct GrContextOptions; +struct GrMtlBackendContext; + +namespace GrDirectContexts { +/** + * Makes a GrDirectContext which uses Metal as the backend. The GrMtlBackendContext contains a + * MTLDevice and MTLCommandQueue which should be used by the backend. These objects must + * have their own ref which will be released when the GrMtlBackendContext is destroyed. + * Ganesh will take its own ref on the objects which will be released when the GrDirectContext + * is destroyed. + */ +SK_API sk_sp MakeMetal(const GrMtlBackendContext&, const GrContextOptions&); +SK_API sk_sp MakeMetal(const GrMtlBackendContext&); +} // namespace GrDirectContexts + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlTypes.h b/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlTypes.h new file mode 100644 index 000000000..90d6a48ec --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/mtl/GrMtlTypes.h @@ -0,0 +1,61 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrMtlTypes_DEFINED +#define GrMtlTypes_DEFINED + +#include "include/gpu/GpuTypes.h" +#include "include/ports/SkCFObject.h" + +/** + * Declares typedefs for Metal types used in Ganesh cpp code + */ +using GrMTLPixelFormat = unsigned int; +using GrMTLTextureUsage = unsigned int; +using GrMTLStorageMode = unsigned int; +using GrMTLHandle = const void*; + +/////////////////////////////////////////////////////////////////////////////// + +#ifdef __APPLE__ + +#include + +#if TARGET_OS_SIMULATOR +#define SK_API_AVAILABLE_CA_METAL_LAYER SK_API_AVAILABLE(macos(10.11), ios(13.0), tvos(13.0)) +#else // TARGET_OS_SIMULATOR +#define SK_API_AVAILABLE_CA_METAL_LAYER SK_API_AVAILABLE(macos(10.11), ios(8.0), tvos(9.0)) +#endif // TARGET_OS_SIMULATOR + +/** + * Types for interacting with Metal resources created externally to Skia. + * This is used by GrBackendObjects. + */ +struct GrMtlTextureInfo { +public: + GrMtlTextureInfo() {} + + sk_cfp fTexture; + + bool operator==(const GrMtlTextureInfo& that) const { return fTexture == that.fTexture; } +}; + +struct GrMtlSurfaceInfo { + uint32_t fSampleCount = 1; + uint32_t fLevelCount = 0; + skgpu::Protected fProtected = skgpu::Protected::kNo; + + // Since we aren't in an Obj-C header we can't directly use Mtl types here. Each of these can + // cast to their mapped Mtl types list below. + GrMTLPixelFormat fFormat = 0; // MTLPixelFormat fFormat = MTLPixelFormatInvalid; + GrMTLTextureUsage fUsage = 0; // MTLTextureUsage fUsage = MTLTextureUsageUnknown; + GrMTLStorageMode fStorageMode = 0; // MTLStorageMode fStorageMode = MTLStorageModeShared; +}; + +#endif + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h b/vendor/artifacts/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h new file mode 100644 index 000000000..21d705ed6 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/mtl/SkSurfaceMetal.h @@ -0,0 +1,73 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSurfaceMetal_DEFINED +#define SkSurfaceMetal_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSurface.h" +#include "include/gpu/ganesh/GrTypes.h" +#include "include/gpu/ganesh/SkSurfaceGanesh.h" +#include "include/gpu/ganesh/mtl/GrMtlTypes.h" + +namespace SkSurfaces { +/** Creates SkSurface from CAMetalLayer. + Returned SkSurface takes a reference on the CAMetalLayer. The ref on the layer will be + released when the SkSurface is destroyed. + + Only available when Metal API is enabled. + + Will grab the current drawable from the layer and use its texture as a backendRT to + create a renderable surface. + + @param context GPU context + @param layer GrMTLHandle (expected to be a CAMetalLayer*) + @param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing + @param colorSpace range of colors; may be nullptr + @param surfaceProps LCD striping orientation and setting for device independent + fonts; may be nullptr + @param drawable Pointer to drawable to be filled in when this surface is + instantiated; may not be nullptr + @return created SkSurface, or nullptr + */ +SK_API sk_sp WrapCAMetalLayer(GrRecordingContext* context, + GrMTLHandle layer, + GrSurfaceOrigin origin, + int sampleCnt, + SkColorType colorType, + sk_sp colorSpace, + const SkSurfaceProps* surfaceProps, + GrMTLHandle* drawable) SK_API_AVAILABLE_CA_METAL_LAYER; + +/** Creates SkSurface from MTKView. + Returned SkSurface takes a reference on the MTKView. The ref on the layer will be + released when the SkSurface is destroyed. + + Only available when Metal API is enabled. + + Will grab the current drawable from the layer and use its texture as a backendRT to + create a renderable surface. + + @param context GPU context + @param layer GrMTLHandle (expected to be a MTKView*) + @param sampleCnt samples per pixel, or 0 to disable full scene anti-aliasing + @param colorSpace range of colors; may be nullptr + @param surfaceProps LCD striping orientation and setting for device independent + fonts; may be nullptr + @return created SkSurface, or nullptr + */ +SK_API sk_sp WrapMTKView(GrRecordingContext* context, + GrMTLHandle mtkView, + GrSurfaceOrigin origin, + int sampleCnt, + SkColorType colorType, + sk_sp colorSpace, + const SkSurfaceProps* surfaceProps) + SK_API_AVAILABLE(macos(10.11), ios(9.0), tvos(9.0)); +} // namespace SkSurfaces + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/vk/BUILD.bazel b/vendor/artifacts/skia/include/gpu/ganesh/vk/BUILD.bazel new file mode 100644 index 000000000..37cf7fce8 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/vk/BUILD.bazel @@ -0,0 +1,29 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "GrBackendDrawableInfo.h", + "GrVkBackendSemaphore.h", + "GrVkBackendSurface.h", + "GrVkDirectContext.h", + "GrVkTypes.h", +] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = [ + "//include/gpu/ganesh:__pkg__", + "//src/gpu/ganesh/vk:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h b/vendor/artifacts/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h new file mode 100644 index 000000000..9c27a9bdb --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/vk/GrBackendDrawableInfo.h @@ -0,0 +1,44 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrBackendDrawableInfo_DEFINED +#define GrBackendDrawableInfo_DEFINED + +#include "include/gpu/ganesh/GrTypes.h" + +#include "include/gpu/ganesh/vk/GrVkTypes.h" + +// If necessary, this could be pulled into a generic interface, but at this point, we only expect +// it to be used by the Ganesh Vulkan backend. +class SK_API GrBackendDrawableInfo { +public: + // Creates an invalid backend drawable info. + GrBackendDrawableInfo() : fIsValid(false) {} + + explicit GrBackendDrawableInfo(const GrVkDrawableInfo& info) + : fIsValid(true), fBackend(GrBackendApi::kVulkan), fVkInfo(info) {} + + // Returns true if the backend texture has been initialized. + bool isValid() const { return fIsValid; } + + GrBackendApi backend() const { return fBackend; } + + bool getVkDrawableInfo(GrVkDrawableInfo* outInfo) const { + if (this->isValid() && GrBackendApi::kVulkan == fBackend) { + *outInfo = fVkInfo; + return true; + } + return false; + } + +private: + bool fIsValid; + GrBackendApi fBackend; + GrVkDrawableInfo fVkInfo; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h b/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h new file mode 100644 index 000000000..762f2552c --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkBackendSemaphore.h @@ -0,0 +1,20 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * + */ +#ifndef GrVkBackendSemaphore_DEFINED +#define GrVkBackendSemaphore_DEFINED + +#include "include/gpu/ganesh/GrBackendSemaphore.h" +#include "include/private/base/SkAPI.h" +#include "include/private/gpu/vk/SkiaVulkan.h" + +namespace GrBackendSemaphores { +SK_API GrBackendSemaphore MakeVk(VkSemaphore semaphore); +SK_API VkSemaphore GetVkSemaphore(const GrBackendSemaphore&); +} // namespace GrBackendSemaphores + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h b/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h new file mode 100644 index 000000000..59b9b9886 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkBackendSurface.h @@ -0,0 +1,71 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrVkBackendSurface_DEFINED +#define GrVkBackendSurface_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/gpu/vk/SkiaVulkan.h" + +#include + +class GrBackendFormat; +class GrBackendTexture; +class GrBackendRenderTarget; +struct GrVkImageInfo; + +namespace skgpu { +struct VulkanYcbcrConversionInfo; +} + +namespace GrBackendFormats { + +SK_API GrBackendFormat MakeVk(VkFormat format, bool willUseDRMFormatModifiers = false); +SK_API GrBackendFormat MakeVk(const skgpu::VulkanYcbcrConversionInfo& ycbcrInfo, + bool willUseDRMFormatModifiers = false); + +SK_API bool AsVkFormat(const GrBackendFormat&, VkFormat*); +SK_API const skgpu::VulkanYcbcrConversionInfo* GetVkYcbcrConversionInfo(const GrBackendFormat&); + +} // namespace GrBackendFormats + + +namespace GrBackendTextures { + +SK_API GrBackendTexture MakeVk(int width, + int height, + const GrVkImageInfo&, + std::string_view label = {}); + +// If the backend API is Vulkan, copies a snapshot of the GrVkImageInfo struct into the passed +// in pointer and returns true. This snapshot will set the fImageLayout to the current layout +// state. Otherwise returns false if the backend API is not Vulkan. +SK_API bool GetVkImageInfo(const GrBackendTexture&, GrVkImageInfo*); + +// Anytime the client changes the VkImageLayout of the VkImage captured by this +// GrBackendTexture, they must call this function to notify Skia of the changed layout. +SK_API void SetVkImageLayout(GrBackendTexture*, VkImageLayout); + +} // namespace GrBackendTextures + + +namespace GrBackendRenderTargets { + +SK_API GrBackendRenderTarget MakeVk(int width, int height, const GrVkImageInfo&); + +// If the backend API is Vulkan, copies a snapshot of the GrVkImageInfo struct into the passed +// in pointer and returns true. This snapshot will set the fImageLayout to the current layout +// state. Otherwise returns false if the backend API is not Vulkan. +SK_API bool GetVkImageInfo(const GrBackendRenderTarget&, GrVkImageInfo*); + +// Anytime the client changes the VkImageLayout of the VkImage captured by this +// GrBackendRenderTarget, they must call this function to notify Skia of the changed layout. +SK_API void SetVkImageLayout(GrBackendRenderTarget*, VkImageLayout); + +} // namespace GrBackendRenderTargets + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkDirectContext.h b/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkDirectContext.h new file mode 100644 index 000000000..6dabb8ae4 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkDirectContext.h @@ -0,0 +1,33 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrVkDirectContext_DEFINED +#define GrVkDirectContext_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class GrDirectContext; +struct GrContextOptions; +namespace skgpu { +struct VulkanBackendContext; +} + +namespace GrDirectContexts { +/** + * The Vulkan context (VkQueue, VkDevice, VkInstance) must be kept alive until the returned + * GrDirectContext is destroyed. This also means that any objects created with this + * GrDirectContext (e.g. SkSurfaces, SkImages, etc.) must also be released as they may hold + * refs on the GrDirectContext. Once all these objects and the GrDirectContext are released, + * then it is safe to delete the vulkan objects. + */ +SK_API sk_sp MakeVulkan(const skgpu::VulkanBackendContext&, + const GrContextOptions&); +SK_API sk_sp MakeVulkan(const skgpu::VulkanBackendContext&); +} + +#endif diff --git a/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkTypes.h b/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkTypes.h new file mode 100644 index 000000000..6057ec0ac --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/ganesh/vk/GrVkTypes.h @@ -0,0 +1,101 @@ + +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrVkTypes_DEFINED +#define GrVkTypes_DEFINED + +#include "include/gpu/GpuTypes.h" +#include "include/gpu/vk/VulkanTypes.h" + +/* + * When wrapping a GrBackendTexture or GrBackendRendenderTarget, the fCurrentQueueFamily should + * either be VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_EXTERNAL, or VK_QUEUE_FAMILY_FOREIGN_EXT. If + * fSharingMode is VK_SHARING_MODE_EXCLUSIVE then fCurrentQueueFamily can also be the graphics + * queue index passed into Skia. + */ +struct GrVkImageInfo { + VkImage fImage = VK_NULL_HANDLE; + skgpu::VulkanAlloc fAlloc; + VkImageTiling fImageTiling = VK_IMAGE_TILING_OPTIMAL; + VkImageLayout fImageLayout = VK_IMAGE_LAYOUT_UNDEFINED; + VkFormat fFormat = VK_FORMAT_UNDEFINED; + VkImageUsageFlags fImageUsageFlags = 0; + uint32_t fSampleCount = 1; + uint32_t fLevelCount = 0; + uint32_t fCurrentQueueFamily = VK_QUEUE_FAMILY_IGNORED; + skgpu::Protected fProtected = skgpu::Protected::kNo; + skgpu::VulkanYcbcrConversionInfo fYcbcrConversionInfo; + VkSharingMode fSharingMode = VK_SHARING_MODE_EXCLUSIVE; +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + bool fPartOfSwapchainOrAndroidWindow = false; +#endif + + bool operator==(const GrVkImageInfo& that) const { + bool equal = fImage == that.fImage && fAlloc == that.fAlloc && + fImageTiling == that.fImageTiling && + fImageLayout == that.fImageLayout && + fFormat == that.fFormat && + fImageUsageFlags == that.fImageUsageFlags && + fSampleCount == that.fSampleCount && + fLevelCount == that.fLevelCount && + fCurrentQueueFamily == that.fCurrentQueueFamily && + fProtected == that.fProtected && + fYcbcrConversionInfo == that.fYcbcrConversionInfo && + fSharingMode == that.fSharingMode; +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + equal = equal && (fPartOfSwapchainOrAndroidWindow == that.fPartOfSwapchainOrAndroidWindow); +#endif + return equal; + } +}; + +/** + * This object is wrapped in a GrBackendDrawableInfo and passed in as an argument to + * drawBackendGpu() calls on an SkDrawable. The drawable will use this info to inject direct + * Vulkan calls into our stream of GPU draws. + * + * The SkDrawable is given a secondary VkCommandBuffer in which to record draws. The GPU backend + * will then execute that command buffer within a render pass it is using for its own draws. The + * drawable is also given the attachment of the color index, a compatible VkRenderPass, and the + * VkFormat of the color attachment so that it can make VkPipeline objects for the draws. The + * SkDrawable must not alter the state of the VkRenderpass or sub pass. + * + * Additionally, the SkDrawable may fill in the passed in fDrawBounds with the bounds of the draws + * that it submits to the command buffer. This will be used by the GPU backend for setting the + * bounds in vkCmdBeginRenderPass. If fDrawBounds is not updated, we will assume that the entire + * attachment may have been written to. + * + * The SkDrawable is always allowed to create its own command buffers and submit them to the queue + * to render offscreen textures which will be sampled in draws added to the passed in + * VkCommandBuffer. If this is done the SkDrawable is in charge of adding the required memory + * barriers to the queue for the sampled images since the Skia backend will not do this. + */ +struct GrVkDrawableInfo { + VkCommandBuffer fSecondaryCommandBuffer; + uint32_t fColorAttachmentIndex; + VkRenderPass fCompatibleRenderPass; + VkFormat fFormat; + VkRect2D* fDrawBounds; +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + bool fFromSwapchainOrAndroidWindow; +#endif +}; + +struct GrVkSurfaceInfo { + uint32_t fSampleCount = 1; + uint32_t fLevelCount = 0; + skgpu::Protected fProtected = skgpu::Protected::kNo; + + VkImageTiling fImageTiling = VK_IMAGE_TILING_OPTIMAL; + VkFormat fFormat = VK_FORMAT_UNDEFINED; + VkImageUsageFlags fImageUsageFlags = 0; + skgpu::VulkanYcbcrConversionInfo fYcbcrConversionInfo; + VkSharingMode fSharingMode = VK_SHARING_MODE_EXCLUSIVE; +}; + +#endif diff --git a/vendor/artifacts/skia/include/gpu/graphite/BUILD.bazel b/vendor/artifacts/skia/include/gpu/graphite/BUILD.bazel new file mode 100644 index 000000000..4e041b946 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/BUILD.bazel @@ -0,0 +1,35 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "BackendSemaphore.h", + "BackendTexture.h", + "Context.h", + "ContextOptions.h", + "GraphiteTypes.h", + "Image.h", + "ImageProvider.h", + "PersistentPipelineStorage.h", + "PrecompileContext.h", + "Recorder.h", + "Recording.h", + "Surface.h", + "TextureInfo.h", + "YUVABackendTextures.h", +] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = ["//src/gpu/graphite:__subpackages__"], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/graphite/BackendSemaphore.h b/vendor/artifacts/skia/include/gpu/graphite/BackendSemaphore.h new file mode 100644 index 000000000..a9edfd4b4 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/BackendSemaphore.h @@ -0,0 +1,60 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_BackendSemaphore_DEFINED +#define skgpu_graphite_BackendSemaphore_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAnySubclass.h" + +#include + +namespace skgpu { enum class BackendApi : unsigned int; } + +namespace skgpu::graphite { + +class BackendSemaphoreData; + +class SK_API BackendSemaphore { +public: + BackendSemaphore(); + + BackendSemaphore(const BackendSemaphore&); + + ~BackendSemaphore(); + + BackendSemaphore& operator=(const BackendSemaphore&); + + bool isValid() const { return fIsValid; } + BackendApi backend() const { return fBackend; } + +private: + friend class BackendSemaphoreData; + friend class BackendSemaphorePriv; + + // Size determined by looking at the BackendSemaphoreData subclasses, then + // guessing-and-checking. Compiler will complain if this is too small - in that case, just + // increase the number. + inline constexpr static size_t kMaxSubclassSize = 24; + using AnyBackendSemaphoreData = SkAnySubclass; + + template + BackendSemaphore(BackendApi backend, const SomeBackendSemaphoreData& data) + : fBackend(backend), fIsValid(true) { + fSemaphoreData.emplace(data); + } + + BackendApi fBackend; + AnyBackendSemaphoreData fSemaphoreData; + + bool fIsValid = false; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_BackendSemaphore_DEFINED + diff --git a/vendor/artifacts/skia/include/gpu/graphite/BackendTexture.h b/vendor/artifacts/skia/include/gpu/graphite/BackendTexture.h new file mode 100644 index 000000000..8779c27e0 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/BackendTexture.h @@ -0,0 +1,65 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_BackendTexture_DEFINED +#define skgpu_graphite_BackendTexture_DEFINED + +#include "include/core/SkSize.h" +#include "include/gpu/graphite/TextureInfo.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAnySubclass.h" + +#include + +namespace skgpu { enum class BackendApi : unsigned int; } + +namespace skgpu::graphite { + +class BackendTextureData; + +class SK_API BackendTexture { +public: + BackendTexture(); + BackendTexture(const BackendTexture&); + + ~BackendTexture(); + + BackendTexture& operator=(const BackendTexture&); + + bool operator==(const BackendTexture&) const; + bool operator!=(const BackendTexture& that) const { return !(*this == that); } + + bool isValid() const { return fInfo.isValid(); } + BackendApi backend() const { return fInfo.backend(); } + + SkISize dimensions() const { return fDimensions; } + + const TextureInfo& info() const { return fInfo; } + +private: + friend class BackendTextureData; + friend class BackendTexturePriv; + + // Size determined by looking at the BackendTextureData subclasses, then guessing-and-checking. + // Compiler will complain if this is too small - in that case, just increase the number. + inline constexpr static size_t kMaxSubclassSize = 72; + using AnyBackendTextureData = SkAnySubclass; + + template + BackendTexture(SkISize dimensions, TextureInfo info, const SomeBackendTextureData& textureData) + : fDimensions(dimensions), fInfo(info) { + fTextureData.emplace(textureData); + } + + SkISize fDimensions; + TextureInfo fInfo; + AnyBackendTextureData fTextureData; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_BackendTexture_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/Context.h b/vendor/artifacts/skia/include/gpu/graphite/Context.h new file mode 100644 index 000000000..30e52bc94 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/Context.h @@ -0,0 +1,440 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_Context_DEFINED +#define skgpu_graphite_Context_DEFINED + +#include "include/core/SkImage.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" +#include "include/gpu/graphite/GraphiteTypes.h" +#include "include/gpu/graphite/Recorder.h" // IWYU pragma: keep +#include "include/private/base/SingleOwner.h" +#include "include/private/base/SkThreadAnnotations.h" + +#if defined(GPU_TEST_UTILS) +#include "include/private/base/SkMutex.h" +#endif + +#include +#include +#include +#include +#include +#include + +class SkColorInfo; +class SkSurface; +class SkCapture; +enum SkYUVColorSpace : int; +class SkColorSpace; +class SkTraceMemoryDump; +struct SkIRect; +struct SkImageInfo; + +namespace skcpu { +class ContextImpl; +class Recorder; +} // namespace skcpu + +namespace skgpu { +enum class BackendApi : unsigned int; +enum class GpuStatsFlags : uint32_t; +} + +namespace skgpu::graphite { + +class BackendTexture; +class Buffer; +class ClientMappedBufferManager; +class ContextPriv; +struct ContextOptions; +class PersistentPipelineStorage; +class PrecompileContext; +class QueueManager; +class ResourceProvider; +class SharedContext; +class TextureProxy; +class TextureProxyView; + +class SK_API Context final { +public: + Context(const Context&) = delete; + Context(Context&&) = delete; + Context& operator=(const Context&) = delete; + Context& operator=(Context&&) = delete; + + ~Context(); + + BackendApi backend() const; + + std::unique_ptr makeRecorder(const RecorderOptions& = {}); + std::unique_ptr makeCPURecorder(); + + /** Creates a helper object that can be moved to a different thread and used + * for precompilation. + */ + std::unique_ptr makePrecompileContext(); + + InsertStatus insertRecording(const InsertRecordingInfo&); + bool submit(SubmitInfo submitInfo = {}); + + /** Returns true if there is work that was submitted to the GPU that has not finished. */ + bool hasUnfinishedGpuWork() const; + + /** Returns true if there is pending GPU work that needs to be submitted. */ + bool hasPendingGPUWork() const; + + /** Makes image pixel data available to caller, possibly asynchronously. It can also rescale + the image pixels. + + Data is read from the source sub-rectangle, is optionally converted to a linear gamma, is + rescaled to the size indicated by 'dstImageInfo', is then converted to the color space, + color type, and alpha type of 'dstImageInfo'. A 'srcRect' that is not contained by the + bounds of the image causes failure. + + When the pixel data is ready the caller's ReadPixelsCallback is called with a + AsyncReadResult containing pixel data in the requested color type, alpha type, and color + space. The AsyncReadResult will have count() == 1. Upon failure the callback is called with + nullptr for AsyncReadResult. The callback can be triggered, for example, with a call to + Context::submit(SyncToCpu::kYes). + + The data is valid for the lifetime of AsyncReadResult with the exception that the data is + immediately invalidated if the Graphite context is abandoned or destroyed. + + @param src Graphite-backed image or surface to read the data from. + @param dstImageInfo info of the requested pixels + @param srcRect subrectangle of image to read + @param rescaleGamma controls whether rescaling is done in the image's gamma or whether + the source data is transformed to a linear gamma before rescaling. + @param rescaleMode controls the technique (and cost) of the rescaling + @param callback function to call with result of the read + @param context passed to callback + */ + void asyncRescaleAndReadPixels(const SkImage* src, + const SkImageInfo& dstImageInfo, + const SkIRect& srcRect, + SkImage::RescaleGamma rescaleGamma, + SkImage::RescaleMode rescaleMode, + SkImage::ReadPixelsCallback callback, + SkImage::ReadPixelsContext context); + void asyncRescaleAndReadPixels(const SkSurface* src, + const SkImageInfo& dstImageInfo, + const SkIRect& srcRect, + SkImage::RescaleGamma rescaleGamma, + SkImage::RescaleMode rescaleMode, + SkImage::ReadPixelsCallback callback, + SkImage::ReadPixelsContext context); + + /** + Similar to asyncRescaleAndReadPixels but performs an additional conversion to YUV. The + RGB->YUV conversion is controlled by 'yuvColorSpace'. The YUV data is returned as three + planes ordered y, u, v. The u and v planes are half the width and height of the resized + rectangle. The y, u, and v values are single bytes. Currently this fails if 'dstSize' + width and height are not even. A 'srcRect' that is not contained by the bounds of the + surface causes failure. + + When the pixel data is ready the caller's ReadPixelsCallback is called with a + AsyncReadResult containing the planar data. The AsyncReadResult will have count() == 3. + Upon failure the callback is called with nullptr for AsyncReadResult. The callback can + be triggered, for example, with a call to Context::submit(SyncToCpu::kYes). + + The data is valid for the lifetime of AsyncReadResult with the exception that the data + is immediately invalidated if the context is abandoned or destroyed. + + @param src Graphite-backed image or surface to read the data from. + @param yuvColorSpace The transformation from RGB to YUV. Applied to the resized image + after it is converted to dstColorSpace. + @param dstColorSpace The color space to convert the resized image to, after rescaling. + @param srcRect The portion of the surface to rescale and convert to YUV planes. + @param dstSize The size to rescale srcRect to + @param rescaleGamma controls whether rescaling is done in the surface's gamma or whether + the source data is transformed to a linear gamma before rescaling. + @param rescaleMode controls the sampling technique of the rescaling + @param callback function to call with the planar read result + @param context passed to callback + */ + void asyncRescaleAndReadPixelsYUV420(const SkImage* src, + SkYUVColorSpace yuvColorSpace, + sk_sp dstColorSpace, + const SkIRect& srcRect, + const SkISize& dstSize, + SkImage::RescaleGamma rescaleGamma, + SkImage::RescaleMode rescaleMode, + SkImage::ReadPixelsCallback callback, + SkImage::ReadPixelsContext context); + void asyncRescaleAndReadPixelsYUV420(const SkSurface* src, + SkYUVColorSpace yuvColorSpace, + sk_sp dstColorSpace, + const SkIRect& srcRect, + const SkISize& dstSize, + SkImage::RescaleGamma rescaleGamma, + SkImage::RescaleMode rescaleMode, + SkImage::ReadPixelsCallback callback, + SkImage::ReadPixelsContext context); + + /** + * Identical to asyncRescaleAndReadPixelsYUV420 but a fourth plane is returned in the + * AsyncReadResult passed to 'callback'. The fourth plane contains the alpha chanel at the + * same full resolution as the Y plane. + */ + void asyncRescaleAndReadPixelsYUVA420(const SkImage* src, + SkYUVColorSpace yuvColorSpace, + sk_sp dstColorSpace, + const SkIRect& srcRect, + const SkISize& dstSize, + SkImage::RescaleGamma rescaleGamma, + SkImage::RescaleMode rescaleMode, + SkImage::ReadPixelsCallback callback, + SkImage::ReadPixelsContext context); + void asyncRescaleAndReadPixelsYUVA420(const SkSurface* src, + SkYUVColorSpace yuvColorSpace, + sk_sp dstColorSpace, + const SkIRect& srcRect, + const SkISize& dstSize, + SkImage::RescaleGamma rescaleGamma, + SkImage::RescaleMode rescaleMode, + SkImage::ReadPixelsCallback callback, + SkImage::ReadPixelsContext context); + + /** + * Checks whether any asynchronous work is complete and if so calls related callbacks. + */ + void checkAsyncWorkCompletion(); + + /** + * Called to delete the passed in BackendTexture. This should only be called if the + * BackendTexture was created by calling Recorder::createBackendTexture on a Recorder created + * from this Context. If the BackendTexture is not valid or does not match the BackendApi of the + * Context then nothing happens. + * + * Otherwise this will delete/release the backend object that is wrapped in the BackendTexture. + * The BackendTexture will be reset to an invalid state and should not be used again. + */ + void deleteBackendTexture(const BackendTexture&); + + /** + * Frees GPU resources created and held by the Context. Can be called to reduce GPU memory + * pressure. Any resources that are still in use (e.g. being used by work submitted to the GPU) + * will not be deleted by this call. If the caller wants to make sure all resources are freed, + * then they should first make sure to submit and wait on any outstanding work. + */ + void freeGpuResources(); + + /** + * Purge GPU resources on the Context that haven't been used in the past 'msNotUsed' + * milliseconds or are otherwise marked for deletion, regardless of whether the context is under + * budget. Optionally provide a `microsMaxPurgingDur` after which Skia should stop purging + * resources. + */ + void performDeferredCleanup( + std::chrono::milliseconds msNotUsed, + std::optional microsMaxPurgingDur = std::nullopt); + + /** + * Returns the number of bytes of the Context's gpu memory cache budget that are currently in + * use. + */ + size_t currentBudgetedBytes() const; + + /** + * Returns the number of bytes of the Context's resource cache that are currently purgeable. + */ + size_t currentPurgeableBytes() const; + + /** + * Returns the size of Context's gpu memory cache budget in bytes. + */ + size_t maxBudgetedBytes() const; + + /** + * Sets the size of Context's gpu memory cache budget in bytes. If the new budget is lower than + * the current budget, the cache will try to free resources to get under the new budget. + */ + void setMaxBudgetedBytes(size_t bytes); + + /** + * Enumerates all cached GPU resources owned by the Context and dumps their memory to + * traceMemoryDump. + */ + void dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const; + + /** + * Returns true if the backend-specific context has gotten into an unrecoverarble, lost state + * (e.g. if we've gotten a VK_ERROR_DEVICE_LOST in the Vulkan backend). + */ + bool isDeviceLost() const; + + /** + * Returns the maximum texture dimension supported by the underlying backend. + */ + int maxTextureSize() const; + + /* + * Does this context support protected content? + */ + bool supportsProtectedContent() const; + + /* + * Gets the types of GPU stats supported by this Context. + */ + GpuStatsFlags supportedGpuStats() const; + + /** + * If supported by the backend, stores the current pipeline cache data into the + * PersistentPipelineStorage-derived object passed into Graphite via + * ContextOptions::fPersistentPipelineStorage. The amount stored is limited to 'maxSize'. + * + * Skia attempts to only call store() on the PersistentPipelineStorage object when the data + * is likely to be different from what was last sync'ed. + */ + void syncPipelineData(size_t maxSize = SIZE_MAX); + + /* + * TODO (b/412351769): Do not use startCapture() or endCapture() as the feature is still under + * development. + * + * Starts the SkCapture. Must have set ContextOptions::fEnableCapture to start. + */ + void startCapture(); + + /* + * Ends the SkCapture and returns the collected draws and surface creation. + */ + sk_sp endCapture(); + + // Provides access to functions that aren't part of the public API. + ContextPriv priv(); + const ContextPriv priv() const; // NOLINT(readability-const-return-type) + + class ContextID { + public: + static Context::ContextID Next(); + + ContextID() : fID(SK_InvalidUniqueID) {} + + bool operator==(const ContextID& that) const { return fID == that.fID; } + bool operator!=(const ContextID& that) const { return !(*this == that); } + + void makeInvalid() { fID = SK_InvalidUniqueID; } + bool isValid() const { return fID != SK_InvalidUniqueID; } + + private: + constexpr ContextID(uint32_t id) : fID(id) {} + uint32_t fID; + }; + + ContextID contextID() const { return fContextID; } + +protected: + Context(sk_sp, std::unique_ptr, const ContextOptions&); + +private: + friend class ContextPriv; + friend class ContextCtorAccessor; + + struct PixelTransferResult { + PixelTransferResult(); + PixelTransferResult(const PixelTransferResult&); + PixelTransferResult(PixelTransferResult&&); + PixelTransferResult& operator=(const PixelTransferResult&); + ~PixelTransferResult(); + + using ConversionFn = void(void* dst, const void* mappedBuffer); + // If null then the transfer could not be performed. Otherwise this buffer will contain + // the pixel data when the transfer is complete. + sk_sp fTransferBuffer; + // Size of the read. + SkISize fSize; + // RowBytes for transfer buffer data + size_t fRowBytes; + // If this is null then the transfer buffer will contain the data in the requested + // color type. Otherwise, when the transfer is done this must be called to convert + // from the transfer buffer's color type to the requested color type. + std::function fPixelConverter; + }; + + SingleOwner* singleOwner() const { return &fSingleOwner; } + + // Must be called in Make() to handle one-time GPU setup operations that can possibly fail and + // require Context::Make() to return a nullptr. + bool finishInitialization(); + + void checkForFinishedWork(SyncToCpu); + + std::unique_ptr makeInternalRecorder() const; + + template struct AsyncParams; + + template + void asyncRescaleAndReadImpl(ReadFn Context::* asyncRead, + SkImage::RescaleGamma rescaleGamma, + SkImage::RescaleMode rescaleMode, + const AsyncParams&, + ExtraArgs...); + + // Recorder is optional and will be used if drawing operations are required. If no Recorder is + // provided but drawing operations are needed, a new Recorder will be created automatically. + void asyncReadPixels(std::unique_ptr, const AsyncParams&); + void asyncReadPixelsYUV420(std::unique_ptr, + const AsyncParams&, + SkYUVColorSpace); + + // Like asyncReadPixels() except it performs no fallbacks, and requires that the texture be + // readable. However, the texture does not need to be sampleable. + void asyncReadTexture(std::unique_ptr, + const AsyncParams&, + const SkColorInfo& srcColorInfo); + + // Inserts a texture to buffer transfer task, used by asyncReadPixels methods. If the + // Recorder is non-null, tasks will be added to the Recorder's list; otherwise the transfer + // tasks will be added to the queue manager directly. + PixelTransferResult transferPixels(Recorder*, + const TextureProxyView& srcView, + const SkColorInfo& srcColorInfo, + const SkColorInfo& dstColorInfo, + const SkIRect& srcRect); + + // If the recorder is non-null, it will be snapped and inserted with the assumption that the + // copy tasks (and possibly preparatory draw tasks) have already been added to the Recording. + void finalizeAsyncReadPixels(std::unique_ptr, + SkSpan, + SkImage::ReadPixelsCallback callback, + SkImage::ReadPixelsContext callbackContext); + + sk_sp fSharedContext; + std::unique_ptr fResourceProvider; + std::unique_ptr fMappedBufferManager; + std::unique_ptr fQueueManager; + std::unique_ptr fCPUContext; + + PersistentPipelineStorage* fPersistentPipelineStorage; + + // In debug builds we guard against improper thread handling. This guard is passed to the + // ResourceCache for the Context. + mutable SingleOwner fSingleOwner; + +#if defined(GPU_TEST_UTILS) + void deregisterRecorder(const Recorder*) SK_EXCLUDES(fTestingLock); + + // In test builds a Recorder may track the Context that was used to create it. + bool fStoreContextRefInRecorder = false; + // If this tracking is on, to allow the client to safely delete this Context or its Recorders + // in any order we must also track the Recorders created here. + SkMutex fTestingLock; + std::vector fTrackedRecorders SK_GUARDED_BY(fTestingLock); +#endif + + // Needed for MessageBox handling + const ContextID fContextID; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_Context_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/ContextOptions.h b/vendor/artifacts/skia/include/gpu/graphite/ContextOptions.h new file mode 100644 index 000000000..aa23dd8a7 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/ContextOptions.h @@ -0,0 +1,233 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_ContextOptions_DEFINED +#define skgpu_graphite_ContextOptions_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/core/SkSpan.h" +#include "include/gpu/graphite/GraphiteTypes.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkMath.h" + +#include +#include + +class SkData; +class SkExecutor; +class SkRuntimeEffect; +namespace skgpu { class ShaderErrorHandler; } + +namespace skgpu::graphite { + +struct ContextOptionsPriv; +class PersistentPipelineStorage; + +struct SK_API ContextOptions { + ContextOptions() {} + + /** + * Disables correctness workarounds that are enabled for particular GPUs, OSes, or drivers. + * This does not affect code path choices that are made for perfomance reasons nor does it + * override other ContextOption settings. + */ + bool fDisableDriverCorrectnessWorkarounds = false; + + /** + * If present, use this object to report shader compilation failures. If not, report failures + * via SkDebugf and assert. + */ + skgpu::ShaderErrorHandler* fShaderErrorHandler = nullptr; + + /** + * Specifies the number of samples Graphite should use when performing internal draws with MSAA + * (hardware capabilities permitting). This represents the maximum that will be used; if a + * a specific format supports only lower values, those may be used instead. + * + * If <= 1, Graphite will disable internal code paths that use multisampling. + */ + SampleCount fInternalMultisampleCount = SampleCount::k4; + + /** + * If set, this specifies the max width/height of MSAA textures that Graphite should use for + * internal draws. Graphite might have to break the drawing region into multiple tiles to + * satisfy the size constraint. + * Note: this option will be ignored if the backend doesn't support it, or if a more optimal HW + * feature is available. + */ + std::optional fInternalMSAATileSize = std::nullopt; + + /** + * If set, paths that are smaller than this size (in device space) will avoid MSAA techniques, + * even if MSAA is otherwise enabled via `fInternalMultisampleCount`. This should be smaller + * than `fGlyphsAsPathsFontSize` or large glyphs will not correctly avoid higher memory + * overhead. + */ + float fMinimumPathSizeForMSAA = 0; + + /** + * The maximum size of cache textures used for Skia's Glyph cache. + */ + size_t fGlyphCacheTextureMaximumBytes = 2048 * 1024 * 4; + + /** + * Below this threshold size in device space distance field fonts won't be used. Distance field + * fonts don't support hinting which is more important at smaller sizes. + */ + float fMinDistanceFieldFontSize = 18; + + /** + * Above this threshold size in device space glyphs are drawn as individual paths. + */ +#if defined(SK_BUILD_FOR_ANDROID) + float fGlyphsAsPathsFontSize = 384; +#elif defined(SK_BUILD_FOR_MAC) + float fGlyphsAsPathsFontSize = 256; +#else + float fGlyphsAsPathsFontSize = 324; +#endif + + /** + * The maximum size of textures used for Skia's PathAtlas caches. + */ + int fMaxPathAtlasTextureSize = 8192; // oversized, PathAtlas will likely be smaller + + /** + * Can the glyph and path atlases use multiple textures. If allowed, each texture's size is + * bound by fGlyphCacheTextureMaximumBytes and fMaxPathAtlasTextureSize, respectively. + */ + bool fAllowMultipleAtlasTextures = true; + bool fSupportBilerpFromGlyphAtlas = false; + + /** + * For the moment, if Recordings from the same Recorder are replayed in the order they are + * recorded, then Graphite can make certain assumptions that allow for better performance. + * Otherwise we have to flush some caches at the start of each Recording to ensure that they can + * be played back properly. + * + * This is the default ordering requirement for a Recorder. It can be overridden by + * setting the same field on the RecorderOptions passed to makeRecorder. + * + * Regardless of this value or a per-Recorder's setting, Recordings from separate Recorders can + * always be inserted in any order but it is the application's responsible to ensure that any + * implicit dependencies between the Recorders are respected (e.g. rendering to an SkSurface + * in one Recorder and sampling from that SkSurface's SkImage view on another Recorder). + */ + bool fRequireOrderedRecordings = false; + + static constexpr size_t kDefaultContextBudget = 256 * (1 << 20); + /** + * What is the budget for GPU resources allocated and held by the Context. + */ + size_t fGpuBudgetInBytes = kDefaultContextBudget; + + /** + * Whether labels will be set on backend resources. + */ +#if defined(SK_DEBUG) + bool fSetBackendLabels = true; +#else + bool fSetBackendLabels = false; +#endif + + /** + * Client-provided context that is passed to the client-provided PipelineCachingCallback + * and the (deprecated) PipelineCallback. + */ + using PipelineCallbackContext = void*; + + PipelineCallbackContext fPipelineCallbackContext = nullptr; + + enum class PipelineCacheOp { + kAddingPipeline, + kPipelineFound, + }; + + using PipelineCachingCallback = void (*)(PipelineCallbackContext context, + PipelineCacheOp op, + const std::string& label, + uint32_t uniqueKeyHash, + bool fromPrecompile, + sk_sp pipelineData); + + /** + * This member variable allows a client to register a callback that will be invoked + * whenever Graphite either adds a Pipeline to its cache (kAddingPipeline op) or finds an + * existing Pipeline in its cache (kPipelineFound op). Together this allows clients + * to determine the frequency of a given Pipeline's use and which precompiled Pipelines + * are unused. The callback is also passed: + * a human-readable label that describes the Pipeline + * a 32-bit hash code that can be used rather than rehashing the provided data + * a Boolean indicating if the Pipeline had been generated via Precompilation + * Additionally, for kAddingPipeline ops: + * an SkData version of the Pipeline that a client can take ownership of and serialize. + * Not all Pipelines can be serialized, however, and nullptr will be passed in such cases. + * + * When provided, the SkData contains all the information Graphite requires to recreate + * the Pipeline at a later date, but it is versioned so recreation can fail if it's + * incompatible with a newer version of Skia. + */ + PipelineCachingCallback fPipelineCachingCallback = nullptr; + + /** + * Deprecated version of the Pipeline callback. This callback is only invoked for + * PipelineCacheOp::kAddingPipeline ops and when the key is serializable. It is ignored + * if fPipelineCachingCallback is set. + */ + using PipelineCallback = void (*)(PipelineCallbackContext context, sk_sp pipelineData); + + PipelineCallback fPipelineCallback = nullptr; + + /** + * The runtime effects provided here will be registered as user-defined *known* runtime + * effects and will be given a stable key. Such runtime effects can then be used in + * serialized pipeline keys (c.f. PrecompileContext::precompile). + * + * Graphite will take a ref on the provided runtime effects and they will persist for as long + * as the Context exists. Rather than recreating new SkRuntimeEffects using the same SkSL, + * clients should use the existing SkRuntimeEffects provided here. + * + * Warning: Registering runtime effects here does obligate users to clear out their caches + * of serialized pipeline keys if the provided runtime effects ever change in a meaningful way. + * This includes adding, removing or reordering the effects provided here. + */ + SkSpan> fUserDefinedKnownRuntimeEffects; + + /** + * Executor to handle threaded work within Graphite. If this is nullptr, then all work will be + * done serially on the main thread. To have worker threads assist with various tasks, set this + * to a valid SkExecutor instance. Currently, used for Pipeline compilation, but may be used + * for other tasks. It is up to the client to ensure the SkExecutor remains valid throughout + * the lifetime of the Context. + */ + SkExecutor* fExecutor = nullptr; + + /** + * Allows Graphite to store Pipeline data across Context lifetimes. It is up to the + * client to ensure the PersistentPipelineStorage object remains valid throughout the lifetime + * of the Context(s). + */ + PersistentPipelineStorage* fPersistentPipelineStorage = nullptr; + + /** + * An experimental flag in development. Behavior and performance is subject to change. + * + * Enables the use of startCapture and endCapture functions. Calling these APIs will capture all + * draw calls and surface creation from Recorders spawned from the Context. + */ + bool fEnableCapture = false; + + /** + * Private options that are only meant for testing within Skia's tools. + */ + ContextOptionsPriv* fOptionsPriv = nullptr; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_ContextOptions diff --git a/vendor/artifacts/skia/include/gpu/graphite/GraphiteTypes.h b/vendor/artifacts/skia/include/gpu/graphite/GraphiteTypes.h new file mode 100644 index 000000000..234a82573 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/GraphiteTypes.h @@ -0,0 +1,315 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_GraphiteTypes_DEFINED +#define skgpu_graphite_GraphiteTypes_DEFINED + +#include "include/core/SkPoint.h" +#include "include/core/SkRect.h" +#include "include/core/SkTypes.h" +#include "include/gpu/GpuTypes.h" + +#include +#include + +class SkSurface; + +namespace skgpu { +class MutableTextureState; +} + +namespace skgpu::graphite { + +class BackendSemaphore; +class Recording; +class Task; + +using GpuFinishedContext = void*; +using GpuFinishedProc = void (*)(GpuFinishedContext finishedContext, CallbackResult); + +using GpuFinishedWithStatsProc = void (*)(GpuFinishedContext finishedContext, + CallbackResult, + const GpuStats&); + +// NOTE: This can be converted to just an `enum class InsertStatus {}` once clients are migrated +// off of assuming `Context::insertRecording()` returns a boolean. +class InsertStatus { +public: + // Do not refer to V directly; use these constants as if InsertStatus were a class enum, e.g. + // InsertStatus::kSuccess. + enum V { + // Everything successfully added to underlying CommandBuffer + kSuccess, + // Recording or InsertRecordingInfo invalid, no CB changes + kInvalidRecording, + // Promise image instantiation failed, no CB changes + kPromiseImageInstantiationFailed, + // Internal failure, CB partially modified, state unrecoverable or unknown (e.g. dependent + // texture uploads for future Recordings may or may not get executed) + kAddCommandsFailed, + // Internal failure, shader pipeline compilation failed (driver issue, or disk corruption), + // state unrecoverable. + kAsyncShaderCompilesFailed, + // The inserted Recording is out of order from what the Context expects (when + // `[Context|Recorder]Options::fRequireOrderedRecordings` is true), which can either + // represent a client synchronization error or an internal failure when a prior dependent + // Recording failed for some reason, no CB changes but state likely unrecoverable. + kOutOfOrderRecording, + }; + + InsertStatus() : fValue(kSuccess) {} + /*implicit*/ InsertStatus(V v) : fValue(v) {} + InsertStatus(V v, std::string message) : fValue(v), fMessage(std::move(message)) {} + + operator InsertStatus::V() const { + return fValue; + } + + const std::string& message() const { return fMessage; } + + // Assist migration from old bool return value of insertRecording; kSuccess is true, + // all other error statuses are false. + // NOTE: This is intentionally not explicit so that InsertStatus can be assigned correctly to + // a bool or returned as a bool, since these are not boolean contexts that automatically apply + // explicit bool operators (e.g. inside an if condition). + operator bool() const { + return fValue == kSuccess; + } + +private: + V fValue; + std::string fMessage; +}; + +/** + * The fFinishedProc is called when the Recording has been submitted and finished on the GPU, or + * when there is a failure that caused it not to be submitted. The callback will always be called + * and the caller can use the callback to know it is safe to free any resources associated with + * the Recording that they may be holding onto. If the Recording is successfully submitted to the + * GPU the callback will be called with CallbackResult::kSuccess once the GPU has finished. All + * other cases where some failure occurred it will be called with CallbackResult::kFailed. + * + * Alternatively, the client can provide fFinishedProcWithStats. This provides additional + * information about execution of the recording on the GPU. Only the stats requested using + * fStatsFlags will be valid and only if CallbackResult is kSuccess. If both fFinishedProc + * and fFinishedProcWithStats are provided the latter is preferred and the former won't be + * called. + * + * The fTargetSurface, if provided, is used as a target for any draws recorded onto a deferred + * canvas returned from Recorder::makeDeferredCanvas. This target surface must be provided iff + * the Recording contains any such draws. It must be Graphite-backed and its backing texture's + * TextureInfo must match the info provided to the Recorder when making the deferred canvas. + * + * fTargetTranslation is an additional translation applied to draws targeting fTargetSurface. + * + * fTargetClip is an additional clip applied to draws targeting fTargetSurface. It is defined in the + * local replay space, that is, with fTargetTranslation applied. An empty clip will not be applied. + * + * The client may pass in two arrays of initialized BackendSemaphores to be included in the + * command stream. At some time before issuing commands in the Recording, the fWaitSemaphores will + * be waited on by the gpu. We only guarantee these wait semaphores block transfer and fragment + * shader work. Similarly, at some time after issuing the Recording's commands, the + * fSignalSemaphores will be signaled by the gpu. Depending on the platform, the timing of the wait + * and signal operations will either be immediately before or after the given Recording's command + * stream, respectively, or before and after the entire CommandBuffer's command stream. The + * semaphores are not sent to the GPU until the next Context::submit call is made. + * + * The client will own and be responsible for deleting the underlying semaphore objects after the + * submission completes, however the BackendSemaphore objects themselves can be deleted as soon + * as this function returns. + */ +struct InsertRecordingInfo { + Recording* fRecording = nullptr; + + SkSurface* fTargetSurface = nullptr; + SkIVector fTargetTranslation = {0, 0}; + SkIRect fTargetClip = {0, 0, 0, 0}; + MutableTextureState* fTargetTextureState = nullptr; + + size_t fNumWaitSemaphores = 0; + BackendSemaphore* fWaitSemaphores = nullptr; + size_t fNumSignalSemaphores = 0; + BackendSemaphore* fSignalSemaphores = nullptr; + + GpuStatsFlags fGpuStatsFlags = GpuStatsFlags::kNone; + GpuFinishedContext fFinishedContext = nullptr; + GpuFinishedProc fFinishedProc = nullptr; + GpuFinishedWithStatsProc fFinishedWithStatsProc = nullptr; + + // For unit testing purposes, this can be used to induce a known failure status from + // Context::insertRecording(). When this set to anything other than kSuccess, insertRecording() + // will operate as normal until the first condition that would normally return the simulated + // status is encountered. At that point, operations are treated as if that condition had failed. + // This leaves the Context in a state consistent with encountering the InsertStatus in a normal + // application. + // + // NOTE: If the simulated failure status is one of the later error codes but the inserted + // Recording would fail with an earlier error code normally, that error is still returned. + InsertStatus fSimulatedStatus = InsertStatus::kSuccess; +}; + +/** + * The fFinishedProc is called when the Recording has been submitted and finished on the GPU, or + * when there is a failure that caused it not to be submitted. The callback will always be called + * and the caller can use the callback to know it is safe to free any resources associated with + * the Recording that they may be holding onto. If the Recording is successfully submitted to the + * GPU the callback will be called with CallbackResult::kSuccess once the GPU has finished. All + * other cases where some failure occurred it will be called with CallbackResult::kFailed. + */ +struct InsertFinishInfo { + InsertFinishInfo() = default; + InsertFinishInfo(GpuFinishedContext context, GpuFinishedProc proc) + : fFinishedContext{context}, fFinishedProc{proc} {} + InsertFinishInfo(GpuFinishedContext context, GpuFinishedWithStatsProc proc) + : fFinishedContext{context}, fFinishedWithStatsProc{proc} {} + GpuFinishedContext fFinishedContext = nullptr; + GpuFinishedProc fFinishedProc = nullptr; + GpuFinishedWithStatsProc fFinishedWithStatsProc = nullptr; + GpuStatsFlags fGpuStatsFlags = GpuStatsFlags::kNone; +}; + +/** + * Actually submit work to the GPU and track its completion + */ +enum class SyncToCpu : bool { + kYes = true, + kNo = false +}; + +enum class MarkFrameBoundary : bool { + kYes = true, + kNo = false +}; + +struct SubmitInfo { + SyncToCpu fSync = SyncToCpu::kNo; + MarkFrameBoundary fMarkBoundary = MarkFrameBoundary::kNo; + uint64_t fFrameID = 0; + + // Optional finish proc that is invoked when all GPU work submitted by this call has + // completed. If there is no pending work to submit, the proc is attached to the most + // recently outstanding GPU submission, or invoked immediately if the GPU is idle. + GpuFinishedProc fFinishedProc = nullptr; + GpuFinishedContext fFinishedContext = nullptr; + + constexpr SubmitInfo() = default; + + constexpr SubmitInfo(SyncToCpu sync) + : fSync(sync) + , fMarkBoundary(MarkFrameBoundary::kNo) + , fFrameID(0) {} + + constexpr SubmitInfo(SyncToCpu sync, uint64_t frameID) + : fSync(sync) + , fMarkBoundary(MarkFrameBoundary::kYes) + , fFrameID(frameID) {} +}; + +/* + * For Promise Images - should the Promise Image be fulfilled every time a Recording that references + * it is inserted into the Context. + */ +enum class Volatile : bool { + kNo = false, // only fulfilled once + kYes = true // fulfilled on every insertion call +}; + +enum class DepthStencilFlags : int { + kNone = 0b000, + kDepth = 0b001, + kStencil = 0b010, + kDepthStencil = kDepth | kStencil, +}; + +enum class SampleCount : uint8_t { + k1 = 1, + k2 = 2, + k4 = 4, + k8 = 8, + k16 = 16 +}; + +/** + * Convert an integer value to a strictly typed SampleCount value, rounding down to the lowest + * valid sample count if needed if `sampleCount` is not already equivalent. + */ +constexpr SampleCount ToSampleCount(uint32_t sampleCount) { + return sampleCount >= 16 ? SampleCount::k16 : + sampleCount >= 8 ? SampleCount::k8 : + sampleCount >= 4 ? SampleCount::k4 : + sampleCount >= 2 ? SampleCount::k2 : + SampleCount::k1; +} + +/* + * This enum allows mapping from a set of observed RenderSteps (e.g., from a GraphicsPipeline + * printout) to the correct 'drawTypes' parameter needed by the Precompilation API. + */ +enum DrawTypeFlags : uint16_t { + + kNone = 0, + + // kBitmapText_Mask should be used for the BitmapTextRenderStep[mask] RenderStep + kBitmapText_Mask = 1 << 0, + // kBitmapText_LCD should be used for the BitmapTextRenderStep[LCD] RenderStep + kBitmapText_LCD = 1 << 1, + // kBitmapText_Color should be used for the BitmapTextRenderStep[color] RenderStep + kBitmapText_Color = 1 << 2, + // kSDFText should be used for the SDFTextRenderStep RenderStep + kSDFText = 1 << 3, + // kSDFText_LCD should be used for the SDFTextLCDRenderStep RenderStep + kSDFText_LCD = 1 << 4, + + // kDrawVertices should be used to generate Pipelines that use the following RenderSteps: + // VerticesRenderStep[*] for: + // [Tris], [TrisTexCoords], [TrisColor], [TrisColorTexCoords], + // [Tristrips], [TristripsTexCoords], [TristripsColor], [TristripsColorTexCoords] + kDrawVertices = 1 << 5, + + // kCircularArc renders filled circular arcs, with or without the center included, and + // stroked circular arcs with butt or round caps that don't include the center point. + // It corresponds to the CircularArcRenderStep. + kCircularArc = 1 << 6, + + // kSimpleShape should be used to generate Pipelines that use the following RenderSteps: + // AnalyticRRectRenderStep + // PerEdgeAAQuadRenderStep + // CoverBoundsRenderStep[NonAAFill] + kAnalyticRRect = 1 << 7, + kPerEdgeAAQuad = 1 << 8, + kNonAAFillRect = 1 << 9, + + kSimpleShape = kAnalyticRRect | kPerEdgeAAQuad | kNonAAFillRect, + + // kNonSimpleShape should be used to generate Pipelines that use the following RenderSteps: + // CoverageMaskRenderStep + // CoverBoundsRenderStep[*] for [InverseCover], [RegularCover] + // TessellateStrokeRenderStep + // TessellateWedgesRenderStep[*] for [Convex], [EvenOdd], [Winding] + // TessellateCurvesRenderStep[*] for [EvenOdd], [Winding] + // MiddleOutFanRenderStep[*] for [EvenOdd], [Winding] + kNonSimpleShape = 1 << 10, + + // This draw type covers all the methods Skia uses to draw drop shadows. It can be used to + // generate Pipelines which, as part of their labels, have: + // the AnalyticBlurRenderStep + // VerticesRenderStep[TrisColor] with a GaussianColorFilter + // For this draw type the PaintOptions parameter to Precompile() will be ignored. + kDropShadows = 1 << 11, + + // kAnalyticClip should be combined with the primary drawType for Pipelines that contain + // either of the following sub-strings: + // AnalyticClip + // AnalyticAndAtlasClip + kAnalyticClip = 1 << 12, + + kLast = kAnalyticClip, +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_GraphiteTypes_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/Image.h b/vendor/artifacts/skia/include/gpu/graphite/Image.h new file mode 100644 index 000000000..65f08c001 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/Image.h @@ -0,0 +1,428 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_Image_DEFINED +#define skgpu_graphite_Image_DEFINED + +#include "include/core/SkColorSpace.h" +#include "include/core/SkImage.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" +#include "include/gpu/GpuTypes.h" + +#include +#include + +class SkYUVAInfo; +class SkYUVAPixmaps; +struct SkIRect; + +namespace skgpu::graphite { + class BackendTexture; + class Recorder; + class TextureInfo; + class YUVABackendTextureInfo; + class YUVABackendTextures; + enum class Volatile : bool; +} + +namespace SkImages { +enum class GenerateMipmapsFromBase : bool { kNo, kYes }; + +using TextureReleaseProc = void (*)(ReleaseContext); + +// Passed to imageRelease +using GraphitePromiseImageContext = void*; +// Passed to fulfill; for non-YUVA promise images, the image context is used as the fulfill context, +// while YUVA promise images have a per-plane fulfill context. +using GraphitePromiseTextureFulfillContext = void*; +// Returned from fulfill and passed into textureRelease +using GraphitePromiseTextureReleaseContext = void*; + +using GraphitePromiseTextureFulfillProc = + std::tuple (*)( + GraphitePromiseTextureFulfillContext); +using GraphitePromiseImageReleaseProc = void (*)(GraphitePromiseImageContext); +using GraphitePromiseTextureReleaseProc = void (*)(GraphitePromiseTextureReleaseContext); + +/** Creates an SkImage from a GPU texture associated with the recorder. The client is still + responsible for managing the backend texture's lifetime. + + SkImage is returned if the format of backendTexture is recognized and supported. Recognized + formats vary by GPU back-end. + + The provided `alphaType` determines how the wrapped texture is sampled: + - kUnknown_SkAlphaType: Sampled as RGB1, ignoring any alpha data. G and B are automatically + treated as 0 if the format does not provide them. Single channel + texture formats are interpretd as the "red" SkColorTypes instead of + the "alpha-only" SkColorTypes. + - kOpaque_SkAlphaType: Sampled as RGBA but higher-level logic *assumes* that all A values are + equal to 1. Single channel texture formats are interpeted as "red" + instead of "alpha-only" for disambiguating SkColorTypes. + - kPremul_SkAlphaType: Sampled as RGBA and higher-level logic assumes the RGB values have + been premultiplied with the A value. Single channel texture formats + are interpreted as "alpha-only" color types (e.g. 000A or 000R + swizzles depending on the texture format). + - kUnpremul_SkAlphaType: Sampled as RGBA and higher-level logic assumes the RGB values have not + been multiplied with A yet. Single channel texture formats are + interpreted as "alpha-only" color types the same as + kPremul_SkAlphaType. + + The SkColorType of the returned SkImage is selected to best match the bit depth and + representation of the texture format of the backend texture. This is not necessarily an exact + match since texture formats may have more options than SkColorType. Any mismatch between the + format and the SkColorType is handled automatically for read/write operations on the image (the + SkColorType represents how the image data will be made available on the CPU). + + If possible, the color type will also take into account the behavior of `alphaType`, such as + using kRGB_888x_SkColorType for an RGBA8 texture with kUnknown_SkAlphaType. For single-channel + textures with kUnknown|kOpaque_SkAlphaType, the best "red-only" color type is chosen, e.g. + kR8_unorm_SkColorType. For single-channel textures with kPremul|kUnpremul_SkAlphaType, the best + "alpha-only" color type is chosen, e.g. kAlpha_8_SkColorType. This preserves the semantic + behaviors in Skia's high-level shading logic that treats red formats as color data, and + automatically colorizes alpha formats based on the paint's color or shader. + + When using such a single-channel texture in a runtime effect, this semantic distinction defines + which channel of the float4 shader value has the interesting data (R001 vs 000A). When combining + multiple single-channel textures into a multiplaner YUV[A] SkImage, either colortype behaves the + same. The most significant distinction occurs when the SkImage is used in + SkCanvas::drawImageRect() or combined into a non-runtime SkShader. + + @param recorder The recorder + @param backendTexture texture residing on GPU + @param alphaType The nature of alpha channel data provided in the texture. + @param colorSpace This describes the color space of this image's contents, as seen + after sampling. In general, if the format of the backend texture + is SRGB, some linear colorSpace should be supplied (e.g., + SkColorSpace::MakeSRGBLinear()). If the format of the backend + texture is linear, then the colorSpace should include a + description of the transfer function as well (e.g., + SkColorSpace::MakeSRGB()). + @param origin Whether the Texture logically treats the origin as TopLeft or + BottomLeft + @param generateMipmapsFromBase If kYes then the pixel contents of the textures upper mipmap + levels are generated by successive downsampling of the base + level. If the texture is not mipmapped or isn't renderable then + image creation will fail. If kNo and the texture is mipmapped + then the contents of upper levels are assumed to already be + valid. + @return created SkImage, or nullptr +*/ +SK_API sk_sp WrapTexture(skgpu::graphite::Recorder*, + const skgpu::graphite::BackendTexture&, + SkAlphaType alphaType, + sk_sp colorSpace, + skgpu::Origin origin, + GenerateMipmapsFromBase genMipmaps, + TextureReleaseProc = nullptr, + ReleaseContext = nullptr, + std::string_view label = {}); + +SK_API inline sk_sp WrapTexture(skgpu::graphite::Recorder* recorder, + const skgpu::graphite::BackendTexture& backendTex, + SkAlphaType alphaType, + sk_sp colorSpace, + skgpu::Origin origin, + TextureReleaseProc releaseP = nullptr, + ReleaseContext releaseC = nullptr, + std::string_view label = {}) { + return WrapTexture(recorder, backendTex, alphaType, std::move(colorSpace), origin, + GenerateMipmapsFromBase::kNo, releaseP, releaseC, label); +} + +SK_API inline sk_sp WrapTexture(skgpu::graphite::Recorder* recorder, + const skgpu::graphite::BackendTexture& backendTex, + SkAlphaType alphaType, + sk_sp colorSpace, + TextureReleaseProc releaseP = nullptr, + ReleaseContext releaseC = nullptr, + std::string_view label = {}) { + return WrapTexture(recorder, backendTex, alphaType, std::move(colorSpace), + skgpu::Origin::kTopLeft, releaseP, releaseC, label); +} + +// DEPRECATED: The WrapTexture calls that take an SkColorType are deprecated. Use the new versions +// that automatically pick a compatible color type from the texture's format. +SK_API sk_sp WrapTexture(skgpu::graphite::Recorder*, + const skgpu::graphite::BackendTexture&, + SkColorType colorType, + SkAlphaType alphaType, + sk_sp colorSpace, + skgpu::Origin origin, + GenerateMipmapsFromBase generateMipmapsFromBase, + TextureReleaseProc = nullptr, + ReleaseContext = nullptr, + std::string_view label = {}); + +SK_API sk_sp WrapTexture(skgpu::graphite::Recorder*, + const skgpu::graphite::BackendTexture&, + SkColorType colorType, + SkAlphaType alphaType, + sk_sp colorSpace, + skgpu::Origin origin, + TextureReleaseProc = nullptr, + ReleaseContext = nullptr, + std::string_view label = {}); + +SK_API sk_sp WrapTexture(skgpu::graphite::Recorder*, + const skgpu::graphite::BackendTexture&, + SkColorType colorType, + SkAlphaType alphaType, + sk_sp colorSpace, + TextureReleaseProc = nullptr, + ReleaseContext = nullptr, + std::string_view label = {}); + +/** Create a new SkImage that is very similar to an SkImage created by WrapTexture. The difference + is that the caller need not have created the backend texture nor populated it with data when + creating the image. Instead of passing a BackendTexture to the factory the client supplies a + description of the texture consisting of dimensions, TextureInfo, SkColorInfo and Volatility. + + In general, 'fulfill' must return a BackendTexture that matches the properties provided at + SkImage creation time. The BackendTexture must refer to a valid existing texture in the backend + API context/device, and already be populated with data. The texture cannot be deleted until + 'textureRelease' is called. 'textureRelease' will be called with the textureReleaseContext + returned by 'fulfill'. + + Wrt when and how often the fulfill, imageRelease, and textureRelease callbacks will be called: + + For non-volatile promise images, 'fulfill' will be called at Context::insertRecording time. + Regardless of whether 'fulfill' succeeded or failed, 'imageRelease' will always be called only + once - when Skia will no longer try calling 'fulfill' to get a backend texture. If 'fulfill' + failed (i.e., it didn't return a valid backend texture) then 'textureRelease' will never be + called. If 'fulfill' was successful then 'textureRelease' will be called only once when the GPU + is done with the contents of the promise image. This will usually occur during a Context::submit + call but it could occur earlier due to error conditions. 'fulfill' can be called multiple times + if the promise image is used in multiple recordings. If 'fulfill' fails, the insertRecording + itself will fail. Subsequent insertRecording calls (with Recordings that use the promise image) + will keep calling 'fulfill' until it succeeds. + + For volatile promise images, 'fulfill' will be called each time the Recording is inserted into a + Context. Regardless of whether 'fulfill' succeeded or failed, 'imageRelease' will always be + called only once just like the non-volatile case. If 'fulfill' fails at insertRecording-time, + 'textureRelease' will never be called. If 'fulfill' was successful then a 'textureRelease' + matching that 'fulfill' will be called when the GPU is done with the contents of the promise + image. This will usually occur during a Context::submit call but it could occur earlier due to + error conditions. + + @param recorder the recorder that will capture the commands creating the image + @param dimensions width & height of promised gpu texture + @param textureInfo structural information for the promised gpu texture + @param colorInfo color type, alpha type and colorSpace information for the image + @param origin Whether the Texture logically treats the origin as TopLeft or BottomLeft + @param isVolatile volatility of the promise image + @param fulfill function called to get the actual backend texture, + and the instance for the GraphitePromiseTextureReleaseProc + @param imageRelease function called when any image-centric data can be deleted + @param textureRelease function called when the backend texture can be deleted + @param imageContext state passed to fulfill and imageRelease + @return created SkImage, or nullptr +*/ +SK_API sk_sp PromiseTextureFrom(skgpu::graphite::Recorder*, + SkISize dimensions, + const skgpu::graphite::TextureInfo&, + const SkColorInfo&, + skgpu::Origin origin, + skgpu::graphite::Volatile, + GraphitePromiseTextureFulfillProc, + GraphitePromiseImageReleaseProc, + GraphitePromiseTextureReleaseProc, + GraphitePromiseImageContext, + std::string_view label = {}); + +SK_API sk_sp PromiseTextureFrom(skgpu::graphite::Recorder*, + SkISize dimensions, + const skgpu::graphite::TextureInfo&, + const SkColorInfo&, + skgpu::graphite::Volatile, + GraphitePromiseTextureFulfillProc, + GraphitePromiseImageReleaseProc, + GraphitePromiseTextureReleaseProc, + GraphitePromiseImageContext); + +/** This is similar to 'PromiseTextureFrom' but it creates a GPU-backed SkImage from YUV[A] data. + The source data may be planar (i.e. spread across multiple textures). In the extreme Y, U, V, + and A are all in different planes and thus the image is specified by four textures. + 'backendTextureInfo' describes the planar arrangement, texture formats, and conversion to RGB. + Separate 'fulfill' and 'textureRelease' calls are made for each texture. Each texture has its + own GraphitePromiseFulfillContext. The GraphitePromiseImageReleaseProc will be made even on + failure. 'planeContexts' has one entry for each of the up to four textures, as indicated by + 'backendTextureInfo'. Currently the mipmapped property of 'backendTextureInfo' is ignored. + However, in the near future it will be required that if it is kYes then the fulfillProc must + return a mip mapped texture for each plane in order to successfully draw the image. + + @param recorder the recorder that will capture the commands creating the image + @param backendTextureInfo info about the promised yuva gpu texture(s) + @param imageColorSpace range of colors; may be nullptr + @param isVolatile volatility of the promise image + @param fulfill function called to get the actual backend texture for + a given GraphitePromiseTextureContext, and the instance + for the GraphitePromiseTextureReleaseProc + @param imageRelease function called when any image-centric data can be deleted + @param textureRelease function called when the backend texture can be deleted + @param imageContext state passed to imageRelease + @param planeContexts states passed to fulfill for each plane + @return created SkImage, or nullptr +*/ +SK_API sk_sp PromiseTextureFromYUVA(skgpu::graphite::Recorder*, + const skgpu::graphite::YUVABackendTextureInfo&, + sk_sp imageColorSpace, + skgpu::graphite::Volatile, + GraphitePromiseTextureFulfillProc, + GraphitePromiseImageReleaseProc, + GraphitePromiseTextureReleaseProc, + GraphitePromiseImageContext imageContext, + GraphitePromiseTextureFulfillContext planeContexts[], + std::string_view label = {}); + + +/** Returns an SkImage backed by a Graphite texture, using the provided Recorder for creation and + uploads if necessary. The returned SkImage respects the required image properties' mipmap + setting for non-Graphite SkImages; i.e., if mipmapping is required, the backing Graphite texture + will have allocated mip map levels. + + It is assumed that MIP maps are always supported by the GPU. + + Returns original SkImage if the image is already Graphite-backed and the required mipmapping is + compatible with the backing Graphite texture. If the required mipmapping is not compatible, + nullptr will be returned. + + Returns nullptr if no Recorder is provided, or if SkImage was created with another Recorder and + work on that Recorder has not been submitted. + + @param Recorder the Recorder to use for storing commands + @param RequiredProperties properties the returned SkImage must possess (e.g. mipmaps) + @return created SkImage, or nullptr +*/ +SK_API sk_sp TextureFromImage(skgpu::graphite::Recorder*, + const SkImage*, + SkImage::RequiredProperties = {}); + +inline sk_sp TextureFromImage(skgpu::graphite::Recorder* r, + const sk_sp& img, + SkImage::RequiredProperties props = {}) { + return TextureFromImage(r, img.get(), props); +} + +/** Creates SkImage from SkYUVAPixmaps. + + The image will remain planar with each plane converted to a texture using the passed Recorder. + + SkYUVAPixmaps has a SkYUVAInfo which specifies the transformation from YUV to RGB. The + SkColorSpace of the resulting RGB values is specified by imgColorSpace. This will be the + SkColorSpace reported by the image and when drawn the RGB values will be converted from this + space into the destination space (if the destination is tagged). + + This is only supported using the GPU backend and will fail if recorder is nullptr. + + SkYUVAPixmaps does not need to remain valid after this returns. + + @param Recorder The Recorder to use for storing commands + @param pixmaps The planes as pixmaps with supported SkYUVAInfo that + specifies conversion to RGB. + @param RequiredProperties Properties the returned SkImage must possess (e.g. mipmaps) + @param limitToMaxTextureSize Downscale image to GPU maximum texture size, if necessary + @param imgColorSpace Range of colors of the resulting image; may be nullptr + @return Created SkImage, or nullptr +*/ +SK_API sk_sp TextureFromYUVAPixmaps(skgpu::graphite::Recorder*, + const SkYUVAPixmaps& pixmaps, + SkImage::RequiredProperties = {}, + bool limitToMaxTextureSize = false, + sk_sp imgColorSpace = nullptr, + std::string_view label = {}); + +/** Creates an SkImage from YUV[A] planar textures associated with the recorder. + @param recorder The recorder. + @param yuvaBackendTextures A set of textures containing YUVA data and a description of the + data and transformation to RGBA. + @param imageColorSpace range of colors of the resulting image after conversion to RGB; + may be nullptr + @param TextureReleaseProc called when the backend textures can be released + @param ReleaseContext state passed to TextureReleaseProc + @return created SkImage, or nullptr + */ +SK_API sk_sp TextureFromYUVATextures( + skgpu::graphite::Recorder* recorder, + const skgpu::graphite::YUVABackendTextures& yuvaBackendTextures, + sk_sp imageColorSpace, + TextureReleaseProc = nullptr, + ReleaseContext = nullptr, + std::string_view label = {}); + +/** Creates an SkImage from YUV[A] planar SkImages associated with the recorder. + + The images should have kGraphite type, and the result will be nullptr if any are not. The + resulting SkImage will not take a ref on the given SkImages but will take a ref on the + underlying TextureProxies. The releaseProcs, if any, for those Textures will be the ones set + when the given SkImages were created. + + @param recorder The recorder. + @param yuvaInfo Structure describing the YUVA format + @param images A set of SkImages containing YUVA data + @param imageColorSpace Range of colors of the resulting image after conversion to RGB; + may be nullptr + @return created SkImage, or nullptr + */ +SK_API sk_sp TextureFromYUVAImages( + skgpu::graphite::Recorder* recorder, + const SkYUVAInfo& yuvaInfo, + SkSpan> images, + sk_sp imageColorSpace); + +/** Returns subset of this image as a texture-backed image. + + Returns nullptr if any of the following are true: + - Subset is empty + - Subset is not contained inside the image's bounds + - Pixels in the source image could not be read or copied + - The source image is texture-backed and context does not match the source image's context. + + @param recorder the non-null recorder in which to create the new image. + @param img Source image + @param subset bounds of returned SkImage + @param props properties the returned SkImage must possess (e.g. mipmaps) + @return the subsetted image, uploaded as a texture, or nullptr +*/ +SK_API sk_sp SubsetTextureFrom(skgpu::graphite::Recorder* recorder, + const SkImage* img, + const SkIRect& subset, + SkImage::RequiredProperties props = {}); + +/** Creates a filtered SkImage on the GPU. filter processes the src image, potentially changing + color, position, and size. subset is the bounds of src that are processed by filter. clipBounds + is the expected bounds of the filtered SkImage. outSubset is required storage for the actual + bounds of the filtered SkImage. offset is required storage for translation of returned SkImage. + + Returns nullptr if SkImage could not be created. If nullptr is returned, outSubset and offset + are undefined. + + Useful for animation of SkImageFilter that varies size from frame to frame. Returned SkImage is + created larger than required by filter so that GPU texture can be reused with different sized + effects. outSubset describes the valid bounds of GPU texture returned. offset translates the + returned SkImage to keep subsequent animation frames aligned with respect to each other. + + @param recorder the recorder in which the filtering operation is to be performed + @param filter how SkImage is sampled when transformed + @param subset bounds of SkImage processed by filter + @param clipBounds expected bounds of filtered SkImage + @param outSubset storage for returned SkImage bounds + @param offset storage for returned SkImage translation + @return filtered SkImage, or nullptr +*/ +SK_API sk_sp MakeWithFilter(skgpu::graphite::Recorder* recorder, + sk_sp src, + const SkImageFilter* filter, + const SkIRect& subset, + const SkIRect& clipBounds, + SkIRect* outSubset, + SkIPoint* offset); + +} // namespace SkImages + + +#endif // skgpu_graphite_Image_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/ImageProvider.h b/vendor/artifacts/skia/include/gpu/graphite/ImageProvider.h new file mode 100644 index 000000000..67db59031 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/ImageProvider.h @@ -0,0 +1,68 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_ImageProvider_DEFINED +#define skgpu_graphite_ImageProvider_DEFINED + +#include "include/core/SkImage.h" +#include "include/core/SkRefCnt.h" + +namespace skgpu::graphite { + +class Recorder; + +/* + * This class provides a centralized location for clients to perform any caching of images + * they desire. Whenever Graphite encounters an SkImage which is not Graphite-backed + * it will call ImageProvider::findOrCreate. The client's derived version of this class should + * return a Graphite-backed version of the provided SkImage that meets the specified + * requirements. + * + * Skia requires that 'findOrCreate' return a Graphite-backed image that preserves the + * dimensions and alpha type of the original image. The bit depth of the + * individual channels can change (e.g., 4444 -> 8888 is allowed) as well as the channels - as + * long as the returned image has a superset of the original image's channels + * (e.g., 565 -> 8888 opaque is allowed). + * + * Wrt mipmapping, the returned image can have different mipmap settings than requested. If + * mipmapping was requested but not returned, the sampling level will be reduced to linear. + * If the requirements are not met by the returned image (modulo the flexibility wrt mipmapping) + * Graphite will drop the draw. + * + * All returned images must be backed by textures that have a TopLeft origin. If Skia is used to + * create the texture (e.g. using makeTextureImage) then this is always guaranteed. If the client + * returns a texture they created themselves and wrapped in Skia, they must ensure that texture has + * a TopLeft origin. + * + * Note: by default, Graphite will not perform any caching of images + * + * Threading concerns: + * If the same ImageProvider is given to multiple Recorders it is up to the + * client to handle any required thread synchronization. This is not limited to just + * restricting access to whatever map a derived class may have but extends to ensuring + * that an image created on one Recorder has had its creation work submitted before it + * is used by any work submitted by another Recording. Please note, this requirement + * (re the submission of creation work and image usage on different threads) is common to all + * graphite SkImages and isn't unique to SkImages returned by the ImageProvider. + * + * TODO(b/240996632): add documentation re shutdown order. + * TODO(b/240997067): add unit tests + */ +class SK_API ImageProvider : public SkRefCnt { +public: + // If the client's derived class already has a Graphite-backed image that has the same + // contents as 'image' and meets the requirements, then it can be returned. + // makeTextureImage can always be called to create an acceptable Graphite-backed image + // which could then be cached. + virtual sk_sp findOrCreate(Recorder* recorder, + const SkImage* image, + SkImage::RequiredProperties) = 0; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_ImageProvider_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/PersistentPipelineStorage.h b/vendor/artifacts/skia/include/gpu/graphite/PersistentPipelineStorage.h new file mode 100644 index 000000000..f7ae19975 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/PersistentPipelineStorage.h @@ -0,0 +1,45 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_PersistentPipelineStorage_DEFINED +#define skgpu_graphite_PersistentPipelineStorage_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; + +namespace skgpu::graphite { + +/** + * Abstract class which can be implemented to allow Graphite to persist Pipeline data across + * Context lifetimes + */ +class SK_API PersistentPipelineStorage { +public: + virtual ~PersistentPipelineStorage() = default; + + /** + * Should return the data that had been previously stored. It should return null if there + * is no prior data. + */ + virtual sk_sp load() = 0; + + /** + * Should persist the provided Pipeline data. + */ + virtual void store(const SkData& data) = 0; + +protected: + PersistentPipelineStorage() = default; + PersistentPipelineStorage(const PersistentPipelineStorage&) = delete; + PersistentPipelineStorage& operator=(const PersistentPipelineStorage&) = delete; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_PersistentPipelineStorage_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/PrecompileContext.h b/vendor/artifacts/skia/include/gpu/graphite/PrecompileContext.h new file mode 100644 index 000000000..c4b62909d --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/PrecompileContext.h @@ -0,0 +1,95 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_PrecompileContext_DEFINED +#define skgpu_graphite_PrecompileContext_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SingleOwner.h" +#include "include/private/base/SkAPI.h" + +#include +#include +#include + +class SkData; + +namespace skgpu::graphite { + +class SharedContext; +class PrecompileContextPriv; +class ResourceProvider; + +class SK_API PrecompileContext { +public: + ~PrecompileContext(); + + /** + * Purge Pipelines that haven't been used in the past 'msNotUsed' milliseconds + * regardless of whether the pipeline cache is under budget. + * + * @param msNotUsed Pipelines not used in these last milliseconds will be cleaned up. + */ + void purgePipelinesNotUsedInMs(std::chrono::milliseconds msNotUsed); + + enum class StatOptions { + // Emit histograms (using the SK_HISTOGRAM* macros) for Skia's Precompiled Pipeline + // usage: + // Skia.Graphite.Precompile.NormalPreemptedByPrecompile + // Skia.Graphite.Precompile.UnpreemptedPrecompilePipelines + // Skia.Graphite.Precompile.UnusedPrecompiledPipelines + kPrecompile, + // Emit histograms (using the SK_HISTOGRAM* macros) for Skia's Pipeline cache usage: + // Skia.Graphite.PipelineCache.PipelineUsesInEpoch + kPipelineCache, + }; + + /** + * Emit histograms histograms related to Skia's Pipelines (c.f. the StatOptions enum). + */ + void reportPipelineStats(StatOptions option = StatOptions::kPrecompile); + + /** + * Precompile one specific Pipeline that has been previously serialized. Serialized pipeline + * keys can be acquired via the ContextOptions::PipelineCallback. + * + * @param serializedPipelineKey serialized Pipeline key. + * @return true if a Pipeline was created from the key; false otherwise + */ + bool precompile(sk_sp serializedPipelineKey); + + /** + * Get a human-readable version of a serialized pipeline key and, optionally, the unique + * hash of the Pipeline. + * + * @param serializedPipelineKey serialized Pipeline key. + * @param uniqueHash If non-null, this will be filled in with the unique hash. + * Note that the uniqueHash is only valid for the lifetime + * of the Context used to create this PrecompileContext. + * @return A human-readable version of the provided key; "" on failure. + */ + std::string getPipelineLabel(sk_sp serializedPipelineKey, + uint32_t* uniqueHash = nullptr); + + // Provides access to functions that aren't part of the public API. + PrecompileContextPriv priv(); + const PrecompileContextPriv priv() const; // NOLINT(readability-const-return-type) + +private: + friend class PrecompileContextPriv; + friend class Context; // for ctor + + explicit PrecompileContext(sk_sp); + + mutable SingleOwner fSingleOwner; + sk_sp fSharedContext; + std::unique_ptr fResourceProvider; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_PrecompileContext_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/Recorder.h b/vendor/artifacts/skia/include/gpu/graphite/Recorder.h new file mode 100644 index 000000000..b6726bbc5 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/Recorder.h @@ -0,0 +1,354 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_Recorder_DEFINED +#define skgpu_graphite_Recorder_DEFINED + +#include "include/core/SkCPURecorder.h" +#include "include/core/SkRecorder.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSurface.h" +#include "include/gpu/graphite/GraphiteTypes.h" +#include "include/gpu/graphite/Recording.h" +#include "include/private/base/SingleOwner.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkTArray.h" + +#include +#include +#include +#include +#include + +class SkCanvas; +class SkPixmap; +class SkTraceMemoryDump; +struct SkISize; +struct SkImageInfo; + +#if defined(SK_BUILD_FOR_ANDROID) +struct AHardwareBuffer; +#endif + +namespace skgpu { +enum class BackendApi : unsigned int; +class RefCntedCallback; +class TokenTracker; +} + +namespace sktext::gpu { +class StrikeCache; +class TextBlobRedrawCoordinator; +} + +namespace skgpu::graphite { + +class AtlasProvider; +class BackendTexture; +class Context; +class Device; +class DrawBufferManager; +class FloatStorageManager; +class ImageProvider; +class PaintParamsKeyBuilder; +class PipelineDataGatherer; +class ProxyReadCountMap; +class RecorderPriv; +class ResourceProvider; +class RuntimeEffectDictionary; +class SharedContext; +class TaskList; +class TextureInfo; +class UploadBufferManager; +class UploadList; + +struct RecorderOptionsPriv; + +using KeyAndDataBuilder = std::pair; + +struct SK_API RecorderOptions final { + RecorderOptions(); + RecorderOptions(const RecorderOptions&); + ~RecorderOptions(); + + sk_sp fImageProvider; + + static constexpr size_t kDefaultRecorderBudget = 256 * (1 << 20); + // What is the budget for GPU resources allocated and held by this Recorder. + size_t fGpuBudgetInBytes = kDefaultRecorderBudget; + // If Recordings are known to be played back in the order they are recorded, then Graphite + // may be able to make certain assumptions that improve performance. This is often the case + // if the content being drawn triggers the use of internal atlasing in Graphite (e.g. text). + std::optional fRequireOrderedRecordings; + + // Private options that are only meant for testing within Skia's tools. + RecorderOptionsPriv* fRecorderOptionsPriv = nullptr; +}; + +class SK_API Recorder final : public SkRecorder { +public: + Recorder(const Recorder&) = delete; + Recorder(Recorder&&) = delete; + Recorder& operator=(const Recorder&) = delete; + Recorder& operator=(Recorder&&) = delete; + + ~Recorder() override; + + BackendApi backend() const; + + Type type() const override { return SkRecorder::Type::kGraphite; } + skcpu::Recorder* cpuRecorder() override; + + std::unique_ptr snap(); + + ImageProvider* clientImageProvider() { return fClientImageProvider.get(); } + const ImageProvider* clientImageProvider() const { return fClientImageProvider.get(); } + + /** + * Gets the maximum supported texture size. + */ + int maxTextureSize() const; + + /** + * Creates a new backend gpu texture matching the dimensions and TextureInfo. If an invalid + * TextureInfo or a TextureInfo Skia can't support is passed in, this will return an invalid + * BackendTexture. Thus the client should check isValid on the returned BackendTexture to know + * if it succeeded or not. + * + * If this does return a valid BackendTexture, the caller is required to use + * Recorder::deleteBackendTexture or Context::deleteBackendTexture to delete the texture. It is + * safe to use the Context that created this Recorder or any other Recorder created from the + * same Context to call deleteBackendTexture. + */ + BackendTexture createBackendTexture(SkISize dimensions, const TextureInfo&); + +#ifdef SK_BUILD_FOR_ANDROID + BackendTexture createBackendTexture(AHardwareBuffer*, + bool isRenderable, + bool isProtectedContent, + SkISize dimensions, + bool fromAndroidWindow = false) const; +#endif + + /** + * If possible, updates a backend texture with the provided pixmap data. The client + * should check the return value to see if the update was successful. The client is required + * to insert a Recording into the Context and call `submit` to send the upload work to the gpu. + * The backend texture must be compatible with the provided pixmap(s). Compatible, in this case, + * means that the backend format is compatible with the base pixmap's colortype. The src data + * can be deleted when this call returns. When the BackendTexture is safe to be destroyed by the + * client, Skia will call the passed in GpuFinishedProc. The BackendTexture should not be + * destroyed before that. + * If the backend texture is mip mapped, the data for all the mipmap levels must be provided. + * In the mipmapped case all the colortypes of the provided pixmaps must be the same. + * Additionally, all the miplevels must be sized correctly (please see + * SkMipmap::ComputeLevelSize and ComputeLevelCount). + * Note: the pixmap's alphatypes and colorspaces are ignored. + * For the Vulkan backend after a successful update the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + bool updateBackendTexture(const BackendTexture&, + const SkPixmap srcData[], + int numLevels, + GpuFinishedProc = nullptr, + GpuFinishedContext = nullptr); + + /** + * If possible, updates a compressed backend texture filled with the provided raw data. The + * client should check the return value to see if the update was successful. The client is + * required to insert a Recording into the Context and call `submit` to send the upload work to + * the gpu. When the BackendTexture is safe to be destroyed by the client, Skia will call the + * passed in GpuFinishedProc. The BackendTexture should not be destroyed before that. + * If the backend texture is mip mapped, the data for all the mipmap levels must be provided. + * Additionally, all the miplevels must be sized correctly (please see + * SkMipMap::ComputeLevelSize and ComputeLevelCount). + * For the Vulkan backend after a successful update the layout of the created VkImage will be: + * VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL + */ + bool updateCompressedBackendTexture(const BackendTexture&, + const void* data, + size_t dataSize, + GpuFinishedProc = nullptr, + GpuFinishedContext = nullptr); + + /** + * Called to delete the passed in BackendTexture. This should only be called if the + * BackendTexture was created by calling Recorder::createBackendTexture on a Recorder that is + * associated with the same Context. If the BackendTexture is not valid or does not match the + * BackendApi of the Recorder then nothing happens. + * + * Otherwise this will delete/release the backend object that is wrapped in the BackendTexture. + * The BackendTexture will be reset to an invalid state and should not be used again. + */ + void deleteBackendTexture(const BackendTexture&); + + // Adds a proc that will be moved to the Recording upon snap, subsequently attached to the + // CommandBuffer when the Recording is added, and called when that CommandBuffer is submitted + // and finishes. If the Recorder or Recording is deleted before the proc is added to the + // CommandBuffer, it will be called with result Failure. + void addFinishInfo(const InsertFinishInfo&); + + // Returns a canvas that will record to a proxy surface, which must be instantiated on replay. + // This can only be called once per Recording; subsequent calls will return null until a + // Recording is snapped. Additionally, the returned SkCanvas is only valid until the next + // Recording snap, at which point it is deleted. + SkCanvas* makeDeferredCanvas(const SkImageInfo&, const TextureInfo&); + + /** + * Frees GPU resources created and held by the Recorder. Can be called to reduce GPU memory + * pressure. Any resources that are still in use (e.g. being used by work submitted to the GPU) + * will not be deleted by this call. If the caller wants to make sure all resources are freed, + * then they should first make sure to submit and wait on any outstanding work. + */ + void freeGpuResources(); + + /** + * Purge GPU resources on the Recorder that haven't been used in the past 'msNotUsed' + * milliseconds or are otherwise marked for deletion, regardless of whether the context is under + * budget. Optionally provide a `microsMaxPurgingDur` after which Skia should stop purging + * resources. + */ + void performDeferredCleanup( + std::chrono::milliseconds msNotUsed, + std::optional microsMaxPurgingDur = std::nullopt); + + /** + * Returns the number of bytes of the Recorder's gpu memory cache budget that are currently in + * use. + */ + size_t currentBudgetedBytes() const; + + /** + * Returns the number of bytes of the Recorder's resource cache that are currently purgeable. + */ + size_t currentPurgeableBytes() const; + + /** + * Returns the size of Recorder's gpu memory cache budget in bytes. + */ + size_t maxBudgetedBytes() const; + + /** + * Sets the size of Recorders's gpu memory cache budget in bytes. If the new budget is lower + * than the current budget, the cache will try to free resources to get under the new budget. + */ + void setMaxBudgetedBytes(size_t bytes); + + /** + * Enumerates all cached GPU resources owned by the Recorder and dumps their memory to + * traceMemoryDump. + */ + void dumpMemoryStatistics(SkTraceMemoryDump* traceMemoryDump) const; + + // Provides access to functions that aren't part of the public API. + RecorderPriv priv(); + const RecorderPriv priv() const; // NOLINT(readability-const-return-type) + +private: + static constexpr int kMaxKeyAndDataBuilders = 2; + + friend class Context; // For ctor + friend class Device; // For registering and deregistering Devices; + friend class RecorderPriv; // for ctor and hidden methods + + // If Context is non-null, the Recorder will use the Context's resource provider + // instead of creating its own. + Recorder(sk_sp, const RecorderOptions&, const Context*); + + SingleOwner* singleOwner() const { return &fSingleOwner; } + + // We keep track of all Devices that are connected to a Recorder. This allows the client to + // safely delete an SkSurface or a Recorder in any order. If the client deletes the Recorder + // we need to notify all Devices that the Recorder is no longer valid. If we delete the + // SkSurface/Device first we will flush all the Device's into the Recorder before deregistering + // it from the Recorder. + // + // We take a ref on the Device so that ~Device() does not have to deregister the recorder + // (which can happen on any thread if the Device outlives the Surface via an Image view). + // Recorder::flushTrackedDevices() cleans up uniquely held and immutable Devices on the recorder + // thread so this extra ref is not significantly increasing the Device lifetime. + // + // Note: We could probably get by with only registering Devices directly connected to + // SkSurfaces. All other one off Devices will be created in a controlled scope where the + // Recorder should still be valid by the time they need to flush their work when the Device is + // deleted. We would have to make sure we safely handle cases where a client calls saveLayer + // then either deletes the SkSurface or Recorder before calling restore. For simplicity we just + // register every device for now, but if we see extra overhead in pushing back the extra + // pointers, we can look into only registering SkSurface Devices. + void registerDevice(sk_sp); + void deregisterDevice(const Device*); + + SkCanvas* makeCaptureCanvas(SkCanvas*) override; + SkContentID createCaptureBreakpoint(SkSurface*) override; + + sk_sp fSharedContext; + ResourceProvider* fResourceProvider; // May point to the Context's resource provider + std::unique_ptr fOwnedResourceProvider; // May be null + + sk_sp fRuntimeEffectDict; + + // NOTE: These are stored by pointer to allow them to be forward declared. + std::unique_ptr fRootTaskList; + // Aggregated one-time uploads that precede all tasks in the root task list. + std::unique_ptr fRootUploads; + + std::unique_ptr fDrawBufferManager; + std::unique_ptr fUploadBufferManager; + sk_sp fFloatStorageManager; + std::unique_ptr fProxyReadCounts; + + skia_private::STArray> + fKeyAndDataBuilders; + + // Iterating over tracked devices in flushTrackedDevices() needs to be re-entrant and support + // additions to fTrackedDevices if registerDevice() is triggered by a temporary device during + // flushing. Removals are handled by setting elements to null; final clean up is handled at the + // end of the initial call to flushTrackedDevices(). + skia_private::TArray> fTrackedDevices; + int fFlushingDevicesIndex = -1; + + uint32_t fUniqueID; // Needed for MessageBox handling for text + uint32_t fNextRecordingID = 1; + const bool fRequireOrderedRecordings; + + std::unique_ptr fAtlasProvider; + std::unique_ptr fTokenTracker; + std::unique_ptr fStrikeCache; + std::unique_ptr fTextBlobCache; + sk_sp fClientImageProvider; + + // In debug builds we guard against improper thread handling + // This guard is passed to the ResourceCache. + // TODO: Should we also pass this to Device, DrawContext, and similar classes? + mutable SingleOwner fSingleOwner; + + sk_sp fTargetProxyDevice; + std::unique_ptr fTargetProxyCanvas; + std::unique_ptr fTargetProxyData; + + skia_private::TArray> fFinishedProcs; + + // Tracks the flushing state to ensure recursive flushing does not occur. + SkDEBUGCODE(bool fIsFlushingTrackedDevices = false;) + +#if defined(GPU_TEST_UTILS) + // For testing use only -- the Context used to create this Recorder + Context* fContext = nullptr; +#endif + +#if defined(SK_DUMP_TASKS) + // Traverses and dumps the task list at Recorder::snap() + void dumpTasks(TaskList*) const; + + // Log of all callers of RecorderPriv::flushTrackedDevices + SkTDArray fFlushSources; +#endif +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_Recorder_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/Recording.h b/vendor/artifacts/skia/include/gpu/graphite/Recording.h new file mode 100644 index 000000000..dc33eafb3 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/Recording.h @@ -0,0 +1,98 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_Recording_DEFINED +#define skgpu_graphite_Recording_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkTArray.h" +#include +#include +#include +#include +#include + +struct SkISize; + +namespace skgpu { +class RefCntedCallback; +} + +namespace skgpu::graphite { + +class Caps; +class CommandBuffer; +class RecordingPriv; +class Resource; +class ResourceProvider; +class TaskList; +class Texture; +class TextureInfo; +class TextureProxy; + +class SK_API Recording final { +public: + ~Recording(); + + RecordingPriv priv(); + +private: + friend class Recorder; // for ctor and LazyProxyData + friend class RecordingPriv; + + // LazyProxyData is used if this recording should be replayed to a target that is provided on + // replay, and it handles the target proxy's instantiation with the provided target. + class LazyProxyData { + public: + LazyProxyData(const Caps*, SkISize dimensions, const TextureInfo&); + ~LazyProxyData(); + + TextureProxy* lazyProxy(); + sk_sp refLazyProxy(); + + bool lazyInstantiate(ResourceProvider*, sk_sp); + + private: + sk_sp fTarget; + sk_sp fTargetProxy; + }; + + struct ProxyHash { + std::size_t operator()(const sk_sp& proxy) const; + }; + + Recording(uint32_t uniqueID, + uint32_t recorderID, + std::unique_ptr targetProxyData, + skia_private::TArray>&& finishedProcs); + + void addResourceRef(sk_sp); + + // Used to verify ordering if recorder ID is not SK_InvalidGenID + uint32_t fUniqueID; + uint32_t fRecorderID; + + // This is held by a pointer instead of being inline to allow TaskList to be forward declared. + std::unique_ptr fRootTaskList; + // We don't always take refs to all resources used by specific Tasks (e.g. a common buffer used + // for uploads). Instead we'll just hold onto one ref for those Resources outside the Tasks. + // Those refs are stored in the array here and will eventually be passed onto a CommandBuffer + // when the Recording adds its commands. + std::vector> fExtraResourceRefs; + + std::unordered_set, ProxyHash> fNonVolatileLazyProxies; + std::unordered_set, ProxyHash> fVolatileLazyProxies; + + std::unique_ptr fTargetProxyData; + + skia_private::TArray> fFinishedProcs; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_Recording_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/Surface.h b/vendor/artifacts/skia/include/gpu/graphite/Surface.h new file mode 100644 index 000000000..a8da7c617 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/Surface.h @@ -0,0 +1,121 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_Surface_DEFINED +#define skgpu_graphite_Surface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSurface.h" +#include "include/gpu/GpuTypes.h" + +#include + +class SkImage; +struct SkImageInfo; + +namespace skgpu::graphite { +class BackendTexture; +class Recorder; +} // namespace skgpu::graphite + +namespace SkSurfaces { +using ReleaseContext = void*; +using TextureReleaseProc = void (*)(ReleaseContext); + +/** + * The 'AsImage' and 'AsImageCopy' API/entry points are currently only available for + * Graphite. + * + * In this API, SkSurface no longer supports copy-on-write behavior. Instead, when creating + * an image for a surface, the client must explicitly indicate if a copy should be made. + * In both of the below calls the resource backing the surface will never change. + * + * The 'AsImage' entry point has some major ramifications for the mutability of the + * returned SkImage. Since the originating surface and the returned image share the + * same backing, care must be taken by the client to ensure that the contents of the image + * reflect the desired contents when it is consumed by the gpu. + * Note: if the backing GPU buffer isn't textureable this method will return null. Graphite + * will not attempt to make a copy. + * Note: For 'AsImage', the mipmapping of the image will match that of the source surface. + * + * The 'AsImageCopy' entry point allows subsetting and the addition of mipmaps (since + * a copy is already being made). + * + * In Graphite, the legacy API call (i.e., makeImageSnapshot) will just always make a copy. + */ +SK_API sk_sp AsImage(sk_sp); +SK_API sk_sp AsImageCopy(sk_sp, + const SkIRect* subset = nullptr, + skgpu::Mipmapped = skgpu::Mipmapped::kNo); + +/** + * In Graphite, while clients hold a ref on an SkSurface, the backing gpu object does _not_ + * count against the budget. Once an SkSurface is freed, the backing gpu object may or may + * not become a scratch (i.e., reusable) resource but, if it does, it will be counted against + * the budget. + */ +SK_API sk_sp RenderTarget(skgpu::graphite::Recorder*, + const SkImageInfo& imageInfo, + skgpu::Mipmapped = skgpu::Mipmapped::kNo, + const SkSurfaceProps* surfaceProps = nullptr, + std::string_view label = {}); + +/** + * Wraps a GPU-backed texture in an SkSurface. Depending on the backend gpu API, the caller may + * be required to ensure the texture is valid for the lifetime of the returned SkSurface. The + * required lifetimes for the specific apis are: + * Metal: Skia will call retain on the underlying MTLTexture so the caller can drop it once + * this call returns. + * + * SkSurface is returned if all the parameters are valid. The backendTexture is valid if its + * format agrees with colorSpace and recorder; for instance, if backendTexture has an sRGB + * configuration, then the recorder must support sRGB, and colorSpace must be present. Further, + * backendTexture's width and height must not exceed the recorder's capabilities, and the + * recorder must be able to support the back-end texture. + * + * DEPRECATED: Use WrapBackendTexture that does not take a `colorType`. + */ +SK_API sk_sp WrapBackendTexture(skgpu::graphite::Recorder*, + const skgpu::graphite::BackendTexture&, + SkColorType colorType, + sk_sp colorSpace, + const SkSurfaceProps* props, + TextureReleaseProc = nullptr, + ReleaseContext = nullptr, + std::string_view label = {}); +/** + * Wraps a GPU-backed texture in an SkSurface. Depending on the backend gpu API, the caller may + * be required to ensure the texture is valid for the lifetime of the returned SkSurface. The + * required lifetimes for the specific apis are: + * Metal: Skia will call retain on the underlying MTLTexture so the caller can drop it once + * this call returns. + * + * SkSurface is returned if all the parameters are valid. The backendTexture is valid if its + * format and dimensions are supported by the context that created the recorder. The color type + * reported by the SkSurface's image info is inferred from backend texture's format, matching as + * closely as possible when a texture format is not representable exactly as an SkColorType. This + * is fine as the SkColorType represents the data layout were the texture to be read to CPU memory. + * + * For single-channel texture formats, the alpha-only SkColorType is selected as that is more + * consistently defined for data types. The implication of this is that the alpha channel output + * from fragment shading will be what's stored in the texture, regardless of whether its format was + * A or R. + * + * For other formats and color types, the ambiguities between BGR and RGB channel order are + * irrelevant for rendering and sampling on the GPU. Those swizzles can reliably be handled by the + * hardware and there's no semantic change for the related SkColorTypes. + */ +SK_API sk_sp WrapBackendTexture(skgpu::graphite::Recorder*, + const skgpu::graphite::BackendTexture&, + sk_sp colorSpace, + const SkSurfaceProps* props, + TextureReleaseProc = nullptr, + ReleaseContext = nullptr, + std::string_view label = {}); +} // namespace SkSurfaces + +#endif // skgpu_graphite_Surface_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/TextureInfo.h b/vendor/artifacts/skia/include/gpu/graphite/TextureInfo.h new file mode 100644 index 000000000..916176f12 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/TextureInfo.h @@ -0,0 +1,133 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_TextureInfo_DEFINED +#define skgpu_graphite_TextureInfo_DEFINED + +#include "include/core/SkString.h" +#include "include/gpu/graphite/GraphiteTypes.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAnySubclass.h" + +struct SkISize; + +namespace skgpu::graphite { + +enum class TextureFormat : uint8_t; + +/** + * TextureInfo is a backend-agnostic wrapper around the properties of a texture, sans dimensions. + * It is designed this way to be compilable w/o bringing in a specific backend's build files, and + * without requiring heap allocations of virtual types. + */ +class SK_API TextureInfo { +private: + class Data; + friend class MtlTextureInfo; + friend class DawnTextureInfo; + friend class VulkanTextureInfo; + + // Size is the largest of the Data subclasses assuming a 64-bit compiler. + inline constexpr static size_t kMaxSubclassSize = 112; + using AnyTextureInfoData = SkAnySubclass; + + // Base properties for all backend-specific properties. Clients managing textures directly + // should use the public subclasses of Data directly, e.g. MtlTextureInfo/DawnTextureInfo. + // + // Each backend subclass must expose to TextureInfo[Priv]: + // static constexpr BackendApi kBackend; + // Protected isProtected() const; + // TextureFormat viewFormat() const; + class Data { + public: + virtual ~Data() = default; + + Data(SampleCount sampleCount, skgpu::Mipmapped mipmapped) + : fSampleCount(sampleCount) + , fMipmapped(mipmapped) {} + + Data() = default; + Data(const Data&) = default; + + Data& operator=(const Data&) = default; + + // NOTE: These fields are accessible via the backend-specific subclasses. + SampleCount fSampleCount = SampleCount::k1; + Mipmapped fMipmapped = Mipmapped::kNo; + + private: + friend class TextureInfo; + friend class TextureInfoPriv; + + virtual SkString toBackendString() const = 0; + + virtual void copyTo(AnyTextureInfoData&) const = 0; + // Passed in TextureInfo will have data of the same backend type and subclass, and + // base properties of Data have already been checked for equality/compatibility. + virtual bool isCompatible(const TextureInfo& that, bool requireExact) const = 0; + }; + +public: + TextureInfo() = default; + ~TextureInfo() = default; + + TextureInfo(const TextureInfo&); + TextureInfo& operator=(const TextureInfo&); + + bool operator==(const TextureInfo& that) const { + return this->isCompatible(that, /*requireExact=*/true); + } + bool operator!=(const TextureInfo& that) const { return !(*this == that); } + + bool isValid() const { return fData.has_value(); } + BackendApi backend() const { + SkASSERT(fData.has_value() || fBackend == BackendApi::kUnsupported); + return fBackend; + } + + Protected isProtected() const { return fProtected; } + SampleCount sampleCount() const { + return fData.has_value() ? fData->fSampleCount : SampleCount::k1; + } + Mipmapped mipmapped() const { + return fData.has_value() ? fData->fMipmapped : Mipmapped::kNo; + } + + // Return true if `that` describes a texture that is compatible with this info and can validly + // be used to fulfill a promise image that was created with this TextureInfo. + bool canBeFulfilledBy(const TextureInfo& that) const { + return this->isCompatible(that, /*requireExact=*/false); + } + + // Return a string containing the full description of this TextureInfo. + SkString toString() const; + +private: + friend class TextureInfoPriv; + + template , bool> = true> + explicit TextureInfo(const BackendTextureData& data) + : fBackend(BackendTextureData::kBackend) + , fViewFormat(data.viewFormat()) + , fProtected(data.isProtected()) { + fData.emplace(data); + } + + bool isCompatible(const TextureInfo& that, bool requireExact) const; + + skgpu::BackendApi fBackend = BackendApi::kUnsupported; + AnyTextureInfoData fData; + + // Derived properties from the backend data, cached to avoid a virtual function call + TextureFormat fViewFormat; + Protected fProtected = Protected::kNo; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_TextureInfo_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/YUVABackendTextures.h b/vendor/artifacts/skia/include/gpu/graphite/YUVABackendTextures.h new file mode 100644 index 000000000..f6d3cceb9 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/YUVABackendTextures.h @@ -0,0 +1,148 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_YUVABackendTextures_DEFINED +#define skgpu_graphite_YUVABackendTextures_DEFINED + +#include "include/core/SkSpan.h" +#include "include/core/SkYUVAInfo.h" +#include "include/gpu/graphite/BackendTexture.h" + +#include + +namespace skgpu::graphite { +class Recorder; + +/** + * A description of a set of BackendTextures that hold the planar data described by a SkYUVAInfo. + */ +class SK_API YUVABackendTextureInfo { +public: + static constexpr auto kMaxPlanes = SkYUVAInfo::kMaxPlanes; + + /** Default YUVABackendTextureInfo is invalid. */ + YUVABackendTextureInfo() = default; + YUVABackendTextureInfo(const YUVABackendTextureInfo&) = default; + YUVABackendTextureInfo& operator=(const YUVABackendTextureInfo&) = default; + + /** + * Initializes a YUVABackendTextureInfo to describe a set of textures that can store the + * planes indicated by the SkYUVAInfo. The texture dimensions are taken from the SkYUVAInfo's + * plane dimensions. All the described textures share a common origin. The planar image this + * describes will be mip mapped if all the textures are individually mip mapped as indicated + * by Mipmapped. This will produce an invalid result (return false from isValid()) if the + * passed formats' channels don't agree with SkYUVAInfo. + */ + YUVABackendTextureInfo(const SkYUVAInfo&, + SkSpan, + Mipmapped); + // DEPRECATED: No more need for a Recorder to construct YUVABackendTextureInfo + YUVABackendTextureInfo(Recorder*, + const SkYUVAInfo& yuvaInfo, + SkSpan textures, + Mipmapped mipmapped) + : YUVABackendTextureInfo(yuvaInfo, textures, mipmapped) {} + + bool operator==(const YUVABackendTextureInfo&) const; + bool operator!=(const YUVABackendTextureInfo& that) const { return !(*this == that); } + + /** TextureInfo for the ith plane, or invalid if i >= numPlanes() */ + const TextureInfo& planeTextureInfo(int i) const { + SkASSERT(i >= 0); + return fPlaneTextureInfos[static_cast(i)]; + } + + const SkYUVAInfo& yuvaInfo() const { return fYUVAInfo; } + + SkYUVColorSpace yuvColorSpace() const { return fYUVAInfo.yuvColorSpace(); } + + Mipmapped mipmapped() const { return fMipmapped; } + + /** The number of planes, 0 if this YUVABackendTextureInfo is invalid. */ + int numPlanes() const { return fYUVAInfo.numPlanes(); } + + /** + * Returns true if this has been configured with a valid SkYUVAInfo with compatible texture + * formats. + */ + bool isValid() const { return fYUVAInfo.isValid(); } + + /** + * Computes a YUVALocations representation of the planar layout. The result is guaranteed to be + * valid if this->isValid(). + */ + SkYUVAInfo::YUVALocations toYUVALocations() const; + +private: + SkYUVAInfo fYUVAInfo; + std::array fPlaneTextureInfos; + std::array fPlaneChannelMasks; + Mipmapped fMipmapped = Mipmapped::kNo; +}; + +/** + * A set of BackendTextures that hold the planar data for an image described a SkYUVAInfo. + */ +class SK_API YUVABackendTextures { +public: + static constexpr auto kMaxPlanes = SkYUVAInfo::kMaxPlanes; + + YUVABackendTextures() = default; + YUVABackendTextures(const YUVABackendTextures&) = delete; + YUVABackendTextures& operator=(const YUVABackendTextures&) = delete; + + /** + * Initializes a YUVABackendTextures object from a set of textures that store the planes + * indicated by the SkYUVAInfo. This will produce an invalid result (return false from + * isValid()) if the passed texture formats' channels don't agree with SkYUVAInfo. + */ + YUVABackendTextures(const SkYUVAInfo&, + SkSpan); + // DEPRECATED: No more need for a Recorder to construct YUVABackendTextureInfo + YUVABackendTextures(Recorder*, + const SkYUVAInfo& yuvaInfo, + SkSpan textures) + : YUVABackendTextures(yuvaInfo, textures) {} + + SkSpan planeTextures() const { + return SkSpan(fPlaneTextures); + } + + /** BackendTexture for the ith plane, or invalid if i >= numPlanes() */ + BackendTexture planeTexture(int i) const { + SkASSERT(i >= 0); + return fPlaneTextures[static_cast(i)]; + } + + const SkYUVAInfo& yuvaInfo() const { return fYUVAInfo; } + + SkYUVColorSpace yuvColorSpace() const { return fYUVAInfo.yuvColorSpace(); } + + /** The number of planes, 0 if this YUVABackendTextureInfo is invalid. */ + int numPlanes() const { return fYUVAInfo.numPlanes(); } + + /** + * Returns true if this has been configured with a valid SkYUVAInfo with compatible texture + * formats. + */ + bool isValid() const { return fYUVAInfo.isValid(); } + + /** + * Computes a YUVALocations representation of the planar layout. The result is guaranteed to be + * valid if this->isValid(). + */ + SkYUVAInfo::YUVALocations toYUVALocations() const; + +private: + SkYUVAInfo fYUVAInfo; + std::array fPlaneTextures; + std::array fPlaneChannelMasks; +}; + +} // End of namespace skgpu::graphite + +#endif // skgpu_graphite_YUVABackendTextures_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/dawn/BUILD.bazel b/vendor/artifacts/skia/include/gpu/graphite/dawn/BUILD.bazel new file mode 100644 index 000000000..97189e586 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/dawn/BUILD.bazel @@ -0,0 +1,18 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "public_hdrs", + srcs = [ + "DawnBackendContext.h", + "DawnGraphiteTypes.h", + "DawnTypes.h", + "DawnUtils.h", + ], + visibility = ["//src/gpu/graphite/dawn:__pkg__"], +) diff --git a/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnBackendContext.h b/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnBackendContext.h new file mode 100644 index 000000000..659fcd07c --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnBackendContext.h @@ -0,0 +1,77 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_DawnBackendContext_DEFINED +#define skgpu_graphite_DawnBackendContext_DEFINED + +#include "include/core/SkTypes.h" +#include "webgpu/webgpu_cpp.h" // NO_G3_REWRITE + +#include + +namespace skgpu::graphite { + +class Context; +struct ContextOptions; + +/** + * WebGPU needs to allow the main thread loop to run to detect GPU progress. Dawn native has a + * function wgpu::Instance::ProcessEvents, not (currently) present in WebGPU, that can be used to + * detect GPU progress. + * + * When compiling using Emscripten/WASM the -s ASYNCIFY option can be used to yield. E.g.: + * + * EM_ASYNC_JS(void, asyncSleep, (), { + * await new Promise((resolve, _) = > { + * setTimeout(resolve, 0); + * }) + * }); + * + * WebGPUTickFunction(wgpu::Device&) { asyncSleep(); } + * + * If no DawnTickFunction is provided then the graphite::Context will be "non-yielding". This + * implies the following restrictions on the Context: + * + * 1) SyncToCpu::kYes is disallowed as a parameter to Context::submit. + * 2) The client must guarantee that GPU work has completed before destroying Context as Context + * cannot await the work completion in its destructor. Context reports whether it is awaiting + * GPU work completion via Context::hasUnfinishedGpuWork(). + * + * Using a non-yielding Context makes it possible to build and run Graphite/Dawn on WebGPU without + * -s ASYNCIFY. + */ +using DawnTickFunction = void(const wgpu::Instance& device); + +#if !defined(__EMSCRIPTEN__) +SK_API inline void DawnNativeProcessEventsFunction(const wgpu::Instance& instance) { + instance.ProcessEvents(); +} +#endif + +// The DawnBackendContext contains all of the base Dawn objects needed by the graphite Dawn +// backend. The client will create this object and pass it into the Context::MakeDawn factory call +// when setting up Skia. +struct SK_API DawnBackendContext { + wgpu::Instance fInstance; + wgpu::Device fDevice; + wgpu::Queue fQueue; + // See comment on DawnTickFunction. + DawnTickFunction* fTick = +#if defined(__EMSCRIPTEN__) + nullptr; +#else + DawnNativeProcessEventsFunction; +#endif +}; + +namespace ContextFactory { +SK_API std::unique_ptr MakeDawn(const DawnBackendContext&, const ContextOptions&); +} // namespace ContextFactory + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_DawnBackendContext_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnGraphiteTypes.h b/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnGraphiteTypes.h new file mode 100644 index 000000000..bd75f26fa --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnGraphiteTypes.h @@ -0,0 +1,163 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_DawnTypes_DEFINED +#define skgpu_graphite_DawnTypes_DEFINED + +#include "include/core/SkSize.h" +#include "include/gpu/graphite/GraphiteTypes.h" +#include "include/gpu/graphite/TextureInfo.h" +#include "include/private/base/SkAPI.h" + +#include "webgpu/webgpu_cpp.h" // NO_G3_REWRITE + +class SkStream; +class SkWStream; + +namespace skgpu::graphite { +class BackendTexture; + +class SK_API DawnTextureInfo final : public TextureInfo::Data { +public: + // wgpu::TextureDescriptor properties + wgpu::TextureFormat fFormat = wgpu::TextureFormat::Undefined; + // `fViewFormat` for multiplanar formats corresponds to the plane TextureView's format. + wgpu::TextureFormat fViewFormat = wgpu::TextureFormat::Undefined; + wgpu::TextureUsage fUsage = wgpu::TextureUsage::None; + // TODO(b/308944094): Migrate aspect information to BackendTextureViews. + wgpu::TextureAspect fAspect = wgpu::TextureAspect::All; + uint32_t fSlice = 0; + +#if !defined(__EMSCRIPTEN__) + // The descriptor of the YCbCr info (if any) for this texture. Dawn's YCbCr + // sampling will be used for this texture if this info is set. Setting the + // info is supported only on Android and only if using Vulkan as the + // underlying GPU driver. + wgpu::YCbCrVkDescriptor fYcbcrVkDescriptor = {}; +#endif + + wgpu::TextureFormat getViewFormat() const { + return fViewFormat != wgpu::TextureFormat::Undefined ? fViewFormat : fFormat; + } + + DawnTextureInfo() = default; + + explicit DawnTextureInfo(WGPUTexture texture); + + DawnTextureInfo(SampleCount sampleCount, + Mipmapped mipmapped, + wgpu::TextureFormat format, + wgpu::TextureUsage usage, + wgpu::TextureAspect aspect) + : DawnTextureInfo(sampleCount, + mipmapped, + /*format=*/format, + /*viewFormat=*/format, + usage, + aspect, + /*slice=*/0) {} + + DawnTextureInfo(SampleCount sampleCount, + Mipmapped mipmapped, + wgpu::TextureFormat format, + wgpu::TextureFormat viewFormat, + wgpu::TextureUsage usage, + wgpu::TextureAspect aspect, + uint32_t slice) + : Data(sampleCount, mipmapped) + , fFormat(format) + , fViewFormat(viewFormat) + , fUsage(usage) + , fAspect(aspect) + , fSlice(slice) {} + +#if !defined(__EMSCRIPTEN__) + DawnTextureInfo(SampleCount sampleCount, + Mipmapped mipmapped, + wgpu::TextureFormat format, + wgpu::TextureFormat viewFormat, + wgpu::TextureUsage usage, + wgpu::TextureAspect aspect, + uint32_t slice, + wgpu::YCbCrVkDescriptor ycbcrVkDescriptor) + : Data(sampleCount, mipmapped) + , fFormat(format) + , fViewFormat(viewFormat) + , fUsage(usage) + , fAspect(aspect) + , fSlice(slice) + , fYcbcrVkDescriptor(ycbcrVkDescriptor) {} +#endif + +private: + friend class TextureInfo; + friend class TextureInfoPriv; + + // Non-virtual template API for TextureInfo::Data accessed directly when backend type is known. + static constexpr skgpu::BackendApi kBackend = skgpu::BackendApi::kDawn; + + Protected isProtected() const { return Protected::kNo; } + TextureFormat viewFormat() const; + + // Virtual API when the specific backend type is not available. + SkString toBackendString() const override; + + void copyTo(TextureInfo::AnyTextureInfoData& dstData) const override { + dstData.emplace(*this); + } + bool isCompatible(const TextureInfo& that, bool requireExact) const override; +}; + +namespace TextureInfos { +SK_API TextureInfo MakeDawn(const DawnTextureInfo& dawnInfo); + +SK_API bool GetDawnTextureInfo(const TextureInfo&, DawnTextureInfo*); +} // namespace TextureInfos + +namespace BackendTextures { +// Create a BackendTexture from a WGPUTexture. Texture info will be queried from the texture. +// +// This is the recommended way of specifying a BackendTexture for Dawn. See the note below on +// the constructor that takes a WGPUTextureView for a fuller explanation. +// +// The BackendTexture will not call retain or release on the passed in WGPUTexture. Thus, the +// client must keep the WGPUTexture valid until they are no longer using the BackendTexture. +// However, any SkImage or SkSurface that wraps the BackendTexture *will* retain and release +// the WGPUTexture. +SK_API BackendTexture MakeDawn(WGPUTexture); + +// Create a BackendTexture from a WGPUTexture. Texture planeDimensions, plane aspect and +// info have to be provided. This is intended to be used only when accessing a plane +// of a WGPUTexture. +// +// The BackendTexture will not call retain or release on the passed in WGPUTexture. Thus, the +// client must keep the WGPUTexture valid until they are no longer using the BackendTexture. +// However, any SkImage or SkSurface that wraps the BackendTexture *will* retain and release +// the WGPUTexture. +SK_API BackendTexture MakeDawn(SkISize planeDimensions, const DawnTextureInfo&, WGPUTexture); + +// Create a BackendTexture from a WGPUTextureView. Texture dimensions and +// info have to be provided. +// +// Using a WGPUTextureView rather than a WGPUTexture is less effecient for operations that +// require buffer transfers to or from the texture (e.g. methods on graphite::Context that read +// pixels or SkSurface::writePixels). In such cases an intermediate copy to or from a +// WGPUTexture is required. Thus, it is recommended to use this functionality only for cases +// where a WGPUTexture is unavailable, in particular when using wgpu::SwapChain. +// +// The BackendTexture will not call retain or release on the passed in WGPUTextureView. Thus, +// the client must keep the WGPUTextureView valid until they are no longer using the +// BackendTexture. However, any SkImage or SkSurface that wraps the BackendTexture *will* retain +// and release the WGPUTextureView. +SK_API BackendTexture MakeDawn(SkISize dimensions, + const DawnTextureInfo& info, + WGPUTextureView textureView); +} // namespace BackendTextures + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_DawnTypes_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnTypes.h b/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnTypes.h new file mode 100644 index 000000000..a6208e1e7 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnTypes.h @@ -0,0 +1,9 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +// DEPRECRATED: DawnTypes.h will be removed in the future, please include DawnGraphiteTypes.h +#include "include/gpu/graphite/dawn/DawnGraphiteTypes.h" diff --git a/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnUtils.h b/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnUtils.h new file mode 100644 index 000000000..1f58dc6d1 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/dawn/DawnUtils.h @@ -0,0 +1,9 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +// DEPRECRATED: DawnUtils.h will be removed in the future, please include DawnBackendContext.h +#include "include/gpu/graphite/dawn/DawnBackendContext.h" diff --git a/vendor/artifacts/skia/include/gpu/graphite/mtl/BUILD.bazel b/vendor/artifacts/skia/include/gpu/graphite/mtl/BUILD.bazel new file mode 100644 index 000000000..8ae9a31ec --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/mtl/BUILD.bazel @@ -0,0 +1,28 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "MtlBackendContext.h", + "MtlGraphiteTypes.h", + "MtlGraphiteTypesUtils.h", + "MtlGraphiteTypes_cpp.h", + "MtlGraphiteUtils.h", +] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = [ + "//src/gpu/graphite/mtl:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlBackendContext.h b/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlBackendContext.h new file mode 100644 index 000000000..9c1fb2d6d --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlBackendContext.h @@ -0,0 +1,34 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_MtlBackendContext_DEFINED +#define skgpu_graphite_MtlBackendContext_DEFINED + +#include "include/gpu/graphite/Context.h" +#include "include/ports/SkCFObject.h" +#include "include/private/base/SkAPI.h" + +#import +#include + +namespace skgpu::graphite { + +// The MtlBackendContext contains all of the base Metal objects needed by the graphite Metal +// backend. The client will create this object and pass it into the Context::MakeMetal factory call +// when setting up Skia. +struct SK_API MtlBackendContext { + sk_cfp fDevice; + sk_cfp fQueue; +}; + +namespace ContextFactory { +SK_API std::unique_ptr MakeMetal(const MtlBackendContext&, const ContextOptions&); +} // namespace ContextFactory + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_MtlBackendContext_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h b/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h new file mode 100644 index 000000000..0505add28 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypes.h @@ -0,0 +1,73 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_MtlGraphiteTypes_DEFINED +#define skgpu_graphite_MtlGraphiteTypes_DEFINED + +#if __OBJC__ // only works when compiled for Objective C + +#include "include/core/SkTypes.h" + +#include "include/gpu/graphite/GraphiteTypes.h" +#include "include/gpu/graphite/TextureInfo.h" +#include "include/gpu/graphite/mtl/MtlGraphiteTypes_cpp.h" +#include "include/private/base/SkAPI.h" + +#import +#import +#import + +class SkStream; +class SkWStream; + +namespace skgpu::graphite { + +class SK_API MtlTextureInfo final : public TextureInfo::Data { +public: + MTLPixelFormat fFormat = MTLPixelFormatInvalid; + MTLTextureUsage fUsage = MTLTextureUsageUnknown; + MTLStorageMode fStorageMode = MTLStorageModeShared; + bool fFramebufferOnly = false; + + MtlTextureInfo() = default; + explicit MtlTextureInfo(CFTypeRef mtlTexture); + MtlTextureInfo(SampleCount sampleCount, + skgpu::Mipmapped mipmapped, + MTLPixelFormat format, + MTLTextureUsage usage, + MTLStorageMode storageMode, + bool framebufferOnly) + : Data(sampleCount, mipmapped) + , fFormat(format) + , fUsage(usage) + , fStorageMode(storageMode) + , fFramebufferOnly(framebufferOnly) {} + +private: + friend class TextureInfo; + friend class TextureInfoPriv; + + // Non-virtual template API for TextureInfo::Data accessed directly when backend type is known. + static constexpr skgpu::BackendApi kBackend = skgpu::BackendApi::kMetal; + + Protected isProtected() const { return Protected::kNo; } + TextureFormat viewFormat() const; + + // Virtual API when the specific backend type is not available. + SkString toBackendString() const override; + + void copyTo(TextureInfo::AnyTextureInfoData& dstData) const override { + dstData.emplace(*this); + } + bool isCompatible(const TextureInfo& that, bool requireExact) const override; +}; + +} // namespace skgpu::graphite + +#endif // __OBJC__ + +#endif // skgpu_graphite_MtlGraphiteTypes_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypesUtils.h b/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypesUtils.h new file mode 100644 index 000000000..5e3bb19b2 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypesUtils.h @@ -0,0 +1,10 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +// DEPRECRATED: MtlGraphiteTypesUtils.h will be removed in the future, please include +// MtlGraphiteTypes_cpp.h +#include "include/gpu/graphite/mtl/MtlGraphiteTypes_cpp.h" diff --git a/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypes_cpp.h b/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypes_cpp.h new file mode 100644 index 000000000..d7ac5f553 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteTypes_cpp.h @@ -0,0 +1,50 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_MtlGraphiteTypesUtils_DEFINED +#define skgpu_graphite_MtlGraphiteTypesUtils_DEFINED + +#include "include/core/SkTypes.h" + +#include "include/gpu/graphite/BackendTexture.h" +#include "include/gpu/graphite/TextureInfo.h" +#include "include/private/base/SkAPI.h" + +#import + +namespace skgpu::graphite { + +// MtlTextureInfo requires compiling with Objective-C, so this header is split to allow invoking +// the various backend wrapping APIs from a C++-only compilation unit. +class SK_API MtlTextureInfo; + +namespace TextureInfos { +SK_API TextureInfo MakeMetal(const MtlTextureInfo&); +SK_API TextureInfo MakeMetal(CFTypeRef mtlTexture); + +SK_API bool GetMtlTextureInfo(const TextureInfo&, MtlTextureInfo*); +} // namespace TextureInfos + +namespace BackendTextures { +// The BackendTexture will not call retain or release on the passed in CFTypeRef. Thus the +// client must keep the CFTypeRef valid until they are no longer using the BackendTexture. +SK_API BackendTexture MakeMetal(SkISize dimensions, CFTypeRef mtlTexture); + +SK_API CFTypeRef GetMtlTexture(const BackendTexture&); +} // namespace BackendTextures + +namespace BackendSemaphores { +// TODO(b/286088355) Determine creator's responsibility for setting refcnt. +SK_API BackendSemaphore MakeMetal(CFTypeRef mtlEvent, uint64_t value); + +SK_API CFTypeRef GetMtlEvent(const BackendSemaphore&); +SK_API uint64_t GetMtlValue(const BackendSemaphore&); +} // namespace BackendSemaphores + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_MtlGraphiteTypesUtils_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h b/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h new file mode 100644 index 000000000..1ce74f8b5 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/mtl/MtlGraphiteUtils.h @@ -0,0 +1,9 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +// DEPRECRATED: MtlGraphiteUtils.h will be removed in the future, please include MtlBackendContext.h +#include "include/gpu/graphite/mtl/MtlBackendContext.h" diff --git a/vendor/artifacts/skia/include/gpu/graphite/precompile/BUILD.bazel b/vendor/artifacts/skia/include/gpu/graphite/precompile/BUILD.bazel new file mode 100644 index 000000000..7b0cb4d07 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/precompile/BUILD.bazel @@ -0,0 +1,30 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "PaintOptions.h", + "Precompile.h", + "PrecompileBase.h", + "PrecompileBlender.h", + "PrecompileColorFilter.h", + "PrecompileImageFilter.h", + "PrecompileMaskFilter.h", + "PrecompileRuntimeEffect.h", + "PrecompileShader.h", +] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = ["//src/gpu/graphite/precompile:__pkg__"], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/graphite/precompile/PaintOptions.h b/vendor/artifacts/skia/include/gpu/graphite/precompile/PaintOptions.h new file mode 100644 index 000000000..f3e8ba287 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/precompile/PaintOptions.h @@ -0,0 +1,211 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_precompile_PaintOptions_DEFINED +#define skgpu_graphite_precompile_PaintOptions_DEFINED + +#include "include/core/SkBlendMode.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" +#include "include/private/base/SkTArray.h" +#include "include/private/base/SkTDArray.h" + +#include + +namespace skgpu::graphite { + +class PrecompileBlender; +class PrecompileColorFilter; +class PrecompileImageFilter; +class PrecompileMaskFilter; +class PrecompileShader; + +enum class Coverage; +enum DrawTypeFlags : uint16_t; +enum class PrecompileImageFilterFlags : uint32_t; +enum class TextureFormat : uint8_t; + +class KeyContext; +class PaintOptionsPriv; +class PaintParamsKeyBuilder; +struct RenderPassDesc; +class UniquePaintParamsID; + +/** \class PaintOptions + This is the Precompilation analog to SkPaint. It encapsulates a set of options for each + field of the SkPaint (e.g., colorFilters, imageFilters, etc). Many of the specific details + of an SkPaint that are irrelevant to the final compiled Pipelines are abstracted away + (e.g., the SkPaint's color field). + + How Precompilation works in practice is a PaintOptions object is created and a set of options + for each slot (e.g., shader, blender) are added. When passed to the Precompile() function, + all the combinations specified by the PaintOptions will be created and precompiled. + + To be concrete, if a PaintOptions object had two shader options and two blender options, + four combinations would be precompiled. +*/ +class SK_API PaintOptions { +public: + /** Constructs a PaintOptions object with default values. It is equivalent to a default + * initialized SkPaint. + + @return default initialized PaintOptions + */ + PaintOptions(); + PaintOptions(const PaintOptions&); + ~PaintOptions(); + PaintOptions& operator=(const PaintOptions&); + + /** Sets the shader options used when generating precompilation combinations. + + This corresponds to SkPaint's setShader() method + + @param shaders The options used for shading when generating precompilation combinations. + */ + void setShaders(SkSpan> shaders); + SkSpan> getShaders() const { + return SkSpan>(fShaderOptions); + } + + /** Sets the image filter options used when generating precompilation combinations. + + This corresponds to SkPaint's setImageFilter() method + + @param imageFilters The options used for image filtering when generating precompilation + combinations. + */ + void setImageFilters(SkSpan> imageFilters); + SkSpan> getImageFilters() const { + return SkSpan>(fImageFilterOptions); + } + + /** Sets the mask filter options used when generating precompilation combinations. + + This corresponds to SkPaint's setMaskFilter() method + + @param maskFilters The options used for mask filtering when generating precompilation + combinations. + */ + void setMaskFilters(SkSpan> maskFilters); + SkSpan> getMaskFilters() const { + return SkSpan>(fMaskFilterOptions); + } + + /** Sets the color filter options used when generating precompilation combinations. + + This corresponds to SkPaint's setColorFilter() method + + @param colorFilters The options used for color filtering when generating precompilation + combinations. + */ + void setColorFilters(SkSpan> colorFilters); + SkSpan> getColorFilters() const { + return SkSpan>(fColorFilterOptions); + } + + /** Sets the blend mode options used when generating precompilation combinations. + + This corresponds to SkPaint's setBlendMode() method + + @param blendModes The options used for blending when generating precompilation + combinations. + */ + void setBlendModes(SkSpan blendModes); + SkSpan getBlendModes() const { + return SkSpan(fBlendModeOptions.data(), fBlendModeOptions.size()); + } + void addBlendMode(SkBlendMode bm) { + fBlendModeOptions.push_back(bm); + } + + /** Sets the blender options used when generating precompilation combinations. + + This corresponds to SkPaint's setBlender() method + + @param blenders The options used for blending when generating precompilation combinations. + */ + void setBlenders(SkSpan> blenders); + SkSpan> getBlenders() const { + return SkSpan>(fBlenderOptions); + } + + /** Sets the dither setting used when generating precompilation combinations + + This corresponds to SkPaint's setDither() method + + @param dither the dither setting used when generating precompilation combinations. + */ + void setDither(bool dither) { fDither = dither; } + bool isDither() const { return fDither; } + + void setPaintColorIsOpaque(bool paintColorIsOpaque) { + fPaintColorIsOpaque = paintColorIsOpaque; + } + bool isPaintColorOpaque() const { return fPaintColorIsOpaque; } + + // Provides access to functions that aren't part of the public API. + PaintOptionsPriv priv(); + const PaintOptionsPriv priv() const; // NOLINT(readability-const-return-type) + +private: + friend class PaintOptionsPriv; + friend class PrecompileImageFilter; // for ProcessCombination access + friend class PrecompileMaskFilter; // for ProcessCombination access + + void addColorFilter(sk_sp cf); + + void setClipShaders(SkSpan> clipShaders); + + // In the main API this is specified via the SkBlender parameter to drawVertices + void setPrimitiveBlendMode(SkBlendMode bm) { fPrimitiveBlendMode = bm; } + void setSkipColorXform(bool skipColorXform) { fSkipColorXform = skipColorXform; } + + int numShaderCombinations() const; + int numColorFilterCombinations() const; + int numBlendCombinations() const; + int numClipShaderCombinations() const; + + int numCombinations() const; + // 'desiredCombination' must be less than the result of the numCombinations call + void createKey(const KeyContext&, + TextureFormat, + int desiredCombination, + bool addPrimitiveBlender, + bool addAnalyticClip, + Coverage coverage) const; + + typedef std::function ProcessCombination; + + void buildCombinations(const KeyContext&, + DrawTypeFlags, + bool addPrimitiveBlender, + Coverage, + const RenderPassDesc&, + const ProcessCombination&) const; + + skia_private::TArray> fShaderOptions; + skia_private::TArray> fColorFilterOptions; + skia_private::TArray fBlendModeOptions; + skia_private::TArray> fBlenderOptions; + skia_private::TArray> fClipShaderOptions; + + skia_private::TArray> fImageFilterOptions; + skia_private::TArray> fMaskFilterOptions; + + SkBlendMode fPrimitiveBlendMode = SkBlendMode::kSrcOver; + bool fSkipColorXform = false; + bool fDither = false; + bool fPaintColorIsOpaque = true; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_precompile_PaintOptions_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/precompile/Precompile.h b/vendor/artifacts/skia/include/gpu/graphite/precompile/Precompile.h new file mode 100644 index 000000000..7331691ab --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/precompile/Precompile.h @@ -0,0 +1,59 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_precompile_Precompile_DEFINED +#define skgpu_graphite_precompile_Precompile_DEFINED + +#include "include/core/SkColorSpace.h" +#include "include/core/SkColorType.h" +#include "include/core/SkSpan.h" +#include "include/gpu/graphite/GraphiteTypes.h" + +namespace skgpu::graphite { + +class PaintOptions; +class PrecompileContext; + +/** + * Describes the required properties of a RenderPass that will be combined with the + * other portions of the Precompilation API (i.e., paintOptions and drawTypes) to yield + * a pipeline. + */ +struct SK_API RenderPassProperties { + bool operator==(const RenderPassProperties& other) const { + return fDSFlags == other.fDSFlags && + fDstCT == other.fDstCT && + fRequiresMSAA == other.fRequiresMSAA && + SkColorSpace::Equals(fDstCS.get(), other.fDstCS.get()); + } + bool operator!= (const RenderPassProperties& other) const { return !(*this == other); } + + DepthStencilFlags fDSFlags = DepthStencilFlags::kNone; + SkColorType fDstCT = kRGBA_8888_SkColorType; + sk_sp fDstCS = nullptr; + bool fRequiresMSAA = false; +}; + +/** + * Precompilation allows clients to create pipelines ahead of time based on what they expect + * to draw. This can reduce performance hitches, due to inline compilation, during the actual + * drawing. Graphite will always be able to perform an inline compilation if some SkPaint + * combination was omitted from precompilation. + * + * @param precompileContext thread-safe helper holding required portions of the Context + * @param paintOptions captures a set of SkPaints that will be drawn + * @param drawTypes communicates which primitives those paints will be drawn with + * @param renderPassProperties describes the RenderPasses needed for the desired Pipelines + */ +void SK_API Precompile(PrecompileContext* precompileContext, + const PaintOptions& paintOptions, + DrawTypeFlags drawTypes, + SkSpan renderPassProperties); + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_precompile_Precompile_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileBase.h b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileBase.h new file mode 100644 index 000000000..e8e1412d3 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileBase.h @@ -0,0 +1,76 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_precompile_PrecompileBase_DEFINED +#define skgpu_graphite_precompile_PrecompileBase_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" + +namespace skgpu::graphite { + +class KeyContext; +class PaintParamsKeyBuilder; +class PrecompileBasePriv; + +/** \class PrecompileBase + This is the base class for all the objects that can be attached to PaintOptions. +*/ +class SK_API PrecompileBase : public SkRefCnt { +public: + enum class Type { + kBlender, + kColorFilter, + kImageFilter, + kMaskFilter, + kShader, + }; + + Type type() const { return fType; } + + // Provides access to functions that aren't part of the public API. + PrecompileBasePriv priv(); + const PrecompileBasePriv priv() const; // NOLINT(readability-const-return-type) + +protected: + PrecompileBase(Type type) : fType(type) {} + + virtual int numIntrinsicCombinations() const { return 1; } + virtual int numChildCombinations() const { return 1; } + + /** This call returns the number of combinations generated from this object and its childen. + + @return number of precompilation combinations generated by this object + */ + int numCombinations() const { + return this->numIntrinsicCombinations() * this->numChildCombinations(); + } + + virtual void addToKey(const KeyContext&, int desiredCombination) const = 0; + + // This returns the desired option along with the child options. + template + static std::pair, int> SelectOption(SkSpan> options, + int desiredOption); + + // In general, derived classes should use AddToKey to select the desired child option from + // a span and then have it added to the key with its reduced/nested child option. + template + static void AddToKey(const KeyContext&, SkSpan> options, int desiredOption); + +private: + friend class PrecompileBasePriv; + + friend class PaintOptions; // for access to SelectOption + friend class PrecompileBlenderList; // "" + + Type fType; +}; + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_precompile_PrecompileBase_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileBlender.h b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileBlender.h new file mode 100644 index 000000000..328d650ab --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileBlender.h @@ -0,0 +1,56 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_precompile_PrecompileBlender_DEFINED +#define skgpu_graphite_precompile_PrecompileBlender_DEFINED + +#include "include/core/SkBlendMode.h" +#include "include/gpu/graphite/precompile/PrecompileBase.h" + +#include + +namespace skgpu::graphite { + +class PrecompileBlenderPriv; + +/** \class PrecompileBlender + This class corresponds to the SkBlender class in the main API. +*/ +class SK_API PrecompileBlender : public PrecompileBase { +public: + // Provides access to functions that aren't part of the public API. + PrecompileBlenderPriv priv(); + const PrecompileBlenderPriv priv() const; // NOLINT(readability-const-return-type) + +protected: + friend class PrecompileBlenderPriv; + + virtual std::optional asBlendMode() const { return {}; } + + PrecompileBlender() : PrecompileBase(Type::kBlender) {} + ~PrecompileBlender() override; +}; + +//-------------------------------------------------------------------------------------------------- +// This is the Precompile correlate to the SkBlenders namespace in the main API +namespace PrecompileBlenders { + + // This factory creates a Precompilation object that represents the Arithmetic SkBlender from + // the main API. Note that the actual Arithmetic parameters (i.e., k1, k2, k3 and k4) are + // abstracted away since they do not impact the generated shader. + SK_API sk_sp Arithmetic(); + + // This is the Precompilation correlate to the SkBlender::Mode factory in the main API. It + // creates an object that represents SkBlendMode-based blending. + SK_API sk_sp Mode(SkBlendMode); + +} // namespace PrecompileBlenders + + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_precompile_PrecompileBlender_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h new file mode 100644 index 000000000..97675b53a --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileColorFilter.h @@ -0,0 +1,95 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_precompile_PrecompileColorFilter_DEFINED +#define skgpu_graphite_precompile_PrecompileColorFilter_DEFINED + +#include "include/gpu/graphite/precompile/PrecompileBase.h" + +enum class SkBlendMode; + +namespace skgpu::graphite { + +class PrecompileColorFilterPriv; + +/** \class PrecompileColorFilter + This class corresponds to the SkColorFilter class in the main API. +*/ +class SK_API PrecompileColorFilter : public PrecompileBase { +public: + /** + * This is the Precompile correlate to SkColorFilter::makeComposed. + * + * The PrecompileColorFilters::Compose factory can be used to generate a set of color filters + * that would've been generated via multiple makeComposed calls. That is, rather than + * performing: + * sk_sp option1 = outer->makeComposed(colorFilter1); + * sk_sp option2 = outer->makeComposed(colorFilter2); + * one could call: + * sk_sp combinedOptions = Compose({ outer }, + * { colorFilter1, colorFilter2 }); + * With an alternative use case one could also use the Compose factory thusly: + * sk_sp combinedOptions = Compose({ outer1, outer2 }, + * { innerColorFilter }); + */ + sk_sp makeComposed(sk_sp inner) const; + + // Provides access to functions that aren't part of the public API. + PrecompileColorFilterPriv priv(); + const PrecompileColorFilterPriv priv() const; // NOLINT(readability-const-return-type) + +protected: + friend class PrecompileColorFilterPriv; + + PrecompileColorFilter() : PrecompileBase(Type::kColorFilter) {} + ~PrecompileColorFilter() override; + + virtual bool isAlphaUnchanged(int /*desiredCombination*/) const = 0; +}; + +//-------------------------------------------------------------------------------------------------- +// This is the Precompile correlate to the SkColorFilters namespace in the main API +namespace PrecompileColorFilters { + + // --- The next 9 entries match those in include/core/SkColorFilter.h + SK_API sk_sp Compose(SkSpan> outer, + SkSpan> inner); + + // This encompasses both variants of SkColorFilters::Blend + SK_API sk_sp Blend(SkSpan blendModes); + SK_API sk_sp Blend(); // Prefer the explicit blend mode variant + + // This encompasses both variants of SkColorFilters::Matrix + SK_API sk_sp Matrix(bool clamp=true); + + // This encompasses both variants of SkColorFilters::HSLAMatrix + SK_API sk_sp HSLAMatrix(); + + SK_API sk_sp LinearToSRGBGamma(); + SK_API sk_sp SRGBToLinearGamma(); + SK_API sk_sp Lerp(SkSpan> dstOptions, + SkSpan> srcOptions); + + // This encompases both the SkColorFilters::Table and TableARGB variants + SK_API sk_sp Table(); + + SK_API sk_sp Lighting(); + + // This matches the main API's factory in include/effects/SkHighContrastFilter.h + SK_API sk_sp HighContrast(); + + // This matches the main API's factory in include/effects/SkLumaColorFilter.h + SK_API sk_sp Luma(); + + // This matches the main API's factory in include/effects/SkOverdrawColorFilter.h + SK_API sk_sp Overdraw(); + +} // namespace PrecompileColorFilters + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_precompile_PrecompileColorFilter_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h new file mode 100644 index 000000000..1fc059755 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileImageFilter.h @@ -0,0 +1,116 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_precompile_PrecompileImageFilter_DEFINED +#define skgpu_graphite_precompile_PrecompileImageFilter_DEFINED + +#include "include/gpu/graphite/precompile/PrecompileBase.h" + +#include "include/core/SkBlendMode.h" +#include "include/gpu/graphite/precompile/PaintOptions.h" +#include "include/private/base/SkTemplates.h" + +namespace skgpu::graphite { + +class PrecompileBlender; +class PrecompileColorFilter; +class PrecompileImageFilterPriv; + +/** \class PrecompileImageFilter + This class corresponds to the SkImageFilter class in the main API. +*/ +class SK_API PrecompileImageFilter : public PrecompileBase { +public: + ~PrecompileImageFilter() override; + + // Provides access to functions that aren't part of the public API. + PrecompileImageFilterPriv priv(); + const PrecompileImageFilterPriv priv() const; // NOLINT(readability-const-return-type) + +protected: + PrecompileImageFilter(SkSpan> inputs); + +private: + friend class PaintOptions; // for createPipelines() access + friend class PrecompileImageFilterPriv; + + int countInputs() const { return fInputs.count(); } + + const PrecompileImageFilter* getInput(int index) const { + SkASSERT(index < this->countInputs()); + return fInputs[index].get(); + } + + virtual sk_sp isColorFilterNode() const { return nullptr; } + + sk_sp asAColorFilter() const; + + // The PrecompileImageFilter classes do not use the PrecompileBase::addToKey virtual since + // they, in general, do not themselves contribute to a given SkPaint/Pipeline but, rather, + // create separate SkPaints/Pipelines from whole cloth (in onCreatePipelines). + void addToKey(const KeyContext& /* keyContext */, int /* desiredCombination */) const final { + SkASSERT(false); + } + + virtual void onCreatePipelines(const KeyContext&, + const RenderPassDesc&, + const PaintOptions::ProcessCombination&) const = 0; + + void createPipelines(const KeyContext&, + const RenderPassDesc&, + const PaintOptions::ProcessCombination&); + + skia_private::AutoSTArray<2, sk_sp> fInputs; +}; + +//-------------------------------------------------------------------------------------------------- +// This is the Precompile correlate to the SkImageFilters class' factories in the main API +// +// Note: In order to make precompilation analysis more tractable we don't allow options for the +// internals of an PrecompileImageFilter nor in the structure of the DAG. +namespace PrecompileImageFilters { + + // This is the Precompile correlate to SkImageFilters::Arithmetic + SK_API sk_sp Arithmetic(sk_sp background, + sk_sp foreground); + + // This is the Precompile correlate to SkImageFilters::Blend(SkBlendMode, ...) + SK_API sk_sp Blend(SkBlendMode bm, + sk_sp background, + sk_sp foreground); + + // This is the Precompile correlate to SkImageFilters::Blend(sk_sp, ...) + SK_API sk_sp Blend(sk_sp blender, + sk_sp background, + sk_sp foreground); + + // This is the Precompile correlate to the two SkImageFilters::Blur factories + SK_API sk_sp Blur(sk_sp input); + + // This is the Precompile correlate to SkImageFilters::ColorFilter. + SK_API sk_sp ColorFilter(sk_sp colorFilter, + sk_sp input); + + // This is the Precompile correlate to SkImageFilters::DisplacementMap + SK_API sk_sp DisplacementMap(sk_sp input); + + // This is the Precompile correlate to all of SkImageFilters:: + // DistantLitDiffuse, PointLitDiffuse, SpotLitDiffuse + // DistantLitSpecular, PointLitSpecular, SpotLitSpecular + SK_API sk_sp Lighting(sk_sp input); + + // This is the Precompile correlate to SkImageFilters::MatrixConvolution + SK_API sk_sp MatrixConvolution(sk_sp input); + + // This is the Precompile correlate to SkImageFilters::Erode and SkImageFilters::Dilate + SK_API sk_sp Morphology(sk_sp input); + +} // namespace PrecompileImageFilters + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_precompile_PrecompileImageFilter_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h new file mode 100644 index 000000000..b6ca4776d --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileMaskFilter.h @@ -0,0 +1,49 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_precompile_PrecompileMaskFilter_DEFINED +#define skgpu_graphite_precompile_PrecompileMaskFilter_DEFINED + +#include "include/gpu/graphite/precompile/PrecompileBase.h" + +#include "include/gpu/graphite/precompile/PaintOptions.h" + +namespace skgpu::graphite { + +/** \class PrecompileMaskFilter + This class corresponds to the SkMaskFilter class in the main API. +*/ +class SK_API PrecompileMaskFilter : public PrecompileBase { +protected: + friend class PaintOptions; // for createPipelines() access + + PrecompileMaskFilter() : PrecompileBase(Type::kMaskFilter) {} + ~PrecompileMaskFilter() override; + + void addToKey(const KeyContext&, int desiredCombination) const final; + + virtual void createPipelines(const KeyContext&, + const PaintOptions&, + const RenderPassDesc&, + const PaintOptions::ProcessCombination&) const = 0; +}; + +//-------------------------------------------------------------------------------------------------- +// This is the Precompile correlate to the SkMaskFilter class' factories in the main API +namespace PrecompileMaskFilters { + + // This corresponds to the SkMaskFilter::MakeBlur factory in the main Skia API. + // The specific details of the blur have been elided since they don't impact the generated + // shader. + SK_API sk_sp Blur(); + +} // namespace PrecompileMaskFilters + +} // namespace skgpu::graphite + + +#endif // skgpu_graphite_precompile_PrecompileMaskFilter_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h new file mode 100644 index 000000000..22f7a8541 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileRuntimeEffect.h @@ -0,0 +1,47 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_precompile_PrecompileRuntimeEffect_DEFINED +#define skgpu_graphite_precompile_PrecompileRuntimeEffect_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" + +class SkRuntimeEffect; + +namespace skgpu::graphite { + +class PrecompileBase; +class PrecompileBlender; +class PrecompileColorFilter; +class PrecompileShader; + +using PrecompileChildOptions = SkSpan>; + +//-------------------------------------------------------------------------------------------------- +// These factory functions correspond to the main API's SkRuntimeEffect makeShader, makeColorFilter, +// and makeBlender functions. The uniform values found in the main API are abstracted away since +// they do not alter the generated code. +namespace PrecompileRuntimeEffects { + +SK_API sk_sp MakePrecompileShader( + sk_sp effect, + SkSpan childOptions = {}); + +SK_API sk_sp MakePrecompileColorFilter( + sk_sp effect, + SkSpan childOptions = {}); + +SK_API sk_sp MakePrecompileBlender( + sk_sp effect, + SkSpan childOptions = {}); + +} // namespace PrecompileRuntimeEffects + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_precompile_PrecompileRuntimeEffect_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileShader.h b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileShader.h new file mode 100644 index 000000000..2bc79dfec --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/precompile/PrecompileShader.h @@ -0,0 +1,268 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_precompile_PrecompileShader_DEFINED +#define skgpu_graphite_precompile_PrecompileShader_DEFINED + +#include "include/gpu/graphite/precompile/PrecompileBase.h" + +#include "include/core/SkBlendMode.h" +#include "include/core/SkImageInfo.h" +#include "include/effects/SkGradient.h" + +class SkColorSpace; + +namespace skgpu::graphite { + +class PrecompileBlender; +class PrecompileColorFilter; +class PrecompileShaderPriv; + +/** \class PrecompileShader + This class corresponds to the SkShader class in the main API. +*/ +class SK_API PrecompileShader : public PrecompileBase { +public: + /** + * This is the Precompile correlate to SkShader::makeWithLocalMatrix. The actual matrix + * involved is abstracted away, except for whether or the not the matrix involves perspective + * so the correct generated shader variation is chosen. + * The PrecompileShaders::LocalMatrix factory can be used to generate a set of shaders + * that would've been generated via multiple makeWithLocalMatrix calls. That is, rather than + * performing: + * sk_sp option1 = source1->makeWithLocalMatrix(false); + * sk_sp option2 = source2->makeWithLocalMatrix(false); + * one could call: + * sk_sp combinedOptions = LocalMatrix({ source1, source2 }, false); + */ + sk_sp makeWithLocalMatrix(bool isPerspective) const; + + /** + * This is the Precompile correlate to SkShader::makeWithColorFilter. + * The PrecompileShaders::ColorFilter factory can be used to generate a set of shaders that + * would've been generated via multiple makeWithColorFilter calls. That is, rather than + * performing: + * sk_sp option1 = source->makeWithColorFilter(colorFilter1); + * sk_sp option2 = source->makeWithColorFilter(colorFilter2); + * one could call: + * sk_sp combinedOptions = ColorFilter({ source }, + * { colorFilter1, colorFilter2 }); + * With an alternative use case one could also use the ColorFilter factory thusly: + * sk_sp combinedOptions = ColorFilter({ source1, source2 }, + * { colorFilter }); + */ + sk_sp makeWithColorFilter(sk_sp) const; + + /** + * This is the Precompile correlate to SkShader::makeWithWorkingColorSpace. + * The PrecompileShaders::WorkingColorSpace factory can be used to generate a set of shaders + * that would've been generated via multiple makeWithWorkingColorSpace calls. That is, rather + * than performing: + * sk_sp option1 = source->makeWithWorkingColorSpace(colorSpace1); + * sk_sp option2 = source->makeWithWorkingColorSpace(colorSpace2); + * one could call: + * sk_sp combinedOptions = WorkingColorSpace({ source }, + * { colorSpace1, + * colorSpace2 }); + * With an alternative use case one could also use the WorkingColorSpace factory thusly: + * sk_sp combinedOptions = WorkingColorSpace({ source1, source2 }, + * { colorSpace }); + */ + sk_sp makeWithWorkingColorSpace(sk_sp inputCS, + sk_sp outputCS=nullptr) const; + + // Provides access to functions that aren't part of the public API. + PrecompileShaderPriv priv(); + const PrecompileShaderPriv priv() const; // NOLINT(readability-const-return-type) + +protected: + friend class PrecompileShaderPriv; + + PrecompileShader() : PrecompileBase(Type::kShader) {} + ~PrecompileShader() override; + + virtual bool isConstant(int /* desiredCombination */) const { return false; } + virtual bool isOpaque(int /* desiredCombination */) const = 0; + + virtual bool isALocalMatrixShader() const { return false; } +}; + +//-------------------------------------------------------------------------------------------------- +// This is the Precompile correlate to the SkShaders namespace in the main API +namespace PrecompileShaders { + // --- This block of eight matches the SkShaders factories in SkShader.h + // Note that some of the details of the main API have been elided since they don't impact + // the generated shader (e.g., the color parameter to the Color() factories). + SK_API sk_sp Empty(); + SK_API sk_sp Color(); + SK_API sk_sp Color(sk_sp); + SK_API sk_sp Blend(SkSpan blendModes, + SkSpan> dsts, + SkSpan> srcs); + SK_API sk_sp Blend(SkSpan> blenders, + SkSpan> dsts, + SkSpan> srcs); + SK_API sk_sp CoordClamp(SkSpan>); + + enum class ImageShaderFlags : uint16_t { + kNone = 0, + + kCubicSampling = 1 << 1, + kIncludeAlphaOnly = 1 << 2, + + kAll = kCubicSampling | kIncludeAlphaOnly, + kExcludeCubic = kIncludeAlphaOnly, + kNoAlphaNoCubic = kNone, + }; + + static constexpr SkTileMode kAllTileModes[] = { + SkTileMode::kClamp, + SkTileMode::kRepeat, + SkTileMode::kMirror, + SkTileMode::kDecal, + }; + + /** + In the main Skia API ImageShaders are usually created via a SkImage::makeShader call. + Since the SkImage used to create the ImageShader is unlikely to be present at precompilation + time this entry point allows the equivalent precompilation program structure to be created. + Note that this factory is for non-YUV SkImages, the YUVImage factory (below) should be used + to represent the shading and sampling required for YUV images. + + @param shaderFlags Specify the sampling variations that will be precompiled. + @param colorInfos a span of SkColorInfos to narrow down the combinations. + In general, the color info affects the swizzle and colorSpace + transformation of the final Pipeline. + @param tileModes a span of SkTileModes to narrow down the combinations. + The default will generate all possible combinations. Passing an + empty SkSpan will eliminate the Shader-based sampling combinations. + @return A precompile shader capturing the specified combinations + */ + SK_API sk_sp Image(ImageShaderFlags = ImageShaderFlags::kAll, + SkSpan = {}, + SkSpan = { kAllTileModes }); + + /** DEPRECATED + * Use above version. + */ + SK_API sk_sp Image(SkSpan colorInfos, + SkSpan = { kAllTileModes }); + + // As with the above Image call, raw ImageShaders are usually created via an + // SkImage::makeRawShader call. The RawImage call allows the equivalent precompilation + // program structure to be created without needing the SkImage. + SK_API sk_sp RawImage(ImageShaderFlags = ImageShaderFlags::kExcludeCubic, + SkSpan = {}, + SkSpan = { kAllTileModes }); + + enum class YUVImageShaderFlags : uint16_t { + kNone = 0, + + kHardwareSamplingNoSwizzle = 1 << 1, + kHardwareSampling = 1 << 2, + kShaderBasedSampling = 1 << 3, + kCubicSampling = 1 << 4, + + kExcludeCubic = kHardwareSamplingNoSwizzle | kHardwareSampling | kShaderBasedSampling, + kNoCubicNoNonSwizzledHW = kHardwareSamplingNoSwizzle | kShaderBasedSampling, + }; + + /** + In the main Skia API, the specifics of the SkImage used for the SkImage::makeShader call + can determine whether normal or YUV sampling is required. This entry point allows clients + to specify that the future image will be a YUV image. + + @param shaderFlags Specify the sampling variations that will be precompiled. + In practice, YUV images are rarely cubic-sampling. + @param colorInfos a span of SkColorInfos to narrow down the combinations. + In general, the color info affects the swizzle and colorSpace + transformation of the final Pipeline. + @return A precompile shader capturing the specified combinations + */ + SK_API sk_sp YUVImage( + YUVImageShaderFlags = YUVImageShaderFlags::kExcludeCubic, + SkSpan = {}); + + // --- This block of two matches the SkShaders factories in SkPerlinNoiseShader.h + // Again, most of the details have been elided. + SK_API sk_sp MakeFractalNoise(); + SK_API sk_sp MakeTurbulence(); + + enum class GradientShaderFlags : uint16_t { + kNone = 0, + + kSmall = 1 << 1, + kMedium = 1 << 2, + kLarge = 1 << 3, + + kAll = kSmall | kMedium | kLarge, + kNoLarge = kSmall | kMedium, + }; + + // --- This block of four matches all the factories in SkGradientShader (SkGradient.h) + SK_API sk_sp LinearGradient( + GradientShaderFlags = GradientShaderFlags::kAll, + SkGradient::Interpolation = SkGradient::Interpolation()); + SK_API sk_sp RadialGradient( + GradientShaderFlags = GradientShaderFlags::kAll, + SkGradient::Interpolation = SkGradient::Interpolation()); + SK_API sk_sp TwoPointConicalGradient( + GradientShaderFlags = GradientShaderFlags::kAll, + SkGradient::Interpolation = SkGradient::Interpolation()); + SK_API sk_sp SweepGradient( + GradientShaderFlags = GradientShaderFlags::kAll, + SkGradient::Interpolation = SkGradient::Interpolation()); + + // Normally, SkPicture shaders are only created via SkPicture::makeShader. Since the + // SkPicture to be drawn, most likely, won't be available at precompilation time, this + // entry point can be used to create a precompilation equivalent. + // Note: this will precompile the program that draws the SkPicture. It, obviously, won't + // precompile any SkPaints within the SkPicture. + SK_API sk_sp Picture(); + + // Normally, LocalMatrixShaders are only created via SkShader::makeWithLocalMatrix. + // However, in the combination API, clients may want to create a set of precompile + // LocalMatrixShaders (i.e., pass an SkSpan to the factory function vs just creating a + // single option). This entry point allows that use case. + // Note: PrecompileShader::makeWithLocalMatrix() can still be used and works as expected. + SK_API sk_sp LocalMatrix(SkSpan> wrapped, + bool isPerspective = false); + + // Normally, ColorFilterShaders are only created via SkShader::makeWithColorFilter. + // However, in the combination API, clients may want to create a set of precompile + // ColorFilterShaders (i.e., pass SkSpans to the factory function vs just creating a + // single option). This entry point allows that use case. + // Note: PrecompileShader::makeWithColorFilter can still be used and works as expected. + SK_API sk_sp ColorFilter( + SkSpan> shaders, + SkSpan> colorFilters); + + // Normally, WorkingColorSpaceShaders are only created via SkShader::makeWithWorkingColorSpace. + // However, in the combination API, clients may want to create a set of precompile + // WorkingColorSpaceShaders (i.e., pass SkSpans to the factory function vs just creating a + // single option). This entry point allows that use case. + // Note: PrecompileShader::makeWithWorkingColorSpace can still be used and works as expected. + + // This variant creates the cross product of `inputSpaces` and `outputSpaces`. + // An empty list is interpreted as matching either the dst color space (for `inputSpaces`) or + // matching the input space (for `outputSpaces`). + SK_API sk_sp WorkingColorSpace( + SkSpan> shaders, + SkSpan> inputSpaces, + SkSpan> outputSpaces = {}); + + // This variant takes a span of input and output color spaces pairs explicitly. + SK_API sk_sp WorkingColorSpaceExplicit( + SkSpan> shaders, + SkSpan, + /*output=*/sk_sp>> inputAndOutputSpaces); + +} // namespace PrecompileShaders + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_precompile_PrecompileShader_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/vk/BUILD.bazel b/vendor/artifacts/skia/include/gpu/graphite/vk/BUILD.bazel new file mode 100644 index 000000000..b0db24ba1 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/vk/BUILD.bazel @@ -0,0 +1,26 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "VulkanGraphiteContext.h", + "VulkanGraphiteTypes.h", + "VulkanGraphiteUtils.h", +] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = [ + "//src/gpu/graphite/vk:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteContext.h b/vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteContext.h new file mode 100644 index 000000000..046692080 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteContext.h @@ -0,0 +1,31 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_VulkanGraphiteUtils_DEFINED +#define skgpu_graphite_VulkanGraphiteUtils_DEFINED + +#include + +#include "include/private/base/SkAPI.h" + +// NOTE: Because there is already a VulkanBackendContext header shared between Ganesh and Graphite, +// this is named VulkanGraphiteContext.h to supply just the factory function (differing from the +// public headers exposed by other backends). +namespace skgpu { struct VulkanBackendContext; } + +namespace skgpu::graphite { + +class Context; +struct ContextOptions; + +namespace ContextFactory { +SK_API std::unique_ptr MakeVulkan(const VulkanBackendContext&, const ContextOptions&); +} // namespace ContextFactory + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_VulkanGraphiteUtils_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h b/vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h new file mode 100644 index 000000000..e33c237c5 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h @@ -0,0 +1,104 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_VulkanGraphiteTypes_DEFINED +#define skgpu_graphite_VulkanGraphiteTypes_DEFINED + +#include "include/gpu/graphite/BackendTexture.h" +#include "include/gpu/graphite/GraphiteTypes.h" +#include "include/gpu/graphite/TextureInfo.h" +#include "include/gpu/vk/VulkanTypes.h" + +namespace skgpu::graphite { + +class SK_API VulkanTextureInfo final : public TextureInfo::Data { +public: + // VkImageCreateInfo properties + // Currently the only supported flags are VK_IMAGE_CREATE_PROTECTED_BIT and, when + // VK_EXT_multisampled_render_to_single_sampled is present and enabled, + // VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT. Other flags are not accepted. + VkImageCreateFlags fFlags = 0; + VkFormat fFormat = VK_FORMAT_UNDEFINED; + VkImageTiling fImageTiling = VK_IMAGE_TILING_OPTIMAL; + VkImageUsageFlags fImageUsageFlags = 0; + VkSharingMode fSharingMode = VK_SHARING_MODE_EXCLUSIVE; + + // Properties related to the image view and sampling. These are less inherent properties of the + // VkImage but describe how the VkImage should be used within Skia. + + // What aspect to use for the VkImageView. The normal, default is VK_IMAGE_ASPECT_COLOR_BIT. + // However, if the VkImage is a Ycbcr format, the client can pass a specific plan here to have + // Skia directly sample a plane. In that case the client should also pass in a VkFormat that is + // compatible with the plane as described by the Vulkan spec. + VkImageAspectFlags fAspectMask = VK_IMAGE_ASPECT_COLOR_BIT; + VulkanYcbcrConversionInfo fYcbcrConversionInfo; + + VulkanTextureInfo() = default; + VulkanTextureInfo(VkSampleCountFlagBits sampleCount, + Mipmapped mipmapped, + VkImageCreateFlags flags, + VkFormat format, + VkImageTiling imageTiling, + VkImageUsageFlags imageUsageFlags, + VkSharingMode sharingMode, + VkImageAspectFlags aspectMask, + VulkanYcbcrConversionInfo ycbcrConversionInfo) + // VkSampleCountFlagBits is value equivalent to SampleCount + : Data(static_cast(sampleCount), mipmapped) + , fFlags(flags) + , fFormat(format) + , fImageTiling(imageTiling) + , fImageUsageFlags(imageUsageFlags) + , fSharingMode(sharingMode) + , fAspectMask(aspectMask) + , fYcbcrConversionInfo(ycbcrConversionInfo) {} + +private: + friend class TextureInfo; + friend class TextureInfoPriv; + + // Non-virtual template API for TextureInfo::Data accessed directly when backend type is known. + static constexpr skgpu::BackendApi kBackend = skgpu::BackendApi::kVulkan; + + Protected isProtected() const { + return fFlags & VK_IMAGE_CREATE_PROTECTED_BIT ? Protected::kYes : Protected::kNo; + } + TextureFormat viewFormat() const; + + // Virtual API when the specific backend type is not available. + SkString toBackendString() const override; + + void copyTo(TextureInfo::AnyTextureInfoData& dstData) const override { + dstData.emplace(*this); + } + bool isCompatible(const TextureInfo& that, bool requireExact) const override; +}; + +namespace TextureInfos { +SK_API TextureInfo MakeVulkan(const VulkanTextureInfo&); + +SK_API bool GetVulkanTextureInfo(const TextureInfo&, VulkanTextureInfo*); +} // namespace TextureInfos + +namespace BackendTextures { +SK_API BackendTexture MakeVulkan(SkISize dimensions, + const VulkanTextureInfo&, + VkImageLayout, + uint32_t queueFamilyIndex, + VkImage, + VulkanAlloc); +} // namespace BackendTextures + +namespace BackendSemaphores { +SK_API BackendSemaphore MakeVulkan(VkSemaphore); + +SK_API VkSemaphore GetVkSemaphore(const BackendSemaphore&); +} // namespace BackendSemaphores + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_VulkanGraphiteTypes_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteUtils.h b/vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteUtils.h new file mode 100644 index 000000000..7a1902906 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/vk/VulkanGraphiteUtils.h @@ -0,0 +1,10 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +// DEPRECRATED: VulkanGraphiteUtils.h will be removed in the future, please include +// VulkanGraphiteContext.h +#include "include/gpu/graphite/vk/VulkanGraphiteContext.h" diff --git a/vendor/artifacts/skia/include/gpu/graphite/vk/precompile/BUILD.bazel b/vendor/artifacts/skia/include/gpu/graphite/vk/precompile/BUILD.bazel new file mode 100644 index 000000000..34d6e3094 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/vk/precompile/BUILD.bazel @@ -0,0 +1,21 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "VulkanPrecompileShader.h", +] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/graphite/vk/precompile/VulkanPrecompileShader.h b/vendor/artifacts/skia/include/gpu/graphite/vk/precompile/VulkanPrecompileShader.h new file mode 100644 index 000000000..97f29f0a2 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/graphite/vk/precompile/VulkanPrecompileShader.h @@ -0,0 +1,39 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_graphite_vk_precompile_PrecompileShader_DEFINED +#define skgpu_graphite_vk_precompile_PrecompileShader_DEFINED + +#include "include/gpu/graphite/precompile/PrecompileShader.h" + +namespace skgpu { + struct VulkanYcbcrConversionInfo; +} + +namespace skgpu::graphite { + +namespace PrecompileShaders { + +/** + In the main Skia API YCbCr Images are usually created by wrapping a BackendTexture. + Such backend textures are, in turn, created by a backend-specific entry point like: + BackendTextures::MakeVulkan(SkISize, const VulkanTextureInfo&, ...) + where the VulkanTextureInfo contains additional YCbCr information. This API cuts right to + providing the backend-specific YCbCr information (i.e., the VulkanYcbcrConversionInfo). + + @return A precompile shader for a specific type of YCbCr image +*/ +SK_API sk_sp VulkanYCbCrImage(const skgpu::VulkanYcbcrConversionInfo& YCbCrInfo, + ImageShaderFlags = ImageShaderFlags::kAll, + SkSpan = {}, + SkSpan = { kAllTileModes }); + +} // namespace PrecompileShaders + +} // namespace skgpu::graphite + +#endif // skgpu_graphite_vk_precompile_PrecompileShader_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/mtl/BUILD.bazel b/vendor/artifacts/skia/include/gpu/mtl/BUILD.bazel new file mode 100644 index 000000000..e7d5fca84 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/mtl/BUILD.bazel @@ -0,0 +1,19 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "public_hdrs", + srcs = [ + "MtlMemoryAllocator.h", + ], + visibility = [ + "//src/gpu/ganesh/mtl:__pkg__", + "//src/gpu/graphite/mtl:__pkg__", + "//src/gpu/mtl:__pkg__", + ], +) diff --git a/vendor/artifacts/skia/include/gpu/mtl/MtlMemoryAllocator.h b/vendor/artifacts/skia/include/gpu/mtl/MtlMemoryAllocator.h new file mode 100644 index 000000000..d2edbdac3 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/mtl/MtlMemoryAllocator.h @@ -0,0 +1,41 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_MtlMemoryAllocator_DEFINED +#define skgpu_MtlMemoryAllocator_DEFINED + +#include "include/core/SkRefCnt.h" + +#ifdef __APPLE__ + +#ifdef __OBJC__ +#import +#endif + +namespace skgpu { + +// interface classes for the GPU memory allocator +class MtlAlloc : public SkRefCnt { +public: + ~MtlAlloc() override = default; +}; + +#ifdef __OBJC__ +class MtlMemoryAllocator : public SkRefCnt { +public: + virtual id newBufferWithLength(NSUInteger length, MTLResourceOptions options, + sk_sp* allocation) = 0; + virtual id newTextureWithDescriptor(MTLTextureDescriptor* texDesc, + sk_sp* allocation) = 0; +}; +#endif + +} // namespace skgpu + +#endif // __APPLE__ + +#endif // skgpu_MtlMemoryAllocator_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/vk/BUILD.bazel b/vendor/artifacts/skia/include/gpu/vk/BUILD.bazel new file mode 100644 index 000000000..27a432028 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/vk/BUILD.bazel @@ -0,0 +1,32 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +# This is a separate gropu to make it easier to enforce that Graphite does not +# include Ganesh-specific Vulkan headers. +PUBLIC_HEADERS = [ + "VulkanBackendContext.h", + "VulkanExtensions.h", + "VulkanMemoryAllocator.h", + "VulkanMutableTextureState.h", + "VulkanPreferredFeatures.h", + "VulkanTypes.h", +] + +skia_filegroup( + name = "shared_public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = [ + "//src/gpu/ganesh/vk:__pkg__", + "//src/gpu/vk:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/gpu/vk/VulkanBackendContext.h b/vendor/artifacts/skia/include/gpu/vk/VulkanBackendContext.h new file mode 100644 index 000000000..6ac20d415 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/vk/VulkanBackendContext.h @@ -0,0 +1,57 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_VulkanBackendContext_DEFINED +#define skgpu_VulkanBackendContext_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/gpu/GpuTypes.h" +#include "include/gpu/vk/VulkanMemoryAllocator.h" +#include "include/gpu/vk/VulkanTypes.h" +#include "include/private/base/SkAPI.h" +#include "include/private/gpu/vk/SkiaVulkan.h" + +#include + +namespace skgpu { + +class VulkanExtensions; + +// The VkBackendContext contains all of the base Vk objects needed by the skia Vulkan context. +struct SK_API VulkanBackendContext { + VkInstance fInstance = VK_NULL_HANDLE; + VkPhysicalDevice fPhysicalDevice = VK_NULL_HANDLE; + VkDevice fDevice = VK_NULL_HANDLE; + VkQueue fQueue = VK_NULL_HANDLE; + uint32_t fGraphicsQueueIndex = 0; + // The max api version set here should match the value set in VkApplicationInfo::apiVersion when + // then VkInstance was created. Skia requires Vulkan 1.1 as the minimum version. + uint32_t fMaxAPIVersion = 0; + const skgpu::VulkanExtensions* fVkExtensions = nullptr; + // The client can create their VkDevice with either a VkPhysicalDeviceFeatures or + // VkPhysicalDeviceFeatures2 struct, thus we have to support taking both. The + // VkPhysicalDeviceFeatures2 struct is needed so we know if the client enabled any extension + // specific features. If fDeviceFeatures2 is not null then we ignore fDeviceFeatures. If both + // fDeviceFeatures and fDeviceFeatures2 are null we will assume no features are enabled. + const VkPhysicalDeviceFeatures* fDeviceFeatures = nullptr; + const VkPhysicalDeviceFeatures2* fDeviceFeatures2 = nullptr; + // The client must provide an inplementation of a VulkanMemoryAllocator for Skia to use + // for allocating Vulkan resources that use VkDeviceMemory. + sk_sp fMemoryAllocator; + skgpu::VulkanGetProc fGetProc; + Protected fProtectedContext = Protected::kNo; + // Optional callback which will be invoked if a VK_ERROR_DEVICE_LOST error code is received from + // the driver. Debug information from the driver will be provided to the callback if the + // VK_EXT_device_fault extension is supported and enabled (VkPhysicalDeviceFaultFeaturesEXT must + // be in the pNext chain of VkDeviceCreateInfo). + skgpu::VulkanDeviceLostContext fDeviceLostContext = nullptr; + skgpu::VulkanDeviceLostProc fDeviceLostProc = nullptr; +}; + +} // namespace skgpu + +#endif // skgpu_VulkanBackendContext_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/vk/VulkanExtensions.h b/vendor/artifacts/skia/include/gpu/vk/VulkanExtensions.h new file mode 100644 index 000000000..d1f75f1be --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/vk/VulkanExtensions.h @@ -0,0 +1,73 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_VulkanExtensions_DEFINED +#define skgpu_VulkanExtensions_DEFINED + +#include "include/core/SkString.h" +#include "include/gpu/vk/VulkanTypes.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkTArray.h" +#include "include/private/gpu/vk/SkiaVulkan.h" + +#include +#include + +namespace skgpu { + +/** + * Helper class that eats in an array of extensions strings for instance and device and allows for + * quicker querying if an extension is present. + */ +class SK_API VulkanExtensions { +public: + VulkanExtensions() {} + + void init(VulkanGetProc, VkInstance, VkPhysicalDevice, + uint32_t instanceExtensionCount, const char* const* instanceExtensions, + uint32_t deviceExtensionCount, const char* const* deviceExtensions); + + bool hasExtension(const char[], uint32_t minVersion) const; + + struct Info { + Info() {} + explicit Info(const char* name) : fName(name), fSpecVersion(0) {} + + SkString fName; + uint32_t fSpecVersion; + + struct Less { + bool operator()(const Info& a, const SkString& b) const { + return std::strcmp(a.fName.c_str(), b.c_str()) < 0; + } + bool operator()(const SkString& a, const VulkanExtensions::Info& b) const { + return std::strcmp(a.c_str(), b.fName.c_str()) < 0; + } + }; + }; + +#ifdef SK_DEBUG + void dump() const { + SkDebugf("**Vulkan Extensions**\n"); + for (int i = 0; i < fExtensions.size(); ++i) { + SkDebugf("%s. Version: %u\n", + fExtensions[i].fName.c_str(), fExtensions[i].fSpecVersion); + } + SkDebugf("**End Vulkan Extensions**\n"); + } +#endif + +private: + void getSpecVersions(const VulkanGetProc& getProc, VkInstance, VkPhysicalDevice); + + skia_private::TArray fExtensions; +}; + +} // namespace skgpu + +#endif // skgpu_VulkanExtensions_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/vk/VulkanMemoryAllocator.h b/vendor/artifacts/skia/include/gpu/vk/VulkanMemoryAllocator.h new file mode 100644 index 000000000..e39807ef8 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/vk/VulkanMemoryAllocator.h @@ -0,0 +1,117 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_VulkanMemoryAllocator_DEFINED +#define skgpu_VulkanMemoryAllocator_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/gpu/vk/VulkanTypes.h" +#include "include/private/gpu/vk/SkiaVulkan.h" + +#include +#include + +namespace skgpu { + +class VulkanMemoryAllocator : public SkRefCnt { +public: + enum AllocationPropertyFlags { + kNone_AllocationPropertyFlag = 0b0000, + // Allocation will be placed in its own VkDeviceMemory and not suballocated from some larger + // block. + kDedicatedAllocation_AllocationPropertyFlag = 0b0001, + // Says that the backing memory can only be accessed by the device. Additionally the device + // may lazily allocate the memory. This cannot be used with buffers that will be host + // visible. Setting this flag does not guarantee that we will allocate memory that respects + // it, but we will try to prefer memory that can respect it. + kLazyAllocation_AllocationPropertyFlag = 0b0010, + // The allocation will be mapped immediately and stay mapped until it is destroyed. This + // flag is only valid for buffers which are host visible (i.e. must have a usage other than + // BufferUsage::kGpuOnly). + kPersistentlyMapped_AllocationPropertyFlag = 0b0100, + // Allocation can only be accessed by the device using a protected context. + kProtected_AllocationPropertyFlag = 0b1000, + }; + + enum class BufferUsage { + // Buffers that will only be accessed from the device (large const buffers) will always be + // in device local memory. + kGpuOnly, + // Buffers that typically will be updated multiple times by the host and read on the gpu + // (e.g. uniform or vertex buffers). CPU writes will generally be sequential in the buffer + // and will try to take advantage of the write-combined nature of the gpu buffers. Thus this + // will always be mappable and coherent memory, and it will prefer to be in device local + // memory. + kCpuWritesGpuReads, + // Buffers that will be accessed on the host and copied to another GPU resource (transfer + // buffers). Will always be mappable and coherent memory. + kTransfersFromCpuToGpu, + // Buffers which are typically writted to by the GPU and then read on the host. Will always + // be mappable memory, and will prefer cached memory. + kTransfersFromGpuToCpu, + }; + + virtual VkResult allocateImageMemory(VkImage image, + uint32_t allocationPropertyFlags, + skgpu::VulkanBackendMemory* memory) = 0; + + virtual VkResult allocateBufferMemory(VkBuffer buffer, + BufferUsage usage, + uint32_t allocationPropertyFlags, + skgpu::VulkanBackendMemory* memory) = 0; + + // Fills out the passed in skgpu::VulkanAlloc struct for the passed in + // skgpu::VulkanBackendMemory. + virtual void getAllocInfo(const skgpu::VulkanBackendMemory&, skgpu::VulkanAlloc*) const = 0; + + // Maps the entire allocation and returns a pointer to the start of the allocation. The + // implementation may map more memory than just the allocation, but the returned pointer must + // point at the start of the memory for the requested allocation. + virtual void* mapMemory(const skgpu::VulkanBackendMemory&) { return nullptr; } + virtual VkResult mapMemory(const skgpu::VulkanBackendMemory& memory, void** data) { + *data = this->mapMemory(memory); + // VK_ERROR_INITIALIZATION_FAILED is a bogus result to return from this function, but it is + // just something to return that is not VK_SUCCESS and can't be interpreted by a caller to + // mean something specific happened like device lost or oom. This will be removed once we + // update clients to implement this virtual. + return *data ? VK_SUCCESS : VK_ERROR_INITIALIZATION_FAILED; + } + virtual void unmapMemory(const skgpu::VulkanBackendMemory&) = 0; + + // The following two calls are used for managing non-coherent memory. The offset is relative to + // the start of the allocation and not the underlying VkDeviceMemory. Additionaly the client + // must make sure that the offset + size passed in is less that or equal to the allocation size. + // It is the responsibility of the implementation to make sure all alignment requirements are + // followed. The client should not have to deal with any sort of alignment issues. + virtual void flushMappedMemory(const skgpu::VulkanBackendMemory&, VkDeviceSize, VkDeviceSize) {} + virtual VkResult flushMemory(const skgpu::VulkanBackendMemory& memory, + VkDeviceSize offset, + VkDeviceSize size) { + this->flushMappedMemory(memory, offset, size); + return VK_SUCCESS; + } + virtual void invalidateMappedMemory(const skgpu::VulkanBackendMemory&, + VkDeviceSize, + VkDeviceSize) {} + virtual VkResult invalidateMemory(const skgpu::VulkanBackendMemory& memory, + VkDeviceSize offset, + VkDeviceSize size) { + this->invalidateMappedMemory(memory, offset, size); + return VK_SUCCESS; + } + + virtual void freeMemory(const skgpu::VulkanBackendMemory&) = 0; + + // Returns the total amount of memory that is allocated as well as total + // amount of memory in use by an allocation from this allocator. + // Return 1st param is total allocated memory, 2nd is total used memory. + virtual std::pair totalAllocatedAndUsedMemory() const = 0; +}; + +} // namespace skgpu + +#endif // skgpu_VulkanMemoryAllocator_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/vk/VulkanMutableTextureState.h b/vendor/artifacts/skia/include/gpu/vk/VulkanMutableTextureState.h new file mode 100644 index 000000000..7a388c57d --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/vk/VulkanMutableTextureState.h @@ -0,0 +1,26 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_VulkanMutableTextureState_DEFINED +#define skgpu_VulkanMutableTextureState_DEFINED + +#include "include/gpu/MutableTextureState.h" +#include "include/private/base/SkAPI.h" +#include "include/private/gpu/vk/SkiaVulkan.h" + +#include + +namespace skgpu::MutableTextureStates { +SK_API MutableTextureState MakeVulkan(VkImageLayout layout, uint32_t queueFamilyIndex); + +SK_API VkImageLayout GetVkImageLayout(const MutableTextureState& state); +SK_API VkImageLayout GetVkImageLayout(const MutableTextureState* state); +SK_API uint32_t GetVkQueueFamilyIndex(const MutableTextureState& state); +SK_API uint32_t GetVkQueueFamilyIndex(const MutableTextureState* state); +} + +#endif diff --git a/vendor/artifacts/skia/include/gpu/vk/VulkanPreferredFeatures.h b/vendor/artifacts/skia/include/gpu/vk/VulkanPreferredFeatures.h new file mode 100644 index 000000000..6fb2d5592 --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/vk/VulkanPreferredFeatures.h @@ -0,0 +1,225 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_VulkanPreferredFeatures_DEFINED +#define skgpu_VulkanPreferredFeatures_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/gpu/vk/SkiaVulkan.h" + +#include +#include +#include + +namespace skgpu { + +class SK_API VulkanPreferredFeatures { +public: + ~VulkanPreferredFeatures(); + + /* + * VulkanPreferredFeatures is used by Skia to add extensions and features on top of what the app + * wants to enable. The flow of Vulkan initialization for an app that wants to use Skia would + * be: + * + * ``` + * // Query the loader for instance information, decide on API version to use + * + * // Prepare for Skia-enabled extensions and features + * skgpu::VulkanPreferredFeatures skiaFeatures; + * skiaFeatures.init(apiVersion); + * + * // Decide on instance extensions to use in the app. + * + * // Allow Skia to add to the instance extension list. + * skiaFeatures.addToInstanceExtensions(...); + * + * // Create the instance, choose physical device, query available extensions, decide on + * // device features to query + * + * // Allow Skia to add to the feature query list. + * skiaFeatures.addFeaturesToQuery(...); + * + * // Query features, decide on extensions and features to enable. + * + * // Allow Skia to add to the device extension and feature list. + * skiaFeatures.addFeaturesToEnable(...); + * + * // Create the Vulkan device. + * ``` + * + * Parameters: + * + * * appAPIVersion: The API version the app has specified in VkApplicationInfo::apiVersion (and + * will later provide in VulkanBackendContext::fMaxAPIVersion). The minimum supported version + * is VK_API_VERSION_1_1, maximum is VK_API_VERSION_1_4. + */ + void init(uint32_t appAPIVersion); + + /* + * Before creating a Vulkan instance, call addToInstanceExtensions to give Skia a chance to add + * instance extensions it may take advantage of. Extensions are only added to appExtensions if + * caller hasn't already included them to be enabled. + * + * Parameters: + * + * * instanceExtensions, instanceExtensionCount: The list of available instance extensions as + * queried from the loader. + * * appExtensions: The list of extensions to be enabled on the instance; more extensions may be + * added to this list by this call. + */ + void addToInstanceExtensions(const VkExtensionProperties* instanceExtensions, + size_t instanceExtensionCount, + std::vector& appExtensions); + + /* + * Before querying Vulkan device features, call addFeaturesToQuery to give Skia a chance to add + * device extension features it may take advantage of to the query. Features are only added to + * appFeatures if caller hasn't already included them in the query. + * + * Beware that the structs that get chained to appFeatures are member variables of this class, + * so this object must not leave scope until feature query and device creation is complete. + * + * Parameters: + * + * * deviceExtensions, deviceExtensionCount: The list of available device extensions as queried + * from the physical device. + * * appFeatures: The features to be queried from the physical device; more features may be + * added to the pNext chain by this call. + */ + void addFeaturesToQuery(const VkExtensionProperties* deviceExtensions, + size_t deviceExtensionCount, + VkPhysicalDeviceFeatures2& appFeatures); + + /* + * Before creating the Vulkan device, call addFeaturesToEnable to give Skia a chance to add + * device extensions and features it may take advantage of. Extensions and features are only + * added to appExtensions and appFeatures respectively if caller hasn't already included them to + * be enabled. This function may replace chained features with VkPhysicalDeviceVulkanNNFeatures + * structs instead in order to add features. Features that are already enabled by the + * application are retained in that case in the new struct. + * + * Parameters: + * + * * appExtensions: The list of extensions to be enabled on the device; more extensions may be + * added to this list by this call. + * * appFeatures: The features to be enabled on the device; more features may be + * added to the pNext chain by this call. + */ + void addFeaturesToEnable(std::vector& appExtensions, + VkPhysicalDeviceFeatures2& appFeatures); + +private: + uint32_t fAPIVersion = 0; + // Track what the application did, so warnings can be generated if the class is not + // fully/correctly used. + bool fHasAddedToInstanceExtensions = false; + bool fHasAddedFeaturesToQuery = false; + bool fHasAddedFeaturesToEnable = false; + + // The list of device features Skia is interested in. If any are included in + // VkPhysicalDeviceFeatures2::pNext by the app, it is not included again by Skia. However, to + // take best advantage of the Vulkan API, the app should not intentionally include these feature + // structs only to forcefully disable the feature - this blocks Skia from leveraging it. + // + // When ambiguous, the extension name is included to determine which extension a feature struct + // has come from. This is usually needed when addFeaturesToQuery has included a feature struct + // that is present in multiple extensions (e.g. due to extension promotion). It is later used by + // addFeaturesToEnable to know which extension to enable. + + // Available since Vulkan 1.2 + VkPhysicalDeviceVulkan11Features fVulkan11 = {}; + + // Available since Vulkan 1.2 + VkPhysicalDeviceVulkan12Features fVulkan12 = {}; + + // Available since Vulkan 1.3 + VkPhysicalDeviceVulkan13Features fVulkan13 = {}; + + // Available since Vulkan 1.4 + VkPhysicalDeviceVulkan14Features fVulkan14 = {}; + + // Feature of VK_EXT_rasterization_order_attachment_access or + // VK_ARM_rasterization_order_attachment_access. + VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + fRasterizationOrderAttachmentAccess = {}; + const char* fRasterizationOrderAttachmentAccessExtension = nullptr; + + // Feature of VK_EXT_blend_operation_advanced + VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT fBlendOperationAdvanced = {}; + + // Feature of VK_EXT_extended_dynamic_state + VkPhysicalDeviceExtendedDynamicStateFeaturesEXT fExtendedDynamicState = {}; + + // Feature of VK_EXT_extended_dynamic_state2 + VkPhysicalDeviceExtendedDynamicState2FeaturesEXT fExtendedDynamicState2 = {}; + + // Feature of VK_EXT_vertex_input_dynamic_state + VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT fVertexInputDynamicState = {}; + + // Feature of VK_EXT_graphics_pipeline_library + VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT fGraphicsPipelineLibrary = {}; + + // Feature of VK_KHR_sampler_ycbcr_conversion or Vulkan 1.1 + VkPhysicalDeviceSamplerYcbcrConversionFeatures fSamplerYcbcrConversion = {}; + + // Feature of VK_EXT_rgba10x6_formats + VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT fRGBA10x6Formats = {}; + + // Feature of VK_KHR_synchronization2 or Vulkan 1.3 + VkPhysicalDeviceDynamicRenderingFeatures fSynchronization2 = {}; + + // Feature of VK_KHR_dynamic_rendering or Vulkan 1.3 + VkPhysicalDeviceDynamicRenderingFeatures fDynamicRendering = {}; + + // Feature of VK_KHR_dynamic_rendering_local_read or Vulkan 1.4 + VkPhysicalDeviceDynamicRenderingLocalReadFeatures fDynamicRenderingLocalRead = {}; + + // Feature of VK_EXT_multisampled_render_to_single_sampled + VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT + fMultisampledRenderToSingleSampled = {}; + + // Feature of VK_EXT_host_image_copy or Vulkan 1.4 + VkPhysicalDeviceHostImageCopyFeatures fHostImageCopy = {}; + + // Feature of VK_EXT_pipeline_creation_cache_control or Vulkan 1.3 + VkPhysicalDevicePipelineCreationCacheControlFeatures fPipelineCreationCacheControl = {}; + + // Feature of VK_EXT_frame_boundary + VkPhysicalDeviceFrameBoundaryFeaturesEXT fFrameBoundary = {}; + + // Extensions that don't have a feature: + // VK_KHR_driver_properties or Vulkan 1.2 + const char* fDriverPropertiesExtension = nullptr; + // VK_KHR_create_renderpass2 or Vulkan 1.2 + const char* fCreateRenderpass2Extension = nullptr; + // VK_EXT_load_store_op_none, VK_KHR_load_store_op_none or Vulkan 1.4 + const char* fLoadStoreOpNoneExtension = nullptr; + // VK_EXT_conservative_rasterization + const char* fConservativeRasterizationExtension = nullptr; +#if defined(SK_BUILD_FOR_ANDROID) + // VK_ANDROID_external_memory_android_hardware_buffer + const char* fExternalMemoryAHardwareBufferExtension = nullptr; +#endif + + // Extensions that the other extensions above depend on: + // Dependency of VK_EXT_graphics_pipeline_library: VK_KHR_pipeline_library + const char* fPipelineLibraryExtension = nullptr; + // Dependencies of VK_EXT_host_image_copy: VK_KHR_copy_commands2, VK_KHR_format_feature_flags2 + const char* fCopyCommands2Extension = nullptr; + const char* fFormatFeatureFlags2Extension = nullptr; + // Dependency of VK_EXT_multisampled_render_to_single_sampled: VK_KHR_depth_stencil_resolve + const char* fDepthStencilResolveExtension = nullptr; +#if defined(SK_BUILD_FOR_ANDROID) + // Dependency of VK_ANDROID_external_memory_android_hardware_buffer: VK_EXT_queue_family_foreign + const char* fQueueFamilyForeignExtension = nullptr; +#endif +}; + +} // namespace skgpu + +#endif // skgpu_VulkanPreferredFeatures_DEFINED diff --git a/vendor/artifacts/skia/include/gpu/vk/VulkanTypes.h b/vendor/artifacts/skia/include/gpu/vk/VulkanTypes.h new file mode 100644 index 000000000..c6b3028fe --- /dev/null +++ b/vendor/artifacts/skia/include/gpu/vk/VulkanTypes.h @@ -0,0 +1,245 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_VulkanTypes_DEFINED +#define skgpu_VulkanTypes_DEFINED + +#include "include/core/SkTypes.h" +#include "include/private/base/SkTo.h" +#include "include/private/gpu/vk/SkiaVulkan.h" + +#include +#include +#include +#include +#include +#include + +#ifndef VK_VERSION_1_1 +#error Skia requires the use of Vulkan 1.1 headers +#endif + +namespace skgpu { + +namespace graphite { +class VulkanYcbcrConversion; +} + +using VulkanGetProc = std::function; + +typedef intptr_t VulkanBackendMemory; + +/** + * Types for interacting with Vulkan resources created externally to Skia. + */ +struct VulkanAlloc { + // can be VK_NULL_HANDLE iff is an RT and is borrowed + VkDeviceMemory fMemory = VK_NULL_HANDLE; + VkDeviceSize fOffset = 0; + VkDeviceSize fSize = 0; // this can be indeterminate iff Tex uses borrow semantics + uint32_t fFlags = 0; + // handle to memory allocated via skgpu::VulkanMemoryAllocator. + VulkanBackendMemory fBackendMemory = 0; + + enum Flag { + kNoncoherent_Flag = 0x1, // memory must be flushed to device after mapping + kMappable_Flag = 0x2, // memory is able to be mapped. + kLazilyAllocated_Flag = 0x4, // memory was created with lazy allocation + }; + + bool operator==(const VulkanAlloc& that) const { + return fMemory == that.fMemory && fOffset == that.fOffset && fSize == that.fSize && + fFlags == that.fFlags && fUsesSystemHeap == that.fUsesSystemHeap; + } + +private: + bool fUsesSystemHeap = false; +}; + +// Used to pass in the necessary information to create a VkSamplerYcbcrConversion object for an +// VkExternalFormatANDROID. +struct SK_API VulkanYcbcrConversionInfo { +public: + // Makes an invalid VulkanYcbcrConversionInfo + VulkanYcbcrConversionInfo() = default; + + // For external images format features here should be those returned by a call to + // vkAndroidHardwareBufferFormatPropertiesANDROID + VulkanYcbcrConversionInfo(uint64_t externalFormat, + VkSamplerYcbcrModelConversion ycbcrModel, + VkSamplerYcbcrRange ycbcrRange, + VkChromaLocation xChromaOffset, + VkChromaLocation yChromaOffset, + VkFilter chromaFilter, + VkBool32 forceExplicitReconstruction, + VkComponentMapping components, + VkFormatFeatureFlags formatFeatures) + : VulkanYcbcrConversionInfo(VK_FORMAT_UNDEFINED, + externalFormat, + ycbcrModel, + ycbcrRange, + xChromaOffset, + yChromaOffset, + chromaFilter, + forceExplicitReconstruction, + components, + formatFeatures) {} + + VulkanYcbcrConversionInfo(VkFormat format, + VkSamplerYcbcrModelConversion ycbcrModel, + VkSamplerYcbcrRange ycbcrRange, + VkChromaLocation xChromaOffset, + VkChromaLocation yChromaOffset, + VkFilter chromaFilter, + VkBool32 forceExplicitReconstruction, + VkComponentMapping components, + VkFormatFeatureFlags formatFeatures) + : VulkanYcbcrConversionInfo(format, + 0, + ycbcrModel, + ycbcrRange, + xChromaOffset, + yChromaOffset, + chromaFilter, + forceExplicitReconstruction, + components, + formatFeatures) {} + + bool operator==(const VulkanYcbcrConversionInfo& that) const { + // Invalid objects are not required to have all other fields initialized or matching. + if (!this->isValid() && !that.isValid()) { + return true; + } + + // Note that we do not need to check for fSamplerFilterMustMatchChromaFilter equality. This + // is because the Vulkan spec dictates that Android hardware buffers with the same external + // format must have the same support for key features. See + // https://docs.vulkan.org/spec/latest/chapters/memory.html#_android_hardware_buffer_external_memory + // for more details. + return this->fFormat == that.fFormat && + this->fExternalFormat == that.fExternalFormat && + this->fYcbcrModel == that.fYcbcrModel && + this->fYcbcrRange == that.fYcbcrRange && + this->fXChromaOffset == that.fXChromaOffset && + this->fYChromaOffset == that.fYChromaOffset && + this->fChromaFilter == that.fChromaFilter && + this->fForceExplicitReconstruction == that.fForceExplicitReconstruction && + this->fComponents.r == that.fComponents.r && + this->fComponents.g == that.fComponents.g && + this->fComponents.b == that.fComponents.b && + this->fComponents.a == that.fComponents.a; + } + bool operator!=(const VulkanYcbcrConversionInfo& that) const { return !(*this == that); } + + bool isValid() const { + return fYcbcrModel != VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY || + this->hasExternalFormat(); + } + + VkFormat format() const { return fFormat; } + + bool hasExternalFormat() const { return fExternalFormat != 0; } + uint64_t externalFormat() const { return fExternalFormat; } + + VkSamplerYcbcrModelConversion model() const { return fYcbcrModel; } + VkSamplerYcbcrRange range() const { return fYcbcrRange; } + VkChromaLocation xChromaOffset() const { return fXChromaOffset; } + VkChromaLocation yChromaOffset() const { return fYChromaOffset; } + VkFilter chromaFilter() const { return fChromaFilter; } + VkBool32 forceExplicitReconstruction() const { return fForceExplicitReconstruction; } + VkComponentMapping components() const { return fComponents; } + + bool samplerFilterMustMatchChromaFilter() const { return fSamplerFilterMustMatchChromaFilter; } + bool supportsLinearFilter() const { return fSupportsLinearFilter; } + + // Returns a populated VkSamplerYcbcrConversionCreateInfo object based on + // VulkanYcbcrConversionInfo + void toVkSamplerYcbcrConversionCreateInfo(VkSamplerYcbcrConversionCreateInfo* outInfo, + std::optional* requiredSamplerFilter) const; + +private: + VulkanYcbcrConversionInfo(VkFormat format, + uint64_t externalFormat, + VkSamplerYcbcrModelConversion ycbcrModel, + VkSamplerYcbcrRange ycbcrRange, + VkChromaLocation xChromaOffset, + VkChromaLocation yChromaOffset, + VkFilter chromaFilter, + VkBool32 forceExplicitReconstruction, + VkComponentMapping components, + VkFormatFeatureFlags formatFeatures); + + + // For use internally to recreate from an ImmutableSamplerInfo. We don't have feature flags + // and assume we've updated all the fields as required by the feature flags previously. + friend class graphite::VulkanYcbcrConversion; + + VulkanYcbcrConversionInfo(VkFormat format, + uint64_t externalFormat, + VkSamplerYcbcrModelConversion ycbcrModel, + VkSamplerYcbcrRange ycbcrRange, + VkChromaLocation xChromaOffset, + VkChromaLocation yChromaOffset, + VkFilter chromaFilter, + VkBool32 forceExplicitReconstruction, + VkComponentMapping components, + bool mustMatchChromaFilter, + bool supportsLinearFilter) + : fFormat(format) + , fExternalFormat(externalFormat) + , fYcbcrModel(ycbcrModel) + , fYcbcrRange(ycbcrRange) + , fXChromaOffset(xChromaOffset) + , fYChromaOffset(yChromaOffset) + , fChromaFilter(chromaFilter) + , fForceExplicitReconstruction(forceExplicitReconstruction) + , fComponents(components) + , fSamplerFilterMustMatchChromaFilter(mustMatchChromaFilter) + , fSupportsLinearFilter(supportsLinearFilter) {} + + // Format of the source image. Must be set to VK_FORMAT_UNDEFINED for external images or + // a valid image format otherwise. + VkFormat fFormat = VK_FORMAT_UNDEFINED; + + // The external format. Must be non-zero for external images, zero otherwise. + // Should be compatible to be used in a VkExternalFormatANDROID struct. + uint64_t fExternalFormat = 0; + + VkSamplerYcbcrModelConversion fYcbcrModel = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY; + VkSamplerYcbcrRange fYcbcrRange = VK_SAMPLER_YCBCR_RANGE_ITU_FULL; + VkChromaLocation fXChromaOffset = VK_CHROMA_LOCATION_COSITED_EVEN; + VkChromaLocation fYChromaOffset = VK_CHROMA_LOCATION_COSITED_EVEN; + VkFilter fChromaFilter = VK_FILTER_NEAREST; + VkBool32 fForceExplicitReconstruction = false; + + // This is ignored when fExternalFormat is non-zero. + VkComponentMapping fComponents = {VK_COMPONENT_SWIZZLE_IDENTITY, + VK_COMPONENT_SWIZZLE_IDENTITY, + VK_COMPONENT_SWIZZLE_IDENTITY, + VK_COMPONENT_SWIZZLE_IDENTITY}; + + // Default these values to the most restrictive. These defaults only really matter until + // we force all clients to go through our constructors. At that point these will be set to the + // correct values. + bool fSamplerFilterMustMatchChromaFilter = true; + bool fSupportsLinearFilter = false; +}; + +typedef void* VulkanDeviceLostContext; +typedef void (*VulkanDeviceLostProc)(VulkanDeviceLostContext faultContext, + const std::string& description, + const std::vector& addressInfos, + const std::vector& vendorInfos, + const std::vector& vendorBinaryData); + +} // namespace skgpu + +#endif // skgpu_VulkanTypes_DEFINED diff --git a/vendor/artifacts/skia/include/pathops/BUILD.bazel b/vendor/artifacts/skia/include/pathops/BUILD.bazel new file mode 100644 index 000000000..d5ff2e5ab --- /dev/null +++ b/vendor/artifacts/skia/include/pathops/BUILD.bazel @@ -0,0 +1,22 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = ["SkPathOps.h"] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = [ + "//src/pathops:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/pathops/SkPathOps.h b/vendor/artifacts/skia/include/pathops/SkPathOps.h new file mode 100644 index 000000000..da51b216a --- /dev/null +++ b/vendor/artifacts/skia/include/pathops/SkPathOps.h @@ -0,0 +1,150 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkPathOps_DEFINED +#define SkPathOps_DEFINED + +#include "include/core/SkPath.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkTArray.h" +#include "include/private/base/SkTDArray.h" + +#include + +struct SkRect; + +// FIXME: move everything below into the SkPath class +/** + * The logical operations that can be performed when combining two paths. + */ +enum SkPathOp { + kDifference_SkPathOp, //!< subtract the op path from the first path + kIntersect_SkPathOp, //!< intersect the two paths + kUnion_SkPathOp, //!< union (inclusive-or) the two paths + kXOR_SkPathOp, //!< exclusive-or the two paths + kReverseDifference_SkPathOp, //!< subtract the first path from the op path +}; + +/** Set this path to the result of applying the Op to this path and the + specified path: this = (this op operand). + The resulting path will be constructed from non-overlapping contours. + The curve order is reduced where possible so that cubics may be turned + into quadratics, and quadratics maybe turned into lines. + + Returns true if operation was able to produce a result; + otherwise, result is unmodified. + + @param one The first operand (for difference, the minuend) + @param two The second operand (for difference, the subtrahend) + @param op The operator to apply. + @param result The product of the operands. The result may be one of the + inputs. + @return True if the operation succeeded. + */ +std::optional SK_API Op(const SkPath& one, const SkPath& two, SkPathOp op); + +// DEPRECATED +static inline bool Op(const SkPath& one, const SkPath& two, SkPathOp op, SkPath* result) { + if (auto res = Op(one, two, op)) { + *result = *res; + return true; + } + return false; +} + +/** Return a path with a set of non-overlapping contours that describe the + same area as the original path. + The curve order is reduced where possible so that cubics may + be turned into quadratics, and quadratics maybe turned into lines. + + @param path The path to simplify. + @return The simplified path, or {} on failure. + */ +std::optional SK_API Simplify(const SkPath& path); + +// DEPRECATED +static inline bool Simplify(const SkPath& path, SkPath* result) { + if (auto res = Simplify(path)) { + *result = *res; + return true; + } + return false; +} + +/** Set the resulting rectangle to the tight bounds of the path. + + @param path The path measured. + @param result The tight bounds of the path. + @return True if the bounds could be computed. + */ +[[deprecated]] +static inline bool TightBounds(const SkPath& path, SkRect* result) { + auto rect = path.computeTightBounds(); + if (rect.isFinite()) { + *result = rect; + return true; + } + return false; +} + +/** Returns a path with fill type winding to area equivalent to the input. + Does not detect if path contains contours which + contain self-crossings or cross other contours; in these cases, may return + a result even though it does not fill same area as the input. + + If it fails to compute a result, returns {}. + + @param path The path typically with fill type set to even odd. + */ +std::optional SK_API AsWinding(const SkPath& path); + +// DEPRECATED +static inline bool AsWinding(const SkPath& path, SkPath* result) { + if (auto res = AsWinding(path)) { + *result = *res; + return true; + } + return false; +} + +/** Perform a series of path operations, optimized for unioning many paths together. + */ +class SK_API SkOpBuilder { +public: + /** Add one or more paths and their operand. The builder is empty before the first + path is added, so the result of a single add is (emptyPath OP path). + + @param path The second operand. + @param _operator The operator to apply to the existing and supplied paths. + */ + void add(const SkPath& path, SkPathOp _operator); + + /** Computes the sum of all paths and operands, and resets the builder to its + initial state. + + @return result The product of the operands, {} on failure. + */ + std::optional resolve(); + + // DEPRECATED + bool resolve(SkPath* result) { + if (auto res = this->resolve()) { + *result = *res; + return true; + } + return false; + } + +private: + skia_private::TArray fPathRefs; + SkTDArray fOps; + + static bool FixWinding(SkPath* path); + static void ReversePath(SkPath* path); + void reset(); +}; + +#endif diff --git a/vendor/artifacts/skia/include/ports/BUILD.bazel b/vendor/artifacts/skia/include/ports/BUILD.bazel new file mode 100644 index 000000000..43a20ab37 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/BUILD.bazel @@ -0,0 +1,141 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "android_fontmgr_hdrs", + srcs = ["SkFontMgr_android.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "android_ndk_fontmgr_hdrs", + srcs = ["SkFontMgr_android_ndk.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "core_foundation_hdrs", + srcs = ["SkCFObject.h"], + visibility = [ + "//src/gpu/ganesh/mtl:__pkg__", + "//src/gpu/graphite:__subpackages__", # TODO(kjlubick) remove after decoupling + "//src/gpu/graphite/mtl:__pkg__", + "//src/ports:__pkg__", + ], +) + +skia_filegroup( + name = "coretext_fontmgr_hdrs", + srcs = ["SkFontMgr_mac_ct.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "directory_fontmgr_hdrs", + srcs = ["SkFontMgr_directory.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "data_fontmgr_hdrs", + srcs = ["SkFontMgr_data.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "empty_fontmgr_hdrs", + srcs = ["SkFontMgr_empty.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "fontconfig_fontmgr_hdrs", + srcs = ["SkFontMgr_fontconfig.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "fuchsia_fontmgr_hdrs", + srcs = ["SkFontMgr_fuchsia.h"], +) + +skia_filegroup( + name = "fci_fontmgr_hdrs", + srcs = [ + "SkFontConfigInterface.h", + "SkFontMgr_FontConfigInterface.h", + ], +) + +skia_filegroup( + name = "typeface_fontations_hdrs", + srcs = [ + "SkFontScanner_Fontations.h", + "SkTypeface_fontations.h", + ], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "typeface_freetype_hdrs", + srcs = [ + "SkFontScanner_FreeType.h", + ], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "fontmgr_fontations_hdrs", + srcs = ["SkFontMgr_Fontations.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "typeface_windows_hdrs", + srcs = ["SkTypeface_win.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "imagegenerator_cg_hdrs", + srcs = ["SkImageGeneratorCG.h"], + visibility = [ + "//src/gpu/ganesh/mtl:__pkg__", + "//src/ports:__pkg__", + ], +) + +skia_filegroup( + name = "imagegenerator_ndk_hdrs", + srcs = ["SkImageGeneratorNDK.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "imagegenerator_wic_hdrs", + srcs = ["SkImageGeneratorWIC.h"], + visibility = ["//src/ports:__pkg__"], +) + +skia_filegroup( + name = "mac_typeface", + srcs = ["SkTypeface_mac.h"], + visibility = [ + "//src/gpu/ganesh/mtl:__pkg__", + "//src/ports:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = [ + "SkFontMgr_data.h", + "SkFontMgr_directory.h", + "SkFontMgr_empty.h", + ], +) diff --git a/vendor/artifacts/skia/include/ports/SkCFObject.h b/vendor/artifacts/skia/include/ports/SkCFObject.h new file mode 100644 index 000000000..0081a6eb1 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkCFObject.h @@ -0,0 +1,180 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCFObject_DEFINED +#define SkCFObject_DEFINED + +#ifdef __APPLE__ + +#include "include/core/SkTypes.h" + +#include // std::nullptr_t + +#import + +/** + * Wrapper class for managing lifetime of CoreFoundation objects. It will call + * CFRetain and CFRelease appropriately on creation, assignment, and deletion. + * Based on sk_sp<>. + */ +template static inline T SkCFSafeRetain(T obj) { + if (obj) { + CFRetain(obj); + } + return obj; +} + +template static inline void SkCFSafeRelease(T obj) { + if (obj) { + CFRelease(obj); + } +} + +template class sk_cfp { +public: + using element_type = T; + + constexpr sk_cfp() {} + constexpr sk_cfp(std::nullptr_t) {} + + /** + * Shares the underlying object by calling CFRetain(), so that both the argument and the newly + * created sk_cfp both have a reference to it. + */ + sk_cfp(const sk_cfp& that) : fObject(SkCFSafeRetain(that.get())) {} + + /** + * Move the underlying object from the argument to the newly created sk_cfp. Afterwards only + * the new sk_cfp will have a reference to the object, and the argument will point to null. + * No call to CFRetain() or CFRelease() will be made. + */ + sk_cfp(sk_cfp&& that) : fObject(that.release()) {} + + /** + * Adopt the bare object into the newly created sk_cfp. + * No call to CFRetain() or CFRelease() will be made. + */ + explicit sk_cfp(T obj) { + fObject = obj; + } + + /** + * Calls CFRelease() on the underlying object pointer. + */ + ~sk_cfp() { + SkCFSafeRelease(fObject); + SkDEBUGCODE(fObject = nil); + } + + sk_cfp& operator=(std::nullptr_t) { this->reset(); return *this; } + + /** + * Shares the underlying object referenced by the argument by calling CFRetain() on it. If this + * sk_cfp previously had a reference to an object (i.e. not null) it will call CFRelease() + * on that object. + */ + sk_cfp& operator=(const sk_cfp& that) { + if (this != &that) { + this->reset(SkCFSafeRetain(that.get())); + } + return *this; + } + + /** + * Move the underlying object from the argument to the sk_cfp. If the sk_cfp + * previously held a reference to another object, CFRelease() will be called on that object. + * No call to CFRetain() will be made. + */ + sk_cfp& operator=(sk_cfp&& that) { + this->reset(that.release()); + return *this; + } + + explicit operator bool() const { return this->get() != nil; } + + T get() const { return fObject; } + T operator*() const { + SkASSERT(fObject); + return fObject; + } + + /** + * Adopt the new object, and call CFRelease() on any previously held object (if not null). + * No call to CFRetain() will be made. + */ + void reset(T object = nil) { + // Need to unref after assigning, see + // http://wg21.cmeerw.net/lwg/issue998 + // http://wg21.cmeerw.net/lwg/issue2262 + T oldObject = fObject; + fObject = object; + SkCFSafeRelease(oldObject); + } + + /** + * Shares the new object by calling CFRetain() on it. If this sk_cfp previously had a + * reference to an object (i.e. not null) it will call CFRelease() on that object. + */ + void retain(T object) { + if (fObject != object) { + this->reset(SkCFSafeRetain(object)); + } + } + + /** + * Return the original object, and set the internal object to nullptr. + * The caller must assume ownership of the object, and manage its reference count directly. + * No call to CFRelease() will be made. + */ + [[nodiscard]] T release() { + T obj = fObject; + fObject = nil; + return obj; + } + +private: + T fObject = nil; +}; + +template inline bool operator==(const sk_cfp& a, + const sk_cfp& b) { + return a.get() == b.get(); +} +template inline bool operator==(const sk_cfp& a, + std::nullptr_t) { + return !a; +} +template inline bool operator==(std::nullptr_t, + const sk_cfp& b) { + return !b; +} + +template inline bool operator!=(const sk_cfp& a, + const sk_cfp& b) { + return a.get() != b.get(); +} +template inline bool operator!=(const sk_cfp& a, + std::nullptr_t) { + return static_cast(a); +} +template inline bool operator!=(std::nullptr_t, + const sk_cfp& b) { + return static_cast(b); +} + +/* + * Returns a sk_cfp wrapping the provided object AND calls retain on it (if not null). + * + * This is different than the semantics of the constructor for sk_cfp, which just wraps the + * object, effectively "adopting" it. + */ +template sk_cfp sk_ret_cfp(T obj) { + return sk_cfp(SkCFSafeRetain(obj)); +} + +#endif // __APPLE__ +#endif // SkCFObject_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontConfigInterface.h b/vendor/artifacts/skia/include/ports/SkFontConfigInterface.h new file mode 100644 index 000000000..f8fdca53f --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontConfigInterface.h @@ -0,0 +1,112 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontConfigInterface_DEFINED +#define SkFontConfigInterface_DEFINED + +#include "include/core/SkFontStyle.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkStream.h" +#include "include/core/SkTypeface.h" + +class SkFontMgr; + +/** + * \class SkFontConfigInterface + * + * A simple interface for remotable font management. + * The global instance can be found with RefGlobal(). + */ +class SK_API SkFontConfigInterface : public SkRefCnt { +public: + + /** + * Returns the global SkFontConfigInterface instance. If it is not + * nullptr, calls ref() on it. The caller must balance this with a call to + * unref(). The default SkFontConfigInterface is the result of calling + * GetSingletonDirectInterface. + */ + static sk_sp RefGlobal(); + + /** + * Replace the current global instance with the specified one. + */ + static void SetGlobal(sk_sp fc); + + /** + * This should be treated as private to the impl of SkFontConfigInterface. + * Callers should not change or expect any particular values. It is meant + * to be a union of possible storage types to aid the impl. + */ + struct FontIdentity { + FontIdentity() : fID(0), fTTCIndex(0) {} + + bool operator==(const FontIdentity& other) const { + return fID == other.fID && + fTTCIndex == other.fTTCIndex && + fString == other.fString; + } + bool operator!=(const FontIdentity& other) const { + return !(*this == other); + } + + uint32_t fID; + int32_t fTTCIndex; + SkString fString; + SkFontStyle fStyle; + + // If buffer is NULL, just return the number of bytes that would have + // been written. Will pad contents to a multiple of 4. + size_t writeToMemory(void* buffer = nullptr) const; + + // Recreate from a flattened buffer, returning the number of bytes read. + size_t readFromMemory(const void* buffer, size_t length); + }; + + /** + * Given a familyName and style, find the best match. + * + * If a match is found, return true and set its outFontIdentifier. + * If outFamilyName is not null, assign the found familyName to it + * (which may differ from the requested familyName). + * If outStyle is not null, assign the found style to it + * (which may differ from the requested style). + * + * If a match is not found, return false, and ignore all out parameters. + */ + virtual bool matchFamilyName(const char familyName[], + SkFontStyle requested, + FontIdentity* outFontIdentifier, + SkString* outFamilyName, + SkFontStyle* outStyle) = 0; + + /** + * Given a FontRef, open a stream to access its data, or return null + * if the FontRef's data is not available. The caller is responsible for + * deleting the stream when it is done accessing the data. + */ + virtual SkStreamAsset* openStream(const FontIdentity&) = 0; + + /** + * Return an SkTypeface for the given FontIdentity. + * + * The default implementation simply returns a new typeface built using data obtained from + * openStream() using the provided SkFontMgr, but derived classes may implement more + * complex caching schemes. + */ + virtual sk_sp makeTypeface(const FontIdentity& identity, sk_sp mgr); + + /** + * Return a singleton instance of a direct subclass that calls into + * libfontconfig. This does not affect the refcnt of the returned instance. + */ + static SkFontConfigInterface* GetSingletonDirectInterface(); + + using INHERITED = SkRefCnt; +}; + +#endif diff --git a/vendor/artifacts/skia/include/ports/SkFontMgr_FontConfigInterface.h b/vendor/artifacts/skia/include/ports/SkFontMgr_FontConfigInterface.h new file mode 100644 index 000000000..e709327f6 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontMgr_FontConfigInterface.h @@ -0,0 +1,24 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMgr_FontConfigInterface_DEFINED +#define SkFontMgr_FontConfigInterface_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +#include + +class SkFontMgr; +class SkFontConfigInterface; +class SkFontScanner; + +/** Creates a SkFontMgr which wraps a SkFontConfigInterface. */ +SK_API sk_sp SkFontMgr_New_FCI(sk_sp fci, + std::unique_ptr scanner); + +#endif // #ifndef SkFontMgr_FontConfigInterface_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontMgr_Fontations.h b/vendor/artifacts/skia/include/ports/SkFontMgr_Fontations.h new file mode 100644 index 000000000..f57a81ea8 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontMgr_Fontations.h @@ -0,0 +1,20 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMgr_fontations_DEFINED +#define SkFontMgr_fontations_DEFINED + +#include "include/core/SkRefCnt.h" + +class SkFontMgr; + +/** Create a font manager instantiating fonts using the Rust Fontations backend. + * This font manager does not support matching fonts, only instantiation. + */ +SK_API sk_sp SkFontMgr_New_Fontations_Empty(); + +#endif // #ifndef SkFontMgr_fontations_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontMgr_android.h b/vendor/artifacts/skia/include/ports/SkFontMgr_android.h new file mode 100644 index 000000000..3daa92de8 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontMgr_android.h @@ -0,0 +1,48 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMgr_android_DEFINED +#define SkFontMgr_android_DEFINED + +#include "include/core/SkRefCnt.h" + +#include + +class SkFontMgr; +class SkFontScanner; + +struct SkFontMgr_Android_CustomFonts { + /** When specifying custom fonts, indicates how to use system fonts. */ + enum SystemFontUse { + kOnlyCustom, /** Use only custom fonts. NDK compliant. */ + kPreferCustom, /** Use custom fonts before system fonts. */ + kPreferSystem /** Use system fonts before custom fonts. */ + }; + /** Whether or not to use system fonts. */ + SystemFontUse fSystemFontUse; + + /** Base path to resolve relative font file names. If a directory, should end with '/'. */ + const char* fBasePath; + + /** Optional custom configuration file to use. */ + const char* fFontsXml; + + /** Optional custom configuration file for fonts which provide fallback. + * In the new style (version > 21) fontsXml format is used, this should be NULL. + */ + const char* fFallbackFontsXml; + + /** Optional custom flag. If set to true the SkFontMgr will acquire all requisite + * system IO resources on initialization. + */ + bool fIsolated; +}; + +/** Create a font manager for Android. If 'custom' is NULL, use only system fonts. */ +SK_API sk_sp SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom, + std::unique_ptr scanner); +#endif // SkFontMgr_android_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontMgr_android_ndk.h b/vendor/artifacts/skia/include/ports/SkFontMgr_android_ndk.h new file mode 100644 index 000000000..6d67bfd56 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontMgr_android_ndk.h @@ -0,0 +1,27 @@ +/* + * Copyright 2024 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMgr_android_ndk_DEFINED +#define SkFontMgr_android_ndk_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +#include + +class SkFontMgr; +class SkFontScanner; + +/** Create a font manager for Android NDK. May return nullptr if unavailable (API < 29). + + The Android NDK Font API only works correctly in an Android Application process. + If running in a bare executable (for testing or the like) it will use the legacy fonts.xml data. + */ +SK_API sk_sp SkFontMgr_New_AndroidNDK(bool cacheFontFiles, + std::unique_ptr scanner); + +#endif // SkFontMgr_android_ndk_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontMgr_data.h b/vendor/artifacts/skia/include/ports/SkFontMgr_data.h new file mode 100644 index 000000000..12271411c --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontMgr_data.h @@ -0,0 +1,22 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkFontMgr_data_DEFINED +#define SkFontMgr_data_DEFINED + +#include "include/core/SkData.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSpan.h" +#include "include/core/SkTypes.h" + +class SkFontMgr; + +/** Create a custom font manager which wraps a collection of SkData-stored fonts. + * This font manager uses FreeType for rendering. + */ +SK_API sk_sp SkFontMgr_New_Custom_Data(SkSpan>); + +#endif // SkFontMgr_data_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontMgr_directory.h b/vendor/artifacts/skia/include/ports/SkFontMgr_directory.h new file mode 100644 index 000000000..b1a60fb4d --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontMgr_directory.h @@ -0,0 +1,21 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMgr_directory_DEFINED +#define SkFontMgr_directory_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +class SkFontMgr; + +/** Create a custom font manager which scans a given directory for font files. + * This font manager uses FreeType for rendering. + */ +SK_API sk_sp SkFontMgr_New_Custom_Directory(const char* dir); + +#endif // SkFontMgr_directory_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontMgr_empty.h b/vendor/artifacts/skia/include/ports/SkFontMgr_empty.h new file mode 100644 index 000000000..e5756421d --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontMgr_empty.h @@ -0,0 +1,21 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMgr_empty_DEFINED +#define SkFontMgr_empty_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +class SkFontMgr; + +/** Create a custom font manager that contains no built-in fonts. + * This font manager uses FreeType for rendering. + */ +SK_API sk_sp SkFontMgr_New_Custom_Empty(); + +#endif // SkFontMgr_empty_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontMgr_fontconfig.h b/vendor/artifacts/skia/include/ports/SkFontMgr_fontconfig.h new file mode 100644 index 000000000..4b87f5e78 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontMgr_fontconfig.h @@ -0,0 +1,24 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMgr_fontconfig_DEFINED +#define SkFontMgr_fontconfig_DEFINED + +#include +#include "include/core/SkRefCnt.h" +#include + +class SkFontMgr; + +/** Create a font manager around a FontConfig instance. + * If 'fc' is NULL, will use a new default config. + * Takes ownership of 'fc' and will call FcConfigDestroy on it. + */ +class SkFontScanner; +SK_API sk_sp SkFontMgr_New_FontConfig(FcConfig* fc, std::unique_ptr scanner); + +#endif // #ifndef SkFontMgr_fontconfig_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontMgr_fuchsia.h b/vendor/artifacts/skia/include/ports/SkFontMgr_fuchsia.h new file mode 100644 index 000000000..879e2e19a --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontMgr_fuchsia.h @@ -0,0 +1,21 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMgr_fuchsia_DEFINED +#define SkFontMgr_fuchsia_DEFINED + +#include + +#include "include/core/SkRefCnt.h" +#include + +class SkFontMgr; +class SkFontScanner; + +SK_API sk_sp SkFontMgr_New_Fuchsia(fuchsia::fonts::ProviderSyncPtr provider, std::unique_ptr scanner); + +#endif // SkFontMgr_fuchsia_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontMgr_mac_ct.h b/vendor/artifacts/skia/include/ports/SkFontMgr_mac_ct.h new file mode 100644 index 000000000..db5c46845 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontMgr_mac_ct.h @@ -0,0 +1,27 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFontMgr_mac_ct_DEFINED +#define SkFontMgr_mac_ct_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +#ifdef SK_BUILD_FOR_MAC +#import +#endif + +#ifdef SK_BUILD_FOR_IOS +#include +#endif + +class SkFontMgr; + +/** Create a font manager for CoreText. If the collection is nullptr the system default will be used. */ +SK_API extern sk_sp SkFontMgr_New_CoreText(CTFontCollectionRef); + +#endif // SkFontMgr_mac_ct_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkFontScanner_Fontations.h b/vendor/artifacts/skia/include/ports/SkFontScanner_Fontations.h new file mode 100644 index 000000000..778b8ca06 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontScanner_Fontations.h @@ -0,0 +1,15 @@ +/* +* Copyright 2024 Google LLC +* +* Use of this source code is governed by a BSD-style license that can be +* found in the LICENSE file. +*/ + +#ifndef SKFONTSCANNER_FONTATIONS_H_ +#define SKFONTSCANNER_FONTATIONS_H_ + +#include "include/core/SkFontScanner.h" + +SK_API std::unique_ptr SkFontScanner_Make_Fontations(); + +#endif // SKFONTSCANNER_FONTATIONS_H_ diff --git a/vendor/artifacts/skia/include/ports/SkFontScanner_FreeType.h b/vendor/artifacts/skia/include/ports/SkFontScanner_FreeType.h new file mode 100644 index 000000000..818409c96 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkFontScanner_FreeType.h @@ -0,0 +1,15 @@ +/* +* Copyright 2024 Google LLC +* +* Use of this source code is governed by a BSD-style license that can be +* found in the LICENSE file. +*/ + +#ifndef SKFONTSCANNER_FREETYPE_H_ +#define SKFONTSCANNER_FREETYPE_H_ + +#include "include/core/SkFontScanner.h" + +SK_API std::unique_ptr SkFontScanner_Make_FreeType(); + +#endif // SKFONTSCANNER_FREETYPE_H_ diff --git a/vendor/artifacts/skia/include/ports/SkImageGeneratorCG.h b/vendor/artifacts/skia/include/ports/SkImageGeneratorCG.h new file mode 100644 index 000000000..d002c21b2 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkImageGeneratorCG.h @@ -0,0 +1,28 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkImageGeneratorCG_DEFINED +#define SkImageGeneratorCG_DEFINED + +// This is needed as clients may override the target platform +// using SkUserConfig +#include "include/private/base/SkLoadUserConfig.h" + +#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) + +#include "include/core/SkData.h" +#include "include/core/SkImageGenerator.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include + +namespace SkImageGeneratorCG { +SK_API std::unique_ptr MakeFromEncodedCG(sk_sp); +} // namespace SkImageGeneratorCG + +#endif // defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) +#endif // SkImageGeneratorCG_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkImageGeneratorNDK.h b/vendor/artifacts/skia/include/ports/SkImageGeneratorNDK.h new file mode 100644 index 000000000..ead669a81 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkImageGeneratorNDK.h @@ -0,0 +1,40 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImageGeneratorNDK_DEFINED +#define SkImageGeneratorNDK_DEFINED + +#include "include/core/SkTypes.h" +#ifdef SK_ENABLE_NDK_IMAGES + +#include "include/core/SkData.h" +#include "include/core/SkImageGenerator.h" + +#include + +namespace SkImageGeneratorNDK { +/** + * Create a generator that uses the Android NDK's APIs for decoding images. + * + * Only supported on devices where __ANDROID_API__ >= 30. + * + * As with SkCodec, the SkColorSpace passed to getPixels() determines the + * type of color space transformations to apply. A null SkColorSpace means to + * apply none. + * + * A note on scaling: Calling getPixels() on the resulting SkImageGenerator + * with dimensions that do not match getInfo() requests a scale. For WebP + * files, dimensions smaller than those of getInfo are supported. For Jpeg + * files, dimensions of 1/2, 1/4, and 1/8 are supported. TODO: Provide an + * API like SkCodecImageGenerator::getScaledDimensions() to report which + * dimensions are supported? + */ +SK_API std::unique_ptr MakeFromEncodedNDK(sk_sp); +} + +#endif // SK_ENABLE_NDK_IMAGES +#endif // SkImageGeneratorNDK_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkImageGeneratorWIC.h b/vendor/artifacts/skia/include/ports/SkImageGeneratorWIC.h new file mode 100644 index 000000000..057aad3d5 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkImageGeneratorWIC.h @@ -0,0 +1,41 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImageGeneratorWIC_DEFINED +#define SkImageGeneratorWIC_DEFINED + +#include "include/private/base/SkFeatures.h" + +#if defined(SK_BUILD_FOR_WIN) + +#include "include/core/SkData.h" +#include "include/core/SkImageGenerator.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include + +/* + * Any Windows program that uses COM must initialize the COM library by calling + * the CoInitializeEx function. In addition, each thread that uses a COM + * interface must make a separate call to this function. + * + * For every successful call to CoInitializeEx, the thread must call + * CoUninitialize before it exits. + * + * SkImageGeneratorWIC requires the COM library and leaves it to the client to + * initialize COM for their application. + * + * For more information on initializing COM, please see: + * https://msdn.microsoft.com/en-us/library/windows/desktop/ff485844.aspx + */ +namespace SkImageGeneratorWIC { +SK_API std::unique_ptr MakeFromEncodedWIC(sk_sp); +} + +#endif // SK_BUILD_FOR_WIN +#endif // SkImageGeneratorWIC_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkTypeface_fontations.h b/vendor/artifacts/skia/include/ports/SkTypeface_fontations.h new file mode 100644 index 000000000..dc01f5e67 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkTypeface_fontations.h @@ -0,0 +1,24 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTypeface_fontations_DEFINED +#define SkTypeface_fontations_DEFINED + +#include "include/core/SkFontArguments.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypeface.h" +#include "include/core/SkTypes.h" + +#include + +SK_API sk_sp SkTypeface_Make_Fontations(std::unique_ptr fontData, + const SkFontArguments& args); + +SK_API sk_sp SkTypeface_Make_Fontations(sk_sp fontData, + const SkFontArguments& args); + +#endif diff --git a/vendor/artifacts/skia/include/ports/SkTypeface_mac.h b/vendor/artifacts/skia/include/ports/SkTypeface_mac.h new file mode 100644 index 000000000..ec68e0549 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkTypeface_mac.h @@ -0,0 +1,44 @@ +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTypeface_mac_DEFINED +#define SkTypeface_mac_DEFINED + +#include "include/core/SkTypeface.h" + +#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) + +#include + +#ifdef SK_BUILD_FOR_MAC +#import +#endif + +#ifdef SK_BUILD_FOR_IOS +#include +#endif + +/** + * Like the other Typeface make methods, this returns a new reference to the + * corresponding typeface for the specified CTFontRef. + */ +SK_API extern sk_sp SkMakeTypefaceFromCTFont(CTFontRef); + +/** + * Returns the platform-specific CTFontRef handle for a + * given SkTypeface. Note that the returned CTFontRef gets + * released when the source SkTypeface is destroyed. + * + * This method is deprecated. It may only be used by Blink Mac + * legacy code in special cases related to text-shaping + * with AAT fonts, clipboard handling and font fallback. + * See https://code.google.com/p/skia/issues/detail?id=3408 + */ +SK_API extern CTFontRef SkTypeface_GetCTFontRef(const SkTypeface* face); + +#endif // defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) +#endif // SkTypeface_mac_DEFINED diff --git a/vendor/artifacts/skia/include/ports/SkTypeface_win.h b/vendor/artifacts/skia/include/ports/SkTypeface_win.h new file mode 100644 index 000000000..45711ba23 --- /dev/null +++ b/vendor/artifacts/skia/include/ports/SkTypeface_win.h @@ -0,0 +1,63 @@ +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTypeface_win_DEFINED +#define SkTypeface_win_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypeface.h" +#include "include/core/SkTypes.h" + +#ifdef SK_BUILD_FOR_WIN + +#ifdef UNICODE +typedef struct tagLOGFONTW LOGFONTW; +typedef LOGFONTW LOGFONT; +#else +typedef struct tagLOGFONTA LOGFONTA; +typedef LOGFONTA LOGFONT; +#endif // UNICODE + +/** + * Like the other Typeface create methods, this returns a new reference to the + * corresponding typeface for the specified logfont. The caller is responsible + * for calling unref() when it is finished. + */ +SK_API sk_sp SkCreateTypefaceFromLOGFONT(const LOGFONT&); + +/** + * Copy the LOGFONT associated with this typeface into the lf parameter. Note + * that the lfHeight will need to be set afterwards, since the typeface does + * not track this (the paint does). + * typeface may be NULL, in which case we return the logfont for the default font. + */ +SK_API void SkLOGFONTFromTypeface(const SkTypeface* typeface, LOGFONT* lf); + +/** + * Set an optional callback to ensure that the data behind a LOGFONT is loaded. + * This will get called if Skia tries to access the data but hits a failure. + * Normally this is null, and is only required if the font data needs to be + * remotely (re)loaded. + */ +SK_API void SkTypeface_SetEnsureLOGFONTAccessibleProc(void (*)(const LOGFONT&)); + +// Experimental! +// +class SkFontMgr; +struct IDWriteFactory; +struct IDWriteFontCollection; +struct IDWriteFontFallback; + +SK_API sk_sp SkFontMgr_New_GDI(); +SK_API sk_sp SkFontMgr_New_DirectWrite(IDWriteFactory* factory = nullptr, + IDWriteFontCollection* collection = nullptr); +SK_API sk_sp SkFontMgr_New_DirectWrite(IDWriteFactory* factory, + IDWriteFontCollection* collection, + IDWriteFontFallback* fallback); + +#endif // SK_BUILD_FOR_WIN +#endif // SkTypeface_win_DEFINED diff --git a/vendor/artifacts/skia/include/private/BUILD.bazel b/vendor/artifacts/skia/include/private/BUILD.bazel new file mode 100644 index 000000000..76ee158a7 --- /dev/null +++ b/vendor/artifacts/skia/include/private/BUILD.bazel @@ -0,0 +1,74 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +SKSL_PRIVATE_HDRS = ["SkSLSampleUsage.h"] + +CORE_PRIV_HDRS = [ + # Files listed here will be available to Skia internals via the core_priv target. + "SkIDChangeListener.h", + "SkGainmapShader.h", + "SkGainmapInfo.h", + "SkHdrMetadata.h", + "SkPixelStorage.h", +] + +CORE_SRCS = [ + # We really don't want these headers to be used outside of SkPath and SkPathBuilder + # so we add it to core under srcs instead to enforce that. + "SkPathRef.h", + "SkWeakRefCnt.h", +] + +DECODE_SRCS_HDRS = [ + "SkEncodedInfo.h", + "SkExif.h", +] + +JPEG_DECODE_SRCS_HDRS = [ + "SkJpegMetadataDecoder.h", + "SkXmp.h", +] + +# In own skia_filegroup for mapping to the //gn/sksl.gni file. +skia_filegroup( + name = "sksl_private_hdrs", + srcs = SKSL_PRIVATE_HDRS, +) + +skia_filegroup( + name = "core_priv_hdrs", + srcs = CORE_PRIV_HDRS + SKSL_PRIVATE_HDRS, + visibility = ["//src/core:__pkg__"], +) + +skia_filegroup( + name = "core_srcs", + srcs = CORE_SRCS, + visibility = ["//src/core:__pkg__"], +) + +skia_filegroup( + name = "decode_srcs", + srcs = DECODE_SRCS_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +skia_filegroup( + name = "jpeg_decode_srcs", + srcs = JPEG_DECODE_SRCS_HDRS, + visibility = ["//src/codec:__pkg__"], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = SKSL_PRIVATE_HDRS + + CORE_PRIV_HDRS + + CORE_SRCS + + DECODE_SRCS_HDRS + + JPEG_DECODE_SRCS_HDRS, +) diff --git a/vendor/artifacts/skia/include/private/OWNERS b/vendor/artifacts/skia/include/private/OWNERS new file mode 100644 index 000000000..7cf12a2a7 --- /dev/null +++ b/vendor/artifacts/skia/include/private/OWNERS @@ -0,0 +1,4 @@ +# include/ has a restricted set of reviewers (to limit changes to public API) +# Files in this directory follow the same rules as the rest of Skia, though: + +file:../../OWNERS diff --git a/vendor/artifacts/skia/include/private/SkEncodedInfo.h b/vendor/artifacts/skia/include/private/SkEncodedInfo.h new file mode 100644 index 000000000..cd32447a5 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkEncodedInfo.h @@ -0,0 +1,249 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkEncodedInfo_DEFINED +#define SkEncodedInfo_DEFINED + +#include "include/core/SkAlphaType.h" +#include "include/core/SkColorSpace.h" +#include "include/core/SkColorType.h" +#include "include/core/SkData.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" +#include "include/private/SkHdrMetadata.h" +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkTo.h" +#include "modules/skcms/skcms.h" + +#include +#include +#include +#include + +namespace SkCodecs { +class ColorProfile; +} + +struct SK_API SkEncodedInfo { +public: + enum Alpha { + kOpaque_Alpha, + kUnpremul_Alpha, + + // Each pixel is either fully opaque or fully transparent. + // There is no difference between requesting kPremul or kUnpremul. + kBinary_Alpha, + }; + + /* + * We strive to make the number of components per pixel obvious through + * our naming conventions. + * Ex: kRGB has 3 components. kRGBA has 4 components. + * + * This sometimes results in redundant Alpha and Color information. + * Ex: kRGB images must also be kOpaque. + */ + enum Color { + // PNG, WBMP + kGray_Color, + + // PNG + kGrayAlpha_Color, + + // PNG with Skia-specific sBIT + // Like kGrayAlpha, except this expects to be treated as + // kAlpha_8_SkColorType, which ignores the gray component. If + // decoded to full color (e.g. kN32), the gray component is respected + // (so it can share code with kGrayAlpha). + kXAlpha_Color, + + // PNG + // 565 images may be encoded to PNG by specifying the number of + // significant bits for each channel. This is a strange 565 + // representation because the image is still encoded with 8 bits per + // component. + k565_Color, + + // PNG, GIF, BMP + kPalette_Color, + + // PNG, RAW + kRGB_Color, + kRGBA_Color, + + // BMP + kBGR_Color, + kBGRX_Color, + kBGRA_Color, + + // JPEG, WEBP + kYUV_Color, + + // WEBP + kYUVA_Color, + + // JPEG + // Photoshop actually writes inverted CMYK data into JPEGs, where zero + // represents 100% ink coverage. For this reason, we treat CMYK JPEGs + // as having inverted CMYK. libjpeg-turbo warns that this may break + // other applications, but the CMYK JPEGs we see on the web expect to + // be treated as inverted CMYK. + kInvertedCMYK_Color, + kYCCK_Color, + }; + + static SkEncodedInfo Make( + int width, int height, Color color, Alpha alpha, int bitsPerComponent); + + static SkEncodedInfo Make( + int width, int height, Color color, Alpha alpha, int bitsPerComponent, + std::unique_ptr profile); + + static SkEncodedInfo Make( + int width, int height, Color color, Alpha alpha, int bitsPerComponent, + std::unique_ptr profile, int colorDepth); + + static SkEncodedInfo Make( + int width, int height, Color color, Alpha alpha, int bitsPerComponent, + int colorDepth, + std::unique_ptr profile, const skhdr::Metadata& hdrMetadata); + + /* + * Returns a recommended SkImageInfo. + * + * TODO: Leave this up to the client. + */ + SkImageInfo makeImageInfo() const; + + int width() const { return fWidth; } + int height() const { return fHeight; } + Color color() const { return fColor; } + Alpha alpha() const { return fAlpha; } + bool opaque() const { return fAlpha == kOpaque_Alpha; } + + // TODO(https://issues.skia.org/issues/464217864): Remove direct access to the + // skcms_ICCProfile and change profileData() to serialize a new profile. + const skcms_ICCProfile* profile() const; + sk_sp profileData() const; + const SkCodecs::ColorProfile* colorProfile() const { + return fColorProfile.get(); + } + + uint8_t bitsPerComponent() const { return fBitsPerComponent; } + + uint8_t bitsPerPixel() const { + switch (fColor) { + case kGray_Color: + return fBitsPerComponent; + case kXAlpha_Color: + case kGrayAlpha_Color: + return 2 * fBitsPerComponent; + case kPalette_Color: + return fBitsPerComponent; + case kRGB_Color: + case kBGR_Color: + case kYUV_Color: + case k565_Color: + return 3 * fBitsPerComponent; + case kRGBA_Color: + case kBGRA_Color: + case kBGRX_Color: + case kYUVA_Color: + case kInvertedCMYK_Color: + case kYCCK_Color: + return 4 * fBitsPerComponent; + } + SkASSERT(false); + return 0; + } + + SkEncodedInfo(const SkEncodedInfo& orig) = delete; + SkEncodedInfo& operator=(const SkEncodedInfo&) = delete; + + SkEncodedInfo(SkEncodedInfo&& orig); + SkEncodedInfo& operator=(SkEncodedInfo&&); + + // Explicit copy method, to avoid accidental copying. + SkEncodedInfo copy() const; + + // Return number of bits of R/G/B channel + uint8_t getColorDepth() const { + return fColorDepth; + } + + // Return the HDR metadata associated with this image. Note that even SDR images can include + // HDR metadata (e.g, indicating how to inverse tone map when displayed on an HDR display). + const skhdr::Metadata& getHdrMetadata() const { + return fHdrMetadata; + } + + ~SkEncodedInfo(); + +private: + SkEncodedInfo( + int width, int height, Color color, Alpha alpha, uint8_t bitsPerComponent, + uint8_t colorDepth, + std::unique_ptr profile, const skhdr::Metadata& hdrMetadata); + + static void VerifyColor(Color color, Alpha alpha, int bitsPerComponent) { + // Avoid `-Wunused-parameter` warnings on non-debug builds. + std::ignore = alpha; + std::ignore = bitsPerComponent; + + switch (color) { + case kGray_Color: + SkASSERT(kOpaque_Alpha == alpha); + return; + case kGrayAlpha_Color: + SkASSERT(kOpaque_Alpha != alpha); + return; + case kPalette_Color: + SkASSERT(16 != bitsPerComponent); + return; + case kRGB_Color: + case kBGR_Color: + case kBGRX_Color: + SkASSERT(kOpaque_Alpha == alpha); + SkASSERT(bitsPerComponent >= 8); + return; + case kYUV_Color: + case kInvertedCMYK_Color: + case kYCCK_Color: + SkASSERT(kOpaque_Alpha == alpha); + SkASSERT(8 == bitsPerComponent); + return; + case kRGBA_Color: + SkASSERT(bitsPerComponent >= 8); + return; + case kBGRA_Color: + case kYUVA_Color: + SkASSERT(8 == bitsPerComponent); + return; + case kXAlpha_Color: + SkASSERT(kUnpremul_Alpha == alpha); + SkASSERT(8 == bitsPerComponent); + return; + case k565_Color: + SkASSERT(kOpaque_Alpha == alpha); + SkASSERT(8 == bitsPerComponent); + return; + } + SkASSERT(false); // Unrecognized `color` enum value. + } + + int fWidth; + int fHeight; + Color fColor; + Alpha fAlpha; + uint8_t fBitsPerComponent; + uint8_t fColorDepth; + std::unique_ptr fColorProfile; + skhdr::Metadata fHdrMetadata; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/SkExif.h b/vendor/artifacts/skia/include/private/SkExif.h new file mode 100644 index 000000000..7ff5b8bb1 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkExif.h @@ -0,0 +1,69 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkExif_DEFINED +#define SkExif_DEFINED + +#include "include/codec/SkEncodedOrigin.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include +#include + +class SkData; + +namespace SkExif { + +// Tag values that are parsed by Parse and stored in Metadata. +static constexpr uint16_t kOriginTag = 0x112; +static constexpr uint16_t kResolutionUnitTag = 0x0128; +static constexpr uint16_t kXResolutionTag = 0x011a; +static constexpr uint16_t kYResolutionTag = 0x011b; +static constexpr uint16_t kPixelXDimensionTag = 0xa002; +static constexpr uint16_t kPixelYDimensionTag = 0xa003; + +struct Metadata { + // The image orientation. + std::optional fOrigin; + + // The HDR headroom property. + // https://developer.apple.com/documentation/appkit/images_and_pdf/applying_apple_hdr_effect_to_your_photos + std::optional fHdrHeadroom; + + // Resolution. + std::optional fResolutionUnit; + std::optional fXResolution; + std::optional fYResolution; + + // Size in pixels. + std::optional fPixelXDimension; + std::optional fPixelYDimension; +}; + +/* + * Parse the metadata specified in |data| and write them to |metadata|. Stop only at an + * unrecoverable error (allow truncated input). + */ +void SK_API Parse(Metadata& metadata, const SkData* data); + +/* + * Write exif data that includes the values in |metadata| and returns it as SkData + * untruncated. Return nullptr if a write to the data stream fails or if + * |metadata.fHdrHeadroom| has value. + * This function cannot write an IFD entry based on the HdrHeadroom value because + * the information of maker33 and maker48 are lost in decoding. + * For metadata that belongs in a subIFD the function will write it to one and + * store it after the root IFD. + * Data that does not fit within kSizeEntry, is appended to the end of the data, + * after the subIFD if it exists. + */ +sk_sp WriteExif(Metadata& metadata); + +} // namespace SkExif + +#endif diff --git a/vendor/artifacts/skia/include/private/SkGainmapInfo.h b/vendor/artifacts/skia/include/private/SkGainmapInfo.h new file mode 100644 index 000000000..b436fa93c --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkGainmapInfo.h @@ -0,0 +1,140 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkGainmapInfo_DEFINED +#define SkGainmapInfo_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkColorSpace.h" +#include "include/core/SkRefCnt.h" +class SkData; + +/** + * Gainmap rendering parameters. Suppose our display has HDR to SDR ratio of H and we wish to + * display an image with gainmap on this display. Let B be the pixel value from the base image + * in a color space that has the primaries of the base image and a linear transfer function. Let + * G be the pixel value from the gainmap. Let D be the output pixel in the same color space as B. + * The value of D is computed as follows: + * + * First, let W be a weight parameter determing how much the gainmap will be applied. + * W = clamp((log(H) - log(fDisplayRatioSdr)) / + * (log(fDisplayRatioHdr) - log(fDisplayRatioSdr), 0, 1) + * + * Next, let L be the gainmap value in log space. We compute this from the value G that was + * sampled from the texture as follows: + * L = mix(log(fGainmapRatioMin), log(fGainmapRatioMax), pow(G, fGainmapGamma)) + * + * Finally, apply the gainmap to compute D, the displayed pixel. If the base image is SDR then + * compute: + * D = (B + fEpsilonSdr) * exp(L * W) - fEpsilonHdr + * If the base image is HDR then compute: + * D = (B + fEpsilonHdr) * exp(L * (W - 1)) - fEpsilonSdr + * + * In the above math, log() is a natural logarithm and exp() is natural exponentiation. Note, + * however, that the base used for the log() and exp() functions does not affect the results of + * the computation (it cancels out, as long as the same base is used throughout). + * + * This product includes Gain Map technology under license by Adobe. + */ +struct SkGainmapInfo { + /** + * Parameters for converting the gainmap from its image encoding to log space. These are + * specified per color channel. The alpha value is unused. + */ + SkColor4f fGainmapRatioMin = {1.f, 1.f, 1.f, 1.0}; + SkColor4f fGainmapRatioMax = {2.f, 2.f, 2.f, 1.0}; + SkColor4f fGainmapGamma = {1.f, 1.f, 1.f, 1.f}; + + /** + * Parameters sometimes used in gainmap computation to avoid numerical instability. + */ + SkColor4f fEpsilonSdr = {0.f, 0.f, 0.f, 1.0}; + SkColor4f fEpsilonHdr = {0.f, 0.f, 0.f, 1.0}; + + /** + * If the output display's HDR to SDR ratio is less or equal than fDisplayRatioSdr then the SDR + * rendition is displayed. If the output display's HDR to SDR ratio is greater or equal than + * fDisplayRatioHdr then the HDR rendition is displayed. If the output display's HDR to SDR + * ratio is between these values then an interpolation between the two is displayed using the + * math above. + */ + float fDisplayRatioSdr = 1.f; + float fDisplayRatioHdr = 2.f; + + /** + * Whether the base image is the SDR image or the HDR image. + */ + enum class BaseImageType { + kSDR, + kHDR, + }; + BaseImageType fBaseImageType = BaseImageType::kSDR; + + /** + * The type of the gainmap image. If the type is kApple, then the gainmap image was originally + * encoded according to the specification at [0], and can be converted to the kDefault type by + * applying the transformation described at [1]. + * [0] https://developer.apple.com/documentation/appkit/images_and_pdf/ + * applying_apple_hdr_effect_to_your_photos + * [1] https://docs.google.com/document/d/1iUpYAThVV_FuDdeiO3t0vnlfoA1ryq0WfGS9FuydwKc + */ + enum class Type { + kDefault, + kApple, + }; + Type fType = Type::kDefault; + + /** + * If specified, color space to apply the gainmap in, otherwise the base image's color space + * is used. Only the color primaries are used, the transfer function is irrelevant. + */ + sk_sp fGainmapMathColorSpace = nullptr; + + /** + * Return true if this can be encoded as an UltraHDR v1 image. + */ + bool isUltraHDRv1Compatible() const; + + /** + * If |data| contains an ISO 21496-1 version that is supported, return true. Otherwise return + * false. + */ + static bool ParseVersion(const SkData* data); + + /** + * If |data| constains ISO 21496-1 metadata then parse that metadata then use it to populate + * |info| and return true, otherwise return false. If |data| indicates that that the base image + * color space primaries should be used for gainmap application then set + * |fGainmapMathColorSpace| to nullptr, otherwise set |fGainmapMathColorSpace| to sRGB (the + * default, to be overwritten by the image decoder). + */ + static bool Parse(const SkData* data, SkGainmapInfo& info); + + /** + * Serialize an ISO 21496-1 version 0 blob containing only the version structure. + */ + static sk_sp SerializeVersion(); + + /** + * Serialize an ISO 21496-1 version 0 blob containing this' gainmap parameters. + */ + sk_sp serialize() const; + + inline bool operator==(const SkGainmapInfo& other) const { + return fGainmapRatioMin == other.fGainmapRatioMin && + fGainmapRatioMax == other.fGainmapRatioMax && fGainmapGamma == other.fGainmapGamma && + fEpsilonSdr == other.fEpsilonSdr && fEpsilonHdr == other.fEpsilonHdr && + fDisplayRatioSdr == other.fDisplayRatioSdr && + fDisplayRatioHdr == other.fDisplayRatioHdr && + fBaseImageType == other.fBaseImageType && fType == other.fType && + SkColorSpace::Equals(fGainmapMathColorSpace.get(), + other.fGainmapMathColorSpace.get()); + } + inline bool operator!=(const SkGainmapInfo& other) const { return !(*this == other); } +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/SkGainmapShader.h b/vendor/artifacts/skia/include/private/SkGainmapShader.h new file mode 100644 index 000000000..4db739e63 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkGainmapShader.h @@ -0,0 +1,60 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkGainmapShader_DEFINED +#define SkGainmapShader_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkColorSpace; +class SkShader; +class SkImage; +struct SkGainmapInfo; +struct SkRect; +struct SkSamplingOptions; + +/** + * A gainmap shader will apply a gainmap to an base image using the math described alongside the + * definition of SkGainmapInfo. + */ +class SK_API SkGainmapShader { +public: + /** + * Make a gainmap shader. + * + * When sampling the base image baseImage, the rectangle baseRect will be sampled to map to + * the rectangle dstRect. Sampling will be done according to baseSamplingOptions. + * + * When sampling the gainmap image gainmapImage, the rectangle gainmapRect will be sampled to + * map to the rectangle dstRect. Sampling will be done according to gainmapSamplingOptions. + * + * The gainmap will be applied according to the HDR to SDR ratio specified in dstHdrRatio. + */ + static sk_sp Make(const sk_sp& baseImage, + const SkRect& baseRect, + const SkSamplingOptions& baseSamplingOptions, + const sk_sp& gainmapImage, + const SkRect& gainmapRect, + const SkSamplingOptions& gainmapSamplingOptions, + const SkGainmapInfo& gainmapInfo, + const SkRect& dstRect, + float dstHdrRatio); + + static sk_sp Make(const sk_sp& baseImage, + const SkRect& baseRect, + const SkSamplingOptions& baseSamplingOptions, + const sk_sp& gainmapImage, + const SkRect& gainmapRect, + const SkSamplingOptions& gainmapSamplingOptions, + const SkGainmapInfo& gainmapInfo, + const SkRect& dstRect, + float dstHdrRatio, + sk_sp dstColorSpace); +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/SkHdrMetadata.h b/vendor/artifacts/skia/include/private/SkHdrMetadata.h new file mode 100644 index 000000000..aae345df9 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkHdrMetadata.h @@ -0,0 +1,357 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkHdrMetadata_DEFINED +#define SkHdrMetadata_DEFINED + +#include "include/core/SkColorSpace.h" +#include "include/core/SkData.h" +#include "include/private/base/SkAPI.h" + +#include +#include +#include +#include +#include + +class SkColorFilter; +class SkData; +class SkString; + +namespace skhdr { + +/** + * Content light level metadata. + * The semantics of this metadata is defined in: + * ANSI/CTA-861-H A DTV Profile for Uncompressed High Speed Digital Interfaces + * Annex P Calculation of MaxCLL and MaxFALL + * Slightly different semantics for this metadata are defined in: + * Portable Network Graphics (PNG) Specification (Third Edition) + * 11.3.2.8 cLLI Content Light Level Information + * https://www.w3.org/TR/png-3/#cLLI-chunk + * This metadata should only be used in ways that work with both semantics. + */ +struct SK_API ContentLightLevelInformation { + float fMaxCLL = 0.f; + float fMaxFALL = 0.f; + + /** + * Decode from the binary encoding listed at: + * AV1 Bitstream & Decoding Process Specification Version 1.0.0 Errata 1 + * https://aomediacodec.github.io/av1-spec/av1-spec.pdf + * 5.8.3 Metadata high dynamic range content light level syntax + * This encoding is equivalent to: + * ITU-T H.265 (V10) (07/2024) + * D.2.35 Content light level information SEI message syntax + * Return false if parsing fails. + */ + bool parse(const SkData* data); + + /** + * Serialize to the encoding used by parse(). + */ + sk_sp serialize() const; + + /** + * Helper functions for accessing members as uint16_t, which is often needed when interacting + * with libraries using the CTA semantics. + */ + static ContentLightLevelInformation MakeUint16(uint16_t maxCLL, uint16_t maxFALL) { + return { .fMaxCLL = static_cast(maxCLL), .fMaxFALL = static_cast(maxFALL) }; + } + uint16_t getUint16MaxCLL() const { + return static_cast(std::clamp(std::round(fMaxCLL), 0.f, 65535.f)); + } + uint16_t getUint16MaxFALL() const { + return static_cast(std::clamp(std::round(fMaxFALL), 0.f, 65535.f)); + } + + /** + * Decode from the binary encoding listed at: + * Portable Network Graphics (PNG) Specification (Third Edition) + * 11.3.2.8 cLLI Content Light Level Information + * https://www.w3.org/TR/png-3/#cLLI-chunk + * This encoding is not equivalent to the encoding used by parse(). + * Return false if parsing fails. + */ + bool parsePngChunk(const SkData* data); + + /** + * Serialize to the encoding used by parsePngChunk(). + */ + sk_sp serializePngChunk() const; + + /** + * Return a human-readable description. + */ + SkString toString() const; + + bool operator==(const ContentLightLevelInformation& other) const; + bool operator!=(const ContentLightLevelInformation& other) const { + return !(*this == other); + } +}; + +/** + * Mastering display color volume metadata. + * The semantics of this metadata is defined in: + * SMPTE ST 2086:2018 Mastering Display Color Volume Metadata Supporting + * High Luminance and Wide Color Gamut Images + */ +struct SK_API MasteringDisplayColorVolume { + SkColorSpacePrimaries fDisplayPrimaries = {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; + float fMaximumDisplayMasteringLuminance = 0.f; + float fMinimumDisplayMasteringLuminance = 0.f; + + /** + * The encoding as defined in: + * AV1 Bitstream & Decoding Process Specification Version 1.0.0 Errata 1 + * https://aomediacodec.github.io/av1-spec/av1-spec.pdf + * 5.8.4 Metadata high dynamic range mastering display color volume syntax + * This encoding is equivalent to: + * ITU-T H.265 (V10) (07/2024) + * D.2.35 Content light level information SEI message syntax + * This encoding is also equivalent to: + * Portable Network Graphics (PNG) Specification (Third Edition) + * 11.3.2.7 mDCV Mastering Display Color Volume + * https://www.w3.org/TR/png-3/#mDCV-chunk + * Return false if parsing fails. + */ + bool parse(const SkData* data); + + /** + * Serialize to the encoding used by parse(). + */ + sk_sp serialize() const; + + /** + * Return a human-readable description. + */ + SkString toString() const; + + bool operator==(const MasteringDisplayColorVolume& other) const; + bool operator!=(const MasteringDisplayColorVolume& other) const { + return !(*this == other); + } +}; + +/** + * Adaptive Global Tone Map + * This structure contains the metadata items from the ColorVolumeTransform metadata group + * in Clause 7.1: Metadata set of SMPTE ST 2094-50: Dynamic metadata for color volume transform + * Application #5 + * https://github.com/SMPTE/st2094-50 + * WARNING: This specification is still a DRAFT and is subject to change before publication. + */ +struct SK_API AdaptiveGlobalToneMap { + // A GainCurve metadata group. + struct SK_API GainCurve { + // Structure holding one entry of the GainCurveControlPointX, GainCurveControlPointY, and + // GainCurveControlPointM metadata items. + struct ControlPoint { + float fX = 0.f; + float fY = 0.f; + float fM = 0.f; + + bool operator==(const ControlPoint& other) const { + return fX == other.fX && fY == other.fY && fM == other.fM; + } + }; + + // The size of this vector is the value of the GainCurveNumControlPoints metadata item. + static constexpr size_t kMinNumControlPoints = 1u; + static constexpr size_t kMaxNumControlPoints = 32u; + std::vector fControlPoints = {}; + + bool operator==(const GainCurve& other) const { + return fControlPoints == other.fControlPoints; + } + }; + + // A ComponentMix metadata group. + struct SK_API ComponentMixingFunction { + // The ComponentMixRed/Green/Blue/Max/Min/Component metadata items. + float fRed = 0.f; + float fGreen = 0.f; + float fBlue = 0.f; + float fMax = 0.f; + float fMin = 0.f; + float fComponent = 0.f; + + bool operator==(const ComponentMixingFunction& other) const { + return fRed == other.fRed && fGreen == other.fGreen && fBlue == other.fBlue && + fMax == other.fMax && fMin == other.fMin && fComponent == other.fComponent; + } + }; + + // A ColorGainFunction metadata group. + struct SK_API ColorGainFunction { + // The ComponentMix metadata group. + ComponentMixingFunction fComponentMixing = {}; + + // The GainCurve metadata group. + GainCurve fGainCurve = {}; + + bool operator==(const ColorGainFunction& other) const { + return fComponentMixing == other.fComponentMixing && fGainCurve == other.fGainCurve; + } + }; + + // Structure holding the metadata items and groups for an alternate image. + struct SK_API AlternateImage { + // The AlternateHdrHeadroom metadata item. + float fHdrHeadroom = 0.f; + + // The ColorGainFunction metadata group. + ColorGainFunction fColorGainFunction = {}; + + bool operator==(const AlternateImage& other) const { + return fHdrHeadroom == other.fHdrHeadroom && fColorGainFunction == other.fColorGainFunction; + } + }; + + // HeadroomAdaptiveToneMap metadata group. + struct SK_API HeadroomAdaptiveToneMap { + // The BaselineHdrHeadroom metadata item. + float fBaselineHdrHeadroom = 0.f; + + // The GainApplicationSpaceColorPrimaries metadata item. + SkColorSpacePrimaries fGainApplicationSpacePrimaries = + {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f}; + + // The size of this vector is the NumAlternateImages metadata item. + static constexpr size_t kMaxNumAlternateImages = 4u; + std::vector fAlternateImages = {}; + + bool operator==(const HeadroomAdaptiveToneMap& other) const { + return fBaselineHdrHeadroom == other.fBaselineHdrHeadroom && + fGainApplicationSpacePrimaries == other.fGainApplicationSpacePrimaries && + fAlternateImages == other.fAlternateImages; + } + }; + + // The default value for the HdrReferenceWhite metadata item. + static constexpr float kDefaultHdrReferenceWhite = 203.f; + + // The HdrReferenceWhite metadata item. + float fHdrReferenceWhite = kDefaultHdrReferenceWhite; + + // The HeadroomAdaptiveToneMap metadata group. + std::optional fHeadroomAdaptiveToneMap = std::nullopt; + + /** + * Decode from the binary encoding in Annex C. + */ + bool parse(const SkData* data); + + /** + * Serialize to the encoding used by parse(). + */ + sk_sp serialize() const; + + /** + * Return a human-readable description. + */ + SkString toString() const; + + /** + * Return true if this metadata satisfies all normative constraints. + */ + bool isValid() const; + + bool operator==(const AdaptiveGlobalToneMap& other) const { + return fHdrReferenceWhite == other.fHdrReferenceWhite && + fHeadroomAdaptiveToneMap == other.fHeadroomAdaptiveToneMap; + } +}; + +/** + * Structure containing all HDR metadata that can be attached to an image or video frame. + */ +class SK_API Metadata { + public: + /** + * Return a container with no metadata. + */ + static Metadata MakeEmpty(); + + /** + * If there does not exists Content Light Level Information metadata, then return false. + * Otherwise return true and if `clli` is non-nullptr then write the metadata to `clli`. + */ + bool getContentLightLevelInformation(ContentLightLevelInformation* clli) const; + + /** + * Set the Content Light Level Information metadata. + */ + void setContentLightLevelInformation(const ContentLightLevelInformation& clli); + + /** + * If there does not exists Mastering Display Color Volume metadata, then return false. + * Otherwise return true and if `mdcv` is non-nullptr then write the metadata to `mdcv`. + */ + bool getMasteringDisplayColorVolume(MasteringDisplayColorVolume* mdcv) const; + + /** + * Set the Mastering Display Color Volume metadata. + */ + void setMasteringDisplayColorVolume(const MasteringDisplayColorVolume& mdcv); + + /** + * If there does not exists Adaptive Global Tone Map metadata, then return false. + * Otherwise return true and if `agtm` is non-nullptr then write the metadata to `agtm`. + */ + bool getAdaptiveGlobalToneMap(AdaptiveGlobalToneMap* agtm) const; + + /** + * Set the Adaptive Global Tone Map metadata. + */ + void setAdaptiveGlobalToneMap(const AdaptiveGlobalToneMap& agtm); + + /** + * Return the serialized Adaptive Global Tone Mapping metadata, or nullptr if none has been set. + */ + sk_sp getSerializedAgtm() const; + + /** + * Set the serialized Adaptive Global Tone Mapping metadata. + */ + void setSerializedAgtm(sk_sp); + + /** + * Return a human-readable description. + */ + SkString toString() const; + + /** + * Return the SkColorFilter to tone map to the specified targeted HDR headroom. + * + * The `inputColorSpace` parameter is the color space of the input image that will be + * used with the image. If it is PQ or HLG, then the color filter will effectively + * reinterpret the image as having the HDR reference white parameter indicated in the + * metadata. + * + * If `inputColorSpace` is PQ or HLG, then a default tone mapping will be provided, + * inferring the baseline HDR headroom from the CLLI or MDCV metadata, if present. + */ + sk_sp makeToneMapColorFilter( + float targetedHdrHeadroom, const SkColorSpace* inputColorSpace = nullptr) const; + + bool operator==(const Metadata& other) const; + bool operator!=(const Metadata& other) const { + return !(*this == other); + } + + private: + std::optional fContentLightLevelInformation; + std::optional fMasteringDisplayColorVolume; + std::optional fAdaptiveGlobalToneMap; +}; + +} // namespace skhdr + +#endif diff --git a/vendor/artifacts/skia/include/private/SkIDChangeListener.h b/vendor/artifacts/skia/include/private/SkIDChangeListener.h new file mode 100644 index 000000000..8ebb6ca18 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkIDChangeListener.h @@ -0,0 +1,76 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkIDChangeListener_DEFINED +#define SkIDChangeListener_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkMutex.h" +#include "include/private/base/SkTArray.h" +#include "include/private/base/SkThreadAnnotations.h" + +#include + +/** + * Used to be notified when a gen/unique ID is invalidated, typically to preemptively purge + * associated items from a cache that are no longer reachable. The listener can + * be marked for deregistration if the cached item is remove before the listener is + * triggered. This prevents unbounded listener growth when cache items are routinely + * removed before the gen ID/unique ID is invalidated. + */ +class SkIDChangeListener : public SkRefCnt { +public: + SkIDChangeListener(); + + ~SkIDChangeListener() override; + + virtual void changed() = 0; + + /** + * Mark the listener is no longer needed. It should be removed and changed() should not be + * called. + */ + void markShouldDeregister() { fShouldDeregister.store(true, std::memory_order_relaxed); } + + /** Indicates whether markShouldDeregister was called. */ + bool shouldDeregister() { return fShouldDeregister.load(std::memory_order_acquire); } + + /** Manages a list of SkIDChangeListeners. */ + class List { + public: + List(); + + ~List(); + + /** + * Add a new listener to the list. It must not already be deregistered. Also clears out + * previously deregistered listeners. + */ + void add(sk_sp listener) SK_EXCLUDES(fMutex); + + /** + * The number of registered listeners (including deregisterd listeners that are yet-to-be + * removed. + */ + int count() const SK_EXCLUDES(fMutex); + + /** Calls changed() on all listeners that haven't been deregistered and resets the list. */ + void changed() SK_EXCLUDES(fMutex); + + /** Resets without calling changed() on the listeners. */ + void reset() SK_EXCLUDES(fMutex); + + private: + mutable SkMutex fMutex; + skia_private::STArray<1, sk_sp> fListeners SK_GUARDED_BY(fMutex); + }; + +private: + std::atomic fShouldDeregister; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/SkJpegGainmapEncoder.h b/vendor/artifacts/skia/include/private/SkJpegGainmapEncoder.h new file mode 100644 index 000000000..3409b45aa --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkJpegGainmapEncoder.h @@ -0,0 +1,48 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkJpegGainmapEncoder_DEFINED +#define SkJpegGainmapEncoder_DEFINED + +#include "include/encode/SkJpegEncoder.h" + +class SkPixmap; +class SkWStream; +struct SkGainmapInfo; + +class SK_API SkJpegGainmapEncoder { +public: + /** + * Encode an UltraHDR image to |dst|. + * + * The base image is specified by |base|, and |baseOptions| controls the encoding behavior for + * the base image. + * + * The gainmap image is specified by |gainmap|, and |gainmapOptions| controls the encoding + * behavior for the gainmap image. + * + * The rendering behavior of the gainmap image is provided in |gainmapInfo|. + * + * If |baseOptions| or |gainmapOptions| specify XMP metadata, then that metadata will be + * overwritten. + * + * Returns true on success. Returns false on an invalid or unsupported |src|. + */ + static bool EncodeHDRGM(SkWStream* dst, + const SkPixmap& base, + const SkJpegEncoder::Options& baseOptions, + const SkPixmap& gainmap, + const SkJpegEncoder::Options& gainmapOptions, + const SkGainmapInfo& gainmapInfo); + + /** + * Write a Multi Picture Format containing the |imageCount| images specified by |images|. + */ + static bool MakeMPF(SkWStream* dst, const SkData** images, size_t imageCount); +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/SkJpegMetadataDecoder.h b/vendor/artifacts/skia/include/private/SkJpegMetadataDecoder.h new file mode 100644 index 000000000..ff201fef1 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkJpegMetadataDecoder.h @@ -0,0 +1,103 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkJpegMetadataDecoder_DEFINED +#define SkJpegMetadataDecoder_DEFINED + +#include "include/core/SkData.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +#include +#include + +struct SkGainmapInfo; + +/** + * An interface that can be used to extract metadata from an encoded JPEG file. + */ +class SK_API SkJpegMetadataDecoder { +public: + SkJpegMetadataDecoder() {} + virtual ~SkJpegMetadataDecoder() {} + + SkJpegMetadataDecoder(const SkJpegMetadataDecoder&) = delete; + SkJpegMetadataDecoder& operator=(const SkJpegMetadataDecoder&) = delete; + + /** + * A segment from a JPEG file. This is usually populated from a jpeg_marker_struct. + */ + struct SK_API Segment { + Segment(uint8_t marker, sk_sp data) + : fMarker(marker), fData(std::move(data)) {} + + // The segment's marker. + uint8_t fMarker = 0; + + // The segment's parameters (not including the marker and parameter length). + sk_sp fData; + }; + + /** + * Create metadata for the specified segments from a JPEG file's header (defined as all segments + * before the first StartOfScan). This may return nullptr. + */ + static std::unique_ptr Make(std::vector headerSegments); + + /** + * Create metadata for the specified encoded JPEG file. This may return nullptr. + */ + static std::unique_ptr Make(sk_sp data); + + /** + * Return the Exif data attached to the image (if any) and nullptr otherwise. If |copyData| is + * false, then the returned SkData may directly reference the data provided when this object was + * created. + */ + virtual sk_sp getExifMetadata(bool copyData) const = 0; + + /** + * Return the ICC profile of the image if any, and nullptr otherwise. If |copyData| is false, + * then the returned SkData may directly reference the data provided when this object was + * created. + */ + virtual sk_sp getICCProfileData(bool copyData) const = 0; + + /** + * Return the ISO 21496-1 metadata, if any, and nullptr otherwise. If |copyData| is false, + * then the returned SkData may directly reference the data provided when this object was + * created. + */ + virtual sk_sp getISOGainmapMetadata(bool copyData) const = 0; + + /** + * Return true if there is a possibility that this image contains a gainmap image. + */ + virtual bool mightHaveGainmapImage() const = 0; + + /** + * Given a JPEG encoded image |baseImageData|, return in |outGainmapImageData| the JPEG encoded + * gainmap image and return in |outGainmapInfo| its gainmap rendering parameters. Return true if + * both output variables were successfully populated, otherwise return false. + */ + virtual std::pair, SkGainmapInfo> findGainmapImage( + sk_sp) const = 0; + + // deprecated + virtual bool findGainmapImage(sk_sp baseImageData, + sk_sp& outGainmapImagedata, + SkGainmapInfo& outGainmapInfo) = 0; + + /** + * Return the first JUMBF superbox, if any, and nullptr otherwise. If |copyData| is false, + * then the returned SkData may directly reference the data provided when this object was + * created. + */ + virtual sk_sp getJUMBFMetadata(bool copyData) const = 0; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/SkPathRef.h b/vendor/artifacts/skia/include/private/SkPathRef.h new file mode 100644 index 000000000..086c5ea36 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkPathRef.h @@ -0,0 +1,90 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPathRef_DEFINED +#define SkPathRef_DEFINED + +#include "include/core/SkArc.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkPathTypes.h" // IWYU pragma: keep +#include "include/core/SkPoint.h" +#include "include/core/SkRRect.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/SkIDChangeListener.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkSpan_impl.h" +#include "include/private/base/SkTArray.h" +#include "include/private/base/SkTo.h" + +#include +#include +#include +#include + +class SkMatrix; + +/* + * These "info" structs are used to return identifying information, when a path + * is queried if it is a special "shape". (e.g. isOval(), isRRect()) + */ + +struct SkPathRectInfo { + SkRect fRect; + SkPathDirection fDirection; + uint8_t fStartIndex; +}; + +struct SkPathOvalInfo { + SkRect fBounds; + SkPathDirection fDirection; + uint8_t fStartIndex; +}; + +struct SkPathRRectInfo { + SkRRect fRRect; + SkPathDirection fDirection; + uint8_t fStartIndex; +}; + +/* + * Paths can be tagged with a "Type" -- the IsAType + * This signals that it was built from a high-level shape: oval, rrect, arc, wedge. + * We try to retain this tag, but still build the explicitly line/quad/conic/cubic + * structure need to represent that shape. Thus a user of path can always just look + * at the points and verbs, and draw it correctly. + * + * The GPU backend sometimes will sniff the path for this tag/type, and may have a + * more optimal way to draw the shape if they know its "really" an oval or whatever. + * + * Path's can also identify as a "rect" -- but we don't store any special tag for this. + * + * Here are the special "types" we have APIs for (e.g. isRRect()) and what we store: + * + * kGeneral : no identifying shape, no extra data + * (Rect) : no tag, but isRect() will examing the points/verbs, and try to + * deduce that it represents a rect. + * kOval : the path bounds is also the oval's bounds -- we store the direction + * and start_index (important for dashing). see SkPathMakers.h + * kRRect : same as kOval for implicit bounds, direction and start_index. + * Note: we don't store its radii -- we deduce those when isRRect() is + * called, by examining the points/verbs. + */ +enum class SkPathIsAType : uint8_t { + kGeneral, + kOval, + kRRect, +}; + +struct SkPathIsAData { + uint8_t fStartIndex; + SkPathDirection fDirection; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/SkPixelStorage.h b/vendor/artifacts/skia/include/private/SkPixelStorage.h new file mode 100644 index 000000000..9d7947d15 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkPixelStorage.h @@ -0,0 +1,37 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPixelStorage_DEFINED +#define SkPixelStorage_DEFINED + +#include + +/** + * SkPixelStorage is the class representing the storage block for pixel data. It serves as the + * abstract source of pixel memory—the 2D array of data—that is read from and written to by + * higher-level Skia objects like SkImage and SkSurface. + */ +class SkPixelStorage { +public: + SkPixelStorage(); + virtual ~SkPixelStorage() = default; + + enum Type { + kTextureProxy, + kPixelRef, + }; + + uint32_t getPixelStorageId() const { return fID; } + virtual Type type() const = 0; + +private: + uint32_t fID; + + static uint32_t NextId(); +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/SkSLSampleUsage.h b/vendor/artifacts/skia/include/private/SkSLSampleUsage.h new file mode 100644 index 000000000..39d9e2581 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkSLSampleUsage.h @@ -0,0 +1,85 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSLSampleUsage_DEFINED +#define SkSLSampleUsage_DEFINED + +#include "include/core/SkTypes.h" + +namespace SkSL { + +/** + * Represents all of the ways that a fragment processor is sampled by its parent. + */ +class SampleUsage { +public: + enum class Kind { + // Child is never sampled + kNone, + // Child is only sampled at the same coordinates as the parent + kPassThrough, + // Child is sampled with a matrix whose value is uniform + kUniformMatrix, + // Child is sampled with sk_FragCoord.xy + kFragCoord, + // Child is sampled using explicit coordinates + kExplicit, + }; + + // Make a SampleUsage that corresponds to no sampling of the child at all + SampleUsage() = default; + + SampleUsage(Kind kind, bool hasPerspective) : fKind(kind), fHasPerspective(hasPerspective) { + if (kind != Kind::kUniformMatrix) { + SkASSERT(!fHasPerspective); + } + } + + // Child is sampled with a matrix whose value is uniform. The name is fixed. + static SampleUsage UniformMatrix(bool hasPerspective) { + return SampleUsage(Kind::kUniformMatrix, hasPerspective); + } + + static SampleUsage Explicit() { + return SampleUsage(Kind::kExplicit, false); + } + + static SampleUsage PassThrough() { + return SampleUsage(Kind::kPassThrough, false); + } + + static SampleUsage FragCoord() { return SampleUsage(Kind::kFragCoord, false); } + + bool operator==(const SampleUsage& that) const { + return fKind == that.fKind && fHasPerspective == that.fHasPerspective; + } + + bool operator!=(const SampleUsage& that) const { return !(*this == that); } + + // Arbitrary name used by all uniform sampling matrices + static const char* MatrixUniformName() { return "matrix"; } + + SampleUsage merge(const SampleUsage& other); + + Kind kind() const { return fKind; } + + bool hasPerspective() const { return fHasPerspective; } + + bool isSampled() const { return fKind != Kind::kNone; } + bool isPassThrough() const { return fKind == Kind::kPassThrough; } + bool isExplicit() const { return fKind == Kind::kExplicit; } + bool isUniformMatrix() const { return fKind == Kind::kUniformMatrix; } + bool isFragCoord() const { return fKind == Kind::kFragCoord; } + +private: + Kind fKind = Kind::kNone; + bool fHasPerspective = false; // Only valid if fKind is kUniformMatrix +}; + +} // namespace SkSL + +#endif diff --git a/vendor/artifacts/skia/include/private/SkWeakRefCnt.h b/vendor/artifacts/skia/include/private/SkWeakRefCnt.h new file mode 100644 index 000000000..4f949a484 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkWeakRefCnt.h @@ -0,0 +1,173 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkWeakRefCnt_DEFINED +#define SkWeakRefCnt_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +#include +#include + +/** \class SkWeakRefCnt + + SkWeakRefCnt is the base class for objects that may be shared by multiple + objects. When an existing strong owner wants to share a reference, it calls + ref(). When a strong owner wants to release its reference, it calls + unref(). When the shared object's strong reference count goes to zero as + the result of an unref() call, its (virtual) weak_dispose method is called. + It is an error for the destructor to be called explicitly (or via the + object going out of scope on the stack or calling delete) if + getRefCnt() > 1. + + In addition to strong ownership, an owner may instead obtain a weak + reference by calling weak_ref(). A call to weak_ref() must be balanced by a + call to weak_unref(). To obtain a strong reference from a weak reference, + call try_ref(). If try_ref() returns true, the owner's pointer is now also + a strong reference on which unref() must be called. Note that this does not + affect the original weak reference, weak_unref() must still be called. When + the weak reference count goes to zero, the object is deleted. While the + weak reference count is positive and the strong reference count is zero the + object still exists, but will be in the disposed state. It is up to the + object to define what this means. + + Note that a strong reference implicitly implies a weak reference. As a + result, it is allowable for the owner of a strong ref to call try_ref(). + This will have the same effect as calling ref(), but may be more expensive. + + Example: + + SkWeakRefCnt myRef = strongRef.weak_ref(); + ... // strongRef.unref() may or may not be called + if (myRef.try_ref()) { + ... // use myRef + myRef.unref(); + } else { + // myRef is in the disposed state + } + myRef.weak_unref(); +*/ +class SK_API SkWeakRefCnt : public SkRefCnt { +public: + /** Default construct, initializing the reference counts to 1. + The strong references collectively hold one weak reference. When the + strong reference count goes to zero, the collectively held weak + reference is released. + */ + SkWeakRefCnt() : SkRefCnt(), fWeakCnt(1) {} + + /** Destruct, asserting that the weak reference count is 1. + */ + ~SkWeakRefCnt() override { +#ifdef SK_DEBUG + SkASSERT(getWeakCnt() == 1); + fWeakCnt.store(0, std::memory_order_relaxed); +#endif + } + +#ifdef SK_DEBUG + /** Return the weak reference count. */ + int32_t getWeakCnt() const { + return fWeakCnt.load(std::memory_order_relaxed); + } +#endif + +private: + /** If fRefCnt is 0, returns 0. + * Otherwise increments fRefCnt, acquires, and returns the old value. + */ + int32_t atomic_conditional_acquire_strong_ref() const { + int32_t prev = fRefCnt.load(std::memory_order_relaxed); + do { + if (0 == prev) { + break; + } + } while(!fRefCnt.compare_exchange_weak(prev, prev+1, std::memory_order_acquire, + std::memory_order_relaxed)); + return prev; + } + +public: + /** Creates a strong reference from a weak reference, if possible. The + caller must already be an owner. If try_ref() returns true the owner + is in posession of an additional strong reference. Both the original + reference and new reference must be properly unreferenced. If try_ref() + returns false, no strong reference could be created and the owner's + reference is in the same state as before the call. + */ + [[nodiscard]] bool try_ref() const { + if (atomic_conditional_acquire_strong_ref() != 0) { + // Acquire barrier (L/SL), if not provided above. + // Prevents subsequent code from happening before the increment. + return true; + } + return false; + } + + /** Increment the weak reference count. Must be balanced by a call to + weak_unref(). + */ + void weak_ref() const { + SkASSERT(getRefCnt() > 0); + SkASSERT(getWeakCnt() > 0); + // No barrier required. + (void)fWeakCnt.fetch_add(+1, std::memory_order_relaxed); + } + + /** Decrement the weak reference count. If the weak reference count is 1 + before the decrement, then call delete on the object. Note that if this + is the case, then the object needs to have been allocated via new, and + not on the stack. + */ + void weak_unref() const { + SkASSERT(getWeakCnt() > 0); + // A release here acts in place of all releases we "should" have been doing in ref(). + if (1 == fWeakCnt.fetch_add(-1, std::memory_order_acq_rel)) { + // Like try_ref(), the acquire is only needed on success, to make sure + // code in internal_dispose() doesn't happen before the decrement. +#ifdef SK_DEBUG + // so our destructor won't complain + fWeakCnt.store(1, std::memory_order_relaxed); +#endif + this->INHERITED::internal_dispose(); + } + } + + /** Returns true if there are no strong references to the object. When this + is the case all future calls to try_ref() will return false. + */ + bool weak_expired() const { + return fRefCnt.load(std::memory_order_relaxed) == 0; + } + +protected: + /** Called when the strong reference count goes to zero. This allows the + object to free any resources it may be holding. Weak references may + still exist and their level of allowed access to the object is defined + by the object's class. + */ + virtual void weak_dispose() const { + } + +private: + /** Called when the strong reference count goes to zero. Calls weak_dispose + on the object and releases the implicit weak reference held + collectively by the strong references. + */ + void internal_dispose() const override { + weak_dispose(); + weak_unref(); + } + + /* Invariant: fWeakCnt = #weak + (fRefCnt > 0 ? 1 : 0) */ + mutable std::atomic fWeakCnt; + + using INHERITED = SkRefCnt; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/SkXmp.h b/vendor/artifacts/skia/include/private/SkXmp.h new file mode 100644 index 000000000..0c7a40722 --- /dev/null +++ b/vendor/artifacts/skia/include/private/SkXmp.h @@ -0,0 +1,62 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkXmp_DEFINED +#define SkXmp_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class SkData; +struct SkGainmapInfo; + +#include +#include + +/* + * An interface to extract information from XMP metadata. + */ +class SK_API SkXmp { +public: + SkXmp() = default; + virtual ~SkXmp() = default; + // Make noncopyable + SkXmp(const SkXmp&) = delete; + SkXmp& operator= (const SkXmp&) = delete; + + // Create from XMP data. + static std::unique_ptr Make(sk_sp xmpData); + // Create from standard XMP + extended XMP data, see XMP Specification Part 3: Storage in files, + // Section 1.1.3.1: Extended XMP in JPEG + static std::unique_ptr Make(sk_sp xmpStandard, sk_sp xmpExtended); + + // Extract HDRGM gainmap parameters. + // TODO(b/338342146): Remove this once all callers are removed. + bool getGainmapInfoHDRGM(SkGainmapInfo* info) const { return getGainmapInfoAdobe(info); } + + // Extract gainmap parameters from http://ns.adobe.com/hdr-gain-map/1.0/. + virtual bool getGainmapInfoAdobe(SkGainmapInfo* info) const = 0; + + // If the image specifies http://ns.apple.com/pixeldatainfo/1.0/ AuxiliaryImageType of + // urn:com:apple:photo:2020:aux:hdrgainmap, and includes a http://ns.apple.com/HDRGainMap/1.0/ + // HDRGainMapVersion, then populate |info| with gainmap parameters that will approximate the + // math specified at [0] and return true. + // [0] https://developer.apple.com/documentation/appkit/images_and_pdf/ + // applying_apple_hdr_effect_to_your_photos + virtual bool getGainmapInfoApple(float exifHdrHeadroom, SkGainmapInfo* info) const = 0; + + // If this includes GContainer metadata and the GContainer contains an item with semantic + // GainMap and Mime of image/jpeg, then return true, and populate |offset| and |size| with + // that item's offset (from the end of the primary JPEG image's EndOfImage), and the size of + // the gainmap. + virtual bool getContainerGainmapLocation(size_t* offset, size_t* size) const = 0; + + // Return the GUID of an Extended XMP if present, or null otherwise. + virtual const char* getExtendedXmpGuid() const = 0; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/base/BUILD.bazel b/vendor/artifacts/skia/include/private/base/BUILD.bazel new file mode 100644 index 000000000..388d7040f --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/BUILD.bazel @@ -0,0 +1,69 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +# In own skia_filegroup for mapping to //gn/gpu.gni:skia_shared_gpu_sources. +SHARED_GPU_HEADERS = ["SingleOwner.h"] + +skia_filegroup( + name = "shared_gpu_private_hdrs", + srcs = SHARED_GPU_HEADERS, +) + +PRIVATE_HEADERS = [ + "SkAPI.h", + "SkASAN.h", + "SkAlign.h", + "SkAlignedStorage.h", + "SkAnySubclass.h", + "SkAssert.h", + "SkAttributes.h", + "SkCPUTypes.h", + "SkDebug.h", + "SkFeatures.h", + "SkFixed.h", + "SkLoadUserConfig.h", + "SkLog.h", + "SkLogPriority.h", + "SkMacros.h", + "SkMath.h", + "SkMutex.h", + "SkNoncopyable.h", + "SkOnce.h", + "SkPoint_impl.h", + "SkSafe32.h", + "SkSpan_impl.h", + "SkTArray.h", + "SkTFitsIn.h", + "SkTLogic.h", + "SkTPin.h", + "SkTemplates.h", + "SkThreadAnnotations.h", + "SkTo.h", + "SkTypeTraits.h", + "SkContainers.h", + "SkDeque.h", + "SkFloatingPoint.h", + "SkMalloc.h", + "SkSemaphore.h", + "SkTDArray.h", + "SkThreadID.h", +] + +skia_filegroup( + name = "private_hdrs", + srcs = PRIVATE_HEADERS + SHARED_GPU_HEADERS, + visibility = [ + "//src/base:__pkg__", + "//src/opts:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PRIVATE_HEADERS + SHARED_GPU_HEADERS, +) diff --git a/vendor/artifacts/skia/include/private/base/README.md b/vendor/artifacts/skia/include/private/base/README.md new file mode 100644 index 000000000..7f4f17b22 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/README.md @@ -0,0 +1,4 @@ +Files in "base" are used by many parts of Skia, but are not part of the public Skia API. +See also src/base for other files that are part of base, but not needed by the public API. + +Files here should not depend on anything other than system headers or other files in base. \ No newline at end of file diff --git a/vendor/artifacts/skia/include/private/base/SingleOwner.h b/vendor/artifacts/skia/include/private/base/SingleOwner.h new file mode 100644 index 000000000..473981e1f --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SingleOwner.h @@ -0,0 +1,75 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef skgpu_SingleOwner_DEFINED +#define skgpu_SingleOwner_DEFINED + +#include "include/private/base/SkDebug.h" // IWYU pragma: keep + +#if defined(SK_DEBUG) +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkMutex.h" +#include "include/private/base/SkThreadAnnotations.h" +#include "include/private/base/SkThreadID.h" + +#endif + +namespace skgpu { + +#if defined(SK_DEBUG) + +#define SKGPU_ASSERT_SINGLE_OWNER(obj) \ + skgpu::SingleOwner::AutoEnforce debug_SingleOwner(obj, __FILE__, __LINE__); + +// This is a debug tool to verify an object is only being used from one thread at a time. +class SingleOwner { +public: + SingleOwner() : fOwner(kIllegalThreadID), fReentranceCount(0) {} + + struct AutoEnforce { + AutoEnforce(SingleOwner* so, const char* file, int line) + : fFile(file), fLine(line), fSO(so) { + fSO->enter(file, line); + } + ~AutoEnforce() { fSO->exit(fFile, fLine); } + + const char* fFile; + int fLine; + SingleOwner* fSO; + }; + +private: + void enter(const char* file, int line) { + SkAutoMutexExclusive lock(fMutex); + SkThreadID self = SkGetThreadID(); + SkASSERTF(fOwner == self || fOwner == kIllegalThreadID, "%s:%d Single owner failure.", + file, line); + fReentranceCount++; + fOwner = self; + } + + void exit(const char* file, int line) { + SkAutoMutexExclusive lock(fMutex); + SkASSERTF(fOwner == SkGetThreadID(), "%s:%d Single owner failure.", file, line); + fReentranceCount--; + if (fReentranceCount == 0) { + fOwner = kIllegalThreadID; + } + } + + SkMutex fMutex; + SkThreadID fOwner SK_GUARDED_BY(fMutex); + int fReentranceCount SK_GUARDED_BY(fMutex); +}; +#else +#define SKGPU_ASSERT_SINGLE_OWNER(obj) +class SingleOwner {}; // Provide a no-op implementation so we can pass pointers to constructors +#endif + +} // namespace skgpu + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkAPI.h b/vendor/artifacts/skia/include/private/base/SkAPI.h new file mode 100644 index 000000000..4028f95d8 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkAPI.h @@ -0,0 +1,52 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAPI_DEFINED +#define SkAPI_DEFINED + +#include "include/private/base/SkLoadUserConfig.h" // IWYU pragma: keep + +// If SKIA_IMPLEMENTATION is defined as 1, that signals we are building Skia and should +// export our symbols. If it is not set (or set to 0), then Skia is being used by a client +// and we should not export our symbols. +#if !defined(SKIA_IMPLEMENTATION) + #define SKIA_IMPLEMENTATION 0 +#endif + +// If we are compiling Skia is being as a DLL, we need to be sure to export all of our public +// APIs to that DLL. If a client is using Skia which was compiled as a DLL, we need to instruct +// the linker to use the symbols from that DLL. This is the goal of the SK_API define. +#if !defined(SK_API) + #if defined(SKIA_DLL) + #if defined(_MSC_VER) + #if SKIA_IMPLEMENTATION + #define SK_API __declspec(dllexport) + #else + #define SK_API __declspec(dllimport) + #endif + #else + #define SK_API __attribute__((visibility("default"))) + #endif + #else + #define SK_API + #endif +#endif + +// SK_SPI is functionally identical to SK_API, but used within src to clarify that it's less stable +#if !defined(SK_SPI) + #define SK_SPI SK_API +#endif + +// See https://clang.llvm.org/docs/AttributeReference.html#availability +// The API_AVAILABLE macro comes from on MacOS +#if defined(SK_ENABLE_API_AVAILABLE) +# define SK_API_AVAILABLE API_AVAILABLE +#else +# define SK_API_AVAILABLE(...) +#endif + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkASAN.h b/vendor/artifacts/skia/include/private/base/SkASAN.h new file mode 100644 index 000000000..095f71608 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkASAN.h @@ -0,0 +1,56 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkASAN_DEFINED +#define SkASAN_DEFINED + +#include + +#ifdef __SANITIZE_ADDRESS__ + #define SK_SANITIZE_ADDRESS 1 +#endif +#if !defined(SK_SANITIZE_ADDRESS) && defined(__has_feature) + #if __has_feature(address_sanitizer) + #define SK_SANITIZE_ADDRESS 1 + #endif +#endif + +// Typically declared in LLVM's asan_interface.h. +#ifdef SK_SANITIZE_ADDRESS +extern "C" { + void __asan_poison_memory_region(void const volatile *addr, size_t size); + void __asan_unpoison_memory_region(void const volatile *addr, size_t size); + int __asan_address_is_poisoned(void const volatile *addr); +} +#endif + +// Code that implements bespoke allocation arenas can poison the entire arena on creation, then +// unpoison chunks of arena memory as they are parceled out. Consider leaving gaps between blocks +// to detect buffer overrun. +static inline void sk_asan_poison_memory_region([[maybe_unused]] void const volatile* addr, + [[maybe_unused]] size_t size) { +#ifdef SK_SANITIZE_ADDRESS + __asan_poison_memory_region(addr, size); +#endif +} + +static inline void sk_asan_unpoison_memory_region([[maybe_unused]] void const volatile* addr, + [[maybe_unused]] size_t size) { +#ifdef SK_SANITIZE_ADDRESS + __asan_unpoison_memory_region(addr, size); +#endif +} + +static inline int sk_asan_address_is_poisoned([[maybe_unused]] void const volatile* addr) { +#ifdef SK_SANITIZE_ADDRESS + return __asan_address_is_poisoned(addr); +#else + return 0; +#endif +} + +#endif // SkASAN_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkAlign.h b/vendor/artifacts/skia/include/private/base/SkAlign.h new file mode 100644 index 000000000..909c3b9d3 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkAlign.h @@ -0,0 +1,51 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAlign_DEFINED +#define SkAlign_DEFINED + +#include "include/private/base/SkAssert.h" + +#include + +template static constexpr T SkAlign2(T x) { return (x + 1) >> 1 << 1; } +template static constexpr T SkAlign4(T x) { return (x + 3) >> 2 << 2; } +template static constexpr T SkAlign8(T x) { return (x + 7) >> 3 << 3; } +template static constexpr T SkAlign16(T x) { return (x + 15) >> 4 << 4; } + +template static constexpr bool SkIsAlign2(T x) { return 0 == (x & 1); } +template static constexpr bool SkIsAlign4(T x) { return 0 == (x & 3); } +template static constexpr bool SkIsAlign8(T x) { return 0 == (x & 7); } +template static constexpr bool SkIsAlign16(T x) { return 0 == (x & 15); } + + +template static constexpr T SkAlignPtr(T x) { + static_assert(sizeof(void*) == 4 || sizeof(void*) == 8); + return sizeof(void*) == 8 ? SkAlign8(x) : SkAlign4(x); +} +template static constexpr bool SkIsAlignPtr(T x) { + static_assert(sizeof(void*) == 4 || sizeof(void*) == 8); + return sizeof(void*) == 8 ? SkIsAlign8(x) : SkIsAlign4(x); +} + +/** + * align up to a power of 2 + */ +template static constexpr T SkAlignTo(T x, T alignment) { + // The same as alignment && SkIsPow2(value), w/o a dependency cycle. + SkASSERT(alignment && (alignment & (alignment - 1)) == 0); + return (x + alignment - 1) & ~(alignment - 1); +} + +/** + * align up to a non power of 2 + */ +template static constexpr T SkAlignNonPow2(T x, T alignment) { + return ((x + alignment - 1) / alignment) * alignment; +} + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkAlignedStorage.h b/vendor/artifacts/skia/include/private/base/SkAlignedStorage.h new file mode 100644 index 000000000..532ad0397 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkAlignedStorage.h @@ -0,0 +1,32 @@ +// Copyright 2022 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#ifndef SkAlignedStorage_DEFINED +#define SkAlignedStorage_DEFINED + +#include +#include + +template class SkAlignedSTStorage { +public: + SkAlignedSTStorage() {} + SkAlignedSTStorage(SkAlignedSTStorage&&) = delete; + SkAlignedSTStorage(const SkAlignedSTStorage&) = delete; + SkAlignedSTStorage& operator=(SkAlignedSTStorage&&) = delete; + SkAlignedSTStorage& operator=(const SkAlignedSTStorage&) = delete; + + // Returns void* because this object does not initialize the + // memory. Use placement new for types that require a constructor. + void* get() { return fStorage; } + const void* get() const { return fStorage; } + + // Act as a container of bytes because the storage is uninitialized. + std::byte* data() { return fStorage; } + const std::byte* data() const { return fStorage; } + size_t size() const { return std::size(fStorage); } + +private: + alignas(T) std::byte fStorage[sizeof(T) * N]; +}; + +#endif // SkAlignedStorage_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkAnySubclass.h b/vendor/artifacts/skia/include/private/base/SkAnySubclass.h new file mode 100644 index 000000000..0a60ab598 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkAnySubclass.h @@ -0,0 +1,79 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAnySubclass_DEFINED +#define SkAnySubclass_DEFINED + +#include "include/private/base/SkAssert.h" + +#include +#include +#include // IWYU pragma: keep +#include + +/** + * Stores any subclass `T` of `Base`, where sizeof(T) <= `Size`, without using the heap. + * Doesn't need advance knowledge of T, so it's particularly suited to platform or backend + * implementations of a generic interface, where the set of possible subclasses is finite and + * known, but can't be made available at compile-time. + */ +template +class SkAnySubclass { +public: + SkAnySubclass() = default; + ~SkAnySubclass() { + this->reset(); + } + + SkAnySubclass(const SkAnySubclass&) = delete; + SkAnySubclass& operator=(const SkAnySubclass&) = delete; + SkAnySubclass(SkAnySubclass&&) = delete; + SkAnySubclass& operator=(SkAnySubclass&&) = delete; + + template + void emplace(Args&&... args) { + static_assert(std::is_base_of_v); + static_assert(sizeof(T) <= Size); + // We're going to clean up our stored object by calling ~Base: + static_assert(std::has_virtual_destructor_v || std::is_trivially_destructible_v); + SkASSERT(!fValid); + new (fData) T(std::forward(args)...); + fValid = true; + } + + void reset() { + if (fValid) { + this->get()->~Base(); + } + fValid = false; + } + + bool has_value() const { return fValid; } + explicit operator bool() const { return this->has_value(); } + + const Base* get() const { + SkASSERT(fValid); + return std::launder(reinterpret_cast(fData)); + } + + Base* get() { + SkASSERT(fValid); + return std::launder(reinterpret_cast(fData)); + } + + Base* operator->() { return this->get(); } + const Base* operator->() const { return this->get(); } + + Base& operator*() { return *this->get(); } + const Base& operator*() const { return *this->get(); } + +private: + alignas(8) std::byte fData[Size]; + bool fValid = false; +}; + +#endif // SkAnySubclass_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkAssert.h b/vendor/artifacts/skia/include/private/base/SkAssert.h new file mode 100644 index 000000000..af0e1a590 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkAssert.h @@ -0,0 +1,203 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAssert_DEFINED +#define SkAssert_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAttributes.h" +#include "include/private/base/SkDebug.h" // IWYU pragma: keep +#include "include/private/base/SkLog.h" + +#include +#include + +#if defined(__clang__) && defined(__has_attribute) + #if __has_attribute(likely) + #define SK_LIKELY [[likely]] + #define SK_UNLIKELY [[unlikely]] + #else + #define SK_LIKELY + #define SK_UNLIKELY + #endif +#else + #define SK_LIKELY + #define SK_UNLIKELY +#endif + +// c++23 will give us [[assume]] -- until then we're stuck with various other options: +#if defined(__clang__) + #define SK_ASSUME(cond) __builtin_assume(cond) +#elif defined(__GNUC__) + #if __GNUC__ >= 13 + #define SK_ASSUME(cond) __attribute__((assume(cond))) + #else + // NOTE: This implementation could actually evaluate `cond`, which is not desirable. + #define SK_ASSUME(cond) ((cond) ? (void)0 : __builtin_unreachable()) + #endif +#elif defined(_MSC_VER) + #define SK_ASSUME(cond) __assume(cond) +#else + #define SK_ASSUME(cond) ((void)0) +#endif + +/** Called internally if we hit an unrecoverable error. + The platform implementation must not return, but should either throw + an exception or otherwise exit. +*/ +[[noreturn]] SK_API extern void sk_abort_no_print(void); + +#if defined(SK_BUILD_FOR_GOOGLE3) + void SkDebugfForDumpStackTrace(const char* data, void* unused); + namespace base { + void DumpStackTrace(int skip_count, void w(const char*, void*), void* arg); + } +# define SK_DUMP_GOOGLE3_STACK() ::base::DumpStackTrace(0, SkDebugfForDumpStackTrace, nullptr) +#else +# define SK_DUMP_GOOGLE3_STACK() +#endif + +#if !defined(SK_ABORT) +# if defined(SK_BUILD_FOR_WIN) + // This style lets Visual Studio follow errors back to the source file. +# define SK_DUMP_LINE_FORMAT "%s(%d)" +# else +# define SK_DUMP_LINE_FORMAT "%s:%d" +# endif +# define SK_ABORT(message, ...) \ + do { \ + SKIA_LOG_E(SK_DUMP_LINE_FORMAT ": fatal error: \"" message "\"", \ + __FILE__, __LINE__, ##__VA_ARGS__); \ + SK_DUMP_GOOGLE3_STACK(); \ + sk_abort_no_print(); \ + } while (false) +#endif + +// SkASSERT, SkASSERTF and SkASSERT_RELEASE can be used as standalone assertion expressions, e.g. +// uint32_t foo(int x) { +// SkASSERT(x > 4); +// return x - 4; +// } +// and are also written to be compatible with constexpr functions: +// constexpr uint32_t foo(int x) { +// return SkASSERT(x > 4), +// x - 4; +// } +#if defined(__clang__) +#define SkASSERT_RELEASE(cond) \ + static_cast( __builtin_expect(static_cast(cond), 1) \ + ? static_cast(0) \ + : []{ SK_ABORT("check(%s)", #cond); }() ) + +#define SkASSERTF_RELEASE(cond, fmt, ...) \ + static_cast( __builtin_expect(static_cast(cond), 1) \ + ? static_cast(0) \ + : [&]{ SK_ABORT("assertf(%s): " fmt, #cond, ##__VA_ARGS__); }() ) +#else +#define SkASSERT_RELEASE(cond) \ + static_cast( (cond) ? static_cast(0) : []{ SK_ABORT("check(%s)", #cond); }() ) + +#define SkASSERTF_RELEASE(cond, fmt, ...) \ + static_cast( (cond) \ + ? static_cast(0) \ + : [&]{ SK_ABORT("assertf(%s): " fmt, #cond, ##__VA_ARGS__); }() ) +#endif + +#if defined(SK_DEBUG) + #define SkASSERT(cond) SkASSERT_RELEASE(cond) + #define SkASSERTF(cond, fmt, ...) SkASSERTF_RELEASE(cond, fmt, ##__VA_ARGS__) + #define SkDEBUGFAIL(message) SK_ABORT("%s", message) + #define SkDEBUGFAILF(fmt, ...) SK_ABORT(fmt, ##__VA_ARGS__) + #define SkAssertResult(cond) SkASSERT(cond) +#else + #define SkASSERT(cond) static_cast(0) + #define SkASSERTF(cond, fmt, ...) static_cast(0) + #define SkDEBUGFAIL(message) + #define SkDEBUGFAILF(fmt, ...) + + // unlike SkASSERT, this macro executes its condition in the non-debug build. + // The if is present so that this can be used with functions marked [[nodiscard]]. + #define SkAssertResult(cond) if (cond) {} do {} while(false) +#endif + +#if !defined(SkUNREACHABLE) +# if defined(_MSC_VER) && !defined(__clang__) +# include +# define FAST_FAIL_INVALID_ARG 5 +// See https://developercommunity.visualstudio.com/content/problem/1128631/code-flow-doesnt-see-noreturn-with-extern-c.html +// for why this is wrapped. Hopefully removable after msvc++ 19.27 is no longer supported. +[[noreturn]] static inline void sk_fast_fail() { __fastfail(FAST_FAIL_INVALID_ARG); } +# define SkUNREACHABLE sk_fast_fail() +# else +# define SkUNREACHABLE __builtin_trap() +# endif +#endif + +[[noreturn]] SK_API inline void sk_print_index_out_of_bounds(size_t i, size_t size) { + SK_ABORT("Index (%zu) out of bounds for size %zu.", i, size); +} + +template SK_API inline T sk_collection_check_bounds(T i, T size) { + if (0 <= i && i < size) SK_LIKELY { + return i; + } + + SK_UNLIKELY { + #if defined(SK_DEBUG) + sk_print_index_out_of_bounds(static_cast(i), static_cast(size)); + #else + SkUNREACHABLE; + #endif + } +} + +[[noreturn]] SK_API inline void sk_print_length_too_big(size_t i, size_t size) { + SK_ABORT("Length (%zu) is too big for size %zu.", i, size); +} + +template SK_API inline T sk_collection_check_length(T i, T size) { + if (0 <= i && i <= size) SK_LIKELY { + return i; + } + + SK_UNLIKELY { + #if defined(SK_DEBUG) + sk_print_length_too_big(static_cast(i), static_cast(size)); + #else + SkUNREACHABLE; + #endif + } +} + +SK_API inline void sk_collection_not_empty(bool empty) { + if (empty) SK_UNLIKELY { + #if defined(SK_DEBUG) + SK_ABORT("Collection is empty."); + #else + SkUNREACHABLE; + #endif + } +} + +[[noreturn]] SK_API inline void sk_print_size_too_big(size_t size, size_t maxSize) { + SK_ABORT("Size (%zu) can't be represented in bytes. Max size is %zu.", size, maxSize); +} + +template +SK_ALWAYS_INLINE size_t check_size_bytes_too_big(size_t size) { + const size_t kMaxSize = std::numeric_limits::max() / sizeof(T); + if (size > kMaxSize) { + #if defined(SK_DEBUG) + sk_print_size_too_big(size, kMaxSize); + #else + SkUNREACHABLE; + #endif + } + return size; +} + +#endif // SkAssert_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkAttributes.h b/vendor/artifacts/skia/include/private/base/SkAttributes.h new file mode 100644 index 000000000..ff1adaa9a --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkAttributes.h @@ -0,0 +1,96 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkAttributes_DEFINED +#define SkAttributes_DEFINED + +#include "include/private/base/SkFeatures.h" // IWYU pragma: keep +#include "include/private/base/SkLoadUserConfig.h" // IWYU pragma: keep + +#if defined(__clang__) || defined(__GNUC__) +# define SK_ATTRIBUTE(attr) __attribute__((attr)) +#else +# define SK_ATTRIBUTE(attr) +#endif + +/** + * If your judgment is better than the compiler's (i.e. you've profiled it), + * you can use SK_ALWAYS_INLINE to force inlining. E.g. + * inline void someMethod() { ... } // may not be inlined + * SK_ALWAYS_INLINE void someMethod() { ... } // should always be inlined + */ +#if !defined(SK_ALWAYS_INLINE) +# if defined(SK_BUILD_FOR_WIN) +# define SK_ALWAYS_INLINE __forceinline +# else +# define SK_ALWAYS_INLINE SK_ATTRIBUTE(always_inline) inline +# endif +#endif + +/** + * If your judgment is better than the compiler's (i.e. you've profiled it), + * you can use SK_NEVER_INLINE to prevent inlining. + */ +#if !defined(SK_NEVER_INLINE) +# if defined(SK_BUILD_FOR_WIN) +# define SK_NEVER_INLINE __declspec(noinline) +# else +# define SK_NEVER_INLINE SK_ATTRIBUTE(noinline) +# endif +#endif + +/** + * Used to annotate a function as taking printf style arguments. + * `A` is the (1 based) index of the format string argument. + * `B` is the (1 based) index of the first argument used by the format string. + */ +#if !defined(SK_PRINTF_LIKE) +# define SK_PRINTF_LIKE(A, B) SK_ATTRIBUTE(format(printf, (A), (B))) +#endif + +/** + * Used to ignore sanitizer warnings. + */ +#if !defined(SK_NO_SANITIZE) + #if defined(__has_attribute) + #if __has_attribute(no_sanitize) + // This should be for clang and versions of gcc >= 8.0 + #define SK_NO_SANITIZE(A) SK_ATTRIBUTE(no_sanitize(A)) + #else + // For compilers that don't support sanitization, just do nothing. + #define SK_NO_SANITIZE(A) + #endif + #else // no __has_attribute, e.g. MSVC + #define SK_NO_SANITIZE(A) + #endif +#endif + +/** + * Used to ignore CFI sanitizer warnings, supported only by Clang at the moment. + */ +#if defined(__clang__) + #define SK_NO_SANITIZE_CFI SK_NO_SANITIZE("cfi") +#else + #define SK_NO_SANITIZE_CFI +#endif + +/** + * Annotates a class' non-trivial special functions as trivial for the purposes of calls. + * Allows a class with a non-trivial destructor to be __is_trivially_relocatable. + * Use of this attribute on a public API breaks platform ABI. + * Annotated classes may not hold pointers derived from `this`. + * Annotated classes must implement move+delete as equivalent to memcpy+free. + * Use may require more complete types, as callee destroys. + * + * https://clang.llvm.org/docs/AttributeReference.html#trivial-abi + * https://libcxx.llvm.org/DesignDocs/UniquePtrTrivialAbi.html + */ +#if !defined(SK_TRIVIAL_ABI) +# define SK_TRIVIAL_ABI +#endif + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkCPUTypes.h b/vendor/artifacts/skia/include/private/base/SkCPUTypes.h new file mode 100644 index 000000000..a5f60fd3e --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkCPUTypes.h @@ -0,0 +1,25 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkCPUTypes_DEFINED +#define SkCPUTypes_DEFINED + +// TODO(bungeman,kjlubick) There are a lot of assumptions throughout the codebase that +// these types are 32 bits, when they could be more or less. Public APIs should stop +// using these. Internally, we could use uint_fast8_t and uint_fast16_t, but not in +// public APIs due to ABI incompatibilities. + +/** Fast type for unsigned 8 bits. Use for parameter passing and local + variables, not for storage +*/ +typedef unsigned U8CPU; + +/** Fast type for unsigned 16 bits. Use for parameter passing and local + variables, not for storage +*/ +typedef unsigned U16CPU; + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkContainers.h b/vendor/artifacts/skia/include/private/base/SkContainers.h new file mode 100644 index 000000000..ab8b1ffc8 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkContainers.h @@ -0,0 +1,54 @@ +// Copyright 2022 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#ifndef SkContainers_DEFINED +#define SkContainers_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAlign.h" +#include "include/private/base/SkSpan_impl.h" + +#include +#include + +class SK_SPI SkContainerAllocator { +public: + SkContainerAllocator(size_t sizeOfT, int maxCapacity) + : fSizeOfT{sizeOfT} + , fMaxCapacity{maxCapacity} {} + + // allocate will abort on failure. Given a capacity of 0, it will return the empty span. + // The bytes allocated are freed using sk_free(). + SkSpan allocate(int capacity, double growthFactor = 1.0); + + // Rounds a requested capacity up towards `kCapacityMultiple` in a constexpr-friendly fashion. + template + static constexpr size_t RoundUp(size_t capacity) { + return SkAlignTo(capacity * sizeof(T), (size_t) kCapacityMultiple) / sizeof(T); + } + +private: + friend struct SkContainerAllocatorTestingPeer; + + // All capacity counts will be rounded up to kCapacityMultiple. This matches ASAN's shadow + // granularity, as well as our typical struct alignment on a 64-bit machine. + static constexpr int64_t kCapacityMultiple = 8; + + // Rounds up capacity to next multiple of kCapacityMultiple and pin to fMaxCapacity. + size_t roundUpCapacity(int64_t capacity) const; + + // Grows the capacity by growthFactor being sure to stay with in kMinBytes and fMaxCapacity. + size_t growthFactorCapacity(int capacity, double growthFactor) const; + + const size_t fSizeOfT; + const int64_t fMaxCapacity; +}; + +// sk_allocate_canfail returns the empty span on failure. Parameter size must be > 0. +SkSpan sk_allocate_canfail(size_t size); + +// Returns the empty span if size is 0. sk_allocate_throw aborts on failure. +SkSpan sk_allocate_throw(size_t size); + +SK_SPI void sk_report_container_overflow_and_die(); +#endif // SkContainers_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkDebug.h b/vendor/artifacts/skia/include/private/base/SkDebug.h new file mode 100644 index 000000000..2e4810fc1 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkDebug.h @@ -0,0 +1,27 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkDebug_DEFINED +#define SkDebug_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAttributes.h" +#include "include/private/base/SkLoadUserConfig.h" // IWYU pragma: keep + +#if !defined(SkDebugf) + void SK_SPI SkDebugf(const char format[], ...) SK_PRINTF_LIKE(1, 2); +#endif + +#if defined(SK_DEBUG) + #define SkDEBUGCODE(...) __VA_ARGS__ + #define SkDEBUGF(...) SkDebugf(__VA_ARGS__) +#else + #define SkDEBUGCODE(...) + #define SkDEBUGF(...) +#endif + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkDeque.h b/vendor/artifacts/skia/include/private/base/SkDeque.h new file mode 100644 index 000000000..c7a43c9fe --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkDeque.h @@ -0,0 +1,138 @@ + +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkDeque_DEFINED +#define SkDeque_DEFINED + +#include "include/private/base/SkAPI.h" + +#include + +/* + * The deque class works by blindly creating memory space of a specified element + * size. It manages the memory as a doubly linked list of blocks each of which + * can contain multiple elements. Pushes and pops add/remove blocks from the + * beginning/end of the list as necessary while each block tracks the used + * portion of its memory. + * One behavior to be aware of is that the pops do not immediately remove an + * empty block from the beginning/end of the list (Presumably so push/pop pairs + * on the block boundaries don't cause thrashing). This can result in the first/ + * last element not residing in the first/last block. + */ +class SK_API SkDeque { +public: + /** + * elemSize specifies the size of each individual element in the deque + * allocCount specifies how many elements are to be allocated as a block + */ + explicit SkDeque(size_t elemSize, int allocCount = 1); + SkDeque(size_t elemSize, void* storage, size_t storageSize, int allocCount = 1); + ~SkDeque(); + + bool empty() const { return 0 == fCount; } + int count() const { return fCount; } + size_t elemSize() const { return fElemSize; } + + const void* front() const { return fFront; } + const void* back() const { return fBack; } + + void* front() { return fFront; } + void* back() { return fBack; } + + /** + * push_front and push_back return a pointer to the memory space + * for the new element + */ + void* push_front(); + void* push_back(); + + void pop_front(); + void pop_back(); + +private: + struct Block; + +public: + class Iter { + public: + enum IterStart { + kFront_IterStart, + kBack_IterStart, + }; + + /** + * Creates an uninitialized iterator. Must be reset() + */ + Iter(); + + Iter(const SkDeque& d, IterStart startLoc); + void* next(); + void* prev(); + + void reset(const SkDeque& d, IterStart startLoc); + + private: + SkDeque::Block* fCurBlock; + char* fPos; + size_t fElemSize; + }; + + // Inherit privately from Iter to prevent access to reverse iteration + class F2BIter : private Iter { + public: + F2BIter() {} + + /** + * Wrap Iter's 2 parameter ctor to force initialization to the + * beginning of the deque + */ + F2BIter(const SkDeque& d) : INHERITED(d, kFront_IterStart) {} + + using Iter::next; + + /** + * Wrap Iter::reset to force initialization to the beginning of the + * deque + */ + void reset(const SkDeque& d) { + this->INHERITED::reset(d, kFront_IterStart); + } + + private: + using INHERITED = Iter; + }; + +private: + // allow unit test to call numBlocksAllocated + friend class DequeUnitTestHelper; + + void* fFront; + void* fBack; + + Block* fFrontBlock; + Block* fBackBlock; + size_t fElemSize; + void* fInitialStorage; + int fCount; // number of elements in the deque + int fAllocCount; // number of elements to allocate per block + + Block* allocateBlock(int allocCount); + void freeBlock(Block* block); + + /** + * This returns the number of chunk blocks allocated by the deque. It + * can be used to gauge the effectiveness of the selected allocCount. + */ + int numBlocksAllocated() const; + + SkDeque(const SkDeque&) = delete; + SkDeque& operator=(const SkDeque&) = delete; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkFeatures.h b/vendor/artifacts/skia/include/private/base/SkFeatures.h new file mode 100644 index 000000000..9ea8063a6 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkFeatures.h @@ -0,0 +1,173 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFeatures_DEFINED +#define SkFeatures_DEFINED + +#if !defined(SK_BUILD_FOR_ANDROID) && !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_WIN) && \ + !defined(SK_BUILD_FOR_UNIX) && !defined(SK_BUILD_FOR_MAC) + + #ifdef __APPLE__ + #include + #endif + + #if defined(_WIN32) || defined(__SYMBIAN32__) + #define SK_BUILD_FOR_WIN + #elif defined(ANDROID) || defined(__ANDROID__) + #define SK_BUILD_FOR_ANDROID + #elif defined(__EMSCRIPTEN__) + // WASM toolchains expose a Unix-like compilation environment, but it is + // not Unix (e.g. posix signals are not supported). + #define SK_BUILD_FOR_WASM + #elif defined(linux) || defined(__linux) || defined(__FreeBSD__) || \ + defined(__OpenBSD__) || defined(__sun) || defined(__NetBSD__) || \ + defined(__DragonFly__) || defined(__Fuchsia__) || \ + defined(__GLIBC__) || defined(__GNU__) || defined(__unix__) + #define SK_BUILD_FOR_UNIX + #elif TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR + #define SK_BUILD_FOR_IOS + #else + #define SK_BUILD_FOR_MAC + #endif +#endif // end SK_BUILD_FOR_* + + +#if defined(SK_BUILD_FOR_WIN) && !defined(__clang__) + #if !defined(SK_RESTRICT) + #define SK_RESTRICT __restrict + #endif +#endif + +#if !defined(SK_RESTRICT) + #define SK_RESTRICT __restrict__ +#endif + +#if !defined(SK_CPU_BENDIAN) && !defined(SK_CPU_LENDIAN) + #if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) + #define SK_CPU_BENDIAN + #elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) + #define SK_CPU_LENDIAN + #elif defined(__sparc) || defined(__sparc__) || \ + defined(_POWER) || defined(__powerpc__) || \ + defined(__ppc__) || defined(__hppa) || \ + defined(__PPC__) || defined(__PPC64__) || \ + defined(_MIPSEB) || defined(__ARMEB__) || \ + defined(__s390__) || \ + (defined(__sh__) && defined(__BIG_ENDIAN__)) || \ + (defined(__ia64) && defined(__BIG_ENDIAN__)) + #define SK_CPU_BENDIAN + #else + #define SK_CPU_LENDIAN + #endif +#endif + +#if defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) + #define SK_CPU_X86 1 +#endif + +#if defined(__loongarch__) || defined (__loongarch64) + #define SK_CPU_LOONGARCH 1 +#endif + +#if defined(__powerpc__) || defined (__powerpc64__) + #define SK_CPU_PPC 1 +#endif + +/** + * SK_CPU_X64_LEVEL + * + * If defined, SK_CPU_X64_LEVEL should be set to the highest supported level. + * On non-Intel, non-AMD CPUs this should be undefined. + */ +#define SK_CPU_X64_LEVEL_SSE1 10 +#define SK_CPU_X64_LEVEL_SSE2 20 +#define SK_CPU_X64_LEVEL_SSE3 30 +#define SK_CPU_X64_LEVEL_SSSE3 31 +#define SK_CPU_X64_LEVEL_SSE41 41 +#define SK_CPU_X64_LEVEL_SSE42 42 +#define SK_CPU_X64_LEVEL_AVX 51 +#define SK_CPU_X64_LEVEL_AVX2 52 +#define SK_CPU_X64_LEVEL_ML4 60 + +/** + * SK_CPU_LSX_LEVEL + * + * If defined, SK_CPU_LSX_LEVEL should be set to the highest supported level. + * On non-loongarch CPU this should be undefined. + */ +#define SK_CPU_LSX_LEVEL_LSX 10 +#define SK_CPU_LSX_LEVEL_LASX 20 + +// TODO(kjlubick) clean up these checks + +// Are we in GCC/Clang? +#ifndef SK_CPU_X64_LEVEL + // These checks must be done in descending order to ensure we set the highest + // available SSE level. + #if defined(__AVX512F__) && defined(__AVX512DQ__) && defined(__AVX512CD__) && \ + defined(__AVX512BW__) && defined(__AVX512VL__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_ML4 + #elif defined(__AVX2__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_AVX2 + #elif defined(__AVX__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_AVX + #elif defined(__SSE4_2__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE42 + #elif defined(__SSE4_1__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE41 + #elif defined(__SSSE3__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSSE3 + #elif defined(__SSE3__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE3 + #elif defined(__SSE2__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE2 + #endif +#endif + +#ifndef SK_CPU_LSX_LEVEL + #if defined(__loongarch_asx) + #define SK_CPU_LSX_LEVEL SK_CPU_LSX_LEVEL_LASX + #elif defined(__loongarch_sx) + #define SK_CPU_LSX_LEVEL SK_CPU_LSX_LEVEL_LSX + #endif +#endif + +// Are we in VisualStudio? +#ifndef SK_CPU_X64_LEVEL + // These checks must be done in descending order to ensure we set the highest + // available SSE level. 64-bit intel guarantees at least SSE2 support. + #if defined(__AVX512F__) && defined(__AVX512DQ__) && defined(__AVX512CD__) && \ + defined(__AVX512BW__) && defined(__AVX512VL__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_ML4 + #elif defined(__AVX2__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_AVX2 + #elif defined(__AVX__) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_AVX + #elif defined(_M_X64) || defined(_M_AMD64) + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE2 + #elif defined(_M_IX86_FP) + #if _M_IX86_FP >= 2 + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE2 + #elif _M_IX86_FP == 1 + #define SK_CPU_X64_LEVEL SK_CPU_X64_LEVEL_SSE1 + #endif + #endif +#endif + +// ARM defines +#if defined(__arm__) && (!defined(__APPLE__) || !TARGET_IPHONE_SIMULATOR) + #define SK_CPU_ARM32 +#elif defined(__aarch64__) + #define SK_CPU_ARM64 +#endif + +// All 64-bit ARM chips have NEON. Many 32-bit ARM chips do too. +#if !defined(SK_ARM_HAS_NEON) && defined(__ARM_NEON) + #define SK_ARM_HAS_NEON +#endif + +#endif // SkFeatures_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkFixed.h b/vendor/artifacts/skia/include/private/base/SkFixed.h new file mode 100644 index 000000000..2c8f2fb56 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkFixed.h @@ -0,0 +1,143 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFixed_DEFINED +#define SkFixed_DEFINED + +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkMath.h" // IWYU pragma: keep +#include "include/private/base/SkTPin.h" // IWYU pragma: keep + +#include + +/** \file SkFixed.h + + Types and macros for 16.16 fixed point +*/ + +/** 32 bit signed integer used to represent fractions values with 16 bits to the right of the decimal point +*/ +typedef int32_t SkFixed; +#define SK_Fixed1 (1 << 16) +#define SK_FixedHalf (1 << 15) +#define SK_FixedQuarter (1 << 14) +#define SK_FixedMax (0x7FFFFFFF) +#define SK_FixedMin (-SK_FixedMax) +#define SK_FixedPI (0x3243F) +#define SK_FixedSqrt2 (92682) +#define SK_FixedTanPIOver8 (0x6A0A) +#define SK_FixedRoot2Over2 (0xB505) + +// NOTE: SkFixedToFloat is exact. SkFloatToFixed seems to lack a rounding step. For all fixed-point +// values, this version is as accurate as possible for (fixed -> float -> fixed). Rounding reduces +// accuracy if the intermediate floats are in the range that only holds integers (adding 0.5f to an +// odd integer then snaps to nearest even). Using double for the rounding math gives maximum +// accuracy for (float -> fixed -> float), but that's usually overkill. +#define SkFixedToFloat(x) ((x) * 1.52587890625e-5f) +#define SkFloatToFixed(x) sk_float_saturate2int((x) * SK_Fixed1) + +#ifdef SK_DEBUG + static inline SkFixed SkFloatToFixed_Check(float x) { + int64_t n64 = (int64_t)(x * SK_Fixed1); + SkFixed n32 = (SkFixed)n64; + SkASSERT(n64 == n32); + return n32; + } +#else + #define SkFloatToFixed_Check(x) SkFloatToFixed(x) +#endif + +#define SkFixedToDouble(x) ((x) * 1.52587890625e-5) +#define SkDoubleToFixed(x) ((SkFixed)((x) * SK_Fixed1)) + +/** Converts an integer to a SkFixed, asserting that the result does not overflow + a 32 bit signed integer +*/ +#ifdef SK_DEBUG + inline SkFixed SkIntToFixed(int n) + { + SkASSERT(n >= -32768 && n <= 32767); + // Left shifting a negative value has undefined behavior in C, so we cast to unsigned before + // shifting. + return (SkFixed)( (unsigned)n << 16 ); + } +#else + // Left shifting a negative value has undefined behavior in C, so we cast to unsigned before + // shifting. Then we force the cast to SkFixed to ensure that the answer is signed (like the + // debug version). + #define SkIntToFixed(n) (SkFixed)((unsigned)(n) << 16) +#endif + +#define SkFixedRoundToInt(x) (((x) + SK_FixedHalf) >> 16) +#define SkFixedCeilToInt(x) (((x) + SK_Fixed1 - 1) >> 16) +#define SkFixedFloorToInt(x) ((x) >> 16) + +static inline SkFixed SkFixedRoundToFixed(SkFixed x) { + return (SkFixed)( (uint32_t)(x + SK_FixedHalf) & 0xFFFF0000 ); +} +static inline SkFixed SkFixedCeilToFixed(SkFixed x) { + return (SkFixed)( (uint32_t)(x + SK_Fixed1 - 1) & 0xFFFF0000 ); +} +static inline SkFixed SkFixedFloorToFixed(SkFixed x) { + return (SkFixed)( (uint32_t)x & 0xFFFF0000 ); +} + +#define SkFixedAve(a, b) (((a) + (b)) >> 1) + +// The divide may exceed 32 bits. Clamp to a signed 32 bit result. +#define SkFixedDiv(numer, denom) \ + SkToS32(SkTPin((SkLeftShift((int64_t)(numer), 16) / (denom)), SK_MinS32, SK_MaxS32)) + +static inline SkFixed SkFixedMul(SkFixed a, SkFixed b) { + return (SkFixed)((int64_t)a * b >> 16); +} + +/////////////////////////////////////////////////////////////////////////////// +// Platform-specific alternatives to our portable versions. + +// The VCVT float-to-fixed instruction is part of the VFPv3 instruction set. +#if defined(__ARM_VFPV3__) + #include + + /* This does not handle NaN or other obscurities, but is faster than + than (int)(x*65536). When built on Android with -Os, needs forcing + to inline or we lose the speed benefit. + */ + SK_ALWAYS_INLINE SkFixed SkFloatToFixed_arm(float x) + { + int32_t y; + asm("vcvt.s32.f32 %0, %0, #16": "+w"(x)); + std::memcpy(&y, &x, sizeof(y)); + return y; + } + #undef SkFloatToFixed + #define SkFloatToFixed(x) SkFloatToFixed_arm(x) +#endif + +/////////////////////////////////////////////////////////////////////////////// + +#define SkFixedToScalar(x) SkFixedToFloat(x) +#define SkScalarToFixed(x) SkFloatToFixed(x) + +/////////////////////////////////////////////////////////////////////////////// + +typedef int64_t SkFixed3232; // 32.32 + +#define SkFixed3232Max SK_MaxS64 +#define SkFixed3232Min (-SkFixed3232Max) + +#define SkIntToFixed3232(x) (SkLeftShift((SkFixed3232)(x), 32)) +#define SkFixed3232ToInt(x) ((int)((x) >> 32)) +#define SkFixedToFixed3232(x) (SkLeftShift((SkFixed3232)(x), 16)) +#define SkFixed3232ToFixed(x) ((SkFixed)((x) >> 16)) +#define SkFloatToFixed3232(x) sk_float_saturate2int64((x) * (65536.0f * 65536.0f)) +#define SkFixed3232ToFloat(x) (x * (1 / (65536.0f * 65536.0f))) + +#define SkScalarToFixed3232(x) SkFloatToFixed3232(x) + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkFloatingPoint.h b/vendor/artifacts/skia/include/private/base/SkFloatingPoint.h new file mode 100644 index 000000000..a732d5967 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkFloatingPoint.h @@ -0,0 +1,183 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkFloatingPoint_DEFINED +#define SkFloatingPoint_DEFINED + +#include "include/private/base/SkAttributes.h" +#include "include/private/base/SkMath.h" + +#include +#include +#include +#include + +inline constexpr float SK_FloatSqrt2 = 1.41421356f; +inline constexpr float SK_FloatPI = 3.14159265f; +inline constexpr double SK_DoublePI = 3.14159265358979323846264338327950288; + +static constexpr int sk_float_sgn(float x) { + return (0.0f < x) - (x < 0.0f); +} + +static constexpr float sk_float_degrees_to_radians(float degrees) { + return degrees * (SK_FloatPI / 180); +} + +static constexpr float sk_float_radians_to_degrees(float radians) { + return radians * (180 / SK_FloatPI); +} + +// floor(double+0.5) vs. floorf(float+0.5f) give comparable performance, but upcasting to double +// means tricky values like 0.49999997 and 2^24 get rounded correctly. If these were rounded +// as floatf(x + .5f), they would be 1 higher than expected. +#define sk_float_round(x) (float)sk_double_round((double)(x)) + +template , bool> = true> +static inline constexpr bool SkIsNaN(T x) { + return x != x; +} + +// Subtracting a value from itself will result in zero, except for NAN or ±Inf, which make NAN. +// Multiplying a group of values against zero will result in zero for each product, except for +// NAN or ±Inf, which will result in NAN and continue resulting in NAN for the rest of the elements. +// This generates better code than `std::isfinite` when building with clang-cl (April 2024). +template , bool> = true> +static inline bool SkIsFinite(T x, Pack... values) { + T prod = x - x; + prod = (prod * ... * values); + // At this point, `prod` will either be NaN or 0. + return prod == prod; +} + +template , bool> = true> +static inline bool SkIsFinite(const T array[], int count) { + T x = array[0]; + T prod = x - x; + for (int i = 1; i < count; ++i) { + prod *= array[i]; + } + // At this point, `prod` will either be NaN or 0. + return prod == prod; +} + +inline constexpr int SK_MaxS32FitsInFloat = 2147483520; +inline constexpr int SK_MinS32FitsInFloat = -SK_MaxS32FitsInFloat; + +// 0x7fffff8000000000 +inline constexpr int64_t SK_MaxS64FitsInFloat = SK_MaxS64 >> (63-24) << (63-24); +inline constexpr int64_t SK_MinS64FitsInFloat = -SK_MaxS64FitsInFloat; + +// sk_[float|double]_saturate2int are written to return their maximum values when passed NaN. +// MSVC 19.38+ has a bug with this implementation, leading to incorrect results: +// https://developercommunity.visualstudio.com/t/Optimizer-incorrectly-handles-NaN-floati/10654403 +// +// We inject an explicit NaN test on MSVC to work around the problem. +#if defined(_MSC_VER) && !defined(__clang__) + #define SK_CHECK_NAN(resultVal) if (SkIsNaN(x)) { return resultVal; } +#else + #define SK_CHECK_NAN(resultVal) +#endif + +/** + * Return the closest int for the given float. Returns SK_MaxS32FitsInFloat for NaN. + */ +static constexpr int sk_float_saturate2int(float x) { + SK_CHECK_NAN(SK_MaxS32FitsInFloat) + x = x < SK_MaxS32FitsInFloat ? x : SK_MaxS32FitsInFloat; + x = x > SK_MinS32FitsInFloat ? x : SK_MinS32FitsInFloat; + return (int)x; +} + +/** + * Return the closest int for the given double. Returns SK_MaxS32 for NaN. + */ +static constexpr int sk_double_saturate2int(double x) { + SK_CHECK_NAN(SK_MaxS32) + x = x < SK_MaxS32 ? x : SK_MaxS32; + x = x > SK_MinS32 ? x : SK_MinS32; + return (int)x; +} + +/** + * Return the closest int64_t for the given float. Returns SK_MaxS64FitsInFloat for NaN. + */ +static constexpr int64_t sk_float_saturate2int64(float x) { + SK_CHECK_NAN(SK_MaxS64FitsInFloat) + x = x < SK_MaxS64FitsInFloat ? x : SK_MaxS64FitsInFloat; + x = x > SK_MinS64FitsInFloat ? x : SK_MinS64FitsInFloat; + return (int64_t)x; +} + +#undef SK_CHECK_NAN + +#define sk_float_floor2int(x) sk_float_saturate2int(std::floor(x)) +#define sk_float_round2int(x) sk_float_saturate2int(sk_float_round(x)) +#define sk_float_ceil2int(x) sk_float_saturate2int(std::ceil(x)) + +#define sk_float_floor2int_no_saturate(x) ((int)std::floor(x)) +#define sk_float_round2int_no_saturate(x) ((int)sk_float_round(x)) +#define sk_float_ceil2int_no_saturate(x) ((int)std::ceil(x)) + +#define sk_double_round(x) (std::floor((x) + 0.5)) +#define sk_double_floor2int(x) ((int)std::floor(x)) +#define sk_double_round2int(x) ((int)std::round(x)) +#define sk_double_ceil2int(x) ((int)std::ceil(x)) + +// Cast double to float, ignoring any warning about too-large finite values being cast to float. +// Clang thinks this is undefined, but it's actually implementation defined to return either +// the largest float or infinity (one of the two bracketing representable floats). Good enough! +SK_NO_SANITIZE("float-cast-overflow") +static constexpr float sk_double_to_float(double x) { + return static_cast(x); +} + +inline constexpr float SK_FloatNaN = std::numeric_limits::quiet_NaN(); +inline constexpr float SK_FloatInfinity = std::numeric_limits::infinity(); +inline constexpr float SK_FloatNegativeInfinity = -SK_FloatInfinity; + +inline constexpr double SK_DoubleNaN = std::numeric_limits::quiet_NaN(); + +// Calculate the midpoint between a and b. Similar to std::midpoint in c++20. +static constexpr float sk_float_midpoint(float a, float b) { + // Use double math to avoid underflow and overflow. + return static_cast(0.5 * (static_cast(a) + b)); +} + +static inline float sk_float_rsqrt (float x) { return 1.0f / std::sqrt(x); } + +// IEEE defines how float divide behaves for non-finite values and zero-denoms, but C does not, +// so we have a helper that suppresses the possible undefined-behavior warnings. +#ifdef SK_BUILD_FOR_WIN +#pragma warning(push) +#pragma warning(disable : 4723) +#endif +SK_NO_SANITIZE("float-divide-by-zero") +static constexpr float sk_ieee_float_divide(float numer, float denom) { + return numer / denom; +} + +SK_NO_SANITIZE("float-divide-by-zero") +static constexpr double sk_ieee_double_divide(double numer, double denom) { + return numer / denom; +} +#ifdef SK_BUILD_FOR_WIN +#pragma warning( pop ) +#endif + +// Returns true iff the provided number is within a small epsilon of 0. +bool sk_double_nearly_zero(double a); + +// Compare two doubles and return true if they are within maxUlpsDiff of each other. +// * nan as a or b - returns false. +// * infinity, infinity or -infinity, -infinity - returns true. +// * infinity and any other number - returns false. +// +// ulp is an initialism for Units in the Last Place. +bool sk_doubles_nearly_equal_ulps(double a, double b, uint8_t maxUlpsDiff = 16); + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkLoadUserConfig.h b/vendor/artifacts/skia/include/private/base/SkLoadUserConfig.h new file mode 100644 index 000000000..c1005e017 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkLoadUserConfig.h @@ -0,0 +1,64 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SK_USER_CONFIG_WAS_LOADED + +// Include this to set reasonable defaults (e.g. for SK_CPU_LENDIAN) +#include "include/private/base/SkFeatures.h" +// Include this so that users can define the lowest active log priority in their config +#include "include/private/base/SkLogPriority.h" // IWYU pragma: keep + +// Allows embedders that want to disable macros that take arguments to just +// define that symbol to be one of these +#define SK_NOTHING_ARG1(arg1) +#define SK_NOTHING_ARG2(arg1, arg2) +#define SK_NOTHING_ARG3(arg1, arg2, arg3) + +// IWYU pragma: begin_exports +// Note: SK_USER_CONFIG_HEADER will not work with Bazel builds and some C++ compilers. +#if defined(SK_USER_CONFIG_HEADER) + #include SK_USER_CONFIG_HEADER +#elif defined(SK_USE_BAZEL_CONFIG_HEADER) + // The Bazel config file is presumed to be in the root directory of its Bazel Workspace. + // This is achieved in Skia by having a nested WORKSPACE in include/config and a cc_library + // defined in that folder. As a result, we do not try to include SkUserConfig.h from the + // top of Skia because Bazel sandboxing will move it to a different location. + #include "SkUserConfig.h" // NO_G3_REWRITE +#else + #include "include/config/SkUserConfig.h" +#endif +// IWYU pragma: end_exports + +// Checks to make sure the SkUserConfig options do not conflict. +#if !defined(SK_DEBUG) && !defined(SK_RELEASE) + #ifdef NDEBUG + #define SK_RELEASE + #else + #define SK_DEBUG + #endif +#endif + +#if defined(SK_DEBUG) && defined(SK_RELEASE) +# error "cannot define both SK_DEBUG and SK_RELEASE" +#elif !defined(SK_DEBUG) && !defined(SK_RELEASE) +# error "must define either SK_DEBUG or SK_RELEASE" +#endif + +#if defined(SK_CPU_LENDIAN) && defined(SK_CPU_BENDIAN) +# error "cannot define both SK_CPU_LENDIAN and SK_CPU_BENDIAN" +#elif !defined(SK_CPU_LENDIAN) && !defined(SK_CPU_BENDIAN) +# error "must define either SK_CPU_LENDIAN or SK_CPU_BENDIAN" +#endif + +#if defined(SK_CPU_BENDIAN) && !defined(I_ACKNOWLEDGE_SKIA_DOES_NOT_SUPPORT_BIG_ENDIAN) + #error "The Skia team is not endian-savvy enough to support big-endian CPUs." + #error "If you still want to use Skia," + #error "please define I_ACKNOWLEDGE_SKIA_DOES_NOT_SUPPORT_BIG_ENDIAN." +#endif + +#define SK_USER_CONFIG_WAS_LOADED +#endif // SK_USER_CONFIG_WAS_LOADED diff --git a/vendor/artifacts/skia/include/private/base/SkLog.h b/vendor/artifacts/skia/include/private/base/SkLog.h new file mode 100644 index 000000000..9256c6b08 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkLog.h @@ -0,0 +1,62 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkLog_DEFINED +#define SkLog_DEFINED + +#include + +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAttributes.h" +#include "include/private/base/SkLoadUserConfig.h" // IWYU pragma: keep +#include "include/private/base/SkLogPriority.h" + +#if !defined(SkLog) +// To be implemented per platform. +void SkLogVAList(SkLogPriority priority, const char format[], va_list args) SK_PRINTF_LIKE(2, 0); +void SK_SPI SkLog(SkLogPriority priority, const char format[], ...) SK_PRINTF_LIKE(2, 3); +#endif + +/** + * TODO (b/469441457): SKGPU_GRAPHITE_LOWEST_ACTIVE_LOG_PRIORITY Was the config used to set the log + * priority, so we check for that define as well. Eventually, we should move clients using this + * define to the new one. + */ +#if defined(SKGPU_GRAPHITE_LOWEST_ACTIVE_LOG_PRIORITY) + static constexpr SkLogPriority MapGraphitePriority(skgpu::graphite::LogPriority priority) { + switch (priority) { + case skgpu::graphite::LogPriority::kError: return SkLogPriority::kError; + case skgpu::graphite::LogPriority::kWarning: return SkLogPriority::kWarning; + case skgpu::graphite::LogPriority::kInfo: return SkLogPriority::kInfo; + case skgpu::graphite::LogPriority::kDebug: return SkLogPriority::kDebug; + default: return SkLogPriority::kDebug; + } + } + #define SKIA_LOWEST_ACTIVE_LOG_PRIORITY MapGraphitePriority(SKGPU_GRAPHITE_LOWEST_ACTIVE_LOG_PRIORITY) +#endif + +#if !defined(SKIA_LOWEST_ACTIVE_LOG_PRIORITY) +#ifdef SK_DEBUG + #define SKIA_LOWEST_ACTIVE_LOG_PRIORITY SkLogPriority::kDebug +#else + #define SKIA_LOWEST_ACTIVE_LOG_PRIORITY SkLogPriority::kInfo +#endif +#endif + +#define SKIA_LOG(priority, fmt, ...) \ + do { \ + if constexpr (priority <= SKIA_LOWEST_ACTIVE_LOG_PRIORITY) { \ + SkLog(priority, "[skia] " fmt "\n", ##__VA_ARGS__); \ + } \ + } while (0) + +#define SKIA_LOG_E(fmt, ...) SKIA_LOG(SkLogPriority::kError, "** ERROR ** " fmt, ##__VA_ARGS__) +#define SKIA_LOG_W(fmt, ...) SKIA_LOG(SkLogPriority::kWarning, "WARNING - " fmt, ##__VA_ARGS__) +#define SKIA_LOG_I(fmt, ...) SKIA_LOG(SkLogPriority::kInfo, fmt, ##__VA_ARGS__) +#define SKIA_LOG_D(fmt, ...) SKIA_LOG(SkLogPriority::kDebug, fmt, ##__VA_ARGS__) + +#endif // SkLog_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkLogPriority.h b/vendor/artifacts/skia/include/private/base/SkLogPriority.h new file mode 100644 index 000000000..3c19f1d2b --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkLogPriority.h @@ -0,0 +1,34 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkLogPriority_DEFINED +#define SkLogPriority_DEFINED + +/** + * Note: this file may be included in clients' SkUserConfig.h files, so including any other headers + * in this file should be avoided. + */ + +/** + * SKIA_LOWEST_ACTIVE_LOG_PRIORITY can be defined to one of these values (in + * SkUserConfig.h) to control Skia's logging behavior. + * + * For example: + * ``` + * #define SKIA_LOWEST_ACTIVE_LOG_PRIORITY SkLogPriority::kWarning + * ``` + * Would cause Skia to log warnings, non-fatal errors, and fatal errors. + * However, debug logs would be omitted. + */ +enum class SkLogPriority : int { + kError = 0, + kWarning = 1, + kInfo = 2, + kDebug = 3, +}; + +#endif // SkLogPriority_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkMacros.h b/vendor/artifacts/skia/include/private/base/SkMacros.h new file mode 100644 index 000000000..d649ad201 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkMacros.h @@ -0,0 +1,170 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkMacros_DEFINED +#define SkMacros_DEFINED + +#include "include/private/base/SkTo.h" // IWYU pragma: keep + +/* + * Usage: SK_MACRO_CONCAT(a, b) to construct the symbol ab + * + * SK_MACRO_CONCAT_IMPL_PRIV just exists to make this work. Do not use directly + * + */ +#define SK_MACRO_CONCAT(X, Y) SK_MACRO_CONCAT_IMPL_PRIV(X, Y) +#define SK_MACRO_CONCAT_IMPL_PRIV(X, Y) X ## Y + +/* + * Usage: SK_MACRO_APPEND_LINE(foo) to make foo123, where 123 is the current + * line number. Easy way to construct + * unique names for local functions or + * variables. + */ +#define SK_MACRO_APPEND_LINE(name) SK_MACRO_CONCAT(name, __LINE__) + +#define SK_MACRO_APPEND_COUNTER(name) SK_MACRO_CONCAT(name, __COUNTER__) + +/* + * Makes a string of X, where X is expanded before conversion to a string if X itself contains + * macros. + * + * Usage: SK_MACRO_STRINGIFY(__LINE__) to make "123", where 123 is the current line number. + */ +#define SK_MACRO_STRINGIFY(X) SK_MACRO_STRINGIFY_IMPL_PRIV(X) +#define SK_MACRO_STRINGIFY_IMPL_PRIV(X) #X + +//////////////////////////////////////////////////////////////////////////////// + +// Can be used to bracket data types that must be dense/packed, e.g. hash keys. +#if defined(__clang__) // This should work on GCC too, but GCC diagnostic pop didn't seem to work! + #define SK_BEGIN_REQUIRE_DENSE _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic error \"-Wpadded\"") + #define SK_END_REQUIRE_DENSE _Pragma("GCC diagnostic pop") +#else + #define SK_BEGIN_REQUIRE_DENSE + #define SK_END_REQUIRE_DENSE +#endif + +#if defined(__clang__) && defined(__has_feature) + // Some compilers have a preprocessor that does not appear to do short-circuit + // evaluation as expected + #if __has_feature(leak_sanitizer) || __has_feature(address_sanitizer) + // Chrome had issues if we tried to include lsan_interface.h ourselves. + // https://github.com/llvm/llvm-project/blob/10a35632d55bb05004fe3d0c2d4432bb74897ee7/compiler-rt/include/sanitizer/lsan_interface.h#L26 +extern "C" { + void __lsan_ignore_object(const void *p); +} + #define SK_INTENTIONALLY_LEAKED(X) __lsan_ignore_object(X) + #else + #define SK_INTENTIONALLY_LEAKED(X) ((void)0) + #endif +#else + #define SK_INTENTIONALLY_LEAKED(X) ((void)0) +#endif + +#define SK_INIT_TO_AVOID_WARNING = 0 + +//////////////////////////////////////////////////////////////////////////////// + +/** + * Defines overloaded bitwise operators to make it easier to use an enum as a + * bitfield. + */ +#define SK_MAKE_BITFIELD_OPS(X) \ + inline X operator ~(X a) { \ + using U = std::underlying_type_t; \ + return (X) (~static_cast(a)); \ + } \ + inline X operator |(X a, X b) { \ + using U = std::underlying_type_t; \ + return (X) (static_cast(a) | static_cast(b)); \ + } \ + inline X& operator |=(X& a, X b) { \ + return (a = a | b); \ + } \ + inline X operator &(X a, X b) { \ + using U = std::underlying_type_t; \ + return (X) (static_cast(a) & static_cast(b)); \ + } \ + inline X& operator &=(X& a, X b) { \ + return (a = a & b); \ + } + +#define SK_DECL_BITFIELD_OPS_FRIENDS(X) \ + friend X operator ~(X a); \ + friend X operator |(X a, X b); \ + friend X& operator |=(X& a, X b); \ + \ + friend X operator &(X a, X b); \ + friend X& operator &=(X& a, X b); + +/** + * Wraps a C++11 enum that we use as a bitfield, and enables a limited amount of + * masking with type safety. Instantiated with the ~ operator. + */ +template class SkTFlagsMask { +public: + constexpr explicit SkTFlagsMask(TFlags value) : SkTFlagsMask(static_cast(value)) {} + constexpr explicit SkTFlagsMask(int value) : fValue(value) {} + constexpr int value() const { return fValue; } +private: + const int fValue; +}; + +/** + * Defines bitwise operators that make it possible to use an enum class as a + * basic bitfield. + */ +#define SK_MAKE_BITFIELD_CLASS_OPS(X) \ + [[maybe_unused]] constexpr SkTFlagsMask operator~(X a) { \ + return SkTFlagsMask(~static_cast(a)); \ + } \ + [[maybe_unused]] constexpr X operator|(X a, X b) { \ + return static_cast(static_cast(a) | static_cast(b)); \ + } \ + [[maybe_unused]] inline X& operator|=(X& a, X b) { \ + return (a = a | b); \ + } \ + [[maybe_unused]] constexpr bool operator&(X a, X b) { \ + return SkToBool(static_cast(a) & static_cast(b)); \ + } \ + [[maybe_unused]] constexpr SkTFlagsMask operator|(SkTFlagsMask a, SkTFlagsMask b) { \ + return SkTFlagsMask(a.value() | b.value()); \ + } \ + [[maybe_unused]] constexpr SkTFlagsMask operator|(SkTFlagsMask a, X b) { \ + return SkTFlagsMask(a.value() | static_cast(b)); \ + } \ + [[maybe_unused]] constexpr SkTFlagsMask operator|(X a, SkTFlagsMask b) { \ + return SkTFlagsMask(static_cast(a) | b.value()); \ + } \ + [[maybe_unused]] constexpr X operator&(SkTFlagsMask a, SkTFlagsMask b) { \ + return static_cast(a.value() & b.value()); \ + } \ + [[maybe_unused]] constexpr X operator&(SkTFlagsMask a, X b) { \ + return static_cast(a.value() & static_cast(b)); \ + } \ + [[maybe_unused]] constexpr X operator&(X a, SkTFlagsMask b) { \ + return static_cast(static_cast(a) & b.value()); \ + } \ + [[maybe_unused]] inline X& operator&=(X& a, SkTFlagsMask b) { \ + return (a = a & b); \ + } \ + +#define SK_DECL_BITFIELD_CLASS_OPS_FRIENDS(X) \ + friend constexpr SkTFlagsMask operator ~(X); \ + friend constexpr X operator |(X, X); \ + friend X& operator |=(X&, X); \ + friend constexpr bool operator &(X, X); \ + friend constexpr SkTFlagsMask operator|(SkTFlagsMask, SkTFlagsMask); \ + friend constexpr SkTFlagsMask operator|(SkTFlagsMask, X); \ + friend constexpr SkTFlagsMask operator|(X, SkTFlagsMask); \ + friend constexpr X operator&(SkTFlagsMask, SkTFlagsMask); \ + friend constexpr X operator&(SkTFlagsMask, X); \ + friend constexpr X operator&(X, SkTFlagsMask); \ + friend X& operator &=(X&, SkTFlagsMask) + +#endif // SkMacros_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkMalloc.h b/vendor/artifacts/skia/include/private/base/SkMalloc.h new file mode 100644 index 000000000..2147a35e5 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkMalloc.h @@ -0,0 +1,152 @@ +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkMalloc_DEFINED +#define SkMalloc_DEFINED + +#include + +#include "include/private/base/SkAPI.h" + +/* + memory wrappers to be implemented by the porting layer (platform) +*/ + + +/** Free memory returned by sk_malloc(). It is safe to pass null. */ +SK_API extern void sk_free(void*); + +/** + * Called internally if we run out of memory. The platform implementation must + * not return, but should either throw an exception or otherwise exit. + */ +SK_API extern void sk_out_of_memory(void); + +enum { + /** + * If this bit is set, the returned buffer must be zero-initialized. If this bit is not set + * the buffer can be uninitialized. + */ + SK_MALLOC_ZERO_INITIALIZE = 1 << 0, + + /** + * If this bit is set, the implementation must throw/crash/quit if the request cannot + * be fulfilled. If this bit is not set, then it should return nullptr on failure. + */ + SK_MALLOC_THROW = 1 << 1, +}; +/** + * Return a block of memory (at least 4-byte aligned) of at least the specified size. + * If the requested memory cannot be returned, either return nullptr or throw/exit, depending + * on the SK_MALLOC_THROW bit. If the allocation succeeds, the memory will be zero-initialized + * if the SK_MALLOC_ZERO_INITIALIZE bit was set. + * + * To free the memory, call sk_free() + */ +SK_API extern void* sk_malloc_flags(size_t size, unsigned flags); + +/** Same as standard realloc(), but this one never returns null on failure. It will throw + * if it fails. + * If size is 0, it will call sk_free on buffer and return null. (This behavior is implementation- + * defined for normal realloc. We follow what glibc does.) + */ +SK_API extern void* sk_realloc_throw(void* buffer, size_t size); + +/** + * Return the size of the block of memory allocated in reality for a given pointer. The pointer + * passed must have been allocated using the sk_malloc_* or sk_realloc_* functions. The "size" + * parameter indicates the size originally requested when the memory block was allocated, and + * the value returned by this function must be bigger or equal to it. + */ +SK_API extern size_t sk_malloc_size(void* addr, size_t size); + +static inline void* sk_malloc_throw(size_t size) { + return sk_malloc_flags(size, SK_MALLOC_THROW); +} + +static inline void* sk_calloc_throw(size_t size) { + return sk_malloc_flags(size, SK_MALLOC_THROW | SK_MALLOC_ZERO_INITIALIZE); +} + +static inline void* sk_calloc_canfail(size_t size) { +#if defined(SK_BUILD_FOR_FUZZER) + // To reduce the chance of OOM, pretend we can't allocate more than 200kb. + if (size > 200000) { + return nullptr; + } +#endif + return sk_malloc_flags(size, SK_MALLOC_ZERO_INITIALIZE); +} + +// Performs a safe multiply count * elemSize, checking for overflow +SK_API extern void* sk_calloc_throw(size_t count, size_t elemSize); +SK_API extern void* sk_malloc_throw(size_t count, size_t elemSize); +SK_API extern void* sk_realloc_throw(void* buffer, size_t count, size_t elemSize); + +/** + * These variants return nullptr on failure + */ +static inline void* sk_malloc_canfail(size_t size) { +#if defined(SK_BUILD_FOR_FUZZER) + // To reduce the chance of OOM, pretend we can't allocate more than 200kb. + if (size > 200000) { + return nullptr; + } +#endif + return sk_malloc_flags(size, 0); +} +SK_API extern void* sk_malloc_canfail(size_t count, size_t elemSize); + +// bzero is safer than memset, but we can't rely on it, so... sk_bzero() +static inline void sk_bzero(void* buffer, size_t size) { + // Please c.f. sk_careful_memcpy. It's undefined behavior to call memset(null, 0, 0). + if (size) { + memset(buffer, 0, size); + } +} + +/** + * sk_careful_memcpy() is just like memcpy(), but guards against undefined behavior. + * + * It is undefined behavior to call memcpy() with null dst or src, even if len is 0. + * If an optimizer is "smart" enough, it can exploit this to do unexpected things. + * memcpy(dst, src, 0); + * if (src) { + * printf("%x\n", *src); + * } + * In this code the compiler can assume src is not null and omit the if (src) {...} check, + * unconditionally running the printf, crashing the program if src really is null. + * Of the compilers we pay attention to only GCC performs this optimization in practice. + */ +static inline void* sk_careful_memcpy(void* dst, const void* src, size_t len) { + // When we pass >0 len we had better already be passing valid pointers. + // So we just need to skip calling memcpy when len == 0. + if (len) { + memcpy(dst,src,len); + } + return dst; +} + +static inline void* sk_careful_memmove(void* dst, const void* src, size_t len) { + // When we pass >0 len we had better already be passing valid pointers. + // So we just need to skip calling memcpy when len == 0. + if (len) { + memmove(dst,src,len); + } + return dst; +} + +static inline int sk_careful_memcmp(const void* a, const void* b, size_t len) { + // When we pass >0 len we had better already be passing valid pointers. + // So we just need to skip calling memcmp when len == 0. + if (len == 0) { + return 0; // we treat zero-length buffers as "equal" + } + return memcmp(a, b, len); +} + +#endif // SkMalloc_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkMath.h b/vendor/artifacts/skia/include/private/base/SkMath.h new file mode 100644 index 000000000..34bfa739f --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkMath.h @@ -0,0 +1,77 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkMath_DEFINED +#define SkMath_DEFINED + +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkCPUTypes.h" + +#include +#include + +// Max Signed 16 bit value +static constexpr int16_t SK_MaxS16 = INT16_MAX; +static constexpr int16_t SK_MinS16 = -SK_MaxS16; + +static constexpr int32_t SK_MaxS32 = INT32_MAX; +static constexpr int32_t SK_MinS32 = -SK_MaxS32; +static constexpr int32_t SK_NaN32 = INT32_MIN; + +static constexpr int64_t SK_MaxS64 = INT64_MAX; +static constexpr int64_t SK_MinS64 = -SK_MaxS64; + +// 64bit -> 32bit utilities + +// Handy util that can be passed two ints, and will automatically promote to +// 64bits before the multiply, so the caller doesn't have to remember to cast +// e.g. (int64_t)a * b; +static inline int64_t sk_64_mul(int64_t a, int64_t b) { + return a * b; +} + +static inline constexpr int32_t SkLeftShift(int32_t value, int32_t shift) { + return (int32_t) ((uint32_t) value << shift); +} + +static inline constexpr int64_t SkLeftShift(int64_t value, int32_t shift) { + return (int64_t) ((uint64_t) value << shift); +} + +/////////////////////////////////////////////////////////////////////////////// + +/** + * Returns true if value is a power of 2. Does not explicitly check for + * value <= 0. + */ +template constexpr inline bool SkIsPow2(T value) { + return (value & (value - 1)) == 0; +} + +/////////////////////////////////////////////////////////////////////////////// + +/** + * Return a*b/((1 << shift) - 1), rounding any fractional bits. + * Only valid if a and b are unsigned and <= 32767 and shift is > 0 and <= 8 + */ +static inline unsigned SkMul16ShiftRound(U16CPU a, U16CPU b, int shift) { + SkASSERT(a <= 32767); + SkASSERT(b <= 32767); + SkASSERT(shift > 0 && shift <= 8); + unsigned prod = a*b + (1 << (shift - 1)); + return (prod + (prod >> shift)) >> shift; +} + +/** + * Return a*b/255, rounding any fractional bits. + * Only valid if a and b are unsigned and <= 32767. + */ +static inline U8CPU SkMulDiv255Round(U16CPU a, U16CPU b) { + return SkMul16ShiftRound(a, b, 8); +} + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkMutex.h b/vendor/artifacts/skia/include/private/base/SkMutex.h new file mode 100644 index 000000000..2ebb45bf5 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkMutex.h @@ -0,0 +1,72 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkMutex_DEFINED +#define SkMutex_DEFINED + +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkSemaphore.h" +#include "include/private/base/SkThreadAnnotations.h" +#include "include/private/base/SkThreadID.h" + +/** + * class SkMutex + * + * This allows us to have a mutex without needing the one in + * the C++ std library which does not work with all clients. + * go/cstyle#Disallowed_Stdlib + */ + +class SK_CAPABILITY("mutex") SkMutex { +public: + constexpr SkMutex() = default; + + ~SkMutex() { + this->assertNotHeld(); + } + + void acquire() SK_ACQUIRE() { + fSemaphore.wait(); + SkDEBUGCODE(fOwner = SkGetThreadID();) + } + + void release() SK_RELEASE_CAPABILITY() { + this->assertHeld(); + SkDEBUGCODE(fOwner = kIllegalThreadID;) + fSemaphore.signal(); + } + + void assertHeld() SK_ASSERT_CAPABILITY(this) { + SkASSERT(fOwner == SkGetThreadID()); + } + + void assertNotHeld() { + SkASSERT(fOwner == kIllegalThreadID); + } + +private: + SkSemaphore fSemaphore{1}; + SkDEBUGCODE(SkThreadID fOwner{kIllegalThreadID};) +}; + +class SK_SCOPED_CAPABILITY SkAutoMutexExclusive { +public: + SkAutoMutexExclusive(SkMutex& mutex) SK_ACQUIRE(mutex) : fMutex(mutex) { fMutex.acquire(); } + ~SkAutoMutexExclusive() SK_RELEASE_CAPABILITY() { fMutex.release(); } + + SkAutoMutexExclusive(const SkAutoMutexExclusive&) = delete; + SkAutoMutexExclusive(SkAutoMutexExclusive&&) = delete; + + SkAutoMutexExclusive& operator=(const SkAutoMutexExclusive&) = delete; + SkAutoMutexExclusive& operator=(SkAutoMutexExclusive&&) = delete; + +private: + SkMutex& fMutex; +}; + +#endif // SkMutex_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkNoncopyable.h b/vendor/artifacts/skia/include/private/base/SkNoncopyable.h new file mode 100644 index 000000000..ec4a4e516 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkNoncopyable.h @@ -0,0 +1,30 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkNoncopyable_DEFINED +#define SkNoncopyable_DEFINED + +#include "include/private/base/SkAPI.h" + +/** \class SkNoncopyable (DEPRECATED) + + SkNoncopyable is the base class for objects that do not want to + be copied. It hides its copy-constructor and its assignment-operator. +*/ +class SK_API SkNoncopyable { +public: + SkNoncopyable() = default; + + SkNoncopyable(SkNoncopyable&&) = default; + SkNoncopyable& operator =(SkNoncopyable&&) = default; + +private: + SkNoncopyable(const SkNoncopyable&) = delete; + SkNoncopyable& operator=(const SkNoncopyable&) = delete; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkOnce.h b/vendor/artifacts/skia/include/private/base/SkOnce.h new file mode 100644 index 000000000..97ce6b631 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkOnce.h @@ -0,0 +1,55 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkOnce_DEFINED +#define SkOnce_DEFINED + +#include "include/private/base/SkThreadAnnotations.h" + +#include +#include +#include + +// SkOnce provides call-once guarantees for Skia, much like std::once_flag/std::call_once(). +// +// There should be no particularly error-prone gotcha use cases when using SkOnce. +// It works correctly as a class member, a local, a global, a function-scoped static, whatever. + +class SkOnce { +public: + constexpr SkOnce() = default; + + template + void operator()(Fn&& fn, Args&&... args) { + auto state = fState.load(std::memory_order_acquire); + + if (state == Done) { + return; + } + + // If it looks like no one has started calling fn(), try to claim that job. + if (state == NotStarted && fState.compare_exchange_strong(state, Claimed, + std::memory_order_relaxed, + std::memory_order_relaxed)) { + // Great! We'll run fn() then notify the other threads by releasing Done into fState. + fn(std::forward(args)...); + return fState.store(Done, std::memory_order_release); + } + + // Some other thread is calling fn(). + // We'll just spin here acquiring until it releases Done into fState. + SK_POTENTIALLY_BLOCKING_REGION_BEGIN; + while (fState.load(std::memory_order_acquire) != Done) { /*spin*/ } + SK_POTENTIALLY_BLOCKING_REGION_END; + } + +private: + enum State : uint8_t { NotStarted, Claimed, Done}; + std::atomic fState{NotStarted}; +}; + +#endif // SkOnce_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkPoint_impl.h b/vendor/artifacts/skia/include/private/base/SkPoint_impl.h new file mode 100644 index 000000000..e3843b240 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkPoint_impl.h @@ -0,0 +1,560 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPoint_DEFINED +#define SkPoint_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkFloatingPoint.h" +#include "include/private/base/SkSafe32.h" + +#include +#include + +struct SkIPoint; + +/** SkIVector provides an alternative name for SkIPoint. SkIVector and SkIPoint + can be used interchangeably for all purposes. +*/ +typedef SkIPoint SkIVector; + +/** \struct SkIPoint + SkIPoint holds two 32-bit integer coordinates. +*/ +struct SkIPoint { + int32_t fX; //!< x-axis value + int32_t fY; //!< y-axis value + + /** Sets fX to x, fY to y. + + @param x integer x-axis value of constructed SkIPoint + @param y integer y-axis value of constructed SkIPoint + @return SkIPoint (x, y) + */ + static constexpr SkIPoint Make(int32_t x, int32_t y) { + return {x, y}; + } + + /** Returns x-axis value of SkIPoint. + + @return fX + */ + constexpr int32_t x() const { return fX; } + + /** Returns y-axis value of SkIPoint. + + @return fY + */ + constexpr int32_t y() const { return fY; } + + /** Returns true if fX and fY are both zero. + + @return true if fX is zero and fY is zero + */ + bool isZero() const { return (fX | fY) == 0; } + + /** Sets fX to x and fY to y. + + @param x new value for fX + @param y new value for fY + */ + void set(int32_t x, int32_t y) { + fX = x; + fY = y; + } + + /** Returns SkIPoint changing the signs of fX and fY. + + @return SkIPoint as (-fX, -fY) + */ + SkIPoint operator-() const { + return {-fX, -fY}; + } + + /** Offsets SkIPoint by ivector v. Sets SkIPoint to (fX + v.fX, fY + v.fY). + + @param v ivector to add + */ + void operator+=(const SkIVector& v) { + fX = Sk32_sat_add(fX, v.fX); + fY = Sk32_sat_add(fY, v.fY); + } + + /** Subtracts ivector v from SkIPoint. Sets SkIPoint to: (fX - v.fX, fY - v.fY). + + @param v ivector to subtract + */ + void operator-=(const SkIVector& v) { + fX = Sk32_sat_sub(fX, v.fX); + fY = Sk32_sat_sub(fY, v.fY); + } + + /** Returns true if SkIPoint is equivalent to SkIPoint constructed from (x, y). + + @param x value compared with fX + @param y value compared with fY + @return true if SkIPoint equals (x, y) + */ + bool equals(int32_t x, int32_t y) const { + return fX == x && fY == y; + } + + /** Returns true if a is equivalent to b. + + @param a SkIPoint to compare + @param b SkIPoint to compare + @return true if a.fX == b.fX and a.fY == b.fY + */ + friend bool operator==(const SkIPoint& a, const SkIPoint& b) { + return a.fX == b.fX && a.fY == b.fY; + } + + /** Returns true if a is not equivalent to b. + + @param a SkIPoint to compare + @param b SkIPoint to compare + @return true if a.fX != b.fX or a.fY != b.fY + */ + friend bool operator!=(const SkIPoint& a, const SkIPoint& b) { + return a.fX != b.fX || a.fY != b.fY; + } + + /** Returns ivector from b to a; computed as (a.fX - b.fX, a.fY - b.fY). + + Can also be used to subtract ivector from ivector, returning ivector. + + @param a SkIPoint or ivector to subtract from + @param b ivector to subtract + @return ivector from b to a + */ + friend SkIVector operator-(const SkIPoint& a, const SkIPoint& b) { + return { Sk32_sat_sub(a.fX, b.fX), Sk32_sat_sub(a.fY, b.fY) }; + } + + /** Returns SkIPoint resulting from SkIPoint a offset by ivector b, computed as: + (a.fX + b.fX, a.fY + b.fY). + + Can also be used to offset SkIPoint b by ivector a, returning SkIPoint. + Can also be used to add ivector to ivector, returning ivector. + + @param a SkIPoint or ivector to add to + @param b SkIPoint or ivector to add + @return SkIPoint equal to a offset by b + */ + friend SkIPoint operator+(const SkIPoint& a, const SkIVector& b) { + return { Sk32_sat_add(a.fX, b.fX), Sk32_sat_add(a.fY, b.fY) }; + } +}; + +struct SkPoint; + +/** SkVector provides an alternative name for SkPoint. SkVector and SkPoint can + be used interchangeably for all purposes. +*/ +typedef SkPoint SkVector; + +/** \struct SkPoint + SkPoint holds two 32-bit floating point coordinates. +*/ +struct SK_API SkPoint { + float fX; //!< x-axis value + float fY; //!< y-axis value + + /** Sets fX to x, fY to y. Used both to set SkPoint and vector. + + @param x float x-axis value of constructed SkPoint or vector + @param y float y-axis value of constructed SkPoint or vector + @return SkPoint (x, y) + */ + static constexpr SkPoint Make(float x, float y) { + return {x, y}; + } + + /** Returns x-axis value of SkPoint or vector. + + @return fX + */ + constexpr float x() const { return fX; } + + /** Returns y-axis value of SkPoint or vector. + + @return fY + */ + constexpr float y() const { return fY; } + + /** Returns true if fX and fY are both zero. + + @return true if fX is zero and fY is zero + */ + bool isZero() const { return (0 == fX) & (0 == fY); } + + /** Sets fX to x and fY to y. + + @param x new value for fX + @param y new value for fY + */ + void set(float x, float y) { + fX = x; + fY = y; + } + + /** Sets fX to x and fY to y, promoting integers to float values. + + Assigning a large integer value directly to fX or fY may cause a compiler + error, triggered by narrowing conversion of int to float. This safely + casts x and y to avoid the error. + + @param x new value for fX + @param y new value for fY + */ + void iset(int32_t x, int32_t y) { + fX = static_cast(x); + fY = static_cast(y); + } + + /** Sets fX to p.fX and fY to p.fY, promoting integers to float values. + + Assigning an SkIPoint containing a large integer value directly to fX or fY may + cause a compiler error, triggered by narrowing conversion of int to float. + This safely casts p.fX and p.fY to avoid the error. + + @param p SkIPoint members promoted to float + */ + void iset(const SkIPoint& p) { + fX = static_cast(p.fX); + fY = static_cast(p.fY); + } + + /** Sets fX to absolute value of pt.fX; and fY to absolute value of pt.fY. + + @param pt members providing magnitude for fX and fY + */ + void setAbs(const SkPoint& pt) { + fX = std::abs(pt.fX); + fY = std::abs(pt.fY); + } + + /** Adds offset to each SkPoint in points array with count entries. + + @param points SkPoint array + @param count entries in array + @param offset vector added to points + */ + static void Offset(SkPoint points[], int count, const SkVector& offset) { + Offset(points, count, offset.fX, offset.fY); + } + + /** Adds offset (dx, dy) to each SkPoint in points array of length count. + + @param points SkPoint array + @param count entries in array + @param dx added to fX in points + @param dy added to fY in points + */ + static void Offset(SkPoint points[], int count, float dx, float dy) { + for (int i = 0; i < count; ++i) { + points[i].offset(dx, dy); + } + } + + /** Adds offset (dx, dy) to SkPoint. + + @param dx added to fX + @param dy added to fY + */ + void offset(float dx, float dy) { + fX += dx; + fY += dy; + } + + /** Returns the Euclidean distance from origin, computed as: + + sqrt(fX * fX + fY * fY) + + . + + @return straight-line distance to origin + */ + float length() const { return SkPoint::Length(fX, fY); } + + /** Returns the Euclidean distance from origin, computed as: + + sqrt(fX * fX + fY * fY) + + . + + @return straight-line distance to origin + */ + float distanceToOrigin() const { return this->length(); } + + /** Scales (fX, fY) so that length() returns one, while preserving ratio of fX to fY, + if possible. If prior length is nearly zero, sets vector to (0, 0) and returns + false; otherwise returns true. + + @return true if former length is not zero or nearly zero + + example: https://fiddle.skia.org/c/@Point_normalize_2 + */ + bool normalize(); + + /** Sets vector to (x, y) scaled so length() returns one, and so that + (fX, fY) is proportional to (x, y). If (x, y) length is nearly zero, + sets vector to (0, 0) and returns false; otherwise returns true. + + @param x proportional value for fX + @param y proportional value for fY + @return true if (x, y) length is not zero or nearly zero + + example: https://fiddle.skia.org/c/@Point_setNormalize + */ + bool setNormalize(float x, float y); + + /** Scales vector so that distanceToOrigin() returns length, if possible. If former + length is nearly zero, sets vector to (0, 0) and return false; otherwise returns + true. + + @param length straight-line distance to origin + @return true if former length is not zero or nearly zero + + example: https://fiddle.skia.org/c/@Point_setLength + */ + bool setLength(float length); + + /** Sets vector to (x, y) scaled to length, if possible. If former + length is nearly zero, sets vector to (0, 0) and return false; otherwise returns + true. + + @param x proportional value for fX + @param y proportional value for fY + @param length straight-line distance to origin + @return true if (x, y) length is not zero or nearly zero + + example: https://fiddle.skia.org/c/@Point_setLength_2 + */ + bool setLength(float x, float y, float length); + + /** Sets dst to SkPoint times scale. dst may be SkPoint to modify SkPoint in place. + + @param scale factor to multiply SkPoint by + @param dst storage for scaled SkPoint + + example: https://fiddle.skia.org/c/@Point_scale + */ + void scale(float scale, SkPoint* dst) const; + + /** Scales SkPoint in place by scale. + + @param value factor to multiply SkPoint by + */ + void scale(float value) { this->scale(value, this); } + + /** Changes the sign of fX and fY. + */ + void negate() { + fX = -fX; + fY = -fY; + } + + /** Returns SkPoint changing the signs of fX and fY. + + @return SkPoint as (-fX, -fY) + */ + SkPoint operator-() const { + return {-fX, -fY}; + } + + /** Adds vector v to SkPoint. Sets SkPoint to: (fX + v.fX, fY + v.fY). + + @param v vector to add + */ + void operator+=(const SkVector& v) { + fX += v.fX; + fY += v.fY; + } + + /** Subtracts vector v from SkPoint. Sets SkPoint to: (fX - v.fX, fY - v.fY). + + @param v vector to subtract + */ + void operator-=(const SkVector& v) { + fX -= v.fX; + fY -= v.fY; + } + + /** Returns SkPoint multiplied by scale. + + @param scale float to multiply by + @return SkPoint as (fX * scale, fY * scale) + */ + SkPoint operator*(float scale) const { + return {fX * scale, fY * scale}; + } + + /** Multiplies SkPoint by scale. Sets SkPoint to: (fX * scale, fY * scale). + + @param scale float to multiply by + @return reference to SkPoint + */ + SkPoint& operator*=(float scale) { + fX *= scale; + fY *= scale; + return *this; + } + + /** Returns true if both fX and fY are measurable values. + + @return true for values other than infinities and NaN + */ + bool isFinite() const { + return SkIsFinite(fX, fY); + } + + /** Returns true if SkPoint is equivalent to SkPoint constructed from (x, y). + + @param x value compared with fX + @param y value compared with fY + @return true if SkPoint equals (x, y) + */ + bool equals(float x, float y) const { + return fX == x && fY == y; + } + + /** Returns true if a is equivalent to b. + + @param a SkPoint to compare + @param b SkPoint to compare + @return true if a.fX == b.fX and a.fY == b.fY + */ + friend bool operator==(const SkPoint& a, const SkPoint& b) { + return a.fX == b.fX && a.fY == b.fY; + } + + /** Returns true if a is not equivalent to b. + + @param a SkPoint to compare + @param b SkPoint to compare + @return true if a.fX != b.fX or a.fY != b.fY + */ + friend bool operator!=(const SkPoint& a, const SkPoint& b) { + return a.fX != b.fX || a.fY != b.fY; + } + + /** Returns vector from b to a, computed as (a.fX - b.fX, a.fY - b.fY). + + Can also be used to subtract vector from SkPoint, returning SkPoint. + Can also be used to subtract vector from vector, returning vector. + + @param a SkPoint to subtract from + @param b SkPoint to subtract + @return vector from b to a + */ + friend SkVector operator-(const SkPoint& a, const SkPoint& b) { + return {a.fX - b.fX, a.fY - b.fY}; + } + + /** Returns SkPoint resulting from SkPoint a offset by vector b, computed as: + (a.fX + b.fX, a.fY + b.fY). + + Can also be used to offset SkPoint b by vector a, returning SkPoint. + Can also be used to add vector to vector, returning vector. + + @param a SkPoint or vector to add to + @param b SkPoint or vector to add + @return SkPoint equal to a offset by b + */ + friend SkPoint operator+(const SkPoint& a, const SkVector& b) { + return {a.fX + b.fX, a.fY + b.fY}; + } + + /** Returns the Euclidean distance from origin, computed as: + + sqrt(x * x + y * y) + + . + + @param x component of length + @param y component of length + @return straight-line distance to origin + + example: https://fiddle.skia.org/c/@Point_Length + */ + static float Length(float x, float y); + + /** Scales (vec->fX, vec->fY) so that length() returns one, while preserving ratio of vec->fX + to vec->fY, if possible. If original length is nearly zero, sets vec to (0, 0) and returns + zero; otherwise, returns length of vec before vec is scaled. + + Returned prior length may be INFINITY if it can not be represented by float. + + Note that normalize() is faster if prior length is not required. + + @param vec normalized to unit length + @return original vec length + + example: https://fiddle.skia.org/c/@Point_Normalize + */ + static float Normalize(SkVector* vec); + + /** Returns the Euclidean distance between a and b. + + @param a line end point + @param b line end point + @return straight-line distance from a to b + */ + static float Distance(const SkPoint& a, const SkPoint& b) { + return Length(a.fX - b.fX, a.fY - b.fY); + } + + /** Returns the dot product of vector a and vector b. + + @param a left side of dot product + @param b right side of dot product + @return product of input magnitudes and cosine of the angle between them + */ + static float DotProduct(const SkVector& a, const SkVector& b) { + return a.fX * b.fX + a.fY * b.fY; + } + + /** Returns the cross product of vector a and vector b. + + a and b form three-dimensional vectors with z-axis value equal to zero. The + cross product is a three-dimensional vector with x-axis and y-axis values equal + to zero. The cross product z-axis component is returned. + + @param a left side of cross product + @param b right side of cross product + @return area spanned by vectors signed by angle direction + */ + static float CrossProduct(const SkVector& a, const SkVector& b) { + return a.fX * b.fY - a.fY * b.fX; + } + + /** Returns the cross product of vector and vec. + + Vector and vec form three-dimensional vectors with z-axis value equal to zero. + The cross product is a three-dimensional vector with x-axis and y-axis values + equal to zero. The cross product z-axis component is returned. + + @param vec right side of cross product + @return area spanned by vectors signed by angle direction + */ + float cross(const SkVector& vec) const { + return CrossProduct(*this, vec); + } + + /** Returns the dot product of vector and vector vec. + + @param vec right side of dot product + @return product of input magnitudes and cosine of the angle between them + */ + float dot(const SkVector& vec) const { + return DotProduct(*this, vec); + } + +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkSafe32.h b/vendor/artifacts/skia/include/private/base/SkSafe32.h new file mode 100644 index 000000000..88e7a2244 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkSafe32.h @@ -0,0 +1,49 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSafe32_DEFINED +#define SkSafe32_DEFINED + +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkMath.h" + +#include + +static constexpr int32_t Sk64_pin_to_s32(int64_t x) { + return x < SK_MinS32 ? SK_MinS32 : (x > SK_MaxS32 ? SK_MaxS32 : (int32_t)x); +} + +static constexpr int32_t Sk32_sat_add(int32_t a, int32_t b) { + return Sk64_pin_to_s32((int64_t)a + (int64_t)b); +} + +static constexpr int32_t Sk32_sat_sub(int32_t a, int32_t b) { + return Sk64_pin_to_s32((int64_t)a - (int64_t)b); +} + +// To avoid UBSAN complaints about 2's compliment overflows +// +static constexpr int32_t Sk32_can_overflow_add(int32_t a, int32_t b) { + return (int32_t)((uint32_t)a + (uint32_t)b); +} +static constexpr int32_t Sk32_can_overflow_sub(int32_t a, int32_t b) { + return (int32_t)((uint32_t)a - (uint32_t)b); +} + +/** + * This is a 'safe' abs for 32-bit integers that asserts when undefined behavior would occur. + * SkTAbs (in SkTemplates.h) is a general purpose absolute-value function. + */ +static inline int32_t SkAbs32(int32_t value) { + SkASSERT(value != SK_NaN32); // The most negative int32_t can't be negated. + if (value < 0) { + value = -value; + } + return value; +} + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkSemaphore.h b/vendor/artifacts/skia/include/private/base/SkSemaphore.h new file mode 100644 index 000000000..f78ee8662 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkSemaphore.h @@ -0,0 +1,84 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSemaphore_DEFINED +#define SkSemaphore_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkOnce.h" +#include "include/private/base/SkThreadAnnotations.h" + +#include +#include + +class SkSemaphore { +public: + constexpr SkSemaphore(int count = 0) : fCount(count), fOSSemaphore(nullptr) {} + + // Cleanup the underlying OS semaphore. + SK_SPI ~SkSemaphore(); + + // Increment the counter n times. + // Generally it's better to call signal(n) instead of signal() n times. + void signal(int n = 1); + + // Decrement the counter by 1, + // then if the counter is < 0, sleep this thread until the counter is >= 0. + void wait(); + + // If the counter is positive, decrement it by 1 and return true, otherwise return false. + SK_SPI bool try_wait(); + +private: + // This implementation follows the general strategy of + // 'A Lightweight Semaphore with Partial Spinning' + // found here + // http://preshing.com/20150316/semaphores-are-surprisingly-versatile/ + // That article (and entire blog) are very much worth reading. + // + // We wrap an OS-provided semaphore with a user-space atomic counter that + // lets us avoid interacting with the OS semaphore unless strictly required: + // moving the count from >=0 to <0 or vice-versa, i.e. sleeping or waking threads. + struct OSSemaphore; + + SK_SPI void osSignal(int n); + SK_SPI void osWait(); + + std::atomic fCount; + SkOnce fOSSemaphoreOnce; + OSSemaphore* fOSSemaphore; +}; + +inline void SkSemaphore::signal(int n) { + int prev = fCount.fetch_add(n, std::memory_order_release); + + // We only want to call the OS semaphore when our logical count crosses + // from <0 to >=0 (when we need to wake sleeping threads). + // + // This is easiest to think about with specific examples of prev and n. + // If n == 5 and prev == -3, there are 3 threads sleeping and we signal + // std::min(-(-3), 5) == 3 times on the OS semaphore, leaving the count at 2. + // + // If prev >= 0, no threads are waiting, std::min(-prev, n) is always <= 0, + // so we don't call the OS semaphore, leaving the count at (prev + n). + int toSignal = std::min(-prev, n); + if (toSignal > 0) { + this->osSignal(toSignal); + } +} + +inline void SkSemaphore::wait() { + // Since this fetches the value before the subtract, zero and below means that there are no + // resources left, so the thread needs to wait. + if (fCount.fetch_sub(1, std::memory_order_acquire) <= 0) { + SK_POTENTIALLY_BLOCKING_REGION_BEGIN; + this->osWait(); + SK_POTENTIALLY_BLOCKING_REGION_END; + } +} + +#endif//SkSemaphore_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkSpan_impl.h b/vendor/artifacts/skia/include/private/base/SkSpan_impl.h new file mode 100644 index 000000000..1119bcc65 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkSpan_impl.h @@ -0,0 +1,158 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSpan_DEFINED +#define SkSpan_DEFINED + +/* + * Define this to keep the bespoke SkSpan implementation, until clients are ready. + * When this is not defined, SkSpan becomes just an alias for std::span + */ +#define SK_USE_LEGACY_SKSPAN + +/* + * SkSpan handles single POD initialization differently from std::span + * This macro allows clients to initialize a span with a single POD that will work with + * either implementation of SkSpan. + * + * When we switch to std::span entirely, callsites can remove this macro, and juse type {{a}} + */ +#ifdef SK_USE_LEGACY_SKSPAN + #define SKSPAN_INIT_ONE(elem) {elem} +#else + #define SKSPAN_INIT_ONE(elem) {{elem}} +#endif + +#ifdef SK_USE_LEGACY_SKSPAN + +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkTo.h" + +#include +#include +#include +#include +#include + +// Having this be an export works around IWYU churn related to +// https://github.com/include-what-you-use/include-what-you-use/issues/1121 +#include // IWYU pragma: export + +// Add macro to check the lifetime of initializer_list arguments. initializer_list has a very +// short life span, and can only be used as a parameter, and not as a variable. +#if defined(__clang__) && defined(__has_cpp_attribute) && __has_cpp_attribute(clang::lifetimebound) +#define SK_CHECK_IL_LIFETIME [[clang::lifetimebound]] +#else +#define SK_CHECK_IL_LIFETIME +#endif + +/** + * SkSpan holds a reference to contiguous data of type T along with a count. SkSpan does not own + * the data itself but is merely a reference, therefore you must take care with the lifetime of + * the underlying data. + * + * SkSpan is a count and a pointer into existing array or data type that stores its data in + * contiguous memory like std::vector. Any container that works with std::size() and std::data() + * can be used. + * + * SkSpan makes a convenient parameter for a routine to accept array like things. This allows you to + * write the routine without overloads for all different container types. + * + * Example: + * void routine(SkSpan a) { ... } + * + * std::vector v = {1, 2, 3, 4, 5}; + * + * routine(a); + * + * A word of caution when working with initializer_list, initializer_lists have a lifetime that is + * limited to the current statement. The following is correct and safe: + * + * Example: + * routine({1,2,3,4,5}); + * + * The following is undefined, and will result in erratic execution: + * + * Bad Example: + * initializer_list l = {1, 2, 3, 4, 5}; // The data behind l dies at the ;. + * routine(l); + */ +template +class SkSpan { +public: + constexpr SkSpan() : fPtr{nullptr}, fSize{0} {} + + template , bool> = true> + constexpr SkSpan(T* ptr, Integer size) : fPtr{ptr}, fSize{SkToSizeT(size)} { + SkASSERT(ptr || fSize == 0); // disallow nullptr + a nonzero size + SkASSERT(fSize < (std::numeric_limits::max() / sizeof(T))); + } + template >> + constexpr SkSpan(const SkSpan& that) : fPtr(std::data(that)), fSize(std::size(that)) {} + constexpr SkSpan(const SkSpan& o) = default; + template constexpr SkSpan(T(&a)[N]) : SkSpan(a, N) { } + template + constexpr SkSpan(Container&& c) : SkSpan(std::data(c), std::size(c)) { } + SkSpan(std::initializer_list il SK_CHECK_IL_LIFETIME) + : SkSpan(std::data(il), std::size(il)) {} + + constexpr SkSpan& operator=(const SkSpan& that) = default; + + constexpr T& operator [] (size_t i) const { + return fPtr[sk_collection_check_bounds(i, this->size())]; + } + constexpr T& front() const { sk_collection_not_empty(this->empty()); return fPtr[0]; } + constexpr T& back() const { sk_collection_not_empty(this->empty()); return fPtr[fSize - 1]; } + constexpr T* begin() const { return fPtr; } + constexpr T* end() const { return fPtr + fSize; } + constexpr auto rbegin() const { return std::make_reverse_iterator(this->end()); } + constexpr auto rend() const { return std::make_reverse_iterator(this->begin()); } + constexpr T* data() const { return this->begin(); } + constexpr size_t size() const { return fSize; } + constexpr bool empty() const { return fSize == 0; } + constexpr size_t size_bytes() const { return fSize * sizeof(T); } + constexpr SkSpan first(size_t prefixLen) const { + return SkSpan{fPtr, sk_collection_check_length(prefixLen, fSize)}; + } + constexpr SkSpan last(size_t postfixLen) const { + return SkSpan{fPtr + (this->size() - postfixLen), + sk_collection_check_length(postfixLen, fSize)}; + } + constexpr SkSpan subspan(size_t offset) const { + return this->subspan(offset, this->size() - offset); + } + constexpr SkSpan subspan(size_t offset, size_t count) const { + const size_t safeOffset = sk_collection_check_length(offset, fSize); + + // Should read offset + count > size(), but that could overflow. We know that safeOffset + // is <= size, therefore the subtraction will not overflow. + if (count > this->size() - safeOffset) SK_UNLIKELY { + // The count is too large. + SkUNREACHABLE; + } + return SkSpan{fPtr + safeOffset, count}; + } + +private: + T* fPtr; + size_t fSize; +}; + +template +SkSpan(Container&&) -> + SkSpan()))>>; + +#else + +#include + +template using SkSpan = std::span; + +#endif // legacy + +#endif // SkSpan_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkTArray.h b/vendor/artifacts/skia/include/private/base/SkTArray.h new file mode 100644 index 000000000..1a833f108 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkTArray.h @@ -0,0 +1,824 @@ +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTArray_DEFINED +#define SkTArray_DEFINED + +#include "include/private/base/SkASAN.h" // IWYU pragma: keep +#include "include/private/base/SkAlignedStorage.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkAttributes.h" +#include "include/private/base/SkContainers.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkMalloc.h" +#include "include/private/base/SkMath.h" +#include "include/private/base/SkSpan_impl.h" +#include "include/private/base/SkTo.h" +#include "include/private/base/SkTypeTraits.h" // IWYU pragma: keep + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace skia_private { +/** TArray implements a typical, mostly std::vector-like array. + Each T will be default-initialized on allocation, and ~T will be called on destruction. + + MEM_MOVE controls the behavior when a T needs to be moved (e.g. when the array is resized) + - true: T will be bit-copied via memcpy. + - false: T will be moved via move-constructors. +*/ +template > class TArray { +public: + using value_type = T; + + /** + * Creates an empty array with no initial storage + */ + TArray() : fOwnMemory(true), fCapacity{0} {} + + /** + * Creates an empty array that will preallocate space for reserveCount elements. + */ + explicit TArray(int reserveCount) : TArray() { this->reserve_exact(reserveCount); } + + /** + * Copies one array to another. The new array will be heap allocated. + */ + TArray(const TArray& that) : TArray(that.fData, that.fSize) {} + + TArray(TArray&& that) { + if (that.fOwnMemory) { + this->setData(that); + that.setData({}); + } else { + this->initData(that.fSize); + that.move(fData); + } + this->changeSize(that.fSize); + that.changeSize(0); + } + + /** + * Creates a TArray by copying contents of a standard C array. The new + * array will be heap allocated. Be careful not to use this constructor + * when you really want the (void*, int) version. + */ + TArray(const T* array, int count) { + this->initData(count); + this->copy(array); + } + + /** + * Creates a TArray by copying contents from an SkSpan. The new array will be heap allocated. + */ + TArray(SkSpan data) : TArray(data.data(), static_cast(data.size())) {} + + /** + * Creates a TArray by copying contents of an initializer list. + */ + TArray(std::initializer_list data) : TArray(data.begin(), data.size()) {} + + TArray& operator=(const TArray& that) { + if (this == &that) { + return *this; + } + this->clear(); + this->checkRealloc(that.size(), kExactFit); + this->changeSize(that.fSize); + this->copy(that.fData); + return *this; + } + + TArray& operator=(TArray&& that) { + if (this != &that) { + this->clear(); + this->unpoison(); + that.unpoison(); + if (that.fOwnMemory) { + // The storage is on the heap, so move the data pointer. + if (fOwnMemory) { + sk_free(fData); + } + + fData = std::exchange(that.fData, nullptr); + + // Can't use exchange with bitfields. + fCapacity = that.fCapacity; + that.fCapacity = 0; + + fOwnMemory = true; + + this->changeSize(that.fSize); + } else { + // The data is stored inline in that, so move it element-by-element. + this->checkRealloc(that.size(), kExactFit); + this->changeSize(that.fSize); + that.move(fData); + } + that.changeSize(0); + } + return *this; + } + + ~TArray() { + this->destroyAll(); + this->unpoison(); + if (fOwnMemory) { + sk_free(fData); + } + } + + /** + * Resets to size() = n newly constructed T objects and resets any reserve count. + */ + void reset(int n) { + SkASSERT(n >= 0); + this->clear(); + this->checkRealloc(n, kExactFit); + this->changeSize(n); + for (int i = 0; i < this->size(); ++i) { + new (fData + i) T; + } + } + + /** + * Resets to a copy of a C array and resets any reserve count. + */ + void reset(SkSpan src) { + this->clear(); + this->checkRealloc(src.size(), kExactFit); + this->changeSize(src.size()); + this->copy(src.data()); + } + + /** + * Ensures there is enough reserved space for at least n elements. This is guaranteed at least + * until the array size grows above n and subsequently shrinks below n, any version of reset() + * is called, or reserve() is called again. + */ + void reserve(int n) { + SkASSERT(n >= 0); + if (n > this->size()) { + this->checkRealloc(n - this->size(), kGrowing); + } + } + + /** + * Ensures there is enough reserved space for exactly n elements. The same capacity guarantees + * as above apply. + */ + void reserve_exact(int n) { + SkASSERT(n >= 0); + if (n > this->size()) { + this->checkRealloc(n - this->size(), kExactFit); + } + } + + void removeShuffle(int n) { + SkASSERT(n < this->size()); + int newCount = fSize - 1; + fData[n].~T(); + if (n != newCount) { + this->move(n, newCount); + } + this->changeSize(newCount); + } + + // Is the array empty. + bool empty() const { return fSize == 0; } + + /** + * Adds one new default-initialized T value and returns it by reference. Note that the reference + * only remains valid until the next call that adds or removes elements. + */ + T& push_back() { + void* newT = this->push_back_raw(1); + return *new (newT) T; + } + + /** + * Adds one new T value which is copy-constructed, returning it by reference. As always, + * the reference only remains valid until the next call that adds or removes elements. + */ + T& push_back(const T& t) { + this->unpoison(); + T* newT; + if (this->capacity() > fSize) SK_LIKELY { + // Copy over the element directly. + newT = new (fData + fSize) T(t); + } else { + newT = this->growAndConstructAtEnd(t); + } + + this->changeSize(fSize + 1); + return *newT; + } + + /** + * Adds one new T value which is copy-constructed, returning it by reference. + */ + T& push_back(T&& t) { + this->unpoison(); + T* newT; + if (this->capacity() > fSize) SK_LIKELY { + // Move over the element directly. + newT = new (fData + fSize) T(std::move(t)); + } else { + newT = this->growAndConstructAtEnd(std::move(t)); + } + + this->changeSize(fSize + 1); + return *newT; + } + + /** + * Constructs a new T at the back of this array, returning it by reference. + */ + template T& emplace_back(Args&&... args) { + this->unpoison(); + T* newT; + if (this->capacity() > fSize) SK_LIKELY { + // Emplace the new element in directly. + newT = new (fData + fSize) T(std::forward(args)...); + } else { + newT = this->growAndConstructAtEnd(std::forward(args)...); + } + + this->changeSize(fSize + 1); + return *newT; + } + + /** + * Allocates n more default-initialized T values, and returns the address of + * the start of that new range. Note: this address is only valid until the + * next API call made on the array that might add or remove elements. + */ + T* push_back_n(int n) { + SkASSERT(n >= 0); + T* newTs = TCast(this->push_back_raw(n)); + for (int i = 0; i < n; ++i) { + new (&newTs[i]) T; + } + return newTs; + } + + /** + * Version of above that uses a copy constructor to initialize all n items + * to the same T. + */ + T* push_back_n(int n, const T& t) { + SkASSERT(n >= 0); + T* newTs = TCast(this->push_back_raw(n)); + for (int i = 0; i < n; ++i) { + new (&newTs[i]) T(t); + } + return static_cast(newTs); + } + + /** + * Version of above that uses a copy constructor to initialize the n items + * to separate T values. + */ + T* push_back_n(int n, const T t[]) { + SkASSERT(n >= 0); + this->checkRealloc(n, kGrowing); + T* end = this->end(); + this->changeSize(fSize + n); + for (int i = 0; i < n; ++i) { + new (end + i) T(t[i]); + } + return end; + } + + /** + * Version of above that uses the move constructor to set n items. + */ + T* move_back_n(int n, T* t) { + SkASSERT(n >= 0); + this->checkRealloc(n, kGrowing); + T* end = this->end(); + this->changeSize(fSize + n); + for (int i = 0; i < n; ++i) { + new (end + i) T(std::move(t[i])); + } + return end; + } + + /** + * Removes the last element. Not safe to call when size() == 0. + */ + void pop_back() { + sk_collection_not_empty(this->empty()); + fData[fSize - 1].~T(); + this->changeSize(fSize - 1); + } + + /** + * Removes the last n elements. Not safe to call when size() < n. + */ + void pop_back_n(int n) { + SkASSERT(n >= 0); + SkASSERT(this->size() >= n); + int i = fSize; + while (i-- > fSize - n) { + (*this)[i].~T(); + } + this->changeSize(fSize - n); + } + + /** + * Pushes or pops from the back to resize. Pushes will be default initialized. + */ + void resize_back(int newCount) { + SkASSERT(newCount >= 0); + if (newCount > this->size()) { + if (this->empty()) { + // When the container is completely empty, grow to exactly the requested size. + this->checkRealloc(newCount, kExactFit); + } + this->push_back_n(newCount - fSize); + } else if (newCount < this->size()) { + this->pop_back_n(fSize - newCount); + } + } + + /** Swaps the contents of this array with that array. Does a pointer swap if possible, + otherwise copies the T values. */ + void swap(TArray& that) { + using std::swap; + if (this == &that) { + return; + } + if (fOwnMemory && that.fOwnMemory) { + swap(fData, that.fData); + swap(fSize, that.fSize); + + // Can't use swap because fCapacity is a bit field. + auto allocCount = fCapacity; + fCapacity = that.fCapacity; + that.fCapacity = allocCount; + } else { + // This could be more optimal... + TArray copy(std::move(that)); + that = std::move(*this); + *this = std::move(copy); + } + } + + /** + * Moves all elements of `that` to the end of this array, leaving `that` empty. + * This is a no-op if `that` is empty or equal to this array. + */ + void move_back(TArray& that) { + if (that.empty() || &that == this) { + return; + } + void* dst = this->push_back_raw(that.size()); + // After move() returns, the contents of `dst` will have either been in-place initialized + // using a the move constructor (per-item from `that`'s elements), or will have been + // mem-copied into when MEM_MOVE is true (now valid objects). + that.move(dst); + // All items in `that` have either been destroyed (when MEM_MOVE is false) or should be + // considered invalid (when MEM_MOVE is true). Reset fSize to 0 directly to skip any further + // per-item destruction. + that.changeSize(0); + } + + T* begin() { + return fData; + } + const T* begin() const { + return fData; + } + + // It's safe to use fItemArray + fSize because if fItemArray is nullptr then adding 0 is + // valid and returns nullptr. See [expr.add] in the C++ standard. + T* end() { + if (fData == nullptr) { + SkASSERT(fSize == 0); + } + return fData + fSize; + } + const T* end() const { + if (fData == nullptr) { + SkASSERT(fSize == 0); + } + return fData + fSize; + } + T* data() { return fData; } + const T* data() const { return fData; } + int size() const { return fSize; } + size_t size_bytes() const { return Bytes(fSize); } + void resize(size_t count) { this->resize_back((int)count); } + + void clear() { + this->destroyAll(); + this->changeSize(0); + } + + void shrink_to_fit() { + if (!fOwnMemory || fSize == fCapacity) { + return; + } + this->unpoison(); + if (fSize == 0) { + sk_free(fData); + fData = nullptr; + fCapacity = 0; + } else { + SkSpan allocation = Allocate(fSize); + this->move(TCast(allocation.data())); + if (fOwnMemory) { + sk_free(fData); + } + // Poison is applied in `setDataFromBytes`. + this->setDataFromBytes(allocation); + } + } + + /** + * Get the i^th element. + */ + T& operator[] (int i) { + return fData[sk_collection_check_bounds(i, this->size())]; + } + + const T& operator[] (int i) const { + return fData[sk_collection_check_bounds(i, this->size())]; + } + + T& at(int i) { return (*this)[i]; } + const T& at(int i) const { return (*this)[i]; } + + /** + * equivalent to operator[](0) + */ + T& front() { + sk_collection_not_empty(this->empty()); + return fData[0]; + } + + const T& front() const { + sk_collection_not_empty(this->empty()); + return fData[0]; + } + + /** + * equivalent to operator[](size() - 1) + */ + T& back() { + sk_collection_not_empty(this->empty()); + return fData[fSize - 1]; + } + + const T& back() const { + sk_collection_not_empty(this->empty()); + return fData[fSize - 1]; + } + + /** + * equivalent to operator[](size()-1-i) + */ + T& fromBack(int i) { + return (*this)[fSize - i - 1]; + } + + const T& fromBack(int i) const { + return (*this)[fSize - i - 1]; + } + + bool operator==(const TArray& right) const { + int leftCount = this->size(); + if (leftCount != right.size()) { + return false; + } + for (int index = 0; index < leftCount; ++index) { + if (fData[index] != right.fData[index]) { + return false; + } + } + return true; + } + + bool operator!=(const TArray& right) const { + return !(*this == right); + } + + int capacity() const { + return fCapacity; + } + +protected: + // Creates an empty array that will use the passed storage block until it is insufficiently + // large to hold the entire array. + template + TArray(SkAlignedSTStorage* storage, int size = 0) { + static_assert(InitialCapacity >= 0); + SkASSERT(size >= 0); + SkASSERT(storage->get() != nullptr); + if (size > InitialCapacity) { + this->initData(size); + } else { + this->setDataFromBytes({storage->data(), storage->size()}); + this->changeSize(size); + + // setDataFromBytes always sets fOwnMemory to true, but we are actually using static + // storage here, which shouldn't ever be freed. + fOwnMemory = false; + } + } + + // Copy a C array, using pre-allocated storage if preAllocCount >= count. Otherwise, storage + // will only be used when array shrinks to fit. + template + TArray(const T* array, int size, SkAlignedSTStorage* storage) + : TArray{storage, size} { + this->copy(array); + } + template + TArray(SkSpan data, SkAlignedSTStorage* storage) + : TArray{storage, static_cast(data.size())} { + this->copy(data.data()); + } + +private: + // Growth factors for checkRealloc. + static constexpr double kExactFit = 1.0; + static constexpr double kGrowing = 1.5; + + static constexpr int kMinHeapAllocCount = 8; + static_assert(SkIsPow2(kMinHeapAllocCount), "min alloc count not power of two."); + + // Note for 32-bit machines kMaxCapacity will be <= SIZE_MAX. For 64-bit machines it will + // just be INT_MAX if the sizeof(T) < 2^32. + static constexpr int kMaxCapacity = SkToInt(std::min(SIZE_MAX / sizeof(T), (size_t)INT_MAX)); + + void setDataFromBytes(SkSpan allocation) { + T* data = TCast(allocation.data()); + // We have gotten extra bytes back from the allocation limit, pin to kMaxCapacity. It + // would seem like the SkContainerAllocator should handle the divide, but it would have + // to a full divide instruction. If done here the size is known at compile, and usually + // can be implemented by a right shift. The full divide takes ~50X longer than the shift. + size_t size = std::min(allocation.size() / sizeof(T), SkToSizeT(kMaxCapacity)); + this->setData(SkSpan(data, size)); + } + + void setData(SkSpan array) { + this->unpoison(); + + fData = array.data(); + fCapacity = SkToU32(array.size()); + fOwnMemory = true; + + this->poison(); + } + + void unpoison() { +#ifdef SK_SANITIZE_ADDRESS + if (fData && fPoisoned) { + // SkDebugf("UNPOISONING %p : 0 -> %zu\n", fData, Bytes(fCapacity)); + sk_asan_unpoison_memory_region(this->begin(), Bytes(fCapacity)); + fPoisoned = false; + } +#endif + } + + void poison() { +#ifdef SK_SANITIZE_ADDRESS + if (fData && fCapacity > SkToUInt(fSize)) { + // SkDebugf(" POISONING %p : %zu -> %zu\n", fData, Bytes(fSize), Bytes(fCapacity)); + sk_asan_poison_memory_region(this->end(), Bytes(fCapacity - fSize)); + fPoisoned = true; + } +#endif + } + + void changeSize(int n) { + this->unpoison(); + fSize = n; + this->poison(); + } + + // We disable Control-Flow Integrity sanitization (go/cfi) when casting item-array buffers. + // CFI flags this code as dangerous because we are casting `buffer` to a T* while the buffer's + // contents might still be uninitialized memory. When T has a vtable, this is especially risky + // because we could hypothetically access a virtual method on fItemArray and jump to an + // unpredictable location in memory. Of course, TArray won't actually use fItemArray in this + // way, and we don't want to construct a T before the user requests one. There's no real risk + // here, so disable CFI when doing these casts. + SK_NO_SANITIZE_CFI + static T* TCast(void* buffer) { + return (T*)buffer; + } + + static size_t Bytes(int n) { + SkASSERT(n <= kMaxCapacity); + return SkToSizeT(n) * sizeof(T); + } + + static SkSpan Allocate(int capacity, double growthFactor = 1.0) { + return SkContainerAllocator{sizeof(T), kMaxCapacity}.allocate(capacity, growthFactor); + } + + void initData(int count) { + this->setDataFromBytes(Allocate(count)); + this->changeSize(count); + } + + void destroyAll() { + if (!this->empty()) { + T* cursor = this->begin(); + T* const end = this->end(); + do { + cursor->~T(); + cursor++; + } while (cursor < end); + } + } + + /** In the following move and copy methods, 'dst' is assumed to be uninitialized raw storage. + * In the following move methods, 'src' is destroyed leaving behind uninitialized raw storage. + */ + void copy(const T* src) { + if constexpr (std::is_trivially_copyable_v) { + if (!this->empty() && src != nullptr) { + sk_careful_memcpy(fData, src, this->size_bytes()); + } + } else { + for (int i = 0; i < this->size(); ++i) { + new (fData + i) T(src[i]); + } + } + } + + void move(int dst, int src) { + if constexpr (MEM_MOVE) { + memcpy(static_cast(&fData[dst]), + static_cast(&fData[src]), + sizeof(T)); + } else { + new (&fData[dst]) T(std::move(fData[src])); + fData[src].~T(); + } + } + + void move(void* dst) { + if constexpr (MEM_MOVE) { + sk_careful_memcpy(dst, fData, Bytes(fSize)); + } else { + for (int i = 0; i < this->size(); ++i) { + new (static_cast(dst) + Bytes(i)) T(std::move(fData[i])); + fData[i].~T(); + } + } + } + + // Helper function that makes space for n objects, adjusts the count, but does not initialize + // the new objects. + void* push_back_raw(int n) { + this->checkRealloc(n, kGrowing); + void* ptr = fData + fSize; + this->changeSize(fSize + n); + return ptr; + } + + template + SK_ALWAYS_INLINE T* growAndConstructAtEnd(Args&&... args) { + SkSpan buffer = this->preallocateNewData(/*delta=*/1, kGrowing); + T* newT = new (TCast(buffer.data()) + fSize) T(std::forward(args)...); + this->installDataAndUpdateCapacity(buffer); + + return newT; + } + + void checkRealloc(int delta, double growthFactor) { + SkASSERT(delta >= 0); + SkASSERT(fSize >= 0); + SkASSERT(fCapacity >= 0); + + // Check if there are enough remaining allocated elements to satisfy the request. + if (this->capacity() - fSize < delta) { + // Looks like we need to reallocate. + this->installDataAndUpdateCapacity(this->preallocateNewData(delta, growthFactor)); + } + } + + SkSpan preallocateNewData(int delta, double growthFactor) { + SkASSERT(delta >= 0); + SkASSERT(fSize >= 0); + SkASSERT(fCapacity >= 0); + + // Don't overflow fSize or size_t later in the memory allocation. Overflowing memory + // allocation really only applies to fSizes on 32-bit machines; on 64-bit machines this + // will probably never produce a check. Since kMaxCapacity is bounded above by INT_MAX, + // this also checks the bounds of fSize. + if (delta > kMaxCapacity - fSize) { + sk_report_container_overflow_and_die(); + } + const int newCount = fSize + delta; + + return Allocate(newCount, growthFactor); + } + + void installDataAndUpdateCapacity(SkSpan allocation) { + this->move(TCast(allocation.data())); + if (fOwnMemory) { + sk_free(fData); + } + this->setDataFromBytes(allocation); + SkASSERT(fData != nullptr); + } + + T* fData{nullptr}; + int fSize{0}; + uint32_t fOwnMemory : 1; + uint32_t fCapacity : 31; +#ifdef SK_SANITIZE_ADDRESS + bool fPoisoned = false; +#endif +}; + +template static inline void swap(TArray& a, TArray& b) { + a.swap(b); +} + +// Subclass of TArray that contains a pre-allocated memory block for the array. +template > +class STArray : private SkAlignedSTStorage(Nreq), T>, + public TArray { + // We round up the requested array size to the next capacity multiple. + // This space would likely otherwise go to waste. + static constexpr int N = SkContainerAllocator::RoundUp(Nreq); + static_assert(Nreq > 0); + static_assert(N >= Nreq); + + using Storage = SkAlignedSTStorage; + +public: + STArray() + : Storage{} + , TArray(this) {} // Must use () to avoid confusion with initializer_list + // when T=bool because * are convertable to bool. + + STArray(const T* array, int count) + : Storage{} + , TArray{array, count, this} {} + + STArray(SkSpan data) + : Storage{} + , TArray{data, this} {} + + STArray(std::initializer_list data) + : STArray{data.begin(), SkToInt(data.size())} {} + + explicit STArray(int reserveCount) + : STArray() { this->reserve_exact(reserveCount); } + + STArray(const STArray& that) + : STArray() { *this = that; } + + explicit STArray(const TArray& that) + : STArray() { *this = that; } + + STArray(STArray&& that) + : STArray() { *this = std::move(that); } + + explicit STArray(TArray&& that) + : STArray() { *this = std::move(that); } + + STArray& operator=(const STArray& that) { + TArray::operator=(that); + return *this; + } + + STArray& operator=(const TArray& that) { + TArray::operator=(that); + return *this; + } + + STArray& operator=(STArray&& that) { + TArray::operator=(std::move(that)); + return *this; + } + + STArray& operator=(TArray&& that) { + TArray::operator=(std::move(that)); + return *this; + } + + // Force the use of TArray for data() and size(). + using TArray::data; + using TArray::size; +}; +} // namespace skia_private +#endif // SkTArray_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkTDArray.h b/vendor/artifacts/skia/include/private/base/SkTDArray.h new file mode 100644 index 000000000..a1996c8cc --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkTDArray.h @@ -0,0 +1,247 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTDArray_DEFINED +#define SkTDArray_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkTo.h" + +#include +#include +#include + +// We'd prefer not to use these types anymore. SkTDArray can be replaced skia_private::TArray + +class SK_SPI SkTDStorage { +public: + explicit SkTDStorage(int sizeOfT); + SkTDStorage(const void* src, int size, int sizeOfT); + + // Copy + SkTDStorage(const SkTDStorage& that); + SkTDStorage& operator= (const SkTDStorage& that); + + // Move + SkTDStorage(SkTDStorage&& that); + SkTDStorage& operator= (SkTDStorage&& that); + + ~SkTDStorage(); + + void reset(); + void swap(SkTDStorage& that); + + // Size routines + bool empty() const { return fSize == 0; } + void clear() { fSize = 0; } + int size() const { return fSize; } + void resize(int newSize); + size_t size_bytes() const { return this->bytes(fSize); } + + // Capacity routines + int capacity() const { return fCapacity; } + void reserve(int newCapacity); + void shrink_to_fit(); + + void* data() { return fStorage; } + const void* data() const { return fStorage; } + + // Deletion routines + void erase(int index, int count); + // Removes the entry at 'index' and replaces it with the last array element + void removeShuffle(int index); + + // Insertion routines + void* prepend(); + + void append(); + void append(int count); + void* append(const void* src, int count); + + void* insert(int index); + void* insert(int index, int count, const void* src); + + void pop_back() { + SkASSERT(fSize > 0); + fSize--; + } + + friend bool operator==(const SkTDStorage& a, const SkTDStorage& b); + friend bool operator!=(const SkTDStorage& a, const SkTDStorage& b) { + return !(a == b); + } + +private: + // Fast path for pointer arithmetic. Assumes 'n' has already been bounds-checked. + size_t bytes(int n) const { return SkToSizeT(n) * SkToSizeT(fSizeOfT); } + + // Safe path for memory allocations; protects against 32-bit overflow. + size_t safe_bytes(int n) const { + size_t size = SkToSizeT(n); + size_t sizeOfT = SkToSizeT(fSizeOfT); + SkASSERT_RELEASE(size <= SIZE_MAX / sizeOfT); + return size * sizeOfT; + } + + void* address(int n) { return fStorage + this->bytes(n); } + + // Adds delta to fSize. Crash if outside [0, INT_MAX] + int calculateSizeOrDie(int delta); + + // Move the tail of the array defined by the indexes tailStart and tailEnd to dstIndex. The + // elements at dstIndex are overwritten by the tail. + void moveTail(int dstIndex, int tailStart, int tailEnd); + + // Copy src into the array at dstIndex. + void copySrc(int dstIndex, const void* src, int count); + + const int fSizeOfT; + std::byte* fStorage{nullptr}; + int fCapacity{0}; // size of the allocation in fArray (#elements) + int fSize{0}; // logical number of elements (fSize <= fCapacity) +}; + +static inline void swap(SkTDStorage& a, SkTDStorage& b) { + a.swap(b); +} + +// SkTDArray implements a std::vector-like array for raw data-only objects that do not require +// construction or destruction. The constructor and destructor for T will not be called; T objects +// will always be moved via raw memcpy. Newly created T objects will contain uninitialized memory. +template class SkTDArray { +public: + SkTDArray() : fStorage{sizeof(T)} {} + SkTDArray(const T src[], int count) : fStorage{src, count, sizeof(T)} { } + SkTDArray(const std::initializer_list& list) : SkTDArray(list.begin(), list.size()) {} + + // Copy + SkTDArray(const SkTDArray& src) : SkTDArray(src.data(), src.size()) {} + SkTDArray& operator=(const SkTDArray& src) { + fStorage = src.fStorage; + return *this; + } + + // Move + SkTDArray(SkTDArray&& src) : fStorage{std::move(src.fStorage)} {} + SkTDArray& operator=(SkTDArray&& src) { + fStorage = std::move(src.fStorage); + return *this; + } + + friend bool operator==(const SkTDArray& a, const SkTDArray& b) { + return a.fStorage == b.fStorage; + } + friend bool operator!=(const SkTDArray& a, const SkTDArray& b) { return !(a == b); } + + void swap(SkTDArray& that) { + using std::swap; + swap(fStorage, that.fStorage); + } + + bool empty() const { return fStorage.empty(); } + + // Return the number of elements in the array + int size() const { return fStorage.size(); } + + // Return the total number of elements allocated. + // Note: capacity() - size() gives you the number of elements you can add without causing an + // allocation. + int capacity() const { return fStorage.capacity(); } + + // return the number of bytes in the array: count * sizeof(T) + size_t size_bytes() const { return fStorage.size_bytes(); } + + T* data() { return static_cast(fStorage.data()); } + const T* data() const { return static_cast(fStorage.data()); } + T* begin() { return this->data(); } + const T* begin() const { return this->data(); } + T* end() { return this->data() + this->size(); } + const T* end() const { return this->data() + this->size(); } + + T& operator[](int index) { + return this->data()[sk_collection_check_bounds(index, this->size())]; + } + const T& operator[](int index) const { + return this->data()[sk_collection_check_bounds(index, this->size())]; + } + + const T& back() const { + sk_collection_not_empty(this->empty()); + return this->data()[this->size() - 1]; + } + T& back() { + sk_collection_not_empty(this->empty()); + return this->data()[this->size() - 1]; + } + + void reset() { + fStorage.reset(); + } + + void clear() { + fStorage.clear(); + } + + // Sets the number of elements in the array. + // If the array does not have space for count elements, it will increase + // the storage allocated to some amount greater than that required. + // It will never shrink the storage. + void resize(int count) { + fStorage.resize(count); + } + + void reserve(int n) { + fStorage.reserve(n); + } + + T* append() { + fStorage.append(); + return this->end() - 1; + } + T* append(int count) { + fStorage.append(count); + return this->end() - count; + } + T* append(int count, const T* src) { + return static_cast(fStorage.append(src, count)); + } + + T* insert(int index) { + return static_cast(fStorage.insert(index)); + } + T* insert(int index, int count, const T* src = nullptr) { + return static_cast(fStorage.insert(index, count, src)); + } + + void remove(int index, int count = 1) { + fStorage.erase(index, count); + } + + void removeShuffle(int index) { + fStorage.removeShuffle(index); + } + + // routines to treat the array like a stack + void push_back(const T& v) { + this->append(); + this->back() = v; + } + void pop_back() { fStorage.pop_back(); } + + void shrink_to_fit() { + fStorage.shrink_to_fit(); + } + +private: + SkTDStorage fStorage; +}; + +template static inline void swap(SkTDArray& a, SkTDArray& b) { a.swap(b); } + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkTFitsIn.h b/vendor/artifacts/skia/include/private/base/SkTFitsIn.h new file mode 100644 index 000000000..82e97b641 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkTFitsIn.h @@ -0,0 +1,94 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTFitsIn_DEFINED +#define SkTFitsIn_DEFINED + +#include "include/private/base/SkDebug.h" + +#include +#include + +/** + * std::underlying_type is only defined for enums. For integral types, we just want the type. + */ +template +struct sk_strip_enum { + typedef T type; +}; + +template +struct sk_strip_enum::value>::type> { + typedef typename std::underlying_type::type type; +}; + + +/** + * In C++ an unsigned to signed cast where the source value cannot be represented in the destination + * type results in an implementation defined destination value. Unlike C, C++ does not allow a trap. + * This makes "(S)(D)s == s" a possibly useful test. However, there are two cases where this is + * incorrect: + * + * when testing if a value of a smaller signed type can be represented in a larger unsigned type + * (int8_t)(uint16_t)-1 == -1 => (int8_t)0xFFFF == -1 => [implementation defined] == -1 + * + * when testing if a value of a larger unsigned type can be represented in a smaller signed type + * (uint16_t)(int8_t)0xFFFF == 0xFFFF => (uint16_t)-1 == 0xFFFF => 0xFFFF == 0xFFFF => true. + * + * Consider the cases: + * u = unsigned, less digits + * U = unsigned, more digits + * s = signed, less digits + * S = signed, more digits + * v is the value we're considering. + * + * u -> U: (u)(U)v == v, trivially true + * U -> u: (U)(u)v == v, both casts well defined, test works + * s -> S: (s)(S)v == v, trivially true + * S -> s: (S)(s)v == v, first cast implementation value, second cast defined, test works + * s -> U: (s)(U)v == v, *this is bad*, the second cast results in implementation defined value + * S -> u: (S)(u)v == v, the second cast is required to prevent promotion of rhs to unsigned + * u -> S: (u)(S)v == v, trivially true + * U -> s: (U)(s)v == v, *this is bad*, + * first cast results in implementation defined value, + * second cast is defined. However, this creates false positives + * uint16_t x = 0xFFFF + * (uint16_t)(int8_t)x == x + * => (uint16_t)-1 == x + * => 0xFFFF == x + * => true + * + * So for the eight cases three are trivially true, three more are valid casts, and two are special. + * The two 'full' checks which otherwise require two comparisons are valid cast checks. + * The two remaining checks s -> U [v >= 0] and U -> s [v <= max(s)] can be done with one op. + */ + +template +static constexpr inline +typename std::enable_if<(std::is_integral::value || std::is_enum::value) && + (std::is_integral::value || std::is_enum::value), bool>::type +/*bool*/ SkTFitsIn(S src) { + // Ensure that is_signed and is_unsigned are passed the arithmetic underlyng types of enums. + using Sa = typename sk_strip_enum::type; + using Da = typename sk_strip_enum::type; + + // SkTFitsIn() is used in public headers, so needs to be written targeting at most C++11. + return + + // E.g. (int8_t)(uint8_t) int8_t(-1) == -1, but the uint8_t == 255, not -1. + (std::is_signed::value && std::is_unsigned::value && sizeof(Sa) <= sizeof(Da)) ? + (S)0 <= src : + + // E.g. (uint8_t)(int8_t) uint8_t(255) == 255, but the int8_t == -1. + (std::is_signed::value && std::is_unsigned::value && sizeof(Da) <= sizeof(Sa)) ? + src <= (S)std::numeric_limits::max() : + + // This trips up MSVC's /RTCc run-time checking, which we don't support. + (S)(D)src == src; +} + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkTLogic.h b/vendor/artifacts/skia/include/private/base/SkTLogic.h new file mode 100644 index 000000000..26f363c94 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkTLogic.h @@ -0,0 +1,56 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * + * + * This header provides some std:: features early in the skstd namespace + * and several Skia-specific additions in the sknonstd namespace. + */ + +#ifndef SkTLogic_DEFINED +#define SkTLogic_DEFINED + +#include +#include +#include "include/private/base/SkTo.h" + +// The sknonstd namespace contains things we would like to be proposed and feel std-ish. +namespace sknonstd { + +// The name 'copy' here is fraught with peril. In this case it means 'append', not 'overwrite'. +// Alternate proposed names are 'propagate', 'augment', or 'append' (and 'add', but already taken). +// std::experimental::propagate_const already exists for other purposes in TSv2. +// These also follow the pattern used by boost. +template struct copy_const { + using type = std::conditional_t::value, std::add_const_t, D>; +}; +template using copy_const_t = typename copy_const::type; + +template struct copy_volatile { + using type = std::conditional_t::value, std::add_volatile_t, D>; +}; +template using copy_volatile_t = typename copy_volatile::type; + +template struct copy_cv { + using type = copy_volatile_t, S>; +}; +template using copy_cv_t = typename copy_cv::type; + +// The name 'same' here means 'overwrite'. +// Alternate proposed names are 'replace', 'transfer', or 'qualify_from'. +// same_xxx can be written as copy_xxx, S> +template using same_const = copy_const, S>; +template using same_const_t = typename same_const::type; +template using same_volatile =copy_volatile,S>; +template using same_volatile_t = typename same_volatile::type; +template using same_cv = copy_cv, S>; +template using same_cv_t = typename same_cv::type; + +} // namespace sknonstd + +template +constexpr int SkCount(const Container& c) { return SkTo(std::size(c)); } + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkTPin.h b/vendor/artifacts/skia/include/private/base/SkTPin.h new file mode 100644 index 000000000..93b07bea0 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkTPin.h @@ -0,0 +1,23 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTPin_DEFINED +#define SkTPin_DEFINED + +#include + +/** @return x pinned (clamped) between lo and hi, inclusively. + + Unlike std::clamp(), SkTPin() always returns a value between lo and hi. + If x is NaN, SkTPin() returns lo but std::clamp() returns NaN. +*/ +template +static constexpr const T& SkTPin(const T& x, const T& lo, const T& hi) { + return std::max(lo, std::min(x, hi)); +} + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkTemplates.h b/vendor/artifacts/skia/include/private/base/SkTemplates.h new file mode 100644 index 000000000..a7abd0b04 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkTemplates.h @@ -0,0 +1,501 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTemplates_DEFINED +#define SkTemplates_DEFINED + +#include "include/private/base/SkAlign.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkMalloc.h" +#include "include/private/base/SkTLogic.h" +#include "include/private/base/SkTo.h" + +#include +#include +#include +#include +#include +#include +#include +#include + + +/** \file SkTemplates.h + + This file contains light-weight template classes for type-safe and exception-safe + resource management. +*/ + +/** + * Marks a local variable as known to be unused (to avoid warnings). + * Note that this does *not* prevent the local variable from being optimized away. + */ +template inline void sk_ignore_unused_variable(const T&) { } + +/** + * This is a general purpose absolute-value function. + * See SkAbs32 in (SkSafe32.h) for a 32-bit int specific version that asserts. + */ +template static inline T SkTAbs(T value) { + if (value < 0) { + value = -value; + } + return value; +} + +/** + * Returns a pointer to a D which comes immediately after S[count]. + */ +template inline D* SkTAfter(S* ptr, size_t count = 1) { + return reinterpret_cast(ptr + count); +} + +/** + * Returns a pointer to a D which comes byteOffset bytes after S. + */ +template inline D* SkTAddOffset(S* ptr, ptrdiff_t byteOffset) { + // The intermediate char* has the same cv-ness as D as this produces better error messages. + // This relies on the fact that reinterpret_cast can add constness, but cannot remove it. + return reinterpret_cast(reinterpret_cast*>(ptr) + byteOffset); +} + +template struct SkOverloadedFunctionObject { + template + auto operator()(Args&&... args) const -> decltype(P(std::forward(args)...)) { + return P(std::forward(args)...); + } +}; + +template using SkFunctionObject = + SkOverloadedFunctionObject, F>; + +/** \class SkAutoTCallVProc + + Call a function when this goes out of scope. The template uses two + parameters, the object, and a function that is to be called in the destructor. + If release() is called, the object reference is set to null. If the object + reference is null when the destructor is called, we do not call the + function. +*/ +template class [[nodiscard]] SkAutoTCallVProc + : public std::unique_ptr> { + using inherited = std::unique_ptr>; +public: + using inherited::inherited; + SkAutoTCallVProc(const SkAutoTCallVProc&) = delete; + SkAutoTCallVProc(SkAutoTCallVProc&& that) : inherited(std::move(that)) {} + + operator T*() const { return this->get(); } +}; + + +namespace skia_private { +/** Allocate an array of T elements on the heap. Once this goes out of scope, the + * elements will be cleaned up "auto"matically. + */ +template class AutoTArray { +public: + AutoTArray() {} + // Allocate size number of T elements + explicit AutoTArray(size_t size) + : fData(size > 0 ? new T[check_size_bytes_too_big(size)] : nullptr) + , fSize(size) {} + + // TODO: remove when all uses are gone. + explicit AutoTArray(int size) : AutoTArray(SkToSizeT(size)) {} + + AutoTArray(AutoTArray&& other) + : fData(std::move(other.fData)) + , fSize(std::exchange(other.fSize, 0)) {} + + AutoTArray& operator=(AutoTArray&& other) { + if (this != &other) { + fData = std::move(other.fData); + fSize = std::exchange(other.fSize, 0); + } + return *this; + } + + // Reallocates given a new count. Reallocation occurs even if new count equals old count. + [[clang::reinitializes]] + void reset(size_t count = 0) { + *this = AutoTArray(count); + } + + T* get() const { return fData.get(); } + + T& operator[](size_t index) const { + return fData[sk_collection_check_bounds(index, fSize)]; + } + + const T* data() const { return fData.get(); } + T* data() { return fData.get(); } + + size_t size() const { return fSize; } + bool empty() const { return fSize == 0; } + size_t size_bytes() const { return sizeof(T) * fSize; } + + T* begin() { + return fData.get(); + } + const T* begin() const { + return fData.get(); + } + + // It's safe to use fItemArray + fSize because if fItemArray is nullptr then adding 0 is + // valid and returns nullptr. See [expr.add] in the C++ standard. + T* end() { + if (fData == nullptr) { + SkASSERT(fSize == 0); + } + return this->begin() + fSize; + } + const T* end() const { + if (fData == nullptr) { + SkASSERT(fSize == 0); + } + return this->begin() + fSize; + } + +private: + std::unique_ptr fData; + size_t fSize = 0; +}; + +/** Like AutoTArray with storage for some number of elements "nested within". The requested number + * of elements to fit in the storage is specified by kCountRequested. kCount is the actual number + * of elements that will fit in the storage. If the runtime number of elements exceeds the space of + * the storage, the elements will live on the heap. + */ +template class AutoSTArray { +public: + AutoSTArray(const AutoSTArray&) = delete; + AutoSTArray& operator=(const AutoSTArray&) = delete; + + AutoSTArray(AutoSTArray&& that) { + if (that.fArray == nullptr) { + fArray = nullptr; + fCount = 0; + } else if (that.fArray == (T*) that.fStorage) { + fArray = (T*) fStorage; + fCount = that.fCount; + std::uninitialized_move(that.fArray, that.fArray + that.fCount, fArray); + } else { + fArray = std::exchange(that.fArray, nullptr); + fCount = std::exchange(that.fCount, 0); + } + } + AutoSTArray& operator=(AutoSTArray&&) = delete; + + /** Initialize with no objects */ + AutoSTArray() { + fArray = nullptr; + fCount = 0; + } + + /** Allocate count number of T elements */ + AutoSTArray(int count) { + fArray = nullptr; + fCount = 0; + this->reset(count); + } + + ~AutoSTArray() { + this->reset(0); + } + + /** Destroys previous objects in the array and default constructs count number of objects */ + [[clang::reinitializes]] + void reset(int count) { + T* start = begin(); + T* iter = end(); + while (iter > start) { + (--iter)->~T(); + } + + SkASSERT(count >= 0); + if (fCount != count) { + if (fArray != (T*) fStorage) { + sk_free(fArray); + } + + if (count > kCount) { + fArray = (T*) sk_malloc_throw(count, sizeof(T)); + } else if (count > 0) { + fArray = (T*) fStorage; + } else { + fArray = nullptr; + } + + fCount = count; + } + + iter = begin(); + T* stop = end(); + while (iter < stop) { + new (iter++) T; + } + } + + /* Removes elements with index >= count */ + void trimTo(int count) { + SkASSERT(count >= 0); + if (count >= fCount) { + return; + } + T* start = begin() + count; + T* iter = end(); + while (iter > start) { + (--iter)->~T(); + } + fCount = count; + } + + /** Return the number of T elements in the array */ + int count() const { return fCount; } + + /** Return the array of T elements. Will be nullptr if count == 0 */ + T* get() const { return fArray; } + + T* begin() { return fArray; } + + const T* begin() const { return fArray; } + + T* end() { return fArray + fCount; } + + const T* end() const { return fArray + fCount; } + + /** Return the nth element in the array */ + T& operator[](int index) const { + return fArray[sk_collection_check_bounds(index, fCount)]; + } + + /** Aliases matching other types, like std::vector. */ + const T* data() const { return fArray; } + T* data() { return fArray; } + size_t size() const { return fCount; } + +private: +#if defined(SK_BUILD_FOR_GOOGLE3) + // Stack frame size is limited for SK_BUILD_FOR_GOOGLE3. 4k is less than the actual max, + // but some functions have multiple large stack allocations. + static constexpr int kMaxBytes = 4 * 1024; + static constexpr int kMinCount = kCountRequested * sizeof(T) > kMaxBytes + ? kMaxBytes / sizeof(T) + : kCountRequested; +#else + static constexpr int kMinCount = kCountRequested; +#endif + + // Because we are also storing an int, there is a tiny bit of padding that + // the C++ compiler adds after fStorage if sizeof(T) <= alignof(T*). + // Thus, we can expand how many elements are stored on the stack to make use of this + // (e.g. 1 extra element for 4 byte T if kCountRequested was even). + static_assert(alignof(int) <= alignof(T*) || alignof(int) <= alignof(T)); +public: + static constexpr int kCount = + SkAlignTo(kMinCount*sizeof(T) + sizeof(int), std::max(alignof(T*), alignof(T))) / sizeof(T); + +private: + T* fArray; + alignas(T) std::byte fStorage[kCount * sizeof(T)]; + int fCount; +}; + +/** Manages an array of T elements, freeing the array in the destructor. + * Does NOT call any constructors/destructors on T (T must be POD). + */ +template ::value && + std::is_trivially_destructible::value>> +class AutoTMalloc { +public: + /** Takes ownership of the ptr. The ptr must be a value which can be passed to sk_free. */ + explicit AutoTMalloc(T* ptr = nullptr) : fPtr(ptr) {} + + /** Allocates space for 'count' Ts. */ + explicit AutoTMalloc(size_t count) + : fPtr(count ? (T*)sk_malloc_throw(count, sizeof(T)) : nullptr) {} + + AutoTMalloc(AutoTMalloc&&) = default; + AutoTMalloc& operator=(AutoTMalloc&&) = default; + + /** Resize the memory area pointed to by the current ptr preserving contents. */ + void realloc(size_t count) { + fPtr.reset(count ? (T*)sk_realloc_throw(fPtr.release(), count * sizeof(T)) : nullptr); + } + + /** Resize the memory area pointed to by the current ptr without preserving contents. */ + [[clang::reinitializes]] + T* reset(size_t count = 0) { + fPtr.reset(count ? (T*)sk_malloc_throw(count, sizeof(T)) : nullptr); + return this->get(); + } + + T* get() const { return fPtr.get(); } + + operator T*() { return fPtr.get(); } + + operator const T*() const { return fPtr.get(); } + + T& operator[](int index) { return fPtr.get()[index]; } + + const T& operator[](int index) const { return fPtr.get()[index]; } + + /** Aliases matching other types, like std::vector. */ + const T* data() const { return fPtr.get(); } + T* data() { return fPtr.get(); } + + /** + * Transfer ownership of the ptr to the caller, setting the internal + * pointer to NULL. Note that this differs from get(), which also returns + * the pointer, but it does not transfer ownership. + */ + T* release() { return fPtr.release(); } + +private: + std::unique_ptr> fPtr; +}; + +template ::value && + std::is_trivially_destructible::value>> +class AutoSTMalloc { +public: + AutoSTMalloc() : fPtr(fTStorage) {} + + AutoSTMalloc(size_t count) { + if (count > kCount) { + fPtr = (T*)sk_malloc_throw(count, sizeof(T)); + } else if (count) { + fPtr = fTStorage; + } else { + fPtr = nullptr; + } + } + + AutoSTMalloc(const AutoSTMalloc&) = delete; + AutoSTMalloc& operator=(const AutoSTMalloc&) = delete; + + AutoSTMalloc(AutoSTMalloc&& that) { + if (that.fPtr == nullptr) { + fPtr = nullptr; + } else if (that.fPtr == that.fTStorage) { + fPtr = fTStorage; + memcpy(fPtr, that.fPtr, kCount * sizeof(T)); + } else { + fPtr = std::exchange(that.fPtr, nullptr); + } + } + AutoSTMalloc& operator=(AutoSTMalloc&&) = delete; + + ~AutoSTMalloc() { + if (fPtr != fTStorage) { + sk_free(fPtr); + } + } + + // doesn't preserve contents + [[clang::reinitializes]] + T* reset(size_t count) { + if (fPtr != fTStorage) { + sk_free(fPtr); + } + if (count > kCount) { + fPtr = (T*)sk_malloc_throw(count, sizeof(T)); + } else if (count) { + fPtr = fTStorage; + } else { + fPtr = nullptr; + } + return fPtr; + } + + T* get() const { return fPtr; } + + operator T*() { + return fPtr; + } + + operator const T*() const { + return fPtr; + } + + T& operator[](int index) { + return fPtr[index]; + } + + const T& operator[](int index) const { + return fPtr[index]; + } + + /** Aliases matching other types, like std::vector. */ + const T* data() const { return fPtr; } + T* data() { return fPtr; } + + // Reallocs the array, can be used to shrink the allocation. Makes no attempt to be intelligent + void realloc(size_t count) { + if (count > kCount) { + if (fPtr == fTStorage) { + fPtr = (T*)sk_malloc_throw(count, sizeof(T)); + memcpy((void*)fPtr, fTStorage, kCount * sizeof(T)); + } else { + fPtr = (T*)sk_realloc_throw(fPtr, count, sizeof(T)); + } + } else if (count) { + if (fPtr != fTStorage) { + fPtr = (T*)sk_realloc_throw(fPtr, count, sizeof(T)); + } + } else { + this->reset(0); + } + } + +private: + // Since we use uint32_t storage, we might be able to get more elements for free. + static constexpr size_t kCountWithPadding = SkAlign4(kCountRequested*sizeof(T)) / sizeof(T); +#if defined(SK_BUILD_FOR_GOOGLE3) + // Stack frame size is limited for SK_BUILD_FOR_GOOGLE3. 4k is less than the actual max, but some functions + // have multiple large stack allocations. + static constexpr size_t kMaxBytes = 4 * 1024; + static constexpr size_t kMinCount = kCountRequested * sizeof(T) > kMaxBytes + ? kMaxBytes / sizeof(T) + : kCountWithPadding; +#else + static constexpr size_t kMinCount = kCountWithPadding; +#endif + +public: + static constexpr size_t kCount = kMinCount; + +private: + + T* fPtr; + union { + uint32_t fStorage32[SkAlign4(kCount*sizeof(T)) >> 2]; + T fTStorage[1]; // do NOT want to invoke T::T() + }; +}; + +using UniqueVoidPtr = std::unique_ptr>; + +} // namespace skia_private + +template +constexpr auto SkMakeArrayFromIndexSequence(C c, std::index_sequence is) +-> std::array())), sizeof...(Is)> { + return {{ c(Is)... }}; +} + +template constexpr auto SkMakeArray(C c) +-> std::array::value_type>())), N> { + return SkMakeArrayFromIndexSequence(c, std::make_index_sequence{}); +} + +#endif diff --git a/vendor/artifacts/skia/include/private/base/SkThreadAnnotations.h b/vendor/artifacts/skia/include/private/base/SkThreadAnnotations.h new file mode 100644 index 000000000..a67fbaaca --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkThreadAnnotations.h @@ -0,0 +1,104 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkThreadAnnotations_DEFINED +#define SkThreadAnnotations_DEFINED + +#include "include/private/base/SkFeatures.h" // IWYU pragma: keep + +// The bulk of this code is cribbed from: +// http://clang.llvm.org/docs/ThreadSafetyAnalysis.html + +#if defined(__clang__) && (!defined(SWIG)) +#define SK_THREAD_ANNOTATION_ATTRIBUTE(x) __attribute__((x)) +#else +#define SK_THREAD_ANNOTATION_ATTRIBUTE(x) // no-op +#endif + +#define SK_CAPABILITY(x) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(capability(x)) + +#define SK_SCOPED_CAPABILITY \ + SK_THREAD_ANNOTATION_ATTRIBUTE(scoped_lockable) + +#define SK_GUARDED_BY(x) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(guarded_by(x)) + +#define SK_PT_GUARDED_BY(x) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(pt_guarded_by(x)) + +#define SK_ACQUIRED_BEFORE(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(acquired_before(__VA_ARGS__)) + +#define SK_ACQUIRED_AFTER(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(acquired_after(__VA_ARGS__)) + +#define SK_REQUIRES(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(requires_capability(__VA_ARGS__)) + +#define SK_REQUIRES_SHARED(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(requires_shared_capability(__VA_ARGS__)) + +#define SK_ACQUIRE(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(acquire_capability(__VA_ARGS__)) + +#define SK_ACQUIRE_SHARED(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(acquire_shared_capability(__VA_ARGS__)) + +// Would be SK_RELEASE, but that is already in use as SK_DEBUG vs. SK_RELEASE. +#define SK_RELEASE_CAPABILITY(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(release_capability(__VA_ARGS__)) + +// For symmetry with SK_RELEASE_CAPABILITY. +#define SK_RELEASE_SHARED_CAPABILITY(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(release_shared_capability(__VA_ARGS__)) + +#define SK_TRY_ACQUIRE(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(try_acquire_capability(__VA_ARGS__)) + +#define SK_TRY_ACQUIRE_SHARED(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(try_acquire_shared_capability(__VA_ARGS__)) + +#define SK_EXCLUDES(...) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(locks_excluded(__VA_ARGS__)) + +#define SK_ASSERT_CAPABILITY(x) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(assert_capability(x)) + +#define SK_ASSERT_SHARED_CAPABILITY(x) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(assert_shared_capability(x)) + +#define SK_RETURN_CAPABILITY(x) \ + SK_THREAD_ANNOTATION_ATTRIBUTE(lock_returned(x)) + +#define SK_NO_THREAD_SAFETY_ANALYSIS \ + SK_THREAD_ANNOTATION_ATTRIBUTE(no_thread_safety_analysis) + +#if defined(SK_BUILD_FOR_GOOGLE3) && !defined(SK_BUILD_FOR_WASM_IN_GOOGLE3) \ + && !defined(SK_BUILD_FOR_WIN) + extern "C" { + void __google_cxa_guard_acquire_begin(void) __attribute__((weak)); + void __google_cxa_guard_acquire_end (void) __attribute__((weak)); + } + static inline void sk_potentially_blocking_region_begin() { + if (&__google_cxa_guard_acquire_begin) { + __google_cxa_guard_acquire_begin(); + } + } + static inline void sk_potentially_blocking_region_end() { + if (&__google_cxa_guard_acquire_end) { + __google_cxa_guard_acquire_end(); + } + } + #define SK_POTENTIALLY_BLOCKING_REGION_BEGIN sk_potentially_blocking_region_begin() + #define SK_POTENTIALLY_BLOCKING_REGION_END sk_potentially_blocking_region_end() +#else + #define SK_POTENTIALLY_BLOCKING_REGION_BEGIN + #define SK_POTENTIALLY_BLOCKING_REGION_END +#endif + +#endif // SkThreadAnnotations_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkThreadID.h b/vendor/artifacts/skia/include/private/base/SkThreadID.h new file mode 100644 index 000000000..18984884c --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkThreadID.h @@ -0,0 +1,23 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkThreadID_DEFINED +#define SkThreadID_DEFINED + +#include "include/private/base/SkAPI.h" +#include "include/private/base/SkDebug.h" + +#include + +typedef int64_t SkThreadID; + +// SkMutex.h uses SkGetThreadID in debug only code. +SkDEBUGCODE(SK_SPI) SkThreadID SkGetThreadID(); + +const SkThreadID kIllegalThreadID = 0; + +#endif // SkThreadID_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkTo.h b/vendor/artifacts/skia/include/private/base/SkTo.h new file mode 100644 index 000000000..118544100 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkTo.h @@ -0,0 +1,39 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkTo_DEFINED +#define SkTo_DEFINED + +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkTFitsIn.h" + +#include +#include + +template constexpr D SkTo(S s) { + return SkASSERT(SkTFitsIn(s)), + static_cast(s); +} + +template constexpr int8_t SkToS8(S x) { return SkTo(x); } +template constexpr uint8_t SkToU8(S x) { return SkTo(x); } +template constexpr int16_t SkToS16(S x) { return SkTo(x); } +template constexpr uint16_t SkToU16(S x) { return SkTo(x); } +template constexpr int32_t SkToS32(S x) { return SkTo(x); } +template constexpr uint32_t SkToU32(S x) { return SkTo(x); } +template constexpr int64_t SkToS64(S x) { return SkTo(x); } +template constexpr uint64_t SkToU64(S x) { return SkTo(x); } +template constexpr int SkToInt(S x) { return SkTo(x); } +template constexpr unsigned SkToUInt(S x) { return SkTo(x); } +template constexpr size_t SkToSizeT(S x) { return SkTo(x); } + +/** @return false or true based on the condition +*/ +template static constexpr bool SkToBool(const T& x) { + return (bool)x; +} + +#endif // SkTo_DEFINED diff --git a/vendor/artifacts/skia/include/private/base/SkTypeTraits.h b/vendor/artifacts/skia/include/private/base/SkTypeTraits.h new file mode 100644 index 000000000..736f78977 --- /dev/null +++ b/vendor/artifacts/skia/include/private/base/SkTypeTraits.h @@ -0,0 +1,33 @@ +// Copyright 2022 Google LLC +// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. + +#ifndef SkTypeTraits_DEFINED +#define SkTypeTraits_DEFINED + +#include +#include + +// Trait for identifying types which are relocatable via memcpy, for container optimizations. +template +struct sk_has_trivially_relocatable_member : std::false_type {}; + +// Types can declare themselves trivially relocatable with a public +// using sk_is_trivially_relocatable = std::true_type; +template +struct sk_has_trivially_relocatable_member> + : T::sk_is_trivially_relocatable {}; + +// By default, all trivially copyable types are trivially relocatable. +template +struct sk_is_trivially_relocatable + : std::disjunction, sk_has_trivially_relocatable_member>{}; + +// Here be some dragons: while technically not guaranteed, we count on all sane unique_ptr +// implementations to be trivially relocatable. +template +struct sk_is_trivially_relocatable> : std::true_type {}; + +template +inline constexpr bool sk_is_trivially_relocatable_v = sk_is_trivially_relocatable::value; + +#endif // SkTypeTraits_DEFINED diff --git a/vendor/artifacts/skia/include/private/chromium/BUILD.bazel b/vendor/artifacts/skia/include/private/chromium/BUILD.bazel new file mode 100644 index 000000000..1c7fa840d --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/BUILD.bazel @@ -0,0 +1,71 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +# This group is mapped to //gn/gpu.gni:skia_shared_gpu_sources. +skia_filegroup( + name = "shared_private_hdrs", + srcs = [ + "Slug.h", + ], +) + +# This group is mapped to //gn/gpu.gni:skia_gpu_chromium_public. +skia_filegroup( + name = "ganesh_private_hdrs", + srcs = [ + "GrDeferredDisplayList.h", + "GrDeferredDisplayListRecorder.h", + "GrPromiseImageTexture.h", + "GrSurfaceCharacterization.h", + "SkImageChromium.h", + ], + visibility = ["//src/gpu/ganesh:__pkg__"], +) + +# This group is mapped to //gn/gpu.gni:skia_gpu_vk_chromium. +skia_filegroup( + name = "vk_ganesh_hdrs", + srcs = [ + "GrVkSecondaryCBDrawContext.h", + ], +) + +# This group is mapped to //gn/core.gni:skia_discardable_memory_chromium. +skia_filegroup( + name = "discardable_memory_hdrs", + srcs = [ + "SkDiscardableMemory.h", + ], +) + +skia_filegroup( + name = "core_hdrs", + srcs = [ + "SkChromeRemoteGlyphCache.h", + "SkDiscardableMemory.h", + "SkPMColor.h", + "Slug.h", + ], + visibility = ["//src/core:__pkg__"], +) + +skia_filegroup( + name = "codec_icc_chromium_hdrs", + srcs = [ + "SkCodecsICCProfileChromium.h", + ], + visibility = ["//src/codec:__pkg__"], +) + +skia_filegroup( + name = "codec_exif_chromium_hdrs", + srcs = [ + "SkExifChromium.h", + ], + visibility = ["//src/codec:__pkg__"], +) diff --git a/vendor/artifacts/skia/include/private/chromium/GrDeferredDisplayList.h b/vendor/artifacts/skia/include/private/chromium/GrDeferredDisplayList.h new file mode 100644 index 000000000..2bd63b2d7 --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/GrDeferredDisplayList.h @@ -0,0 +1,120 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrDeferredDisplayList_DEFINED +#define GrDeferredDisplayList_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" +#include "include/gpu/ganesh/GrRecordingContext.h" +#include "include/private/base/SkTArray.h" +#include "include/private/chromium/GrSurfaceCharacterization.h" + +class GrDirectContext; +class GrRenderTargetProxy; +class GrRenderTask; +class GrDeferredDisplayListPriv; +class SkSurface; + +/* + * This class contains pre-processed gpu operations that can be replayed into + * an SkSurface via SkSurface::draw(GrDeferredDisplayList*). + */ +class GrDeferredDisplayList : public SkNVRefCnt { +public: + SK_API ~GrDeferredDisplayList(); + + SK_API const GrSurfaceCharacterization& characterization() const { + return fCharacterization; + } + /** + * Iterate through the programs required by the DDL. + */ + class SK_API ProgramIterator { + public: + ProgramIterator(GrDirectContext*, GrDeferredDisplayList*); + ~ProgramIterator(); + + // This returns true if any work was done. Getting a cache hit does not count as work. + bool compile(); + bool done() const; + void next(); + + private: + GrDirectContext* fDContext; + const skia_private::TArray& fProgramData; + int fIndex; + }; + + // Provides access to functions that aren't part of the public API. + GrDeferredDisplayListPriv priv(); + const GrDeferredDisplayListPriv priv() const; // NOLINT(readability-const-return-type) + +private: + friend class GrDrawingManager; // for access to 'fRenderTasks', 'fLazyProxyData', 'fArenas' + friend class GrDeferredDisplayListRecorder; // for access to 'fLazyProxyData' + friend class GrDeferredDisplayListPriv; + + // This object is the source from which the lazy proxy backing the DDL will pull its backing + // texture when the DDL is replayed. It has to be separately ref counted bc the lazy proxy + // can outlive the DDL. + class LazyProxyData : public SkRefCnt { + public: + // Upon being replayed - this field will be filled in (by the DrawingManager) with the + // proxy backing the destination SkSurface. Note that, since there is no good place to + // clear it, it can become a dangling pointer. Additionally, since the renderTargetProxy + // doesn't get a ref here, the SkSurface that owns it must remain alive until the DDL + // is flushed. + // TODO: the drawing manager could ref the renderTargetProxy for the DDL and then add + // a renderingTask to unref it after the DDL's ops have been executed. + GrRenderTargetProxy* fReplayDest = nullptr; + }; + + SK_API GrDeferredDisplayList(const GrSurfaceCharacterization& characterization, + sk_sp fTargetProxy, + sk_sp); + + const skia_private::TArray& programData() const { + return fProgramData; + } + + const GrSurfaceCharacterization fCharacterization; + + // These are ordered such that the destructor cleans op tasks up first (which may refer back + // to the arena and memory pool in their destructors). + GrRecordingContext::OwnedArenas fArenas; + skia_private::TArray> fRenderTasks; + + skia_private::TArray fProgramData; + sk_sp fTargetProxy; + sk_sp fLazyProxyData; +}; + +namespace skgpu::ganesh { +/** Draws the deferred display list created via a GrDeferredDisplayListRecorder. + If the deferred display list is not compatible with the surface, the draw is skipped + and false is return. + + The xOffset and yOffset parameters are experimental and, if not both zero, will cause + the draw to be ignored. + When implemented, if xOffset or yOffset are non-zero, the DDL will be drawn offset by that + amount into the surface. + + @param SkSurface The surface to apply the commands to, cannot be nullptr. + @param ddl drawing commands, cannot be nullptr. + @return false if ddl is not compatible + + example: https://fiddle.skia.org/c/@Surface_draw_2 +*/ +SK_API bool DrawDDL(SkSurface*, + sk_sp ddl); + +SK_API bool DrawDDL(sk_sp, + sk_sp ddl); +} + +#endif diff --git a/vendor/artifacts/skia/include/private/chromium/GrDeferredDisplayListRecorder.h b/vendor/artifacts/skia/include/private/chromium/GrDeferredDisplayListRecorder.h new file mode 100644 index 000000000..905994061 --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/GrDeferredDisplayListRecorder.h @@ -0,0 +1,62 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrDeferredDisplayListRecorder_DEFINED +#define GrDeferredDisplayListRecorder_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" +#include "include/private/chromium/GrDeferredDisplayList.h" +#include "include/private/chromium/GrSurfaceCharacterization.h" + +class GrRecordingContext; +class GrRenderTargetProxy; +class SkCanvas; +class SkSurface; + +/* + * This class is intended to be used as: + * Get a GrSurfaceCharacterization representing the intended gpu-backed destination SkSurface + * Create one of these (a GrDeferredDisplayListRecorder) on the stack + * Get the canvas and render into it + * Snap off and hold on to a GrDeferredDisplayList + * Once your app actually needs the pixels, call skgpu::ganesh::DrawDDL(GrDeferredDisplayList*) + * + * This class never accesses the GPU but performs all the cpu work it can. It + * is thread-safe (i.e., one can break a scene into tiles and perform their cpu-side + * work in parallel ahead of time). + */ +class SK_API GrDeferredDisplayListRecorder { +public: + explicit GrDeferredDisplayListRecorder(const GrSurfaceCharacterization&); + ~GrDeferredDisplayListRecorder(); + + const GrSurfaceCharacterization& characterization() const { + return fCharacterization; + } + + // The backing canvas will become invalid (and this entry point will return + // null) once 'detach' is called. + // Note: ownership of the SkCanvas is not transferred via this call. + SkCanvas* getCanvas(); + + sk_sp detach(); + +private: + GrDeferredDisplayListRecorder(const GrDeferredDisplayListRecorder&) = delete; + GrDeferredDisplayListRecorder& operator=(const GrDeferredDisplayListRecorder&) = delete; + + bool init(); + + const GrSurfaceCharacterization fCharacterization; + sk_sp fContext; + sk_sp fTargetProxy; + sk_sp fLazyProxyData; + sk_sp fSurface; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/chromium/GrPromiseImageTexture.h b/vendor/artifacts/skia/include/private/chromium/GrPromiseImageTexture.h new file mode 100644 index 000000000..6a6cc13a7 --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/GrPromiseImageTexture.h @@ -0,0 +1,43 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrPromiseImageTexture_DEFINED +#define GrPromiseImageTexture_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" +#include "include/gpu/ganesh/GrBackendSurface.h" +/** + * This type is used to fulfill textures for PromiseImages. Once an instance is returned from a + * PromiseImageTextureFulfillProc the GrBackendTexture it wraps must remain valid until the + * corresponding PromiseImageTextureReleaseProc is called. + */ +class SK_API GrPromiseImageTexture : public SkNVRefCnt { +public: + GrPromiseImageTexture() = delete; + GrPromiseImageTexture(const GrPromiseImageTexture&) = delete; + GrPromiseImageTexture(GrPromiseImageTexture&&) = delete; + ~GrPromiseImageTexture(); + GrPromiseImageTexture& operator=(const GrPromiseImageTexture&) = delete; + GrPromiseImageTexture& operator=(GrPromiseImageTexture&&) = delete; + + static sk_sp Make(const GrBackendTexture& backendTexture) { + if (!backendTexture.isValid()) { + return nullptr; + } + return sk_sp(new GrPromiseImageTexture(backendTexture)); + } + + GrBackendTexture backendTexture() const { return fBackendTexture; } + +private: + explicit GrPromiseImageTexture(const GrBackendTexture& backendTexture); + + GrBackendTexture fBackendTexture; +}; + +#endif // GrPromiseImageTexture_DEFINED diff --git a/vendor/artifacts/skia/include/private/chromium/GrSurfaceCharacterization.h b/vendor/artifacts/skia/include/private/chromium/GrSurfaceCharacterization.h new file mode 100644 index 000000000..642cc5647 --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/GrSurfaceCharacterization.h @@ -0,0 +1,211 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrSurfaceCharacterization_DEFINED +#define GrSurfaceCharacterization_DEFINED + +#include "include/core/SkColorSpace.h" // IWYU pragma: keep +#include "include/core/SkColorType.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSize.h" +#include "include/core/SkSurfaceProps.h" +#include "include/core/SkTypes.h" +#include "include/gpu/GpuTypes.h" +#include "include/gpu/ganesh/GrBackendSurface.h" +#include "include/gpu/ganesh/GrContextThreadSafeProxy.h" +#include "include/gpu/ganesh/GrTypes.h" +#include "include/private/base/SkDebug.h" + +#include +#include + +/** \class GrSurfaceCharacterization + A surface characterization contains all the information Ganesh requires to makes its internal + rendering decisions. When passed into a GrDeferredDisplayListRecorder it will copy the + data and pass it on to the GrDeferredDisplayList if/when it is created. Note that both of + those objects (the Recorder and the DisplayList) will take a ref on the + GrContextThreadSafeProxy and SkColorSpace objects. +*/ +class SK_API GrSurfaceCharacterization { +public: + enum class Textureable : bool { kNo = false, kYes = true }; + enum class UsesGLFBO0 : bool { kNo = false, kYes = true }; + // This flag indicates that the backing VkImage for this Vulkan surface will have the + // VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set. This bit allows skia to handle advanced blends + // more optimally in a shader by being able to directly read the dst values. + enum class VkRTSupportsInputAttachment : bool { kNo = false, kYes = true }; + // This flag indicates if the surface is wrapping a raw Vulkan secondary command buffer. + enum class VulkanSecondaryCBCompatible : bool { kNo = false, kYes = true }; + + GrSurfaceCharacterization() + : fCacheMaxResourceBytes(0) + , fOrigin(kBottomLeft_GrSurfaceOrigin) + , fSampleCnt(0) + , fIsTextureable(Textureable::kYes) + , fIsMipmapped(skgpu::Mipmapped::kYes) + , fUsesGLFBO0(UsesGLFBO0::kNo) + , fVulkanSecondaryCBCompatible(VulkanSecondaryCBCompatible::kNo) + , fIsProtected(skgpu::Protected::kNo) + , fSurfaceProps() {} + + GrSurfaceCharacterization(GrSurfaceCharacterization&&) = default; + GrSurfaceCharacterization& operator=(GrSurfaceCharacterization&&) = default; + + GrSurfaceCharacterization(const GrSurfaceCharacterization&) = default; + GrSurfaceCharacterization& operator=(const GrSurfaceCharacterization& other) = default; + bool operator==(const GrSurfaceCharacterization& other) const; + bool operator!=(const GrSurfaceCharacterization& other) const { + return !(*this == other); + } + + /* + * Return a new surface characterization with the only difference being a different width + * and height + */ + GrSurfaceCharacterization createResized(int width, int height) const; + + /* + * Return a new surface characterization with only a replaced color space + */ + GrSurfaceCharacterization createColorSpace(sk_sp) const; + + /* + * Return a new surface characterization with the backend format replaced. A colorType + * must also be supplied to indicate the interpretation of the new format. + */ + GrSurfaceCharacterization createBackendFormat(SkColorType colorType, + const GrBackendFormat& backendFormat) const; + + /* + * Return a new surface characterization with just a different use of FBO0 (in GL) + */ + GrSurfaceCharacterization createFBO0(bool usesGLFBO0) const; + + GrContextThreadSafeProxy* contextInfo() const { return fContextInfo.get(); } + sk_sp refContextInfo() const { return fContextInfo; } + size_t cacheMaxResourceBytes() const { return fCacheMaxResourceBytes; } + + bool isValid() const { return kUnknown_SkColorType != fImageInfo.colorType(); } + + const SkImageInfo& imageInfo() const { return fImageInfo; } + const GrBackendFormat& backendFormat() const { return fBackendFormat; } + GrSurfaceOrigin origin() const { return fOrigin; } + SkISize dimensions() const { return fImageInfo.dimensions(); } + int width() const { return fImageInfo.width(); } + int height() const { return fImageInfo.height(); } + SkColorType colorType() const { return fImageInfo.colorType(); } + int sampleCount() const { return fSampleCnt; } + bool isTextureable() const { return Textureable::kYes == fIsTextureable; } + bool isMipMapped() const { return skgpu::Mipmapped::kYes == fIsMipmapped; } + bool usesGLFBO0() const { return UsesGLFBO0::kYes == fUsesGLFBO0; } + bool vkRTSupportsInputAttachment() const { + return VkRTSupportsInputAttachment::kYes == fVkRTSupportsInputAttachment; + } + bool vulkanSecondaryCBCompatible() const { + return VulkanSecondaryCBCompatible::kYes == fVulkanSecondaryCBCompatible; + } + skgpu::Protected isProtected() const { return fIsProtected; } + SkColorSpace* colorSpace() const { return fImageInfo.colorSpace(); } + sk_sp refColorSpace() const { return fImageInfo.refColorSpace(); } + const SkSurfaceProps& surfaceProps()const { return fSurfaceProps; } + +private: + friend class SkSurface_Ganesh; // for 'set' & 'config' + friend class GrVkSecondaryCBDrawContext; // for 'set' & 'config' + friend class GrContextThreadSafeProxy; // for private ctor + friend class GrVkContextThreadSafeProxy; // for private ctor + friend class GrDeferredDisplayListRecorder; // for 'config' + friend class SkSurface; // for 'config' + + SkDEBUGCODE(void validate() const;) + + GrSurfaceCharacterization(sk_sp contextInfo, + size_t cacheMaxResourceBytes, + const SkImageInfo& ii, + const GrBackendFormat& backendFormat, + GrSurfaceOrigin origin, + int sampleCnt, + Textureable isTextureable, + skgpu::Mipmapped isMipmapped, + UsesGLFBO0 usesGLFBO0, + VkRTSupportsInputAttachment vkRTSupportsInputAttachment, + VulkanSecondaryCBCompatible vulkanSecondaryCBCompatible, + skgpu::Protected isProtected, + const SkSurfaceProps& surfaceProps) + : fContextInfo(std::move(contextInfo)) + , fCacheMaxResourceBytes(cacheMaxResourceBytes) + , fImageInfo(ii) + , fBackendFormat(std::move(backendFormat)) + , fOrigin(origin) + , fSampleCnt(sampleCnt) + , fIsTextureable(isTextureable) + , fIsMipmapped(isMipmapped) + , fUsesGLFBO0(usesGLFBO0) + , fVkRTSupportsInputAttachment(vkRTSupportsInputAttachment) + , fVulkanSecondaryCBCompatible(vulkanSecondaryCBCompatible) + , fIsProtected(isProtected) + , fSurfaceProps(surfaceProps) { + if (fSurfaceProps.flags() & SkSurfaceProps::kDynamicMSAA_Flag) { + // Dynamic MSAA is not currently supported with DDL. + *this = {}; + } + SkDEBUGCODE(this->validate()); + } + + void set(sk_sp contextInfo, + size_t cacheMaxResourceBytes, + const SkImageInfo& ii, + const GrBackendFormat& backendFormat, + GrSurfaceOrigin origin, + int sampleCnt, + Textureable isTextureable, + skgpu::Mipmapped isMipmapped, + UsesGLFBO0 usesGLFBO0, + VkRTSupportsInputAttachment vkRTSupportsInputAttachment, + VulkanSecondaryCBCompatible vulkanSecondaryCBCompatible, + skgpu::Protected isProtected, + const SkSurfaceProps& surfaceProps) { + if (surfaceProps.flags() & SkSurfaceProps::kDynamicMSAA_Flag) { + // Dynamic MSAA is not currently supported with DDL. + *this = {}; + } else { + fContextInfo = std::move(contextInfo); + fCacheMaxResourceBytes = cacheMaxResourceBytes; + + fImageInfo = ii; + fBackendFormat = std::move(backendFormat); + fOrigin = origin; + fSampleCnt = sampleCnt; + fIsTextureable = isTextureable; + fIsMipmapped = isMipmapped; + fUsesGLFBO0 = usesGLFBO0; + fVkRTSupportsInputAttachment = vkRTSupportsInputAttachment; + fVulkanSecondaryCBCompatible = vulkanSecondaryCBCompatible; + fIsProtected = isProtected; + fSurfaceProps = surfaceProps; + } + SkDEBUGCODE(this->validate()); + } + + sk_sp fContextInfo; + size_t fCacheMaxResourceBytes; + + SkImageInfo fImageInfo; + GrBackendFormat fBackendFormat; + GrSurfaceOrigin fOrigin; + int fSampleCnt; + Textureable fIsTextureable; + skgpu::Mipmapped fIsMipmapped; + UsesGLFBO0 fUsesGLFBO0; + VkRTSupportsInputAttachment fVkRTSupportsInputAttachment; + VulkanSecondaryCBCompatible fVulkanSecondaryCBCompatible; + skgpu::Protected fIsProtected; + SkSurfaceProps fSurfaceProps; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h b/vendor/artifacts/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h new file mode 100644 index 000000000..80bed158a --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/GrVkSecondaryCBDrawContext.h @@ -0,0 +1,131 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrVkSecondaryCBDrawContext_DEFINED +#define GrVkSecondaryCBDrawContext_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkSurfaceProps.h" +#include "include/core/SkTypes.h" + +#include + +class GrBackendSemaphore; +class GrDeferredDisplayList; +class GrRecordingContext; +class GrSurfaceCharacterization; +struct GrVkDrawableInfo; +namespace skgpu::ganesh { +class Device; +} +class SkCanvas; +struct SkImageInfo; +class SkSurfaceProps; + +/** + * This class is a private header that is intended to only be used inside of Chromium. This requires + * Chromium to burrow in and include this specifically since it is not part of skia's public include + * directory. + */ + +/** + * This class is used to draw into an external Vulkan secondary command buffer that is imported + * by the client. The secondary command buffer that gets imported must already have had begin called + * on it with VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT. Thus any draws to the imported + * command buffer cannot require changing the render pass. This requirement means that certain types + * of draws will not be supported when using a GrVkSecondaryCBDrawContext. This includes: + * Draws that require a dst copy for blending will be dropped + * Text draws will be dropped (these may require intermediate uploads of text data) + * Read and Write pixels will not work + * Any other draw that requires a copy will fail (this includes using backdrop filter with save + * layer). + * Stenciling is also disabled, but that should not restrict any actual draws from working. + * + * While using a GrVkSecondaryCBDrawContext, the client can also draw into normal SkSurfaces and + * then draw those SkSufaces (as SkImages) into the GrVkSecondaryCBDrawContext. If any of the + * previously mentioned unsupported draws are needed by the client, they can draw them into an + * offscreen surface, and then draw that into the GrVkSecondaryCBDrawContext. + * + * After all drawing to the GrVkSecondaryCBDrawContext has been done, the client must call flush() + * on the GrVkSecondaryCBDrawContext to actually fill in the secondary VkCommandBuffer with the + * draws. + * + * Additionally, the client must keep the GrVkSecondaryCBDrawContext alive until the secondary + * VkCommandBuffer has been submitted and all work finished on the GPU. Before deleting the + * GrVkSecondaryCBDrawContext, the client must call releaseResources() so that Skia can cleanup + * any internal objects that were created for the draws into the secondary command buffer. + */ +class SK_SPI GrVkSecondaryCBDrawContext : public SkRefCnt { +public: + static sk_sp Make(GrRecordingContext*, + const SkImageInfo&, + const GrVkDrawableInfo&, + const SkSurfaceProps* props); + + ~GrVkSecondaryCBDrawContext() override; + + SkCanvas* getCanvas(); + + // Records all the draws to the imported secondary command buffer and sets any dependent + // offscreen draws to the GPU. + void flush(); + + /** Inserts a list of GPU semaphores that Skia will have the driver wait on before executing + commands for this secondary CB. The wait semaphores will get added to the VkCommandBuffer + owned by this GrContext when flush() is called, and not the command buffer which the + Secondary CB is from. This will guarantee that the driver waits on the semaphores before + the secondary command buffer gets executed. We will submit the semphore to wait at + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT and VK_PIPELINE_STAGE_TRANSFER_BIT. If this + call returns false, then the GPU back end will not wait on any passed in semaphores, and the + client will still own the semaphores, regardless of the value of deleteSemaphoresAfterWait. + + If deleteSemaphoresAfterWait is false then Skia will not delete the semaphores. In this case + it is the client's responsibility to not destroy or attempt to reuse the semaphores until it + knows that Skia has finished waiting on them. This can be done by using finishedProcs + on flush calls. + + @param numSemaphores size of waitSemaphores array + @param waitSemaphores array of semaphore containers + @paramm deleteSemaphoresAfterWait who owns and should delete the semaphores + @return true if GPU is waiting on semaphores + */ + bool wait(int numSemaphores, + const GrBackendSemaphore waitSemaphores[], + bool deleteSemaphoresAfterWait = true); + + // This call will release all resources held by the draw context. The client must call + // releaseResources() before deleting the drawing context. However, the resources also include + // any Vulkan resources that were created and used for draws. Therefore the client must only + // call releaseResources() after submitting the secondary command buffer, and waiting for it to + // finish on the GPU. If it is called earlier then some vulkan objects may be deleted while they + // are still in use by the GPU. + void releaseResources(); + + const SkSurfaceProps& props() const { return fProps; } + + // TODO: Fill out these calls to support DDL + bool characterize(GrSurfaceCharacterization* characterization) const; + +#ifndef SK_DDL_IS_UNIQUE_POINTER + bool draw(sk_sp deferredDisplayList); +#else + bool draw(const GrDeferredDisplayList* deferredDisplayList); +#endif + + bool isCompatible(const GrSurfaceCharacterization& characterization) const; + +private: + explicit GrVkSecondaryCBDrawContext(sk_sp, const SkSurfaceProps*); + + sk_sp fDevice; + std::unique_ptr fCachedCanvas; + const SkSurfaceProps fProps; + + using INHERITED = SkRefCnt; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/chromium/SkChromeRemoteGlyphCache.h b/vendor/artifacts/skia/include/private/chromium/SkChromeRemoteGlyphCache.h new file mode 100644 index 000000000..032d05ef2 --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/SkChromeRemoteGlyphCache.h @@ -0,0 +1,150 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkChromeRemoteGlyphCache_DEFINED +#define SkChromeRemoteGlyphCache_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypeface.h" +#include "include/private/base/SkAPI.h" + +#include +#include +#include +#include + +class SkAutoDescriptor; +class SkCanvas; +class SkColorSpace; +class SkStrikeCache; +class SkStrikeClientImpl; +class SkStrikeServerImpl; +class SkSurfaceProps; +namespace sktext::gpu { class Slug; } + +using SkDiscardableHandleId = uint32_t; +// This class is not thread-safe. +class SkStrikeServer { +public: + // An interface used by the server to create handles for pinning SkStrike + // entries on the remote client. + class DiscardableHandleManager { + public: + SK_SPI virtual ~DiscardableHandleManager() = default; + + // Creates a new *locked* handle and returns a unique ID that can be used to identify + // it on the remote client. + SK_SPI virtual SkDiscardableHandleId createHandle() = 0; + + // Returns true if the handle could be successfully locked. The server can + // assume it will remain locked until the next set of serialized entries is + // pulled from the SkStrikeServer. + // If returns false, the cache entry mapped to the handle has been deleted + // on the client. Any subsequent attempts to lock the same handle are not + // allowed. + SK_SPI virtual bool lockHandle(SkDiscardableHandleId) = 0; + + // Returns true if a handle has been deleted on the remote client. It is + // invalid to use a handle id again with this manager once this returns true. + SK_SPI virtual bool isHandleDeleted(SkDiscardableHandleId) = 0; + }; + + SK_SPI explicit SkStrikeServer(DiscardableHandleManager* discardableHandleManager); + SK_SPI ~SkStrikeServer(); + + // Create an analysis SkCanvas used to populate the SkStrikeServer with ops + // which will be serialized and rendered using the SkStrikeClient. + SK_API std::unique_ptr makeAnalysisCanvas(int width, int height, + const SkSurfaceProps& props, + sk_sp colorSpace, + bool DFTSupport, + bool DFTPerspSupport = true); + + // Serializes the strike data captured using a canvas returned by ::makeAnalysisCanvas. Any + // handles locked using the DiscardableHandleManager will be assumed to be + // unlocked after this call. + SK_SPI void writeStrikeData(std::vector* memory); + + // Testing helpers + void setMaxEntriesInDescriptorMapForTesting(size_t count); + size_t remoteStrikeMapSizeForTesting() const; + +private: + SkStrikeServerImpl* impl(); + + std::unique_ptr fImpl; +}; + +class SkStrikeClient { +public: + // This enum is used in histogram reporting in chromium. Please don't re-order the list of + // entries, and consider it to be append-only. + enum CacheMissType : uint32_t { + // Hard failures where no fallback could be found. + kFontMetrics = 0, + kGlyphMetrics = 1, + kGlyphImage = 2, + kGlyphPath = 3, + + // (DEPRECATED) The original glyph could not be found and a fallback was used. + kGlyphMetricsFallback = 4, + kGlyphPathFallback = 5, + + kGlyphDrawable = 6, + kLast = kGlyphDrawable + }; + + // An interface to delete handles that may be pinned by the remote server. + class DiscardableHandleManager : public SkRefCnt { + public: + ~DiscardableHandleManager() override = default; + + // Returns true if the handle was unlocked and can be safely deleted. Once + // successful, subsequent attempts to delete the same handle are invalid. + virtual bool deleteHandle(SkDiscardableHandleId) = 0; + + virtual void assertHandleValid(SkDiscardableHandleId) {} + + virtual void notifyCacheMiss(CacheMissType type, int fontSize) = 0; + + struct ReadFailureData { + size_t memorySize; + size_t bytesRead; + uint64_t typefaceSize; + uint64_t strikeCount; + uint64_t glyphImagesCount; + uint64_t glyphPathsCount; + }; + virtual void notifyReadFailure(const ReadFailureData& data) {} + }; + + SK_SPI explicit SkStrikeClient(sk_sp, + bool isLogging = true, + SkStrikeCache* strikeCache = nullptr); + SK_SPI ~SkStrikeClient(); + + // Deserializes the strike data from a SkStrikeServer. All messages generated + // from a server when serializing the ops must be deserialized before the op + // is rasterized. + // Returns false if the data is invalid. + SK_SPI bool readStrikeData(const volatile void* memory, size_t memorySize); + + // Given a descriptor re-write the Rec mapping the typefaceID from the renderer to the + // corresponding typefaceID on the GPU. + SK_SPI bool translateTypefaceID(SkAutoDescriptor* descriptor) const; + + // Testing helpers + sk_sp retrieveTypefaceUsingServerIDForTest(SkTypefaceID) const; + + // Given a buffer, unflatten into a slug making sure to do the typefaceID translation from + // renderer to GPU. Returns nullptr if there was a problem. + sk_sp deserializeSlugForTest(const void* data, size_t size) const; + +private: + std::unique_ptr fImpl; +}; +#endif // SkChromeRemoteGlyphCache_DEFINED diff --git a/vendor/artifacts/skia/include/private/chromium/SkCodecsICCProfileChromium.h b/vendor/artifacts/skia/include/private/chromium/SkCodecsICCProfileChromium.h new file mode 100644 index 000000000..72aa3632d --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/SkCodecsICCProfileChromium.h @@ -0,0 +1,52 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCodecsICCProfileChromium_DEFINED +#define SkCodecsICCProfileChromium_DEFINED + +#include + +#include "include/core/SkData.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" +#include "modules/skcms/skcms.h" + +namespace SkCodecs { + +// Allows Chromium code that does not use SkCodec to parse ICC profiles +// using the same parser that SkCodec uses (skcms or moxcms). +class SK_API ICCProfileChromium { +public: + virtual ~ICCProfileChromium() = default; + + // Force all ICC profile parsing to use skcms instead of the build-default + // parser. This is intended for Chromium to have a kill-switch to fall back + // to skcms if moxcms causes issues in the field. + // + // This is a global setting and is NOT thread-safe with respect to concurrent + // codec operations. It should be called once early during process startup. + static void ForceSkcms(bool forceSkcms); + + // Returns nullptr if parsing fails. May retain `data`. Uses the parser + // selected by ForceSkcms (defaults to the build-default parser). + static std::unique_ptr Make(sk_sp data); + + // Return the parsed profile. The pointers in the structure are guaranteed + // to be valid until `this` is destroyed. + virtual const skcms_ICCProfile& GetProfile() const = 0; + +protected: + ICCProfileChromium() = default; + +private: + ICCProfileChromium(const ICCProfileChromium&) = delete; + ICCProfileChromium& operator=(const ICCProfileChromium&) = delete; +}; + +} // namespace SkCodecs + +#endif // SkCodecsICCProfileChromium_DEFINED diff --git a/vendor/artifacts/skia/include/private/chromium/SkDiscardableMemory.h b/vendor/artifacts/skia/include/private/chromium/SkDiscardableMemory.h new file mode 100644 index 000000000..3aa987036 --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/SkDiscardableMemory.h @@ -0,0 +1,70 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkDiscardableMemory_DEFINED +#define SkDiscardableMemory_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +/** + * Interface for discardable memory. Implementation is provided by the + * embedder. + */ +class SK_SPI SkDiscardableMemory { +public: + /** + * Factory method that creates, initializes and locks an SkDiscardableMemory + * object. If either of these steps fails, a nullptr pointer will be returned. + */ + static SkDiscardableMemory* Create(size_t bytes); + + /** + * Factory class that creates, initializes and locks an SkDiscardableMemory + * object. If either of these steps fails, a nullptr pointer will be returned. + */ + class Factory : public SkRefCnt { + public: + virtual SkDiscardableMemory* create(size_t bytes) = 0; + private: + using INHERITED = SkRefCnt; + }; + + /** Must not be called while locked. + */ + virtual ~SkDiscardableMemory() {} + + /** + * Locks the memory, prevent it from being discarded. Once locked. you may + * obtain a pointer to that memory using the data() method. + * + * lock() may return false, indicating that the underlying memory was + * discarded and that the lock failed. + * + * Nested calls to lock are not allowed. + */ + [[nodiscard]] virtual bool lock() = 0; + + /** + * Returns the current pointer for the discardable memory. This call is ONLY + * valid when the discardable memory object is locked. + */ + virtual void* data() = 0; + + /** + * Unlock the memory so that it can be purged by the system. Must be called + * after every successful lock call. + */ + virtual void unlock() = 0; + +protected: + SkDiscardableMemory() = default; + SkDiscardableMemory(const SkDiscardableMemory&) = delete; + SkDiscardableMemory& operator=(const SkDiscardableMemory&) = delete; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/chromium/SkExifChromium.h b/vendor/artifacts/skia/include/private/chromium/SkExifChromium.h new file mode 100644 index 000000000..4d11a9029 --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/SkExifChromium.h @@ -0,0 +1,26 @@ +/* + * Copyright 2026 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkExifChromium_DEFINED +#define SkExifChromium_DEFINED + +#include "include/private/base/SkAPI.h" + +namespace SkExif { + +// Force all EXIF parsing to use the C++ SkExif parser instead of the +// build-default parser. This is intended for Chromium to have a kill-switch +// to fall back to the C++ implementation if rust_exif causes issues in the +// field. +// +// This is a global setting and is NOT thread-safe with respect to concurrent +// codec operations. It should be called once early during process startup. +SK_API void ForceSkExif(bool forceSkExif); + +} // namespace SkExif + +#endif // SkExifChromium_DEFINED diff --git a/vendor/artifacts/skia/include/private/chromium/SkImageChromium.h b/vendor/artifacts/skia/include/private/chromium/SkImageChromium.h new file mode 100644 index 000000000..7c62ba581 --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/SkImageChromium.h @@ -0,0 +1,117 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkImageChromium_DEFINED +#define SkImageChromium_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +class GrBackendFormat; +class GrContextThreadSafeProxy; +class GrPromiseImageTexture; +class GrDirectContext; +class GrYUVABackendTextureInfo; +class SkColorSpace; +class SkImage; +enum SkAlphaType : int; +enum SkColorType : int; +enum GrSurfaceOrigin : int; +namespace skgpu { +enum class Mipmapped : bool; +} +struct SkISize; + +/** + * These functions expose features that are only for external use in Chromium. + */ + +namespace SkImages { + +using PromiseImageTextureContext = void*; +using PromiseImageTextureFulfillProc = sk_sp (*)(PromiseImageTextureContext); +using PromiseImageTextureReleaseProc = void (*)(PromiseImageTextureContext); + +/** Create a new GPU-backed SkImage that is very similar to an SkImage created by BorrowTextureFrom. + The difference is that the caller need not have created the texture nor populated it with the + image pixel data. Moreover, the SkImage may be created on a thread as the creation of the + image does not require access to the backend API or GrDirectContext. Instead of passing a + GrBackendTexture the client supplies a description of the texture consisting of + GrBackendFormat, width, height, and skgpu::Mipmapped state. The resulting SkImage can be drawn + to a GrDeferredDisplayListRecorder or directly to a GPU-backed SkSurface. + When the actual texture is required to perform a backend API draw, textureFulfillProc will + be called to receive a GrBackendTexture. The properties of the GrBackendTexture must match + those set during the SkImage creation, and it must refer to a valid existing texture in the + backend API context/device, and be populated with the image pixel data. The texture cannot + be deleted until textureReleaseProc is called. + There is at most one call to each of textureFulfillProc and textureReleaseProc. + textureReleaseProc is always called even if image creation fails or if the + image is never fulfilled (e.g. it is never drawn or all draws are clipped out) + @param gpuContextProxy the thread-safe proxy of the gpu context. required. + @param backendFormat format of promised gpu texture + @param dimensions width & height of promised gpu texture + @param mipmapped mip mapped state of promised gpu texture + @param origin surface origin of promised gpu texture + @param colorType color type of promised gpu texture + @param alphaType alpha type of promised gpu texture + @param colorSpace range of colors; may be nullptr + @param textureFulfillProc function called to get actual gpu texture + @param textureReleaseProc function called when texture can be deleted + @param textureContext state passed to textureFulfillProc and textureReleaseProc + @return created SkImage, or nullptr +*/ +SK_API sk_sp PromiseTextureFrom(sk_sp gpuContextProxy, + const GrBackendFormat& backendFormat, + SkISize dimensions, + skgpu::Mipmapped mipmapped, + GrSurfaceOrigin origin, + SkColorType colorType, + SkAlphaType alphaType, + sk_sp colorSpace, + PromiseImageTextureFulfillProc textureFulfillProc, + PromiseImageTextureReleaseProc textureReleaseProc, + PromiseImageTextureContext textureContext); + +/** This is similar to 'PromiseTextureFrom' but it creates a GPU-backed SkImage from YUV[A] data. + The source data may be planar (i.e. spread across multiple textures). In + the extreme Y, U, V, and A are all in different planes and thus the image is specified by + four textures. 'backendTextureInfo' describes the planar arrangement, texture formats, + conversion to RGB, and origin of the textures. Separate 'textureFulfillProc' and + 'textureReleaseProc' calls are made for each texture. Each texture has its own + PromiseImageTextureContext. If 'backendTextureInfo' is not valid then no release proc + calls are made. Otherwise, the calls will be made even on failure. 'textureContexts' has one + entry for each of the up to four textures, as indicated by 'backendTextureInfo'. + Currently the mip mapped property of 'backendTextureInfo' is ignored. However, in the + near future it will be required that if it is kYes then textureFulfillProc must return + a mip mapped texture for each plane in order to successfully draw the image. + @param gpuContextProxy the thread-safe proxy of the gpu context. required. + @param backendTextureInfo info about the promised yuva gpu texture + @param imageColorSpace range of colors; may be nullptr + @param textureFulfillProc function called to get actual gpu texture + @param textureReleaseProc function called when texture can be deleted + @param textureContexts state passed to textureFulfillProc and textureReleaseProc + @return created SkImage, or nullptr +*/ +SK_API sk_sp PromiseTextureFromYUVA(sk_sp gpuContextProxy, + const GrYUVABackendTextureInfo& backendTextureInfo, + sk_sp imageColorSpace, + PromiseImageTextureFulfillProc textureFulfillProc, + PromiseImageTextureReleaseProc textureReleaseProc, + PromiseImageTextureContext textureContexts[]); + +/** Returns the GPU context associated with this image or nullptr if the image is not Ganesh-backed. + We expose this only to help transition certain API calls and do not intend for this to stick + around forever. +*/ +SK_API GrDirectContext* GetContext(const SkImage* src); +inline GrDirectContext* GetContext(const sk_sp& src) { + return GetContext(src.get()); +} + +} // namespace SkImages + +#endif diff --git a/vendor/artifacts/skia/include/private/chromium/SkPMColor.h b/vendor/artifacts/skia/include/private/chromium/SkPMColor.h new file mode 100644 index 000000000..0a47f78f7 --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/SkPMColor.h @@ -0,0 +1,38 @@ +/* + * Copyright 2025 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPMColor_DEFINED +#define SkPMColor_DEFINED + +#include "include/core/SkColor.h" +#include "include/private/base/SkAPI.h" + +#include + +/** Returns a SkPMColor value from already premultiplied 8-bit component values. + + @param a amount of alpha, from fully transparent (0) to fully opaque (255) + @param r amount of red, from no red (0) to full red (255) + @param g amount of green, from no green (0) to full green (255) + @param b amount of blue, from no blue (0) to full blue (255) + @return premultiplied color +*/ +SK_API SkPMColor SkPMColorSetARGB(SkAlpha a, uint8_t r, uint8_t g, uint8_t b); + +/** Returns alpha component of premultiplied color. */ +SK_API SkAlpha SkPMColorGetA(SkPMColor); + +/** Returns red component of premultiplied color. */ +SK_API uint8_t SkPMColorGetR(SkPMColor); + +/** Returns green component of premultiplied color. */ +SK_API uint8_t SkPMColorGetG(SkPMColor); + +/** Returns blue component of premultiplied color. */ +SK_API uint8_t SkPMColorGetB(SkPMColor); + +#endif diff --git a/vendor/artifacts/skia/include/private/chromium/Slug.h b/vendor/artifacts/skia/include/private/chromium/Slug.h new file mode 100644 index 000000000..0ee6082b8 --- /dev/null +++ b/vendor/artifacts/skia/include/private/chromium/Slug.h @@ -0,0 +1,72 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef sktext_gpu_Slug_DEFINED +#define sktext_gpu_Slug_DEFINED + +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAPI.h" + +#include +#include + +class SkCanvas; +class SkData; +class SkPaint; +class SkReadBuffer; +class SkStrikeClient; +class SkTextBlob; +class SkWriteBuffer; +struct SkDeserialProcs; +struct SkPoint; + +namespace sktext::gpu { +// Slug encapsulates an SkTextBlob at a specific origin, using a specific paint. It can be +// manipulated using matrix and clip changes to the canvas. If the canvas is transformed, then +// the Slug will also transform with smaller glyphs using bi-linear interpolation to render. You +// can think of a Slug as making a rubber stamp out of a SkTextBlob. +class SK_API Slug : public SkRefCnt { +public: + // Return nullptr if the blob would not draw. This is not because of clipping, but because of + // some paint optimization. The Slug is captured as if drawn using drawTextBlob. + static sk_sp ConvertBlob( + SkCanvas* canvas, const SkTextBlob& blob, SkPoint origin, const SkPaint& paint); + + // Serialize the slug. + sk_sp serialize() const; + size_t serialize(void* buffer, size_t size) const; + + // Set the client parameter to the appropriate SkStrikeClient when typeface ID translation + // is needed. + static sk_sp Deserialize(const void* data, + size_t size, + const SkStrikeClient* client = nullptr); + static sk_sp MakeFromBuffer(SkReadBuffer& buffer); + + // Allows clients to deserialize SkPictures that contain slug data + static void AddDeserialProcs(SkDeserialProcs* procs, const SkStrikeClient* client = nullptr); + + // Draw the Slug obeying the canvas's mapping and clipping. + void draw(SkCanvas* canvas, const SkPaint& paint) const; + + virtual SkRect sourceBounds() const = 0; + virtual SkRect sourceBoundsWithOrigin () const = 0; + + virtual void doFlatten(SkWriteBuffer&) const = 0; + + uint32_t uniqueID() const { return fUniqueID; } + +private: + static uint32_t NextUniqueID(); + const uint32_t fUniqueID{NextUniqueID()}; +}; + + +} // namespace sktext::gpu + +#endif // sktext_gpu_Slug_DEFINED diff --git a/vendor/artifacts/skia/include/private/gpu/BUILD.bazel b/vendor/artifacts/skia/include/private/gpu/BUILD.bazel new file mode 100644 index 000000000..800b999ab --- /dev/null +++ b/vendor/artifacts/skia/include/private/gpu/BUILD.bazel @@ -0,0 +1,5 @@ +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) diff --git a/vendor/artifacts/skia/include/private/gpu/ganesh/BUILD.bazel b/vendor/artifacts/skia/include/private/gpu/ganesh/BUILD.bazel new file mode 100644 index 000000000..f4a831e1c --- /dev/null +++ b/vendor/artifacts/skia/include/private/gpu/ganesh/BUILD.bazel @@ -0,0 +1,26 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +# In own group for mapping to //gn/gpu.gni:skia_direct3d_sources. +skia_filegroup( + name = "d3d_private_hdrs", + srcs = ["GrD3DTypesMinimal.h"], +) + +skia_filegroup( + name = "private_hdrs", + srcs = [ + "GrContext_Base.h", + "GrImageContext.h", + "GrTextureGenerator.h", + "GrTypesPriv.h", + ], + visibility = [ + "//src/gpu/ganesh:__pkg__", + ], +) diff --git a/vendor/artifacts/skia/include/private/gpu/ganesh/GrContext_Base.h b/vendor/artifacts/skia/include/private/gpu/ganesh/GrContext_Base.h new file mode 100644 index 000000000..352f516be --- /dev/null +++ b/vendor/artifacts/skia/include/private/gpu/ganesh/GrContext_Base.h @@ -0,0 +1,104 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrContext_Base_DEFINED +#define GrContext_Base_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/gpu/ganesh/GrTypes.h" +#include "include/private/base/SkAPI.h" + +#include + +class GrBaseContextPriv; +class GrCaps; +class GrContextThreadSafeProxy; +class GrDirectContext; +class GrImageContext; +class GrRecordingContext; +enum SkColorType : int; +enum class SkTextureCompressionType; +struct GrContextOptions; +class GrBackendFormat; + +class GrContext_Base : public SkRefCnt { +public: + ~GrContext_Base() override; + + /* + * Safely downcast to a GrDirectContext. + */ + virtual GrDirectContext* asDirectContext() { return nullptr; } + + /* + * The 3D API backing this context + */ + SK_API GrBackendApi backend() const; + + /* + * Retrieve the default GrBackendFormat for a given SkColorType and renderability. + * It is guaranteed that this backend format will be the one used by the GrContext + * SkColorType and GrSurfaceCharacterization-based createBackendTexture methods. + * + * The caller should check that the returned format is valid. + */ + SK_API GrBackendFormat defaultBackendFormat(SkColorType, GrRenderable) const; + + SK_API GrBackendFormat compressedBackendFormat(SkTextureCompressionType) const; + + /** + * Gets the maximum supported sample count for a color type. 1 is returned if only non-MSAA + * rendering is supported for the color type. 0 is returned if rendering to this color type + * is not supported at all. + */ + SK_API int maxSurfaceSampleCountForColorType(SkColorType colorType) const; + + // TODO: When the public version is gone, rename to refThreadSafeProxy and add raw ptr ver. + sk_sp threadSafeProxy(); + + // Provides access to functions that aren't part of the public API. + GrBaseContextPriv priv(); + const GrBaseContextPriv priv() const; // NOLINT(readability-const-return-type) + +protected: + friend class GrBaseContextPriv; // for hidden functions + + explicit GrContext_Base(sk_sp); + + virtual bool init(); + + /** + * An identifier for this context. The id is used by all compatible contexts. For example, + * if SkImages are created on one thread using an image creation context, then fed into a + * DDL Recorder on second thread (which has a recording context) and finally replayed on + * a third thread with a direct context, then all three contexts will report the same id. + * It is an error for an image to be used with contexts that report different ids. + */ + uint32_t contextID() const; + + bool matches(GrContext_Base* candidate) const { + return candidate && candidate->contextID() == this->contextID(); + } + + /* + * The options in effect for this context + */ + const GrContextOptions& options() const; + + const GrCaps* caps() const; + sk_sp refCaps() const; + + virtual GrImageContext* asImageContext() { return nullptr; } + virtual GrRecordingContext* asRecordingContext() { return nullptr; } + + sk_sp fThreadSafeProxy; + +private: + using INHERITED = SkRefCnt; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h b/vendor/artifacts/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h new file mode 100644 index 000000000..84db9c156 --- /dev/null +++ b/vendor/artifacts/skia/include/private/gpu/ganesh/GrD3DTypesMinimal.h @@ -0,0 +1,60 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrD3DTypesMinimal_DEFINED +#define GrD3DTypesMinimal_DEFINED + +// Minimal definitions of Direct3D types, without including d3d12.h + +#include "include/core/SkRefCnt.h" + +#include +#include + +#include "include/gpu/ganesh/GrTypes.h" + +struct ID3D12Resource; +class GrD3DResourceState; +typedef int GrD3DResourceStateEnum; +struct GrD3DSurfaceInfo; +struct GrD3DTextureResourceInfo; +struct GrD3DTextureResourceSpec; +struct GrD3DFenceInfo; + +// This struct is to used to store the the actual information about the Direct3D backend image on +// GrBackendTexture and GrBackendRenderTarget. When a client calls getD3DTextureInfo on a +// GrBackendTexture/RenderTarget, we use the GrD3DBackendSurfaceInfo to create a snapshot +// GrD3DTextureResourceInfo object. Internally, this uses a ref count GrD3DResourceState object to +// track the current D3D12_RESOURCE_STATES which can be shared with an internal GrD3DTextureResource +// so that state updates can be seen by all users of the texture. +struct GrD3DBackendSurfaceInfo { + GrD3DBackendSurfaceInfo(const GrD3DTextureResourceInfo& info, sk_sp state); + ~GrD3DBackendSurfaceInfo(); + + GrD3DBackendSurfaceInfo(const GrD3DBackendSurfaceInfo&); + GrD3DBackendSurfaceInfo& operator=(const GrD3DBackendSurfaceInfo&); + + GrD3DBackendSurfaceInfo(GrD3DBackendSurfaceInfo&&); + GrD3DBackendSurfaceInfo& operator=(GrD3DBackendSurfaceInfo&&); + + void setResourceState(GrD3DResourceStateEnum state); + + sk_sp getResourceState() const; + + GrD3DTextureResourceInfo snapTextureResourceInfo() const; + + bool isProtected() const; +#if defined(GPU_TEST_UTILS) + bool operator==(const GrD3DBackendSurfaceInfo& that) const; +#endif + +private: + std::unique_ptr fTextureResourceInfo; + sk_sp fResourceState; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/gpu/ganesh/GrImageContext.h b/vendor/artifacts/skia/include/private/gpu/ganesh/GrImageContext.h new file mode 100644 index 000000000..726966ffa --- /dev/null +++ b/vendor/artifacts/skia/include/private/gpu/ganesh/GrImageContext.h @@ -0,0 +1,56 @@ +/* + * Copyright 2019 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrImageContext_DEFINED +#define GrImageContext_DEFINED + +#include "include/core/SkRefCnt.h" +#include "include/private/base/SingleOwner.h" +#include "include/private/base/SkAPI.h" +#include "include/private/gpu/ganesh/GrContext_Base.h" + +class GrContextThreadSafeProxy; +class GrImageContextPriv; + +// This is now just a view on a ThreadSafeProxy, that SkImages can attempt to +// downcast to a GrDirectContext as a backdoor to some operations. Once we remove the backdoors, +// this goes away and SkImages just hold ThreadSafeProxies. +class GrImageContext : public GrContext_Base { +public: + ~GrImageContext() override; + + // Provides access to functions that aren't part of the public API. + GrImageContextPriv priv(); + const GrImageContextPriv priv() const; // NOLINT(readability-const-return-type) + +protected: + friend class GrImageContextPriv; // for hidden functions + + explicit GrImageContext(sk_sp); + + SK_API virtual void abandonContext(); + SK_API virtual bool abandoned(); + + /** This is only useful for debug purposes */ + skgpu::SingleOwner* singleOwner() const { return &fSingleOwner; } + + GrImageContext* asImageContext() override { return this; } + +private: + // When making promise images, we currently need a placeholder GrImageContext instance to give + // to the SkImage that has no real power, just a wrapper around the ThreadSafeProxy. + // TODO: De-power SkImage to ThreadSafeProxy or at least figure out a way to share one instance. + static sk_sp MakeForPromiseImage(sk_sp); + + // In debug builds we guard against improper thread handling + // This guard is passed to the GrDrawingManager and, from there to all the + // GrSurfaceDrawContexts. It is also passed to the GrResourceProvider and SkGpuDevice. + // TODO: Move this down to GrRecordingContext. + mutable skgpu::SingleOwner fSingleOwner; +}; + +#endif diff --git a/vendor/artifacts/skia/include/private/gpu/ganesh/GrTextureGenerator.h b/vendor/artifacts/skia/include/private/gpu/ganesh/GrTextureGenerator.h new file mode 100644 index 000000000..7a0f347d3 --- /dev/null +++ b/vendor/artifacts/skia/include/private/gpu/ganesh/GrTextureGenerator.h @@ -0,0 +1,66 @@ +/* + * Copyright 2023 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrTextureGenerator_DEFINED +#define GrTextureGenerator_DEFINED + +#include "include/core/SkImageGenerator.h" +#include "include/gpu/ganesh/GrTypes.h" +#include "include/private/base/SkAPI.h" + +#include + +class GrRecordingContext; +class GrSurfaceProxyView; +enum class GrImageTexGenPolicy : int; +namespace skgpu { enum class Mipmapped : bool; } +struct SkImageInfo; + +class SK_API GrTextureGenerator : public SkImageGenerator { +public: + bool isTextureGenerator() const final { return true; } + + /** + * If the generator can natively/efficiently return its pixels as a GPU image (backed by a + * texture) this will return that image. If not, this will return NULL. + * + * Regarding the GrRecordingContext parameter: + * + * It must be non-NULL. The generator should only succeed if: + * - its internal context is the same + * - it can somehow convert its texture into one that is valid for the provided context. + * + * If the mipmapped parameter is kYes, the generator should try to create a TextureProxy that + * at least has the mip levels allocated and the base layer filled in. If this is not possible, + * the generator is allowed to return a non mipped proxy, but this will have some additional + * overhead in later allocating mips and copying of the base layer. + * + * GrImageTexGenPolicy determines whether or not a new texture must be created (and its budget + * status) or whether this may (but is not required to) return a pre-existing texture that is + * retained by the generator (kDraw). + */ + GrSurfaceProxyView generateTexture(GrRecordingContext*, + const SkImageInfo& info, + skgpu::Mipmapped mipmapped, + GrImageTexGenPolicy); + + // External clients should override GrExternalTextureGenerator instead of trying to implement + // this (which uses private Skia types) + virtual GrSurfaceProxyView onGenerateTexture(GrRecordingContext*, const SkImageInfo&, + skgpu::Mipmapped, GrImageTexGenPolicy) = 0; + + // Most internal SkImageGenerators produce textures and views that use kTopLeft_GrSurfaceOrigin. + // If the generator may produce textures with different origins (e.g. + // GrAHardwareBufferImageGenerator) it should override this function to return the correct + // origin. Implementations should be thread-safe. + virtual GrSurfaceOrigin origin() const { return kTopLeft_GrSurfaceOrigin; } + +protected: + GrTextureGenerator(const SkImageInfo& info, uint32_t uniqueId = kNeedNewImageUniqueID); +}; + +#endif // GrTextureGenerator_DEFINED diff --git a/vendor/artifacts/skia/include/private/gpu/ganesh/GrTypesPriv.h b/vendor/artifacts/skia/include/private/gpu/ganesh/GrTypesPriv.h new file mode 100644 index 000000000..b56e32176 --- /dev/null +++ b/vendor/artifacts/skia/include/private/gpu/ganesh/GrTypesPriv.h @@ -0,0 +1,959 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef GrTypesPriv_DEFINED +#define GrTypesPriv_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkColorType.h" +#include "include/core/SkData.h" +#include "include/core/SkPath.h" +#include "include/core/SkPathTypes.h" +#include "include/core/SkRefCnt.h" +#include "include/private/base/SkAssert.h" +#include "include/private/base/SkDebug.h" +#include "include/private/base/SkMacros.h" +#include "include/private/base/SkTypeTraits.h" + +#include +#include +#include +#include + +class GrSurfaceProxy; + +namespace skgpu { +enum class Mipmapped : bool; +} + +/** + * divide, rounding up + */ + +static inline constexpr size_t GrSizeDivRoundUp(size_t x, size_t y) { return (x + (y - 1)) / y; } + +/** + * Geometric primitives used for drawing. + */ +enum class GrPrimitiveType : uint8_t { + kTriangles, + kTriangleStrip, + kPoints, + kLines, // 1 pix wide only + kLineStrip, // 1 pix wide only +}; +static constexpr int kNumGrPrimitiveTypes = (int)GrPrimitiveType::kLineStrip + 1; + +static constexpr bool GrIsPrimTypeLines(GrPrimitiveType type) { + return GrPrimitiveType::kLines == type || GrPrimitiveType::kLineStrip == type; +} + +enum class GrPrimitiveRestart : bool { + kNo = false, + kYes = true +}; + +/** + * Should a created surface be texturable? + */ +enum class GrTexturable : bool { + kNo = false, + kYes = true +}; + +// A DDL recorder has its own proxy provider and proxy cache. This enum indicates if +// a given proxy provider is one of these special ones. +enum class GrDDLProvider : bool { + kNo = false, + kYes = true +}; + +/** Ownership rules for external GPU resources imported into Skia. */ +enum GrWrapOwnership { + /** Skia will assume the client will keep the resource alive and Skia will not free it. */ + kBorrow_GrWrapOwnership, + + /** Skia will assume ownership of the resource and free it. */ + kAdopt_GrWrapOwnership, +}; + +enum class GrWrapCacheable : bool { + /** + * The wrapped resource will be removed from the cache as soon as it becomes purgeable. It may + * still be assigned and found by a unique key, but the presence of the key will not be used to + * keep the resource alive when it has no references. + */ + kNo = false, + /** + * The wrapped resource is allowed to remain in the GrResourceCache when it has no references + * but has a unique key. Such resources should only be given unique keys when it is known that + * the key will eventually be removed from the resource or invalidated via the message bus. + */ + kYes = true +}; + +enum class GrBudgetedType : uint8_t { + /** The resource is budgeted and is subject to purging under budget pressure. */ + kBudgeted, + /** + * The resource is unbudgeted and is purged as soon as it has no refs regardless of whether + * it has a unique or scratch key. + */ + kUnbudgetedUncacheable, + /** + * The resource is unbudgeted and is allowed to remain in the cache with no refs if it + * has a unique key. Scratch keys are ignored. + */ + kUnbudgetedCacheable, +}; + +enum class GrScissorTest : bool { + kDisabled = false, + kEnabled = true +}; + +/* + * Used to say whether texture is backed by memory. + */ +enum class GrMemoryless : bool { + /** + * The texture will be allocated normally and will affect memory budgets. + */ + kNo = false, + /** + * The texture will be not use GPU memory and will not affect memory budgets. + */ + kYes = true +}; + +struct GrMipLevel { + const void* fPixels = nullptr; + size_t fRowBytes = 0; + // This may be used to keep fPixels from being freed while a GrMipLevel exists. + sk_sp fOptionalStorage; + + static_assert(::sk_is_trivially_relocatable::value); + static_assert(::sk_is_trivially_relocatable::value); + + using sk_is_trivially_relocatable = std::true_type; +}; + +enum class GrSemaphoreWrapType { + kWillSignal, + kWillWait, +}; + +/** + * This enum is used to specify the load operation to be used when an OpsTask/GrOpsRenderPass + * begins execution. + */ +enum class GrLoadOp { + kLoad, + kClear, + kDiscard, +}; + +/** + * This enum is used to specify the store operation to be used when an OpsTask/GrOpsRenderPass + * ends execution. + */ +enum class GrStoreOp { + kStore, + kDiscard, +}; + +/** + * Used to control antialiasing in draw calls. + */ +enum class GrAA : bool { + kNo = false, + kYes = true +}; + +enum class GrFillRule : bool { + kNonzero, + kEvenOdd +}; + +inline GrFillRule GrFillRuleForPathFillType(SkPathFillType fillType) { + switch (fillType) { + case SkPathFillType::kWinding: + case SkPathFillType::kInverseWinding: + return GrFillRule::kNonzero; + case SkPathFillType::kEvenOdd: + case SkPathFillType::kInverseEvenOdd: + return GrFillRule::kEvenOdd; + } + SkUNREACHABLE; +} + +inline GrFillRule GrFillRuleForSkPath(const SkPath& path) { + return GrFillRuleForPathFillType(path.getFillType()); +} + +/** This enum indicates the type of antialiasing to be performed. */ +enum class GrAAType : unsigned { + /** No antialiasing */ + kNone, + /** Use fragment shader code to blend with a fractional pixel coverage. */ + kCoverage, + /** Use normal MSAA. */ + kMSAA, + + kLast = kMSAA +}; +static const int kGrAATypeCount = static_cast(GrAAType::kLast) + 1; + +static constexpr bool GrAATypeIsHW(GrAAType type) { + switch (type) { + case GrAAType::kNone: + return false; + case GrAAType::kCoverage: + return false; + case GrAAType::kMSAA: + return true; + } + SkUNREACHABLE; +} + +/** + * Some pixel configs are inherently clamped to [0,1], some are allowed to go outside that range, + * and some are FP but manually clamped in the XP. + */ +enum class GrClampType { + kAuto, // Normalized, fixed-point configs + kManual, // Clamped FP configs + kNone, // Normal (unclamped) FP configs +}; + +/** + * A number of rectangle/quadrilateral drawing APIs can control anti-aliasing on a per edge basis. + * These masks specify which edges are AA'ed. The intent for this is to support tiling with seamless + * boundaries, where the inner edges are non-AA and the outer edges are AA. Regular rectangle draws + * simply use kAll or kNone depending on if they want anti-aliasing or not. + * + * In APIs that support per-edge AA, GrQuadAAFlags is the only AA-control parameter that is + * provided (compared to the typical GrAA parameter). kNone is equivalent to GrAA::kNo, and any + * other set of edge flags would require GrAA::kYes (with rendering output dependent on how that + * maps to GrAAType for a given SurfaceDrawContext). + * + * These values are identical to SkCanvas::QuadAAFlags. + */ +enum class GrQuadAAFlags { + kLeft = 0b0001, + kTop = 0b0010, + kRight = 0b0100, + kBottom = 0b1000, + + kNone = 0b0000, + kAll = 0b1111, +}; + +SK_MAKE_BITFIELD_CLASS_OPS(GrQuadAAFlags) + +static inline GrQuadAAFlags SkToGrQuadAAFlags(unsigned flags) { + return static_cast(flags); +} + +/** + * The type of texture. Backends other than GL currently only use the 2D value but the type must + * still be known at the API-neutral layer as it used to determine whether MIP maps, renderability, + * and sampling parameters are legal for proxies that will be instantiated with wrapped textures. + */ +enum class GrTextureType { + kNone, + k2D, + /* Rectangle uses unnormalized texture coordinates. */ + kRectangle, + kExternal +}; + +enum GrShaderType { + kVertex_GrShaderType, + kFragment_GrShaderType, + + kLast_GrShaderType = kFragment_GrShaderType +}; +static const int kGrShaderTypeCount = kLast_GrShaderType + 1; + +enum GrShaderFlags { + kNone_GrShaderFlags = 0, + kVertex_GrShaderFlag = 1 << 0, + kFragment_GrShaderFlag = 1 << 1 +}; +SK_MAKE_BITFIELD_OPS(GrShaderFlags) + +/** Rectangle and external textures only support the clamp wrap mode and do not support + * MIP maps. + */ +static inline bool GrTextureTypeHasRestrictedSampling(GrTextureType type) { + switch (type) { + case GrTextureType::k2D: + return false; + case GrTextureType::kRectangle: + return true; + case GrTextureType::kExternal: + return true; + default: + SK_ABORT("Unexpected texture type"); + } +} + +////////////////////////////////////////////////////////////////////////////// + +/** + * Types used to describe format of vertices in arrays. + */ +enum GrVertexAttribType { + kFloat_GrVertexAttribType = 0, + kFloat2_GrVertexAttribType, + kFloat3_GrVertexAttribType, + kFloat4_GrVertexAttribType, + kHalf_GrVertexAttribType, + kHalf2_GrVertexAttribType, + kHalf4_GrVertexAttribType, + + kInt2_GrVertexAttribType, // vector of 2 32-bit ints + kInt3_GrVertexAttribType, // vector of 3 32-bit ints + kInt4_GrVertexAttribType, // vector of 4 32-bit ints + + + kByte_GrVertexAttribType, // signed byte + kByte2_GrVertexAttribType, // vector of 2 8-bit signed bytes + kByte4_GrVertexAttribType, // vector of 4 8-bit signed bytes + kUByte_GrVertexAttribType, // unsigned byte + kUByte2_GrVertexAttribType, // vector of 2 8-bit unsigned bytes + kUByte4_GrVertexAttribType, // vector of 4 8-bit unsigned bytes + + kUByte_norm_GrVertexAttribType, // unsigned byte, e.g. coverage, 0 -> 0.0f, 255 -> 1.0f. + kUByte4_norm_GrVertexAttribType, // vector of 4 unsigned bytes, e.g. colors, 0 -> 0.0f, + // 255 -> 1.0f. + + kShort2_GrVertexAttribType, // vector of 2 16-bit shorts. + kShort4_GrVertexAttribType, // vector of 4 16-bit shorts. + + kUShort2_GrVertexAttribType, // vector of 2 unsigned shorts. 0 -> 0, 65535 -> 65535. + kUShort2_norm_GrVertexAttribType, // vector of 2 unsigned shorts. 0 -> 0.0f, 65535 -> 1.0f. + + kInt_GrVertexAttribType, + kUInt_GrVertexAttribType, + + kUShort_norm_GrVertexAttribType, + + kUShort4_norm_GrVertexAttribType, // vector of 4 unsigned shorts. 0 -> 0.0f, 65535 -> 1.0f. + + kLast_GrVertexAttribType = kUShort4_norm_GrVertexAttribType +}; +static const int kGrVertexAttribTypeCount = kLast_GrVertexAttribType + 1; + +////////////////////////////////////////////////////////////////////////////// + +/** + * We have coverage effects that clip rendering to the edge of some geometric primitive. + * This enum specifies how that clipping is performed. Not all factories that take a + * GrClipEdgeType will succeed with all values and it is up to the caller to verify success. + */ +enum class GrClipEdgeType { + kFillBW, + kFillAA, + kInverseFillBW, + kInverseFillAA, + + kLast = kInverseFillAA +}; +static const int kGrClipEdgeTypeCnt = (int) GrClipEdgeType::kLast + 1; + +static constexpr bool GrClipEdgeTypeIsFill(GrClipEdgeType edgeType) { + return (GrClipEdgeType::kFillAA == edgeType || GrClipEdgeType::kFillBW == edgeType); +} + +static constexpr bool GrClipEdgeTypeIsInverseFill(GrClipEdgeType edgeType) { + return (GrClipEdgeType::kInverseFillAA == edgeType || + GrClipEdgeType::kInverseFillBW == edgeType); +} + +static constexpr bool GrClipEdgeTypeIsAA(GrClipEdgeType edgeType) { + return (GrClipEdgeType::kFillBW != edgeType && + GrClipEdgeType::kInverseFillBW != edgeType); +} + +static inline GrClipEdgeType GrInvertClipEdgeType(GrClipEdgeType edgeType) { + switch (edgeType) { + case GrClipEdgeType::kFillBW: + return GrClipEdgeType::kInverseFillBW; + case GrClipEdgeType::kFillAA: + return GrClipEdgeType::kInverseFillAA; + case GrClipEdgeType::kInverseFillBW: + return GrClipEdgeType::kFillBW; + case GrClipEdgeType::kInverseFillAA: + return GrClipEdgeType::kFillAA; + } + SkUNREACHABLE; +} + +/** + * Indicates the type of pending IO operations that can be recorded for gpu resources. + */ +enum GrIOType { + kRead_GrIOType, + kWrite_GrIOType, + kRW_GrIOType +}; + +/** + * Indicates the type of data that a GPU buffer will be used for. + */ +enum class GrGpuBufferType { + kVertex, + kIndex, + kDrawIndirect, + kXferCpuToGpu, + kXferGpuToCpu, + kUniform, +}; +static const constexpr int kGrGpuBufferTypeCount = static_cast(GrGpuBufferType::kUniform) + 1; + +/** + * Provides a performance hint regarding the frequency at which a data store will be accessed. + */ +enum GrAccessPattern { + /** Data store will be respecified repeatedly and used many times. */ + kDynamic_GrAccessPattern, + /** Data store will be specified once and used many times. (Thus disqualified from caching.) */ + kStatic_GrAccessPattern, + /** Data store will be specified once and used at most a few times. (Also can't be cached.) */ + kStream_GrAccessPattern, + + kLast_GrAccessPattern = kStream_GrAccessPattern +}; + +// Flags shared between the GrSurface & GrSurfaceProxy class hierarchies +enum class GrInternalSurfaceFlags { + kNone = 0, + + // Texture-level + + // Means the pixels in the texture are read-only. Cannot also be a GrRenderTarget[Proxy]. + kReadOnly = 1 << 0, + + // RT-level + + // This flag is for use with GL only. It tells us that the internal render target wraps FBO 0. + kGLRTFBOIDIs0 = 1 << 1, + + // This means the render target is multisampled, and internally holds a non-msaa texture for + // resolving into. The render target resolves itself by blitting into this internal texture. + // (asTexture() might or might not return the internal texture, but if it does, we always + // resolve the render target before accessing this texture's data.) + kRequiresManualMSAAResolve = 1 << 2, + + // This means the pixels in the render target are write-only. This is used for Dawn and Metal + // swap chain targets which can be rendered to, but not read or copied. + kFramebufferOnly = 1 << 3, + + // This is a Vulkan only flag. If set the surface can be used as an input attachment in a + // shader. This is used for doing in shader blending where we want to sample from the same + // image we are drawing to. + kVkRTSupportsInputAttachment = 1 << 4, +}; + +SK_MAKE_BITFIELD_CLASS_OPS(GrInternalSurfaceFlags) + +// 'SK_MAKE_BITFIELD_CLASS_OPS' defines the & operator on GrInternalSurfaceFlags to return bool. +// We want to find the bitwise & with these masks, so we declare them as ints. +constexpr static int kGrInternalTextureFlagsMask = static_cast( + GrInternalSurfaceFlags::kReadOnly); + +// We don't include kVkRTSupportsInputAttachment in this mask since we check it manually. We don't +// require that both the surface and proxy have matching values for this flag. Instead we require +// if the proxy has it set then the surface must also have it set. All other flags listed here must +// match on the proxy and surface. +// TODO: Add back kFramebufferOnly flag here once we update GrSurfaceCharacterization to take it +// as a flag. skbug.com/40042017 +constexpr static int kGrInternalRenderTargetFlagsMask = static_cast( + GrInternalSurfaceFlags::kGLRTFBOIDIs0 | + GrInternalSurfaceFlags::kRequiresManualMSAAResolve/* | + GrInternalSurfaceFlags::kFramebufferOnly*/); + +constexpr static int kGrInternalTextureRenderTargetFlagsMask = + kGrInternalTextureFlagsMask | kGrInternalRenderTargetFlagsMask; + +#ifdef SK_DEBUG +// Takes a pointer to a GrCaps, and will suppress prints if required +#define GrCapsDebugf(caps, ...) if (!(caps)->suppressPrints()) SkDebugf(__VA_ARGS__) +#else +#define GrCapsDebugf(caps, ...) do {} while (0) +#endif + +/** + * Specifies if the holder owns the backend, OpenGL or Vulkan, object. + */ +enum class GrBackendObjectOwnership : bool { + /** Holder does not destroy the backend object. */ + kBorrowed = false, + /** Holder destroys the backend object. */ + kOwned = true +}; + +/** + * Used to include or exclude specific GPU path renderers for testing purposes. + */ +enum class GpuPathRenderers { + kNone = 0, // Always use software masks and/or DefaultPathRenderer. + kDashLine = 1 << 0, + kAtlas = 1 << 1, + kTessellation = 1 << 2, + kCoverageCounting = 1 << 3, + kAAHairline = 1 << 4, + kAAConvex = 1 << 5, + kAALinearizing = 1 << 6, + kSmall = 1 << 7, + kTriangulating = 1 << 8, + kDefault = ((1 << 9) - 1) // All path renderers. +}; + +/** + * Used to describe the current state of Mips on a GrTexture + */ +enum class GrMipmapStatus { + kNotAllocated, // Mips have not been allocated + kDirty, // Mips are allocated but the full mip tree does not have valid data + kValid, // All levels fully allocated and have valid data in them +}; + +SK_MAKE_BITFIELD_CLASS_OPS(GpuPathRenderers) + +/** + * Like SkColorType this describes a layout of pixel data in CPU memory. It specifies the channels, + * their type, and width. This exists so that the GPU backend can have private types that have no + * analog in the public facing SkColorType enum and omit types not implemented in the GPU backend. + * It does not refer to a texture format and the mapping to texture formats may be many-to-many. + * It does not specify the sRGB encoding of the stored values. The components are listed in order of + * where they appear in memory. In other words the first component listed is in the low bits and + * the last component in the high bits. + */ +enum class GrColorType { + kUnknown, + kAlpha_8, + kBGR_565, // This corresponds to kRGB_565_SkColorType, which is misnamed. + kRGB_565, + kABGR_4444, // This name differs from SkColorType. kARGB_4444_SkColorType is misnamed. + kRGBA_8888, + kRGBA_8888_SRGB, + kRGB_888x, + kRG_88, + kBGRA_8888, + kRGBA_1010102, + kBGRA_1010102, + kRGB_101010x, + kRGBA_10x6, + kGray_8, + kGrayAlpha_88, + kAlpha_F16, + kRGBA_F16, + kRGB_F16F16F16x, + kRGBA_F16_Clamped, + kRGBA_F32, + + kAlpha_16, + kRG_1616, + kRG_F16, + kRGBA_16161616, + + // Unusual types that come up after reading back in cases where we are reassigning the meaning + // of a texture format's channels to use for a particular color format but have to read back the + // data to a full RGBA quadruple. (e.g. using a R8 texture format as A8 color type but the API + // only supports reading to RGBA8.) None of these have SkColorType equivalents. + kAlpha_8xxx, + kAlpha_F32xxx, + kGray_8xxx, + kR_8xxx, + + // Types used to initialize backend textures. + kRGB_888, + kR_8, + kR_16, + kR_F16, + kGray_F16, + kBGRA_4444, + kARGB_4444, + + kLast = kARGB_4444 +}; + +static const int kGrColorTypeCnt = static_cast(GrColorType::kLast) + 1; + +static constexpr SkColorType GrColorTypeToSkColorType(GrColorType ct) { + switch (ct) { + case GrColorType::kUnknown: return kUnknown_SkColorType; + case GrColorType::kAlpha_8: return kAlpha_8_SkColorType; + case GrColorType::kBGR_565: return kRGB_565_SkColorType; + case GrColorType::kRGB_565: return kUnknown_SkColorType; + case GrColorType::kABGR_4444: return kARGB_4444_SkColorType; + case GrColorType::kRGBA_8888: return kRGBA_8888_SkColorType; + case GrColorType::kRGBA_8888_SRGB: return kSRGBA_8888_SkColorType; + case GrColorType::kRGB_888x: return kRGB_888x_SkColorType; + case GrColorType::kRG_88: return kR8G8_unorm_SkColorType; + case GrColorType::kBGRA_8888: return kBGRA_8888_SkColorType; + case GrColorType::kRGBA_1010102: return kRGBA_1010102_SkColorType; + case GrColorType::kBGRA_1010102: return kBGRA_1010102_SkColorType; + case GrColorType::kRGB_101010x: return kRGB_101010x_SkColorType; + case GrColorType::kRGBA_10x6: return kRGBA_10x6_SkColorType; + case GrColorType::kGray_8: return kGray_8_SkColorType; + case GrColorType::kGrayAlpha_88: return kUnknown_SkColorType; + case GrColorType::kAlpha_F16: return kA16_float_SkColorType; + case GrColorType::kRGBA_F16: return kRGBA_F16_SkColorType; + case GrColorType::kRGBA_F16_Clamped: return kRGBA_F16Norm_SkColorType; + case GrColorType::kRGB_F16F16F16x: return kRGB_F16F16F16x_SkColorType; + case GrColorType::kRGBA_F32: return kRGBA_F32_SkColorType; + case GrColorType::kAlpha_8xxx: return kUnknown_SkColorType; + case GrColorType::kAlpha_F32xxx: return kUnknown_SkColorType; + case GrColorType::kGray_8xxx: return kUnknown_SkColorType; + case GrColorType::kR_8xxx: return kUnknown_SkColorType; + case GrColorType::kAlpha_16: return kA16_unorm_SkColorType; + case GrColorType::kRG_1616: return kR16G16_unorm_SkColorType; + case GrColorType::kRGBA_16161616: return kR16G16B16A16_unorm_SkColorType; + case GrColorType::kRG_F16: return kR16G16_float_SkColorType; + case GrColorType::kRGB_888: return kUnknown_SkColorType; + case GrColorType::kR_8: return kR8_unorm_SkColorType; + case GrColorType::kR_16: return kR16_unorm_SkColorType; + case GrColorType::kR_F16: return kR16_float_SkColorType; + case GrColorType::kGray_F16: return kUnknown_SkColorType; + case GrColorType::kARGB_4444: return kUnknown_SkColorType; + case GrColorType::kBGRA_4444: return kUnknown_SkColorType; + } + SkUNREACHABLE; +} + +static constexpr GrColorType SkColorTypeToGrColorType(SkColorType ct) { + switch (ct) { + case kUnknown_SkColorType: return GrColorType::kUnknown; + case kAlpha_8_SkColorType: return GrColorType::kAlpha_8; + case kRGB_565_SkColorType: return GrColorType::kBGR_565; + case kARGB_4444_SkColorType: return GrColorType::kABGR_4444; + case kRGBA_8888_SkColorType: return GrColorType::kRGBA_8888; + case kSRGBA_8888_SkColorType: return GrColorType::kRGBA_8888_SRGB; + case kRGB_888x_SkColorType: return GrColorType::kRGB_888x; + case kBGRA_8888_SkColorType: return GrColorType::kBGRA_8888; + case kGray_8_SkColorType: return GrColorType::kGray_8; + case kRGBA_F16Norm_SkColorType: return GrColorType::kRGBA_F16_Clamped; + case kRGBA_F16_SkColorType: return GrColorType::kRGBA_F16; + case kRGB_F16F16F16x_SkColorType: return GrColorType::kRGB_F16F16F16x; + case kRGBA_1010102_SkColorType: return GrColorType::kRGBA_1010102; + case kRGB_101010x_SkColorType: return GrColorType::kRGB_101010x; + case kBGRA_1010102_SkColorType: return GrColorType::kBGRA_1010102; + case kBGR_101010x_SkColorType: return GrColorType::kUnknown; + case kBGR_101010x_XR_SkColorType: return GrColorType::kUnknown; + case kBGRA_10101010_XR_SkColorType: return GrColorType::kUnknown; + case kRGBA_10x6_SkColorType: return GrColorType::kRGBA_10x6; + case kRGBA_F32_SkColorType: return GrColorType::kRGBA_F32; + case kR8G8_unorm_SkColorType: return GrColorType::kRG_88; + case kA16_unorm_SkColorType: return GrColorType::kAlpha_16; + case kR16_unorm_SkColorType: return GrColorType::kR_16; + case kR16G16_unorm_SkColorType: return GrColorType::kRG_1616; + case kA16_float_SkColorType: return GrColorType::kAlpha_F16; + case kR16_float_SkColorType: return GrColorType::kR_F16; + case kR16G16_float_SkColorType: return GrColorType::kRG_F16; + case kR16G16B16A16_unorm_SkColorType: return GrColorType::kRGBA_16161616; + case kR8_unorm_SkColorType: return GrColorType::kR_8; + } + SkUNREACHABLE; +} + +static constexpr uint32_t GrColorTypeChannelFlags(GrColorType ct) { + switch (ct) { + case GrColorType::kUnknown: return 0; + case GrColorType::kAlpha_8: return kAlpha_SkColorChannelFlag; + case GrColorType::kBGR_565: return kRGB_SkColorChannelFlags; + case GrColorType::kRGB_565: return kRGB_SkColorChannelFlags; + case GrColorType::kABGR_4444: return kRGBA_SkColorChannelFlags; + case GrColorType::kRGBA_8888: return kRGBA_SkColorChannelFlags; + case GrColorType::kRGBA_8888_SRGB: return kRGBA_SkColorChannelFlags; + case GrColorType::kRGB_888x: return kRGB_SkColorChannelFlags; + case GrColorType::kRG_88: return kRG_SkColorChannelFlags; + case GrColorType::kBGRA_8888: return kRGBA_SkColorChannelFlags; + case GrColorType::kRGBA_1010102: return kRGBA_SkColorChannelFlags; + case GrColorType::kBGRA_1010102: return kRGBA_SkColorChannelFlags; + case GrColorType::kRGB_101010x: return kRGB_SkColorChannelFlags; + case GrColorType::kRGBA_10x6: return kRGBA_SkColorChannelFlags; + case GrColorType::kGray_8: return kGray_SkColorChannelFlag; + case GrColorType::kGrayAlpha_88: return kGrayAlpha_SkColorChannelFlags; + case GrColorType::kAlpha_F16: return kAlpha_SkColorChannelFlag; + case GrColorType::kRGBA_F16: return kRGBA_SkColorChannelFlags; + case GrColorType::kRGBA_F16_Clamped: return kRGBA_SkColorChannelFlags; + case GrColorType::kRGB_F16F16F16x: return kRGB_SkColorChannelFlags; + case GrColorType::kRGBA_F32: return kRGBA_SkColorChannelFlags; + case GrColorType::kAlpha_8xxx: return kAlpha_SkColorChannelFlag; + case GrColorType::kAlpha_F32xxx: return kAlpha_SkColorChannelFlag; + case GrColorType::kGray_8xxx: return kGray_SkColorChannelFlag; + case GrColorType::kR_8xxx: return kRed_SkColorChannelFlag; + case GrColorType::kAlpha_16: return kAlpha_SkColorChannelFlag; + case GrColorType::kRG_1616: return kRG_SkColorChannelFlags; + case GrColorType::kRGBA_16161616: return kRGBA_SkColorChannelFlags; + case GrColorType::kRG_F16: return kRG_SkColorChannelFlags; + case GrColorType::kRGB_888: return kRGB_SkColorChannelFlags; + case GrColorType::kR_8: return kRed_SkColorChannelFlag; + case GrColorType::kR_16: return kRed_SkColorChannelFlag; + case GrColorType::kR_F16: return kRed_SkColorChannelFlag; + case GrColorType::kGray_F16: return kGray_SkColorChannelFlag; + case GrColorType::kARGB_4444: return kRGBA_SkColorChannelFlags; + case GrColorType::kBGRA_4444: return kRGBA_SkColorChannelFlags; + } + SkUNREACHABLE; +} + +/** + * Describes the encoding of channel data in a GrColorType. + */ +enum class GrColorTypeEncoding { + kUnorm, + kSRGBUnorm, + // kSnorm, + kFloat, + // kSint + // kUint +}; + +/** + * Describes a GrColorType by how many bits are used for each color component and how they are + * encoded. Currently all the non-zero channels share a single GrColorTypeEncoding. This could be + * expanded to store separate encodings and to indicate which bits belong to which components. + */ +class GrColorFormatDesc { +public: + static constexpr GrColorFormatDesc MakeRGBA(int rgba, GrColorTypeEncoding e) { + return {rgba, rgba, rgba, rgba, 0, e}; + } + + static constexpr GrColorFormatDesc MakeRGBA(int rgb, int a, GrColorTypeEncoding e) { + return {rgb, rgb, rgb, a, 0, e}; + } + + static constexpr GrColorFormatDesc MakeRGB(int rgb, GrColorTypeEncoding e) { + return {rgb, rgb, rgb, 0, 0, e}; + } + + static constexpr GrColorFormatDesc MakeRGB(int r, int g, int b, GrColorTypeEncoding e) { + return {r, g, b, 0, 0, e}; + } + + static constexpr GrColorFormatDesc MakeAlpha(int a, GrColorTypeEncoding e) { + return {0, 0, 0, a, 0, e}; + } + + static constexpr GrColorFormatDesc MakeR(int r, GrColorTypeEncoding e) { + return {r, 0, 0, 0, 0, e}; + } + + static constexpr GrColorFormatDesc MakeRG(int rg, GrColorTypeEncoding e) { + return {rg, rg, 0, 0, 0, e}; + } + + static constexpr GrColorFormatDesc MakeGray(int grayBits, GrColorTypeEncoding e) { + return {0, 0, 0, 0, grayBits, e}; + } + + static constexpr GrColorFormatDesc MakeGrayAlpha(int grayAlpha, GrColorTypeEncoding e) { + return {0, 0, 0, 0, grayAlpha, e}; + } + + static constexpr GrColorFormatDesc MakeInvalid() { return {}; } + + constexpr int r() const { return fRBits; } + constexpr int g() const { return fGBits; } + constexpr int b() const { return fBBits; } + constexpr int a() const { return fABits; } + constexpr int operator[](int c) const { + switch (c) { + case 0: return this->r(); + case 1: return this->g(); + case 2: return this->b(); + case 3: return this->a(); + } + SkUNREACHABLE; + } + + constexpr int gray() const { return fGrayBits; } + + constexpr GrColorTypeEncoding encoding() const { return fEncoding; } + +private: + int fRBits = 0; + int fGBits = 0; + int fBBits = 0; + int fABits = 0; + int fGrayBits = 0; + GrColorTypeEncoding fEncoding = GrColorTypeEncoding::kUnorm; + + constexpr GrColorFormatDesc() = default; + + constexpr GrColorFormatDesc(int r, int g, int b, int a, int gray, GrColorTypeEncoding encoding) + : fRBits(r), fGBits(g), fBBits(b), fABits(a), fGrayBits(gray), fEncoding(encoding) { + SkASSERT(r >= 0 && g >= 0 && b >= 0 && a >= 0 && gray >= 0); + SkASSERT(!gray || (!r && !g && !b)); + SkASSERT(r || g || b || a || gray); + } +}; + +static constexpr GrColorFormatDesc GrGetColorTypeDesc(GrColorType ct) { + switch (ct) { + case GrColorType::kUnknown: + return GrColorFormatDesc::MakeInvalid(); + case GrColorType::kAlpha_8: + return GrColorFormatDesc::MakeAlpha(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kBGR_565: + return GrColorFormatDesc::MakeRGB(5, 6, 5, GrColorTypeEncoding::kUnorm); + case GrColorType::kRGB_565: + return GrColorFormatDesc::MakeRGB(5, 6, 5, GrColorTypeEncoding::kUnorm); + case GrColorType::kABGR_4444: + return GrColorFormatDesc::MakeRGBA(4, GrColorTypeEncoding::kUnorm); + case GrColorType::kRGBA_8888: + return GrColorFormatDesc::MakeRGBA(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kRGBA_8888_SRGB: + return GrColorFormatDesc::MakeRGBA(8, GrColorTypeEncoding::kSRGBUnorm); + case GrColorType::kRGB_888x: + return GrColorFormatDesc::MakeRGB(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kRG_88: + return GrColorFormatDesc::MakeRG(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kBGRA_8888: + return GrColorFormatDesc::MakeRGBA(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kRGBA_1010102: + return GrColorFormatDesc::MakeRGBA(10, 2, GrColorTypeEncoding::kUnorm); + case GrColorType::kBGRA_1010102: + return GrColorFormatDesc::MakeRGBA(10, 2, GrColorTypeEncoding::kUnorm); + case GrColorType::kRGB_101010x: + return GrColorFormatDesc::MakeRGB(10, GrColorTypeEncoding::kUnorm); + case GrColorType::kRGBA_10x6: + return GrColorFormatDesc::MakeRGBA(10, GrColorTypeEncoding::kUnorm); + case GrColorType::kGray_8: + return GrColorFormatDesc::MakeGray(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kGrayAlpha_88: + return GrColorFormatDesc::MakeGrayAlpha(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kAlpha_F16: + return GrColorFormatDesc::MakeAlpha(16, GrColorTypeEncoding::kFloat); + case GrColorType::kRGBA_F16: + return GrColorFormatDesc::MakeRGBA(16, GrColorTypeEncoding::kFloat); + case GrColorType::kRGB_F16F16F16x: + return GrColorFormatDesc::MakeRGB(16, GrColorTypeEncoding::kFloat); + case GrColorType::kRGBA_F16_Clamped: + return GrColorFormatDesc::MakeRGBA(16, GrColorTypeEncoding::kFloat); + case GrColorType::kRGBA_F32: + return GrColorFormatDesc::MakeRGBA(32, GrColorTypeEncoding::kFloat); + case GrColorType::kAlpha_8xxx: + return GrColorFormatDesc::MakeAlpha(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kAlpha_F32xxx: + return GrColorFormatDesc::MakeAlpha(32, GrColorTypeEncoding::kFloat); + case GrColorType::kGray_8xxx: + return GrColorFormatDesc::MakeGray(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kR_8xxx: + return GrColorFormatDesc::MakeR(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kAlpha_16: + return GrColorFormatDesc::MakeAlpha(16, GrColorTypeEncoding::kUnorm); + case GrColorType::kRG_1616: + return GrColorFormatDesc::MakeRG(16, GrColorTypeEncoding::kUnorm); + case GrColorType::kRGBA_16161616: + return GrColorFormatDesc::MakeRGBA(16, GrColorTypeEncoding::kUnorm); + case GrColorType::kRG_F16: + return GrColorFormatDesc::MakeRG(16, GrColorTypeEncoding::kFloat); + case GrColorType::kRGB_888: + return GrColorFormatDesc::MakeRGB(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kR_8: + return GrColorFormatDesc::MakeR(8, GrColorTypeEncoding::kUnorm); + case GrColorType::kR_16: + return GrColorFormatDesc::MakeR(16, GrColorTypeEncoding::kUnorm); + case GrColorType::kR_F16: + return GrColorFormatDesc::MakeR(16, GrColorTypeEncoding::kFloat); + case GrColorType::kGray_F16: + return GrColorFormatDesc::MakeGray(16, GrColorTypeEncoding::kFloat); + case GrColorType::kARGB_4444: + return GrColorFormatDesc::MakeRGBA(4, GrColorTypeEncoding::kUnorm); + case GrColorType::kBGRA_4444: + return GrColorFormatDesc::MakeRGBA(4, GrColorTypeEncoding::kUnorm); + } + SkUNREACHABLE; +} + +static constexpr GrClampType GrColorTypeClampType(GrColorType colorType) { + if (GrGetColorTypeDesc(colorType).encoding() == GrColorTypeEncoding::kUnorm || + GrGetColorTypeDesc(colorType).encoding() == GrColorTypeEncoding::kSRGBUnorm) { + return GrClampType::kAuto; + } + return GrColorType::kRGBA_F16_Clamped == colorType ? GrClampType::kManual : GrClampType::kNone; +} + +// Consider a color type "wider" than n if it has more than n bits for any its representable +// channels. +static constexpr bool GrColorTypeIsWiderThan(GrColorType colorType, int n) { + SkASSERT(n > 0); + auto desc = GrGetColorTypeDesc(colorType); + return (desc.r() && desc.r() > n )|| + (desc.g() && desc.g() > n) || + (desc.b() && desc.b() > n) || + (desc.a() && desc.a() > n) || + (desc.gray() && desc.gray() > n); +} + +static constexpr bool GrColorTypeIsAlphaOnly(GrColorType ct) { + return GrColorTypeChannelFlags(ct) == kAlpha_SkColorChannelFlag; +} + +static constexpr bool GrColorTypeHasAlpha(GrColorType ct) { + return GrColorTypeChannelFlags(ct) & kAlpha_SkColorChannelFlag; +} + +static constexpr size_t GrColorTypeBytesPerPixel(GrColorType ct) { + switch (ct) { + case GrColorType::kUnknown: return 0; + case GrColorType::kAlpha_8: return 1; + case GrColorType::kBGR_565: return 2; + case GrColorType::kRGB_565: return 2; + case GrColorType::kABGR_4444: return 2; + case GrColorType::kRGBA_8888: return 4; + case GrColorType::kRGBA_8888_SRGB: return 4; + case GrColorType::kRGB_888x: return 4; + case GrColorType::kRG_88: return 2; + case GrColorType::kBGRA_8888: return 4; + case GrColorType::kRGBA_1010102: return 4; + case GrColorType::kBGRA_1010102: return 4; + case GrColorType::kRGB_101010x: return 4; + case GrColorType::kRGBA_10x6: return 8; + case GrColorType::kGray_8: return 1; + case GrColorType::kGrayAlpha_88: return 2; + case GrColorType::kAlpha_F16: return 2; + case GrColorType::kRGBA_F16: return 8; + case GrColorType::kRGBA_F16_Clamped: return 8; + case GrColorType::kRGB_F16F16F16x: return 8; + case GrColorType::kRGBA_F32: return 16; + case GrColorType::kAlpha_8xxx: return 4; + case GrColorType::kAlpha_F32xxx: return 16; + case GrColorType::kGray_8xxx: return 4; + case GrColorType::kR_8xxx: return 4; + case GrColorType::kAlpha_16: return 2; + case GrColorType::kRG_1616: return 4; + case GrColorType::kRGBA_16161616: return 8; + case GrColorType::kRG_F16: return 4; + case GrColorType::kRGB_888: return 3; + case GrColorType::kR_8: return 1; + case GrColorType::kR_16: return 2; + case GrColorType::kR_F16: return 2; + case GrColorType::kGray_F16: return 2; + case GrColorType::kARGB_4444: return 2; + case GrColorType::kBGRA_4444: return 2; + } + SkUNREACHABLE; +} + +enum class GrDstSampleFlags { + kNone = 0, + kRequiresTextureBarrier = 1 << 0, + kAsInputAttachment = 1 << 1, +}; +SK_MAKE_BITFIELD_CLASS_OPS(GrDstSampleFlags) + +using GrVisitProxyFunc = std::function; + +#endif diff --git a/vendor/artifacts/skia/include/private/gpu/vk/BUILD.bazel b/vendor/artifacts/skia/include/private/gpu/vk/BUILD.bazel new file mode 100644 index 000000000..ab16ca3fe --- /dev/null +++ b/vendor/artifacts/skia/include/private/gpu/vk/BUILD.bazel @@ -0,0 +1,18 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "private_hdrs", + srcs = [ + "SkiaVulkan.h", + ], + visibility = [ + "//src/gpu/ganesh/vk:__pkg__", + "//src/gpu/vk:__pkg__", + ], +) diff --git a/vendor/artifacts/skia/include/private/gpu/vk/SkiaVulkan.h b/vendor/artifacts/skia/include/private/gpu/vk/SkiaVulkan.h new file mode 100644 index 000000000..aa7329fa9 --- /dev/null +++ b/vendor/artifacts/skia/include/private/gpu/vk/SkiaVulkan.h @@ -0,0 +1,36 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkiaVulkan_DEFINED +#define SkiaVulkan_DEFINED + +#include "include/core/SkTypes.h" + +// IWYU pragma: begin_exports + +#if defined(SK_USE_INTERNAL_VULKAN_HEADERS) && !defined(SK_BUILD_FOR_GOOGLE3) +#include "include/third_party/vulkan/vulkan/vulkan_core.h" +#else +// For google3 builds we don't set SKIA_IMPLEMENTATION so we need to make sure that the vulkan +// headers stay up to date for our needs +#include +#endif + +#ifdef SK_BUILD_FOR_ANDROID +// This is needed to get android extensions for external memory +#if defined(SK_USE_INTERNAL_VULKAN_HEADERS) && !defined(SK_BUILD_FOR_GOOGLE3) +#include "include/third_party/vulkan/vulkan/vulkan_android.h" +#else +// For google3 builds we don't set SKIA_IMPLEMENTATION so we need to make sure that the vulkan +// headers stay up to date for our needs +#include +#endif +#endif + +// IWYU pragma: end_exports + +#endif diff --git a/vendor/artifacts/skia/include/skcms/BUILD.bazel b/vendor/artifacts/skia/include/skcms/BUILD.bazel new file mode 100644 index 000000000..638505bf7 --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/BUILD.bazel @@ -0,0 +1,123 @@ +load("@skia_user_config//:copts.bzl", "DEFAULT_COPTS") +load("//bazel:skia_rules.bzl", "skia_cc_library", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +# A separate group duplicating :skcms.hdrs for +# export to //modules/skcms/skcms.gni:skcms_public_headers. +skia_filegroup( + name = "public_hdrs", + srcs = ["skcms.h"], +) + +# A separate group duplicating :skcms.srcs for +# export to //modules/skcms/skcms.gni:skcms_sources. +skia_filegroup( + name = "srcs", + srcs = [ + "skcms.cc", + "src/skcms_Transform.h", + "src/skcms_TransformBaseline.cc", + "src/skcms_TransformHsw.cc", + "src/skcms_TransformSkx.cc", + "src/skcms_internals.h", + "src/skcms_public.h", + ], +) + +# A separate group duplicating :skcms.textual_hdrs for +# export to //modules/skcms/skcms.gni:skcms_sources. +skia_filegroup( + name = "textual_hdrs", + srcs = [ + "src/Transform_inl.h", + ], +) + +skia_cc_library( + name = "skcms", + hdrs = [ + "skcms.h", + ], + visibility = ["//:__subpackages__"], + deps = [ + ":skcms_TransformBaseline", + ":skcms_TransformHsw", + ":skcms_TransformSkx", + ":skcms_public", + ], +) + +skia_cc_library( + name = "skcms_public", + srcs = [ + "skcms.cc", + "src/skcms_internals.h", + "src/skcms_public.h", + ], + hdrs = [ + "skcms.h", + ], + deps = [":skcms_TransformBaseline"] + + select({ + "@platforms//cpu:x86_64": [ + ":skcms_TransformHsw", + ":skcms_TransformSkx", + ], + "//conditions:default": [], + }), +) + +skia_cc_library( + name = "skcms_TransformBaseline", + srcs = [ + "src/skcms_Transform.h", + "src/skcms_TransformBaseline.cc", + "src/skcms_internals.h", + "src/skcms_public.h", + ], + # This header does not compile on its own and is meant to be included from skcms_Transform*.cc + textual_hdrs = [ + "src/Transform_inl.h", + ], +) + +skia_cc_library( + name = "skcms_TransformHsw", + srcs = [ + "src/skcms_Transform.h", + "src/skcms_TransformHsw.cc", + "src/skcms_internals.h", + "src/skcms_public.h", + ], + copts = DEFAULT_COPTS + select({ + "@platforms//cpu:x86_64": ["-march=haswell"], + "//conditions:default": [], + }), + # This header does not compile on its own and is meant to be included from skcms_Transform*.cc + textual_hdrs = [ + "src/Transform_inl.h", + ], +) + +skia_cc_library( + name = "skcms_TransformSkx", + srcs = [ + "src/skcms_Transform.h", + "src/skcms_TransformSkx.cc", + "src/skcms_internals.h", + "src/skcms_public.h", + ], + copts = DEFAULT_COPTS + select({ + "@platforms//cpu:x86_64": ["-march=skylake-avx512"], + "//conditions:default": [], + }), + # This header does not compile on its own and is meant to be included from skcms_Transform*.cc + textual_hdrs = [ + "src/Transform_inl.h", + ], +) diff --git a/vendor/artifacts/skia/include/skcms/BUILD.gn b/vendor/artifacts/skia/include/skcms/BUILD.gn new file mode 100644 index 000000000..5d037a94c --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/BUILD.gn @@ -0,0 +1,100 @@ +# Copyright 2022 Google LLC +# +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import("skcms.gni") + +# Use for CPU-specific skcms transform code that needs particular compiler flags. +# (This is patterned after `opts` in Skia's BUILD.gn.) +template("arch") { + if (invoker.enabled) { + source_set(target_name) { + visibility = [ ":*" ] + check_includes = false + forward_variables_from(invoker, "*") + } + } else { + # If not enabled, a phony empty target that swallows all otherwise unused variables. + source_set(target_name) { + visibility = [ ":*" ] + check_includes = false + forward_variables_from(invoker, + "*", + [ + "sources", + "cflags", + "defines", + ]) + } + } +} + +arch("skcms_TransformHsw") { + enabled = current_cpu == "x64" && target_os != "android" + sources = skcms_TransformHsw + if (is_win) { + if (is_clang) { + cflags = [ + "/clang:-mavx2", + "/clang:-mf16c", + "/clang:-ffp-contract=off", + ] + } else { + cflags = [ "/arch:AVX2" ] + } + } else { + cflags = [ + "-mavx2", + "-mf16c", + "-std=c11", + ] + } +} + +arch("skcms_TransformSkx") { + enabled = current_cpu == "x64" && target_os != "android" + sources = skcms_TransformSkx + if (is_win) { + if (is_clang) { + cflags = [ + "/clang:-mavx512f", + "/clang:-mavx512dq", + "/clang:-mavx512cd", + "/clang:-mavx512bw", + "/clang:-mavx512vl", + "/clang:-ffp-contract=off", + ] + } else { + cflags = [ "/arch:AVX512" ] + } + } else { + cflags = [ + "-mavx512f", + "-mavx512dq", + "-mavx512cd", + "-mavx512bw", + "-mavx512vl", + "-std=c11", + ] + } +} + +static_library("skcms") { + cflags = [] + if (!is_win || is_clang) { + cflags += [ "-std=c11" ] + } + if (target_cpu != "x64" || target_os == "android") { + defines = [ + "SKCMS_DISABLE_HSW", + "SKCMS_DISABLE_SKX", + ] + } + public = skcms_public_headers + sources = skcms_public + skcms_TransformBaseline + deps = [ + ":skcms_TransformHsw", + ":skcms_TransformSkx", + ] +} diff --git a/vendor/artifacts/skia/include/skcms/OWNERS b/vendor/artifacts/skia/include/skcms/OWNERS new file mode 100644 index 000000000..cc36d27e3 --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/OWNERS @@ -0,0 +1,2 @@ +# The auto-roller directly checks in skcms, so give it ownership as well: +skia-autoroll@skia-public.iam.gserviceaccount.com diff --git a/vendor/artifacts/skia/include/skcms/README.chromium b/vendor/artifacts/skia/include/skcms/README.chromium new file mode 100644 index 000000000..046f6b1d1 --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/README.chromium @@ -0,0 +1,5 @@ +Name: skcms +URL: https://skia.org/ +Version: unknown +Security Critical: yes +License: BSD diff --git a/vendor/artifacts/skia/include/skcms/skcms.cc b/vendor/artifacts/skia/include/skcms/skcms.cc new file mode 100644 index 000000000..71173616f --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/skcms.cc @@ -0,0 +1,3221 @@ +/* + * Copyright 2018 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "src/skcms_public.h" // NO_G3_REWRITE +#include "src/skcms_internals.h" // NO_G3_REWRITE +#include "src/skcms_Transform.h" // NO_G3_REWRITE +#include +#include +#include +#include +#include + +#if defined(__ARM_NEON) + #include +#elif defined(__SSE__) + #include + + #if defined(__clang__) + // That #include is usually enough, but Clang's headers + // "helpfully" skip including the whole kitchen sink when _MSC_VER is + // defined, because lots of programs on Windows would include that and + // it'd be a lot slower. But we want all those headers included so we + // can use their features after runtime checks later. + #include + #include + #include + #include + #include + #endif +#endif + +using namespace skcms_private; + +// A potential vulnerability exists where a large CLUT can cause an integer +// overflow in skcms's transformation logic. Limit the total number of grid +// points to a safe value. 350 million ensures that 6 * index will not overflow +// a 32-bit signed integer (which is what AVX2/AVX-512 gather expects). +#define SKCMS_MAX_GRID_POINTS 350000000 + +static bool sAllowRuntimeCPUDetection = true; + +void skcms_DisableRuntimeCPUDetection() { + sAllowRuntimeCPUDetection = false; +} + +static float log2f_(float x) { + // The first approximation of log2(x) is its exponent 'e', minus 127. + int32_t bits; + memcpy(&bits, &x, sizeof(bits)); + + float e = (float)bits * (1.0f / (1<<23)); + + // If we use the mantissa too we can refine the error signficantly. + int32_t m_bits = (bits & 0x007fffff) | 0x3f000000; + float m; + memcpy(&m, &m_bits, sizeof(m)); + + return (e - 124.225514990f + - 1.498030302f*m + - 1.725879990f/(0.3520887068f + m)); +} +static float logf_(float x) { + const float ln2 = 0.69314718f; + return ln2*log2f_(x); +} + +static float exp2f_(float x) { + if (x > 128.0f) { + return INFINITY_; + } else if (x < -127.0f) { + return 0.0f; + } + float fract = x - floorf_(x); + + float fbits = (1.0f * (1<<23)) * (x + 121.274057500f + - 1.490129070f*fract + + 27.728023300f/(4.84252568f - fract)); + + // Before we cast fbits to int32_t, check for out of range values to pacify UBSAN. + // INT_MAX is not exactly representable as a float, so exclude it as effectively infinite. + // Negative values are effectively underflow - we'll end up returning a (different) negative + // value, which makes no sense. So clamp to zero. + if (fbits >= (float)INT_MAX) { + return INFINITY_; + } else if (fbits < 0) { + return 0; + } + + int32_t bits = (int32_t)fbits; + memcpy(&x, &bits, sizeof(x)); + return x; +} + +// Not static, as it's used by some test tools. +float powf_(float x, float y) { + if (x <= 0.f) { + return 0.f; + } + if (x == 1.f) { + return 1.f; + } + return exp2f_(log2f_(x) * y); +} + +static float expf_(float x) { + const float log2_e = 1.4426950408889634074f; + return exp2f_(log2_e * x); +} + +static float fmaxf_(float x, float y) { return x > y ? x : y; } +static float fminf_(float x, float y) { return x < y ? x : y; } + +static bool isfinitef_(float x) { return 0 == x*0; } + +static float minus_1_ulp(float x) { + int32_t bits; + memcpy(&bits, &x, sizeof(bits)); + bits = bits - 1; + memcpy(&x, &bits, sizeof(bits)); + return x; +} + +// Most transfer functions we work with are sRGBish. +// For exotic HDR transfer functions, we encode them using a tf.g that makes no sense, +// and repurpose the other fields to hold the parameters of the HDR functions. +struct TF_PQish { float A,B,C,D,E,F; }; +struct TF_HLGish { float R,G,a,b,c,K_minus_1; }; +// We didn't originally support a scale factor K for HLG, and instead just stored 0 in +// the unused `f` field of skcms_TransferFunction for HLGish and HLGInvish transfer functions. +// By storing f=K-1, those old unusued f=0 values now mean K=1, a noop scale factor. + +static float TFKind_marker(skcms_TFType kind) { + // We'd use different NaNs, but those aren't guaranteed to be preserved by WASM. + return -(float)kind; +} + +static skcms_TFType classify(const skcms_TransferFunction& tf, TF_PQish* pq = nullptr + , TF_HLGish* hlg = nullptr) { + if (tf.g < 0) { + // Negative "g" is mapped to enum values; large negative are for sure invalid. + if (tf.g < -128) { + return skcms_TFType_Invalid; + } + int enum_g = -static_cast(tf.g); + // Non-whole "g" values are invalid as well. + if (static_cast(-enum_g) != tf.g) { + return skcms_TFType_Invalid; + } + // TODO: soundness checks for PQ/HLG like we do for sRGBish? + switch (enum_g) { + case skcms_TFType_PQish: + if (pq) { + memcpy(pq , &tf.a, sizeof(*pq )); + } + return skcms_TFType_PQish; + case skcms_TFType_HLGish: + if (hlg) { + memcpy(hlg, &tf.a, sizeof(*hlg)); + } + return skcms_TFType_HLGish; + case skcms_TFType_HLGinvish: + if (hlg) { + memcpy(hlg, &tf.a, sizeof(*hlg)); + } + return skcms_TFType_HLGinvish; + case skcms_TFType_PQ: + if (tf.b != 0.f || tf.c != 0.f || tf.d != 0.f || tf.e != 0.f || tf.f != 0.f) { + return skcms_TFType_Invalid; + } + return skcms_TFType_PQ; + case skcms_TFType_HLG: + if (tf.d != 0.f || tf.e != 0.f || tf.f != 0.f) { + return skcms_TFType_Invalid; + } + return skcms_TFType_HLG; + } + return skcms_TFType_Invalid; + } + + // Basic soundness checks for sRGBish transfer functions. + if (isfinitef_(tf.a + tf.b + tf.c + tf.d + tf.e + tf.f + tf.g) + // a,c,d,g should be non-negative to make any sense. + && tf.a >= 0 + && tf.c >= 0 + && tf.d >= 0 + && tf.g >= 0 + // Raising a negative value to a fractional tf->g produces complex numbers. + && tf.a * tf.d + tf.b >= 0) { + return skcms_TFType_sRGBish; + } + + return skcms_TFType_Invalid; +} + +skcms_TFType skcms_TransferFunction_getType(const skcms_TransferFunction* tf) { + return classify(*tf); +} +bool skcms_TransferFunction_isSRGBish(const skcms_TransferFunction* tf) { + return classify(*tf) == skcms_TFType_sRGBish; +} +bool skcms_TransferFunction_isPQish(const skcms_TransferFunction* tf) { + return classify(*tf) == skcms_TFType_PQish; +} +bool skcms_TransferFunction_isHLGish(const skcms_TransferFunction* tf) { + return classify(*tf) == skcms_TFType_HLGish; +} +bool skcms_TransferFunction_isPQ(const skcms_TransferFunction* tf) { + return classify(*tf) == skcms_TFType_PQ; +} +bool skcms_TransferFunction_isHLG(const skcms_TransferFunction* tf) { + return classify(*tf) == skcms_TFType_HLG; +} + +bool skcms_TransferFunction_makePQish(skcms_TransferFunction* tf, + float A, float B, float C, + float D, float E, float F) { + *tf = { TFKind_marker(skcms_TFType_PQish), A,B,C,D,E,F }; + assert(skcms_TransferFunction_isPQish(tf)); + return true; +} + +bool skcms_TransferFunction_makeScaledHLGish(skcms_TransferFunction* tf, + float K, float R, float G, + float a, float b, float c) { + *tf = { TFKind_marker(skcms_TFType_HLGish), R,G, a,b,c, K-1.0f }; + assert(skcms_TransferFunction_isHLGish(tf)); + return true; +} + +void skcms_TransferFunction_makePQ( + skcms_TransferFunction* tf, + float hdr_reference_white_luminance) { + *tf = { TFKind_marker(skcms_TFType_PQ), + hdr_reference_white_luminance, + 0.f,0.f,0.f,0.f,0.f }; + assert(skcms_TransferFunction_isPQ(tf)); +} + +void skcms_TransferFunction_makeHLG( + skcms_TransferFunction* tf, + float hdr_reference_white_luminance, + float peak_luminance, + float system_gamma) { + *tf = { TFKind_marker(skcms_TFType_HLG), + hdr_reference_white_luminance, + peak_luminance, + system_gamma, + 0.f, 0.f, 0.f }; + assert(skcms_TransferFunction_isHLG(tf)); +} + +float skcms_TransferFunction_eval(const skcms_TransferFunction* tf, float x) { + float sign = x < 0 ? -1.0f : 1.0f; + x *= sign; + + TF_PQish pq; + TF_HLGish hlg; + switch (classify(*tf, &pq, &hlg)) { + case skcms_TFType_Invalid: break; + + case skcms_TFType_HLG: { + const float a = 0.17883277f; + const float b = 0.28466892f; + const float c = 0.55991073f; + return sign * (x <= 0.5f ? x*x/3.f : (expf_((x-c)/a) + b) / 12.f); + } + + case skcms_TFType_HLGish: { + const float K = hlg.K_minus_1 + 1.0f; + return K * sign * (x*hlg.R <= 1 ? powf_(x*hlg.R, hlg.G) + : expf_((x-hlg.c)*hlg.a) + hlg.b); + } + + // skcms_TransferFunction_invert() inverts R, G, and a for HLGinvish so this math is fast. + case skcms_TFType_HLGinvish: { + const float K = hlg.K_minus_1 + 1.0f; + x /= K; + return sign * (x <= 1 ? hlg.R * powf_(x, hlg.G) + : hlg.a * logf_(x - hlg.b) + hlg.c); + } + + case skcms_TFType_sRGBish: + return sign * (x < tf->d ? tf->c * x + tf->f + : powf_(tf->a * x + tf->b, tf->g) + tf->e); + + case skcms_TFType_PQ: { + const float c1 = 107 / 128.f; + const float c2 = 2413 / 128.f; + const float c3 = 2392 / 128.f; + const float m1 = 1305 / 8192.f; + const float m2 = 2523 / 32.f; + const float p = powf_(x, 1.f / m2); + return powf_((p - c1) / (c2 - c3 * p), 1.f / m1); + } + + case skcms_TFType_PQish: + return sign * + powf_((pq.A + pq.B * powf_(x, pq.C)) / (pq.D + pq.E * powf_(x, pq.C)), pq.F); + } + return 0; +} + + +static float eval_curve(const skcms_Curve* curve, float x) { + if (curve->table_entries == 0) { + return skcms_TransferFunction_eval(&curve->parametric, x); + } + + float ix = fmaxf_(0, fminf_(x, 1)) * static_cast(curve->table_entries - 1); + int lo = (int) ix , + hi = (int)(float)minus_1_ulp(ix + 1.0f); + float t = ix - (float)lo; + + float l, h; + if (curve->table_8) { + l = curve->table_8[lo] * (1/255.0f); + h = curve->table_8[hi] * (1/255.0f); + } else { + uint16_t be_l, be_h; + memcpy(&be_l, curve->table_16 + 2*lo, 2); + memcpy(&be_h, curve->table_16 + 2*hi, 2); + uint16_t le_l = ((be_l << 8) | (be_l >> 8)) & 0xffff; + uint16_t le_h = ((be_h << 8) | (be_h >> 8)) & 0xffff; + l = le_l * (1/65535.0f); + h = le_h * (1/65535.0f); + } + return l + (h-l)*t; +} + +float skcms_MaxRoundtripError(const skcms_Curve* curve, const skcms_TransferFunction* inv_tf) { + uint32_t N = curve->table_entries > 256 ? curve->table_entries : 256; + const float dx = 1.0f / static_cast(N - 1); + float err = 0; + for (uint32_t i = 0; i < N; i++) { + float x = static_cast(i) * dx, + y = eval_curve(curve, x); + err = fmaxf_(err, fabsf_(x - skcms_TransferFunction_eval(inv_tf, y))); + } + return err; +} + +bool skcms_AreApproximateInverses(const skcms_Curve* curve, const skcms_TransferFunction* inv_tf) { + return skcms_MaxRoundtripError(curve, inv_tf) < (1/512.0f); +} + +// Additional ICC signature values that are only used internally +enum { + // File signature + skcms_Signature_acsp = 0x61637370, + + // Tag signatures + skcms_Signature_rTRC = 0x72545243, + skcms_Signature_gTRC = 0x67545243, + skcms_Signature_bTRC = 0x62545243, + skcms_Signature_kTRC = 0x6B545243, + + skcms_Signature_rXYZ = 0x7258595A, + skcms_Signature_gXYZ = 0x6758595A, + skcms_Signature_bXYZ = 0x6258595A, + + skcms_Signature_A2B0 = 0x41324230, + skcms_Signature_B2A0 = 0x42324130, + + skcms_Signature_CHAD = 0x63686164, + skcms_Signature_WTPT = 0x77747074, + + skcms_Signature_CICP = 0x63696370, + + // Type signatures + skcms_Signature_curv = 0x63757276, + skcms_Signature_mft1 = 0x6D667431, + skcms_Signature_mft2 = 0x6D667432, + skcms_Signature_mAB = 0x6D414220, + skcms_Signature_mBA = 0x6D424120, + skcms_Signature_para = 0x70617261, + skcms_Signature_sf32 = 0x73663332, + // XYZ is also a PCS signature, so it's defined in skcms.h + // skcms_Signature_XYZ = 0x58595A20, +}; + +static uint16_t read_big_u16(const uint8_t* ptr) { + uint16_t be; + memcpy(&be, ptr, sizeof(be)); +#if defined(_MSC_VER) + return _byteswap_ushort(be); +#else + return __builtin_bswap16(be); +#endif +} + +static uint32_t read_big_u32(const uint8_t* ptr) { + uint32_t be; + memcpy(&be, ptr, sizeof(be)); +#if defined(_MSC_VER) + return _byteswap_ulong(be); +#else + return __builtin_bswap32(be); +#endif +} + +static int32_t read_big_i32(const uint8_t* ptr) { + return (int32_t)read_big_u32(ptr); +} + +static float read_big_fixed(const uint8_t* ptr) { + return static_cast(read_big_i32(ptr)) * (1.0f / 65536.0f); +} + +// Maps to an in-memory profile so that fields line up to the locations specified +// in ICC.1:2010, section 7.2 +typedef struct { + uint8_t size [ 4]; + uint8_t cmm_type [ 4]; + uint8_t version [ 4]; + uint8_t profile_class [ 4]; + uint8_t data_color_space [ 4]; + uint8_t pcs [ 4]; + uint8_t creation_date_time [12]; + uint8_t signature [ 4]; + uint8_t platform [ 4]; + uint8_t flags [ 4]; + uint8_t device_manufacturer [ 4]; + uint8_t device_model [ 4]; + uint8_t device_attributes [ 8]; + uint8_t rendering_intent [ 4]; + uint8_t illuminant_X [ 4]; + uint8_t illuminant_Y [ 4]; + uint8_t illuminant_Z [ 4]; + uint8_t creator [ 4]; + uint8_t profile_id [16]; + uint8_t reserved [28]; + uint8_t tag_count [ 4]; // Technically not part of header, but required +} header_Layout; + +typedef struct { + uint8_t signature [4]; + uint8_t offset [4]; + uint8_t size [4]; +} tag_Layout; + +static const tag_Layout* get_tag_table(const skcms_ICCProfile* profile) { + return (const tag_Layout*)(profile->buffer + SAFE_SIZEOF(header_Layout)); +} + +// s15Fixed16ArrayType is technically variable sized, holding N values. However, the only valid +// use of the type is for the CHAD tag that stores exactly nine values. +typedef struct { + uint8_t type [ 4]; + uint8_t reserved [ 4]; + uint8_t values [36]; +} sf32_Layout; + +bool skcms_GetCHAD(const skcms_ICCProfile* profile, skcms_Matrix3x3* m) { + skcms_ICCTag tag; + if (!skcms_GetTagBySignature(profile, skcms_Signature_CHAD, &tag)) { + return false; + } + + if (tag.type != skcms_Signature_sf32 || tag.size < SAFE_SIZEOF(sf32_Layout)) { + return false; + } + + const sf32_Layout* sf32Tag = (const sf32_Layout*)tag.buf; + const uint8_t* values = sf32Tag->values; + for (int r = 0; r < 3; ++r) + for (int c = 0; c < 3; ++c, values += 4) { + m->vals[r][c] = read_big_fixed(values); + } + return true; +} + +// XYZType is technically variable sized, holding N XYZ triples. However, the only valid uses of +// the type are for tags/data that store exactly one triple. +typedef struct { + uint8_t type [4]; + uint8_t reserved [4]; + uint8_t X [4]; + uint8_t Y [4]; + uint8_t Z [4]; +} XYZ_Layout; + +static bool read_tag_xyz(const skcms_ICCTag* tag, float* x, float* y, float* z) { + if (tag->type != skcms_Signature_XYZ || tag->size < SAFE_SIZEOF(XYZ_Layout)) { + return false; + } + + const XYZ_Layout* xyzTag = (const XYZ_Layout*)tag->buf; + + *x = read_big_fixed(xyzTag->X); + *y = read_big_fixed(xyzTag->Y); + *z = read_big_fixed(xyzTag->Z); + return true; +} + +bool skcms_GetWTPT(const skcms_ICCProfile* profile, float xyz[3]) { + skcms_ICCTag tag; + return skcms_GetTagBySignature(profile, skcms_Signature_WTPT, &tag) && + read_tag_xyz(&tag, &xyz[0], &xyz[1], &xyz[2]); +} + +static int data_color_space_channel_count(uint32_t data_color_space) { + switch (data_color_space) { + case skcms_Signature_CMYK: return 4; + case skcms_Signature_Gray: return 1; + case skcms_Signature_RGB: return 3; + case skcms_Signature_Lab: return 3; + case skcms_Signature_XYZ: return 3; + case skcms_Signature_CIELUV: return 3; + case skcms_Signature_YCbCr: return 3; + case skcms_Signature_CIEYxy: return 3; + case skcms_Signature_HSV: return 3; + case skcms_Signature_HLS: return 3; + case skcms_Signature_CMY: return 3; + case skcms_Signature_2CLR: return 2; + case skcms_Signature_3CLR: return 3; + case skcms_Signature_4CLR: return 4; + case skcms_Signature_5CLR: return 5; + case skcms_Signature_6CLR: return 6; + case skcms_Signature_7CLR: return 7; + case skcms_Signature_8CLR: return 8; + case skcms_Signature_9CLR: return 9; + case skcms_Signature_10CLR: return 10; + case skcms_Signature_11CLR: return 11; + case skcms_Signature_12CLR: return 12; + case skcms_Signature_13CLR: return 13; + case skcms_Signature_14CLR: return 14; + case skcms_Signature_15CLR: return 15; + default: return -1; + } +} + +int skcms_GetInputChannelCount(const skcms_ICCProfile* profile) { + int a2b_count = 0; + if (profile->has_A2B) { + a2b_count = profile->A2B.input_channels != 0 + ? static_cast(profile->A2B.input_channels) + : 3; + } + + skcms_ICCTag tag; + int trc_count = 0; + if (skcms_GetTagBySignature(profile, skcms_Signature_kTRC, &tag)) { + trc_count = 1; + } else if (profile->has_trc) { + trc_count = 3; + } + + int dcs_count = data_color_space_channel_count(profile->data_color_space); + + if (dcs_count < 0) { + return -1; + } + + if (a2b_count > 0 && a2b_count != dcs_count) { + return -1; + } + if (trc_count > 0 && trc_count != dcs_count) { + return -1; + } + + return dcs_count; +} + +static bool read_to_XYZD50(const skcms_ICCTag* rXYZ, const skcms_ICCTag* gXYZ, + const skcms_ICCTag* bXYZ, skcms_Matrix3x3* toXYZ) { + return read_tag_xyz(rXYZ, &toXYZ->vals[0][0], &toXYZ->vals[1][0], &toXYZ->vals[2][0]) && + read_tag_xyz(gXYZ, &toXYZ->vals[0][1], &toXYZ->vals[1][1], &toXYZ->vals[2][1]) && + read_tag_xyz(bXYZ, &toXYZ->vals[0][2], &toXYZ->vals[1][2], &toXYZ->vals[2][2]); +} + +typedef struct { + uint8_t type [4]; + uint8_t reserved_a [4]; + uint8_t function_type [2]; + uint8_t reserved_b [2]; + uint8_t variable [1/*variable*/]; // 1, 3, 4, 5, or 7 s15.16, depending on function_type +} para_Layout; + +static bool read_curve_para(const uint8_t* buf, uint32_t size, + skcms_Curve* curve, uint32_t* curve_size) { + if (size < SAFE_FIXED_SIZE(para_Layout)) { + return false; + } + + const para_Layout* paraTag = (const para_Layout*)buf; + + enum { kG = 0, kGAB = 1, kGABC = 2, kGABCD = 3, kGABCDEF = 4 }; + uint16_t function_type = read_big_u16(paraTag->function_type); + if (function_type > kGABCDEF) { + return false; + } + + static const uint32_t curve_bytes[] = { 4, 12, 16, 20, 28 }; + if (size < SAFE_FIXED_SIZE(para_Layout) + curve_bytes[function_type]) { + return false; + } + + if (curve_size) { + *curve_size = SAFE_FIXED_SIZE(para_Layout) + curve_bytes[function_type]; + } + + curve->table_entries = 0; + curve->parametric.a = 1.0f; + curve->parametric.b = 0.0f; + curve->parametric.c = 0.0f; + curve->parametric.d = 0.0f; + curve->parametric.e = 0.0f; + curve->parametric.f = 0.0f; + curve->parametric.g = read_big_fixed(paraTag->variable); + + switch (function_type) { + case kGAB: + curve->parametric.a = read_big_fixed(paraTag->variable + 4); + curve->parametric.b = read_big_fixed(paraTag->variable + 8); + if (curve->parametric.a == 0) { + return false; + } + curve->parametric.d = -curve->parametric.b / curve->parametric.a; + break; + case kGABC: + curve->parametric.a = read_big_fixed(paraTag->variable + 4); + curve->parametric.b = read_big_fixed(paraTag->variable + 8); + curve->parametric.e = read_big_fixed(paraTag->variable + 12); + if (curve->parametric.a == 0) { + return false; + } + curve->parametric.d = -curve->parametric.b / curve->parametric.a; + curve->parametric.f = curve->parametric.e; + break; + case kGABCD: + curve->parametric.a = read_big_fixed(paraTag->variable + 4); + curve->parametric.b = read_big_fixed(paraTag->variable + 8); + curve->parametric.c = read_big_fixed(paraTag->variable + 12); + curve->parametric.d = read_big_fixed(paraTag->variable + 16); + break; + case kGABCDEF: + curve->parametric.a = read_big_fixed(paraTag->variable + 4); + curve->parametric.b = read_big_fixed(paraTag->variable + 8); + curve->parametric.c = read_big_fixed(paraTag->variable + 12); + curve->parametric.d = read_big_fixed(paraTag->variable + 16); + curve->parametric.e = read_big_fixed(paraTag->variable + 20); + curve->parametric.f = read_big_fixed(paraTag->variable + 24); + break; + } + return skcms_TransferFunction_isSRGBish(&curve->parametric); +} + +typedef struct { + uint8_t type [4]; + uint8_t reserved [4]; + uint8_t value_count [4]; + uint8_t variable [1/*variable*/]; // value_count, 8.8 if 1, uint16 (n*65535) if > 1 +} curv_Layout; + +// See https://crbug.com/492744328 for how this was determined. +static const uint32_t kMaxTableEntries = 1 << 24; // 16,777,216 + +static bool read_curve_curv(const uint8_t* buf, uint32_t size, + skcms_Curve* curve, uint32_t* curve_size) { + if (size < SAFE_FIXED_SIZE(curv_Layout)) { + return false; + } + + const curv_Layout* curvTag = (const curv_Layout*)buf; + + uint32_t value_count = read_big_u32(curvTag->value_count); + if (size < SAFE_FIXED_SIZE(curv_Layout) + value_count * SAFE_SIZEOF(uint16_t)) { + return false; + } + + if (curve_size) { + *curve_size = SAFE_FIXED_SIZE(curv_Layout) + value_count * SAFE_SIZEOF(uint16_t); + } + + if (value_count < 2) { + curve->table_entries = 0; + curve->parametric.a = 1.0f; + curve->parametric.b = 0.0f; + curve->parametric.c = 0.0f; + curve->parametric.d = 0.0f; + curve->parametric.e = 0.0f; + curve->parametric.f = 0.0f; + if (value_count == 0) { + // Empty tables are a shorthand for an identity curve + curve->parametric.g = 1.0f; + } else { + // Single entry tables are a shorthand for simple gamma + curve->parametric.g = read_big_u16(curvTag->variable) * (1.0f / 256.0f); + } + return true; + } + if (value_count > kMaxTableEntries) { + return false; + } + curve->table_8 = nullptr; + curve->table_16 = curvTag->variable; + curve->table_entries = value_count; + return true; +} + +// Parses both curveType and parametricCurveType data. Ensures that at most 'size' bytes are read. +// If curve_size is not nullptr, writes the number of bytes used by the curve in (*curve_size). +static bool read_curve(const uint8_t* buf, uint32_t size, + skcms_Curve* curve, uint32_t* curve_size) { + if (!buf || size < 4 || !curve) { + return false; + } + + uint32_t type = read_big_u32(buf); + if (type == skcms_Signature_para) { + return read_curve_para(buf, size, curve, curve_size); + } else if (type == skcms_Signature_curv) { + return read_curve_curv(buf, size, curve, curve_size); + } + + return false; +} + +// mft1 and mft2 share a large chunk of data +typedef struct { + uint8_t type [ 4]; + uint8_t reserved_a [ 4]; + uint8_t input_channels [ 1]; + uint8_t output_channels [ 1]; + uint8_t grid_points [ 1]; + uint8_t reserved_b [ 1]; + uint8_t matrix [36]; +} mft_CommonLayout; + +typedef struct { + mft_CommonLayout common [1]; + + uint8_t variable [1/*variable*/]; +} mft1_Layout; + +typedef struct { + mft_CommonLayout common [1]; + + uint8_t input_table_entries [2]; + uint8_t output_table_entries [2]; + uint8_t variable [1/*variable*/]; +} mft2_Layout; + +static bool read_mft_common(const mft_CommonLayout* mftTag, skcms_A2B* a2b) { + // MFT matrices are applied before the first set of curves, but must be identity unless the + // input is PCSXYZ. We don't support PCSXYZ profiles, so we ignore this matrix. Note that the + // matrix in skcms_A2B is applied later in the pipe, so supporting this would require another + // field/flag. + a2b->matrix_channels = 0; + a2b-> input_channels = mftTag-> input_channels[0]; + a2b->output_channels = mftTag->output_channels[0]; + + // We require exactly three (ie XYZ/Lab/RGB) output channels + if (a2b->output_channels != ARRAY_COUNT(a2b->output_curves)) { + return false; + } + // We require at least one, and no more than four (ie CMYK) input channels + if (a2b->input_channels < 1 || a2b->input_channels > ARRAY_COUNT(a2b->input_curves)) { + return false; + } + + uint64_t total_grid_points = 1; + for (uint32_t i = 0; i < a2b->input_channels; ++i) { + a2b->grid_points[i] = mftTag->grid_points[0]; + total_grid_points *= a2b->grid_points[i]; + } + // The grid only makes sense with at least two points along each axis + if (a2b->grid_points[0] < 2 || total_grid_points > SKCMS_MAX_GRID_POINTS) { + return false; + } + return true; +} + +// All as the A2B version above, except where noted. +static bool read_mft_common(const mft_CommonLayout* mftTag, skcms_B2A* b2a) { + // Same as A2B. + b2a->matrix_channels = 0; + b2a-> input_channels = mftTag-> input_channels[0]; + b2a->output_channels = mftTag->output_channels[0]; + + + // For B2A, exactly 3 input channels (XYZ) and 3 (RGB) or 4 (CMYK) output channels. + if (b2a->input_channels != ARRAY_COUNT(b2a->input_curves)) { + return false; + } + if (b2a->output_channels < 3 || b2a->output_channels > ARRAY_COUNT(b2a->output_curves)) { + return false; + } + + // Same as A2B. + uint64_t total_grid_points = 1; + for (uint32_t i = 0; i < b2a->input_channels; ++i) { + b2a->grid_points[i] = mftTag->grid_points[0]; + total_grid_points *= b2a->grid_points[i]; + } + if (b2a->grid_points[0] < 2 || total_grid_points > SKCMS_MAX_GRID_POINTS) { + return false; + } + return true; +} + +template +static bool init_tables(const uint8_t* table_base, uint64_t max_tables_len, uint32_t byte_width, + uint32_t input_table_entries, uint32_t output_table_entries, + A2B_or_B2A* out) { + // byte_width is 1 or 2, [input|output]_table_entries are in [2, 4096], so no overflow + uint32_t byte_len_per_input_table = input_table_entries * byte_width; + uint32_t byte_len_per_output_table = output_table_entries * byte_width; + + // [input|output]_channels are <= 4, so still no overflow + uint32_t byte_len_all_input_tables = out->input_channels * byte_len_per_input_table; + uint32_t byte_len_all_output_tables = out->output_channels * byte_len_per_output_table; + + uint64_t grid_size = out->output_channels * byte_width; + for (uint32_t axis = 0; axis < out->input_channels; ++axis) { + grid_size *= out->grid_points[axis]; + } + + if (max_tables_len < byte_len_all_input_tables + grid_size + byte_len_all_output_tables) { + return false; + } + + for (uint32_t i = 0; i < out->input_channels; ++i) { + out->input_curves[i].table_entries = input_table_entries; + if (byte_width == 1) { + out->input_curves[i].table_8 = table_base + i * byte_len_per_input_table; + out->input_curves[i].table_16 = nullptr; + } else { + out->input_curves[i].table_8 = nullptr; + out->input_curves[i].table_16 = table_base + i * byte_len_per_input_table; + } + } + + if (byte_width == 1) { + out->grid_8 = table_base + byte_len_all_input_tables; + out->grid_16 = nullptr; + } else { + out->grid_8 = nullptr; + out->grid_16 = table_base + byte_len_all_input_tables; + } + + const uint8_t* output_table_base = table_base + byte_len_all_input_tables + grid_size; + for (uint32_t i = 0; i < out->output_channels; ++i) { + out->output_curves[i].table_entries = output_table_entries; + if (byte_width == 1) { + out->output_curves[i].table_8 = output_table_base + i * byte_len_per_output_table; + out->output_curves[i].table_16 = nullptr; + } else { + out->output_curves[i].table_8 = nullptr; + out->output_curves[i].table_16 = output_table_base + i * byte_len_per_output_table; + } + } + + return true; +} + +template +static bool read_tag_mft1(const skcms_ICCTag* tag, A2B_or_B2A* out) { + if (tag->size < SAFE_FIXED_SIZE(mft1_Layout)) { + return false; + } + + const mft1_Layout* mftTag = (const mft1_Layout*)tag->buf; + if (!read_mft_common(mftTag->common, out)) { + return false; + } + + uint32_t input_table_entries = 256; + uint32_t output_table_entries = 256; + + return init_tables(mftTag->variable, tag->size - SAFE_FIXED_SIZE(mft1_Layout), 1, + input_table_entries, output_table_entries, out); +} + +template +static bool read_tag_mft2(const skcms_ICCTag* tag, A2B_or_B2A* out) { + if (tag->size < SAFE_FIXED_SIZE(mft2_Layout)) { + return false; + } + + const mft2_Layout* mftTag = (const mft2_Layout*)tag->buf; + if (!read_mft_common(mftTag->common, out)) { + return false; + } + + uint32_t input_table_entries = read_big_u16(mftTag->input_table_entries); + uint32_t output_table_entries = read_big_u16(mftTag->output_table_entries); + + // ICC spec mandates that 2 <= table_entries <= 4096 + if (input_table_entries < 2 || input_table_entries > 4096 || + output_table_entries < 2 || output_table_entries > 4096) { + return false; + } + + return init_tables(mftTag->variable, tag->size - SAFE_FIXED_SIZE(mft2_Layout), 2, + input_table_entries, output_table_entries, out); +} + +static bool read_curves(const uint8_t* buf, uint32_t size, uint32_t curve_offset, + uint32_t num_curves, skcms_Curve* curves) { + for (uint32_t i = 0; i < num_curves; ++i) { + if (curve_offset > size) { + return false; + } + + uint32_t curve_bytes; + if (!read_curve(buf + curve_offset, size - curve_offset, &curves[i], &curve_bytes)) { + return false; + } + + if (curve_bytes > UINT32_MAX - 3) { + return false; + } + curve_bytes = (curve_bytes + 3) & ~3U; + + uint64_t new_offset_64 = (uint64_t)curve_offset + curve_bytes; + curve_offset = (uint32_t)new_offset_64; + if (new_offset_64 != curve_offset) { + return false; + } + } + + return true; +} + +// mAB and mBA tags use the same encoding, including color lookup tables. +typedef struct { + uint8_t type [ 4]; + uint8_t reserved_a [ 4]; + uint8_t input_channels [ 1]; + uint8_t output_channels [ 1]; + uint8_t reserved_b [ 2]; + uint8_t b_curve_offset [ 4]; + uint8_t matrix_offset [ 4]; + uint8_t m_curve_offset [ 4]; + uint8_t clut_offset [ 4]; + uint8_t a_curve_offset [ 4]; +} mAB_or_mBA_Layout; + +typedef struct { + uint8_t grid_points [16]; + uint8_t grid_byte_width [ 1]; + uint8_t reserved [ 3]; + uint8_t variable [1/*variable*/]; +} CLUT_Layout; + +static bool read_tag_mab(const skcms_ICCTag* tag, skcms_A2B* a2b, bool pcs_is_xyz, + const uint8_t* endOfBuffer) { + if (tag->size < SAFE_SIZEOF(mAB_or_mBA_Layout)) { + return false; + } + + const mAB_or_mBA_Layout* mABTag = (const mAB_or_mBA_Layout*)tag->buf; + + a2b->input_channels = mABTag->input_channels[0]; + a2b->output_channels = mABTag->output_channels[0]; + + // We require exactly three (ie XYZ/Lab/RGB) output channels + if (a2b->output_channels != ARRAY_COUNT(a2b->output_curves)) { + return false; + } + // We require no more than four (ie CMYK) input channels + if (a2b->input_channels > ARRAY_COUNT(a2b->input_curves)) { + return false; + } + + uint32_t b_curve_offset = read_big_u32(mABTag->b_curve_offset); + uint32_t matrix_offset = read_big_u32(mABTag->matrix_offset); + uint32_t m_curve_offset = read_big_u32(mABTag->m_curve_offset); + uint32_t clut_offset = read_big_u32(mABTag->clut_offset); + uint32_t a_curve_offset = read_big_u32(mABTag->a_curve_offset); + + // "B" curves must be present + if (0 == b_curve_offset) { + return false; + } + + if (!read_curves(tag->buf, tag->size, b_curve_offset, a2b->output_channels, + a2b->output_curves)) { + return false; + } + + // "M" curves and Matrix must be used together + if (0 != m_curve_offset) { + if (0 == matrix_offset) { + return false; + } + a2b->matrix_channels = a2b->output_channels; + if (!read_curves(tag->buf, tag->size, m_curve_offset, a2b->matrix_channels, + a2b->matrix_curves)) { + return false; + } + + // Read matrix, which is stored as a row-major 3x3, followed by the fourth column + if (tag->size < matrix_offset + 12 * SAFE_SIZEOF(uint32_t)) { + return false; + } + float encoding_factor = pcs_is_xyz ? (65535 / 32768.0f) : 1.0f; + const uint8_t* mtx_buf = tag->buf + matrix_offset; + a2b->matrix.vals[0][0] = encoding_factor * read_big_fixed(mtx_buf + 0); + a2b->matrix.vals[0][1] = encoding_factor * read_big_fixed(mtx_buf + 4); + a2b->matrix.vals[0][2] = encoding_factor * read_big_fixed(mtx_buf + 8); + a2b->matrix.vals[1][0] = encoding_factor * read_big_fixed(mtx_buf + 12); + a2b->matrix.vals[1][1] = encoding_factor * read_big_fixed(mtx_buf + 16); + a2b->matrix.vals[1][2] = encoding_factor * read_big_fixed(mtx_buf + 20); + a2b->matrix.vals[2][0] = encoding_factor * read_big_fixed(mtx_buf + 24); + a2b->matrix.vals[2][1] = encoding_factor * read_big_fixed(mtx_buf + 28); + a2b->matrix.vals[2][2] = encoding_factor * read_big_fixed(mtx_buf + 32); + a2b->matrix.vals[0][3] = encoding_factor * read_big_fixed(mtx_buf + 36); + a2b->matrix.vals[1][3] = encoding_factor * read_big_fixed(mtx_buf + 40); + a2b->matrix.vals[2][3] = encoding_factor * read_big_fixed(mtx_buf + 44); + } else { + if (0 != matrix_offset) { + return false; + } + a2b->matrix_channels = 0; + } + + // "A" curves and CLUT must be used together + if (0 != a_curve_offset) { + if (0 == clut_offset) { + return false; + } + if (!read_curves(tag->buf, tag->size, a_curve_offset, a2b->input_channels, + a2b->input_curves)) { + return false; + } + + if (tag->size < clut_offset + SAFE_FIXED_SIZE(CLUT_Layout)) { + return false; + } + const CLUT_Layout* clut = (const CLUT_Layout*)(tag->buf + clut_offset); + + if (clut->grid_byte_width[0] == 1) { + a2b->grid_8 = clut->variable; + a2b->grid_16 = nullptr; + } else if (clut->grid_byte_width[0] == 2) { + a2b->grid_8 = nullptr; + a2b->grid_16 = clut->variable; + } else { + return false; + } + + uint64_t grid_size = a2b->output_channels * clut->grid_byte_width[0]; // the payload + uint64_t total_grid_points = 1; + for (uint32_t i = 0; i < a2b->input_channels; ++i) { + a2b->grid_points[i] = clut->grid_points[i]; + // The grid only makes sense with at least two points along each axis + if (a2b->grid_points[i] < 2) { + return false; + } + grid_size *= a2b->grid_points[i]; + total_grid_points *= a2b->grid_points[i]; + } + + if (total_grid_points > SKCMS_MAX_GRID_POINTS) { + return false; + } + + const uint64_t table_size = clut_offset + SAFE_FIXED_SIZE(CLUT_Layout) + grid_size; + if (table_size > tag->size) { + return false; + } + + // gather_24 and gather_48 read 1 or 2 extra bytes. + // We must ensure that those extra bytes are within the provided buffer limit. + uint32_t slack = 0; + if (a2b->output_channels == 3) { + slack = clut->grid_byte_width[0] == 1 ? 1 : 2; + } + if (tag->buf + table_size + slack > endOfBuffer) { + return false; + } + } else { + if (0 != clut_offset) { + return false; + } + + // If there is no CLUT, the number of input and output channels must match + if (a2b->input_channels != a2b->output_channels) { + return false; + } + + // Zero out the number of input channels to signal that we're skipping this stage + a2b->input_channels = 0; + } + + return true; +} + +// Exactly the same as read_tag_mab(), except where there are comments. +// TODO: refactor the two to eliminate common code? +static bool read_tag_mba(const skcms_ICCTag* tag, skcms_B2A* b2a, bool pcs_is_xyz, + const uint8_t* endOfBuffer) { + if (tag->size < SAFE_SIZEOF(mAB_or_mBA_Layout)) { + return false; + } + + const mAB_or_mBA_Layout* mBATag = (const mAB_or_mBA_Layout*)tag->buf; + + b2a->input_channels = mBATag->input_channels[0]; + b2a->output_channels = mBATag->output_channels[0]; + + // Require exactly 3 inputs (XYZ) and 3 (RGB) or 4 (CMYK) outputs. + if (b2a->input_channels != ARRAY_COUNT(b2a->input_curves)) { + return false; + } + if (b2a->output_channels < 3 || b2a->output_channels > ARRAY_COUNT(b2a->output_curves)) { + return false; + } + + uint32_t b_curve_offset = read_big_u32(mBATag->b_curve_offset); + uint32_t matrix_offset = read_big_u32(mBATag->matrix_offset); + uint32_t m_curve_offset = read_big_u32(mBATag->m_curve_offset); + uint32_t clut_offset = read_big_u32(mBATag->clut_offset); + uint32_t a_curve_offset = read_big_u32(mBATag->a_curve_offset); + + if (0 == b_curve_offset) { + return false; + } + + // "B" curves are our inputs, not outputs. + if (!read_curves(tag->buf, tag->size, b_curve_offset, b2a->input_channels, + b2a->input_curves)) { + return false; + } + + if (0 != m_curve_offset) { + if (0 == matrix_offset) { + return false; + } + // Matrix channels is tied to input_channels (3), not output_channels. + b2a->matrix_channels = b2a->input_channels; + + if (!read_curves(tag->buf, tag->size, m_curve_offset, b2a->matrix_channels, + b2a->matrix_curves)) { + return false; + } + + if (tag->size < matrix_offset + 12 * SAFE_SIZEOF(uint32_t)) { + return false; + } + float encoding_factor = pcs_is_xyz ? (32768 / 65535.0f) : 1.0f; // TODO: understand + const uint8_t* mtx_buf = tag->buf + matrix_offset; + b2a->matrix.vals[0][0] = encoding_factor * read_big_fixed(mtx_buf + 0); + b2a->matrix.vals[0][1] = encoding_factor * read_big_fixed(mtx_buf + 4); + b2a->matrix.vals[0][2] = encoding_factor * read_big_fixed(mtx_buf + 8); + b2a->matrix.vals[1][0] = encoding_factor * read_big_fixed(mtx_buf + 12); + b2a->matrix.vals[1][1] = encoding_factor * read_big_fixed(mtx_buf + 16); + b2a->matrix.vals[1][2] = encoding_factor * read_big_fixed(mtx_buf + 20); + b2a->matrix.vals[2][0] = encoding_factor * read_big_fixed(mtx_buf + 24); + b2a->matrix.vals[2][1] = encoding_factor * read_big_fixed(mtx_buf + 28); + b2a->matrix.vals[2][2] = encoding_factor * read_big_fixed(mtx_buf + 32); + b2a->matrix.vals[0][3] = encoding_factor * read_big_fixed(mtx_buf + 36); + b2a->matrix.vals[1][3] = encoding_factor * read_big_fixed(mtx_buf + 40); + b2a->matrix.vals[2][3] = encoding_factor * read_big_fixed(mtx_buf + 44); + } else { + if (0 != matrix_offset) { + return false; + } + b2a->matrix_channels = 0; + } + + if (0 != a_curve_offset) { + if (0 == clut_offset) { + return false; + } + + // "A" curves are our output, not input. + if (!read_curves(tag->buf, tag->size, a_curve_offset, b2a->output_channels, + b2a->output_curves)) { + return false; + } + + if (tag->size < clut_offset + SAFE_FIXED_SIZE(CLUT_Layout)) { + return false; + } + const CLUT_Layout* clut = (const CLUT_Layout*)(tag->buf + clut_offset); + + if (clut->grid_byte_width[0] == 1) { + b2a->grid_8 = clut->variable; + b2a->grid_16 = nullptr; + } else if (clut->grid_byte_width[0] == 2) { + b2a->grid_8 = nullptr; + b2a->grid_16 = clut->variable; + } else { + return false; + } + + uint64_t grid_size = b2a->output_channels * clut->grid_byte_width[0]; + uint64_t total_grid_points = 1; + for (uint32_t i = 0; i < b2a->input_channels; ++i) { + b2a->grid_points[i] = clut->grid_points[i]; + if (b2a->grid_points[i] < 2) { + return false; + } + grid_size *= b2a->grid_points[i]; + total_grid_points *= b2a->grid_points[i]; + } + + if (total_grid_points > SKCMS_MAX_GRID_POINTS) { + return false; + } + + if (tag->size < clut_offset + SAFE_FIXED_SIZE(CLUT_Layout) + grid_size) { + return false; + } + + // gather_24 and gather_48 read 1 or 2 extra bytes. + // We must ensure that those extra bytes are within the provided buffer limit. + uint32_t slack = 0; + if (b2a->output_channels == 3) { + slack = clut->grid_byte_width[0] == 1 ? 1 : 2; + } + if (tag->buf + clut_offset + SAFE_FIXED_SIZE(CLUT_Layout) + grid_size + slack > endOfBuffer) { + return false; + } + } else { + if (0 != clut_offset) { + return false; + } + + if (b2a->input_channels != b2a->output_channels) { + return false; + } + + // Zero out *output* channels to skip this stage. + b2a->output_channels = 0; + } + return true; +} + +// If you pass f, we'll fit a possibly-non-zero value for *f. +// If you pass nullptr, we'll assume you want *f to be treated as zero. +static int fit_linear(const skcms_Curve* curve, int N, float tol, + float* c, float* d, float* f = nullptr) { + assert(N > 1); + // We iteratively fit the first points to the TF's linear piece. + // We want the cx + f line to pass through the first and last points we fit exactly. + // + // As we walk along the points we find the minimum and maximum slope of the line before the + // error would exceed our tolerance. We stop when the range [slope_min, slope_max] becomes + // emtpy, when we definitely can't add any more points. + // + // Some points' error intervals may intersect the running interval but not lie fully + // within it. So we keep track of the last point we saw that is a valid end point candidate, + // and once the search is done, back up to build the line through *that* point. + const float dx = 1.0f / static_cast(N - 1); + + int lin_points = 1; + + float f_zero = 0.0f; + if (f) { + *f = eval_curve(curve, 0); + } else { + f = &f_zero; + } + + + float slope_min = -INFINITY_; + float slope_max = +INFINITY_; + for (int i = 1; i < N; ++i) { + float x = static_cast(i) * dx; + float y = eval_curve(curve, x); + + float slope_max_i = (y + tol - *f) / x, + slope_min_i = (y - tol - *f) / x; + if (slope_max_i < slope_min || slope_max < slope_min_i) { + // Slope intervals would no longer overlap. + break; + } + slope_max = fminf_(slope_max, slope_max_i); + slope_min = fmaxf_(slope_min, slope_min_i); + + float cur_slope = (y - *f) / x; + if (slope_min <= cur_slope && cur_slope <= slope_max) { + lin_points = i + 1; + *c = cur_slope; + } + } + + // Set D to the last point that met our tolerance. + *d = static_cast(lin_points - 1) * dx; + return lin_points; +} + +// If this skcms_Curve holds an identity table, rewrite it as an identity skcms_TransferFunction. +static void canonicalize_identity(skcms_Curve* curve) { + if (curve->table_entries && curve->table_entries <= (uint32_t)INT_MAX) { + int N = (int)curve->table_entries; + + float c = 0.0f, d = 0.0f, f = 0.0f; + if (N == fit_linear(curve, N, 1.0f/static_cast(2*N), &c,&d,&f) + && c == 1.0f + && f == 0.0f) { + curve->table_entries = 0; + curve->table_8 = nullptr; + curve->table_16 = nullptr; + curve->parametric = skcms_TransferFunction{1,1,0,0,0,0,0}; + } + } +} + +static bool read_a2b(const skcms_ICCTag* tag, skcms_A2B* a2b, bool pcs_is_xyz, const uint8_t* eob) { + bool ok = false; + if (tag->type == skcms_Signature_mft1) { ok = read_tag_mft1(tag, a2b); } + if (tag->type == skcms_Signature_mft2) { ok = read_tag_mft2(tag, a2b); } + if (tag->type == skcms_Signature_mAB ) { ok = read_tag_mab(tag, a2b, pcs_is_xyz, eob); } + if (!ok) { + return false; + } + + if (a2b->input_channels > 0) { canonicalize_identity(a2b->input_curves + 0); } + if (a2b->input_channels > 1) { canonicalize_identity(a2b->input_curves + 1); } + if (a2b->input_channels > 2) { canonicalize_identity(a2b->input_curves + 2); } + if (a2b->input_channels > 3) { canonicalize_identity(a2b->input_curves + 3); } + + if (a2b->matrix_channels > 0) { canonicalize_identity(a2b->matrix_curves + 0); } + if (a2b->matrix_channels > 1) { canonicalize_identity(a2b->matrix_curves + 1); } + if (a2b->matrix_channels > 2) { canonicalize_identity(a2b->matrix_curves + 2); } + + if (a2b->output_channels > 0) { canonicalize_identity(a2b->output_curves + 0); } + if (a2b->output_channels > 1) { canonicalize_identity(a2b->output_curves + 1); } + if (a2b->output_channels > 2) { canonicalize_identity(a2b->output_curves + 2); } + + return true; +} + +static bool read_b2a(const skcms_ICCTag* tag, skcms_B2A* b2a, bool pcs_is_xyz, const uint8_t* eob) { + bool ok = false; + if (tag->type == skcms_Signature_mft1) { ok = read_tag_mft1(tag, b2a); } + if (tag->type == skcms_Signature_mft2) { ok = read_tag_mft2(tag, b2a); } + if (tag->type == skcms_Signature_mBA ) { ok = read_tag_mba(tag, b2a, pcs_is_xyz, eob); } + if (!ok) { + return false; + } + + if (b2a->input_channels > 0) { canonicalize_identity(b2a->input_curves + 0); } + if (b2a->input_channels > 1) { canonicalize_identity(b2a->input_curves + 1); } + if (b2a->input_channels > 2) { canonicalize_identity(b2a->input_curves + 2); } + + if (b2a->matrix_channels > 0) { canonicalize_identity(b2a->matrix_curves + 0); } + if (b2a->matrix_channels > 1) { canonicalize_identity(b2a->matrix_curves + 1); } + if (b2a->matrix_channels > 2) { canonicalize_identity(b2a->matrix_curves + 2); } + + if (b2a->output_channels > 0) { canonicalize_identity(b2a->output_curves + 0); } + if (b2a->output_channels > 1) { canonicalize_identity(b2a->output_curves + 1); } + if (b2a->output_channels > 2) { canonicalize_identity(b2a->output_curves + 2); } + if (b2a->output_channels > 3) { canonicalize_identity(b2a->output_curves + 3); } + + return true; +} + +typedef struct { + uint8_t type [4]; + uint8_t reserved [4]; + uint8_t color_primaries [1]; + uint8_t transfer_characteristics [1]; + uint8_t matrix_coefficients [1]; + uint8_t video_full_range_flag [1]; +} CICP_Layout; + +static bool read_cicp(const skcms_ICCTag* tag, skcms_CICP* cicp) { + if (tag->type != skcms_Signature_CICP || tag->size < SAFE_SIZEOF(CICP_Layout)) { + return false; + } + + const CICP_Layout* cicpTag = (const CICP_Layout*)tag->buf; + + cicp->color_primaries = cicpTag->color_primaries[0]; + cicp->transfer_characteristics = cicpTag->transfer_characteristics[0]; + cicp->matrix_coefficients = cicpTag->matrix_coefficients[0]; + cicp->video_full_range_flag = cicpTag->video_full_range_flag[0]; + return true; +} + +void skcms_GetTagByIndex(const skcms_ICCProfile* profile, uint32_t idx, skcms_ICCTag* tag) { + if (!profile || !profile->buffer || !tag) { return; } + if (idx > profile->tag_count) { return; } + const tag_Layout* tags = get_tag_table(profile); + tag->signature = read_big_u32(tags[idx].signature); + tag->size = read_big_u32(tags[idx].size); + tag->buf = read_big_u32(tags[idx].offset) + profile->buffer; + tag->type = read_big_u32(tag->buf); +} + +bool skcms_GetTagBySignature(const skcms_ICCProfile* profile, uint32_t sig, skcms_ICCTag* tag) { + if (!profile || !profile->buffer || !tag) { return false; } + const tag_Layout* tags = get_tag_table(profile); + for (uint32_t i = 0; i < profile->tag_count; ++i) { + if (read_big_u32(tags[i].signature) == sig) { + tag->signature = sig; + tag->size = read_big_u32(tags[i].size); + tag->buf = read_big_u32(tags[i].offset) + profile->buffer; + tag->type = read_big_u32(tag->buf); + return true; + } + } + return false; +} + +static bool usable_as_src(const skcms_ICCProfile* profile) { + return profile->has_A2B + || (profile->has_trc && profile->has_toXYZD50); +} + +bool skcms_ParseWithA2BPriority(const void* buf, size_t len, + const int priority[], const int priorities, + skcms_ICCProfile* profile) { + static_assert(SAFE_SIZEOF(header_Layout) == 132, "need to update header code"); + + if (!profile) { + return false; + } + memset(profile, 0, SAFE_SIZEOF(*profile)); + + if (len < SAFE_SIZEOF(header_Layout)) { + return false; + } + + // Byte-swap all header fields + const header_Layout* header = (const header_Layout*)buf; + profile->buffer = (const uint8_t*)buf; + profile->size = read_big_u32(header->size); + uint32_t version = read_big_u32(header->version); + profile->data_color_space = read_big_u32(header->data_color_space); + profile->pcs = read_big_u32(header->pcs); + uint32_t signature = read_big_u32(header->signature); + float illuminant_X = read_big_fixed(header->illuminant_X); + float illuminant_Y = read_big_fixed(header->illuminant_Y); + float illuminant_Z = read_big_fixed(header->illuminant_Z); + profile->tag_count = read_big_u32(header->tag_count); + + // Validate signature, size (smaller than buffer, large enough to hold tag table), + // and major version + uint64_t tag_table_size = profile->tag_count * SAFE_SIZEOF(tag_Layout); + if (signature != skcms_Signature_acsp || + profile->size > len || + profile->size < SAFE_SIZEOF(header_Layout) + tag_table_size || + (version >> 24) > 4) { + return false; + } + + // Validate that illuminant is D50 white + if (fabsf_(illuminant_X - 0.9642f) > 0.0100f || + fabsf_(illuminant_Y - 1.0000f) > 0.0100f || + fabsf_(illuminant_Z - 0.8249f) > 0.0100f) { + return false; + } + + // Validate that all tag entries have sane offset + size + const tag_Layout* tags = get_tag_table(profile); + for (uint32_t i = 0; i < profile->tag_count; ++i) { + uint32_t tag_offset = read_big_u32(tags[i].offset); + uint32_t tag_size = read_big_u32(tags[i].size); + uint64_t tag_end = (uint64_t)tag_offset + (uint64_t)tag_size; + if (tag_size < 4 || tag_end > profile->size) { + return false; + } + } + + if (profile->pcs != skcms_Signature_XYZ && profile->pcs != skcms_Signature_Lab) { + return false; + } + + bool pcs_is_xyz = profile->pcs == skcms_Signature_XYZ; + + // Pre-parse commonly used tags. + skcms_ICCTag kTRC; + if (profile->data_color_space == skcms_Signature_Gray && + skcms_GetTagBySignature(profile, skcms_Signature_kTRC, &kTRC)) { + if (!read_curve(kTRC.buf, kTRC.size, &profile->trc[0], nullptr)) { + // Malformed tag + return false; + } + profile->trc[1] = profile->trc[0]; + profile->trc[2] = profile->trc[0]; + profile->has_trc = true; + + if (pcs_is_xyz) { + profile->toXYZD50.vals[0][0] = illuminant_X; + profile->toXYZD50.vals[1][1] = illuminant_Y; + profile->toXYZD50.vals[2][2] = illuminant_Z; + profile->has_toXYZD50 = true; + } + } else { + skcms_ICCTag rTRC, gTRC, bTRC; + if (skcms_GetTagBySignature(profile, skcms_Signature_rTRC, &rTRC) && + skcms_GetTagBySignature(profile, skcms_Signature_gTRC, &gTRC) && + skcms_GetTagBySignature(profile, skcms_Signature_bTRC, &bTRC)) { + if (!read_curve(rTRC.buf, rTRC.size, &profile->trc[0], nullptr) || + !read_curve(gTRC.buf, gTRC.size, &profile->trc[1], nullptr) || + !read_curve(bTRC.buf, bTRC.size, &profile->trc[2], nullptr)) { + // Malformed TRC tags + return false; + } + profile->has_trc = true; + } + + skcms_ICCTag rXYZ, gXYZ, bXYZ; + if (skcms_GetTagBySignature(profile, skcms_Signature_rXYZ, &rXYZ) && + skcms_GetTagBySignature(profile, skcms_Signature_gXYZ, &gXYZ) && + skcms_GetTagBySignature(profile, skcms_Signature_bXYZ, &bXYZ)) { + if (!read_to_XYZD50(&rXYZ, &gXYZ, &bXYZ, &profile->toXYZD50)) { + // Malformed XYZ tags + return false; + } + profile->has_toXYZD50 = true; + } + } + + const uint8_t* endOfBuffer = (const uint8_t*)buf + len; + for (int i = 0; i < priorities; i++) { + // enum { perceptual, relative_colormetric, saturation } + if (priority[i] < 0 || priority[i] > 2) { + return false; + } + uint32_t sig = skcms_Signature_A2B0 + static_cast(priority[i]); + skcms_ICCTag tag; + if (skcms_GetTagBySignature(profile, sig, &tag)) { + if (!read_a2b(&tag, &profile->A2B, pcs_is_xyz, endOfBuffer)) { + // Malformed A2B tag + return false; + } + profile->has_A2B = true; + break; + } + } + + for (int i = 0; i < priorities; i++) { + // enum { perceptual, relative_colormetric, saturation } + if (priority[i] < 0 || priority[i] > 2) { + return false; + } + uint32_t sig = skcms_Signature_B2A0 + static_cast(priority[i]); + skcms_ICCTag tag; + if (skcms_GetTagBySignature(profile, sig, &tag)) { + if (!read_b2a(&tag, &profile->B2A, pcs_is_xyz, endOfBuffer)) { + // Malformed B2A tag + return false; + } + profile->has_B2A = true; + break; + } + } + + skcms_ICCTag cicp_tag; + if (skcms_GetTagBySignature(profile, skcms_Signature_CICP, &cicp_tag)) { + if (!read_cicp(&cicp_tag, &profile->CICP)) { + // Malformed CICP tag + return false; + } + profile->has_CICP = true; + } + + return usable_as_src(profile); +} + + +const skcms_ICCProfile* skcms_sRGB_profile() { + static const skcms_ICCProfile sRGB_profile = { + nullptr, // buffer, moot here + + 0, // size, moot here + skcms_Signature_RGB, // data_color_space + skcms_Signature_XYZ, // pcs + 0, // tag count, moot here + + // We choose to represent sRGB with its canonical transfer function, + // and with its canonical XYZD50 gamut matrix. + { // the 3 trc curves + {{0, {2.4f, (float)(1/1.055), (float)(0.055/1.055), (float)(1/12.92), 0.04045f, 0, 0}}}, + {{0, {2.4f, (float)(1/1.055), (float)(0.055/1.055), (float)(1/12.92), 0.04045f, 0, 0}}}, + {{0, {2.4f, (float)(1/1.055), (float)(0.055/1.055), (float)(1/12.92), 0.04045f, 0, 0}}}, + }, + + {{ // 3x3 toXYZD50 matrix + { 0.436065674f, 0.385147095f, 0.143066406f }, + { 0.222488403f, 0.716873169f, 0.060607910f }, + { 0.013916016f, 0.097076416f, 0.714096069f }, + }}, + + { // an empty A2B + { // input_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + nullptr, // grid_8 + nullptr, // grid_16 + 0, // input_channels + {0,0,0,0}, // grid_points + + { // matrix_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + {{ // matrix (3x4) + { 0,0,0,0 }, + { 0,0,0,0 }, + { 0,0,0,0 }, + }}, + 0, // matrix_channels + + 0, // output_channels + { // output_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + }, + + { // an empty B2A + { // input_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + 0, // input_channels + + 0, // matrix_channels + { // matrix_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + {{ // matrix (3x4) + { 0,0,0,0 }, + { 0,0,0,0 }, + { 0,0,0,0 }, + }}, + + { // output_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + nullptr, // grid_8 + nullptr, // grid_16 + {0,0,0,0}, // grid_points + 0, // output_channels + }, + + { 0, 0, 0, 0 }, // an empty CICP + + true, // has_trc + true, // has_toXYZD50 + false, // has_A2B + false, // has B2A + false, // has_CICP + }; + return &sRGB_profile; +} + +const skcms_ICCProfile* skcms_XYZD50_profile() { + // Just like sRGB above, but with identity transfer functions and toXYZD50 matrix. + static const skcms_ICCProfile XYZD50_profile = { + nullptr, // buffer, moot here + + 0, // size, moot here + skcms_Signature_RGB, // data_color_space + skcms_Signature_XYZ, // pcs + 0, // tag count, moot here + + { // the 3 trc curves + {{0, {1,1, 0,0,0,0,0}}}, + {{0, {1,1, 0,0,0,0,0}}}, + {{0, {1,1, 0,0,0,0,0}}}, + }, + + {{ // 3x3 toXYZD50 matrix + { 1,0,0 }, + { 0,1,0 }, + { 0,0,1 }, + }}, + + { // an empty A2B + { // input_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + nullptr, // grid_8 + nullptr, // grid_16 + 0, // input_channels + {0,0,0,0}, // grid_points + + { // matrix_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + {{ // matrix (3x4) + { 0,0,0,0 }, + { 0,0,0,0 }, + { 0,0,0,0 }, + }}, + 0, // matrix_channels + + 0, // output_channels + { // output_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + }, + + { // an empty B2A + { // input_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + 0, // input_channels + + 0, // matrix_channels + { // matrix_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + {{ // matrix (3x4) + { 0,0,0,0 }, + { 0,0,0,0 }, + { 0,0,0,0 }, + }}, + + { // output_curves + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + {{0, {0,0, 0,0,0,0,0}}}, + }, + nullptr, // grid_8 + nullptr, // grid_16 + {0,0,0,0}, // grid_points + 0, // output_channels + }, + + { 0, 0, 0, 0 }, // an empty CICP + + true, // has_trc + true, // has_toXYZD50 + false, // has_A2B + false, // has B2A + false, // has_CICP + }; + + return &XYZD50_profile; +} + +const skcms_TransferFunction* skcms_sRGB_TransferFunction() { + return &skcms_sRGB_profile()->trc[0].parametric; +} + +const skcms_TransferFunction* skcms_sRGB_Inverse_TransferFunction() { + static const skcms_TransferFunction sRGB_inv = + {0.416666657f, 1.137283325f, -0.0f, 12.920000076f, 0.003130805f, -0.054969788f, -0.0f}; + return &sRGB_inv; +} + +const skcms_TransferFunction* skcms_Identity_TransferFunction() { + static const skcms_TransferFunction identity = {1,1,0,0,0,0,0}; + return &identity; +} + +const uint8_t skcms_252_random_bytes[] = { + 8, 179, 128, 204, 253, 38, 134, 184, 68, 102, 32, 138, 99, 39, 169, 215, + 119, 26, 3, 223, 95, 239, 52, 132, 114, 74, 81, 234, 97, 116, 244, 205, 30, + 154, 173, 12, 51, 159, 122, 153, 61, 226, 236, 178, 229, 55, 181, 220, 191, + 194, 160, 126, 168, 82, 131, 18, 180, 245, 163, 22, 246, 69, 235, 252, 57, + 108, 14, 6, 152, 240, 255, 171, 242, 20, 227, 177, 238, 96, 85, 16, 211, + 70, 200, 149, 155, 146, 127, 145, 100, 151, 109, 19, 165, 208, 195, 164, + 137, 254, 182, 248, 64, 201, 45, 209, 5, 147, 207, 210, 113, 162, 83, 225, + 9, 31, 15, 231, 115, 37, 58, 53, 24, 49, 197, 56, 120, 172, 48, 21, 214, + 129, 111, 11, 50, 187, 196, 34, 60, 103, 71, 144, 47, 203, 77, 80, 232, + 140, 222, 250, 206, 166, 247, 139, 249, 221, 72, 106, 27, 199, 117, 54, + 219, 135, 118, 40, 79, 41, 251, 46, 93, 212, 92, 233, 148, 28, 121, 63, + 123, 158, 105, 59, 29, 42, 143, 23, 0, 107, 176, 87, 104, 183, 156, 193, + 189, 90, 188, 65, 190, 17, 198, 7, 186, 161, 1, 124, 78, 125, 170, 133, + 174, 218, 67, 157, 75, 101, 89, 217, 62, 33, 141, 228, 25, 35, 91, 230, 4, + 2, 13, 73, 86, 167, 237, 84, 243, 44, 185, 66, 130, 110, 150, 142, 216, 88, + 112, 36, 224, 136, 202, 76, 94, 98, 175, 213 +}; + +bool skcms_ApproximatelyEqualProfiles(const skcms_ICCProfile* A, const skcms_ICCProfile* B) { + // Test for exactly equal profiles first. + if (A == B || 0 == memcmp(A,B, sizeof(skcms_ICCProfile))) { + return true; + } + + // For now this is the essentially the same strategy we use in test_only.c + // for our skcms_Transform() smoke tests: + // 1) transform A to XYZD50 + // 2) transform B to XYZD50 + // 3) return true if they're similar enough + // Our current criterion in 3) is maximum 1 bit error per XYZD50 byte. + + // skcms_252_random_bytes are 252 of a random shuffle of all possible bytes. + // 252 is evenly divisible by 3 and 4. Only 192, 10, 241, and 43 are missing. + + // We want to allow otherwise equivalent profiles tagged as grayscale and RGB + // to be treated as equal. But CMYK profiles are a totally different ballgame. + const auto CMYK = skcms_Signature_CMYK; + if ((A->data_color_space == CMYK) != (B->data_color_space == CMYK)) { + return false; + } + + // Interpret as RGB_888 if data color space is RGB or GRAY, RGBA_8888 if CMYK. + // TODO: working with RGBA_8888 either way is probably fastest. + skcms_PixelFormat fmt = skcms_PixelFormat_RGB_888; + size_t npixels = 84; + if (A->data_color_space == skcms_Signature_CMYK) { + fmt = skcms_PixelFormat_RGBA_8888; + npixels = 63; + } + + // TODO: if A or B is a known profile (skcms_sRGB_profile, skcms_XYZD50_profile), + // use pre-canned results and skip that skcms_Transform() call? + uint8_t dstA[252], + dstB[252]; + if (!skcms_Transform( + skcms_252_random_bytes, fmt, skcms_AlphaFormat_Unpremul, A, + dstA, skcms_PixelFormat_RGB_888, skcms_AlphaFormat_Unpremul, skcms_XYZD50_profile(), + npixels)) { + return false; + } + if (!skcms_Transform( + skcms_252_random_bytes, fmt, skcms_AlphaFormat_Unpremul, B, + dstB, skcms_PixelFormat_RGB_888, skcms_AlphaFormat_Unpremul, skcms_XYZD50_profile(), + npixels)) { + return false; + } + + // TODO: make sure this final check has reasonable codegen. + for (size_t i = 0; i < 252; i++) { + if (abs((int)dstA[i] - (int)dstB[i]) > 1) { + return false; + } + } + return true; +} + +bool skcms_TRCs_AreApproximateInverse(const skcms_ICCProfile* profile, + const skcms_TransferFunction* inv_tf) { + if (!profile || !profile->has_trc) { + return false; + } + + return skcms_AreApproximateInverses(&profile->trc[0], inv_tf) && + skcms_AreApproximateInverses(&profile->trc[1], inv_tf) && + skcms_AreApproximateInverses(&profile->trc[2], inv_tf); +} + +static bool is_zero_to_one(float x) { + return 0 <= x && x <= 1; +} + +typedef struct { float vals[3]; } skcms_Vector3; + +static skcms_Vector3 mv_mul(const skcms_Matrix3x3* m, const skcms_Vector3* v) { + skcms_Vector3 dst = {{0,0,0}}; + for (int row = 0; row < 3; ++row) { + dst.vals[row] = m->vals[row][0] * v->vals[0] + + m->vals[row][1] * v->vals[1] + + m->vals[row][2] * v->vals[2]; + } + return dst; +} + +bool skcms_AdaptToXYZD50(float wx, float wy, + skcms_Matrix3x3* toXYZD50) { + if (!is_zero_to_one(wx) || !is_zero_to_one(wy) || + !toXYZD50) { + return false; + } + + // Assumes that Y is 1.0f. + skcms_Vector3 wXYZ = { { wx / wy, 1, (1 - wx - wy) / wy } }; + + // Now convert toXYZ matrix to toXYZD50. + skcms_Vector3 wXYZD50 = { { 0.96422f, 1.0f, 0.82521f } }; + + // Calculate the chromatic adaptation matrix. We will use the Bradford method, thus + // the matrices below. The Bradford method is used by Adobe and is widely considered + // to be the best. + skcms_Matrix3x3 xyz_to_lms = {{ + { 0.8951f, 0.2664f, -0.1614f }, + { -0.7502f, 1.7135f, 0.0367f }, + { 0.0389f, -0.0685f, 1.0296f }, + }}; + skcms_Matrix3x3 lms_to_xyz = {{ + { 0.9869929f, -0.1470543f, 0.1599627f }, + { 0.4323053f, 0.5183603f, 0.0492912f }, + { -0.0085287f, 0.0400428f, 0.9684867f }, + }}; + + skcms_Vector3 srcCone = mv_mul(&xyz_to_lms, &wXYZ); + skcms_Vector3 dstCone = mv_mul(&xyz_to_lms, &wXYZD50); + + *toXYZD50 = {{ + { dstCone.vals[0] / srcCone.vals[0], 0, 0 }, + { 0, dstCone.vals[1] / srcCone.vals[1], 0 }, + { 0, 0, dstCone.vals[2] / srcCone.vals[2] }, + }}; + *toXYZD50 = skcms_Matrix3x3_concat(toXYZD50, &xyz_to_lms); + *toXYZD50 = skcms_Matrix3x3_concat(&lms_to_xyz, toXYZD50); + + return true; +} + +bool skcms_PrimariesToXYZD50(float rx, float ry, + float gx, float gy, + float bx, float by, + float wx, float wy, + skcms_Matrix3x3* toXYZD50) { + if (!is_zero_to_one(rx) || !is_zero_to_one(ry) || + !is_zero_to_one(gx) || !is_zero_to_one(gy) || + !is_zero_to_one(bx) || !is_zero_to_one(by) || + !is_zero_to_one(wx) || !is_zero_to_one(wy) || + !toXYZD50) { + return false; + } + + // First, we need to convert xy values (primaries) to XYZ. + skcms_Matrix3x3 primaries = {{ + { rx, gx, bx }, + { ry, gy, by }, + { 1 - rx - ry, 1 - gx - gy, 1 - bx - by }, + }}; + skcms_Matrix3x3 primaries_inv; + if (!skcms_Matrix3x3_invert(&primaries, &primaries_inv)) { + return false; + } + + // Assumes that Y is 1.0f. + skcms_Vector3 wXYZ = { { wx / wy, 1, (1 - wx - wy) / wy } }; + skcms_Vector3 XYZ = mv_mul(&primaries_inv, &wXYZ); + + skcms_Matrix3x3 toXYZ = {{ + { XYZ.vals[0], 0, 0 }, + { 0, XYZ.vals[1], 0 }, + { 0, 0, XYZ.vals[2] }, + }}; + toXYZ = skcms_Matrix3x3_concat(&primaries, &toXYZ); + + skcms_Matrix3x3 DXtoD50; + if (!skcms_AdaptToXYZD50(wx, wy, &DXtoD50)) { + return false; + } + + *toXYZD50 = skcms_Matrix3x3_concat(&DXtoD50, &toXYZ); + return true; +} + + +bool skcms_Matrix3x3_invert(const skcms_Matrix3x3* src, skcms_Matrix3x3* dst) { + double a00 = src->vals[0][0], + a01 = src->vals[1][0], + a02 = src->vals[2][0], + a10 = src->vals[0][1], + a11 = src->vals[1][1], + a12 = src->vals[2][1], + a20 = src->vals[0][2], + a21 = src->vals[1][2], + a22 = src->vals[2][2]; + + double b0 = a00*a11 - a01*a10, + b1 = a00*a12 - a02*a10, + b2 = a01*a12 - a02*a11, + b3 = a20, + b4 = a21, + b5 = a22; + + double determinant = b0*b5 + - b1*b4 + + b2*b3; + + if (determinant == 0) { + return false; + } + + double invdet = 1.0 / determinant; + if (invdet > +FLT_MAX || invdet < -FLT_MAX || !isfinitef_((float)invdet)) { + return false; + } + + b0 *= invdet; + b1 *= invdet; + b2 *= invdet; + b3 *= invdet; + b4 *= invdet; + b5 *= invdet; + + dst->vals[0][0] = (float)( a11*b5 - a12*b4 ); + dst->vals[1][0] = (float)( a02*b4 - a01*b5 ); + dst->vals[2][0] = (float)( + b2 ); + dst->vals[0][1] = (float)( a12*b3 - a10*b5 ); + dst->vals[1][1] = (float)( a00*b5 - a02*b3 ); + dst->vals[2][1] = (float)( - b1 ); + dst->vals[0][2] = (float)( a10*b4 - a11*b3 ); + dst->vals[1][2] = (float)( a01*b3 - a00*b4 ); + dst->vals[2][2] = (float)( + b0 ); + + for (int r = 0; r < 3; ++r) + for (int c = 0; c < 3; ++c) { + if (!isfinitef_(dst->vals[r][c])) { + return false; + } + } + return true; +} + +skcms_Matrix3x3 skcms_Matrix3x3_concat(const skcms_Matrix3x3* A, const skcms_Matrix3x3* B) { + skcms_Matrix3x3 m = { { { 0,0,0 },{ 0,0,0 },{ 0,0,0 } } }; + for (int r = 0; r < 3; r++) + for (int c = 0; c < 3; c++) { + m.vals[r][c] = A->vals[r][0] * B->vals[0][c] + + A->vals[r][1] * B->vals[1][c] + + A->vals[r][2] * B->vals[2][c]; + } + return m; +} + +#if defined(__clang__) + [[clang::no_sanitize("float-divide-by-zero")]] // Checked for by classify() on the way out. +#endif +bool skcms_TransferFunction_invert(const skcms_TransferFunction* src, skcms_TransferFunction* dst) { + TF_PQish pq; + TF_HLGish hlg; + switch (classify(*src, &pq, &hlg)) { + case skcms_TFType_Invalid: return false; + case skcms_TFType_PQ: return false; + case skcms_TFType_HLG: return false; + case skcms_TFType_sRGBish: break; // handled below + + case skcms_TFType_PQish: + *dst = { TFKind_marker(skcms_TFType_PQish), -pq.A, pq.D, 1.0f/pq.F + , pq.B, -pq.E, 1.0f/pq.C}; + return true; + + case skcms_TFType_HLGish: + *dst = { TFKind_marker(skcms_TFType_HLGinvish), 1.0f/hlg.R, 1.0f/hlg.G + , 1.0f/hlg.a, hlg.b, hlg.c + , hlg.K_minus_1 }; + return true; + + case skcms_TFType_HLGinvish: + *dst = { TFKind_marker(skcms_TFType_HLGish), 1.0f/hlg.R, 1.0f/hlg.G + , 1.0f/hlg.a, hlg.b, hlg.c + , hlg.K_minus_1 }; + return true; + } + + assert (classify(*src) == skcms_TFType_sRGBish); + + // We're inverting this function, solving for x in terms of y. + // y = (cx + f) x < d + // (ax + b)^g + e x ≥ d + // The inverse of this function can be expressed in the same piecewise form. + skcms_TransferFunction inv = {0,0,0,0,0,0,0}; + + // We'll start by finding the new threshold inv.d. + // In principle we should be able to find that by solving for y at x=d from either side. + // (If those two d values aren't the same, it's a discontinuous transfer function.) + float d_l = src->c * src->d + src->f, + d_r = powf_(src->a * src->d + src->b, src->g) + src->e; + if (fabsf_(d_l - d_r) > 1/512.0f) { + return false; + } + inv.d = d_l; // TODO(mtklein): better in practice to choose d_r? + + // When d=0, the linear section collapses to a point. We leave c,d,f all zero in that case. + if (inv.d > 0) { + // Inverting the linear section is pretty straightfoward: + // y = cx + f + // y - f = cx + // (1/c)y - f/c = x + inv.c = 1.0f/src->c; + inv.f = -src->f/src->c; + } + + // The interesting part is inverting the nonlinear section: + // y = (ax + b)^g + e. + // y - e = (ax + b)^g + // (y - e)^1/g = ax + b + // (y - e)^1/g - b = ax + // (1/a)(y - e)^1/g - b/a = x + // + // To make that fit our form, we need to move the (1/a) term inside the exponentiation: + // let k = (1/a)^g + // (1/a)( y - e)^1/g - b/a = x + // (ky - ke)^1/g - b/a = x + + float k = powf_(src->a, -src->g); // (1/a)^g == a^-g + inv.g = 1.0f / src->g; + inv.a = k; + inv.b = -k * src->e; + inv.e = -src->b / src->a; + + // We need to enforce the same constraints here that we do when fitting a curve, + // a >= 0 and ad+b >= 0. These constraints are checked by classify(), so they're true + // of the source function if we're here. + + // Just like when fitting the curve, there's really no way to rescue a < 0. + if (inv.a < 0) { + return false; + } + // On the other hand we can rescue an ad+b that's gone slightly negative here. + if (inv.a * inv.d + inv.b < 0) { + inv.b = -inv.a * inv.d; + } + + // That should usually make classify(inv) == sRGBish true, but there are a couple situations + // where we might still fail here, like non-finite parameter values. + if (classify(inv) != skcms_TFType_sRGBish) { + return false; + } + + assert (inv.a >= 0); + assert (inv.a * inv.d + inv.b >= 0); + + // Now in principle we're done. + // But to preserve the valuable invariant inv(src(1.0f)) == 1.0f, we'll tweak + // e or f of the inverse, depending on which segment contains src(1.0f). + float s = skcms_TransferFunction_eval(src, 1.0f); + if (!isfinitef_(s)) { + return false; + } + + float sign = s < 0 ? -1.0f : 1.0f; + s *= sign; + if (s < inv.d) { + inv.f = 1.0f - sign * inv.c * s; + } else { + inv.e = 1.0f - sign * powf_(inv.a * s + inv.b, inv.g); + } + + *dst = inv; + return classify(*dst) == skcms_TFType_sRGBish; +} + +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // + +// From here below we're approximating an skcms_Curve with an skcms_TransferFunction{g,a,b,c,d,e,f}: +// +// tf(x) = cx + f x < d +// tf(x) = (ax + b)^g + e x ≥ d +// +// When fitting, we add the additional constraint that both pieces meet at d: +// +// cd + f = (ad + b)^g + e +// +// Solving for e and folding it through gives an alternate formulation of the non-linear piece: +// +// tf(x) = cx + f x < d +// tf(x) = (ax + b)^g - (ad + b)^g + cd + f x ≥ d +// +// Our overall strategy is then: +// For a couple tolerances, +// - fit_linear(): fit c,d,f iteratively to as many points as our tolerance allows +// - invert c,d,f +// - fit_nonlinear(): fit g,a,b using Gauss-Newton given those inverted c,d,f +// (and by constraint, inverted e) to the inverse of the table. +// Return the parameters with least maximum error. +// +// To run Gauss-Newton to find g,a,b, we'll also need the gradient of the residuals +// of round-trip f_inv(x), the inverse of the non-linear piece of f(x). +// +// let y = Table(x) +// r(x) = x - f_inv(y) +// +// ∂r/∂g = ln(ay + b)*(ay + b)^g +// - ln(ad + b)*(ad + b)^g +// ∂r/∂a = yg(ay + b)^(g-1) +// - dg(ad + b)^(g-1) +// ∂r/∂b = g(ay + b)^(g-1) +// - g(ad + b)^(g-1) + +// Return the residual of roundtripping skcms_Curve(x) through f_inv(y) with parameters P, +// and fill out the gradient of the residual into dfdP. +static float rg_nonlinear(float x, + const skcms_Curve* curve, + const skcms_TransferFunction* tf, + float dfdP[3]) { + const float y = eval_curve(curve, x); + + const float g = tf->g, a = tf->a, b = tf->b, + c = tf->c, d = tf->d, f = tf->f; + + const float Y = fmaxf_(a*y + b, 0.0f), + D = a*d + b; + assert (D >= 0); + + // The gradient. + dfdP[0] = logf_(Y)*powf_(Y, g) + - logf_(D)*powf_(D, g); + dfdP[1] = y*g*powf_(Y, g-1) + - d*g*powf_(D, g-1); + dfdP[2] = g*powf_(Y, g-1) + - g*powf_(D, g-1); + + // The residual. + const float f_inv = powf_(Y, g) + - powf_(D, g) + + c*d + f; + return x - f_inv; +} + +static bool gauss_newton_step(const skcms_Curve* curve, + skcms_TransferFunction* tf, + float x0, float dx, int N) { + // We'll sample x from the range [x0,x1] (both inclusive) N times with even spacing. + // + // Let P = [ tf->g, tf->a, tf->b ] (the three terms that we're adjusting). + // + // We want to do P' = P + (Jf^T Jf)^-1 Jf^T r(P), + // where r(P) is the residual vector + // and Jf is the Jacobian matrix of f(), ∂r/∂P. + // + // Let's review the shape of each of these expressions: + // r(P) is [N x 1], a column vector with one entry per value of x tested + // Jf is [N x 3], a matrix with an entry for each (x,P) pair + // Jf^T is [3 x N], the transpose of Jf + // + // Jf^T Jf is [3 x N] * [N x 3] == [3 x 3], a 3x3 matrix, + // and so is its inverse (Jf^T Jf)^-1 + // Jf^T r(P) is [3 x N] * [N x 1] == [3 x 1], a column vector with the same shape as P + // + // Our implementation strategy to get to the final ∆P is + // 1) evaluate Jf^T Jf, call that lhs + // 2) evaluate Jf^T r(P), call that rhs + // 3) invert lhs + // 4) multiply inverse lhs by rhs + // + // This is a friendly implementation strategy because we don't have to have any + // buffers that scale with N, and equally nice don't have to perform any matrix + // operations that are variable size. + // + // Other implementation strategies could trade this off, e.g. evaluating the + // pseudoinverse of Jf ( (Jf^T Jf)^-1 Jf^T ) directly, then multiplying that by + // the residuals. That would probably require implementing singular value + // decomposition, and would create a [3 x N] matrix to be multiplied by the + // [N x 1] residual vector, but on the upside I think that'd eliminate the + // possibility of this gauss_newton_step() function ever failing. + + // 0) start off with lhs and rhs safely zeroed. + skcms_Matrix3x3 lhs = {{ {0,0,0}, {0,0,0}, {0,0,0} }}; + skcms_Vector3 rhs = { {0,0,0} }; + + // 1,2) evaluate lhs and evaluate rhs + // We want to evaluate Jf only once, but both lhs and rhs involve Jf^T, + // so we'll have to update lhs and rhs at the same time. + for (int i = 0; i < N; i++) { + float x = x0 + static_cast(i)*dx; + + float dfdP[3] = {0,0,0}; + float resid = rg_nonlinear(x,curve,tf, dfdP); + + for (int r = 0; r < 3; r++) { + for (int c = 0; c < 3; c++) { + lhs.vals[r][c] += dfdP[r] * dfdP[c]; + } + rhs.vals[r] += dfdP[r] * resid; + } + } + + // If any of the 3 P parameters are unused, this matrix will be singular. + // Detect those cases and fix them up to indentity instead, so we can invert. + for (int k = 0; k < 3; k++) { + if (lhs.vals[0][k]==0 && lhs.vals[1][k]==0 && lhs.vals[2][k]==0 && + lhs.vals[k][0]==0 && lhs.vals[k][1]==0 && lhs.vals[k][2]==0) { + lhs.vals[k][k] = 1; + } + } + + // 3) invert lhs + skcms_Matrix3x3 lhs_inv; + if (!skcms_Matrix3x3_invert(&lhs, &lhs_inv)) { + return false; + } + + // 4) multiply inverse lhs by rhs + skcms_Vector3 dP = mv_mul(&lhs_inv, &rhs); + tf->g += dP.vals[0]; + tf->a += dP.vals[1]; + tf->b += dP.vals[2]; + return isfinitef_(tf->g) && isfinitef_(tf->a) && isfinitef_(tf->b); +} + +static float max_roundtrip_error_checked(const skcms_Curve* curve, + const skcms_TransferFunction* tf_inv) { + skcms_TransferFunction tf; + if (!skcms_TransferFunction_invert(tf_inv, &tf) || skcms_TFType_sRGBish != classify(tf)) { + return INFINITY_; + } + + skcms_TransferFunction tf_inv_again; + if (!skcms_TransferFunction_invert(&tf, &tf_inv_again)) { + return INFINITY_; + } + + return skcms_MaxRoundtripError(curve, &tf_inv_again); +} + +// Fit the points in [L,N) to the non-linear piece of tf, or return false if we can't. +static bool fit_nonlinear(const skcms_Curve* curve, int L, int N, skcms_TransferFunction* tf) { + // This enforces a few constraints that are not modeled in gauss_newton_step()'s optimization. + auto fixup_tf = [tf]() { + // a must be non-negative. That ensures the function is monotonically increasing. + // We don't really know how to fix up a if it goes negative. + if (tf->a < 0) { + return false; + } + // ad+b must be non-negative. That ensures we don't end up with complex numbers in powf. + // We feel just barely not uneasy enough to tweak b so ad+b is zero in this case. + if (tf->a * tf->d + tf->b < 0) { + tf->b = -tf->a * tf->d; + } + assert (tf->a >= 0 && + tf->a * tf->d + tf->b >= 0); + + // cd+f must be ~= (ad+b)^g+e. That ensures the function is continuous. We keep e as a free + // parameter so we can guarantee this. + tf->e = tf->c*tf->d + tf->f + - powf_(tf->a*tf->d + tf->b, tf->g); + + return isfinitef_(tf->e); + }; + + if (!fixup_tf()) { + return false; + } + + // No matter where we start, dx should always represent N even steps from 0 to 1. + const float dx = 1.0f / static_cast(N-1); + + skcms_TransferFunction best_tf = *tf; + float best_max_error = INFINITY_; + + // Need this or several curves get worse... *sigh* + float init_error = max_roundtrip_error_checked(curve, tf); + if (init_error < best_max_error) { + best_max_error = init_error; + best_tf = *tf; + } + + // As far as we can tell, 1 Gauss-Newton step won't converge, and 3 steps is no better than 2. + for (int j = 0; j < 8; j++) { + if (!gauss_newton_step(curve, tf, static_cast(L)*dx, dx, N-L) || !fixup_tf()) { + *tf = best_tf; + return isfinitef_(best_max_error); + } + + float max_error = max_roundtrip_error_checked(curve, tf); + if (max_error < best_max_error) { + best_max_error = max_error; + best_tf = *tf; + } + } + + *tf = best_tf; + return isfinitef_(best_max_error); +} + +bool skcms_ApproximateCurve(const skcms_Curve* curve, + skcms_TransferFunction* approx, + float* max_error) { + if (!curve || !approx || !max_error) { + return false; + } + + if (curve->table_entries == 0) { + // No point approximating an skcms_TransferFunction with an skcms_TransferFunction! + return false; + } + + if (curve->table_entries == 1 || curve->table_entries > kMaxTableEntries) { + // We need at least two points, and must put some reasonable cap on the maximum number. + return false; + } + + int N = (int)curve->table_entries; + const float dx = 1.0f / static_cast(N - 1); + + *max_error = INFINITY_; + const float kTolerances[] = { 1.5f / 65535.0f, 1.0f / 512.0f }; + for (int t = 0; t < ARRAY_COUNT(kTolerances); t++) { + skcms_TransferFunction tf, + tf_inv; + + // It's problematic to fit curves with non-zero f, so always force it to zero explicitly. + tf.f = 0.0f; + int L = fit_linear(curve, N, kTolerances[t], &tf.c, &tf.d); + + if (L == N) { + // If the entire data set was linear, move the coefficients to the nonlinear portion + // with G == 1. This lets use a canonical representation with d == 0. + tf.g = 1; + tf.a = tf.c; + tf.b = tf.f; + tf.c = tf.d = tf.e = tf.f = 0; + } else if (L == N - 1) { + // Degenerate case with only two points in the nonlinear segment. Solve directly. + tf.g = 1; + tf.a = (eval_curve(curve, static_cast(N-1)*dx) - + eval_curve(curve, static_cast(N-2)*dx)) + / dx; + tf.b = eval_curve(curve, static_cast(N-2)*dx) + - tf.a * static_cast(N-2)*dx; + tf.e = 0; + } else { + // Start by guessing a gamma-only curve through the midpoint. + int mid = (L + N) / 2; + float mid_x = static_cast(mid) / static_cast(N - 1); + float mid_y = eval_curve(curve, mid_x); + tf.g = log2f_(mid_y) / log2f_(mid_x); + tf.a = 1; + tf.b = 0; + tf.e = tf.c*tf.d + tf.f + - powf_(tf.a*tf.d + tf.b, tf.g); + + + if (!skcms_TransferFunction_invert(&tf, &tf_inv) || + !fit_nonlinear(curve, L,N, &tf_inv)) { + continue; + } + + // We fit tf_inv, so calculate tf to keep in sync. + // fit_nonlinear() should guarantee invertibility. + if (!skcms_TransferFunction_invert(&tf_inv, &tf)) { + assert(false); + continue; + } + } + + // We'd better have a sane, sRGB-ish TF by now. + // Other non-Bad TFs would be fine, but we know we've only ever tried to fit sRGBish; + // anything else is just some accident of math and the way we pun tf.g as a type flag. + // fit_nonlinear() should guarantee this, but the special cases may fail this test. + if (skcms_TFType_sRGBish != classify(tf)) { + continue; + } + + // We find our error by roundtripping the table through tf_inv. + // + // (The most likely use case for this approximation is to be inverted and + // used as the transfer function for a destination color space.) + // + // We've kept tf and tf_inv in sync above, but we can't guarantee that tf is + // invertible, so re-verify that here (and use the new inverse for testing). + // fit_nonlinear() should guarantee this, but the special cases that don't use + // it may fail this test. + if (!skcms_TransferFunction_invert(&tf, &tf_inv)) { + continue; + } + + float err = skcms_MaxRoundtripError(curve, &tf_inv); + if (*max_error > err) { + *max_error = err; + *approx = tf; + } + } + return isfinitef_(*max_error); +} + +enum class CpuType { Baseline, HSW, SKX }; + +static CpuType cpu_type() { + #if defined(SKCMS_PORTABLE) || !defined(__x86_64__) || defined(SKCMS_FORCE_BASELINE) + return CpuType::Baseline; + #elif defined(SKCMS_FORCE_HSW) + return CpuType::HSW; + #elif defined(SKCMS_FORCE_SKX) + return CpuType::SKX; + #else + static const CpuType type = []{ + if (!sAllowRuntimeCPUDetection) { + return CpuType::Baseline; + } + // See http://www.sandpile.org/x86/cpuid.htm + + // First, a basic cpuid(1) lets us check prerequisites for HSW, SKX. + uint32_t eax, ebx, ecx, edx; + __asm__ __volatile__("cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) + : "0"(1), "2"(0)); + if ((edx & (1u<<25)) && // SSE + (edx & (1u<<26)) && // SSE2 + (ecx & (1u<< 0)) && // SSE3 + (ecx & (1u<< 9)) && // SSSE3 + (ecx & (1u<<12)) && // FMA (N.B. not used, avoided even) + (ecx & (1u<<19)) && // SSE4.1 + (ecx & (1u<<20)) && // SSE4.2 + (ecx & (1u<<26)) && // XSAVE + (ecx & (1u<<27)) && // OSXSAVE + (ecx & (1u<<28)) && // AVX + (ecx & (1u<<29))) { // F16C + + // Call cpuid(7) to check for AVX2 and AVX-512 bits. + __asm__ __volatile__("cpuid" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) + : "0"(7), "2"(0)); + // eax from xgetbv(0) will tell us whether XMM, YMM, and ZMM state is saved. + uint32_t xcr0, dont_need_edx; + __asm__ __volatile__("xgetbv" : "=a"(xcr0), "=d"(dont_need_edx) : "c"(0)); + + if ((xcr0 & (1u<<1)) && // XMM register state saved? + (xcr0 & (1u<<2)) && // YMM register state saved? + (ebx & (1u<<5))) { // AVX2 + // At this point we're at least HSW. Continue checking for SKX. + if ((xcr0 & (1u<< 5)) && // Opmasks state saved? + (xcr0 & (1u<< 6)) && // First 16 ZMM registers saved? + (xcr0 & (1u<< 7)) && // High 16 ZMM registers saved? + (ebx & (1u<<16)) && // AVX512F + (ebx & (1u<<17)) && // AVX512DQ + (ebx & (1u<<28)) && // AVX512CD + (ebx & (1u<<30)) && // AVX512BW + (ebx & (1u<<31))) { // AVX512VL + return CpuType::SKX; + } + return CpuType::HSW; + } + } + return CpuType::Baseline; + }(); + return type; + #endif +} + +static bool tf_is_gamma(const skcms_TransferFunction& tf) { + return tf.g > 0 && tf.a == 1 && + tf.b == 0 && tf.c == 0 && tf.d == 0 && tf.e == 0 && tf.f == 0; +} + +struct OpAndArg { + Op op; + const void* arg; +}; + +static OpAndArg select_curve_op(const skcms_Curve* curve, int channel) { + struct OpType { + Op sGamma, sRGBish, PQish, HLGish, HLGinvish, table; + }; + static constexpr OpType kOps[] = { + { Op::gamma_r, Op::tf_r, Op::pq_r, Op::hlg_r, Op::hlginv_r, Op::table_r }, + { Op::gamma_g, Op::tf_g, Op::pq_g, Op::hlg_g, Op::hlginv_g, Op::table_g }, + { Op::gamma_b, Op::tf_b, Op::pq_b, Op::hlg_b, Op::hlginv_b, Op::table_b }, + { Op::gamma_a, Op::tf_a, Op::pq_a, Op::hlg_a, Op::hlginv_a, Op::table_a }, + }; + const auto& op = kOps[channel]; + + if (curve->table_entries == 0) { + const OpAndArg noop = { Op::load_a8/*doesn't matter*/, nullptr }; + + const skcms_TransferFunction& tf = curve->parametric; + + if (tf_is_gamma(tf)) { + return tf.g != 1 ? OpAndArg{op.sGamma, &tf} + : noop; + } + + switch (classify(tf)) { + case skcms_TFType_Invalid: return noop; + // TODO(https://issues.skia.org/issues/420956739): Consider adding + // support for PQ and HLG. Generally any code that goes through this + // path would also want tone mapping too. + case skcms_TFType_PQ: return noop; + case skcms_TFType_HLG: return noop; + case skcms_TFType_sRGBish: return OpAndArg{op.sRGBish, &tf}; + case skcms_TFType_PQish: return OpAndArg{op.PQish, &tf}; + case skcms_TFType_HLGish: return OpAndArg{op.HLGish, &tf}; + case skcms_TFType_HLGinvish: return OpAndArg{op.HLGinvish, &tf}; + } + } + // The table_* ops make this assumption. + assert(curve->table_entries <= kMaxTableEntries); + return OpAndArg{op.table, curve}; +} + +// Returns negative if any of the curves are malformed. +static int select_curve_ops(const skcms_Curve* curves, int numChannels, OpAndArg* ops) { + // We process the channels in reverse order, yielding ops in ABGR order. + // (Working backwards allows us to fuse trailing B+G+R ops into a single RGB op.) + int cursor = 0; + for (int index = numChannels; index-- > 0; ) { + if (curves[index].table_entries > kMaxTableEntries) { + return -1; + } + ops[cursor] = select_curve_op(&curves[index], index); + if (ops[cursor].arg) { + ++cursor; + } + } + + // Identify separate B+G+R ops and fuse them into a single RGB op. + if (cursor >= 3) { + struct FusableOps { + Op r, g, b, rgb; + }; + static constexpr FusableOps kFusableOps[] = { + {Op::gamma_r, Op::gamma_g, Op::gamma_b, Op::gamma_rgb}, + {Op::tf_r, Op::tf_g, Op::tf_b, Op::tf_rgb}, + {Op::pq_r, Op::pq_g, Op::pq_b, Op::pq_rgb}, + {Op::hlg_r, Op::hlg_g, Op::hlg_b, Op::hlg_rgb}, + {Op::hlginv_r, Op::hlginv_g, Op::hlginv_b, Op::hlginv_rgb}, + }; + + int posR = cursor - 1; + int posG = cursor - 2; + int posB = cursor - 3; + for (const FusableOps& fusableOp : kFusableOps) { + if (ops[posR].op == fusableOp.r && + ops[posG].op == fusableOp.g && + ops[posB].op == fusableOp.b && + (0 == memcmp(ops[posR].arg, ops[posG].arg, sizeof(skcms_TransferFunction))) && + (0 == memcmp(ops[posR].arg, ops[posB].arg, sizeof(skcms_TransferFunction)))) { + // Fuse the three matching ops into one. + ops[posB].op = fusableOp.rgb; + cursor -= 2; + break; + } + } + } + + return cursor; +} + +static size_t bytes_per_pixel(skcms_PixelFormat fmt) { + switch (fmt >> 1) { // ignore rgb/bgr + case skcms_PixelFormat_A_8 >> 1: return 1; + case skcms_PixelFormat_G_8 >> 1: return 1; + case skcms_PixelFormat_GA_88 >> 1: return 2; + case skcms_PixelFormat_ABGR_4444 >> 1: return 2; + case skcms_PixelFormat_RGB_565 >> 1: return 2; + case skcms_PixelFormat_RGB_888 >> 1: return 3; + case skcms_PixelFormat_RGBA_8888 >> 1: return 4; + case skcms_PixelFormat_RGBA_8888_sRGB >> 1: return 4; + case skcms_PixelFormat_RGBA_1010102 >> 1: return 4; + case skcms_PixelFormat_RGB_101010x_XR >> 1: return 4; + case skcms_PixelFormat_RGB_161616LE >> 1: return 6; + case skcms_PixelFormat_RGBA_10101010_XR >> 1: return 8; + case skcms_PixelFormat_RGBA_16161616LE >> 1: return 8; + case skcms_PixelFormat_RGB_161616BE >> 1: return 6; + case skcms_PixelFormat_RGBA_16161616BE >> 1: return 8; + case skcms_PixelFormat_RGB_hhh_Norm >> 1: return 6; + case skcms_PixelFormat_RGBA_hhhh_Norm >> 1: return 8; + case skcms_PixelFormat_RGB_hhh >> 1: return 6; + case skcms_PixelFormat_RGBA_hhhh >> 1: return 8; + case skcms_PixelFormat_RGB_fff >> 1: return 12; + case skcms_PixelFormat_RGBA_ffff >> 1: return 16; + } + assert(false); + return 0; +} + +// See ITU-T H.273 Table 3 for the full list of codes. +const uint8_t kTransferCicpIdPQ = 16; +const uint8_t kTransferCicpIdHLG = 18; + +static bool has_cicp_pq_trc(const skcms_ICCProfile* profile) { + return profile->has_CICP + && profile->CICP.transfer_characteristics == kTransferCicpIdPQ; +} + +static bool has_cicp_hlg_trc(const skcms_ICCProfile* profile) { + return profile->has_CICP + && profile->CICP.transfer_characteristics == kTransferCicpIdHLG; +} + +// Set tf to be the PQ transfer function, scaled such that 1.0 will map to 10,000 / 203. +static void set_reference_pq_ish_trc(skcms_TransferFunction* tf) { + // Initialize such that 1.0 maps to 1.0. + skcms_TransferFunction_makePQish(tf, + -107/128.0f, 1.0f, 32/2523.0f, 2413/128.0f, -2392/128.0f, 8192/1305.0f); + + // Distribute scaling factor W by scaling A and B with X ^ (1/F): + // ((A + Bx^C) / (D + Ex^C))^F * W = ((A + Bx^C) / (D + Ex^C) * W^(1/F))^F + // See https://crbug.com/1058580#c32 for discussion. + const float w = 10000.0f / 203.0f; + const float ws = powf_(w, 1.0f / tf->f); + tf->a = ws * tf->a; + tf->b = ws * tf->b; +} + +// Set tf to be the HLG inverse OETF, scaled such that 1.0 will map to 1.0. +// While this is one version of HLG, there are many others. A better version +// would be to use the 1,000 nit reference version, but that will require +// adding opt-optical transform support. +static void set_sdr_hlg_ish_trc(skcms_TransferFunction* tf) { + skcms_TransferFunction_makeHLGish(tf, + 2.0f, 2.0f, 1/0.17883277f, 0.28466892f, 0.55991073f); + tf->f = 1.0f / 12.0f - 1.0f; +} + +static bool prep_for_destination(const skcms_ICCProfile* profile, + skcms_Matrix3x3* fromXYZD50, + skcms_TransferFunction* invR, + skcms_TransferFunction* invG, + skcms_TransferFunction* invB, + bool* dst_using_B2A, + bool* dst_using_hlg_ootf) { + const bool has_xyzd50 = + profile->has_toXYZD50 && + skcms_Matrix3x3_invert(&profile->toXYZD50, fromXYZD50); + *dst_using_B2A = false; + *dst_using_hlg_ootf = false; + + // CICP-specified PQ or HLG transfer functions take precedence. + // TODO: Add the ability to parse CICP primaries to not require + // the XYZD50 matrix. + if (has_cicp_pq_trc(profile) && has_xyzd50) { + skcms_TransferFunction trc_pq; + set_reference_pq_ish_trc(&trc_pq); + skcms_TransferFunction_invert(&trc_pq, invR); + skcms_TransferFunction_invert(&trc_pq, invG); + skcms_TransferFunction_invert(&trc_pq, invB); + return true; + } + if (has_cicp_hlg_trc(profile) && has_xyzd50) { + skcms_TransferFunction trc_hlg; + set_sdr_hlg_ish_trc(&trc_hlg); + skcms_TransferFunction_invert(&trc_hlg, invR); + skcms_TransferFunction_invert(&trc_hlg, invG); + skcms_TransferFunction_invert(&trc_hlg, invB); + *dst_using_hlg_ootf = true; + return true; + } + + // Then prefer the B2A transformation. + // skcms_Transform() supports B2A destinations. + if (profile->has_B2A) { + *dst_using_B2A = true; + return true; + } + + // Finally use parametric transfer functions. + // TODO: Reject non sRGB-ish transfer functions here. + return has_xyzd50 + && profile->has_trc + && profile->trc[0].table_entries == 0 + && profile->trc[1].table_entries == 0 + && profile->trc[2].table_entries == 0 + && skcms_TransferFunction_invert(&profile->trc[0].parametric, invR) + && skcms_TransferFunction_invert(&profile->trc[1].parametric, invG) + && skcms_TransferFunction_invert(&profile->trc[2].parametric, invB); +} + +bool skcms_Transform(const void* src, + skcms_PixelFormat srcFmt, + skcms_AlphaFormat srcAlpha, + const skcms_ICCProfile* srcProfile, + void* dst, + skcms_PixelFormat dstFmt, + skcms_AlphaFormat dstAlpha, + const skcms_ICCProfile* dstProfile, + size_t nz) { + const size_t dst_bpp = bytes_per_pixel(dstFmt), + src_bpp = bytes_per_pixel(srcFmt); + // Let's just refuse if the request is absurdly big. + if (nz * dst_bpp > INT_MAX || nz * src_bpp > INT_MAX) { + return false; + } + int n = (int)nz; + + // Null profiles default to sRGB. Passing null for both is handy when doing format conversion. + if (!srcProfile) { + srcProfile = skcms_sRGB_profile(); + } + if (!dstProfile) { + dstProfile = skcms_sRGB_profile(); + } + + // We can't transform in place unless the PixelFormats are the same size. + if (dst == src && dst_bpp != src_bpp) { + return false; + } + // TODO: more careful alias rejection (like, dst == src + 1)? + + Op program[32]; + const void* context[32]; + + Op* ops = program; + const void** contexts = context; + + auto add_op = [&](Op o) { + *ops++ = o; + *contexts++ = nullptr; + }; + + auto add_op_ctx = [&](Op o, const void* c) { + *ops++ = o; + *contexts++ = c; + }; + + auto add_curve_ops = [&](const skcms_Curve* curves, int numChannels) -> bool { + OpAndArg oa[4]; + assert(numChannels <= ARRAY_COUNT(oa)); + + int numOps = select_curve_ops(curves, numChannels, oa); + if (numOps < 0) { + return false; + } + + for (int i = 0; i < numOps; ++i) { + add_op_ctx(oa[i].op, oa[i].arg); + } + return true; + }; + + // If the source has a TRC that is specified by CICP and not the TRC + // entries, then store it here for future use. + skcms_TransferFunction src_cicp_trc; + + // These are always parametric curves of some sort. + skcms_Curve dst_curves[3]; + dst_curves[0].table_entries = + dst_curves[1].table_entries = + dst_curves[2].table_entries = 0; + + // This will store the XYZD50 to destination gamut conversion matrix, if it is needed. + skcms_Matrix3x3 dst_from_xyz; + + // This will store the full source to destination gamut conversion matrix, if it is needed. + skcms_Matrix3x3 dst_from_src; + + switch (srcFmt >> 1) { + default: return false; + case skcms_PixelFormat_A_8 >> 1: add_op(Op::load_a8); break; + case skcms_PixelFormat_G_8 >> 1: add_op(Op::load_g8); break; + case skcms_PixelFormat_GA_88 >> 1: add_op(Op::load_ga88); break; + case skcms_PixelFormat_ABGR_4444 >> 1: add_op(Op::load_4444); break; + case skcms_PixelFormat_RGB_565 >> 1: add_op(Op::load_565); break; + case skcms_PixelFormat_RGB_888 >> 1: add_op(Op::load_888); break; + case skcms_PixelFormat_RGBA_8888 >> 1: add_op(Op::load_8888); break; + case skcms_PixelFormat_RGBA_1010102 >> 1: add_op(Op::load_1010102); break; + case skcms_PixelFormat_RGB_101010x_XR >> 1: add_op(Op::load_101010x_XR); break; + case skcms_PixelFormat_RGBA_10101010_XR >> 1: add_op(Op::load_10101010_XR); break; + case skcms_PixelFormat_RGB_161616LE >> 1: add_op(Op::load_161616LE); break; + case skcms_PixelFormat_RGBA_16161616LE >> 1: add_op(Op::load_16161616LE); break; + case skcms_PixelFormat_RGB_161616BE >> 1: add_op(Op::load_161616BE); break; + case skcms_PixelFormat_RGBA_16161616BE >> 1: add_op(Op::load_16161616BE); break; + case skcms_PixelFormat_RGB_hhh_Norm >> 1: add_op(Op::load_hhh); break; + case skcms_PixelFormat_RGBA_hhhh_Norm >> 1: add_op(Op::load_hhhh); break; + case skcms_PixelFormat_RGB_hhh >> 1: add_op(Op::load_hhh); break; + case skcms_PixelFormat_RGBA_hhhh >> 1: add_op(Op::load_hhhh); break; + case skcms_PixelFormat_RGB_fff >> 1: add_op(Op::load_fff); break; + case skcms_PixelFormat_RGBA_ffff >> 1: add_op(Op::load_ffff); break; + + case skcms_PixelFormat_RGBA_8888_sRGB >> 1: + add_op(Op::load_8888); + add_op_ctx(Op::tf_rgb, skcms_sRGB_TransferFunction()); + break; + } + if (srcFmt == skcms_PixelFormat_RGB_hhh_Norm || + srcFmt == skcms_PixelFormat_RGBA_hhhh_Norm) { + add_op(Op::clamp); + } + if (srcFmt & 1) { + add_op(Op::swap_rb); + } + skcms_ICCProfile gray_dst_profile; + switch (dstFmt >> 1) { + case skcms_PixelFormat_G_8: + case skcms_PixelFormat_GA_88: + // When transforming to gray, stop at XYZ (by setting toXYZ to identity), then transform + // luminance (Y) by the destination transfer function. + gray_dst_profile = *dstProfile; + skcms_SetXYZD50(&gray_dst_profile, &skcms_XYZD50_profile()->toXYZD50); + dstProfile = &gray_dst_profile; + break; + default: + break; + } + + if (srcProfile->data_color_space == skcms_Signature_CMYK) { + // Photoshop creates CMYK images as inverse CMYK. + // These happen to be the only ones we've _ever_ seen. + add_op(Op::invert); + // With CMYK, ignore the alpha type, to avoid changing K or conflating CMY with K. + srcAlpha = skcms_AlphaFormat_Unpremul; + } + + if (srcAlpha == skcms_AlphaFormat_Opaque) { + add_op(Op::force_opaque); + } else if (srcAlpha == skcms_AlphaFormat_PremulAsEncoded) { + add_op(Op::unpremul); + } + + if (dstProfile != srcProfile) { + + // Track whether or not the A2B or B2A transforms are used. the CICP + // values take precedence over A2B and B2A. + bool src_using_A2B = false; + bool src_using_hlg_ootf = false; + bool dst_using_B2A = false; + bool dst_using_hlg_ootf = false; + + if (!prep_for_destination(dstProfile, + &dst_from_xyz, + &dst_curves[0].parametric, + &dst_curves[1].parametric, + &dst_curves[2].parametric, + &dst_using_B2A, + &dst_using_hlg_ootf)) { + return false; + } + + if (has_cicp_pq_trc(srcProfile) && srcProfile->has_toXYZD50) { + set_reference_pq_ish_trc(&src_cicp_trc); + add_op_ctx(Op::pq_rgb, &src_cicp_trc); + } else if (has_cicp_hlg_trc(srcProfile) && srcProfile->has_toXYZD50) { + src_using_hlg_ootf = true; + set_sdr_hlg_ish_trc(&src_cicp_trc); + add_op_ctx(Op::hlg_rgb, &src_cicp_trc); + } else if (srcProfile->has_A2B) { + src_using_A2B = true; + if (srcProfile->A2B.input_channels) { + if (!add_curve_ops(srcProfile->A2B.input_curves, + (int)srcProfile->A2B.input_channels)) { + return false; + } + add_op(Op::clamp); + add_op_ctx(Op::clut_A2B, &srcProfile->A2B); + } + + if (srcProfile->A2B.matrix_channels == 3) { + if (!add_curve_ops(srcProfile->A2B.matrix_curves, /*numChannels=*/3)) { + return false; + } + + static const skcms_Matrix3x4 I = {{ + {1,0,0,0}, + {0,1,0,0}, + {0,0,1,0}, + }}; + if (0 != memcmp(&I, &srcProfile->A2B.matrix, sizeof(I))) { + add_op_ctx(Op::matrix_3x4, &srcProfile->A2B.matrix); + } + } + + if (srcProfile->A2B.output_channels == 3) { + if (!add_curve_ops(srcProfile->A2B.output_curves, /*numChannels=*/3)) { + return false; + } + } + + if (srcProfile->pcs == skcms_Signature_Lab) { + add_op(Op::lab_to_xyz); + } + + } else if (srcProfile->has_trc && srcProfile->has_toXYZD50) { + if (!add_curve_ops(srcProfile->trc, /*numChannels=*/3)) { + return false; + } + } else { + return false; + } + + // A2B sources are in XYZD50 by now, but TRC sources are still in their original gamut. + assert (srcProfile->has_A2B || srcProfile->has_toXYZD50); + + if (dst_using_B2A) { + // B2A needs its input in XYZD50, so transform TRC sources now. + if (!src_using_A2B) { + add_op_ctx(Op::matrix_3x3, &srcProfile->toXYZD50); + // Apply the HLG OOTF in XYZD50 space, if needed. + if (src_using_hlg_ootf) { + add_op(Op::hlg_ootf_scale); + } + } + + if (dstProfile->pcs == skcms_Signature_Lab) { + add_op(Op::xyz_to_lab); + } + + if (dstProfile->B2A.input_channels == 3) { + if (!add_curve_ops(dstProfile->B2A.input_curves, /*numChannels=*/3)) { + return false; + } + } + + if (dstProfile->B2A.matrix_channels == 3) { + static const skcms_Matrix3x4 I = {{ + {1,0,0,0}, + {0,1,0,0}, + {0,0,1,0}, + }}; + if (0 != memcmp(&I, &dstProfile->B2A.matrix, sizeof(I))) { + add_op_ctx(Op::matrix_3x4, &dstProfile->B2A.matrix); + } + + if (!add_curve_ops(dstProfile->B2A.matrix_curves, /*numChannels=*/3)) { + return false; + } + } + + if (dstProfile->B2A.output_channels) { + add_op(Op::clamp); + add_op_ctx(Op::clut_B2A, &dstProfile->B2A); + + if (!add_curve_ops(dstProfile->B2A.output_curves, + (int)dstProfile->B2A.output_channels)) { + return false; + } + } + } else { + // This is a TRC destination. + + // Transform to the destination gamut. + if (src_using_hlg_ootf != dst_using_hlg_ootf) { + // If just the src or the dst has an HLG OOTF then we will apply the OOTF in XYZD50 + // space. If both the src and dst has an HLG OOTF then they will cancel. + if (!src_using_A2B) { + add_op_ctx(Op::matrix_3x3, &srcProfile->toXYZD50); + } + if (src_using_hlg_ootf) { + add_op(Op::hlg_ootf_scale); + } + if (dst_using_hlg_ootf) { + add_op(Op::hlginv_ootf_scale); + } + add_op_ctx(Op::matrix_3x3, &dst_from_xyz); + } else if (src_using_A2B) { + // If the source is A2B then we are already in XYZD50. Just apply the xyz->dst + // matrix. + add_op_ctx(Op::matrix_3x3, &dst_from_xyz); + } else { + const skcms_Matrix3x3* to_xyz = &srcProfile->toXYZD50; + // There's a chance the source and destination gamuts are identical, + // in which case we can skip the gamut transform. + if (0 != memcmp(&dstProfile->toXYZD50, to_xyz, sizeof(skcms_Matrix3x3))) { + // Concat the entire gamut transform into dst_from_src. + dst_from_src = skcms_Matrix3x3_concat(&dst_from_xyz, to_xyz); + add_op_ctx(Op::matrix_3x3, &dst_from_src); + } + } + + // Encode back to dst RGB using its parametric transfer functions. + OpAndArg oa[3]; + int numOps = select_curve_ops(dst_curves, /*numChannels=*/3, oa); + // All dst_curves should be parametric, not table-based, so select_curve_ops should + // not fail. + assert(numOps >= 0); + for (int index = 0; index < numOps; ++index) { + assert(oa[index].op != Op::table_r && + oa[index].op != Op::table_g && + oa[index].op != Op::table_b && + oa[index].op != Op::table_a); + add_op_ctx(oa[index].op, oa[index].arg); + } + } + } + + // Clamp here before premul to make sure we're clamping to normalized values _and_ gamut, + // not just to values that fit in [0,1]. + // + // E.g. r = 1.1, a = 0.5 would fit fine in fixed point after premul (ra=0.55,a=0.5), + // but would be carrying r > 1, which is really unexpected for downstream consumers. + if (dstFmt < skcms_PixelFormat_RGB_hhh) { + add_op(Op::clamp); + } + + if (dstProfile->data_color_space == skcms_Signature_CMYK) { + // Photoshop creates CMYK images as inverse CMYK. + // These happen to be the only ones we've _ever_ seen. + add_op(Op::invert); + + // CMYK has no alpha channel, so make sure dstAlpha is a no-op. + dstAlpha = skcms_AlphaFormat_Unpremul; + } + + if (dstAlpha == skcms_AlphaFormat_Opaque) { + add_op(Op::force_opaque); + } else if (dstAlpha == skcms_AlphaFormat_PremulAsEncoded) { + add_op(Op::premul); + } + if (dstFmt & 1) { + add_op(Op::swap_rb); + } + switch (dstFmt >> 1) { + default: return false; + case skcms_PixelFormat_A_8 >> 1: add_op(Op::store_a8); break; + case skcms_PixelFormat_G_8 >> 1: add_op(Op::store_g8); break; + case skcms_PixelFormat_GA_88 >> 1: add_op(Op::store_ga88); break; + case skcms_PixelFormat_ABGR_4444 >> 1: add_op(Op::store_4444); break; + case skcms_PixelFormat_RGB_565 >> 1: add_op(Op::store_565); break; + case skcms_PixelFormat_RGB_888 >> 1: add_op(Op::store_888); break; + case skcms_PixelFormat_RGBA_8888 >> 1: add_op(Op::store_8888); break; + case skcms_PixelFormat_RGBA_1010102 >> 1: add_op(Op::store_1010102); break; + case skcms_PixelFormat_RGB_161616LE >> 1: add_op(Op::store_161616LE); break; + case skcms_PixelFormat_RGBA_16161616LE >> 1: add_op(Op::store_16161616LE); break; + case skcms_PixelFormat_RGB_161616BE >> 1: add_op(Op::store_161616BE); break; + case skcms_PixelFormat_RGBA_16161616BE >> 1: add_op(Op::store_16161616BE); break; + case skcms_PixelFormat_RGB_hhh_Norm >> 1: add_op(Op::store_hhh); break; + case skcms_PixelFormat_RGBA_hhhh_Norm >> 1: add_op(Op::store_hhhh); break; + case skcms_PixelFormat_RGB_101010x_XR >> 1: add_op(Op::store_101010x_XR); break; + case skcms_PixelFormat_RGBA_10101010_XR >> 1: add_op(Op::store_10101010_XR); break; + case skcms_PixelFormat_RGB_hhh >> 1: add_op(Op::store_hhh); break; + case skcms_PixelFormat_RGBA_hhhh >> 1: add_op(Op::store_hhhh); break; + case skcms_PixelFormat_RGB_fff >> 1: add_op(Op::store_fff); break; + case skcms_PixelFormat_RGBA_ffff >> 1: add_op(Op::store_ffff); break; + + case skcms_PixelFormat_RGBA_8888_sRGB >> 1: + add_op_ctx(Op::tf_rgb, skcms_sRGB_Inverse_TransferFunction()); + add_op(Op::store_8888); + break; + } + + assert(ops <= program + ARRAY_COUNT(program)); + assert(contexts <= context + ARRAY_COUNT(context)); + + auto run = baseline::run_program; + switch (cpu_type()) { + case CpuType::SKX: + #if !defined(SKCMS_DISABLE_SKX) + run = skx::run_program; + break; + #endif + + case CpuType::HSW: + #if !defined(SKCMS_DISABLE_HSW) + run = hsw::run_program; + break; + #endif + + case CpuType::Baseline: + break; + } + + run(program, context, ops - program, (const char*)src, (char*)dst, n, src_bpp,dst_bpp); + return true; +} + +static void assert_usable_as_destination(const skcms_ICCProfile* profile) { +#if defined(NDEBUG) + (void)profile; +#else + skcms_Matrix3x3 fromXYZD50; + skcms_TransferFunction invR, invG, invB; + bool useB2A = false; + bool useHlgOotf = false; + assert(prep_for_destination(profile, &fromXYZD50, &invR, &invG, &invB, &useB2A, &useHlgOotf)); +#endif +} + +bool skcms_MakeUsableAsDestination(skcms_ICCProfile* profile) { + if (!profile->has_B2A) { + skcms_Matrix3x3 fromXYZD50; + if (!profile->has_trc || !profile->has_toXYZD50 + || !skcms_Matrix3x3_invert(&profile->toXYZD50, &fromXYZD50)) { + return false; + } + + skcms_TransferFunction tf[3]; + for (int i = 0; i < 3; i++) { + skcms_TransferFunction inv; + if (profile->trc[i].table_entries == 0 + && skcms_TransferFunction_invert(&profile->trc[i].parametric, &inv)) { + tf[i] = profile->trc[i].parametric; + continue; + } + + float max_error; + // Parametric curves from skcms_ApproximateCurve() are guaranteed to be invertible. + if (!skcms_ApproximateCurve(&profile->trc[i], &tf[i], &max_error)) { + return false; + } + } + + for (int i = 0; i < 3; ++i) { + profile->trc[i].table_entries = 0; + profile->trc[i].parametric = tf[i]; + } + } + assert_usable_as_destination(profile); + return true; +} + +bool skcms_MakeUsableAsDestinationWithSingleCurve(skcms_ICCProfile* profile) { + // Call skcms_MakeUsableAsDestination() with B2A disabled; + // on success that'll return a TRC/XYZ profile with three skcms_TransferFunctions. + skcms_ICCProfile result = *profile; + result.has_B2A = false; + if (!skcms_MakeUsableAsDestination(&result)) { + return false; + } + + // Of the three, pick the transfer function that best fits the other two. + int best_tf = 0; + float min_max_error = INFINITY_; + for (int i = 0; i < 3; i++) { + skcms_TransferFunction inv; + if (!skcms_TransferFunction_invert(&result.trc[i].parametric, &inv)) { + return false; + } + + float err = 0; + for (int j = 0; j < 3; ++j) { + err = fmaxf_(err, skcms_MaxRoundtripError(&profile->trc[j], &inv)); + } + if (min_max_error > err) { + min_max_error = err; + best_tf = i; + } + } + + for (int i = 0; i < 3; i++) { + result.trc[i].parametric = result.trc[best_tf].parametric; + } + + *profile = result; + assert_usable_as_destination(profile); + return true; +} diff --git a/vendor/artifacts/skia/include/skcms/skcms.gni b/vendor/artifacts/skia/include/skcms/skcms.gni new file mode 100644 index 000000000..d7dc4bee7 --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/skcms.gni @@ -0,0 +1,43 @@ +# DO NOT EDIT: This is a generated file. +# See //bazel/exporter_tool/README.md for more information. +# +# The source of truth is //modules/skcms/BUILD.bazel + +# To update this file, run make -C bazel generate_gni + +_modules = get_path_info("../../modules", "abspath") + +# Generated by Bazel rule //modules/skcms:public_hdrs +skcms_public_headers = [ "$_modules/skcms/skcms.h" ] + +# Generated by Bazel rule //modules/skcms:skcms_public +skcms_public = [ + "$_modules/skcms/skcms.cc", + "$_modules/skcms/skcms.h", + "$_modules/skcms/src/skcms_internals.h", + "$_modules/skcms/src/skcms_public.h", +] + +# Generated by Bazel rule //modules/skcms:skcms_TransformBaseline +skcms_TransformBaseline = [ + "$_modules/skcms/src/skcms_Transform.h", + "$_modules/skcms/src/skcms_TransformBaseline.cc", + "$_modules/skcms/src/skcms_internals.h", + "$_modules/skcms/src/skcms_public.h", +] + +# Generated by Bazel rule //modules/skcms:skcms_TransformHsw +skcms_TransformHsw = [ + "$_modules/skcms/src/skcms_Transform.h", + "$_modules/skcms/src/skcms_TransformHsw.cc", + "$_modules/skcms/src/skcms_internals.h", + "$_modules/skcms/src/skcms_public.h", +] + +# Generated by Bazel rule //modules/skcms:skcms_TransformSkx +skcms_TransformSkx = [ + "$_modules/skcms/src/skcms_Transform.h", + "$_modules/skcms/src/skcms_TransformSkx.cc", + "$_modules/skcms/src/skcms_internals.h", + "$_modules/skcms/src/skcms_public.h", +] diff --git a/vendor/artifacts/skia/include/skcms/skcms.h b/vendor/artifacts/skia/include/skcms/skcms.h new file mode 100644 index 000000000..7a9d4c189 --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/skcms.h @@ -0,0 +1,10 @@ +/* + * Copyright 2023 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#pragma once + +#include "src/skcms_public.h" // NO_G3_REWRITE diff --git a/vendor/artifacts/skia/include/skcms/src/Transform_inl.h b/vendor/artifacts/skia/include/skcms/src/Transform_inl.h new file mode 100644 index 000000000..eb5c5fffa --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/src/Transform_inl.h @@ -0,0 +1,1600 @@ +/* + * Copyright 2018 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +// Intentionally NO #pragma once... included multiple times. + +// This file is included from skcms.cc in a namespace with some pre-defines: +// - N: SIMD width of all vectors; 1, 4, 8 or 16 (preprocessor define) +// - V: a template to create a vector of N T's. + +using F = V; +using I32 = V; +using U64 = V; +using U32 = V; +using U16 = V; +using U8 = V; + +#if defined(__GNUC__) && !defined(__clang__) + // GCC is kind of weird, not allowing vector = scalar directly. + static constexpr F F0 = F() + 0.0f, + F1 = F() + 1.0f, + FInfBits = F() + 0x7f800000; // equals 2139095040, the bit pattern of +Inf +#else + static constexpr F F0 = 0.0f, + F1 = 1.0f, + FInfBits = 0x7f800000; // equals 2139095040, the bit pattern of +Inf +#endif + +// Instead of checking __AVX__ below, we'll check USING_AVX. +// This lets skcms.cc set USING_AVX to force us in even if the compiler's not set that way. +// Same deal for __F16C__ and __AVX2__ ~~~> USING_AVX_F16C, USING_AVX2. + +#if !defined(USING_AVX) && N == 8 && defined(__AVX__) + #define USING_AVX +#endif +#if !defined(USING_AVX_F16C) && defined(USING_AVX) && defined(__F16C__) + #define USING_AVX_F16C +#endif +#if !defined(USING_AVX2) && defined(USING_AVX) && defined(__AVX2__) + #define USING_AVX2 +#endif +#if !defined(USING_AVX512F) && N == 16 && defined(__AVX512F__) && defined(__AVX512DQ__) + #define USING_AVX512F +#endif + +// Similar to the AVX+ features, we define USING_NEON and USING_NEON_F16C. +// This is more for organizational clarity... skcms.cc doesn't force these. +#if N > 1 && defined(__ARM_NEON) + #define USING_NEON + + // We have to use two different mechanisms to enable the f16 conversion intrinsics: + #if defined(__clang__) + // Clang's arm_neon.h guards them with the FP hardware bit: + #if __ARM_FP & 2 + #define USING_NEON_F16C + #endif + #elif defined(__GNUC__) + // GCC's arm_neon.h guards them with the FP16 format macros (IEEE and ALTERNATIVE). + // We don't actually want the alternative format - we're reading/writing IEEE f16 values. + #if defined(__ARM_FP16_FORMAT_IEEE) + #define USING_NEON_F16C + #endif + #endif +#endif + +// These -Wvector-conversion warnings seem to trigger in very bogus situations, +// like vst3q_f32() expecting a 16x char rather than a 4x float vector. :/ +#if defined(USING_NEON) && defined(__clang__) + #pragma clang diagnostic ignored "-Wvector-conversion" +#endif + +// GCC & Clang (but not clang-cl) warn returning U64 on x86 is larger than a register. +// You'd see warnings like, "using AVX even though AVX is not enabled". +// We stifle these warnings; our helpers that return U64 are always inlined. +#if defined(__SSE__) && defined(__GNUC__) + #if !defined(__has_warning) + #pragma GCC diagnostic ignored "-Wpsabi" + #elif __has_warning("-Wpsabi") + #pragma GCC diagnostic ignored "-Wpsabi" + #endif +#endif + +// We tag most helper functions as SI, to enforce good code generation +// but also work around what we think is a bug in GCC: when targeting 32-bit +// x86, GCC tends to pass U16 (4x uint16_t vector) function arguments in the +// MMX mm0 register, which seems to mess with unrelated code that later uses +// x87 FP instructions (MMX's mm0 is an alias for x87's st0 register). +#if defined(__clang__) || defined(__GNUC__) + #define SI static inline __attribute__((always_inline)) +#else + #define SI static inline +#endif + +template +SI T load(const P* ptr) { + T val; + memcpy(&val, ptr, sizeof(val)); + return val; +} +template +SI void store(P* ptr, const T& val) { + memcpy(ptr, &val, sizeof(val)); +} + +// (T)v is a cast when N == 1 and a bit-pun when N>1, +// so we use cast(v) to actually cast or bit_pun(v) to bit-pun. +template +SI D cast(const S& v) { +#if N == 1 + return (D)v; +#else + return __builtin_convertvector(v, D); + +#endif +} + +template +SI D bit_pun(const S& v) { + static_assert(sizeof(D) == sizeof(v), ""); + return load(&v); +} + +// When we convert from float to fixed point, it's very common to want to round, +// and for some reason compilers generate better code when converting to int32_t. +// To serve both those ends, we use this function to_fixed() instead of direct cast(). +SI U32 to_fixed(F f) { return (U32)cast(f + 0.5f); } + +// Sometimes we do something crazy on one branch of a conditonal, +// like divide by zero or convert a huge float to an integer, +// but then harmlessly select the other side. That trips up N==1 +// sanitizer builds, so we make if_then_else() a macro to avoid +// evaluating the unused side. + +#if N == 1 + #define if_then_else(cond, t, e) ((cond) ? (t) : (e)) +#else + template + SI T if_then_else(C cond, T t, T e) { + return bit_pun( ( cond & bit_pun(t)) | + (~cond & bit_pun(e)) ); + } +#endif + + +SI F F_from_Half(U16 half) { +#if defined(USING_NEON_F16C) + return vcvt_f32_f16((float16x4_t)half); +#elif defined(USING_AVX512F) + return (F)_mm512_cvtph_ps((__m256i)half); +#elif defined(USING_AVX_F16C) +#if defined(__clang__) && __clang_major__ >= 15 // for _Float16 support + typedef _Float16 __attribute__((vector_size(16))) F16; + return __builtin_convertvector((F16)half, F); +#else + typedef int16_t __attribute__((vector_size(16))) I16; + return __builtin_ia32_vcvtph2ps256((I16)half); +#endif // defined(__clang)) +#else + U32 wide = cast(half); + // A half is 1-5-10 sign-exponent-mantissa, with 15 exponent bias. + U32 s = wide & 0x8000, + em = wide ^ s; + + // Constructing the float is easy if the half is not denormalized. + F norm = bit_pun( (s<<16) + (em<<13) + ((127-15)<<23) ); + + // Simply flush all denorm half floats to zero. + return if_then_else(em < 0x0400, F0, norm); +#endif +} + +#if defined(__clang__) + // The -((127-15)<<10) underflows that side of the math when + // we pass a denorm half float. It's harmless... we'll take the 0 side anyway. + __attribute__((no_sanitize("unsigned-integer-overflow"))) +#endif +SI U16 Half_from_F(F f) { +#if defined(USING_NEON_F16C) + return (U16)vcvt_f16_f32(f); +#elif defined(USING_AVX512F) + return (U16)_mm512_cvtps_ph((__m512 )f, _MM_FROUND_CUR_DIRECTION ); +#elif defined(USING_AVX_F16C) + return (U16)__builtin_ia32_vcvtps2ph256(f, 0x04/*_MM_FROUND_CUR_DIRECTION*/); +#else + // A float is 1-8-23 sign-exponent-mantissa, with 127 exponent bias. + U32 sem = bit_pun(f), + s = sem & 0x80000000, + em = sem ^ s; + + // For simplicity we flush denorm half floats (including all denorm floats) to zero. + return cast(if_then_else(em < 0x38800000, (U32)F0 + , (s>>16) + (em>>13) - ((127-15)<<10))); +#endif +} + +// Swap high and low bytes of 16-bit lanes, converting between big-endian and little-endian. +#if defined(USING_NEON) + SI U16 swap_endian_16(U16 v) { + return (U16)vrev16_u8((uint8x8_t) v); + } +#endif + +SI U64 swap_endian_16x4(const U64& rgba) { + return (rgba & 0x00ff00ff00ff00ff) << 8 + | (rgba & 0xff00ff00ff00ff00) >> 8; +} + +#if defined(USING_NEON) + SI F min_(F x, F y) { return (F)vminq_f32((float32x4_t)x, (float32x4_t)y); } + SI F max_(F x, F y) { return (F)vmaxq_f32((float32x4_t)x, (float32x4_t)y); } +#elif defined(__loongarch_sx) + SI F min_(F x, F y) { return (F)__lsx_vfmin_s(x, y); } + SI F max_(F x, F y) { return (F)__lsx_vfmax_s(x, y); } +#else + SI F min_(F x, F y) { return if_then_else(x > y, y, x); } + SI F max_(F x, F y) { return if_then_else(x < y, y, x); } +#endif + +SI F floor_(F x) { +#if N == 1 + return floorf_(x); +#elif defined(__aarch64__) + return vrndmq_f32(x); +#elif defined(USING_AVX512F) + // Clang's _mm512_floor_ps() passes its mask as -1, not (__mmask16)-1, + // and integer santizer catches that this implicit cast changes the + // value from -1 to 65535. We'll cast manually to work around it. + // Read this as `return _mm512_floor_ps(x)`. + return _mm512_mask_floor_ps(x, (__mmask16)-1, x); +#elif defined(USING_AVX) + return __builtin_ia32_roundps256(x, 0x01/*_MM_FROUND_FLOOR*/); +#elif defined(__SSE4_1__) + return _mm_floor_ps(x); +#elif defined(__loongarch_sx) + return __lsx_vfrintrm_s((__m128)x); +#else + // Round trip through integers with a truncating cast. + F roundtrip = cast(cast(x)); + // If x is negative, truncating gives the ceiling instead of the floor. + return roundtrip - if_then_else(roundtrip > x, F1, F0); + + // This implementation fails for values of x that are outside + // the range an integer can represent. We expect most x to be small. +#endif +} + +SI F approx_log2(F x) { + // The first approximation of log2(x) is its exponent 'e', minus 127. + I32 bits = bit_pun(x); + + F e = cast(bits) * (1.0f / (1<<23)); + + // If we use the mantissa too we can refine the error signficantly. + F m = bit_pun( (bits & 0x007fffff) | 0x3f000000 ); + + return e - 124.225514990f + - 1.498030302f*m + - 1.725879990f/(0.3520887068f + m); +} + +SI F approx_log(F x) { + const float ln2 = 0.69314718f; + return ln2 * approx_log2(x); +} + +SI F approx_exp2(F x) { + F fract = x - floor_(x); + + F fbits = (1.0f * (1<<23)) * (x + 121.274057500f + - 1.490129070f*fract + + 27.728023300f/(4.84252568f - fract)); + I32 bits = cast(min_(max_(fbits, F0), FInfBits)); + + return bit_pun(bits); +} + +SI F approx_pow(F x, float y) { + return if_then_else((x == F0) | (x == F1), x + , approx_exp2(approx_log2(x) * y)); +} + +SI F approx_exp(F x) { + const float log2_e = 1.4426950408889634074f; + return approx_exp2(log2_e * x); +} + +SI F strip_sign(F x, U32* sign) { + U32 bits = bit_pun(x); + *sign = bits & 0x80000000; + return bit_pun(bits ^ *sign); +} + +SI F apply_sign(F x, U32 sign) { + return bit_pun(sign | bit_pun(x)); +} + +// Return tf(x). +SI F apply_tf(const skcms_TransferFunction* tf, F x) { + // Peel off the sign bit and set x = |x|. + U32 sign; + x = strip_sign(x, &sign); + + // The transfer function has a linear part up to d, exponential at d and after. + F v = if_then_else(x < tf->d, tf->c*x + tf->f + , approx_pow(tf->a*x + tf->b, tf->g) + tf->e); + + // Tack the sign bit back on. + return apply_sign(v, sign); +} + +// Return the gamma function (|x|^G with the original sign re-applied to x). +SI F apply_gamma(const skcms_TransferFunction* tf, F x) { + U32 sign; + x = strip_sign(x, &sign); + return apply_sign(approx_pow(x, tf->g), sign); +} + +SI F apply_pq(const skcms_TransferFunction* tf, F x) { + U32 bits = bit_pun(x), + sign = bits & 0x80000000; + x = bit_pun(bits ^ sign); + + F v = approx_pow(max_(tf->a + tf->b * approx_pow(x, tf->c), F0) + / (tf->d + tf->e * approx_pow(x, tf->c)), + tf->f); + + return bit_pun(sign | bit_pun(v)); +} + +SI F apply_hlg(const skcms_TransferFunction* tf, F x) { + const float R = tf->a, G = tf->b, + a = tf->c, b = tf->d, c = tf->e, + K = tf->f + 1; + U32 bits = bit_pun(x), + sign = bits & 0x80000000; + x = bit_pun(bits ^ sign); + + F v = if_then_else(x*R <= 1, approx_pow(x*R, G) + , approx_exp((x-c)*a) + b); + + return K*bit_pun(sign | bit_pun(v)); +} + +SI F apply_hlginv(const skcms_TransferFunction* tf, F x) { + const float R = tf->a, G = tf->b, + a = tf->c, b = tf->d, c = tf->e, + K = tf->f + 1; + U32 bits = bit_pun(x), + sign = bits & 0x80000000; + x = bit_pun(bits ^ sign); + x /= K; + + F v = if_then_else(x <= 1, R * approx_pow(x, G) + , a * approx_log(x - b) + c); + + return bit_pun(sign | bit_pun(v)); +} + +// Compute the luminance Y used in the HLG OOTF. This is equivalent to computing the dot product +// with the vector [0.2627 0.678 0.0593] in Rec2020 primaries, but is performed in the XYZD50 +// space to simplify the pipeline. +SI F compute_Y_in_xyzd50(F x, F y, F z) { + return -0.02831655f * x + + 1.00995452f * y + + 0.02102382f * z; +} + +// Strided loads and stores of N values, starting from p. +template +SI T load_3(const P* p) { +#if N == 1 + return (T)p[0]; +#elif N == 4 + return T{p[ 0],p[ 3],p[ 6],p[ 9]}; +#elif N == 8 + return T{p[ 0],p[ 3],p[ 6],p[ 9], p[12],p[15],p[18],p[21]}; +#elif N == 16 + return T{p[ 0],p[ 3],p[ 6],p[ 9], p[12],p[15],p[18],p[21], + p[24],p[27],p[30],p[33], p[36],p[39],p[42],p[45]}; +#endif +} + +template +SI T load_4(const P* p) { +#if N == 1 + return (T)p[0]; +#elif N == 4 + return T{p[ 0],p[ 4],p[ 8],p[12]}; +#elif N == 8 + return T{p[ 0],p[ 4],p[ 8],p[12], p[16],p[20],p[24],p[28]}; +#elif N == 16 + return T{p[ 0],p[ 4],p[ 8],p[12], p[16],p[20],p[24],p[28], + p[32],p[36],p[40],p[44], p[48],p[52],p[56],p[60]}; +#endif +} + +template +SI void store_3(P* p, const T& v) { +#if N == 1 + p[0] = v; +#elif N == 4 + p[ 0] = v[ 0]; p[ 3] = v[ 1]; p[ 6] = v[ 2]; p[ 9] = v[ 3]; +#elif N == 8 + p[ 0] = v[ 0]; p[ 3] = v[ 1]; p[ 6] = v[ 2]; p[ 9] = v[ 3]; + p[12] = v[ 4]; p[15] = v[ 5]; p[18] = v[ 6]; p[21] = v[ 7]; +#elif N == 16 + p[ 0] = v[ 0]; p[ 3] = v[ 1]; p[ 6] = v[ 2]; p[ 9] = v[ 3]; + p[12] = v[ 4]; p[15] = v[ 5]; p[18] = v[ 6]; p[21] = v[ 7]; + p[24] = v[ 8]; p[27] = v[ 9]; p[30] = v[10]; p[33] = v[11]; + p[36] = v[12]; p[39] = v[13]; p[42] = v[14]; p[45] = v[15]; +#endif +} + +template +SI void store_4(P* p, const T& v) { +#if N == 1 + p[0] = v; +#elif N == 4 + p[ 0] = v[ 0]; p[ 4] = v[ 1]; p[ 8] = v[ 2]; p[12] = v[ 3]; +#elif N == 8 + p[ 0] = v[ 0]; p[ 4] = v[ 1]; p[ 8] = v[ 2]; p[12] = v[ 3]; + p[16] = v[ 4]; p[20] = v[ 5]; p[24] = v[ 6]; p[28] = v[ 7]; +#elif N == 16 + p[ 0] = v[ 0]; p[ 4] = v[ 1]; p[ 8] = v[ 2]; p[12] = v[ 3]; + p[16] = v[ 4]; p[20] = v[ 5]; p[24] = v[ 6]; p[28] = v[ 7]; + p[32] = v[ 8]; p[36] = v[ 9]; p[40] = v[10]; p[44] = v[11]; + p[48] = v[12]; p[52] = v[13]; p[56] = v[14]; p[60] = v[15]; +#endif +} + + +SI U8 gather_8(const uint8_t* p, I32 ix) { +#if N == 1 + U8 v = p[ix]; +#elif N == 4 + U8 v = { p[ix[0]], p[ix[1]], p[ix[2]], p[ix[3]] }; +#elif N == 8 + U8 v = { p[ix[0]], p[ix[1]], p[ix[2]], p[ix[3]], + p[ix[4]], p[ix[5]], p[ix[6]], p[ix[7]] }; +#elif N == 16 + U8 v = { p[ix[ 0]], p[ix[ 1]], p[ix[ 2]], p[ix[ 3]], + p[ix[ 4]], p[ix[ 5]], p[ix[ 6]], p[ix[ 7]], + p[ix[ 8]], p[ix[ 9]], p[ix[10]], p[ix[11]], + p[ix[12]], p[ix[13]], p[ix[14]], p[ix[15]] }; +#endif + return v; +} + +SI U16 gather_16(const uint8_t* p, I32 ix) { + // Load the i'th 16-bit value from p. + auto load_16 = [p](int i) { + return load(p + 2*i); + }; +#if N == 1 + U16 v = load_16(ix); +#elif N == 4 + U16 v = { load_16(ix[0]), load_16(ix[1]), load_16(ix[2]), load_16(ix[3]) }; +#elif N == 8 + U16 v = { load_16(ix[0]), load_16(ix[1]), load_16(ix[2]), load_16(ix[3]), + load_16(ix[4]), load_16(ix[5]), load_16(ix[6]), load_16(ix[7]) }; +#elif N == 16 + U16 v = { load_16(ix[ 0]), load_16(ix[ 1]), load_16(ix[ 2]), load_16(ix[ 3]), + load_16(ix[ 4]), load_16(ix[ 5]), load_16(ix[ 6]), load_16(ix[ 7]), + load_16(ix[ 8]), load_16(ix[ 9]), load_16(ix[10]), load_16(ix[11]), + load_16(ix[12]), load_16(ix[13]), load_16(ix[14]), load_16(ix[15]) }; +#endif + return v; +} + +SI U32 gather_32(const uint8_t* p, I32 ix) { + // Load the i'th 32-bit value from p. + auto load_32 = [p](int i) { + return load(p + 4*i); + }; +#if N == 1 + U32 v = load_32(ix); +#elif N == 4 + U32 v = { load_32(ix[0]), load_32(ix[1]), load_32(ix[2]), load_32(ix[3]) }; +#elif N == 8 + U32 v = { load_32(ix[0]), load_32(ix[1]), load_32(ix[2]), load_32(ix[3]), + load_32(ix[4]), load_32(ix[5]), load_32(ix[6]), load_32(ix[7]) }; +#elif N == 16 + U32 v = { load_32(ix[ 0]), load_32(ix[ 1]), load_32(ix[ 2]), load_32(ix[ 3]), + load_32(ix[ 4]), load_32(ix[ 5]), load_32(ix[ 6]), load_32(ix[ 7]), + load_32(ix[ 8]), load_32(ix[ 9]), load_32(ix[10]), load_32(ix[11]), + load_32(ix[12]), load_32(ix[13]), load_32(ix[14]), load_32(ix[15]) }; +#endif + // TODO: AVX2 and AVX-512 gathers (c.f. gather_24). + return v; +} + +SI U32 gather_24(const uint8_t* p, I32 ix) { + // Load the i'th 24-bit value from p, and 1 extra byte. + auto load_24_32 = [p](int i) { + return load(p + 3*i); + }; + + // Now load multiples of 4 bytes (r,g,b, then a junk byte). +#if N == 1 + U32 v = load_24_32(ix); +#elif N == 4 + U32 v = { load_24_32(ix[0]), load_24_32(ix[1]), load_24_32(ix[2]), load_24_32(ix[3]) }; +#elif N == 8 && !defined(USING_AVX2) + U32 v = { load_24_32(ix[0]), load_24_32(ix[1]), load_24_32(ix[2]), load_24_32(ix[3]), + load_24_32(ix[4]), load_24_32(ix[5]), load_24_32(ix[6]), load_24_32(ix[7]) }; +#elif N == 8 + (void)load_24_32; + // The gather instruction here doesn't need any particular alignment, + // but the intrinsic takes a const int*. + const int* p4 = bit_pun(p); + I32 zero = { 0, 0, 0, 0, 0, 0, 0, 0}, + mask = {-1,-1,-1,-1, -1,-1,-1,-1}; + #if defined(__clang__) + U32 v = (U32)__builtin_ia32_gatherd_d256(zero, p4, 3*ix, mask, 1); + #elif defined(__GNUC__) + U32 v = (U32)__builtin_ia32_gathersiv8si(zero, p4, 3*ix, mask, 1); + #endif +#elif N == 16 + (void)load_24_32; + // The intrinsic is supposed to take const void* now, but it takes const int*, just like AVX2. + // And AVX-512 swapped the order of arguments. :/ + const int* p4 = bit_pun(p); + U32 v = (U32)_mm512_i32gather_epi32((__m512i)(3*ix), p4, 1); +#endif + + // Mask off the junk byte, leaving r,g,b in low 24 bits. + return v & 0x00FFFFFF; +} + +#if !defined(__arm__) + SI void gather_48(const uint8_t* p, I32 ix, U64* v) { + // Load the i'th 48-bit value from p, and 2 extra bytes. + auto load_48_64 = [p](int i) { + return load(p + 6*i); + }; + + #if N == 1 + *v = load_48_64(ix); + #elif N == 4 + *v = U64{ + load_48_64(ix[0]), load_48_64(ix[1]), load_48_64(ix[2]), load_48_64(ix[3]), + }; + #elif N == 8 && !defined(USING_AVX2) + *v = U64{ + load_48_64(ix[0]), load_48_64(ix[1]), load_48_64(ix[2]), load_48_64(ix[3]), + load_48_64(ix[4]), load_48_64(ix[5]), load_48_64(ix[6]), load_48_64(ix[7]), + }; + #elif N == 8 + (void)load_48_64; + typedef int32_t __attribute__((vector_size(16))) Half_I32; + typedef long long __attribute__((vector_size(32))) Half_I64; + + // The gather instruction here doesn't need any particular alignment, + // but the intrinsic takes a const long long*. + const long long int* p8 = bit_pun(p); + + Half_I64 zero = { 0, 0, 0, 0}, + mask = {-1,-1,-1,-1}; + + ix *= 6; + Half_I32 ix_lo = { ix[0], ix[1], ix[2], ix[3] }, + ix_hi = { ix[4], ix[5], ix[6], ix[7] }; + + #if defined(__clang__) + Half_I64 lo = (Half_I64)__builtin_ia32_gatherd_q256(zero, p8, ix_lo, mask, 1), + hi = (Half_I64)__builtin_ia32_gatherd_q256(zero, p8, ix_hi, mask, 1); + #elif defined(__GNUC__) + Half_I64 lo = (Half_I64)__builtin_ia32_gathersiv4di(zero, p8, ix_lo, mask, 1), + hi = (Half_I64)__builtin_ia32_gathersiv4di(zero, p8, ix_hi, mask, 1); + #endif + store((char*)v + 0, lo); + store((char*)v + 32, hi); + #elif N == 16 + (void)load_48_64; + const long long int* p8 = bit_pun(p); + __m512i lo = _mm512_i32gather_epi64(_mm512_extracti32x8_epi32((__m512i)(6*ix), 0), p8, 1), + hi = _mm512_i32gather_epi64(_mm512_extracti32x8_epi32((__m512i)(6*ix), 1), p8, 1); + store((char*)v + 0, lo); + store((char*)v + 64, hi); + #endif + + *v &= 0x0000FFFFFFFFFFFFULL; + } +#endif + +SI F F_from_U8(U8 v) { + return cast(v) * (1/255.0f); +} + +SI F F_from_U16_BE(U16 v) { + // All 16-bit ICC values are big-endian, so we byte swap before converting to float. + // MSVC catches the "loss" of data here in the portable path, so we also make sure to mask. + U16 lo = (v >> 8), + hi = (v << 8) & 0xffff; + return cast(lo|hi) * (1/65535.0f); +} + +SI U16 U16_from_F(F v) { + // 65535 == inf in FP16, so promote to FP32 before converting. + return cast(cast>(v) * 65535 + 0.5f); +} + +SI F minus_1_ulp(F v) { + return bit_pun( bit_pun(v) - 1 ); +} + +SI F table(const skcms_Curve* curve, F v) { + // Clamp the input to [0,1], then scale to a table index. + F ix = max_(F0, min_(v, F1)) * (float)(curve->table_entries - 1); + + // We'll look up (equal or adjacent) entries at lo and hi, then lerp by t between the two. + I32 lo = cast( ix ), + hi = cast(minus_1_ulp(ix+1.0f)); + F t = ix - cast(lo); // i.e. the fractional part of ix. + + // TODO: can we load l and h simultaneously? Each entry in 'h' is either + // the same as in 'l' or adjacent. We have a rough idea that's it'd always be safe + // to read adjacent entries and perhaps underflow the table by a byte or two + // (it'd be junk, but always safe to read). Not sure how to lerp yet. + F l,h; + if (curve->table_8) { + l = F_from_U8(gather_8(curve->table_8, lo)); + h = F_from_U8(gather_8(curve->table_8, hi)); + } else { + l = F_from_U16_BE(gather_16(curve->table_16, lo)); + h = F_from_U16_BE(gather_16(curve->table_16, hi)); + } + return l + (h-l)*t; +} + +SI void sample_clut_8(const uint8_t* grid_8, I32 ix, F* r, F* g, F* b) { + U32 rgb = gather_24(grid_8, ix); + + *r = cast((rgb >> 0) & 0xff) * (1/255.0f); + *g = cast((rgb >> 8) & 0xff) * (1/255.0f); + *b = cast((rgb >> 16) & 0xff) * (1/255.0f); +} + +SI void sample_clut_8(const uint8_t* grid_8, I32 ix, F* r, F* g, F* b, F* a) { + // TODO: don't forget to optimize gather_32(). + U32 rgba = gather_32(grid_8, ix); + + *r = cast((rgba >> 0) & 0xff) * (1/255.0f); + *g = cast((rgba >> 8) & 0xff) * (1/255.0f); + *b = cast((rgba >> 16) & 0xff) * (1/255.0f); + *a = cast((rgba >> 24) & 0xff) * (1/255.0f); +} + +SI void sample_clut_16(const uint8_t* grid_16, I32 ix, F* r, F* g, F* b) { +#if defined(__arm__) || defined(__loongarch_sx) + // This is up to 2x faster on 32-bit ARM than the #else-case fast path. + *r = F_from_U16_BE(gather_16(grid_16, 3*ix+0)); + *g = F_from_U16_BE(gather_16(grid_16, 3*ix+1)); + *b = F_from_U16_BE(gather_16(grid_16, 3*ix+2)); +#else + // This strategy is much faster for 64-bit builds, and fine for 32-bit x86 too. + U64 rgb; + gather_48(grid_16, ix, &rgb); + rgb = swap_endian_16x4(rgb); + + *r = cast((rgb >> 0) & 0xffff) * (1/65535.0f); + *g = cast((rgb >> 16) & 0xffff) * (1/65535.0f); + *b = cast((rgb >> 32) & 0xffff) * (1/65535.0f); +#endif +} + +SI void sample_clut_16(const uint8_t* grid_16, I32 ix, F* r, F* g, F* b, F* a) { + // TODO: gather_64()-based fast path? + *r = F_from_U16_BE(gather_16(grid_16, 4*ix+0)); + *g = F_from_U16_BE(gather_16(grid_16, 4*ix+1)); + *b = F_from_U16_BE(gather_16(grid_16, 4*ix+2)); + *a = F_from_U16_BE(gather_16(grid_16, 4*ix+3)); +} + +static void clut(uint32_t input_channels, uint32_t output_channels, + const uint8_t grid_points[4], const uint8_t* grid_8, const uint8_t* grid_16, + F* r, F* g, F* b, F* a) { + + const int dim = (int)input_channels; + if (dim <= 0 || dim > 4) { + return; + } + assert (output_channels == 3 || + output_channels == 4); + + // For each of these arrays, think foo[2*dim], but we use foo[8] since we know dim <= 4. + I32 index [8] = {0,0,0,0, 0,0,0,0}; // Index contribution by dimension, first low from 0, then high from 4. + F weight[8] = {F0,F0,F0,F0, F0,F0,F0,F0}; // Weight for each contribution, again first low, then high. + + // O(dim) work first: calculate index,weight from r,g,b,a. + const F inputs[] = { *r,*g,*b,*a }; + for (int i = dim-1, stride = 1; i >= 0; i--) { + // x is where we logically want to sample the grid in the i-th dimension. + // We MUST clamp to [0,1] here to avoid negative indices. + F x = max_(F0, min_(inputs[i], F1)) * (float)(grid_points[i] - 1); + + // But we can't index at floats. lo and hi are the two integer grid points surrounding x. + I32 lo = cast( x ), // i.e. trunc(x) == floor(x) here. + hi = cast(minus_1_ulp(x+1.0f)); + // Notice how we fold in the accumulated stride across previous dimensions here. + index[i+0] = lo * stride; + index[i+4] = hi * stride; + stride *= grid_points[i]; + + // We'll interpolate between those two integer grid points by t. + F t = x - cast(lo); // i.e. fract(x) + weight[i+0] = 1-t; + weight[i+4] = t; + } + + *r = *g = *b = F0; + if (output_channels == 4) { + *a = F0; + } + + // We'll sample 2^dim == 1<input_channels, a2b->output_channels, + a2b->grid_points, a2b->grid_8, a2b->grid_16, + r,g,b,&a); +} +static void clut(const skcms_B2A* b2a, F* r, F* g, F* b, F* a) { + clut(b2a->input_channels, b2a->output_channels, + b2a->grid_points, b2a->grid_8, b2a->grid_16, + r,g,b,a); +} + +struct NoCtx {}; + +struct Ctx { + const void* fArg; + operator NoCtx() { return NoCtx{}; } + template operator T*() { return (const T*)fArg; } +}; + +#define STAGE_PARAMS(MAYBE_REF) SKCMS_MAYBE_UNUSED const char* src, \ + SKCMS_MAYBE_UNUSED char* dst, \ + SKCMS_MAYBE_UNUSED F MAYBE_REF r, \ + SKCMS_MAYBE_UNUSED F MAYBE_REF g, \ + SKCMS_MAYBE_UNUSED F MAYBE_REF b, \ + SKCMS_MAYBE_UNUSED F MAYBE_REF a, \ + SKCMS_MAYBE_UNUSED int i + +#if SKCMS_HAS_MUSTTAIL + + // Stages take a stage list, and each stage is responsible for tail-calling the next one. + // + // Unfortunately, we can't declare a StageFn as a function pointer which takes a pointer to + // another StageFn; declaring this leads to a circular dependency. To avoid this, StageFn is + // wrapped in a single-element `struct StageList` which we are able to forward-declare. + struct StageList; + using StageFn = void (*)(StageList stages, const void** ctx, STAGE_PARAMS()); + struct StageList { + const StageFn* fn; + }; + + #define DECLARE_STAGE(name, arg, CALL_NEXT) \ + SI void Exec_##name##_k(arg, STAGE_PARAMS(&)); \ + \ + SI void Exec_##name(StageList list, const void** ctx, STAGE_PARAMS()) { \ + Exec_##name##_k(Ctx{*ctx}, src, dst, r, g, b, a, i); \ + ++list.fn; ++ctx; \ + CALL_NEXT; \ + } \ + \ + SI void Exec_##name##_k(arg, STAGE_PARAMS(&)) + + #define STAGE(name, arg) \ + DECLARE_STAGE(name, arg, [[clang::musttail]] return (*list.fn)(list, ctx, src, dst, \ + r, g, b, a, i)) + + #define FINAL_STAGE(name, arg) \ + DECLARE_STAGE(name, arg, /* Stop executing stages and return to the caller. */) + +#else + + #define DECLARE_STAGE(name, arg) \ + SI void Exec_##name##_k(arg, STAGE_PARAMS(&)); \ + \ + SI void Exec_##name(const void* ctx, STAGE_PARAMS(&)) { \ + Exec_##name##_k(Ctx{ctx}, src, dst, r, g, b, a, i); \ + } \ + \ + SI void Exec_##name##_k(arg, STAGE_PARAMS(&)) + + #define STAGE(name, arg) DECLARE_STAGE(name, arg) + #define FINAL_STAGE(name, arg) DECLARE_STAGE(name, arg) + +#endif + +STAGE(load_a8, NoCtx) { + a = F_from_U8(load(src + 1*i)); +} + +STAGE(load_g8, NoCtx) { + r = g = b = F_from_U8(load(src + 1*i)); +} + +STAGE(load_ga88, NoCtx) { + U16 u16 = load(src + 2 * i); + r = g = b = cast((u16 >> 0) & 0xff) * (1 / 255.0f); + a = cast((u16 >> 8) & 0xff) * (1 / 255.0f); +} + +STAGE(load_4444, NoCtx) { + U16 abgr = load(src + 2*i); + + r = cast((abgr >> 12) & 0xf) * (1/15.0f); + g = cast((abgr >> 8) & 0xf) * (1/15.0f); + b = cast((abgr >> 4) & 0xf) * (1/15.0f); + a = cast((abgr >> 0) & 0xf) * (1/15.0f); +} + +STAGE(load_565, NoCtx) { + U16 rgb = load(src + 2*i); + + r = cast(rgb & (uint16_t)(31<< 0)) * (1.0f / (31<< 0)); + g = cast(rgb & (uint16_t)(63<< 5)) * (1.0f / (63<< 5)); + b = cast(rgb & (uint16_t)(31<<11)) * (1.0f / (31<<11)); +} + +STAGE(load_888, NoCtx) { + const uint8_t* rgb = (const uint8_t*)(src + 3*i); +#if defined(USING_NEON) + // There's no uint8x4x3_t or vld3 load for it, so we'll load each rgb pixel one at + // a time. Since we're doing that, we might as well load them into 16-bit lanes. + // (We'd even load into 32-bit lanes, but that's not possible on ARMv7.) + uint8x8x3_t v = {{ vdup_n_u8(0), vdup_n_u8(0), vdup_n_u8(0) }}; + v = vld3_lane_u8(rgb+0, v, 0); + v = vld3_lane_u8(rgb+3, v, 2); + v = vld3_lane_u8(rgb+6, v, 4); + v = vld3_lane_u8(rgb+9, v, 6); + + // Now if we squint, those 3 uint8x8_t we constructed are really U16s, easy to + // convert to F. (Again, U32 would be even better here if drop ARMv7 or split + // ARMv7 and ARMv8 impls.) + r = cast((U16)v.val[0]) * (1/255.0f); + g = cast((U16)v.val[1]) * (1/255.0f); + b = cast((U16)v.val[2]) * (1/255.0f); +#else + r = cast(load_3(rgb+0) ) * (1/255.0f); + g = cast(load_3(rgb+1) ) * (1/255.0f); + b = cast(load_3(rgb+2) ) * (1/255.0f); +#endif +} + +STAGE(load_8888, NoCtx) { + U32 rgba = load(src + 4*i); + + r = cast((rgba >> 0) & 0xff) * (1/255.0f); + g = cast((rgba >> 8) & 0xff) * (1/255.0f); + b = cast((rgba >> 16) & 0xff) * (1/255.0f); + a = cast((rgba >> 24) & 0xff) * (1/255.0f); +} + +STAGE(load_1010102, NoCtx) { + U32 rgba = load(src + 4*i); + + r = cast((rgba >> 0) & 0x3ff) * (1/1023.0f); + g = cast((rgba >> 10) & 0x3ff) * (1/1023.0f); + b = cast((rgba >> 20) & 0x3ff) * (1/1023.0f); + a = cast((rgba >> 30) & 0x3 ) * (1/ 3.0f); +} + +STAGE(load_101010x_XR, NoCtx) { + U32 rgba = load(src + 4*i); + r = cast(((rgba >> 0) & 0x3ff) - 384) / 510.0f; + g = cast(((rgba >> 10) & 0x3ff) - 384) / 510.0f; + b = cast(((rgba >> 20) & 0x3ff) - 384) / 510.0f; +} + +STAGE(load_10101010_XR, NoCtx) { + U64 rgba = load(src + 8 * i); + // Each channel is 16 bits, where the 6 low bits are padding. + r = cast(((rgba >> ( 0+6)) & 0x3ff) - 384) / 510.0f; + g = cast(((rgba >> (16+6)) & 0x3ff) - 384) / 510.0f; + b = cast(((rgba >> (32+6)) & 0x3ff) - 384) / 510.0f; + a = cast(((rgba >> (48+6)) & 0x3ff) - 384) / 510.0f; +} + +STAGE(load_161616LE, NoCtx) { + uintptr_t ptr = (uintptr_t)(src + 6*i); + assert( (ptr & 1) == 0 ); // src must be 2-byte aligned for this + const uint16_t* rgb = (const uint16_t*)ptr; // cast to const uint16_t* to be safe. +#if defined(USING_NEON) + uint16x4x3_t v = vld3_u16(rgb); + r = cast((U16)v.val[0]) * (1/65535.0f); + g = cast((U16)v.val[1]) * (1/65535.0f); + b = cast((U16)v.val[2]) * (1/65535.0f); +#else + r = cast(load_3(rgb+0)) * (1/65535.0f); + g = cast(load_3(rgb+1)) * (1/65535.0f); + b = cast(load_3(rgb+2)) * (1/65535.0f); +#endif +} + +STAGE(load_16161616LE, NoCtx) { + uintptr_t ptr = (uintptr_t)(src + 8*i); + assert( (ptr & 1) == 0 ); // src must be 2-byte aligned for this + const uint16_t* rgba = (const uint16_t*)ptr; // cast to const uint16_t* to be safe. +#if defined(USING_NEON) + uint16x4x4_t v = vld4_u16(rgba); + r = cast((U16)v.val[0]) * (1/65535.0f); + g = cast((U16)v.val[1]) * (1/65535.0f); + b = cast((U16)v.val[2]) * (1/65535.0f); + a = cast((U16)v.val[3]) * (1/65535.0f); +#else + U64 px = load(rgba); + + r = cast((px >> 0) & 0xffff) * (1/65535.0f); + g = cast((px >> 16) & 0xffff) * (1/65535.0f); + b = cast((px >> 32) & 0xffff) * (1/65535.0f); + a = cast((px >> 48) & 0xffff) * (1/65535.0f); +#endif +} + +STAGE(load_161616BE, NoCtx) { + uintptr_t ptr = (uintptr_t)(src + 6*i); + assert( (ptr & 1) == 0 ); // src must be 2-byte aligned for this + const uint16_t* rgb = (const uint16_t*)ptr; // cast to const uint16_t* to be safe. +#if defined(USING_NEON) + uint16x4x3_t v = vld3_u16(rgb); + r = cast(swap_endian_16((U16)v.val[0])) * (1/65535.0f); + g = cast(swap_endian_16((U16)v.val[1])) * (1/65535.0f); + b = cast(swap_endian_16((U16)v.val[2])) * (1/65535.0f); +#else + U32 R = load_3(rgb+0), + G = load_3(rgb+1), + B = load_3(rgb+2); + // R,G,B are big-endian 16-bit, so byte swap them before converting to float. + r = cast((R & 0x00ff)<<8 | (R & 0xff00)>>8) * (1/65535.0f); + g = cast((G & 0x00ff)<<8 | (G & 0xff00)>>8) * (1/65535.0f); + b = cast((B & 0x00ff)<<8 | (B & 0xff00)>>8) * (1/65535.0f); +#endif +} + +STAGE(load_16161616BE, NoCtx) { + uintptr_t ptr = (uintptr_t)(src + 8*i); + assert( (ptr & 1) == 0 ); // src must be 2-byte aligned for this + const uint16_t* rgba = (const uint16_t*)ptr; // cast to const uint16_t* to be safe. +#if defined(USING_NEON) + uint16x4x4_t v = vld4_u16(rgba); + r = cast(swap_endian_16((U16)v.val[0])) * (1/65535.0f); + g = cast(swap_endian_16((U16)v.val[1])) * (1/65535.0f); + b = cast(swap_endian_16((U16)v.val[2])) * (1/65535.0f); + a = cast(swap_endian_16((U16)v.val[3])) * (1/65535.0f); +#else + U64 px = swap_endian_16x4(load(rgba)); + + r = cast((px >> 0) & 0xffff) * (1/65535.0f); + g = cast((px >> 16) & 0xffff) * (1/65535.0f); + b = cast((px >> 32) & 0xffff) * (1/65535.0f); + a = cast((px >> 48) & 0xffff) * (1/65535.0f); +#endif +} + +STAGE(load_hhh, NoCtx) { + uintptr_t ptr = (uintptr_t)(src + 6*i); + assert( (ptr & 1) == 0 ); // src must be 2-byte aligned for this + const uint16_t* rgb = (const uint16_t*)ptr; // cast to const uint16_t* to be safe. +#if defined(USING_NEON) + uint16x4x3_t v = vld3_u16(rgb); + U16 R = (U16)v.val[0], + G = (U16)v.val[1], + B = (U16)v.val[2]; +#else + U16 R = load_3(rgb+0), + G = load_3(rgb+1), + B = load_3(rgb+2); +#endif + r = F_from_Half(R); + g = F_from_Half(G); + b = F_from_Half(B); +} + +STAGE(load_hhhh, NoCtx) { + uintptr_t ptr = (uintptr_t)(src + 8*i); + assert( (ptr & 1) == 0 ); // src must be 2-byte aligned for this + const uint16_t* rgba = (const uint16_t*)ptr; // cast to const uint16_t* to be safe. +#if defined(USING_NEON) + uint16x4x4_t v = vld4_u16(rgba); + U16 R = (U16)v.val[0], + G = (U16)v.val[1], + B = (U16)v.val[2], + A = (U16)v.val[3]; +#else + U64 px = load(rgba); + U16 R = cast((px >> 0) & 0xffff), + G = cast((px >> 16) & 0xffff), + B = cast((px >> 32) & 0xffff), + A = cast((px >> 48) & 0xffff); +#endif + r = F_from_Half(R); + g = F_from_Half(G); + b = F_from_Half(B); + a = F_from_Half(A); +} + +STAGE(load_fff, NoCtx) { + uintptr_t ptr = (uintptr_t)(src + 12*i); + assert( (ptr & 3) == 0 ); // src must be 4-byte aligned for this + const float* rgb = (const float*)ptr; // cast to const float* to be safe. +#if defined(USING_NEON) + float32x4x3_t v = vld3q_f32(rgb); + r = (F)v.val[0]; + g = (F)v.val[1]; + b = (F)v.val[2]; +#else + r = load_3(rgb+0); + g = load_3(rgb+1); + b = load_3(rgb+2); +#endif +} + +STAGE(load_ffff, NoCtx) { + uintptr_t ptr = (uintptr_t)(src + 16*i); + assert( (ptr & 3) == 0 ); // src must be 4-byte aligned for this + const float* rgba = (const float*)ptr; // cast to const float* to be safe. +#if defined(USING_NEON) + float32x4x4_t v = vld4q_f32(rgba); + r = (F)v.val[0]; + g = (F)v.val[1]; + b = (F)v.val[2]; + a = (F)v.val[3]; +#else + r = load_4(rgba+0); + g = load_4(rgba+1); + b = load_4(rgba+2); + a = load_4(rgba+3); +#endif +} + +STAGE(swap_rb, NoCtx) { + F t = r; + r = b; + b = t; +} + +STAGE(clamp, NoCtx) { + r = max_(F0, min_(r, F1)); + g = max_(F0, min_(g, F1)); + b = max_(F0, min_(b, F1)); + a = max_(F0, min_(a, F1)); +} + +STAGE(invert, NoCtx) { + r = F1 - r; + g = F1 - g; + b = F1 - b; + a = F1 - a; +} + +STAGE(force_opaque, NoCtx) { + a = F1; +} + +STAGE(premul, NoCtx) { + r *= a; + g *= a; + b *= a; +} + +STAGE(unpremul, NoCtx) { + F scale = if_then_else(F1 / a < INFINITY_, F1 / a, F0); + r *= scale; + g *= scale; + b *= scale; +} + +STAGE(matrix_3x3, const skcms_Matrix3x3* matrix) { + const float* m = &matrix->vals[0][0]; + + F R = m[0]*r + m[1]*g + m[2]*b, + G = m[3]*r + m[4]*g + m[5]*b, + B = m[6]*r + m[7]*g + m[8]*b; + + r = R; + g = G; + b = B; +} + +STAGE(matrix_3x4, const skcms_Matrix3x4* matrix) { + const float* m = &matrix->vals[0][0]; + + F R = m[0]*r + m[1]*g + m[ 2]*b + m[ 3], + G = m[4]*r + m[5]*g + m[ 6]*b + m[ 7], + B = m[8]*r + m[9]*g + m[10]*b + m[11]; + + r = R; + g = G; + b = B; +} + +STAGE(lab_to_xyz, NoCtx) { + // The L*a*b values are in r,g,b, but normalized to [0,1]. Reconstruct them: + F L = r * 100.0f, + A = g * 255.0f - 128.0f, + B = b * 255.0f - 128.0f; + + // Convert to CIE XYZ. + F Y = (L + 16.0f) * (1/116.0f), + X = Y + A*(1/500.0f), + Z = Y - B*(1/200.0f); + + X = if_then_else(X*X*X > 0.008856f, X*X*X, (X - (16/116.0f)) * (1/7.787f)); + Y = if_then_else(Y*Y*Y > 0.008856f, Y*Y*Y, (Y - (16/116.0f)) * (1/7.787f)); + Z = if_then_else(Z*Z*Z > 0.008856f, Z*Z*Z, (Z - (16/116.0f)) * (1/7.787f)); + + // Adjust to XYZD50 illuminant, and stuff back into r,g,b for the next op. + r = X * 0.9642f; + g = Y ; + b = Z * 0.8249f; +} + +// As above, in reverse. +STAGE(xyz_to_lab, NoCtx) { + F X = r * (1/0.9642f), + Y = g, + Z = b * (1/0.8249f); + + X = if_then_else(X > 0.008856f, approx_pow(X, 1/3.0f), X*7.787f + (16/116.0f)); + Y = if_then_else(Y > 0.008856f, approx_pow(Y, 1/3.0f), Y*7.787f + (16/116.0f)); + Z = if_then_else(Z > 0.008856f, approx_pow(Z, 1/3.0f), Z*7.787f + (16/116.0f)); + + F L = Y*116.0f - 16.0f, + A = (X-Y)*500.0f, + B = (Y-Z)*200.0f; + + r = L * (1/100.f); + g = (A + 128.0f) * (1/255.0f); + b = (B + 128.0f) * (1/255.0f); +} + +STAGE(gamma_r, const skcms_TransferFunction* tf) { r = apply_gamma(tf, r); } +STAGE(gamma_g, const skcms_TransferFunction* tf) { g = apply_gamma(tf, g); } +STAGE(gamma_b, const skcms_TransferFunction* tf) { b = apply_gamma(tf, b); } +STAGE(gamma_a, const skcms_TransferFunction* tf) { a = apply_gamma(tf, a); } + +STAGE(gamma_rgb, const skcms_TransferFunction* tf) { + r = apply_gamma(tf, r); + g = apply_gamma(tf, g); + b = apply_gamma(tf, b); +} + +STAGE(tf_r, const skcms_TransferFunction* tf) { r = apply_tf(tf, r); } +STAGE(tf_g, const skcms_TransferFunction* tf) { g = apply_tf(tf, g); } +STAGE(tf_b, const skcms_TransferFunction* tf) { b = apply_tf(tf, b); } +STAGE(tf_a, const skcms_TransferFunction* tf) { a = apply_tf(tf, a); } + +STAGE(tf_rgb, const skcms_TransferFunction* tf) { + r = apply_tf(tf, r); + g = apply_tf(tf, g); + b = apply_tf(tf, b); +} + +STAGE(pq_r, const skcms_TransferFunction* tf) { r = apply_pq(tf, r); } +STAGE(pq_g, const skcms_TransferFunction* tf) { g = apply_pq(tf, g); } +STAGE(pq_b, const skcms_TransferFunction* tf) { b = apply_pq(tf, b); } +STAGE(pq_a, const skcms_TransferFunction* tf) { a = apply_pq(tf, a); } + +STAGE(pq_rgb, const skcms_TransferFunction* tf) { + r = apply_pq(tf, r); + g = apply_pq(tf, g); + b = apply_pq(tf, b); +} + +STAGE(hlg_r, const skcms_TransferFunction* tf) { r = apply_hlg(tf, r); } +STAGE(hlg_g, const skcms_TransferFunction* tf) { g = apply_hlg(tf, g); } +STAGE(hlg_b, const skcms_TransferFunction* tf) { b = apply_hlg(tf, b); } +STAGE(hlg_a, const skcms_TransferFunction* tf) { a = apply_hlg(tf, a); } + +STAGE(hlg_rgb, const skcms_TransferFunction* tf) { + r = apply_hlg(tf, r); + g = apply_hlg(tf, g); + b = apply_hlg(tf, b); +} + +// Apply the HLG Reference OOTF, as described in ITU-R BT.2100-3 Table 5. +STAGE(hlg_ootf_scale, const void*) { + // Compute Y in the XYZD50 primaries. + F Y = compute_Y_in_xyzd50(r, g, b); + + // Apply the gamma of 1.2. + const float gamma_minus_1 = 0.2f; + U32 sign; + Y = strip_sign(Y, &sign); + F Y_to_gamma_minus1 = apply_sign(approx_pow(Y, gamma_minus_1), sign); + r = r * Y_to_gamma_minus1; + g = g * Y_to_gamma_minus1; + b = b * Y_to_gamma_minus1; + + // Scale to the reference peak white (1000 nits) to get display luminance. Then divide by the + // HDR reference white (203 nits), to get a value in relative linear color space. + r *= 1000.0f / 203.0f; + g *= 1000.0f / 203.0f; + b *= 1000.0f / 203.0f; +} + +STAGE(hlginv_r, const skcms_TransferFunction* tf) { r = apply_hlginv(tf, r); } +STAGE(hlginv_g, const skcms_TransferFunction* tf) { g = apply_hlginv(tf, g); } +STAGE(hlginv_b, const skcms_TransferFunction* tf) { b = apply_hlginv(tf, b); } +STAGE(hlginv_a, const skcms_TransferFunction* tf) { a = apply_hlginv(tf, a); } + +STAGE(hlginv_rgb, const skcms_TransferFunction* tf) { + r = apply_hlginv(tf, r); + g = apply_hlginv(tf, g); + b = apply_hlginv(tf, b); +} + +// Perform the inverse of the operation in hlg_ootf_scale. +STAGE(hlginv_ootf_scale, const void*) { + r *= (203.f / 1000.0f); + g *= (203.f / 1000.0f); + b *= (203.f / 1000.0f); + + const float gamma_inv_minus_1 = 1.0f / 1.2f - 1.0f; + F Y = compute_Y_in_xyzd50(r, g, b); + U32 sign; + Y = strip_sign(Y, &sign); + F Y_to_gamma_minus1 = apply_sign(approx_pow(Y, gamma_inv_minus_1), sign); + + r = r * Y_to_gamma_minus1; + g = g * Y_to_gamma_minus1; + b = b * Y_to_gamma_minus1; +} + +STAGE(table_r, const skcms_Curve* curve) { r = table(curve, r); } +STAGE(table_g, const skcms_Curve* curve) { g = table(curve, g); } +STAGE(table_b, const skcms_Curve* curve) { b = table(curve, b); } +STAGE(table_a, const skcms_Curve* curve) { a = table(curve, a); } + +STAGE(clut_A2B, const skcms_A2B* a2b) { + clut(a2b, &r,&g,&b,a); + + if (a2b->input_channels == 4) { + // CMYK is opaque. + a = F1; + } +} + +STAGE(clut_B2A, const skcms_B2A* b2a) { + clut(b2a, &r,&g,&b,&a); +} + +// From here on down, the store_ ops are all "final stages," terminating processing of this group. + +FINAL_STAGE(store_a8, NoCtx) { + store(dst + 1*i, cast(to_fixed(a * 255))); +} + +FINAL_STAGE(store_g8, NoCtx) { + // g should be holding luminance (Y) (r,g,b ~~~> X,Y,Z) + store(dst + 1*i, cast(to_fixed(g * 255))); +} + +FINAL_STAGE(store_ga88, NoCtx) { + // g should be holding luminance (Y) (r,g,b ~~~> X,Y,Z) + store(dst + 2*i, cast(to_fixed(g * 255) << 0 ) + | cast(to_fixed(a * 255) << 8 )); +} + +FINAL_STAGE(store_4444, NoCtx) { + store(dst + 2*i, cast(to_fixed(r * 15) << 12) + | cast(to_fixed(g * 15) << 8) + | cast(to_fixed(b * 15) << 4) + | cast(to_fixed(a * 15) << 0)); +} + +FINAL_STAGE(store_565, NoCtx) { + store(dst + 2*i, cast(to_fixed(r * 31) << 0 ) + | cast(to_fixed(g * 63) << 5 ) + | cast(to_fixed(b * 31) << 11 )); +} + +FINAL_STAGE(store_888, NoCtx) { + uint8_t* rgb = (uint8_t*)dst + 3*i; +#if defined(USING_NEON) + // Same deal as load_888 but in reverse... we'll store using uint8x8x3_t, but + // get there via U16 to save some instructions converting to float. And just + // like load_888, we'd prefer to go via U32 but for ARMv7 support. + U16 R = cast(to_fixed(r * 255)), + G = cast(to_fixed(g * 255)), + B = cast(to_fixed(b * 255)); + + uint8x8x3_t v = {{ (uint8x8_t)R, (uint8x8_t)G, (uint8x8_t)B }}; + vst3_lane_u8(rgb+0, v, 0); + vst3_lane_u8(rgb+3, v, 2); + vst3_lane_u8(rgb+6, v, 4); + vst3_lane_u8(rgb+9, v, 6); +#else + store_3(rgb+0, cast(to_fixed(r * 255)) ); + store_3(rgb+1, cast(to_fixed(g * 255)) ); + store_3(rgb+2, cast(to_fixed(b * 255)) ); +#endif +} + +FINAL_STAGE(store_8888, NoCtx) { + store(dst + 4*i, cast(to_fixed(r * 255)) << 0 + | cast(to_fixed(g * 255)) << 8 + | cast(to_fixed(b * 255)) << 16 + | cast(to_fixed(a * 255)) << 24); +} + +FINAL_STAGE(store_101010x_XR, NoCtx) { + store(dst + 4*i, cast(to_fixed((r * 510) + 384)) << 0 + | cast(to_fixed((g * 510) + 384)) << 10 + | cast(to_fixed((b * 510) + 384)) << 20); +} + +FINAL_STAGE(store_10101010_XR, NoCtx) { + // Each channel is 16 bits, where the 6 low bits are padding. + store(dst + 8*i, cast(to_fixed((r * 510) + 384)) << ( 0+6) + | cast(to_fixed((g * 510) + 384)) << (16+6) + | cast(to_fixed((b * 510) + 384)) << (32+6) + | cast(to_fixed((a * 510) + 384)) << (48+6)); +} + +FINAL_STAGE(store_1010102, NoCtx) { + store(dst + 4*i, cast(to_fixed(r * 1023)) << 0 + | cast(to_fixed(g * 1023)) << 10 + | cast(to_fixed(b * 1023)) << 20 + | cast(to_fixed(a * 3)) << 30); +} + +FINAL_STAGE(store_161616LE, NoCtx) { + uintptr_t ptr = (uintptr_t)(dst + 6*i); + assert( (ptr & 1) == 0 ); // The dst pointer must be 2-byte aligned + uint16_t* rgb = (uint16_t*)ptr; // for this cast to uint16_t* to be safe. +#if defined(USING_NEON) + uint16x4x3_t v = {{ + (uint16x4_t)U16_from_F(r), + (uint16x4_t)U16_from_F(g), + (uint16x4_t)U16_from_F(b), + }}; + vst3_u16(rgb, v); +#else + store_3(rgb+0, U16_from_F(r)); + store_3(rgb+1, U16_from_F(g)); + store_3(rgb+2, U16_from_F(b)); +#endif + +} + +FINAL_STAGE(store_16161616LE, NoCtx) { + uintptr_t ptr = (uintptr_t)(dst + 8*i); + assert( (ptr & 1) == 0 ); // The dst pointer must be 2-byte aligned + uint16_t* rgba = (uint16_t*)ptr; // for this cast to uint16_t* to be safe. +#if defined(USING_NEON) + uint16x4x4_t v = {{ + (uint16x4_t)U16_from_F(r), + (uint16x4_t)U16_from_F(g), + (uint16x4_t)U16_from_F(b), + (uint16x4_t)U16_from_F(a), + }}; + vst4_u16(rgba, v); +#else + U64 px = cast(to_fixed(r * 65535)) << 0 + | cast(to_fixed(g * 65535)) << 16 + | cast(to_fixed(b * 65535)) << 32 + | cast(to_fixed(a * 65535)) << 48; + store(rgba, px); +#endif +} + +FINAL_STAGE(store_161616BE, NoCtx) { + uintptr_t ptr = (uintptr_t)(dst + 6*i); + assert( (ptr & 1) == 0 ); // The dst pointer must be 2-byte aligned + uint16_t* rgb = (uint16_t*)ptr; // for this cast to uint16_t* to be safe. +#if defined(USING_NEON) + uint16x4x3_t v = {{ + (uint16x4_t)swap_endian_16(cast(U16_from_F(r))), + (uint16x4_t)swap_endian_16(cast(U16_from_F(g))), + (uint16x4_t)swap_endian_16(cast(U16_from_F(b))), + }}; + vst3_u16(rgb, v); +#else + U32 R = to_fixed(r * 65535), + G = to_fixed(g * 65535), + B = to_fixed(b * 65535); + store_3(rgb+0, cast((R & 0x00ff) << 8 | (R & 0xff00) >> 8) ); + store_3(rgb+1, cast((G & 0x00ff) << 8 | (G & 0xff00) >> 8) ); + store_3(rgb+2, cast((B & 0x00ff) << 8 | (B & 0xff00) >> 8) ); +#endif + +} + +FINAL_STAGE(store_16161616BE, NoCtx) { + uintptr_t ptr = (uintptr_t)(dst + 8*i); + assert( (ptr & 1) == 0 ); // The dst pointer must be 2-byte aligned + uint16_t* rgba = (uint16_t*)ptr; // for this cast to uint16_t* to be safe. +#if defined(USING_NEON) + uint16x4x4_t v = {{ + (uint16x4_t)swap_endian_16(cast(U16_from_F(r))), + (uint16x4_t)swap_endian_16(cast(U16_from_F(g))), + (uint16x4_t)swap_endian_16(cast(U16_from_F(b))), + (uint16x4_t)swap_endian_16(cast(U16_from_F(a))), + }}; + vst4_u16(rgba, v); +#else + U64 px = cast(to_fixed(r * 65535)) << 0 + | cast(to_fixed(g * 65535)) << 16 + | cast(to_fixed(b * 65535)) << 32 + | cast(to_fixed(a * 65535)) << 48; + store(rgba, swap_endian_16x4(px)); +#endif +} + +FINAL_STAGE(store_hhh, NoCtx) { + uintptr_t ptr = (uintptr_t)(dst + 6*i); + assert( (ptr & 1) == 0 ); // The dst pointer must be 2-byte aligned + uint16_t* rgb = (uint16_t*)ptr; // for this cast to uint16_t* to be safe. + + U16 R = Half_from_F(r), + G = Half_from_F(g), + B = Half_from_F(b); +#if defined(USING_NEON) + uint16x4x3_t v = {{ + (uint16x4_t)R, + (uint16x4_t)G, + (uint16x4_t)B, + }}; + vst3_u16(rgb, v); +#else + store_3(rgb+0, R); + store_3(rgb+1, G); + store_3(rgb+2, B); +#endif +} + +FINAL_STAGE(store_hhhh, NoCtx) { + uintptr_t ptr = (uintptr_t)(dst + 8*i); + assert( (ptr & 1) == 0 ); // The dst pointer must be 2-byte aligned + uint16_t* rgba = (uint16_t*)ptr; // for this cast to uint16_t* to be safe. + + U16 R = Half_from_F(r), + G = Half_from_F(g), + B = Half_from_F(b), + A = Half_from_F(a); +#if defined(USING_NEON) + uint16x4x4_t v = {{ + (uint16x4_t)R, + (uint16x4_t)G, + (uint16x4_t)B, + (uint16x4_t)A, + }}; + vst4_u16(rgba, v); +#else + store(rgba, cast(R) << 0 + | cast(G) << 16 + | cast(B) << 32 + | cast(A) << 48); +#endif +} + +FINAL_STAGE(store_fff, NoCtx) { + uintptr_t ptr = (uintptr_t)(dst + 12*i); + assert( (ptr & 3) == 0 ); // The dst pointer must be 4-byte aligned + float* rgb = (float*)ptr; // for this cast to float* to be safe. +#if defined(USING_NEON) + float32x4x3_t v = {{ + (float32x4_t)r, + (float32x4_t)g, + (float32x4_t)b, + }}; + vst3q_f32(rgb, v); +#else + store_3(rgb+0, r); + store_3(rgb+1, g); + store_3(rgb+2, b); +#endif +} + +FINAL_STAGE(store_ffff, NoCtx) { + uintptr_t ptr = (uintptr_t)(dst + 16*i); + assert( (ptr & 3) == 0 ); // The dst pointer must be 4-byte aligned + float* rgba = (float*)ptr; // for this cast to float* to be safe. +#if defined(USING_NEON) + float32x4x4_t v = {{ + (float32x4_t)r, + (float32x4_t)g, + (float32x4_t)b, + (float32x4_t)a, + }}; + vst4q_f32(rgba, v); +#else + store_4(rgba+0, r); + store_4(rgba+1, g); + store_4(rgba+2, b); + store_4(rgba+3, a); +#endif +} + +#if SKCMS_HAS_MUSTTAIL + + SI void exec_stages(StageFn* stages, const void** contexts, const char* src, char* dst, int i) { + (*stages)({stages}, contexts, src, dst, F0, F0, F0, F1, i); + } + +#else + + static void exec_stages(const Op* ops, const void** contexts, + const char* src, char* dst, int i) { + F r = F0, g = F0, b = F0, a = F1; + while (true) { + switch (*ops++) { +#define M(name) case Op::name: Exec_##name(*contexts++, src, dst, r, g, b, a, i); break; + SKCMS_WORK_OPS(M) +#undef M +#define M(name) case Op::name: Exec_##name(*contexts++, src, dst, r, g, b, a, i); return; + SKCMS_STORE_OPS(M) +#undef M + } + } + } + +#endif + +// NOLINTNEXTLINE(misc-definitions-in-headers) +void run_program(const Op* program, const void** contexts, SKCMS_MAYBE_UNUSED ptrdiff_t programSize, + const char* src, char* dst, int n, + size_t src_bpp, size_t dst_bpp) { +#if SKCMS_HAS_MUSTTAIL + // Convert the program into an array of tailcall stages. + StageFn stages[32]; + assert(programSize <= ARRAY_COUNT(stages)); + + static constexpr StageFn kStageFns[] = { +#define M(name) &Exec_##name, + SKCMS_WORK_OPS(M) + SKCMS_STORE_OPS(M) +#undef M + }; + + for (ptrdiff_t index = 0; index < programSize; ++index) { + stages[index] = kStageFns[(int)program[index]]; + } +#else + // Use the op array as-is. + const Op* stages = program; +#endif + + int i = 0; + while (n >= N) { + exec_stages(stages, contexts, src, dst, i); + i += N; + n -= N; + } + if (n > 0) { + char tmp[4*4*N] = {0}; + + memcpy(tmp, (const char*)src + (size_t)i*src_bpp, (size_t)n*src_bpp); + exec_stages(stages, contexts, tmp, tmp, 0); + memcpy((char*)dst + (size_t)i*dst_bpp, tmp, (size_t)n*dst_bpp); + } +} diff --git a/vendor/artifacts/skia/include/skcms/src/skcms_Transform.h b/vendor/artifacts/skia/include/skcms/src/skcms_Transform.h new file mode 100644 index 000000000..868d71a68 --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/src/skcms_Transform.h @@ -0,0 +1,167 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#pragma once + +#include +#include + +// skcms_Transform.h contains skcms implementation details. +// Please don't use this header from outside the skcms repo. + +namespace skcms_private { + +/** All transform ops */ + +#define SKCMS_WORK_OPS(M) \ + M(load_a8) \ + M(load_g8) \ + M(load_ga88) \ + M(load_4444) \ + M(load_565) \ + M(load_888) \ + M(load_8888) \ + M(load_1010102) \ + M(load_101010x_XR) \ + M(load_10101010_XR) \ + M(load_161616LE) \ + M(load_16161616LE) \ + M(load_161616BE) \ + M(load_16161616BE) \ + M(load_hhh) \ + M(load_hhhh) \ + M(load_fff) \ + M(load_ffff) \ + \ + M(swap_rb) \ + M(clamp) \ + M(invert) \ + M(force_opaque) \ + M(premul) \ + M(unpremul) \ + M(matrix_3x3) \ + M(matrix_3x4) \ + \ + M(lab_to_xyz) \ + M(xyz_to_lab) \ + \ + M(gamma_r) \ + M(gamma_g) \ + M(gamma_b) \ + M(gamma_a) \ + M(gamma_rgb) \ + \ + M(tf_r) \ + M(tf_g) \ + M(tf_b) \ + M(tf_a) \ + M(tf_rgb) \ + \ + M(pq_r) \ + M(pq_g) \ + M(pq_b) \ + M(pq_a) \ + M(pq_rgb) \ + \ + M(hlg_r) \ + M(hlg_g) \ + M(hlg_b) \ + M(hlg_a) \ + M(hlg_rgb) \ + M(hlg_ootf_scale) \ + \ + M(hlginv_r) \ + M(hlginv_g) \ + M(hlginv_b) \ + M(hlginv_a) \ + M(hlginv_rgb) \ + M(hlginv_ootf_scale) \ + \ + M(table_r) \ + M(table_g) \ + M(table_b) \ + M(table_a) \ + \ + M(clut_A2B) \ + M(clut_B2A) + +#define SKCMS_STORE_OPS(M) \ + M(store_a8) \ + M(store_g8) \ + M(store_ga88) \ + M(store_4444) \ + M(store_565) \ + M(store_888) \ + M(store_8888) \ + M(store_1010102) \ + M(store_161616LE) \ + M(store_16161616LE) \ + M(store_161616BE) \ + M(store_16161616BE) \ + M(store_101010x_XR) \ + M(store_10101010_XR) \ + M(store_hhh) \ + M(store_hhhh) \ + M(store_fff) \ + M(store_ffff) + +enum class Op : int { +#define M(op) op, + SKCMS_WORK_OPS(M) + SKCMS_STORE_OPS(M) +#undef M +}; + +/** Constants */ + +#if defined(__clang__) || defined(__GNUC__) + static constexpr float INFINITY_ = __builtin_inff(); +#else + static const union { + uint32_t bits; + float f; + } inf_ = { 0x7f800000 }; + #define INFINITY_ inf_.f +#endif + +/** Vector type */ + +#if defined(__clang__) + template using Vec = T __attribute__((ext_vector_type(N))); +#elif defined(__GNUC__) + // Unfortunately, GCC does not allow us to omit the struct. This will not compile: + // template using Vec = T __attribute__((vector_size(N*sizeof(T)))); + template struct VecHelper { + typedef T __attribute__((vector_size(N * sizeof(T)))) V; + }; + template using Vec = typename VecHelper::V; +#endif + +/** Interface */ + +namespace baseline { + +void run_program(const Op* program, const void** contexts, ptrdiff_t programSize, + const char* src, char* dst, int n, + size_t src_bpp, size_t dst_bpp); + +} +namespace hsw { + +void run_program(const Op* program, const void** contexts, ptrdiff_t programSize, + const char* src, char* dst, int n, + size_t src_bpp, size_t dst_bpp); + +} +namespace skx { + +void run_program(const Op* program, const void** contexts, ptrdiff_t programSize, + const char* src, char* dst, int n, + size_t src_bpp, size_t dst_bpp); + +} +} // namespace skcms_private diff --git a/vendor/artifacts/skia/include/skcms/src/skcms_TransformBaseline.cc b/vendor/artifacts/skia/include/skcms/src/skcms_TransformBaseline.cc new file mode 100644 index 000000000..706cc2ca2 --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/src/skcms_TransformBaseline.cc @@ -0,0 +1,50 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "skcms_public.h" // NO_G3_REWRITE +#include "skcms_internals.h" // NO_G3_REWRITE +#include "skcms_Transform.h" // NO_G3_REWRITE +#include +#include +#include +#include +#include + +#if defined(__ARM_NEON) + #include +#elif defined(__SSE__) + #include + + #if defined(__clang__) + // That #include is usually enough, but Clang's headers + // avoid #including the whole kitchen sink when _MSC_VER is defined, + // because lots of programs on Windows would include that and it'd be + // a lot slower. But we want all those headers included, so we can use + // their features (after making runtime checks). + #include + #endif +#elif defined(__loongarch_sx) + #include +#endif + +namespace skcms_private { +namespace baseline { + +#if defined(SKCMS_PORTABLE) + // Build skcms in a portable scalar configuration. + #define N 1 + template using V = T; +#else + // Build skcms with basic four-line SIMD support. (SSE on Intel, or Neon on ARM) + #define N 4 + template using V = skcms_private::Vec; +#endif + +#include "Transform_inl.h" + +} // namespace baseline +} // namespace skcms_private diff --git a/vendor/artifacts/skia/include/skcms/src/skcms_TransformHsw.cc b/vendor/artifacts/skia/include/skcms/src/skcms_TransformHsw.cc new file mode 100644 index 000000000..7349f524f --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/src/skcms_TransformHsw.cc @@ -0,0 +1,61 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "skcms_public.h" // NO_G3_REWRITE +#include "skcms_internals.h" // NO_G3_REWRITE +#include "skcms_Transform.h" // NO_G3_REWRITE +#include +#include +#include +#include +#include + +#if defined(__ARM_NEON) + #include +#elif defined(__SSE__) + #include + + #if defined(__clang__) + // That #include is usually enough, but Clang's headers + // avoid #including the whole kitchen sink when _MSC_VER is defined, + // because lots of programs on Windows would include that and it'd be + // a lot slower. But we want all those headers included, so we can use + // their features (after making runtime checks). + #include + #include + #include + #include + #include + #endif +#endif + +namespace skcms_private { +namespace hsw { + +#if defined(SKCMS_DISABLE_HSW) + +void run_program(const Op* program, const void** contexts, ptrdiff_t programSize, + const char* src, char* dst, int n, + size_t src_bpp, size_t dst_bpp) { + skcms_private::baseline::run_program(program, contexts, programSize, + src, dst, n, src_bpp, dst_bpp); +} + +#else + +#define USING_AVX +#define USING_AVX_F16C +#define USING_AVX2 +#define N 8 +template using V = skcms_private::Vec; + +#include "Transform_inl.h" + +#endif + +} // namespace hsw +} // namespace skcms_private diff --git a/vendor/artifacts/skia/include/skcms/src/skcms_TransformSkx.cc b/vendor/artifacts/skia/include/skcms/src/skcms_TransformSkx.cc new file mode 100644 index 000000000..8ded464c0 --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/src/skcms_TransformSkx.cc @@ -0,0 +1,58 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "skcms_public.h" // NO_G3_REWRITE +#include "skcms_internals.h" // NO_G3_REWRITE +#include "skcms_Transform.h" // NO_G3_REWRITE +#include +#include +#include +#include +#include + +#if defined(__ARM_NEON) + #include +#elif defined(__SSE__) + #include + + #if defined(__clang__) + // That #include is usually enough, but Clang's headers + // avoid #including the whole kitchen sink when _MSC_VER is defined, + // because lots of programs on Windows would include that and it'd be + // a lot slower. But we want all those headers included, so we can use + // their features (after making runtime checks). + #include + #include + #include + #include + #include + #endif +#endif + +namespace skcms_private { +namespace skx { + +#if defined(SKCMS_DISABLE_SKX) + +void run_program(const Op* program, const void** contexts, ptrdiff_t programSize, + const char* src, char* dst, int n, + size_t src_bpp, size_t dst_bpp) { + skcms_private::baseline::run_program(program, contexts, programSize, + src, dst, n, src_bpp, dst_bpp); +} + +#else + +#define USING_AVX512F +#define N 16 +template using V = skcms_private::Vec; +#include "Transform_inl.h" + +#endif + +} // namespace skx +} // namespace skcms_private diff --git a/vendor/artifacts/skia/include/skcms/src/skcms_internals.h b/vendor/artifacts/skia/include/skcms/src/skcms_internals.h new file mode 100644 index 000000000..02aa7b77a --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/src/skcms_internals.h @@ -0,0 +1,157 @@ +/* + * Copyright 2018 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#pragma once + +// skcms_internals.h contains APIs shared by skcms' internals and its test tools. +// Please don't use this header from outside the skcms repo. + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// ~~~~ General Helper Macros ~~~~ +// skcms can leverage some C++ extensions when they are present. +#define ARRAY_COUNT(arr) (int)(sizeof((arr)) / sizeof(*(arr))) + +#if defined(__has_cpp_attribute) + #if __has_cpp_attribute(clang::fallthrough) + #define SKCMS_FALLTHROUGH [[clang::fallthrough]] + #elif __has_cpp_attribute(gnu::fallthrough) + #define SKCMS_FALLTHROUGH [[gnu::fallthrough]] + #endif + + #if defined(__clang__) && !defined(SKCMS_HAS_MUSTTAIL) + // [[clang::musttail]] is great for performance, but it's not well supported and we run into + // a variety of problems when we use it. Fortunately, it's an optional feature that doesn't + // affect correctness, and usually the compiler will generate a tail-call even for us + // whether or not we force it to do so. + // + // Known limitations: + // - Sanitizers do not work well with [[clang::musttail]], and corrupt src/dst pointers. + // (https://github.com/llvm/llvm-project/issues/70849) + // - Wasm tail-calls were only introduced in 2023 and aren't a mainstream feature yet. + // - Clang 18 runs into an ICE on armv7/androideabi with [[clang::musttail]]. + // (http://crbug.com/1504548) + // - Android RISC-V also runs into an ICE (b/314692534) + // - So does Linux ppc64le (https://github.com/llvm/llvm-project/issues/108014, + // https://github.com/llvm/llvm-project/issues/98859) + // - LoongArch developers indicate they had to turn it off + // - Windows builds generate incorrect code with [[clang::musttail]] and crash mysteriously. + // (http://crbug.com/1505442) + #if __has_cpp_attribute(clang::musttail) && !__has_feature(memory_sanitizer) \ + && !__has_feature(address_sanitizer) \ + && !defined(__EMSCRIPTEN__) \ + && !defined(__arm__) \ + && !defined(__riscv) \ + && !defined(__powerpc__) \ + && !defined(__loongarch__) \ + && !defined(_WIN32) && !defined(__SYMBIAN32__) + #define SKCMS_HAS_MUSTTAIL 1 + #endif + #elif defined(__GNUC__) && !defined(SKCMS_HAS_MUSTTAIL) + // GCC on riscv64 does not support our tail call functions + // cf. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121784 + #if __has_cpp_attribute(clang::musttail) && !defined(__riscv) + #define SKCMS_HAS_MUSTTAIL 1 + #else + #define SKCMS_HAS_MUSTTAIL 0 + #endif + #elif !defined(__clang__) && !defined(SKCMS_HAS_MUSTTAIL) + #if __has_cpp_attribute(clang::musttail) + #define SKCMS_HAS_MUSTTAIL 1 + #else + #define SKCMS_HAS_MUSTTAIL 0 + #endif + #endif +#endif + +#ifndef SKCMS_FALLTHROUGH + #define SKCMS_FALLTHROUGH +#endif +#ifndef SKCMS_HAS_MUSTTAIL + #define SKCMS_HAS_MUSTTAIL 0 +#endif + +#if defined(__clang__) + #define SKCMS_MAYBE_UNUSED __attribute__((unused)) + #pragma clang diagnostic ignored "-Wused-but-marked-unused" +#elif defined(__GNUC__) + #define SKCMS_MAYBE_UNUSED __attribute__((unused)) +#elif defined(_MSC_VER) + #define SKCMS_MAYBE_UNUSED __pragma(warning(suppress:4100)) +#else + #define SKCMS_MAYBE_UNUSED +#endif + +// sizeof(x) will return size_t, which is 32-bit on some machines and 64-bit on others. +// We have better testing on 64-bit machines, so force 32-bit machines to behave like 64-bit. +// +// Please do not use sizeof() directly, and size_t only when required. +// (We have no way of enforcing these requests...) +#define SAFE_SIZEOF(x) ((uint64_t)sizeof(x)) + +// Same sort of thing for _Layout structs with a variable sized array at the end (named "variable"). +#define SAFE_FIXED_SIZE(type) ((uint64_t)offsetof(type, variable)) + +// If this isn't Clang, GCC, or Emscripten with SIMD support, we are in SKCMS_PORTABLE mode. +#if !defined(SKCMS_PORTABLE) && !(defined(__clang__) || \ + defined(__GNUC__) || \ + (defined(__EMSCRIPTEN__) && defined(__wasm_simd128__))) + #define SKCMS_PORTABLE 1 +#endif + +// If we are in SKCMS_PORTABLE mode or running on a non-x86-64 platform, we can't enable HSW or SKX. +// We also disable HSW/SKX on Android, even if it's Android on x64, since it's unlikely to benefit. +#if defined(SKCMS_PORTABLE) || !defined(__x86_64__) || defined(ANDROID) || defined(__ANDROID__) + #undef SKCMS_FORCE_HSW + #if !defined(SKCMS_DISABLE_HSW) + #define SKCMS_DISABLE_HSW 1 + #endif + + #undef SKCMS_FORCE_SKX + #if !defined(SKCMS_DISABLE_SKX) + #define SKCMS_DISABLE_SKX 1 + #endif +#endif + +// ~~~~ Shared ~~~~ +typedef struct skcms_ICCTag { + uint32_t signature; + uint32_t type; + uint32_t size; + const uint8_t* buf; +} skcms_ICCTag; + +typedef struct skcms_ICCProfile skcms_ICCProfile; +typedef struct skcms_TransferFunction skcms_TransferFunction; +typedef union skcms_Curve skcms_Curve; + +void skcms_GetTagByIndex (const skcms_ICCProfile*, uint32_t idx, skcms_ICCTag*); +bool skcms_GetTagBySignature(const skcms_ICCProfile*, uint32_t sig, skcms_ICCTag*); + +float skcms_MaxRoundtripError(const skcms_Curve* curve, const skcms_TransferFunction* inv_tf); + +// 252 of a random shuffle of all possible bytes. +// 252 is evenly divisible by 3 and 4. Only 192, 10, 241, and 43 are missing. +// Used for ICC profile equivalence testing. +extern const uint8_t skcms_252_random_bytes[252]; + +// ~~~~ Portable Math ~~~~ +static inline float floorf_(float x) { + float roundtrip = (float)((int)x); + return roundtrip > x ? roundtrip - 1 : roundtrip; +} +static inline float fabsf_(float x) { return x < 0 ? -x : x; } +float powf_(float, float); + +#ifdef __cplusplus +} +#endif diff --git a/vendor/artifacts/skia/include/skcms/src/skcms_public.h b/vendor/artifacts/skia/include/skcms/src/skcms_public.h new file mode 100644 index 000000000..fc1075cf2 --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/src/skcms_public.h @@ -0,0 +1,496 @@ +/* + * Copyright 2018 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#pragma once + +// skcms_public.h contains the entire public API for skcms. + +// Modeled after the FOX example in https://gcc.gnu.org/wiki/Visibility +#if !defined(SKCMS_API) + // Client has opted in to building skcms as part of a DLL/shared object file. + #if defined(SKCMS_DLL) + // If on Windows (MSVC or Clang pretending to be MSVC) + #if defined(_MSC_VER) + // Client needs to set this when compiling the skcms files (but *not* when compiling + // other files which use the headers). In GN, this is handled with non-public configs. + // With Bazel, this can be implemented with local_defines. + #if defined(SKCMS_IMPLEMENTATION) + // If SKCMS is being built as a standalone DLL, it must be explicitly exported + // https://learn.microsoft.com/en-us/cpp/cpp/dllexport-dllimport?view=msvc-170 + #define SKCMS_API __declspec(dllexport) + #else + // If a client is compiling and using the skcms header, this is an optimization + // to skip some indirection when resolving the function call. + // https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-6.0/aa271769(v=vs.60) + #define SKCMS_API __declspec(dllimport) + #endif + #else + // On non-Windows platforms, we make sure the symbols are visible outside the + // shared object file. + #define SKCMS_API __attribute__((visibility("default"))) + #endif + #else + #define SKCMS_API + #endif +#endif + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +// A row-major 3x3 matrix (ie vals[row][col]) +typedef struct skcms_Matrix3x3 { + float vals[3][3]; +} skcms_Matrix3x3; + +// It is _not_ safe to alias the pointers to invert in-place. +SKCMS_API bool skcms_Matrix3x3_invert(const skcms_Matrix3x3*, skcms_Matrix3x3*); +SKCMS_API skcms_Matrix3x3 skcms_Matrix3x3_concat(const skcms_Matrix3x3*, const skcms_Matrix3x3*); + +// A row-major 3x4 matrix (ie vals[row][col]) +typedef struct skcms_Matrix3x4 { + float vals[3][4]; +} skcms_Matrix3x4; + +// A transfer function mapping encoded values to linear values, +// represented by this 7-parameter piecewise function: +// +// linear = sign(encoded) * (c*|encoded| + f) , 0 <= |encoded| < d +// = sign(encoded) * ((a*|encoded| + b)^g + e), d <= |encoded| +// +// (A simple gamma transfer function sets g to gamma and a to 1.) +typedef struct skcms_TransferFunction { + float g, a,b,c,d,e,f; +} skcms_TransferFunction; + +SKCMS_API float skcms_TransferFunction_eval (const skcms_TransferFunction*, float); +SKCMS_API bool skcms_TransferFunction_invert(const skcms_TransferFunction*, + skcms_TransferFunction*); + +typedef enum skcms_TFType { + skcms_TFType_Invalid, + skcms_TFType_sRGBish, + skcms_TFType_PQish, + skcms_TFType_HLGish, + skcms_TFType_HLGinvish, + skcms_TFType_PQ, + skcms_TFType_HLG, +} skcms_TFType; + +// Identify which kind of transfer function is encoded in an skcms_TransferFunction +SKCMS_API skcms_TFType skcms_TransferFunction_getType(const skcms_TransferFunction*); + +// We can jam a couple alternate transfer function forms into skcms_TransferFunction, +// including those matching the general forms of the SMPTE ST 2084 PQ function or HLG. +// +// PQish: +// max(A + B|encoded|^C, 0) +// linear = sign(encoded) * (------------------------) ^ F +// D + E|encoded|^C +SKCMS_API bool skcms_TransferFunction_makePQish(skcms_TransferFunction*, + float A, float B, float C, + float D, float E, float F); +// HLGish: +// { K * sign(encoded) * ( (R|encoded|)^G ) when 0 <= |encoded| <= 1/R +// linear = { K * sign(encoded) * ( e^(a(|encoded|-c)) + b ) when 1/R < |encoded| +SKCMS_API bool skcms_TransferFunction_makeScaledHLGish(skcms_TransferFunction*, + float K, float R, float G, + float a, float b, float c); + +// Compatibility shim with K=1 for old callers. +static inline bool skcms_TransferFunction_makeHLGish(skcms_TransferFunction* fn, + float R, float G, + float a, float b, float c) { + return skcms_TransferFunction_makeScaledHLGish(fn, 1.0f, R,G, a,b,c); +} + +// The PQ transfer function. The function skcms_TransferFunction_eval will always evaluate to the +// unit PQ EOTF, which maps [0, 1] to [0, 1], regardless of the other parameters. +// This is stored differently from PQish transfer functions. In particular: +// - the constant -5 is stored in g +// - the hdr_reference_white_luminance parameter is stored in a +// - all other parameters are set to 0 +// When this is used as an SkColorSpace, the transformation to XYZD50 will be as follows: +// 1. Apply the unit PQ EOTF to each channel +// 2. Multiply by 10,000 nits +// 3. Divide by hdr_reference_white_luminance nits (default is 203) +// 4. Transform primaries to XYZD50 +SKCMS_API void skcms_TransferFunction_makePQ( + skcms_TransferFunction*, + float hdr_reference_white_luminance); + +// The HLG transfer function. The function skcms_TransferFunction_eval will always evaluate to the +// HLG inverse OETF, which maps [0, 1] to [0, 1], regardless of the other parameters. +// This is stored differently from PQish transfer functions. In particular: +// - the constant -6 is stored in g +// - the hdr_reference_white_luminance parameter is stored in a +// - the peak_white_luminance parameter is stored in b +// - the system_gamma parameter is stored in c +// - all other parameters are set to 0 +// When this is used as an SkColorSpace, the transformation to XYZD50 will be as follows: +// 1. Apply the HLG inverse OETF to each channel +// 2. Transform primaries to Rec2020 +// 3. Apply the channel-mixing HLG OOTF using system_gamma (default is 1.2) +// 4. Multiply by peak_luminance nits (default is 1,000) +// 5. Divide by hdr_reference_white nits (default is 203) +// 6. Transform primaries to XYZD50 +SKCMS_API void skcms_TransferFunction_makeHLG( + skcms_TransferFunction*, + float hdr_reference_white_luminance, + float peak_luminance, + float system_gamma); + +// Is this an ordinary sRGB-ish transfer function, or one of the HDR forms we support? +SKCMS_API bool skcms_TransferFunction_isSRGBish(const skcms_TransferFunction*); +SKCMS_API bool skcms_TransferFunction_isPQish (const skcms_TransferFunction*); +SKCMS_API bool skcms_TransferFunction_isHLGish (const skcms_TransferFunction*); +SKCMS_API bool skcms_TransferFunction_isPQ (const skcms_TransferFunction*); +SKCMS_API bool skcms_TransferFunction_isHLG (const skcms_TransferFunction*); + +// Unified representation of 'curv' or 'para' tag data, or a 1D table from 'mft1' or 'mft2' +typedef union skcms_Curve { + struct { + // this needs to line up with alias_of_table_entries so we can tell if there are or + // are not table entries. If this is 0, this struct is a parametric function, + // otherwise it's a table entry. + uint32_t alias_of_table_entries; + skcms_TransferFunction parametric; + }; + struct { + uint32_t table_entries; + const uint8_t* table_8; + const uint8_t* table_16; + }; +} skcms_Curve; + +// Complex transforms between device space (A) and profile connection space (B): +// A2B: device -> [ "A" curves -> CLUT ] -> [ "M" curves -> matrix ] -> "B" curves -> PCS +// B2A: device <- [ "A" curves <- CLUT ] <- [ "M" curves <- matrix ] <- "B" curves <- PCS + +typedef struct skcms_A2B { + // Optional: N 1D "A" curves, followed by an N-dimensional CLUT. + // If input_channels == 0, these curves and CLUT are skipped, + // Otherwise, input_channels must be in [1, 4]. + skcms_Curve input_curves[4]; + const uint8_t* grid_8; + const uint8_t* grid_16; + uint32_t input_channels; + uint8_t grid_points[4]; + + // Optional: 3 1D "M" curves, followed by a color matrix. + // If matrix_channels == 0, these curves and matrix are skipped, + // Otherwise, matrix_channels must be 3. + skcms_Curve matrix_curves[3]; + skcms_Matrix3x4 matrix; + uint32_t matrix_channels; + + // Required: 3 1D "B" curves. Always present, and output_channels must be 3. + uint32_t output_channels; // list first to pack with matrix_channels + skcms_Curve output_curves[3]; +} skcms_A2B; + +typedef struct skcms_B2A { + // Required: 3 1D "B" curves. Always present, and input_channels must be 3. + skcms_Curve input_curves[3]; + uint32_t input_channels; + + // Optional: a color matrix, followed by 3 1D "M" curves. + // If matrix_channels == 0, this matrix and these curves are skipped, + // Otherwise, matrix_channels must be 3. + uint32_t matrix_channels; // list first to pack with input_channels + skcms_Curve matrix_curves[3]; + skcms_Matrix3x4 matrix; + + // Optional: an N-dimensional CLUT, followed by N 1D "A" curves. + // If output_channels == 0, this CLUT and these curves are skipped, + // Otherwise, output_channels must be in [1, 4]. + skcms_Curve output_curves[4]; + const uint8_t* grid_8; + const uint8_t* grid_16; + uint8_t grid_points[4]; + uint32_t output_channels; +} skcms_B2A; + +typedef struct skcms_CICP { + uint8_t color_primaries; + uint8_t transfer_characteristics; + uint8_t matrix_coefficients; + uint8_t video_full_range_flag; +} skcms_CICP; + +typedef struct skcms_ICCProfile { + const uint8_t* buffer; + + uint32_t size; + uint32_t data_color_space; + uint32_t pcs; + uint32_t tag_count; + + // skcms_Parse() will set commonly-used fields for you when possible: + + // If we can parse red, green and blue transfer curves from the profile, + // trc will be set to those three curves, and has_trc will be true. + skcms_Curve trc[3]; + + // If this profile's gamut can be represented by a 3x3 transform to XYZD50, + // skcms_Parse() sets toXYZD50 to that transform and has_toXYZD50 to true. + skcms_Matrix3x3 toXYZD50; + + // If the profile has a valid A2B0 or A2B1 tag, skcms_Parse() sets A2B to + // that data, and has_A2B to true. skcms_ParseWithA2BPriority() does the + // same following any user-provided prioritization of A2B0, A2B1, or A2B2. + skcms_A2B A2B; + + // If the profile has a valid B2A0 or B2A1 tag, skcms_Parse() sets B2A to + // that data, and has_B2A to true. skcms_ParseWithA2BPriority() does the + // same following any user-provided prioritization of B2A0, B2A1, or B2A2. + skcms_B2A B2A; + + // If the profile has a valid CICP tag, skcms_Parse() sets CICP to that data, + // and has_CICP to true. + skcms_CICP CICP; + + bool has_trc; + bool has_toXYZD50; + bool has_A2B; + bool has_B2A; + bool has_CICP; +} skcms_ICCProfile; + +// The sRGB color profile is so commonly used that we offer a canonical skcms_ICCProfile for it. +SKCMS_API const skcms_ICCProfile* skcms_sRGB_profile(void); +// Ditto for XYZD50, the most common profile connection space. +SKCMS_API const skcms_ICCProfile* skcms_XYZD50_profile(void); + +SKCMS_API const skcms_TransferFunction* skcms_sRGB_TransferFunction(void); +SKCMS_API const skcms_TransferFunction* skcms_sRGB_Inverse_TransferFunction(void); +SKCMS_API const skcms_TransferFunction* skcms_Identity_TransferFunction(void); + +// Practical equality test for two skcms_ICCProfiles. +// The implementation is subject to change, but it will always try to answer +// "can I substitute A for B?" and "can I skip transforming from A to B?". +SKCMS_API bool skcms_ApproximatelyEqualProfiles(const skcms_ICCProfile* A, + const skcms_ICCProfile* B); + +// Practical test that answers: Is curve roughly the inverse of inv_tf? Typically used by passing +// the inverse of a known parametric transfer function (like sRGB), to determine if a particular +// curve is very close to sRGB. +SKCMS_API bool skcms_AreApproximateInverses(const skcms_Curve* curve, + const skcms_TransferFunction* inv_tf); + +// Similar to above, answering the question for all three TRC curves of the given profile. Again, +// passing skcms_sRGB_InverseTransferFunction as inv_tf will answer the question: +// "Does this profile have a transfer function that is very close to sRGB?" +SKCMS_API bool skcms_TRCs_AreApproximateInverse(const skcms_ICCProfile* profile, + const skcms_TransferFunction* inv_tf); + +// Parse an ICC profile and return true if possible, otherwise return false. +// Selects an A2B profile (if present) according to priority list (each entry 0-2). +// The buffer is not copied; it must remain valid as long as the skcms_ICCProfile will be used. +// The parse will fail if there is not enough padding (typically 1-2 bytes) past the end of the +// profile for internally optimized read calls. +SKCMS_API bool skcms_ParseWithA2BPriority(const void*, size_t, + const int priority[], int priorities, + skcms_ICCProfile*); + +static inline bool skcms_Parse(const void* buf, size_t len, skcms_ICCProfile* profile) { + // For continuity of existing user expectations, + // prefer A2B0 (perceptual) over A2B1 (relative colormetric), and ignore A2B2 (saturation). + const int priority[] = {0,1}; + return skcms_ParseWithA2BPriority(buf, len, + priority, sizeof(priority)/sizeof(*priority), + profile); +} + +SKCMS_API bool skcms_ApproximateCurve(const skcms_Curve* curve, + skcms_TransferFunction* approx, + float* max_error); + +SKCMS_API bool skcms_GetCHAD(const skcms_ICCProfile*, skcms_Matrix3x3*); +SKCMS_API bool skcms_GetWTPT(const skcms_ICCProfile*, float xyz[3]); + +// Returns the number of channels of input data that are expected on the "A" side of the profile. +// This is useful for image codecs, where the image data and the accompanying profile might have +// conflicting data shapes. In some cases, the result is unclear or invalid. In that case, the +// function will return a negative value to signal an error. +SKCMS_API int skcms_GetInputChannelCount(const skcms_ICCProfile*); + +// These are common ICC signature values +typedef enum skcms_Signature { + // common data_color_space values + skcms_Signature_CMYK = 0x434D594B, + skcms_Signature_Gray = 0x47524159, + skcms_Signature_RGB = 0x52474220, + + // pcs (or data_color_space) + skcms_Signature_Lab = 0x4C616220, + skcms_Signature_XYZ = 0x58595A20, + + // other, less common data_color_space values + skcms_Signature_CIELUV = 0x4C757620, + skcms_Signature_YCbCr = 0x59436272, + skcms_Signature_CIEYxy = 0x59787920, + skcms_Signature_HSV = 0x48535620, + skcms_Signature_HLS = 0x484C5320, + skcms_Signature_CMY = 0x434D5920, + skcms_Signature_2CLR = 0x32434C52, + skcms_Signature_3CLR = 0x33434C52, + skcms_Signature_4CLR = 0x34434C52, + skcms_Signature_5CLR = 0x35434C52, + skcms_Signature_6CLR = 0x36434C52, + skcms_Signature_7CLR = 0x37434C52, + skcms_Signature_8CLR = 0x38434C52, + skcms_Signature_9CLR = 0x39434C52, + skcms_Signature_10CLR = 0x41434C52, + skcms_Signature_11CLR = 0x42434C52, + skcms_Signature_12CLR = 0x43434C52, + skcms_Signature_13CLR = 0x44434C52, + skcms_Signature_14CLR = 0x45434C52, + skcms_Signature_15CLR = 0x46434C52, +} skcms_Signature; + +typedef enum skcms_PixelFormat { + skcms_PixelFormat_A_8, + skcms_PixelFormat_A_8_, + skcms_PixelFormat_G_8, + skcms_PixelFormat_G_8_, + skcms_PixelFormat_GA_88, // Grayscale with alpha. + skcms_PixelFormat_GA_88_, + + skcms_PixelFormat_RGB_565, + skcms_PixelFormat_BGR_565, + + skcms_PixelFormat_ABGR_4444, + skcms_PixelFormat_ARGB_4444, + + skcms_PixelFormat_RGB_888, + skcms_PixelFormat_BGR_888, + skcms_PixelFormat_RGBA_8888, + skcms_PixelFormat_BGRA_8888, + skcms_PixelFormat_RGBA_8888_sRGB, // Automatic sRGB encoding / decoding. + skcms_PixelFormat_BGRA_8888_sRGB, // (Generally used with linear transfer functions.) + + skcms_PixelFormat_RGBA_1010102, + skcms_PixelFormat_BGRA_1010102, + + skcms_PixelFormat_RGB_161616LE, // Little-endian. Pointers must be 16-bit aligned. + skcms_PixelFormat_BGR_161616LE, + skcms_PixelFormat_RGBA_16161616LE, + skcms_PixelFormat_BGRA_16161616LE, + + skcms_PixelFormat_RGB_161616BE, // Big-endian. Pointers must be 16-bit aligned. + skcms_PixelFormat_BGR_161616BE, + skcms_PixelFormat_RGBA_16161616BE, + skcms_PixelFormat_BGRA_16161616BE, + + skcms_PixelFormat_RGB_hhh_Norm, // 1-5-10 half-precision float in [0,1] + skcms_PixelFormat_BGR_hhh_Norm, // Pointers must be 16-bit aligned. + skcms_PixelFormat_RGBA_hhhh_Norm, + skcms_PixelFormat_BGRA_hhhh_Norm, + + skcms_PixelFormat_RGB_hhh, // 1-5-10 half-precision float. + skcms_PixelFormat_BGR_hhh, // Pointers must be 16-bit aligned. + skcms_PixelFormat_RGBA_hhhh, + skcms_PixelFormat_BGRA_hhhh, + + skcms_PixelFormat_RGB_fff, // 1-8-23 single-precision float (the normal kind). + skcms_PixelFormat_BGR_fff, // Pointers must be 32-bit aligned. + skcms_PixelFormat_RGBA_ffff, + skcms_PixelFormat_BGRA_ffff, + + skcms_PixelFormat_RGB_101010x_XR, // Note: This is located here to signal no clamping. + skcms_PixelFormat_BGR_101010x_XR, // Compatible with MTLPixelFormatBGR10_XR. + skcms_PixelFormat_RGBA_10101010_XR, // Note: This is located here to signal no clamping. + skcms_PixelFormat_BGRA_10101010_XR, // Compatible with MTLPixelFormatBGRA10_XR. +} skcms_PixelFormat; + +// We always store any alpha channel linearly. In the chart below, tf-1() is the inverse +// transfer function for the given color profile (applying the transfer function linearizes). + +// We treat opaque as a strong requirement, not just a performance hint: we will ignore +// any source alpha and treat it as 1.0, and will make sure that any destination alpha +// channel is filled with the equivalent of 1.0. + +// We used to offer multiple types of premultiplication, but now just one, PremulAsEncoded. +// This is the premul you're probably used to working with. + +typedef enum skcms_AlphaFormat { + skcms_AlphaFormat_Opaque, // alpha is always opaque + // tf-1(r), tf-1(g), tf-1(b), 1.0 + skcms_AlphaFormat_Unpremul, // alpha and color are unassociated + // tf-1(r), tf-1(g), tf-1(b), a + skcms_AlphaFormat_PremulAsEncoded, // premultiplied while encoded + // tf-1(r)*a, tf-1(g)*a, tf-1(b)*a, a +} skcms_AlphaFormat; + +// Convert npixels pixels from src format and color profile to dst format and color profile +// and return true, otherwise return false. It is safe to alias dst == src if dstFmt == srcFmt. +SKCMS_API bool skcms_Transform(const void* src, + skcms_PixelFormat srcFmt, + skcms_AlphaFormat srcAlpha, + const skcms_ICCProfile* srcProfile, + void* dst, + skcms_PixelFormat dstFmt, + skcms_AlphaFormat dstAlpha, + const skcms_ICCProfile* dstProfile, + size_t npixels); + +// If profile can be used as a destination in skcms_Transform, return true. Otherwise, attempt to +// rewrite it with approximations where reasonable. If successful, return true. If no reasonable +// approximation exists, leave the profile unchanged and return false. +SKCMS_API bool skcms_MakeUsableAsDestination(skcms_ICCProfile* profile); + +// If profile can be used as a destination with a single parametric transfer function (ie for +// rasterization), return true. Otherwise, attempt to rewrite it with approximations where +// reasonable. If successful, return true. If no reasonable approximation exists, leave the +// profile unchanged and return false. +SKCMS_API bool skcms_MakeUsableAsDestinationWithSingleCurve(skcms_ICCProfile* profile); + +// Returns a matrix to adapt XYZ color from given the whitepoint to D50. +SKCMS_API bool skcms_AdaptToXYZD50(float wx, float wy, + skcms_Matrix3x3* toXYZD50); + +// Returns a matrix to convert RGB color into XYZ adapted to D50, given the +// primaries and whitepoint of the RGB model. +SKCMS_API bool skcms_PrimariesToXYZD50(float rx, float ry, + float gx, float gy, + float bx, float by, + float wx, float wy, + skcms_Matrix3x3* toXYZD50); + +// Call before your first call to skcms_Transform() to skip runtime CPU detection. +SKCMS_API void skcms_DisableRuntimeCPUDetection(void); + +// Utilities for programmatically constructing profiles +static inline void skcms_Init(skcms_ICCProfile* p) { + memset(p, 0, sizeof(*p)); + p->data_color_space = skcms_Signature_RGB; + p->pcs = skcms_Signature_XYZ; +} + +static inline void skcms_SetTransferFunction(skcms_ICCProfile* p, + const skcms_TransferFunction* tf) { + p->has_trc = true; + for (int i = 0; i < 3; ++i) { + p->trc[i].table_entries = 0; + p->trc[i].parametric = *tf; + } +} + +static inline void skcms_SetXYZD50(skcms_ICCProfile* p, const skcms_Matrix3x3* m) { + p->has_toXYZD50 = true; + p->toXYZD50 = *m; +} + +#ifdef __cplusplus +} +#endif diff --git a/vendor/artifacts/skia/include/skcms/version.sha1 b/vendor/artifacts/skia/include/skcms/version.sha1 new file mode 100755 index 000000000..ebfc220c1 --- /dev/null +++ b/vendor/artifacts/skia/include/skcms/version.sha1 @@ -0,0 +1 @@ +6010f3583977f651726b24228f7e6a377e47c58d diff --git a/vendor/artifacts/skia/include/sksl/BUILD.bazel b/vendor/artifacts/skia/include/sksl/BUILD.bazel new file mode 100644 index 000000000..9b36c2e8b --- /dev/null +++ b/vendor/artifacts/skia/include/sksl/BUILD.bazel @@ -0,0 +1,25 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "SkSLDebugTrace.h", + "SkSLVersion.h", +] + +skia_filegroup( + name = "core_hdrs", + srcs = PUBLIC_HEADERS, + visibility = [ + "//src/core:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/sksl/SkSLDebugTrace.h b/vendor/artifacts/skia/include/sksl/SkSLDebugTrace.h new file mode 100644 index 000000000..e6a4023fa --- /dev/null +++ b/vendor/artifacts/skia/include/sksl/SkSLDebugTrace.h @@ -0,0 +1,25 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SKSL_DEBUG_TRACE +#define SKSL_DEBUG_TRACE + +#include "include/core/SkRefCnt.h" + +class SkWStream; + +namespace SkSL { + +class DebugTrace : public SkRefCnt { +public: + /** Generates a human-readable dump of the debug trace. */ + virtual void dump(SkWStream* o) const = 0; +}; + +} // namespace SkSL + +#endif diff --git a/vendor/artifacts/skia/include/sksl/SkSLVersion.h b/vendor/artifacts/skia/include/sksl/SkSLVersion.h new file mode 100644 index 000000000..ad059d580 --- /dev/null +++ b/vendor/artifacts/skia/include/sksl/SkSLVersion.h @@ -0,0 +1,27 @@ +/* + * Copyright 2022 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSLVersion_DEFINED +#define SkSLVersion_DEFINED + +namespace SkSL { + +enum class Version { + /** + * Desktop GLSL 1.10, GLSL ES 1.00, WebGL 1.0 + */ + k100, + + /** + * Desktop GLSL 3.30, GLSL ES 3.00, WebGL 2.0 + */ + k300, +}; + +} // namespace SkSL + +#endif diff --git a/vendor/artifacts/skia/include/svg/BUILD.bazel b/vendor/artifacts/skia/include/svg/BUILD.bazel new file mode 100644 index 000000000..3649c9c42 --- /dev/null +++ b/vendor/artifacts/skia/include/svg/BUILD.bazel @@ -0,0 +1,22 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = ["SkSVGCanvas.h"] + +skia_filegroup( + name = "public_hdrs", + srcs = PUBLIC_HEADERS, + visibility = [ + "//src/svg:__pkg__", + ], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/svg/SkSVGCanvas.h b/vendor/artifacts/skia/include/svg/SkSVGCanvas.h new file mode 100644 index 000000000..87ebf7b64 --- /dev/null +++ b/vendor/artifacts/skia/include/svg/SkSVGCanvas.h @@ -0,0 +1,62 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkSVGCanvas_DEFINED +#define SkSVGCanvas_DEFINED + +#include "include/core/SkTypes.h" + +#include +#include + +class SkCanvas; +class SkWStream; +class SkPixmap; +struct SkRect; + +class SK_API SkSVGCanvas { +public: + enum Flags { + kConvertTextToPaths_Flag = 0x01, // emit text as s + kNoPrettyXML_Flag = 0x02, // suppress newlines and tabs in output + kRelativePathEncoding_Flag = 0x04, // use relative commands for path encoding + }; + + using EncodePngCallback = bool (*)(SkWStream* dst, const SkPixmap& src); + + struct Options { + Flags flags = static_cast(0x00); + + /** Clients can provide a way to encode png. + * + * If `pngEncoder` is null and `SK_DISABLE_LEGACY_SVG_FACTORIES` isn't + * set then this will be (temporarily, until the legacy mode is + * removed) filled based on presence of + * `SK_CODEC_ENCODES_PNG_WITH_RUST` and/or + * `SK_CODEC_ENCODES_PNG_WITH_LIBPNG`. + */ + EncodePngCallback pngEncoder = nullptr; + }; + + /** + * Returns a new canvas that will generate SVG commands from its draw calls, and send + * them to the provided stream. Ownership of the stream is not transfered, and it must + * remain valid for the lifetime of the returned canvas. + * + * The canvas may buffer some drawing calls, so the output is not guaranteed to be valid + * or complete until the canvas instance is deleted. + * + * The 'bounds' parameter defines an initial SVG viewport (viewBox attribute on the root + * SVG element). + */ + static std::unique_ptr Make(const SkRect& bounds, SkWStream*, Options opts); +#if !defined(SK_DISABLE_LEGACY_SVG_FACTORIES) + static std::unique_ptr Make(const SkRect& bounds, SkWStream*, uint32_t flags = 0); +#endif +}; + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/BUILD.bazel b/vendor/artifacts/skia/include/third_party/vulkan/BUILD.bazel new file mode 100644 index 000000000..57d227b49 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/BUILD.bazel @@ -0,0 +1,38 @@ +load("//bazel:skia_rules.bzl", "skia_cc_library") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_cc_library( + name = "vulkan", + hdrs = [ + "vulkan/vk_icd.h", + "vulkan/vk_layer.h", + "vulkan/vk_video/vulkan_video_codec_av1std.h", + "vulkan/vk_video/vulkan_video_codec_av1std_decode.h", + "vulkan/vk_video/vulkan_video_codec_av1std_encode.h", + "vulkan/vk_video/vulkan_video_codec_h264std.h", + "vulkan/vk_video/vulkan_video_codec_h264std_decode.h", + "vulkan/vk_video/vulkan_video_codec_h264std_encode.h", + "vulkan/vk_video/vulkan_video_codec_h265std.h", + "vulkan/vk_video/vulkan_video_codec_h265std_decode.h", + "vulkan/vk_video/vulkan_video_codec_h265std_encode.h", + "vulkan/vk_video/vulkan_video_codec_vp9std.h", + "vulkan/vk_video/vulkan_video_codec_vp9std_decode.h", + "vulkan/vk_video/vulkan_video_codecs_common.h", + "vulkan/vulkan.h", + "vulkan/vulkan.hpp", + "vulkan/vulkan_core.h", + "vulkan/vulkan_screen.h", + ], + includes = ["."], + textual_hdrs = [ + "vulkan/vk_platform.h", + "vulkan/vulkan_android.h", + "vulkan/vulkan_xcb.h", + ], #TODO(kjlubick) The other files are necessary on different platforms + visibility = ["//:__subpackages__"], +) diff --git a/vendor/artifacts/skia/include/third_party/vulkan/LICENSE b/vendor/artifacts/skia/include/third_party/vulkan/LICENSE new file mode 100644 index 000000000..6c7c5be36 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/LICENSE @@ -0,0 +1,29 @@ +// Copyright (c) 2018 Google Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-------------------------------------------------------------------------------- diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_icd.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_icd.h new file mode 100644 index 000000000..d71f5682a --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_icd.h @@ -0,0 +1,245 @@ +/* + * Copyright 2015-2023 The Khronos Group Inc. + * Copyright 2015-2023 Valve Corporation + * Copyright 2015-2023 LunarG, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ +#pragma once + +#include "vulkan.h" +#include + +// Loader-ICD version negotiation API. Versions add the following features: +// Version 0 - Initial. Doesn't support vk_icdGetInstanceProcAddr +// or vk_icdNegotiateLoaderICDInterfaceVersion. +// Version 1 - Add support for vk_icdGetInstanceProcAddr. +// Version 2 - Add Loader/ICD Interface version negotiation +// via vk_icdNegotiateLoaderICDInterfaceVersion. +// Version 3 - Add ICD creation/destruction of KHR_surface objects. +// Version 4 - Add unknown physical device extension querying via +// vk_icdGetPhysicalDeviceProcAddr. +// Version 5 - Tells ICDs that the loader is now paying attention to the +// application version of Vulkan passed into the ApplicationInfo +// structure during vkCreateInstance. This will tell the ICD +// that if the loader is older, it should automatically fail a +// call for any API version > 1.0. Otherwise, the loader will +// manually determine if it can support the expected version. +// Version 6 - Add support for vk_icdEnumerateAdapterPhysicalDevices. +// Version 7 - If an ICD supports any of the following functions, they must be +// queryable with vk_icdGetInstanceProcAddr: +// vk_icdNegotiateLoaderICDInterfaceVersion +// vk_icdGetPhysicalDeviceProcAddr +// vk_icdEnumerateAdapterPhysicalDevices (Windows only) +// In addition, these functions no longer need to be exported directly. +// This version allows drivers provided through the extension +// VK_LUNARG_direct_driver_loading be able to support the entire +// Driver-Loader interface. + +#define CURRENT_LOADER_ICD_INTERFACE_VERSION 7 +#define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0 +#define MIN_PHYS_DEV_EXTENSION_ICD_INTERFACE_VERSION 4 + +// Old typedefs that don't follow a proper naming convention but are preserved for compatibility +typedef VkResult(VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion); +// This is defined in vk_layer.h which will be found by the loader, but if an ICD is building against this +// file directly, it won't be found. +#ifndef IS_DEFINED_PFN_GetPhysicalDeviceProcAddr +typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char *pName); +#define IS_DEFINED_PFN_GetPhysicalDeviceProcAddr +#endif + +// Typedefs for loader/ICD interface +typedef VkResult (VKAPI_PTR *PFN_vk_icdNegotiateLoaderICDInterfaceVersion)(uint32_t* pVersion); +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetInstanceProcAddr)(VkInstance instance, const char* pName); +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vk_icdGetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName); +#if defined(VK_USE_PLATFORM_WIN32_KHR) +typedef VkResult (VKAPI_PTR *PFN_vk_icdEnumerateAdapterPhysicalDevices)(VkInstance instance, LUID adapterLUID, + uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); +#endif + +// Prototypes for loader/ICD interface +#if !defined(VK_NO_PROTOTYPES) +#ifdef __cplusplus +extern "C" { +#endif + VKAPI_ATTR VkResult VKAPI_CALL vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pVersion); + VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(VkInstance instance, const char* pName); + VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(VkInstance instance, const char* pName); +#if defined(VK_USE_PLATFORM_WIN32_KHR) + VKAPI_ATTR VkResult VKAPI_CALL vk_icdEnumerateAdapterPhysicalDevices(VkInstance instance, LUID adapterLUID, + uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); +#endif +#ifdef __cplusplus +} +#endif +#endif + +/* + * The ICD must reserve space for a pointer for the loader's dispatch + * table, at the start of . + * The ICD must initialize this variable using the SET_LOADER_MAGIC_VALUE macro. + */ + +#define ICD_LOADER_MAGIC 0x01CDC0DE + +typedef union { + uintptr_t loaderMagic; + void *loaderData; +} VK_LOADER_DATA; + +static inline void set_loader_magic_value(void *pNewObject) { + VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject; + loader_info->loaderMagic = ICD_LOADER_MAGIC; +} + +static inline bool valid_loader_magic_value(void *pNewObject) { + const VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *)pNewObject; + return (loader_info->loaderMagic & 0xffffffff) == ICD_LOADER_MAGIC; +} + +/* + * Windows and Linux ICDs will treat VkSurfaceKHR as a pointer to a struct that + * contains the platform-specific connection and surface information. + */ +typedef enum { + VK_ICD_WSI_PLATFORM_MIR, + VK_ICD_WSI_PLATFORM_WAYLAND, + VK_ICD_WSI_PLATFORM_WIN32, + VK_ICD_WSI_PLATFORM_XCB, + VK_ICD_WSI_PLATFORM_XLIB, + VK_ICD_WSI_PLATFORM_ANDROID, + VK_ICD_WSI_PLATFORM_MACOS, + VK_ICD_WSI_PLATFORM_IOS, + VK_ICD_WSI_PLATFORM_DISPLAY, + VK_ICD_WSI_PLATFORM_HEADLESS, + VK_ICD_WSI_PLATFORM_METAL, + VK_ICD_WSI_PLATFORM_DIRECTFB, + VK_ICD_WSI_PLATFORM_VI, + VK_ICD_WSI_PLATFORM_GGP, + VK_ICD_WSI_PLATFORM_SCREEN, + VK_ICD_WSI_PLATFORM_FUCHSIA, +} VkIcdWsiPlatform; + +typedef struct { + VkIcdWsiPlatform platform; +} VkIcdSurfaceBase; + +#ifdef VK_USE_PLATFORM_MIR_KHR +typedef struct { + VkIcdSurfaceBase base; + MirConnection *connection; + MirSurface *mirSurface; +} VkIcdSurfaceMir; +#endif // VK_USE_PLATFORM_MIR_KHR + +#ifdef VK_USE_PLATFORM_WAYLAND_KHR +typedef struct { + VkIcdSurfaceBase base; + struct wl_display *display; + struct wl_surface *surface; +} VkIcdSurfaceWayland; +#endif // VK_USE_PLATFORM_WAYLAND_KHR + +#ifdef VK_USE_PLATFORM_WIN32_KHR +typedef struct { + VkIcdSurfaceBase base; + HINSTANCE hinstance; + HWND hwnd; +} VkIcdSurfaceWin32; +#endif // VK_USE_PLATFORM_WIN32_KHR + +#ifdef VK_USE_PLATFORM_XCB_KHR +typedef struct { + VkIcdSurfaceBase base; + xcb_connection_t *connection; + xcb_window_t window; +} VkIcdSurfaceXcb; +#endif // VK_USE_PLATFORM_XCB_KHR + +#ifdef VK_USE_PLATFORM_XLIB_KHR +typedef struct { + VkIcdSurfaceBase base; + Display *dpy; + Window window; +} VkIcdSurfaceXlib; +#endif // VK_USE_PLATFORM_XLIB_KHR + +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT +typedef struct { + VkIcdSurfaceBase base; + IDirectFB *dfb; + IDirectFBSurface *surface; +} VkIcdSurfaceDirectFB; +#endif // VK_USE_PLATFORM_DIRECTFB_EXT + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +typedef struct { + VkIcdSurfaceBase base; + struct ANativeWindow *window; +} VkIcdSurfaceAndroid; +#endif // VK_USE_PLATFORM_ANDROID_KHR + +#ifdef VK_USE_PLATFORM_MACOS_MVK +typedef struct { + VkIcdSurfaceBase base; + const void *pView; +} VkIcdSurfaceMacOS; +#endif // VK_USE_PLATFORM_MACOS_MVK + +#ifdef VK_USE_PLATFORM_IOS_MVK +typedef struct { + VkIcdSurfaceBase base; + const void *pView; +} VkIcdSurfaceIOS; +#endif // VK_USE_PLATFORM_IOS_MVK + +#ifdef VK_USE_PLATFORM_GGP +typedef struct { + VkIcdSurfaceBase base; + GgpStreamDescriptor streamDescriptor; +} VkIcdSurfaceGgp; +#endif // VK_USE_PLATFORM_GGP + +typedef struct { + VkIcdSurfaceBase base; + VkDisplayModeKHR displayMode; + uint32_t planeIndex; + uint32_t planeStackIndex; + VkSurfaceTransformFlagBitsKHR transform; + float globalAlpha; + VkDisplayPlaneAlphaFlagBitsKHR alphaMode; + VkExtent2D imageExtent; +} VkIcdSurfaceDisplay; + +typedef struct { + VkIcdSurfaceBase base; +} VkIcdSurfaceHeadless; + +#ifdef VK_USE_PLATFORM_METAL_EXT +typedef struct { + VkIcdSurfaceBase base; + const CAMetalLayer *pLayer; +} VkIcdSurfaceMetal; +#endif // VK_USE_PLATFORM_METAL_EXT + +#ifdef VK_USE_PLATFORM_VI_NN +typedef struct { + VkIcdSurfaceBase base; + void *window; +} VkIcdSurfaceVi; +#endif // VK_USE_PLATFORM_VI_NN + +#ifdef VK_USE_PLATFORM_SCREEN_QNX +typedef struct { + VkIcdSurfaceBase base; + struct _screen_context *context; + struct _screen_window *window; +} VkIcdSurfaceScreen; +#endif // VK_USE_PLATFORM_SCREEN_QNX + +#ifdef VK_USE_PLATFORM_FUCHSIA +typedef struct { + VkIcdSurfaceBase base; +} VkIcdSurfaceImagePipe; +#endif // VK_USE_PLATFORM_FUCHSIA diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_layer.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_layer.h new file mode 100644 index 000000000..19cf5880c --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_layer.h @@ -0,0 +1,192 @@ +/* + * Copyright 2015-2023 The Khronos Group Inc. + * Copyright 2015-2023 Valve Corporation + * Copyright 2015-2023 LunarG, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ +#pragma once + +/* Need to define dispatch table + * Core struct can then have ptr to dispatch table at the top + * Along with object ptrs for current and next OBJ + */ + +#include "vulkan_core.h" + +#define MAX_NUM_UNKNOWN_EXTS 250 + + // Loader-Layer version negotiation API. Versions add the following features: + // Versions 0/1 - Initial. Doesn't support vk_layerGetPhysicalDeviceProcAddr + // or vk_icdNegotiateLoaderLayerInterfaceVersion. + // Version 2 - Add support for vk_layerGetPhysicalDeviceProcAddr and + // vk_icdNegotiateLoaderLayerInterfaceVersion. +#define CURRENT_LOADER_LAYER_INTERFACE_VERSION 2 +#define MIN_SUPPORTED_LOADER_LAYER_INTERFACE_VERSION 1 + +#define VK_CURRENT_CHAIN_VERSION 1 + +// Typedef for use in the interfaces below +#ifndef IS_DEFINED_PFN_GetPhysicalDeviceProcAddr +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName); +#define IS_DEFINED_PFN_GetPhysicalDeviceProcAddr +#endif + +// Version negotiation values +typedef enum VkNegotiateLayerStructType { + LAYER_NEGOTIATE_UNINTIALIZED = 0, + LAYER_NEGOTIATE_INTERFACE_STRUCT = 1, +} VkNegotiateLayerStructType; + +// Version negotiation structures +typedef struct VkNegotiateLayerInterface { + VkNegotiateLayerStructType sType; + void *pNext; + uint32_t loaderLayerInterfaceVersion; + PFN_vkGetInstanceProcAddr pfnGetInstanceProcAddr; + PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr; + PFN_GetPhysicalDeviceProcAddr pfnGetPhysicalDeviceProcAddr; +} VkNegotiateLayerInterface; + +// Version negotiation functions +typedef VkResult (VKAPI_PTR *PFN_vkNegotiateLoaderLayerInterfaceVersion)(VkNegotiateLayerInterface *pVersionStruct); + +// Function prototype for unknown physical device extension command +typedef VkResult(VKAPI_PTR *PFN_PhysDevExt)(VkPhysicalDevice phys_device); + +// ------------------------------------------------------------------------------------------------ +// CreateInstance and CreateDevice support structures + +/* Sub type of structure for instance and device loader ext of CreateInfo. + * When sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO + * or sType == VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO + * then VkLayerFunction indicates struct type pointed to by pNext + */ +typedef enum VkLayerFunction_ { + VK_LAYER_LINK_INFO = 0, + VK_LOADER_DATA_CALLBACK = 1, + VK_LOADER_LAYER_CREATE_DEVICE_CALLBACK = 2, + VK_LOADER_FEATURES = 3, +} VkLayerFunction; + +typedef struct VkLayerInstanceLink_ { + struct VkLayerInstanceLink_ *pNext; + PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; + PFN_GetPhysicalDeviceProcAddr pfnNextGetPhysicalDeviceProcAddr; +} VkLayerInstanceLink; + +/* + * When creating the device chain the loader needs to pass + * down information about it's device structure needed at + * the end of the chain. Passing the data via the + * VkLayerDeviceInfo avoids issues with finding the + * exact instance being used. + */ +typedef struct VkLayerDeviceInfo_ { + void *device_info; + PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; +} VkLayerDeviceInfo; + +typedef VkResult (VKAPI_PTR *PFN_vkSetInstanceLoaderData)(VkInstance instance, + void *object); +typedef VkResult (VKAPI_PTR *PFN_vkSetDeviceLoaderData)(VkDevice device, + void *object); +typedef VkResult (VKAPI_PTR *PFN_vkLayerCreateDevice)(VkInstance instance, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo, + const VkAllocationCallbacks *pAllocator, VkDevice *pDevice, PFN_vkGetInstanceProcAddr layerGIPA, PFN_vkGetDeviceProcAddr *nextGDPA); +typedef void (VKAPI_PTR *PFN_vkLayerDestroyDevice)(VkDevice physicalDevice, const VkAllocationCallbacks *pAllocator, PFN_vkDestroyDevice destroyFunction); + +typedef enum VkLoaderFeastureFlagBits { + VK_LOADER_FEATURE_PHYSICAL_DEVICE_SORTING = 0x00000001, +} VkLoaderFlagBits; +typedef VkFlags VkLoaderFeatureFlags; + +typedef struct { + VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO + const void *pNext; + VkLayerFunction function; + union { + VkLayerInstanceLink *pLayerInfo; + PFN_vkSetInstanceLoaderData pfnSetInstanceLoaderData; + struct { + PFN_vkLayerCreateDevice pfnLayerCreateDevice; + PFN_vkLayerDestroyDevice pfnLayerDestroyDevice; + } layerDevice; + VkLoaderFeatureFlags loaderFeatures; + } u; +} VkLayerInstanceCreateInfo; + +typedef struct VkLayerDeviceLink_ { + struct VkLayerDeviceLink_ *pNext; + PFN_vkGetInstanceProcAddr pfnNextGetInstanceProcAddr; + PFN_vkGetDeviceProcAddr pfnNextGetDeviceProcAddr; +} VkLayerDeviceLink; + +typedef struct { + VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO + const void *pNext; + VkLayerFunction function; + union { + VkLayerDeviceLink *pLayerInfo; + PFN_vkSetDeviceLoaderData pfnSetDeviceLoaderData; + } u; +} VkLayerDeviceCreateInfo; + +#ifdef __cplusplus +extern "C" { +#endif + +VKAPI_ATTR VkResult VKAPI_CALL vkNegotiateLoaderLayerInterfaceVersion(VkNegotiateLayerInterface *pVersionStruct); + +typedef enum VkChainType { + VK_CHAIN_TYPE_UNKNOWN = 0, + VK_CHAIN_TYPE_ENUMERATE_INSTANCE_EXTENSION_PROPERTIES = 1, + VK_CHAIN_TYPE_ENUMERATE_INSTANCE_LAYER_PROPERTIES = 2, + VK_CHAIN_TYPE_ENUMERATE_INSTANCE_VERSION = 3, +} VkChainType; + +typedef struct VkChainHeader { + VkChainType type; + uint32_t version; + uint32_t size; +} VkChainHeader; + +typedef struct VkEnumerateInstanceExtensionPropertiesChain { + VkChainHeader header; + VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceExtensionPropertiesChain *, const char *, uint32_t *, + VkExtensionProperties *); + const struct VkEnumerateInstanceExtensionPropertiesChain *pNextLink; + +#if defined(__cplusplus) + inline VkResult CallDown(const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties) const { + return pfnNextLayer(pNextLink, pLayerName, pPropertyCount, pProperties); + } +#endif +} VkEnumerateInstanceExtensionPropertiesChain; + +typedef struct VkEnumerateInstanceLayerPropertiesChain { + VkChainHeader header; + VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceLayerPropertiesChain *, uint32_t *, VkLayerProperties *); + const struct VkEnumerateInstanceLayerPropertiesChain *pNextLink; + +#if defined(__cplusplus) + inline VkResult CallDown(uint32_t *pPropertyCount, VkLayerProperties *pProperties) const { + return pfnNextLayer(pNextLink, pPropertyCount, pProperties); + } +#endif +} VkEnumerateInstanceLayerPropertiesChain; + +typedef struct VkEnumerateInstanceVersionChain { + VkChainHeader header; + VkResult(VKAPI_PTR *pfnNextLayer)(const struct VkEnumerateInstanceVersionChain *, uint32_t *); + const struct VkEnumerateInstanceVersionChain *pNextLink; + +#if defined(__cplusplus) + inline VkResult CallDown(uint32_t *pApiVersion) const { + return pfnNextLayer(pNextLink, pApiVersion); + } +#endif +} VkEnumerateInstanceVersionChain; + +#ifdef __cplusplus +} +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_platform.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_platform.h new file mode 100644 index 000000000..e431c7631 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_platform.h @@ -0,0 +1,84 @@ +// +// File: vk_platform.h +// +/* +** Copyright 2014-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + + +#ifndef VK_PLATFORM_H_ +#define VK_PLATFORM_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif // __cplusplus + +/* +*************************************************************************************************** +* Platform-specific directives and type declarations +*************************************************************************************************** +*/ + +/* Platform-specific calling convention macros. + * + * Platforms should define these so that Vulkan clients call Vulkan commands + * with the same calling conventions that the Vulkan implementation expects. + * + * VKAPI_ATTR - Placed before the return type in function declarations. + * Useful for C++11 and GCC/Clang-style function attribute syntax. + * VKAPI_CALL - Placed after the return type in function declarations. + * Useful for MSVC-style calling convention syntax. + * VKAPI_PTR - Placed between the '(' and '*' in function pointer types. + * + * Function declaration: VKAPI_ATTR void VKAPI_CALL vkCommand(void); + * Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void); + */ +#if defined(_WIN32) + // On Windows, Vulkan commands use the stdcall convention + #define VKAPI_ATTR + #define VKAPI_CALL __stdcall + #define VKAPI_PTR VKAPI_CALL +#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7 + #error "Vulkan is not supported for the 'armeabi' NDK ABI" +#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE) + // On Android 32-bit ARM targets, Vulkan functions use the "hardfloat" + // calling convention, i.e. float parameters are passed in registers. This + // is true even if the rest of the application passes floats on the stack, + // as it does by default when compiling for the armeabi-v7a NDK ABI. + #define VKAPI_ATTR __attribute__((pcs("aapcs-vfp"))) + #define VKAPI_CALL + #define VKAPI_PTR VKAPI_ATTR +#else + // On other platforms, use the default calling convention + #define VKAPI_ATTR + #define VKAPI_CALL + #define VKAPI_PTR +#endif + +#if !defined(VK_NO_STDDEF_H) + #include +#endif // !defined(VK_NO_STDDEF_H) + +#if !defined(VK_NO_STDINT_H) + #if defined(_MSC_VER) && (_MSC_VER < 1600) + typedef signed __int8 int8_t; + typedef unsigned __int8 uint8_t; + typedef signed __int16 int16_t; + typedef unsigned __int16 uint16_t; + typedef signed __int32 int32_t; + typedef unsigned __int32 uint32_t; + typedef signed __int64 int64_t; + typedef unsigned __int64 uint64_t; + #else + #include + #endif +#endif // !defined(VK_NO_STDINT_H) + +#ifdef __cplusplus +} // extern "C" +#endif // __cplusplus + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std.h new file mode 100644 index 000000000..75cebd74c --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std.h @@ -0,0 +1,394 @@ +#ifndef VULKAN_VIDEO_CODEC_AV1STD_H_ +#define VULKAN_VIDEO_CODEC_AV1STD_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_av1std is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_av1std 1 +#include "vulkan_video_codecs_common.h" +#define STD_VIDEO_AV1_NUM_REF_FRAMES 8U +#define STD_VIDEO_AV1_REFS_PER_FRAME 7U +#define STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME 8U +#define STD_VIDEO_AV1_MAX_TILE_COLS 64U +#define STD_VIDEO_AV1_MAX_TILE_ROWS 64U +#define STD_VIDEO_AV1_MAX_SEGMENTS 8U +#define STD_VIDEO_AV1_SEG_LVL_MAX 8U +#define STD_VIDEO_AV1_PRIMARY_REF_NONE 7U +#define STD_VIDEO_AV1_SELECT_INTEGER_MV 2U +#define STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS 2U +#define STD_VIDEO_AV1_SKIP_MODE_FRAMES 2U +#define STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS 4U +#define STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS 2U +#define STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS 8U +#define STD_VIDEO_AV1_MAX_NUM_PLANES 3U +#define STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS 6U +#define STD_VIDEO_AV1_MAX_NUM_Y_POINTS 14U +#define STD_VIDEO_AV1_MAX_NUM_CB_POINTS 10U +#define STD_VIDEO_AV1_MAX_NUM_CR_POINTS 10U +#define STD_VIDEO_AV1_MAX_NUM_POS_LUMA 24U +#define STD_VIDEO_AV1_MAX_NUM_POS_CHROMA 25U + +typedef enum StdVideoAV1Profile { + STD_VIDEO_AV1_PROFILE_MAIN = 0, + STD_VIDEO_AV1_PROFILE_HIGH = 1, + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2, + STD_VIDEO_AV1_PROFILE_INVALID = 0x7FFFFFFF, + STD_VIDEO_AV1_PROFILE_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1Profile; + +typedef enum StdVideoAV1Level { + STD_VIDEO_AV1_LEVEL_2_0 = 0, + STD_VIDEO_AV1_LEVEL_2_1 = 1, + STD_VIDEO_AV1_LEVEL_2_2 = 2, + STD_VIDEO_AV1_LEVEL_2_3 = 3, + STD_VIDEO_AV1_LEVEL_3_0 = 4, + STD_VIDEO_AV1_LEVEL_3_1 = 5, + STD_VIDEO_AV1_LEVEL_3_2 = 6, + STD_VIDEO_AV1_LEVEL_3_3 = 7, + STD_VIDEO_AV1_LEVEL_4_0 = 8, + STD_VIDEO_AV1_LEVEL_4_1 = 9, + STD_VIDEO_AV1_LEVEL_4_2 = 10, + STD_VIDEO_AV1_LEVEL_4_3 = 11, + STD_VIDEO_AV1_LEVEL_5_0 = 12, + STD_VIDEO_AV1_LEVEL_5_1 = 13, + STD_VIDEO_AV1_LEVEL_5_2 = 14, + STD_VIDEO_AV1_LEVEL_5_3 = 15, + STD_VIDEO_AV1_LEVEL_6_0 = 16, + STD_VIDEO_AV1_LEVEL_6_1 = 17, + STD_VIDEO_AV1_LEVEL_6_2 = 18, + STD_VIDEO_AV1_LEVEL_6_3 = 19, + STD_VIDEO_AV1_LEVEL_7_0 = 20, + STD_VIDEO_AV1_LEVEL_7_1 = 21, + STD_VIDEO_AV1_LEVEL_7_2 = 22, + STD_VIDEO_AV1_LEVEL_7_3 = 23, + STD_VIDEO_AV1_LEVEL_INVALID = 0x7FFFFFFF, + STD_VIDEO_AV1_LEVEL_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1Level; + +typedef enum StdVideoAV1FrameType { + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0, + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1, + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2, + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3, + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 0x7FFFFFFF, + STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1FrameType; + +typedef enum StdVideoAV1ReferenceName { + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0, + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1, + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2, + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3, + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4, + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5, + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6, + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7, + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 0x7FFFFFFF, + STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1ReferenceName; + +typedef enum StdVideoAV1InterpolationFilter { + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0, + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1, + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2, + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3, + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4, + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 0x7FFFFFFF, + STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1InterpolationFilter; + +typedef enum StdVideoAV1TxMode { + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0, + STD_VIDEO_AV1_TX_MODE_LARGEST = 1, + STD_VIDEO_AV1_TX_MODE_SELECT = 2, + STD_VIDEO_AV1_TX_MODE_INVALID = 0x7FFFFFFF, + STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1TxMode; + +typedef enum StdVideoAV1FrameRestorationType { + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0, + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1, + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2, + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3, + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 0x7FFFFFFF, + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1FrameRestorationType; + +typedef enum StdVideoAV1ColorPrimaries { + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1, + STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED = 2, + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4, + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5, + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6, + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7, + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8, + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9, + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10, + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11, + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12, + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22, + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 0x7FFFFFFF, + // STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED is a legacy alias + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED, + STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1ColorPrimaries; + +typedef enum StdVideoAV1TransferCharacteristics { + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 0x7FFFFFFF, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1TransferCharacteristics; + +typedef enum StdVideoAV1MatrixCoefficients { + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 0x7FFFFFFF, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1MatrixCoefficients; + +typedef enum StdVideoAV1ChromaSamplePosition { + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0, + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1, + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2, + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3, + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 0x7FFFFFFF, + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 0x7FFFFFFF +} StdVideoAV1ChromaSamplePosition; +typedef struct StdVideoAV1ColorConfigFlags { + uint32_t mono_chrome : 1; + uint32_t color_range : 1; + uint32_t separate_uv_delta_q : 1; + uint32_t color_description_present_flag : 1; + uint32_t reserved : 28; +} StdVideoAV1ColorConfigFlags; + +typedef struct StdVideoAV1ColorConfig { + StdVideoAV1ColorConfigFlags flags; + uint8_t BitDepth; + uint8_t subsampling_x; + uint8_t subsampling_y; + uint8_t reserved1; + StdVideoAV1ColorPrimaries color_primaries; + StdVideoAV1TransferCharacteristics transfer_characteristics; + StdVideoAV1MatrixCoefficients matrix_coefficients; + StdVideoAV1ChromaSamplePosition chroma_sample_position; +} StdVideoAV1ColorConfig; + +typedef struct StdVideoAV1TimingInfoFlags { + uint32_t equal_picture_interval : 1; + uint32_t reserved : 31; +} StdVideoAV1TimingInfoFlags; + +typedef struct StdVideoAV1TimingInfo { + StdVideoAV1TimingInfoFlags flags; + uint32_t num_units_in_display_tick; + uint32_t time_scale; + uint32_t num_ticks_per_picture_minus_1; +} StdVideoAV1TimingInfo; + +typedef struct StdVideoAV1LoopFilterFlags { + uint32_t loop_filter_delta_enabled : 1; + uint32_t loop_filter_delta_update : 1; + uint32_t reserved : 30; +} StdVideoAV1LoopFilterFlags; + +typedef struct StdVideoAV1LoopFilter { + StdVideoAV1LoopFilterFlags flags; + uint8_t loop_filter_level[STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS]; + uint8_t loop_filter_sharpness; + uint8_t update_ref_delta; + int8_t loop_filter_ref_deltas[STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME]; + uint8_t update_mode_delta; + int8_t loop_filter_mode_deltas[STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS]; +} StdVideoAV1LoopFilter; + +typedef struct StdVideoAV1QuantizationFlags { + uint32_t using_qmatrix : 1; + uint32_t diff_uv_delta : 1; + uint32_t reserved : 30; +} StdVideoAV1QuantizationFlags; + +typedef struct StdVideoAV1Quantization { + StdVideoAV1QuantizationFlags flags; + uint8_t base_q_idx; + int8_t DeltaQYDc; + int8_t DeltaQUDc; + int8_t DeltaQUAc; + int8_t DeltaQVDc; + int8_t DeltaQVAc; + uint8_t qm_y; + uint8_t qm_u; + uint8_t qm_v; +} StdVideoAV1Quantization; + +typedef struct StdVideoAV1Segmentation { + uint8_t FeatureEnabled[STD_VIDEO_AV1_MAX_SEGMENTS]; + int16_t FeatureData[STD_VIDEO_AV1_MAX_SEGMENTS][STD_VIDEO_AV1_SEG_LVL_MAX]; +} StdVideoAV1Segmentation; + +typedef struct StdVideoAV1TileInfoFlags { + uint32_t uniform_tile_spacing_flag : 1; + uint32_t reserved : 31; +} StdVideoAV1TileInfoFlags; + +typedef struct StdVideoAV1TileInfo { + StdVideoAV1TileInfoFlags flags; + uint8_t TileCols; + uint8_t TileRows; + uint16_t context_update_tile_id; + uint8_t tile_size_bytes_minus_1; + uint8_t reserved1[7]; + const uint16_t* pMiColStarts; + const uint16_t* pMiRowStarts; + const uint16_t* pWidthInSbsMinus1; + const uint16_t* pHeightInSbsMinus1; +} StdVideoAV1TileInfo; + +typedef struct StdVideoAV1CDEF { + uint8_t cdef_damping_minus_3; + uint8_t cdef_bits; + uint8_t cdef_y_pri_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; + uint8_t cdef_y_sec_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; + uint8_t cdef_uv_pri_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; + uint8_t cdef_uv_sec_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; +} StdVideoAV1CDEF; + +typedef struct StdVideoAV1LoopRestoration { + StdVideoAV1FrameRestorationType FrameRestorationType[STD_VIDEO_AV1_MAX_NUM_PLANES]; + uint16_t LoopRestorationSize[STD_VIDEO_AV1_MAX_NUM_PLANES]; +} StdVideoAV1LoopRestoration; + +typedef struct StdVideoAV1GlobalMotion { + uint8_t GmType[STD_VIDEO_AV1_NUM_REF_FRAMES]; + int32_t gm_params[STD_VIDEO_AV1_NUM_REF_FRAMES][STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS]; +} StdVideoAV1GlobalMotion; + +typedef struct StdVideoAV1FilmGrainFlags { + uint32_t chroma_scaling_from_luma : 1; + uint32_t overlap_flag : 1; + uint32_t clip_to_restricted_range : 1; + uint32_t update_grain : 1; + uint32_t reserved : 28; +} StdVideoAV1FilmGrainFlags; + +typedef struct StdVideoAV1FilmGrain { + StdVideoAV1FilmGrainFlags flags; + uint8_t grain_scaling_minus_8; + uint8_t ar_coeff_lag; + uint8_t ar_coeff_shift_minus_6; + uint8_t grain_scale_shift; + uint16_t grain_seed; + uint8_t film_grain_params_ref_idx; + uint8_t num_y_points; + uint8_t point_y_value[STD_VIDEO_AV1_MAX_NUM_Y_POINTS]; + uint8_t point_y_scaling[STD_VIDEO_AV1_MAX_NUM_Y_POINTS]; + uint8_t num_cb_points; + uint8_t point_cb_value[STD_VIDEO_AV1_MAX_NUM_CB_POINTS]; + uint8_t point_cb_scaling[STD_VIDEO_AV1_MAX_NUM_CB_POINTS]; + uint8_t num_cr_points; + uint8_t point_cr_value[STD_VIDEO_AV1_MAX_NUM_CR_POINTS]; + uint8_t point_cr_scaling[STD_VIDEO_AV1_MAX_NUM_CR_POINTS]; + int8_t ar_coeffs_y_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_LUMA]; + int8_t ar_coeffs_cb_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_CHROMA]; + int8_t ar_coeffs_cr_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_CHROMA]; + uint8_t cb_mult; + uint8_t cb_luma_mult; + uint16_t cb_offset; + uint8_t cr_mult; + uint8_t cr_luma_mult; + uint16_t cr_offset; +} StdVideoAV1FilmGrain; + +typedef struct StdVideoAV1SequenceHeaderFlags { + uint32_t still_picture : 1; + uint32_t reduced_still_picture_header : 1; + uint32_t use_128x128_superblock : 1; + uint32_t enable_filter_intra : 1; + uint32_t enable_intra_edge_filter : 1; + uint32_t enable_interintra_compound : 1; + uint32_t enable_masked_compound : 1; + uint32_t enable_warped_motion : 1; + uint32_t enable_dual_filter : 1; + uint32_t enable_order_hint : 1; + uint32_t enable_jnt_comp : 1; + uint32_t enable_ref_frame_mvs : 1; + uint32_t frame_id_numbers_present_flag : 1; + uint32_t enable_superres : 1; + uint32_t enable_cdef : 1; + uint32_t enable_restoration : 1; + uint32_t film_grain_params_present : 1; + uint32_t timing_info_present_flag : 1; + uint32_t initial_display_delay_present_flag : 1; + uint32_t reserved : 13; +} StdVideoAV1SequenceHeaderFlags; + +typedef struct StdVideoAV1SequenceHeader { + StdVideoAV1SequenceHeaderFlags flags; + StdVideoAV1Profile seq_profile; + uint8_t frame_width_bits_minus_1; + uint8_t frame_height_bits_minus_1; + uint16_t max_frame_width_minus_1; + uint16_t max_frame_height_minus_1; + uint8_t delta_frame_id_length_minus_2; + uint8_t additional_frame_id_length_minus_1; + uint8_t order_hint_bits_minus_1; + uint8_t seq_force_integer_mv; + uint8_t seq_force_screen_content_tools; + uint8_t reserved1[5]; + const StdVideoAV1ColorConfig* pColorConfig; + const StdVideoAV1TimingInfo* pTimingInfo; +} StdVideoAV1SequenceHeader; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_decode.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_decode.h new file mode 100644 index 000000000..60bf2c039 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_decode.h @@ -0,0 +1,109 @@ +#ifndef VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ +#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_av1std_decode is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_av1std_decode 1 +#include "vulkan_video_codec_av1std.h" + +#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 +#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_av1_decode" +typedef struct StdVideoDecodeAV1PictureInfoFlags { + uint32_t error_resilient_mode : 1; + uint32_t disable_cdf_update : 1; + uint32_t use_superres : 1; + uint32_t render_and_frame_size_different : 1; + uint32_t allow_screen_content_tools : 1; + uint32_t is_filter_switchable : 1; + uint32_t force_integer_mv : 1; + uint32_t frame_size_override_flag : 1; + uint32_t buffer_removal_time_present_flag : 1; + uint32_t allow_intrabc : 1; + uint32_t frame_refs_short_signaling : 1; + uint32_t allow_high_precision_mv : 1; + uint32_t is_motion_mode_switchable : 1; + uint32_t use_ref_frame_mvs : 1; + uint32_t disable_frame_end_update_cdf : 1; + uint32_t allow_warped_motion : 1; + uint32_t reduced_tx_set : 1; + uint32_t reference_select : 1; + uint32_t skip_mode_present : 1; + uint32_t delta_q_present : 1; + uint32_t delta_lf_present : 1; + uint32_t delta_lf_multi : 1; + uint32_t segmentation_enabled : 1; + uint32_t segmentation_update_map : 1; + uint32_t segmentation_temporal_update : 1; + uint32_t segmentation_update_data : 1; + uint32_t UsesLr : 1; + uint32_t usesChromaLr : 1; + uint32_t apply_grain : 1; + uint32_t reserved : 3; +} StdVideoDecodeAV1PictureInfoFlags; + +typedef struct StdVideoDecodeAV1PictureInfo { + StdVideoDecodeAV1PictureInfoFlags flags; + StdVideoAV1FrameType frame_type; + uint32_t current_frame_id; + uint8_t OrderHint; + uint8_t primary_ref_frame; + uint8_t refresh_frame_flags; + uint8_t reserved1; + StdVideoAV1InterpolationFilter interpolation_filter; + StdVideoAV1TxMode TxMode; + uint8_t delta_q_res; + uint8_t delta_lf_res; + uint8_t SkipModeFrame[STD_VIDEO_AV1_SKIP_MODE_FRAMES]; + uint8_t coded_denom; + uint8_t reserved2[3]; + uint8_t OrderHints[STD_VIDEO_AV1_NUM_REF_FRAMES]; + uint32_t expectedFrameId[STD_VIDEO_AV1_NUM_REF_FRAMES]; + const StdVideoAV1TileInfo* pTileInfo; + const StdVideoAV1Quantization* pQuantization; + const StdVideoAV1Segmentation* pSegmentation; + const StdVideoAV1LoopFilter* pLoopFilter; + const StdVideoAV1CDEF* pCDEF; + const StdVideoAV1LoopRestoration* pLoopRestoration; + const StdVideoAV1GlobalMotion* pGlobalMotion; + const StdVideoAV1FilmGrain* pFilmGrain; +} StdVideoDecodeAV1PictureInfo; + +typedef struct StdVideoDecodeAV1ReferenceInfoFlags { + uint32_t disable_frame_end_update_cdf : 1; + uint32_t segmentation_enabled : 1; + uint32_t reserved : 30; +} StdVideoDecodeAV1ReferenceInfoFlags; + +typedef struct StdVideoDecodeAV1ReferenceInfo { + StdVideoDecodeAV1ReferenceInfoFlags flags; + uint8_t frame_type; + uint8_t RefFrameSignBias; + uint8_t OrderHint; + uint8_t SavedOrderHints[STD_VIDEO_AV1_NUM_REF_FRAMES]; +} StdVideoDecodeAV1ReferenceInfo; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_encode.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_encode.h new file mode 100644 index 000000000..3602fe125 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_av1std_encode.h @@ -0,0 +1,143 @@ +#ifndef VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ +#define VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_av1std_encode is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_av1std_encode 1 +#include "vulkan_video_codec_av1std.h" + +#define VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +#define VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 +#define VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_av1_encode" +typedef struct StdVideoEncodeAV1DecoderModelInfo { + uint8_t buffer_delay_length_minus_1; + uint8_t buffer_removal_time_length_minus_1; + uint8_t frame_presentation_time_length_minus_1; + uint8_t reserved1; + uint32_t num_units_in_decoding_tick; +} StdVideoEncodeAV1DecoderModelInfo; + +typedef struct StdVideoEncodeAV1ExtensionHeader { + uint8_t temporal_id; + uint8_t spatial_id; +} StdVideoEncodeAV1ExtensionHeader; + +typedef struct StdVideoEncodeAV1OperatingPointInfoFlags { + uint32_t decoder_model_present_for_this_op : 1; + uint32_t low_delay_mode_flag : 1; + uint32_t initial_display_delay_present_for_this_op : 1; + uint32_t reserved : 29; +} StdVideoEncodeAV1OperatingPointInfoFlags; + +typedef struct StdVideoEncodeAV1OperatingPointInfo { + StdVideoEncodeAV1OperatingPointInfoFlags flags; + uint16_t operating_point_idc; + uint8_t seq_level_idx; + uint8_t seq_tier; + uint32_t decoder_buffer_delay; + uint32_t encoder_buffer_delay; + uint8_t initial_display_delay_minus_1; +} StdVideoEncodeAV1OperatingPointInfo; + +typedef struct StdVideoEncodeAV1PictureInfoFlags { + uint32_t error_resilient_mode : 1; + uint32_t disable_cdf_update : 1; + uint32_t use_superres : 1; + uint32_t render_and_frame_size_different : 1; + uint32_t allow_screen_content_tools : 1; + uint32_t is_filter_switchable : 1; + uint32_t force_integer_mv : 1; + uint32_t frame_size_override_flag : 1; + uint32_t buffer_removal_time_present_flag : 1; + uint32_t allow_intrabc : 1; + uint32_t frame_refs_short_signaling : 1; + uint32_t allow_high_precision_mv : 1; + uint32_t is_motion_mode_switchable : 1; + uint32_t use_ref_frame_mvs : 1; + uint32_t disable_frame_end_update_cdf : 1; + uint32_t allow_warped_motion : 1; + uint32_t reduced_tx_set : 1; + uint32_t skip_mode_present : 1; + uint32_t delta_q_present : 1; + uint32_t delta_lf_present : 1; + uint32_t delta_lf_multi : 1; + uint32_t segmentation_enabled : 1; + uint32_t segmentation_update_map : 1; + uint32_t segmentation_temporal_update : 1; + uint32_t segmentation_update_data : 1; + uint32_t UsesLr : 1; + uint32_t usesChromaLr : 1; + uint32_t show_frame : 1; + uint32_t showable_frame : 1; + uint32_t reserved : 3; +} StdVideoEncodeAV1PictureInfoFlags; + +typedef struct StdVideoEncodeAV1PictureInfo { + StdVideoEncodeAV1PictureInfoFlags flags; + StdVideoAV1FrameType frame_type; + uint32_t frame_presentation_time; + uint32_t current_frame_id; + uint8_t order_hint; + uint8_t primary_ref_frame; + uint8_t refresh_frame_flags; + uint8_t coded_denom; + uint16_t render_width_minus_1; + uint16_t render_height_minus_1; + StdVideoAV1InterpolationFilter interpolation_filter; + StdVideoAV1TxMode TxMode; + uint8_t delta_q_res; + uint8_t delta_lf_res; + uint8_t ref_order_hint[STD_VIDEO_AV1_NUM_REF_FRAMES]; + int8_t ref_frame_idx[STD_VIDEO_AV1_REFS_PER_FRAME]; + uint8_t reserved1[3]; + uint32_t delta_frame_id_minus_1[STD_VIDEO_AV1_REFS_PER_FRAME]; + const StdVideoAV1TileInfo* pTileInfo; + const StdVideoAV1Quantization* pQuantization; + const StdVideoAV1Segmentation* pSegmentation; + const StdVideoAV1LoopFilter* pLoopFilter; + const StdVideoAV1CDEF* pCDEF; + const StdVideoAV1LoopRestoration* pLoopRestoration; + const StdVideoAV1GlobalMotion* pGlobalMotion; + const StdVideoEncodeAV1ExtensionHeader* pExtensionHeader; + const uint32_t* pBufferRemovalTimes; +} StdVideoEncodeAV1PictureInfo; + +typedef struct StdVideoEncodeAV1ReferenceInfoFlags { + uint32_t disable_frame_end_update_cdf : 1; + uint32_t segmentation_enabled : 1; + uint32_t reserved : 30; +} StdVideoEncodeAV1ReferenceInfoFlags; + +typedef struct StdVideoEncodeAV1ReferenceInfo { + StdVideoEncodeAV1ReferenceInfoFlags flags; + uint32_t RefFrameId; + StdVideoAV1FrameType frame_type; + uint8_t OrderHint; + uint8_t reserved1[3]; + const StdVideoEncodeAV1ExtensionHeader* pExtensionHeader; +} StdVideoEncodeAV1ReferenceInfo; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h new file mode 100644 index 000000000..48621b695 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std.h @@ -0,0 +1,312 @@ +#ifndef VULKAN_VIDEO_CODEC_H264STD_H_ +#define VULKAN_VIDEO_CODEC_H264STD_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_h264std is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_h264std 1 +#include "vulkan_video_codecs_common.h" +#define STD_VIDEO_H264_CPB_CNT_LIST_SIZE 32U +#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS 6U +#define STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS 16U +#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS 6U +#define STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS 64U +#define STD_VIDEO_H264_MAX_NUM_LIST_REF 32U +#define STD_VIDEO_H264_MAX_CHROMA_PLANES 2U +#define STD_VIDEO_H264_NO_REFERENCE_PICTURE 0xFFU + +typedef enum 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, + STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF, + STD_VIDEO_H264_CHROMA_FORMAT_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264ChromaFormatIdc; + +typedef enum 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 = 0x7FFFFFFF, + STD_VIDEO_H264_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264ProfileIdc; + +typedef enum StdVideoH264LevelIdc { + STD_VIDEO_H264_LEVEL_IDC_1_0 = 0, + STD_VIDEO_H264_LEVEL_IDC_1_1 = 1, + STD_VIDEO_H264_LEVEL_IDC_1_2 = 2, + STD_VIDEO_H264_LEVEL_IDC_1_3 = 3, + STD_VIDEO_H264_LEVEL_IDC_2_0 = 4, + STD_VIDEO_H264_LEVEL_IDC_2_1 = 5, + STD_VIDEO_H264_LEVEL_IDC_2_2 = 6, + STD_VIDEO_H264_LEVEL_IDC_3_0 = 7, + STD_VIDEO_H264_LEVEL_IDC_3_1 = 8, + STD_VIDEO_H264_LEVEL_IDC_3_2 = 9, + STD_VIDEO_H264_LEVEL_IDC_4_0 = 10, + STD_VIDEO_H264_LEVEL_IDC_4_1 = 11, + STD_VIDEO_H264_LEVEL_IDC_4_2 = 12, + STD_VIDEO_H264_LEVEL_IDC_5_0 = 13, + STD_VIDEO_H264_LEVEL_IDC_5_1 = 14, + STD_VIDEO_H264_LEVEL_IDC_5_2 = 15, + STD_VIDEO_H264_LEVEL_IDC_6_0 = 16, + STD_VIDEO_H264_LEVEL_IDC_6_1 = 17, + STD_VIDEO_H264_LEVEL_IDC_6_2 = 18, + STD_VIDEO_H264_LEVEL_IDC_INVALID = 0x7FFFFFFF, + STD_VIDEO_H264_LEVEL_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264LevelIdc; + +typedef enum 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 = 0x7FFFFFFF, + STD_VIDEO_H264_POC_TYPE_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264PocType; + +typedef enum 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 = 0x7FFFFFFF, + STD_VIDEO_H264_ASPECT_RATIO_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264AspectRatioIdc; + +typedef enum StdVideoH264WeightedBipredIdc { + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT = 0, + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT = 1, + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT = 2, + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID = 0x7FFFFFFF, + STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264WeightedBipredIdc; + +typedef enum 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 = 0x7FFFFFFF, + STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264ModificationOfPicNumsIdc; + +typedef enum 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 = 0x7FFFFFFF, + STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264MemMgmtControlOp; + +typedef enum 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 = 0x7FFFFFFF, + STD_VIDEO_H264_CABAC_INIT_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264CabacInitIdc; + +typedef enum 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 = 0x7FFFFFFF, + STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264DisableDeblockingFilterIdc; + +typedef enum StdVideoH264SliceType { + STD_VIDEO_H264_SLICE_TYPE_P = 0, + STD_VIDEO_H264_SLICE_TYPE_B = 1, + STD_VIDEO_H264_SLICE_TYPE_I = 2, + STD_VIDEO_H264_SLICE_TYPE_INVALID = 0x7FFFFFFF, + STD_VIDEO_H264_SLICE_TYPE_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264SliceType; + +typedef enum StdVideoH264PictureType { + STD_VIDEO_H264_PICTURE_TYPE_P = 0, + STD_VIDEO_H264_PICTURE_TYPE_B = 1, + STD_VIDEO_H264_PICTURE_TYPE_I = 2, + STD_VIDEO_H264_PICTURE_TYPE_IDR = 5, + STD_VIDEO_H264_PICTURE_TYPE_INVALID = 0x7FFFFFFF, + STD_VIDEO_H264_PICTURE_TYPE_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264PictureType; + +typedef enum 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 = 0x7FFFFFFF, + STD_VIDEO_H264_NON_VCL_NALU_TYPE_MAX_ENUM = 0x7FFFFFFF +} StdVideoH264NonVclNaluType; +typedef struct StdVideoH264SpsVuiFlags { + uint32_t aspect_ratio_info_present_flag : 1; + uint32_t overscan_info_present_flag : 1; + uint32_t overscan_appropriate_flag : 1; + uint32_t video_signal_type_present_flag : 1; + uint32_t video_full_range_flag : 1; + uint32_t color_description_present_flag : 1; + uint32_t chroma_loc_info_present_flag : 1; + uint32_t timing_info_present_flag : 1; + uint32_t fixed_frame_rate_flag : 1; + uint32_t bitstream_restriction_flag : 1; + uint32_t nal_hrd_parameters_present_flag : 1; + uint32_t vcl_hrd_parameters_present_flag : 1; +} StdVideoH264SpsVuiFlags; + +typedef struct StdVideoH264HrdParameters { + uint8_t cpb_cnt_minus1; + uint8_t bit_rate_scale; + uint8_t cpb_size_scale; + uint8_t reserved1; + uint32_t bit_rate_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE]; + uint32_t cpb_size_value_minus1[STD_VIDEO_H264_CPB_CNT_LIST_SIZE]; + uint8_t cbr_flag[STD_VIDEO_H264_CPB_CNT_LIST_SIZE]; + uint32_t initial_cpb_removal_delay_length_minus1; + uint32_t cpb_removal_delay_length_minus1; + uint32_t dpb_output_delay_length_minus1; + uint32_t time_offset_length; +} StdVideoH264HrdParameters; + +typedef struct StdVideoH264SequenceParameterSetVui { + StdVideoH264SpsVuiFlags flags; + StdVideoH264AspectRatioIdc aspect_ratio_idc; + uint16_t sar_width; + uint16_t sar_height; + uint8_t video_format; + uint8_t colour_primaries; + uint8_t transfer_characteristics; + uint8_t matrix_coefficients; + uint32_t num_units_in_tick; + uint32_t time_scale; + uint8_t max_num_reorder_frames; + uint8_t max_dec_frame_buffering; + uint8_t chroma_sample_loc_type_top_field; + uint8_t chroma_sample_loc_type_bottom_field; + uint32_t reserved1; + const StdVideoH264HrdParameters* pHrdParameters; +} StdVideoH264SequenceParameterSetVui; + +typedef struct StdVideoH264SpsFlags { + uint32_t constraint_set0_flag : 1; + uint32_t constraint_set1_flag : 1; + uint32_t constraint_set2_flag : 1; + uint32_t constraint_set3_flag : 1; + uint32_t constraint_set4_flag : 1; + uint32_t constraint_set5_flag : 1; + uint32_t direct_8x8_inference_flag : 1; + uint32_t mb_adaptive_frame_field_flag : 1; + uint32_t frame_mbs_only_flag : 1; + uint32_t delta_pic_order_always_zero_flag : 1; + uint32_t separate_colour_plane_flag : 1; + uint32_t gaps_in_frame_num_value_allowed_flag : 1; + uint32_t qpprime_y_zero_transform_bypass_flag : 1; + uint32_t frame_cropping_flag : 1; + uint32_t seq_scaling_matrix_present_flag : 1; + uint32_t vui_parameters_present_flag : 1; +} StdVideoH264SpsFlags; + +typedef struct StdVideoH264ScalingLists { + uint16_t scaling_list_present_mask; + uint16_t use_default_scaling_matrix_mask; + uint8_t ScalingList4x4[STD_VIDEO_H264_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_4X4_NUM_ELEMENTS]; + uint8_t ScalingList8x8[STD_VIDEO_H264_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H264_SCALING_LIST_8X8_NUM_ELEMENTS]; +} StdVideoH264ScalingLists; + +typedef struct StdVideoH264SequenceParameterSet { + StdVideoH264SpsFlags flags; + StdVideoH264ProfileIdc profile_idc; + StdVideoH264LevelIdc level_idc; + StdVideoH264ChromaFormatIdc chroma_format_idc; + uint8_t seq_parameter_set_id; + uint8_t bit_depth_luma_minus8; + uint8_t bit_depth_chroma_minus8; + uint8_t log2_max_frame_num_minus4; + StdVideoH264PocType pic_order_cnt_type; + int32_t offset_for_non_ref_pic; + int32_t offset_for_top_to_bottom_field; + uint8_t log2_max_pic_order_cnt_lsb_minus4; + uint8_t num_ref_frames_in_pic_order_cnt_cycle; + uint8_t max_num_ref_frames; + uint8_t reserved1; + uint32_t pic_width_in_mbs_minus1; + uint32_t pic_height_in_map_units_minus1; + uint32_t frame_crop_left_offset; + uint32_t frame_crop_right_offset; + uint32_t frame_crop_top_offset; + uint32_t frame_crop_bottom_offset; + uint32_t reserved2; + const int32_t* pOffsetForRefFrame; + const StdVideoH264ScalingLists* pScalingLists; + const StdVideoH264SequenceParameterSetVui* pSequenceParameterSetVui; +} StdVideoH264SequenceParameterSet; + +typedef struct StdVideoH264PpsFlags { + uint32_t transform_8x8_mode_flag : 1; + uint32_t redundant_pic_cnt_present_flag : 1; + uint32_t constrained_intra_pred_flag : 1; + uint32_t deblocking_filter_control_present_flag : 1; + uint32_t weighted_pred_flag : 1; + uint32_t bottom_field_pic_order_in_frame_present_flag : 1; + uint32_t entropy_coding_mode_flag : 1; + uint32_t pic_scaling_matrix_present_flag : 1; +} StdVideoH264PpsFlags; + +typedef struct StdVideoH264PictureParameterSet { + StdVideoH264PpsFlags flags; + uint8_t seq_parameter_set_id; + uint8_t pic_parameter_set_id; + uint8_t num_ref_idx_l0_default_active_minus1; + uint8_t num_ref_idx_l1_default_active_minus1; + StdVideoH264WeightedBipredIdc weighted_bipred_idc; + int8_t pic_init_qp_minus26; + int8_t pic_init_qs_minus26; + int8_t chroma_qp_index_offset; + int8_t second_chroma_qp_index_offset; + const StdVideoH264ScalingLists* pScalingLists; +} StdVideoH264PictureParameterSet; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h new file mode 100644 index 000000000..a6bfe9d82 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_decode.h @@ -0,0 +1,77 @@ +#ifndef VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ +#define VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_h264std_decode is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_h264std_decode 1 +#include "vulkan_video_codec_h264std.h" + +#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_API_VERSION_1_0_0 +#define VK_STD_VULKAN_VIDEO_CODEC_H264_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_decode" +#define STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE 2U + +typedef enum StdVideoDecodeH264FieldOrderCount { + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP = 0, + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM = 1, + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID = 0x7FFFFFFF, + STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_MAX_ENUM = 0x7FFFFFFF +} StdVideoDecodeH264FieldOrderCount; +typedef struct StdVideoDecodeH264PictureInfoFlags { + uint32_t field_pic_flag : 1; + uint32_t is_intra : 1; + uint32_t IdrPicFlag : 1; + uint32_t bottom_field_flag : 1; + uint32_t is_reference : 1; + uint32_t complementary_field_pair : 1; +} StdVideoDecodeH264PictureInfoFlags; + +typedef struct StdVideoDecodeH264PictureInfo { + StdVideoDecodeH264PictureInfoFlags flags; + uint8_t seq_parameter_set_id; + uint8_t pic_parameter_set_id; + uint8_t reserved1; + uint8_t reserved2; + uint16_t frame_num; + uint16_t idr_pic_id; + int32_t PicOrderCnt[STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE]; +} StdVideoDecodeH264PictureInfo; + +typedef struct StdVideoDecodeH264ReferenceInfoFlags { + uint32_t top_field_flag : 1; + uint32_t bottom_field_flag : 1; + uint32_t used_for_long_term_reference : 1; + uint32_t is_non_existing : 1; +} StdVideoDecodeH264ReferenceInfoFlags; + +typedef struct StdVideoDecodeH264ReferenceInfo { + StdVideoDecodeH264ReferenceInfoFlags flags; + uint16_t FrameNum; + uint16_t reserved; + int32_t PicOrderCnt[STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_LIST_SIZE]; +} StdVideoDecodeH264ReferenceInfo; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_encode.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_encode.h new file mode 100644 index 000000000..2d42ac321 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h264std_encode.h @@ -0,0 +1,147 @@ +#ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ +#define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_h264std_encode is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_h264std_encode 1 +#include "vulkan_video_codec_h264std.h" + +#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 +#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_encode" +typedef struct StdVideoEncodeH264WeightTableFlags { + uint32_t luma_weight_l0_flag; + uint32_t chroma_weight_l0_flag; + uint32_t luma_weight_l1_flag; + uint32_t chroma_weight_l1_flag; +} StdVideoEncodeH264WeightTableFlags; + +typedef struct StdVideoEncodeH264WeightTable { + StdVideoEncodeH264WeightTableFlags flags; + uint8_t luma_log2_weight_denom; + uint8_t chroma_log2_weight_denom; + int8_t luma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF]; + int8_t luma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF]; + int8_t chroma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES]; + int8_t chroma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES]; + int8_t luma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF]; + int8_t luma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF]; + int8_t chroma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES]; + int8_t chroma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES]; +} StdVideoEncodeH264WeightTable; + +typedef struct StdVideoEncodeH264SliceHeaderFlags { + uint32_t direct_spatial_mv_pred_flag : 1; + uint32_t num_ref_idx_active_override_flag : 1; + uint32_t reserved : 30; +} StdVideoEncodeH264SliceHeaderFlags; + +typedef struct StdVideoEncodeH264PictureInfoFlags { + uint32_t IdrPicFlag : 1; + uint32_t is_reference : 1; + uint32_t no_output_of_prior_pics_flag : 1; + uint32_t long_term_reference_flag : 1; + uint32_t adaptive_ref_pic_marking_mode_flag : 1; + uint32_t reserved : 27; +} StdVideoEncodeH264PictureInfoFlags; + +typedef struct StdVideoEncodeH264ReferenceInfoFlags { + uint32_t used_for_long_term_reference : 1; + uint32_t reserved : 31; +} StdVideoEncodeH264ReferenceInfoFlags; + +typedef struct StdVideoEncodeH264ReferenceListsInfoFlags { + uint32_t ref_pic_list_modification_flag_l0 : 1; + uint32_t ref_pic_list_modification_flag_l1 : 1; + uint32_t reserved : 30; +} StdVideoEncodeH264ReferenceListsInfoFlags; + +typedef struct StdVideoEncodeH264RefListModEntry { + StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc; + uint16_t abs_diff_pic_num_minus1; + uint16_t long_term_pic_num; +} StdVideoEncodeH264RefListModEntry; + +typedef struct StdVideoEncodeH264RefPicMarkingEntry { + StdVideoH264MemMgmtControlOp memory_management_control_operation; + uint16_t difference_of_pic_nums_minus1; + uint16_t long_term_pic_num; + uint16_t long_term_frame_idx; + uint16_t max_long_term_frame_idx_plus1; +} StdVideoEncodeH264RefPicMarkingEntry; + +typedef struct StdVideoEncodeH264ReferenceListsInfo { + StdVideoEncodeH264ReferenceListsInfoFlags flags; + uint8_t num_ref_idx_l0_active_minus1; + uint8_t num_ref_idx_l1_active_minus1; + uint8_t RefPicList0[STD_VIDEO_H264_MAX_NUM_LIST_REF]; + uint8_t RefPicList1[STD_VIDEO_H264_MAX_NUM_LIST_REF]; + uint8_t refList0ModOpCount; + uint8_t refList1ModOpCount; + uint8_t refPicMarkingOpCount; + uint8_t reserved1[7]; + const StdVideoEncodeH264RefListModEntry* pRefList0ModOperations; + const StdVideoEncodeH264RefListModEntry* pRefList1ModOperations; + const StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations; +} StdVideoEncodeH264ReferenceListsInfo; + +typedef struct StdVideoEncodeH264PictureInfo { + StdVideoEncodeH264PictureInfoFlags flags; + uint8_t seq_parameter_set_id; + uint8_t pic_parameter_set_id; + uint16_t idr_pic_id; + StdVideoH264PictureType primary_pic_type; + uint32_t frame_num; + int32_t PicOrderCnt; + uint8_t temporal_id; + uint8_t reserved1[3]; + const StdVideoEncodeH264ReferenceListsInfo* pRefLists; +} StdVideoEncodeH264PictureInfo; + +typedef struct StdVideoEncodeH264ReferenceInfo { + StdVideoEncodeH264ReferenceInfoFlags flags; + StdVideoH264PictureType primary_pic_type; + uint32_t FrameNum; + int32_t PicOrderCnt; + uint16_t long_term_pic_num; + uint16_t long_term_frame_idx; + uint8_t temporal_id; +} StdVideoEncodeH264ReferenceInfo; + +typedef struct StdVideoEncodeH264SliceHeader { + StdVideoEncodeH264SliceHeaderFlags flags; + uint32_t first_mb_in_slice; + StdVideoH264SliceType slice_type; + int8_t slice_alpha_c0_offset_div2; + int8_t slice_beta_offset_div2; + int8_t slice_qp_delta; + uint8_t reserved1; + StdVideoH264CabacInitIdc cabac_init_idc; + StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc; + const StdVideoEncodeH264WeightTable* pWeightTable; +} StdVideoEncodeH264SliceHeader; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h new file mode 100644 index 000000000..23617b8f9 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std.h @@ -0,0 +1,446 @@ +#ifndef VULKAN_VIDEO_CODEC_H265STD_H_ +#define VULKAN_VIDEO_CODEC_H265STD_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_h265std is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_h265std 1 +#include "vulkan_video_codecs_common.h" +#define STD_VIDEO_H265_CPB_CNT_LIST_SIZE 32U +#define STD_VIDEO_H265_SUBLAYERS_LIST_SIZE 7U +#define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS 6U +#define STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS 16U +#define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS 6U +#define STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS 64U +#define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS 6U +#define STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS 64U +#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS 2U +#define STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS 64U +#define STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE 6U +#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE 19U +#define STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE 21U +#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE 3U +#define STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE 128U +#define STD_VIDEO_H265_MAX_NUM_LIST_REF 15U +#define STD_VIDEO_H265_MAX_CHROMA_PLANES 2U +#define STD_VIDEO_H265_MAX_SHORT_TERM_REF_PIC_SETS 64U +#define STD_VIDEO_H265_MAX_DPB_SIZE 16U +#define STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS 32U +#define STD_VIDEO_H265_MAX_LONG_TERM_PICS 16U +#define STD_VIDEO_H265_MAX_DELTA_POC 48U +#define STD_VIDEO_H265_NO_REFERENCE_PICTURE 0xFFU + +typedef enum 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, + STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID = 0x7FFFFFFF, + STD_VIDEO_H265_CHROMA_FORMAT_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH265ChromaFormatIdc; + +typedef enum 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 = 0x7FFFFFFF, + STD_VIDEO_H265_PROFILE_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH265ProfileIdc; + +typedef enum StdVideoH265LevelIdc { + STD_VIDEO_H265_LEVEL_IDC_1_0 = 0, + STD_VIDEO_H265_LEVEL_IDC_2_0 = 1, + STD_VIDEO_H265_LEVEL_IDC_2_1 = 2, + STD_VIDEO_H265_LEVEL_IDC_3_0 = 3, + STD_VIDEO_H265_LEVEL_IDC_3_1 = 4, + STD_VIDEO_H265_LEVEL_IDC_4_0 = 5, + STD_VIDEO_H265_LEVEL_IDC_4_1 = 6, + STD_VIDEO_H265_LEVEL_IDC_5_0 = 7, + STD_VIDEO_H265_LEVEL_IDC_5_1 = 8, + STD_VIDEO_H265_LEVEL_IDC_5_2 = 9, + STD_VIDEO_H265_LEVEL_IDC_6_0 = 10, + STD_VIDEO_H265_LEVEL_IDC_6_1 = 11, + STD_VIDEO_H265_LEVEL_IDC_6_2 = 12, + STD_VIDEO_H265_LEVEL_IDC_INVALID = 0x7FFFFFFF, + STD_VIDEO_H265_LEVEL_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH265LevelIdc; + +typedef enum StdVideoH265SliceType { + STD_VIDEO_H265_SLICE_TYPE_B = 0, + STD_VIDEO_H265_SLICE_TYPE_P = 1, + STD_VIDEO_H265_SLICE_TYPE_I = 2, + STD_VIDEO_H265_SLICE_TYPE_INVALID = 0x7FFFFFFF, + STD_VIDEO_H265_SLICE_TYPE_MAX_ENUM = 0x7FFFFFFF +} StdVideoH265SliceType; + +typedef enum StdVideoH265PictureType { + STD_VIDEO_H265_PICTURE_TYPE_P = 0, + STD_VIDEO_H265_PICTURE_TYPE_B = 1, + STD_VIDEO_H265_PICTURE_TYPE_I = 2, + STD_VIDEO_H265_PICTURE_TYPE_IDR = 3, + STD_VIDEO_H265_PICTURE_TYPE_INVALID = 0x7FFFFFFF, + STD_VIDEO_H265_PICTURE_TYPE_MAX_ENUM = 0x7FFFFFFF +} StdVideoH265PictureType; + +typedef enum StdVideoH265AspectRatioIdc { + STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED = 0, + STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE = 1, + STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11 = 2, + STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11 = 3, + STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11 = 4, + STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33 = 5, + STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11 = 6, + STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11 = 7, + STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11 = 8, + STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33 = 9, + STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11 = 10, + STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11 = 11, + STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33 = 12, + STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99 = 13, + STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3 = 14, + STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2 = 15, + STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1 = 16, + STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR = 255, + STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID = 0x7FFFFFFF, + STD_VIDEO_H265_ASPECT_RATIO_IDC_MAX_ENUM = 0x7FFFFFFF +} StdVideoH265AspectRatioIdc; +typedef struct StdVideoH265DecPicBufMgr { + uint32_t max_latency_increase_plus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE]; + uint8_t max_dec_pic_buffering_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE]; + uint8_t max_num_reorder_pics[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE]; +} StdVideoH265DecPicBufMgr; + +typedef struct StdVideoH265SubLayerHrdParameters { + uint32_t bit_rate_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE]; + uint32_t cpb_size_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE]; + uint32_t cpb_size_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE]; + uint32_t bit_rate_du_value_minus1[STD_VIDEO_H265_CPB_CNT_LIST_SIZE]; + uint32_t cbr_flag; +} StdVideoH265SubLayerHrdParameters; + +typedef struct StdVideoH265HrdFlags { + uint32_t nal_hrd_parameters_present_flag : 1; + uint32_t vcl_hrd_parameters_present_flag : 1; + uint32_t sub_pic_hrd_params_present_flag : 1; + uint32_t sub_pic_cpb_params_in_pic_timing_sei_flag : 1; + uint32_t fixed_pic_rate_general_flag : 8; + uint32_t fixed_pic_rate_within_cvs_flag : 8; + uint32_t low_delay_hrd_flag : 8; +} StdVideoH265HrdFlags; + +typedef struct StdVideoH265HrdParameters { + StdVideoH265HrdFlags flags; + uint8_t tick_divisor_minus2; + uint8_t du_cpb_removal_delay_increment_length_minus1; + uint8_t dpb_output_delay_du_length_minus1; + uint8_t bit_rate_scale; + uint8_t cpb_size_scale; + uint8_t cpb_size_du_scale; + uint8_t initial_cpb_removal_delay_length_minus1; + uint8_t au_cpb_removal_delay_length_minus1; + uint8_t dpb_output_delay_length_minus1; + uint8_t cpb_cnt_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE]; + uint16_t elemental_duration_in_tc_minus1[STD_VIDEO_H265_SUBLAYERS_LIST_SIZE]; + uint16_t reserved[3]; + const StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersNal; + const StdVideoH265SubLayerHrdParameters* pSubLayerHrdParametersVcl; +} StdVideoH265HrdParameters; + +typedef struct StdVideoH265VpsFlags { + uint32_t vps_temporal_id_nesting_flag : 1; + uint32_t vps_sub_layer_ordering_info_present_flag : 1; + uint32_t vps_timing_info_present_flag : 1; + uint32_t vps_poc_proportional_to_timing_flag : 1; +} StdVideoH265VpsFlags; + +typedef struct StdVideoH265ProfileTierLevelFlags { + uint32_t general_tier_flag : 1; + uint32_t general_progressive_source_flag : 1; + uint32_t general_interlaced_source_flag : 1; + uint32_t general_non_packed_constraint_flag : 1; + uint32_t general_frame_only_constraint_flag : 1; +} StdVideoH265ProfileTierLevelFlags; + +typedef struct StdVideoH265ProfileTierLevel { + StdVideoH265ProfileTierLevelFlags flags; + StdVideoH265ProfileIdc general_profile_idc; + StdVideoH265LevelIdc general_level_idc; +} StdVideoH265ProfileTierLevel; + +typedef struct StdVideoH265VideoParameterSet { + StdVideoH265VpsFlags flags; + uint8_t vps_video_parameter_set_id; + uint8_t vps_max_sub_layers_minus1; + uint8_t reserved1; + uint8_t reserved2; + uint32_t vps_num_units_in_tick; + uint32_t vps_time_scale; + uint32_t vps_num_ticks_poc_diff_one_minus1; + uint32_t reserved3; + const StdVideoH265DecPicBufMgr* pDecPicBufMgr; + const StdVideoH265HrdParameters* pHrdParameters; + const StdVideoH265ProfileTierLevel* pProfileTierLevel; +} StdVideoH265VideoParameterSet; + +typedef struct StdVideoH265ScalingLists { + uint8_t ScalingList4x4[STD_VIDEO_H265_SCALING_LIST_4X4_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_4X4_NUM_ELEMENTS]; + uint8_t ScalingList8x8[STD_VIDEO_H265_SCALING_LIST_8X8_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_8X8_NUM_ELEMENTS]; + uint8_t ScalingList16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS]; + uint8_t ScalingList32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS][STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS]; + uint8_t ScalingListDCCoef16x16[STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS]; + uint8_t ScalingListDCCoef32x32[STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS]; +} StdVideoH265ScalingLists; + +typedef struct StdVideoH265SpsVuiFlags { + uint32_t aspect_ratio_info_present_flag : 1; + uint32_t overscan_info_present_flag : 1; + uint32_t overscan_appropriate_flag : 1; + uint32_t video_signal_type_present_flag : 1; + uint32_t video_full_range_flag : 1; + uint32_t colour_description_present_flag : 1; + uint32_t chroma_loc_info_present_flag : 1; + uint32_t neutral_chroma_indication_flag : 1; + uint32_t field_seq_flag : 1; + uint32_t frame_field_info_present_flag : 1; + uint32_t default_display_window_flag : 1; + uint32_t vui_timing_info_present_flag : 1; + uint32_t vui_poc_proportional_to_timing_flag : 1; + uint32_t vui_hrd_parameters_present_flag : 1; + uint32_t bitstream_restriction_flag : 1; + uint32_t tiles_fixed_structure_flag : 1; + uint32_t motion_vectors_over_pic_boundaries_flag : 1; + uint32_t restricted_ref_pic_lists_flag : 1; +} StdVideoH265SpsVuiFlags; + +typedef struct StdVideoH265SequenceParameterSetVui { + StdVideoH265SpsVuiFlags flags; + StdVideoH265AspectRatioIdc aspect_ratio_idc; + uint16_t sar_width; + uint16_t sar_height; + uint8_t video_format; + uint8_t colour_primaries; + uint8_t transfer_characteristics; + uint8_t matrix_coeffs; + uint8_t chroma_sample_loc_type_top_field; + uint8_t chroma_sample_loc_type_bottom_field; + uint8_t reserved1; + uint8_t reserved2; + uint16_t def_disp_win_left_offset; + uint16_t def_disp_win_right_offset; + uint16_t def_disp_win_top_offset; + uint16_t def_disp_win_bottom_offset; + uint32_t vui_num_units_in_tick; + uint32_t vui_time_scale; + uint32_t vui_num_ticks_poc_diff_one_minus1; + uint16_t min_spatial_segmentation_idc; + uint16_t reserved3; + uint8_t max_bytes_per_pic_denom; + uint8_t max_bits_per_min_cu_denom; + uint8_t log2_max_mv_length_horizontal; + uint8_t log2_max_mv_length_vertical; + const StdVideoH265HrdParameters* pHrdParameters; +} StdVideoH265SequenceParameterSetVui; + +typedef struct StdVideoH265PredictorPaletteEntries { + uint16_t PredictorPaletteEntries[STD_VIDEO_H265_PREDICTOR_PALETTE_COMPONENTS_LIST_SIZE][STD_VIDEO_H265_PREDICTOR_PALETTE_COMP_ENTRIES_LIST_SIZE]; +} StdVideoH265PredictorPaletteEntries; + +typedef struct StdVideoH265SpsFlags { + uint32_t sps_temporal_id_nesting_flag : 1; + uint32_t separate_colour_plane_flag : 1; + uint32_t conformance_window_flag : 1; + uint32_t sps_sub_layer_ordering_info_present_flag : 1; + uint32_t scaling_list_enabled_flag : 1; + uint32_t sps_scaling_list_data_present_flag : 1; + uint32_t amp_enabled_flag : 1; + uint32_t sample_adaptive_offset_enabled_flag : 1; + uint32_t pcm_enabled_flag : 1; + uint32_t pcm_loop_filter_disabled_flag : 1; + uint32_t long_term_ref_pics_present_flag : 1; + uint32_t sps_temporal_mvp_enabled_flag : 1; + uint32_t strong_intra_smoothing_enabled_flag : 1; + uint32_t vui_parameters_present_flag : 1; + uint32_t sps_extension_present_flag : 1; + uint32_t sps_range_extension_flag : 1; + uint32_t transform_skip_rotation_enabled_flag : 1; + uint32_t transform_skip_context_enabled_flag : 1; + uint32_t implicit_rdpcm_enabled_flag : 1; + uint32_t explicit_rdpcm_enabled_flag : 1; + uint32_t extended_precision_processing_flag : 1; + uint32_t intra_smoothing_disabled_flag : 1; + uint32_t high_precision_offsets_enabled_flag : 1; + uint32_t persistent_rice_adaptation_enabled_flag : 1; + uint32_t cabac_bypass_alignment_enabled_flag : 1; + uint32_t sps_scc_extension_flag : 1; + uint32_t sps_curr_pic_ref_enabled_flag : 1; + uint32_t palette_mode_enabled_flag : 1; + uint32_t sps_palette_predictor_initializers_present_flag : 1; + uint32_t intra_boundary_filtering_disabled_flag : 1; +} StdVideoH265SpsFlags; + +typedef struct StdVideoH265ShortTermRefPicSetFlags { + uint32_t inter_ref_pic_set_prediction_flag : 1; + uint32_t delta_rps_sign : 1; +} StdVideoH265ShortTermRefPicSetFlags; + +typedef struct StdVideoH265ShortTermRefPicSet { + StdVideoH265ShortTermRefPicSetFlags flags; + uint32_t delta_idx_minus1; + uint16_t use_delta_flag; + uint16_t abs_delta_rps_minus1; + uint16_t used_by_curr_pic_flag; + uint16_t used_by_curr_pic_s0_flag; + uint16_t used_by_curr_pic_s1_flag; + uint16_t reserved1; + uint8_t reserved2; + uint8_t reserved3; + uint8_t num_negative_pics; + uint8_t num_positive_pics; + uint16_t delta_poc_s0_minus1[STD_VIDEO_H265_MAX_DPB_SIZE]; + uint16_t delta_poc_s1_minus1[STD_VIDEO_H265_MAX_DPB_SIZE]; +} StdVideoH265ShortTermRefPicSet; + +typedef struct StdVideoH265LongTermRefPicsSps { + uint32_t used_by_curr_pic_lt_sps_flag; + uint32_t lt_ref_pic_poc_lsb_sps[STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS]; +} StdVideoH265LongTermRefPicsSps; + +typedef struct StdVideoH265SequenceParameterSet { + StdVideoH265SpsFlags flags; + StdVideoH265ChromaFormatIdc chroma_format_idc; + uint32_t pic_width_in_luma_samples; + uint32_t pic_height_in_luma_samples; + uint8_t sps_video_parameter_set_id; + uint8_t sps_max_sub_layers_minus1; + uint8_t sps_seq_parameter_set_id; + uint8_t bit_depth_luma_minus8; + uint8_t bit_depth_chroma_minus8; + uint8_t log2_max_pic_order_cnt_lsb_minus4; + uint8_t log2_min_luma_coding_block_size_minus3; + uint8_t log2_diff_max_min_luma_coding_block_size; + uint8_t log2_min_luma_transform_block_size_minus2; + uint8_t log2_diff_max_min_luma_transform_block_size; + uint8_t max_transform_hierarchy_depth_inter; + uint8_t max_transform_hierarchy_depth_intra; + uint8_t num_short_term_ref_pic_sets; + uint8_t num_long_term_ref_pics_sps; + uint8_t pcm_sample_bit_depth_luma_minus1; + uint8_t pcm_sample_bit_depth_chroma_minus1; + uint8_t log2_min_pcm_luma_coding_block_size_minus3; + uint8_t log2_diff_max_min_pcm_luma_coding_block_size; + uint8_t reserved1; + uint8_t reserved2; + uint8_t palette_max_size; + uint8_t delta_palette_max_predictor_size; + uint8_t motion_vector_resolution_control_idc; + uint8_t sps_num_palette_predictor_initializers_minus1; + uint32_t conf_win_left_offset; + uint32_t conf_win_right_offset; + uint32_t conf_win_top_offset; + uint32_t conf_win_bottom_offset; + const StdVideoH265ProfileTierLevel* pProfileTierLevel; + const StdVideoH265DecPicBufMgr* pDecPicBufMgr; + const StdVideoH265ScalingLists* pScalingLists; + const StdVideoH265ShortTermRefPicSet* pShortTermRefPicSet; + const StdVideoH265LongTermRefPicsSps* pLongTermRefPicsSps; + const StdVideoH265SequenceParameterSetVui* pSequenceParameterSetVui; + const StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries; +} StdVideoH265SequenceParameterSet; + +typedef struct StdVideoH265PpsFlags { + uint32_t dependent_slice_segments_enabled_flag : 1; + uint32_t output_flag_present_flag : 1; + uint32_t sign_data_hiding_enabled_flag : 1; + uint32_t cabac_init_present_flag : 1; + uint32_t constrained_intra_pred_flag : 1; + uint32_t transform_skip_enabled_flag : 1; + uint32_t cu_qp_delta_enabled_flag : 1; + uint32_t pps_slice_chroma_qp_offsets_present_flag : 1; + uint32_t weighted_pred_flag : 1; + uint32_t weighted_bipred_flag : 1; + uint32_t transquant_bypass_enabled_flag : 1; + uint32_t tiles_enabled_flag : 1; + uint32_t entropy_coding_sync_enabled_flag : 1; + uint32_t uniform_spacing_flag : 1; + uint32_t loop_filter_across_tiles_enabled_flag : 1; + uint32_t pps_loop_filter_across_slices_enabled_flag : 1; + uint32_t deblocking_filter_control_present_flag : 1; + uint32_t deblocking_filter_override_enabled_flag : 1; + uint32_t pps_deblocking_filter_disabled_flag : 1; + uint32_t pps_scaling_list_data_present_flag : 1; + uint32_t lists_modification_present_flag : 1; + uint32_t slice_segment_header_extension_present_flag : 1; + uint32_t pps_extension_present_flag : 1; + uint32_t cross_component_prediction_enabled_flag : 1; + uint32_t chroma_qp_offset_list_enabled_flag : 1; + uint32_t pps_curr_pic_ref_enabled_flag : 1; + uint32_t residual_adaptive_colour_transform_enabled_flag : 1; + uint32_t pps_slice_act_qp_offsets_present_flag : 1; + uint32_t pps_palette_predictor_initializers_present_flag : 1; + uint32_t monochrome_palette_flag : 1; + uint32_t pps_range_extension_flag : 1; +} StdVideoH265PpsFlags; + +typedef struct StdVideoH265PictureParameterSet { + StdVideoH265PpsFlags flags; + uint8_t pps_pic_parameter_set_id; + uint8_t pps_seq_parameter_set_id; + uint8_t sps_video_parameter_set_id; + uint8_t num_extra_slice_header_bits; + uint8_t num_ref_idx_l0_default_active_minus1; + uint8_t num_ref_idx_l1_default_active_minus1; + int8_t init_qp_minus26; + uint8_t diff_cu_qp_delta_depth; + int8_t pps_cb_qp_offset; + int8_t pps_cr_qp_offset; + int8_t pps_beta_offset_div2; + int8_t pps_tc_offset_div2; + uint8_t log2_parallel_merge_level_minus2; + uint8_t log2_max_transform_skip_block_size_minus2; + uint8_t diff_cu_chroma_qp_offset_depth; + uint8_t chroma_qp_offset_list_len_minus1; + int8_t cb_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE]; + int8_t cr_qp_offset_list[STD_VIDEO_H265_CHROMA_QP_OFFSET_LIST_SIZE]; + uint8_t log2_sao_offset_scale_luma; + uint8_t log2_sao_offset_scale_chroma; + int8_t pps_act_y_qp_offset_plus5; + int8_t pps_act_cb_qp_offset_plus5; + int8_t pps_act_cr_qp_offset_plus3; + uint8_t pps_num_palette_predictor_initializers; + uint8_t luma_bit_depth_entry_minus8; + uint8_t chroma_bit_depth_entry_minus8; + uint8_t num_tile_columns_minus1; + uint8_t num_tile_rows_minus1; + uint8_t reserved1; + uint8_t reserved2; + uint16_t column_width_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_COLS_LIST_SIZE]; + uint16_t row_height_minus1[STD_VIDEO_H265_CHROMA_QP_OFFSET_TILE_ROWS_LIST_SIZE]; + uint32_t reserved3; + const StdVideoH265ScalingLists* pScalingLists; + const StdVideoH265PredictorPaletteEntries* pPredictorPaletteEntries; +} StdVideoH265PictureParameterSet; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h new file mode 100644 index 000000000..1758d4a88 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_decode.h @@ -0,0 +1,67 @@ +#ifndef VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ +#define VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_h265std_decode is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_h265std_decode 1 +#include "vulkan_video_codec_h265std.h" + +#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_API_VERSION_1_0_0 +#define VK_STD_VULKAN_VIDEO_CODEC_H265_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_decode" +#define STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE 8U +typedef struct StdVideoDecodeH265PictureInfoFlags { + uint32_t IrapPicFlag : 1; + uint32_t IdrPicFlag : 1; + uint32_t IsReference : 1; + uint32_t short_term_ref_pic_set_sps_flag : 1; +} StdVideoDecodeH265PictureInfoFlags; + +typedef struct StdVideoDecodeH265PictureInfo { + StdVideoDecodeH265PictureInfoFlags flags; + uint8_t sps_video_parameter_set_id; + uint8_t pps_seq_parameter_set_id; + uint8_t pps_pic_parameter_set_id; + uint8_t NumDeltaPocsOfRefRpsIdx; + int32_t PicOrderCntVal; + uint16_t NumBitsForSTRefPicSetInSlice; + uint16_t reserved; + uint8_t RefPicSetStCurrBefore[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE]; + uint8_t RefPicSetStCurrAfter[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE]; + uint8_t RefPicSetLtCurr[STD_VIDEO_DECODE_H265_REF_PIC_SET_LIST_SIZE]; +} StdVideoDecodeH265PictureInfo; + +typedef struct StdVideoDecodeH265ReferenceInfoFlags { + uint32_t used_for_long_term_reference : 1; + uint32_t unused_for_reference : 1; +} StdVideoDecodeH265ReferenceInfoFlags; + +typedef struct StdVideoDecodeH265ReferenceInfo { + StdVideoDecodeH265ReferenceInfoFlags flags; + int32_t PicOrderCntVal; +} StdVideoDecodeH265ReferenceInfo; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_encode.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_encode.h new file mode 100644 index 000000000..e584a7262 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_h265std_encode.h @@ -0,0 +1,157 @@ +#ifndef VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ +#define VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_h265std_encode is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_h265std_encode 1 +#include "vulkan_video_codec_h265std.h" + +#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 +#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_encode" +typedef struct StdVideoEncodeH265WeightTableFlags { + uint16_t luma_weight_l0_flag; + uint16_t chroma_weight_l0_flag; + uint16_t luma_weight_l1_flag; + uint16_t chroma_weight_l1_flag; +} StdVideoEncodeH265WeightTableFlags; + +typedef struct StdVideoEncodeH265WeightTable { + StdVideoEncodeH265WeightTableFlags flags; + uint8_t luma_log2_weight_denom; + int8_t delta_chroma_log2_weight_denom; + int8_t delta_luma_weight_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF]; + int8_t luma_offset_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF]; + int8_t delta_chroma_weight_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES]; + int8_t delta_chroma_offset_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES]; + int8_t delta_luma_weight_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF]; + int8_t luma_offset_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF]; + int8_t delta_chroma_weight_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES]; + int8_t delta_chroma_offset_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES]; +} StdVideoEncodeH265WeightTable; + +typedef struct StdVideoEncodeH265SliceSegmentHeaderFlags { + uint32_t first_slice_segment_in_pic_flag : 1; + uint32_t dependent_slice_segment_flag : 1; + uint32_t slice_sao_luma_flag : 1; + uint32_t slice_sao_chroma_flag : 1; + uint32_t num_ref_idx_active_override_flag : 1; + uint32_t mvd_l1_zero_flag : 1; + uint32_t cabac_init_flag : 1; + uint32_t cu_chroma_qp_offset_enabled_flag : 1; + uint32_t deblocking_filter_override_flag : 1; + uint32_t slice_deblocking_filter_disabled_flag : 1; + uint32_t collocated_from_l0_flag : 1; + uint32_t slice_loop_filter_across_slices_enabled_flag : 1; + uint32_t reserved : 20; +} StdVideoEncodeH265SliceSegmentHeaderFlags; + +typedef struct StdVideoEncodeH265SliceSegmentHeader { + StdVideoEncodeH265SliceSegmentHeaderFlags flags; + StdVideoH265SliceType slice_type; + uint32_t slice_segment_address; + uint8_t collocated_ref_idx; + uint8_t MaxNumMergeCand; + int8_t slice_cb_qp_offset; + int8_t slice_cr_qp_offset; + int8_t slice_beta_offset_div2; + int8_t slice_tc_offset_div2; + int8_t slice_act_y_qp_offset; + int8_t slice_act_cb_qp_offset; + int8_t slice_act_cr_qp_offset; + int8_t slice_qp_delta; + uint16_t reserved1; + const StdVideoEncodeH265WeightTable* pWeightTable; +} StdVideoEncodeH265SliceSegmentHeader; + +typedef struct StdVideoEncodeH265ReferenceListsInfoFlags { + uint32_t ref_pic_list_modification_flag_l0 : 1; + uint32_t ref_pic_list_modification_flag_l1 : 1; + uint32_t reserved : 30; +} StdVideoEncodeH265ReferenceListsInfoFlags; + +typedef struct StdVideoEncodeH265ReferenceListsInfo { + StdVideoEncodeH265ReferenceListsInfoFlags flags; + uint8_t num_ref_idx_l0_active_minus1; + uint8_t num_ref_idx_l1_active_minus1; + uint8_t RefPicList0[STD_VIDEO_H265_MAX_NUM_LIST_REF]; + uint8_t RefPicList1[STD_VIDEO_H265_MAX_NUM_LIST_REF]; + uint8_t list_entry_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF]; + uint8_t list_entry_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF]; +} StdVideoEncodeH265ReferenceListsInfo; + +typedef struct StdVideoEncodeH265PictureInfoFlags { + uint32_t is_reference : 1; + uint32_t IrapPicFlag : 1; + uint32_t used_for_long_term_reference : 1; + uint32_t discardable_flag : 1; + uint32_t cross_layer_bla_flag : 1; + uint32_t pic_output_flag : 1; + uint32_t no_output_of_prior_pics_flag : 1; + uint32_t short_term_ref_pic_set_sps_flag : 1; + uint32_t slice_temporal_mvp_enabled_flag : 1; + uint32_t reserved : 23; +} StdVideoEncodeH265PictureInfoFlags; + +typedef struct StdVideoEncodeH265LongTermRefPics { + uint8_t num_long_term_sps; + uint8_t num_long_term_pics; + uint8_t lt_idx_sps[STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS]; + uint8_t poc_lsb_lt[STD_VIDEO_H265_MAX_LONG_TERM_PICS]; + uint16_t used_by_curr_pic_lt_flag; + uint8_t delta_poc_msb_present_flag[STD_VIDEO_H265_MAX_DELTA_POC]; + uint8_t delta_poc_msb_cycle_lt[STD_VIDEO_H265_MAX_DELTA_POC]; +} StdVideoEncodeH265LongTermRefPics; + +typedef struct StdVideoEncodeH265PictureInfo { + StdVideoEncodeH265PictureInfoFlags flags; + StdVideoH265PictureType pic_type; + uint8_t sps_video_parameter_set_id; + uint8_t pps_seq_parameter_set_id; + uint8_t pps_pic_parameter_set_id; + uint8_t short_term_ref_pic_set_idx; + int32_t PicOrderCntVal; + uint8_t TemporalId; + uint8_t reserved1[7]; + const StdVideoEncodeH265ReferenceListsInfo* pRefLists; + const StdVideoH265ShortTermRefPicSet* pShortTermRefPicSet; + const StdVideoEncodeH265LongTermRefPics* pLongTermRefPics; +} StdVideoEncodeH265PictureInfo; + +typedef struct StdVideoEncodeH265ReferenceInfoFlags { + uint32_t used_for_long_term_reference : 1; + uint32_t unused_for_reference : 1; + uint32_t reserved : 30; +} StdVideoEncodeH265ReferenceInfoFlags; + +typedef struct StdVideoEncodeH265ReferenceInfo { + StdVideoEncodeH265ReferenceInfoFlags flags; + StdVideoH265PictureType pic_type; + int32_t PicOrderCntVal; + uint8_t TemporalId; +} StdVideoEncodeH265ReferenceInfo; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std.h new file mode 100644 index 000000000..3c62f287e --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std.h @@ -0,0 +1,151 @@ +#ifndef VULKAN_VIDEO_CODEC_VP9STD_H_ +#define VULKAN_VIDEO_CODEC_VP9STD_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_vp9std is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_vp9std 1 +#include "vulkan_video_codecs_common.h" +#define STD_VIDEO_VP9_NUM_REF_FRAMES 8U +#define STD_VIDEO_VP9_REFS_PER_FRAME 3U +#define STD_VIDEO_VP9_MAX_REF_FRAMES 4U +#define STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS 2U +#define STD_VIDEO_VP9_MAX_SEGMENTS 8U +#define STD_VIDEO_VP9_SEG_LVL_MAX 4U +#define STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS 7U +#define STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB 3U + +typedef enum StdVideoVP9Profile { + STD_VIDEO_VP9_PROFILE_0 = 0, + STD_VIDEO_VP9_PROFILE_1 = 1, + STD_VIDEO_VP9_PROFILE_2 = 2, + STD_VIDEO_VP9_PROFILE_3 = 3, + STD_VIDEO_VP9_PROFILE_INVALID = 0x7FFFFFFF, + STD_VIDEO_VP9_PROFILE_MAX_ENUM = 0x7FFFFFFF +} StdVideoVP9Profile; + +typedef enum StdVideoVP9Level { + STD_VIDEO_VP9_LEVEL_1_0 = 0, + STD_VIDEO_VP9_LEVEL_1_1 = 1, + STD_VIDEO_VP9_LEVEL_2_0 = 2, + STD_VIDEO_VP9_LEVEL_2_1 = 3, + STD_VIDEO_VP9_LEVEL_3_0 = 4, + STD_VIDEO_VP9_LEVEL_3_1 = 5, + STD_VIDEO_VP9_LEVEL_4_0 = 6, + STD_VIDEO_VP9_LEVEL_4_1 = 7, + STD_VIDEO_VP9_LEVEL_5_0 = 8, + STD_VIDEO_VP9_LEVEL_5_1 = 9, + STD_VIDEO_VP9_LEVEL_5_2 = 10, + STD_VIDEO_VP9_LEVEL_6_0 = 11, + STD_VIDEO_VP9_LEVEL_6_1 = 12, + STD_VIDEO_VP9_LEVEL_6_2 = 13, + STD_VIDEO_VP9_LEVEL_INVALID = 0x7FFFFFFF, + STD_VIDEO_VP9_LEVEL_MAX_ENUM = 0x7FFFFFFF +} StdVideoVP9Level; + +typedef enum StdVideoVP9FrameType { + STD_VIDEO_VP9_FRAME_TYPE_KEY = 0, + STD_VIDEO_VP9_FRAME_TYPE_NON_KEY = 1, + STD_VIDEO_VP9_FRAME_TYPE_INVALID = 0x7FFFFFFF, + STD_VIDEO_VP9_FRAME_TYPE_MAX_ENUM = 0x7FFFFFFF +} StdVideoVP9FrameType; + +typedef enum StdVideoVP9ReferenceName { + STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME = 0, + STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME = 1, + STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME = 2, + STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME = 3, + STD_VIDEO_VP9_REFERENCE_NAME_INVALID = 0x7FFFFFFF, + STD_VIDEO_VP9_REFERENCE_NAME_MAX_ENUM = 0x7FFFFFFF +} StdVideoVP9ReferenceName; + +typedef enum StdVideoVP9InterpolationFilter { + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP = 0, + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1, + STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2, + STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR = 3, + STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE = 4, + STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID = 0x7FFFFFFF, + STD_VIDEO_VP9_INTERPOLATION_FILTER_MAX_ENUM = 0x7FFFFFFF +} StdVideoVP9InterpolationFilter; + +typedef enum StdVideoVP9ColorSpace { + STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN = 0, + STD_VIDEO_VP9_COLOR_SPACE_BT_601 = 1, + STD_VIDEO_VP9_COLOR_SPACE_BT_709 = 2, + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170 = 3, + STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240 = 4, + STD_VIDEO_VP9_COLOR_SPACE_BT_2020 = 5, + STD_VIDEO_VP9_COLOR_SPACE_RESERVED = 6, + STD_VIDEO_VP9_COLOR_SPACE_RGB = 7, + STD_VIDEO_VP9_COLOR_SPACE_INVALID = 0x7FFFFFFF, + STD_VIDEO_VP9_COLOR_SPACE_MAX_ENUM = 0x7FFFFFFF +} StdVideoVP9ColorSpace; +typedef struct StdVideoVP9ColorConfigFlags { + uint32_t color_range : 1; + uint32_t reserved : 31; +} StdVideoVP9ColorConfigFlags; + +typedef struct StdVideoVP9ColorConfig { + StdVideoVP9ColorConfigFlags flags; + uint8_t BitDepth; + uint8_t subsampling_x; + uint8_t subsampling_y; + uint8_t reserved1; + StdVideoVP9ColorSpace color_space; +} StdVideoVP9ColorConfig; + +typedef struct StdVideoVP9LoopFilterFlags { + uint32_t loop_filter_delta_enabled : 1; + uint32_t loop_filter_delta_update : 1; + uint32_t reserved : 30; +} StdVideoVP9LoopFilterFlags; + +typedef struct StdVideoVP9LoopFilter { + StdVideoVP9LoopFilterFlags flags; + uint8_t loop_filter_level; + uint8_t loop_filter_sharpness; + uint8_t update_ref_delta; + int8_t loop_filter_ref_deltas[STD_VIDEO_VP9_MAX_REF_FRAMES]; + uint8_t update_mode_delta; + int8_t loop_filter_mode_deltas[STD_VIDEO_VP9_LOOP_FILTER_ADJUSTMENTS]; +} StdVideoVP9LoopFilter; + +typedef struct StdVideoVP9SegmentationFlags { + uint32_t segmentation_update_map : 1; + uint32_t segmentation_temporal_update : 1; + uint32_t segmentation_update_data : 1; + uint32_t segmentation_abs_or_delta_update : 1; + uint32_t reserved : 28; +} StdVideoVP9SegmentationFlags; + +typedef struct StdVideoVP9Segmentation { + StdVideoVP9SegmentationFlags flags; + uint8_t segmentation_tree_probs[STD_VIDEO_VP9_MAX_SEGMENTATION_TREE_PROBS]; + uint8_t segmentation_pred_prob[STD_VIDEO_VP9_MAX_SEGMENTATION_PRED_PROB]; + uint8_t FeatureEnabled[STD_VIDEO_VP9_MAX_SEGMENTS]; + int16_t FeatureData[STD_VIDEO_VP9_MAX_SEGMENTS][STD_VIDEO_VP9_SEG_LVL_MAX]; +} StdVideoVP9Segmentation; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std_decode.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std_decode.h new file mode 100644 index 000000000..ac7fa7be8 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codec_vp9std_decode.h @@ -0,0 +1,68 @@ +#ifndef VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ +#define VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codec_vp9std_decode is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codec_vp9std_decode 1 +#include "vulkan_video_codec_vp9std.h" + +#define VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0) + +#define VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_API_VERSION_1_0_0 +#define VK_STD_VULKAN_VIDEO_CODEC_VP9_DECODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_vp9_decode" +typedef struct StdVideoDecodeVP9PictureInfoFlags { + uint32_t error_resilient_mode : 1; + uint32_t intra_only : 1; + uint32_t allow_high_precision_mv : 1; + uint32_t refresh_frame_context : 1; + uint32_t frame_parallel_decoding_mode : 1; + uint32_t segmentation_enabled : 1; + uint32_t show_frame : 1; + uint32_t UsePrevFrameMvs : 1; + uint32_t reserved : 24; +} StdVideoDecodeVP9PictureInfoFlags; + +typedef struct StdVideoDecodeVP9PictureInfo { + StdVideoDecodeVP9PictureInfoFlags flags; + StdVideoVP9Profile profile; + StdVideoVP9FrameType frame_type; + uint8_t frame_context_idx; + uint8_t reset_frame_context; + uint8_t refresh_frame_flags; + uint8_t ref_frame_sign_bias_mask; + StdVideoVP9InterpolationFilter interpolation_filter; + uint8_t base_q_idx; + int8_t delta_q_y_dc; + int8_t delta_q_uv_dc; + int8_t delta_q_uv_ac; + uint8_t tile_cols_log2; + uint8_t tile_rows_log2; + uint16_t reserved1[3]; + const StdVideoVP9ColorConfig* pColorConfig; + const StdVideoVP9LoopFilter* pLoopFilter; + const StdVideoVP9Segmentation* pSegmentation; +} StdVideoDecodeVP9PictureInfo; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h new file mode 100644 index 000000000..3c4d0553d --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vk_video/vulkan_video_codecs_common.h @@ -0,0 +1,36 @@ +#ifndef VULKAN_VIDEO_CODECS_COMMON_H_ +#define VULKAN_VIDEO_CODECS_COMMON_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// vulkan_video_codecs_common is a preprocessor guard. Do not pass it to API calls. +#define vulkan_video_codecs_common 1 +#if !defined(VK_NO_STDINT_H) + #include +#endif + +#define VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) \ + ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.cppm b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.cppm new file mode 100644 index 000000000..c81e11c7c --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.cppm @@ -0,0 +1,1309 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +module; + +#define VULKAN_HPP_CXX_MODULE 1 + +#include +#include +#include +#include + +#if !defined( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING ) +# define VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING \ + "\n\tThe Vulkan-Hpp C++ named module is experimental. It is subject to change without prior notice.\n" \ + "\tTo silence this warning, define the VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING macro.\n" \ + "\tFor feedback, go to: https://github.com/KhronosGroup/Vulkan-Hpp/issues" + +VULKAN_HPP_COMPILE_WARNING( VULKAN_HPP_CXX_MODULE_EXPERIMENTAL_WARNING ) +#endif + +export module vulkan; + +export import std; + +VULKAN_HPP_STATIC_ASSERT( VK_HEADER_VERSION == 347, "Wrong VK_HEADER_VERSION!" ); + +#if defined( _MSC_VER ) +# pragma warning( push ) +# pragma warning( disable : 5244 ) +#elif defined( __clang__ ) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Winclude-angled-in-module-purview" +#elif defined( __GNUC__ ) +#endif + +#include +#include +#include +#include +#include +#include + +#if defined( _MSC_VER ) +# pragma warning( pop ) +#elif defined( __clang__ ) +# pragma clang diagnostic pop +#elif defined( __GNUC__ ) +#endif + +export +{ + // This VkFlags type is used as part of a bitfield in some structures. + // As it can't be mimicked by vk-data types, we need to export just that. + using ::VkGeometryInstanceFlagsKHR; + + //================== + //=== PFN TYPEs === + //================== + + //=== VK_VERSION_1_0 === + using ::PFN_vkAllocateCommandBuffers; + using ::PFN_vkAllocateDescriptorSets; + using ::PFN_vkAllocateMemory; + using ::PFN_vkBeginCommandBuffer; + using ::PFN_vkBindBufferMemory; + using ::PFN_vkBindImageMemory; + using ::PFN_vkCmdBeginQuery; + using ::PFN_vkCmdBeginRenderPass; + using ::PFN_vkCmdBindDescriptorSets; + using ::PFN_vkCmdBindIndexBuffer; + using ::PFN_vkCmdBindPipeline; + using ::PFN_vkCmdBindVertexBuffers; + using ::PFN_vkCmdBlitImage; + using ::PFN_vkCmdClearAttachments; + using ::PFN_vkCmdClearColorImage; + using ::PFN_vkCmdClearDepthStencilImage; + using ::PFN_vkCmdCopyBuffer; + using ::PFN_vkCmdCopyBufferToImage; + using ::PFN_vkCmdCopyImage; + using ::PFN_vkCmdCopyImageToBuffer; + using ::PFN_vkCmdCopyQueryPoolResults; + using ::PFN_vkCmdDispatch; + using ::PFN_vkCmdDispatchIndirect; + using ::PFN_vkCmdDraw; + using ::PFN_vkCmdDrawIndexed; + using ::PFN_vkCmdDrawIndexedIndirect; + using ::PFN_vkCmdDrawIndirect; + using ::PFN_vkCmdEndQuery; + using ::PFN_vkCmdEndRenderPass; + using ::PFN_vkCmdExecuteCommands; + using ::PFN_vkCmdFillBuffer; + using ::PFN_vkCmdNextSubpass; + using ::PFN_vkCmdPipelineBarrier; + using ::PFN_vkCmdPushConstants; + using ::PFN_vkCmdResetEvent; + using ::PFN_vkCmdResetQueryPool; + using ::PFN_vkCmdResolveImage; + using ::PFN_vkCmdSetBlendConstants; + using ::PFN_vkCmdSetDepthBias; + using ::PFN_vkCmdSetDepthBounds; + using ::PFN_vkCmdSetEvent; + using ::PFN_vkCmdSetLineWidth; + using ::PFN_vkCmdSetScissor; + using ::PFN_vkCmdSetStencilCompareMask; + using ::PFN_vkCmdSetStencilReference; + using ::PFN_vkCmdSetStencilWriteMask; + using ::PFN_vkCmdSetViewport; + using ::PFN_vkCmdUpdateBuffer; + using ::PFN_vkCmdWaitEvents; + using ::PFN_vkCmdWriteTimestamp; + using ::PFN_vkCreateBuffer; + using ::PFN_vkCreateBufferView; + using ::PFN_vkCreateCommandPool; + using ::PFN_vkCreateComputePipelines; + using ::PFN_vkCreateDescriptorPool; + using ::PFN_vkCreateDescriptorSetLayout; + using ::PFN_vkCreateDevice; + using ::PFN_vkCreateEvent; + using ::PFN_vkCreateFence; + using ::PFN_vkCreateFramebuffer; + using ::PFN_vkCreateGraphicsPipelines; + using ::PFN_vkCreateImage; + using ::PFN_vkCreateImageView; + using ::PFN_vkCreateInstance; + using ::PFN_vkCreatePipelineCache; + using ::PFN_vkCreatePipelineLayout; + using ::PFN_vkCreateQueryPool; + using ::PFN_vkCreateRenderPass; + using ::PFN_vkCreateSampler; + using ::PFN_vkCreateSemaphore; + using ::PFN_vkCreateShaderModule; + using ::PFN_vkDestroyBuffer; + using ::PFN_vkDestroyBufferView; + using ::PFN_vkDestroyCommandPool; + using ::PFN_vkDestroyDescriptorPool; + using ::PFN_vkDestroyDescriptorSetLayout; + using ::PFN_vkDestroyDevice; + using ::PFN_vkDestroyEvent; + using ::PFN_vkDestroyFence; + using ::PFN_vkDestroyFramebuffer; + using ::PFN_vkDestroyImage; + using ::PFN_vkDestroyImageView; + using ::PFN_vkDestroyInstance; + using ::PFN_vkDestroyPipeline; + using ::PFN_vkDestroyPipelineCache; + using ::PFN_vkDestroyPipelineLayout; + using ::PFN_vkDestroyQueryPool; + using ::PFN_vkDestroyRenderPass; + using ::PFN_vkDestroySampler; + using ::PFN_vkDestroySemaphore; + using ::PFN_vkDestroyShaderModule; + using ::PFN_vkDeviceWaitIdle; + using ::PFN_vkEndCommandBuffer; + using ::PFN_vkEnumerateDeviceExtensionProperties; + using ::PFN_vkEnumerateDeviceLayerProperties; + using ::PFN_vkEnumerateInstanceExtensionProperties; + using ::PFN_vkEnumerateInstanceLayerProperties; + using ::PFN_vkEnumeratePhysicalDevices; + using ::PFN_vkFlushMappedMemoryRanges; + using ::PFN_vkFreeCommandBuffers; + using ::PFN_vkFreeDescriptorSets; + using ::PFN_vkFreeMemory; + using ::PFN_vkGetBufferMemoryRequirements; + using ::PFN_vkGetDeviceMemoryCommitment; + using ::PFN_vkGetDeviceProcAddr; + using ::PFN_vkGetDeviceQueue; + using ::PFN_vkGetEventStatus; + using ::PFN_vkGetFenceStatus; + using ::PFN_vkGetImageMemoryRequirements; + using ::PFN_vkGetImageSparseMemoryRequirements; + using ::PFN_vkGetImageSubresourceLayout; + using ::PFN_vkGetInstanceProcAddr; + using ::PFN_vkGetPhysicalDeviceFeatures; + using ::PFN_vkGetPhysicalDeviceFormatProperties; + using ::PFN_vkGetPhysicalDeviceImageFormatProperties; + using ::PFN_vkGetPhysicalDeviceMemoryProperties; + using ::PFN_vkGetPhysicalDeviceProperties; + using ::PFN_vkGetPhysicalDeviceQueueFamilyProperties; + using ::PFN_vkGetPhysicalDeviceSparseImageFormatProperties; + using ::PFN_vkGetPipelineCacheData; + using ::PFN_vkGetQueryPoolResults; + using ::PFN_vkGetRenderAreaGranularity; + using ::PFN_vkInvalidateMappedMemoryRanges; + using ::PFN_vkMapMemory; + using ::PFN_vkMergePipelineCaches; + using ::PFN_vkQueueBindSparse; + using ::PFN_vkQueueSubmit; + using ::PFN_vkQueueWaitIdle; + using ::PFN_vkResetCommandBuffer; + using ::PFN_vkResetCommandPool; + using ::PFN_vkResetDescriptorPool; + using ::PFN_vkResetEvent; + using ::PFN_vkResetFences; + using ::PFN_vkSetEvent; + using ::PFN_vkUnmapMemory; + using ::PFN_vkUpdateDescriptorSets; + using ::PFN_vkWaitForFences; + + //=== VK_VERSION_1_1 === + using ::PFN_vkBindBufferMemory2; + using ::PFN_vkBindImageMemory2; + using ::PFN_vkCmdDispatchBase; + using ::PFN_vkCmdSetDeviceMask; + using ::PFN_vkCreateDescriptorUpdateTemplate; + using ::PFN_vkCreateSamplerYcbcrConversion; + using ::PFN_vkDestroyDescriptorUpdateTemplate; + using ::PFN_vkDestroySamplerYcbcrConversion; + using ::PFN_vkEnumerateInstanceVersion; + using ::PFN_vkEnumeratePhysicalDeviceGroups; + using ::PFN_vkGetBufferMemoryRequirements2; + using ::PFN_vkGetDescriptorSetLayoutSupport; + using ::PFN_vkGetDeviceGroupPeerMemoryFeatures; + using ::PFN_vkGetDeviceQueue2; + using ::PFN_vkGetImageMemoryRequirements2; + using ::PFN_vkGetImageSparseMemoryRequirements2; + using ::PFN_vkGetPhysicalDeviceExternalBufferProperties; + using ::PFN_vkGetPhysicalDeviceExternalFenceProperties; + using ::PFN_vkGetPhysicalDeviceExternalSemaphoreProperties; + using ::PFN_vkGetPhysicalDeviceFeatures2; + using ::PFN_vkGetPhysicalDeviceFormatProperties2; + using ::PFN_vkGetPhysicalDeviceImageFormatProperties2; + using ::PFN_vkGetPhysicalDeviceMemoryProperties2; + using ::PFN_vkGetPhysicalDeviceProperties2; + using ::PFN_vkGetPhysicalDeviceQueueFamilyProperties2; + using ::PFN_vkGetPhysicalDeviceSparseImageFormatProperties2; + using ::PFN_vkTrimCommandPool; + using ::PFN_vkUpdateDescriptorSetWithTemplate; + + //=== VK_VERSION_1_2 === + using ::PFN_vkCmdBeginRenderPass2; + using ::PFN_vkCmdDrawIndexedIndirectCount; + using ::PFN_vkCmdDrawIndirectCount; + using ::PFN_vkCmdEndRenderPass2; + using ::PFN_vkCmdNextSubpass2; + using ::PFN_vkCreateRenderPass2; + using ::PFN_vkGetBufferDeviceAddress; + using ::PFN_vkGetBufferOpaqueCaptureAddress; + using ::PFN_vkGetDeviceMemoryOpaqueCaptureAddress; + using ::PFN_vkGetSemaphoreCounterValue; + using ::PFN_vkResetQueryPool; + using ::PFN_vkSignalSemaphore; + using ::PFN_vkWaitSemaphores; + + //=== VK_VERSION_1_3 === + using ::PFN_vkCmdBeginRendering; + using ::PFN_vkCmdBindVertexBuffers2; + using ::PFN_vkCmdBlitImage2; + using ::PFN_vkCmdCopyBuffer2; + using ::PFN_vkCmdCopyBufferToImage2; + using ::PFN_vkCmdCopyImage2; + using ::PFN_vkCmdCopyImageToBuffer2; + using ::PFN_vkCmdEndRendering; + using ::PFN_vkCmdPipelineBarrier2; + using ::PFN_vkCmdResetEvent2; + using ::PFN_vkCmdResolveImage2; + using ::PFN_vkCmdSetCullMode; + using ::PFN_vkCmdSetDepthBiasEnable; + using ::PFN_vkCmdSetDepthBoundsTestEnable; + using ::PFN_vkCmdSetDepthCompareOp; + using ::PFN_vkCmdSetDepthTestEnable; + using ::PFN_vkCmdSetDepthWriteEnable; + using ::PFN_vkCmdSetEvent2; + using ::PFN_vkCmdSetFrontFace; + using ::PFN_vkCmdSetPrimitiveRestartEnable; + using ::PFN_vkCmdSetPrimitiveTopology; + using ::PFN_vkCmdSetRasterizerDiscardEnable; + using ::PFN_vkCmdSetScissorWithCount; + using ::PFN_vkCmdSetStencilOp; + using ::PFN_vkCmdSetStencilTestEnable; + using ::PFN_vkCmdSetViewportWithCount; + using ::PFN_vkCmdWaitEvents2; + using ::PFN_vkCmdWriteTimestamp2; + using ::PFN_vkCreatePrivateDataSlot; + using ::PFN_vkDestroyPrivateDataSlot; + using ::PFN_vkGetDeviceBufferMemoryRequirements; + using ::PFN_vkGetDeviceImageMemoryRequirements; + using ::PFN_vkGetDeviceImageSparseMemoryRequirements; + using ::PFN_vkGetPhysicalDeviceToolProperties; + using ::PFN_vkGetPrivateData; + using ::PFN_vkQueueSubmit2; + using ::PFN_vkSetPrivateData; + + //=== VK_VERSION_1_4 === + using ::PFN_vkCmdBindDescriptorSets2; + using ::PFN_vkCmdBindIndexBuffer2; + using ::PFN_vkCmdPushConstants2; + using ::PFN_vkCmdPushDescriptorSet; + using ::PFN_vkCmdPushDescriptorSet2; + using ::PFN_vkCmdPushDescriptorSetWithTemplate; + using ::PFN_vkCmdPushDescriptorSetWithTemplate2; + using ::PFN_vkCmdSetLineStipple; + using ::PFN_vkCmdSetRenderingAttachmentLocations; + using ::PFN_vkCmdSetRenderingInputAttachmentIndices; + using ::PFN_vkCopyImageToImage; + using ::PFN_vkCopyImageToMemory; + using ::PFN_vkCopyMemoryToImage; + using ::PFN_vkGetDeviceImageSubresourceLayout; + using ::PFN_vkGetImageSubresourceLayout2; + using ::PFN_vkGetRenderingAreaGranularity; + using ::PFN_vkMapMemory2; + using ::PFN_vkTransitionImageLayout; + using ::PFN_vkUnmapMemory2; + + //=== VK_KHR_surface === + using ::PFN_vkDestroySurfaceKHR; + using ::PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR; + using ::PFN_vkGetPhysicalDeviceSurfaceFormatsKHR; + using ::PFN_vkGetPhysicalDeviceSurfacePresentModesKHR; + using ::PFN_vkGetPhysicalDeviceSurfaceSupportKHR; + + //=== VK_KHR_swapchain === + using ::PFN_vkAcquireNextImage2KHR; + using ::PFN_vkAcquireNextImageKHR; + using ::PFN_vkCreateSwapchainKHR; + using ::PFN_vkDestroySwapchainKHR; + using ::PFN_vkGetDeviceGroupPresentCapabilitiesKHR; + using ::PFN_vkGetDeviceGroupSurfacePresentModesKHR; + using ::PFN_vkGetPhysicalDevicePresentRectanglesKHR; + using ::PFN_vkGetSwapchainImagesKHR; + using ::PFN_vkQueuePresentKHR; + + //=== VK_KHR_display === + using ::PFN_vkCreateDisplayModeKHR; + using ::PFN_vkCreateDisplayPlaneSurfaceKHR; + using ::PFN_vkGetDisplayModePropertiesKHR; + using ::PFN_vkGetDisplayPlaneCapabilitiesKHR; + using ::PFN_vkGetDisplayPlaneSupportedDisplaysKHR; + using ::PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR; + using ::PFN_vkGetPhysicalDeviceDisplayPropertiesKHR; + + //=== VK_KHR_display_swapchain === + using ::PFN_vkCreateSharedSwapchainsKHR; + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + using ::PFN_vkCreateXlibSurfaceKHR; + using ::PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + using ::PFN_vkCreateXcbSurfaceKHR; + using ::PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + using ::PFN_vkCreateWaylandSurfaceKHR; + using ::PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + using ::PFN_vkCreateAndroidSurfaceKHR; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + using ::PFN_vkCreateWin32SurfaceKHR; + using ::PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + using ::PFN_vkCreateDebugReportCallbackEXT; + using ::PFN_vkDebugReportMessageEXT; + using ::PFN_vkDestroyDebugReportCallbackEXT; + + //=== VK_EXT_debug_marker === + using ::PFN_vkCmdDebugMarkerBeginEXT; + using ::PFN_vkCmdDebugMarkerEndEXT; + using ::PFN_vkCmdDebugMarkerInsertEXT; + using ::PFN_vkDebugMarkerSetObjectNameEXT; + using ::PFN_vkDebugMarkerSetObjectTagEXT; + + //=== VK_KHR_video_queue === + using ::PFN_vkBindVideoSessionMemoryKHR; + using ::PFN_vkCmdBeginVideoCodingKHR; + using ::PFN_vkCmdControlVideoCodingKHR; + using ::PFN_vkCmdEndVideoCodingKHR; + using ::PFN_vkCreateVideoSessionKHR; + using ::PFN_vkCreateVideoSessionParametersKHR; + using ::PFN_vkDestroyVideoSessionKHR; + using ::PFN_vkDestroyVideoSessionParametersKHR; + using ::PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR; + using ::PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR; + using ::PFN_vkGetVideoSessionMemoryRequirementsKHR; + using ::PFN_vkUpdateVideoSessionParametersKHR; + + //=== VK_KHR_video_decode_queue === + using ::PFN_vkCmdDecodeVideoKHR; + + //=== VK_EXT_transform_feedback === + using ::PFN_vkCmdBeginQueryIndexedEXT; + using ::PFN_vkCmdBeginTransformFeedbackEXT; + using ::PFN_vkCmdBindTransformFeedbackBuffersEXT; + using ::PFN_vkCmdDrawIndirectByteCountEXT; + using ::PFN_vkCmdEndQueryIndexedEXT; + using ::PFN_vkCmdEndTransformFeedbackEXT; + + //=== VK_NVX_binary_import === + using ::PFN_vkCmdCuLaunchKernelNVX; + using ::PFN_vkCreateCuFunctionNVX; + using ::PFN_vkCreateCuModuleNVX; + using ::PFN_vkDestroyCuFunctionNVX; + using ::PFN_vkDestroyCuModuleNVX; + + //=== VK_NVX_image_view_handle === + using ::PFN_vkGetDeviceCombinedImageSamplerIndexNVX; + using ::PFN_vkGetImageViewAddressNVX; + using ::PFN_vkGetImageViewHandle64NVX; + using ::PFN_vkGetImageViewHandleNVX; + + //=== VK_AMD_draw_indirect_count === + using ::PFN_vkCmdDrawIndexedIndirectCountAMD; + using ::PFN_vkCmdDrawIndirectCountAMD; + + //=== VK_AMD_shader_info === + using ::PFN_vkGetShaderInfoAMD; + + //=== VK_KHR_dynamic_rendering === + using ::PFN_vkCmdBeginRenderingKHR; + using ::PFN_vkCmdEndRenderingKHR; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + using ::PFN_vkCreateStreamDescriptorSurfaceGGP; +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + using ::PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + using ::PFN_vkGetMemoryWin32HandleNV; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_get_physical_device_properties2 === + using ::PFN_vkGetPhysicalDeviceFeatures2KHR; + using ::PFN_vkGetPhysicalDeviceFormatProperties2KHR; + using ::PFN_vkGetPhysicalDeviceImageFormatProperties2KHR; + using ::PFN_vkGetPhysicalDeviceMemoryProperties2KHR; + using ::PFN_vkGetPhysicalDeviceProperties2KHR; + using ::PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR; + using ::PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR; + + //=== VK_KHR_device_group === + using ::PFN_vkCmdDispatchBaseKHR; + using ::PFN_vkCmdSetDeviceMaskKHR; + using ::PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR; + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + using ::PFN_vkCreateViSurfaceNN; +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_maintenance1 === + using ::PFN_vkTrimCommandPoolKHR; + + //=== VK_KHR_device_group_creation === + using ::PFN_vkEnumeratePhysicalDeviceGroupsKHR; + + //=== VK_KHR_external_memory_capabilities === + using ::PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + using ::PFN_vkGetMemoryWin32HandleKHR; + using ::PFN_vkGetMemoryWin32HandlePropertiesKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + using ::PFN_vkGetMemoryFdKHR; + using ::PFN_vkGetMemoryFdPropertiesKHR; + + //=== VK_KHR_external_semaphore_capabilities === + using ::PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + using ::PFN_vkGetSemaphoreWin32HandleKHR; + using ::PFN_vkImportSemaphoreWin32HandleKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + using ::PFN_vkGetSemaphoreFdKHR; + using ::PFN_vkImportSemaphoreFdKHR; + + //=== VK_KHR_push_descriptor === + using ::PFN_vkCmdPushDescriptorSetKHR; + using ::PFN_vkCmdPushDescriptorSetWithTemplateKHR; + + //=== VK_EXT_conditional_rendering === + using ::PFN_vkCmdBeginConditionalRenderingEXT; + using ::PFN_vkCmdEndConditionalRenderingEXT; + + //=== VK_KHR_descriptor_update_template === + using ::PFN_vkCreateDescriptorUpdateTemplateKHR; + using ::PFN_vkDestroyDescriptorUpdateTemplateKHR; + using ::PFN_vkUpdateDescriptorSetWithTemplateKHR; + + //=== VK_NV_clip_space_w_scaling === + using ::PFN_vkCmdSetViewportWScalingNV; + + //=== VK_EXT_direct_mode_display === + using ::PFN_vkReleaseDisplayEXT; + +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + using ::PFN_vkAcquireXlibDisplayEXT; + using ::PFN_vkGetRandROutputDisplayEXT; +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + using ::PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT; + + //=== VK_EXT_display_control === + using ::PFN_vkDisplayPowerControlEXT; + using ::PFN_vkGetSwapchainCounterEXT; + using ::PFN_vkRegisterDeviceEventEXT; + using ::PFN_vkRegisterDisplayEventEXT; + + //=== VK_GOOGLE_display_timing === + using ::PFN_vkGetPastPresentationTimingGOOGLE; + using ::PFN_vkGetRefreshCycleDurationGOOGLE; + + //=== VK_EXT_discard_rectangles === + using ::PFN_vkCmdSetDiscardRectangleEnableEXT; + using ::PFN_vkCmdSetDiscardRectangleEXT; + using ::PFN_vkCmdSetDiscardRectangleModeEXT; + + //=== VK_EXT_hdr_metadata === + using ::PFN_vkSetHdrMetadataEXT; + + //=== VK_KHR_create_renderpass2 === + using ::PFN_vkCmdBeginRenderPass2KHR; + using ::PFN_vkCmdEndRenderPass2KHR; + using ::PFN_vkCmdNextSubpass2KHR; + using ::PFN_vkCreateRenderPass2KHR; + + //=== VK_KHR_shared_presentable_image === + using ::PFN_vkGetSwapchainStatusKHR; + + //=== VK_KHR_external_fence_capabilities === + using ::PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + using ::PFN_vkGetFenceWin32HandleKHR; + using ::PFN_vkImportFenceWin32HandleKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + using ::PFN_vkGetFenceFdKHR; + using ::PFN_vkImportFenceFdKHR; + + //=== VK_KHR_performance_query === + using ::PFN_vkAcquireProfilingLockKHR; + using ::PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR; + using ::PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR; + using ::PFN_vkReleaseProfilingLockKHR; + + //=== VK_KHR_get_surface_capabilities2 === + using ::PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR; + using ::PFN_vkGetPhysicalDeviceSurfaceFormats2KHR; + + //=== VK_KHR_get_display_properties2 === + using ::PFN_vkGetDisplayModeProperties2KHR; + using ::PFN_vkGetDisplayPlaneCapabilities2KHR; + using ::PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR; + using ::PFN_vkGetPhysicalDeviceDisplayProperties2KHR; + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + using ::PFN_vkCreateIOSSurfaceMVK; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + using ::PFN_vkCreateMacOSSurfaceMVK; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + using ::PFN_vkCmdBeginDebugUtilsLabelEXT; + using ::PFN_vkCmdEndDebugUtilsLabelEXT; + using ::PFN_vkCmdInsertDebugUtilsLabelEXT; + using ::PFN_vkCreateDebugUtilsMessengerEXT; + using ::PFN_vkDestroyDebugUtilsMessengerEXT; + using ::PFN_vkQueueBeginDebugUtilsLabelEXT; + using ::PFN_vkQueueEndDebugUtilsLabelEXT; + using ::PFN_vkQueueInsertDebugUtilsLabelEXT; + using ::PFN_vkSetDebugUtilsObjectNameEXT; + using ::PFN_vkSetDebugUtilsObjectTagEXT; + using ::PFN_vkSubmitDebugUtilsMessageEXT; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + using ::PFN_vkGetAndroidHardwareBufferPropertiesANDROID; + using ::PFN_vkGetMemoryAndroidHardwareBufferANDROID; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + using ::PFN_vkCmdDispatchGraphAMDX; + using ::PFN_vkCmdDispatchGraphIndirectAMDX; + using ::PFN_vkCmdDispatchGraphIndirectCountAMDX; + using ::PFN_vkCmdInitializeGraphScratchMemoryAMDX; + using ::PFN_vkCreateExecutionGraphPipelinesAMDX; + using ::PFN_vkGetExecutionGraphPipelineNodeIndexAMDX; + using ::PFN_vkGetExecutionGraphPipelineScratchSizeAMDX; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + using ::PFN_vkCmdBindResourceHeapEXT; + using ::PFN_vkCmdBindSamplerHeapEXT; + using ::PFN_vkCmdPushDataEXT; + using ::PFN_vkGetImageOpaqueCaptureDataEXT; + using ::PFN_vkGetPhysicalDeviceDescriptorSizeEXT; + using ::PFN_vkGetTensorOpaqueCaptureDataARM; + using ::PFN_vkRegisterCustomBorderColorEXT; + using ::PFN_vkUnregisterCustomBorderColorEXT; + using ::PFN_vkWriteResourceDescriptorsEXT; + using ::PFN_vkWriteSamplerDescriptorsEXT; + + //=== VK_EXT_sample_locations === + using ::PFN_vkCmdSetSampleLocationsEXT; + using ::PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT; + + //=== VK_KHR_get_memory_requirements2 === + using ::PFN_vkGetBufferMemoryRequirements2KHR; + using ::PFN_vkGetImageMemoryRequirements2KHR; + using ::PFN_vkGetImageSparseMemoryRequirements2KHR; + + //=== VK_KHR_acceleration_structure === + using ::PFN_vkBuildAccelerationStructuresKHR; + using ::PFN_vkCmdBuildAccelerationStructuresIndirectKHR; + using ::PFN_vkCmdBuildAccelerationStructuresKHR; + using ::PFN_vkCmdCopyAccelerationStructureKHR; + using ::PFN_vkCmdCopyAccelerationStructureToMemoryKHR; + using ::PFN_vkCmdCopyMemoryToAccelerationStructureKHR; + using ::PFN_vkCmdWriteAccelerationStructuresPropertiesKHR; + using ::PFN_vkCopyAccelerationStructureKHR; + using ::PFN_vkCopyAccelerationStructureToMemoryKHR; + using ::PFN_vkCopyMemoryToAccelerationStructureKHR; + using ::PFN_vkCreateAccelerationStructureKHR; + using ::PFN_vkDestroyAccelerationStructureKHR; + using ::PFN_vkGetAccelerationStructureBuildSizesKHR; + using ::PFN_vkGetAccelerationStructureDeviceAddressKHR; + using ::PFN_vkGetDeviceAccelerationStructureCompatibilityKHR; + using ::PFN_vkWriteAccelerationStructuresPropertiesKHR; + + //=== VK_KHR_ray_tracing_pipeline === + using ::PFN_vkCmdSetRayTracingPipelineStackSizeKHR; + using ::PFN_vkCmdTraceRaysIndirectKHR; + using ::PFN_vkCmdTraceRaysKHR; + using ::PFN_vkCreateRayTracingPipelinesKHR; + using ::PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR; + using ::PFN_vkGetRayTracingShaderGroupHandlesKHR; + using ::PFN_vkGetRayTracingShaderGroupStackSizeKHR; + + //=== VK_KHR_sampler_ycbcr_conversion === + using ::PFN_vkCreateSamplerYcbcrConversionKHR; + using ::PFN_vkDestroySamplerYcbcrConversionKHR; + + //=== VK_KHR_bind_memory2 === + using ::PFN_vkBindBufferMemory2KHR; + using ::PFN_vkBindImageMemory2KHR; + + //=== VK_EXT_image_drm_format_modifier === + using ::PFN_vkGetImageDrmFormatModifierPropertiesEXT; + + //=== VK_EXT_validation_cache === + using ::PFN_vkCreateValidationCacheEXT; + using ::PFN_vkDestroyValidationCacheEXT; + using ::PFN_vkGetValidationCacheDataEXT; + using ::PFN_vkMergeValidationCachesEXT; + + //=== VK_NV_shading_rate_image === + using ::PFN_vkCmdBindShadingRateImageNV; + using ::PFN_vkCmdSetCoarseSampleOrderNV; + using ::PFN_vkCmdSetViewportShadingRatePaletteNV; + + //=== VK_NV_ray_tracing === + using ::PFN_vkBindAccelerationStructureMemoryNV; + using ::PFN_vkCmdBuildAccelerationStructureNV; + using ::PFN_vkCmdCopyAccelerationStructureNV; + using ::PFN_vkCmdTraceRaysNV; + using ::PFN_vkCmdWriteAccelerationStructuresPropertiesNV; + using ::PFN_vkCompileDeferredNV; + using ::PFN_vkCreateAccelerationStructureNV; + using ::PFN_vkCreateRayTracingPipelinesNV; + using ::PFN_vkDestroyAccelerationStructureNV; + using ::PFN_vkGetAccelerationStructureHandleNV; + using ::PFN_vkGetAccelerationStructureMemoryRequirementsNV; + using ::PFN_vkGetRayTracingShaderGroupHandlesNV; + + //=== VK_KHR_maintenance3 === + using ::PFN_vkGetDescriptorSetLayoutSupportKHR; + + //=== VK_KHR_draw_indirect_count === + using ::PFN_vkCmdDrawIndexedIndirectCountKHR; + using ::PFN_vkCmdDrawIndirectCountKHR; + + //=== VK_EXT_external_memory_host === + using ::PFN_vkGetMemoryHostPointerPropertiesEXT; + + //=== VK_AMD_buffer_marker === + using ::PFN_vkCmdWriteBufferMarker2AMD; + using ::PFN_vkCmdWriteBufferMarkerAMD; + + //=== VK_EXT_calibrated_timestamps === + using ::PFN_vkGetCalibratedTimestampsEXT; + using ::PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT; + + //=== VK_NV_mesh_shader === + using ::PFN_vkCmdDrawMeshTasksIndirectCountNV; + using ::PFN_vkCmdDrawMeshTasksIndirectNV; + using ::PFN_vkCmdDrawMeshTasksNV; + + //=== VK_NV_scissor_exclusive === + using ::PFN_vkCmdSetExclusiveScissorEnableNV; + using ::PFN_vkCmdSetExclusiveScissorNV; + + //=== VK_NV_device_diagnostic_checkpoints === + using ::PFN_vkCmdSetCheckpointNV; + using ::PFN_vkGetQueueCheckpointData2NV; + using ::PFN_vkGetQueueCheckpointDataNV; + + //=== VK_KHR_timeline_semaphore === + using ::PFN_vkGetSemaphoreCounterValueKHR; + using ::PFN_vkSignalSemaphoreKHR; + using ::PFN_vkWaitSemaphoresKHR; + + //=== VK_EXT_present_timing === + using ::PFN_vkGetPastPresentationTimingEXT; + using ::PFN_vkGetSwapchainTimeDomainPropertiesEXT; + using ::PFN_vkGetSwapchainTimingPropertiesEXT; + using ::PFN_vkSetSwapchainPresentTimingQueueSizeEXT; + + //=== VK_INTEL_performance_query === + using ::PFN_vkAcquirePerformanceConfigurationINTEL; + using ::PFN_vkCmdSetPerformanceMarkerINTEL; + using ::PFN_vkCmdSetPerformanceOverrideINTEL; + using ::PFN_vkCmdSetPerformanceStreamMarkerINTEL; + using ::PFN_vkGetPerformanceParameterINTEL; + using ::PFN_vkInitializePerformanceApiINTEL; + using ::PFN_vkQueueSetPerformanceConfigurationINTEL; + using ::PFN_vkReleasePerformanceConfigurationINTEL; + using ::PFN_vkUninitializePerformanceApiINTEL; + + //=== VK_AMD_display_native_hdr === + using ::PFN_vkSetLocalDimmingAMD; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + using ::PFN_vkCreateImagePipeSurfaceFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + using ::PFN_vkCreateMetalSurfaceEXT; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + using ::PFN_vkCmdSetFragmentShadingRateKHR; + using ::PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR; + + //=== VK_KHR_dynamic_rendering_local_read === + using ::PFN_vkCmdSetRenderingAttachmentLocationsKHR; + using ::PFN_vkCmdSetRenderingInputAttachmentIndicesKHR; + + //=== VK_EXT_buffer_device_address === + using ::PFN_vkGetBufferDeviceAddressEXT; + + //=== VK_EXT_tooling_info === + using ::PFN_vkGetPhysicalDeviceToolPropertiesEXT; + + //=== VK_KHR_present_wait === + using ::PFN_vkWaitForPresentKHR; + + //=== VK_NV_cooperative_matrix === + using ::PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV; + + //=== VK_NV_coverage_reduction_mode === + using ::PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + using ::PFN_vkAcquireFullScreenExclusiveModeEXT; + using ::PFN_vkGetDeviceGroupSurfacePresentModes2EXT; + using ::PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT; + using ::PFN_vkReleaseFullScreenExclusiveModeEXT; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + using ::PFN_vkCreateHeadlessSurfaceEXT; + + //=== VK_KHR_buffer_device_address === + using ::PFN_vkGetBufferDeviceAddressKHR; + using ::PFN_vkGetBufferOpaqueCaptureAddressKHR; + using ::PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR; + + //=== VK_EXT_line_rasterization === + using ::PFN_vkCmdSetLineStippleEXT; + + //=== VK_EXT_host_query_reset === + using ::PFN_vkResetQueryPoolEXT; + + //=== VK_EXT_extended_dynamic_state === + using ::PFN_vkCmdBindVertexBuffers2EXT; + using ::PFN_vkCmdSetCullModeEXT; + using ::PFN_vkCmdSetDepthBoundsTestEnableEXT; + using ::PFN_vkCmdSetDepthCompareOpEXT; + using ::PFN_vkCmdSetDepthTestEnableEXT; + using ::PFN_vkCmdSetDepthWriteEnableEXT; + using ::PFN_vkCmdSetFrontFaceEXT; + using ::PFN_vkCmdSetPrimitiveTopologyEXT; + using ::PFN_vkCmdSetScissorWithCountEXT; + using ::PFN_vkCmdSetStencilOpEXT; + using ::PFN_vkCmdSetStencilTestEnableEXT; + using ::PFN_vkCmdSetViewportWithCountEXT; + + //=== VK_KHR_deferred_host_operations === + using ::PFN_vkCreateDeferredOperationKHR; + using ::PFN_vkDeferredOperationJoinKHR; + using ::PFN_vkDestroyDeferredOperationKHR; + using ::PFN_vkGetDeferredOperationMaxConcurrencyKHR; + using ::PFN_vkGetDeferredOperationResultKHR; + + //=== VK_KHR_pipeline_executable_properties === + using ::PFN_vkGetPipelineExecutableInternalRepresentationsKHR; + using ::PFN_vkGetPipelineExecutablePropertiesKHR; + using ::PFN_vkGetPipelineExecutableStatisticsKHR; + + //=== VK_EXT_host_image_copy === + using ::PFN_vkCopyImageToImageEXT; + using ::PFN_vkCopyImageToMemoryEXT; + using ::PFN_vkCopyMemoryToImageEXT; + using ::PFN_vkGetImageSubresourceLayout2EXT; + using ::PFN_vkTransitionImageLayoutEXT; + + //=== VK_KHR_map_memory2 === + using ::PFN_vkMapMemory2KHR; + using ::PFN_vkUnmapMemory2KHR; + + //=== VK_EXT_swapchain_maintenance1 === + using ::PFN_vkReleaseSwapchainImagesEXT; + + //=== VK_NV_device_generated_commands === + using ::PFN_vkCmdBindPipelineShaderGroupNV; + using ::PFN_vkCmdExecuteGeneratedCommandsNV; + using ::PFN_vkCmdPreprocessGeneratedCommandsNV; + using ::PFN_vkCreateIndirectCommandsLayoutNV; + using ::PFN_vkDestroyIndirectCommandsLayoutNV; + using ::PFN_vkGetGeneratedCommandsMemoryRequirementsNV; + + //=== VK_EXT_depth_bias_control === + using ::PFN_vkCmdSetDepthBias2EXT; + + //=== VK_EXT_acquire_drm_display === + using ::PFN_vkAcquireDrmDisplayEXT; + using ::PFN_vkGetDrmDisplayEXT; + + //=== VK_EXT_private_data === + using ::PFN_vkCreatePrivateDataSlotEXT; + using ::PFN_vkDestroyPrivateDataSlotEXT; + using ::PFN_vkGetPrivateDataEXT; + using ::PFN_vkSetPrivateDataEXT; + + //=== VK_KHR_video_encode_queue === + using ::PFN_vkCmdEncodeVideoKHR; + using ::PFN_vkGetEncodedVideoSessionParametersKHR; + using ::PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + using ::PFN_vkCmdCudaLaunchKernelNV; + using ::PFN_vkCreateCudaFunctionNV; + using ::PFN_vkCreateCudaModuleNV; + using ::PFN_vkDestroyCudaFunctionNV; + using ::PFN_vkDestroyCudaModuleNV; + using ::PFN_vkGetCudaModuleCacheNV; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + using ::PFN_vkCmdBeginPerTileExecutionQCOM; + using ::PFN_vkCmdDispatchTileQCOM; + using ::PFN_vkCmdEndPerTileExecutionQCOM; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + using ::PFN_vkExportMetalObjectsEXT; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_synchronization2 === + using ::PFN_vkCmdPipelineBarrier2KHR; + using ::PFN_vkCmdResetEvent2KHR; + using ::PFN_vkCmdSetEvent2KHR; + using ::PFN_vkCmdWaitEvents2KHR; + using ::PFN_vkCmdWriteTimestamp2KHR; + using ::PFN_vkQueueSubmit2KHR; + + //=== VK_EXT_descriptor_buffer === + using ::PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT; + using ::PFN_vkCmdBindDescriptorBuffersEXT; + using ::PFN_vkCmdSetDescriptorBufferOffsetsEXT; + using ::PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT; + using ::PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT; + using ::PFN_vkGetDescriptorEXT; + using ::PFN_vkGetDescriptorSetLayoutBindingOffsetEXT; + using ::PFN_vkGetDescriptorSetLayoutSizeEXT; + using ::PFN_vkGetImageOpaqueCaptureDescriptorDataEXT; + using ::PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT; + using ::PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT; + + //=== VK_KHR_device_address_commands === + using ::PFN_vkCmdBeginConditionalRendering2EXT; + using ::PFN_vkCmdBeginTransformFeedback2EXT; + using ::PFN_vkCmdBindIndexBuffer3KHR; + using ::PFN_vkCmdBindTransformFeedbackBuffers2EXT; + using ::PFN_vkCmdBindVertexBuffers3KHR; + using ::PFN_vkCmdCopyImageToMemoryKHR; + using ::PFN_vkCmdCopyMemoryKHR; + using ::PFN_vkCmdCopyMemoryToImageKHR; + using ::PFN_vkCmdCopyQueryPoolResultsToMemoryKHR; + using ::PFN_vkCmdDispatchIndirect2KHR; + using ::PFN_vkCmdDrawIndexedIndirect2KHR; + using ::PFN_vkCmdDrawIndexedIndirectCount2KHR; + using ::PFN_vkCmdDrawIndirect2KHR; + using ::PFN_vkCmdDrawIndirectByteCount2EXT; + using ::PFN_vkCmdDrawIndirectCount2KHR; + using ::PFN_vkCmdDrawMeshTasksIndirect2EXT; + using ::PFN_vkCmdDrawMeshTasksIndirectCount2EXT; + using ::PFN_vkCmdEndTransformFeedback2EXT; + using ::PFN_vkCmdFillMemoryKHR; + using ::PFN_vkCmdUpdateMemoryKHR; + using ::PFN_vkCmdWriteMarkerToMemoryAMD; + using ::PFN_vkCreateAccelerationStructure2KHR; + + //=== VK_NV_fragment_shading_rate_enums === + using ::PFN_vkCmdSetFragmentShadingRateEnumNV; + + //=== VK_EXT_mesh_shader === + using ::PFN_vkCmdDrawMeshTasksEXT; + using ::PFN_vkCmdDrawMeshTasksIndirectCountEXT; + using ::PFN_vkCmdDrawMeshTasksIndirectEXT; + + //=== VK_KHR_copy_commands2 === + using ::PFN_vkCmdBlitImage2KHR; + using ::PFN_vkCmdCopyBuffer2KHR; + using ::PFN_vkCmdCopyBufferToImage2KHR; + using ::PFN_vkCmdCopyImage2KHR; + using ::PFN_vkCmdCopyImageToBuffer2KHR; + using ::PFN_vkCmdResolveImage2KHR; + + //=== VK_EXT_device_fault === + using ::PFN_vkGetDeviceFaultInfoEXT; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + using ::PFN_vkAcquireWinrtDisplayNV; + using ::PFN_vkGetWinrtDisplayNV; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + using ::PFN_vkCreateDirectFBSurfaceEXT; + using ::PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_vertex_input_dynamic_state === + using ::PFN_vkCmdSetVertexInputEXT; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + using ::PFN_vkGetMemoryZirconHandleFUCHSIA; + using ::PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + using ::PFN_vkGetSemaphoreZirconHandleFUCHSIA; + using ::PFN_vkImportSemaphoreZirconHandleFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + using ::PFN_vkCreateBufferCollectionFUCHSIA; + using ::PFN_vkDestroyBufferCollectionFUCHSIA; + using ::PFN_vkGetBufferCollectionPropertiesFUCHSIA; + using ::PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA; + using ::PFN_vkSetBufferCollectionImageConstraintsFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + using ::PFN_vkCmdSubpassShadingHUAWEI; + using ::PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI; + + //=== VK_HUAWEI_invocation_mask === + using ::PFN_vkCmdBindInvocationMaskHUAWEI; + + //=== VK_NV_external_memory_rdma === + using ::PFN_vkGetMemoryRemoteAddressNV; + + //=== VK_EXT_pipeline_properties === + using ::PFN_vkGetPipelinePropertiesEXT; + + //=== VK_EXT_extended_dynamic_state2 === + using ::PFN_vkCmdSetDepthBiasEnableEXT; + using ::PFN_vkCmdSetLogicOpEXT; + using ::PFN_vkCmdSetPatchControlPointsEXT; + using ::PFN_vkCmdSetPrimitiveRestartEnableEXT; + using ::PFN_vkCmdSetRasterizerDiscardEnableEXT; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + using ::PFN_vkCreateScreenSurfaceQNX; + using ::PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + using ::PFN_vkCmdSetColorWriteEnableEXT; + + //=== VK_KHR_ray_tracing_maintenance1 === + using ::PFN_vkCmdTraceRaysIndirect2KHR; + + //=== VK_EXT_multi_draw === + using ::PFN_vkCmdDrawMultiEXT; + using ::PFN_vkCmdDrawMultiIndexedEXT; + + //=== VK_EXT_opacity_micromap === + using ::PFN_vkBuildMicromapsEXT; + using ::PFN_vkCmdBuildMicromapsEXT; + using ::PFN_vkCmdCopyMemoryToMicromapEXT; + using ::PFN_vkCmdCopyMicromapEXT; + using ::PFN_vkCmdCopyMicromapToMemoryEXT; + using ::PFN_vkCmdWriteMicromapsPropertiesEXT; + using ::PFN_vkCopyMemoryToMicromapEXT; + using ::PFN_vkCopyMicromapEXT; + using ::PFN_vkCopyMicromapToMemoryEXT; + using ::PFN_vkCreateMicromapEXT; + using ::PFN_vkDestroyMicromapEXT; + using ::PFN_vkGetDeviceMicromapCompatibilityEXT; + using ::PFN_vkGetMicromapBuildSizesEXT; + using ::PFN_vkWriteMicromapsPropertiesEXT; + + //=== VK_HUAWEI_cluster_culling_shader === + using ::PFN_vkCmdDrawClusterHUAWEI; + using ::PFN_vkCmdDrawClusterIndirectHUAWEI; + + //=== VK_EXT_pageable_device_local_memory === + using ::PFN_vkSetDeviceMemoryPriorityEXT; + + //=== VK_KHR_maintenance4 === + using ::PFN_vkGetDeviceBufferMemoryRequirementsKHR; + using ::PFN_vkGetDeviceImageMemoryRequirementsKHR; + using ::PFN_vkGetDeviceImageSparseMemoryRequirementsKHR; + + //=== VK_VALVE_descriptor_set_host_mapping === + using ::PFN_vkGetDescriptorSetHostMappingVALVE; + using ::PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE; + + //=== VK_NV_copy_memory_indirect === + using ::PFN_vkCmdCopyMemoryIndirectNV; + using ::PFN_vkCmdCopyMemoryToImageIndirectNV; + + //=== VK_NV_memory_decompression === + using ::PFN_vkCmdDecompressMemoryIndirectCountNV; + using ::PFN_vkCmdDecompressMemoryNV; + + //=== VK_NV_device_generated_commands_compute === + using ::PFN_vkCmdUpdatePipelineIndirectBufferNV; + using ::PFN_vkGetPipelineIndirectDeviceAddressNV; + using ::PFN_vkGetPipelineIndirectMemoryRequirementsNV; + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + using ::PFN_vkGetMemoryNativeBufferOHOS; + using ::PFN_vkGetNativeBufferPropertiesOHOS; +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_extended_dynamic_state3 === + using ::PFN_vkCmdSetAlphaToCoverageEnableEXT; + using ::PFN_vkCmdSetAlphaToOneEnableEXT; + using ::PFN_vkCmdSetColorBlendAdvancedEXT; + using ::PFN_vkCmdSetColorBlendEnableEXT; + using ::PFN_vkCmdSetColorBlendEquationEXT; + using ::PFN_vkCmdSetColorWriteMaskEXT; + using ::PFN_vkCmdSetConservativeRasterizationModeEXT; + using ::PFN_vkCmdSetCoverageModulationModeNV; + using ::PFN_vkCmdSetCoverageModulationTableEnableNV; + using ::PFN_vkCmdSetCoverageModulationTableNV; + using ::PFN_vkCmdSetCoverageReductionModeNV; + using ::PFN_vkCmdSetCoverageToColorEnableNV; + using ::PFN_vkCmdSetCoverageToColorLocationNV; + using ::PFN_vkCmdSetDepthClampEnableEXT; + using ::PFN_vkCmdSetDepthClipEnableEXT; + using ::PFN_vkCmdSetDepthClipNegativeOneToOneEXT; + using ::PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT; + using ::PFN_vkCmdSetLineRasterizationModeEXT; + using ::PFN_vkCmdSetLineStippleEnableEXT; + using ::PFN_vkCmdSetLogicOpEnableEXT; + using ::PFN_vkCmdSetPolygonModeEXT; + using ::PFN_vkCmdSetProvokingVertexModeEXT; + using ::PFN_vkCmdSetRasterizationSamplesEXT; + using ::PFN_vkCmdSetRasterizationStreamEXT; + using ::PFN_vkCmdSetRepresentativeFragmentTestEnableNV; + using ::PFN_vkCmdSetSampleLocationsEnableEXT; + using ::PFN_vkCmdSetSampleMaskEXT; + using ::PFN_vkCmdSetShadingRateImageEnableNV; + using ::PFN_vkCmdSetTessellationDomainOriginEXT; + using ::PFN_vkCmdSetViewportSwizzleNV; + using ::PFN_vkCmdSetViewportWScalingEnableNV; + + //=== VK_ARM_tensors === + using ::PFN_vkBindTensorMemoryARM; + using ::PFN_vkCmdCopyTensorARM; + using ::PFN_vkCreateTensorARM; + using ::PFN_vkCreateTensorViewARM; + using ::PFN_vkDestroyTensorARM; + using ::PFN_vkDestroyTensorViewARM; + using ::PFN_vkGetDeviceTensorMemoryRequirementsARM; + using ::PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM; + using ::PFN_vkGetTensorMemoryRequirementsARM; + using ::PFN_vkGetTensorOpaqueCaptureDescriptorDataARM; + using ::PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM; + + //=== VK_EXT_shader_module_identifier === + using ::PFN_vkGetShaderModuleCreateInfoIdentifierEXT; + using ::PFN_vkGetShaderModuleIdentifierEXT; + + //=== VK_NV_optical_flow === + using ::PFN_vkBindOpticalFlowSessionImageNV; + using ::PFN_vkCmdOpticalFlowExecuteNV; + using ::PFN_vkCreateOpticalFlowSessionNV; + using ::PFN_vkDestroyOpticalFlowSessionNV; + using ::PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV; + + //=== VK_KHR_maintenance5 === + using ::PFN_vkCmdBindIndexBuffer2KHR; + using ::PFN_vkGetDeviceImageSubresourceLayoutKHR; + using ::PFN_vkGetImageSubresourceLayout2KHR; + using ::PFN_vkGetRenderingAreaGranularityKHR; + + //=== VK_AMD_anti_lag === + using ::PFN_vkAntiLagUpdateAMD; + + //=== VK_KHR_present_wait2 === + using ::PFN_vkWaitForPresent2KHR; + + //=== VK_EXT_shader_object === + using ::PFN_vkCmdBindShadersEXT; + using ::PFN_vkCmdSetDepthClampRangeEXT; + using ::PFN_vkCreateShadersEXT; + using ::PFN_vkDestroyShaderEXT; + using ::PFN_vkGetShaderBinaryDataEXT; + + //=== VK_KHR_pipeline_binary === + using ::PFN_vkCreatePipelineBinariesKHR; + using ::PFN_vkDestroyPipelineBinaryKHR; + using ::PFN_vkGetPipelineBinaryDataKHR; + using ::PFN_vkGetPipelineKeyKHR; + using ::PFN_vkReleaseCapturedPipelineDataKHR; + + //=== VK_QCOM_tile_properties === + using ::PFN_vkGetDynamicRenderingTilePropertiesQCOM; + using ::PFN_vkGetFramebufferTilePropertiesQCOM; + + //=== VK_KHR_swapchain_maintenance1 === + using ::PFN_vkReleaseSwapchainImagesKHR; + + //=== VK_NV_cooperative_vector === + using ::PFN_vkCmdConvertCooperativeVectorMatrixNV; + using ::PFN_vkConvertCooperativeVectorMatrixNV; + using ::PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV; + + //=== VK_NV_low_latency2 === + using ::PFN_vkGetLatencyTimingsNV; + using ::PFN_vkLatencySleepNV; + using ::PFN_vkQueueNotifyOutOfBandNV; + using ::PFN_vkSetLatencyMarkerNV; + using ::PFN_vkSetLatencySleepModeNV; + + //=== VK_KHR_cooperative_matrix === + using ::PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR; + + //=== VK_ARM_data_graph === + using ::PFN_vkBindDataGraphPipelineSessionMemoryARM; + using ::PFN_vkCmdDispatchDataGraphARM; + using ::PFN_vkCreateDataGraphPipelinesARM; + using ::PFN_vkCreateDataGraphPipelineSessionARM; + using ::PFN_vkDestroyDataGraphPipelineSessionARM; + using ::PFN_vkGetDataGraphPipelineAvailablePropertiesARM; + using ::PFN_vkGetDataGraphPipelinePropertiesARM; + using ::PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM; + using ::PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM; + using ::PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM; + using ::PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM; + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + using ::PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + using ::PFN_vkGetScreenBufferPropertiesQNX; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_line_rasterization === + using ::PFN_vkCmdSetLineStippleKHR; + + //=== VK_KHR_calibrated_timestamps === + using ::PFN_vkGetCalibratedTimestampsKHR; + using ::PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR; + + //=== VK_KHR_maintenance6 === + using ::PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT; + using ::PFN_vkCmdBindDescriptorSets2KHR; + using ::PFN_vkCmdPushConstants2KHR; + using ::PFN_vkCmdPushDescriptorSet2KHR; + using ::PFN_vkCmdPushDescriptorSetWithTemplate2KHR; + using ::PFN_vkCmdSetDescriptorBufferOffsets2EXT; + + //=== VK_QCOM_tile_memory_heap === + using ::PFN_vkCmdBindTileMemoryQCOM; + + //=== VK_KHR_copy_memory_indirect === + using ::PFN_vkCmdCopyMemoryIndirectKHR; + using ::PFN_vkCmdCopyMemoryToImageIndirectKHR; + + //=== VK_EXT_memory_decompression === + using ::PFN_vkCmdDecompressMemoryEXT; + using ::PFN_vkCmdDecompressMemoryIndirectCountEXT; + + //=== VK_NV_external_compute_queue === + using ::PFN_vkCreateExternalComputeQueueNV; + using ::PFN_vkDestroyExternalComputeQueueNV; + using ::PFN_vkGetExternalComputeQueueDataNV; + + //=== VK_NV_cluster_acceleration_structure === + using ::PFN_vkCmdBuildClusterAccelerationStructureIndirectNV; + using ::PFN_vkGetClusterAccelerationStructureBuildSizesNV; + + //=== VK_NV_partitioned_acceleration_structure === + using ::PFN_vkCmdBuildPartitionedAccelerationStructuresNV; + using ::PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV; + + //=== VK_EXT_device_generated_commands === + using ::PFN_vkCmdExecuteGeneratedCommandsEXT; + using ::PFN_vkCmdPreprocessGeneratedCommandsEXT; + using ::PFN_vkCreateIndirectCommandsLayoutEXT; + using ::PFN_vkCreateIndirectExecutionSetEXT; + using ::PFN_vkDestroyIndirectCommandsLayoutEXT; + using ::PFN_vkDestroyIndirectExecutionSetEXT; + using ::PFN_vkGetGeneratedCommandsMemoryRequirementsEXT; + using ::PFN_vkUpdateIndirectExecutionSetPipelineEXT; + using ::PFN_vkUpdateIndirectExecutionSetShaderEXT; + + //=== VK_KHR_device_fault === + using ::PFN_vkGetDeviceFaultDebugInfoKHR; + using ::PFN_vkGetDeviceFaultReportsKHR; + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + using ::PFN_vkCreateSurfaceOHOS; +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_NV_cooperative_matrix2 === + using ::PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + using ::PFN_vkGetMemoryMetalHandleEXT; + using ::PFN_vkGetMemoryMetalHandlePropertiesEXT; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_performance_counters_by_region === + using ::PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM; + + //=== VK_ARM_shader_instrumentation === + using ::PFN_vkClearShaderInstrumentationMetricsARM; + using ::PFN_vkCmdBeginShaderInstrumentationARM; + using ::PFN_vkCmdEndShaderInstrumentationARM; + using ::PFN_vkCreateShaderInstrumentationARM; + using ::PFN_vkDestroyShaderInstrumentationARM; + using ::PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM; + using ::PFN_vkGetShaderInstrumentationValuesARM; + + //=== VK_EXT_fragment_density_map_offset === + using ::PFN_vkCmdEndRendering2EXT; + + //=== VK_EXT_custom_resolve === + using ::PFN_vkCmdBeginCustomResolveEXT; + + //=== VK_KHR_maintenance10 === + using ::PFN_vkCmdEndRendering2KHR; + + //=== VK_NV_compute_occupancy_priority === + using ::PFN_vkCmdSetComputeOccupancyPriorityNV; + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + using ::PFN_vkCreateUbmSurfaceSEC; + using ::PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC; +#endif /*VK_USE_PLATFORM_UBM_SEC*/ +} diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.h new file mode 100644 index 000000000..2ed8d9c7a --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.h @@ -0,0 +1,103 @@ +#ifndef VULKAN_H_ +#define VULKAN_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +#include "vk_platform.h" +#include "vulkan_core.h" + +#ifdef VK_USE_PLATFORM_ANDROID_KHR +#include "vulkan_android.h" +#endif + +#ifdef VK_USE_PLATFORM_FUCHSIA +#include +#include "vulkan_fuchsia.h" +#endif + +#ifdef VK_USE_PLATFORM_IOS_MVK +#include "vulkan_ios.h" +#endif + + +#ifdef VK_USE_PLATFORM_MACOS_MVK +#include "vulkan_macos.h" +#endif + +#ifdef VK_USE_PLATFORM_METAL_EXT +#include "vulkan_metal.h" +#endif + +#ifdef VK_USE_PLATFORM_VI_NN +#include "vulkan_vi.h" +#endif + + +#ifdef VK_USE_PLATFORM_WAYLAND_KHR +#include "vulkan_wayland.h" +#endif + + +#ifdef VK_USE_PLATFORM_WIN32_KHR +#include +#include "vulkan_win32.h" +#endif + + +#ifdef VK_USE_PLATFORM_XCB_KHR +#include +#include "vulkan_xcb.h" +#endif + + +#ifdef VK_USE_PLATFORM_XLIB_KHR +#include +#include "vulkan_xlib.h" +#endif + + +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT +#include +#include "vulkan_directfb.h" +#endif + + +#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT +#include +#include +#include "vulkan_xlib_xrandr.h" +#endif + + +#ifdef VK_USE_PLATFORM_GGP +#include +#include "vulkan_ggp.h" +#endif + + +#ifdef VK_USE_PLATFORM_SCREEN_QNX +#include +#include "vulkan_screen.h" +#endif + + +#ifdef VK_USE_PLATFORM_SCI +#include +#include +#include "vulkan_sci.h" +#endif + + +#ifdef VK_ENABLE_BETA_EXTENSIONS +#include "vulkan_beta.h" +#endif + +#ifdef VK_USE_PLATFORM_OHOS +#include "vulkan_ohos.h" +#endif + +#endif // VULKAN_H_ diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.hpp new file mode 100644 index 000000000..2e6ae3c88 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan.hpp @@ -0,0 +1,26501 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_HPP +#define VULKAN_HPP + +#if !defined( VULKAN_HPP_CXX_MODULE ) +# include +// clang-format off +# include +// clang-format on +# include +# include // ArrayWrapperND +# include +# include // strnlen +# include // std::string +# include // std::exchange +# if 17 <= VULKAN_HPP_CPP_VERSION +# include +# endif +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) +# include // std::tie +# include // std::vector +# endif +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) +# include +# endif +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# include // std::is_error_code_enum +# endif +# if defined( VULKAN_HPP_SUPPORT_SPAN ) +# include +# endif +#endif + +VULKAN_HPP_STATIC_ASSERT( VK_HEADER_VERSION == 347, "Wrong VK_HEADER_VERSION!" ); + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ + namespace detail + { + class DispatchLoaderDynamic; + +#if !defined( VULKAN_HPP_DEFAULT_DISPATCHER_HANDLED ) && VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 + extern VULKAN_HPP_STORAGE_API DispatchLoaderDynamic defaultDispatchLoaderDynamic; +#endif + } // namespace detail +} // namespace VULKAN_HPP_NAMESPACE + +// includes through some other header +// this results in major(x) being resolved to gnu_dev_major(x) +// which is an expression in a constructor initializer list. +#if defined( major ) +# undef major +#endif +#if defined( minor ) +# undef minor +#endif + +// Windows defines MemoryBarrier which is deprecated and collides +// with the VULKAN_HPP_NAMESPACE::MemoryBarrier struct. +#if defined( MemoryBarrier ) +# undef MemoryBarrier +#endif + +// XLib.h defines True/False, which collides with our VULKAN_HPP_NAMESPACE::True/VULKAN_HPP_NAMESPACE::False +// -> undef them and provide some namepace-secure constexpr +#if defined( True ) +# undef True +constexpr int True = 1; +#endif +#if defined( False ) +# undef False +constexpr int False = 0; +#endif + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ + template + class ArrayWrapper1D : public std::array + { + public: + VULKAN_HPP_CONSTEXPR ArrayWrapper1D() VULKAN_HPP_NOEXCEPT : std::array() {} + + VULKAN_HPP_CONSTEXPR ArrayWrapper1D( std::array const & data ) VULKAN_HPP_NOEXCEPT : std::array( data ) {} + + template ::value, int>::type = 0> + VULKAN_HPP_CONSTEXPR_14 ArrayWrapper1D( std::string const & data ) VULKAN_HPP_NOEXCEPT + { + copy( data.data(), data.length() ); + } + +#if 17 <= VULKAN_HPP_CPP_VERSION + template ::value, int>::type = 0> + VULKAN_HPP_CONSTEXPR_14 ArrayWrapper1D( std::string_view data ) VULKAN_HPP_NOEXCEPT + { + copy( data.data(), data.length() ); + } +#endif + +#if ( VK_USE_64_BIT_PTR_DEFINES == 0 ) + // on 32 bit compiles, needs overloads on index type int to resolve ambiguities + VULKAN_HPP_CONSTEXPR T const & operator[]( int index ) const VULKAN_HPP_NOEXCEPT + { + return std::array::operator[]( index ); + } + + T & operator[]( int index ) VULKAN_HPP_NOEXCEPT + { + return std::array::operator[]( index ); + } +#endif + + operator T const *() const VULKAN_HPP_NOEXCEPT + { + return this->data(); + } + + operator T *() VULKAN_HPP_NOEXCEPT + { + return this->data(); + } + + template ::value, int>::type = 0> + operator std::string() const + { + return std::string( this->data(), strnlen( this->data(), N ) ); + } + +#if 17 <= VULKAN_HPP_CPP_VERSION + template ::value, int>::type = 0> + operator std::string_view() const + { + return std::string_view( this->data(), strnlen( this->data(), N ) ); + } +#endif + + private: + VULKAN_HPP_CONSTEXPR_14 void copy( char const * data, size_t len ) VULKAN_HPP_NOEXCEPT + { + size_t n = ( std::min )( N - 1, len ); + for ( size_t i = 0; i < n; ++i ) + { + ( *this )[i] = data[i]; + } + ( *this )[n] = 0; + } + }; + +// relational operators between ArrayWrapper1D of chars with potentially different sizes +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + template + std::strong_ordering operator<=>( ArrayWrapper1D const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + int result = strcmp( lhs.data(), rhs.data() ); + return ( result < 0 ) ? std::strong_ordering::less : ( ( result > 0 ) ? std::strong_ordering::greater : std::strong_ordering::equal ); + } +#else + template + bool operator<( ArrayWrapper1D const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return strcmp( lhs.data(), rhs.data() ) < 0; + } + + template + bool operator<=( ArrayWrapper1D const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return strcmp( lhs.data(), rhs.data() ) <= 0; + } + + template + bool operator>( ArrayWrapper1D const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return strcmp( lhs.data(), rhs.data() ) > 0; + } + + template + bool operator>=( ArrayWrapper1D const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return strcmp( lhs.data(), rhs.data() ) >= 0; + } +#endif + + template + bool operator==( ArrayWrapper1D const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return strcmp( lhs.data(), rhs.data() ) == 0; + } + + template + bool operator!=( ArrayWrapper1D const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return strcmp( lhs.data(), rhs.data() ) != 0; + } + +// specialization of relational operators between std::string and arrays of chars +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + template + std::strong_ordering operator<=>( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs <=> rhs.data(); + } +#else + template + bool operator<( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs < rhs.data(); + } + + template + bool operator<=( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs <= rhs.data(); + } + + template + bool operator>( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs > rhs.data(); + } + + template + bool operator>=( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs >= rhs.data(); + } +#endif + + template + bool operator==( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs == rhs.data(); + } + + template + bool operator!=( std::string const & lhs, ArrayWrapper1D const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs != rhs.data(); + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + template + std::strong_ordering operator<=>( ArrayWrapper1D const & lhs, std::string const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs.data() <=> rhs; + } +#else + template + bool operator<( ArrayWrapper1D const & lhs, std::string const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs.data() < rhs; + } + + template + bool operator<=( ArrayWrapper1D const & lhs, std::string const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs.data() <= rhs; + } + + template + bool operator>( ArrayWrapper1D const & lhs, std::string const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs.data() > rhs; + } + + template + bool operator>=( ArrayWrapper1D const & lhs, std::string const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs.data() >= rhs; + } +#endif + + template + bool operator==( ArrayWrapper1D const & lhs, std::string const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs.data() == rhs; + } + + template + bool operator!=( ArrayWrapper1D const & lhs, std::string const & rhs ) VULKAN_HPP_NOEXCEPT + { + return lhs.data() != rhs; + } + + template + class ArrayWrapper2D : public std::array, N> + { + public: + VULKAN_HPP_CONSTEXPR ArrayWrapper2D() VULKAN_HPP_NOEXCEPT : std::array, N>() {} + + VULKAN_HPP_CONSTEXPR ArrayWrapper2D( std::array, N> const & data ) VULKAN_HPP_NOEXCEPT + : std::array, N>( *reinterpret_cast, N> const *>( &data ) ) + { + } + }; + +#if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + class ArrayProxy + { + public: + VULKAN_HPP_CONSTEXPR ArrayProxy() VULKAN_HPP_NOEXCEPT + : m_count( 0 ) + , m_ptr( nullptr ) + { + } + + VULKAN_HPP_CONSTEXPR ArrayProxy( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + : m_count( 0 ) + , m_ptr( nullptr ) + { + } + + ArrayProxy( T const & value ) VULKAN_HPP_NOEXCEPT + : m_count( 1 ) + , m_ptr( &value ) + { + } + + ArrayProxy( uint32_t count, T const * ptr ) VULKAN_HPP_NOEXCEPT + : m_count( count ) + , m_ptr( ptr ) + { + } + + template + ArrayProxy( T const ( &ptr )[C] ) VULKAN_HPP_NOEXCEPT + : m_count( C ) + , m_ptr( ptr ) + { + } + +# if __GNUC__ >= 9 +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Winit-list-lifetime" +# endif + + ArrayProxy( std::initializer_list const & list ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( list.size() ) ) + , m_ptr( list.begin() ) + { + } + + template ::value, int>::type = 0> + ArrayProxy( std::initializer_list::type> const & list ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( list.size() ) ) + , m_ptr( list.begin() ) + { + } + +# if __GNUC__ >= 9 +# pragma GCC diagnostic pop +# endif + + // Any type with a .data() return type implicitly convertible to T*, and a .size() return type implicitly + // convertible to size_t. The const version can capture temporaries, with lifetime ending at end of statement. + template ().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value>::type * = nullptr> + ArrayProxy( V const & v ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) + { + } + + T const * begin() const VULKAN_HPP_NOEXCEPT + { + return m_ptr; + } + + T const * end() const VULKAN_HPP_NOEXCEPT + { + return m_ptr + m_count; + } + + T const & front() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_count && m_ptr ); + return *m_ptr; + } + + T const & back() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_count && m_ptr ); + return *( m_ptr + m_count - 1 ); + } + + bool empty() const VULKAN_HPP_NOEXCEPT + { + return ( m_count == 0 ); + } + + uint32_t size() const VULKAN_HPP_NOEXCEPT + { + return m_count; + } + + T const * data() const VULKAN_HPP_NOEXCEPT + { + return m_ptr; + } + + private: + uint32_t m_count; + T const * m_ptr; + }; + + template + class ArrayProxyNoTemporaries + { + public: + VULKAN_HPP_CONSTEXPR ArrayProxyNoTemporaries() VULKAN_HPP_NOEXCEPT + : m_count( 0 ) + , m_ptr( nullptr ) + { + } + + VULKAN_HPP_CONSTEXPR ArrayProxyNoTemporaries( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + : m_count( 0 ) + , m_ptr( nullptr ) + { + } + + template ::value && std::is_lvalue_reference::value, int>::type = 0> + ArrayProxyNoTemporaries( B && value ) VULKAN_HPP_NOEXCEPT + : m_count( 1 ) + , m_ptr( &value ) + { + } + + ArrayProxyNoTemporaries( uint32_t count, T * ptr ) VULKAN_HPP_NOEXCEPT + : m_count( count ) + , m_ptr( ptr ) + { + } + + template + ArrayProxyNoTemporaries( T ( &ptr )[C] ) VULKAN_HPP_NOEXCEPT + : m_count( C ) + , m_ptr( ptr ) + { + } + + template + ArrayProxyNoTemporaries( T ( &&ptr )[C] ) = delete; + + // Any l-value reference with a .data() return type implicitly convertible to T*, and a .size() return type implicitly convertible to size_t. + template ().begin() ), T *>::value && + std::is_convertible().data() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value && std::is_lvalue_reference::value, + int>::type = 0> + ArrayProxyNoTemporaries( V && v ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( v.size() ) ) + , m_ptr( v.data() ) + { + } + + // Any l-value reference with a .begin() return type implicitly convertible to T*, and a .size() return type implicitly convertible to size_t. + template ().begin() ), T *>::value && + std::is_convertible().size() ), std::size_t>::value && std::is_lvalue_reference::value, + int>::type = 0> + ArrayProxyNoTemporaries( V && v ) VULKAN_HPP_NOEXCEPT + : m_count( static_cast( v.size() ) ) + , m_ptr( v.begin() ) + { + } + + T const * begin() const VULKAN_HPP_NOEXCEPT + { + return m_ptr; + } + + T const * end() const VULKAN_HPP_NOEXCEPT + { + return m_ptr + m_count; + } + + T const & front() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_count && m_ptr ); + return *m_ptr; + } + + T const & back() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_count && m_ptr ); + return *( m_ptr + m_count - 1 ); + } + + bool empty() const VULKAN_HPP_NOEXCEPT + { + return ( m_count == 0 ); + } + + uint32_t size() const VULKAN_HPP_NOEXCEPT + { + return m_count; + } + + T * data() const VULKAN_HPP_NOEXCEPT + { + return m_ptr; + } + + private: + uint32_t m_count; + T * m_ptr; + }; + + template + class StridedArrayProxy : protected ArrayProxy + { + public: + using ArrayProxy::ArrayProxy; + + StridedArrayProxy( uint32_t count, T const * ptr, uint32_t stride ) VULKAN_HPP_NOEXCEPT + : ArrayProxy( count, ptr ) + , m_stride( stride ) + { + VULKAN_HPP_ASSERT( sizeof( T ) <= stride ); + } + + using ArrayProxy::begin; + + T const * end() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( static_cast( begin() ) + size() * m_stride ); + } + + using ArrayProxy::front; + + T const & back() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( begin() && size() ); + return *reinterpret_cast( static_cast( begin() ) + ( size() - 1 ) * m_stride ); + } + + using ArrayProxy::empty; + using ArrayProxy::size; + using ArrayProxy::data; + + uint32_t stride() const + { + return m_stride; + } + + private: + uint32_t m_stride = sizeof( T ); + }; + + template + class Optional + { + public: + Optional( RefType & reference ) VULKAN_HPP_NOEXCEPT + { + m_ptr = &reference; + } + + Optional( RefType * ptr ) VULKAN_HPP_NOEXCEPT + { + m_ptr = ptr; + } + + Optional( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_ptr = nullptr; + } + + operator RefType *() const VULKAN_HPP_NOEXCEPT + { + return m_ptr; + } + + RefType const * operator->() const VULKAN_HPP_NOEXCEPT + { + return m_ptr; + } + + RefType const * get() const VULKAN_HPP_NOEXCEPT + { + return m_ptr; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return !!m_ptr; + } + + private: + RefType * m_ptr; + }; + + template + struct StructExtends + { + enum + { + value = false + }; + }; + + template + struct IsPartOfStructureChain + { + static bool const valid = false; + }; + + template + struct IsPartOfStructureChain + { + static bool const valid = std::is_same::value || IsPartOfStructureChain::valid; + }; + + template + struct StructureChainContains + { + static bool const value = std::is_same>::type>::value || + StructureChainContains::value; + }; + + template + struct StructureChainContains<0, T, ChainElements...> + { + static bool const value = std::is_same>::type>::value; + }; + + template + struct StructureChainValidation + { + using TestType = typename std::tuple_element>::type; + static bool const valid = StructExtends>::type>::value && + ( TestType::allowDuplicate || !StructureChainContains::value ) && + StructureChainValidation::valid; + }; + + template + struct StructureChainValidation<0, ChainElements...> + { + static bool const valid = true; + }; + + template + class StructureChain : public std::tuple + { + // Note: StructureChain has no move constructor or move assignment operator, as it is not supposed to contain movable containers. + // In order to get a copy-operation on a move-operations, those functions are neither deleted nor defaulted. + public: + StructureChain() VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_STATIC_ASSERT( StructureChainValidation::valid, "The structure chain is not valid!" ); + link(); + } + + StructureChain( StructureChain const & rhs ) VULKAN_HPP_NOEXCEPT : std::tuple( rhs ) + { + VULKAN_HPP_STATIC_ASSERT( StructureChainValidation::valid, "The structure chain is not valid!" ); + link( &std::get<0>( *this ), + &std::get<0>( rhs ), + reinterpret_cast( &std::get<0>( *this ) ), + reinterpret_cast( &std::get<0>( rhs ) ) ); + } + + StructureChain( ChainElements const &... elems ) VULKAN_HPP_NOEXCEPT : std::tuple( elems... ) + { + VULKAN_HPP_STATIC_ASSERT( StructureChainValidation::valid, "The structure chain is not valid!" ); + link(); + } + + StructureChain & operator=( StructureChain const & rhs ) VULKAN_HPP_NOEXCEPT + { + std::tuple::operator=( rhs ); + link( &std::get<0>( *this ), + &std::get<0>( rhs ), + reinterpret_cast( &std::get<0>( *this ) ), + reinterpret_cast( &std::get<0>( rhs ) ) ); + return *this; + } + +# if defined( VULKAN_HPP_USE_REFLECT ) && ( 14 <= VULKAN_HPP_CPP_VERSION ) + private: + // some helper structs to strip away the first two elements from a tuple + template + struct makeIndexSequenceHelper + { + using type = typename makeIndexSequenceHelper::type; + }; + + template + struct makeIndexSequenceHelper + { + using type = std::index_sequence; + }; + + template + using makeIndexSequence = typename makeIndexSequenceHelper::type; + + template + auto subTuple( Tuple & t, std::index_sequence ) + { + return std::make_tuple( std::get( t )... ); + } + + public: + // compare a complete structure in the StructureChain, ignoring the chaining + template >::type, size_t Which = 0> + VULKAN_HPP_NODISCARD bool elementEquals( T rhs ) VULKAN_HPP_NOEXCEPT + { + auto lhsTuple = get().reflect(); + auto rhsTuple = rhs.reflect(); + // skip the first two members: sType and pNext + auto indexSequence = makeIndexSequence<2, std::tuple_size{}>{}; + return subTuple( lhsTuple, indexSequence ) == subTuple( rhsTuple, indexSequence ); + } +# endif + + template >::type, size_t Which = 0> + VULKAN_HPP_NODISCARD T & get() & VULKAN_HPP_NOEXCEPT + { + return std::get::value>( static_cast &>( *this ) ); + } + + template >::type, size_t Which = 0> + VULKAN_HPP_NODISCARD T const & get() const & VULKAN_HPP_NOEXCEPT + { + return std::get::value>( static_cast const &>( *this ) ); + } + + template >::type, size_t Which = 0> + VULKAN_HPP_NODISCARD T && get() && VULKAN_HPP_NOEXCEPT + { + return std::move( std::get::value>( static_cast &>( *this ) ) ); + } + + template + VULKAN_HPP_NODISCARD std::tuple get() & VULKAN_HPP_NOEXCEPT + { + return std::tie( get(), get(), get()... ); + } + + template + VULKAN_HPP_NODISCARD std::tuple get() const & VULKAN_HPP_NOEXCEPT + { + return std::tie( get(), get(), get()... ); + } + + template + VULKAN_HPP_NODISCARD std::tuple get() && VULKAN_HPP_NOEXCEPT + { + return std::forward_as_tuple( std::move( get() ), std::move( get() ), std::move( get() )... ); + } + + template + VULKAN_HPP_NODISCARD std::tuple get() const && VULKAN_HPP_NOEXCEPT + { + return std::forward_as_tuple( std::move( get() ), std::move( get() ), std::move( get() )... ); + } + + // assign a complete structure to the StructureChain without modifying the chaining + template >::type, size_t Which = 0> + StructureChain & assign( T const & rhs ) VULKAN_HPP_NOEXCEPT + { + T & lhs = get(); + auto pNext = lhs.pNext; + lhs = rhs; + lhs.pNext = pNext; + return *this; + } + + template + VULKAN_HPP_NODISCARD + typename std::enable_if>::type>::value && ( Which == 0 ), bool>::type + isLinked() const VULKAN_HPP_NOEXCEPT + { + return true; + } + + template + VULKAN_HPP_NODISCARD + typename std::enable_if>::type>::value || ( Which != 0 ), bool>::type + isLinked() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_STATIC_ASSERT( IsPartOfStructureChain::valid, "Can't unlink Structure that's not part of this StructureChain!" ); + return isLinked( reinterpret_cast( &get() ) ); + } + + template + typename std::enable_if>::type>::value || ( Which != 0 ), void>::type + relink() VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_STATIC_ASSERT( IsPartOfStructureChain::valid, "Can't relink Structure that's not part of this StructureChain!" ); + auto pNext = reinterpret_cast( &get() ); + VULKAN_HPP_ASSERT( !isLinked( pNext ) ); + auto & headElement = std::get<0>( static_cast &>( *this ) ); + pNext->pNext = reinterpret_cast( headElement.pNext ); + headElement.pNext = pNext; + } + + template + typename std::enable_if>::type>::value || ( Which != 0 ), void>::type + unlink() VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_STATIC_ASSERT( IsPartOfStructureChain::valid, "Can't unlink Structure that's not part of this StructureChain!" ); + unlink( reinterpret_cast( &get() ) ); + } + + private: + template + struct ChainElementIndex : ChainElementIndex + { + }; + + template + struct ChainElementIndex::value, void>::type, First, Types...> + : ChainElementIndex + { + }; + + template + struct ChainElementIndex::value, void>::type, First, Types...> + : ChainElementIndex + { + }; + + template + struct ChainElementIndex::value, void>::type, First, Types...> + : std::integral_constant + { + }; + + VULKAN_HPP_NODISCARD bool isLinked( VkBaseInStructure const * pNext ) const VULKAN_HPP_NOEXCEPT + { + VkBaseInStructure const * elementPtr = + reinterpret_cast( &std::get<0>( static_cast const &>( *this ) ) ); + while ( elementPtr ) + { + if ( elementPtr->pNext == pNext ) + { + return true; + } + elementPtr = elementPtr->pNext; + } + return false; + } + + template + typename std::enable_if::type link() VULKAN_HPP_NOEXCEPT + { + auto & x = std::get( static_cast &>( *this ) ); + x.pNext = &std::get( static_cast &>( *this ) ); + link(); + } + + template + typename std::enable_if::type link() VULKAN_HPP_NOEXCEPT + { + } + + void link( void * dstBase, void const * srcBase, VkBaseOutStructure * dst, VkBaseInStructure const * src ) + { + while ( src->pNext ) + { + std::ptrdiff_t offset = reinterpret_cast( src->pNext ) - reinterpret_cast( srcBase ); + dst->pNext = reinterpret_cast( reinterpret_cast( dstBase ) + offset ); + dst = dst->pNext; + src = src->pNext; + } + dst->pNext = nullptr; + } + + void unlink( VkBaseOutStructure const * pNext ) VULKAN_HPP_NOEXCEPT + { + VkBaseOutStructure * elementPtr = reinterpret_cast( &std::get<0>( static_cast &>( *this ) ) ); + while ( elementPtr && ( elementPtr->pNext != pNext ) ) + { + elementPtr = elementPtr->pNext; + } + if ( elementPtr ) + { + elementPtr->pNext = pNext->pNext; + } + else + { + VULKAN_HPP_ASSERT( false ); // fires, if the ClassType member has already been unlinked ! + } + } + }; + + // interupt the VULKAN_HPP_NAMESPACE for a moment to add specializations of std::tuple_size and std::tuple_element for the StructureChain! +} + +VULKAN_HPP_EXPORT namespace std +{ + template + struct tuple_size> + { + static constexpr size_t value = std::tuple_size>::value; + }; + + template + struct tuple_element> + { + using type = typename std::tuple_element>::type; + }; +} // namespace std + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ +# if !defined( VULKAN_HPP_NO_SMART_HANDLE ) + template + class UniqueHandleTraits; + + template + class UniqueHandle : public UniqueHandleTraits::deleter + { + private: + using Deleter = typename UniqueHandleTraits::deleter; + + public: + using element_type = Type; + + UniqueHandle() : Deleter(), m_value() {} + + explicit UniqueHandle( Type const & value, Deleter const & deleter = Deleter() ) VULKAN_HPP_NOEXCEPT + : Deleter( deleter ) + , m_value( value ) + { + } + + UniqueHandle( UniqueHandle const & ) = delete; + + UniqueHandle( UniqueHandle && other ) VULKAN_HPP_NOEXCEPT + : Deleter( std::move( static_cast( other ) ) ) + , m_value( other.release() ) + { + } + + ~UniqueHandle() VULKAN_HPP_NOEXCEPT + { + if ( m_value ) + { + this->destroy( m_value ); + } + } + + UniqueHandle & operator=( UniqueHandle const & ) = delete; + + UniqueHandle & operator=( UniqueHandle && other ) VULKAN_HPP_NOEXCEPT + { + reset( other.release() ); + *static_cast( this ) = std::move( static_cast( other ) ); + return *this; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_value.operator bool(); + } + +# if defined( VULKAN_HPP_SMART_HANDLE_IMPLICIT_CAST ) + operator Type() const VULKAN_HPP_NOEXCEPT + { + return m_value; + } +# endif + + Type const * operator->() const VULKAN_HPP_NOEXCEPT + { + return &m_value; + } + + Type * operator->() VULKAN_HPP_NOEXCEPT + { + return &m_value; + } + + Type const & operator*() const VULKAN_HPP_NOEXCEPT + { + return m_value; + } + + Type & operator*() VULKAN_HPP_NOEXCEPT + { + return m_value; + } + + Type const & get() const VULKAN_HPP_NOEXCEPT + { + return m_value; + } + + Type & get() VULKAN_HPP_NOEXCEPT + { + return m_value; + } + + void reset( Type const & value = Type() ) VULKAN_HPP_NOEXCEPT + { + if ( m_value != value ) + { + if ( m_value ) + { + this->destroy( m_value ); + } + m_value = value; + } + } + + Type release() VULKAN_HPP_NOEXCEPT + { + Type value = m_value; + m_value = nullptr; + return value; + } + + void swap( UniqueHandle & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_value, rhs.m_value ); + std::swap( static_cast( *this ), static_cast( rhs ) ); + } + + private: + Type m_value; + }; + + template + VULKAN_HPP_INLINE std::vector uniqueToRaw( std::vector const & handles ) + { + std::vector newBuffer( handles.size() ); + std::transform( handles.begin(), handles.end(), newBuffer.begin(), []( UniqueType const & handle ) { return handle.get(); } ); + return newBuffer; + } + + template + VULKAN_HPP_INLINE void swap( UniqueHandle & lhs, UniqueHandle & rhs ) VULKAN_HPP_NOEXCEPT + { + lhs.swap( rhs ); + } +# endif +#endif // VULKAN_HPP_DISABLE_ENHANCED_MODE + + namespace detail + { + + //========================== + //=== Is Dispatched List === + //========================== + + // C++11-compatible void_t + template + struct voider + { + typedef void type; + }; + + template + using void_t = typename voider::type; + + // helper macro to declare a SFINAE-friendly has_ trait +#define DECLARE_IS_DISPATCHED( name ) \ + template \ + struct has_##name : std::false_type \ + { \ + }; \ + template \ + struct has_##name> : std::true_type \ + { \ + }; + + DECLARE_IS_DISPATCHED( vkAcquireDrmDisplayEXT ) + DECLARE_IS_DISPATCHED( vkAcquireFullScreenExclusiveModeEXT ) + DECLARE_IS_DISPATCHED( vkAcquireImageANDROID ) + DECLARE_IS_DISPATCHED( vkAcquireImageOHOS ) + DECLARE_IS_DISPATCHED( vkAcquireNextImage2KHR ) + DECLARE_IS_DISPATCHED( vkAcquireNextImageKHR ) + DECLARE_IS_DISPATCHED( vkAcquirePerformanceConfigurationINTEL ) + DECLARE_IS_DISPATCHED( vkAcquireProfilingLockKHR ) + DECLARE_IS_DISPATCHED( vkAcquireWinrtDisplayNV ) + DECLARE_IS_DISPATCHED( vkAcquireXlibDisplayEXT ) + DECLARE_IS_DISPATCHED( vkAllocateCommandBuffers ) + DECLARE_IS_DISPATCHED( vkAllocateDescriptorSets ) + DECLARE_IS_DISPATCHED( vkAllocateMemory ) + DECLARE_IS_DISPATCHED( vkAntiLagUpdateAMD ) + DECLARE_IS_DISPATCHED( vkBeginCommandBuffer ) + DECLARE_IS_DISPATCHED( vkBindAccelerationStructureMemoryNV ) + DECLARE_IS_DISPATCHED( vkBindBufferMemory ) + DECLARE_IS_DISPATCHED( vkBindBufferMemory2 ) + DECLARE_IS_DISPATCHED( vkBindBufferMemory2KHR ) + DECLARE_IS_DISPATCHED( vkBindDataGraphPipelineSessionMemoryARM ) + DECLARE_IS_DISPATCHED( vkBindImageMemory ) + DECLARE_IS_DISPATCHED( vkBindImageMemory2 ) + DECLARE_IS_DISPATCHED( vkBindImageMemory2KHR ) + DECLARE_IS_DISPATCHED( vkBindOpticalFlowSessionImageNV ) + DECLARE_IS_DISPATCHED( vkBindTensorMemoryARM ) + DECLARE_IS_DISPATCHED( vkBindVideoSessionMemoryKHR ) + DECLARE_IS_DISPATCHED( vkBuildAccelerationStructuresKHR ) + DECLARE_IS_DISPATCHED( vkBuildMicromapsEXT ) + DECLARE_IS_DISPATCHED( vkClearShaderInstrumentationMetricsARM ) + DECLARE_IS_DISPATCHED( vkCmdBeginConditionalRendering2EXT ) + DECLARE_IS_DISPATCHED( vkCmdBeginConditionalRenderingEXT ) + DECLARE_IS_DISPATCHED( vkCmdBeginCustomResolveEXT ) + DECLARE_IS_DISPATCHED( vkCmdBeginDebugUtilsLabelEXT ) + DECLARE_IS_DISPATCHED( vkCmdBeginPerTileExecutionQCOM ) + DECLARE_IS_DISPATCHED( vkCmdBeginQuery ) + DECLARE_IS_DISPATCHED( vkCmdBeginQueryIndexedEXT ) + DECLARE_IS_DISPATCHED( vkCmdBeginRenderPass ) + DECLARE_IS_DISPATCHED( vkCmdBeginRenderPass2 ) + DECLARE_IS_DISPATCHED( vkCmdBeginRenderPass2KHR ) + DECLARE_IS_DISPATCHED( vkCmdBeginRendering ) + DECLARE_IS_DISPATCHED( vkCmdBeginRenderingKHR ) + DECLARE_IS_DISPATCHED( vkCmdBeginShaderInstrumentationARM ) + DECLARE_IS_DISPATCHED( vkCmdBeginTransformFeedback2EXT ) + DECLARE_IS_DISPATCHED( vkCmdBeginTransformFeedbackEXT ) + DECLARE_IS_DISPATCHED( vkCmdBeginVideoCodingKHR ) + DECLARE_IS_DISPATCHED( vkCmdBindDescriptorBufferEmbeddedSamplers2EXT ) + DECLARE_IS_DISPATCHED( vkCmdBindDescriptorBufferEmbeddedSamplersEXT ) + DECLARE_IS_DISPATCHED( vkCmdBindDescriptorBuffersEXT ) + DECLARE_IS_DISPATCHED( vkCmdBindDescriptorSets ) + DECLARE_IS_DISPATCHED( vkCmdBindDescriptorSets2 ) + DECLARE_IS_DISPATCHED( vkCmdBindDescriptorSets2KHR ) + DECLARE_IS_DISPATCHED( vkCmdBindIndexBuffer ) + DECLARE_IS_DISPATCHED( vkCmdBindIndexBuffer2 ) + DECLARE_IS_DISPATCHED( vkCmdBindIndexBuffer2KHR ) + DECLARE_IS_DISPATCHED( vkCmdBindIndexBuffer3KHR ) + DECLARE_IS_DISPATCHED( vkCmdBindInvocationMaskHUAWEI ) + DECLARE_IS_DISPATCHED( vkCmdBindPipeline ) + DECLARE_IS_DISPATCHED( vkCmdBindPipelineShaderGroupNV ) + DECLARE_IS_DISPATCHED( vkCmdBindResourceHeapEXT ) + DECLARE_IS_DISPATCHED( vkCmdBindSamplerHeapEXT ) + DECLARE_IS_DISPATCHED( vkCmdBindShadersEXT ) + DECLARE_IS_DISPATCHED( vkCmdBindShadingRateImageNV ) + DECLARE_IS_DISPATCHED( vkCmdBindTileMemoryQCOM ) + DECLARE_IS_DISPATCHED( vkCmdBindTransformFeedbackBuffers2EXT ) + DECLARE_IS_DISPATCHED( vkCmdBindTransformFeedbackBuffersEXT ) + DECLARE_IS_DISPATCHED( vkCmdBindVertexBuffers ) + DECLARE_IS_DISPATCHED( vkCmdBindVertexBuffers2 ) + DECLARE_IS_DISPATCHED( vkCmdBindVertexBuffers2EXT ) + DECLARE_IS_DISPATCHED( vkCmdBindVertexBuffers3KHR ) + DECLARE_IS_DISPATCHED( vkCmdBlitImage ) + DECLARE_IS_DISPATCHED( vkCmdBlitImage2 ) + DECLARE_IS_DISPATCHED( vkCmdBlitImage2KHR ) + DECLARE_IS_DISPATCHED( vkCmdBuildAccelerationStructureNV ) + DECLARE_IS_DISPATCHED( vkCmdBuildAccelerationStructuresIndirectKHR ) + DECLARE_IS_DISPATCHED( vkCmdBuildAccelerationStructuresKHR ) + DECLARE_IS_DISPATCHED( vkCmdBuildClusterAccelerationStructureIndirectNV ) + DECLARE_IS_DISPATCHED( vkCmdBuildMicromapsEXT ) + DECLARE_IS_DISPATCHED( vkCmdBuildPartitionedAccelerationStructuresNV ) + DECLARE_IS_DISPATCHED( vkCmdClearAttachments ) + DECLARE_IS_DISPATCHED( vkCmdClearColorImage ) + DECLARE_IS_DISPATCHED( vkCmdClearDepthStencilImage ) + DECLARE_IS_DISPATCHED( vkCmdControlVideoCodingKHR ) + DECLARE_IS_DISPATCHED( vkCmdConvertCooperativeVectorMatrixNV ) + DECLARE_IS_DISPATCHED( vkCmdCopyAccelerationStructureKHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyAccelerationStructureNV ) + DECLARE_IS_DISPATCHED( vkCmdCopyAccelerationStructureToMemoryKHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyBuffer ) + DECLARE_IS_DISPATCHED( vkCmdCopyBuffer2 ) + DECLARE_IS_DISPATCHED( vkCmdCopyBuffer2KHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyBufferToImage ) + DECLARE_IS_DISPATCHED( vkCmdCopyBufferToImage2 ) + DECLARE_IS_DISPATCHED( vkCmdCopyBufferToImage2KHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyImage ) + DECLARE_IS_DISPATCHED( vkCmdCopyImage2 ) + DECLARE_IS_DISPATCHED( vkCmdCopyImage2KHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyImageToBuffer ) + DECLARE_IS_DISPATCHED( vkCmdCopyImageToBuffer2 ) + DECLARE_IS_DISPATCHED( vkCmdCopyImageToBuffer2KHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyImageToMemoryKHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyMemoryIndirectKHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyMemoryIndirectNV ) + DECLARE_IS_DISPATCHED( vkCmdCopyMemoryKHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyMemoryToAccelerationStructureKHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyMemoryToImageIndirectKHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyMemoryToImageIndirectNV ) + DECLARE_IS_DISPATCHED( vkCmdCopyMemoryToImageKHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyMemoryToMicromapEXT ) + DECLARE_IS_DISPATCHED( vkCmdCopyMicromapEXT ) + DECLARE_IS_DISPATCHED( vkCmdCopyMicromapToMemoryEXT ) + DECLARE_IS_DISPATCHED( vkCmdCopyQueryPoolResults ) + DECLARE_IS_DISPATCHED( vkCmdCopyQueryPoolResultsToMemoryKHR ) + DECLARE_IS_DISPATCHED( vkCmdCopyTensorARM ) + DECLARE_IS_DISPATCHED( vkCmdCuLaunchKernelNVX ) + DECLARE_IS_DISPATCHED( vkCmdCudaLaunchKernelNV ) + DECLARE_IS_DISPATCHED( vkCmdDebugMarkerBeginEXT ) + DECLARE_IS_DISPATCHED( vkCmdDebugMarkerEndEXT ) + DECLARE_IS_DISPATCHED( vkCmdDebugMarkerInsertEXT ) + DECLARE_IS_DISPATCHED( vkCmdDecodeVideoKHR ) + DECLARE_IS_DISPATCHED( vkCmdDecompressMemoryEXT ) + DECLARE_IS_DISPATCHED( vkCmdDecompressMemoryIndirectCountEXT ) + DECLARE_IS_DISPATCHED( vkCmdDecompressMemoryIndirectCountNV ) + DECLARE_IS_DISPATCHED( vkCmdDecompressMemoryNV ) + DECLARE_IS_DISPATCHED( vkCmdDispatch ) + DECLARE_IS_DISPATCHED( vkCmdDispatchBase ) + DECLARE_IS_DISPATCHED( vkCmdDispatchBaseKHR ) + DECLARE_IS_DISPATCHED( vkCmdDispatchDataGraphARM ) + DECLARE_IS_DISPATCHED( vkCmdDispatchGraphAMDX ) + DECLARE_IS_DISPATCHED( vkCmdDispatchGraphIndirectAMDX ) + DECLARE_IS_DISPATCHED( vkCmdDispatchGraphIndirectCountAMDX ) + DECLARE_IS_DISPATCHED( vkCmdDispatchIndirect ) + DECLARE_IS_DISPATCHED( vkCmdDispatchIndirect2KHR ) + DECLARE_IS_DISPATCHED( vkCmdDispatchTileQCOM ) + DECLARE_IS_DISPATCHED( vkCmdDraw ) + DECLARE_IS_DISPATCHED( vkCmdDrawClusterHUAWEI ) + DECLARE_IS_DISPATCHED( vkCmdDrawClusterIndirectHUAWEI ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndexed ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndexedIndirect ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndexedIndirect2KHR ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndexedIndirectCount ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndexedIndirectCountAMD ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndexedIndirectCountKHR ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndexedIndirectCount2KHR ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndirect ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndirect2KHR ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndirectByteCount2EXT ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndirectByteCountEXT ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndirectCount ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndirectCountAMD ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndirectCountKHR ) + DECLARE_IS_DISPATCHED( vkCmdDrawIndirectCount2KHR ) + DECLARE_IS_DISPATCHED( vkCmdDrawMeshTasksEXT ) + DECLARE_IS_DISPATCHED( vkCmdDrawMeshTasksIndirect2EXT ) + DECLARE_IS_DISPATCHED( vkCmdDrawMeshTasksIndirectCount2EXT ) + DECLARE_IS_DISPATCHED( vkCmdDrawMeshTasksIndirectCountEXT ) + DECLARE_IS_DISPATCHED( vkCmdDrawMeshTasksIndirectCountNV ) + DECLARE_IS_DISPATCHED( vkCmdDrawMeshTasksIndirectEXT ) + DECLARE_IS_DISPATCHED( vkCmdDrawMeshTasksIndirectNV ) + DECLARE_IS_DISPATCHED( vkCmdDrawMeshTasksNV ) + DECLARE_IS_DISPATCHED( vkCmdDrawMultiEXT ) + DECLARE_IS_DISPATCHED( vkCmdDrawMultiIndexedEXT ) + DECLARE_IS_DISPATCHED( vkCmdEncodeVideoKHR ) + DECLARE_IS_DISPATCHED( vkCmdEndConditionalRenderingEXT ) + DECLARE_IS_DISPATCHED( vkCmdEndDebugUtilsLabelEXT ) + DECLARE_IS_DISPATCHED( vkCmdEndPerTileExecutionQCOM ) + DECLARE_IS_DISPATCHED( vkCmdEndQuery ) + DECLARE_IS_DISPATCHED( vkCmdEndQueryIndexedEXT ) + DECLARE_IS_DISPATCHED( vkCmdEndRenderPass ) + DECLARE_IS_DISPATCHED( vkCmdEndRenderPass2 ) + DECLARE_IS_DISPATCHED( vkCmdEndRenderPass2KHR ) + DECLARE_IS_DISPATCHED( vkCmdEndRendering ) + DECLARE_IS_DISPATCHED( vkCmdEndRenderingKHR ) + DECLARE_IS_DISPATCHED( vkCmdEndRendering2KHR ) + DECLARE_IS_DISPATCHED( vkCmdEndRendering2EXT ) + DECLARE_IS_DISPATCHED( vkCmdEndShaderInstrumentationARM ) + DECLARE_IS_DISPATCHED( vkCmdEndTransformFeedback2EXT ) + DECLARE_IS_DISPATCHED( vkCmdEndTransformFeedbackEXT ) + DECLARE_IS_DISPATCHED( vkCmdEndVideoCodingKHR ) + DECLARE_IS_DISPATCHED( vkCmdExecuteCommands ) + DECLARE_IS_DISPATCHED( vkCmdExecuteGeneratedCommandsEXT ) + DECLARE_IS_DISPATCHED( vkCmdExecuteGeneratedCommandsNV ) + DECLARE_IS_DISPATCHED( vkCmdFillBuffer ) + DECLARE_IS_DISPATCHED( vkCmdFillMemoryKHR ) + DECLARE_IS_DISPATCHED( vkCmdInitializeGraphScratchMemoryAMDX ) + DECLARE_IS_DISPATCHED( vkCmdInsertDebugUtilsLabelEXT ) + DECLARE_IS_DISPATCHED( vkCmdNextSubpass ) + DECLARE_IS_DISPATCHED( vkCmdNextSubpass2 ) + DECLARE_IS_DISPATCHED( vkCmdNextSubpass2KHR ) + DECLARE_IS_DISPATCHED( vkCmdOpticalFlowExecuteNV ) + DECLARE_IS_DISPATCHED( vkCmdPipelineBarrier ) + DECLARE_IS_DISPATCHED( vkCmdPipelineBarrier2 ) + DECLARE_IS_DISPATCHED( vkCmdPipelineBarrier2KHR ) + DECLARE_IS_DISPATCHED( vkCmdPreprocessGeneratedCommandsEXT ) + DECLARE_IS_DISPATCHED( vkCmdPreprocessGeneratedCommandsNV ) + DECLARE_IS_DISPATCHED( vkCmdPushConstants ) + DECLARE_IS_DISPATCHED( vkCmdPushConstants2 ) + DECLARE_IS_DISPATCHED( vkCmdPushConstants2KHR ) + DECLARE_IS_DISPATCHED( vkCmdPushDataEXT ) + DECLARE_IS_DISPATCHED( vkCmdPushDescriptorSet ) + DECLARE_IS_DISPATCHED( vkCmdPushDescriptorSetKHR ) + DECLARE_IS_DISPATCHED( vkCmdPushDescriptorSet2 ) + DECLARE_IS_DISPATCHED( vkCmdPushDescriptorSet2KHR ) + DECLARE_IS_DISPATCHED( vkCmdPushDescriptorSetWithTemplate ) + DECLARE_IS_DISPATCHED( vkCmdPushDescriptorSetWithTemplateKHR ) + DECLARE_IS_DISPATCHED( vkCmdPushDescriptorSetWithTemplate2 ) + DECLARE_IS_DISPATCHED( vkCmdPushDescriptorSetWithTemplate2KHR ) + DECLARE_IS_DISPATCHED( vkCmdRefreshObjectsKHR ) + DECLARE_IS_DISPATCHED( vkCmdResetEvent ) + DECLARE_IS_DISPATCHED( vkCmdResetEvent2 ) + DECLARE_IS_DISPATCHED( vkCmdResetEvent2KHR ) + DECLARE_IS_DISPATCHED( vkCmdResetQueryPool ) + DECLARE_IS_DISPATCHED( vkCmdResolveImage ) + DECLARE_IS_DISPATCHED( vkCmdResolveImage2 ) + DECLARE_IS_DISPATCHED( vkCmdResolveImage2KHR ) + DECLARE_IS_DISPATCHED( vkCmdSetAlphaToCoverageEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetAlphaToOneEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetAttachmentFeedbackLoopEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetBlendConstants ) + DECLARE_IS_DISPATCHED( vkCmdSetCheckpointNV ) + DECLARE_IS_DISPATCHED( vkCmdSetCoarseSampleOrderNV ) + DECLARE_IS_DISPATCHED( vkCmdSetColorBlendAdvancedEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetColorBlendEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetColorBlendEquationEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetColorWriteEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetColorWriteMaskEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetComputeOccupancyPriorityNV ) + DECLARE_IS_DISPATCHED( vkCmdSetConservativeRasterizationModeEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetCoverageModulationModeNV ) + DECLARE_IS_DISPATCHED( vkCmdSetCoverageModulationTableEnableNV ) + DECLARE_IS_DISPATCHED( vkCmdSetCoverageModulationTableNV ) + DECLARE_IS_DISPATCHED( vkCmdSetCoverageReductionModeNV ) + DECLARE_IS_DISPATCHED( vkCmdSetCoverageToColorEnableNV ) + DECLARE_IS_DISPATCHED( vkCmdSetCoverageToColorLocationNV ) + DECLARE_IS_DISPATCHED( vkCmdSetCullMode ) + DECLARE_IS_DISPATCHED( vkCmdSetCullModeEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthBias ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthBias2EXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthBiasEnable ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthBiasEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthBounds ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthBoundsTestEnable ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthBoundsTestEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthClampEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthClampRangeEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthClipEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthClipNegativeOneToOneEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthCompareOp ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthCompareOpEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthTestEnable ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthTestEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthWriteEnable ) + DECLARE_IS_DISPATCHED( vkCmdSetDepthWriteEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDescriptorBufferOffsets2EXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDescriptorBufferOffsetsEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDeviceMask ) + DECLARE_IS_DISPATCHED( vkCmdSetDeviceMaskKHR ) + DECLARE_IS_DISPATCHED( vkCmdSetDiscardRectangleEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDiscardRectangleEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetDiscardRectangleModeEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetEvent ) + DECLARE_IS_DISPATCHED( vkCmdSetEvent2 ) + DECLARE_IS_DISPATCHED( vkCmdSetEvent2KHR ) + DECLARE_IS_DISPATCHED( vkCmdSetExclusiveScissorEnableNV ) + DECLARE_IS_DISPATCHED( vkCmdSetExclusiveScissorNV ) + DECLARE_IS_DISPATCHED( vkCmdSetExtraPrimitiveOverestimationSizeEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetFragmentShadingRateEnumNV ) + DECLARE_IS_DISPATCHED( vkCmdSetFragmentShadingRateKHR ) + DECLARE_IS_DISPATCHED( vkCmdSetFrontFace ) + DECLARE_IS_DISPATCHED( vkCmdSetFrontFaceEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetLineRasterizationModeEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetLineStipple ) + DECLARE_IS_DISPATCHED( vkCmdSetLineStippleEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetLineStippleKHR ) + DECLARE_IS_DISPATCHED( vkCmdSetLineStippleEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetLineWidth ) + DECLARE_IS_DISPATCHED( vkCmdSetLogicOpEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetLogicOpEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetPatchControlPointsEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetPerformanceMarkerINTEL ) + DECLARE_IS_DISPATCHED( vkCmdSetPerformanceOverrideINTEL ) + DECLARE_IS_DISPATCHED( vkCmdSetPerformanceStreamMarkerINTEL ) + DECLARE_IS_DISPATCHED( vkCmdSetPolygonModeEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetPrimitiveRestartEnable ) + DECLARE_IS_DISPATCHED( vkCmdSetPrimitiveRestartEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetPrimitiveTopology ) + DECLARE_IS_DISPATCHED( vkCmdSetPrimitiveTopologyEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetProvokingVertexModeEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetRasterizationSamplesEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetRasterizationStreamEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetRasterizerDiscardEnable ) + DECLARE_IS_DISPATCHED( vkCmdSetRasterizerDiscardEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetRayTracingPipelineStackSizeKHR ) + DECLARE_IS_DISPATCHED( vkCmdSetRenderingAttachmentLocations ) + DECLARE_IS_DISPATCHED( vkCmdSetRenderingAttachmentLocationsKHR ) + DECLARE_IS_DISPATCHED( vkCmdSetRenderingInputAttachmentIndices ) + DECLARE_IS_DISPATCHED( vkCmdSetRenderingInputAttachmentIndicesKHR ) + DECLARE_IS_DISPATCHED( vkCmdSetRepresentativeFragmentTestEnableNV ) + DECLARE_IS_DISPATCHED( vkCmdSetSampleLocationsEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetSampleLocationsEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetSampleMaskEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetScissor ) + DECLARE_IS_DISPATCHED( vkCmdSetScissorWithCount ) + DECLARE_IS_DISPATCHED( vkCmdSetScissorWithCountEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetShadingRateImageEnableNV ) + DECLARE_IS_DISPATCHED( vkCmdSetStencilCompareMask ) + DECLARE_IS_DISPATCHED( vkCmdSetStencilOp ) + DECLARE_IS_DISPATCHED( vkCmdSetStencilOpEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetStencilReference ) + DECLARE_IS_DISPATCHED( vkCmdSetStencilTestEnable ) + DECLARE_IS_DISPATCHED( vkCmdSetStencilTestEnableEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetStencilWriteMask ) + DECLARE_IS_DISPATCHED( vkCmdSetTessellationDomainOriginEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetVertexInputEXT ) + DECLARE_IS_DISPATCHED( vkCmdSetViewport ) + DECLARE_IS_DISPATCHED( vkCmdSetViewportShadingRatePaletteNV ) + DECLARE_IS_DISPATCHED( vkCmdSetViewportSwizzleNV ) + DECLARE_IS_DISPATCHED( vkCmdSetViewportWScalingEnableNV ) + DECLARE_IS_DISPATCHED( vkCmdSetViewportWScalingNV ) + DECLARE_IS_DISPATCHED( vkCmdSetViewportWithCount ) + DECLARE_IS_DISPATCHED( vkCmdSetViewportWithCountEXT ) + DECLARE_IS_DISPATCHED( vkCmdSubpassShadingHUAWEI ) + DECLARE_IS_DISPATCHED( vkCmdTraceRaysIndirect2KHR ) + DECLARE_IS_DISPATCHED( vkCmdTraceRaysIndirectKHR ) + DECLARE_IS_DISPATCHED( vkCmdTraceRaysKHR ) + DECLARE_IS_DISPATCHED( vkCmdTraceRaysNV ) + DECLARE_IS_DISPATCHED( vkCmdUpdateBuffer ) + DECLARE_IS_DISPATCHED( vkCmdUpdateMemoryKHR ) + DECLARE_IS_DISPATCHED( vkCmdUpdatePipelineIndirectBufferNV ) + DECLARE_IS_DISPATCHED( vkCmdWaitEvents ) + DECLARE_IS_DISPATCHED( vkCmdWaitEvents2 ) + DECLARE_IS_DISPATCHED( vkCmdWaitEvents2KHR ) + DECLARE_IS_DISPATCHED( vkCmdWriteAccelerationStructuresPropertiesKHR ) + DECLARE_IS_DISPATCHED( vkCmdWriteAccelerationStructuresPropertiesNV ) + DECLARE_IS_DISPATCHED( vkCmdWriteBufferMarker2AMD ) + DECLARE_IS_DISPATCHED( vkCmdWriteBufferMarkerAMD ) + DECLARE_IS_DISPATCHED( vkCmdWriteMarkerToMemoryAMD ) + DECLARE_IS_DISPATCHED( vkCmdWriteMicromapsPropertiesEXT ) + DECLARE_IS_DISPATCHED( vkCmdWriteTimestamp ) + DECLARE_IS_DISPATCHED( vkCmdWriteTimestamp2 ) + DECLARE_IS_DISPATCHED( vkCmdWriteTimestamp2KHR ) + DECLARE_IS_DISPATCHED( vkCompileDeferredNV ) + DECLARE_IS_DISPATCHED( vkConvertCooperativeVectorMatrixNV ) + DECLARE_IS_DISPATCHED( vkCopyAccelerationStructureKHR ) + DECLARE_IS_DISPATCHED( vkCopyAccelerationStructureToMemoryKHR ) + DECLARE_IS_DISPATCHED( vkCopyImageToImage ) + DECLARE_IS_DISPATCHED( vkCopyImageToImageEXT ) + DECLARE_IS_DISPATCHED( vkCopyImageToMemory ) + DECLARE_IS_DISPATCHED( vkCopyImageToMemoryEXT ) + DECLARE_IS_DISPATCHED( vkCopyMemoryToAccelerationStructureKHR ) + DECLARE_IS_DISPATCHED( vkCopyMemoryToImage ) + DECLARE_IS_DISPATCHED( vkCopyMemoryToImageEXT ) + DECLARE_IS_DISPATCHED( vkCopyMemoryToMicromapEXT ) + DECLARE_IS_DISPATCHED( vkCopyMicromapEXT ) + DECLARE_IS_DISPATCHED( vkCopyMicromapToMemoryEXT ) + DECLARE_IS_DISPATCHED( vkCreateAccelerationStructure2KHR ) + DECLARE_IS_DISPATCHED( vkCreateAccelerationStructureKHR ) + DECLARE_IS_DISPATCHED( vkCreateAccelerationStructureNV ) + DECLARE_IS_DISPATCHED( vkCreateAndroidSurfaceKHR ) + DECLARE_IS_DISPATCHED( vkCreateBuffer ) + DECLARE_IS_DISPATCHED( vkCreateBufferCollectionFUCHSIA ) + DECLARE_IS_DISPATCHED( vkCreateBufferView ) + DECLARE_IS_DISPATCHED( vkCreateCommandPool ) + DECLARE_IS_DISPATCHED( vkCreateComputePipelines ) + DECLARE_IS_DISPATCHED( vkCreateCuFunctionNVX ) + DECLARE_IS_DISPATCHED( vkCreateCuModuleNVX ) + DECLARE_IS_DISPATCHED( vkCreateCudaFunctionNV ) + DECLARE_IS_DISPATCHED( vkCreateCudaModuleNV ) + DECLARE_IS_DISPATCHED( vkCreateDataGraphPipelineSessionARM ) + DECLARE_IS_DISPATCHED( vkCreateDataGraphPipelinesARM ) + DECLARE_IS_DISPATCHED( vkCreateDebugReportCallbackEXT ) + DECLARE_IS_DISPATCHED( vkCreateDebugUtilsMessengerEXT ) + DECLARE_IS_DISPATCHED( vkCreateDeferredOperationKHR ) + DECLARE_IS_DISPATCHED( vkCreateDescriptorPool ) + DECLARE_IS_DISPATCHED( vkCreateDescriptorSetLayout ) + DECLARE_IS_DISPATCHED( vkCreateDescriptorUpdateTemplate ) + DECLARE_IS_DISPATCHED( vkCreateDescriptorUpdateTemplateKHR ) + DECLARE_IS_DISPATCHED( vkCreateDevice ) + DECLARE_IS_DISPATCHED( vkCreateDirectFBSurfaceEXT ) + DECLARE_IS_DISPATCHED( vkCreateDisplayModeKHR ) + DECLARE_IS_DISPATCHED( vkCreateDisplayPlaneSurfaceKHR ) + DECLARE_IS_DISPATCHED( vkCreateEvent ) + DECLARE_IS_DISPATCHED( vkCreateExecutionGraphPipelinesAMDX ) + DECLARE_IS_DISPATCHED( vkCreateExternalComputeQueueNV ) + DECLARE_IS_DISPATCHED( vkCreateFence ) + DECLARE_IS_DISPATCHED( vkCreateFramebuffer ) + DECLARE_IS_DISPATCHED( vkCreateGraphicsPipelines ) + DECLARE_IS_DISPATCHED( vkCreateHeadlessSurfaceEXT ) + DECLARE_IS_DISPATCHED( vkCreateIOSSurfaceMVK ) + DECLARE_IS_DISPATCHED( vkCreateImage ) + DECLARE_IS_DISPATCHED( vkCreateImagePipeSurfaceFUCHSIA ) + DECLARE_IS_DISPATCHED( vkCreateImageView ) + DECLARE_IS_DISPATCHED( vkCreateIndirectCommandsLayoutEXT ) + DECLARE_IS_DISPATCHED( vkCreateIndirectCommandsLayoutNV ) + DECLARE_IS_DISPATCHED( vkCreateIndirectExecutionSetEXT ) + DECLARE_IS_DISPATCHED( vkCreateInstance ) + DECLARE_IS_DISPATCHED( vkCreateMacOSSurfaceMVK ) + DECLARE_IS_DISPATCHED( vkCreateMetalSurfaceEXT ) + DECLARE_IS_DISPATCHED( vkCreateMicromapEXT ) + DECLARE_IS_DISPATCHED( vkCreateOpticalFlowSessionNV ) + DECLARE_IS_DISPATCHED( vkCreatePipelineBinariesKHR ) + DECLARE_IS_DISPATCHED( vkCreatePipelineCache ) + DECLARE_IS_DISPATCHED( vkCreatePipelineLayout ) + DECLARE_IS_DISPATCHED( vkCreatePrivateDataSlot ) + DECLARE_IS_DISPATCHED( vkCreatePrivateDataSlotEXT ) + DECLARE_IS_DISPATCHED( vkCreateQueryPool ) + DECLARE_IS_DISPATCHED( vkCreateRayTracingPipelinesKHR ) + DECLARE_IS_DISPATCHED( vkCreateRayTracingPipelinesNV ) + DECLARE_IS_DISPATCHED( vkCreateRenderPass ) + DECLARE_IS_DISPATCHED( vkCreateRenderPass2 ) + DECLARE_IS_DISPATCHED( vkCreateRenderPass2KHR ) + DECLARE_IS_DISPATCHED( vkCreateSampler ) + DECLARE_IS_DISPATCHED( vkCreateSamplerYcbcrConversion ) + DECLARE_IS_DISPATCHED( vkCreateSamplerYcbcrConversionKHR ) + DECLARE_IS_DISPATCHED( vkCreateScreenSurfaceQNX ) + DECLARE_IS_DISPATCHED( vkCreateSemaphore ) + DECLARE_IS_DISPATCHED( vkCreateSemaphoreSciSyncPoolNV ) + DECLARE_IS_DISPATCHED( vkCreateShaderInstrumentationARM ) + DECLARE_IS_DISPATCHED( vkCreateShaderModule ) + DECLARE_IS_DISPATCHED( vkCreateShadersEXT ) + DECLARE_IS_DISPATCHED( vkCreateSharedSwapchainsKHR ) + DECLARE_IS_DISPATCHED( vkCreateStreamDescriptorSurfaceGGP ) + DECLARE_IS_DISPATCHED( vkCreateSurfaceOHOS ) + DECLARE_IS_DISPATCHED( vkCreateSwapchainKHR ) + DECLARE_IS_DISPATCHED( vkCreateTensorARM ) + DECLARE_IS_DISPATCHED( vkCreateTensorViewARM ) + DECLARE_IS_DISPATCHED( vkCreateUbmSurfaceSEC ) + DECLARE_IS_DISPATCHED( vkCreateValidationCacheEXT ) + DECLARE_IS_DISPATCHED( vkCreateViSurfaceNN ) + DECLARE_IS_DISPATCHED( vkCreateVideoSessionKHR ) + DECLARE_IS_DISPATCHED( vkCreateVideoSessionParametersKHR ) + DECLARE_IS_DISPATCHED( vkCreateWaylandSurfaceKHR ) + DECLARE_IS_DISPATCHED( vkCreateWin32SurfaceKHR ) + DECLARE_IS_DISPATCHED( vkCreateXcbSurfaceKHR ) + DECLARE_IS_DISPATCHED( vkCreateXlibSurfaceKHR ) + DECLARE_IS_DISPATCHED( vkDebugMarkerSetObjectNameEXT ) + DECLARE_IS_DISPATCHED( vkDebugMarkerSetObjectTagEXT ) + DECLARE_IS_DISPATCHED( vkDebugReportMessageEXT ) + DECLARE_IS_DISPATCHED( vkDeferredOperationJoinKHR ) + DECLARE_IS_DISPATCHED( vkDestroyAccelerationStructureKHR ) + DECLARE_IS_DISPATCHED( vkDestroyAccelerationStructureNV ) + DECLARE_IS_DISPATCHED( vkDestroyBuffer ) + DECLARE_IS_DISPATCHED( vkDestroyBufferCollectionFUCHSIA ) + DECLARE_IS_DISPATCHED( vkDestroyBufferView ) + DECLARE_IS_DISPATCHED( vkDestroyCommandPool ) + DECLARE_IS_DISPATCHED( vkDestroyCuFunctionNVX ) + DECLARE_IS_DISPATCHED( vkDestroyCuModuleNVX ) + DECLARE_IS_DISPATCHED( vkDestroyCudaFunctionNV ) + DECLARE_IS_DISPATCHED( vkDestroyCudaModuleNV ) + DECLARE_IS_DISPATCHED( vkDestroyDataGraphPipelineSessionARM ) + DECLARE_IS_DISPATCHED( vkDestroyDebugReportCallbackEXT ) + DECLARE_IS_DISPATCHED( vkDestroyDebugUtilsMessengerEXT ) + DECLARE_IS_DISPATCHED( vkDestroyDeferredOperationKHR ) + DECLARE_IS_DISPATCHED( vkDestroyDescriptorPool ) + DECLARE_IS_DISPATCHED( vkDestroyDescriptorSetLayout ) + DECLARE_IS_DISPATCHED( vkDestroyDescriptorUpdateTemplate ) + DECLARE_IS_DISPATCHED( vkDestroyDescriptorUpdateTemplateKHR ) + DECLARE_IS_DISPATCHED( vkDestroyDevice ) + DECLARE_IS_DISPATCHED( vkDestroyEvent ) + DECLARE_IS_DISPATCHED( vkDestroyExternalComputeQueueNV ) + DECLARE_IS_DISPATCHED( vkDestroyFence ) + DECLARE_IS_DISPATCHED( vkDestroyFramebuffer ) + DECLARE_IS_DISPATCHED( vkDestroyImage ) + DECLARE_IS_DISPATCHED( vkDestroyImageView ) + DECLARE_IS_DISPATCHED( vkDestroyIndirectCommandsLayoutEXT ) + DECLARE_IS_DISPATCHED( vkDestroyIndirectCommandsLayoutNV ) + DECLARE_IS_DISPATCHED( vkDestroyIndirectExecutionSetEXT ) + DECLARE_IS_DISPATCHED( vkDestroyInstance ) + DECLARE_IS_DISPATCHED( vkDestroyMicromapEXT ) + DECLARE_IS_DISPATCHED( vkDestroyOpticalFlowSessionNV ) + DECLARE_IS_DISPATCHED( vkDestroyPipeline ) + DECLARE_IS_DISPATCHED( vkDestroyPipelineBinaryKHR ) + DECLARE_IS_DISPATCHED( vkDestroyPipelineCache ) + DECLARE_IS_DISPATCHED( vkDestroyPipelineLayout ) + DECLARE_IS_DISPATCHED( vkDestroyPrivateDataSlot ) + DECLARE_IS_DISPATCHED( vkDestroyPrivateDataSlotEXT ) + DECLARE_IS_DISPATCHED( vkDestroyQueryPool ) + DECLARE_IS_DISPATCHED( vkDestroyRenderPass ) + DECLARE_IS_DISPATCHED( vkDestroySampler ) + DECLARE_IS_DISPATCHED( vkDestroySamplerYcbcrConversion ) + DECLARE_IS_DISPATCHED( vkDestroySamplerYcbcrConversionKHR ) + DECLARE_IS_DISPATCHED( vkDestroySemaphore ) + DECLARE_IS_DISPATCHED( vkDestroySemaphoreSciSyncPoolNV ) + DECLARE_IS_DISPATCHED( vkDestroyShaderEXT ) + DECLARE_IS_DISPATCHED( vkDestroyShaderInstrumentationARM ) + DECLARE_IS_DISPATCHED( vkDestroyShaderModule ) + DECLARE_IS_DISPATCHED( vkDestroySurfaceKHR ) + DECLARE_IS_DISPATCHED( vkDestroySwapchainKHR ) + DECLARE_IS_DISPATCHED( vkDestroyTensorARM ) + DECLARE_IS_DISPATCHED( vkDestroyTensorViewARM ) + DECLARE_IS_DISPATCHED( vkDestroyValidationCacheEXT ) + DECLARE_IS_DISPATCHED( vkDestroyVideoSessionKHR ) + DECLARE_IS_DISPATCHED( vkDestroyVideoSessionParametersKHR ) + DECLARE_IS_DISPATCHED( vkDeviceWaitIdle ) + DECLARE_IS_DISPATCHED( vkDisplayPowerControlEXT ) + DECLARE_IS_DISPATCHED( vkEndCommandBuffer ) + DECLARE_IS_DISPATCHED( vkEnumerateDeviceExtensionProperties ) + DECLARE_IS_DISPATCHED( vkEnumerateDeviceLayerProperties ) + DECLARE_IS_DISPATCHED( vkEnumerateInstanceExtensionProperties ) + DECLARE_IS_DISPATCHED( vkEnumerateInstanceLayerProperties ) + DECLARE_IS_DISPATCHED( vkEnumerateInstanceVersion ) + DECLARE_IS_DISPATCHED( vkEnumeratePhysicalDeviceGroups ) + DECLARE_IS_DISPATCHED( vkEnumeratePhysicalDeviceGroupsKHR ) + DECLARE_IS_DISPATCHED( vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM ) + DECLARE_IS_DISPATCHED( vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) + DECLARE_IS_DISPATCHED( vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM ) + DECLARE_IS_DISPATCHED( vkEnumeratePhysicalDevices ) + DECLARE_IS_DISPATCHED( vkExportMetalObjectsEXT ) + DECLARE_IS_DISPATCHED( vkFlushMappedMemoryRanges ) + DECLARE_IS_DISPATCHED( vkFreeCommandBuffers ) + DECLARE_IS_DISPATCHED( vkFreeDescriptorSets ) + DECLARE_IS_DISPATCHED( vkFreeMemory ) + DECLARE_IS_DISPATCHED( vkGetAccelerationStructureBuildSizesKHR ) + DECLARE_IS_DISPATCHED( vkGetAccelerationStructureDeviceAddressKHR ) + DECLARE_IS_DISPATCHED( vkGetAccelerationStructureHandleNV ) + DECLARE_IS_DISPATCHED( vkGetAccelerationStructureMemoryRequirementsNV ) + DECLARE_IS_DISPATCHED( vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT ) + DECLARE_IS_DISPATCHED( vkGetAndroidHardwareBufferPropertiesANDROID ) + DECLARE_IS_DISPATCHED( vkGetBufferCollectionPropertiesFUCHSIA ) + DECLARE_IS_DISPATCHED( vkGetBufferDeviceAddress ) + DECLARE_IS_DISPATCHED( vkGetBufferDeviceAddressEXT ) + DECLARE_IS_DISPATCHED( vkGetBufferDeviceAddressKHR ) + DECLARE_IS_DISPATCHED( vkGetBufferMemoryRequirements ) + DECLARE_IS_DISPATCHED( vkGetBufferMemoryRequirements2 ) + DECLARE_IS_DISPATCHED( vkGetBufferMemoryRequirements2KHR ) + DECLARE_IS_DISPATCHED( vkGetBufferOpaqueCaptureAddress ) + DECLARE_IS_DISPATCHED( vkGetBufferOpaqueCaptureAddressKHR ) + DECLARE_IS_DISPATCHED( vkGetBufferOpaqueCaptureDescriptorDataEXT ) + DECLARE_IS_DISPATCHED( vkGetCalibratedTimestampsKHR ) + DECLARE_IS_DISPATCHED( vkGetCalibratedTimestampsEXT ) + DECLARE_IS_DISPATCHED( vkGetClusterAccelerationStructureBuildSizesNV ) + DECLARE_IS_DISPATCHED( vkGetCommandPoolMemoryConsumption ) + DECLARE_IS_DISPATCHED( vkGetCudaModuleCacheNV ) + DECLARE_IS_DISPATCHED( vkGetDataGraphPipelineAvailablePropertiesARM ) + DECLARE_IS_DISPATCHED( vkGetDataGraphPipelinePropertiesARM ) + DECLARE_IS_DISPATCHED( vkGetDataGraphPipelineSessionBindPointRequirementsARM ) + DECLARE_IS_DISPATCHED( vkGetDataGraphPipelineSessionMemoryRequirementsARM ) + DECLARE_IS_DISPATCHED( vkGetDeferredOperationMaxConcurrencyKHR ) + DECLARE_IS_DISPATCHED( vkGetDeferredOperationResultKHR ) + DECLARE_IS_DISPATCHED( vkGetDescriptorEXT ) + DECLARE_IS_DISPATCHED( vkGetDescriptorSetHostMappingVALVE ) + DECLARE_IS_DISPATCHED( vkGetDescriptorSetLayoutBindingOffsetEXT ) + DECLARE_IS_DISPATCHED( vkGetDescriptorSetLayoutHostMappingInfoVALVE ) + DECLARE_IS_DISPATCHED( vkGetDescriptorSetLayoutSizeEXT ) + DECLARE_IS_DISPATCHED( vkGetDescriptorSetLayoutSupport ) + DECLARE_IS_DISPATCHED( vkGetDescriptorSetLayoutSupportKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceAccelerationStructureCompatibilityKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceBufferMemoryRequirements ) + DECLARE_IS_DISPATCHED( vkGetDeviceBufferMemoryRequirementsKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceCombinedImageSamplerIndexNVX ) + DECLARE_IS_DISPATCHED( vkGetDeviceFaultDebugInfoKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceFaultInfoEXT ) + DECLARE_IS_DISPATCHED( vkGetDeviceFaultReportsKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceGroupPeerMemoryFeatures ) + DECLARE_IS_DISPATCHED( vkGetDeviceGroupPeerMemoryFeaturesKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceGroupPresentCapabilitiesKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceGroupSurfacePresentModes2EXT ) + DECLARE_IS_DISPATCHED( vkGetDeviceGroupSurfacePresentModesKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceImageMemoryRequirements ) + DECLARE_IS_DISPATCHED( vkGetDeviceImageMemoryRequirementsKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceImageSparseMemoryRequirements ) + DECLARE_IS_DISPATCHED( vkGetDeviceImageSparseMemoryRequirementsKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceImageSubresourceLayout ) + DECLARE_IS_DISPATCHED( vkGetDeviceImageSubresourceLayoutKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceMemoryCommitment ) + DECLARE_IS_DISPATCHED( vkGetDeviceMemoryOpaqueCaptureAddress ) + DECLARE_IS_DISPATCHED( vkGetDeviceMemoryOpaqueCaptureAddressKHR ) + DECLARE_IS_DISPATCHED( vkGetDeviceMicromapCompatibilityEXT ) + DECLARE_IS_DISPATCHED( vkGetDeviceProcAddr ) + DECLARE_IS_DISPATCHED( vkGetDeviceQueue ) + DECLARE_IS_DISPATCHED( vkGetDeviceQueue2 ) + DECLARE_IS_DISPATCHED( vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI ) + DECLARE_IS_DISPATCHED( vkGetDeviceTensorMemoryRequirementsARM ) + DECLARE_IS_DISPATCHED( vkGetDisplayModeProperties2KHR ) + DECLARE_IS_DISPATCHED( vkGetDisplayModePropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetDisplayPlaneCapabilities2KHR ) + DECLARE_IS_DISPATCHED( vkGetDisplayPlaneCapabilitiesKHR ) + DECLARE_IS_DISPATCHED( vkGetDisplayPlaneSupportedDisplaysKHR ) + DECLARE_IS_DISPATCHED( vkGetDrmDisplayEXT ) + DECLARE_IS_DISPATCHED( vkGetDynamicRenderingTilePropertiesQCOM ) + DECLARE_IS_DISPATCHED( vkGetEncodedVideoSessionParametersKHR ) + DECLARE_IS_DISPATCHED( vkGetEventStatus ) + DECLARE_IS_DISPATCHED( vkGetExecutionGraphPipelineNodeIndexAMDX ) + DECLARE_IS_DISPATCHED( vkGetExecutionGraphPipelineScratchSizeAMDX ) + DECLARE_IS_DISPATCHED( vkGetExternalComputeQueueDataNV ) + DECLARE_IS_DISPATCHED( vkGetFaultData ) + DECLARE_IS_DISPATCHED( vkGetFenceFdKHR ) + DECLARE_IS_DISPATCHED( vkGetFenceSciSyncFenceNV ) + DECLARE_IS_DISPATCHED( vkGetFenceSciSyncObjNV ) + DECLARE_IS_DISPATCHED( vkGetFenceStatus ) + DECLARE_IS_DISPATCHED( vkGetFenceWin32HandleKHR ) + DECLARE_IS_DISPATCHED( vkGetFramebufferTilePropertiesQCOM ) + DECLARE_IS_DISPATCHED( vkGetGeneratedCommandsMemoryRequirementsEXT ) + DECLARE_IS_DISPATCHED( vkGetGeneratedCommandsMemoryRequirementsNV ) + DECLARE_IS_DISPATCHED( vkGetImageDrmFormatModifierPropertiesEXT ) + DECLARE_IS_DISPATCHED( vkGetImageMemoryRequirements ) + DECLARE_IS_DISPATCHED( vkGetImageMemoryRequirements2 ) + DECLARE_IS_DISPATCHED( vkGetImageMemoryRequirements2KHR ) + DECLARE_IS_DISPATCHED( vkGetImageOpaqueCaptureDataEXT ) + DECLARE_IS_DISPATCHED( vkGetImageOpaqueCaptureDescriptorDataEXT ) + DECLARE_IS_DISPATCHED( vkGetImageSparseMemoryRequirements ) + DECLARE_IS_DISPATCHED( vkGetImageSparseMemoryRequirements2 ) + DECLARE_IS_DISPATCHED( vkGetImageSparseMemoryRequirements2KHR ) + DECLARE_IS_DISPATCHED( vkGetImageSubresourceLayout ) + DECLARE_IS_DISPATCHED( vkGetImageSubresourceLayout2 ) + DECLARE_IS_DISPATCHED( vkGetImageSubresourceLayout2EXT ) + DECLARE_IS_DISPATCHED( vkGetImageSubresourceLayout2KHR ) + DECLARE_IS_DISPATCHED( vkGetImageViewAddressNVX ) + DECLARE_IS_DISPATCHED( vkGetImageViewHandle64NVX ) + DECLARE_IS_DISPATCHED( vkGetImageViewHandleNVX ) + DECLARE_IS_DISPATCHED( vkGetImageViewOpaqueCaptureDescriptorDataEXT ) + DECLARE_IS_DISPATCHED( vkGetInstanceProcAddr ) + DECLARE_IS_DISPATCHED( vkGetLatencyTimingsNV ) + DECLARE_IS_DISPATCHED( vkGetMemoryAndroidHardwareBufferANDROID ) + DECLARE_IS_DISPATCHED( vkGetMemoryFdKHR ) + DECLARE_IS_DISPATCHED( vkGetMemoryFdPropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetMemoryHostPointerPropertiesEXT ) + DECLARE_IS_DISPATCHED( vkGetMemoryMetalHandleEXT ) + DECLARE_IS_DISPATCHED( vkGetMemoryMetalHandlePropertiesEXT ) + DECLARE_IS_DISPATCHED( vkGetMemoryNativeBufferOHOS ) + DECLARE_IS_DISPATCHED( vkGetMemoryRemoteAddressNV ) + DECLARE_IS_DISPATCHED( vkGetMemorySciBufNV ) + DECLARE_IS_DISPATCHED( vkGetMemoryWin32HandleKHR ) + DECLARE_IS_DISPATCHED( vkGetMemoryWin32HandleNV ) + DECLARE_IS_DISPATCHED( vkGetMemoryWin32HandlePropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetMemoryZirconHandleFUCHSIA ) + DECLARE_IS_DISPATCHED( vkGetMemoryZirconHandlePropertiesFUCHSIA ) + DECLARE_IS_DISPATCHED( vkGetMicromapBuildSizesEXT ) + DECLARE_IS_DISPATCHED( vkGetNativeBufferPropertiesOHOS ) + DECLARE_IS_DISPATCHED( vkGetPartitionedAccelerationStructuresBuildSizesNV ) + DECLARE_IS_DISPATCHED( vkGetPastPresentationTimingEXT ) + DECLARE_IS_DISPATCHED( vkGetPastPresentationTimingGOOGLE ) + DECLARE_IS_DISPATCHED( vkGetPerformanceParameterINTEL ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceCooperativeVectorPropertiesNV ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceDescriptorSizeEXT ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceDirectFBPresentationSupportEXT ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceDisplayProperties2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceDisplayPropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceExternalBufferProperties ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceExternalBufferPropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceExternalFenceProperties ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceExternalFencePropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceExternalMemorySciBufPropertiesNV ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceExternalSemaphoreProperties ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceExternalTensorPropertiesARM ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceFeatures ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceFeatures2 ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceFeatures2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceFormatProperties ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceFormatProperties2 ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceFormatProperties2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceFragmentShadingRatesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceImageFormatProperties ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceImageFormatProperties2 ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceImageFormatProperties2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceMemoryProperties ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceMemoryProperties2 ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceMemoryProperties2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceMultisamplePropertiesEXT ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceOpticalFlowImageFormatsNV ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDevicePresentRectanglesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceProperties ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceProperties2 ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceProperties2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceQueueFamilyProperties ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceQueueFamilyProperties2 ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceQueueFamilyProperties2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceRefreshableObjectTypesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSciBufAttributesNV ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSciSyncAttributesNV ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceScreenPresentationSupportQNX ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSparseImageFormatProperties ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSparseImageFormatProperties2 ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSurfaceCapabilities2EXT ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSurfaceCapabilities2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSurfaceFormats2KHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSurfaceFormatsKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSurfacePresentModes2EXT ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSurfacePresentModesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceSurfaceSupportKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceToolProperties ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceToolPropertiesEXT ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceUbmPresentationSupportSEC ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceVideoCapabilitiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceVideoFormatPropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceWaylandPresentationSupportKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceWin32PresentationSupportKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceXcbPresentationSupportKHR ) + DECLARE_IS_DISPATCHED( vkGetPhysicalDeviceXlibPresentationSupportKHR ) + DECLARE_IS_DISPATCHED( vkGetPipelineBinaryDataKHR ) + DECLARE_IS_DISPATCHED( vkGetPipelineCacheData ) + DECLARE_IS_DISPATCHED( vkGetPipelineExecutableInternalRepresentationsKHR ) + DECLARE_IS_DISPATCHED( vkGetPipelineExecutablePropertiesKHR ) + DECLARE_IS_DISPATCHED( vkGetPipelineExecutableStatisticsKHR ) + DECLARE_IS_DISPATCHED( vkGetPipelineIndirectDeviceAddressNV ) + DECLARE_IS_DISPATCHED( vkGetPipelineIndirectMemoryRequirementsNV ) + DECLARE_IS_DISPATCHED( vkGetPipelineKeyKHR ) + DECLARE_IS_DISPATCHED( vkGetPipelinePropertiesEXT ) + DECLARE_IS_DISPATCHED( vkGetPrivateData ) + DECLARE_IS_DISPATCHED( vkGetPrivateDataEXT ) + DECLARE_IS_DISPATCHED( vkGetQueryPoolResults ) + DECLARE_IS_DISPATCHED( vkGetQueueCheckpointData2NV ) + DECLARE_IS_DISPATCHED( vkGetQueueCheckpointDataNV ) + DECLARE_IS_DISPATCHED( vkGetRandROutputDisplayEXT ) + DECLARE_IS_DISPATCHED( vkGetRayTracingCaptureReplayShaderGroupHandlesKHR ) + DECLARE_IS_DISPATCHED( vkGetRayTracingShaderGroupHandlesKHR ) + DECLARE_IS_DISPATCHED( vkGetRayTracingShaderGroupHandlesNV ) + DECLARE_IS_DISPATCHED( vkGetRayTracingShaderGroupStackSizeKHR ) + DECLARE_IS_DISPATCHED( vkGetRefreshCycleDurationGOOGLE ) + DECLARE_IS_DISPATCHED( vkGetRenderAreaGranularity ) + DECLARE_IS_DISPATCHED( vkGetRenderingAreaGranularity ) + DECLARE_IS_DISPATCHED( vkGetRenderingAreaGranularityKHR ) + DECLARE_IS_DISPATCHED( vkGetSamplerOpaqueCaptureDescriptorDataEXT ) + DECLARE_IS_DISPATCHED( vkGetScreenBufferPropertiesQNX ) + DECLARE_IS_DISPATCHED( vkGetSemaphoreCounterValue ) + DECLARE_IS_DISPATCHED( vkGetSemaphoreCounterValueKHR ) + DECLARE_IS_DISPATCHED( vkGetSemaphoreFdKHR ) + DECLARE_IS_DISPATCHED( vkGetSemaphoreSciSyncObjNV ) + DECLARE_IS_DISPATCHED( vkGetSemaphoreWin32HandleKHR ) + DECLARE_IS_DISPATCHED( vkGetSemaphoreZirconHandleFUCHSIA ) + DECLARE_IS_DISPATCHED( vkGetShaderBinaryDataEXT ) + DECLARE_IS_DISPATCHED( vkGetShaderInfoAMD ) + DECLARE_IS_DISPATCHED( vkGetShaderInstrumentationValuesARM ) + DECLARE_IS_DISPATCHED( vkGetShaderModuleCreateInfoIdentifierEXT ) + DECLARE_IS_DISPATCHED( vkGetShaderModuleIdentifierEXT ) + DECLARE_IS_DISPATCHED( vkGetSwapchainCounterEXT ) + DECLARE_IS_DISPATCHED( vkGetSwapchainGrallocUsage2ANDROID ) + DECLARE_IS_DISPATCHED( vkGetSwapchainGrallocUsageANDROID ) + DECLARE_IS_DISPATCHED( vkGetSwapchainGrallocUsageOHOS ) + DECLARE_IS_DISPATCHED( vkGetSwapchainImagesKHR ) + DECLARE_IS_DISPATCHED( vkGetSwapchainStatusKHR ) + DECLARE_IS_DISPATCHED( vkGetSwapchainTimeDomainPropertiesEXT ) + DECLARE_IS_DISPATCHED( vkGetSwapchainTimingPropertiesEXT ) + DECLARE_IS_DISPATCHED( vkGetTensorMemoryRequirementsARM ) + DECLARE_IS_DISPATCHED( vkGetTensorOpaqueCaptureDataARM ) + DECLARE_IS_DISPATCHED( vkGetTensorOpaqueCaptureDescriptorDataARM ) + DECLARE_IS_DISPATCHED( vkGetTensorViewOpaqueCaptureDescriptorDataARM ) + DECLARE_IS_DISPATCHED( vkGetValidationCacheDataEXT ) + DECLARE_IS_DISPATCHED( vkGetVideoSessionMemoryRequirementsKHR ) + DECLARE_IS_DISPATCHED( vkGetWinrtDisplayNV ) + DECLARE_IS_DISPATCHED( vkImportFenceFdKHR ) + DECLARE_IS_DISPATCHED( vkImportFenceSciSyncFenceNV ) + DECLARE_IS_DISPATCHED( vkImportFenceSciSyncObjNV ) + DECLARE_IS_DISPATCHED( vkImportFenceWin32HandleKHR ) + DECLARE_IS_DISPATCHED( vkImportSemaphoreFdKHR ) + DECLARE_IS_DISPATCHED( vkImportSemaphoreSciSyncObjNV ) + DECLARE_IS_DISPATCHED( vkImportSemaphoreWin32HandleKHR ) + DECLARE_IS_DISPATCHED( vkImportSemaphoreZirconHandleFUCHSIA ) + DECLARE_IS_DISPATCHED( vkInitializePerformanceApiINTEL ) + DECLARE_IS_DISPATCHED( vkInvalidateMappedMemoryRanges ) + DECLARE_IS_DISPATCHED( vkLatencySleepNV ) + DECLARE_IS_DISPATCHED( vkMapMemory ) + DECLARE_IS_DISPATCHED( vkMapMemory2 ) + DECLARE_IS_DISPATCHED( vkMapMemory2KHR ) + DECLARE_IS_DISPATCHED( vkMergePipelineCaches ) + DECLARE_IS_DISPATCHED( vkMergeValidationCachesEXT ) + DECLARE_IS_DISPATCHED( vkQueueBeginDebugUtilsLabelEXT ) + DECLARE_IS_DISPATCHED( vkQueueBindSparse ) + DECLARE_IS_DISPATCHED( vkQueueEndDebugUtilsLabelEXT ) + DECLARE_IS_DISPATCHED( vkQueueInsertDebugUtilsLabelEXT ) + DECLARE_IS_DISPATCHED( vkQueueNotifyOutOfBandNV ) + DECLARE_IS_DISPATCHED( vkQueuePresentKHR ) + DECLARE_IS_DISPATCHED( vkQueueSetPerformanceConfigurationINTEL ) + DECLARE_IS_DISPATCHED( vkQueueSignalReleaseImageANDROID ) + DECLARE_IS_DISPATCHED( vkQueueSignalReleaseImageOHOS ) + DECLARE_IS_DISPATCHED( vkQueueSubmit ) + DECLARE_IS_DISPATCHED( vkQueueSubmit2 ) + DECLARE_IS_DISPATCHED( vkQueueSubmit2KHR ) + DECLARE_IS_DISPATCHED( vkQueueWaitIdle ) + DECLARE_IS_DISPATCHED( vkRegisterCustomBorderColorEXT ) + DECLARE_IS_DISPATCHED( vkRegisterDeviceEventEXT ) + DECLARE_IS_DISPATCHED( vkRegisterDisplayEventEXT ) + DECLARE_IS_DISPATCHED( vkReleaseCapturedPipelineDataKHR ) + DECLARE_IS_DISPATCHED( vkReleaseDisplayEXT ) + DECLARE_IS_DISPATCHED( vkReleaseFullScreenExclusiveModeEXT ) + DECLARE_IS_DISPATCHED( vkReleasePerformanceConfigurationINTEL ) + DECLARE_IS_DISPATCHED( vkReleaseProfilingLockKHR ) + DECLARE_IS_DISPATCHED( vkReleaseSwapchainImagesKHR ) + DECLARE_IS_DISPATCHED( vkReleaseSwapchainImagesEXT ) + DECLARE_IS_DISPATCHED( vkResetCommandBuffer ) + DECLARE_IS_DISPATCHED( vkResetCommandPool ) + DECLARE_IS_DISPATCHED( vkResetDescriptorPool ) + DECLARE_IS_DISPATCHED( vkResetEvent ) + DECLARE_IS_DISPATCHED( vkResetFences ) + DECLARE_IS_DISPATCHED( vkResetQueryPool ) + DECLARE_IS_DISPATCHED( vkResetQueryPoolEXT ) + DECLARE_IS_DISPATCHED( vkSetBufferCollectionBufferConstraintsFUCHSIA ) + DECLARE_IS_DISPATCHED( vkSetBufferCollectionImageConstraintsFUCHSIA ) + DECLARE_IS_DISPATCHED( vkSetDebugUtilsObjectNameEXT ) + DECLARE_IS_DISPATCHED( vkSetDebugUtilsObjectTagEXT ) + DECLARE_IS_DISPATCHED( vkSetDeviceMemoryPriorityEXT ) + DECLARE_IS_DISPATCHED( vkSetEvent ) + DECLARE_IS_DISPATCHED( vkSetHdrMetadataEXT ) + DECLARE_IS_DISPATCHED( vkSetLatencyMarkerNV ) + DECLARE_IS_DISPATCHED( vkSetLatencySleepModeNV ) + DECLARE_IS_DISPATCHED( vkSetLocalDimmingAMD ) + DECLARE_IS_DISPATCHED( vkSetPrivateData ) + DECLARE_IS_DISPATCHED( vkSetPrivateDataEXT ) + DECLARE_IS_DISPATCHED( vkSetSwapchainPresentTimingQueueSizeEXT ) + DECLARE_IS_DISPATCHED( vkSignalSemaphore ) + DECLARE_IS_DISPATCHED( vkSignalSemaphoreKHR ) + DECLARE_IS_DISPATCHED( vkSubmitDebugUtilsMessageEXT ) + DECLARE_IS_DISPATCHED( vkTransitionImageLayout ) + DECLARE_IS_DISPATCHED( vkTransitionImageLayoutEXT ) + DECLARE_IS_DISPATCHED( vkTrimCommandPool ) + DECLARE_IS_DISPATCHED( vkTrimCommandPoolKHR ) + DECLARE_IS_DISPATCHED( vkUninitializePerformanceApiINTEL ) + DECLARE_IS_DISPATCHED( vkUnmapMemory ) + DECLARE_IS_DISPATCHED( vkUnmapMemory2 ) + DECLARE_IS_DISPATCHED( vkUnmapMemory2KHR ) + DECLARE_IS_DISPATCHED( vkUnregisterCustomBorderColorEXT ) + DECLARE_IS_DISPATCHED( vkUpdateDescriptorSetWithTemplate ) + DECLARE_IS_DISPATCHED( vkUpdateDescriptorSetWithTemplateKHR ) + DECLARE_IS_DISPATCHED( vkUpdateDescriptorSets ) + DECLARE_IS_DISPATCHED( vkUpdateIndirectExecutionSetPipelineEXT ) + DECLARE_IS_DISPATCHED( vkUpdateIndirectExecutionSetShaderEXT ) + DECLARE_IS_DISPATCHED( vkUpdateVideoSessionParametersKHR ) + DECLARE_IS_DISPATCHED( vkWaitForFences ) + DECLARE_IS_DISPATCHED( vkWaitForPresent2KHR ) + DECLARE_IS_DISPATCHED( vkWaitForPresentKHR ) + DECLARE_IS_DISPATCHED( vkWaitSemaphores ) + DECLARE_IS_DISPATCHED( vkWaitSemaphoresKHR ) + DECLARE_IS_DISPATCHED( vkWriteAccelerationStructuresPropertiesKHR ) + DECLARE_IS_DISPATCHED( vkWriteMicromapsPropertiesEXT ) + DECLARE_IS_DISPATCHED( vkWriteResourceDescriptorsEXT ) + DECLARE_IS_DISPATCHED( vkWriteSamplerDescriptorsEXT ) + +#undef DECLARE_IS_DISPATCHED + +#define IS_DISPATCHED( name ) ::VULKAN_HPP_NAMESPACE::detail::has_##name::value + + class DispatchLoaderBase + { + public: + DispatchLoaderBase() = default; + DispatchLoaderBase( std::nullptr_t ) +#if !defined( NDEBUG ) + : m_valid( false ) +#endif + { + } + +#if !defined( NDEBUG ) + size_t getVkHeaderVersion() const + { + VULKAN_HPP_ASSERT( m_valid ); + return vkHeaderVersion; + } + + private: + size_t vkHeaderVersion = VK_HEADER_VERSION; + bool m_valid = true; +#endif + }; + +#if !defined( VK_NO_PROTOTYPES ) || ( defined( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC ) && ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 0 ) ) + class DispatchLoaderStatic : public DispatchLoaderBase + { + public: + // These commands are listed as `VULKAN_HPP_INLINE` to account for P1779R3: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1779r3.html + // That is, member functions defined in a class definition in a module interface unit are no longer implicitly inline. + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_INLINE VkResult vkCreateInstance( VkInstanceCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkInstance * pInstance ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateInstance( pCreateInfo, pAllocator, pInstance ); + } + + VULKAN_HPP_INLINE void vkDestroyInstance( VkInstance instance, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyInstance( instance, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkEnumeratePhysicalDevices( VkInstance instance, + uint32_t * pPhysicalDeviceCount, + VkPhysicalDevice * pPhysicalDevices ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumeratePhysicalDevices( instance, pPhysicalDeviceCount, pPhysicalDevices ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceFeatures( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures * pFeatures ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceFeatures( physicalDevice, pFeatures ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceFormatProperties( VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties * pFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceFormatProperties( physicalDevice, format, pFormatProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceImageFormatProperties( VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkImageFormatProperties * pImageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceImageFormatProperties( physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceProperties( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceProperties( physicalDevice, pProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceQueueFamilyProperties( VkPhysicalDevice physicalDevice, + uint32_t * pQueueFamilyPropertyCount, + VkQueueFamilyProperties * pQueueFamilyProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceQueueFamilyProperties( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceMemoryProperties * pMemoryProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceMemoryProperties( physicalDevice, pMemoryProperties ); + } + + VULKAN_HPP_INLINE PFN_vkVoidFunction vkGetInstanceProcAddr( VkInstance instance, char const * pName ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetInstanceProcAddr( instance, pName ); + } + + VULKAN_HPP_INLINE PFN_vkVoidFunction vkGetDeviceProcAddr( VkDevice device, char const * pName ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceProcAddr( device, pName ); + } + + VULKAN_HPP_INLINE VkResult vkCreateDevice( VkPhysicalDevice physicalDevice, + VkDeviceCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkDevice * pDevice ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDevice( physicalDevice, pCreateInfo, pAllocator, pDevice ); + } + + VULKAN_HPP_INLINE void vkDestroyDevice( VkDevice device, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDevice( device, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkEnumerateInstanceExtensionProperties( char const * pLayerName, + uint32_t * pPropertyCount, + VkExtensionProperties * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkEnumerateDeviceExtensionProperties( VkPhysicalDevice physicalDevice, + char const * pLayerName, + uint32_t * pPropertyCount, + VkExtensionProperties * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumerateDeviceExtensionProperties( physicalDevice, pLayerName, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkEnumerateInstanceLayerProperties( uint32_t * pPropertyCount, VkLayerProperties * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumerateInstanceLayerProperties( pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkEnumerateDeviceLayerProperties( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkLayerProperties * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumerateDeviceLayerProperties( physicalDevice, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE void vkGetDeviceQueue( VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue * pQueue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceQueue( device, queueFamilyIndex, queueIndex, pQueue ); + } + + VULKAN_HPP_INLINE VkResult vkQueueSubmit( VkQueue queue, uint32_t submitCount, VkSubmitInfo const * pSubmits, VkFence fence ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueSubmit( queue, submitCount, pSubmits, fence ); + } + + VULKAN_HPP_INLINE VkResult vkQueueWaitIdle( VkQueue queue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueWaitIdle( queue ); + } + + VULKAN_HPP_INLINE VkResult vkDeviceWaitIdle( VkDevice device ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDeviceWaitIdle( device ); + } + + VULKAN_HPP_INLINE VkResult vkAllocateMemory( VkDevice device, + VkMemoryAllocateInfo const * pAllocateInfo, + VkAllocationCallbacks const * pAllocator, + VkDeviceMemory * pMemory ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAllocateMemory( device, pAllocateInfo, pAllocator, pMemory ); + } + + VULKAN_HPP_INLINE void vkFreeMemory( VkDevice device, VkDeviceMemory memory, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkFreeMemory( device, memory, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkMapMemory( + VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void ** ppData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkMapMemory( device, memory, offset, size, flags, ppData ); + } + + VULKAN_HPP_INLINE void vkUnmapMemory( VkDevice device, VkDeviceMemory memory ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUnmapMemory( device, memory ); + } + + VULKAN_HPP_INLINE VkResult vkFlushMappedMemoryRanges( VkDevice device, + uint32_t memoryRangeCount, + VkMappedMemoryRange const * pMemoryRanges ) const VULKAN_HPP_NOEXCEPT + { + return ::vkFlushMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges ); + } + + VULKAN_HPP_INLINE VkResult vkInvalidateMappedMemoryRanges( VkDevice device, + uint32_t memoryRangeCount, + VkMappedMemoryRange const * pMemoryRanges ) const VULKAN_HPP_NOEXCEPT + { + return ::vkInvalidateMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges ); + } + + VULKAN_HPP_INLINE void + vkGetDeviceMemoryCommitment( VkDevice device, VkDeviceMemory memory, VkDeviceSize * pCommittedMemoryInBytes ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceMemoryCommitment( device, memory, pCommittedMemoryInBytes ); + } + + VULKAN_HPP_INLINE VkResult vkBindBufferMemory( VkDevice device, + VkBuffer buffer, + VkDeviceMemory memory, + VkDeviceSize memoryOffset ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindBufferMemory( device, buffer, memory, memoryOffset ); + } + + VULKAN_HPP_INLINE VkResult vkBindImageMemory( VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindImageMemory( device, image, memory, memoryOffset ); + } + + VULKAN_HPP_INLINE void + vkGetBufferMemoryRequirements( VkDevice device, VkBuffer buffer, VkMemoryRequirements * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferMemoryRequirements( device, buffer, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void + vkGetImageMemoryRequirements( VkDevice device, VkImage image, VkMemoryRequirements * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageMemoryRequirements( device, image, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkGetImageSparseMemoryRequirements( VkDevice device, + VkImage image, + uint32_t * pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageSparseMemoryRequirements( device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceSparseImageFormatProperties( VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkSampleCountFlagBits samples, + VkImageUsageFlags usage, + VkImageTiling tiling, + uint32_t * pPropertyCount, + VkSparseImageFormatProperties * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSparseImageFormatProperties( physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkQueueBindSparse( VkQueue queue, + uint32_t bindInfoCount, + VkBindSparseInfo const * pBindInfo, + VkFence fence ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueBindSparse( queue, bindInfoCount, pBindInfo, fence ); + } + + VULKAN_HPP_INLINE VkResult vkCreateFence( VkDevice device, + VkFenceCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkFence * pFence ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateFence( device, pCreateInfo, pAllocator, pFence ); + } + + VULKAN_HPP_INLINE void vkDestroyFence( VkDevice device, VkFence fence, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyFence( device, fence, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkResetFences( VkDevice device, uint32_t fenceCount, VkFence const * pFences ) const VULKAN_HPP_NOEXCEPT + { + return ::vkResetFences( device, fenceCount, pFences ); + } + + VULKAN_HPP_INLINE VkResult vkGetFenceStatus( VkDevice device, VkFence fence ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetFenceStatus( device, fence ); + } + + VULKAN_HPP_INLINE VkResult + vkWaitForFences( VkDevice device, uint32_t fenceCount, VkFence const * pFences, VkBool32 waitAll, uint64_t timeout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWaitForFences( device, fenceCount, pFences, waitAll, timeout ); + } + + VULKAN_HPP_INLINE VkResult vkCreateSemaphore( VkDevice device, + VkSemaphoreCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSemaphore * pSemaphore ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateSemaphore( device, pCreateInfo, pAllocator, pSemaphore ); + } + + VULKAN_HPP_INLINE void vkDestroySemaphore( VkDevice device, VkSemaphore semaphore, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroySemaphore( device, semaphore, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreateQueryPool( VkDevice device, + VkQueryPoolCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkQueryPool * pQueryPool ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateQueryPool( device, pCreateInfo, pAllocator, pQueryPool ); + } + + VULKAN_HPP_INLINE void vkDestroyQueryPool( VkDevice device, VkQueryPool queryPool, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyQueryPool( device, queryPool, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkGetQueryPoolResults( VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + void * pData, + VkDeviceSize stride, + VkQueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetQueryPoolResults( device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags ); + } + + VULKAN_HPP_INLINE VkResult vkCreateBuffer( VkDevice device, + VkBufferCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkBuffer * pBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateBuffer( device, pCreateInfo, pAllocator, pBuffer ); + } + + VULKAN_HPP_INLINE void vkDestroyBuffer( VkDevice device, VkBuffer buffer, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyBuffer( device, buffer, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreateImage( VkDevice device, + VkImageCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkImage * pImage ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateImage( device, pCreateInfo, pAllocator, pImage ); + } + + VULKAN_HPP_INLINE void vkDestroyImage( VkDevice device, VkImage image, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyImage( device, image, pAllocator ); + } + + VULKAN_HPP_INLINE void vkGetImageSubresourceLayout( VkDevice device, + VkImage image, + VkImageSubresource const * pSubresource, + VkSubresourceLayout * pLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageSubresourceLayout( device, image, pSubresource, pLayout ); + } + + VULKAN_HPP_INLINE VkResult vkCreateImageView( VkDevice device, + VkImageViewCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkImageView * pView ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateImageView( device, pCreateInfo, pAllocator, pView ); + } + + VULKAN_HPP_INLINE void vkDestroyImageView( VkDevice device, VkImageView imageView, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyImageView( device, imageView, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreateCommandPool( VkDevice device, + VkCommandPoolCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkCommandPool * pCommandPool ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateCommandPool( device, pCreateInfo, pAllocator, pCommandPool ); + } + + VULKAN_HPP_INLINE void + vkDestroyCommandPool( VkDevice device, VkCommandPool commandPool, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyCommandPool( device, commandPool, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkResetCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags ) const VULKAN_HPP_NOEXCEPT + { + return ::vkResetCommandPool( device, commandPool, flags ); + } + + VULKAN_HPP_INLINE VkResult vkAllocateCommandBuffers( VkDevice device, + VkCommandBufferAllocateInfo const * pAllocateInfo, + VkCommandBuffer * pCommandBuffers ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAllocateCommandBuffers( device, pAllocateInfo, pCommandBuffers ); + } + + VULKAN_HPP_INLINE void vkFreeCommandBuffers( VkDevice device, + VkCommandPool commandPool, + uint32_t commandBufferCount, + VkCommandBuffer const * pCommandBuffers ) const VULKAN_HPP_NOEXCEPT + { + return ::vkFreeCommandBuffers( device, commandPool, commandBufferCount, pCommandBuffers ); + } + + VULKAN_HPP_INLINE VkResult vkBeginCommandBuffer( VkCommandBuffer commandBuffer, VkCommandBufferBeginInfo const * pBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBeginCommandBuffer( commandBuffer, pBeginInfo ); + } + + VULKAN_HPP_INLINE VkResult vkEndCommandBuffer( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEndCommandBuffer( commandBuffer ); + } + + VULKAN_HPP_INLINE VkResult vkResetCommandBuffer( VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags ) const VULKAN_HPP_NOEXCEPT + { + return ::vkResetCommandBuffer( commandBuffer, flags ); + } + + VULKAN_HPP_INLINE void vkCmdCopyBuffer( + VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, VkBufferCopy const * pRegions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyBuffer( commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions ); + } + + VULKAN_HPP_INLINE void vkCmdCopyImage( VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + VkImageCopy const * pRegions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); + } + + VULKAN_HPP_INLINE void vkCmdCopyBufferToImage( VkCommandBuffer commandBuffer, + VkBuffer srcBuffer, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + VkBufferImageCopy const * pRegions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyBufferToImage( commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions ); + } + + VULKAN_HPP_INLINE void vkCmdCopyImageToBuffer( VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkBuffer dstBuffer, + uint32_t regionCount, + VkBufferImageCopy const * pRegions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyImageToBuffer( commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions ); + } + + VULKAN_HPP_INLINE void vkCmdUpdateBuffer( + VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, void const * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdUpdateBuffer( commandBuffer, dstBuffer, dstOffset, dataSize, pData ); + } + + VULKAN_HPP_INLINE void + vkCmdFillBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdFillBuffer( commandBuffer, dstBuffer, dstOffset, size, data ); + } + + VULKAN_HPP_INLINE void vkCmdPipelineBarrier( VkCommandBuffer commandBuffer, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask, + VkDependencyFlags dependencyFlags, + uint32_t memoryBarrierCount, + VkMemoryBarrier const * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + VkBufferMemoryBarrier const * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + VkImageMemoryBarrier const * pImageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPipelineBarrier( commandBuffer, + srcStageMask, + dstStageMask, + dependencyFlags, + memoryBarrierCount, + pMemoryBarriers, + bufferMemoryBarrierCount, + pBufferMemoryBarriers, + imageMemoryBarrierCount, + pImageMemoryBarriers ); + } + + VULKAN_HPP_INLINE void + vkCmdBeginQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginQuery( commandBuffer, queryPool, query, flags ); + } + + VULKAN_HPP_INLINE void vkCmdEndQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndQuery( commandBuffer, queryPool, query ); + } + + VULKAN_HPP_INLINE void + vkCmdResetQueryPool( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdResetQueryPool( commandBuffer, queryPool, firstQuery, queryCount ); + } + + VULKAN_HPP_INLINE void vkCmdWriteTimestamp( VkCommandBuffer commandBuffer, + VkPipelineStageFlagBits pipelineStage, + VkQueryPool queryPool, + uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteTimestamp( commandBuffer, pipelineStage, queryPool, query ); + } + + VULKAN_HPP_INLINE void vkCmdCopyQueryPoolResults( VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + VkDeviceSize stride, + VkQueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyQueryPoolResults( commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags ); + } + + VULKAN_HPP_INLINE void + vkCmdExecuteCommands( VkCommandBuffer commandBuffer, uint32_t commandBufferCount, VkCommandBuffer const * pCommandBuffers ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdExecuteCommands( commandBuffer, commandBufferCount, pCommandBuffers ); + } + + VULKAN_HPP_INLINE VkResult vkCreateEvent( VkDevice device, + VkEventCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkEvent * pEvent ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateEvent( device, pCreateInfo, pAllocator, pEvent ); + } + + VULKAN_HPP_INLINE void vkDestroyEvent( VkDevice device, VkEvent event, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyEvent( device, event, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkGetEventStatus( VkDevice device, VkEvent event ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetEventStatus( device, event ); + } + + VULKAN_HPP_INLINE VkResult vkSetEvent( VkDevice device, VkEvent event ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetEvent( device, event ); + } + + VULKAN_HPP_INLINE VkResult vkResetEvent( VkDevice device, VkEvent event ) const VULKAN_HPP_NOEXCEPT + { + return ::vkResetEvent( device, event ); + } + + VULKAN_HPP_INLINE VkResult vkCreateBufferView( VkDevice device, + VkBufferViewCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkBufferView * pView ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateBufferView( device, pCreateInfo, pAllocator, pView ); + } + + VULKAN_HPP_INLINE void vkDestroyBufferView( VkDevice device, VkBufferView bufferView, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyBufferView( device, bufferView, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreateShaderModule( VkDevice device, + VkShaderModuleCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkShaderModule * pShaderModule ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateShaderModule( device, pCreateInfo, pAllocator, pShaderModule ); + } + + VULKAN_HPP_INLINE void + vkDestroyShaderModule( VkDevice device, VkShaderModule shaderModule, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyShaderModule( device, shaderModule, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreatePipelineCache( VkDevice device, + VkPipelineCacheCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkPipelineCache * pPipelineCache ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreatePipelineCache( device, pCreateInfo, pAllocator, pPipelineCache ); + } + + VULKAN_HPP_INLINE void + vkDestroyPipelineCache( VkDevice device, VkPipelineCache pipelineCache, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyPipelineCache( device, pipelineCache, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkGetPipelineCacheData( VkDevice device, + VkPipelineCache pipelineCache, + size_t * pDataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineCacheData( device, pipelineCache, pDataSize, pData ); + } + + VULKAN_HPP_INLINE VkResult vkMergePipelineCaches( VkDevice device, + VkPipelineCache dstCache, + uint32_t srcCacheCount, + VkPipelineCache const * pSrcCaches ) const VULKAN_HPP_NOEXCEPT + { + return ::vkMergePipelineCaches( device, dstCache, srcCacheCount, pSrcCaches ); + } + + VULKAN_HPP_INLINE VkResult vkCreateComputePipelines( VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + VkComputePipelineCreateInfo const * pCreateInfos, + VkAllocationCallbacks const * pAllocator, + VkPipeline * pPipelines ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateComputePipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + } + + VULKAN_HPP_INLINE void vkDestroyPipeline( VkDevice device, VkPipeline pipeline, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyPipeline( device, pipeline, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreatePipelineLayout( VkDevice device, + VkPipelineLayoutCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkPipelineLayout * pPipelineLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreatePipelineLayout( device, pCreateInfo, pAllocator, pPipelineLayout ); + } + + VULKAN_HPP_INLINE void + vkDestroyPipelineLayout( VkDevice device, VkPipelineLayout pipelineLayout, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyPipelineLayout( device, pipelineLayout, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreateSampler( VkDevice device, + VkSamplerCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSampler * pSampler ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateSampler( device, pCreateInfo, pAllocator, pSampler ); + } + + VULKAN_HPP_INLINE void vkDestroySampler( VkDevice device, VkSampler sampler, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroySampler( device, sampler, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreateDescriptorSetLayout( VkDevice device, + VkDescriptorSetLayoutCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkDescriptorSetLayout * pSetLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDescriptorSetLayout( device, pCreateInfo, pAllocator, pSetLayout ); + } + + VULKAN_HPP_INLINE void vkDestroyDescriptorSetLayout( VkDevice device, + VkDescriptorSetLayout descriptorSetLayout, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDescriptorSetLayout( device, descriptorSetLayout, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreateDescriptorPool( VkDevice device, + VkDescriptorPoolCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkDescriptorPool * pDescriptorPool ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDescriptorPool( device, pCreateInfo, pAllocator, pDescriptorPool ); + } + + VULKAN_HPP_INLINE void + vkDestroyDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDescriptorPool( device, descriptorPool, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkResetDescriptorPool( VkDevice device, + VkDescriptorPool descriptorPool, + VkDescriptorPoolResetFlags flags ) const VULKAN_HPP_NOEXCEPT + { + return ::vkResetDescriptorPool( device, descriptorPool, flags ); + } + + VULKAN_HPP_INLINE VkResult vkAllocateDescriptorSets( VkDevice device, + VkDescriptorSetAllocateInfo const * pAllocateInfo, + VkDescriptorSet * pDescriptorSets ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAllocateDescriptorSets( device, pAllocateInfo, pDescriptorSets ); + } + + VULKAN_HPP_INLINE VkResult vkFreeDescriptorSets( VkDevice device, + VkDescriptorPool descriptorPool, + uint32_t descriptorSetCount, + VkDescriptorSet const * pDescriptorSets ) const VULKAN_HPP_NOEXCEPT + { + return ::vkFreeDescriptorSets( device, descriptorPool, descriptorSetCount, pDescriptorSets ); + } + + VULKAN_HPP_INLINE void vkUpdateDescriptorSets( VkDevice device, + uint32_t descriptorWriteCount, + VkWriteDescriptorSet const * pDescriptorWrites, + uint32_t descriptorCopyCount, + VkCopyDescriptorSet const * pDescriptorCopies ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUpdateDescriptorSets( device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies ); + } + + VULKAN_HPP_INLINE void + vkCmdBindPipeline( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindPipeline( commandBuffer, pipelineBindPoint, pipeline ); + } + + VULKAN_HPP_INLINE void vkCmdBindDescriptorSets( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t firstSet, + uint32_t descriptorSetCount, + VkDescriptorSet const * pDescriptorSets, + uint32_t dynamicOffsetCount, + uint32_t const * pDynamicOffsets ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindDescriptorSets( + commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets ); + } + + VULKAN_HPP_INLINE void vkCmdClearColorImage( VkCommandBuffer commandBuffer, + VkImage image, + VkImageLayout imageLayout, + VkClearColorValue const * pColor, + uint32_t rangeCount, + VkImageSubresourceRange const * pRanges ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdClearColorImage( commandBuffer, image, imageLayout, pColor, rangeCount, pRanges ); + } + + VULKAN_HPP_INLINE void + vkCmdDispatch( VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDispatch( commandBuffer, groupCountX, groupCountY, groupCountZ ); + } + + VULKAN_HPP_INLINE void vkCmdDispatchIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDispatchIndirect( commandBuffer, buffer, offset ); + } + + VULKAN_HPP_INLINE void vkCmdSetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetEvent( commandBuffer, event, stageMask ); + } + + VULKAN_HPP_INLINE void vkCmdResetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdResetEvent( commandBuffer, event, stageMask ); + } + + VULKAN_HPP_INLINE void vkCmdWaitEvents( VkCommandBuffer commandBuffer, + uint32_t eventCount, + VkEvent const * pEvents, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask, + uint32_t memoryBarrierCount, + VkMemoryBarrier const * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + VkBufferMemoryBarrier const * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + VkImageMemoryBarrier const * pImageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWaitEvents( commandBuffer, + eventCount, + pEvents, + srcStageMask, + dstStageMask, + memoryBarrierCount, + pMemoryBarriers, + bufferMemoryBarrierCount, + pBufferMemoryBarriers, + imageMemoryBarrierCount, + pImageMemoryBarriers ); + } + + VULKAN_HPP_INLINE void vkCmdPushConstants( VkCommandBuffer commandBuffer, + VkPipelineLayout layout, + VkShaderStageFlags stageFlags, + uint32_t offset, + uint32_t size, + void const * pValues ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushConstants( commandBuffer, layout, stageFlags, offset, size, pValues ); + } + + VULKAN_HPP_INLINE VkResult vkCreateGraphicsPipelines( VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + VkGraphicsPipelineCreateInfo const * pCreateInfos, + VkAllocationCallbacks const * pAllocator, + VkPipeline * pPipelines ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateGraphicsPipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + } + + VULKAN_HPP_INLINE VkResult vkCreateFramebuffer( VkDevice device, + VkFramebufferCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkFramebuffer * pFramebuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateFramebuffer( device, pCreateInfo, pAllocator, pFramebuffer ); + } + + VULKAN_HPP_INLINE void + vkDestroyFramebuffer( VkDevice device, VkFramebuffer framebuffer, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyFramebuffer( device, framebuffer, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreateRenderPass( VkDevice device, + VkRenderPassCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkRenderPass * pRenderPass ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateRenderPass( device, pCreateInfo, pAllocator, pRenderPass ); + } + + VULKAN_HPP_INLINE void vkDestroyRenderPass( VkDevice device, VkRenderPass renderPass, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyRenderPass( device, renderPass, pAllocator ); + } + + VULKAN_HPP_INLINE void vkGetRenderAreaGranularity( VkDevice device, VkRenderPass renderPass, VkExtent2D * pGranularity ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRenderAreaGranularity( device, renderPass, pGranularity ); + } + + VULKAN_HPP_INLINE void vkCmdSetViewport( VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + VkViewport const * pViewports ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetViewport( commandBuffer, firstViewport, viewportCount, pViewports ); + } + + VULKAN_HPP_INLINE void + vkCmdSetScissor( VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, VkRect2D const * pScissors ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetScissor( commandBuffer, firstScissor, scissorCount, pScissors ); + } + + VULKAN_HPP_INLINE void vkCmdSetLineWidth( VkCommandBuffer commandBuffer, float lineWidth ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetLineWidth( commandBuffer, lineWidth ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthBias( VkCommandBuffer commandBuffer, + float depthBiasConstantFactor, + float depthBiasClamp, + float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthBias( commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); + } + + VULKAN_HPP_INLINE void vkCmdSetBlendConstants( VkCommandBuffer commandBuffer, float const blendConstants[4] ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetBlendConstants( commandBuffer, blendConstants ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthBounds( VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthBounds( commandBuffer, minDepthBounds, maxDepthBounds ); + } + + VULKAN_HPP_INLINE void + vkCmdSetStencilCompareMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetStencilCompareMask( commandBuffer, faceMask, compareMask ); + } + + VULKAN_HPP_INLINE void + vkCmdSetStencilWriteMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetStencilWriteMask( commandBuffer, faceMask, writeMask ); + } + + VULKAN_HPP_INLINE void + vkCmdSetStencilReference( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetStencilReference( commandBuffer, faceMask, reference ); + } + + VULKAN_HPP_INLINE void + vkCmdBindIndexBuffer( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindIndexBuffer( commandBuffer, buffer, offset, indexType ); + } + + VULKAN_HPP_INLINE void vkCmdBindVertexBuffers( VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + VkBuffer const * pBuffers, + VkDeviceSize const * pOffsets ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindVertexBuffers( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets ); + } + + VULKAN_HPP_INLINE void vkCmdDraw( + VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDraw( commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndexed( VkCommandBuffer commandBuffer, + uint32_t indexCount, + uint32_t instanceCount, + uint32_t firstIndex, + int32_t vertexOffset, + uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndexed( commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); + } + + VULKAN_HPP_INLINE void + vkCmdDrawIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndirect( commandBuffer, buffer, offset, drawCount, stride ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndexedIndirect( + VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndexedIndirect( commandBuffer, buffer, offset, drawCount, stride ); + } + + VULKAN_HPP_INLINE void vkCmdBlitImage( VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + VkImageBlit const * pRegions, + VkFilter filter ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBlitImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter ); + } + + VULKAN_HPP_INLINE void vkCmdClearDepthStencilImage( VkCommandBuffer commandBuffer, + VkImage image, + VkImageLayout imageLayout, + VkClearDepthStencilValue const * pDepthStencil, + uint32_t rangeCount, + VkImageSubresourceRange const * pRanges ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdClearDepthStencilImage( commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges ); + } + + VULKAN_HPP_INLINE void vkCmdClearAttachments( VkCommandBuffer commandBuffer, + uint32_t attachmentCount, + VkClearAttachment const * pAttachments, + uint32_t rectCount, + VkClearRect const * pRects ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdClearAttachments( commandBuffer, attachmentCount, pAttachments, rectCount, pRects ); + } + + VULKAN_HPP_INLINE void vkCmdResolveImage( VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + VkImageResolve const * pRegions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdResolveImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); + } + + VULKAN_HPP_INLINE void vkCmdBeginRenderPass( VkCommandBuffer commandBuffer, + VkRenderPassBeginInfo const * pRenderPassBegin, + VkSubpassContents contents ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginRenderPass( commandBuffer, pRenderPassBegin, contents ); + } + + VULKAN_HPP_INLINE void vkCmdNextSubpass( VkCommandBuffer commandBuffer, VkSubpassContents contents ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdNextSubpass( commandBuffer, contents ); + } + + VULKAN_HPP_INLINE void vkCmdEndRenderPass( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndRenderPass( commandBuffer ); + } + + //=== VK_VERSION_1_1 === + + VULKAN_HPP_INLINE VkResult vkEnumerateInstanceVersion( uint32_t * pApiVersion ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumerateInstanceVersion( pApiVersion ); + } + + VULKAN_HPP_INLINE VkResult vkBindBufferMemory2( VkDevice device, + uint32_t bindInfoCount, + VkBindBufferMemoryInfo const * pBindInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindBufferMemory2( device, bindInfoCount, pBindInfos ); + } + + VULKAN_HPP_INLINE VkResult vkBindImageMemory2( VkDevice device, + uint32_t bindInfoCount, + VkBindImageMemoryInfo const * pBindInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindImageMemory2( device, bindInfoCount, pBindInfos ); + } + + VULKAN_HPP_INLINE void vkGetDeviceGroupPeerMemoryFeatures( VkDevice device, + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceGroupPeerMemoryFeatures( device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures ); + } + + VULKAN_HPP_INLINE void vkCmdSetDeviceMask( VkCommandBuffer commandBuffer, uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDeviceMask( commandBuffer, deviceMask ); + } + + VULKAN_HPP_INLINE VkResult vkEnumeratePhysicalDeviceGroups( VkInstance instance, + uint32_t * pPhysicalDeviceGroupCount, + VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumeratePhysicalDeviceGroups( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties ); + } + + VULKAN_HPP_INLINE void vkGetImageMemoryRequirements2( VkDevice device, + VkImageMemoryRequirementsInfo2 const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageMemoryRequirements2( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkGetBufferMemoryRequirements2( VkDevice device, + VkBufferMemoryRequirementsInfo2 const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferMemoryRequirements2( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkGetImageSparseMemoryRequirements2( VkDevice device, + VkImageSparseMemoryRequirementsInfo2 const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageSparseMemoryRequirements2( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceFeatures2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2 * pFeatures ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceFeatures2( physicalDevice, pFeatures ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceProperties2( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties2 * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceProperties2( physicalDevice, pProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceFormatProperties2( VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties2 * pFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceFormatProperties2( physicalDevice, format, pFormatProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceImageFormatProperties2( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceImageFormatInfo2 const * pImageFormatInfo, + VkImageFormatProperties2 * pImageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceImageFormatProperties2( physicalDevice, pImageFormatInfo, pImageFormatProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceQueueFamilyProperties2( VkPhysicalDevice physicalDevice, + uint32_t * pQueueFamilyPropertyCount, + VkQueueFamilyProperties2 * pQueueFamilyProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceQueueFamilyProperties2( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceMemoryProperties2( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceMemoryProperties2( physicalDevice, pMemoryProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceSparseImageFormatProperties2( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceSparseImageFormatInfo2 const * pFormatInfo, + uint32_t * pPropertyCount, + VkSparseImageFormatProperties2 * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSparseImageFormatProperties2( physicalDevice, pFormatInfo, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE void vkTrimCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT + { + return ::vkTrimCommandPool( device, commandPool, flags ); + } + + VULKAN_HPP_INLINE void vkGetDeviceQueue2( VkDevice device, VkDeviceQueueInfo2 const * pQueueInfo, VkQueue * pQueue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceQueue2( device, pQueueInfo, pQueue ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceExternalBufferProperties( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceExternalBufferInfo const * pExternalBufferInfo, + VkExternalBufferProperties * pExternalBufferProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceExternalBufferProperties( physicalDevice, pExternalBufferInfo, pExternalBufferProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceExternalFenceProperties( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceExternalFenceInfo const * pExternalFenceInfo, + VkExternalFenceProperties * pExternalFenceProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceExternalFenceProperties( physicalDevice, pExternalFenceInfo, pExternalFenceProperties ); + } + + VULKAN_HPP_INLINE void + vkGetPhysicalDeviceExternalSemaphoreProperties( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceExternalSemaphoreInfo const * pExternalSemaphoreInfo, + VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceExternalSemaphoreProperties( physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties ); + } + + VULKAN_HPP_INLINE void vkCmdDispatchBase( VkCommandBuffer commandBuffer, + uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDispatchBase( commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); + } + + VULKAN_HPP_INLINE VkResult vkCreateDescriptorUpdateTemplate( VkDevice device, + VkDescriptorUpdateTemplateCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDescriptorUpdateTemplate( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate ); + } + + VULKAN_HPP_INLINE void vkDestroyDescriptorUpdateTemplate( VkDevice device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDescriptorUpdateTemplate( device, descriptorUpdateTemplate, pAllocator ); + } + + VULKAN_HPP_INLINE void vkUpdateDescriptorSetWithTemplate( VkDevice device, + VkDescriptorSet descriptorSet, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + void const * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUpdateDescriptorSetWithTemplate( device, descriptorSet, descriptorUpdateTemplate, pData ); + } + + VULKAN_HPP_INLINE void vkGetDescriptorSetLayoutSupport( VkDevice device, + VkDescriptorSetLayoutCreateInfo const * pCreateInfo, + VkDescriptorSetLayoutSupport * pSupport ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDescriptorSetLayoutSupport( device, pCreateInfo, pSupport ); + } + + VULKAN_HPP_INLINE VkResult vkCreateSamplerYcbcrConversion( VkDevice device, + VkSamplerYcbcrConversionCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSamplerYcbcrConversion * pYcbcrConversion ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateSamplerYcbcrConversion( device, pCreateInfo, pAllocator, pYcbcrConversion ); + } + + VULKAN_HPP_INLINE void vkDestroySamplerYcbcrConversion( VkDevice device, + VkSamplerYcbcrConversion ycbcrConversion, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroySamplerYcbcrConversion( device, ycbcrConversion, pAllocator ); + } + + //=== VK_VERSION_1_2 === + + VULKAN_HPP_INLINE void vkResetQueryPool( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT + { + return ::vkResetQueryPool( device, queryPool, firstQuery, queryCount ); + } + + VULKAN_HPP_INLINE VkResult vkGetSemaphoreCounterValue( VkDevice device, VkSemaphore semaphore, uint64_t * pValue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSemaphoreCounterValue( device, semaphore, pValue ); + } + + VULKAN_HPP_INLINE VkResult vkWaitSemaphores( VkDevice device, VkSemaphoreWaitInfo const * pWaitInfo, uint64_t timeout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWaitSemaphores( device, pWaitInfo, timeout ); + } + + VULKAN_HPP_INLINE VkResult vkSignalSemaphore( VkDevice device, VkSemaphoreSignalInfo const * pSignalInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSignalSemaphore( device, pSignalInfo ); + } + + VULKAN_HPP_INLINE VkDeviceAddress vkGetBufferDeviceAddress( VkDevice device, VkBufferDeviceAddressInfo const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferDeviceAddress( device, pInfo ); + } + + VULKAN_HPP_INLINE uint64_t vkGetBufferOpaqueCaptureAddress( VkDevice device, VkBufferDeviceAddressInfo const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferOpaqueCaptureAddress( device, pInfo ); + } + + VULKAN_HPP_INLINE uint64_t vkGetDeviceMemoryOpaqueCaptureAddress( VkDevice device, + VkDeviceMemoryOpaqueCaptureAddressInfo const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceMemoryOpaqueCaptureAddress( device, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndirectCount( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndirectCount( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndexedIndirectCount( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndexedIndirectCount( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + } + + VULKAN_HPP_INLINE VkResult vkCreateRenderPass2( VkDevice device, + VkRenderPassCreateInfo2 const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkRenderPass * pRenderPass ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateRenderPass2( device, pCreateInfo, pAllocator, pRenderPass ); + } + + VULKAN_HPP_INLINE void vkCmdBeginRenderPass2( VkCommandBuffer commandBuffer, + VkRenderPassBeginInfo const * pRenderPassBegin, + VkSubpassBeginInfo const * pSubpassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginRenderPass2( commandBuffer, pRenderPassBegin, pSubpassBeginInfo ); + } + + VULKAN_HPP_INLINE void vkCmdNextSubpass2( VkCommandBuffer commandBuffer, + VkSubpassBeginInfo const * pSubpassBeginInfo, + VkSubpassEndInfo const * pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdNextSubpass2( commandBuffer, pSubpassBeginInfo, pSubpassEndInfo ); + } + + VULKAN_HPP_INLINE void vkCmdEndRenderPass2( VkCommandBuffer commandBuffer, VkSubpassEndInfo const * pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndRenderPass2( commandBuffer, pSubpassEndInfo ); + } + + //=== VK_VERSION_1_3 === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceToolProperties( VkPhysicalDevice physicalDevice, + uint32_t * pToolCount, + VkPhysicalDeviceToolProperties * pToolProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceToolProperties( physicalDevice, pToolCount, pToolProperties ); + } + + VULKAN_HPP_INLINE VkResult vkCreatePrivateDataSlot( VkDevice device, + VkPrivateDataSlotCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkPrivateDataSlot * pPrivateDataSlot ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreatePrivateDataSlot( device, pCreateInfo, pAllocator, pPrivateDataSlot ); + } + + VULKAN_HPP_INLINE void + vkDestroyPrivateDataSlot( VkDevice device, VkPrivateDataSlot privateDataSlot, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyPrivateDataSlot( device, privateDataSlot, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkSetPrivateData( + VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetPrivateData( device, objectType, objectHandle, privateDataSlot, data ); + } + + VULKAN_HPP_INLINE void vkGetPrivateData( + VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPrivateData( device, objectType, objectHandle, privateDataSlot, pData ); + } + + VULKAN_HPP_INLINE void vkCmdPipelineBarrier2( VkCommandBuffer commandBuffer, VkDependencyInfo const * pDependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPipelineBarrier2( commandBuffer, pDependencyInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdWriteTimestamp2( VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteTimestamp2( commandBuffer, stage, queryPool, query ); + } + + VULKAN_HPP_INLINE VkResult vkQueueSubmit2( VkQueue queue, uint32_t submitCount, VkSubmitInfo2 const * pSubmits, VkFence fence ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueSubmit2( queue, submitCount, pSubmits, fence ); + } + + VULKAN_HPP_INLINE void vkCmdCopyBuffer2( VkCommandBuffer commandBuffer, VkCopyBufferInfo2 const * pCopyBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyBuffer2( commandBuffer, pCopyBufferInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyImage2( VkCommandBuffer commandBuffer, VkCopyImageInfo2 const * pCopyImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyImage2( commandBuffer, pCopyImageInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyBufferToImage2( VkCommandBuffer commandBuffer, + VkCopyBufferToImageInfo2 const * pCopyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyBufferToImage2( commandBuffer, pCopyBufferToImageInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyImageToBuffer2( VkCommandBuffer commandBuffer, + VkCopyImageToBufferInfo2 const * pCopyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyImageToBuffer2( commandBuffer, pCopyImageToBufferInfo ); + } + + VULKAN_HPP_INLINE void vkGetDeviceBufferMemoryRequirements( VkDevice device, + VkDeviceBufferMemoryRequirements const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceBufferMemoryRequirements( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkGetDeviceImageMemoryRequirements( VkDevice device, + VkDeviceImageMemoryRequirements const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceImageMemoryRequirements( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkGetDeviceImageSparseMemoryRequirements( VkDevice device, + VkDeviceImageMemoryRequirements const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceImageSparseMemoryRequirements( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkCmdSetEvent2( VkCommandBuffer commandBuffer, VkEvent event, VkDependencyInfo const * pDependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetEvent2( commandBuffer, event, pDependencyInfo ); + } + + VULKAN_HPP_INLINE void vkCmdResetEvent2( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdResetEvent2( commandBuffer, event, stageMask ); + } + + VULKAN_HPP_INLINE void vkCmdWaitEvents2( VkCommandBuffer commandBuffer, + uint32_t eventCount, + VkEvent const * pEvents, + VkDependencyInfo const * pDependencyInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWaitEvents2( commandBuffer, eventCount, pEvents, pDependencyInfos ); + } + + VULKAN_HPP_INLINE void vkCmdBlitImage2( VkCommandBuffer commandBuffer, VkBlitImageInfo2 const * pBlitImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBlitImage2( commandBuffer, pBlitImageInfo ); + } + + VULKAN_HPP_INLINE void vkCmdResolveImage2( VkCommandBuffer commandBuffer, VkResolveImageInfo2 const * pResolveImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdResolveImage2( commandBuffer, pResolveImageInfo ); + } + + VULKAN_HPP_INLINE void vkCmdBeginRendering( VkCommandBuffer commandBuffer, VkRenderingInfo const * pRenderingInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginRendering( commandBuffer, pRenderingInfo ); + } + + VULKAN_HPP_INLINE void vkCmdEndRendering( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndRendering( commandBuffer ); + } + + VULKAN_HPP_INLINE void vkCmdSetCullMode( VkCommandBuffer commandBuffer, VkCullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetCullMode( commandBuffer, cullMode ); + } + + VULKAN_HPP_INLINE void vkCmdSetFrontFace( VkCommandBuffer commandBuffer, VkFrontFace frontFace ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetFrontFace( commandBuffer, frontFace ); + } + + VULKAN_HPP_INLINE void vkCmdSetPrimitiveTopology( VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPrimitiveTopology( commandBuffer, primitiveTopology ); + } + + VULKAN_HPP_INLINE void + vkCmdSetViewportWithCount( VkCommandBuffer commandBuffer, uint32_t viewportCount, VkViewport const * pViewports ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetViewportWithCount( commandBuffer, viewportCount, pViewports ); + } + + VULKAN_HPP_INLINE void + vkCmdSetScissorWithCount( VkCommandBuffer commandBuffer, uint32_t scissorCount, VkRect2D const * pScissors ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetScissorWithCount( commandBuffer, scissorCount, pScissors ); + } + + VULKAN_HPP_INLINE void vkCmdBindVertexBuffers2( VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + VkBuffer const * pBuffers, + VkDeviceSize const * pOffsets, + VkDeviceSize const * pSizes, + VkDeviceSize const * pStrides ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindVertexBuffers2( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthTestEnable( VkCommandBuffer commandBuffer, VkBool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthTestEnable( commandBuffer, depthTestEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthWriteEnable( VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthWriteEnable( commandBuffer, depthWriteEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthCompareOp( VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthCompareOp( commandBuffer, depthCompareOp ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthBoundsTestEnable( VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthBoundsTestEnable( commandBuffer, depthBoundsTestEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetStencilTestEnable( VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetStencilTestEnable( commandBuffer, stencilTestEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetStencilOp( VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetStencilOp( commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp ); + } + + VULKAN_HPP_INLINE void vkCmdSetRasterizerDiscardEnable( VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRasterizerDiscardEnable( commandBuffer, rasterizerDiscardEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthBiasEnable( VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthBiasEnable( commandBuffer, depthBiasEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetPrimitiveRestartEnable( VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPrimitiveRestartEnable( commandBuffer, primitiveRestartEnable ); + } + + //=== VK_VERSION_1_4 === + + VULKAN_HPP_INLINE VkResult vkMapMemory2( VkDevice device, VkMemoryMapInfo const * pMemoryMapInfo, void ** ppData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkMapMemory2( device, pMemoryMapInfo, ppData ); + } + + VULKAN_HPP_INLINE VkResult vkUnmapMemory2( VkDevice device, VkMemoryUnmapInfo const * pMemoryUnmapInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUnmapMemory2( device, pMemoryUnmapInfo ); + } + + VULKAN_HPP_INLINE void vkGetDeviceImageSubresourceLayout( VkDevice device, + VkDeviceImageSubresourceInfo const * pInfo, + VkSubresourceLayout2 * pLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceImageSubresourceLayout( device, pInfo, pLayout ); + } + + VULKAN_HPP_INLINE void vkGetImageSubresourceLayout2( VkDevice device, + VkImage image, + VkImageSubresource2 const * pSubresource, + VkSubresourceLayout2 * pLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageSubresourceLayout2( device, image, pSubresource, pLayout ); + } + + VULKAN_HPP_INLINE VkResult vkCopyMemoryToImage( VkDevice device, VkCopyMemoryToImageInfo const * pCopyMemoryToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyMemoryToImage( device, pCopyMemoryToImageInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCopyImageToMemory( VkDevice device, VkCopyImageToMemoryInfo const * pCopyImageToMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyImageToMemory( device, pCopyImageToMemoryInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCopyImageToImage( VkDevice device, VkCopyImageToImageInfo const * pCopyImageToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyImageToImage( device, pCopyImageToImageInfo ); + } + + VULKAN_HPP_INLINE VkResult vkTransitionImageLayout( VkDevice device, + uint32_t transitionCount, + VkHostImageLayoutTransitionInfo const * pTransitions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkTransitionImageLayout( device, transitionCount, pTransitions ); + } + + VULKAN_HPP_INLINE void vkCmdPushDescriptorSet( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + VkWriteDescriptorSet const * pDescriptorWrites ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushDescriptorSet( commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites ); + } + + VULKAN_HPP_INLINE void vkCmdPushDescriptorSetWithTemplate( VkCommandBuffer commandBuffer, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + VkPipelineLayout layout, + uint32_t set, + void const * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushDescriptorSetWithTemplate( commandBuffer, descriptorUpdateTemplate, layout, set, pData ); + } + + VULKAN_HPP_INLINE void vkCmdBindDescriptorSets2( VkCommandBuffer commandBuffer, + VkBindDescriptorSetsInfo const * pBindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindDescriptorSets2( commandBuffer, pBindDescriptorSetsInfo ); + } + + VULKAN_HPP_INLINE void vkCmdPushConstants2( VkCommandBuffer commandBuffer, VkPushConstantsInfo const * pPushConstantsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushConstants2( commandBuffer, pPushConstantsInfo ); + } + + VULKAN_HPP_INLINE void vkCmdPushDescriptorSet2( VkCommandBuffer commandBuffer, + VkPushDescriptorSetInfo const * pPushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushDescriptorSet2( commandBuffer, pPushDescriptorSetInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdPushDescriptorSetWithTemplate2( VkCommandBuffer commandBuffer, + VkPushDescriptorSetWithTemplateInfo const * pPushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushDescriptorSetWithTemplate2( commandBuffer, pPushDescriptorSetWithTemplateInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdSetLineStipple( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetLineStipple( commandBuffer, lineStippleFactor, lineStipplePattern ); + } + + VULKAN_HPP_INLINE void vkCmdBindIndexBuffer2( + VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize size, VkIndexType indexType ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindIndexBuffer2( commandBuffer, buffer, offset, size, indexType ); + } + + VULKAN_HPP_INLINE void + vkGetRenderingAreaGranularity( VkDevice device, VkRenderingAreaInfo const * pRenderingAreaInfo, VkExtent2D * pGranularity ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRenderingAreaGranularity( device, pRenderingAreaInfo, pGranularity ); + } + + VULKAN_HPP_INLINE void vkCmdSetRenderingAttachmentLocations( VkCommandBuffer commandBuffer, + VkRenderingAttachmentLocationInfo const * pLocationInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRenderingAttachmentLocations( commandBuffer, pLocationInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdSetRenderingInputAttachmentIndices( VkCommandBuffer commandBuffer, + VkRenderingInputAttachmentIndexInfo const * pInputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRenderingInputAttachmentIndices( commandBuffer, pInputAttachmentIndexInfo ); + } +# if !defined( VK_ONLY_EXPORTED_PROTOTYPES ) + + //=== VK_KHR_surface === + + VULKAN_HPP_INLINE void + vkDestroySurfaceKHR( VkInstance instance, VkSurfaceKHR surface, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroySurfaceKHR( instance, surface, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceSurfaceSupportKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + VkSurfaceKHR surface, + VkBool32 * pSupported ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSurfaceSupportKHR( physicalDevice, queueFamilyIndex, surface, pSupported ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSurfaceCapabilitiesKHR( physicalDevice, surface, pSurfaceCapabilities ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceSurfaceFormatsKHR( VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t * pSurfaceFormatCount, + VkSurfaceFormatKHR * pSurfaceFormats ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSurfaceFormatsKHR( physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceSurfacePresentModesKHR( VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t * pPresentModeCount, + VkPresentModeKHR * pPresentModes ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSurfacePresentModesKHR( physicalDevice, surface, pPresentModeCount, pPresentModes ); + } + + //=== VK_KHR_swapchain === + + VULKAN_HPP_INLINE VkResult vkCreateSwapchainKHR( VkDevice device, + VkSwapchainCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSwapchainKHR * pSwapchain ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateSwapchainKHR( device, pCreateInfo, pAllocator, pSwapchain ); + } + + VULKAN_HPP_INLINE void + vkDestroySwapchainKHR( VkDevice device, VkSwapchainKHR swapchain, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroySwapchainKHR( device, swapchain, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkGetSwapchainImagesKHR( VkDevice device, + VkSwapchainKHR swapchain, + uint32_t * pSwapchainImageCount, + VkImage * pSwapchainImages ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSwapchainImagesKHR( device, swapchain, pSwapchainImageCount, pSwapchainImages ); + } + + VULKAN_HPP_INLINE VkResult vkAcquireNextImageKHR( + VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t * pImageIndex ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquireNextImageKHR( device, swapchain, timeout, semaphore, fence, pImageIndex ); + } + + VULKAN_HPP_INLINE VkResult vkQueuePresentKHR( VkQueue queue, VkPresentInfoKHR const * pPresentInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueuePresentKHR( queue, pPresentInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetDeviceGroupPresentCapabilitiesKHR( + VkDevice device, VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceGroupPresentCapabilitiesKHR( device, pDeviceGroupPresentCapabilities ); + } + + VULKAN_HPP_INLINE VkResult vkGetDeviceGroupSurfacePresentModesKHR( VkDevice device, + VkSurfaceKHR surface, + VkDeviceGroupPresentModeFlagsKHR * pModes ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceGroupSurfacePresentModesKHR( device, surface, pModes ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDevicePresentRectanglesKHR( VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t * pRectCount, + VkRect2D * pRects ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDevicePresentRectanglesKHR( physicalDevice, surface, pRectCount, pRects ); + } + + VULKAN_HPP_INLINE VkResult vkAcquireNextImage2KHR( VkDevice device, + VkAcquireNextImageInfoKHR const * pAcquireInfo, + uint32_t * pImageIndex ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquireNextImage2KHR( device, pAcquireInfo, pImageIndex ); + } + + //=== VK_KHR_display === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceDisplayPropertiesKHR( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkDisplayPropertiesKHR * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceDisplayPropertiesKHR( physicalDevice, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkDisplayPlanePropertiesKHR * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceDisplayPlanePropertiesKHR( physicalDevice, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetDisplayPlaneSupportedDisplaysKHR( VkPhysicalDevice physicalDevice, + uint32_t planeIndex, + uint32_t * pDisplayCount, + VkDisplayKHR * pDisplays ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDisplayPlaneSupportedDisplaysKHR( physicalDevice, planeIndex, pDisplayCount, pDisplays ); + } + + VULKAN_HPP_INLINE VkResult vkGetDisplayModePropertiesKHR( VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + uint32_t * pPropertyCount, + VkDisplayModePropertiesKHR * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDisplayModePropertiesKHR( physicalDevice, display, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkCreateDisplayModeKHR( VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + VkDisplayModeCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkDisplayModeKHR * pMode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDisplayModeKHR( physicalDevice, display, pCreateInfo, pAllocator, pMode ); + } + + VULKAN_HPP_INLINE VkResult vkGetDisplayPlaneCapabilitiesKHR( VkPhysicalDevice physicalDevice, + VkDisplayModeKHR mode, + uint32_t planeIndex, + VkDisplayPlaneCapabilitiesKHR * pCapabilities ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDisplayPlaneCapabilitiesKHR( physicalDevice, mode, planeIndex, pCapabilities ); + } + + VULKAN_HPP_INLINE VkResult vkCreateDisplayPlaneSurfaceKHR( VkInstance instance, + VkDisplaySurfaceCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDisplayPlaneSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); + } + + //=== VK_KHR_display_swapchain === + + VULKAN_HPP_INLINE VkResult vkCreateSharedSwapchainsKHR( VkDevice device, + uint32_t swapchainCount, + VkSwapchainCreateInfoKHR const * pCreateInfos, + VkAllocationCallbacks const * pAllocator, + VkSwapchainKHR * pSwapchains ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateSharedSwapchainsKHR( device, swapchainCount, pCreateInfos, pAllocator, pSwapchains ); + } + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + VULKAN_HPP_INLINE VkResult vkCreateXlibSurfaceKHR( VkInstance instance, + VkXlibSurfaceCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateXlibSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); + } + + VULKAN_HPP_INLINE VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + Display * dpy, + VisualID visualID ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceXlibPresentationSupportKHR( physicalDevice, queueFamilyIndex, dpy, visualID ); + } +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + VULKAN_HPP_INLINE VkResult vkCreateXcbSurfaceKHR( VkInstance instance, + VkXcbSurfaceCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateXcbSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); + } + + VULKAN_HPP_INLINE VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + xcb_connection_t * connection, + xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceXcbPresentationSupportKHR( physicalDevice, queueFamilyIndex, connection, visual_id ); + } +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + VULKAN_HPP_INLINE VkResult vkCreateWaylandSurfaceKHR( VkInstance instance, + VkWaylandSurfaceCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateWaylandSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); + } + + VULKAN_HPP_INLINE VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct wl_display * display ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceWaylandPresentationSupportKHR( physicalDevice, queueFamilyIndex, display ); + } +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + VULKAN_HPP_INLINE VkResult vkCreateAndroidSurfaceKHR( VkInstance instance, + VkAndroidSurfaceCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateAndroidSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); + } +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + VULKAN_HPP_INLINE VkResult vkCreateWin32SurfaceKHR( VkInstance instance, + VkWin32SurfaceCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateWin32SurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); + } + + VULKAN_HPP_INLINE VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceWin32PresentationSupportKHR( physicalDevice, queueFamilyIndex ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + VULKAN_HPP_INLINE VkResult vkCreateDebugReportCallbackEXT( VkInstance instance, + VkDebugReportCallbackCreateInfoEXT const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkDebugReportCallbackEXT * pCallback ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDebugReportCallbackEXT( instance, pCreateInfo, pAllocator, pCallback ); + } + + VULKAN_HPP_INLINE void vkDestroyDebugReportCallbackEXT( VkInstance instance, + VkDebugReportCallbackEXT callback, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDebugReportCallbackEXT( instance, callback, pAllocator ); + } + + VULKAN_HPP_INLINE void vkDebugReportMessageEXT( VkInstance instance, + VkDebugReportFlagsEXT flags, + VkDebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + char const * pLayerPrefix, + char const * pMessage ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDebugReportMessageEXT( instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage ); + } + + //=== VK_EXT_debug_marker === + + VULKAN_HPP_INLINE VkResult vkDebugMarkerSetObjectTagEXT( VkDevice device, VkDebugMarkerObjectTagInfoEXT const * pTagInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDebugMarkerSetObjectTagEXT( device, pTagInfo ); + } + + VULKAN_HPP_INLINE VkResult vkDebugMarkerSetObjectNameEXT( VkDevice device, VkDebugMarkerObjectNameInfoEXT const * pNameInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDebugMarkerSetObjectNameEXT( device, pNameInfo ); + } + + VULKAN_HPP_INLINE void vkCmdDebugMarkerBeginEXT( VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT const * pMarkerInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDebugMarkerBeginEXT( commandBuffer, pMarkerInfo ); + } + + VULKAN_HPP_INLINE void vkCmdDebugMarkerEndEXT( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDebugMarkerEndEXT( commandBuffer ); + } + + VULKAN_HPP_INLINE void vkCmdDebugMarkerInsertEXT( VkCommandBuffer commandBuffer, + VkDebugMarkerMarkerInfoEXT const * pMarkerInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDebugMarkerInsertEXT( commandBuffer, pMarkerInfo ); + } + + //=== VK_KHR_video_queue === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceVideoCapabilitiesKHR( VkPhysicalDevice physicalDevice, + VkVideoProfileInfoKHR const * pVideoProfile, + VkVideoCapabilitiesKHR * pCapabilities ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceVideoCapabilitiesKHR( physicalDevice, pVideoProfile, pCapabilities ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceVideoFormatPropertiesKHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceVideoFormatInfoKHR const * pVideoFormatInfo, + uint32_t * pVideoFormatPropertyCount, + VkVideoFormatPropertiesKHR * pVideoFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceVideoFormatPropertiesKHR( physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties ); + } + + VULKAN_HPP_INLINE VkResult vkCreateVideoSessionKHR( VkDevice device, + VkVideoSessionCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkVideoSessionKHR * pVideoSession ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateVideoSessionKHR( device, pCreateInfo, pAllocator, pVideoSession ); + } + + VULKAN_HPP_INLINE void + vkDestroyVideoSessionKHR( VkDevice device, VkVideoSessionKHR videoSession, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyVideoSessionKHR( device, videoSession, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkGetVideoSessionMemoryRequirementsKHR( VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t * pMemoryRequirementsCount, + VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetVideoSessionMemoryRequirementsKHR( device, videoSession, pMemoryRequirementsCount, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE VkResult vkBindVideoSessionMemoryKHR( VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t bindSessionMemoryInfoCount, + VkBindVideoSessionMemoryInfoKHR const * pBindSessionMemoryInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindVideoSessionMemoryKHR( device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos ); + } + + VULKAN_HPP_INLINE VkResult vkCreateVideoSessionParametersKHR( VkDevice device, + VkVideoSessionParametersCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkVideoSessionParametersKHR * pVideoSessionParameters ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateVideoSessionParametersKHR( device, pCreateInfo, pAllocator, pVideoSessionParameters ); + } + + VULKAN_HPP_INLINE VkResult vkUpdateVideoSessionParametersKHR( VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + VkVideoSessionParametersUpdateInfoKHR const * pUpdateInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUpdateVideoSessionParametersKHR( device, videoSessionParameters, pUpdateInfo ); + } + + VULKAN_HPP_INLINE void vkDestroyVideoSessionParametersKHR( VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyVideoSessionParametersKHR( device, videoSessionParameters, pAllocator ); + } + + VULKAN_HPP_INLINE void vkCmdBeginVideoCodingKHR( VkCommandBuffer commandBuffer, VkVideoBeginCodingInfoKHR const * pBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginVideoCodingKHR( commandBuffer, pBeginInfo ); + } + + VULKAN_HPP_INLINE void vkCmdEndVideoCodingKHR( VkCommandBuffer commandBuffer, VkVideoEndCodingInfoKHR const * pEndCodingInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndVideoCodingKHR( commandBuffer, pEndCodingInfo ); + } + + VULKAN_HPP_INLINE void vkCmdControlVideoCodingKHR( VkCommandBuffer commandBuffer, + VkVideoCodingControlInfoKHR const * pCodingControlInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdControlVideoCodingKHR( commandBuffer, pCodingControlInfo ); + } + + //=== VK_KHR_video_decode_queue === + + VULKAN_HPP_INLINE void vkCmdDecodeVideoKHR( VkCommandBuffer commandBuffer, VkVideoDecodeInfoKHR const * pDecodeInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDecodeVideoKHR( commandBuffer, pDecodeInfo ); + } + + //=== VK_EXT_transform_feedback === + + VULKAN_HPP_INLINE void vkCmdBindTransformFeedbackBuffersEXT( VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + VkBuffer const * pBuffers, + VkDeviceSize const * pOffsets, + VkDeviceSize const * pSizes ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindTransformFeedbackBuffersEXT( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes ); + } + + VULKAN_HPP_INLINE void vkCmdBeginTransformFeedbackEXT( VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + VkBuffer const * pCounterBuffers, + VkDeviceSize const * pCounterBufferOffsets ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginTransformFeedbackEXT( commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets ); + } + + VULKAN_HPP_INLINE void vkCmdEndTransformFeedbackEXT( VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + VkBuffer const * pCounterBuffers, + VkDeviceSize const * pCounterBufferOffsets ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndTransformFeedbackEXT( commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets ); + } + + VULKAN_HPP_INLINE void vkCmdBeginQueryIndexedEXT( + VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginQueryIndexedEXT( commandBuffer, queryPool, query, flags, index ); + } + + VULKAN_HPP_INLINE void + vkCmdEndQueryIndexedEXT( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndQueryIndexedEXT( commandBuffer, queryPool, query, index ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndirectByteCountEXT( VkCommandBuffer commandBuffer, + uint32_t instanceCount, + uint32_t firstInstance, + VkBuffer counterBuffer, + VkDeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndirectByteCountEXT( commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride ); + } + + //=== VK_NVX_binary_import === + + VULKAN_HPP_INLINE VkResult vkCreateCuModuleNVX( VkDevice device, + VkCuModuleCreateInfoNVX const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkCuModuleNVX * pModule ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateCuModuleNVX( device, pCreateInfo, pAllocator, pModule ); + } + + VULKAN_HPP_INLINE VkResult vkCreateCuFunctionNVX( VkDevice device, + VkCuFunctionCreateInfoNVX const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkCuFunctionNVX * pFunction ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateCuFunctionNVX( device, pCreateInfo, pAllocator, pFunction ); + } + + VULKAN_HPP_INLINE void vkDestroyCuModuleNVX( VkDevice device, VkCuModuleNVX module, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyCuModuleNVX( device, module, pAllocator ); + } + + VULKAN_HPP_INLINE void + vkDestroyCuFunctionNVX( VkDevice device, VkCuFunctionNVX function, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyCuFunctionNVX( device, function, pAllocator ); + } + + VULKAN_HPP_INLINE void vkCmdCuLaunchKernelNVX( VkCommandBuffer commandBuffer, VkCuLaunchInfoNVX const * pLaunchInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCuLaunchKernelNVX( commandBuffer, pLaunchInfo ); + } + + //=== VK_NVX_image_view_handle === + + VULKAN_HPP_INLINE uint32_t vkGetImageViewHandleNVX( VkDevice device, VkImageViewHandleInfoNVX const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageViewHandleNVX( device, pInfo ); + } + + VULKAN_HPP_INLINE uint64_t vkGetImageViewHandle64NVX( VkDevice device, VkImageViewHandleInfoNVX const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageViewHandle64NVX( device, pInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetImageViewAddressNVX( VkDevice device, + VkImageView imageView, + VkImageViewAddressPropertiesNVX * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageViewAddressNVX( device, imageView, pProperties ); + } + + VULKAN_HPP_INLINE uint64_t vkGetDeviceCombinedImageSamplerIndexNVX( VkDevice device, + uint64_t imageViewIndex, + uint64_t samplerIndex ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceCombinedImageSamplerIndexNVX( device, imageViewIndex, samplerIndex ); + } + + //=== VK_AMD_draw_indirect_count === + + VULKAN_HPP_INLINE void vkCmdDrawIndirectCountAMD( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndirectCountAMD( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndexedIndirectCountAMD( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndexedIndirectCountAMD( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + } + + //=== VK_AMD_shader_info === + + VULKAN_HPP_INLINE VkResult vkGetShaderInfoAMD( VkDevice device, + VkPipeline pipeline, + VkShaderStageFlagBits shaderStage, + VkShaderInfoTypeAMD infoType, + size_t * pInfoSize, + void * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetShaderInfoAMD( device, pipeline, shaderStage, infoType, pInfoSize, pInfo ); + } + + //=== VK_KHR_dynamic_rendering === + + VULKAN_HPP_INLINE void vkCmdBeginRenderingKHR( VkCommandBuffer commandBuffer, VkRenderingInfo const * pRenderingInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginRenderingKHR( commandBuffer, pRenderingInfo ); + } + + VULKAN_HPP_INLINE void vkCmdEndRenderingKHR( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndRenderingKHR( commandBuffer ); + } + +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + VULKAN_HPP_INLINE VkResult vkCreateStreamDescriptorSurfaceGGP( VkInstance instance, + VkStreamDescriptorSurfaceCreateInfoGGP const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateStreamDescriptorSurfaceGGP( instance, pCreateInfo, pAllocator, pSurface ); + } +# endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + + VULKAN_HPP_INLINE VkResult + vkGetPhysicalDeviceExternalImageFormatPropertiesNV( VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkExternalMemoryHandleTypeFlagsNV externalHandleType, + VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties ); + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + + VULKAN_HPP_INLINE VkResult vkGetMemoryWin32HandleNV( VkDevice device, + VkDeviceMemory memory, + VkExternalMemoryHandleTypeFlagsNV handleType, + HANDLE * pHandle ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryWin32HandleNV( device, memory, handleType, pHandle ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_get_physical_device_properties2 === + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceFeatures2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2 * pFeatures ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceFeatures2KHR( physicalDevice, pFeatures ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceProperties2KHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties2 * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceProperties2KHR( physicalDevice, pProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceFormatProperties2KHR( VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties2 * pFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceFormatProperties2KHR( physicalDevice, format, pFormatProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceImageFormatInfo2 const * pImageFormatInfo, + VkImageFormatProperties2 * pImageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceImageFormatProperties2KHR( physicalDevice, pImageFormatInfo, pImageFormatProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceQueueFamilyProperties2KHR( VkPhysicalDevice physicalDevice, + uint32_t * pQueueFamilyPropertyCount, + VkQueueFamilyProperties2 * pQueueFamilyProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceQueueFamilyProperties2KHR( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceMemoryProperties2KHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceMemoryProperties2KHR( physicalDevice, pMemoryProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceSparseImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceSparseImageFormatInfo2 const * pFormatInfo, + uint32_t * pPropertyCount, + VkSparseImageFormatProperties2 * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSparseImageFormatProperties2KHR( physicalDevice, pFormatInfo, pPropertyCount, pProperties ); + } + + //=== VK_KHR_device_group === + + VULKAN_HPP_INLINE void vkGetDeviceGroupPeerMemoryFeaturesKHR( VkDevice device, + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceGroupPeerMemoryFeaturesKHR( device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures ); + } + + VULKAN_HPP_INLINE void vkCmdSetDeviceMaskKHR( VkCommandBuffer commandBuffer, uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDeviceMaskKHR( commandBuffer, deviceMask ); + } + + VULKAN_HPP_INLINE void vkCmdDispatchBaseKHR( VkCommandBuffer commandBuffer, + uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDispatchBaseKHR( commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); + } + +# if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + VULKAN_HPP_INLINE VkResult vkCreateViSurfaceNN( VkInstance instance, + VkViSurfaceCreateInfoNN const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateViSurfaceNN( instance, pCreateInfo, pAllocator, pSurface ); + } +# endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_maintenance1 === + + VULKAN_HPP_INLINE void vkTrimCommandPoolKHR( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT + { + return ::vkTrimCommandPoolKHR( device, commandPool, flags ); + } + + //=== VK_KHR_device_group_creation === + + VULKAN_HPP_INLINE VkResult vkEnumeratePhysicalDeviceGroupsKHR( + VkInstance instance, uint32_t * pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumeratePhysicalDeviceGroupsKHR( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties ); + } + + //=== VK_KHR_external_memory_capabilities === + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceExternalBufferPropertiesKHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceExternalBufferInfo const * pExternalBufferInfo, + VkExternalBufferProperties * pExternalBufferProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceExternalBufferPropertiesKHR( physicalDevice, pExternalBufferInfo, pExternalBufferProperties ); + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + + VULKAN_HPP_INLINE VkResult vkGetMemoryWin32HandleKHR( VkDevice device, + VkMemoryGetWin32HandleInfoKHR const * pGetWin32HandleInfo, + HANDLE * pHandle ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); + } + + VULKAN_HPP_INLINE VkResult + vkGetMemoryWin32HandlePropertiesKHR( VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle, + VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryWin32HandlePropertiesKHR( device, handleType, handle, pMemoryWin32HandleProperties ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + + VULKAN_HPP_INLINE VkResult vkGetMemoryFdKHR( VkDevice device, VkMemoryGetFdInfoKHR const * pGetFdInfo, int * pFd ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryFdKHR( device, pGetFdInfo, pFd ); + } + + VULKAN_HPP_INLINE VkResult vkGetMemoryFdPropertiesKHR( VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + int fd, + VkMemoryFdPropertiesKHR * pMemoryFdProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryFdPropertiesKHR( device, handleType, fd, pMemoryFdProperties ); + } + + //=== VK_KHR_external_semaphore_capabilities === + + VULKAN_HPP_INLINE void + vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceExternalSemaphoreInfo const * pExternalSemaphoreInfo, + VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties ); + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + + VULKAN_HPP_INLINE VkResult vkImportSemaphoreWin32HandleKHR( + VkDevice device, VkImportSemaphoreWin32HandleInfoKHR const * pImportSemaphoreWin32HandleInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkImportSemaphoreWin32HandleKHR( device, pImportSemaphoreWin32HandleInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetSemaphoreWin32HandleKHR( VkDevice device, + VkSemaphoreGetWin32HandleInfoKHR const * pGetWin32HandleInfo, + HANDLE * pHandle ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSemaphoreWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + + VULKAN_HPP_INLINE VkResult vkImportSemaphoreFdKHR( VkDevice device, VkImportSemaphoreFdInfoKHR const * pImportSemaphoreFdInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkImportSemaphoreFdKHR( device, pImportSemaphoreFdInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetSemaphoreFdKHR( VkDevice device, VkSemaphoreGetFdInfoKHR const * pGetFdInfo, int * pFd ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSemaphoreFdKHR( device, pGetFdInfo, pFd ); + } + + //=== VK_KHR_push_descriptor === + + VULKAN_HPP_INLINE void vkCmdPushDescriptorSetKHR( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + VkWriteDescriptorSet const * pDescriptorWrites ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushDescriptorSetKHR( commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites ); + } + + VULKAN_HPP_INLINE void vkCmdPushDescriptorSetWithTemplateKHR( VkCommandBuffer commandBuffer, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + VkPipelineLayout layout, + uint32_t set, + void const * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushDescriptorSetWithTemplateKHR( commandBuffer, descriptorUpdateTemplate, layout, set, pData ); + } + + //=== VK_EXT_conditional_rendering === + + VULKAN_HPP_INLINE void + vkCmdBeginConditionalRenderingEXT( VkCommandBuffer commandBuffer, + VkConditionalRenderingBeginInfoEXT const * pConditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginConditionalRenderingEXT( commandBuffer, pConditionalRenderingBegin ); + } + + VULKAN_HPP_INLINE void vkCmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndConditionalRenderingEXT( commandBuffer ); + } + + //=== VK_KHR_descriptor_update_template === + + VULKAN_HPP_INLINE VkResult vkCreateDescriptorUpdateTemplateKHR( VkDevice device, + VkDescriptorUpdateTemplateCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDescriptorUpdateTemplateKHR( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate ); + } + + VULKAN_HPP_INLINE void vkDestroyDescriptorUpdateTemplateKHR( VkDevice device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDescriptorUpdateTemplateKHR( device, descriptorUpdateTemplate, pAllocator ); + } + + VULKAN_HPP_INLINE void vkUpdateDescriptorSetWithTemplateKHR( VkDevice device, + VkDescriptorSet descriptorSet, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + void const * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUpdateDescriptorSetWithTemplateKHR( device, descriptorSet, descriptorUpdateTemplate, pData ); + } + + //=== VK_NV_clip_space_w_scaling === + + VULKAN_HPP_INLINE void vkCmdSetViewportWScalingNV( VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + VkViewportWScalingNV const * pViewportWScalings ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetViewportWScalingNV( commandBuffer, firstViewport, viewportCount, pViewportWScalings ); + } + + //=== VK_EXT_direct_mode_display === + + VULKAN_HPP_INLINE VkResult vkReleaseDisplayEXT( VkPhysicalDevice physicalDevice, VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT + { + return ::vkReleaseDisplayEXT( physicalDevice, display ); + } + +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + + VULKAN_HPP_INLINE VkResult vkAcquireXlibDisplayEXT( VkPhysicalDevice physicalDevice, Display * dpy, VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquireXlibDisplayEXT( physicalDevice, dpy, display ); + } + + VULKAN_HPP_INLINE VkResult vkGetRandROutputDisplayEXT( VkPhysicalDevice physicalDevice, + Display * dpy, + RROutput rrOutput, + VkDisplayKHR * pDisplay ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRandROutputDisplayEXT( physicalDevice, dpy, rrOutput, pDisplay ); + } +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT( VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSurfaceCapabilities2EXT( physicalDevice, surface, pSurfaceCapabilities ); + } + + //=== VK_EXT_display_control === + + VULKAN_HPP_INLINE VkResult vkDisplayPowerControlEXT( VkDevice device, + VkDisplayKHR display, + VkDisplayPowerInfoEXT const * pDisplayPowerInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDisplayPowerControlEXT( device, display, pDisplayPowerInfo ); + } + + VULKAN_HPP_INLINE VkResult vkRegisterDeviceEventEXT( VkDevice device, + VkDeviceEventInfoEXT const * pDeviceEventInfo, + VkAllocationCallbacks const * pAllocator, + VkFence * pFence ) const VULKAN_HPP_NOEXCEPT + { + return ::vkRegisterDeviceEventEXT( device, pDeviceEventInfo, pAllocator, pFence ); + } + + VULKAN_HPP_INLINE VkResult vkRegisterDisplayEventEXT( VkDevice device, + VkDisplayKHR display, + VkDisplayEventInfoEXT const * pDisplayEventInfo, + VkAllocationCallbacks const * pAllocator, + VkFence * pFence ) const VULKAN_HPP_NOEXCEPT + { + return ::vkRegisterDisplayEventEXT( device, display, pDisplayEventInfo, pAllocator, pFence ); + } + + VULKAN_HPP_INLINE VkResult vkGetSwapchainCounterEXT( VkDevice device, + VkSwapchainKHR swapchain, + VkSurfaceCounterFlagBitsEXT counter, + uint64_t * pCounterValue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSwapchainCounterEXT( device, swapchain, counter, pCounterValue ); + } + + //=== VK_GOOGLE_display_timing === + + VULKAN_HPP_INLINE VkResult vkGetRefreshCycleDurationGOOGLE( VkDevice device, + VkSwapchainKHR swapchain, + VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRefreshCycleDurationGOOGLE( device, swapchain, pDisplayTimingProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetPastPresentationTimingGOOGLE( VkDevice device, + VkSwapchainKHR swapchain, + uint32_t * pPresentationTimingCount, + VkPastPresentationTimingGOOGLE * pPresentationTimings ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPastPresentationTimingGOOGLE( device, swapchain, pPresentationTimingCount, pPresentationTimings ); + } + + //=== VK_EXT_discard_rectangles === + + VULKAN_HPP_INLINE void vkCmdSetDiscardRectangleEXT( VkCommandBuffer commandBuffer, + uint32_t firstDiscardRectangle, + uint32_t discardRectangleCount, + VkRect2D const * pDiscardRectangles ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDiscardRectangleEXT( commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles ); + } + + VULKAN_HPP_INLINE void vkCmdSetDiscardRectangleEnableEXT( VkCommandBuffer commandBuffer, VkBool32 discardRectangleEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDiscardRectangleEnableEXT( commandBuffer, discardRectangleEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetDiscardRectangleModeEXT( VkCommandBuffer commandBuffer, + VkDiscardRectangleModeEXT discardRectangleMode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDiscardRectangleModeEXT( commandBuffer, discardRectangleMode ); + } + + //=== VK_EXT_hdr_metadata === + + VULKAN_HPP_INLINE void vkSetHdrMetadataEXT( VkDevice device, + uint32_t swapchainCount, + VkSwapchainKHR const * pSwapchains, + VkHdrMetadataEXT const * pMetadata ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetHdrMetadataEXT( device, swapchainCount, pSwapchains, pMetadata ); + } + + //=== VK_KHR_create_renderpass2 === + + VULKAN_HPP_INLINE VkResult vkCreateRenderPass2KHR( VkDevice device, + VkRenderPassCreateInfo2 const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkRenderPass * pRenderPass ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateRenderPass2KHR( device, pCreateInfo, pAllocator, pRenderPass ); + } + + VULKAN_HPP_INLINE void vkCmdBeginRenderPass2KHR( VkCommandBuffer commandBuffer, + VkRenderPassBeginInfo const * pRenderPassBegin, + VkSubpassBeginInfo const * pSubpassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginRenderPass2KHR( commandBuffer, pRenderPassBegin, pSubpassBeginInfo ); + } + + VULKAN_HPP_INLINE void vkCmdNextSubpass2KHR( VkCommandBuffer commandBuffer, + VkSubpassBeginInfo const * pSubpassBeginInfo, + VkSubpassEndInfo const * pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdNextSubpass2KHR( commandBuffer, pSubpassBeginInfo, pSubpassEndInfo ); + } + + VULKAN_HPP_INLINE void vkCmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, VkSubpassEndInfo const * pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndRenderPass2KHR( commandBuffer, pSubpassEndInfo ); + } + + //=== VK_KHR_shared_presentable_image === + + VULKAN_HPP_INLINE VkResult vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSwapchainStatusKHR( device, swapchain ); + } + + //=== VK_KHR_external_fence_capabilities === + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceExternalFencePropertiesKHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceExternalFenceInfo const * pExternalFenceInfo, + VkExternalFenceProperties * pExternalFenceProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceExternalFencePropertiesKHR( physicalDevice, pExternalFenceInfo, pExternalFenceProperties ); + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + + VULKAN_HPP_INLINE VkResult vkImportFenceWin32HandleKHR( VkDevice device, + VkImportFenceWin32HandleInfoKHR const * pImportFenceWin32HandleInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkImportFenceWin32HandleKHR( device, pImportFenceWin32HandleInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetFenceWin32HandleKHR( VkDevice device, + VkFenceGetWin32HandleInfoKHR const * pGetWin32HandleInfo, + HANDLE * pHandle ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetFenceWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + + VULKAN_HPP_INLINE VkResult vkImportFenceFdKHR( VkDevice device, VkImportFenceFdInfoKHR const * pImportFenceFdInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkImportFenceFdKHR( device, pImportFenceFdInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetFenceFdKHR( VkDevice device, VkFenceGetFdInfoKHR const * pGetFdInfo, int * pFd ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetFenceFdKHR( device, pGetFdInfo, pFd ); + } + + //=== VK_KHR_performance_query === + + VULKAN_HPP_INLINE VkResult + vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t * pCounterCount, + VkPerformanceCounterKHR * pCounters, + VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( VkPhysicalDevice physicalDevice, + VkQueryPoolPerformanceCreateInfoKHR const * pPerformanceQueryCreateInfo, + uint32_t * pNumPasses ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( physicalDevice, pPerformanceQueryCreateInfo, pNumPasses ); + } + + VULKAN_HPP_INLINE VkResult vkAcquireProfilingLockKHR( VkDevice device, VkAcquireProfilingLockInfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquireProfilingLockKHR( device, pInfo ); + } + + VULKAN_HPP_INLINE void vkReleaseProfilingLockKHR( VkDevice device ) const VULKAN_HPP_NOEXCEPT + { + return ::vkReleaseProfilingLockKHR( device ); + } + + //=== VK_KHR_get_surface_capabilities2 === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, + VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSurfaceCapabilities2KHR( physicalDevice, pSurfaceInfo, pSurfaceCapabilities ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceSurfaceFormats2KHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, + uint32_t * pSurfaceFormatCount, + VkSurfaceFormat2KHR * pSurfaceFormats ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSurfaceFormats2KHR( physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats ); + } + + //=== VK_KHR_get_display_properties2 === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceDisplayProperties2KHR( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkDisplayProperties2KHR * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceDisplayProperties2KHR( physicalDevice, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkDisplayPlaneProperties2KHR * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceDisplayPlaneProperties2KHR( physicalDevice, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetDisplayModeProperties2KHR( VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + uint32_t * pPropertyCount, + VkDisplayModeProperties2KHR * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDisplayModeProperties2KHR( physicalDevice, display, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetDisplayPlaneCapabilities2KHR( VkPhysicalDevice physicalDevice, + VkDisplayPlaneInfo2KHR const * pDisplayPlaneInfo, + VkDisplayPlaneCapabilities2KHR * pCapabilities ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDisplayPlaneCapabilities2KHR( physicalDevice, pDisplayPlaneInfo, pCapabilities ); + } + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + VULKAN_HPP_INLINE VkResult vkCreateIOSSurfaceMVK( VkInstance instance, + VkIOSSurfaceCreateInfoMVK const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateIOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface ); + } +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + VULKAN_HPP_INLINE VkResult vkCreateMacOSSurfaceMVK( VkInstance instance, + VkMacOSSurfaceCreateInfoMVK const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateMacOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface ); + } +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + VULKAN_HPP_INLINE VkResult vkSetDebugUtilsObjectNameEXT( VkDevice device, VkDebugUtilsObjectNameInfoEXT const * pNameInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetDebugUtilsObjectNameEXT( device, pNameInfo ); + } + + VULKAN_HPP_INLINE VkResult vkSetDebugUtilsObjectTagEXT( VkDevice device, VkDebugUtilsObjectTagInfoEXT const * pTagInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetDebugUtilsObjectTagEXT( device, pTagInfo ); + } + + VULKAN_HPP_INLINE void vkQueueBeginDebugUtilsLabelEXT( VkQueue queue, VkDebugUtilsLabelEXT const * pLabelInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueBeginDebugUtilsLabelEXT( queue, pLabelInfo ); + } + + VULKAN_HPP_INLINE void vkQueueEndDebugUtilsLabelEXT( VkQueue queue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueEndDebugUtilsLabelEXT( queue ); + } + + VULKAN_HPP_INLINE void vkQueueInsertDebugUtilsLabelEXT( VkQueue queue, VkDebugUtilsLabelEXT const * pLabelInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueInsertDebugUtilsLabelEXT( queue, pLabelInfo ); + } + + VULKAN_HPP_INLINE void vkCmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, VkDebugUtilsLabelEXT const * pLabelInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginDebugUtilsLabelEXT( commandBuffer, pLabelInfo ); + } + + VULKAN_HPP_INLINE void vkCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndDebugUtilsLabelEXT( commandBuffer ); + } + + VULKAN_HPP_INLINE void vkCmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, VkDebugUtilsLabelEXT const * pLabelInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdInsertDebugUtilsLabelEXT( commandBuffer, pLabelInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCreateDebugUtilsMessengerEXT( VkInstance instance, + VkDebugUtilsMessengerCreateInfoEXT const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkDebugUtilsMessengerEXT * pMessenger ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDebugUtilsMessengerEXT( instance, pCreateInfo, pAllocator, pMessenger ); + } + + VULKAN_HPP_INLINE void vkDestroyDebugUtilsMessengerEXT( VkInstance instance, + VkDebugUtilsMessengerEXT messenger, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDebugUtilsMessengerEXT( instance, messenger, pAllocator ); + } + + VULKAN_HPP_INLINE void vkSubmitDebugUtilsMessageEXT( VkInstance instance, + VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, + VkDebugUtilsMessengerCallbackDataEXT const * pCallbackData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSubmitDebugUtilsMessageEXT( instance, messageSeverity, messageTypes, pCallbackData ); + } + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + + VULKAN_HPP_INLINE VkResult vkGetAndroidHardwareBufferPropertiesANDROID( VkDevice device, + struct AHardwareBuffer const * buffer, + VkAndroidHardwareBufferPropertiesANDROID * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetAndroidHardwareBufferPropertiesANDROID( device, buffer, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetMemoryAndroidHardwareBufferANDROID( VkDevice device, + VkMemoryGetAndroidHardwareBufferInfoANDROID const * pInfo, + struct AHardwareBuffer ** pBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryAndroidHardwareBufferANDROID( device, pInfo, pBuffer ); + } +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + + VULKAN_HPP_INLINE VkResult vkCreateExecutionGraphPipelinesAMDX( VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + VkExecutionGraphPipelineCreateInfoAMDX const * pCreateInfos, + VkAllocationCallbacks const * pAllocator, + VkPipeline * pPipelines ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateExecutionGraphPipelinesAMDX( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + } + + VULKAN_HPP_INLINE VkResult vkGetExecutionGraphPipelineScratchSizeAMDX( VkDevice device, + VkPipeline executionGraph, + VkExecutionGraphPipelineScratchSizeAMDX * pSizeInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetExecutionGraphPipelineScratchSizeAMDX( device, executionGraph, pSizeInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetExecutionGraphPipelineNodeIndexAMDX( VkDevice device, + VkPipeline executionGraph, + VkPipelineShaderStageNodeCreateInfoAMDX const * pNodeInfo, + uint32_t * pNodeIndex ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetExecutionGraphPipelineNodeIndexAMDX( device, executionGraph, pNodeInfo, pNodeIndex ); + } + + VULKAN_HPP_INLINE void vkCmdInitializeGraphScratchMemoryAMDX( VkCommandBuffer commandBuffer, + VkPipeline executionGraph, + VkDeviceAddress scratch, + VkDeviceSize scratchSize ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdInitializeGraphScratchMemoryAMDX( commandBuffer, executionGraph, scratch, scratchSize ); + } + + VULKAN_HPP_INLINE void vkCmdDispatchGraphAMDX( VkCommandBuffer commandBuffer, + VkDeviceAddress scratch, + VkDeviceSize scratchSize, + VkDispatchGraphCountInfoAMDX const * pCountInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDispatchGraphAMDX( commandBuffer, scratch, scratchSize, pCountInfo ); + } + + VULKAN_HPP_INLINE void vkCmdDispatchGraphIndirectAMDX( VkCommandBuffer commandBuffer, + VkDeviceAddress scratch, + VkDeviceSize scratchSize, + VkDispatchGraphCountInfoAMDX const * pCountInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDispatchGraphIndirectAMDX( commandBuffer, scratch, scratchSize, pCountInfo ); + } + + VULKAN_HPP_INLINE void vkCmdDispatchGraphIndirectCountAMDX( VkCommandBuffer commandBuffer, + VkDeviceAddress scratch, + VkDeviceSize scratchSize, + VkDeviceAddress countInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDispatchGraphIndirectCountAMDX( commandBuffer, scratch, scratchSize, countInfo ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + + VULKAN_HPP_INLINE VkResult vkWriteSamplerDescriptorsEXT( VkDevice device, + uint32_t samplerCount, + VkSamplerCreateInfo const * pSamplers, + VkHostAddressRangeEXT const * pDescriptors ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWriteSamplerDescriptorsEXT( device, samplerCount, pSamplers, pDescriptors ); + } + + VULKAN_HPP_INLINE VkResult vkWriteResourceDescriptorsEXT( VkDevice device, + uint32_t resourceCount, + VkResourceDescriptorInfoEXT const * pResources, + VkHostAddressRangeEXT const * pDescriptors ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWriteResourceDescriptorsEXT( device, resourceCount, pResources, pDescriptors ); + } + + VULKAN_HPP_INLINE void vkCmdBindSamplerHeapEXT( VkCommandBuffer commandBuffer, VkBindHeapInfoEXT const * pBindInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindSamplerHeapEXT( commandBuffer, pBindInfo ); + } + + VULKAN_HPP_INLINE void vkCmdBindResourceHeapEXT( VkCommandBuffer commandBuffer, VkBindHeapInfoEXT const * pBindInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindResourceHeapEXT( commandBuffer, pBindInfo ); + } + + VULKAN_HPP_INLINE void vkCmdPushDataEXT( VkCommandBuffer commandBuffer, VkPushDataInfoEXT const * pPushDataInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushDataEXT( commandBuffer, pPushDataInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetImageOpaqueCaptureDataEXT( VkDevice device, + uint32_t imageCount, + VkImage const * pImages, + VkHostAddressRangeEXT * pDatas ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageOpaqueCaptureDataEXT( device, imageCount, pImages, pDatas ); + } + + VULKAN_HPP_INLINE VkDeviceSize vkGetPhysicalDeviceDescriptorSizeEXT( VkPhysicalDevice physicalDevice, + VkDescriptorType descriptorType ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceDescriptorSizeEXT( physicalDevice, descriptorType ); + } + + VULKAN_HPP_INLINE VkResult vkRegisterCustomBorderColorEXT( VkDevice device, + VkSamplerCustomBorderColorCreateInfoEXT const * pBorderColor, + VkBool32 requestIndex, + uint32_t * pIndex ) const VULKAN_HPP_NOEXCEPT + { + return ::vkRegisterCustomBorderColorEXT( device, pBorderColor, requestIndex, pIndex ); + } + + VULKAN_HPP_INLINE void vkUnregisterCustomBorderColorEXT( VkDevice device, uint32_t index ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUnregisterCustomBorderColorEXT( device, index ); + } + + VULKAN_HPP_INLINE VkResult vkGetTensorOpaqueCaptureDataARM( VkDevice device, + uint32_t tensorCount, + VkTensorARM const * pTensors, + VkHostAddressRangeEXT * pDatas ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetTensorOpaqueCaptureDataARM( device, tensorCount, pTensors, pDatas ); + } + + //=== VK_EXT_sample_locations === + + VULKAN_HPP_INLINE void vkCmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, + VkSampleLocationsInfoEXT const * pSampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetSampleLocationsEXT( commandBuffer, pSampleLocationsInfo ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceMultisamplePropertiesEXT( VkPhysicalDevice physicalDevice, + VkSampleCountFlagBits samples, + VkMultisamplePropertiesEXT * pMultisampleProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceMultisamplePropertiesEXT( physicalDevice, samples, pMultisampleProperties ); + } + + //=== VK_KHR_get_memory_requirements2 === + + VULKAN_HPP_INLINE void vkGetImageMemoryRequirements2KHR( VkDevice device, + VkImageMemoryRequirementsInfo2 const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageMemoryRequirements2KHR( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkGetBufferMemoryRequirements2KHR( VkDevice device, + VkBufferMemoryRequirementsInfo2 const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferMemoryRequirements2KHR( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkGetImageSparseMemoryRequirements2KHR( VkDevice device, + VkImageSparseMemoryRequirementsInfo2 const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageSparseMemoryRequirements2KHR( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); + } + + //=== VK_KHR_acceleration_structure === + + VULKAN_HPP_INLINE VkResult vkCreateAccelerationStructureKHR( VkDevice device, + VkAccelerationStructureCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkAccelerationStructureKHR * pAccelerationStructure ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateAccelerationStructureKHR( device, pCreateInfo, pAllocator, pAccelerationStructure ); + } + + VULKAN_HPP_INLINE void vkDestroyAccelerationStructureKHR( VkDevice device, + VkAccelerationStructureKHR accelerationStructure, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyAccelerationStructureKHR( device, accelerationStructure, pAllocator ); + } + + VULKAN_HPP_INLINE void + vkCmdBuildAccelerationStructuresKHR( VkCommandBuffer commandBuffer, + uint32_t infoCount, + VkAccelerationStructureBuildGeometryInfoKHR const * pInfos, + VkAccelerationStructureBuildRangeInfoKHR const * const * ppBuildRangeInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBuildAccelerationStructuresKHR( commandBuffer, infoCount, pInfos, ppBuildRangeInfos ); + } + + VULKAN_HPP_INLINE void vkCmdBuildAccelerationStructuresIndirectKHR( VkCommandBuffer commandBuffer, + uint32_t infoCount, + VkAccelerationStructureBuildGeometryInfoKHR const * pInfos, + VkDeviceAddress const * pIndirectDeviceAddresses, + uint32_t const * pIndirectStrides, + uint32_t const * const * ppMaxPrimitiveCounts ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBuildAccelerationStructuresIndirectKHR( + commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts ); + } + + VULKAN_HPP_INLINE VkResult + vkBuildAccelerationStructuresKHR( VkDevice device, + VkDeferredOperationKHR deferredOperation, + uint32_t infoCount, + VkAccelerationStructureBuildGeometryInfoKHR const * pInfos, + VkAccelerationStructureBuildRangeInfoKHR const * const * ppBuildRangeInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBuildAccelerationStructuresKHR( device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos ); + } + + VULKAN_HPP_INLINE VkResult vkCopyAccelerationStructureKHR( VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkCopyAccelerationStructureInfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyAccelerationStructureKHR( device, deferredOperation, pInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCopyAccelerationStructureToMemoryKHR( VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkCopyAccelerationStructureToMemoryInfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyAccelerationStructureToMemoryKHR( device, deferredOperation, pInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCopyMemoryToAccelerationStructureKHR( VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkCopyMemoryToAccelerationStructureInfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyMemoryToAccelerationStructureKHR( device, deferredOperation, pInfo ); + } + + VULKAN_HPP_INLINE VkResult vkWriteAccelerationStructuresPropertiesKHR( VkDevice device, + uint32_t accelerationStructureCount, + VkAccelerationStructureKHR const * pAccelerationStructures, + VkQueryType queryType, + size_t dataSize, + void * pData, + size_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWriteAccelerationStructuresPropertiesKHR( device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride ); + } + + VULKAN_HPP_INLINE void vkCmdCopyAccelerationStructureKHR( VkCommandBuffer commandBuffer, + VkCopyAccelerationStructureInfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyAccelerationStructureKHR( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyAccelerationStructureToMemoryKHR( VkCommandBuffer commandBuffer, + VkCopyAccelerationStructureToMemoryInfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyAccelerationStructureToMemoryKHR( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyMemoryToAccelerationStructureKHR( VkCommandBuffer commandBuffer, + VkCopyMemoryToAccelerationStructureInfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyMemoryToAccelerationStructureKHR( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE VkDeviceAddress + vkGetAccelerationStructureDeviceAddressKHR( VkDevice device, VkAccelerationStructureDeviceAddressInfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetAccelerationStructureDeviceAddressKHR( device, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdWriteAccelerationStructuresPropertiesKHR( VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + VkAccelerationStructureKHR const * pAccelerationStructures, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteAccelerationStructuresPropertiesKHR( + commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery ); + } + + VULKAN_HPP_INLINE void + vkGetDeviceAccelerationStructureCompatibilityKHR( VkDevice device, + VkAccelerationStructureVersionInfoKHR const * pVersionInfo, + VkAccelerationStructureCompatibilityKHR * pCompatibility ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceAccelerationStructureCompatibilityKHR( device, pVersionInfo, pCompatibility ); + } + + VULKAN_HPP_INLINE void vkGetAccelerationStructureBuildSizesKHR( VkDevice device, + VkAccelerationStructureBuildTypeKHR buildType, + VkAccelerationStructureBuildGeometryInfoKHR const * pBuildInfo, + uint32_t const * pMaxPrimitiveCounts, + VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetAccelerationStructureBuildSizesKHR( device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo ); + } + + //=== VK_KHR_ray_tracing_pipeline === + + VULKAN_HPP_INLINE void vkCmdTraceRaysKHR( VkCommandBuffer commandBuffer, + VkStridedDeviceAddressRegionKHR const * pRaygenShaderBindingTable, + VkStridedDeviceAddressRegionKHR const * pMissShaderBindingTable, + VkStridedDeviceAddressRegionKHR const * pHitShaderBindingTable, + VkStridedDeviceAddressRegionKHR const * pCallableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdTraceRaysKHR( + commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth ); + } + + VULKAN_HPP_INLINE VkResult vkCreateRayTracingPipelinesKHR( VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + VkRayTracingPipelineCreateInfoKHR const * pCreateInfos, + VkAllocationCallbacks const * pAllocator, + VkPipeline * pPipelines ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateRayTracingPipelinesKHR( device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + } + + VULKAN_HPP_INLINE VkResult vkGetRayTracingShaderGroupHandlesKHR( + VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRayTracingShaderGroupHandlesKHR( device, pipeline, firstGroup, groupCount, dataSize, pData ); + } + + VULKAN_HPP_INLINE VkResult vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( device, pipeline, firstGroup, groupCount, dataSize, pData ); + } + + VULKAN_HPP_INLINE void vkCmdTraceRaysIndirectKHR( VkCommandBuffer commandBuffer, + VkStridedDeviceAddressRegionKHR const * pRaygenShaderBindingTable, + VkStridedDeviceAddressRegionKHR const * pMissShaderBindingTable, + VkStridedDeviceAddressRegionKHR const * pHitShaderBindingTable, + VkStridedDeviceAddressRegionKHR const * pCallableShaderBindingTable, + VkDeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdTraceRaysIndirectKHR( + commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress ); + } + + VULKAN_HPP_INLINE VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR( VkDevice device, + VkPipeline pipeline, + uint32_t group, + VkShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRayTracingShaderGroupStackSizeKHR( device, pipeline, group, groupShader ); + } + + VULKAN_HPP_INLINE void vkCmdSetRayTracingPipelineStackSizeKHR( VkCommandBuffer commandBuffer, uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRayTracingPipelineStackSizeKHR( commandBuffer, pipelineStackSize ); + } + + //=== VK_KHR_sampler_ycbcr_conversion === + + VULKAN_HPP_INLINE VkResult vkCreateSamplerYcbcrConversionKHR( VkDevice device, + VkSamplerYcbcrConversionCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSamplerYcbcrConversion * pYcbcrConversion ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateSamplerYcbcrConversionKHR( device, pCreateInfo, pAllocator, pYcbcrConversion ); + } + + VULKAN_HPP_INLINE void vkDestroySamplerYcbcrConversionKHR( VkDevice device, + VkSamplerYcbcrConversion ycbcrConversion, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroySamplerYcbcrConversionKHR( device, ycbcrConversion, pAllocator ); + } + + //=== VK_KHR_bind_memory2 === + + VULKAN_HPP_INLINE VkResult vkBindBufferMemory2KHR( VkDevice device, + uint32_t bindInfoCount, + VkBindBufferMemoryInfo const * pBindInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindBufferMemory2KHR( device, bindInfoCount, pBindInfos ); + } + + VULKAN_HPP_INLINE VkResult vkBindImageMemory2KHR( VkDevice device, + uint32_t bindInfoCount, + VkBindImageMemoryInfo const * pBindInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindImageMemory2KHR( device, bindInfoCount, pBindInfos ); + } + + //=== VK_EXT_image_drm_format_modifier === + + VULKAN_HPP_INLINE VkResult vkGetImageDrmFormatModifierPropertiesEXT( VkDevice device, + VkImage image, + VkImageDrmFormatModifierPropertiesEXT * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageDrmFormatModifierPropertiesEXT( device, image, pProperties ); + } + + //=== VK_EXT_validation_cache === + + VULKAN_HPP_INLINE VkResult vkCreateValidationCacheEXT( VkDevice device, + VkValidationCacheCreateInfoEXT const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkValidationCacheEXT * pValidationCache ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateValidationCacheEXT( device, pCreateInfo, pAllocator, pValidationCache ); + } + + VULKAN_HPP_INLINE void + vkDestroyValidationCacheEXT( VkDevice device, VkValidationCacheEXT validationCache, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyValidationCacheEXT( device, validationCache, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkMergeValidationCachesEXT( VkDevice device, + VkValidationCacheEXT dstCache, + uint32_t srcCacheCount, + VkValidationCacheEXT const * pSrcCaches ) const VULKAN_HPP_NOEXCEPT + { + return ::vkMergeValidationCachesEXT( device, dstCache, srcCacheCount, pSrcCaches ); + } + + VULKAN_HPP_INLINE VkResult vkGetValidationCacheDataEXT( VkDevice device, + VkValidationCacheEXT validationCache, + size_t * pDataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetValidationCacheDataEXT( device, validationCache, pDataSize, pData ); + } + + //=== VK_NV_shading_rate_image === + + VULKAN_HPP_INLINE void + vkCmdBindShadingRateImageNV( VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindShadingRateImageNV( commandBuffer, imageView, imageLayout ); + } + + VULKAN_HPP_INLINE void vkCmdSetViewportShadingRatePaletteNV( VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + VkShadingRatePaletteNV const * pShadingRatePalettes ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetViewportShadingRatePaletteNV( commandBuffer, firstViewport, viewportCount, pShadingRatePalettes ); + } + + VULKAN_HPP_INLINE void vkCmdSetCoarseSampleOrderNV( VkCommandBuffer commandBuffer, + VkCoarseSampleOrderTypeNV sampleOrderType, + uint32_t customSampleOrderCount, + VkCoarseSampleOrderCustomNV const * pCustomSampleOrders ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetCoarseSampleOrderNV( commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders ); + } + + //=== VK_NV_ray_tracing === + + VULKAN_HPP_INLINE VkResult vkCreateAccelerationStructureNV( VkDevice device, + VkAccelerationStructureCreateInfoNV const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkAccelerationStructureNV * pAccelerationStructure ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateAccelerationStructureNV( device, pCreateInfo, pAllocator, pAccelerationStructure ); + } + + VULKAN_HPP_INLINE void vkDestroyAccelerationStructureNV( VkDevice device, + VkAccelerationStructureNV accelerationStructure, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyAccelerationStructureNV( device, accelerationStructure, pAllocator ); + } + + VULKAN_HPP_INLINE void vkGetAccelerationStructureMemoryRequirementsNV( VkDevice device, + VkAccelerationStructureMemoryRequirementsInfoNV const * pInfo, + VkMemoryRequirements2KHR * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetAccelerationStructureMemoryRequirementsNV( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE VkResult vkBindAccelerationStructureMemoryNV( VkDevice device, + uint32_t bindInfoCount, + VkBindAccelerationStructureMemoryInfoNV const * pBindInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindAccelerationStructureMemoryNV( device, bindInfoCount, pBindInfos ); + } + + VULKAN_HPP_INLINE void vkCmdBuildAccelerationStructureNV( VkCommandBuffer commandBuffer, + VkAccelerationStructureInfoNV const * pInfo, + VkBuffer instanceData, + VkDeviceSize instanceOffset, + VkBool32 update, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkBuffer scratch, + VkDeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBuildAccelerationStructureNV( commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset ); + } + + VULKAN_HPP_INLINE void vkCmdCopyAccelerationStructureNV( VkCommandBuffer commandBuffer, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkCopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyAccelerationStructureNV( commandBuffer, dst, src, mode ); + } + + VULKAN_HPP_INLINE void 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 VULKAN_HPP_NOEXCEPT + { + return ::vkCmdTraceRaysNV( commandBuffer, + raygenShaderBindingTableBuffer, + raygenShaderBindingOffset, + missShaderBindingTableBuffer, + missShaderBindingOffset, + missShaderBindingStride, + hitShaderBindingTableBuffer, + hitShaderBindingOffset, + hitShaderBindingStride, + callableShaderBindingTableBuffer, + callableShaderBindingOffset, + callableShaderBindingStride, + width, + height, + depth ); + } + + VULKAN_HPP_INLINE VkResult vkCreateRayTracingPipelinesNV( VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + VkRayTracingPipelineCreateInfoNV const * pCreateInfos, + VkAllocationCallbacks const * pAllocator, + VkPipeline * pPipelines ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateRayTracingPipelinesNV( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + } + + VULKAN_HPP_INLINE VkResult vkGetRayTracingShaderGroupHandlesNV( + VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRayTracingShaderGroupHandlesNV( device, pipeline, firstGroup, groupCount, dataSize, pData ); + } + + VULKAN_HPP_INLINE VkResult vkGetAccelerationStructureHandleNV( VkDevice device, + VkAccelerationStructureNV accelerationStructure, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetAccelerationStructureHandleNV( device, accelerationStructure, dataSize, pData ); + } + + VULKAN_HPP_INLINE void vkCmdWriteAccelerationStructuresPropertiesNV( VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + VkAccelerationStructureNV const * pAccelerationStructures, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteAccelerationStructuresPropertiesNV( + commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery ); + } + + VULKAN_HPP_INLINE VkResult vkCompileDeferredNV( VkDevice device, VkPipeline pipeline, uint32_t shader ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCompileDeferredNV( device, pipeline, shader ); + } + + //=== VK_KHR_maintenance3 === + + VULKAN_HPP_INLINE void vkGetDescriptorSetLayoutSupportKHR( VkDevice device, + VkDescriptorSetLayoutCreateInfo const * pCreateInfo, + VkDescriptorSetLayoutSupport * pSupport ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDescriptorSetLayoutSupportKHR( device, pCreateInfo, pSupport ); + } + + //=== VK_KHR_draw_indirect_count === + + VULKAN_HPP_INLINE void vkCmdDrawIndirectCountKHR( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndirectCountKHR( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndexedIndirectCountKHR( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndexedIndirectCountKHR( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + } + + //=== VK_EXT_external_memory_host === + + VULKAN_HPP_INLINE VkResult + vkGetMemoryHostPointerPropertiesEXT( VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + void const * pHostPointer, + VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryHostPointerPropertiesEXT( device, handleType, pHostPointer, pMemoryHostPointerProperties ); + } + + //=== VK_AMD_buffer_marker === + + VULKAN_HPP_INLINE void vkCmdWriteBufferMarkerAMD( VkCommandBuffer commandBuffer, + VkPipelineStageFlagBits pipelineStage, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteBufferMarkerAMD( commandBuffer, pipelineStage, dstBuffer, dstOffset, marker ); + } + + VULKAN_HPP_INLINE void vkCmdWriteBufferMarker2AMD( + VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteBufferMarker2AMD( commandBuffer, stage, dstBuffer, dstOffset, marker ); + } + + //=== VK_EXT_calibrated_timestamps === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( VkPhysicalDevice physicalDevice, + uint32_t * pTimeDomainCount, + VkTimeDomainKHR * pTimeDomains ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( physicalDevice, pTimeDomainCount, pTimeDomains ); + } + + VULKAN_HPP_INLINE VkResult vkGetCalibratedTimestampsEXT( VkDevice device, + uint32_t timestampCount, + VkCalibratedTimestampInfoKHR const * pTimestampInfos, + uint64_t * pTimestamps, + uint64_t * pMaxDeviation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetCalibratedTimestampsEXT( device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation ); + } + + //=== VK_NV_mesh_shader === + + VULKAN_HPP_INLINE void vkCmdDrawMeshTasksNV( VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMeshTasksNV( commandBuffer, taskCount, firstTask ); + } + + VULKAN_HPP_INLINE void vkCmdDrawMeshTasksIndirectNV( + VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMeshTasksIndirectNV( commandBuffer, buffer, offset, drawCount, stride ); + } + + VULKAN_HPP_INLINE void vkCmdDrawMeshTasksIndirectCountNV( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMeshTasksIndirectCountNV( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + } + + //=== VK_NV_scissor_exclusive === + + VULKAN_HPP_INLINE void vkCmdSetExclusiveScissorEnableNV( VkCommandBuffer commandBuffer, + uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + VkBool32 const * pExclusiveScissorEnables ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetExclusiveScissorEnableNV( commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables ); + } + + VULKAN_HPP_INLINE void vkCmdSetExclusiveScissorNV( VkCommandBuffer commandBuffer, + uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + VkRect2D const * pExclusiveScissors ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetExclusiveScissorNV( commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors ); + } + + //=== VK_NV_device_diagnostic_checkpoints === + + VULKAN_HPP_INLINE void vkCmdSetCheckpointNV( VkCommandBuffer commandBuffer, void const * pCheckpointMarker ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetCheckpointNV( commandBuffer, pCheckpointMarker ); + } + + VULKAN_HPP_INLINE void + vkGetQueueCheckpointDataNV( VkQueue queue, uint32_t * pCheckpointDataCount, VkCheckpointDataNV * pCheckpointData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetQueueCheckpointDataNV( queue, pCheckpointDataCount, pCheckpointData ); + } + + VULKAN_HPP_INLINE void + vkGetQueueCheckpointData2NV( VkQueue queue, uint32_t * pCheckpointDataCount, VkCheckpointData2NV * pCheckpointData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetQueueCheckpointData2NV( queue, pCheckpointDataCount, pCheckpointData ); + } + + //=== VK_KHR_timeline_semaphore === + + VULKAN_HPP_INLINE VkResult vkGetSemaphoreCounterValueKHR( VkDevice device, VkSemaphore semaphore, uint64_t * pValue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSemaphoreCounterValueKHR( device, semaphore, pValue ); + } + + VULKAN_HPP_INLINE VkResult vkWaitSemaphoresKHR( VkDevice device, VkSemaphoreWaitInfo const * pWaitInfo, uint64_t timeout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWaitSemaphoresKHR( device, pWaitInfo, timeout ); + } + + VULKAN_HPP_INLINE VkResult vkSignalSemaphoreKHR( VkDevice device, VkSemaphoreSignalInfo const * pSignalInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSignalSemaphoreKHR( device, pSignalInfo ); + } + + //=== VK_EXT_present_timing === + + VULKAN_HPP_INLINE VkResult vkSetSwapchainPresentTimingQueueSizeEXT( VkDevice device, VkSwapchainKHR swapchain, uint32_t size ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetSwapchainPresentTimingQueueSizeEXT( device, swapchain, size ); + } + + VULKAN_HPP_INLINE VkResult vkGetSwapchainTimingPropertiesEXT( VkDevice device, + VkSwapchainKHR swapchain, + VkSwapchainTimingPropertiesEXT * pSwapchainTimingProperties, + uint64_t * pSwapchainTimingPropertiesCounter ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSwapchainTimingPropertiesEXT( device, swapchain, pSwapchainTimingProperties, pSwapchainTimingPropertiesCounter ); + } + + VULKAN_HPP_INLINE VkResult vkGetSwapchainTimeDomainPropertiesEXT( VkDevice device, + VkSwapchainKHR swapchain, + VkSwapchainTimeDomainPropertiesEXT * pSwapchainTimeDomainProperties, + uint64_t * pTimeDomainsCounter ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSwapchainTimeDomainPropertiesEXT( device, swapchain, pSwapchainTimeDomainProperties, pTimeDomainsCounter ); + } + + VULKAN_HPP_INLINE VkResult + vkGetPastPresentationTimingEXT( VkDevice device, + VkPastPresentationTimingInfoEXT const * pPastPresentationTimingInfo, + VkPastPresentationTimingPropertiesEXT * pPastPresentationTimingProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPastPresentationTimingEXT( device, pPastPresentationTimingInfo, pPastPresentationTimingProperties ); + } + + //=== VK_INTEL_performance_query === + + VULKAN_HPP_INLINE VkResult vkInitializePerformanceApiINTEL( VkDevice device, + VkInitializePerformanceApiInfoINTEL const * pInitializeInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkInitializePerformanceApiINTEL( device, pInitializeInfo ); + } + + VULKAN_HPP_INLINE void vkUninitializePerformanceApiINTEL( VkDevice device ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUninitializePerformanceApiINTEL( device ); + } + + VULKAN_HPP_INLINE VkResult vkCmdSetPerformanceMarkerINTEL( VkCommandBuffer commandBuffer, + VkPerformanceMarkerInfoINTEL const * pMarkerInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPerformanceMarkerINTEL( commandBuffer, pMarkerInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCmdSetPerformanceStreamMarkerINTEL( VkCommandBuffer commandBuffer, + VkPerformanceStreamMarkerInfoINTEL const * pMarkerInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPerformanceStreamMarkerINTEL( commandBuffer, pMarkerInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCmdSetPerformanceOverrideINTEL( VkCommandBuffer commandBuffer, + VkPerformanceOverrideInfoINTEL const * pOverrideInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPerformanceOverrideINTEL( commandBuffer, pOverrideInfo ); + } + + VULKAN_HPP_INLINE VkResult vkAcquirePerformanceConfigurationINTEL( VkDevice device, + VkPerformanceConfigurationAcquireInfoINTEL const * pAcquireInfo, + VkPerformanceConfigurationINTEL * pConfiguration ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquirePerformanceConfigurationINTEL( device, pAcquireInfo, pConfiguration ); + } + + VULKAN_HPP_INLINE VkResult vkReleasePerformanceConfigurationINTEL( VkDevice device, + VkPerformanceConfigurationINTEL configuration ) const VULKAN_HPP_NOEXCEPT + { + return ::vkReleasePerformanceConfigurationINTEL( device, configuration ); + } + + VULKAN_HPP_INLINE VkResult vkQueueSetPerformanceConfigurationINTEL( VkQueue queue, + VkPerformanceConfigurationINTEL configuration ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueSetPerformanceConfigurationINTEL( queue, configuration ); + } + + VULKAN_HPP_INLINE VkResult vkGetPerformanceParameterINTEL( VkDevice device, + VkPerformanceParameterTypeINTEL parameter, + VkPerformanceValueINTEL * pValue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPerformanceParameterINTEL( device, parameter, pValue ); + } + + //=== VK_AMD_display_native_hdr === + + VULKAN_HPP_INLINE void vkSetLocalDimmingAMD( VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetLocalDimmingAMD( device, swapChain, localDimmingEnable ); + } + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + VULKAN_HPP_INLINE VkResult vkCreateImagePipeSurfaceFUCHSIA( VkInstance instance, + VkImagePipeSurfaceCreateInfoFUCHSIA const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateImagePipeSurfaceFUCHSIA( instance, pCreateInfo, pAllocator, pSurface ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + VULKAN_HPP_INLINE VkResult vkCreateMetalSurfaceEXT( VkInstance instance, + VkMetalSurfaceCreateInfoEXT const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateMetalSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); + } +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + + VULKAN_HPP_INLINE VkResult + vkGetPhysicalDeviceFragmentShadingRatesKHR( VkPhysicalDevice physicalDevice, + uint32_t * pFragmentShadingRateCount, + VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceFragmentShadingRatesKHR( physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates ); + } + + VULKAN_HPP_INLINE void vkCmdSetFragmentShadingRateKHR( VkCommandBuffer commandBuffer, + VkExtent2D const * pFragmentSize, + VkFragmentShadingRateCombinerOpKHR const combinerOps[2] ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetFragmentShadingRateKHR( commandBuffer, pFragmentSize, combinerOps ); + } + + //=== VK_KHR_dynamic_rendering_local_read === + + VULKAN_HPP_INLINE void vkCmdSetRenderingAttachmentLocationsKHR( VkCommandBuffer commandBuffer, + VkRenderingAttachmentLocationInfo const * pLocationInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRenderingAttachmentLocationsKHR( commandBuffer, pLocationInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdSetRenderingInputAttachmentIndicesKHR( VkCommandBuffer commandBuffer, + VkRenderingInputAttachmentIndexInfo const * pInputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRenderingInputAttachmentIndicesKHR( commandBuffer, pInputAttachmentIndexInfo ); + } + + //=== VK_EXT_buffer_device_address === + + VULKAN_HPP_INLINE VkDeviceAddress vkGetBufferDeviceAddressEXT( VkDevice device, VkBufferDeviceAddressInfo const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferDeviceAddressEXT( device, pInfo ); + } + + //=== VK_EXT_tooling_info === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceToolPropertiesEXT( VkPhysicalDevice physicalDevice, + uint32_t * pToolCount, + VkPhysicalDeviceToolProperties * pToolProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceToolPropertiesEXT( physicalDevice, pToolCount, pToolProperties ); + } + + //=== VK_KHR_present_wait === + + VULKAN_HPP_INLINE VkResult vkWaitForPresentKHR( VkDevice device, + VkSwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWaitForPresentKHR( device, swapchain, presentId, timeout ); + } + + //=== VK_NV_cooperative_matrix === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkCooperativeMatrixPropertiesNV * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( physicalDevice, pPropertyCount, pProperties ); + } + + //=== VK_NV_coverage_reduction_mode === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + VkPhysicalDevice physicalDevice, uint32_t * pCombinationCount, VkFramebufferMixedSamplesCombinationNV * pCombinations ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( physicalDevice, pCombinationCount, pCombinations ); + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, + uint32_t * pPresentModeCount, + VkPresentModeKHR * pPresentModes ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceSurfacePresentModes2EXT( physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes ); + } + + VULKAN_HPP_INLINE VkResult vkAcquireFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquireFullScreenExclusiveModeEXT( device, swapchain ); + } + + VULKAN_HPP_INLINE VkResult vkReleaseFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain ) const VULKAN_HPP_NOEXCEPT + { + return ::vkReleaseFullScreenExclusiveModeEXT( device, swapchain ); + } + + VULKAN_HPP_INLINE VkResult vkGetDeviceGroupSurfacePresentModes2EXT( VkDevice device, + VkPhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, + VkDeviceGroupPresentModeFlagsKHR * pModes ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceGroupSurfacePresentModes2EXT( device, pSurfaceInfo, pModes ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + + VULKAN_HPP_INLINE VkResult vkCreateHeadlessSurfaceEXT( VkInstance instance, + VkHeadlessSurfaceCreateInfoEXT const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateHeadlessSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); + } + + //=== VK_KHR_buffer_device_address === + + VULKAN_HPP_INLINE VkDeviceAddress vkGetBufferDeviceAddressKHR( VkDevice device, VkBufferDeviceAddressInfo const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferDeviceAddressKHR( device, pInfo ); + } + + VULKAN_HPP_INLINE uint64_t vkGetBufferOpaqueCaptureAddressKHR( VkDevice device, VkBufferDeviceAddressInfo const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferOpaqueCaptureAddressKHR( device, pInfo ); + } + + VULKAN_HPP_INLINE uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR( VkDevice device, + VkDeviceMemoryOpaqueCaptureAddressInfo const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceMemoryOpaqueCaptureAddressKHR( device, pInfo ); + } + + //=== VK_EXT_line_rasterization === + + VULKAN_HPP_INLINE void + vkCmdSetLineStippleEXT( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetLineStippleEXT( commandBuffer, lineStippleFactor, lineStipplePattern ); + } + + //=== VK_EXT_host_query_reset === + + VULKAN_HPP_INLINE void vkResetQueryPoolEXT( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT + { + return ::vkResetQueryPoolEXT( device, queryPool, firstQuery, queryCount ); + } + + //=== VK_EXT_extended_dynamic_state === + + VULKAN_HPP_INLINE void vkCmdSetCullModeEXT( VkCommandBuffer commandBuffer, VkCullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetCullModeEXT( commandBuffer, cullMode ); + } + + VULKAN_HPP_INLINE void vkCmdSetFrontFaceEXT( VkCommandBuffer commandBuffer, VkFrontFace frontFace ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetFrontFaceEXT( commandBuffer, frontFace ); + } + + VULKAN_HPP_INLINE void vkCmdSetPrimitiveTopologyEXT( VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPrimitiveTopologyEXT( commandBuffer, primitiveTopology ); + } + + VULKAN_HPP_INLINE void + vkCmdSetViewportWithCountEXT( VkCommandBuffer commandBuffer, uint32_t viewportCount, VkViewport const * pViewports ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetViewportWithCountEXT( commandBuffer, viewportCount, pViewports ); + } + + VULKAN_HPP_INLINE void + vkCmdSetScissorWithCountEXT( VkCommandBuffer commandBuffer, uint32_t scissorCount, VkRect2D const * pScissors ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetScissorWithCountEXT( commandBuffer, scissorCount, pScissors ); + } + + VULKAN_HPP_INLINE void vkCmdBindVertexBuffers2EXT( VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + VkBuffer const * pBuffers, + VkDeviceSize const * pOffsets, + VkDeviceSize const * pSizes, + VkDeviceSize const * pStrides ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindVertexBuffers2EXT( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthTestEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthTestEnableEXT( commandBuffer, depthTestEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthWriteEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthWriteEnableEXT( commandBuffer, depthWriteEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthCompareOpEXT( VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthCompareOpEXT( commandBuffer, depthCompareOp ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthBoundsTestEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthBoundsTestEnableEXT( commandBuffer, depthBoundsTestEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetStencilTestEnableEXT( VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetStencilTestEnableEXT( commandBuffer, stencilTestEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetStencilOpEXT( VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetStencilOpEXT( commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp ); + } + + //=== VK_KHR_deferred_host_operations === + + VULKAN_HPP_INLINE VkResult vkCreateDeferredOperationKHR( VkDevice device, + VkAllocationCallbacks const * pAllocator, + VkDeferredOperationKHR * pDeferredOperation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDeferredOperationKHR( device, pAllocator, pDeferredOperation ); + } + + VULKAN_HPP_INLINE void + vkDestroyDeferredOperationKHR( VkDevice device, VkDeferredOperationKHR operation, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDeferredOperationKHR( device, operation, pAllocator ); + } + + VULKAN_HPP_INLINE uint32_t vkGetDeferredOperationMaxConcurrencyKHR( VkDevice device, VkDeferredOperationKHR operation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeferredOperationMaxConcurrencyKHR( device, operation ); + } + + VULKAN_HPP_INLINE VkResult vkGetDeferredOperationResultKHR( VkDevice device, VkDeferredOperationKHR operation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeferredOperationResultKHR( device, operation ); + } + + VULKAN_HPP_INLINE VkResult vkDeferredOperationJoinKHR( VkDevice device, VkDeferredOperationKHR operation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDeferredOperationJoinKHR( device, operation ); + } + + //=== VK_KHR_pipeline_executable_properties === + + VULKAN_HPP_INLINE VkResult vkGetPipelineExecutablePropertiesKHR( VkDevice device, + VkPipelineInfoKHR const * pPipelineInfo, + uint32_t * pExecutableCount, + VkPipelineExecutablePropertiesKHR * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineExecutablePropertiesKHR( device, pPipelineInfo, pExecutableCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetPipelineExecutableStatisticsKHR( VkDevice device, + VkPipelineExecutableInfoKHR const * pExecutableInfo, + uint32_t * pStatisticCount, + VkPipelineExecutableStatisticKHR * pStatistics ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineExecutableStatisticsKHR( device, pExecutableInfo, pStatisticCount, pStatistics ); + } + + VULKAN_HPP_INLINE VkResult + vkGetPipelineExecutableInternalRepresentationsKHR( VkDevice device, + VkPipelineExecutableInfoKHR const * pExecutableInfo, + uint32_t * pInternalRepresentationCount, + VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineExecutableInternalRepresentationsKHR( device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations ); + } + + //=== VK_EXT_host_image_copy === + + VULKAN_HPP_INLINE VkResult vkCopyMemoryToImageEXT( VkDevice device, VkCopyMemoryToImageInfo const * pCopyMemoryToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyMemoryToImageEXT( device, pCopyMemoryToImageInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCopyImageToMemoryEXT( VkDevice device, VkCopyImageToMemoryInfo const * pCopyImageToMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyImageToMemoryEXT( device, pCopyImageToMemoryInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCopyImageToImageEXT( VkDevice device, VkCopyImageToImageInfo const * pCopyImageToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyImageToImageEXT( device, pCopyImageToImageInfo ); + } + + VULKAN_HPP_INLINE VkResult vkTransitionImageLayoutEXT( VkDevice device, + uint32_t transitionCount, + VkHostImageLayoutTransitionInfo const * pTransitions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkTransitionImageLayoutEXT( device, transitionCount, pTransitions ); + } + + VULKAN_HPP_INLINE void vkGetImageSubresourceLayout2EXT( VkDevice device, + VkImage image, + VkImageSubresource2 const * pSubresource, + VkSubresourceLayout2 * pLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageSubresourceLayout2EXT( device, image, pSubresource, pLayout ); + } + + //=== VK_KHR_map_memory2 === + + VULKAN_HPP_INLINE VkResult vkMapMemory2KHR( VkDevice device, VkMemoryMapInfo const * pMemoryMapInfo, void ** ppData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkMapMemory2KHR( device, pMemoryMapInfo, ppData ); + } + + VULKAN_HPP_INLINE VkResult vkUnmapMemory2KHR( VkDevice device, VkMemoryUnmapInfo const * pMemoryUnmapInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUnmapMemory2KHR( device, pMemoryUnmapInfo ); + } + + //=== VK_EXT_swapchain_maintenance1 === + + VULKAN_HPP_INLINE VkResult vkReleaseSwapchainImagesEXT( VkDevice device, VkReleaseSwapchainImagesInfoKHR const * pReleaseInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkReleaseSwapchainImagesEXT( device, pReleaseInfo ); + } + + //=== VK_NV_device_generated_commands === + + VULKAN_HPP_INLINE void vkGetGeneratedCommandsMemoryRequirementsNV( VkDevice device, + VkGeneratedCommandsMemoryRequirementsInfoNV const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetGeneratedCommandsMemoryRequirementsNV( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkCmdPreprocessGeneratedCommandsNV( VkCommandBuffer commandBuffer, + VkGeneratedCommandsInfoNV const * pGeneratedCommandsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPreprocessGeneratedCommandsNV( commandBuffer, pGeneratedCommandsInfo ); + } + + VULKAN_HPP_INLINE void vkCmdExecuteGeneratedCommandsNV( VkCommandBuffer commandBuffer, + VkBool32 isPreprocessed, + VkGeneratedCommandsInfoNV const * pGeneratedCommandsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdExecuteGeneratedCommandsNV( commandBuffer, isPreprocessed, pGeneratedCommandsInfo ); + } + + VULKAN_HPP_INLINE void vkCmdBindPipelineShaderGroupNV( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline, + uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindPipelineShaderGroupNV( commandBuffer, pipelineBindPoint, pipeline, groupIndex ); + } + + VULKAN_HPP_INLINE VkResult vkCreateIndirectCommandsLayoutNV( VkDevice device, + VkIndirectCommandsLayoutCreateInfoNV const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateIndirectCommandsLayoutNV( device, pCreateInfo, pAllocator, pIndirectCommandsLayout ); + } + + VULKAN_HPP_INLINE void vkDestroyIndirectCommandsLayoutNV( VkDevice device, + VkIndirectCommandsLayoutNV indirectCommandsLayout, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyIndirectCommandsLayoutNV( device, indirectCommandsLayout, pAllocator ); + } + + //=== VK_EXT_depth_bias_control === + + VULKAN_HPP_INLINE void vkCmdSetDepthBias2EXT( VkCommandBuffer commandBuffer, VkDepthBiasInfoEXT const * pDepthBiasInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthBias2EXT( commandBuffer, pDepthBiasInfo ); + } + + //=== VK_EXT_acquire_drm_display === + + VULKAN_HPP_INLINE VkResult vkAcquireDrmDisplayEXT( VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquireDrmDisplayEXT( physicalDevice, drmFd, display ); + } + + VULKAN_HPP_INLINE VkResult vkGetDrmDisplayEXT( VkPhysicalDevice physicalDevice, + int32_t drmFd, + uint32_t connectorId, + VkDisplayKHR * display ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDrmDisplayEXT( physicalDevice, drmFd, connectorId, display ); + } + + //=== VK_EXT_private_data === + + VULKAN_HPP_INLINE VkResult vkCreatePrivateDataSlotEXT( VkDevice device, + VkPrivateDataSlotCreateInfo const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkPrivateDataSlot * pPrivateDataSlot ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreatePrivateDataSlotEXT( device, pCreateInfo, pAllocator, pPrivateDataSlot ); + } + + VULKAN_HPP_INLINE void + vkDestroyPrivateDataSlotEXT( VkDevice device, VkPrivateDataSlot privateDataSlot, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyPrivateDataSlotEXT( device, privateDataSlot, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkSetPrivateDataEXT( + VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetPrivateDataEXT( device, objectType, objectHandle, privateDataSlot, data ); + } + + VULKAN_HPP_INLINE void vkGetPrivateDataEXT( + VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPrivateDataEXT( device, objectType, objectHandle, privateDataSlot, pData ); + } + + //=== VK_KHR_video_encode_queue === + + VULKAN_HPP_INLINE VkResult + vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const * pQualityLevelInfo, + VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( physicalDevice, pQualityLevelInfo, pQualityLevelProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetEncodedVideoSessionParametersKHR( VkDevice device, + VkVideoEncodeSessionParametersGetInfoKHR const * pVideoSessionParametersInfo, + VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo, + size_t * pDataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetEncodedVideoSessionParametersKHR( device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData ); + } + + VULKAN_HPP_INLINE void vkCmdEncodeVideoKHR( VkCommandBuffer commandBuffer, VkVideoEncodeInfoKHR const * pEncodeInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEncodeVideoKHR( commandBuffer, pEncodeInfo ); + } + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + VULKAN_HPP_INLINE VkResult vkCreateCudaModuleNV( VkDevice device, + VkCudaModuleCreateInfoNV const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkCudaModuleNV * pModule ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateCudaModuleNV( device, pCreateInfo, pAllocator, pModule ); + } + + VULKAN_HPP_INLINE VkResult vkGetCudaModuleCacheNV( VkDevice device, + VkCudaModuleNV module, + size_t * pCacheSize, + void * pCacheData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetCudaModuleCacheNV( device, module, pCacheSize, pCacheData ); + } + + VULKAN_HPP_INLINE VkResult vkCreateCudaFunctionNV( VkDevice device, + VkCudaFunctionCreateInfoNV const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkCudaFunctionNV * pFunction ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateCudaFunctionNV( device, pCreateInfo, pAllocator, pFunction ); + } + + VULKAN_HPP_INLINE void vkDestroyCudaModuleNV( VkDevice device, VkCudaModuleNV module, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyCudaModuleNV( device, module, pAllocator ); + } + + VULKAN_HPP_INLINE void + vkDestroyCudaFunctionNV( VkDevice device, VkCudaFunctionNV function, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyCudaFunctionNV( device, function, pAllocator ); + } + + VULKAN_HPP_INLINE void vkCmdCudaLaunchKernelNV( VkCommandBuffer commandBuffer, VkCudaLaunchInfoNV const * pLaunchInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCudaLaunchKernelNV( commandBuffer, pLaunchInfo ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + + VULKAN_HPP_INLINE void vkCmdDispatchTileQCOM( VkCommandBuffer commandBuffer, VkDispatchTileInfoQCOM const * pDispatchTileInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDispatchTileQCOM( commandBuffer, pDispatchTileInfo ); + } + + VULKAN_HPP_INLINE void vkCmdBeginPerTileExecutionQCOM( VkCommandBuffer commandBuffer, + VkPerTileBeginInfoQCOM const * pPerTileBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginPerTileExecutionQCOM( commandBuffer, pPerTileBeginInfo ); + } + + VULKAN_HPP_INLINE void vkCmdEndPerTileExecutionQCOM( VkCommandBuffer commandBuffer, + VkPerTileEndInfoQCOM const * pPerTileEndInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndPerTileExecutionQCOM( commandBuffer, pPerTileEndInfo ); + } + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + + VULKAN_HPP_INLINE void vkExportMetalObjectsEXT( VkDevice device, VkExportMetalObjectsInfoEXT * pMetalObjectsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkExportMetalObjectsEXT( device, pMetalObjectsInfo ); + } +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_synchronization2 === + + VULKAN_HPP_INLINE void + vkCmdSetEvent2KHR( VkCommandBuffer commandBuffer, VkEvent event, VkDependencyInfo const * pDependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetEvent2KHR( commandBuffer, event, pDependencyInfo ); + } + + VULKAN_HPP_INLINE void vkCmdResetEvent2KHR( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdResetEvent2KHR( commandBuffer, event, stageMask ); + } + + VULKAN_HPP_INLINE void vkCmdWaitEvents2KHR( VkCommandBuffer commandBuffer, + uint32_t eventCount, + VkEvent const * pEvents, + VkDependencyInfo const * pDependencyInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWaitEvents2KHR( commandBuffer, eventCount, pEvents, pDependencyInfos ); + } + + VULKAN_HPP_INLINE void vkCmdPipelineBarrier2KHR( VkCommandBuffer commandBuffer, VkDependencyInfo const * pDependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPipelineBarrier2KHR( commandBuffer, pDependencyInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdWriteTimestamp2KHR( VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteTimestamp2KHR( commandBuffer, stage, queryPool, query ); + } + + VULKAN_HPP_INLINE VkResult vkQueueSubmit2KHR( VkQueue queue, + uint32_t submitCount, + VkSubmitInfo2 const * pSubmits, + VkFence fence ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueSubmit2KHR( queue, submitCount, pSubmits, fence ); + } + + //=== VK_EXT_descriptor_buffer === + + VULKAN_HPP_INLINE void + vkGetDescriptorSetLayoutSizeEXT( VkDevice device, VkDescriptorSetLayout layout, VkDeviceSize * pLayoutSizeInBytes ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDescriptorSetLayoutSizeEXT( device, layout, pLayoutSizeInBytes ); + } + + VULKAN_HPP_INLINE void vkGetDescriptorSetLayoutBindingOffsetEXT( VkDevice device, + VkDescriptorSetLayout layout, + uint32_t binding, + VkDeviceSize * pOffset ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDescriptorSetLayoutBindingOffsetEXT( device, layout, binding, pOffset ); + } + + VULKAN_HPP_INLINE void + vkGetDescriptorEXT( VkDevice device, VkDescriptorGetInfoEXT const * pDescriptorInfo, size_t dataSize, void * pDescriptor ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDescriptorEXT( device, pDescriptorInfo, dataSize, pDescriptor ); + } + + VULKAN_HPP_INLINE void vkCmdBindDescriptorBuffersEXT( VkCommandBuffer commandBuffer, + uint32_t bufferCount, + VkDescriptorBufferBindingInfoEXT const * pBindingInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindDescriptorBuffersEXT( commandBuffer, bufferCount, pBindingInfos ); + } + + VULKAN_HPP_INLINE void vkCmdSetDescriptorBufferOffsetsEXT( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t firstSet, + uint32_t setCount, + uint32_t const * pBufferIndices, + VkDeviceSize const * pOffsets ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDescriptorBufferOffsetsEXT( commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets ); + } + + VULKAN_HPP_INLINE void vkCmdBindDescriptorBufferEmbeddedSamplersEXT( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t set ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindDescriptorBufferEmbeddedSamplersEXT( commandBuffer, pipelineBindPoint, layout, set ); + } + + VULKAN_HPP_INLINE VkResult vkGetBufferOpaqueCaptureDescriptorDataEXT( VkDevice device, + VkBufferCaptureDescriptorDataInfoEXT const * pInfo, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferOpaqueCaptureDescriptorDataEXT( device, pInfo, pData ); + } + + VULKAN_HPP_INLINE VkResult vkGetImageOpaqueCaptureDescriptorDataEXT( VkDevice device, + VkImageCaptureDescriptorDataInfoEXT const * pInfo, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageOpaqueCaptureDescriptorDataEXT( device, pInfo, pData ); + } + + VULKAN_HPP_INLINE VkResult vkGetImageViewOpaqueCaptureDescriptorDataEXT( VkDevice device, + VkImageViewCaptureDescriptorDataInfoEXT const * pInfo, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageViewOpaqueCaptureDescriptorDataEXT( device, pInfo, pData ); + } + + VULKAN_HPP_INLINE VkResult vkGetSamplerOpaqueCaptureDescriptorDataEXT( VkDevice device, + VkSamplerCaptureDescriptorDataInfoEXT const * pInfo, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSamplerOpaqueCaptureDescriptorDataEXT( device, pInfo, pData ); + } + + VULKAN_HPP_INLINE VkResult vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( VkDevice device, + VkAccelerationStructureCaptureDescriptorDataInfoEXT const * pInfo, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( device, pInfo, pData ); + } + + //=== VK_KHR_device_address_commands === + + VULKAN_HPP_INLINE void vkCmdBindIndexBuffer3KHR( VkCommandBuffer commandBuffer, VkBindIndexBuffer3InfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindIndexBuffer3KHR( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdBindVertexBuffers3KHR( VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + VkBindVertexBuffer3InfoKHR const * pBindingInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindVertexBuffers3KHR( commandBuffer, firstBinding, bindingCount, pBindingInfos ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndirect2KHR( VkCommandBuffer commandBuffer, VkDrawIndirect2InfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndirect2KHR( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndexedIndirect2KHR( VkCommandBuffer commandBuffer, VkDrawIndirect2InfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndexedIndirect2KHR( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdDispatchIndirect2KHR( VkCommandBuffer commandBuffer, VkDispatchIndirect2InfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDispatchIndirect2KHR( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyMemoryKHR( VkCommandBuffer commandBuffer, VkCopyDeviceMemoryInfoKHR const * pCopyMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyMemoryKHR( commandBuffer, pCopyMemoryInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyMemoryToImageKHR( VkCommandBuffer commandBuffer, + VkCopyDeviceMemoryImageInfoKHR const * pCopyMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyMemoryToImageKHR( commandBuffer, pCopyMemoryInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyImageToMemoryKHR( VkCommandBuffer commandBuffer, + VkCopyDeviceMemoryImageInfoKHR const * pCopyMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyImageToMemoryKHR( commandBuffer, pCopyMemoryInfo ); + } + + VULKAN_HPP_INLINE void vkCmdUpdateMemoryKHR( VkCommandBuffer commandBuffer, + VkDeviceAddressRangeKHR const * pDstRange, + VkAddressCommandFlagsKHR dstFlags, + VkDeviceSize dataSize, + void const * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdUpdateMemoryKHR( commandBuffer, pDstRange, dstFlags, dataSize, pData ); + } + + VULKAN_HPP_INLINE void vkCmdFillMemoryKHR( VkCommandBuffer commandBuffer, + VkDeviceAddressRangeKHR const * pDstRange, + VkAddressCommandFlagsKHR dstFlags, + uint32_t data ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdFillMemoryKHR( commandBuffer, pDstRange, dstFlags, data ); + } + + VULKAN_HPP_INLINE void vkCmdCopyQueryPoolResultsToMemoryKHR( VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VkStridedDeviceAddressRangeKHR const * pDstRange, + VkAddressCommandFlagsKHR dstFlags, + VkQueryResultFlags queryResultFlags ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyQueryPoolResultsToMemoryKHR( commandBuffer, queryPool, firstQuery, queryCount, pDstRange, dstFlags, queryResultFlags ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndirectCount2KHR( VkCommandBuffer commandBuffer, VkDrawIndirectCount2InfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndirectCount2KHR( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndexedIndirectCount2KHR( VkCommandBuffer commandBuffer, + VkDrawIndirectCount2InfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndexedIndirectCount2KHR( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdBeginConditionalRendering2EXT( VkCommandBuffer commandBuffer, + VkConditionalRenderingBeginInfo2EXT const * pConditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginConditionalRendering2EXT( commandBuffer, pConditionalRenderingBegin ); + } + + VULKAN_HPP_INLINE void vkCmdBindTransformFeedbackBuffers2EXT( VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + VkBindTransformFeedbackBuffer2InfoEXT const * pBindingInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindTransformFeedbackBuffers2EXT( commandBuffer, firstBinding, bindingCount, pBindingInfos ); + } + + VULKAN_HPP_INLINE void vkCmdBeginTransformFeedback2EXT( VkCommandBuffer commandBuffer, + uint32_t firstCounterRange, + uint32_t counterRangeCount, + VkBindTransformFeedbackBuffer2InfoEXT const * pCounterInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginTransformFeedback2EXT( commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos ); + } + + VULKAN_HPP_INLINE void vkCmdEndTransformFeedback2EXT( VkCommandBuffer commandBuffer, + uint32_t firstCounterRange, + uint32_t counterRangeCount, + VkBindTransformFeedbackBuffer2InfoEXT const * pCounterInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndTransformFeedback2EXT( commandBuffer, firstCounterRange, counterRangeCount, pCounterInfos ); + } + + VULKAN_HPP_INLINE void vkCmdDrawIndirectByteCount2EXT( VkCommandBuffer commandBuffer, + uint32_t instanceCount, + uint32_t firstInstance, + VkBindTransformFeedbackBuffer2InfoEXT const * pCounterInfo, + uint32_t counterOffset, + uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawIndirectByteCount2EXT( commandBuffer, instanceCount, firstInstance, pCounterInfo, counterOffset, vertexStride ); + } + + VULKAN_HPP_INLINE void vkCmdDrawMeshTasksIndirect2EXT( VkCommandBuffer commandBuffer, VkDrawIndirect2InfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMeshTasksIndirect2EXT( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdDrawMeshTasksIndirectCount2EXT( VkCommandBuffer commandBuffer, + VkDrawIndirectCount2InfoKHR const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMeshTasksIndirectCount2EXT( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdWriteMarkerToMemoryAMD( VkCommandBuffer commandBuffer, VkMemoryMarkerInfoAMD const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteMarkerToMemoryAMD( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCreateAccelerationStructure2KHR( VkDevice device, + VkAccelerationStructureCreateInfo2KHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkAccelerationStructureKHR * pAccelerationStructure ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateAccelerationStructure2KHR( device, pCreateInfo, pAllocator, pAccelerationStructure ); + } + + //=== VK_NV_fragment_shading_rate_enums === + + VULKAN_HPP_INLINE void vkCmdSetFragmentShadingRateEnumNV( VkCommandBuffer commandBuffer, + VkFragmentShadingRateNV shadingRate, + VkFragmentShadingRateCombinerOpKHR const combinerOps[2] ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetFragmentShadingRateEnumNV( commandBuffer, shadingRate, combinerOps ); + } + + //=== VK_EXT_mesh_shader === + + VULKAN_HPP_INLINE void + vkCmdDrawMeshTasksEXT( VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMeshTasksEXT( commandBuffer, groupCountX, groupCountY, groupCountZ ); + } + + VULKAN_HPP_INLINE void vkCmdDrawMeshTasksIndirectEXT( + VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMeshTasksIndirectEXT( commandBuffer, buffer, offset, drawCount, stride ); + } + + VULKAN_HPP_INLINE void vkCmdDrawMeshTasksIndirectCountEXT( VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMeshTasksIndirectCountEXT( commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride ); + } + + //=== VK_KHR_copy_commands2 === + + VULKAN_HPP_INLINE void vkCmdCopyBuffer2KHR( VkCommandBuffer commandBuffer, VkCopyBufferInfo2 const * pCopyBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyBuffer2KHR( commandBuffer, pCopyBufferInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyImage2KHR( VkCommandBuffer commandBuffer, VkCopyImageInfo2 const * pCopyImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyImage2KHR( commandBuffer, pCopyImageInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyBufferToImage2KHR( VkCommandBuffer commandBuffer, + VkCopyBufferToImageInfo2 const * pCopyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyBufferToImage2KHR( commandBuffer, pCopyBufferToImageInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyImageToBuffer2KHR( VkCommandBuffer commandBuffer, + VkCopyImageToBufferInfo2 const * pCopyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyImageToBuffer2KHR( commandBuffer, pCopyImageToBufferInfo ); + } + + VULKAN_HPP_INLINE void vkCmdBlitImage2KHR( VkCommandBuffer commandBuffer, VkBlitImageInfo2 const * pBlitImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBlitImage2KHR( commandBuffer, pBlitImageInfo ); + } + + VULKAN_HPP_INLINE void vkCmdResolveImage2KHR( VkCommandBuffer commandBuffer, VkResolveImageInfo2 const * pResolveImageInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdResolveImage2KHR( commandBuffer, pResolveImageInfo ); + } + + //=== VK_EXT_device_fault === + + VULKAN_HPP_INLINE VkResult vkGetDeviceFaultInfoEXT( VkDevice device, + VkDeviceFaultCountsEXT * pFaultCounts, + VkDeviceFaultInfoEXT * pFaultInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceFaultInfoEXT( device, pFaultCounts, pFaultInfo ); + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + + VULKAN_HPP_INLINE VkResult vkAcquireWinrtDisplayNV( VkPhysicalDevice physicalDevice, VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAcquireWinrtDisplayNV( physicalDevice, display ); + } + + VULKAN_HPP_INLINE VkResult vkGetWinrtDisplayNV( VkPhysicalDevice physicalDevice, + uint32_t deviceRelativeId, + VkDisplayKHR * pDisplay ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetWinrtDisplayNV( physicalDevice, deviceRelativeId, pDisplay ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + VULKAN_HPP_INLINE VkResult vkCreateDirectFBSurfaceEXT( VkInstance instance, + VkDirectFBSurfaceCreateInfoEXT const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDirectFBSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); + } + + VULKAN_HPP_INLINE VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + IDirectFB * dfb ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceDirectFBPresentationSupportEXT( physicalDevice, queueFamilyIndex, dfb ); + } +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_vertex_input_dynamic_state === + + VULKAN_HPP_INLINE void vkCmdSetVertexInputEXT( VkCommandBuffer commandBuffer, + uint32_t vertexBindingDescriptionCount, + VkVertexInputBindingDescription2EXT const * pVertexBindingDescriptions, + uint32_t vertexAttributeDescriptionCount, + VkVertexInputAttributeDescription2EXT const * pVertexAttributeDescriptions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetVertexInputEXT( + commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions ); + } + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + + VULKAN_HPP_INLINE VkResult vkGetMemoryZirconHandleFUCHSIA( VkDevice device, + VkMemoryGetZirconHandleInfoFUCHSIA const * pGetZirconHandleInfo, + zx_handle_t * pZirconHandle ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryZirconHandleFUCHSIA( device, pGetZirconHandleInfo, pZirconHandle ); + } + + VULKAN_HPP_INLINE VkResult + vkGetMemoryZirconHandlePropertiesFUCHSIA( VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + VkMemoryZirconHandlePropertiesFUCHSIA * pMemoryZirconHandleProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryZirconHandlePropertiesFUCHSIA( device, handleType, zirconHandle, pMemoryZirconHandleProperties ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + + VULKAN_HPP_INLINE VkResult vkImportSemaphoreZirconHandleFUCHSIA( + VkDevice device, VkImportSemaphoreZirconHandleInfoFUCHSIA const * pImportSemaphoreZirconHandleInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkImportSemaphoreZirconHandleFUCHSIA( device, pImportSemaphoreZirconHandleInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetSemaphoreZirconHandleFUCHSIA( VkDevice device, + VkSemaphoreGetZirconHandleInfoFUCHSIA const * pGetZirconHandleInfo, + zx_handle_t * pZirconHandle ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetSemaphoreZirconHandleFUCHSIA( device, pGetZirconHandleInfo, pZirconHandle ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + VULKAN_HPP_INLINE VkResult vkCreateBufferCollectionFUCHSIA( VkDevice device, + VkBufferCollectionCreateInfoFUCHSIA const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkBufferCollectionFUCHSIA * pCollection ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateBufferCollectionFUCHSIA( device, pCreateInfo, pAllocator, pCollection ); + } + + VULKAN_HPP_INLINE VkResult vkSetBufferCollectionImageConstraintsFUCHSIA( + VkDevice device, VkBufferCollectionFUCHSIA collection, VkImageConstraintsInfoFUCHSIA const * pImageConstraintsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetBufferCollectionImageConstraintsFUCHSIA( device, collection, pImageConstraintsInfo ); + } + + VULKAN_HPP_INLINE VkResult vkSetBufferCollectionBufferConstraintsFUCHSIA( + VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferConstraintsInfoFUCHSIA const * pBufferConstraintsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetBufferCollectionBufferConstraintsFUCHSIA( device, collection, pBufferConstraintsInfo ); + } + + VULKAN_HPP_INLINE void vkDestroyBufferCollectionFUCHSIA( VkDevice device, + VkBufferCollectionFUCHSIA collection, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyBufferCollectionFUCHSIA( device, collection, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkGetBufferCollectionPropertiesFUCHSIA( VkDevice device, + VkBufferCollectionFUCHSIA collection, + VkBufferCollectionPropertiesFUCHSIA * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetBufferCollectionPropertiesFUCHSIA( device, collection, pProperties ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + + VULKAN_HPP_INLINE VkResult vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( VkDevice device, + VkRenderPass renderpass, + VkExtent2D * pMaxWorkgroupSize ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( device, renderpass, pMaxWorkgroupSize ); + } + + VULKAN_HPP_INLINE void vkCmdSubpassShadingHUAWEI( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSubpassShadingHUAWEI( commandBuffer ); + } + + //=== VK_HUAWEI_invocation_mask === + + VULKAN_HPP_INLINE void + vkCmdBindInvocationMaskHUAWEI( VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindInvocationMaskHUAWEI( commandBuffer, imageView, imageLayout ); + } + + //=== VK_NV_external_memory_rdma === + + VULKAN_HPP_INLINE VkResult vkGetMemoryRemoteAddressNV( VkDevice device, + VkMemoryGetRemoteAddressInfoNV const * pMemoryGetRemoteAddressInfo, + VkRemoteAddressNV * pAddress ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryRemoteAddressNV( device, pMemoryGetRemoteAddressInfo, pAddress ); + } + + //=== VK_EXT_pipeline_properties === + + VULKAN_HPP_INLINE VkResult vkGetPipelinePropertiesEXT( VkDevice device, + VkPipelineInfoEXT const * pPipelineInfo, + VkBaseOutStructure * pPipelineProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelinePropertiesEXT( device, pPipelineInfo, pPipelineProperties ); + } + + //=== VK_EXT_extended_dynamic_state2 === + + VULKAN_HPP_INLINE void vkCmdSetPatchControlPointsEXT( VkCommandBuffer commandBuffer, uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPatchControlPointsEXT( commandBuffer, patchControlPoints ); + } + + VULKAN_HPP_INLINE void vkCmdSetRasterizerDiscardEnableEXT( VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRasterizerDiscardEnableEXT( commandBuffer, rasterizerDiscardEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthBiasEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthBiasEnableEXT( commandBuffer, depthBiasEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetLogicOpEXT( VkCommandBuffer commandBuffer, VkLogicOp logicOp ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetLogicOpEXT( commandBuffer, logicOp ); + } + + VULKAN_HPP_INLINE void vkCmdSetPrimitiveRestartEnableEXT( VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPrimitiveRestartEnableEXT( commandBuffer, primitiveRestartEnable ); + } + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + VULKAN_HPP_INLINE VkResult vkCreateScreenSurfaceQNX( VkInstance instance, + VkScreenSurfaceCreateInfoQNX const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateScreenSurfaceQNX( instance, pCreateInfo, pAllocator, pSurface ); + } + + VULKAN_HPP_INLINE VkBool32 vkGetPhysicalDeviceScreenPresentationSupportQNX( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct _screen_window * window ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceScreenPresentationSupportQNX( physicalDevice, queueFamilyIndex, window ); + } +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + + VULKAN_HPP_INLINE void + vkCmdSetColorWriteEnableEXT( VkCommandBuffer commandBuffer, uint32_t attachmentCount, VkBool32 const * pColorWriteEnables ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetColorWriteEnableEXT( commandBuffer, attachmentCount, pColorWriteEnables ); + } + + //=== VK_KHR_ray_tracing_maintenance1 === + + VULKAN_HPP_INLINE void vkCmdTraceRaysIndirect2KHR( VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdTraceRaysIndirect2KHR( commandBuffer, indirectDeviceAddress ); + } + + //=== VK_EXT_multi_draw === + + VULKAN_HPP_INLINE void vkCmdDrawMultiEXT( VkCommandBuffer commandBuffer, + uint32_t drawCount, + VkMultiDrawInfoEXT const * pVertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMultiEXT( commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride ); + } + + VULKAN_HPP_INLINE void vkCmdDrawMultiIndexedEXT( VkCommandBuffer commandBuffer, + uint32_t drawCount, + VkMultiDrawIndexedInfoEXT const * pIndexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + int32_t const * pVertexOffset ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawMultiIndexedEXT( commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset ); + } + + //=== VK_EXT_opacity_micromap === + + VULKAN_HPP_INLINE VkResult vkCreateMicromapEXT( VkDevice device, + VkMicromapCreateInfoEXT const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkMicromapEXT * pMicromap ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateMicromapEXT( device, pCreateInfo, pAllocator, pMicromap ); + } + + VULKAN_HPP_INLINE void vkDestroyMicromapEXT( VkDevice device, VkMicromapEXT micromap, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyMicromapEXT( device, micromap, pAllocator ); + } + + VULKAN_HPP_INLINE void + vkCmdBuildMicromapsEXT( VkCommandBuffer commandBuffer, uint32_t infoCount, VkMicromapBuildInfoEXT const * pInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBuildMicromapsEXT( commandBuffer, infoCount, pInfos ); + } + + VULKAN_HPP_INLINE VkResult vkBuildMicromapsEXT( VkDevice device, + VkDeferredOperationKHR deferredOperation, + uint32_t infoCount, + VkMicromapBuildInfoEXT const * pInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBuildMicromapsEXT( device, deferredOperation, infoCount, pInfos ); + } + + VULKAN_HPP_INLINE VkResult vkCopyMicromapEXT( VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkCopyMicromapInfoEXT const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyMicromapEXT( device, deferredOperation, pInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCopyMicromapToMemoryEXT( VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkCopyMicromapToMemoryInfoEXT const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyMicromapToMemoryEXT( device, deferredOperation, pInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCopyMemoryToMicromapEXT( VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkCopyMemoryToMicromapInfoEXT const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCopyMemoryToMicromapEXT( device, deferredOperation, pInfo ); + } + + VULKAN_HPP_INLINE VkResult vkWriteMicromapsPropertiesEXT( VkDevice device, + uint32_t micromapCount, + VkMicromapEXT const * pMicromaps, + VkQueryType queryType, + size_t dataSize, + void * pData, + size_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWriteMicromapsPropertiesEXT( device, micromapCount, pMicromaps, queryType, dataSize, pData, stride ); + } + + VULKAN_HPP_INLINE void vkCmdCopyMicromapEXT( VkCommandBuffer commandBuffer, VkCopyMicromapInfoEXT const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyMicromapEXT( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyMicromapToMemoryEXT( VkCommandBuffer commandBuffer, + VkCopyMicromapToMemoryInfoEXT const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyMicromapToMemoryEXT( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdCopyMemoryToMicromapEXT( VkCommandBuffer commandBuffer, + VkCopyMemoryToMicromapInfoEXT const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyMemoryToMicromapEXT( commandBuffer, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdWriteMicromapsPropertiesEXT( VkCommandBuffer commandBuffer, + uint32_t micromapCount, + VkMicromapEXT const * pMicromaps, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdWriteMicromapsPropertiesEXT( commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery ); + } + + VULKAN_HPP_INLINE void vkGetDeviceMicromapCompatibilityEXT( VkDevice device, + VkMicromapVersionInfoEXT const * pVersionInfo, + VkAccelerationStructureCompatibilityKHR * pCompatibility ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceMicromapCompatibilityEXT( device, pVersionInfo, pCompatibility ); + } + + VULKAN_HPP_INLINE void vkGetMicromapBuildSizesEXT( VkDevice device, + VkAccelerationStructureBuildTypeKHR buildType, + VkMicromapBuildInfoEXT const * pBuildInfo, + VkMicromapBuildSizesInfoEXT * pSizeInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMicromapBuildSizesEXT( device, buildType, pBuildInfo, pSizeInfo ); + } + + //=== VK_HUAWEI_cluster_culling_shader === + + VULKAN_HPP_INLINE void + vkCmdDrawClusterHUAWEI( VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawClusterHUAWEI( commandBuffer, groupCountX, groupCountY, groupCountZ ); + } + + VULKAN_HPP_INLINE void vkCmdDrawClusterIndirectHUAWEI( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDrawClusterIndirectHUAWEI( commandBuffer, buffer, offset ); + } + + //=== VK_EXT_pageable_device_local_memory === + + VULKAN_HPP_INLINE void vkSetDeviceMemoryPriorityEXT( VkDevice device, VkDeviceMemory memory, float priority ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetDeviceMemoryPriorityEXT( device, memory, priority ); + } + + //=== VK_KHR_maintenance4 === + + VULKAN_HPP_INLINE void vkGetDeviceBufferMemoryRequirementsKHR( VkDevice device, + VkDeviceBufferMemoryRequirements const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceBufferMemoryRequirementsKHR( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkGetDeviceImageMemoryRequirementsKHR( VkDevice device, + VkDeviceImageMemoryRequirements const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceImageMemoryRequirementsKHR( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void + vkGetDeviceImageSparseMemoryRequirementsKHR( VkDevice device, + VkDeviceImageMemoryRequirements const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceImageSparseMemoryRequirementsKHR( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); + } + + //=== VK_VALVE_descriptor_set_host_mapping === + + VULKAN_HPP_INLINE void vkGetDescriptorSetLayoutHostMappingInfoVALVE( VkDevice device, + VkDescriptorSetBindingReferenceVALVE const * pBindingReference, + VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDescriptorSetLayoutHostMappingInfoVALVE( device, pBindingReference, pHostMapping ); + } + + VULKAN_HPP_INLINE void vkGetDescriptorSetHostMappingVALVE( VkDevice device, VkDescriptorSet descriptorSet, void ** ppData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDescriptorSetHostMappingVALVE( device, descriptorSet, ppData ); + } + + //=== VK_NV_copy_memory_indirect === + + VULKAN_HPP_INLINE void vkCmdCopyMemoryIndirectNV( VkCommandBuffer commandBuffer, + VkDeviceAddress copyBufferAddress, + uint32_t copyCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyMemoryIndirectNV( commandBuffer, copyBufferAddress, copyCount, stride ); + } + + VULKAN_HPP_INLINE void vkCmdCopyMemoryToImageIndirectNV( VkCommandBuffer commandBuffer, + VkDeviceAddress copyBufferAddress, + uint32_t copyCount, + uint32_t stride, + VkImage dstImage, + VkImageLayout dstImageLayout, + VkImageSubresourceLayers const * pImageSubresources ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyMemoryToImageIndirectNV( commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources ); + } + + //=== VK_NV_memory_decompression === + + VULKAN_HPP_INLINE void vkCmdDecompressMemoryNV( VkCommandBuffer commandBuffer, + uint32_t decompressRegionCount, + VkDecompressMemoryRegionNV const * pDecompressMemoryRegions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDecompressMemoryNV( commandBuffer, decompressRegionCount, pDecompressMemoryRegions ); + } + + VULKAN_HPP_INLINE void vkCmdDecompressMemoryIndirectCountNV( VkCommandBuffer commandBuffer, + VkDeviceAddress indirectCommandsAddress, + VkDeviceAddress indirectCommandsCountAddress, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDecompressMemoryIndirectCountNV( commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride ); + } + + //=== VK_NV_device_generated_commands_compute === + + VULKAN_HPP_INLINE void vkGetPipelineIndirectMemoryRequirementsNV( VkDevice device, + VkComputePipelineCreateInfo const * pCreateInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineIndirectMemoryRequirementsNV( device, pCreateInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkCmdUpdatePipelineIndirectBufferNV( VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdUpdatePipelineIndirectBufferNV( commandBuffer, pipelineBindPoint, pipeline ); + } + + VULKAN_HPP_INLINE VkDeviceAddress vkGetPipelineIndirectDeviceAddressNV( VkDevice device, + VkPipelineIndirectDeviceAddressInfoNV const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineIndirectDeviceAddressNV( device, pInfo ); + } + +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + + VULKAN_HPP_INLINE VkResult vkGetNativeBufferPropertiesOHOS( VkDevice device, + struct OH_NativeBuffer const * buffer, + VkNativeBufferPropertiesOHOS * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetNativeBufferPropertiesOHOS( device, buffer, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetMemoryNativeBufferOHOS( VkDevice device, + VkMemoryGetNativeBufferInfoOHOS const * pInfo, + struct OH_NativeBuffer ** pBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryNativeBufferOHOS( device, pInfo, pBuffer ); + } +# endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_extended_dynamic_state3 === + + VULKAN_HPP_INLINE void vkCmdSetDepthClampEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthClampEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthClampEnableEXT( commandBuffer, depthClampEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetPolygonModeEXT( VkCommandBuffer commandBuffer, VkPolygonMode polygonMode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetPolygonModeEXT( commandBuffer, polygonMode ); + } + + VULKAN_HPP_INLINE void vkCmdSetRasterizationSamplesEXT( VkCommandBuffer commandBuffer, + VkSampleCountFlagBits rasterizationSamples ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRasterizationSamplesEXT( commandBuffer, rasterizationSamples ); + } + + VULKAN_HPP_INLINE void + vkCmdSetSampleMaskEXT( VkCommandBuffer commandBuffer, VkSampleCountFlagBits samples, VkSampleMask const * pSampleMask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetSampleMaskEXT( commandBuffer, samples, pSampleMask ); + } + + VULKAN_HPP_INLINE void vkCmdSetAlphaToCoverageEnableEXT( VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetAlphaToCoverageEnableEXT( commandBuffer, alphaToCoverageEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetAlphaToOneEnableEXT( VkCommandBuffer commandBuffer, VkBool32 alphaToOneEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetAlphaToOneEnableEXT( commandBuffer, alphaToOneEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetLogicOpEnableEXT( VkCommandBuffer commandBuffer, VkBool32 logicOpEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetLogicOpEnableEXT( commandBuffer, logicOpEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetColorBlendEnableEXT( VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + VkBool32 const * pColorBlendEnables ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetColorBlendEnableEXT( commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables ); + } + + VULKAN_HPP_INLINE void vkCmdSetColorBlendEquationEXT( VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + VkColorBlendEquationEXT const * pColorBlendEquations ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetColorBlendEquationEXT( commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations ); + } + + VULKAN_HPP_INLINE void vkCmdSetColorWriteMaskEXT( VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + VkColorComponentFlags const * pColorWriteMasks ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetColorWriteMaskEXT( commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks ); + } + + VULKAN_HPP_INLINE void vkCmdSetTessellationDomainOriginEXT( VkCommandBuffer commandBuffer, + VkTessellationDomainOrigin domainOrigin ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetTessellationDomainOriginEXT( commandBuffer, domainOrigin ); + } + + VULKAN_HPP_INLINE void vkCmdSetRasterizationStreamEXT( VkCommandBuffer commandBuffer, uint32_t rasterizationStream ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRasterizationStreamEXT( commandBuffer, rasterizationStream ); + } + + VULKAN_HPP_INLINE void + vkCmdSetConservativeRasterizationModeEXT( VkCommandBuffer commandBuffer, + VkConservativeRasterizationModeEXT conservativeRasterizationMode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetConservativeRasterizationModeEXT( commandBuffer, conservativeRasterizationMode ); + } + + VULKAN_HPP_INLINE void vkCmdSetExtraPrimitiveOverestimationSizeEXT( VkCommandBuffer commandBuffer, + float extraPrimitiveOverestimationSize ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetExtraPrimitiveOverestimationSizeEXT( commandBuffer, extraPrimitiveOverestimationSize ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthClipEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthClipEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthClipEnableEXT( commandBuffer, depthClipEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetSampleLocationsEnableEXT( VkCommandBuffer commandBuffer, VkBool32 sampleLocationsEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetSampleLocationsEnableEXT( commandBuffer, sampleLocationsEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetColorBlendAdvancedEXT( VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + VkColorBlendAdvancedEXT const * pColorBlendAdvanced ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetColorBlendAdvancedEXT( commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced ); + } + + VULKAN_HPP_INLINE void vkCmdSetProvokingVertexModeEXT( VkCommandBuffer commandBuffer, + VkProvokingVertexModeEXT provokingVertexMode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetProvokingVertexModeEXT( commandBuffer, provokingVertexMode ); + } + + VULKAN_HPP_INLINE void vkCmdSetLineRasterizationModeEXT( VkCommandBuffer commandBuffer, + VkLineRasterizationModeEXT lineRasterizationMode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetLineRasterizationModeEXT( commandBuffer, lineRasterizationMode ); + } + + VULKAN_HPP_INLINE void vkCmdSetLineStippleEnableEXT( VkCommandBuffer commandBuffer, VkBool32 stippledLineEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetLineStippleEnableEXT( commandBuffer, stippledLineEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthClipNegativeOneToOneEXT( VkCommandBuffer commandBuffer, VkBool32 negativeOneToOne ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthClipNegativeOneToOneEXT( commandBuffer, negativeOneToOne ); + } + + VULKAN_HPP_INLINE void vkCmdSetViewportWScalingEnableNV( VkCommandBuffer commandBuffer, VkBool32 viewportWScalingEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetViewportWScalingEnableNV( commandBuffer, viewportWScalingEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetViewportSwizzleNV( VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + VkViewportSwizzleNV const * pViewportSwizzles ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetViewportSwizzleNV( commandBuffer, firstViewport, viewportCount, pViewportSwizzles ); + } + + VULKAN_HPP_INLINE void vkCmdSetCoverageToColorEnableNV( VkCommandBuffer commandBuffer, VkBool32 coverageToColorEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetCoverageToColorEnableNV( commandBuffer, coverageToColorEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetCoverageToColorLocationNV( VkCommandBuffer commandBuffer, uint32_t coverageToColorLocation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetCoverageToColorLocationNV( commandBuffer, coverageToColorLocation ); + } + + VULKAN_HPP_INLINE void vkCmdSetCoverageModulationModeNV( VkCommandBuffer commandBuffer, + VkCoverageModulationModeNV coverageModulationMode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetCoverageModulationModeNV( commandBuffer, coverageModulationMode ); + } + + VULKAN_HPP_INLINE void vkCmdSetCoverageModulationTableEnableNV( VkCommandBuffer commandBuffer, + VkBool32 coverageModulationTableEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetCoverageModulationTableEnableNV( commandBuffer, coverageModulationTableEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetCoverageModulationTableNV( VkCommandBuffer commandBuffer, + uint32_t coverageModulationTableCount, + float const * pCoverageModulationTable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetCoverageModulationTableNV( commandBuffer, coverageModulationTableCount, pCoverageModulationTable ); + } + + VULKAN_HPP_INLINE void vkCmdSetShadingRateImageEnableNV( VkCommandBuffer commandBuffer, VkBool32 shadingRateImageEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetShadingRateImageEnableNV( commandBuffer, shadingRateImageEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetRepresentativeFragmentTestEnableNV( VkCommandBuffer commandBuffer, + VkBool32 representativeFragmentTestEnable ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetRepresentativeFragmentTestEnableNV( commandBuffer, representativeFragmentTestEnable ); + } + + VULKAN_HPP_INLINE void vkCmdSetCoverageReductionModeNV( VkCommandBuffer commandBuffer, + VkCoverageReductionModeNV coverageReductionMode ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetCoverageReductionModeNV( commandBuffer, coverageReductionMode ); + } + + //=== VK_ARM_tensors === + + VULKAN_HPP_INLINE VkResult vkCreateTensorARM( VkDevice device, + VkTensorCreateInfoARM const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkTensorARM * pTensor ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateTensorARM( device, pCreateInfo, pAllocator, pTensor ); + } + + VULKAN_HPP_INLINE void vkDestroyTensorARM( VkDevice device, VkTensorARM tensor, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyTensorARM( device, tensor, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreateTensorViewARM( VkDevice device, + VkTensorViewCreateInfoARM const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkTensorViewARM * pView ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateTensorViewARM( device, pCreateInfo, pAllocator, pView ); + } + + VULKAN_HPP_INLINE void + vkDestroyTensorViewARM( VkDevice device, VkTensorViewARM tensorView, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyTensorViewARM( device, tensorView, pAllocator ); + } + + VULKAN_HPP_INLINE void vkGetTensorMemoryRequirementsARM( VkDevice device, + VkTensorMemoryRequirementsInfoARM const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetTensorMemoryRequirementsARM( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE VkResult vkBindTensorMemoryARM( VkDevice device, + uint32_t bindInfoCount, + VkBindTensorMemoryInfoARM const * pBindInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindTensorMemoryARM( device, bindInfoCount, pBindInfos ); + } + + VULKAN_HPP_INLINE void vkGetDeviceTensorMemoryRequirementsARM( VkDevice device, + VkDeviceTensorMemoryRequirementsARM const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceTensorMemoryRequirementsARM( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkCmdCopyTensorARM( VkCommandBuffer commandBuffer, VkCopyTensorInfoARM const * pCopyTensorInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyTensorARM( commandBuffer, pCopyTensorInfo ); + } + + VULKAN_HPP_INLINE void + vkGetPhysicalDeviceExternalTensorPropertiesARM( VkPhysicalDevice physicalDevice, + VkPhysicalDeviceExternalTensorInfoARM const * pExternalTensorInfo, + VkExternalTensorPropertiesARM * pExternalTensorProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceExternalTensorPropertiesARM( physicalDevice, pExternalTensorInfo, pExternalTensorProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetTensorOpaqueCaptureDescriptorDataARM( VkDevice device, + VkTensorCaptureDescriptorDataInfoARM const * pInfo, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetTensorOpaqueCaptureDescriptorDataARM( device, pInfo, pData ); + } + + VULKAN_HPP_INLINE VkResult vkGetTensorViewOpaqueCaptureDescriptorDataARM( VkDevice device, + VkTensorViewCaptureDescriptorDataInfoARM const * pInfo, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetTensorViewOpaqueCaptureDescriptorDataARM( device, pInfo, pData ); + } + + //=== VK_EXT_shader_module_identifier === + + VULKAN_HPP_INLINE void + vkGetShaderModuleIdentifierEXT( VkDevice device, VkShaderModule shaderModule, VkShaderModuleIdentifierEXT * pIdentifier ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetShaderModuleIdentifierEXT( device, shaderModule, pIdentifier ); + } + + VULKAN_HPP_INLINE void vkGetShaderModuleCreateInfoIdentifierEXT( VkDevice device, + VkShaderModuleCreateInfo const * pCreateInfo, + VkShaderModuleIdentifierEXT * pIdentifier ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetShaderModuleCreateInfoIdentifierEXT( device, pCreateInfo, pIdentifier ); + } + + //=== VK_NV_optical_flow === + + VULKAN_HPP_INLINE VkResult + vkGetPhysicalDeviceOpticalFlowImageFormatsNV( VkPhysicalDevice physicalDevice, + VkOpticalFlowImageFormatInfoNV const * pOpticalFlowImageFormatInfo, + uint32_t * pFormatCount, + VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceOpticalFlowImageFormatsNV( physicalDevice, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties ); + } + + VULKAN_HPP_INLINE VkResult vkCreateOpticalFlowSessionNV( VkDevice device, + VkOpticalFlowSessionCreateInfoNV const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkOpticalFlowSessionNV * pSession ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateOpticalFlowSessionNV( device, pCreateInfo, pAllocator, pSession ); + } + + VULKAN_HPP_INLINE void + vkDestroyOpticalFlowSessionNV( VkDevice device, VkOpticalFlowSessionNV session, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyOpticalFlowSessionNV( device, session, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkBindOpticalFlowSessionImageNV( VkDevice device, + VkOpticalFlowSessionNV session, + VkOpticalFlowSessionBindingPointNV bindingPoint, + VkImageView view, + VkImageLayout layout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindOpticalFlowSessionImageNV( device, session, bindingPoint, view, layout ); + } + + VULKAN_HPP_INLINE void vkCmdOpticalFlowExecuteNV( VkCommandBuffer commandBuffer, + VkOpticalFlowSessionNV session, + VkOpticalFlowExecuteInfoNV const * pExecuteInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdOpticalFlowExecuteNV( commandBuffer, session, pExecuteInfo ); + } + + //=== VK_KHR_maintenance5 === + + VULKAN_HPP_INLINE void vkCmdBindIndexBuffer2KHR( + VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize size, VkIndexType indexType ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindIndexBuffer2KHR( commandBuffer, buffer, offset, size, indexType ); + } + + VULKAN_HPP_INLINE void + vkGetRenderingAreaGranularityKHR( VkDevice device, VkRenderingAreaInfo const * pRenderingAreaInfo, VkExtent2D * pGranularity ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetRenderingAreaGranularityKHR( device, pRenderingAreaInfo, pGranularity ); + } + + VULKAN_HPP_INLINE void vkGetDeviceImageSubresourceLayoutKHR( VkDevice device, + VkDeviceImageSubresourceInfo const * pInfo, + VkSubresourceLayout2 * pLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceImageSubresourceLayoutKHR( device, pInfo, pLayout ); + } + + VULKAN_HPP_INLINE void vkGetImageSubresourceLayout2KHR( VkDevice device, + VkImage image, + VkImageSubresource2 const * pSubresource, + VkSubresourceLayout2 * pLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetImageSubresourceLayout2KHR( device, image, pSubresource, pLayout ); + } + + //=== VK_AMD_anti_lag === + + VULKAN_HPP_INLINE void vkAntiLagUpdateAMD( VkDevice device, VkAntiLagDataAMD const * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkAntiLagUpdateAMD( device, pData ); + } + + //=== VK_KHR_present_wait2 === + + VULKAN_HPP_INLINE VkResult vkWaitForPresent2KHR( VkDevice device, + VkSwapchainKHR swapchain, + VkPresentWait2InfoKHR const * pPresentWait2Info ) const VULKAN_HPP_NOEXCEPT + { + return ::vkWaitForPresent2KHR( device, swapchain, pPresentWait2Info ); + } + + //=== VK_EXT_shader_object === + + VULKAN_HPP_INLINE VkResult vkCreateShadersEXT( VkDevice device, + uint32_t createInfoCount, + VkShaderCreateInfoEXT const * pCreateInfos, + VkAllocationCallbacks const * pAllocator, + VkShaderEXT * pShaders ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateShadersEXT( device, createInfoCount, pCreateInfos, pAllocator, pShaders ); + } + + VULKAN_HPP_INLINE void vkDestroyShaderEXT( VkDevice device, VkShaderEXT shader, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyShaderEXT( device, shader, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkGetShaderBinaryDataEXT( VkDevice device, VkShaderEXT shader, size_t * pDataSize, void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetShaderBinaryDataEXT( device, shader, pDataSize, pData ); + } + + VULKAN_HPP_INLINE void vkCmdBindShadersEXT( VkCommandBuffer commandBuffer, + uint32_t stageCount, + VkShaderStageFlagBits const * pStages, + VkShaderEXT const * pShaders ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindShadersEXT( commandBuffer, stageCount, pStages, pShaders ); + } + + VULKAN_HPP_INLINE void vkCmdSetDepthClampRangeEXT( VkCommandBuffer commandBuffer, + VkDepthClampModeEXT depthClampMode, + VkDepthClampRangeEXT const * pDepthClampRange ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDepthClampRangeEXT( commandBuffer, depthClampMode, pDepthClampRange ); + } + + //=== VK_KHR_pipeline_binary === + + VULKAN_HPP_INLINE VkResult vkCreatePipelineBinariesKHR( VkDevice device, + VkPipelineBinaryCreateInfoKHR const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkPipelineBinaryHandlesInfoKHR * pBinaries ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreatePipelineBinariesKHR( device, pCreateInfo, pAllocator, pBinaries ); + } + + VULKAN_HPP_INLINE void + vkDestroyPipelineBinaryKHR( VkDevice device, VkPipelineBinaryKHR pipelineBinary, VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyPipelineBinaryKHR( device, pipelineBinary, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkGetPipelineKeyKHR( VkDevice device, + VkPipelineCreateInfoKHR const * pPipelineCreateInfo, + VkPipelineBinaryKeyKHR * pPipelineKey ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineKeyKHR( device, pPipelineCreateInfo, pPipelineKey ); + } + + VULKAN_HPP_INLINE VkResult vkGetPipelineBinaryDataKHR( VkDevice device, + VkPipelineBinaryDataInfoKHR const * pInfo, + VkPipelineBinaryKeyKHR * pPipelineBinaryKey, + size_t * pPipelineBinaryDataSize, + void * pPipelineBinaryData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPipelineBinaryDataKHR( device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData ); + } + + VULKAN_HPP_INLINE VkResult vkReleaseCapturedPipelineDataKHR( VkDevice device, + VkReleaseCapturedPipelineDataInfoKHR const * pInfo, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkReleaseCapturedPipelineDataKHR( device, pInfo, pAllocator ); + } + + //=== VK_QCOM_tile_properties === + + VULKAN_HPP_INLINE VkResult vkGetFramebufferTilePropertiesQCOM( VkDevice device, + VkFramebuffer framebuffer, + uint32_t * pPropertiesCount, + VkTilePropertiesQCOM * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetFramebufferTilePropertiesQCOM( device, framebuffer, pPropertiesCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetDynamicRenderingTilePropertiesQCOM( VkDevice device, + VkRenderingInfo const * pRenderingInfo, + VkTilePropertiesQCOM * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDynamicRenderingTilePropertiesQCOM( device, pRenderingInfo, pProperties ); + } + + //=== VK_KHR_swapchain_maintenance1 === + + VULKAN_HPP_INLINE VkResult vkReleaseSwapchainImagesKHR( VkDevice device, VkReleaseSwapchainImagesInfoKHR const * pReleaseInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkReleaseSwapchainImagesKHR( device, pReleaseInfo ); + } + + //=== VK_NV_cooperative_vector === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceCooperativeVectorPropertiesNV( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkCooperativeVectorPropertiesNV * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceCooperativeVectorPropertiesNV( physicalDevice, pPropertyCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkConvertCooperativeVectorMatrixNV( VkDevice device, + VkConvertCooperativeVectorMatrixInfoNV const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkConvertCooperativeVectorMatrixNV( device, pInfo ); + } + + VULKAN_HPP_INLINE void vkCmdConvertCooperativeVectorMatrixNV( VkCommandBuffer commandBuffer, + uint32_t infoCount, + VkConvertCooperativeVectorMatrixInfoNV const * pInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdConvertCooperativeVectorMatrixNV( commandBuffer, infoCount, pInfos ); + } + + //=== VK_NV_low_latency2 === + + VULKAN_HPP_INLINE VkResult vkSetLatencySleepModeNV( VkDevice device, + VkSwapchainKHR swapchain, + VkLatencySleepModeInfoNV const * pSleepModeInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetLatencySleepModeNV( device, swapchain, pSleepModeInfo ); + } + + VULKAN_HPP_INLINE VkResult vkLatencySleepNV( VkDevice device, + VkSwapchainKHR swapchain, + VkLatencySleepInfoNV const * pSleepInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkLatencySleepNV( device, swapchain, pSleepInfo ); + } + + VULKAN_HPP_INLINE void + vkSetLatencyMarkerNV( VkDevice device, VkSwapchainKHR swapchain, VkSetLatencyMarkerInfoNV const * pLatencyMarkerInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkSetLatencyMarkerNV( device, swapchain, pLatencyMarkerInfo ); + } + + VULKAN_HPP_INLINE void + vkGetLatencyTimingsNV( VkDevice device, VkSwapchainKHR swapchain, VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetLatencyTimingsNV( device, swapchain, pLatencyMarkerInfo ); + } + + VULKAN_HPP_INLINE void vkQueueNotifyOutOfBandNV( VkQueue queue, VkOutOfBandQueueTypeInfoNV const * pQueueTypeInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkQueueNotifyOutOfBandNV( queue, pQueueTypeInfo ); + } + + //=== VK_KHR_cooperative_matrix === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( VkPhysicalDevice physicalDevice, + uint32_t * pPropertyCount, + VkCooperativeMatrixPropertiesKHR * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( physicalDevice, pPropertyCount, pProperties ); + } + + //=== VK_ARM_data_graph === + + VULKAN_HPP_INLINE VkResult vkCreateDataGraphPipelinesARM( VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + VkDataGraphPipelineCreateInfoARM const * pCreateInfos, + VkAllocationCallbacks const * pAllocator, + VkPipeline * pPipelines ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDataGraphPipelinesARM( device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); + } + + VULKAN_HPP_INLINE VkResult vkCreateDataGraphPipelineSessionARM( VkDevice device, + VkDataGraphPipelineSessionCreateInfoARM const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkDataGraphPipelineSessionARM * pSession ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateDataGraphPipelineSessionARM( device, pCreateInfo, pAllocator, pSession ); + } + + VULKAN_HPP_INLINE VkResult vkGetDataGraphPipelineSessionBindPointRequirementsARM( + VkDevice device, + VkDataGraphPipelineSessionBindPointRequirementsInfoARM const * pInfo, + uint32_t * pBindPointRequirementCount, + VkDataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDataGraphPipelineSessionBindPointRequirementsARM( device, pInfo, pBindPointRequirementCount, pBindPointRequirements ); + } + + VULKAN_HPP_INLINE void vkGetDataGraphPipelineSessionMemoryRequirementsARM( VkDevice device, + VkDataGraphPipelineSessionMemoryRequirementsInfoARM const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDataGraphPipelineSessionMemoryRequirementsARM( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE VkResult vkBindDataGraphPipelineSessionMemoryARM( + VkDevice device, uint32_t bindInfoCount, VkBindDataGraphPipelineSessionMemoryInfoARM const * pBindInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkBindDataGraphPipelineSessionMemoryARM( device, bindInfoCount, pBindInfos ); + } + + VULKAN_HPP_INLINE void vkDestroyDataGraphPipelineSessionARM( VkDevice device, + VkDataGraphPipelineSessionARM session, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyDataGraphPipelineSessionARM( device, session, pAllocator ); + } + + VULKAN_HPP_INLINE void vkCmdDispatchDataGraphARM( VkCommandBuffer commandBuffer, + VkDataGraphPipelineSessionARM session, + VkDataGraphPipelineDispatchInfoARM const * pInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDispatchDataGraphARM( commandBuffer, session, pInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetDataGraphPipelineAvailablePropertiesARM( VkDevice device, + VkDataGraphPipelineInfoARM const * pPipelineInfo, + uint32_t * pPropertiesCount, + VkDataGraphPipelinePropertyARM * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDataGraphPipelineAvailablePropertiesARM( device, pPipelineInfo, pPropertiesCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult vkGetDataGraphPipelinePropertiesARM( VkDevice device, + VkDataGraphPipelineInfoARM const * pPipelineInfo, + uint32_t propertiesCount, + VkDataGraphPipelinePropertyQueryResultARM * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDataGraphPipelinePropertiesARM( device, pPipelineInfo, propertiesCount, pProperties ); + } + + VULKAN_HPP_INLINE VkResult + vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t * pQueueFamilyDataGraphPropertyCount, + VkQueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + physicalDevice, queueFamilyIndex, pQueueFamilyDataGraphPropertyCount, pQueueFamilyDataGraphProperties ); + } + + VULKAN_HPP_INLINE void vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const * pQueueFamilyDataGraphProcessingEngineInfo, + VkQueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + physicalDevice, pQueueFamilyDataGraphProcessingEngineInfo, pQueueFamilyDataGraphProcessingEngineProperties ); + } + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + + VULKAN_HPP_INLINE void vkCmdSetAttachmentFeedbackLoopEnableEXT( VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetAttachmentFeedbackLoopEnableEXT( commandBuffer, aspectMask ); + } + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + + VULKAN_HPP_INLINE VkResult vkGetScreenBufferPropertiesQNX( VkDevice device, + struct _screen_buffer const * buffer, + VkScreenBufferPropertiesQNX * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetScreenBufferPropertiesQNX( device, buffer, pProperties ); + } +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_line_rasterization === + + VULKAN_HPP_INLINE void + vkCmdSetLineStippleKHR( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetLineStippleKHR( commandBuffer, lineStippleFactor, lineStipplePattern ); + } + + //=== VK_KHR_calibrated_timestamps === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( VkPhysicalDevice physicalDevice, + uint32_t * pTimeDomainCount, + VkTimeDomainKHR * pTimeDomains ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( physicalDevice, pTimeDomainCount, pTimeDomains ); + } + + VULKAN_HPP_INLINE VkResult vkGetCalibratedTimestampsKHR( VkDevice device, + uint32_t timestampCount, + VkCalibratedTimestampInfoKHR const * pTimestampInfos, + uint64_t * pTimestamps, + uint64_t * pMaxDeviation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetCalibratedTimestampsKHR( device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation ); + } + + //=== VK_KHR_maintenance6 === + + VULKAN_HPP_INLINE void vkCmdBindDescriptorSets2KHR( VkCommandBuffer commandBuffer, + VkBindDescriptorSetsInfo const * pBindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindDescriptorSets2KHR( commandBuffer, pBindDescriptorSetsInfo ); + } + + VULKAN_HPP_INLINE void vkCmdPushConstants2KHR( VkCommandBuffer commandBuffer, VkPushConstantsInfo const * pPushConstantsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushConstants2KHR( commandBuffer, pPushConstantsInfo ); + } + + VULKAN_HPP_INLINE void vkCmdPushDescriptorSet2KHR( VkCommandBuffer commandBuffer, + VkPushDescriptorSetInfo const * pPushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushDescriptorSet2KHR( commandBuffer, pPushDescriptorSetInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdPushDescriptorSetWithTemplate2KHR( VkCommandBuffer commandBuffer, + VkPushDescriptorSetWithTemplateInfo const * pPushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPushDescriptorSetWithTemplate2KHR( commandBuffer, pPushDescriptorSetWithTemplateInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdSetDescriptorBufferOffsets2EXT( VkCommandBuffer commandBuffer, + VkSetDescriptorBufferOffsetsInfoEXT const * pSetDescriptorBufferOffsetsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetDescriptorBufferOffsets2EXT( commandBuffer, pSetDescriptorBufferOffsetsInfo ); + } + + VULKAN_HPP_INLINE void vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( + VkCommandBuffer commandBuffer, + VkBindDescriptorBufferEmbeddedSamplersInfoEXT const * pBindDescriptorBufferEmbeddedSamplersInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo ); + } + + //=== VK_QCOM_tile_memory_heap === + + VULKAN_HPP_INLINE void vkCmdBindTileMemoryQCOM( VkCommandBuffer commandBuffer, + VkTileMemoryBindInfoQCOM const * pTileMemoryBindInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBindTileMemoryQCOM( commandBuffer, pTileMemoryBindInfo ); + } + + //=== VK_KHR_copy_memory_indirect === + + VULKAN_HPP_INLINE void vkCmdCopyMemoryIndirectKHR( VkCommandBuffer commandBuffer, + VkCopyMemoryIndirectInfoKHR const * pCopyMemoryIndirectInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyMemoryIndirectKHR( commandBuffer, pCopyMemoryIndirectInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdCopyMemoryToImageIndirectKHR( VkCommandBuffer commandBuffer, + VkCopyMemoryToImageIndirectInfoKHR const * pCopyMemoryToImageIndirectInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdCopyMemoryToImageIndirectKHR( commandBuffer, pCopyMemoryToImageIndirectInfo ); + } + + //=== VK_EXT_memory_decompression === + + VULKAN_HPP_INLINE void vkCmdDecompressMemoryEXT( VkCommandBuffer commandBuffer, + VkDecompressMemoryInfoEXT const * pDecompressMemoryInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDecompressMemoryEXT( commandBuffer, pDecompressMemoryInfoEXT ); + } + + VULKAN_HPP_INLINE void vkCmdDecompressMemoryIndirectCountEXT( VkCommandBuffer commandBuffer, + VkMemoryDecompressionMethodFlagsEXT decompressionMethod, + VkDeviceAddress indirectCommandsAddress, + VkDeviceAddress indirectCommandsCountAddress, + uint32_t maxDecompressionCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdDecompressMemoryIndirectCountEXT( + commandBuffer, decompressionMethod, indirectCommandsAddress, indirectCommandsCountAddress, maxDecompressionCount, stride ); + } + + //=== VK_NV_external_compute_queue === + + VULKAN_HPP_INLINE VkResult vkCreateExternalComputeQueueNV( VkDevice device, + VkExternalComputeQueueCreateInfoNV const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkExternalComputeQueueNV * pExternalQueue ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateExternalComputeQueueNV( device, pCreateInfo, pAllocator, pExternalQueue ); + } + + VULKAN_HPP_INLINE void vkDestroyExternalComputeQueueNV( VkDevice device, + VkExternalComputeQueueNV externalQueue, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyExternalComputeQueueNV( device, externalQueue, pAllocator ); + } + + VULKAN_HPP_INLINE void vkGetExternalComputeQueueDataNV( VkExternalComputeQueueNV externalQueue, + VkExternalComputeQueueDataParamsNV * params, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetExternalComputeQueueDataNV( externalQueue, params, pData ); + } + + //=== VK_NV_cluster_acceleration_structure === + + VULKAN_HPP_INLINE void vkGetClusterAccelerationStructureBuildSizesNV( VkDevice device, + VkClusterAccelerationStructureInputInfoNV const * pInfo, + VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetClusterAccelerationStructureBuildSizesNV( device, pInfo, pSizeInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdBuildClusterAccelerationStructureIndirectNV( VkCommandBuffer commandBuffer, + VkClusterAccelerationStructureCommandsInfoNV const * pCommandInfos ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBuildClusterAccelerationStructureIndirectNV( commandBuffer, pCommandInfos ); + } + + //=== VK_NV_partitioned_acceleration_structure === + + VULKAN_HPP_INLINE void + vkGetPartitionedAccelerationStructuresBuildSizesNV( VkDevice device, + VkPartitionedAccelerationStructureInstancesInputNV const * pInfo, + VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPartitionedAccelerationStructuresBuildSizesNV( device, pInfo, pSizeInfo ); + } + + VULKAN_HPP_INLINE void + vkCmdBuildPartitionedAccelerationStructuresNV( VkCommandBuffer commandBuffer, + VkBuildPartitionedAccelerationStructureInfoNV const * pBuildInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBuildPartitionedAccelerationStructuresNV( commandBuffer, pBuildInfo ); + } + + //=== VK_EXT_device_generated_commands === + + VULKAN_HPP_INLINE void vkGetGeneratedCommandsMemoryRequirementsEXT( VkDevice device, + VkGeneratedCommandsMemoryRequirementsInfoEXT const * pInfo, + VkMemoryRequirements2 * pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetGeneratedCommandsMemoryRequirementsEXT( device, pInfo, pMemoryRequirements ); + } + + VULKAN_HPP_INLINE void vkCmdPreprocessGeneratedCommandsEXT( VkCommandBuffer commandBuffer, + VkGeneratedCommandsInfoEXT const * pGeneratedCommandsInfo, + VkCommandBuffer stateCommandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdPreprocessGeneratedCommandsEXT( commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer ); + } + + VULKAN_HPP_INLINE void vkCmdExecuteGeneratedCommandsEXT( VkCommandBuffer commandBuffer, + VkBool32 isPreprocessed, + VkGeneratedCommandsInfoEXT const * pGeneratedCommandsInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdExecuteGeneratedCommandsEXT( commandBuffer, isPreprocessed, pGeneratedCommandsInfo ); + } + + VULKAN_HPP_INLINE VkResult vkCreateIndirectCommandsLayoutEXT( VkDevice device, + VkIndirectCommandsLayoutCreateInfoEXT const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateIndirectCommandsLayoutEXT( device, pCreateInfo, pAllocator, pIndirectCommandsLayout ); + } + + VULKAN_HPP_INLINE void vkDestroyIndirectCommandsLayoutEXT( VkDevice device, + VkIndirectCommandsLayoutEXT indirectCommandsLayout, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyIndirectCommandsLayoutEXT( device, indirectCommandsLayout, pAllocator ); + } + + VULKAN_HPP_INLINE VkResult vkCreateIndirectExecutionSetEXT( VkDevice device, + VkIndirectExecutionSetCreateInfoEXT const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkIndirectExecutionSetEXT * pIndirectExecutionSet ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateIndirectExecutionSetEXT( device, pCreateInfo, pAllocator, pIndirectExecutionSet ); + } + + VULKAN_HPP_INLINE void vkDestroyIndirectExecutionSetEXT( VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyIndirectExecutionSetEXT( device, indirectExecutionSet, pAllocator ); + } + + VULKAN_HPP_INLINE void + vkUpdateIndirectExecutionSetPipelineEXT( VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + VkWriteIndirectExecutionSetPipelineEXT const * pExecutionSetWrites ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUpdateIndirectExecutionSetPipelineEXT( device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites ); + } + + VULKAN_HPP_INLINE void vkUpdateIndirectExecutionSetShaderEXT( VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + VkWriteIndirectExecutionSetShaderEXT const * pExecutionSetWrites ) const VULKAN_HPP_NOEXCEPT + { + return ::vkUpdateIndirectExecutionSetShaderEXT( device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites ); + } + + //=== VK_KHR_device_fault === + + VULKAN_HPP_INLINE VkResult vkGetDeviceFaultReportsKHR( VkDevice device, + uint64_t timeout, + uint32_t * pFaultCounts, + VkDeviceFaultInfoKHR * pFaultInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceFaultReportsKHR( device, timeout, pFaultCounts, pFaultInfo ); + } + + VULKAN_HPP_INLINE VkResult vkGetDeviceFaultDebugInfoKHR( VkDevice device, VkDeviceFaultDebugInfoKHR * pDebugInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetDeviceFaultDebugInfoKHR( device, pDebugInfo ); + } + +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + + VULKAN_HPP_INLINE VkResult vkCreateSurfaceOHOS( VkInstance instance, + VkSurfaceCreateInfoOHOS const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateSurfaceOHOS( instance, pCreateInfo, pAllocator, pSurface ); + } +# endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_NV_cooperative_matrix2 === + + VULKAN_HPP_INLINE VkResult vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( + VkPhysicalDevice physicalDevice, uint32_t * pPropertyCount, VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( physicalDevice, pPropertyCount, pProperties ); + } + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + + VULKAN_HPP_INLINE VkResult vkGetMemoryMetalHandleEXT( VkDevice device, + VkMemoryGetMetalHandleInfoEXT const * pGetMetalHandleInfo, + void ** pHandle ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryMetalHandleEXT( device, pGetMetalHandleInfo, pHandle ); + } + + VULKAN_HPP_INLINE VkResult + vkGetMemoryMetalHandlePropertiesEXT( VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + void const * pHandle, + VkMemoryMetalHandlePropertiesEXT * pMemoryMetalHandleProperties ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetMemoryMetalHandlePropertiesEXT( device, handleType, pHandle, pMemoryMetalHandleProperties ); + } +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_performance_counters_by_region === + + VULKAN_HPP_INLINE VkResult vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t * pCounterCount, + VkPerformanceCounterARM * pCounters, + VkPerformanceCounterDescriptionARM * pCounterDescriptions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( + physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions ); + } + + //=== VK_ARM_shader_instrumentation === + + VULKAN_HPP_INLINE VkResult vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( + VkPhysicalDevice physicalDevice, uint32_t * pDescriptionCount, VkShaderInstrumentationMetricDescriptionARM * pDescriptions ) const VULKAN_HPP_NOEXCEPT + { + return ::vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( physicalDevice, pDescriptionCount, pDescriptions ); + } + + VULKAN_HPP_INLINE VkResult vkCreateShaderInstrumentationARM( VkDevice device, + VkShaderInstrumentationCreateInfoARM const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkShaderInstrumentationARM * pInstrumentation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateShaderInstrumentationARM( device, pCreateInfo, pAllocator, pInstrumentation ); + } + + VULKAN_HPP_INLINE void vkDestroyShaderInstrumentationARM( VkDevice device, + VkShaderInstrumentationARM instrumentation, + VkAllocationCallbacks const * pAllocator ) const VULKAN_HPP_NOEXCEPT + { + return ::vkDestroyShaderInstrumentationARM( device, instrumentation, pAllocator ); + } + + VULKAN_HPP_INLINE void vkCmdBeginShaderInstrumentationARM( VkCommandBuffer commandBuffer, + VkShaderInstrumentationARM instrumentation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginShaderInstrumentationARM( commandBuffer, instrumentation ); + } + + VULKAN_HPP_INLINE void vkCmdEndShaderInstrumentationARM( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndShaderInstrumentationARM( commandBuffer ); + } + + VULKAN_HPP_INLINE VkResult vkGetShaderInstrumentationValuesARM( VkDevice device, + VkShaderInstrumentationARM instrumentation, + uint32_t * pMetricBlockCount, + void * pMetricValues, + VkShaderInstrumentationValuesFlagsARM flags ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetShaderInstrumentationValuesARM( device, instrumentation, pMetricBlockCount, pMetricValues, flags ); + } + + VULKAN_HPP_INLINE void vkClearShaderInstrumentationMetricsARM( VkDevice device, VkShaderInstrumentationARM instrumentation ) const VULKAN_HPP_NOEXCEPT + { + return ::vkClearShaderInstrumentationMetricsARM( device, instrumentation ); + } + + //=== VK_EXT_fragment_density_map_offset === + + VULKAN_HPP_INLINE void vkCmdEndRendering2EXT( VkCommandBuffer commandBuffer, VkRenderingEndInfoKHR const * pRenderingEndInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndRendering2EXT( commandBuffer, pRenderingEndInfo ); + } + + //=== VK_EXT_custom_resolve === + + VULKAN_HPP_INLINE void vkCmdBeginCustomResolveEXT( VkCommandBuffer commandBuffer, + VkBeginCustomResolveInfoEXT const * pBeginCustomResolveInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdBeginCustomResolveEXT( commandBuffer, pBeginCustomResolveInfo ); + } + + //=== VK_KHR_maintenance10 === + + VULKAN_HPP_INLINE void vkCmdEndRendering2KHR( VkCommandBuffer commandBuffer, VkRenderingEndInfoKHR const * pRenderingEndInfo ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdEndRendering2KHR( commandBuffer, pRenderingEndInfo ); + } + + //=== VK_NV_compute_occupancy_priority === + + VULKAN_HPP_INLINE void vkCmdSetComputeOccupancyPriorityNV( VkCommandBuffer commandBuffer, + VkComputeOccupancyPriorityParametersNV const * pParameters ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCmdSetComputeOccupancyPriorityNV( commandBuffer, pParameters ); + } + +# if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + + VULKAN_HPP_INLINE VkResult vkCreateUbmSurfaceSEC( VkInstance instance, + VkUbmSurfaceCreateInfoSEC const * pCreateInfo, + VkAllocationCallbacks const * pAllocator, + VkSurfaceKHR * pSurface ) const VULKAN_HPP_NOEXCEPT + { + return ::vkCreateUbmSurfaceSEC( instance, pCreateInfo, pAllocator, pSurface ); + } + + VULKAN_HPP_INLINE VkBool32 vkGetPhysicalDeviceUbmPresentationSupportSEC( VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct ubm_device * device ) const VULKAN_HPP_NOEXCEPT + { + return ::vkGetPhysicalDeviceUbmPresentationSupportSEC( physicalDevice, queueFamilyIndex, device ); + } +# endif /*VK_USE_PLATFORM_UBM_SEC*/ +# endif /*VK_ONLY_EXPORTED_PROTOTYPES*/ + }; + + inline DispatchLoaderStatic & getDispatchLoaderStatic() + { + static DispatchLoaderStatic dls; + return dls; + } +#endif + + } // namespace detail +#if ( 14 <= VULKAN_HPP_CPP_VERSION ) + using std::exchange; +#else + template + VULKAN_HPP_CONSTEXPR_14 VULKAN_HPP_INLINE T exchange( T & obj, U && newValue ) + { + T oldValue = std::move( obj ); + obj = std::forward( newValue ); + return oldValue; + } +#endif + + struct AllocationCallbacks; + +#if !defined( VULKAN_HPP_NO_SMART_HANDLE ) + + namespace detail + { + template + class ObjectDestroy + { + public: + ObjectDestroy() = default; + + ObjectDestroy( OwnerType owner, + Optional allocationCallbacks VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_owner( owner ) + , m_allocationCallbacks( allocationCallbacks ) + , m_dispatch( &dispatch ) + { + } + + OwnerType getOwner() const VULKAN_HPP_NOEXCEPT + { + return m_owner; + } + + Optional getAllocator() const VULKAN_HPP_NOEXCEPT + { + return m_allocationCallbacks; + } + + Dispatch const & getDispatch() const VULKAN_HPP_NOEXCEPT + { + return *m_dispatch; + } + + protected: + template + void destroy( T t ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_owner && m_dispatch ); + m_owner.destroy( t, m_allocationCallbacks, *m_dispatch ); + } + + private: + OwnerType m_owner = {}; + Optional m_allocationCallbacks = nullptr; + Dispatch const * m_dispatch = nullptr; + }; + + class NoParent; + + template + class ObjectDestroy + { + public: + ObjectDestroy() = default; + + ObjectDestroy( Optional allocationCallbacks, + Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_allocationCallbacks( allocationCallbacks ) + , m_dispatch( &dispatch ) + { + } + + Optional getAllocator() const VULKAN_HPP_NOEXCEPT + { + return m_allocationCallbacks; + } + + Dispatch const & getDispatch() const VULKAN_HPP_NOEXCEPT + { + return *m_dispatch; + } + + protected: + template + void destroy( T t ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_dispatch ); + t.destroy( m_allocationCallbacks, *m_dispatch ); + } + + private: + Optional m_allocationCallbacks = nullptr; + Dispatch const * m_dispatch = nullptr; + }; + + template + class DummyDestroy + { + public: + DummyDestroy() = default; + + DummyDestroy( OwnerType owner, + Optional allocationCallbacks VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_owner( owner ) + , m_allocationCallbacks( allocationCallbacks ) + , m_dispatch( &dispatch ) + { + } + + OwnerType getOwner() const VULKAN_HPP_NOEXCEPT + { + return m_owner; + } + + Optional getAllocator() const VULKAN_HPP_NOEXCEPT + { + return m_allocationCallbacks; + } + + Dispatch const & getDispatch() const VULKAN_HPP_NOEXCEPT + { + return *m_dispatch; + } + + protected: + template + void destroy( T /*t*/ ) VULKAN_HPP_NOEXCEPT + { + } + + private: + OwnerType m_owner = {}; + Optional m_allocationCallbacks = nullptr; + Dispatch const * m_dispatch = nullptr; + }; + + template + class ObjectFree + { + public: + ObjectFree() = default; + + ObjectFree( OwnerType owner, + Optional allocationCallbacks VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_owner( owner ) + , m_allocationCallbacks( allocationCallbacks ) + , m_dispatch( &dispatch ) + { + } + + OwnerType getOwner() const VULKAN_HPP_NOEXCEPT + { + return m_owner; + } + + Optional getAllocator() const VULKAN_HPP_NOEXCEPT + { + return m_allocationCallbacks; + } + + Dispatch const & getDispatch() const VULKAN_HPP_NOEXCEPT + { + return *m_dispatch; + } + + protected: + template + void destroy( T t ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_owner && m_dispatch ); + ( m_owner.free )( t, m_allocationCallbacks, *m_dispatch ); + } + + private: + OwnerType m_owner = {}; + Optional m_allocationCallbacks = nullptr; + Dispatch const * m_dispatch = nullptr; + }; + + template + class ObjectRelease + { + public: + ObjectRelease() = default; + + ObjectRelease( OwnerType owner, Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_owner( owner ) + , m_dispatch( &dispatch ) + { + } + + OwnerType getOwner() const VULKAN_HPP_NOEXCEPT + { + return m_owner; + } + + Dispatch const & getDispatch() const VULKAN_HPP_NOEXCEPT + { + return *m_dispatch; + } + + protected: + template + void destroy( T t ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_owner && m_dispatch ); + m_owner.release( t, *m_dispatch ); + } + + private: + OwnerType m_owner = {}; + Dispatch const * m_dispatch = nullptr; + }; + + template + class PoolFree + { + public: + PoolFree() = default; + + PoolFree( OwnerType owner, PoolType pool, Dispatch const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : m_owner( owner ) + , m_pool( pool ) + , m_dispatch( &dispatch ) + { + } + + OwnerType getOwner() const VULKAN_HPP_NOEXCEPT + { + return m_owner; + } + + PoolType getPool() const VULKAN_HPP_NOEXCEPT + { + return m_pool; + } + + Dispatch const & getDispatch() const VULKAN_HPP_NOEXCEPT + { + return *m_dispatch; + } + + protected: + template + void destroy( T t ) VULKAN_HPP_NOEXCEPT + { + ( m_owner.free )( m_pool, t, *m_dispatch ); + } + + private: + OwnerType m_owner = OwnerType(); + PoolType m_pool = PoolType(); + Dispatch const * m_dispatch = nullptr; + }; + + } // namespace detail +#endif // !VULKAN_HPP_NO_SMART_HANDLE + + //================== + //=== BASE TYPEs === + //================== + + using Bool32 = uint32_t; + using DeviceAddress = uint64_t; + using DeviceSize = uint64_t; + using RemoteAddressNV = void *; + using SampleMask = uint32_t; + + template + struct CppType + { + }; +} // namespace VULKAN_HPP_NAMESPACE + +#include +#if !defined( VULKAN_HPP_NO_TO_STRING ) +# include +#endif + +#ifndef VULKAN_HPP_NO_EXCEPTIONS +VULKAN_HPP_EXPORT namespace std +{ + template <> + struct is_error_code_enum : public true_type + { + }; +} // namespace std +#endif + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ +#ifndef VULKAN_HPP_NO_EXCEPTIONS + class ErrorCategoryImpl : public std::error_category + { + public: + virtual char const * name() const VULKAN_HPP_NOEXCEPT override + { + return VULKAN_HPP_NAMESPACE_STRING "::Result"; + } + + virtual std::string message( int ev ) const override + { +# if defined( VULKAN_HPP_NO_TO_STRING ) + return std::to_string( ev ); +# else + return to_string( static_cast( ev ) ); +# endif + } + }; + + class Error + { + public: + Error() VULKAN_HPP_NOEXCEPT = default; + Error( Error const & ) VULKAN_HPP_NOEXCEPT = default; + virtual ~Error() VULKAN_HPP_NOEXCEPT = default; + + virtual char const * what() const VULKAN_HPP_NOEXCEPT = 0; + }; + + class LogicError + : public Error + , public std::logic_error + { + public: + explicit LogicError( std::string const & what ) : Error(), std::logic_error( what ) {} + + explicit LogicError( char const * what ) : Error(), std::logic_error( what ) {} + + virtual char const * what() const VULKAN_HPP_NOEXCEPT + { + return std::logic_error::what(); + } + }; + + class SystemError + : public Error + , public std::system_error + { + public: + SystemError( std::error_code ec ) : Error(), std::system_error( ec ) {} + + SystemError( std::error_code ec, std::string const & what ) : Error(), std::system_error( ec, what ) {} + + SystemError( std::error_code ec, char const * what ) : Error(), std::system_error( ec, what ) {} + + SystemError( int ev, std::error_category const & ecat ) : Error(), std::system_error( ev, ecat ) {} + + SystemError( int ev, std::error_category const & ecat, std::string const & what ) : Error(), std::system_error( ev, ecat, what ) {} + + SystemError( int ev, std::error_category const & ecat, char const * what ) : Error(), std::system_error( ev, ecat, what ) {} + + virtual char const * what() const VULKAN_HPP_NOEXCEPT + { + return std::system_error::what(); + } + }; + + VULKAN_HPP_INLINE std::error_category const & errorCategory() VULKAN_HPP_NOEXCEPT + { + static ErrorCategoryImpl instance; + return instance; + } + + VULKAN_HPP_INLINE std::error_code make_error_code( Result e ) VULKAN_HPP_NOEXCEPT + { + return std::error_code( static_cast( e ), errorCategory() ); + } + + VULKAN_HPP_INLINE std::error_condition make_error_condition( Result e ) VULKAN_HPP_NOEXCEPT + { + return std::error_condition( static_cast( e ), errorCategory() ); + } + + class OutOfHostMemoryError : public SystemError + { + public: + OutOfHostMemoryError( std::string const & message ) : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {} + + OutOfHostMemoryError( char const * message ) : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {} + }; + + class OutOfDeviceMemoryError : public SystemError + { + public: + OutOfDeviceMemoryError( std::string const & message ) : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {} + + OutOfDeviceMemoryError( char const * message ) : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {} + }; + + class InitializationFailedError : public SystemError + { + public: + InitializationFailedError( std::string const & message ) : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {} + + InitializationFailedError( char const * message ) : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {} + }; + + class DeviceLostError : public SystemError + { + public: + DeviceLostError( std::string const & message ) : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {} + + DeviceLostError( char const * message ) : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {} + }; + + class MemoryMapFailedError : public SystemError + { + public: + MemoryMapFailedError( std::string const & message ) : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {} + + MemoryMapFailedError( char const * message ) : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {} + }; + + class LayerNotPresentError : public SystemError + { + public: + LayerNotPresentError( std::string const & message ) : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {} + + LayerNotPresentError( char const * message ) : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {} + }; + + class ExtensionNotPresentError : public SystemError + { + public: + ExtensionNotPresentError( std::string const & message ) : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {} + + ExtensionNotPresentError( char const * message ) : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {} + }; + + class FeatureNotPresentError : public SystemError + { + public: + FeatureNotPresentError( std::string const & message ) : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {} + + FeatureNotPresentError( char const * message ) : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {} + }; + + class IncompatibleDriverError : public SystemError + { + public: + IncompatibleDriverError( std::string const & message ) : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {} + + IncompatibleDriverError( char const * message ) : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {} + }; + + class TooManyObjectsError : public SystemError + { + public: + TooManyObjectsError( std::string const & message ) : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {} + + TooManyObjectsError( char const * message ) : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {} + }; + + class FormatNotSupportedError : public SystemError + { + public: + FormatNotSupportedError( std::string const & message ) : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {} + + FormatNotSupportedError( char const * message ) : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {} + }; + + class FragmentedPoolError : public SystemError + { + public: + FragmentedPoolError( std::string const & message ) : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {} + + FragmentedPoolError( char const * message ) : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {} + }; + + class UnknownError : public SystemError + { + public: + UnknownError( std::string const & message ) : SystemError( make_error_code( Result::eErrorUnknown ), message ) {} + + UnknownError( char const * message ) : SystemError( make_error_code( Result::eErrorUnknown ), message ) {} + }; + + class ValidationFailedError : public SystemError + { + public: + ValidationFailedError( std::string const & message ) : SystemError( make_error_code( Result::eErrorValidationFailed ), message ) {} + + ValidationFailedError( char const * message ) : SystemError( make_error_code( Result::eErrorValidationFailed ), message ) {} + }; + + class OutOfPoolMemoryError : public SystemError + { + public: + OutOfPoolMemoryError( std::string const & message ) : SystemError( make_error_code( Result::eErrorOutOfPoolMemory ), message ) {} + + OutOfPoolMemoryError( char const * message ) : SystemError( make_error_code( Result::eErrorOutOfPoolMemory ), message ) {} + }; + + class InvalidExternalHandleError : public SystemError + { + public: + InvalidExternalHandleError( std::string const & message ) : SystemError( make_error_code( Result::eErrorInvalidExternalHandle ), message ) {} + + InvalidExternalHandleError( char const * message ) : SystemError( make_error_code( Result::eErrorInvalidExternalHandle ), message ) {} + }; + + class InvalidOpaqueCaptureAddressError : public SystemError + { + public: + InvalidOpaqueCaptureAddressError( std::string const & message ) : SystemError( make_error_code( Result::eErrorInvalidOpaqueCaptureAddress ), message ) {} + + InvalidOpaqueCaptureAddressError( char const * message ) : SystemError( make_error_code( Result::eErrorInvalidOpaqueCaptureAddress ), message ) {} + }; + + class FragmentationError : public SystemError + { + public: + FragmentationError( std::string const & message ) : SystemError( make_error_code( Result::eErrorFragmentation ), message ) {} + + FragmentationError( char const * message ) : SystemError( make_error_code( Result::eErrorFragmentation ), message ) {} + }; + + class NotPermittedError : public SystemError + { + public: + NotPermittedError( std::string const & message ) : SystemError( make_error_code( Result::eErrorNotPermitted ), message ) {} + + NotPermittedError( char const * message ) : SystemError( make_error_code( Result::eErrorNotPermitted ), message ) {} + }; + + class SurfaceLostKHRError : public SystemError + { + public: + SurfaceLostKHRError( std::string const & message ) : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {} + + SurfaceLostKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {} + }; + + class NativeWindowInUseKHRError : public SystemError + { + public: + NativeWindowInUseKHRError( std::string const & message ) : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {} + + NativeWindowInUseKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {} + }; + + class OutOfDateKHRError : public SystemError + { + public: + OutOfDateKHRError( std::string const & message ) : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {} + + OutOfDateKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {} + }; + + class IncompatibleDisplayKHRError : public SystemError + { + public: + IncompatibleDisplayKHRError( std::string const & message ) : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {} + + IncompatibleDisplayKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {} + }; + + class InvalidShaderNVError : public SystemError + { + public: + InvalidShaderNVError( std::string const & message ) : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {} + + InvalidShaderNVError( char const * message ) : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {} + }; + + class ImageUsageNotSupportedKHRError : public SystemError + { + public: + ImageUsageNotSupportedKHRError( std::string const & message ) : SystemError( make_error_code( Result::eErrorImageUsageNotSupportedKHR ), message ) {} + + ImageUsageNotSupportedKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorImageUsageNotSupportedKHR ), message ) {} + }; + + class VideoPictureLayoutNotSupportedKHRError : public SystemError + { + public: + VideoPictureLayoutNotSupportedKHRError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorVideoPictureLayoutNotSupportedKHR ), message ) + { + } + + VideoPictureLayoutNotSupportedKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorVideoPictureLayoutNotSupportedKHR ), message ) + { + } + }; + + class VideoProfileOperationNotSupportedKHRError : public SystemError + { + public: + VideoProfileOperationNotSupportedKHRError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorVideoProfileOperationNotSupportedKHR ), message ) + { + } + + VideoProfileOperationNotSupportedKHRError( char const * message ) + : SystemError( make_error_code( Result::eErrorVideoProfileOperationNotSupportedKHR ), message ) + { + } + }; + + class VideoProfileFormatNotSupportedKHRError : public SystemError + { + public: + VideoProfileFormatNotSupportedKHRError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorVideoProfileFormatNotSupportedKHR ), message ) + { + } + + VideoProfileFormatNotSupportedKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorVideoProfileFormatNotSupportedKHR ), message ) + { + } + }; + + class VideoProfileCodecNotSupportedKHRError : public SystemError + { + public: + VideoProfileCodecNotSupportedKHRError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorVideoProfileCodecNotSupportedKHR ), message ) + { + } + + VideoProfileCodecNotSupportedKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorVideoProfileCodecNotSupportedKHR ), message ) {} + }; + + class VideoStdVersionNotSupportedKHRError : public SystemError + { + public: + VideoStdVersionNotSupportedKHRError( std::string const & message ) : SystemError( make_error_code( Result::eErrorVideoStdVersionNotSupportedKHR ), message ) + { + } + + VideoStdVersionNotSupportedKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorVideoStdVersionNotSupportedKHR ), message ) {} + }; + + class InvalidDrmFormatModifierPlaneLayoutEXTError : public SystemError + { + public: + InvalidDrmFormatModifierPlaneLayoutEXTError( std::string const & message ) + : SystemError( make_error_code( Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT ), message ) + { + } + + InvalidDrmFormatModifierPlaneLayoutEXTError( char const * message ) + : SystemError( make_error_code( Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT ), message ) + { + } + }; + + class PresentTimingQueueFullEXTError : public SystemError + { + public: + PresentTimingQueueFullEXTError( std::string const & message ) : SystemError( make_error_code( Result::eErrorPresentTimingQueueFullEXT ), message ) {} + + PresentTimingQueueFullEXTError( char const * message ) : SystemError( make_error_code( Result::eErrorPresentTimingQueueFullEXT ), message ) {} + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + class FullScreenExclusiveModeLostEXTError : public SystemError + { + public: + FullScreenExclusiveModeLostEXTError( std::string const & message ) : SystemError( make_error_code( Result::eErrorFullScreenExclusiveModeLostEXT ), message ) + { + } + + FullScreenExclusiveModeLostEXTError( char const * message ) : SystemError( make_error_code( Result::eErrorFullScreenExclusiveModeLostEXT ), message ) {} + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + class InvalidVideoStdParametersKHRError : public SystemError + { + public: + InvalidVideoStdParametersKHRError( std::string const & message ) : SystemError( make_error_code( Result::eErrorInvalidVideoStdParametersKHR ), message ) {} + + InvalidVideoStdParametersKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorInvalidVideoStdParametersKHR ), message ) {} + }; + + class CompressionExhaustedEXTError : public SystemError + { + public: + CompressionExhaustedEXTError( std::string const & message ) : SystemError( make_error_code( Result::eErrorCompressionExhaustedEXT ), message ) {} + + CompressionExhaustedEXTError( char const * message ) : SystemError( make_error_code( Result::eErrorCompressionExhaustedEXT ), message ) {} + }; + + class NotEnoughSpaceKHRError : public SystemError + { + public: + NotEnoughSpaceKHRError( std::string const & message ) : SystemError( make_error_code( Result::eErrorNotEnoughSpaceKHR ), message ) {} + + NotEnoughSpaceKHRError( char const * message ) : SystemError( make_error_code( Result::eErrorNotEnoughSpaceKHR ), message ) {} + }; + + namespace detail + { + [[noreturn]] VULKAN_HPP_INLINE void throwResultException( Result result, char const * message ) + { + switch ( result ) + { + case Result::eErrorOutOfHostMemory : throw OutOfHostMemoryError( message ); + case Result::eErrorOutOfDeviceMemory : throw OutOfDeviceMemoryError( message ); + case Result::eErrorInitializationFailed : throw InitializationFailedError( message ); + case Result::eErrorDeviceLost : throw DeviceLostError( message ); + case Result::eErrorMemoryMapFailed : throw MemoryMapFailedError( message ); + case Result::eErrorLayerNotPresent : throw LayerNotPresentError( message ); + case Result::eErrorExtensionNotPresent : throw ExtensionNotPresentError( message ); + case Result::eErrorFeatureNotPresent : throw FeatureNotPresentError( message ); + case Result::eErrorIncompatibleDriver : throw IncompatibleDriverError( message ); + case Result::eErrorTooManyObjects : throw TooManyObjectsError( message ); + case Result::eErrorFormatNotSupported : throw FormatNotSupportedError( message ); + case Result::eErrorFragmentedPool : throw FragmentedPoolError( message ); + case Result::eErrorUnknown : throw UnknownError( message ); + case Result::eErrorValidationFailed : throw ValidationFailedError( message ); + case Result::eErrorOutOfPoolMemory : throw OutOfPoolMemoryError( message ); + case Result::eErrorInvalidExternalHandle : throw InvalidExternalHandleError( message ); + case Result::eErrorInvalidOpaqueCaptureAddress : throw InvalidOpaqueCaptureAddressError( message ); + case Result::eErrorFragmentation : throw FragmentationError( message ); + case Result::eErrorNotPermitted : throw NotPermittedError( message ); + case Result::eErrorSurfaceLostKHR : throw SurfaceLostKHRError( message ); + case Result::eErrorNativeWindowInUseKHR : throw NativeWindowInUseKHRError( message ); + case Result::eErrorOutOfDateKHR : throw OutOfDateKHRError( message ); + case Result::eErrorIncompatibleDisplayKHR : throw IncompatibleDisplayKHRError( message ); + case Result::eErrorInvalidShaderNV : throw InvalidShaderNVError( message ); + case Result::eErrorImageUsageNotSupportedKHR : throw ImageUsageNotSupportedKHRError( message ); + case Result::eErrorVideoPictureLayoutNotSupportedKHR : throw VideoPictureLayoutNotSupportedKHRError( message ); + case Result::eErrorVideoProfileOperationNotSupportedKHR : throw VideoProfileOperationNotSupportedKHRError( message ); + case Result::eErrorVideoProfileFormatNotSupportedKHR : throw VideoProfileFormatNotSupportedKHRError( message ); + case Result::eErrorVideoProfileCodecNotSupportedKHR : throw VideoProfileCodecNotSupportedKHRError( message ); + case Result::eErrorVideoStdVersionNotSupportedKHR : throw VideoStdVersionNotSupportedKHRError( message ); + case Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT: throw InvalidDrmFormatModifierPlaneLayoutEXTError( message ); + case Result::eErrorPresentTimingQueueFullEXT : throw PresentTimingQueueFullEXTError( message ); +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + case Result::eErrorFullScreenExclusiveModeLostEXT: throw FullScreenExclusiveModeLostEXTError( message ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case Result::eErrorInvalidVideoStdParametersKHR: throw InvalidVideoStdParametersKHRError( message ); + case Result::eErrorCompressionExhaustedEXT : throw CompressionExhaustedEXTError( message ); + case Result::eErrorNotEnoughSpaceKHR : throw NotEnoughSpaceKHRError( message ); + default : throw SystemError( make_error_code( result ), message ); + } + } + } // namespace detail +#endif + + template + struct ResultValue + { +#ifdef VULKAN_HPP_HAS_NOEXCEPT + ResultValue( Result r, T & v ) VULKAN_HPP_NOEXCEPT( VULKAN_HPP_NOEXCEPT( T( v ) ) ) +#else + ResultValue( Result r, T & v ) +#endif + : result( r ), value( v ) + { + } + +#ifdef VULKAN_HPP_HAS_NOEXCEPT + ResultValue( Result r, T && v ) VULKAN_HPP_NOEXCEPT( VULKAN_HPP_NOEXCEPT( T( std::move( v ) ) ) ) +#else + ResultValue( Result r, T && v ) +#endif + : result( r ), value( std::move( v ) ) + { + } + + Result result; + T value; + + operator std::tuple() VULKAN_HPP_NOEXCEPT + { + return std::tuple( result, value ); + } + + std::tuple asTuple() && + { + return std::make_tuple( result, std::move( value ) ); + } + + // std::expected-look alike + bool has_value() const VULKAN_HPP_NOEXCEPT + { + return result == vk::Result::eSuccess; + } + + T const * operator->() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( has_value() ); + return &value; + } + + T * operator->() VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( has_value() ); + return &value; + } + + T const & operator*() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( has_value() ); + return value; + } + + T & operator*() VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( has_value() ); + return value; + } + }; + + template + struct ResultValueType + { +#ifdef VULKAN_HPP_NO_EXCEPTIONS +# ifdef VULKAN_HPP_EXPECTED + using type = VULKAN_HPP_EXPECTED; +# else + using type = ResultValue; +# endif +#else + using type = T; +#endif + }; + + template <> + struct ResultValueType + { +#ifdef VULKAN_HPP_NO_EXCEPTIONS +# ifdef VULKAN_HPP_EXPECTED + using type = VULKAN_HPP_EXPECTED; +# else + using type = Result; +# endif +#else + using type = void; +#endif + }; + + namespace detail + { + template + VULKAN_HPP_CONSTEXPR bool ignore( T const & ) VULKAN_HPP_NOEXCEPT + { + return true; + } + + VULKAN_HPP_INLINE typename ResultValueType::type createResultValueType( Result result ) + { +#if defined( VULKAN_HPP_NO_EXCEPTIONS ) +# ifdef VULKAN_HPP_UNEXPECTED + if ( result == Result::eSuccess ) + { + return {}; + } + return VULKAN_HPP_UNEXPECTED( result ); +# else + return result; +# endif +#else + ignore( result ); +#endif + } + + template + VULKAN_HPP_INLINE typename ResultValueType::type createResultValueType( Result result, T & data ) + { +#if defined( VULKAN_HPP_NO_EXCEPTIONS ) +# ifdef VULKAN_HPP_EXPECTED + if ( result == Result::eSuccess ) + { + return data; + } + return VULKAN_HPP_UNEXPECTED( data ); +# else + return ResultValue( result, data ); +# endif +#else + ignore( result ); + return data; +#endif + } + + template + VULKAN_HPP_INLINE typename ResultValueType::type createResultValueType( Result result, T && data ) + { +#if defined( VULKAN_HPP_NO_EXCEPTIONS ) +# ifdef VULKAN_HPP_EXPECTED + if ( result == Result::eSuccess ) + { + return std::move( data ); + } + return VULKAN_HPP_UNEXPECTED( result ); +# else + return ResultValue( result, std::move( data ) ); +# endif +#else + ignore( result ); + return std::move( data ); +#endif + } + } // namespace detail + + namespace detail + { + VULKAN_HPP_INLINE void resultCheck( Result result, char const * message ) + { +#ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( result ); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty + ignore( message ); + VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); +#else + if ( result != Result::eSuccess ) + { + throwResultException( result, message ); + } +#endif + } + + VULKAN_HPP_INLINE void resultCheck( Result result, char const * message, std::initializer_list successCodes ) + { +#ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( result ); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty + ignore( message ); + ignore( successCodes ); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty + VULKAN_HPP_ASSERT_ON_RESULT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() ); +#else + if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() ) + { + throwResultException( result, message ); + } +#endif + } + + template + VULKAN_HPP_INLINE void resultCheck( Result result, + char const * message, + std::initializer_list successCodes, + VkDevice device, + std::vector const & pipelines, + AllocationCallbacks const * pAllocator, + Dispatch const & d ) + { +#ifdef VULKAN_HPP_NO_EXCEPTIONS + ignore( result ); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty + ignore( message ); + ignore( successCodes ); // just in case VULKAN_HPP_ASSERT_ON_RESULT is empty + ignore( device ); + ignore( pipelines ); + ignore( pAllocator ); + ignore( d ); + VULKAN_HPP_ASSERT_ON_RESULT( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() ); +#else + if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() ) + { + for ( HandleType pipeline : pipelines ) + { + d.vkDestroyPipeline( device, static_cast( pipeline ), reinterpret_cast( pAllocator ) ); + } + throwResultException( result, message ); + } +#endif + } + } // namespace detail + + //=========================== + //=== CONSTEXPR CONSTANTs === + //=========================== + + //=== VK_VERSION_1_0 === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t False = VK_FALSE; + VULKAN_HPP_CONSTEXPR_INLINE float LodClampNone = VK_LOD_CLAMP_NONE; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t QueueFamilyIgnored = VK_QUEUE_FAMILY_IGNORED; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t RemainingArrayLayers = VK_REMAINING_ARRAY_LAYERS; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t RemainingMipLevels = VK_REMAINING_MIP_LEVELS; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t True = VK_TRUE; + VULKAN_HPP_CONSTEXPR_INLINE uint64_t WholeSize = VK_WHOLE_SIZE; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxMemoryTypes = VK_MAX_MEMORY_TYPES; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxPhysicalDeviceNameSize = VK_MAX_PHYSICAL_DEVICE_NAME_SIZE; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t UuidSize = VK_UUID_SIZE; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxExtensionNameSize = VK_MAX_EXTENSION_NAME_SIZE; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxDescriptionSize = VK_MAX_DESCRIPTION_SIZE; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxMemoryHeaps = VK_MAX_MEMORY_HEAPS; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t AttachmentUnused = VK_ATTACHMENT_UNUSED; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t SubpassExternal = VK_SUBPASS_EXTERNAL; + + //=== VK_VERSION_1_1 === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxDeviceGroupSize = VK_MAX_DEVICE_GROUP_SIZE; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t LuidSize = VK_LUID_SIZE; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t QueueFamilyExternal = VK_QUEUE_FAMILY_EXTERNAL; + + //=== VK_VERSION_1_2 === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxDriverNameSize = VK_MAX_DRIVER_NAME_SIZE; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxDriverInfoSize = VK_MAX_DRIVER_INFO_SIZE; + + //=== VK_VERSION_1_4 === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxGlobalPrioritySize = VK_MAX_GLOBAL_PRIORITY_SIZE; + + //=== VK_KHR_device_group_creation === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxDeviceGroupSizeKHR = VK_MAX_DEVICE_GROUP_SIZE_KHR; + + //=== VK_KHR_external_memory_capabilities === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t LuidSizeKHR = VK_LUID_SIZE_KHR; + + //=== VK_KHR_external_memory === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t QueueFamilyExternalKHR = VK_QUEUE_FAMILY_EXTERNAL_KHR; + + //=== VK_EXT_queue_family_foreign === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t QueueFamilyForeignEXT = VK_QUEUE_FAMILY_FOREIGN_EXT; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t ShaderIndexUnusedAMDX = VK_SHADER_INDEX_UNUSED_AMDX; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_ray_tracing_pipeline === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t ShaderUnusedKHR = VK_SHADER_UNUSED_KHR; + + //=== VK_NV_ray_tracing === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t ShaderUnusedNV = VK_SHADER_UNUSED_NV; + + //=== VK_KHR_global_priority === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxGlobalPrioritySizeKHR = VK_MAX_GLOBAL_PRIORITY_SIZE_KHR; + + //=== VK_KHR_driver_properties === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxDriverNameSizeKHR = VK_MAX_DRIVER_NAME_SIZE_KHR; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxDriverInfoSizeKHR = VK_MAX_DRIVER_INFO_SIZE_KHR; + + //=== VK_EXT_global_priority_query === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxGlobalPrioritySizeEXT = VK_MAX_GLOBAL_PRIORITY_SIZE_EXT; + + //=== VK_EXT_image_sliced_view_of_3d === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Remaining3DSlicesEXT = VK_REMAINING_3D_SLICES_EXT; + + //=== VK_EXT_shader_module_identifier === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxShaderModuleIdentifierSizeEXT = VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_dense_geometry_format === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t CompressedTriangleFormatDgf1ByteAlignmentAMDX = VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t CompressedTriangleFormatDgf1ByteStrideAMDX = VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_pipeline_binary === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxPipelineBinaryKeySizeKHR = VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR; + + //=== VK_ARM_data_graph === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxPhysicalDeviceDataGraphOperationSetNameSizeARM = VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM; + + //=== VK_KHR_video_decode_av1 === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxVideoAv1ReferencesPerFrameKHR = VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR; + + //=== VK_KHR_video_decode_vp9 === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t MaxVideoVp9ReferencesPerFrameKHR = VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR; + + //=== VK_NV_partitioned_acceleration_structure === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t PartitionedAccelerationStructurePartitionIndexGlobalNV = VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV; + + //=== VK_QCOM_data_graph_model === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t DataGraphModelToolchainVersionLengthQCOM = VK_DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM; + + //=== VK_NV_compute_occupancy_priority === + VULKAN_HPP_CONSTEXPR_INLINE float ComputeOccupancyPriorityLowNV = VK_COMPUTE_OCCUPANCY_PRIORITY_LOW_NV; + VULKAN_HPP_CONSTEXPR_INLINE float ComputeOccupancyPriorityNormalNV = VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV; + VULKAN_HPP_CONSTEXPR_INLINE float ComputeOccupancyPriorityHighNV = VK_COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV; + + //======================== + //=== CONSTEXPR VALUEs === + //======================== + VULKAN_HPP_CONSTEXPR_INLINE uint32_t HeaderVersion = VK_HEADER_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Use64BitPtrDefines = VK_USE_64_BIT_PTR_DEFINES; + + //========================= + //=== CONSTEXPR CALLEEs === + //========================= + template ::value>::type> + VULKAN_HPP_CONSTEXPR uint32_t apiVersionMajor( T const version ) + { + return ( ( (uint32_t)( version ) >> 22U ) & 0x7FU ); + } + template ::value>::type> + VULKAN_HPP_CONSTEXPR uint32_t apiVersionMinor( T const version ) + { + return ( ( (uint32_t)( version ) >> 12U ) & 0x3FFU ); + } + template ::value>::type> + VULKAN_HPP_CONSTEXPR uint32_t apiVersionPatch( T const version ) + { + return ( (uint32_t)( version ) & 0xFFFU ); + } + template ::value>::type> + VULKAN_HPP_CONSTEXPR uint32_t apiVersionVariant( T const version ) + { + return ( (uint32_t)( version ) >> 29U ); + } + template ::value>::type> + VULKAN_HPP_CONSTEXPR uint32_t makeApiVersion( T const variant, T const major, T const minor, T const patch ) + { + return ( ( ( (uint32_t)( variant ) ) << 29U ) | ( ( (uint32_t)( major ) ) << 22U ) | ( ( (uint32_t)( minor ) ) << 12U ) | ( (uint32_t)( patch ) ) ); + } + template ::value>::type> + VULKAN_HPP_CONSTEXPR uint32_t makeVersion( T const major, T const minor, T const patch ) + { + return ( ( ( (uint32_t)( major ) ) << 22U ) | ( ( (uint32_t)( minor ) ) << 12U ) | ( (uint32_t)( patch ) ) ); + } + template ::value>::type> + VULKAN_HPP_CONSTEXPR uint32_t versionMajor( T const version ) + { + return ( (uint32_t)( version ) >> 22U ); + } + template ::value>::type> + VULKAN_HPP_CONSTEXPR uint32_t versionMinor( T const version ) + { + return ( ( (uint32_t)( version ) >> 12U ) & 0x3FFU ); + } + template ::value>::type> + VULKAN_HPP_CONSTEXPR uint32_t versionPatch( T const version ) + { + return ( (uint32_t)( version ) & 0xFFFU ); + } + + //========================= + //=== CONSTEXPR CALLERs === + //========================= + VULKAN_HPP_CONSTEXPR_INLINE auto ApiVersion = makeApiVersion( 0, 1, 0, 0 ); + VULKAN_HPP_CONSTEXPR_INLINE auto ApiVersion10 = makeApiVersion( 0, 1, 0, 0 ); + VULKAN_HPP_CONSTEXPR_INLINE auto ApiVersion11 = makeApiVersion( 0, 1, 1, 0 ); + VULKAN_HPP_CONSTEXPR_INLINE auto ApiVersion12 = makeApiVersion( 0, 1, 2, 0 ); + VULKAN_HPP_CONSTEXPR_INLINE auto ApiVersion13 = makeApiVersion( 0, 1, 3, 0 ); + VULKAN_HPP_CONSTEXPR_INLINE auto ApiVersion14 = makeApiVersion( 0, 1, 4, 0 ); + VULKAN_HPP_CONSTEXPR_INLINE auto HeaderVersionComplete = makeApiVersion( 0, 1, 4, VK_HEADER_VERSION ); + + //================================= + //=== CONSTEXPR EXTENSION NAMEs === + //================================= + + //=== VK_KHR_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSurfaceSpecVersion = VK_KHR_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSurfaceExtensionName = VK_KHR_SURFACE_EXTENSION_NAME; + + //=== VK_KHR_swapchain === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSwapchainSpecVersion = VK_KHR_SWAPCHAIN_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSwapchainExtensionName = VK_KHR_SWAPCHAIN_EXTENSION_NAME; + + //=== VK_KHR_display === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDisplaySpecVersion = VK_KHR_DISPLAY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDisplayExtensionName = VK_KHR_DISPLAY_EXTENSION_NAME; + + //=== VK_KHR_display_swapchain === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDisplaySwapchainSpecVersion = VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDisplaySwapchainExtensionName = VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRXlibSurfaceSpecVersion = VK_KHR_XLIB_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRXlibSurfaceExtensionName = VK_KHR_XLIB_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRXcbSurfaceSpecVersion = VK_KHR_XCB_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRXcbSurfaceExtensionName = VK_KHR_XCB_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRWaylandSurfaceSpecVersion = VK_KHR_WAYLAND_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRWaylandSurfaceExtensionName = VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRAndroidSurfaceSpecVersion = VK_KHR_ANDROID_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRAndroidSurfaceExtensionName = VK_KHR_ANDROID_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRWin32SurfaceSpecVersion = VK_KHR_WIN32_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRWin32SurfaceExtensionName = VK_KHR_WIN32_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + VULKAN_HPP_DEPRECATED( "The VK_EXT_debug_report extension has been deprecated by VK_EXT_debug_utils." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDebugReportSpecVersion = VK_EXT_DEBUG_REPORT_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_EXT_debug_report extension has been deprecated by VK_EXT_debug_utils." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDebugReportExtensionName = VK_EXT_DEBUG_REPORT_EXTENSION_NAME; + + //=== VK_NV_glsl_shader === + VULKAN_HPP_DEPRECATED( "The VK_NV_glsl_shader extension has been deprecated." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVGlslShaderSpecVersion = VK_NV_GLSL_SHADER_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_NV_glsl_shader extension has been deprecated." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVGlslShaderExtensionName = VK_NV_GLSL_SHADER_EXTENSION_NAME; + + //=== VK_EXT_depth_range_unrestricted === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthRangeUnrestrictedSpecVersion = VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthRangeUnrestrictedExtensionName = VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME; + + //=== VK_KHR_sampler_mirror_clamp_to_edge === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSamplerMirrorClampToEdgeSpecVersion = VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSamplerMirrorClampToEdgeExtensionName = VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME; + + //=== VK_IMG_filter_cubic === + VULKAN_HPP_CONSTEXPR_INLINE auto IMGFilterCubicSpecVersion = VK_IMG_FILTER_CUBIC_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto IMGFilterCubicExtensionName = VK_IMG_FILTER_CUBIC_EXTENSION_NAME; + + //=== VK_AMD_rasterization_order === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDRasterizationOrderSpecVersion = VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDRasterizationOrderExtensionName = VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME; + + //=== VK_AMD_shader_trinary_minmax === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderTrinaryMinmaxSpecVersion = VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderTrinaryMinmaxExtensionName = VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME; + + //=== VK_AMD_shader_explicit_vertex_parameter === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderExplicitVertexParameterSpecVersion = VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderExplicitVertexParameterExtensionName = VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME; + + //=== VK_EXT_debug_marker === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDebugMarkerSpecVersion = VK_EXT_DEBUG_MARKER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDebugMarkerExtensionName = VK_EXT_DEBUG_MARKER_EXTENSION_NAME; + + //=== VK_KHR_video_queue === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoQueueSpecVersion = VK_KHR_VIDEO_QUEUE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoQueueExtensionName = VK_KHR_VIDEO_QUEUE_EXTENSION_NAME; + + //=== VK_KHR_video_decode_queue === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoDecodeQueueSpecVersion = VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoDecodeQueueExtensionName = VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME; + + //=== VK_AMD_gcn_shader === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDGcnShaderSpecVersion = VK_AMD_GCN_SHADER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDGcnShaderExtensionName = VK_AMD_GCN_SHADER_EXTENSION_NAME; + + //=== VK_NV_dedicated_allocation === + VULKAN_HPP_DEPRECATED( "The VK_NV_dedicated_allocation extension has been deprecated by VK_KHR_dedicated_allocation." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVDedicatedAllocationSpecVersion = VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_NV_dedicated_allocation extension has been deprecated by VK_KHR_dedicated_allocation." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVDedicatedAllocationExtensionName = VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME; + + //=== VK_EXT_transform_feedback === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTTransformFeedbackSpecVersion = VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTTransformFeedbackExtensionName = VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME; + + //=== VK_NVX_binary_import === + VULKAN_HPP_CONSTEXPR_INLINE auto NVXBinaryImportSpecVersion = VK_NVX_BINARY_IMPORT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVXBinaryImportExtensionName = VK_NVX_BINARY_IMPORT_EXTENSION_NAME; + + //=== VK_NVX_image_view_handle === + VULKAN_HPP_CONSTEXPR_INLINE auto NVXImageViewHandleSpecVersion = VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVXImageViewHandleExtensionName = VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME; + + //=== VK_AMD_draw_indirect_count === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDDrawIndirectCountSpecVersion = VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDDrawIndirectCountExtensionName = VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME; + + //=== VK_AMD_negative_viewport_height === + VULKAN_HPP_DEPRECATED( "The VK_AMD_negative_viewport_height extension has been obsoleted by VK_KHR_maintenance1." ) + VULKAN_HPP_CONSTEXPR_INLINE auto AMDNegativeViewportHeightSpecVersion = VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_AMD_negative_viewport_height extension has been obsoleted by VK_KHR_maintenance1." ) + VULKAN_HPP_CONSTEXPR_INLINE auto AMDNegativeViewportHeightExtensionName = VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME; + + //=== VK_AMD_gpu_shader_half_float === + VULKAN_HPP_DEPRECATED( "The VK_AMD_gpu_shader_half_float extension has been deprecated by VK_KHR_shader_float16_int8." ) + VULKAN_HPP_CONSTEXPR_INLINE auto AMDGpuShaderHalfFloatSpecVersion = VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_AMD_gpu_shader_half_float extension has been deprecated by VK_KHR_shader_float16_int8." ) + VULKAN_HPP_CONSTEXPR_INLINE auto AMDGpuShaderHalfFloatExtensionName = VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME; + + //=== VK_AMD_shader_ballot === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderBallotSpecVersion = VK_AMD_SHADER_BALLOT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderBallotExtensionName = VK_AMD_SHADER_BALLOT_EXTENSION_NAME; + + //=== VK_KHR_video_encode_h264 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeH264SpecVersion = VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeH264ExtensionName = VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME; + + //=== VK_KHR_video_encode_h265 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeH265SpecVersion = VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeH265ExtensionName = VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME; + + //=== VK_KHR_video_decode_h264 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoDecodeH264SpecVersion = VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoDecodeH264ExtensionName = VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME; + + //=== VK_AMD_texture_gather_bias_lod === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDTextureGatherBiasLodSpecVersion = VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDTextureGatherBiasLodExtensionName = VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME; + + //=== VK_AMD_shader_info === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderInfoSpecVersion = VK_AMD_SHADER_INFO_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderInfoExtensionName = VK_AMD_SHADER_INFO_EXTENSION_NAME; + + //=== VK_KHR_dynamic_rendering === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDynamicRenderingSpecVersion = VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDynamicRenderingExtensionName = VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME; + + //=== VK_AMD_shader_image_load_store_lod === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderImageLoadStoreLodSpecVersion = VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderImageLoadStoreLodExtensionName = VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto GGPStreamDescriptorSurfaceSpecVersion = VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto GGPStreamDescriptorSurfaceExtensionName = VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_corner_sampled_image === + VULKAN_HPP_CONSTEXPR_INLINE auto NVCornerSampledImageSpecVersion = VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVCornerSampledImageExtensionName = VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME; + + //=== VK_KHR_multiview === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMultiviewSpecVersion = VK_KHR_MULTIVIEW_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMultiviewExtensionName = VK_KHR_MULTIVIEW_EXTENSION_NAME; + + //=== VK_IMG_format_pvrtc === + VULKAN_HPP_DEPRECATED( "The VK_IMG_format_pvrtc extension has been deprecated." ) + VULKAN_HPP_CONSTEXPR_INLINE auto IMGFormatPvrtcSpecVersion = VK_IMG_FORMAT_PVRTC_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_IMG_format_pvrtc extension has been deprecated." ) + VULKAN_HPP_CONSTEXPR_INLINE auto IMGFormatPvrtcExtensionName = VK_IMG_FORMAT_PVRTC_EXTENSION_NAME; + + //=== VK_NV_external_memory_capabilities === + VULKAN_HPP_DEPRECATED( "The VK_NV_external_memory_capabilities extension has been deprecated by VK_KHR_external_memory_capabilities." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalMemoryCapabilitiesSpecVersion = VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_NV_external_memory_capabilities extension has been deprecated by VK_KHR_external_memory_capabilities." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalMemoryCapabilitiesExtensionName = VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME; + + //=== VK_NV_external_memory === + VULKAN_HPP_DEPRECATED( "The VK_NV_external_memory extension has been deprecated by VK_KHR_external_memory." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalMemorySpecVersion = VK_NV_EXTERNAL_MEMORY_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_NV_external_memory extension has been deprecated by VK_KHR_external_memory." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalMemoryExtensionName = VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + VULKAN_HPP_DEPRECATED( "The VK_NV_external_memory_win32 extension has been deprecated by VK_KHR_external_memory_win32." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalMemoryWin32SpecVersion = VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_NV_external_memory_win32 extension has been deprecated by VK_KHR_external_memory_win32." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalMemoryWin32ExtensionName = VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_win32_keyed_mutex === + VULKAN_HPP_CONSTEXPR_INLINE auto NVWin32KeyedMutexSpecVersion = VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVWin32KeyedMutexExtensionName = VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_get_physical_device_properties2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRGetPhysicalDeviceProperties2SpecVersion = VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRGetPhysicalDeviceProperties2ExtensionName = VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME; + + //=== VK_KHR_device_group === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeviceGroupSpecVersion = VK_KHR_DEVICE_GROUP_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeviceGroupExtensionName = VK_KHR_DEVICE_GROUP_EXTENSION_NAME; + + //=== VK_EXT_validation_flags === + VULKAN_HPP_DEPRECATED( "The VK_EXT_validation_flags extension has been deprecated by VK_EXT_layer_settings." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationFlagsSpecVersion = VK_EXT_VALIDATION_FLAGS_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_EXT_validation_flags extension has been deprecated by VK_EXT_layer_settings." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationFlagsExtensionName = VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto NNViSurfaceSpecVersion = VK_NN_VI_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NNViSurfaceExtensionName = VK_NN_VI_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_shader_draw_parameters === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderDrawParametersSpecVersion = VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderDrawParametersExtensionName = VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME; + + //=== VK_EXT_shader_subgroup_ballot === + VULKAN_HPP_DEPRECATED( "The VK_EXT_shader_subgroup_ballot extension has been deprecated by VK_VERSION_1_2." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderSubgroupBallotSpecVersion = VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_EXT_shader_subgroup_ballot extension has been deprecated by VK_VERSION_1_2." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderSubgroupBallotExtensionName = VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME; + + //=== VK_EXT_shader_subgroup_vote === + VULKAN_HPP_DEPRECATED( "The VK_EXT_shader_subgroup_vote extension has been deprecated by VK_VERSION_1_1." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderSubgroupVoteSpecVersion = VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_EXT_shader_subgroup_vote extension has been deprecated by VK_VERSION_1_1." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderSubgroupVoteExtensionName = VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME; + + //=== VK_EXT_texture_compression_astc_hdr === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTTextureCompressionAstcHdrSpecVersion = VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTTextureCompressionAstcHdrExtensionName = VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME; + + //=== VK_EXT_astc_decode_mode === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTAstcDecodeModeSpecVersion = VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTAstcDecodeModeExtensionName = VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME; + + //=== VK_EXT_pipeline_robustness === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelineRobustnessSpecVersion = VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelineRobustnessExtensionName = VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME; + + //=== VK_KHR_maintenance1 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance1SpecVersion = VK_KHR_MAINTENANCE_1_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance1ExtensionName = VK_KHR_MAINTENANCE_1_EXTENSION_NAME; + + //=== VK_KHR_device_group_creation === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeviceGroupCreationSpecVersion = VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeviceGroupCreationExtensionName = VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME; + + //=== VK_KHR_external_memory_capabilities === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalMemoryCapabilitiesSpecVersion = VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalMemoryCapabilitiesExtensionName = VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME; + + //=== VK_KHR_external_memory === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalMemorySpecVersion = VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalMemoryExtensionName = VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalMemoryWin32SpecVersion = VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalMemoryWin32ExtensionName = VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalMemoryFdSpecVersion = VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalMemoryFdExtensionName = VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_keyed_mutex === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRWin32KeyedMutexSpecVersion = VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRWin32KeyedMutexExtensionName = VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_capabilities === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalSemaphoreCapabilitiesSpecVersion = VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalSemaphoreCapabilitiesExtensionName = VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME; + + //=== VK_KHR_external_semaphore === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalSemaphoreSpecVersion = VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalSemaphoreExtensionName = VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalSemaphoreWin32SpecVersion = VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalSemaphoreWin32ExtensionName = VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalSemaphoreFdSpecVersion = VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalSemaphoreFdExtensionName = VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME; + + //=== VK_KHR_push_descriptor === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPushDescriptorSpecVersion = VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPushDescriptorExtensionName = VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME; + + //=== VK_EXT_conditional_rendering === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTConditionalRenderingSpecVersion = VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTConditionalRenderingExtensionName = VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME; + + //=== VK_KHR_shader_float16_int8 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderFloat16Int8SpecVersion = VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderFloat16Int8ExtensionName = VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME; + + //=== VK_KHR_16bit_storage === + VULKAN_HPP_CONSTEXPR_INLINE auto KHR16BitStorageSpecVersion = VK_KHR_16BIT_STORAGE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHR16BitStorageExtensionName = VK_KHR_16BIT_STORAGE_EXTENSION_NAME; + + //=== VK_KHR_incremental_present === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRIncrementalPresentSpecVersion = VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRIncrementalPresentExtensionName = VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME; + + //=== VK_KHR_descriptor_update_template === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDescriptorUpdateTemplateSpecVersion = VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDescriptorUpdateTemplateExtensionName = VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME; + + //=== VK_NV_clip_space_w_scaling === + VULKAN_HPP_CONSTEXPR_INLINE auto NVClipSpaceWScalingSpecVersion = VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVClipSpaceWScalingExtensionName = VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME; + + //=== VK_EXT_direct_mode_display === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDirectModeDisplaySpecVersion = VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDirectModeDisplayExtensionName = VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTAcquireXlibDisplaySpecVersion = VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTAcquireXlibDisplayExtensionName = VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDisplaySurfaceCounterSpecVersion = VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDisplaySurfaceCounterExtensionName = VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME; + + //=== VK_EXT_display_control === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDisplayControlSpecVersion = VK_EXT_DISPLAY_CONTROL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDisplayControlExtensionName = VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME; + + //=== VK_GOOGLE_display_timing === + VULKAN_HPP_CONSTEXPR_INLINE auto GOOGLEDisplayTimingSpecVersion = VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto GOOGLEDisplayTimingExtensionName = VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME; + + //=== VK_NV_sample_mask_override_coverage === + VULKAN_HPP_CONSTEXPR_INLINE auto NVSampleMaskOverrideCoverageSpecVersion = VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVSampleMaskOverrideCoverageExtensionName = VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME; + + //=== VK_NV_geometry_shader_passthrough === + VULKAN_HPP_CONSTEXPR_INLINE auto NVGeometryShaderPassthroughSpecVersion = VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVGeometryShaderPassthroughExtensionName = VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME; + + //=== VK_NV_viewport_array2 === + VULKAN_HPP_CONSTEXPR_INLINE auto NVViewportArray2SpecVersion = VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVViewportArray2ExtensionName = VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME; + + //=== VK_NVX_multiview_per_view_attributes === + VULKAN_HPP_CONSTEXPR_INLINE auto NVXMultiviewPerViewAttributesSpecVersion = VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVXMultiviewPerViewAttributesExtensionName = VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME; + + //=== VK_NV_viewport_swizzle === + VULKAN_HPP_CONSTEXPR_INLINE auto NVViewportSwizzleSpecVersion = VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVViewportSwizzleExtensionName = VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME; + + //=== VK_EXT_discard_rectangles === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDiscardRectanglesSpecVersion = VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDiscardRectanglesExtensionName = VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME; + + //=== VK_EXT_conservative_rasterization === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTConservativeRasterizationSpecVersion = VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTConservativeRasterizationExtensionName = VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME; + + //=== VK_EXT_depth_clip_enable === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthClipEnableSpecVersion = VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthClipEnableExtensionName = VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME; + + //=== VK_EXT_swapchain_colorspace === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSwapchainColorSpaceSpecVersion = VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSwapchainColorSpaceExtensionName = VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME; + + //=== VK_EXT_hdr_metadata === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTHdrMetadataSpecVersion = VK_EXT_HDR_METADATA_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTHdrMetadataExtensionName = VK_EXT_HDR_METADATA_EXTENSION_NAME; + + //=== VK_KHR_imageless_framebuffer === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRImagelessFramebufferSpecVersion = VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRImagelessFramebufferExtensionName = VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME; + + //=== VK_KHR_create_renderpass2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRCreateRenderpass2SpecVersion = VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRCreateRenderpass2ExtensionName = VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME; + + //=== VK_IMG_relaxed_line_rasterization === + VULKAN_HPP_CONSTEXPR_INLINE auto IMGRelaxedLineRasterizationSpecVersion = VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto IMGRelaxedLineRasterizationExtensionName = VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME; + + //=== VK_KHR_shared_presentable_image === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSharedPresentableImageSpecVersion = VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSharedPresentableImageExtensionName = VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME; + + //=== VK_KHR_external_fence_capabilities === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalFenceCapabilitiesSpecVersion = VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalFenceCapabilitiesExtensionName = VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME; + + //=== VK_KHR_external_fence === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalFenceSpecVersion = VK_KHR_EXTERNAL_FENCE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalFenceExtensionName = VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalFenceWin32SpecVersion = VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalFenceWin32ExtensionName = VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalFenceFdSpecVersion = VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRExternalFenceFdExtensionName = VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME; + + //=== VK_KHR_performance_query === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPerformanceQuerySpecVersion = VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPerformanceQueryExtensionName = VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME; + + //=== VK_KHR_maintenance2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance2SpecVersion = VK_KHR_MAINTENANCE_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance2ExtensionName = VK_KHR_MAINTENANCE_2_EXTENSION_NAME; + + //=== VK_KHR_get_surface_capabilities2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRGetSurfaceCapabilities2SpecVersion = VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRGetSurfaceCapabilities2ExtensionName = VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME; + + //=== VK_KHR_variable_pointers === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVariablePointersSpecVersion = VK_KHR_VARIABLE_POINTERS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVariablePointersExtensionName = VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME; + + //=== VK_KHR_get_display_properties2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRGetDisplayProperties2SpecVersion = VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRGetDisplayProperties2ExtensionName = VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + VULKAN_HPP_DEPRECATED( "The VK_MVK_ios_surface extension has been deprecated by VK_EXT_metal_surface." ) + VULKAN_HPP_CONSTEXPR_INLINE auto MVKIosSurfaceSpecVersion = VK_MVK_IOS_SURFACE_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_MVK_ios_surface extension has been deprecated by VK_EXT_metal_surface." ) + VULKAN_HPP_CONSTEXPR_INLINE auto MVKIosSurfaceExtensionName = VK_MVK_IOS_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + VULKAN_HPP_DEPRECATED( "The VK_MVK_macos_surface extension has been deprecated by VK_EXT_metal_surface." ) + VULKAN_HPP_CONSTEXPR_INLINE auto MVKMacosSurfaceSpecVersion = VK_MVK_MACOS_SURFACE_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_MVK_macos_surface extension has been deprecated by VK_EXT_metal_surface." ) + VULKAN_HPP_CONSTEXPR_INLINE auto MVKMacosSurfaceExtensionName = VK_MVK_MACOS_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_external_memory_dma_buf === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExternalMemoryDmaBufSpecVersion = VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExternalMemoryDmaBufExtensionName = VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME; + + //=== VK_EXT_queue_family_foreign === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTQueueFamilyForeignSpecVersion = VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTQueueFamilyForeignExtensionName = VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME; + + //=== VK_KHR_dedicated_allocation === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDedicatedAllocationSpecVersion = VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDedicatedAllocationExtensionName = VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME; + + //=== VK_EXT_debug_utils === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDebugUtilsSpecVersion = VK_EXT_DEBUG_UTILS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDebugUtilsExtensionName = VK_EXT_DEBUG_UTILS_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + VULKAN_HPP_CONSTEXPR_INLINE auto ANDROIDExternalMemoryAndroidHardwareBufferSpecVersion = VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ANDROIDExternalMemoryAndroidHardwareBufferExtensionName = VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_EXT_sampler_filter_minmax === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSamplerFilterMinmaxSpecVersion = VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSamplerFilterMinmaxExtensionName = VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME; + + //=== VK_KHR_storage_buffer_storage_class === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRStorageBufferStorageClassSpecVersion = VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRStorageBufferStorageClassExtensionName = VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME; + + //=== VK_AMD_gpu_shader_int16 === + VULKAN_HPP_DEPRECATED( "The VK_AMD_gpu_shader_int16 extension has been deprecated by VK_KHR_shader_float16_int8." ) + VULKAN_HPP_CONSTEXPR_INLINE auto AMDGpuShaderInt16SpecVersion = VK_AMD_GPU_SHADER_INT16_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_AMD_gpu_shader_int16 extension has been deprecated by VK_KHR_shader_float16_int8." ) + VULKAN_HPP_CONSTEXPR_INLINE auto AMDGpuShaderInt16ExtensionName = VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDXShaderEnqueueSpecVersion = VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDXShaderEnqueueExtensionName = VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDescriptorHeapSpecVersion = VK_EXT_DESCRIPTOR_HEAP_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDescriptorHeapExtensionName = VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME; + + //=== VK_AMD_mixed_attachment_samples === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDMixedAttachmentSamplesSpecVersion = VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDMixedAttachmentSamplesExtensionName = VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME; + + //=== VK_AMD_shader_fragment_mask === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderFragmentMaskSpecVersion = VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderFragmentMaskExtensionName = VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME; + + //=== VK_EXT_inline_uniform_block === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTInlineUniformBlockSpecVersion = VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTInlineUniformBlockExtensionName = VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME; + + //=== VK_EXT_shader_stencil_export === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderStencilExportSpecVersion = VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderStencilExportExtensionName = VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME; + + //=== VK_KHR_shader_bfloat16 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderBfloat16SpecVersion = VK_KHR_SHADER_BFLOAT16_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderBfloat16ExtensionName = VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME; + + //=== VK_EXT_sample_locations === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSampleLocationsSpecVersion = VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSampleLocationsExtensionName = VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME; + + //=== VK_KHR_relaxed_block_layout === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRelaxedBlockLayoutSpecVersion = VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRelaxedBlockLayoutExtensionName = VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME; + + //=== VK_KHR_get_memory_requirements2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRGetMemoryRequirements2SpecVersion = VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRGetMemoryRequirements2ExtensionName = VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME; + + //=== VK_KHR_image_format_list === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRImageFormatListSpecVersion = VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRImageFormatListExtensionName = VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME; + + //=== VK_EXT_blend_operation_advanced === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTBlendOperationAdvancedSpecVersion = VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTBlendOperationAdvancedExtensionName = VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME; + + //=== VK_NV_fragment_coverage_to_color === + VULKAN_HPP_CONSTEXPR_INLINE auto NVFragmentCoverageToColorSpecVersion = VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVFragmentCoverageToColorExtensionName = VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME; + + //=== VK_KHR_acceleration_structure === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRAccelerationStructureSpecVersion = VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRAccelerationStructureExtensionName = VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME; + + //=== VK_KHR_ray_tracing_pipeline === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRayTracingPipelineSpecVersion = VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRayTracingPipelineExtensionName = VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME; + + //=== VK_KHR_ray_query === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRayQuerySpecVersion = VK_KHR_RAY_QUERY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRayQueryExtensionName = VK_KHR_RAY_QUERY_EXTENSION_NAME; + + //=== VK_NV_framebuffer_mixed_samples === + VULKAN_HPP_CONSTEXPR_INLINE auto NVFramebufferMixedSamplesSpecVersion = VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVFramebufferMixedSamplesExtensionName = VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME; + + //=== VK_NV_fill_rectangle === + VULKAN_HPP_CONSTEXPR_INLINE auto NVFillRectangleSpecVersion = VK_NV_FILL_RECTANGLE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVFillRectangleExtensionName = VK_NV_FILL_RECTANGLE_EXTENSION_NAME; + + //=== VK_NV_shader_sm_builtins === + VULKAN_HPP_CONSTEXPR_INLINE auto NVShaderSmBuiltinsSpecVersion = VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVShaderSmBuiltinsExtensionName = VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME; + + //=== VK_EXT_post_depth_coverage === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPostDepthCoverageSpecVersion = VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPostDepthCoverageExtensionName = VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME; + + //=== VK_KHR_sampler_ycbcr_conversion === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSamplerYcbcrConversionSpecVersion = VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSamplerYcbcrConversionExtensionName = VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME; + + //=== VK_KHR_bind_memory2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRBindMemory2SpecVersion = VK_KHR_BIND_MEMORY_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRBindMemory2ExtensionName = VK_KHR_BIND_MEMORY_2_EXTENSION_NAME; + + //=== VK_EXT_image_drm_format_modifier === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageDrmFormatModifierSpecVersion = VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageDrmFormatModifierExtensionName = VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME; + + //=== VK_EXT_validation_cache === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationCacheSpecVersion = VK_EXT_VALIDATION_CACHE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationCacheExtensionName = VK_EXT_VALIDATION_CACHE_EXTENSION_NAME; + + //=== VK_EXT_descriptor_indexing === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDescriptorIndexingSpecVersion = VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDescriptorIndexingExtensionName = VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME; + + //=== VK_EXT_shader_viewport_index_layer === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderViewportIndexLayerSpecVersion = VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderViewportIndexLayerExtensionName = VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_portability_subset === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPortabilitySubsetSpecVersion = VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPortabilitySubsetExtensionName = VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NV_shading_rate_image === + VULKAN_HPP_CONSTEXPR_INLINE auto NVShadingRateImageSpecVersion = VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVShadingRateImageExtensionName = VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME; + + //=== VK_NV_ray_tracing === + VULKAN_HPP_DEPRECATED( "The VK_NV_ray_tracing extension has been deprecated by VK_KHR_ray_tracing_pipeline." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingSpecVersion = VK_NV_RAY_TRACING_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_NV_ray_tracing extension has been deprecated by VK_KHR_ray_tracing_pipeline." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingExtensionName = VK_NV_RAY_TRACING_EXTENSION_NAME; + + //=== VK_NV_representative_fragment_test === + VULKAN_HPP_CONSTEXPR_INLINE auto NVRepresentativeFragmentTestSpecVersion = VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVRepresentativeFragmentTestExtensionName = VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME; + + //=== VK_KHR_maintenance3 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance3SpecVersion = VK_KHR_MAINTENANCE_3_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance3ExtensionName = VK_KHR_MAINTENANCE_3_EXTENSION_NAME; + + //=== VK_KHR_draw_indirect_count === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDrawIndirectCountSpecVersion = VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDrawIndirectCountExtensionName = VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME; + + //=== VK_EXT_filter_cubic === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFilterCubicSpecVersion = VK_EXT_FILTER_CUBIC_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFilterCubicExtensionName = VK_EXT_FILTER_CUBIC_EXTENSION_NAME; + + //=== VK_QCOM_render_pass_shader_resolve === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMRenderPassShaderResolveSpecVersion = VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMRenderPassShaderResolveExtensionName = VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME; + + //=== VK_QCOM_cooperative_matrix_conversion === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMCooperativeMatrixConversionSpecVersion = VK_QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMCooperativeMatrixConversionExtensionName = VK_QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME; + + //=== VK_EXT_global_priority === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTGlobalPrioritySpecVersion = VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTGlobalPriorityExtensionName = VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME; + + //=== VK_KHR_shader_subgroup_extended_types === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderSubgroupExtendedTypesSpecVersion = VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderSubgroupExtendedTypesExtensionName = VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME; + + //=== VK_KHR_8bit_storage === + VULKAN_HPP_CONSTEXPR_INLINE auto KHR8BitStorageSpecVersion = VK_KHR_8BIT_STORAGE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHR8BitStorageExtensionName = VK_KHR_8BIT_STORAGE_EXTENSION_NAME; + + //=== VK_EXT_external_memory_host === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExternalMemoryHostSpecVersion = VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExternalMemoryHostExtensionName = VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME; + + //=== VK_AMD_buffer_marker === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDBufferMarkerSpecVersion = VK_AMD_BUFFER_MARKER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDBufferMarkerExtensionName = VK_AMD_BUFFER_MARKER_EXTENSION_NAME; + + //=== VK_KHR_shader_atomic_int64 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderAtomicInt64SpecVersion = VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderAtomicInt64ExtensionName = VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME; + + //=== VK_KHR_shader_clock === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderClockSpecVersion = VK_KHR_SHADER_CLOCK_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderClockExtensionName = VK_KHR_SHADER_CLOCK_EXTENSION_NAME; + + //=== VK_AMD_pipeline_compiler_control === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDPipelineCompilerControlSpecVersion = VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDPipelineCompilerControlExtensionName = VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME; + + //=== VK_EXT_calibrated_timestamps === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTCalibratedTimestampsSpecVersion = VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTCalibratedTimestampsExtensionName = VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME; + + //=== VK_AMD_shader_core_properties === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderCorePropertiesSpecVersion = VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderCorePropertiesExtensionName = VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME; + + //=== VK_KHR_video_decode_h265 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoDecodeH265SpecVersion = VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoDecodeH265ExtensionName = VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME; + + //=== VK_KHR_global_priority === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRGlobalPrioritySpecVersion = VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRGlobalPriorityExtensionName = VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME; + + //=== VK_AMD_memory_overallocation_behavior === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDMemoryOverallocationBehaviorSpecVersion = VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDMemoryOverallocationBehaviorExtensionName = VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME; + + //=== VK_EXT_vertex_attribute_divisor === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTVertexAttributeDivisorSpecVersion = VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTVertexAttributeDivisorExtensionName = VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_frame_token === + VULKAN_HPP_CONSTEXPR_INLINE auto GGPFrameTokenSpecVersion = VK_GGP_FRAME_TOKEN_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto GGPFrameTokenExtensionName = VK_GGP_FRAME_TOKEN_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_EXT_pipeline_creation_feedback === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelineCreationFeedbackSpecVersion = VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelineCreationFeedbackExtensionName = VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME; + + //=== VK_KHR_driver_properties === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDriverPropertiesSpecVersion = VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDriverPropertiesExtensionName = VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME; + + //=== VK_KHR_shader_float_controls === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderFloatControlsSpecVersion = VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderFloatControlsExtensionName = VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME; + + //=== VK_NV_shader_subgroup_partitioned === + VULKAN_HPP_CONSTEXPR_INLINE auto NVShaderSubgroupPartitionedSpecVersion = VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVShaderSubgroupPartitionedExtensionName = VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME; + + //=== VK_KHR_depth_stencil_resolve === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDepthStencilResolveSpecVersion = VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDepthStencilResolveExtensionName = VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME; + + //=== VK_KHR_swapchain_mutable_format === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSwapchainMutableFormatSpecVersion = VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSwapchainMutableFormatExtensionName = VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME; + + //=== VK_NV_compute_shader_derivatives === + VULKAN_HPP_CONSTEXPR_INLINE auto NVComputeShaderDerivativesSpecVersion = VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVComputeShaderDerivativesExtensionName = VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME; + + //=== VK_NV_mesh_shader === + VULKAN_HPP_CONSTEXPR_INLINE auto NVMeshShaderSpecVersion = VK_NV_MESH_SHADER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVMeshShaderExtensionName = VK_NV_MESH_SHADER_EXTENSION_NAME; + + //=== VK_NV_fragment_shader_barycentric === + VULKAN_HPP_CONSTEXPR_INLINE auto NVFragmentShaderBarycentricSpecVersion = VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVFragmentShaderBarycentricExtensionName = VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME; + + //=== VK_NV_shader_image_footprint === + VULKAN_HPP_CONSTEXPR_INLINE auto NVShaderImageFootprintSpecVersion = VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVShaderImageFootprintExtensionName = VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME; + + //=== VK_NV_scissor_exclusive === + VULKAN_HPP_CONSTEXPR_INLINE auto NVScissorExclusiveSpecVersion = VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVScissorExclusiveExtensionName = VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME; + + //=== VK_NV_device_diagnostic_checkpoints === + VULKAN_HPP_CONSTEXPR_INLINE auto NVDeviceDiagnosticCheckpointsSpecVersion = VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVDeviceDiagnosticCheckpointsExtensionName = VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME; + + //=== VK_KHR_timeline_semaphore === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRTimelineSemaphoreSpecVersion = VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRTimelineSemaphoreExtensionName = VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME; + + //=== VK_EXT_present_timing === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPresentTimingSpecVersion = VK_EXT_PRESENT_TIMING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPresentTimingExtensionName = VK_EXT_PRESENT_TIMING_EXTENSION_NAME; + + //=== VK_INTEL_shader_integer_functions2 === + VULKAN_HPP_CONSTEXPR_INLINE auto INTELShaderIntegerFunctions2SpecVersion = VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto INTELShaderIntegerFunctions2ExtensionName = VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME; + + //=== VK_INTEL_performance_query === + VULKAN_HPP_CONSTEXPR_INLINE auto INTELPerformanceQuerySpecVersion = VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto INTELPerformanceQueryExtensionName = VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME; + + //=== VK_KHR_vulkan_memory_model === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVulkanMemoryModelSpecVersion = VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVulkanMemoryModelExtensionName = VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME; + + //=== VK_EXT_pci_bus_info === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPciBusInfoSpecVersion = VK_EXT_PCI_BUS_INFO_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPciBusInfoExtensionName = VK_EXT_PCI_BUS_INFO_EXTENSION_NAME; + + //=== VK_AMD_display_native_hdr === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDDisplayNativeHdrSpecVersion = VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDDisplayNativeHdrExtensionName = VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto FUCHSIAImagepipeSurfaceSpecVersion = VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto FUCHSIAImagepipeSurfaceExtensionName = VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_KHR_shader_terminate_invocation === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderTerminateInvocationSpecVersion = VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderTerminateInvocationExtensionName = VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMetalSurfaceSpecVersion = VK_EXT_METAL_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMetalSurfaceExtensionName = VK_EXT_METAL_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_fragment_density_map === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFragmentDensityMapSpecVersion = VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFragmentDensityMapExtensionName = VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME; + + //=== VK_EXT_scalar_block_layout === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTScalarBlockLayoutSpecVersion = VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTScalarBlockLayoutExtensionName = VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME; + + //=== VK_GOOGLE_hlsl_functionality1 === + VULKAN_HPP_CONSTEXPR_INLINE auto GOOGLEHlslFunctionality1SpecVersion = VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto GOOGLEHlslFunctionality1ExtensionName = VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME; + + //=== VK_GOOGLE_decorate_string === + VULKAN_HPP_CONSTEXPR_INLINE auto GOOGLEDecorateStringSpecVersion = VK_GOOGLE_DECORATE_STRING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto GOOGLEDecorateStringExtensionName = VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME; + + //=== VK_EXT_subgroup_size_control === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSubgroupSizeControlSpecVersion = VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSubgroupSizeControlExtensionName = VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME; + + //=== VK_KHR_fragment_shading_rate === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRFragmentShadingRateSpecVersion = VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRFragmentShadingRateExtensionName = VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME; + + //=== VK_AMD_shader_core_properties2 === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderCoreProperties2SpecVersion = VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderCoreProperties2ExtensionName = VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME; + + //=== VK_AMD_device_coherent_memory === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDDeviceCoherentMemorySpecVersion = VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDDeviceCoherentMemoryExtensionName = VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME; + + //=== VK_KHR_shader_constant_data === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderConstantDataSpecVersion = VK_KHR_SHADER_CONSTANT_DATA_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderConstantDataExtensionName = VK_KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME; + + //=== VK_KHR_dynamic_rendering_local_read === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDynamicRenderingLocalReadSpecVersion = VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDynamicRenderingLocalReadExtensionName = VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME; + + //=== VK_KHR_shader_abort === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderAbortSpecVersion = VK_KHR_SHADER_ABORT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderAbortExtensionName = VK_KHR_SHADER_ABORT_EXTENSION_NAME; + + //=== VK_EXT_shader_image_atomic_int64 === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderImageAtomicInt64SpecVersion = VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderImageAtomicInt64ExtensionName = VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME; + + //=== VK_KHR_shader_quad_control === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderQuadControlSpecVersion = VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderQuadControlExtensionName = VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME; + + //=== VK_KHR_spirv_1_4 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSpirv14SpecVersion = VK_KHR_SPIRV_1_4_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSpirv14ExtensionName = VK_KHR_SPIRV_1_4_EXTENSION_NAME; + + //=== VK_EXT_memory_budget === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMemoryBudgetSpecVersion = VK_EXT_MEMORY_BUDGET_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMemoryBudgetExtensionName = VK_EXT_MEMORY_BUDGET_EXTENSION_NAME; + + //=== VK_EXT_memory_priority === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMemoryPrioritySpecVersion = VK_EXT_MEMORY_PRIORITY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMemoryPriorityExtensionName = VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME; + + //=== VK_KHR_surface_protected_capabilities === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSurfaceProtectedCapabilitiesSpecVersion = VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSurfaceProtectedCapabilitiesExtensionName = VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME; + + //=== VK_NV_dedicated_allocation_image_aliasing === + VULKAN_HPP_CONSTEXPR_INLINE auto NVDedicatedAllocationImageAliasingSpecVersion = VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVDedicatedAllocationImageAliasingExtensionName = VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME; + + //=== VK_KHR_separate_depth_stencil_layouts === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSeparateDepthStencilLayoutsSpecVersion = VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSeparateDepthStencilLayoutsExtensionName = VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME; + + //=== VK_EXT_buffer_device_address === + VULKAN_HPP_DEPRECATED( "The VK_EXT_buffer_device_address extension has been deprecated by VK_KHR_buffer_device_address." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTBufferDeviceAddressSpecVersion = VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_EXT_buffer_device_address extension has been deprecated by VK_KHR_buffer_device_address." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTBufferDeviceAddressExtensionName = VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME; + + //=== VK_EXT_tooling_info === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTToolingInfoSpecVersion = VK_EXT_TOOLING_INFO_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTToolingInfoExtensionName = VK_EXT_TOOLING_INFO_EXTENSION_NAME; + + //=== VK_EXT_separate_stencil_usage === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSeparateStencilUsageSpecVersion = VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSeparateStencilUsageExtensionName = VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME; + + //=== VK_EXT_validation_features === + VULKAN_HPP_DEPRECATED( "The VK_EXT_validation_features extension has been deprecated by VK_EXT_layer_settings." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationFeaturesSpecVersion = VK_EXT_VALIDATION_FEATURES_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_EXT_validation_features extension has been deprecated by VK_EXT_layer_settings." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTValidationFeaturesExtensionName = VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME; + + //=== VK_KHR_present_wait === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentWaitSpecVersion = VK_KHR_PRESENT_WAIT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentWaitExtensionName = VK_KHR_PRESENT_WAIT_EXTENSION_NAME; + + //=== VK_NV_cooperative_matrix === + VULKAN_HPP_CONSTEXPR_INLINE auto NVCooperativeMatrixSpecVersion = VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVCooperativeMatrixExtensionName = VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME; + + //=== VK_NV_coverage_reduction_mode === + VULKAN_HPP_CONSTEXPR_INLINE auto NVCoverageReductionModeSpecVersion = VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVCoverageReductionModeExtensionName = VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME; + + //=== VK_EXT_fragment_shader_interlock === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFragmentShaderInterlockSpecVersion = VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFragmentShaderInterlockExtensionName = VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME; + + //=== VK_EXT_ycbcr_image_arrays === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTYcbcrImageArraysSpecVersion = VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTYcbcrImageArraysExtensionName = VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME; + + //=== VK_KHR_uniform_buffer_standard_layout === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRUniformBufferStandardLayoutSpecVersion = VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRUniformBufferStandardLayoutExtensionName = VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME; + + //=== VK_EXT_provoking_vertex === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTProvokingVertexSpecVersion = VK_EXT_PROVOKING_VERTEX_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTProvokingVertexExtensionName = VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFullScreenExclusiveSpecVersion = VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFullScreenExclusiveExtensionName = VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTHeadlessSurfaceSpecVersion = VK_EXT_HEADLESS_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTHeadlessSurfaceExtensionName = VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME; + + //=== VK_KHR_buffer_device_address === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRBufferDeviceAddressSpecVersion = VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRBufferDeviceAddressExtensionName = VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME; + + //=== VK_EXT_line_rasterization === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTLineRasterizationSpecVersion = VK_EXT_LINE_RASTERIZATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTLineRasterizationExtensionName = VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME; + + //=== VK_EXT_shader_atomic_float === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderAtomicFloatSpecVersion = VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderAtomicFloatExtensionName = VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME; + + //=== VK_EXT_host_query_reset === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTHostQueryResetSpecVersion = VK_EXT_HOST_QUERY_RESET_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTHostQueryResetExtensionName = VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME; + + //=== VK_EXT_index_type_uint8 === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTIndexTypeUint8SpecVersion = VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTIndexTypeUint8ExtensionName = VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME; + + //=== VK_EXT_extended_dynamic_state === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExtendedDynamicStateSpecVersion = VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExtendedDynamicStateExtensionName = VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME; + + //=== VK_KHR_deferred_host_operations === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeferredHostOperationsSpecVersion = VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeferredHostOperationsExtensionName = VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME; + + //=== VK_KHR_pipeline_executable_properties === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPipelineExecutablePropertiesSpecVersion = VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPipelineExecutablePropertiesExtensionName = VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME; + + //=== VK_EXT_host_image_copy === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTHostImageCopySpecVersion = VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTHostImageCopyExtensionName = VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME; + + //=== VK_KHR_map_memory2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMapMemory2SpecVersion = VK_KHR_MAP_MEMORY_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMapMemory2ExtensionName = VK_KHR_MAP_MEMORY_2_EXTENSION_NAME; + + //=== VK_EXT_map_memory_placed === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMapMemoryPlacedSpecVersion = VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMapMemoryPlacedExtensionName = VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME; + + //=== VK_EXT_shader_atomic_float2 === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderAtomicFloat2SpecVersion = VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderAtomicFloat2ExtensionName = VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME; + + //=== VK_EXT_surface_maintenance1 === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSurfaceMaintenance1SpecVersion = VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSurfaceMaintenance1ExtensionName = VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME; + + //=== VK_EXT_swapchain_maintenance1 === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSwapchainMaintenance1SpecVersion = VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSwapchainMaintenance1ExtensionName = VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME; + + //=== VK_EXT_shader_demote_to_helper_invocation === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderDemoteToHelperInvocationSpecVersion = VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderDemoteToHelperInvocationExtensionName = VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME; + + //=== VK_NV_device_generated_commands === + VULKAN_HPP_CONSTEXPR_INLINE auto NVDeviceGeneratedCommandsSpecVersion = VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVDeviceGeneratedCommandsExtensionName = VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME; + + //=== VK_NV_inherited_viewport_scissor === + VULKAN_HPP_CONSTEXPR_INLINE auto NVInheritedViewportScissorSpecVersion = VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVInheritedViewportScissorExtensionName = VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME; + + //=== VK_KHR_shader_integer_dot_product === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderIntegerDotProductSpecVersion = VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderIntegerDotProductExtensionName = VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME; + + //=== VK_EXT_texel_buffer_alignment === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTTexelBufferAlignmentSpecVersion = VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTTexelBufferAlignmentExtensionName = VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME; + + //=== VK_QCOM_render_pass_transform === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMRenderPassTransformSpecVersion = VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMRenderPassTransformExtensionName = VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME; + + //=== VK_EXT_depth_bias_control === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthBiasControlSpecVersion = VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthBiasControlExtensionName = VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME; + + //=== VK_EXT_device_memory_report === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDeviceMemoryReportSpecVersion = VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDeviceMemoryReportExtensionName = VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME; + + //=== VK_EXT_acquire_drm_display === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTAcquireDrmDisplaySpecVersion = VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTAcquireDrmDisplayExtensionName = VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME; + + //=== VK_EXT_robustness2 === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTRobustness2SpecVersion = VK_EXT_ROBUSTNESS_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTRobustness2ExtensionName = VK_EXT_ROBUSTNESS_2_EXTENSION_NAME; + + //=== VK_EXT_custom_border_color === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTCustomBorderColorSpecVersion = VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTCustomBorderColorExtensionName = VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME; + + //=== VK_EXT_texture_compression_astc_3d === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTTextureCompressionAstc3DSpecVersion = VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTTextureCompressionAstc3DExtensionName = VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME; + + //=== VK_GOOGLE_user_type === + VULKAN_HPP_CONSTEXPR_INLINE auto GOOGLEUserTypeSpecVersion = VK_GOOGLE_USER_TYPE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto GOOGLEUserTypeExtensionName = VK_GOOGLE_USER_TYPE_EXTENSION_NAME; + + //=== VK_KHR_pipeline_library === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPipelineLibrarySpecVersion = VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPipelineLibraryExtensionName = VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME; + + //=== VK_NV_present_barrier === + VULKAN_HPP_CONSTEXPR_INLINE auto NVPresentBarrierSpecVersion = VK_NV_PRESENT_BARRIER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVPresentBarrierExtensionName = VK_NV_PRESENT_BARRIER_EXTENSION_NAME; + + //=== VK_KHR_shader_non_semantic_info === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderNonSemanticInfoSpecVersion = VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderNonSemanticInfoExtensionName = VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME; + + //=== VK_KHR_present_id === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentIdSpecVersion = VK_KHR_PRESENT_ID_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentIdExtensionName = VK_KHR_PRESENT_ID_EXTENSION_NAME; + + //=== VK_EXT_private_data === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPrivateDataSpecVersion = VK_EXT_PRIVATE_DATA_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPrivateDataExtensionName = VK_EXT_PRIVATE_DATA_EXTENSION_NAME; + + //=== VK_EXT_pipeline_creation_cache_control === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelineCreationCacheControlSpecVersion = VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelineCreationCacheControlExtensionName = VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME; + + //=== VK_KHR_video_encode_queue === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeQueueSpecVersion = VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeQueueExtensionName = VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME; + + //=== VK_NV_device_diagnostics_config === + VULKAN_HPP_CONSTEXPR_INLINE auto NVDeviceDiagnosticsConfigSpecVersion = VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVDeviceDiagnosticsConfigExtensionName = VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME; + + //=== VK_QCOM_render_pass_store_ops === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMRenderPassStoreOpsSpecVersion = VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMRenderPassStoreOpsExtensionName = VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + VULKAN_HPP_CONSTEXPR_INLINE auto NVCudaKernelLaunchSpecVersion = VK_NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVCudaKernelLaunchExtensionName = VK_NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMTileShadingSpecVersion = VK_QCOM_TILE_SHADING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMTileShadingExtensionName = VK_QCOM_TILE_SHADING_EXTENSION_NAME; + + //=== VK_NV_low_latency === + VULKAN_HPP_CONSTEXPR_INLINE auto NVLowLatencySpecVersion = VK_NV_LOW_LATENCY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVLowLatencyExtensionName = VK_NV_LOW_LATENCY_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMetalObjectsSpecVersion = VK_EXT_METAL_OBJECTS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMetalObjectsExtensionName = VK_EXT_METAL_OBJECTS_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_synchronization2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSynchronization2SpecVersion = VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSynchronization2ExtensionName = VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME; + + //=== VK_EXT_descriptor_buffer === + VULKAN_HPP_DEPRECATED( "The VK_EXT_descriptor_buffer extension has been deprecated by VK_EXT_descriptor_heap." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDescriptorBufferSpecVersion = VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_EXT_descriptor_buffer extension has been deprecated by VK_EXT_descriptor_heap." ) + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDescriptorBufferExtensionName = VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME; + + //=== VK_KHR_device_address_commands === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeviceAddressCommandsSpecVersion = VK_KHR_DEVICE_ADDRESS_COMMANDS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeviceAddressCommandsExtensionName = VK_KHR_DEVICE_ADDRESS_COMMANDS_EXTENSION_NAME; + + //=== VK_EXT_graphics_pipeline_library === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTGraphicsPipelineLibrarySpecVersion = VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTGraphicsPipelineLibraryExtensionName = VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME; + + //=== VK_AMD_shader_early_and_late_fragment_tests === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderEarlyAndLateFragmentTestsSpecVersion = VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDShaderEarlyAndLateFragmentTestsExtensionName = VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME; + + //=== VK_KHR_fragment_shader_barycentric === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRFragmentShaderBarycentricSpecVersion = VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRFragmentShaderBarycentricExtensionName = VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME; + + //=== VK_KHR_shader_subgroup_uniform_control_flow === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderSubgroupUniformControlFlowSpecVersion = VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderSubgroupUniformControlFlowExtensionName = VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME; + + //=== VK_KHR_zero_initialize_workgroup_memory === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRZeroInitializeWorkgroupMemorySpecVersion = VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRZeroInitializeWorkgroupMemoryExtensionName = VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME; + + //=== VK_NV_fragment_shading_rate_enums === + VULKAN_HPP_CONSTEXPR_INLINE auto NVFragmentShadingRateEnumsSpecVersion = VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVFragmentShadingRateEnumsExtensionName = VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME; + + //=== VK_NV_ray_tracing_motion_blur === + VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingMotionBlurSpecVersion = VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingMotionBlurExtensionName = VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME; + + //=== VK_EXT_mesh_shader === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMeshShaderSpecVersion = VK_EXT_MESH_SHADER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMeshShaderExtensionName = VK_EXT_MESH_SHADER_EXTENSION_NAME; + + //=== VK_EXT_ycbcr_2plane_444_formats === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTYcbcr2Plane444FormatsSpecVersion = VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTYcbcr2Plane444FormatsExtensionName = VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME; + + //=== VK_EXT_fragment_density_map2 === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFragmentDensityMap2SpecVersion = VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFragmentDensityMap2ExtensionName = VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME; + + //=== VK_QCOM_rotated_copy_commands === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMRotatedCopyCommandsSpecVersion = VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMRotatedCopyCommandsExtensionName = VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME; + + //=== VK_EXT_image_robustness === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageRobustnessSpecVersion = VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageRobustnessExtensionName = VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME; + + //=== VK_KHR_workgroup_memory_explicit_layout === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRWorkgroupMemoryExplicitLayoutSpecVersion = VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRWorkgroupMemoryExplicitLayoutExtensionName = VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME; + + //=== VK_KHR_copy_commands2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRCopyCommands2SpecVersion = VK_KHR_COPY_COMMANDS_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRCopyCommands2ExtensionName = VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME; + + //=== VK_EXT_image_compression_control === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageCompressionControlSpecVersion = VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageCompressionControlExtensionName = VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME; + + //=== VK_EXT_attachment_feedback_loop_layout === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTAttachmentFeedbackLoopLayoutSpecVersion = VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTAttachmentFeedbackLoopLayoutExtensionName = VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME; + + //=== VK_EXT_4444_formats === + VULKAN_HPP_CONSTEXPR_INLINE auto EXT4444FormatsSpecVersion = VK_EXT_4444_FORMATS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXT4444FormatsExtensionName = VK_EXT_4444_FORMATS_EXTENSION_NAME; + + //=== VK_EXT_device_fault === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDeviceFaultSpecVersion = VK_EXT_DEVICE_FAULT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDeviceFaultExtensionName = VK_EXT_DEVICE_FAULT_EXTENSION_NAME; + + //=== VK_ARM_rasterization_order_attachment_access === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMRasterizationOrderAttachmentAccessSpecVersion = VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMRasterizationOrderAttachmentAccessExtensionName = VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME; + + //=== VK_EXT_rgba10x6_formats === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTRgba10X6FormatsSpecVersion = VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTRgba10X6FormatsExtensionName = VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + VULKAN_HPP_CONSTEXPR_INLINE auto NVAcquireWinrtDisplaySpecVersion = VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVAcquireWinrtDisplayExtensionName = VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDirectfbSurfaceSpecVersion = VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDirectfbSurfaceExtensionName = VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_VALVE_mutable_descriptor_type === + VULKAN_HPP_CONSTEXPR_INLINE auto VALVEMutableDescriptorTypeSpecVersion = VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto VALVEMutableDescriptorTypeExtensionName = VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME; + + //=== VK_EXT_vertex_input_dynamic_state === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTVertexInputDynamicStateSpecVersion = VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTVertexInputDynamicStateExtensionName = VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME; + + //=== VK_EXT_physical_device_drm === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPhysicalDeviceDrmSpecVersion = VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPhysicalDeviceDrmExtensionName = VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME; + + //=== VK_EXT_device_address_binding_report === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDeviceAddressBindingReportSpecVersion = VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDeviceAddressBindingReportExtensionName = VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME; + + //=== VK_EXT_depth_clip_control === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthClipControlSpecVersion = VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthClipControlExtensionName = VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME; + + //=== VK_EXT_primitive_topology_list_restart === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPrimitiveTopologyListRestartSpecVersion = VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPrimitiveTopologyListRestartExtensionName = VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME; + + //=== VK_KHR_format_feature_flags2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRFormatFeatureFlags2SpecVersion = VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRFormatFeatureFlags2ExtensionName = VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME; + + //=== VK_EXT_present_mode_fifo_latest_ready === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPresentModeFifoLatestReadySpecVersion = VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPresentModeFifoLatestReadyExtensionName = VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + VULKAN_HPP_CONSTEXPR_INLINE auto FUCHSIAExternalMemorySpecVersion = VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto FUCHSIAExternalMemoryExtensionName = VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + VULKAN_HPP_CONSTEXPR_INLINE auto FUCHSIAExternalSemaphoreSpecVersion = VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto FUCHSIAExternalSemaphoreExtensionName = VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + VULKAN_HPP_CONSTEXPR_INLINE auto FUCHSIABufferCollectionSpecVersion = VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto FUCHSIABufferCollectionExtensionName = VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + VULKAN_HPP_CONSTEXPR_INLINE auto HUAWEISubpassShadingSpecVersion = VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto HUAWEISubpassShadingExtensionName = VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME; + + //=== VK_HUAWEI_invocation_mask === + VULKAN_HPP_CONSTEXPR_INLINE auto HUAWEIInvocationMaskSpecVersion = VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto HUAWEIInvocationMaskExtensionName = VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME; + + //=== VK_NV_external_memory_rdma === + VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalMemoryRdmaSpecVersion = VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalMemoryRdmaExtensionName = VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME; + + //=== VK_EXT_pipeline_properties === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelinePropertiesSpecVersion = VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelinePropertiesExtensionName = VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME; + + //=== VK_EXT_frame_boundary === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFrameBoundarySpecVersion = VK_EXT_FRAME_BOUNDARY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFrameBoundaryExtensionName = VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME; + + //=== VK_EXT_multisampled_render_to_single_sampled === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMultisampledRenderToSingleSampledSpecVersion = VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMultisampledRenderToSingleSampledExtensionName = VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME; + + //=== VK_EXT_extended_dynamic_state2 === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExtendedDynamicState2SpecVersion = VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExtendedDynamicState2ExtensionName = VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto QNXScreenSurfaceSpecVersion = VK_QNX_SCREEN_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QNXScreenSurfaceExtensionName = VK_QNX_SCREEN_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTColorWriteEnableSpecVersion = VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTColorWriteEnableExtensionName = VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME; + + //=== VK_EXT_primitives_generated_query === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPrimitivesGeneratedQuerySpecVersion = VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPrimitivesGeneratedQueryExtensionName = VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME; + + //=== VK_KHR_ray_tracing_maintenance1 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRayTracingMaintenance1SpecVersion = VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRayTracingMaintenance1ExtensionName = VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME; + + //=== VK_KHR_shader_untyped_pointers === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderUntypedPointersSpecVersion = VK_KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderUntypedPointersExtensionName = VK_KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME; + + //=== VK_EXT_global_priority_query === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTGlobalPriorityQuerySpecVersion = VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTGlobalPriorityQueryExtensionName = VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME; + + //=== VK_VALVE_video_encode_rgb_conversion === + VULKAN_HPP_CONSTEXPR_INLINE auto VALVEVideoEncodeRgbConversionSpecVersion = VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto VALVEVideoEncodeRgbConversionExtensionName = VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_EXTENSION_NAME; + + //=== VK_EXT_image_view_min_lod === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageViewMinLodSpecVersion = VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageViewMinLodExtensionName = VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME; + + //=== VK_EXT_multi_draw === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMultiDrawSpecVersion = VK_EXT_MULTI_DRAW_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMultiDrawExtensionName = VK_EXT_MULTI_DRAW_EXTENSION_NAME; + + //=== VK_EXT_image_2d_view_of_3d === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImage2DViewOf3DSpecVersion = VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImage2DViewOf3DExtensionName = VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME; + + //=== VK_KHR_portability_enumeration === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPortabilityEnumerationSpecVersion = VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPortabilityEnumerationExtensionName = VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME; + + //=== VK_EXT_shader_tile_image === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderTileImageSpecVersion = VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderTileImageExtensionName = VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME; + + //=== VK_EXT_opacity_micromap === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTOpacityMicromapSpecVersion = VK_EXT_OPACITY_MICROMAP_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTOpacityMicromapExtensionName = VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_displacement_micromap === + VULKAN_HPP_DEPRECATED( "The VK_NV_displacement_micromap extension has been deprecated by VK_NV_cluster_acceleration_structure." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVDisplacementMicromapSpecVersion = VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION; + VULKAN_HPP_DEPRECATED( "The VK_NV_displacement_micromap extension has been deprecated by VK_NV_cluster_acceleration_structure." ) + VULKAN_HPP_CONSTEXPR_INLINE auto NVDisplacementMicromapExtensionName = VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_load_store_op_none === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTLoadStoreOpNoneSpecVersion = VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTLoadStoreOpNoneExtensionName = VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME; + + //=== VK_HUAWEI_cluster_culling_shader === + VULKAN_HPP_CONSTEXPR_INLINE auto HUAWEIClusterCullingShaderSpecVersion = VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto HUAWEIClusterCullingShaderExtensionName = VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME; + + //=== VK_EXT_border_color_swizzle === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTBorderColorSwizzleSpecVersion = VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTBorderColorSwizzleExtensionName = VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME; + + //=== VK_EXT_pageable_device_local_memory === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPageableDeviceLocalMemorySpecVersion = VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPageableDeviceLocalMemoryExtensionName = VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME; + + //=== VK_KHR_maintenance4 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance4SpecVersion = VK_KHR_MAINTENANCE_4_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance4ExtensionName = VK_KHR_MAINTENANCE_4_EXTENSION_NAME; + + //=== VK_ARM_shader_core_properties === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMShaderCorePropertiesSpecVersion = VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMShaderCorePropertiesExtensionName = VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME; + + //=== VK_KHR_shader_subgroup_rotate === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderSubgroupRotateSpecVersion = VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderSubgroupRotateExtensionName = VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME; + + //=== VK_ARM_scheduling_controls === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMSchedulingControlsSpecVersion = VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMSchedulingControlsExtensionName = VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME; + + //=== VK_EXT_image_sliced_view_of_3d === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageSlicedViewOf3DSpecVersion = VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageSlicedViewOf3DExtensionName = VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME; + + //=== VK_VALVE_descriptor_set_host_mapping === + VULKAN_HPP_CONSTEXPR_INLINE auto VALVEDescriptorSetHostMappingSpecVersion = VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto VALVEDescriptorSetHostMappingExtensionName = VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME; + + //=== VK_EXT_depth_clamp_zero_one === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthClampZeroOneSpecVersion = VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthClampZeroOneExtensionName = VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME; + + //=== VK_EXT_non_seamless_cube_map === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTNonSeamlessCubeMapSpecVersion = VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTNonSeamlessCubeMapExtensionName = VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME; + + //=== VK_ARM_render_pass_striped === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMRenderPassStripedSpecVersion = VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMRenderPassStripedExtensionName = VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME; + + //=== VK_QCOM_fragment_density_map_offset === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMFragmentDensityMapOffsetSpecVersion = VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMFragmentDensityMapOffsetExtensionName = VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME; + + //=== VK_NV_copy_memory_indirect === + VULKAN_HPP_CONSTEXPR_INLINE auto NVCopyMemoryIndirectSpecVersion = VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVCopyMemoryIndirectExtensionName = VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME; + + //=== VK_NV_memory_decompression === + VULKAN_HPP_CONSTEXPR_INLINE auto NVMemoryDecompressionSpecVersion = VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVMemoryDecompressionExtensionName = VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME; + + //=== VK_NV_device_generated_commands_compute === + VULKAN_HPP_CONSTEXPR_INLINE auto NVDeviceGeneratedCommandsComputeSpecVersion = VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVDeviceGeneratedCommandsComputeExtensionName = VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME; + + //=== VK_NV_ray_tracing_linear_swept_spheres === + VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingLinearSweptSpheresSpecVersion = VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingLinearSweptSpheresExtensionName = VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME; + + //=== VK_NV_linear_color_attachment === + VULKAN_HPP_CONSTEXPR_INLINE auto NVLinearColorAttachmentSpecVersion = VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVLinearColorAttachmentExtensionName = VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME; + + //=== VK_GOOGLE_surfaceless_query === + VULKAN_HPP_CONSTEXPR_INLINE auto GOOGLESurfacelessQuerySpecVersion = VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto GOOGLESurfacelessQueryExtensionName = VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME; + + //=== VK_KHR_shader_maximal_reconvergence === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderMaximalReconvergenceSpecVersion = VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderMaximalReconvergenceExtensionName = VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME; + + //=== VK_EXT_image_compression_control_swapchain === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageCompressionControlSwapchainSpecVersion = VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTImageCompressionControlSwapchainExtensionName = VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME; + + //=== VK_QCOM_image_processing === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMImageProcessingSpecVersion = VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMImageProcessingExtensionName = VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME; + + //=== VK_EXT_nested_command_buffer === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTNestedCommandBufferSpecVersion = VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTNestedCommandBufferExtensionName = VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + VULKAN_HPP_CONSTEXPR_INLINE auto OHOSExternalMemorySpecVersion = VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto OHOSExternalMemoryExtensionName = VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_external_memory_acquire_unmodified === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExternalMemoryAcquireUnmodifiedSpecVersion = VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExternalMemoryAcquireUnmodifiedExtensionName = VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME; + + //=== VK_EXT_extended_dynamic_state3 === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExtendedDynamicState3SpecVersion = VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExtendedDynamicState3ExtensionName = VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME; + + //=== VK_EXT_subpass_merge_feedback === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSubpassMergeFeedbackSpecVersion = VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTSubpassMergeFeedbackExtensionName = VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME; + + //=== VK_LUNARG_direct_driver_loading === + VULKAN_HPP_CONSTEXPR_INLINE auto LUNARGDirectDriverLoadingSpecVersion = VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto LUNARGDirectDriverLoadingExtensionName = VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME; + + //=== VK_ARM_tensors === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMTensorsSpecVersion = VK_ARM_TENSORS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMTensorsExtensionName = VK_ARM_TENSORS_EXTENSION_NAME; + + //=== VK_EXT_shader_module_identifier === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderModuleIdentifierSpecVersion = VK_EXT_SHADER_MODULE_IDENTIFIER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderModuleIdentifierExtensionName = VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME; + + //=== VK_EXT_rasterization_order_attachment_access === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTRasterizationOrderAttachmentAccessSpecVersion = VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTRasterizationOrderAttachmentAccessExtensionName = VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME; + + //=== VK_NV_optical_flow === + VULKAN_HPP_CONSTEXPR_INLINE auto NVOpticalFlowSpecVersion = VK_NV_OPTICAL_FLOW_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVOpticalFlowExtensionName = VK_NV_OPTICAL_FLOW_EXTENSION_NAME; + + //=== VK_EXT_legacy_dithering === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTLegacyDitheringSpecVersion = VK_EXT_LEGACY_DITHERING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTLegacyDitheringExtensionName = VK_EXT_LEGACY_DITHERING_EXTENSION_NAME; + + //=== VK_EXT_pipeline_protected_access === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelineProtectedAccessSpecVersion = VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelineProtectedAccessExtensionName = VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_format_resolve === + VULKAN_HPP_CONSTEXPR_INLINE auto ANDROIDExternalFormatResolveSpecVersion = VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ANDROIDExternalFormatResolveExtensionName = VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_KHR_maintenance5 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance5SpecVersion = VK_KHR_MAINTENANCE_5_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance5ExtensionName = VK_KHR_MAINTENANCE_5_EXTENSION_NAME; + + //=== VK_AMD_anti_lag === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDAntiLagSpecVersion = VK_AMD_ANTI_LAG_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDAntiLagExtensionName = VK_AMD_ANTI_LAG_EXTENSION_NAME; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_dense_geometry_format === + VULKAN_HPP_CONSTEXPR_INLINE auto AMDXDenseGeometryFormatSpecVersion = VK_AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto AMDXDenseGeometryFormatExtensionName = VK_AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_present_id2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentId2SpecVersion = VK_KHR_PRESENT_ID_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentId2ExtensionName = VK_KHR_PRESENT_ID_2_EXTENSION_NAME; + + //=== VK_KHR_present_wait2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentWait2SpecVersion = VK_KHR_PRESENT_WAIT_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentWait2ExtensionName = VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME; + + //=== VK_KHR_ray_tracing_position_fetch === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRayTracingPositionFetchSpecVersion = VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRayTracingPositionFetchExtensionName = VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME; + + //=== VK_EXT_shader_object === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderObjectSpecVersion = VK_EXT_SHADER_OBJECT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderObjectExtensionName = VK_EXT_SHADER_OBJECT_EXTENSION_NAME; + + //=== VK_KHR_pipeline_binary === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPipelineBinarySpecVersion = VK_KHR_PIPELINE_BINARY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPipelineBinaryExtensionName = VK_KHR_PIPELINE_BINARY_EXTENSION_NAME; + + //=== VK_QCOM_tile_properties === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMTilePropertiesSpecVersion = VK_QCOM_TILE_PROPERTIES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMTilePropertiesExtensionName = VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME; + + //=== VK_SEC_amigo_profiling === + VULKAN_HPP_CONSTEXPR_INLINE auto SECAmigoProfilingSpecVersion = VK_SEC_AMIGO_PROFILING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto SECAmigoProfilingExtensionName = VK_SEC_AMIGO_PROFILING_EXTENSION_NAME; + + //=== VK_KHR_surface_maintenance1 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSurfaceMaintenance1SpecVersion = VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSurfaceMaintenance1ExtensionName = VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME; + + //=== VK_KHR_swapchain_maintenance1 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSwapchainMaintenance1SpecVersion = VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRSwapchainMaintenance1ExtensionName = VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME; + + //=== VK_QCOM_multiview_per_view_viewports === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMMultiviewPerViewViewportsSpecVersion = VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMMultiviewPerViewViewportsExtensionName = VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME; + + //=== VK_NV_ray_tracing_invocation_reorder === + VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingInvocationReorderSpecVersion = VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingInvocationReorderExtensionName = VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME; + + //=== VK_NV_cooperative_vector === + VULKAN_HPP_CONSTEXPR_INLINE auto NVCooperativeVectorSpecVersion = VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVCooperativeVectorExtensionName = VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME; + + //=== VK_NV_extended_sparse_address_space === + VULKAN_HPP_CONSTEXPR_INLINE auto NVExtendedSparseAddressSpaceSpecVersion = VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVExtendedSparseAddressSpaceExtensionName = VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME; + + //=== VK_EXT_mutable_descriptor_type === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMutableDescriptorTypeSpecVersion = VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMutableDescriptorTypeExtensionName = VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME; + + //=== VK_EXT_legacy_vertex_attributes === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTLegacyVertexAttributesSpecVersion = VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTLegacyVertexAttributesExtensionName = VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME; + + //=== VK_EXT_layer_settings === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTLayerSettingsSpecVersion = VK_EXT_LAYER_SETTINGS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTLayerSettingsExtensionName = VK_EXT_LAYER_SETTINGS_EXTENSION_NAME; + + //=== VK_ARM_shader_core_builtins === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMShaderCoreBuiltinsSpecVersion = VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMShaderCoreBuiltinsExtensionName = VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME; + + //=== VK_EXT_pipeline_library_group_handles === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelineLibraryGroupHandlesSpecVersion = VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTPipelineLibraryGroupHandlesExtensionName = VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME; + + //=== VK_EXT_dynamic_rendering_unused_attachments === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDynamicRenderingUnusedAttachmentsSpecVersion = VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDynamicRenderingUnusedAttachmentsExtensionName = VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME; + + //=== VK_KHR_internally_synchronized_queues === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRInternallySynchronizedQueuesSpecVersion = VK_KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRInternallySynchronizedQueuesExtensionName = VK_KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME; + + //=== VK_NV_low_latency2 === + VULKAN_HPP_CONSTEXPR_INLINE auto NVLowLatency2SpecVersion = VK_NV_LOW_LATENCY_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVLowLatency2ExtensionName = VK_NV_LOW_LATENCY_2_EXTENSION_NAME; + + //=== VK_KHR_cooperative_matrix === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRCooperativeMatrixSpecVersion = VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRCooperativeMatrixExtensionName = VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME; + + //=== VK_ARM_data_graph === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMDataGraphSpecVersion = VK_ARM_DATA_GRAPH_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMDataGraphExtensionName = VK_ARM_DATA_GRAPH_EXTENSION_NAME; + + //=== VK_QCOM_multiview_per_view_render_areas === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMMultiviewPerViewRenderAreasSpecVersion = VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMMultiviewPerViewRenderAreasExtensionName = VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME; + + //=== VK_KHR_compute_shader_derivatives === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRComputeShaderDerivativesSpecVersion = VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRComputeShaderDerivativesExtensionName = VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME; + + //=== VK_KHR_video_decode_av1 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoDecodeAv1SpecVersion = VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoDecodeAv1ExtensionName = VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME; + + //=== VK_KHR_video_encode_av1 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeAv1SpecVersion = VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeAv1ExtensionName = VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME; + + //=== VK_KHR_video_decode_vp9 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoDecodeVp9SpecVersion = VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoDecodeVp9ExtensionName = VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME; + + //=== VK_KHR_video_maintenance1 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoMaintenance1SpecVersion = VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoMaintenance1ExtensionName = VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME; + + //=== VK_NV_per_stage_descriptor_set === + VULKAN_HPP_CONSTEXPR_INLINE auto NVPerStageDescriptorSetSpecVersion = VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVPerStageDescriptorSetExtensionName = VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME; + + //=== VK_QCOM_image_processing2 === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMImageProcessing2SpecVersion = VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMImageProcessing2ExtensionName = VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME; + + //=== VK_QCOM_filter_cubic_weights === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMFilterCubicWeightsSpecVersion = VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMFilterCubicWeightsExtensionName = VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME; + + //=== VK_QCOM_ycbcr_degamma === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMYcbcrDegammaSpecVersion = VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMYcbcrDegammaExtensionName = VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME; + + //=== VK_QCOM_filter_cubic_clamp === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMFilterCubicClampSpecVersion = VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMFilterCubicClampExtensionName = VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME; + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTAttachmentFeedbackLoopDynamicStateSpecVersion = VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTAttachmentFeedbackLoopDynamicStateExtensionName = VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME; + + //=== VK_KHR_vertex_attribute_divisor === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVertexAttributeDivisorSpecVersion = VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVertexAttributeDivisorExtensionName = VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME; + + //=== VK_KHR_load_store_op_none === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRLoadStoreOpNoneSpecVersion = VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRLoadStoreOpNoneExtensionName = VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME; + + //=== VK_KHR_unified_image_layouts === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRUnifiedImageLayoutsSpecVersion = VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRUnifiedImageLayoutsExtensionName = VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME; + + //=== VK_KHR_shader_float_controls2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderFloatControls2SpecVersion = VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderFloatControls2ExtensionName = VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + VULKAN_HPP_CONSTEXPR_INLINE auto QNXExternalMemoryScreenBufferSpecVersion = VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QNXExternalMemoryScreenBufferExtensionName = VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_MSFT_layered_driver === + VULKAN_HPP_CONSTEXPR_INLINE auto MSFTLayeredDriverSpecVersion = VK_MSFT_LAYERED_DRIVER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto MSFTLayeredDriverExtensionName = VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME; + + //=== VK_KHR_index_type_uint8 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRIndexTypeUint8SpecVersion = VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRIndexTypeUint8ExtensionName = VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME; + + //=== VK_KHR_line_rasterization === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRLineRasterizationSpecVersion = VK_KHR_LINE_RASTERIZATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRLineRasterizationExtensionName = VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME; + + //=== VK_KHR_calibrated_timestamps === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRCalibratedTimestampsSpecVersion = VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRCalibratedTimestampsExtensionName = VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME; + + //=== VK_KHR_shader_expect_assume === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderExpectAssumeSpecVersion = VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderExpectAssumeExtensionName = VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME; + + //=== VK_KHR_maintenance6 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance6SpecVersion = VK_KHR_MAINTENANCE_6_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance6ExtensionName = VK_KHR_MAINTENANCE_6_EXTENSION_NAME; + + //=== VK_NV_descriptor_pool_overallocation === + VULKAN_HPP_CONSTEXPR_INLINE auto NVDescriptorPoolOverallocationSpecVersion = VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVDescriptorPoolOverallocationExtensionName = VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME; + + //=== VK_QCOM_tile_memory_heap === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMTileMemoryHeapSpecVersion = VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMTileMemoryHeapExtensionName = VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME; + + //=== VK_KHR_copy_memory_indirect === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRCopyMemoryIndirectSpecVersion = VK_KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRCopyMemoryIndirectExtensionName = VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME; + + //=== VK_EXT_memory_decompression === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMemoryDecompressionSpecVersion = VK_EXT_MEMORY_DECOMPRESSION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTMemoryDecompressionExtensionName = VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME; + + //=== VK_NV_display_stereo === + VULKAN_HPP_CONSTEXPR_INLINE auto NVDisplayStereoSpecVersion = VK_NV_DISPLAY_STEREO_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVDisplayStereoExtensionName = VK_NV_DISPLAY_STEREO_EXTENSION_NAME; + + //=== VK_KHR_video_encode_intra_refresh === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeIntraRefreshSpecVersion = VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeIntraRefreshExtensionName = VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME; + + //=== VK_KHR_video_encode_quantization_map === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeQuantizationMapSpecVersion = VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoEncodeQuantizationMapExtensionName = VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME; + + //=== VK_NV_raw_access_chains === + VULKAN_HPP_CONSTEXPR_INLINE auto NVRawAccessChainsSpecVersion = VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVRawAccessChainsExtensionName = VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME; + + //=== VK_NV_external_compute_queue === + VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalComputeQueueSpecVersion = VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVExternalComputeQueueExtensionName = VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME; + + //=== VK_KHR_shader_relaxed_extended_instruction === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderRelaxedExtendedInstructionSpecVersion = VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderRelaxedExtendedInstructionExtensionName = VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME; + + //=== VK_NV_command_buffer_inheritance === + VULKAN_HPP_CONSTEXPR_INLINE auto NVCommandBufferInheritanceSpecVersion = VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVCommandBufferInheritanceExtensionName = VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME; + + //=== VK_KHR_maintenance7 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance7SpecVersion = VK_KHR_MAINTENANCE_7_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance7ExtensionName = VK_KHR_MAINTENANCE_7_EXTENSION_NAME; + + //=== VK_NV_shader_atomic_float16_vector === + VULKAN_HPP_CONSTEXPR_INLINE auto NVShaderAtomicFloat16VectorSpecVersion = VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVShaderAtomicFloat16VectorExtensionName = VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME; + + //=== VK_EXT_shader_replicated_composites === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderReplicatedCompositesSpecVersion = VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderReplicatedCompositesExtensionName = VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME; + + //=== VK_EXT_shader_float8 === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderFloat8SpecVersion = VK_EXT_SHADER_FLOAT8_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderFloat8ExtensionName = VK_EXT_SHADER_FLOAT8_EXTENSION_NAME; + + //=== VK_NV_ray_tracing_validation === + VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingValidationSpecVersion = VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVRayTracingValidationExtensionName = VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME; + + //=== VK_NV_cluster_acceleration_structure === + VULKAN_HPP_CONSTEXPR_INLINE auto NVClusterAccelerationStructureSpecVersion = VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVClusterAccelerationStructureExtensionName = VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME; + + //=== VK_NV_partitioned_acceleration_structure === + VULKAN_HPP_CONSTEXPR_INLINE auto NVPartitionedAccelerationStructureSpecVersion = VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVPartitionedAccelerationStructureExtensionName = VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME; + + //=== VK_EXT_device_generated_commands === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDeviceGeneratedCommandsSpecVersion = VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDeviceGeneratedCommandsExtensionName = VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME; + + //=== VK_KHR_device_fault === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeviceFaultSpecVersion = VK_KHR_DEVICE_FAULT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDeviceFaultExtensionName = VK_KHR_DEVICE_FAULT_EXTENSION_NAME; + + //=== VK_KHR_maintenance8 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance8SpecVersion = VK_KHR_MAINTENANCE_8_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance8ExtensionName = VK_KHR_MAINTENANCE_8_EXTENSION_NAME; + + //=== VK_MESA_image_alignment_control === + VULKAN_HPP_CONSTEXPR_INLINE auto MESAImageAlignmentControlSpecVersion = VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto MESAImageAlignmentControlExtensionName = VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME; + + //=== VK_KHR_shader_fma === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderFmaSpecVersion = VK_KHR_SHADER_FMA_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRShaderFmaExtensionName = VK_KHR_SHADER_FMA_EXTENSION_NAME; + + //=== VK_NV_push_constant_bank === + VULKAN_HPP_CONSTEXPR_INLINE auto NVPushConstantBankSpecVersion = VK_NV_PUSH_CONSTANT_BANK_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVPushConstantBankExtensionName = VK_NV_PUSH_CONSTANT_BANK_EXTENSION_NAME; + + //=== VK_EXT_ray_tracing_invocation_reorder === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTRayTracingInvocationReorderSpecVersion = VK_EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTRayTracingInvocationReorderExtensionName = VK_EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME; + + //=== VK_EXT_depth_clamp_control === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthClampControlSpecVersion = VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTDepthClampControlExtensionName = VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME; + + //=== VK_KHR_maintenance9 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance9SpecVersion = VK_KHR_MAINTENANCE_9_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance9ExtensionName = VK_KHR_MAINTENANCE_9_EXTENSION_NAME; + + //=== VK_KHR_video_maintenance2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoMaintenance2SpecVersion = VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRVideoMaintenance2ExtensionName = VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto OHOSSurfaceSpecVersion = VK_OHOS_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto OHOSSurfaceExtensionName = VK_OHOS_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_HUAWEI_hdr_vivid === + VULKAN_HPP_CONSTEXPR_INLINE auto HUAWEIHdrVividSpecVersion = VK_HUAWEI_HDR_VIVID_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto HUAWEIHdrVividExtensionName = VK_HUAWEI_HDR_VIVID_EXTENSION_NAME; + + //=== VK_NV_cooperative_matrix2 === + VULKAN_HPP_CONSTEXPR_INLINE auto NVCooperativeMatrix2SpecVersion = VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVCooperativeMatrix2ExtensionName = VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME; + + //=== VK_ARM_pipeline_opacity_micromap === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMPipelineOpacityMicromapSpecVersion = VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMPipelineOpacityMicromapExtensionName = VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExternalMemoryMetalSpecVersion = VK_EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTExternalMemoryMetalExtensionName = VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_depth_clamp_zero_one === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDepthClampZeroOneSpecVersion = VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRDepthClampZeroOneExtensionName = VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME; + + //=== VK_ARM_performance_counters_by_region === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMPerformanceCountersByRegionSpecVersion = VK_ARM_PERFORMANCE_COUNTERS_BY_REGION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMPerformanceCountersByRegionExtensionName = VK_ARM_PERFORMANCE_COUNTERS_BY_REGION_EXTENSION_NAME; + + //=== VK_ARM_shader_instrumentation === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMShaderInstrumentationSpecVersion = VK_ARM_SHADER_INSTRUMENTATION_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMShaderInstrumentationExtensionName = VK_ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME; + + //=== VK_EXT_vertex_attribute_robustness === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTVertexAttributeRobustnessSpecVersion = VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTVertexAttributeRobustnessExtensionName = VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME; + + //=== VK_ARM_format_pack === + VULKAN_HPP_CONSTEXPR_INLINE auto ARMFormatPackSpecVersion = VK_ARM_FORMAT_PACK_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto ARMFormatPackExtensionName = VK_ARM_FORMAT_PACK_EXTENSION_NAME; + + //=== VK_VALVE_fragment_density_map_layered === + VULKAN_HPP_CONSTEXPR_INLINE auto VALVEFragmentDensityMapLayeredSpecVersion = VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto VALVEFragmentDensityMapLayeredExtensionName = VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME; + + //=== VK_KHR_robustness2 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRobustness2SpecVersion = VK_KHR_ROBUSTNESS_2_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRRobustness2ExtensionName = VK_KHR_ROBUSTNESS_2_EXTENSION_NAME; + + //=== VK_NV_present_metering === + VULKAN_HPP_CONSTEXPR_INLINE auto NVPresentMeteringSpecVersion = VK_NV_PRESENT_METERING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVPresentMeteringExtensionName = VK_NV_PRESENT_METERING_EXTENSION_NAME; + + //=== VK_EXT_fragment_density_map_offset === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFragmentDensityMapOffsetSpecVersion = VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTFragmentDensityMapOffsetExtensionName = VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME; + + //=== VK_EXT_zero_initialize_device_memory === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTZeroInitializeDeviceMemorySpecVersion = VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTZeroInitializeDeviceMemoryExtensionName = VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME; + + //=== VK_KHR_present_mode_fifo_latest_ready === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentModeFifoLatestReadySpecVersion = VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRPresentModeFifoLatestReadyExtensionName = VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME; + + //=== VK_EXT_shader_64bit_indexing === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShader64BitIndexingSpecVersion = VK_EXT_SHADER_64BIT_INDEXING_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShader64BitIndexingExtensionName = VK_EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME; + + //=== VK_EXT_custom_resolve === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTCustomResolveSpecVersion = VK_EXT_CUSTOM_RESOLVE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTCustomResolveExtensionName = VK_EXT_CUSTOM_RESOLVE_EXTENSION_NAME; + + //=== VK_QCOM_data_graph_model === + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMDataGraphModelSpecVersion = VK_QCOM_DATA_GRAPH_MODEL_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto QCOMDataGraphModelExtensionName = VK_QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME; + + //=== VK_KHR_maintenance10 === + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance10SpecVersion = VK_KHR_MAINTENANCE_10_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto KHRMaintenance10ExtensionName = VK_KHR_MAINTENANCE_10_EXTENSION_NAME; + + //=== VK_EXT_shader_long_vector === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderLongVectorSpecVersion = VK_EXT_SHADER_LONG_VECTOR_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderLongVectorExtensionName = VK_EXT_SHADER_LONG_VECTOR_EXTENSION_NAME; + + //=== VK_SEC_pipeline_cache_incremental_mode === + VULKAN_HPP_CONSTEXPR_INLINE auto SECPipelineCacheIncrementalModeSpecVersion = VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto SECPipelineCacheIncrementalModeExtensionName = VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME; + + //=== VK_EXT_shader_uniform_buffer_unsized_array === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderUniformBufferUnsizedArraySpecVersion = VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderUniformBufferUnsizedArrayExtensionName = VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME; + + //=== VK_NV_compute_occupancy_priority === + VULKAN_HPP_CONSTEXPR_INLINE auto NVComputeOccupancyPrioritySpecVersion = VK_NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto NVComputeOccupancyPriorityExtensionName = VK_NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME; + + //=== VK_EXT_shader_subgroup_partitioned === + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderSubgroupPartitionedSpecVersion = VK_EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto EXTShaderSubgroupPartitionedExtensionName = VK_EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME; + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + VULKAN_HPP_CONSTEXPR_INLINE auto SECUbmSurfaceSpecVersion = VK_SEC_UBM_SURFACE_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto SECUbmSurfaceExtensionName = VK_SEC_UBM_SURFACE_EXTENSION_NAME; +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + + //=== VK_VALVE_shader_mixed_float_dot_product === + VULKAN_HPP_CONSTEXPR_INLINE auto VALVEShaderMixedFloatDotProductSpecVersion = VK_VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION; + VULKAN_HPP_CONSTEXPR_INLINE auto VALVEShaderMixedFloatDotProductExtensionName = VK_VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_EXTENSION_NAME; + +} // namespace VULKAN_HPP_NAMESPACE + +// clang-format off +#include +#include +#include +// clang-format on + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ +#if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + + //======================= + //=== STRUCTS EXTENDS === + //======================= + + //=== VK_VERSION_1_0 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_VERSION_1_1 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_VERSION_1_2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_VERSION_1_3 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_VERSION_1_4 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_swapchain === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_display_swapchain === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_debug_report === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_AMD_rasterization_order === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_queue === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_decode_queue === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_dedicated_allocation === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_transform_feedback === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NVX_binary_import === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_encode_h264 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_encode_h265 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_decode_h264 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_AMD_texture_gather_bias_lod === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_corner_sampled_image === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_external_memory === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_win32_keyed_mutex === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_validation_flags === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_astc_decode_mode === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_keyed_mutex === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_conditional_rendering === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_incremental_present === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_clip_space_w_scaling === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_display_control === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_GOOGLE_display_timing === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NVX_multiview_per_view_attributes === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_viewport_swizzle === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_discard_rectangles === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_conservative_rasterization === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_depth_clip_enable === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_IMG_relaxed_line_rasterization === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shared_presentable_image === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_performance_query === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_debug_utils === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_AMD_mixed_attachment_samples === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shader_bfloat16 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_sample_locations === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_blend_operation_advanced === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_fragment_coverage_to_color === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_acceleration_structure === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_ray_tracing_pipeline === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_ray_query === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_framebuffer_mixed_samples === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_shader_sm_builtins === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_image_drm_format_modifier === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_validation_cache === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_portability_subset === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NV_shading_rate_image === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_ray_tracing === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_representative_fragment_test === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_filter_cubic === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_cooperative_matrix_conversion === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_external_memory_host === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shader_clock === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_AMD_pipeline_compiler_control === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_AMD_shader_core_properties === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_decode_h265 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_AMD_memory_overallocation_behavior === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_vertex_attribute_divisor === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_frame_token === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_mesh_shader === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_shader_image_footprint === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_scissor_exclusive === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_device_diagnostic_checkpoints === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_present_timing === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_INTEL_shader_integer_functions2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_INTEL_performance_query === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_pci_bus_info === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_AMD_display_native_hdr === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_fragment_density_map === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_fragment_shading_rate === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_AMD_shader_core_properties2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_AMD_device_coherent_memory === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shader_constant_data === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shader_abort === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_image_atomic_int64 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shader_quad_control === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_memory_budget === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_memory_priority === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_surface_protected_capabilities === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_dedicated_allocation_image_aliasing === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_buffer_device_address === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_validation_features === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_present_wait === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_cooperative_matrix === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_coverage_reduction_mode === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_fragment_shader_interlock === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_ycbcr_image_arrays === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_provoking_vertex === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_shader_atomic_float === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_extended_dynamic_state === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_pipeline_executable_properties === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_map_memory_placed === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_atomic_float2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_device_generated_commands === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_inherited_viewport_scissor === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_texel_buffer_alignment === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_render_pass_transform === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_depth_bias_control === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_device_memory_report === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_custom_border_color === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_texture_compression_astc_3d === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_pipeline_library === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_present_barrier === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_present_id === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_encode_queue === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_device_diagnostics_config === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_low_latency === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_descriptor_buffer === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_device_address_commands === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_graphics_pipeline_library === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_AMD_shader_early_and_late_fragment_tests === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_fragment_shader_barycentric === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shader_subgroup_uniform_control_flow === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_fragment_shading_rate_enums === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_ray_tracing_motion_blur === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_mesh_shader === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_ycbcr_2plane_444_formats === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_fragment_density_map2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_rotated_copy_commands === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_workgroup_memory_explicit_layout === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_image_compression_control === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_attachment_feedback_loop_layout === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_4444_formats === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_device_fault === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_rgba10x6_formats === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_vertex_input_dynamic_state === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_physical_device_drm === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_device_address_binding_report === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_depth_clip_control === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_primitive_topology_list_restart === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_HUAWEI_invocation_mask === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_external_memory_rdma === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_pipeline_properties === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_frame_boundary === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_multisampled_render_to_single_sampled === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_extended_dynamic_state2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_color_write_enable === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_primitives_generated_query === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_ray_tracing_maintenance1 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shader_untyped_pointers === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_VALVE_video_encode_rgb_conversion === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_image_view_min_lod === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_multi_draw === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_image_2d_view_of_3d === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_tile_image === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_opacity_micromap === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_displacement_micromap === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_HUAWEI_cluster_culling_shader === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_border_color_swizzle === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_pageable_device_local_memory === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_ARM_shader_core_properties === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_ARM_scheduling_controls === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_image_sliced_view_of_3d === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_VALVE_descriptor_set_host_mapping === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_non_seamless_cube_map === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_ARM_render_pass_striped === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_copy_memory_indirect === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_device_generated_commands_compute === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_ray_tracing_linear_swept_spheres === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_linear_color_attachment === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shader_maximal_reconvergence === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_image_compression_control_swapchain === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_image_processing === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_nested_command_buffer === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_external_memory_acquire_unmodified === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_extended_dynamic_state3 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_subpass_merge_feedback === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_LUNARG_direct_driver_loading === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_ARM_tensors === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_module_identifier === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_rasterization_order_attachment_access === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_optical_flow === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_legacy_dithering === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_format_resolve === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_AMD_anti_lag === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_dense_geometry_format === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_present_id2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_present_wait2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_ray_tracing_position_fetch === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_object === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_pipeline_binary === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_tile_properties === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_SEC_amigo_profiling === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_surface_maintenance1 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_swapchain_maintenance1 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_multiview_per_view_viewports === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_ray_tracing_invocation_reorder === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_cooperative_vector === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_extended_sparse_address_space === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_mutable_descriptor_type === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_legacy_vertex_attributes === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_layer_settings === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_ARM_shader_core_builtins === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_pipeline_library_group_handles === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_dynamic_rendering_unused_attachments === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_internally_synchronized_queues === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_low_latency2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_cooperative_matrix === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_ARM_data_graph === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_multiview_per_view_render_areas === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_compute_shader_derivatives === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_decode_av1 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_encode_av1 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_decode_vp9 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_maintenance1 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_per_stage_descriptor_set === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_image_processing2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_filter_cubic_weights === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_ycbcr_degamma === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_filter_cubic_clamp === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_unified_image_layouts === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_MSFT_layered_driver === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_descriptor_pool_overallocation === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_tile_memory_heap === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_copy_memory_indirect === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_memory_decompression === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_display_stereo === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_encode_intra_refresh === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_encode_quantization_map === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_raw_access_chains === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_external_compute_queue === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shader_relaxed_extended_instruction === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_command_buffer_inheritance === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_maintenance7 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_shader_atomic_float16_vector === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_replicated_composites === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_float8 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_ray_tracing_validation === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_cluster_acceleration_structure === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_partitioned_acceleration_structure === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_device_generated_commands === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_device_fault === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_maintenance8 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_MESA_image_alignment_control === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_shader_fma === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_push_constant_bank === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_ray_tracing_invocation_reorder === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_depth_clamp_control === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_maintenance9 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_video_maintenance2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_HUAWEI_hdr_vivid === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_cooperative_matrix2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_ARM_pipeline_opacity_micromap === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_depth_clamp_zero_one === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_ARM_performance_counters_by_region === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_ARM_shader_instrumentation === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_vertex_attribute_robustness === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_ARM_format_pack === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_VALVE_fragment_density_map_layered === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_robustness2 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_present_metering === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_fragment_density_map_offset === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_zero_initialize_device_memory === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_present_mode_fifo_latest_ready === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_64bit_indexing === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_custom_resolve === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_QCOM_data_graph_model === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_KHR_maintenance10 === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_long_vector === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_SEC_pipeline_cache_incremental_mode === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_uniform_buffer_unsized_array === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_NV_compute_occupancy_priority === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_EXT_shader_subgroup_partitioned === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + //=== VK_VALVE_shader_mixed_float_dot_product === + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + + template <> + struct StructExtends + { + enum + { + value = true + }; + }; + +#endif // VULKAN_HPP_DISABLE_ENHANCED_MODE + + namespace detail + { +#if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + class DynamicLoader + { + public: +# ifdef VULKAN_HPP_NO_EXCEPTIONS + DynamicLoader( std::string const & vulkanLibraryName = {} ) VULKAN_HPP_NOEXCEPT +# else + DynamicLoader( std::string const & vulkanLibraryName = {} ) +# endif + { + if ( !vulkanLibraryName.empty() ) + { +# if defined( _WIN32 ) + m_library = ::LoadLibraryA( vulkanLibraryName.c_str() ); +# elif defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNX__ ) || defined( __Fuchsia__ ) + m_library = dlopen( vulkanLibraryName.c_str(), RTLD_NOW | RTLD_LOCAL ); +# else +# error unsupported platform +# endif + } + else + { +# if defined( _WIN32 ) + m_library = ::LoadLibraryA( "vulkan-1.dll" ); +# elif defined( __APPLE__ ) + m_library = dlopen( "libvulkan.dylib", RTLD_NOW | RTLD_LOCAL ); + if ( !m_library ) + { + m_library = dlopen( "libvulkan.1.dylib", RTLD_NOW | RTLD_LOCAL ); + } + // modern versions of macOS don't search /usr/local/lib automatically contrary to what man dlopen says + // Vulkan SDK uses this as the system-wide installation location, so we're going to fallback to this if all else fails + if ( !m_library && ( std::getenv( "DYLD_FALLBACK_LIBRARY_PATH" ) == NULL ) ) + { + m_library = dlopen( "/usr/local/lib/libvulkan.dylib", RTLD_NOW | RTLD_LOCAL ); + } + // for Homebrew installations on Apple Silicon + if ( !m_library ) + { + m_library = dlopen( "/opt/homebrew/lib/libvulkan.dylib", RTLD_NOW | RTLD_LOCAL ); + } + if ( !m_library ) + { + m_library = dlopen( "libMoltenVK.dylib", RTLD_NOW | RTLD_LOCAL ); + } + // Add support for using Vulkan and MoltenVK in a Framework. App store rules for iOS + // strictly enforce no .dylib's. If they aren't found it just falls through + if ( !m_library ) + { + m_library = dlopen( "vulkan.framework/vulkan", RTLD_NOW | RTLD_LOCAL ); + } + if ( !m_library ) + { + m_library = dlopen( "MoltenVK.framework/MoltenVK", RTLD_NOW | RTLD_LOCAL ); + } +# elif defined( __unix__ ) || defined( __QNX__ ) || defined( __Fuchsia__ ) + m_library = dlopen( "libvulkan.so", RTLD_NOW | RTLD_LOCAL ); + if ( !m_library ) + { + m_library = dlopen( "libvulkan.so.1", RTLD_NOW | RTLD_LOCAL ); + } +# else +# error unsupported platform +# endif + } + +# ifndef VULKAN_HPP_NO_EXCEPTIONS + if ( !m_library ) + { + // NOTE there should be an InitializationFailedError, but msvc insists on the symbol does not exist within the scope of this function. + throw std::runtime_error( "Failed to load vulkan library!" ); + } +# endif + } + + DynamicLoader( DynamicLoader const & ) = delete; + + DynamicLoader( DynamicLoader && other ) VULKAN_HPP_NOEXCEPT : m_library( other.m_library ) + { + other.m_library = nullptr; + } + + DynamicLoader & operator=( DynamicLoader const & ) = delete; + + DynamicLoader & operator=( DynamicLoader && other ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_library, other.m_library ); + return *this; + } + + ~DynamicLoader() VULKAN_HPP_NOEXCEPT + { + if ( m_library ) + { +# if defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNX__ ) || defined( __Fuchsia__ ) + dlclose( m_library ); +# elif defined( _WIN32 ) + ::FreeLibrary( m_library ); +# else +# error unsupported platform +# endif + } + } + + template + T getProcAddress( char const * function ) const VULKAN_HPP_NOEXCEPT + { +# if defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNX__ ) || defined( __Fuchsia__ ) + return (T)(void *)dlsym( m_library, function ); +# elif defined( _WIN32 ) + return (T)(void *)::GetProcAddress( m_library, function ); +# else +# error unsupported platform +# endif + } + + bool success() const VULKAN_HPP_NOEXCEPT + { + return m_library != nullptr; + } + + private: +# if defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNX__ ) || defined( __Fuchsia__ ) + void * m_library; +# elif defined( _WIN32 ) + ::HINSTANCE m_library; +# else +# error unsupported platform +# endif + }; +#endif + + using PFN_dummy = void ( * )(); + + class DispatchLoaderDynamic : public DispatchLoaderBase + { + public: + //=== VK_VERSION_1_0 === + PFN_vkCreateInstance vkCreateInstance = 0; + PFN_vkDestroyInstance vkDestroyInstance = 0; + PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = 0; + PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures = 0; + PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties = 0; + PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = 0; + PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties = 0; + PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0; + PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0; + PFN_vkCreateDevice vkCreateDevice = 0; + PFN_vkDestroyDevice vkDestroyDevice = 0; + PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0; + PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = 0; + PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = 0; + PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties = 0; + PFN_vkGetDeviceQueue vkGetDeviceQueue = 0; + PFN_vkQueueSubmit vkQueueSubmit = 0; + PFN_vkQueueWaitIdle vkQueueWaitIdle = 0; + PFN_vkDeviceWaitIdle vkDeviceWaitIdle = 0; + PFN_vkAllocateMemory vkAllocateMemory = 0; + PFN_vkFreeMemory vkFreeMemory = 0; + PFN_vkMapMemory vkMapMemory = 0; + PFN_vkUnmapMemory vkUnmapMemory = 0; + PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges = 0; + PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges = 0; + PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment = 0; + PFN_vkBindBufferMemory vkBindBufferMemory = 0; + PFN_vkBindImageMemory vkBindImageMemory = 0; + PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements = 0; + PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements = 0; + PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0; + PFN_vkQueueBindSparse vkQueueBindSparse = 0; + PFN_vkCreateFence vkCreateFence = 0; + PFN_vkDestroyFence vkDestroyFence = 0; + PFN_vkResetFences vkResetFences = 0; + PFN_vkGetFenceStatus vkGetFenceStatus = 0; + PFN_vkWaitForFences vkWaitForFences = 0; + PFN_vkCreateSemaphore vkCreateSemaphore = 0; + PFN_vkDestroySemaphore vkDestroySemaphore = 0; + PFN_vkCreateQueryPool vkCreateQueryPool = 0; + PFN_vkDestroyQueryPool vkDestroyQueryPool = 0; + PFN_vkGetQueryPoolResults vkGetQueryPoolResults = 0; + PFN_vkCreateBuffer vkCreateBuffer = 0; + PFN_vkDestroyBuffer vkDestroyBuffer = 0; + PFN_vkCreateImage vkCreateImage = 0; + PFN_vkDestroyImage vkDestroyImage = 0; + PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout = 0; + PFN_vkCreateImageView vkCreateImageView = 0; + PFN_vkDestroyImageView vkDestroyImageView = 0; + PFN_vkCreateCommandPool vkCreateCommandPool = 0; + PFN_vkDestroyCommandPool vkDestroyCommandPool = 0; + PFN_vkResetCommandPool vkResetCommandPool = 0; + PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = 0; + PFN_vkFreeCommandBuffers vkFreeCommandBuffers = 0; + PFN_vkBeginCommandBuffer vkBeginCommandBuffer = 0; + PFN_vkEndCommandBuffer vkEndCommandBuffer = 0; + PFN_vkResetCommandBuffer vkResetCommandBuffer = 0; + PFN_vkCmdCopyBuffer vkCmdCopyBuffer = 0; + PFN_vkCmdCopyImage vkCmdCopyImage = 0; + PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = 0; + PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer = 0; + PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer = 0; + PFN_vkCmdFillBuffer vkCmdFillBuffer = 0; + PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = 0; + PFN_vkCmdBeginQuery vkCmdBeginQuery = 0; + PFN_vkCmdEndQuery vkCmdEndQuery = 0; + PFN_vkCmdResetQueryPool vkCmdResetQueryPool = 0; + PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp = 0; + PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults = 0; + PFN_vkCmdExecuteCommands vkCmdExecuteCommands = 0; + PFN_vkCreateEvent vkCreateEvent = 0; + PFN_vkDestroyEvent vkDestroyEvent = 0; + PFN_vkGetEventStatus vkGetEventStatus = 0; + PFN_vkSetEvent vkSetEvent = 0; + PFN_vkResetEvent vkResetEvent = 0; + PFN_vkCreateBufferView vkCreateBufferView = 0; + PFN_vkDestroyBufferView vkDestroyBufferView = 0; + PFN_vkCreateShaderModule vkCreateShaderModule = 0; + PFN_vkDestroyShaderModule vkDestroyShaderModule = 0; + PFN_vkCreatePipelineCache vkCreatePipelineCache = 0; + PFN_vkDestroyPipelineCache vkDestroyPipelineCache = 0; + PFN_vkGetPipelineCacheData vkGetPipelineCacheData = 0; + PFN_vkMergePipelineCaches vkMergePipelineCaches = 0; + PFN_vkCreateComputePipelines vkCreateComputePipelines = 0; + PFN_vkDestroyPipeline vkDestroyPipeline = 0; + PFN_vkCreatePipelineLayout vkCreatePipelineLayout = 0; + PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = 0; + PFN_vkCreateSampler vkCreateSampler = 0; + PFN_vkDestroySampler vkDestroySampler = 0; + PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = 0; + PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0; + PFN_vkCreateDescriptorPool vkCreateDescriptorPool = 0; + PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = 0; + PFN_vkResetDescriptorPool vkResetDescriptorPool = 0; + PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets = 0; + PFN_vkFreeDescriptorSets vkFreeDescriptorSets = 0; + PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets = 0; + PFN_vkCmdBindPipeline vkCmdBindPipeline = 0; + PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = 0; + PFN_vkCmdClearColorImage vkCmdClearColorImage = 0; + PFN_vkCmdDispatch vkCmdDispatch = 0; + PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect = 0; + PFN_vkCmdSetEvent vkCmdSetEvent = 0; + PFN_vkCmdResetEvent vkCmdResetEvent = 0; + PFN_vkCmdWaitEvents vkCmdWaitEvents = 0; + PFN_vkCmdPushConstants vkCmdPushConstants = 0; + PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = 0; + PFN_vkCreateFramebuffer vkCreateFramebuffer = 0; + PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0; + PFN_vkCreateRenderPass vkCreateRenderPass = 0; + PFN_vkDestroyRenderPass vkDestroyRenderPass = 0; + PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity = 0; + PFN_vkCmdSetViewport vkCmdSetViewport = 0; + PFN_vkCmdSetScissor vkCmdSetScissor = 0; + PFN_vkCmdSetLineWidth vkCmdSetLineWidth = 0; + PFN_vkCmdSetDepthBias vkCmdSetDepthBias = 0; + PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants = 0; + PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds = 0; + PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask = 0; + PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask = 0; + PFN_vkCmdSetStencilReference vkCmdSetStencilReference = 0; + PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = 0; + PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0; + PFN_vkCmdDraw vkCmdDraw = 0; + PFN_vkCmdDrawIndexed vkCmdDrawIndexed = 0; + PFN_vkCmdDrawIndirect vkCmdDrawIndirect = 0; + PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect = 0; + PFN_vkCmdBlitImage vkCmdBlitImage = 0; + PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage = 0; + PFN_vkCmdClearAttachments vkCmdClearAttachments = 0; + PFN_vkCmdResolveImage vkCmdResolveImage = 0; + PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass = 0; + PFN_vkCmdNextSubpass vkCmdNextSubpass = 0; + PFN_vkCmdEndRenderPass vkCmdEndRenderPass = 0; + + //=== VK_VERSION_1_1 === + PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0; + PFN_vkBindBufferMemory2 vkBindBufferMemory2 = 0; + PFN_vkBindImageMemory2 vkBindImageMemory2 = 0; + PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures = 0; + PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask = 0; + PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups = 0; + PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 = 0; + PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 = 0; + PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0; + PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = 0; + PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = 0; + PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 = 0; + PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0; + PFN_vkTrimCommandPool vkTrimCommandPool = 0; + PFN_vkGetDeviceQueue2 vkGetDeviceQueue2 = 0; + PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties = 0; + PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties = 0; + PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties = 0; + PFN_vkCmdDispatchBase vkCmdDispatchBase = 0; + PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate = 0; + PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate = 0; + PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate = 0; + PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport = 0; + PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion = 0; + PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion = 0; + + //=== VK_VERSION_1_2 === + PFN_vkResetQueryPool vkResetQueryPool = 0; + PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue = 0; + PFN_vkWaitSemaphores vkWaitSemaphores = 0; + PFN_vkSignalSemaphore vkSignalSemaphore = 0; + PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress = 0; + PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress = 0; + PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress = 0; + PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount = 0; + PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount = 0; + PFN_vkCreateRenderPass2 vkCreateRenderPass2 = 0; + PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2 = 0; + PFN_vkCmdNextSubpass2 vkCmdNextSubpass2 = 0; + PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2 = 0; + + //=== VK_VERSION_1_3 === + PFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties = 0; + PFN_vkCreatePrivateDataSlot vkCreatePrivateDataSlot = 0; + PFN_vkDestroyPrivateDataSlot vkDestroyPrivateDataSlot = 0; + PFN_vkSetPrivateData vkSetPrivateData = 0; + PFN_vkGetPrivateData vkGetPrivateData = 0; + PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2 = 0; + PFN_vkCmdWriteTimestamp2 vkCmdWriteTimestamp2 = 0; + PFN_vkQueueSubmit2 vkQueueSubmit2 = 0; + PFN_vkCmdCopyBuffer2 vkCmdCopyBuffer2 = 0; + PFN_vkCmdCopyImage2 vkCmdCopyImage2 = 0; + PFN_vkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2 = 0; + PFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2 = 0; + PFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements = 0; + PFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements = 0; + PFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements = 0; + PFN_vkCmdSetEvent2 vkCmdSetEvent2 = 0; + PFN_vkCmdResetEvent2 vkCmdResetEvent2 = 0; + PFN_vkCmdWaitEvents2 vkCmdWaitEvents2 = 0; + PFN_vkCmdBlitImage2 vkCmdBlitImage2 = 0; + PFN_vkCmdResolveImage2 vkCmdResolveImage2 = 0; + PFN_vkCmdBeginRendering vkCmdBeginRendering = 0; + PFN_vkCmdEndRendering vkCmdEndRendering = 0; + PFN_vkCmdSetCullMode vkCmdSetCullMode = 0; + PFN_vkCmdSetFrontFace vkCmdSetFrontFace = 0; + PFN_vkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopology = 0; + PFN_vkCmdSetViewportWithCount vkCmdSetViewportWithCount = 0; + PFN_vkCmdSetScissorWithCount vkCmdSetScissorWithCount = 0; + PFN_vkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2 = 0; + PFN_vkCmdSetDepthTestEnable vkCmdSetDepthTestEnable = 0; + PFN_vkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnable = 0; + PFN_vkCmdSetDepthCompareOp vkCmdSetDepthCompareOp = 0; + PFN_vkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnable = 0; + PFN_vkCmdSetStencilTestEnable vkCmdSetStencilTestEnable = 0; + PFN_vkCmdSetStencilOp vkCmdSetStencilOp = 0; + PFN_vkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnable = 0; + PFN_vkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnable = 0; + PFN_vkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnable = 0; + + //=== VK_VERSION_1_4 === + PFN_vkMapMemory2 vkMapMemory2 = 0; + PFN_vkUnmapMemory2 vkUnmapMemory2 = 0; + PFN_vkGetDeviceImageSubresourceLayout vkGetDeviceImageSubresourceLayout = 0; + PFN_vkGetImageSubresourceLayout2 vkGetImageSubresourceLayout2 = 0; + PFN_vkCopyMemoryToImage vkCopyMemoryToImage = 0; + PFN_vkCopyImageToMemory vkCopyImageToMemory = 0; + PFN_vkCopyImageToImage vkCopyImageToImage = 0; + PFN_vkTransitionImageLayout vkTransitionImageLayout = 0; + PFN_vkCmdPushDescriptorSet vkCmdPushDescriptorSet = 0; + PFN_vkCmdPushDescriptorSetWithTemplate vkCmdPushDescriptorSetWithTemplate = 0; + PFN_vkCmdBindDescriptorSets2 vkCmdBindDescriptorSets2 = 0; + PFN_vkCmdPushConstants2 vkCmdPushConstants2 = 0; + PFN_vkCmdPushDescriptorSet2 vkCmdPushDescriptorSet2 = 0; + PFN_vkCmdPushDescriptorSetWithTemplate2 vkCmdPushDescriptorSetWithTemplate2 = 0; + PFN_vkCmdSetLineStipple vkCmdSetLineStipple = 0; + PFN_vkCmdBindIndexBuffer2 vkCmdBindIndexBuffer2 = 0; + PFN_vkGetRenderingAreaGranularity vkGetRenderingAreaGranularity = 0; + PFN_vkCmdSetRenderingAttachmentLocations vkCmdSetRenderingAttachmentLocations = 0; + PFN_vkCmdSetRenderingInputAttachmentIndices vkCmdSetRenderingInputAttachmentIndices = 0; + + //=== VK_KHR_surface === + PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR = 0; + PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0; + + //=== VK_KHR_swapchain === + PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR = 0; + PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR = 0; + PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = 0; + PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR = 0; + PFN_vkQueuePresentKHR vkQueuePresentKHR = 0; + PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0; + PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0; + PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0; + PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR = 0; + + //=== VK_KHR_display === + PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR = 0; + PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0; + PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR = 0; + PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR = 0; + PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR = 0; + PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR = 0; + PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR = 0; + + //=== VK_KHR_display_swapchain === + PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0; + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0; +#else + PFN_dummy vkCreateXlibSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceXlibPresentationSupportKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0; +#else + PFN_dummy vkCreateXcbSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceXcbPresentationSupportKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0; +#else + PFN_dummy vkCreateWaylandSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceWaylandPresentationSupportKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0; +#else + PFN_dummy vkCreateAndroidSurfaceKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = 0; + PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0; +#else + PFN_dummy vkCreateWin32SurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceWin32PresentationSupportKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0; + PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0; + PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT = 0; + + //=== VK_EXT_debug_marker === + PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT = 0; + PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0; + PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT = 0; + PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT = 0; + PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT = 0; + + //=== VK_KHR_video_queue === + PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR = 0; + PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR = 0; + PFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR = 0; + PFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR = 0; + PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR = 0; + PFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR = 0; + PFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR = 0; + PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR = 0; + PFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR = 0; + PFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR = 0; + PFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR = 0; + PFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR = 0; + + //=== VK_KHR_video_decode_queue === + PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR = 0; + + //=== VK_EXT_transform_feedback === + PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT = 0; + PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT = 0; + PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT = 0; + PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT = 0; + PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT = 0; + PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT = 0; + + //=== VK_NVX_binary_import === + PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX = 0; + PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX = 0; + PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX = 0; + PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX = 0; + PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX = 0; + + //=== VK_NVX_image_view_handle === + PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX = 0; + PFN_vkGetImageViewHandle64NVX vkGetImageViewHandle64NVX = 0; + PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX = 0; + PFN_vkGetDeviceCombinedImageSamplerIndexNVX vkGetDeviceCombinedImageSamplerIndexNVX = 0; + + //=== VK_AMD_draw_indirect_count === + PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD = 0; + PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0; + + //=== VK_AMD_shader_info === + PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0; + + //=== VK_KHR_dynamic_rendering === + PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR = 0; + PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR = 0; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP = 0; +#else + PFN_dummy vkCreateStreamDescriptorSurfaceGGP_placeholder = 0; +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0; +#else + PFN_dummy vkGetMemoryWin32HandleNV_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_get_physical_device_properties2 === + PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR = 0; + PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = 0; + PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR = 0; + PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0; + + //=== VK_KHR_device_group === + PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR = 0; + PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR = 0; + PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR = 0; + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0; +#else + PFN_dummy vkCreateViSurfaceNN_placeholder = 0; +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_maintenance1 === + PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0; + + //=== VK_KHR_device_group_creation === + PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0; + + //=== VK_KHR_external_memory_capabilities === + PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 0; + PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0; +#else + PFN_dummy vkGetMemoryWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetMemoryWin32HandlePropertiesKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR = 0; + PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0; + + //=== VK_KHR_external_semaphore_capabilities === + PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0; + PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR = 0; +#else + PFN_dummy vkImportSemaphoreWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetSemaphoreWin32HandleKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0; + PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = 0; + + //=== VK_KHR_push_descriptor === + PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR = 0; + PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0; + + //=== VK_EXT_conditional_rendering === + PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0; + PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT = 0; + + //=== VK_KHR_descriptor_update_template === + PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR = 0; + PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0; + PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR = 0; + + //=== VK_NV_clip_space_w_scaling === + PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0; + + //=== VK_EXT_direct_mode_display === + PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0; + +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT = 0; + PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0; +#else + PFN_dummy vkAcquireXlibDisplayEXT_placeholder = 0; + PFN_dummy vkGetRandROutputDisplayEXT_placeholder = 0; +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0; + + //=== VK_EXT_display_control === + PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT = 0; + PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT = 0; + PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0; + PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT = 0; + + //=== VK_GOOGLE_display_timing === + PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE = 0; + PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0; + + //=== VK_EXT_discard_rectangles === + PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT = 0; + PFN_vkCmdSetDiscardRectangleEnableEXT vkCmdSetDiscardRectangleEnableEXT = 0; + PFN_vkCmdSetDiscardRectangleModeEXT vkCmdSetDiscardRectangleModeEXT = 0; + + //=== VK_EXT_hdr_metadata === + PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0; + + //=== VK_KHR_create_renderpass2 === + PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR = 0; + PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0; + PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR = 0; + PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR = 0; + + //=== VK_KHR_shared_presentable_image === + PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0; + + //=== VK_KHR_external_fence_capabilities === + PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0; + PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR = 0; +#else + PFN_dummy vkImportFenceWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetFenceWin32HandleKHR_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0; + PFN_vkGetFenceFdKHR vkGetFenceFdKHR = 0; + + //=== VK_KHR_performance_query === + PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 0; + PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 0; + PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR = 0; + PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR = 0; + + //=== VK_KHR_get_surface_capabilities2 === + PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0; + PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR = 0; + + //=== VK_KHR_get_display_properties2 === + PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR = 0; + PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0; + PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR = 0; + PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR = 0; + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0; +#else + PFN_dummy vkCreateIOSSurfaceMVK_placeholder = 0; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0; +#else + PFN_dummy vkCreateMacOSSurfaceMVK_placeholder = 0; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT = 0; + PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT = 0; + PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT = 0; + PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT = 0; + PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0; + PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT = 0; + PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT = 0; + PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT = 0; + PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = 0; + PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0; + PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT = 0; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0; + PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID = 0; +#else + PFN_dummy vkGetAndroidHardwareBufferPropertiesANDROID_placeholder = 0; + PFN_dummy vkGetMemoryAndroidHardwareBufferANDROID_placeholder = 0; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + PFN_vkCreateExecutionGraphPipelinesAMDX vkCreateExecutionGraphPipelinesAMDX = 0; + PFN_vkGetExecutionGraphPipelineScratchSizeAMDX vkGetExecutionGraphPipelineScratchSizeAMDX = 0; + PFN_vkGetExecutionGraphPipelineNodeIndexAMDX vkGetExecutionGraphPipelineNodeIndexAMDX = 0; + PFN_vkCmdInitializeGraphScratchMemoryAMDX vkCmdInitializeGraphScratchMemoryAMDX = 0; + PFN_vkCmdDispatchGraphAMDX vkCmdDispatchGraphAMDX = 0; + PFN_vkCmdDispatchGraphIndirectAMDX vkCmdDispatchGraphIndirectAMDX = 0; + PFN_vkCmdDispatchGraphIndirectCountAMDX vkCmdDispatchGraphIndirectCountAMDX = 0; +#else + PFN_dummy vkCreateExecutionGraphPipelinesAMDX_placeholder = 0; + PFN_dummy vkGetExecutionGraphPipelineScratchSizeAMDX_placeholder = 0; + PFN_dummy vkGetExecutionGraphPipelineNodeIndexAMDX_placeholder = 0; + PFN_dummy vkCmdInitializeGraphScratchMemoryAMDX_placeholder = 0; + PFN_dummy vkCmdDispatchGraphAMDX_placeholder = 0; + PFN_dummy vkCmdDispatchGraphIndirectAMDX_placeholder = 0; + PFN_dummy vkCmdDispatchGraphIndirectCountAMDX_placeholder = 0; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + PFN_vkWriteSamplerDescriptorsEXT vkWriteSamplerDescriptorsEXT = 0; + PFN_vkWriteResourceDescriptorsEXT vkWriteResourceDescriptorsEXT = 0; + PFN_vkCmdBindSamplerHeapEXT vkCmdBindSamplerHeapEXT = 0; + PFN_vkCmdBindResourceHeapEXT vkCmdBindResourceHeapEXT = 0; + PFN_vkCmdPushDataEXT vkCmdPushDataEXT = 0; + PFN_vkGetImageOpaqueCaptureDataEXT vkGetImageOpaqueCaptureDataEXT = 0; + PFN_vkGetPhysicalDeviceDescriptorSizeEXT vkGetPhysicalDeviceDescriptorSizeEXT = 0; + PFN_vkRegisterCustomBorderColorEXT vkRegisterCustomBorderColorEXT = 0; + PFN_vkUnregisterCustomBorderColorEXT vkUnregisterCustomBorderColorEXT = 0; + PFN_vkGetTensorOpaqueCaptureDataARM vkGetTensorOpaqueCaptureDataARM = 0; + + //=== VK_EXT_sample_locations === + PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0; + PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0; + + //=== VK_KHR_get_memory_requirements2 === + PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR = 0; + PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR = 0; + PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0; + + //=== VK_KHR_acceleration_structure === + PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR = 0; + PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR = 0; + PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR = 0; + PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR = 0; + PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR = 0; + PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR = 0; + PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR = 0; + PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR = 0; + PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR = 0; + PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR = 0; + PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR = 0; + PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR = 0; + PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR = 0; + PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR = 0; + PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR = 0; + PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR = 0; + + //=== VK_KHR_ray_tracing_pipeline === + PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR = 0; + PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR = 0; + PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR = 0; + PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0; + PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR = 0; + PFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR = 0; + PFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR = 0; + + //=== VK_KHR_sampler_ycbcr_conversion === + PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR = 0; + PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0; + + //=== VK_KHR_bind_memory2 === + PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0; + PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR = 0; + + //=== VK_EXT_image_drm_format_modifier === + PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT = 0; + + //=== VK_EXT_validation_cache === + PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT = 0; + PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0; + PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT = 0; + PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0; + + //=== VK_NV_shading_rate_image === + PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV = 0; + PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV = 0; + PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV = 0; + + //=== VK_NV_ray_tracing === + PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV = 0; + PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV = 0; + PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0; + PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV = 0; + PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV = 0; + PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV = 0; + PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV = 0; + PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV = 0; + PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV = 0; + PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV = 0; + PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV = 0; + PFN_vkCompileDeferredNV vkCompileDeferredNV = 0; + + //=== VK_KHR_maintenance3 === + PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0; + + //=== VK_KHR_draw_indirect_count === + PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR = 0; + PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0; + + //=== VK_EXT_external_memory_host === + PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0; + + //=== VK_AMD_buffer_marker === + PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0; + PFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD = 0; + + //=== VK_EXT_calibrated_timestamps === + PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0; + PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT = 0; + + //=== VK_NV_mesh_shader === + PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV = 0; + PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV = 0; + PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0; + + //=== VK_NV_scissor_exclusive === + PFN_vkCmdSetExclusiveScissorEnableNV vkCmdSetExclusiveScissorEnableNV = 0; + PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV = 0; + + //=== VK_NV_device_diagnostic_checkpoints === + PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV = 0; + PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0; + PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV = 0; + + //=== VK_KHR_timeline_semaphore === + PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR = 0; + PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR = 0; + PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR = 0; + + //=== VK_EXT_present_timing === + PFN_vkSetSwapchainPresentTimingQueueSizeEXT vkSetSwapchainPresentTimingQueueSizeEXT = 0; + PFN_vkGetSwapchainTimingPropertiesEXT vkGetSwapchainTimingPropertiesEXT = 0; + PFN_vkGetSwapchainTimeDomainPropertiesEXT vkGetSwapchainTimeDomainPropertiesEXT = 0; + PFN_vkGetPastPresentationTimingEXT vkGetPastPresentationTimingEXT = 0; + + //=== VK_INTEL_performance_query === + PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL = 0; + PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL = 0; + PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL = 0; + PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL = 0; + PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL = 0; + PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL = 0; + PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL = 0; + PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL = 0; + PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL = 0; + + //=== VK_AMD_display_native_hdr === + PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD = 0; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0; +#else + PFN_dummy vkCreateImagePipeSurfaceFUCHSIA_placeholder = 0; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT = 0; +#else + PFN_dummy vkCreateMetalSurfaceEXT_placeholder = 0; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR = 0; + PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR = 0; + + //=== VK_KHR_dynamic_rendering_local_read === + PFN_vkCmdSetRenderingAttachmentLocationsKHR vkCmdSetRenderingAttachmentLocationsKHR = 0; + PFN_vkCmdSetRenderingInputAttachmentIndicesKHR vkCmdSetRenderingInputAttachmentIndicesKHR = 0; + + //=== VK_EXT_buffer_device_address === + PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT = 0; + + //=== VK_EXT_tooling_info === + PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT = 0; + + //=== VK_KHR_present_wait === + PFN_vkWaitForPresentKHR vkWaitForPresentKHR = 0; + + //=== VK_NV_cooperative_matrix === + PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0; + + //=== VK_NV_coverage_reduction_mode === + PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT = 0; + PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT = 0; + PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT = 0; + PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT = 0; +#else + PFN_dummy vkGetPhysicalDeviceSurfacePresentModes2EXT_placeholder = 0; + PFN_dummy vkAcquireFullScreenExclusiveModeEXT_placeholder = 0; + PFN_dummy vkReleaseFullScreenExclusiveModeEXT_placeholder = 0; + PFN_dummy vkGetDeviceGroupSurfacePresentModes2EXT_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT = 0; + + //=== VK_KHR_buffer_device_address === + PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR = 0; + PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR = 0; + PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR = 0; + + //=== VK_EXT_line_rasterization === + PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT = 0; + + //=== VK_EXT_host_query_reset === + PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT = 0; + + //=== VK_EXT_extended_dynamic_state === + PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT = 0; + PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT = 0; + PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT = 0; + PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT = 0; + PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT = 0; + PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT = 0; + PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT = 0; + PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT = 0; + PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT = 0; + PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT = 0; + PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT = 0; + PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT = 0; + + //=== VK_KHR_deferred_host_operations === + PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR = 0; + PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR = 0; + PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR = 0; + PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR = 0; + PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR = 0; + + //=== VK_KHR_pipeline_executable_properties === + PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR = 0; + PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR = 0; + PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0; + + //=== VK_EXT_host_image_copy === + PFN_vkCopyMemoryToImageEXT vkCopyMemoryToImageEXT = 0; + PFN_vkCopyImageToMemoryEXT vkCopyImageToMemoryEXT = 0; + PFN_vkCopyImageToImageEXT vkCopyImageToImageEXT = 0; + PFN_vkTransitionImageLayoutEXT vkTransitionImageLayoutEXT = 0; + PFN_vkGetImageSubresourceLayout2EXT vkGetImageSubresourceLayout2EXT = 0; + + //=== VK_KHR_map_memory2 === + PFN_vkMapMemory2KHR vkMapMemory2KHR = 0; + PFN_vkUnmapMemory2KHR vkUnmapMemory2KHR = 0; + + //=== VK_EXT_swapchain_maintenance1 === + PFN_vkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXT = 0; + + //=== VK_NV_device_generated_commands === + PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV = 0; + PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV = 0; + PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV = 0; + PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV = 0; + PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV = 0; + PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV = 0; + + //=== VK_EXT_depth_bias_control === + PFN_vkCmdSetDepthBias2EXT vkCmdSetDepthBias2EXT = 0; + + //=== VK_EXT_acquire_drm_display === + PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT = 0; + PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT = 0; + + //=== VK_EXT_private_data === + PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT = 0; + PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT = 0; + PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT = 0; + PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT = 0; + + //=== VK_KHR_video_encode_queue === + PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = 0; + PFN_vkGetEncodedVideoSessionParametersKHR vkGetEncodedVideoSessionParametersKHR = 0; + PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR = 0; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + PFN_vkCreateCudaModuleNV vkCreateCudaModuleNV = 0; + PFN_vkGetCudaModuleCacheNV vkGetCudaModuleCacheNV = 0; + PFN_vkCreateCudaFunctionNV vkCreateCudaFunctionNV = 0; + PFN_vkDestroyCudaModuleNV vkDestroyCudaModuleNV = 0; + PFN_vkDestroyCudaFunctionNV vkDestroyCudaFunctionNV = 0; + PFN_vkCmdCudaLaunchKernelNV vkCmdCudaLaunchKernelNV = 0; +#else + PFN_dummy vkCreateCudaModuleNV_placeholder = 0; + PFN_dummy vkGetCudaModuleCacheNV_placeholder = 0; + PFN_dummy vkCreateCudaFunctionNV_placeholder = 0; + PFN_dummy vkDestroyCudaModuleNV_placeholder = 0; + PFN_dummy vkDestroyCudaFunctionNV_placeholder = 0; + PFN_dummy vkCmdCudaLaunchKernelNV_placeholder = 0; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + PFN_vkCmdDispatchTileQCOM vkCmdDispatchTileQCOM = 0; + PFN_vkCmdBeginPerTileExecutionQCOM vkCmdBeginPerTileExecutionQCOM = 0; + PFN_vkCmdEndPerTileExecutionQCOM vkCmdEndPerTileExecutionQCOM = 0; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT = 0; +#else + PFN_dummy vkExportMetalObjectsEXT_placeholder = 0; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_synchronization2 === + PFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR = 0; + PFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR = 0; + PFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR = 0; + PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR = 0; + PFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR = 0; + PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR = 0; + + //=== VK_EXT_descriptor_buffer === + PFN_vkGetDescriptorSetLayoutSizeEXT vkGetDescriptorSetLayoutSizeEXT = 0; + PFN_vkGetDescriptorSetLayoutBindingOffsetEXT vkGetDescriptorSetLayoutBindingOffsetEXT = 0; + PFN_vkGetDescriptorEXT vkGetDescriptorEXT = 0; + PFN_vkCmdBindDescriptorBuffersEXT vkCmdBindDescriptorBuffersEXT = 0; + PFN_vkCmdSetDescriptorBufferOffsetsEXT vkCmdSetDescriptorBufferOffsetsEXT = 0; + PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT vkCmdBindDescriptorBufferEmbeddedSamplersEXT = 0; + PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT vkGetBufferOpaqueCaptureDescriptorDataEXT = 0; + PFN_vkGetImageOpaqueCaptureDescriptorDataEXT vkGetImageOpaqueCaptureDescriptorDataEXT = 0; + PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT vkGetImageViewOpaqueCaptureDescriptorDataEXT = 0; + PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT vkGetSamplerOpaqueCaptureDescriptorDataEXT = 0; + PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = 0; + + //=== VK_KHR_device_address_commands === + PFN_vkCmdBindIndexBuffer3KHR vkCmdBindIndexBuffer3KHR = 0; + PFN_vkCmdBindVertexBuffers3KHR vkCmdBindVertexBuffers3KHR = 0; + PFN_vkCmdDrawIndirect2KHR vkCmdDrawIndirect2KHR = 0; + PFN_vkCmdDrawIndexedIndirect2KHR vkCmdDrawIndexedIndirect2KHR = 0; + PFN_vkCmdDispatchIndirect2KHR vkCmdDispatchIndirect2KHR = 0; + PFN_vkCmdCopyMemoryKHR vkCmdCopyMemoryKHR = 0; + PFN_vkCmdCopyMemoryToImageKHR vkCmdCopyMemoryToImageKHR = 0; + PFN_vkCmdCopyImageToMemoryKHR vkCmdCopyImageToMemoryKHR = 0; + PFN_vkCmdUpdateMemoryKHR vkCmdUpdateMemoryKHR = 0; + PFN_vkCmdFillMemoryKHR vkCmdFillMemoryKHR = 0; + PFN_vkCmdCopyQueryPoolResultsToMemoryKHR vkCmdCopyQueryPoolResultsToMemoryKHR = 0; + PFN_vkCmdDrawIndirectCount2KHR vkCmdDrawIndirectCount2KHR = 0; + PFN_vkCmdDrawIndexedIndirectCount2KHR vkCmdDrawIndexedIndirectCount2KHR = 0; + PFN_vkCmdBeginConditionalRendering2EXT vkCmdBeginConditionalRendering2EXT = 0; + PFN_vkCmdBindTransformFeedbackBuffers2EXT vkCmdBindTransformFeedbackBuffers2EXT = 0; + PFN_vkCmdBeginTransformFeedback2EXT vkCmdBeginTransformFeedback2EXT = 0; + PFN_vkCmdEndTransformFeedback2EXT vkCmdEndTransformFeedback2EXT = 0; + PFN_vkCmdDrawIndirectByteCount2EXT vkCmdDrawIndirectByteCount2EXT = 0; + PFN_vkCmdDrawMeshTasksIndirect2EXT vkCmdDrawMeshTasksIndirect2EXT = 0; + PFN_vkCmdDrawMeshTasksIndirectCount2EXT vkCmdDrawMeshTasksIndirectCount2EXT = 0; + PFN_vkCmdWriteMarkerToMemoryAMD vkCmdWriteMarkerToMemoryAMD = 0; + PFN_vkCreateAccelerationStructure2KHR vkCreateAccelerationStructure2KHR = 0; + + //=== VK_NV_fragment_shading_rate_enums === + PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV = 0; + + //=== VK_EXT_mesh_shader === + PFN_vkCmdDrawMeshTasksEXT vkCmdDrawMeshTasksEXT = 0; + PFN_vkCmdDrawMeshTasksIndirectEXT vkCmdDrawMeshTasksIndirectEXT = 0; + PFN_vkCmdDrawMeshTasksIndirectCountEXT vkCmdDrawMeshTasksIndirectCountEXT = 0; + + //=== VK_KHR_copy_commands2 === + PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR = 0; + PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR = 0; + PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR = 0; + PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR = 0; + PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR = 0; + PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR = 0; + + //=== VK_EXT_device_fault === + PFN_vkGetDeviceFaultInfoEXT vkGetDeviceFaultInfoEXT = 0; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV = 0; + PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV = 0; +#else + PFN_dummy vkAcquireWinrtDisplayNV_placeholder = 0; + PFN_dummy vkGetWinrtDisplayNV_placeholder = 0; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT = 0; + PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 0; +#else + PFN_dummy vkCreateDirectFBSurfaceEXT_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceDirectFBPresentationSupportEXT_placeholder = 0; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_vertex_input_dynamic_state === + PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT = 0; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + PFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA = 0; + PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA = 0; +#else + PFN_dummy vkGetMemoryZirconHandleFUCHSIA_placeholder = 0; + PFN_dummy vkGetMemoryZirconHandlePropertiesFUCHSIA_placeholder = 0; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA = 0; + PFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA = 0; +#else + PFN_dummy vkImportSemaphoreZirconHandleFUCHSIA_placeholder = 0; + PFN_dummy vkGetSemaphoreZirconHandleFUCHSIA_placeholder = 0; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + PFN_vkCreateBufferCollectionFUCHSIA vkCreateBufferCollectionFUCHSIA = 0; + PFN_vkSetBufferCollectionImageConstraintsFUCHSIA vkSetBufferCollectionImageConstraintsFUCHSIA = 0; + PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA = 0; + PFN_vkDestroyBufferCollectionFUCHSIA vkDestroyBufferCollectionFUCHSIA = 0; + PFN_vkGetBufferCollectionPropertiesFUCHSIA vkGetBufferCollectionPropertiesFUCHSIA = 0; +#else + PFN_dummy vkCreateBufferCollectionFUCHSIA_placeholder = 0; + PFN_dummy vkSetBufferCollectionImageConstraintsFUCHSIA_placeholder = 0; + PFN_dummy vkSetBufferCollectionBufferConstraintsFUCHSIA_placeholder = 0; + PFN_dummy vkDestroyBufferCollectionFUCHSIA_placeholder = 0; + PFN_dummy vkGetBufferCollectionPropertiesFUCHSIA_placeholder = 0; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = 0; + PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI = 0; + + //=== VK_HUAWEI_invocation_mask === + PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI = 0; + + //=== VK_NV_external_memory_rdma === + PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV = 0; + + //=== VK_EXT_pipeline_properties === + PFN_vkGetPipelinePropertiesEXT vkGetPipelinePropertiesEXT = 0; + + //=== VK_EXT_extended_dynamic_state2 === + PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT = 0; + PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT = 0; + PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT = 0; + PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT = 0; + PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT = 0; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX = 0; + PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX = 0; +#else + PFN_dummy vkCreateScreenSurfaceQNX_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceScreenPresentationSupportQNX_placeholder = 0; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT = 0; + + //=== VK_KHR_ray_tracing_maintenance1 === + PFN_vkCmdTraceRaysIndirect2KHR vkCmdTraceRaysIndirect2KHR = 0; + + //=== VK_EXT_multi_draw === + PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT = 0; + PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT = 0; + + //=== VK_EXT_opacity_micromap === + PFN_vkCreateMicromapEXT vkCreateMicromapEXT = 0; + PFN_vkDestroyMicromapEXT vkDestroyMicromapEXT = 0; + PFN_vkCmdBuildMicromapsEXT vkCmdBuildMicromapsEXT = 0; + PFN_vkBuildMicromapsEXT vkBuildMicromapsEXT = 0; + PFN_vkCopyMicromapEXT vkCopyMicromapEXT = 0; + PFN_vkCopyMicromapToMemoryEXT vkCopyMicromapToMemoryEXT = 0; + PFN_vkCopyMemoryToMicromapEXT vkCopyMemoryToMicromapEXT = 0; + PFN_vkWriteMicromapsPropertiesEXT vkWriteMicromapsPropertiesEXT = 0; + PFN_vkCmdCopyMicromapEXT vkCmdCopyMicromapEXT = 0; + PFN_vkCmdCopyMicromapToMemoryEXT vkCmdCopyMicromapToMemoryEXT = 0; + PFN_vkCmdCopyMemoryToMicromapEXT vkCmdCopyMemoryToMicromapEXT = 0; + PFN_vkCmdWriteMicromapsPropertiesEXT vkCmdWriteMicromapsPropertiesEXT = 0; + PFN_vkGetDeviceMicromapCompatibilityEXT vkGetDeviceMicromapCompatibilityEXT = 0; + PFN_vkGetMicromapBuildSizesEXT vkGetMicromapBuildSizesEXT = 0; + + //=== VK_HUAWEI_cluster_culling_shader === + PFN_vkCmdDrawClusterHUAWEI vkCmdDrawClusterHUAWEI = 0; + PFN_vkCmdDrawClusterIndirectHUAWEI vkCmdDrawClusterIndirectHUAWEI = 0; + + //=== VK_EXT_pageable_device_local_memory === + PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT = 0; + + //=== VK_KHR_maintenance4 === + PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHR = 0; + PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHR = 0; + PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR = 0; + + //=== VK_VALVE_descriptor_set_host_mapping === + PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE vkGetDescriptorSetLayoutHostMappingInfoVALVE = 0; + PFN_vkGetDescriptorSetHostMappingVALVE vkGetDescriptorSetHostMappingVALVE = 0; + + //=== VK_NV_copy_memory_indirect === + PFN_vkCmdCopyMemoryIndirectNV vkCmdCopyMemoryIndirectNV = 0; + PFN_vkCmdCopyMemoryToImageIndirectNV vkCmdCopyMemoryToImageIndirectNV = 0; + + //=== VK_NV_memory_decompression === + PFN_vkCmdDecompressMemoryNV vkCmdDecompressMemoryNV = 0; + PFN_vkCmdDecompressMemoryIndirectCountNV vkCmdDecompressMemoryIndirectCountNV = 0; + + //=== VK_NV_device_generated_commands_compute === + PFN_vkGetPipelineIndirectMemoryRequirementsNV vkGetPipelineIndirectMemoryRequirementsNV = 0; + PFN_vkCmdUpdatePipelineIndirectBufferNV vkCmdUpdatePipelineIndirectBufferNV = 0; + PFN_vkGetPipelineIndirectDeviceAddressNV vkGetPipelineIndirectDeviceAddressNV = 0; + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + PFN_vkGetNativeBufferPropertiesOHOS vkGetNativeBufferPropertiesOHOS = 0; + PFN_vkGetMemoryNativeBufferOHOS vkGetMemoryNativeBufferOHOS = 0; +#else + PFN_dummy vkGetNativeBufferPropertiesOHOS_placeholder = 0; + PFN_dummy vkGetMemoryNativeBufferOHOS_placeholder = 0; +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_extended_dynamic_state3 === + PFN_vkCmdSetDepthClampEnableEXT vkCmdSetDepthClampEnableEXT = 0; + PFN_vkCmdSetPolygonModeEXT vkCmdSetPolygonModeEXT = 0; + PFN_vkCmdSetRasterizationSamplesEXT vkCmdSetRasterizationSamplesEXT = 0; + PFN_vkCmdSetSampleMaskEXT vkCmdSetSampleMaskEXT = 0; + PFN_vkCmdSetAlphaToCoverageEnableEXT vkCmdSetAlphaToCoverageEnableEXT = 0; + PFN_vkCmdSetAlphaToOneEnableEXT vkCmdSetAlphaToOneEnableEXT = 0; + PFN_vkCmdSetLogicOpEnableEXT vkCmdSetLogicOpEnableEXT = 0; + PFN_vkCmdSetColorBlendEnableEXT vkCmdSetColorBlendEnableEXT = 0; + PFN_vkCmdSetColorBlendEquationEXT vkCmdSetColorBlendEquationEXT = 0; + PFN_vkCmdSetColorWriteMaskEXT vkCmdSetColorWriteMaskEXT = 0; + PFN_vkCmdSetTessellationDomainOriginEXT vkCmdSetTessellationDomainOriginEXT = 0; + PFN_vkCmdSetRasterizationStreamEXT vkCmdSetRasterizationStreamEXT = 0; + PFN_vkCmdSetConservativeRasterizationModeEXT vkCmdSetConservativeRasterizationModeEXT = 0; + PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT vkCmdSetExtraPrimitiveOverestimationSizeEXT = 0; + PFN_vkCmdSetDepthClipEnableEXT vkCmdSetDepthClipEnableEXT = 0; + PFN_vkCmdSetSampleLocationsEnableEXT vkCmdSetSampleLocationsEnableEXT = 0; + PFN_vkCmdSetColorBlendAdvancedEXT vkCmdSetColorBlendAdvancedEXT = 0; + PFN_vkCmdSetProvokingVertexModeEXT vkCmdSetProvokingVertexModeEXT = 0; + PFN_vkCmdSetLineRasterizationModeEXT vkCmdSetLineRasterizationModeEXT = 0; + PFN_vkCmdSetLineStippleEnableEXT vkCmdSetLineStippleEnableEXT = 0; + PFN_vkCmdSetDepthClipNegativeOneToOneEXT vkCmdSetDepthClipNegativeOneToOneEXT = 0; + PFN_vkCmdSetViewportWScalingEnableNV vkCmdSetViewportWScalingEnableNV = 0; + PFN_vkCmdSetViewportSwizzleNV vkCmdSetViewportSwizzleNV = 0; + PFN_vkCmdSetCoverageToColorEnableNV vkCmdSetCoverageToColorEnableNV = 0; + PFN_vkCmdSetCoverageToColorLocationNV vkCmdSetCoverageToColorLocationNV = 0; + PFN_vkCmdSetCoverageModulationModeNV vkCmdSetCoverageModulationModeNV = 0; + PFN_vkCmdSetCoverageModulationTableEnableNV vkCmdSetCoverageModulationTableEnableNV = 0; + PFN_vkCmdSetCoverageModulationTableNV vkCmdSetCoverageModulationTableNV = 0; + PFN_vkCmdSetShadingRateImageEnableNV vkCmdSetShadingRateImageEnableNV = 0; + PFN_vkCmdSetRepresentativeFragmentTestEnableNV vkCmdSetRepresentativeFragmentTestEnableNV = 0; + PFN_vkCmdSetCoverageReductionModeNV vkCmdSetCoverageReductionModeNV = 0; + + //=== VK_ARM_tensors === + PFN_vkCreateTensorARM vkCreateTensorARM = 0; + PFN_vkDestroyTensorARM vkDestroyTensorARM = 0; + PFN_vkCreateTensorViewARM vkCreateTensorViewARM = 0; + PFN_vkDestroyTensorViewARM vkDestroyTensorViewARM = 0; + PFN_vkGetTensorMemoryRequirementsARM vkGetTensorMemoryRequirementsARM = 0; + PFN_vkBindTensorMemoryARM vkBindTensorMemoryARM = 0; + PFN_vkGetDeviceTensorMemoryRequirementsARM vkGetDeviceTensorMemoryRequirementsARM = 0; + PFN_vkCmdCopyTensorARM vkCmdCopyTensorARM = 0; + PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM vkGetPhysicalDeviceExternalTensorPropertiesARM = 0; + PFN_vkGetTensorOpaqueCaptureDescriptorDataARM vkGetTensorOpaqueCaptureDescriptorDataARM = 0; + PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM vkGetTensorViewOpaqueCaptureDescriptorDataARM = 0; + + //=== VK_EXT_shader_module_identifier === + PFN_vkGetShaderModuleIdentifierEXT vkGetShaderModuleIdentifierEXT = 0; + PFN_vkGetShaderModuleCreateInfoIdentifierEXT vkGetShaderModuleCreateInfoIdentifierEXT = 0; + + //=== VK_NV_optical_flow === + PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV vkGetPhysicalDeviceOpticalFlowImageFormatsNV = 0; + PFN_vkCreateOpticalFlowSessionNV vkCreateOpticalFlowSessionNV = 0; + PFN_vkDestroyOpticalFlowSessionNV vkDestroyOpticalFlowSessionNV = 0; + PFN_vkBindOpticalFlowSessionImageNV vkBindOpticalFlowSessionImageNV = 0; + PFN_vkCmdOpticalFlowExecuteNV vkCmdOpticalFlowExecuteNV = 0; + + //=== VK_KHR_maintenance5 === + PFN_vkCmdBindIndexBuffer2KHR vkCmdBindIndexBuffer2KHR = 0; + PFN_vkGetRenderingAreaGranularityKHR vkGetRenderingAreaGranularityKHR = 0; + PFN_vkGetDeviceImageSubresourceLayoutKHR vkGetDeviceImageSubresourceLayoutKHR = 0; + PFN_vkGetImageSubresourceLayout2KHR vkGetImageSubresourceLayout2KHR = 0; + + //=== VK_AMD_anti_lag === + PFN_vkAntiLagUpdateAMD vkAntiLagUpdateAMD = 0; + + //=== VK_KHR_present_wait2 === + PFN_vkWaitForPresent2KHR vkWaitForPresent2KHR = 0; + + //=== VK_EXT_shader_object === + PFN_vkCreateShadersEXT vkCreateShadersEXT = 0; + PFN_vkDestroyShaderEXT vkDestroyShaderEXT = 0; + PFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT = 0; + PFN_vkCmdBindShadersEXT vkCmdBindShadersEXT = 0; + PFN_vkCmdSetDepthClampRangeEXT vkCmdSetDepthClampRangeEXT = 0; + + //=== VK_KHR_pipeline_binary === + PFN_vkCreatePipelineBinariesKHR vkCreatePipelineBinariesKHR = 0; + PFN_vkDestroyPipelineBinaryKHR vkDestroyPipelineBinaryKHR = 0; + PFN_vkGetPipelineKeyKHR vkGetPipelineKeyKHR = 0; + PFN_vkGetPipelineBinaryDataKHR vkGetPipelineBinaryDataKHR = 0; + PFN_vkReleaseCapturedPipelineDataKHR vkReleaseCapturedPipelineDataKHR = 0; + + //=== VK_QCOM_tile_properties === + PFN_vkGetFramebufferTilePropertiesQCOM vkGetFramebufferTilePropertiesQCOM = 0; + PFN_vkGetDynamicRenderingTilePropertiesQCOM vkGetDynamicRenderingTilePropertiesQCOM = 0; + + //=== VK_KHR_swapchain_maintenance1 === + PFN_vkReleaseSwapchainImagesKHR vkReleaseSwapchainImagesKHR = 0; + + //=== VK_NV_cooperative_vector === + PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV vkGetPhysicalDeviceCooperativeVectorPropertiesNV = 0; + PFN_vkConvertCooperativeVectorMatrixNV vkConvertCooperativeVectorMatrixNV = 0; + PFN_vkCmdConvertCooperativeVectorMatrixNV vkCmdConvertCooperativeVectorMatrixNV = 0; + + //=== VK_NV_low_latency2 === + PFN_vkSetLatencySleepModeNV vkSetLatencySleepModeNV = 0; + PFN_vkLatencySleepNV vkLatencySleepNV = 0; + PFN_vkSetLatencyMarkerNV vkSetLatencyMarkerNV = 0; + PFN_vkGetLatencyTimingsNV vkGetLatencyTimingsNV = 0; + PFN_vkQueueNotifyOutOfBandNV vkQueueNotifyOutOfBandNV = 0; + + //=== VK_KHR_cooperative_matrix === + PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = 0; + + //=== VK_ARM_data_graph === + PFN_vkCreateDataGraphPipelinesARM vkCreateDataGraphPipelinesARM = 0; + PFN_vkCreateDataGraphPipelineSessionARM vkCreateDataGraphPipelineSessionARM = 0; + PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM vkGetDataGraphPipelineSessionBindPointRequirementsARM = 0; + PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM vkGetDataGraphPipelineSessionMemoryRequirementsARM = 0; + PFN_vkBindDataGraphPipelineSessionMemoryARM vkBindDataGraphPipelineSessionMemoryARM = 0; + PFN_vkDestroyDataGraphPipelineSessionARM vkDestroyDataGraphPipelineSessionARM = 0; + PFN_vkCmdDispatchDataGraphARM vkCmdDispatchDataGraphARM = 0; + PFN_vkGetDataGraphPipelineAvailablePropertiesARM vkGetDataGraphPipelineAvailablePropertiesARM = 0; + PFN_vkGetDataGraphPipelinePropertiesARM vkGetDataGraphPipelinePropertiesARM = 0; + PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = 0; + PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = 0; + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT vkCmdSetAttachmentFeedbackLoopEnableEXT = 0; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + PFN_vkGetScreenBufferPropertiesQNX vkGetScreenBufferPropertiesQNX = 0; +#else + PFN_dummy vkGetScreenBufferPropertiesQNX_placeholder = 0; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_line_rasterization === + PFN_vkCmdSetLineStippleKHR vkCmdSetLineStippleKHR = 0; + + //=== VK_KHR_calibrated_timestamps === + PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = 0; + PFN_vkGetCalibratedTimestampsKHR vkGetCalibratedTimestampsKHR = 0; + + //=== VK_KHR_maintenance6 === + PFN_vkCmdBindDescriptorSets2KHR vkCmdBindDescriptorSets2KHR = 0; + PFN_vkCmdPushConstants2KHR vkCmdPushConstants2KHR = 0; + PFN_vkCmdPushDescriptorSet2KHR vkCmdPushDescriptorSet2KHR = 0; + PFN_vkCmdPushDescriptorSetWithTemplate2KHR vkCmdPushDescriptorSetWithTemplate2KHR = 0; + PFN_vkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXT = 0; + PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = 0; + + //=== VK_QCOM_tile_memory_heap === + PFN_vkCmdBindTileMemoryQCOM vkCmdBindTileMemoryQCOM = 0; + + //=== VK_KHR_copy_memory_indirect === + PFN_vkCmdCopyMemoryIndirectKHR vkCmdCopyMemoryIndirectKHR = 0; + PFN_vkCmdCopyMemoryToImageIndirectKHR vkCmdCopyMemoryToImageIndirectKHR = 0; + + //=== VK_EXT_memory_decompression === + PFN_vkCmdDecompressMemoryEXT vkCmdDecompressMemoryEXT = 0; + PFN_vkCmdDecompressMemoryIndirectCountEXT vkCmdDecompressMemoryIndirectCountEXT = 0; + + //=== VK_NV_external_compute_queue === + PFN_vkCreateExternalComputeQueueNV vkCreateExternalComputeQueueNV = 0; + PFN_vkDestroyExternalComputeQueueNV vkDestroyExternalComputeQueueNV = 0; + PFN_vkGetExternalComputeQueueDataNV vkGetExternalComputeQueueDataNV = 0; + + //=== VK_NV_cluster_acceleration_structure === + PFN_vkGetClusterAccelerationStructureBuildSizesNV vkGetClusterAccelerationStructureBuildSizesNV = 0; + PFN_vkCmdBuildClusterAccelerationStructureIndirectNV vkCmdBuildClusterAccelerationStructureIndirectNV = 0; + + //=== VK_NV_partitioned_acceleration_structure === + PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV vkGetPartitionedAccelerationStructuresBuildSizesNV = 0; + PFN_vkCmdBuildPartitionedAccelerationStructuresNV vkCmdBuildPartitionedAccelerationStructuresNV = 0; + + //=== VK_EXT_device_generated_commands === + PFN_vkGetGeneratedCommandsMemoryRequirementsEXT vkGetGeneratedCommandsMemoryRequirementsEXT = 0; + PFN_vkCmdPreprocessGeneratedCommandsEXT vkCmdPreprocessGeneratedCommandsEXT = 0; + PFN_vkCmdExecuteGeneratedCommandsEXT vkCmdExecuteGeneratedCommandsEXT = 0; + PFN_vkCreateIndirectCommandsLayoutEXT vkCreateIndirectCommandsLayoutEXT = 0; + PFN_vkDestroyIndirectCommandsLayoutEXT vkDestroyIndirectCommandsLayoutEXT = 0; + PFN_vkCreateIndirectExecutionSetEXT vkCreateIndirectExecutionSetEXT = 0; + PFN_vkDestroyIndirectExecutionSetEXT vkDestroyIndirectExecutionSetEXT = 0; + PFN_vkUpdateIndirectExecutionSetPipelineEXT vkUpdateIndirectExecutionSetPipelineEXT = 0; + PFN_vkUpdateIndirectExecutionSetShaderEXT vkUpdateIndirectExecutionSetShaderEXT = 0; + + //=== VK_KHR_device_fault === + PFN_vkGetDeviceFaultReportsKHR vkGetDeviceFaultReportsKHR = 0; + PFN_vkGetDeviceFaultDebugInfoKHR vkGetDeviceFaultDebugInfoKHR = 0; + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + PFN_vkCreateSurfaceOHOS vkCreateSurfaceOHOS = 0; +#else + PFN_dummy vkCreateSurfaceOHOS_placeholder = 0; +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_NV_cooperative_matrix2 === + PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = 0; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + PFN_vkGetMemoryMetalHandleEXT vkGetMemoryMetalHandleEXT = 0; + PFN_vkGetMemoryMetalHandlePropertiesEXT vkGetMemoryMetalHandlePropertiesEXT = 0; +#else + PFN_dummy vkGetMemoryMetalHandleEXT_placeholder = 0; + PFN_dummy vkGetMemoryMetalHandlePropertiesEXT_placeholder = 0; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_performance_counters_by_region === + PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = 0; + + //=== VK_ARM_shader_instrumentation === + PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM = 0; + PFN_vkCreateShaderInstrumentationARM vkCreateShaderInstrumentationARM = 0; + PFN_vkDestroyShaderInstrumentationARM vkDestroyShaderInstrumentationARM = 0; + PFN_vkCmdBeginShaderInstrumentationARM vkCmdBeginShaderInstrumentationARM = 0; + PFN_vkCmdEndShaderInstrumentationARM vkCmdEndShaderInstrumentationARM = 0; + PFN_vkGetShaderInstrumentationValuesARM vkGetShaderInstrumentationValuesARM = 0; + PFN_vkClearShaderInstrumentationMetricsARM vkClearShaderInstrumentationMetricsARM = 0; + + //=== VK_EXT_fragment_density_map_offset === + PFN_vkCmdEndRendering2EXT vkCmdEndRendering2EXT = 0; + + //=== VK_EXT_custom_resolve === + PFN_vkCmdBeginCustomResolveEXT vkCmdBeginCustomResolveEXT = 0; + + //=== VK_KHR_maintenance10 === + PFN_vkCmdEndRendering2KHR vkCmdEndRendering2KHR = 0; + + //=== VK_NV_compute_occupancy_priority === + PFN_vkCmdSetComputeOccupancyPriorityNV vkCmdSetComputeOccupancyPriorityNV = 0; + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + PFN_vkCreateUbmSurfaceSEC vkCreateUbmSurfaceSEC = 0; + PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC vkGetPhysicalDeviceUbmPresentationSupportSEC = 0; +#else + PFN_dummy vkCreateUbmSurfaceSEC_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceUbmPresentationSupportSEC_placeholder = 0; +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + + public: + DispatchLoaderDynamic() VULKAN_HPP_NOEXCEPT = default; + DispatchLoaderDynamic( DispatchLoaderDynamic const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DispatchLoaderDynamic( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) VULKAN_HPP_NOEXCEPT + { + init( getInstanceProcAddr ); + } + + // This interface does not require a linked vulkan library. + DispatchLoaderDynamic( VkInstance instance, + PFN_vkGetInstanceProcAddr getInstanceProcAddr, + VkDevice device = {}, + PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr ) VULKAN_HPP_NOEXCEPT + { + init( instance, getInstanceProcAddr, device, getDeviceProcAddr ); + } + + template + void init() + { + static DynamicLoader dl; + init( dl ); + } + + template + void init( DynamicLoader const & dl ) VULKAN_HPP_NOEXCEPT + { + PFN_vkGetInstanceProcAddr getInstanceProcAddr = dl.template getProcAddress( "vkGetInstanceProcAddr" ); + init( getInstanceProcAddr ); + } + + void init( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getInstanceProcAddr ); + + vkGetInstanceProcAddr = getInstanceProcAddr; + + //=== VK_VERSION_1_0 === + vkCreateInstance = PFN_vkCreateInstance( vkGetInstanceProcAddr( NULL, "vkCreateInstance" ) ); + vkEnumerateInstanceExtensionProperties = + PFN_vkEnumerateInstanceExtensionProperties( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) ); + vkEnumerateInstanceLayerProperties = PFN_vkEnumerateInstanceLayerProperties( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) ); + + //=== VK_VERSION_1_1 === + vkEnumerateInstanceVersion = PFN_vkEnumerateInstanceVersion( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceVersion" ) ); + } + + // This interface does not require a linked vulkan library. + void init( VkInstance instance, + PFN_vkGetInstanceProcAddr getInstanceProcAddr, + VkDevice device = {}, + PFN_vkGetDeviceProcAddr /*getDeviceProcAddr*/ = nullptr ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( instance && getInstanceProcAddr ); + vkGetInstanceProcAddr = getInstanceProcAddr; + init( Instance( instance ) ); + if ( device ) + { + init( Device( device ) ); + } + } + + void init( Instance instanceCpp ) VULKAN_HPP_NOEXCEPT + { + VkInstance instance = static_cast( instanceCpp ); + + //=== VK_VERSION_1_0 === + vkDestroyInstance = PFN_vkDestroyInstance( vkGetInstanceProcAddr( instance, "vkDestroyInstance" ) ); + vkEnumeratePhysicalDevices = PFN_vkEnumeratePhysicalDevices( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ) ); + vkGetPhysicalDeviceFeatures = PFN_vkGetPhysicalDeviceFeatures( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ) ); + vkGetPhysicalDeviceFormatProperties = + PFN_vkGetPhysicalDeviceFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ) ); + vkGetPhysicalDeviceImageFormatProperties = + PFN_vkGetPhysicalDeviceImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ) ); + vkGetPhysicalDeviceProperties = PFN_vkGetPhysicalDeviceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ) ); + vkGetPhysicalDeviceQueueFamilyProperties = + PFN_vkGetPhysicalDeviceQueueFamilyProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ) ); + vkGetPhysicalDeviceMemoryProperties = + PFN_vkGetPhysicalDeviceMemoryProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ) ); + vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" ) ); + vkCreateDevice = PFN_vkCreateDevice( vkGetInstanceProcAddr( instance, "vkCreateDevice" ) ); + vkDestroyDevice = PFN_vkDestroyDevice( vkGetInstanceProcAddr( instance, "vkDestroyDevice" ) ); + vkEnumerateDeviceExtensionProperties = + PFN_vkEnumerateDeviceExtensionProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ) ); + vkEnumerateDeviceLayerProperties = PFN_vkEnumerateDeviceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ) ); + vkGetDeviceQueue = PFN_vkGetDeviceQueue( vkGetInstanceProcAddr( instance, "vkGetDeviceQueue" ) ); + vkQueueSubmit = PFN_vkQueueSubmit( vkGetInstanceProcAddr( instance, "vkQueueSubmit" ) ); + vkQueueWaitIdle = PFN_vkQueueWaitIdle( vkGetInstanceProcAddr( instance, "vkQueueWaitIdle" ) ); + vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( vkGetInstanceProcAddr( instance, "vkDeviceWaitIdle" ) ); + vkAllocateMemory = PFN_vkAllocateMemory( vkGetInstanceProcAddr( instance, "vkAllocateMemory" ) ); + vkFreeMemory = PFN_vkFreeMemory( vkGetInstanceProcAddr( instance, "vkFreeMemory" ) ); + vkMapMemory = PFN_vkMapMemory( vkGetInstanceProcAddr( instance, "vkMapMemory" ) ); + vkUnmapMemory = PFN_vkUnmapMemory( vkGetInstanceProcAddr( instance, "vkUnmapMemory" ) ); + vkFlushMappedMemoryRanges = PFN_vkFlushMappedMemoryRanges( vkGetInstanceProcAddr( instance, "vkFlushMappedMemoryRanges" ) ); + vkInvalidateMappedMemoryRanges = PFN_vkInvalidateMappedMemoryRanges( vkGetInstanceProcAddr( instance, "vkInvalidateMappedMemoryRanges" ) ); + vkGetDeviceMemoryCommitment = PFN_vkGetDeviceMemoryCommitment( vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryCommitment" ) ); + vkBindBufferMemory = PFN_vkBindBufferMemory( vkGetInstanceProcAddr( instance, "vkBindBufferMemory" ) ); + vkBindImageMemory = PFN_vkBindImageMemory( vkGetInstanceProcAddr( instance, "vkBindImageMemory" ) ); + vkGetBufferMemoryRequirements = PFN_vkGetBufferMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements" ) ); + vkGetImageMemoryRequirements = PFN_vkGetImageMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements" ) ); + vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements" ) ); + vkGetPhysicalDeviceSparseImageFormatProperties = + PFN_vkGetPhysicalDeviceSparseImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ) ); + vkQueueBindSparse = PFN_vkQueueBindSparse( vkGetInstanceProcAddr( instance, "vkQueueBindSparse" ) ); + vkCreateFence = PFN_vkCreateFence( vkGetInstanceProcAddr( instance, "vkCreateFence" ) ); + vkDestroyFence = PFN_vkDestroyFence( vkGetInstanceProcAddr( instance, "vkDestroyFence" ) ); + vkResetFences = PFN_vkResetFences( vkGetInstanceProcAddr( instance, "vkResetFences" ) ); + vkGetFenceStatus = PFN_vkGetFenceStatus( vkGetInstanceProcAddr( instance, "vkGetFenceStatus" ) ); + vkWaitForFences = PFN_vkWaitForFences( vkGetInstanceProcAddr( instance, "vkWaitForFences" ) ); + vkCreateSemaphore = PFN_vkCreateSemaphore( vkGetInstanceProcAddr( instance, "vkCreateSemaphore" ) ); + vkDestroySemaphore = PFN_vkDestroySemaphore( vkGetInstanceProcAddr( instance, "vkDestroySemaphore" ) ); + vkCreateQueryPool = PFN_vkCreateQueryPool( vkGetInstanceProcAddr( instance, "vkCreateQueryPool" ) ); + vkDestroyQueryPool = PFN_vkDestroyQueryPool( vkGetInstanceProcAddr( instance, "vkDestroyQueryPool" ) ); + vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetInstanceProcAddr( instance, "vkGetQueryPoolResults" ) ); + vkCreateBuffer = PFN_vkCreateBuffer( vkGetInstanceProcAddr( instance, "vkCreateBuffer" ) ); + vkDestroyBuffer = PFN_vkDestroyBuffer( vkGetInstanceProcAddr( instance, "vkDestroyBuffer" ) ); + vkCreateImage = PFN_vkCreateImage( vkGetInstanceProcAddr( instance, "vkCreateImage" ) ); + vkDestroyImage = PFN_vkDestroyImage( vkGetInstanceProcAddr( instance, "vkDestroyImage" ) ); + vkGetImageSubresourceLayout = PFN_vkGetImageSubresourceLayout( vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout" ) ); + vkCreateImageView = PFN_vkCreateImageView( vkGetInstanceProcAddr( instance, "vkCreateImageView" ) ); + vkDestroyImageView = PFN_vkDestroyImageView( vkGetInstanceProcAddr( instance, "vkDestroyImageView" ) ); + vkCreateCommandPool = PFN_vkCreateCommandPool( vkGetInstanceProcAddr( instance, "vkCreateCommandPool" ) ); + vkDestroyCommandPool = PFN_vkDestroyCommandPool( vkGetInstanceProcAddr( instance, "vkDestroyCommandPool" ) ); + vkResetCommandPool = PFN_vkResetCommandPool( vkGetInstanceProcAddr( instance, "vkResetCommandPool" ) ); + vkAllocateCommandBuffers = PFN_vkAllocateCommandBuffers( vkGetInstanceProcAddr( instance, "vkAllocateCommandBuffers" ) ); + vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( vkGetInstanceProcAddr( instance, "vkFreeCommandBuffers" ) ); + vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( vkGetInstanceProcAddr( instance, "vkBeginCommandBuffer" ) ); + vkEndCommandBuffer = PFN_vkEndCommandBuffer( vkGetInstanceProcAddr( instance, "vkEndCommandBuffer" ) ); + vkResetCommandBuffer = PFN_vkResetCommandBuffer( vkGetInstanceProcAddr( instance, "vkResetCommandBuffer" ) ); + vkCmdCopyBuffer = PFN_vkCmdCopyBuffer( vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer" ) ); + vkCmdCopyImage = PFN_vkCmdCopyImage( vkGetInstanceProcAddr( instance, "vkCmdCopyImage" ) ); + vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage" ) ); + vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer" ) ); + vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer( vkGetInstanceProcAddr( instance, "vkCmdUpdateBuffer" ) ); + vkCmdFillBuffer = PFN_vkCmdFillBuffer( vkGetInstanceProcAddr( instance, "vkCmdFillBuffer" ) ); + vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier" ) ); + vkCmdBeginQuery = PFN_vkCmdBeginQuery( vkGetInstanceProcAddr( instance, "vkCmdBeginQuery" ) ); + vkCmdEndQuery = PFN_vkCmdEndQuery( vkGetInstanceProcAddr( instance, "vkCmdEndQuery" ) ); + vkCmdResetQueryPool = PFN_vkCmdResetQueryPool( vkGetInstanceProcAddr( instance, "vkCmdResetQueryPool" ) ); + vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp" ) ); + vkCmdCopyQueryPoolResults = PFN_vkCmdCopyQueryPoolResults( vkGetInstanceProcAddr( instance, "vkCmdCopyQueryPoolResults" ) ); + vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetInstanceProcAddr( instance, "vkCmdExecuteCommands" ) ); + vkCreateEvent = PFN_vkCreateEvent( vkGetInstanceProcAddr( instance, "vkCreateEvent" ) ); + vkDestroyEvent = PFN_vkDestroyEvent( vkGetInstanceProcAddr( instance, "vkDestroyEvent" ) ); + vkGetEventStatus = PFN_vkGetEventStatus( vkGetInstanceProcAddr( instance, "vkGetEventStatus" ) ); + vkSetEvent = PFN_vkSetEvent( vkGetInstanceProcAddr( instance, "vkSetEvent" ) ); + vkResetEvent = PFN_vkResetEvent( vkGetInstanceProcAddr( instance, "vkResetEvent" ) ); + vkCreateBufferView = PFN_vkCreateBufferView( vkGetInstanceProcAddr( instance, "vkCreateBufferView" ) ); + vkDestroyBufferView = PFN_vkDestroyBufferView( vkGetInstanceProcAddr( instance, "vkDestroyBufferView" ) ); + vkCreateShaderModule = PFN_vkCreateShaderModule( vkGetInstanceProcAddr( instance, "vkCreateShaderModule" ) ); + vkDestroyShaderModule = PFN_vkDestroyShaderModule( vkGetInstanceProcAddr( instance, "vkDestroyShaderModule" ) ); + vkCreatePipelineCache = PFN_vkCreatePipelineCache( vkGetInstanceProcAddr( instance, "vkCreatePipelineCache" ) ); + vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( vkGetInstanceProcAddr( instance, "vkDestroyPipelineCache" ) ); + vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( vkGetInstanceProcAddr( instance, "vkGetPipelineCacheData" ) ); + vkMergePipelineCaches = PFN_vkMergePipelineCaches( vkGetInstanceProcAddr( instance, "vkMergePipelineCaches" ) ); + vkCreateComputePipelines = PFN_vkCreateComputePipelines( vkGetInstanceProcAddr( instance, "vkCreateComputePipelines" ) ); + vkDestroyPipeline = PFN_vkDestroyPipeline( vkGetInstanceProcAddr( instance, "vkDestroyPipeline" ) ); + vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( vkGetInstanceProcAddr( instance, "vkCreatePipelineLayout" ) ); + vkDestroyPipelineLayout = PFN_vkDestroyPipelineLayout( vkGetInstanceProcAddr( instance, "vkDestroyPipelineLayout" ) ); + vkCreateSampler = PFN_vkCreateSampler( vkGetInstanceProcAddr( instance, "vkCreateSampler" ) ); + vkDestroySampler = PFN_vkDestroySampler( vkGetInstanceProcAddr( instance, "vkDestroySampler" ) ); + vkCreateDescriptorSetLayout = PFN_vkCreateDescriptorSetLayout( vkGetInstanceProcAddr( instance, "vkCreateDescriptorSetLayout" ) ); + vkDestroyDescriptorSetLayout = PFN_vkDestroyDescriptorSetLayout( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorSetLayout" ) ); + vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( vkGetInstanceProcAddr( instance, "vkCreateDescriptorPool" ) ); + vkDestroyDescriptorPool = PFN_vkDestroyDescriptorPool( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorPool" ) ); + vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetInstanceProcAddr( instance, "vkResetDescriptorPool" ) ); + vkAllocateDescriptorSets = PFN_vkAllocateDescriptorSets( vkGetInstanceProcAddr( instance, "vkAllocateDescriptorSets" ) ); + vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( vkGetInstanceProcAddr( instance, "vkFreeDescriptorSets" ) ); + vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSets" ) ); + vkCmdBindPipeline = PFN_vkCmdBindPipeline( vkGetInstanceProcAddr( instance, "vkCmdBindPipeline" ) ); + vkCmdBindDescriptorSets = PFN_vkCmdBindDescriptorSets( vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorSets" ) ); + vkCmdClearColorImage = PFN_vkCmdClearColorImage( vkGetInstanceProcAddr( instance, "vkCmdClearColorImage" ) ); + vkCmdDispatch = PFN_vkCmdDispatch( vkGetInstanceProcAddr( instance, "vkCmdDispatch" ) ); + vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( vkGetInstanceProcAddr( instance, "vkCmdDispatchIndirect" ) ); + vkCmdSetEvent = PFN_vkCmdSetEvent( vkGetInstanceProcAddr( instance, "vkCmdSetEvent" ) ); + vkCmdResetEvent = PFN_vkCmdResetEvent( vkGetInstanceProcAddr( instance, "vkCmdResetEvent" ) ); + vkCmdWaitEvents = PFN_vkCmdWaitEvents( vkGetInstanceProcAddr( instance, "vkCmdWaitEvents" ) ); + vkCmdPushConstants = PFN_vkCmdPushConstants( vkGetInstanceProcAddr( instance, "vkCmdPushConstants" ) ); + vkCreateGraphicsPipelines = PFN_vkCreateGraphicsPipelines( vkGetInstanceProcAddr( instance, "vkCreateGraphicsPipelines" ) ); + vkCreateFramebuffer = PFN_vkCreateFramebuffer( vkGetInstanceProcAddr( instance, "vkCreateFramebuffer" ) ); + vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( vkGetInstanceProcAddr( instance, "vkDestroyFramebuffer" ) ); + vkCreateRenderPass = PFN_vkCreateRenderPass( vkGetInstanceProcAddr( instance, "vkCreateRenderPass" ) ); + vkDestroyRenderPass = PFN_vkDestroyRenderPass( vkGetInstanceProcAddr( instance, "vkDestroyRenderPass" ) ); + vkGetRenderAreaGranularity = PFN_vkGetRenderAreaGranularity( vkGetInstanceProcAddr( instance, "vkGetRenderAreaGranularity" ) ); + vkCmdSetViewport = PFN_vkCmdSetViewport( vkGetInstanceProcAddr( instance, "vkCmdSetViewport" ) ); + vkCmdSetScissor = PFN_vkCmdSetScissor( vkGetInstanceProcAddr( instance, "vkCmdSetScissor" ) ); + vkCmdSetLineWidth = PFN_vkCmdSetLineWidth( vkGetInstanceProcAddr( instance, "vkCmdSetLineWidth" ) ); + vkCmdSetDepthBias = PFN_vkCmdSetDepthBias( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBias" ) ); + vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( vkGetInstanceProcAddr( instance, "vkCmdSetBlendConstants" ) ); + vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBounds" ) ); + vkCmdSetStencilCompareMask = PFN_vkCmdSetStencilCompareMask( vkGetInstanceProcAddr( instance, "vkCmdSetStencilCompareMask" ) ); + vkCmdSetStencilWriteMask = PFN_vkCmdSetStencilWriteMask( vkGetInstanceProcAddr( instance, "vkCmdSetStencilWriteMask" ) ); + vkCmdSetStencilReference = PFN_vkCmdSetStencilReference( vkGetInstanceProcAddr( instance, "vkCmdSetStencilReference" ) ); + vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer" ) ); + vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers" ) ); + vkCmdDraw = PFN_vkCmdDraw( vkGetInstanceProcAddr( instance, "vkCmdDraw" ) ); + vkCmdDrawIndexed = PFN_vkCmdDrawIndexed( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexed" ) ); + vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirect" ) ); + vkCmdDrawIndexedIndirect = PFN_vkCmdDrawIndexedIndirect( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirect" ) ); + vkCmdBlitImage = PFN_vkCmdBlitImage( vkGetInstanceProcAddr( instance, "vkCmdBlitImage" ) ); + vkCmdClearDepthStencilImage = PFN_vkCmdClearDepthStencilImage( vkGetInstanceProcAddr( instance, "vkCmdClearDepthStencilImage" ) ); + vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetInstanceProcAddr( instance, "vkCmdClearAttachments" ) ); + vkCmdResolveImage = PFN_vkCmdResolveImage( vkGetInstanceProcAddr( instance, "vkCmdResolveImage" ) ); + vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass" ) ); + vkCmdNextSubpass = PFN_vkCmdNextSubpass( vkGetInstanceProcAddr( instance, "vkCmdNextSubpass" ) ); + vkCmdEndRenderPass = PFN_vkCmdEndRenderPass( vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass" ) ); + + //=== VK_VERSION_1_1 === + vkBindBufferMemory2 = PFN_vkBindBufferMemory2( vkGetInstanceProcAddr( instance, "vkBindBufferMemory2" ) ); + vkBindImageMemory2 = PFN_vkBindImageMemory2( vkGetInstanceProcAddr( instance, "vkBindImageMemory2" ) ); + vkGetDeviceGroupPeerMemoryFeatures = PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeatures" ) ); + vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMask" ) ); + vkEnumeratePhysicalDeviceGroups = PFN_vkEnumeratePhysicalDeviceGroups( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" ) ); + vkGetImageMemoryRequirements2 = PFN_vkGetImageMemoryRequirements2( vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2" ) ); + vkGetBufferMemoryRequirements2 = PFN_vkGetBufferMemoryRequirements2( vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2" ) ); + vkGetImageSparseMemoryRequirements2 = + PFN_vkGetImageSparseMemoryRequirements2( vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2" ) ); + vkGetPhysicalDeviceFeatures2 = PFN_vkGetPhysicalDeviceFeatures2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" ) ); + vkGetPhysicalDeviceProperties2 = PFN_vkGetPhysicalDeviceProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" ) ); + vkGetPhysicalDeviceFormatProperties2 = + PFN_vkGetPhysicalDeviceFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" ) ); + vkGetPhysicalDeviceImageFormatProperties2 = + PFN_vkGetPhysicalDeviceImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" ) ); + vkGetPhysicalDeviceQueueFamilyProperties2 = + PFN_vkGetPhysicalDeviceQueueFamilyProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" ) ); + vkGetPhysicalDeviceMemoryProperties2 = + PFN_vkGetPhysicalDeviceMemoryProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" ) ); + vkGetPhysicalDeviceSparseImageFormatProperties2 = + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" ) ); + vkTrimCommandPool = PFN_vkTrimCommandPool( vkGetInstanceProcAddr( instance, "vkTrimCommandPool" ) ); + vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( vkGetInstanceProcAddr( instance, "vkGetDeviceQueue2" ) ); + vkGetPhysicalDeviceExternalBufferProperties = + PFN_vkGetPhysicalDeviceExternalBufferProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" ) ); + vkGetPhysicalDeviceExternalFenceProperties = + PFN_vkGetPhysicalDeviceExternalFenceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" ) ); + vkGetPhysicalDeviceExternalSemaphoreProperties = + PFN_vkGetPhysicalDeviceExternalSemaphoreProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" ) ); + vkCmdDispatchBase = PFN_vkCmdDispatchBase( vkGetInstanceProcAddr( instance, "vkCmdDispatchBase" ) ); + vkCreateDescriptorUpdateTemplate = PFN_vkCreateDescriptorUpdateTemplate( vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplate" ) ); + vkDestroyDescriptorUpdateTemplate = PFN_vkDestroyDescriptorUpdateTemplate( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplate" ) ); + vkUpdateDescriptorSetWithTemplate = PFN_vkUpdateDescriptorSetWithTemplate( vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplate" ) ); + vkGetDescriptorSetLayoutSupport = PFN_vkGetDescriptorSetLayoutSupport( vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupport" ) ); + vkCreateSamplerYcbcrConversion = PFN_vkCreateSamplerYcbcrConversion( vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversion" ) ); + vkDestroySamplerYcbcrConversion = PFN_vkDestroySamplerYcbcrConversion( vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversion" ) ); + + //=== VK_VERSION_1_2 === + vkResetQueryPool = PFN_vkResetQueryPool( vkGetInstanceProcAddr( instance, "vkResetQueryPool" ) ); + vkGetSemaphoreCounterValue = PFN_vkGetSemaphoreCounterValue( vkGetInstanceProcAddr( instance, "vkGetSemaphoreCounterValue" ) ); + vkWaitSemaphores = PFN_vkWaitSemaphores( vkGetInstanceProcAddr( instance, "vkWaitSemaphores" ) ); + vkSignalSemaphore = PFN_vkSignalSemaphore( vkGetInstanceProcAddr( instance, "vkSignalSemaphore" ) ); + vkGetBufferDeviceAddress = PFN_vkGetBufferDeviceAddress( vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddress" ) ); + vkGetBufferOpaqueCaptureAddress = PFN_vkGetBufferOpaqueCaptureAddress( vkGetInstanceProcAddr( instance, "vkGetBufferOpaqueCaptureAddress" ) ); + vkGetDeviceMemoryOpaqueCaptureAddress = + PFN_vkGetDeviceMemoryOpaqueCaptureAddress( vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryOpaqueCaptureAddress" ) ); + vkCmdDrawIndirectCount = PFN_vkCmdDrawIndirectCount( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCount" ) ); + vkCmdDrawIndexedIndirectCount = PFN_vkCmdDrawIndexedIndirectCount( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCount" ) ); + vkCreateRenderPass2 = PFN_vkCreateRenderPass2( vkGetInstanceProcAddr( instance, "vkCreateRenderPass2" ) ); + vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass2" ) ); + vkCmdNextSubpass2 = PFN_vkCmdNextSubpass2( vkGetInstanceProcAddr( instance, "vkCmdNextSubpass2" ) ); + vkCmdEndRenderPass2 = PFN_vkCmdEndRenderPass2( vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass2" ) ); + + //=== VK_VERSION_1_3 === + vkGetPhysicalDeviceToolProperties = PFN_vkGetPhysicalDeviceToolProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolProperties" ) ); + vkCreatePrivateDataSlot = PFN_vkCreatePrivateDataSlot( vkGetInstanceProcAddr( instance, "vkCreatePrivateDataSlot" ) ); + vkDestroyPrivateDataSlot = PFN_vkDestroyPrivateDataSlot( vkGetInstanceProcAddr( instance, "vkDestroyPrivateDataSlot" ) ); + vkSetPrivateData = PFN_vkSetPrivateData( vkGetInstanceProcAddr( instance, "vkSetPrivateData" ) ); + vkGetPrivateData = PFN_vkGetPrivateData( vkGetInstanceProcAddr( instance, "vkGetPrivateData" ) ); + vkCmdPipelineBarrier2 = PFN_vkCmdPipelineBarrier2( vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier2" ) ); + vkCmdWriteTimestamp2 = PFN_vkCmdWriteTimestamp2( vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp2" ) ); + vkQueueSubmit2 = PFN_vkQueueSubmit2( vkGetInstanceProcAddr( instance, "vkQueueSubmit2" ) ); + vkCmdCopyBuffer2 = PFN_vkCmdCopyBuffer2( vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer2" ) ); + vkCmdCopyImage2 = PFN_vkCmdCopyImage2( vkGetInstanceProcAddr( instance, "vkCmdCopyImage2" ) ); + vkCmdCopyBufferToImage2 = PFN_vkCmdCopyBufferToImage2( vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage2" ) ); + vkCmdCopyImageToBuffer2 = PFN_vkCmdCopyImageToBuffer2( vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer2" ) ); + vkGetDeviceBufferMemoryRequirements = + PFN_vkGetDeviceBufferMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetDeviceBufferMemoryRequirements" ) ); + vkGetDeviceImageMemoryRequirements = PFN_vkGetDeviceImageMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetDeviceImageMemoryRequirements" ) ); + vkGetDeviceImageSparseMemoryRequirements = + PFN_vkGetDeviceImageSparseMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetDeviceImageSparseMemoryRequirements" ) ); + vkCmdSetEvent2 = PFN_vkCmdSetEvent2( vkGetInstanceProcAddr( instance, "vkCmdSetEvent2" ) ); + vkCmdResetEvent2 = PFN_vkCmdResetEvent2( vkGetInstanceProcAddr( instance, "vkCmdResetEvent2" ) ); + vkCmdWaitEvents2 = PFN_vkCmdWaitEvents2( vkGetInstanceProcAddr( instance, "vkCmdWaitEvents2" ) ); + vkCmdBlitImage2 = PFN_vkCmdBlitImage2( vkGetInstanceProcAddr( instance, "vkCmdBlitImage2" ) ); + vkCmdResolveImage2 = PFN_vkCmdResolveImage2( vkGetInstanceProcAddr( instance, "vkCmdResolveImage2" ) ); + vkCmdBeginRendering = PFN_vkCmdBeginRendering( vkGetInstanceProcAddr( instance, "vkCmdBeginRendering" ) ); + vkCmdEndRendering = PFN_vkCmdEndRendering( vkGetInstanceProcAddr( instance, "vkCmdEndRendering" ) ); + vkCmdSetCullMode = PFN_vkCmdSetCullMode( vkGetInstanceProcAddr( instance, "vkCmdSetCullMode" ) ); + vkCmdSetFrontFace = PFN_vkCmdSetFrontFace( vkGetInstanceProcAddr( instance, "vkCmdSetFrontFace" ) ); + vkCmdSetPrimitiveTopology = PFN_vkCmdSetPrimitiveTopology( vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveTopology" ) ); + vkCmdSetViewportWithCount = PFN_vkCmdSetViewportWithCount( vkGetInstanceProcAddr( instance, "vkCmdSetViewportWithCount" ) ); + vkCmdSetScissorWithCount = PFN_vkCmdSetScissorWithCount( vkGetInstanceProcAddr( instance, "vkCmdSetScissorWithCount" ) ); + vkCmdBindVertexBuffers2 = PFN_vkCmdBindVertexBuffers2( vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers2" ) ); + vkCmdSetDepthTestEnable = PFN_vkCmdSetDepthTestEnable( vkGetInstanceProcAddr( instance, "vkCmdSetDepthTestEnable" ) ); + vkCmdSetDepthWriteEnable = PFN_vkCmdSetDepthWriteEnable( vkGetInstanceProcAddr( instance, "vkCmdSetDepthWriteEnable" ) ); + vkCmdSetDepthCompareOp = PFN_vkCmdSetDepthCompareOp( vkGetInstanceProcAddr( instance, "vkCmdSetDepthCompareOp" ) ); + vkCmdSetDepthBoundsTestEnable = PFN_vkCmdSetDepthBoundsTestEnable( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBoundsTestEnable" ) ); + vkCmdSetStencilTestEnable = PFN_vkCmdSetStencilTestEnable( vkGetInstanceProcAddr( instance, "vkCmdSetStencilTestEnable" ) ); + vkCmdSetStencilOp = PFN_vkCmdSetStencilOp( vkGetInstanceProcAddr( instance, "vkCmdSetStencilOp" ) ); + vkCmdSetRasterizerDiscardEnable = PFN_vkCmdSetRasterizerDiscardEnable( vkGetInstanceProcAddr( instance, "vkCmdSetRasterizerDiscardEnable" ) ); + vkCmdSetDepthBiasEnable = PFN_vkCmdSetDepthBiasEnable( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBiasEnable" ) ); + vkCmdSetPrimitiveRestartEnable = PFN_vkCmdSetPrimitiveRestartEnable( vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveRestartEnable" ) ); + + //=== VK_VERSION_1_4 === + vkMapMemory2 = PFN_vkMapMemory2( vkGetInstanceProcAddr( instance, "vkMapMemory2" ) ); + vkUnmapMemory2 = PFN_vkUnmapMemory2( vkGetInstanceProcAddr( instance, "vkUnmapMemory2" ) ); + vkGetDeviceImageSubresourceLayout = PFN_vkGetDeviceImageSubresourceLayout( vkGetInstanceProcAddr( instance, "vkGetDeviceImageSubresourceLayout" ) ); + vkGetImageSubresourceLayout2 = PFN_vkGetImageSubresourceLayout2( vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout2" ) ); + vkCopyMemoryToImage = PFN_vkCopyMemoryToImage( vkGetInstanceProcAddr( instance, "vkCopyMemoryToImage" ) ); + vkCopyImageToMemory = PFN_vkCopyImageToMemory( vkGetInstanceProcAddr( instance, "vkCopyImageToMemory" ) ); + vkCopyImageToImage = PFN_vkCopyImageToImage( vkGetInstanceProcAddr( instance, "vkCopyImageToImage" ) ); + vkTransitionImageLayout = PFN_vkTransitionImageLayout( vkGetInstanceProcAddr( instance, "vkTransitionImageLayout" ) ); + vkCmdPushDescriptorSet = PFN_vkCmdPushDescriptorSet( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSet" ) ); + vkCmdPushDescriptorSetWithTemplate = PFN_vkCmdPushDescriptorSetWithTemplate( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplate" ) ); + vkCmdBindDescriptorSets2 = PFN_vkCmdBindDescriptorSets2( vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorSets2" ) ); + vkCmdPushConstants2 = PFN_vkCmdPushConstants2( vkGetInstanceProcAddr( instance, "vkCmdPushConstants2" ) ); + vkCmdPushDescriptorSet2 = PFN_vkCmdPushDescriptorSet2( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSet2" ) ); + vkCmdPushDescriptorSetWithTemplate2 = + PFN_vkCmdPushDescriptorSetWithTemplate2( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplate2" ) ); + vkCmdSetLineStipple = PFN_vkCmdSetLineStipple( vkGetInstanceProcAddr( instance, "vkCmdSetLineStipple" ) ); + vkCmdBindIndexBuffer2 = PFN_vkCmdBindIndexBuffer2( vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer2" ) ); + vkGetRenderingAreaGranularity = PFN_vkGetRenderingAreaGranularity( vkGetInstanceProcAddr( instance, "vkGetRenderingAreaGranularity" ) ); + vkCmdSetRenderingAttachmentLocations = + PFN_vkCmdSetRenderingAttachmentLocations( vkGetInstanceProcAddr( instance, "vkCmdSetRenderingAttachmentLocations" ) ); + vkCmdSetRenderingInputAttachmentIndices = + PFN_vkCmdSetRenderingInputAttachmentIndices( vkGetInstanceProcAddr( instance, "vkCmdSetRenderingInputAttachmentIndices" ) ); + + //=== VK_KHR_surface === + vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR( vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ) ); + vkGetPhysicalDeviceSurfaceSupportKHR = + PFN_vkGetPhysicalDeviceSurfaceSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ) ); + vkGetPhysicalDeviceSurfaceCapabilitiesKHR = + PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ) ); + vkGetPhysicalDeviceSurfaceFormatsKHR = + PFN_vkGetPhysicalDeviceSurfaceFormatsKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ) ); + vkGetPhysicalDeviceSurfacePresentModesKHR = + PFN_vkGetPhysicalDeviceSurfacePresentModesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ) ); + + //=== VK_KHR_swapchain === + vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( vkGetInstanceProcAddr( instance, "vkCreateSwapchainKHR" ) ); + vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetInstanceProcAddr( instance, "vkDestroySwapchainKHR" ) ); + vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR( vkGetInstanceProcAddr( instance, "vkGetSwapchainImagesKHR" ) ); + vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( vkGetInstanceProcAddr( instance, "vkAcquireNextImageKHR" ) ); + vkQueuePresentKHR = PFN_vkQueuePresentKHR( vkGetInstanceProcAddr( instance, "vkQueuePresentKHR" ) ); + vkGetDeviceGroupPresentCapabilitiesKHR = + PFN_vkGetDeviceGroupPresentCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPresentCapabilitiesKHR" ) ); + vkGetDeviceGroupSurfacePresentModesKHR = + PFN_vkGetDeviceGroupSurfacePresentModesKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModesKHR" ) ); + vkGetPhysicalDevicePresentRectanglesKHR = + PFN_vkGetPhysicalDevicePresentRectanglesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) ); + vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetInstanceProcAddr( instance, "vkAcquireNextImage2KHR" ) ); + + //=== VK_KHR_display === + vkGetPhysicalDeviceDisplayPropertiesKHR = + PFN_vkGetPhysicalDeviceDisplayPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ) ); + vkGetPhysicalDeviceDisplayPlanePropertiesKHR = + PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ) ); + vkGetDisplayPlaneSupportedDisplaysKHR = + PFN_vkGetDisplayPlaneSupportedDisplaysKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ) ); + vkGetDisplayModePropertiesKHR = PFN_vkGetDisplayModePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ) ); + vkCreateDisplayModeKHR = PFN_vkCreateDisplayModeKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ) ); + vkGetDisplayPlaneCapabilitiesKHR = PFN_vkGetDisplayPlaneCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ) ); + vkCreateDisplayPlaneSurfaceKHR = PFN_vkCreateDisplayPlaneSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ) ); + + //=== VK_KHR_display_swapchain === + vkCreateSharedSwapchainsKHR = PFN_vkCreateSharedSwapchainsKHR( vkGetInstanceProcAddr( instance, "vkCreateSharedSwapchainsKHR" ) ); + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + vkCreateXlibSurfaceKHR = PFN_vkCreateXlibSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ) ); + vkGetPhysicalDeviceXlibPresentationSupportKHR = + PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ) ); +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ) ); + vkGetPhysicalDeviceXcbPresentationSupportKHR = + PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ) ); +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + vkCreateWaylandSurfaceKHR = PFN_vkCreateWaylandSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ) ); + vkGetPhysicalDeviceWaylandPresentationSupportKHR = + PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ) ); +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + vkCreateAndroidSurfaceKHR = PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) ); +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + vkCreateWin32SurfaceKHR = PFN_vkCreateWin32SurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ) ); + vkGetPhysicalDeviceWin32PresentationSupportKHR = + PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + vkCreateDebugReportCallbackEXT = PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) ); + vkDestroyDebugReportCallbackEXT = PFN_vkDestroyDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ) ); + vkDebugReportMessageEXT = PFN_vkDebugReportMessageEXT( vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ) ); + + //=== VK_EXT_debug_marker === + vkDebugMarkerSetObjectTagEXT = PFN_vkDebugMarkerSetObjectTagEXT( vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectTagEXT" ) ); + vkDebugMarkerSetObjectNameEXT = PFN_vkDebugMarkerSetObjectNameEXT( vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectNameEXT" ) ); + vkCmdDebugMarkerBeginEXT = PFN_vkCmdDebugMarkerBeginEXT( vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerBeginEXT" ) ); + vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerEndEXT" ) ); + vkCmdDebugMarkerInsertEXT = PFN_vkCmdDebugMarkerInsertEXT( vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerInsertEXT" ) ); + + //=== VK_KHR_video_queue === + vkGetPhysicalDeviceVideoCapabilitiesKHR = + PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoCapabilitiesKHR" ) ); + vkGetPhysicalDeviceVideoFormatPropertiesKHR = + PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoFormatPropertiesKHR" ) ); + vkCreateVideoSessionKHR = PFN_vkCreateVideoSessionKHR( vkGetInstanceProcAddr( instance, "vkCreateVideoSessionKHR" ) ); + vkDestroyVideoSessionKHR = PFN_vkDestroyVideoSessionKHR( vkGetInstanceProcAddr( instance, "vkDestroyVideoSessionKHR" ) ); + vkGetVideoSessionMemoryRequirementsKHR = + PFN_vkGetVideoSessionMemoryRequirementsKHR( vkGetInstanceProcAddr( instance, "vkGetVideoSessionMemoryRequirementsKHR" ) ); + vkBindVideoSessionMemoryKHR = PFN_vkBindVideoSessionMemoryKHR( vkGetInstanceProcAddr( instance, "vkBindVideoSessionMemoryKHR" ) ); + vkCreateVideoSessionParametersKHR = PFN_vkCreateVideoSessionParametersKHR( vkGetInstanceProcAddr( instance, "vkCreateVideoSessionParametersKHR" ) ); + vkUpdateVideoSessionParametersKHR = PFN_vkUpdateVideoSessionParametersKHR( vkGetInstanceProcAddr( instance, "vkUpdateVideoSessionParametersKHR" ) ); + vkDestroyVideoSessionParametersKHR = PFN_vkDestroyVideoSessionParametersKHR( vkGetInstanceProcAddr( instance, "vkDestroyVideoSessionParametersKHR" ) ); + vkCmdBeginVideoCodingKHR = PFN_vkCmdBeginVideoCodingKHR( vkGetInstanceProcAddr( instance, "vkCmdBeginVideoCodingKHR" ) ); + vkCmdEndVideoCodingKHR = PFN_vkCmdEndVideoCodingKHR( vkGetInstanceProcAddr( instance, "vkCmdEndVideoCodingKHR" ) ); + vkCmdControlVideoCodingKHR = PFN_vkCmdControlVideoCodingKHR( vkGetInstanceProcAddr( instance, "vkCmdControlVideoCodingKHR" ) ); + + //=== VK_KHR_video_decode_queue === + vkCmdDecodeVideoKHR = PFN_vkCmdDecodeVideoKHR( vkGetInstanceProcAddr( instance, "vkCmdDecodeVideoKHR" ) ); + + //=== VK_EXT_transform_feedback === + vkCmdBindTransformFeedbackBuffersEXT = + PFN_vkCmdBindTransformFeedbackBuffersEXT( vkGetInstanceProcAddr( instance, "vkCmdBindTransformFeedbackBuffersEXT" ) ); + vkCmdBeginTransformFeedbackEXT = PFN_vkCmdBeginTransformFeedbackEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginTransformFeedbackEXT" ) ); + vkCmdEndTransformFeedbackEXT = PFN_vkCmdEndTransformFeedbackEXT( vkGetInstanceProcAddr( instance, "vkCmdEndTransformFeedbackEXT" ) ); + vkCmdBeginQueryIndexedEXT = PFN_vkCmdBeginQueryIndexedEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginQueryIndexedEXT" ) ); + vkCmdEndQueryIndexedEXT = PFN_vkCmdEndQueryIndexedEXT( vkGetInstanceProcAddr( instance, "vkCmdEndQueryIndexedEXT" ) ); + vkCmdDrawIndirectByteCountEXT = PFN_vkCmdDrawIndirectByteCountEXT( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectByteCountEXT" ) ); + + //=== VK_NVX_binary_import === + vkCreateCuModuleNVX = PFN_vkCreateCuModuleNVX( vkGetInstanceProcAddr( instance, "vkCreateCuModuleNVX" ) ); + vkCreateCuFunctionNVX = PFN_vkCreateCuFunctionNVX( vkGetInstanceProcAddr( instance, "vkCreateCuFunctionNVX" ) ); + vkDestroyCuModuleNVX = PFN_vkDestroyCuModuleNVX( vkGetInstanceProcAddr( instance, "vkDestroyCuModuleNVX" ) ); + vkDestroyCuFunctionNVX = PFN_vkDestroyCuFunctionNVX( vkGetInstanceProcAddr( instance, "vkDestroyCuFunctionNVX" ) ); + vkCmdCuLaunchKernelNVX = PFN_vkCmdCuLaunchKernelNVX( vkGetInstanceProcAddr( instance, "vkCmdCuLaunchKernelNVX" ) ); + + //=== VK_NVX_image_view_handle === + vkGetImageViewHandleNVX = PFN_vkGetImageViewHandleNVX( vkGetInstanceProcAddr( instance, "vkGetImageViewHandleNVX" ) ); + vkGetImageViewHandle64NVX = PFN_vkGetImageViewHandle64NVX( vkGetInstanceProcAddr( instance, "vkGetImageViewHandle64NVX" ) ); + vkGetImageViewAddressNVX = PFN_vkGetImageViewAddressNVX( vkGetInstanceProcAddr( instance, "vkGetImageViewAddressNVX" ) ); + vkGetDeviceCombinedImageSamplerIndexNVX = + PFN_vkGetDeviceCombinedImageSamplerIndexNVX( vkGetInstanceProcAddr( instance, "vkGetDeviceCombinedImageSamplerIndexNVX" ) ); + + //=== VK_AMD_draw_indirect_count === + vkCmdDrawIndirectCountAMD = PFN_vkCmdDrawIndirectCountAMD( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountAMD" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD; + vkCmdDrawIndexedIndirectCountAMD = PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountAMD" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD; + + //=== VK_AMD_shader_info === + vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetInstanceProcAddr( instance, "vkGetShaderInfoAMD" ) ); + + //=== VK_KHR_dynamic_rendering === + vkCmdBeginRenderingKHR = PFN_vkCmdBeginRenderingKHR( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderingKHR" ) ); + if ( !vkCmdBeginRendering ) + vkCmdBeginRendering = vkCmdBeginRenderingKHR; + vkCmdEndRenderingKHR = PFN_vkCmdEndRenderingKHR( vkGetInstanceProcAddr( instance, "vkCmdEndRenderingKHR" ) ); + if ( !vkCmdEndRendering ) + vkCmdEndRendering = vkCmdEndRenderingKHR; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + vkCreateStreamDescriptorSurfaceGGP = PFN_vkCreateStreamDescriptorSurfaceGGP( vkGetInstanceProcAddr( instance, "vkCreateStreamDescriptorSurfaceGGP" ) ); +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + vkGetPhysicalDeviceExternalImageFormatPropertiesNV = + PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + vkGetMemoryWin32HandleNV = PFN_vkGetMemoryWin32HandleNV( vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandleNV" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_get_physical_device_properties2 === + vkGetPhysicalDeviceFeatures2KHR = PFN_vkGetPhysicalDeviceFeatures2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ) ); + if ( !vkGetPhysicalDeviceFeatures2 ) + vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2KHR; + vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceProperties2 ) + vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2KHR; + vkGetPhysicalDeviceFormatProperties2KHR = + PFN_vkGetPhysicalDeviceFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceFormatProperties2 ) + vkGetPhysicalDeviceFormatProperties2 = vkGetPhysicalDeviceFormatProperties2KHR; + vkGetPhysicalDeviceImageFormatProperties2KHR = + PFN_vkGetPhysicalDeviceImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceImageFormatProperties2 ) + vkGetPhysicalDeviceImageFormatProperties2 = vkGetPhysicalDeviceImageFormatProperties2KHR; + vkGetPhysicalDeviceQueueFamilyProperties2KHR = + PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceQueueFamilyProperties2 ) + vkGetPhysicalDeviceQueueFamilyProperties2 = vkGetPhysicalDeviceQueueFamilyProperties2KHR; + vkGetPhysicalDeviceMemoryProperties2KHR = + PFN_vkGetPhysicalDeviceMemoryProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceMemoryProperties2 ) + vkGetPhysicalDeviceMemoryProperties2 = vkGetPhysicalDeviceMemoryProperties2KHR; + vkGetPhysicalDeviceSparseImageFormatProperties2KHR = + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceSparseImageFormatProperties2 ) + vkGetPhysicalDeviceSparseImageFormatProperties2 = vkGetPhysicalDeviceSparseImageFormatProperties2KHR; + + //=== VK_KHR_device_group === + vkGetDeviceGroupPeerMemoryFeaturesKHR = + PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) ); + if ( !vkGetDeviceGroupPeerMemoryFeatures ) + vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR; + vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMaskKHR" ) ); + if ( !vkCmdSetDeviceMask ) + vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR; + vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetInstanceProcAddr( instance, "vkCmdDispatchBaseKHR" ) ); + if ( !vkCmdDispatchBase ) + vkCmdDispatchBase = vkCmdDispatchBaseKHR; + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN( vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ) ); +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_maintenance1 === + vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetInstanceProcAddr( instance, "vkTrimCommandPoolKHR" ) ); + if ( !vkTrimCommandPool ) + vkTrimCommandPool = vkTrimCommandPoolKHR; + + //=== VK_KHR_device_group_creation === + vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkEnumeratePhysicalDeviceGroupsKHR( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHR" ) ); + if ( !vkEnumeratePhysicalDeviceGroups ) + vkEnumeratePhysicalDeviceGroups = vkEnumeratePhysicalDeviceGroupsKHR; + + //=== VK_KHR_external_memory_capabilities === + vkGetPhysicalDeviceExternalBufferPropertiesKHR = + PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalBufferProperties ) + vkGetPhysicalDeviceExternalBufferProperties = vkGetPhysicalDeviceExternalBufferPropertiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + vkGetMemoryWin32HandleKHR = PFN_vkGetMemoryWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandleKHR" ) ); + vkGetMemoryWin32HandlePropertiesKHR = + PFN_vkGetMemoryWin32HandlePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandlePropertiesKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryFdKHR" ) ); + vkGetMemoryFdPropertiesKHR = PFN_vkGetMemoryFdPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryFdPropertiesKHR" ) ); + + //=== VK_KHR_external_semaphore_capabilities === + vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = + PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalSemaphoreProperties ) + vkGetPhysicalDeviceExternalSemaphoreProperties = vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + vkImportSemaphoreWin32HandleKHR = PFN_vkImportSemaphoreWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkImportSemaphoreWin32HandleKHR" ) ); + vkGetSemaphoreWin32HandleKHR = PFN_vkGetSemaphoreWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkGetSemaphoreWin32HandleKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetInstanceProcAddr( instance, "vkImportSemaphoreFdKHR" ) ); + vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( vkGetInstanceProcAddr( instance, "vkGetSemaphoreFdKHR" ) ); + + //=== VK_KHR_push_descriptor === + vkCmdPushDescriptorSetKHR = PFN_vkCmdPushDescriptorSetKHR( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetKHR" ) ); + if ( !vkCmdPushDescriptorSet ) + vkCmdPushDescriptorSet = vkCmdPushDescriptorSetKHR; + vkCmdPushDescriptorSetWithTemplateKHR = + PFN_vkCmdPushDescriptorSetWithTemplateKHR( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplateKHR" ) ); + if ( !vkCmdPushDescriptorSetWithTemplate ) + vkCmdPushDescriptorSetWithTemplate = vkCmdPushDescriptorSetWithTemplateKHR; + + //=== VK_EXT_conditional_rendering === + vkCmdBeginConditionalRenderingEXT = PFN_vkCmdBeginConditionalRenderingEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginConditionalRenderingEXT" ) ); + vkCmdEndConditionalRenderingEXT = PFN_vkCmdEndConditionalRenderingEXT( vkGetInstanceProcAddr( instance, "vkCmdEndConditionalRenderingEXT" ) ); + + //=== VK_KHR_descriptor_update_template === + vkCreateDescriptorUpdateTemplateKHR = + PFN_vkCreateDescriptorUpdateTemplateKHR( vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplateKHR" ) ); + if ( !vkCreateDescriptorUpdateTemplate ) + vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR; + vkDestroyDescriptorUpdateTemplateKHR = + PFN_vkDestroyDescriptorUpdateTemplateKHR( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplateKHR" ) ); + if ( !vkDestroyDescriptorUpdateTemplate ) + vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR; + vkUpdateDescriptorSetWithTemplateKHR = + PFN_vkUpdateDescriptorSetWithTemplateKHR( vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplateKHR" ) ); + if ( !vkUpdateDescriptorSetWithTemplate ) + vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR; + + //=== VK_NV_clip_space_w_scaling === + vkCmdSetViewportWScalingNV = PFN_vkCmdSetViewportWScalingNV( vkGetInstanceProcAddr( instance, "vkCmdSetViewportWScalingNV" ) ); + + //=== VK_EXT_direct_mode_display === + vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT( vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ) ); + +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + vkAcquireXlibDisplayEXT = PFN_vkAcquireXlibDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ) ); + vkGetRandROutputDisplayEXT = PFN_vkGetRandROutputDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ) ); +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + vkGetPhysicalDeviceSurfaceCapabilities2EXT = + PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ) ); + + //=== VK_EXT_display_control === + vkDisplayPowerControlEXT = PFN_vkDisplayPowerControlEXT( vkGetInstanceProcAddr( instance, "vkDisplayPowerControlEXT" ) ); + vkRegisterDeviceEventEXT = PFN_vkRegisterDeviceEventEXT( vkGetInstanceProcAddr( instance, "vkRegisterDeviceEventEXT" ) ); + vkRegisterDisplayEventEXT = PFN_vkRegisterDisplayEventEXT( vkGetInstanceProcAddr( instance, "vkRegisterDisplayEventEXT" ) ); + vkGetSwapchainCounterEXT = PFN_vkGetSwapchainCounterEXT( vkGetInstanceProcAddr( instance, "vkGetSwapchainCounterEXT" ) ); + + //=== VK_GOOGLE_display_timing === + vkGetRefreshCycleDurationGOOGLE = PFN_vkGetRefreshCycleDurationGOOGLE( vkGetInstanceProcAddr( instance, "vkGetRefreshCycleDurationGOOGLE" ) ); + vkGetPastPresentationTimingGOOGLE = PFN_vkGetPastPresentationTimingGOOGLE( vkGetInstanceProcAddr( instance, "vkGetPastPresentationTimingGOOGLE" ) ); + + //=== VK_EXT_discard_rectangles === + vkCmdSetDiscardRectangleEXT = PFN_vkCmdSetDiscardRectangleEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDiscardRectangleEXT" ) ); + vkCmdSetDiscardRectangleEnableEXT = PFN_vkCmdSetDiscardRectangleEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDiscardRectangleEnableEXT" ) ); + vkCmdSetDiscardRectangleModeEXT = PFN_vkCmdSetDiscardRectangleModeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDiscardRectangleModeEXT" ) ); + + //=== VK_EXT_hdr_metadata === + vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetInstanceProcAddr( instance, "vkSetHdrMetadataEXT" ) ); + + //=== VK_KHR_create_renderpass2 === + vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetInstanceProcAddr( instance, "vkCreateRenderPass2KHR" ) ); + if ( !vkCreateRenderPass2 ) + vkCreateRenderPass2 = vkCreateRenderPass2KHR; + vkCmdBeginRenderPass2KHR = PFN_vkCmdBeginRenderPass2KHR( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass2KHR" ) ); + if ( !vkCmdBeginRenderPass2 ) + vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR; + vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetInstanceProcAddr( instance, "vkCmdNextSubpass2KHR" ) ); + if ( !vkCmdNextSubpass2 ) + vkCmdNextSubpass2 = vkCmdNextSubpass2KHR; + vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass2KHR" ) ); + if ( !vkCmdEndRenderPass2 ) + vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR; + + //=== VK_KHR_shared_presentable_image === + vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR( vkGetInstanceProcAddr( instance, "vkGetSwapchainStatusKHR" ) ); + + //=== VK_KHR_external_fence_capabilities === + vkGetPhysicalDeviceExternalFencePropertiesKHR = + PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalFenceProperties ) + vkGetPhysicalDeviceExternalFenceProperties = vkGetPhysicalDeviceExternalFencePropertiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + vkImportFenceWin32HandleKHR = PFN_vkImportFenceWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkImportFenceWin32HandleKHR" ) ); + vkGetFenceWin32HandleKHR = PFN_vkGetFenceWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkGetFenceWin32HandleKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetInstanceProcAddr( instance, "vkImportFenceFdKHR" ) ); + vkGetFenceFdKHR = PFN_vkGetFenceFdKHR( vkGetInstanceProcAddr( instance, "vkGetFenceFdKHR" ) ); + + //=== VK_KHR_performance_query === + vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR" ) ); + vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR" ) ); + vkAcquireProfilingLockKHR = PFN_vkAcquireProfilingLockKHR( vkGetInstanceProcAddr( instance, "vkAcquireProfilingLockKHR" ) ); + vkReleaseProfilingLockKHR = PFN_vkReleaseProfilingLockKHR( vkGetInstanceProcAddr( instance, "vkReleaseProfilingLockKHR" ) ); + + //=== VK_KHR_get_surface_capabilities2 === + vkGetPhysicalDeviceSurfaceCapabilities2KHR = + PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ) ); + vkGetPhysicalDeviceSurfaceFormats2KHR = + PFN_vkGetPhysicalDeviceSurfaceFormats2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ) ); + + //=== VK_KHR_get_display_properties2 === + vkGetPhysicalDeviceDisplayProperties2KHR = + PFN_vkGetPhysicalDeviceDisplayProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" ) ); + vkGetPhysicalDeviceDisplayPlaneProperties2KHR = + PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" ) ); + vkGetDisplayModeProperties2KHR = PFN_vkGetDisplayModeProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" ) ); + vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" ) ); + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ) ); +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + vkCreateMacOSSurfaceMVK = PFN_vkCreateMacOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ) ); +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + vkSetDebugUtilsObjectNameEXT = PFN_vkSetDebugUtilsObjectNameEXT( vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectNameEXT" ) ); + vkSetDebugUtilsObjectTagEXT = PFN_vkSetDebugUtilsObjectTagEXT( vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectTagEXT" ) ); + vkQueueBeginDebugUtilsLabelEXT = PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkQueueBeginDebugUtilsLabelEXT" ) ); + vkQueueEndDebugUtilsLabelEXT = PFN_vkQueueEndDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkQueueEndDebugUtilsLabelEXT" ) ); + vkQueueInsertDebugUtilsLabelEXT = PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkQueueInsertDebugUtilsLabelEXT" ) ); + vkCmdBeginDebugUtilsLabelEXT = PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginDebugUtilsLabelEXT" ) ); + vkCmdEndDebugUtilsLabelEXT = PFN_vkCmdEndDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkCmdEndDebugUtilsLabelEXT" ) ); + vkCmdInsertDebugUtilsLabelEXT = PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkCmdInsertDebugUtilsLabelEXT" ) ); + vkCreateDebugUtilsMessengerEXT = PFN_vkCreateDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" ) ); + vkDestroyDebugUtilsMessengerEXT = PFN_vkDestroyDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" ) ); + vkSubmitDebugUtilsMessageEXT = PFN_vkSubmitDebugUtilsMessageEXT( vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" ) ); + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + vkGetAndroidHardwareBufferPropertiesANDROID = + PFN_vkGetAndroidHardwareBufferPropertiesANDROID( vkGetInstanceProcAddr( instance, "vkGetAndroidHardwareBufferPropertiesANDROID" ) ); + vkGetMemoryAndroidHardwareBufferANDROID = + PFN_vkGetMemoryAndroidHardwareBufferANDROID( vkGetInstanceProcAddr( instance, "vkGetMemoryAndroidHardwareBufferANDROID" ) ); +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + vkCreateExecutionGraphPipelinesAMDX = + PFN_vkCreateExecutionGraphPipelinesAMDX( vkGetInstanceProcAddr( instance, "vkCreateExecutionGraphPipelinesAMDX" ) ); + vkGetExecutionGraphPipelineScratchSizeAMDX = + PFN_vkGetExecutionGraphPipelineScratchSizeAMDX( vkGetInstanceProcAddr( instance, "vkGetExecutionGraphPipelineScratchSizeAMDX" ) ); + vkGetExecutionGraphPipelineNodeIndexAMDX = + PFN_vkGetExecutionGraphPipelineNodeIndexAMDX( vkGetInstanceProcAddr( instance, "vkGetExecutionGraphPipelineNodeIndexAMDX" ) ); + vkCmdInitializeGraphScratchMemoryAMDX = + PFN_vkCmdInitializeGraphScratchMemoryAMDX( vkGetInstanceProcAddr( instance, "vkCmdInitializeGraphScratchMemoryAMDX" ) ); + vkCmdDispatchGraphAMDX = PFN_vkCmdDispatchGraphAMDX( vkGetInstanceProcAddr( instance, "vkCmdDispatchGraphAMDX" ) ); + vkCmdDispatchGraphIndirectAMDX = PFN_vkCmdDispatchGraphIndirectAMDX( vkGetInstanceProcAddr( instance, "vkCmdDispatchGraphIndirectAMDX" ) ); + vkCmdDispatchGraphIndirectCountAMDX = + PFN_vkCmdDispatchGraphIndirectCountAMDX( vkGetInstanceProcAddr( instance, "vkCmdDispatchGraphIndirectCountAMDX" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + vkWriteSamplerDescriptorsEXT = PFN_vkWriteSamplerDescriptorsEXT( vkGetInstanceProcAddr( instance, "vkWriteSamplerDescriptorsEXT" ) ); + vkWriteResourceDescriptorsEXT = PFN_vkWriteResourceDescriptorsEXT( vkGetInstanceProcAddr( instance, "vkWriteResourceDescriptorsEXT" ) ); + vkCmdBindSamplerHeapEXT = PFN_vkCmdBindSamplerHeapEXT( vkGetInstanceProcAddr( instance, "vkCmdBindSamplerHeapEXT" ) ); + vkCmdBindResourceHeapEXT = PFN_vkCmdBindResourceHeapEXT( vkGetInstanceProcAddr( instance, "vkCmdBindResourceHeapEXT" ) ); + vkCmdPushDataEXT = PFN_vkCmdPushDataEXT( vkGetInstanceProcAddr( instance, "vkCmdPushDataEXT" ) ); + vkGetImageOpaqueCaptureDataEXT = PFN_vkGetImageOpaqueCaptureDataEXT( vkGetInstanceProcAddr( instance, "vkGetImageOpaqueCaptureDataEXT" ) ); + vkGetPhysicalDeviceDescriptorSizeEXT = + PFN_vkGetPhysicalDeviceDescriptorSizeEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDescriptorSizeEXT" ) ); + vkRegisterCustomBorderColorEXT = PFN_vkRegisterCustomBorderColorEXT( vkGetInstanceProcAddr( instance, "vkRegisterCustomBorderColorEXT" ) ); + vkUnregisterCustomBorderColorEXT = PFN_vkUnregisterCustomBorderColorEXT( vkGetInstanceProcAddr( instance, "vkUnregisterCustomBorderColorEXT" ) ); + vkGetTensorOpaqueCaptureDataARM = PFN_vkGetTensorOpaqueCaptureDataARM( vkGetInstanceProcAddr( instance, "vkGetTensorOpaqueCaptureDataARM" ) ); + + //=== VK_EXT_sample_locations === + vkCmdSetSampleLocationsEXT = PFN_vkCmdSetSampleLocationsEXT( vkGetInstanceProcAddr( instance, "vkCmdSetSampleLocationsEXT" ) ); + vkGetPhysicalDeviceMultisamplePropertiesEXT = + PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" ) ); + + //=== VK_KHR_get_memory_requirements2 === + vkGetImageMemoryRequirements2KHR = PFN_vkGetImageMemoryRequirements2KHR( vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2KHR" ) ); + if ( !vkGetImageMemoryRequirements2 ) + vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR; + vkGetBufferMemoryRequirements2KHR = PFN_vkGetBufferMemoryRequirements2KHR( vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2KHR" ) ); + if ( !vkGetBufferMemoryRequirements2 ) + vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR; + vkGetImageSparseMemoryRequirements2KHR = + PFN_vkGetImageSparseMemoryRequirements2KHR( vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2KHR" ) ); + if ( !vkGetImageSparseMemoryRequirements2 ) + vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR; + + //=== VK_KHR_acceleration_structure === + vkCreateAccelerationStructureKHR = PFN_vkCreateAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureKHR" ) ); + vkDestroyAccelerationStructureKHR = PFN_vkDestroyAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureKHR" ) ); + vkCmdBuildAccelerationStructuresKHR = + PFN_vkCmdBuildAccelerationStructuresKHR( vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructuresKHR" ) ); + vkCmdBuildAccelerationStructuresIndirectKHR = + PFN_vkCmdBuildAccelerationStructuresIndirectKHR( vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructuresIndirectKHR" ) ); + vkBuildAccelerationStructuresKHR = PFN_vkBuildAccelerationStructuresKHR( vkGetInstanceProcAddr( instance, "vkBuildAccelerationStructuresKHR" ) ); + vkCopyAccelerationStructureKHR = PFN_vkCopyAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCopyAccelerationStructureKHR" ) ); + vkCopyAccelerationStructureToMemoryKHR = + PFN_vkCopyAccelerationStructureToMemoryKHR( vkGetInstanceProcAddr( instance, "vkCopyAccelerationStructureToMemoryKHR" ) ); + vkCopyMemoryToAccelerationStructureKHR = + PFN_vkCopyMemoryToAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCopyMemoryToAccelerationStructureKHR" ) ); + vkWriteAccelerationStructuresPropertiesKHR = + PFN_vkWriteAccelerationStructuresPropertiesKHR( vkGetInstanceProcAddr( instance, "vkWriteAccelerationStructuresPropertiesKHR" ) ); + vkCmdCopyAccelerationStructureKHR = PFN_vkCmdCopyAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureKHR" ) ); + vkCmdCopyAccelerationStructureToMemoryKHR = + PFN_vkCmdCopyAccelerationStructureToMemoryKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureToMemoryKHR" ) ); + vkCmdCopyMemoryToAccelerationStructureKHR = + PFN_vkCmdCopyMemoryToAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryToAccelerationStructureKHR" ) ); + vkGetAccelerationStructureDeviceAddressKHR = + PFN_vkGetAccelerationStructureDeviceAddressKHR( vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureDeviceAddressKHR" ) ); + vkCmdWriteAccelerationStructuresPropertiesKHR = + PFN_vkCmdWriteAccelerationStructuresPropertiesKHR( vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) ); + vkGetDeviceAccelerationStructureCompatibilityKHR = + PFN_vkGetDeviceAccelerationStructureCompatibilityKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) ); + vkGetAccelerationStructureBuildSizesKHR = + PFN_vkGetAccelerationStructureBuildSizesKHR( vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureBuildSizesKHR" ) ); + + //=== VK_KHR_ray_tracing_pipeline === + vkCmdTraceRaysKHR = PFN_vkCmdTraceRaysKHR( vkGetInstanceProcAddr( instance, "vkCmdTraceRaysKHR" ) ); + vkCreateRayTracingPipelinesKHR = PFN_vkCreateRayTracingPipelinesKHR( vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesKHR" ) ); + vkGetRayTracingShaderGroupHandlesKHR = + PFN_vkGetRayTracingShaderGroupHandlesKHR( vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupHandlesKHR" ) ); + vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = + PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( vkGetInstanceProcAddr( instance, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) ); + vkCmdTraceRaysIndirectKHR = PFN_vkCmdTraceRaysIndirectKHR( vkGetInstanceProcAddr( instance, "vkCmdTraceRaysIndirectKHR" ) ); + vkGetRayTracingShaderGroupStackSizeKHR = + PFN_vkGetRayTracingShaderGroupStackSizeKHR( vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupStackSizeKHR" ) ); + vkCmdSetRayTracingPipelineStackSizeKHR = + PFN_vkCmdSetRayTracingPipelineStackSizeKHR( vkGetInstanceProcAddr( instance, "vkCmdSetRayTracingPipelineStackSizeKHR" ) ); + + //=== VK_KHR_sampler_ycbcr_conversion === + vkCreateSamplerYcbcrConversionKHR = PFN_vkCreateSamplerYcbcrConversionKHR( vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversionKHR" ) ); + if ( !vkCreateSamplerYcbcrConversion ) + vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR; + vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR( vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversionKHR" ) ); + if ( !vkDestroySamplerYcbcrConversion ) + vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR; + + //=== VK_KHR_bind_memory2 === + vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetInstanceProcAddr( instance, "vkBindBufferMemory2KHR" ) ); + if ( !vkBindBufferMemory2 ) + vkBindBufferMemory2 = vkBindBufferMemory2KHR; + vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetInstanceProcAddr( instance, "vkBindImageMemory2KHR" ) ); + if ( !vkBindImageMemory2 ) + vkBindImageMemory2 = vkBindImageMemory2KHR; + + //=== VK_EXT_image_drm_format_modifier === + vkGetImageDrmFormatModifierPropertiesEXT = + PFN_vkGetImageDrmFormatModifierPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetImageDrmFormatModifierPropertiesEXT" ) ); + + //=== VK_EXT_validation_cache === + vkCreateValidationCacheEXT = PFN_vkCreateValidationCacheEXT( vkGetInstanceProcAddr( instance, "vkCreateValidationCacheEXT" ) ); + vkDestroyValidationCacheEXT = PFN_vkDestroyValidationCacheEXT( vkGetInstanceProcAddr( instance, "vkDestroyValidationCacheEXT" ) ); + vkMergeValidationCachesEXT = PFN_vkMergeValidationCachesEXT( vkGetInstanceProcAddr( instance, "vkMergeValidationCachesEXT" ) ); + vkGetValidationCacheDataEXT = PFN_vkGetValidationCacheDataEXT( vkGetInstanceProcAddr( instance, "vkGetValidationCacheDataEXT" ) ); + + //=== VK_NV_shading_rate_image === + vkCmdBindShadingRateImageNV = PFN_vkCmdBindShadingRateImageNV( vkGetInstanceProcAddr( instance, "vkCmdBindShadingRateImageNV" ) ); + vkCmdSetViewportShadingRatePaletteNV = + PFN_vkCmdSetViewportShadingRatePaletteNV( vkGetInstanceProcAddr( instance, "vkCmdSetViewportShadingRatePaletteNV" ) ); + vkCmdSetCoarseSampleOrderNV = PFN_vkCmdSetCoarseSampleOrderNV( vkGetInstanceProcAddr( instance, "vkCmdSetCoarseSampleOrderNV" ) ); + + //=== VK_NV_ray_tracing === + vkCreateAccelerationStructureNV = PFN_vkCreateAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureNV" ) ); + vkDestroyAccelerationStructureNV = PFN_vkDestroyAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureNV" ) ); + vkGetAccelerationStructureMemoryRequirementsNV = + PFN_vkGetAccelerationStructureMemoryRequirementsNV( vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureMemoryRequirementsNV" ) ); + vkBindAccelerationStructureMemoryNV = + PFN_vkBindAccelerationStructureMemoryNV( vkGetInstanceProcAddr( instance, "vkBindAccelerationStructureMemoryNV" ) ); + vkCmdBuildAccelerationStructureNV = PFN_vkCmdBuildAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructureNV" ) ); + vkCmdCopyAccelerationStructureNV = PFN_vkCmdCopyAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureNV" ) ); + vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( vkGetInstanceProcAddr( instance, "vkCmdTraceRaysNV" ) ); + vkCreateRayTracingPipelinesNV = PFN_vkCreateRayTracingPipelinesNV( vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesNV" ) ); + vkGetRayTracingShaderGroupHandlesNV = + PFN_vkGetRayTracingShaderGroupHandlesNV( vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupHandlesNV" ) ); + if ( !vkGetRayTracingShaderGroupHandlesKHR ) + vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV; + vkGetAccelerationStructureHandleNV = PFN_vkGetAccelerationStructureHandleNV( vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureHandleNV" ) ); + vkCmdWriteAccelerationStructuresPropertiesNV = + PFN_vkCmdWriteAccelerationStructuresPropertiesNV( vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesNV" ) ); + vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetInstanceProcAddr( instance, "vkCompileDeferredNV" ) ); + + //=== VK_KHR_maintenance3 === + vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupportKHR" ) ); + if ( !vkGetDescriptorSetLayoutSupport ) + vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR; + + //=== VK_KHR_draw_indirect_count === + vkCmdDrawIndirectCountKHR = PFN_vkCmdDrawIndirectCountKHR( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountKHR" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR; + vkCmdDrawIndexedIndirectCountKHR = PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountKHR" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR; + + //=== VK_EXT_external_memory_host === + vkGetMemoryHostPointerPropertiesEXT = + PFN_vkGetMemoryHostPointerPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetMemoryHostPointerPropertiesEXT" ) ); + + //=== VK_AMD_buffer_marker === + vkCmdWriteBufferMarkerAMD = PFN_vkCmdWriteBufferMarkerAMD( vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarkerAMD" ) ); + vkCmdWriteBufferMarker2AMD = PFN_vkCmdWriteBufferMarker2AMD( vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarker2AMD" ) ); + + //=== VK_EXT_calibrated_timestamps === + vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = + PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" ) ); + if ( !vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) + vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = vkGetPhysicalDeviceCalibrateableTimeDomainsEXT; + vkGetCalibratedTimestampsEXT = PFN_vkGetCalibratedTimestampsEXT( vkGetInstanceProcAddr( instance, "vkGetCalibratedTimestampsEXT" ) ); + if ( !vkGetCalibratedTimestampsKHR ) + vkGetCalibratedTimestampsKHR = vkGetCalibratedTimestampsEXT; + + //=== VK_NV_mesh_shader === + vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksNV" ) ); + vkCmdDrawMeshTasksIndirectNV = PFN_vkCmdDrawMeshTasksIndirectNV( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectNV" ) ); + vkCmdDrawMeshTasksIndirectCountNV = PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectCountNV" ) ); + + //=== VK_NV_scissor_exclusive === + vkCmdSetExclusiveScissorEnableNV = PFN_vkCmdSetExclusiveScissorEnableNV( vkGetInstanceProcAddr( instance, "vkCmdSetExclusiveScissorEnableNV" ) ); + vkCmdSetExclusiveScissorNV = PFN_vkCmdSetExclusiveScissorNV( vkGetInstanceProcAddr( instance, "vkCmdSetExclusiveScissorNV" ) ); + + //=== VK_NV_device_diagnostic_checkpoints === + vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( vkGetInstanceProcAddr( instance, "vkCmdSetCheckpointNV" ) ); + vkGetQueueCheckpointDataNV = PFN_vkGetQueueCheckpointDataNV( vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointDataNV" ) ); + vkGetQueueCheckpointData2NV = PFN_vkGetQueueCheckpointData2NV( vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointData2NV" ) ); + + //=== VK_KHR_timeline_semaphore === + vkGetSemaphoreCounterValueKHR = PFN_vkGetSemaphoreCounterValueKHR( vkGetInstanceProcAddr( instance, "vkGetSemaphoreCounterValueKHR" ) ); + if ( !vkGetSemaphoreCounterValue ) + vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR; + vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetInstanceProcAddr( instance, "vkWaitSemaphoresKHR" ) ); + if ( !vkWaitSemaphores ) + vkWaitSemaphores = vkWaitSemaphoresKHR; + vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetInstanceProcAddr( instance, "vkSignalSemaphoreKHR" ) ); + if ( !vkSignalSemaphore ) + vkSignalSemaphore = vkSignalSemaphoreKHR; + + //=== VK_EXT_present_timing === + vkSetSwapchainPresentTimingQueueSizeEXT = + PFN_vkSetSwapchainPresentTimingQueueSizeEXT( vkGetInstanceProcAddr( instance, "vkSetSwapchainPresentTimingQueueSizeEXT" ) ); + vkGetSwapchainTimingPropertiesEXT = PFN_vkGetSwapchainTimingPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetSwapchainTimingPropertiesEXT" ) ); + vkGetSwapchainTimeDomainPropertiesEXT = + PFN_vkGetSwapchainTimeDomainPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetSwapchainTimeDomainPropertiesEXT" ) ); + vkGetPastPresentationTimingEXT = PFN_vkGetPastPresentationTimingEXT( vkGetInstanceProcAddr( instance, "vkGetPastPresentationTimingEXT" ) ); + + //=== VK_INTEL_performance_query === + vkInitializePerformanceApiINTEL = PFN_vkInitializePerformanceApiINTEL( vkGetInstanceProcAddr( instance, "vkInitializePerformanceApiINTEL" ) ); + vkUninitializePerformanceApiINTEL = PFN_vkUninitializePerformanceApiINTEL( vkGetInstanceProcAddr( instance, "vkUninitializePerformanceApiINTEL" ) ); + vkCmdSetPerformanceMarkerINTEL = PFN_vkCmdSetPerformanceMarkerINTEL( vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceMarkerINTEL" ) ); + vkCmdSetPerformanceStreamMarkerINTEL = + PFN_vkCmdSetPerformanceStreamMarkerINTEL( vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceStreamMarkerINTEL" ) ); + vkCmdSetPerformanceOverrideINTEL = PFN_vkCmdSetPerformanceOverrideINTEL( vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceOverrideINTEL" ) ); + vkAcquirePerformanceConfigurationINTEL = + PFN_vkAcquirePerformanceConfigurationINTEL( vkGetInstanceProcAddr( instance, "vkAcquirePerformanceConfigurationINTEL" ) ); + vkReleasePerformanceConfigurationINTEL = + PFN_vkReleasePerformanceConfigurationINTEL( vkGetInstanceProcAddr( instance, "vkReleasePerformanceConfigurationINTEL" ) ); + vkQueueSetPerformanceConfigurationINTEL = + PFN_vkQueueSetPerformanceConfigurationINTEL( vkGetInstanceProcAddr( instance, "vkQueueSetPerformanceConfigurationINTEL" ) ); + vkGetPerformanceParameterINTEL = PFN_vkGetPerformanceParameterINTEL( vkGetInstanceProcAddr( instance, "vkGetPerformanceParameterINTEL" ) ); + + //=== VK_AMD_display_native_hdr === + vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetInstanceProcAddr( instance, "vkSetLocalDimmingAMD" ) ); + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + vkCreateImagePipeSurfaceFUCHSIA = PFN_vkCreateImagePipeSurfaceFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateImagePipeSurfaceFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + vkCreateMetalSurfaceEXT = PFN_vkCreateMetalSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateMetalSurfaceEXT" ) ); +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + vkGetPhysicalDeviceFragmentShadingRatesKHR = + PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR" ) ); + vkCmdSetFragmentShadingRateKHR = PFN_vkCmdSetFragmentShadingRateKHR( vkGetInstanceProcAddr( instance, "vkCmdSetFragmentShadingRateKHR" ) ); + + //=== VK_KHR_dynamic_rendering_local_read === + vkCmdSetRenderingAttachmentLocationsKHR = + PFN_vkCmdSetRenderingAttachmentLocationsKHR( vkGetInstanceProcAddr( instance, "vkCmdSetRenderingAttachmentLocationsKHR" ) ); + if ( !vkCmdSetRenderingAttachmentLocations ) + vkCmdSetRenderingAttachmentLocations = vkCmdSetRenderingAttachmentLocationsKHR; + vkCmdSetRenderingInputAttachmentIndicesKHR = + PFN_vkCmdSetRenderingInputAttachmentIndicesKHR( vkGetInstanceProcAddr( instance, "vkCmdSetRenderingInputAttachmentIndicesKHR" ) ); + if ( !vkCmdSetRenderingInputAttachmentIndices ) + vkCmdSetRenderingInputAttachmentIndices = vkCmdSetRenderingInputAttachmentIndicesKHR; + + //=== VK_EXT_buffer_device_address === + vkGetBufferDeviceAddressEXT = PFN_vkGetBufferDeviceAddressEXT( vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddressEXT" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT; + + //=== VK_EXT_tooling_info === + vkGetPhysicalDeviceToolPropertiesEXT = + PFN_vkGetPhysicalDeviceToolPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolPropertiesEXT" ) ); + if ( !vkGetPhysicalDeviceToolProperties ) + vkGetPhysicalDeviceToolProperties = vkGetPhysicalDeviceToolPropertiesEXT; + + //=== VK_KHR_present_wait === + vkWaitForPresentKHR = PFN_vkWaitForPresentKHR( vkGetInstanceProcAddr( instance, "vkWaitForPresentKHR" ) ); + + //=== VK_NV_cooperative_matrix === + vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = + PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" ) ); + + //=== VK_NV_coverage_reduction_mode === + vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + vkGetPhysicalDeviceSurfacePresentModes2EXT = + PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT" ) ); + vkAcquireFullScreenExclusiveModeEXT = + PFN_vkAcquireFullScreenExclusiveModeEXT( vkGetInstanceProcAddr( instance, "vkAcquireFullScreenExclusiveModeEXT" ) ); + vkReleaseFullScreenExclusiveModeEXT = + PFN_vkReleaseFullScreenExclusiveModeEXT( vkGetInstanceProcAddr( instance, "vkReleaseFullScreenExclusiveModeEXT" ) ); + vkGetDeviceGroupSurfacePresentModes2EXT = + PFN_vkGetDeviceGroupSurfacePresentModes2EXT( vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModes2EXT" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + vkCreateHeadlessSurfaceEXT = PFN_vkCreateHeadlessSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" ) ); + + //=== VK_KHR_buffer_device_address === + vkGetBufferDeviceAddressKHR = PFN_vkGetBufferDeviceAddressKHR( vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddressKHR" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR; + vkGetBufferOpaqueCaptureAddressKHR = PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetInstanceProcAddr( instance, "vkGetBufferOpaqueCaptureAddressKHR" ) ); + if ( !vkGetBufferOpaqueCaptureAddress ) + vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR; + vkGetDeviceMemoryOpaqueCaptureAddressKHR = + PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) ); + if ( !vkGetDeviceMemoryOpaqueCaptureAddress ) + vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR; + + //=== VK_EXT_line_rasterization === + vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetInstanceProcAddr( instance, "vkCmdSetLineStippleEXT" ) ); + if ( !vkCmdSetLineStipple ) + vkCmdSetLineStipple = vkCmdSetLineStippleEXT; + + //=== VK_EXT_host_query_reset === + vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetInstanceProcAddr( instance, "vkResetQueryPoolEXT" ) ); + if ( !vkResetQueryPool ) + vkResetQueryPool = vkResetQueryPoolEXT; + + //=== VK_EXT_extended_dynamic_state === + vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetCullModeEXT" ) ); + if ( !vkCmdSetCullMode ) + vkCmdSetCullMode = vkCmdSetCullModeEXT; + vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetInstanceProcAddr( instance, "vkCmdSetFrontFaceEXT" ) ); + if ( !vkCmdSetFrontFace ) + vkCmdSetFrontFace = vkCmdSetFrontFaceEXT; + vkCmdSetPrimitiveTopologyEXT = PFN_vkCmdSetPrimitiveTopologyEXT( vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveTopologyEXT" ) ); + if ( !vkCmdSetPrimitiveTopology ) + vkCmdSetPrimitiveTopology = vkCmdSetPrimitiveTopologyEXT; + vkCmdSetViewportWithCountEXT = PFN_vkCmdSetViewportWithCountEXT( vkGetInstanceProcAddr( instance, "vkCmdSetViewportWithCountEXT" ) ); + if ( !vkCmdSetViewportWithCount ) + vkCmdSetViewportWithCount = vkCmdSetViewportWithCountEXT; + vkCmdSetScissorWithCountEXT = PFN_vkCmdSetScissorWithCountEXT( vkGetInstanceProcAddr( instance, "vkCmdSetScissorWithCountEXT" ) ); + if ( !vkCmdSetScissorWithCount ) + vkCmdSetScissorWithCount = vkCmdSetScissorWithCountEXT; + vkCmdBindVertexBuffers2EXT = PFN_vkCmdBindVertexBuffers2EXT( vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers2EXT" ) ); + if ( !vkCmdBindVertexBuffers2 ) + vkCmdBindVertexBuffers2 = vkCmdBindVertexBuffers2EXT; + vkCmdSetDepthTestEnableEXT = PFN_vkCmdSetDepthTestEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthTestEnableEXT" ) ); + if ( !vkCmdSetDepthTestEnable ) + vkCmdSetDepthTestEnable = vkCmdSetDepthTestEnableEXT; + vkCmdSetDepthWriteEnableEXT = PFN_vkCmdSetDepthWriteEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthWriteEnableEXT" ) ); + if ( !vkCmdSetDepthWriteEnable ) + vkCmdSetDepthWriteEnable = vkCmdSetDepthWriteEnableEXT; + vkCmdSetDepthCompareOpEXT = PFN_vkCmdSetDepthCompareOpEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthCompareOpEXT" ) ); + if ( !vkCmdSetDepthCompareOp ) + vkCmdSetDepthCompareOp = vkCmdSetDepthCompareOpEXT; + vkCmdSetDepthBoundsTestEnableEXT = PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBoundsTestEnableEXT" ) ); + if ( !vkCmdSetDepthBoundsTestEnable ) + vkCmdSetDepthBoundsTestEnable = vkCmdSetDepthBoundsTestEnableEXT; + vkCmdSetStencilTestEnableEXT = PFN_vkCmdSetStencilTestEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetStencilTestEnableEXT" ) ); + if ( !vkCmdSetStencilTestEnable ) + vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT; + vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetInstanceProcAddr( instance, "vkCmdSetStencilOpEXT" ) ); + if ( !vkCmdSetStencilOp ) + vkCmdSetStencilOp = vkCmdSetStencilOpEXT; + + //=== VK_KHR_deferred_host_operations === + vkCreateDeferredOperationKHR = PFN_vkCreateDeferredOperationKHR( vkGetInstanceProcAddr( instance, "vkCreateDeferredOperationKHR" ) ); + vkDestroyDeferredOperationKHR = PFN_vkDestroyDeferredOperationKHR( vkGetInstanceProcAddr( instance, "vkDestroyDeferredOperationKHR" ) ); + vkGetDeferredOperationMaxConcurrencyKHR = + PFN_vkGetDeferredOperationMaxConcurrencyKHR( vkGetInstanceProcAddr( instance, "vkGetDeferredOperationMaxConcurrencyKHR" ) ); + vkGetDeferredOperationResultKHR = PFN_vkGetDeferredOperationResultKHR( vkGetInstanceProcAddr( instance, "vkGetDeferredOperationResultKHR" ) ); + vkDeferredOperationJoinKHR = PFN_vkDeferredOperationJoinKHR( vkGetInstanceProcAddr( instance, "vkDeferredOperationJoinKHR" ) ); + + //=== VK_KHR_pipeline_executable_properties === + vkGetPipelineExecutablePropertiesKHR = + PFN_vkGetPipelineExecutablePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPipelineExecutablePropertiesKHR" ) ); + vkGetPipelineExecutableStatisticsKHR = + PFN_vkGetPipelineExecutableStatisticsKHR( vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableStatisticsKHR" ) ); + vkGetPipelineExecutableInternalRepresentationsKHR = + PFN_vkGetPipelineExecutableInternalRepresentationsKHR( vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); + + //=== VK_EXT_host_image_copy === + vkCopyMemoryToImageEXT = PFN_vkCopyMemoryToImageEXT( vkGetInstanceProcAddr( instance, "vkCopyMemoryToImageEXT" ) ); + if ( !vkCopyMemoryToImage ) + vkCopyMemoryToImage = vkCopyMemoryToImageEXT; + vkCopyImageToMemoryEXT = PFN_vkCopyImageToMemoryEXT( vkGetInstanceProcAddr( instance, "vkCopyImageToMemoryEXT" ) ); + if ( !vkCopyImageToMemory ) + vkCopyImageToMemory = vkCopyImageToMemoryEXT; + vkCopyImageToImageEXT = PFN_vkCopyImageToImageEXT( vkGetInstanceProcAddr( instance, "vkCopyImageToImageEXT" ) ); + if ( !vkCopyImageToImage ) + vkCopyImageToImage = vkCopyImageToImageEXT; + vkTransitionImageLayoutEXT = PFN_vkTransitionImageLayoutEXT( vkGetInstanceProcAddr( instance, "vkTransitionImageLayoutEXT" ) ); + if ( !vkTransitionImageLayout ) + vkTransitionImageLayout = vkTransitionImageLayoutEXT; + vkGetImageSubresourceLayout2EXT = PFN_vkGetImageSubresourceLayout2EXT( vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout2EXT" ) ); + if ( !vkGetImageSubresourceLayout2 ) + vkGetImageSubresourceLayout2 = vkGetImageSubresourceLayout2EXT; + + //=== VK_KHR_map_memory2 === + vkMapMemory2KHR = PFN_vkMapMemory2KHR( vkGetInstanceProcAddr( instance, "vkMapMemory2KHR" ) ); + if ( !vkMapMemory2 ) + vkMapMemory2 = vkMapMemory2KHR; + vkUnmapMemory2KHR = PFN_vkUnmapMemory2KHR( vkGetInstanceProcAddr( instance, "vkUnmapMemory2KHR" ) ); + if ( !vkUnmapMemory2 ) + vkUnmapMemory2 = vkUnmapMemory2KHR; + + //=== VK_EXT_swapchain_maintenance1 === + vkReleaseSwapchainImagesEXT = PFN_vkReleaseSwapchainImagesEXT( vkGetInstanceProcAddr( instance, "vkReleaseSwapchainImagesEXT" ) ); + if ( !vkReleaseSwapchainImagesKHR ) + vkReleaseSwapchainImagesKHR = vkReleaseSwapchainImagesEXT; + + //=== VK_NV_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsNV = + PFN_vkGetGeneratedCommandsMemoryRequirementsNV( vkGetInstanceProcAddr( instance, "vkGetGeneratedCommandsMemoryRequirementsNV" ) ); + vkCmdPreprocessGeneratedCommandsNV = PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetInstanceProcAddr( instance, "vkCmdPreprocessGeneratedCommandsNV" ) ); + vkCmdExecuteGeneratedCommandsNV = PFN_vkCmdExecuteGeneratedCommandsNV( vkGetInstanceProcAddr( instance, "vkCmdExecuteGeneratedCommandsNV" ) ); + vkCmdBindPipelineShaderGroupNV = PFN_vkCmdBindPipelineShaderGroupNV( vkGetInstanceProcAddr( instance, "vkCmdBindPipelineShaderGroupNV" ) ); + vkCreateIndirectCommandsLayoutNV = PFN_vkCreateIndirectCommandsLayoutNV( vkGetInstanceProcAddr( instance, "vkCreateIndirectCommandsLayoutNV" ) ); + vkDestroyIndirectCommandsLayoutNV = PFN_vkDestroyIndirectCommandsLayoutNV( vkGetInstanceProcAddr( instance, "vkDestroyIndirectCommandsLayoutNV" ) ); + + //=== VK_EXT_depth_bias_control === + vkCmdSetDepthBias2EXT = PFN_vkCmdSetDepthBias2EXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBias2EXT" ) ); + + //=== VK_EXT_acquire_drm_display === + vkAcquireDrmDisplayEXT = PFN_vkAcquireDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireDrmDisplayEXT" ) ); + vkGetDrmDisplayEXT = PFN_vkGetDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetDrmDisplayEXT" ) ); + + //=== VK_EXT_private_data === + vkCreatePrivateDataSlotEXT = PFN_vkCreatePrivateDataSlotEXT( vkGetInstanceProcAddr( instance, "vkCreatePrivateDataSlotEXT" ) ); + if ( !vkCreatePrivateDataSlot ) + vkCreatePrivateDataSlot = vkCreatePrivateDataSlotEXT; + vkDestroyPrivateDataSlotEXT = PFN_vkDestroyPrivateDataSlotEXT( vkGetInstanceProcAddr( instance, "vkDestroyPrivateDataSlotEXT" ) ); + if ( !vkDestroyPrivateDataSlot ) + vkDestroyPrivateDataSlot = vkDestroyPrivateDataSlotEXT; + vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetInstanceProcAddr( instance, "vkSetPrivateDataEXT" ) ); + if ( !vkSetPrivateData ) + vkSetPrivateData = vkSetPrivateDataEXT; + vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetInstanceProcAddr( instance, "vkGetPrivateDataEXT" ) ); + if ( !vkGetPrivateData ) + vkGetPrivateData = vkGetPrivateDataEXT; + + //=== VK_KHR_video_encode_queue === + vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR" ) ); + vkGetEncodedVideoSessionParametersKHR = + PFN_vkGetEncodedVideoSessionParametersKHR( vkGetInstanceProcAddr( instance, "vkGetEncodedVideoSessionParametersKHR" ) ); + vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetInstanceProcAddr( instance, "vkCmdEncodeVideoKHR" ) ); + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + vkCreateCudaModuleNV = PFN_vkCreateCudaModuleNV( vkGetInstanceProcAddr( instance, "vkCreateCudaModuleNV" ) ); + vkGetCudaModuleCacheNV = PFN_vkGetCudaModuleCacheNV( vkGetInstanceProcAddr( instance, "vkGetCudaModuleCacheNV" ) ); + vkCreateCudaFunctionNV = PFN_vkCreateCudaFunctionNV( vkGetInstanceProcAddr( instance, "vkCreateCudaFunctionNV" ) ); + vkDestroyCudaModuleNV = PFN_vkDestroyCudaModuleNV( vkGetInstanceProcAddr( instance, "vkDestroyCudaModuleNV" ) ); + vkDestroyCudaFunctionNV = PFN_vkDestroyCudaFunctionNV( vkGetInstanceProcAddr( instance, "vkDestroyCudaFunctionNV" ) ); + vkCmdCudaLaunchKernelNV = PFN_vkCmdCudaLaunchKernelNV( vkGetInstanceProcAddr( instance, "vkCmdCudaLaunchKernelNV" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + vkCmdDispatchTileQCOM = PFN_vkCmdDispatchTileQCOM( vkGetInstanceProcAddr( instance, "vkCmdDispatchTileQCOM" ) ); + vkCmdBeginPerTileExecutionQCOM = PFN_vkCmdBeginPerTileExecutionQCOM( vkGetInstanceProcAddr( instance, "vkCmdBeginPerTileExecutionQCOM" ) ); + vkCmdEndPerTileExecutionQCOM = PFN_vkCmdEndPerTileExecutionQCOM( vkGetInstanceProcAddr( instance, "vkCmdEndPerTileExecutionQCOM" ) ); + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + vkExportMetalObjectsEXT = PFN_vkExportMetalObjectsEXT( vkGetInstanceProcAddr( instance, "vkExportMetalObjectsEXT" ) ); +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_synchronization2 === + vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetInstanceProcAddr( instance, "vkCmdSetEvent2KHR" ) ); + if ( !vkCmdSetEvent2 ) + vkCmdSetEvent2 = vkCmdSetEvent2KHR; + vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetInstanceProcAddr( instance, "vkCmdResetEvent2KHR" ) ); + if ( !vkCmdResetEvent2 ) + vkCmdResetEvent2 = vkCmdResetEvent2KHR; + vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetInstanceProcAddr( instance, "vkCmdWaitEvents2KHR" ) ); + if ( !vkCmdWaitEvents2 ) + vkCmdWaitEvents2 = vkCmdWaitEvents2KHR; + vkCmdPipelineBarrier2KHR = PFN_vkCmdPipelineBarrier2KHR( vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier2KHR" ) ); + if ( !vkCmdPipelineBarrier2 ) + vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR; + vkCmdWriteTimestamp2KHR = PFN_vkCmdWriteTimestamp2KHR( vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp2KHR" ) ); + if ( !vkCmdWriteTimestamp2 ) + vkCmdWriteTimestamp2 = vkCmdWriteTimestamp2KHR; + vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetInstanceProcAddr( instance, "vkQueueSubmit2KHR" ) ); + if ( !vkQueueSubmit2 ) + vkQueueSubmit2 = vkQueueSubmit2KHR; + + //=== VK_EXT_descriptor_buffer === + vkGetDescriptorSetLayoutSizeEXT = PFN_vkGetDescriptorSetLayoutSizeEXT( vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSizeEXT" ) ); + vkGetDescriptorSetLayoutBindingOffsetEXT = + PFN_vkGetDescriptorSetLayoutBindingOffsetEXT( vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutBindingOffsetEXT" ) ); + vkGetDescriptorEXT = PFN_vkGetDescriptorEXT( vkGetInstanceProcAddr( instance, "vkGetDescriptorEXT" ) ); + vkCmdBindDescriptorBuffersEXT = PFN_vkCmdBindDescriptorBuffersEXT( vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorBuffersEXT" ) ); + vkCmdSetDescriptorBufferOffsetsEXT = PFN_vkCmdSetDescriptorBufferOffsetsEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDescriptorBufferOffsetsEXT" ) ); + vkCmdBindDescriptorBufferEmbeddedSamplersEXT = + PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT( vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT" ) ); + vkGetBufferOpaqueCaptureDescriptorDataEXT = + PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT( vkGetInstanceProcAddr( instance, "vkGetBufferOpaqueCaptureDescriptorDataEXT" ) ); + vkGetImageOpaqueCaptureDescriptorDataEXT = + PFN_vkGetImageOpaqueCaptureDescriptorDataEXT( vkGetInstanceProcAddr( instance, "vkGetImageOpaqueCaptureDescriptorDataEXT" ) ); + vkGetImageViewOpaqueCaptureDescriptorDataEXT = + PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT( vkGetInstanceProcAddr( instance, "vkGetImageViewOpaqueCaptureDescriptorDataEXT" ) ); + vkGetSamplerOpaqueCaptureDescriptorDataEXT = + PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT( vkGetInstanceProcAddr( instance, "vkGetSamplerOpaqueCaptureDescriptorDataEXT" ) ); + vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( + vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT" ) ); + + //=== VK_KHR_device_address_commands === + vkCmdBindIndexBuffer3KHR = PFN_vkCmdBindIndexBuffer3KHR( vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer3KHR" ) ); + vkCmdBindVertexBuffers3KHR = PFN_vkCmdBindVertexBuffers3KHR( vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers3KHR" ) ); + vkCmdDrawIndirect2KHR = PFN_vkCmdDrawIndirect2KHR( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirect2KHR" ) ); + vkCmdDrawIndexedIndirect2KHR = PFN_vkCmdDrawIndexedIndirect2KHR( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirect2KHR" ) ); + vkCmdDispatchIndirect2KHR = PFN_vkCmdDispatchIndirect2KHR( vkGetInstanceProcAddr( instance, "vkCmdDispatchIndirect2KHR" ) ); + vkCmdCopyMemoryKHR = PFN_vkCmdCopyMemoryKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryKHR" ) ); + vkCmdCopyMemoryToImageKHR = PFN_vkCmdCopyMemoryToImageKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryToImageKHR" ) ); + vkCmdCopyImageToMemoryKHR = PFN_vkCmdCopyImageToMemoryKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyImageToMemoryKHR" ) ); + vkCmdUpdateMemoryKHR = PFN_vkCmdUpdateMemoryKHR( vkGetInstanceProcAddr( instance, "vkCmdUpdateMemoryKHR" ) ); + vkCmdFillMemoryKHR = PFN_vkCmdFillMemoryKHR( vkGetInstanceProcAddr( instance, "vkCmdFillMemoryKHR" ) ); + vkCmdCopyQueryPoolResultsToMemoryKHR = + PFN_vkCmdCopyQueryPoolResultsToMemoryKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyQueryPoolResultsToMemoryKHR" ) ); + vkCmdDrawIndirectCount2KHR = PFN_vkCmdDrawIndirectCount2KHR( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCount2KHR" ) ); + vkCmdDrawIndexedIndirectCount2KHR = PFN_vkCmdDrawIndexedIndirectCount2KHR( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCount2KHR" ) ); + vkCmdBeginConditionalRendering2EXT = PFN_vkCmdBeginConditionalRendering2EXT( vkGetInstanceProcAddr( instance, "vkCmdBeginConditionalRendering2EXT" ) ); + vkCmdBindTransformFeedbackBuffers2EXT = + PFN_vkCmdBindTransformFeedbackBuffers2EXT( vkGetInstanceProcAddr( instance, "vkCmdBindTransformFeedbackBuffers2EXT" ) ); + vkCmdBeginTransformFeedback2EXT = PFN_vkCmdBeginTransformFeedback2EXT( vkGetInstanceProcAddr( instance, "vkCmdBeginTransformFeedback2EXT" ) ); + vkCmdEndTransformFeedback2EXT = PFN_vkCmdEndTransformFeedback2EXT( vkGetInstanceProcAddr( instance, "vkCmdEndTransformFeedback2EXT" ) ); + vkCmdDrawIndirectByteCount2EXT = PFN_vkCmdDrawIndirectByteCount2EXT( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectByteCount2EXT" ) ); + vkCmdDrawMeshTasksIndirect2EXT = PFN_vkCmdDrawMeshTasksIndirect2EXT( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirect2EXT" ) ); + vkCmdDrawMeshTasksIndirectCount2EXT = + PFN_vkCmdDrawMeshTasksIndirectCount2EXT( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectCount2EXT" ) ); + vkCmdWriteMarkerToMemoryAMD = PFN_vkCmdWriteMarkerToMemoryAMD( vkGetInstanceProcAddr( instance, "vkCmdWriteMarkerToMemoryAMD" ) ); + vkCreateAccelerationStructure2KHR = PFN_vkCreateAccelerationStructure2KHR( vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructure2KHR" ) ); + + //=== VK_NV_fragment_shading_rate_enums === + vkCmdSetFragmentShadingRateEnumNV = PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetInstanceProcAddr( instance, "vkCmdSetFragmentShadingRateEnumNV" ) ); + + //=== VK_EXT_mesh_shader === + vkCmdDrawMeshTasksEXT = PFN_vkCmdDrawMeshTasksEXT( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksEXT" ) ); + vkCmdDrawMeshTasksIndirectEXT = PFN_vkCmdDrawMeshTasksIndirectEXT( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectEXT" ) ); + vkCmdDrawMeshTasksIndirectCountEXT = PFN_vkCmdDrawMeshTasksIndirectCountEXT( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectCountEXT" ) ); + + //=== VK_KHR_copy_commands2 === + vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer2KHR" ) ); + if ( !vkCmdCopyBuffer2 ) + vkCmdCopyBuffer2 = vkCmdCopyBuffer2KHR; + vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyImage2KHR" ) ); + if ( !vkCmdCopyImage2 ) + vkCmdCopyImage2 = vkCmdCopyImage2KHR; + vkCmdCopyBufferToImage2KHR = PFN_vkCmdCopyBufferToImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage2KHR" ) ); + if ( !vkCmdCopyBufferToImage2 ) + vkCmdCopyBufferToImage2 = vkCmdCopyBufferToImage2KHR; + vkCmdCopyImageToBuffer2KHR = PFN_vkCmdCopyImageToBuffer2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer2KHR" ) ); + if ( !vkCmdCopyImageToBuffer2 ) + vkCmdCopyImageToBuffer2 = vkCmdCopyImageToBuffer2KHR; + vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdBlitImage2KHR" ) ); + if ( !vkCmdBlitImage2 ) + vkCmdBlitImage2 = vkCmdBlitImage2KHR; + vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdResolveImage2KHR" ) ); + if ( !vkCmdResolveImage2 ) + vkCmdResolveImage2 = vkCmdResolveImage2KHR; + + //=== VK_EXT_device_fault === + vkGetDeviceFaultInfoEXT = PFN_vkGetDeviceFaultInfoEXT( vkGetInstanceProcAddr( instance, "vkGetDeviceFaultInfoEXT" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + vkAcquireWinrtDisplayNV = PFN_vkAcquireWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkAcquireWinrtDisplayNV" ) ); + vkGetWinrtDisplayNV = PFN_vkGetWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkGetWinrtDisplayNV" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + vkCreateDirectFBSurfaceEXT = PFN_vkCreateDirectFBSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateDirectFBSurfaceEXT" ) ); + vkGetPhysicalDeviceDirectFBPresentationSupportEXT = + PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT" ) ); +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_vertex_input_dynamic_state === + vkCmdSetVertexInputEXT = PFN_vkCmdSetVertexInputEXT( vkGetInstanceProcAddr( instance, "vkCmdSetVertexInputEXT" ) ); + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + vkGetMemoryZirconHandleFUCHSIA = PFN_vkGetMemoryZirconHandleFUCHSIA( vkGetInstanceProcAddr( instance, "vkGetMemoryZirconHandleFUCHSIA" ) ); + vkGetMemoryZirconHandlePropertiesFUCHSIA = + PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA( vkGetInstanceProcAddr( instance, "vkGetMemoryZirconHandlePropertiesFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + vkImportSemaphoreZirconHandleFUCHSIA = + PFN_vkImportSemaphoreZirconHandleFUCHSIA( vkGetInstanceProcAddr( instance, "vkImportSemaphoreZirconHandleFUCHSIA" ) ); + vkGetSemaphoreZirconHandleFUCHSIA = PFN_vkGetSemaphoreZirconHandleFUCHSIA( vkGetInstanceProcAddr( instance, "vkGetSemaphoreZirconHandleFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + vkCreateBufferCollectionFUCHSIA = PFN_vkCreateBufferCollectionFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateBufferCollectionFUCHSIA" ) ); + vkSetBufferCollectionImageConstraintsFUCHSIA = + PFN_vkSetBufferCollectionImageConstraintsFUCHSIA( vkGetInstanceProcAddr( instance, "vkSetBufferCollectionImageConstraintsFUCHSIA" ) ); + vkSetBufferCollectionBufferConstraintsFUCHSIA = + PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA( vkGetInstanceProcAddr( instance, "vkSetBufferCollectionBufferConstraintsFUCHSIA" ) ); + vkDestroyBufferCollectionFUCHSIA = PFN_vkDestroyBufferCollectionFUCHSIA( vkGetInstanceProcAddr( instance, "vkDestroyBufferCollectionFUCHSIA" ) ); + vkGetBufferCollectionPropertiesFUCHSIA = + PFN_vkGetBufferCollectionPropertiesFUCHSIA( vkGetInstanceProcAddr( instance, "vkGetBufferCollectionPropertiesFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = + PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( vkGetInstanceProcAddr( instance, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" ) ); + vkCmdSubpassShadingHUAWEI = PFN_vkCmdSubpassShadingHUAWEI( vkGetInstanceProcAddr( instance, "vkCmdSubpassShadingHUAWEI" ) ); + + //=== VK_HUAWEI_invocation_mask === + vkCmdBindInvocationMaskHUAWEI = PFN_vkCmdBindInvocationMaskHUAWEI( vkGetInstanceProcAddr( instance, "vkCmdBindInvocationMaskHUAWEI" ) ); + + //=== VK_NV_external_memory_rdma === + vkGetMemoryRemoteAddressNV = PFN_vkGetMemoryRemoteAddressNV( vkGetInstanceProcAddr( instance, "vkGetMemoryRemoteAddressNV" ) ); + + //=== VK_EXT_pipeline_properties === + vkGetPipelinePropertiesEXT = PFN_vkGetPipelinePropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPipelinePropertiesEXT" ) ); + + //=== VK_EXT_extended_dynamic_state2 === + vkCmdSetPatchControlPointsEXT = PFN_vkCmdSetPatchControlPointsEXT( vkGetInstanceProcAddr( instance, "vkCmdSetPatchControlPointsEXT" ) ); + vkCmdSetRasterizerDiscardEnableEXT = PFN_vkCmdSetRasterizerDiscardEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetRasterizerDiscardEnableEXT" ) ); + if ( !vkCmdSetRasterizerDiscardEnable ) + vkCmdSetRasterizerDiscardEnable = vkCmdSetRasterizerDiscardEnableEXT; + vkCmdSetDepthBiasEnableEXT = PFN_vkCmdSetDepthBiasEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBiasEnableEXT" ) ); + if ( !vkCmdSetDepthBiasEnable ) + vkCmdSetDepthBiasEnable = vkCmdSetDepthBiasEnableEXT; + vkCmdSetLogicOpEXT = PFN_vkCmdSetLogicOpEXT( vkGetInstanceProcAddr( instance, "vkCmdSetLogicOpEXT" ) ); + vkCmdSetPrimitiveRestartEnableEXT = PFN_vkCmdSetPrimitiveRestartEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveRestartEnableEXT" ) ); + if ( !vkCmdSetPrimitiveRestartEnable ) + vkCmdSetPrimitiveRestartEnable = vkCmdSetPrimitiveRestartEnableEXT; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + vkCreateScreenSurfaceQNX = PFN_vkCreateScreenSurfaceQNX( vkGetInstanceProcAddr( instance, "vkCreateScreenSurfaceQNX" ) ); + vkGetPhysicalDeviceScreenPresentationSupportQNX = + PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceScreenPresentationSupportQNX" ) ); +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + vkCmdSetColorWriteEnableEXT = PFN_vkCmdSetColorWriteEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetColorWriteEnableEXT" ) ); + + //=== VK_KHR_ray_tracing_maintenance1 === + vkCmdTraceRaysIndirect2KHR = PFN_vkCmdTraceRaysIndirect2KHR( vkGetInstanceProcAddr( instance, "vkCmdTraceRaysIndirect2KHR" ) ); + + //=== VK_EXT_multi_draw === + vkCmdDrawMultiEXT = PFN_vkCmdDrawMultiEXT( vkGetInstanceProcAddr( instance, "vkCmdDrawMultiEXT" ) ); + vkCmdDrawMultiIndexedEXT = PFN_vkCmdDrawMultiIndexedEXT( vkGetInstanceProcAddr( instance, "vkCmdDrawMultiIndexedEXT" ) ); + + //=== VK_EXT_opacity_micromap === + vkCreateMicromapEXT = PFN_vkCreateMicromapEXT( vkGetInstanceProcAddr( instance, "vkCreateMicromapEXT" ) ); + vkDestroyMicromapEXT = PFN_vkDestroyMicromapEXT( vkGetInstanceProcAddr( instance, "vkDestroyMicromapEXT" ) ); + vkCmdBuildMicromapsEXT = PFN_vkCmdBuildMicromapsEXT( vkGetInstanceProcAddr( instance, "vkCmdBuildMicromapsEXT" ) ); + vkBuildMicromapsEXT = PFN_vkBuildMicromapsEXT( vkGetInstanceProcAddr( instance, "vkBuildMicromapsEXT" ) ); + vkCopyMicromapEXT = PFN_vkCopyMicromapEXT( vkGetInstanceProcAddr( instance, "vkCopyMicromapEXT" ) ); + vkCopyMicromapToMemoryEXT = PFN_vkCopyMicromapToMemoryEXT( vkGetInstanceProcAddr( instance, "vkCopyMicromapToMemoryEXT" ) ); + vkCopyMemoryToMicromapEXT = PFN_vkCopyMemoryToMicromapEXT( vkGetInstanceProcAddr( instance, "vkCopyMemoryToMicromapEXT" ) ); + vkWriteMicromapsPropertiesEXT = PFN_vkWriteMicromapsPropertiesEXT( vkGetInstanceProcAddr( instance, "vkWriteMicromapsPropertiesEXT" ) ); + vkCmdCopyMicromapEXT = PFN_vkCmdCopyMicromapEXT( vkGetInstanceProcAddr( instance, "vkCmdCopyMicromapEXT" ) ); + vkCmdCopyMicromapToMemoryEXT = PFN_vkCmdCopyMicromapToMemoryEXT( vkGetInstanceProcAddr( instance, "vkCmdCopyMicromapToMemoryEXT" ) ); + vkCmdCopyMemoryToMicromapEXT = PFN_vkCmdCopyMemoryToMicromapEXT( vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryToMicromapEXT" ) ); + vkCmdWriteMicromapsPropertiesEXT = PFN_vkCmdWriteMicromapsPropertiesEXT( vkGetInstanceProcAddr( instance, "vkCmdWriteMicromapsPropertiesEXT" ) ); + vkGetDeviceMicromapCompatibilityEXT = + PFN_vkGetDeviceMicromapCompatibilityEXT( vkGetInstanceProcAddr( instance, "vkGetDeviceMicromapCompatibilityEXT" ) ); + vkGetMicromapBuildSizesEXT = PFN_vkGetMicromapBuildSizesEXT( vkGetInstanceProcAddr( instance, "vkGetMicromapBuildSizesEXT" ) ); + + //=== VK_HUAWEI_cluster_culling_shader === + vkCmdDrawClusterHUAWEI = PFN_vkCmdDrawClusterHUAWEI( vkGetInstanceProcAddr( instance, "vkCmdDrawClusterHUAWEI" ) ); + vkCmdDrawClusterIndirectHUAWEI = PFN_vkCmdDrawClusterIndirectHUAWEI( vkGetInstanceProcAddr( instance, "vkCmdDrawClusterIndirectHUAWEI" ) ); + + //=== VK_EXT_pageable_device_local_memory === + vkSetDeviceMemoryPriorityEXT = PFN_vkSetDeviceMemoryPriorityEXT( vkGetInstanceProcAddr( instance, "vkSetDeviceMemoryPriorityEXT" ) ); + + //=== VK_KHR_maintenance4 === + vkGetDeviceBufferMemoryRequirementsKHR = + PFN_vkGetDeviceBufferMemoryRequirementsKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceBufferMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceBufferMemoryRequirements ) + vkGetDeviceBufferMemoryRequirements = vkGetDeviceBufferMemoryRequirementsKHR; + vkGetDeviceImageMemoryRequirementsKHR = + PFN_vkGetDeviceImageMemoryRequirementsKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceImageMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageMemoryRequirements ) + vkGetDeviceImageMemoryRequirements = vkGetDeviceImageMemoryRequirementsKHR; + vkGetDeviceImageSparseMemoryRequirementsKHR = + PFN_vkGetDeviceImageSparseMemoryRequirementsKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceImageSparseMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageSparseMemoryRequirements ) + vkGetDeviceImageSparseMemoryRequirements = vkGetDeviceImageSparseMemoryRequirementsKHR; + + //=== VK_VALVE_descriptor_set_host_mapping === + vkGetDescriptorSetLayoutHostMappingInfoVALVE = + PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE( vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutHostMappingInfoVALVE" ) ); + vkGetDescriptorSetHostMappingVALVE = PFN_vkGetDescriptorSetHostMappingVALVE( vkGetInstanceProcAddr( instance, "vkGetDescriptorSetHostMappingVALVE" ) ); + + //=== VK_NV_copy_memory_indirect === + vkCmdCopyMemoryIndirectNV = PFN_vkCmdCopyMemoryIndirectNV( vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryIndirectNV" ) ); + vkCmdCopyMemoryToImageIndirectNV = PFN_vkCmdCopyMemoryToImageIndirectNV( vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryToImageIndirectNV" ) ); + + //=== VK_NV_memory_decompression === + vkCmdDecompressMemoryNV = PFN_vkCmdDecompressMemoryNV( vkGetInstanceProcAddr( instance, "vkCmdDecompressMemoryNV" ) ); + vkCmdDecompressMemoryIndirectCountNV = + PFN_vkCmdDecompressMemoryIndirectCountNV( vkGetInstanceProcAddr( instance, "vkCmdDecompressMemoryIndirectCountNV" ) ); + + //=== VK_NV_device_generated_commands_compute === + vkGetPipelineIndirectMemoryRequirementsNV = + PFN_vkGetPipelineIndirectMemoryRequirementsNV( vkGetInstanceProcAddr( instance, "vkGetPipelineIndirectMemoryRequirementsNV" ) ); + vkCmdUpdatePipelineIndirectBufferNV = + PFN_vkCmdUpdatePipelineIndirectBufferNV( vkGetInstanceProcAddr( instance, "vkCmdUpdatePipelineIndirectBufferNV" ) ); + vkGetPipelineIndirectDeviceAddressNV = + PFN_vkGetPipelineIndirectDeviceAddressNV( vkGetInstanceProcAddr( instance, "vkGetPipelineIndirectDeviceAddressNV" ) ); + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + vkGetNativeBufferPropertiesOHOS = PFN_vkGetNativeBufferPropertiesOHOS( vkGetInstanceProcAddr( instance, "vkGetNativeBufferPropertiesOHOS" ) ); + vkGetMemoryNativeBufferOHOS = PFN_vkGetMemoryNativeBufferOHOS( vkGetInstanceProcAddr( instance, "vkGetMemoryNativeBufferOHOS" ) ); +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_extended_dynamic_state3 === + vkCmdSetDepthClampEnableEXT = PFN_vkCmdSetDepthClampEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthClampEnableEXT" ) ); + vkCmdSetPolygonModeEXT = PFN_vkCmdSetPolygonModeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetPolygonModeEXT" ) ); + vkCmdSetRasterizationSamplesEXT = PFN_vkCmdSetRasterizationSamplesEXT( vkGetInstanceProcAddr( instance, "vkCmdSetRasterizationSamplesEXT" ) ); + vkCmdSetSampleMaskEXT = PFN_vkCmdSetSampleMaskEXT( vkGetInstanceProcAddr( instance, "vkCmdSetSampleMaskEXT" ) ); + vkCmdSetAlphaToCoverageEnableEXT = PFN_vkCmdSetAlphaToCoverageEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetAlphaToCoverageEnableEXT" ) ); + vkCmdSetAlphaToOneEnableEXT = PFN_vkCmdSetAlphaToOneEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetAlphaToOneEnableEXT" ) ); + vkCmdSetLogicOpEnableEXT = PFN_vkCmdSetLogicOpEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetLogicOpEnableEXT" ) ); + vkCmdSetColorBlendEnableEXT = PFN_vkCmdSetColorBlendEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetColorBlendEnableEXT" ) ); + vkCmdSetColorBlendEquationEXT = PFN_vkCmdSetColorBlendEquationEXT( vkGetInstanceProcAddr( instance, "vkCmdSetColorBlendEquationEXT" ) ); + vkCmdSetColorWriteMaskEXT = PFN_vkCmdSetColorWriteMaskEXT( vkGetInstanceProcAddr( instance, "vkCmdSetColorWriteMaskEXT" ) ); + vkCmdSetTessellationDomainOriginEXT = + PFN_vkCmdSetTessellationDomainOriginEXT( vkGetInstanceProcAddr( instance, "vkCmdSetTessellationDomainOriginEXT" ) ); + vkCmdSetRasterizationStreamEXT = PFN_vkCmdSetRasterizationStreamEXT( vkGetInstanceProcAddr( instance, "vkCmdSetRasterizationStreamEXT" ) ); + vkCmdSetConservativeRasterizationModeEXT = + PFN_vkCmdSetConservativeRasterizationModeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetConservativeRasterizationModeEXT" ) ); + vkCmdSetExtraPrimitiveOverestimationSizeEXT = + PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetExtraPrimitiveOverestimationSizeEXT" ) ); + vkCmdSetDepthClipEnableEXT = PFN_vkCmdSetDepthClipEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthClipEnableEXT" ) ); + vkCmdSetSampleLocationsEnableEXT = PFN_vkCmdSetSampleLocationsEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetSampleLocationsEnableEXT" ) ); + vkCmdSetColorBlendAdvancedEXT = PFN_vkCmdSetColorBlendAdvancedEXT( vkGetInstanceProcAddr( instance, "vkCmdSetColorBlendAdvancedEXT" ) ); + vkCmdSetProvokingVertexModeEXT = PFN_vkCmdSetProvokingVertexModeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetProvokingVertexModeEXT" ) ); + vkCmdSetLineRasterizationModeEXT = PFN_vkCmdSetLineRasterizationModeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetLineRasterizationModeEXT" ) ); + vkCmdSetLineStippleEnableEXT = PFN_vkCmdSetLineStippleEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetLineStippleEnableEXT" ) ); + vkCmdSetDepthClipNegativeOneToOneEXT = + PFN_vkCmdSetDepthClipNegativeOneToOneEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthClipNegativeOneToOneEXT" ) ); + vkCmdSetViewportWScalingEnableNV = PFN_vkCmdSetViewportWScalingEnableNV( vkGetInstanceProcAddr( instance, "vkCmdSetViewportWScalingEnableNV" ) ); + vkCmdSetViewportSwizzleNV = PFN_vkCmdSetViewportSwizzleNV( vkGetInstanceProcAddr( instance, "vkCmdSetViewportSwizzleNV" ) ); + vkCmdSetCoverageToColorEnableNV = PFN_vkCmdSetCoverageToColorEnableNV( vkGetInstanceProcAddr( instance, "vkCmdSetCoverageToColorEnableNV" ) ); + vkCmdSetCoverageToColorLocationNV = PFN_vkCmdSetCoverageToColorLocationNV( vkGetInstanceProcAddr( instance, "vkCmdSetCoverageToColorLocationNV" ) ); + vkCmdSetCoverageModulationModeNV = PFN_vkCmdSetCoverageModulationModeNV( vkGetInstanceProcAddr( instance, "vkCmdSetCoverageModulationModeNV" ) ); + vkCmdSetCoverageModulationTableEnableNV = + PFN_vkCmdSetCoverageModulationTableEnableNV( vkGetInstanceProcAddr( instance, "vkCmdSetCoverageModulationTableEnableNV" ) ); + vkCmdSetCoverageModulationTableNV = PFN_vkCmdSetCoverageModulationTableNV( vkGetInstanceProcAddr( instance, "vkCmdSetCoverageModulationTableNV" ) ); + vkCmdSetShadingRateImageEnableNV = PFN_vkCmdSetShadingRateImageEnableNV( vkGetInstanceProcAddr( instance, "vkCmdSetShadingRateImageEnableNV" ) ); + vkCmdSetRepresentativeFragmentTestEnableNV = + PFN_vkCmdSetRepresentativeFragmentTestEnableNV( vkGetInstanceProcAddr( instance, "vkCmdSetRepresentativeFragmentTestEnableNV" ) ); + vkCmdSetCoverageReductionModeNV = PFN_vkCmdSetCoverageReductionModeNV( vkGetInstanceProcAddr( instance, "vkCmdSetCoverageReductionModeNV" ) ); + + //=== VK_ARM_tensors === + vkCreateTensorARM = PFN_vkCreateTensorARM( vkGetInstanceProcAddr( instance, "vkCreateTensorARM" ) ); + vkDestroyTensorARM = PFN_vkDestroyTensorARM( vkGetInstanceProcAddr( instance, "vkDestroyTensorARM" ) ); + vkCreateTensorViewARM = PFN_vkCreateTensorViewARM( vkGetInstanceProcAddr( instance, "vkCreateTensorViewARM" ) ); + vkDestroyTensorViewARM = PFN_vkDestroyTensorViewARM( vkGetInstanceProcAddr( instance, "vkDestroyTensorViewARM" ) ); + vkGetTensorMemoryRequirementsARM = PFN_vkGetTensorMemoryRequirementsARM( vkGetInstanceProcAddr( instance, "vkGetTensorMemoryRequirementsARM" ) ); + vkBindTensorMemoryARM = PFN_vkBindTensorMemoryARM( vkGetInstanceProcAddr( instance, "vkBindTensorMemoryARM" ) ); + vkGetDeviceTensorMemoryRequirementsARM = + PFN_vkGetDeviceTensorMemoryRequirementsARM( vkGetInstanceProcAddr( instance, "vkGetDeviceTensorMemoryRequirementsARM" ) ); + vkCmdCopyTensorARM = PFN_vkCmdCopyTensorARM( vkGetInstanceProcAddr( instance, "vkCmdCopyTensorARM" ) ); + vkGetPhysicalDeviceExternalTensorPropertiesARM = + PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalTensorPropertiesARM" ) ); + vkGetTensorOpaqueCaptureDescriptorDataARM = + PFN_vkGetTensorOpaqueCaptureDescriptorDataARM( vkGetInstanceProcAddr( instance, "vkGetTensorOpaqueCaptureDescriptorDataARM" ) ); + vkGetTensorViewOpaqueCaptureDescriptorDataARM = + PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM( vkGetInstanceProcAddr( instance, "vkGetTensorViewOpaqueCaptureDescriptorDataARM" ) ); + + //=== VK_EXT_shader_module_identifier === + vkGetShaderModuleIdentifierEXT = PFN_vkGetShaderModuleIdentifierEXT( vkGetInstanceProcAddr( instance, "vkGetShaderModuleIdentifierEXT" ) ); + vkGetShaderModuleCreateInfoIdentifierEXT = + PFN_vkGetShaderModuleCreateInfoIdentifierEXT( vkGetInstanceProcAddr( instance, "vkGetShaderModuleCreateInfoIdentifierEXT" ) ); + + //=== VK_NV_optical_flow === + vkGetPhysicalDeviceOpticalFlowImageFormatsNV = + PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV" ) ); + vkCreateOpticalFlowSessionNV = PFN_vkCreateOpticalFlowSessionNV( vkGetInstanceProcAddr( instance, "vkCreateOpticalFlowSessionNV" ) ); + vkDestroyOpticalFlowSessionNV = PFN_vkDestroyOpticalFlowSessionNV( vkGetInstanceProcAddr( instance, "vkDestroyOpticalFlowSessionNV" ) ); + vkBindOpticalFlowSessionImageNV = PFN_vkBindOpticalFlowSessionImageNV( vkGetInstanceProcAddr( instance, "vkBindOpticalFlowSessionImageNV" ) ); + vkCmdOpticalFlowExecuteNV = PFN_vkCmdOpticalFlowExecuteNV( vkGetInstanceProcAddr( instance, "vkCmdOpticalFlowExecuteNV" ) ); + + //=== VK_KHR_maintenance5 === + vkCmdBindIndexBuffer2KHR = PFN_vkCmdBindIndexBuffer2KHR( vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer2KHR" ) ); + if ( !vkCmdBindIndexBuffer2 ) + vkCmdBindIndexBuffer2 = vkCmdBindIndexBuffer2KHR; + vkGetRenderingAreaGranularityKHR = PFN_vkGetRenderingAreaGranularityKHR( vkGetInstanceProcAddr( instance, "vkGetRenderingAreaGranularityKHR" ) ); + if ( !vkGetRenderingAreaGranularity ) + vkGetRenderingAreaGranularity = vkGetRenderingAreaGranularityKHR; + vkGetDeviceImageSubresourceLayoutKHR = + PFN_vkGetDeviceImageSubresourceLayoutKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceImageSubresourceLayoutKHR" ) ); + if ( !vkGetDeviceImageSubresourceLayout ) + vkGetDeviceImageSubresourceLayout = vkGetDeviceImageSubresourceLayoutKHR; + vkGetImageSubresourceLayout2KHR = PFN_vkGetImageSubresourceLayout2KHR( vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout2KHR" ) ); + if ( !vkGetImageSubresourceLayout2 ) + vkGetImageSubresourceLayout2 = vkGetImageSubresourceLayout2KHR; + + //=== VK_AMD_anti_lag === + vkAntiLagUpdateAMD = PFN_vkAntiLagUpdateAMD( vkGetInstanceProcAddr( instance, "vkAntiLagUpdateAMD" ) ); + + //=== VK_KHR_present_wait2 === + vkWaitForPresent2KHR = PFN_vkWaitForPresent2KHR( vkGetInstanceProcAddr( instance, "vkWaitForPresent2KHR" ) ); + + //=== VK_EXT_shader_object === + vkCreateShadersEXT = PFN_vkCreateShadersEXT( vkGetInstanceProcAddr( instance, "vkCreateShadersEXT" ) ); + vkDestroyShaderEXT = PFN_vkDestroyShaderEXT( vkGetInstanceProcAddr( instance, "vkDestroyShaderEXT" ) ); + vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetInstanceProcAddr( instance, "vkGetShaderBinaryDataEXT" ) ); + vkCmdBindShadersEXT = PFN_vkCmdBindShadersEXT( vkGetInstanceProcAddr( instance, "vkCmdBindShadersEXT" ) ); + vkCmdSetDepthClampRangeEXT = PFN_vkCmdSetDepthClampRangeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthClampRangeEXT" ) ); + + //=== VK_KHR_pipeline_binary === + vkCreatePipelineBinariesKHR = PFN_vkCreatePipelineBinariesKHR( vkGetInstanceProcAddr( instance, "vkCreatePipelineBinariesKHR" ) ); + vkDestroyPipelineBinaryKHR = PFN_vkDestroyPipelineBinaryKHR( vkGetInstanceProcAddr( instance, "vkDestroyPipelineBinaryKHR" ) ); + vkGetPipelineKeyKHR = PFN_vkGetPipelineKeyKHR( vkGetInstanceProcAddr( instance, "vkGetPipelineKeyKHR" ) ); + vkGetPipelineBinaryDataKHR = PFN_vkGetPipelineBinaryDataKHR( vkGetInstanceProcAddr( instance, "vkGetPipelineBinaryDataKHR" ) ); + vkReleaseCapturedPipelineDataKHR = PFN_vkReleaseCapturedPipelineDataKHR( vkGetInstanceProcAddr( instance, "vkReleaseCapturedPipelineDataKHR" ) ); + + //=== VK_QCOM_tile_properties === + vkGetFramebufferTilePropertiesQCOM = PFN_vkGetFramebufferTilePropertiesQCOM( vkGetInstanceProcAddr( instance, "vkGetFramebufferTilePropertiesQCOM" ) ); + vkGetDynamicRenderingTilePropertiesQCOM = + PFN_vkGetDynamicRenderingTilePropertiesQCOM( vkGetInstanceProcAddr( instance, "vkGetDynamicRenderingTilePropertiesQCOM" ) ); + + //=== VK_KHR_swapchain_maintenance1 === + vkReleaseSwapchainImagesKHR = PFN_vkReleaseSwapchainImagesKHR( vkGetInstanceProcAddr( instance, "vkReleaseSwapchainImagesKHR" ) ); + + //=== VK_NV_cooperative_vector === + vkGetPhysicalDeviceCooperativeVectorPropertiesNV = + PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeVectorPropertiesNV" ) ); + vkConvertCooperativeVectorMatrixNV = PFN_vkConvertCooperativeVectorMatrixNV( vkGetInstanceProcAddr( instance, "vkConvertCooperativeVectorMatrixNV" ) ); + vkCmdConvertCooperativeVectorMatrixNV = + PFN_vkCmdConvertCooperativeVectorMatrixNV( vkGetInstanceProcAddr( instance, "vkCmdConvertCooperativeVectorMatrixNV" ) ); + + //=== VK_NV_low_latency2 === + vkSetLatencySleepModeNV = PFN_vkSetLatencySleepModeNV( vkGetInstanceProcAddr( instance, "vkSetLatencySleepModeNV" ) ); + vkLatencySleepNV = PFN_vkLatencySleepNV( vkGetInstanceProcAddr( instance, "vkLatencySleepNV" ) ); + vkSetLatencyMarkerNV = PFN_vkSetLatencyMarkerNV( vkGetInstanceProcAddr( instance, "vkSetLatencyMarkerNV" ) ); + vkGetLatencyTimingsNV = PFN_vkGetLatencyTimingsNV( vkGetInstanceProcAddr( instance, "vkGetLatencyTimingsNV" ) ); + vkQueueNotifyOutOfBandNV = PFN_vkQueueNotifyOutOfBandNV( vkGetInstanceProcAddr( instance, "vkQueueNotifyOutOfBandNV" ) ); + + //=== VK_KHR_cooperative_matrix === + vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = + PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR" ) ); + + //=== VK_ARM_data_graph === + vkCreateDataGraphPipelinesARM = PFN_vkCreateDataGraphPipelinesARM( vkGetInstanceProcAddr( instance, "vkCreateDataGraphPipelinesARM" ) ); + vkCreateDataGraphPipelineSessionARM = + PFN_vkCreateDataGraphPipelineSessionARM( vkGetInstanceProcAddr( instance, "vkCreateDataGraphPipelineSessionARM" ) ); + vkGetDataGraphPipelineSessionBindPointRequirementsARM = PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM( + vkGetInstanceProcAddr( instance, "vkGetDataGraphPipelineSessionBindPointRequirementsARM" ) ); + vkGetDataGraphPipelineSessionMemoryRequirementsARM = + PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM( vkGetInstanceProcAddr( instance, "vkGetDataGraphPipelineSessionMemoryRequirementsARM" ) ); + vkBindDataGraphPipelineSessionMemoryARM = + PFN_vkBindDataGraphPipelineSessionMemoryARM( vkGetInstanceProcAddr( instance, "vkBindDataGraphPipelineSessionMemoryARM" ) ); + vkDestroyDataGraphPipelineSessionARM = + PFN_vkDestroyDataGraphPipelineSessionARM( vkGetInstanceProcAddr( instance, "vkDestroyDataGraphPipelineSessionARM" ) ); + vkCmdDispatchDataGraphARM = PFN_vkCmdDispatchDataGraphARM( vkGetInstanceProcAddr( instance, "vkCmdDispatchDataGraphARM" ) ); + vkGetDataGraphPipelineAvailablePropertiesARM = + PFN_vkGetDataGraphPipelineAvailablePropertiesARM( vkGetInstanceProcAddr( instance, "vkGetDataGraphPipelineAvailablePropertiesARM" ) ); + vkGetDataGraphPipelinePropertiesARM = + PFN_vkGetDataGraphPipelinePropertiesARM( vkGetInstanceProcAddr( instance, "vkGetDataGraphPipelinePropertiesARM" ) ); + vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = + PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM" ) ); + vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM" ) ); + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + vkCmdSetAttachmentFeedbackLoopEnableEXT = + PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetAttachmentFeedbackLoopEnableEXT" ) ); + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + vkGetScreenBufferPropertiesQNX = PFN_vkGetScreenBufferPropertiesQNX( vkGetInstanceProcAddr( instance, "vkGetScreenBufferPropertiesQNX" ) ); +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_line_rasterization === + vkCmdSetLineStippleKHR = PFN_vkCmdSetLineStippleKHR( vkGetInstanceProcAddr( instance, "vkCmdSetLineStippleKHR" ) ); + if ( !vkCmdSetLineStipple ) + vkCmdSetLineStipple = vkCmdSetLineStippleKHR; + + //=== VK_KHR_calibrated_timestamps === + vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = + PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsKHR" ) ); + vkGetCalibratedTimestampsKHR = PFN_vkGetCalibratedTimestampsKHR( vkGetInstanceProcAddr( instance, "vkGetCalibratedTimestampsKHR" ) ); + + //=== VK_KHR_maintenance6 === + vkCmdBindDescriptorSets2KHR = PFN_vkCmdBindDescriptorSets2KHR( vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorSets2KHR" ) ); + if ( !vkCmdBindDescriptorSets2 ) + vkCmdBindDescriptorSets2 = vkCmdBindDescriptorSets2KHR; + vkCmdPushConstants2KHR = PFN_vkCmdPushConstants2KHR( vkGetInstanceProcAddr( instance, "vkCmdPushConstants2KHR" ) ); + if ( !vkCmdPushConstants2 ) + vkCmdPushConstants2 = vkCmdPushConstants2KHR; + vkCmdPushDescriptorSet2KHR = PFN_vkCmdPushDescriptorSet2KHR( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSet2KHR" ) ); + if ( !vkCmdPushDescriptorSet2 ) + vkCmdPushDescriptorSet2 = vkCmdPushDescriptorSet2KHR; + vkCmdPushDescriptorSetWithTemplate2KHR = + PFN_vkCmdPushDescriptorSetWithTemplate2KHR( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplate2KHR" ) ); + if ( !vkCmdPushDescriptorSetWithTemplate2 ) + vkCmdPushDescriptorSetWithTemplate2 = vkCmdPushDescriptorSetWithTemplate2KHR; + vkCmdSetDescriptorBufferOffsets2EXT = + PFN_vkCmdSetDescriptorBufferOffsets2EXT( vkGetInstanceProcAddr( instance, "vkCmdSetDescriptorBufferOffsets2EXT" ) ); + vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = + PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" ) ); + + //=== VK_QCOM_tile_memory_heap === + vkCmdBindTileMemoryQCOM = PFN_vkCmdBindTileMemoryQCOM( vkGetInstanceProcAddr( instance, "vkCmdBindTileMemoryQCOM" ) ); + + //=== VK_KHR_copy_memory_indirect === + vkCmdCopyMemoryIndirectKHR = PFN_vkCmdCopyMemoryIndirectKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryIndirectKHR" ) ); + vkCmdCopyMemoryToImageIndirectKHR = PFN_vkCmdCopyMemoryToImageIndirectKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryToImageIndirectKHR" ) ); + + //=== VK_EXT_memory_decompression === + vkCmdDecompressMemoryEXT = PFN_vkCmdDecompressMemoryEXT( vkGetInstanceProcAddr( instance, "vkCmdDecompressMemoryEXT" ) ); + vkCmdDecompressMemoryIndirectCountEXT = + PFN_vkCmdDecompressMemoryIndirectCountEXT( vkGetInstanceProcAddr( instance, "vkCmdDecompressMemoryIndirectCountEXT" ) ); + + //=== VK_NV_external_compute_queue === + vkCreateExternalComputeQueueNV = PFN_vkCreateExternalComputeQueueNV( vkGetInstanceProcAddr( instance, "vkCreateExternalComputeQueueNV" ) ); + vkDestroyExternalComputeQueueNV = PFN_vkDestroyExternalComputeQueueNV( vkGetInstanceProcAddr( instance, "vkDestroyExternalComputeQueueNV" ) ); + vkGetExternalComputeQueueDataNV = PFN_vkGetExternalComputeQueueDataNV( vkGetInstanceProcAddr( instance, "vkGetExternalComputeQueueDataNV" ) ); + + //=== VK_NV_cluster_acceleration_structure === + vkGetClusterAccelerationStructureBuildSizesNV = + PFN_vkGetClusterAccelerationStructureBuildSizesNV( vkGetInstanceProcAddr( instance, "vkGetClusterAccelerationStructureBuildSizesNV" ) ); + vkCmdBuildClusterAccelerationStructureIndirectNV = + PFN_vkCmdBuildClusterAccelerationStructureIndirectNV( vkGetInstanceProcAddr( instance, "vkCmdBuildClusterAccelerationStructureIndirectNV" ) ); + + //=== VK_NV_partitioned_acceleration_structure === + vkGetPartitionedAccelerationStructuresBuildSizesNV = + PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV( vkGetInstanceProcAddr( instance, "vkGetPartitionedAccelerationStructuresBuildSizesNV" ) ); + vkCmdBuildPartitionedAccelerationStructuresNV = + PFN_vkCmdBuildPartitionedAccelerationStructuresNV( vkGetInstanceProcAddr( instance, "vkCmdBuildPartitionedAccelerationStructuresNV" ) ); + + //=== VK_EXT_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsEXT = + PFN_vkGetGeneratedCommandsMemoryRequirementsEXT( vkGetInstanceProcAddr( instance, "vkGetGeneratedCommandsMemoryRequirementsEXT" ) ); + vkCmdPreprocessGeneratedCommandsEXT = + PFN_vkCmdPreprocessGeneratedCommandsEXT( vkGetInstanceProcAddr( instance, "vkCmdPreprocessGeneratedCommandsEXT" ) ); + vkCmdExecuteGeneratedCommandsEXT = PFN_vkCmdExecuteGeneratedCommandsEXT( vkGetInstanceProcAddr( instance, "vkCmdExecuteGeneratedCommandsEXT" ) ); + vkCreateIndirectCommandsLayoutEXT = PFN_vkCreateIndirectCommandsLayoutEXT( vkGetInstanceProcAddr( instance, "vkCreateIndirectCommandsLayoutEXT" ) ); + vkDestroyIndirectCommandsLayoutEXT = PFN_vkDestroyIndirectCommandsLayoutEXT( vkGetInstanceProcAddr( instance, "vkDestroyIndirectCommandsLayoutEXT" ) ); + vkCreateIndirectExecutionSetEXT = PFN_vkCreateIndirectExecutionSetEXT( vkGetInstanceProcAddr( instance, "vkCreateIndirectExecutionSetEXT" ) ); + vkDestroyIndirectExecutionSetEXT = PFN_vkDestroyIndirectExecutionSetEXT( vkGetInstanceProcAddr( instance, "vkDestroyIndirectExecutionSetEXT" ) ); + vkUpdateIndirectExecutionSetPipelineEXT = + PFN_vkUpdateIndirectExecutionSetPipelineEXT( vkGetInstanceProcAddr( instance, "vkUpdateIndirectExecutionSetPipelineEXT" ) ); + vkUpdateIndirectExecutionSetShaderEXT = + PFN_vkUpdateIndirectExecutionSetShaderEXT( vkGetInstanceProcAddr( instance, "vkUpdateIndirectExecutionSetShaderEXT" ) ); + + //=== VK_KHR_device_fault === + vkGetDeviceFaultReportsKHR = PFN_vkGetDeviceFaultReportsKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceFaultReportsKHR" ) ); + vkGetDeviceFaultDebugInfoKHR = PFN_vkGetDeviceFaultDebugInfoKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceFaultDebugInfoKHR" ) ); + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + vkCreateSurfaceOHOS = PFN_vkCreateSurfaceOHOS( vkGetInstanceProcAddr( instance, "vkCreateSurfaceOHOS" ) ); +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_NV_cooperative_matrix2 === + vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV" ) ); + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + vkGetMemoryMetalHandleEXT = PFN_vkGetMemoryMetalHandleEXT( vkGetInstanceProcAddr( instance, "vkGetMemoryMetalHandleEXT" ) ); + vkGetMemoryMetalHandlePropertiesEXT = + PFN_vkGetMemoryMetalHandlePropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetMemoryMetalHandlePropertiesEXT" ) ); +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_performance_counters_by_region === + vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( + vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM" ) ); + + //=== VK_ARM_shader_instrumentation === + vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM = PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( + vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM" ) ); + vkCreateShaderInstrumentationARM = PFN_vkCreateShaderInstrumentationARM( vkGetInstanceProcAddr( instance, "vkCreateShaderInstrumentationARM" ) ); + vkDestroyShaderInstrumentationARM = PFN_vkDestroyShaderInstrumentationARM( vkGetInstanceProcAddr( instance, "vkDestroyShaderInstrumentationARM" ) ); + vkCmdBeginShaderInstrumentationARM = PFN_vkCmdBeginShaderInstrumentationARM( vkGetInstanceProcAddr( instance, "vkCmdBeginShaderInstrumentationARM" ) ); + vkCmdEndShaderInstrumentationARM = PFN_vkCmdEndShaderInstrumentationARM( vkGetInstanceProcAddr( instance, "vkCmdEndShaderInstrumentationARM" ) ); + vkGetShaderInstrumentationValuesARM = + PFN_vkGetShaderInstrumentationValuesARM( vkGetInstanceProcAddr( instance, "vkGetShaderInstrumentationValuesARM" ) ); + vkClearShaderInstrumentationMetricsARM = + PFN_vkClearShaderInstrumentationMetricsARM( vkGetInstanceProcAddr( instance, "vkClearShaderInstrumentationMetricsARM" ) ); + + //=== VK_EXT_fragment_density_map_offset === + vkCmdEndRendering2EXT = PFN_vkCmdEndRendering2EXT( vkGetInstanceProcAddr( instance, "vkCmdEndRendering2EXT" ) ); + if ( !vkCmdEndRendering2KHR ) + vkCmdEndRendering2KHR = vkCmdEndRendering2EXT; + + //=== VK_EXT_custom_resolve === + vkCmdBeginCustomResolveEXT = PFN_vkCmdBeginCustomResolveEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginCustomResolveEXT" ) ); + + //=== VK_KHR_maintenance10 === + vkCmdEndRendering2KHR = PFN_vkCmdEndRendering2KHR( vkGetInstanceProcAddr( instance, "vkCmdEndRendering2KHR" ) ); + + //=== VK_NV_compute_occupancy_priority === + vkCmdSetComputeOccupancyPriorityNV = PFN_vkCmdSetComputeOccupancyPriorityNV( vkGetInstanceProcAddr( instance, "vkCmdSetComputeOccupancyPriorityNV" ) ); + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + vkCreateUbmSurfaceSEC = PFN_vkCreateUbmSurfaceSEC( vkGetInstanceProcAddr( instance, "vkCreateUbmSurfaceSEC" ) ); + vkGetPhysicalDeviceUbmPresentationSupportSEC = + PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceUbmPresentationSupportSEC" ) ); +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + } + + void init( Device deviceCpp ) VULKAN_HPP_NOEXCEPT + { + VkDevice device = static_cast( deviceCpp ); + + //=== VK_VERSION_1_0 === + vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetDeviceProcAddr( device, "vkGetDeviceProcAddr" ) ); + vkDestroyDevice = PFN_vkDestroyDevice( vkGetDeviceProcAddr( device, "vkDestroyDevice" ) ); + vkGetDeviceQueue = PFN_vkGetDeviceQueue( vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ) ); + vkQueueSubmit = PFN_vkQueueSubmit( vkGetDeviceProcAddr( device, "vkQueueSubmit" ) ); + vkQueueWaitIdle = PFN_vkQueueWaitIdle( vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ) ); + vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ) ); + vkAllocateMemory = PFN_vkAllocateMemory( vkGetDeviceProcAddr( device, "vkAllocateMemory" ) ); + vkFreeMemory = PFN_vkFreeMemory( vkGetDeviceProcAddr( device, "vkFreeMemory" ) ); + vkMapMemory = PFN_vkMapMemory( vkGetDeviceProcAddr( device, "vkMapMemory" ) ); + vkUnmapMemory = PFN_vkUnmapMemory( vkGetDeviceProcAddr( device, "vkUnmapMemory" ) ); + vkFlushMappedMemoryRanges = PFN_vkFlushMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ) ); + vkInvalidateMappedMemoryRanges = PFN_vkInvalidateMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ) ); + vkGetDeviceMemoryCommitment = PFN_vkGetDeviceMemoryCommitment( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ) ); + vkBindBufferMemory = PFN_vkBindBufferMemory( vkGetDeviceProcAddr( device, "vkBindBufferMemory" ) ); + vkBindImageMemory = PFN_vkBindImageMemory( vkGetDeviceProcAddr( device, "vkBindImageMemory" ) ); + vkGetBufferMemoryRequirements = PFN_vkGetBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ) ); + vkGetImageMemoryRequirements = PFN_vkGetImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ) ); + vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ) ); + vkQueueBindSparse = PFN_vkQueueBindSparse( vkGetDeviceProcAddr( device, "vkQueueBindSparse" ) ); + vkCreateFence = PFN_vkCreateFence( vkGetDeviceProcAddr( device, "vkCreateFence" ) ); + vkDestroyFence = PFN_vkDestroyFence( vkGetDeviceProcAddr( device, "vkDestroyFence" ) ); + vkResetFences = PFN_vkResetFences( vkGetDeviceProcAddr( device, "vkResetFences" ) ); + vkGetFenceStatus = PFN_vkGetFenceStatus( vkGetDeviceProcAddr( device, "vkGetFenceStatus" ) ); + vkWaitForFences = PFN_vkWaitForFences( vkGetDeviceProcAddr( device, "vkWaitForFences" ) ); + vkCreateSemaphore = PFN_vkCreateSemaphore( vkGetDeviceProcAddr( device, "vkCreateSemaphore" ) ); + vkDestroySemaphore = PFN_vkDestroySemaphore( vkGetDeviceProcAddr( device, "vkDestroySemaphore" ) ); + vkCreateQueryPool = PFN_vkCreateQueryPool( vkGetDeviceProcAddr( device, "vkCreateQueryPool" ) ); + vkDestroyQueryPool = PFN_vkDestroyQueryPool( vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ) ); + vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ) ); + vkCreateBuffer = PFN_vkCreateBuffer( vkGetDeviceProcAddr( device, "vkCreateBuffer" ) ); + vkDestroyBuffer = PFN_vkDestroyBuffer( vkGetDeviceProcAddr( device, "vkDestroyBuffer" ) ); + vkCreateImage = PFN_vkCreateImage( vkGetDeviceProcAddr( device, "vkCreateImage" ) ); + vkDestroyImage = PFN_vkDestroyImage( vkGetDeviceProcAddr( device, "vkDestroyImage" ) ); + vkGetImageSubresourceLayout = PFN_vkGetImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ) ); + vkCreateImageView = PFN_vkCreateImageView( vkGetDeviceProcAddr( device, "vkCreateImageView" ) ); + vkDestroyImageView = PFN_vkDestroyImageView( vkGetDeviceProcAddr( device, "vkDestroyImageView" ) ); + vkCreateCommandPool = PFN_vkCreateCommandPool( vkGetDeviceProcAddr( device, "vkCreateCommandPool" ) ); + vkDestroyCommandPool = PFN_vkDestroyCommandPool( vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ) ); + vkResetCommandPool = PFN_vkResetCommandPool( vkGetDeviceProcAddr( device, "vkResetCommandPool" ) ); + vkAllocateCommandBuffers = PFN_vkAllocateCommandBuffers( vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ) ); + vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ) ); + vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ) ); + vkEndCommandBuffer = PFN_vkEndCommandBuffer( vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ) ); + vkResetCommandBuffer = PFN_vkResetCommandBuffer( vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ) ); + vkCmdCopyBuffer = PFN_vkCmdCopyBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ) ); + vkCmdCopyImage = PFN_vkCmdCopyImage( vkGetDeviceProcAddr( device, "vkCmdCopyImage" ) ); + vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ) ); + vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ) ); + vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer( vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ) ); + vkCmdFillBuffer = PFN_vkCmdFillBuffer( vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ) ); + vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ) ); + vkCmdBeginQuery = PFN_vkCmdBeginQuery( vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ) ); + vkCmdEndQuery = PFN_vkCmdEndQuery( vkGetDeviceProcAddr( device, "vkCmdEndQuery" ) ); + vkCmdResetQueryPool = PFN_vkCmdResetQueryPool( vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ) ); + vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ) ); + vkCmdCopyQueryPoolResults = PFN_vkCmdCopyQueryPoolResults( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ) ); + vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ) ); + vkCreateEvent = PFN_vkCreateEvent( vkGetDeviceProcAddr( device, "vkCreateEvent" ) ); + vkDestroyEvent = PFN_vkDestroyEvent( vkGetDeviceProcAddr( device, "vkDestroyEvent" ) ); + vkGetEventStatus = PFN_vkGetEventStatus( vkGetDeviceProcAddr( device, "vkGetEventStatus" ) ); + vkSetEvent = PFN_vkSetEvent( vkGetDeviceProcAddr( device, "vkSetEvent" ) ); + vkResetEvent = PFN_vkResetEvent( vkGetDeviceProcAddr( device, "vkResetEvent" ) ); + vkCreateBufferView = PFN_vkCreateBufferView( vkGetDeviceProcAddr( device, "vkCreateBufferView" ) ); + vkDestroyBufferView = PFN_vkDestroyBufferView( vkGetDeviceProcAddr( device, "vkDestroyBufferView" ) ); + vkCreateShaderModule = PFN_vkCreateShaderModule( vkGetDeviceProcAddr( device, "vkCreateShaderModule" ) ); + vkDestroyShaderModule = PFN_vkDestroyShaderModule( vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ) ); + vkCreatePipelineCache = PFN_vkCreatePipelineCache( vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ) ); + vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ) ); + vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ) ); + vkMergePipelineCaches = PFN_vkMergePipelineCaches( vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ) ); + vkCreateComputePipelines = PFN_vkCreateComputePipelines( vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ) ); + vkDestroyPipeline = PFN_vkDestroyPipeline( vkGetDeviceProcAddr( device, "vkDestroyPipeline" ) ); + vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ) ); + vkDestroyPipelineLayout = PFN_vkDestroyPipelineLayout( vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ) ); + vkCreateSampler = PFN_vkCreateSampler( vkGetDeviceProcAddr( device, "vkCreateSampler" ) ); + vkDestroySampler = PFN_vkDestroySampler( vkGetDeviceProcAddr( device, "vkDestroySampler" ) ); + vkCreateDescriptorSetLayout = PFN_vkCreateDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ) ); + vkDestroyDescriptorSetLayout = PFN_vkDestroyDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ) ); + vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ) ); + vkDestroyDescriptorPool = PFN_vkDestroyDescriptorPool( vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ) ); + vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ) ); + vkAllocateDescriptorSets = PFN_vkAllocateDescriptorSets( vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ) ); + vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ) ); + vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ) ); + vkCmdBindPipeline = PFN_vkCmdBindPipeline( vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ) ); + vkCmdBindDescriptorSets = PFN_vkCmdBindDescriptorSets( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ) ); + vkCmdClearColorImage = PFN_vkCmdClearColorImage( vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ) ); + vkCmdDispatch = PFN_vkCmdDispatch( vkGetDeviceProcAddr( device, "vkCmdDispatch" ) ); + vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ) ); + vkCmdSetEvent = PFN_vkCmdSetEvent( vkGetDeviceProcAddr( device, "vkCmdSetEvent" ) ); + vkCmdResetEvent = PFN_vkCmdResetEvent( vkGetDeviceProcAddr( device, "vkCmdResetEvent" ) ); + vkCmdWaitEvents = PFN_vkCmdWaitEvents( vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ) ); + vkCmdPushConstants = PFN_vkCmdPushConstants( vkGetDeviceProcAddr( device, "vkCmdPushConstants" ) ); + vkCreateGraphicsPipelines = PFN_vkCreateGraphicsPipelines( vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ) ); + vkCreateFramebuffer = PFN_vkCreateFramebuffer( vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ) ); + vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ) ); + vkCreateRenderPass = PFN_vkCreateRenderPass( vkGetDeviceProcAddr( device, "vkCreateRenderPass" ) ); + vkDestroyRenderPass = PFN_vkDestroyRenderPass( vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ) ); + vkGetRenderAreaGranularity = PFN_vkGetRenderAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ) ); + vkCmdSetViewport = PFN_vkCmdSetViewport( vkGetDeviceProcAddr( device, "vkCmdSetViewport" ) ); + vkCmdSetScissor = PFN_vkCmdSetScissor( vkGetDeviceProcAddr( device, "vkCmdSetScissor" ) ); + vkCmdSetLineWidth = PFN_vkCmdSetLineWidth( vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ) ); + vkCmdSetDepthBias = PFN_vkCmdSetDepthBias( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ) ); + vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ) ); + vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ) ); + vkCmdSetStencilCompareMask = PFN_vkCmdSetStencilCompareMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ) ); + vkCmdSetStencilWriteMask = PFN_vkCmdSetStencilWriteMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ) ); + vkCmdSetStencilReference = PFN_vkCmdSetStencilReference( vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ) ); + vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ) ); + vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ) ); + vkCmdDraw = PFN_vkCmdDraw( vkGetDeviceProcAddr( device, "vkCmdDraw" ) ); + vkCmdDrawIndexed = PFN_vkCmdDrawIndexed( vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ) ); + vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ) ); + vkCmdDrawIndexedIndirect = PFN_vkCmdDrawIndexedIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ) ); + vkCmdBlitImage = PFN_vkCmdBlitImage( vkGetDeviceProcAddr( device, "vkCmdBlitImage" ) ); + vkCmdClearDepthStencilImage = PFN_vkCmdClearDepthStencilImage( vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ) ); + vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ) ); + vkCmdResolveImage = PFN_vkCmdResolveImage( vkGetDeviceProcAddr( device, "vkCmdResolveImage" ) ); + vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ) ); + vkCmdNextSubpass = PFN_vkCmdNextSubpass( vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ) ); + vkCmdEndRenderPass = PFN_vkCmdEndRenderPass( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ) ); + + //=== VK_VERSION_1_1 === + vkBindBufferMemory2 = PFN_vkBindBufferMemory2( vkGetDeviceProcAddr( device, "vkBindBufferMemory2" ) ); + vkBindImageMemory2 = PFN_vkBindImageMemory2( vkGetDeviceProcAddr( device, "vkBindImageMemory2" ) ); + vkGetDeviceGroupPeerMemoryFeatures = PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" ) ); + vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" ) ); + vkGetImageMemoryRequirements2 = PFN_vkGetImageMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" ) ); + vkGetBufferMemoryRequirements2 = PFN_vkGetBufferMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" ) ); + vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" ) ); + vkTrimCommandPool = PFN_vkTrimCommandPool( vkGetDeviceProcAddr( device, "vkTrimCommandPool" ) ); + vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" ) ); + vkCmdDispatchBase = PFN_vkCmdDispatchBase( vkGetDeviceProcAddr( device, "vkCmdDispatchBase" ) ); + vkCreateDescriptorUpdateTemplate = PFN_vkCreateDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" ) ); + vkDestroyDescriptorUpdateTemplate = PFN_vkDestroyDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" ) ); + vkUpdateDescriptorSetWithTemplate = PFN_vkUpdateDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" ) ); + vkGetDescriptorSetLayoutSupport = PFN_vkGetDescriptorSetLayoutSupport( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" ) ); + vkCreateSamplerYcbcrConversion = PFN_vkCreateSamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" ) ); + vkDestroySamplerYcbcrConversion = PFN_vkDestroySamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" ) ); + + //=== VK_VERSION_1_2 === + vkResetQueryPool = PFN_vkResetQueryPool( vkGetDeviceProcAddr( device, "vkResetQueryPool" ) ); + vkGetSemaphoreCounterValue = PFN_vkGetSemaphoreCounterValue( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValue" ) ); + vkWaitSemaphores = PFN_vkWaitSemaphores( vkGetDeviceProcAddr( device, "vkWaitSemaphores" ) ); + vkSignalSemaphore = PFN_vkSignalSemaphore( vkGetDeviceProcAddr( device, "vkSignalSemaphore" ) ); + vkGetBufferDeviceAddress = PFN_vkGetBufferDeviceAddress( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddress" ) ); + vkGetBufferOpaqueCaptureAddress = PFN_vkGetBufferOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddress" ) ); + vkGetDeviceMemoryOpaqueCaptureAddress = + PFN_vkGetDeviceMemoryOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddress" ) ); + vkCmdDrawIndirectCount = PFN_vkCmdDrawIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount" ) ); + vkCmdDrawIndexedIndirectCount = PFN_vkCmdDrawIndexedIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount" ) ); + vkCreateRenderPass2 = PFN_vkCreateRenderPass2( vkGetDeviceProcAddr( device, "vkCreateRenderPass2" ) ); + vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2" ) ); + vkCmdNextSubpass2 = PFN_vkCmdNextSubpass2( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2" ) ); + vkCmdEndRenderPass2 = PFN_vkCmdEndRenderPass2( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2" ) ); + + //=== VK_VERSION_1_3 === + vkCreatePrivateDataSlot = PFN_vkCreatePrivateDataSlot( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlot" ) ); + vkDestroyPrivateDataSlot = PFN_vkDestroyPrivateDataSlot( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlot" ) ); + vkSetPrivateData = PFN_vkSetPrivateData( vkGetDeviceProcAddr( device, "vkSetPrivateData" ) ); + vkGetPrivateData = PFN_vkGetPrivateData( vkGetDeviceProcAddr( device, "vkGetPrivateData" ) ); + vkCmdPipelineBarrier2 = PFN_vkCmdPipelineBarrier2( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2" ) ); + vkCmdWriteTimestamp2 = PFN_vkCmdWriteTimestamp2( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2" ) ); + vkQueueSubmit2 = PFN_vkQueueSubmit2( vkGetDeviceProcAddr( device, "vkQueueSubmit2" ) ); + vkCmdCopyBuffer2 = PFN_vkCmdCopyBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2" ) ); + vkCmdCopyImage2 = PFN_vkCmdCopyImage2( vkGetDeviceProcAddr( device, "vkCmdCopyImage2" ) ); + vkCmdCopyBufferToImage2 = PFN_vkCmdCopyBufferToImage2( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2" ) ); + vkCmdCopyImageToBuffer2 = PFN_vkCmdCopyImageToBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2" ) ); + vkGetDeviceBufferMemoryRequirements = PFN_vkGetDeviceBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirements" ) ); + vkGetDeviceImageMemoryRequirements = PFN_vkGetDeviceImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirements" ) ); + vkGetDeviceImageSparseMemoryRequirements = + PFN_vkGetDeviceImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirements" ) ); + vkCmdSetEvent2 = PFN_vkCmdSetEvent2( vkGetDeviceProcAddr( device, "vkCmdSetEvent2" ) ); + vkCmdResetEvent2 = PFN_vkCmdResetEvent2( vkGetDeviceProcAddr( device, "vkCmdResetEvent2" ) ); + vkCmdWaitEvents2 = PFN_vkCmdWaitEvents2( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2" ) ); + vkCmdBlitImage2 = PFN_vkCmdBlitImage2( vkGetDeviceProcAddr( device, "vkCmdBlitImage2" ) ); + vkCmdResolveImage2 = PFN_vkCmdResolveImage2( vkGetDeviceProcAddr( device, "vkCmdResolveImage2" ) ); + vkCmdBeginRendering = PFN_vkCmdBeginRendering( vkGetDeviceProcAddr( device, "vkCmdBeginRendering" ) ); + vkCmdEndRendering = PFN_vkCmdEndRendering( vkGetDeviceProcAddr( device, "vkCmdEndRendering" ) ); + vkCmdSetCullMode = PFN_vkCmdSetCullMode( vkGetDeviceProcAddr( device, "vkCmdSetCullMode" ) ); + vkCmdSetFrontFace = PFN_vkCmdSetFrontFace( vkGetDeviceProcAddr( device, "vkCmdSetFrontFace" ) ); + vkCmdSetPrimitiveTopology = PFN_vkCmdSetPrimitiveTopology( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopology" ) ); + vkCmdSetViewportWithCount = PFN_vkCmdSetViewportWithCount( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCount" ) ); + vkCmdSetScissorWithCount = PFN_vkCmdSetScissorWithCount( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCount" ) ); + vkCmdBindVertexBuffers2 = PFN_vkCmdBindVertexBuffers2( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2" ) ); + vkCmdSetDepthTestEnable = PFN_vkCmdSetDepthTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnable" ) ); + vkCmdSetDepthWriteEnable = PFN_vkCmdSetDepthWriteEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnable" ) ); + vkCmdSetDepthCompareOp = PFN_vkCmdSetDepthCompareOp( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOp" ) ); + vkCmdSetDepthBoundsTestEnable = PFN_vkCmdSetDepthBoundsTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnable" ) ); + vkCmdSetStencilTestEnable = PFN_vkCmdSetStencilTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnable" ) ); + vkCmdSetStencilOp = PFN_vkCmdSetStencilOp( vkGetDeviceProcAddr( device, "vkCmdSetStencilOp" ) ); + vkCmdSetRasterizerDiscardEnable = PFN_vkCmdSetRasterizerDiscardEnable( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnable" ) ); + vkCmdSetDepthBiasEnable = PFN_vkCmdSetDepthBiasEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnable" ) ); + vkCmdSetPrimitiveRestartEnable = PFN_vkCmdSetPrimitiveRestartEnable( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnable" ) ); + + //=== VK_VERSION_1_4 === + vkMapMemory2 = PFN_vkMapMemory2( vkGetDeviceProcAddr( device, "vkMapMemory2" ) ); + vkUnmapMemory2 = PFN_vkUnmapMemory2( vkGetDeviceProcAddr( device, "vkUnmapMemory2" ) ); + vkGetDeviceImageSubresourceLayout = PFN_vkGetDeviceImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetDeviceImageSubresourceLayout" ) ); + vkGetImageSubresourceLayout2 = PFN_vkGetImageSubresourceLayout2( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2" ) ); + vkCopyMemoryToImage = PFN_vkCopyMemoryToImage( vkGetDeviceProcAddr( device, "vkCopyMemoryToImage" ) ); + vkCopyImageToMemory = PFN_vkCopyImageToMemory( vkGetDeviceProcAddr( device, "vkCopyImageToMemory" ) ); + vkCopyImageToImage = PFN_vkCopyImageToImage( vkGetDeviceProcAddr( device, "vkCopyImageToImage" ) ); + vkTransitionImageLayout = PFN_vkTransitionImageLayout( vkGetDeviceProcAddr( device, "vkTransitionImageLayout" ) ); + vkCmdPushDescriptorSet = PFN_vkCmdPushDescriptorSet( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSet" ) ); + vkCmdPushDescriptorSetWithTemplate = PFN_vkCmdPushDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplate" ) ); + vkCmdBindDescriptorSets2 = PFN_vkCmdBindDescriptorSets2( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets2" ) ); + vkCmdPushConstants2 = PFN_vkCmdPushConstants2( vkGetDeviceProcAddr( device, "vkCmdPushConstants2" ) ); + vkCmdPushDescriptorSet2 = PFN_vkCmdPushDescriptorSet2( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSet2" ) ); + vkCmdPushDescriptorSetWithTemplate2 = PFN_vkCmdPushDescriptorSetWithTemplate2( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplate2" ) ); + vkCmdSetLineStipple = PFN_vkCmdSetLineStipple( vkGetDeviceProcAddr( device, "vkCmdSetLineStipple" ) ); + vkCmdBindIndexBuffer2 = PFN_vkCmdBindIndexBuffer2( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer2" ) ); + vkGetRenderingAreaGranularity = PFN_vkGetRenderingAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderingAreaGranularity" ) ); + vkCmdSetRenderingAttachmentLocations = + PFN_vkCmdSetRenderingAttachmentLocations( vkGetDeviceProcAddr( device, "vkCmdSetRenderingAttachmentLocations" ) ); + vkCmdSetRenderingInputAttachmentIndices = + PFN_vkCmdSetRenderingInputAttachmentIndices( vkGetDeviceProcAddr( device, "vkCmdSetRenderingInputAttachmentIndices" ) ); + + //=== VK_KHR_swapchain === + vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ) ); + vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ) ); + vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ) ); + vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ) ); + vkQueuePresentKHR = PFN_vkQueuePresentKHR( vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ) ); + vkGetDeviceGroupPresentCapabilitiesKHR = + PFN_vkGetDeviceGroupPresentCapabilitiesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" ) ); + vkGetDeviceGroupSurfacePresentModesKHR = + PFN_vkGetDeviceGroupSurfacePresentModesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" ) ); + vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" ) ); + + //=== VK_KHR_display_swapchain === + vkCreateSharedSwapchainsKHR = PFN_vkCreateSharedSwapchainsKHR( vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ) ); + + //=== VK_EXT_debug_marker === + vkDebugMarkerSetObjectTagEXT = PFN_vkDebugMarkerSetObjectTagEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ) ); + vkDebugMarkerSetObjectNameEXT = PFN_vkDebugMarkerSetObjectNameEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ) ); + vkCmdDebugMarkerBeginEXT = PFN_vkCmdDebugMarkerBeginEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ) ); + vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ) ); + vkCmdDebugMarkerInsertEXT = PFN_vkCmdDebugMarkerInsertEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ) ); + + //=== VK_KHR_video_queue === + vkCreateVideoSessionKHR = PFN_vkCreateVideoSessionKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionKHR" ) ); + vkDestroyVideoSessionKHR = PFN_vkDestroyVideoSessionKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionKHR" ) ); + vkGetVideoSessionMemoryRequirementsKHR = + PFN_vkGetVideoSessionMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetVideoSessionMemoryRequirementsKHR" ) ); + vkBindVideoSessionMemoryKHR = PFN_vkBindVideoSessionMemoryKHR( vkGetDeviceProcAddr( device, "vkBindVideoSessionMemoryKHR" ) ); + vkCreateVideoSessionParametersKHR = PFN_vkCreateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionParametersKHR" ) ); + vkUpdateVideoSessionParametersKHR = PFN_vkUpdateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkUpdateVideoSessionParametersKHR" ) ); + vkDestroyVideoSessionParametersKHR = PFN_vkDestroyVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionParametersKHR" ) ); + vkCmdBeginVideoCodingKHR = PFN_vkCmdBeginVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginVideoCodingKHR" ) ); + vkCmdEndVideoCodingKHR = PFN_vkCmdEndVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdEndVideoCodingKHR" ) ); + vkCmdControlVideoCodingKHR = PFN_vkCmdControlVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdControlVideoCodingKHR" ) ); + + //=== VK_KHR_video_decode_queue === + vkCmdDecodeVideoKHR = PFN_vkCmdDecodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdDecodeVideoKHR" ) ); + + //=== VK_EXT_transform_feedback === + vkCmdBindTransformFeedbackBuffersEXT = + PFN_vkCmdBindTransformFeedbackBuffersEXT( vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" ) ); + vkCmdBeginTransformFeedbackEXT = PFN_vkCmdBeginTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" ) ); + vkCmdEndTransformFeedbackEXT = PFN_vkCmdEndTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" ) ); + vkCmdBeginQueryIndexedEXT = PFN_vkCmdBeginQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" ) ); + vkCmdEndQueryIndexedEXT = PFN_vkCmdEndQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" ) ); + vkCmdDrawIndirectByteCountEXT = PFN_vkCmdDrawIndirectByteCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" ) ); + + //=== VK_NVX_binary_import === + vkCreateCuModuleNVX = PFN_vkCreateCuModuleNVX( vkGetDeviceProcAddr( device, "vkCreateCuModuleNVX" ) ); + vkCreateCuFunctionNVX = PFN_vkCreateCuFunctionNVX( vkGetDeviceProcAddr( device, "vkCreateCuFunctionNVX" ) ); + vkDestroyCuModuleNVX = PFN_vkDestroyCuModuleNVX( vkGetDeviceProcAddr( device, "vkDestroyCuModuleNVX" ) ); + vkDestroyCuFunctionNVX = PFN_vkDestroyCuFunctionNVX( vkGetDeviceProcAddr( device, "vkDestroyCuFunctionNVX" ) ); + vkCmdCuLaunchKernelNVX = PFN_vkCmdCuLaunchKernelNVX( vkGetDeviceProcAddr( device, "vkCmdCuLaunchKernelNVX" ) ); + + //=== VK_NVX_image_view_handle === + vkGetImageViewHandleNVX = PFN_vkGetImageViewHandleNVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" ) ); + vkGetImageViewHandle64NVX = PFN_vkGetImageViewHandle64NVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandle64NVX" ) ); + vkGetImageViewAddressNVX = PFN_vkGetImageViewAddressNVX( vkGetDeviceProcAddr( device, "vkGetImageViewAddressNVX" ) ); + vkGetDeviceCombinedImageSamplerIndexNVX = + PFN_vkGetDeviceCombinedImageSamplerIndexNVX( vkGetDeviceProcAddr( device, "vkGetDeviceCombinedImageSamplerIndexNVX" ) ); + + //=== VK_AMD_draw_indirect_count === + vkCmdDrawIndirectCountAMD = PFN_vkCmdDrawIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD; + vkCmdDrawIndexedIndirectCountAMD = PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD; + + //=== VK_AMD_shader_info === + vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" ) ); + + //=== VK_KHR_dynamic_rendering === + vkCmdBeginRenderingKHR = PFN_vkCmdBeginRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderingKHR" ) ); + if ( !vkCmdBeginRendering ) + vkCmdBeginRendering = vkCmdBeginRenderingKHR; + vkCmdEndRenderingKHR = PFN_vkCmdEndRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderingKHR" ) ); + if ( !vkCmdEndRendering ) + vkCmdEndRendering = vkCmdEndRenderingKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + vkGetMemoryWin32HandleNV = PFN_vkGetMemoryWin32HandleNV( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_device_group === + vkGetDeviceGroupPeerMemoryFeaturesKHR = + PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) ); + if ( !vkGetDeviceGroupPeerMemoryFeatures ) + vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR; + vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHR" ) ); + if ( !vkCmdSetDeviceMask ) + vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR; + vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHR" ) ); + if ( !vkCmdDispatchBase ) + vkCmdDispatchBase = vkCmdDispatchBaseKHR; + + //=== VK_KHR_maintenance1 === + vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ) ); + if ( !vkTrimCommandPool ) + vkTrimCommandPool = vkTrimCommandPoolKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + vkGetMemoryWin32HandleKHR = PFN_vkGetMemoryWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ) ); + vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ) ); + vkGetMemoryFdPropertiesKHR = PFN_vkGetMemoryFdPropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + vkImportSemaphoreWin32HandleKHR = PFN_vkImportSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ) ); + vkGetSemaphoreWin32HandleKHR = PFN_vkGetSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ) ); + vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ) ); + + //=== VK_KHR_push_descriptor === + vkCmdPushDescriptorSetKHR = PFN_vkCmdPushDescriptorSetKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ) ); + if ( !vkCmdPushDescriptorSet ) + vkCmdPushDescriptorSet = vkCmdPushDescriptorSetKHR; + vkCmdPushDescriptorSetWithTemplateKHR = + PFN_vkCmdPushDescriptorSetWithTemplateKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ) ); + if ( !vkCmdPushDescriptorSetWithTemplate ) + vkCmdPushDescriptorSetWithTemplate = vkCmdPushDescriptorSetWithTemplateKHR; + + //=== VK_EXT_conditional_rendering === + vkCmdBeginConditionalRenderingEXT = PFN_vkCmdBeginConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" ) ); + vkCmdEndConditionalRenderingEXT = PFN_vkCmdEndConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" ) ); + + //=== VK_KHR_descriptor_update_template === + vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ) ); + if ( !vkCreateDescriptorUpdateTemplate ) + vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR; + vkDestroyDescriptorUpdateTemplateKHR = + PFN_vkDestroyDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ) ); + if ( !vkDestroyDescriptorUpdateTemplate ) + vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR; + vkUpdateDescriptorSetWithTemplateKHR = + PFN_vkUpdateDescriptorSetWithTemplateKHR( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ) ); + if ( !vkUpdateDescriptorSetWithTemplate ) + vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR; + + //=== VK_NV_clip_space_w_scaling === + vkCmdSetViewportWScalingNV = PFN_vkCmdSetViewportWScalingNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ) ); + + //=== VK_EXT_display_control === + vkDisplayPowerControlEXT = PFN_vkDisplayPowerControlEXT( vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ) ); + vkRegisterDeviceEventEXT = PFN_vkRegisterDeviceEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ) ); + vkRegisterDisplayEventEXT = PFN_vkRegisterDisplayEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ) ); + vkGetSwapchainCounterEXT = PFN_vkGetSwapchainCounterEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ) ); + + //=== VK_GOOGLE_display_timing === + vkGetRefreshCycleDurationGOOGLE = PFN_vkGetRefreshCycleDurationGOOGLE( vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ) ); + vkGetPastPresentationTimingGOOGLE = PFN_vkGetPastPresentationTimingGOOGLE( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ) ); + + //=== VK_EXT_discard_rectangles === + vkCmdSetDiscardRectangleEXT = PFN_vkCmdSetDiscardRectangleEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ) ); + vkCmdSetDiscardRectangleEnableEXT = PFN_vkCmdSetDiscardRectangleEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEnableEXT" ) ); + vkCmdSetDiscardRectangleModeEXT = PFN_vkCmdSetDiscardRectangleModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleModeEXT" ) ); + + //=== VK_EXT_hdr_metadata === + vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ) ); + + //=== VK_KHR_create_renderpass2 === + vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" ) ); + if ( !vkCreateRenderPass2 ) + vkCreateRenderPass2 = vkCreateRenderPass2KHR; + vkCmdBeginRenderPass2KHR = PFN_vkCmdBeginRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" ) ); + if ( !vkCmdBeginRenderPass2 ) + vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR; + vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" ) ); + if ( !vkCmdNextSubpass2 ) + vkCmdNextSubpass2 = vkCmdNextSubpass2KHR; + vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" ) ); + if ( !vkCmdEndRenderPass2 ) + vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR; + + //=== VK_KHR_shared_presentable_image === + vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + vkImportFenceWin32HandleKHR = PFN_vkImportFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ) ); + vkGetFenceWin32HandleKHR = PFN_vkGetFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ) ); + vkGetFenceFdKHR = PFN_vkGetFenceFdKHR( vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ) ); + + //=== VK_KHR_performance_query === + vkAcquireProfilingLockKHR = PFN_vkAcquireProfilingLockKHR( vkGetDeviceProcAddr( device, "vkAcquireProfilingLockKHR" ) ); + vkReleaseProfilingLockKHR = PFN_vkReleaseProfilingLockKHR( vkGetDeviceProcAddr( device, "vkReleaseProfilingLockKHR" ) ); + + //=== VK_EXT_debug_utils === + vkSetDebugUtilsObjectNameEXT = PFN_vkSetDebugUtilsObjectNameEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" ) ); + vkSetDebugUtilsObjectTagEXT = PFN_vkSetDebugUtilsObjectTagEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" ) ); + vkQueueBeginDebugUtilsLabelEXT = PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" ) ); + vkQueueEndDebugUtilsLabelEXT = PFN_vkQueueEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" ) ); + vkQueueInsertDebugUtilsLabelEXT = PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" ) ); + vkCmdBeginDebugUtilsLabelEXT = PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" ) ); + vkCmdEndDebugUtilsLabelEXT = PFN_vkCmdEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" ) ); + vkCmdInsertDebugUtilsLabelEXT = PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" ) ); + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + vkGetAndroidHardwareBufferPropertiesANDROID = + PFN_vkGetAndroidHardwareBufferPropertiesANDROID( vkGetDeviceProcAddr( device, "vkGetAndroidHardwareBufferPropertiesANDROID" ) ); + vkGetMemoryAndroidHardwareBufferANDROID = + PFN_vkGetMemoryAndroidHardwareBufferANDROID( vkGetDeviceProcAddr( device, "vkGetMemoryAndroidHardwareBufferANDROID" ) ); +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + vkCreateExecutionGraphPipelinesAMDX = PFN_vkCreateExecutionGraphPipelinesAMDX( vkGetDeviceProcAddr( device, "vkCreateExecutionGraphPipelinesAMDX" ) ); + vkGetExecutionGraphPipelineScratchSizeAMDX = + PFN_vkGetExecutionGraphPipelineScratchSizeAMDX( vkGetDeviceProcAddr( device, "vkGetExecutionGraphPipelineScratchSizeAMDX" ) ); + vkGetExecutionGraphPipelineNodeIndexAMDX = + PFN_vkGetExecutionGraphPipelineNodeIndexAMDX( vkGetDeviceProcAddr( device, "vkGetExecutionGraphPipelineNodeIndexAMDX" ) ); + vkCmdInitializeGraphScratchMemoryAMDX = + PFN_vkCmdInitializeGraphScratchMemoryAMDX( vkGetDeviceProcAddr( device, "vkCmdInitializeGraphScratchMemoryAMDX" ) ); + vkCmdDispatchGraphAMDX = PFN_vkCmdDispatchGraphAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphAMDX" ) ); + vkCmdDispatchGraphIndirectAMDX = PFN_vkCmdDispatchGraphIndirectAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphIndirectAMDX" ) ); + vkCmdDispatchGraphIndirectCountAMDX = PFN_vkCmdDispatchGraphIndirectCountAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphIndirectCountAMDX" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + vkWriteSamplerDescriptorsEXT = PFN_vkWriteSamplerDescriptorsEXT( vkGetDeviceProcAddr( device, "vkWriteSamplerDescriptorsEXT" ) ); + vkWriteResourceDescriptorsEXT = PFN_vkWriteResourceDescriptorsEXT( vkGetDeviceProcAddr( device, "vkWriteResourceDescriptorsEXT" ) ); + vkCmdBindSamplerHeapEXT = PFN_vkCmdBindSamplerHeapEXT( vkGetDeviceProcAddr( device, "vkCmdBindSamplerHeapEXT" ) ); + vkCmdBindResourceHeapEXT = PFN_vkCmdBindResourceHeapEXT( vkGetDeviceProcAddr( device, "vkCmdBindResourceHeapEXT" ) ); + vkCmdPushDataEXT = PFN_vkCmdPushDataEXT( vkGetDeviceProcAddr( device, "vkCmdPushDataEXT" ) ); + vkGetImageOpaqueCaptureDataEXT = PFN_vkGetImageOpaqueCaptureDataEXT( vkGetDeviceProcAddr( device, "vkGetImageOpaqueCaptureDataEXT" ) ); + vkRegisterCustomBorderColorEXT = PFN_vkRegisterCustomBorderColorEXT( vkGetDeviceProcAddr( device, "vkRegisterCustomBorderColorEXT" ) ); + vkUnregisterCustomBorderColorEXT = PFN_vkUnregisterCustomBorderColorEXT( vkGetDeviceProcAddr( device, "vkUnregisterCustomBorderColorEXT" ) ); + vkGetTensorOpaqueCaptureDataARM = PFN_vkGetTensorOpaqueCaptureDataARM( vkGetDeviceProcAddr( device, "vkGetTensorOpaqueCaptureDataARM" ) ); + + //=== VK_EXT_sample_locations === + vkCmdSetSampleLocationsEXT = PFN_vkCmdSetSampleLocationsEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" ) ); + + //=== VK_KHR_get_memory_requirements2 === + vkGetImageMemoryRequirements2KHR = PFN_vkGetImageMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ) ); + if ( !vkGetImageMemoryRequirements2 ) + vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR; + vkGetBufferMemoryRequirements2KHR = PFN_vkGetBufferMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ) ); + if ( !vkGetBufferMemoryRequirements2 ) + vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR; + vkGetImageSparseMemoryRequirements2KHR = + PFN_vkGetImageSparseMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ) ); + if ( !vkGetImageSparseMemoryRequirements2 ) + vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR; + + //=== VK_KHR_acceleration_structure === + vkCreateAccelerationStructureKHR = PFN_vkCreateAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureKHR" ) ); + vkDestroyAccelerationStructureKHR = PFN_vkDestroyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureKHR" ) ); + vkCmdBuildAccelerationStructuresKHR = PFN_vkCmdBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresKHR" ) ); + vkCmdBuildAccelerationStructuresIndirectKHR = + PFN_vkCmdBuildAccelerationStructuresIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresIndirectKHR" ) ); + vkBuildAccelerationStructuresKHR = PFN_vkBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkBuildAccelerationStructuresKHR" ) ); + vkCopyAccelerationStructureKHR = PFN_vkCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureKHR" ) ); + vkCopyAccelerationStructureToMemoryKHR = + PFN_vkCopyAccelerationStructureToMemoryKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureToMemoryKHR" ) ); + vkCopyMemoryToAccelerationStructureKHR = + PFN_vkCopyMemoryToAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyMemoryToAccelerationStructureKHR" ) ); + vkWriteAccelerationStructuresPropertiesKHR = + PFN_vkWriteAccelerationStructuresPropertiesKHR( vkGetDeviceProcAddr( device, "vkWriteAccelerationStructuresPropertiesKHR" ) ); + vkCmdCopyAccelerationStructureKHR = PFN_vkCmdCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureKHR" ) ); + vkCmdCopyAccelerationStructureToMemoryKHR = + PFN_vkCmdCopyAccelerationStructureToMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureToMemoryKHR" ) ); + vkCmdCopyMemoryToAccelerationStructureKHR = + PFN_vkCmdCopyMemoryToAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToAccelerationStructureKHR" ) ); + vkGetAccelerationStructureDeviceAddressKHR = + PFN_vkGetAccelerationStructureDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureDeviceAddressKHR" ) ); + vkCmdWriteAccelerationStructuresPropertiesKHR = + PFN_vkCmdWriteAccelerationStructuresPropertiesKHR( vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) ); + vkGetDeviceAccelerationStructureCompatibilityKHR = + PFN_vkGetDeviceAccelerationStructureCompatibilityKHR( vkGetDeviceProcAddr( device, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) ); + vkGetAccelerationStructureBuildSizesKHR = + PFN_vkGetAccelerationStructureBuildSizesKHR( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureBuildSizesKHR" ) ); + + //=== VK_KHR_ray_tracing_pipeline === + vkCmdTraceRaysKHR = PFN_vkCmdTraceRaysKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysKHR" ) ); + vkCreateRayTracingPipelinesKHR = PFN_vkCreateRayTracingPipelinesKHR( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesKHR" ) ); + vkGetRayTracingShaderGroupHandlesKHR = + PFN_vkGetRayTracingShaderGroupHandlesKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesKHR" ) ); + vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = + PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) ); + vkCmdTraceRaysIndirectKHR = PFN_vkCmdTraceRaysIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirectKHR" ) ); + vkGetRayTracingShaderGroupStackSizeKHR = + PFN_vkGetRayTracingShaderGroupStackSizeKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupStackSizeKHR" ) ); + vkCmdSetRayTracingPipelineStackSizeKHR = + PFN_vkCmdSetRayTracingPipelineStackSizeKHR( vkGetDeviceProcAddr( device, "vkCmdSetRayTracingPipelineStackSizeKHR" ) ); + + //=== VK_KHR_sampler_ycbcr_conversion === + vkCreateSamplerYcbcrConversionKHR = PFN_vkCreateSamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversionKHR" ) ); + if ( !vkCreateSamplerYcbcrConversion ) + vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR; + vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversionKHR" ) ); + if ( !vkDestroySamplerYcbcrConversion ) + vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR; + + //=== VK_KHR_bind_memory2 === + vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHR" ) ); + if ( !vkBindBufferMemory2 ) + vkBindBufferMemory2 = vkBindBufferMemory2KHR; + vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetDeviceProcAddr( device, "vkBindImageMemory2KHR" ) ); + if ( !vkBindImageMemory2 ) + vkBindImageMemory2 = vkBindImageMemory2KHR; + + //=== VK_EXT_image_drm_format_modifier === + vkGetImageDrmFormatModifierPropertiesEXT = + PFN_vkGetImageDrmFormatModifierPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" ) ); + + //=== VK_EXT_validation_cache === + vkCreateValidationCacheEXT = PFN_vkCreateValidationCacheEXT( vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" ) ); + vkDestroyValidationCacheEXT = PFN_vkDestroyValidationCacheEXT( vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" ) ); + vkMergeValidationCachesEXT = PFN_vkMergeValidationCachesEXT( vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" ) ); + vkGetValidationCacheDataEXT = PFN_vkGetValidationCacheDataEXT( vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" ) ); + + //=== VK_NV_shading_rate_image === + vkCmdBindShadingRateImageNV = PFN_vkCmdBindShadingRateImageNV( vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" ) ); + vkCmdSetViewportShadingRatePaletteNV = + PFN_vkCmdSetViewportShadingRatePaletteNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" ) ); + vkCmdSetCoarseSampleOrderNV = PFN_vkCmdSetCoarseSampleOrderNV( vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" ) ); + + //=== VK_NV_ray_tracing === + vkCreateAccelerationStructureNV = PFN_vkCreateAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" ) ); + vkDestroyAccelerationStructureNV = PFN_vkDestroyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" ) ); + vkGetAccelerationStructureMemoryRequirementsNV = + PFN_vkGetAccelerationStructureMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" ) ); + vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV( vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" ) ); + vkCmdBuildAccelerationStructureNV = PFN_vkCmdBuildAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" ) ); + vkCmdCopyAccelerationStructureNV = PFN_vkCmdCopyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" ) ); + vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" ) ); + vkCreateRayTracingPipelinesNV = PFN_vkCreateRayTracingPipelinesNV( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" ) ); + vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" ) ); + if ( !vkGetRayTracingShaderGroupHandlesKHR ) + vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV; + vkGetAccelerationStructureHandleNV = PFN_vkGetAccelerationStructureHandleNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" ) ); + vkCmdWriteAccelerationStructuresPropertiesNV = + PFN_vkCmdWriteAccelerationStructuresPropertiesNV( vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" ) ); + vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetDeviceProcAddr( device, "vkCompileDeferredNV" ) ); + + //=== VK_KHR_maintenance3 === + vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupportKHR" ) ); + if ( !vkGetDescriptorSetLayoutSupport ) + vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR; + + //=== VK_KHR_draw_indirect_count === + vkCmdDrawIndirectCountKHR = PFN_vkCmdDrawIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR; + vkCmdDrawIndexedIndirectCountKHR = PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR; + + //=== VK_EXT_external_memory_host === + vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" ) ); + + //=== VK_AMD_buffer_marker === + vkCmdWriteBufferMarkerAMD = PFN_vkCmdWriteBufferMarkerAMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" ) ); + vkCmdWriteBufferMarker2AMD = PFN_vkCmdWriteBufferMarker2AMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarker2AMD" ) ); + + //=== VK_EXT_calibrated_timestamps === + vkGetCalibratedTimestampsEXT = PFN_vkGetCalibratedTimestampsEXT( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" ) ); + if ( !vkGetCalibratedTimestampsKHR ) + vkGetCalibratedTimestampsKHR = vkGetCalibratedTimestampsEXT; + + //=== VK_NV_mesh_shader === + vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" ) ); + vkCmdDrawMeshTasksIndirectNV = PFN_vkCmdDrawMeshTasksIndirectNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" ) ); + vkCmdDrawMeshTasksIndirectCountNV = PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" ) ); + + //=== VK_NV_scissor_exclusive === + vkCmdSetExclusiveScissorEnableNV = PFN_vkCmdSetExclusiveScissorEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorEnableNV" ) ); + vkCmdSetExclusiveScissorNV = PFN_vkCmdSetExclusiveScissorNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" ) ); + + //=== VK_NV_device_diagnostic_checkpoints === + vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" ) ); + vkGetQueueCheckpointDataNV = PFN_vkGetQueueCheckpointDataNV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" ) ); + vkGetQueueCheckpointData2NV = PFN_vkGetQueueCheckpointData2NV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointData2NV" ) ); + + //=== VK_KHR_timeline_semaphore === + vkGetSemaphoreCounterValueKHR = PFN_vkGetSemaphoreCounterValueKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValueKHR" ) ); + if ( !vkGetSemaphoreCounterValue ) + vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR; + vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetDeviceProcAddr( device, "vkWaitSemaphoresKHR" ) ); + if ( !vkWaitSemaphores ) + vkWaitSemaphores = vkWaitSemaphoresKHR; + vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetDeviceProcAddr( device, "vkSignalSemaphoreKHR" ) ); + if ( !vkSignalSemaphore ) + vkSignalSemaphore = vkSignalSemaphoreKHR; + + //=== VK_EXT_present_timing === + vkSetSwapchainPresentTimingQueueSizeEXT = + PFN_vkSetSwapchainPresentTimingQueueSizeEXT( vkGetDeviceProcAddr( device, "vkSetSwapchainPresentTimingQueueSizeEXT" ) ); + vkGetSwapchainTimingPropertiesEXT = PFN_vkGetSwapchainTimingPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainTimingPropertiesEXT" ) ); + vkGetSwapchainTimeDomainPropertiesEXT = + PFN_vkGetSwapchainTimeDomainPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainTimeDomainPropertiesEXT" ) ); + vkGetPastPresentationTimingEXT = PFN_vkGetPastPresentationTimingEXT( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingEXT" ) ); + + //=== VK_INTEL_performance_query === + vkInitializePerformanceApiINTEL = PFN_vkInitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" ) ); + vkUninitializePerformanceApiINTEL = PFN_vkUninitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" ) ); + vkCmdSetPerformanceMarkerINTEL = PFN_vkCmdSetPerformanceMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" ) ); + vkCmdSetPerformanceStreamMarkerINTEL = + PFN_vkCmdSetPerformanceStreamMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" ) ); + vkCmdSetPerformanceOverrideINTEL = PFN_vkCmdSetPerformanceOverrideINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" ) ); + vkAcquirePerformanceConfigurationINTEL = + PFN_vkAcquirePerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" ) ); + vkReleasePerformanceConfigurationINTEL = + PFN_vkReleasePerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" ) ); + vkQueueSetPerformanceConfigurationINTEL = + PFN_vkQueueSetPerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" ) ); + vkGetPerformanceParameterINTEL = PFN_vkGetPerformanceParameterINTEL( vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" ) ); + + //=== VK_AMD_display_native_hdr === + vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" ) ); + + //=== VK_KHR_fragment_shading_rate === + vkCmdSetFragmentShadingRateKHR = PFN_vkCmdSetFragmentShadingRateKHR( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateKHR" ) ); + + //=== VK_KHR_dynamic_rendering_local_read === + vkCmdSetRenderingAttachmentLocationsKHR = + PFN_vkCmdSetRenderingAttachmentLocationsKHR( vkGetDeviceProcAddr( device, "vkCmdSetRenderingAttachmentLocationsKHR" ) ); + if ( !vkCmdSetRenderingAttachmentLocations ) + vkCmdSetRenderingAttachmentLocations = vkCmdSetRenderingAttachmentLocationsKHR; + vkCmdSetRenderingInputAttachmentIndicesKHR = + PFN_vkCmdSetRenderingInputAttachmentIndicesKHR( vkGetDeviceProcAddr( device, "vkCmdSetRenderingInputAttachmentIndicesKHR" ) ); + if ( !vkCmdSetRenderingInputAttachmentIndices ) + vkCmdSetRenderingInputAttachmentIndices = vkCmdSetRenderingInputAttachmentIndicesKHR; + + //=== VK_EXT_buffer_device_address === + vkGetBufferDeviceAddressEXT = PFN_vkGetBufferDeviceAddressEXT( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT; + + //=== VK_KHR_present_wait === + vkWaitForPresentKHR = PFN_vkWaitForPresentKHR( vkGetDeviceProcAddr( device, "vkWaitForPresentKHR" ) ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkAcquireFullScreenExclusiveModeEXT" ) ); + vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkReleaseFullScreenExclusiveModeEXT" ) ); + vkGetDeviceGroupSurfacePresentModes2EXT = + PFN_vkGetDeviceGroupSurfacePresentModes2EXT( vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" ) ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_buffer_device_address === + vkGetBufferDeviceAddressKHR = PFN_vkGetBufferDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressKHR" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR; + vkGetBufferOpaqueCaptureAddressKHR = PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddressKHR" ) ); + if ( !vkGetBufferOpaqueCaptureAddress ) + vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR; + vkGetDeviceMemoryOpaqueCaptureAddressKHR = + PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) ); + if ( !vkGetDeviceMemoryOpaqueCaptureAddress ) + vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR; + + //=== VK_EXT_line_rasterization === + vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" ) ); + if ( !vkCmdSetLineStipple ) + vkCmdSetLineStipple = vkCmdSetLineStippleEXT; + + //=== VK_EXT_host_query_reset === + vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" ) ); + if ( !vkResetQueryPool ) + vkResetQueryPool = vkResetQueryPoolEXT; + + //=== VK_EXT_extended_dynamic_state === + vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetCullModeEXT" ) ); + if ( !vkCmdSetCullMode ) + vkCmdSetCullMode = vkCmdSetCullModeEXT; + vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetDeviceProcAddr( device, "vkCmdSetFrontFaceEXT" ) ); + if ( !vkCmdSetFrontFace ) + vkCmdSetFrontFace = vkCmdSetFrontFaceEXT; + vkCmdSetPrimitiveTopologyEXT = PFN_vkCmdSetPrimitiveTopologyEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopologyEXT" ) ); + if ( !vkCmdSetPrimitiveTopology ) + vkCmdSetPrimitiveTopology = vkCmdSetPrimitiveTopologyEXT; + vkCmdSetViewportWithCountEXT = PFN_vkCmdSetViewportWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCountEXT" ) ); + if ( !vkCmdSetViewportWithCount ) + vkCmdSetViewportWithCount = vkCmdSetViewportWithCountEXT; + vkCmdSetScissorWithCountEXT = PFN_vkCmdSetScissorWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCountEXT" ) ); + if ( !vkCmdSetScissorWithCount ) + vkCmdSetScissorWithCount = vkCmdSetScissorWithCountEXT; + vkCmdBindVertexBuffers2EXT = PFN_vkCmdBindVertexBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2EXT" ) ); + if ( !vkCmdBindVertexBuffers2 ) + vkCmdBindVertexBuffers2 = vkCmdBindVertexBuffers2EXT; + vkCmdSetDepthTestEnableEXT = PFN_vkCmdSetDepthTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnableEXT" ) ); + if ( !vkCmdSetDepthTestEnable ) + vkCmdSetDepthTestEnable = vkCmdSetDepthTestEnableEXT; + vkCmdSetDepthWriteEnableEXT = PFN_vkCmdSetDepthWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnableEXT" ) ); + if ( !vkCmdSetDepthWriteEnable ) + vkCmdSetDepthWriteEnable = vkCmdSetDepthWriteEnableEXT; + vkCmdSetDepthCompareOpEXT = PFN_vkCmdSetDepthCompareOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOpEXT" ) ); + if ( !vkCmdSetDepthCompareOp ) + vkCmdSetDepthCompareOp = vkCmdSetDepthCompareOpEXT; + vkCmdSetDepthBoundsTestEnableEXT = PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnableEXT" ) ); + if ( !vkCmdSetDepthBoundsTestEnable ) + vkCmdSetDepthBoundsTestEnable = vkCmdSetDepthBoundsTestEnableEXT; + vkCmdSetStencilTestEnableEXT = PFN_vkCmdSetStencilTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnableEXT" ) ); + if ( !vkCmdSetStencilTestEnable ) + vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT; + vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilOpEXT" ) ); + if ( !vkCmdSetStencilOp ) + vkCmdSetStencilOp = vkCmdSetStencilOpEXT; + + //=== VK_KHR_deferred_host_operations === + vkCreateDeferredOperationKHR = PFN_vkCreateDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkCreateDeferredOperationKHR" ) ); + vkDestroyDeferredOperationKHR = PFN_vkDestroyDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkDestroyDeferredOperationKHR" ) ); + vkGetDeferredOperationMaxConcurrencyKHR = + PFN_vkGetDeferredOperationMaxConcurrencyKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationMaxConcurrencyKHR" ) ); + vkGetDeferredOperationResultKHR = PFN_vkGetDeferredOperationResultKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationResultKHR" ) ); + vkDeferredOperationJoinKHR = PFN_vkDeferredOperationJoinKHR( vkGetDeviceProcAddr( device, "vkDeferredOperationJoinKHR" ) ); + + //=== VK_KHR_pipeline_executable_properties === + vkGetPipelineExecutablePropertiesKHR = + PFN_vkGetPipelineExecutablePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" ) ); + vkGetPipelineExecutableStatisticsKHR = + PFN_vkGetPipelineExecutableStatisticsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" ) ); + vkGetPipelineExecutableInternalRepresentationsKHR = + PFN_vkGetPipelineExecutableInternalRepresentationsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); + + //=== VK_EXT_host_image_copy === + vkCopyMemoryToImageEXT = PFN_vkCopyMemoryToImageEXT( vkGetDeviceProcAddr( device, "vkCopyMemoryToImageEXT" ) ); + if ( !vkCopyMemoryToImage ) + vkCopyMemoryToImage = vkCopyMemoryToImageEXT; + vkCopyImageToMemoryEXT = PFN_vkCopyImageToMemoryEXT( vkGetDeviceProcAddr( device, "vkCopyImageToMemoryEXT" ) ); + if ( !vkCopyImageToMemory ) + vkCopyImageToMemory = vkCopyImageToMemoryEXT; + vkCopyImageToImageEXT = PFN_vkCopyImageToImageEXT( vkGetDeviceProcAddr( device, "vkCopyImageToImageEXT" ) ); + if ( !vkCopyImageToImage ) + vkCopyImageToImage = vkCopyImageToImageEXT; + vkTransitionImageLayoutEXT = PFN_vkTransitionImageLayoutEXT( vkGetDeviceProcAddr( device, "vkTransitionImageLayoutEXT" ) ); + if ( !vkTransitionImageLayout ) + vkTransitionImageLayout = vkTransitionImageLayoutEXT; + vkGetImageSubresourceLayout2EXT = PFN_vkGetImageSubresourceLayout2EXT( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2EXT" ) ); + if ( !vkGetImageSubresourceLayout2 ) + vkGetImageSubresourceLayout2 = vkGetImageSubresourceLayout2EXT; + + //=== VK_KHR_map_memory2 === + vkMapMemory2KHR = PFN_vkMapMemory2KHR( vkGetDeviceProcAddr( device, "vkMapMemory2KHR" ) ); + if ( !vkMapMemory2 ) + vkMapMemory2 = vkMapMemory2KHR; + vkUnmapMemory2KHR = PFN_vkUnmapMemory2KHR( vkGetDeviceProcAddr( device, "vkUnmapMemory2KHR" ) ); + if ( !vkUnmapMemory2 ) + vkUnmapMemory2 = vkUnmapMemory2KHR; + + //=== VK_EXT_swapchain_maintenance1 === + vkReleaseSwapchainImagesEXT = PFN_vkReleaseSwapchainImagesEXT( vkGetDeviceProcAddr( device, "vkReleaseSwapchainImagesEXT" ) ); + if ( !vkReleaseSwapchainImagesKHR ) + vkReleaseSwapchainImagesKHR = vkReleaseSwapchainImagesEXT; + + //=== VK_NV_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsNV = + PFN_vkGetGeneratedCommandsMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsNV" ) ); + vkCmdPreprocessGeneratedCommandsNV = PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsNV" ) ); + vkCmdExecuteGeneratedCommandsNV = PFN_vkCmdExecuteGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsNV" ) ); + vkCmdBindPipelineShaderGroupNV = PFN_vkCmdBindPipelineShaderGroupNV( vkGetDeviceProcAddr( device, "vkCmdBindPipelineShaderGroupNV" ) ); + vkCreateIndirectCommandsLayoutNV = PFN_vkCreateIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNV" ) ); + vkDestroyIndirectCommandsLayoutNV = PFN_vkDestroyIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNV" ) ); + + //=== VK_EXT_depth_bias_control === + vkCmdSetDepthBias2EXT = PFN_vkCmdSetDepthBias2EXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias2EXT" ) ); + + //=== VK_EXT_private_data === + vkCreatePrivateDataSlotEXT = PFN_vkCreatePrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlotEXT" ) ); + if ( !vkCreatePrivateDataSlot ) + vkCreatePrivateDataSlot = vkCreatePrivateDataSlotEXT; + vkDestroyPrivateDataSlotEXT = PFN_vkDestroyPrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlotEXT" ) ); + if ( !vkDestroyPrivateDataSlot ) + vkDestroyPrivateDataSlot = vkDestroyPrivateDataSlotEXT; + vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkSetPrivateDataEXT" ) ); + if ( !vkSetPrivateData ) + vkSetPrivateData = vkSetPrivateDataEXT; + vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkGetPrivateDataEXT" ) ); + if ( !vkGetPrivateData ) + vkGetPrivateData = vkGetPrivateDataEXT; + + //=== VK_KHR_video_encode_queue === + vkGetEncodedVideoSessionParametersKHR = + PFN_vkGetEncodedVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkGetEncodedVideoSessionParametersKHR" ) ); + vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdEncodeVideoKHR" ) ); + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + vkCreateCudaModuleNV = PFN_vkCreateCudaModuleNV( vkGetDeviceProcAddr( device, "vkCreateCudaModuleNV" ) ); + vkGetCudaModuleCacheNV = PFN_vkGetCudaModuleCacheNV( vkGetDeviceProcAddr( device, "vkGetCudaModuleCacheNV" ) ); + vkCreateCudaFunctionNV = PFN_vkCreateCudaFunctionNV( vkGetDeviceProcAddr( device, "vkCreateCudaFunctionNV" ) ); + vkDestroyCudaModuleNV = PFN_vkDestroyCudaModuleNV( vkGetDeviceProcAddr( device, "vkDestroyCudaModuleNV" ) ); + vkDestroyCudaFunctionNV = PFN_vkDestroyCudaFunctionNV( vkGetDeviceProcAddr( device, "vkDestroyCudaFunctionNV" ) ); + vkCmdCudaLaunchKernelNV = PFN_vkCmdCudaLaunchKernelNV( vkGetDeviceProcAddr( device, "vkCmdCudaLaunchKernelNV" ) ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + vkCmdDispatchTileQCOM = PFN_vkCmdDispatchTileQCOM( vkGetDeviceProcAddr( device, "vkCmdDispatchTileQCOM" ) ); + vkCmdBeginPerTileExecutionQCOM = PFN_vkCmdBeginPerTileExecutionQCOM( vkGetDeviceProcAddr( device, "vkCmdBeginPerTileExecutionQCOM" ) ); + vkCmdEndPerTileExecutionQCOM = PFN_vkCmdEndPerTileExecutionQCOM( vkGetDeviceProcAddr( device, "vkCmdEndPerTileExecutionQCOM" ) ); + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + vkExportMetalObjectsEXT = PFN_vkExportMetalObjectsEXT( vkGetDeviceProcAddr( device, "vkExportMetalObjectsEXT" ) ); +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_synchronization2 === + vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdSetEvent2KHR" ) ); + if ( !vkCmdSetEvent2 ) + vkCmdSetEvent2 = vkCmdSetEvent2KHR; + vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdResetEvent2KHR" ) ); + if ( !vkCmdResetEvent2 ) + vkCmdResetEvent2 = vkCmdResetEvent2KHR; + vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2KHR" ) ); + if ( !vkCmdWaitEvents2 ) + vkCmdWaitEvents2 = vkCmdWaitEvents2KHR; + vkCmdPipelineBarrier2KHR = PFN_vkCmdPipelineBarrier2KHR( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2KHR" ) ); + if ( !vkCmdPipelineBarrier2 ) + vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR; + vkCmdWriteTimestamp2KHR = PFN_vkCmdWriteTimestamp2KHR( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2KHR" ) ); + if ( !vkCmdWriteTimestamp2 ) + vkCmdWriteTimestamp2 = vkCmdWriteTimestamp2KHR; + vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetDeviceProcAddr( device, "vkQueueSubmit2KHR" ) ); + if ( !vkQueueSubmit2 ) + vkQueueSubmit2 = vkQueueSubmit2KHR; + + //=== VK_EXT_descriptor_buffer === + vkGetDescriptorSetLayoutSizeEXT = PFN_vkGetDescriptorSetLayoutSizeEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSizeEXT" ) ); + vkGetDescriptorSetLayoutBindingOffsetEXT = + PFN_vkGetDescriptorSetLayoutBindingOffsetEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutBindingOffsetEXT" ) ); + vkGetDescriptorEXT = PFN_vkGetDescriptorEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorEXT" ) ); + vkCmdBindDescriptorBuffersEXT = PFN_vkCmdBindDescriptorBuffersEXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBuffersEXT" ) ); + vkCmdSetDescriptorBufferOffsetsEXT = PFN_vkCmdSetDescriptorBufferOffsetsEXT( vkGetDeviceProcAddr( device, "vkCmdSetDescriptorBufferOffsetsEXT" ) ); + vkCmdBindDescriptorBufferEmbeddedSamplersEXT = + PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT" ) ); + vkGetBufferOpaqueCaptureDescriptorDataEXT = + PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureDescriptorDataEXT" ) ); + vkGetImageOpaqueCaptureDescriptorDataEXT = + PFN_vkGetImageOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetImageOpaqueCaptureDescriptorDataEXT" ) ); + vkGetImageViewOpaqueCaptureDescriptorDataEXT = + PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetImageViewOpaqueCaptureDescriptorDataEXT" ) ); + vkGetSamplerOpaqueCaptureDescriptorDataEXT = + PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetSamplerOpaqueCaptureDescriptorDataEXT" ) ); + vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( + vkGetDeviceProcAddr( device, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT" ) ); + + //=== VK_KHR_device_address_commands === + vkCmdBindIndexBuffer3KHR = PFN_vkCmdBindIndexBuffer3KHR( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer3KHR" ) ); + vkCmdBindVertexBuffers3KHR = PFN_vkCmdBindVertexBuffers3KHR( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers3KHR" ) ); + vkCmdDrawIndirect2KHR = PFN_vkCmdDrawIndirect2KHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect2KHR" ) ); + vkCmdDrawIndexedIndirect2KHR = PFN_vkCmdDrawIndexedIndirect2KHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect2KHR" ) ); + vkCmdDispatchIndirect2KHR = PFN_vkCmdDispatchIndirect2KHR( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect2KHR" ) ); + vkCmdCopyMemoryKHR = PFN_vkCmdCopyMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryKHR" ) ); + vkCmdCopyMemoryToImageKHR = PFN_vkCmdCopyMemoryToImageKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToImageKHR" ) ); + vkCmdCopyImageToMemoryKHR = PFN_vkCmdCopyImageToMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToMemoryKHR" ) ); + vkCmdUpdateMemoryKHR = PFN_vkCmdUpdateMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdUpdateMemoryKHR" ) ); + vkCmdFillMemoryKHR = PFN_vkCmdFillMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdFillMemoryKHR" ) ); + vkCmdCopyQueryPoolResultsToMemoryKHR = + PFN_vkCmdCopyQueryPoolResultsToMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResultsToMemoryKHR" ) ); + vkCmdDrawIndirectCount2KHR = PFN_vkCmdDrawIndirectCount2KHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount2KHR" ) ); + vkCmdDrawIndexedIndirectCount2KHR = PFN_vkCmdDrawIndexedIndirectCount2KHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount2KHR" ) ); + vkCmdBeginConditionalRendering2EXT = PFN_vkCmdBeginConditionalRendering2EXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRendering2EXT" ) ); + vkCmdBindTransformFeedbackBuffers2EXT = + PFN_vkCmdBindTransformFeedbackBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffers2EXT" ) ); + vkCmdBeginTransformFeedback2EXT = PFN_vkCmdBeginTransformFeedback2EXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedback2EXT" ) ); + vkCmdEndTransformFeedback2EXT = PFN_vkCmdEndTransformFeedback2EXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedback2EXT" ) ); + vkCmdDrawIndirectByteCount2EXT = PFN_vkCmdDrawIndirectByteCount2EXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCount2EXT" ) ); + vkCmdDrawMeshTasksIndirect2EXT = PFN_vkCmdDrawMeshTasksIndirect2EXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirect2EXT" ) ); + vkCmdDrawMeshTasksIndirectCount2EXT = PFN_vkCmdDrawMeshTasksIndirectCount2EXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCount2EXT" ) ); + vkCmdWriteMarkerToMemoryAMD = PFN_vkCmdWriteMarkerToMemoryAMD( vkGetDeviceProcAddr( device, "vkCmdWriteMarkerToMemoryAMD" ) ); + vkCreateAccelerationStructure2KHR = PFN_vkCreateAccelerationStructure2KHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructure2KHR" ) ); + + //=== VK_NV_fragment_shading_rate_enums === + vkCmdSetFragmentShadingRateEnumNV = PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateEnumNV" ) ); + + //=== VK_EXT_mesh_shader === + vkCmdDrawMeshTasksEXT = PFN_vkCmdDrawMeshTasksEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksEXT" ) ); + vkCmdDrawMeshTasksIndirectEXT = PFN_vkCmdDrawMeshTasksIndirectEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectEXT" ) ); + vkCmdDrawMeshTasksIndirectCountEXT = PFN_vkCmdDrawMeshTasksIndirectCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountEXT" ) ); + + //=== VK_KHR_copy_commands2 === + vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2KHR" ) ); + if ( !vkCmdCopyBuffer2 ) + vkCmdCopyBuffer2 = vkCmdCopyBuffer2KHR; + vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImage2KHR" ) ); + if ( !vkCmdCopyImage2 ) + vkCmdCopyImage2 = vkCmdCopyImage2KHR; + vkCmdCopyBufferToImage2KHR = PFN_vkCmdCopyBufferToImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2KHR" ) ); + if ( !vkCmdCopyBufferToImage2 ) + vkCmdCopyBufferToImage2 = vkCmdCopyBufferToImage2KHR; + vkCmdCopyImageToBuffer2KHR = PFN_vkCmdCopyImageToBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2KHR" ) ); + if ( !vkCmdCopyImageToBuffer2 ) + vkCmdCopyImageToBuffer2 = vkCmdCopyImageToBuffer2KHR; + vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetDeviceProcAddr( device, "vkCmdBlitImage2KHR" ) ); + if ( !vkCmdBlitImage2 ) + vkCmdBlitImage2 = vkCmdBlitImage2KHR; + vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetDeviceProcAddr( device, "vkCmdResolveImage2KHR" ) ); + if ( !vkCmdResolveImage2 ) + vkCmdResolveImage2 = vkCmdResolveImage2KHR; + + //=== VK_EXT_device_fault === + vkGetDeviceFaultInfoEXT = PFN_vkGetDeviceFaultInfoEXT( vkGetDeviceProcAddr( device, "vkGetDeviceFaultInfoEXT" ) ); + + //=== VK_EXT_vertex_input_dynamic_state === + vkCmdSetVertexInputEXT = PFN_vkCmdSetVertexInputEXT( vkGetDeviceProcAddr( device, "vkCmdSetVertexInputEXT" ) ); + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + vkGetMemoryZirconHandleFUCHSIA = PFN_vkGetMemoryZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandleFUCHSIA" ) ); + vkGetMemoryZirconHandlePropertiesFUCHSIA = + PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandlePropertiesFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + vkImportSemaphoreZirconHandleFUCHSIA = + PFN_vkImportSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkImportSemaphoreZirconHandleFUCHSIA" ) ); + vkGetSemaphoreZirconHandleFUCHSIA = PFN_vkGetSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetSemaphoreZirconHandleFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + vkCreateBufferCollectionFUCHSIA = PFN_vkCreateBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkCreateBufferCollectionFUCHSIA" ) ); + vkSetBufferCollectionImageConstraintsFUCHSIA = + PFN_vkSetBufferCollectionImageConstraintsFUCHSIA( vkGetDeviceProcAddr( device, "vkSetBufferCollectionImageConstraintsFUCHSIA" ) ); + vkSetBufferCollectionBufferConstraintsFUCHSIA = + PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA( vkGetDeviceProcAddr( device, "vkSetBufferCollectionBufferConstraintsFUCHSIA" ) ); + vkDestroyBufferCollectionFUCHSIA = PFN_vkDestroyBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkDestroyBufferCollectionFUCHSIA" ) ); + vkGetBufferCollectionPropertiesFUCHSIA = + PFN_vkGetBufferCollectionPropertiesFUCHSIA( vkGetDeviceProcAddr( device, "vkGetBufferCollectionPropertiesFUCHSIA" ) ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = + PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( vkGetDeviceProcAddr( device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" ) ); + vkCmdSubpassShadingHUAWEI = PFN_vkCmdSubpassShadingHUAWEI( vkGetDeviceProcAddr( device, "vkCmdSubpassShadingHUAWEI" ) ); + + //=== VK_HUAWEI_invocation_mask === + vkCmdBindInvocationMaskHUAWEI = PFN_vkCmdBindInvocationMaskHUAWEI( vkGetDeviceProcAddr( device, "vkCmdBindInvocationMaskHUAWEI" ) ); + + //=== VK_NV_external_memory_rdma === + vkGetMemoryRemoteAddressNV = PFN_vkGetMemoryRemoteAddressNV( vkGetDeviceProcAddr( device, "vkGetMemoryRemoteAddressNV" ) ); + + //=== VK_EXT_pipeline_properties === + vkGetPipelinePropertiesEXT = PFN_vkGetPipelinePropertiesEXT( vkGetDeviceProcAddr( device, "vkGetPipelinePropertiesEXT" ) ); + + //=== VK_EXT_extended_dynamic_state2 === + vkCmdSetPatchControlPointsEXT = PFN_vkCmdSetPatchControlPointsEXT( vkGetDeviceProcAddr( device, "vkCmdSetPatchControlPointsEXT" ) ); + vkCmdSetRasterizerDiscardEnableEXT = PFN_vkCmdSetRasterizerDiscardEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnableEXT" ) ); + if ( !vkCmdSetRasterizerDiscardEnable ) + vkCmdSetRasterizerDiscardEnable = vkCmdSetRasterizerDiscardEnableEXT; + vkCmdSetDepthBiasEnableEXT = PFN_vkCmdSetDepthBiasEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnableEXT" ) ); + if ( !vkCmdSetDepthBiasEnable ) + vkCmdSetDepthBiasEnable = vkCmdSetDepthBiasEnableEXT; + vkCmdSetLogicOpEXT = PFN_vkCmdSetLogicOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEXT" ) ); + vkCmdSetPrimitiveRestartEnableEXT = PFN_vkCmdSetPrimitiveRestartEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnableEXT" ) ); + if ( !vkCmdSetPrimitiveRestartEnable ) + vkCmdSetPrimitiveRestartEnable = vkCmdSetPrimitiveRestartEnableEXT; + + //=== VK_EXT_color_write_enable === + vkCmdSetColorWriteEnableEXT = PFN_vkCmdSetColorWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteEnableEXT" ) ); + + //=== VK_KHR_ray_tracing_maintenance1 === + vkCmdTraceRaysIndirect2KHR = PFN_vkCmdTraceRaysIndirect2KHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirect2KHR" ) ); + + //=== VK_EXT_multi_draw === + vkCmdDrawMultiEXT = PFN_vkCmdDrawMultiEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiEXT" ) ); + vkCmdDrawMultiIndexedEXT = PFN_vkCmdDrawMultiIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiIndexedEXT" ) ); + + //=== VK_EXT_opacity_micromap === + vkCreateMicromapEXT = PFN_vkCreateMicromapEXT( vkGetDeviceProcAddr( device, "vkCreateMicromapEXT" ) ); + vkDestroyMicromapEXT = PFN_vkDestroyMicromapEXT( vkGetDeviceProcAddr( device, "vkDestroyMicromapEXT" ) ); + vkCmdBuildMicromapsEXT = PFN_vkCmdBuildMicromapsEXT( vkGetDeviceProcAddr( device, "vkCmdBuildMicromapsEXT" ) ); + vkBuildMicromapsEXT = PFN_vkBuildMicromapsEXT( vkGetDeviceProcAddr( device, "vkBuildMicromapsEXT" ) ); + vkCopyMicromapEXT = PFN_vkCopyMicromapEXT( vkGetDeviceProcAddr( device, "vkCopyMicromapEXT" ) ); + vkCopyMicromapToMemoryEXT = PFN_vkCopyMicromapToMemoryEXT( vkGetDeviceProcAddr( device, "vkCopyMicromapToMemoryEXT" ) ); + vkCopyMemoryToMicromapEXT = PFN_vkCopyMemoryToMicromapEXT( vkGetDeviceProcAddr( device, "vkCopyMemoryToMicromapEXT" ) ); + vkWriteMicromapsPropertiesEXT = PFN_vkWriteMicromapsPropertiesEXT( vkGetDeviceProcAddr( device, "vkWriteMicromapsPropertiesEXT" ) ); + vkCmdCopyMicromapEXT = PFN_vkCmdCopyMicromapEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMicromapEXT" ) ); + vkCmdCopyMicromapToMemoryEXT = PFN_vkCmdCopyMicromapToMemoryEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMicromapToMemoryEXT" ) ); + vkCmdCopyMemoryToMicromapEXT = PFN_vkCmdCopyMemoryToMicromapEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToMicromapEXT" ) ); + vkCmdWriteMicromapsPropertiesEXT = PFN_vkCmdWriteMicromapsPropertiesEXT( vkGetDeviceProcAddr( device, "vkCmdWriteMicromapsPropertiesEXT" ) ); + vkGetDeviceMicromapCompatibilityEXT = PFN_vkGetDeviceMicromapCompatibilityEXT( vkGetDeviceProcAddr( device, "vkGetDeviceMicromapCompatibilityEXT" ) ); + vkGetMicromapBuildSizesEXT = PFN_vkGetMicromapBuildSizesEXT( vkGetDeviceProcAddr( device, "vkGetMicromapBuildSizesEXT" ) ); + + //=== VK_HUAWEI_cluster_culling_shader === + vkCmdDrawClusterHUAWEI = PFN_vkCmdDrawClusterHUAWEI( vkGetDeviceProcAddr( device, "vkCmdDrawClusterHUAWEI" ) ); + vkCmdDrawClusterIndirectHUAWEI = PFN_vkCmdDrawClusterIndirectHUAWEI( vkGetDeviceProcAddr( device, "vkCmdDrawClusterIndirectHUAWEI" ) ); + + //=== VK_EXT_pageable_device_local_memory === + vkSetDeviceMemoryPriorityEXT = PFN_vkSetDeviceMemoryPriorityEXT( vkGetDeviceProcAddr( device, "vkSetDeviceMemoryPriorityEXT" ) ); + + //=== VK_KHR_maintenance4 === + vkGetDeviceBufferMemoryRequirementsKHR = + PFN_vkGetDeviceBufferMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceBufferMemoryRequirements ) + vkGetDeviceBufferMemoryRequirements = vkGetDeviceBufferMemoryRequirementsKHR; + vkGetDeviceImageMemoryRequirementsKHR = + PFN_vkGetDeviceImageMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageMemoryRequirements ) + vkGetDeviceImageMemoryRequirements = vkGetDeviceImageMemoryRequirementsKHR; + vkGetDeviceImageSparseMemoryRequirementsKHR = + PFN_vkGetDeviceImageSparseMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageSparseMemoryRequirements ) + vkGetDeviceImageSparseMemoryRequirements = vkGetDeviceImageSparseMemoryRequirementsKHR; + + //=== VK_VALVE_descriptor_set_host_mapping === + vkGetDescriptorSetLayoutHostMappingInfoVALVE = + PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutHostMappingInfoVALVE" ) ); + vkGetDescriptorSetHostMappingVALVE = PFN_vkGetDescriptorSetHostMappingVALVE( vkGetDeviceProcAddr( device, "vkGetDescriptorSetHostMappingVALVE" ) ); + + //=== VK_NV_copy_memory_indirect === + vkCmdCopyMemoryIndirectNV = PFN_vkCmdCopyMemoryIndirectNV( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryIndirectNV" ) ); + vkCmdCopyMemoryToImageIndirectNV = PFN_vkCmdCopyMemoryToImageIndirectNV( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToImageIndirectNV" ) ); + + //=== VK_NV_memory_decompression === + vkCmdDecompressMemoryNV = PFN_vkCmdDecompressMemoryNV( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryNV" ) ); + vkCmdDecompressMemoryIndirectCountNV = + PFN_vkCmdDecompressMemoryIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryIndirectCountNV" ) ); + + //=== VK_NV_device_generated_commands_compute === + vkGetPipelineIndirectMemoryRequirementsNV = + PFN_vkGetPipelineIndirectMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetPipelineIndirectMemoryRequirementsNV" ) ); + vkCmdUpdatePipelineIndirectBufferNV = PFN_vkCmdUpdatePipelineIndirectBufferNV( vkGetDeviceProcAddr( device, "vkCmdUpdatePipelineIndirectBufferNV" ) ); + vkGetPipelineIndirectDeviceAddressNV = + PFN_vkGetPipelineIndirectDeviceAddressNV( vkGetDeviceProcAddr( device, "vkGetPipelineIndirectDeviceAddressNV" ) ); + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + vkGetNativeBufferPropertiesOHOS = PFN_vkGetNativeBufferPropertiesOHOS( vkGetDeviceProcAddr( device, "vkGetNativeBufferPropertiesOHOS" ) ); + vkGetMemoryNativeBufferOHOS = PFN_vkGetMemoryNativeBufferOHOS( vkGetDeviceProcAddr( device, "vkGetMemoryNativeBufferOHOS" ) ); +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_extended_dynamic_state3 === + vkCmdSetDepthClampEnableEXT = PFN_vkCmdSetDepthClampEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClampEnableEXT" ) ); + vkCmdSetPolygonModeEXT = PFN_vkCmdSetPolygonModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetPolygonModeEXT" ) ); + vkCmdSetRasterizationSamplesEXT = PFN_vkCmdSetRasterizationSamplesEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizationSamplesEXT" ) ); + vkCmdSetSampleMaskEXT = PFN_vkCmdSetSampleMaskEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleMaskEXT" ) ); + vkCmdSetAlphaToCoverageEnableEXT = PFN_vkCmdSetAlphaToCoverageEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAlphaToCoverageEnableEXT" ) ); + vkCmdSetAlphaToOneEnableEXT = PFN_vkCmdSetAlphaToOneEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAlphaToOneEnableEXT" ) ); + vkCmdSetLogicOpEnableEXT = PFN_vkCmdSetLogicOpEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEnableEXT" ) ); + vkCmdSetColorBlendEnableEXT = PFN_vkCmdSetColorBlendEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendEnableEXT" ) ); + vkCmdSetColorBlendEquationEXT = PFN_vkCmdSetColorBlendEquationEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendEquationEXT" ) ); + vkCmdSetColorWriteMaskEXT = PFN_vkCmdSetColorWriteMaskEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteMaskEXT" ) ); + vkCmdSetTessellationDomainOriginEXT = PFN_vkCmdSetTessellationDomainOriginEXT( vkGetDeviceProcAddr( device, "vkCmdSetTessellationDomainOriginEXT" ) ); + vkCmdSetRasterizationStreamEXT = PFN_vkCmdSetRasterizationStreamEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizationStreamEXT" ) ); + vkCmdSetConservativeRasterizationModeEXT = + PFN_vkCmdSetConservativeRasterizationModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetConservativeRasterizationModeEXT" ) ); + vkCmdSetExtraPrimitiveOverestimationSizeEXT = + PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT( vkGetDeviceProcAddr( device, "vkCmdSetExtraPrimitiveOverestimationSizeEXT" ) ); + vkCmdSetDepthClipEnableEXT = PFN_vkCmdSetDepthClipEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClipEnableEXT" ) ); + vkCmdSetSampleLocationsEnableEXT = PFN_vkCmdSetSampleLocationsEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEnableEXT" ) ); + vkCmdSetColorBlendAdvancedEXT = PFN_vkCmdSetColorBlendAdvancedEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendAdvancedEXT" ) ); + vkCmdSetProvokingVertexModeEXT = PFN_vkCmdSetProvokingVertexModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetProvokingVertexModeEXT" ) ); + vkCmdSetLineRasterizationModeEXT = PFN_vkCmdSetLineRasterizationModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineRasterizationModeEXT" ) ); + vkCmdSetLineStippleEnableEXT = PFN_vkCmdSetLineStippleEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEnableEXT" ) ); + vkCmdSetDepthClipNegativeOneToOneEXT = + PFN_vkCmdSetDepthClipNegativeOneToOneEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClipNegativeOneToOneEXT" ) ); + vkCmdSetViewportWScalingEnableNV = PFN_vkCmdSetViewportWScalingEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingEnableNV" ) ); + vkCmdSetViewportSwizzleNV = PFN_vkCmdSetViewportSwizzleNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportSwizzleNV" ) ); + vkCmdSetCoverageToColorEnableNV = PFN_vkCmdSetCoverageToColorEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageToColorEnableNV" ) ); + vkCmdSetCoverageToColorLocationNV = PFN_vkCmdSetCoverageToColorLocationNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageToColorLocationNV" ) ); + vkCmdSetCoverageModulationModeNV = PFN_vkCmdSetCoverageModulationModeNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationModeNV" ) ); + vkCmdSetCoverageModulationTableEnableNV = + PFN_vkCmdSetCoverageModulationTableEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationTableEnableNV" ) ); + vkCmdSetCoverageModulationTableNV = PFN_vkCmdSetCoverageModulationTableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationTableNV" ) ); + vkCmdSetShadingRateImageEnableNV = PFN_vkCmdSetShadingRateImageEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetShadingRateImageEnableNV" ) ); + vkCmdSetRepresentativeFragmentTestEnableNV = + PFN_vkCmdSetRepresentativeFragmentTestEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetRepresentativeFragmentTestEnableNV" ) ); + vkCmdSetCoverageReductionModeNV = PFN_vkCmdSetCoverageReductionModeNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageReductionModeNV" ) ); + + //=== VK_ARM_tensors === + vkCreateTensorARM = PFN_vkCreateTensorARM( vkGetDeviceProcAddr( device, "vkCreateTensorARM" ) ); + vkDestroyTensorARM = PFN_vkDestroyTensorARM( vkGetDeviceProcAddr( device, "vkDestroyTensorARM" ) ); + vkCreateTensorViewARM = PFN_vkCreateTensorViewARM( vkGetDeviceProcAddr( device, "vkCreateTensorViewARM" ) ); + vkDestroyTensorViewARM = PFN_vkDestroyTensorViewARM( vkGetDeviceProcAddr( device, "vkDestroyTensorViewARM" ) ); + vkGetTensorMemoryRequirementsARM = PFN_vkGetTensorMemoryRequirementsARM( vkGetDeviceProcAddr( device, "vkGetTensorMemoryRequirementsARM" ) ); + vkBindTensorMemoryARM = PFN_vkBindTensorMemoryARM( vkGetDeviceProcAddr( device, "vkBindTensorMemoryARM" ) ); + vkGetDeviceTensorMemoryRequirementsARM = + PFN_vkGetDeviceTensorMemoryRequirementsARM( vkGetDeviceProcAddr( device, "vkGetDeviceTensorMemoryRequirementsARM" ) ); + vkCmdCopyTensorARM = PFN_vkCmdCopyTensorARM( vkGetDeviceProcAddr( device, "vkCmdCopyTensorARM" ) ); + vkGetTensorOpaqueCaptureDescriptorDataARM = + PFN_vkGetTensorOpaqueCaptureDescriptorDataARM( vkGetDeviceProcAddr( device, "vkGetTensorOpaqueCaptureDescriptorDataARM" ) ); + vkGetTensorViewOpaqueCaptureDescriptorDataARM = + PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM( vkGetDeviceProcAddr( device, "vkGetTensorViewOpaqueCaptureDescriptorDataARM" ) ); + + //=== VK_EXT_shader_module_identifier === + vkGetShaderModuleIdentifierEXT = PFN_vkGetShaderModuleIdentifierEXT( vkGetDeviceProcAddr( device, "vkGetShaderModuleIdentifierEXT" ) ); + vkGetShaderModuleCreateInfoIdentifierEXT = + PFN_vkGetShaderModuleCreateInfoIdentifierEXT( vkGetDeviceProcAddr( device, "vkGetShaderModuleCreateInfoIdentifierEXT" ) ); + + //=== VK_NV_optical_flow === + vkCreateOpticalFlowSessionNV = PFN_vkCreateOpticalFlowSessionNV( vkGetDeviceProcAddr( device, "vkCreateOpticalFlowSessionNV" ) ); + vkDestroyOpticalFlowSessionNV = PFN_vkDestroyOpticalFlowSessionNV( vkGetDeviceProcAddr( device, "vkDestroyOpticalFlowSessionNV" ) ); + vkBindOpticalFlowSessionImageNV = PFN_vkBindOpticalFlowSessionImageNV( vkGetDeviceProcAddr( device, "vkBindOpticalFlowSessionImageNV" ) ); + vkCmdOpticalFlowExecuteNV = PFN_vkCmdOpticalFlowExecuteNV( vkGetDeviceProcAddr( device, "vkCmdOpticalFlowExecuteNV" ) ); + + //=== VK_KHR_maintenance5 === + vkCmdBindIndexBuffer2KHR = PFN_vkCmdBindIndexBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer2KHR" ) ); + if ( !vkCmdBindIndexBuffer2 ) + vkCmdBindIndexBuffer2 = vkCmdBindIndexBuffer2KHR; + vkGetRenderingAreaGranularityKHR = PFN_vkGetRenderingAreaGranularityKHR( vkGetDeviceProcAddr( device, "vkGetRenderingAreaGranularityKHR" ) ); + if ( !vkGetRenderingAreaGranularity ) + vkGetRenderingAreaGranularity = vkGetRenderingAreaGranularityKHR; + vkGetDeviceImageSubresourceLayoutKHR = + PFN_vkGetDeviceImageSubresourceLayoutKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageSubresourceLayoutKHR" ) ); + if ( !vkGetDeviceImageSubresourceLayout ) + vkGetDeviceImageSubresourceLayout = vkGetDeviceImageSubresourceLayoutKHR; + vkGetImageSubresourceLayout2KHR = PFN_vkGetImageSubresourceLayout2KHR( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2KHR" ) ); + if ( !vkGetImageSubresourceLayout2 ) + vkGetImageSubresourceLayout2 = vkGetImageSubresourceLayout2KHR; + + //=== VK_AMD_anti_lag === + vkAntiLagUpdateAMD = PFN_vkAntiLagUpdateAMD( vkGetDeviceProcAddr( device, "vkAntiLagUpdateAMD" ) ); + + //=== VK_KHR_present_wait2 === + vkWaitForPresent2KHR = PFN_vkWaitForPresent2KHR( vkGetDeviceProcAddr( device, "vkWaitForPresent2KHR" ) ); + + //=== VK_EXT_shader_object === + vkCreateShadersEXT = PFN_vkCreateShadersEXT( vkGetDeviceProcAddr( device, "vkCreateShadersEXT" ) ); + vkDestroyShaderEXT = PFN_vkDestroyShaderEXT( vkGetDeviceProcAddr( device, "vkDestroyShaderEXT" ) ); + vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetDeviceProcAddr( device, "vkGetShaderBinaryDataEXT" ) ); + vkCmdBindShadersEXT = PFN_vkCmdBindShadersEXT( vkGetDeviceProcAddr( device, "vkCmdBindShadersEXT" ) ); + vkCmdSetDepthClampRangeEXT = PFN_vkCmdSetDepthClampRangeEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClampRangeEXT" ) ); + + //=== VK_KHR_pipeline_binary === + vkCreatePipelineBinariesKHR = PFN_vkCreatePipelineBinariesKHR( vkGetDeviceProcAddr( device, "vkCreatePipelineBinariesKHR" ) ); + vkDestroyPipelineBinaryKHR = PFN_vkDestroyPipelineBinaryKHR( vkGetDeviceProcAddr( device, "vkDestroyPipelineBinaryKHR" ) ); + vkGetPipelineKeyKHR = PFN_vkGetPipelineKeyKHR( vkGetDeviceProcAddr( device, "vkGetPipelineKeyKHR" ) ); + vkGetPipelineBinaryDataKHR = PFN_vkGetPipelineBinaryDataKHR( vkGetDeviceProcAddr( device, "vkGetPipelineBinaryDataKHR" ) ); + vkReleaseCapturedPipelineDataKHR = PFN_vkReleaseCapturedPipelineDataKHR( vkGetDeviceProcAddr( device, "vkReleaseCapturedPipelineDataKHR" ) ); + + //=== VK_QCOM_tile_properties === + vkGetFramebufferTilePropertiesQCOM = PFN_vkGetFramebufferTilePropertiesQCOM( vkGetDeviceProcAddr( device, "vkGetFramebufferTilePropertiesQCOM" ) ); + vkGetDynamicRenderingTilePropertiesQCOM = + PFN_vkGetDynamicRenderingTilePropertiesQCOM( vkGetDeviceProcAddr( device, "vkGetDynamicRenderingTilePropertiesQCOM" ) ); + + //=== VK_KHR_swapchain_maintenance1 === + vkReleaseSwapchainImagesKHR = PFN_vkReleaseSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkReleaseSwapchainImagesKHR" ) ); + + //=== VK_NV_cooperative_vector === + vkConvertCooperativeVectorMatrixNV = PFN_vkConvertCooperativeVectorMatrixNV( vkGetDeviceProcAddr( device, "vkConvertCooperativeVectorMatrixNV" ) ); + vkCmdConvertCooperativeVectorMatrixNV = + PFN_vkCmdConvertCooperativeVectorMatrixNV( vkGetDeviceProcAddr( device, "vkCmdConvertCooperativeVectorMatrixNV" ) ); + + //=== VK_NV_low_latency2 === + vkSetLatencySleepModeNV = PFN_vkSetLatencySleepModeNV( vkGetDeviceProcAddr( device, "vkSetLatencySleepModeNV" ) ); + vkLatencySleepNV = PFN_vkLatencySleepNV( vkGetDeviceProcAddr( device, "vkLatencySleepNV" ) ); + vkSetLatencyMarkerNV = PFN_vkSetLatencyMarkerNV( vkGetDeviceProcAddr( device, "vkSetLatencyMarkerNV" ) ); + vkGetLatencyTimingsNV = PFN_vkGetLatencyTimingsNV( vkGetDeviceProcAddr( device, "vkGetLatencyTimingsNV" ) ); + vkQueueNotifyOutOfBandNV = PFN_vkQueueNotifyOutOfBandNV( vkGetDeviceProcAddr( device, "vkQueueNotifyOutOfBandNV" ) ); + + //=== VK_ARM_data_graph === + vkCreateDataGraphPipelinesARM = PFN_vkCreateDataGraphPipelinesARM( vkGetDeviceProcAddr( device, "vkCreateDataGraphPipelinesARM" ) ); + vkCreateDataGraphPipelineSessionARM = PFN_vkCreateDataGraphPipelineSessionARM( vkGetDeviceProcAddr( device, "vkCreateDataGraphPipelineSessionARM" ) ); + vkGetDataGraphPipelineSessionBindPointRequirementsARM = + PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelineSessionBindPointRequirementsARM" ) ); + vkGetDataGraphPipelineSessionMemoryRequirementsARM = + PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelineSessionMemoryRequirementsARM" ) ); + vkBindDataGraphPipelineSessionMemoryARM = + PFN_vkBindDataGraphPipelineSessionMemoryARM( vkGetDeviceProcAddr( device, "vkBindDataGraphPipelineSessionMemoryARM" ) ); + vkDestroyDataGraphPipelineSessionARM = + PFN_vkDestroyDataGraphPipelineSessionARM( vkGetDeviceProcAddr( device, "vkDestroyDataGraphPipelineSessionARM" ) ); + vkCmdDispatchDataGraphARM = PFN_vkCmdDispatchDataGraphARM( vkGetDeviceProcAddr( device, "vkCmdDispatchDataGraphARM" ) ); + vkGetDataGraphPipelineAvailablePropertiesARM = + PFN_vkGetDataGraphPipelineAvailablePropertiesARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelineAvailablePropertiesARM" ) ); + vkGetDataGraphPipelinePropertiesARM = PFN_vkGetDataGraphPipelinePropertiesARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelinePropertiesARM" ) ); + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + vkCmdSetAttachmentFeedbackLoopEnableEXT = + PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAttachmentFeedbackLoopEnableEXT" ) ); + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + vkGetScreenBufferPropertiesQNX = PFN_vkGetScreenBufferPropertiesQNX( vkGetDeviceProcAddr( device, "vkGetScreenBufferPropertiesQNX" ) ); +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_line_rasterization === + vkCmdSetLineStippleKHR = PFN_vkCmdSetLineStippleKHR( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleKHR" ) ); + if ( !vkCmdSetLineStipple ) + vkCmdSetLineStipple = vkCmdSetLineStippleKHR; + + //=== VK_KHR_calibrated_timestamps === + vkGetCalibratedTimestampsKHR = PFN_vkGetCalibratedTimestampsKHR( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsKHR" ) ); + + //=== VK_KHR_maintenance6 === + vkCmdBindDescriptorSets2KHR = PFN_vkCmdBindDescriptorSets2KHR( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets2KHR" ) ); + if ( !vkCmdBindDescriptorSets2 ) + vkCmdBindDescriptorSets2 = vkCmdBindDescriptorSets2KHR; + vkCmdPushConstants2KHR = PFN_vkCmdPushConstants2KHR( vkGetDeviceProcAddr( device, "vkCmdPushConstants2KHR" ) ); + if ( !vkCmdPushConstants2 ) + vkCmdPushConstants2 = vkCmdPushConstants2KHR; + vkCmdPushDescriptorSet2KHR = PFN_vkCmdPushDescriptorSet2KHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSet2KHR" ) ); + if ( !vkCmdPushDescriptorSet2 ) + vkCmdPushDescriptorSet2 = vkCmdPushDescriptorSet2KHR; + vkCmdPushDescriptorSetWithTemplate2KHR = + PFN_vkCmdPushDescriptorSetWithTemplate2KHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplate2KHR" ) ); + if ( !vkCmdPushDescriptorSetWithTemplate2 ) + vkCmdPushDescriptorSetWithTemplate2 = vkCmdPushDescriptorSetWithTemplate2KHR; + vkCmdSetDescriptorBufferOffsets2EXT = PFN_vkCmdSetDescriptorBufferOffsets2EXT( vkGetDeviceProcAddr( device, "vkCmdSetDescriptorBufferOffsets2EXT" ) ); + vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = + PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" ) ); + + //=== VK_QCOM_tile_memory_heap === + vkCmdBindTileMemoryQCOM = PFN_vkCmdBindTileMemoryQCOM( vkGetDeviceProcAddr( device, "vkCmdBindTileMemoryQCOM" ) ); + + //=== VK_KHR_copy_memory_indirect === + vkCmdCopyMemoryIndirectKHR = PFN_vkCmdCopyMemoryIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryIndirectKHR" ) ); + vkCmdCopyMemoryToImageIndirectKHR = PFN_vkCmdCopyMemoryToImageIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToImageIndirectKHR" ) ); + + //=== VK_EXT_memory_decompression === + vkCmdDecompressMemoryEXT = PFN_vkCmdDecompressMemoryEXT( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryEXT" ) ); + vkCmdDecompressMemoryIndirectCountEXT = + PFN_vkCmdDecompressMemoryIndirectCountEXT( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryIndirectCountEXT" ) ); + + //=== VK_NV_external_compute_queue === + vkCreateExternalComputeQueueNV = PFN_vkCreateExternalComputeQueueNV( vkGetDeviceProcAddr( device, "vkCreateExternalComputeQueueNV" ) ); + vkDestroyExternalComputeQueueNV = PFN_vkDestroyExternalComputeQueueNV( vkGetDeviceProcAddr( device, "vkDestroyExternalComputeQueueNV" ) ); + vkGetExternalComputeQueueDataNV = PFN_vkGetExternalComputeQueueDataNV( vkGetDeviceProcAddr( device, "vkGetExternalComputeQueueDataNV" ) ); + + //=== VK_NV_cluster_acceleration_structure === + vkGetClusterAccelerationStructureBuildSizesNV = + PFN_vkGetClusterAccelerationStructureBuildSizesNV( vkGetDeviceProcAddr( device, "vkGetClusterAccelerationStructureBuildSizesNV" ) ); + vkCmdBuildClusterAccelerationStructureIndirectNV = + PFN_vkCmdBuildClusterAccelerationStructureIndirectNV( vkGetDeviceProcAddr( device, "vkCmdBuildClusterAccelerationStructureIndirectNV" ) ); + + //=== VK_NV_partitioned_acceleration_structure === + vkGetPartitionedAccelerationStructuresBuildSizesNV = + PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV( vkGetDeviceProcAddr( device, "vkGetPartitionedAccelerationStructuresBuildSizesNV" ) ); + vkCmdBuildPartitionedAccelerationStructuresNV = + PFN_vkCmdBuildPartitionedAccelerationStructuresNV( vkGetDeviceProcAddr( device, "vkCmdBuildPartitionedAccelerationStructuresNV" ) ); + + //=== VK_EXT_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsEXT = + PFN_vkGetGeneratedCommandsMemoryRequirementsEXT( vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsEXT" ) ); + vkCmdPreprocessGeneratedCommandsEXT = PFN_vkCmdPreprocessGeneratedCommandsEXT( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsEXT" ) ); + vkCmdExecuteGeneratedCommandsEXT = PFN_vkCmdExecuteGeneratedCommandsEXT( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsEXT" ) ); + vkCreateIndirectCommandsLayoutEXT = PFN_vkCreateIndirectCommandsLayoutEXT( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutEXT" ) ); + vkDestroyIndirectCommandsLayoutEXT = PFN_vkDestroyIndirectCommandsLayoutEXT( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutEXT" ) ); + vkCreateIndirectExecutionSetEXT = PFN_vkCreateIndirectExecutionSetEXT( vkGetDeviceProcAddr( device, "vkCreateIndirectExecutionSetEXT" ) ); + vkDestroyIndirectExecutionSetEXT = PFN_vkDestroyIndirectExecutionSetEXT( vkGetDeviceProcAddr( device, "vkDestroyIndirectExecutionSetEXT" ) ); + vkUpdateIndirectExecutionSetPipelineEXT = + PFN_vkUpdateIndirectExecutionSetPipelineEXT( vkGetDeviceProcAddr( device, "vkUpdateIndirectExecutionSetPipelineEXT" ) ); + vkUpdateIndirectExecutionSetShaderEXT = + PFN_vkUpdateIndirectExecutionSetShaderEXT( vkGetDeviceProcAddr( device, "vkUpdateIndirectExecutionSetShaderEXT" ) ); + + //=== VK_KHR_device_fault === + vkGetDeviceFaultReportsKHR = PFN_vkGetDeviceFaultReportsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceFaultReportsKHR" ) ); + vkGetDeviceFaultDebugInfoKHR = PFN_vkGetDeviceFaultDebugInfoKHR( vkGetDeviceProcAddr( device, "vkGetDeviceFaultDebugInfoKHR" ) ); + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + vkGetMemoryMetalHandleEXT = PFN_vkGetMemoryMetalHandleEXT( vkGetDeviceProcAddr( device, "vkGetMemoryMetalHandleEXT" ) ); + vkGetMemoryMetalHandlePropertiesEXT = PFN_vkGetMemoryMetalHandlePropertiesEXT( vkGetDeviceProcAddr( device, "vkGetMemoryMetalHandlePropertiesEXT" ) ); +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_shader_instrumentation === + vkCreateShaderInstrumentationARM = PFN_vkCreateShaderInstrumentationARM( vkGetDeviceProcAddr( device, "vkCreateShaderInstrumentationARM" ) ); + vkDestroyShaderInstrumentationARM = PFN_vkDestroyShaderInstrumentationARM( vkGetDeviceProcAddr( device, "vkDestroyShaderInstrumentationARM" ) ); + vkCmdBeginShaderInstrumentationARM = PFN_vkCmdBeginShaderInstrumentationARM( vkGetDeviceProcAddr( device, "vkCmdBeginShaderInstrumentationARM" ) ); + vkCmdEndShaderInstrumentationARM = PFN_vkCmdEndShaderInstrumentationARM( vkGetDeviceProcAddr( device, "vkCmdEndShaderInstrumentationARM" ) ); + vkGetShaderInstrumentationValuesARM = PFN_vkGetShaderInstrumentationValuesARM( vkGetDeviceProcAddr( device, "vkGetShaderInstrumentationValuesARM" ) ); + vkClearShaderInstrumentationMetricsARM = + PFN_vkClearShaderInstrumentationMetricsARM( vkGetDeviceProcAddr( device, "vkClearShaderInstrumentationMetricsARM" ) ); + + //=== VK_EXT_fragment_density_map_offset === + vkCmdEndRendering2EXT = PFN_vkCmdEndRendering2EXT( vkGetDeviceProcAddr( device, "vkCmdEndRendering2EXT" ) ); + if ( !vkCmdEndRendering2KHR ) + vkCmdEndRendering2KHR = vkCmdEndRendering2EXT; + + //=== VK_EXT_custom_resolve === + vkCmdBeginCustomResolveEXT = PFN_vkCmdBeginCustomResolveEXT( vkGetDeviceProcAddr( device, "vkCmdBeginCustomResolveEXT" ) ); + + //=== VK_KHR_maintenance10 === + vkCmdEndRendering2KHR = PFN_vkCmdEndRendering2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRendering2KHR" ) ); + + //=== VK_NV_compute_occupancy_priority === + vkCmdSetComputeOccupancyPriorityNV = PFN_vkCmdSetComputeOccupancyPriorityNV( vkGetDeviceProcAddr( device, "vkCmdSetComputeOccupancyPriorityNV" ) ); + } + + template + void init( Instance const & instance, Device const & device, DynamicLoader const & dl ) VULKAN_HPP_NOEXCEPT + { + PFN_vkGetInstanceProcAddr getInstanceProcAddr = dl.template getProcAddress( "vkGetInstanceProcAddr" ); + PFN_vkGetDeviceProcAddr getDeviceProcAddr = dl.template getProcAddress( "vkGetDeviceProcAddr" ); + init( static_cast( instance ), getInstanceProcAddr, static_cast( device ), device ? getDeviceProcAddr : nullptr ); + } + + template + void init( Instance const & instance, Device const & device ) VULKAN_HPP_NOEXCEPT + { + static DynamicLoader dl; + init( instance, device, dl ); + } + }; + +#if defined( VULKAN_HPP_CXX_MODULE ) && !defined( VULKAN_HPP_DEFAULT_DISPATCHER_HANDLED ) && VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 + VULKAN_HPP_STORAGE_API DispatchLoaderDynamic defaultDispatchLoaderDynamic; +#endif + } // namespace detail +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_android.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_android.h new file mode 100644 index 000000000..1d8265e87 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_android.h @@ -0,0 +1,159 @@ +#ifndef VULKAN_ANDROID_H_ +#define VULKAN_ANDROID_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_KHR_android_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_android_surface 1 +struct ANativeWindow; +#define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6 +#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface" +typedef VkFlags VkAndroidSurfaceCreateFlagsKHR; +typedef struct VkAndroidSurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkAndroidSurfaceCreateFlagsKHR flags; + struct ANativeWindow* window; +} VkAndroidSurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR( + VkInstance instance, + const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif +#endif + + +// VK_ANDROID_external_memory_android_hardware_buffer is a preprocessor guard. Do not pass it to API calls. +#define VK_ANDROID_external_memory_android_hardware_buffer 1 +struct AHardwareBuffer; +#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 5 +#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer" +typedef struct VkAndroidHardwareBufferUsageANDROID { + VkStructureType sType; + void* pNext; + uint64_t androidHardwareBufferUsage; +} VkAndroidHardwareBufferUsageANDROID; + +typedef struct VkAndroidHardwareBufferPropertiesANDROID { + VkStructureType sType; + void* pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeBits; +} VkAndroidHardwareBufferPropertiesANDROID; + +typedef struct VkAndroidHardwareBufferFormatPropertiesANDROID { + VkStructureType sType; + void* pNext; + VkFormat format; + uint64_t externalFormat; + VkFormatFeatureFlags formatFeatures; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkAndroidHardwareBufferFormatPropertiesANDROID; + +typedef struct VkImportAndroidHardwareBufferInfoANDROID { + VkStructureType sType; + const void* pNext; + struct AHardwareBuffer* buffer; +} VkImportAndroidHardwareBufferInfoANDROID; + +typedef struct VkMemoryGetAndroidHardwareBufferInfoANDROID { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; +} VkMemoryGetAndroidHardwareBufferInfoANDROID; + +typedef struct VkExternalFormatANDROID { + VkStructureType sType; + void* pNext; + uint64_t externalFormat; +} VkExternalFormatANDROID; + +typedef struct VkAndroidHardwareBufferFormatProperties2ANDROID { + VkStructureType sType; + void* pNext; + VkFormat format; + uint64_t externalFormat; + VkFormatFeatureFlags2 formatFeatures; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkAndroidHardwareBufferFormatProperties2ANDROID; + +typedef VkResult (VKAPI_PTR *PFN_vkGetAndroidHardwareBufferPropertiesANDROID)(VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryAndroidHardwareBufferANDROID)(VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID( + VkDevice device, + const struct AHardwareBuffer* buffer, + VkAndroidHardwareBufferPropertiesANDROID* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID( + VkDevice device, + const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, + struct AHardwareBuffer** pBuffer); +#endif +#endif + + +// VK_ANDROID_external_format_resolve is a preprocessor guard. Do not pass it to API calls. +#define VK_ANDROID_external_format_resolve 1 +#define VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_SPEC_VERSION 1 +#define VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_EXTENSION_NAME "VK_ANDROID_external_format_resolve" +typedef struct VkPhysicalDeviceExternalFormatResolveFeaturesANDROID { + VkStructureType sType; + void* pNext; + VkBool32 externalFormatResolve; +} VkPhysicalDeviceExternalFormatResolveFeaturesANDROID; + +typedef struct VkPhysicalDeviceExternalFormatResolvePropertiesANDROID { + VkStructureType sType; + void* pNext; + VkBool32 nullColorAttachmentWithExternalFormatResolve; + VkChromaLocation externalFormatResolveChromaOffsetX; + VkChromaLocation externalFormatResolveChromaOffsetY; +} VkPhysicalDeviceExternalFormatResolvePropertiesANDROID; + +typedef struct VkAndroidHardwareBufferFormatResolvePropertiesANDROID { + VkStructureType sType; + void* pNext; + VkFormat colorAttachmentFormat; +} VkAndroidHardwareBufferFormatResolvePropertiesANDROID; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_beta.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_beta.h new file mode 100644 index 000000000..147a3f3cc --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_beta.h @@ -0,0 +1,375 @@ +#ifndef VULKAN_BETA_H_ +#define VULKAN_BETA_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_KHR_portability_subset is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_portability_subset 1 +#define VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION 1 +#define VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME "VK_KHR_portability_subset" +typedef struct VkPhysicalDevicePortabilitySubsetFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 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; +} VkPhysicalDevicePortabilitySubsetFeaturesKHR; + +typedef struct VkPhysicalDevicePortabilitySubsetPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t minVertexInputBindingStrideAlignment; +} VkPhysicalDevicePortabilitySubsetPropertiesKHR; + + + +// VK_AMDX_shader_enqueue is a preprocessor guard. Do not pass it to API calls. +#define VK_AMDX_shader_enqueue 1 +#define VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION 2 +#define VK_AMDX_SHADER_ENQUEUE_EXTENSION_NAME "VK_AMDX_shader_enqueue" +#define VK_SHADER_INDEX_UNUSED_AMDX (~0U) +typedef struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX { + VkStructureType sType; + void* pNext; + VkBool32 shaderEnqueue; + VkBool32 shaderMeshEnqueue; +} VkPhysicalDeviceShaderEnqueueFeaturesAMDX; + +typedef struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX { + VkStructureType sType; + void* pNext; + uint32_t maxExecutionGraphDepth; + uint32_t maxExecutionGraphShaderOutputNodes; + uint32_t maxExecutionGraphShaderPayloadSize; + uint32_t maxExecutionGraphShaderPayloadCount; + uint32_t executionGraphDispatchAddressAlignment; + uint32_t maxExecutionGraphWorkgroupCount[3]; + uint32_t maxExecutionGraphWorkgroups; +} VkPhysicalDeviceShaderEnqueuePropertiesAMDX; + +typedef struct VkExecutionGraphPipelineScratchSizeAMDX { + VkStructureType sType; + void* pNext; + VkDeviceSize minSize; + VkDeviceSize maxSize; + VkDeviceSize sizeGranularity; +} VkExecutionGraphPipelineScratchSizeAMDX; + +typedef struct VkExecutionGraphPipelineCreateInfoAMDX { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + const VkPipelineLibraryCreateInfoKHR* pLibraryInfo; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkExecutionGraphPipelineCreateInfoAMDX; + +typedef union VkDeviceOrHostAddressConstAMDX { + VkDeviceAddress deviceAddress; + const void* hostAddress; +} VkDeviceOrHostAddressConstAMDX; + +typedef struct VkDispatchGraphInfoAMDX { + uint32_t nodeIndex; + uint32_t payloadCount; + VkDeviceOrHostAddressConstAMDX payloads; + uint64_t payloadStride; +} VkDispatchGraphInfoAMDX; + +typedef struct VkDispatchGraphCountInfoAMDX { + uint32_t count; + VkDeviceOrHostAddressConstAMDX infos; + uint64_t stride; +} VkDispatchGraphCountInfoAMDX; + +typedef struct VkPipelineShaderStageNodeCreateInfoAMDX { + VkStructureType sType; + const void* pNext; + const char* pName; + uint32_t index; +} VkPipelineShaderStageNodeCreateInfoAMDX; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateExecutionGraphPipelinesAMDX)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)(VkDevice device, VkPipeline executionGraph, VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)(VkDevice device, VkPipeline executionGraph, const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, uint32_t* pNodeIndex); +typedef void (VKAPI_PTR *PFN_vkCmdInitializeGraphScratchMemoryAMDX)(VkCommandBuffer commandBuffer, VkPipeline executionGraph, VkDeviceAddress scratch, VkDeviceSize scratchSize); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceSize scratchSize, const VkDispatchGraphCountInfoAMDX* pCountInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceSize scratchSize, const VkDispatchGraphCountInfoAMDX* pCountInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchGraphIndirectCountAMDX)(VkCommandBuffer commandBuffer, VkDeviceAddress scratch, VkDeviceSize scratchSize, VkDeviceAddress countInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateExecutionGraphPipelinesAMDX( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineScratchSizeAMDX( + VkDevice device, + VkPipeline executionGraph, + VkExecutionGraphPipelineScratchSizeAMDX* pSizeInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetExecutionGraphPipelineNodeIndexAMDX( + VkDevice device, + VkPipeline executionGraph, + const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo, + uint32_t* pNodeIndex); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdInitializeGraphScratchMemoryAMDX( + VkCommandBuffer commandBuffer, + VkPipeline executionGraph, + VkDeviceAddress scratch, + VkDeviceSize scratchSize); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphAMDX( + VkCommandBuffer commandBuffer, + VkDeviceAddress scratch, + VkDeviceSize scratchSize, + const VkDispatchGraphCountInfoAMDX* pCountInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectAMDX( + VkCommandBuffer commandBuffer, + VkDeviceAddress scratch, + VkDeviceSize scratchSize, + const VkDispatchGraphCountInfoAMDX* pCountInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchGraphIndirectCountAMDX( + VkCommandBuffer commandBuffer, + VkDeviceAddress scratch, + VkDeviceSize scratchSize, + VkDeviceAddress countInfo); +#endif +#endif + + +// VK_NV_cuda_kernel_launch is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_cuda_kernel_launch 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaModuleNV) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaFunctionNV) +#define VK_NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION 2 +#define VK_NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME "VK_NV_cuda_kernel_launch" +typedef struct VkCudaModuleCreateInfoNV { + VkStructureType sType; + const void* pNext; + size_t dataSize; + const void* pData; +} VkCudaModuleCreateInfoNV; + +typedef struct VkCudaFunctionCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkCudaModuleNV module; + const char* pName; +} VkCudaFunctionCreateInfoNV; + +typedef struct VkCudaLaunchInfoNV { + VkStructureType sType; + const void* pNext; + VkCudaFunctionNV function; + uint32_t gridDimX; + uint32_t gridDimY; + uint32_t gridDimZ; + uint32_t blockDimX; + uint32_t blockDimY; + uint32_t blockDimZ; + uint32_t sharedMemBytes; + size_t paramCount; + const void* const * pParams; + size_t extraCount; + const void* const * pExtras; +} VkCudaLaunchInfoNV; + +typedef struct VkPhysicalDeviceCudaKernelLaunchFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 cudaKernelLaunchFeatures; +} VkPhysicalDeviceCudaKernelLaunchFeaturesNV; + +typedef struct VkPhysicalDeviceCudaKernelLaunchPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t computeCapabilityMinor; + uint32_t computeCapabilityMajor; +} VkPhysicalDeviceCudaKernelLaunchPropertiesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateCudaModuleNV)(VkDevice device, const VkCudaModuleCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaModuleNV* pModule); +typedef VkResult (VKAPI_PTR *PFN_vkGetCudaModuleCacheNV)(VkDevice device, VkCudaModuleNV module, size_t* pCacheSize, void* pCacheData); +typedef VkResult (VKAPI_PTR *PFN_vkCreateCudaFunctionNV)(VkDevice device, const VkCudaFunctionCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaFunctionNV* pFunction); +typedef void (VKAPI_PTR *PFN_vkDestroyCudaModuleNV)(VkDevice device, VkCudaModuleNV module, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkDestroyCudaFunctionNV)(VkDevice device, VkCudaFunctionNV function, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdCudaLaunchKernelNV)(VkCommandBuffer commandBuffer, const VkCudaLaunchInfoNV* pLaunchInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCudaModuleNV( + VkDevice device, + const VkCudaModuleCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCudaModuleNV* pModule); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetCudaModuleCacheNV( + VkDevice device, + VkCudaModuleNV module, + size_t* pCacheSize, + void* pCacheData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCudaFunctionNV( + VkDevice device, + const VkCudaFunctionCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCudaFunctionNV* pFunction); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyCudaModuleNV( + VkDevice device, + VkCudaModuleNV module, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyCudaFunctionNV( + VkDevice device, + VkCudaFunctionNV function, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCudaLaunchKernelNV( + VkCommandBuffer commandBuffer, + const VkCudaLaunchInfoNV* pLaunchInfo); +#endif +#endif + + +// VK_NV_displacement_micromap is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_displacement_micromap 1 +#define VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION 2 +#define VK_NV_DISPLACEMENT_MICROMAP_EXTENSION_NAME "VK_NV_displacement_micromap" + +typedef enum VkDisplacementMicromapFormatNV { + VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV = 1, + VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV = 2, + VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV = 3, + VK_DISPLACEMENT_MICROMAP_FORMAT_MAX_ENUM_NV = 0x7FFFFFFF +} VkDisplacementMicromapFormatNV; +typedef struct VkPhysicalDeviceDisplacementMicromapFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 displacementMicromap; +} VkPhysicalDeviceDisplacementMicromapFeaturesNV; + +typedef struct VkPhysicalDeviceDisplacementMicromapPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxDisplacementMicromapSubdivisionLevel; +} VkPhysicalDeviceDisplacementMicromapPropertiesNV; + +typedef struct VkAccelerationStructureTrianglesDisplacementMicromapNV { + VkStructureType sType; + void* pNext; + VkFormat displacementBiasAndScaleFormat; + VkFormat displacementVectorFormat; + VkDeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer; + VkDeviceSize displacementBiasAndScaleStride; + VkDeviceOrHostAddressConstKHR displacementVectorBuffer; + VkDeviceSize displacementVectorStride; + VkDeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags; + VkDeviceSize displacedMicromapPrimitiveFlagsStride; + VkIndexType indexType; + VkDeviceOrHostAddressConstKHR indexBuffer; + VkDeviceSize indexStride; + uint32_t baseTriangle; + uint32_t usageCountsCount; + const VkMicromapUsageEXT* pUsageCounts; + const VkMicromapUsageEXT* const* ppUsageCounts; + VkMicromapEXT micromap; +} VkAccelerationStructureTrianglesDisplacementMicromapNV; + + + +// VK_AMDX_dense_geometry_format is a preprocessor guard. Do not pass it to API calls. +#define VK_AMDX_dense_geometry_format 1 +#define VK_AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION 1 +#define VK_AMDX_DENSE_GEOMETRY_FORMAT_EXTENSION_NAME "VK_AMDX_dense_geometry_format" +#define VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_ALIGNMENT_AMDX 128U +#define VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_BYTE_STRIDE_AMDX 128U + +typedef enum VkCompressedTriangleFormatAMDX { + VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX = 0, + VK_COMPRESSED_TRIANGLE_FORMAT_MAX_ENUM_AMDX = 0x7FFFFFFF +} VkCompressedTriangleFormatAMDX; +typedef struct VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX { + VkStructureType sType; + void* pNext; + VkBool32 denseGeometryFormat; +} VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX; + +typedef struct VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR compressedData; + VkDeviceSize dataSize; + uint32_t numTriangles; + uint32_t numVertices; + uint32_t maxPrimitiveIndex; + uint32_t maxGeometryIndex; + VkCompressedTriangleFormatAMDX format; +} VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_core.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_core.h new file mode 100644 index 000000000..e57cd25a9 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_core.h @@ -0,0 +1,25896 @@ +#ifndef VULKAN_CORE_H_ +#define VULKAN_CORE_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_VERSION_1_0 is a preprocessor guard. Do not pass it to API calls. +#define VK_VERSION_1_0 1 +#include "vk_platform.h" + +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + + +#ifndef VK_USE_64_BIT_PTR_DEFINES + #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) || (defined(__riscv) && __riscv_xlen == 64) + #define VK_USE_64_BIT_PTR_DEFINES 1 + #else + #define VK_USE_64_BIT_PTR_DEFINES 0 + #endif +#endif + + +#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE + #if (VK_USE_64_BIT_PTR_DEFINES==1) + #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L)) + #define VK_NULL_HANDLE nullptr + #else + #define VK_NULL_HANDLE ((void*)0) + #endif + #else + #define VK_NULL_HANDLE 0ULL + #endif +#endif +#ifndef VK_NULL_HANDLE + #define VK_NULL_HANDLE 0 +#endif + + +#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE + #if (VK_USE_64_BIT_PTR_DEFINES==1) + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; + #else + #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; + #endif +#endif + +#define VK_MAKE_API_VERSION(variant, major, minor, patch) \ + ((((uint32_t)(variant)) << 29U) | (((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch))) + + +//#define VK_API_VERSION VK_MAKE_API_VERSION(0, 1, 0, 0) // Patch version should always be set to 0 + +// Version of this file +#define VK_HEADER_VERSION 347 + +// Complete version of this file +#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 4, VK_HEADER_VERSION) + + +#define VK_MAKE_VERSION(major, minor, patch) \ + ((((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch))) + + +#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22U) + + +#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU) + + +#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) + +#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29U) +#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22U) & 0x7FU) +#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU) +#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU) +// Vulkan 1.0 version number +#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0 + +typedef uint32_t VkBool32; +typedef uint64_t VkDeviceAddress; +typedef uint64_t VkDeviceSize; +typedef uint32_t VkFlags; +typedef uint32_t VkSampleMask; +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_HANDLE(VkPhysicalDevice) +VK_DEFINE_HANDLE(VkDevice) +VK_DEFINE_HANDLE(VkQueue) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore) +VK_DEFINE_HANDLE(VkCommandBuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) +#define VK_FALSE 0U +#define VK_LOD_CLAMP_NONE 1000.0F +#define VK_QUEUE_FAMILY_IGNORED (~0U) +#define VK_REMAINING_ARRAY_LAYERS (~0U) +#define VK_REMAINING_MIP_LEVELS (~0U) +#define VK_TRUE 1U +#define VK_WHOLE_SIZE (~0ULL) +#define VK_MAX_MEMORY_TYPES 32U +#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256U +#define VK_UUID_SIZE 16U +#define VK_MAX_EXTENSION_NAME_SIZE 256U +#define VK_MAX_DESCRIPTION_SIZE 256U +#define VK_MAX_MEMORY_HEAPS 16U +#define VK_ATTACHMENT_UNUSED (~0U) +#define VK_SUBPASS_EXTERNAL (~0U) + +typedef enum VkResult { + 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_VALIDATION_FAILED = -1000011001, + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000, + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, + VK_ERROR_FRAGMENTATION = -1000161000, + VK_PIPELINE_COMPILE_REQUIRED = 1000297000, + VK_ERROR_NOT_PERMITTED = -1000174001, + 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_INVALID_SHADER_NV = -1000012000, + VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR = -1000023000, + VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR = -1000023001, + VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR = -1000023002, + VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR = -1000023003, + VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004, + VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005, + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000, + VK_ERROR_PRESENT_TIMING_QUEUE_FULL_EXT = -1000208000, + 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_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000, + VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000, + VK_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000, + VK_PIPELINE_BINARY_MISSING_KHR = 1000483000, + VK_ERROR_NOT_ENOUGH_SPACE_KHR = -1000483000, + VK_ERROR_VALIDATION_FAILED_EXT = VK_ERROR_VALIDATION_FAILED, + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY, + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE, + VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION, + VK_ERROR_NOT_PERMITTED_EXT = VK_ERROR_NOT_PERMITTED, + VK_ERROR_NOT_PERMITTED_KHR = VK_ERROR_NOT_PERMITTED, + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + VK_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED, + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED, + // VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT is a legacy alias + VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = VK_INCOMPATIBLE_SHADER_BINARY_EXT, + VK_RESULT_MAX_ENUM = 0x7FFFFFFF +} VkResult; + +typedef enum 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_BIND_BUFFER_MEMORY_INFO = 1000157000, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001, + 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_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_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002, + 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_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_SUBGROUP_PROPERTIES = 1000094000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, + 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_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000, + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001, + 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_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, + 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_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, + 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_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, + 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_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, + 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_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_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, + 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_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_VULKAN_1_3_FEATURES = 53, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000, + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001, + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 = 1000314000, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 = 1000314001, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 = 1000314002, + VK_STRUCTURE_TYPE_DEPENDENCY_INFO = 1000314003, + VK_STRUCTURE_TYPE_SUBMIT_INFO_2 = 1000314004, + VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO = 1000314005, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO = 1000314006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007, + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000, + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001, + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003, + VK_STRUCTURE_TYPE_BUFFER_COPY_2 = 1000337006, + VK_STRUCTURE_TYPE_IMAGE_COPY_2 = 1000337007, + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001, + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003, + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001, + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 = 1000337004, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 = 1000337005, + VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008, + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010, + VK_STRUCTURE_TYPE_RENDERING_INFO = 1000044000, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO = 1000044001, + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO = 1000044002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES = 55, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES = 56, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO = 1000174000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES = 1000388000, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES = 1000388001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES = 1000265000, + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO = 1000271000, + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO = 1000271001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES = 1000470000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES = 1000470001, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO = 1000470004, + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2 = 1000338002, + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2 = 1000338003, + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO = 1000470006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES = 1000545000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES = 1000545001, + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS = 1000545002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES = 1000270000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES = 1000270001, + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY = 1000270002, + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY = 1000270003, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO = 1000270004, + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO = 1000270005, + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO = 1000270006, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO = 1000270007, + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE = 1000270008, + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY = 1000270009, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES = 1000416000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES = 1000528000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES = 1000544000, + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO = 1000470005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES = 1000080000, + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO = 1000545003, + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO = 1000545004, + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO = 1000545005, + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO = 1000545006, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES = 1000466000, + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO = 1000068000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES = 1000068001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES = 1000068002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES = 1000259000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO = 1000259001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES = 1000259002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES = 1000525000, + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO = 1000190001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES = 1000190002, + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO = 1000470003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES = 1000232000, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO = 1000232001, + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO = 1000232002, + 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_INFO_KHR = 1000023000, + VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001, + VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR = 1000023002, + VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR = 1000023003, + VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_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_INFO_KHR = 1000023011, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR = 1000023012, + VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR = 1000023013, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014, + VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR = 1000023016, + VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR = 1000024001, + VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR = 1000024002, + 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_CU_MODULE_CREATE_INFO_NVX = 1000029000, + VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001, + VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002, + VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX = 1000029004, + 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_KHR = 1000038000, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000040004, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006, + 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_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_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_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009, + 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_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000, + 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_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX = 1000134000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX = 1000134001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX = 1000134002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX = 1000134003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX = 1000134004, +#endif + VK_STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT = 1000135000, + VK_STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT = 1000135001, + VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT = 1000135002, + VK_STRUCTURE_TYPE_BIND_HEAP_INFO_EXT = 1000135003, + VK_STRUCTURE_TYPE_PUSH_DATA_INFO_EXT = 1000135004, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT = 1000135005, + VK_STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT = 1000135006, + VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT = 1000135007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT = 1000135008, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT = 1000135009, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT = 1000135010, + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT = 1000135011, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV = 1000135012, + VK_STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT = 1000135013, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM = 1000135014, + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR = 1000141000, + 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_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006, + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001, +#endif + 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_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM = 1000172000, + 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_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR = 1000187000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000187002, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000, + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000, + 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_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_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008, + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT = 1000208000, + VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT = 1000208001, + VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT = 1000208002, + VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT = 1000208003, + VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT = 1000208004, + VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT = 1000208005, + VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT = 1000208006, + VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT = 1000208007, + VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT = 1000208008, + VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT = 1000208009, + 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_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007, + 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_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006, + 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_CONSTANT_DATA_FEATURES_KHR = 1000231000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR = 1000233000, + VK_STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR = 1000233001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR = 1000233002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR = 1000235000, + 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_VALIDATION_FEATURES_EXT = 1000247000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000, + 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_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000, + 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_MAP_MEMORY_PLACED_FEATURES_EXT = 1000272000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT = 1000272001, + VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT = 1000272002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000, + 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_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000, + VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001, + VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002, + 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_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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT = 1000288000, + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV = 1000292000, + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV = 1000292001, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002, + VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004, + VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV = 1000307000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV = 1000307001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV = 1000307002, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV = 1000307003, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV = 1000307004, +#endif + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM = 1000309000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM = 1000309001, + VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM = 1000309002, + VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM = 1000309003, + VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM = 1000309004, + VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM = 1000309005, + VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000, + VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000, + VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001, + VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002, + VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT = 1000311003, + VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT = 1000311004, + VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT = 1000311005, + VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT = 1000311006, + VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT = 1000311007, + VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT = 1000311008, + VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009, + VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010, + VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002, + VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT = 1000316003, + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT = 1000316004, + VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316005, + VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316006, + VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316007, + VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316008, + VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT = 1000316010, + VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT = 1000316011, + VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT = 1000316012, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316009, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR = 1000318000, + VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR = 1000318001, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR = 1000318002, + VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR = 1000318003, + VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR = 1000318004, + VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR = 1000318005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR = 1000318006, + VK_STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR = 1000318007, + VK_STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR = 1000318008, + VK_STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR = 1000318009, + VK_STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR = 1000318010, + VK_STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR = 1000318011, + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT = 1000318012, + VK_STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT = 1000318013, + VK_STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD = 1000318014, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR = 1000318015, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = 1000320000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = 1000320001, + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = 1000320002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD = 1000321000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR = 1000203000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR = 1000322000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000, + 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_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT = 1000328000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT = 1000328001, + 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_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000, + VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001, + VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT = 1000341000, + VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT = 1000341001, + VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT = 1000341002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000, + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000, + 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_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT = 1000354000, + VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT = 1000354001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000, + 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_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003, + VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005, + VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007, + VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008, + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009, + VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000, + VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001, + VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000, + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000, + VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001, + VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002, + 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_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR = 1000387000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE = 1000390000, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE = 1000390001, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE = 1000390002, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE = 1000390003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001, + VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000, + VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001, + VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002, + VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT = 1000396003, + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT = 1000396004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT = 1000396005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT = 1000396006, + VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT = 1000396007, + VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT = 1000396008, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV = 1000397000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV = 1000397001, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV = 1000397002, +#endif + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000, + VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000, + VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001, + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002, + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003, + VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000, + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001, + VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV = 1000429008, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV = 1000429009, + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV = 1000429010, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR = 1000434000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001, + VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001, + VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS = 1000452000, + VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS = 1000452001, + VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS = 1000452002, + VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS = 1000452003, + VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS = 1000452004, + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS = 1000452005, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000458002, + VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003, + VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000, + VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001, + VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM = 1000460000, + VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM = 1000460001, + VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM = 1000460002, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM = 1000460003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM = 1000460004, + VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM = 1000460005, + VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM = 1000460006, + VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM = 1000460007, + VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM = 1000460008, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM = 1000460009, + VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM = 1000460010, + VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM = 1000460011, + VK_STRUCTURE_TYPE_TENSOR_COPY_ARM = 1000460012, + VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM = 1000460013, + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM = 1000460014, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM = 1000460015, + VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM = 1000460016, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM = 1000460017, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM = 1000460018, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM = 1000460019, + VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM = 1000460020, + VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460021, + VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM = 1000460022, + VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM = 1000460023, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002, + VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT = 1000462003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT = 1000342000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV = 1000464000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV = 1000464001, + VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV = 1000464002, + VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV = 1000464003, + VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV = 1000464004, + VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005, + VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001, + VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD = 1000476000, + VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD = 1000476001, + VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD = 1000476002, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX = 1000478000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX = 1000478001, +#endif + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR = 1000479000, + VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR = 1000479001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR = 1000479002, + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR = 1000480000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR = 1000480001, + VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR = 1000480002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001, + VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR = 1000483000, + VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR = 1000483001, + VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR = 1000483002, + VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR = 1000483003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR = 1000483004, + VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR = 1000483005, + VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR = 1000483006, + VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR = 1000483007, + VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR = 1000483008, + VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR = 1000483009, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000, + VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000, + VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR = 1000274000, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR = 1000274001, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR = 1000274002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR = 1000275000, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR = 1000275001, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR = 1000275002, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR = 1000275003, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR = 1000275004, + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR = 1000275005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV = 1000491000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491001, + VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV = 1000491002, + VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV = 1000491004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000, + VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT = 1000495000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT = 1000495001, + VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR = 1000504000, + VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000, + VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001, + VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002, + VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003, + VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004, + VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005, + VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006, + VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007, + VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000, + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM = 1000507000, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM = 1000507001, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM = 1000507002, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM = 1000507003, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM = 1000507004, + VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM = 1000507005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM = 1000507006, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM = 1000507007, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM = 1000507008, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM = 1000507009, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM = 1000507010, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM = 1000507011, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM = 1000507012, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM = 1000507013, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM = 1000507014, + VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM = 1000507016, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM = 1000507017, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM = 1000507018, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM = 1000507019, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM = 1000507015, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000, + VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR = 1000201000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR = 1000511000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001, + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003, + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004, + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR = 1000513000, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000513001, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR = 1000513002, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR = 1000513003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR = 1000513004, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR = 1000513005, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR = 1000513006, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR = 1000513007, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR = 1000513008, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR = 1000513009, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR = 1000513010, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR = 1000514000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR = 1000514001, + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR = 1000514002, + VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR = 1000514003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000, + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001, + VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002, + VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001, + VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR = 1000527000, + VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT = 1000527001, + VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000, + VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001, + VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002, + VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000, + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000, + VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007, + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM = 1000547000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM = 1000547001, + VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM = 1000547002, + VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM = 1000547003, + VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM = 1000547004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR = 1000549000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR = 1000426001, + VK_STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR = 1000549002, + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR = 1000549003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT = 1000427000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT = 1000427001, + VK_STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT = 1000550002, + VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV = 1000551000, + VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV = 1000551001, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR = 1000552000, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR = 1000552001, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR = 1000552002, + VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR = 1000552003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR = 1000552004, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553000, + VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553001, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR = 1000553002, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000553005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR = 1000553009, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553003, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553004, + VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553006, + VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR = 1000553007, + VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR = 1000553008, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV = 1000555000, + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV = 1000556000, + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV = 1000556001, + VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV = 1000556002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV = 1000556003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR = 1000558000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV = 1000559000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR = 1000562000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR = 1000562001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR = 1000562002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR = 1000562003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR = 1000562004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV = 1000563000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT = 1000564000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT = 1000567000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV = 1000568000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV = 1000569000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000569001, + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV = 1000569002, + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV = 1000569003, + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV = 1000569004, + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV = 1000569005, + VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV = 1000569006, + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000569007, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV = 1000570000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV = 1000570001, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570002, + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV = 1000570003, + VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV = 1000570004, + VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV = 1000570005, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT = 1000572000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT = 1000572001, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT = 1000572002, + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT = 1000572003, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT = 1000572004, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT = 1000572006, + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT = 1000572007, + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT = 1000572008, + VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT = 1000572009, + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT = 1000572010, + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT = 1000572011, + VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT = 1000572012, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT = 1000572013, + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT = 1000572014, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR = 1000573000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR = 1000573001, + VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR = 1000573002, + VK_STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR = 1000573003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR = 1000574000, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR = 1000574002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA = 1000575000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA = 1000575001, + VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA = 1000575002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR = 1000579000, + VK_STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV = 1000580000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV = 1000580001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV = 1000580002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT = 1000581000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT = 1000581001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT = 1000582000, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT = 1000582001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR = 1000584000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR = 1000584001, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR = 1000584002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR = 1000586000, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586001, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586002, + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR = 1000586003, + VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS = 1000685000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI = 1000590000, + VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI = 1000590001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV = 1000593000, + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV = 1000593001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV = 1000593002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM = 1000596000, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT = 1000602000, + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT = 1000602001, + VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT = 1000602002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR = 1000421000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_FEATURES_ARM = 1000605000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_PROPERTIES_ARM = 1000605001, + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_ARM = 1000605002, + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_ARM = 1000605003, + VK_STRUCTURE_TYPE_RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM = 1000605004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM = 1000607000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM = 1000607001, + VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM = 1000607002, + VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM = 1000607003, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT = 1000608000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM = 1000609000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE = 1000611000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE = 1000611001, + VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE = 1000611002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR = 1000286000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR = 1000286001, + VK_STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV = 1000613000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV = 1000613001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT = 1000425000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT = 1000425001, + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT = 1000425002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT = 1000620000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR = 1000361000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT = 1000627000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT = 1000628000, + VK_STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT = 1000628001, + VK_STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT = 1000628002, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM = 1000629000, + VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM = 1000629001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR = 1000630000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR = 1000630001, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR = 1000630002, + VK_STRUCTURE_TYPE_RENDERING_END_INFO_KHR = 1000619003, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR = 1000630004, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT = 1000635000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT = 1000635001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC = 1000637000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT = 1000642000, + VK_STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV = 1000645000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV = 1000645001, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT = 1000662000, + VK_STRUCTURE_TYPE_UBM_SURFACE_CREATE_INFO_SEC = 1000664000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE = 1000673000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, + // VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT is a legacy alias + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, + VK_STRUCTURE_TYPE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_INFO, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, + VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO, + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, + VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO, + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO, + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, + // VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT is a legacy alias + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO, + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO, + VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR, + VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES, + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES, + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO, + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, + // VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL is a legacy alias + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES, + VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO, + VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT, + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES, + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES, + VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY, + VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO, + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO, + VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO, + VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE, + VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY, + VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_MAP_INFO, + VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR, + VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR, + VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR, + VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO, + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, + VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, + VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = VK_STRUCTURE_TYPE_SUBMIT_INFO_2, + VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, + VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2, + VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2, + VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2, + VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_IMAGE_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = VK_STRUCTURE_TYPE_IMAGE_BLIT_2, + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2, + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT, + VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT, + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR, + VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES, + VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, + VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT, + VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES, + VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_AREA_INFO, + VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO, + VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2, + VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2, + VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO, + VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO, + VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES, + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES, + VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS, + VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO, + VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO, + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO, + VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO, + VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT = VK_STRUCTURE_TYPE_RENDERING_END_INFO_KHR, + VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkStructureType; + +typedef enum 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_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000, + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT = 1000295000, + 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_CU_MODULE_NVX = 1000029000, + VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001, + 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, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_OBJECT_TYPE_CUDA_MODULE_NV = 1000307000, +#endif +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_OBJECT_TYPE_CUDA_FUNCTION_NV = 1000307001, +#endif + VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000, + VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000, + VK_OBJECT_TYPE_TENSOR_ARM = 1000460000, + VK_OBJECT_TYPE_TENSOR_VIEW_ARM = 1000460001, + VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000, + VK_OBJECT_TYPE_SHADER_EXT = 1000482000, + VK_OBJECT_TYPE_PIPELINE_BINARY_KHR = 1000483000, + VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM = 1000507000, + VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV = 1000556000, + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT = 1000572000, + VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT = 1000572001, + VK_OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM = 1000607000, + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT, + VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkObjectType; + +typedef enum VkVendorId { + VK_VENDOR_ID_KHRONOS = 0x10000, + VK_VENDOR_ID_VIV = 0x10001, + VK_VENDOR_ID_VSI = 0x10002, + VK_VENDOR_ID_KAZAN = 0x10003, + VK_VENDOR_ID_CODEPLAY = 0x10004, + VK_VENDOR_ID_MESA = 0x10005, + VK_VENDOR_ID_POCL = 0x10006, + VK_VENDOR_ID_MOBILEYE = 0x10007, + VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF +} VkVendorId; + +typedef enum 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 = 0x7FFFFFFF +} VkSystemAllocationScope; + +typedef enum VkInternalAllocationType { + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0, + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkInternalAllocationType; + +typedef enum 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_G8_B8R8_2PLANE_444_UNORM = 1000330000, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002, + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003, + VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000, + VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001, + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000, + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001, + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002, + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003, + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004, + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005, + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006, + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007, + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008, + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009, + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010, + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011, + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012, + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013, + VK_FORMAT_A1B5G5R5_UNORM_PACK16 = 1000470000, + VK_FORMAT_A8_UNORM = 1000470001, + 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_3x3x3_UNORM_BLOCK_EXT = 1000288000, + VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT = 1000288001, + VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT = 1000288002, + VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT = 1000288003, + VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT = 1000288004, + VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT = 1000288005, + VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT = 1000288006, + VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT = 1000288007, + VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT = 1000288008, + VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT = 1000288009, + VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT = 1000288010, + VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT = 1000288011, + VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT = 1000288012, + VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT = 1000288013, + VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT = 1000288014, + VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT = 1000288015, + VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT = 1000288016, + VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT = 1000288017, + VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT = 1000288018, + VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT = 1000288019, + VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT = 1000288020, + VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT = 1000288021, + VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT = 1000288022, + VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT = 1000288023, + VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT = 1000288024, + VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT = 1000288025, + VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT = 1000288026, + VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT = 1000288027, + VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT = 1000288028, + VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT = 1000288029, + VK_FORMAT_R8_BOOL_ARM = 1000460000, + VK_FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM = 1000460001, + VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM = 1000460002, + VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM = 1000460003, + VK_FORMAT_R16G16_SFIXED5_NV = 1000464000, + VK_FORMAT_R10X6_UINT_PACK16_ARM = 1000609000, + VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM = 1000609001, + VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM = 1000609002, + VK_FORMAT_R12X4_UINT_PACK16_ARM = 1000609003, + VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM = 1000609004, + VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM = 1000609005, + VK_FORMAT_R14X2_UINT_PACK16_ARM = 1000609006, + VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM = 1000609007, + VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM = 1000609008, + VK_FORMAT_R14X2_UNORM_PACK16_ARM = 1000609009, + VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM = 1000609010, + VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM = 1000609011, + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM = 1000609012, + VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM = 1000609013, + VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK, + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK, + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK, + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK, + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK, + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK, + VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM, + VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM, + VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, + VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, + VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, + VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, + VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, + VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16, + VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16, + VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, + VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, + VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, + VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, + VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16, + VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16, + VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, + VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, + VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, + VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM, + VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM, + VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, + VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, + VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, + VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, + VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, + VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM, + VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, + VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, + VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM, + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16, + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16, + // VK_FORMAT_R16G16_S10_5_NV is a legacy alias + VK_FORMAT_R16G16_S10_5_NV = VK_FORMAT_R16G16_SFIXED5_NV, + VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = VK_FORMAT_A1B5G5R5_UNORM_PACK16, + VK_FORMAT_A8_UNORM_KHR = VK_FORMAT_A8_UNORM, + VK_FORMAT_MAX_ENUM = 0x7FFFFFFF +} VkFormat; + +typedef enum VkImageTiling { + VK_IMAGE_TILING_OPTIMAL = 0, + VK_IMAGE_TILING_LINEAR = 1, + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000, + VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF +} VkImageTiling; + +typedef enum VkImageType { + VK_IMAGE_TYPE_1D = 0, + VK_IMAGE_TYPE_2D = 1, + VK_IMAGE_TYPE_3D = 2, + VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkImageType; + +typedef enum 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 = 0x7FFFFFFF +} VkPhysicalDeviceType; + +typedef enum 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_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_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000, + VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000, + VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001, + VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT = 1000396000, + VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT = 1000396001, + VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkQueryType; + +typedef enum VkSharingMode { + VK_SHARING_MODE_EXCLUSIVE = 0, + VK_SHARING_MODE_CONCURRENT = 1, + VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSharingMode; + +typedef enum 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_READ_ONLY_OPTIMAL = 1000314000, + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001, + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ = 1000232000, + 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_SHARED_PRESENT_KHR = 1000111000, + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, + VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003, + 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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000, + VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM = 1000460000, + VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR = 1000553000, + VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT = 1000620000, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, + VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR = VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ, + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL, + VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, + VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF +} VkImageLayout; + +typedef enum 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 = 0x7FFFFFFF +} VkComponentSwizzle; + +typedef enum 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 = 0x7FFFFFFF +} VkImageViewType; + +typedef enum VkCommandBufferLevel { + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0, + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1, + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF +} VkCommandBufferLevel; + +typedef enum VkIndexType { + VK_INDEX_TYPE_UINT16 = 0, + VK_INDEX_TYPE_UINT32 = 1, + VK_INDEX_TYPE_UINT8 = 1000265000, + VK_INDEX_TYPE_NONE_KHR = 1000165000, + VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR, + VK_INDEX_TYPE_UINT8_EXT = VK_INDEX_TYPE_UINT8, + VK_INDEX_TYPE_UINT8_KHR = VK_INDEX_TYPE_UINT8, + VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkIndexType; + +typedef enum VkPipelineCacheHeaderVersion { + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, + VK_PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM = 1000629000, + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCacheHeaderVersion; + +typedef enum 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 = 0x7FFFFFFF +} VkBorderColor; + +typedef enum VkFilter { + VK_FILTER_NEAREST = 0, + VK_FILTER_LINEAR = 1, + VK_FILTER_CUBIC_EXT = 1000015000, + VK_FILTER_CUBIC_IMG = VK_FILTER_CUBIC_EXT, + VK_FILTER_MAX_ENUM = 0x7FFFFFFF +} VkFilter; + +typedef enum 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 is a legacy alias + VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerAddressMode; + +typedef enum 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 = 0x7FFFFFFF +} VkCompareOp; + +typedef enum VkSamplerMipmapMode { + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerMipmapMode; + +typedef enum 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 = 1000138000, + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, + VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000, + VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001, + VK_DESCRIPTOR_TYPE_TENSOR_ARM = 1000460000, + VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000, + VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV = 1000570000, + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, + VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = VK_DESCRIPTOR_TYPE_MUTABLE_EXT, + VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorType; + +typedef enum VkPipelineBindPoint { + VK_PIPELINE_BIND_POINT_GRAPHICS = 0, + VK_PIPELINE_BIND_POINT_COMPUTE = 1, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX = 1000134000, +#endif + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000, + VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003, + VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM = 1000507000, + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, + VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF +} VkPipelineBindPoint; + +typedef enum 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 = 0x7FFFFFFF +} VkBlendFactor; + +typedef enum 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 = 0x7FFFFFFF +} VkBlendOp; + +typedef enum 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_CULL_MODE = 1000267000, + VK_DYNAMIC_STATE_FRONT_FACE = 1000267001, + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = 1000267002, + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT = 1000267003, + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT = 1000267004, + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = 1000267005, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE = 1000267006, + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE = 1000267007, + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP = 1000267008, + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = 1000267009, + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE = 1000267010, + VK_DYNAMIC_STATE_STENCIL_OP = 1000267011, + VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001, + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002, + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004, + VK_DYNAMIC_STATE_LINE_STIPPLE = 1000259000, + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000, + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000, + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001, + VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002, + 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_ENABLE_NV = 1000205000, + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001, + VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000, + VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000, + VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000, + VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003, + VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000, + VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003, + VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004, + VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005, + VK_DYNAMIC_STATE_SAMPLE_MASK_EXT = 1000455006, + VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT = 1000455007, + VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT = 1000455008, + VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT = 1000455009, + VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010, + VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011, + VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012, + VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002, + VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013, + VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014, + VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015, + VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT = 1000455016, + VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT = 1000455017, + VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT = 1000455018, + VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT = 1000455019, + VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT = 1000455020, + VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT = 1000455021, + VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT = 1000455022, + VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV = 1000455023, + VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV = 1000455024, + VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV = 1000455025, + VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV = 1000455026, + VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV = 1000455027, + VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV = 1000455028, + VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV = 1000455029, + VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030, + VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031, + VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032, + VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000, + VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT = 1000582000, + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = VK_DYNAMIC_STATE_LINE_STIPPLE, + VK_DYNAMIC_STATE_CULL_MODE_EXT = VK_DYNAMIC_STATE_CULL_MODE, + VK_DYNAMIC_STATE_FRONT_FACE_EXT = VK_DYNAMIC_STATE_FRONT_FACE, + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY, + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT, + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE, + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, + VK_DYNAMIC_STATE_STENCIL_OP_EXT = VK_DYNAMIC_STATE_STENCIL_OP, + VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE, + VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE, + VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, + VK_DYNAMIC_STATE_LINE_STIPPLE_KHR = VK_DYNAMIC_STATE_LINE_STIPPLE, + VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF +} VkDynamicState; + +typedef enum VkFrontFace { + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, + VK_FRONT_FACE_CLOCKWISE = 1, + VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF +} VkFrontFace; + +typedef enum 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 = 0x7FFFFFFF +} VkLogicOp; + +typedef enum 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 = 0x7FFFFFFF +} VkStencilOp; + +typedef enum VkVertexInputRate { + VK_VERTEX_INPUT_RATE_VERTEX = 0, + VK_VERTEX_INPUT_RATE_INSTANCE = 1, + VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF +} VkVertexInputRate; + +typedef enum 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 = 0x7FFFFFFF +} VkPrimitiveTopology; + +typedef enum 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 = 0x7FFFFFFF +} VkPolygonMode; + +typedef enum VkAttachmentLoadOp { + VK_ATTACHMENT_LOAD_OP_LOAD = 0, + VK_ATTACHMENT_LOAD_OP_CLEAR = 1, + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2, + VK_ATTACHMENT_LOAD_OP_NONE = 1000400000, + VK_ATTACHMENT_LOAD_OP_NONE_EXT = VK_ATTACHMENT_LOAD_OP_NONE, + VK_ATTACHMENT_LOAD_OP_NONE_KHR = VK_ATTACHMENT_LOAD_OP_NONE, + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF +} VkAttachmentLoadOp; + +typedef enum VkAttachmentStoreOp { + VK_ATTACHMENT_STORE_OP_STORE = 0, + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1, + VK_ATTACHMENT_STORE_OP_NONE = 1000301000, + VK_ATTACHMENT_STORE_OP_NONE_KHR = VK_ATTACHMENT_STORE_OP_NONE, + VK_ATTACHMENT_STORE_OP_NONE_QCOM = VK_ATTACHMENT_STORE_OP_NONE, + VK_ATTACHMENT_STORE_OP_NONE_EXT = VK_ATTACHMENT_STORE_OP_NONE, + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF +} VkAttachmentStoreOp; + +typedef enum VkSubpassContents { + VK_SUBPASS_CONTENTS_INLINE = 0, + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1, + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR = 1000451000, + VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR, + VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF +} VkSubpassContents; + +typedef enum VkFormatFeatureFlagBits { + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, + VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000, + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000, + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000, + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000, + VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000, + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000, + VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000, + VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000, + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000, + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000, + VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000, + VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000, + VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT, + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT, + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT, + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT, + VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT, + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFormatFeatureFlagBits; +typedef VkFlags VkFormatFeatureFlags; + +typedef enum VkImageCreateFlagBits { + VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, + VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, + VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004, + VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, + VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010, + VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400, + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040, + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020, + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080, + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100, + VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800, + VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200, + VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0x00002000, + VK_IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT = 0x00010000, + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000, + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000, + VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 0x00040000, + VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 0x00020000, + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 0x00100000, + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT = 0x00008000, + VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, + VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, + VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, + VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT, + VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT, + VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT, + VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = VK_IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT, + VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT, + VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageCreateFlagBits; +typedef VkFlags VkImageCreateFlags; + +typedef enum VkSampleCountFlagBits { + VK_SAMPLE_COUNT_1_BIT = 0x00000001, + VK_SAMPLE_COUNT_2_BIT = 0x00000002, + VK_SAMPLE_COUNT_4_BIT = 0x00000004, + VK_SAMPLE_COUNT_8_BIT = 0x00000008, + VK_SAMPLE_COUNT_16_BIT = 0x00000010, + VK_SAMPLE_COUNT_32_BIT = 0x00000020, + VK_SAMPLE_COUNT_64_BIT = 0x00000040, + VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSampleCountFlagBits; +typedef VkFlags VkSampleCountFlags; + +typedef enum VkImageUsageFlagBits { + VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, + VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, + VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, + VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, + VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, + VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, + VK_IMAGE_USAGE_HOST_TRANSFER_BIT = 0x00400000, + VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00000400, + VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00000800, + VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000, + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200, + VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100, + VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00002000, + VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00004000, + VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0x00008000, + VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x00080000, + VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0x00040000, + VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 0x00100000, + VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 0x00200000, + VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM = 0x00800000, + VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM = 0x08000000, + VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 0x02000000, + VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 0x04000000, + VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = VK_IMAGE_USAGE_HOST_TRANSFER_BIT, + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageUsageFlagBits; +typedef VkFlags VkImageUsageFlags; + +typedef enum VkInstanceCreateFlagBits { + VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 0x00000001, + VK_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkInstanceCreateFlagBits; +typedef VkFlags VkInstanceCreateFlags; + +typedef enum VkMemoryHeapFlagBits { + VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002, + VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM = 0x00000008, + VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT, + VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryHeapFlagBits; +typedef VkFlags VkMemoryHeapFlags; + +typedef enum VkMemoryPropertyFlagBits { + VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002, + VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004, + VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008, + VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010, + VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020, + VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x00000040, + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080, + VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0x00000100, + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryPropertyFlagBits; +typedef VkFlags VkMemoryPropertyFlags; + +typedef enum VkQueueFlagBits { + VK_QUEUE_GRAPHICS_BIT = 0x00000001, + VK_QUEUE_COMPUTE_BIT = 0x00000002, + VK_QUEUE_TRANSFER_BIT = 0x00000004, + VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, + VK_QUEUE_PROTECTED_BIT = 0x00000010, + VK_QUEUE_VIDEO_DECODE_BIT_KHR = 0x00000020, + VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 0x00000040, + VK_QUEUE_OPTICAL_FLOW_BIT_NV = 0x00000100, + VK_QUEUE_DATA_GRAPH_BIT_ARM = 0x00000400, + VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueueFlagBits; +typedef VkFlags VkQueueFlags; + +typedef enum VkShaderStageFlagBits { + VK_SHADER_STAGE_VERTEX_BIT = 0x00000001, + VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002, + VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004, + VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008, + VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010, + VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020, + VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F, + VK_SHADER_STAGE_ALL = 0x7FFFFFFF, + VK_SHADER_STAGE_RAYGEN_BIT_KHR = 0x00000100, + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0x00000200, + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0x00000400, + VK_SHADER_STAGE_MISS_BIT_KHR = 0x00000800, + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0x00001000, + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0x00002000, + VK_SHADER_STAGE_TASK_BIT_EXT = 0x00000040, + VK_SHADER_STAGE_MESH_BIT_EXT = 0x00000080, + VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0x00004000, + VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = 0x00080000, + VK_SHADER_STAGE_RAYGEN_BIT_NV = VK_SHADER_STAGE_RAYGEN_BIT_KHR, + VK_SHADER_STAGE_ANY_HIT_BIT_NV = VK_SHADER_STAGE_ANY_HIT_BIT_KHR, + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, + VK_SHADER_STAGE_MISS_BIT_NV = VK_SHADER_STAGE_MISS_BIT_KHR, + VK_SHADER_STAGE_INTERSECTION_BIT_NV = VK_SHADER_STAGE_INTERSECTION_BIT_KHR, + VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR, + VK_SHADER_STAGE_TASK_BIT_NV = VK_SHADER_STAGE_TASK_BIT_EXT, + VK_SHADER_STAGE_MESH_BIT_NV = VK_SHADER_STAGE_MESH_BIT_EXT, + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkShaderStageFlagBits; +typedef VkFlags VkShaderStageFlags; +typedef VkFlags VkDeviceCreateFlags; + +typedef enum VkDeviceQueueCreateFlagBits { + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001, + VK_DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR = 0x00000004, + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDeviceQueueCreateFlagBits; +typedef VkFlags VkDeviceQueueCreateFlags; + +typedef enum VkPipelineStageFlagBits { + VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, + VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, + VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, + VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, + VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, + VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, + VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, + VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, + VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, + VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, + VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, + VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, + VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, + VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000, + VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, + VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, + VK_PIPELINE_STAGE_NONE = 0, + VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000, + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000, + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000, + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x00200000, + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000, + VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000, + VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 0x00080000, + VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 0x00100000, + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT = 0x00020000, + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT, + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT, + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT, + VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE, + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineStageFlagBits; +typedef VkFlags VkPipelineStageFlags; + +typedef enum VkMemoryMapFlagBits { + VK_MEMORY_MAP_PLACED_BIT_EXT = 0x00000001, + VK_MEMORY_MAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryMapFlagBits; +typedef VkFlags VkMemoryMapFlags; + +typedef enum VkImageAspectFlagBits { + VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, + VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, + VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, + VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008, + VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010, + VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020, + VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040, + VK_IMAGE_ASPECT_NONE = 0, + VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080, + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100, + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200, + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400, + VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT, + VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT, + VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT, + VK_IMAGE_ASPECT_NONE_KHR = VK_IMAGE_ASPECT_NONE, + VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageAspectFlagBits; +typedef VkFlags VkImageAspectFlags; + +typedef enum VkSparseImageFormatFlagBits { + VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, + VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002, + VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, + VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSparseImageFormatFlagBits; +typedef VkFlags VkSparseImageFormatFlags; + +typedef enum VkSparseMemoryBindFlagBits { + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001, + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSparseMemoryBindFlagBits; +typedef VkFlags VkSparseMemoryBindFlags; + +typedef enum VkFenceCreateFlagBits { + VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001, + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFenceCreateFlagBits; +typedef VkFlags VkFenceCreateFlags; +typedef VkFlags VkSemaphoreCreateFlags; + +typedef enum VkQueryPoolCreateFlagBits { + VK_QUERY_POOL_CREATE_RESET_BIT_KHR = 0x00000001, + VK_QUERY_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueryPoolCreateFlagBits; +typedef VkFlags VkQueryPoolCreateFlags; + +typedef enum VkQueryPipelineStatisticFlagBits { + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, + VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, + VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, + VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, + VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, + VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, + VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, + VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, + VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT = 0x00000800, + VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT = 0x00001000, + VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI = 0x00002000, + VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueryPipelineStatisticFlagBits; +typedef VkFlags VkQueryPipelineStatisticFlags; + +typedef enum VkQueryResultFlagBits { + VK_QUERY_RESULT_64_BIT = 0x00000001, + VK_QUERY_RESULT_WAIT_BIT = 0x00000002, + VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, + VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, + VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010, + VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueryResultFlagBits; +typedef VkFlags VkQueryResultFlags; + +typedef enum VkBufferCreateFlagBits { + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, + VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010, + VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000020, + VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 0x00000040, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkBufferCreateFlagBits; +typedef VkFlags VkBufferCreateFlags; + +typedef enum VkBufferUsageFlagBits { + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000, + VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000, + VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00004000, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800, + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000, + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = 0x02000000, +#endif + VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT = 0x10000000, + VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000, + VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000, + VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400, + VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000, + VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000, + VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 0x00200000, + VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00400000, + VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 0x04000000, + VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 0x00800000, + VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 0x01000000, + VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM = 0x08000000, + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkBufferUsageFlagBits; +typedef VkFlags VkBufferUsageFlags; + +typedef enum VkImageViewCreateFlagBits { + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001, + VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000004, + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 0x00000002, + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkImageViewCreateFlagBits; +typedef VkFlags VkImageViewCreateFlags; + +typedef enum VkAccessFlagBits { + VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, + VK_ACCESS_INDEX_READ_BIT = 0x00000002, + VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004, + VK_ACCESS_UNIFORM_READ_BIT = 0x00000008, + VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010, + VK_ACCESS_SHADER_READ_BIT = 0x00000020, + VK_ACCESS_SHADER_WRITE_BIT = 0x00000040, + VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080, + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100, + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200, + VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400, + VK_ACCESS_TRANSFER_READ_BIT = 0x00000800, + VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000, + VK_ACCESS_HOST_READ_BIT = 0x00002000, + VK_ACCESS_HOST_WRITE_BIT = 0x00004000, + VK_ACCESS_MEMORY_READ_BIT = 0x00008000, + VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, + VK_ACCESS_NONE = 0, + VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000, + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000, + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000, + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000, + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000, + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000, + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000, + VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000, + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT = 0x00020000, + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT = 0x00040000, + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR, + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT, + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT, + VK_ACCESS_NONE_KHR = VK_ACCESS_NONE, + VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkAccessFlagBits; +typedef VkFlags VkAccessFlags; + +typedef enum VkDependencyFlagBits { + VK_DEPENDENCY_BY_REGION_BIT = 0x00000001, + VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004, + VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002, + VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 0x00000008, + VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR = 0x00000020, + VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR = 0x00000040, + VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT, + VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT, + VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDependencyFlagBits; +typedef VkFlags VkDependencyFlags; + +typedef enum VkCommandPoolCreateFlagBits { + VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, + VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, + VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004, + VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandPoolCreateFlagBits; +typedef VkFlags VkCommandPoolCreateFlags; + +typedef enum VkCommandPoolResetFlagBits { + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandPoolResetFlagBits; +typedef VkFlags VkCommandPoolResetFlags; + +typedef enum VkQueryControlFlagBits { + VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001, + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkQueryControlFlagBits; +typedef VkFlags VkQueryControlFlags; + +typedef enum VkCommandBufferUsageFlagBits { + VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001, + VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002, + VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004, + VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandBufferUsageFlagBits; +typedef VkFlags VkCommandBufferUsageFlags; + +typedef enum VkCommandBufferResetFlagBits { + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCommandBufferResetFlagBits; +typedef VkFlags VkCommandBufferResetFlags; + +typedef enum VkEventCreateFlagBits { + VK_EVENT_CREATE_DEVICE_ONLY_BIT = 0x00000001, + VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = VK_EVENT_CREATE_DEVICE_ONLY_BIT, + VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkEventCreateFlagBits; +typedef VkFlags VkEventCreateFlags; +typedef VkFlags VkBufferViewCreateFlags; +typedef VkFlags VkShaderModuleCreateFlags; + +typedef enum VkPipelineCacheCreateFlagBits { + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0x00000001, + VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR = 0x00000008, + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCacheCreateFlagBits; +typedef VkFlags VkPipelineCacheCreateFlags; + +typedef enum VkPipelineCreateFlagBits { + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001, + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002, + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004, + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010, + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008, + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 0x00000100, + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 0x00000200, + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT = 0x08000000, + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT = 0x40000000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000, + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000, + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000, + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000, + VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000, + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020, + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000, + VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000, + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040, + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080, + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00040000, + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0x00000800, + VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0x20000000, + VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0x00800000, + VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT = 0x00000400, + VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000, + VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x02000000, + VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x04000000, + VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 0x01000000, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = 0x10000000, +#endif + // VK_PIPELINE_CREATE_DISPATCH_BASE is a legacy alias + VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, + // VK_PIPELINE_CREATE_DISPATCH_BASE_KHR is a legacy alias + VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, + // VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT is a legacy alias + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, + // VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR is a legacy alias + VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT, + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT, + VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT, + VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT, + VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCreateFlagBits; +typedef VkFlags VkPipelineCreateFlags; + +typedef enum VkPipelineLayoutCreateFlagBits { + VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT = 0x00000002, + VK_PIPELINE_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineLayoutCreateFlagBits; +typedef VkFlags VkPipelineLayoutCreateFlags; + +typedef enum VkPipelineShaderStageCreateFlagBits { + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = 0x00000001, + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 0x00000002, + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT, + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT, + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineShaderStageCreateFlagBits; +typedef VkFlags VkPipelineShaderStageCreateFlags; + +typedef enum VkSamplerCreateFlagBits { + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0x00000001, + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0x00000002, + VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000008, + VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT = 0x00000004, + VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM = 0x00000010, + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSamplerCreateFlagBits; +typedef VkFlags VkSamplerCreateFlags; + +typedef enum VkDescriptorPoolCreateFlagBits { + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001, + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002, + VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT = 0x00000004, + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 0x00000008, + VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 0x00000010, + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, + VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT, + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorPoolCreateFlagBits; +typedef VkFlags VkDescriptorPoolCreateFlags; +typedef VkFlags VkDescriptorPoolResetFlags; + +typedef enum VkDescriptorSetLayoutCreateFlagBits { + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT = 0x00000001, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00000010, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 0x00000020, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00000080, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 0x00000004, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 0x00000040, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT, + VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorSetLayoutCreateFlagBits; +typedef VkFlags VkDescriptorSetLayoutCreateFlags; + +typedef enum VkColorComponentFlagBits { + VK_COLOR_COMPONENT_R_BIT = 0x00000001, + VK_COLOR_COMPONENT_G_BIT = 0x00000002, + VK_COLOR_COMPONENT_B_BIT = 0x00000004, + VK_COLOR_COMPONENT_A_BIT = 0x00000008, + VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkColorComponentFlagBits; +typedef VkFlags VkColorComponentFlags; + +typedef enum VkCullModeFlagBits { + VK_CULL_MODE_NONE = 0, + VK_CULL_MODE_FRONT_BIT = 0x00000001, + VK_CULL_MODE_BACK_BIT = 0x00000002, + VK_CULL_MODE_FRONT_AND_BACK = 0x00000003, + VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkCullModeFlagBits; +typedef VkFlags VkCullModeFlags; + +typedef enum VkPipelineColorBlendStateCreateFlagBits { + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT = 0x00000001, + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM = VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT, + VK_PIPELINE_COLOR_BLEND_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineColorBlendStateCreateFlagBits; +typedef VkFlags VkPipelineColorBlendStateCreateFlags; + +typedef enum VkPipelineDepthStencilStateCreateFlagBits { + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0x00000001, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0x00000002, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT, + VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineDepthStencilStateCreateFlagBits; +typedef VkFlags VkPipelineDepthStencilStateCreateFlags; +typedef VkFlags VkPipelineDynamicStateCreateFlags; +typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; +typedef VkFlags VkPipelineMultisampleStateCreateFlags; +typedef VkFlags VkPipelineRasterizationStateCreateFlags; +typedef VkFlags VkPipelineTessellationStateCreateFlags; +typedef VkFlags VkPipelineVertexInputStateCreateFlags; +typedef VkFlags VkPipelineViewportStateCreateFlags; + +typedef enum VkAttachmentDescriptionFlagBits { + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, + VK_ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR = 0x00000002, + VK_ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = 0x00000004, + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkAttachmentDescriptionFlagBits; +typedef VkFlags VkAttachmentDescriptionFlags; + +typedef enum VkFramebufferCreateFlagBits { + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001, + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFramebufferCreateFlagBits; +typedef VkFlags VkFramebufferCreateFlags; + +typedef enum VkRenderPassCreateFlagBits { + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0x00000002, + VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 0x00000004, + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkRenderPassCreateFlagBits; +typedef VkFlags VkRenderPassCreateFlags; + +typedef enum VkSubpassDescriptionFlagBits { + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001, + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002, + VK_SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM = 0x00000100, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 0x00000010, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0x00000020, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0x00000040, + VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT = 0x00000080, + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT = 0x00000004, + VK_SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT = 0x00000008, + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT, + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = VK_SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT, + VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT, + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubpassDescriptionFlagBits; +typedef VkFlags VkSubpassDescriptionFlags; + +typedef enum VkStencilFaceFlagBits { + VK_STENCIL_FACE_FRONT_BIT = 0x00000001, + VK_STENCIL_FACE_BACK_BIT = 0x00000002, + VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003, + // VK_STENCIL_FRONT_AND_BACK is a legacy alias + VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK, + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkStencilFaceFlagBits; +typedef VkFlags VkStencilFaceFlags; +typedef struct VkExtent2D { + uint32_t width; + uint32_t height; +} VkExtent2D; + +typedef struct VkExtent3D { + uint32_t width; + uint32_t height; + uint32_t depth; +} VkExtent3D; + +typedef struct VkOffset2D { + int32_t x; + int32_t y; +} VkOffset2D; + +typedef struct VkOffset3D { + int32_t x; + int32_t y; + int32_t z; +} VkOffset3D; + +typedef struct VkRect2D { + VkOffset2D offset; + VkExtent2D extent; +} VkRect2D; + +typedef struct VkBaseInStructure { + VkStructureType sType; + const struct VkBaseInStructure* pNext; +} VkBaseInStructure; + +typedef struct VkBaseOutStructure { + VkStructureType sType; + struct VkBaseOutStructure* pNext; +} VkBaseOutStructure; + +typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)( + void* pUserData, + size_t size, + size_t alignment, + VkSystemAllocationScope allocationScope); + +typedef void (VKAPI_PTR *PFN_vkFreeFunction)( + void* pUserData, + void* pMemory); + +typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)( + void* pUserData, + size_t size, + VkInternalAllocationType allocationType, + VkSystemAllocationScope allocationScope); + +typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)( + void* pUserData, + size_t size, + VkInternalAllocationType allocationType, + VkSystemAllocationScope allocationScope); + +typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)( + void* pUserData, + void* pOriginal, + size_t size, + size_t alignment, + VkSystemAllocationScope allocationScope); + +typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void); +typedef struct VkAllocationCallbacks { + void* pUserData; + PFN_vkAllocationFunction pfnAllocation; + PFN_vkReallocationFunction pfnReallocation; + PFN_vkFreeFunction pfnFree; + PFN_vkInternalAllocationNotification pfnInternalAllocation; + PFN_vkInternalFreeNotification pfnInternalFree; +} VkAllocationCallbacks; + +typedef struct VkApplicationInfo { + VkStructureType sType; + const void* pNext; + const char* pApplicationName; + uint32_t applicationVersion; + const char* pEngineName; + uint32_t engineVersion; + uint32_t apiVersion; +} VkApplicationInfo; + +typedef struct VkFormatProperties { + VkFormatFeatureFlags linearTilingFeatures; + VkFormatFeatureFlags optimalTilingFeatures; + VkFormatFeatureFlags bufferFeatures; +} VkFormatProperties; + +typedef struct VkImageFormatProperties { + VkExtent3D maxExtent; + uint32_t maxMipLevels; + uint32_t maxArrayLayers; + VkSampleCountFlags sampleCounts; + VkDeviceSize maxResourceSize; +} VkImageFormatProperties; + +typedef struct VkInstanceCreateInfo { + VkStructureType sType; + const void* pNext; + VkInstanceCreateFlags flags; + const VkApplicationInfo* pApplicationInfo; + uint32_t enabledLayerCount; + const char* const* ppEnabledLayerNames; + uint32_t enabledExtensionCount; + const char* const* ppEnabledExtensionNames; +} VkInstanceCreateInfo; + +typedef struct VkMemoryHeap { + VkDeviceSize size; + VkMemoryHeapFlags flags; +} VkMemoryHeap; + +typedef struct VkMemoryType { + VkMemoryPropertyFlags propertyFlags; + uint32_t heapIndex; +} VkMemoryType; + +typedef struct VkPhysicalDeviceFeatures { + VkBool32 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; +} VkPhysicalDeviceFeatures; + +typedef struct VkPhysicalDeviceLimits { + uint32_t maxImageDimension1D; + uint32_t maxImageDimension2D; + uint32_t maxImageDimension3D; + uint32_t maxImageDimensionCube; + uint32_t maxImageArrayLayers; + uint32_t maxTexelBufferElements; + uint32_t maxUniformBufferRange; + uint32_t maxStorageBufferRange; + uint32_t maxPushConstantsSize; + uint32_t maxMemoryAllocationCount; + uint32_t maxSamplerAllocationCount; + VkDeviceSize bufferImageGranularity; + VkDeviceSize sparseAddressSpaceSize; + uint32_t maxBoundDescriptorSets; + uint32_t maxPerStageDescriptorSamplers; + uint32_t maxPerStageDescriptorUniformBuffers; + uint32_t maxPerStageDescriptorStorageBuffers; + uint32_t maxPerStageDescriptorSampledImages; + uint32_t maxPerStageDescriptorStorageImages; + uint32_t maxPerStageDescriptorInputAttachments; + uint32_t maxPerStageResources; + uint32_t maxDescriptorSetSamplers; + uint32_t maxDescriptorSetUniformBuffers; + uint32_t maxDescriptorSetUniformBuffersDynamic; + uint32_t maxDescriptorSetStorageBuffers; + uint32_t maxDescriptorSetStorageBuffersDynamic; + uint32_t maxDescriptorSetSampledImages; + uint32_t maxDescriptorSetStorageImages; + uint32_t maxDescriptorSetInputAttachments; + uint32_t maxVertexInputAttributes; + uint32_t maxVertexInputBindings; + uint32_t maxVertexInputAttributeOffset; + uint32_t maxVertexInputBindingStride; + uint32_t maxVertexOutputComponents; + uint32_t maxTessellationGenerationLevel; + uint32_t maxTessellationPatchSize; + uint32_t maxTessellationControlPerVertexInputComponents; + uint32_t maxTessellationControlPerVertexOutputComponents; + uint32_t maxTessellationControlPerPatchOutputComponents; + uint32_t maxTessellationControlTotalOutputComponents; + uint32_t maxTessellationEvaluationInputComponents; + uint32_t maxTessellationEvaluationOutputComponents; + uint32_t maxGeometryShaderInvocations; + uint32_t maxGeometryInputComponents; + uint32_t maxGeometryOutputComponents; + uint32_t maxGeometryOutputVertices; + uint32_t maxGeometryTotalOutputComponents; + uint32_t maxFragmentInputComponents; + uint32_t maxFragmentOutputAttachments; + uint32_t maxFragmentDualSrcAttachments; + uint32_t maxFragmentCombinedOutputResources; + uint32_t maxComputeSharedMemorySize; + uint32_t maxComputeWorkGroupCount[3]; + uint32_t maxComputeWorkGroupInvocations; + uint32_t maxComputeWorkGroupSize[3]; + uint32_t subPixelPrecisionBits; + uint32_t subTexelPrecisionBits; + uint32_t mipmapPrecisionBits; + uint32_t maxDrawIndexedIndexValue; + uint32_t maxDrawIndirectCount; + float maxSamplerLodBias; + float maxSamplerAnisotropy; + uint32_t maxViewports; + uint32_t maxViewportDimensions[2]; + float viewportBoundsRange[2]; + uint32_t viewportSubPixelBits; + size_t minMemoryMapAlignment; + VkDeviceSize minTexelBufferOffsetAlignment; + VkDeviceSize minUniformBufferOffsetAlignment; + VkDeviceSize minStorageBufferOffsetAlignment; + int32_t minTexelOffset; + uint32_t maxTexelOffset; + int32_t minTexelGatherOffset; + uint32_t maxTexelGatherOffset; + float minInterpolationOffset; + float maxInterpolationOffset; + uint32_t subPixelInterpolationOffsetBits; + uint32_t maxFramebufferWidth; + uint32_t maxFramebufferHeight; + uint32_t maxFramebufferLayers; + VkSampleCountFlags framebufferColorSampleCounts; + VkSampleCountFlags framebufferDepthSampleCounts; + VkSampleCountFlags framebufferStencilSampleCounts; + VkSampleCountFlags framebufferNoAttachmentsSampleCounts; + uint32_t maxColorAttachments; + VkSampleCountFlags sampledImageColorSampleCounts; + VkSampleCountFlags sampledImageIntegerSampleCounts; + VkSampleCountFlags sampledImageDepthSampleCounts; + VkSampleCountFlags sampledImageStencilSampleCounts; + VkSampleCountFlags storageImageSampleCounts; + uint32_t maxSampleMaskWords; + VkBool32 timestampComputeAndGraphics; + float timestampPeriod; + uint32_t maxClipDistances; + uint32_t maxCullDistances; + uint32_t maxCombinedClipAndCullDistances; + uint32_t discreteQueuePriorities; + float pointSizeRange[2]; + float lineWidthRange[2]; + float pointSizeGranularity; + float lineWidthGranularity; + VkBool32 strictLines; + VkBool32 standardSampleLocations; + VkDeviceSize optimalBufferCopyOffsetAlignment; + VkDeviceSize optimalBufferCopyRowPitchAlignment; + VkDeviceSize nonCoherentAtomSize; +} VkPhysicalDeviceLimits; + +typedef struct VkPhysicalDeviceMemoryProperties { + uint32_t memoryTypeCount; + VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES]; + uint32_t memoryHeapCount; + VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS]; +} VkPhysicalDeviceMemoryProperties; + +typedef struct VkPhysicalDeviceSparseProperties { + VkBool32 residencyStandard2DBlockShape; + VkBool32 residencyStandard2DMultisampleBlockShape; + VkBool32 residencyStandard3DBlockShape; + VkBool32 residencyAlignedMipSize; + VkBool32 residencyNonResidentStrict; +} VkPhysicalDeviceSparseProperties; + +typedef struct VkPhysicalDeviceProperties { + uint32_t apiVersion; + uint32_t driverVersion; + uint32_t vendorID; + uint32_t deviceID; + VkPhysicalDeviceType deviceType; + char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]; + uint8_t pipelineCacheUUID[VK_UUID_SIZE]; + VkPhysicalDeviceLimits limits; + VkPhysicalDeviceSparseProperties sparseProperties; +} VkPhysicalDeviceProperties; + +typedef struct VkQueueFamilyProperties { + VkQueueFlags queueFlags; + uint32_t queueCount; + uint32_t timestampValidBits; + VkExtent3D minImageTransferGranularity; +} VkQueueFamilyProperties; + +typedef struct VkDeviceQueueCreateInfo { + VkStructureType sType; + const void* pNext; + VkDeviceQueueCreateFlags flags; + uint32_t queueFamilyIndex; + uint32_t queueCount; + const float* pQueuePriorities; +} VkDeviceQueueCreateInfo; + +typedef struct VkDeviceCreateInfo { + VkStructureType sType; + const void* pNext; + VkDeviceCreateFlags flags; + uint32_t queueCreateInfoCount; + const VkDeviceQueueCreateInfo* pQueueCreateInfos; + // enabledLayerCount is legacy and not used + uint32_t enabledLayerCount; + // ppEnabledLayerNames is legacy and not used + const char* const* ppEnabledLayerNames; + uint32_t enabledExtensionCount; + const char* const* ppEnabledExtensionNames; + const VkPhysicalDeviceFeatures* pEnabledFeatures; +} VkDeviceCreateInfo; + +typedef struct VkExtensionProperties { + char extensionName[VK_MAX_EXTENSION_NAME_SIZE]; + uint32_t specVersion; +} VkExtensionProperties; + +typedef struct VkLayerProperties { + char layerName[VK_MAX_EXTENSION_NAME_SIZE]; + uint32_t specVersion; + uint32_t implementationVersion; + char description[VK_MAX_DESCRIPTION_SIZE]; +} VkLayerProperties; + +typedef struct VkSubmitInfo { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreCount; + const VkSemaphore* pWaitSemaphores; + const VkPipelineStageFlags* pWaitDstStageMask; + uint32_t commandBufferCount; + const VkCommandBuffer* pCommandBuffers; + uint32_t signalSemaphoreCount; + const VkSemaphore* pSignalSemaphores; +} VkSubmitInfo; + +typedef struct VkMappedMemoryRange { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkDeviceSize offset; + VkDeviceSize size; +} VkMappedMemoryRange; + +typedef struct VkMemoryAllocateInfo { + VkStructureType sType; + const void* pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeIndex; +} VkMemoryAllocateInfo; + +typedef struct VkMemoryRequirements { + VkDeviceSize size; + VkDeviceSize alignment; + uint32_t memoryTypeBits; +} VkMemoryRequirements; + +typedef struct VkImageSubresource { + VkImageAspectFlags aspectMask; + uint32_t mipLevel; + uint32_t arrayLayer; +} VkImageSubresource; + +typedef struct VkSparseImageFormatProperties { + VkImageAspectFlags aspectMask; + VkExtent3D imageGranularity; + VkSparseImageFormatFlags flags; +} VkSparseImageFormatProperties; + +typedef struct VkSparseImageMemoryBind { + VkImageSubresource subresource; + VkOffset3D offset; + VkExtent3D extent; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + VkSparseMemoryBindFlags flags; +} VkSparseImageMemoryBind; + +typedef struct VkSparseImageMemoryBindInfo { + VkImage image; + uint32_t bindCount; + const VkSparseImageMemoryBind* pBinds; +} VkSparseImageMemoryBindInfo; + +typedef struct VkSparseImageMemoryRequirements { + VkSparseImageFormatProperties formatProperties; + uint32_t imageMipTailFirstLod; + VkDeviceSize imageMipTailSize; + VkDeviceSize imageMipTailOffset; + VkDeviceSize imageMipTailStride; +} VkSparseImageMemoryRequirements; + +typedef struct VkSparseMemoryBind { + VkDeviceSize resourceOffset; + VkDeviceSize size; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + VkSparseMemoryBindFlags flags; +} VkSparseMemoryBind; + +typedef struct VkSparseBufferMemoryBindInfo { + VkBuffer buffer; + uint32_t bindCount; + const VkSparseMemoryBind* pBinds; +} VkSparseBufferMemoryBindInfo; + +typedef struct VkSparseImageOpaqueMemoryBindInfo { + VkImage image; + uint32_t bindCount; + const VkSparseMemoryBind* pBinds; +} VkSparseImageOpaqueMemoryBindInfo; + +typedef struct VkBindSparseInfo { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreCount; + const VkSemaphore* pWaitSemaphores; + uint32_t bufferBindCount; + const VkSparseBufferMemoryBindInfo* pBufferBinds; + uint32_t imageOpaqueBindCount; + const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds; + uint32_t imageBindCount; + const VkSparseImageMemoryBindInfo* pImageBinds; + uint32_t signalSemaphoreCount; + const VkSemaphore* pSignalSemaphores; +} VkBindSparseInfo; + +typedef struct VkFenceCreateInfo { + VkStructureType sType; + const void* pNext; + VkFenceCreateFlags flags; +} VkFenceCreateInfo; + +typedef struct VkSemaphoreCreateInfo { + VkStructureType sType; + const void* pNext; + VkSemaphoreCreateFlags flags; +} VkSemaphoreCreateInfo; + +typedef struct VkQueryPoolCreateInfo { + VkStructureType sType; + const void* pNext; + VkQueryPoolCreateFlags flags; + VkQueryType queryType; + uint32_t queryCount; + VkQueryPipelineStatisticFlags pipelineStatistics; +} VkQueryPoolCreateInfo; + +typedef struct VkBufferCreateInfo { + VkStructureType sType; + const void* pNext; + VkBufferCreateFlags flags; + VkDeviceSize size; + VkBufferUsageFlags usage; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; +} VkBufferCreateInfo; + +typedef struct VkImageCreateInfo { + VkStructureType sType; + const void* pNext; + VkImageCreateFlags flags; + VkImageType imageType; + VkFormat format; + VkExtent3D extent; + uint32_t mipLevels; + uint32_t arrayLayers; + VkSampleCountFlagBits samples; + VkImageTiling tiling; + VkImageUsageFlags usage; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; + VkImageLayout initialLayout; +} VkImageCreateInfo; + +typedef struct VkSubresourceLayout { + VkDeviceSize offset; + VkDeviceSize size; + VkDeviceSize rowPitch; + VkDeviceSize arrayPitch; + VkDeviceSize depthPitch; +} VkSubresourceLayout; + +typedef struct VkComponentMapping { + VkComponentSwizzle r; + VkComponentSwizzle g; + VkComponentSwizzle b; + VkComponentSwizzle a; +} VkComponentMapping; + +typedef struct VkImageSubresourceRange { + VkImageAspectFlags aspectMask; + uint32_t baseMipLevel; + uint32_t levelCount; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkImageSubresourceRange; + +typedef struct VkImageViewCreateInfo { + VkStructureType sType; + const void* pNext; + VkImageViewCreateFlags flags; + VkImage image; + VkImageViewType viewType; + VkFormat format; + VkComponentMapping components; + VkImageSubresourceRange subresourceRange; +} VkImageViewCreateInfo; + +typedef struct VkCommandPoolCreateInfo { + VkStructureType sType; + const void* pNext; + VkCommandPoolCreateFlags flags; + uint32_t queueFamilyIndex; +} VkCommandPoolCreateInfo; + +typedef struct VkCommandBufferAllocateInfo { + VkStructureType sType; + const void* pNext; + VkCommandPool commandPool; + VkCommandBufferLevel level; + uint32_t commandBufferCount; +} VkCommandBufferAllocateInfo; + +typedef struct VkCommandBufferInheritanceInfo { + VkStructureType sType; + const void* pNext; + VkRenderPass renderPass; + uint32_t subpass; + VkFramebuffer framebuffer; + VkBool32 occlusionQueryEnable; + VkQueryControlFlags queryFlags; + VkQueryPipelineStatisticFlags pipelineStatistics; +} VkCommandBufferInheritanceInfo; + +typedef struct VkCommandBufferBeginInfo { + VkStructureType sType; + const void* pNext; + VkCommandBufferUsageFlags flags; + const VkCommandBufferInheritanceInfo* pInheritanceInfo; +} VkCommandBufferBeginInfo; + +typedef struct VkBufferCopy { + VkDeviceSize srcOffset; + VkDeviceSize dstOffset; + VkDeviceSize size; +} VkBufferCopy; + +typedef struct VkImageSubresourceLayers { + VkImageAspectFlags aspectMask; + uint32_t mipLevel; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkImageSubresourceLayers; + +typedef struct VkBufferImageCopy { + VkDeviceSize bufferOffset; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkBufferImageCopy; + +typedef struct VkImageCopy { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy; + +typedef struct VkBufferMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; +} VkBufferMemoryBarrier; + +typedef struct VkImageMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier; + +typedef struct VkMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; +} VkMemoryBarrier; + +typedef struct VkDispatchIndirectCommand { + uint32_t x; + uint32_t y; + uint32_t z; +} VkDispatchIndirectCommand; + +typedef struct VkPipelineCacheHeaderVersionOne { + uint32_t headerSize; + VkPipelineCacheHeaderVersion headerVersion; + uint32_t vendorID; + uint32_t deviceID; + uint8_t pipelineCacheUUID[VK_UUID_SIZE]; +} VkPipelineCacheHeaderVersionOne; + +typedef struct VkEventCreateInfo { + VkStructureType sType; + const void* pNext; + VkEventCreateFlags flags; +} VkEventCreateInfo; + +typedef struct VkBufferViewCreateInfo { + VkStructureType sType; + const void* pNext; + VkBufferViewCreateFlags flags; + VkBuffer buffer; + VkFormat format; + VkDeviceSize offset; + VkDeviceSize range; +} VkBufferViewCreateInfo; + +typedef struct VkShaderModuleCreateInfo { + VkStructureType sType; + const void* pNext; + VkShaderModuleCreateFlags flags; + size_t codeSize; + const uint32_t* pCode; +} VkShaderModuleCreateInfo; + +typedef struct VkPipelineCacheCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCacheCreateFlags flags; + size_t initialDataSize; + const void* pInitialData; +} VkPipelineCacheCreateInfo; + +typedef struct VkSpecializationMapEntry { + uint32_t constantID; + uint32_t offset; + size_t size; +} VkSpecializationMapEntry; + +typedef struct VkSpecializationInfo { + uint32_t mapEntryCount; + const VkSpecializationMapEntry* pMapEntries; + size_t dataSize; + const void* pData; +} VkSpecializationInfo; + +typedef struct VkPipelineShaderStageCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineShaderStageCreateFlags flags; + VkShaderStageFlagBits stage; + VkShaderModule module; + const char* pName; + const VkSpecializationInfo* pSpecializationInfo; +} VkPipelineShaderStageCreateInfo; + +typedef struct VkComputePipelineCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + VkPipelineShaderStageCreateInfo stage; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkComputePipelineCreateInfo; + +typedef struct VkPushConstantRange { + VkShaderStageFlags stageFlags; + uint32_t offset; + uint32_t size; +} VkPushConstantRange; + +typedef struct VkPipelineLayoutCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineLayoutCreateFlags flags; + uint32_t setLayoutCount; + const VkDescriptorSetLayout* pSetLayouts; + uint32_t pushConstantRangeCount; + const VkPushConstantRange* pPushConstantRanges; +} VkPipelineLayoutCreateInfo; + +typedef struct VkSamplerCreateInfo { + VkStructureType sType; + const void* pNext; + VkSamplerCreateFlags flags; + VkFilter magFilter; + VkFilter minFilter; + VkSamplerMipmapMode mipmapMode; + VkSamplerAddressMode addressModeU; + VkSamplerAddressMode addressModeV; + VkSamplerAddressMode addressModeW; + float mipLodBias; + VkBool32 anisotropyEnable; + float maxAnisotropy; + VkBool32 compareEnable; + VkCompareOp compareOp; + float minLod; + float maxLod; + VkBorderColor borderColor; + VkBool32 unnormalizedCoordinates; +} VkSamplerCreateInfo; + +typedef struct VkCopyDescriptorSet { + VkStructureType sType; + const void* pNext; + VkDescriptorSet srcSet; + uint32_t srcBinding; + uint32_t srcArrayElement; + VkDescriptorSet dstSet; + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; +} VkCopyDescriptorSet; + +typedef struct VkDescriptorBufferInfo { + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize range; +} VkDescriptorBufferInfo; + +typedef struct VkDescriptorImageInfo { + VkSampler sampler; + VkImageView imageView; + VkImageLayout imageLayout; +} VkDescriptorImageInfo; + +typedef struct VkDescriptorPoolSize { + VkDescriptorType type; + uint32_t descriptorCount; +} VkDescriptorPoolSize; + +typedef struct VkDescriptorPoolCreateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorPoolCreateFlags flags; + uint32_t maxSets; + uint32_t poolSizeCount; + const VkDescriptorPoolSize* pPoolSizes; +} VkDescriptorPoolCreateInfo; + +typedef struct VkDescriptorSetAllocateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorPool descriptorPool; + uint32_t descriptorSetCount; + const VkDescriptorSetLayout* pSetLayouts; +} VkDescriptorSetAllocateInfo; + +typedef struct VkDescriptorSetLayoutBinding { + uint32_t binding; + VkDescriptorType descriptorType; + uint32_t descriptorCount; + VkShaderStageFlags stageFlags; + const VkSampler* pImmutableSamplers; +} VkDescriptorSetLayoutBinding; + +typedef struct VkDescriptorSetLayoutCreateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorSetLayoutCreateFlags flags; + uint32_t bindingCount; + const VkDescriptorSetLayoutBinding* pBindings; +} VkDescriptorSetLayoutCreateInfo; + +typedef struct VkWriteDescriptorSet { + VkStructureType sType; + const void* pNext; + VkDescriptorSet dstSet; + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; + VkDescriptorType descriptorType; + const VkDescriptorImageInfo* pImageInfo; + const VkDescriptorBufferInfo* pBufferInfo; + const VkBufferView* pTexelBufferView; +} VkWriteDescriptorSet; + +typedef union VkClearColorValue { + float float32[4]; + int32_t int32[4]; + uint32_t uint32[4]; +} VkClearColorValue; + +typedef struct VkDrawIndexedIndirectCommand { + uint32_t indexCount; + uint32_t instanceCount; + uint32_t firstIndex; + int32_t vertexOffset; + uint32_t firstInstance; +} VkDrawIndexedIndirectCommand; + +typedef struct VkDrawIndirectCommand { + uint32_t vertexCount; + uint32_t instanceCount; + uint32_t firstVertex; + uint32_t firstInstance; +} VkDrawIndirectCommand; + +typedef struct VkStencilOpState { + VkStencilOp failOp; + VkStencilOp passOp; + VkStencilOp depthFailOp; + VkCompareOp compareOp; + uint32_t compareMask; + uint32_t writeMask; + uint32_t reference; +} VkStencilOpState; + +typedef struct VkVertexInputAttributeDescription { + uint32_t location; + uint32_t binding; + VkFormat format; + uint32_t offset; +} VkVertexInputAttributeDescription; + +typedef struct VkVertexInputBindingDescription { + uint32_t binding; + uint32_t stride; + VkVertexInputRate inputRate; +} VkVertexInputBindingDescription; + +typedef struct VkViewport { + float x; + float y; + float width; + float height; + float minDepth; + float maxDepth; +} VkViewport; + +typedef struct VkPipelineColorBlendAttachmentState { + VkBool32 blendEnable; + VkBlendFactor srcColorBlendFactor; + VkBlendFactor dstColorBlendFactor; + VkBlendOp colorBlendOp; + VkBlendFactor srcAlphaBlendFactor; + VkBlendFactor dstAlphaBlendFactor; + VkBlendOp alphaBlendOp; + VkColorComponentFlags colorWriteMask; +} VkPipelineColorBlendAttachmentState; + +typedef struct VkPipelineColorBlendStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineColorBlendStateCreateFlags flags; + VkBool32 logicOpEnable; + VkLogicOp logicOp; + uint32_t attachmentCount; + const VkPipelineColorBlendAttachmentState* pAttachments; + float blendConstants[4]; +} VkPipelineColorBlendStateCreateInfo; + +typedef struct VkPipelineDepthStencilStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineDepthStencilStateCreateFlags flags; + VkBool32 depthTestEnable; + VkBool32 depthWriteEnable; + VkCompareOp depthCompareOp; + VkBool32 depthBoundsTestEnable; + VkBool32 stencilTestEnable; + VkStencilOpState front; + VkStencilOpState back; + float minDepthBounds; + float maxDepthBounds; +} VkPipelineDepthStencilStateCreateInfo; + +typedef struct VkPipelineDynamicStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineDynamicStateCreateFlags flags; + uint32_t dynamicStateCount; + const VkDynamicState* pDynamicStates; +} VkPipelineDynamicStateCreateInfo; + +typedef struct VkPipelineInputAssemblyStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineInputAssemblyStateCreateFlags flags; + VkPrimitiveTopology topology; + VkBool32 primitiveRestartEnable; +} VkPipelineInputAssemblyStateCreateInfo; + +typedef struct VkPipelineMultisampleStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineMultisampleStateCreateFlags flags; + VkSampleCountFlagBits rasterizationSamples; + VkBool32 sampleShadingEnable; + float minSampleShading; + const VkSampleMask* pSampleMask; + VkBool32 alphaToCoverageEnable; + VkBool32 alphaToOneEnable; +} VkPipelineMultisampleStateCreateInfo; + +typedef struct VkPipelineRasterizationStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationStateCreateFlags flags; + VkBool32 depthClampEnable; + VkBool32 rasterizerDiscardEnable; + VkPolygonMode polygonMode; + VkCullModeFlags cullMode; + VkFrontFace frontFace; + VkBool32 depthBiasEnable; + float depthBiasConstantFactor; + float depthBiasClamp; + float depthBiasSlopeFactor; + float lineWidth; +} VkPipelineRasterizationStateCreateInfo; + +typedef struct VkPipelineTessellationStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineTessellationStateCreateFlags flags; + uint32_t patchControlPoints; +} VkPipelineTessellationStateCreateInfo; + +typedef struct VkPipelineVertexInputStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineVertexInputStateCreateFlags flags; + uint32_t vertexBindingDescriptionCount; + const VkVertexInputBindingDescription* pVertexBindingDescriptions; + uint32_t vertexAttributeDescriptionCount; + const VkVertexInputAttributeDescription* pVertexAttributeDescriptions; +} VkPipelineVertexInputStateCreateInfo; + +typedef struct VkPipelineViewportStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineViewportStateCreateFlags flags; + uint32_t viewportCount; + const VkViewport* pViewports; + uint32_t scissorCount; + const VkRect2D* pScissors; +} VkPipelineViewportStateCreateInfo; + +typedef struct VkGraphicsPipelineCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + const VkPipelineVertexInputStateCreateInfo* pVertexInputState; + const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState; + const VkPipelineTessellationStateCreateInfo* pTessellationState; + const VkPipelineViewportStateCreateInfo* pViewportState; + const VkPipelineRasterizationStateCreateInfo* pRasterizationState; + const VkPipelineMultisampleStateCreateInfo* pMultisampleState; + const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState; + const VkPipelineColorBlendStateCreateInfo* pColorBlendState; + const VkPipelineDynamicStateCreateInfo* pDynamicState; + VkPipelineLayout layout; + VkRenderPass renderPass; + uint32_t subpass; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkGraphicsPipelineCreateInfo; + +typedef struct VkAttachmentDescription { + VkAttachmentDescriptionFlags flags; + VkFormat format; + VkSampleCountFlagBits samples; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkAttachmentLoadOp stencilLoadOp; + VkAttachmentStoreOp stencilStoreOp; + VkImageLayout initialLayout; + VkImageLayout finalLayout; +} VkAttachmentDescription; + +typedef struct VkAttachmentReference { + uint32_t attachment; + VkImageLayout layout; +} VkAttachmentReference; + +typedef struct VkFramebufferCreateInfo { + VkStructureType sType; + const void* pNext; + VkFramebufferCreateFlags flags; + VkRenderPass renderPass; + uint32_t attachmentCount; + const VkImageView* pAttachments; + uint32_t width; + uint32_t height; + uint32_t layers; +} VkFramebufferCreateInfo; + +typedef struct VkSubpassDependency { + uint32_t srcSubpass; + uint32_t dstSubpass; + VkPipelineStageFlags srcStageMask; + VkPipelineStageFlags dstStageMask; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkDependencyFlags dependencyFlags; +} VkSubpassDependency; + +typedef struct VkSubpassDescription { + VkSubpassDescriptionFlags flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t inputAttachmentCount; + const VkAttachmentReference* pInputAttachments; + uint32_t colorAttachmentCount; + const VkAttachmentReference* pColorAttachments; + const VkAttachmentReference* pResolveAttachments; + const VkAttachmentReference* pDepthStencilAttachment; + uint32_t preserveAttachmentCount; + const uint32_t* pPreserveAttachments; +} VkSubpassDescription; + +typedef struct VkRenderPassCreateInfo { + VkStructureType sType; + const void* pNext; + VkRenderPassCreateFlags flags; + uint32_t attachmentCount; + const VkAttachmentDescription* pAttachments; + uint32_t subpassCount; + const VkSubpassDescription* pSubpasses; + uint32_t dependencyCount; + const VkSubpassDependency* pDependencies; +} VkRenderPassCreateInfo; + +typedef struct VkClearDepthStencilValue { + float depth; + uint32_t stencil; +} VkClearDepthStencilValue; + +typedef struct VkClearRect { + VkRect2D rect; + uint32_t baseArrayLayer; + uint32_t layerCount; +} VkClearRect; + +typedef union VkClearValue { + VkClearColorValue color; + VkClearDepthStencilValue depthStencil; +} VkClearValue; + +typedef struct VkClearAttachment { + VkImageAspectFlags aspectMask; + uint32_t colorAttachment; + VkClearValue clearValue; +} VkClearAttachment; + +typedef struct VkImageBlit { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets[2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets[2]; +} VkImageBlit; + +typedef struct VkImageResolve { + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageResolve; + +typedef struct VkRenderPassBeginInfo { + VkStructureType sType; + const void* pNext; + VkRenderPass renderPass; + VkFramebuffer framebuffer; + VkRect2D renderArea; + uint32_t clearValueCount; + const VkClearValue* pClearValues; +} VkRenderPassBeginInfo; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance); +typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties); +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName); +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice); +typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties); +typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence); +typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue); +typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device); +typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory); +typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData); +typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory); +typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges); +typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges); +typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes); +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset); +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset); +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence); +typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); +typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences); +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence); +typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout); +typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore); +typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool); +typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator); +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); +typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer); +typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage); +typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout); +typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView); +typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool); +typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags); +typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers); +typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers); +typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo); +typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer); +typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions); +typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data); +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); +typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags); +typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query); +typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query); +typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); +typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers); +typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent); +typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event); +typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event); +typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event); +typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView); +typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule); +typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache); +typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches); +typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout); +typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler); +typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout); +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool); +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags); +typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets); +typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets); +typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies); +typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); +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); +typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); +typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset); +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); +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); +typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues); +typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer); +typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); +typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors); +typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor); +typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference); +typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter); +typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); +typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects); +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents); +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( + const VkInstanceCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkInstance* pInstance); + +VKAPI_ATTR void VKAPI_CALL vkDestroyInstance( + VkInstance instance, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices( + VkInstance instance, + uint32_t* pPhysicalDeviceCount, + VkPhysicalDevice* pPhysicalDevices); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures* pFeatures); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties* pFormatProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkImageFormatProperties* pImageFormatProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties* pProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties( + VkPhysicalDevice physicalDevice, + uint32_t* pQueueFamilyPropertyCount, + VkQueueFamilyProperties* pQueueFamilyProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceMemoryProperties* pMemoryProperties); + +VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr( + VkInstance instance, + const char* pName); + +VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr( + VkDevice device, + const char* pName); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice( + VkPhysicalDevice physicalDevice, + const VkDeviceCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDevice* pDevice); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDevice( + VkDevice device, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties( + const char* pLayerName, + uint32_t* pPropertyCount, + VkExtensionProperties* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties( + VkPhysicalDevice physicalDevice, + const char* pLayerName, + uint32_t* pPropertyCount, + VkExtensionProperties* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties( + uint32_t* pPropertyCount, + VkLayerProperties* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkLayerProperties* pProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue( + VkDevice device, + uint32_t queueFamilyIndex, + uint32_t queueIndex, + VkQueue* pQueue); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit( + VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo* pSubmits, + VkFence fence); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle( + VkQueue queue); + +VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle( + VkDevice device); + +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory( + VkDevice device, + const VkMemoryAllocateInfo* pAllocateInfo, + const VkAllocationCallbacks* pAllocator, + VkDeviceMemory* pMemory); + +VKAPI_ATTR void VKAPI_CALL vkFreeMemory( + VkDevice device, + VkDeviceMemory memory, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory( + VkDevice device, + VkDeviceMemory memory, + VkDeviceSize offset, + VkDeviceSize size, + VkMemoryMapFlags flags, + void** ppData); + +VKAPI_ATTR void VKAPI_CALL vkUnmapMemory( + VkDevice device, + VkDeviceMemory memory); + +VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges( + VkDevice device, + uint32_t memoryRangeCount, + const VkMappedMemoryRange* pMemoryRanges); + +VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges( + VkDevice device, + uint32_t memoryRangeCount, + const VkMappedMemoryRange* pMemoryRanges); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment( + VkDevice device, + VkDeviceMemory memory, + VkDeviceSize* pCommittedMemoryInBytes); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory( + VkDevice device, + VkBuffer buffer, + VkDeviceMemory memory, + VkDeviceSize memoryOffset); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory( + VkDevice device, + VkImage image, + VkDeviceMemory memory, + VkDeviceSize memoryOffset); + +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements( + VkDevice device, + VkBuffer buffer, + VkMemoryRequirements* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements( + VkDevice device, + VkImage image, + VkMemoryRequirements* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements( + VkDevice device, + VkImage image, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements* pSparseMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkSampleCountFlagBits samples, + VkImageUsageFlags usage, + VkImageTiling tiling, + uint32_t* pPropertyCount, + VkSparseImageFormatProperties* pProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse( + VkQueue queue, + uint32_t bindInfoCount, + const VkBindSparseInfo* pBindInfo, + VkFence fence); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence( + VkDevice device, + const VkFenceCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkFence* pFence); + +VKAPI_ATTR void VKAPI_CALL vkDestroyFence( + VkDevice device, + VkFence fence, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkResetFences( + VkDevice device, + uint32_t fenceCount, + const VkFence* pFences); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus( + VkDevice device, + VkFence fence); + +VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences( + VkDevice device, + uint32_t fenceCount, + const VkFence* pFences, + VkBool32 waitAll, + uint64_t timeout); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore( + VkDevice device, + const VkSemaphoreCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSemaphore* pSemaphore); + +VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore( + VkDevice device, + VkSemaphore semaphore, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool( + VkDevice device, + const VkQueryPoolCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkQueryPool* pQueryPool); + +VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool( + VkDevice device, + VkQueryPool queryPool, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults( + VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + void* pData, + VkDeviceSize stride, + VkQueryResultFlags flags); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer( + VkDevice device, + const VkBufferCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkBuffer* pBuffer); + +VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer( + VkDevice device, + VkBuffer buffer, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage( + VkDevice device, + const VkImageCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkImage* pImage); + +VKAPI_ATTR void VKAPI_CALL vkDestroyImage( + VkDevice device, + VkImage image, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout( + VkDevice device, + VkImage image, + const VkImageSubresource* pSubresource, + VkSubresourceLayout* pLayout); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView( + VkDevice device, + const VkImageViewCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkImageView* pView); + +VKAPI_ATTR void VKAPI_CALL vkDestroyImageView( + VkDevice device, + VkImageView imageView, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool( + VkDevice device, + const VkCommandPoolCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCommandPool* pCommandPool); + +VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool( + VkDevice device, + VkCommandPool commandPool, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool( + VkDevice device, + VkCommandPool commandPool, + VkCommandPoolResetFlags flags); + +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers( + VkDevice device, + const VkCommandBufferAllocateInfo* pAllocateInfo, + VkCommandBuffer* pCommandBuffers); + +VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers( + VkDevice device, + VkCommandPool commandPool, + uint32_t commandBufferCount, + const VkCommandBuffer* pCommandBuffers); + +VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer( + VkCommandBuffer commandBuffer, + const VkCommandBufferBeginInfo* pBeginInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer( + VkCommandBuffer commandBuffer, + VkCommandBufferResetFlags flags); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer( + VkCommandBuffer commandBuffer, + VkBuffer srcBuffer, + VkBuffer dstBuffer, + uint32_t regionCount, + const VkBufferCopy* pRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage( + VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkImageCopy* pRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage( + VkCommandBuffer commandBuffer, + VkBuffer srcBuffer, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkBufferImageCopy* pRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer( + VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkBuffer dstBuffer, + uint32_t regionCount, + const VkBufferImageCopy* pRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer( + VkCommandBuffer commandBuffer, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + VkDeviceSize dataSize, + const void* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer( + VkCommandBuffer commandBuffer, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + VkDeviceSize size, + uint32_t data); + +VKAPI_ATTR void VKAPI_CALL 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); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + VkQueryControlFlags flags); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query); + +VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp( + VkCommandBuffer commandBuffer, + VkPipelineStageFlagBits pipelineStage, + VkQueryPool queryPool, + uint32_t query); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + VkDeviceSize stride, + VkQueryResultFlags flags); + +VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands( + VkCommandBuffer commandBuffer, + uint32_t commandBufferCount, + const VkCommandBuffer* pCommandBuffers); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent( + VkDevice device, + const VkEventCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkEvent* pEvent); + +VKAPI_ATTR void VKAPI_CALL vkDestroyEvent( + VkDevice device, + VkEvent event, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus( + VkDevice device, + VkEvent event); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent( + VkDevice device, + VkEvent event); + +VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent( + VkDevice device, + VkEvent event); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView( + VkDevice device, + const VkBufferViewCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkBufferView* pView); + +VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView( + VkDevice device, + VkBufferView bufferView, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule( + VkDevice device, + const VkShaderModuleCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkShaderModule* pShaderModule); + +VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule( + VkDevice device, + VkShaderModule shaderModule, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache( + VkDevice device, + const VkPipelineCacheCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPipelineCache* pPipelineCache); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache( + VkDevice device, + VkPipelineCache pipelineCache, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData( + VkDevice device, + VkPipelineCache pipelineCache, + size_t* pDataSize, + void* pData); + +VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches( + VkDevice device, + VkPipelineCache dstCache, + uint32_t srcCacheCount, + const VkPipelineCache* pSrcCaches); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkComputePipelineCreateInfo* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline( + VkDevice device, + VkPipeline pipeline, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout( + VkDevice device, + const VkPipelineLayoutCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPipelineLayout* pPipelineLayout); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout( + VkDevice device, + VkPipelineLayout pipelineLayout, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler( + VkDevice device, + const VkSamplerCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSampler* pSampler); + +VKAPI_ATTR void VKAPI_CALL vkDestroySampler( + VkDevice device, + VkSampler sampler, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout( + VkDevice device, + const VkDescriptorSetLayoutCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDescriptorSetLayout* pSetLayout); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout( + VkDevice device, + VkDescriptorSetLayout descriptorSetLayout, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool( + VkDevice device, + const VkDescriptorPoolCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDescriptorPool* pDescriptorPool); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool( + VkDevice device, + VkDescriptorPool descriptorPool, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool( + VkDevice device, + VkDescriptorPool descriptorPool, + VkDescriptorPoolResetFlags flags); + +VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets( + VkDevice device, + const VkDescriptorSetAllocateInfo* pAllocateInfo, + VkDescriptorSet* pDescriptorSets); + +VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets( + VkDevice device, + VkDescriptorPool descriptorPool, + uint32_t descriptorSetCount, + const VkDescriptorSet* pDescriptorSets); + +VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets( + VkDevice device, + uint32_t descriptorWriteCount, + const VkWriteDescriptorSet* pDescriptorWrites, + uint32_t descriptorCopyCount, + const VkCopyDescriptorSet* pDescriptorCopies); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t firstSet, + uint32_t descriptorSetCount, + const VkDescriptorSet* pDescriptorSets, + uint32_t dynamicOffsetCount, + const uint32_t* pDynamicOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage( + VkCommandBuffer commandBuffer, + VkImage image, + VkImageLayout imageLayout, + const VkClearColorValue* pColor, + uint32_t rangeCount, + const VkImageSubresourceRange* pRanges); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatch( + VkCommandBuffer commandBuffer, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags stageMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags stageMask); + +VKAPI_ATTR void VKAPI_CALL 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); + +VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants( + VkCommandBuffer commandBuffer, + VkPipelineLayout layout, + VkShaderStageFlags stageFlags, + uint32_t offset, + uint32_t size, + const void* pValues); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkGraphicsPipelineCreateInfo* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer( + VkDevice device, + const VkFramebufferCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkFramebuffer* pFramebuffer); + +VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer( + VkDevice device, + VkFramebuffer framebuffer, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass( + VkDevice device, + const VkRenderPassCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkRenderPass* pRenderPass); + +VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass( + VkDevice device, + VkRenderPass renderPass, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity( + VkDevice device, + VkRenderPass renderPass, + VkExtent2D* pGranularity); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport( + VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkViewport* pViewports); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor( + VkCommandBuffer commandBuffer, + uint32_t firstScissor, + uint32_t scissorCount, + const VkRect2D* pScissors); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth( + VkCommandBuffer commandBuffer, + float lineWidth); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias( + VkCommandBuffer commandBuffer, + float depthBiasConstantFactor, + float depthBiasClamp, + float depthBiasSlopeFactor); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants( + VkCommandBuffer commandBuffer, + const float blendConstants[4]); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds( + VkCommandBuffer commandBuffer, + float minDepthBounds, + float maxDepthBounds); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + uint32_t compareMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + uint32_t writeMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + uint32_t reference); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkIndexType indexType); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets); + +VKAPI_ATTR void VKAPI_CALL vkCmdDraw( + VkCommandBuffer commandBuffer, + uint32_t vertexCount, + uint32_t instanceCount, + uint32_t firstVertex, + uint32_t firstInstance); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed( + VkCommandBuffer commandBuffer, + uint32_t indexCount, + uint32_t instanceCount, + uint32_t firstIndex, + int32_t vertexOffset, + uint32_t firstInstance); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage( + VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkImageBlit* pRegions, + VkFilter filter); + +VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage( + VkCommandBuffer commandBuffer, + VkImage image, + VkImageLayout imageLayout, + const VkClearDepthStencilValue* pDepthStencil, + uint32_t rangeCount, + const VkImageSubresourceRange* pRanges); + +VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments( + VkCommandBuffer commandBuffer, + uint32_t attachmentCount, + const VkClearAttachment* pAttachments, + uint32_t rectCount, + const VkClearRect* pRects); + +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage( + VkCommandBuffer commandBuffer, + VkImage srcImage, + VkImageLayout srcImageLayout, + VkImage dstImage, + VkImageLayout dstImageLayout, + uint32_t regionCount, + const VkImageResolve* pRegions); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass( + VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo* pRenderPassBegin, + VkSubpassContents contents); + +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass( + VkCommandBuffer commandBuffer, + VkSubpassContents contents); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass( + VkCommandBuffer commandBuffer); +#endif + + +// VK_VERSION_1_1 is a preprocessor guard. Do not pass it to API calls. +#define VK_VERSION_1_1 1 +// Vulkan 1.1 version number +#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0 + +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) +#define VK_MAX_DEVICE_GROUP_SIZE 32U +#define VK_LUID_SIZE 8U +#define VK_QUEUE_FAMILY_EXTERNAL (~1U) + +typedef enum 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 = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, + VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, + VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF +} VkPointClippingBehavior; + +typedef enum VkDescriptorUpdateTemplateType { + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0, + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS = 1, + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS, + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, + VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorUpdateTemplateType; + +typedef enum 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 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, + VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF +} VkSamplerYcbcrModelConversion; + +typedef enum VkSamplerYcbcrRange { + VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0, + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1, + VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, + VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, + VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerYcbcrRange; + +typedef enum VkChromaLocation { + VK_CHROMA_LOCATION_COSITED_EVEN = 0, + VK_CHROMA_LOCATION_MIDPOINT = 1, + VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN, + VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT, + VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF +} VkChromaLocation; + +typedef enum VkTessellationDomainOrigin { + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0, + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1, + VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, + VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, + VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF +} VkTessellationDomainOrigin; + +typedef enum VkSubgroupFeatureFlagBits { + VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001, + VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002, + VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004, + VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008, + VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010, + VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020, + VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040, + VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080, + VK_SUBGROUP_FEATURE_ROTATE_BIT = 0x00000200, + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT = 0x00000400, + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT = 0x00000100, + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT, + VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = VK_SUBGROUP_FEATURE_ROTATE_BIT, + VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT, + VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubgroupFeatureFlagBits; +typedef VkFlags VkSubgroupFeatureFlags; + +typedef enum VkPeerMemoryFeatureFlagBits { + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001, + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002, + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004, + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008, + VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT, + VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT, + VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT, + VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT, + VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPeerMemoryFeatureFlagBits; +typedef VkFlags VkPeerMemoryFeatureFlags; + +typedef enum VkMemoryAllocateFlagBits { + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004, + VK_MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT = 0x00000008, + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT, + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryAllocateFlagBits; +typedef VkFlags VkMemoryAllocateFlags; +typedef VkFlags VkCommandPoolTrimFlags; + +typedef enum VkExternalMemoryHandleTypeFlagBits { + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OH_NATIVE_BUFFER_BIT_OHOS = 0x00008000, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 0x00004000, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT = 0x00010000, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT = 0x00020000, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT = 0x00040000, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalMemoryHandleTypeFlagBits; +typedef VkFlags VkExternalMemoryHandleTypeFlags; + +typedef enum VkExternalMemoryFeatureFlagBits { + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001, + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002, + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004, + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT, + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT, + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT, + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalMemoryFeatureFlagBits; +typedef VkFlags VkExternalMemoryFeatureFlags; + +typedef enum VkExternalFenceHandleTypeFlagBits { + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT, + VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT, + VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalFenceHandleTypeFlagBits; +typedef VkFlags VkExternalFenceHandleTypeFlags; + +typedef enum VkExternalFenceFeatureFlagBits { + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001, + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002, + VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT, + VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT, + VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalFenceFeatureFlagBits; +typedef VkFlags VkExternalFenceFeatureFlags; + +typedef enum VkFenceImportFlagBits { + VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001, + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT, + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkFenceImportFlagBits; +typedef VkFlags VkFenceImportFlags; + +typedef enum VkSemaphoreImportFlagBits { + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001, + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT, + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreImportFlagBits; +typedef VkFlags VkSemaphoreImportFlags; + +typedef enum VkExternalSemaphoreHandleTypeFlagBits { + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 0x00000080, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT, + VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalSemaphoreHandleTypeFlagBits; +typedef VkFlags VkExternalSemaphoreHandleTypeFlags; + +typedef enum VkExternalSemaphoreFeatureFlagBits { + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001, + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002, + VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT, + VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT, + VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkExternalSemaphoreFeatureFlagBits; +typedef VkFlags VkExternalSemaphoreFeatureFlags; +typedef VkFlags VkDescriptorUpdateTemplateCreateFlags; +typedef struct VkBindBufferMemoryInfo { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; +} VkBindBufferMemoryInfo; + +typedef struct VkBindImageMemoryInfo { + VkStructureType sType; + const void* pNext; + VkImage image; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; +} VkBindImageMemoryInfo; + +typedef struct VkMemoryDedicatedRequirements { + VkStructureType sType; + void* pNext; + VkBool32 prefersDedicatedAllocation; + VkBool32 requiresDedicatedAllocation; +} VkMemoryDedicatedRequirements; + +typedef struct VkMemoryDedicatedAllocateInfo { + VkStructureType sType; + const void* pNext; + VkImage image; + VkBuffer buffer; +} VkMemoryDedicatedAllocateInfo; + +typedef struct VkMemoryAllocateFlagsInfo { + VkStructureType sType; + const void* pNext; + VkMemoryAllocateFlags flags; + uint32_t deviceMask; +} VkMemoryAllocateFlagsInfo; + +typedef struct VkDeviceGroupCommandBufferBeginInfo { + VkStructureType sType; + const void* pNext; + uint32_t deviceMask; +} VkDeviceGroupCommandBufferBeginInfo; + +typedef struct VkDeviceGroupSubmitInfo { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreCount; + const uint32_t* pWaitSemaphoreDeviceIndices; + uint32_t commandBufferCount; + const uint32_t* pCommandBufferDeviceMasks; + uint32_t signalSemaphoreCount; + const uint32_t* pSignalSemaphoreDeviceIndices; +} VkDeviceGroupSubmitInfo; + +typedef struct VkDeviceGroupBindSparseInfo { + VkStructureType sType; + const void* pNext; + uint32_t resourceDeviceIndex; + uint32_t memoryDeviceIndex; +} VkDeviceGroupBindSparseInfo; + +typedef struct VkBindBufferMemoryDeviceGroupInfo { + VkStructureType sType; + const void* pNext; + uint32_t deviceIndexCount; + const uint32_t* pDeviceIndices; +} VkBindBufferMemoryDeviceGroupInfo; + +typedef struct VkBindImageMemoryDeviceGroupInfo { + VkStructureType sType; + const void* pNext; + uint32_t deviceIndexCount; + const uint32_t* pDeviceIndices; + uint32_t splitInstanceBindRegionCount; + const VkRect2D* pSplitInstanceBindRegions; +} VkBindImageMemoryDeviceGroupInfo; + +typedef struct VkPhysicalDeviceGroupProperties { + VkStructureType sType; + void* pNext; + uint32_t physicalDeviceCount; + VkPhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE]; + VkBool32 subsetAllocation; +} VkPhysicalDeviceGroupProperties; + +typedef struct VkDeviceGroupDeviceCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t physicalDeviceCount; + const VkPhysicalDevice* pPhysicalDevices; +} VkDeviceGroupDeviceCreateInfo; + +typedef struct VkBufferMemoryRequirementsInfo2 { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +} VkBufferMemoryRequirementsInfo2; + +typedef struct VkImageMemoryRequirementsInfo2 { + VkStructureType sType; + const void* pNext; + VkImage image; +} VkImageMemoryRequirementsInfo2; + +typedef struct VkImageSparseMemoryRequirementsInfo2 { + VkStructureType sType; + const void* pNext; + VkImage image; +} VkImageSparseMemoryRequirementsInfo2; + +typedef struct VkMemoryRequirements2 { + VkStructureType sType; + void* pNext; + VkMemoryRequirements memoryRequirements; +} VkMemoryRequirements2; + +typedef struct VkSparseImageMemoryRequirements2 { + VkStructureType sType; + void* pNext; + VkSparseImageMemoryRequirements memoryRequirements; +} VkSparseImageMemoryRequirements2; + +typedef struct VkPhysicalDeviceFeatures2 { + VkStructureType sType; + void* pNext; + VkPhysicalDeviceFeatures features; +} VkPhysicalDeviceFeatures2; + +typedef struct VkPhysicalDeviceProperties2 { + VkStructureType sType; + void* pNext; + VkPhysicalDeviceProperties properties; +} VkPhysicalDeviceProperties2; + +typedef struct VkFormatProperties2 { + VkStructureType sType; + void* pNext; + VkFormatProperties formatProperties; +} VkFormatProperties2; + +typedef struct VkImageFormatProperties2 { + VkStructureType sType; + void* pNext; + VkImageFormatProperties imageFormatProperties; +} VkImageFormatProperties2; + +typedef struct VkPhysicalDeviceImageFormatInfo2 { + VkStructureType sType; + const void* pNext; + VkFormat format; + VkImageType type; + VkImageTiling tiling; + VkImageUsageFlags usage; + VkImageCreateFlags flags; +} VkPhysicalDeviceImageFormatInfo2; + +typedef struct VkQueueFamilyProperties2 { + VkStructureType sType; + void* pNext; + VkQueueFamilyProperties queueFamilyProperties; +} VkQueueFamilyProperties2; + +typedef struct VkPhysicalDeviceMemoryProperties2 { + VkStructureType sType; + void* pNext; + VkPhysicalDeviceMemoryProperties memoryProperties; +} VkPhysicalDeviceMemoryProperties2; + +typedef struct VkSparseImageFormatProperties2 { + VkStructureType sType; + void* pNext; + VkSparseImageFormatProperties properties; +} VkSparseImageFormatProperties2; + +typedef struct VkPhysicalDeviceSparseImageFormatInfo2 { + VkStructureType sType; + const void* pNext; + VkFormat format; + VkImageType type; + VkSampleCountFlagBits samples; + VkImageUsageFlags usage; + VkImageTiling tiling; +} VkPhysicalDeviceSparseImageFormatInfo2; + +typedef struct VkImageViewUsageCreateInfo { + VkStructureType sType; + const void* pNext; + VkImageUsageFlags usage; +} VkImageViewUsageCreateInfo; + +typedef struct VkPhysicalDeviceProtectedMemoryFeatures { + VkStructureType sType; + void* pNext; + VkBool32 protectedMemory; +} VkPhysicalDeviceProtectedMemoryFeatures; + +typedef struct VkPhysicalDeviceProtectedMemoryProperties { + VkStructureType sType; + void* pNext; + VkBool32 protectedNoFault; +} VkPhysicalDeviceProtectedMemoryProperties; + +typedef struct VkDeviceQueueInfo2 { + VkStructureType sType; + const void* pNext; + VkDeviceQueueCreateFlags flags; + uint32_t queueFamilyIndex; + uint32_t queueIndex; +} VkDeviceQueueInfo2; + +typedef struct VkProtectedSubmitInfo { + VkStructureType sType; + const void* pNext; + VkBool32 protectedSubmit; +} VkProtectedSubmitInfo; + +typedef struct VkBindImagePlaneMemoryInfo { + VkStructureType sType; + const void* pNext; + VkImageAspectFlagBits planeAspect; +} VkBindImagePlaneMemoryInfo; + +typedef struct VkImagePlaneMemoryRequirementsInfo { + VkStructureType sType; + const void* pNext; + VkImageAspectFlagBits planeAspect; +} VkImagePlaneMemoryRequirementsInfo; + +typedef struct VkExternalMemoryProperties { + VkExternalMemoryFeatureFlags externalMemoryFeatures; + VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes; + VkExternalMemoryHandleTypeFlags compatibleHandleTypes; +} VkExternalMemoryProperties; + +typedef struct VkPhysicalDeviceExternalImageFormatInfo { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalImageFormatInfo; + +typedef struct VkExternalImageFormatProperties { + VkStructureType sType; + void* pNext; + VkExternalMemoryProperties externalMemoryProperties; +} VkExternalImageFormatProperties; + +typedef struct VkPhysicalDeviceExternalBufferInfo { + VkStructureType sType; + const void* pNext; + VkBufferCreateFlags flags; + VkBufferUsageFlags usage; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalBufferInfo; + +typedef struct VkExternalBufferProperties { + VkStructureType sType; + void* pNext; + VkExternalMemoryProperties externalMemoryProperties; +} VkExternalBufferProperties; + +typedef struct VkPhysicalDeviceIDProperties { + VkStructureType sType; + void* pNext; + uint8_t deviceUUID[VK_UUID_SIZE]; + uint8_t driverUUID[VK_UUID_SIZE]; + uint8_t deviceLUID[VK_LUID_SIZE]; + uint32_t deviceNodeMask; + VkBool32 deviceLUIDValid; +} VkPhysicalDeviceIDProperties; + +typedef struct VkExternalMemoryImageCreateInfo { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlags handleTypes; +} VkExternalMemoryImageCreateInfo; + +typedef struct VkExternalMemoryBufferCreateInfo { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlags handleTypes; +} VkExternalMemoryBufferCreateInfo; + +typedef struct VkExportMemoryAllocateInfo { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlags handleTypes; +} VkExportMemoryAllocateInfo; + +typedef struct VkPhysicalDeviceExternalFenceInfo { + VkStructureType sType; + const void* pNext; + VkExternalFenceHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalFenceInfo; + +typedef struct VkExternalFenceProperties { + VkStructureType sType; + void* pNext; + VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes; + VkExternalFenceHandleTypeFlags compatibleHandleTypes; + VkExternalFenceFeatureFlags externalFenceFeatures; +} VkExternalFenceProperties; + +typedef struct VkExportFenceCreateInfo { + VkStructureType sType; + const void* pNext; + VkExternalFenceHandleTypeFlags handleTypes; +} VkExportFenceCreateInfo; + +typedef struct VkExportSemaphoreCreateInfo { + VkStructureType sType; + const void* pNext; + VkExternalSemaphoreHandleTypeFlags handleTypes; +} VkExportSemaphoreCreateInfo; + +typedef struct VkPhysicalDeviceExternalSemaphoreInfo { + VkStructureType sType; + const void* pNext; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalSemaphoreInfo; + +typedef struct VkExternalSemaphoreProperties { + VkStructureType sType; + void* pNext; + VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes; + VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes; + VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures; +} VkExternalSemaphoreProperties; + +typedef struct VkPhysicalDeviceSubgroupProperties { + VkStructureType sType; + void* pNext; + uint32_t subgroupSize; + VkShaderStageFlags supportedStages; + VkSubgroupFeatureFlags supportedOperations; + VkBool32 quadOperationsInAllStages; +} VkPhysicalDeviceSubgroupProperties; + +typedef struct VkPhysicalDevice16BitStorageFeatures { + VkStructureType sType; + void* pNext; + VkBool32 storageBuffer16BitAccess; + VkBool32 uniformAndStorageBuffer16BitAccess; + VkBool32 storagePushConstant16; + VkBool32 storageInputOutput16; +} VkPhysicalDevice16BitStorageFeatures; + +typedef struct VkPhysicalDeviceVariablePointersFeatures { + VkStructureType sType; + void* pNext; + VkBool32 variablePointersStorageBuffer; + VkBool32 variablePointers; +} VkPhysicalDeviceVariablePointersFeatures; + +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures; + +typedef struct VkDescriptorUpdateTemplateEntry { + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; + VkDescriptorType descriptorType; + size_t offset; + size_t stride; +} VkDescriptorUpdateTemplateEntry; + +typedef struct VkDescriptorUpdateTemplateCreateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorUpdateTemplateCreateFlags flags; + uint32_t descriptorUpdateEntryCount; + const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntries; + VkDescriptorUpdateTemplateType templateType; + VkDescriptorSetLayout descriptorSetLayout; + VkPipelineBindPoint pipelineBindPoint; + VkPipelineLayout pipelineLayout; + uint32_t set; +} VkDescriptorUpdateTemplateCreateInfo; + +typedef struct VkPhysicalDeviceMaintenance3Properties { + VkStructureType sType; + void* pNext; + uint32_t maxPerSetDescriptors; + VkDeviceSize maxMemoryAllocationSize; +} VkPhysicalDeviceMaintenance3Properties; + +typedef struct VkDescriptorSetLayoutSupport { + VkStructureType sType; + void* pNext; + VkBool32 supported; +} VkDescriptorSetLayoutSupport; + +typedef struct VkSamplerYcbcrConversionCreateInfo { + VkStructureType sType; + const void* pNext; + VkFormat format; + VkSamplerYcbcrModelConversion ycbcrModel; + VkSamplerYcbcrRange ycbcrRange; + VkComponentMapping components; + VkChromaLocation xChromaOffset; + VkChromaLocation yChromaOffset; + VkFilter chromaFilter; + VkBool32 forceExplicitReconstruction; +} VkSamplerYcbcrConversionCreateInfo; + +typedef struct VkSamplerYcbcrConversionInfo { + VkStructureType sType; + const void* pNext; + VkSamplerYcbcrConversion conversion; +} VkSamplerYcbcrConversionInfo; + +typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures { + VkStructureType sType; + void* pNext; + VkBool32 samplerYcbcrConversion; +} VkPhysicalDeviceSamplerYcbcrConversionFeatures; + +typedef struct VkSamplerYcbcrConversionImageFormatProperties { + VkStructureType sType; + void* pNext; + uint32_t combinedImageSamplerDescriptorCount; +} VkSamplerYcbcrConversionImageFormatProperties; + +typedef struct VkDeviceGroupRenderPassBeginInfo { + VkStructureType sType; + const void* pNext; + uint32_t deviceMask; + uint32_t deviceRenderAreaCount; + const VkRect2D* pDeviceRenderAreas; +} VkDeviceGroupRenderPassBeginInfo; + +typedef struct VkPhysicalDevicePointClippingProperties { + VkStructureType sType; + void* pNext; + VkPointClippingBehavior pointClippingBehavior; +} VkPhysicalDevicePointClippingProperties; + +typedef struct VkInputAttachmentAspectReference { + uint32_t subpass; + uint32_t inputAttachmentIndex; + VkImageAspectFlags aspectMask; +} VkInputAttachmentAspectReference; + +typedef struct VkRenderPassInputAttachmentAspectCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t aspectReferenceCount; + const VkInputAttachmentAspectReference* pAspectReferences; +} VkRenderPassInputAttachmentAspectCreateInfo; + +typedef struct VkPipelineTessellationDomainOriginStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkTessellationDomainOrigin domainOrigin; +} VkPipelineTessellationDomainOriginStateCreateInfo; + +typedef struct VkRenderPassMultiviewCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t subpassCount; + const uint32_t* pViewMasks; + uint32_t dependencyCount; + const int32_t* pViewOffsets; + uint32_t correlationMaskCount; + const uint32_t* pCorrelationMasks; +} VkRenderPassMultiviewCreateInfo; + +typedef struct VkPhysicalDeviceMultiviewFeatures { + VkStructureType sType; + void* pNext; + VkBool32 multiview; + VkBool32 multiviewGeometryShader; + VkBool32 multiviewTessellationShader; +} VkPhysicalDeviceMultiviewFeatures; + +typedef struct VkPhysicalDeviceMultiviewProperties { + VkStructureType sType; + void* pNext; + uint32_t maxMultiviewViewCount; + uint32_t maxMultiviewInstanceIndex; +} VkPhysicalDeviceMultiviewProperties; + +typedef struct VkPhysicalDeviceShaderDrawParametersFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderDrawParameters; +} VkPhysicalDeviceShaderDrawParametersFeatures; + +typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures; + +typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion); +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos); +typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); +typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask); +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties); +typedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); +typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties); +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); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData); +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); +typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion); +typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion( + uint32_t* pApiVersion); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2( + VkDevice device, + uint32_t bindInfoCount, + const VkBindBufferMemoryInfo* pBindInfos); + +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2( + VkDevice device, + uint32_t bindInfoCount, + const VkBindImageMemoryInfo* pBindInfos); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures( + VkDevice device, + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask( + VkCommandBuffer commandBuffer, + uint32_t deviceMask); + +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups( + VkInstance instance, + uint32_t* pPhysicalDeviceGroupCount, + VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2( + VkDevice device, + const VkImageMemoryRequirementsInfo2* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2( + VkDevice device, + const VkBufferMemoryRequirementsInfo2* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2( + VkDevice device, + const VkImageSparseMemoryRequirementsInfo2* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures2* pFeatures); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties2* pProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties2* pFormatProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, + VkImageFormatProperties2* pImageFormatProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2( + VkPhysicalDevice physicalDevice, + uint32_t* pQueueFamilyPropertyCount, + VkQueueFamilyProperties2* pQueueFamilyProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceMemoryProperties2* pMemoryProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, + uint32_t* pPropertyCount, + VkSparseImageFormatProperties2* pProperties); + +VKAPI_ATTR void VKAPI_CALL vkTrimCommandPool( + VkDevice device, + VkCommandPool commandPool, + VkCommandPoolTrimFlags flags); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2( + VkDevice device, + const VkDeviceQueueInfo2* pQueueInfo, + VkQueue* pQueue); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, + VkExternalBufferProperties* pExternalBufferProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, + VkExternalFenceProperties* pExternalFenceProperties); + +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, + VkExternalSemaphoreProperties* pExternalSemaphoreProperties); + +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase( + VkCommandBuffer commandBuffer, + uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplate( + VkDevice device, + const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); + +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplate( + VkDevice device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate( + VkDevice device, + VkDescriptorSet descriptorSet, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const void* pData); + +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport( + VkDevice device, + const VkDescriptorSetLayoutCreateInfo* pCreateInfo, + VkDescriptorSetLayoutSupport* pSupport); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion( + VkDevice device, + const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSamplerYcbcrConversion* pYcbcrConversion); + +VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion( + VkDevice device, + VkSamplerYcbcrConversion ycbcrConversion, + const VkAllocationCallbacks* pAllocator); +#endif + + +// VK_VERSION_1_2 is a preprocessor guard. Do not pass it to API calls. +#define VK_VERSION_1_2 1 +// Vulkan 1.2 version number +#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0 + +#define VK_MAX_DRIVER_NAME_SIZE 256U +#define VK_MAX_DRIVER_INFO_SIZE 256U + +typedef enum 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_JUICE_PROPRIETARY = 16, + VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17, + VK_DRIVER_ID_MESA_TURNIP = 18, + VK_DRIVER_ID_MESA_V3DV = 19, + VK_DRIVER_ID_MESA_PANVK = 20, + VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21, + VK_DRIVER_ID_MESA_VENUS = 22, + VK_DRIVER_ID_MESA_DOZEN = 23, + VK_DRIVER_ID_MESA_NVK = 24, + VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25, + VK_DRIVER_ID_MESA_HONEYKRISP = 26, + VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN = 27, + VK_DRIVER_ID_MESA_KOSMICKRISP = 28, + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY, + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE, + VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV, + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY, + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS, + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA, + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY, + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY, + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY, + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER, + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY, + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY, + VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF +} VkDriverId; + +typedef enum 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 = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE, + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF +} VkShaderFloatControlsIndependence; + +typedef enum VkSemaphoreType { + VK_SEMAPHORE_TYPE_BINARY = 0, + VK_SEMAPHORE_TYPE_TIMELINE = 1, + VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY, + VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE, + VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreType; + +typedef enum 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_RANGECLAMP_QCOM = 1000521000, + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, + VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN, + VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX, + VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF +} VkSamplerReductionMode; + +typedef enum VkResolveModeFlagBits { + VK_RESOLVE_MODE_NONE = 0, + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001, + VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002, + VK_RESOLVE_MODE_MIN_BIT = 0x00000004, + VK_RESOLVE_MODE_MAX_BIT = 0x00000008, + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID = 0x00000010, + VK_RESOLVE_MODE_CUSTOM_BIT_EXT = 0x00000020, + VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE, + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT, + VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT, + VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT, + // VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID is a legacy alias + VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID, + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkResolveModeFlagBits; +typedef VkFlags VkResolveModeFlags; + +typedef enum VkSemaphoreWaitFlagBits { + VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001, + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT, + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSemaphoreWaitFlagBits; +typedef VkFlags VkSemaphoreWaitFlags; + +typedef enum VkDescriptorBindingFlagBits { + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001, + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002, + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004, + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008, + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT, + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT, + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, + VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkDescriptorBindingFlagBits; +typedef VkFlags VkDescriptorBindingFlags; +typedef struct VkConformanceVersion { + uint8_t major; + uint8_t minor; + uint8_t subminor; + uint8_t patch; +} VkConformanceVersion; + +typedef struct VkPhysicalDeviceDriverProperties { + VkStructureType sType; + void* pNext; + VkDriverId driverID; + char driverName[VK_MAX_DRIVER_NAME_SIZE]; + char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; + VkConformanceVersion conformanceVersion; +} VkPhysicalDeviceDriverProperties; + +typedef struct VkPhysicalDeviceVulkan11Features { + VkStructureType sType; + void* pNext; + VkBool32 storageBuffer16BitAccess; + VkBool32 uniformAndStorageBuffer16BitAccess; + VkBool32 storagePushConstant16; + VkBool32 storageInputOutput16; + VkBool32 multiview; + VkBool32 multiviewGeometryShader; + VkBool32 multiviewTessellationShader; + VkBool32 variablePointersStorageBuffer; + VkBool32 variablePointers; + VkBool32 protectedMemory; + VkBool32 samplerYcbcrConversion; + VkBool32 shaderDrawParameters; +} VkPhysicalDeviceVulkan11Features; + +typedef struct VkPhysicalDeviceVulkan11Properties { + VkStructureType sType; + void* pNext; + uint8_t deviceUUID[VK_UUID_SIZE]; + uint8_t driverUUID[VK_UUID_SIZE]; + uint8_t deviceLUID[VK_LUID_SIZE]; + uint32_t deviceNodeMask; + VkBool32 deviceLUIDValid; + uint32_t subgroupSize; + VkShaderStageFlags subgroupSupportedStages; + VkSubgroupFeatureFlags subgroupSupportedOperations; + VkBool32 subgroupQuadOperationsInAllStages; + VkPointClippingBehavior pointClippingBehavior; + uint32_t maxMultiviewViewCount; + uint32_t maxMultiviewInstanceIndex; + VkBool32 protectedNoFault; + uint32_t maxPerSetDescriptors; + VkDeviceSize maxMemoryAllocationSize; +} VkPhysicalDeviceVulkan11Properties; + +typedef struct VkPhysicalDeviceVulkan12Features { + VkStructureType sType; + void* pNext; + VkBool32 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; +} VkPhysicalDeviceVulkan12Features; + +typedef struct VkPhysicalDeviceVulkan12Properties { + VkStructureType sType; + void* pNext; + VkDriverId driverID; + char driverName[VK_MAX_DRIVER_NAME_SIZE]; + char driverInfo[VK_MAX_DRIVER_INFO_SIZE]; + VkConformanceVersion conformanceVersion; + VkShaderFloatControlsIndependence denormBehaviorIndependence; + VkShaderFloatControlsIndependence roundingModeIndependence; + VkBool32 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; + uint32_t maxUpdateAfterBindDescriptorsInAllPools; + VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; + VkBool32 shaderSampledImageArrayNonUniformIndexingNative; + VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; + VkBool32 shaderStorageImageArrayNonUniformIndexingNative; + VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; + VkBool32 robustBufferAccessUpdateAfterBind; + VkBool32 quadDivergentImplicitLod; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; + uint32_t maxPerStageUpdateAfterBindResources; + uint32_t maxDescriptorSetUpdateAfterBindSamplers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; + VkResolveModeFlags supportedDepthResolveModes; + VkResolveModeFlags supportedStencilResolveModes; + VkBool32 independentResolveNone; + VkBool32 independentResolve; + VkBool32 filterMinmaxSingleComponentFormats; + VkBool32 filterMinmaxImageComponentMapping; + uint64_t maxTimelineSemaphoreValueDifference; + VkSampleCountFlags framebufferIntegerColorSampleCounts; +} VkPhysicalDeviceVulkan12Properties; + +typedef struct VkImageFormatListCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t viewFormatCount; + const VkFormat* pViewFormats; +} VkImageFormatListCreateInfo; + +typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures { + VkStructureType sType; + void* pNext; + VkBool32 vulkanMemoryModel; + VkBool32 vulkanMemoryModelDeviceScope; + VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; +} VkPhysicalDeviceVulkanMemoryModelFeatures; + +typedef struct VkPhysicalDeviceHostQueryResetFeatures { + VkStructureType sType; + void* pNext; + VkBool32 hostQueryReset; +} VkPhysicalDeviceHostQueryResetFeatures; + +typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures { + VkStructureType sType; + void* pNext; + VkBool32 timelineSemaphore; +} VkPhysicalDeviceTimelineSemaphoreFeatures; + +typedef struct VkPhysicalDeviceTimelineSemaphoreProperties { + VkStructureType sType; + void* pNext; + uint64_t maxTimelineSemaphoreValueDifference; +} VkPhysicalDeviceTimelineSemaphoreProperties; + +typedef struct VkSemaphoreTypeCreateInfo { + VkStructureType sType; + const void* pNext; + VkSemaphoreType semaphoreType; + uint64_t initialValue; +} VkSemaphoreTypeCreateInfo; + +typedef struct VkTimelineSemaphoreSubmitInfo { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreValueCount; + const uint64_t* pWaitSemaphoreValues; + uint32_t signalSemaphoreValueCount; + const uint64_t* pSignalSemaphoreValues; +} VkTimelineSemaphoreSubmitInfo; + +typedef struct VkSemaphoreWaitInfo { + VkStructureType sType; + const void* pNext; + VkSemaphoreWaitFlags flags; + uint32_t semaphoreCount; + const VkSemaphore* pSemaphores; + const uint64_t* pValues; +} VkSemaphoreWaitInfo; + +typedef struct VkSemaphoreSignalInfo { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + uint64_t value; +} VkSemaphoreSignalInfo; + +typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures { + VkStructureType sType; + void* pNext; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; +} VkPhysicalDeviceBufferDeviceAddressFeatures; + +typedef struct VkBufferDeviceAddressInfo { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +} VkBufferDeviceAddressInfo; + +typedef struct VkBufferOpaqueCaptureAddressCreateInfo { + VkStructureType sType; + const void* pNext; + uint64_t opaqueCaptureAddress; +} VkBufferOpaqueCaptureAddressCreateInfo; + +typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo { + VkStructureType sType; + const void* pNext; + uint64_t opaqueCaptureAddress; +} VkMemoryOpaqueCaptureAddressAllocateInfo; + +typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; +} VkDeviceMemoryOpaqueCaptureAddressInfo; + +typedef struct VkPhysicalDevice8BitStorageFeatures { + VkStructureType sType; + void* pNext; + VkBool32 storageBuffer8BitAccess; + VkBool32 uniformAndStorageBuffer8BitAccess; + VkBool32 storagePushConstant8; +} VkPhysicalDevice8BitStorageFeatures; + +typedef struct VkPhysicalDeviceShaderAtomicInt64Features { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferInt64Atomics; + VkBool32 shaderSharedInt64Atomics; +} VkPhysicalDeviceShaderAtomicInt64Features; + +typedef struct VkPhysicalDeviceShaderFloat16Int8Features { + VkStructureType sType; + void* pNext; + VkBool32 shaderFloat16; + VkBool32 shaderInt8; +} VkPhysicalDeviceShaderFloat16Int8Features; + +typedef struct VkPhysicalDeviceFloatControlsProperties { + VkStructureType sType; + void* pNext; + VkShaderFloatControlsIndependence denormBehaviorIndependence; + VkShaderFloatControlsIndependence roundingModeIndependence; + VkBool32 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; +} VkPhysicalDeviceFloatControlsProperties; + +typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t bindingCount; + const VkDescriptorBindingFlags* pBindingFlags; +} VkDescriptorSetLayoutBindingFlagsCreateInfo; + +typedef struct VkPhysicalDeviceDescriptorIndexingFeatures { + VkStructureType sType; + void* pNext; + 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; +} VkPhysicalDeviceDescriptorIndexingFeatures; + +typedef struct VkPhysicalDeviceDescriptorIndexingProperties { + VkStructureType sType; + void* pNext; + uint32_t maxUpdateAfterBindDescriptorsInAllPools; + VkBool32 shaderUniformBufferArrayNonUniformIndexingNative; + VkBool32 shaderSampledImageArrayNonUniformIndexingNative; + VkBool32 shaderStorageBufferArrayNonUniformIndexingNative; + VkBool32 shaderStorageImageArrayNonUniformIndexingNative; + VkBool32 shaderInputAttachmentArrayNonUniformIndexingNative; + VkBool32 robustBufferAccessUpdateAfterBind; + VkBool32 quadDivergentImplicitLod; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments; + uint32_t maxPerStageUpdateAfterBindResources; + uint32_t maxDescriptorSetUpdateAfterBindSamplers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments; +} VkPhysicalDeviceDescriptorIndexingProperties; + +typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo { + VkStructureType sType; + const void* pNext; + uint32_t descriptorSetCount; + const uint32_t* pDescriptorCounts; +} VkDescriptorSetVariableDescriptorCountAllocateInfo; + +typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport { + VkStructureType sType; + void* pNext; + uint32_t maxVariableDescriptorCount; +} VkDescriptorSetVariableDescriptorCountLayoutSupport; + +typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures { + VkStructureType sType; + void* pNext; + VkBool32 scalarBlockLayout; +} VkPhysicalDeviceScalarBlockLayoutFeatures; + +typedef struct VkSamplerReductionModeCreateInfo { + VkStructureType sType; + const void* pNext; + VkSamplerReductionMode reductionMode; +} VkSamplerReductionModeCreateInfo; + +typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties { + VkStructureType sType; + void* pNext; + VkBool32 filterMinmaxSingleComponentFormats; + VkBool32 filterMinmaxImageComponentMapping; +} VkPhysicalDeviceSamplerFilterMinmaxProperties; + +typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures { + VkStructureType sType; + void* pNext; + VkBool32 uniformBufferStandardLayout; +} VkPhysicalDeviceUniformBufferStandardLayoutFeatures; + +typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupExtendedTypes; +} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures; + +typedef struct VkAttachmentDescription2 { + VkStructureType sType; + const void* pNext; + VkAttachmentDescriptionFlags flags; + VkFormat format; + VkSampleCountFlagBits samples; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkAttachmentLoadOp stencilLoadOp; + VkAttachmentStoreOp stencilStoreOp; + VkImageLayout initialLayout; + VkImageLayout finalLayout; +} VkAttachmentDescription2; + +typedef struct VkAttachmentReference2 { + VkStructureType sType; + const void* pNext; + uint32_t attachment; + VkImageLayout layout; + VkImageAspectFlags aspectMask; +} VkAttachmentReference2; + +typedef struct VkSubpassDescription2 { + VkStructureType sType; + const void* pNext; + VkSubpassDescriptionFlags flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t viewMask; + uint32_t inputAttachmentCount; + const VkAttachmentReference2* pInputAttachments; + uint32_t colorAttachmentCount; + const VkAttachmentReference2* pColorAttachments; + const VkAttachmentReference2* pResolveAttachments; + const VkAttachmentReference2* pDepthStencilAttachment; + uint32_t preserveAttachmentCount; + const uint32_t* pPreserveAttachments; +} VkSubpassDescription2; + +typedef struct VkSubpassDependency2 { + VkStructureType sType; + const void* pNext; + uint32_t srcSubpass; + uint32_t dstSubpass; + VkPipelineStageFlags srcStageMask; + VkPipelineStageFlags dstStageMask; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkDependencyFlags dependencyFlags; + int32_t viewOffset; +} VkSubpassDependency2; + +typedef struct VkSubpassBeginInfo { + VkStructureType sType; + const void* pNext; + VkSubpassContents contents; +} VkSubpassBeginInfo; + +typedef struct VkSubpassEndInfo { + VkStructureType sType; + const void* pNext; +} VkSubpassEndInfo; + +typedef struct VkRenderPassCreateInfo2 { + VkStructureType sType; + const void* pNext; + VkRenderPassCreateFlags flags; + uint32_t attachmentCount; + const VkAttachmentDescription2* pAttachments; + uint32_t subpassCount; + const VkSubpassDescription2* pSubpasses; + uint32_t dependencyCount; + const VkSubpassDependency2* pDependencies; + uint32_t correlatedViewMaskCount; + const uint32_t* pCorrelatedViewMasks; +} VkRenderPassCreateInfo2; + +typedef struct VkSubpassDescriptionDepthStencilResolve { + VkStructureType sType; + const void* pNext; + VkResolveModeFlagBits depthResolveMode; + VkResolveModeFlagBits stencilResolveMode; + const VkAttachmentReference2* pDepthStencilResolveAttachment; +} VkSubpassDescriptionDepthStencilResolve; + +typedef struct VkPhysicalDeviceDepthStencilResolveProperties { + VkStructureType sType; + void* pNext; + VkResolveModeFlags supportedDepthResolveModes; + VkResolveModeFlags supportedStencilResolveModes; + VkBool32 independentResolveNone; + VkBool32 independentResolve; +} VkPhysicalDeviceDepthStencilResolveProperties; + +typedef struct VkImageStencilUsageCreateInfo { + VkStructureType sType; + const void* pNext; + VkImageUsageFlags stencilUsage; +} VkImageStencilUsageCreateInfo; + +typedef struct VkPhysicalDeviceImagelessFramebufferFeatures { + VkStructureType sType; + void* pNext; + VkBool32 imagelessFramebuffer; +} VkPhysicalDeviceImagelessFramebufferFeatures; + +typedef struct VkFramebufferAttachmentImageInfo { + VkStructureType sType; + const void* pNext; + VkImageCreateFlags flags; + VkImageUsageFlags usage; + uint32_t width; + uint32_t height; + uint32_t layerCount; + uint32_t viewFormatCount; + const VkFormat* pViewFormats; +} VkFramebufferAttachmentImageInfo; + +typedef struct VkRenderPassAttachmentBeginInfo { + VkStructureType sType; + const void* pNext; + uint32_t attachmentCount; + const VkImageView* pAttachments; +} VkRenderPassAttachmentBeginInfo; + +typedef struct VkFramebufferAttachmentsCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t attachmentImageInfoCount; + const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos; +} VkFramebufferAttachmentsCreateInfo; + +typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures { + VkStructureType sType; + void* pNext; + VkBool32 separateDepthStencilLayouts; +} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures; + +typedef struct VkAttachmentReferenceStencilLayout { + VkStructureType sType; + void* pNext; + VkImageLayout stencilLayout; +} VkAttachmentReferenceStencilLayout; + +typedef struct VkAttachmentDescriptionStencilLayout { + VkStructureType sType; + void* pNext; + VkImageLayout stencilInitialLayout; + VkImageLayout stencilFinalLayout; +} VkAttachmentDescriptionStencilLayout; + +typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue); +typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout); +typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkResetQueryPool( + VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount); + +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue( + VkDevice device, + VkSemaphore semaphore, + uint64_t* pValue); + +VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores( + VkDevice device, + const VkSemaphoreWaitInfo* pWaitInfo, + uint64_t timeout); + +VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore( + VkDevice device, + const VkSemaphoreSignalInfo* pSignalInfo); + +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); + +VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress( + VkDevice device, + const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); + +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2( + VkDevice device, + const VkRenderPassCreateInfo2* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkRenderPass* pRenderPass); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2( + VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo* pRenderPassBegin, + const VkSubpassBeginInfo* pSubpassBeginInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2( + VkCommandBuffer commandBuffer, + const VkSubpassBeginInfo* pSubpassBeginInfo, + const VkSubpassEndInfo* pSubpassEndInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2( + VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo); +#endif + + +// VK_VERSION_1_3 is a preprocessor guard. Do not pass it to API calls. +#define VK_VERSION_1_3 1 +// Vulkan 1.3 version number +#define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0)// Patch version should always be set to 0 + +typedef uint64_t VkFlags64; +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlot) + +typedef enum VkToolPurposeFlagBits { + VK_TOOL_PURPOSE_VALIDATION_BIT = 0x00000001, + VK_TOOL_PURPOSE_PROFILING_BIT = 0x00000002, + VK_TOOL_PURPOSE_TRACING_BIT = 0x00000004, + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = 0x00000008, + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 0x00000010, + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020, + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040, + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = VK_TOOL_PURPOSE_VALIDATION_BIT, + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = VK_TOOL_PURPOSE_PROFILING_BIT, + VK_TOOL_PURPOSE_TRACING_BIT_EXT = VK_TOOL_PURPOSE_TRACING_BIT, + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT, + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT, + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkToolPurposeFlagBits; +typedef VkFlags VkToolPurposeFlags; +typedef VkFlags VkPrivateDataSlotCreateFlags; +typedef VkFlags64 VkPipelineStageFlags2; + +// Flag bits for VkPipelineStageFlagBits2 +typedef VkFlags64 VkPipelineStageFlagBits2; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE = 0ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 0x00000001ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 0x00000002ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 0x00000004ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 0x00000008ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 0x00000040ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 0x00000080ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT = 0x00000100ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = 0x00000200ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT = 0x00000800ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT = 0x00002000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT = 0x00004000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = 0x00008000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT = 0x00010000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT = 0x100000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT = 0x200000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT = 0x400000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT = 0x800000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT = 0x1000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = 0x2000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 0x4000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0x04000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0x08000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE_KHR = 0ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT = 0x00020000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT = 0x00080000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT = 0x00100000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI = 0x8000000000ULL; +// VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI is a legacy alias +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT = 0x40000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI = 0x20000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV = 0x20000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV = 0x100000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM = 0x40000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR = 0x400000000000ULL; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT = 0x200000000000ULL; + +typedef VkFlags64 VkAccessFlags2; + +// Flag bits for VkAccessFlagBits2 +typedef VkFlags64 VkAccessFlagBits2; +static const VkAccessFlagBits2 VK_ACCESS_2_NONE = 0ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT = 0x00000001ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT = 0x00000002ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT = 0x00000008ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT = 0x00000010ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT = 0x00000020ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT = 0x00000040ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT = 0x00000080ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT = 0x00000800ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT = 0x00001000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT = 0x00002000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT = 0x00004000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT = 0x00008000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT = 0x00010000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT = 0x100000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT = 0x200000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 0x400000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0x800000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0x1000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT = 0x200000000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT = 0x400000000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0x2000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = 0x4000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM = 0x8000000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM = 0x10000000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_NONE_KHR = 0ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT = 0x00020000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT = 0x00040000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT = 0x20000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = 0x10000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MICROMAP_READ_BIT_EXT = 0x100000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT = 0x200000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV = 0x40000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV = 0x80000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DATA_GRAPH_READ_BIT_ARM = 0x800000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM = 0x1000000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT = 0x80000000000000ULL; +static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT = 0x100000000000000ULL; + + +typedef enum VkSubmitFlagBits { + VK_SUBMIT_PROTECTED_BIT = 0x00000001, + VK_SUBMIT_PROTECTED_BIT_KHR = VK_SUBMIT_PROTECTED_BIT, + VK_SUBMIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkSubmitFlagBits; +typedef VkFlags VkSubmitFlags; +typedef VkFlags64 VkFormatFeatureFlags2; + +// Flag bits for VkFormatFeatureFlagBits2 +typedef VkFlags64 VkFormatFeatureFlagBits2; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 0x00000001ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 0x00000002ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 0x00000010ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 0x00000040ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 0x00000080ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 0x00000400ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 0x00000800ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 0x00004000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 0x00008000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT = 0x00400000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 0x00800000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 0x80000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = 0x100000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 0x200000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 0x00002000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT = 0x400000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT = 0x400000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 0x00000001ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 0x00000002ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 0x00000004ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000010ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 0x00000020ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 0x00000040ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 0x00000080ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 0x00000100ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 0x00000200ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 0x00000400ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 0x00000800ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 0x00001000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 0x00004000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 0x00008000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 0x00400000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 0x80000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 0x100000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 0x200000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 0x00010000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV = 0x8000000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV = 0x4000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM = 0x400000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM = 0x800000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM = 0x1000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM = 0x2000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM = 0x8000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM = 0x80000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV = 0x10000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV = 0x20000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV = 0x40000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM = 0x1000000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR = 0x800000000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 0x2000000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR = 0x4000000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR = 0x10000000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR = 0x20000000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR = 0x40000000000000ULL; +static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR = 0x80000000000000ULL; + + +typedef enum VkPipelineCreationFeedbackFlagBits { + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 0x00000001, + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 0x00000002, + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 0x00000004, + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT, + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT, + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT, + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkPipelineCreationFeedbackFlagBits; +typedef VkFlags VkPipelineCreationFeedbackFlags; + +typedef enum VkRenderingFlagBits { + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 0x00000001, + VK_RENDERING_SUSPENDING_BIT = 0x00000002, + VK_RENDERING_RESUMING_BIT = 0x00000004, + VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 0x00000008, + VK_RENDERING_CONTENTS_INLINE_BIT_KHR = 0x00000010, + VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 0x00000020, + VK_RENDERING_FRAGMENT_REGION_BIT_EXT = 0x00000040, + VK_RENDERING_CUSTOM_RESOLVE_BIT_EXT = 0x00000080, + VK_RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR = 0x00000100, + VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT, + VK_RENDERING_SUSPENDING_BIT_KHR = VK_RENDERING_SUSPENDING_BIT, + VK_RENDERING_RESUMING_BIT_KHR = VK_RENDERING_RESUMING_BIT, + VK_RENDERING_CONTENTS_INLINE_BIT_EXT = VK_RENDERING_CONTENTS_INLINE_BIT_KHR, + VK_RENDERING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkRenderingFlagBits; +typedef VkFlags VkRenderingFlags; +typedef struct VkPhysicalDeviceVulkan13Features { + VkStructureType sType; + void* pNext; + VkBool32 robustImageAccess; + VkBool32 inlineUniformBlock; + VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; + VkBool32 pipelineCreationCacheControl; + VkBool32 privateData; + VkBool32 shaderDemoteToHelperInvocation; + VkBool32 shaderTerminateInvocation; + VkBool32 subgroupSizeControl; + VkBool32 computeFullSubgroups; + VkBool32 synchronization2; + VkBool32 textureCompressionASTC_HDR; + VkBool32 shaderZeroInitializeWorkgroupMemory; + VkBool32 dynamicRendering; + VkBool32 shaderIntegerDotProduct; + VkBool32 maintenance4; +} VkPhysicalDeviceVulkan13Features; + +typedef struct VkPhysicalDeviceVulkan13Properties { + VkStructureType sType; + void* pNext; + uint32_t minSubgroupSize; + uint32_t maxSubgroupSize; + uint32_t maxComputeWorkgroupSubgroups; + VkShaderStageFlags requiredSubgroupSizeStages; + uint32_t maxInlineUniformBlockSize; + uint32_t maxPerStageDescriptorInlineUniformBlocks; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; + uint32_t maxDescriptorSetInlineUniformBlocks; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; + uint32_t maxInlineUniformTotalSize; + VkBool32 integerDotProduct8BitUnsignedAccelerated; + VkBool32 integerDotProduct8BitSignedAccelerated; + VkBool32 integerDotProduct8BitMixedSignednessAccelerated; + VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProduct16BitUnsignedAccelerated; + VkBool32 integerDotProduct16BitSignedAccelerated; + VkBool32 integerDotProduct16BitMixedSignednessAccelerated; + VkBool32 integerDotProduct32BitUnsignedAccelerated; + VkBool32 integerDotProduct32BitSignedAccelerated; + VkBool32 integerDotProduct32BitMixedSignednessAccelerated; + VkBool32 integerDotProduct64BitUnsignedAccelerated; + VkBool32 integerDotProduct64BitSignedAccelerated; + VkBool32 integerDotProduct64BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; + VkDeviceSize storageTexelBufferOffsetAlignmentBytes; + VkBool32 storageTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; + VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize maxBufferSize; +} VkPhysicalDeviceVulkan13Properties; + +typedef struct VkPhysicalDeviceToolProperties { + VkStructureType sType; + void* pNext; + char name[VK_MAX_EXTENSION_NAME_SIZE]; + char version[VK_MAX_EXTENSION_NAME_SIZE]; + VkToolPurposeFlags purposes; + char description[VK_MAX_DESCRIPTION_SIZE]; + char layer[VK_MAX_EXTENSION_NAME_SIZE]; +} VkPhysicalDeviceToolProperties; + +typedef struct VkPhysicalDevicePrivateDataFeatures { + VkStructureType sType; + void* pNext; + VkBool32 privateData; +} VkPhysicalDevicePrivateDataFeatures; + +typedef struct VkDevicePrivateDataCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t privateDataSlotRequestCount; +} VkDevicePrivateDataCreateInfo; + +typedef struct VkPrivateDataSlotCreateInfo { + VkStructureType sType; + const void* pNext; + VkPrivateDataSlotCreateFlags flags; +} VkPrivateDataSlotCreateInfo; + +typedef struct VkMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; +} VkMemoryBarrier2; + +typedef struct VkBufferMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; +} VkBufferMemoryBarrier2; + +typedef struct VkImageMemoryBarrier2 { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier2; + +typedef struct VkDependencyInfo { + VkStructureType sType; + const void* pNext; + VkDependencyFlags dependencyFlags; + uint32_t memoryBarrierCount; + const VkMemoryBarrier2* pMemoryBarriers; + uint32_t bufferMemoryBarrierCount; + const VkBufferMemoryBarrier2* pBufferMemoryBarriers; + uint32_t imageMemoryBarrierCount; + const VkImageMemoryBarrier2* pImageMemoryBarriers; +} VkDependencyInfo; + +typedef struct VkSemaphoreSubmitInfo { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + uint64_t value; + VkPipelineStageFlags2 stageMask; + uint32_t deviceIndex; +} VkSemaphoreSubmitInfo; + +typedef struct VkCommandBufferSubmitInfo { + VkStructureType sType; + const void* pNext; + VkCommandBuffer commandBuffer; + uint32_t deviceMask; +} VkCommandBufferSubmitInfo; + +typedef struct VkSubmitInfo2 { + VkStructureType sType; + const void* pNext; + VkSubmitFlags flags; + uint32_t waitSemaphoreInfoCount; + const VkSemaphoreSubmitInfo* pWaitSemaphoreInfos; + uint32_t commandBufferInfoCount; + const VkCommandBufferSubmitInfo* pCommandBufferInfos; + uint32_t signalSemaphoreInfoCount; + const VkSemaphoreSubmitInfo* pSignalSemaphoreInfos; +} VkSubmitInfo2; + +typedef struct VkPhysicalDeviceSynchronization2Features { + VkStructureType sType; + void* pNext; + VkBool32 synchronization2; +} VkPhysicalDeviceSynchronization2Features; + +typedef struct VkBufferCopy2 { + VkStructureType sType; + const void* pNext; + VkDeviceSize srcOffset; + VkDeviceSize dstOffset; + VkDeviceSize size; +} VkBufferCopy2; + +typedef struct VkCopyBufferInfo2 { + VkStructureType sType; + const void* pNext; + VkBuffer srcBuffer; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferCopy2* pRegions; +} VkCopyBufferInfo2; + +typedef struct VkImageCopy2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageCopy2; + +typedef struct VkCopyImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageCopy2* pRegions; +} VkCopyImageInfo2; + +typedef struct VkBufferImageCopy2 { + VkStructureType sType; + const void* pNext; + VkDeviceSize bufferOffset; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkBufferImageCopy2; + +typedef struct VkCopyBufferToImageInfo2 { + VkStructureType sType; + const void* pNext; + VkBuffer srcBuffer; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkBufferImageCopy2* pRegions; +} VkCopyBufferToImageInfo2; + +typedef struct VkCopyImageToBufferInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkBuffer dstBuffer; + uint32_t regionCount; + const VkBufferImageCopy2* pRegions; +} VkCopyImageToBufferInfo2; + +typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures { + VkStructureType sType; + void* pNext; + VkBool32 textureCompressionASTC_HDR; +} VkPhysicalDeviceTextureCompressionASTCHDRFeatures; + +typedef struct VkFormatProperties3 { + VkStructureType sType; + void* pNext; + VkFormatFeatureFlags2 linearTilingFeatures; + VkFormatFeatureFlags2 optimalTilingFeatures; + VkFormatFeatureFlags2 bufferFeatures; +} VkFormatProperties3; + +typedef struct VkPhysicalDeviceMaintenance4Features { + VkStructureType sType; + void* pNext; + VkBool32 maintenance4; +} VkPhysicalDeviceMaintenance4Features; + +typedef struct VkPhysicalDeviceMaintenance4Properties { + VkStructureType sType; + void* pNext; + VkDeviceSize maxBufferSize; +} VkPhysicalDeviceMaintenance4Properties; + +typedef struct VkDeviceBufferMemoryRequirements { + VkStructureType sType; + const void* pNext; + const VkBufferCreateInfo* pCreateInfo; +} VkDeviceBufferMemoryRequirements; + +typedef struct VkDeviceImageMemoryRequirements { + VkStructureType sType; + const void* pNext; + const VkImageCreateInfo* pCreateInfo; + VkImageAspectFlagBits planeAspect; +} VkDeviceImageMemoryRequirements; + +typedef struct VkPipelineCreationFeedback { + VkPipelineCreationFeedbackFlags flags; + uint64_t duration; +} VkPipelineCreationFeedback; + +typedef struct VkPipelineCreationFeedbackCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreationFeedback* pPipelineCreationFeedback; + uint32_t pipelineStageCreationFeedbackCount; + VkPipelineCreationFeedback* pPipelineStageCreationFeedbacks; +} VkPipelineCreationFeedbackCreateInfo; + +typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderTerminateInvocation; +} VkPhysicalDeviceShaderTerminateInvocationFeatures; + +typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderDemoteToHelperInvocation; +} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures; + +typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures { + VkStructureType sType; + void* pNext; + VkBool32 pipelineCreationCacheControl; +} VkPhysicalDevicePipelineCreationCacheControlFeatures; + +typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderZeroInitializeWorkgroupMemory; +} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + +typedef struct VkPhysicalDeviceImageRobustnessFeatures { + VkStructureType sType; + void* pNext; + VkBool32 robustImageAccess; +} VkPhysicalDeviceImageRobustnessFeatures; + +typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures { + VkStructureType sType; + void* pNext; + VkBool32 subgroupSizeControl; + VkBool32 computeFullSubgroups; +} VkPhysicalDeviceSubgroupSizeControlFeatures; + +typedef struct VkPhysicalDeviceSubgroupSizeControlProperties { + VkStructureType sType; + void* pNext; + uint32_t minSubgroupSize; + uint32_t maxSubgroupSize; + uint32_t maxComputeWorkgroupSubgroups; + VkShaderStageFlags requiredSubgroupSizeStages; +} VkPhysicalDeviceSubgroupSizeControlProperties; + +typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t requiredSubgroupSize; +} VkPipelineShaderStageRequiredSubgroupSizeCreateInfo; + +typedef struct VkPhysicalDeviceInlineUniformBlockFeatures { + VkStructureType sType; + void* pNext; + VkBool32 inlineUniformBlock; + VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; +} VkPhysicalDeviceInlineUniformBlockFeatures; + +typedef struct VkPhysicalDeviceInlineUniformBlockProperties { + VkStructureType sType; + void* pNext; + uint32_t maxInlineUniformBlockSize; + uint32_t maxPerStageDescriptorInlineUniformBlocks; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; + uint32_t maxDescriptorSetInlineUniformBlocks; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; +} VkPhysicalDeviceInlineUniformBlockProperties; + +typedef struct VkWriteDescriptorSetInlineUniformBlock { + VkStructureType sType; + const void* pNext; + uint32_t dataSize; + const void* pData; +} VkWriteDescriptorSetInlineUniformBlock; + +typedef struct VkDescriptorPoolInlineUniformBlockCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t maxInlineUniformBlockBindings; +} VkDescriptorPoolInlineUniformBlockCreateInfo; + +typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderIntegerDotProduct; +} VkPhysicalDeviceShaderIntegerDotProductFeatures; + +typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties { + VkStructureType sType; + void* pNext; + VkBool32 integerDotProduct8BitUnsignedAccelerated; + VkBool32 integerDotProduct8BitSignedAccelerated; + VkBool32 integerDotProduct8BitMixedSignednessAccelerated; + VkBool32 integerDotProduct4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedSignedAccelerated; + VkBool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProduct16BitUnsignedAccelerated; + VkBool32 integerDotProduct16BitSignedAccelerated; + VkBool32 integerDotProduct16BitMixedSignednessAccelerated; + VkBool32 integerDotProduct32BitUnsignedAccelerated; + VkBool32 integerDotProduct32BitSignedAccelerated; + VkBool32 integerDotProduct32BitMixedSignednessAccelerated; + VkBool32 integerDotProduct64BitUnsignedAccelerated; + VkBool32 integerDotProduct64BitSignedAccelerated; + VkBool32 integerDotProduct64BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated; + VkBool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated; +} VkPhysicalDeviceShaderIntegerDotProductProperties; + +typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties { + VkStructureType sType; + void* pNext; + VkDeviceSize storageTexelBufferOffsetAlignmentBytes; + VkBool32 storageTexelBufferOffsetSingleTexelAlignment; + VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; + VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; +} VkPhysicalDeviceTexelBufferAlignmentProperties; + +typedef struct VkImageBlit2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffsets[2]; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffsets[2]; +} VkImageBlit2; + +typedef struct VkBlitImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageBlit2* pRegions; + VkFilter filter; +} VkBlitImageInfo2; + +typedef struct VkImageResolve2 { + VkStructureType sType; + const void* pNext; + VkImageSubresourceLayers srcSubresource; + VkOffset3D srcOffset; + VkImageSubresourceLayers dstSubresource; + VkOffset3D dstOffset; + VkExtent3D extent; +} VkImageResolve2; + +typedef struct VkResolveImageInfo2 { + VkStructureType sType; + const void* pNext; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageResolve2* pRegions; +} VkResolveImageInfo2; + +typedef struct VkRenderingAttachmentInfo { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; + VkResolveModeFlagBits resolveMode; + VkImageView resolveImageView; + VkImageLayout resolveImageLayout; + VkAttachmentLoadOp loadOp; + VkAttachmentStoreOp storeOp; + VkClearValue clearValue; +} VkRenderingAttachmentInfo; + +typedef struct VkRenderingInfo { + VkStructureType sType; + const void* pNext; + VkRenderingFlags flags; + VkRect2D renderArea; + uint32_t layerCount; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkRenderingAttachmentInfo* pColorAttachments; + const VkRenderingAttachmentInfo* pDepthAttachment; + const VkRenderingAttachmentInfo* pStencilAttachment; +} VkRenderingInfo; + +typedef struct VkPipelineRenderingCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; +} VkPipelineRenderingCreateInfo; + +typedef struct VkPhysicalDeviceDynamicRenderingFeatures { + VkStructureType sType; + void* pNext; + VkBool32 dynamicRendering; +} VkPhysicalDeviceDynamicRenderingFeatures; + +typedef struct VkCommandBufferInheritanceRenderingInfo { + VkStructureType sType; + const void* pNext; + VkRenderingFlags flags; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; + VkSampleCountFlagBits rasterizationSamples; +} VkCommandBufferInheritanceRenderingInfo; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolProperties)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlot)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot); +typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlot)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); +typedef void (VKAPI_PTR *PFN_vkGetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); +typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirements)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos); +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRendering)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRendering)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdSetCullMode)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFace)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopology)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCount)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCount)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors); +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnable)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOp)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnable)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOp)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnable)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnable)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolProperties( + VkPhysicalDevice physicalDevice, + uint32_t* pToolCount, + VkPhysicalDeviceToolProperties* pToolProperties); + +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlot( + VkDevice device, + const VkPrivateDataSlotCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPrivateDataSlot* pPrivateDataSlot); + +VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlot( + VkDevice device, + VkPrivateDataSlot privateDataSlot, + const VkAllocationCallbacks* pAllocator); + +VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateData( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t data); + +VKAPI_ATTR void VKAPI_CALL vkGetPrivateData( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2( + VkCommandBuffer commandBuffer, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query); + +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2( + VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo2* pSubmits, + VkFence fence); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2( + VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2* pCopyBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2( + VkCommandBuffer commandBuffer, + const VkCopyImageInfo2* pCopyImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2( + VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2( + VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirements( + VkDevice device, + const VkDeviceBufferMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirements( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirements( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2( + VkCommandBuffer commandBuffer, + VkEvent event, + const VkDependencyInfo* pDependencyInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags2 stageMask); + +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2( + VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent* pEvents, + const VkDependencyInfo* pDependencyInfos); + +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2( + VkCommandBuffer commandBuffer, + const VkBlitImageInfo2* pBlitImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2( + VkCommandBuffer commandBuffer, + const VkResolveImageInfo2* pResolveImageInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRendering( + VkCommandBuffer commandBuffer, + const VkRenderingInfo* pRenderingInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetCullMode( + VkCommandBuffer commandBuffer, + VkCullModeFlags cullMode); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFace( + VkCommandBuffer commandBuffer, + VkFrontFace frontFace); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopology( + VkCommandBuffer commandBuffer, + VkPrimitiveTopology primitiveTopology); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCount( + VkCommandBuffer commandBuffer, + uint32_t viewportCount, + const VkViewport* pViewports); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCount( + VkCommandBuffer commandBuffer, + uint32_t scissorCount, + const VkRect2D* pScissors); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes, + const VkDeviceSize* pStrides); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthWriteEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOp( + VkCommandBuffer commandBuffer, + VkCompareOp depthCompareOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthBoundsTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnable( + VkCommandBuffer commandBuffer, + VkBool32 stencilTestEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOp( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnable( + VkCommandBuffer commandBuffer, + VkBool32 rasterizerDiscardEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnable( + VkCommandBuffer commandBuffer, + VkBool32 depthBiasEnable); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnable( + VkCommandBuffer commandBuffer, + VkBool32 primitiveRestartEnable); +#endif + + +// VK_VERSION_1_4 is a preprocessor guard. Do not pass it to API calls. +#define VK_VERSION_1_4 1 +// Vulkan 1.4 version number +#define VK_API_VERSION_1_4 VK_MAKE_API_VERSION(0, 1, 4, 0)// Patch version should always be set to 0 + +#define VK_MAX_GLOBAL_PRIORITY_SIZE 16U + +typedef enum VkPipelineRobustnessBufferBehavior { + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT = 0, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED = 1, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS = 2, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2 = 3, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2, + VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF +} VkPipelineRobustnessBufferBehavior; + +typedef enum VkPipelineRobustnessImageBehavior { + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT = 0, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED = 1, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS = 2, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2 = 3, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2, + VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF +} VkPipelineRobustnessImageBehavior; + +typedef enum VkQueueGlobalPriority { + VK_QUEUE_GLOBAL_PRIORITY_LOW = 128, + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM = 256, + VK_QUEUE_GLOBAL_PRIORITY_HIGH = 512, + VK_QUEUE_GLOBAL_PRIORITY_REALTIME = 1024, + VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW, + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM, + VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = VK_QUEUE_GLOBAL_PRIORITY_HIGH, + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME, + VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = VK_QUEUE_GLOBAL_PRIORITY_LOW, + VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM, + VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = VK_QUEUE_GLOBAL_PRIORITY_HIGH, + VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = VK_QUEUE_GLOBAL_PRIORITY_REALTIME, + VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM = 0x7FFFFFFF +} VkQueueGlobalPriority; + +typedef enum VkLineRasterizationMode { + VK_LINE_RASTERIZATION_MODE_DEFAULT = 0, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR = 1, + VK_LINE_RASTERIZATION_MODE_BRESENHAM = 2, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH = 3, + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = VK_LINE_RASTERIZATION_MODE_DEFAULT, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR, + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = VK_LINE_RASTERIZATION_MODE_BRESENHAM, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, + VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR = VK_LINE_RASTERIZATION_MODE_DEFAULT, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR, + VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR = VK_LINE_RASTERIZATION_MODE_BRESENHAM, + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, + VK_LINE_RASTERIZATION_MODE_MAX_ENUM = 0x7FFFFFFF +} VkLineRasterizationMode; + +typedef enum VkMemoryUnmapFlagBits { + VK_MEMORY_UNMAP_RESERVE_BIT_EXT = 0x00000001, + VK_MEMORY_UNMAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkMemoryUnmapFlagBits; +typedef VkFlags VkMemoryUnmapFlags; +typedef VkFlags64 VkBufferUsageFlags2; + +// Flag bits for VkBufferUsageFlagBits2 +typedef VkFlags64 VkBufferUsageFlagBits2; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT = 0x00000001ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFER_DST_BIT = 0x00000002ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT = 0x00000008ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT = 0x00000010ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT = 0x00000020ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT = 0x00000040ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT = 0x00000080ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT = 0x00000100ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT = 0x00020000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = 0x02000000ULL; +#endif +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT = 0x10000000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR = 0x00000001ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR = 0x00000002ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000004ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR = 0x00000010ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR = 0x00000020ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR = 0x00000040ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR = 0x00000080ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR = 0x00000100ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV = 0x00000400ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR = 0x00004000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR = 0x00020000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 0x00200000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00400000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 0x04000000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 0x00800000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT = 0x01000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX = 0x200000000ULL; +#endif +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM = 0x20000000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM = 0x08000000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT = 0x100000000ULL; +static const VkBufferUsageFlagBits2 VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT = 0x80000000ULL; + + +typedef enum VkHostImageCopyFlagBits { + VK_HOST_IMAGE_COPY_MEMCPY_BIT = 0x00000001, + // VK_HOST_IMAGE_COPY_MEMCPY is a legacy alias + VK_HOST_IMAGE_COPY_MEMCPY = VK_HOST_IMAGE_COPY_MEMCPY_BIT, + VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT = VK_HOST_IMAGE_COPY_MEMCPY_BIT, + // VK_HOST_IMAGE_COPY_MEMCPY_EXT is a legacy alias + VK_HOST_IMAGE_COPY_MEMCPY_EXT = VK_HOST_IMAGE_COPY_MEMCPY_BIT, + VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF +} VkHostImageCopyFlagBits; +typedef VkFlags VkHostImageCopyFlags; +typedef VkFlags64 VkPipelineCreateFlags2; + +// Flag bits for VkPipelineCreateFlagBits2 +typedef VkFlags64 VkPipelineCreateFlagBits2; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT = 0x00000001ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT = 0x00000002ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DERIVATIVE_BIT = 0x00000004ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT = 0x00000010ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 0x00000100ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT = 0x00000200ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT = 0x08000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT = 0x40000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX = 0x100000000ULL; +#endif +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT = 0x1000000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES_BIT_KHR = 0x00001000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV = 0x200000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT = 0x400000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR = 0x00000001ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR = 0x00000002ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR = 0x00000004ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 0x00000008ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR = 0x00000010ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV = 0x00000020ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR = 0x00000040ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR = 0x00000100ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR = 0x00000200ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT = 0x00000400ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0x00800000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR = 0x00000800ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV = 0x00040000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 0x01000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x02000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x04000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT = 0x08000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT = 0x40000000ULL; +#ifdef VK_ENABLE_BETA_EXTENSIONS +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = 0x10000000ULL; +#endif +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT = 0x20000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM = 0x2000000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM = 0x8000000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR = 0x80000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT = 0x4000000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE = 0x10000000000ULL; +static const VkPipelineCreateFlagBits2 VK_PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT = 0x80000000000ULL; + +typedef struct VkPhysicalDeviceVulkan14Features { + VkStructureType sType; + void* pNext; + VkBool32 globalPriorityQuery; + VkBool32 shaderSubgroupRotate; + VkBool32 shaderSubgroupRotateClustered; + VkBool32 shaderFloatControls2; + VkBool32 shaderExpectAssume; + VkBool32 rectangularLines; + VkBool32 bresenhamLines; + VkBool32 smoothLines; + VkBool32 stippledRectangularLines; + VkBool32 stippledBresenhamLines; + VkBool32 stippledSmoothLines; + VkBool32 vertexAttributeInstanceRateDivisor; + VkBool32 vertexAttributeInstanceRateZeroDivisor; + VkBool32 indexTypeUint8; + VkBool32 dynamicRenderingLocalRead; + VkBool32 maintenance5; + VkBool32 maintenance6; + VkBool32 pipelineProtectedAccess; + VkBool32 pipelineRobustness; + VkBool32 hostImageCopy; + VkBool32 pushDescriptor; +} VkPhysicalDeviceVulkan14Features; + +typedef struct VkPhysicalDeviceVulkan14Properties { + VkStructureType sType; + void* pNext; + uint32_t lineSubPixelPrecisionBits; + uint32_t maxVertexAttribDivisor; + VkBool32 supportsNonZeroFirstInstance; + uint32_t maxPushDescriptors; + VkBool32 dynamicRenderingLocalReadDepthStencilAttachments; + VkBool32 dynamicRenderingLocalReadMultisampledAttachments; + VkBool32 earlyFragmentMultisampleCoverageAfterSampleCounting; + VkBool32 earlyFragmentSampleMaskTestBeforeSampleCounting; + VkBool32 depthStencilSwizzleOneSupport; + VkBool32 polygonModePointSize; + VkBool32 nonStrictSinglePixelWideLinesUseParallelogram; + VkBool32 nonStrictWideLinesUseParallelogram; + VkBool32 blockTexelViewCompatibleMultipleLayers; + uint32_t maxCombinedImageSamplerDescriptorCount; + VkBool32 fragmentShadingRateClampCombinerInputs; + VkPipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers; + VkPipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers; + VkPipelineRobustnessBufferBehavior defaultRobustnessVertexInputs; + VkPipelineRobustnessImageBehavior defaultRobustnessImages; + uint32_t copySrcLayoutCount; + VkImageLayout* pCopySrcLayouts; + uint32_t copyDstLayoutCount; + VkImageLayout* pCopyDstLayouts; + uint8_t optimalTilingLayoutUUID[VK_UUID_SIZE]; + VkBool32 identicalMemoryTypeRequirements; +} VkPhysicalDeviceVulkan14Properties; + +typedef struct VkDeviceQueueGlobalPriorityCreateInfo { + VkStructureType sType; + const void* pNext; + VkQueueGlobalPriority globalPriority; +} VkDeviceQueueGlobalPriorityCreateInfo; + +typedef struct VkPhysicalDeviceGlobalPriorityQueryFeatures { + VkStructureType sType; + void* pNext; + VkBool32 globalPriorityQuery; +} VkPhysicalDeviceGlobalPriorityQueryFeatures; + +typedef struct VkQueueFamilyGlobalPriorityProperties { + VkStructureType sType; + void* pNext; + uint32_t priorityCount; + VkQueueGlobalPriority priorities[VK_MAX_GLOBAL_PRIORITY_SIZE]; +} VkQueueFamilyGlobalPriorityProperties; + +typedef struct VkPhysicalDeviceIndexTypeUint8Features { + VkStructureType sType; + void* pNext; + VkBool32 indexTypeUint8; +} VkPhysicalDeviceIndexTypeUint8Features; + +typedef struct VkMemoryMapInfo { + VkStructureType sType; + const void* pNext; + VkMemoryMapFlags flags; + VkDeviceMemory memory; + VkDeviceSize offset; + VkDeviceSize size; +} VkMemoryMapInfo; + +typedef struct VkMemoryUnmapInfo { + VkStructureType sType; + const void* pNext; + VkMemoryUnmapFlags flags; + VkDeviceMemory memory; +} VkMemoryUnmapInfo; + +typedef struct VkPhysicalDeviceMaintenance5Features { + VkStructureType sType; + void* pNext; + VkBool32 maintenance5; +} VkPhysicalDeviceMaintenance5Features; + +typedef struct VkPhysicalDeviceMaintenance5Properties { + VkStructureType sType; + void* pNext; + VkBool32 earlyFragmentMultisampleCoverageAfterSampleCounting; + VkBool32 earlyFragmentSampleMaskTestBeforeSampleCounting; + VkBool32 depthStencilSwizzleOneSupport; + VkBool32 polygonModePointSize; + VkBool32 nonStrictSinglePixelWideLinesUseParallelogram; + VkBool32 nonStrictWideLinesUseParallelogram; +} VkPhysicalDeviceMaintenance5Properties; + +typedef struct VkSubresourceLayout2 { + VkStructureType sType; + void* pNext; + VkSubresourceLayout subresourceLayout; +} VkSubresourceLayout2; + +typedef struct VkImageSubresource2 { + VkStructureType sType; + void* pNext; + VkImageSubresource imageSubresource; +} VkImageSubresource2; + +typedef struct VkDeviceImageSubresourceInfo { + VkStructureType sType; + const void* pNext; + const VkImageCreateInfo* pCreateInfo; + const VkImageSubresource2* pSubresource; +} VkDeviceImageSubresourceInfo; + +typedef struct VkBufferUsageFlags2CreateInfo { + VkStructureType sType; + const void* pNext; + VkBufferUsageFlags2 usage; +} VkBufferUsageFlags2CreateInfo; + +typedef struct VkPhysicalDeviceMaintenance6Features { + VkStructureType sType; + void* pNext; + VkBool32 maintenance6; +} VkPhysicalDeviceMaintenance6Features; + +typedef struct VkPhysicalDeviceMaintenance6Properties { + VkStructureType sType; + void* pNext; + VkBool32 blockTexelViewCompatibleMultipleLayers; + uint32_t maxCombinedImageSamplerDescriptorCount; + VkBool32 fragmentShadingRateClampCombinerInputs; +} VkPhysicalDeviceMaintenance6Properties; + +typedef struct VkBindMemoryStatus { + VkStructureType sType; + const void* pNext; + VkResult* pResult; +} VkBindMemoryStatus; + +typedef struct VkPhysicalDeviceHostImageCopyFeatures { + VkStructureType sType; + void* pNext; + VkBool32 hostImageCopy; +} VkPhysicalDeviceHostImageCopyFeatures; + +typedef struct VkPhysicalDeviceHostImageCopyProperties { + VkStructureType sType; + void* pNext; + uint32_t copySrcLayoutCount; + VkImageLayout* pCopySrcLayouts; + uint32_t copyDstLayoutCount; + VkImageLayout* pCopyDstLayouts; + uint8_t optimalTilingLayoutUUID[VK_UUID_SIZE]; + VkBool32 identicalMemoryTypeRequirements; +} VkPhysicalDeviceHostImageCopyProperties; + +typedef struct VkMemoryToImageCopy { + VkStructureType sType; + const void* pNext; + const void* pHostPointer; + uint32_t memoryRowLength; + uint32_t memoryImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkMemoryToImageCopy; + +typedef struct VkImageToMemoryCopy { + VkStructureType sType; + const void* pNext; + void* pHostPointer; + uint32_t memoryRowLength; + uint32_t memoryImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkImageToMemoryCopy; + +typedef struct VkCopyMemoryToImageInfo { + VkStructureType sType; + const void* pNext; + VkHostImageCopyFlags flags; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkMemoryToImageCopy* pRegions; +} VkCopyMemoryToImageInfo; + +typedef struct VkCopyImageToMemoryInfo { + VkStructureType sType; + const void* pNext; + VkHostImageCopyFlags flags; + VkImage srcImage; + VkImageLayout srcImageLayout; + uint32_t regionCount; + const VkImageToMemoryCopy* pRegions; +} VkCopyImageToMemoryInfo; + +typedef struct VkCopyImageToImageInfo { + VkStructureType sType; + const void* pNext; + VkHostImageCopyFlags flags; + VkImage srcImage; + VkImageLayout srcImageLayout; + VkImage dstImage; + VkImageLayout dstImageLayout; + uint32_t regionCount; + const VkImageCopy2* pRegions; +} VkCopyImageToImageInfo; + +typedef struct VkHostImageLayoutTransitionInfo { + VkStructureType sType; + const void* pNext; + VkImage image; + VkImageLayout oldLayout; + VkImageLayout newLayout; + VkImageSubresourceRange subresourceRange; +} VkHostImageLayoutTransitionInfo; + +typedef struct VkSubresourceHostMemcpySize { + VkStructureType sType; + void* pNext; + VkDeviceSize size; +} VkSubresourceHostMemcpySize; + +typedef struct VkHostImageCopyDevicePerformanceQuery { + VkStructureType sType; + void* pNext; + VkBool32 optimalDeviceAccess; + VkBool32 identicalMemoryLayout; +} VkHostImageCopyDevicePerformanceQuery; + +typedef struct VkPhysicalDeviceShaderSubgroupRotateFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupRotate; + VkBool32 shaderSubgroupRotateClustered; +} VkPhysicalDeviceShaderSubgroupRotateFeatures; + +typedef struct VkPhysicalDeviceShaderFloatControls2Features { + VkStructureType sType; + void* pNext; + VkBool32 shaderFloatControls2; +} VkPhysicalDeviceShaderFloatControls2Features; + +typedef struct VkPhysicalDeviceShaderExpectAssumeFeatures { + VkStructureType sType; + void* pNext; + VkBool32 shaderExpectAssume; +} VkPhysicalDeviceShaderExpectAssumeFeatures; + +typedef struct VkPipelineCreateFlags2CreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags2 flags; +} VkPipelineCreateFlags2CreateInfo; + +typedef struct VkPhysicalDevicePushDescriptorProperties { + VkStructureType sType; + void* pNext; + uint32_t maxPushDescriptors; +} VkPhysicalDevicePushDescriptorProperties; + +typedef struct VkBindDescriptorSetsInfo { + VkStructureType sType; + const void* pNext; + VkShaderStageFlags stageFlags; + VkPipelineLayout layout; + uint32_t firstSet; + uint32_t descriptorSetCount; + const VkDescriptorSet* pDescriptorSets; + uint32_t dynamicOffsetCount; + const uint32_t* pDynamicOffsets; +} VkBindDescriptorSetsInfo; + +typedef struct VkPushConstantsInfo { + VkStructureType sType; + const void* pNext; + VkPipelineLayout layout; + VkShaderStageFlags stageFlags; + uint32_t offset; + uint32_t size; + const void* pValues; +} VkPushConstantsInfo; + +typedef struct VkPushDescriptorSetInfo { + VkStructureType sType; + const void* pNext; + VkShaderStageFlags stageFlags; + VkPipelineLayout layout; + uint32_t set; + uint32_t descriptorWriteCount; + const VkWriteDescriptorSet* pDescriptorWrites; +} VkPushDescriptorSetInfo; + +typedef struct VkPushDescriptorSetWithTemplateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorUpdateTemplate descriptorUpdateTemplate; + VkPipelineLayout layout; + uint32_t set; + const void* pData; +} VkPushDescriptorSetWithTemplateInfo; + +typedef struct VkPhysicalDevicePipelineProtectedAccessFeatures { + VkStructureType sType; + void* pNext; + VkBool32 pipelineProtectedAccess; +} VkPhysicalDevicePipelineProtectedAccessFeatures; + +typedef struct VkPhysicalDevicePipelineRobustnessFeatures { + VkStructureType sType; + void* pNext; + VkBool32 pipelineRobustness; +} VkPhysicalDevicePipelineRobustnessFeatures; + +typedef struct VkPhysicalDevicePipelineRobustnessProperties { + VkStructureType sType; + void* pNext; + VkPipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers; + VkPipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers; + VkPipelineRobustnessBufferBehavior defaultRobustnessVertexInputs; + VkPipelineRobustnessImageBehavior defaultRobustnessImages; +} VkPhysicalDevicePipelineRobustnessProperties; + +typedef struct VkPipelineRobustnessCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineRobustnessBufferBehavior storageBuffers; + VkPipelineRobustnessBufferBehavior uniformBuffers; + VkPipelineRobustnessBufferBehavior vertexInputs; + VkPipelineRobustnessImageBehavior images; +} VkPipelineRobustnessCreateInfo; + +typedef struct VkPhysicalDeviceLineRasterizationFeatures { + VkStructureType sType; + void* pNext; + VkBool32 rectangularLines; + VkBool32 bresenhamLines; + VkBool32 smoothLines; + VkBool32 stippledRectangularLines; + VkBool32 stippledBresenhamLines; + VkBool32 stippledSmoothLines; +} VkPhysicalDeviceLineRasterizationFeatures; + +typedef struct VkPhysicalDeviceLineRasterizationProperties { + VkStructureType sType; + void* pNext; + uint32_t lineSubPixelPrecisionBits; +} VkPhysicalDeviceLineRasterizationProperties; + +typedef struct VkPipelineRasterizationLineStateCreateInfo { + VkStructureType sType; + const void* pNext; + VkLineRasterizationMode lineRasterizationMode; + VkBool32 stippledLineEnable; + uint32_t lineStippleFactor; + uint16_t lineStipplePattern; +} VkPipelineRasterizationLineStateCreateInfo; + +typedef struct VkPhysicalDeviceVertexAttributeDivisorProperties { + VkStructureType sType; + void* pNext; + uint32_t maxVertexAttribDivisor; + VkBool32 supportsNonZeroFirstInstance; +} VkPhysicalDeviceVertexAttributeDivisorProperties; + +typedef struct VkVertexInputBindingDivisorDescription { + uint32_t binding; + uint32_t divisor; +} VkVertexInputBindingDivisorDescription; + +typedef struct VkPipelineVertexInputDivisorStateCreateInfo { + VkStructureType sType; + const void* pNext; + uint32_t vertexBindingDivisorCount; + const VkVertexInputBindingDivisorDescription* pVertexBindingDivisors; +} VkPipelineVertexInputDivisorStateCreateInfo; + +typedef struct VkPhysicalDeviceVertexAttributeDivisorFeatures { + VkStructureType sType; + void* pNext; + VkBool32 vertexAttributeInstanceRateDivisor; + VkBool32 vertexAttributeInstanceRateZeroDivisor; +} VkPhysicalDeviceVertexAttributeDivisorFeatures; + +typedef struct VkRenderingAreaInfo { + VkStructureType sType; + const void* pNext; + uint32_t viewMask; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; +} VkRenderingAreaInfo; + +typedef struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures { + VkStructureType sType; + void* pNext; + VkBool32 dynamicRenderingLocalRead; +} VkPhysicalDeviceDynamicRenderingLocalReadFeatures; + +typedef struct VkRenderingAttachmentLocationInfo { + VkStructureType sType; + const void* pNext; + uint32_t colorAttachmentCount; + const uint32_t* pColorAttachmentLocations; +} VkRenderingAttachmentLocationInfo; + +typedef struct VkRenderingInputAttachmentIndexInfo { + VkStructureType sType; + const void* pNext; + uint32_t colorAttachmentCount; + const uint32_t* pColorAttachmentInputIndices; + const uint32_t* pDepthInputAttachmentIndex; + const uint32_t* pStencilInputAttachmentIndex; +} VkRenderingInputAttachmentIndexInfo; + +typedef VkResult (VKAPI_PTR *PFN_vkMapMemory2)(VkDevice device, const VkMemoryMapInfo* pMemoryMapInfo, void** ppData); +typedef VkResult (VKAPI_PTR *PFN_vkUnmapMemory2)(VkDevice device, const VkMemoryUnmapInfo* pMemoryUnmapInfo); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSubresourceLayout)(VkDevice device, const VkDeviceImageSubresourceInfo* pInfo, VkSubresourceLayout2* pLayout); +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2)(VkDevice device, VkImage image, const VkImageSubresource2* pSubresource, VkSubresourceLayout2* pLayout); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToImage)(VkDevice device, const VkCopyMemoryToImageInfo* pCopyMemoryToImageInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyImageToMemory)(VkDevice device, const VkCopyImageToMemoryInfo* pCopyImageToMemoryInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyImageToImage)(VkDevice device, const VkCopyImageToImageInfo* pCopyImageToImageInfo); +typedef VkResult (VKAPI_PTR *PFN_vkTransitionImageLayout)(VkDevice device, uint32_t transitionCount, const VkHostImageLayoutTransitionInfo* pTransitions); +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSet)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites); +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplate)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets2)(VkCommandBuffer commandBuffer, const VkBindDescriptorSetsInfo* pBindDescriptorSetsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdPushConstants2)(VkCommandBuffer commandBuffer, const VkPushConstantsInfo* pPushConstantsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSet2)(VkCommandBuffer commandBuffer, const VkPushDescriptorSetInfo* pPushDescriptorSetInfo); +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplate2)(VkCommandBuffer commandBuffer, const VkPushDescriptorSetWithTemplateInfo* pPushDescriptorSetWithTemplateInfo); +typedef void (VKAPI_PTR *PFN_vkCmdSetLineStipple)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); +typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer2)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize size, VkIndexType indexType); +typedef void (VKAPI_PTR *PFN_vkGetRenderingAreaGranularity)(VkDevice device, const VkRenderingAreaInfo* pRenderingAreaInfo, VkExtent2D* pGranularity); +typedef void (VKAPI_PTR *PFN_vkCmdSetRenderingAttachmentLocations)(VkCommandBuffer commandBuffer, const VkRenderingAttachmentLocationInfo* pLocationInfo); +typedef void (VKAPI_PTR *PFN_vkCmdSetRenderingInputAttachmentIndices)(VkCommandBuffer commandBuffer, const VkRenderingInputAttachmentIndexInfo* pInputAttachmentIndexInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory2( + VkDevice device, + const VkMemoryMapInfo* pMemoryMapInfo, + void** ppData); + +VKAPI_ATTR VkResult VKAPI_CALL vkUnmapMemory2( + VkDevice device, + const VkMemoryUnmapInfo* pMemoryUnmapInfo); + +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSubresourceLayout( + VkDevice device, + const VkDeviceImageSubresourceInfo* pInfo, + VkSubresourceLayout2* pLayout); + +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2( + VkDevice device, + VkImage image, + const VkImageSubresource2* pSubresource, + VkSubresourceLayout2* pLayout); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToImage( + VkDevice device, + const VkCopyMemoryToImageInfo* pCopyMemoryToImageInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyImageToMemory( + VkDevice device, + const VkCopyImageToMemoryInfo* pCopyImageToMemoryInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkCopyImageToImage( + VkDevice device, + const VkCopyImageToImageInfo* pCopyImageToImageInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkTransitionImageLayout( + VkDevice device, + uint32_t transitionCount, + const VkHostImageLayoutTransitionInfo* pTransitions); + +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSet( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + const VkWriteDescriptorSet* pDescriptorWrites); + +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplate( + VkCommandBuffer commandBuffer, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + VkPipelineLayout layout, + uint32_t set, + const void* pData); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets2( + VkCommandBuffer commandBuffer, + const VkBindDescriptorSetsInfo* pBindDescriptorSetsInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants2( + VkCommandBuffer commandBuffer, + const VkPushConstantsInfo* pPushConstantsInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSet2( + VkCommandBuffer commandBuffer, + const VkPushDescriptorSetInfo* pPushDescriptorSetInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplate2( + VkCommandBuffer commandBuffer, + const VkPushDescriptorSetWithTemplateInfo* pPushDescriptorSetWithTemplateInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStipple( + VkCommandBuffer commandBuffer, + uint32_t lineStippleFactor, + uint16_t lineStipplePattern); + +VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer2( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkDeviceSize size, + VkIndexType indexType); + +VKAPI_ATTR void VKAPI_CALL vkGetRenderingAreaGranularity( + VkDevice device, + const VkRenderingAreaInfo* pRenderingAreaInfo, + VkExtent2D* pGranularity); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRenderingAttachmentLocations( + VkCommandBuffer commandBuffer, + const VkRenderingAttachmentLocationInfo* pLocationInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdSetRenderingInputAttachmentIndices( + VkCommandBuffer commandBuffer, + const VkRenderingInputAttachmentIndexInfo* pInputAttachmentIndexInfo); +#endif + + +// VK_KHR_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_surface 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) +#define VK_KHR_SURFACE_SPEC_VERSION 25 +#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" + +typedef enum 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_FIFO_LATEST_READY_KHR = 1000361000, + VK_PRESENT_MODE_FIFO_LATEST_READY_EXT = VK_PRESENT_MODE_FIFO_LATEST_READY_KHR, + VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPresentModeKHR; + +typedef enum 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 is legacy, but no reason was given in the API XML + 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 is a legacy alias + VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, + // VK_COLOR_SPACE_DCI_P3_LINEAR_EXT is a legacy alias + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, + VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkColorSpaceKHR; + +typedef enum VkSurfaceTransformFlagBitsKHR { + VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001, + VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002, + VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004, + VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040, + VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080, + VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100, + VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkSurfaceTransformFlagBitsKHR; + +typedef enum VkCompositeAlphaFlagBitsKHR { + VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, + VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002, + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004, + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008, + VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkCompositeAlphaFlagBitsKHR; +typedef VkFlags VkCompositeAlphaFlagsKHR; +typedef VkFlags VkSurfaceTransformFlagsKHR; +typedef struct VkSurfaceCapabilitiesKHR { + uint32_t minImageCount; + uint32_t maxImageCount; + VkExtent2D currentExtent; + VkExtent2D minImageExtent; + VkExtent2D maxImageExtent; + uint32_t maxImageArrayLayers; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkSurfaceTransformFlagBitsKHR currentTransform; + VkCompositeAlphaFlagsKHR supportedCompositeAlpha; + VkImageUsageFlags supportedUsageFlags; +} VkSurfaceCapabilitiesKHR; + +typedef struct VkSurfaceFormatKHR { + VkFormat format; + VkColorSpaceKHR colorSpace; +} VkSurfaceFormatKHR; + +typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR( + VkInstance instance, + VkSurfaceKHR surface, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + VkSurfaceKHR surface, + VkBool32* pSupported); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t* pSurfaceFormatCount, + VkSurfaceFormatKHR* pSurfaceFormats); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t* pPresentModeCount, + VkPresentModeKHR* pPresentModes); +#endif +#endif + + +// VK_KHR_swapchain is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_swapchain 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) +#define VK_KHR_SWAPCHAIN_SPEC_VERSION 70 +#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" + +typedef enum VkSwapchainCreateFlagBitsKHR { + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001, + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002, + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004, + VK_SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT = 0x00000200, + VK_SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR = 0x00000040, + VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR = 0x00000080, + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR = 0x00000008, + VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR, + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkSwapchainCreateFlagBitsKHR; +typedef VkFlags VkSwapchainCreateFlagsKHR; + +typedef enum VkDeviceGroupPresentModeFlagBitsKHR { + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001, + VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002, + VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004, + VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008, + VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDeviceGroupPresentModeFlagBitsKHR; +typedef VkFlags VkDeviceGroupPresentModeFlagsKHR; +typedef struct VkSwapchainCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainCreateFlagsKHR flags; + VkSurfaceKHR surface; + uint32_t minImageCount; + VkFormat imageFormat; + VkColorSpaceKHR imageColorSpace; + VkExtent2D imageExtent; + uint32_t imageArrayLayers; + VkImageUsageFlags imageUsage; + VkSharingMode imageSharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; + VkSurfaceTransformFlagBitsKHR preTransform; + VkCompositeAlphaFlagBitsKHR compositeAlpha; + VkPresentModeKHR presentMode; + VkBool32 clipped; + VkSwapchainKHR oldSwapchain; +} VkSwapchainCreateInfoKHR; + +typedef struct VkPresentInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreCount; + const VkSemaphore* pWaitSemaphores; + uint32_t swapchainCount; + const VkSwapchainKHR* pSwapchains; + const uint32_t* pImageIndices; + VkResult* pResults; +} VkPresentInfoKHR; + +typedef struct VkImageSwapchainCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; +} VkImageSwapchainCreateInfoKHR; + +typedef struct VkBindImageMemorySwapchainInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; + uint32_t imageIndex; +} VkBindImageMemorySwapchainInfoKHR; + +typedef struct VkAcquireNextImageInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; + uint64_t timeout; + VkSemaphore semaphore; + VkFence fence; + uint32_t deviceMask; +} VkAcquireNextImageInfoKHR; + +typedef struct VkDeviceGroupPresentCapabilitiesKHR { + VkStructureType sType; + void* pNext; + uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE]; + VkDeviceGroupPresentModeFlagsKHR modes; +} VkDeviceGroupPresentCapabilitiesKHR; + +typedef struct VkDeviceGroupPresentInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const uint32_t* pDeviceMasks; + VkDeviceGroupPresentModeFlagBitsKHR mode; +} VkDeviceGroupPresentInfoKHR; + +typedef struct VkDeviceGroupSwapchainCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceGroupPresentModeFlagsKHR modes; +} VkDeviceGroupSwapchainCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain); +typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex); +typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( + VkDevice device, + const VkSwapchainCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSwapchainKHR* pSwapchain); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR( + VkDevice device, + VkSwapchainKHR swapchain, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR( + VkDevice device, + VkSwapchainKHR swapchain, + uint32_t* pSwapchainImageCount, + VkImage* pSwapchainImages); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR( + VkDevice device, + VkSwapchainKHR swapchain, + uint64_t timeout, + VkSemaphore semaphore, + VkFence fence, + uint32_t* pImageIndex); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR( + VkQueue queue, + const VkPresentInfoKHR* pPresentInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR( + VkDevice device, + VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR( + VkDevice device, + VkSurfaceKHR surface, + VkDeviceGroupPresentModeFlagsKHR* pModes); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + uint32_t* pRectCount, + VkRect2D* pRects); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR( + VkDevice device, + const VkAcquireNextImageInfoKHR* pAcquireInfo, + uint32_t* pImageIndex); +#endif +#endif + + +// VK_KHR_display is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_display 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR) +#define VK_KHR_DISPLAY_SPEC_VERSION 23 +#define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display" +typedef VkFlags VkDisplayModeCreateFlagsKHR; + +typedef enum VkDisplayPlaneAlphaFlagBitsKHR { + VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, + VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002, + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004, + VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008, + VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDisplayPlaneAlphaFlagBitsKHR; +typedef VkFlags VkDisplayPlaneAlphaFlagsKHR; +typedef VkFlags VkDisplaySurfaceCreateFlagsKHR; +typedef struct VkDisplayModeParametersKHR { + VkExtent2D visibleRegion; + uint32_t refreshRate; +} VkDisplayModeParametersKHR; + +typedef struct VkDisplayModeCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkDisplayModeCreateFlagsKHR flags; + VkDisplayModeParametersKHR parameters; +} VkDisplayModeCreateInfoKHR; + +typedef struct VkDisplayModePropertiesKHR { + VkDisplayModeKHR displayMode; + VkDisplayModeParametersKHR parameters; +} VkDisplayModePropertiesKHR; + +typedef struct VkDisplayPlaneCapabilitiesKHR { + VkDisplayPlaneAlphaFlagsKHR supportedAlpha; + VkOffset2D minSrcPosition; + VkOffset2D maxSrcPosition; + VkExtent2D minSrcExtent; + VkExtent2D maxSrcExtent; + VkOffset2D minDstPosition; + VkOffset2D maxDstPosition; + VkExtent2D minDstExtent; + VkExtent2D maxDstExtent; +} VkDisplayPlaneCapabilitiesKHR; + +typedef struct VkDisplayPlanePropertiesKHR { + VkDisplayKHR currentDisplay; + uint32_t currentStackIndex; +} VkDisplayPlanePropertiesKHR; + +typedef struct VkDisplayPropertiesKHR { + VkDisplayKHR display; + const char* displayName; + VkExtent2D physicalDimensions; + VkExtent2D physicalResolution; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkBool32 planeReorderPossible; + VkBool32 persistentContent; +} VkDisplayPropertiesKHR; + +typedef struct VkDisplaySurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkDisplaySurfaceCreateFlagsKHR flags; + VkDisplayModeKHR displayMode; + uint32_t planeIndex; + uint32_t planeStackIndex; + VkSurfaceTransformFlagBitsKHR transform; + float globalAlpha; + VkDisplayPlaneAlphaFlagBitsKHR alphaMode; + VkExtent2D imageExtent; +} VkDisplaySurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkDisplayPropertiesKHR* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkDisplayPlanePropertiesKHR* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR( + VkPhysicalDevice physicalDevice, + uint32_t planeIndex, + uint32_t* pDisplayCount, + VkDisplayKHR* pDisplays); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + uint32_t* pPropertyCount, + VkDisplayModePropertiesKHR* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + const VkDisplayModeCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDisplayModeKHR* pMode); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR( + VkPhysicalDevice physicalDevice, + VkDisplayModeKHR mode, + uint32_t planeIndex, + VkDisplayPlaneCapabilitiesKHR* pCapabilities); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR( + VkInstance instance, + const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif +#endif + + +// VK_KHR_display_swapchain is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_display_swapchain 1 +#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10 +#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain" +typedef struct VkDisplayPresentInfoKHR { + VkStructureType sType; + const void* pNext; + VkRect2D srcRect; + VkRect2D dstRect; + VkBool32 persistent; +} VkDisplayPresentInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( + VkDevice device, + uint32_t swapchainCount, + const VkSwapchainCreateInfoKHR* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkSwapchainKHR* pSwapchains); +#endif +#endif + + +// VK_KHR_sampler_mirror_clamp_to_edge is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_sampler_mirror_clamp_to_edge 1 +#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3 +#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge" + + +// VK_KHR_video_queue is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_queue 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR) +#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 8 +#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue" + +typedef enum VkQueryResultStatusKHR { + 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_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000, + VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkQueryResultStatusKHR; + +typedef enum VkVideoCodecOperationFlagBitsKHR { + VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0, + VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 0x00010000, + VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 0x00020000, + VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 0x00000001, + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 0x00000002, + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 0x00000004, + VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR = 0x00040000, + VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR = 0x00000008, + VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCodecOperationFlagBitsKHR; +typedef VkFlags VkVideoCodecOperationFlagsKHR; + +typedef enum VkVideoChromaSubsamplingFlagBitsKHR { + VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR = 0, + VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001, + VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002, + VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004, + VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008, + VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoChromaSubsamplingFlagBitsKHR; +typedef VkFlags VkVideoChromaSubsamplingFlagsKHR; + +typedef enum VkVideoComponentBitDepthFlagBitsKHR { + VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0, + VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001, + VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004, + VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010, + VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoComponentBitDepthFlagBitsKHR; +typedef VkFlags VkVideoComponentBitDepthFlagsKHR; + +typedef enum VkVideoCapabilityFlagBitsKHR { + VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001, + VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002, + VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCapabilityFlagBitsKHR; +typedef VkFlags VkVideoCapabilityFlagsKHR; + +typedef enum VkVideoSessionCreateFlagBitsKHR { + VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001, + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 0x00000002, + VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 0x00000004, + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR = 0x00000008, + VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR = 0x00000010, + VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR = 0x00000020, + VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoSessionCreateFlagBitsKHR; +typedef VkFlags VkVideoSessionCreateFlagsKHR; + +typedef enum VkVideoSessionParametersCreateFlagBitsKHR { + VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR = 0x00000001, + VK_VIDEO_SESSION_PARAMETERS_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoSessionParametersCreateFlagBitsKHR; +typedef VkFlags VkVideoSessionParametersCreateFlagsKHR; +typedef VkFlags VkVideoBeginCodingFlagsKHR; +typedef VkFlags VkVideoEndCodingFlagsKHR; + +typedef enum VkVideoCodingControlFlagBitsKHR { + VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001, + VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 0x00000002, + VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 0x00000004, + VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoCodingControlFlagBitsKHR; +typedef VkFlags VkVideoCodingControlFlagsKHR; +typedef struct VkQueueFamilyQueryResultStatusPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 queryResultStatusSupport; +} VkQueueFamilyQueryResultStatusPropertiesKHR; + +typedef struct VkQueueFamilyVideoPropertiesKHR { + VkStructureType sType; + void* pNext; + VkVideoCodecOperationFlagsKHR videoCodecOperations; +} VkQueueFamilyVideoPropertiesKHR; + +typedef struct VkVideoProfileInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoCodecOperationFlagBitsKHR videoCodecOperation; + VkVideoChromaSubsamplingFlagsKHR chromaSubsampling; + VkVideoComponentBitDepthFlagsKHR lumaBitDepth; + VkVideoComponentBitDepthFlagsKHR chromaBitDepth; +} VkVideoProfileInfoKHR; + +typedef struct VkVideoProfileListInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t profileCount; + const VkVideoProfileInfoKHR* pProfiles; +} VkVideoProfileListInfoKHR; + +typedef struct VkVideoCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoCapabilityFlagsKHR flags; + VkDeviceSize minBitstreamBufferOffsetAlignment; + VkDeviceSize minBitstreamBufferSizeAlignment; + VkExtent2D pictureAccessGranularity; + VkExtent2D minCodedExtent; + VkExtent2D maxCodedExtent; + uint32_t maxDpbSlots; + uint32_t maxActiveReferencePictures; + VkExtensionProperties stdHeaderVersion; +} VkVideoCapabilitiesKHR; + +typedef struct VkPhysicalDeviceVideoFormatInfoKHR { + VkStructureType sType; + const void* pNext; + VkImageUsageFlags imageUsage; +} VkPhysicalDeviceVideoFormatInfoKHR; + +typedef struct VkVideoFormatPropertiesKHR { + VkStructureType sType; + void* pNext; + VkFormat format; + VkComponentMapping componentMapping; + VkImageCreateFlags imageCreateFlags; + VkImageType imageType; + VkImageTiling imageTiling; + VkImageUsageFlags imageUsageFlags; +} VkVideoFormatPropertiesKHR; + +typedef struct VkVideoPictureResourceInfoKHR { + VkStructureType sType; + const void* pNext; + VkOffset2D codedOffset; + VkExtent2D codedExtent; + uint32_t baseArrayLayer; + VkImageView imageViewBinding; +} VkVideoPictureResourceInfoKHR; + +typedef struct VkVideoReferenceSlotInfoKHR { + VkStructureType sType; + const void* pNext; + int32_t slotIndex; + const VkVideoPictureResourceInfoKHR* pPictureResource; +} VkVideoReferenceSlotInfoKHR; + +typedef struct VkVideoSessionMemoryRequirementsKHR { + VkStructureType sType; + void* pNext; + uint32_t memoryBindIndex; + VkMemoryRequirements memoryRequirements; +} VkVideoSessionMemoryRequirementsKHR; + +typedef struct VkBindVideoSessionMemoryInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t memoryBindIndex; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + VkDeviceSize memorySize; +} VkBindVideoSessionMemoryInfoKHR; + +typedef struct VkVideoSessionCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t queueFamilyIndex; + VkVideoSessionCreateFlagsKHR flags; + const VkVideoProfileInfoKHR* pVideoProfile; + VkFormat pictureFormat; + VkExtent2D maxCodedExtent; + VkFormat referencePictureFormat; + uint32_t maxDpbSlots; + uint32_t maxActiveReferencePictures; + const VkExtensionProperties* pStdHeaderVersion; +} VkVideoSessionCreateInfoKHR; + +typedef struct VkVideoSessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoSessionParametersCreateFlagsKHR flags; + VkVideoSessionParametersKHR videoSessionParametersTemplate; + VkVideoSessionKHR videoSession; +} VkVideoSessionParametersCreateInfoKHR; + +typedef struct VkVideoSessionParametersUpdateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t updateSequenceCount; +} VkVideoSessionParametersUpdateInfoKHR; + +typedef struct VkVideoBeginCodingInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoBeginCodingFlagsKHR flags; + VkVideoSessionKHR videoSession; + VkVideoSessionParametersKHR videoSessionParameters; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotInfoKHR* pReferenceSlots; +} VkVideoBeginCodingInfoKHR; + +typedef struct VkVideoEndCodingInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEndCodingFlagsKHR flags; +} VkVideoEndCodingInfoKHR; + +typedef struct VkVideoCodingControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoCodingControlFlagsKHR flags; +} VkVideoCodingControlInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession); +typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pMemoryRequirementsCount, VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements); +typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount, const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos); +typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters); +typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); +typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR( + VkPhysicalDevice physicalDevice, + const VkVideoProfileInfoKHR* pVideoProfile, + VkVideoCapabilitiesKHR* pCapabilities); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, + uint32_t* pVideoFormatPropertyCount, + VkVideoFormatPropertiesKHR* pVideoFormatProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR( + VkDevice device, + const VkVideoSessionCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkVideoSessionKHR* pVideoSession); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t* pMemoryRequirementsCount, + VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR( + VkDevice device, + VkVideoSessionKHR videoSession, + uint32_t bindSessionMemoryInfoCount, + const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR( + VkDevice device, + const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkVideoSessionParametersKHR* pVideoSessionParameters); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR( + VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR( + VkDevice device, + VkVideoSessionParametersKHR videoSessionParameters, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoBeginCodingInfoKHR* pBeginInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoEndCodingInfoKHR* pEndCodingInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR( + VkCommandBuffer commandBuffer, + const VkVideoCodingControlInfoKHR* pCodingControlInfo); +#endif +#endif + + +// VK_KHR_video_decode_queue is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_decode_queue 1 +#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 8 +#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue" + +typedef enum VkVideoDecodeCapabilityFlagBitsKHR { + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0x00000001, + VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0x00000002, + VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoDecodeCapabilityFlagBitsKHR; +typedef VkFlags VkVideoDecodeCapabilityFlagsKHR; + +typedef enum VkVideoDecodeUsageFlagBitsKHR { + VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0, + VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001, + VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 0x00000002, + VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 0x00000004, + VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoDecodeUsageFlagBitsKHR; +typedef VkFlags VkVideoDecodeUsageFlagsKHR; +typedef VkFlags VkVideoDecodeFlagsKHR; +typedef struct VkVideoDecodeCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoDecodeCapabilityFlagsKHR flags; +} VkVideoDecodeCapabilitiesKHR; + +typedef struct VkVideoDecodeUsageInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoDecodeUsageFlagsKHR videoUsageHints; +} VkVideoDecodeUsageInfoKHR; + +typedef struct VkVideoDecodeInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoDecodeFlagsKHR flags; + VkBuffer srcBuffer; + VkDeviceSize srcBufferOffset; + VkDeviceSize srcBufferRange; + VkVideoPictureResourceInfoKHR dstPictureResource; + const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotInfoKHR* pReferenceSlots; +} VkVideoDecodeInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR( + VkCommandBuffer commandBuffer, + const VkVideoDecodeInfoKHR* pDecodeInfo); +#endif +#endif + + +// VK_KHR_video_encode_h264 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_encode_h264 1 +#include "vk_video/vulkan_video_codec_h264std.h" +#include "vk_video/vulkan_video_codec_h264std_encode.h" +#define VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION 14 +#define VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_KHR_video_encode_h264" + +typedef enum VkVideoEncodeH264CapabilityFlagBitsKHR { + VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 0x00000010, + VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 0x00000020, + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 0x00000040, + VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 0x00000080, + VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 0x00000100, + VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 0x00000400, + VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR = 0x00000200, + VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeH264CapabilityFlagBitsKHR; +typedef VkFlags VkVideoEncodeH264CapabilityFlagsKHR; + +typedef enum VkVideoEncodeH264StdFlagBitsKHR { + VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 0x00000010, + VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 0x00000020, + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 0x00000040, + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 0x00000080, + VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 0x00000100, + VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 0x00000200, + VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 0x00000400, + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 0x00000800, + VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 0x00001000, + VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 0x00002000, + VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 0x00004000, + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 0x00008000, + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 0x00010000, + VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 0x00020000, + VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 0x00080000, + VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 0x00100000, + VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeH264StdFlagBitsKHR; +typedef VkFlags VkVideoEncodeH264StdFlagsKHR; + +typedef enum VkVideoEncodeH264RateControlFlagBitsKHR { + VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 0x00000010, + VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeH264RateControlFlagBitsKHR; +typedef VkFlags VkVideoEncodeH264RateControlFlagsKHR; +typedef struct VkVideoEncodeH264CapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeH264CapabilityFlagsKHR flags; + StdVideoH264LevelIdc maxLevelIdc; + uint32_t maxSliceCount; + uint32_t maxPPictureL0ReferenceCount; + uint32_t maxBPictureL0ReferenceCount; + uint32_t maxL1ReferenceCount; + uint32_t maxTemporalLayerCount; + VkBool32 expectDyadicTemporalLayerPattern; + int32_t minQp; + int32_t maxQp; + VkBool32 prefersGopRemainingFrames; + VkBool32 requiresGopRemainingFrames; + VkVideoEncodeH264StdFlagsKHR stdSyntaxFlags; +} VkVideoEncodeH264CapabilitiesKHR; + +typedef struct VkVideoEncodeH264QpKHR { + int32_t qpI; + int32_t qpP; + int32_t qpB; +} VkVideoEncodeH264QpKHR; + +typedef struct VkVideoEncodeH264QualityLevelPropertiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeH264RateControlFlagsKHR preferredRateControlFlags; + uint32_t preferredGopFrameCount; + uint32_t preferredIdrPeriod; + uint32_t preferredConsecutiveBFrameCount; + uint32_t preferredTemporalLayerCount; + VkVideoEncodeH264QpKHR preferredConstantQp; + uint32_t preferredMaxL0ReferenceCount; + uint32_t preferredMaxL1ReferenceCount; + VkBool32 preferredStdEntropyCodingModeFlag; +} VkVideoEncodeH264QualityLevelPropertiesKHR; + +typedef struct VkVideoEncodeH264SessionCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 useMaxLevelIdc; + StdVideoH264LevelIdc maxLevelIdc; +} VkVideoEncodeH264SessionCreateInfoKHR; + +typedef struct VkVideoEncodeH264SessionParametersAddInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t stdSPSCount; + const StdVideoH264SequenceParameterSet* pStdSPSs; + uint32_t stdPPSCount; + const StdVideoH264PictureParameterSet* pStdPPSs; +} VkVideoEncodeH264SessionParametersAddInfoKHR; + +typedef struct VkVideoEncodeH264SessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t maxStdSPSCount; + uint32_t maxStdPPSCount; + const VkVideoEncodeH264SessionParametersAddInfoKHR* pParametersAddInfo; +} VkVideoEncodeH264SessionParametersCreateInfoKHR; + +typedef struct VkVideoEncodeH264SessionParametersGetInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 writeStdSPS; + VkBool32 writeStdPPS; + uint32_t stdSPSId; + uint32_t stdPPSId; +} VkVideoEncodeH264SessionParametersGetInfoKHR; + +typedef struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR { + VkStructureType sType; + void* pNext; + VkBool32 hasStdSPSOverrides; + VkBool32 hasStdPPSOverrides; +} VkVideoEncodeH264SessionParametersFeedbackInfoKHR; + +typedef struct VkVideoEncodeH264NaluSliceInfoKHR { + VkStructureType sType; + const void* pNext; + int32_t constantQp; + const StdVideoEncodeH264SliceHeader* pStdSliceHeader; +} VkVideoEncodeH264NaluSliceInfoKHR; + +typedef struct VkVideoEncodeH264PictureInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t naluSliceEntryCount; + const VkVideoEncodeH264NaluSliceInfoKHR* pNaluSliceEntries; + const StdVideoEncodeH264PictureInfo* pStdPictureInfo; + VkBool32 generatePrefixNalu; +} VkVideoEncodeH264PictureInfoKHR; + +typedef struct VkVideoEncodeH264DpbSlotInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoEncodeH264ReferenceInfo* pStdReferenceInfo; +} VkVideoEncodeH264DpbSlotInfoKHR; + +typedef struct VkVideoEncodeH264ProfileInfoKHR { + VkStructureType sType; + const void* pNext; + StdVideoH264ProfileIdc stdProfileIdc; +} VkVideoEncodeH264ProfileInfoKHR; + +typedef struct VkVideoEncodeH264RateControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeH264RateControlFlagsKHR flags; + uint32_t gopFrameCount; + uint32_t idrPeriod; + uint32_t consecutiveBFrameCount; + uint32_t temporalLayerCount; +} VkVideoEncodeH264RateControlInfoKHR; + +typedef struct VkVideoEncodeH264FrameSizeKHR { + uint32_t frameISize; + uint32_t framePSize; + uint32_t frameBSize; +} VkVideoEncodeH264FrameSizeKHR; + +typedef struct VkVideoEncodeH264RateControlLayerInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 useMinQp; + VkVideoEncodeH264QpKHR minQp; + VkBool32 useMaxQp; + VkVideoEncodeH264QpKHR maxQp; + VkBool32 useMaxFrameSize; + VkVideoEncodeH264FrameSizeKHR maxFrameSize; +} VkVideoEncodeH264RateControlLayerInfoKHR; + +typedef struct VkVideoEncodeH264GopRemainingFrameInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 useGopRemainingFrames; + uint32_t gopRemainingI; + uint32_t gopRemainingP; + uint32_t gopRemainingB; +} VkVideoEncodeH264GopRemainingFrameInfoKHR; + + + +// VK_KHR_video_encode_h265 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_encode_h265 1 +#include "vk_video/vulkan_video_codec_h265std.h" +#include "vk_video/vulkan_video_codec_h265std_encode.h" +#define VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION 14 +#define VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_KHR_video_encode_h265" + +typedef enum VkVideoEncodeH265CapabilityFlagBitsKHR { + VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 0x00000010, + VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 0x00000020, + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 0x00000040, + VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 0x00000080, + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 0x00000100, + VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 0x00000200, + VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR = 0x00000800, + VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR = 0x00000400, + VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeH265CapabilityFlagBitsKHR; +typedef VkFlags VkVideoEncodeH265CapabilityFlagsKHR; + +typedef enum VkVideoEncodeH265StdFlagBitsKHR { + VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 0x00000010, + VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 0x00000020, + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 0x00000040, + VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 0x00000080, + VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 0x00000100, + VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 0x00000200, + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 0x00000400, + VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 0x00000800, + VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 0x00001000, + VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 0x00002000, + VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 0x00004000, + VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 0x00008000, + VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 0x00010000, + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 0x00020000, + VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 0x00040000, + VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 0x00080000, + VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 0x00100000, + VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeH265StdFlagBitsKHR; +typedef VkFlags VkVideoEncodeH265StdFlagsKHR; + +typedef enum VkVideoEncodeH265CtbSizeFlagBitsKHR { + VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeH265CtbSizeFlagBitsKHR; +typedef VkFlags VkVideoEncodeH265CtbSizeFlagsKHR; + +typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR { + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeH265TransformBlockSizeFlagBitsKHR; +typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsKHR; + +typedef enum VkVideoEncodeH265RateControlFlagBitsKHR { + VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 0x00000010, + VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeH265RateControlFlagBitsKHR; +typedef VkFlags VkVideoEncodeH265RateControlFlagsKHR; +typedef struct VkVideoEncodeH265CapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeH265CapabilityFlagsKHR flags; + StdVideoH265LevelIdc maxLevelIdc; + uint32_t maxSliceSegmentCount; + VkExtent2D maxTiles; + VkVideoEncodeH265CtbSizeFlagsKHR ctbSizes; + VkVideoEncodeH265TransformBlockSizeFlagsKHR transformBlockSizes; + uint32_t maxPPictureL0ReferenceCount; + uint32_t maxBPictureL0ReferenceCount; + uint32_t maxL1ReferenceCount; + uint32_t maxSubLayerCount; + VkBool32 expectDyadicTemporalSubLayerPattern; + int32_t minQp; + int32_t maxQp; + VkBool32 prefersGopRemainingFrames; + VkBool32 requiresGopRemainingFrames; + VkVideoEncodeH265StdFlagsKHR stdSyntaxFlags; +} VkVideoEncodeH265CapabilitiesKHR; + +typedef struct VkVideoEncodeH265SessionCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 useMaxLevelIdc; + StdVideoH265LevelIdc maxLevelIdc; +} VkVideoEncodeH265SessionCreateInfoKHR; + +typedef struct VkVideoEncodeH265QpKHR { + int32_t qpI; + int32_t qpP; + int32_t qpB; +} VkVideoEncodeH265QpKHR; + +typedef struct VkVideoEncodeH265QualityLevelPropertiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeH265RateControlFlagsKHR preferredRateControlFlags; + uint32_t preferredGopFrameCount; + uint32_t preferredIdrPeriod; + uint32_t preferredConsecutiveBFrameCount; + uint32_t preferredSubLayerCount; + VkVideoEncodeH265QpKHR preferredConstantQp; + uint32_t preferredMaxL0ReferenceCount; + uint32_t preferredMaxL1ReferenceCount; +} VkVideoEncodeH265QualityLevelPropertiesKHR; + +typedef struct VkVideoEncodeH265SessionParametersAddInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t stdVPSCount; + const StdVideoH265VideoParameterSet* pStdVPSs; + uint32_t stdSPSCount; + const StdVideoH265SequenceParameterSet* pStdSPSs; + uint32_t stdPPSCount; + const StdVideoH265PictureParameterSet* pStdPPSs; +} VkVideoEncodeH265SessionParametersAddInfoKHR; + +typedef struct VkVideoEncodeH265SessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t maxStdVPSCount; + uint32_t maxStdSPSCount; + uint32_t maxStdPPSCount; + const VkVideoEncodeH265SessionParametersAddInfoKHR* pParametersAddInfo; +} VkVideoEncodeH265SessionParametersCreateInfoKHR; + +typedef struct VkVideoEncodeH265SessionParametersGetInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 writeStdVPS; + VkBool32 writeStdSPS; + VkBool32 writeStdPPS; + uint32_t stdVPSId; + uint32_t stdSPSId; + uint32_t stdPPSId; +} VkVideoEncodeH265SessionParametersGetInfoKHR; + +typedef struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR { + VkStructureType sType; + void* pNext; + VkBool32 hasStdVPSOverrides; + VkBool32 hasStdSPSOverrides; + VkBool32 hasStdPPSOverrides; +} VkVideoEncodeH265SessionParametersFeedbackInfoKHR; + +typedef struct VkVideoEncodeH265NaluSliceSegmentInfoKHR { + VkStructureType sType; + const void* pNext; + int32_t constantQp; + const StdVideoEncodeH265SliceSegmentHeader* pStdSliceSegmentHeader; +} VkVideoEncodeH265NaluSliceSegmentInfoKHR; + +typedef struct VkVideoEncodeH265PictureInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t naluSliceSegmentEntryCount; + const VkVideoEncodeH265NaluSliceSegmentInfoKHR* pNaluSliceSegmentEntries; + const StdVideoEncodeH265PictureInfo* pStdPictureInfo; +} VkVideoEncodeH265PictureInfoKHR; + +typedef struct VkVideoEncodeH265DpbSlotInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoEncodeH265ReferenceInfo* pStdReferenceInfo; +} VkVideoEncodeH265DpbSlotInfoKHR; + +typedef struct VkVideoEncodeH265ProfileInfoKHR { + VkStructureType sType; + const void* pNext; + StdVideoH265ProfileIdc stdProfileIdc; +} VkVideoEncodeH265ProfileInfoKHR; + +typedef struct VkVideoEncodeH265RateControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeH265RateControlFlagsKHR flags; + uint32_t gopFrameCount; + uint32_t idrPeriod; + uint32_t consecutiveBFrameCount; + uint32_t subLayerCount; +} VkVideoEncodeH265RateControlInfoKHR; + +typedef struct VkVideoEncodeH265FrameSizeKHR { + uint32_t frameISize; + uint32_t framePSize; + uint32_t frameBSize; +} VkVideoEncodeH265FrameSizeKHR; + +typedef struct VkVideoEncodeH265RateControlLayerInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 useMinQp; + VkVideoEncodeH265QpKHR minQp; + VkBool32 useMaxQp; + VkVideoEncodeH265QpKHR maxQp; + VkBool32 useMaxFrameSize; + VkVideoEncodeH265FrameSizeKHR maxFrameSize; +} VkVideoEncodeH265RateControlLayerInfoKHR; + +typedef struct VkVideoEncodeH265GopRemainingFrameInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 useGopRemainingFrames; + uint32_t gopRemainingI; + uint32_t gopRemainingP; + uint32_t gopRemainingB; +} VkVideoEncodeH265GopRemainingFrameInfoKHR; + + + +// VK_KHR_video_decode_h264 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_decode_h264 1 +#include "vk_video/vulkan_video_codec_h264std_decode.h" +#define VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION 9 +#define VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME "VK_KHR_video_decode_h264" + +typedef enum VkVideoDecodeH264PictureLayoutFlagBitsKHR { + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 0x00000001, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 0x00000002, + VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoDecodeH264PictureLayoutFlagBitsKHR; +typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsKHR; +typedef struct VkVideoDecodeH264ProfileInfoKHR { + VkStructureType sType; + const void* pNext; + StdVideoH264ProfileIdc stdProfileIdc; + VkVideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout; +} VkVideoDecodeH264ProfileInfoKHR; + +typedef struct VkVideoDecodeH264CapabilitiesKHR { + VkStructureType sType; + void* pNext; + StdVideoH264LevelIdc maxLevelIdc; + VkOffset2D fieldOffsetGranularity; +} VkVideoDecodeH264CapabilitiesKHR; + +typedef struct VkVideoDecodeH264SessionParametersAddInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t stdSPSCount; + const StdVideoH264SequenceParameterSet* pStdSPSs; + uint32_t stdPPSCount; + const StdVideoH264PictureParameterSet* pStdPPSs; +} VkVideoDecodeH264SessionParametersAddInfoKHR; + +typedef struct VkVideoDecodeH264SessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t maxStdSPSCount; + uint32_t maxStdPPSCount; + const VkVideoDecodeH264SessionParametersAddInfoKHR* pParametersAddInfo; +} VkVideoDecodeH264SessionParametersCreateInfoKHR; + +typedef struct VkVideoDecodeH264PictureInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH264PictureInfo* pStdPictureInfo; + uint32_t sliceCount; + const uint32_t* pSliceOffsets; +} VkVideoDecodeH264PictureInfoKHR; + +typedef struct VkVideoDecodeH264DpbSlotInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH264ReferenceInfo* pStdReferenceInfo; +} VkVideoDecodeH264DpbSlotInfoKHR; + + + +// VK_KHR_dynamic_rendering is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_dynamic_rendering 1 +#define VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION 1 +#define VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME "VK_KHR_dynamic_rendering" +typedef VkRenderingFlags VkRenderingFlagsKHR; + +typedef VkRenderingFlagBits VkRenderingFlagBitsKHR; + +typedef VkRenderingInfo VkRenderingInfoKHR; + +typedef VkRenderingAttachmentInfo VkRenderingAttachmentInfoKHR; + +typedef VkPipelineRenderingCreateInfo VkPipelineRenderingCreateInfoKHR; + +typedef VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesKHR; + +typedef VkCommandBufferInheritanceRenderingInfo VkCommandBufferInheritanceRenderingInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderingKHR)(VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderingKHR)(VkCommandBuffer commandBuffer); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderingKHR( + VkCommandBuffer commandBuffer, + const VkRenderingInfo* pRenderingInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderingKHR( + VkCommandBuffer commandBuffer); +#endif +#endif + + +// VK_KHR_multiview is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_multiview 1 +#define VK_KHR_MULTIVIEW_SPEC_VERSION 1 +#define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview" +typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR; + +typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR; + +typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR; + + + +// VK_KHR_get_physical_device_properties2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_get_physical_device_properties2 1 +#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2 +#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2" +typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR; + +typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR; + +typedef VkFormatProperties2 VkFormatProperties2KHR; + +typedef VkImageFormatProperties2 VkImageFormatProperties2KHR; + +typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR; + +typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR; + +typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR; + +typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR; + +typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceFeatures2* pFeatures); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceProperties2* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkFormatProperties2* pFormatProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, + VkImageFormatProperties2* pImageFormatProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR( + VkPhysicalDevice physicalDevice, + uint32_t* pQueueFamilyPropertyCount, + VkQueueFamilyProperties2* pQueueFamilyProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR( + VkPhysicalDevice physicalDevice, + VkPhysicalDeviceMemoryProperties2* pMemoryProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, + uint32_t* pPropertyCount, + VkSparseImageFormatProperties2* pProperties); +#endif +#endif + + +// VK_KHR_device_group is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_device_group 1 +#define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4 +#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group" +typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR; + +typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR; + +typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR; + +typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR; + +typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR; + +typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR; + +typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR; + +typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR; + +typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR; + +typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR; + +typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); +typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask); +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); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR( + VkDevice device, + uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR( + VkCommandBuffer commandBuffer, + uint32_t deviceMask); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR( + VkCommandBuffer commandBuffer, + uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); +#endif +#endif + + +// VK_KHR_shader_draw_parameters is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_draw_parameters 1 +#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1 +#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters" + + +// VK_KHR_maintenance1 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance1 1 +#define VK_KHR_MAINTENANCE_1_SPEC_VERSION 2 +#define VK_KHR_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_maintenance1" +// VK_KHR_MAINTENANCE1_SPEC_VERSION is a legacy alias +#define VK_KHR_MAINTENANCE1_SPEC_VERSION VK_KHR_MAINTENANCE_1_SPEC_VERSION +// VK_KHR_MAINTENANCE1_EXTENSION_NAME is a legacy alias +#define VK_KHR_MAINTENANCE1_EXTENSION_NAME VK_KHR_MAINTENANCE_1_EXTENSION_NAME +typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR; + +typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR( + VkDevice device, + VkCommandPool commandPool, + VkCommandPoolTrimFlags flags); +#endif +#endif + + +// VK_KHR_device_group_creation is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_device_group_creation 1 +#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1 +#define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation" +#define VK_MAX_DEVICE_GROUP_SIZE_KHR VK_MAX_DEVICE_GROUP_SIZE +typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR; + +typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR( + VkInstance instance, + uint32_t* pPhysicalDeviceGroupCount, + VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); +#endif +#endif + + +// VK_KHR_external_memory_capabilities is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_memory_capabilities 1 +#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities" +#define VK_LUID_SIZE_KHR VK_LUID_SIZE +typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR; + +typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR; + +typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR; + +typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR; + +typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR; + +typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR; + +typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR; + +typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR; + +typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR; + +typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, + VkExternalBufferProperties* pExternalBufferProperties); +#endif +#endif + + +// VK_KHR_external_memory is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_memory 1 +#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory" +#define VK_QUEUE_FAMILY_EXTERNAL_KHR VK_QUEUE_FAMILY_EXTERNAL +typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR; + +typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR; + +typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR; + + + +// VK_KHR_external_memory_fd is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_memory_fd 1 +#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd" +typedef struct VkImportMemoryFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + int fd; +} VkImportMemoryFdInfoKHR; + +typedef struct VkMemoryFdPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryFdPropertiesKHR; + +typedef struct VkMemoryGetFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetFdInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR( + VkDevice device, + const VkMemoryGetFdInfoKHR* pGetFdInfo, + int* pFd); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + int fd, + VkMemoryFdPropertiesKHR* pMemoryFdProperties); +#endif +#endif + + +// VK_KHR_external_semaphore_capabilities is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_semaphore_capabilities 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities" +typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR; + +typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR; + +typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR; + +typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR; + +typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR; + +typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, + VkExternalSemaphoreProperties* pExternalSemaphoreProperties); +#endif +#endif + + +// VK_KHR_external_semaphore is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_semaphore 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore" +typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR; + +typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR; + +typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR; + + + +// VK_KHR_external_semaphore_fd is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_semaphore_fd 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd" +typedef struct VkImportSemaphoreFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkSemaphoreImportFlags flags; + VkExternalSemaphoreHandleTypeFlagBits handleType; + int fd; +} VkImportSemaphoreFdInfoKHR; + +typedef struct VkSemaphoreGetFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkSemaphoreGetFdInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR( + VkDevice device, + const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR( + VkDevice device, + const VkSemaphoreGetFdInfoKHR* pGetFdInfo, + int* pFd); +#endif +#endif + + +// VK_KHR_push_descriptor is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_push_descriptor 1 +#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2 +#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor" +typedef VkPhysicalDevicePushDescriptorProperties VkPhysicalDevicePushDescriptorPropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites); +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + const VkWriteDescriptorSet* pDescriptorWrites); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR( + VkCommandBuffer commandBuffer, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + VkPipelineLayout layout, + uint32_t set, + const void* pData); +#endif +#endif + + +// VK_KHR_shader_float16_int8 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_float16_int8 1 +#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1 +#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8" +typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR; + +typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR; + + + +// VK_KHR_16bit_storage is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_16bit_storage 1 +#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1 +#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage" +typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR; + + + +// VK_KHR_incremental_present is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_incremental_present 1 +#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2 +#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present" +typedef struct VkRectLayerKHR { + VkOffset2D offset; + VkExtent2D extent; + uint32_t layer; +} VkRectLayerKHR; + +typedef struct VkPresentRegionKHR { + uint32_t rectangleCount; + const VkRectLayerKHR* pRectangles; +} VkPresentRegionKHR; + +typedef struct VkPresentRegionsKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const VkPresentRegionKHR* pRegions; +} VkPresentRegionsKHR; + + + +// VK_KHR_descriptor_update_template is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_descriptor_update_template 1 +typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR; + +#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1 +#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template" +typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR; + +typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR; + +typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR; + +typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); +typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR( + VkDevice device, + const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR( + VkDevice device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR( + VkDevice device, + VkDescriptorSet descriptorSet, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + const void* pData); +#endif +#endif + + +// VK_KHR_imageless_framebuffer is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_imageless_framebuffer 1 +#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1 +#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer" +typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR; + +typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR; + +typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR; + +typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR; + + + +// VK_KHR_create_renderpass2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_create_renderpass2 1 +#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1 +#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2" +typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR; + +typedef VkAttachmentDescription2 VkAttachmentDescription2KHR; + +typedef VkAttachmentReference2 VkAttachmentReference2KHR; + +typedef VkSubpassDescription2 VkSubpassDescription2KHR; + +typedef VkSubpassDependency2 VkSubpassDependency2KHR; + +typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR; + +typedef VkSubpassEndInfo VkSubpassEndInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass); +typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR( + VkDevice device, + const VkRenderPassCreateInfo2* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkRenderPass* pRenderPass); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR( + VkCommandBuffer commandBuffer, + const VkRenderPassBeginInfo* pRenderPassBegin, + const VkSubpassBeginInfo* pSubpassBeginInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR( + VkCommandBuffer commandBuffer, + const VkSubpassBeginInfo* pSubpassBeginInfo, + const VkSubpassEndInfo* pSubpassEndInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR( + VkCommandBuffer commandBuffer, + const VkSubpassEndInfo* pSubpassEndInfo); +#endif +#endif + + +// VK_KHR_shared_presentable_image is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shared_presentable_image 1 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1 +#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image" +typedef struct VkSharedPresentSurfaceCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkImageUsageFlags sharedPresentSupportedUsageFlags; +} VkSharedPresentSurfaceCapabilitiesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR( + VkDevice device, + VkSwapchainKHR swapchain); +#endif +#endif + + +// VK_KHR_external_fence_capabilities is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_fence_capabilities 1 +#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities" +typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR; + +typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR; + +typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR; + +typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR; + +typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR; + +typedef VkExternalFenceProperties VkExternalFencePropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, + VkExternalFenceProperties* pExternalFenceProperties); +#endif +#endif + + +// VK_KHR_external_fence is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_fence 1 +#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence" +typedef VkFenceImportFlags VkFenceImportFlagsKHR; + +typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR; + +typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR; + + + +// VK_KHR_external_fence_fd is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_fence_fd 1 +#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd" +typedef struct VkImportFenceFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkFence fence; + VkFenceImportFlags flags; + VkExternalFenceHandleTypeFlagBits handleType; + int fd; +} VkImportFenceFdInfoKHR; + +typedef struct VkFenceGetFdInfoKHR { + VkStructureType sType; + const void* pNext; + VkFence fence; + VkExternalFenceHandleTypeFlagBits handleType; +} VkFenceGetFdInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR( + VkDevice device, + const VkImportFenceFdInfoKHR* pImportFenceFdInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR( + VkDevice device, + const VkFenceGetFdInfoKHR* pGetFdInfo, + int* pFd); +#endif +#endif + + +// VK_KHR_performance_query is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_performance_query 1 +#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1 +#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query" + +typedef enum 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 = 0x7FFFFFFF +} VkPerformanceCounterUnitKHR; + +typedef enum 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 is a legacy alias + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, + // VK_QUERY_SCOPE_RENDER_PASS_KHR is a legacy alias + VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, + // VK_QUERY_SCOPE_COMMAND_KHR is a legacy alias + VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR, + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterScopeKHR; + +typedef enum 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 = 0x7FFFFFFF +} VkPerformanceCounterStorageKHR; + +typedef enum VkPerformanceCounterDescriptionFlagBitsKHR { + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001, + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002, + // VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR is a legacy alias + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR, + // VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR is a legacy alias + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR, + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPerformanceCounterDescriptionFlagBitsKHR; +typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR; + +typedef enum VkAcquireProfilingLockFlagBitsKHR { + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAcquireProfilingLockFlagBitsKHR; +typedef VkFlags VkAcquireProfilingLockFlagsKHR; +typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 performanceCounterQueryPools; + VkBool32 performanceCounterMultipleQueryPools; +} VkPhysicalDevicePerformanceQueryFeaturesKHR; + +typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 allowCommandBufferQueryCopies; +} VkPhysicalDevicePerformanceQueryPropertiesKHR; + +typedef struct VkPerformanceCounterKHR { + VkStructureType sType; + void* pNext; + VkPerformanceCounterUnitKHR unit; + VkPerformanceCounterScopeKHR scope; + VkPerformanceCounterStorageKHR storage; + uint8_t uuid[VK_UUID_SIZE]; +} VkPerformanceCounterKHR; + +typedef struct VkPerformanceCounterDescriptionKHR { + VkStructureType sType; + void* pNext; + VkPerformanceCounterDescriptionFlagsKHR flags; + char name[VK_MAX_DESCRIPTION_SIZE]; + char category[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; +} VkPerformanceCounterDescriptionKHR; + +typedef struct VkQueryPoolPerformanceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t queueFamilyIndex; + uint32_t counterIndexCount; + const uint32_t* pCounterIndices; +} VkQueryPoolPerformanceCreateInfoKHR; + +typedef union VkPerformanceCounterResultKHR { + int32_t int32; + int64_t int64; + uint32_t uint32; + uint64_t uint64; + float float32; + double float64; +} VkPerformanceCounterResultKHR; + +typedef struct VkAcquireProfilingLockInfoKHR { + VkStructureType sType; + const void* pNext; + VkAcquireProfilingLockFlagsKHR flags; + uint64_t timeout; +} VkAcquireProfilingLockInfoKHR; + +typedef struct VkPerformanceQuerySubmitInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t counterPassIndex; +} VkPerformanceQuerySubmitInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t* pCounterCount, + VkPerformanceCounterKHR* pCounters, + VkPerformanceCounterDescriptionKHR* pCounterDescriptions); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + VkPhysicalDevice physicalDevice, + const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, + uint32_t* pNumPasses); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR( + VkDevice device, + const VkAcquireProfilingLockInfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR( + VkDevice device); +#endif +#endif + + +// VK_KHR_maintenance2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance2 1 +#define VK_KHR_MAINTENANCE_2_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_2_EXTENSION_NAME "VK_KHR_maintenance2" +// VK_KHR_MAINTENANCE2_SPEC_VERSION is a legacy alias +#define VK_KHR_MAINTENANCE2_SPEC_VERSION VK_KHR_MAINTENANCE_2_SPEC_VERSION +// VK_KHR_MAINTENANCE2_EXTENSION_NAME is a legacy alias +#define VK_KHR_MAINTENANCE2_EXTENSION_NAME VK_KHR_MAINTENANCE_2_EXTENSION_NAME +typedef VkPointClippingBehavior VkPointClippingBehaviorKHR; + +typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR; + +typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR; + +typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR; + +typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR; + +typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR; + +typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR; + + + +// VK_KHR_get_surface_capabilities2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_get_surface_capabilities2 1 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1 +#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2" +typedef struct VkPhysicalDeviceSurfaceInfo2KHR { + VkStructureType sType; + const void* pNext; + VkSurfaceKHR surface; +} VkPhysicalDeviceSurfaceInfo2KHR; + +typedef struct VkSurfaceCapabilities2KHR { + VkStructureType sType; + void* pNext; + VkSurfaceCapabilitiesKHR surfaceCapabilities; +} VkSurfaceCapabilities2KHR; + +typedef struct VkSurfaceFormat2KHR { + VkStructureType sType; + void* pNext; + VkSurfaceFormatKHR surfaceFormat; +} VkSurfaceFormat2KHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + VkSurfaceCapabilities2KHR* pSurfaceCapabilities); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + uint32_t* pSurfaceFormatCount, + VkSurfaceFormat2KHR* pSurfaceFormats); +#endif +#endif + + +// VK_KHR_variable_pointers is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_variable_pointers 1 +#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1 +#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers" +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR; + +typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR; + + + +// VK_KHR_get_display_properties2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_get_display_properties2 1 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1 +#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2" +typedef struct VkDisplayProperties2KHR { + VkStructureType sType; + void* pNext; + VkDisplayPropertiesKHR displayProperties; +} VkDisplayProperties2KHR; + +typedef struct VkDisplayPlaneProperties2KHR { + VkStructureType sType; + void* pNext; + VkDisplayPlanePropertiesKHR displayPlaneProperties; +} VkDisplayPlaneProperties2KHR; + +typedef struct VkDisplayModeProperties2KHR { + VkStructureType sType; + void* pNext; + VkDisplayModePropertiesKHR displayModeProperties; +} VkDisplayModeProperties2KHR; + +typedef struct VkDisplayPlaneInfo2KHR { + VkStructureType sType; + const void* pNext; + VkDisplayModeKHR mode; + uint32_t planeIndex; +} VkDisplayPlaneInfo2KHR; + +typedef struct VkDisplayPlaneCapabilities2KHR { + VkStructureType sType; + void* pNext; + VkDisplayPlaneCapabilitiesKHR capabilities; +} VkDisplayPlaneCapabilities2KHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkDisplayProperties2KHR* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkDisplayPlaneProperties2KHR* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display, + uint32_t* pPropertyCount, + VkDisplayModeProperties2KHR* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR( + VkPhysicalDevice physicalDevice, + const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, + VkDisplayPlaneCapabilities2KHR* pCapabilities); +#endif +#endif + + +// VK_KHR_dedicated_allocation is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_dedicated_allocation 1 +#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3 +#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation" +typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR; + +typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR; + + + +// VK_KHR_storage_buffer_storage_class is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_storage_buffer_storage_class 1 +#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1 +#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class" + + +// VK_KHR_shader_bfloat16 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_bfloat16 1 +#define VK_KHR_SHADER_BFLOAT16_SPEC_VERSION 1 +#define VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME "VK_KHR_shader_bfloat16" +typedef struct VkPhysicalDeviceShaderBfloat16FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderBFloat16Type; + VkBool32 shaderBFloat16DotProduct; + VkBool32 shaderBFloat16CooperativeMatrix; +} VkPhysicalDeviceShaderBfloat16FeaturesKHR; + + + +// VK_KHR_relaxed_block_layout is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_relaxed_block_layout 1 +#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout" + + +// VK_KHR_get_memory_requirements2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_get_memory_requirements2 1 +#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1 +#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2" +typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR; + +typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR; + +typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR; + +typedef VkMemoryRequirements2 VkMemoryRequirements2KHR; + +typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR; + +typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR( + VkDevice device, + const VkImageMemoryRequirementsInfo2* pInfo, + VkMemoryRequirements2* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR( + VkDevice device, + const VkBufferMemoryRequirementsInfo2* pInfo, + VkMemoryRequirements2* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR( + VkDevice device, + const VkImageSparseMemoryRequirementsInfo2* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +#endif +#endif + + +// VK_KHR_image_format_list is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_image_format_list 1 +#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1 +#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list" +typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR; + + + +// VK_KHR_sampler_ycbcr_conversion is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_sampler_ycbcr_conversion 1 +typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR; + +#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14 +#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion" +typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR; + +typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR; + +typedef VkChromaLocation VkChromaLocationKHR; + +typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR; + +typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR; + +typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR; + +typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR; + +typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR; + +typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion); +typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR( + VkDevice device, + const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSamplerYcbcrConversion* pYcbcrConversion); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR( + VkDevice device, + VkSamplerYcbcrConversion ycbcrConversion, + const VkAllocationCallbacks* pAllocator); +#endif +#endif + + +// VK_KHR_bind_memory2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_bind_memory2 1 +#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1 +#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2" +typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR; + +typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos); +typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR( + VkDevice device, + uint32_t bindInfoCount, + const VkBindBufferMemoryInfo* pBindInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR( + VkDevice device, + uint32_t bindInfoCount, + const VkBindImageMemoryInfo* pBindInfos); +#endif +#endif + + +// VK_KHR_maintenance3 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance3 1 +#define VK_KHR_MAINTENANCE_3_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_3_EXTENSION_NAME "VK_KHR_maintenance3" +// VK_KHR_MAINTENANCE3_SPEC_VERSION is a legacy alias +#define VK_KHR_MAINTENANCE3_SPEC_VERSION VK_KHR_MAINTENANCE_3_SPEC_VERSION +// VK_KHR_MAINTENANCE3_EXTENSION_NAME is a legacy alias +#define VK_KHR_MAINTENANCE3_EXTENSION_NAME VK_KHR_MAINTENANCE_3_EXTENSION_NAME +typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR; + +typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR; + +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR( + VkDevice device, + const VkDescriptorSetLayoutCreateInfo* pCreateInfo, + VkDescriptorSetLayoutSupport* pSupport); +#endif +#endif + + +// VK_KHR_draw_indirect_count is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_draw_indirect_count 1 +#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 +#define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count" +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif +#endif + + +// VK_KHR_shader_subgroup_extended_types is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_subgroup_extended_types 1 +#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1 +#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types" +typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR; + + + +// VK_KHR_8bit_storage is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_8bit_storage 1 +#define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1 +#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage" +typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR; + + + +// VK_KHR_shader_atomic_int64 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_atomic_int64 1 +#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1 +#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64" +typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR; + + + +// VK_KHR_shader_clock is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_clock 1 +#define VK_KHR_SHADER_CLOCK_SPEC_VERSION 1 +#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock" +typedef struct VkPhysicalDeviceShaderClockFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupClock; + VkBool32 shaderDeviceClock; +} VkPhysicalDeviceShaderClockFeaturesKHR; + + + +// VK_KHR_video_decode_h265 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_decode_h265 1 +#include "vk_video/vulkan_video_codec_h265std_decode.h" +#define VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION 8 +#define VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME "VK_KHR_video_decode_h265" +typedef struct VkVideoDecodeH265ProfileInfoKHR { + VkStructureType sType; + const void* pNext; + StdVideoH265ProfileIdc stdProfileIdc; +} VkVideoDecodeH265ProfileInfoKHR; + +typedef struct VkVideoDecodeH265CapabilitiesKHR { + VkStructureType sType; + void* pNext; + StdVideoH265LevelIdc maxLevelIdc; +} VkVideoDecodeH265CapabilitiesKHR; + +typedef struct VkVideoDecodeH265SessionParametersAddInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t stdVPSCount; + const StdVideoH265VideoParameterSet* pStdVPSs; + uint32_t stdSPSCount; + const StdVideoH265SequenceParameterSet* pStdSPSs; + uint32_t stdPPSCount; + const StdVideoH265PictureParameterSet* pStdPPSs; +} VkVideoDecodeH265SessionParametersAddInfoKHR; + +typedef struct VkVideoDecodeH265SessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t maxStdVPSCount; + uint32_t maxStdSPSCount; + uint32_t maxStdPPSCount; + const VkVideoDecodeH265SessionParametersAddInfoKHR* pParametersAddInfo; +} VkVideoDecodeH265SessionParametersCreateInfoKHR; + +typedef struct VkVideoDecodeH265PictureInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH265PictureInfo* pStdPictureInfo; + uint32_t sliceSegmentCount; + const uint32_t* pSliceSegmentOffsets; +} VkVideoDecodeH265PictureInfoKHR; + +typedef struct VkVideoDecodeH265DpbSlotInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeH265ReferenceInfo* pStdReferenceInfo; +} VkVideoDecodeH265DpbSlotInfoKHR; + + + +// VK_KHR_global_priority is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_global_priority 1 +#define VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION 1 +#define VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME "VK_KHR_global_priority" +#define VK_MAX_GLOBAL_PRIORITY_SIZE_KHR VK_MAX_GLOBAL_PRIORITY_SIZE +typedef VkQueueGlobalPriority VkQueueGlobalPriorityKHR; + +typedef VkDeviceQueueGlobalPriorityCreateInfo VkDeviceQueueGlobalPriorityCreateInfoKHR; + +typedef VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR; + +typedef VkQueueFamilyGlobalPriorityProperties VkQueueFamilyGlobalPriorityPropertiesKHR; + + + +// VK_KHR_driver_properties is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_driver_properties 1 +#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1 +#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties" +#define VK_MAX_DRIVER_NAME_SIZE_KHR VK_MAX_DRIVER_NAME_SIZE +#define VK_MAX_DRIVER_INFO_SIZE_KHR VK_MAX_DRIVER_INFO_SIZE +typedef VkDriverId VkDriverIdKHR; + +typedef VkConformanceVersion VkConformanceVersionKHR; + +typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR; + + + +// VK_KHR_shader_float_controls is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_float_controls 1 +#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4 +#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls" +typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR; + +typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR; + + + +// VK_KHR_depth_stencil_resolve is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_depth_stencil_resolve 1 +#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1 +#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve" +typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR; + +typedef VkResolveModeFlags VkResolveModeFlagsKHR; + +typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR; + +typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR; + + + +// VK_KHR_swapchain_mutable_format is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_swapchain_mutable_format 1 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1 +#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format" + + +// VK_KHR_timeline_semaphore is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_timeline_semaphore 1 +#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2 +#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore" +typedef VkSemaphoreType VkSemaphoreTypeKHR; + +typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR; + +typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR; + +typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR; + +typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR; + +typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR; + +typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR; + +typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR; + +typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue); +typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout); +typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR( + VkDevice device, + VkSemaphore semaphore, + uint64_t* pValue); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR( + VkDevice device, + const VkSemaphoreWaitInfo* pWaitInfo, + uint64_t timeout); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR( + VkDevice device, + const VkSemaphoreSignalInfo* pSignalInfo); +#endif +#endif + + +// VK_KHR_vulkan_memory_model is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_vulkan_memory_model 1 +#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3 +#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model" +typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR; + + + +// VK_KHR_shader_terminate_invocation is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_terminate_invocation 1 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1 +#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation" +typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR; + + + +// VK_KHR_fragment_shading_rate is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_fragment_shading_rate 1 +#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 2 +#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate" + +typedef enum 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 = 0x7FFFFFFF +} VkFragmentShadingRateCombinerOpKHR; +typedef struct VkFragmentShadingRateAttachmentInfoKHR { + VkStructureType sType; + const void* pNext; + const VkAttachmentReference2* pFragmentShadingRateAttachment; + VkExtent2D shadingRateAttachmentTexelSize; +} VkFragmentShadingRateAttachmentInfoKHR; + +typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkExtent2D fragmentSize; + VkFragmentShadingRateCombinerOpKHR combinerOps[2]; +} VkPipelineFragmentShadingRateStateCreateInfoKHR; + +typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 pipelineFragmentShadingRate; + VkBool32 primitiveFragmentShadingRate; + VkBool32 attachmentFragmentShadingRate; +} VkPhysicalDeviceFragmentShadingRateFeaturesKHR; + +typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR { + VkStructureType sType; + void* pNext; + VkExtent2D minFragmentShadingRateAttachmentTexelSize; + VkExtent2D maxFragmentShadingRateAttachmentTexelSize; + uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio; + VkBool32 primitiveFragmentShadingRateWithMultipleViewports; + VkBool32 layeredShadingRateAttachments; + VkBool32 fragmentShadingRateNonTrivialCombinerOps; + VkExtent2D maxFragmentSize; + uint32_t maxFragmentSizeAspectRatio; + uint32_t maxFragmentShadingRateCoverageSamples; + VkSampleCountFlagBits maxFragmentShadingRateRasterizationSamples; + VkBool32 fragmentShadingRateWithShaderDepthStencilWrites; + VkBool32 fragmentShadingRateWithSampleMask; + VkBool32 fragmentShadingRateWithShaderSampleMask; + VkBool32 fragmentShadingRateWithConservativeRasterization; + VkBool32 fragmentShadingRateWithFragmentShaderInterlock; + VkBool32 fragmentShadingRateWithCustomSampleLocations; + VkBool32 fragmentShadingRateStrictMultiplyCombiner; +} VkPhysicalDeviceFragmentShadingRatePropertiesKHR; + +typedef struct VkPhysicalDeviceFragmentShadingRateKHR { + VkStructureType sType; + void* pNext; + VkSampleCountFlags sampleCounts; + VkExtent2D fragmentSize; +} VkPhysicalDeviceFragmentShadingRateKHR; + +typedef struct VkRenderingFragmentShadingRateAttachmentInfoKHR { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; + VkExtent2D shadingRateAttachmentTexelSize; +} VkRenderingFragmentShadingRateAttachmentInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); +typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pFragmentShadingRateCount, + VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR( + VkCommandBuffer commandBuffer, + const VkExtent2D* pFragmentSize, + const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); +#endif +#endif + + +// VK_KHR_shader_constant_data is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_constant_data 1 +#define VK_KHR_SHADER_CONSTANT_DATA_SPEC_VERSION 1 +#define VK_KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME "VK_KHR_shader_constant_data" +typedef struct VkPhysicalDeviceShaderConstantDataFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderConstantData; +} VkPhysicalDeviceShaderConstantDataFeaturesKHR; + + + +// VK_KHR_dynamic_rendering_local_read is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_dynamic_rendering_local_read 1 +#define VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION 1 +#define VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME "VK_KHR_dynamic_rendering_local_read" +typedef VkPhysicalDeviceDynamicRenderingLocalReadFeatures VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR; + +typedef VkRenderingAttachmentLocationInfo VkRenderingAttachmentLocationInfoKHR; + +typedef VkRenderingInputAttachmentIndexInfo VkRenderingInputAttachmentIndexInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdSetRenderingAttachmentLocationsKHR)(VkCommandBuffer commandBuffer, const VkRenderingAttachmentLocationInfo* pLocationInfo); +typedef void (VKAPI_PTR *PFN_vkCmdSetRenderingInputAttachmentIndicesKHR)(VkCommandBuffer commandBuffer, const VkRenderingInputAttachmentIndexInfo* pInputAttachmentIndexInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetRenderingAttachmentLocationsKHR( + VkCommandBuffer commandBuffer, + const VkRenderingAttachmentLocationInfo* pLocationInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetRenderingInputAttachmentIndicesKHR( + VkCommandBuffer commandBuffer, + const VkRenderingInputAttachmentIndexInfo* pInputAttachmentIndexInfo); +#endif +#endif + + +// VK_KHR_shader_abort is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_abort 1 +#define VK_KHR_SHADER_ABORT_SPEC_VERSION 1 +#define VK_KHR_SHADER_ABORT_EXTENSION_NAME "VK_KHR_shader_abort" +typedef struct VkPhysicalDeviceShaderAbortFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderAbort; +} VkPhysicalDeviceShaderAbortFeaturesKHR; + +typedef struct VkDeviceFaultShaderAbortMessageInfoKHR { + VkStructureType sType; + void* pNext; + uint64_t messageDataSize; + void* pMessageData; +} VkDeviceFaultShaderAbortMessageInfoKHR; + +typedef struct VkPhysicalDeviceShaderAbortPropertiesKHR { + VkStructureType sType; + void* pNext; + uint64_t maxShaderAbortMessageSize; +} VkPhysicalDeviceShaderAbortPropertiesKHR; + + + +// VK_KHR_shader_quad_control is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_quad_control 1 +#define VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION 1 +#define VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME "VK_KHR_shader_quad_control" +typedef struct VkPhysicalDeviceShaderQuadControlFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderQuadControl; +} VkPhysicalDeviceShaderQuadControlFeaturesKHR; + + + +// VK_KHR_spirv_1_4 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_spirv_1_4 1 +#define VK_KHR_SPIRV_1_4_SPEC_VERSION 1 +#define VK_KHR_SPIRV_1_4_EXTENSION_NAME "VK_KHR_spirv_1_4" + + +// VK_KHR_surface_protected_capabilities is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_surface_protected_capabilities 1 +#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1 +#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME "VK_KHR_surface_protected_capabilities" +typedef struct VkSurfaceProtectedCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 supportsProtected; +} VkSurfaceProtectedCapabilitiesKHR; + + + +// VK_KHR_separate_depth_stencil_layouts is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_separate_depth_stencil_layouts 1 +#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1 +#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts" +typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR; + +typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR; + +typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR; + + + +// VK_KHR_present_wait is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_present_wait 1 +#define VK_KHR_PRESENT_WAIT_SPEC_VERSION 1 +#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME "VK_KHR_present_wait" +typedef struct VkPhysicalDevicePresentWaitFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 presentWait; +} VkPhysicalDevicePresentWaitFeaturesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkWaitForPresentKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkWaitForPresentKHR( + VkDevice device, + VkSwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout); +#endif +#endif + + +// VK_KHR_uniform_buffer_standard_layout is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_uniform_buffer_standard_layout 1 +#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout" +typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR; + + + +// VK_KHR_buffer_device_address is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_buffer_device_address 1 +#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1 +#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address" +typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR; + +typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR; + +typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR; + +typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR; + +typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR; + +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR( + VkDevice device, + const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); +#endif +#endif + + +// VK_KHR_deferred_host_operations is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_deferred_host_operations 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR) +#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4 +#define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations" +typedef VkResult (VKAPI_PTR *PFN_vkCreateDeferredOperationKHR)(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation); +typedef void (VKAPI_PTR *PFN_vkDestroyDeferredOperationKHR)(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator); +typedef uint32_t (VKAPI_PTR *PFN_vkGetDeferredOperationMaxConcurrencyKHR)(VkDevice device, VkDeferredOperationKHR operation); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeferredOperationResultKHR)(VkDevice device, VkDeferredOperationKHR operation); +typedef VkResult (VKAPI_PTR *PFN_vkDeferredOperationJoinKHR)(VkDevice device, VkDeferredOperationKHR operation); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDeferredOperationKHR( + VkDevice device, + const VkAllocationCallbacks* pAllocator, + VkDeferredOperationKHR* pDeferredOperation); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyDeferredOperationKHR( + VkDevice device, + VkDeferredOperationKHR operation, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR uint32_t VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR( + VkDevice device, + VkDeferredOperationKHR operation); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR( + VkDevice device, + VkDeferredOperationKHR operation); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR( + VkDevice device, + VkDeferredOperationKHR operation); +#endif +#endif + + +// VK_KHR_pipeline_executable_properties is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_pipeline_executable_properties 1 +#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1 +#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties" + +typedef enum 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 = 0x7FFFFFFF +} VkPipelineExecutableStatisticFormatKHR; +typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 pipelineExecutableInfo; +} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + +typedef struct VkPipelineInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipeline pipeline; +} VkPipelineInfoKHR; + +typedef struct VkPipelineExecutablePropertiesKHR { + VkStructureType sType; + void* pNext; + VkShaderStageFlags stages; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + uint32_t subgroupSize; +} VkPipelineExecutablePropertiesKHR; + +typedef struct VkPipelineExecutableInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipeline pipeline; + uint32_t executableIndex; +} VkPipelineExecutableInfoKHR; + +typedef union VkPipelineExecutableStatisticValueKHR { + VkBool32 b32; + int64_t i64; + uint64_t u64; + double f64; +} VkPipelineExecutableStatisticValueKHR; + +typedef struct VkPipelineExecutableStatisticKHR { + VkStructureType sType; + void* pNext; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkPipelineExecutableStatisticFormatKHR format; + VkPipelineExecutableStatisticValueKHR value; +} VkPipelineExecutableStatisticKHR; + +typedef struct VkPipelineExecutableInternalRepresentationKHR { + VkStructureType sType; + void* pNext; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkBool32 isText; + size_t dataSize; + void* pData; +} VkPipelineExecutableInternalRepresentationKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR( + VkDevice device, + const VkPipelineInfoKHR* pPipelineInfo, + uint32_t* pExecutableCount, + VkPipelineExecutablePropertiesKHR* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR( + VkDevice device, + const VkPipelineExecutableInfoKHR* pExecutableInfo, + uint32_t* pStatisticCount, + VkPipelineExecutableStatisticKHR* pStatistics); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR( + VkDevice device, + const VkPipelineExecutableInfoKHR* pExecutableInfo, + uint32_t* pInternalRepresentationCount, + VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); +#endif +#endif + + +// VK_KHR_map_memory2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_map_memory2 1 +#define VK_KHR_MAP_MEMORY_2_SPEC_VERSION 1 +#define VK_KHR_MAP_MEMORY_2_EXTENSION_NAME "VK_KHR_map_memory2" +typedef VkMemoryUnmapFlagBits VkMemoryUnmapFlagBitsKHR; + +typedef VkMemoryUnmapFlags VkMemoryUnmapFlagsKHR; + +typedef VkMemoryMapInfo VkMemoryMapInfoKHR; + +typedef VkMemoryUnmapInfo VkMemoryUnmapInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkMapMemory2KHR)(VkDevice device, const VkMemoryMapInfo* pMemoryMapInfo, void** ppData); +typedef VkResult (VKAPI_PTR *PFN_vkUnmapMemory2KHR)(VkDevice device, const VkMemoryUnmapInfo* pMemoryUnmapInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory2KHR( + VkDevice device, + const VkMemoryMapInfo* pMemoryMapInfo, + void** ppData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkUnmapMemory2KHR( + VkDevice device, + const VkMemoryUnmapInfo* pMemoryUnmapInfo); +#endif +#endif + + +// VK_KHR_shader_integer_dot_product is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_integer_dot_product 1 +#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1 +#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product" +typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR; + +typedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR; + + + +// VK_KHR_pipeline_library is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_pipeline_library 1 +#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1 +#define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library" +typedef struct VkPipelineLibraryCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t libraryCount; + const VkPipeline* pLibraries; +} VkPipelineLibraryCreateInfoKHR; + + + +// VK_KHR_shader_non_semantic_info is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_non_semantic_info 1 +#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1 +#define VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME "VK_KHR_shader_non_semantic_info" + + +// VK_KHR_present_id is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_present_id 1 +#define VK_KHR_PRESENT_ID_SPEC_VERSION 1 +#define VK_KHR_PRESENT_ID_EXTENSION_NAME "VK_KHR_present_id" +typedef struct VkPresentIdKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const uint64_t* pPresentIds; +} VkPresentIdKHR; + +typedef struct VkPhysicalDevicePresentIdFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 presentId; +} VkPhysicalDevicePresentIdFeaturesKHR; + + + +// VK_KHR_video_encode_queue is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_encode_queue 1 +#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 12 +#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue" + +typedef enum VkVideoEncodeTuningModeKHR { + VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1, + VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2, + VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3, + VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4, + VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeTuningModeKHR; + +typedef enum VkVideoEncodeFlagBitsKHR { + VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeFlagBitsKHR; +typedef VkFlags VkVideoEncodeFlagsKHR; + +typedef enum VkVideoEncodeCapabilityFlagBitsKHR { + VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeCapabilityFlagBitsKHR; +typedef VkFlags VkVideoEncodeCapabilityFlagsKHR; + +typedef enum VkVideoEncodeRateControlModeFlagBitsKHR { + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeRateControlModeFlagBitsKHR; +typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR; + +typedef enum VkVideoEncodeFeedbackFlagBitsKHR { + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeFeedbackFlagBitsKHR; +typedef VkFlags VkVideoEncodeFeedbackFlagsKHR; + +typedef enum VkVideoEncodeUsageFlagBitsKHR { + VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeUsageFlagBitsKHR; +typedef VkFlags VkVideoEncodeUsageFlagsKHR; + +typedef enum VkVideoEncodeContentFlagBitsKHR { + VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0, + VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeContentFlagBitsKHR; +typedef VkFlags VkVideoEncodeContentFlagsKHR; +typedef VkFlags VkVideoEncodeRateControlFlagsKHR; +typedef struct VkVideoEncodeInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeFlagsKHR flags; + VkBuffer dstBuffer; + VkDeviceSize dstBufferOffset; + VkDeviceSize dstBufferRange; + VkVideoPictureResourceInfoKHR srcPictureResource; + const VkVideoReferenceSlotInfoKHR* pSetupReferenceSlot; + uint32_t referenceSlotCount; + const VkVideoReferenceSlotInfoKHR* pReferenceSlots; + uint32_t precedingExternallyEncodedBytes; +} VkVideoEncodeInfoKHR; + +typedef struct VkVideoEncodeCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeCapabilityFlagsKHR flags; + VkVideoEncodeRateControlModeFlagsKHR rateControlModes; + uint32_t maxRateControlLayers; + uint64_t maxBitrate; + uint32_t maxQualityLevels; + VkExtent2D encodeInputPictureGranularity; + VkVideoEncodeFeedbackFlagsKHR supportedEncodeFeedbackFlags; +} VkVideoEncodeCapabilitiesKHR; + +typedef struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeFeedbackFlagsKHR encodeFeedbackFlags; +} VkQueryPoolVideoEncodeFeedbackCreateInfoKHR; + +typedef struct VkVideoEncodeUsageInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeUsageFlagsKHR videoUsageHints; + VkVideoEncodeContentFlagsKHR videoContentHints; + VkVideoEncodeTuningModeKHR tuningMode; +} VkVideoEncodeUsageInfoKHR; + +typedef struct VkVideoEncodeRateControlLayerInfoKHR { + VkStructureType sType; + const void* pNext; + uint64_t averageBitrate; + uint64_t maxBitrate; + uint32_t frameRateNumerator; + uint32_t frameRateDenominator; +} VkVideoEncodeRateControlLayerInfoKHR; + +typedef struct VkVideoEncodeRateControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeRateControlFlagsKHR flags; + VkVideoEncodeRateControlModeFlagBitsKHR rateControlMode; + uint32_t layerCount; + const VkVideoEncodeRateControlLayerInfoKHR* pLayers; + uint32_t virtualBufferSizeInMs; + uint32_t initialVirtualBufferSizeInMs; +} VkVideoEncodeRateControlInfoKHR; + +typedef struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR { + VkStructureType sType; + const void* pNext; + const VkVideoProfileInfoKHR* pVideoProfile; + uint32_t qualityLevel; +} VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR; + +typedef struct VkVideoEncodeQualityLevelPropertiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode; + uint32_t preferredRateControlLayerCount; +} VkVideoEncodeQualityLevelPropertiesKHR; + +typedef struct VkVideoEncodeQualityLevelInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t qualityLevel; +} VkVideoEncodeQualityLevelInfoKHR; + +typedef struct VkVideoEncodeSessionParametersGetInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoSessionParametersKHR videoSessionParameters; +} VkVideoEncodeSessionParametersGetInfoKHR; + +typedef struct VkVideoEncodeSessionParametersFeedbackInfoKHR { + VkStructureType sType; + void* pNext; + VkBool32 hasOverrides; +} VkVideoEncodeSessionParametersFeedbackInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetEncodedVideoSessionParametersKHR)(VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, size_t* pDataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, + VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetEncodedVideoSessionParametersKHR( + VkDevice device, + const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, + VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, + size_t* pDataSize, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR( + VkCommandBuffer commandBuffer, + const VkVideoEncodeInfoKHR* pEncodeInfo); +#endif +#endif + + +// VK_KHR_synchronization2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_synchronization2 1 +#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1 +#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2" +typedef VkPipelineStageFlags2 VkPipelineStageFlags2KHR; + +typedef VkPipelineStageFlagBits2 VkPipelineStageFlagBits2KHR; + +typedef VkAccessFlags2 VkAccessFlags2KHR; + +typedef VkAccessFlagBits2 VkAccessFlagBits2KHR; + +typedef VkSubmitFlagBits VkSubmitFlagBitsKHR; + +typedef VkSubmitFlags VkSubmitFlagsKHR; + +typedef VkMemoryBarrier2 VkMemoryBarrier2KHR; + +typedef VkBufferMemoryBarrier2 VkBufferMemoryBarrier2KHR; + +typedef VkImageMemoryBarrier2 VkImageMemoryBarrier2KHR; + +typedef VkDependencyInfo VkDependencyInfoKHR; + +typedef VkSubmitInfo2 VkSubmitInfo2KHR; + +typedef VkSemaphoreSubmitInfo VkSemaphoreSubmitInfoKHR; + +typedef VkCommandBufferSubmitInfo VkCommandBufferSubmitInfoKHR; + +typedef VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2 stageMask); +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfo* pDependencyInfos); +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkQueryPool queryPool, uint32_t query); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2* pSubmits, VkFence fence); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR( + VkCommandBuffer commandBuffer, + VkEvent event, + const VkDependencyInfo* pDependencyInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR( + VkCommandBuffer commandBuffer, + VkEvent event, + VkPipelineStageFlags2 stageMask); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR( + VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent* pEvents, + const VkDependencyInfo* pDependencyInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR( + VkCommandBuffer commandBuffer, + const VkDependencyInfo* pDependencyInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkQueryPool queryPool, + uint32_t query); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR( + VkQueue queue, + uint32_t submitCount, + const VkSubmitInfo2* pSubmits, + VkFence fence); +#endif +#endif + + +// VK_KHR_device_address_commands is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_device_address_commands 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR) +#define VK_KHR_DEVICE_ADDRESS_COMMANDS_SPEC_VERSION 1 +#define VK_KHR_DEVICE_ADDRESS_COMMANDS_EXTENSION_NAME "VK_KHR_device_address_commands" + +typedef enum 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 = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR, + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureTypeKHR; + +typedef enum VkAddressCommandFlagBitsKHR { + VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR = 0x00000001, + VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR = 0x00000002, + VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR = 0x00000004, + VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR = 0x00000008, + VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR = 0x00000010, + VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR = 0x00000020, + VK_ADDRESS_COMMAND_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAddressCommandFlagBitsKHR; +typedef VkFlags VkAddressCommandFlagsKHR; + +typedef enum VkConditionalRenderingFlagBitsEXT { + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001, + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkConditionalRenderingFlagBitsEXT; +typedef VkFlags VkConditionalRenderingFlagsEXT; + +typedef enum VkAccelerationStructureCreateFlagBitsKHR { + VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001, + VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000008, + VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0x00000004, + VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureCreateFlagBitsKHR; +typedef VkFlags VkAccelerationStructureCreateFlagsKHR; +typedef struct VkDeviceAddressRangeKHR { + VkDeviceAddress address; + VkDeviceSize size; +} VkDeviceAddressRangeKHR; + +typedef struct VkStridedDeviceAddressRangeKHR { + VkDeviceAddress address; + VkDeviceSize size; + VkDeviceSize stride; +} VkStridedDeviceAddressRangeKHR; + +typedef struct VkDeviceMemoryCopyKHR { + VkStructureType sType; + const void* pNext; + VkDeviceAddressRangeKHR srcRange; + VkAddressCommandFlagsKHR srcFlags; + VkDeviceAddressRangeKHR dstRange; + VkAddressCommandFlagsKHR dstFlags; +} VkDeviceMemoryCopyKHR; + +typedef struct VkCopyDeviceMemoryInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t regionCount; + const VkDeviceMemoryCopyKHR* pRegions; +} VkCopyDeviceMemoryInfoKHR; + +typedef struct VkDeviceMemoryImageCopyKHR { + VkStructureType sType; + const void* pNext; + VkDeviceAddressRangeKHR addressRange; + VkAddressCommandFlagsKHR addressFlags; + uint32_t addressRowLength; + uint32_t addressImageHeight; + VkImageSubresourceLayers imageSubresource; + VkImageLayout imageLayout; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkDeviceMemoryImageCopyKHR; + +typedef struct VkCopyDeviceMemoryImageInfoKHR { + VkStructureType sType; + const void* pNext; + VkImage image; + uint32_t regionCount; + const VkDeviceMemoryImageCopyKHR* pRegions; +} VkCopyDeviceMemoryImageInfoKHR; + +typedef struct VkMemoryRangeBarrierKHR { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkDeviceAddressRangeKHR addressRange; + VkAddressCommandFlagsKHR addressFlags; +} VkMemoryRangeBarrierKHR; + +typedef struct VkMemoryRangeBarriersInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t memoryRangeBarrierCount; + const VkMemoryRangeBarrierKHR* pMemoryRangeBarriers; +} VkMemoryRangeBarriersInfoKHR; + +typedef struct VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 deviceAddressCommands; +} VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR; + +typedef struct VkBindIndexBuffer3InfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceAddressRangeKHR addressRange; + VkAddressCommandFlagsKHR addressFlags; + VkIndexType indexType; +} VkBindIndexBuffer3InfoKHR; + +typedef struct VkBindVertexBuffer3InfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 setStride; + VkStridedDeviceAddressRangeKHR addressRange; + VkAddressCommandFlagsKHR addressFlags; +} VkBindVertexBuffer3InfoKHR; + +typedef struct VkDrawIndirect2InfoKHR { + VkStructureType sType; + const void* pNext; + VkStridedDeviceAddressRangeKHR addressRange; + VkAddressCommandFlagsKHR addressFlags; + uint32_t drawCount; +} VkDrawIndirect2InfoKHR; + +typedef struct VkDrawIndirectCount2InfoKHR { + VkStructureType sType; + const void* pNext; + VkStridedDeviceAddressRangeKHR addressRange; + VkAddressCommandFlagsKHR addressFlags; + VkDeviceAddressRangeKHR countAddressRange; + VkAddressCommandFlagsKHR countAddressFlags; + uint32_t maxDrawCount; +} VkDrawIndirectCount2InfoKHR; + +typedef struct VkDispatchIndirect2InfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceAddressRangeKHR addressRange; + VkAddressCommandFlagsKHR addressFlags; +} VkDispatchIndirect2InfoKHR; + +typedef struct VkConditionalRenderingBeginInfo2EXT { + VkStructureType sType; + const void* pNext; + VkDeviceAddressRangeKHR addressRange; + VkAddressCommandFlagsKHR addressFlags; + VkConditionalRenderingFlagsEXT flags; +} VkConditionalRenderingBeginInfo2EXT; + +typedef struct VkBindTransformFeedbackBuffer2InfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceAddressRangeKHR addressRange; + VkAddressCommandFlagsKHR addressFlags; +} VkBindTransformFeedbackBuffer2InfoEXT; + +typedef struct VkMemoryMarkerInfoAMD { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2KHR stage; + VkDeviceAddressRangeKHR dstRange; + VkAddressCommandFlagsKHR dstFlags; + uint32_t marker; +} VkMemoryMarkerInfoAMD; + +typedef struct VkAccelerationStructureCreateInfo2KHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureCreateFlagsKHR createFlags; + VkDeviceAddressRangeKHR addressRange; + VkAddressCommandFlagsKHR addressFlags; + VkAccelerationStructureTypeKHR type; +} VkAccelerationStructureCreateInfo2KHR; + +typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer3KHR)(VkCommandBuffer commandBuffer, const VkBindIndexBuffer3InfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers3KHR)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBindVertexBuffer3InfoKHR* pBindingInfos); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect2KHR)(VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect2KHR)(VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect2KHR)(VkCommandBuffer commandBuffer, const VkDispatchIndirect2InfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryInfoKHR* pCopyMemoryInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToImageKHR)(VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryImageInfoKHR* pCopyMemoryInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyDeviceMemoryImageInfoKHR* pCopyMemoryInfo); +typedef void (VKAPI_PTR *PFN_vkCmdUpdateMemoryKHR)(VkCommandBuffer commandBuffer, const VkDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, VkDeviceSize dataSize, const void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdFillMemoryKHR)(VkCommandBuffer commandBuffer, const VkDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, uint32_t data); +typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResultsToMemoryKHR)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, const VkStridedDeviceAddressRangeKHR* pDstRange, VkAddressCommandFlagsKHR dstFlags, VkQueryResultFlags queryResultFlags); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount2KHR)(VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount2KHR)(VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRendering2EXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfo2EXT* pConditionalRenderingBegin); +typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBindTransformFeedbackBuffer2InfoEXT* pBindingInfos); +typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedback2EXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterRange, uint32_t counterRangeCount, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfos); +typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedback2EXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterRange, uint32_t counterRangeCount, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfos); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCount2EXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfo, uint32_t counterOffset, uint32_t vertexStride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirect2EXT)(VkCommandBuffer commandBuffer, const VkDrawIndirect2InfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCount2EXT)(VkCommandBuffer commandBuffer, const VkDrawIndirectCount2InfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteMarkerToMemoryAMD)(VkCommandBuffer commandBuffer, const VkMemoryMarkerInfoAMD* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructure2KHR)(VkDevice device, const VkAccelerationStructureCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer3KHR( + VkCommandBuffer commandBuffer, + const VkBindIndexBuffer3InfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers3KHR( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBindVertexBuffer3InfoKHR* pBindingInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect2KHR( + VkCommandBuffer commandBuffer, + const VkDrawIndirect2InfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect2KHR( + VkCommandBuffer commandBuffer, + const VkDrawIndirect2InfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect2KHR( + VkCommandBuffer commandBuffer, + const VkDispatchIndirect2InfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryKHR( + VkCommandBuffer commandBuffer, + const VkCopyDeviceMemoryInfoKHR* pCopyMemoryInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToImageKHR( + VkCommandBuffer commandBuffer, + const VkCopyDeviceMemoryImageInfoKHR* pCopyMemoryInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToMemoryKHR( + VkCommandBuffer commandBuffer, + const VkCopyDeviceMemoryImageInfoKHR* pCopyMemoryInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdUpdateMemoryKHR( + VkCommandBuffer commandBuffer, + const VkDeviceAddressRangeKHR* pDstRange, + VkAddressCommandFlagsKHR dstFlags, + VkDeviceSize dataSize, + const void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdFillMemoryKHR( + VkCommandBuffer commandBuffer, + const VkDeviceAddressRangeKHR* pDstRange, + VkAddressCommandFlagsKHR dstFlags, + uint32_t data); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResultsToMemoryKHR( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + const VkStridedDeviceAddressRangeKHR* pDstRange, + VkAddressCommandFlagsKHR dstFlags, + VkQueryResultFlags queryResultFlags); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount2KHR( + VkCommandBuffer commandBuffer, + const VkDrawIndirectCount2InfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount2KHR( + VkCommandBuffer commandBuffer, + const VkDrawIndirectCount2InfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRendering2EXT( + VkCommandBuffer commandBuffer, + const VkConditionalRenderingBeginInfo2EXT* pConditionalRenderingBegin); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffers2EXT( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBindTransformFeedbackBuffer2InfoEXT* pBindingInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedback2EXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterRange, + uint32_t counterRangeCount, + const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedback2EXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterRange, + uint32_t counterRangeCount, + const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCount2EXT( + VkCommandBuffer commandBuffer, + uint32_t instanceCount, + uint32_t firstInstance, + const VkBindTransformFeedbackBuffer2InfoEXT* pCounterInfo, + uint32_t counterOffset, + uint32_t vertexStride); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirect2EXT( + VkCommandBuffer commandBuffer, + const VkDrawIndirect2InfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCount2EXT( + VkCommandBuffer commandBuffer, + const VkDrawIndirectCount2InfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdWriteMarkerToMemoryAMD( + VkCommandBuffer commandBuffer, + const VkMemoryMarkerInfoAMD* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructure2KHR( + VkDevice device, + const VkAccelerationStructureCreateInfo2KHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkAccelerationStructureKHR* pAccelerationStructure); +#endif +#endif + + +// VK_KHR_fragment_shader_barycentric is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_fragment_shader_barycentric 1 +#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 +#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_KHR_fragment_shader_barycentric" +typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShaderBarycentric; +} VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + +typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 triStripVertexOrderIndependentOfProvokingVertex; +} VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR; + + + +// VK_KHR_shader_subgroup_uniform_control_flow is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_subgroup_uniform_control_flow 1 +#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION 1 +#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME "VK_KHR_shader_subgroup_uniform_control_flow" +typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupUniformControlFlow; +} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + + + +// VK_KHR_zero_initialize_workgroup_memory is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_zero_initialize_workgroup_memory 1 +#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION 1 +#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME "VK_KHR_zero_initialize_workgroup_memory" +typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; + + + +// VK_KHR_workgroup_memory_explicit_layout is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_workgroup_memory_explicit_layout 1 +#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION 1 +#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME "VK_KHR_workgroup_memory_explicit_layout" +typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 workgroupMemoryExplicitLayout; + VkBool32 workgroupMemoryExplicitLayoutScalarBlockLayout; + VkBool32 workgroupMemoryExplicitLayout8BitAccess; + VkBool32 workgroupMemoryExplicitLayout16BitAccess; +} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + + + +// VK_KHR_copy_commands2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_copy_commands2 1 +#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1 +#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2" +typedef VkCopyBufferInfo2 VkCopyBufferInfo2KHR; + +typedef VkCopyImageInfo2 VkCopyImageInfo2KHR; + +typedef VkCopyBufferToImageInfo2 VkCopyBufferToImageInfo2KHR; + +typedef VkCopyImageToBufferInfo2 VkCopyImageToBufferInfo2KHR; + +typedef VkBlitImageInfo2 VkBlitImageInfo2KHR; + +typedef VkResolveImageInfo2 VkResolveImageInfo2KHR; + +typedef VkBufferCopy2 VkBufferCopy2KHR; + +typedef VkImageCopy2 VkImageCopy2KHR; + +typedef VkImageBlit2 VkImageBlit2KHR; + +typedef VkBufferImageCopy2 VkBufferImageCopy2KHR; + +typedef VkImageResolve2 VkImageResolve2KHR; + +typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo); +typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR( + VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2* pCopyBufferInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR( + VkCommandBuffer commandBuffer, + const VkCopyImageInfo2* pCopyImageInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR( + VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR( + VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR( + VkCommandBuffer commandBuffer, + const VkBlitImageInfo2* pBlitImageInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR( + VkCommandBuffer commandBuffer, + const VkResolveImageInfo2* pResolveImageInfo); +#endif +#endif + + +// VK_KHR_format_feature_flags2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_format_feature_flags2 1 +#define VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION 2 +#define VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME "VK_KHR_format_feature_flags2" +typedef VkFormatFeatureFlags2 VkFormatFeatureFlags2KHR; + +typedef VkFormatFeatureFlagBits2 VkFormatFeatureFlagBits2KHR; + +typedef VkFormatProperties3 VkFormatProperties3KHR; + + + +// VK_KHR_ray_tracing_maintenance1 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_ray_tracing_maintenance1 1 +#define VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1" +typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingMaintenance1; + VkBool32 rayTracingPipelineTraceRaysIndirect2; +} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR; + +typedef struct VkTraceRaysIndirectCommand2KHR { + VkDeviceAddress raygenShaderRecordAddress; + VkDeviceSize raygenShaderRecordSize; + VkDeviceAddress missShaderBindingTableAddress; + VkDeviceSize missShaderBindingTableSize; + VkDeviceSize missShaderBindingTableStride; + VkDeviceAddress hitShaderBindingTableAddress; + VkDeviceSize hitShaderBindingTableSize; + VkDeviceSize hitShaderBindingTableStride; + VkDeviceAddress callableShaderBindingTableAddress; + VkDeviceSize callableShaderBindingTableSize; + VkDeviceSize callableShaderBindingTableStride; + uint32_t width; + uint32_t height; + uint32_t depth; +} VkTraceRaysIndirectCommand2KHR; + +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirect2KHR)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirect2KHR( + VkCommandBuffer commandBuffer, + VkDeviceAddress indirectDeviceAddress); +#endif +#endif + + +// VK_KHR_shader_untyped_pointers is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_untyped_pointers 1 +#define VK_KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION 1 +#define VK_KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME "VK_KHR_shader_untyped_pointers" +typedef struct VkPhysicalDeviceShaderUntypedPointersFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderUntypedPointers; +} VkPhysicalDeviceShaderUntypedPointersFeaturesKHR; + + + +// VK_KHR_portability_enumeration is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_portability_enumeration 1 +#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1 +#define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration" + + +// VK_KHR_maintenance4 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance4 1 +#define VK_KHR_MAINTENANCE_4_SPEC_VERSION 2 +#define VK_KHR_MAINTENANCE_4_EXTENSION_NAME "VK_KHR_maintenance4" +typedef VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesKHR; + +typedef VkPhysicalDeviceMaintenance4Properties VkPhysicalDeviceMaintenance4PropertiesKHR; + +typedef VkDeviceBufferMemoryRequirements VkDeviceBufferMemoryRequirementsKHR; + +typedef VkDeviceImageMemoryRequirements VkDeviceImageMemoryRequirementsKHR; + +typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirementsKHR)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirementsKHR( + VkDevice device, + const VkDeviceBufferMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirementsKHR( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + VkMemoryRequirements2* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirementsKHR( + VkDevice device, + const VkDeviceImageMemoryRequirements* pInfo, + uint32_t* pSparseMemoryRequirementCount, + VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); +#endif +#endif + + +// VK_KHR_shader_subgroup_rotate is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_subgroup_rotate 1 +#define VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION 2 +#define VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME "VK_KHR_shader_subgroup_rotate" +typedef VkPhysicalDeviceShaderSubgroupRotateFeatures VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR; + + + +// VK_KHR_shader_maximal_reconvergence is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_maximal_reconvergence 1 +#define VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION 1 +#define VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME "VK_KHR_shader_maximal_reconvergence" +typedef struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderMaximalReconvergence; +} VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR; + + + +// VK_KHR_maintenance5 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance5 1 +#define VK_KHR_MAINTENANCE_5_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_5_EXTENSION_NAME "VK_KHR_maintenance5" +typedef VkPipelineCreateFlags2 VkPipelineCreateFlags2KHR; + +typedef VkPipelineCreateFlagBits2 VkPipelineCreateFlagBits2KHR; + +typedef VkBufferUsageFlags2 VkBufferUsageFlags2KHR; + +typedef VkBufferUsageFlagBits2 VkBufferUsageFlagBits2KHR; + +typedef VkPhysicalDeviceMaintenance5Features VkPhysicalDeviceMaintenance5FeaturesKHR; + +typedef VkPhysicalDeviceMaintenance5Properties VkPhysicalDeviceMaintenance5PropertiesKHR; + +typedef VkRenderingAreaInfo VkRenderingAreaInfoKHR; + +typedef VkDeviceImageSubresourceInfo VkDeviceImageSubresourceInfoKHR; + +typedef VkImageSubresource2 VkImageSubresource2KHR; + +typedef VkSubresourceLayout2 VkSubresourceLayout2KHR; + +typedef VkPipelineCreateFlags2CreateInfo VkPipelineCreateFlags2CreateInfoKHR; + +typedef VkBufferUsageFlags2CreateInfo VkBufferUsageFlags2CreateInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer2KHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize size, VkIndexType indexType); +typedef void (VKAPI_PTR *PFN_vkGetRenderingAreaGranularityKHR)(VkDevice device, const VkRenderingAreaInfo* pRenderingAreaInfo, VkExtent2D* pGranularity); +typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSubresourceLayoutKHR)(VkDevice device, const VkDeviceImageSubresourceInfo* pInfo, VkSubresourceLayout2* pLayout); +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2KHR)(VkDevice device, VkImage image, const VkImageSubresource2* pSubresource, VkSubresourceLayout2* pLayout); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer2KHR( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkDeviceSize size, + VkIndexType indexType); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetRenderingAreaGranularityKHR( + VkDevice device, + const VkRenderingAreaInfo* pRenderingAreaInfo, + VkExtent2D* pGranularity); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSubresourceLayoutKHR( + VkDevice device, + const VkDeviceImageSubresourceInfo* pInfo, + VkSubresourceLayout2* pLayout); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2KHR( + VkDevice device, + VkImage image, + const VkImageSubresource2* pSubresource, + VkSubresourceLayout2* pLayout); +#endif +#endif + + +// VK_KHR_present_id2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_present_id2 1 +#define VK_KHR_PRESENT_ID_2_SPEC_VERSION 1 +#define VK_KHR_PRESENT_ID_2_EXTENSION_NAME "VK_KHR_present_id2" +typedef struct VkSurfaceCapabilitiesPresentId2KHR { + VkStructureType sType; + void* pNext; + VkBool32 presentId2Supported; +} VkSurfaceCapabilitiesPresentId2KHR; + +typedef struct VkPresentId2KHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const uint64_t* pPresentIds; +} VkPresentId2KHR; + +typedef struct VkPhysicalDevicePresentId2FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 presentId2; +} VkPhysicalDevicePresentId2FeaturesKHR; + + + +// VK_KHR_present_wait2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_present_wait2 1 +#define VK_KHR_PRESENT_WAIT_2_SPEC_VERSION 1 +#define VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME "VK_KHR_present_wait2" +typedef struct VkSurfaceCapabilitiesPresentWait2KHR { + VkStructureType sType; + void* pNext; + VkBool32 presentWait2Supported; +} VkSurfaceCapabilitiesPresentWait2KHR; + +typedef struct VkPhysicalDevicePresentWait2FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 presentWait2; +} VkPhysicalDevicePresentWait2FeaturesKHR; + +typedef struct VkPresentWait2InfoKHR { + VkStructureType sType; + const void* pNext; + uint64_t presentId; + uint64_t timeout; +} VkPresentWait2InfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkWaitForPresent2KHR)(VkDevice device, VkSwapchainKHR swapchain, const VkPresentWait2InfoKHR* pPresentWait2Info); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkWaitForPresent2KHR( + VkDevice device, + VkSwapchainKHR swapchain, + const VkPresentWait2InfoKHR* pPresentWait2Info); +#endif +#endif + + +// VK_KHR_ray_tracing_position_fetch is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_ray_tracing_position_fetch 1 +#define VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION 1 +#define VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME "VK_KHR_ray_tracing_position_fetch" +typedef struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingPositionFetch; +} VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR; + + + +// VK_KHR_pipeline_binary is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_pipeline_binary 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineBinaryKHR) +#define VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR 32U +#define VK_KHR_PIPELINE_BINARY_SPEC_VERSION 1 +#define VK_KHR_PIPELINE_BINARY_EXTENSION_NAME "VK_KHR_pipeline_binary" +typedef struct VkPhysicalDevicePipelineBinaryFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 pipelineBinaries; +} VkPhysicalDevicePipelineBinaryFeaturesKHR; + +typedef struct VkPhysicalDevicePipelineBinaryPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 pipelineBinaryInternalCache; + VkBool32 pipelineBinaryInternalCacheControl; + VkBool32 pipelineBinaryPrefersInternalCache; + VkBool32 pipelineBinaryPrecompiledInternalCache; + VkBool32 pipelineBinaryCompressedData; +} VkPhysicalDevicePipelineBinaryPropertiesKHR; + +typedef struct VkDevicePipelineBinaryInternalCacheControlKHR { + VkStructureType sType; + const void* pNext; + VkBool32 disableInternalCache; +} VkDevicePipelineBinaryInternalCacheControlKHR; + +typedef struct VkPipelineBinaryKeyKHR { + VkStructureType sType; + void* pNext; + uint32_t keySize; + uint8_t key[VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR]; +} VkPipelineBinaryKeyKHR; + +typedef struct VkPipelineBinaryDataKHR { + size_t dataSize; + void* pData; +} VkPipelineBinaryDataKHR; + +typedef struct VkPipelineBinaryKeysAndDataKHR { + uint32_t binaryCount; + const VkPipelineBinaryKeyKHR* pPipelineBinaryKeys; + const VkPipelineBinaryDataKHR* pPipelineBinaryData; +} VkPipelineBinaryKeysAndDataKHR; + +typedef struct VkPipelineCreateInfoKHR { + VkStructureType sType; + void* pNext; +} VkPipelineCreateInfoKHR; + +typedef struct VkPipelineBinaryCreateInfoKHR { + VkStructureType sType; + const void* pNext; + const VkPipelineBinaryKeysAndDataKHR* pKeysAndDataInfo; + VkPipeline pipeline; + const VkPipelineCreateInfoKHR* pPipelineCreateInfo; +} VkPipelineBinaryCreateInfoKHR; + +typedef struct VkPipelineBinaryInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t binaryCount; + const VkPipelineBinaryKHR* pPipelineBinaries; +} VkPipelineBinaryInfoKHR; + +typedef struct VkReleaseCapturedPipelineDataInfoKHR { + VkStructureType sType; + void* pNext; + VkPipeline pipeline; +} VkReleaseCapturedPipelineDataInfoKHR; + +typedef struct VkPipelineBinaryDataInfoKHR { + VkStructureType sType; + void* pNext; + VkPipelineBinaryKHR pipelineBinary; +} VkPipelineBinaryDataInfoKHR; + +typedef struct VkPipelineBinaryHandlesInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t pipelineBinaryCount; + VkPipelineBinaryKHR* pPipelineBinaries; +} VkPipelineBinaryHandlesInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineBinariesKHR)(VkDevice device, const VkPipelineBinaryCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineBinaryHandlesInfoKHR* pBinaries); +typedef void (VKAPI_PTR *PFN_vkDestroyPipelineBinaryKHR)(VkDevice device, VkPipelineBinaryKHR pipelineBinary, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineKeyKHR)(VkDevice device, const VkPipelineCreateInfoKHR* pPipelineCreateInfo, VkPipelineBinaryKeyKHR* pPipelineKey); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineBinaryDataKHR)(VkDevice device, const VkPipelineBinaryDataInfoKHR* pInfo, VkPipelineBinaryKeyKHR* pPipelineBinaryKey, size_t* pPipelineBinaryDataSize, void* pPipelineBinaryData); +typedef VkResult (VKAPI_PTR *PFN_vkReleaseCapturedPipelineDataKHR)(VkDevice device, const VkReleaseCapturedPipelineDataInfoKHR* pInfo, const VkAllocationCallbacks* pAllocator); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineBinariesKHR( + VkDevice device, + const VkPipelineBinaryCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPipelineBinaryHandlesInfoKHR* pBinaries); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineBinaryKHR( + VkDevice device, + VkPipelineBinaryKHR pipelineBinary, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineKeyKHR( + VkDevice device, + const VkPipelineCreateInfoKHR* pPipelineCreateInfo, + VkPipelineBinaryKeyKHR* pPipelineKey); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineBinaryDataKHR( + VkDevice device, + const VkPipelineBinaryDataInfoKHR* pInfo, + VkPipelineBinaryKeyKHR* pPipelineBinaryKey, + size_t* pPipelineBinaryDataSize, + void* pPipelineBinaryData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseCapturedPipelineDataKHR( + VkDevice device, + const VkReleaseCapturedPipelineDataInfoKHR* pInfo, + const VkAllocationCallbacks* pAllocator); +#endif +#endif + + +// VK_KHR_surface_maintenance1 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_surface_maintenance1 1 +#define VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_KHR_SURFACE_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_surface_maintenance1" + +typedef enum VkPresentScalingFlagBitsKHR { + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR = 0x00000001, + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR = 0x00000002, + VK_PRESENT_SCALING_STRETCH_BIT_KHR = 0x00000004, + VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR, + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR, + VK_PRESENT_SCALING_STRETCH_BIT_EXT = VK_PRESENT_SCALING_STRETCH_BIT_KHR, + VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPresentScalingFlagBitsKHR; +typedef VkFlags VkPresentScalingFlagsKHR; + +typedef enum VkPresentGravityFlagBitsKHR { + VK_PRESENT_GRAVITY_MIN_BIT_KHR = 0x00000001, + VK_PRESENT_GRAVITY_MAX_BIT_KHR = 0x00000002, + VK_PRESENT_GRAVITY_CENTERED_BIT_KHR = 0x00000004, + VK_PRESENT_GRAVITY_MIN_BIT_EXT = VK_PRESENT_GRAVITY_MIN_BIT_KHR, + VK_PRESENT_GRAVITY_MAX_BIT_EXT = VK_PRESENT_GRAVITY_MAX_BIT_KHR, + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = VK_PRESENT_GRAVITY_CENTERED_BIT_KHR, + VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPresentGravityFlagBitsKHR; +typedef VkFlags VkPresentGravityFlagsKHR; +typedef struct VkSurfacePresentModeKHR { + VkStructureType sType; + void* pNext; + VkPresentModeKHR presentMode; +} VkSurfacePresentModeKHR; + +typedef struct VkSurfacePresentScalingCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkPresentScalingFlagsKHR supportedPresentScaling; + VkPresentGravityFlagsKHR supportedPresentGravityX; + VkPresentGravityFlagsKHR supportedPresentGravityY; + VkExtent2D minScaledImageExtent; + VkExtent2D maxScaledImageExtent; +} VkSurfacePresentScalingCapabilitiesKHR; + +typedef struct VkSurfacePresentModeCompatibilityKHR { + VkStructureType sType; + void* pNext; + uint32_t presentModeCount; + VkPresentModeKHR* pPresentModes; +} VkSurfacePresentModeCompatibilityKHR; + + + +// VK_KHR_swapchain_maintenance1 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_swapchain_maintenance1 1 +#define VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_swapchain_maintenance1" +typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 swapchainMaintenance1; +} VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR; + +typedef struct VkSwapchainPresentFenceInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const VkFence* pFences; +} VkSwapchainPresentFenceInfoKHR; + +typedef struct VkSwapchainPresentModesCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t presentModeCount; + const VkPresentModeKHR* pPresentModes; +} VkSwapchainPresentModesCreateInfoKHR; + +typedef struct VkSwapchainPresentModeInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const VkPresentModeKHR* pPresentModes; +} VkSwapchainPresentModeInfoKHR; + +typedef struct VkSwapchainPresentScalingCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkPresentScalingFlagsKHR scalingBehavior; + VkPresentGravityFlagsKHR presentGravityX; + VkPresentGravityFlagsKHR presentGravityY; +} VkSwapchainPresentScalingCreateInfoKHR; + +typedef struct VkReleaseSwapchainImagesInfoKHR { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; + uint32_t imageIndexCount; + const uint32_t* pImageIndices; +} VkReleaseSwapchainImagesInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkReleaseSwapchainImagesKHR)(VkDevice device, const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseSwapchainImagesKHR( + VkDevice device, + const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo); +#endif +#endif + + +// VK_KHR_internally_synchronized_queues is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_internally_synchronized_queues 1 +#define VK_KHR_INTERNALLY_SYNCHRONIZED_QUEUES_SPEC_VERSION 1 +#define VK_KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME "VK_KHR_internally_synchronized_queues" +typedef struct VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 internallySynchronizedQueues; +} VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR; + + + +// VK_KHR_cooperative_matrix is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_cooperative_matrix 1 +#define VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION 2 +#define VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_KHR_cooperative_matrix" + +typedef enum VkComponentTypeKHR { + VK_COMPONENT_TYPE_FLOAT16_KHR = 0, + VK_COMPONENT_TYPE_FLOAT32_KHR = 1, + VK_COMPONENT_TYPE_FLOAT64_KHR = 2, + VK_COMPONENT_TYPE_SINT8_KHR = 3, + VK_COMPONENT_TYPE_SINT16_KHR = 4, + VK_COMPONENT_TYPE_SINT32_KHR = 5, + VK_COMPONENT_TYPE_SINT64_KHR = 6, + VK_COMPONENT_TYPE_UINT8_KHR = 7, + VK_COMPONENT_TYPE_UINT16_KHR = 8, + VK_COMPONENT_TYPE_UINT32_KHR = 9, + VK_COMPONENT_TYPE_UINT64_KHR = 10, + VK_COMPONENT_TYPE_BFLOAT16_KHR = 1000141000, + VK_COMPONENT_TYPE_SINT8_PACKED_NV = 1000491000, + VK_COMPONENT_TYPE_UINT8_PACKED_NV = 1000491001, + VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT = 1000491002, + VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT = 1000491003, + VK_COMPONENT_TYPE_FLOAT16_NV = VK_COMPONENT_TYPE_FLOAT16_KHR, + VK_COMPONENT_TYPE_FLOAT32_NV = VK_COMPONENT_TYPE_FLOAT32_KHR, + VK_COMPONENT_TYPE_FLOAT64_NV = VK_COMPONENT_TYPE_FLOAT64_KHR, + VK_COMPONENT_TYPE_SINT8_NV = VK_COMPONENT_TYPE_SINT8_KHR, + VK_COMPONENT_TYPE_SINT16_NV = VK_COMPONENT_TYPE_SINT16_KHR, + VK_COMPONENT_TYPE_SINT32_NV = VK_COMPONENT_TYPE_SINT32_KHR, + VK_COMPONENT_TYPE_SINT64_NV = VK_COMPONENT_TYPE_SINT64_KHR, + VK_COMPONENT_TYPE_UINT8_NV = VK_COMPONENT_TYPE_UINT8_KHR, + VK_COMPONENT_TYPE_UINT16_NV = VK_COMPONENT_TYPE_UINT16_KHR, + VK_COMPONENT_TYPE_UINT32_NV = VK_COMPONENT_TYPE_UINT32_KHR, + VK_COMPONENT_TYPE_UINT64_NV = VK_COMPONENT_TYPE_UINT64_KHR, + VK_COMPONENT_TYPE_FLOAT_E4M3_NV = VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT, + VK_COMPONENT_TYPE_FLOAT_E5M2_NV = VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT, + VK_COMPONENT_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkComponentTypeKHR; + +typedef enum VkScopeKHR { + VK_SCOPE_DEVICE_KHR = 1, + VK_SCOPE_WORKGROUP_KHR = 2, + VK_SCOPE_SUBGROUP_KHR = 3, + VK_SCOPE_QUEUE_FAMILY_KHR = 5, + VK_SCOPE_DEVICE_NV = VK_SCOPE_DEVICE_KHR, + VK_SCOPE_WORKGROUP_NV = VK_SCOPE_WORKGROUP_KHR, + VK_SCOPE_SUBGROUP_NV = VK_SCOPE_SUBGROUP_KHR, + VK_SCOPE_QUEUE_FAMILY_NV = VK_SCOPE_QUEUE_FAMILY_KHR, + VK_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkScopeKHR; +typedef struct VkCooperativeMatrixPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t MSize; + uint32_t NSize; + uint32_t KSize; + VkComponentTypeKHR AType; + VkComponentTypeKHR BType; + VkComponentTypeKHR CType; + VkComponentTypeKHR ResultType; + VkBool32 saturatingAccumulation; + VkScopeKHR scope; +} VkCooperativeMatrixPropertiesKHR; + +typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 cooperativeMatrix; + VkBool32 cooperativeMatrixRobustBufferAccess; +} VkPhysicalDeviceCooperativeMatrixFeaturesKHR; + +typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR { + VkStructureType sType; + void* pNext; + VkShaderStageFlags cooperativeMatrixSupportedStages; +} VkPhysicalDeviceCooperativeMatrixPropertiesKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesKHR* pProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkCooperativeMatrixPropertiesKHR* pProperties); +#endif +#endif + + +// VK_KHR_compute_shader_derivatives is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_compute_shader_derivatives 1 +#define VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1 +#define VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_KHR_compute_shader_derivatives" +typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 computeDerivativeGroupQuads; + VkBool32 computeDerivativeGroupLinear; +} VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR; + +typedef struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 meshAndTaskShaderDerivatives; +} VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR; + + + +// VK_KHR_video_decode_av1 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_decode_av1 1 +#include "vk_video/vulkan_video_codec_av1std.h" +#include "vk_video/vulkan_video_codec_av1std_decode.h" +#define VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR 7U +#define VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION 1 +#define VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME "VK_KHR_video_decode_av1" +typedef struct VkVideoDecodeAV1ProfileInfoKHR { + VkStructureType sType; + const void* pNext; + StdVideoAV1Profile stdProfile; + VkBool32 filmGrainSupport; +} VkVideoDecodeAV1ProfileInfoKHR; + +typedef struct VkVideoDecodeAV1CapabilitiesKHR { + VkStructureType sType; + void* pNext; + StdVideoAV1Level maxLevel; +} VkVideoDecodeAV1CapabilitiesKHR; + +typedef struct VkVideoDecodeAV1SessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoAV1SequenceHeader* pStdSequenceHeader; +} VkVideoDecodeAV1SessionParametersCreateInfoKHR; + +typedef struct VkVideoDecodeAV1PictureInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeAV1PictureInfo* pStdPictureInfo; + int32_t referenceNameSlotIndices[VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR]; + uint32_t frameHeaderOffset; + uint32_t tileCount; + const uint32_t* pTileOffsets; + const uint32_t* pTileSizes; +} VkVideoDecodeAV1PictureInfoKHR; + +typedef struct VkVideoDecodeAV1DpbSlotInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeAV1ReferenceInfo* pStdReferenceInfo; +} VkVideoDecodeAV1DpbSlotInfoKHR; + + + +// VK_KHR_video_encode_av1 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_encode_av1 1 +#include "vk_video/vulkan_video_codec_av1std_encode.h" +#define VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION 1 +#define VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME "VK_KHR_video_encode_av1" + +typedef enum VkVideoEncodeAV1PredictionModeKHR { + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR = 0, + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR = 1, + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR = 2, + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR = 3, + VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeAV1PredictionModeKHR; + +typedef enum VkVideoEncodeAV1RateControlGroupKHR { + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR = 0, + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR = 1, + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR = 2, + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeAV1RateControlGroupKHR; + +typedef enum VkVideoEncodeAV1CapabilityFlagBitsKHR { + VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR = 0x00000010, + VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR = 0x00000020, + VK_VIDEO_ENCODE_AV1_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeAV1CapabilityFlagBitsKHR; +typedef VkFlags VkVideoEncodeAV1CapabilityFlagsKHR; + +typedef enum VkVideoEncodeAV1StdFlagBitsKHR { + VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_AV1_STD_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeAV1StdFlagBitsKHR; +typedef VkFlags VkVideoEncodeAV1StdFlagsKHR; + +typedef enum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR { + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeAV1SuperblockSizeFlagBitsKHR; +typedef VkFlags VkVideoEncodeAV1SuperblockSizeFlagsKHR; + +typedef enum VkVideoEncodeAV1RateControlFlagBitsKHR { + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_AV1_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeAV1RateControlFlagBitsKHR; +typedef VkFlags VkVideoEncodeAV1RateControlFlagsKHR; +typedef struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 videoEncodeAV1; +} VkPhysicalDeviceVideoEncodeAV1FeaturesKHR; + +typedef struct VkVideoEncodeAV1CapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeAV1CapabilityFlagsKHR flags; + StdVideoAV1Level maxLevel; + VkExtent2D codedPictureAlignment; + VkExtent2D maxTiles; + VkExtent2D minTileSize; + VkExtent2D maxTileSize; + VkVideoEncodeAV1SuperblockSizeFlagsKHR superblockSizes; + uint32_t maxSingleReferenceCount; + uint32_t singleReferenceNameMask; + uint32_t maxUnidirectionalCompoundReferenceCount; + uint32_t maxUnidirectionalCompoundGroup1ReferenceCount; + uint32_t unidirectionalCompoundReferenceNameMask; + uint32_t maxBidirectionalCompoundReferenceCount; + uint32_t maxBidirectionalCompoundGroup1ReferenceCount; + uint32_t maxBidirectionalCompoundGroup2ReferenceCount; + uint32_t bidirectionalCompoundReferenceNameMask; + uint32_t maxTemporalLayerCount; + uint32_t maxSpatialLayerCount; + uint32_t maxOperatingPoints; + uint32_t minQIndex; + uint32_t maxQIndex; + VkBool32 prefersGopRemainingFrames; + VkBool32 requiresGopRemainingFrames; + VkVideoEncodeAV1StdFlagsKHR stdSyntaxFlags; +} VkVideoEncodeAV1CapabilitiesKHR; + +typedef struct VkVideoEncodeAV1QIndexKHR { + uint32_t intraQIndex; + uint32_t predictiveQIndex; + uint32_t bipredictiveQIndex; +} VkVideoEncodeAV1QIndexKHR; + +typedef struct VkVideoEncodeAV1QualityLevelPropertiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeAV1RateControlFlagsKHR preferredRateControlFlags; + uint32_t preferredGopFrameCount; + uint32_t preferredKeyFramePeriod; + uint32_t preferredConsecutiveBipredictiveFrameCount; + uint32_t preferredTemporalLayerCount; + VkVideoEncodeAV1QIndexKHR preferredConstantQIndex; + uint32_t preferredMaxSingleReferenceCount; + uint32_t preferredSingleReferenceNameMask; + uint32_t preferredMaxUnidirectionalCompoundReferenceCount; + uint32_t preferredMaxUnidirectionalCompoundGroup1ReferenceCount; + uint32_t preferredUnidirectionalCompoundReferenceNameMask; + uint32_t preferredMaxBidirectionalCompoundReferenceCount; + uint32_t preferredMaxBidirectionalCompoundGroup1ReferenceCount; + uint32_t preferredMaxBidirectionalCompoundGroup2ReferenceCount; + uint32_t preferredBidirectionalCompoundReferenceNameMask; +} VkVideoEncodeAV1QualityLevelPropertiesKHR; + +typedef struct VkVideoEncodeAV1SessionCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 useMaxLevel; + StdVideoAV1Level maxLevel; +} VkVideoEncodeAV1SessionCreateInfoKHR; + +typedef struct VkVideoEncodeAV1SessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoAV1SequenceHeader* pStdSequenceHeader; + const StdVideoEncodeAV1DecoderModelInfo* pStdDecoderModelInfo; + uint32_t stdOperatingPointCount; + const StdVideoEncodeAV1OperatingPointInfo* pStdOperatingPoints; +} VkVideoEncodeAV1SessionParametersCreateInfoKHR; + +typedef struct VkVideoEncodeAV1PictureInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeAV1PredictionModeKHR predictionMode; + VkVideoEncodeAV1RateControlGroupKHR rateControlGroup; + uint32_t constantQIndex; + const StdVideoEncodeAV1PictureInfo* pStdPictureInfo; + int32_t referenceNameSlotIndices[VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR]; + VkBool32 primaryReferenceCdfOnly; + VkBool32 generateObuExtensionHeader; +} VkVideoEncodeAV1PictureInfoKHR; + +typedef struct VkVideoEncodeAV1DpbSlotInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoEncodeAV1ReferenceInfo* pStdReferenceInfo; +} VkVideoEncodeAV1DpbSlotInfoKHR; + +typedef struct VkVideoEncodeAV1ProfileInfoKHR { + VkStructureType sType; + const void* pNext; + StdVideoAV1Profile stdProfile; +} VkVideoEncodeAV1ProfileInfoKHR; + +typedef struct VkVideoEncodeAV1FrameSizeKHR { + uint32_t intraFrameSize; + uint32_t predictiveFrameSize; + uint32_t bipredictiveFrameSize; +} VkVideoEncodeAV1FrameSizeKHR; + +typedef struct VkVideoEncodeAV1GopRemainingFrameInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 useGopRemainingFrames; + uint32_t gopRemainingIntra; + uint32_t gopRemainingPredictive; + uint32_t gopRemainingBipredictive; +} VkVideoEncodeAV1GopRemainingFrameInfoKHR; + +typedef struct VkVideoEncodeAV1RateControlInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeAV1RateControlFlagsKHR flags; + uint32_t gopFrameCount; + uint32_t keyFramePeriod; + uint32_t consecutiveBipredictiveFrameCount; + uint32_t temporalLayerCount; +} VkVideoEncodeAV1RateControlInfoKHR; + +typedef struct VkVideoEncodeAV1RateControlLayerInfoKHR { + VkStructureType sType; + const void* pNext; + VkBool32 useMinQIndex; + VkVideoEncodeAV1QIndexKHR minQIndex; + VkBool32 useMaxQIndex; + VkVideoEncodeAV1QIndexKHR maxQIndex; + VkBool32 useMaxFrameSize; + VkVideoEncodeAV1FrameSizeKHR maxFrameSize; +} VkVideoEncodeAV1RateControlLayerInfoKHR; + + + +// VK_KHR_video_decode_vp9 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_decode_vp9 1 +#include "vk_video/vulkan_video_codec_vp9std.h" +#include "vk_video/vulkan_video_codec_vp9std_decode.h" +#define VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR 3U +#define VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION 1 +#define VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME "VK_KHR_video_decode_vp9" +typedef struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 videoDecodeVP9; +} VkPhysicalDeviceVideoDecodeVP9FeaturesKHR; + +typedef struct VkVideoDecodeVP9ProfileInfoKHR { + VkStructureType sType; + const void* pNext; + StdVideoVP9Profile stdProfile; +} VkVideoDecodeVP9ProfileInfoKHR; + +typedef struct VkVideoDecodeVP9CapabilitiesKHR { + VkStructureType sType; + void* pNext; + StdVideoVP9Level maxLevel; +} VkVideoDecodeVP9CapabilitiesKHR; + +typedef struct VkVideoDecodeVP9PictureInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoDecodeVP9PictureInfo* pStdPictureInfo; + int32_t referenceNameSlotIndices[VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR]; + uint32_t uncompressedHeaderOffset; + uint32_t compressedHeaderOffset; + uint32_t tilesOffset; +} VkVideoDecodeVP9PictureInfoKHR; + + + +// VK_KHR_video_maintenance1 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_maintenance1 1 +#define VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_video_maintenance1" +typedef struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 videoMaintenance1; +} VkPhysicalDeviceVideoMaintenance1FeaturesKHR; + +typedef struct VkVideoInlineQueryInfoKHR { + VkStructureType sType; + const void* pNext; + VkQueryPool queryPool; + uint32_t firstQuery; + uint32_t queryCount; +} VkVideoInlineQueryInfoKHR; + + + +// VK_KHR_vertex_attribute_divisor is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_vertex_attribute_divisor 1 +#define VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 1 +#define VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_KHR_vertex_attribute_divisor" +typedef VkPhysicalDeviceVertexAttributeDivisorProperties VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR; + +typedef VkVertexInputBindingDivisorDescription VkVertexInputBindingDivisorDescriptionKHR; + +typedef VkPipelineVertexInputDivisorStateCreateInfo VkPipelineVertexInputDivisorStateCreateInfoKHR; + +typedef VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR; + + + +// VK_KHR_load_store_op_none is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_load_store_op_none 1 +#define VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION 1 +#define VK_KHR_LOAD_STORE_OP_NONE_EXTENSION_NAME "VK_KHR_load_store_op_none" + + +// VK_KHR_unified_image_layouts is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_unified_image_layouts 1 +#define VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION 1 +#define VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME "VK_KHR_unified_image_layouts" +typedef struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 unifiedImageLayouts; + VkBool32 unifiedImageLayoutsVideo; +} VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR; + +typedef struct VkAttachmentFeedbackLoopInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 feedbackLoopEnable; +} VkAttachmentFeedbackLoopInfoEXT; + + + +// VK_KHR_shader_float_controls2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_float_controls2 1 +#define VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION 1 +#define VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME "VK_KHR_shader_float_controls2" +typedef VkPhysicalDeviceShaderFloatControls2Features VkPhysicalDeviceShaderFloatControls2FeaturesKHR; + + + +// VK_KHR_index_type_uint8 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_index_type_uint8 1 +#define VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION 1 +#define VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_KHR_index_type_uint8" +typedef VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesKHR; + + + +// VK_KHR_line_rasterization is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_line_rasterization 1 +#define VK_KHR_LINE_RASTERIZATION_SPEC_VERSION 1 +#define VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME "VK_KHR_line_rasterization" +typedef VkLineRasterizationMode VkLineRasterizationModeKHR; + +typedef VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesKHR; + +typedef VkPhysicalDeviceLineRasterizationProperties VkPhysicalDeviceLineRasterizationPropertiesKHR; + +typedef VkPipelineRasterizationLineStateCreateInfo VkPipelineRasterizationLineStateCreateInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleKHR)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleKHR( + VkCommandBuffer commandBuffer, + uint32_t lineStippleFactor, + uint16_t lineStipplePattern); +#endif +#endif + + +// VK_KHR_calibrated_timestamps is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_calibrated_timestamps 1 +#define VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1 +#define VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_KHR_calibrated_timestamps" + +typedef enum VkTimeDomainKHR { + VK_TIME_DOMAIN_DEVICE_KHR = 0, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2, + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3, + VK_TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT = 1000208000, + VK_TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT = 1000208001, + VK_TIME_DOMAIN_DEVICE_EXT = VK_TIME_DOMAIN_DEVICE_KHR, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR, + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR, + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR, + VK_TIME_DOMAIN_MAX_ENUM_KHR = 0x7FFFFFFF +} VkTimeDomainKHR; +typedef struct VkCalibratedTimestampInfoKHR { + VkStructureType sType; + const void* pNext; + VkTimeDomainKHR timeDomain; +} VkCalibratedTimestampInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainKHR* pTimeDomains); +typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsKHR)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoKHR* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( + VkPhysicalDevice physicalDevice, + uint32_t* pTimeDomainCount, + VkTimeDomainKHR* pTimeDomains); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsKHR( + VkDevice device, + uint32_t timestampCount, + const VkCalibratedTimestampInfoKHR* pTimestampInfos, + uint64_t* pTimestamps, + uint64_t* pMaxDeviation); +#endif +#endif + + +// VK_KHR_shader_expect_assume is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_expect_assume 1 +#define VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION 1 +#define VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME "VK_KHR_shader_expect_assume" +typedef VkPhysicalDeviceShaderExpectAssumeFeatures VkPhysicalDeviceShaderExpectAssumeFeaturesKHR; + + + +// VK_KHR_maintenance6 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance6 1 +#define VK_KHR_MAINTENANCE_6_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_6_EXTENSION_NAME "VK_KHR_maintenance6" +typedef VkPhysicalDeviceMaintenance6Features VkPhysicalDeviceMaintenance6FeaturesKHR; + +typedef VkPhysicalDeviceMaintenance6Properties VkPhysicalDeviceMaintenance6PropertiesKHR; + +typedef VkBindMemoryStatus VkBindMemoryStatusKHR; + +typedef VkBindDescriptorSetsInfo VkBindDescriptorSetsInfoKHR; + +typedef VkPushConstantsInfo VkPushConstantsInfoKHR; + +typedef VkPushDescriptorSetInfo VkPushDescriptorSetInfoKHR; + +typedef VkPushDescriptorSetWithTemplateInfo VkPushDescriptorSetWithTemplateInfoKHR; + +typedef struct VkSetDescriptorBufferOffsetsInfoEXT { + VkStructureType sType; + const void* pNext; + VkShaderStageFlags stageFlags; + VkPipelineLayout layout; + uint32_t firstSet; + uint32_t setCount; + const uint32_t* pBufferIndices; + const VkDeviceSize* pOffsets; +} VkSetDescriptorBufferOffsetsInfoEXT; + +typedef struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT { + VkStructureType sType; + const void* pNext; + VkShaderStageFlags stageFlags; + VkPipelineLayout layout; + uint32_t set; +} VkBindDescriptorBufferEmbeddedSamplersInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets2KHR)(VkCommandBuffer commandBuffer, const VkBindDescriptorSetsInfo* pBindDescriptorSetsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdPushConstants2KHR)(VkCommandBuffer commandBuffer, const VkPushConstantsInfo* pPushConstantsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSet2KHR)(VkCommandBuffer commandBuffer, const VkPushDescriptorSetInfo* pPushDescriptorSetInfo); +typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplate2KHR)(VkCommandBuffer commandBuffer, const VkPushDescriptorSetWithTemplateInfo* pPushDescriptorSetWithTemplateInfo); +typedef void (VKAPI_PTR *PFN_vkCmdSetDescriptorBufferOffsets2EXT)(VkCommandBuffer commandBuffer, const VkSetDescriptorBufferOffsetsInfoEXT* pSetDescriptorBufferOffsetsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT)(VkCommandBuffer commandBuffer, const VkBindDescriptorBufferEmbeddedSamplersInfoEXT* pBindDescriptorBufferEmbeddedSamplersInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets2KHR( + VkCommandBuffer commandBuffer, + const VkBindDescriptorSetsInfo* pBindDescriptorSetsInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants2KHR( + VkCommandBuffer commandBuffer, + const VkPushConstantsInfo* pPushConstantsInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSet2KHR( + VkCommandBuffer commandBuffer, + const VkPushDescriptorSetInfo* pPushDescriptorSetInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplate2KHR( + VkCommandBuffer commandBuffer, + const VkPushDescriptorSetWithTemplateInfo* pPushDescriptorSetWithTemplateInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDescriptorBufferOffsets2EXT( + VkCommandBuffer commandBuffer, + const VkSetDescriptorBufferOffsetsInfoEXT* pSetDescriptorBufferOffsetsInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( + VkCommandBuffer commandBuffer, + const VkBindDescriptorBufferEmbeddedSamplersInfoEXT* pBindDescriptorBufferEmbeddedSamplersInfo); +#endif +#endif + + +// VK_KHR_copy_memory_indirect is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_copy_memory_indirect 1 +#define VK_KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION 1 +#define VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME "VK_KHR_copy_memory_indirect" + +typedef enum VkAddressCopyFlagBitsKHR { + VK_ADDRESS_COPY_DEVICE_LOCAL_BIT_KHR = 0x00000001, + VK_ADDRESS_COPY_SPARSE_BIT_KHR = 0x00000002, + VK_ADDRESS_COPY_PROTECTED_BIT_KHR = 0x00000004, + VK_ADDRESS_COPY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAddressCopyFlagBitsKHR; +typedef VkFlags VkAddressCopyFlagsKHR; +typedef struct VkCopyMemoryIndirectCommandKHR { + VkDeviceAddress srcAddress; + VkDeviceAddress dstAddress; + VkDeviceSize size; +} VkCopyMemoryIndirectCommandKHR; + +typedef struct VkCopyMemoryIndirectInfoKHR { + VkStructureType sType; + const void* pNext; + VkAddressCopyFlagsKHR srcCopyFlags; + VkAddressCopyFlagsKHR dstCopyFlags; + uint32_t copyCount; + VkStridedDeviceAddressRangeKHR copyAddressRange; +} VkCopyMemoryIndirectInfoKHR; + +typedef struct VkCopyMemoryToImageIndirectCommandKHR { + VkDeviceAddress srcAddress; + uint32_t bufferRowLength; + uint32_t bufferImageHeight; + VkImageSubresourceLayers imageSubresource; + VkOffset3D imageOffset; + VkExtent3D imageExtent; +} VkCopyMemoryToImageIndirectCommandKHR; + +typedef struct VkCopyMemoryToImageIndirectInfoKHR { + VkStructureType sType; + const void* pNext; + VkAddressCopyFlagsKHR srcCopyFlags; + uint32_t copyCount; + VkStridedDeviceAddressRangeKHR copyAddressRange; + VkImage dstImage; + VkImageLayout dstImageLayout; + const VkImageSubresourceLayers* pImageSubresources; +} VkCopyMemoryToImageIndirectInfoKHR; + +typedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 indirectMemoryCopy; + VkBool32 indirectMemoryToImageCopy; +} VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR; + +typedef struct VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR { + VkStructureType sType; + void* pNext; + VkQueueFlags supportedQueues; +} VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryIndirectKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToImageIndirectKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToImageIndirectKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo); +#endif +#endif + + +// VK_KHR_video_encode_intra_refresh is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_encode_intra_refresh 1 +#define VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION 1 +#define VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME "VK_KHR_video_encode_intra_refresh" + +typedef enum VkVideoEncodeIntraRefreshModeFlagBitsKHR { + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR = 0, + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR = 0x00000001, + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR = 0x00000002, + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR = 0x00000004, + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR = 0x00000008, + VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkVideoEncodeIntraRefreshModeFlagBitsKHR; +typedef VkFlags VkVideoEncodeIntraRefreshModeFlagsKHR; +typedef struct VkVideoEncodeIntraRefreshCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeIntraRefreshModeFlagsKHR intraRefreshModes; + uint32_t maxIntraRefreshCycleDuration; + uint32_t maxIntraRefreshActiveReferencePictures; + VkBool32 partitionIndependentIntraRefreshRegions; + VkBool32 nonRectangularIntraRefreshRegions; +} VkVideoEncodeIntraRefreshCapabilitiesKHR; + +typedef struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkVideoEncodeIntraRefreshModeFlagBitsKHR intraRefreshMode; +} VkVideoEncodeSessionIntraRefreshCreateInfoKHR; + +typedef struct VkVideoEncodeIntraRefreshInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t intraRefreshCycleDuration; + uint32_t intraRefreshIndex; +} VkVideoEncodeIntraRefreshInfoKHR; + +typedef struct VkVideoReferenceIntraRefreshInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t dirtyIntraRefreshRegions; +} VkVideoReferenceIntraRefreshInfoKHR; + +typedef struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 videoEncodeIntraRefresh; +} VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR; + + + +// VK_KHR_video_encode_quantization_map is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_encode_quantization_map 1 +#define VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION 2 +#define VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME "VK_KHR_video_encode_quantization_map" +typedef struct VkVideoEncodeQuantizationMapCapabilitiesKHR { + VkStructureType sType; + void* pNext; + VkExtent2D maxQuantizationMapExtent; +} VkVideoEncodeQuantizationMapCapabilitiesKHR; + +typedef struct VkVideoFormatQuantizationMapPropertiesKHR { + VkStructureType sType; + void* pNext; + VkExtent2D quantizationMapTexelSize; +} VkVideoFormatQuantizationMapPropertiesKHR; + +typedef struct VkVideoEncodeQuantizationMapInfoKHR { + VkStructureType sType; + const void* pNext; + VkImageView quantizationMap; + VkExtent2D quantizationMapExtent; +} VkVideoEncodeQuantizationMapInfoKHR; + +typedef struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkExtent2D quantizationMapTexelSize; +} VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR; + +typedef struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 videoEncodeQuantizationMap; +} VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR; + +typedef struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR { + VkStructureType sType; + void* pNext; + int32_t minQpDelta; + int32_t maxQpDelta; +} VkVideoEncodeH264QuantizationMapCapabilitiesKHR; + +typedef struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR { + VkStructureType sType; + void* pNext; + int32_t minQpDelta; + int32_t maxQpDelta; +} VkVideoEncodeH265QuantizationMapCapabilitiesKHR; + +typedef struct VkVideoFormatH265QuantizationMapPropertiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeH265CtbSizeFlagsKHR compatibleCtbSizes; +} VkVideoFormatH265QuantizationMapPropertiesKHR; + +typedef struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR { + VkStructureType sType; + void* pNext; + int32_t minQIndexDelta; + int32_t maxQIndexDelta; +} VkVideoEncodeAV1QuantizationMapCapabilitiesKHR; + +typedef struct VkVideoFormatAV1QuantizationMapPropertiesKHR { + VkStructureType sType; + void* pNext; + VkVideoEncodeAV1SuperblockSizeFlagsKHR compatibleSuperblockSizes; +} VkVideoFormatAV1QuantizationMapPropertiesKHR; + + + +// VK_KHR_shader_relaxed_extended_instruction is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_relaxed_extended_instruction 1 +#define VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION 1 +#define VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME "VK_KHR_shader_relaxed_extended_instruction" +typedef struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderRelaxedExtendedInstruction; +} VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR; + + + +// VK_KHR_maintenance7 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance7 1 +#define VK_KHR_MAINTENANCE_7_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_7_EXTENSION_NAME "VK_KHR_maintenance7" + +typedef enum VkPhysicalDeviceLayeredApiKHR { + VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR = 0, + VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR = 1, + VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR = 2, + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR = 3, + VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR = 4, + VK_PHYSICAL_DEVICE_LAYERED_API_MAX_ENUM_KHR = 0x7FFFFFFF +} VkPhysicalDeviceLayeredApiKHR; +typedef struct VkPhysicalDeviceMaintenance7FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 maintenance7; +} VkPhysicalDeviceMaintenance7FeaturesKHR; + +typedef struct VkPhysicalDeviceMaintenance7PropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 robustFragmentShadingRateAttachmentAccess; + VkBool32 separateDepthStencilAttachmentAccess; + uint32_t maxDescriptorSetTotalUniformBuffersDynamic; + uint32_t maxDescriptorSetTotalStorageBuffersDynamic; + uint32_t maxDescriptorSetTotalBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic; + uint32_t maxDescriptorSetUpdateAfterBindTotalBuffersDynamic; +} VkPhysicalDeviceMaintenance7PropertiesKHR; + +typedef struct VkPhysicalDeviceLayeredApiPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t vendorID; + uint32_t deviceID; + VkPhysicalDeviceLayeredApiKHR layeredAPI; + char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]; +} VkPhysicalDeviceLayeredApiPropertiesKHR; + +typedef struct VkPhysicalDeviceLayeredApiPropertiesListKHR { + VkStructureType sType; + void* pNext; + uint32_t layeredApiCount; + VkPhysicalDeviceLayeredApiPropertiesKHR* pLayeredApis; +} VkPhysicalDeviceLayeredApiPropertiesListKHR; + +typedef struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR { + VkStructureType sType; + void* pNext; + VkPhysicalDeviceProperties2 properties; +} VkPhysicalDeviceLayeredApiVulkanPropertiesKHR; + + + +// VK_KHR_device_fault is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_device_fault 1 +#define VK_KHR_DEVICE_FAULT_SPEC_VERSION 1 +#define VK_KHR_DEVICE_FAULT_EXTENSION_NAME "VK_KHR_device_fault" + +typedef enum VkDeviceFaultAddressTypeKHR { + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR = 0, + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR = 1, + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR = 2, + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR = 3, + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR = 4, + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR = 5, + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR = 6, + VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR, + VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR, + VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR, + VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR, + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR, + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR, + VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR, + VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDeviceFaultAddressTypeKHR; + +typedef enum VkDeviceFaultVendorBinaryHeaderVersionKHR { + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR = 1, + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR, + VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDeviceFaultVendorBinaryHeaderVersionKHR; + +typedef enum VkDeviceFaultFlagBitsKHR { + VK_DEVICE_FAULT_FLAG_DEVICE_LOST_KHR = 0x00000001, + VK_DEVICE_FAULT_FLAG_MEMORY_ADDRESS_KHR = 0x00000002, + VK_DEVICE_FAULT_FLAG_INSTRUCTION_ADDRESS_KHR = 0x00000004, + VK_DEVICE_FAULT_FLAG_VENDOR_KHR = 0x00000008, + VK_DEVICE_FAULT_FLAG_WATCHDOG_TIMEOUT_KHR = 0x00000010, + VK_DEVICE_FAULT_FLAG_OVERFLOW_KHR = 0x00000020, + VK_DEVICE_FAULT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDeviceFaultFlagBitsKHR; +typedef VkFlags VkDeviceFaultFlagsKHR; +typedef struct VkPhysicalDeviceFaultFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 deviceFault; + VkBool32 deviceFaultVendorBinary; + VkBool32 deviceFaultReportMasked; + VkBool32 deviceFaultDeviceLostOnMasked; +} VkPhysicalDeviceFaultFeaturesKHR; + +typedef struct VkPhysicalDeviceFaultPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t maxDeviceFaultCount; +} VkPhysicalDeviceFaultPropertiesKHR; + +typedef struct VkDeviceFaultAddressInfoKHR { + VkDeviceFaultAddressTypeKHR addressType; + VkDeviceAddress reportedAddress; + VkDeviceSize addressPrecision; +} VkDeviceFaultAddressInfoKHR; + +typedef struct VkDeviceFaultVendorInfoKHR { + char description[VK_MAX_DESCRIPTION_SIZE]; + uint64_t vendorFaultCode; + uint64_t vendorFaultData; +} VkDeviceFaultVendorInfoKHR; + +typedef struct VkDeviceFaultInfoKHR { + VkStructureType sType; + void* pNext; + VkDeviceFaultFlagsKHR flags; + uint64_t groupId; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkDeviceFaultAddressInfoKHR faultAddressInfo; + VkDeviceFaultAddressInfoKHR instructionAddressInfo; + VkDeviceFaultVendorInfoKHR vendorInfo; +} VkDeviceFaultInfoKHR; + +typedef struct VkDeviceFaultDebugInfoKHR { + VkStructureType sType; + void* pNext; + uint32_t vendorBinarySize; + void* pVendorBinaryData; +} VkDeviceFaultDebugInfoKHR; + +typedef struct VkDeviceFaultVendorBinaryHeaderVersionOneKHR { + uint32_t headerSize; + VkDeviceFaultVendorBinaryHeaderVersionKHR headerVersion; + uint32_t vendorID; + uint32_t deviceID; + uint32_t driverVersion; + uint8_t pipelineCacheUUID[VK_UUID_SIZE]; + uint32_t applicationNameOffset; + uint32_t applicationVersion; + uint32_t engineNameOffset; + uint32_t engineVersion; + uint32_t apiVersion; +} VkDeviceFaultVendorBinaryHeaderVersionOneKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceFaultReportsKHR)(VkDevice device, uint64_t timeout, uint32_t* pFaultCounts, VkDeviceFaultInfoKHR* pFaultInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceFaultDebugInfoKHR)(VkDevice device, VkDeviceFaultDebugInfoKHR* pDebugInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceFaultReportsKHR( + VkDevice device, + uint64_t timeout, + uint32_t* pFaultCounts, + VkDeviceFaultInfoKHR* pFaultInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceFaultDebugInfoKHR( + VkDevice device, + VkDeviceFaultDebugInfoKHR* pDebugInfo); +#endif +#endif + + +// VK_KHR_maintenance8 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance8 1 +#define VK_KHR_MAINTENANCE_8_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_8_EXTENSION_NAME "VK_KHR_maintenance8" +typedef VkFlags64 VkAccessFlags3KHR; + +// Flag bits for VkAccessFlagBits3KHR +typedef VkFlags64 VkAccessFlagBits3KHR; +static const VkAccessFlagBits3KHR VK_ACCESS_3_NONE_KHR = 0ULL; + +typedef struct VkMemoryBarrierAccessFlags3KHR { + VkStructureType sType; + const void* pNext; + VkAccessFlags3KHR srcAccessMask3; + VkAccessFlags3KHR dstAccessMask3; +} VkMemoryBarrierAccessFlags3KHR; + +typedef struct VkPhysicalDeviceMaintenance8FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 maintenance8; +} VkPhysicalDeviceMaintenance8FeaturesKHR; + + + +// VK_KHR_shader_fma is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_shader_fma 1 +#define VK_KHR_SHADER_FMA_SPEC_VERSION 1 +#define VK_KHR_SHADER_FMA_EXTENSION_NAME "VK_KHR_shader_fma" +typedef struct VkPhysicalDeviceShaderFmaFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 shaderFmaFloat16; + VkBool32 shaderFmaFloat32; + VkBool32 shaderFmaFloat64; +} VkPhysicalDeviceShaderFmaFeaturesKHR; + + + +// VK_KHR_maintenance9 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance9 1 +#define VK_KHR_MAINTENANCE_9_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_9_EXTENSION_NAME "VK_KHR_maintenance9" + +typedef enum VkDefaultVertexAttributeValueKHR { + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR = 0, + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR = 1, + VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkDefaultVertexAttributeValueKHR; +typedef struct VkPhysicalDeviceMaintenance9FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 maintenance9; +} VkPhysicalDeviceMaintenance9FeaturesKHR; + +typedef struct VkPhysicalDeviceMaintenance9PropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 image2DViewOf3DSparse; + VkDefaultVertexAttributeValueKHR defaultVertexAttributeValue; +} VkPhysicalDeviceMaintenance9PropertiesKHR; + +typedef struct VkQueueFamilyOwnershipTransferPropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t optimalImageTransferToQueueFamilies; +} VkQueueFamilyOwnershipTransferPropertiesKHR; + + + +// VK_KHR_video_maintenance2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_video_maintenance2 1 +#define VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION 1 +#define VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME "VK_KHR_video_maintenance2" +typedef struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 videoMaintenance2; +} VkPhysicalDeviceVideoMaintenance2FeaturesKHR; + +typedef struct VkVideoDecodeH264InlineSessionParametersInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoH264SequenceParameterSet* pStdSPS; + const StdVideoH264PictureParameterSet* pStdPPS; +} VkVideoDecodeH264InlineSessionParametersInfoKHR; + +typedef struct VkVideoDecodeH265InlineSessionParametersInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoH265VideoParameterSet* pStdVPS; + const StdVideoH265SequenceParameterSet* pStdSPS; + const StdVideoH265PictureParameterSet* pStdPPS; +} VkVideoDecodeH265InlineSessionParametersInfoKHR; + +typedef struct VkVideoDecodeAV1InlineSessionParametersInfoKHR { + VkStructureType sType; + const void* pNext; + const StdVideoAV1SequenceHeader* pStdSequenceHeader; +} VkVideoDecodeAV1InlineSessionParametersInfoKHR; + + + +// VK_KHR_depth_clamp_zero_one is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_depth_clamp_zero_one 1 +#define VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION 1 +#define VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME "VK_KHR_depth_clamp_zero_one" +typedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 depthClampZeroOne; +} VkPhysicalDeviceDepthClampZeroOneFeaturesKHR; + + + +// VK_KHR_robustness2 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_robustness2 1 +#define VK_KHR_ROBUSTNESS_2_SPEC_VERSION 1 +#define VK_KHR_ROBUSTNESS_2_EXTENSION_NAME "VK_KHR_robustness2" +typedef struct VkPhysicalDeviceRobustness2FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 robustBufferAccess2; + VkBool32 robustImageAccess2; + VkBool32 nullDescriptor; +} VkPhysicalDeviceRobustness2FeaturesKHR; + +typedef struct VkPhysicalDeviceRobustness2PropertiesKHR { + VkStructureType sType; + void* pNext; + VkDeviceSize robustStorageBufferAccessSizeAlignment; + VkDeviceSize robustUniformBufferAccessSizeAlignment; +} VkPhysicalDeviceRobustness2PropertiesKHR; + + + +// VK_KHR_present_mode_fifo_latest_ready is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_present_mode_fifo_latest_ready 1 +#define VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION 1 +#define VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME "VK_KHR_present_mode_fifo_latest_ready" +typedef struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 presentModeFifoLatestReady; +} VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR; + + + +// VK_KHR_maintenance10 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_maintenance10 1 +#define VK_KHR_MAINTENANCE_10_SPEC_VERSION 1 +#define VK_KHR_MAINTENANCE_10_EXTENSION_NAME "VK_KHR_maintenance10" + +typedef enum VkRenderingAttachmentFlagBitsKHR { + VK_RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR = 0x00000001, + VK_RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR = 0x00000002, + VK_RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = 0x00000004, + VK_RENDERING_ATTACHMENT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkRenderingAttachmentFlagBitsKHR; +typedef VkFlags VkRenderingAttachmentFlagsKHR; + +typedef enum VkResolveImageFlagBitsKHR { + VK_RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR = 0x00000001, + VK_RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR = 0x00000002, + VK_RESOLVE_IMAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkResolveImageFlagBitsKHR; +typedef VkFlags VkResolveImageFlagsKHR; +typedef struct VkPhysicalDeviceMaintenance10FeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 maintenance10; +} VkPhysicalDeviceMaintenance10FeaturesKHR; + +typedef struct VkPhysicalDeviceMaintenance10PropertiesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rgba4OpaqueBlackSwizzled; + VkBool32 resolveSrgbFormatAppliesTransferFunction; + VkBool32 resolveSrgbFormatSupportsTransferFunctionControl; +} VkPhysicalDeviceMaintenance10PropertiesKHR; + +typedef struct VkRenderingEndInfoKHR { + VkStructureType sType; + const void* pNext; +} VkRenderingEndInfoKHR; + +typedef struct VkRenderingAttachmentFlagsInfoKHR { + VkStructureType sType; + const void* pNext; + VkRenderingAttachmentFlagsKHR flags; +} VkRenderingAttachmentFlagsInfoKHR; + +typedef struct VkResolveImageModeInfoKHR { + VkStructureType sType; + const void* pNext; + VkResolveImageFlagsKHR flags; + VkResolveModeFlagBits resolveMode; + VkResolveModeFlagBits stencilResolveMode; +} VkResolveImageModeInfoKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdEndRendering2KHR)(VkCommandBuffer commandBuffer, const VkRenderingEndInfoKHR* pRenderingEndInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering2KHR( + VkCommandBuffer commandBuffer, + const VkRenderingEndInfoKHR* pRenderingEndInfo); +#endif +#endif + + +// VK_EXT_debug_report is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_debug_report 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) +#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 10 +#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" + +typedef enum 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_CU_MODULE_NVX_EXT = 1000029000, + VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001, + 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_CUDA_MODULE_NV_EXT = 1000307000, + VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001, + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000, + // VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT is a legacy alias + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, + // VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT is a legacy alias + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugReportObjectTypeEXT; + +typedef enum VkDebugReportFlagBitsEXT { + VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001, + VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002, + VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004, + VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008, + VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010, + VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugReportFlagBitsEXT; +typedef VkFlags VkDebugReportFlagsEXT; +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); + +typedef struct VkDebugReportCallbackCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportFlagsEXT flags; + PFN_vkDebugReportCallbackEXT pfnCallback; + void* pUserData; +} VkDebugReportCallbackCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback); +typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator); +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); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT( + VkInstance instance, + const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDebugReportCallbackEXT* pCallback); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT( + VkInstance instance, + VkDebugReportCallbackEXT callback, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( + VkInstance instance, + VkDebugReportFlagsEXT flags, + VkDebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + const char* pLayerPrefix, + const char* pMessage); +#endif +#endif + + +// VK_NV_glsl_shader is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_glsl_shader 1 +#define VK_NV_GLSL_SHADER_SPEC_VERSION 1 +#define VK_NV_GLSL_SHADER_EXTENSION_NAME "VK_NV_glsl_shader" + + +// VK_EXT_depth_range_unrestricted is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_depth_range_unrestricted 1 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1 +#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted" + + +// VK_IMG_filter_cubic is a preprocessor guard. Do not pass it to API calls. +#define VK_IMG_filter_cubic 1 +#define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1 +#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic" + + +// VK_AMD_rasterization_order is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_rasterization_order 1 +#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 +#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order" + +typedef enum VkRasterizationOrderAMD { + VK_RASTERIZATION_ORDER_STRICT_AMD = 0, + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF +} VkRasterizationOrderAMD; +typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { + VkStructureType sType; + const void* pNext; + VkRasterizationOrderAMD rasterizationOrder; +} VkPipelineRasterizationStateRasterizationOrderAMD; + + + +// VK_AMD_shader_trinary_minmax is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_shader_trinary_minmax 1 +#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1 +#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax" + + +// VK_AMD_shader_explicit_vertex_parameter is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_shader_explicit_vertex_parameter 1 +#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1 +#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter" + + +// VK_EXT_debug_marker is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_debug_marker 1 +#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4 +#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker" +typedef struct VkDebugMarkerObjectNameInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportObjectTypeEXT objectType; + uint64_t object; + const char* pObjectName; +} VkDebugMarkerObjectNameInfoEXT; + +typedef struct VkDebugMarkerObjectTagInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportObjectTypeEXT objectType; + uint64_t object; + uint64_t tagName; + size_t tagSize; + const void* pTag; +} VkDebugMarkerObjectTagInfoEXT; + +typedef struct VkDebugMarkerMarkerInfoEXT { + VkStructureType sType; + const void* pNext; + const char* pMarkerName; + float color[4]; +} VkDebugMarkerMarkerInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo); +typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT( + VkDevice device, + const VkDebugMarkerObjectTagInfoEXT* pTagInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT( + VkDevice device, + const VkDebugMarkerObjectNameInfoEXT* pNameInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT( + VkCommandBuffer commandBuffer, + const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT( + VkCommandBuffer commandBuffer); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( + VkCommandBuffer commandBuffer, + const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +#endif +#endif + + +// VK_AMD_gcn_shader is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_gcn_shader 1 +#define VK_AMD_GCN_SHADER_SPEC_VERSION 1 +#define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader" + + +// VK_NV_dedicated_allocation is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_dedicated_allocation 1 +#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1 +#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation" +typedef struct VkDedicatedAllocationImageCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 dedicatedAllocation; +} VkDedicatedAllocationImageCreateInfoNV; + +typedef struct VkDedicatedAllocationBufferCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 dedicatedAllocation; +} VkDedicatedAllocationBufferCreateInfoNV; + +typedef struct VkDedicatedAllocationMemoryAllocateInfoNV { + VkStructureType sType; + const void* pNext; + VkImage image; + VkBuffer buffer; +} VkDedicatedAllocationMemoryAllocateInfoNV; + + + +// VK_EXT_transform_feedback is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_transform_feedback 1 +#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback" +typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT; +typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 transformFeedback; + VkBool32 geometryStreams; +} VkPhysicalDeviceTransformFeedbackFeaturesEXT; + +typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxTransformFeedbackStreams; + uint32_t maxTransformFeedbackBuffers; + VkDeviceSize maxTransformFeedbackBufferSize; + uint32_t maxTransformFeedbackStreamDataSize; + uint32_t maxTransformFeedbackBufferDataSize; + uint32_t maxTransformFeedbackBufferDataStride; + VkBool32 transformFeedbackQueries; + VkBool32 transformFeedbackStreamsLinesTriangles; + VkBool32 transformFeedbackRasterizationStreamSelect; + VkBool32 transformFeedbackDraw; +} VkPhysicalDeviceTransformFeedbackPropertiesEXT; + +typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationStateStreamCreateFlagsEXT flags; + uint32_t rasterizationStream; +} VkPipelineRasterizationStateStreamCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes); +typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index); +typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT( + VkCommandBuffer commandBuffer, + uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + const VkBuffer* pCounterBuffers, + const VkDeviceSize* pCounterBufferOffsets); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + VkQueryControlFlags flags, + uint32_t index); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT( + VkCommandBuffer commandBuffer, + VkQueryPool queryPool, + uint32_t query, + uint32_t index); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT( + VkCommandBuffer commandBuffer, + uint32_t instanceCount, + uint32_t firstInstance, + VkBuffer counterBuffer, + VkDeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride); +#endif +#endif + + +// VK_NVX_binary_import is a preprocessor guard. Do not pass it to API calls. +#define VK_NVX_binary_import 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuModuleNVX) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuFunctionNVX) +#define VK_NVX_BINARY_IMPORT_SPEC_VERSION 2 +#define VK_NVX_BINARY_IMPORT_EXTENSION_NAME "VK_NVX_binary_import" +typedef struct VkCuModuleCreateInfoNVX { + VkStructureType sType; + const void* pNext; + size_t dataSize; + const void* pData; +} VkCuModuleCreateInfoNVX; + +typedef struct VkCuModuleTexturingModeCreateInfoNVX { + VkStructureType sType; + const void* pNext; + VkBool32 use64bitTexturing; +} VkCuModuleTexturingModeCreateInfoNVX; + +typedef struct VkCuFunctionCreateInfoNVX { + VkStructureType sType; + const void* pNext; + VkCuModuleNVX module; + const char* pName; +} VkCuFunctionCreateInfoNVX; + +typedef struct VkCuLaunchInfoNVX { + VkStructureType sType; + const void* pNext; + VkCuFunctionNVX function; + uint32_t gridDimX; + uint32_t gridDimY; + uint32_t gridDimZ; + uint32_t blockDimX; + uint32_t blockDimY; + uint32_t blockDimZ; + uint32_t sharedMemBytes; + size_t paramCount; + const void* const * pParams; + size_t extraCount; + const void* const * pExtras; +} VkCuLaunchInfoNVX; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateCuModuleNVX)(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule); +typedef VkResult (VKAPI_PTR *PFN_vkCreateCuFunctionNVX)(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction); +typedef void (VKAPI_PTR *PFN_vkDestroyCuModuleNVX)(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkDestroyCuFunctionNVX)(VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdCuLaunchKernelNVX)(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuModuleNVX( + VkDevice device, + const VkCuModuleCreateInfoNVX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCuModuleNVX* pModule); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuFunctionNVX( + VkDevice device, + const VkCuFunctionCreateInfoNVX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkCuFunctionNVX* pFunction); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyCuModuleNVX( + VkDevice device, + VkCuModuleNVX module, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyCuFunctionNVX( + VkDevice device, + VkCuFunctionNVX function, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCuLaunchKernelNVX( + VkCommandBuffer commandBuffer, + const VkCuLaunchInfoNVX* pLaunchInfo); +#endif +#endif + + +// VK_NVX_image_view_handle is a preprocessor guard. Do not pass it to API calls. +#define VK_NVX_image_view_handle 1 +#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 4 +#define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME "VK_NVX_image_view_handle" +typedef struct VkImageViewHandleInfoNVX { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkDescriptorType descriptorType; + VkSampler sampler; +} VkImageViewHandleInfoNVX; + +typedef struct VkImageViewAddressPropertiesNVX { + VkStructureType sType; + void* pNext; + VkDeviceAddress deviceAddress; + VkDeviceSize size; +} VkImageViewAddressPropertiesNVX; + +typedef uint32_t (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo); +typedef uint64_t (VKAPI_PTR *PFN_vkGetImageViewHandle64NVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewAddressNVX)(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties); +typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceCombinedImageSamplerIndexNVX)(VkDevice device, uint64_t imageViewIndex, uint64_t samplerIndex); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX( + VkDevice device, + const VkImageViewHandleInfoNVX* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR uint64_t VKAPI_CALL vkGetImageViewHandle64NVX( + VkDevice device, + const VkImageViewHandleInfoNVX* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewAddressNVX( + VkDevice device, + VkImageView imageView, + VkImageViewAddressPropertiesNVX* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceCombinedImageSamplerIndexNVX( + VkDevice device, + uint64_t imageViewIndex, + uint64_t samplerIndex); +#endif +#endif + + +// VK_AMD_draw_indirect_count is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_draw_indirect_count 1 +#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2 +#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif +#endif + + +// VK_AMD_negative_viewport_height is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_negative_viewport_height 1 +#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1 +#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height" + + +// VK_AMD_gpu_shader_half_float is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_gpu_shader_half_float 1 +#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2 +#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float" + + +// VK_AMD_shader_ballot is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_shader_ballot 1 +#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1 +#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot" + + +// VK_AMD_texture_gather_bias_lod is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_texture_gather_bias_lod 1 +#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1 +#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod" +typedef struct VkTextureLODGatherFormatPropertiesAMD { + VkStructureType sType; + void* pNext; + VkBool32 supportsTextureGatherLODBiasAMD; +} VkTextureLODGatherFormatPropertiesAMD; + + + +// VK_AMD_shader_info is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_shader_info 1 +#define VK_AMD_SHADER_INFO_SPEC_VERSION 1 +#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info" + +typedef enum 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 = 0x7FFFFFFF +} VkShaderInfoTypeAMD; +typedef struct VkShaderResourceUsageAMD { + uint32_t numUsedVgprs; + uint32_t numUsedSgprs; + uint32_t ldsSizePerLocalWorkGroup; + size_t ldsUsageSizeInBytes; + size_t scratchMemUsageInBytes; +} VkShaderResourceUsageAMD; + +typedef struct VkShaderStatisticsInfoAMD { + VkShaderStageFlags shaderStageMask; + VkShaderResourceUsageAMD resourceUsage; + uint32_t numPhysicalVgprs; + uint32_t numPhysicalSgprs; + uint32_t numAvailableVgprs; + uint32_t numAvailableSgprs; + uint32_t computeWorkGroupSize[3]; +} VkShaderStatisticsInfoAMD; + +typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD( + VkDevice device, + VkPipeline pipeline, + VkShaderStageFlagBits shaderStage, + VkShaderInfoTypeAMD infoType, + size_t* pInfoSize, + void* pInfo); +#endif +#endif + + +// VK_AMD_shader_image_load_store_lod is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_shader_image_load_store_lod 1 +#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1 +#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod" + + +// VK_NV_corner_sampled_image is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_corner_sampled_image 1 +#define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2 +#define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image" +typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 cornerSampledImage; +} VkPhysicalDeviceCornerSampledImageFeaturesNV; + + + +// VK_IMG_format_pvrtc is a preprocessor guard. Do not pass it to API calls. +#define VK_IMG_format_pvrtc 1 +#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1 +#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc" + + +// VK_NV_external_memory_capabilities is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_external_memory_capabilities 1 +#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities" + +typedef enum VkExternalMemoryHandleTypeFlagBitsNV { + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008, + VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkExternalMemoryHandleTypeFlagBitsNV; +typedef VkFlags VkExternalMemoryHandleTypeFlagsNV; + +typedef enum VkExternalMemoryFeatureFlagBitsNV { + VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001, + VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002, + VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004, + VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkExternalMemoryFeatureFlagBitsNV; +typedef VkFlags VkExternalMemoryFeatureFlagsNV; +typedef struct VkExternalImageFormatPropertiesNV { + VkImageFormatProperties imageFormatProperties; + VkExternalMemoryFeatureFlagsNV externalMemoryFeatures; + VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes; + VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes; +} VkExternalImageFormatPropertiesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + VkPhysicalDevice physicalDevice, + VkFormat format, + VkImageType type, + VkImageTiling tiling, + VkImageUsageFlags usage, + VkImageCreateFlags flags, + VkExternalMemoryHandleTypeFlagsNV externalHandleType, + VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); +#endif +#endif + + +// VK_NV_external_memory is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_external_memory 1 +#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory" +typedef struct VkExternalMemoryImageCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagsNV handleTypes; +} VkExternalMemoryImageCreateInfoNV; + +typedef struct VkExportMemoryAllocateInfoNV { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagsNV handleTypes; +} VkExportMemoryAllocateInfoNV; + + + +// VK_EXT_validation_flags is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_validation_flags 1 +#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 3 +#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags" + +typedef enum VkValidationCheckEXT { + VK_VALIDATION_CHECK_ALL_EXT = 0, + VK_VALIDATION_CHECK_SHADERS_EXT = 1, + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationCheckEXT; +typedef struct VkValidationFlagsEXT { + VkStructureType sType; + const void* pNext; + uint32_t disabledValidationCheckCount; + const VkValidationCheckEXT* pDisabledValidationChecks; +} VkValidationFlagsEXT; + + + +// VK_EXT_shader_subgroup_ballot is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_subgroup_ballot 1 +#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1 +#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot" + + +// VK_EXT_shader_subgroup_vote is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_subgroup_vote 1 +#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1 +#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote" + + +// VK_EXT_texture_compression_astc_hdr is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_texture_compression_astc_hdr 1 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr" +typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT; + + + +// VK_EXT_astc_decode_mode is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_astc_decode_mode 1 +#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1 +#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode" +typedef struct VkImageViewASTCDecodeModeEXT { + VkStructureType sType; + const void* pNext; + VkFormat decodeMode; +} VkImageViewASTCDecodeModeEXT; + +typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 decodeModeSharedExponent; +} VkPhysicalDeviceASTCDecodeFeaturesEXT; + + + +// VK_EXT_pipeline_robustness is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_pipeline_robustness 1 +#define VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_pipeline_robustness" +typedef VkPipelineRobustnessBufferBehavior VkPipelineRobustnessBufferBehaviorEXT; + +typedef VkPipelineRobustnessImageBehavior VkPipelineRobustnessImageBehaviorEXT; + +typedef VkPhysicalDevicePipelineRobustnessFeatures VkPhysicalDevicePipelineRobustnessFeaturesEXT; + +typedef VkPhysicalDevicePipelineRobustnessProperties VkPhysicalDevicePipelineRobustnessPropertiesEXT; + +typedef VkPipelineRobustnessCreateInfo VkPipelineRobustnessCreateInfoEXT; + + + +// VK_EXT_conditional_rendering is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_conditional_rendering 1 +#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2 +#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering" +typedef struct VkConditionalRenderingBeginInfoEXT { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; + VkDeviceSize offset; + VkConditionalRenderingFlagsEXT flags; +} VkConditionalRenderingBeginInfoEXT; + +typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 conditionalRendering; + VkBool32 inheritedConditionalRendering; +} VkPhysicalDeviceConditionalRenderingFeaturesEXT; + +typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 conditionalRenderingEnable; +} VkCommandBufferInheritanceConditionalRenderingInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); +typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT( + VkCommandBuffer commandBuffer, + const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT( + VkCommandBuffer commandBuffer); +#endif +#endif + + +// VK_NV_clip_space_w_scaling is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_clip_space_w_scaling 1 +#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1 +#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling" +typedef struct VkViewportWScalingNV { + float xcoeff; + float ycoeff; +} VkViewportWScalingNV; + +typedef struct VkPipelineViewportWScalingStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 viewportWScalingEnable; + uint32_t viewportCount; + const VkViewportWScalingNV* pViewportWScalings; +} VkPipelineViewportWScalingStateCreateInfoNV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV( + VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkViewportWScalingNV* pViewportWScalings); +#endif +#endif + + +// VK_EXT_direct_mode_display is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_direct_mode_display 1 +#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1 +#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display" +typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display); +#endif +#endif + + +// VK_EXT_display_surface_counter is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_display_surface_counter 1 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1 +#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter" + +typedef enum VkSurfaceCounterFlagBitsEXT { + VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001, + // VK_SURFACE_COUNTER_VBLANK_EXT is a legacy alias + VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT, + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkSurfaceCounterFlagBitsEXT; +typedef VkFlags VkSurfaceCounterFlagsEXT; +typedef struct VkSurfaceCapabilities2EXT { + VkStructureType sType; + void* pNext; + uint32_t minImageCount; + uint32_t maxImageCount; + VkExtent2D currentExtent; + VkExtent2D minImageExtent; + VkExtent2D maxImageExtent; + uint32_t maxImageArrayLayers; + VkSurfaceTransformFlagsKHR supportedTransforms; + VkSurfaceTransformFlagBitsKHR currentTransform; + VkCompositeAlphaFlagsKHR supportedCompositeAlpha; + VkImageUsageFlags supportedUsageFlags; + VkSurfaceCounterFlagsEXT supportedSurfaceCounters; +} VkSurfaceCapabilities2EXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT( + VkPhysicalDevice physicalDevice, + VkSurfaceKHR surface, + VkSurfaceCapabilities2EXT* pSurfaceCapabilities); +#endif +#endif + + +// VK_EXT_display_control is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_display_control 1 +#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control" + +typedef enum 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 = 0x7FFFFFFF +} VkDisplayPowerStateEXT; + +typedef enum VkDeviceEventTypeEXT { + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0, + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceEventTypeEXT; + +typedef enum VkDisplayEventTypeEXT { + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0, + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDisplayEventTypeEXT; +typedef struct VkDisplayPowerInfoEXT { + VkStructureType sType; + const void* pNext; + VkDisplayPowerStateEXT powerState; +} VkDisplayPowerInfoEXT; + +typedef struct VkDeviceEventInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceEventTypeEXT deviceEvent; +} VkDeviceEventInfoEXT; + +typedef struct VkDisplayEventInfoEXT { + VkStructureType sType; + const void* pNext; + VkDisplayEventTypeEXT displayEvent; +} VkDisplayEventInfoEXT; + +typedef struct VkSwapchainCounterCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkSurfaceCounterFlagsEXT surfaceCounters; +} VkSwapchainCounterCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); +typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence); +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT( + VkDevice device, + VkDisplayKHR display, + const VkDisplayPowerInfoEXT* pDisplayPowerInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT( + VkDevice device, + const VkDeviceEventInfoEXT* pDeviceEventInfo, + const VkAllocationCallbacks* pAllocator, + VkFence* pFence); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT( + VkDevice device, + VkDisplayKHR display, + const VkDisplayEventInfoEXT* pDisplayEventInfo, + const VkAllocationCallbacks* pAllocator, + VkFence* pFence); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT( + VkDevice device, + VkSwapchainKHR swapchain, + VkSurfaceCounterFlagBitsEXT counter, + uint64_t* pCounterValue); +#endif +#endif + + +// VK_GOOGLE_display_timing is a preprocessor guard. Do not pass it to API calls. +#define VK_GOOGLE_display_timing 1 +#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1 +#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing" +typedef struct VkRefreshCycleDurationGOOGLE { + uint64_t refreshDuration; +} VkRefreshCycleDurationGOOGLE; + +typedef struct VkPastPresentationTimingGOOGLE { + uint32_t presentID; + uint64_t desiredPresentTime; + uint64_t actualPresentTime; + uint64_t earliestPresentTime; + uint64_t presentMargin; +} VkPastPresentationTimingGOOGLE; + +typedef struct VkPresentTimeGOOGLE { + uint32_t presentID; + uint64_t desiredPresentTime; +} VkPresentTimeGOOGLE; + +typedef struct VkPresentTimesInfoGOOGLE { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const VkPresentTimeGOOGLE* pTimes; +} VkPresentTimesInfoGOOGLE; + +typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE( + VkDevice device, + VkSwapchainKHR swapchain, + VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE( + VkDevice device, + VkSwapchainKHR swapchain, + uint32_t* pPresentationTimingCount, + VkPastPresentationTimingGOOGLE* pPresentationTimings); +#endif +#endif + + +// VK_NV_sample_mask_override_coverage is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_sample_mask_override_coverage 1 +#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1 +#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage" + + +// VK_NV_geometry_shader_passthrough is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_geometry_shader_passthrough 1 +#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1 +#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough" + + +// VK_NV_viewport_array2 is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_viewport_array2 1 +#define VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION 1 +#define VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME "VK_NV_viewport_array2" +// VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION is a legacy alias +#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION +// VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME is a legacy alias +#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME + + +// VK_NVX_multiview_per_view_attributes is a preprocessor guard. Do not pass it to API calls. +#define VK_NVX_multiview_per_view_attributes 1 +#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1 +#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes" +typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX { + VkStructureType sType; + void* pNext; + VkBool32 perViewPositionAllComponents; +} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + +typedef struct VkMultiviewPerViewAttributesInfoNVX { + VkStructureType sType; + const void* pNext; + VkBool32 perViewAttributes; + VkBool32 perViewAttributesPositionXOnly; +} VkMultiviewPerViewAttributesInfoNVX; + + + +// VK_NV_viewport_swizzle is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_viewport_swizzle 1 +#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1 +#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle" + +typedef enum 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 = 0x7FFFFFFF +} VkViewportCoordinateSwizzleNV; +typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV; +typedef struct VkViewportSwizzleNV { + VkViewportCoordinateSwizzleNV x; + VkViewportCoordinateSwizzleNV y; + VkViewportCoordinateSwizzleNV z; + VkViewportCoordinateSwizzleNV w; +} VkViewportSwizzleNV; + +typedef struct VkPipelineViewportSwizzleStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineViewportSwizzleStateCreateFlagsNV flags; + uint32_t viewportCount; + const VkViewportSwizzleNV* pViewportSwizzles; +} VkPipelineViewportSwizzleStateCreateInfoNV; + + + +// VK_EXT_discard_rectangles is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_discard_rectangles 1 +#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 2 +#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles" + +typedef enum VkDiscardRectangleModeEXT { + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0, + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1, + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDiscardRectangleModeEXT; +typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT; +typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxDiscardRectangles; +} VkPhysicalDeviceDiscardRectanglePropertiesEXT; + +typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineDiscardRectangleStateCreateFlagsEXT flags; + VkDiscardRectangleModeEXT discardRectangleMode; + uint32_t discardRectangleCount; + const VkRect2D* pDiscardRectangles; +} VkPipelineDiscardRectangleStateCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles); +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 discardRectangleEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleModeEXT)(VkCommandBuffer commandBuffer, VkDiscardRectangleModeEXT discardRectangleMode); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT( + VkCommandBuffer commandBuffer, + uint32_t firstDiscardRectangle, + uint32_t discardRectangleCount, + const VkRect2D* pDiscardRectangles); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 discardRectangleEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleModeEXT( + VkCommandBuffer commandBuffer, + VkDiscardRectangleModeEXT discardRectangleMode); +#endif +#endif + + +// VK_EXT_conservative_rasterization is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_conservative_rasterization 1 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1 +#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization" + +typedef enum 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 = 0x7FFFFFFF +} VkConservativeRasterizationModeEXT; +typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT; +typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT { + VkStructureType sType; + void* pNext; + float primitiveOverestimationSize; + float maxExtraPrimitiveOverestimationSize; + float extraPrimitiveOverestimationSizeGranularity; + VkBool32 primitiveUnderestimation; + VkBool32 conservativePointAndLineRasterization; + VkBool32 degenerateTrianglesRasterized; + VkBool32 degenerateLinesRasterized; + VkBool32 fullyCoveredFragmentShaderInputVariable; + VkBool32 conservativeRasterizationPostDepthCoverage; +} VkPhysicalDeviceConservativeRasterizationPropertiesEXT; + +typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationConservativeStateCreateFlagsEXT flags; + VkConservativeRasterizationModeEXT conservativeRasterizationMode; + float extraPrimitiveOverestimationSize; +} VkPipelineRasterizationConservativeStateCreateInfoEXT; + + + +// VK_EXT_depth_clip_enable is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_depth_clip_enable 1 +#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable" +typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT; +typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClipEnable; +} VkPhysicalDeviceDepthClipEnableFeaturesEXT; + +typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipelineRasterizationDepthClipStateCreateFlagsEXT flags; + VkBool32 depthClipEnable; +} VkPipelineRasterizationDepthClipStateCreateInfoEXT; + + + +// VK_EXT_swapchain_colorspace is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_swapchain_colorspace 1 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 5 +#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace" + + +// VK_EXT_hdr_metadata is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_hdr_metadata 1 +#define VK_EXT_HDR_METADATA_SPEC_VERSION 3 +#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" +typedef struct VkXYColorEXT { + float x; + float y; +} VkXYColorEXT; + +typedef struct VkHdrMetadataEXT { + VkStructureType sType; + const void* pNext; + VkXYColorEXT displayPrimaryRed; + VkXYColorEXT displayPrimaryGreen; + VkXYColorEXT displayPrimaryBlue; + VkXYColorEXT whitePoint; + float maxLuminance; + float minLuminance; + float maxContentLightLevel; + float maxFrameAverageLightLevel; +} VkHdrMetadataEXT; + +typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( + VkDevice device, + uint32_t swapchainCount, + const VkSwapchainKHR* pSwapchains, + const VkHdrMetadataEXT* pMetadata); +#endif +#endif + + +// VK_IMG_relaxed_line_rasterization is a preprocessor guard. Do not pass it to API calls. +#define VK_IMG_relaxed_line_rasterization 1 +#define VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION 1 +#define VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME "VK_IMG_relaxed_line_rasterization" +typedef struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG { + VkStructureType sType; + void* pNext; + VkBool32 relaxedLineRasterization; +} VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG; + + + +// VK_EXT_external_memory_dma_buf is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_external_memory_dma_buf 1 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1 +#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf" + + +// VK_EXT_queue_family_foreign is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_queue_family_foreign 1 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1 +#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign" +#define VK_QUEUE_FAMILY_FOREIGN_EXT (~2U) + + +// VK_EXT_debug_utils is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_debug_utils 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT) +#define VK_EXT_DEBUG_UTILS_SPEC_VERSION 2 +#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils" +typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT; + +typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT { + VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000, + VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugUtilsMessageSeverityFlagBitsEXT; + +typedef enum VkDebugUtilsMessageTypeFlagBitsEXT { + VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001, + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002, + VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004, + VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT = 0x00000008, + VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDebugUtilsMessageTypeFlagBitsEXT; +typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT; +typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT; +typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT; +typedef struct VkDebugUtilsLabelEXT { + VkStructureType sType; + const void* pNext; + const char* pLabelName; + float color[4]; +} VkDebugUtilsLabelEXT; + +typedef struct VkDebugUtilsObjectNameInfoEXT { + VkStructureType sType; + const void* pNext; + VkObjectType objectType; + uint64_t objectHandle; + const char* pObjectName; +} VkDebugUtilsObjectNameInfoEXT; + +typedef struct VkDebugUtilsMessengerCallbackDataEXT { + VkStructureType sType; + const void* pNext; + VkDebugUtilsMessengerCallbackDataFlagsEXT flags; + const char* pMessageIdName; + int32_t messageIdNumber; + const char* pMessage; + uint32_t queueLabelCount; + const VkDebugUtilsLabelEXT* pQueueLabels; + uint32_t cmdBufLabelCount; + const VkDebugUtilsLabelEXT* pCmdBufLabels; + uint32_t objectCount; + const VkDebugUtilsObjectNameInfoEXT* pObjects; +} VkDebugUtilsMessengerCallbackDataEXT; + +typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)( + VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, + const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, + void* pUserData); + +typedef struct VkDebugUtilsMessengerCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugUtilsMessengerCreateFlagsEXT flags; + VkDebugUtilsMessageSeverityFlagsEXT messageSeverity; + VkDebugUtilsMessageTypeFlagsEXT messageType; + PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback; + void* pUserData; +} VkDebugUtilsMessengerCreateInfoEXT; + +typedef struct VkDebugUtilsObjectTagInfoEXT { + VkStructureType sType; + const void* pNext; + VkObjectType objectType; + uint64_t objectHandle; + uint64_t tagName; + size_t tagSize; + const void* pTag; +} VkDebugUtilsObjectTagInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo); +typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo); +typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue); +typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger); +typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT( + VkDevice device, + const VkDebugUtilsObjectNameInfoEXT* pNameInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT( + VkDevice device, + const VkDebugUtilsObjectTagInfoEXT* pTagInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT( + VkQueue queue, + const VkDebugUtilsLabelEXT* pLabelInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT( + VkQueue queue); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT( + VkQueue queue, + const VkDebugUtilsLabelEXT* pLabelInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT( + VkCommandBuffer commandBuffer, + const VkDebugUtilsLabelEXT* pLabelInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT( + VkCommandBuffer commandBuffer); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT( + VkCommandBuffer commandBuffer, + const VkDebugUtilsLabelEXT* pLabelInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT( + VkInstance instance, + const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDebugUtilsMessengerEXT* pMessenger); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT( + VkInstance instance, + VkDebugUtilsMessengerEXT messenger, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT( + VkInstance instance, + VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + VkDebugUtilsMessageTypeFlagsEXT messageTypes, + const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); +#endif +#endif + + +// VK_EXT_sampler_filter_minmax is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_sampler_filter_minmax 1 +#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2 +#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax" +typedef VkSamplerReductionMode VkSamplerReductionModeEXT; + +typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT; + +typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT; + + + +// VK_AMD_gpu_shader_int16 is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_gpu_shader_int16 1 +#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2 +#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16" + + +// VK_EXT_descriptor_heap is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_descriptor_heap 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkTensorARM) +#define VK_EXT_DESCRIPTOR_HEAP_SPEC_VERSION 1 +#define VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME "VK_EXT_descriptor_heap" + +typedef enum VkDescriptorMappingSourceEXT { + VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT = 0, + VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT = 1, + VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT = 2, + VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT = 3, + VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT = 4, + VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT = 5, + VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT = 6, + VK_DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT = 7, + VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT = 8, + VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT = 9, + VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT = 10, + VK_DESCRIPTOR_MAPPING_SOURCE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDescriptorMappingSourceEXT; +typedef VkFlags64 VkTensorViewCreateFlagsARM; + +// Flag bits for VkTensorViewCreateFlagBitsARM +typedef VkFlags64 VkTensorViewCreateFlagBitsARM; +static const VkTensorViewCreateFlagBitsARM VK_TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM = 0x00000001ULL; + + +typedef enum VkSpirvResourceTypeFlagBitsEXT { + VK_SPIRV_RESOURCE_TYPE_ALL_EXT = 0x7FFFFFFF, + VK_SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT = 0x00000001, + VK_SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT = 0x00000002, + VK_SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT = 0x00000004, + VK_SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT = 0x00000008, + VK_SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT = 0x00000010, + VK_SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT = 0x00000020, + VK_SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT = 0x00000040, + VK_SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT = 0x00000080, + VK_SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT = 0x00000100, + VK_SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM = 0x00000200, + VK_SPIRV_RESOURCE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkSpirvResourceTypeFlagBitsEXT; +typedef VkFlags VkSpirvResourceTypeFlagsEXT; +typedef struct VkHostAddressRangeEXT { + void* address; + size_t size; +} VkHostAddressRangeEXT; + +typedef struct VkHostAddressRangeConstEXT { + const void* address; + size_t size; +} VkHostAddressRangeConstEXT; + +typedef VkDeviceAddressRangeKHR VkDeviceAddressRangeEXT; + +typedef struct VkTexelBufferDescriptorInfoEXT { + VkStructureType sType; + const void* pNext; + VkFormat format; + VkDeviceAddressRangeEXT addressRange; +} VkTexelBufferDescriptorInfoEXT; + +typedef struct VkImageDescriptorInfoEXT { + VkStructureType sType; + const void* pNext; + const VkImageViewCreateInfo* pView; + VkImageLayout layout; +} VkImageDescriptorInfoEXT; + +typedef struct VkTensorViewCreateInfoARM { + VkStructureType sType; + const void* pNext; + VkTensorViewCreateFlagsARM flags; + VkTensorARM tensor; + VkFormat format; +} VkTensorViewCreateInfoARM; + +typedef union VkResourceDescriptorDataEXT { + const VkImageDescriptorInfoEXT* pImage; + const VkTexelBufferDescriptorInfoEXT* pTexelBuffer; + const VkDeviceAddressRangeEXT* pAddressRange; + const VkTensorViewCreateInfoARM* pTensorARM; +} VkResourceDescriptorDataEXT; + +typedef struct VkResourceDescriptorInfoEXT { + VkStructureType sType; + const void* pNext; + VkDescriptorType type; + VkResourceDescriptorDataEXT data; +} VkResourceDescriptorInfoEXT; + +typedef struct VkBindHeapInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceAddressRangeEXT heapRange; + VkDeviceSize reservedRangeOffset; + VkDeviceSize reservedRangeSize; +} VkBindHeapInfoEXT; + +typedef struct VkPushDataInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t offset; + VkHostAddressRangeConstEXT data; +} VkPushDataInfoEXT; + +typedef struct VkDescriptorMappingSourceConstantOffsetEXT { + uint32_t heapOffset; + uint32_t heapArrayStride; + const VkSamplerCreateInfo* pEmbeddedSampler; + uint32_t samplerHeapOffset; + uint32_t samplerHeapArrayStride; +} VkDescriptorMappingSourceConstantOffsetEXT; + +typedef struct VkDescriptorMappingSourcePushIndexEXT { + uint32_t heapOffset; + uint32_t pushOffset; + uint32_t heapIndexStride; + uint32_t heapArrayStride; + const VkSamplerCreateInfo* pEmbeddedSampler; + VkBool32 useCombinedImageSamplerIndex; + uint32_t samplerHeapOffset; + uint32_t samplerPushOffset; + uint32_t samplerHeapIndexStride; + uint32_t samplerHeapArrayStride; +} VkDescriptorMappingSourcePushIndexEXT; + +typedef struct VkDescriptorMappingSourceIndirectIndexEXT { + uint32_t heapOffset; + uint32_t pushOffset; + uint32_t addressOffset; + uint32_t heapIndexStride; + uint32_t heapArrayStride; + const VkSamplerCreateInfo* pEmbeddedSampler; + VkBool32 useCombinedImageSamplerIndex; + uint32_t samplerHeapOffset; + uint32_t samplerPushOffset; + uint32_t samplerAddressOffset; + uint32_t samplerHeapIndexStride; + uint32_t samplerHeapArrayStride; +} VkDescriptorMappingSourceIndirectIndexEXT; + +typedef struct VkDescriptorMappingSourceHeapDataEXT { + uint32_t heapOffset; + uint32_t pushOffset; +} VkDescriptorMappingSourceHeapDataEXT; + +typedef struct VkDescriptorMappingSourceIndirectAddressEXT { + uint32_t pushOffset; + uint32_t addressOffset; +} VkDescriptorMappingSourceIndirectAddressEXT; + +typedef struct VkDescriptorMappingSourceShaderRecordIndexEXT { + uint32_t heapOffset; + uint32_t shaderRecordOffset; + uint32_t heapIndexStride; + uint32_t heapArrayStride; + const VkSamplerCreateInfo* pEmbeddedSampler; + VkBool32 useCombinedImageSamplerIndex; + uint32_t samplerHeapOffset; + uint32_t samplerShaderRecordOffset; + uint32_t samplerHeapIndexStride; + uint32_t samplerHeapArrayStride; +} VkDescriptorMappingSourceShaderRecordIndexEXT; + +typedef struct VkDescriptorMappingSourceIndirectIndexArrayEXT { + uint32_t heapOffset; + uint32_t pushOffset; + uint32_t addressOffset; + uint32_t heapIndexStride; + const VkSamplerCreateInfo* pEmbeddedSampler; + VkBool32 useCombinedImageSamplerIndex; + uint32_t samplerHeapOffset; + uint32_t samplerPushOffset; + uint32_t samplerAddressOffset; + uint32_t samplerHeapIndexStride; +} VkDescriptorMappingSourceIndirectIndexArrayEXT; + +typedef union VkDescriptorMappingSourceDataEXT { + VkDescriptorMappingSourceConstantOffsetEXT constantOffset; + VkDescriptorMappingSourcePushIndexEXT pushIndex; + VkDescriptorMappingSourceIndirectIndexEXT indirectIndex; + VkDescriptorMappingSourceIndirectIndexArrayEXT indirectIndexArray; + VkDescriptorMappingSourceHeapDataEXT heapData; + uint32_t pushDataOffset; + uint32_t pushAddressOffset; + VkDescriptorMappingSourceIndirectAddressEXT indirectAddress; + VkDescriptorMappingSourceShaderRecordIndexEXT shaderRecordIndex; + uint32_t shaderRecordDataOffset; + uint32_t shaderRecordAddressOffset; +} VkDescriptorMappingSourceDataEXT; + +typedef struct VkDescriptorSetAndBindingMappingEXT { + VkStructureType sType; + const void* pNext; + uint32_t descriptorSet; + uint32_t firstBinding; + uint32_t bindingCount; + VkSpirvResourceTypeFlagsEXT resourceMask; + VkDescriptorMappingSourceEXT source; + VkDescriptorMappingSourceDataEXT sourceData; +} VkDescriptorSetAndBindingMappingEXT; + +typedef struct VkShaderDescriptorSetAndBindingMappingInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t mappingCount; + const VkDescriptorSetAndBindingMappingEXT* pMappings; +} VkShaderDescriptorSetAndBindingMappingInfoEXT; + +typedef struct VkOpaqueCaptureDataCreateInfoEXT { + VkStructureType sType; + const void* pNext; + const VkHostAddressRangeConstEXT* pData; +} VkOpaqueCaptureDataCreateInfoEXT; + +typedef struct VkPhysicalDeviceDescriptorHeapFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 descriptorHeap; + VkBool32 descriptorHeapCaptureReplay; +} VkPhysicalDeviceDescriptorHeapFeaturesEXT; + +typedef struct VkPhysicalDeviceDescriptorHeapPropertiesEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize samplerHeapAlignment; + VkDeviceSize resourceHeapAlignment; + VkDeviceSize maxSamplerHeapSize; + VkDeviceSize maxResourceHeapSize; + VkDeviceSize minSamplerHeapReservedRange; + VkDeviceSize minSamplerHeapReservedRangeWithEmbedded; + VkDeviceSize minResourceHeapReservedRange; + VkDeviceSize samplerDescriptorSize; + VkDeviceSize imageDescriptorSize; + VkDeviceSize bufferDescriptorSize; + VkDeviceSize samplerDescriptorAlignment; + VkDeviceSize imageDescriptorAlignment; + VkDeviceSize bufferDescriptorAlignment; + VkDeviceSize maxPushDataSize; + size_t imageCaptureReplayOpaqueDataSize; + uint32_t maxDescriptorHeapEmbeddedSamplers; + uint32_t samplerYcbcrConversionCount; + VkBool32 sparseDescriptorHeaps; + VkBool32 protectedDescriptorHeaps; +} VkPhysicalDeviceDescriptorHeapPropertiesEXT; + +typedef struct VkCommandBufferInheritanceDescriptorHeapInfoEXT { + VkStructureType sType; + const void* pNext; + const VkBindHeapInfoEXT* pSamplerHeapBindInfo; + const VkBindHeapInfoEXT* pResourceHeapBindInfo; +} VkCommandBufferInheritanceDescriptorHeapInfoEXT; + +typedef struct VkSamplerCustomBorderColorIndexCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t index; +} VkSamplerCustomBorderColorIndexCreateInfoEXT; + +typedef struct VkSamplerCustomBorderColorCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkClearColorValue customBorderColor; + VkFormat format; +} VkSamplerCustomBorderColorCreateInfoEXT; + +typedef struct VkIndirectCommandsLayoutPushDataTokenNV { + VkStructureType sType; + const void* pNext; + uint32_t pushDataOffset; + uint32_t pushDataSize; +} VkIndirectCommandsLayoutPushDataTokenNV; + +typedef struct VkSubsampledImageFormatPropertiesEXT { + VkStructureType sType; + const void* pNext; + uint32_t subsampledImageDescriptorCount; +} VkSubsampledImageFormatPropertiesEXT; + +typedef struct VkPhysicalDeviceDescriptorHeapTensorPropertiesARM { + VkStructureType sType; + void* pNext; + VkDeviceSize tensorDescriptorSize; + VkDeviceSize tensorDescriptorAlignment; + size_t tensorCaptureReplayOpaqueDataSize; +} VkPhysicalDeviceDescriptorHeapTensorPropertiesARM; + +typedef VkResult (VKAPI_PTR *PFN_vkWriteSamplerDescriptorsEXT)(VkDevice device, uint32_t samplerCount, const VkSamplerCreateInfo* pSamplers, const VkHostAddressRangeEXT* pDescriptors); +typedef VkResult (VKAPI_PTR *PFN_vkWriteResourceDescriptorsEXT)(VkDevice device, uint32_t resourceCount, const VkResourceDescriptorInfoEXT* pResources, const VkHostAddressRangeEXT* pDescriptors); +typedef void (VKAPI_PTR *PFN_vkCmdBindSamplerHeapEXT)(VkCommandBuffer commandBuffer, const VkBindHeapInfoEXT* pBindInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBindResourceHeapEXT)(VkCommandBuffer commandBuffer, const VkBindHeapInfoEXT* pBindInfo); +typedef void (VKAPI_PTR *PFN_vkCmdPushDataEXT)(VkCommandBuffer commandBuffer, const VkPushDataInfoEXT* pPushDataInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetImageOpaqueCaptureDataEXT)(VkDevice device, uint32_t imageCount, const VkImage* pImages, VkHostAddressRangeEXT* pDatas); +typedef VkDeviceSize (VKAPI_PTR *PFN_vkGetPhysicalDeviceDescriptorSizeEXT)(VkPhysicalDevice physicalDevice, VkDescriptorType descriptorType); +typedef VkResult (VKAPI_PTR *PFN_vkRegisterCustomBorderColorEXT)(VkDevice device, const VkSamplerCustomBorderColorCreateInfoEXT* pBorderColor, VkBool32 requestIndex, uint32_t* pIndex); +typedef void (VKAPI_PTR *PFN_vkUnregisterCustomBorderColorEXT)(VkDevice device, uint32_t index); +typedef VkResult (VKAPI_PTR *PFN_vkGetTensorOpaqueCaptureDataARM)(VkDevice device, uint32_t tensorCount, const VkTensorARM* pTensors, VkHostAddressRangeEXT* pDatas); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkWriteSamplerDescriptorsEXT( + VkDevice device, + uint32_t samplerCount, + const VkSamplerCreateInfo* pSamplers, + const VkHostAddressRangeEXT* pDescriptors); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkWriteResourceDescriptorsEXT( + VkDevice device, + uint32_t resourceCount, + const VkResourceDescriptorInfoEXT* pResources, + const VkHostAddressRangeEXT* pDescriptors); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindSamplerHeapEXT( + VkCommandBuffer commandBuffer, + const VkBindHeapInfoEXT* pBindInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindResourceHeapEXT( + VkCommandBuffer commandBuffer, + const VkBindHeapInfoEXT* pBindInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPushDataEXT( + VkCommandBuffer commandBuffer, + const VkPushDataInfoEXT* pPushDataInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageOpaqueCaptureDataEXT( + VkDevice device, + uint32_t imageCount, + const VkImage* pImages, + VkHostAddressRangeEXT* pDatas); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkDeviceSize VKAPI_CALL vkGetPhysicalDeviceDescriptorSizeEXT( + VkPhysicalDevice physicalDevice, + VkDescriptorType descriptorType); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkRegisterCustomBorderColorEXT( + VkDevice device, + const VkSamplerCustomBorderColorCreateInfoEXT* pBorderColor, + VkBool32 requestIndex, + uint32_t* pIndex); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkUnregisterCustomBorderColorEXT( + VkDevice device, + uint32_t index); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetTensorOpaqueCaptureDataARM( + VkDevice device, + uint32_t tensorCount, + const VkTensorARM* pTensors, + VkHostAddressRangeEXT* pDatas); +#endif +#endif + + +// VK_AMD_mixed_attachment_samples is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_mixed_attachment_samples 1 +#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1 +#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples" +typedef struct VkAttachmentSampleCountInfoAMD { + VkStructureType sType; + const void* pNext; + uint32_t colorAttachmentCount; + const VkSampleCountFlagBits* pColorAttachmentSamples; + VkSampleCountFlagBits depthStencilAttachmentSamples; +} VkAttachmentSampleCountInfoAMD; + + + +// VK_AMD_shader_fragment_mask is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_shader_fragment_mask 1 +#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1 +#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask" + + +// VK_EXT_inline_uniform_block is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_inline_uniform_block 1 +#define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1 +#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block" +typedef VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesEXT; + +typedef VkPhysicalDeviceInlineUniformBlockProperties VkPhysicalDeviceInlineUniformBlockPropertiesEXT; + +typedef VkWriteDescriptorSetInlineUniformBlock VkWriteDescriptorSetInlineUniformBlockEXT; + +typedef VkDescriptorPoolInlineUniformBlockCreateInfo VkDescriptorPoolInlineUniformBlockCreateInfoEXT; + + + +// VK_EXT_shader_stencil_export is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_stencil_export 1 +#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1 +#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export" + + +// VK_EXT_sample_locations is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_sample_locations 1 +#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1 +#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations" +typedef struct VkSampleLocationEXT { + float x; + float y; +} VkSampleLocationEXT; + +typedef struct VkSampleLocationsInfoEXT { + VkStructureType sType; + const void* pNext; + VkSampleCountFlagBits sampleLocationsPerPixel; + VkExtent2D sampleLocationGridSize; + uint32_t sampleLocationsCount; + const VkSampleLocationEXT* pSampleLocations; +} VkSampleLocationsInfoEXT; + +typedef struct VkAttachmentSampleLocationsEXT { + uint32_t attachmentIndex; + VkSampleLocationsInfoEXT sampleLocationsInfo; +} VkAttachmentSampleLocationsEXT; + +typedef struct VkSubpassSampleLocationsEXT { + uint32_t subpassIndex; + VkSampleLocationsInfoEXT sampleLocationsInfo; +} VkSubpassSampleLocationsEXT; + +typedef struct VkRenderPassSampleLocationsBeginInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t attachmentInitialSampleLocationsCount; + const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations; + uint32_t postSubpassSampleLocationsCount; + const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations; +} VkRenderPassSampleLocationsBeginInfoEXT; + +typedef struct VkPipelineSampleLocationsStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 sampleLocationsEnable; + VkSampleLocationsInfoEXT sampleLocationsInfo; +} VkPipelineSampleLocationsStateCreateInfoEXT; + +typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT { + VkStructureType sType; + void* pNext; + VkSampleCountFlags sampleLocationSampleCounts; + VkExtent2D maxSampleLocationGridSize; + float sampleLocationCoordinateRange[2]; + uint32_t sampleLocationSubPixelBits; + VkBool32 variableSampleLocations; +} VkPhysicalDeviceSampleLocationsPropertiesEXT; + +typedef struct VkMultisamplePropertiesEXT { + VkStructureType sType; + void* pNext; + VkExtent2D maxSampleLocationGridSize; +} VkMultisamplePropertiesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT( + VkCommandBuffer commandBuffer, + const VkSampleLocationsInfoEXT* pSampleLocationsInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT( + VkPhysicalDevice physicalDevice, + VkSampleCountFlagBits samples, + VkMultisamplePropertiesEXT* pMultisampleProperties); +#endif +#endif + + +// VK_EXT_blend_operation_advanced is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_blend_operation_advanced 1 +#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2 +#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced" + +typedef enum 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 = 0x7FFFFFFF +} VkBlendOverlapEXT; +typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 advancedBlendCoherentOperations; +} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT; + +typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t advancedBlendMaxColorAttachments; + VkBool32 advancedBlendIndependentBlend; + VkBool32 advancedBlendNonPremultipliedSrcColor; + VkBool32 advancedBlendNonPremultipliedDstColor; + VkBool32 advancedBlendCorrelatedOverlap; + VkBool32 advancedBlendAllOperations; +} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT; + +typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 srcPremultiplied; + VkBool32 dstPremultiplied; + VkBlendOverlapEXT blendOverlap; +} VkPipelineColorBlendAdvancedStateCreateInfoEXT; + + + +// VK_NV_fragment_coverage_to_color is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_fragment_coverage_to_color 1 +#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1 +#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color" +typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV; +typedef struct VkPipelineCoverageToColorStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCoverageToColorStateCreateFlagsNV flags; + VkBool32 coverageToColorEnable; + uint32_t coverageToColorLocation; +} VkPipelineCoverageToColorStateCreateInfoNV; + + + +// VK_NV_framebuffer_mixed_samples is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_framebuffer_mixed_samples 1 +#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1 +#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples" + +typedef enum 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 = 0x7FFFFFFF +} VkCoverageModulationModeNV; +typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV; +typedef struct VkPipelineCoverageModulationStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCoverageModulationStateCreateFlagsNV flags; + VkCoverageModulationModeNV coverageModulationMode; + VkBool32 coverageModulationTableEnable; + uint32_t coverageModulationTableCount; + const float* pCoverageModulationTable; +} VkPipelineCoverageModulationStateCreateInfoNV; + +typedef VkAttachmentSampleCountInfoAMD VkAttachmentSampleCountInfoNV; + + + +// VK_NV_fill_rectangle is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_fill_rectangle 1 +#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1 +#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle" + + +// VK_NV_shader_sm_builtins is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_shader_sm_builtins 1 +#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1 +#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins" +typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t shaderSMCount; + uint32_t shaderWarpsPerSM; +} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV; + +typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 shaderSMBuiltins; +} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV; + + + +// VK_EXT_post_depth_coverage is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_post_depth_coverage 1 +#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1 +#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage" + + +// VK_EXT_image_drm_format_modifier is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_image_drm_format_modifier 1 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 2 +#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier" +typedef struct VkDrmFormatModifierPropertiesEXT { + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + VkFormatFeatureFlags drmFormatModifierTilingFeatures; +} VkDrmFormatModifierPropertiesEXT; + +typedef struct VkDrmFormatModifierPropertiesListEXT { + VkStructureType sType; + void* pNext; + uint32_t drmFormatModifierCount; + VkDrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties; +} VkDrmFormatModifierPropertiesListEXT; + +typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT { + VkStructureType sType; + const void* pNext; + uint64_t drmFormatModifier; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; +} VkPhysicalDeviceImageDrmFormatModifierInfoEXT; + +typedef struct VkImageDrmFormatModifierListCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t drmFormatModifierCount; + const uint64_t* pDrmFormatModifiers; +} VkImageDrmFormatModifierListCreateInfoEXT; + +typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + const VkSubresourceLayout* pPlaneLayouts; +} VkImageDrmFormatModifierExplicitCreateInfoEXT; + +typedef struct VkImageDrmFormatModifierPropertiesEXT { + VkStructureType sType; + void* pNext; + uint64_t drmFormatModifier; +} VkImageDrmFormatModifierPropertiesEXT; + +typedef struct VkDrmFormatModifierProperties2EXT { + uint64_t drmFormatModifier; + uint32_t drmFormatModifierPlaneCount; + VkFormatFeatureFlags2 drmFormatModifierTilingFeatures; +} VkDrmFormatModifierProperties2EXT; + +typedef struct VkDrmFormatModifierPropertiesList2EXT { + VkStructureType sType; + void* pNext; + uint32_t drmFormatModifierCount; + VkDrmFormatModifierProperties2EXT* pDrmFormatModifierProperties; +} VkDrmFormatModifierPropertiesList2EXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT( + VkDevice device, + VkImage image, + VkImageDrmFormatModifierPropertiesEXT* pProperties); +#endif +#endif + + +// VK_EXT_validation_cache is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_validation_cache 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT) +#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1 +#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache" + +typedef enum VkValidationCacheHeaderVersionEXT { + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1, + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationCacheHeaderVersionEXT; +typedef VkFlags VkValidationCacheCreateFlagsEXT; +typedef struct VkValidationCacheCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkValidationCacheCreateFlagsEXT flags; + size_t initialDataSize; + const void* pInitialData; +} VkValidationCacheCreateInfoEXT; + +typedef struct VkShaderModuleValidationCacheCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkValidationCacheEXT validationCache; +} VkShaderModuleValidationCacheCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache); +typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches); +typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT( + VkDevice device, + const VkValidationCacheCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkValidationCacheEXT* pValidationCache); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT( + VkDevice device, + VkValidationCacheEXT validationCache, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT( + VkDevice device, + VkValidationCacheEXT dstCache, + uint32_t srcCacheCount, + const VkValidationCacheEXT* pSrcCaches); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT( + VkDevice device, + VkValidationCacheEXT validationCache, + size_t* pDataSize, + void* pData); +#endif +#endif + + +// VK_EXT_descriptor_indexing is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_descriptor_indexing 1 +#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2 +#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing" +typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT; + +typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT; + +typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT; + +typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT; + +typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT; + +typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT; + +typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT; + + + +// VK_EXT_shader_viewport_index_layer is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_viewport_index_layer 1 +#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1 +#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer" + + +// VK_NV_shading_rate_image is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_shading_rate_image 1 +#define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3 +#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image" + +typedef enum 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 = 0x7FFFFFFF +} VkShadingRatePaletteEntryNV; + +typedef enum 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 = 0x7FFFFFFF +} VkCoarseSampleOrderTypeNV; +typedef struct VkShadingRatePaletteNV { + uint32_t shadingRatePaletteEntryCount; + const VkShadingRatePaletteEntryNV* pShadingRatePaletteEntries; +} VkShadingRatePaletteNV; + +typedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 shadingRateImageEnable; + uint32_t viewportCount; + const VkShadingRatePaletteNV* pShadingRatePalettes; +} VkPipelineViewportShadingRateImageStateCreateInfoNV; + +typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 shadingRateImage; + VkBool32 shadingRateCoarseSampleOrder; +} VkPhysicalDeviceShadingRateImageFeaturesNV; + +typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV { + VkStructureType sType; + void* pNext; + VkExtent2D shadingRateTexelSize; + uint32_t shadingRatePaletteSize; + uint32_t shadingRateMaxCoarseSamples; +} VkPhysicalDeviceShadingRateImagePropertiesNV; + +typedef struct VkCoarseSampleLocationNV { + uint32_t pixelX; + uint32_t pixelY; + uint32_t sample; +} VkCoarseSampleLocationNV; + +typedef struct VkCoarseSampleOrderCustomNV { + VkShadingRatePaletteEntryNV shadingRate; + uint32_t sampleCount; + uint32_t sampleLocationCount; + const VkCoarseSampleLocationNV* pSampleLocations; +} VkCoarseSampleOrderCustomNV; + +typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkCoarseSampleOrderTypeNV sampleOrderType; + uint32_t customSampleOrderCount; + const VkCoarseSampleOrderCustomNV* pCustomSampleOrders; +} VkPipelineViewportCoarseSampleOrderStateCreateInfoNV; + +typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV( + VkCommandBuffer commandBuffer, + VkImageView imageView, + VkImageLayout imageLayout); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV( + VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkShadingRatePaletteNV* pShadingRatePalettes); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV( + VkCommandBuffer commandBuffer, + VkCoarseSampleOrderTypeNV sampleOrderType, + uint32_t customSampleOrderCount, + const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); +#endif +#endif + + +// VK_NV_ray_tracing is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_ray_tracing 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV) +#define VK_NV_RAY_TRACING_SPEC_VERSION 3 +#define VK_NV_RAY_TRACING_EXTENSION_NAME "VK_NV_ray_tracing" +#define VK_SHADER_UNUSED_KHR (~0U) +#define VK_SHADER_UNUSED_NV VK_SHADER_UNUSED_KHR + +typedef enum 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 = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkRayTracingShaderGroupTypeKHR; +typedef VkRayTracingShaderGroupTypeKHR VkRayTracingShaderGroupTypeNV; + + +typedef enum VkGeometryTypeKHR { + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0, + VK_GEOMETRY_TYPE_AABBS_KHR = 1, + VK_GEOMETRY_TYPE_INSTANCES_KHR = 2, + VK_GEOMETRY_TYPE_SPHERES_NV = 1000429004, + VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV = 1000429005, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX = 1000478000, +#endif + VK_GEOMETRY_TYPE_TRIANGLES_NV = VK_GEOMETRY_TYPE_TRIANGLES_KHR, + VK_GEOMETRY_TYPE_AABBS_NV = VK_GEOMETRY_TYPE_AABBS_KHR, + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryTypeKHR; +typedef VkGeometryTypeKHR VkGeometryTypeNV; + +typedef VkAccelerationStructureTypeKHR VkAccelerationStructureTypeNV; + + +typedef enum 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 = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR, + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR, + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF +} VkCopyAccelerationStructureModeKHR; +typedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV; + + +typedef enum 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 = 0x7FFFFFFF +} VkAccelerationStructureMemoryRequirementsTypeNV; + +typedef enum VkGeometryFlagBitsKHR { + VK_GEOMETRY_OPAQUE_BIT_KHR = 0x00000001, + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0x00000002, + VK_GEOMETRY_OPAQUE_BIT_NV = VK_GEOMETRY_OPAQUE_BIT_KHR, + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR, + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryFlagBitsKHR; +typedef VkFlags VkGeometryFlagsKHR; +typedef VkGeometryFlagsKHR VkGeometryFlagsNV; + +typedef VkGeometryFlagBitsKHR VkGeometryFlagBitsNV; + + +typedef enum VkGeometryInstanceFlagBitsKHR { + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0x00000001, + VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 0x00000002, + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004, + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008, + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT = 0x00000010, + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 0x00000020, + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR, + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR, + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR, + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR, + // VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT is a legacy alias + VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT, + // VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT is a legacy alias + VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT, + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkGeometryInstanceFlagBitsKHR; +typedef VkFlags VkGeometryInstanceFlagsKHR; +typedef VkGeometryInstanceFlagsKHR VkGeometryInstanceFlagsNV; + +typedef VkGeometryInstanceFlagBitsKHR VkGeometryInstanceFlagBitsNV; + + +typedef enum VkBuildAccelerationStructureFlagBitsKHR { + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0x00000001, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0x00000002, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0x00000004, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0x00000008, + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0x00000010, + VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0x00000020, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT = 0x00000040, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT = 0x00000080, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT = 0x00000100, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV = 0x00000200, +#endif + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR = 0x00000800, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_CLUSTER_OPACITY_MICROMAPS_BIT_NV = 0x00001000, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR, + // VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT is a legacy alias + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT, + // VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT is a legacy alias + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT, + // VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT is a legacy alias + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT, +#ifdef VK_ENABLE_BETA_EXTENSIONS + // VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV is a legacy alias + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV, +#endif + // VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR is a legacy alias + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR, + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF +} VkBuildAccelerationStructureFlagBitsKHR; +typedef VkFlags VkBuildAccelerationStructureFlagsKHR; +typedef VkBuildAccelerationStructureFlagsKHR VkBuildAccelerationStructureFlagsNV; + +typedef VkBuildAccelerationStructureFlagBitsKHR VkBuildAccelerationStructureFlagBitsNV; + +typedef struct VkRayTracingShaderGroupCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkRayTracingShaderGroupTypeKHR type; + uint32_t generalShader; + uint32_t closestHitShader; + uint32_t anyHitShader; + uint32_t intersectionShader; +} VkRayTracingShaderGroupCreateInfoNV; + +typedef struct VkRayTracingPipelineCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + uint32_t groupCount; + const VkRayTracingShaderGroupCreateInfoNV* pGroups; + uint32_t maxRecursionDepth; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkRayTracingPipelineCreateInfoNV; + +typedef struct VkGeometryTrianglesNV { + VkStructureType sType; + const void* pNext; + VkBuffer vertexData; + VkDeviceSize vertexOffset; + uint32_t vertexCount; + VkDeviceSize vertexStride; + VkFormat vertexFormat; + VkBuffer indexData; + VkDeviceSize indexOffset; + uint32_t indexCount; + VkIndexType indexType; + VkBuffer transformData; + VkDeviceSize transformOffset; +} VkGeometryTrianglesNV; + +typedef struct VkGeometryAABBNV { + VkStructureType sType; + const void* pNext; + VkBuffer aabbData; + uint32_t numAABBs; + uint32_t stride; + VkDeviceSize offset; +} VkGeometryAABBNV; + +typedef struct VkGeometryDataNV { + VkGeometryTrianglesNV triangles; + VkGeometryAABBNV aabbs; +} VkGeometryDataNV; + +typedef struct VkGeometryNV { + VkStructureType sType; + const void* pNext; + VkGeometryTypeKHR geometryType; + VkGeometryDataNV geometry; + VkGeometryFlagsKHR flags; +} VkGeometryNV; + +typedef struct VkAccelerationStructureInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureTypeNV type; + VkBuildAccelerationStructureFlagsNV flags; + uint32_t instanceCount; + uint32_t geometryCount; + const VkGeometryNV* pGeometries; +} VkAccelerationStructureInfoNV; + +typedef struct VkAccelerationStructureCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceSize compactedSize; + VkAccelerationStructureInfoNV info; +} VkAccelerationStructureCreateInfoNV; + +typedef struct VkBindAccelerationStructureMemoryInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureNV accelerationStructure; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; + uint32_t deviceIndexCount; + const uint32_t* pDeviceIndices; +} VkBindAccelerationStructureMemoryInfoNV; + +typedef struct VkWriteDescriptorSetAccelerationStructureNV { + VkStructureType sType; + const void* pNext; + uint32_t accelerationStructureCount; + const VkAccelerationStructureNV* pAccelerationStructures; +} VkWriteDescriptorSetAccelerationStructureNV; + +typedef struct VkAccelerationStructureMemoryRequirementsInfoNV { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureMemoryRequirementsTypeNV type; + VkAccelerationStructureNV accelerationStructure; +} VkAccelerationStructureMemoryRequirementsInfoNV; + +typedef struct VkPhysicalDeviceRayTracingPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t shaderGroupHandleSize; + uint32_t maxRecursionDepth; + uint32_t maxShaderGroupStride; + uint32_t shaderGroupBaseAlignment; + uint64_t maxGeometryCount; + uint64_t maxInstanceCount; + uint64_t maxTriangleCount; + uint32_t maxDescriptorSetAccelerationStructures; +} VkPhysicalDeviceRayTracingPropertiesNV; + +typedef struct VkTransformMatrixKHR { + float matrix[3][4]; +} VkTransformMatrixKHR; + +typedef VkTransformMatrixKHR VkTransformMatrixNV; + +typedef struct VkAabbPositionsKHR { + float minX; + float minY; + float minZ; + float maxX; + float maxY; + float maxZ; +} VkAabbPositionsKHR; + +typedef VkAabbPositionsKHR VkAabbPositionsNV; + +typedef struct VkAccelerationStructureInstanceKHR { + VkTransformMatrixKHR transform; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureInstanceKHR; + +typedef VkAccelerationStructureInstanceKHR VkAccelerationStructureInstanceNV; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure); +typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements); +typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode); +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); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); +typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, uint32_t shader); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV( + VkDevice device, + const VkAccelerationStructureCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkAccelerationStructureNV* pAccelerationStructure); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV( + VkDevice device, + VkAccelerationStructureNV accelerationStructure, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV( + VkDevice device, + const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, + VkMemoryRequirements2KHR* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV( + VkDevice device, + uint32_t bindInfoCount, + const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV( + VkCommandBuffer commandBuffer, + const VkAccelerationStructureInfoNV* pInfo, + VkBuffer instanceData, + VkDeviceSize instanceOffset, + VkBool32 update, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkBuffer scratch, + VkDeviceSize scratchOffset); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV( + VkCommandBuffer commandBuffer, + VkAccelerationStructureNV dst, + VkAccelerationStructureNV src, + VkCopyAccelerationStructureModeKHR mode); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL 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); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV( + VkDevice device, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkRayTracingPipelineCreateInfoNV* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV( + VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV( + VkDevice device, + VkAccelerationStructureNV accelerationStructure, + size_t dataSize, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV( + VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + const VkAccelerationStructureNV* pAccelerationStructures, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV( + VkDevice device, + VkPipeline pipeline, + uint32_t shader); +#endif +#endif + + +// VK_NV_representative_fragment_test is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_representative_fragment_test 1 +#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2 +#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test" +typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 representativeFragmentTest; +} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV; + +typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 representativeFragmentTestEnable; +} VkPipelineRepresentativeFragmentTestStateCreateInfoNV; + + + +// VK_EXT_filter_cubic is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_filter_cubic 1 +#define VK_EXT_FILTER_CUBIC_SPEC_VERSION 3 +#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic" +typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT { + VkStructureType sType; + void* pNext; + VkImageViewType imageViewType; +} VkPhysicalDeviceImageViewImageFormatInfoEXT; + +typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 filterCubic; + VkBool32 filterCubicMinmax; +} VkFilterCubicImageViewImageFormatPropertiesEXT; + + + +// VK_QCOM_render_pass_shader_resolve is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_render_pass_shader_resolve 1 +#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION 4 +#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME "VK_QCOM_render_pass_shader_resolve" + + +// VK_QCOM_cooperative_matrix_conversion is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_cooperative_matrix_conversion 1 +#define VK_QCOM_COOPERATIVE_MATRIX_CONVERSION_SPEC_VERSION 1 +#define VK_QCOM_COOPERATIVE_MATRIX_CONVERSION_EXTENSION_NAME "VK_QCOM_cooperative_matrix_conversion" +typedef struct VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 cooperativeMatrixConversion; +} VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM; + + + +// VK_EXT_global_priority is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_global_priority 1 +#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2 +#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority" +typedef VkQueueGlobalPriority VkQueueGlobalPriorityEXT; + +typedef VkDeviceQueueGlobalPriorityCreateInfo VkDeviceQueueGlobalPriorityCreateInfoEXT; + + + +// VK_EXT_external_memory_host is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_external_memory_host 1 +#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1 +#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host" +typedef struct VkImportMemoryHostPointerInfoEXT { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + void* pHostPointer; +} VkImportMemoryHostPointerInfoEXT; + +typedef struct VkMemoryHostPointerPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryHostPointerPropertiesEXT; + +typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize minImportedHostPointerAlignment; +} VkPhysicalDeviceExternalMemoryHostPropertiesEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHostPointer, + VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); +#endif +#endif + + +// VK_AMD_buffer_marker is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_buffer_marker 1 +#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1 +#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker" +typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); +typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD( + VkCommandBuffer commandBuffer, + VkPipelineStageFlagBits pipelineStage, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + uint32_t marker); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags2 stage, + VkBuffer dstBuffer, + VkDeviceSize dstOffset, + uint32_t marker); +#endif +#endif + + +// VK_AMD_pipeline_compiler_control is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_pipeline_compiler_control 1 +#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1 +#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME "VK_AMD_pipeline_compiler_control" + +typedef enum VkPipelineCompilerControlFlagBitsAMD { + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF +} VkPipelineCompilerControlFlagBitsAMD; +typedef VkFlags VkPipelineCompilerControlFlagsAMD; +typedef struct VkPipelineCompilerControlCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkPipelineCompilerControlFlagsAMD compilerControlFlags; +} VkPipelineCompilerControlCreateInfoAMD; + + + +// VK_EXT_calibrated_timestamps is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_calibrated_timestamps 1 +#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2 +#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps" +typedef VkTimeDomainKHR VkTimeDomainEXT; + +typedef VkCalibratedTimestampInfoKHR VkCalibratedTimestampInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainKHR* pTimeDomains); +typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoKHR* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + VkPhysicalDevice physicalDevice, + uint32_t* pTimeDomainCount, + VkTimeDomainKHR* pTimeDomains); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT( + VkDevice device, + uint32_t timestampCount, + const VkCalibratedTimestampInfoKHR* pTimestampInfos, + uint64_t* pTimestamps, + uint64_t* pMaxDeviation); +#endif +#endif + + +// VK_AMD_shader_core_properties is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_shader_core_properties 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2 +#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties" +typedef struct VkPhysicalDeviceShaderCorePropertiesAMD { + VkStructureType sType; + void* pNext; + uint32_t shaderEngineCount; + uint32_t shaderArraysPerEngineCount; + uint32_t computeUnitsPerShaderArray; + uint32_t simdPerComputeUnit; + uint32_t wavefrontsPerSimd; + uint32_t wavefrontSize; + uint32_t sgprsPerSimd; + uint32_t minSgprAllocation; + uint32_t maxSgprAllocation; + uint32_t sgprAllocationGranularity; + uint32_t vgprsPerSimd; + uint32_t minVgprAllocation; + uint32_t maxVgprAllocation; + uint32_t vgprAllocationGranularity; +} VkPhysicalDeviceShaderCorePropertiesAMD; + + + +// VK_AMD_memory_overallocation_behavior is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_memory_overallocation_behavior 1 +#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1 +#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior" + +typedef enum 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 = 0x7FFFFFFF +} VkMemoryOverallocationBehaviorAMD; +typedef struct VkDeviceMemoryOverallocationCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkMemoryOverallocationBehaviorAMD overallocationBehavior; +} VkDeviceMemoryOverallocationCreateInfoAMD; + + + +// VK_EXT_vertex_attribute_divisor is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_vertex_attribute_divisor 1 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3 +#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor" +typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxVertexAttribDivisor; +} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT; + +typedef VkVertexInputBindingDivisorDescription VkVertexInputBindingDivisorDescriptionEXT; + +typedef VkPipelineVertexInputDivisorStateCreateInfo VkPipelineVertexInputDivisorStateCreateInfoEXT; + +typedef VkPhysicalDeviceVertexAttributeDivisorFeatures VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT; + + + +// VK_EXT_pipeline_creation_feedback is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_pipeline_creation_feedback 1 +#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME "VK_EXT_pipeline_creation_feedback" +typedef VkPipelineCreationFeedbackFlagBits VkPipelineCreationFeedbackFlagBitsEXT; + +typedef VkPipelineCreationFeedbackFlags VkPipelineCreationFeedbackFlagsEXT; + +typedef VkPipelineCreationFeedbackCreateInfo VkPipelineCreationFeedbackCreateInfoEXT; + +typedef VkPipelineCreationFeedback VkPipelineCreationFeedbackEXT; + + + +// VK_NV_shader_subgroup_partitioned is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_shader_subgroup_partitioned 1 +#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1 +#define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned" + + +// VK_NV_compute_shader_derivatives is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_compute_shader_derivatives 1 +#define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1 +#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives" +typedef VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR VkPhysicalDeviceComputeShaderDerivativesFeaturesNV; + + + +// VK_NV_mesh_shader is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_mesh_shader 1 +#define VK_NV_MESH_SHADER_SPEC_VERSION 1 +#define VK_NV_MESH_SHADER_EXTENSION_NAME "VK_NV_mesh_shader" +typedef struct VkPhysicalDeviceMeshShaderFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 taskShader; + VkBool32 meshShader; +} VkPhysicalDeviceMeshShaderFeaturesNV; + +typedef struct VkPhysicalDeviceMeshShaderPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxDrawMeshTasksCount; + uint32_t maxTaskWorkGroupInvocations; + uint32_t maxTaskWorkGroupSize[3]; + uint32_t maxTaskTotalMemorySize; + uint32_t maxTaskOutputCount; + uint32_t maxMeshWorkGroupInvocations; + uint32_t maxMeshWorkGroupSize[3]; + uint32_t maxMeshTotalMemorySize; + uint32_t maxMeshOutputVertices; + uint32_t maxMeshOutputPrimitives; + uint32_t maxMeshMultiviewViewCount; + uint32_t meshOutputPerVertexGranularity; + uint32_t meshOutputPerPrimitiveGranularity; +} VkPhysicalDeviceMeshShaderPropertiesNV; + +typedef struct VkDrawMeshTasksIndirectCommandNV { + uint32_t taskCount; + uint32_t firstTask; +} VkDrawMeshTasksIndirectCommandNV; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV( + VkCommandBuffer commandBuffer, + uint32_t taskCount, + uint32_t firstTask); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif +#endif + + +// VK_NV_fragment_shader_barycentric is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_fragment_shader_barycentric 1 +#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 +#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric" +typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV; + + + +// VK_NV_shader_image_footprint is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_shader_image_footprint 1 +#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2 +#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint" +typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 imageFootprint; +} VkPhysicalDeviceShaderImageFootprintFeaturesNV; + + + +// VK_NV_scissor_exclusive is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_scissor_exclusive 1 +#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 2 +#define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive" +typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t exclusiveScissorCount; + const VkRect2D* pExclusiveScissors; +} VkPipelineViewportExclusiveScissorStateCreateInfoNV; + +typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 exclusiveScissor; +} VkPhysicalDeviceExclusiveScissorFeaturesNV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorEnableNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkBool32* pExclusiveScissorEnables); +typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorEnableNV( + VkCommandBuffer commandBuffer, + uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + const VkBool32* pExclusiveScissorEnables); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV( + VkCommandBuffer commandBuffer, + uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + const VkRect2D* pExclusiveScissors); +#endif +#endif + + +// VK_NV_device_diagnostic_checkpoints is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_device_diagnostic_checkpoints 1 +#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2 +#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints" +typedef struct VkQueueFamilyCheckpointPropertiesNV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags checkpointExecutionStageMask; +} VkQueueFamilyCheckpointPropertiesNV; + +typedef struct VkCheckpointDataNV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlagBits stage; + void* pCheckpointMarker; +} VkCheckpointDataNV; + +typedef struct VkQueueFamilyCheckpointProperties2NV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags2 checkpointExecutionStageMask; +} VkQueueFamilyCheckpointProperties2NV; + +typedef struct VkCheckpointData2NV { + VkStructureType sType; + void* pNext; + VkPipelineStageFlags2 stage; + void* pCheckpointMarker; +} VkCheckpointData2NV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker); +typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData); +typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCheckpointNV( + VkCommandBuffer commandBuffer, + const void* pCheckpointMarker); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV( + VkQueue queue, + uint32_t* pCheckpointDataCount, + VkCheckpointDataNV* pCheckpointData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV( + VkQueue queue, + uint32_t* pCheckpointDataCount, + VkCheckpointData2NV* pCheckpointData); +#endif +#endif + + +// VK_EXT_present_timing is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_present_timing 1 +#define VK_EXT_PRESENT_TIMING_SPEC_VERSION 3 +#define VK_EXT_PRESENT_TIMING_EXTENSION_NAME "VK_EXT_present_timing" + +typedef enum VkPresentStageFlagBitsEXT { + VK_PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT = 0x00000001, + VK_PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT = 0x00000002, + VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT = 0x00000004, + VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT = 0x00000008, + VK_PRESENT_STAGE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkPresentStageFlagBitsEXT; +typedef VkFlags VkPresentStageFlagsEXT; + +typedef enum VkPastPresentationTimingFlagBitsEXT { + VK_PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT = 0x00000001, + VK_PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT = 0x00000002, + VK_PAST_PRESENTATION_TIMING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkPastPresentationTimingFlagBitsEXT; +typedef VkFlags VkPastPresentationTimingFlagsEXT; + +typedef enum VkPresentTimingInfoFlagBitsEXT { + VK_PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT = 0x00000001, + VK_PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT = 0x00000002, + VK_PRESENT_TIMING_INFO_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkPresentTimingInfoFlagBitsEXT; +typedef VkFlags VkPresentTimingInfoFlagsEXT; +typedef struct VkPhysicalDevicePresentTimingFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 presentTiming; + VkBool32 presentAtAbsoluteTime; + VkBool32 presentAtRelativeTime; +} VkPhysicalDevicePresentTimingFeaturesEXT; + +typedef struct VkPresentTimingSurfaceCapabilitiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 presentTimingSupported; + VkBool32 presentAtAbsoluteTimeSupported; + VkBool32 presentAtRelativeTimeSupported; + VkPresentStageFlagsEXT presentStageQueries; +} VkPresentTimingSurfaceCapabilitiesEXT; + +typedef struct VkSwapchainCalibratedTimestampInfoEXT { + VkStructureType sType; + const void* pNext; + VkSwapchainKHR swapchain; + VkPresentStageFlagsEXT presentStage; + uint64_t timeDomainId; +} VkSwapchainCalibratedTimestampInfoEXT; + +typedef struct VkSwapchainTimingPropertiesEXT { + VkStructureType sType; + void* pNext; + uint64_t refreshDuration; + uint64_t refreshInterval; +} VkSwapchainTimingPropertiesEXT; + +typedef struct VkSwapchainTimeDomainPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t timeDomainCount; + VkTimeDomainKHR* pTimeDomains; + uint64_t* pTimeDomainIds; +} VkSwapchainTimeDomainPropertiesEXT; + +typedef struct VkPastPresentationTimingInfoEXT { + VkStructureType sType; + const void* pNext; + VkPastPresentationTimingFlagsEXT flags; + VkSwapchainKHR swapchain; +} VkPastPresentationTimingInfoEXT; + +typedef struct VkPresentStageTimeEXT { + VkPresentStageFlagsEXT stage; + uint64_t time; +} VkPresentStageTimeEXT; + +typedef struct VkPastPresentationTimingEXT { + VkStructureType sType; + void* pNext; + uint64_t presentId; + uint64_t targetTime; + uint32_t presentStageCount; + VkPresentStageTimeEXT* pPresentStages; + VkTimeDomainKHR timeDomain; + uint64_t timeDomainId; + VkBool32 reportComplete; +} VkPastPresentationTimingEXT; + +typedef struct VkPastPresentationTimingPropertiesEXT { + VkStructureType sType; + void* pNext; + uint64_t timingPropertiesCounter; + uint64_t timeDomainsCounter; + uint32_t presentationTimingCount; + VkPastPresentationTimingEXT* pPresentationTimings; +} VkPastPresentationTimingPropertiesEXT; + +typedef struct VkPresentTimingInfoEXT { + VkStructureType sType; + const void* pNext; + VkPresentTimingInfoFlagsEXT flags; + uint64_t targetTime; + uint64_t timeDomainId; + VkPresentStageFlagsEXT presentStageQueries; + VkPresentStageFlagsEXT targetTimeDomainPresentStage; +} VkPresentTimingInfoEXT; + +typedef struct VkPresentTimingsInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t swapchainCount; + const VkPresentTimingInfoEXT* pTimingInfos; +} VkPresentTimingsInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkSetSwapchainPresentTimingQueueSizeEXT)(VkDevice device, VkSwapchainKHR swapchain, uint32_t size); +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainTimingPropertiesEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSwapchainTimingPropertiesEXT* pSwapchainTimingProperties, uint64_t* pSwapchainTimingPropertiesCounter); +typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainTimeDomainPropertiesEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSwapchainTimeDomainPropertiesEXT* pSwapchainTimeDomainProperties, uint64_t* pTimeDomainsCounter); +typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingEXT)(VkDevice device, const VkPastPresentationTimingInfoEXT* pPastPresentationTimingInfo, VkPastPresentationTimingPropertiesEXT* pPastPresentationTimingProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkSetSwapchainPresentTimingQueueSizeEXT( + VkDevice device, + VkSwapchainKHR swapchain, + uint32_t size); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainTimingPropertiesEXT( + VkDevice device, + VkSwapchainKHR swapchain, + VkSwapchainTimingPropertiesEXT* pSwapchainTimingProperties, + uint64_t* pSwapchainTimingPropertiesCounter); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainTimeDomainPropertiesEXT( + VkDevice device, + VkSwapchainKHR swapchain, + VkSwapchainTimeDomainPropertiesEXT* pSwapchainTimeDomainProperties, + uint64_t* pTimeDomainsCounter); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingEXT( + VkDevice device, + const VkPastPresentationTimingInfoEXT* pPastPresentationTimingInfo, + VkPastPresentationTimingPropertiesEXT* pPastPresentationTimingProperties); +#endif +#endif + + +// VK_INTEL_shader_integer_functions2 is a preprocessor guard. Do not pass it to API calls. +#define VK_INTEL_shader_integer_functions2 1 +#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1 +#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2" +typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL { + VkStructureType sType; + void* pNext; + VkBool32 shaderIntegerFunctions2; +} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + + + +// VK_INTEL_performance_query is a preprocessor guard. Do not pass it to API calls. +#define VK_INTEL_performance_query 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL) +#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2 +#define VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME "VK_INTEL_performance_query" + +typedef enum VkPerformanceConfigurationTypeINTEL { + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0, + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkPerformanceConfigurationTypeINTEL; + +typedef enum VkQueryPoolSamplingModeINTEL { + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0, + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 0x7FFFFFFF +} VkQueryPoolSamplingModeINTEL; + +typedef enum 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 = 0x7FFFFFFF +} VkPerformanceOverrideTypeINTEL; + +typedef enum 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 = 0x7FFFFFFF +} VkPerformanceParameterTypeINTEL; + +typedef enum 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 = 0x7FFFFFFF +} VkPerformanceValueTypeINTEL; +typedef union VkPerformanceValueDataINTEL { + uint32_t value32; + uint64_t value64; + float valueFloat; + VkBool32 valueBool; + const char* valueString; +} VkPerformanceValueDataINTEL; + +typedef struct VkPerformanceValueINTEL { + VkPerformanceValueTypeINTEL type; + VkPerformanceValueDataINTEL data; +} VkPerformanceValueINTEL; + +typedef struct VkInitializePerformanceApiInfoINTEL { + VkStructureType sType; + const void* pNext; + void* pUserData; +} VkInitializePerformanceApiInfoINTEL; + +typedef struct VkQueryPoolPerformanceQueryCreateInfoINTEL { + VkStructureType sType; + const void* pNext; + VkQueryPoolSamplingModeINTEL performanceCountersSampling; +} VkQueryPoolPerformanceQueryCreateInfoINTEL; + +typedef VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolCreateInfoINTEL; + +typedef struct VkPerformanceMarkerInfoINTEL { + VkStructureType sType; + const void* pNext; + uint64_t marker; +} VkPerformanceMarkerInfoINTEL; + +typedef struct VkPerformanceStreamMarkerInfoINTEL { + VkStructureType sType; + const void* pNext; + uint32_t marker; +} VkPerformanceStreamMarkerInfoINTEL; + +typedef struct VkPerformanceOverrideInfoINTEL { + VkStructureType sType; + const void* pNext; + VkPerformanceOverrideTypeINTEL type; + VkBool32 enable; + uint64_t parameter; +} VkPerformanceOverrideInfoINTEL; + +typedef struct VkPerformanceConfigurationAcquireInfoINTEL { + VkStructureType sType; + const void* pNext; + VkPerformanceConfigurationTypeINTEL type; +} VkPerformanceConfigurationAcquireInfoINTEL; + +typedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); +typedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice device); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceStreamMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceOverrideINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo); +typedef VkResult (VKAPI_PTR *PFN_vkAcquirePerformanceConfigurationINTEL)(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration); +typedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice device, VkPerformanceConfigurationINTEL configuration); +typedef VkResult (VKAPI_PTR *PFN_vkQueueSetPerformanceConfigurationINTEL)(VkQueue queue, VkPerformanceConfigurationINTEL configuration); +typedef VkResult (VKAPI_PTR *PFN_vkGetPerformanceParameterINTEL)(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkInitializePerformanceApiINTEL( + VkDevice device, + const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkUninitializePerformanceApiINTEL( + VkDevice device); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceMarkerINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceMarkerInfoINTEL* pMarkerInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceStreamMarkerINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceOverrideINTEL( + VkCommandBuffer commandBuffer, + const VkPerformanceOverrideInfoINTEL* pOverrideInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquirePerformanceConfigurationINTEL( + VkDevice device, + const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, + VkPerformanceConfigurationINTEL* pConfiguration); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL( + VkDevice device, + VkPerformanceConfigurationINTEL configuration); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerformanceConfigurationINTEL( + VkQueue queue, + VkPerformanceConfigurationINTEL configuration); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL( + VkDevice device, + VkPerformanceParameterTypeINTEL parameter, + VkPerformanceValueINTEL* pValue); +#endif +#endif + + +// VK_EXT_pci_bus_info is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_pci_bus_info 1 +#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2 +#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info" +typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t pciDomain; + uint32_t pciBus; + uint32_t pciDevice; + uint32_t pciFunction; +} VkPhysicalDevicePCIBusInfoPropertiesEXT; + + + +// VK_AMD_display_native_hdr is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_display_native_hdr 1 +#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1 +#define VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME "VK_AMD_display_native_hdr" +typedef struct VkDisplayNativeHdrSurfaceCapabilitiesAMD { + VkStructureType sType; + void* pNext; + VkBool32 localDimmingSupport; +} VkDisplayNativeHdrSurfaceCapabilitiesAMD; + +typedef struct VkSwapchainDisplayNativeHdrCreateInfoAMD { + VkStructureType sType; + const void* pNext; + VkBool32 localDimmingEnable; +} VkSwapchainDisplayNativeHdrCreateInfoAMD; + +typedef void (VKAPI_PTR *PFN_vkSetLocalDimmingAMD)(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD( + VkDevice device, + VkSwapchainKHR swapChain, + VkBool32 localDimmingEnable); +#endif +#endif + + +// VK_EXT_fragment_density_map is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_fragment_density_map 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 3 +#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map" +typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMap; + VkBool32 fragmentDensityMapDynamic; + VkBool32 fragmentDensityMapNonSubsampledImages; +} VkPhysicalDeviceFragmentDensityMapFeaturesEXT; + +typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT { + VkStructureType sType; + void* pNext; + VkExtent2D minFragmentDensityTexelSize; + VkExtent2D maxFragmentDensityTexelSize; + VkBool32 fragmentDensityInvocations; +} VkPhysicalDeviceFragmentDensityMapPropertiesEXT; + +typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkAttachmentReference fragmentDensityMapAttachment; +} VkRenderPassFragmentDensityMapCreateInfoEXT; + +typedef struct VkRenderingFragmentDensityMapAttachmentInfoEXT { + VkStructureType sType; + const void* pNext; + VkImageView imageView; + VkImageLayout imageLayout; +} VkRenderingFragmentDensityMapAttachmentInfoEXT; + + + +// VK_EXT_scalar_block_layout is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_scalar_block_layout 1 +#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1 +#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout" +typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT; + + + +// VK_GOOGLE_hlsl_functionality1 is a preprocessor guard. Do not pass it to API calls. +#define VK_GOOGLE_hlsl_functionality1 1 +#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION 1 +#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1" +// VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION is a legacy alias +#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION +// VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME is a legacy alias +#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME + + +// VK_GOOGLE_decorate_string is a preprocessor guard. Do not pass it to API calls. +#define VK_GOOGLE_decorate_string 1 +#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1 +#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string" + + +// VK_EXT_subgroup_size_control is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_subgroup_size_control 1 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2 +#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control" +typedef VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesEXT; + +typedef VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesEXT; + +typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; + + + +// VK_AMD_shader_core_properties2 is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_shader_core_properties2 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1 +#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2" + +typedef enum VkShaderCorePropertiesFlagBitsAMD { + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF +} VkShaderCorePropertiesFlagBitsAMD; +typedef VkFlags VkShaderCorePropertiesFlagsAMD; +typedef struct VkPhysicalDeviceShaderCoreProperties2AMD { + VkStructureType sType; + void* pNext; + VkShaderCorePropertiesFlagsAMD shaderCoreFeatures; + uint32_t activeComputeUnitCount; +} VkPhysicalDeviceShaderCoreProperties2AMD; + + + +// VK_AMD_device_coherent_memory is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_device_coherent_memory 1 +#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1 +#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME "VK_AMD_device_coherent_memory" +typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD { + VkStructureType sType; + void* pNext; + VkBool32 deviceCoherentMemory; +} VkPhysicalDeviceCoherentMemoryFeaturesAMD; + + + +// VK_EXT_shader_image_atomic_int64 is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_image_atomic_int64 1 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1 +#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64" +typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderImageInt64Atomics; + VkBool32 sparseImageInt64Atomics; +} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + + + +// VK_EXT_memory_budget is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_memory_budget 1 +#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1 +#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget" +typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize heapBudget[VK_MAX_MEMORY_HEAPS]; + VkDeviceSize heapUsage[VK_MAX_MEMORY_HEAPS]; +} VkPhysicalDeviceMemoryBudgetPropertiesEXT; + + + +// VK_EXT_memory_priority is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_memory_priority 1 +#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1 +#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority" +typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 memoryPriority; +} VkPhysicalDeviceMemoryPriorityFeaturesEXT; + +typedef struct VkMemoryPriorityAllocateInfoEXT { + VkStructureType sType; + const void* pNext; + float priority; +} VkMemoryPriorityAllocateInfoEXT; + + + +// VK_NV_dedicated_allocation_image_aliasing is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_dedicated_allocation_image_aliasing 1 +#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1 +#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing" +typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 dedicatedAllocationImageAliasing; +} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + + + +// VK_EXT_buffer_device_address is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_buffer_device_address 1 +#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2 +#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address" +typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 bufferDeviceAddress; + VkBool32 bufferDeviceAddressCaptureReplay; + VkBool32 bufferDeviceAddressMultiDevice; +} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT; + +typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT; + +typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT; + +typedef struct VkBufferDeviceAddressCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceAddress deviceAddress; +} VkBufferDeviceAddressCreateInfoEXT; + +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT( + VkDevice device, + const VkBufferDeviceAddressInfo* pInfo); +#endif +#endif + + +// VK_EXT_tooling_info is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_tooling_info 1 +#define VK_EXT_TOOLING_INFO_SPEC_VERSION 1 +#define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info" +typedef VkToolPurposeFlagBits VkToolPurposeFlagBitsEXT; + +typedef VkToolPurposeFlags VkToolPurposeFlagsEXT; + +typedef VkPhysicalDeviceToolProperties VkPhysicalDeviceToolPropertiesEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT( + VkPhysicalDevice physicalDevice, + uint32_t* pToolCount, + VkPhysicalDeviceToolProperties* pToolProperties); +#endif +#endif + + +// VK_EXT_separate_stencil_usage is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_separate_stencil_usage 1 +#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1 +#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage" +typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT; + + + +// VK_EXT_validation_features is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_validation_features 1 +#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 6 +#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features" + +typedef enum 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 = 0x7FFFFFFF +} VkValidationFeatureEnableEXT; + +typedef enum 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_SHADER_VALIDATION_CACHE_EXT = 7, + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkValidationFeatureDisableEXT; +typedef struct VkValidationFeaturesEXT { + VkStructureType sType; + const void* pNext; + uint32_t enabledValidationFeatureCount; + const VkValidationFeatureEnableEXT* pEnabledValidationFeatures; + uint32_t disabledValidationFeatureCount; + const VkValidationFeatureDisableEXT* pDisabledValidationFeatures; +} VkValidationFeaturesEXT; + + + +// VK_NV_cooperative_matrix is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_cooperative_matrix 1 +#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1 +#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix" +typedef VkComponentTypeKHR VkComponentTypeNV; + +typedef VkScopeKHR VkScopeNV; + +typedef struct VkCooperativeMatrixPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t MSize; + uint32_t NSize; + uint32_t KSize; + VkComponentTypeNV AType; + VkComponentTypeNV BType; + VkComponentTypeNV CType; + VkComponentTypeNV DType; + VkScopeNV scope; +} VkCooperativeMatrixPropertiesNV; + +typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 cooperativeMatrix; + VkBool32 cooperativeMatrixRobustBufferAccess; +} VkPhysicalDeviceCooperativeMatrixFeaturesNV; + +typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV { + VkStructureType sType; + void* pNext; + VkShaderStageFlags cooperativeMatrixSupportedStages; +} VkPhysicalDeviceCooperativeMatrixPropertiesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkCooperativeMatrixPropertiesNV* pProperties); +#endif +#endif + + +// VK_NV_coverage_reduction_mode is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_coverage_reduction_mode 1 +#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1 +#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME "VK_NV_coverage_reduction_mode" + +typedef enum VkCoverageReductionModeNV { + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0, + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1, + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 0x7FFFFFFF +} VkCoverageReductionModeNV; +typedef VkFlags VkPipelineCoverageReductionStateCreateFlagsNV; +typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 coverageReductionMode; +} VkPhysicalDeviceCoverageReductionModeFeaturesNV; + +typedef struct VkPipelineCoverageReductionStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineCoverageReductionStateCreateFlagsNV flags; + VkCoverageReductionModeNV coverageReductionMode; +} VkPipelineCoverageReductionStateCreateInfoNV; + +typedef struct VkFramebufferMixedSamplesCombinationNV { + VkStructureType sType; + void* pNext; + VkCoverageReductionModeNV coverageReductionMode; + VkSampleCountFlagBits rasterizationSamples; + VkSampleCountFlags depthStencilSamples; + VkSampleCountFlags colorSamples; +} VkFramebufferMixedSamplesCombinationNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)(VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + VkPhysicalDevice physicalDevice, + uint32_t* pCombinationCount, + VkFramebufferMixedSamplesCombinationNV* pCombinations); +#endif +#endif + + +// VK_EXT_fragment_shader_interlock is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_fragment_shader_interlock 1 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1 +#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock" +typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShaderSampleInterlock; + VkBool32 fragmentShaderPixelInterlock; + VkBool32 fragmentShaderShadingRateInterlock; +} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT; + + + +// VK_EXT_ycbcr_image_arrays is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_ycbcr_image_arrays 1 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1 +#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays" +typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 ycbcrImageArrays; +} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT; + + + +// VK_EXT_provoking_vertex is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_provoking_vertex 1 +#define VK_EXT_PROVOKING_VERTEX_SPEC_VERSION 1 +#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex" + +typedef enum VkProvokingVertexModeEXT { + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0, + VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1, + VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkProvokingVertexModeEXT; +typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 provokingVertexLast; + VkBool32 transformFeedbackPreservesProvokingVertex; +} VkPhysicalDeviceProvokingVertexFeaturesEXT; + +typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 provokingVertexModePerPipeline; + VkBool32 transformFeedbackPreservesTriangleFanProvokingVertex; +} VkPhysicalDeviceProvokingVertexPropertiesEXT; + +typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkProvokingVertexModeEXT provokingVertexMode; +} VkPipelineRasterizationProvokingVertexStateCreateInfoEXT; + + + +// VK_EXT_headless_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_headless_surface 1 +#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1 +#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface" +typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT; +typedef struct VkHeadlessSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkHeadlessSurfaceCreateFlagsEXT flags; +} VkHeadlessSurfaceCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT( + VkInstance instance, + const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif +#endif + + +// VK_EXT_line_rasterization is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_line_rasterization 1 +#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1 +#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization" +typedef VkLineRasterizationMode VkLineRasterizationModeEXT; + +typedef VkPhysicalDeviceLineRasterizationFeatures VkPhysicalDeviceLineRasterizationFeaturesEXT; + +typedef VkPhysicalDeviceLineRasterizationProperties VkPhysicalDeviceLineRasterizationPropertiesEXT; + +typedef VkPipelineRasterizationLineStateCreateInfo VkPipelineRasterizationLineStateCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT( + VkCommandBuffer commandBuffer, + uint32_t lineStippleFactor, + uint16_t lineStipplePattern); +#endif +#endif + + +// VK_EXT_shader_atomic_float is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_atomic_float 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float" +typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferFloat32Atomics; + VkBool32 shaderBufferFloat32AtomicAdd; + VkBool32 shaderBufferFloat64Atomics; + VkBool32 shaderBufferFloat64AtomicAdd; + VkBool32 shaderSharedFloat32Atomics; + VkBool32 shaderSharedFloat32AtomicAdd; + VkBool32 shaderSharedFloat64Atomics; + VkBool32 shaderSharedFloat64AtomicAdd; + VkBool32 shaderImageFloat32Atomics; + VkBool32 shaderImageFloat32AtomicAdd; + VkBool32 sparseImageFloat32Atomics; + VkBool32 sparseImageFloat32AtomicAdd; +} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT; + + + +// VK_EXT_host_query_reset is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_host_query_reset 1 +#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1 +#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset" +typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT( + VkDevice device, + VkQueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount); +#endif +#endif + + +// VK_EXT_index_type_uint8 is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_index_type_uint8 1 +#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1 +#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8" +typedef VkPhysicalDeviceIndexTypeUint8Features VkPhysicalDeviceIndexTypeUint8FeaturesEXT; + + + +// VK_EXT_extended_dynamic_state is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_extended_dynamic_state 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state" +typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 extendedDynamicState; +} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports); +typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors); +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); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT( + VkCommandBuffer commandBuffer, + VkCullModeFlags cullMode); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT( + VkCommandBuffer commandBuffer, + VkFrontFace frontFace); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT( + VkCommandBuffer commandBuffer, + VkPrimitiveTopology primitiveTopology); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT( + VkCommandBuffer commandBuffer, + uint32_t viewportCount, + const VkViewport* pViewports); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT( + VkCommandBuffer commandBuffer, + uint32_t scissorCount, + const VkRect2D* pScissors); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT( + VkCommandBuffer commandBuffer, + uint32_t firstBinding, + uint32_t bindingCount, + const VkBuffer* pBuffers, + const VkDeviceSize* pOffsets, + const VkDeviceSize* pSizes, + const VkDeviceSize* pStrides); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthTestEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthWriteEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT( + VkCommandBuffer commandBuffer, + VkCompareOp depthCompareOp); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthBoundsTestEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 stencilTestEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT( + VkCommandBuffer commandBuffer, + VkStencilFaceFlags faceMask, + VkStencilOp failOp, + VkStencilOp passOp, + VkStencilOp depthFailOp, + VkCompareOp compareOp); +#endif +#endif + + +// VK_EXT_host_image_copy is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_host_image_copy 1 +#define VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION 1 +#define VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME "VK_EXT_host_image_copy" +typedef VkHostImageCopyFlagBits VkHostImageCopyFlagBitsEXT; + +typedef VkHostImageCopyFlags VkHostImageCopyFlagsEXT; + +typedef VkPhysicalDeviceHostImageCopyFeatures VkPhysicalDeviceHostImageCopyFeaturesEXT; + +typedef VkPhysicalDeviceHostImageCopyProperties VkPhysicalDeviceHostImageCopyPropertiesEXT; + +typedef VkMemoryToImageCopy VkMemoryToImageCopyEXT; + +typedef VkImageToMemoryCopy VkImageToMemoryCopyEXT; + +typedef VkCopyMemoryToImageInfo VkCopyMemoryToImageInfoEXT; + +typedef VkCopyImageToMemoryInfo VkCopyImageToMemoryInfoEXT; + +typedef VkCopyImageToImageInfo VkCopyImageToImageInfoEXT; + +typedef VkHostImageLayoutTransitionInfo VkHostImageLayoutTransitionInfoEXT; + +typedef VkSubresourceHostMemcpySize VkSubresourceHostMemcpySizeEXT; + +typedef VkHostImageCopyDevicePerformanceQuery VkHostImageCopyDevicePerformanceQueryEXT; + +typedef VkSubresourceLayout2 VkSubresourceLayout2EXT; + +typedef VkImageSubresource2 VkImageSubresource2EXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToImageEXT)(VkDevice device, const VkCopyMemoryToImageInfo* pCopyMemoryToImageInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyImageToMemoryEXT)(VkDevice device, const VkCopyImageToMemoryInfo* pCopyImageToMemoryInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyImageToImageEXT)(VkDevice device, const VkCopyImageToImageInfo* pCopyImageToImageInfo); +typedef VkResult (VKAPI_PTR *PFN_vkTransitionImageLayoutEXT)(VkDevice device, uint32_t transitionCount, const VkHostImageLayoutTransitionInfo* pTransitions); +typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2EXT)(VkDevice device, VkImage image, const VkImageSubresource2* pSubresource, VkSubresourceLayout2* pLayout); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToImageEXT( + VkDevice device, + const VkCopyMemoryToImageInfo* pCopyMemoryToImageInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCopyImageToMemoryEXT( + VkDevice device, + const VkCopyImageToMemoryInfo* pCopyImageToMemoryInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCopyImageToImageEXT( + VkDevice device, + const VkCopyImageToImageInfo* pCopyImageToImageInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkTransitionImageLayoutEXT( + VkDevice device, + uint32_t transitionCount, + const VkHostImageLayoutTransitionInfo* pTransitions); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2EXT( + VkDevice device, + VkImage image, + const VkImageSubresource2* pSubresource, + VkSubresourceLayout2* pLayout); +#endif +#endif + + +// VK_EXT_map_memory_placed is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_map_memory_placed 1 +#define VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION 1 +#define VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME "VK_EXT_map_memory_placed" +typedef struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 memoryMapPlaced; + VkBool32 memoryMapRangePlaced; + VkBool32 memoryUnmapReserve; +} VkPhysicalDeviceMapMemoryPlacedFeaturesEXT; + +typedef struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT { + VkStructureType sType; + void* pNext; + VkDeviceSize minPlacedMemoryMapAlignment; +} VkPhysicalDeviceMapMemoryPlacedPropertiesEXT; + +typedef struct VkMemoryMapPlacedInfoEXT { + VkStructureType sType; + const void* pNext; + void* pPlacedAddress; +} VkMemoryMapPlacedInfoEXT; + + + +// VK_EXT_shader_atomic_float2 is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_atomic_float2 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION 1 +#define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME "VK_EXT_shader_atomic_float2" +typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderBufferFloat16Atomics; + VkBool32 shaderBufferFloat16AtomicAdd; + VkBool32 shaderBufferFloat16AtomicMinMax; + VkBool32 shaderBufferFloat32AtomicMinMax; + VkBool32 shaderBufferFloat64AtomicMinMax; + VkBool32 shaderSharedFloat16Atomics; + VkBool32 shaderSharedFloat16AtomicAdd; + VkBool32 shaderSharedFloat16AtomicMinMax; + VkBool32 shaderSharedFloat32AtomicMinMax; + VkBool32 shaderSharedFloat64AtomicMinMax; + VkBool32 shaderImageFloat32AtomicMinMax; + VkBool32 sparseImageFloat32AtomicMinMax; +} VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT; + + + +// VK_EXT_surface_maintenance1 is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_surface_maintenance1 1 +#define VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME "VK_EXT_surface_maintenance1" +typedef VkPresentScalingFlagBitsKHR VkPresentScalingFlagBitsEXT; + +typedef VkPresentScalingFlagsKHR VkPresentScalingFlagsEXT; + +typedef VkPresentGravityFlagBitsKHR VkPresentGravityFlagBitsEXT; + +typedef VkPresentGravityFlagsKHR VkPresentGravityFlagsEXT; + +typedef VkSurfacePresentModeKHR VkSurfacePresentModeEXT; + +typedef VkSurfacePresentScalingCapabilitiesKHR VkSurfacePresentScalingCapabilitiesEXT; + +typedef VkSurfacePresentModeCompatibilityKHR VkSurfacePresentModeCompatibilityEXT; + + + +// VK_EXT_swapchain_maintenance1 is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_swapchain_maintenance1 1 +#define VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME "VK_EXT_swapchain_maintenance1" +typedef VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT; + +typedef VkSwapchainPresentFenceInfoKHR VkSwapchainPresentFenceInfoEXT; + +typedef VkSwapchainPresentModesCreateInfoKHR VkSwapchainPresentModesCreateInfoEXT; + +typedef VkSwapchainPresentModeInfoKHR VkSwapchainPresentModeInfoEXT; + +typedef VkSwapchainPresentScalingCreateInfoKHR VkSwapchainPresentScalingCreateInfoEXT; + +typedef VkReleaseSwapchainImagesInfoKHR VkReleaseSwapchainImagesInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkReleaseSwapchainImagesEXT)(VkDevice device, const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseSwapchainImagesEXT( + VkDevice device, + const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo); +#endif +#endif + + +// VK_EXT_shader_demote_to_helper_invocation is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_demote_to_helper_invocation 1 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1 +#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation" +typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; + + + +// VK_NV_device_generated_commands is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_device_generated_commands 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNV) +#define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3 +#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NV_device_generated_commands" + +typedef enum 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_PUSH_DATA_NV = 1000135000, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV = 1000328000, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectCommandsTokenTypeNV; + +typedef enum VkIndirectStateFlagBitsNV { + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0x00000001, + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectStateFlagBitsNV; +typedef VkFlags VkIndirectStateFlagsNV; + +typedef enum VkIndirectCommandsLayoutUsageFlagBitsNV { + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 0x00000001, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 0x00000002, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0x00000004, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkIndirectCommandsLayoutUsageFlagBitsNV; +typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNV; +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxGraphicsShaderGroupCount; + uint32_t maxIndirectSequenceCount; + uint32_t maxIndirectCommandsTokenCount; + uint32_t maxIndirectCommandsStreamCount; + uint32_t maxIndirectCommandsTokenOffset; + uint32_t maxIndirectCommandsStreamStride; + uint32_t minSequencesCountBufferOffsetAlignment; + uint32_t minSequencesIndexBufferOffsetAlignment; + uint32_t minIndirectCommandsBufferOffsetAlignment; +} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 deviceGeneratedCommands; +} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + +typedef struct VkGraphicsShaderGroupCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + const VkPipelineVertexInputStateCreateInfo* pVertexInputState; + const VkPipelineTessellationStateCreateInfo* pTessellationState; +} VkGraphicsShaderGroupCreateInfoNV; + +typedef struct VkGraphicsPipelineShaderGroupsCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t groupCount; + const VkGraphicsShaderGroupCreateInfoNV* pGroups; + uint32_t pipelineCount; + const VkPipeline* pPipelines; +} VkGraphicsPipelineShaderGroupsCreateInfoNV; + +typedef struct VkBindShaderGroupIndirectCommandNV { + uint32_t groupIndex; +} VkBindShaderGroupIndirectCommandNV; + +typedef struct VkBindIndexBufferIndirectCommandNV { + VkDeviceAddress bufferAddress; + uint32_t size; + VkIndexType indexType; +} VkBindIndexBufferIndirectCommandNV; + +typedef struct VkBindVertexBufferIndirectCommandNV { + VkDeviceAddress bufferAddress; + uint32_t size; + uint32_t stride; +} VkBindVertexBufferIndirectCommandNV; + +typedef struct VkSetStateFlagsIndirectCommandNV { + uint32_t data; +} VkSetStateFlagsIndirectCommandNV; + +typedef struct VkIndirectCommandsStreamNV { + VkBuffer buffer; + VkDeviceSize offset; +} VkIndirectCommandsStreamNV; + +typedef struct VkIndirectCommandsLayoutTokenNV { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsTokenTypeNV tokenType; + uint32_t stream; + uint32_t offset; + uint32_t vertexBindingUnit; + VkBool32 vertexDynamicStride; + VkPipelineLayout pushconstantPipelineLayout; + VkShaderStageFlags pushconstantShaderStageFlags; + uint32_t pushconstantOffset; + uint32_t pushconstantSize; + VkIndirectStateFlagsNV indirectStateFlags; + uint32_t indexTypeCount; + const VkIndexType* pIndexTypes; + const uint32_t* pIndexTypeValues; +} VkIndirectCommandsLayoutTokenNV; + +typedef struct VkIndirectCommandsLayoutCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsLayoutUsageFlagsNV flags; + VkPipelineBindPoint pipelineBindPoint; + uint32_t tokenCount; + const VkIndirectCommandsLayoutTokenNV* pTokens; + uint32_t streamCount; + const uint32_t* pStreamStrides; +} VkIndirectCommandsLayoutCreateInfoNV; + +typedef struct VkGeneratedCommandsInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineBindPoint pipelineBindPoint; + VkPipeline pipeline; + VkIndirectCommandsLayoutNV indirectCommandsLayout; + uint32_t streamCount; + const VkIndirectCommandsStreamNV* pStreams; + uint32_t sequencesCount; + VkBuffer preprocessBuffer; + VkDeviceSize preprocessOffset; + VkDeviceSize preprocessSize; + VkBuffer sequencesCountBuffer; + VkDeviceSize sequencesCountOffset; + VkBuffer sequencesIndexBuffer; + VkDeviceSize sequencesIndexOffset; +} VkGeneratedCommandsInfoNV; + +typedef struct VkGeneratedCommandsMemoryRequirementsInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineBindPoint pipelineBindPoint; + VkPipeline pipeline; + VkIndirectCommandsLayoutNV indirectCommandsLayout; + uint32_t maxSequencesCount; +} VkGeneratedCommandsMemoryRequirementsInfoNV; + +typedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsNV)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsNV)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsNV)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex); +typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNV)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); +typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNV)(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV( + VkDevice device, + const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, + VkMemoryRequirements2* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV( + VkCommandBuffer commandBuffer, + const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV( + VkCommandBuffer commandBuffer, + VkBool32 isPreprocessed, + const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindPipelineShaderGroupNV( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline, + uint32_t groupIndex); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV( + VkDevice device, + const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV( + VkDevice device, + VkIndirectCommandsLayoutNV indirectCommandsLayout, + const VkAllocationCallbacks* pAllocator); +#endif +#endif + + +// VK_NV_inherited_viewport_scissor is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_inherited_viewport_scissor 1 +#define VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION 1 +#define VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME "VK_NV_inherited_viewport_scissor" +typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 inheritedViewportScissor2D; +} VkPhysicalDeviceInheritedViewportScissorFeaturesNV; + +typedef struct VkCommandBufferInheritanceViewportScissorInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 viewportScissor2D; + uint32_t viewportDepthCount; + const VkViewport* pViewportDepths; +} VkCommandBufferInheritanceViewportScissorInfoNV; + + + +// VK_EXT_texel_buffer_alignment is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_texel_buffer_alignment 1 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1 +#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment" +typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 texelBufferAlignment; +} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT; + +typedef VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT; + + + +// VK_QCOM_render_pass_transform is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_render_pass_transform 1 +#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 5 +#define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform" +typedef struct VkRenderPassTransformBeginInfoQCOM { + VkStructureType sType; + const void* pNext; + VkSurfaceTransformFlagBitsKHR transform; +} VkRenderPassTransformBeginInfoQCOM; + +typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM { + VkStructureType sType; + const void* pNext; + VkSurfaceTransformFlagBitsKHR transform; + VkRect2D renderArea; +} VkCommandBufferInheritanceRenderPassTransformInfoQCOM; + + + +// VK_EXT_depth_bias_control is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_depth_bias_control 1 +#define VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME "VK_EXT_depth_bias_control" + +typedef enum VkDepthBiasRepresentationEXT { + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0, + VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1, + VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2, + VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDepthBiasRepresentationEXT; +typedef struct VkPhysicalDeviceDepthBiasControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthBiasControl; + VkBool32 leastRepresentableValueForceUnormRepresentation; + VkBool32 floatRepresentation; + VkBool32 depthBiasExact; +} VkPhysicalDeviceDepthBiasControlFeaturesEXT; + +typedef struct VkDepthBiasInfoEXT { + VkStructureType sType; + const void* pNext; + float depthBiasConstantFactor; + float depthBiasClamp; + float depthBiasSlopeFactor; +} VkDepthBiasInfoEXT; + +typedef struct VkDepthBiasRepresentationInfoEXT { + VkStructureType sType; + const void* pNext; + VkDepthBiasRepresentationEXT depthBiasRepresentation; + VkBool32 depthBiasExact; +} VkDepthBiasRepresentationInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias2EXT)(VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT* pDepthBiasInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias2EXT( + VkCommandBuffer commandBuffer, + const VkDepthBiasInfoEXT* pDepthBiasInfo); +#endif +#endif + + +// VK_EXT_device_memory_report is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_device_memory_report 1 +#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2 +#define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME "VK_EXT_device_memory_report" + +typedef enum 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 = 0x7FFFFFFF +} VkDeviceMemoryReportEventTypeEXT; +typedef VkFlags VkDeviceMemoryReportFlagsEXT; +typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 deviceMemoryReport; +} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT; + +typedef struct VkDeviceMemoryReportCallbackDataEXT { + VkStructureType sType; + void* pNext; + VkDeviceMemoryReportFlagsEXT flags; + VkDeviceMemoryReportEventTypeEXT type; + uint64_t memoryObjectId; + VkDeviceSize size; + VkObjectType objectType; + uint64_t objectHandle; + uint32_t heapIndex; +} VkDeviceMemoryReportCallbackDataEXT; + +typedef void (VKAPI_PTR *PFN_vkDeviceMemoryReportCallbackEXT)( + const VkDeviceMemoryReportCallbackDataEXT* pCallbackData, + void* pUserData); + +typedef struct VkDeviceDeviceMemoryReportCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceMemoryReportFlagsEXT flags; + PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback; + void* pUserData; +} VkDeviceDeviceMemoryReportCreateInfoEXT; + + + +// VK_EXT_acquire_drm_display is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_acquire_drm_display 1 +#define VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION 1 +#define VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_drm_display" +typedef VkResult (VKAPI_PTR *PFN_vkAcquireDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display); +typedef VkResult (VKAPI_PTR *PFN_vkGetDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, VkDisplayKHR* display); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireDrmDisplayEXT( + VkPhysicalDevice physicalDevice, + int32_t drmFd, + VkDisplayKHR display); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDrmDisplayEXT( + VkPhysicalDevice physicalDevice, + int32_t drmFd, + uint32_t connectorId, + VkDisplayKHR* display); +#endif +#endif + + +// VK_EXT_robustness2 is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_robustness2 1 +#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1 +#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2" +typedef VkPhysicalDeviceRobustness2FeaturesKHR VkPhysicalDeviceRobustness2FeaturesEXT; + +typedef VkPhysicalDeviceRobustness2PropertiesKHR VkPhysicalDeviceRobustness2PropertiesEXT; + + + +// VK_EXT_custom_border_color is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_custom_border_color 1 +#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12 +#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color" +typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxCustomBorderColorSamplers; +} VkPhysicalDeviceCustomBorderColorPropertiesEXT; + +typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 customBorderColors; + VkBool32 customBorderColorWithoutFormat; +} VkPhysicalDeviceCustomBorderColorFeaturesEXT; + + + +// VK_EXT_texture_compression_astc_3d is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_texture_compression_astc_3d 1 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_SPEC_VERSION 1 +#define VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME "VK_EXT_texture_compression_astc_3d" +typedef struct VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 textureCompressionASTC_3D; +} VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT; + + + +// VK_GOOGLE_user_type is a preprocessor guard. Do not pass it to API calls. +#define VK_GOOGLE_user_type 1 +#define VK_GOOGLE_USER_TYPE_SPEC_VERSION 1 +#define VK_GOOGLE_USER_TYPE_EXTENSION_NAME "VK_GOOGLE_user_type" + + +// VK_NV_present_barrier is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_present_barrier 1 +#define VK_NV_PRESENT_BARRIER_SPEC_VERSION 1 +#define VK_NV_PRESENT_BARRIER_EXTENSION_NAME "VK_NV_present_barrier" +typedef struct VkPhysicalDevicePresentBarrierFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 presentBarrier; +} VkPhysicalDevicePresentBarrierFeaturesNV; + +typedef struct VkSurfaceCapabilitiesPresentBarrierNV { + VkStructureType sType; + void* pNext; + VkBool32 presentBarrierSupported; +} VkSurfaceCapabilitiesPresentBarrierNV; + +typedef struct VkSwapchainPresentBarrierCreateInfoNV { + VkStructureType sType; + void* pNext; + VkBool32 presentBarrierEnable; +} VkSwapchainPresentBarrierCreateInfoNV; + + + +// VK_EXT_private_data is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_private_data 1 +typedef VkPrivateDataSlot VkPrivateDataSlotEXT; + +#define VK_EXT_PRIVATE_DATA_SPEC_VERSION 1 +#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME "VK_EXT_private_data" +typedef VkPrivateDataSlotCreateFlags VkPrivateDataSlotCreateFlagsEXT; + +typedef VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesEXT; + +typedef VkDevicePrivateDataCreateInfo VkDevicePrivateDataCreateInfoEXT; + +typedef VkPrivateDataSlotCreateInfo VkPrivateDataSlotCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlotEXT)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot); +typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlotEXT)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data); +typedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlotEXT( + VkDevice device, + const VkPrivateDataSlotCreateInfo* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkPrivateDataSlot* pPrivateDataSlot); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlotEXT( + VkDevice device, + VkPrivateDataSlot privateDataSlot, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateDataEXT( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t data); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT( + VkDevice device, + VkObjectType objectType, + uint64_t objectHandle, + VkPrivateDataSlot privateDataSlot, + uint64_t* pData); +#endif +#endif + + +// VK_EXT_pipeline_creation_cache_control is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_pipeline_creation_cache_control 1 +#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3 +#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control" +typedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT; + + + +// VK_NV_device_diagnostics_config is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_device_diagnostics_config 1 +#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 2 +#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME "VK_NV_device_diagnostics_config" + +typedef enum VkDeviceDiagnosticsConfigFlagBitsNV { + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 0x00000001, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 0x00000002, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 0x00000004, + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 0x00000008, + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkDeviceDiagnosticsConfigFlagBitsNV; +typedef VkFlags VkDeviceDiagnosticsConfigFlagsNV; +typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 diagnosticsConfig; +} VkPhysicalDeviceDiagnosticsConfigFeaturesNV; + +typedef struct VkDeviceDiagnosticsConfigCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceDiagnosticsConfigFlagsNV flags; +} VkDeviceDiagnosticsConfigCreateInfoNV; + + + +// VK_QCOM_render_pass_store_ops is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_render_pass_store_ops 1 +#define VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION 2 +#define VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME "VK_QCOM_render_pass_store_ops" + + +// VK_QCOM_tile_shading is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_tile_shading 1 +#define VK_QCOM_TILE_SHADING_SPEC_VERSION 2 +#define VK_QCOM_TILE_SHADING_EXTENSION_NAME "VK_QCOM_tile_shading" + +typedef enum VkTileShadingRenderPassFlagBitsQCOM { + VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM = 0x00000001, + VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM = 0x00000002, + VK_TILE_SHADING_RENDER_PASS_FLAG_BITS_MAX_ENUM_QCOM = 0x7FFFFFFF +} VkTileShadingRenderPassFlagBitsQCOM; +typedef VkFlags VkTileShadingRenderPassFlagsQCOM; +typedef struct VkPhysicalDeviceTileShadingFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 tileShading; + VkBool32 tileShadingFragmentStage; + VkBool32 tileShadingColorAttachments; + VkBool32 tileShadingDepthAttachments; + VkBool32 tileShadingStencilAttachments; + VkBool32 tileShadingInputAttachments; + VkBool32 tileShadingSampledAttachments; + VkBool32 tileShadingPerTileDraw; + VkBool32 tileShadingPerTileDispatch; + VkBool32 tileShadingDispatchTile; + VkBool32 tileShadingApron; + VkBool32 tileShadingAnisotropicApron; + VkBool32 tileShadingAtomicOps; + VkBool32 tileShadingImageProcessing; +} VkPhysicalDeviceTileShadingFeaturesQCOM; + +typedef struct VkPhysicalDeviceTileShadingPropertiesQCOM { + VkStructureType sType; + void* pNext; + uint32_t maxApronSize; + VkBool32 preferNonCoherent; + VkExtent2D tileGranularity; + VkExtent2D maxTileShadingRate; +} VkPhysicalDeviceTileShadingPropertiesQCOM; + +typedef struct VkRenderPassTileShadingCreateInfoQCOM { + VkStructureType sType; + const void* pNext; + VkTileShadingRenderPassFlagsQCOM flags; + VkExtent2D tileApronSize; +} VkRenderPassTileShadingCreateInfoQCOM; + +typedef struct VkPerTileBeginInfoQCOM { + VkStructureType sType; + const void* pNext; +} VkPerTileBeginInfoQCOM; + +typedef struct VkPerTileEndInfoQCOM { + VkStructureType sType; + const void* pNext; +} VkPerTileEndInfoQCOM; + +typedef struct VkDispatchTileInfoQCOM { + VkStructureType sType; + const void* pNext; +} VkDispatchTileInfoQCOM; + +typedef void (VKAPI_PTR *PFN_vkCmdDispatchTileQCOM)(VkCommandBuffer commandBuffer, const VkDispatchTileInfoQCOM* pDispatchTileInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBeginPerTileExecutionQCOM)(VkCommandBuffer commandBuffer, const VkPerTileBeginInfoQCOM* pPerTileBeginInfo); +typedef void (VKAPI_PTR *PFN_vkCmdEndPerTileExecutionQCOM)(VkCommandBuffer commandBuffer, const VkPerTileEndInfoQCOM* pPerTileEndInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchTileQCOM( + VkCommandBuffer commandBuffer, + const VkDispatchTileInfoQCOM* pDispatchTileInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginPerTileExecutionQCOM( + VkCommandBuffer commandBuffer, + const VkPerTileBeginInfoQCOM* pPerTileBeginInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndPerTileExecutionQCOM( + VkCommandBuffer commandBuffer, + const VkPerTileEndInfoQCOM* pPerTileEndInfo); +#endif +#endif + + +// VK_NV_low_latency is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_low_latency 1 +#define VK_NV_LOW_LATENCY_SPEC_VERSION 1 +#define VK_NV_LOW_LATENCY_EXTENSION_NAME "VK_NV_low_latency" +typedef struct VkQueryLowLatencySupportNV { + VkStructureType sType; + const void* pNext; + void* pQueriedLowLatencyData; +} VkQueryLowLatencySupportNV; + + + +// VK_EXT_descriptor_buffer is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_descriptor_buffer 1 +#define VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION 1 +#define VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME "VK_EXT_descriptor_buffer" +typedef struct VkPhysicalDeviceDescriptorBufferPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 combinedImageSamplerDescriptorSingleArray; + VkBool32 bufferlessPushDescriptors; + VkBool32 allowSamplerImageViewPostSubmitCreation; + VkDeviceSize descriptorBufferOffsetAlignment; + uint32_t maxDescriptorBufferBindings; + uint32_t maxResourceDescriptorBufferBindings; + uint32_t maxSamplerDescriptorBufferBindings; + uint32_t maxEmbeddedImmutableSamplerBindings; + uint32_t maxEmbeddedImmutableSamplers; + size_t bufferCaptureReplayDescriptorDataSize; + size_t imageCaptureReplayDescriptorDataSize; + size_t imageViewCaptureReplayDescriptorDataSize; + size_t samplerCaptureReplayDescriptorDataSize; + size_t accelerationStructureCaptureReplayDescriptorDataSize; + size_t samplerDescriptorSize; + size_t combinedImageSamplerDescriptorSize; + size_t sampledImageDescriptorSize; + size_t storageImageDescriptorSize; + size_t uniformTexelBufferDescriptorSize; + size_t robustUniformTexelBufferDescriptorSize; + size_t storageTexelBufferDescriptorSize; + size_t robustStorageTexelBufferDescriptorSize; + size_t uniformBufferDescriptorSize; + size_t robustUniformBufferDescriptorSize; + size_t storageBufferDescriptorSize; + size_t robustStorageBufferDescriptorSize; + size_t inputAttachmentDescriptorSize; + size_t accelerationStructureDescriptorSize; + VkDeviceSize maxSamplerDescriptorBufferRange; + VkDeviceSize maxResourceDescriptorBufferRange; + VkDeviceSize samplerDescriptorBufferAddressSpaceSize; + VkDeviceSize resourceDescriptorBufferAddressSpaceSize; + VkDeviceSize descriptorBufferAddressSpaceSize; +} VkPhysicalDeviceDescriptorBufferPropertiesEXT; + +typedef struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT { + VkStructureType sType; + void* pNext; + size_t combinedImageSamplerDensityMapDescriptorSize; +} VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT; + +typedef struct VkPhysicalDeviceDescriptorBufferFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 descriptorBuffer; + VkBool32 descriptorBufferCaptureReplay; + VkBool32 descriptorBufferImageLayoutIgnored; + VkBool32 descriptorBufferPushDescriptors; +} VkPhysicalDeviceDescriptorBufferFeaturesEXT; + +typedef struct VkDescriptorAddressInfoEXT { + VkStructureType sType; + void* pNext; + VkDeviceAddress address; + VkDeviceSize range; + VkFormat format; +} VkDescriptorAddressInfoEXT; + +typedef struct VkDescriptorBufferBindingInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceAddress address; + VkBufferUsageFlags usage; +} VkDescriptorBufferBindingInfoEXT; + +typedef struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +} VkDescriptorBufferBindingPushDescriptorBufferHandleEXT; + +typedef union VkDescriptorDataEXT { + const VkSampler* pSampler; + const VkDescriptorImageInfo* pCombinedImageSampler; + const VkDescriptorImageInfo* pInputAttachmentImage; + const VkDescriptorImageInfo* pSampledImage; + const VkDescriptorImageInfo* pStorageImage; + const VkDescriptorAddressInfoEXT* pUniformTexelBuffer; + const VkDescriptorAddressInfoEXT* pStorageTexelBuffer; + const VkDescriptorAddressInfoEXT* pUniformBuffer; + const VkDescriptorAddressInfoEXT* pStorageBuffer; + VkDeviceAddress accelerationStructure; +} VkDescriptorDataEXT; + +typedef struct VkDescriptorGetInfoEXT { + VkStructureType sType; + const void* pNext; + VkDescriptorType type; + VkDescriptorDataEXT data; +} VkDescriptorGetInfoEXT; + +typedef struct VkBufferCaptureDescriptorDataInfoEXT { + VkStructureType sType; + const void* pNext; + VkBuffer buffer; +} VkBufferCaptureDescriptorDataInfoEXT; + +typedef struct VkImageCaptureDescriptorDataInfoEXT { + VkStructureType sType; + const void* pNext; + VkImage image; +} VkImageCaptureDescriptorDataInfoEXT; + +typedef struct VkImageViewCaptureDescriptorDataInfoEXT { + VkStructureType sType; + const void* pNext; + VkImageView imageView; +} VkImageViewCaptureDescriptorDataInfoEXT; + +typedef struct VkSamplerCaptureDescriptorDataInfoEXT { + VkStructureType sType; + const void* pNext; + VkSampler sampler; +} VkSamplerCaptureDescriptorDataInfoEXT; + +typedef struct VkOpaqueCaptureDescriptorDataCreateInfoEXT { + VkStructureType sType; + const void* pNext; + const void* opaqueCaptureDescriptorData; +} VkOpaqueCaptureDescriptorDataCreateInfoEXT; + +typedef struct VkAccelerationStructureCaptureDescriptorDataInfoEXT { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR accelerationStructure; + VkAccelerationStructureNV accelerationStructureNV; +} VkAccelerationStructureCaptureDescriptorDataInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSizeEXT)(VkDevice device, VkDescriptorSetLayout layout, VkDeviceSize* pLayoutSizeInBytes); +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutBindingOffsetEXT)(VkDevice device, VkDescriptorSetLayout layout, uint32_t binding, VkDeviceSize* pOffset); +typedef void (VKAPI_PTR *PFN_vkGetDescriptorEXT)(VkDevice device, const VkDescriptorGetInfoEXT* pDescriptorInfo, size_t dataSize, void* pDescriptor); +typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t bufferCount, const VkDescriptorBufferBindingInfoEXT* pBindingInfos); +typedef void (VKAPI_PTR *PFN_vkCmdSetDescriptorBufferOffsetsEXT)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const uint32_t* pBufferIndices, const VkDeviceSize* pOffsets); +typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set); +typedef VkResult (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkBufferCaptureDescriptorDataInfoEXT* pInfo, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetImageOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkImageCaptureDescriptorDataInfoEXT* pInfo, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkImageViewCaptureDescriptorDataInfoEXT* pInfo, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkSamplerCaptureDescriptorDataInfoEXT* pInfo, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, void* pData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSizeEXT( + VkDevice device, + VkDescriptorSetLayout layout, + VkDeviceSize* pLayoutSizeInBytes); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutBindingOffsetEXT( + VkDevice device, + VkDescriptorSetLayout layout, + uint32_t binding, + VkDeviceSize* pOffset); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorEXT( + VkDevice device, + const VkDescriptorGetInfoEXT* pDescriptorInfo, + size_t dataSize, + void* pDescriptor); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorBuffersEXT( + VkCommandBuffer commandBuffer, + uint32_t bufferCount, + const VkDescriptorBufferBindingInfoEXT* pBindingInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDescriptorBufferOffsetsEXT( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t firstSet, + uint32_t setCount, + const uint32_t* pBufferIndices, + const VkDeviceSize* pOffsets); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorBufferEmbeddedSamplersEXT( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipelineLayout layout, + uint32_t set); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferOpaqueCaptureDescriptorDataEXT( + VkDevice device, + const VkBufferCaptureDescriptorDataInfoEXT* pInfo, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageOpaqueCaptureDescriptorDataEXT( + VkDevice device, + const VkImageCaptureDescriptorDataInfoEXT* pInfo, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewOpaqueCaptureDescriptorDataEXT( + VkDevice device, + const VkImageViewCaptureDescriptorDataInfoEXT* pInfo, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSamplerOpaqueCaptureDescriptorDataEXT( + VkDevice device, + const VkSamplerCaptureDescriptorDataInfoEXT* pInfo, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( + VkDevice device, + const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, + void* pData); +#endif +#endif + + +// VK_EXT_graphics_pipeline_library is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_graphics_pipeline_library 1 +#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION 1 +#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME "VK_EXT_graphics_pipeline_library" + +typedef enum VkGraphicsPipelineLibraryFlagBitsEXT { + VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 0x00000001, + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 0x00000002, + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 0x00000004, + VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 0x00000008, + VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkGraphicsPipelineLibraryFlagBitsEXT; +typedef VkFlags VkGraphicsPipelineLibraryFlagsEXT; +typedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 graphicsPipelineLibrary; +} VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT; + +typedef struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 graphicsPipelineLibraryFastLinking; + VkBool32 graphicsPipelineLibraryIndependentInterpolationDecoration; +} VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT; + +typedef struct VkGraphicsPipelineLibraryCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkGraphicsPipelineLibraryFlagsEXT flags; +} VkGraphicsPipelineLibraryCreateInfoEXT; + + + +// VK_AMD_shader_early_and_late_fragment_tests is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_shader_early_and_late_fragment_tests 1 +#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION 1 +#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME "VK_AMD_shader_early_and_late_fragment_tests" +typedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD { + VkStructureType sType; + void* pNext; + VkBool32 shaderEarlyAndLateFragmentTests; +} VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; + + + +// VK_NV_fragment_shading_rate_enums is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_fragment_shading_rate_enums 1 +#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1 +#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME "VK_NV_fragment_shading_rate_enums" + +typedef enum 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 = 0x7FFFFFFF +} VkFragmentShadingRateTypeNV; + +typedef enum 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 = 0x7FFFFFFF +} VkFragmentShadingRateNV; +typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 fragmentShadingRateEnums; + VkBool32 supersampleFragmentShadingRates; + VkBool32 noInvocationFragmentShadingRates; +} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + +typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV { + VkStructureType sType; + void* pNext; + VkSampleCountFlagBits maxFragmentShadingRateInvocationCount; +} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + +typedef struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkFragmentShadingRateTypeNV shadingRateType; + VkFragmentShadingRateNV shadingRate; + VkFragmentShadingRateCombinerOpKHR combinerOps[2]; +} VkPipelineFragmentShadingRateEnumStateCreateInfoNV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateEnumNV)(VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateEnumNV( + VkCommandBuffer commandBuffer, + VkFragmentShadingRateNV shadingRate, + const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); +#endif +#endif + + +// VK_NV_ray_tracing_motion_blur is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_ray_tracing_motion_blur 1 +#define VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION 1 +#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME "VK_NV_ray_tracing_motion_blur" + +typedef enum VkAccelerationStructureMotionInstanceTypeNV { + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2, + VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkAccelerationStructureMotionInstanceTypeNV; +typedef VkFlags VkAccelerationStructureMotionInfoFlagsNV; +typedef VkFlags VkAccelerationStructureMotionInstanceFlagsNV; +typedef union VkDeviceOrHostAddressConstKHR { + VkDeviceAddress deviceAddress; + const void* hostAddress; +} VkDeviceOrHostAddressConstKHR; + +typedef struct VkAccelerationStructureGeometryMotionTrianglesDataNV { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR vertexData; +} VkAccelerationStructureGeometryMotionTrianglesDataNV; + +typedef struct VkAccelerationStructureMotionInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t maxInstances; + VkAccelerationStructureMotionInfoFlagsNV flags; +} VkAccelerationStructureMotionInfoNV; + +typedef struct VkAccelerationStructureMatrixMotionInstanceNV { + VkTransformMatrixKHR transformT0; + VkTransformMatrixKHR transformT1; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureMatrixMotionInstanceNV; + +typedef struct VkSRTDataNV { + float sx; + float a; + float b; + float pvx; + float sy; + float c; + float pvy; + float sz; + float pvz; + float qx; + float qy; + float qz; + float qw; + float tx; + float ty; + float tz; +} VkSRTDataNV; + +typedef struct VkAccelerationStructureSRTMotionInstanceNV { + VkSRTDataNV transformT0; + VkSRTDataNV transformT1; + uint32_t instanceCustomIndex:24; + uint32_t mask:8; + uint32_t instanceShaderBindingTableRecordOffset:24; + VkGeometryInstanceFlagsKHR flags:8; + uint64_t accelerationStructureReference; +} VkAccelerationStructureSRTMotionInstanceNV; + +typedef union VkAccelerationStructureMotionInstanceDataNV { + VkAccelerationStructureInstanceKHR staticInstance; + VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance; + VkAccelerationStructureSRTMotionInstanceNV srtMotionInstance; +} VkAccelerationStructureMotionInstanceDataNV; + +typedef struct VkAccelerationStructureMotionInstanceNV { + VkAccelerationStructureMotionInstanceTypeNV type; + VkAccelerationStructureMotionInstanceFlagsNV flags; + VkAccelerationStructureMotionInstanceDataNV data; +} VkAccelerationStructureMotionInstanceNV; + +typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingMotionBlur; + VkBool32 rayTracingMotionBlurPipelineTraceRaysIndirect; +} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV; + + + +// VK_EXT_ycbcr_2plane_444_formats is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_ycbcr_2plane_444_formats 1 +#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1 +#define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME "VK_EXT_ycbcr_2plane_444_formats" +typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 ycbcr2plane444Formats; +} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + + + +// VK_EXT_fragment_density_map2 is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_fragment_density_map2 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME "VK_EXT_fragment_density_map2" +typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMapDeferred; +} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT; + +typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 subsampledLoads; + VkBool32 subsampledCoarseReconstructionEarlyAccess; + uint32_t maxSubsampledArrayLayers; + uint32_t maxDescriptorSetSubsampledSamplers; +} VkPhysicalDeviceFragmentDensityMap2PropertiesEXT; + + + +// VK_QCOM_rotated_copy_commands is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_rotated_copy_commands 1 +#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 2 +#define VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME "VK_QCOM_rotated_copy_commands" +typedef struct VkCopyCommandTransformInfoQCOM { + VkStructureType sType; + const void* pNext; + VkSurfaceTransformFlagBitsKHR transform; +} VkCopyCommandTransformInfoQCOM; + + + +// VK_EXT_image_robustness is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_image_robustness 1 +#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1 +#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness" +typedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesEXT; + + + +// VK_EXT_image_compression_control is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_image_compression_control 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME "VK_EXT_image_compression_control" + +typedef enum VkImageCompressionFlagBitsEXT { + VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0, + VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 0x00000001, + VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 0x00000002, + VK_IMAGE_COMPRESSION_DISABLED_EXT = 0x00000004, + VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkImageCompressionFlagBitsEXT; +typedef VkFlags VkImageCompressionFlagsEXT; + +typedef enum VkImageCompressionFixedRateFlagBitsEXT { + VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0, + VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 0x00000001, + VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 0x00000002, + VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 0x00000004, + VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 0x00000008, + VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 0x00000010, + VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 0x00000020, + VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 0x00000040, + VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 0x00000080, + VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 0x00000100, + VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 0x00000200, + VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 0x00000400, + VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 0x00000800, + VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 0x00001000, + VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 0x00002000, + VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 0x00004000, + VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 0x00008000, + VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 0x00010000, + VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 0x00020000, + VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 0x00040000, + VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 0x00080000, + VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 0x00100000, + VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 0x00200000, + VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 0x00400000, + VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 0x00800000, + VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkImageCompressionFixedRateFlagBitsEXT; +typedef VkFlags VkImageCompressionFixedRateFlagsEXT; +typedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 imageCompressionControl; +} VkPhysicalDeviceImageCompressionControlFeaturesEXT; + +typedef struct VkImageCompressionControlEXT { + VkStructureType sType; + const void* pNext; + VkImageCompressionFlagsEXT flags; + uint32_t compressionControlPlaneCount; + VkImageCompressionFixedRateFlagsEXT* pFixedRateFlags; +} VkImageCompressionControlEXT; + +typedef struct VkImageCompressionPropertiesEXT { + VkStructureType sType; + void* pNext; + VkImageCompressionFlagsEXT imageCompressionFlags; + VkImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags; +} VkImageCompressionPropertiesEXT; + + + +// VK_EXT_attachment_feedback_loop_layout is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_attachment_feedback_loop_layout 1 +#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_SPEC_VERSION 2 +#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME "VK_EXT_attachment_feedback_loop_layout" +typedef struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 attachmentFeedbackLoopLayout; +} VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; + + + +// VK_EXT_4444_formats is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_4444_formats 1 +#define VK_EXT_4444_FORMATS_SPEC_VERSION 1 +#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats" +typedef struct VkPhysicalDevice4444FormatsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 formatA4R4G4B4; + VkBool32 formatA4B4G4R4; +} VkPhysicalDevice4444FormatsFeaturesEXT; + + + +// VK_EXT_device_fault is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_device_fault 1 +#define VK_EXT_DEVICE_FAULT_SPEC_VERSION 2 +#define VK_EXT_DEVICE_FAULT_EXTENSION_NAME "VK_EXT_device_fault" +typedef VkDeviceFaultAddressTypeKHR VkDeviceFaultAddressTypeEXT; + +typedef VkDeviceFaultVendorBinaryHeaderVersionKHR VkDeviceFaultVendorBinaryHeaderVersionEXT; + +typedef struct VkPhysicalDeviceFaultFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 deviceFault; + VkBool32 deviceFaultVendorBinary; +} VkPhysicalDeviceFaultFeaturesEXT; + +typedef struct VkDeviceFaultCountsEXT { + VkStructureType sType; + void* pNext; + uint32_t addressInfoCount; + uint32_t vendorInfoCount; + VkDeviceSize vendorBinarySize; +} VkDeviceFaultCountsEXT; + +typedef struct VkDeviceFaultInfoEXT { + VkStructureType sType; + void* pNext; + char description[VK_MAX_DESCRIPTION_SIZE]; + VkDeviceFaultAddressInfoKHR* pAddressInfos; + VkDeviceFaultVendorInfoKHR* pVendorInfos; + void* pVendorBinaryData; +} VkDeviceFaultInfoEXT; + +typedef VkDeviceFaultAddressInfoKHR VkDeviceFaultAddressInfoEXT; + +typedef VkDeviceFaultVendorInfoKHR VkDeviceFaultVendorInfoEXT; + +typedef VkDeviceFaultVendorBinaryHeaderVersionOneKHR VkDeviceFaultVendorBinaryHeaderVersionOneEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceFaultInfoEXT)(VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts, VkDeviceFaultInfoEXT* pFaultInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceFaultInfoEXT( + VkDevice device, + VkDeviceFaultCountsEXT* pFaultCounts, + VkDeviceFaultInfoEXT* pFaultInfo); +#endif +#endif + + +// VK_ARM_rasterization_order_attachment_access is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_rasterization_order_attachment_access 1 +#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1 +#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME "VK_ARM_rasterization_order_attachment_access" +typedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 rasterizationOrderColorAttachmentAccess; + VkBool32 rasterizationOrderDepthAttachmentAccess; + VkBool32 rasterizationOrderStencilAttachmentAccess; +} VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT; + +typedef VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM; + + + +// VK_EXT_rgba10x6_formats is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_rgba10x6_formats 1 +#define VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION 1 +#define VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME "VK_EXT_rgba10x6_formats" +typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 formatRgba10x6WithoutYCbCrSampler; +} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT; + + + +// VK_VALVE_mutable_descriptor_type is a preprocessor guard. Do not pass it to API calls. +#define VK_VALVE_mutable_descriptor_type 1 +#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1 +#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_VALVE_mutable_descriptor_type" +typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 mutableDescriptorType; +} VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT; + +typedef VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE; + +typedef struct VkMutableDescriptorTypeListEXT { + uint32_t descriptorTypeCount; + const VkDescriptorType* pDescriptorTypes; +} VkMutableDescriptorTypeListEXT; + +typedef VkMutableDescriptorTypeListEXT VkMutableDescriptorTypeListVALVE; + +typedef struct VkMutableDescriptorTypeCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t mutableDescriptorTypeListCount; + const VkMutableDescriptorTypeListEXT* pMutableDescriptorTypeLists; +} VkMutableDescriptorTypeCreateInfoEXT; + +typedef VkMutableDescriptorTypeCreateInfoEXT VkMutableDescriptorTypeCreateInfoVALVE; + + + +// VK_EXT_vertex_input_dynamic_state is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_vertex_input_dynamic_state 1 +#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2 +#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state" +typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 vertexInputDynamicState; +} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT; + +typedef struct VkVertexInputBindingDescription2EXT { + VkStructureType sType; + void* pNext; + uint32_t binding; + uint32_t stride; + VkVertexInputRate inputRate; + uint32_t divisor; +} VkVertexInputBindingDescription2EXT; + +typedef struct VkVertexInputAttributeDescription2EXT { + VkStructureType sType; + void* pNext; + uint32_t location; + uint32_t binding; + VkFormat format; + uint32_t offset; +} VkVertexInputAttributeDescription2EXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT( + VkCommandBuffer commandBuffer, + uint32_t vertexBindingDescriptionCount, + const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, + uint32_t vertexAttributeDescriptionCount, + const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); +#endif +#endif + + +// VK_EXT_physical_device_drm is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_physical_device_drm 1 +#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1 +#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME "VK_EXT_physical_device_drm" +typedef struct VkPhysicalDeviceDrmPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 hasPrimary; + VkBool32 hasRender; + int64_t primaryMajor; + int64_t primaryMinor; + int64_t renderMajor; + int64_t renderMinor; +} VkPhysicalDeviceDrmPropertiesEXT; + + + +// VK_EXT_device_address_binding_report is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_device_address_binding_report 1 +#define VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_SPEC_VERSION 1 +#define VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME "VK_EXT_device_address_binding_report" + +typedef enum VkDeviceAddressBindingTypeEXT { + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0, + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1, + VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceAddressBindingTypeEXT; + +typedef enum VkDeviceAddressBindingFlagBitsEXT { + VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 0x00000001, + VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDeviceAddressBindingFlagBitsEXT; +typedef VkFlags VkDeviceAddressBindingFlagsEXT; +typedef struct VkPhysicalDeviceAddressBindingReportFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 reportAddressBinding; +} VkPhysicalDeviceAddressBindingReportFeaturesEXT; + +typedef struct VkDeviceAddressBindingCallbackDataEXT { + VkStructureType sType; + void* pNext; + VkDeviceAddressBindingFlagsEXT flags; + VkDeviceAddress baseAddress; + VkDeviceSize size; + VkDeviceAddressBindingTypeEXT bindingType; +} VkDeviceAddressBindingCallbackDataEXT; + + + +// VK_EXT_depth_clip_control is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_depth_clip_control 1 +#define VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME "VK_EXT_depth_clip_control" +typedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClipControl; +} VkPhysicalDeviceDepthClipControlFeaturesEXT; + +typedef struct VkPipelineViewportDepthClipControlCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 negativeOneToOne; +} VkPipelineViewportDepthClipControlCreateInfoEXT; + + + +// VK_EXT_primitive_topology_list_restart is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_primitive_topology_list_restart 1 +#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION 1 +#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME "VK_EXT_primitive_topology_list_restart" +typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 primitiveTopologyListRestart; + VkBool32 primitiveTopologyPatchListRestart; +} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + + + +// VK_EXT_present_mode_fifo_latest_ready is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_present_mode_fifo_latest_ready 1 +#define VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION 1 +#define VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME "VK_EXT_present_mode_fifo_latest_ready" +typedef VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT; + + + +// VK_HUAWEI_subpass_shading is a preprocessor guard. Do not pass it to API calls. +#define VK_HUAWEI_subpass_shading 1 +#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 3 +#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading" +typedef struct VkSubpassShadingPipelineCreateInfoHUAWEI { + VkStructureType sType; + void* pNext; + VkRenderPass renderPass; + uint32_t subpass; +} VkSubpassShadingPipelineCreateInfoHUAWEI; + +typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 subpassShading; +} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI; + +typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI { + VkStructureType sType; + void* pNext; + uint32_t maxSubpassShadingWorkgroupSizeAspectRatio; +} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI; + +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)(VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize); +typedef void (VKAPI_PTR *PFN_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer commandBuffer); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + VkDevice device, + VkRenderPass renderpass, + VkExtent2D* pMaxWorkgroupSize); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSubpassShadingHUAWEI( + VkCommandBuffer commandBuffer); +#endif +#endif + + +// VK_HUAWEI_invocation_mask is a preprocessor guard. Do not pass it to API calls. +#define VK_HUAWEI_invocation_mask 1 +#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1 +#define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME "VK_HUAWEI_invocation_mask" +typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 invocationMask; +} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI; + +typedef void (VKAPI_PTR *PFN_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindInvocationMaskHUAWEI( + VkCommandBuffer commandBuffer, + VkImageView imageView, + VkImageLayout imageLayout); +#endif +#endif + + +// VK_NV_external_memory_rdma is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_external_memory_rdma 1 +typedef void* VkRemoteAddressNV; +#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME "VK_NV_external_memory_rdma" +typedef struct VkMemoryGetRemoteAddressInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetRemoteAddressInfoNV; + +typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 externalMemoryRDMA; +} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryRemoteAddressNV)(VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV( + VkDevice device, + const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, + VkRemoteAddressNV* pAddress); +#endif +#endif + + +// VK_EXT_pipeline_properties is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_pipeline_properties 1 +#define VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME "VK_EXT_pipeline_properties" +typedef VkPipelineInfoKHR VkPipelineInfoEXT; + +typedef struct VkPipelinePropertiesIdentifierEXT { + VkStructureType sType; + void* pNext; + uint8_t pipelineIdentifier[VK_UUID_SIZE]; +} VkPipelinePropertiesIdentifierEXT; + +typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pipelinePropertiesIdentifier; +} VkPhysicalDevicePipelinePropertiesFeaturesEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelinePropertiesEXT)(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT( + VkDevice device, + const VkPipelineInfoEXT* pPipelineInfo, + VkBaseOutStructure* pPipelineProperties); +#endif +#endif + + +// VK_EXT_frame_boundary is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_frame_boundary 1 +#define VK_EXT_FRAME_BOUNDARY_SPEC_VERSION 1 +#define VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME "VK_EXT_frame_boundary" + +typedef enum VkFrameBoundaryFlagBitsEXT { + VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 0x00000001, + VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkFrameBoundaryFlagBitsEXT; +typedef VkFlags VkFrameBoundaryFlagsEXT; +typedef struct VkPhysicalDeviceFrameBoundaryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 frameBoundary; +} VkPhysicalDeviceFrameBoundaryFeaturesEXT; + +typedef struct VkFrameBoundaryEXT { + VkStructureType sType; + const void* pNext; + VkFrameBoundaryFlagsEXT flags; + uint64_t frameID; + uint32_t imageCount; + const VkImage* pImages; + uint32_t bufferCount; + const VkBuffer* pBuffers; + uint64_t tagName; + size_t tagSize; + const void* pTag; +} VkFrameBoundaryEXT; + + + +// VK_EXT_multisampled_render_to_single_sampled is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_multisampled_render_to_single_sampled 1 +#define VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION 1 +#define VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME "VK_EXT_multisampled_render_to_single_sampled" +typedef struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 multisampledRenderToSingleSampled; +} VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; + +typedef struct VkSubpassResolvePerformanceQueryEXT { + VkStructureType sType; + void* pNext; + VkBool32 optimal; +} VkSubpassResolvePerformanceQueryEXT; + +typedef struct VkMultisampledRenderToSingleSampledInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 multisampledRenderToSingleSampledEnable; + VkSampleCountFlagBits rasterizationSamples; +} VkMultisampledRenderToSingleSampledInfoEXT; + + + +// VK_EXT_extended_dynamic_state2 is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_extended_dynamic_state2 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2" +typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 extendedDynamicState2; + VkBool32 extendedDynamicState2LogicOp; + VkBool32 extendedDynamicState2PatchControlPoints; +} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, uint32_t patchControlPoints); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp); +typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetPatchControlPointsEXT( + VkCommandBuffer commandBuffer, + uint32_t patchControlPoints); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 rasterizerDiscardEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthBiasEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEXT( + VkCommandBuffer commandBuffer, + VkLogicOp logicOp); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 primitiveRestartEnable); +#endif +#endif + + +// VK_EXT_color_write_enable is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_color_write_enable 1 +#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1 +#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable" +typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 colorWriteEnable; +} VkPhysicalDeviceColorWriteEnableFeaturesEXT; + +typedef struct VkPipelineColorWriteCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t attachmentCount; + const VkBool32* pColorWriteEnables; +} VkPipelineColorWriteCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorWriteEnableEXT( + VkCommandBuffer commandBuffer, + uint32_t attachmentCount, + const VkBool32* pColorWriteEnables); +#endif +#endif + + +// VK_EXT_primitives_generated_query is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_primitives_generated_query 1 +#define VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION 1 +#define VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME "VK_EXT_primitives_generated_query" +typedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 primitivesGeneratedQuery; + VkBool32 primitivesGeneratedQueryWithRasterizerDiscard; + VkBool32 primitivesGeneratedQueryWithNonZeroStreams; +} VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT; + + + +// VK_EXT_global_priority_query is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_global_priority_query 1 +#define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1 +#define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME "VK_EXT_global_priority_query" +#define VK_MAX_GLOBAL_PRIORITY_SIZE_EXT VK_MAX_GLOBAL_PRIORITY_SIZE +typedef VkPhysicalDeviceGlobalPriorityQueryFeatures VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT; + +typedef VkQueueFamilyGlobalPriorityProperties VkQueueFamilyGlobalPriorityPropertiesEXT; + + + +// VK_VALVE_video_encode_rgb_conversion is a preprocessor guard. Do not pass it to API calls. +#define VK_VALVE_video_encode_rgb_conversion 1 +#define VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_SPEC_VERSION 1 +#define VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_EXTENSION_NAME "VK_VALVE_video_encode_rgb_conversion" + +typedef enum VkVideoEncodeRgbModelConversionFlagBitsVALVE { + VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_RGB_IDENTITY_BIT_VALVE = 0x00000001, + VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_IDENTITY_BIT_VALVE = 0x00000002, + VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_709_BIT_VALVE = 0x00000004, + VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_601_BIT_VALVE = 0x00000008, + VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_2020_BIT_VALVE = 0x00000010, + VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_FLAG_BITS_MAX_ENUM_VALVE = 0x7FFFFFFF +} VkVideoEncodeRgbModelConversionFlagBitsVALVE; +typedef VkFlags VkVideoEncodeRgbModelConversionFlagsVALVE; + +typedef enum VkVideoEncodeRgbRangeCompressionFlagBitsVALVE { + VK_VIDEO_ENCODE_RGB_RANGE_COMPRESSION_FULL_RANGE_BIT_VALVE = 0x00000001, + VK_VIDEO_ENCODE_RGB_RANGE_COMPRESSION_NARROW_RANGE_BIT_VALVE = 0x00000002, + VK_VIDEO_ENCODE_RGB_RANGE_COMPRESSION_FLAG_BITS_MAX_ENUM_VALVE = 0x7FFFFFFF +} VkVideoEncodeRgbRangeCompressionFlagBitsVALVE; +typedef VkFlags VkVideoEncodeRgbRangeCompressionFlagsVALVE; + +typedef enum VkVideoEncodeRgbChromaOffsetFlagBitsVALVE { + VK_VIDEO_ENCODE_RGB_CHROMA_OFFSET_COSITED_EVEN_BIT_VALVE = 0x00000001, + VK_VIDEO_ENCODE_RGB_CHROMA_OFFSET_MIDPOINT_BIT_VALVE = 0x00000002, + VK_VIDEO_ENCODE_RGB_CHROMA_OFFSET_FLAG_BITS_MAX_ENUM_VALVE = 0x7FFFFFFF +} VkVideoEncodeRgbChromaOffsetFlagBitsVALVE; +typedef VkFlags VkVideoEncodeRgbChromaOffsetFlagsVALVE; +typedef struct VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE { + VkStructureType sType; + void* pNext; + VkBool32 videoEncodeRgbConversion; +} VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE; + +typedef struct VkVideoEncodeRgbConversionCapabilitiesVALVE { + VkStructureType sType; + void* pNext; + VkVideoEncodeRgbModelConversionFlagsVALVE rgbModels; + VkVideoEncodeRgbRangeCompressionFlagsVALVE rgbRanges; + VkVideoEncodeRgbChromaOffsetFlagsVALVE xChromaOffsets; + VkVideoEncodeRgbChromaOffsetFlagsVALVE yChromaOffsets; +} VkVideoEncodeRgbConversionCapabilitiesVALVE; + +typedef struct VkVideoEncodeProfileRgbConversionInfoVALVE { + VkStructureType sType; + const void* pNext; + VkBool32 performEncodeRgbConversion; +} VkVideoEncodeProfileRgbConversionInfoVALVE; + +typedef struct VkVideoEncodeSessionRgbConversionCreateInfoVALVE { + VkStructureType sType; + const void* pNext; + VkVideoEncodeRgbModelConversionFlagBitsVALVE rgbModel; + VkVideoEncodeRgbRangeCompressionFlagBitsVALVE rgbRange; + VkVideoEncodeRgbChromaOffsetFlagBitsVALVE xChromaOffset; + VkVideoEncodeRgbChromaOffsetFlagBitsVALVE yChromaOffset; +} VkVideoEncodeSessionRgbConversionCreateInfoVALVE; + + + +// VK_EXT_image_view_min_lod is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_image_view_min_lod 1 +#define VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION 1 +#define VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME "VK_EXT_image_view_min_lod" +typedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 minLod; +} VkPhysicalDeviceImageViewMinLodFeaturesEXT; + +typedef struct VkImageViewMinLodCreateInfoEXT { + VkStructureType sType; + const void* pNext; + float minLod; +} VkImageViewMinLodCreateInfoEXT; + + + +// VK_EXT_multi_draw is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_multi_draw 1 +#define VK_EXT_MULTI_DRAW_SPEC_VERSION 1 +#define VK_EXT_MULTI_DRAW_EXTENSION_NAME "VK_EXT_multi_draw" +typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 multiDraw; +} VkPhysicalDeviceMultiDrawFeaturesEXT; + +typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxMultiDrawCount; +} VkPhysicalDeviceMultiDrawPropertiesEXT; + +typedef struct VkMultiDrawInfoEXT { + uint32_t firstVertex; + uint32_t vertexCount; +} VkMultiDrawInfoEXT; + +typedef struct VkMultiDrawIndexedInfoEXT { + uint32_t firstIndex; + uint32_t indexCount; + int32_t vertexOffset; +} VkMultiDrawIndexedInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiIndexedEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiEXT( + VkCommandBuffer commandBuffer, + uint32_t drawCount, + const VkMultiDrawInfoEXT* pVertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiIndexedEXT( + VkCommandBuffer commandBuffer, + uint32_t drawCount, + const VkMultiDrawIndexedInfoEXT* pIndexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + const int32_t* pVertexOffset); +#endif +#endif + + +// VK_EXT_image_2d_view_of_3d is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_image_2d_view_of_3d 1 +#define VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION 1 +#define VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_2d_view_of_3d" +typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 image2DViewOf3D; + VkBool32 sampler2DViewOf3D; +} VkPhysicalDeviceImage2DViewOf3DFeaturesEXT; + + + +// VK_EXT_shader_tile_image is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_tile_image 1 +#define VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION 1 +#define VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME "VK_EXT_shader_tile_image" +typedef struct VkPhysicalDeviceShaderTileImageFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderTileImageColorReadAccess; + VkBool32 shaderTileImageDepthReadAccess; + VkBool32 shaderTileImageStencilReadAccess; +} VkPhysicalDeviceShaderTileImageFeaturesEXT; + +typedef struct VkPhysicalDeviceShaderTileImagePropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderTileImageCoherentReadAccelerated; + VkBool32 shaderTileImageReadSampleFromPixelRateInvocation; + VkBool32 shaderTileImageReadFromHelperInvocation; +} VkPhysicalDeviceShaderTileImagePropertiesEXT; + + + +// VK_EXT_opacity_micromap is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_opacity_micromap 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkMicromapEXT) +#define VK_EXT_OPACITY_MICROMAP_SPEC_VERSION 2 +#define VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME "VK_EXT_opacity_micromap" + +typedef enum VkMicromapTypeEXT { + VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0, +#ifdef VK_ENABLE_BETA_EXTENSIONS + VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV = 1000397000, +#endif + VK_MICROMAP_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkMicromapTypeEXT; + +typedef enum VkBuildMicromapModeEXT { + VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0, + VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkBuildMicromapModeEXT; + +typedef enum VkCopyMicromapModeEXT { + VK_COPY_MICROMAP_MODE_CLONE_EXT = 0, + VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1, + VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2, + VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3, + VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkCopyMicromapModeEXT; + +typedef enum VkOpacityMicromapFormatEXT { + VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1, + VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2, + VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 0x7FFFFFFF +} VkOpacityMicromapFormatEXT; + +typedef enum VkOpacityMicromapSpecialIndexEXT { + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1, + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2, + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3, + VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4, + VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV = -5, + VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 0x7FFFFFFF +} VkOpacityMicromapSpecialIndexEXT; + +typedef enum VkAccelerationStructureCompatibilityKHR { + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0, + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1, + VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 0x7FFFFFFF +} VkAccelerationStructureCompatibilityKHR; + +typedef enum 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 = 0x7FFFFFFF +} VkAccelerationStructureBuildTypeKHR; + +typedef enum VkBuildMicromapFlagBitsEXT { + VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 0x00000001, + VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 0x00000002, + VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 0x00000004, + VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkBuildMicromapFlagBitsEXT; +typedef VkFlags VkBuildMicromapFlagsEXT; + +typedef enum VkMicromapCreateFlagBitsEXT { + VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000001, + VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkMicromapCreateFlagBitsEXT; +typedef VkFlags VkMicromapCreateFlagsEXT; +typedef struct VkMicromapUsageEXT { + uint32_t count; + uint32_t subdivisionLevel; + uint32_t format; +} VkMicromapUsageEXT; + +typedef union VkDeviceOrHostAddressKHR { + VkDeviceAddress deviceAddress; + void* hostAddress; +} VkDeviceOrHostAddressKHR; + +typedef struct VkMicromapBuildInfoEXT { + VkStructureType sType; + const void* pNext; + VkMicromapTypeEXT type; + VkBuildMicromapFlagsEXT flags; + VkBuildMicromapModeEXT mode; + VkMicromapEXT dstMicromap; + uint32_t usageCountsCount; + const VkMicromapUsageEXT* pUsageCounts; + const VkMicromapUsageEXT* const* ppUsageCounts; + VkDeviceOrHostAddressConstKHR data; + VkDeviceOrHostAddressKHR scratchData; + VkDeviceOrHostAddressConstKHR triangleArray; + VkDeviceSize triangleArrayStride; +} VkMicromapBuildInfoEXT; + +typedef struct VkMicromapCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkMicromapCreateFlagsEXT createFlags; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; + VkMicromapTypeEXT type; + VkDeviceAddress deviceAddress; +} VkMicromapCreateInfoEXT; + +typedef struct VkPhysicalDeviceOpacityMicromapFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 micromap; + VkBool32 micromapCaptureReplay; + VkBool32 micromapHostCommands; +} VkPhysicalDeviceOpacityMicromapFeaturesEXT; + +typedef struct VkPhysicalDeviceOpacityMicromapPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxOpacity2StateSubdivisionLevel; + uint32_t maxOpacity4StateSubdivisionLevel; +} VkPhysicalDeviceOpacityMicromapPropertiesEXT; + +typedef struct VkMicromapVersionInfoEXT { + VkStructureType sType; + const void* pNext; + const uint8_t* pVersionData; +} VkMicromapVersionInfoEXT; + +typedef struct VkCopyMicromapToMemoryInfoEXT { + VkStructureType sType; + const void* pNext; + VkMicromapEXT src; + VkDeviceOrHostAddressKHR dst; + VkCopyMicromapModeEXT mode; +} VkCopyMicromapToMemoryInfoEXT; + +typedef struct VkCopyMemoryToMicromapInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR src; + VkMicromapEXT dst; + VkCopyMicromapModeEXT mode; +} VkCopyMemoryToMicromapInfoEXT; + +typedef struct VkCopyMicromapInfoEXT { + VkStructureType sType; + const void* pNext; + VkMicromapEXT src; + VkMicromapEXT dst; + VkCopyMicromapModeEXT mode; +} VkCopyMicromapInfoEXT; + +typedef struct VkMicromapBuildSizesInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceSize micromapSize; + VkDeviceSize buildScratchSize; + VkBool32 discardable; +} VkMicromapBuildSizesInfoEXT; + +typedef struct VkAccelerationStructureTrianglesOpacityMicromapEXT { + VkStructureType sType; + void* pNext; + VkIndexType indexType; + VkDeviceOrHostAddressConstKHR indexBuffer; + VkDeviceSize indexStride; + uint32_t baseTriangle; + uint32_t usageCountsCount; + const VkMicromapUsageEXT* pUsageCounts; + const VkMicromapUsageEXT* const* ppUsageCounts; + VkMicromapEXT micromap; +} VkAccelerationStructureTrianglesOpacityMicromapEXT; + +typedef struct VkMicromapTriangleEXT { + uint32_t dataOffset; + uint16_t subdivisionLevel; + uint16_t format; +} VkMicromapTriangleEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateMicromapEXT)(VkDevice device, const VkMicromapCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkMicromapEXT* pMicromap); +typedef void (VKAPI_PTR *PFN_vkDestroyMicromapEXT)(VkDevice device, VkMicromapEXT micromap, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBuildMicromapsEXT)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkMicromapBuildInfoEXT* pInfos); +typedef VkResult (VKAPI_PTR *PFN_vkBuildMicromapsEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkMicromapBuildInfoEXT* pInfos); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMicromapEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMicromapInfoEXT* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMicromapToMemoryEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMicromapToMemoryInfoEXT* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToMicromapEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToMicromapInfoEXT* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkWriteMicromapsPropertiesEXT)(VkDevice device, uint32_t micromapCount, const VkMicromapEXT* pMicromaps, VkQueryType queryType, size_t dataSize, void* pData, size_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMicromapEXT)(VkCommandBuffer commandBuffer, const VkCopyMicromapInfoEXT* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMicromapToMemoryEXT)(VkCommandBuffer commandBuffer, const VkCopyMicromapToMemoryInfoEXT* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToMicromapEXT)(VkCommandBuffer commandBuffer, const VkCopyMemoryToMicromapInfoEXT* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteMicromapsPropertiesEXT)(VkCommandBuffer commandBuffer, uint32_t micromapCount, const VkMicromapEXT* pMicromaps, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); +typedef void (VKAPI_PTR *PFN_vkGetDeviceMicromapCompatibilityEXT)(VkDevice device, const VkMicromapVersionInfoEXT* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility); +typedef void (VKAPI_PTR *PFN_vkGetMicromapBuildSizesEXT)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkMicromapBuildInfoEXT* pBuildInfo, VkMicromapBuildSizesInfoEXT* pSizeInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateMicromapEXT( + VkDevice device, + const VkMicromapCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkMicromapEXT* pMicromap); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyMicromapEXT( + VkDevice device, + VkMicromapEXT micromap, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBuildMicromapsEXT( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkMicromapBuildInfoEXT* pInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBuildMicromapsEXT( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + uint32_t infoCount, + const VkMicromapBuildInfoEXT* pInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMicromapEXT( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMicromapInfoEXT* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMicromapToMemoryEXT( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMicromapToMemoryInfoEXT* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToMicromapEXT( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMemoryToMicromapInfoEXT* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkWriteMicromapsPropertiesEXT( + VkDevice device, + uint32_t micromapCount, + const VkMicromapEXT* pMicromaps, + VkQueryType queryType, + size_t dataSize, + void* pData, + size_t stride); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMicromapEXT( + VkCommandBuffer commandBuffer, + const VkCopyMicromapInfoEXT* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMicromapToMemoryEXT( + VkCommandBuffer commandBuffer, + const VkCopyMicromapToMemoryInfoEXT* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToMicromapEXT( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToMicromapInfoEXT* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdWriteMicromapsPropertiesEXT( + VkCommandBuffer commandBuffer, + uint32_t micromapCount, + const VkMicromapEXT* pMicromaps, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceMicromapCompatibilityEXT( + VkDevice device, + const VkMicromapVersionInfoEXT* pVersionInfo, + VkAccelerationStructureCompatibilityKHR* pCompatibility); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetMicromapBuildSizesEXT( + VkDevice device, + VkAccelerationStructureBuildTypeKHR buildType, + const VkMicromapBuildInfoEXT* pBuildInfo, + VkMicromapBuildSizesInfoEXT* pSizeInfo); +#endif +#endif + + +// VK_EXT_load_store_op_none is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_load_store_op_none 1 +#define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1 +#define VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME "VK_EXT_load_store_op_none" + + +// VK_HUAWEI_cluster_culling_shader is a preprocessor guard. Do not pass it to API calls. +#define VK_HUAWEI_cluster_culling_shader 1 +#define VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION 3 +#define VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME "VK_HUAWEI_cluster_culling_shader" +typedef struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 clustercullingShader; + VkBool32 multiviewClusterCullingShader; +} VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI; + +typedef struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI { + VkStructureType sType; + void* pNext; + uint32_t maxWorkGroupCount[3]; + uint32_t maxWorkGroupSize[3]; + uint32_t maxOutputClusterCount; + VkDeviceSize indirectBufferOffsetAlignment; +} VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI; + +typedef struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 clusterShadingRate; +} VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterHUAWEI)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); +typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterIndirectHUAWEI)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawClusterHUAWEI( + VkCommandBuffer commandBuffer, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawClusterIndirectHUAWEI( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset); +#endif +#endif + + +// VK_EXT_border_color_swizzle is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_border_color_swizzle 1 +#define VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION 1 +#define VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME "VK_EXT_border_color_swizzle" +typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 borderColorSwizzle; + VkBool32 borderColorSwizzleFromImage; +} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT; + +typedef struct VkSamplerBorderColorComponentMappingCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkComponentMapping components; + VkBool32 srgb; +} VkSamplerBorderColorComponentMappingCreateInfoEXT; + + + +// VK_EXT_pageable_device_local_memory is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_pageable_device_local_memory 1 +#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION 1 +#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME "VK_EXT_pageable_device_local_memory" +typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pageableDeviceLocalMemory; +} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkSetDeviceMemoryPriorityEXT)(VkDevice device, VkDeviceMemory memory, float priority); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSetDeviceMemoryPriorityEXT( + VkDevice device, + VkDeviceMemory memory, + float priority); +#endif +#endif + + +// VK_ARM_shader_core_properties is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_shader_core_properties 1 +#define VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION 1 +#define VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_ARM_shader_core_properties" +typedef struct VkPhysicalDeviceShaderCorePropertiesARM { + VkStructureType sType; + void* pNext; + uint32_t pixelRate; + uint32_t texelRate; + uint32_t fmaRate; +} VkPhysicalDeviceShaderCorePropertiesARM; + + + +// VK_ARM_scheduling_controls is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_scheduling_controls 1 +#define VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION 1 +#define VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME "VK_ARM_scheduling_controls" +typedef VkFlags64 VkPhysicalDeviceSchedulingControlsFlagsARM; + +// Flag bits for VkPhysicalDeviceSchedulingControlsFlagBitsARM +typedef VkFlags64 VkPhysicalDeviceSchedulingControlsFlagBitsARM; +static const VkPhysicalDeviceSchedulingControlsFlagBitsARM VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM = 0x00000001ULL; + +typedef struct VkDeviceQueueShaderCoreControlCreateInfoARM { + VkStructureType sType; + void* pNext; + uint32_t shaderCoreCount; +} VkDeviceQueueShaderCoreControlCreateInfoARM; + +typedef struct VkPhysicalDeviceSchedulingControlsFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 schedulingControls; +} VkPhysicalDeviceSchedulingControlsFeaturesARM; + +typedef struct VkPhysicalDeviceSchedulingControlsPropertiesARM { + VkStructureType sType; + void* pNext; + VkPhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags; +} VkPhysicalDeviceSchedulingControlsPropertiesARM; + + + +// VK_EXT_image_sliced_view_of_3d is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_image_sliced_view_of_3d 1 +#define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION 1 +#define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_sliced_view_of_3d" +#define VK_REMAINING_3D_SLICES_EXT (~0U) +typedef struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 imageSlicedViewOf3D; +} VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT; + +typedef struct VkImageViewSlicedCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t sliceOffset; + uint32_t sliceCount; +} VkImageViewSlicedCreateInfoEXT; + + + +// VK_VALVE_descriptor_set_host_mapping is a preprocessor guard. Do not pass it to API calls. +#define VK_VALVE_descriptor_set_host_mapping 1 +#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION 1 +#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME "VK_VALVE_descriptor_set_host_mapping" +typedef struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE { + VkStructureType sType; + void* pNext; + VkBool32 descriptorSetHostMapping; +} VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE; + +typedef struct VkDescriptorSetBindingReferenceVALVE { + VkStructureType sType; + const void* pNext; + VkDescriptorSetLayout descriptorSetLayout; + uint32_t binding; +} VkDescriptorSetBindingReferenceVALVE; + +typedef struct VkDescriptorSetLayoutHostMappingInfoVALVE { + VkStructureType sType; + void* pNext; + size_t descriptorOffset; + uint32_t descriptorSize; +} VkDescriptorSetLayoutHostMappingInfoVALVE; + +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)(VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping); +typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetHostMappingVALVE)(VkDevice device, VkDescriptorSet descriptorSet, void** ppData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutHostMappingInfoVALVE( + VkDevice device, + const VkDescriptorSetBindingReferenceVALVE* pBindingReference, + VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetHostMappingVALVE( + VkDevice device, + VkDescriptorSet descriptorSet, + void** ppData); +#endif +#endif + + +// VK_EXT_depth_clamp_zero_one is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_depth_clamp_zero_one 1 +#define VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME "VK_EXT_depth_clamp_zero_one" +typedef VkPhysicalDeviceDepthClampZeroOneFeaturesKHR VkPhysicalDeviceDepthClampZeroOneFeaturesEXT; + + + +// VK_EXT_non_seamless_cube_map is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_non_seamless_cube_map 1 +#define VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION 1 +#define VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME "VK_EXT_non_seamless_cube_map" +typedef struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 nonSeamlessCubeMap; +} VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT; + + + +// VK_ARM_render_pass_striped is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_render_pass_striped 1 +#define VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION 1 +#define VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME "VK_ARM_render_pass_striped" +typedef struct VkPhysicalDeviceRenderPassStripedFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 renderPassStriped; +} VkPhysicalDeviceRenderPassStripedFeaturesARM; + +typedef struct VkPhysicalDeviceRenderPassStripedPropertiesARM { + VkStructureType sType; + void* pNext; + VkExtent2D renderPassStripeGranularity; + uint32_t maxRenderPassStripes; +} VkPhysicalDeviceRenderPassStripedPropertiesARM; + +typedef struct VkRenderPassStripeInfoARM { + VkStructureType sType; + const void* pNext; + VkRect2D stripeArea; +} VkRenderPassStripeInfoARM; + +typedef struct VkRenderPassStripeBeginInfoARM { + VkStructureType sType; + const void* pNext; + uint32_t stripeInfoCount; + const VkRenderPassStripeInfoARM* pStripeInfos; +} VkRenderPassStripeBeginInfoARM; + +typedef struct VkRenderPassStripeSubmitInfoARM { + VkStructureType sType; + const void* pNext; + uint32_t stripeSemaphoreInfoCount; + const VkSemaphoreSubmitInfo* pStripeSemaphoreInfos; +} VkRenderPassStripeSubmitInfoARM; + + + +// VK_QCOM_fragment_density_map_offset is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_fragment_density_map_offset 1 +#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 3 +#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_QCOM_fragment_density_map_offset" +typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMapOffset; +} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT; + +typedef VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM; + +typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT { + VkStructureType sType; + void* pNext; + VkExtent2D fragmentDensityOffsetGranularity; +} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT; + +typedef VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM; + +typedef struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t fragmentDensityOffsetCount; + const VkOffset2D* pFragmentDensityOffsets; +} VkRenderPassFragmentDensityMapOffsetEndInfoEXT; + +typedef VkRenderPassFragmentDensityMapOffsetEndInfoEXT VkSubpassFragmentDensityMapOffsetEndInfoQCOM; + + + +// VK_NV_copy_memory_indirect is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_copy_memory_indirect 1 +#define VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION 1 +#define VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME "VK_NV_copy_memory_indirect" +typedef VkCopyMemoryIndirectCommandKHR VkCopyMemoryIndirectCommandNV; + +typedef VkCopyMemoryToImageIndirectCommandKHR VkCopyMemoryToImageIndirectCommandNV; + +typedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 indirectCopy; +} VkPhysicalDeviceCopyMemoryIndirectFeaturesNV; + +typedef VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR VkPhysicalDeviceCopyMemoryIndirectPropertiesNV; + +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryIndirectNV)(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToImageIndirectNV)(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride, VkImage dstImage, VkImageLayout dstImageLayout, const VkImageSubresourceLayers* pImageSubresources); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryIndirectNV( + VkCommandBuffer commandBuffer, + VkDeviceAddress copyBufferAddress, + uint32_t copyCount, + uint32_t stride); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToImageIndirectNV( + VkCommandBuffer commandBuffer, + VkDeviceAddress copyBufferAddress, + uint32_t copyCount, + uint32_t stride, + VkImage dstImage, + VkImageLayout dstImageLayout, + const VkImageSubresourceLayers* pImageSubresources); +#endif +#endif + + +// VK_NV_memory_decompression is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_memory_decompression 1 +#define VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION 1 +#define VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME "VK_NV_memory_decompression" + +// Flag bits for VkMemoryDecompressionMethodFlagBitsEXT +typedef VkFlags64 VkMemoryDecompressionMethodFlagBitsEXT; +static const VkMemoryDecompressionMethodFlagBitsEXT VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT = 0x00000001ULL; +static const VkMemoryDecompressionMethodFlagBitsEXT VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV = 0x00000001ULL; + +typedef VkMemoryDecompressionMethodFlagBitsEXT VkMemoryDecompressionMethodFlagBitsNV; + +typedef VkFlags64 VkMemoryDecompressionMethodFlagsEXT; +typedef VkMemoryDecompressionMethodFlagsEXT VkMemoryDecompressionMethodFlagsNV; + +typedef struct VkDecompressMemoryRegionNV { + VkDeviceAddress srcAddress; + VkDeviceAddress dstAddress; + VkDeviceSize compressedSize; + VkDeviceSize decompressedSize; + VkMemoryDecompressionMethodFlagsNV decompressionMethod; +} VkDecompressMemoryRegionNV; + +typedef struct VkPhysicalDeviceMemoryDecompressionFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 memoryDecompression; +} VkPhysicalDeviceMemoryDecompressionFeaturesEXT; + +typedef VkPhysicalDeviceMemoryDecompressionFeaturesEXT VkPhysicalDeviceMemoryDecompressionFeaturesNV; + +typedef struct VkPhysicalDeviceMemoryDecompressionPropertiesEXT { + VkStructureType sType; + void* pNext; + VkMemoryDecompressionMethodFlagsEXT decompressionMethods; + uint64_t maxDecompressionIndirectCount; +} VkPhysicalDeviceMemoryDecompressionPropertiesEXT; + +typedef VkPhysicalDeviceMemoryDecompressionPropertiesEXT VkPhysicalDeviceMemoryDecompressionPropertiesNV; + +typedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryNV)(VkCommandBuffer commandBuffer, uint32_t decompressRegionCount, const VkDecompressMemoryRegionNV* pDecompressMemoryRegions); +typedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryIndirectCountNV)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectCommandsAddress, VkDeviceAddress indirectCommandsCountAddress, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDecompressMemoryNV( + VkCommandBuffer commandBuffer, + uint32_t decompressRegionCount, + const VkDecompressMemoryRegionNV* pDecompressMemoryRegions); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDecompressMemoryIndirectCountNV( + VkCommandBuffer commandBuffer, + VkDeviceAddress indirectCommandsAddress, + VkDeviceAddress indirectCommandsCountAddress, + uint32_t stride); +#endif +#endif + + +// VK_NV_device_generated_commands_compute is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_device_generated_commands_compute 1 +#define VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION 2 +#define VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME "VK_NV_device_generated_commands_compute" +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 deviceGeneratedCompute; + VkBool32 deviceGeneratedComputePipelines; + VkBool32 deviceGeneratedComputeCaptureReplay; +} VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV; + +typedef struct VkComputePipelineIndirectBufferInfoNV { + VkStructureType sType; + const void* pNext; + VkDeviceAddress deviceAddress; + VkDeviceSize size; + VkDeviceAddress pipelineDeviceAddressCaptureReplay; +} VkComputePipelineIndirectBufferInfoNV; + +typedef struct VkPipelineIndirectDeviceAddressInfoNV { + VkStructureType sType; + const void* pNext; + VkPipelineBindPoint pipelineBindPoint; + VkPipeline pipeline; +} VkPipelineIndirectDeviceAddressInfoNV; + +typedef struct VkBindPipelineIndirectCommandNV { + VkDeviceAddress pipelineAddress; +} VkBindPipelineIndirectCommandNV; + +typedef void (VKAPI_PTR *PFN_vkGetPipelineIndirectMemoryRequirementsNV)(VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkCmdUpdatePipelineIndirectBufferNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetPipelineIndirectDeviceAddressNV)(VkDevice device, const VkPipelineIndirectDeviceAddressInfoNV* pInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPipelineIndirectMemoryRequirementsNV( + VkDevice device, + const VkComputePipelineCreateInfo* pCreateInfo, + VkMemoryRequirements2* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdUpdatePipelineIndirectBufferNV( + VkCommandBuffer commandBuffer, + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetPipelineIndirectDeviceAddressNV( + VkDevice device, + const VkPipelineIndirectDeviceAddressInfoNV* pInfo); +#endif +#endif + + +// VK_NV_ray_tracing_linear_swept_spheres is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_ray_tracing_linear_swept_spheres 1 +#define VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION 1 +#define VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_EXTENSION_NAME "VK_NV_ray_tracing_linear_swept_spheres" + +typedef enum VkRayTracingLssIndexingModeNV { + VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV = 0, + VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV = 1, + VK_RAY_TRACING_LSS_INDEXING_MODE_MAX_ENUM_NV = 0x7FFFFFFF +} VkRayTracingLssIndexingModeNV; + +typedef enum VkRayTracingLssPrimitiveEndCapsModeNV { + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV = 0, + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV = 1, + VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_MAX_ENUM_NV = 0x7FFFFFFF +} VkRayTracingLssPrimitiveEndCapsModeNV; +typedef struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 spheres; + VkBool32 linearSweptSpheres; +} VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV; + +typedef struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV { + VkStructureType sType; + const void* pNext; + VkFormat vertexFormat; + VkDeviceOrHostAddressConstKHR vertexData; + VkDeviceSize vertexStride; + VkFormat radiusFormat; + VkDeviceOrHostAddressConstKHR radiusData; + VkDeviceSize radiusStride; + VkIndexType indexType; + VkDeviceOrHostAddressConstKHR indexData; + VkDeviceSize indexStride; + VkRayTracingLssIndexingModeNV indexingMode; + VkRayTracingLssPrimitiveEndCapsModeNV endCapsMode; +} VkAccelerationStructureGeometryLinearSweptSpheresDataNV; + +typedef struct VkAccelerationStructureGeometrySpheresDataNV { + VkStructureType sType; + const void* pNext; + VkFormat vertexFormat; + VkDeviceOrHostAddressConstKHR vertexData; + VkDeviceSize vertexStride; + VkFormat radiusFormat; + VkDeviceOrHostAddressConstKHR radiusData; + VkDeviceSize radiusStride; + VkIndexType indexType; + VkDeviceOrHostAddressConstKHR indexData; + VkDeviceSize indexStride; +} VkAccelerationStructureGeometrySpheresDataNV; + + + +// VK_NV_linear_color_attachment is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_linear_color_attachment 1 +#define VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION 1 +#define VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME "VK_NV_linear_color_attachment" +typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 linearColorAttachment; +} VkPhysicalDeviceLinearColorAttachmentFeaturesNV; + + + +// VK_GOOGLE_surfaceless_query is a preprocessor guard. Do not pass it to API calls. +#define VK_GOOGLE_surfaceless_query 1 +#define VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION 2 +#define VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME "VK_GOOGLE_surfaceless_query" + + +// VK_EXT_image_compression_control_swapchain is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_image_compression_control_swapchain 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION 1 +#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME "VK_EXT_image_compression_control_swapchain" +typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 imageCompressionControlSwapchain; +} VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT; + + + +// VK_QCOM_image_processing is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_image_processing 1 +#define VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION 1 +#define VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME "VK_QCOM_image_processing" +typedef struct VkImageViewSampleWeightCreateInfoQCOM { + VkStructureType sType; + const void* pNext; + VkOffset2D filterCenter; + VkExtent2D filterSize; + uint32_t numPhases; +} VkImageViewSampleWeightCreateInfoQCOM; + +typedef struct VkPhysicalDeviceImageProcessingFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 textureSampleWeighted; + VkBool32 textureBoxFilter; + VkBool32 textureBlockMatch; +} VkPhysicalDeviceImageProcessingFeaturesQCOM; + +typedef struct VkPhysicalDeviceImageProcessingPropertiesQCOM { + VkStructureType sType; + void* pNext; + uint32_t maxWeightFilterPhases; + VkExtent2D maxWeightFilterDimension; + VkExtent2D maxBlockMatchRegion; + VkExtent2D maxBoxFilterBlockSize; +} VkPhysicalDeviceImageProcessingPropertiesQCOM; + + + +// VK_EXT_nested_command_buffer is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_nested_command_buffer 1 +#define VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION 1 +#define VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME "VK_EXT_nested_command_buffer" +typedef struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 nestedCommandBuffer; + VkBool32 nestedCommandBufferRendering; + VkBool32 nestedCommandBufferSimultaneousUse; +} VkPhysicalDeviceNestedCommandBufferFeaturesEXT; + +typedef struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxCommandBufferNestingLevel; +} VkPhysicalDeviceNestedCommandBufferPropertiesEXT; + + + +// VK_EXT_external_memory_acquire_unmodified is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_external_memory_acquire_unmodified 1 +#define VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION 1 +#define VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME "VK_EXT_external_memory_acquire_unmodified" +typedef struct VkExternalMemoryAcquireUnmodifiedEXT { + VkStructureType sType; + const void* pNext; + VkBool32 acquireUnmodifiedMemory; +} VkExternalMemoryAcquireUnmodifiedEXT; + + + +// VK_EXT_extended_dynamic_state3 is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_extended_dynamic_state3 1 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION 2 +#define VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME "VK_EXT_extended_dynamic_state3" +typedef struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 extendedDynamicState3TessellationDomainOrigin; + VkBool32 extendedDynamicState3DepthClampEnable; + VkBool32 extendedDynamicState3PolygonMode; + VkBool32 extendedDynamicState3RasterizationSamples; + VkBool32 extendedDynamicState3SampleMask; + VkBool32 extendedDynamicState3AlphaToCoverageEnable; + VkBool32 extendedDynamicState3AlphaToOneEnable; + VkBool32 extendedDynamicState3LogicOpEnable; + VkBool32 extendedDynamicState3ColorBlendEnable; + VkBool32 extendedDynamicState3ColorBlendEquation; + VkBool32 extendedDynamicState3ColorWriteMask; + VkBool32 extendedDynamicState3RasterizationStream; + VkBool32 extendedDynamicState3ConservativeRasterizationMode; + VkBool32 extendedDynamicState3ExtraPrimitiveOverestimationSize; + VkBool32 extendedDynamicState3DepthClipEnable; + VkBool32 extendedDynamicState3SampleLocationsEnable; + VkBool32 extendedDynamicState3ColorBlendAdvanced; + VkBool32 extendedDynamicState3ProvokingVertexMode; + VkBool32 extendedDynamicState3LineRasterizationMode; + VkBool32 extendedDynamicState3LineStippleEnable; + VkBool32 extendedDynamicState3DepthClipNegativeOneToOne; + VkBool32 extendedDynamicState3ViewportWScalingEnable; + VkBool32 extendedDynamicState3ViewportSwizzle; + VkBool32 extendedDynamicState3CoverageToColorEnable; + VkBool32 extendedDynamicState3CoverageToColorLocation; + VkBool32 extendedDynamicState3CoverageModulationMode; + VkBool32 extendedDynamicState3CoverageModulationTableEnable; + VkBool32 extendedDynamicState3CoverageModulationTable; + VkBool32 extendedDynamicState3CoverageReductionMode; + VkBool32 extendedDynamicState3RepresentativeFragmentTestEnable; + VkBool32 extendedDynamicState3ShadingRateImageEnable; +} VkPhysicalDeviceExtendedDynamicState3FeaturesEXT; + +typedef struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 dynamicPrimitiveTopologyUnrestricted; +} VkPhysicalDeviceExtendedDynamicState3PropertiesEXT; + +typedef struct VkColorBlendEquationEXT { + VkBlendFactor srcColorBlendFactor; + VkBlendFactor dstColorBlendFactor; + VkBlendOp colorBlendOp; + VkBlendFactor srcAlphaBlendFactor; + VkBlendFactor dstAlphaBlendFactor; + VkBlendOp alphaBlendOp; +} VkColorBlendEquationEXT; + +typedef struct VkColorBlendAdvancedEXT { + VkBlendOp advancedBlendOp; + VkBool32 srcPremultiplied; + VkBool32 dstPremultiplied; + VkBlendOverlapEXT blendOverlap; + VkBool32 clampResults; +} VkColorBlendAdvancedEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClampEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthClampEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetPolygonModeEXT)(VkCommandBuffer commandBuffer, VkPolygonMode polygonMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizationSamplesEXT)(VkCommandBuffer commandBuffer, VkSampleCountFlagBits rasterizationSamples); +typedef void (VKAPI_PTR *PFN_vkCmdSetSampleMaskEXT)(VkCommandBuffer commandBuffer, VkSampleCountFlagBits samples, const VkSampleMask* pSampleMask); +typedef void (VKAPI_PTR *PFN_vkCmdSetAlphaToCoverageEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetAlphaToOneEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 alphaToOneEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 logicOpEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendEnableEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkBool32* pColorBlendEnables); +typedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendEquationEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorBlendEquationEXT* pColorBlendEquations); +typedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteMaskEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorComponentFlags* pColorWriteMasks); +typedef void (VKAPI_PTR *PFN_vkCmdSetTessellationDomainOriginEXT)(VkCommandBuffer commandBuffer, VkTessellationDomainOrigin domainOrigin); +typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizationStreamEXT)(VkCommandBuffer commandBuffer, uint32_t rasterizationStream); +typedef void (VKAPI_PTR *PFN_vkCmdSetConservativeRasterizationModeEXT)(VkCommandBuffer commandBuffer, VkConservativeRasterizationModeEXT conservativeRasterizationMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT)(VkCommandBuffer commandBuffer, float extraPrimitiveOverestimationSize); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClipEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthClipEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 sampleLocationsEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendAdvancedEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorBlendAdvancedEXT* pColorBlendAdvanced); +typedef void (VKAPI_PTR *PFN_vkCmdSetProvokingVertexModeEXT)(VkCommandBuffer commandBuffer, VkProvokingVertexModeEXT provokingVertexMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetLineRasterizationModeEXT)(VkCommandBuffer commandBuffer, VkLineRasterizationModeEXT lineRasterizationMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stippledLineEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClipNegativeOneToOneEXT)(VkCommandBuffer commandBuffer, VkBool32 negativeOneToOne); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingEnableNV)(VkCommandBuffer commandBuffer, VkBool32 viewportWScalingEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetViewportSwizzleNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportSwizzleNV* pViewportSwizzles); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageToColorEnableNV)(VkCommandBuffer commandBuffer, VkBool32 coverageToColorEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageToColorLocationNV)(VkCommandBuffer commandBuffer, uint32_t coverageToColorLocation); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationModeNV)(VkCommandBuffer commandBuffer, VkCoverageModulationModeNV coverageModulationMode); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationTableEnableNV)(VkCommandBuffer commandBuffer, VkBool32 coverageModulationTableEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationTableNV)(VkCommandBuffer commandBuffer, uint32_t coverageModulationTableCount, const float* pCoverageModulationTable); +typedef void (VKAPI_PTR *PFN_vkCmdSetShadingRateImageEnableNV)(VkCommandBuffer commandBuffer, VkBool32 shadingRateImageEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetRepresentativeFragmentTestEnableNV)(VkCommandBuffer commandBuffer, VkBool32 representativeFragmentTestEnable); +typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageReductionModeNV)(VkCommandBuffer commandBuffer, VkCoverageReductionModeNV coverageReductionMode); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClampEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthClampEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetPolygonModeEXT( + VkCommandBuffer commandBuffer, + VkPolygonMode polygonMode); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizationSamplesEXT( + VkCommandBuffer commandBuffer, + VkSampleCountFlagBits rasterizationSamples); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleMaskEXT( + VkCommandBuffer commandBuffer, + VkSampleCountFlagBits samples, + const VkSampleMask* pSampleMask); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetAlphaToCoverageEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 alphaToCoverageEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetAlphaToOneEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 alphaToOneEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 logicOpEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorBlendEnableEXT( + VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkBool32* pColorBlendEnables); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorBlendEquationEXT( + VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkColorBlendEquationEXT* pColorBlendEquations); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorWriteMaskEXT( + VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkColorComponentFlags* pColorWriteMasks); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetTessellationDomainOriginEXT( + VkCommandBuffer commandBuffer, + VkTessellationDomainOrigin domainOrigin); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizationStreamEXT( + VkCommandBuffer commandBuffer, + uint32_t rasterizationStream); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetConservativeRasterizationModeEXT( + VkCommandBuffer commandBuffer, + VkConservativeRasterizationModeEXT conservativeRasterizationMode); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetExtraPrimitiveOverestimationSizeEXT( + VkCommandBuffer commandBuffer, + float extraPrimitiveOverestimationSize); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClipEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 depthClipEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 sampleLocationsEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetColorBlendAdvancedEXT( + VkCommandBuffer commandBuffer, + uint32_t firstAttachment, + uint32_t attachmentCount, + const VkColorBlendAdvancedEXT* pColorBlendAdvanced); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetProvokingVertexModeEXT( + VkCommandBuffer commandBuffer, + VkProvokingVertexModeEXT provokingVertexMode); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineRasterizationModeEXT( + VkCommandBuffer commandBuffer, + VkLineRasterizationModeEXT lineRasterizationMode); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEnableEXT( + VkCommandBuffer commandBuffer, + VkBool32 stippledLineEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClipNegativeOneToOneEXT( + VkCommandBuffer commandBuffer, + VkBool32 negativeOneToOne); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingEnableNV( + VkCommandBuffer commandBuffer, + VkBool32 viewportWScalingEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportSwizzleNV( + VkCommandBuffer commandBuffer, + uint32_t firstViewport, + uint32_t viewportCount, + const VkViewportSwizzleNV* pViewportSwizzles); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageToColorEnableNV( + VkCommandBuffer commandBuffer, + VkBool32 coverageToColorEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageToColorLocationNV( + VkCommandBuffer commandBuffer, + uint32_t coverageToColorLocation); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageModulationModeNV( + VkCommandBuffer commandBuffer, + VkCoverageModulationModeNV coverageModulationMode); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageModulationTableEnableNV( + VkCommandBuffer commandBuffer, + VkBool32 coverageModulationTableEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageModulationTableNV( + VkCommandBuffer commandBuffer, + uint32_t coverageModulationTableCount, + const float* pCoverageModulationTable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetShadingRateImageEnableNV( + VkCommandBuffer commandBuffer, + VkBool32 shadingRateImageEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetRepresentativeFragmentTestEnableNV( + VkCommandBuffer commandBuffer, + VkBool32 representativeFragmentTestEnable); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageReductionModeNV( + VkCommandBuffer commandBuffer, + VkCoverageReductionModeNV coverageReductionMode); +#endif +#endif + + +// VK_EXT_subpass_merge_feedback is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_subpass_merge_feedback 1 +#define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 2 +#define VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME "VK_EXT_subpass_merge_feedback" + +typedef enum VkSubpassMergeStatusEXT { + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0, + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13, + VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkSubpassMergeStatusEXT; +typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 subpassMergeFeedback; +} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT; + +typedef struct VkRenderPassCreationControlEXT { + VkStructureType sType; + const void* pNext; + VkBool32 disallowMerging; +} VkRenderPassCreationControlEXT; + +typedef struct VkRenderPassCreationFeedbackInfoEXT { + uint32_t postMergeSubpassCount; +} VkRenderPassCreationFeedbackInfoEXT; + +typedef struct VkRenderPassCreationFeedbackCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkRenderPassCreationFeedbackInfoEXT* pRenderPassFeedback; +} VkRenderPassCreationFeedbackCreateInfoEXT; + +typedef struct VkRenderPassSubpassFeedbackInfoEXT { + VkSubpassMergeStatusEXT subpassMergeStatus; + char description[VK_MAX_DESCRIPTION_SIZE]; + uint32_t postMergeIndex; +} VkRenderPassSubpassFeedbackInfoEXT; + +typedef struct VkRenderPassSubpassFeedbackCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkRenderPassSubpassFeedbackInfoEXT* pSubpassFeedback; +} VkRenderPassSubpassFeedbackCreateInfoEXT; + + + +// VK_LUNARG_direct_driver_loading is a preprocessor guard. Do not pass it to API calls. +#define VK_LUNARG_direct_driver_loading 1 +#define VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION 1 +#define VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME "VK_LUNARG_direct_driver_loading" + +typedef enum VkDirectDriverLoadingModeLUNARG { + VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0, + VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1, + VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 0x7FFFFFFF +} VkDirectDriverLoadingModeLUNARG; +typedef VkFlags VkDirectDriverLoadingFlagsLUNARG; +typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddrLUNARG)( + VkInstance instance, + const char* pName); + +typedef struct VkDirectDriverLoadingInfoLUNARG { + VkStructureType sType; + void* pNext; + VkDirectDriverLoadingFlagsLUNARG flags; + PFN_vkGetInstanceProcAddrLUNARG pfnGetInstanceProcAddr; +} VkDirectDriverLoadingInfoLUNARG; + +typedef struct VkDirectDriverLoadingListLUNARG { + VkStructureType sType; + const void* pNext; + VkDirectDriverLoadingModeLUNARG mode; + uint32_t driverCount; + const VkDirectDriverLoadingInfoLUNARG* pDrivers; +} VkDirectDriverLoadingListLUNARG; + + + +// VK_ARM_tensors is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_tensors 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkTensorViewARM) +#define VK_ARM_TENSORS_SPEC_VERSION 2 +#define VK_ARM_TENSORS_EXTENSION_NAME "VK_ARM_tensors" + +typedef enum VkTensorTilingARM { + VK_TENSOR_TILING_OPTIMAL_ARM = 0, + VK_TENSOR_TILING_LINEAR_ARM = 1, + VK_TENSOR_TILING_MAX_ENUM_ARM = 0x7FFFFFFF +} VkTensorTilingARM; +typedef VkFlags64 VkTensorCreateFlagsARM; + +// Flag bits for VkTensorCreateFlagBitsARM +typedef VkFlags64 VkTensorCreateFlagBitsARM; +static const VkTensorCreateFlagBitsARM VK_TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM = 0x00000001ULL; +static const VkTensorCreateFlagBitsARM VK_TENSOR_CREATE_PROTECTED_BIT_ARM = 0x00000002ULL; +static const VkTensorCreateFlagBitsARM VK_TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM = 0x00000008ULL; +static const VkTensorCreateFlagBitsARM VK_TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM = 0x00000004ULL; + +typedef VkFlags64 VkTensorUsageFlagsARM; + +// Flag bits for VkTensorUsageFlagBitsARM +typedef VkFlags64 VkTensorUsageFlagBitsARM; +static const VkTensorUsageFlagBitsARM VK_TENSOR_USAGE_SHADER_BIT_ARM = 0x00000002ULL; +static const VkTensorUsageFlagBitsARM VK_TENSOR_USAGE_TRANSFER_SRC_BIT_ARM = 0x00000004ULL; +static const VkTensorUsageFlagBitsARM VK_TENSOR_USAGE_TRANSFER_DST_BIT_ARM = 0x00000008ULL; +static const VkTensorUsageFlagBitsARM VK_TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM = 0x00000010ULL; +static const VkTensorUsageFlagBitsARM VK_TENSOR_USAGE_DATA_GRAPH_BIT_ARM = 0x00000020ULL; + +typedef struct VkTensorDescriptionARM { + VkStructureType sType; + const void* pNext; + VkTensorTilingARM tiling; + VkFormat format; + uint32_t dimensionCount; + const int64_t* pDimensions; + const int64_t* pStrides; + VkTensorUsageFlagsARM usage; +} VkTensorDescriptionARM; + +typedef struct VkTensorCreateInfoARM { + VkStructureType sType; + const void* pNext; + VkTensorCreateFlagsARM flags; + const VkTensorDescriptionARM* pDescription; + VkSharingMode sharingMode; + uint32_t queueFamilyIndexCount; + const uint32_t* pQueueFamilyIndices; +} VkTensorCreateInfoARM; + +typedef struct VkTensorMemoryRequirementsInfoARM { + VkStructureType sType; + const void* pNext; + VkTensorARM tensor; +} VkTensorMemoryRequirementsInfoARM; + +typedef struct VkBindTensorMemoryInfoARM { + VkStructureType sType; + const void* pNext; + VkTensorARM tensor; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; +} VkBindTensorMemoryInfoARM; + +typedef struct VkWriteDescriptorSetTensorARM { + VkStructureType sType; + const void* pNext; + uint32_t tensorViewCount; + const VkTensorViewARM* pTensorViews; +} VkWriteDescriptorSetTensorARM; + +typedef struct VkTensorFormatPropertiesARM { + VkStructureType sType; + void* pNext; + VkFormatFeatureFlags2 optimalTilingTensorFeatures; + VkFormatFeatureFlags2 linearTilingTensorFeatures; +} VkTensorFormatPropertiesARM; + +typedef struct VkPhysicalDeviceTensorPropertiesARM { + VkStructureType sType; + void* pNext; + uint32_t maxTensorDimensionCount; + uint64_t maxTensorElements; + uint64_t maxPerDimensionTensorElements; + int64_t maxTensorStride; + uint64_t maxTensorSize; + uint32_t maxTensorShaderAccessArrayLength; + uint32_t maxTensorShaderAccessSize; + uint32_t maxDescriptorSetStorageTensors; + uint32_t maxPerStageDescriptorSetStorageTensors; + uint32_t maxDescriptorSetUpdateAfterBindStorageTensors; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageTensors; + VkBool32 shaderStorageTensorArrayNonUniformIndexingNative; + VkShaderStageFlags shaderTensorSupportedStages; +} VkPhysicalDeviceTensorPropertiesARM; + +typedef struct VkTensorMemoryBarrierARM { + VkStructureType sType; + const void* pNext; + VkPipelineStageFlags2 srcStageMask; + VkAccessFlags2 srcAccessMask; + VkPipelineStageFlags2 dstStageMask; + VkAccessFlags2 dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkTensorARM tensor; +} VkTensorMemoryBarrierARM; + +typedef struct VkTensorDependencyInfoARM { + VkStructureType sType; + const void* pNext; + uint32_t tensorMemoryBarrierCount; + const VkTensorMemoryBarrierARM* pTensorMemoryBarriers; +} VkTensorDependencyInfoARM; + +typedef struct VkPhysicalDeviceTensorFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 tensorNonPacked; + VkBool32 shaderTensorAccess; + VkBool32 shaderStorageTensorArrayDynamicIndexing; + VkBool32 shaderStorageTensorArrayNonUniformIndexing; + VkBool32 descriptorBindingStorageTensorUpdateAfterBind; + VkBool32 tensors; +} VkPhysicalDeviceTensorFeaturesARM; + +typedef struct VkDeviceTensorMemoryRequirementsARM { + VkStructureType sType; + const void* pNext; + const VkTensorCreateInfoARM* pCreateInfo; +} VkDeviceTensorMemoryRequirementsARM; + +typedef struct VkTensorCopyARM { + VkStructureType sType; + const void* pNext; + uint32_t dimensionCount; + const uint64_t* pSrcOffset; + const uint64_t* pDstOffset; + const uint64_t* pExtent; +} VkTensorCopyARM; + +typedef struct VkCopyTensorInfoARM { + VkStructureType sType; + const void* pNext; + VkTensorARM srcTensor; + VkTensorARM dstTensor; + uint32_t regionCount; + const VkTensorCopyARM* pRegions; +} VkCopyTensorInfoARM; + +typedef struct VkMemoryDedicatedAllocateInfoTensorARM { + VkStructureType sType; + const void* pNext; + VkTensorARM tensor; +} VkMemoryDedicatedAllocateInfoTensorARM; + +typedef struct VkPhysicalDeviceExternalTensorInfoARM { + VkStructureType sType; + const void* pNext; + VkTensorCreateFlagsARM flags; + const VkTensorDescriptionARM* pDescription; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkPhysicalDeviceExternalTensorInfoARM; + +typedef struct VkExternalTensorPropertiesARM { + VkStructureType sType; + const void* pNext; + VkExternalMemoryProperties externalMemoryProperties; +} VkExternalTensorPropertiesARM; + +typedef struct VkExternalMemoryTensorCreateInfoARM { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlags handleTypes; +} VkExternalMemoryTensorCreateInfoARM; + +typedef struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 descriptorBufferTensorDescriptors; +} VkPhysicalDeviceDescriptorBufferTensorFeaturesARM; + +typedef struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM { + VkStructureType sType; + void* pNext; + size_t tensorCaptureReplayDescriptorDataSize; + size_t tensorViewCaptureReplayDescriptorDataSize; + size_t tensorDescriptorSize; +} VkPhysicalDeviceDescriptorBufferTensorPropertiesARM; + +typedef struct VkDescriptorGetTensorInfoARM { + VkStructureType sType; + const void* pNext; + VkTensorViewARM tensorView; +} VkDescriptorGetTensorInfoARM; + +typedef struct VkTensorCaptureDescriptorDataInfoARM { + VkStructureType sType; + const void* pNext; + VkTensorARM tensor; +} VkTensorCaptureDescriptorDataInfoARM; + +typedef struct VkTensorViewCaptureDescriptorDataInfoARM { + VkStructureType sType; + const void* pNext; + VkTensorViewARM tensorView; +} VkTensorViewCaptureDescriptorDataInfoARM; + +typedef struct VkFrameBoundaryTensorsARM { + VkStructureType sType; + const void* pNext; + uint32_t tensorCount; + const VkTensorARM* pTensors; +} VkFrameBoundaryTensorsARM; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateTensorARM)(VkDevice device, const VkTensorCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkTensorARM* pTensor); +typedef void (VKAPI_PTR *PFN_vkDestroyTensorARM)(VkDevice device, VkTensorARM tensor, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateTensorViewARM)(VkDevice device, const VkTensorViewCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkTensorViewARM* pView); +typedef void (VKAPI_PTR *PFN_vkDestroyTensorViewARM)(VkDevice device, VkTensorViewARM tensorView, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkGetTensorMemoryRequirementsARM)(VkDevice device, const VkTensorMemoryRequirementsInfoARM* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef VkResult (VKAPI_PTR *PFN_vkBindTensorMemoryARM)(VkDevice device, uint32_t bindInfoCount, const VkBindTensorMemoryInfoARM* pBindInfos); +typedef void (VKAPI_PTR *PFN_vkGetDeviceTensorMemoryRequirementsARM)(VkDevice device, const VkDeviceTensorMemoryRequirementsARM* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkCmdCopyTensorARM)(VkCommandBuffer commandBuffer, const VkCopyTensorInfoARM* pCopyTensorInfo); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalTensorInfoARM* pExternalTensorInfo, VkExternalTensorPropertiesARM* pExternalTensorProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetTensorOpaqueCaptureDescriptorDataARM)(VkDevice device, const VkTensorCaptureDescriptorDataInfoARM* pInfo, void* pData); +typedef VkResult (VKAPI_PTR *PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM)(VkDevice device, const VkTensorViewCaptureDescriptorDataInfoARM* pInfo, void* pData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateTensorARM( + VkDevice device, + const VkTensorCreateInfoARM* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkTensorARM* pTensor); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyTensorARM( + VkDevice device, + VkTensorARM tensor, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateTensorViewARM( + VkDevice device, + const VkTensorViewCreateInfoARM* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkTensorViewARM* pView); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyTensorViewARM( + VkDevice device, + VkTensorViewARM tensorView, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetTensorMemoryRequirementsARM( + VkDevice device, + const VkTensorMemoryRequirementsInfoARM* pInfo, + VkMemoryRequirements2* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBindTensorMemoryARM( + VkDevice device, + uint32_t bindInfoCount, + const VkBindTensorMemoryInfoARM* pBindInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceTensorMemoryRequirementsARM( + VkDevice device, + const VkDeviceTensorMemoryRequirementsARM* pInfo, + VkMemoryRequirements2* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyTensorARM( + VkCommandBuffer commandBuffer, + const VkCopyTensorInfoARM* pCopyTensorInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalTensorPropertiesARM( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceExternalTensorInfoARM* pExternalTensorInfo, + VkExternalTensorPropertiesARM* pExternalTensorProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetTensorOpaqueCaptureDescriptorDataARM( + VkDevice device, + const VkTensorCaptureDescriptorDataInfoARM* pInfo, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetTensorViewOpaqueCaptureDescriptorDataARM( + VkDevice device, + const VkTensorViewCaptureDescriptorDataInfoARM* pInfo, + void* pData); +#endif +#endif + + +// VK_EXT_shader_module_identifier is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_module_identifier 1 +#define VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT 32U +#define VK_EXT_SHADER_MODULE_IDENTIFIER_SPEC_VERSION 1 +#define VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME "VK_EXT_shader_module_identifier" +typedef struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderModuleIdentifier; +} VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT; + +typedef struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT { + VkStructureType sType; + void* pNext; + uint8_t shaderModuleIdentifierAlgorithmUUID[VK_UUID_SIZE]; +} VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT; + +typedef struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t identifierSize; + const uint8_t* pIdentifier; +} VkPipelineShaderStageModuleIdentifierCreateInfoEXT; + +typedef struct VkShaderModuleIdentifierEXT { + VkStructureType sType; + void* pNext; + uint32_t identifierSize; + uint8_t identifier[VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT]; +} VkShaderModuleIdentifierEXT; + +typedef void (VKAPI_PTR *PFN_vkGetShaderModuleIdentifierEXT)(VkDevice device, VkShaderModule shaderModule, VkShaderModuleIdentifierEXT* pIdentifier); +typedef void (VKAPI_PTR *PFN_vkGetShaderModuleCreateInfoIdentifierEXT)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModuleIdentifierEXT* pIdentifier); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetShaderModuleIdentifierEXT( + VkDevice device, + VkShaderModule shaderModule, + VkShaderModuleIdentifierEXT* pIdentifier); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetShaderModuleCreateInfoIdentifierEXT( + VkDevice device, + const VkShaderModuleCreateInfo* pCreateInfo, + VkShaderModuleIdentifierEXT* pIdentifier); +#endif +#endif + + +// VK_EXT_rasterization_order_attachment_access is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_rasterization_order_attachment_access 1 +#define VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1 +#define VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME "VK_EXT_rasterization_order_attachment_access" + + +// VK_NV_optical_flow is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_optical_flow 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkOpticalFlowSessionNV) +#define VK_NV_OPTICAL_FLOW_SPEC_VERSION 1 +#define VK_NV_OPTICAL_FLOW_EXTENSION_NAME "VK_NV_optical_flow" + +typedef enum VkOpticalFlowPerformanceLevelNV { + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0, + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1, + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2, + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3, + VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowPerformanceLevelNV; + +typedef enum VkOpticalFlowSessionBindingPointNV { + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8, + VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowSessionBindingPointNV; + +typedef enum VkOpticalFlowGridSizeFlagBitsNV { + VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0, + VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 0x00000001, + VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 0x00000002, + VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 0x00000004, + VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 0x00000008, + VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowGridSizeFlagBitsNV; +typedef VkFlags VkOpticalFlowGridSizeFlagsNV; + +typedef enum VkOpticalFlowUsageFlagBitsNV { + VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0, + VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 0x00000001, + VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 0x00000002, + VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 0x00000004, + VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 0x00000008, + VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 0x00000010, + VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowUsageFlagBitsNV; +typedef VkFlags VkOpticalFlowUsageFlagsNV; + +typedef enum VkOpticalFlowSessionCreateFlagBitsNV { + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 0x00000001, + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 0x00000002, + VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 0x00000004, + VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 0x00000008, + VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 0x00000010, + VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowSessionCreateFlagBitsNV; +typedef VkFlags VkOpticalFlowSessionCreateFlagsNV; + +typedef enum VkOpticalFlowExecuteFlagBitsNV { + VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 0x00000001, + VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkOpticalFlowExecuteFlagBitsNV; +typedef VkFlags VkOpticalFlowExecuteFlagsNV; +typedef struct VkPhysicalDeviceOpticalFlowFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 opticalFlow; +} VkPhysicalDeviceOpticalFlowFeaturesNV; + +typedef struct VkPhysicalDeviceOpticalFlowPropertiesNV { + VkStructureType sType; + void* pNext; + VkOpticalFlowGridSizeFlagsNV supportedOutputGridSizes; + VkOpticalFlowGridSizeFlagsNV supportedHintGridSizes; + VkBool32 hintSupported; + VkBool32 costSupported; + VkBool32 bidirectionalFlowSupported; + VkBool32 globalFlowSupported; + uint32_t minWidth; + uint32_t minHeight; + uint32_t maxWidth; + uint32_t maxHeight; + uint32_t maxNumRegionsOfInterest; +} VkPhysicalDeviceOpticalFlowPropertiesNV; + +typedef struct VkOpticalFlowImageFormatInfoNV { + VkStructureType sType; + const void* pNext; + VkOpticalFlowUsageFlagsNV usage; +} VkOpticalFlowImageFormatInfoNV; + +typedef struct VkOpticalFlowImageFormatPropertiesNV { + VkStructureType sType; + void* pNext; + VkFormat format; +} VkOpticalFlowImageFormatPropertiesNV; + +typedef struct VkOpticalFlowSessionCreateInfoNV { + VkStructureType sType; + void* pNext; + uint32_t width; + uint32_t height; + VkFormat imageFormat; + VkFormat flowVectorFormat; + VkFormat costFormat; + VkOpticalFlowGridSizeFlagsNV outputGridSize; + VkOpticalFlowGridSizeFlagsNV hintGridSize; + VkOpticalFlowPerformanceLevelNV performanceLevel; + VkOpticalFlowSessionCreateFlagsNV flags; +} VkOpticalFlowSessionCreateInfoNV; + +typedef struct VkOpticalFlowSessionCreatePrivateDataInfoNV { + VkStructureType sType; + void* pNext; + uint32_t id; + uint32_t size; + const void* pPrivateData; +} VkOpticalFlowSessionCreatePrivateDataInfoNV; + +typedef struct VkOpticalFlowExecuteInfoNV { + VkStructureType sType; + void* pNext; + VkOpticalFlowExecuteFlagsNV flags; + uint32_t regionCount; + const VkRect2D* pRegions; +} VkOpticalFlowExecuteInfoNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)(VkPhysicalDevice physicalDevice, const VkOpticalFlowImageFormatInfoNV* pOpticalFlowImageFormatInfo, uint32_t* pFormatCount, VkOpticalFlowImageFormatPropertiesNV* pImageFormatProperties); +typedef VkResult (VKAPI_PTR *PFN_vkCreateOpticalFlowSessionNV)(VkDevice device, const VkOpticalFlowSessionCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkOpticalFlowSessionNV* pSession); +typedef void (VKAPI_PTR *PFN_vkDestroyOpticalFlowSessionNV)(VkDevice device, VkOpticalFlowSessionNV session, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkBindOpticalFlowSessionImageNV)(VkDevice device, VkOpticalFlowSessionNV session, VkOpticalFlowSessionBindingPointNV bindingPoint, VkImageView view, VkImageLayout layout); +typedef void (VKAPI_PTR *PFN_vkCmdOpticalFlowExecuteNV)(VkCommandBuffer commandBuffer, VkOpticalFlowSessionNV session, const VkOpticalFlowExecuteInfoNV* pExecuteInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceOpticalFlowImageFormatsNV( + VkPhysicalDevice physicalDevice, + const VkOpticalFlowImageFormatInfoNV* pOpticalFlowImageFormatInfo, + uint32_t* pFormatCount, + VkOpticalFlowImageFormatPropertiesNV* pImageFormatProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateOpticalFlowSessionNV( + VkDevice device, + const VkOpticalFlowSessionCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkOpticalFlowSessionNV* pSession); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyOpticalFlowSessionNV( + VkDevice device, + VkOpticalFlowSessionNV session, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBindOpticalFlowSessionImageNV( + VkDevice device, + VkOpticalFlowSessionNV session, + VkOpticalFlowSessionBindingPointNV bindingPoint, + VkImageView view, + VkImageLayout layout); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdOpticalFlowExecuteNV( + VkCommandBuffer commandBuffer, + VkOpticalFlowSessionNV session, + const VkOpticalFlowExecuteInfoNV* pExecuteInfo); +#endif +#endif + + +// VK_EXT_legacy_dithering is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_legacy_dithering 1 +#define VK_EXT_LEGACY_DITHERING_SPEC_VERSION 2 +#define VK_EXT_LEGACY_DITHERING_EXTENSION_NAME "VK_EXT_legacy_dithering" +typedef struct VkPhysicalDeviceLegacyDitheringFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 legacyDithering; +} VkPhysicalDeviceLegacyDitheringFeaturesEXT; + + + +// VK_EXT_pipeline_protected_access is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_pipeline_protected_access 1 +#define VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME "VK_EXT_pipeline_protected_access" +typedef VkPhysicalDevicePipelineProtectedAccessFeatures VkPhysicalDevicePipelineProtectedAccessFeaturesEXT; + + + +// VK_AMD_anti_lag is a preprocessor guard. Do not pass it to API calls. +#define VK_AMD_anti_lag 1 +#define VK_AMD_ANTI_LAG_SPEC_VERSION 1 +#define VK_AMD_ANTI_LAG_EXTENSION_NAME "VK_AMD_anti_lag" + +typedef enum VkAntiLagModeAMD { + VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD = 0, + VK_ANTI_LAG_MODE_ON_AMD = 1, + VK_ANTI_LAG_MODE_OFF_AMD = 2, + VK_ANTI_LAG_MODE_MAX_ENUM_AMD = 0x7FFFFFFF +} VkAntiLagModeAMD; + +typedef enum VkAntiLagStageAMD { + VK_ANTI_LAG_STAGE_INPUT_AMD = 0, + VK_ANTI_LAG_STAGE_PRESENT_AMD = 1, + VK_ANTI_LAG_STAGE_MAX_ENUM_AMD = 0x7FFFFFFF +} VkAntiLagStageAMD; +typedef struct VkPhysicalDeviceAntiLagFeaturesAMD { + VkStructureType sType; + void* pNext; + VkBool32 antiLag; +} VkPhysicalDeviceAntiLagFeaturesAMD; + +typedef struct VkAntiLagPresentationInfoAMD { + VkStructureType sType; + void* pNext; + VkAntiLagStageAMD stage; + uint64_t frameIndex; +} VkAntiLagPresentationInfoAMD; + +typedef struct VkAntiLagDataAMD { + VkStructureType sType; + const void* pNext; + VkAntiLagModeAMD mode; + uint32_t maxFPS; + const VkAntiLagPresentationInfoAMD* pPresentationInfo; +} VkAntiLagDataAMD; + +typedef void (VKAPI_PTR *PFN_vkAntiLagUpdateAMD)(VkDevice device, const VkAntiLagDataAMD* pData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkAntiLagUpdateAMD( + VkDevice device, + const VkAntiLagDataAMD* pData); +#endif +#endif + + +// VK_EXT_shader_object is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_object 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderEXT) +#define VK_EXT_SHADER_OBJECT_SPEC_VERSION 1 +#define VK_EXT_SHADER_OBJECT_EXTENSION_NAME "VK_EXT_shader_object" + +typedef enum VkShaderCodeTypeEXT { + VK_SHADER_CODE_TYPE_BINARY_EXT = 0, + VK_SHADER_CODE_TYPE_SPIRV_EXT = 1, + VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkShaderCodeTypeEXT; + +typedef enum VkDepthClampModeEXT { + VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT = 0, + VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT = 1, + VK_DEPTH_CLAMP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkDepthClampModeEXT; + +typedef enum VkShaderCreateFlagBitsEXT { + VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 0x00000001, + VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT = 0x00000400, + VK_SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM = 0x00000800, + VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000002, + VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000004, + VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 0x00000008, + VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 0x00000010, + VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 0x00000020, + VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00000040, + VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT = 0x00000080, + VK_SHADER_CREATE_64_BIT_INDEXING_BIT_EXT = 0x00008000, + VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkShaderCreateFlagBitsEXT; +typedef VkFlags VkShaderCreateFlagsEXT; +typedef struct VkPhysicalDeviceShaderObjectFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderObject; +} VkPhysicalDeviceShaderObjectFeaturesEXT; + +typedef struct VkPhysicalDeviceShaderObjectPropertiesEXT { + VkStructureType sType; + void* pNext; + uint8_t shaderBinaryUUID[VK_UUID_SIZE]; + uint32_t shaderBinaryVersion; +} VkPhysicalDeviceShaderObjectPropertiesEXT; + +typedef struct VkShaderCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkShaderCreateFlagsEXT flags; + VkShaderStageFlagBits stage; + VkShaderStageFlags nextStage; + VkShaderCodeTypeEXT codeType; + size_t codeSize; + const void* pCode; + const char* pName; + uint32_t setLayoutCount; + const VkDescriptorSetLayout* pSetLayouts; + uint32_t pushConstantRangeCount; + const VkPushConstantRange* pPushConstantRanges; + const VkSpecializationInfo* pSpecializationInfo; +} VkShaderCreateInfoEXT; + +typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkShaderRequiredSubgroupSizeCreateInfoEXT; + +typedef struct VkDepthClampRangeEXT { + float minDepthClamp; + float maxDepthClamp; +} VkDepthClampRangeEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateShadersEXT)(VkDevice device, uint32_t createInfoCount, const VkShaderCreateInfoEXT* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkShaderEXT* pShaders); +typedef void (VKAPI_PTR *PFN_vkDestroyShaderEXT)(VkDevice device, VkShaderEXT shader, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetShaderBinaryDataEXT)(VkDevice device, VkShaderEXT shader, size_t* pDataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdBindShadersEXT)(VkCommandBuffer commandBuffer, uint32_t stageCount, const VkShaderStageFlagBits* pStages, const VkShaderEXT* pShaders); +typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClampRangeEXT)(VkCommandBuffer commandBuffer, VkDepthClampModeEXT depthClampMode, const VkDepthClampRangeEXT* pDepthClampRange); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateShadersEXT( + VkDevice device, + uint32_t createInfoCount, + const VkShaderCreateInfoEXT* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkShaderEXT* pShaders); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyShaderEXT( + VkDevice device, + VkShaderEXT shader, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderBinaryDataEXT( + VkDevice device, + VkShaderEXT shader, + size_t* pDataSize, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindShadersEXT( + VkCommandBuffer commandBuffer, + uint32_t stageCount, + const VkShaderStageFlagBits* pStages, + const VkShaderEXT* pShaders); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClampRangeEXT( + VkCommandBuffer commandBuffer, + VkDepthClampModeEXT depthClampMode, + const VkDepthClampRangeEXT* pDepthClampRange); +#endif +#endif + + +// VK_QCOM_tile_properties is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_tile_properties 1 +#define VK_QCOM_TILE_PROPERTIES_SPEC_VERSION 1 +#define VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME "VK_QCOM_tile_properties" +typedef struct VkPhysicalDeviceTilePropertiesFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 tileProperties; +} VkPhysicalDeviceTilePropertiesFeaturesQCOM; + +typedef struct VkTilePropertiesQCOM { + VkStructureType sType; + void* pNext; + VkExtent3D tileSize; + VkExtent2D apronSize; + VkOffset2D origin; +} VkTilePropertiesQCOM; + +typedef VkResult (VKAPI_PTR *PFN_vkGetFramebufferTilePropertiesQCOM)(VkDevice device, VkFramebuffer framebuffer, uint32_t* pPropertiesCount, VkTilePropertiesQCOM* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDynamicRenderingTilePropertiesQCOM)(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetFramebufferTilePropertiesQCOM( + VkDevice device, + VkFramebuffer framebuffer, + uint32_t* pPropertiesCount, + VkTilePropertiesQCOM* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDynamicRenderingTilePropertiesQCOM( + VkDevice device, + const VkRenderingInfo* pRenderingInfo, + VkTilePropertiesQCOM* pProperties); +#endif +#endif + + +// VK_SEC_amigo_profiling is a preprocessor guard. Do not pass it to API calls. +#define VK_SEC_amigo_profiling 1 +#define VK_SEC_AMIGO_PROFILING_SPEC_VERSION 1 +#define VK_SEC_AMIGO_PROFILING_EXTENSION_NAME "VK_SEC_amigo_profiling" +typedef struct VkPhysicalDeviceAmigoProfilingFeaturesSEC { + VkStructureType sType; + void* pNext; + VkBool32 amigoProfiling; +} VkPhysicalDeviceAmigoProfilingFeaturesSEC; + +typedef struct VkAmigoProfilingSubmitInfoSEC { + VkStructureType sType; + const void* pNext; + uint64_t firstDrawTimestamp; + uint64_t swapBufferTimestamp; +} VkAmigoProfilingSubmitInfoSEC; + + + +// VK_QCOM_multiview_per_view_viewports is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_multiview_per_view_viewports 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME "VK_QCOM_multiview_per_view_viewports" +typedef struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 multiviewPerViewViewports; +} VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM; + + + +// VK_NV_ray_tracing_invocation_reorder is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_ray_tracing_invocation_reorder 1 +#define VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION 1 +#define VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME "VK_NV_ray_tracing_invocation_reorder" + +typedef enum VkRayTracingInvocationReorderModeEXT { + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT = 0, + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT = 1, + VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT, + VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT, + VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkRayTracingInvocationReorderModeEXT; +typedef VkRayTracingInvocationReorderModeEXT VkRayTracingInvocationReorderModeNV; + +typedef struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV { + VkStructureType sType; + void* pNext; + VkRayTracingInvocationReorderModeEXT rayTracingInvocationReorderReorderingHint; +} VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV; + +typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingInvocationReorder; +} VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV; + + + +// VK_NV_cooperative_vector is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_cooperative_vector 1 +#define VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION 4 +#define VK_NV_COOPERATIVE_VECTOR_EXTENSION_NAME "VK_NV_cooperative_vector" + +typedef enum VkCooperativeVectorMatrixLayoutNV { + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV = 0, + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV = 1, + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV = 2, + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV = 3, + VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_MAX_ENUM_NV = 0x7FFFFFFF +} VkCooperativeVectorMatrixLayoutNV; +typedef struct VkPhysicalDeviceCooperativeVectorPropertiesNV { + VkStructureType sType; + void* pNext; + VkShaderStageFlags cooperativeVectorSupportedStages; + VkBool32 cooperativeVectorTrainingFloat16Accumulation; + VkBool32 cooperativeVectorTrainingFloat32Accumulation; + uint32_t maxCooperativeVectorComponents; +} VkPhysicalDeviceCooperativeVectorPropertiesNV; + +typedef struct VkPhysicalDeviceCooperativeVectorFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 cooperativeVector; + VkBool32 cooperativeVectorTraining; +} VkPhysicalDeviceCooperativeVectorFeaturesNV; + +typedef struct VkCooperativeVectorPropertiesNV { + VkStructureType sType; + void* pNext; + VkComponentTypeKHR inputType; + VkComponentTypeKHR inputInterpretation; + VkComponentTypeKHR matrixInterpretation; + VkComponentTypeKHR biasInterpretation; + VkComponentTypeKHR resultType; + VkBool32 transpose; +} VkCooperativeVectorPropertiesNV; + +typedef struct VkConvertCooperativeVectorMatrixInfoNV { + VkStructureType sType; + const void* pNext; + size_t srcSize; + VkDeviceOrHostAddressConstKHR srcData; + size_t* pDstSize; + VkDeviceOrHostAddressKHR dstData; + VkComponentTypeKHR srcComponentType; + VkComponentTypeKHR dstComponentType; + uint32_t numRows; + uint32_t numColumns; + VkCooperativeVectorMatrixLayoutNV srcLayout; + size_t srcStride; + VkCooperativeVectorMatrixLayoutNV dstLayout; + size_t dstStride; +} VkConvertCooperativeVectorMatrixInfoNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeVectorPropertiesNV* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkConvertCooperativeVectorMatrixNV)(VkDevice device, const VkConvertCooperativeVectorMatrixInfoNV* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdConvertCooperativeVectorMatrixNV)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkConvertCooperativeVectorMatrixInfoNV* pInfos); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeVectorPropertiesNV( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkCooperativeVectorPropertiesNV* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkConvertCooperativeVectorMatrixNV( + VkDevice device, + const VkConvertCooperativeVectorMatrixInfoNV* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdConvertCooperativeVectorMatrixNV( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkConvertCooperativeVectorMatrixInfoNV* pInfos); +#endif +#endif + + +// VK_NV_extended_sparse_address_space is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_extended_sparse_address_space 1 +#define VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION 1 +#define VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME "VK_NV_extended_sparse_address_space" +typedef struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 extendedSparseAddressSpace; +} VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV; + +typedef struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV { + VkStructureType sType; + void* pNext; + VkDeviceSize extendedSparseAddressSpaceSize; + VkImageUsageFlags extendedSparseImageUsageFlags; + VkBufferUsageFlags extendedSparseBufferUsageFlags; +} VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV; + + + +// VK_EXT_mutable_descriptor_type is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_mutable_descriptor_type 1 +#define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1 +#define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_EXT_mutable_descriptor_type" + + +// VK_EXT_legacy_vertex_attributes is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_legacy_vertex_attributes 1 +#define VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION 1 +#define VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME "VK_EXT_legacy_vertex_attributes" +typedef struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 legacyVertexAttributes; +} VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT; + +typedef struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT { + VkStructureType sType; + void* pNext; + VkBool32 nativeUnalignedPerformance; +} VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT; + + + +// VK_EXT_layer_settings is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_layer_settings 1 +#define VK_EXT_LAYER_SETTINGS_SPEC_VERSION 2 +#define VK_EXT_LAYER_SETTINGS_EXTENSION_NAME "VK_EXT_layer_settings" + +typedef enum VkLayerSettingTypeEXT { + VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0, + VK_LAYER_SETTING_TYPE_INT32_EXT = 1, + VK_LAYER_SETTING_TYPE_INT64_EXT = 2, + VK_LAYER_SETTING_TYPE_UINT32_EXT = 3, + VK_LAYER_SETTING_TYPE_UINT64_EXT = 4, + VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5, + VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6, + VK_LAYER_SETTING_TYPE_STRING_EXT = 7, + VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkLayerSettingTypeEXT; +typedef struct VkLayerSettingEXT { + const char* pLayerName; + const char* pSettingName; + VkLayerSettingTypeEXT type; + uint32_t valueCount; + const void* pValues; +} VkLayerSettingEXT; + +typedef struct VkLayerSettingsCreateInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t settingCount; + const VkLayerSettingEXT* pSettings; +} VkLayerSettingsCreateInfoEXT; + + + +// VK_ARM_shader_core_builtins is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_shader_core_builtins 1 +#define VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION 2 +#define VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME "VK_ARM_shader_core_builtins" +typedef struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 shaderCoreBuiltins; +} VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM; + +typedef struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM { + VkStructureType sType; + void* pNext; + uint64_t shaderCoreMask; + uint32_t shaderCoreCount; + uint32_t shaderWarpsPerCore; +} VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM; + + + +// VK_EXT_pipeline_library_group_handles is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_pipeline_library_group_handles 1 +#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME "VK_EXT_pipeline_library_group_handles" +typedef struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 pipelineLibraryGroupHandles; +} VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT; + + + +// VK_EXT_dynamic_rendering_unused_attachments is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_dynamic_rendering_unused_attachments 1 +#define VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION 1 +#define VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME "VK_EXT_dynamic_rendering_unused_attachments" +typedef struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 dynamicRenderingUnusedAttachments; +} VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; + + + +// VK_NV_low_latency2 is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_low_latency2 1 +#define VK_NV_LOW_LATENCY_2_SPEC_VERSION 2 +#define VK_NV_LOW_LATENCY_2_EXTENSION_NAME "VK_NV_low_latency2" + +typedef enum VkLatencyMarkerNV { + VK_LATENCY_MARKER_SIMULATION_START_NV = 0, + VK_LATENCY_MARKER_SIMULATION_END_NV = 1, + VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2, + VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3, + VK_LATENCY_MARKER_PRESENT_START_NV = 4, + VK_LATENCY_MARKER_PRESENT_END_NV = 5, + VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6, + VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7, + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8, + VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9, + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10, + VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11, + VK_LATENCY_MARKER_MAX_ENUM_NV = 0x7FFFFFFF +} VkLatencyMarkerNV; + +typedef enum VkOutOfBandQueueTypeNV { + VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0, + VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1, + VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkOutOfBandQueueTypeNV; +typedef struct VkLatencySleepModeInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 lowLatencyMode; + VkBool32 lowLatencyBoost; + uint32_t minimumIntervalUs; +} VkLatencySleepModeInfoNV; + +typedef struct VkLatencySleepInfoNV { + VkStructureType sType; + const void* pNext; + VkSemaphore signalSemaphore; + uint64_t value; +} VkLatencySleepInfoNV; + +typedef struct VkSetLatencyMarkerInfoNV { + VkStructureType sType; + const void* pNext; + uint64_t presentID; + VkLatencyMarkerNV marker; +} VkSetLatencyMarkerInfoNV; + +typedef struct VkLatencyTimingsFrameReportNV { + VkStructureType sType; + void* pNext; + uint64_t presentID; + uint64_t inputSampleTimeUs; + uint64_t simStartTimeUs; + uint64_t simEndTimeUs; + uint64_t renderSubmitStartTimeUs; + uint64_t renderSubmitEndTimeUs; + uint64_t presentStartTimeUs; + uint64_t presentEndTimeUs; + uint64_t driverStartTimeUs; + uint64_t driverEndTimeUs; + uint64_t osRenderQueueStartTimeUs; + uint64_t osRenderQueueEndTimeUs; + uint64_t gpuRenderStartTimeUs; + uint64_t gpuRenderEndTimeUs; +} VkLatencyTimingsFrameReportNV; + +typedef struct VkGetLatencyMarkerInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t timingCount; + VkLatencyTimingsFrameReportNV* pTimings; +} VkGetLatencyMarkerInfoNV; + +typedef struct VkLatencySubmissionPresentIdNV { + VkStructureType sType; + const void* pNext; + uint64_t presentID; +} VkLatencySubmissionPresentIdNV; + +typedef struct VkSwapchainLatencyCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkBool32 latencyModeEnable; +} VkSwapchainLatencyCreateInfoNV; + +typedef struct VkOutOfBandQueueTypeInfoNV { + VkStructureType sType; + const void* pNext; + VkOutOfBandQueueTypeNV queueType; +} VkOutOfBandQueueTypeInfoNV; + +typedef struct VkLatencySurfaceCapabilitiesNV { + VkStructureType sType; + const void* pNext; + uint32_t presentModeCount; + VkPresentModeKHR* pPresentModes; +} VkLatencySurfaceCapabilitiesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkSetLatencySleepModeNV)(VkDevice device, VkSwapchainKHR swapchain, const VkLatencySleepModeInfoNV* pSleepModeInfo); +typedef VkResult (VKAPI_PTR *PFN_vkLatencySleepNV)(VkDevice device, VkSwapchainKHR swapchain, const VkLatencySleepInfoNV* pSleepInfo); +typedef void (VKAPI_PTR *PFN_vkSetLatencyMarkerNV)(VkDevice device, VkSwapchainKHR swapchain, const VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo); +typedef void (VKAPI_PTR *PFN_vkGetLatencyTimingsNV)(VkDevice device, VkSwapchainKHR swapchain, VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo); +typedef void (VKAPI_PTR *PFN_vkQueueNotifyOutOfBandNV)(VkQueue queue, const VkOutOfBandQueueTypeInfoNV* pQueueTypeInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkSetLatencySleepModeNV( + VkDevice device, + VkSwapchainKHR swapchain, + const VkLatencySleepModeInfoNV* pSleepModeInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkLatencySleepNV( + VkDevice device, + VkSwapchainKHR swapchain, + const VkLatencySleepInfoNV* pSleepInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkSetLatencyMarkerNV( + VkDevice device, + VkSwapchainKHR swapchain, + const VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetLatencyTimingsNV( + VkDevice device, + VkSwapchainKHR swapchain, + VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkQueueNotifyOutOfBandNV( + VkQueue queue, + const VkOutOfBandQueueTypeInfoNV* pQueueTypeInfo); +#endif +#endif + + +// VK_ARM_data_graph is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_data_graph 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDataGraphPipelineSessionARM) +#define VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM 128U +#define VK_ARM_DATA_GRAPH_SPEC_VERSION 1 +#define VK_ARM_DATA_GRAPH_EXTENSION_NAME "VK_ARM_data_graph" + +typedef enum VkDataGraphPipelineSessionBindPointARM { + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM = 0, + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_MAX_ENUM_ARM = 0x7FFFFFFF +} VkDataGraphPipelineSessionBindPointARM; + +typedef enum VkDataGraphPipelineSessionBindPointTypeARM { + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM = 0, + VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MAX_ENUM_ARM = 0x7FFFFFFF +} VkDataGraphPipelineSessionBindPointTypeARM; + +typedef enum VkDataGraphPipelinePropertyARM { + VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM = 0, + VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM = 1, + VK_DATA_GRAPH_PIPELINE_PROPERTY_MAX_ENUM_ARM = 0x7FFFFFFF +} VkDataGraphPipelinePropertyARM; + +typedef enum VkPhysicalDeviceDataGraphProcessingEngineTypeARM { + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM = 0, + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM = 1000629000, + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM = 1000629001, + VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_MAX_ENUM_ARM = 0x7FFFFFFF +} VkPhysicalDeviceDataGraphProcessingEngineTypeARM; + +typedef enum VkPhysicalDeviceDataGraphOperationTypeARM { + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM = 0, + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM = 1000629000, + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM = 1000629001, + VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_MAX_ENUM_ARM = 0x7FFFFFFF +} VkPhysicalDeviceDataGraphOperationTypeARM; +typedef VkFlags64 VkDataGraphPipelineSessionCreateFlagsARM; + +// Flag bits for VkDataGraphPipelineSessionCreateFlagBitsARM +typedef VkFlags64 VkDataGraphPipelineSessionCreateFlagBitsARM; +static const VkDataGraphPipelineSessionCreateFlagBitsARM VK_DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM = 0x00000001ULL; + +typedef VkFlags64 VkDataGraphPipelineDispatchFlagsARM; + +// Flag bits for VkDataGraphPipelineDispatchFlagBitsARM +typedef VkFlags64 VkDataGraphPipelineDispatchFlagBitsARM; + +typedef struct VkPhysicalDeviceDataGraphFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 dataGraph; + VkBool32 dataGraphUpdateAfterBind; + VkBool32 dataGraphSpecializationConstants; + VkBool32 dataGraphDescriptorBuffer; + VkBool32 dataGraphShaderModule; +} VkPhysicalDeviceDataGraphFeaturesARM; + +typedef struct VkDataGraphPipelineConstantARM { + VkStructureType sType; + const void* pNext; + uint32_t id; + const void* pConstantData; +} VkDataGraphPipelineConstantARM; + +typedef struct VkDataGraphPipelineResourceInfoARM { + VkStructureType sType; + const void* pNext; + uint32_t descriptorSet; + uint32_t binding; + uint32_t arrayElement; +} VkDataGraphPipelineResourceInfoARM; + +typedef struct VkDataGraphPipelineCompilerControlCreateInfoARM { + VkStructureType sType; + const void* pNext; + const char* pVendorOptions; +} VkDataGraphPipelineCompilerControlCreateInfoARM; + +typedef struct VkDataGraphPipelineCreateInfoARM { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags2KHR flags; + VkPipelineLayout layout; + uint32_t resourceInfoCount; + const VkDataGraphPipelineResourceInfoARM* pResourceInfos; +} VkDataGraphPipelineCreateInfoARM; + +typedef struct VkDataGraphPipelineShaderModuleCreateInfoARM { + VkStructureType sType; + const void* pNext; + VkShaderModule module; + const char* pName; + const VkSpecializationInfo* pSpecializationInfo; + uint32_t constantCount; + const VkDataGraphPipelineConstantARM* pConstants; +} VkDataGraphPipelineShaderModuleCreateInfoARM; + +typedef struct VkDataGraphPipelineSessionCreateInfoARM { + VkStructureType sType; + const void* pNext; + VkDataGraphPipelineSessionCreateFlagsARM flags; + VkPipeline dataGraphPipeline; +} VkDataGraphPipelineSessionCreateInfoARM; + +typedef struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM { + VkStructureType sType; + const void* pNext; + VkDataGraphPipelineSessionARM session; +} VkDataGraphPipelineSessionBindPointRequirementsInfoARM; + +typedef struct VkDataGraphPipelineSessionBindPointRequirementARM { + VkStructureType sType; + void* pNext; + VkDataGraphPipelineSessionBindPointARM bindPoint; + VkDataGraphPipelineSessionBindPointTypeARM bindPointType; + uint32_t numObjects; +} VkDataGraphPipelineSessionBindPointRequirementARM; + +typedef struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM { + VkStructureType sType; + const void* pNext; + VkDataGraphPipelineSessionARM session; + VkDataGraphPipelineSessionBindPointARM bindPoint; + uint32_t objectIndex; +} VkDataGraphPipelineSessionMemoryRequirementsInfoARM; + +typedef struct VkBindDataGraphPipelineSessionMemoryInfoARM { + VkStructureType sType; + const void* pNext; + VkDataGraphPipelineSessionARM session; + VkDataGraphPipelineSessionBindPointARM bindPoint; + uint32_t objectIndex; + VkDeviceMemory memory; + VkDeviceSize memoryOffset; +} VkBindDataGraphPipelineSessionMemoryInfoARM; + +typedef struct VkDataGraphPipelineInfoARM { + VkStructureType sType; + const void* pNext; + VkPipeline dataGraphPipeline; +} VkDataGraphPipelineInfoARM; + +typedef struct VkDataGraphPipelinePropertyQueryResultARM { + VkStructureType sType; + void* pNext; + VkDataGraphPipelinePropertyARM property; + VkBool32 isText; + size_t dataSize; + void* pData; +} VkDataGraphPipelinePropertyQueryResultARM; + +typedef struct VkDataGraphPipelineIdentifierCreateInfoARM { + VkStructureType sType; + const void* pNext; + uint32_t identifierSize; + const uint8_t* pIdentifier; +} VkDataGraphPipelineIdentifierCreateInfoARM; + +typedef struct VkDataGraphPipelineDispatchInfoARM { + VkStructureType sType; + void* pNext; + VkDataGraphPipelineDispatchFlagsARM flags; +} VkDataGraphPipelineDispatchInfoARM; + +typedef struct VkPhysicalDeviceDataGraphProcessingEngineARM { + VkPhysicalDeviceDataGraphProcessingEngineTypeARM type; + VkBool32 isForeign; +} VkPhysicalDeviceDataGraphProcessingEngineARM; + +typedef struct VkPhysicalDeviceDataGraphOperationSupportARM { + VkPhysicalDeviceDataGraphOperationTypeARM operationType; + char name[VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM]; + uint32_t version; +} VkPhysicalDeviceDataGraphOperationSupportARM; + +typedef struct VkQueueFamilyDataGraphPropertiesARM { + VkStructureType sType; + void* pNext; + VkPhysicalDeviceDataGraphProcessingEngineARM engine; + VkPhysicalDeviceDataGraphOperationSupportARM operation; +} VkQueueFamilyDataGraphPropertiesARM; + +typedef struct VkDataGraphProcessingEngineCreateInfoARM { + VkStructureType sType; + const void* pNext; + uint32_t processingEngineCount; + VkPhysicalDeviceDataGraphProcessingEngineARM* pProcessingEngines; +} VkDataGraphProcessingEngineCreateInfoARM; + +typedef struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM { + VkStructureType sType; + const void* pNext; + uint32_t queueFamilyIndex; + VkPhysicalDeviceDataGraphProcessingEngineTypeARM engineType; +} VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM; + +typedef struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM { + VkStructureType sType; + void* pNext; + VkExternalSemaphoreHandleTypeFlags foreignSemaphoreHandleTypes; + VkExternalMemoryHandleTypeFlags foreignMemoryHandleTypes; +} VkQueueFamilyDataGraphProcessingEnginePropertiesARM; + +typedef struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM { + VkStructureType sType; + const void* pNext; + uint32_t dimension; + uint32_t zeroCount; + uint32_t groupSize; +} VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateDataGraphPipelinesARM)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkDataGraphPipelineCreateInfoARM* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkCreateDataGraphPipelineSessionARM)(VkDevice device, const VkDataGraphPipelineSessionCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDataGraphPipelineSessionARM* pSession); +typedef VkResult (VKAPI_PTR *PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM)(VkDevice device, const VkDataGraphPipelineSessionBindPointRequirementsInfoARM* pInfo, uint32_t* pBindPointRequirementCount, VkDataGraphPipelineSessionBindPointRequirementARM* pBindPointRequirements); +typedef void (VKAPI_PTR *PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM)(VkDevice device, const VkDataGraphPipelineSessionMemoryRequirementsInfoARM* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef VkResult (VKAPI_PTR *PFN_vkBindDataGraphPipelineSessionMemoryARM)(VkDevice device, uint32_t bindInfoCount, const VkBindDataGraphPipelineSessionMemoryInfoARM* pBindInfos); +typedef void (VKAPI_PTR *PFN_vkDestroyDataGraphPipelineSessionARM)(VkDevice device, VkDataGraphPipelineSessionARM session, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdDispatchDataGraphARM)(VkCommandBuffer commandBuffer, VkDataGraphPipelineSessionARM session, const VkDataGraphPipelineDispatchInfoARM* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetDataGraphPipelineAvailablePropertiesARM)(VkDevice device, const VkDataGraphPipelineInfoARM* pPipelineInfo, uint32_t* pPropertiesCount, VkDataGraphPipelinePropertyARM* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetDataGraphPipelinePropertiesARM)(VkDevice device, const VkDataGraphPipelineInfoARM* pPipelineInfo, uint32_t propertiesCount, VkDataGraphPipelinePropertyQueryResultARM* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pQueueFamilyDataGraphPropertyCount, VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties); +typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM* pQueueFamilyDataGraphProcessingEngineInfo, VkQueueFamilyDataGraphProcessingEnginePropertiesARM* pQueueFamilyDataGraphProcessingEngineProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDataGraphPipelinesARM( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkDataGraphPipelineCreateInfoARM* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDataGraphPipelineSessionARM( + VkDevice device, + const VkDataGraphPipelineSessionCreateInfoARM* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkDataGraphPipelineSessionARM* pSession); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDataGraphPipelineSessionBindPointRequirementsARM( + VkDevice device, + const VkDataGraphPipelineSessionBindPointRequirementsInfoARM* pInfo, + uint32_t* pBindPointRequirementCount, + VkDataGraphPipelineSessionBindPointRequirementARM* pBindPointRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDataGraphPipelineSessionMemoryRequirementsARM( + VkDevice device, + const VkDataGraphPipelineSessionMemoryRequirementsInfoARM* pInfo, + VkMemoryRequirements2* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBindDataGraphPipelineSessionMemoryARM( + VkDevice device, + uint32_t bindInfoCount, + const VkBindDataGraphPipelineSessionMemoryInfoARM* pBindInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyDataGraphPipelineSessionARM( + VkDevice device, + VkDataGraphPipelineSessionARM session, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDispatchDataGraphARM( + VkCommandBuffer commandBuffer, + VkDataGraphPipelineSessionARM session, + const VkDataGraphPipelineDispatchInfoARM* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDataGraphPipelineAvailablePropertiesARM( + VkDevice device, + const VkDataGraphPipelineInfoARM* pPipelineInfo, + uint32_t* pPropertiesCount, + VkDataGraphPipelinePropertyARM* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDataGraphPipelinePropertiesARM( + VkDevice device, + const VkDataGraphPipelineInfoARM* pPipelineInfo, + uint32_t propertiesCount, + VkDataGraphPipelinePropertyQueryResultARM* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t* pQueueFamilyDataGraphPropertyCount, + VkQueueFamilyDataGraphPropertiesARM* pQueueFamilyDataGraphProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM* pQueueFamilyDataGraphProcessingEngineInfo, + VkQueueFamilyDataGraphProcessingEnginePropertiesARM* pQueueFamilyDataGraphProcessingEngineProperties); +#endif +#endif + + +// VK_QCOM_multiview_per_view_render_areas is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_multiview_per_view_render_areas 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION 1 +#define VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME "VK_QCOM_multiview_per_view_render_areas" +typedef struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 multiviewPerViewRenderAreas; +} VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM; + +typedef struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM { + VkStructureType sType; + const void* pNext; + uint32_t perViewRenderAreaCount; + const VkRect2D* pPerViewRenderAreas; +} VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM; + + + +// VK_NV_per_stage_descriptor_set is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_per_stage_descriptor_set 1 +#define VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION 1 +#define VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME "VK_NV_per_stage_descriptor_set" +typedef struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 perStageDescriptorSet; + VkBool32 dynamicPipelineLayout; +} VkPhysicalDevicePerStageDescriptorSetFeaturesNV; + + + +// VK_QCOM_image_processing2 is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_image_processing2 1 +#define VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION 1 +#define VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME "VK_QCOM_image_processing2" + +typedef enum VkBlockMatchWindowCompareModeQCOM { + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0, + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1, + VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 0x7FFFFFFF +} VkBlockMatchWindowCompareModeQCOM; +typedef struct VkPhysicalDeviceImageProcessing2FeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 textureBlockMatch2; +} VkPhysicalDeviceImageProcessing2FeaturesQCOM; + +typedef struct VkPhysicalDeviceImageProcessing2PropertiesQCOM { + VkStructureType sType; + void* pNext; + VkExtent2D maxBlockMatchWindow; +} VkPhysicalDeviceImageProcessing2PropertiesQCOM; + +typedef struct VkSamplerBlockMatchWindowCreateInfoQCOM { + VkStructureType sType; + const void* pNext; + VkExtent2D windowExtent; + VkBlockMatchWindowCompareModeQCOM windowCompareMode; +} VkSamplerBlockMatchWindowCreateInfoQCOM; + + + +// VK_QCOM_filter_cubic_weights is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_filter_cubic_weights 1 +#define VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION 1 +#define VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME "VK_QCOM_filter_cubic_weights" + +typedef enum VkCubicFilterWeightsQCOM { + VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0, + VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1, + VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2, + VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3, + VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 0x7FFFFFFF +} VkCubicFilterWeightsQCOM; +typedef struct VkPhysicalDeviceCubicWeightsFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 selectableCubicWeights; +} VkPhysicalDeviceCubicWeightsFeaturesQCOM; + +typedef struct VkSamplerCubicWeightsCreateInfoQCOM { + VkStructureType sType; + const void* pNext; + VkCubicFilterWeightsQCOM cubicWeights; +} VkSamplerCubicWeightsCreateInfoQCOM; + +typedef struct VkBlitImageCubicWeightsInfoQCOM { + VkStructureType sType; + const void* pNext; + VkCubicFilterWeightsQCOM cubicWeights; +} VkBlitImageCubicWeightsInfoQCOM; + + + +// VK_QCOM_ycbcr_degamma is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_ycbcr_degamma 1 +#define VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION 1 +#define VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME "VK_QCOM_ycbcr_degamma" +typedef struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 ycbcrDegamma; +} VkPhysicalDeviceYcbcrDegammaFeaturesQCOM; + +typedef struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM { + VkStructureType sType; + void* pNext; + VkBool32 enableYDegamma; + VkBool32 enableCbCrDegamma; +} VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM; + + + +// VK_QCOM_filter_cubic_clamp is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_filter_cubic_clamp 1 +#define VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION 1 +#define VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME "VK_QCOM_filter_cubic_clamp" +typedef struct VkPhysicalDeviceCubicClampFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 cubicRangeClamp; +} VkPhysicalDeviceCubicClampFeaturesQCOM; + + + +// VK_EXT_attachment_feedback_loop_dynamic_state is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_attachment_feedback_loop_dynamic_state 1 +#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION 1 +#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_attachment_feedback_loop_dynamic_state" +typedef struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 attachmentFeedbackLoopDynamicState; +} VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT)(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetAttachmentFeedbackLoopEnableEXT( + VkCommandBuffer commandBuffer, + VkImageAspectFlags aspectMask); +#endif +#endif + + +// VK_MSFT_layered_driver is a preprocessor guard. Do not pass it to API calls. +#define VK_MSFT_layered_driver 1 +#define VK_MSFT_LAYERED_DRIVER_SPEC_VERSION 1 +#define VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME "VK_MSFT_layered_driver" + +typedef enum VkLayeredDriverUnderlyingApiMSFT { + VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0, + VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1, + VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 0x7FFFFFFF +} VkLayeredDriverUnderlyingApiMSFT; +typedef struct VkPhysicalDeviceLayeredDriverPropertiesMSFT { + VkStructureType sType; + void* pNext; + VkLayeredDriverUnderlyingApiMSFT underlyingAPI; +} VkPhysicalDeviceLayeredDriverPropertiesMSFT; + + + +// VK_NV_descriptor_pool_overallocation is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_descriptor_pool_overallocation 1 +#define VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION 1 +#define VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME "VK_NV_descriptor_pool_overallocation" +typedef struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 descriptorPoolOverallocation; +} VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV; + + + +// VK_QCOM_tile_memory_heap is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_tile_memory_heap 1 +#define VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION 1 +#define VK_QCOM_TILE_MEMORY_HEAP_EXTENSION_NAME "VK_QCOM_tile_memory_heap" +typedef struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 tileMemoryHeap; +} VkPhysicalDeviceTileMemoryHeapFeaturesQCOM; + +typedef struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 queueSubmitBoundary; + VkBool32 tileBufferTransfers; +} VkPhysicalDeviceTileMemoryHeapPropertiesQCOM; + +typedef struct VkTileMemoryRequirementsQCOM { + VkStructureType sType; + void* pNext; + VkDeviceSize size; + VkDeviceSize alignment; +} VkTileMemoryRequirementsQCOM; + +typedef struct VkTileMemoryBindInfoQCOM { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; +} VkTileMemoryBindInfoQCOM; + +typedef struct VkTileMemorySizeInfoQCOM { + VkStructureType sType; + const void* pNext; + VkDeviceSize size; +} VkTileMemorySizeInfoQCOM; + +typedef void (VKAPI_PTR *PFN_vkCmdBindTileMemoryQCOM)(VkCommandBuffer commandBuffer, const VkTileMemoryBindInfoQCOM* pTileMemoryBindInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBindTileMemoryQCOM( + VkCommandBuffer commandBuffer, + const VkTileMemoryBindInfoQCOM* pTileMemoryBindInfo); +#endif +#endif + + +// VK_EXT_memory_decompression is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_memory_decompression 1 +#define VK_EXT_MEMORY_DECOMPRESSION_SPEC_VERSION 1 +#define VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME "VK_EXT_memory_decompression" +typedef struct VkDecompressMemoryRegionEXT { + VkDeviceAddress srcAddress; + VkDeviceAddress dstAddress; + VkDeviceSize compressedSize; + VkDeviceSize decompressedSize; +} VkDecompressMemoryRegionEXT; + +typedef struct VkDecompressMemoryInfoEXT { + VkStructureType sType; + const void* pNext; + VkMemoryDecompressionMethodFlagsEXT decompressionMethod; + uint32_t regionCount; + const VkDecompressMemoryRegionEXT* pRegions; +} VkDecompressMemoryInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryEXT)(VkCommandBuffer commandBuffer, const VkDecompressMemoryInfoEXT* pDecompressMemoryInfoEXT); +typedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryIndirectCountEXT)(VkCommandBuffer commandBuffer, VkMemoryDecompressionMethodFlagsEXT decompressionMethod, VkDeviceAddress indirectCommandsAddress, VkDeviceAddress indirectCommandsCountAddress, uint32_t maxDecompressionCount, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDecompressMemoryEXT( + VkCommandBuffer commandBuffer, + const VkDecompressMemoryInfoEXT* pDecompressMemoryInfoEXT); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDecompressMemoryIndirectCountEXT( + VkCommandBuffer commandBuffer, + VkMemoryDecompressionMethodFlagsEXT decompressionMethod, + VkDeviceAddress indirectCommandsAddress, + VkDeviceAddress indirectCommandsCountAddress, + uint32_t maxDecompressionCount, + uint32_t stride); +#endif +#endif + + +// VK_NV_display_stereo is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_display_stereo 1 +#define VK_NV_DISPLAY_STEREO_SPEC_VERSION 1 +#define VK_NV_DISPLAY_STEREO_EXTENSION_NAME "VK_NV_display_stereo" + +typedef enum VkDisplaySurfaceStereoTypeNV { + VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV = 0, + VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV = 1, + VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV = 2, + VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV = 3, + VK_DISPLAY_SURFACE_STEREO_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkDisplaySurfaceStereoTypeNV; +typedef struct VkDisplaySurfaceStereoCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkDisplaySurfaceStereoTypeNV stereoType; +} VkDisplaySurfaceStereoCreateInfoNV; + +typedef struct VkDisplayModeStereoPropertiesNV { + VkStructureType sType; + void* pNext; + VkBool32 hdmi3DSupported; +} VkDisplayModeStereoPropertiesNV; + + + +// VK_NV_raw_access_chains is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_raw_access_chains 1 +#define VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION 1 +#define VK_NV_RAW_ACCESS_CHAINS_EXTENSION_NAME "VK_NV_raw_access_chains" +typedef struct VkPhysicalDeviceRawAccessChainsFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 shaderRawAccessChains; +} VkPhysicalDeviceRawAccessChainsFeaturesNV; + + + +// VK_NV_external_compute_queue is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_external_compute_queue 1 +VK_DEFINE_HANDLE(VkExternalComputeQueueNV) +#define VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_COMPUTE_QUEUE_EXTENSION_NAME "VK_NV_external_compute_queue" +typedef struct VkExternalComputeQueueDeviceCreateInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t reservedExternalQueues; +} VkExternalComputeQueueDeviceCreateInfoNV; + +typedef struct VkExternalComputeQueueCreateInfoNV { + VkStructureType sType; + const void* pNext; + VkQueue preferredQueue; +} VkExternalComputeQueueCreateInfoNV; + +typedef struct VkExternalComputeQueueDataParamsNV { + VkStructureType sType; + const void* pNext; + uint32_t deviceIndex; +} VkExternalComputeQueueDataParamsNV; + +typedef struct VkPhysicalDeviceExternalComputeQueuePropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t externalDataSize; + uint32_t maxExternalQueues; +} VkPhysicalDeviceExternalComputeQueuePropertiesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateExternalComputeQueueNV)(VkDevice device, const VkExternalComputeQueueCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkExternalComputeQueueNV* pExternalQueue); +typedef void (VKAPI_PTR *PFN_vkDestroyExternalComputeQueueNV)(VkDevice device, VkExternalComputeQueueNV externalQueue, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkGetExternalComputeQueueDataNV)(VkExternalComputeQueueNV externalQueue, VkExternalComputeQueueDataParamsNV* params, void* pData); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateExternalComputeQueueNV( + VkDevice device, + const VkExternalComputeQueueCreateInfoNV* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkExternalComputeQueueNV* pExternalQueue); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyExternalComputeQueueNV( + VkDevice device, + VkExternalComputeQueueNV externalQueue, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetExternalComputeQueueDataNV( + VkExternalComputeQueueNV externalQueue, + VkExternalComputeQueueDataParamsNV* params, + void* pData); +#endif +#endif + + +// VK_NV_command_buffer_inheritance is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_command_buffer_inheritance 1 +#define VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION 1 +#define VK_NV_COMMAND_BUFFER_INHERITANCE_EXTENSION_NAME "VK_NV_command_buffer_inheritance" +typedef struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 commandBufferInheritance; +} VkPhysicalDeviceCommandBufferInheritanceFeaturesNV; + + + +// VK_NV_shader_atomic_float16_vector is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_shader_atomic_float16_vector 1 +#define VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION 1 +#define VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_EXTENSION_NAME "VK_NV_shader_atomic_float16_vector" +typedef struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 shaderFloat16VectorAtomics; +} VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV; + + + +// VK_EXT_shader_replicated_composites is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_replicated_composites 1 +#define VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION 1 +#define VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME "VK_EXT_shader_replicated_composites" +typedef struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderReplicatedComposites; +} VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT; + + + +// VK_EXT_shader_float8 is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_float8 1 +#define VK_EXT_SHADER_FLOAT8_SPEC_VERSION 1 +#define VK_EXT_SHADER_FLOAT8_EXTENSION_NAME "VK_EXT_shader_float8" +typedef struct VkPhysicalDeviceShaderFloat8FeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderFloat8; + VkBool32 shaderFloat8CooperativeMatrix; +} VkPhysicalDeviceShaderFloat8FeaturesEXT; + + + +// VK_NV_ray_tracing_validation is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_ray_tracing_validation 1 +#define VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION 1 +#define VK_NV_RAY_TRACING_VALIDATION_EXTENSION_NAME "VK_NV_ray_tracing_validation" +typedef struct VkPhysicalDeviceRayTracingValidationFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingValidation; +} VkPhysicalDeviceRayTracingValidationFeaturesNV; + + + +// VK_NV_cluster_acceleration_structure is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_cluster_acceleration_structure 1 +#define VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION 4 +#define VK_NV_CLUSTER_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_NV_cluster_acceleration_structure" + +typedef enum VkClusterAccelerationStructureTypeNV { + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV = 0, + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV = 1, + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV = 2, + VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkClusterAccelerationStructureTypeNV; + +typedef enum VkClusterAccelerationStructureOpTypeNV { + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV = 0, + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV = 1, + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV = 2, + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV = 3, + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV = 4, + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV = 5, + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkClusterAccelerationStructureOpTypeNV; + +typedef enum VkClusterAccelerationStructureOpModeNV { + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV = 0, + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV = 1, + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV = 2, + VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_MAX_ENUM_NV = 0x7FFFFFFF +} VkClusterAccelerationStructureOpModeNV; + +typedef enum VkClusterAccelerationStructureAddressResolutionFlagBitsNV { + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV = 0, + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV = 0x00000001, + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV = 0x00000002, + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV = 0x00000004, + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV = 0x00000008, + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV = 0x00000010, + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV = 0x00000020, + VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkClusterAccelerationStructureAddressResolutionFlagBitsNV; +typedef VkFlags VkClusterAccelerationStructureAddressResolutionFlagsNV; + +typedef enum VkClusterAccelerationStructureClusterFlagBitsNV { + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV = 0x00000001, + VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkClusterAccelerationStructureClusterFlagBitsNV; +typedef VkFlags VkClusterAccelerationStructureClusterFlagsNV; + +typedef enum VkClusterAccelerationStructureGeometryFlagBitsNV { + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV = 0x00000001, + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV = 0x00000002, + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV = 0x00000004, + VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkClusterAccelerationStructureGeometryFlagBitsNV; +typedef VkFlags VkClusterAccelerationStructureGeometryFlagsNV; + +typedef enum VkClusterAccelerationStructureIndexFormatFlagBitsNV { + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV = 0x00000001, + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV = 0x00000002, + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV = 0x00000004, + VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkClusterAccelerationStructureIndexFormatFlagBitsNV; +typedef VkFlags VkClusterAccelerationStructureIndexFormatFlagsNV; +typedef struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 clusterAccelerationStructure; +} VkPhysicalDeviceClusterAccelerationStructureFeaturesNV; + +typedef struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxVerticesPerCluster; + uint32_t maxTrianglesPerCluster; + uint32_t clusterScratchByteAlignment; + uint32_t clusterByteAlignment; + uint32_t clusterTemplateByteAlignment; + uint32_t clusterBottomLevelByteAlignment; + uint32_t clusterTemplateBoundsByteAlignment; + uint32_t maxClusterGeometryIndex; +} VkPhysicalDeviceClusterAccelerationStructurePropertiesNV; + +typedef struct VkClusterAccelerationStructureClustersBottomLevelInputNV { + VkStructureType sType; + void* pNext; + uint32_t maxTotalClusterCount; + uint32_t maxClusterCountPerAccelerationStructure; +} VkClusterAccelerationStructureClustersBottomLevelInputNV; + +typedef struct VkClusterAccelerationStructureTriangleClusterInputNV { + VkStructureType sType; + void* pNext; + VkFormat vertexFormat; + uint32_t maxGeometryIndexValue; + uint32_t maxClusterUniqueGeometryCount; + uint32_t maxClusterTriangleCount; + uint32_t maxClusterVertexCount; + uint32_t maxTotalTriangleCount; + uint32_t maxTotalVertexCount; + uint32_t minPositionTruncateBitCount; +} VkClusterAccelerationStructureTriangleClusterInputNV; + +typedef struct VkClusterAccelerationStructureMoveObjectsInputNV { + VkStructureType sType; + void* pNext; + VkClusterAccelerationStructureTypeNV type; + VkBool32 noMoveOverlap; + VkDeviceSize maxMovedBytes; +} VkClusterAccelerationStructureMoveObjectsInputNV; + +typedef union VkClusterAccelerationStructureOpInputNV { + VkClusterAccelerationStructureClustersBottomLevelInputNV* pClustersBottomLevel; + VkClusterAccelerationStructureTriangleClusterInputNV* pTriangleClusters; + VkClusterAccelerationStructureMoveObjectsInputNV* pMoveObjects; +} VkClusterAccelerationStructureOpInputNV; + +typedef struct VkClusterAccelerationStructureInputInfoNV { + VkStructureType sType; + void* pNext; + uint32_t maxAccelerationStructureCount; + VkBuildAccelerationStructureFlagsKHR flags; + VkClusterAccelerationStructureOpTypeNV opType; + VkClusterAccelerationStructureOpModeNV opMode; + VkClusterAccelerationStructureOpInputNV opInput; +} VkClusterAccelerationStructureInputInfoNV; + +typedef struct VkStridedDeviceAddressRegionKHR { + VkDeviceAddress deviceAddress; + VkDeviceSize stride; + VkDeviceSize size; +} VkStridedDeviceAddressRegionKHR; + +typedef struct VkClusterAccelerationStructureCommandsInfoNV { + VkStructureType sType; + void* pNext; + VkClusterAccelerationStructureInputInfoNV input; + VkDeviceAddress dstImplicitData; + VkDeviceAddress scratchData; + VkStridedDeviceAddressRegionKHR dstAddressesArray; + VkStridedDeviceAddressRegionKHR dstSizesArray; + VkStridedDeviceAddressRegionKHR srcInfosArray; + VkDeviceAddress srcInfosCount; + VkClusterAccelerationStructureAddressResolutionFlagsNV addressResolutionFlags; +} VkClusterAccelerationStructureCommandsInfoNV; + +typedef struct VkStridedDeviceAddressNV { + VkDeviceAddress startAddress; + VkDeviceSize strideInBytes; +} VkStridedDeviceAddressNV; + +typedef struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV { + uint32_t geometryIndex:24; + uint32_t reserved:5; + uint32_t geometryFlags:3; +} VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV; + +typedef struct VkClusterAccelerationStructureMoveObjectsInfoNV { + VkDeviceAddress srcAccelerationStructure; +} VkClusterAccelerationStructureMoveObjectsInfoNV; + +typedef struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV { + uint32_t clusterReferencesCount; + uint32_t clusterReferencesStride; + VkDeviceAddress clusterReferences; +} VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV; + +typedef struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV { + uint32_t clusterID; + VkClusterAccelerationStructureClusterFlagsNV clusterFlags; + uint32_t triangleCount:9; + uint32_t vertexCount:9; + uint32_t positionTruncateBitCount:6; + uint32_t indexType:4; + uint32_t opacityMicromapIndexType:4; + VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV baseGeometryIndexAndGeometryFlags; + uint16_t indexBufferStride; + uint16_t vertexBufferStride; + uint16_t geometryIndexAndFlagsBufferStride; + uint16_t opacityMicromapIndexBufferStride; + VkDeviceAddress indexBuffer; + VkDeviceAddress vertexBuffer; + VkDeviceAddress geometryIndexAndFlagsBuffer; + VkDeviceAddress opacityMicromapArray; + VkDeviceAddress opacityMicromapIndexBuffer; +} VkClusterAccelerationStructureBuildTriangleClusterInfoNV; + +typedef struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV { + uint32_t clusterID; + VkClusterAccelerationStructureClusterFlagsNV clusterFlags; + uint32_t triangleCount:9; + uint32_t vertexCount:9; + uint32_t positionTruncateBitCount:6; + uint32_t indexType:4; + uint32_t opacityMicromapIndexType:4; + VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV baseGeometryIndexAndGeometryFlags; + uint16_t indexBufferStride; + uint16_t vertexBufferStride; + uint16_t geometryIndexAndFlagsBufferStride; + uint16_t opacityMicromapIndexBufferStride; + VkDeviceAddress indexBuffer; + VkDeviceAddress vertexBuffer; + VkDeviceAddress geometryIndexAndFlagsBuffer; + VkDeviceAddress opacityMicromapArray; + VkDeviceAddress opacityMicromapIndexBuffer; + VkDeviceAddress instantiationBoundingBoxLimit; +} VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV; + +typedef struct VkClusterAccelerationStructureInstantiateClusterInfoNV { + uint32_t clusterIdOffset; + uint32_t geometryIndexOffset:24; + uint32_t reserved:8; + VkDeviceAddress clusterTemplateAddress; + VkStridedDeviceAddressNV vertexBuffer; +} VkClusterAccelerationStructureInstantiateClusterInfoNV; + +typedef struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV { + VkDeviceAddress clusterTemplateAddress; +} VkClusterAccelerationStructureGetTemplateIndicesInfoNV; + +typedef struct VkAccelerationStructureBuildSizesInfoKHR { + VkStructureType sType; + void* pNext; + VkDeviceSize accelerationStructureSize; + VkDeviceSize updateScratchSize; + VkDeviceSize buildScratchSize; +} VkAccelerationStructureBuildSizesInfoKHR; + +typedef struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV { + VkStructureType sType; + void* pNext; + VkBool32 allowClusterAccelerationStructure; +} VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV; + +typedef void (VKAPI_PTR *PFN_vkGetClusterAccelerationStructureBuildSizesNV)(VkDevice device, const VkClusterAccelerationStructureInputInfoNV* pInfo, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBuildClusterAccelerationStructureIndirectNV)(VkCommandBuffer commandBuffer, const VkClusterAccelerationStructureCommandsInfoNV* pCommandInfos); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetClusterAccelerationStructureBuildSizesNV( + VkDevice device, + const VkClusterAccelerationStructureInputInfoNV* pInfo, + VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBuildClusterAccelerationStructureIndirectNV( + VkCommandBuffer commandBuffer, + const VkClusterAccelerationStructureCommandsInfoNV* pCommandInfos); +#endif +#endif + + +// VK_NV_partitioned_acceleration_structure is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_partitioned_acceleration_structure 1 +#define VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION 1 +#define VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_NV_partitioned_acceleration_structure" +#define VK_PARTITIONED_ACCELERATION_STRUCTURE_PARTITION_INDEX_GLOBAL_NV (~0U) + +typedef enum VkPartitionedAccelerationStructureOpTypeNV { + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV = 0, + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV = 1, + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV = 2, + VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_MAX_ENUM_NV = 0x7FFFFFFF +} VkPartitionedAccelerationStructureOpTypeNV; + +typedef enum VkPartitionedAccelerationStructureInstanceFlagBitsNV { + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV = 0x00000001, + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV = 0x00000002, + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV = 0x00000004, + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV = 0x00000008, + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV = 0x00000010, + VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF +} VkPartitionedAccelerationStructureInstanceFlagBitsNV; +typedef VkFlags VkPartitionedAccelerationStructureInstanceFlagsNV; +typedef struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 partitionedAccelerationStructure; +} VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV; + +typedef struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxPartitionCount; +} VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV; + +typedef struct VkPartitionedAccelerationStructureFlagsNV { + VkStructureType sType; + void* pNext; + VkBool32 enablePartitionTranslation; +} VkPartitionedAccelerationStructureFlagsNV; + +typedef struct VkBuildPartitionedAccelerationStructureIndirectCommandNV { + VkPartitionedAccelerationStructureOpTypeNV opType; + uint32_t argCount; + VkStridedDeviceAddressNV argData; +} VkBuildPartitionedAccelerationStructureIndirectCommandNV; + +typedef struct VkPartitionedAccelerationStructureWriteInstanceDataNV { + VkTransformMatrixKHR transform; + float explicitAABB[6]; + uint32_t instanceID; + uint32_t instanceMask; + uint32_t instanceContributionToHitGroupIndex; + VkPartitionedAccelerationStructureInstanceFlagsNV instanceFlags; + uint32_t instanceIndex; + uint32_t partitionIndex; + VkDeviceAddress accelerationStructure; +} VkPartitionedAccelerationStructureWriteInstanceDataNV; + +typedef struct VkPartitionedAccelerationStructureUpdateInstanceDataNV { + uint32_t instanceIndex; + uint32_t instanceContributionToHitGroupIndex; + VkDeviceAddress accelerationStructure; +} VkPartitionedAccelerationStructureUpdateInstanceDataNV; + +typedef struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV { + uint32_t partitionIndex; + float partitionTranslation[3]; +} VkPartitionedAccelerationStructureWritePartitionTranslationDataNV; + +typedef struct VkWriteDescriptorSetPartitionedAccelerationStructureNV { + VkStructureType sType; + void* pNext; + uint32_t accelerationStructureCount; + const VkDeviceAddress* pAccelerationStructures; +} VkWriteDescriptorSetPartitionedAccelerationStructureNV; + +typedef struct VkPartitionedAccelerationStructureInstancesInputNV { + VkStructureType sType; + void* pNext; + VkBuildAccelerationStructureFlagsKHR flags; + uint32_t instanceCount; + uint32_t maxInstancePerPartitionCount; + uint32_t partitionCount; + uint32_t maxInstanceInGlobalPartitionCount; +} VkPartitionedAccelerationStructureInstancesInputNV; + +typedef struct VkBuildPartitionedAccelerationStructureInfoNV { + VkStructureType sType; + void* pNext; + VkPartitionedAccelerationStructureInstancesInputNV input; + VkDeviceAddress srcAccelerationStructureData; + VkDeviceAddress dstAccelerationStructureData; + VkDeviceAddress scratchData; + VkDeviceAddress srcInfos; + VkDeviceAddress srcInfosCount; +} VkBuildPartitionedAccelerationStructureInfoNV; + +typedef void (VKAPI_PTR *PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV)(VkDevice device, const VkPartitionedAccelerationStructureInstancesInputNV* pInfo, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); +typedef void (VKAPI_PTR *PFN_vkCmdBuildPartitionedAccelerationStructuresNV)(VkCommandBuffer commandBuffer, const VkBuildPartitionedAccelerationStructureInfoNV* pBuildInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetPartitionedAccelerationStructuresBuildSizesNV( + VkDevice device, + const VkPartitionedAccelerationStructureInstancesInputNV* pInfo, + VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBuildPartitionedAccelerationStructuresNV( + VkCommandBuffer commandBuffer, + const VkBuildPartitionedAccelerationStructureInfoNV* pBuildInfo); +#endif +#endif + + +// VK_EXT_device_generated_commands is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_device_generated_commands 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectExecutionSetEXT) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutEXT) +#define VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1 +#define VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_EXT_device_generated_commands" + +typedef enum VkIndirectExecutionSetInfoTypeEXT { + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT = 0, + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT = 1, + VK_INDIRECT_EXECUTION_SET_INFO_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkIndirectExecutionSetInfoTypeEXT; + +typedef enum VkIndirectCommandsTokenTypeEXT { + VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT = 0, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT = 1, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT = 2, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT = 3, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT = 4, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT = 5, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT = 6, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT = 7, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT = 8, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT = 9, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT = 1000135000, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT = 1000135001, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT = 1000202002, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT = 1000202003, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT = 1000328000, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT = 1000328001, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT = 1000386004, + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF +} VkIndirectCommandsTokenTypeEXT; + +typedef enum VkIndirectCommandsInputModeFlagBitsEXT { + VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT = 0x00000001, + VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT = 0x00000002, + VK_INDIRECT_COMMANDS_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkIndirectCommandsInputModeFlagBitsEXT; +typedef VkFlags VkIndirectCommandsInputModeFlagsEXT; + +typedef enum VkIndirectCommandsLayoutUsageFlagBitsEXT { + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT = 0x00000001, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT = 0x00000002, + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkIndirectCommandsLayoutUsageFlagBitsEXT; +typedef VkFlags VkIndirectCommandsLayoutUsageFlagsEXT; +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 deviceGeneratedCommands; + VkBool32 dynamicGeneratedPipelineLayout; +} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + +typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxIndirectPipelineCount; + uint32_t maxIndirectShaderObjectCount; + uint32_t maxIndirectSequenceCount; + uint32_t maxIndirectCommandsTokenCount; + uint32_t maxIndirectCommandsTokenOffset; + uint32_t maxIndirectCommandsIndirectStride; + VkIndirectCommandsInputModeFlagsEXT supportedIndirectCommandsInputModes; + VkShaderStageFlags supportedIndirectCommandsShaderStages; + VkShaderStageFlags supportedIndirectCommandsShaderStagesPipelineBinding; + VkShaderStageFlags supportedIndirectCommandsShaderStagesShaderBinding; + VkBool32 deviceGeneratedCommandsTransformFeedback; + VkBool32 deviceGeneratedCommandsMultiDrawIndirectCount; +} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + +typedef struct VkGeneratedCommandsMemoryRequirementsInfoEXT { + VkStructureType sType; + const void* pNext; + VkIndirectExecutionSetEXT indirectExecutionSet; + VkIndirectCommandsLayoutEXT indirectCommandsLayout; + uint32_t maxSequenceCount; + uint32_t maxDrawCount; +} VkGeneratedCommandsMemoryRequirementsInfoEXT; + +typedef struct VkIndirectExecutionSetPipelineInfoEXT { + VkStructureType sType; + const void* pNext; + VkPipeline initialPipeline; + uint32_t maxPipelineCount; +} VkIndirectExecutionSetPipelineInfoEXT; + +typedef struct VkIndirectExecutionSetShaderLayoutInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t setLayoutCount; + const VkDescriptorSetLayout* pSetLayouts; +} VkIndirectExecutionSetShaderLayoutInfoEXT; + +typedef struct VkIndirectExecutionSetShaderInfoEXT { + VkStructureType sType; + const void* pNext; + uint32_t shaderCount; + const VkShaderEXT* pInitialShaders; + const VkIndirectExecutionSetShaderLayoutInfoEXT* pSetLayoutInfos; + uint32_t maxShaderCount; + uint32_t pushConstantRangeCount; + const VkPushConstantRange* pPushConstantRanges; +} VkIndirectExecutionSetShaderInfoEXT; + +typedef union VkIndirectExecutionSetInfoEXT { + const VkIndirectExecutionSetPipelineInfoEXT* pPipelineInfo; + const VkIndirectExecutionSetShaderInfoEXT* pShaderInfo; +} VkIndirectExecutionSetInfoEXT; + +typedef struct VkIndirectExecutionSetCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkIndirectExecutionSetInfoTypeEXT type; + VkIndirectExecutionSetInfoEXT info; +} VkIndirectExecutionSetCreateInfoEXT; + +typedef struct VkGeneratedCommandsInfoEXT { + VkStructureType sType; + const void* pNext; + VkShaderStageFlags shaderStages; + VkIndirectExecutionSetEXT indirectExecutionSet; + VkIndirectCommandsLayoutEXT indirectCommandsLayout; + VkDeviceAddress indirectAddress; + VkDeviceSize indirectAddressSize; + VkDeviceAddress preprocessAddress; + VkDeviceSize preprocessSize; + uint32_t maxSequenceCount; + VkDeviceAddress sequenceCountAddress; + uint32_t maxDrawCount; +} VkGeneratedCommandsInfoEXT; + +typedef struct VkWriteIndirectExecutionSetPipelineEXT { + VkStructureType sType; + const void* pNext; + uint32_t index; + VkPipeline pipeline; +} VkWriteIndirectExecutionSetPipelineEXT; + +typedef struct VkIndirectCommandsPushConstantTokenEXT { + VkPushConstantRange updateRange; +} VkIndirectCommandsPushConstantTokenEXT; + +typedef struct VkIndirectCommandsVertexBufferTokenEXT { + uint32_t vertexBindingUnit; +} VkIndirectCommandsVertexBufferTokenEXT; + +typedef struct VkIndirectCommandsIndexBufferTokenEXT { + VkIndirectCommandsInputModeFlagBitsEXT mode; +} VkIndirectCommandsIndexBufferTokenEXT; + +typedef struct VkIndirectCommandsExecutionSetTokenEXT { + VkIndirectExecutionSetInfoTypeEXT type; + VkShaderStageFlags shaderStages; +} VkIndirectCommandsExecutionSetTokenEXT; + +typedef union VkIndirectCommandsTokenDataEXT { + const VkIndirectCommandsPushConstantTokenEXT* pPushConstant; + const VkIndirectCommandsVertexBufferTokenEXT* pVertexBuffer; + const VkIndirectCommandsIndexBufferTokenEXT* pIndexBuffer; + const VkIndirectCommandsExecutionSetTokenEXT* pExecutionSet; +} VkIndirectCommandsTokenDataEXT; + +typedef struct VkIndirectCommandsLayoutTokenEXT { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsTokenTypeEXT type; + VkIndirectCommandsTokenDataEXT data; + uint32_t offset; +} VkIndirectCommandsLayoutTokenEXT; + +typedef struct VkIndirectCommandsLayoutCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkIndirectCommandsLayoutUsageFlagsEXT flags; + VkShaderStageFlags shaderStages; + uint32_t indirectStride; + VkPipelineLayout pipelineLayout; + uint32_t tokenCount; + const VkIndirectCommandsLayoutTokenEXT* pTokens; +} VkIndirectCommandsLayoutCreateInfoEXT; + +typedef struct VkDrawIndirectCountIndirectCommandEXT { + VkDeviceAddress bufferAddress; + uint32_t stride; + uint32_t commandCount; +} VkDrawIndirectCountIndirectCommandEXT; + +typedef struct VkBindVertexBufferIndirectCommandEXT { + VkDeviceAddress bufferAddress; + uint32_t size; + uint32_t stride; +} VkBindVertexBufferIndirectCommandEXT; + +typedef struct VkBindIndexBufferIndirectCommandEXT { + VkDeviceAddress bufferAddress; + uint32_t size; + VkIndexType indexType; +} VkBindIndexBufferIndirectCommandEXT; + +typedef struct VkGeneratedCommandsPipelineInfoEXT { + VkStructureType sType; + void* pNext; + VkPipeline pipeline; +} VkGeneratedCommandsPipelineInfoEXT; + +typedef struct VkGeneratedCommandsShaderInfoEXT { + VkStructureType sType; + void* pNext; + uint32_t shaderCount; + const VkShaderEXT* pShaders; +} VkGeneratedCommandsShaderInfoEXT; + +typedef struct VkWriteIndirectExecutionSetShaderEXT { + VkStructureType sType; + const void* pNext; + uint32_t index; + VkShaderEXT shader; +} VkWriteIndirectExecutionSetShaderEXT; + +typedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsEXT)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoEXT* pInfo, VkMemoryRequirements2* pMemoryRequirements); +typedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsEXT)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo, VkCommandBuffer stateCommandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsEXT)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutEXT)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutEXT* pIndirectCommandsLayout); +typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutEXT)(VkDevice device, VkIndirectCommandsLayoutEXT indirectCommandsLayout, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectExecutionSetEXT)(VkDevice device, const VkIndirectExecutionSetCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectExecutionSetEXT* pIndirectExecutionSet); +typedef void (VKAPI_PTR *PFN_vkDestroyIndirectExecutionSetEXT)(VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkUpdateIndirectExecutionSetPipelineEXT)(VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetPipelineEXT* pExecutionSetWrites); +typedef void (VKAPI_PTR *PFN_vkUpdateIndirectExecutionSetShaderEXT)(VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsEXT( + VkDevice device, + const VkGeneratedCommandsMemoryRequirementsInfoEXT* pInfo, + VkMemoryRequirements2* pMemoryRequirements); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsEXT( + VkCommandBuffer commandBuffer, + const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo, + VkCommandBuffer stateCommandBuffer); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsEXT( + VkCommandBuffer commandBuffer, + VkBool32 isPreprocessed, + const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutEXT( + VkDevice device, + const VkIndirectCommandsLayoutCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkIndirectCommandsLayoutEXT* pIndirectCommandsLayout); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutEXT( + VkDevice device, + VkIndirectCommandsLayoutEXT indirectCommandsLayout, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectExecutionSetEXT( + VkDevice device, + const VkIndirectExecutionSetCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkIndirectExecutionSetEXT* pIndirectExecutionSet); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectExecutionSetEXT( + VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkUpdateIndirectExecutionSetPipelineEXT( + VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + const VkWriteIndirectExecutionSetPipelineEXT* pExecutionSetWrites); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkUpdateIndirectExecutionSetShaderEXT( + VkDevice device, + VkIndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites); +#endif +#endif + + +// VK_MESA_image_alignment_control is a preprocessor guard. Do not pass it to API calls. +#define VK_MESA_image_alignment_control 1 +#define VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION 1 +#define VK_MESA_IMAGE_ALIGNMENT_CONTROL_EXTENSION_NAME "VK_MESA_image_alignment_control" +typedef struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA { + VkStructureType sType; + void* pNext; + VkBool32 imageAlignmentControl; +} VkPhysicalDeviceImageAlignmentControlFeaturesMESA; + +typedef struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA { + VkStructureType sType; + void* pNext; + uint32_t supportedImageAlignmentMask; +} VkPhysicalDeviceImageAlignmentControlPropertiesMESA; + +typedef struct VkImageAlignmentControlCreateInfoMESA { + VkStructureType sType; + const void* pNext; + uint32_t maximumRequestedAlignment; +} VkImageAlignmentControlCreateInfoMESA; + + + +// VK_NV_push_constant_bank is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_push_constant_bank 1 +#define VK_NV_PUSH_CONSTANT_BANK_SPEC_VERSION 1 +#define VK_NV_PUSH_CONSTANT_BANK_EXTENSION_NAME "VK_NV_push_constant_bank" +typedef struct VkPushConstantBankInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t bank; +} VkPushConstantBankInfoNV; + +typedef struct VkPhysicalDevicePushConstantBankFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 pushConstantBank; +} VkPhysicalDevicePushConstantBankFeaturesNV; + +typedef struct VkPhysicalDevicePushConstantBankPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t maxGraphicsPushConstantBanks; + uint32_t maxComputePushConstantBanks; + uint32_t maxGraphicsPushDataBanks; + uint32_t maxComputePushDataBanks; +} VkPhysicalDevicePushConstantBankPropertiesNV; + + + +// VK_EXT_ray_tracing_invocation_reorder is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_ray_tracing_invocation_reorder 1 +#define VK_EXT_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION 1 +#define VK_EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME "VK_EXT_ray_tracing_invocation_reorder" +typedef struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT { + VkStructureType sType; + void* pNext; + VkRayTracingInvocationReorderModeEXT rayTracingInvocationReorderReorderingHint; + uint32_t maxShaderBindingTableRecordIndex; +} VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT; + +typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingInvocationReorder; +} VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT; + + + +// VK_EXT_depth_clamp_control is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_depth_clamp_control 1 +#define VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION 1 +#define VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME "VK_EXT_depth_clamp_control" +typedef struct VkPhysicalDeviceDepthClampControlFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 depthClampControl; +} VkPhysicalDeviceDepthClampControlFeaturesEXT; + +typedef struct VkPipelineViewportDepthClampControlCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDepthClampModeEXT depthClampMode; + const VkDepthClampRangeEXT* pDepthClampRange; +} VkPipelineViewportDepthClampControlCreateInfoEXT; + + + +// VK_HUAWEI_hdr_vivid is a preprocessor guard. Do not pass it to API calls. +#define VK_HUAWEI_hdr_vivid 1 +#define VK_HUAWEI_HDR_VIVID_SPEC_VERSION 1 +#define VK_HUAWEI_HDR_VIVID_EXTENSION_NAME "VK_HUAWEI_hdr_vivid" +typedef struct VkPhysicalDeviceHdrVividFeaturesHUAWEI { + VkStructureType sType; + void* pNext; + VkBool32 hdrVivid; +} VkPhysicalDeviceHdrVividFeaturesHUAWEI; + +typedef struct VkHdrVividDynamicMetadataHUAWEI { + VkStructureType sType; + const void* pNext; + size_t dynamicMetadataSize; + const void* pDynamicMetadata; +} VkHdrVividDynamicMetadataHUAWEI; + + + +// VK_NV_cooperative_matrix2 is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_cooperative_matrix2 1 +#define VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION 1 +#define VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME "VK_NV_cooperative_matrix2" +typedef struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t MGranularity; + uint32_t NGranularity; + uint32_t KGranularity; + VkComponentTypeKHR AType; + VkComponentTypeKHR BType; + VkComponentTypeKHR CType; + VkComponentTypeKHR ResultType; + VkBool32 saturatingAccumulation; + VkScopeKHR scope; + uint32_t workgroupInvocations; +} VkCooperativeMatrixFlexibleDimensionsPropertiesNV; + +typedef struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 cooperativeMatrixWorkgroupScope; + VkBool32 cooperativeMatrixFlexibleDimensions; + VkBool32 cooperativeMatrixReductions; + VkBool32 cooperativeMatrixConversions; + VkBool32 cooperativeMatrixPerElementOperations; + VkBool32 cooperativeMatrixTensorAddressing; + VkBool32 cooperativeMatrixBlockLoads; +} VkPhysicalDeviceCooperativeMatrix2FeaturesNV; + +typedef struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV { + VkStructureType sType; + void* pNext; + uint32_t cooperativeMatrixWorkgroupScopeMaxWorkgroupSize; + uint32_t cooperativeMatrixFlexibleDimensionsMaxDimension; + uint32_t cooperativeMatrixWorkgroupScopeReservedSharedMemory; +} VkPhysicalDeviceCooperativeMatrix2PropertiesNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixFlexibleDimensionsPropertiesNV* pProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( + VkPhysicalDevice physicalDevice, + uint32_t* pPropertyCount, + VkCooperativeMatrixFlexibleDimensionsPropertiesNV* pProperties); +#endif +#endif + + +// VK_ARM_pipeline_opacity_micromap is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_pipeline_opacity_micromap 1 +#define VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION 1 +#define VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME "VK_ARM_pipeline_opacity_micromap" +typedef struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 pipelineOpacityMicromap; +} VkPhysicalDevicePipelineOpacityMicromapFeaturesARM; + + + +// VK_ARM_performance_counters_by_region is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_performance_counters_by_region 1 +#define VK_ARM_PERFORMANCE_COUNTERS_BY_REGION_SPEC_VERSION 1 +#define VK_ARM_PERFORMANCE_COUNTERS_BY_REGION_EXTENSION_NAME "VK_ARM_performance_counters_by_region" +typedef VkFlags VkPerformanceCounterDescriptionFlagsARM; +typedef struct VkPhysicalDevicePerformanceCountersByRegionFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 performanceCountersByRegion; +} VkPhysicalDevicePerformanceCountersByRegionFeaturesARM; + +typedef struct VkPhysicalDevicePerformanceCountersByRegionPropertiesARM { + VkStructureType sType; + void* pNext; + uint32_t maxPerRegionPerformanceCounters; + VkExtent2D performanceCounterRegionSize; + uint32_t rowStrideAlignment; + uint32_t regionAlignment; + VkBool32 identityTransformOrder; +} VkPhysicalDevicePerformanceCountersByRegionPropertiesARM; + +typedef struct VkPerformanceCounterARM { + VkStructureType sType; + void* pNext; + uint32_t counterID; +} VkPerformanceCounterARM; + +typedef struct VkPerformanceCounterDescriptionARM { + VkStructureType sType; + void* pNext; + VkPerformanceCounterDescriptionFlagsARM flags; + char name[VK_MAX_DESCRIPTION_SIZE]; +} VkPerformanceCounterDescriptionARM; + +typedef struct VkRenderPassPerformanceCountersByRegionBeginInfoARM { + VkStructureType sType; + void* pNext; + uint32_t counterAddressCount; + const VkDeviceAddress* pCounterAddresses; + VkBool32 serializeRegions; + uint32_t counterIndexCount; + uint32_t* pCounterIndices; +} VkRenderPassPerformanceCountersByRegionBeginInfoARM; + +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterARM* pCounters, VkPerformanceCounterDescriptionARM* pCounterDescriptions); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + uint32_t* pCounterCount, + VkPerformanceCounterARM* pCounters, + VkPerformanceCounterDescriptionARM* pCounterDescriptions); +#endif +#endif + + +// VK_ARM_shader_instrumentation is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_shader_instrumentation 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderInstrumentationARM) +#define VK_ARM_SHADER_INSTRUMENTATION_SPEC_VERSION 1 +#define VK_ARM_SHADER_INSTRUMENTATION_EXTENSION_NAME "VK_ARM_shader_instrumentation" +typedef VkFlags VkShaderInstrumentationValuesFlagsARM; +typedef struct VkPhysicalDeviceShaderInstrumentationFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 shaderInstrumentation; +} VkPhysicalDeviceShaderInstrumentationFeaturesARM; + +typedef struct VkPhysicalDeviceShaderInstrumentationPropertiesARM { + VkStructureType sType; + void* pNext; + uint32_t numMetrics; + VkBool32 perBasicBlockGranularity; +} VkPhysicalDeviceShaderInstrumentationPropertiesARM; + +typedef struct VkShaderInstrumentationCreateInfoARM { + VkStructureType sType; + void* pNext; +} VkShaderInstrumentationCreateInfoARM; + +typedef struct VkShaderInstrumentationMetricDescriptionARM { + VkStructureType sType; + void* pNext; + char name[VK_MAX_DESCRIPTION_SIZE]; + char description[VK_MAX_DESCRIPTION_SIZE]; +} VkShaderInstrumentationMetricDescriptionARM; + +typedef struct VkShaderInstrumentationMetricDataHeaderARM { + uint32_t resultIndex; + uint32_t resultSubIndex; + VkShaderStageFlags stages; + uint32_t basicBlockIndex; +} VkShaderInstrumentationMetricDataHeaderARM; + +typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM)(VkPhysicalDevice physicalDevice, uint32_t* pDescriptionCount, VkShaderInstrumentationMetricDescriptionARM* pDescriptions); +typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderInstrumentationARM)(VkDevice device, const VkShaderInstrumentationCreateInfoARM* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderInstrumentationARM* pInstrumentation); +typedef void (VKAPI_PTR *PFN_vkDestroyShaderInstrumentationARM)(VkDevice device, VkShaderInstrumentationARM instrumentation, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBeginShaderInstrumentationARM)(VkCommandBuffer commandBuffer, VkShaderInstrumentationARM instrumentation); +typedef void (VKAPI_PTR *PFN_vkCmdEndShaderInstrumentationARM)(VkCommandBuffer commandBuffer); +typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInstrumentationValuesARM)(VkDevice device, VkShaderInstrumentationARM instrumentation, uint32_t* pMetricBlockCount, void* pMetricValues, VkShaderInstrumentationValuesFlagsARM flags); +typedef void (VKAPI_PTR *PFN_vkClearShaderInstrumentationMetricsARM)(VkDevice device, VkShaderInstrumentationARM instrumentation); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( + VkPhysicalDevice physicalDevice, + uint32_t* pDescriptionCount, + VkShaderInstrumentationMetricDescriptionARM* pDescriptions); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderInstrumentationARM( + VkDevice device, + const VkShaderInstrumentationCreateInfoARM* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkShaderInstrumentationARM* pInstrumentation); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyShaderInstrumentationARM( + VkDevice device, + VkShaderInstrumentationARM instrumentation, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginShaderInstrumentationARM( + VkCommandBuffer commandBuffer, + VkShaderInstrumentationARM instrumentation); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndShaderInstrumentationARM( + VkCommandBuffer commandBuffer); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInstrumentationValuesARM( + VkDevice device, + VkShaderInstrumentationARM instrumentation, + uint32_t* pMetricBlockCount, + void* pMetricValues, + VkShaderInstrumentationValuesFlagsARM flags); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkClearShaderInstrumentationMetricsARM( + VkDevice device, + VkShaderInstrumentationARM instrumentation); +#endif +#endif + + +// VK_EXT_vertex_attribute_robustness is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_vertex_attribute_robustness 1 +#define VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION 1 +#define VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_vertex_attribute_robustness" +typedef struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 vertexAttributeRobustness; +} VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT; + + + +// VK_ARM_format_pack is a preprocessor guard. Do not pass it to API calls. +#define VK_ARM_format_pack 1 +#define VK_ARM_FORMAT_PACK_SPEC_VERSION 1 +#define VK_ARM_FORMAT_PACK_EXTENSION_NAME "VK_ARM_format_pack" +typedef struct VkPhysicalDeviceFormatPackFeaturesARM { + VkStructureType sType; + void* pNext; + VkBool32 formatPack; +} VkPhysicalDeviceFormatPackFeaturesARM; + + + +// VK_VALVE_fragment_density_map_layered is a preprocessor guard. Do not pass it to API calls. +#define VK_VALVE_fragment_density_map_layered 1 +#define VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION 1 +#define VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_EXTENSION_NAME "VK_VALVE_fragment_density_map_layered" +typedef struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE { + VkStructureType sType; + void* pNext; + VkBool32 fragmentDensityMapLayered; +} VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE; + +typedef struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE { + VkStructureType sType; + void* pNext; + uint32_t maxFragmentDensityMapLayers; +} VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE; + +typedef struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE { + VkStructureType sType; + const void* pNext; + uint32_t maxFragmentDensityMapLayers; +} VkPipelineFragmentDensityMapLayeredCreateInfoVALVE; + + + +// VK_NV_present_metering is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_present_metering 1 +#define VK_NV_PRESENT_METERING_SPEC_VERSION 1 +#define VK_NV_PRESENT_METERING_EXTENSION_NAME "VK_NV_present_metering" +typedef struct VkSetPresentConfigNV { + VkStructureType sType; + const void* pNext; + uint32_t numFramesPerBatch; + uint32_t presentConfigFeedback; +} VkSetPresentConfigNV; + +typedef struct VkPhysicalDevicePresentMeteringFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 presentMetering; +} VkPhysicalDevicePresentMeteringFeaturesNV; + + + +// VK_EXT_fragment_density_map_offset is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_fragment_density_map_offset 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1 +#define VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_EXT_fragment_density_map_offset" +typedef VkRenderingEndInfoKHR VkRenderingEndInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdEndRendering2EXT)(VkCommandBuffer commandBuffer, const VkRenderingEndInfoKHR* pRenderingEndInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering2EXT( + VkCommandBuffer commandBuffer, + const VkRenderingEndInfoKHR* pRenderingEndInfo); +#endif +#endif + + +// VK_EXT_zero_initialize_device_memory is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_zero_initialize_device_memory 1 +#define VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION 1 +#define VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME "VK_EXT_zero_initialize_device_memory" +typedef struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 zeroInitializeDeviceMemory; +} VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT; + + + +// VK_EXT_shader_64bit_indexing is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_64bit_indexing 1 +#define VK_EXT_SHADER_64BIT_INDEXING_SPEC_VERSION 1 +#define VK_EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME "VK_EXT_shader_64bit_indexing" +typedef struct VkPhysicalDeviceShader64BitIndexingFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shader64BitIndexing; +} VkPhysicalDeviceShader64BitIndexingFeaturesEXT; + + + +// VK_EXT_custom_resolve is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_custom_resolve 1 +#define VK_EXT_CUSTOM_RESOLVE_SPEC_VERSION 1 +#define VK_EXT_CUSTOM_RESOLVE_EXTENSION_NAME "VK_EXT_custom_resolve" +typedef struct VkPhysicalDeviceCustomResolveFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 customResolve; +} VkPhysicalDeviceCustomResolveFeaturesEXT; + +typedef struct VkBeginCustomResolveInfoEXT { + VkStructureType sType; + void* pNext; +} VkBeginCustomResolveInfoEXT; + +typedef struct VkCustomResolveCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkBool32 customResolve; + uint32_t colorAttachmentCount; + const VkFormat* pColorAttachmentFormats; + VkFormat depthAttachmentFormat; + VkFormat stencilAttachmentFormat; +} VkCustomResolveCreateInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdBeginCustomResolveEXT)(VkCommandBuffer commandBuffer, const VkBeginCustomResolveInfoEXT* pBeginCustomResolveInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBeginCustomResolveEXT( + VkCommandBuffer commandBuffer, + const VkBeginCustomResolveInfoEXT* pBeginCustomResolveInfo); +#endif +#endif + + +// VK_QCOM_data_graph_model is a preprocessor guard. Do not pass it to API calls. +#define VK_QCOM_data_graph_model 1 +#define VK_DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM 3U +#define VK_QCOM_DATA_GRAPH_MODEL_SPEC_VERSION 1 +#define VK_QCOM_DATA_GRAPH_MODEL_EXTENSION_NAME "VK_QCOM_data_graph_model" + +typedef enum VkDataGraphModelCacheTypeQCOM { + VK_DATA_GRAPH_MODEL_CACHE_TYPE_GENERIC_BINARY_QCOM = 0, + VK_DATA_GRAPH_MODEL_CACHE_TYPE_MAX_ENUM_QCOM = 0x7FFFFFFF +} VkDataGraphModelCacheTypeQCOM; +typedef struct VkPipelineCacheHeaderVersionDataGraphQCOM { + uint32_t headerSize; + VkPipelineCacheHeaderVersion headerVersion; + VkDataGraphModelCacheTypeQCOM cacheType; + uint32_t cacheVersion; + uint32_t toolchainVersion[VK_DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM]; +} VkPipelineCacheHeaderVersionDataGraphQCOM; + +typedef struct VkDataGraphPipelineBuiltinModelCreateInfoQCOM { + VkStructureType sType; + const void* pNext; + const VkPhysicalDeviceDataGraphOperationSupportARM* pOperation; +} VkDataGraphPipelineBuiltinModelCreateInfoQCOM; + +typedef struct VkPhysicalDeviceDataGraphModelFeaturesQCOM { + VkStructureType sType; + void* pNext; + VkBool32 dataGraphModel; +} VkPhysicalDeviceDataGraphModelFeaturesQCOM; + + + +// VK_EXT_shader_long_vector is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_long_vector 1 +#define VK_EXT_SHADER_LONG_VECTOR_SPEC_VERSION 1 +#define VK_EXT_SHADER_LONG_VECTOR_EXTENSION_NAME "VK_EXT_shader_long_vector" +typedef struct VkPhysicalDeviceShaderLongVectorFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 longVector; +} VkPhysicalDeviceShaderLongVectorFeaturesEXT; + +typedef struct VkPhysicalDeviceShaderLongVectorPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxVectorComponents; +} VkPhysicalDeviceShaderLongVectorPropertiesEXT; + + + +// VK_SEC_pipeline_cache_incremental_mode is a preprocessor guard. Do not pass it to API calls. +#define VK_SEC_pipeline_cache_incremental_mode 1 +#define VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION 1 +#define VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_EXTENSION_NAME "VK_SEC_pipeline_cache_incremental_mode" +typedef struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC { + VkStructureType sType; + void* pNext; + VkBool32 pipelineCacheIncrementalMode; +} VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC; + + + +// VK_EXT_shader_uniform_buffer_unsized_array is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_uniform_buffer_unsized_array 1 +#define VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_SPEC_VERSION 1 +#define VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME "VK_EXT_shader_uniform_buffer_unsized_array" +typedef struct VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderUniformBufferUnsizedArray; +} VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT; + + + +// VK_NV_compute_occupancy_priority is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_compute_occupancy_priority 1 +#define VK_NV_COMPUTE_OCCUPANCY_PRIORITY_SPEC_VERSION 1 +#define VK_NV_COMPUTE_OCCUPANCY_PRIORITY_EXTENSION_NAME "VK_NV_compute_occupancy_priority" +#define VK_COMPUTE_OCCUPANCY_PRIORITY_LOW_NV 0.25f +#define VK_COMPUTE_OCCUPANCY_PRIORITY_NORMAL_NV 0.50f +#define VK_COMPUTE_OCCUPANCY_PRIORITY_HIGH_NV 0.75f +typedef struct VkComputeOccupancyPriorityParametersNV { + VkStructureType sType; + const void* pNext; + float occupancyPriority; + float occupancyThrottling; +} VkComputeOccupancyPriorityParametersNV; + +typedef struct VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV { + VkStructureType sType; + void* pNext; + VkBool32 computeOccupancyPriority; +} VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV; + +typedef void (VKAPI_PTR *PFN_vkCmdSetComputeOccupancyPriorityNV)(VkCommandBuffer commandBuffer, const VkComputeOccupancyPriorityParametersNV* pParameters); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetComputeOccupancyPriorityNV( + VkCommandBuffer commandBuffer, + const VkComputeOccupancyPriorityParametersNV* pParameters); +#endif +#endif + + +// VK_EXT_shader_subgroup_partitioned is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_shader_subgroup_partitioned 1 +#define VK_EXT_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1 +#define VK_EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_EXT_shader_subgroup_partitioned" +typedef struct VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 shaderSubgroupPartitioned; +} VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT; + + + +// VK_VALVE_shader_mixed_float_dot_product is a preprocessor guard. Do not pass it to API calls. +#define VK_VALVE_shader_mixed_float_dot_product 1 +#define VK_VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_SPEC_VERSION 1 +#define VK_VALVE_SHADER_MIXED_FLOAT_DOT_PRODUCT_EXTENSION_NAME "VK_VALVE_shader_mixed_float_dot_product" +typedef struct VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE { + VkStructureType sType; + void* pNext; + VkBool32 shaderMixedFloatDotProductFloat16AccFloat32; + VkBool32 shaderMixedFloatDotProductFloat16AccFloat16; + VkBool32 shaderMixedFloatDotProductBFloat16Acc; + VkBool32 shaderMixedFloatDotProductFloat8AccFloat32; +} VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE; + + + +// VK_KHR_acceleration_structure is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_acceleration_structure 1 +#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13 +#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure" + +typedef enum 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 = 0x7FFFFFFF +} VkBuildAccelerationStructureModeKHR; +typedef struct VkAccelerationStructureBuildRangeInfoKHR { + uint32_t primitiveCount; + uint32_t primitiveOffset; + uint32_t firstVertex; + uint32_t transformOffset; +} VkAccelerationStructureBuildRangeInfoKHR; + +typedef struct VkAccelerationStructureGeometryTrianglesDataKHR { + VkStructureType sType; + const void* pNext; + VkFormat vertexFormat; + VkDeviceOrHostAddressConstKHR vertexData; + VkDeviceSize vertexStride; + uint32_t maxVertex; + VkIndexType indexType; + VkDeviceOrHostAddressConstKHR indexData; + VkDeviceOrHostAddressConstKHR transformData; +} VkAccelerationStructureGeometryTrianglesDataKHR; + +typedef struct VkAccelerationStructureGeometryAabbsDataKHR { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR data; + VkDeviceSize stride; +} VkAccelerationStructureGeometryAabbsDataKHR; + +typedef struct VkAccelerationStructureGeometryInstancesDataKHR { + VkStructureType sType; + const void* pNext; + VkBool32 arrayOfPointers; + VkDeviceOrHostAddressConstKHR data; +} VkAccelerationStructureGeometryInstancesDataKHR; + +typedef union VkAccelerationStructureGeometryDataKHR { + VkAccelerationStructureGeometryTrianglesDataKHR triangles; + VkAccelerationStructureGeometryAabbsDataKHR aabbs; + VkAccelerationStructureGeometryInstancesDataKHR instances; +} VkAccelerationStructureGeometryDataKHR; + +typedef struct VkAccelerationStructureGeometryKHR { + VkStructureType sType; + const void* pNext; + VkGeometryTypeKHR geometryType; + VkAccelerationStructureGeometryDataKHR geometry; + VkGeometryFlagsKHR flags; +} VkAccelerationStructureGeometryKHR; + +typedef struct VkAccelerationStructureBuildGeometryInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureTypeKHR type; + VkBuildAccelerationStructureFlagsKHR flags; + VkBuildAccelerationStructureModeKHR mode; + VkAccelerationStructureKHR srcAccelerationStructure; + VkAccelerationStructureKHR dstAccelerationStructure; + uint32_t geometryCount; + const VkAccelerationStructureGeometryKHR* pGeometries; + const VkAccelerationStructureGeometryKHR* const* ppGeometries; + VkDeviceOrHostAddressKHR scratchData; +} VkAccelerationStructureBuildGeometryInfoKHR; + +typedef struct VkAccelerationStructureCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureCreateFlagsKHR createFlags; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; + VkAccelerationStructureTypeKHR type; + VkDeviceAddress deviceAddress; +} VkAccelerationStructureCreateInfoKHR; + +typedef struct VkWriteDescriptorSetAccelerationStructureKHR { + VkStructureType sType; + const void* pNext; + uint32_t accelerationStructureCount; + const VkAccelerationStructureKHR* pAccelerationStructures; +} VkWriteDescriptorSetAccelerationStructureKHR; + +typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 accelerationStructure; + VkBool32 accelerationStructureCaptureReplay; + VkBool32 accelerationStructureIndirectBuild; + VkBool32 accelerationStructureHostCommands; + VkBool32 descriptorBindingAccelerationStructureUpdateAfterBind; +} VkPhysicalDeviceAccelerationStructureFeaturesKHR; + +typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR { + VkStructureType sType; + void* pNext; + uint64_t maxGeometryCount; + uint64_t maxInstanceCount; + uint64_t maxPrimitiveCount; + uint32_t maxPerStageDescriptorAccelerationStructures; + uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures; + uint32_t maxDescriptorSetAccelerationStructures; + uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures; + uint32_t minAccelerationStructureScratchOffsetAlignment; +} VkPhysicalDeviceAccelerationStructurePropertiesKHR; + +typedef struct VkAccelerationStructureDeviceAddressInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR accelerationStructure; +} VkAccelerationStructureDeviceAddressInfoKHR; + +typedef struct VkAccelerationStructureVersionInfoKHR { + VkStructureType sType; + const void* pNext; + const uint8_t* pVersionData; +} VkAccelerationStructureVersionInfoKHR; + +typedef struct VkCopyAccelerationStructureToMemoryInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR src; + VkDeviceOrHostAddressKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyAccelerationStructureToMemoryInfoKHR; + +typedef struct VkCopyMemoryToAccelerationStructureInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceOrHostAddressConstKHR src; + VkAccelerationStructureKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyMemoryToAccelerationStructureInfoKHR; + +typedef struct VkCopyAccelerationStructureInfoKHR { + VkStructureType sType; + const void* pNext; + VkAccelerationStructureKHR src; + VkAccelerationStructureKHR dst; + VkCopyAccelerationStructureModeKHR mode; +} VkCopyAccelerationStructureInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure); +typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureKHR)(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const* ppMaxPrimitiveCounts); +typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructuresKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +typedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); +typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery); +typedef void (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility); +typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureBuildSizesKHR)(VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR( + VkDevice device, + const VkAccelerationStructureCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkAccelerationStructureKHR* pAccelerationStructure); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureKHR( + VkDevice device, + VkAccelerationStructureKHR accelerationStructure, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresKHR( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresIndirectKHR( + VkCommandBuffer commandBuffer, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkDeviceAddress* pIndirectDeviceAddresses, + const uint32_t* pIndirectStrides, + const uint32_t* const* ppMaxPrimitiveCounts); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructuresKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + uint32_t infoCount, + const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, + const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureInfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR( + VkDevice device, + uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR* pAccelerationStructures, + VkQueryType queryType, + size_t dataSize, + void* pData, + size_t stride); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR( + VkCommandBuffer commandBuffer, + const VkCopyAccelerationStructureInfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR( + VkCommandBuffer commandBuffer, + const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR( + VkCommandBuffer commandBuffer, + const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR( + VkDevice device, + const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR( + VkCommandBuffer commandBuffer, + uint32_t accelerationStructureCount, + const VkAccelerationStructureKHR* pAccelerationStructures, + VkQueryType queryType, + VkQueryPool queryPool, + uint32_t firstQuery); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR( + VkDevice device, + const VkAccelerationStructureVersionInfoKHR* pVersionInfo, + VkAccelerationStructureCompatibilityKHR* pCompatibility); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureBuildSizesKHR( + VkDevice device, + VkAccelerationStructureBuildTypeKHR buildType, + const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, + const uint32_t* pMaxPrimitiveCounts, + VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); +#endif +#endif + + +// VK_KHR_ray_tracing_pipeline is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_ray_tracing_pipeline 1 +#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1 +#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline" + +typedef enum 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 = 0x7FFFFFFF +} VkShaderGroupShaderKHR; +typedef struct VkRayTracingShaderGroupCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkRayTracingShaderGroupTypeKHR type; + uint32_t generalShader; + uint32_t closestHitShader; + uint32_t anyHitShader; + uint32_t intersectionShader; + const void* pShaderGroupCaptureReplayHandle; +} VkRayTracingShaderGroupCreateInfoKHR; + +typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t maxPipelineRayPayloadSize; + uint32_t maxPipelineRayHitAttributeSize; +} VkRayTracingPipelineInterfaceCreateInfoKHR; + +typedef struct VkRayTracingPipelineCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + uint32_t stageCount; + const VkPipelineShaderStageCreateInfo* pStages; + uint32_t groupCount; + const VkRayTracingShaderGroupCreateInfoKHR* pGroups; + uint32_t maxPipelineRayRecursionDepth; + const VkPipelineLibraryCreateInfoKHR* pLibraryInfo; + const VkRayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface; + const VkPipelineDynamicStateCreateInfo* pDynamicState; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; +} VkRayTracingPipelineCreateInfoKHR; + +typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayTracingPipeline; + VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplay; + VkBool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed; + VkBool32 rayTracingPipelineTraceRaysIndirect; + VkBool32 rayTraversalPrimitiveCulling; +} VkPhysicalDeviceRayTracingPipelineFeaturesKHR; + +typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t shaderGroupHandleSize; + uint32_t maxRayRecursionDepth; + uint32_t maxShaderGroupStride; + uint32_t shaderGroupBaseAlignment; + uint32_t shaderGroupHandleCaptureReplaySize; + uint32_t maxRayDispatchInvocationCount; + uint32_t shaderGroupHandleAlignment; + uint32_t maxRayHitAttributeSize; +} VkPhysicalDeviceRayTracingPipelinePropertiesKHR; + +typedef struct VkTraceRaysIndirectCommandKHR { + uint32_t width; + uint32_t height; + uint32_t depth; +} VkTraceRaysIndirectCommandKHR; + +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth); +typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); +typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData); +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress); +typedef VkDeviceSize (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupStackSizeKHR)(VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader); +typedef void (VKAPI_PTR *PFN_vkCmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysKHR( + VkCommandBuffer commandBuffer, + const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR( + VkDevice device, + VkDeferredOperationKHR deferredOperation, + VkPipelineCache pipelineCache, + uint32_t createInfoCount, + const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, + const VkAllocationCallbacks* pAllocator, + VkPipeline* pPipelines); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void* pData); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR( + VkCommandBuffer commandBuffer, + const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, + const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, + VkDeviceAddress indirectDeviceAddress); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkDeviceSize VKAPI_CALL vkGetRayTracingShaderGroupStackSizeKHR( + VkDevice device, + VkPipeline pipeline, + uint32_t group, + VkShaderGroupShaderKHR groupShader); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR( + VkCommandBuffer commandBuffer, + uint32_t pipelineStackSize); +#endif +#endif + + +// VK_KHR_ray_query is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_ray_query 1 +#define VK_KHR_RAY_QUERY_SPEC_VERSION 1 +#define VK_KHR_RAY_QUERY_EXTENSION_NAME "VK_KHR_ray_query" +typedef struct VkPhysicalDeviceRayQueryFeaturesKHR { + VkStructureType sType; + void* pNext; + VkBool32 rayQuery; +} VkPhysicalDeviceRayQueryFeaturesKHR; + + + +// VK_EXT_mesh_shader is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_mesh_shader 1 +#define VK_EXT_MESH_SHADER_SPEC_VERSION 1 +#define VK_EXT_MESH_SHADER_EXTENSION_NAME "VK_EXT_mesh_shader" +typedef struct VkPhysicalDeviceMeshShaderFeaturesEXT { + VkStructureType sType; + void* pNext; + VkBool32 taskShader; + VkBool32 meshShader; + VkBool32 multiviewMeshShader; + VkBool32 primitiveFragmentShadingRateMeshShader; + VkBool32 meshShaderQueries; +} VkPhysicalDeviceMeshShaderFeaturesEXT; + +typedef struct VkPhysicalDeviceMeshShaderPropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t maxTaskWorkGroupTotalCount; + uint32_t maxTaskWorkGroupCount[3]; + uint32_t maxTaskWorkGroupInvocations; + uint32_t maxTaskWorkGroupSize[3]; + uint32_t maxTaskPayloadSize; + uint32_t maxTaskSharedMemorySize; + uint32_t maxTaskPayloadAndSharedMemorySize; + uint32_t maxMeshWorkGroupTotalCount; + uint32_t maxMeshWorkGroupCount[3]; + uint32_t maxMeshWorkGroupInvocations; + uint32_t maxMeshWorkGroupSize[3]; + uint32_t maxMeshSharedMemorySize; + uint32_t maxMeshPayloadAndSharedMemorySize; + uint32_t maxMeshOutputMemorySize; + uint32_t maxMeshPayloadAndOutputMemorySize; + uint32_t maxMeshOutputComponents; + uint32_t maxMeshOutputVertices; + uint32_t maxMeshOutputPrimitives; + uint32_t maxMeshOutputLayers; + uint32_t maxMeshMultiviewViewCount; + uint32_t meshOutputPerVertexGranularity; + uint32_t meshOutputPerPrimitiveGranularity; + uint32_t maxPreferredTaskWorkGroupInvocations; + uint32_t maxPreferredMeshWorkGroupInvocations; + VkBool32 prefersLocalInvocationVertexOutput; + VkBool32 prefersLocalInvocationPrimitiveOutput; + VkBool32 prefersCompactVertexOutput; + VkBool32 prefersCompactPrimitiveOutput; +} VkPhysicalDeviceMeshShaderPropertiesEXT; + +typedef struct VkDrawMeshTasksIndirectCommandEXT { + uint32_t groupCountX; + uint32_t groupCountY; + uint32_t groupCountZ; +} VkDrawMeshTasksIndirectCommandEXT; + +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksEXT)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectEXT)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride); +typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountEXT)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksEXT( + VkCommandBuffer commandBuffer, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectEXT( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + uint32_t drawCount, + uint32_t stride); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountEXT( + VkCommandBuffer commandBuffer, + VkBuffer buffer, + VkDeviceSize offset, + VkBuffer countBuffer, + VkDeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_directfb.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_directfb.h new file mode 100644 index 000000000..b96e957e1 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_directfb.h @@ -0,0 +1,59 @@ +#ifndef VULKAN_DIRECTFB_H_ +#define VULKAN_DIRECTFB_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_EXT_directfb_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_directfb_surface 1 +#define VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION 1 +#define VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME "VK_EXT_directfb_surface" +typedef VkFlags VkDirectFBSurfaceCreateFlagsEXT; +typedef struct VkDirectFBSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkDirectFBSurfaceCreateFlagsEXT flags; + IDirectFB* dfb; + IDirectFBSurface* surface; +} VkDirectFBSurfaceCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateDirectFBSurfaceEXT)(VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateDirectFBSurfaceEXT( + VkInstance instance, + const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceDirectFBPresentationSupportEXT( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + IDirectFB* dfb); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_enums.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_enums.hpp new file mode 100644 index 000000000..7cdd9b643 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_enums.hpp @@ -0,0 +1,10198 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_ENUMS_HPP +#define VULKAN_ENUMS_HPP + +// include-what-you-use: make sure, vulkan.hpp is used by code-completers +// IWYU pragma: private, include "vulkan/vulkan.hpp" + +#if !defined( VULKAN_HPP_CXX_MODULE ) +# include // for std::underlying_type +#endif + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ + template + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = false; + }; + + template + class Flags + { + public: + using BitsType = BitType; + using MaskType = typename std::underlying_type::type; + + // constructors + VULKAN_HPP_CONSTEXPR Flags() VULKAN_HPP_NOEXCEPT : m_mask( 0 ) {} + + VULKAN_HPP_CONSTEXPR Flags( BitType bit ) VULKAN_HPP_NOEXCEPT : m_mask( static_cast( bit ) ) {} + + VULKAN_HPP_CONSTEXPR Flags( Flags const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VULKAN_HPP_CONSTEXPR explicit Flags( MaskType flags ) VULKAN_HPP_NOEXCEPT : m_mask( flags ) {} + + // relational operators +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Flags const & ) const = default; +#else + VULKAN_HPP_CONSTEXPR bool operator<( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_mask < rhs.m_mask; + } + + VULKAN_HPP_CONSTEXPR bool operator<=( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_mask <= rhs.m_mask; + } + + VULKAN_HPP_CONSTEXPR bool operator>( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_mask > rhs.m_mask; + } + + VULKAN_HPP_CONSTEXPR bool operator>=( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_mask >= rhs.m_mask; + } + + VULKAN_HPP_CONSTEXPR bool operator==( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_mask == rhs.m_mask; + } + + VULKAN_HPP_CONSTEXPR bool operator!=( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return m_mask != rhs.m_mask; + } +#endif + + // logical operator + VULKAN_HPP_CONSTEXPR bool operator!() const VULKAN_HPP_NOEXCEPT + { + return !m_mask; + } + + // bitwise operators + VULKAN_HPP_CONSTEXPR Flags operator&( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return Flags( m_mask & rhs.m_mask ); + } + + VULKAN_HPP_CONSTEXPR Flags operator|( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return Flags( m_mask | rhs.m_mask ); + } + + VULKAN_HPP_CONSTEXPR Flags operator^( Flags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return Flags( m_mask ^ rhs.m_mask ); + } + + VULKAN_HPP_CONSTEXPR Flags operator~() const VULKAN_HPP_NOEXCEPT + { + return Flags( m_mask ^ FlagTraits::allFlags.m_mask ); + } + + // assignment operators + VULKAN_HPP_CONSTEXPR_14 Flags & operator=( Flags const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VULKAN_HPP_CONSTEXPR_14 Flags & operator|=( Flags const & rhs ) VULKAN_HPP_NOEXCEPT + { + m_mask |= rhs.m_mask; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Flags & operator&=( Flags const & rhs ) VULKAN_HPP_NOEXCEPT + { + m_mask &= rhs.m_mask; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Flags & operator^=( Flags const & rhs ) VULKAN_HPP_NOEXCEPT + { + m_mask ^= rhs.m_mask; + return *this; + } + + // cast operators + explicit VULKAN_HPP_CONSTEXPR operator bool() const VULKAN_HPP_NOEXCEPT + { + return !!m_mask; + } + + explicit VULKAN_HPP_CONSTEXPR operator MaskType() const VULKAN_HPP_NOEXCEPT + { + return m_mask; + } + +#if defined( VULKAN_HPP_FLAGS_MASK_TYPE_AS_PUBLIC ) + public: +#else + private: +#endif + MaskType m_mask; + }; + +#if !defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + // relational operators only needed for pre C++20 + template + VULKAN_HPP_CONSTEXPR bool operator<( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator>( bit ); + } + + template + VULKAN_HPP_CONSTEXPR bool operator<=( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator>=( bit ); + } + + template + VULKAN_HPP_CONSTEXPR bool operator>( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator<( bit ); + } + + template + VULKAN_HPP_CONSTEXPR bool operator>=( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator<=( bit ); + } + + template + VULKAN_HPP_CONSTEXPR bool operator==( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator==( bit ); + } + + template + VULKAN_HPP_CONSTEXPR bool operator!=( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator!=( bit ); + } +#endif + + // bitwise operators + template + VULKAN_HPP_CONSTEXPR Flags operator&( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator&( bit ); + } + + template + VULKAN_HPP_CONSTEXPR Flags operator|( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator|( bit ); + } + + template + VULKAN_HPP_CONSTEXPR Flags operator^( BitType bit, Flags const & flags ) VULKAN_HPP_NOEXCEPT + { + return flags.operator^( bit ); + } + + // bitwise operators on BitType + template ::isBitmask, bool>::type = true> + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR Flags operator&( BitType lhs, BitType rhs ) VULKAN_HPP_NOEXCEPT + { + return Flags( lhs ) & rhs; + } + + template ::isBitmask, bool>::type = true> + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR Flags operator|( BitType lhs, BitType rhs ) VULKAN_HPP_NOEXCEPT + { + return Flags( lhs ) | rhs; + } + + template ::isBitmask, bool>::type = true> + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR Flags operator^( BitType lhs, BitType rhs ) VULKAN_HPP_NOEXCEPT + { + return Flags( lhs ) ^ rhs; + } + + template ::isBitmask, bool>::type = true> + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR Flags operator~( BitType bit ) VULKAN_HPP_NOEXCEPT + { + return ~( Flags( bit ) ); + } + + //============= + //=== ENUMs === + //============= + + //=== VK_VERSION_1_0 === + + // wrapper class for enum VkResult, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkResult.html + enum class Result + { + eSuccess = VK_SUCCESS, + eNotReady = VK_NOT_READY, + eTimeout = VK_TIMEOUT, + eEventSet = VK_EVENT_SET, + eEventReset = VK_EVENT_RESET, + eIncomplete = VK_INCOMPLETE, + eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY, + eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY, + eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED, + eErrorDeviceLost = VK_ERROR_DEVICE_LOST, + eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED, + eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT, + eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT, + eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT, + eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER, + eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS, + eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED, + eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL, + eErrorUnknown = VK_ERROR_UNKNOWN, + eErrorValidationFailed = VK_ERROR_VALIDATION_FAILED, + eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT, + eErrorOutOfPoolMemory = VK_ERROR_OUT_OF_POOL_MEMORY, + eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR, + eErrorInvalidExternalHandle = VK_ERROR_INVALID_EXTERNAL_HANDLE, + eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR, + eErrorInvalidOpaqueCaptureAddress = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, + eErrorInvalidDeviceAddressEXT = VK_ERROR_INVALID_DEVICE_ADDRESS_EXT, + eErrorInvalidOpaqueCaptureAddressKHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR, + eErrorFragmentation = VK_ERROR_FRAGMENTATION, + eErrorFragmentationEXT = VK_ERROR_FRAGMENTATION_EXT, + ePipelineCompileRequired = VK_PIPELINE_COMPILE_REQUIRED, + ePipelineCompileRequiredEXT = VK_PIPELINE_COMPILE_REQUIRED_EXT, + eErrorPipelineCompileRequiredEXT = VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT, + eErrorNotPermitted = VK_ERROR_NOT_PERMITTED, + eErrorNotPermittedEXT = VK_ERROR_NOT_PERMITTED_EXT, + eErrorNotPermittedKHR = VK_ERROR_NOT_PERMITTED_KHR, + eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR, + eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR, + eSuboptimalKHR = VK_SUBOPTIMAL_KHR, + eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR, + eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR, + eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV, + eErrorImageUsageNotSupportedKHR = VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR, + eErrorVideoPictureLayoutNotSupportedKHR = VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR, + eErrorVideoProfileOperationNotSupportedKHR = VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR, + eErrorVideoProfileFormatNotSupportedKHR = VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR, + eErrorVideoProfileCodecNotSupportedKHR = VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR, + eErrorVideoStdVersionNotSupportedKHR = VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR, + eErrorInvalidDrmFormatModifierPlaneLayoutEXT = VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT, + eErrorPresentTimingQueueFullEXT = VK_ERROR_PRESENT_TIMING_QUEUE_FULL_EXT, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eErrorFullScreenExclusiveModeLostEXT = VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eThreadIdleKHR = VK_THREAD_IDLE_KHR, + eThreadDoneKHR = VK_THREAD_DONE_KHR, + eOperationDeferredKHR = VK_OPERATION_DEFERRED_KHR, + eOperationNotDeferredKHR = VK_OPERATION_NOT_DEFERRED_KHR, + eErrorInvalidVideoStdParametersKHR = VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR, + eErrorCompressionExhaustedEXT = VK_ERROR_COMPRESSION_EXHAUSTED_EXT, + eIncompatibleShaderBinaryEXT = VK_INCOMPATIBLE_SHADER_BINARY_EXT, + eErrorIncompatibleShaderBinaryEXT = VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT, + ePipelineBinaryMissingKHR = VK_PIPELINE_BINARY_MISSING_KHR, + eErrorNotEnoughSpaceKHR = VK_ERROR_NOT_ENOUGH_SPACE_KHR + }; + + // wrapper class for enum VkStructureType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkStructureType.html + enum class StructureType + { + eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO, + eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, + eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, + eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, + eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO, + eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, + eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, + eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO, + eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO, + eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, + eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO, + eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO, + eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO, + eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO, + eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO, + eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, + eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO, + ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO, + ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO, + ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO, + ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, + ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, + ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, + ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO, + ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO, + ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO, + ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO, + ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO, + eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO, + eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO, + ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO, + eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO, + eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO, + eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO, + eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, + eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET, + eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET, + eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO, + eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO, + eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO, + eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO, + eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO, + eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, + eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER, + eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO, + eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, + eBindBufferMemoryInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, + eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR, + eBindImageMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, + eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR, + eMemoryDedicatedRequirements = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, + eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR, + eMemoryDedicatedAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, + eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR, + eMemoryAllocateFlagsInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, + eMemoryAllocateFlagsInfoKHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR, + eDeviceGroupCommandBufferBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, + eDeviceGroupCommandBufferBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR, + eDeviceGroupSubmitInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, + eDeviceGroupSubmitInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR, + eDeviceGroupBindSparseInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, + eDeviceGroupBindSparseInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR, + eBindBufferMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, + eBindBufferMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR, + eBindImageMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, + eBindImageMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR, + ePhysicalDeviceGroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, + ePhysicalDeviceGroupPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR, + eDeviceGroupDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, + eDeviceGroupDeviceCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR, + eBufferMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, + eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR, + eImageMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, + eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR, + eImageSparseMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, + eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR, + eMemoryRequirements2 = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, + eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR, + eSparseImageMemoryRequirements2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, + eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR, + ePhysicalDeviceFeatures2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, + ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR, + ePhysicalDeviceProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, + ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR, + eFormatProperties2 = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, + eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR, + eImageFormatProperties2 = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, + eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR, + ePhysicalDeviceImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, + ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR, + eQueueFamilyProperties2 = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, + eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR, + ePhysicalDeviceMemoryProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, + ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR, + eSparseImageFormatProperties2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, + eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR, + ePhysicalDeviceSparseImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, + ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR, + eImageViewUsageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, + eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR, + eProtectedSubmitInfo = VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO, + ePhysicalDeviceProtectedMemoryFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, + ePhysicalDeviceProtectedMemoryProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES, + eDeviceQueueInfo2 = VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2, + ePhysicalDeviceExternalImageFormatInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, + ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR, + eExternalImageFormatProperties = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, + eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR, + ePhysicalDeviceExternalBufferInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, + ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR, + eExternalBufferProperties = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, + eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR, + ePhysicalDeviceIdProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, + ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR, + eExternalMemoryBufferCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO, + eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR, + eExternalMemoryImageCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO, + eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR, + eExportMemoryAllocateInfo = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, + eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR, + ePhysicalDeviceExternalFenceInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, + ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR, + eExternalFenceProperties = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, + eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR, + eExportFenceCreateInfo = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, + eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR, + eExportSemaphoreCreateInfo = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, + eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR, + ePhysicalDeviceExternalSemaphoreInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, + ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR, + eExternalSemaphoreProperties = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, + eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR, + ePhysicalDeviceSubgroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES, + ePhysicalDevice16BitStorageFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, + ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR, + ePhysicalDeviceVariablePointersFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, + ePhysicalDeviceVariablePointerFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES, + ePhysicalDeviceVariablePointersFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, + ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR, + eDescriptorUpdateTemplateCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, + eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR, + ePhysicalDeviceMaintenance3Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, + ePhysicalDeviceMaintenance3PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR, + eDescriptorSetLayoutSupport = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, + eDescriptorSetLayoutSupportKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR, + eSamplerYcbcrConversionCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, + eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR, + eSamplerYcbcrConversionInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, + eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR, + eBindImagePlaneMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, + eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR, + eImagePlaneMemoryRequirementsInfo = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, + eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR, + ePhysicalDeviceSamplerYcbcrConversionFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, + ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR, + eSamplerYcbcrConversionImageFormatProperties = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, + eSamplerYcbcrConversionImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR, + eDeviceGroupRenderPassBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, + eDeviceGroupRenderPassBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR, + ePhysicalDevicePointClippingProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, + ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR, + eRenderPassInputAttachmentAspectCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, + eRenderPassInputAttachmentAspectCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR, + ePipelineTessellationDomainOriginStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, + ePipelineTessellationDomainOriginStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR, + eRenderPassMultiviewCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, + eRenderPassMultiviewCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR, + ePhysicalDeviceMultiviewFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, + ePhysicalDeviceMultiviewFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR, + ePhysicalDeviceMultiviewProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, + ePhysicalDeviceMultiviewPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR, + ePhysicalDeviceShaderDrawParametersFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, + ePhysicalDeviceShaderDrawParameterFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES, + ePhysicalDeviceDriverProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, + ePhysicalDeviceDriverPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR, + ePhysicalDeviceVulkan11Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES, + ePhysicalDeviceVulkan11Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES, + ePhysicalDeviceVulkan12Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, + ePhysicalDeviceVulkan12Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES, + eImageFormatListCreateInfo = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO, + eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, + ePhysicalDeviceVulkanMemoryModelFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, + ePhysicalDeviceVulkanMemoryModelFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR, + ePhysicalDeviceHostQueryResetFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, + ePhysicalDeviceHostQueryResetFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, + ePhysicalDeviceTimelineSemaphoreFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, + ePhysicalDeviceTimelineSemaphoreFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR, + ePhysicalDeviceTimelineSemaphoreProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, + ePhysicalDeviceTimelineSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR, + eSemaphoreTypeCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO, + eSemaphoreTypeCreateInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR, + eTimelineSemaphoreSubmitInfo = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, + eTimelineSemaphoreSubmitInfoKHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR, + eSemaphoreWaitInfo = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, + eSemaphoreWaitInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR, + eSemaphoreSignalInfo = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, + eSemaphoreSignalInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR, + ePhysicalDeviceBufferDeviceAddressFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, + ePhysicalDeviceBufferDeviceAddressFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR, + eBufferDeviceAddressInfo = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, + eBufferDeviceAddressInfoEXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT, + eBufferDeviceAddressInfoKHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR, + eBufferOpaqueCaptureAddressCreateInfo = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, + eBufferOpaqueCaptureAddressCreateInfoKHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR, + eMemoryOpaqueCaptureAddressAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, + eMemoryOpaqueCaptureAddressAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR, + eDeviceMemoryOpaqueCaptureAddressInfo = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, + eDeviceMemoryOpaqueCaptureAddressInfoKHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR, + ePhysicalDevice8BitStorageFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, + ePhysicalDevice8BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR, + ePhysicalDeviceShaderAtomicInt64Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, + ePhysicalDeviceShaderAtomicInt64FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR, + ePhysicalDeviceShaderFloat16Int8Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, + ePhysicalDeviceShaderFloat16Int8FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR, + ePhysicalDeviceFloat16Int8FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR, + ePhysicalDeviceFloatControlsProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, + ePhysicalDeviceFloatControlsPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR, + eDescriptorSetLayoutBindingFlagsCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, + eDescriptorSetLayoutBindingFlagsCreateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT, + ePhysicalDeviceDescriptorIndexingFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, + ePhysicalDeviceDescriptorIndexingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, + ePhysicalDeviceDescriptorIndexingProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, + ePhysicalDeviceDescriptorIndexingPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT, + eDescriptorSetVariableDescriptorCountAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, + eDescriptorSetVariableDescriptorCountAllocateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT, + eDescriptorSetVariableDescriptorCountLayoutSupport = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, + eDescriptorSetVariableDescriptorCountLayoutSupportEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT, + ePhysicalDeviceScalarBlockLayoutFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, + ePhysicalDeviceScalarBlockLayoutFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT, + ePhysicalDeviceSamplerFilterMinmaxProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, + ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT, + eSamplerReductionModeCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, + eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT, + ePhysicalDeviceUniformBufferStandardLayoutFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, + ePhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR, + ePhysicalDeviceShaderSubgroupExtendedTypesFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, + ePhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR, + eAttachmentDescription2 = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, + eAttachmentDescription2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR, + eAttachmentReference2 = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, + eAttachmentReference2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, + eSubpassDescription2 = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, + eSubpassDescription2KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR, + eSubpassDependency2 = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2, + eSubpassDependency2KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR, + eRenderPassCreateInfo2 = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, + eRenderPassCreateInfo2KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR, + eSubpassBeginInfo = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO, + eSubpassBeginInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR, + eSubpassEndInfo = VK_STRUCTURE_TYPE_SUBPASS_END_INFO, + eSubpassEndInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR, + ePhysicalDeviceDepthStencilResolveProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, + ePhysicalDeviceDepthStencilResolvePropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR, + eSubpassDescriptionDepthStencilResolve = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, + eSubpassDescriptionDepthStencilResolveKHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR, + eImageStencilUsageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, + eImageStencilUsageCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT, + ePhysicalDeviceImagelessFramebufferFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, + ePhysicalDeviceImagelessFramebufferFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR, + eFramebufferAttachmentsCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, + eFramebufferAttachmentsCreateInfoKHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR, + eFramebufferAttachmentImageInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, + eFramebufferAttachmentImageInfoKHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR, + eRenderPassAttachmentBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, + eRenderPassAttachmentBeginInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, + ePhysicalDeviceSeparateDepthStencilLayoutsFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, + ePhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR, + eAttachmentReferenceStencilLayout = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT, + eAttachmentReferenceStencilLayoutKHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR, + eAttachmentDescriptionStencilLayout = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, + eAttachmentDescriptionStencilLayoutKHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR, + ePhysicalDeviceVulkan13Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES, + ePhysicalDeviceVulkan13Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES, + ePhysicalDeviceToolProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES, + ePhysicalDeviceToolPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT, + ePhysicalDevicePrivateDataFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, + ePhysicalDevicePrivateDataFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT, + eDevicePrivateDataCreateInfo = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO, + eDevicePrivateDataCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT, + ePrivateDataSlotCreateInfo = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO, + ePrivateDataSlotCreateInfoEXT = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT, + eMemoryBarrier2 = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2, + eMemoryBarrier2KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR, + eBufferMemoryBarrier2 = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2, + eBufferMemoryBarrier2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR, + eImageMemoryBarrier2 = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2, + eImageMemoryBarrier2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR, + eDependencyInfo = VK_STRUCTURE_TYPE_DEPENDENCY_INFO, + eDependencyInfoKHR = VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR, + eSubmitInfo2 = VK_STRUCTURE_TYPE_SUBMIT_INFO_2, + eSubmitInfo2KHR = VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR, + eSemaphoreSubmitInfo = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO, + eSemaphoreSubmitInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR, + eCommandBufferSubmitInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO, + eCommandBufferSubmitInfoKHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR, + ePhysicalDeviceSynchronization2Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, + ePhysicalDeviceSynchronization2FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR, + eCopyBufferInfo2 = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2, + eCopyBufferInfo2KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR, + eCopyImageInfo2 = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2, + eCopyImageInfo2KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR, + eCopyBufferToImageInfo2 = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2, + eCopyBufferToImageInfo2KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR, + eCopyImageToBufferInfo2 = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2, + eCopyImageToBufferInfo2KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR, + eBufferCopy2 = VK_STRUCTURE_TYPE_BUFFER_COPY_2, + eBufferCopy2KHR = VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR, + eImageCopy2 = VK_STRUCTURE_TYPE_IMAGE_COPY_2, + eImageCopy2KHR = VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR, + eBufferImageCopy2 = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, + eBufferImageCopy2KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR, + ePhysicalDeviceTextureCompressionAstcHdrFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES, + ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT, + eFormatProperties3 = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3, + eFormatProperties3KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR, + ePhysicalDeviceMaintenance4Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, + ePhysicalDeviceMaintenance4FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR, + ePhysicalDeviceMaintenance4Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, + ePhysicalDeviceMaintenance4PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR, + eDeviceBufferMemoryRequirements = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS, + eDeviceBufferMemoryRequirementsKHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR, + eDeviceImageMemoryRequirements = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS, + eDeviceImageMemoryRequirementsKHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR, + ePipelineCreationFeedbackCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO, + ePipelineCreationFeedbackCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT, + ePhysicalDeviceShaderTerminateInvocationFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES, + ePhysicalDeviceShaderTerminateInvocationFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR, + ePhysicalDeviceShaderDemoteToHelperInvocationFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES, + ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, + ePhysicalDevicePipelineCreationCacheControlFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, + ePhysicalDevicePipelineCreationCacheControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT, + ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES, + ePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR, + ePhysicalDeviceImageRobustnessFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, + ePhysicalDeviceImageRobustnessFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT, + ePhysicalDeviceSubgroupSizeControlProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES, + ePhysicalDeviceSubgroupSizeControlPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT, + ePipelineShaderStageRequiredSubgroupSizeCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO, + ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT, + eShaderRequiredSubgroupSizeCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT, + ePhysicalDeviceSubgroupSizeControlFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES, + ePhysicalDeviceSubgroupSizeControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, + ePhysicalDeviceInlineUniformBlockFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES, + ePhysicalDeviceInlineUniformBlockFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, + ePhysicalDeviceInlineUniformBlockProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, + ePhysicalDeviceInlineUniformBlockPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT, + eWriteDescriptorSetInlineUniformBlock = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK, + eWriteDescriptorSetInlineUniformBlockEXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT, + eDescriptorPoolInlineUniformBlockCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO, + eDescriptorPoolInlineUniformBlockCreateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT, + ePhysicalDeviceShaderIntegerDotProductFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES, + ePhysicalDeviceShaderIntegerDotProductFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR, + ePhysicalDeviceShaderIntegerDotProductProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES, + ePhysicalDeviceShaderIntegerDotProductPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR, + ePhysicalDeviceTexelBufferAlignmentProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES, + ePhysicalDeviceTexelBufferAlignmentPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT, + eBlitImageInfo2 = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2, + eBlitImageInfo2KHR = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR, + eResolveImageInfo2 = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2, + eResolveImageInfo2KHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR, + eImageBlit2 = VK_STRUCTURE_TYPE_IMAGE_BLIT_2, + eImageBlit2KHR = VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR, + eImageResolve2 = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, + eImageResolve2KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR, + eRenderingInfo = VK_STRUCTURE_TYPE_RENDERING_INFO, + eRenderingInfoKHR = VK_STRUCTURE_TYPE_RENDERING_INFO_KHR, + eRenderingAttachmentInfo = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO, + eRenderingAttachmentInfoKHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR, + ePipelineRenderingCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO, + ePipelineRenderingCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR, + ePhysicalDeviceDynamicRenderingFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, + ePhysicalDeviceDynamicRenderingFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR, + eCommandBufferInheritanceRenderingInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO, + eCommandBufferInheritanceRenderingInfoKHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR, + ePhysicalDeviceVulkan14Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES, + ePhysicalDeviceVulkan14Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES, + eDeviceQueueGlobalPriorityCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO, + eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT, + eDeviceQueueGlobalPriorityCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR, + ePhysicalDeviceGlobalPriorityQueryFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES, + ePhysicalDeviceGlobalPriorityQueryFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, + ePhysicalDeviceGlobalPriorityQueryFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT, + eQueueFamilyGlobalPriorityProperties = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES, + eQueueFamilyGlobalPriorityPropertiesKHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR, + eQueueFamilyGlobalPriorityPropertiesEXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT, + ePhysicalDeviceIndexTypeUint8Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES, + ePhysicalDeviceIndexTypeUint8FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, + ePhysicalDeviceIndexTypeUint8FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_KHR, + eMemoryMapInfo = VK_STRUCTURE_TYPE_MEMORY_MAP_INFO, + eMemoryMapInfoKHR = VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR, + eMemoryUnmapInfo = VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO, + eMemoryUnmapInfoKHR = VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR, + ePhysicalDeviceMaintenance5Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES, + ePhysicalDeviceMaintenance5FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR, + ePhysicalDeviceMaintenance5Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES, + ePhysicalDeviceMaintenance5PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR, + eDeviceImageSubresourceInfo = VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO, + eDeviceImageSubresourceInfoKHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR, + eSubresourceLayout2 = VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2, + eSubresourceLayout2EXT = VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT, + eSubresourceLayout2KHR = VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR, + eImageSubresource2 = VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2, + eImageSubresource2EXT = VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT, + eImageSubresource2KHR = VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR, + eBufferUsageFlags2CreateInfo = VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO, + eBufferUsageFlags2CreateInfoKHR = VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR, + ePhysicalDeviceMaintenance6Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES, + ePhysicalDeviceMaintenance6FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR, + ePhysicalDeviceMaintenance6Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES, + ePhysicalDeviceMaintenance6PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR, + eBindMemoryStatus = VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS, + eBindMemoryStatusKHR = VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR, + ePhysicalDeviceHostImageCopyFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES, + ePhysicalDeviceHostImageCopyFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT, + ePhysicalDeviceHostImageCopyProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES, + ePhysicalDeviceHostImageCopyPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT, + eMemoryToImageCopy = VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY, + eMemoryToImageCopyEXT = VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT, + eImageToMemoryCopy = VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY, + eImageToMemoryCopyEXT = VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT, + eCopyImageToMemoryInfo = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO, + eCopyImageToMemoryInfoEXT = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT, + eCopyMemoryToImageInfo = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO, + eCopyMemoryToImageInfoEXT = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT, + eHostImageLayoutTransitionInfo = VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO, + eHostImageLayoutTransitionInfoEXT = VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT, + eCopyImageToImageInfo = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO, + eCopyImageToImageInfoEXT = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT, + eSubresourceHostMemcpySize = VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE, + eSubresourceHostMemcpySizeEXT = VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT, + eHostImageCopyDevicePerformanceQuery = VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY, + eHostImageCopyDevicePerformanceQueryEXT = VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT, + ePhysicalDeviceShaderSubgroupRotateFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES, + ePhysicalDeviceShaderSubgroupRotateFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES_KHR, + ePhysicalDeviceShaderFloatControls2Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES, + ePhysicalDeviceShaderFloatControls2FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES_KHR, + ePhysicalDeviceShaderExpectAssumeFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES, + ePhysicalDeviceShaderExpectAssumeFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES_KHR, + ePipelineCreateFlags2CreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO, + ePipelineCreateFlags2CreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR, + ePhysicalDevicePushDescriptorProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES, + ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR, + eBindDescriptorSetsInfo = VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO, + eBindDescriptorSetsInfoKHR = VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR, + ePushConstantsInfo = VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO, + ePushConstantsInfoKHR = VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR, + ePushDescriptorSetInfo = VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO, + ePushDescriptorSetInfoKHR = VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR, + ePushDescriptorSetWithTemplateInfo = VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO, + ePushDescriptorSetWithTemplateInfoKHR = VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR, + ePhysicalDevicePipelineProtectedAccessFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES, + ePhysicalDevicePipelineProtectedAccessFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT, + ePipelineRobustnessCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO, + ePipelineRobustnessCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT, + ePhysicalDevicePipelineRobustnessFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES, + ePhysicalDevicePipelineRobustnessFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT, + ePhysicalDevicePipelineRobustnessProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES, + ePhysicalDevicePipelineRobustnessPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT, + ePhysicalDeviceLineRasterizationFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES, + ePhysicalDeviceLineRasterizationFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, + ePhysicalDeviceLineRasterizationFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_KHR, + ePipelineRasterizationLineStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO, + ePipelineRasterizationLineStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT, + ePipelineRasterizationLineStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_KHR, + ePhysicalDeviceLineRasterizationProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES, + ePhysicalDeviceLineRasterizationPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT, + ePhysicalDeviceLineRasterizationPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_KHR, + ePhysicalDeviceVertexAttributeDivisorProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES, + ePhysicalDeviceVertexAttributeDivisorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR, + ePipelineVertexInputDivisorStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO, + ePipelineVertexInputDivisorStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT, + ePipelineVertexInputDivisorStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR, + ePhysicalDeviceVertexAttributeDivisorFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES, + ePhysicalDeviceVertexAttributeDivisorFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, + ePhysicalDeviceVertexAttributeDivisorFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR, + eRenderingAreaInfo = VK_STRUCTURE_TYPE_RENDERING_AREA_INFO, + eRenderingAreaInfoKHR = VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR, + ePhysicalDeviceDynamicRenderingLocalReadFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES, + ePhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES_KHR, + eRenderingAttachmentLocationInfo = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO, + eRenderingAttachmentLocationInfoKHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_LOCATION_INFO_KHR, + eRenderingInputAttachmentIndexInfo = VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO, + eRenderingInputAttachmentIndexInfoKHR = VK_STRUCTURE_TYPE_RENDERING_INPUT_ATTACHMENT_INDEX_INFO_KHR, + eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR, + ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR, + eDeviceGroupPresentCapabilitiesKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR, + eImageSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR, + eBindImageMemorySwapchainInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR, + eAcquireNextImageInfoKHR = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR, + eDeviceGroupPresentInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR, + eDeviceGroupSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR, + eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR, + eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR, + eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR, +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR, +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ +#if defined( VK_USE_PLATFORM_XCB_KHR ) + eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR, +#endif /*VK_USE_PLATFORM_XCB_KHR*/ +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR, +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR, +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, + eDebugReportCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT, + ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD, + eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT, + eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT, + eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, + eVideoProfileInfoKHR = VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR, + eVideoCapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR, + eVideoPictureResourceInfoKHR = VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR, + eVideoSessionMemoryRequirementsKHR = VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR, + eBindVideoSessionMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR, + eVideoSessionCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR, + eVideoSessionParametersCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR, + eVideoSessionParametersUpdateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR, + eVideoBeginCodingInfoKHR = VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR, + eVideoEndCodingInfoKHR = VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR, + eVideoCodingControlInfoKHR = VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR, + eVideoReferenceSlotInfoKHR = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR, + eQueueFamilyVideoPropertiesKHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR, + eVideoProfileListInfoKHR = VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR, + ePhysicalDeviceVideoFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR, + eVideoFormatPropertiesKHR = VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR, + eQueueFamilyQueryResultStatusPropertiesKHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR, + eVideoDecodeInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR, + eVideoDecodeCapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR, + eVideoDecodeUsageInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR, + eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV, + eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV, + eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV, + ePhysicalDeviceTransformFeedbackFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, + ePhysicalDeviceTransformFeedbackPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT, + ePipelineRasterizationStateStreamCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT, + eCuModuleCreateInfoNVX = VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX, + eCuFunctionCreateInfoNVX = VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX, + eCuLaunchInfoNVX = VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX, + eCuModuleTexturingModeCreateInfoNVX = VK_STRUCTURE_TYPE_CU_MODULE_TEXTURING_MODE_CREATE_INFO_NVX, + eImageViewHandleInfoNVX = VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX, + eImageViewAddressPropertiesNVX = VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX, + eVideoEncodeH264CapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR, + eVideoEncodeH264SessionParametersCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR, + eVideoEncodeH264SessionParametersAddInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR, + eVideoEncodeH264PictureInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR, + eVideoEncodeH264DpbSlotInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR, + eVideoEncodeH264NaluSliceInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR, + eVideoEncodeH264GopRemainingFrameInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR, + eVideoEncodeH264ProfileInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR, + eVideoEncodeH264RateControlInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR, + eVideoEncodeH264RateControlLayerInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR, + eVideoEncodeH264SessionCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR, + eVideoEncodeH264QualityLevelPropertiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR, + eVideoEncodeH264SessionParametersGetInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR, + eVideoEncodeH264SessionParametersFeedbackInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR, + eVideoEncodeH265CapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR, + eVideoEncodeH265SessionParametersCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR, + eVideoEncodeH265SessionParametersAddInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR, + eVideoEncodeH265PictureInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR, + eVideoEncodeH265DpbSlotInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR, + eVideoEncodeH265NaluSliceSegmentInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR, + eVideoEncodeH265GopRemainingFrameInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR, + eVideoEncodeH265ProfileInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR, + eVideoEncodeH265RateControlInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR, + eVideoEncodeH265RateControlLayerInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR, + eVideoEncodeH265SessionCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR, + eVideoEncodeH265QualityLevelPropertiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR, + eVideoEncodeH265SessionParametersGetInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR, + eVideoEncodeH265SessionParametersFeedbackInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR, + eVideoDecodeH264CapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR, + eVideoDecodeH264PictureInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR, + eVideoDecodeH264ProfileInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR, + eVideoDecodeH264SessionParametersCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR, + eVideoDecodeH264SessionParametersAddInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR, + eVideoDecodeH264DpbSlotInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR, + eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD, +#if defined( VK_USE_PLATFORM_GGP ) + eStreamDescriptorSurfaceCreateInfoGGP = VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP, +#endif /*VK_USE_PLATFORM_GGP*/ + ePhysicalDeviceCornerSampledImageFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, + eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV, + eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV, + eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV, + eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT, +#if defined( VK_USE_PLATFORM_VI_NN ) + eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN, +#endif /*VK_USE_PLATFORM_VI_NN*/ + eImageViewAstcDecodeModeEXT = VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT, + ePhysicalDeviceAstcDecodeFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR, + eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR, + eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR, + eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR, + eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR, + eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR, + eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR, + eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR, + eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR, + eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR, + eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR, + eCommandBufferInheritanceConditionalRenderingInfoEXT = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT, + ePhysicalDeviceConditionalRenderingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, + eConditionalRenderingBeginInfoEXT = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT, + ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR, + ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV, + eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, + eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT, + eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT, + eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT, + eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT, + ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE, + ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX, + eMultiviewPerViewAttributesInfoNVX = VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX, + ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV, + ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT, + ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT, + ePhysicalDeviceConservativeRasterizationPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, + ePipelineRasterizationConservativeStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT, + ePhysicalDeviceDepthClipEnableFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, + ePipelineRasterizationDepthClipStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT, + eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT, + ePhysicalDeviceRelaxedLineRasterizationFeaturesIMG = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG, + eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR, + eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR, + eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR, + eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR, + ePhysicalDevicePerformanceQueryFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, + ePhysicalDevicePerformanceQueryPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR, + eQueryPoolPerformanceCreateInfoKHR = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR, + ePerformanceQuerySubmitInfoKHR = VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR, + eAcquireProfilingLockInfoKHR = VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR, + ePerformanceCounterKHR = VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR, + ePerformanceCounterDescriptionKHR = VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR, + ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR, + eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR, + eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR, + eDisplayProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR, + eDisplayPlaneProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR, + eDisplayModeProperties2KHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR, + eDisplayPlaneInfo2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR, + eDisplayPlaneCapabilities2KHR = VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR, +#if defined( VK_USE_PLATFORM_IOS_MVK ) + eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK, +#endif /*VK_USE_PLATFORM_IOS_MVK*/ +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK, +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + eDebugUtilsObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, + eDebugUtilsObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT, + eDebugUtilsLabelEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT, + eDebugUtilsMessengerCallbackDataEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT, + eDebugUtilsMessengerCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + eAndroidHardwareBufferUsageANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID, + eAndroidHardwareBufferPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID, + eAndroidHardwareBufferFormatPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID, + eImportAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, + eMemoryGetAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, + eExternalFormatANDROID = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID, + eAndroidHardwareBufferFormatProperties2ANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID, +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + ePhysicalDeviceShaderEnqueueFeaturesAMDX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX, + ePhysicalDeviceShaderEnqueuePropertiesAMDX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX, + eExecutionGraphPipelineScratchSizeAMDX = VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX, + eExecutionGraphPipelineCreateInfoAMDX = VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX, + ePipelineShaderStageNodeCreateInfoAMDX = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eTexelBufferDescriptorInfoEXT = VK_STRUCTURE_TYPE_TEXEL_BUFFER_DESCRIPTOR_INFO_EXT, + eImageDescriptorInfoEXT = VK_STRUCTURE_TYPE_IMAGE_DESCRIPTOR_INFO_EXT, + eResourceDescriptorInfoEXT = VK_STRUCTURE_TYPE_RESOURCE_DESCRIPTOR_INFO_EXT, + eBindHeapInfoEXT = VK_STRUCTURE_TYPE_BIND_HEAP_INFO_EXT, + ePushDataInfoEXT = VK_STRUCTURE_TYPE_PUSH_DATA_INFO_EXT, + eDescriptorSetAndBindingMappingEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_AND_BINDING_MAPPING_EXT, + eShaderDescriptorSetAndBindingMappingInfoEXT = VK_STRUCTURE_TYPE_SHADER_DESCRIPTOR_SET_AND_BINDING_MAPPING_INFO_EXT, + eOpaqueCaptureDataCreateInfoEXT = VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DATA_CREATE_INFO_EXT, + ePhysicalDeviceDescriptorHeapPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT, + ePhysicalDeviceDescriptorHeapFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT, + eCommandBufferInheritanceDescriptorHeapInfoEXT = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_DESCRIPTOR_HEAP_INFO_EXT, + eSamplerCustomBorderColorIndexCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_INDEX_CREATE_INFO_EXT, + eIndirectCommandsLayoutPushDataTokenNV = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_PUSH_DATA_TOKEN_NV, + eSubsampledImageFormatPropertiesEXT = VK_STRUCTURE_TYPE_SUBSAMPLED_IMAGE_FORMAT_PROPERTIES_EXT, + ePhysicalDeviceDescriptorHeapTensorPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM, + eAttachmentSampleCountInfoAMD = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD, + eAttachmentSampleCountInfoNV = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV, + ePhysicalDeviceShaderBfloat16FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR, + eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT, + eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT, + ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT, + ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT, + eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT, + ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, + ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT, + ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT, + ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV, + eWriteDescriptorSetAccelerationStructureKHR = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR, + eAccelerationStructureBuildGeometryInfoKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR, + eAccelerationStructureDeviceAddressInfoKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR, + eAccelerationStructureGeometryAabbsDataKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR, + eAccelerationStructureGeometryInstancesDataKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR, + eAccelerationStructureGeometryTrianglesDataKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR, + eAccelerationStructureGeometryKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR, + eAccelerationStructureVersionInfoKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR, + eCopyAccelerationStructureInfoKHR = VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR, + eCopyAccelerationStructureToMemoryInfoKHR = VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR, + eCopyMemoryToAccelerationStructureInfoKHR = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR, + ePhysicalDeviceAccelerationStructureFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR, + ePhysicalDeviceAccelerationStructurePropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR, + eAccelerationStructureCreateInfoKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR, + eAccelerationStructureBuildSizesInfoKHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR, + ePhysicalDeviceRayTracingPipelineFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR, + ePhysicalDeviceRayTracingPipelinePropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR, + eRayTracingPipelineCreateInfoKHR = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR, + eRayTracingShaderGroupCreateInfoKHR = VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR, + eRayTracingPipelineInterfaceCreateInfoKHR = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR, + ePhysicalDeviceRayQueryFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR, + ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV, + ePhysicalDeviceShaderSmBuiltinsFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV, + ePhysicalDeviceShaderSmBuiltinsPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV, + eDrmFormatModifierPropertiesListEXT = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT, + ePhysicalDeviceImageDrmFormatModifierInfoEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT, + eImageDrmFormatModifierListCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT, + eImageDrmFormatModifierExplicitCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT, + eImageDrmFormatModifierPropertiesEXT = VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT, + eDrmFormatModifierPropertiesList2EXT = VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT, + eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT, + eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + ePhysicalDevicePortabilitySubsetFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR, + ePhysicalDevicePortabilitySubsetPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + ePipelineViewportShadingRateImageStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV, + ePhysicalDeviceShadingRateImageFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, + ePhysicalDeviceShadingRateImagePropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV, + ePipelineViewportCoarseSampleOrderStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV, + eRayTracingPipelineCreateInfoNV = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV, + eAccelerationStructureCreateInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV, + eGeometryNV = VK_STRUCTURE_TYPE_GEOMETRY_NV, + eGeometryTrianglesNV = VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV, + eGeometryAabbNV = VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV, + eBindAccelerationStructureMemoryInfoNV = VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV, + eWriteDescriptorSetAccelerationStructureNV = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV, + eAccelerationStructureMemoryRequirementsInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV, + ePhysicalDeviceRayTracingPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV, + eRayTracingShaderGroupCreateInfoNV = VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV, + eAccelerationStructureInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV, + ePhysicalDeviceRepresentativeFragmentTestFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, + ePipelineRepresentativeFragmentTestStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV, + ePhysicalDeviceImageViewImageFormatInfoEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT, + eFilterCubicImageViewImageFormatPropertiesEXT = VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT, + ePhysicalDeviceCooperativeMatrixConversionFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_CONVERSION_FEATURES_QCOM, + eImportMemoryHostPointerInfoEXT = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT, + eMemoryHostPointerPropertiesEXT = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT, + ePhysicalDeviceExternalMemoryHostPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT, + ePhysicalDeviceShaderClockFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, + ePipelineCompilerControlCreateInfoAMD = VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD, + ePhysicalDeviceShaderCorePropertiesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, + eVideoDecodeH265CapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR, + eVideoDecodeH265SessionParametersCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR, + eVideoDecodeH265SessionParametersAddInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR, + eVideoDecodeH265ProfileInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR, + eVideoDecodeH265PictureInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR, + eVideoDecodeH265DpbSlotInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR, + eDeviceMemoryOverallocationCreateInfoAMD = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, + ePhysicalDeviceVertexAttributeDivisorPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT, +#if defined( VK_USE_PLATFORM_GGP ) + ePresentFrameTokenGGP = VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP, +#endif /*VK_USE_PLATFORM_GGP*/ + ePhysicalDeviceMeshShaderFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, + ePhysicalDeviceMeshShaderPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV, + ePhysicalDeviceShaderImageFootprintFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, + ePipelineViewportExclusiveScissorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV, + ePhysicalDeviceExclusiveScissorFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, + eCheckpointDataNV = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV, + eQueueFamilyCheckpointPropertiesNV = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV, + eQueueFamilyCheckpointProperties2NV = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV, + eCheckpointData2NV = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV, + ePhysicalDevicePresentTimingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT, + eSwapchainTimingPropertiesEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_TIMING_PROPERTIES_EXT, + eSwapchainTimeDomainPropertiesEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_TIME_DOMAIN_PROPERTIES_EXT, + ePresentTimingsInfoEXT = VK_STRUCTURE_TYPE_PRESENT_TIMINGS_INFO_EXT, + ePresentTimingInfoEXT = VK_STRUCTURE_TYPE_PRESENT_TIMING_INFO_EXT, + ePastPresentationTimingInfoEXT = VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_INFO_EXT, + ePastPresentationTimingPropertiesEXT = VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_PROPERTIES_EXT, + ePastPresentationTimingEXT = VK_STRUCTURE_TYPE_PAST_PRESENTATION_TIMING_EXT, + ePresentTimingSurfaceCapabilitiesEXT = VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT, + eSwapchainCalibratedTimestampInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_CALIBRATED_TIMESTAMP_INFO_EXT, + ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, + eQueryPoolPerformanceQueryCreateInfoINTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL, + eQueryPoolCreateInfoINTEL = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL, + eInitializePerformanceApiInfoINTEL = VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL, + ePerformanceMarkerInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL, + ePerformanceStreamMarkerInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL, + ePerformanceOverrideInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL, + ePerformanceConfigurationAcquireInfoINTEL = VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL, + ePhysicalDevicePciBusInfoPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT, + eDisplayNativeHdrSurfaceCapabilitiesAMD = VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD, + eSwapchainDisplayNativeHdrCreateInfoAMD = VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD, +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eImagepipeSurfaceCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA, +#endif /*VK_USE_PLATFORM_FUCHSIA*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + eMetalSurfaceCreateInfoEXT = VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT, +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + ePhysicalDeviceFragmentDensityMapFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, + ePhysicalDeviceFragmentDensityMapPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT, + eRenderPassFragmentDensityMapCreateInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT, + eRenderingFragmentDensityMapAttachmentInfoEXT = VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT, + eFragmentShadingRateAttachmentInfoKHR = VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR, + ePipelineFragmentShadingRateStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR, + ePhysicalDeviceFragmentShadingRatePropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR, + ePhysicalDeviceFragmentShadingRateFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR, + ePhysicalDeviceFragmentShadingRateKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR, + eRenderingFragmentShadingRateAttachmentInfoKHR = VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR, + ePhysicalDeviceShaderCoreProperties2AMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD, + ePhysicalDeviceCoherentMemoryFeaturesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, + ePhysicalDeviceShaderConstantDataFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR, + ePhysicalDeviceShaderAbortFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR, + eDeviceFaultShaderAbortMessageInfoKHR = VK_STRUCTURE_TYPE_DEVICE_FAULT_SHADER_ABORT_MESSAGE_INFO_KHR, + ePhysicalDeviceShaderAbortPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR, + ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, + ePhysicalDeviceShaderQuadControlFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR, + ePhysicalDeviceMemoryBudgetPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT, + ePhysicalDeviceMemoryPriorityFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, + eMemoryPriorityAllocateInfoEXT = VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT, + eSurfaceProtectedCapabilitiesKHR = VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR, + ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, + ePhysicalDeviceBufferDeviceAddressFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, + ePhysicalDeviceBufferAddressFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT, + eBufferDeviceAddressCreateInfoEXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT, + eValidationFeaturesEXT = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT, + ePhysicalDevicePresentWaitFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR, + ePhysicalDeviceCooperativeMatrixFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, + eCooperativeMatrixPropertiesNV = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV, + ePhysicalDeviceCooperativeMatrixPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV, + ePhysicalDeviceCoverageReductionModeFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, + ePipelineCoverageReductionStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV, + eFramebufferMixedSamplesCombinationNV = VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV, + ePhysicalDeviceFragmentShaderInterlockFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, + ePhysicalDeviceYcbcrImageArraysFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT, + ePhysicalDeviceProvokingVertexFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT, + ePipelineRasterizationProvokingVertexStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT, + ePhysicalDeviceProvokingVertexPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + eSurfaceFullScreenExclusiveInfoEXT = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT, + eSurfaceCapabilitiesFullScreenExclusiveEXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT, + eSurfaceFullScreenExclusiveWin32InfoEXT = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + eHeadlessSurfaceCreateInfoEXT = VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT, + ePhysicalDeviceShaderAtomicFloatFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, + ePhysicalDeviceExtendedDynamicStateFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT, + ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, + ePipelineInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, + ePipelineInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT, + ePipelineExecutablePropertiesKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR, + ePipelineExecutableInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, + ePipelineExecutableStatisticKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR, + ePipelineExecutableInternalRepresentationKHR = VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR, + ePhysicalDeviceMapMemoryPlacedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT, + ePhysicalDeviceMapMemoryPlacedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT, + eMemoryMapPlacedInfoEXT = VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT, + ePhysicalDeviceShaderAtomicFloat2FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT, + ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV, + eGraphicsShaderGroupCreateInfoNV = VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV, + eGraphicsPipelineShaderGroupsCreateInfoNV = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV, + eIndirectCommandsLayoutTokenNV = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV, + eIndirectCommandsLayoutCreateInfoNV = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV, + eGeneratedCommandsInfoNV = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV, + eGeneratedCommandsMemoryRequirementsInfoNV = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV, + ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV, + ePhysicalDeviceInheritedViewportScissorFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV, + eCommandBufferInheritanceViewportScissorInfoNV = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV, + ePhysicalDeviceTexelBufferAlignmentFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, + eCommandBufferInheritanceRenderPassTransformInfoQCOM = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM, + eRenderPassTransformBeginInfoQCOM = VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM, + ePhysicalDeviceDepthBiasControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT, + eDepthBiasInfoEXT = VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT, + eDepthBiasRepresentationInfoEXT = VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT, + ePhysicalDeviceDeviceMemoryReportFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT, + eDeviceDeviceMemoryReportCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT, + eDeviceMemoryReportCallbackDataEXT = VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT, + eSamplerCustomBorderColorCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT, + ePhysicalDeviceCustomBorderColorPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT, + ePhysicalDeviceCustomBorderColorFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, + ePhysicalDeviceTextureCompressionAstc3DFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT, + ePipelineLibraryCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR, + ePhysicalDevicePresentBarrierFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV, + eSurfaceCapabilitiesPresentBarrierNV = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV, + eSwapchainPresentBarrierCreateInfoNV = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV, + ePresentIdKHR = VK_STRUCTURE_TYPE_PRESENT_ID_KHR, + ePhysicalDevicePresentIdFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR, + eVideoEncodeInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR, + eVideoEncodeRateControlInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR, + eVideoEncodeRateControlLayerInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR, + eVideoEncodeCapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR, + eVideoEncodeUsageInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR, + eQueryPoolVideoEncodeFeedbackCreateInfoKHR = VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR, + ePhysicalDeviceVideoEncodeQualityLevelInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR, + eVideoEncodeQualityLevelPropertiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR, + eVideoEncodeQualityLevelInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR, + eVideoEncodeSessionParametersGetInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR, + eVideoEncodeSessionParametersFeedbackInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR, + ePhysicalDeviceDiagnosticsConfigFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, + eDeviceDiagnosticsConfigCreateInfoNV = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eCudaModuleCreateInfoNV = VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV, + eCudaFunctionCreateInfoNV = VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV, + eCudaLaunchInfoNV = VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV, + ePhysicalDeviceCudaKernelLaunchFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV, + ePhysicalDeviceCudaKernelLaunchPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + ePhysicalDeviceTileShadingFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_FEATURES_QCOM, + ePhysicalDeviceTileShadingPropertiesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_SHADING_PROPERTIES_QCOM, + eRenderPassTileShadingCreateInfoQCOM = VK_STRUCTURE_TYPE_RENDER_PASS_TILE_SHADING_CREATE_INFO_QCOM, + ePerTileBeginInfoQCOM = VK_STRUCTURE_TYPE_PER_TILE_BEGIN_INFO_QCOM, + ePerTileEndInfoQCOM = VK_STRUCTURE_TYPE_PER_TILE_END_INFO_QCOM, + eDispatchTileInfoQCOM = VK_STRUCTURE_TYPE_DISPATCH_TILE_INFO_QCOM, + eQueryLowLatencySupportNV = VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV, +#if defined( VK_USE_PLATFORM_METAL_EXT ) + eExportMetalObjectCreateInfoEXT = VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT, + eExportMetalObjectsInfoEXT = VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT, + eExportMetalDeviceInfoEXT = VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT, + eExportMetalCommandQueueInfoEXT = VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT, + eExportMetalBufferInfoEXT = VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT, + eImportMetalBufferInfoEXT = VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT, + eExportMetalTextureInfoEXT = VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT, + eImportMetalTextureInfoEXT = VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT, + eExportMetalIoSurfaceInfoEXT = VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT, + eImportMetalIoSurfaceInfoEXT = VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT, + eExportMetalSharedEventInfoEXT = VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT, + eImportMetalSharedEventInfoEXT = VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT, +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + ePhysicalDeviceDescriptorBufferPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT, + ePhysicalDeviceDescriptorBufferDensityMapPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT, + ePhysicalDeviceDescriptorBufferFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT, + eDescriptorAddressInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT, + eDescriptorGetInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT, + eBufferCaptureDescriptorDataInfoEXT = VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, + eImageCaptureDescriptorDataInfoEXT = VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, + eImageViewCaptureDescriptorDataInfoEXT = VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, + eSamplerCaptureDescriptorDataInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, + eOpaqueCaptureDescriptorDataCreateInfoEXT = VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT, + eDescriptorBufferBindingInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT, + eDescriptorBufferBindingPushDescriptorBufferHandleEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT, + eAccelerationStructureCaptureDescriptorDataInfoEXT = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT, + eDeviceMemoryCopyKHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_COPY_KHR, + eCopyDeviceMemoryInfoKHR = VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_INFO_KHR, + eDeviceMemoryImageCopyKHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_IMAGE_COPY_KHR, + eCopyDeviceMemoryImageInfoKHR = VK_STRUCTURE_TYPE_COPY_DEVICE_MEMORY_IMAGE_INFO_KHR, + eMemoryRangeBarriersInfoKHR = VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIERS_INFO_KHR, + eMemoryRangeBarrierKHR = VK_STRUCTURE_TYPE_MEMORY_RANGE_BARRIER_KHR, + ePhysicalDeviceDeviceAddressCommandsFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR, + eBindIndexBuffer3InfoKHR = VK_STRUCTURE_TYPE_BIND_INDEX_BUFFER_3_INFO_KHR, + eBindVertexBuffer3InfoKHR = VK_STRUCTURE_TYPE_BIND_VERTEX_BUFFER_3_INFO_KHR, + eDrawIndirect2InfoKHR = VK_STRUCTURE_TYPE_DRAW_INDIRECT_2_INFO_KHR, + eDrawIndirectCount2InfoKHR = VK_STRUCTURE_TYPE_DRAW_INDIRECT_COUNT_2_INFO_KHR, + eDispatchIndirect2InfoKHR = VK_STRUCTURE_TYPE_DISPATCH_INDIRECT_2_INFO_KHR, + eConditionalRenderingBeginInfo2EXT = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_2_EXT, + eBindTransformFeedbackBuffer2InfoEXT = VK_STRUCTURE_TYPE_BIND_TRANSFORM_FEEDBACK_BUFFER_2_INFO_EXT, + eMemoryMarkerInfoAMD = VK_STRUCTURE_TYPE_MEMORY_MARKER_INFO_AMD, + eAccelerationStructureCreateInfo2KHR = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_2_KHR, + ePhysicalDeviceGraphicsPipelineLibraryFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT, + ePhysicalDeviceGraphicsPipelineLibraryPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT, + eGraphicsPipelineLibraryCreateInfoEXT = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT, + ePhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD, + ePhysicalDeviceFragmentShaderBarycentricFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR, + ePhysicalDeviceFragmentShaderBarycentricFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, + ePhysicalDeviceFragmentShaderBarycentricPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR, + ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR, + ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV, + ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV, + ePipelineFragmentShadingRateEnumStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV, + eAccelerationStructureGeometryMotionTrianglesDataNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV, + ePhysicalDeviceRayTracingMotionBlurFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV, + eAccelerationStructureMotionInfoNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV, + ePhysicalDeviceMeshShaderFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT, + ePhysicalDeviceMeshShaderPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT, + ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT, + ePhysicalDeviceFragmentDensityMap2FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT, + ePhysicalDeviceFragmentDensityMap2PropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT, + eCopyCommandTransformInfoQCOM = VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM, + ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR, + ePhysicalDeviceImageCompressionControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT, + eImageCompressionControlEXT = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT, + eImageCompressionPropertiesEXT = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT, + ePhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT, + ePhysicalDevice4444FormatsFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, + ePhysicalDeviceFaultFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT, + eDeviceFaultCountsEXT = VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT, + eDeviceFaultInfoEXT = VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT, + ePhysicalDeviceRgba10X6FormatsFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + eDirectfbSurfaceCreateInfoEXT = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT, +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + ePhysicalDeviceVertexInputDynamicStateFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT, + eVertexInputBindingDescription2EXT = VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT, + eVertexInputAttributeDescription2EXT = VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT, + ePhysicalDeviceDrmPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT, + ePhysicalDeviceAddressBindingReportFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT, + eDeviceAddressBindingCallbackDataEXT = VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT, + ePhysicalDeviceDepthClipControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT, + ePipelineViewportDepthClipControlCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT, + ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eImportMemoryZirconHandleInfoFUCHSIA = VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA, + eMemoryZirconHandlePropertiesFUCHSIA = VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA, + eMemoryGetZirconHandleInfoFUCHSIA = VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA, + eImportSemaphoreZirconHandleInfoFUCHSIA = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA, + eSemaphoreGetZirconHandleInfoFUCHSIA = VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA, + eBufferCollectionCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA, + eImportMemoryBufferCollectionFUCHSIA = VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA, + eBufferCollectionImageCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA, + eBufferCollectionPropertiesFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA, + eBufferConstraintsInfoFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA, + eBufferCollectionBufferCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA, + eImageConstraintsInfoFUCHSIA = VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA, + eImageFormatConstraintsInfoFUCHSIA = VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA, + eSysmemColorSpaceFUCHSIA = VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA, + eBufferCollectionConstraintsInfoFUCHSIA = VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA, +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + eSubpassShadingPipelineCreateInfoHUAWEI = VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI, + ePhysicalDeviceSubpassShadingFeaturesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI, + ePhysicalDeviceSubpassShadingPropertiesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI, + ePhysicalDeviceInvocationMaskFeaturesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI, + eMemoryGetRemoteAddressInfoNV = VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV, + ePhysicalDeviceExternalMemoryRdmaFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV, + ePipelinePropertiesIdentifierEXT = VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT, + ePhysicalDevicePipelinePropertiesFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT, + ePhysicalDeviceFrameBoundaryFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT, + eFrameBoundaryEXT = VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT, + ePhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT, + eSubpassResolvePerformanceQueryEXT = VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT, + eMultisampledRenderToSingleSampledInfoEXT = VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT, + ePhysicalDeviceExtendedDynamicState2FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + eScreenSurfaceCreateInfoQNX = VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX, +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + ePhysicalDeviceColorWriteEnableFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT, + ePipelineColorWriteCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT, + ePhysicalDevicePrimitivesGeneratedQueryFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT, + ePhysicalDeviceRayTracingMaintenance1FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR, + ePhysicalDeviceShaderUntypedPointersFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR, + ePhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE, + eVideoEncodeRgbConversionCapabilitiesVALVE = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE, + eVideoEncodeProfileRgbConversionInfoVALVE = VK_STRUCTURE_TYPE_VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE, + eVideoEncodeSessionRgbConversionCreateInfoVALVE = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE, + ePhysicalDeviceImageViewMinLodFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT, + eImageViewMinLodCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT, + ePhysicalDeviceMultiDrawFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT, + ePhysicalDeviceMultiDrawPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT, + ePhysicalDeviceImage2DViewOf3DFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT, + ePhysicalDeviceShaderTileImageFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT, + ePhysicalDeviceShaderTileImagePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT, + eMicromapBuildInfoEXT = VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT, + eMicromapVersionInfoEXT = VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT, + eCopyMicromapInfoEXT = VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT, + eCopyMicromapToMemoryInfoEXT = VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT, + eCopyMemoryToMicromapInfoEXT = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT, + ePhysicalDeviceOpacityMicromapFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT, + ePhysicalDeviceOpacityMicromapPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT, + eMicromapCreateInfoEXT = VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT, + eMicromapBuildSizesInfoEXT = VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT, + eAccelerationStructureTrianglesOpacityMicromapEXT = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + ePhysicalDeviceDisplacementMicromapFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV, + ePhysicalDeviceDisplacementMicromapPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV, + eAccelerationStructureTrianglesDisplacementMicromapNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI, + ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI, + ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI, + ePhysicalDeviceBorderColorSwizzleFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT, + eSamplerBorderColorComponentMappingCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT, + ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT, + ePhysicalDeviceShaderCorePropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM, + eDeviceQueueShaderCoreControlCreateInfoARM = VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM, + ePhysicalDeviceSchedulingControlsFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM, + ePhysicalDeviceSchedulingControlsPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM, + ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT, + eImageViewSlicedCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT, + ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE, + eDescriptorSetBindingReferenceVALVE = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE, + eDescriptorSetLayoutHostMappingInfoVALVE = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE, + ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT, + ePhysicalDeviceRenderPassStripedFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM, + ePhysicalDeviceRenderPassStripedPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM, + eRenderPassStripeBeginInfoARM = VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM, + eRenderPassStripeInfoARM = VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM, + eRenderPassStripeSubmitInfoARM = VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM, + ePhysicalDeviceCopyMemoryIndirectFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV, + ePhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV, + eComputePipelineIndirectBufferInfoNV = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV, + ePipelineIndirectDeviceAddressInfoNV = VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV, + ePhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_LINEAR_SWEPT_SPHERES_FEATURES_NV, + eAccelerationStructureGeometryLinearSweptSpheresDataNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_LINEAR_SWEPT_SPHERES_DATA_NV, + eAccelerationStructureGeometrySpheresDataNV = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_SPHERES_DATA_NV, + ePhysicalDeviceLinearColorAttachmentFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV, + ePhysicalDeviceShaderMaximalReconvergenceFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR, + ePhysicalDeviceImageCompressionControlSwapchainFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT, + ePhysicalDeviceImageProcessingFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM, + ePhysicalDeviceImageProcessingPropertiesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM, + eImageViewSampleWeightCreateInfoQCOM = VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM, + ePhysicalDeviceNestedCommandBufferFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT, + ePhysicalDeviceNestedCommandBufferPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT, +#if defined( VK_USE_PLATFORM_OHOS ) + eNativeBufferUsageOHOS = VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS, + eNativeBufferPropertiesOHOS = VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS, + eNativeBufferFormatPropertiesOHOS = VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS, + eImportNativeBufferInfoOHOS = VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS, + eMemoryGetNativeBufferInfoOHOS = VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS, + eExternalFormatOHOS = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS, +#endif /*VK_USE_PLATFORM_OHOS*/ + eExternalMemoryAcquireUnmodifiedEXT = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT, + ePhysicalDeviceExtendedDynamicState3FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT, + ePhysicalDeviceExtendedDynamicState3PropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT, + ePhysicalDeviceSubpassMergeFeedbackFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT, + eRenderPassCreationControlEXT = VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT, + eRenderPassCreationFeedbackCreateInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT, + eRenderPassSubpassFeedbackCreateInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT, + eDirectDriverLoadingInfoLUNARG = VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG, + eDirectDriverLoadingListLUNARG = VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG, + eTensorCreateInfoARM = VK_STRUCTURE_TYPE_TENSOR_CREATE_INFO_ARM, + eTensorViewCreateInfoARM = VK_STRUCTURE_TYPE_TENSOR_VIEW_CREATE_INFO_ARM, + eBindTensorMemoryInfoARM = VK_STRUCTURE_TYPE_BIND_TENSOR_MEMORY_INFO_ARM, + eWriteDescriptorSetTensorARM = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_TENSOR_ARM, + ePhysicalDeviceTensorPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_PROPERTIES_ARM, + eTensorFormatPropertiesARM = VK_STRUCTURE_TYPE_TENSOR_FORMAT_PROPERTIES_ARM, + eTensorDescriptionARM = VK_STRUCTURE_TYPE_TENSOR_DESCRIPTION_ARM, + eTensorMemoryRequirementsInfoARM = VK_STRUCTURE_TYPE_TENSOR_MEMORY_REQUIREMENTS_INFO_ARM, + eTensorMemoryBarrierARM = VK_STRUCTURE_TYPE_TENSOR_MEMORY_BARRIER_ARM, + ePhysicalDeviceTensorFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TENSOR_FEATURES_ARM, + eDeviceTensorMemoryRequirementsARM = VK_STRUCTURE_TYPE_DEVICE_TENSOR_MEMORY_REQUIREMENTS_ARM, + eCopyTensorInfoARM = VK_STRUCTURE_TYPE_COPY_TENSOR_INFO_ARM, + eTensorCopyARM = VK_STRUCTURE_TYPE_TENSOR_COPY_ARM, + eTensorDependencyInfoARM = VK_STRUCTURE_TYPE_TENSOR_DEPENDENCY_INFO_ARM, + eMemoryDedicatedAllocateInfoTensorARM = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_TENSOR_ARM, + ePhysicalDeviceExternalTensorInfoARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_TENSOR_INFO_ARM, + eExternalTensorPropertiesARM = VK_STRUCTURE_TYPE_EXTERNAL_TENSOR_PROPERTIES_ARM, + eExternalMemoryTensorCreateInfoARM = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_TENSOR_CREATE_INFO_ARM, + ePhysicalDeviceDescriptorBufferTensorFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_FEATURES_ARM, + ePhysicalDeviceDescriptorBufferTensorPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_TENSOR_PROPERTIES_ARM, + eDescriptorGetTensorInfoARM = VK_STRUCTURE_TYPE_DESCRIPTOR_GET_TENSOR_INFO_ARM, + eTensorCaptureDescriptorDataInfoARM = VK_STRUCTURE_TYPE_TENSOR_CAPTURE_DESCRIPTOR_DATA_INFO_ARM, + eTensorViewCaptureDescriptorDataInfoARM = VK_STRUCTURE_TYPE_TENSOR_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_ARM, + eFrameBoundaryTensorsARM = VK_STRUCTURE_TYPE_FRAME_BOUNDARY_TENSORS_ARM, + ePhysicalDeviceShaderModuleIdentifierFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT, + ePhysicalDeviceShaderModuleIdentifierPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT, + ePipelineShaderStageModuleIdentifierCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT, + eShaderModuleIdentifierEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT, + ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT, + ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM, + ePhysicalDeviceOpticalFlowFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV, + ePhysicalDeviceOpticalFlowPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV, + eOpticalFlowImageFormatInfoNV = VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV, + eOpticalFlowImageFormatPropertiesNV = VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV, + eOpticalFlowSessionCreateInfoNV = VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV, + eOpticalFlowExecuteInfoNV = VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV, + eOpticalFlowSessionCreatePrivateDataInfoNV = VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV, + ePhysicalDeviceLegacyDitheringFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + ePhysicalDeviceExternalFormatResolveFeaturesANDROID = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID, + ePhysicalDeviceExternalFormatResolvePropertiesANDROID = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID, + eAndroidHardwareBufferFormatResolvePropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID, +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + ePhysicalDeviceAntiLagFeaturesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ANTI_LAG_FEATURES_AMD, + eAntiLagDataAMD = VK_STRUCTURE_TYPE_ANTI_LAG_DATA_AMD, + eAntiLagPresentationInfoAMD = VK_STRUCTURE_TYPE_ANTI_LAG_PRESENTATION_INFO_AMD, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + ePhysicalDeviceDenseGeometryFormatFeaturesAMDX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DENSE_GEOMETRY_FORMAT_FEATURES_AMDX, + eAccelerationStructureDenseGeometryFormatTrianglesDataAMDX = VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DENSE_GEOMETRY_FORMAT_TRIANGLES_DATA_AMDX, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eSurfaceCapabilitiesPresentId2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR, + ePresentId2KHR = VK_STRUCTURE_TYPE_PRESENT_ID_2_KHR, + ePhysicalDevicePresentId2FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR, + eSurfaceCapabilitiesPresentWait2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR, + ePhysicalDevicePresentWait2FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR, + ePresentWait2InfoKHR = VK_STRUCTURE_TYPE_PRESENT_WAIT_2_INFO_KHR, + ePhysicalDeviceRayTracingPositionFetchFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR, + ePhysicalDeviceShaderObjectFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT, + ePhysicalDeviceShaderObjectPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT, + eShaderCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT, + ePhysicalDevicePipelineBinaryFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR, + ePipelineBinaryCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_BINARY_CREATE_INFO_KHR, + ePipelineBinaryInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_BINARY_INFO_KHR, + ePipelineBinaryKeyKHR = VK_STRUCTURE_TYPE_PIPELINE_BINARY_KEY_KHR, + ePhysicalDevicePipelineBinaryPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR, + eReleaseCapturedPipelineDataInfoKHR = VK_STRUCTURE_TYPE_RELEASE_CAPTURED_PIPELINE_DATA_INFO_KHR, + ePipelineBinaryDataInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_BINARY_DATA_INFO_KHR, + ePipelineCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_CREATE_INFO_KHR, + eDevicePipelineBinaryInternalCacheControlKHR = VK_STRUCTURE_TYPE_DEVICE_PIPELINE_BINARY_INTERNAL_CACHE_CONTROL_KHR, + ePipelineBinaryHandlesInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_BINARY_HANDLES_INFO_KHR, + ePhysicalDeviceTilePropertiesFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM, + eTilePropertiesQCOM = VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM, + ePhysicalDeviceAmigoProfilingFeaturesSEC = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC, + eAmigoProfilingSubmitInfoSEC = VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC, + eSurfacePresentModeKHR = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_KHR, + eSurfacePresentModeEXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT, + eSurfacePresentScalingCapabilitiesKHR = VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_KHR, + eSurfacePresentScalingCapabilitiesEXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT, + eSurfacePresentModeCompatibilityKHR = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_KHR, + eSurfacePresentModeCompatibilityEXT = VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT, + ePhysicalDeviceSwapchainMaintenance1FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR, + ePhysicalDeviceSwapchainMaintenance1FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT, + eSwapchainPresentFenceInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_KHR, + eSwapchainPresentFenceInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT, + eSwapchainPresentModesCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_KHR, + eSwapchainPresentModesCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT, + eSwapchainPresentModeInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_KHR, + eSwapchainPresentModeInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT, + eSwapchainPresentScalingCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_KHR, + eSwapchainPresentScalingCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT, + eReleaseSwapchainImagesInfoKHR = VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_KHR, + eReleaseSwapchainImagesInfoEXT = VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT, + ePhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM, + ePhysicalDeviceRayTracingInvocationReorderFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV, + ePhysicalDeviceRayTracingInvocationReorderPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV, + ePhysicalDeviceCooperativeVectorFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_FEATURES_NV, + ePhysicalDeviceCooperativeVectorPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_VECTOR_PROPERTIES_NV, + eCooperativeVectorPropertiesNV = VK_STRUCTURE_TYPE_COOPERATIVE_VECTOR_PROPERTIES_NV, + eConvertCooperativeVectorMatrixInfoNV = VK_STRUCTURE_TYPE_CONVERT_COOPERATIVE_VECTOR_MATRIX_INFO_NV, + ePhysicalDeviceExtendedSparseAddressSpaceFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV, + ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV, + ePhysicalDeviceMutableDescriptorTypeFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT, + ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE, + eMutableDescriptorTypeCreateInfoEXT = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT, + eMutableDescriptorTypeCreateInfoVALVE = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE, + ePhysicalDeviceLegacyVertexAttributesFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT, + ePhysicalDeviceLegacyVertexAttributesPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT, + eLayerSettingsCreateInfoEXT = VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT, + ePhysicalDeviceShaderCoreBuiltinsFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM, + ePhysicalDeviceShaderCoreBuiltinsPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM, + ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT, + ePhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT, + ePhysicalDeviceInternallySynchronizedQueuesFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR, + eLatencySleepModeInfoNV = VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV, + eLatencySleepInfoNV = VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV, + eSetLatencyMarkerInfoNV = VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV, + eGetLatencyMarkerInfoNV = VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV, + eLatencyTimingsFrameReportNV = VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV, + eLatencySubmissionPresentIdNV = VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV, + eOutOfBandQueueTypeInfoNV = VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV, + eSwapchainLatencyCreateInfoNV = VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV, + eLatencySurfaceCapabilitiesNV = VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV, + ePhysicalDeviceCooperativeMatrixFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR, + eCooperativeMatrixPropertiesKHR = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR, + ePhysicalDeviceCooperativeMatrixPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR, + eDataGraphPipelineCreateInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CREATE_INFO_ARM, + eDataGraphPipelineSessionCreateInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_CREATE_INFO_ARM, + eDataGraphPipelineResourceInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_RESOURCE_INFO_ARM, + eDataGraphPipelineConstantARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_ARM, + eDataGraphPipelineSessionMemoryRequirementsInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_MEMORY_REQUIREMENTS_INFO_ARM, + eBindDataGraphPipelineSessionMemoryInfoARM = VK_STRUCTURE_TYPE_BIND_DATA_GRAPH_PIPELINE_SESSION_MEMORY_INFO_ARM, + ePhysicalDeviceDataGraphFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_FEATURES_ARM, + eDataGraphPipelineShaderModuleCreateInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SHADER_MODULE_CREATE_INFO_ARM, + eDataGraphPipelinePropertyQueryResultARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_PROPERTY_QUERY_RESULT_ARM, + eDataGraphPipelineInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_INFO_ARM, + eDataGraphPipelineCompilerControlCreateInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_COMPILER_CONTROL_CREATE_INFO_ARM, + eDataGraphPipelineSessionBindPointRequirementsInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENTS_INFO_ARM, + eDataGraphPipelineSessionBindPointRequirementARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_REQUIREMENT_ARM, + eDataGraphPipelineIdentifierCreateInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_IDENTIFIER_CREATE_INFO_ARM, + eDataGraphPipelineDispatchInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_DISPATCH_INFO_ARM, + eDataGraphProcessingEngineCreateInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PROCESSING_ENGINE_CREATE_INFO_ARM, + eQueueFamilyDataGraphProcessingEnginePropertiesARM = VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_PROPERTIES_ARM, + eQueueFamilyDataGraphPropertiesARM = VK_STRUCTURE_TYPE_QUEUE_FAMILY_DATA_GRAPH_PROPERTIES_ARM, + ePhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_QUEUE_FAMILY_DATA_GRAPH_PROCESSING_ENGINE_INFO_ARM, + eDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_CONSTANT_TENSOR_SEMI_STRUCTURED_SPARSITY_INFO_ARM, + ePhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM, + eMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM = VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM, + ePhysicalDeviceComputeShaderDerivativesFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR, + ePhysicalDeviceComputeShaderDerivativesFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, + ePhysicalDeviceComputeShaderDerivativesPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR, + eVideoDecodeAv1CapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR, + eVideoDecodeAv1PictureInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR, + eVideoDecodeAv1ProfileInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR, + eVideoDecodeAv1SessionParametersCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR, + eVideoDecodeAv1DpbSlotInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR, + eVideoEncodeAv1CapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR, + eVideoEncodeAv1SessionParametersCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR, + eVideoEncodeAv1PictureInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PICTURE_INFO_KHR, + eVideoEncodeAv1DpbSlotInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR, + ePhysicalDeviceVideoEncodeAv1FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR, + eVideoEncodeAv1ProfileInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR, + eVideoEncodeAv1RateControlInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_INFO_KHR, + eVideoEncodeAv1RateControlLayerInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_RATE_CONTROL_LAYER_INFO_KHR, + eVideoEncodeAv1QualityLevelPropertiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUALITY_LEVEL_PROPERTIES_KHR, + eVideoEncodeAv1SessionCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_SESSION_CREATE_INFO_KHR, + eVideoEncodeAv1GopRemainingFrameInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_GOP_REMAINING_FRAME_INFO_KHR, + ePhysicalDeviceVideoDecodeVp9FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR, + eVideoDecodeVp9CapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR, + eVideoDecodeVp9PictureInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PICTURE_INFO_KHR, + eVideoDecodeVp9ProfileInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR, + ePhysicalDeviceVideoMaintenance1FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR, + eVideoInlineQueryInfoKHR = VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR, + ePhysicalDevicePerStageDescriptorSetFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV, + ePhysicalDeviceImageProcessing2FeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM, + ePhysicalDeviceImageProcessing2PropertiesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM, + eSamplerBlockMatchWindowCreateInfoQCOM = VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM, + eSamplerCubicWeightsCreateInfoQCOM = VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM, + ePhysicalDeviceCubicWeightsFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM, + eBlitImageCubicWeightsInfoQCOM = VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM, + ePhysicalDeviceYcbcrDegammaFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM, + eSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM, + ePhysicalDeviceCubicClampFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM, + ePhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT, + ePhysicalDeviceUnifiedImageLayoutsFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR, + eAttachmentFeedbackLoopInfoEXT = VK_STRUCTURE_TYPE_ATTACHMENT_FEEDBACK_LOOP_INFO_EXT, +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + eScreenBufferPropertiesQNX = VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX, + eScreenBufferFormatPropertiesQNX = VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX, + eImportScreenBufferInfoQNX = VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX, + eExternalFormatQNX = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX, + ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX, +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + ePhysicalDeviceLayeredDriverPropertiesMSFT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT, + eCalibratedTimestampInfoKHR = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR, + eCalibratedTimestampInfoEXT = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT, + eSetDescriptorBufferOffsetsInfoEXT = VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT, + eBindDescriptorBufferEmbeddedSamplersInfoEXT = VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT, + ePhysicalDeviceDescriptorPoolOverallocationFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV, + ePhysicalDeviceTileMemoryHeapFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_FEATURES_QCOM, + ePhysicalDeviceTileMemoryHeapPropertiesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_MEMORY_HEAP_PROPERTIES_QCOM, + eTileMemoryRequirementsQCOM = VK_STRUCTURE_TYPE_TILE_MEMORY_REQUIREMENTS_QCOM, + eTileMemoryBindInfoQCOM = VK_STRUCTURE_TYPE_TILE_MEMORY_BIND_INFO_QCOM, + eTileMemorySizeInfoQCOM = VK_STRUCTURE_TYPE_TILE_MEMORY_SIZE_INFO_QCOM, + ePhysicalDeviceCopyMemoryIndirectFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR, + ePhysicalDeviceCopyMemoryIndirectPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR, + ePhysicalDeviceCopyMemoryIndirectPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV, + eCopyMemoryIndirectInfoKHR = VK_STRUCTURE_TYPE_COPY_MEMORY_INDIRECT_INFO_KHR, + eCopyMemoryToImageIndirectInfoKHR = VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INDIRECT_INFO_KHR, + ePhysicalDeviceMemoryDecompressionFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT, + ePhysicalDeviceMemoryDecompressionFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV, + ePhysicalDeviceMemoryDecompressionPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT, + ePhysicalDeviceMemoryDecompressionPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV, + eDecompressMemoryInfoEXT = VK_STRUCTURE_TYPE_DECOMPRESS_MEMORY_INFO_EXT, + eDisplaySurfaceStereoCreateInfoNV = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_STEREO_CREATE_INFO_NV, + eDisplayModeStereoPropertiesNV = VK_STRUCTURE_TYPE_DISPLAY_MODE_STEREO_PROPERTIES_NV, + eVideoEncodeIntraRefreshCapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR, + eVideoEncodeSessionIntraRefreshCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_INTRA_REFRESH_CREATE_INFO_KHR, + eVideoEncodeIntraRefreshInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_INFO_KHR, + eVideoReferenceIntraRefreshInfoKHR = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR, + ePhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR, + eVideoEncodeQuantizationMapCapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR, + eVideoFormatQuantizationMapPropertiesKHR = VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR, + eVideoEncodeQuantizationMapInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_INFO_KHR, + eVideoEncodeQuantizationMapSessionParametersCreateInfoKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_SESSION_PARAMETERS_CREATE_INFO_KHR, + ePhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR, + eVideoEncodeH264QuantizationMapCapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR, + eVideoEncodeH265QuantizationMapCapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR, + eVideoFormatH265QuantizationMapPropertiesKHR = VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR, + eVideoEncodeAv1QuantizationMapCapabilitiesKHR = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR, + eVideoFormatAv1QuantizationMapPropertiesKHR = VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR, + ePhysicalDeviceRawAccessChainsFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAW_ACCESS_CHAINS_FEATURES_NV, + eExternalComputeQueueDeviceCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DEVICE_CREATE_INFO_NV, + eExternalComputeQueueCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_CREATE_INFO_NV, + eExternalComputeQueueDataParamsNV = VK_STRUCTURE_TYPE_EXTERNAL_COMPUTE_QUEUE_DATA_PARAMS_NV, + ePhysicalDeviceExternalComputeQueuePropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_COMPUTE_QUEUE_PROPERTIES_NV, + ePhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR, + ePhysicalDeviceCommandBufferInheritanceFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMMAND_BUFFER_INHERITANCE_FEATURES_NV, + ePhysicalDeviceMaintenance7FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR, + ePhysicalDeviceMaintenance7PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR, + ePhysicalDeviceLayeredApiPropertiesListKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR, + ePhysicalDeviceLayeredApiPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_KHR, + ePhysicalDeviceLayeredApiVulkanPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_VULKAN_PROPERTIES_KHR, + ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT16_VECTOR_FEATURES_NV, + ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT, + ePhysicalDeviceShaderFloat8FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT, + ePhysicalDeviceRayTracingValidationFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_VALIDATION_FEATURES_NV, + ePhysicalDeviceClusterAccelerationStructureFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_FEATURES_NV, + ePhysicalDeviceClusterAccelerationStructurePropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_ACCELERATION_STRUCTURE_PROPERTIES_NV, + eClusterAccelerationStructureClustersBottomLevelInputNV = VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_CLUSTERS_BOTTOM_LEVEL_INPUT_NV, + eClusterAccelerationStructureTriangleClusterInputNV = VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_TRIANGLE_CLUSTER_INPUT_NV, + eClusterAccelerationStructureMoveObjectsInputNV = VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_MOVE_OBJECTS_INPUT_NV, + eClusterAccelerationStructureInputInfoNV = VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_INPUT_INFO_NV, + eClusterAccelerationStructureCommandsInfoNV = VK_STRUCTURE_TYPE_CLUSTER_ACCELERATION_STRUCTURE_COMMANDS_INFO_NV, + eRayTracingPipelineClusterAccelerationStructureCreateInfoNV = VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CLUSTER_ACCELERATION_STRUCTURE_CREATE_INFO_NV, + ePhysicalDevicePartitionedAccelerationStructureFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_FEATURES_NV, + ePhysicalDevicePartitionedAccelerationStructurePropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PARTITIONED_ACCELERATION_STRUCTURE_PROPERTIES_NV, + eWriteDescriptorSetPartitionedAccelerationStructureNV = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_PARTITIONED_ACCELERATION_STRUCTURE_NV, + ePartitionedAccelerationStructureInstancesInputNV = VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCES_INPUT_NV, + eBuildPartitionedAccelerationStructureInfoNV = VK_STRUCTURE_TYPE_BUILD_PARTITIONED_ACCELERATION_STRUCTURE_INFO_NV, + ePartitionedAccelerationStructureFlagsNV = VK_STRUCTURE_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_FLAGS_NV, + ePhysicalDeviceDeviceGeneratedCommandsFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT, + ePhysicalDeviceDeviceGeneratedCommandsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT, + eGeneratedCommandsMemoryRequirementsInfoEXT = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_EXT, + eIndirectExecutionSetCreateInfoEXT = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_CREATE_INFO_EXT, + eGeneratedCommandsInfoEXT = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_EXT, + eIndirectCommandsLayoutCreateInfoEXT = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_EXT, + eIndirectCommandsLayoutTokenEXT = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_EXT, + eWriteIndirectExecutionSetPipelineEXT = VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_PIPELINE_EXT, + eWriteIndirectExecutionSetShaderEXT = VK_STRUCTURE_TYPE_WRITE_INDIRECT_EXECUTION_SET_SHADER_EXT, + eIndirectExecutionSetPipelineInfoEXT = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_PIPELINE_INFO_EXT, + eIndirectExecutionSetShaderInfoEXT = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_INFO_EXT, + eIndirectExecutionSetShaderLayoutInfoEXT = VK_STRUCTURE_TYPE_INDIRECT_EXECUTION_SET_SHADER_LAYOUT_INFO_EXT, + eGeneratedCommandsPipelineInfoEXT = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_PIPELINE_INFO_EXT, + eGeneratedCommandsShaderInfoEXT = VK_STRUCTURE_TYPE_GENERATED_COMMANDS_SHADER_INFO_EXT, + ePhysicalDeviceFaultFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR, + ePhysicalDeviceFaultPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR, + eDeviceFaultInfoKHR = VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_KHR, + eDeviceFaultDebugInfoKHR = VK_STRUCTURE_TYPE_DEVICE_FAULT_DEBUG_INFO_KHR, + ePhysicalDeviceMaintenance8FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR, + eMemoryBarrierAccessFlags3KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR, + ePhysicalDeviceImageAlignmentControlFeaturesMESA = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA, + ePhysicalDeviceImageAlignmentControlPropertiesMESA = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA, + eImageAlignmentControlCreateInfoMESA = VK_STRUCTURE_TYPE_IMAGE_ALIGNMENT_CONTROL_CREATE_INFO_MESA, + ePhysicalDeviceShaderFmaFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR, + ePushConstantBankInfoNV = VK_STRUCTURE_TYPE_PUSH_CONSTANT_BANK_INFO_NV, + ePhysicalDevicePushConstantBankFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_FEATURES_NV, + ePhysicalDevicePushConstantBankPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_CONSTANT_BANK_PROPERTIES_NV, + ePhysicalDeviceRayTracingInvocationReorderFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT, + ePhysicalDeviceRayTracingInvocationReorderPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT, + ePhysicalDeviceDepthClampControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT, + ePipelineViewportDepthClampControlCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLAMP_CONTROL_CREATE_INFO_EXT, + ePhysicalDeviceMaintenance9FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR, + ePhysicalDeviceMaintenance9PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR, + eQueueFamilyOwnershipTransferPropertiesKHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR, + ePhysicalDeviceVideoMaintenance2FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR, + eVideoDecodeH264InlineSessionParametersInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR, + eVideoDecodeH265InlineSessionParametersInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR, + eVideoDecodeAv1InlineSessionParametersInfoKHR = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR, +#if defined( VK_USE_PLATFORM_OHOS ) + eSurfaceCreateInfoOHOS = VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS, +#endif /*VK_USE_PLATFORM_OHOS*/ + ePhysicalDeviceHdrVividFeaturesHUAWEI = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HDR_VIVID_FEATURES_HUAWEI, + eHdrVividDynamicMetadataHUAWEI = VK_STRUCTURE_TYPE_HDR_VIVID_DYNAMIC_METADATA_HUAWEI, + ePhysicalDeviceCooperativeMatrix2FeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_FEATURES_NV, + eCooperativeMatrixFlexibleDimensionsPropertiesNV = VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_FLEXIBLE_DIMENSIONS_PROPERTIES_NV, + ePhysicalDeviceCooperativeMatrix2PropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_2_PROPERTIES_NV, + ePhysicalDevicePipelineOpacityMicromapFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM, +#if defined( VK_USE_PLATFORM_METAL_EXT ) + eImportMemoryMetalHandleInfoEXT = VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT, + eMemoryMetalHandlePropertiesEXT = VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT, + eMemoryGetMetalHandleInfoEXT = VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT, +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + ePhysicalDeviceDepthClampZeroOneFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR, + ePhysicalDeviceDepthClampZeroOneFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT, + ePhysicalDevicePerformanceCountersByRegionFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_FEATURES_ARM, + ePhysicalDevicePerformanceCountersByRegionPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_COUNTERS_BY_REGION_PROPERTIES_ARM, + ePerformanceCounterARM = VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_ARM, + ePerformanceCounterDescriptionARM = VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_ARM, + eRenderPassPerformanceCountersByRegionBeginInfoARM = VK_STRUCTURE_TYPE_RENDER_PASS_PERFORMANCE_COUNTERS_BY_REGION_BEGIN_INFO_ARM, + ePhysicalDeviceShaderInstrumentationFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_FEATURES_ARM, + ePhysicalDeviceShaderInstrumentationPropertiesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INSTRUMENTATION_PROPERTIES_ARM, + eShaderInstrumentationCreateInfoARM = VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_CREATE_INFO_ARM, + eShaderInstrumentationMetricDescriptionARM = VK_STRUCTURE_TYPE_SHADER_INSTRUMENTATION_METRIC_DESCRIPTION_ARM, + ePhysicalDeviceVertexAttributeRobustnessFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT, + ePhysicalDeviceFormatPackFeaturesARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FORMAT_PACK_FEATURES_ARM, + ePhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_FEATURES_VALVE, + ePhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_LAYERED_PROPERTIES_VALVE, + ePipelineFragmentDensityMapLayeredCreateInfoVALVE = VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_DENSITY_MAP_LAYERED_CREATE_INFO_VALVE, + ePhysicalDeviceRobustness2FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR, + ePhysicalDeviceRobustness2FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, + ePhysicalDeviceRobustness2PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR, + ePhysicalDeviceRobustness2PropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT, + eSetPresentConfigNV = VK_STRUCTURE_TYPE_SET_PRESENT_CONFIG_NV, + ePhysicalDevicePresentMeteringFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_METERING_FEATURES_NV, + ePhysicalDeviceFragmentDensityMapOffsetFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT, + ePhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM, + ePhysicalDeviceFragmentDensityMapOffsetPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT, + ePhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM, + eRenderPassFragmentDensityMapOffsetEndInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_EXT, + eSubpassFragmentDensityMapOffsetEndInfoQCOM = VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM, + ePhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT, + ePhysicalDevicePresentModeFifoLatestReadyFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR, + ePhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_EXT, + ePhysicalDeviceShader64BitIndexingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT, + ePhysicalDeviceCustomResolveFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT, + eBeginCustomResolveInfoEXT = VK_STRUCTURE_TYPE_BEGIN_CUSTOM_RESOLVE_INFO_EXT, + eCustomResolveCreateInfoEXT = VK_STRUCTURE_TYPE_CUSTOM_RESOLVE_CREATE_INFO_EXT, + ePhysicalDeviceDataGraphModelFeaturesQCOM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DATA_GRAPH_MODEL_FEATURES_QCOM, + eDataGraphPipelineBuiltinModelCreateInfoQCOM = VK_STRUCTURE_TYPE_DATA_GRAPH_PIPELINE_BUILTIN_MODEL_CREATE_INFO_QCOM, + ePhysicalDeviceMaintenance10FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR, + ePhysicalDeviceMaintenance10PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR, + eRenderingAttachmentFlagsInfoKHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_FLAGS_INFO_KHR, + eRenderingEndInfoKHR = VK_STRUCTURE_TYPE_RENDERING_END_INFO_KHR, + eRenderingEndInfoEXT = VK_STRUCTURE_TYPE_RENDERING_END_INFO_EXT, + eResolveImageModeInfoKHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_MODE_INFO_KHR, + ePhysicalDeviceShaderLongVectorFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT, + ePhysicalDeviceShaderLongVectorPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT, + ePhysicalDevicePipelineCacheIncrementalModeFeaturesSEC = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CACHE_INCREMENTAL_MODE_FEATURES_SEC, + ePhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT, + eComputeOccupancyPriorityParametersNV = VK_STRUCTURE_TYPE_COMPUTE_OCCUPANCY_PRIORITY_PARAMETERS_NV, + ePhysicalDeviceComputeOccupancyPriorityFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_OCCUPANCY_PRIORITY_FEATURES_NV, + ePhysicalDeviceShaderSubgroupPartitionedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT, +#if defined( VK_USE_PLATFORM_UBM_SEC ) + eUbmSurfaceCreateInfoSEC = VK_STRUCTURE_TYPE_UBM_SURFACE_CREATE_INFO_SEC, +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + ePhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MIXED_FLOAT_DOT_PRODUCT_FEATURES_VALVE + }; + + // wrapper class for enum VkObjectType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkObjectType.html + enum class ObjectType + { + eUnknown = VK_OBJECT_TYPE_UNKNOWN, + eInstance = VK_OBJECT_TYPE_INSTANCE, + ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE, + eDevice = VK_OBJECT_TYPE_DEVICE, + eQueue = VK_OBJECT_TYPE_QUEUE, + eSemaphore = VK_OBJECT_TYPE_SEMAPHORE, + eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER, + eFence = VK_OBJECT_TYPE_FENCE, + eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY, + eBuffer = VK_OBJECT_TYPE_BUFFER, + eImage = VK_OBJECT_TYPE_IMAGE, + eEvent = VK_OBJECT_TYPE_EVENT, + eQueryPool = VK_OBJECT_TYPE_QUERY_POOL, + eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW, + eImageView = VK_OBJECT_TYPE_IMAGE_VIEW, + eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE, + ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE, + ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT, + eRenderPass = VK_OBJECT_TYPE_RENDER_PASS, + ePipeline = VK_OBJECT_TYPE_PIPELINE, + eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, + eSampler = VK_OBJECT_TYPE_SAMPLER, + eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL, + eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET, + eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER, + eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL, + eDescriptorUpdateTemplate = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, + eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR, + eSamplerYcbcrConversion = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, + eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR, + ePrivateDataSlot = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT, + ePrivateDataSlotEXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT, + eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR, + eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR, + eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR, + eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR, + eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT, + eVideoSessionKHR = VK_OBJECT_TYPE_VIDEO_SESSION_KHR, + eVideoSessionParametersKHR = VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR, + eCuModuleNVX = VK_OBJECT_TYPE_CU_MODULE_NVX, + eCuFunctionNVX = VK_OBJECT_TYPE_CU_FUNCTION_NVX, + eDebugUtilsMessengerEXT = VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT, + eAccelerationStructureKHR = VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR, + eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT, + eAccelerationStructureNV = VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV, + ePerformanceConfigurationINTEL = VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL, + eDeferredOperationKHR = VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR, + eIndirectCommandsLayoutNV = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eCudaModuleNV = VK_OBJECT_TYPE_CUDA_MODULE_NV, + eCudaFunctionNV = VK_OBJECT_TYPE_CUDA_FUNCTION_NV, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eBufferCollectionFUCHSIA = VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA, +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + eMicromapEXT = VK_OBJECT_TYPE_MICROMAP_EXT, + eTensorARM = VK_OBJECT_TYPE_TENSOR_ARM, + eTensorViewARM = VK_OBJECT_TYPE_TENSOR_VIEW_ARM, + eOpticalFlowSessionNV = VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV, + eShaderEXT = VK_OBJECT_TYPE_SHADER_EXT, + ePipelineBinaryKHR = VK_OBJECT_TYPE_PIPELINE_BINARY_KHR, + eDataGraphPipelineSessionARM = VK_OBJECT_TYPE_DATA_GRAPH_PIPELINE_SESSION_ARM, + eExternalComputeQueueNV = VK_OBJECT_TYPE_EXTERNAL_COMPUTE_QUEUE_NV, + eIndirectCommandsLayoutEXT = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_EXT, + eIndirectExecutionSetEXT = VK_OBJECT_TYPE_INDIRECT_EXECUTION_SET_EXT, + eShaderInstrumentationARM = VK_OBJECT_TYPE_SHADER_INSTRUMENTATION_ARM + }; + + // wrapper class for enum VkVendorId, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVendorId.html + enum class VendorId + { + eKhronos = VK_VENDOR_ID_KHRONOS, + eVIV = VK_VENDOR_ID_VIV, + eVSI = VK_VENDOR_ID_VSI, + eKazan = VK_VENDOR_ID_KAZAN, + eCodeplay = VK_VENDOR_ID_CODEPLAY, + eMESA = VK_VENDOR_ID_MESA, + ePocl = VK_VENDOR_ID_POCL, + eMobileye = VK_VENDOR_ID_MOBILEYE + }; + + // wrapper class for enum VkFormat, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFormat.html + enum class Format + { + eUndefined = VK_FORMAT_UNDEFINED, + eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8, + eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16, + eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16, + eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16, + eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16, + eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16, + eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16, + eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16, + eR8Unorm = VK_FORMAT_R8_UNORM, + eR8Snorm = VK_FORMAT_R8_SNORM, + eR8Uscaled = VK_FORMAT_R8_USCALED, + eR8Sscaled = VK_FORMAT_R8_SSCALED, + eR8Uint = VK_FORMAT_R8_UINT, + eR8Sint = VK_FORMAT_R8_SINT, + eR8Srgb = VK_FORMAT_R8_SRGB, + eR8G8Unorm = VK_FORMAT_R8G8_UNORM, + eR8G8Snorm = VK_FORMAT_R8G8_SNORM, + eR8G8Uscaled = VK_FORMAT_R8G8_USCALED, + eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED, + eR8G8Uint = VK_FORMAT_R8G8_UINT, + eR8G8Sint = VK_FORMAT_R8G8_SINT, + eR8G8Srgb = VK_FORMAT_R8G8_SRGB, + eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM, + eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM, + eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED, + eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED, + eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT, + eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT, + eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB, + eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM, + eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM, + eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED, + eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED, + eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT, + eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT, + eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB, + eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM, + eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM, + eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED, + eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED, + eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT, + eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT, + eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB, + eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM, + eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM, + eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED, + eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED, + eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT, + eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT, + eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB, + eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32, + eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32, + eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32, + eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32, + eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32, + eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32, + eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32, + eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32, + eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32, + eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32, + eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32, + eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32, + eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32, + eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32, + eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32, + eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32, + eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32, + eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32, + eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32, + eR16Unorm = VK_FORMAT_R16_UNORM, + eR16Snorm = VK_FORMAT_R16_SNORM, + eR16Uscaled = VK_FORMAT_R16_USCALED, + eR16Sscaled = VK_FORMAT_R16_SSCALED, + eR16Uint = VK_FORMAT_R16_UINT, + eR16Sint = VK_FORMAT_R16_SINT, + eR16Sfloat = VK_FORMAT_R16_SFLOAT, + eR16G16Unorm = VK_FORMAT_R16G16_UNORM, + eR16G16Snorm = VK_FORMAT_R16G16_SNORM, + eR16G16Uscaled = VK_FORMAT_R16G16_USCALED, + eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED, + eR16G16Uint = VK_FORMAT_R16G16_UINT, + eR16G16Sint = VK_FORMAT_R16G16_SINT, + eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT, + eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM, + eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM, + eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED, + eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED, + eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT, + eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT, + eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT, + eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM, + eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM, + eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED, + eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED, + eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT, + eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT, + eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT, + eR32Uint = VK_FORMAT_R32_UINT, + eR32Sint = VK_FORMAT_R32_SINT, + eR32Sfloat = VK_FORMAT_R32_SFLOAT, + eR32G32Uint = VK_FORMAT_R32G32_UINT, + eR32G32Sint = VK_FORMAT_R32G32_SINT, + eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT, + eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT, + eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT, + eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT, + eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT, + eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT, + eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT, + eR64Uint = VK_FORMAT_R64_UINT, + eR64Sint = VK_FORMAT_R64_SINT, + eR64Sfloat = VK_FORMAT_R64_SFLOAT, + eR64G64Uint = VK_FORMAT_R64G64_UINT, + eR64G64Sint = VK_FORMAT_R64G64_SINT, + eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT, + eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT, + eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT, + eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT, + eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT, + eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT, + eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT, + eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32, + eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, + eD16Unorm = VK_FORMAT_D16_UNORM, + eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32, + eD32Sfloat = VK_FORMAT_D32_SFLOAT, + eS8Uint = VK_FORMAT_S8_UINT, + eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT, + eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT, + eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT, + eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK, + eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK, + eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK, + eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK, + eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK, + eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK, + eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK, + eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK, + eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK, + eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK, + eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK, + eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK, + eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK, + eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK, + eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK, + eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK, + eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, + eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, + eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, + eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, + eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, + eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, + eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK, + eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK, + eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK, + eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK, + eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK, + eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK, + eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK, + eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK, + eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK, + eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK, + eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK, + eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK, + eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK, + eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK, + eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK, + eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK, + eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK, + eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK, + eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK, + eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK, + eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK, + eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK, + eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK, + eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK, + eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK, + eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK, + eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK, + eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK, + eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK, + eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK, + eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK, + eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK, + eG8B8G8R8422Unorm = VK_FORMAT_G8B8G8R8_422_UNORM, + eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM_KHR, + eB8G8R8G8422Unorm = VK_FORMAT_B8G8R8G8_422_UNORM, + eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM_KHR, + eG8B8R83Plane420Unorm = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, + eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR, + eG8B8R82Plane420Unorm = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, + eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR, + eG8B8R83Plane422Unorm = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, + eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR, + eG8B8R82Plane422Unorm = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, + eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR, + eG8B8R83Plane444Unorm = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, + eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR, + eR10X6UnormPack16 = VK_FORMAT_R10X6_UNORM_PACK16, + eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16_KHR, + eR10X6G10X6Unorm2Pack16 = VK_FORMAT_R10X6G10X6_UNORM_2PACK16, + eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR, + eR10X6G10X6B10X6A10X6Unorm4Pack16 = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, + eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR, + eG10X6B10X6G10X6R10X6422Unorm4Pack16 = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, + eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR, + eB10X6G10X6R10X6G10X6422Unorm4Pack16 = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, + eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR, + eG10X6B10X6R10X63Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, + eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR, + eG10X6B10X6R10X62Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, + eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR, + eG10X6B10X6R10X63Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, + eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR, + eG10X6B10X6R10X62Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, + eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR, + eG10X6B10X6R10X63Plane444Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, + eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR, + eR12X4UnormPack16 = VK_FORMAT_R12X4_UNORM_PACK16, + eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16_KHR, + eR12X4G12X4Unorm2Pack16 = VK_FORMAT_R12X4G12X4_UNORM_2PACK16, + eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR, + eR12X4G12X4B12X4A12X4Unorm4Pack16 = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, + eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR, + eG12X4B12X4G12X4R12X4422Unorm4Pack16 = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, + eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR, + eB12X4G12X4R12X4G12X4422Unorm4Pack16 = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, + eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR, + eG12X4B12X4R12X43Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, + eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR, + eG12X4B12X4R12X42Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, + eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR, + eG12X4B12X4R12X43Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, + eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR, + eG12X4B12X4R12X42Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, + eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR, + eG12X4B12X4R12X43Plane444Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, + eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR, + eG16B16G16R16422Unorm = VK_FORMAT_G16B16G16R16_422_UNORM, + eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM_KHR, + eB16G16R16G16422Unorm = VK_FORMAT_B16G16R16G16_422_UNORM, + eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM_KHR, + eG16B16R163Plane420Unorm = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, + eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR, + eG16B16R162Plane420Unorm = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, + eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR, + eG16B16R163Plane422Unorm = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, + eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR, + eG16B16R162Plane422Unorm = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, + eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR, + eG16B16R163Plane444Unorm = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, + eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR, + eG8B8R82Plane444Unorm = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM, + eG8B8R82Plane444UnormEXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT, + eG10X6B10X6R10X62Plane444Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, + eG10X6B10X6R10X62Plane444Unorm3Pack16EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT, + eG12X4B12X4R12X42Plane444Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, + eG12X4B12X4R12X42Plane444Unorm3Pack16EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT, + eG16B16R162Plane444Unorm = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM, + eG16B16R162Plane444UnormEXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT, + eA4R4G4B4UnormPack16 = VK_FORMAT_A4R4G4B4_UNORM_PACK16, + eA4R4G4B4UnormPack16EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT, + eA4B4G4R4UnormPack16 = VK_FORMAT_A4B4G4R4_UNORM_PACK16, + eA4B4G4R4UnormPack16EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT, + eAstc4x4SfloatBlock = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK, + eAstc4x4SfloatBlockEXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, + eAstc5x4SfloatBlock = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK, + eAstc5x4SfloatBlockEXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, + eAstc5x5SfloatBlock = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK, + eAstc5x5SfloatBlockEXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, + eAstc6x5SfloatBlock = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK, + eAstc6x5SfloatBlockEXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, + eAstc6x6SfloatBlock = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK, + eAstc6x6SfloatBlockEXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, + eAstc8x5SfloatBlock = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK, + eAstc8x5SfloatBlockEXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, + eAstc8x6SfloatBlock = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK, + eAstc8x6SfloatBlockEXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, + eAstc8x8SfloatBlock = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK, + eAstc8x8SfloatBlockEXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, + eAstc10x5SfloatBlock = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK, + eAstc10x5SfloatBlockEXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, + eAstc10x6SfloatBlock = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK, + eAstc10x6SfloatBlockEXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, + eAstc10x8SfloatBlock = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK, + eAstc10x8SfloatBlockEXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, + eAstc10x10SfloatBlock = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK, + eAstc10x10SfloatBlockEXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, + eAstc12x10SfloatBlock = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK, + eAstc12x10SfloatBlockEXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, + eAstc12x12SfloatBlock = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK, + eAstc12x12SfloatBlockEXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, + eA1B5G5R5UnormPack16 = VK_FORMAT_A1B5G5R5_UNORM_PACK16, + eA1B5G5R5UnormPack16KHR = VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR, + eA8Unorm = VK_FORMAT_A8_UNORM, + eA8UnormKHR = VK_FORMAT_A8_UNORM_KHR, + ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, + ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, + ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, + ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, + ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, + ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, + ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, + ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, + eAstc3x3x3UnormBlockEXT = VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT, + eAstc3x3x3SrgbBlockEXT = VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT, + eAstc3x3x3SfloatBlockEXT = VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT, + eAstc4x3x3UnormBlockEXT = VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT, + eAstc4x3x3SrgbBlockEXT = VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT, + eAstc4x3x3SfloatBlockEXT = VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT, + eAstc4x4x3UnormBlockEXT = VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT, + eAstc4x4x3SrgbBlockEXT = VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT, + eAstc4x4x3SfloatBlockEXT = VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT, + eAstc4x4x4UnormBlockEXT = VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT, + eAstc4x4x4SrgbBlockEXT = VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT, + eAstc4x4x4SfloatBlockEXT = VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT, + eAstc5x4x4UnormBlockEXT = VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT, + eAstc5x4x4SrgbBlockEXT = VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT, + eAstc5x4x4SfloatBlockEXT = VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT, + eAstc5x5x4UnormBlockEXT = VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT, + eAstc5x5x4SrgbBlockEXT = VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT, + eAstc5x5x4SfloatBlockEXT = VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT, + eAstc5x5x5UnormBlockEXT = VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT, + eAstc5x5x5SrgbBlockEXT = VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT, + eAstc5x5x5SfloatBlockEXT = VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT, + eAstc6x5x5UnormBlockEXT = VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT, + eAstc6x5x5SrgbBlockEXT = VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT, + eAstc6x5x5SfloatBlockEXT = VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT, + eAstc6x6x5UnormBlockEXT = VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT, + eAstc6x6x5SrgbBlockEXT = VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT, + eAstc6x6x5SfloatBlockEXT = VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT, + eAstc6x6x6UnormBlockEXT = VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT, + eAstc6x6x6SrgbBlockEXT = VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT, + eAstc6x6x6SfloatBlockEXT = VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT, + eR8BoolARM = VK_FORMAT_R8_BOOL_ARM, + eR16SfloatFpencodingBfloat16ARM = VK_FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM, + eR8SfloatFpencodingFloat8E4M3ARM = VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM, + eR8SfloatFpencodingFloat8E5M2ARM = VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM, + eR16G16Sfixed5NV = VK_FORMAT_R16G16_SFIXED5_NV, + eR16G16S105NV = VK_FORMAT_R16G16_S10_5_NV, + eR10X6UintPack16ARM = VK_FORMAT_R10X6_UINT_PACK16_ARM, + eR10X6G10X6Uint2Pack16ARM = VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM, + eR10X6G10X6B10X6A10X6Uint4Pack16ARM = VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM, + eR12X4UintPack16ARM = VK_FORMAT_R12X4_UINT_PACK16_ARM, + eR12X4G12X4Uint2Pack16ARM = VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM, + eR12X4G12X4B12X4A12X4Uint4Pack16ARM = VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM, + eR14X2UintPack16ARM = VK_FORMAT_R14X2_UINT_PACK16_ARM, + eR14X2G14X2Uint2Pack16ARM = VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM, + eR14X2G14X2B14X2A14X2Uint4Pack16ARM = VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM, + eR14X2UnormPack16ARM = VK_FORMAT_R14X2_UNORM_PACK16_ARM, + eR14X2G14X2Unorm2Pack16ARM = VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM, + eR14X2G14X2B14X2A14X2Unorm4Pack16ARM = VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM, + eG14X2B14X2R14X22Plane420Unorm3Pack16ARM = VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM, + eG14X2B14X2R14X22Plane422Unorm3Pack16ARM = VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM + }; + + // wrapper class for enum VkFormatFeatureFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFormatFeatureFlagBits.html + enum class FormatFeatureFlagBits : VkFormatFeatureFlags + { + eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT, + eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, + eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT, + eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT, + eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT, + eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT, + eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT, + eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, + eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT, + eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, + eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT, + eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT, + eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT, + eTransferSrc = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT, + eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR, + eTransferDst = VK_FORMAT_FEATURE_TRANSFER_DST_BIT, + eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR, + eMidpointChromaSamples = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, + eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR, + eSampledImageYcbcrConversionLinearFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, + eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR, + eSampledImageYcbcrConversionSeparateReconstructionFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, + eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR, + eSampledImageYcbcrConversionChromaReconstructionExplicit = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT, + eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR, + eSampledImageYcbcrConversionChromaReconstructionExplicitForceable = + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT, + eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR, + eDisjoint = VK_FORMAT_FEATURE_DISJOINT_BIT, + eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT_KHR, + eCositedChromaSamples = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, + eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR, + eSampledImageFilterMinmax = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT, + eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT, + eVideoDecodeOutputKHR = VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR, + eVideoDecodeDpbKHR = VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR, + eAccelerationStructureVertexBufferKHR = VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR, + eSampledImageFilterCubicEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT, + eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG, + eFragmentDensityMapEXT = VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT, + eFragmentShadingRateAttachmentKHR = VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eVideoEncodeInputKHR = VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR, + eVideoEncodeDpbKHR = VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR + }; + + // wrapper using for bitmask VkFormatFeatureFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFormatFeatureFlags.html + using FormatFeatureFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkFormatFeatureFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR FormatFeatureFlags allFlags = + FormatFeatureFlagBits::eSampledImage | FormatFeatureFlagBits::eStorageImage | FormatFeatureFlagBits::eStorageImageAtomic | + FormatFeatureFlagBits::eUniformTexelBuffer | FormatFeatureFlagBits::eStorageTexelBuffer | FormatFeatureFlagBits::eStorageTexelBufferAtomic | + FormatFeatureFlagBits::eVertexBuffer | FormatFeatureFlagBits::eColorAttachment | FormatFeatureFlagBits::eColorAttachmentBlend | + FormatFeatureFlagBits::eDepthStencilAttachment | FormatFeatureFlagBits::eBlitSrc | FormatFeatureFlagBits::eBlitDst | + FormatFeatureFlagBits::eSampledImageFilterLinear | FormatFeatureFlagBits::eTransferSrc | FormatFeatureFlagBits::eTransferDst | + FormatFeatureFlagBits::eMidpointChromaSamples | FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter | + FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter | + FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit | + FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable | FormatFeatureFlagBits::eDisjoint | + FormatFeatureFlagBits::eCositedChromaSamples | FormatFeatureFlagBits::eSampledImageFilterMinmax | FormatFeatureFlagBits::eVideoDecodeOutputKHR | + FormatFeatureFlagBits::eVideoDecodeDpbKHR | FormatFeatureFlagBits::eAccelerationStructureVertexBufferKHR | + FormatFeatureFlagBits::eSampledImageFilterCubicEXT | FormatFeatureFlagBits::eFragmentDensityMapEXT | + FormatFeatureFlagBits::eFragmentShadingRateAttachmentKHR | FormatFeatureFlagBits::eVideoEncodeInputKHR | FormatFeatureFlagBits::eVideoEncodeDpbKHR; + }; + + // wrapper class for enum VkImageCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCreateFlagBits.html + enum class ImageCreateFlagBits : VkImageCreateFlags + { + eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT, + eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, + eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, + eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, + eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, + eAlias = VK_IMAGE_CREATE_ALIAS_BIT, + eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT_KHR, + eSplitInstanceBindRegions = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, + eSplitInstanceBindRegionsKHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR, + e2DArrayCompatible = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, + e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR, + eBlockTexelViewCompatible = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, + eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, + eExtendedUsage = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT, + eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR, + eProtected = VK_IMAGE_CREATE_PROTECTED_BIT, + eDisjoint = VK_IMAGE_CREATE_DISJOINT_BIT, + eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT_KHR, + eCornerSampledNV = VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV, + eDescriptorHeapCaptureReplayEXT = VK_IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT, + eDescriptorBufferCaptureReplayEXT = VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, + eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT, + eSubsampledEXT = VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT, + eMultisampledRenderToSingleSampledEXT = VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT, + e2DViewCompatibleEXT = VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT, + eVideoProfileIndependentKHR = VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR, + eFragmentDensityMapOffsetEXT = VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT, + eFragmentDensityMapOffsetQCOM = VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM + }; + + // wrapper using for bitmask VkImageCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCreateFlags.html + using ImageCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkImageCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ImageCreateFlags allFlags = + ImageCreateFlagBits::eSparseBinding | ImageCreateFlagBits::eSparseResidency | ImageCreateFlagBits::eSparseAliased | ImageCreateFlagBits::eMutableFormat | + ImageCreateFlagBits::eCubeCompatible | ImageCreateFlagBits::eAlias | ImageCreateFlagBits::eSplitInstanceBindRegions | + ImageCreateFlagBits::e2DArrayCompatible | ImageCreateFlagBits::eBlockTexelViewCompatible | ImageCreateFlagBits::eExtendedUsage | + ImageCreateFlagBits::eProtected | ImageCreateFlagBits::eDisjoint | ImageCreateFlagBits::eCornerSampledNV | + ImageCreateFlagBits::eDescriptorHeapCaptureReplayEXT | ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT | ImageCreateFlagBits::eSubsampledEXT | + ImageCreateFlagBits::eMultisampledRenderToSingleSampledEXT | ImageCreateFlagBits::e2DViewCompatibleEXT | + ImageCreateFlagBits::eVideoProfileIndependentKHR | ImageCreateFlagBits::eFragmentDensityMapOffsetEXT; + }; + + // wrapper class for enum VkImageTiling, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageTiling.html + enum class ImageTiling + { + eOptimal = VK_IMAGE_TILING_OPTIMAL, + eLinear = VK_IMAGE_TILING_LINEAR, + eDrmFormatModifierEXT = VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT + }; + + // wrapper class for enum VkImageType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageType.html + enum class ImageType + { + e1D = VK_IMAGE_TYPE_1D, + e2D = VK_IMAGE_TYPE_2D, + e3D = VK_IMAGE_TYPE_3D + }; + + // wrapper class for enum VkImageUsageFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageUsageFlagBits.html + enum class ImageUsageFlagBits : VkImageUsageFlags + { + eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT, + eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT, + eSampled = VK_IMAGE_USAGE_SAMPLED_BIT, + eStorage = VK_IMAGE_USAGE_STORAGE_BIT, + eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, + eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, + eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT, + eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, + eHostTransfer = VK_IMAGE_USAGE_HOST_TRANSFER_BIT, + eHostTransferEXT = VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT, + eVideoDecodeDstKHR = VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR, + eVideoDecodeSrcKHR = VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR, + eVideoDecodeDpbKHR = VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR, + eFragmentDensityMapEXT = VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, + eFragmentShadingRateAttachmentKHR = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eShadingRateImageNV = VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV, + eVideoEncodeDstKHR = VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR, + eVideoEncodeSrcKHR = VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, + eVideoEncodeDpbKHR = VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR, + eAttachmentFeedbackLoopEXT = VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT, + eInvocationMaskHUAWEI = VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI, + eSampleWeightQCOM = VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM, + eSampleBlockMatchQCOM = VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM, + eTensorAliasingARM = VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM, + eTileMemoryQCOM = VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM, + eVideoEncodeQuantizationDeltaMapKHR = VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR, + eVideoEncodeEmphasisMapKHR = VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR + }; + + // wrapper using for bitmask VkImageUsageFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageUsageFlags.html + using ImageUsageFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkImageUsageFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ImageUsageFlags allFlags = + ImageUsageFlagBits::eTransferSrc | ImageUsageFlagBits::eTransferDst | ImageUsageFlagBits::eSampled | ImageUsageFlagBits::eStorage | + ImageUsageFlagBits::eColorAttachment | ImageUsageFlagBits::eDepthStencilAttachment | ImageUsageFlagBits::eTransientAttachment | + ImageUsageFlagBits::eInputAttachment | ImageUsageFlagBits::eHostTransfer | ImageUsageFlagBits::eVideoDecodeDstKHR | + ImageUsageFlagBits::eVideoDecodeSrcKHR | ImageUsageFlagBits::eVideoDecodeDpbKHR | ImageUsageFlagBits::eFragmentDensityMapEXT | + ImageUsageFlagBits::eFragmentShadingRateAttachmentKHR | ImageUsageFlagBits::eVideoEncodeDstKHR | ImageUsageFlagBits::eVideoEncodeSrcKHR | + ImageUsageFlagBits::eVideoEncodeDpbKHR | ImageUsageFlagBits::eAttachmentFeedbackLoopEXT | ImageUsageFlagBits::eInvocationMaskHUAWEI | + ImageUsageFlagBits::eSampleWeightQCOM | ImageUsageFlagBits::eSampleBlockMatchQCOM | ImageUsageFlagBits::eTensorAliasingARM | + ImageUsageFlagBits::eTileMemoryQCOM | ImageUsageFlagBits::eVideoEncodeQuantizationDeltaMapKHR | ImageUsageFlagBits::eVideoEncodeEmphasisMapKHR; + }; + + // wrapper class for enum VkInstanceCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkInstanceCreateFlagBits.html + enum class InstanceCreateFlagBits : VkInstanceCreateFlags + { + eEnumeratePortabilityKHR = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR + }; + + // wrapper using for bitmask VkInstanceCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkInstanceCreateFlags.html + using InstanceCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkInstanceCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR InstanceCreateFlags allFlags = InstanceCreateFlagBits::eEnumeratePortabilityKHR; + }; + + // wrapper class for enum VkInternalAllocationType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkInternalAllocationType.html + enum class InternalAllocationType + { + eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + }; + + // wrapper class for enum VkMemoryHeapFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryHeapFlagBits.html + enum class MemoryHeapFlagBits : VkMemoryHeapFlags + { + eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT, + eMultiInstance = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT, + eMultiInstanceKHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR, + eTileMemoryQCOM = VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM + }; + + // wrapper using for bitmask VkMemoryHeapFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryHeapFlags.html + using MemoryHeapFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkMemoryHeapFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR MemoryHeapFlags allFlags = + MemoryHeapFlagBits::eDeviceLocal | MemoryHeapFlagBits::eMultiInstance | MemoryHeapFlagBits::eTileMemoryQCOM; + }; + + // wrapper class for enum VkMemoryPropertyFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryPropertyFlagBits.html + enum class MemoryPropertyFlagBits : VkMemoryPropertyFlags + { + eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, + eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT, + eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, + eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT, + eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT, + eProtected = VK_MEMORY_PROPERTY_PROTECTED_BIT, + eDeviceCoherentAMD = VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD, + eDeviceUncachedAMD = VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD, + eRdmaCapableNV = VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV + }; + + // wrapper using for bitmask VkMemoryPropertyFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryPropertyFlags.html + using MemoryPropertyFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkMemoryPropertyFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR MemoryPropertyFlags allFlags = + MemoryPropertyFlagBits::eDeviceLocal | MemoryPropertyFlagBits::eHostVisible | MemoryPropertyFlagBits::eHostCoherent | + MemoryPropertyFlagBits::eHostCached | MemoryPropertyFlagBits::eLazilyAllocated | MemoryPropertyFlagBits::eProtected | + MemoryPropertyFlagBits::eDeviceCoherentAMD | MemoryPropertyFlagBits::eDeviceUncachedAMD | MemoryPropertyFlagBits::eRdmaCapableNV; + }; + + // wrapper class for enum VkPhysicalDeviceType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceType.html + enum class PhysicalDeviceType + { + eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER, + eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, + eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, + eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, + eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU + }; + + // wrapper class for enum VkQueueFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFlagBits.html + enum class QueueFlagBits : VkQueueFlags + { + eGraphics = VK_QUEUE_GRAPHICS_BIT, + eCompute = VK_QUEUE_COMPUTE_BIT, + eTransfer = VK_QUEUE_TRANSFER_BIT, + eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT, + eProtected = VK_QUEUE_PROTECTED_BIT, + eVideoDecodeKHR = VK_QUEUE_VIDEO_DECODE_BIT_KHR, + eVideoEncodeKHR = VK_QUEUE_VIDEO_ENCODE_BIT_KHR, + eOpticalFlowNV = VK_QUEUE_OPTICAL_FLOW_BIT_NV, + eDataGraphARM = VK_QUEUE_DATA_GRAPH_BIT_ARM + }; + + // wrapper using for bitmask VkQueueFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFlags.html + using QueueFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkQueueFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR QueueFlags allFlags = QueueFlagBits::eGraphics | QueueFlagBits::eCompute | QueueFlagBits::eTransfer | + QueueFlagBits::eSparseBinding | QueueFlagBits::eProtected | QueueFlagBits::eVideoDecodeKHR | + QueueFlagBits::eVideoEncodeKHR | QueueFlagBits::eOpticalFlowNV | QueueFlagBits::eDataGraphARM; + }; + + // wrapper class for enum VkSampleCountFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSampleCountFlagBits.html + enum class SampleCountFlagBits : VkSampleCountFlags + { + e1 = VK_SAMPLE_COUNT_1_BIT, + e2 = VK_SAMPLE_COUNT_2_BIT, + e4 = VK_SAMPLE_COUNT_4_BIT, + e8 = VK_SAMPLE_COUNT_8_BIT, + e16 = VK_SAMPLE_COUNT_16_BIT, + e32 = VK_SAMPLE_COUNT_32_BIT, + e64 = VK_SAMPLE_COUNT_64_BIT + }; + + // wrapper using for bitmask VkSampleCountFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSampleCountFlags.html + using SampleCountFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkSampleCountFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SampleCountFlags allFlags = SampleCountFlagBits::e1 | SampleCountFlagBits::e2 | SampleCountFlagBits::e4 | + SampleCountFlagBits::e8 | SampleCountFlagBits::e16 | SampleCountFlagBits::e32 | + SampleCountFlagBits::e64; + }; + + // wrapper class for enum VkSystemAllocationScope, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSystemAllocationScope.html + enum class SystemAllocationScope + { + eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND, + eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT, + eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE, + eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE, + eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE + }; + + // wrapper class for enum VkShaderStageFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderStageFlagBits.html + enum class ShaderStageFlagBits : VkShaderStageFlags + { + eVertex = VK_SHADER_STAGE_VERTEX_BIT, + eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, + eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, + eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT, + eFragment = VK_SHADER_STAGE_FRAGMENT_BIT, + eCompute = VK_SHADER_STAGE_COMPUTE_BIT, + eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS, + eAll = VK_SHADER_STAGE_ALL, + eRaygenKHR = VK_SHADER_STAGE_RAYGEN_BIT_KHR, + eRaygenNV = VK_SHADER_STAGE_RAYGEN_BIT_NV, + eAnyHitKHR = VK_SHADER_STAGE_ANY_HIT_BIT_KHR, + eAnyHitNV = VK_SHADER_STAGE_ANY_HIT_BIT_NV, + eClosestHitKHR = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, + eClosestHitNV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV, + eMissKHR = VK_SHADER_STAGE_MISS_BIT_KHR, + eMissNV = VK_SHADER_STAGE_MISS_BIT_NV, + eIntersectionKHR = VK_SHADER_STAGE_INTERSECTION_BIT_KHR, + eIntersectionNV = VK_SHADER_STAGE_INTERSECTION_BIT_NV, + eCallableKHR = VK_SHADER_STAGE_CALLABLE_BIT_KHR, + eCallableNV = VK_SHADER_STAGE_CALLABLE_BIT_NV, + eTaskEXT = VK_SHADER_STAGE_TASK_BIT_EXT, + eTaskNV = VK_SHADER_STAGE_TASK_BIT_NV, + eMeshEXT = VK_SHADER_STAGE_MESH_BIT_EXT, + eMeshNV = VK_SHADER_STAGE_MESH_BIT_NV, + eSubpassShadingHUAWEI = VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI, + eClusterCullingHUAWEI = VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI + }; + + // wrapper using for bitmask VkShaderStageFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderStageFlags.html + using ShaderStageFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkShaderStageFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ShaderStageFlags allFlags = + ShaderStageFlagBits::eVertex | ShaderStageFlagBits::eTessellationControl | ShaderStageFlagBits::eTessellationEvaluation | ShaderStageFlagBits::eGeometry | + ShaderStageFlagBits::eFragment | ShaderStageFlagBits::eCompute | ShaderStageFlagBits::eAllGraphics | ShaderStageFlagBits::eAll | + ShaderStageFlagBits::eRaygenKHR | ShaderStageFlagBits::eAnyHitKHR | ShaderStageFlagBits::eClosestHitKHR | ShaderStageFlagBits::eMissKHR | + ShaderStageFlagBits::eIntersectionKHR | ShaderStageFlagBits::eCallableKHR | ShaderStageFlagBits::eTaskEXT | ShaderStageFlagBits::eMeshEXT | + ShaderStageFlagBits::eSubpassShadingHUAWEI | ShaderStageFlagBits::eClusterCullingHUAWEI; + }; + + enum class DeviceCreateFlagBits : VkDeviceCreateFlags + { + }; + + // wrapper using for bitmask VkDeviceCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceCreateFlags.html + using DeviceCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DeviceCreateFlags allFlags = {}; + }; + + // wrapper class for enum VkDeviceQueueCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceQueueCreateFlagBits.html + enum class DeviceQueueCreateFlagBits : VkDeviceQueueCreateFlags + { + eProtected = VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT, + eInternallySynchronizedKHR = VK_DEVICE_QUEUE_CREATE_INTERNALLY_SYNCHRONIZED_BIT_KHR + }; + + // wrapper using for bitmask VkDeviceQueueCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceQueueCreateFlags.html + using DeviceQueueCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDeviceQueueCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DeviceQueueCreateFlags allFlags = + DeviceQueueCreateFlagBits::eProtected | DeviceQueueCreateFlagBits::eInternallySynchronizedKHR; + }; + + // wrapper class for enum VkPipelineStageFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineStageFlagBits.html + enum class PipelineStageFlagBits : VkPipelineStageFlags + { + eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, + eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, + eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT, + eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, + eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT, + eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, + eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT, + eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT, + eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT, + eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT, + eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, + eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, + eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT, + eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, + eHost = VK_PIPELINE_STAGE_HOST_BIT, + eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT, + eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, + eNone = VK_PIPELINE_STAGE_NONE, + eNoneKHR = VK_PIPELINE_STAGE_NONE_KHR, + eTransformFeedbackEXT = VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT, + eConditionalRenderingEXT = VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT, + eAccelerationStructureBuildKHR = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, + eAccelerationStructureBuildNV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV, + eRayTracingShaderKHR = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, + eRayTracingShaderNV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV, + eFragmentDensityProcessEXT = VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT, + eFragmentShadingRateAttachmentKHR = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eShadingRateImageNV = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV, + eTaskShaderEXT = VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT, + eTaskShaderNV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV, + eMeshShaderEXT = VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT, + eMeshShaderNV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV, + eCommandPreprocessEXT = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_EXT, + eCommandPreprocessNV = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV + }; + + // wrapper using for bitmask VkPipelineStageFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineStageFlags.html + using PipelineStageFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPipelineStageFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineStageFlags allFlags = + PipelineStageFlagBits::eTopOfPipe | PipelineStageFlagBits::eDrawIndirect | PipelineStageFlagBits::eVertexInput | PipelineStageFlagBits::eVertexShader | + PipelineStageFlagBits::eTessellationControlShader | PipelineStageFlagBits::eTessellationEvaluationShader | PipelineStageFlagBits::eGeometryShader | + PipelineStageFlagBits::eFragmentShader | PipelineStageFlagBits::eEarlyFragmentTests | PipelineStageFlagBits::eLateFragmentTests | + PipelineStageFlagBits::eColorAttachmentOutput | PipelineStageFlagBits::eComputeShader | PipelineStageFlagBits::eTransfer | + PipelineStageFlagBits::eBottomOfPipe | PipelineStageFlagBits::eHost | PipelineStageFlagBits::eAllGraphics | PipelineStageFlagBits::eAllCommands | + PipelineStageFlagBits::eNone | PipelineStageFlagBits::eTransformFeedbackEXT | PipelineStageFlagBits::eConditionalRenderingEXT | + PipelineStageFlagBits::eAccelerationStructureBuildKHR | PipelineStageFlagBits::eRayTracingShaderKHR | PipelineStageFlagBits::eFragmentDensityProcessEXT | + PipelineStageFlagBits::eFragmentShadingRateAttachmentKHR | PipelineStageFlagBits::eTaskShaderEXT | PipelineStageFlagBits::eMeshShaderEXT | + PipelineStageFlagBits::eCommandPreprocessEXT; + }; + + // wrapper class for enum VkMemoryMapFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryMapFlagBits.html + enum class MemoryMapFlagBits : VkMemoryMapFlags + { + ePlacedEXT = VK_MEMORY_MAP_PLACED_BIT_EXT + }; + + // wrapper using for bitmask VkMemoryMapFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryMapFlags.html + using MemoryMapFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkMemoryMapFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR MemoryMapFlags allFlags = MemoryMapFlagBits::ePlacedEXT; + }; + + // wrapper class for enum VkImageAspectFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageAspectFlagBits.html + enum class ImageAspectFlagBits : VkImageAspectFlags + { + eColor = VK_IMAGE_ASPECT_COLOR_BIT, + eDepth = VK_IMAGE_ASPECT_DEPTH_BIT, + eStencil = VK_IMAGE_ASPECT_STENCIL_BIT, + eMetadata = VK_IMAGE_ASPECT_METADATA_BIT, + ePlane0 = VK_IMAGE_ASPECT_PLANE_0_BIT, + ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT_KHR, + ePlane1 = VK_IMAGE_ASPECT_PLANE_1_BIT, + ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, + ePlane2 = VK_IMAGE_ASPECT_PLANE_2_BIT, + ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT_KHR, + eNone = VK_IMAGE_ASPECT_NONE, + eNoneKHR = VK_IMAGE_ASPECT_NONE_KHR, + eMemoryPlane0EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT, + eMemoryPlane1EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT, + eMemoryPlane2EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT, + eMemoryPlane3EXT = VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT + }; + + // wrapper using for bitmask VkImageAspectFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageAspectFlags.html + using ImageAspectFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkImageAspectFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ImageAspectFlags allFlags = ImageAspectFlagBits::eColor | ImageAspectFlagBits::eDepth | ImageAspectFlagBits::eStencil | + ImageAspectFlagBits::eMetadata | ImageAspectFlagBits::ePlane0 | + ImageAspectFlagBits::ePlane1 | ImageAspectFlagBits::ePlane2 | ImageAspectFlagBits::eNone | + ImageAspectFlagBits::eMemoryPlane0EXT | ImageAspectFlagBits::eMemoryPlane1EXT | + ImageAspectFlagBits::eMemoryPlane2EXT | ImageAspectFlagBits::eMemoryPlane3EXT; + }; + + // wrapper class for enum VkSparseImageFormatFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseImageFormatFlagBits.html + enum class SparseImageFormatFlagBits : VkSparseImageFormatFlags + { + eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, + eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT, + eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT + }; + + // wrapper using for bitmask VkSparseImageFormatFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseImageFormatFlags.html + using SparseImageFormatFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkSparseImageFormatFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SparseImageFormatFlags allFlags = + SparseImageFormatFlagBits::eSingleMiptail | SparseImageFormatFlagBits::eAlignedMipSize | SparseImageFormatFlagBits::eNonstandardBlockSize; + }; + + // wrapper class for enum VkSparseMemoryBindFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseMemoryBindFlagBits.html + enum class SparseMemoryBindFlagBits : VkSparseMemoryBindFlags + { + eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT + }; + + // wrapper using for bitmask VkSparseMemoryBindFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseMemoryBindFlags.html + using SparseMemoryBindFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkSparseMemoryBindFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SparseMemoryBindFlags allFlags = SparseMemoryBindFlagBits::eMetadata; + }; + + // wrapper class for enum VkFenceCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFenceCreateFlagBits.html + enum class FenceCreateFlagBits : VkFenceCreateFlags + { + eSignaled = VK_FENCE_CREATE_SIGNALED_BIT + }; + + // wrapper using for bitmask VkFenceCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFenceCreateFlags.html + using FenceCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkFenceCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR FenceCreateFlags allFlags = FenceCreateFlagBits::eSignaled; + }; + + enum class SemaphoreCreateFlagBits : VkSemaphoreCreateFlags + { + }; + + // wrapper using for bitmask VkSemaphoreCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreCreateFlags.html + using SemaphoreCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SemaphoreCreateFlags allFlags = {}; + }; + + // wrapper class for enum VkQueryPoolCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPoolCreateFlagBits.html + enum class QueryPoolCreateFlagBits : VkQueryPoolCreateFlags + { + eResetKHR = VK_QUERY_POOL_CREATE_RESET_BIT_KHR + }; + + // wrapper using for bitmask VkQueryPoolCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPoolCreateFlags.html + using QueryPoolCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkQueryPoolCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR QueryPoolCreateFlags allFlags = QueryPoolCreateFlagBits::eResetKHR; + }; + + // wrapper class for enum VkQueryPipelineStatisticFlagBits, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPipelineStatisticFlagBits.html + enum class QueryPipelineStatisticFlagBits : VkQueryPipelineStatisticFlags + { + eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT, + eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT, + eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT, + eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT, + eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT, + eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT, + eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT, + eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT, + eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT, + eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT, + eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT, + eTaskShaderInvocationsEXT = VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT, + eMeshShaderInvocationsEXT = VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT, + eClusterCullingShaderInvocationsHUAWEI = VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI + }; + + // wrapper using for bitmask VkQueryPipelineStatisticFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPipelineStatisticFlags.html + using QueryPipelineStatisticFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkQueryPipelineStatisticFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR QueryPipelineStatisticFlags allFlags = + QueryPipelineStatisticFlagBits::eInputAssemblyVertices | QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives | + QueryPipelineStatisticFlagBits::eVertexShaderInvocations | QueryPipelineStatisticFlagBits::eGeometryShaderInvocations | + QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives | QueryPipelineStatisticFlagBits::eClippingInvocations | + QueryPipelineStatisticFlagBits::eClippingPrimitives | QueryPipelineStatisticFlagBits::eFragmentShaderInvocations | + QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches | QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations | + QueryPipelineStatisticFlagBits::eComputeShaderInvocations | QueryPipelineStatisticFlagBits::eTaskShaderInvocationsEXT | + QueryPipelineStatisticFlagBits::eMeshShaderInvocationsEXT | QueryPipelineStatisticFlagBits::eClusterCullingShaderInvocationsHUAWEI; + }; + + // wrapper class for enum VkQueryResultFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryResultFlagBits.html + enum class QueryResultFlagBits : VkQueryResultFlags + { + e64 = VK_QUERY_RESULT_64_BIT, + eWait = VK_QUERY_RESULT_WAIT_BIT, + eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT, + ePartial = VK_QUERY_RESULT_PARTIAL_BIT, + eWithStatusKHR = VK_QUERY_RESULT_WITH_STATUS_BIT_KHR + }; + + // wrapper using for bitmask VkQueryResultFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryResultFlags.html + using QueryResultFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkQueryResultFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR QueryResultFlags allFlags = QueryResultFlagBits::e64 | QueryResultFlagBits::eWait | + QueryResultFlagBits::eWithAvailability | QueryResultFlagBits::ePartial | + QueryResultFlagBits::eWithStatusKHR; + }; + + // wrapper class for enum VkQueryType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryType.html + enum class QueryType + { + eOcclusion = VK_QUERY_TYPE_OCCLUSION, + ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS, + eTimestamp = VK_QUERY_TYPE_TIMESTAMP, + eResultStatusOnlyKHR = VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR, + eTransformFeedbackStreamEXT = VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT, + ePerformanceQueryKHR = VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR, + eAccelerationStructureCompactedSizeKHR = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR, + eAccelerationStructureSerializationSizeKHR = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR, + eAccelerationStructureCompactedSizeNV = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV, + ePerformanceQueryINTEL = VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL, + eVideoEncodeFeedbackKHR = VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR, + eMeshPrimitivesGeneratedEXT = VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT, + ePrimitivesGeneratedEXT = VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT, + eAccelerationStructureSerializationBottomLevelPointersKHR = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR, + eAccelerationStructureSizeKHR = VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR, + eMicromapSerializationSizeEXT = VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT, + eMicromapCompactedSizeEXT = VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT + }; + + // wrapper class for enum VkBufferCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCreateFlagBits.html + enum class BufferCreateFlagBits : VkBufferCreateFlags + { + eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT, + eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, + eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, + eProtected = VK_BUFFER_CREATE_PROTECTED_BIT, + eDeviceAddressCaptureReplay = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + eDeviceAddressCaptureReplayEXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT, + eDeviceAddressCaptureReplayKHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR, + eDescriptorBufferCaptureReplayEXT = VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, + eVideoProfileIndependentKHR = VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR + }; + + // wrapper using for bitmask VkBufferCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCreateFlags.html + using BufferCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkBufferCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR BufferCreateFlags allFlags = + BufferCreateFlagBits::eSparseBinding | BufferCreateFlagBits::eSparseResidency | BufferCreateFlagBits::eSparseAliased | BufferCreateFlagBits::eProtected | + BufferCreateFlagBits::eDeviceAddressCaptureReplay | BufferCreateFlagBits::eDescriptorBufferCaptureReplayEXT | + BufferCreateFlagBits::eVideoProfileIndependentKHR; + }; + + // wrapper class for enum VkBufferUsageFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferUsageFlagBits.html + enum class BufferUsageFlagBits : VkBufferUsageFlags + { + eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT, + eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT, + eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, + eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, + eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, + eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, + eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT, + eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, + eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT, + eShaderDeviceAddress = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT, + eShaderDeviceAddressEXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT, + eShaderDeviceAddressKHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR, + eVideoDecodeSrcKHR = VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR, + eVideoDecodeDstKHR = VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR, + eTransformFeedbackBufferEXT = VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, + eTransformFeedbackCounterBufferEXT = VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, + eConditionalRenderingEXT = VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eExecutionGraphScratchAMDX = VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eDescriptorHeapEXT = VK_BUFFER_USAGE_DESCRIPTOR_HEAP_BIT_EXT, + eAccelerationStructureBuildInputReadOnlyKHR = VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR, + eAccelerationStructureStorageKHR = VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR, + eShaderBindingTableKHR = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR, + eRayTracingNV = VK_BUFFER_USAGE_RAY_TRACING_BIT_NV, + eVideoEncodeDstKHR = VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR, + eVideoEncodeSrcKHR = VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR, + eSamplerDescriptorBufferEXT = VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT, + eResourceDescriptorBufferEXT = VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT, + ePushDescriptorsDescriptorBufferEXT = VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT, + eMicromapBuildInputReadOnlyEXT = VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT, + eMicromapStorageEXT = VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT, + eTileMemoryQCOM = VK_BUFFER_USAGE_TILE_MEMORY_BIT_QCOM + }; + + // wrapper using for bitmask VkBufferUsageFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferUsageFlags.html + using BufferUsageFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkBufferUsageFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR BufferUsageFlags allFlags = + BufferUsageFlagBits::eTransferSrc | BufferUsageFlagBits::eTransferDst | BufferUsageFlagBits::eUniformTexelBuffer | + BufferUsageFlagBits::eStorageTexelBuffer | BufferUsageFlagBits::eUniformBuffer | BufferUsageFlagBits::eStorageBuffer | BufferUsageFlagBits::eIndexBuffer | + BufferUsageFlagBits::eVertexBuffer | BufferUsageFlagBits::eIndirectBuffer | BufferUsageFlagBits::eShaderDeviceAddress | + BufferUsageFlagBits::eVideoDecodeSrcKHR | BufferUsageFlagBits::eVideoDecodeDstKHR | BufferUsageFlagBits::eTransformFeedbackBufferEXT | + BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT | BufferUsageFlagBits::eConditionalRenderingEXT +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | BufferUsageFlagBits::eExecutionGraphScratchAMDX +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | BufferUsageFlagBits::eDescriptorHeapEXT | BufferUsageFlagBits::eAccelerationStructureBuildInputReadOnlyKHR | + BufferUsageFlagBits::eAccelerationStructureStorageKHR | BufferUsageFlagBits::eShaderBindingTableKHR | BufferUsageFlagBits::eVideoEncodeDstKHR | + BufferUsageFlagBits::eVideoEncodeSrcKHR | BufferUsageFlagBits::eSamplerDescriptorBufferEXT | BufferUsageFlagBits::eResourceDescriptorBufferEXT | + BufferUsageFlagBits::ePushDescriptorsDescriptorBufferEXT | BufferUsageFlagBits::eMicromapBuildInputReadOnlyEXT | + BufferUsageFlagBits::eMicromapStorageEXT | BufferUsageFlagBits::eTileMemoryQCOM; + }; + + // wrapper class for enum VkSharingMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSharingMode.html + enum class SharingMode + { + eExclusive = VK_SHARING_MODE_EXCLUSIVE, + eConcurrent = VK_SHARING_MODE_CONCURRENT + }; + + // wrapper class for enum VkImageLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageLayout.html + enum class ImageLayout + { + eUndefined = VK_IMAGE_LAYOUT_UNDEFINED, + eGeneral = VK_IMAGE_LAYOUT_GENERAL, + eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, + eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, + eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, + eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, + eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED, + eDepthReadOnlyStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, + eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR, + eDepthAttachmentStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, + eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR, + eDepthAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, + eDepthAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR, + eDepthReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, + eDepthReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR, + eStencilAttachmentOptimal = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, + eStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR, + eStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, + eStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR, + eReadOnlyOptimal = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL, + eReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR, + eAttachmentOptimal = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL, + eAttachmentOptimalKHR = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR, + eRenderingLocalRead = VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ, + eRenderingLocalReadKHR = VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ_KHR, + ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, + eVideoDecodeDstKHR = VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR, + eVideoDecodeSrcKHR = VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR, + eVideoDecodeDpbKHR = VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR, + eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, + eFragmentDensityMapOptimalEXT = VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, + eFragmentShadingRateAttachmentOptimalKHR = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, + eShadingRateOptimalNV = VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV, + eVideoEncodeDstKHR = VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR, + eVideoEncodeSrcKHR = VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR, + eVideoEncodeDpbKHR = VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR, + eAttachmentFeedbackLoopOptimalEXT = VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT, + eTensorAliasingARM = VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM, + eVideoEncodeQuantizationMapKHR = VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR, + eZeroInitializedEXT = VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT + }; + + // wrapper class for enum VkComponentSwizzle, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkComponentSwizzle.html + enum class ComponentSwizzle + { + eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY, + eZero = VK_COMPONENT_SWIZZLE_ZERO, + eOne = VK_COMPONENT_SWIZZLE_ONE, + eR = VK_COMPONENT_SWIZZLE_R, + eG = VK_COMPONENT_SWIZZLE_G, + eB = VK_COMPONENT_SWIZZLE_B, + eA = VK_COMPONENT_SWIZZLE_A + }; + + // wrapper class for enum VkImageViewCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewCreateFlagBits.html + enum class ImageViewCreateFlagBits : VkImageViewCreateFlags + { + eFragmentDensityMapDynamicEXT = VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT, + eDescriptorBufferCaptureReplayEXT = VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, + eFragmentDensityMapDeferredEXT = VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT + }; + + // wrapper using for bitmask VkImageViewCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewCreateFlags.html + using ImageViewCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkImageViewCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ImageViewCreateFlags allFlags = ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT | + ImageViewCreateFlagBits::eDescriptorBufferCaptureReplayEXT | + ImageViewCreateFlagBits::eFragmentDensityMapDeferredEXT; + }; + + // wrapper class for enum VkImageViewType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewType.html + enum class ImageViewType + { + e1D = VK_IMAGE_VIEW_TYPE_1D, + e2D = VK_IMAGE_VIEW_TYPE_2D, + e3D = VK_IMAGE_VIEW_TYPE_3D, + eCube = VK_IMAGE_VIEW_TYPE_CUBE, + e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY, + e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY, + eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY + }; + + // wrapper class for enum VkAccessFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccessFlagBits.html + enum class AccessFlagBits : VkAccessFlags + { + eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT, + eIndexRead = VK_ACCESS_INDEX_READ_BIT, + eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT, + eUniformRead = VK_ACCESS_UNIFORM_READ_BIT, + eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT, + eShaderRead = VK_ACCESS_SHADER_READ_BIT, + eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT, + eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT, + eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, + eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT, + eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, + eTransferRead = VK_ACCESS_TRANSFER_READ_BIT, + eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT, + eHostRead = VK_ACCESS_HOST_READ_BIT, + eHostWrite = VK_ACCESS_HOST_WRITE_BIT, + eMemoryRead = VK_ACCESS_MEMORY_READ_BIT, + eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT, + eNone = VK_ACCESS_NONE, + eNoneKHR = VK_ACCESS_NONE_KHR, + eTransformFeedbackWriteEXT = VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, + eTransformFeedbackCounterReadEXT = VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, + eTransformFeedbackCounterWriteEXT = VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, + eConditionalRenderingReadEXT = VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT, + eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, + eAccelerationStructureReadKHR = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR, + eAccelerationStructureReadNV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV, + eAccelerationStructureWriteKHR = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, + eAccelerationStructureWriteNV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV, + eFragmentDensityMapReadEXT = VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, + eFragmentShadingRateAttachmentReadKHR = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, + eShadingRateImageReadNV = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV, + eCommandPreprocessReadEXT = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_EXT, + eCommandPreprocessReadNV = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV, + eCommandPreprocessWriteEXT = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_EXT, + eCommandPreprocessWriteNV = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV + }; + + // wrapper using for bitmask VkAccessFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccessFlags.html + using AccessFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkAccessFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AccessFlags allFlags = + AccessFlagBits::eIndirectCommandRead | AccessFlagBits::eIndexRead | AccessFlagBits::eVertexAttributeRead | AccessFlagBits::eUniformRead | + AccessFlagBits::eInputAttachmentRead | AccessFlagBits::eShaderRead | AccessFlagBits::eShaderWrite | AccessFlagBits::eColorAttachmentRead | + AccessFlagBits::eColorAttachmentWrite | AccessFlagBits::eDepthStencilAttachmentRead | AccessFlagBits::eDepthStencilAttachmentWrite | + AccessFlagBits::eTransferRead | AccessFlagBits::eTransferWrite | AccessFlagBits::eHostRead | AccessFlagBits::eHostWrite | AccessFlagBits::eMemoryRead | + AccessFlagBits::eMemoryWrite | AccessFlagBits::eNone | AccessFlagBits::eTransformFeedbackWriteEXT | AccessFlagBits::eTransformFeedbackCounterReadEXT | + AccessFlagBits::eTransformFeedbackCounterWriteEXT | AccessFlagBits::eConditionalRenderingReadEXT | AccessFlagBits::eColorAttachmentReadNoncoherentEXT | + AccessFlagBits::eAccelerationStructureReadKHR | AccessFlagBits::eAccelerationStructureWriteKHR | AccessFlagBits::eFragmentDensityMapReadEXT | + AccessFlagBits::eFragmentShadingRateAttachmentReadKHR | AccessFlagBits::eCommandPreprocessReadEXT | AccessFlagBits::eCommandPreprocessWriteEXT; + }; + + // wrapper class for enum VkDependencyFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDependencyFlagBits.html + enum class DependencyFlagBits : VkDependencyFlags + { + eByRegion = VK_DEPENDENCY_BY_REGION_BIT, + eDeviceGroup = VK_DEPENDENCY_DEVICE_GROUP_BIT, + eDeviceGroupKHR = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR, + eViewLocal = VK_DEPENDENCY_VIEW_LOCAL_BIT, + eViewLocalKHR = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR, + eFeedbackLoopEXT = VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT, + eQueueFamilyOwnershipTransferUseAllStagesKHR = VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR, + eAsymmetricEventKHR = VK_DEPENDENCY_ASYMMETRIC_EVENT_BIT_KHR + }; + + // wrapper using for bitmask VkDependencyFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDependencyFlags.html + using DependencyFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDependencyFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DependencyFlags allFlags = + DependencyFlagBits::eByRegion | DependencyFlagBits::eDeviceGroup | DependencyFlagBits::eViewLocal | DependencyFlagBits::eFeedbackLoopEXT | + DependencyFlagBits::eQueueFamilyOwnershipTransferUseAllStagesKHR | DependencyFlagBits::eAsymmetricEventKHR; + }; + + // wrapper class for enum VkCommandPoolCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPoolCreateFlagBits.html + enum class CommandPoolCreateFlagBits : VkCommandPoolCreateFlags + { + eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT, + eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, + eProtected = VK_COMMAND_POOL_CREATE_PROTECTED_BIT + }; + + // wrapper using for bitmask VkCommandPoolCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPoolCreateFlags.html + using CommandPoolCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkCommandPoolCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR CommandPoolCreateFlags allFlags = + CommandPoolCreateFlagBits::eTransient | CommandPoolCreateFlagBits::eResetCommandBuffer | CommandPoolCreateFlagBits::eProtected; + }; + + // wrapper class for enum VkCommandPoolResetFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPoolResetFlagBits.html + enum class CommandPoolResetFlagBits : VkCommandPoolResetFlags + { + eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT + }; + + // wrapper using for bitmask VkCommandPoolResetFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPoolResetFlags.html + using CommandPoolResetFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkCommandPoolResetFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR CommandPoolResetFlags allFlags = CommandPoolResetFlagBits::eReleaseResources; + }; + + // wrapper class for enum VkCommandBufferLevel, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferLevel.html + enum class CommandBufferLevel + { + ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY, + eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY + }; + + // wrapper class for enum VkCommandBufferResetFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferResetFlagBits.html + enum class CommandBufferResetFlagBits : VkCommandBufferResetFlags + { + eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT + }; + + // wrapper using for bitmask VkCommandBufferResetFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferResetFlags.html + using CommandBufferResetFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkCommandBufferResetFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR CommandBufferResetFlags allFlags = CommandBufferResetFlagBits::eReleaseResources; + }; + + // wrapper class for enum VkCommandBufferUsageFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferUsageFlagBits.html + enum class CommandBufferUsageFlagBits : VkCommandBufferUsageFlags + { + eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT, + eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT, + eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT + }; + + // wrapper using for bitmask VkCommandBufferUsageFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferUsageFlags.html + using CommandBufferUsageFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkCommandBufferUsageFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR CommandBufferUsageFlags allFlags = + CommandBufferUsageFlagBits::eOneTimeSubmit | CommandBufferUsageFlagBits::eRenderPassContinue | CommandBufferUsageFlagBits::eSimultaneousUse; + }; + + // wrapper class for enum VkQueryControlFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryControlFlagBits.html + enum class QueryControlFlagBits : VkQueryControlFlags + { + ePrecise = VK_QUERY_CONTROL_PRECISE_BIT + }; + + // wrapper using for bitmask VkQueryControlFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryControlFlags.html + using QueryControlFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkQueryControlFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR QueryControlFlags allFlags = QueryControlFlagBits::ePrecise; + }; + + // wrapper class for enum VkIndexType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndexType.html + enum class IndexType + { + eUint16 = VK_INDEX_TYPE_UINT16, + eUint32 = VK_INDEX_TYPE_UINT32, + eUint8 = VK_INDEX_TYPE_UINT8, + eUint8EXT = VK_INDEX_TYPE_UINT8_EXT, + eUint8KHR = VK_INDEX_TYPE_UINT8_KHR, + eNoneKHR = VK_INDEX_TYPE_NONE_KHR, + eNoneNV = VK_INDEX_TYPE_NONE_NV + }; + + //========================= + //=== Index Type Traits === + //========================= + + template + struct IndexTypeValue + { + }; + + template <> + struct IndexTypeValue + { + static VULKAN_HPP_CONST_OR_CONSTEXPR IndexType value = IndexType::eUint16; + }; + + template <> + struct CppType + { + using Type = uint16_t; + }; + + template <> + struct IndexTypeValue + { + static VULKAN_HPP_CONST_OR_CONSTEXPR IndexType value = IndexType::eUint32; + }; + + template <> + struct CppType + { + using Type = uint32_t; + }; + + template <> + struct IndexTypeValue + { + static VULKAN_HPP_CONST_OR_CONSTEXPR IndexType value = IndexType::eUint8; + }; + + template <> + struct CppType + { + using Type = uint8_t; + }; + + // wrapper class for enum VkPipelineCacheHeaderVersion, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersion.html + enum class PipelineCacheHeaderVersion + { + eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE, + eDataGraphQCOM = VK_PIPELINE_CACHE_HEADER_VERSION_DATA_GRAPH_QCOM + }; + + // wrapper class for enum VkEventCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkEventCreateFlagBits.html + enum class EventCreateFlagBits : VkEventCreateFlags + { + eDeviceOnly = VK_EVENT_CREATE_DEVICE_ONLY_BIT, + eDeviceOnlyKHR = VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR + }; + + // wrapper using for bitmask VkEventCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkEventCreateFlags.html + using EventCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkEventCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR EventCreateFlags allFlags = EventCreateFlagBits::eDeviceOnly; + }; + + enum class BufferViewCreateFlagBits : VkBufferViewCreateFlags + { + }; + + // wrapper using for bitmask VkBufferViewCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferViewCreateFlags.html + using BufferViewCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR BufferViewCreateFlags allFlags = {}; + }; + + enum class ShaderModuleCreateFlagBits : VkShaderModuleCreateFlags + { + }; + + // wrapper using for bitmask VkShaderModuleCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderModuleCreateFlags.html + using ShaderModuleCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ShaderModuleCreateFlags allFlags = {}; + }; + + // wrapper class for enum VkPipelineCacheCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCacheCreateFlagBits.html + enum class PipelineCacheCreateFlagBits : VkPipelineCacheCreateFlags + { + eExternallySynchronized = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, + eExternallySynchronizedEXT = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT, + eInternallySynchronizedMergeKHR = VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR + }; + + // wrapper using for bitmask VkPipelineCacheCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCacheCreateFlags.html + using PipelineCacheCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPipelineCacheCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineCacheCreateFlags allFlags = + PipelineCacheCreateFlagBits::eExternallySynchronized | PipelineCacheCreateFlagBits::eInternallySynchronizedMergeKHR; + }; + + // wrapper class for enum VkPipelineCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreateFlagBits.html + enum class PipelineCreateFlagBits : VkPipelineCreateFlags + { + eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT, + eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT, + eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT, + eDispatchBase = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, + eDispatchBaseKHR = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT_KHR, + eViewIndexFromDeviceIndex = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, + eViewIndexFromDeviceIndexKHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR, + eFailOnPipelineCompileRequired = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT, + eFailOnPipelineCompileRequiredEXT = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT, + eEarlyReturnOnFailure = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT, + eEarlyReturnOnFailureEXT = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT, + eNoProtectedAccess = VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT, + eNoProtectedAccessEXT = VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT, + eProtectedAccessOnly = VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT, + eProtectedAccessOnlyEXT = VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT, + eRayTracingNoNullAnyHitShadersKHR = VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, + eRayTracingNoNullClosestHitShadersKHR = VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, + eRayTracingNoNullMissShadersKHR = VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, + eRayTracingNoNullIntersectionShadersKHR = VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, + eRayTracingSkipTrianglesKHR = VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR, + eRayTracingSkipAabbsKHR = VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR, + eRayTracingShaderGroupHandleCaptureReplayKHR = VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR, + eDeferCompileNV = VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV, + eRenderingFragmentDensityMapAttachmentEXT = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, + eVkPipelineRasterizationStateCreateFragmentDensityMapAttachmentEXT = VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, + eRenderingFragmentShadingRateAttachmentKHR = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eVkPipelineRasterizationStateCreateFragmentShadingRateAttachmentKHR = VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eCaptureStatisticsKHR = VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR, + eCaptureInternalRepresentationsKHR = VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, + eIndirectBindableNV = VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, + eLibraryKHR = VK_PIPELINE_CREATE_LIBRARY_BIT_KHR, + eDescriptorBufferEXT = VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, + eRetainLinkTimeOptimizationInfoEXT = VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT, + eLinkTimeOptimizationEXT = VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT, + eRayTracingAllowMotionNV = VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV, + eColorAttachmentFeedbackLoopEXT = VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT, + eDepthStencilAttachmentFeedbackLoopEXT = VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT, + eRayTracingOpacityMicromapEXT = VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eRayTracingDisplacementMicromapNV = VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + + // wrapper using for bitmask VkPipelineCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreateFlags.html + using PipelineCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPipelineCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineCreateFlags allFlags = + PipelineCreateFlagBits::eDisableOptimization | PipelineCreateFlagBits::eAllowDerivatives | PipelineCreateFlagBits::eDerivative | + PipelineCreateFlagBits::eDispatchBase | PipelineCreateFlagBits::eViewIndexFromDeviceIndex | PipelineCreateFlagBits::eFailOnPipelineCompileRequired | + PipelineCreateFlagBits::eEarlyReturnOnFailure | PipelineCreateFlagBits::eNoProtectedAccess | PipelineCreateFlagBits::eProtectedAccessOnly | + PipelineCreateFlagBits::eRayTracingNoNullAnyHitShadersKHR | PipelineCreateFlagBits::eRayTracingNoNullClosestHitShadersKHR | + PipelineCreateFlagBits::eRayTracingNoNullMissShadersKHR | PipelineCreateFlagBits::eRayTracingNoNullIntersectionShadersKHR | + PipelineCreateFlagBits::eRayTracingSkipTrianglesKHR | PipelineCreateFlagBits::eRayTracingSkipAabbsKHR | + PipelineCreateFlagBits::eRayTracingShaderGroupHandleCaptureReplayKHR | PipelineCreateFlagBits::eDeferCompileNV | + PipelineCreateFlagBits::eRenderingFragmentDensityMapAttachmentEXT | PipelineCreateFlagBits::eRenderingFragmentShadingRateAttachmentKHR | + PipelineCreateFlagBits::eCaptureStatisticsKHR | PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR | PipelineCreateFlagBits::eIndirectBindableNV | + PipelineCreateFlagBits::eLibraryKHR | PipelineCreateFlagBits::eDescriptorBufferEXT | PipelineCreateFlagBits::eRetainLinkTimeOptimizationInfoEXT | + PipelineCreateFlagBits::eLinkTimeOptimizationEXT | PipelineCreateFlagBits::eRayTracingAllowMotionNV | + PipelineCreateFlagBits::eColorAttachmentFeedbackLoopEXT | PipelineCreateFlagBits::eDepthStencilAttachmentFeedbackLoopEXT | + PipelineCreateFlagBits::eRayTracingOpacityMicromapEXT +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | PipelineCreateFlagBits::eRayTracingDisplacementMicromapNV +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + ; + }; + + // wrapper class for enum VkPipelineLayoutCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineLayoutCreateFlagBits.html + enum class PipelineLayoutCreateFlagBits : VkPipelineLayoutCreateFlags + { + eIndependentSetsEXT = VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT + }; + + // wrapper using for bitmask VkPipelineLayoutCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineLayoutCreateFlags.html + using PipelineLayoutCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPipelineLayoutCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineLayoutCreateFlags allFlags = PipelineLayoutCreateFlagBits::eIndependentSetsEXT; + }; + + // wrapper class for enum VkPipelineShaderStageCreateFlagBits, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateFlagBits.html + enum class PipelineShaderStageCreateFlagBits : VkPipelineShaderStageCreateFlags + { + eAllowVaryingSubgroupSize = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT, + eAllowVaryingSubgroupSizeEXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, + eRequireFullSubgroups = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT, + eRequireFullSubgroupsEXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT + }; + + // wrapper using for bitmask VkPipelineShaderStageCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateFlags.html + using PipelineShaderStageCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPipelineShaderStageCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineShaderStageCreateFlags allFlags = + PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSize | PipelineShaderStageCreateFlagBits::eRequireFullSubgroups; + }; + + // wrapper class for enum VkBorderColor, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBorderColor.html + enum class BorderColor + { + eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, + eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK, + eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK, + eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK, + eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE, + eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE, + eFloatCustomEXT = VK_BORDER_COLOR_FLOAT_CUSTOM_EXT, + eIntCustomEXT = VK_BORDER_COLOR_INT_CUSTOM_EXT + }; + + // wrapper class for enum VkFilter, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFilter.html + enum class Filter + { + eNearest = VK_FILTER_NEAREST, + eLinear = VK_FILTER_LINEAR, + eCubicEXT = VK_FILTER_CUBIC_EXT, + eCubicIMG = VK_FILTER_CUBIC_IMG + }; + + // wrapper class for enum VkSamplerAddressMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerAddressMode.html + enum class SamplerAddressMode + { + eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT, + eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, + eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, + eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, + eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, + eMirrorClampToEdgeKHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR + }; + + // wrapper class for enum VkSamplerCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerCreateFlagBits.html + enum class SamplerCreateFlagBits : VkSamplerCreateFlags + { + eSubsampledEXT = VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT, + eSubsampledCoarseReconstructionEXT = VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT, + eDescriptorBufferCaptureReplayEXT = VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, + eNonSeamlessCubeMapEXT = VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT, + eImageProcessingQCOM = VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM + }; + + // wrapper using for bitmask VkSamplerCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerCreateFlags.html + using SamplerCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkSamplerCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SamplerCreateFlags allFlags = + SamplerCreateFlagBits::eSubsampledEXT | SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT | + SamplerCreateFlagBits::eDescriptorBufferCaptureReplayEXT | SamplerCreateFlagBits::eNonSeamlessCubeMapEXT | SamplerCreateFlagBits::eImageProcessingQCOM; + }; + + // wrapper class for enum VkCompareOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCompareOp.html + enum class CompareOp + { + eNever = VK_COMPARE_OP_NEVER, + eLess = VK_COMPARE_OP_LESS, + eEqual = VK_COMPARE_OP_EQUAL, + eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL, + eGreater = VK_COMPARE_OP_GREATER, + eNotEqual = VK_COMPARE_OP_NOT_EQUAL, + eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL, + eAlways = VK_COMPARE_OP_ALWAYS + }; + + // wrapper class for enum VkSamplerMipmapMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerMipmapMode.html + enum class SamplerMipmapMode + { + eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST, + eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR + }; + + // wrapper class for enum VkDescriptorPoolCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPoolCreateFlagBits.html + enum class DescriptorPoolCreateFlagBits : VkDescriptorPoolCreateFlags + { + eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, + eUpdateAfterBind = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, + eUpdateAfterBindEXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT, + eHostOnlyEXT = VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT, + eHostOnlyVALVE = VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE, + eAllowOverallocationSetsNV = VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV, + eAllowOverallocationPoolsNV = VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV + }; + + // wrapper using for bitmask VkDescriptorPoolCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPoolCreateFlags.html + using DescriptorPoolCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDescriptorPoolCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DescriptorPoolCreateFlags allFlags = + DescriptorPoolCreateFlagBits::eFreeDescriptorSet | DescriptorPoolCreateFlagBits::eUpdateAfterBind | DescriptorPoolCreateFlagBits::eHostOnlyEXT | + DescriptorPoolCreateFlagBits::eAllowOverallocationSetsNV | DescriptorPoolCreateFlagBits::eAllowOverallocationPoolsNV; + }; + + // wrapper class for enum VkDescriptorSetLayoutCreateFlagBits, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateFlagBits.html + enum class DescriptorSetLayoutCreateFlagBits : VkDescriptorSetLayoutCreateFlags + { + eUpdateAfterBindPool = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, + eUpdateAfterBindPoolEXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT, + ePushDescriptor = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT, + ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, + eDescriptorBufferEXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT, + eEmbeddedImmutableSamplersEXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT, + eIndirectBindableNV = VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV, + eHostOnlyPoolEXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT, + eHostOnlyPoolVALVE = VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE, + ePerStageNV = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV + }; + + // wrapper using for bitmask VkDescriptorSetLayoutCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateFlags.html + using DescriptorSetLayoutCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDescriptorSetLayoutCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DescriptorSetLayoutCreateFlags allFlags = + DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPool | DescriptorSetLayoutCreateFlagBits::ePushDescriptor | + DescriptorSetLayoutCreateFlagBits::eDescriptorBufferEXT | DescriptorSetLayoutCreateFlagBits::eEmbeddedImmutableSamplersEXT | + DescriptorSetLayoutCreateFlagBits::eIndirectBindableNV | DescriptorSetLayoutCreateFlagBits::eHostOnlyPoolEXT | + DescriptorSetLayoutCreateFlagBits::ePerStageNV; + }; + + // wrapper class for enum VkDescriptorType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorType.html + enum class DescriptorType + { + eSampler = VK_DESCRIPTOR_TYPE_SAMPLER, + eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, + eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, + eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, + eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, + eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, + eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, + eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, + eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, + eInlineUniformBlock = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK, + eInlineUniformBlockEXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT, + eAccelerationStructureKHR = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, + eAccelerationStructureNV = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV, + eSampleWeightImageQCOM = VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, + eBlockMatchImageQCOM = VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, + eTensorARM = VK_DESCRIPTOR_TYPE_TENSOR_ARM, + eMutableEXT = VK_DESCRIPTOR_TYPE_MUTABLE_EXT, + eMutableVALVE = VK_DESCRIPTOR_TYPE_MUTABLE_VALVE, + ePartitionedAccelerationStructureNV = VK_DESCRIPTOR_TYPE_PARTITIONED_ACCELERATION_STRUCTURE_NV + }; + + enum class DescriptorPoolResetFlagBits : VkDescriptorPoolResetFlags + { + }; + + // wrapper using for bitmask VkDescriptorPoolResetFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPoolResetFlags.html + using DescriptorPoolResetFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DescriptorPoolResetFlags allFlags = {}; + }; + + // wrapper class for enum VkPipelineBindPoint, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBindPoint.html + enum class PipelineBindPoint + { + eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS, + eCompute = VK_PIPELINE_BIND_POINT_COMPUTE, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eExecutionGraphAMDX = VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eRayTracingKHR = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, + eRayTracingNV = VK_PIPELINE_BIND_POINT_RAY_TRACING_NV, + eSubpassShadingHUAWEI = VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI, + eDataGraphARM = VK_PIPELINE_BIND_POINT_DATA_GRAPH_ARM + }; + + // wrapper class for enum VkBlendFactor, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBlendFactor.html + enum class BlendFactor + { + eZero = VK_BLEND_FACTOR_ZERO, + eOne = VK_BLEND_FACTOR_ONE, + eSrcColor = VK_BLEND_FACTOR_SRC_COLOR, + eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR, + eDstColor = VK_BLEND_FACTOR_DST_COLOR, + eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR, + eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA, + eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, + eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA, + eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA, + eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR, + eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, + eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA, + eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, + eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE, + eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR, + eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, + eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA, + eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA + }; + + // wrapper class for enum VkBlendOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBlendOp.html + enum class BlendOp + { + eAdd = VK_BLEND_OP_ADD, + eSubtract = VK_BLEND_OP_SUBTRACT, + eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT, + eMin = VK_BLEND_OP_MIN, + eMax = VK_BLEND_OP_MAX, + eZeroEXT = VK_BLEND_OP_ZERO_EXT, + eSrcEXT = VK_BLEND_OP_SRC_EXT, + eDstEXT = VK_BLEND_OP_DST_EXT, + eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT, + eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT, + eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT, + eDstInEXT = VK_BLEND_OP_DST_IN_EXT, + eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT, + eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT, + eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT, + eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT, + eXorEXT = VK_BLEND_OP_XOR_EXT, + eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT, + eScreenEXT = VK_BLEND_OP_SCREEN_EXT, + eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT, + eDarkenEXT = VK_BLEND_OP_DARKEN_EXT, + eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT, + eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT, + eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT, + eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT, + eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT, + eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT, + eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT, + eInvertEXT = VK_BLEND_OP_INVERT_EXT, + eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT, + eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT, + eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT, + eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT, + eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT, + ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT, + eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT, + eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT, + eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT, + eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT, + eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT, + ePlusEXT = VK_BLEND_OP_PLUS_EXT, + ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT, + ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT, + ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT, + eMinusEXT = VK_BLEND_OP_MINUS_EXT, + eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT, + eContrastEXT = VK_BLEND_OP_CONTRAST_EXT, + eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT, + eRedEXT = VK_BLEND_OP_RED_EXT, + eGreenEXT = VK_BLEND_OP_GREEN_EXT, + eBlueEXT = VK_BLEND_OP_BLUE_EXT + }; + + // wrapper class for enum VkColorComponentFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkColorComponentFlagBits.html + enum class ColorComponentFlagBits : VkColorComponentFlags + { + eR = VK_COLOR_COMPONENT_R_BIT, + eG = VK_COLOR_COMPONENT_G_BIT, + eB = VK_COLOR_COMPONENT_B_BIT, + eA = VK_COLOR_COMPONENT_A_BIT + }; + + // wrapper using for bitmask VkColorComponentFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkColorComponentFlags.html + using ColorComponentFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkColorComponentFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ColorComponentFlags allFlags = + ColorComponentFlagBits::eR | ColorComponentFlagBits::eG | ColorComponentFlagBits::eB | ColorComponentFlagBits::eA; + }; + + // wrapper class for enum VkCullModeFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCullModeFlagBits.html + enum class CullModeFlagBits : VkCullModeFlags + { + eNone = VK_CULL_MODE_NONE, + eFront = VK_CULL_MODE_FRONT_BIT, + eBack = VK_CULL_MODE_BACK_BIT, + eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK + }; + + // wrapper using for bitmask VkCullModeFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCullModeFlags.html + using CullModeFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkCullModeFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR CullModeFlags allFlags = + CullModeFlagBits::eNone | CullModeFlagBits::eFront | CullModeFlagBits::eBack | CullModeFlagBits::eFrontAndBack; + }; + + // wrapper class for enum VkDynamicState, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDynamicState.html + enum class DynamicState + { + eViewport = VK_DYNAMIC_STATE_VIEWPORT, + eScissor = VK_DYNAMIC_STATE_SCISSOR, + eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH, + eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS, + eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS, + eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS, + eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, + eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, + eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE, + eCullMode = VK_DYNAMIC_STATE_CULL_MODE, + eCullModeEXT = VK_DYNAMIC_STATE_CULL_MODE_EXT, + eFrontFace = VK_DYNAMIC_STATE_FRONT_FACE, + eFrontFaceEXT = VK_DYNAMIC_STATE_FRONT_FACE_EXT, + ePrimitiveTopology = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY, + ePrimitiveTopologyEXT = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT, + eViewportWithCount = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, + eViewportWithCountEXT = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT, + eScissorWithCount = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT, + eScissorWithCountEXT = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT, + eVertexInputBindingStride = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE, + eVertexInputBindingStrideEXT = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT, + eDepthTestEnable = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE, + eDepthTestEnableEXT = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT, + eDepthWriteEnable = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE, + eDepthWriteEnableEXT = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT, + eDepthCompareOp = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP, + eDepthCompareOpEXT = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT, + eDepthBoundsTestEnable = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE, + eDepthBoundsTestEnableEXT = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT, + eStencilTestEnable = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE, + eStencilTestEnableEXT = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT, + eStencilOp = VK_DYNAMIC_STATE_STENCIL_OP, + eStencilOpEXT = VK_DYNAMIC_STATE_STENCIL_OP_EXT, + eRasterizerDiscardEnable = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE, + eRasterizerDiscardEnableEXT = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT, + eDepthBiasEnable = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE, + eDepthBiasEnableEXT = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT, + ePrimitiveRestartEnable = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE, + ePrimitiveRestartEnableEXT = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT, + eLineStipple = VK_DYNAMIC_STATE_LINE_STIPPLE, + eLineStippleEXT = VK_DYNAMIC_STATE_LINE_STIPPLE_EXT, + eLineStippleKHR = VK_DYNAMIC_STATE_LINE_STIPPLE_KHR, + eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV, + eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT, + eDiscardRectangleEnableEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT, + eDiscardRectangleModeEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT, + eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, + eRayTracingPipelineStackSizeKHR = VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR, + eViewportShadingRatePaletteNV = VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV, + eViewportCoarseSampleOrderNV = VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV, + eExclusiveScissorEnableNV = VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV, + eExclusiveScissorNV = VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV, + eFragmentShadingRateKHR = VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, + eVertexInputEXT = VK_DYNAMIC_STATE_VERTEX_INPUT_EXT, + ePatchControlPointsEXT = VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT, + eLogicOpEXT = VK_DYNAMIC_STATE_LOGIC_OP_EXT, + eColorWriteEnableEXT = VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT, + eDepthClampEnableEXT = VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT, + ePolygonModeEXT = VK_DYNAMIC_STATE_POLYGON_MODE_EXT, + eRasterizationSamplesEXT = VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT, + eSampleMaskEXT = VK_DYNAMIC_STATE_SAMPLE_MASK_EXT, + eAlphaToCoverageEnableEXT = VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT, + eAlphaToOneEnableEXT = VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT, + eLogicOpEnableEXT = VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT, + eColorBlendEnableEXT = VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT, + eColorBlendEquationEXT = VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT, + eColorWriteMaskEXT = VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT, + eTessellationDomainOriginEXT = VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT, + eRasterizationStreamEXT = VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT, + eConservativeRasterizationModeEXT = VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT, + eExtraPrimitiveOverestimationSizeEXT = VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT, + eDepthClipEnableEXT = VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT, + eSampleLocationsEnableEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT, + eColorBlendAdvancedEXT = VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT, + eProvokingVertexModeEXT = VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT, + eLineRasterizationModeEXT = VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT, + eLineStippleEnableEXT = VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT, + eDepthClipNegativeOneToOneEXT = VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT, + eViewportWScalingEnableNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV, + eViewportSwizzleNV = VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV, + eCoverageToColorEnableNV = VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV, + eCoverageToColorLocationNV = VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV, + eCoverageModulationModeNV = VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV, + eCoverageModulationTableEnableNV = VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV, + eCoverageModulationTableNV = VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV, + eShadingRateImageEnableNV = VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV, + eRepresentativeFragmentTestEnableNV = VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV, + eCoverageReductionModeNV = VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV, + eAttachmentFeedbackLoopEnableEXT = VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT, + eDepthClampRangeEXT = VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT + }; + + // wrapper class for enum VkFrontFace, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFrontFace.html + enum class FrontFace + { + eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE, + eClockwise = VK_FRONT_FACE_CLOCKWISE + }; + + // wrapper class for enum VkLogicOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLogicOp.html + enum class LogicOp + { + eClear = VK_LOGIC_OP_CLEAR, + eAnd = VK_LOGIC_OP_AND, + eAndReverse = VK_LOGIC_OP_AND_REVERSE, + eCopy = VK_LOGIC_OP_COPY, + eAndInverted = VK_LOGIC_OP_AND_INVERTED, + eNoOp = VK_LOGIC_OP_NO_OP, + eXor = VK_LOGIC_OP_XOR, + eOr = VK_LOGIC_OP_OR, + eNor = VK_LOGIC_OP_NOR, + eEquivalent = VK_LOGIC_OP_EQUIVALENT, + eInvert = VK_LOGIC_OP_INVERT, + eOrReverse = VK_LOGIC_OP_OR_REVERSE, + eCopyInverted = VK_LOGIC_OP_COPY_INVERTED, + eOrInverted = VK_LOGIC_OP_OR_INVERTED, + eNand = VK_LOGIC_OP_NAND, + eSet = VK_LOGIC_OP_SET + }; + + // wrapper class for enum VkStencilOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkStencilOp.html + enum class StencilOp + { + eKeep = VK_STENCIL_OP_KEEP, + eZero = VK_STENCIL_OP_ZERO, + eReplace = VK_STENCIL_OP_REPLACE, + eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP, + eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP, + eInvert = VK_STENCIL_OP_INVERT, + eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP, + eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP + }; + + // wrapper class for enum VkVertexInputRate, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVertexInputRate.html + enum class VertexInputRate + { + eVertex = VK_VERTEX_INPUT_RATE_VERTEX, + eInstance = VK_VERTEX_INPUT_RATE_INSTANCE + }; + + // wrapper class for enum VkPipelineColorBlendStateCreateFlagBits, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateFlagBits.html + enum class PipelineColorBlendStateCreateFlagBits : VkPipelineColorBlendStateCreateFlags + { + eRasterizationOrderAttachmentAccessEXT = VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT, + eRasterizationOrderAttachmentAccessARM = VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM + }; + + // wrapper using for bitmask VkPipelineColorBlendStateCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateFlags.html + using PipelineColorBlendStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPipelineColorBlendStateCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineColorBlendStateCreateFlags allFlags = + PipelineColorBlendStateCreateFlagBits::eRasterizationOrderAttachmentAccessEXT; + }; + + // wrapper class for enum VkPipelineDepthStencilStateCreateFlagBits, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateFlagBits.html + enum class PipelineDepthStencilStateCreateFlagBits : VkPipelineDepthStencilStateCreateFlags + { + eRasterizationOrderAttachmentDepthAccessEXT = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT, + eRasterizationOrderAttachmentDepthAccessARM = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM, + eRasterizationOrderAttachmentStencilAccessEXT = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT, + eRasterizationOrderAttachmentStencilAccessARM = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM + }; + + // wrapper using for bitmask VkPipelineDepthStencilStateCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateFlags.html + using PipelineDepthStencilStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPipelineDepthStencilStateCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineDepthStencilStateCreateFlags allFlags = + PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentDepthAccessEXT | + PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentStencilAccessEXT; + }; + + // wrapper class for enum VkPolygonMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPolygonMode.html + enum class PolygonMode + { + eFill = VK_POLYGON_MODE_FILL, + eLine = VK_POLYGON_MODE_LINE, + ePoint = VK_POLYGON_MODE_POINT, + eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV + }; + + // wrapper class for enum VkPrimitiveTopology, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPrimitiveTopology.html + enum class PrimitiveTopology + { + ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST, + eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST, + eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, + eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, + eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, + eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN, + eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, + eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY, + eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, + eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY, + ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST + }; + + enum class PipelineDynamicStateCreateFlagBits : VkPipelineDynamicStateCreateFlags + { + }; + + // wrapper using for bitmask VkPipelineDynamicStateCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineDynamicStateCreateFlags.html + using PipelineDynamicStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineDynamicStateCreateFlags allFlags = {}; + }; + + enum class PipelineInputAssemblyStateCreateFlagBits : VkPipelineInputAssemblyStateCreateFlags + { + }; + + // wrapper using for bitmask VkPipelineInputAssemblyStateCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineInputAssemblyStateCreateFlags.html + using PipelineInputAssemblyStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineInputAssemblyStateCreateFlags allFlags = {}; + }; + + enum class PipelineMultisampleStateCreateFlagBits : VkPipelineMultisampleStateCreateFlags + { + }; + + // wrapper using for bitmask VkPipelineMultisampleStateCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineMultisampleStateCreateFlags.html + using PipelineMultisampleStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineMultisampleStateCreateFlags allFlags = {}; + }; + + enum class PipelineRasterizationStateCreateFlagBits : VkPipelineRasterizationStateCreateFlags + { + }; + + // wrapper using for bitmask VkPipelineRasterizationStateCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationStateCreateFlags.html + using PipelineRasterizationStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineRasterizationStateCreateFlags allFlags = {}; + }; + + enum class PipelineTessellationStateCreateFlagBits : VkPipelineTessellationStateCreateFlags + { + }; + + // wrapper using for bitmask VkPipelineTessellationStateCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineTessellationStateCreateFlags.html + using PipelineTessellationStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineTessellationStateCreateFlags allFlags = {}; + }; + + enum class PipelineVertexInputStateCreateFlagBits : VkPipelineVertexInputStateCreateFlags + { + }; + + // wrapper using for bitmask VkPipelineVertexInputStateCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineVertexInputStateCreateFlags.html + using PipelineVertexInputStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineVertexInputStateCreateFlags allFlags = {}; + }; + + enum class PipelineViewportStateCreateFlagBits : VkPipelineViewportStateCreateFlags + { + }; + + // wrapper using for bitmask VkPipelineViewportStateCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineViewportStateCreateFlags.html + using PipelineViewportStateCreateFlags = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineViewportStateCreateFlags allFlags = {}; + }; + + // wrapper class for enum VkAttachmentDescriptionFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentDescriptionFlagBits.html + enum class AttachmentDescriptionFlagBits : VkAttachmentDescriptionFlags + { + eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT, + eResolveSkipTransferFunctionKHR = VK_ATTACHMENT_DESCRIPTION_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR, + eResolveEnableTransferFunctionKHR = VK_ATTACHMENT_DESCRIPTION_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR + }; + + // wrapper using for bitmask VkAttachmentDescriptionFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentDescriptionFlags.html + using AttachmentDescriptionFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkAttachmentDescriptionFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AttachmentDescriptionFlags allFlags = AttachmentDescriptionFlagBits::eMayAlias | + AttachmentDescriptionFlagBits::eResolveSkipTransferFunctionKHR | + AttachmentDescriptionFlagBits::eResolveEnableTransferFunctionKHR; + }; + + // wrapper class for enum VkAttachmentLoadOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentLoadOp.html + enum class AttachmentLoadOp + { + eLoad = VK_ATTACHMENT_LOAD_OP_LOAD, + eClear = VK_ATTACHMENT_LOAD_OP_CLEAR, + eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE, + eNone = VK_ATTACHMENT_LOAD_OP_NONE, + eNoneEXT = VK_ATTACHMENT_LOAD_OP_NONE_EXT, + eNoneKHR = VK_ATTACHMENT_LOAD_OP_NONE_KHR + }; + + // wrapper class for enum VkAttachmentStoreOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentStoreOp.html + enum class AttachmentStoreOp + { + eStore = VK_ATTACHMENT_STORE_OP_STORE, + eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE, + eNone = VK_ATTACHMENT_STORE_OP_NONE, + eNoneKHR = VK_ATTACHMENT_STORE_OP_NONE_KHR, + eNoneQCOM = VK_ATTACHMENT_STORE_OP_NONE_QCOM, + eNoneEXT = VK_ATTACHMENT_STORE_OP_NONE_EXT + }; + + // wrapper class for enum VkFramebufferCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebufferCreateFlagBits.html + enum class FramebufferCreateFlagBits : VkFramebufferCreateFlags + { + eImageless = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, + eImagelessKHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR + }; + + // wrapper using for bitmask VkFramebufferCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebufferCreateFlags.html + using FramebufferCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkFramebufferCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR FramebufferCreateFlags allFlags = FramebufferCreateFlagBits::eImageless; + }; + + // wrapper class for enum VkRenderPassCreateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassCreateFlagBits.html + enum class RenderPassCreateFlagBits : VkRenderPassCreateFlags + { + eTransformQCOM = VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM, + ePerLayerFragmentDensityVALVE = VK_RENDER_PASS_CREATE_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE + }; + + // wrapper using for bitmask VkRenderPassCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassCreateFlags.html + using RenderPassCreateFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkRenderPassCreateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR RenderPassCreateFlags allFlags = + RenderPassCreateFlagBits::eTransformQCOM | RenderPassCreateFlagBits::ePerLayerFragmentDensityVALVE; + }; + + // wrapper class for enum VkSubpassDescriptionFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassDescriptionFlagBits.html + enum class SubpassDescriptionFlagBits : VkSubpassDescriptionFlags + { + ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX, + ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX, + eTileShadingApronQCOM = VK_SUBPASS_DESCRIPTION_TILE_SHADING_APRON_BIT_QCOM, + eRasterizationOrderAttachmentColorAccessEXT = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT, + eRasterizationOrderAttachmentColorAccessARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM, + eRasterizationOrderAttachmentDepthAccessEXT = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT, + eRasterizationOrderAttachmentDepthAccessARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM, + eRasterizationOrderAttachmentStencilAccessEXT = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT, + eRasterizationOrderAttachmentStencilAccessARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM, + eEnableLegacyDitheringEXT = VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT, + eFragmentRegionEXT = VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_EXT, + eFragmentRegionQCOM = VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM, + eCustomResolveEXT = VK_SUBPASS_DESCRIPTION_CUSTOM_RESOLVE_BIT_EXT, + eShaderResolveQCOM = VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM + }; + + // wrapper using for bitmask VkSubpassDescriptionFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassDescriptionFlags.html + using SubpassDescriptionFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkSubpassDescriptionFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SubpassDescriptionFlags allFlags = + SubpassDescriptionFlagBits::ePerViewAttributesNVX | SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX | + SubpassDescriptionFlagBits::eTileShadingApronQCOM | SubpassDescriptionFlagBits::eRasterizationOrderAttachmentColorAccessEXT | + SubpassDescriptionFlagBits::eRasterizationOrderAttachmentDepthAccessEXT | SubpassDescriptionFlagBits::eRasterizationOrderAttachmentStencilAccessEXT | + SubpassDescriptionFlagBits::eEnableLegacyDitheringEXT | SubpassDescriptionFlagBits::eFragmentRegionEXT | SubpassDescriptionFlagBits::eCustomResolveEXT; + }; + + // wrapper class for enum VkStencilFaceFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkStencilFaceFlagBits.html + enum class StencilFaceFlagBits : VkStencilFaceFlags + { + eFront = VK_STENCIL_FACE_FRONT_BIT, + eBack = VK_STENCIL_FACE_BACK_BIT, + eFrontAndBack = VK_STENCIL_FACE_FRONT_AND_BACK, + eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK + }; + + // wrapper using for bitmask VkStencilFaceFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkStencilFaceFlags.html + using StencilFaceFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkStencilFaceFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StencilFaceFlags allFlags = + StencilFaceFlagBits::eFront | StencilFaceFlagBits::eBack | StencilFaceFlagBits::eFrontAndBack; + }; + + // wrapper class for enum VkSubpassContents, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassContents.html + enum class SubpassContents + { + eInline = VK_SUBPASS_CONTENTS_INLINE, + eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, + eInlineAndSecondaryCommandBuffersKHR = VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR, + eInlineAndSecondaryCommandBuffersEXT = VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT + }; + + //=== VK_VERSION_1_1 === + + // wrapper class for enum VkSubgroupFeatureFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubgroupFeatureFlagBits.html + enum class SubgroupFeatureFlagBits : VkSubgroupFeatureFlags + { + eBasic = VK_SUBGROUP_FEATURE_BASIC_BIT, + eVote = VK_SUBGROUP_FEATURE_VOTE_BIT, + eArithmetic = VK_SUBGROUP_FEATURE_ARITHMETIC_BIT, + eBallot = VK_SUBGROUP_FEATURE_BALLOT_BIT, + eShuffle = VK_SUBGROUP_FEATURE_SHUFFLE_BIT, + eShuffleRelative = VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT, + eClustered = VK_SUBGROUP_FEATURE_CLUSTERED_BIT, + eQuad = VK_SUBGROUP_FEATURE_QUAD_BIT, + eRotate = VK_SUBGROUP_FEATURE_ROTATE_BIT, + eRotateKHR = VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR, + eRotateClustered = VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT, + eRotateClusteredKHR = VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR, + ePartitionedEXT = VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT, + ePartitionedNV = VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV + }; + + // wrapper using for bitmask VkSubgroupFeatureFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubgroupFeatureFlags.html + using SubgroupFeatureFlags = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkSubgroupFeatureFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SubgroupFeatureFlags allFlags = + SubgroupFeatureFlagBits::eBasic | SubgroupFeatureFlagBits::eVote | SubgroupFeatureFlagBits::eArithmetic | SubgroupFeatureFlagBits::eBallot | + SubgroupFeatureFlagBits::eShuffle | SubgroupFeatureFlagBits::eShuffleRelative | SubgroupFeatureFlagBits::eClustered | SubgroupFeatureFlagBits::eQuad | + SubgroupFeatureFlagBits::eRotate | SubgroupFeatureFlagBits::eRotateClustered | SubgroupFeatureFlagBits::ePartitionedEXT; + }; + + // wrapper class for enum VkPointClippingBehavior, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPointClippingBehavior.html + enum class PointClippingBehavior + { + eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, + eAllClipPlanesKHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR, + eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, + eUserClipPlanesOnlyKHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR + }; + + using PointClippingBehaviorKHR = PointClippingBehavior; + + // wrapper class for enum VkPeerMemoryFeatureFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPeerMemoryFeatureFlagBits.html + enum class PeerMemoryFeatureFlagBits : VkPeerMemoryFeatureFlags + { + eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT, + eCopySrcKHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR, + eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT, + eCopyDstKHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR, + eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT, + eGenericSrcKHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR, + eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT, + eGenericDstKHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR + }; + + using PeerMemoryFeatureFlagBitsKHR = PeerMemoryFeatureFlagBits; + + // wrapper using for bitmask VkPeerMemoryFeatureFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPeerMemoryFeatureFlags.html + using PeerMemoryFeatureFlags = Flags; + using PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkPeerMemoryFeatureFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PeerMemoryFeatureFlags allFlags = PeerMemoryFeatureFlagBits::eCopySrc | PeerMemoryFeatureFlagBits::eCopyDst | + PeerMemoryFeatureFlagBits::eGenericSrc | PeerMemoryFeatureFlagBits::eGenericDst; + }; + + // wrapper class for enum VkMemoryAllocateFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryAllocateFlagBits.html + enum class MemoryAllocateFlagBits : VkMemoryAllocateFlags + { + eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, + eDeviceMaskKHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR, + eDeviceAddress = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT, + eDeviceAddressKHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR, + eDeviceAddressCaptureReplay = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT, + eDeviceAddressCaptureReplayKHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR, + eZeroInitializeEXT = VK_MEMORY_ALLOCATE_ZERO_INITIALIZE_BIT_EXT + }; + + using MemoryAllocateFlagBitsKHR = MemoryAllocateFlagBits; + + // wrapper using for bitmask VkMemoryAllocateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryAllocateFlags.html + using MemoryAllocateFlags = Flags; + using MemoryAllocateFlagsKHR = MemoryAllocateFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkMemoryAllocateFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR MemoryAllocateFlags allFlags = MemoryAllocateFlagBits::eDeviceMask | MemoryAllocateFlagBits::eDeviceAddress | + MemoryAllocateFlagBits::eDeviceAddressCaptureReplay | + MemoryAllocateFlagBits::eZeroInitializeEXT; + }; + + enum class CommandPoolTrimFlagBits : VkCommandPoolTrimFlags + { + }; + + // wrapper using for bitmask VkCommandPoolTrimFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPoolTrimFlags.html + using CommandPoolTrimFlags = Flags; + using CommandPoolTrimFlagsKHR = CommandPoolTrimFlags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR CommandPoolTrimFlags allFlags = {}; + }; + + // wrapper class for enum VkExternalMemoryHandleTypeFlagBits, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryHandleTypeFlagBits.html + enum class ExternalMemoryHandleTypeFlagBits : VkExternalMemoryHandleTypeFlags + { + eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, + eOpaqueFdKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR, + eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, + eOpaqueWin32KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR, + eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + eOpaqueWin32KmtKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR, + eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, + eD3D11TextureKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR, + eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, + eD3D11TextureKmtKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR, + eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, + eD3D12HeapKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR, + eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, + eD3D12ResourceKHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR, + eDmaBufEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT, +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + eAndroidHardwareBufferANDROID = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + eHostAllocationEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT, + eHostMappedForeignMemoryEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT, +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eZirconVmoFUCHSIA = VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA, +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + eRdmaAddressNV = VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV, +#if defined( VK_USE_PLATFORM_OHOS ) + eOhNativeBufferOHOS = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OH_NATIVE_BUFFER_BIT_OHOS, +#endif /*VK_USE_PLATFORM_OHOS*/ +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + eScreenBufferQNX = VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX, +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + eMtlbufferEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT, + eMtltextureEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT, + eMtlheapEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + }; + + using ExternalMemoryHandleTypeFlagBitsKHR = ExternalMemoryHandleTypeFlagBits; + + // wrapper using for bitmask VkExternalMemoryHandleTypeFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryHandleTypeFlags.html + using ExternalMemoryHandleTypeFlags = Flags; + using ExternalMemoryHandleTypeFlagsKHR = ExternalMemoryHandleTypeFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkExternalMemoryHandleTypeFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ExternalMemoryHandleTypeFlags allFlags = + ExternalMemoryHandleTypeFlagBits::eOpaqueFd | ExternalMemoryHandleTypeFlagBits::eOpaqueWin32 | ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt | + ExternalMemoryHandleTypeFlagBits::eD3D11Texture | ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt | ExternalMemoryHandleTypeFlagBits::eD3D12Heap | + ExternalMemoryHandleTypeFlagBits::eD3D12Resource | ExternalMemoryHandleTypeFlagBits::eDmaBufEXT +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + | ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + | ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT | ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT +#if defined( VK_USE_PLATFORM_FUCHSIA ) + | ExternalMemoryHandleTypeFlagBits::eZirconVmoFUCHSIA +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + | ExternalMemoryHandleTypeFlagBits::eRdmaAddressNV +#if defined( VK_USE_PLATFORM_OHOS ) + | ExternalMemoryHandleTypeFlagBits::eOhNativeBufferOHOS +#endif /*VK_USE_PLATFORM_OHOS*/ +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + | ExternalMemoryHandleTypeFlagBits::eScreenBufferQNX +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + | ExternalMemoryHandleTypeFlagBits::eMtlbufferEXT | ExternalMemoryHandleTypeFlagBits::eMtltextureEXT | ExternalMemoryHandleTypeFlagBits::eMtlheapEXT +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + ; + }; + + // wrapper class for enum VkExternalMemoryFeatureFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryFeatureFlagBits.html + enum class ExternalMemoryFeatureFlagBits : VkExternalMemoryFeatureFlags + { + eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT, + eDedicatedOnlyKHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR, + eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT, + eExportableKHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR, + eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT, + eImportableKHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR + }; + + using ExternalMemoryFeatureFlagBitsKHR = ExternalMemoryFeatureFlagBits; + + // wrapper using for bitmask VkExternalMemoryFeatureFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryFeatureFlags.html + using ExternalMemoryFeatureFlags = Flags; + using ExternalMemoryFeatureFlagsKHR = ExternalMemoryFeatureFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkExternalMemoryFeatureFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ExternalMemoryFeatureFlags allFlags = + ExternalMemoryFeatureFlagBits::eDedicatedOnly | ExternalMemoryFeatureFlagBits::eExportable | ExternalMemoryFeatureFlagBits::eImportable; + }; + + // wrapper class for enum VkExternalFenceHandleTypeFlagBits, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalFenceHandleTypeFlagBits.html + enum class ExternalFenceHandleTypeFlagBits : VkExternalFenceHandleTypeFlags + { + eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT, + eOpaqueFdKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR, + eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT, + eOpaqueWin32KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR, + eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + eOpaqueWin32KmtKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR, + eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT, + eSyncFdKHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR + }; + + using ExternalFenceHandleTypeFlagBitsKHR = ExternalFenceHandleTypeFlagBits; + + // wrapper using for bitmask VkExternalFenceHandleTypeFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalFenceHandleTypeFlags.html + using ExternalFenceHandleTypeFlags = Flags; + using ExternalFenceHandleTypeFlagsKHR = ExternalFenceHandleTypeFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkExternalFenceHandleTypeFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ExternalFenceHandleTypeFlags allFlags = + ExternalFenceHandleTypeFlagBits::eOpaqueFd | ExternalFenceHandleTypeFlagBits::eOpaqueWin32 | ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt | + ExternalFenceHandleTypeFlagBits::eSyncFd; + }; + + // wrapper class for enum VkExternalFenceFeatureFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalFenceFeatureFlagBits.html + enum class ExternalFenceFeatureFlagBits : VkExternalFenceFeatureFlags + { + eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT, + eExportableKHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR, + eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT, + eImportableKHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR + }; + + using ExternalFenceFeatureFlagBitsKHR = ExternalFenceFeatureFlagBits; + + // wrapper using for bitmask VkExternalFenceFeatureFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalFenceFeatureFlags.html + using ExternalFenceFeatureFlags = Flags; + using ExternalFenceFeatureFlagsKHR = ExternalFenceFeatureFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkExternalFenceFeatureFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ExternalFenceFeatureFlags allFlags = + ExternalFenceFeatureFlagBits::eExportable | ExternalFenceFeatureFlagBits::eImportable; + }; + + // wrapper class for enum VkFenceImportFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFenceImportFlagBits.html + enum class FenceImportFlagBits : VkFenceImportFlags + { + eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT, + eTemporaryKHR = VK_FENCE_IMPORT_TEMPORARY_BIT_KHR + }; + + using FenceImportFlagBitsKHR = FenceImportFlagBits; + + // wrapper using for bitmask VkFenceImportFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFenceImportFlags.html + using FenceImportFlags = Flags; + using FenceImportFlagsKHR = FenceImportFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkFenceImportFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR FenceImportFlags allFlags = FenceImportFlagBits::eTemporary; + }; + + // wrapper class for enum VkSemaphoreImportFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreImportFlagBits.html + enum class SemaphoreImportFlagBits : VkSemaphoreImportFlags + { + eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT, + eTemporaryKHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR + }; + + using SemaphoreImportFlagBitsKHR = SemaphoreImportFlagBits; + + // wrapper using for bitmask VkSemaphoreImportFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreImportFlags.html + using SemaphoreImportFlags = Flags; + using SemaphoreImportFlagsKHR = SemaphoreImportFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkSemaphoreImportFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SemaphoreImportFlags allFlags = SemaphoreImportFlagBits::eTemporary; + }; + + // wrapper class for enum VkExternalSemaphoreHandleTypeFlagBits, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalSemaphoreHandleTypeFlagBits.html + enum class ExternalSemaphoreHandleTypeFlagBits : VkExternalSemaphoreHandleTypeFlags + { + eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT, + eOpaqueFdKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR, + eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT, + eOpaqueWin32KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR, + eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, + eOpaqueWin32KmtKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR, + eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, + eD3D11Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT, + eD3D12FenceKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR, + eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT, + eSyncFdKHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR, +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eZirconEventFUCHSIA = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + }; + + using ExternalSemaphoreHandleTypeFlagBitsKHR = ExternalSemaphoreHandleTypeFlagBits; + + // wrapper using for bitmask VkExternalSemaphoreHandleTypeFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalSemaphoreHandleTypeFlags.html + using ExternalSemaphoreHandleTypeFlags = Flags; + using ExternalSemaphoreHandleTypeFlagsKHR = ExternalSemaphoreHandleTypeFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkExternalSemaphoreHandleTypeFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ExternalSemaphoreHandleTypeFlags allFlags = + ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd | ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32 | + ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt | ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence | ExternalSemaphoreHandleTypeFlagBits::eSyncFd +#if defined( VK_USE_PLATFORM_FUCHSIA ) + | ExternalSemaphoreHandleTypeFlagBits::eZirconEventFUCHSIA +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + ; + }; + + // wrapper class for enum VkExternalSemaphoreFeatureFlagBits, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalSemaphoreFeatureFlagBits.html + enum class ExternalSemaphoreFeatureFlagBits : VkExternalSemaphoreFeatureFlags + { + eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT, + eExportableKHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR, + eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT, + eImportableKHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR + }; + + using ExternalSemaphoreFeatureFlagBitsKHR = ExternalSemaphoreFeatureFlagBits; + + // wrapper using for bitmask VkExternalSemaphoreFeatureFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalSemaphoreFeatureFlags.html + using ExternalSemaphoreFeatureFlags = Flags; + using ExternalSemaphoreFeatureFlagsKHR = ExternalSemaphoreFeatureFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkExternalSemaphoreFeatureFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ExternalSemaphoreFeatureFlags allFlags = + ExternalSemaphoreFeatureFlagBits::eExportable | ExternalSemaphoreFeatureFlagBits::eImportable; + }; + + // wrapper class for enum VkDescriptorUpdateTemplateType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateType.html + enum class DescriptorUpdateTemplateType + { + eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, + eDescriptorSetKHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR, + ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS, + ePushDescriptorsKHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR + }; + + using DescriptorUpdateTemplateTypeKHR = DescriptorUpdateTemplateType; + + enum class DescriptorUpdateTemplateCreateFlagBits : VkDescriptorUpdateTemplateCreateFlags + { + }; + + // wrapper using for bitmask VkDescriptorUpdateTemplateCreateFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateFlags.html + using DescriptorUpdateTemplateCreateFlags = Flags; + using DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DescriptorUpdateTemplateCreateFlags allFlags = {}; + }; + + // wrapper class for enum VkSamplerYcbcrModelConversion, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerYcbcrModelConversion.html + enum class SamplerYcbcrModelConversion + { + eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, + eRgbIdentityKHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR, + eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, + eYcbcrIdentityKHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR, + eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, + eYcbcr709KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR, + eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, + eYcbcr601KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR, + eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, + eYcbcr2020KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR + }; + + using SamplerYcbcrModelConversionKHR = SamplerYcbcrModelConversion; + + // wrapper class for enum VkSamplerYcbcrRange, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerYcbcrRange.html + enum class SamplerYcbcrRange + { + eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, + eItuFullKHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR, + eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW, + eItuNarrowKHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR + }; + + using SamplerYcbcrRangeKHR = SamplerYcbcrRange; + + // wrapper class for enum VkChromaLocation, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkChromaLocation.html + enum class ChromaLocation + { + eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN, + eCositedEvenKHR = VK_CHROMA_LOCATION_COSITED_EVEN_KHR, + eMidpoint = VK_CHROMA_LOCATION_MIDPOINT, + eMidpointKHR = VK_CHROMA_LOCATION_MIDPOINT_KHR + }; + + using ChromaLocationKHR = ChromaLocation; + + // wrapper class for enum VkTessellationDomainOrigin, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTessellationDomainOrigin.html + enum class TessellationDomainOrigin + { + eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, + eUpperLeftKHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR, + eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, + eLowerLeftKHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR + }; + + using TessellationDomainOriginKHR = TessellationDomainOrigin; + + //=== VK_VERSION_1_2 === + + // wrapper class for enum VkDriverId, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDriverId.html + enum class DriverId + { + eAmdProprietary = VK_DRIVER_ID_AMD_PROPRIETARY, + eAmdProprietaryKHR = VK_DRIVER_ID_AMD_PROPRIETARY_KHR, + eAmdOpenSource = VK_DRIVER_ID_AMD_OPEN_SOURCE, + eAmdOpenSourceKHR = VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR, + eMesaRadv = VK_DRIVER_ID_MESA_RADV, + eMesaRadvKHR = VK_DRIVER_ID_MESA_RADV_KHR, + eNvidiaProprietary = VK_DRIVER_ID_NVIDIA_PROPRIETARY, + eNvidiaProprietaryKHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR, + eIntelProprietaryWindows = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS, + eIntelProprietaryWindowsKHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR, + eIntelOpenSourceMESA = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA, + eIntelOpenSourceMesaKHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR, + eImaginationProprietary = VK_DRIVER_ID_IMAGINATION_PROPRIETARY, + eImaginationProprietaryKHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR, + eQualcommProprietary = VK_DRIVER_ID_QUALCOMM_PROPRIETARY, + eQualcommProprietaryKHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR, + eArmProprietary = VK_DRIVER_ID_ARM_PROPRIETARY, + eArmProprietaryKHR = VK_DRIVER_ID_ARM_PROPRIETARY_KHR, + eGoogleSwiftshader = VK_DRIVER_ID_GOOGLE_SWIFTSHADER, + eGoogleSwiftshaderKHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR, + eGgpProprietary = VK_DRIVER_ID_GGP_PROPRIETARY, + eGgpProprietaryKHR = VK_DRIVER_ID_GGP_PROPRIETARY_KHR, + eBroadcomProprietary = VK_DRIVER_ID_BROADCOM_PROPRIETARY, + eBroadcomProprietaryKHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR, + eMesaLlvmpipe = VK_DRIVER_ID_MESA_LLVMPIPE, + eMoltenvk = VK_DRIVER_ID_MOLTENVK, + eCoreaviProprietary = VK_DRIVER_ID_COREAVI_PROPRIETARY, + eJuiceProprietary = VK_DRIVER_ID_JUICE_PROPRIETARY, + eVerisiliconProprietary = VK_DRIVER_ID_VERISILICON_PROPRIETARY, + eMesaTurnip = VK_DRIVER_ID_MESA_TURNIP, + eMesaV3Dv = VK_DRIVER_ID_MESA_V3DV, + eMesaPanvk = VK_DRIVER_ID_MESA_PANVK, + eSamsungProprietary = VK_DRIVER_ID_SAMSUNG_PROPRIETARY, + eMesaVenus = VK_DRIVER_ID_MESA_VENUS, + eMesaDozen = VK_DRIVER_ID_MESA_DOZEN, + eMesaNvk = VK_DRIVER_ID_MESA_NVK, + eImaginationOpenSourceMESA = VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA, + eMesaHoneykrisp = VK_DRIVER_ID_MESA_HONEYKRISP, + eVulkanScEmulationOnVulkan = VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN, + eMesaKosmickrisp = VK_DRIVER_ID_MESA_KOSMICKRISP + }; + + using DriverIdKHR = DriverId; + + // wrapper class for enum VkShaderFloatControlsIndependence, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderFloatControlsIndependence.html + enum class ShaderFloatControlsIndependence + { + e32BitOnly = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, + e32BitOnlyKHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR, + eAll = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, + eAllKHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR, + eNone = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE, + eNoneKHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR + }; + + using ShaderFloatControlsIndependenceKHR = ShaderFloatControlsIndependence; + + // wrapper class for enum VkResolveModeFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkResolveModeFlagBits.html + enum class ResolveModeFlagBits : VkResolveModeFlags + { + eNone = VK_RESOLVE_MODE_NONE, + eNoneKHR = VK_RESOLVE_MODE_NONE_KHR, + eSampleZero = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, + eSampleZeroKHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR, + eAverage = VK_RESOLVE_MODE_AVERAGE_BIT, + eAverageKHR = VK_RESOLVE_MODE_AVERAGE_BIT_KHR, + eMin = VK_RESOLVE_MODE_MIN_BIT, + eMinKHR = VK_RESOLVE_MODE_MIN_BIT_KHR, + eMax = VK_RESOLVE_MODE_MAX_BIT, + eMaxKHR = VK_RESOLVE_MODE_MAX_BIT_KHR, +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + eExternalFormatDownsampleANDROID = VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID, +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + eCustomEXT = VK_RESOLVE_MODE_CUSTOM_BIT_EXT + }; + + using ResolveModeFlagBitsKHR = ResolveModeFlagBits; + + // wrapper using for bitmask VkResolveModeFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkResolveModeFlags.html + using ResolveModeFlags = Flags; + using ResolveModeFlagsKHR = ResolveModeFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkResolveModeFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ResolveModeFlags allFlags = ResolveModeFlagBits::eNone | ResolveModeFlagBits::eSampleZero | + ResolveModeFlagBits::eAverage | ResolveModeFlagBits::eMin | ResolveModeFlagBits::eMax +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + | ResolveModeFlagBits::eExternalFormatDownsampleANDROID +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + | ResolveModeFlagBits::eCustomEXT; + }; + + // wrapper class for enum VkSemaphoreType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreType.html + enum class SemaphoreType + { + eBinary = VK_SEMAPHORE_TYPE_BINARY, + eBinaryKHR = VK_SEMAPHORE_TYPE_BINARY_KHR, + eTimeline = VK_SEMAPHORE_TYPE_TIMELINE, + eTimelineKHR = VK_SEMAPHORE_TYPE_TIMELINE_KHR + }; + + using SemaphoreTypeKHR = SemaphoreType; + + // wrapper class for enum VkSemaphoreWaitFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreWaitFlagBits.html + enum class SemaphoreWaitFlagBits : VkSemaphoreWaitFlags + { + eAny = VK_SEMAPHORE_WAIT_ANY_BIT, + eAnyKHR = VK_SEMAPHORE_WAIT_ANY_BIT_KHR + }; + + using SemaphoreWaitFlagBitsKHR = SemaphoreWaitFlagBits; + + // wrapper using for bitmask VkSemaphoreWaitFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreWaitFlags.html + using SemaphoreWaitFlags = Flags; + using SemaphoreWaitFlagsKHR = SemaphoreWaitFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkSemaphoreWaitFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SemaphoreWaitFlags allFlags = SemaphoreWaitFlagBits::eAny; + }; + + // wrapper class for enum VkDescriptorBindingFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorBindingFlagBits.html + enum class DescriptorBindingFlagBits : VkDescriptorBindingFlags + { + eUpdateAfterBind = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, + eUpdateAfterBindEXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT, + eUpdateUnusedWhilePending = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT, + eUpdateUnusedWhilePendingEXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, + ePartiallyBound = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT, + ePartiallyBoundEXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT, + eVariableDescriptorCount = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT, + eVariableDescriptorCountEXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT + }; + + using DescriptorBindingFlagBitsEXT = DescriptorBindingFlagBits; + + // wrapper using for bitmask VkDescriptorBindingFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorBindingFlags.html + using DescriptorBindingFlags = Flags; + using DescriptorBindingFlagsEXT = DescriptorBindingFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkDescriptorBindingFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DescriptorBindingFlags allFlags = + DescriptorBindingFlagBits::eUpdateAfterBind | DescriptorBindingFlagBits::eUpdateUnusedWhilePending | DescriptorBindingFlagBits::ePartiallyBound | + DescriptorBindingFlagBits::eVariableDescriptorCount; + }; + + // wrapper class for enum VkSamplerReductionMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerReductionMode.html + enum class SamplerReductionMode + { + eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, + eWeightedAverageEXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT, + eMin = VK_SAMPLER_REDUCTION_MODE_MIN, + eMinEXT = VK_SAMPLER_REDUCTION_MODE_MIN_EXT, + eMax = VK_SAMPLER_REDUCTION_MODE_MAX, + eMaxEXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT, + eWeightedAverageRangeclampQCOM = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM + }; + + using SamplerReductionModeEXT = SamplerReductionMode; + + //=== VK_VERSION_1_3 === + + // wrapper class for enum VkToolPurposeFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkToolPurposeFlagBits.html + enum class ToolPurposeFlagBits : VkToolPurposeFlags + { + eValidation = VK_TOOL_PURPOSE_VALIDATION_BIT, + eValidationEXT = VK_TOOL_PURPOSE_VALIDATION_BIT_EXT, + eProfiling = VK_TOOL_PURPOSE_PROFILING_BIT, + eProfilingEXT = VK_TOOL_PURPOSE_PROFILING_BIT_EXT, + eTracing = VK_TOOL_PURPOSE_TRACING_BIT, + eTracingEXT = VK_TOOL_PURPOSE_TRACING_BIT_EXT, + eAdditionalFeatures = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT, + eAdditionalFeaturesEXT = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT, + eModifyingFeatures = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT, + eModifyingFeaturesEXT = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT, + eDebugReportingEXT = VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT, + eDebugMarkersEXT = VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT + }; + + using ToolPurposeFlagBitsEXT = ToolPurposeFlagBits; + + // wrapper using for bitmask VkToolPurposeFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkToolPurposeFlags.html + using ToolPurposeFlags = Flags; + using ToolPurposeFlagsEXT = ToolPurposeFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkToolPurposeFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ToolPurposeFlags allFlags = + ToolPurposeFlagBits::eValidation | ToolPurposeFlagBits::eProfiling | ToolPurposeFlagBits::eTracing | ToolPurposeFlagBits::eAdditionalFeatures | + ToolPurposeFlagBits::eModifyingFeatures | ToolPurposeFlagBits::eDebugReportingEXT | ToolPurposeFlagBits::eDebugMarkersEXT; + }; + + enum class PrivateDataSlotCreateFlagBits : VkPrivateDataSlotCreateFlags + { + }; + + using PrivateDataSlotCreateFlagBitsEXT = PrivateDataSlotCreateFlagBits; + + // wrapper using for bitmask VkPrivateDataSlotCreateFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateFlags.html + using PrivateDataSlotCreateFlags = Flags; + using PrivateDataSlotCreateFlagsEXT = PrivateDataSlotCreateFlags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PrivateDataSlotCreateFlags allFlags = {}; + }; + + // wrapper class for enum VkPipelineStageFlagBits2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineStageFlagBits2.html + enum class PipelineStageFlagBits2 : VkPipelineStageFlags2 + { + eNone = VK_PIPELINE_STAGE_2_NONE, + eNoneKHR = VK_PIPELINE_STAGE_2_NONE_KHR, + eTopOfPipe = VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT, + eTopOfPipeKHR = VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, + eDrawIndirect = VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT, + eDrawIndirectKHR = VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, + eVertexInput = VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT, + eVertexInputKHR = VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR, + eVertexShader = VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT, + eVertexShaderKHR = VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, + eTessellationControlShader = VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT, + eTessellationControlShaderKHR = VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, + eTessellationEvaluationShader = VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT, + eTessellationEvaluationShaderKHR = VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, + eGeometryShader = VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT, + eGeometryShaderKHR = VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, + eFragmentShader = VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT, + eFragmentShaderKHR = VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, + eEarlyFragmentTests = VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT, + eEarlyFragmentTestsKHR = VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, + eLateFragmentTests = VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT, + eLateFragmentTestsKHR = VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, + eColorAttachmentOutput = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT, + eColorAttachmentOutputKHR = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, + eComputeShader = VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT, + eComputeShaderKHR = VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, + eAllTransfer = VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT, + eTransfer = VK_PIPELINE_STAGE_2_TRANSFER_BIT, + eAllTransferKHR = VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR, + eTransferKHR = VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR, + eBottomOfPipe = VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT, + eBottomOfPipeKHR = VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR, + eHost = VK_PIPELINE_STAGE_2_HOST_BIT, + eHostKHR = VK_PIPELINE_STAGE_2_HOST_BIT_KHR, + eAllGraphics = VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, + eAllGraphicsKHR = VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, + eAllCommands = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, + eAllCommandsKHR = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR, + eCopy = VK_PIPELINE_STAGE_2_COPY_BIT, + eCopyKHR = VK_PIPELINE_STAGE_2_COPY_BIT_KHR, + eResolve = VK_PIPELINE_STAGE_2_RESOLVE_BIT, + eResolveKHR = VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, + eBlit = VK_PIPELINE_STAGE_2_BLIT_BIT, + eBlitKHR = VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, + eClear = VK_PIPELINE_STAGE_2_CLEAR_BIT, + eClearKHR = VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, + eIndexInput = VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT, + eIndexInputKHR = VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, + eVertexAttributeInput = VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT, + eVertexAttributeInputKHR = VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, + ePreRasterizationShaders = VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT, + ePreRasterizationShadersKHR = VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR, + eVideoDecodeKHR = VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR, + eVideoEncodeKHR = VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR, + eTransformFeedbackEXT = VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, + eConditionalRenderingEXT = VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, + eCommandPreprocessEXT = VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_EXT, + eCommandPreprocessNV = VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, + eFragmentShadingRateAttachmentKHR = VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eShadingRateImageNV = VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV, + eAccelerationStructureBuildKHR = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, + eAccelerationStructureBuildNV = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV, + eRayTracingShaderKHR = VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, + eRayTracingShaderNV = VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV, + eFragmentDensityProcessEXT = VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, + eTaskShaderEXT = VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT, + eTaskShaderNV = VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, + eMeshShaderEXT = VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT, + eMeshShaderNV = VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, + eSubpassShaderHUAWEI = VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI, + eSubpassShadingHUAWEI = VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI, + eInvocationMaskHUAWEI = VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI, + eAccelerationStructureCopyKHR = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR, + eMicromapBuildEXT = VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT, + eClusterCullingShaderHUAWEI = VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI, + eOpticalFlowNV = VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV, + eConvertCooperativeVectorMatrixNV = VK_PIPELINE_STAGE_2_CONVERT_COOPERATIVE_VECTOR_MATRIX_BIT_NV, + eDataGraphARM = VK_PIPELINE_STAGE_2_DATA_GRAPH_BIT_ARM, + eCopyIndirectKHR = VK_PIPELINE_STAGE_2_COPY_INDIRECT_BIT_KHR, + eMemoryDecompressionEXT = VK_PIPELINE_STAGE_2_MEMORY_DECOMPRESSION_BIT_EXT + }; + + using PipelineStageFlagBits2KHR = PipelineStageFlagBits2; + + // wrapper using for bitmask VkPipelineStageFlags2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineStageFlags2.html + using PipelineStageFlags2 = Flags; + using PipelineStageFlags2KHR = PipelineStageFlags2; + + template <> + struct FlagTraits + { + using WrappedType = VkPipelineStageFlagBits2; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineStageFlags2 allFlags = + PipelineStageFlagBits2::eNone | PipelineStageFlagBits2::eTopOfPipe | PipelineStageFlagBits2::eDrawIndirect | PipelineStageFlagBits2::eVertexInput | + PipelineStageFlagBits2::eVertexShader | PipelineStageFlagBits2::eTessellationControlShader | PipelineStageFlagBits2::eTessellationEvaluationShader | + PipelineStageFlagBits2::eGeometryShader | PipelineStageFlagBits2::eFragmentShader | PipelineStageFlagBits2::eEarlyFragmentTests | + PipelineStageFlagBits2::eLateFragmentTests | PipelineStageFlagBits2::eColorAttachmentOutput | PipelineStageFlagBits2::eComputeShader | + PipelineStageFlagBits2::eAllTransfer | PipelineStageFlagBits2::eBottomOfPipe | PipelineStageFlagBits2::eHost | PipelineStageFlagBits2::eAllGraphics | + PipelineStageFlagBits2::eAllCommands | PipelineStageFlagBits2::eCopy | PipelineStageFlagBits2::eResolve | PipelineStageFlagBits2::eBlit | + PipelineStageFlagBits2::eClear | PipelineStageFlagBits2::eIndexInput | PipelineStageFlagBits2::eVertexAttributeInput | + PipelineStageFlagBits2::ePreRasterizationShaders | PipelineStageFlagBits2::eVideoDecodeKHR | PipelineStageFlagBits2::eVideoEncodeKHR | + PipelineStageFlagBits2::eTransformFeedbackEXT | PipelineStageFlagBits2::eConditionalRenderingEXT | PipelineStageFlagBits2::eCommandPreprocessEXT | + PipelineStageFlagBits2::eFragmentShadingRateAttachmentKHR | PipelineStageFlagBits2::eAccelerationStructureBuildKHR | + PipelineStageFlagBits2::eRayTracingShaderKHR | PipelineStageFlagBits2::eFragmentDensityProcessEXT | PipelineStageFlagBits2::eTaskShaderEXT | + PipelineStageFlagBits2::eMeshShaderEXT | PipelineStageFlagBits2::eSubpassShaderHUAWEI | PipelineStageFlagBits2::eInvocationMaskHUAWEI | + PipelineStageFlagBits2::eAccelerationStructureCopyKHR | PipelineStageFlagBits2::eMicromapBuildEXT | PipelineStageFlagBits2::eClusterCullingShaderHUAWEI | + PipelineStageFlagBits2::eOpticalFlowNV | PipelineStageFlagBits2::eConvertCooperativeVectorMatrixNV | PipelineStageFlagBits2::eDataGraphARM | + PipelineStageFlagBits2::eCopyIndirectKHR | PipelineStageFlagBits2::eMemoryDecompressionEXT; + }; + + // wrapper class for enum VkAccessFlagBits2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccessFlagBits2.html + enum class AccessFlagBits2 : VkAccessFlags2 + { + eNone = VK_ACCESS_2_NONE, + eNoneKHR = VK_ACCESS_2_NONE_KHR, + eIndirectCommandRead = VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT, + eIndirectCommandReadKHR = VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR, + eIndexRead = VK_ACCESS_2_INDEX_READ_BIT, + eIndexReadKHR = VK_ACCESS_2_INDEX_READ_BIT_KHR, + eVertexAttributeRead = VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT, + eVertexAttributeReadKHR = VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR, + eUniformRead = VK_ACCESS_2_UNIFORM_READ_BIT, + eUniformReadKHR = VK_ACCESS_2_UNIFORM_READ_BIT_KHR, + eInputAttachmentRead = VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT, + eInputAttachmentReadKHR = VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR, + eShaderRead = VK_ACCESS_2_SHADER_READ_BIT, + eShaderReadKHR = VK_ACCESS_2_SHADER_READ_BIT_KHR, + eShaderWrite = VK_ACCESS_2_SHADER_WRITE_BIT, + eShaderWriteKHR = VK_ACCESS_2_SHADER_WRITE_BIT_KHR, + eColorAttachmentRead = VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT, + eColorAttachmentReadKHR = VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR, + eColorAttachmentWrite = VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT, + eColorAttachmentWriteKHR = VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR, + eDepthStencilAttachmentRead = VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT, + eDepthStencilAttachmentReadKHR = VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR, + eDepthStencilAttachmentWrite = VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, + eDepthStencilAttachmentWriteKHR = VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR, + eTransferRead = VK_ACCESS_2_TRANSFER_READ_BIT, + eTransferReadKHR = VK_ACCESS_2_TRANSFER_READ_BIT_KHR, + eTransferWrite = VK_ACCESS_2_TRANSFER_WRITE_BIT, + eTransferWriteKHR = VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, + eHostRead = VK_ACCESS_2_HOST_READ_BIT, + eHostReadKHR = VK_ACCESS_2_HOST_READ_BIT_KHR, + eHostWrite = VK_ACCESS_2_HOST_WRITE_BIT, + eHostWriteKHR = VK_ACCESS_2_HOST_WRITE_BIT_KHR, + eMemoryRead = VK_ACCESS_2_MEMORY_READ_BIT, + eMemoryReadKHR = VK_ACCESS_2_MEMORY_READ_BIT_KHR, + eMemoryWrite = VK_ACCESS_2_MEMORY_WRITE_BIT, + eMemoryWriteKHR = VK_ACCESS_2_MEMORY_WRITE_BIT_KHR, + eShaderSampledRead = VK_ACCESS_2_SHADER_SAMPLED_READ_BIT, + eShaderSampledReadKHR = VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, + eShaderStorageRead = VK_ACCESS_2_SHADER_STORAGE_READ_BIT, + eShaderStorageReadKHR = VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, + eShaderStorageWrite = VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT, + eShaderStorageWriteKHR = VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, + eVideoDecodeReadKHR = VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR, + eVideoDecodeWriteKHR = VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR, + eSamplerHeapReadEXT = VK_ACCESS_2_SAMPLER_HEAP_READ_BIT_EXT, + eResourceHeapReadEXT = VK_ACCESS_2_RESOURCE_HEAP_READ_BIT_EXT, + eVideoEncodeReadKHR = VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR, + eVideoEncodeWriteKHR = VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR, + eShaderTileAttachmentReadQCOM = VK_ACCESS_2_SHADER_TILE_ATTACHMENT_READ_BIT_QCOM, + eShaderTileAttachmentWriteQCOM = VK_ACCESS_2_SHADER_TILE_ATTACHMENT_WRITE_BIT_QCOM, + eTransformFeedbackWriteEXT = VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, + eTransformFeedbackCounterReadEXT = VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, + eTransformFeedbackCounterWriteEXT = VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, + eConditionalRenderingReadEXT = VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, + eCommandPreprocessReadEXT = VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_EXT, + eCommandPreprocessReadNV = VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV, + eCommandPreprocessWriteEXT = VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_EXT, + eCommandPreprocessWriteNV = VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV, + eFragmentShadingRateAttachmentReadKHR = VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, + eShadingRateImageReadNV = VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV, + eAccelerationStructureReadKHR = VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, + eAccelerationStructureReadNV = VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV, + eAccelerationStructureWriteKHR = VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, + eAccelerationStructureWriteNV = VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV, + eFragmentDensityMapReadEXT = VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, + eColorAttachmentReadNoncoherentEXT = VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, + eDescriptorBufferReadEXT = VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT, + eInvocationMaskReadHUAWEI = VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI, + eShaderBindingTableReadKHR = VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR, + eMicromapReadEXT = VK_ACCESS_2_MICROMAP_READ_BIT_EXT, + eMicromapWriteEXT = VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT, + eOpticalFlowReadNV = VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV, + eOpticalFlowWriteNV = VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV, + eDataGraphReadARM = VK_ACCESS_2_DATA_GRAPH_READ_BIT_ARM, + eDataGraphWriteARM = VK_ACCESS_2_DATA_GRAPH_WRITE_BIT_ARM, + eMemoryDecompressionReadEXT = VK_ACCESS_2_MEMORY_DECOMPRESSION_READ_BIT_EXT, + eMemoryDecompressionWriteEXT = VK_ACCESS_2_MEMORY_DECOMPRESSION_WRITE_BIT_EXT + }; + + using AccessFlagBits2KHR = AccessFlagBits2; + + // wrapper using for bitmask VkAccessFlags2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccessFlags2.html + using AccessFlags2 = Flags; + using AccessFlags2KHR = AccessFlags2; + + template <> + struct FlagTraits + { + using WrappedType = VkAccessFlagBits2; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AccessFlags2 allFlags = + AccessFlagBits2::eNone | AccessFlagBits2::eIndirectCommandRead | AccessFlagBits2::eIndexRead | AccessFlagBits2::eVertexAttributeRead | + AccessFlagBits2::eUniformRead | AccessFlagBits2::eInputAttachmentRead | AccessFlagBits2::eShaderRead | AccessFlagBits2::eShaderWrite | + AccessFlagBits2::eColorAttachmentRead | AccessFlagBits2::eColorAttachmentWrite | AccessFlagBits2::eDepthStencilAttachmentRead | + AccessFlagBits2::eDepthStencilAttachmentWrite | AccessFlagBits2::eTransferRead | AccessFlagBits2::eTransferWrite | AccessFlagBits2::eHostRead | + AccessFlagBits2::eHostWrite | AccessFlagBits2::eMemoryRead | AccessFlagBits2::eMemoryWrite | AccessFlagBits2::eShaderSampledRead | + AccessFlagBits2::eShaderStorageRead | AccessFlagBits2::eShaderStorageWrite | AccessFlagBits2::eVideoDecodeReadKHR | + AccessFlagBits2::eVideoDecodeWriteKHR | AccessFlagBits2::eSamplerHeapReadEXT | AccessFlagBits2::eResourceHeapReadEXT | + AccessFlagBits2::eVideoEncodeReadKHR | AccessFlagBits2::eVideoEncodeWriteKHR | AccessFlagBits2::eShaderTileAttachmentReadQCOM | + AccessFlagBits2::eShaderTileAttachmentWriteQCOM | AccessFlagBits2::eTransformFeedbackWriteEXT | AccessFlagBits2::eTransformFeedbackCounterReadEXT | + AccessFlagBits2::eTransformFeedbackCounterWriteEXT | AccessFlagBits2::eConditionalRenderingReadEXT | AccessFlagBits2::eCommandPreprocessReadEXT | + AccessFlagBits2::eCommandPreprocessWriteEXT | AccessFlagBits2::eFragmentShadingRateAttachmentReadKHR | AccessFlagBits2::eAccelerationStructureReadKHR | + AccessFlagBits2::eAccelerationStructureWriteKHR | AccessFlagBits2::eFragmentDensityMapReadEXT | AccessFlagBits2::eColorAttachmentReadNoncoherentEXT | + AccessFlagBits2::eDescriptorBufferReadEXT | AccessFlagBits2::eInvocationMaskReadHUAWEI | AccessFlagBits2::eShaderBindingTableReadKHR | + AccessFlagBits2::eMicromapReadEXT | AccessFlagBits2::eMicromapWriteEXT | AccessFlagBits2::eOpticalFlowReadNV | AccessFlagBits2::eOpticalFlowWriteNV | + AccessFlagBits2::eDataGraphReadARM | AccessFlagBits2::eDataGraphWriteARM | AccessFlagBits2::eMemoryDecompressionReadEXT | + AccessFlagBits2::eMemoryDecompressionWriteEXT; + }; + + // wrapper class for enum VkSubmitFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubmitFlagBits.html + enum class SubmitFlagBits : VkSubmitFlags + { + eProtected = VK_SUBMIT_PROTECTED_BIT, + eProtectedKHR = VK_SUBMIT_PROTECTED_BIT_KHR + }; + + using SubmitFlagBitsKHR = SubmitFlagBits; + + // wrapper using for bitmask VkSubmitFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubmitFlags.html + using SubmitFlags = Flags; + using SubmitFlagsKHR = SubmitFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkSubmitFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SubmitFlags allFlags = SubmitFlagBits::eProtected; + }; + + // wrapper class for enum VkFormatFeatureFlagBits2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFormatFeatureFlagBits2.html + enum class FormatFeatureFlagBits2 : VkFormatFeatureFlags2 + { + eSampledImage = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT, + eSampledImageKHR = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR, + eStorageImage = VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT, + eStorageImageKHR = VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR, + eStorageImageAtomic = VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT, + eStorageImageAtomicKHR = VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR, + eUniformTexelBuffer = VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT, + eUniformTexelBufferKHR = VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR, + eStorageTexelBuffer = VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT, + eStorageTexelBufferKHR = VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR, + eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT, + eStorageTexelBufferAtomicKHR = VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR, + eVertexBuffer = VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT, + eVertexBufferKHR = VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR, + eColorAttachment = VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT, + eColorAttachmentKHR = VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR, + eColorAttachmentBlend = VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT, + eColorAttachmentBlendKHR = VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR, + eDepthStencilAttachment = VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT, + eDepthStencilAttachmentKHR = VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR, + eBlitSrc = VK_FORMAT_FEATURE_2_BLIT_SRC_BIT, + eBlitSrcKHR = VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR, + eBlitDst = VK_FORMAT_FEATURE_2_BLIT_DST_BIT, + eBlitDstKHR = VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR, + eSampledImageFilterLinear = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT, + eSampledImageFilterLinearKHR = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR, + eTransferSrc = VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT, + eTransferSrcKHR = VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR, + eTransferDst = VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT, + eTransferDstKHR = VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR, + eSampledImageFilterMinmax = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT, + eSampledImageFilterMinmaxKHR = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR, + eMidpointChromaSamples = VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT, + eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR, + eSampledImageYcbcrConversionLinearFilter = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, + eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR, + eSampledImageYcbcrConversionSeparateReconstructionFilter = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, + eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR, + eSampledImageYcbcrConversionChromaReconstructionExplicit = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT, + eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR, + eSampledImageYcbcrConversionChromaReconstructionExplicitForceable = + VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT, + eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = + VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR, + eDisjoint = VK_FORMAT_FEATURE_2_DISJOINT_BIT, + eDisjointKHR = VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR, + eCositedChromaSamples = VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT, + eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR, + eStorageReadWithoutFormat = VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT, + eStorageReadWithoutFormatKHR = VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR, + eStorageWriteWithoutFormat = VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT, + eStorageWriteWithoutFormatKHR = VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR, + eSampledImageDepthComparison = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT, + eSampledImageDepthComparisonKHR = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR, + eSampledImageFilterCubic = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT, + eSampledImageFilterCubicEXT = VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT, + eHostImageTransfer = VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT, + eHostImageTransferEXT = VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT, + eVideoDecodeOutputKHR = VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR, + eVideoDecodeDpbKHR = VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR, + eAccelerationStructureVertexBufferKHR = VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR, + eFragmentDensityMapEXT = VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT, + eFragmentShadingRateAttachmentKHR = VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eVideoEncodeInputKHR = VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR, + eVideoEncodeDpbKHR = VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR, + eAccelerationStructureRadiusBufferNV = VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV, + eLinearColorAttachmentNV = VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV, + eWeightImageQCOM = VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM, + eWeightSampledImageQCOM = VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM, + eBlockMatchingQCOM = VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM, + eBoxFilterSampledQCOM = VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM, + eTensorShaderARM = VK_FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM, + eTensorImageAliasingARM = VK_FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM, + eOpticalFlowImageNV = VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV, + eOpticalFlowVectorNV = VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV, + eOpticalFlowCostNV = VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV, + eTensorDataGraphARM = VK_FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM, + eCopyImageIndirectDstKHR = VK_FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR, + eVideoEncodeQuantizationDeltaMapKHR = VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR, + eVideoEncodeEmphasisMapKHR = VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR, + eDepthCopyOnComputeQueueKHR = VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR, + eDepthCopyOnTransferQueueKHR = VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR, + eStencilCopyOnComputeQueueKHR = VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR, + eStencilCopyOnTransferQueueKHR = VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR + }; + + using FormatFeatureFlagBits2KHR = FormatFeatureFlagBits2; + + // wrapper using for bitmask VkFormatFeatureFlags2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFormatFeatureFlags2.html + using FormatFeatureFlags2 = Flags; + using FormatFeatureFlags2KHR = FormatFeatureFlags2; + + template <> + struct FlagTraits + { + using WrappedType = VkFormatFeatureFlagBits2; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR FormatFeatureFlags2 allFlags = + FormatFeatureFlagBits2::eSampledImage | FormatFeatureFlagBits2::eStorageImage | FormatFeatureFlagBits2::eStorageImageAtomic | + FormatFeatureFlagBits2::eUniformTexelBuffer | FormatFeatureFlagBits2::eStorageTexelBuffer | FormatFeatureFlagBits2::eStorageTexelBufferAtomic | + FormatFeatureFlagBits2::eVertexBuffer | FormatFeatureFlagBits2::eColorAttachment | FormatFeatureFlagBits2::eColorAttachmentBlend | + FormatFeatureFlagBits2::eDepthStencilAttachment | FormatFeatureFlagBits2::eBlitSrc | FormatFeatureFlagBits2::eBlitDst | + FormatFeatureFlagBits2::eSampledImageFilterLinear | FormatFeatureFlagBits2::eTransferSrc | FormatFeatureFlagBits2::eTransferDst | + FormatFeatureFlagBits2::eSampledImageFilterMinmax | FormatFeatureFlagBits2::eMidpointChromaSamples | + FormatFeatureFlagBits2::eSampledImageYcbcrConversionLinearFilter | FormatFeatureFlagBits2::eSampledImageYcbcrConversionSeparateReconstructionFilter | + FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicit | + FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable | FormatFeatureFlagBits2::eDisjoint | + FormatFeatureFlagBits2::eCositedChromaSamples | FormatFeatureFlagBits2::eStorageReadWithoutFormat | FormatFeatureFlagBits2::eStorageWriteWithoutFormat | + FormatFeatureFlagBits2::eSampledImageDepthComparison | FormatFeatureFlagBits2::eSampledImageFilterCubic | FormatFeatureFlagBits2::eHostImageTransfer | + FormatFeatureFlagBits2::eVideoDecodeOutputKHR | FormatFeatureFlagBits2::eVideoDecodeDpbKHR | + FormatFeatureFlagBits2::eAccelerationStructureVertexBufferKHR | FormatFeatureFlagBits2::eFragmentDensityMapEXT | + FormatFeatureFlagBits2::eFragmentShadingRateAttachmentKHR | FormatFeatureFlagBits2::eVideoEncodeInputKHR | FormatFeatureFlagBits2::eVideoEncodeDpbKHR | + FormatFeatureFlagBits2::eAccelerationStructureRadiusBufferNV | FormatFeatureFlagBits2::eLinearColorAttachmentNV | + FormatFeatureFlagBits2::eWeightImageQCOM | FormatFeatureFlagBits2::eWeightSampledImageQCOM | FormatFeatureFlagBits2::eBlockMatchingQCOM | + FormatFeatureFlagBits2::eBoxFilterSampledQCOM | FormatFeatureFlagBits2::eTensorShaderARM | FormatFeatureFlagBits2::eTensorImageAliasingARM | + FormatFeatureFlagBits2::eOpticalFlowImageNV | FormatFeatureFlagBits2::eOpticalFlowVectorNV | FormatFeatureFlagBits2::eOpticalFlowCostNV | + FormatFeatureFlagBits2::eTensorDataGraphARM | FormatFeatureFlagBits2::eCopyImageIndirectDstKHR | + FormatFeatureFlagBits2::eVideoEncodeQuantizationDeltaMapKHR | FormatFeatureFlagBits2::eVideoEncodeEmphasisMapKHR | + FormatFeatureFlagBits2::eDepthCopyOnComputeQueueKHR | FormatFeatureFlagBits2::eDepthCopyOnTransferQueueKHR | + FormatFeatureFlagBits2::eStencilCopyOnComputeQueueKHR | FormatFeatureFlagBits2::eStencilCopyOnTransferQueueKHR; + }; + + // wrapper class for enum VkPipelineCreationFeedbackFlagBits, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackFlagBits.html + enum class PipelineCreationFeedbackFlagBits : VkPipelineCreationFeedbackFlags + { + eValid = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT, + eValidEXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT, + eApplicationPipelineCacheHit = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT, + eApplicationPipelineCacheHitEXT = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT, + eBasePipelineAcceleration = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT, + eBasePipelineAccelerationEXT = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT + }; + + using PipelineCreationFeedbackFlagBitsEXT = PipelineCreationFeedbackFlagBits; + + // wrapper using for bitmask VkPipelineCreationFeedbackFlags, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackFlags.html + using PipelineCreationFeedbackFlags = Flags; + using PipelineCreationFeedbackFlagsEXT = PipelineCreationFeedbackFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkPipelineCreationFeedbackFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineCreationFeedbackFlags allFlags = PipelineCreationFeedbackFlagBits::eValid | + PipelineCreationFeedbackFlagBits::eApplicationPipelineCacheHit | + PipelineCreationFeedbackFlagBits::eBasePipelineAcceleration; + }; + + // wrapper class for enum VkRenderingFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingFlagBits.html + enum class RenderingFlagBits : VkRenderingFlags + { + eContentsSecondaryCommandBuffers = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT, + eContentsSecondaryCommandBuffersKHR = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR, + eSuspending = VK_RENDERING_SUSPENDING_BIT, + eSuspendingKHR = VK_RENDERING_SUSPENDING_BIT_KHR, + eResuming = VK_RENDERING_RESUMING_BIT, + eResumingKHR = VK_RENDERING_RESUMING_BIT_KHR, + eEnableLegacyDitheringEXT = VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT, + eContentsInlineKHR = VK_RENDERING_CONTENTS_INLINE_BIT_KHR, + eContentsInlineEXT = VK_RENDERING_CONTENTS_INLINE_BIT_EXT, + ePerLayerFragmentDensityVALVE = VK_RENDERING_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE, + eFragmentRegionEXT = VK_RENDERING_FRAGMENT_REGION_BIT_EXT, + eCustomResolveEXT = VK_RENDERING_CUSTOM_RESOLVE_BIT_EXT, + eLocalReadConcurrentAccessControlKHR = VK_RENDERING_LOCAL_READ_CONCURRENT_ACCESS_CONTROL_BIT_KHR + }; + + using RenderingFlagBitsKHR = RenderingFlagBits; + + // wrapper using for bitmask VkRenderingFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingFlags.html + using RenderingFlags = Flags; + using RenderingFlagsKHR = RenderingFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkRenderingFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR RenderingFlags allFlags = + RenderingFlagBits::eContentsSecondaryCommandBuffers | RenderingFlagBits::eSuspending | RenderingFlagBits::eResuming | + RenderingFlagBits::eEnableLegacyDitheringEXT | RenderingFlagBits::eContentsInlineKHR | RenderingFlagBits::ePerLayerFragmentDensityVALVE | + RenderingFlagBits::eFragmentRegionEXT | RenderingFlagBits::eCustomResolveEXT | RenderingFlagBits::eLocalReadConcurrentAccessControlKHR; + }; + + //=== VK_VERSION_1_4 === + + // wrapper class for enum VkPipelineRobustnessBufferBehavior, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRobustnessBufferBehavior.html + enum class PipelineRobustnessBufferBehavior + { + eDeviceDefault = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT, + eDeviceDefaultEXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT, + eDisabled = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED, + eDisabledEXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT, + eRobustBufferAccess = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS, + eRobustBufferAccessEXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT, + eRobustBufferAccess2 = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2, + eRobustBufferAccess2EXT = VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT + }; + + using PipelineRobustnessBufferBehaviorEXT = PipelineRobustnessBufferBehavior; + + // wrapper class for enum VkPipelineRobustnessImageBehavior, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRobustnessImageBehavior.html + enum class PipelineRobustnessImageBehavior + { + eDeviceDefault = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT, + eDeviceDefaultEXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT, + eDisabled = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED, + eDisabledEXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT, + eRobustImageAccess = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS, + eRobustImageAccessEXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT, + eRobustImageAccess2 = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2, + eRobustImageAccess2EXT = VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT + }; + + using PipelineRobustnessImageBehaviorEXT = PipelineRobustnessImageBehavior; + + // wrapper class for enum VkQueueGlobalPriority, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueGlobalPriority.html + enum class QueueGlobalPriority + { + eLow = VK_QUEUE_GLOBAL_PRIORITY_LOW, + eLowEXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT, + eLowKHR = VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR, + eMedium = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM, + eMediumEXT = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT, + eMediumKHR = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR, + eHigh = VK_QUEUE_GLOBAL_PRIORITY_HIGH, + eHighEXT = VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT, + eHighKHR = VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR, + eRealtime = VK_QUEUE_GLOBAL_PRIORITY_REALTIME, + eRealtimeEXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT, + eRealtimeKHR = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR + }; + + using QueueGlobalPriorityEXT = QueueGlobalPriority; + using QueueGlobalPriorityKHR = QueueGlobalPriority; + + // wrapper class for enum VkMemoryUnmapFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryUnmapFlagBits.html + enum class MemoryUnmapFlagBits : VkMemoryUnmapFlags + { + eReserveEXT = VK_MEMORY_UNMAP_RESERVE_BIT_EXT + }; + + using MemoryUnmapFlagBitsKHR = MemoryUnmapFlagBits; + + // wrapper using for bitmask VkMemoryUnmapFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryUnmapFlags.html + using MemoryUnmapFlags = Flags; + using MemoryUnmapFlagsKHR = MemoryUnmapFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkMemoryUnmapFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR MemoryUnmapFlags allFlags = MemoryUnmapFlagBits::eReserveEXT; + }; + + // wrapper class for enum VkBufferUsageFlagBits2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferUsageFlagBits2.html + enum class BufferUsageFlagBits2 : VkBufferUsageFlags2 + { + eTransferSrc = VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT, + eTransferSrcKHR = VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR, + eTransferDst = VK_BUFFER_USAGE_2_TRANSFER_DST_BIT, + eTransferDstKHR = VK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR, + eUniformTexelBuffer = VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT, + eUniformTexelBufferKHR = VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR, + eStorageTexelBuffer = VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT, + eStorageTexelBufferKHR = VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR, + eUniformBuffer = VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT, + eUniformBufferKHR = VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR, + eStorageBuffer = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT, + eStorageBufferKHR = VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR, + eIndexBuffer = VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT, + eIndexBufferKHR = VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR, + eVertexBuffer = VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT, + eVertexBufferKHR = VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR, + eIndirectBuffer = VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT, + eIndirectBufferKHR = VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR, + eShaderDeviceAddress = VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT, + eShaderDeviceAddressKHR = VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eExecutionGraphScratchAMDX = VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eDescriptorHeapEXT = VK_BUFFER_USAGE_2_DESCRIPTOR_HEAP_BIT_EXT, + eConditionalRenderingEXT = VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT, + eShaderBindingTableKHR = VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR, + eRayTracingNV = VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV, + eTransformFeedbackBufferEXT = VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT, + eTransformFeedbackCounterBufferEXT = VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, + eVideoDecodeSrcKHR = VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR, + eVideoDecodeDstKHR = VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR, + eVideoEncodeDstKHR = VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR, + eVideoEncodeSrcKHR = VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR, + eAccelerationStructureBuildInputReadOnlyKHR = VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR, + eAccelerationStructureStorageKHR = VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR, + eSamplerDescriptorBufferEXT = VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT, + eResourceDescriptorBufferEXT = VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT, + ePushDescriptorsDescriptorBufferEXT = VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT, + eMicromapBuildInputReadOnlyEXT = VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT, + eMicromapStorageEXT = VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eCompressedDataDgf1AMDX = VK_BUFFER_USAGE_2_COMPRESSED_DATA_DGF1_BIT_AMDX, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eDataGraphForeignDescriptorARM = VK_BUFFER_USAGE_2_DATA_GRAPH_FOREIGN_DESCRIPTOR_BIT_ARM, + eTileMemoryQCOM = VK_BUFFER_USAGE_2_TILE_MEMORY_BIT_QCOM, + eMemoryDecompressionEXT = VK_BUFFER_USAGE_2_MEMORY_DECOMPRESSION_BIT_EXT, + ePreprocessBufferEXT = VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT + }; + + using BufferUsageFlagBits2KHR = BufferUsageFlagBits2; + + // wrapper using for bitmask VkBufferUsageFlags2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferUsageFlags2.html + using BufferUsageFlags2 = Flags; + using BufferUsageFlags2KHR = BufferUsageFlags2; + + template <> + struct FlagTraits + { + using WrappedType = VkBufferUsageFlagBits2; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR BufferUsageFlags2 allFlags = + BufferUsageFlagBits2::eTransferSrc | BufferUsageFlagBits2::eTransferDst | BufferUsageFlagBits2::eUniformTexelBuffer | + BufferUsageFlagBits2::eStorageTexelBuffer | BufferUsageFlagBits2::eUniformBuffer | BufferUsageFlagBits2::eStorageBuffer | + BufferUsageFlagBits2::eIndexBuffer | BufferUsageFlagBits2::eVertexBuffer | BufferUsageFlagBits2::eIndirectBuffer | + BufferUsageFlagBits2::eShaderDeviceAddress +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | BufferUsageFlagBits2::eExecutionGraphScratchAMDX +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | BufferUsageFlagBits2::eDescriptorHeapEXT | BufferUsageFlagBits2::eConditionalRenderingEXT | BufferUsageFlagBits2::eShaderBindingTableKHR | + BufferUsageFlagBits2::eTransformFeedbackBufferEXT | BufferUsageFlagBits2::eTransformFeedbackCounterBufferEXT | BufferUsageFlagBits2::eVideoDecodeSrcKHR | + BufferUsageFlagBits2::eVideoDecodeDstKHR | BufferUsageFlagBits2::eVideoEncodeDstKHR | BufferUsageFlagBits2::eVideoEncodeSrcKHR | + BufferUsageFlagBits2::eAccelerationStructureBuildInputReadOnlyKHR | BufferUsageFlagBits2::eAccelerationStructureStorageKHR | + BufferUsageFlagBits2::eSamplerDescriptorBufferEXT | BufferUsageFlagBits2::eResourceDescriptorBufferEXT | + BufferUsageFlagBits2::ePushDescriptorsDescriptorBufferEXT | BufferUsageFlagBits2::eMicromapBuildInputReadOnlyEXT | + BufferUsageFlagBits2::eMicromapStorageEXT +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | BufferUsageFlagBits2::eCompressedDataDgf1AMDX +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | BufferUsageFlagBits2::eDataGraphForeignDescriptorARM | BufferUsageFlagBits2::eTileMemoryQCOM | BufferUsageFlagBits2::eMemoryDecompressionEXT | + BufferUsageFlagBits2::ePreprocessBufferEXT; + }; + + // wrapper class for enum VkHostImageCopyFlagBits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkHostImageCopyFlagBits.html + enum class HostImageCopyFlagBits : VkHostImageCopyFlags + { + eMemcpy = VK_HOST_IMAGE_COPY_MEMCPY_BIT, + eMemcpyEXT = VK_HOST_IMAGE_COPY_MEMCPY_BIT_EXT + }; + + using HostImageCopyFlagBitsEXT = HostImageCopyFlagBits; + + // wrapper using for bitmask VkHostImageCopyFlags, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkHostImageCopyFlags.html + using HostImageCopyFlags = Flags; + using HostImageCopyFlagsEXT = HostImageCopyFlags; + + template <> + struct FlagTraits + { + using WrappedType = VkHostImageCopyFlagBits; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR HostImageCopyFlags allFlags = HostImageCopyFlagBits::eMemcpy; + }; + + // wrapper class for enum VkPipelineCreateFlagBits2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreateFlagBits2.html + enum class PipelineCreateFlagBits2 : VkPipelineCreateFlags2 + { + eDisableOptimization = VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT, + eDisableOptimizationKHR = VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR, + eAllowDerivatives = VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT, + eAllowDerivativesKHR = VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR, + eDerivative = VK_PIPELINE_CREATE_2_DERIVATIVE_BIT, + eDerivativeKHR = VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR, + eViewIndexFromDeviceIndex = VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, + eViewIndexFromDeviceIndexKHR = VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR, + eDispatchBase = VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT, + eDispatchBaseKHR = VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR, + eFailOnPipelineCompileRequired = VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT, + eFailOnPipelineCompileRequiredKHR = VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR, + eEarlyReturnOnFailure = VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT, + eEarlyReturnOnFailureKHR = VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR, + eNoProtectedAccess = VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT, + eNoProtectedAccessEXT = VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT, + eProtectedAccessOnly = VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT, + eProtectedAccessOnlyEXT = VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eExecutionGraphAMDX = VK_PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eDescriptorHeapEXT = VK_PIPELINE_CREATE_2_DESCRIPTOR_HEAP_BIT_EXT, + eRayTracingAllowSpheresAndLinearSweptSpheresNV = VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_SPHERES_AND_LINEAR_SWEPT_SPHERES_BIT_NV, + eEnableLegacyDitheringEXT = VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, + eDeferCompileNV = VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV, + eCaptureStatisticsKHR = VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR, + eCaptureInternalRepresentationsKHR = VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, + eLinkTimeOptimizationEXT = VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT, + eRetainLinkTimeOptimizationInfoEXT = VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT, + eLibraryKHR = VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR, + eRayTracingSkipTrianglesKHR = VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR, + eRayTracingSkipBuiltInPrimitives = VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES_BIT_KHR, + eRayTracingSkipBuiltInPrimitivesKHR = VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_BUILT_IN_PRIMITIVES_BIT_KHR, + eRayTracingSkipAabbsKHR = VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR, + eRayTracingNoNullAnyHitShadersKHR = VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, + eRayTracingNoNullClosestHitShadersKHR = VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, + eRayTracingNoNullMissShadersKHR = VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, + eRayTracingNoNullIntersectionShadersKHR = VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, + eRayTracingShaderGroupHandleCaptureReplayKHR = VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR, + eIndirectBindableNV = VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV, + eRayTracingAllowMotionNV = VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV, + eRenderingFragmentShadingRateAttachmentKHR = VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, + eRenderingFragmentDensityMapAttachmentEXT = VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, + eRayTracingOpacityMicromapEXT = VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT, + eColorAttachmentFeedbackLoopEXT = VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT, + eDepthStencilAttachmentFeedbackLoopEXT = VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eRayTracingDisplacementMicromapNV = VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eDescriptorBufferEXT = VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT, + eDisallowOpacityMicromapARM = VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM, + eInstrumentShadersARM = VK_PIPELINE_CREATE_2_INSTRUMENT_SHADERS_BIT_ARM, + eCaptureDataKHR = VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR, + eIndirectBindableEXT = VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT, + ePerLayerFragmentDensityVALVE = VK_PIPELINE_CREATE_2_PER_LAYER_FRAGMENT_DENSITY_BIT_VALVE, + e64BitIndexingEXT = VK_PIPELINE_CREATE_2_64_BIT_INDEXING_BIT_EXT + }; + + using PipelineCreateFlagBits2KHR = PipelineCreateFlagBits2; + + // wrapper using for bitmask VkPipelineCreateFlags2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreateFlags2.html + using PipelineCreateFlags2 = Flags; + using PipelineCreateFlags2KHR = PipelineCreateFlags2; + + template <> + struct FlagTraits + { + using WrappedType = VkPipelineCreateFlagBits2; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineCreateFlags2 allFlags = + PipelineCreateFlagBits2::eDisableOptimization | PipelineCreateFlagBits2::eAllowDerivatives | PipelineCreateFlagBits2::eDerivative | + PipelineCreateFlagBits2::eViewIndexFromDeviceIndex | PipelineCreateFlagBits2::eDispatchBase | PipelineCreateFlagBits2::eFailOnPipelineCompileRequired | + PipelineCreateFlagBits2::eEarlyReturnOnFailure | PipelineCreateFlagBits2::eNoProtectedAccess | PipelineCreateFlagBits2::eProtectedAccessOnly +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | PipelineCreateFlagBits2::eExecutionGraphAMDX +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | PipelineCreateFlagBits2::eDescriptorHeapEXT | PipelineCreateFlagBits2::eRayTracingAllowSpheresAndLinearSweptSpheresNV | + PipelineCreateFlagBits2::eEnableLegacyDitheringEXT | PipelineCreateFlagBits2::eDeferCompileNV | PipelineCreateFlagBits2::eCaptureStatisticsKHR | + PipelineCreateFlagBits2::eCaptureInternalRepresentationsKHR | PipelineCreateFlagBits2::eLinkTimeOptimizationEXT | + PipelineCreateFlagBits2::eRetainLinkTimeOptimizationInfoEXT | PipelineCreateFlagBits2::eLibraryKHR | + PipelineCreateFlagBits2::eRayTracingSkipTrianglesKHR | PipelineCreateFlagBits2::eRayTracingSkipAabbsKHR | + PipelineCreateFlagBits2::eRayTracingNoNullAnyHitShadersKHR | PipelineCreateFlagBits2::eRayTracingNoNullClosestHitShadersKHR | + PipelineCreateFlagBits2::eRayTracingNoNullMissShadersKHR | PipelineCreateFlagBits2::eRayTracingNoNullIntersectionShadersKHR | + PipelineCreateFlagBits2::eRayTracingShaderGroupHandleCaptureReplayKHR | PipelineCreateFlagBits2::eIndirectBindableNV | + PipelineCreateFlagBits2::eRayTracingAllowMotionNV | PipelineCreateFlagBits2::eRenderingFragmentShadingRateAttachmentKHR | + PipelineCreateFlagBits2::eRenderingFragmentDensityMapAttachmentEXT | PipelineCreateFlagBits2::eRayTracingOpacityMicromapEXT | + PipelineCreateFlagBits2::eColorAttachmentFeedbackLoopEXT | PipelineCreateFlagBits2::eDepthStencilAttachmentFeedbackLoopEXT +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | PipelineCreateFlagBits2::eRayTracingDisplacementMicromapNV +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | PipelineCreateFlagBits2::eDescriptorBufferEXT | PipelineCreateFlagBits2::eDisallowOpacityMicromapARM | PipelineCreateFlagBits2::eInstrumentShadersARM | + PipelineCreateFlagBits2::eCaptureDataKHR | PipelineCreateFlagBits2::eIndirectBindableEXT | PipelineCreateFlagBits2::ePerLayerFragmentDensityVALVE | + PipelineCreateFlagBits2::e64BitIndexingEXT; + }; + + // wrapper class for enum VkLineRasterizationMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLineRasterizationMode.html + enum class LineRasterizationMode + { + eDefault = VK_LINE_RASTERIZATION_MODE_DEFAULT, + eDefaultEXT = VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT, + eDefaultKHR = VK_LINE_RASTERIZATION_MODE_DEFAULT_KHR, + eRectangular = VK_LINE_RASTERIZATION_MODE_RECTANGULAR, + eRectangularEXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT, + eRectangularKHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_KHR, + eBresenham = VK_LINE_RASTERIZATION_MODE_BRESENHAM, + eBresenhamEXT = VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT, + eBresenhamKHR = VK_LINE_RASTERIZATION_MODE_BRESENHAM_KHR, + eRectangularSmooth = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH, + eRectangularSmoothEXT = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT, + eRectangularSmoothKHR = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_KHR + }; + + using LineRasterizationModeEXT = LineRasterizationMode; + using LineRasterizationModeKHR = LineRasterizationMode; + + //=== VK_KHR_surface === + + // wrapper class for enum VkSurfaceTransformFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceTransformFlagBitsKHR.html + enum class SurfaceTransformFlagBitsKHR : VkSurfaceTransformFlagsKHR + { + eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, + eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR, + eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR, + eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR, + eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR, + eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR, + eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, + eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, + eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR + }; + + // wrapper using for bitmask VkSurfaceTransformFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceTransformFlagsKHR.html + using SurfaceTransformFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkSurfaceTransformFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SurfaceTransformFlagsKHR allFlags = + SurfaceTransformFlagBitsKHR::eIdentity | SurfaceTransformFlagBitsKHR::eRotate90 | SurfaceTransformFlagBitsKHR::eRotate180 | + SurfaceTransformFlagBitsKHR::eRotate270 | SurfaceTransformFlagBitsKHR::eHorizontalMirror | SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90 | + SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180 | SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270 | SurfaceTransformFlagBitsKHR::eInherit; + }; + + // wrapper class for enum VkPresentModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentModeKHR.html + enum class PresentModeKHR + { + eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR, + eMailbox = VK_PRESENT_MODE_MAILBOX_KHR, + eFifo = VK_PRESENT_MODE_FIFO_KHR, + eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR, + eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR, + eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR, + eFifoLatestReady = VK_PRESENT_MODE_FIFO_LATEST_READY_KHR, + eFifoLatestReadyEXT = VK_PRESENT_MODE_FIFO_LATEST_READY_EXT + }; + + // wrapper class for enum VkColorSpaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkColorSpaceKHR.html + enum class ColorSpaceKHR + { + eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, + eVkColorspaceSrgbNonlinear = VK_COLORSPACE_SRGB_NONLINEAR_KHR, + eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT, + eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT, + eDisplayP3LinearEXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT, + eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT, + eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT, + eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT, + eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT, + eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT, + eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT, + eDolbyvisionEXT VULKAN_HPP_DEPRECATED_17( "eDolbyvisionEXT is deprecated, but no reason was given in the API XML" ) = VK_COLOR_SPACE_DOLBYVISION_EXT, + eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT, + eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT, + eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT, + ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT, + eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT, + eDisplayNativeAMD = VK_COLOR_SPACE_DISPLAY_NATIVE_AMD + }; + + // wrapper class for enum VkCompositeAlphaFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCompositeAlphaFlagBitsKHR.html + enum class CompositeAlphaFlagBitsKHR : VkCompositeAlphaFlagsKHR + { + eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR, + ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR, + ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR, + eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR + }; + + // wrapper using for bitmask VkCompositeAlphaFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCompositeAlphaFlagsKHR.html + using CompositeAlphaFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkCompositeAlphaFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR CompositeAlphaFlagsKHR allFlags = CompositeAlphaFlagBitsKHR::eOpaque | CompositeAlphaFlagBitsKHR::ePreMultiplied | + CompositeAlphaFlagBitsKHR::ePostMultiplied | CompositeAlphaFlagBitsKHR::eInherit; + }; + + //=== VK_KHR_swapchain === + + // wrapper class for enum VkSwapchainCreateFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainCreateFlagBitsKHR.html + enum class SwapchainCreateFlagBitsKHR : VkSwapchainCreateFlagsKHR + { + eSplitInstanceBindRegions = VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR, + eProtected = VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR, + eMutableFormat = VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR, + ePresentTimingEXT = VK_SWAPCHAIN_CREATE_PRESENT_TIMING_BIT_EXT, + ePresentId2 = VK_SWAPCHAIN_CREATE_PRESENT_ID_2_BIT_KHR, + ePresentWait2 = VK_SWAPCHAIN_CREATE_PRESENT_WAIT_2_BIT_KHR, + eDeferredMemoryAllocation = VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_KHR, + eDeferredMemoryAllocationEXT = VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT + }; + + // wrapper using for bitmask VkSwapchainCreateFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainCreateFlagsKHR.html + using SwapchainCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkSwapchainCreateFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SwapchainCreateFlagsKHR allFlags = + SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions | SwapchainCreateFlagBitsKHR::eProtected | SwapchainCreateFlagBitsKHR::eMutableFormat | + SwapchainCreateFlagBitsKHR::ePresentTimingEXT | SwapchainCreateFlagBitsKHR::ePresentId2 | SwapchainCreateFlagBitsKHR::ePresentWait2 | + SwapchainCreateFlagBitsKHR::eDeferredMemoryAllocation; + }; + + // wrapper class for enum VkDeviceGroupPresentModeFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupPresentModeFlagBitsKHR.html + enum class DeviceGroupPresentModeFlagBitsKHR : VkDeviceGroupPresentModeFlagsKHR + { + eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR, + eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR, + eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR, + eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR + }; + + // wrapper using for bitmask VkDeviceGroupPresentModeFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupPresentModeFlagsKHR.html + using DeviceGroupPresentModeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDeviceGroupPresentModeFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DeviceGroupPresentModeFlagsKHR allFlags = + DeviceGroupPresentModeFlagBitsKHR::eLocal | DeviceGroupPresentModeFlagBitsKHR::eRemote | DeviceGroupPresentModeFlagBitsKHR::eSum | + DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice; + }; + + //=== VK_KHR_display === + + // wrapper class for enum VkDisplayPlaneAlphaFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPlaneAlphaFlagBitsKHR.html + enum class DisplayPlaneAlphaFlagBitsKHR : VkDisplayPlaneAlphaFlagsKHR + { + eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR, + eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR, + ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR, + ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR + }; + + // wrapper using for bitmask VkDisplayPlaneAlphaFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPlaneAlphaFlagsKHR.html + using DisplayPlaneAlphaFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDisplayPlaneAlphaFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DisplayPlaneAlphaFlagsKHR allFlags = DisplayPlaneAlphaFlagBitsKHR::eOpaque | DisplayPlaneAlphaFlagBitsKHR::eGlobal | + DisplayPlaneAlphaFlagBitsKHR::ePerPixel | + DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied; + }; + + enum class DisplayModeCreateFlagBitsKHR : VkDisplayModeCreateFlagsKHR + { + }; + + // wrapper using for bitmask VkDisplayModeCreateFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayModeCreateFlagsKHR.html + using DisplayModeCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DisplayModeCreateFlagsKHR allFlags = {}; + }; + + enum class DisplaySurfaceCreateFlagBitsKHR : VkDisplaySurfaceCreateFlagsKHR + { + }; + + // wrapper using for bitmask VkDisplaySurfaceCreateFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplaySurfaceCreateFlagsKHR.html + using DisplaySurfaceCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DisplaySurfaceCreateFlagsKHR allFlags = {}; + }; + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + enum class XlibSurfaceCreateFlagBitsKHR : VkXlibSurfaceCreateFlagsKHR + { + }; + + // wrapper using for bitmask VkXlibSurfaceCreateFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkXlibSurfaceCreateFlagsKHR.html + using XlibSurfaceCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR XlibSurfaceCreateFlagsKHR allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + enum class XcbSurfaceCreateFlagBitsKHR : VkXcbSurfaceCreateFlagsKHR + { + }; + + // wrapper using for bitmask VkXcbSurfaceCreateFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkXcbSurfaceCreateFlagsKHR.html + using XcbSurfaceCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR XcbSurfaceCreateFlagsKHR allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + enum class WaylandSurfaceCreateFlagBitsKHR : VkWaylandSurfaceCreateFlagsKHR + { + }; + + // wrapper using for bitmask VkWaylandSurfaceCreateFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateFlagsKHR.html + using WaylandSurfaceCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR WaylandSurfaceCreateFlagsKHR allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + enum class AndroidSurfaceCreateFlagBitsKHR : VkAndroidSurfaceCreateFlagsKHR + { + }; + + // wrapper using for bitmask VkAndroidSurfaceCreateFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAndroidSurfaceCreateFlagsKHR.html + using AndroidSurfaceCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AndroidSurfaceCreateFlagsKHR allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + enum class Win32SurfaceCreateFlagBitsKHR : VkWin32SurfaceCreateFlagsKHR + { + }; + + // wrapper using for bitmask VkWin32SurfaceCreateFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkWin32SurfaceCreateFlagsKHR.html + using Win32SurfaceCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR Win32SurfaceCreateFlagsKHR allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + // wrapper class for enum VkDebugReportFlagBitsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugReportFlagBitsEXT.html + enum class DebugReportFlagBitsEXT : VkDebugReportFlagsEXT + { + eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT, + eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT, + ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT, + eError = VK_DEBUG_REPORT_ERROR_BIT_EXT, + eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT + }; + + // wrapper using for bitmask VkDebugReportFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugReportFlagsEXT.html + using DebugReportFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDebugReportFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportFlagsEXT allFlags = DebugReportFlagBitsEXT::eInformation | DebugReportFlagBitsEXT::eWarning | + DebugReportFlagBitsEXT::ePerformanceWarning | DebugReportFlagBitsEXT::eError | + DebugReportFlagBitsEXT::eDebug; + }; + + // wrapper class for enum VkDebugReportObjectTypeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugReportObjectTypeEXT.html + enum class DebugReportObjectTypeEXT + { + eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, + eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, + ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, + eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, + eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT, + eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT, + eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, + eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, + eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, + eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, + eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, + eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT, + eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT, + eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT, + eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT, + eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT, + ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT, + ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT, + eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, + ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, + eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT, + eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT, + eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, + eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, + eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, + eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT, + eSurfaceKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT, + eSwapchainKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT, + eDebugReportCallbackEXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT, + eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT, + eDisplayKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT, + eDisplayModeKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT, + eValidationCacheEXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT, + eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT, + eSamplerYcbcrConversion = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, + eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT, + eDescriptorUpdateTemplate = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, + eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT, + eCuModuleNVX = VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT, + eCuFunctionNVX = VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT, + eAccelerationStructureKHR = VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT, + eAccelerationStructureNV = VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eCudaModuleNV = VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_MODULE_NV_EXT, + eCudaFunctionNV = VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ +#if defined( VK_USE_PLATFORM_FUCHSIA ) + eBufferCollectionFUCHSIA = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + }; + + //=== VK_AMD_rasterization_order === + + // wrapper class for enum VkRasterizationOrderAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRasterizationOrderAMD.html + enum class RasterizationOrderAMD + { + eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD, + eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD + }; + + //=== VK_KHR_video_queue === + + // wrapper class for enum VkVideoCodecOperationFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCodecOperationFlagBitsKHR.html + enum class VideoCodecOperationFlagBitsKHR : VkVideoCodecOperationFlagsKHR + { + eNone = VK_VIDEO_CODEC_OPERATION_NONE_KHR, + eEncodeH264 = VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR, + eEncodeH265 = VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR, + eDecodeH264 = VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, + eDecodeH265 = VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, + eDecodeAv1 = VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, + eEncodeAv1 = VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR, + eDecodeVp9 = VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR + }; + + // wrapper using for bitmask VkVideoCodecOperationFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCodecOperationFlagsKHR.html + using VideoCodecOperationFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoCodecOperationFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoCodecOperationFlagsKHR allFlags = + VideoCodecOperationFlagBitsKHR::eNone | VideoCodecOperationFlagBitsKHR::eEncodeH264 | VideoCodecOperationFlagBitsKHR::eEncodeH265 | + VideoCodecOperationFlagBitsKHR::eDecodeH264 | VideoCodecOperationFlagBitsKHR::eDecodeH265 | VideoCodecOperationFlagBitsKHR::eDecodeAv1 | + VideoCodecOperationFlagBitsKHR::eEncodeAv1 | VideoCodecOperationFlagBitsKHR::eDecodeVp9; + }; + + // wrapper class for enum VkVideoChromaSubsamplingFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoChromaSubsamplingFlagBitsKHR.html + enum class VideoChromaSubsamplingFlagBitsKHR : VkVideoChromaSubsamplingFlagsKHR + { + eInvalid = VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR, + eMonochrome = VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR, + e420 = VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR, + e422 = VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR, + e444 = VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR + }; + + // wrapper using for bitmask VkVideoChromaSubsamplingFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoChromaSubsamplingFlagsKHR.html + using VideoChromaSubsamplingFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoChromaSubsamplingFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoChromaSubsamplingFlagsKHR allFlags = + VideoChromaSubsamplingFlagBitsKHR::eInvalid | VideoChromaSubsamplingFlagBitsKHR::eMonochrome | VideoChromaSubsamplingFlagBitsKHR::e420 | + VideoChromaSubsamplingFlagBitsKHR::e422 | VideoChromaSubsamplingFlagBitsKHR::e444; + }; + + // wrapper class for enum VkVideoComponentBitDepthFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoComponentBitDepthFlagBitsKHR.html + enum class VideoComponentBitDepthFlagBitsKHR : VkVideoComponentBitDepthFlagsKHR + { + eInvalid = VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR, + e8 = VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR, + e10 = VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR, + e12 = VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR + }; + + // wrapper using for bitmask VkVideoComponentBitDepthFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoComponentBitDepthFlagsKHR.html + using VideoComponentBitDepthFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoComponentBitDepthFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoComponentBitDepthFlagsKHR allFlags = + VideoComponentBitDepthFlagBitsKHR::eInvalid | VideoComponentBitDepthFlagBitsKHR::e8 | VideoComponentBitDepthFlagBitsKHR::e10 | + VideoComponentBitDepthFlagBitsKHR::e12; + }; + + // wrapper class for enum VkVideoCapabilityFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCapabilityFlagBitsKHR.html + enum class VideoCapabilityFlagBitsKHR : VkVideoCapabilityFlagsKHR + { + eProtectedContent = VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR, + eSeparateReferenceImages = VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR + }; + + // wrapper using for bitmask VkVideoCapabilityFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCapabilityFlagsKHR.html + using VideoCapabilityFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoCapabilityFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoCapabilityFlagsKHR allFlags = + VideoCapabilityFlagBitsKHR::eProtectedContent | VideoCapabilityFlagBitsKHR::eSeparateReferenceImages; + }; + + // wrapper class for enum VkVideoSessionCreateFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionCreateFlagBitsKHR.html + enum class VideoSessionCreateFlagBitsKHR : VkVideoSessionCreateFlagsKHR + { + eProtectedContent = VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR, + eAllowEncodeParameterOptimizations = VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR, + eInlineQueries = VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR, + eAllowEncodeQuantizationDeltaMap = VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR, + eAllowEncodeEmphasisMap = VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR, + eInlineSessionParameters = VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR + }; + + // wrapper using for bitmask VkVideoSessionCreateFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionCreateFlagsKHR.html + using VideoSessionCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoSessionCreateFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoSessionCreateFlagsKHR allFlags = + VideoSessionCreateFlagBitsKHR::eProtectedContent | VideoSessionCreateFlagBitsKHR::eAllowEncodeParameterOptimizations | + VideoSessionCreateFlagBitsKHR::eInlineQueries | VideoSessionCreateFlagBitsKHR::eAllowEncodeQuantizationDeltaMap | + VideoSessionCreateFlagBitsKHR::eAllowEncodeEmphasisMap | VideoSessionCreateFlagBitsKHR::eInlineSessionParameters; + }; + + // wrapper class for enum VkVideoCodingControlFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCodingControlFlagBitsKHR.html + enum class VideoCodingControlFlagBitsKHR : VkVideoCodingControlFlagsKHR + { + eReset = VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR, + eEncodeRateControl = VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR, + eEncodeQualityLevel = VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR + }; + + // wrapper using for bitmask VkVideoCodingControlFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCodingControlFlagsKHR.html + using VideoCodingControlFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoCodingControlFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoCodingControlFlagsKHR allFlags = + VideoCodingControlFlagBitsKHR::eReset | VideoCodingControlFlagBitsKHR::eEncodeRateControl | VideoCodingControlFlagBitsKHR::eEncodeQualityLevel; + }; + + // wrapper class for enum VkQueryResultStatusKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryResultStatusKHR.html + enum class QueryResultStatusKHR + { + eError = VK_QUERY_RESULT_STATUS_ERROR_KHR, + eNotReady = VK_QUERY_RESULT_STATUS_NOT_READY_KHR, + eComplete = VK_QUERY_RESULT_STATUS_COMPLETE_KHR, + eInsufficientBitstreamBufferRange = VK_QUERY_RESULT_STATUS_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR + }; + + // wrapper class for enum VkVideoSessionParametersCreateFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateFlagBitsKHR.html + enum class VideoSessionParametersCreateFlagBitsKHR : VkVideoSessionParametersCreateFlagsKHR + { + eQuantizationMapCompatible = VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR + }; + + // wrapper using for bitmask VkVideoSessionParametersCreateFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateFlagsKHR.html + using VideoSessionParametersCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoSessionParametersCreateFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoSessionParametersCreateFlagsKHR allFlags = VideoSessionParametersCreateFlagBitsKHR::eQuantizationMapCompatible; + }; + + enum class VideoBeginCodingFlagBitsKHR : VkVideoBeginCodingFlagsKHR + { + }; + + // wrapper using for bitmask VkVideoBeginCodingFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoBeginCodingFlagsKHR.html + using VideoBeginCodingFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoBeginCodingFlagsKHR allFlags = {}; + }; + + enum class VideoEndCodingFlagBitsKHR : VkVideoEndCodingFlagsKHR + { + }; + + // wrapper using for bitmask VkVideoEndCodingFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEndCodingFlagsKHR.html + using VideoEndCodingFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEndCodingFlagsKHR allFlags = {}; + }; + + //=== VK_KHR_video_decode_queue === + + // wrapper class for enum VkVideoDecodeCapabilityFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeCapabilityFlagBitsKHR.html + enum class VideoDecodeCapabilityFlagBitsKHR : VkVideoDecodeCapabilityFlagsKHR + { + eDpbAndOutputCoincide = VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR, + eDpbAndOutputDistinct = VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR + }; + + // wrapper using for bitmask VkVideoDecodeCapabilityFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeCapabilityFlagsKHR.html + using VideoDecodeCapabilityFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoDecodeCapabilityFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoDecodeCapabilityFlagsKHR allFlags = + VideoDecodeCapabilityFlagBitsKHR::eDpbAndOutputCoincide | VideoDecodeCapabilityFlagBitsKHR::eDpbAndOutputDistinct; + }; + + // wrapper class for enum VkVideoDecodeUsageFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeUsageFlagBitsKHR.html + enum class VideoDecodeUsageFlagBitsKHR : VkVideoDecodeUsageFlagsKHR + { + eDefault = VK_VIDEO_DECODE_USAGE_DEFAULT_KHR, + eTranscoding = VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR, + eOffline = VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR, + eStreaming = VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR + }; + + // wrapper using for bitmask VkVideoDecodeUsageFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeUsageFlagsKHR.html + using VideoDecodeUsageFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoDecodeUsageFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoDecodeUsageFlagsKHR allFlags = VideoDecodeUsageFlagBitsKHR::eDefault | VideoDecodeUsageFlagBitsKHR::eTranscoding | + VideoDecodeUsageFlagBitsKHR::eOffline | VideoDecodeUsageFlagBitsKHR::eStreaming; + }; + + enum class VideoDecodeFlagBitsKHR : VkVideoDecodeFlagsKHR + { + }; + + // wrapper using for bitmask VkVideoDecodeFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeFlagsKHR.html + using VideoDecodeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoDecodeFlagsKHR allFlags = {}; + }; + + //=== VK_EXT_transform_feedback === + + enum class PipelineRasterizationStateStreamCreateFlagBitsEXT : VkPipelineRasterizationStateStreamCreateFlagsEXT + { + }; + + // wrapper using for bitmask VkPipelineRasterizationStateStreamCreateFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationStateStreamCreateFlagsEXT.html + using PipelineRasterizationStateStreamCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineRasterizationStateStreamCreateFlagsEXT allFlags = {}; + }; + + //=== VK_KHR_video_encode_h264 === + + // wrapper class for enum VkVideoEncodeH264CapabilityFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilityFlagBitsKHR.html + enum class VideoEncodeH264CapabilityFlagBitsKHR : VkVideoEncodeH264CapabilityFlagsKHR + { + eHrdCompliance = VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR, + ePredictionWeightTableGenerated = VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR, + eRowUnalignedSlice = VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR, + eDifferentSliceType = VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR, + eBFrameInL0List = VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR, + eBFrameInL1List = VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR, + ePerPictureTypeMinMaxQp = VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR, + ePerSliceConstantQp = VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR, + eGeneratePrefixNalu = VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR, + eBPictureIntraRefresh = VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR, + eMbQpDiffWraparound = VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeH264CapabilityFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilityFlagsKHR.html + using VideoEncodeH264CapabilityFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeH264CapabilityFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeH264CapabilityFlagsKHR allFlags = + VideoEncodeH264CapabilityFlagBitsKHR::eHrdCompliance | VideoEncodeH264CapabilityFlagBitsKHR::ePredictionWeightTableGenerated | + VideoEncodeH264CapabilityFlagBitsKHR::eRowUnalignedSlice | VideoEncodeH264CapabilityFlagBitsKHR::eDifferentSliceType | + VideoEncodeH264CapabilityFlagBitsKHR::eBFrameInL0List | VideoEncodeH264CapabilityFlagBitsKHR::eBFrameInL1List | + VideoEncodeH264CapabilityFlagBitsKHR::ePerPictureTypeMinMaxQp | VideoEncodeH264CapabilityFlagBitsKHR::ePerSliceConstantQp | + VideoEncodeH264CapabilityFlagBitsKHR::eGeneratePrefixNalu | VideoEncodeH264CapabilityFlagBitsKHR::eBPictureIntraRefresh | + VideoEncodeH264CapabilityFlagBitsKHR::eMbQpDiffWraparound; + }; + + // wrapper class for enum VkVideoEncodeH264StdFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264StdFlagBitsKHR.html + enum class VideoEncodeH264StdFlagBitsKHR : VkVideoEncodeH264StdFlagsKHR + { + eSeparateColorPlaneFlagSet = VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR, + eQpprimeYZeroTransformBypassFlagSet = VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR, + eScalingMatrixPresentFlagSet = VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR, + eChromaQpIndexOffset = VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR, + eSecondChromaQpIndexOffset = VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR, + ePicInitQpMinus26 = VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR, + eWeightedPredFlagSet = VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR, + eWeightedBipredIdcExplicit = VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR, + eWeightedBipredIdcImplicit = VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR, + eTransform8X8ModeFlagSet = VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR, + eDirectSpatialMvPredFlagUnset = VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR, + eEntropyCodingModeFlagUnset = VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR, + eEntropyCodingModeFlagSet = VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR, + eDirect8X8InferenceFlagUnset = VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR, + eConstrainedIntraPredFlagSet = VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR, + eDeblockingFilterDisabled = VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR, + eDeblockingFilterEnabled = VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR, + eDeblockingFilterPartial = VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR, + eSliceQpDelta = VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR, + eDifferentSliceQpDelta = VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeH264StdFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264StdFlagsKHR.html + using VideoEncodeH264StdFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeH264StdFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeH264StdFlagsKHR allFlags = + VideoEncodeH264StdFlagBitsKHR::eSeparateColorPlaneFlagSet | VideoEncodeH264StdFlagBitsKHR::eQpprimeYZeroTransformBypassFlagSet | + VideoEncodeH264StdFlagBitsKHR::eScalingMatrixPresentFlagSet | VideoEncodeH264StdFlagBitsKHR::eChromaQpIndexOffset | + VideoEncodeH264StdFlagBitsKHR::eSecondChromaQpIndexOffset | VideoEncodeH264StdFlagBitsKHR::ePicInitQpMinus26 | + VideoEncodeH264StdFlagBitsKHR::eWeightedPredFlagSet | VideoEncodeH264StdFlagBitsKHR::eWeightedBipredIdcExplicit | + VideoEncodeH264StdFlagBitsKHR::eWeightedBipredIdcImplicit | VideoEncodeH264StdFlagBitsKHR::eTransform8X8ModeFlagSet | + VideoEncodeH264StdFlagBitsKHR::eDirectSpatialMvPredFlagUnset | VideoEncodeH264StdFlagBitsKHR::eEntropyCodingModeFlagUnset | + VideoEncodeH264StdFlagBitsKHR::eEntropyCodingModeFlagSet | VideoEncodeH264StdFlagBitsKHR::eDirect8X8InferenceFlagUnset | + VideoEncodeH264StdFlagBitsKHR::eConstrainedIntraPredFlagSet | VideoEncodeH264StdFlagBitsKHR::eDeblockingFilterDisabled | + VideoEncodeH264StdFlagBitsKHR::eDeblockingFilterEnabled | VideoEncodeH264StdFlagBitsKHR::eDeblockingFilterPartial | + VideoEncodeH264StdFlagBitsKHR::eSliceQpDelta | VideoEncodeH264StdFlagBitsKHR::eDifferentSliceQpDelta; + }; + + // wrapper class for enum VkVideoEncodeH264RateControlFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlFlagBitsKHR.html + enum class VideoEncodeH264RateControlFlagBitsKHR : VkVideoEncodeH264RateControlFlagsKHR + { + eAttemptHrdCompliance = VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR, + eRegularGop = VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR, + eReferencePatternFlat = VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR, + eReferencePatternDyadic = VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR, + eTemporalLayerPatternDyadic = VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeH264RateControlFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlFlagsKHR.html + using VideoEncodeH264RateControlFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeH264RateControlFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeH264RateControlFlagsKHR allFlags = + VideoEncodeH264RateControlFlagBitsKHR::eAttemptHrdCompliance | VideoEncodeH264RateControlFlagBitsKHR::eRegularGop | + VideoEncodeH264RateControlFlagBitsKHR::eReferencePatternFlat | VideoEncodeH264RateControlFlagBitsKHR::eReferencePatternDyadic | + VideoEncodeH264RateControlFlagBitsKHR::eTemporalLayerPatternDyadic; + }; + + //=== VK_KHR_video_encode_h265 === + + // wrapper class for enum VkVideoEncodeH265CapabilityFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilityFlagBitsKHR.html + enum class VideoEncodeH265CapabilityFlagBitsKHR : VkVideoEncodeH265CapabilityFlagsKHR + { + eHrdCompliance = VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR, + ePredictionWeightTableGenerated = VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR, + eRowUnalignedSliceSegment = VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR, + eDifferentSliceSegmentType = VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR, + eBFrameInL0List = VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR, + eBFrameInL1List = VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR, + ePerPictureTypeMinMaxQp = VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR, + ePerSliceSegmentConstantQp = VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR, + eMultipleTilesPerSliceSegment = VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR, + eMultipleSliceSegmentsPerTile = VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR, + eBPictureIntraRefresh = VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR, + eCuQpDiffWraparound = VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeH265CapabilityFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilityFlagsKHR.html + using VideoEncodeH265CapabilityFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeH265CapabilityFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeH265CapabilityFlagsKHR allFlags = + VideoEncodeH265CapabilityFlagBitsKHR::eHrdCompliance | VideoEncodeH265CapabilityFlagBitsKHR::ePredictionWeightTableGenerated | + VideoEncodeH265CapabilityFlagBitsKHR::eRowUnalignedSliceSegment | VideoEncodeH265CapabilityFlagBitsKHR::eDifferentSliceSegmentType | + VideoEncodeH265CapabilityFlagBitsKHR::eBFrameInL0List | VideoEncodeH265CapabilityFlagBitsKHR::eBFrameInL1List | + VideoEncodeH265CapabilityFlagBitsKHR::ePerPictureTypeMinMaxQp | VideoEncodeH265CapabilityFlagBitsKHR::ePerSliceSegmentConstantQp | + VideoEncodeH265CapabilityFlagBitsKHR::eMultipleTilesPerSliceSegment | VideoEncodeH265CapabilityFlagBitsKHR::eMultipleSliceSegmentsPerTile | + VideoEncodeH265CapabilityFlagBitsKHR::eBPictureIntraRefresh | VideoEncodeH265CapabilityFlagBitsKHR::eCuQpDiffWraparound; + }; + + // wrapper class for enum VkVideoEncodeH265StdFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265StdFlagBitsKHR.html + enum class VideoEncodeH265StdFlagBitsKHR : VkVideoEncodeH265StdFlagsKHR + { + eSeparateColorPlaneFlagSet = VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR, + eSampleAdaptiveOffsetEnabledFlagSet = VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR, + eScalingListDataPresentFlagSet = VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR, + ePcmEnabledFlagSet = VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR, + eSpsTemporalMvpEnabledFlagSet = VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR, + eInitQpMinus26 = VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR, + eWeightedPredFlagSet = VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR, + eWeightedBipredFlagSet = VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR, + eLog2ParallelMergeLevelMinus2 = VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR, + eSignDataHidingEnabledFlagSet = VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR, + eTransformSkipEnabledFlagSet = VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR, + eTransformSkipEnabledFlagUnset = VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR, + ePpsSliceChromaQpOffsetsPresentFlagSet = VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR, + eTransquantBypassEnabledFlagSet = VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR, + eConstrainedIntraPredFlagSet = VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR, + eEntropyCodingSyncEnabledFlagSet = VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR, + eDeblockingFilterOverrideEnabledFlagSet = VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR, + eDependentSliceSegmentsEnabledFlagSet = VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR, + eDependentSliceSegmentFlagSet = VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR, + eSliceQpDelta = VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR, + eDifferentSliceQpDelta = VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeH265StdFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265StdFlagsKHR.html + using VideoEncodeH265StdFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeH265StdFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeH265StdFlagsKHR allFlags = + VideoEncodeH265StdFlagBitsKHR::eSeparateColorPlaneFlagSet | VideoEncodeH265StdFlagBitsKHR::eSampleAdaptiveOffsetEnabledFlagSet | + VideoEncodeH265StdFlagBitsKHR::eScalingListDataPresentFlagSet | VideoEncodeH265StdFlagBitsKHR::ePcmEnabledFlagSet | + VideoEncodeH265StdFlagBitsKHR::eSpsTemporalMvpEnabledFlagSet | VideoEncodeH265StdFlagBitsKHR::eInitQpMinus26 | + VideoEncodeH265StdFlagBitsKHR::eWeightedPredFlagSet | VideoEncodeH265StdFlagBitsKHR::eWeightedBipredFlagSet | + VideoEncodeH265StdFlagBitsKHR::eLog2ParallelMergeLevelMinus2 | VideoEncodeH265StdFlagBitsKHR::eSignDataHidingEnabledFlagSet | + VideoEncodeH265StdFlagBitsKHR::eTransformSkipEnabledFlagSet | VideoEncodeH265StdFlagBitsKHR::eTransformSkipEnabledFlagUnset | + VideoEncodeH265StdFlagBitsKHR::ePpsSliceChromaQpOffsetsPresentFlagSet | VideoEncodeH265StdFlagBitsKHR::eTransquantBypassEnabledFlagSet | + VideoEncodeH265StdFlagBitsKHR::eConstrainedIntraPredFlagSet | VideoEncodeH265StdFlagBitsKHR::eEntropyCodingSyncEnabledFlagSet | + VideoEncodeH265StdFlagBitsKHR::eDeblockingFilterOverrideEnabledFlagSet | VideoEncodeH265StdFlagBitsKHR::eDependentSliceSegmentsEnabledFlagSet | + VideoEncodeH265StdFlagBitsKHR::eDependentSliceSegmentFlagSet | VideoEncodeH265StdFlagBitsKHR::eSliceQpDelta | + VideoEncodeH265StdFlagBitsKHR::eDifferentSliceQpDelta; + }; + + // wrapper class for enum VkVideoEncodeH265CtbSizeFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265CtbSizeFlagBitsKHR.html + enum class VideoEncodeH265CtbSizeFlagBitsKHR : VkVideoEncodeH265CtbSizeFlagsKHR + { + e16 = VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR, + e32 = VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR, + e64 = VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeH265CtbSizeFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265CtbSizeFlagsKHR.html + using VideoEncodeH265CtbSizeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeH265CtbSizeFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeH265CtbSizeFlagsKHR allFlags = + VideoEncodeH265CtbSizeFlagBitsKHR::e16 | VideoEncodeH265CtbSizeFlagBitsKHR::e32 | VideoEncodeH265CtbSizeFlagBitsKHR::e64; + }; + + // wrapper class for enum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265TransformBlockSizeFlagBitsKHR.html + enum class VideoEncodeH265TransformBlockSizeFlagBitsKHR : VkVideoEncodeH265TransformBlockSizeFlagsKHR + { + e4 = VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR, + e8 = VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR, + e16 = VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR, + e32 = VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeH265TransformBlockSizeFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265TransformBlockSizeFlagsKHR.html + using VideoEncodeH265TransformBlockSizeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeH265TransformBlockSizeFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeH265TransformBlockSizeFlagsKHR allFlags = + VideoEncodeH265TransformBlockSizeFlagBitsKHR::e4 | VideoEncodeH265TransformBlockSizeFlagBitsKHR::e8 | VideoEncodeH265TransformBlockSizeFlagBitsKHR::e16 | + VideoEncodeH265TransformBlockSizeFlagBitsKHR::e32; + }; + + // wrapper class for enum VkVideoEncodeH265RateControlFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlFlagBitsKHR.html + enum class VideoEncodeH265RateControlFlagBitsKHR : VkVideoEncodeH265RateControlFlagsKHR + { + eAttemptHrdCompliance = VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR, + eRegularGop = VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR, + eReferencePatternFlat = VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR, + eReferencePatternDyadic = VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR, + eTemporalSubLayerPatternDyadic = VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeH265RateControlFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlFlagsKHR.html + using VideoEncodeH265RateControlFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeH265RateControlFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeH265RateControlFlagsKHR allFlags = + VideoEncodeH265RateControlFlagBitsKHR::eAttemptHrdCompliance | VideoEncodeH265RateControlFlagBitsKHR::eRegularGop | + VideoEncodeH265RateControlFlagBitsKHR::eReferencePatternFlat | VideoEncodeH265RateControlFlagBitsKHR::eReferencePatternDyadic | + VideoEncodeH265RateControlFlagBitsKHR::eTemporalSubLayerPatternDyadic; + }; + + //=== VK_KHR_video_decode_h264 === + + // wrapper class for enum VkVideoDecodeH264PictureLayoutFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureLayoutFlagBitsKHR.html + enum class VideoDecodeH264PictureLayoutFlagBitsKHR : VkVideoDecodeH264PictureLayoutFlagsKHR + { + eProgressive = VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR, + eInterlacedInterleavedLines = VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR, + eInterlacedSeparatePlanes = VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR + }; + + // wrapper using for bitmask VkVideoDecodeH264PictureLayoutFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureLayoutFlagsKHR.html + using VideoDecodeH264PictureLayoutFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoDecodeH264PictureLayoutFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoDecodeH264PictureLayoutFlagsKHR allFlags = VideoDecodeH264PictureLayoutFlagBitsKHR::eProgressive | + VideoDecodeH264PictureLayoutFlagBitsKHR::eInterlacedInterleavedLines | + VideoDecodeH264PictureLayoutFlagBitsKHR::eInterlacedSeparatePlanes; + }; + + //=== VK_AMD_shader_info === + + // wrapper class for enum VkShaderInfoTypeAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderInfoTypeAMD.html + enum class ShaderInfoTypeAMD + { + eStatistics = VK_SHADER_INFO_TYPE_STATISTICS_AMD, + eBinary = VK_SHADER_INFO_TYPE_BINARY_AMD, + eDisassembly = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD + }; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + enum class StreamDescriptorSurfaceCreateFlagBitsGGP : VkStreamDescriptorSurfaceCreateFlagsGGP + { + }; + + // wrapper using for bitmask VkStreamDescriptorSurfaceCreateFlagsGGP, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkStreamDescriptorSurfaceCreateFlagsGGP.html + using StreamDescriptorSurfaceCreateFlagsGGP = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StreamDescriptorSurfaceCreateFlagsGGP allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + + // wrapper class for enum VkExternalMemoryHandleTypeFlagBitsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryHandleTypeFlagBitsNV.html + enum class ExternalMemoryHandleTypeFlagBitsNV : VkExternalMemoryHandleTypeFlagsNV + { + eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV, + eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV, + eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV, + eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV + }; + + // wrapper using for bitmask VkExternalMemoryHandleTypeFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryHandleTypeFlagsNV.html + using ExternalMemoryHandleTypeFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkExternalMemoryHandleTypeFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ExternalMemoryHandleTypeFlagsNV allFlags = + ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32 | ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt | ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image | + ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt; + }; + + // wrapper class for enum VkExternalMemoryFeatureFlagBitsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryFeatureFlagBitsNV.html + enum class ExternalMemoryFeatureFlagBitsNV : VkExternalMemoryFeatureFlagsNV + { + eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV, + eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV, + eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV + }; + + // wrapper using for bitmask VkExternalMemoryFeatureFlagsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryFeatureFlagsNV.html + using ExternalMemoryFeatureFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkExternalMemoryFeatureFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ExternalMemoryFeatureFlagsNV allFlags = + ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly | ExternalMemoryFeatureFlagBitsNV::eExportable | ExternalMemoryFeatureFlagBitsNV::eImportable; + }; + + //=== VK_EXT_validation_flags === + + // wrapper class for enum VkValidationCheckEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationCheckEXT.html + enum class ValidationCheckEXT + { + eAll = VK_VALIDATION_CHECK_ALL_EXT, + eShaders = VK_VALIDATION_CHECK_SHADERS_EXT + }; + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + enum class ViSurfaceCreateFlagBitsNN : VkViSurfaceCreateFlagsNN + { + }; + + // wrapper using for bitmask VkViSurfaceCreateFlagsNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkViSurfaceCreateFlagsNN.html + using ViSurfaceCreateFlagsNN = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ViSurfaceCreateFlagsNN allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_EXT_conditional_rendering === + + // wrapper class for enum VkConditionalRenderingFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkConditionalRenderingFlagBitsEXT.html + enum class ConditionalRenderingFlagBitsEXT : VkConditionalRenderingFlagsEXT + { + eInverted = VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT + }; + + // wrapper using for bitmask VkConditionalRenderingFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkConditionalRenderingFlagsEXT.html + using ConditionalRenderingFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkConditionalRenderingFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ConditionalRenderingFlagsEXT allFlags = ConditionalRenderingFlagBitsEXT::eInverted; + }; + + //=== VK_EXT_display_surface_counter === + + // wrapper class for enum VkSurfaceCounterFlagBitsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCounterFlagBitsEXT.html + enum class SurfaceCounterFlagBitsEXT : VkSurfaceCounterFlagsEXT + { + eVblank = VK_SURFACE_COUNTER_VBLANK_BIT_EXT + }; + + // wrapper using for bitmask VkSurfaceCounterFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCounterFlagsEXT.html + using SurfaceCounterFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkSurfaceCounterFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SurfaceCounterFlagsEXT allFlags = SurfaceCounterFlagBitsEXT::eVblank; + }; + + //=== VK_EXT_display_control === + + // wrapper class for enum VkDisplayPowerStateEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPowerStateEXT.html + enum class DisplayPowerStateEXT + { + eOff = VK_DISPLAY_POWER_STATE_OFF_EXT, + eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT, + eOn = VK_DISPLAY_POWER_STATE_ON_EXT + }; + + // wrapper class for enum VkDeviceEventTypeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceEventTypeEXT.html + enum class DeviceEventTypeEXT + { + eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + }; + + // wrapper class for enum VkDisplayEventTypeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayEventTypeEXT.html + enum class DisplayEventTypeEXT + { + eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + }; + + //=== VK_NV_viewport_swizzle === + + // wrapper class for enum VkViewportCoordinateSwizzleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkViewportCoordinateSwizzleNV.html + enum class ViewportCoordinateSwizzleNV + { + ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV, + eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV, + ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV, + eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV, + ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV, + eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV, + ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV, + eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV + }; + + enum class PipelineViewportSwizzleStateCreateFlagBitsNV : VkPipelineViewportSwizzleStateCreateFlagsNV + { + }; + + // wrapper using for bitmask VkPipelineViewportSwizzleStateCreateFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineViewportSwizzleStateCreateFlagsNV.html + using PipelineViewportSwizzleStateCreateFlagsNV = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineViewportSwizzleStateCreateFlagsNV allFlags = {}; + }; + + //=== VK_EXT_discard_rectangles === + + // wrapper class for enum VkDiscardRectangleModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDiscardRectangleModeEXT.html + enum class DiscardRectangleModeEXT + { + eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT, + eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT + }; + + enum class PipelineDiscardRectangleStateCreateFlagBitsEXT : VkPipelineDiscardRectangleStateCreateFlagsEXT + { + }; + + // wrapper using for bitmask VkPipelineDiscardRectangleStateCreateFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineDiscardRectangleStateCreateFlagsEXT.html + using PipelineDiscardRectangleStateCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineDiscardRectangleStateCreateFlagsEXT allFlags = {}; + }; + + //=== VK_EXT_conservative_rasterization === + + // wrapper class for enum VkConservativeRasterizationModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkConservativeRasterizationModeEXT.html + enum class ConservativeRasterizationModeEXT + { + eDisabled = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT, + eOverestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, + eUnderestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT + }; + + enum class PipelineRasterizationConservativeStateCreateFlagBitsEXT : VkPipelineRasterizationConservativeStateCreateFlagsEXT + { + }; + + // wrapper using for bitmask VkPipelineRasterizationConservativeStateCreateFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationConservativeStateCreateFlagsEXT.html + using PipelineRasterizationConservativeStateCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineRasterizationConservativeStateCreateFlagsEXT allFlags = {}; + }; + + //=== VK_EXT_depth_clip_enable === + + enum class PipelineRasterizationDepthClipStateCreateFlagBitsEXT : VkPipelineRasterizationDepthClipStateCreateFlagsEXT + { + }; + + // wrapper using for bitmask VkPipelineRasterizationDepthClipStateCreateFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationDepthClipStateCreateFlagsEXT.html + using PipelineRasterizationDepthClipStateCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineRasterizationDepthClipStateCreateFlagsEXT allFlags = {}; + }; + + //=== VK_KHR_performance_query === + + // wrapper class for enum VkPerformanceCounterDescriptionFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionFlagBitsKHR.html + enum class PerformanceCounterDescriptionFlagBitsKHR : VkPerformanceCounterDescriptionFlagsKHR + { + ePerformanceImpacting = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR, + eConcurrentlyImpacted = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR + }; + + // wrapper using for bitmask VkPerformanceCounterDescriptionFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionFlagsKHR.html + using PerformanceCounterDescriptionFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPerformanceCounterDescriptionFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PerformanceCounterDescriptionFlagsKHR allFlags = + PerformanceCounterDescriptionFlagBitsKHR::ePerformanceImpacting | PerformanceCounterDescriptionFlagBitsKHR::eConcurrentlyImpacted; + }; + + // wrapper class for enum VkPerformanceCounterScopeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterScopeKHR.html + enum class PerformanceCounterScopeKHR + { + eCommandBuffer = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, + eVkQueryScopeCommandBuffer = VK_QUERY_SCOPE_COMMAND_BUFFER_KHR, + eRenderPass = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, + eVkQueryScopeRenderPass = VK_QUERY_SCOPE_RENDER_PASS_KHR, + eCommand = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR, + eVkQueryScopeCommand = VK_QUERY_SCOPE_COMMAND_KHR + }; + + // wrapper class for enum VkPerformanceCounterStorageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterStorageKHR.html + enum class PerformanceCounterStorageKHR + { + eInt32 = VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR, + eInt64 = VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR, + eUint32 = VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR, + eUint64 = VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR, + eFloat32 = VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR, + eFloat64 = VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR + }; + + // wrapper class for enum VkPerformanceCounterUnitKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterUnitKHR.html + enum class PerformanceCounterUnitKHR + { + eGeneric = VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR, + ePercentage = VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR, + eNanoseconds = VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR, + eBytes = VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR, + eBytesPerSecond = VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR, + eKelvin = VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR, + eWatts = VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR, + eVolts = VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR, + eAmps = VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR, + eHertz = VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR, + eCycles = VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR + }; + + enum class AcquireProfilingLockFlagBitsKHR : VkAcquireProfilingLockFlagsKHR + { + }; + + // wrapper using for bitmask VkAcquireProfilingLockFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAcquireProfilingLockFlagsKHR.html + using AcquireProfilingLockFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AcquireProfilingLockFlagsKHR allFlags = {}; + }; + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + enum class IOSSurfaceCreateFlagBitsMVK : VkIOSSurfaceCreateFlagsMVK + { + }; + + // wrapper using for bitmask VkIOSSurfaceCreateFlagsMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIOSSurfaceCreateFlagsMVK.html + using IOSSurfaceCreateFlagsMVK = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR IOSSurfaceCreateFlagsMVK allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + enum class MacOSSurfaceCreateFlagBitsMVK : VkMacOSSurfaceCreateFlagsMVK + { + }; + + // wrapper using for bitmask VkMacOSSurfaceCreateFlagsMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMacOSSurfaceCreateFlagsMVK.html + using MacOSSurfaceCreateFlagsMVK = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR MacOSSurfaceCreateFlagsMVK allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + // wrapper class for enum VkDebugUtilsMessageSeverityFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessageSeverityFlagBitsEXT.html + enum class DebugUtilsMessageSeverityFlagBitsEXT : VkDebugUtilsMessageSeverityFlagsEXT + { + eVerbose = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT, + eInfo = VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT, + eWarning = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT, + eError = VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT + }; + + // wrapper using for bitmask VkDebugUtilsMessageSeverityFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessageSeverityFlagsEXT.html + using DebugUtilsMessageSeverityFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDebugUtilsMessageSeverityFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugUtilsMessageSeverityFlagsEXT allFlags = + DebugUtilsMessageSeverityFlagBitsEXT::eVerbose | DebugUtilsMessageSeverityFlagBitsEXT::eInfo | DebugUtilsMessageSeverityFlagBitsEXT::eWarning | + DebugUtilsMessageSeverityFlagBitsEXT::eError; + }; + + // wrapper class for enum VkDebugUtilsMessageTypeFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessageTypeFlagBitsEXT.html + enum class DebugUtilsMessageTypeFlagBitsEXT : VkDebugUtilsMessageTypeFlagsEXT + { + eGeneral = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT, + eValidation = VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT, + ePerformance = VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT, + eDeviceAddressBinding = VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT + }; + + // wrapper using for bitmask VkDebugUtilsMessageTypeFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessageTypeFlagsEXT.html + using DebugUtilsMessageTypeFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDebugUtilsMessageTypeFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugUtilsMessageTypeFlagsEXT allFlags = + DebugUtilsMessageTypeFlagBitsEXT::eGeneral | DebugUtilsMessageTypeFlagBitsEXT::eValidation | DebugUtilsMessageTypeFlagBitsEXT::ePerformance | + DebugUtilsMessageTypeFlagBitsEXT::eDeviceAddressBinding; + }; + + enum class DebugUtilsMessengerCallbackDataFlagBitsEXT : VkDebugUtilsMessengerCallbackDataFlagsEXT + { + }; + + // wrapper using for bitmask VkDebugUtilsMessengerCallbackDataFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCallbackDataFlagsEXT.html + using DebugUtilsMessengerCallbackDataFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugUtilsMessengerCallbackDataFlagsEXT allFlags = {}; + }; + + enum class DebugUtilsMessengerCreateFlagBitsEXT : VkDebugUtilsMessengerCreateFlagsEXT + { + }; + + // wrapper using for bitmask VkDebugUtilsMessengerCreateFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCreateFlagsEXT.html + using DebugUtilsMessengerCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugUtilsMessengerCreateFlagsEXT allFlags = {}; + }; + + //=== VK_EXT_descriptor_heap === + + // wrapper class for enum VkDescriptorMappingSourceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorMappingSourceEXT.html + enum class DescriptorMappingSourceEXT + { + eHeapWithConstantOffset = VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_CONSTANT_OFFSET_EXT, + eHeapWithPushIndex = VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_PUSH_INDEX_EXT, + eHeapWithIndirectIndex = VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_EXT, + eHeapWithIndirectIndexArray = VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_INDIRECT_INDEX_ARRAY_EXT, + eResourceHeapData = VK_DESCRIPTOR_MAPPING_SOURCE_RESOURCE_HEAP_DATA_EXT, + ePushData = VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_DATA_EXT, + ePushAddress = VK_DESCRIPTOR_MAPPING_SOURCE_PUSH_ADDRESS_EXT, + eIndirectAddress = VK_DESCRIPTOR_MAPPING_SOURCE_INDIRECT_ADDRESS_EXT, + eHeapWithShaderRecordIndex = VK_DESCRIPTOR_MAPPING_SOURCE_HEAP_WITH_SHADER_RECORD_INDEX_EXT, + eShaderRecordData = VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_DATA_EXT, + eShaderRecordAddress = VK_DESCRIPTOR_MAPPING_SOURCE_SHADER_RECORD_ADDRESS_EXT + }; + + // wrapper class for enum VkSpirvResourceTypeFlagBitsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSpirvResourceTypeFlagBitsEXT.html + enum class SpirvResourceTypeFlagBitsEXT : VkSpirvResourceTypeFlagsEXT + { + eAll = VK_SPIRV_RESOURCE_TYPE_ALL_EXT, + eSampler = VK_SPIRV_RESOURCE_TYPE_SAMPLER_BIT_EXT, + eSampledImage = VK_SPIRV_RESOURCE_TYPE_SAMPLED_IMAGE_BIT_EXT, + eReadOnlyImage = VK_SPIRV_RESOURCE_TYPE_READ_ONLY_IMAGE_BIT_EXT, + eReadWriteImage = VK_SPIRV_RESOURCE_TYPE_READ_WRITE_IMAGE_BIT_EXT, + eCombinedSampledImage = VK_SPIRV_RESOURCE_TYPE_COMBINED_SAMPLED_IMAGE_BIT_EXT, + eUniformBuffer = VK_SPIRV_RESOURCE_TYPE_UNIFORM_BUFFER_BIT_EXT, + eReadOnlyStorageBuffer = VK_SPIRV_RESOURCE_TYPE_READ_ONLY_STORAGE_BUFFER_BIT_EXT, + eReadWriteStorageBuffer = VK_SPIRV_RESOURCE_TYPE_READ_WRITE_STORAGE_BUFFER_BIT_EXT, + eAccelerationStructure = VK_SPIRV_RESOURCE_TYPE_ACCELERATION_STRUCTURE_BIT_EXT, + eTensorARM = VK_SPIRV_RESOURCE_TYPE_TENSOR_BIT_ARM + }; + + // wrapper using for bitmask VkSpirvResourceTypeFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSpirvResourceTypeFlagsEXT.html + using SpirvResourceTypeFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkSpirvResourceTypeFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SpirvResourceTypeFlagsEXT allFlags = + SpirvResourceTypeFlagBitsEXT::eAll | SpirvResourceTypeFlagBitsEXT::eSampler | SpirvResourceTypeFlagBitsEXT::eSampledImage | + SpirvResourceTypeFlagBitsEXT::eReadOnlyImage | SpirvResourceTypeFlagBitsEXT::eReadWriteImage | SpirvResourceTypeFlagBitsEXT::eCombinedSampledImage | + SpirvResourceTypeFlagBitsEXT::eUniformBuffer | SpirvResourceTypeFlagBitsEXT::eReadOnlyStorageBuffer | + SpirvResourceTypeFlagBitsEXT::eReadWriteStorageBuffer | SpirvResourceTypeFlagBitsEXT::eAccelerationStructure | SpirvResourceTypeFlagBitsEXT::eTensorARM; + }; + + // wrapper class for enum VkTensorViewCreateFlagBitsARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorViewCreateFlagBitsARM.html + enum class TensorViewCreateFlagBitsARM : VkTensorViewCreateFlagsARM + { + eDescriptorBufferCaptureReplay = VK_TENSOR_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM + }; + + // wrapper using for bitmask VkTensorViewCreateFlagsARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorViewCreateFlagsARM.html + using TensorViewCreateFlagsARM = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkTensorViewCreateFlagBitsARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR TensorViewCreateFlagsARM allFlags = TensorViewCreateFlagBitsARM::eDescriptorBufferCaptureReplay; + }; + + //=== VK_EXT_blend_operation_advanced === + + // wrapper class for enum VkBlendOverlapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBlendOverlapEXT.html + enum class BlendOverlapEXT + { + eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT, + eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT, + eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT + }; + + //=== VK_NV_fragment_coverage_to_color === + + enum class PipelineCoverageToColorStateCreateFlagBitsNV : VkPipelineCoverageToColorStateCreateFlagsNV + { + }; + + // wrapper using for bitmask VkPipelineCoverageToColorStateCreateFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCoverageToColorStateCreateFlagsNV.html + using PipelineCoverageToColorStateCreateFlagsNV = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineCoverageToColorStateCreateFlagsNV allFlags = {}; + }; + + //=== VK_KHR_acceleration_structure === + + // wrapper class for enum VkAccelerationStructureTypeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureTypeKHR.html + enum class AccelerationStructureTypeKHR + { + eTopLevel = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR, + eTopLevelNV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV, + eBottomLevel = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, + eBottomLevelNV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV, + eGeneric = VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR + }; + + using AccelerationStructureTypeNV = AccelerationStructureTypeKHR; + + // wrapper class for enum VkAccelerationStructureBuildTypeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureBuildTypeKHR.html + enum class AccelerationStructureBuildTypeKHR + { + eHost = VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR, + eDevice = VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR, + eHostOrDevice = VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR + }; + + // wrapper class for enum VkGeometryFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryFlagBitsKHR.html + enum class GeometryFlagBitsKHR : VkGeometryFlagsKHR + { + eOpaque = VK_GEOMETRY_OPAQUE_BIT_KHR, + eOpaqueNV = VK_GEOMETRY_OPAQUE_BIT_NV, + eNoDuplicateAnyHitInvocation = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR, + eNoDuplicateAnyHitInvocationNV = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV + }; + + using GeometryFlagBitsNV = GeometryFlagBitsKHR; + + // wrapper using for bitmask VkGeometryFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryFlagsKHR.html + using GeometryFlagsKHR = Flags; + using GeometryFlagsNV = GeometryFlagsKHR; + + template <> + struct FlagTraits + { + using WrappedType = VkGeometryFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR GeometryFlagsKHR allFlags = GeometryFlagBitsKHR::eOpaque | GeometryFlagBitsKHR::eNoDuplicateAnyHitInvocation; + }; + + // wrapper class for enum VkGeometryInstanceFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryInstanceFlagBitsKHR.html + enum class GeometryInstanceFlagBitsKHR : VkGeometryInstanceFlagsKHR + { + eTriangleFacingCullDisable = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR, + eTriangleCullDisable = VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV, + eTriangleCullDisableNV = VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV, + eTriangleFlipFacing = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR, + eTriangleFrontCounterclockwise = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR, + eTriangleFrontCounterclockwiseNV = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV, + eForceOpaque = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR, + eForceOpaqueNV = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV, + eForceNoOpaque = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR, + eForceNoOpaqueNV = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV, + eForceOpacityMicromap2StateEXT = VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_BIT_EXT, + eDisableOpacityMicromapsEXT = VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_BIT_EXT + }; + + using GeometryInstanceFlagBitsNV = GeometryInstanceFlagBitsKHR; + + // wrapper using for bitmask VkGeometryInstanceFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryInstanceFlagsKHR.html + using GeometryInstanceFlagsKHR = Flags; + using GeometryInstanceFlagsNV = GeometryInstanceFlagsKHR; + + template <> + struct FlagTraits + { + using WrappedType = VkGeometryInstanceFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR GeometryInstanceFlagsKHR allFlags = + GeometryInstanceFlagBitsKHR::eTriangleFacingCullDisable | GeometryInstanceFlagBitsKHR::eTriangleFlipFacing | GeometryInstanceFlagBitsKHR::eForceOpaque | + GeometryInstanceFlagBitsKHR::eForceNoOpaque | GeometryInstanceFlagBitsKHR::eForceOpacityMicromap2StateEXT | + GeometryInstanceFlagBitsKHR::eDisableOpacityMicromapsEXT; + }; + + // wrapper class for enum VkBuildAccelerationStructureFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuildAccelerationStructureFlagBitsKHR.html + enum class BuildAccelerationStructureFlagBitsKHR : VkBuildAccelerationStructureFlagsKHR + { + eAllowUpdate = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR, + eAllowUpdateNV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV, + eAllowCompaction = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR, + eAllowCompactionNV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV, + ePreferFastTrace = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, + ePreferFastTraceNV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV, + ePreferFastBuild = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, + ePreferFastBuildNV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV, + eLowMemory = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR, + eLowMemoryNV = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV, + eMotionNV = VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV, + eAllowOpacityMicromapUpdateEXT = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_BIT_EXT, + eAllowDisableOpacityMicromapsEXT = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_BIT_EXT, + eAllowOpacityMicromapDataUpdateEXT = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_BIT_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eAllowDisplacementMicromapUpdateNV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_BIT_NV, + eAllowDisplacementMicromapUpdate = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV, +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + eAllowDataAccess = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_BIT_KHR, + eAllowClusterOpacityMicromapsNV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_CLUSTER_OPACITY_MICROMAPS_BIT_NV + }; + + using BuildAccelerationStructureFlagBitsNV = BuildAccelerationStructureFlagBitsKHR; + + // wrapper using for bitmask VkBuildAccelerationStructureFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuildAccelerationStructureFlagsKHR.html + using BuildAccelerationStructureFlagsKHR = Flags; + using BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagsKHR; + + template <> + struct FlagTraits + { + using WrappedType = VkBuildAccelerationStructureFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR BuildAccelerationStructureFlagsKHR allFlags = + BuildAccelerationStructureFlagBitsKHR::eAllowUpdate | BuildAccelerationStructureFlagBitsKHR::eAllowCompaction | + BuildAccelerationStructureFlagBitsKHR::ePreferFastTrace | BuildAccelerationStructureFlagBitsKHR::ePreferFastBuild | + BuildAccelerationStructureFlagBitsKHR::eLowMemory | BuildAccelerationStructureFlagBitsKHR::eMotionNV | + BuildAccelerationStructureFlagBitsKHR::eAllowOpacityMicromapUpdateEXT | BuildAccelerationStructureFlagBitsKHR::eAllowDisableOpacityMicromapsEXT | + BuildAccelerationStructureFlagBitsKHR::eAllowOpacityMicromapDataUpdateEXT +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + | BuildAccelerationStructureFlagBitsKHR::eAllowDisplacementMicromapUpdateNV +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + | BuildAccelerationStructureFlagBitsKHR::eAllowDataAccess | BuildAccelerationStructureFlagBitsKHR::eAllowClusterOpacityMicromapsNV; + }; + + // wrapper class for enum VkCopyAccelerationStructureModeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyAccelerationStructureModeKHR.html + enum class CopyAccelerationStructureModeKHR + { + eClone = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR, + eCloneNV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV, + eCompact = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR, + eCompactNV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV, + eSerialize = VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR, + eDeserialize = VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR + }; + + using CopyAccelerationStructureModeNV = CopyAccelerationStructureModeKHR; + + // wrapper class for enum VkGeometryTypeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryTypeKHR.html + enum class GeometryTypeKHR + { + eTriangles = VK_GEOMETRY_TYPE_TRIANGLES_KHR, + eTrianglesNV = VK_GEOMETRY_TYPE_TRIANGLES_NV, + eAabbs = VK_GEOMETRY_TYPE_AABBS_KHR, + eAabbsNV = VK_GEOMETRY_TYPE_AABBS_NV, + eInstances = VK_GEOMETRY_TYPE_INSTANCES_KHR, + eSpheresNV = VK_GEOMETRY_TYPE_SPHERES_NV, + eLinearSweptSpheresNV = VK_GEOMETRY_TYPE_LINEAR_SWEPT_SPHERES_NV, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eDenseGeometryFormatTrianglesAMDX = VK_GEOMETRY_TYPE_DENSE_GEOMETRY_FORMAT_TRIANGLES_AMDX +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + + using GeometryTypeNV = GeometryTypeKHR; + + // wrapper class for enum VkAccelerationStructureCompatibilityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureCompatibilityKHR.html + enum class AccelerationStructureCompatibilityKHR + { + eCompatible = VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR, + eIncompatible = VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR + }; + + // wrapper class for enum VkAccelerationStructureCreateFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureCreateFlagBitsKHR.html + enum class AccelerationStructureCreateFlagBitsKHR : VkAccelerationStructureCreateFlagsKHR + { + eDeviceAddressCaptureReplay = VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR, + eDescriptorBufferCaptureReplayEXT = VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT, + eMotionNV = VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV + }; + + // wrapper using for bitmask VkAccelerationStructureCreateFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureCreateFlagsKHR.html + using AccelerationStructureCreateFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkAccelerationStructureCreateFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AccelerationStructureCreateFlagsKHR allFlags = + AccelerationStructureCreateFlagBitsKHR::eDeviceAddressCaptureReplay | AccelerationStructureCreateFlagBitsKHR::eDescriptorBufferCaptureReplayEXT | + AccelerationStructureCreateFlagBitsKHR::eMotionNV; + }; + + // wrapper class for enum VkBuildAccelerationStructureModeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuildAccelerationStructureModeKHR.html + enum class BuildAccelerationStructureModeKHR + { + eBuild = VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR, + eUpdate = VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR + }; + + //=== VK_KHR_ray_tracing_pipeline === + + // wrapper class for enum VkRayTracingShaderGroupTypeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRayTracingShaderGroupTypeKHR.html + enum class RayTracingShaderGroupTypeKHR + { + eGeneral = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR, + eGeneralNV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV, + eTrianglesHitGroup = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR, + eTrianglesHitGroupNV = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV, + eProceduralHitGroup = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR, + eProceduralHitGroupNV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV + }; + + using RayTracingShaderGroupTypeNV = RayTracingShaderGroupTypeKHR; + + // wrapper class for enum VkShaderGroupShaderKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderGroupShaderKHR.html + enum class ShaderGroupShaderKHR + { + eGeneral = VK_SHADER_GROUP_SHADER_GENERAL_KHR, + eClosestHit = VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR, + eAnyHit = VK_SHADER_GROUP_SHADER_ANY_HIT_KHR, + eIntersection = VK_SHADER_GROUP_SHADER_INTERSECTION_KHR + }; + + //=== VK_NV_framebuffer_mixed_samples === + + // wrapper class for enum VkCoverageModulationModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCoverageModulationModeNV.html + enum class CoverageModulationModeNV + { + eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV, + eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV, + eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV, + eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV + }; + + enum class PipelineCoverageModulationStateCreateFlagBitsNV : VkPipelineCoverageModulationStateCreateFlagsNV + { + }; + + // wrapper using for bitmask VkPipelineCoverageModulationStateCreateFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCoverageModulationStateCreateFlagsNV.html + using PipelineCoverageModulationStateCreateFlagsNV = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineCoverageModulationStateCreateFlagsNV allFlags = {}; + }; + + //=== VK_EXT_validation_cache === + + // wrapper class for enum VkValidationCacheHeaderVersionEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationCacheHeaderVersionEXT.html + enum class ValidationCacheHeaderVersionEXT + { + eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT + }; + + enum class ValidationCacheCreateFlagBitsEXT : VkValidationCacheCreateFlagsEXT + { + }; + + // wrapper using for bitmask VkValidationCacheCreateFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationCacheCreateFlagsEXT.html + using ValidationCacheCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ValidationCacheCreateFlagsEXT allFlags = {}; + }; + + //=== VK_NV_shading_rate_image === + + // wrapper class for enum VkShadingRatePaletteEntryNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShadingRatePaletteEntryNV.html + enum class ShadingRatePaletteEntryNV + { + eNoInvocations = VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV, + e16InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV, + e8InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV, + e4InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV, + e2InvocationsPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV, + e1InvocationPerPixel = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV, + e1InvocationPer2X1Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV, + e1InvocationPer1X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV, + e1InvocationPer2X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV, + e1InvocationPer4X2Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV, + e1InvocationPer2X4Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV, + e1InvocationPer4X4Pixels = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV + }; + + // wrapper class for enum VkCoarseSampleOrderTypeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCoarseSampleOrderTypeNV.html + enum class CoarseSampleOrderTypeNV + { + eDefault = VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV, + eCustom = VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV, + ePixelMajor = VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV, + eSampleMajor = VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV + }; + + //=== VK_NV_ray_tracing === + + // wrapper class for enum VkAccelerationStructureMemoryRequirementsTypeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureMemoryRequirementsTypeNV.html + enum class AccelerationStructureMemoryRequirementsTypeNV + { + eObject = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV, + eBuildScratch = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV, + eUpdateScratch = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV + }; + + //=== VK_AMD_pipeline_compiler_control === + + enum class PipelineCompilerControlFlagBitsAMD : VkPipelineCompilerControlFlagsAMD + { + }; + + // wrapper using for bitmask VkPipelineCompilerControlFlagsAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCompilerControlFlagsAMD.html + using PipelineCompilerControlFlagsAMD = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineCompilerControlFlagsAMD allFlags = {}; + }; + + //=== VK_AMD_memory_overallocation_behavior === + + // wrapper class for enum VkMemoryOverallocationBehaviorAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryOverallocationBehaviorAMD.html + enum class MemoryOverallocationBehaviorAMD + { + eDefault = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD, + eAllowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD, + eDisallowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD + }; + + //=== VK_EXT_present_timing === + + // wrapper class for enum VkPresentStageFlagBitsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentStageFlagBitsEXT.html + enum class PresentStageFlagBitsEXT : VkPresentStageFlagsEXT + { + eQueueOperationsEnd = VK_PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT, + eRequestDequeued = VK_PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT, + eImageFirstPixelOut = VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT, + eImageFirstPixelVisible = VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT + }; + + // wrapper using for bitmask VkPresentStageFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentStageFlagsEXT.html + using PresentStageFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPresentStageFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PresentStageFlagsEXT allFlags = + PresentStageFlagBitsEXT::eQueueOperationsEnd | PresentStageFlagBitsEXT::eRequestDequeued | PresentStageFlagBitsEXT::eImageFirstPixelOut | + PresentStageFlagBitsEXT::eImageFirstPixelVisible; + }; + + // wrapper class for enum VkPresentTimingInfoFlagBitsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentTimingInfoFlagBitsEXT.html + enum class PresentTimingInfoFlagBitsEXT : VkPresentTimingInfoFlagsEXT + { + ePresentAtRelativeTime = VK_PRESENT_TIMING_INFO_PRESENT_AT_RELATIVE_TIME_BIT_EXT, + ePresentAtNearestRefreshCycle = VK_PRESENT_TIMING_INFO_PRESENT_AT_NEAREST_REFRESH_CYCLE_BIT_EXT + }; + + // wrapper using for bitmask VkPresentTimingInfoFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentTimingInfoFlagsEXT.html + using PresentTimingInfoFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPresentTimingInfoFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PresentTimingInfoFlagsEXT allFlags = + PresentTimingInfoFlagBitsEXT::ePresentAtRelativeTime | PresentTimingInfoFlagBitsEXT::ePresentAtNearestRefreshCycle; + }; + + // wrapper class for enum VkPastPresentationTimingFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPastPresentationTimingFlagBitsEXT.html + enum class PastPresentationTimingFlagBitsEXT : VkPastPresentationTimingFlagsEXT + { + eAllowPartialResults = VK_PAST_PRESENTATION_TIMING_ALLOW_PARTIAL_RESULTS_BIT_EXT, + eAllowOutOfOrderResults = VK_PAST_PRESENTATION_TIMING_ALLOW_OUT_OF_ORDER_RESULTS_BIT_EXT + }; + + // wrapper using for bitmask VkPastPresentationTimingFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPastPresentationTimingFlagsEXT.html + using PastPresentationTimingFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPastPresentationTimingFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PastPresentationTimingFlagsEXT allFlags = + PastPresentationTimingFlagBitsEXT::eAllowPartialResults | PastPresentationTimingFlagBitsEXT::eAllowOutOfOrderResults; + }; + + //=== VK_INTEL_performance_query === + + // wrapper class for enum VkPerformanceConfigurationTypeINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceConfigurationTypeINTEL.html + enum class PerformanceConfigurationTypeINTEL + { + eCommandQueueMetricsDiscoveryActivated = VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL + }; + + // wrapper class for enum VkQueryPoolSamplingModeINTEL, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPoolSamplingModeINTEL.html + enum class QueryPoolSamplingModeINTEL + { + eManual = VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL + }; + + // wrapper class for enum VkPerformanceOverrideTypeINTEL, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceOverrideTypeINTEL.html + enum class PerformanceOverrideTypeINTEL + { + eNullHardware = VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL, + eFlushGpuCaches = VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL + }; + + // wrapper class for enum VkPerformanceParameterTypeINTEL, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceParameterTypeINTEL.html + enum class PerformanceParameterTypeINTEL + { + eHwCountersSupported = VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL, + eStreamMarkerValidBits = VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL + }; + + // wrapper class for enum VkPerformanceValueTypeINTEL, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceValueTypeINTEL.html + enum class PerformanceValueTypeINTEL + { + eUint32 = VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL, + eUint64 = VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL, + eFloat = VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL, + eBool = VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL, + eString = VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL + }; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + enum class ImagePipeSurfaceCreateFlagBitsFUCHSIA : VkImagePipeSurfaceCreateFlagsFUCHSIA + { + }; + + // wrapper using for bitmask VkImagePipeSurfaceCreateFlagsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImagePipeSurfaceCreateFlagsFUCHSIA.html + using ImagePipeSurfaceCreateFlagsFUCHSIA = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ImagePipeSurfaceCreateFlagsFUCHSIA allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + enum class MetalSurfaceCreateFlagBitsEXT : VkMetalSurfaceCreateFlagsEXT + { + }; + + // wrapper using for bitmask VkMetalSurfaceCreateFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMetalSurfaceCreateFlagsEXT.html + using MetalSurfaceCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR MetalSurfaceCreateFlagsEXT allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + + // wrapper class for enum VkFragmentShadingRateCombinerOpKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkFragmentShadingRateCombinerOpKHR.html + enum class FragmentShadingRateCombinerOpKHR + { + eKeep = VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR, + eReplace = VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR, + eMin = VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR, + eMax = VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR, + eMul = VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR + }; + + //=== VK_AMD_shader_core_properties2 === + + enum class ShaderCorePropertiesFlagBitsAMD : VkShaderCorePropertiesFlagsAMD + { + }; + + // wrapper using for bitmask VkShaderCorePropertiesFlagsAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderCorePropertiesFlagsAMD.html + using ShaderCorePropertiesFlagsAMD = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ShaderCorePropertiesFlagsAMD allFlags = {}; + }; + + //=== VK_EXT_validation_features === + + // wrapper class for enum VkValidationFeatureEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationFeatureEnableEXT.html + enum class ValidationFeatureEnableEXT + { + eGpuAssisted = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT, + eGpuAssistedReserveBindingSlot = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT, + eBestPractices = VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT, + eDebugPrintf = VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT, + eSynchronizationValidation = VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT + }; + + // wrapper class for enum VkValidationFeatureDisableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationFeatureDisableEXT.html + enum class ValidationFeatureDisableEXT + { + eAll = VK_VALIDATION_FEATURE_DISABLE_ALL_EXT, + eShaders = VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT, + eThreadSafety = VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT, + eApiParameters = VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT, + eObjectLifetimes = VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT, + eCoreChecks = VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT, + eUniqueHandles = VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT, + eShaderValidationCache = VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT + }; + + //=== VK_NV_coverage_reduction_mode === + + // wrapper class for enum VkCoverageReductionModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCoverageReductionModeNV.html + enum class CoverageReductionModeNV + { + eMerge = VK_COVERAGE_REDUCTION_MODE_MERGE_NV, + eTruncate = VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV + }; + + enum class PipelineCoverageReductionStateCreateFlagBitsNV : VkPipelineCoverageReductionStateCreateFlagsNV + { + }; + + // wrapper using for bitmask VkPipelineCoverageReductionStateCreateFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCoverageReductionStateCreateFlagsNV.html + using PipelineCoverageReductionStateCreateFlagsNV = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PipelineCoverageReductionStateCreateFlagsNV allFlags = {}; + }; + + //=== VK_EXT_provoking_vertex === + + // wrapper class for enum VkProvokingVertexModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkProvokingVertexModeEXT.html + enum class ProvokingVertexModeEXT + { + eFirstVertex = VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT, + eLastVertex = VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + // wrapper class for enum VkFullScreenExclusiveEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFullScreenExclusiveEXT.html + enum class FullScreenExclusiveEXT + { + eDefault = VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT, + eAllowed = VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT, + eDisallowed = VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT, + eApplicationControlled = VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT + }; + +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + + enum class HeadlessSurfaceCreateFlagBitsEXT : VkHeadlessSurfaceCreateFlagsEXT + { + }; + + // wrapper using for bitmask VkHeadlessSurfaceCreateFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkHeadlessSurfaceCreateFlagsEXT.html + using HeadlessSurfaceCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR HeadlessSurfaceCreateFlagsEXT allFlags = {}; + }; + + //=== VK_KHR_pipeline_executable_properties === + + // wrapper class for enum VkPipelineExecutableStatisticFormatKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineExecutableStatisticFormatKHR.html + enum class PipelineExecutableStatisticFormatKHR + { + eBool32 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR, + eInt64 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR, + eUint64 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR, + eFloat64 = VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR + }; + + //=== VK_NV_device_generated_commands === + + // wrapper class for enum VkIndirectStateFlagBitsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectStateFlagBitsNV.html + enum class IndirectStateFlagBitsNV : VkIndirectStateFlagsNV + { + eFlagFrontface = VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV + }; + + // wrapper using for bitmask VkIndirectStateFlagsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectStateFlagsNV.html + using IndirectStateFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkIndirectStateFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR IndirectStateFlagsNV allFlags = IndirectStateFlagBitsNV::eFlagFrontface; + }; + + // wrapper class for enum VkIndirectCommandsTokenTypeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsTokenTypeNV.html + enum class IndirectCommandsTokenTypeNV + { + eShaderGroup = VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV, + eStateFlags = VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV, + eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV, + eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV, + ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV, + eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV, + eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV, + eDrawTasks = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV, + ePushData = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_NV, + eDrawMeshTasks = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV, + ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV, + eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV + }; + + // wrapper class for enum VkIndirectCommandsLayoutUsageFlagBitsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutUsageFlagBitsNV.html + enum class IndirectCommandsLayoutUsageFlagBitsNV : VkIndirectCommandsLayoutUsageFlagsNV + { + eExplicitPreprocess = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV, + eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV, + eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV + }; + + // wrapper using for bitmask VkIndirectCommandsLayoutUsageFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutUsageFlagsNV.html + using IndirectCommandsLayoutUsageFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkIndirectCommandsLayoutUsageFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR IndirectCommandsLayoutUsageFlagsNV allFlags = IndirectCommandsLayoutUsageFlagBitsNV::eExplicitPreprocess | + IndirectCommandsLayoutUsageFlagBitsNV::eIndexedSequences | + IndirectCommandsLayoutUsageFlagBitsNV::eUnorderedSequences; + }; + + //=== VK_EXT_depth_bias_control === + + // wrapper class for enum VkDepthBiasRepresentationEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDepthBiasRepresentationEXT.html + enum class DepthBiasRepresentationEXT + { + eLeastRepresentableValueFormat = VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT, + eLeastRepresentableValueForceUnorm = VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT, + eFloat = VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT + }; + + //=== VK_EXT_device_memory_report === + + // wrapper class for enum VkDeviceMemoryReportEventTypeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemoryReportEventTypeEXT.html + enum class DeviceMemoryReportEventTypeEXT + { + eAllocate = VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT, + eFree = VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT, + eImport = VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT, + eUnimport = VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT, + eAllocationFailed = VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT + }; + + enum class DeviceMemoryReportFlagBitsEXT : VkDeviceMemoryReportFlagsEXT + { + }; + + // wrapper using for bitmask VkDeviceMemoryReportFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemoryReportFlagsEXT.html + using DeviceMemoryReportFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DeviceMemoryReportFlagsEXT allFlags = {}; + }; + + //=== VK_KHR_video_encode_queue === + + // wrapper class for enum VkVideoEncodeCapabilityFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeCapabilityFlagBitsKHR.html + enum class VideoEncodeCapabilityFlagBitsKHR : VkVideoEncodeCapabilityFlagsKHR + { + ePrecedingExternallyEncodedBytes = VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR, + eInsufficientBitstreamBufferRangeDetection = VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR, + eQuantizationDeltaMap = VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR, + eEmphasisMap = VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeCapabilityFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeCapabilityFlagsKHR.html + using VideoEncodeCapabilityFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeCapabilityFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeCapabilityFlagsKHR allFlags = + VideoEncodeCapabilityFlagBitsKHR::ePrecedingExternallyEncodedBytes | VideoEncodeCapabilityFlagBitsKHR::eInsufficientBitstreamBufferRangeDetection | + VideoEncodeCapabilityFlagBitsKHR::eQuantizationDeltaMap | VideoEncodeCapabilityFlagBitsKHR::eEmphasisMap; + }; + + // wrapper class for enum VkVideoEncodeFeedbackFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeFeedbackFlagBitsKHR.html + enum class VideoEncodeFeedbackFlagBitsKHR : VkVideoEncodeFeedbackFlagsKHR + { + eBitstreamBufferOffset = VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR, + eBitstreamBytesWritten = VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR, + eBitstreamHasOverrides = VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeFeedbackFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeFeedbackFlagsKHR.html + using VideoEncodeFeedbackFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeFeedbackFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeFeedbackFlagsKHR allFlags = VideoEncodeFeedbackFlagBitsKHR::eBitstreamBufferOffset | + VideoEncodeFeedbackFlagBitsKHR::eBitstreamBytesWritten | + VideoEncodeFeedbackFlagBitsKHR::eBitstreamHasOverrides; + }; + + // wrapper class for enum VkVideoEncodeUsageFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeUsageFlagBitsKHR.html + enum class VideoEncodeUsageFlagBitsKHR : VkVideoEncodeUsageFlagsKHR + { + eDefault = VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR, + eTranscoding = VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR, + eStreaming = VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR, + eRecording = VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR, + eConferencing = VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeUsageFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeUsageFlagsKHR.html + using VideoEncodeUsageFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeUsageFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeUsageFlagsKHR allFlags = VideoEncodeUsageFlagBitsKHR::eDefault | VideoEncodeUsageFlagBitsKHR::eTranscoding | + VideoEncodeUsageFlagBitsKHR::eStreaming | VideoEncodeUsageFlagBitsKHR::eRecording | + VideoEncodeUsageFlagBitsKHR::eConferencing; + }; + + // wrapper class for enum VkVideoEncodeContentFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeContentFlagBitsKHR.html + enum class VideoEncodeContentFlagBitsKHR : VkVideoEncodeContentFlagsKHR + { + eDefault = VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR, + eCamera = VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR, + eDesktop = VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR, + eRendered = VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeContentFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeContentFlagsKHR.html + using VideoEncodeContentFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeContentFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeContentFlagsKHR allFlags = + VideoEncodeContentFlagBitsKHR::eDefault | VideoEncodeContentFlagBitsKHR::eCamera | VideoEncodeContentFlagBitsKHR::eDesktop | + VideoEncodeContentFlagBitsKHR::eRendered; + }; + + // wrapper class for enum VkVideoEncodeTuningModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeTuningModeKHR.html + enum class VideoEncodeTuningModeKHR + { + eDefault = VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR, + eHighQuality = VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR, + eLowLatency = VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR, + eUltraLowLatency = VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR, + eLossless = VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR + }; + + // wrapper class for enum VkVideoEncodeRateControlModeFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRateControlModeFlagBitsKHR.html + enum class VideoEncodeRateControlModeFlagBitsKHR : VkVideoEncodeRateControlModeFlagsKHR + { + eDefault = VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR, + eDisabled = VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR, + eCbr = VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR, + eVbr = VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeRateControlModeFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRateControlModeFlagsKHR.html + using VideoEncodeRateControlModeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeRateControlModeFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeRateControlModeFlagsKHR allFlags = + VideoEncodeRateControlModeFlagBitsKHR::eDefault | VideoEncodeRateControlModeFlagBitsKHR::eDisabled | VideoEncodeRateControlModeFlagBitsKHR::eCbr | + VideoEncodeRateControlModeFlagBitsKHR::eVbr; + }; + + // wrapper class for enum VkVideoEncodeFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeFlagBitsKHR.html + enum class VideoEncodeFlagBitsKHR : VkVideoEncodeFlagsKHR + { + eIntraRefresh = VK_VIDEO_ENCODE_INTRA_REFRESH_BIT_KHR, + eWithQuantizationDeltaMap = VK_VIDEO_ENCODE_WITH_QUANTIZATION_DELTA_MAP_BIT_KHR, + eWithEmphasisMap = VK_VIDEO_ENCODE_WITH_EMPHASIS_MAP_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeFlagsKHR.html + using VideoEncodeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeFlagsKHR allFlags = + VideoEncodeFlagBitsKHR::eIntraRefresh | VideoEncodeFlagBitsKHR::eWithQuantizationDeltaMap | VideoEncodeFlagBitsKHR::eWithEmphasisMap; + }; + + enum class VideoEncodeRateControlFlagBitsKHR : VkVideoEncodeRateControlFlagsKHR + { + }; + + // wrapper using for bitmask VkVideoEncodeRateControlFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRateControlFlagsKHR.html + using VideoEncodeRateControlFlagsKHR = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeRateControlFlagsKHR allFlags = {}; + }; + + //=== VK_NV_device_diagnostics_config === + + // wrapper class for enum VkDeviceDiagnosticsConfigFlagBitsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigFlagBitsNV.html + enum class DeviceDiagnosticsConfigFlagBitsNV : VkDeviceDiagnosticsConfigFlagsNV + { + eEnableShaderDebugInfo = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV, + eEnableResourceTracking = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV, + eEnableAutomaticCheckpoints = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV, + eEnableShaderErrorReporting = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV + }; + + // wrapper using for bitmask VkDeviceDiagnosticsConfigFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigFlagsNV.html + using DeviceDiagnosticsConfigFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDeviceDiagnosticsConfigFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DeviceDiagnosticsConfigFlagsNV allFlags = + DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderDebugInfo | DeviceDiagnosticsConfigFlagBitsNV::eEnableResourceTracking | + DeviceDiagnosticsConfigFlagBitsNV::eEnableAutomaticCheckpoints | DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderErrorReporting; + }; + + //=== VK_QCOM_tile_shading === + + // wrapper class for enum VkTileShadingRenderPassFlagBitsQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkTileShadingRenderPassFlagBitsQCOM.html + enum class TileShadingRenderPassFlagBitsQCOM : VkTileShadingRenderPassFlagsQCOM + { + eEnable = VK_TILE_SHADING_RENDER_PASS_ENABLE_BIT_QCOM, + ePerTileExecution = VK_TILE_SHADING_RENDER_PASS_PER_TILE_EXECUTION_BIT_QCOM + }; + + // wrapper using for bitmask VkTileShadingRenderPassFlagsQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkTileShadingRenderPassFlagsQCOM.html + using TileShadingRenderPassFlagsQCOM = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkTileShadingRenderPassFlagBitsQCOM; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR TileShadingRenderPassFlagsQCOM allFlags = + TileShadingRenderPassFlagBitsQCOM::eEnable | TileShadingRenderPassFlagBitsQCOM::ePerTileExecution; + }; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + + // wrapper class for enum VkExportMetalObjectTypeFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalObjectTypeFlagBitsEXT.html + enum class ExportMetalObjectTypeFlagBitsEXT : VkExportMetalObjectTypeFlagsEXT + { + eMetalDevice = VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT, + eMetalCommandQueue = VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT, + eMetalBuffer = VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT, + eMetalTexture = VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT, + eMetalIosurface = VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT, + eMetalSharedEvent = VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT + }; + + // wrapper using for bitmask VkExportMetalObjectTypeFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalObjectTypeFlagsEXT.html + using ExportMetalObjectTypeFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkExportMetalObjectTypeFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ExportMetalObjectTypeFlagsEXT allFlags = + ExportMetalObjectTypeFlagBitsEXT::eMetalDevice | ExportMetalObjectTypeFlagBitsEXT::eMetalCommandQueue | ExportMetalObjectTypeFlagBitsEXT::eMetalBuffer | + ExportMetalObjectTypeFlagBitsEXT::eMetalTexture | ExportMetalObjectTypeFlagBitsEXT::eMetalIosurface | ExportMetalObjectTypeFlagBitsEXT::eMetalSharedEvent; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_device_address_commands === + + // wrapper class for enum VkAddressCommandFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAddressCommandFlagBitsKHR.html + enum class AddressCommandFlagBitsKHR : VkAddressCommandFlagsKHR + { + eProtected = VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR, + eFullyBound = VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR, + eStorageBufferUsage = VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR, + eUnknownStorageBufferUsage = VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR, + eTransformFeedbackBufferUsage = VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR, + eUnknownTransformFeedbackBufferUsage = VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR + }; + + // wrapper using for bitmask VkAddressCommandFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAddressCommandFlagsKHR.html + using AddressCommandFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkAddressCommandFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AddressCommandFlagsKHR allFlags = + AddressCommandFlagBitsKHR::eProtected | AddressCommandFlagBitsKHR::eFullyBound | AddressCommandFlagBitsKHR::eStorageBufferUsage | + AddressCommandFlagBitsKHR::eUnknownStorageBufferUsage | AddressCommandFlagBitsKHR::eTransformFeedbackBufferUsage | + AddressCommandFlagBitsKHR::eUnknownTransformFeedbackBufferUsage; + }; + + //=== VK_EXT_graphics_pipeline_library === + + // wrapper class for enum VkGraphicsPipelineLibraryFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryFlagBitsEXT.html + enum class GraphicsPipelineLibraryFlagBitsEXT : VkGraphicsPipelineLibraryFlagsEXT + { + eVertexInputInterface = VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT, + ePreRasterizationShaders = VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, + eFragmentShader = VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, + eFragmentOutputInterface = VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT + }; + + // wrapper using for bitmask VkGraphicsPipelineLibraryFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryFlagsEXT.html + using GraphicsPipelineLibraryFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkGraphicsPipelineLibraryFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR GraphicsPipelineLibraryFlagsEXT allFlags = + GraphicsPipelineLibraryFlagBitsEXT::eVertexInputInterface | GraphicsPipelineLibraryFlagBitsEXT::ePreRasterizationShaders | + GraphicsPipelineLibraryFlagBitsEXT::eFragmentShader | GraphicsPipelineLibraryFlagBitsEXT::eFragmentOutputInterface; + }; + + //=== VK_NV_fragment_shading_rate_enums === + + // wrapper class for enum VkFragmentShadingRateNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFragmentShadingRateNV.html + enum class FragmentShadingRateNV + { + e1InvocationPerPixel = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV, + e1InvocationPer1X2Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV, + e1InvocationPer2X1Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV, + e1InvocationPer2X2Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV, + e1InvocationPer2X4Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV, + e1InvocationPer4X2Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV, + e1InvocationPer4X4Pixels = VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV, + e2InvocationsPerPixel = VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV, + e4InvocationsPerPixel = VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV, + e8InvocationsPerPixel = VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV, + e16InvocationsPerPixel = VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV, + eNoInvocations = VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV + }; + + // wrapper class for enum VkFragmentShadingRateTypeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFragmentShadingRateTypeNV.html + enum class FragmentShadingRateTypeNV + { + eFragmentSize = VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV, + eEnums = VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV + }; + + //=== VK_NV_ray_tracing_motion_blur === + + // wrapper class for enum VkAccelerationStructureMotionInstanceTypeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInstanceTypeNV.html + enum class AccelerationStructureMotionInstanceTypeNV + { + eStatic = VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV, + eMatrixMotion = VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV, + eSrtMotion = VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV + }; + + enum class AccelerationStructureMotionInfoFlagBitsNV : VkAccelerationStructureMotionInfoFlagsNV + { + }; + + // wrapper using for bitmask VkAccelerationStructureMotionInfoFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInfoFlagsNV.html + using AccelerationStructureMotionInfoFlagsNV = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AccelerationStructureMotionInfoFlagsNV allFlags = {}; + }; + + enum class AccelerationStructureMotionInstanceFlagBitsNV : VkAccelerationStructureMotionInstanceFlagsNV + { + }; + + // wrapper using for bitmask VkAccelerationStructureMotionInstanceFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInstanceFlagsNV.html + using AccelerationStructureMotionInstanceFlagsNV = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AccelerationStructureMotionInstanceFlagsNV allFlags = {}; + }; + + //=== VK_EXT_image_compression_control === + + // wrapper class for enum VkImageCompressionFlagBitsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCompressionFlagBitsEXT.html + enum class ImageCompressionFlagBitsEXT : VkImageCompressionFlagsEXT + { + eDefault = VK_IMAGE_COMPRESSION_DEFAULT_EXT, + eFixedRateDefault = VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT, + eFixedRateExplicit = VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT, + eDisabled = VK_IMAGE_COMPRESSION_DISABLED_EXT + }; + + // wrapper using for bitmask VkImageCompressionFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCompressionFlagsEXT.html + using ImageCompressionFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkImageCompressionFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ImageCompressionFlagsEXT allFlags = + ImageCompressionFlagBitsEXT::eDefault | ImageCompressionFlagBitsEXT::eFixedRateDefault | ImageCompressionFlagBitsEXT::eFixedRateExplicit | + ImageCompressionFlagBitsEXT::eDisabled; + }; + + // wrapper class for enum VkImageCompressionFixedRateFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCompressionFixedRateFlagBitsEXT.html + enum class ImageCompressionFixedRateFlagBitsEXT : VkImageCompressionFixedRateFlagsEXT + { + eNone = VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT, + e1Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT, + e2Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT, + e3Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT, + e4Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT, + e5Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT, + e6Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT, + e7Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT, + e8Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT, + e9Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT, + e10Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT, + e11Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT, + e12Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT, + e13Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT, + e14Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT, + e15Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT, + e16Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT, + e17Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT, + e18Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT, + e19Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT, + e20Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT, + e21Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT, + e22Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT, + e23Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT, + e24Bpc = VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT + }; + + // wrapper using for bitmask VkImageCompressionFixedRateFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCompressionFixedRateFlagsEXT.html + using ImageCompressionFixedRateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkImageCompressionFixedRateFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ImageCompressionFixedRateFlagsEXT allFlags = + ImageCompressionFixedRateFlagBitsEXT::eNone | ImageCompressionFixedRateFlagBitsEXT::e1Bpc | ImageCompressionFixedRateFlagBitsEXT::e2Bpc | + ImageCompressionFixedRateFlagBitsEXT::e3Bpc | ImageCompressionFixedRateFlagBitsEXT::e4Bpc | ImageCompressionFixedRateFlagBitsEXT::e5Bpc | + ImageCompressionFixedRateFlagBitsEXT::e6Bpc | ImageCompressionFixedRateFlagBitsEXT::e7Bpc | ImageCompressionFixedRateFlagBitsEXT::e8Bpc | + ImageCompressionFixedRateFlagBitsEXT::e9Bpc | ImageCompressionFixedRateFlagBitsEXT::e10Bpc | ImageCompressionFixedRateFlagBitsEXT::e11Bpc | + ImageCompressionFixedRateFlagBitsEXT::e12Bpc | ImageCompressionFixedRateFlagBitsEXT::e13Bpc | ImageCompressionFixedRateFlagBitsEXT::e14Bpc | + ImageCompressionFixedRateFlagBitsEXT::e15Bpc | ImageCompressionFixedRateFlagBitsEXT::e16Bpc | ImageCompressionFixedRateFlagBitsEXT::e17Bpc | + ImageCompressionFixedRateFlagBitsEXT::e18Bpc | ImageCompressionFixedRateFlagBitsEXT::e19Bpc | ImageCompressionFixedRateFlagBitsEXT::e20Bpc | + ImageCompressionFixedRateFlagBitsEXT::e21Bpc | ImageCompressionFixedRateFlagBitsEXT::e22Bpc | ImageCompressionFixedRateFlagBitsEXT::e23Bpc | + ImageCompressionFixedRateFlagBitsEXT::e24Bpc; + }; + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + enum class DirectFBSurfaceCreateFlagBitsEXT : VkDirectFBSurfaceCreateFlagsEXT + { + }; + + // wrapper using for bitmask VkDirectFBSurfaceCreateFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDirectFBSurfaceCreateFlagsEXT.html + using DirectFBSurfaceCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DirectFBSurfaceCreateFlagsEXT allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_device_address_binding_report === + + // wrapper class for enum VkDeviceAddressBindingFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceAddressBindingFlagBitsEXT.html + enum class DeviceAddressBindingFlagBitsEXT : VkDeviceAddressBindingFlagsEXT + { + eInternalObject = VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT + }; + + // wrapper using for bitmask VkDeviceAddressBindingFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceAddressBindingFlagsEXT.html + using DeviceAddressBindingFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDeviceAddressBindingFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DeviceAddressBindingFlagsEXT allFlags = DeviceAddressBindingFlagBitsEXT::eInternalObject; + }; + + // wrapper class for enum VkDeviceAddressBindingTypeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceAddressBindingTypeEXT.html + enum class DeviceAddressBindingTypeEXT + { + eBind = VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT, + eUnbind = VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT + }; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + // wrapper class for enum VkImageConstraintsInfoFlagBitsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageConstraintsInfoFlagBitsFUCHSIA.html + enum class ImageConstraintsInfoFlagBitsFUCHSIA : VkImageConstraintsInfoFlagsFUCHSIA + { + eCpuReadRarely = VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA, + eCpuReadOften = VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA, + eCpuWriteRarely = VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA, + eCpuWriteOften = VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA, + eProtectedOptional = VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA + }; + + // wrapper using for bitmask VkImageConstraintsInfoFlagsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageConstraintsInfoFlagsFUCHSIA.html + using ImageConstraintsInfoFlagsFUCHSIA = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkImageConstraintsInfoFlagBitsFUCHSIA; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ImageConstraintsInfoFlagsFUCHSIA allFlags = + ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadRarely | ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadOften | + ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteRarely | ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteOften | + ImageConstraintsInfoFlagBitsFUCHSIA::eProtectedOptional; + }; + + enum class ImageFormatConstraintsFlagBitsFUCHSIA : VkImageFormatConstraintsFlagsFUCHSIA + { + }; + + // wrapper using for bitmask VkImageFormatConstraintsFlagsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageFormatConstraintsFlagsFUCHSIA.html + using ImageFormatConstraintsFlagsFUCHSIA = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ImageFormatConstraintsFlagsFUCHSIA allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_EXT_frame_boundary === + + // wrapper class for enum VkFrameBoundaryFlagBitsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFrameBoundaryFlagBitsEXT.html + enum class FrameBoundaryFlagBitsEXT : VkFrameBoundaryFlagsEXT + { + eFrameEnd = VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT + }; + + // wrapper using for bitmask VkFrameBoundaryFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFrameBoundaryFlagsEXT.html + using FrameBoundaryFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkFrameBoundaryFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR FrameBoundaryFlagsEXT allFlags = FrameBoundaryFlagBitsEXT::eFrameEnd; + }; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + enum class ScreenSurfaceCreateFlagBitsQNX : VkScreenSurfaceCreateFlagsQNX + { + }; + + // wrapper using for bitmask VkScreenSurfaceCreateFlagsQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkScreenSurfaceCreateFlagsQNX.html + using ScreenSurfaceCreateFlagsQNX = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ScreenSurfaceCreateFlagsQNX allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_VALVE_video_encode_rgb_conversion === + + // wrapper class for enum VkVideoEncodeRgbModelConversionFlagBitsVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRgbModelConversionFlagBitsVALVE.html + enum class VideoEncodeRgbModelConversionFlagBitsVALVE : VkVideoEncodeRgbModelConversionFlagsVALVE + { + eRgbIdentity = VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_RGB_IDENTITY_BIT_VALVE, + eYcbcrIdentity = VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_IDENTITY_BIT_VALVE, + eYcbcr709 = VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_709_BIT_VALVE, + eYcbcr601 = VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_601_BIT_VALVE, + eYcbcr2020 = VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_2020_BIT_VALVE + }; + + // wrapper using for bitmask VkVideoEncodeRgbModelConversionFlagsVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRgbModelConversionFlagsVALVE.html + using VideoEncodeRgbModelConversionFlagsVALVE = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeRgbModelConversionFlagBitsVALVE; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeRgbModelConversionFlagsVALVE allFlags = + VideoEncodeRgbModelConversionFlagBitsVALVE::eRgbIdentity | VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcrIdentity | + VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcr709 | VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcr601 | + VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcr2020; + }; + + // wrapper class for enum VkVideoEncodeRgbRangeCompressionFlagBitsVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRgbRangeCompressionFlagBitsVALVE.html + enum class VideoEncodeRgbRangeCompressionFlagBitsVALVE : VkVideoEncodeRgbRangeCompressionFlagsVALVE + { + eFullRange = VK_VIDEO_ENCODE_RGB_RANGE_COMPRESSION_FULL_RANGE_BIT_VALVE, + eNarrowRange = VK_VIDEO_ENCODE_RGB_RANGE_COMPRESSION_NARROW_RANGE_BIT_VALVE + }; + + // wrapper using for bitmask VkVideoEncodeRgbRangeCompressionFlagsVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRgbRangeCompressionFlagsVALVE.html + using VideoEncodeRgbRangeCompressionFlagsVALVE = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeRgbRangeCompressionFlagBitsVALVE; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeRgbRangeCompressionFlagsVALVE allFlags = + VideoEncodeRgbRangeCompressionFlagBitsVALVE::eFullRange | VideoEncodeRgbRangeCompressionFlagBitsVALVE::eNarrowRange; + }; + + // wrapper class for enum VkVideoEncodeRgbChromaOffsetFlagBitsVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRgbChromaOffsetFlagBitsVALVE.html + enum class VideoEncodeRgbChromaOffsetFlagBitsVALVE : VkVideoEncodeRgbChromaOffsetFlagsVALVE + { + eCositedEven = VK_VIDEO_ENCODE_RGB_CHROMA_OFFSET_COSITED_EVEN_BIT_VALVE, + eMidpoint = VK_VIDEO_ENCODE_RGB_CHROMA_OFFSET_MIDPOINT_BIT_VALVE + }; + + // wrapper using for bitmask VkVideoEncodeRgbChromaOffsetFlagsVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRgbChromaOffsetFlagsVALVE.html + using VideoEncodeRgbChromaOffsetFlagsVALVE = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeRgbChromaOffsetFlagBitsVALVE; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeRgbChromaOffsetFlagsVALVE allFlags = + VideoEncodeRgbChromaOffsetFlagBitsVALVE::eCositedEven | VideoEncodeRgbChromaOffsetFlagBitsVALVE::eMidpoint; + }; + + //=== VK_EXT_opacity_micromap === + + // wrapper class for enum VkMicromapTypeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapTypeEXT.html + enum class MicromapTypeEXT + { + eOpacityMicromap = VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + eDisplacementMicromapNV = VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + + // wrapper class for enum VkBuildMicromapFlagBitsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuildMicromapFlagBitsEXT.html + enum class BuildMicromapFlagBitsEXT : VkBuildMicromapFlagsEXT + { + ePreferFastTrace = VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT, + ePreferFastBuild = VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT, + eAllowCompaction = VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT + }; + + // wrapper using for bitmask VkBuildMicromapFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuildMicromapFlagsEXT.html + using BuildMicromapFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkBuildMicromapFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR BuildMicromapFlagsEXT allFlags = + BuildMicromapFlagBitsEXT::ePreferFastTrace | BuildMicromapFlagBitsEXT::ePreferFastBuild | BuildMicromapFlagBitsEXT::eAllowCompaction; + }; + + // wrapper class for enum VkCopyMicromapModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyMicromapModeEXT.html + enum class CopyMicromapModeEXT + { + eClone = VK_COPY_MICROMAP_MODE_CLONE_EXT, + eSerialize = VK_COPY_MICROMAP_MODE_SERIALIZE_EXT, + eDeserialize = VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT, + eCompact = VK_COPY_MICROMAP_MODE_COMPACT_EXT + }; + + // wrapper class for enum VkMicromapCreateFlagBitsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapCreateFlagBitsEXT.html + enum class MicromapCreateFlagBitsEXT : VkMicromapCreateFlagsEXT + { + eDeviceAddressCaptureReplay = VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT + }; + + // wrapper using for bitmask VkMicromapCreateFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapCreateFlagsEXT.html + using MicromapCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkMicromapCreateFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR MicromapCreateFlagsEXT allFlags = MicromapCreateFlagBitsEXT::eDeviceAddressCaptureReplay; + }; + + // wrapper class for enum VkBuildMicromapModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuildMicromapModeEXT.html + enum class BuildMicromapModeEXT + { + eBuild = VK_BUILD_MICROMAP_MODE_BUILD_EXT + }; + + // wrapper class for enum VkOpacityMicromapFormatEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpacityMicromapFormatEXT.html + enum class OpacityMicromapFormatEXT + { + e2State = VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT, + e4State = VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT + }; + + // wrapper class for enum VkOpacityMicromapSpecialIndexEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpacityMicromapSpecialIndexEXT.html + enum class OpacityMicromapSpecialIndexEXT + { + eFullyTransparent = VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT, + eFullyOpaque = VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT, + eFullyUnknownTransparent = VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT, + eFullyUnknownOpaque = VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT, + eClusterGeometryDisableOpacityMicromapNV = VK_OPACITY_MICROMAP_SPECIAL_INDEX_CLUSTER_GEOMETRY_DISABLE_OPACITY_MICROMAP_NV + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_displacement_micromap === + + // wrapper class for enum VkDisplacementMicromapFormatNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplacementMicromapFormatNV.html + enum class DisplacementMicromapFormatNV + { + e64Triangles64Bytes = VK_DISPLACEMENT_MICROMAP_FORMAT_64_TRIANGLES_64_BYTES_NV, + e256Triangles128Bytes = VK_DISPLACEMENT_MICROMAP_FORMAT_256_TRIANGLES_128_BYTES_NV, + e1024Triangles128Bytes = VK_DISPLACEMENT_MICROMAP_FORMAT_1024_TRIANGLES_128_BYTES_NV + }; + +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_ARM_scheduling_controls === + + // wrapper class for enum VkPhysicalDeviceSchedulingControlsFlagBitsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFlagBitsARM.html + enum class PhysicalDeviceSchedulingControlsFlagBitsARM : VkPhysicalDeviceSchedulingControlsFlagsARM + { + eShaderCoreCount = VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM + }; + + // wrapper using for bitmask VkPhysicalDeviceSchedulingControlsFlagsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFlagsARM.html + using PhysicalDeviceSchedulingControlsFlagsARM = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPhysicalDeviceSchedulingControlsFlagBitsARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PhysicalDeviceSchedulingControlsFlagsARM allFlags = PhysicalDeviceSchedulingControlsFlagBitsARM::eShaderCoreCount; + }; + + //=== VK_NV_ray_tracing_linear_swept_spheres === + + // wrapper class for enum VkRayTracingLssIndexingModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRayTracingLssIndexingModeNV.html + enum class RayTracingLssIndexingModeNV + { + eList = VK_RAY_TRACING_LSS_INDEXING_MODE_LIST_NV, + eSuccessive = VK_RAY_TRACING_LSS_INDEXING_MODE_SUCCESSIVE_NV + }; + + // wrapper class for enum VkRayTracingLssPrimitiveEndCapsModeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRayTracingLssPrimitiveEndCapsModeNV.html + enum class RayTracingLssPrimitiveEndCapsModeNV + { + eNone = VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_NONE_NV, + eChained = VK_RAY_TRACING_LSS_PRIMITIVE_END_CAPS_MODE_CHAINED_NV + }; + + //=== VK_EXT_subpass_merge_feedback === + + // wrapper class for enum VkSubpassMergeStatusEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassMergeStatusEXT.html + enum class SubpassMergeStatusEXT + { + eMerged = VK_SUBPASS_MERGE_STATUS_MERGED_EXT, + eDisallowed = VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT, + eNotMergedSideEffects = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT, + eNotMergedSamplesMismatch = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT, + eNotMergedViewsMismatch = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT, + eNotMergedAliasing = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT, + eNotMergedDependencies = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT, + eNotMergedIncompatibleInputAttachment = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT, + eNotMergedTooManyAttachments = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT, + eNotMergedInsufficientStorage = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT, + eNotMergedDepthStencilCount = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT, + eNotMergedResolveAttachmentReuse = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT, + eNotMergedSingleSubpass = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT, + eNotMergedUnspecified = VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT + }; + + //=== VK_LUNARG_direct_driver_loading === + + // wrapper class for enum VkDirectDriverLoadingModeLUNARG, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDirectDriverLoadingModeLUNARG.html + enum class DirectDriverLoadingModeLUNARG + { + eExclusive = VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG, + eInclusive = VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG + }; + + enum class DirectDriverLoadingFlagBitsLUNARG : VkDirectDriverLoadingFlagsLUNARG + { + }; + + // wrapper using for bitmask VkDirectDriverLoadingFlagsLUNARG, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDirectDriverLoadingFlagsLUNARG.html + using DirectDriverLoadingFlagsLUNARG = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DirectDriverLoadingFlagsLUNARG allFlags = {}; + }; + + //=== VK_ARM_tensors === + + // wrapper class for enum VkTensorCreateFlagBitsARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorCreateFlagBitsARM.html + enum class TensorCreateFlagBitsARM : VkTensorCreateFlagsARM + { + eMutableFormat = VK_TENSOR_CREATE_MUTABLE_FORMAT_BIT_ARM, + eProtected = VK_TENSOR_CREATE_PROTECTED_BIT_ARM, + eDescriptorHeapCaptureReplay = VK_TENSOR_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_ARM, + eDescriptorBufferCaptureReplay = VK_TENSOR_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_ARM + }; + + // wrapper using for bitmask VkTensorCreateFlagsARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorCreateFlagsARM.html + using TensorCreateFlagsARM = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkTensorCreateFlagBitsARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR TensorCreateFlagsARM allFlags = TensorCreateFlagBitsARM::eMutableFormat | TensorCreateFlagBitsARM::eProtected | + TensorCreateFlagBitsARM::eDescriptorHeapCaptureReplay | + TensorCreateFlagBitsARM::eDescriptorBufferCaptureReplay; + }; + + // wrapper class for enum VkTensorUsageFlagBitsARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorUsageFlagBitsARM.html + enum class TensorUsageFlagBitsARM : VkTensorUsageFlagsARM + { + eShader = VK_TENSOR_USAGE_SHADER_BIT_ARM, + eTransferSrc = VK_TENSOR_USAGE_TRANSFER_SRC_BIT_ARM, + eTransferDst = VK_TENSOR_USAGE_TRANSFER_DST_BIT_ARM, + eImageAliasing = VK_TENSOR_USAGE_IMAGE_ALIASING_BIT_ARM, + eDataGraph = VK_TENSOR_USAGE_DATA_GRAPH_BIT_ARM + }; + + // wrapper using for bitmask VkTensorUsageFlagsARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorUsageFlagsARM.html + using TensorUsageFlagsARM = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkTensorUsageFlagBitsARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR TensorUsageFlagsARM allFlags = TensorUsageFlagBitsARM::eShader | TensorUsageFlagBitsARM::eTransferSrc | + TensorUsageFlagBitsARM::eTransferDst | TensorUsageFlagBitsARM::eImageAliasing | + TensorUsageFlagBitsARM::eDataGraph; + }; + + // wrapper class for enum VkTensorTilingARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorTilingARM.html + enum class TensorTilingARM + { + eOptimal = VK_TENSOR_TILING_OPTIMAL_ARM, + eLinear = VK_TENSOR_TILING_LINEAR_ARM + }; + + //=== VK_NV_optical_flow === + + // wrapper class for enum VkOpticalFlowUsageFlagBitsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowUsageFlagBitsNV.html + enum class OpticalFlowUsageFlagBitsNV : VkOpticalFlowUsageFlagsNV + { + eUnknown = VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV, + eInput = VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV, + eOutput = VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV, + eHint = VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV, + eCost = VK_OPTICAL_FLOW_USAGE_COST_BIT_NV, + eGlobalFlow = VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV + }; + + // wrapper using for bitmask VkOpticalFlowUsageFlagsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowUsageFlagsNV.html + using OpticalFlowUsageFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkOpticalFlowUsageFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR OpticalFlowUsageFlagsNV allFlags = OpticalFlowUsageFlagBitsNV::eUnknown | OpticalFlowUsageFlagBitsNV::eInput | + OpticalFlowUsageFlagBitsNV::eOutput | OpticalFlowUsageFlagBitsNV::eHint | + OpticalFlowUsageFlagBitsNV::eCost | OpticalFlowUsageFlagBitsNV::eGlobalFlow; + }; + + // wrapper class for enum VkOpticalFlowGridSizeFlagBitsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowGridSizeFlagBitsNV.html + enum class OpticalFlowGridSizeFlagBitsNV : VkOpticalFlowGridSizeFlagsNV + { + eUnknown = VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV, + e1X1 = VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV, + e2X2 = VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV, + e4X4 = VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV, + e8X8 = VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV + }; + + // wrapper using for bitmask VkOpticalFlowGridSizeFlagsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowGridSizeFlagsNV.html + using OpticalFlowGridSizeFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkOpticalFlowGridSizeFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR OpticalFlowGridSizeFlagsNV allFlags = OpticalFlowGridSizeFlagBitsNV::eUnknown | OpticalFlowGridSizeFlagBitsNV::e1X1 | + OpticalFlowGridSizeFlagBitsNV::e2X2 | OpticalFlowGridSizeFlagBitsNV::e4X4 | + OpticalFlowGridSizeFlagBitsNV::e8X8; + }; + + // wrapper class for enum VkOpticalFlowPerformanceLevelNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowPerformanceLevelNV.html + enum class OpticalFlowPerformanceLevelNV + { + eUnknown = VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV, + eSlow = VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV, + eMedium = VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV, + eFast = VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV + }; + + // wrapper class for enum VkOpticalFlowSessionBindingPointNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowSessionBindingPointNV.html + enum class OpticalFlowSessionBindingPointNV + { + eUnknown = VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV, + eInput = VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV, + eReference = VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV, + eHint = VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV, + eFlowVector = VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV, + eBackwardFlowVector = VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV, + eCost = VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV, + eBackwardCost = VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV, + eGlobalFlow = VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV + }; + + // wrapper class for enum VkOpticalFlowSessionCreateFlagBitsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateFlagBitsNV.html + enum class OpticalFlowSessionCreateFlagBitsNV : VkOpticalFlowSessionCreateFlagsNV + { + eEnableHint = VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV, + eEnableCost = VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV, + eEnableGlobalFlow = VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV, + eAllowRegions = VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV, + eBothDirections = VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV + }; + + // wrapper using for bitmask VkOpticalFlowSessionCreateFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateFlagsNV.html + using OpticalFlowSessionCreateFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkOpticalFlowSessionCreateFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR OpticalFlowSessionCreateFlagsNV allFlags = + OpticalFlowSessionCreateFlagBitsNV::eEnableHint | OpticalFlowSessionCreateFlagBitsNV::eEnableCost | + OpticalFlowSessionCreateFlagBitsNV::eEnableGlobalFlow | OpticalFlowSessionCreateFlagBitsNV::eAllowRegions | + OpticalFlowSessionCreateFlagBitsNV::eBothDirections; + }; + + // wrapper class for enum VkOpticalFlowExecuteFlagBitsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowExecuteFlagBitsNV.html + enum class OpticalFlowExecuteFlagBitsNV : VkOpticalFlowExecuteFlagsNV + { + eDisableTemporalHints = VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV + }; + + // wrapper using for bitmask VkOpticalFlowExecuteFlagsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowExecuteFlagsNV.html + using OpticalFlowExecuteFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkOpticalFlowExecuteFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR OpticalFlowExecuteFlagsNV allFlags = OpticalFlowExecuteFlagBitsNV::eDisableTemporalHints; + }; + + //=== VK_AMD_anti_lag === + + // wrapper class for enum VkAntiLagModeAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAntiLagModeAMD.html + enum class AntiLagModeAMD + { + eDriverControl = VK_ANTI_LAG_MODE_DRIVER_CONTROL_AMD, + eOn = VK_ANTI_LAG_MODE_ON_AMD, + eOff = VK_ANTI_LAG_MODE_OFF_AMD + }; + + // wrapper class for enum VkAntiLagStageAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAntiLagStageAMD.html + enum class AntiLagStageAMD + { + eInput = VK_ANTI_LAG_STAGE_INPUT_AMD, + ePresent = VK_ANTI_LAG_STAGE_PRESENT_AMD + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_dense_geometry_format === + + // wrapper class for enum VkCompressedTriangleFormatAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCompressedTriangleFormatAMDX.html + enum class CompressedTriangleFormatAMDX + { + eDgf1 = VK_COMPRESSED_TRIANGLE_FORMAT_DGF1_AMDX + }; + +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_shader_object === + + // wrapper class for enum VkShaderCreateFlagBitsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderCreateFlagBitsEXT.html + enum class ShaderCreateFlagBitsEXT : VkShaderCreateFlagsEXT + { + eLinkStage = VK_SHADER_CREATE_LINK_STAGE_BIT_EXT, + eDescriptorHeap = VK_SHADER_CREATE_DESCRIPTOR_HEAP_BIT_EXT, + eInstrumentShaderARM = VK_SHADER_CREATE_INSTRUMENT_SHADER_BIT_ARM, + eAllowVaryingSubgroupSize = VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, + eRequireFullSubgroups = VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT, + eNoTaskShader = VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT, + eDispatchBase = VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT, + eFragmentShadingRateAttachment = VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT, + eFragmentDensityMapAttachment = VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT, + eIndirectBindable = VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT, + e64BitIndexing = VK_SHADER_CREATE_64_BIT_INDEXING_BIT_EXT + }; + + // wrapper using for bitmask VkShaderCreateFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderCreateFlagsEXT.html + using ShaderCreateFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkShaderCreateFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ShaderCreateFlagsEXT allFlags = + ShaderCreateFlagBitsEXT::eLinkStage | ShaderCreateFlagBitsEXT::eDescriptorHeap | ShaderCreateFlagBitsEXT::eInstrumentShaderARM | + ShaderCreateFlagBitsEXT::eAllowVaryingSubgroupSize | ShaderCreateFlagBitsEXT::eRequireFullSubgroups | ShaderCreateFlagBitsEXT::eNoTaskShader | + ShaderCreateFlagBitsEXT::eDispatchBase | ShaderCreateFlagBitsEXT::eFragmentShadingRateAttachment | + ShaderCreateFlagBitsEXT::eFragmentDensityMapAttachment | ShaderCreateFlagBitsEXT::eIndirectBindable | ShaderCreateFlagBitsEXT::e64BitIndexing; + }; + + // wrapper class for enum VkShaderCodeTypeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderCodeTypeEXT.html + enum class ShaderCodeTypeEXT + { + eBinary = VK_SHADER_CODE_TYPE_BINARY_EXT, + eSpirv = VK_SHADER_CODE_TYPE_SPIRV_EXT + }; + + //=== VK_KHR_surface_maintenance1 === + + // wrapper class for enum VkPresentScalingFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentScalingFlagBitsKHR.html + enum class PresentScalingFlagBitsKHR : VkPresentScalingFlagsKHR + { + eOneToOne = VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR, + eOneToOneEXT = VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT, + eAspectRatioStretch = VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR, + eAspectRatioStretchEXT = VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT, + eStretch = VK_PRESENT_SCALING_STRETCH_BIT_KHR, + eStretchEXT = VK_PRESENT_SCALING_STRETCH_BIT_EXT + }; + + using PresentScalingFlagBitsEXT = PresentScalingFlagBitsKHR; + + // wrapper using for bitmask VkPresentScalingFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentScalingFlagsKHR.html + using PresentScalingFlagsKHR = Flags; + using PresentScalingFlagsEXT = PresentScalingFlagsKHR; + + template <> + struct FlagTraits + { + using WrappedType = VkPresentScalingFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PresentScalingFlagsKHR allFlags = + PresentScalingFlagBitsKHR::eOneToOne | PresentScalingFlagBitsKHR::eAspectRatioStretch | PresentScalingFlagBitsKHR::eStretch; + }; + + // wrapper class for enum VkPresentGravityFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentGravityFlagBitsKHR.html + enum class PresentGravityFlagBitsKHR : VkPresentGravityFlagsKHR + { + eMin = VK_PRESENT_GRAVITY_MIN_BIT_KHR, + eMinEXT = VK_PRESENT_GRAVITY_MIN_BIT_EXT, + eMax = VK_PRESENT_GRAVITY_MAX_BIT_KHR, + eMaxEXT = VK_PRESENT_GRAVITY_MAX_BIT_EXT, + eCentered = VK_PRESENT_GRAVITY_CENTERED_BIT_KHR, + eCenteredEXT = VK_PRESENT_GRAVITY_CENTERED_BIT_EXT + }; + + using PresentGravityFlagBitsEXT = PresentGravityFlagBitsKHR; + + // wrapper using for bitmask VkPresentGravityFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentGravityFlagsKHR.html + using PresentGravityFlagsKHR = Flags; + using PresentGravityFlagsEXT = PresentGravityFlagsKHR; + + template <> + struct FlagTraits + { + using WrappedType = VkPresentGravityFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PresentGravityFlagsKHR allFlags = + PresentGravityFlagBitsKHR::eMin | PresentGravityFlagBitsKHR::eMax | PresentGravityFlagBitsKHR::eCentered; + }; + + //=== VK_NV_cooperative_vector === + + // wrapper class for enum VkCooperativeVectorMatrixLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCooperativeVectorMatrixLayoutNV.html + enum class CooperativeVectorMatrixLayoutNV + { + eRowMajor = VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_ROW_MAJOR_NV, + eColumnMajor = VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_COLUMN_MAJOR_NV, + eInferencingOptimal = VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_INFERENCING_OPTIMAL_NV, + eTrainingOptimal = VK_COOPERATIVE_VECTOR_MATRIX_LAYOUT_TRAINING_OPTIMAL_NV + }; + + // wrapper class for enum VkComponentTypeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkComponentTypeKHR.html + enum class ComponentTypeKHR + { + eFloat16 = VK_COMPONENT_TYPE_FLOAT16_KHR, + eFloat16NV = VK_COMPONENT_TYPE_FLOAT16_NV, + eFloat32 = VK_COMPONENT_TYPE_FLOAT32_KHR, + eFloat32NV = VK_COMPONENT_TYPE_FLOAT32_NV, + eFloat64 = VK_COMPONENT_TYPE_FLOAT64_KHR, + eFloat64NV = VK_COMPONENT_TYPE_FLOAT64_NV, + eSint8 = VK_COMPONENT_TYPE_SINT8_KHR, + eSint8NV = VK_COMPONENT_TYPE_SINT8_NV, + eSint16 = VK_COMPONENT_TYPE_SINT16_KHR, + eSint16NV = VK_COMPONENT_TYPE_SINT16_NV, + eSint32 = VK_COMPONENT_TYPE_SINT32_KHR, + eSint32NV = VK_COMPONENT_TYPE_SINT32_NV, + eSint64 = VK_COMPONENT_TYPE_SINT64_KHR, + eSint64NV = VK_COMPONENT_TYPE_SINT64_NV, + eUint8 = VK_COMPONENT_TYPE_UINT8_KHR, + eUint8NV = VK_COMPONENT_TYPE_UINT8_NV, + eUint16 = VK_COMPONENT_TYPE_UINT16_KHR, + eUint16NV = VK_COMPONENT_TYPE_UINT16_NV, + eUint32 = VK_COMPONENT_TYPE_UINT32_KHR, + eUint32NV = VK_COMPONENT_TYPE_UINT32_NV, + eUint64 = VK_COMPONENT_TYPE_UINT64_KHR, + eUint64NV = VK_COMPONENT_TYPE_UINT64_NV, + eBfloat16 = VK_COMPONENT_TYPE_BFLOAT16_KHR, + eSint8PackedNV = VK_COMPONENT_TYPE_SINT8_PACKED_NV, + eUint8PackedNV = VK_COMPONENT_TYPE_UINT8_PACKED_NV, + eFloat8E4M3EXT = VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT, + eFloatE4M3 = VK_COMPONENT_TYPE_FLOAT_E4M3_NV, + eFloatE4M3NV = VK_COMPONENT_TYPE_FLOAT_E4M3_NV, + eFloat8E5M2EXT = VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT, + eFloatE5M2 = VK_COMPONENT_TYPE_FLOAT_E5M2_NV, + eFloatE5M2NV = VK_COMPONENT_TYPE_FLOAT_E5M2_NV + }; + + using ComponentTypeNV = ComponentTypeKHR; + + //=== VK_EXT_layer_settings === + + // wrapper class for enum VkLayerSettingTypeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLayerSettingTypeEXT.html + enum class LayerSettingTypeEXT + { + eBool32 = VK_LAYER_SETTING_TYPE_BOOL32_EXT, + eInt32 = VK_LAYER_SETTING_TYPE_INT32_EXT, + eInt64 = VK_LAYER_SETTING_TYPE_INT64_EXT, + eUint32 = VK_LAYER_SETTING_TYPE_UINT32_EXT, + eUint64 = VK_LAYER_SETTING_TYPE_UINT64_EXT, + eFloat32 = VK_LAYER_SETTING_TYPE_FLOAT32_EXT, + eFloat64 = VK_LAYER_SETTING_TYPE_FLOAT64_EXT, + eString = VK_LAYER_SETTING_TYPE_STRING_EXT + }; + + //================================= + //=== Layer Setting Type Traits === + //================================= + + template <> + struct CppType + { + using Type = Bool32; + }; + + template <> + struct CppType + { + using Type = int32_t; + }; + + template <> + struct CppType + { + using Type = int64_t; + }; + + template <> + struct CppType + { + using Type = uint32_t; + }; + + template <> + struct CppType + { + using Type = uint64_t; + }; + + template <> + struct CppType + { + using Type = float; + }; + + template <> + struct CppType + { + using Type = double; + }; + + template <> + struct CppType + { + using Type = char *; + }; + + template + bool isSameType( LayerSettingTypeEXT layerSettingType ) + { + switch ( layerSettingType ) + { + case LayerSettingTypeEXT::eBool32 : return std::is_same::value; + case LayerSettingTypeEXT::eInt32 : return std::is_same::value; + case LayerSettingTypeEXT::eInt64 : return std::is_same::value; + case LayerSettingTypeEXT::eUint32 : return std::is_same::value; + case LayerSettingTypeEXT::eUint64 : return std::is_same::value; + case LayerSettingTypeEXT::eFloat32: return std::is_same::value; + case LayerSettingTypeEXT::eFloat64: return std::is_same::value; + case LayerSettingTypeEXT::eString : return std::is_same::value; + default : return false; + } + } + + //=== VK_NV_low_latency2 === + + // wrapper class for enum VkLatencyMarkerNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLatencyMarkerNV.html + enum class LatencyMarkerNV + { + eSimulationStart = VK_LATENCY_MARKER_SIMULATION_START_NV, + eSimulationEnd = VK_LATENCY_MARKER_SIMULATION_END_NV, + eRendersubmitStart = VK_LATENCY_MARKER_RENDERSUBMIT_START_NV, + eRendersubmitEnd = VK_LATENCY_MARKER_RENDERSUBMIT_END_NV, + ePresentStart = VK_LATENCY_MARKER_PRESENT_START_NV, + ePresentEnd = VK_LATENCY_MARKER_PRESENT_END_NV, + eInputSample = VK_LATENCY_MARKER_INPUT_SAMPLE_NV, + eTriggerFlash = VK_LATENCY_MARKER_TRIGGER_FLASH_NV, + eOutOfBandRendersubmitStart = VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV, + eOutOfBandRendersubmitEnd = VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV, + eOutOfBandPresentStart = VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV, + eOutOfBandPresentEnd = VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV + }; + + // wrapper class for enum VkOutOfBandQueueTypeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOutOfBandQueueTypeNV.html + enum class OutOfBandQueueTypeNV + { + eRender = VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV, + ePresent = VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV + }; + + //=== VK_KHR_cooperative_matrix === + + // wrapper class for enum VkScopeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkScopeKHR.html + enum class ScopeKHR + { + eDevice = VK_SCOPE_DEVICE_KHR, + eDeviceNV = VK_SCOPE_DEVICE_NV, + eWorkgroup = VK_SCOPE_WORKGROUP_KHR, + eWorkgroupNV = VK_SCOPE_WORKGROUP_NV, + eSubgroup = VK_SCOPE_SUBGROUP_KHR, + eSubgroupNV = VK_SCOPE_SUBGROUP_NV, + eQueueFamily = VK_SCOPE_QUEUE_FAMILY_KHR, + eQueueFamilyNV = VK_SCOPE_QUEUE_FAMILY_NV + }; + + using ScopeNV = ScopeKHR; + + //=== VK_ARM_data_graph === + + // wrapper class for enum VkDataGraphPipelineSessionBindPointARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointARM.html + enum class DataGraphPipelineSessionBindPointARM + { + eTransient = VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TRANSIENT_ARM + }; + + // wrapper class for enum VkDataGraphPipelineSessionBindPointTypeARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointTypeARM.html + enum class DataGraphPipelineSessionBindPointTypeARM + { + eMemory = VK_DATA_GRAPH_PIPELINE_SESSION_BIND_POINT_TYPE_MEMORY_ARM + }; + + // wrapper class for enum VkDataGraphPipelineSessionCreateFlagBitsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateFlagBitsARM.html + enum class DataGraphPipelineSessionCreateFlagBitsARM : VkDataGraphPipelineSessionCreateFlagsARM + { + eProtected = VK_DATA_GRAPH_PIPELINE_SESSION_CREATE_PROTECTED_BIT_ARM + }; + + // wrapper using for bitmask VkDataGraphPipelineSessionCreateFlagsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateFlagsARM.html + using DataGraphPipelineSessionCreateFlagsARM = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDataGraphPipelineSessionCreateFlagBitsARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DataGraphPipelineSessionCreateFlagsARM allFlags = DataGraphPipelineSessionCreateFlagBitsARM::eProtected; + }; + + // wrapper class for enum VkDataGraphPipelinePropertyARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelinePropertyARM.html + enum class DataGraphPipelinePropertyARM + { + eCreationLog = VK_DATA_GRAPH_PIPELINE_PROPERTY_CREATION_LOG_ARM, + eIdentifier = VK_DATA_GRAPH_PIPELINE_PROPERTY_IDENTIFIER_ARM + }; + + enum class DataGraphPipelineDispatchFlagBitsARM : VkDataGraphPipelineDispatchFlagsARM + { + }; + + // wrapper using for bitmask VkDataGraphPipelineDispatchFlagsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineDispatchFlagsARM.html + using DataGraphPipelineDispatchFlagsARM = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DataGraphPipelineDispatchFlagsARM allFlags = {}; + }; + + // wrapper class for enum VkPhysicalDeviceDataGraphProcessingEngineTypeARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphProcessingEngineTypeARM.html + enum class PhysicalDeviceDataGraphProcessingEngineTypeARM + { + eDefault = VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_DEFAULT_ARM, + eNeuralQCOM = VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_NEURAL_QCOM, + eComputeQCOM = VK_PHYSICAL_DEVICE_DATA_GRAPH_PROCESSING_ENGINE_TYPE_COMPUTE_QCOM + }; + + // wrapper class for enum VkPhysicalDeviceDataGraphOperationTypeARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphOperationTypeARM.html + enum class PhysicalDeviceDataGraphOperationTypeARM + { + eSpirvExtendedInstructionSet = VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_SPIRV_EXTENDED_INSTRUCTION_SET_ARM, + eNeuralModelQCOM = VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_NEURAL_MODEL_QCOM, + eBuiltinModelQCOM = VK_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_TYPE_BUILTIN_MODEL_QCOM + }; + + //=== VK_KHR_video_encode_av1 === + + // wrapper class for enum VkVideoEncodeAV1PredictionModeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1PredictionModeKHR.html + enum class VideoEncodeAV1PredictionModeKHR + { + eIntraOnly = VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_INTRA_ONLY_KHR, + eSingleReference = VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_SINGLE_REFERENCE_KHR, + eUnidirectionalCompound = VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_UNIDIRECTIONAL_COMPOUND_KHR, + eBidirectionalCompound = VK_VIDEO_ENCODE_AV1_PREDICTION_MODE_BIDIRECTIONAL_COMPOUND_KHR + }; + + // wrapper class for enum VkVideoEncodeAV1RateControlGroupKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlGroupKHR.html + enum class VideoEncodeAV1RateControlGroupKHR + { + eIntra = VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_INTRA_KHR, + ePredictive = VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_PREDICTIVE_KHR, + eBipredictive = VK_VIDEO_ENCODE_AV1_RATE_CONTROL_GROUP_BIPREDICTIVE_KHR + }; + + // wrapper class for enum VkVideoEncodeAV1CapabilityFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilityFlagBitsKHR.html + enum class VideoEncodeAV1CapabilityFlagBitsKHR : VkVideoEncodeAV1CapabilityFlagsKHR + { + ePerRateControlGroupMinMaxQIndex = VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR, + eGenerateObuExtensionHeader = VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR, + ePrimaryReferenceCdfOnly = VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR, + eFrameSizeOverride = VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR, + eMotionVectorScaling = VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR, + eCompoundPredictionIntraRefresh = VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeAV1CapabilityFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilityFlagsKHR.html + using VideoEncodeAV1CapabilityFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeAV1CapabilityFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeAV1CapabilityFlagsKHR allFlags = + VideoEncodeAV1CapabilityFlagBitsKHR::ePerRateControlGroupMinMaxQIndex | VideoEncodeAV1CapabilityFlagBitsKHR::eGenerateObuExtensionHeader | + VideoEncodeAV1CapabilityFlagBitsKHR::ePrimaryReferenceCdfOnly | VideoEncodeAV1CapabilityFlagBitsKHR::eFrameSizeOverride | + VideoEncodeAV1CapabilityFlagBitsKHR::eMotionVectorScaling | VideoEncodeAV1CapabilityFlagBitsKHR::eCompoundPredictionIntraRefresh; + }; + + // wrapper class for enum VkVideoEncodeAV1StdFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1StdFlagBitsKHR.html + enum class VideoEncodeAV1StdFlagBitsKHR : VkVideoEncodeAV1StdFlagsKHR + { + eUniformTileSpacingFlagSet = VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR, + eSkipModePresentUnset = VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR, + ePrimaryRefFrame = VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR, + eDeltaQ = VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeAV1StdFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1StdFlagsKHR.html + using VideoEncodeAV1StdFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeAV1StdFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeAV1StdFlagsKHR allFlags = + VideoEncodeAV1StdFlagBitsKHR::eUniformTileSpacingFlagSet | VideoEncodeAV1StdFlagBitsKHR::eSkipModePresentUnset | + VideoEncodeAV1StdFlagBitsKHR::ePrimaryRefFrame | VideoEncodeAV1StdFlagBitsKHR::eDeltaQ; + }; + + // wrapper class for enum VkVideoEncodeAV1SuperblockSizeFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1SuperblockSizeFlagBitsKHR.html + enum class VideoEncodeAV1SuperblockSizeFlagBitsKHR : VkVideoEncodeAV1SuperblockSizeFlagsKHR + { + e64 = VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR, + e128 = VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeAV1SuperblockSizeFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1SuperblockSizeFlagsKHR.html + using VideoEncodeAV1SuperblockSizeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeAV1SuperblockSizeFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeAV1SuperblockSizeFlagsKHR allFlags = + VideoEncodeAV1SuperblockSizeFlagBitsKHR::e64 | VideoEncodeAV1SuperblockSizeFlagBitsKHR::e128; + }; + + // wrapper class for enum VkVideoEncodeAV1RateControlFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlFlagBitsKHR.html + enum class VideoEncodeAV1RateControlFlagBitsKHR : VkVideoEncodeAV1RateControlFlagsKHR + { + eRegularGop = VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR, + eTemporalLayerPatternDyadic = VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR, + eReferencePatternFlat = VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR, + eReferencePatternDyadic = VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeAV1RateControlFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlFlagsKHR.html + using VideoEncodeAV1RateControlFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeAV1RateControlFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeAV1RateControlFlagsKHR allFlags = + VideoEncodeAV1RateControlFlagBitsKHR::eRegularGop | VideoEncodeAV1RateControlFlagBitsKHR::eTemporalLayerPatternDyadic | + VideoEncodeAV1RateControlFlagBitsKHR::eReferencePatternFlat | VideoEncodeAV1RateControlFlagBitsKHR::eReferencePatternDyadic; + }; + + //=== VK_QCOM_image_processing2 === + + // wrapper class for enum VkBlockMatchWindowCompareModeQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBlockMatchWindowCompareModeQCOM.html + enum class BlockMatchWindowCompareModeQCOM + { + eMin = VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM, + eMax = VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM + }; + + //=== VK_QCOM_filter_cubic_weights === + + // wrapper class for enum VkCubicFilterWeightsQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCubicFilterWeightsQCOM.html + enum class CubicFilterWeightsQCOM + { + eCatmullRom = VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM, + eZeroTangentCardinal = VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM, + eBSpline = VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM, + eMitchellNetravali = VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM + }; + + //=== VK_MSFT_layered_driver === + + // wrapper class for enum VkLayeredDriverUnderlyingApiMSFT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkLayeredDriverUnderlyingApiMSFT.html + enum class LayeredDriverUnderlyingApiMSFT + { + eNone = VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT, + eD3D12 = VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT + }; + + //=== VK_KHR_calibrated_timestamps === + + // wrapper class for enum VkTimeDomainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTimeDomainKHR.html + enum class TimeDomainKHR + { + eDevice = VK_TIME_DOMAIN_DEVICE_KHR, + eDeviceEXT = VK_TIME_DOMAIN_DEVICE_EXT, + eClockMonotonic = VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR, + eClockMonotonicEXT = VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT, + eClockMonotonicRaw = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR, + eClockMonotonicRawEXT = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT, + eQueryPerformanceCounter = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR, + eQueryPerformanceCounterEXT = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT, + ePresentStageLocalEXT = VK_TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT, + eSwapchainLocalEXT = VK_TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT + }; + + using TimeDomainEXT = TimeDomainKHR; + + //=== VK_KHR_copy_memory_indirect === + + // wrapper class for enum VkAddressCopyFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAddressCopyFlagBitsKHR.html + enum class AddressCopyFlagBitsKHR : VkAddressCopyFlagsKHR + { + eDeviceLocal = VK_ADDRESS_COPY_DEVICE_LOCAL_BIT_KHR, + eSparse = VK_ADDRESS_COPY_SPARSE_BIT_KHR, + eProtected = VK_ADDRESS_COPY_PROTECTED_BIT_KHR + }; + + // wrapper using for bitmask VkAddressCopyFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAddressCopyFlagsKHR.html + using AddressCopyFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkAddressCopyFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AddressCopyFlagsKHR allFlags = + AddressCopyFlagBitsKHR::eDeviceLocal | AddressCopyFlagBitsKHR::eSparse | AddressCopyFlagBitsKHR::eProtected; + }; + + //=== VK_EXT_memory_decompression === + + // wrapper class for enum VkMemoryDecompressionMethodFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryDecompressionMethodFlagBitsEXT.html + enum class MemoryDecompressionMethodFlagBitsEXT : VkMemoryDecompressionMethodFlagsEXT + { + eGdeflate10 = VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT, + eGdeflate10NV = VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV + }; + + using MemoryDecompressionMethodFlagBitsNV = MemoryDecompressionMethodFlagBitsEXT; + + // wrapper using for bitmask VkMemoryDecompressionMethodFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryDecompressionMethodFlagsEXT.html + using MemoryDecompressionMethodFlagsEXT = Flags; + using MemoryDecompressionMethodFlagsNV = MemoryDecompressionMethodFlagsEXT; + + template <> + struct FlagTraits + { + using WrappedType = VkMemoryDecompressionMethodFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR MemoryDecompressionMethodFlagsEXT allFlags = MemoryDecompressionMethodFlagBitsEXT::eGdeflate10; + }; + + //=== VK_NV_display_stereo === + + // wrapper class for enum VkDisplaySurfaceStereoTypeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplaySurfaceStereoTypeNV.html + enum class DisplaySurfaceStereoTypeNV + { + eNone = VK_DISPLAY_SURFACE_STEREO_TYPE_NONE_NV, + eOnboardDin = VK_DISPLAY_SURFACE_STEREO_TYPE_ONBOARD_DIN_NV, + eHdmi3D = VK_DISPLAY_SURFACE_STEREO_TYPE_HDMI_3D_NV, + eInbandDisplayport = VK_DISPLAY_SURFACE_STEREO_TYPE_INBAND_DISPLAYPORT_NV + }; + + //=== VK_KHR_video_encode_intra_refresh === + + // wrapper class for enum VkVideoEncodeIntraRefreshModeFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshModeFlagBitsKHR.html + enum class VideoEncodeIntraRefreshModeFlagBitsKHR : VkVideoEncodeIntraRefreshModeFlagsKHR + { + eNone = VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR, + ePerPicturePartition = VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR, + eBlockBased = VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR, + eBlockRowBased = VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR, + eBlockColumnBased = VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR + }; + + // wrapper using for bitmask VkVideoEncodeIntraRefreshModeFlagsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshModeFlagsKHR.html + using VideoEncodeIntraRefreshModeFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkVideoEncodeIntraRefreshModeFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR VideoEncodeIntraRefreshModeFlagsKHR allFlags = + VideoEncodeIntraRefreshModeFlagBitsKHR::eNone | VideoEncodeIntraRefreshModeFlagBitsKHR::ePerPicturePartition | + VideoEncodeIntraRefreshModeFlagBitsKHR::eBlockBased | VideoEncodeIntraRefreshModeFlagBitsKHR::eBlockRowBased | + VideoEncodeIntraRefreshModeFlagBitsKHR::eBlockColumnBased; + }; + + //=== VK_KHR_maintenance7 === + + // wrapper class for enum VkPhysicalDeviceLayeredApiKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiKHR.html + enum class PhysicalDeviceLayeredApiKHR + { + eVulkan = VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR, + eD3D12 = VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR, + eMetal = VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR, + eOpengl = VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR, + eOpengles = VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR + }; + + //=== VK_NV_cluster_acceleration_structure === + + // wrapper class for enum VkClusterAccelerationStructureClusterFlagBitsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClusterFlagBitsNV.html + enum class ClusterAccelerationStructureClusterFlagBitsNV : VkClusterAccelerationStructureClusterFlagsNV + { + eAllowDisableOpacityMicromaps = VK_CLUSTER_ACCELERATION_STRUCTURE_CLUSTER_ALLOW_DISABLE_OPACITY_MICROMAPS_NV + }; + + // wrapper using for bitmask VkClusterAccelerationStructureClusterFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClusterFlagsNV.html + using ClusterAccelerationStructureClusterFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkClusterAccelerationStructureClusterFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ClusterAccelerationStructureClusterFlagsNV allFlags = + ClusterAccelerationStructureClusterFlagBitsNV::eAllowDisableOpacityMicromaps; + }; + + // wrapper class for enum VkClusterAccelerationStructureGeometryFlagBitsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryFlagBitsNV.html + enum class ClusterAccelerationStructureGeometryFlagBitsNV : VkClusterAccelerationStructureGeometryFlagsNV + { + eCullDisable = VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_CULL_DISABLE_BIT_NV, + eNoDuplicateAnyhitInvocation = VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_NO_DUPLICATE_ANYHIT_INVOCATION_BIT_NV, + eOpaque = VK_CLUSTER_ACCELERATION_STRUCTURE_GEOMETRY_OPAQUE_BIT_NV + }; + + // wrapper using for bitmask VkClusterAccelerationStructureGeometryFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryFlagsNV.html + using ClusterAccelerationStructureGeometryFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkClusterAccelerationStructureGeometryFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ClusterAccelerationStructureGeometryFlagsNV allFlags = + ClusterAccelerationStructureGeometryFlagBitsNV::eCullDisable | ClusterAccelerationStructureGeometryFlagBitsNV::eNoDuplicateAnyhitInvocation | + ClusterAccelerationStructureGeometryFlagBitsNV::eOpaque; + }; + + // wrapper class for enum VkClusterAccelerationStructureAddressResolutionFlagBitsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureAddressResolutionFlagBitsNV.html + enum class ClusterAccelerationStructureAddressResolutionFlagBitsNV : VkClusterAccelerationStructureAddressResolutionFlagsNV + { + eNone = VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_NONE_NV, + eIndirectedDstImplicitData = VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_IMPLICIT_DATA_BIT_NV, + eIndirectedScratchData = VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SCRATCH_DATA_BIT_NV, + eIndirectedDstAddressArray = VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_ADDRESS_ARRAY_BIT_NV, + eIndirectedDstSizesArray = VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_DST_SIZES_ARRAY_BIT_NV, + eIndirectedSrcInfosArray = VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_ARRAY_BIT_NV, + eIndirectedSrcInfosCount = VK_CLUSTER_ACCELERATION_STRUCTURE_ADDRESS_RESOLUTION_INDIRECTED_SRC_INFOS_COUNT_BIT_NV + }; + + // wrapper using for bitmask VkClusterAccelerationStructureAddressResolutionFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureAddressResolutionFlagsNV.html + using ClusterAccelerationStructureAddressResolutionFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkClusterAccelerationStructureAddressResolutionFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ClusterAccelerationStructureAddressResolutionFlagsNV allFlags = + ClusterAccelerationStructureAddressResolutionFlagBitsNV::eNone | ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedDstImplicitData | + ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedScratchData | + ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedDstAddressArray | + ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedDstSizesArray | + ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedSrcInfosArray | + ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedSrcInfosCount; + }; + + // wrapper class for enum VkClusterAccelerationStructureIndexFormatFlagBitsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureIndexFormatFlagBitsNV.html + enum class ClusterAccelerationStructureIndexFormatFlagBitsNV : VkClusterAccelerationStructureIndexFormatFlagsNV + { + e8 = VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_8BIT_NV, + e16 = VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_16BIT_NV, + e32 = VK_CLUSTER_ACCELERATION_STRUCTURE_INDEX_FORMAT_32BIT_NV + }; + + // wrapper using for bitmask VkClusterAccelerationStructureIndexFormatFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureIndexFormatFlagsNV.html + using ClusterAccelerationStructureIndexFormatFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkClusterAccelerationStructureIndexFormatFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ClusterAccelerationStructureIndexFormatFlagsNV allFlags = ClusterAccelerationStructureIndexFormatFlagBitsNV::e8 | + ClusterAccelerationStructureIndexFormatFlagBitsNV::e16 | + ClusterAccelerationStructureIndexFormatFlagBitsNV::e32; + }; + + // wrapper class for enum VkClusterAccelerationStructureTypeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureTypeNV.html + enum class ClusterAccelerationStructureTypeNV + { + eClustersBottomLevel = VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_CLUSTERS_BOTTOM_LEVEL_NV, + eTriangleCluster = VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_NV, + eTriangleClusterTemplate = VK_CLUSTER_ACCELERATION_STRUCTURE_TYPE_TRIANGLE_CLUSTER_TEMPLATE_NV + }; + + // wrapper class for enum VkClusterAccelerationStructureOpTypeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureOpTypeNV.html + enum class ClusterAccelerationStructureOpTypeNV + { + eMoveObjects = VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_MOVE_OBJECTS_NV, + eBuildClustersBottomLevel = VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_CLUSTERS_BOTTOM_LEVEL_NV, + eBuildTriangleCluster = VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_NV, + eBuildTriangleClusterTemplate = VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_BUILD_TRIANGLE_CLUSTER_TEMPLATE_NV, + eInstantiateTriangleCluster = VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_INSTANTIATE_TRIANGLE_CLUSTER_NV, + eGetClusterTemplateIndices = VK_CLUSTER_ACCELERATION_STRUCTURE_OP_TYPE_GET_CLUSTER_TEMPLATE_INDICES_NV + }; + + // wrapper class for enum VkClusterAccelerationStructureOpModeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureOpModeNV.html + enum class ClusterAccelerationStructureOpModeNV + { + eImplicitDestinations = VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_IMPLICIT_DESTINATIONS_NV, + eExplicitDestinations = VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_EXPLICIT_DESTINATIONS_NV, + eComputeSizes = VK_CLUSTER_ACCELERATION_STRUCTURE_OP_MODE_COMPUTE_SIZES_NV + }; + + //=== VK_NV_partitioned_acceleration_structure === + + // wrapper class for enum VkPartitionedAccelerationStructureOpTypeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureOpTypeNV.html + enum class PartitionedAccelerationStructureOpTypeNV + { + eWriteInstance = VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_INSTANCE_NV, + eUpdateInstance = VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_UPDATE_INSTANCE_NV, + eWritePartitionTranslation = VK_PARTITIONED_ACCELERATION_STRUCTURE_OP_TYPE_WRITE_PARTITION_TRANSLATION_NV + }; + + // wrapper class for enum VkPartitionedAccelerationStructureInstanceFlagBitsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstanceFlagBitsNV.html + enum class PartitionedAccelerationStructureInstanceFlagBitsNV : VkPartitionedAccelerationStructureInstanceFlagsNV + { + eFlagTriangleFacingCullDisable = VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FACING_CULL_DISABLE_BIT_NV, + eFlagTriangleFlipFacing = VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_TRIANGLE_FLIP_FACING_BIT_NV, + eFlagForceOpaque = VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_OPAQUE_BIT_NV, + eFlagForceNoOpaque = VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_FORCE_NO_OPAQUE_BIT_NV, + eFlagEnableExplicitBoundingBox = VK_PARTITIONED_ACCELERATION_STRUCTURE_INSTANCE_FLAG_ENABLE_EXPLICIT_BOUNDING_BOX_NV + }; + + // wrapper using for bitmask VkPartitionedAccelerationStructureInstanceFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstanceFlagsNV.html + using PartitionedAccelerationStructureInstanceFlagsNV = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkPartitionedAccelerationStructureInstanceFlagBitsNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PartitionedAccelerationStructureInstanceFlagsNV allFlags = + PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagTriangleFacingCullDisable | + PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagTriangleFlipFacing | PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagForceOpaque | + PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagForceNoOpaque | + PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagEnableExplicitBoundingBox; + }; + + //=== VK_EXT_device_generated_commands === + + // wrapper class for enum VkIndirectCommandsTokenTypeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsTokenTypeEXT.html + enum class IndirectCommandsTokenTypeEXT + { + eExecutionSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_EXECUTION_SET_EXT, + ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_EXT, + eSequenceIndex = VK_INDIRECT_COMMANDS_TOKEN_TYPE_SEQUENCE_INDEX_EXT, + eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_EXT, + eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_EXT, + eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_EXT, + eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_EXT, + eDrawIndexedCount = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_COUNT_EXT, + eDrawCount = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_COUNT_EXT, + eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_EXT, + ePushData = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_EXT, + ePushDataSequenceIndex = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_DATA_SEQUENCE_INDEX_EXT, + eDrawMeshTasksNV = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV_EXT, + eDrawMeshTasksCountNV = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_NV_EXT, + eDrawMeshTasks = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_EXT, + eDrawMeshTasksCount = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_COUNT_EXT, + eTraceRays2 = VK_INDIRECT_COMMANDS_TOKEN_TYPE_TRACE_RAYS2_EXT + }; + + // wrapper class for enum VkIndirectExecutionSetInfoTypeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectExecutionSetInfoTypeEXT.html + enum class IndirectExecutionSetInfoTypeEXT + { + ePipelines = VK_INDIRECT_EXECUTION_SET_INFO_TYPE_PIPELINES_EXT, + eShaderObjects = VK_INDIRECT_EXECUTION_SET_INFO_TYPE_SHADER_OBJECTS_EXT + }; + + // wrapper class for enum VkIndirectCommandsLayoutUsageFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutUsageFlagBitsEXT.html + enum class IndirectCommandsLayoutUsageFlagBitsEXT : VkIndirectCommandsLayoutUsageFlagsEXT + { + eExplicitPreprocess = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT, + eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT + }; + + // wrapper using for bitmask VkIndirectCommandsLayoutUsageFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutUsageFlagsEXT.html + using IndirectCommandsLayoutUsageFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkIndirectCommandsLayoutUsageFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR IndirectCommandsLayoutUsageFlagsEXT allFlags = + IndirectCommandsLayoutUsageFlagBitsEXT::eExplicitPreprocess | IndirectCommandsLayoutUsageFlagBitsEXT::eUnorderedSequences; + }; + + // wrapper class for enum VkIndirectCommandsInputModeFlagBitsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsInputModeFlagBitsEXT.html + enum class IndirectCommandsInputModeFlagBitsEXT : VkIndirectCommandsInputModeFlagsEXT + { + eVulkanIndexBuffer = VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT, + eDxgiIndexBuffer = VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT + }; + + // wrapper using for bitmask VkIndirectCommandsInputModeFlagsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsInputModeFlagsEXT.html + using IndirectCommandsInputModeFlagsEXT = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkIndirectCommandsInputModeFlagBitsEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR IndirectCommandsInputModeFlagsEXT allFlags = + IndirectCommandsInputModeFlagBitsEXT::eVulkanIndexBuffer | IndirectCommandsInputModeFlagBitsEXT::eDxgiIndexBuffer; + }; + + //=== VK_KHR_device_fault === + + // wrapper class for enum VkDeviceFaultAddressTypeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultAddressTypeKHR.html + enum class DeviceFaultAddressTypeKHR + { + eNone = VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_KHR, + eNoneEXT = VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT, + eReadInvalid = VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_KHR, + eReadInvalidEXT = VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT, + eWriteInvalid = VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_KHR, + eWriteInvalidEXT = VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT, + eExecuteInvalid = VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_KHR, + eExecuteInvalidEXT = VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT, + eInstructionPointerUnknown = VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_KHR, + eInstructionPointerUnknownEXT = VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT, + eInstructionPointerInvalid = VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_KHR, + eInstructionPointerInvalidEXT = VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT, + eInstructionPointerFault = VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_KHR, + eInstructionPointerFaultEXT = VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT + }; + + using DeviceFaultAddressTypeEXT = DeviceFaultAddressTypeKHR; + + // wrapper class for enum VkDeviceFaultVendorBinaryHeaderVersionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultVendorBinaryHeaderVersionKHR.html + enum class DeviceFaultVendorBinaryHeaderVersionKHR + { + eOne = VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_KHR, + eOneEXT = VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT + }; + + using DeviceFaultVendorBinaryHeaderVersionEXT = DeviceFaultVendorBinaryHeaderVersionKHR; + + // wrapper class for enum VkDeviceFaultFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultFlagBitsKHR.html + enum class DeviceFaultFlagBitsKHR : VkDeviceFaultFlagsKHR + { + eFlagDeviceLost = VK_DEVICE_FAULT_FLAG_DEVICE_LOST_KHR, + eFlagMemoryAddress = VK_DEVICE_FAULT_FLAG_MEMORY_ADDRESS_KHR, + eFlagInstructionAddress = VK_DEVICE_FAULT_FLAG_INSTRUCTION_ADDRESS_KHR, + eFlagVendor = VK_DEVICE_FAULT_FLAG_VENDOR_KHR, + eFlagWatchdogTimeout = VK_DEVICE_FAULT_FLAG_WATCHDOG_TIMEOUT_KHR, + eFlagOverflow = VK_DEVICE_FAULT_FLAG_OVERFLOW_KHR + }; + + // wrapper using for bitmask VkDeviceFaultFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultFlagsKHR.html + using DeviceFaultFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkDeviceFaultFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR DeviceFaultFlagsKHR allFlags = DeviceFaultFlagBitsKHR::eFlagDeviceLost | DeviceFaultFlagBitsKHR::eFlagMemoryAddress | + DeviceFaultFlagBitsKHR::eFlagInstructionAddress | DeviceFaultFlagBitsKHR::eFlagVendor | + DeviceFaultFlagBitsKHR::eFlagWatchdogTimeout | DeviceFaultFlagBitsKHR::eFlagOverflow; + }; + + //=== VK_KHR_maintenance8 === + + // wrapper class for enum VkAccessFlagBits3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccessFlagBits3KHR.html + enum class AccessFlagBits3KHR : VkAccessFlags3KHR + { + eNone = VK_ACCESS_3_NONE_KHR + }; + + // wrapper using for bitmask VkAccessFlags3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccessFlags3KHR.html + using AccessFlags3KHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkAccessFlagBits3KHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR AccessFlags3KHR allFlags = AccessFlagBits3KHR::eNone; + }; + + //=== VK_EXT_ray_tracing_invocation_reorder === + + // wrapper class for enum VkRayTracingInvocationReorderModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRayTracingInvocationReorderModeEXT.html + enum class RayTracingInvocationReorderModeEXT + { + eNone = VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT, + eNoneNV = VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV, + eReorder = VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT, + eReorderNV = VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV + }; + + using RayTracingInvocationReorderModeNV = RayTracingInvocationReorderModeEXT; + + //=== VK_EXT_depth_clamp_control === + + // wrapper class for enum VkDepthClampModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDepthClampModeEXT.html + enum class DepthClampModeEXT + { + eViewportRange = VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT, + eUserDefinedRange = VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT + }; + + //=== VK_KHR_maintenance9 === + + // wrapper class for enum VkDefaultVertexAttributeValueKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDefaultVertexAttributeValueKHR.html + enum class DefaultVertexAttributeValueKHR + { + eZeroZeroZeroZero = VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR, + eZeroZeroZeroOne = VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR + }; + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + + enum class SurfaceCreateFlagBitsOHOS : VkSurfaceCreateFlagsOHOS + { + }; + + // wrapper using for bitmask VkSurfaceCreateFlagsOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCreateFlagsOHOS.html + using SurfaceCreateFlagsOHOS = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR SurfaceCreateFlagsOHOS allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_ARM_performance_counters_by_region === + + enum class PerformanceCounterDescriptionFlagBitsARM : VkPerformanceCounterDescriptionFlagsARM + { + }; + + // wrapper using for bitmask VkPerformanceCounterDescriptionFlagsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionFlagsARM.html + using PerformanceCounterDescriptionFlagsARM = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR PerformanceCounterDescriptionFlagsARM allFlags = {}; + }; + + //=== VK_ARM_shader_instrumentation === + + enum class ShaderInstrumentationValuesFlagBitsARM : VkShaderInstrumentationValuesFlagsARM + { + }; + + // wrapper using for bitmask VkShaderInstrumentationValuesFlagsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderInstrumentationValuesFlagsARM.html + using ShaderInstrumentationValuesFlagsARM = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ShaderInstrumentationValuesFlagsARM allFlags = {}; + }; + + //=== VK_QCOM_data_graph_model === + + // wrapper class for enum VkDataGraphModelCacheTypeQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphModelCacheTypeQCOM.html + enum class DataGraphModelCacheTypeQCOM + { + eGenericBinary = VK_DATA_GRAPH_MODEL_CACHE_TYPE_GENERIC_BINARY_QCOM + }; + + //=== VK_KHR_maintenance10 === + + // wrapper class for enum VkRenderingAttachmentFlagBitsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingAttachmentFlagBitsKHR.html + enum class RenderingAttachmentFlagBitsKHR : VkRenderingAttachmentFlagsKHR + { + eInputAttachmentFeedback = VK_RENDERING_ATTACHMENT_INPUT_ATTACHMENT_FEEDBACK_BIT_KHR, + eResolveSkipTransferFunction = VK_RENDERING_ATTACHMENT_RESOLVE_SKIP_TRANSFER_FUNCTION_BIT_KHR, + eResolveEnableTransferFunction = VK_RENDERING_ATTACHMENT_RESOLVE_ENABLE_TRANSFER_FUNCTION_BIT_KHR + }; + + // wrapper using for bitmask VkRenderingAttachmentFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingAttachmentFlagsKHR.html + using RenderingAttachmentFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkRenderingAttachmentFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR RenderingAttachmentFlagsKHR allFlags = RenderingAttachmentFlagBitsKHR::eInputAttachmentFeedback | + RenderingAttachmentFlagBitsKHR::eResolveSkipTransferFunction | + RenderingAttachmentFlagBitsKHR::eResolveEnableTransferFunction; + }; + + // wrapper class for enum VkResolveImageFlagBitsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkResolveImageFlagBitsKHR.html + enum class ResolveImageFlagBitsKHR : VkResolveImageFlagsKHR + { + eSkipTransferFunction = VK_RESOLVE_IMAGE_SKIP_TRANSFER_FUNCTION_BIT_KHR, + eEnableTransferFunction = VK_RESOLVE_IMAGE_ENABLE_TRANSFER_FUNCTION_BIT_KHR + }; + + // wrapper using for bitmask VkResolveImageFlagsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkResolveImageFlagsKHR.html + using ResolveImageFlagsKHR = Flags; + + template <> + struct FlagTraits + { + using WrappedType = VkResolveImageFlagBitsKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR ResolveImageFlagsKHR allFlags = + ResolveImageFlagBitsKHR::eSkipTransferFunction | ResolveImageFlagBitsKHR::eEnableTransferFunction; + }; + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + + enum class UbmSurfaceCreateFlagBitsSEC : VkUbmSurfaceCreateFlagsSEC + { + }; + + // wrapper using for bitmask VkUbmSurfaceCreateFlagsSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkUbmSurfaceCreateFlagsSEC.html + using UbmSurfaceCreateFlagsSEC = Flags; + + template <> + struct FlagTraits + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool isBitmask = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR UbmSurfaceCreateFlagsSEC allFlags = {}; + }; +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + + //=========================================================== + //=== Mapping from ObjectType to DebugReportObjectTypeEXT === + //=========================================================== + + VULKAN_HPP_INLINE DebugReportObjectTypeEXT debugReportObjectType( ObjectType objectType ) + { + switch ( objectType ) + { + //=== VK_VERSION_1_0 === + case ObjectType::eInstance : return DebugReportObjectTypeEXT::eInstance; + case ObjectType::ePhysicalDevice : return DebugReportObjectTypeEXT::ePhysicalDevice; + case ObjectType::eDevice : return DebugReportObjectTypeEXT::eDevice; + case ObjectType::eQueue : return DebugReportObjectTypeEXT::eQueue; + case ObjectType::eDeviceMemory : return DebugReportObjectTypeEXT::eDeviceMemory; + case ObjectType::eFence : return DebugReportObjectTypeEXT::eFence; + case ObjectType::eSemaphore : return DebugReportObjectTypeEXT::eSemaphore; + case ObjectType::eQueryPool : return DebugReportObjectTypeEXT::eQueryPool; + case ObjectType::eBuffer : return DebugReportObjectTypeEXT::eBuffer; + case ObjectType::eImage : return DebugReportObjectTypeEXT::eImage; + case ObjectType::eImageView : return DebugReportObjectTypeEXT::eImageView; + case ObjectType::eCommandPool : return DebugReportObjectTypeEXT::eCommandPool; + case ObjectType::eCommandBuffer : return DebugReportObjectTypeEXT::eCommandBuffer; + case ObjectType::eEvent : return DebugReportObjectTypeEXT::eEvent; + case ObjectType::eBufferView : return DebugReportObjectTypeEXT::eBufferView; + case ObjectType::eShaderModule : return DebugReportObjectTypeEXT::eShaderModule; + case ObjectType::ePipelineCache : return DebugReportObjectTypeEXT::ePipelineCache; + case ObjectType::ePipeline : return DebugReportObjectTypeEXT::ePipeline; + case ObjectType::ePipelineLayout : return DebugReportObjectTypeEXT::ePipelineLayout; + case ObjectType::eSampler : return DebugReportObjectTypeEXT::eSampler; + case ObjectType::eDescriptorPool : return DebugReportObjectTypeEXT::eDescriptorPool; + case ObjectType::eDescriptorSet : return DebugReportObjectTypeEXT::eDescriptorSet; + case ObjectType::eDescriptorSetLayout: return DebugReportObjectTypeEXT::eDescriptorSetLayout; + case ObjectType::eFramebuffer : return DebugReportObjectTypeEXT::eFramebuffer; + case ObjectType::eRenderPass: + return DebugReportObjectTypeEXT::eRenderPass; + + //=== VK_VERSION_1_1 === + case ObjectType::eDescriptorUpdateTemplate: return DebugReportObjectTypeEXT::eDescriptorUpdateTemplate; + case ObjectType::eSamplerYcbcrConversion: + return DebugReportObjectTypeEXT::eSamplerYcbcrConversion; + + //=== VK_VERSION_1_3 === + case ObjectType::ePrivateDataSlot: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_KHR_surface === + case ObjectType::eSurfaceKHR: + return DebugReportObjectTypeEXT::eSurfaceKHR; + + //=== VK_KHR_swapchain === + case ObjectType::eSwapchainKHR: + return DebugReportObjectTypeEXT::eSwapchainKHR; + + //=== VK_KHR_display === + case ObjectType::eDisplayKHR: return DebugReportObjectTypeEXT::eDisplayKHR; + case ObjectType::eDisplayModeKHR: + return DebugReportObjectTypeEXT::eDisplayModeKHR; + + //=== VK_EXT_debug_report === + case ObjectType::eDebugReportCallbackEXT: + return DebugReportObjectTypeEXT::eDebugReportCallbackEXT; + + //=== VK_KHR_video_queue === + case ObjectType::eVideoSessionKHR: return DebugReportObjectTypeEXT::eUnknown; + case ObjectType::eVideoSessionParametersKHR: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_NVX_binary_import === + case ObjectType::eCuModuleNVX: return DebugReportObjectTypeEXT::eCuModuleNVX; + case ObjectType::eCuFunctionNVX: + return DebugReportObjectTypeEXT::eCuFunctionNVX; + + //=== VK_EXT_debug_utils === + case ObjectType::eDebugUtilsMessengerEXT: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_EXT_descriptor_heap === + case ObjectType::eTensorARM: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_KHR_acceleration_structure === + case ObjectType::eAccelerationStructureKHR: + return DebugReportObjectTypeEXT::eAccelerationStructureKHR; + + //=== VK_EXT_validation_cache === + case ObjectType::eValidationCacheEXT: + return DebugReportObjectTypeEXT::eValidationCacheEXT; + + //=== VK_NV_ray_tracing === + case ObjectType::eAccelerationStructureNV: + return DebugReportObjectTypeEXT::eAccelerationStructureNV; + + //=== VK_INTEL_performance_query === + case ObjectType::ePerformanceConfigurationINTEL: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_KHR_deferred_host_operations === + case ObjectType::eDeferredOperationKHR: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_NV_device_generated_commands === + case ObjectType::eIndirectCommandsLayoutNV: return DebugReportObjectTypeEXT::eUnknown; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + case ObjectType::eCudaModuleNV : return DebugReportObjectTypeEXT::eCudaModuleNV; + case ObjectType::eCudaFunctionNV: return DebugReportObjectTypeEXT::eCudaFunctionNV; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + case ObjectType::eBufferCollectionFUCHSIA: return DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_EXT_opacity_micromap === + case ObjectType::eMicromapEXT: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_ARM_tensors === + case ObjectType::eTensorViewARM: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_NV_optical_flow === + case ObjectType::eOpticalFlowSessionNV: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_EXT_shader_object === + case ObjectType::eShaderEXT: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_KHR_pipeline_binary === + case ObjectType::ePipelineBinaryKHR: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_ARM_data_graph === + case ObjectType::eDataGraphPipelineSessionARM: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_NV_external_compute_queue === + case ObjectType::eExternalComputeQueueNV: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_EXT_device_generated_commands === + case ObjectType::eIndirectCommandsLayoutEXT: return DebugReportObjectTypeEXT::eUnknown; + case ObjectType::eIndirectExecutionSetEXT: + return DebugReportObjectTypeEXT::eUnknown; + + //=== VK_ARM_shader_instrumentation === + case ObjectType::eShaderInstrumentationARM: return DebugReportObjectTypeEXT::eUnknown; + + default: VULKAN_HPP_ASSERT( false && "unknown ObjectType" ); return DebugReportObjectTypeEXT::eUnknown; + } + } + +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_extension_inspection.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_extension_inspection.hpp new file mode 100644 index 000000000..adf76f60b --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_extension_inspection.hpp @@ -0,0 +1,4242 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_EXTENSION_INSPECTION_HPP +#define VULKAN_EXTENSION_INSPECTION_HPP + +#if !defined( VULKAN_HPP_CXX_MODULE ) +# include +# include +# include +# include +# include +#endif + +#if defined( VULKAN_HPP_CXX_MODULE ) +# define VULKAN_HPP_EXPORT export +#else +# define VULKAN_HPP_EXPORT +#endif + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ + //====================================== + //=== Extension inspection functions === + //====================================== + + std::set const & getDeviceExtensions(); + std::set const & getInstanceExtensions(); + std::map const & getDeprecatedExtensions(); + std::map>> const & getExtensionDepends( std::string const & extension ); + std::pair> const &> getExtensionDepends( std::string const & version, std::string const & extension ); + std::map const & getObsoletedExtensions(); + std::map const & getPromotedExtensions(); + VULKAN_HPP_CONSTEXPR_20 std::string getExtensionDeprecatedBy( std::string const & extension ); + VULKAN_HPP_CONSTEXPR_20 std::string getExtensionObsoletedBy( std::string const & extension ); + VULKAN_HPP_CONSTEXPR_20 std::string getExtensionPromotedTo( std::string const & extension ); + VULKAN_HPP_CONSTEXPR_20 bool isDeprecatedExtension( std::string const & extension ); + VULKAN_HPP_CONSTEXPR_20 bool isDeviceExtension( std::string const & extension ); + VULKAN_HPP_CONSTEXPR_20 bool isInstanceExtension( std::string const & extension ); + VULKAN_HPP_CONSTEXPR_20 bool isObsoletedExtension( std::string const & extension ); + VULKAN_HPP_CONSTEXPR_20 bool isPromotedExtension( std::string const & extension ); + + //===================================================== + //=== Extension inspection function implementations === + //===================================================== + + VULKAN_HPP_INLINE std::map const & getDeprecatedExtensions() + { + static std::map const deprecatedExtensions = { { "VK_EXT_debug_report", "VK_EXT_debug_utils" }, + { "VK_NV_glsl_shader", "" }, + { "VK_NV_dedicated_allocation", "VK_KHR_dedicated_allocation" }, + { "VK_AMD_gpu_shader_half_float", "VK_KHR_shader_float16_int8" }, + { "VK_IMG_format_pvrtc", "" }, + { "VK_NV_external_memory_capabilities", "VK_KHR_external_memory_capabilities" }, + { "VK_NV_external_memory", "VK_KHR_external_memory" }, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + { "VK_NV_external_memory_win32", "VK_KHR_external_memory_win32" }, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + { "VK_EXT_validation_flags", "VK_EXT_layer_settings" }, + { "VK_EXT_shader_subgroup_ballot", "VK_VERSION_1_2" }, + { "VK_EXT_shader_subgroup_vote", "VK_VERSION_1_1" }, +#if defined( VK_USE_PLATFORM_IOS_MVK ) + { "VK_MVK_ios_surface", "VK_EXT_metal_surface" }, +#endif /*VK_USE_PLATFORM_IOS_MVK*/ +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + { "VK_MVK_macos_surface", "VK_EXT_metal_surface" }, +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + { "VK_AMD_gpu_shader_int16", "VK_KHR_shader_float16_int8" }, + { "VK_NV_ray_tracing", "VK_KHR_ray_tracing_pipeline" }, + { "VK_EXT_buffer_device_address", "VK_KHR_buffer_device_address" }, + { "VK_EXT_validation_features", "VK_EXT_layer_settings" }, + { "VK_EXT_descriptor_buffer", "VK_EXT_descriptor_heap" }, +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + { "VK_NV_displacement_micromap", "VK_NV_cluster_acceleration_structure" } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + }; + return deprecatedExtensions; + } + + VULKAN_HPP_INLINE std::set const & getDeviceExtensions() + { + static std::set const deviceExtensions = { "VK_KHR_swapchain", + "VK_KHR_display_swapchain", + "VK_NV_glsl_shader", + "VK_EXT_depth_range_unrestricted", + "VK_KHR_sampler_mirror_clamp_to_edge", + "VK_IMG_filter_cubic", + "VK_AMD_rasterization_order", + "VK_AMD_shader_trinary_minmax", + "VK_AMD_shader_explicit_vertex_parameter", + "VK_EXT_debug_marker", + "VK_KHR_video_queue", + "VK_KHR_video_decode_queue", + "VK_AMD_gcn_shader", + "VK_NV_dedicated_allocation", + "VK_EXT_transform_feedback", + "VK_NVX_binary_import", + "VK_NVX_image_view_handle", + "VK_AMD_draw_indirect_count", + "VK_AMD_negative_viewport_height", + "VK_AMD_gpu_shader_half_float", + "VK_AMD_shader_ballot", + "VK_KHR_video_encode_h264", + "VK_KHR_video_encode_h265", + "VK_KHR_video_decode_h264", + "VK_AMD_texture_gather_bias_lod", + "VK_AMD_shader_info", + "VK_KHR_dynamic_rendering", + "VK_AMD_shader_image_load_store_lod", + "VK_NV_corner_sampled_image", + "VK_KHR_multiview", + "VK_IMG_format_pvrtc", + "VK_NV_external_memory", +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + "VK_NV_external_memory_win32", + "VK_NV_win32_keyed_mutex", +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + "VK_KHR_device_group", + "VK_KHR_shader_draw_parameters", + "VK_EXT_shader_subgroup_ballot", + "VK_EXT_shader_subgroup_vote", + "VK_EXT_texture_compression_astc_hdr", + "VK_EXT_astc_decode_mode", + "VK_EXT_pipeline_robustness", + "VK_KHR_maintenance1", + "VK_KHR_external_memory", +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + "VK_KHR_external_memory_win32", +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + "VK_KHR_external_memory_fd", +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + "VK_KHR_win32_keyed_mutex", +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + "VK_KHR_external_semaphore", +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + "VK_KHR_external_semaphore_win32", +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + "VK_KHR_external_semaphore_fd", + "VK_KHR_push_descriptor", + "VK_EXT_conditional_rendering", + "VK_KHR_shader_float16_int8", + "VK_KHR_16bit_storage", + "VK_KHR_incremental_present", + "VK_KHR_descriptor_update_template", + "VK_NV_clip_space_w_scaling", + "VK_EXT_display_control", + "VK_GOOGLE_display_timing", + "VK_NV_sample_mask_override_coverage", + "VK_NV_geometry_shader_passthrough", + "VK_NV_viewport_array2", + "VK_NVX_multiview_per_view_attributes", + "VK_NV_viewport_swizzle", + "VK_EXT_discard_rectangles", + "VK_EXT_conservative_rasterization", + "VK_EXT_depth_clip_enable", + "VK_EXT_hdr_metadata", + "VK_KHR_imageless_framebuffer", + "VK_KHR_create_renderpass2", + "VK_IMG_relaxed_line_rasterization", + "VK_KHR_shared_presentable_image", + "VK_KHR_external_fence", +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + "VK_KHR_external_fence_win32", +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + "VK_KHR_external_fence_fd", + "VK_KHR_performance_query", + "VK_KHR_maintenance2", + "VK_KHR_variable_pointers", + "VK_EXT_external_memory_dma_buf", + "VK_EXT_queue_family_foreign", + "VK_KHR_dedicated_allocation", +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + "VK_ANDROID_external_memory_android_hardware_buffer", +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + "VK_EXT_sampler_filter_minmax", + "VK_KHR_storage_buffer_storage_class", + "VK_AMD_gpu_shader_int16", +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + "VK_AMDX_shader_enqueue", +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + "VK_EXT_descriptor_heap", + "VK_AMD_mixed_attachment_samples", + "VK_AMD_shader_fragment_mask", + "VK_EXT_inline_uniform_block", + "VK_EXT_shader_stencil_export", + "VK_KHR_shader_bfloat16", + "VK_EXT_sample_locations", + "VK_KHR_relaxed_block_layout", + "VK_KHR_get_memory_requirements2", + "VK_KHR_image_format_list", + "VK_EXT_blend_operation_advanced", + "VK_NV_fragment_coverage_to_color", + "VK_KHR_acceleration_structure", + "VK_KHR_ray_tracing_pipeline", + "VK_KHR_ray_query", + "VK_NV_framebuffer_mixed_samples", + "VK_NV_fill_rectangle", + "VK_NV_shader_sm_builtins", + "VK_EXT_post_depth_coverage", + "VK_KHR_sampler_ycbcr_conversion", + "VK_KHR_bind_memory2", + "VK_EXT_image_drm_format_modifier", + "VK_EXT_validation_cache", + "VK_EXT_descriptor_indexing", + "VK_EXT_shader_viewport_index_layer", +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + "VK_KHR_portability_subset", +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + "VK_NV_shading_rate_image", + "VK_NV_ray_tracing", + "VK_NV_representative_fragment_test", + "VK_KHR_maintenance3", + "VK_KHR_draw_indirect_count", + "VK_EXT_filter_cubic", + "VK_QCOM_render_pass_shader_resolve", + "VK_QCOM_cooperative_matrix_conversion", + "VK_EXT_global_priority", + "VK_KHR_shader_subgroup_extended_types", + "VK_KHR_8bit_storage", + "VK_EXT_external_memory_host", + "VK_AMD_buffer_marker", + "VK_KHR_shader_atomic_int64", + "VK_KHR_shader_clock", + "VK_AMD_pipeline_compiler_control", + "VK_EXT_calibrated_timestamps", + "VK_AMD_shader_core_properties", + "VK_KHR_video_decode_h265", + "VK_KHR_global_priority", + "VK_AMD_memory_overallocation_behavior", + "VK_EXT_vertex_attribute_divisor", +#if defined( VK_USE_PLATFORM_GGP ) + "VK_GGP_frame_token", +#endif /*VK_USE_PLATFORM_GGP*/ + "VK_EXT_pipeline_creation_feedback", + "VK_KHR_driver_properties", + "VK_KHR_shader_float_controls", + "VK_NV_shader_subgroup_partitioned", + "VK_KHR_depth_stencil_resolve", + "VK_KHR_swapchain_mutable_format", + "VK_NV_compute_shader_derivatives", + "VK_NV_mesh_shader", + "VK_NV_fragment_shader_barycentric", + "VK_NV_shader_image_footprint", + "VK_NV_scissor_exclusive", + "VK_NV_device_diagnostic_checkpoints", + "VK_KHR_timeline_semaphore", + "VK_EXT_present_timing", + "VK_INTEL_shader_integer_functions2", + "VK_INTEL_performance_query", + "VK_KHR_vulkan_memory_model", + "VK_EXT_pci_bus_info", + "VK_AMD_display_native_hdr", + "VK_KHR_shader_terminate_invocation", + "VK_EXT_fragment_density_map", + "VK_EXT_scalar_block_layout", + "VK_GOOGLE_hlsl_functionality1", + "VK_GOOGLE_decorate_string", + "VK_EXT_subgroup_size_control", + "VK_KHR_fragment_shading_rate", + "VK_AMD_shader_core_properties2", + "VK_AMD_device_coherent_memory", + "VK_KHR_shader_constant_data", + "VK_KHR_dynamic_rendering_local_read", + "VK_KHR_shader_abort", + "VK_EXT_shader_image_atomic_int64", + "VK_KHR_shader_quad_control", + "VK_KHR_spirv_1_4", + "VK_EXT_memory_budget", + "VK_EXT_memory_priority", + "VK_NV_dedicated_allocation_image_aliasing", + "VK_KHR_separate_depth_stencil_layouts", + "VK_EXT_buffer_device_address", + "VK_EXT_tooling_info", + "VK_EXT_separate_stencil_usage", + "VK_KHR_present_wait", + "VK_NV_cooperative_matrix", + "VK_NV_coverage_reduction_mode", + "VK_EXT_fragment_shader_interlock", + "VK_EXT_ycbcr_image_arrays", + "VK_KHR_uniform_buffer_standard_layout", + "VK_EXT_provoking_vertex", +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + "VK_EXT_full_screen_exclusive", +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + "VK_KHR_buffer_device_address", + "VK_EXT_line_rasterization", + "VK_EXT_shader_atomic_float", + "VK_EXT_host_query_reset", + "VK_EXT_index_type_uint8", + "VK_EXT_extended_dynamic_state", + "VK_KHR_deferred_host_operations", + "VK_KHR_pipeline_executable_properties", + "VK_EXT_host_image_copy", + "VK_KHR_map_memory2", + "VK_EXT_map_memory_placed", + "VK_EXT_shader_atomic_float2", + "VK_EXT_swapchain_maintenance1", + "VK_EXT_shader_demote_to_helper_invocation", + "VK_NV_device_generated_commands", + "VK_NV_inherited_viewport_scissor", + "VK_KHR_shader_integer_dot_product", + "VK_EXT_texel_buffer_alignment", + "VK_QCOM_render_pass_transform", + "VK_EXT_depth_bias_control", + "VK_EXT_device_memory_report", + "VK_EXT_robustness2", + "VK_EXT_custom_border_color", + "VK_EXT_texture_compression_astc_3d", + "VK_GOOGLE_user_type", + "VK_KHR_pipeline_library", + "VK_NV_present_barrier", + "VK_KHR_shader_non_semantic_info", + "VK_KHR_present_id", + "VK_EXT_private_data", + "VK_EXT_pipeline_creation_cache_control", + "VK_KHR_video_encode_queue", + "VK_NV_device_diagnostics_config", + "VK_QCOM_render_pass_store_ops", +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + "VK_NV_cuda_kernel_launch", +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + "VK_QCOM_tile_shading", + "VK_NV_low_latency", +#if defined( VK_USE_PLATFORM_METAL_EXT ) + "VK_EXT_metal_objects", +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + "VK_KHR_synchronization2", + "VK_EXT_descriptor_buffer", + "VK_KHR_device_address_commands", + "VK_EXT_graphics_pipeline_library", + "VK_AMD_shader_early_and_late_fragment_tests", + "VK_KHR_fragment_shader_barycentric", + "VK_KHR_shader_subgroup_uniform_control_flow", + "VK_KHR_zero_initialize_workgroup_memory", + "VK_NV_fragment_shading_rate_enums", + "VK_NV_ray_tracing_motion_blur", + "VK_EXT_mesh_shader", + "VK_EXT_ycbcr_2plane_444_formats", + "VK_EXT_fragment_density_map2", + "VK_QCOM_rotated_copy_commands", + "VK_EXT_image_robustness", + "VK_KHR_workgroup_memory_explicit_layout", + "VK_KHR_copy_commands2", + "VK_EXT_image_compression_control", + "VK_EXT_attachment_feedback_loop_layout", + "VK_EXT_4444_formats", + "VK_EXT_device_fault", + "VK_ARM_rasterization_order_attachment_access", + "VK_EXT_rgba10x6_formats", +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + "VK_NV_acquire_winrt_display", +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + "VK_VALVE_mutable_descriptor_type", + "VK_EXT_vertex_input_dynamic_state", + "VK_EXT_physical_device_drm", + "VK_EXT_device_address_binding_report", + "VK_EXT_depth_clip_control", + "VK_EXT_primitive_topology_list_restart", + "VK_KHR_format_feature_flags2", + "VK_EXT_present_mode_fifo_latest_ready", +#if defined( VK_USE_PLATFORM_FUCHSIA ) + "VK_FUCHSIA_external_memory", + "VK_FUCHSIA_external_semaphore", + "VK_FUCHSIA_buffer_collection", +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + "VK_HUAWEI_subpass_shading", + "VK_HUAWEI_invocation_mask", + "VK_NV_external_memory_rdma", + "VK_EXT_pipeline_properties", + "VK_EXT_frame_boundary", + "VK_EXT_multisampled_render_to_single_sampled", + "VK_EXT_extended_dynamic_state2", + "VK_EXT_color_write_enable", + "VK_EXT_primitives_generated_query", + "VK_KHR_ray_tracing_maintenance1", + "VK_KHR_shader_untyped_pointers", + "VK_EXT_global_priority_query", + "VK_VALVE_video_encode_rgb_conversion", + "VK_EXT_image_view_min_lod", + "VK_EXT_multi_draw", + "VK_EXT_image_2d_view_of_3d", + "VK_EXT_shader_tile_image", + "VK_EXT_opacity_micromap", +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + "VK_NV_displacement_micromap", +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + "VK_EXT_load_store_op_none", + "VK_HUAWEI_cluster_culling_shader", + "VK_EXT_border_color_swizzle", + "VK_EXT_pageable_device_local_memory", + "VK_KHR_maintenance4", + "VK_ARM_shader_core_properties", + "VK_KHR_shader_subgroup_rotate", + "VK_ARM_scheduling_controls", + "VK_EXT_image_sliced_view_of_3d", + "VK_VALVE_descriptor_set_host_mapping", + "VK_EXT_depth_clamp_zero_one", + "VK_EXT_non_seamless_cube_map", + "VK_ARM_render_pass_striped", + "VK_QCOM_fragment_density_map_offset", + "VK_NV_copy_memory_indirect", + "VK_NV_memory_decompression", + "VK_NV_device_generated_commands_compute", + "VK_NV_ray_tracing_linear_swept_spheres", + "VK_NV_linear_color_attachment", + "VK_KHR_shader_maximal_reconvergence", + "VK_EXT_image_compression_control_swapchain", + "VK_QCOM_image_processing", + "VK_EXT_nested_command_buffer", +#if defined( VK_USE_PLATFORM_OHOS ) + "VK_OHOS_external_memory", +#endif /*VK_USE_PLATFORM_OHOS*/ + "VK_EXT_external_memory_acquire_unmodified", + "VK_EXT_extended_dynamic_state3", + "VK_EXT_subpass_merge_feedback", + "VK_ARM_tensors", + "VK_EXT_shader_module_identifier", + "VK_EXT_rasterization_order_attachment_access", + "VK_NV_optical_flow", + "VK_EXT_legacy_dithering", + "VK_EXT_pipeline_protected_access", +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + "VK_ANDROID_external_format_resolve", +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + "VK_KHR_maintenance5", + "VK_AMD_anti_lag", +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + "VK_AMDX_dense_geometry_format", +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + "VK_KHR_present_id2", + "VK_KHR_present_wait2", + "VK_KHR_ray_tracing_position_fetch", + "VK_EXT_shader_object", + "VK_KHR_pipeline_binary", + "VK_QCOM_tile_properties", + "VK_SEC_amigo_profiling", + "VK_KHR_swapchain_maintenance1", + "VK_QCOM_multiview_per_view_viewports", + "VK_NV_ray_tracing_invocation_reorder", + "VK_NV_cooperative_vector", + "VK_NV_extended_sparse_address_space", + "VK_EXT_mutable_descriptor_type", + "VK_EXT_legacy_vertex_attributes", + "VK_ARM_shader_core_builtins", + "VK_EXT_pipeline_library_group_handles", + "VK_EXT_dynamic_rendering_unused_attachments", + "VK_KHR_internally_synchronized_queues", + "VK_NV_low_latency2", + "VK_KHR_cooperative_matrix", + "VK_ARM_data_graph", + "VK_QCOM_multiview_per_view_render_areas", + "VK_KHR_compute_shader_derivatives", + "VK_KHR_video_decode_av1", + "VK_KHR_video_encode_av1", + "VK_KHR_video_decode_vp9", + "VK_KHR_video_maintenance1", + "VK_NV_per_stage_descriptor_set", + "VK_QCOM_image_processing2", + "VK_QCOM_filter_cubic_weights", + "VK_QCOM_ycbcr_degamma", + "VK_QCOM_filter_cubic_clamp", + "VK_EXT_attachment_feedback_loop_dynamic_state", + "VK_KHR_vertex_attribute_divisor", + "VK_KHR_load_store_op_none", + "VK_KHR_unified_image_layouts", + "VK_KHR_shader_float_controls2", +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + "VK_QNX_external_memory_screen_buffer", +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + "VK_MSFT_layered_driver", + "VK_KHR_index_type_uint8", + "VK_KHR_line_rasterization", + "VK_KHR_calibrated_timestamps", + "VK_KHR_shader_expect_assume", + "VK_KHR_maintenance6", + "VK_NV_descriptor_pool_overallocation", + "VK_QCOM_tile_memory_heap", + "VK_KHR_copy_memory_indirect", + "VK_EXT_memory_decompression", + "VK_KHR_video_encode_intra_refresh", + "VK_KHR_video_encode_quantization_map", + "VK_NV_raw_access_chains", + "VK_NV_external_compute_queue", + "VK_KHR_shader_relaxed_extended_instruction", + "VK_NV_command_buffer_inheritance", + "VK_KHR_maintenance7", + "VK_NV_shader_atomic_float16_vector", + "VK_EXT_shader_replicated_composites", + "VK_EXT_shader_float8", + "VK_NV_ray_tracing_validation", + "VK_NV_cluster_acceleration_structure", + "VK_NV_partitioned_acceleration_structure", + "VK_EXT_device_generated_commands", + "VK_KHR_device_fault", + "VK_KHR_maintenance8", + "VK_MESA_image_alignment_control", + "VK_KHR_shader_fma", + "VK_NV_push_constant_bank", + "VK_EXT_ray_tracing_invocation_reorder", + "VK_EXT_depth_clamp_control", + "VK_KHR_maintenance9", + "VK_KHR_video_maintenance2", + "VK_HUAWEI_hdr_vivid", + "VK_NV_cooperative_matrix2", + "VK_ARM_pipeline_opacity_micromap", +#if defined( VK_USE_PLATFORM_METAL_EXT ) + "VK_EXT_external_memory_metal", +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + "VK_KHR_depth_clamp_zero_one", + "VK_ARM_performance_counters_by_region", + "VK_ARM_shader_instrumentation", + "VK_EXT_vertex_attribute_robustness", + "VK_ARM_format_pack", + "VK_VALVE_fragment_density_map_layered", + "VK_KHR_robustness2", + "VK_NV_present_metering", + "VK_EXT_fragment_density_map_offset", + "VK_EXT_zero_initialize_device_memory", + "VK_KHR_present_mode_fifo_latest_ready", + "VK_EXT_shader_64bit_indexing", + "VK_EXT_custom_resolve", + "VK_QCOM_data_graph_model", + "VK_KHR_maintenance10", + "VK_EXT_shader_long_vector", + "VK_SEC_pipeline_cache_incremental_mode", + "VK_EXT_shader_uniform_buffer_unsized_array", + "VK_NV_compute_occupancy_priority", + "VK_EXT_shader_subgroup_partitioned", + "VK_VALVE_shader_mixed_float_dot_product" }; + return deviceExtensions; + } + + VULKAN_HPP_INLINE std::set const & getInstanceExtensions() + { + static std::set const instanceExtensions = { "VK_KHR_surface", + "VK_KHR_display", +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + "VK_KHR_xlib_surface", +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ +#if defined( VK_USE_PLATFORM_XCB_KHR ) + "VK_KHR_xcb_surface", +#endif /*VK_USE_PLATFORM_XCB_KHR*/ +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + "VK_KHR_wayland_surface", +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + "VK_KHR_android_surface", +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + "VK_KHR_win32_surface", +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + "VK_EXT_debug_report", +#if defined( VK_USE_PLATFORM_GGP ) + "VK_GGP_stream_descriptor_surface", +#endif /*VK_USE_PLATFORM_GGP*/ + "VK_NV_external_memory_capabilities", + "VK_KHR_get_physical_device_properties2", + "VK_EXT_validation_flags", +#if defined( VK_USE_PLATFORM_VI_NN ) + "VK_NN_vi_surface", +#endif /*VK_USE_PLATFORM_VI_NN*/ + "VK_KHR_device_group_creation", + "VK_KHR_external_memory_capabilities", + "VK_KHR_external_semaphore_capabilities", + "VK_EXT_direct_mode_display", +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + "VK_EXT_acquire_xlib_display", +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + "VK_EXT_display_surface_counter", + "VK_EXT_swapchain_colorspace", + "VK_KHR_external_fence_capabilities", + "VK_KHR_get_surface_capabilities2", + "VK_KHR_get_display_properties2", +#if defined( VK_USE_PLATFORM_IOS_MVK ) + "VK_MVK_ios_surface", +#endif /*VK_USE_PLATFORM_IOS_MVK*/ +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + "VK_MVK_macos_surface", +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + "VK_EXT_debug_utils", +#if defined( VK_USE_PLATFORM_FUCHSIA ) + "VK_FUCHSIA_imagepipe_surface", +#endif /*VK_USE_PLATFORM_FUCHSIA*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + "VK_EXT_metal_surface", +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + "VK_KHR_surface_protected_capabilities", + "VK_EXT_validation_features", + "VK_EXT_headless_surface", + "VK_EXT_surface_maintenance1", + "VK_EXT_acquire_drm_display", +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + "VK_EXT_directfb_surface", +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + "VK_QNX_screen_surface", +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + "VK_KHR_portability_enumeration", + "VK_GOOGLE_surfaceless_query", + "VK_LUNARG_direct_driver_loading", + "VK_KHR_surface_maintenance1", + "VK_EXT_layer_settings", + "VK_NV_display_stereo", +#if defined( VK_USE_PLATFORM_OHOS ) + "VK_OHOS_surface", +#endif /*VK_USE_PLATFORM_OHOS*/ +#if defined( VK_USE_PLATFORM_UBM_SEC ) + "VK_SEC_ubm_surface" +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + }; + return instanceExtensions; + } + + VULKAN_HPP_INLINE std::map>> const & getExtensionDepends( std::string const & extension ) + { + static std::map>> const noDependencies; + static std::map>>> const dependencies = { + { "VK_KHR_swapchain", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } }, + { "VK_KHR_display", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } }, + { "VK_KHR_display_swapchain", + { { "VK_VERSION_1_0", + { { + "VK_KHR_display", + "VK_KHR_swapchain", + } } } } } +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + , + { "VK_KHR_xlib_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ +#if defined( VK_USE_PLATFORM_XCB_KHR ) + , + { "VK_KHR_xcb_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_XCB_KHR*/ +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + , + { "VK_KHR_wayland_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + , + { "VK_KHR_android_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + , + { "VK_KHR_win32_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + , + { "VK_EXT_debug_marker", + { { "VK_VERSION_1_0", + { { + "VK_EXT_debug_report", + } } } } }, + { "VK_KHR_video_queue", + { { "VK_VERSION_1_1", + { { + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_KHR_video_decode_queue", + { { "VK_VERSION_1_0", + { { + "VK_KHR_synchronization2", + "VK_KHR_video_queue", + } } }, + { "VK_VERSION_1_3", + { { + "VK_KHR_video_queue", + } } } } }, + { "VK_EXT_transform_feedback", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_video_encode_h264", + { { "VK_VERSION_1_0", + { { + "VK_KHR_video_encode_queue", + } } } } }, + { "VK_KHR_video_encode_h265", + { { "VK_VERSION_1_0", + { { + "VK_KHR_video_encode_queue", + } } } } }, + { "VK_KHR_video_decode_h264", + { { "VK_VERSION_1_0", + { { + "VK_KHR_video_decode_queue", + } } } } }, + { "VK_AMD_texture_gather_bias_lod", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_dynamic_rendering", + { { "VK_VERSION_1_0", + { { + "VK_KHR_depth_stencil_resolve", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_depth_stencil_resolve", + } } }, + { "VK_VERSION_1_2", { {} } } } } +#if defined( VK_USE_PLATFORM_GGP ) + , + { "VK_GGP_stream_descriptor_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_GGP*/ + , + { "VK_NV_corner_sampled_image", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_multiview", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_external_memory", + { { "VK_VERSION_1_0", + { { + "VK_NV_external_memory_capabilities", + } } } } } +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + , + { "VK_NV_external_memory_win32", + { { "VK_VERSION_1_0", + { { + "VK_NV_external_memory", + } } } } }, + { "VK_NV_win32_keyed_mutex", + { { "VK_VERSION_1_0", + { { + "VK_NV_external_memory_win32", + } } } } } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + , + { "VK_KHR_device_group", + { { "VK_VERSION_1_0", + { { + "VK_KHR_device_group_creation", + } } } } } +#if defined( VK_USE_PLATFORM_VI_NN ) + , + { "VK_NN_vi_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_VI_NN*/ + , + { "VK_EXT_texture_compression_astc_hdr", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_astc_decode_mode", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_pipeline_robustness", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_external_memory_capabilities", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_external_memory", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory_capabilities", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + , + { "VK_KHR_external_memory_win32", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + , + { "VK_KHR_external_memory_fd", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + , + { "VK_KHR_win32_keyed_mutex", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory_win32", + } } } } } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + , + { "VK_KHR_external_semaphore_capabilities", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_external_semaphore", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_semaphore_capabilities", + } } } } } +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + , + { "VK_KHR_external_semaphore_win32", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_semaphore", + } } } } } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + , + { "VK_KHR_external_semaphore_fd", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_semaphore", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_push_descriptor", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_conditional_rendering", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_float16_int8", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_16bit_storage", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_storage_buffer_storage_class", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_incremental_present", + { { "VK_VERSION_1_0", + { { + "VK_KHR_swapchain", + } } } } }, + { "VK_EXT_direct_mode_display", + { { "VK_VERSION_1_0", + { { + "VK_KHR_display", + } } } } } +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + , + { "VK_EXT_acquire_xlib_display", + { { "VK_VERSION_1_0", + { { + "VK_EXT_direct_mode_display", + } } } } } +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + , + { "VK_EXT_display_surface_counter", + { { "VK_VERSION_1_0", + { { + "VK_KHR_display", + } } } } }, + { "VK_EXT_display_control", + { { "VK_VERSION_1_0", + { { + "VK_EXT_display_surface_counter", + "VK_KHR_swapchain", + } } } } }, + { "VK_GOOGLE_display_timing", + { { "VK_VERSION_1_0", + { { + "VK_KHR_swapchain", + } } } } }, + { "VK_NVX_multiview_per_view_attributes", + { { "VK_VERSION_1_0", + { { + "VK_KHR_multiview", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_discard_rectangles", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_conservative_rasterization", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_depth_clip_enable", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_swapchain_colorspace", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } }, + { "VK_EXT_hdr_metadata", + { { "VK_VERSION_1_0", + { { + "VK_KHR_swapchain", + } } } } }, + { "VK_KHR_imageless_framebuffer", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_image_format_list", + "VK_KHR_maintenance2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_image_format_list", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_KHR_create_renderpass2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_maintenance2", + "VK_KHR_multiview", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_IMG_relaxed_line_rasterization", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shared_presentable_image", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_get_surface_capabilities2", + "VK_KHR_swapchain", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_get_surface_capabilities2", + "VK_KHR_swapchain", + } } } } }, + { "VK_KHR_external_fence_capabilities", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_external_fence", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_fence_capabilities", + } } } } } +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + , + { "VK_KHR_external_fence_win32", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_fence", + } } } } } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + , + { "VK_KHR_external_fence_fd", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_fence", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_performance_query", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_get_surface_capabilities2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } }, + { "VK_KHR_variable_pointers", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_storage_buffer_storage_class", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_get_display_properties2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_display", + } } } } } +#if defined( VK_USE_PLATFORM_IOS_MVK ) + , + { "VK_MVK_ios_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_IOS_MVK*/ +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + , + { "VK_MVK_macos_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + , + { "VK_EXT_external_memory_dma_buf", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory_fd", + } } } } }, + { "VK_EXT_queue_family_foreign", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_dedicated_allocation", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_memory_requirements2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + , + { "VK_ANDROID_external_memory_android_hardware_buffer", + { { "VK_VERSION_1_0", + { { + "VK_EXT_queue_family_foreign", + "VK_KHR_dedicated_allocation", + "VK_KHR_external_memory", + "VK_KHR_sampler_ycbcr_conversion", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_queue_family_foreign", + } } } } } +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + , + { "VK_EXT_sampler_filter_minmax", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + , + { "VK_AMDX_shader_enqueue", + { { "VK_VERSION_1_0", + { { + "VK_EXT_extended_dynamic_state", + "VK_KHR_maintenance5", + "VK_KHR_pipeline_library", + "VK_KHR_spirv_1_4", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_3", + { { + "VK_KHR_maintenance5", + "VK_KHR_pipeline_library", + } } } } } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + , + { "VK_EXT_descriptor_heap", + { { "VK_VERSION_1_0", + { { + "VK_KHR_buffer_device_address", + "VK_KHR_maintenance5", + } } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_maintenance5", + } } } } }, + { "VK_EXT_inline_uniform_block", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_maintenance1", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_bfloat16", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_sample_locations", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_blend_operation_advanced", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_acceleration_structure", + { { "VK_VERSION_1_1", + { { + "VK_EXT_descriptor_indexing", + "VK_KHR_buffer_device_address", + "VK_KHR_deferred_host_operations", + } } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_deferred_host_operations", + } } } } }, + { "VK_KHR_ray_tracing_pipeline", + { { "VK_VERSION_1_0", + { { + "VK_KHR_acceleration_structure", + "VK_KHR_spirv_1_4", + } } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_acceleration_structure", + } } } } }, + { "VK_KHR_ray_query", + { { "VK_VERSION_1_0", + { { + "VK_KHR_acceleration_structure", + "VK_KHR_spirv_1_4", + } } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_acceleration_structure", + } } } } }, + { "VK_NV_shader_sm_builtins", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_sampler_ycbcr_conversion", + { { "VK_VERSION_1_0", + { { + "VK_KHR_bind_memory2", + "VK_KHR_get_memory_requirements2", + "VK_KHR_get_physical_device_properties2", + "VK_KHR_maintenance1", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_image_drm_format_modifier", + { { "VK_VERSION_1_0", + { { + "VK_KHR_bind_memory2", + "VK_KHR_get_physical_device_properties2", + "VK_KHR_image_format_list", + "VK_KHR_sampler_ycbcr_conversion", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_image_format_list", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_EXT_descriptor_indexing", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_maintenance3", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + , + { "VK_KHR_portability_subset", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + , + { "VK_NV_shading_rate_image", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_ray_tracing", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_memory_requirements2", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_representative_fragment_test", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_maintenance3", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_QCOM_cooperative_matrix_conversion", + { { "VK_VERSION_1_0", + { { + "VK_KHR_cooperative_matrix", + } } } } }, + { "VK_KHR_shader_subgroup_extended_types", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_8bit_storage", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_storage_buffer_storage_class", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_external_memory_host", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_atomic_int64", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_clock", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_calibrated_timestamps", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_AMD_shader_core_properties", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_video_decode_h265", + { { "VK_VERSION_1_0", + { { + "VK_KHR_video_decode_queue", + } } } } }, + { "VK_KHR_global_priority", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_vertex_attribute_divisor", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_GGP ) + , + { "VK_GGP_frame_token", + { { "VK_VERSION_1_0", + { { + "VK_GGP_stream_descriptor_surface", + "VK_KHR_swapchain", + } } } } } +#endif /*VK_USE_PLATFORM_GGP*/ + , + { "VK_KHR_driver_properties", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_float_controls", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_shader_subgroup_partitioned", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_depth_stencil_resolve", + { { "VK_VERSION_1_0", + { { + "VK_KHR_create_renderpass2", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_KHR_swapchain_mutable_format", + { { "VK_VERSION_1_0", + { { + "VK_KHR_image_format_list", + "VK_KHR_maintenance2", + "VK_KHR_swapchain", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_image_format_list", + "VK_KHR_swapchain", + } } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_swapchain", + } } } } }, + { "VK_NV_compute_shader_derivatives", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_mesh_shader", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_fragment_shader_barycentric", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_shader_image_footprint", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_scissor_exclusive", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_device_diagnostic_checkpoints", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_timeline_semaphore", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_present_timing", + { { "VK_VERSION_1_0", + { { + "VK_KHR_calibrated_timestamps", + "VK_KHR_get_surface_capabilities2", + "VK_KHR_present_id2", + "VK_KHR_swapchain", + } } } } }, + { "VK_INTEL_shader_integer_functions2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_vulkan_memory_model", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_pci_bus_info", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_AMD_display_native_hdr", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_get_surface_capabilities2", + "VK_KHR_swapchain", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_get_surface_capabilities2", + "VK_KHR_swapchain", + } } } } } +#if defined( VK_USE_PLATFORM_FUCHSIA ) + , + { "VK_FUCHSIA_imagepipe_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + , + { "VK_KHR_shader_terminate_invocation", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_METAL_EXT ) + , + { "VK_EXT_metal_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + , + { "VK_EXT_fragment_density_map", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_scalar_block_layout", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_subgroup_size_control", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_fragment_shading_rate", + { { "VK_VERSION_1_0", + { { + "VK_KHR_create_renderpass2", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_create_renderpass2", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_AMD_shader_core_properties2", + { { "VK_VERSION_1_0", + { { + "VK_AMD_shader_core_properties", + } } } } }, + { "VK_AMD_device_coherent_memory", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_dynamic_rendering_local_read", + { { "VK_VERSION_1_0", + { { + "VK_KHR_dynamic_rendering", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_KHR_shader_abort", + { { "VK_VERSION_1_0", + { { + "VK_KHR_device_fault", + "VK_KHR_get_physical_device_properties2", + "VK_KHR_shader_constant_data", + } } } } }, + { "VK_EXT_shader_image_atomic_int64", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_quad_control", + { { "VK_VERSION_1_1", + { { + "VK_KHR_shader_maximal_reconvergence", + "VK_KHR_vulkan_memory_model", + } } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_shader_maximal_reconvergence", + } } } } }, + { "VK_KHR_spirv_1_4", + { { "VK_VERSION_1_1", + { { + "VK_KHR_shader_float_controls", + } } } } }, + { "VK_EXT_memory_budget", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_memory_priority", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_surface_protected_capabilities", + { { "VK_VERSION_1_1", + { { + "VK_KHR_get_surface_capabilities2", + } } } } }, + { "VK_NV_dedicated_allocation_image_aliasing", + { { "VK_VERSION_1_0", + { { + "VK_KHR_dedicated_allocation", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_separate_depth_stencil_layouts", + { { "VK_VERSION_1_0", + { { + "VK_KHR_create_renderpass2", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_create_renderpass2", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_EXT_buffer_device_address", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_present_wait", + { { "VK_VERSION_1_0", + { { + "VK_KHR_present_id", + "VK_KHR_swapchain", + } } } } }, + { "VK_NV_cooperative_matrix", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_coverage_reduction_mode", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_NV_framebuffer_mixed_samples", + } } }, + { "VK_VERSION_1_1", + { { + "VK_NV_framebuffer_mixed_samples", + } } } } }, + { "VK_EXT_fragment_shader_interlock", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_ycbcr_image_arrays", + { { "VK_VERSION_1_0", + { { + "VK_KHR_sampler_ycbcr_conversion", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_uniform_buffer_standard_layout", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_provoking_vertex", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + , + { "VK_EXT_full_screen_exclusive", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_get_surface_capabilities2", + "VK_KHR_surface", + "VK_KHR_swapchain", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_get_surface_capabilities2", + "VK_KHR_surface", + "VK_KHR_swapchain", + } } } } } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + , + { "VK_EXT_headless_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } }, + { "VK_KHR_buffer_device_address", + { { "VK_VERSION_1_0", + { { + "VK_KHR_device_group", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_line_rasterization", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_shader_atomic_float", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_host_query_reset", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_index_type_uint8", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_extended_dynamic_state", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_pipeline_executable_properties", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_host_image_copy", + { { "VK_VERSION_1_0", + { { + "VK_KHR_copy_commands2", + "VK_KHR_format_feature_flags2", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_copy_commands2", + "VK_KHR_format_feature_flags2", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_EXT_map_memory_placed", + { { "VK_VERSION_1_0", + { { + "VK_KHR_map_memory2", + } } }, + { "VK_VERSION_1_4", { {} } } } }, + { "VK_EXT_shader_atomic_float2", + { { "VK_VERSION_1_0", + { { + "VK_EXT_shader_atomic_float", + } } } } }, + { "VK_EXT_surface_maintenance1", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_surface_capabilities2", + "VK_KHR_surface", + } } } } }, + { "VK_EXT_swapchain_maintenance1", + { { "VK_VERSION_1_0", + { { + "VK_EXT_surface_maintenance1", + "VK_KHR_get_physical_device_properties2", + "VK_KHR_swapchain", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_surface_maintenance1", + "VK_KHR_swapchain", + } } } } }, + { "VK_EXT_shader_demote_to_helper_invocation", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_device_generated_commands", + { { "VK_VERSION_1_1", + { { + "VK_KHR_buffer_device_address", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_NV_inherited_viewport_scissor", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_integer_dot_product", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_texel_buffer_alignment", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_depth_bias_control", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_device_memory_report", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_acquire_drm_display", + { { "VK_VERSION_1_0", + { { + "VK_EXT_direct_mode_display", + } } } } }, + { "VK_EXT_robustness2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_custom_border_color", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_texture_compression_astc_3d", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_present_barrier", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_get_surface_capabilities2", + "VK_KHR_surface", + "VK_KHR_swapchain", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_get_surface_capabilities2", + "VK_KHR_surface", + "VK_KHR_swapchain", + } } } } }, + { "VK_KHR_present_id", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_swapchain", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_swapchain", + } } } } }, + { "VK_EXT_private_data", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_pipeline_creation_cache_control", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_video_encode_queue", + { { "VK_VERSION_1_0", + { { + "VK_KHR_synchronization2", + "VK_KHR_video_queue", + } } }, + { "VK_VERSION_1_3", + { { + "VK_KHR_video_queue", + } } } } }, + { "VK_NV_device_diagnostics_config", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + , + { "VK_NV_cuda_kernel_launch", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + , + { "VK_QCOM_tile_shading", + { { "VK_VERSION_1_0", + { { + "VK_QCOM_tile_properties", + } } } } }, + { "VK_KHR_synchronization2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_descriptor_buffer", + { { "VK_VERSION_1_0", + { { + "VK_EXT_descriptor_indexing", + "VK_KHR_buffer_device_address", + "VK_KHR_get_physical_device_properties2", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_descriptor_indexing", + "VK_KHR_buffer_device_address", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_KHR_device_address_commands", + { { "VK_VERSION_1_0", + { { + "VK_EXT_extended_dynamic_state", + "VK_KHR_buffer_device_address", + "VK_KHR_get_physical_device_properties2", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_extended_dynamic_state", + "VK_KHR_buffer_device_address", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_2", + { { + "VK_EXT_extended_dynamic_state", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_EXT_graphics_pipeline_library", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_pipeline_library", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_pipeline_library", + } } } } }, + { "VK_AMD_shader_early_and_late_fragment_tests", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_fragment_shader_barycentric", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_subgroup_uniform_control_flow", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_zero_initialize_workgroup_memory", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_fragment_shading_rate_enums", + { { "VK_VERSION_1_0", + { { + "VK_KHR_fragment_shading_rate", + } } } } }, + { "VK_NV_ray_tracing_motion_blur", + { { "VK_VERSION_1_0", + { { + "VK_KHR_ray_tracing_pipeline", + } } } } }, + { "VK_EXT_mesh_shader", + { { "VK_VERSION_1_0", + { { + "VK_KHR_spirv_1_4", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_EXT_ycbcr_2plane_444_formats", + { { "VK_VERSION_1_0", + { { + "VK_KHR_sampler_ycbcr_conversion", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_fragment_density_map2", + { { "VK_VERSION_1_0", + { { + "VK_EXT_fragment_density_map", + } } } } }, + { "VK_QCOM_rotated_copy_commands", + { { "VK_VERSION_1_0", + { { + "VK_KHR_copy_commands2", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_EXT_image_robustness", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_workgroup_memory_explicit_layout", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_copy_commands2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_image_compression_control", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_attachment_feedback_loop_layout", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_4444_formats", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_device_fault", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_ARM_rasterization_order_attachment_access", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_rgba10x6_formats", + { { "VK_VERSION_1_0", + { { + "VK_KHR_sampler_ycbcr_conversion", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + , + { "VK_NV_acquire_winrt_display", + { { "VK_VERSION_1_0", + { { + "VK_EXT_direct_mode_display", + } } } } } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + , + { "VK_EXT_directfb_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + , + { "VK_VALVE_mutable_descriptor_type", + { { "VK_VERSION_1_0", + { { + "VK_KHR_maintenance3", + } } } } }, + { "VK_EXT_vertex_input_dynamic_state", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_physical_device_drm", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_device_address_binding_report", + { { "VK_VERSION_1_0", + { { + "VK_EXT_debug_utils", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_debug_utils", + } } } } }, + { "VK_EXT_depth_clip_control", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_primitive_topology_list_restart", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_format_feature_flags2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_present_mode_fifo_latest_ready", + { { "VK_VERSION_1_0", + { { + "VK_KHR_swapchain", + } } } } } +#if defined( VK_USE_PLATFORM_FUCHSIA ) + , + { "VK_FUCHSIA_external_memory", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory", + "VK_KHR_external_memory_capabilities", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_FUCHSIA_external_semaphore", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_semaphore", + "VK_KHR_external_semaphore_capabilities", + } } } } }, + { "VK_FUCHSIA_buffer_collection", + { { "VK_VERSION_1_0", + { { + "VK_FUCHSIA_external_memory", + "VK_KHR_sampler_ycbcr_conversion", + } } }, + { "VK_VERSION_1_1", + { { + "VK_FUCHSIA_external_memory", + } } } } } +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + , + { "VK_HUAWEI_subpass_shading", + { { "VK_VERSION_1_0", + { { + "VK_KHR_create_renderpass2", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_HUAWEI_invocation_mask", + { { "VK_VERSION_1_0", + { { + "VK_KHR_ray_tracing_pipeline", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_3", + { { + "VK_KHR_ray_tracing_pipeline", + } } } } }, + { "VK_NV_external_memory_rdma", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_pipeline_properties", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_frame_boundary", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_multisampled_render_to_single_sampled", + { { "VK_VERSION_1_0", + { { + "VK_KHR_create_renderpass2", + "VK_KHR_depth_stencil_resolve", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_EXT_extended_dynamic_state2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + , + { "VK_QNX_screen_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + , + { "VK_EXT_color_write_enable", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_primitives_generated_query", + { { "VK_VERSION_1_0", + { { + "VK_EXT_transform_feedback", + } } } } }, + { "VK_KHR_ray_tracing_maintenance1", + { { "VK_VERSION_1_0", + { { + "VK_KHR_acceleration_structure", + } } } } }, + { "VK_KHR_shader_untyped_pointers", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } } } }, + { "VK_EXT_global_priority_query", + { { "VK_VERSION_1_0", + { { + "VK_EXT_global_priority", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_global_priority", + } } } } }, + { "VK_VALVE_video_encode_rgb_conversion", + { { "VK_VERSION_1_0", + { { + "VK_KHR_sampler_ycbcr_conversion", + "VK_KHR_video_encode_queue", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_video_encode_queue", + } } } } }, + { "VK_EXT_image_view_min_lod", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_multi_draw", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_image_2d_view_of_3d", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_maintenance1", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_shader_tile_image", { { "VK_VERSION_1_3", { {} } } } }, + { "VK_EXT_opacity_micromap", + { { "VK_VERSION_1_0", + { { + "VK_KHR_acceleration_structure", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_3", + { { + "VK_KHR_acceleration_structure", + } } } } } +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + , + { "VK_NV_displacement_micromap", + { { "VK_VERSION_1_0", + { { + "VK_EXT_opacity_micromap", + } } } } } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + , + { "VK_HUAWEI_cluster_culling_shader", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_border_color_swizzle", + { { "VK_VERSION_1_0", + { { + "VK_EXT_custom_border_color", + } } } } }, + { "VK_EXT_pageable_device_local_memory", + { { "VK_VERSION_1_0", + { { + "VK_EXT_memory_priority", + } } } } }, + { "VK_KHR_maintenance4", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_ARM_shader_core_properties", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_subgroup_rotate", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_ARM_scheduling_controls", + { { "VK_VERSION_1_0", + { { + "VK_ARM_shader_core_builtins", + } } } } }, + { "VK_EXT_image_sliced_view_of_3d", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_maintenance1", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_VALVE_descriptor_set_host_mapping", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_depth_clamp_zero_one", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_non_seamless_cube_map", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_ARM_render_pass_striped", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_QCOM_fragment_density_map_offset", + { { "VK_VERSION_1_0", + { { + "VK_EXT_fragment_density_map", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_fragment_density_map", + } } } } }, + { "VK_NV_copy_memory_indirect", + { { "VK_VERSION_1_0", + { { + "VK_KHR_buffer_device_address", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_buffer_device_address", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_NV_memory_decompression", + { { "VK_VERSION_1_0", + { { + "VK_KHR_buffer_device_address", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_buffer_device_address", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_NV_device_generated_commands_compute", + { { "VK_VERSION_1_0", + { { + "VK_NV_device_generated_commands", + } } } } }, + { "VK_NV_ray_tracing_linear_swept_spheres", + { { "VK_VERSION_1_0", + { { + "VK_KHR_ray_tracing_pipeline", + } } } } }, + { "VK_NV_linear_color_attachment", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_GOOGLE_surfaceless_query", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } }, + { "VK_KHR_shader_maximal_reconvergence", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_image_compression_control_swapchain", + { { "VK_VERSION_1_0", + { { + "VK_EXT_image_compression_control", + } } } } }, + { "VK_QCOM_image_processing", + { { "VK_VERSION_1_0", + { { + "VK_KHR_format_feature_flags2", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_EXT_nested_command_buffer", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_OHOS ) + , + { "VK_OHOS_external_memory", + { { "VK_VERSION_1_0", + { { + "VK_EXT_queue_family_foreign", + "VK_KHR_dedicated_allocation", + "VK_KHR_external_memory", + "VK_KHR_sampler_ycbcr_conversion", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_queue_family_foreign", + } } } } } +#endif /*VK_USE_PLATFORM_OHOS*/ + , + { "VK_EXT_external_memory_acquire_unmodified", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_extended_dynamic_state3", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_subpass_merge_feedback", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_ARM_tensors", { { "VK_VERSION_1_3", { {} } } } }, + { "VK_EXT_shader_module_identifier", + { { "VK_VERSION_1_0", + { { + "VK_EXT_pipeline_creation_cache_control", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_pipeline_creation_cache_control", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_EXT_rasterization_order_attachment_access", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_optical_flow", + { { "VK_VERSION_1_0", + { { + "VK_KHR_format_feature_flags2", + "VK_KHR_get_physical_device_properties2", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_format_feature_flags2", + "VK_KHR_synchronization2", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_EXT_legacy_dithering", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_pipeline_protected_access", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + , + { "VK_ANDROID_external_format_resolve", + { { "VK_VERSION_1_0", + { { + "VK_ANDROID_external_memory_android_hardware_buffer", + } } } } } +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + , + { "VK_KHR_maintenance5", + { { "VK_VERSION_1_1", + { { + "VK_KHR_dynamic_rendering", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_AMD_anti_lag", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + , + { "VK_AMDX_dense_geometry_format", + { { "VK_VERSION_1_0", + { { + "VK_KHR_acceleration_structure", + "VK_KHR_maintenance5", + } } }, + { "VK_VERSION_1_4", + { { + "VK_KHR_acceleration_structure", + } } } } } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + , + { "VK_KHR_present_id2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_surface_capabilities2", + "VK_KHR_surface", + "VK_KHR_swapchain", + } } } } }, + { "VK_KHR_present_wait2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_surface_capabilities2", + "VK_KHR_present_id2", + "VK_KHR_surface", + "VK_KHR_swapchain", + } } } } }, + { "VK_KHR_ray_tracing_position_fetch", + { { "VK_VERSION_1_0", + { { + "VK_KHR_acceleration_structure", + } } } } }, + { "VK_EXT_shader_object", + { { "VK_VERSION_1_0", + { { + "VK_KHR_dynamic_rendering", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_dynamic_rendering", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_KHR_pipeline_binary", + { { "VK_VERSION_1_0", + { { + "VK_KHR_maintenance5", + } } }, + { "VK_VERSION_1_4", { {} } } } }, + { "VK_QCOM_tile_properties", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_SEC_amigo_profiling", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_surface_maintenance1", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_surface_capabilities2", + "VK_KHR_surface", + } } } } }, + { "VK_KHR_swapchain_maintenance1", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_surface_maintenance1", + "VK_KHR_swapchain", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_surface_maintenance1", + "VK_KHR_swapchain", + } } } } }, + { "VK_QCOM_multiview_per_view_viewports", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_ray_tracing_invocation_reorder", + { { "VK_VERSION_1_0", + { { + "VK_KHR_ray_tracing_pipeline", + } } } } }, + { "VK_NV_cooperative_vector", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_extended_sparse_address_space", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_mutable_descriptor_type", + { { "VK_VERSION_1_0", + { { + "VK_KHR_maintenance3", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_legacy_vertex_attributes", + { { "VK_VERSION_1_0", + { { + "VK_EXT_vertex_input_dynamic_state", + } } } } }, + { "VK_ARM_shader_core_builtins", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_pipeline_library_group_handles", + { { "VK_VERSION_1_0", + { { + "VK_KHR_pipeline_library", + "VK_KHR_ray_tracing_pipeline", + } } } } }, + { "VK_EXT_dynamic_rendering_unused_attachments", + { { "VK_VERSION_1_0", + { { + "VK_KHR_dynamic_rendering", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_dynamic_rendering", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_KHR_internally_synchronized_queues", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_low_latency2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_present_id", + "VK_KHR_timeline_semaphore", + }, + { + "VK_KHR_present_id2", + "VK_KHR_timeline_semaphore", + } } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_present_id", + }, + { + "VK_KHR_present_id2", + } } } } }, + { "VK_KHR_cooperative_matrix", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_ARM_data_graph", + { { "VK_VERSION_1_3", + { { + "VK_KHR_deferred_host_operations", + "VK_KHR_maintenance5", + } } } } }, + { "VK_QCOM_multiview_per_view_render_areas", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_compute_shader_derivatives", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_video_decode_av1", + { { "VK_VERSION_1_0", + { { + "VK_KHR_video_decode_queue", + } } } } }, + { "VK_KHR_video_encode_av1", + { { "VK_VERSION_1_0", + { { + "VK_KHR_video_encode_queue", + } } } } }, + { "VK_KHR_video_decode_vp9", + { { "VK_VERSION_1_0", + { { + "VK_KHR_video_decode_queue", + } } } } }, + { "VK_KHR_video_maintenance1", + { { "VK_VERSION_1_0", + { { + "VK_KHR_video_queue", + } } } } }, + { "VK_NV_per_stage_descriptor_set", + { { "VK_VERSION_1_0", + { { + "VK_KHR_maintenance6", + } } }, + { "VK_VERSION_1_4", { {} } } } }, + { "VK_QCOM_image_processing2", + { { "VK_VERSION_1_0", + { { + "VK_QCOM_image_processing", + } } } } }, + { "VK_QCOM_filter_cubic_weights", + { { "VK_VERSION_1_0", + { { + "VK_EXT_filter_cubic", + } } } } }, + { "VK_QCOM_ycbcr_degamma", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_QCOM_filter_cubic_clamp", + { { "VK_VERSION_1_0", + { { + "VK_EXT_filter_cubic", + "VK_EXT_sampler_filter_minmax", + } } }, + { "VK_VERSION_1_2", + { { + "VK_EXT_filter_cubic", + } } } } }, + { "VK_EXT_attachment_feedback_loop_dynamic_state", + { { "VK_VERSION_1_0", + { { + "VK_EXT_attachment_feedback_loop_layout", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_attachment_feedback_loop_layout", + } } } } }, + { "VK_KHR_vertex_attribute_divisor", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_unified_image_layouts", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_float_controls2", + { { "VK_VERSION_1_1", + { { + "VK_KHR_shader_float_controls", + } } } } } +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + , + { "VK_QNX_external_memory_screen_buffer", + { { "VK_VERSION_1_0", + { { + "VK_EXT_queue_family_foreign", + "VK_KHR_dedicated_allocation", + "VK_KHR_external_memory", + "VK_KHR_sampler_ycbcr_conversion", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_queue_family_foreign", + } } } } } +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + , + { "VK_MSFT_layered_driver", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_index_type_uint8", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_line_rasterization", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_calibrated_timestamps", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_expect_assume", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_maintenance6", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_descriptor_pool_overallocation", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_QCOM_tile_memory_heap", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_memory_requirements2", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_copy_memory_indirect", + { { "VK_VERSION_1_0", + { { + "VK_KHR_buffer_device_address", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_2", { {} } } } }, + { "VK_EXT_memory_decompression", + { { "VK_VERSION_1_0", + { { + "VK_KHR_buffer_device_address", + "VK_KHR_get_physical_device_properties2", + } } } } }, + { "VK_NV_display_stereo", + { { "VK_VERSION_1_0", + { { + "VK_KHR_display", + "VK_KHR_get_display_properties2", + } } } } }, + { "VK_KHR_video_encode_intra_refresh", + { { "VK_VERSION_1_0", + { { + "VK_KHR_video_encode_queue", + } } } } }, + { "VK_KHR_video_encode_quantization_map", + { { "VK_VERSION_1_0", + { { + "VK_KHR_format_feature_flags2", + "VK_KHR_video_encode_queue", + } } }, + { "VK_VERSION_1_3", + { { + "VK_KHR_video_encode_queue", + } } } } }, + { "VK_NV_raw_access_chains", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_relaxed_extended_instruction", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_command_buffer_inheritance", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_maintenance7", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_shader_atomic_float16_vector", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_shader_replicated_composites", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_shader_float8", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_ray_tracing_validation", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_cluster_acceleration_structure", + { { "VK_VERSION_1_0", + { { + "VK_KHR_acceleration_structure", + } } } } }, + { "VK_NV_partitioned_acceleration_structure", + { { "VK_VERSION_1_0", + { { + "VK_KHR_acceleration_structure", + } } } } }, + { "VK_EXT_device_generated_commands", + { { "VK_VERSION_1_0", + { { + "VK_KHR_buffer_device_address", + "VK_KHR_maintenance5", + } } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_maintenance5", + } } }, + { "VK_VERSION_1_3", { {} } } } }, + { "VK_KHR_device_fault", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } } } }, + { "VK_KHR_maintenance8", { { "VK_VERSION_1_1", { {} } } } }, + { "VK_MESA_image_alignment_control", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_shader_fma", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_ray_tracing_invocation_reorder", + { { "VK_VERSION_1_0", + { { + "VK_KHR_ray_tracing_pipeline", + } } } } }, + { "VK_EXT_depth_clamp_control", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_maintenance9", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_video_maintenance2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_video_queue", + } } } } } +#if defined( VK_USE_PLATFORM_OHOS ) + , + { "VK_OHOS_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_OHOS*/ + , + { "VK_HUAWEI_hdr_vivid", + { { "VK_VERSION_1_0", + { { + "VK_EXT_hdr_metadata", + "VK_KHR_get_physical_device_properties2", + "VK_KHR_swapchain", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_hdr_metadata", + "VK_KHR_swapchain", + } } } } }, + { "VK_NV_cooperative_matrix2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_cooperative_matrix", + } } } } }, + { "VK_ARM_pipeline_opacity_micromap", + { { "VK_VERSION_1_0", + { { + "VK_EXT_opacity_micromap", + } } } } } +#if defined( VK_USE_PLATFORM_METAL_EXT ) + , + { "VK_EXT_external_memory_metal", + { { "VK_VERSION_1_0", + { { + "VK_KHR_external_memory", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + , + { "VK_KHR_depth_clamp_zero_one", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_ARM_performance_counters_by_region", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_ARM_shader_instrumentation", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_vertex_attribute_robustness", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_ARM_format_pack", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_VALVE_fragment_density_map_layered", + { { "VK_VERSION_1_0", + { { + "VK_EXT_fragment_density_map", + "VK_KHR_maintenance5", + } } }, + { "VK_VERSION_1_4", + { { + "VK_EXT_fragment_density_map", + } } } } }, + { "VK_KHR_robustness2", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_present_metering", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_fragment_density_map_offset", + { { "VK_VERSION_1_0", + { { + "VK_EXT_fragment_density_map", + "VK_KHR_create_renderpass2", + "VK_KHR_dynamic_rendering", + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", + { { + "VK_EXT_fragment_density_map", + "VK_KHR_create_renderpass2", + "VK_KHR_dynamic_rendering", + } } }, + { "VK_VERSION_1_2", + { { + "VK_EXT_fragment_density_map", + "VK_KHR_dynamic_rendering", + } } }, + { "VK_VERSION_1_3", + { { + "VK_EXT_fragment_density_map", + } } } } }, + { "VK_EXT_zero_initialize_device_memory", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_KHR_present_mode_fifo_latest_ready", + { { "VK_VERSION_1_0", + { { + "VK_KHR_swapchain", + } } } } }, + { "VK_EXT_shader_64bit_indexing", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_custom_resolve", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_QCOM_data_graph_model", + { { "VK_VERSION_1_0", + { { + "VK_ARM_data_graph", + } } } } }, + { "VK_KHR_maintenance10", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_shader_long_vector", { { "VK_VERSION_1_2", { {} } } } }, + { "VK_SEC_pipeline_cache_incremental_mode", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_shader_uniform_buffer_unsized_array", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_NV_compute_occupancy_priority", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } }, + { "VK_EXT_shader_subgroup_partitioned", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + } } }, + { "VK_VERSION_1_1", { {} } } } } +#if defined( VK_USE_PLATFORM_UBM_SEC ) + , + { "VK_SEC_ubm_surface", + { { "VK_VERSION_1_0", + { { + "VK_KHR_surface", + } } } } } +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + , + { "VK_VALVE_shader_mixed_float_dot_product", + { { "VK_VERSION_1_0", + { { + "VK_KHR_get_physical_device_properties2", + "VK_KHR_shader_float16_int8", + } } }, + { "VK_VERSION_1_1", + { { + "VK_KHR_shader_float16_int8", + }, + {} } }, + { "VK_VERSION_1_2", + { { + "VK_KHR_get_physical_device_properties2", + } } } } } + }; + auto depIt = dependencies.find( extension ); + return ( depIt != dependencies.end() ) ? depIt->second : noDependencies; + } + + VULKAN_HPP_INLINE std::pair> const &> getExtensionDepends( std::string const & version, + std::string const & extension ) + { +#if !defined( NDEBUG ) + static std::set versions = { "VK_VERSION_1_0", "VK_VERSION_1_1", "VK_VERSION_1_2", "VK_VERSION_1_3", "VK_VERSION_1_4" }; + VULKAN_HPP_ASSERT( versions.find( version ) != versions.end() ); +#endif + static std::vector> noDependencies; + + std::map>> const & dependencies = getExtensionDepends( extension ); + if ( dependencies.empty() ) + { + return { true, noDependencies }; + } + auto depIt = dependencies.lower_bound( version ); + if ( ( depIt == dependencies.end() ) || ( depIt->first != version ) ) + { + depIt = std::prev( depIt ); + } + if ( depIt == dependencies.end() ) + { + return { false, noDependencies }; + } + else + { + return { true, depIt->second }; + } + } + + VULKAN_HPP_INLINE std::map const & getObsoletedExtensions() + { + static std::map const obsoletedExtensions = { { "VK_AMD_negative_viewport_height", "VK_KHR_maintenance1" } }; + return obsoletedExtensions; + } + + VULKAN_HPP_INLINE std::map const & getPromotedExtensions() + { + static std::map const promotedExtensions = { { "VK_KHR_sampler_mirror_clamp_to_edge", "VK_VERSION_1_2" }, + { "VK_EXT_debug_marker", "VK_EXT_debug_utils" }, + { "VK_AMD_draw_indirect_count", "VK_KHR_draw_indirect_count" }, + { "VK_KHR_dynamic_rendering", "VK_VERSION_1_3" }, + { "VK_KHR_multiview", "VK_VERSION_1_1" }, +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + { "VK_NV_win32_keyed_mutex", "VK_KHR_win32_keyed_mutex" }, +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + { "VK_KHR_get_physical_device_properties2", "VK_VERSION_1_1" }, + { "VK_KHR_device_group", "VK_VERSION_1_1" }, + { "VK_KHR_shader_draw_parameters", "VK_VERSION_1_1" }, + { "VK_EXT_texture_compression_astc_hdr", "VK_VERSION_1_3" }, + { "VK_EXT_pipeline_robustness", "VK_VERSION_1_4" }, + { "VK_KHR_maintenance1", "VK_VERSION_1_1" }, + { "VK_KHR_device_group_creation", "VK_VERSION_1_1" }, + { "VK_KHR_external_memory_capabilities", "VK_VERSION_1_1" }, + { "VK_KHR_external_memory", "VK_VERSION_1_1" }, + { "VK_KHR_external_semaphore_capabilities", "VK_VERSION_1_1" }, + { "VK_KHR_external_semaphore", "VK_VERSION_1_1" }, + { "VK_KHR_push_descriptor", "VK_VERSION_1_4" }, + { "VK_KHR_shader_float16_int8", "VK_VERSION_1_2" }, + { "VK_KHR_16bit_storage", "VK_VERSION_1_1" }, + { "VK_KHR_descriptor_update_template", "VK_VERSION_1_1" }, + { "VK_KHR_imageless_framebuffer", "VK_VERSION_1_2" }, + { "VK_KHR_create_renderpass2", "VK_VERSION_1_2" }, + { "VK_KHR_external_fence_capabilities", "VK_VERSION_1_1" }, + { "VK_KHR_external_fence", "VK_VERSION_1_1" }, + { "VK_KHR_maintenance2", "VK_VERSION_1_1" }, + { "VK_KHR_variable_pointers", "VK_VERSION_1_1" }, + { "VK_KHR_dedicated_allocation", "VK_VERSION_1_1" }, + { "VK_EXT_sampler_filter_minmax", "VK_VERSION_1_2" }, + { "VK_KHR_storage_buffer_storage_class", "VK_VERSION_1_1" }, + { "VK_EXT_inline_uniform_block", "VK_VERSION_1_3" }, + { "VK_KHR_relaxed_block_layout", "VK_VERSION_1_1" }, + { "VK_KHR_get_memory_requirements2", "VK_VERSION_1_1" }, + { "VK_KHR_image_format_list", "VK_VERSION_1_2" }, + { "VK_KHR_sampler_ycbcr_conversion", "VK_VERSION_1_1" }, + { "VK_KHR_bind_memory2", "VK_VERSION_1_1" }, + { "VK_EXT_descriptor_indexing", "VK_VERSION_1_2" }, + { "VK_EXT_shader_viewport_index_layer", "VK_VERSION_1_2" }, + { "VK_KHR_maintenance3", "VK_VERSION_1_1" }, + { "VK_KHR_draw_indirect_count", "VK_VERSION_1_2" }, + { "VK_QCOM_render_pass_shader_resolve", "VK_EXT_custom_resolve" }, + { "VK_EXT_global_priority", "VK_KHR_global_priority" }, + { "VK_KHR_shader_subgroup_extended_types", "VK_VERSION_1_2" }, + { "VK_KHR_8bit_storage", "VK_VERSION_1_2" }, + { "VK_KHR_shader_atomic_int64", "VK_VERSION_1_2" }, + { "VK_EXT_calibrated_timestamps", "VK_KHR_calibrated_timestamps" }, + { "VK_KHR_global_priority", "VK_VERSION_1_4" }, + { "VK_EXT_vertex_attribute_divisor", "VK_KHR_vertex_attribute_divisor" }, + { "VK_EXT_pipeline_creation_feedback", "VK_VERSION_1_3" }, + { "VK_KHR_driver_properties", "VK_VERSION_1_2" }, + { "VK_KHR_shader_float_controls", "VK_VERSION_1_2" }, + { "VK_NV_shader_subgroup_partitioned", "VK_EXT_shader_subgroup_partitioned" }, + { "VK_KHR_depth_stencil_resolve", "VK_VERSION_1_2" }, + { "VK_NV_compute_shader_derivatives", "VK_KHR_compute_shader_derivatives" }, + { "VK_NV_fragment_shader_barycentric", "VK_KHR_fragment_shader_barycentric" }, + { "VK_KHR_timeline_semaphore", "VK_VERSION_1_2" }, + { "VK_KHR_vulkan_memory_model", "VK_VERSION_1_2" }, + { "VK_KHR_shader_terminate_invocation", "VK_VERSION_1_3" }, + { "VK_EXT_scalar_block_layout", "VK_VERSION_1_2" }, + { "VK_EXT_subgroup_size_control", "VK_VERSION_1_3" }, + { "VK_KHR_dynamic_rendering_local_read", "VK_VERSION_1_4" }, + { "VK_KHR_spirv_1_4", "VK_VERSION_1_2" }, + { "VK_KHR_separate_depth_stencil_layouts", "VK_VERSION_1_2" }, + { "VK_EXT_tooling_info", "VK_VERSION_1_3" }, + { "VK_EXT_separate_stencil_usage", "VK_VERSION_1_2" }, + { "VK_KHR_uniform_buffer_standard_layout", "VK_VERSION_1_2" }, + { "VK_KHR_buffer_device_address", "VK_VERSION_1_2" }, + { "VK_EXT_line_rasterization", "VK_KHR_line_rasterization" }, + { "VK_EXT_host_query_reset", "VK_VERSION_1_2" }, + { "VK_EXT_index_type_uint8", "VK_KHR_index_type_uint8" }, + { "VK_EXT_extended_dynamic_state", "VK_VERSION_1_3" }, + { "VK_EXT_host_image_copy", "VK_VERSION_1_4" }, + { "VK_KHR_map_memory2", "VK_VERSION_1_4" }, + { "VK_EXT_surface_maintenance1", "VK_KHR_surface_maintenance1" }, + { "VK_EXT_swapchain_maintenance1", "VK_KHR_swapchain_maintenance1" }, + { "VK_EXT_shader_demote_to_helper_invocation", "VK_VERSION_1_3" }, + { "VK_KHR_shader_integer_dot_product", "VK_VERSION_1_3" }, + { "VK_EXT_texel_buffer_alignment", "VK_VERSION_1_3" }, + { "VK_EXT_robustness2", "VK_KHR_robustness2" }, + { "VK_KHR_shader_non_semantic_info", "VK_VERSION_1_3" }, + { "VK_EXT_private_data", "VK_VERSION_1_3" }, + { "VK_EXT_pipeline_creation_cache_control", "VK_VERSION_1_3" }, + { "VK_KHR_synchronization2", "VK_VERSION_1_3" }, + { "VK_KHR_zero_initialize_workgroup_memory", "VK_VERSION_1_3" }, + { "VK_EXT_ycbcr_2plane_444_formats", "VK_VERSION_1_3" }, + { "VK_EXT_image_robustness", "VK_VERSION_1_3" }, + { "VK_KHR_copy_commands2", "VK_VERSION_1_3" }, + { "VK_EXT_4444_formats", "VK_VERSION_1_3" }, + { "VK_EXT_device_fault", "VK_KHR_device_fault" }, + { "VK_ARM_rasterization_order_attachment_access", + "VK_EXT_rasterization_order_attachment_access" }, + { "VK_VALVE_mutable_descriptor_type", "VK_EXT_mutable_descriptor_type" }, + { "VK_KHR_format_feature_flags2", "VK_VERSION_1_3" }, + { "VK_EXT_present_mode_fifo_latest_ready", "VK_KHR_present_mode_fifo_latest_ready" }, + { "VK_EXT_extended_dynamic_state2", "VK_VERSION_1_3" }, + { "VK_EXT_global_priority_query", "VK_KHR_global_priority" }, + { "VK_EXT_load_store_op_none", "VK_KHR_load_store_op_none" }, + { "VK_KHR_maintenance4", "VK_VERSION_1_3" }, + { "VK_KHR_shader_subgroup_rotate", "VK_VERSION_1_4" }, + { "VK_EXT_depth_clamp_zero_one", "VK_KHR_depth_clamp_zero_one" }, + { "VK_QCOM_fragment_density_map_offset", "VK_EXT_fragment_density_map_offset" }, + { "VK_NV_copy_memory_indirect", "VK_KHR_copy_memory_indirect" }, + { "VK_NV_memory_decompression", "VK_EXT_memory_decompression" }, + { "VK_EXT_pipeline_protected_access", "VK_VERSION_1_4" }, + { "VK_KHR_maintenance5", "VK_VERSION_1_4" }, + { "VK_NV_ray_tracing_invocation_reorder", "VK_EXT_ray_tracing_invocation_reorder" }, + { "VK_KHR_vertex_attribute_divisor", "VK_VERSION_1_4" }, + { "VK_KHR_load_store_op_none", "VK_VERSION_1_4" }, + { "VK_KHR_shader_float_controls2", "VK_VERSION_1_4" }, + { "VK_KHR_index_type_uint8", "VK_VERSION_1_4" }, + { "VK_KHR_line_rasterization", "VK_VERSION_1_4" }, + { "VK_KHR_shader_expect_assume", "VK_VERSION_1_4" }, + { "VK_KHR_maintenance6", "VK_VERSION_1_4" }, + { "VK_EXT_vertex_attribute_robustness", "VK_KHR_maintenance9" } }; + return promotedExtensions; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string getExtensionDeprecatedBy( std::string const & extension ) + { + if ( extension == "VK_EXT_debug_report" ) + { + return "VK_EXT_debug_utils"; + } + if ( extension == "VK_NV_glsl_shader" ) + { + return ""; + } + if ( extension == "VK_NV_dedicated_allocation" ) + { + return "VK_KHR_dedicated_allocation"; + } + if ( extension == "VK_AMD_gpu_shader_half_float" ) + { + return "VK_KHR_shader_float16_int8"; + } + if ( extension == "VK_IMG_format_pvrtc" ) + { + return ""; + } + if ( extension == "VK_NV_external_memory_capabilities" ) + { + return "VK_KHR_external_memory_capabilities"; + } + if ( extension == "VK_NV_external_memory" ) + { + return "VK_KHR_external_memory"; + } +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + if ( extension == "VK_NV_external_memory_win32" ) + { + return "VK_KHR_external_memory_win32"; + } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + if ( extension == "VK_EXT_validation_flags" ) + { + return "VK_EXT_layer_settings"; + } + if ( extension == "VK_EXT_shader_subgroup_ballot" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_EXT_shader_subgroup_vote" ) + { + return "VK_VERSION_1_1"; + } +#if defined( VK_USE_PLATFORM_IOS_MVK ) + if ( extension == "VK_MVK_ios_surface" ) + { + return "VK_EXT_metal_surface"; + } +#endif /*VK_USE_PLATFORM_IOS_MVK*/ +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + if ( extension == "VK_MVK_macos_surface" ) + { + return "VK_EXT_metal_surface"; + } +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + if ( extension == "VK_AMD_gpu_shader_int16" ) + { + return "VK_KHR_shader_float16_int8"; + } + if ( extension == "VK_NV_ray_tracing" ) + { + return "VK_KHR_ray_tracing_pipeline"; + } + if ( extension == "VK_EXT_buffer_device_address" ) + { + return "VK_KHR_buffer_device_address"; + } + if ( extension == "VK_EXT_validation_features" ) + { + return "VK_EXT_layer_settings"; + } + if ( extension == "VK_EXT_descriptor_buffer" ) + { + return "VK_EXT_descriptor_heap"; + } +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( extension == "VK_NV_displacement_micromap" ) + { + return "VK_NV_cluster_acceleration_structure"; + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + return ""; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string getExtensionObsoletedBy( std::string const & extension ) + { + if ( extension == "VK_AMD_negative_viewport_height" ) + { + return "VK_KHR_maintenance1"; + } + return ""; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string getExtensionPromotedTo( std::string const & extension ) + { + if ( extension == "VK_KHR_sampler_mirror_clamp_to_edge" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_EXT_debug_marker" ) + { + return "VK_EXT_debug_utils"; + } + if ( extension == "VK_AMD_draw_indirect_count" ) + { + return "VK_KHR_draw_indirect_count"; + } + if ( extension == "VK_KHR_dynamic_rendering" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_KHR_multiview" ) + { + return "VK_VERSION_1_1"; + } +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + if ( extension == "VK_NV_win32_keyed_mutex" ) + { + return "VK_KHR_win32_keyed_mutex"; + } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + if ( extension == "VK_KHR_get_physical_device_properties2" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_device_group" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_shader_draw_parameters" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_EXT_texture_compression_astc_hdr" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_pipeline_robustness" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_maintenance1" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_device_group_creation" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_external_memory_capabilities" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_external_memory" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_external_semaphore_capabilities" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_external_semaphore" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_push_descriptor" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_shader_float16_int8" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_16bit_storage" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_descriptor_update_template" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_imageless_framebuffer" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_create_renderpass2" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_external_fence_capabilities" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_external_fence" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_maintenance2" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_variable_pointers" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_dedicated_allocation" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_EXT_sampler_filter_minmax" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_storage_buffer_storage_class" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_EXT_inline_uniform_block" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_KHR_relaxed_block_layout" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_get_memory_requirements2" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_image_format_list" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_sampler_ycbcr_conversion" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_bind_memory2" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_EXT_descriptor_indexing" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_EXT_shader_viewport_index_layer" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_maintenance3" ) + { + return "VK_VERSION_1_1"; + } + if ( extension == "VK_KHR_draw_indirect_count" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_QCOM_render_pass_shader_resolve" ) + { + return "VK_EXT_custom_resolve"; + } + if ( extension == "VK_EXT_global_priority" ) + { + return "VK_KHR_global_priority"; + } + if ( extension == "VK_KHR_shader_subgroup_extended_types" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_8bit_storage" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_shader_atomic_int64" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_EXT_calibrated_timestamps" ) + { + return "VK_KHR_calibrated_timestamps"; + } + if ( extension == "VK_KHR_global_priority" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_EXT_vertex_attribute_divisor" ) + { + return "VK_KHR_vertex_attribute_divisor"; + } + if ( extension == "VK_EXT_pipeline_creation_feedback" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_KHR_driver_properties" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_shader_float_controls" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_NV_shader_subgroup_partitioned" ) + { + return "VK_EXT_shader_subgroup_partitioned"; + } + if ( extension == "VK_KHR_depth_stencil_resolve" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_NV_compute_shader_derivatives" ) + { + return "VK_KHR_compute_shader_derivatives"; + } + if ( extension == "VK_NV_fragment_shader_barycentric" ) + { + return "VK_KHR_fragment_shader_barycentric"; + } + if ( extension == "VK_KHR_timeline_semaphore" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_vulkan_memory_model" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_shader_terminate_invocation" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_scalar_block_layout" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_EXT_subgroup_size_control" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_KHR_dynamic_rendering_local_read" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_spirv_1_4" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_separate_depth_stencil_layouts" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_EXT_tooling_info" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_separate_stencil_usage" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_uniform_buffer_standard_layout" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_KHR_buffer_device_address" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_EXT_line_rasterization" ) + { + return "VK_KHR_line_rasterization"; + } + if ( extension == "VK_EXT_host_query_reset" ) + { + return "VK_VERSION_1_2"; + } + if ( extension == "VK_EXT_index_type_uint8" ) + { + return "VK_KHR_index_type_uint8"; + } + if ( extension == "VK_EXT_extended_dynamic_state" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_host_image_copy" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_map_memory2" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_EXT_surface_maintenance1" ) + { + return "VK_KHR_surface_maintenance1"; + } + if ( extension == "VK_EXT_swapchain_maintenance1" ) + { + return "VK_KHR_swapchain_maintenance1"; + } + if ( extension == "VK_EXT_shader_demote_to_helper_invocation" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_KHR_shader_integer_dot_product" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_texel_buffer_alignment" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_robustness2" ) + { + return "VK_KHR_robustness2"; + } + if ( extension == "VK_KHR_shader_non_semantic_info" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_private_data" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_pipeline_creation_cache_control" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_KHR_synchronization2" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_KHR_zero_initialize_workgroup_memory" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_ycbcr_2plane_444_formats" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_image_robustness" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_KHR_copy_commands2" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_4444_formats" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_device_fault" ) + { + return "VK_KHR_device_fault"; + } + if ( extension == "VK_ARM_rasterization_order_attachment_access" ) + { + return "VK_EXT_rasterization_order_attachment_access"; + } + if ( extension == "VK_VALVE_mutable_descriptor_type" ) + { + return "VK_EXT_mutable_descriptor_type"; + } + if ( extension == "VK_KHR_format_feature_flags2" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_present_mode_fifo_latest_ready" ) + { + return "VK_KHR_present_mode_fifo_latest_ready"; + } + if ( extension == "VK_EXT_extended_dynamic_state2" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_EXT_global_priority_query" ) + { + return "VK_KHR_global_priority"; + } + if ( extension == "VK_EXT_load_store_op_none" ) + { + return "VK_KHR_load_store_op_none"; + } + if ( extension == "VK_KHR_maintenance4" ) + { + return "VK_VERSION_1_3"; + } + if ( extension == "VK_KHR_shader_subgroup_rotate" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_EXT_depth_clamp_zero_one" ) + { + return "VK_KHR_depth_clamp_zero_one"; + } + if ( extension == "VK_QCOM_fragment_density_map_offset" ) + { + return "VK_EXT_fragment_density_map_offset"; + } + if ( extension == "VK_NV_copy_memory_indirect" ) + { + return "VK_KHR_copy_memory_indirect"; + } + if ( extension == "VK_NV_memory_decompression" ) + { + return "VK_EXT_memory_decompression"; + } + if ( extension == "VK_EXT_pipeline_protected_access" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_maintenance5" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_NV_ray_tracing_invocation_reorder" ) + { + return "VK_EXT_ray_tracing_invocation_reorder"; + } + if ( extension == "VK_KHR_vertex_attribute_divisor" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_load_store_op_none" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_shader_float_controls2" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_index_type_uint8" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_line_rasterization" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_shader_expect_assume" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_KHR_maintenance6" ) + { + return "VK_VERSION_1_4"; + } + if ( extension == "VK_EXT_vertex_attribute_robustness" ) + { + return "VK_KHR_maintenance9"; + } + return ""; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isDeprecatedExtension( std::string const & extension ) + { + return ( extension == "VK_EXT_debug_report" ) || ( extension == "VK_NV_glsl_shader" ) || ( extension == "VK_NV_dedicated_allocation" ) || + ( extension == "VK_AMD_gpu_shader_half_float" ) || ( extension == "VK_IMG_format_pvrtc" ) || ( extension == "VK_NV_external_memory_capabilities" ) || + ( extension == "VK_NV_external_memory" ) +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + || ( extension == "VK_NV_external_memory_win32" ) +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + || ( extension == "VK_EXT_validation_flags" ) || ( extension == "VK_EXT_shader_subgroup_ballot" ) || ( extension == "VK_EXT_shader_subgroup_vote" ) +#if defined( VK_USE_PLATFORM_IOS_MVK ) + || ( extension == "VK_MVK_ios_surface" ) +#endif /*VK_USE_PLATFORM_IOS_MVK*/ +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + || ( extension == "VK_MVK_macos_surface" ) +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + || ( extension == "VK_AMD_gpu_shader_int16" ) || ( extension == "VK_NV_ray_tracing" ) || ( extension == "VK_EXT_buffer_device_address" ) || + ( extension == "VK_EXT_validation_features" ) || ( extension == "VK_EXT_descriptor_buffer" ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + || ( extension == "VK_NV_displacement_micromap" ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + || false; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isDeviceExtension( std::string const & extension ) + { + return ( extension == "VK_KHR_swapchain" ) || ( extension == "VK_KHR_display_swapchain" ) || ( extension == "VK_NV_glsl_shader" ) || + ( extension == "VK_EXT_depth_range_unrestricted" ) || ( extension == "VK_KHR_sampler_mirror_clamp_to_edge" ) || + ( extension == "VK_IMG_filter_cubic" ) || ( extension == "VK_AMD_rasterization_order" ) || ( extension == "VK_AMD_shader_trinary_minmax" ) || + ( extension == "VK_AMD_shader_explicit_vertex_parameter" ) || ( extension == "VK_EXT_debug_marker" ) || ( extension == "VK_KHR_video_queue" ) || + ( extension == "VK_KHR_video_decode_queue" ) || ( extension == "VK_AMD_gcn_shader" ) || ( extension == "VK_NV_dedicated_allocation" ) || + ( extension == "VK_EXT_transform_feedback" ) || ( extension == "VK_NVX_binary_import" ) || ( extension == "VK_NVX_image_view_handle" ) || + ( extension == "VK_AMD_draw_indirect_count" ) || ( extension == "VK_AMD_negative_viewport_height" ) || + ( extension == "VK_AMD_gpu_shader_half_float" ) || ( extension == "VK_AMD_shader_ballot" ) || ( extension == "VK_KHR_video_encode_h264" ) || + ( extension == "VK_KHR_video_encode_h265" ) || ( extension == "VK_KHR_video_decode_h264" ) || ( extension == "VK_AMD_texture_gather_bias_lod" ) || + ( extension == "VK_AMD_shader_info" ) || ( extension == "VK_KHR_dynamic_rendering" ) || ( extension == "VK_AMD_shader_image_load_store_lod" ) || + ( extension == "VK_NV_corner_sampled_image" ) || ( extension == "VK_KHR_multiview" ) || ( extension == "VK_IMG_format_pvrtc" ) || + ( extension == "VK_NV_external_memory" ) +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + || ( extension == "VK_NV_external_memory_win32" ) || ( extension == "VK_NV_win32_keyed_mutex" ) +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + || ( extension == "VK_KHR_device_group" ) || ( extension == "VK_KHR_shader_draw_parameters" ) || ( extension == "VK_EXT_shader_subgroup_ballot" ) || + ( extension == "VK_EXT_shader_subgroup_vote" ) || ( extension == "VK_EXT_texture_compression_astc_hdr" ) || + ( extension == "VK_EXT_astc_decode_mode" ) || ( extension == "VK_EXT_pipeline_robustness" ) || ( extension == "VK_KHR_maintenance1" ) || + ( extension == "VK_KHR_external_memory" ) +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + || ( extension == "VK_KHR_external_memory_win32" ) +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + || ( extension == "VK_KHR_external_memory_fd" ) +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + || ( extension == "VK_KHR_win32_keyed_mutex" ) +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + || ( extension == "VK_KHR_external_semaphore" ) +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + || ( extension == "VK_KHR_external_semaphore_win32" ) +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + || ( extension == "VK_KHR_external_semaphore_fd" ) || ( extension == "VK_KHR_push_descriptor" ) || ( extension == "VK_EXT_conditional_rendering" ) || + ( extension == "VK_KHR_shader_float16_int8" ) || ( extension == "VK_KHR_16bit_storage" ) || ( extension == "VK_KHR_incremental_present" ) || + ( extension == "VK_KHR_descriptor_update_template" ) || ( extension == "VK_NV_clip_space_w_scaling" ) || ( extension == "VK_EXT_display_control" ) || + ( extension == "VK_GOOGLE_display_timing" ) || ( extension == "VK_NV_sample_mask_override_coverage" ) || + ( extension == "VK_NV_geometry_shader_passthrough" ) || ( extension == "VK_NV_viewport_array2" ) || + ( extension == "VK_NVX_multiview_per_view_attributes" ) || ( extension == "VK_NV_viewport_swizzle" ) || + ( extension == "VK_EXT_discard_rectangles" ) || ( extension == "VK_EXT_conservative_rasterization" ) || + ( extension == "VK_EXT_depth_clip_enable" ) || ( extension == "VK_EXT_hdr_metadata" ) || ( extension == "VK_KHR_imageless_framebuffer" ) || + ( extension == "VK_KHR_create_renderpass2" ) || ( extension == "VK_IMG_relaxed_line_rasterization" ) || + ( extension == "VK_KHR_shared_presentable_image" ) || ( extension == "VK_KHR_external_fence" ) +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + || ( extension == "VK_KHR_external_fence_win32" ) +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + || ( extension == "VK_KHR_external_fence_fd" ) || ( extension == "VK_KHR_performance_query" ) || ( extension == "VK_KHR_maintenance2" ) || + ( extension == "VK_KHR_variable_pointers" ) || ( extension == "VK_EXT_external_memory_dma_buf" ) || ( extension == "VK_EXT_queue_family_foreign" ) || + ( extension == "VK_KHR_dedicated_allocation" ) +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + || ( extension == "VK_ANDROID_external_memory_android_hardware_buffer" ) +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + || ( extension == "VK_EXT_sampler_filter_minmax" ) || ( extension == "VK_KHR_storage_buffer_storage_class" ) || + ( extension == "VK_AMD_gpu_shader_int16" ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + || ( extension == "VK_AMDX_shader_enqueue" ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + || ( extension == "VK_EXT_descriptor_heap" ) || ( extension == "VK_AMD_mixed_attachment_samples" ) || ( extension == "VK_AMD_shader_fragment_mask" ) || + ( extension == "VK_EXT_inline_uniform_block" ) || ( extension == "VK_EXT_shader_stencil_export" ) || ( extension == "VK_KHR_shader_bfloat16" ) || + ( extension == "VK_EXT_sample_locations" ) || ( extension == "VK_KHR_relaxed_block_layout" ) || ( extension == "VK_KHR_get_memory_requirements2" ) || + ( extension == "VK_KHR_image_format_list" ) || ( extension == "VK_EXT_blend_operation_advanced" ) || + ( extension == "VK_NV_fragment_coverage_to_color" ) || ( extension == "VK_KHR_acceleration_structure" ) || + ( extension == "VK_KHR_ray_tracing_pipeline" ) || ( extension == "VK_KHR_ray_query" ) || ( extension == "VK_NV_framebuffer_mixed_samples" ) || + ( extension == "VK_NV_fill_rectangle" ) || ( extension == "VK_NV_shader_sm_builtins" ) || ( extension == "VK_EXT_post_depth_coverage" ) || + ( extension == "VK_KHR_sampler_ycbcr_conversion" ) || ( extension == "VK_KHR_bind_memory2" ) || + ( extension == "VK_EXT_image_drm_format_modifier" ) || ( extension == "VK_EXT_validation_cache" ) || ( extension == "VK_EXT_descriptor_indexing" ) || + ( extension == "VK_EXT_shader_viewport_index_layer" ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + || ( extension == "VK_KHR_portability_subset" ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + || ( extension == "VK_NV_shading_rate_image" ) || ( extension == "VK_NV_ray_tracing" ) || ( extension == "VK_NV_representative_fragment_test" ) || + ( extension == "VK_KHR_maintenance3" ) || ( extension == "VK_KHR_draw_indirect_count" ) || ( extension == "VK_EXT_filter_cubic" ) || + ( extension == "VK_QCOM_render_pass_shader_resolve" ) || ( extension == "VK_QCOM_cooperative_matrix_conversion" ) || + ( extension == "VK_EXT_global_priority" ) || ( extension == "VK_KHR_shader_subgroup_extended_types" ) || ( extension == "VK_KHR_8bit_storage" ) || + ( extension == "VK_EXT_external_memory_host" ) || ( extension == "VK_AMD_buffer_marker" ) || ( extension == "VK_KHR_shader_atomic_int64" ) || + ( extension == "VK_KHR_shader_clock" ) || ( extension == "VK_AMD_pipeline_compiler_control" ) || ( extension == "VK_EXT_calibrated_timestamps" ) || + ( extension == "VK_AMD_shader_core_properties" ) || ( extension == "VK_KHR_video_decode_h265" ) || ( extension == "VK_KHR_global_priority" ) || + ( extension == "VK_AMD_memory_overallocation_behavior" ) || ( extension == "VK_EXT_vertex_attribute_divisor" ) +#if defined( VK_USE_PLATFORM_GGP ) + || ( extension == "VK_GGP_frame_token" ) +#endif /*VK_USE_PLATFORM_GGP*/ + || ( extension == "VK_EXT_pipeline_creation_feedback" ) || ( extension == "VK_KHR_driver_properties" ) || + ( extension == "VK_KHR_shader_float_controls" ) || ( extension == "VK_NV_shader_subgroup_partitioned" ) || + ( extension == "VK_KHR_depth_stencil_resolve" ) || ( extension == "VK_KHR_swapchain_mutable_format" ) || + ( extension == "VK_NV_compute_shader_derivatives" ) || ( extension == "VK_NV_mesh_shader" ) || + ( extension == "VK_NV_fragment_shader_barycentric" ) || ( extension == "VK_NV_shader_image_footprint" ) || + ( extension == "VK_NV_scissor_exclusive" ) || ( extension == "VK_NV_device_diagnostic_checkpoints" ) || + ( extension == "VK_KHR_timeline_semaphore" ) || ( extension == "VK_EXT_present_timing" ) || ( extension == "VK_INTEL_shader_integer_functions2" ) || + ( extension == "VK_INTEL_performance_query" ) || ( extension == "VK_KHR_vulkan_memory_model" ) || ( extension == "VK_EXT_pci_bus_info" ) || + ( extension == "VK_AMD_display_native_hdr" ) || ( extension == "VK_KHR_shader_terminate_invocation" ) || + ( extension == "VK_EXT_fragment_density_map" ) || ( extension == "VK_EXT_scalar_block_layout" ) || + ( extension == "VK_GOOGLE_hlsl_functionality1" ) || ( extension == "VK_GOOGLE_decorate_string" ) || + ( extension == "VK_EXT_subgroup_size_control" ) || ( extension == "VK_KHR_fragment_shading_rate" ) || + ( extension == "VK_AMD_shader_core_properties2" ) || ( extension == "VK_AMD_device_coherent_memory" ) || + ( extension == "VK_KHR_shader_constant_data" ) || ( extension == "VK_KHR_dynamic_rendering_local_read" ) || ( extension == "VK_KHR_shader_abort" ) || + ( extension == "VK_EXT_shader_image_atomic_int64" ) || ( extension == "VK_KHR_shader_quad_control" ) || ( extension == "VK_KHR_spirv_1_4" ) || + ( extension == "VK_EXT_memory_budget" ) || ( extension == "VK_EXT_memory_priority" ) || + ( extension == "VK_NV_dedicated_allocation_image_aliasing" ) || ( extension == "VK_KHR_separate_depth_stencil_layouts" ) || + ( extension == "VK_EXT_buffer_device_address" ) || ( extension == "VK_EXT_tooling_info" ) || ( extension == "VK_EXT_separate_stencil_usage" ) || + ( extension == "VK_KHR_present_wait" ) || ( extension == "VK_NV_cooperative_matrix" ) || ( extension == "VK_NV_coverage_reduction_mode" ) || + ( extension == "VK_EXT_fragment_shader_interlock" ) || ( extension == "VK_EXT_ycbcr_image_arrays" ) || + ( extension == "VK_KHR_uniform_buffer_standard_layout" ) || ( extension == "VK_EXT_provoking_vertex" ) +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + || ( extension == "VK_EXT_full_screen_exclusive" ) +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + || ( extension == "VK_KHR_buffer_device_address" ) || ( extension == "VK_EXT_line_rasterization" ) || ( extension == "VK_EXT_shader_atomic_float" ) || + ( extension == "VK_EXT_host_query_reset" ) || ( extension == "VK_EXT_index_type_uint8" ) || ( extension == "VK_EXT_extended_dynamic_state" ) || + ( extension == "VK_KHR_deferred_host_operations" ) || ( extension == "VK_KHR_pipeline_executable_properties" ) || + ( extension == "VK_EXT_host_image_copy" ) || ( extension == "VK_KHR_map_memory2" ) || ( extension == "VK_EXT_map_memory_placed" ) || + ( extension == "VK_EXT_shader_atomic_float2" ) || ( extension == "VK_EXT_swapchain_maintenance1" ) || + ( extension == "VK_EXT_shader_demote_to_helper_invocation" ) || ( extension == "VK_NV_device_generated_commands" ) || + ( extension == "VK_NV_inherited_viewport_scissor" ) || ( extension == "VK_KHR_shader_integer_dot_product" ) || + ( extension == "VK_EXT_texel_buffer_alignment" ) || ( extension == "VK_QCOM_render_pass_transform" ) || + ( extension == "VK_EXT_depth_bias_control" ) || ( extension == "VK_EXT_device_memory_report" ) || ( extension == "VK_EXT_robustness2" ) || + ( extension == "VK_EXT_custom_border_color" ) || ( extension == "VK_EXT_texture_compression_astc_3d" ) || ( extension == "VK_GOOGLE_user_type" ) || + ( extension == "VK_KHR_pipeline_library" ) || ( extension == "VK_NV_present_barrier" ) || ( extension == "VK_KHR_shader_non_semantic_info" ) || + ( extension == "VK_KHR_present_id" ) || ( extension == "VK_EXT_private_data" ) || ( extension == "VK_EXT_pipeline_creation_cache_control" ) || + ( extension == "VK_KHR_video_encode_queue" ) || ( extension == "VK_NV_device_diagnostics_config" ) || + ( extension == "VK_QCOM_render_pass_store_ops" ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + || ( extension == "VK_NV_cuda_kernel_launch" ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + || ( extension == "VK_QCOM_tile_shading" ) || ( extension == "VK_NV_low_latency" ) +#if defined( VK_USE_PLATFORM_METAL_EXT ) + || ( extension == "VK_EXT_metal_objects" ) +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + || ( extension == "VK_KHR_synchronization2" ) || ( extension == "VK_EXT_descriptor_buffer" ) || ( extension == "VK_KHR_device_address_commands" ) || + ( extension == "VK_EXT_graphics_pipeline_library" ) || ( extension == "VK_AMD_shader_early_and_late_fragment_tests" ) || + ( extension == "VK_KHR_fragment_shader_barycentric" ) || ( extension == "VK_KHR_shader_subgroup_uniform_control_flow" ) || + ( extension == "VK_KHR_zero_initialize_workgroup_memory" ) || ( extension == "VK_NV_fragment_shading_rate_enums" ) || + ( extension == "VK_NV_ray_tracing_motion_blur" ) || ( extension == "VK_EXT_mesh_shader" ) || ( extension == "VK_EXT_ycbcr_2plane_444_formats" ) || + ( extension == "VK_EXT_fragment_density_map2" ) || ( extension == "VK_QCOM_rotated_copy_commands" ) || ( extension == "VK_EXT_image_robustness" ) || + ( extension == "VK_KHR_workgroup_memory_explicit_layout" ) || ( extension == "VK_KHR_copy_commands2" ) || + ( extension == "VK_EXT_image_compression_control" ) || ( extension == "VK_EXT_attachment_feedback_loop_layout" ) || + ( extension == "VK_EXT_4444_formats" ) || ( extension == "VK_EXT_device_fault" ) || + ( extension == "VK_ARM_rasterization_order_attachment_access" ) || ( extension == "VK_EXT_rgba10x6_formats" ) +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + || ( extension == "VK_NV_acquire_winrt_display" ) +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + || ( extension == "VK_VALVE_mutable_descriptor_type" ) || ( extension == "VK_EXT_vertex_input_dynamic_state" ) || + ( extension == "VK_EXT_physical_device_drm" ) || ( extension == "VK_EXT_device_address_binding_report" ) || + ( extension == "VK_EXT_depth_clip_control" ) || ( extension == "VK_EXT_primitive_topology_list_restart" ) || + ( extension == "VK_KHR_format_feature_flags2" ) || ( extension == "VK_EXT_present_mode_fifo_latest_ready" ) +#if defined( VK_USE_PLATFORM_FUCHSIA ) + || ( extension == "VK_FUCHSIA_external_memory" ) || ( extension == "VK_FUCHSIA_external_semaphore" ) || ( extension == "VK_FUCHSIA_buffer_collection" ) +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + || ( extension == "VK_HUAWEI_subpass_shading" ) || ( extension == "VK_HUAWEI_invocation_mask" ) || ( extension == "VK_NV_external_memory_rdma" ) || + ( extension == "VK_EXT_pipeline_properties" ) || ( extension == "VK_EXT_frame_boundary" ) || + ( extension == "VK_EXT_multisampled_render_to_single_sampled" ) || ( extension == "VK_EXT_extended_dynamic_state2" ) || + ( extension == "VK_EXT_color_write_enable" ) || ( extension == "VK_EXT_primitives_generated_query" ) || + ( extension == "VK_KHR_ray_tracing_maintenance1" ) || ( extension == "VK_KHR_shader_untyped_pointers" ) || + ( extension == "VK_EXT_global_priority_query" ) || ( extension == "VK_VALVE_video_encode_rgb_conversion" ) || + ( extension == "VK_EXT_image_view_min_lod" ) || ( extension == "VK_EXT_multi_draw" ) || ( extension == "VK_EXT_image_2d_view_of_3d" ) || + ( extension == "VK_EXT_shader_tile_image" ) || ( extension == "VK_EXT_opacity_micromap" ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + || ( extension == "VK_NV_displacement_micromap" ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + || ( extension == "VK_EXT_load_store_op_none" ) || ( extension == "VK_HUAWEI_cluster_culling_shader" ) || + ( extension == "VK_EXT_border_color_swizzle" ) || ( extension == "VK_EXT_pageable_device_local_memory" ) || ( extension == "VK_KHR_maintenance4" ) || + ( extension == "VK_ARM_shader_core_properties" ) || ( extension == "VK_KHR_shader_subgroup_rotate" ) || + ( extension == "VK_ARM_scheduling_controls" ) || ( extension == "VK_EXT_image_sliced_view_of_3d" ) || + ( extension == "VK_VALVE_descriptor_set_host_mapping" ) || ( extension == "VK_EXT_depth_clamp_zero_one" ) || + ( extension == "VK_EXT_non_seamless_cube_map" ) || ( extension == "VK_ARM_render_pass_striped" ) || + ( extension == "VK_QCOM_fragment_density_map_offset" ) || ( extension == "VK_NV_copy_memory_indirect" ) || + ( extension == "VK_NV_memory_decompression" ) || ( extension == "VK_NV_device_generated_commands_compute" ) || + ( extension == "VK_NV_ray_tracing_linear_swept_spheres" ) || ( extension == "VK_NV_linear_color_attachment" ) || + ( extension == "VK_KHR_shader_maximal_reconvergence" ) || ( extension == "VK_EXT_image_compression_control_swapchain" ) || + ( extension == "VK_QCOM_image_processing" ) || ( extension == "VK_EXT_nested_command_buffer" ) +#if defined( VK_USE_PLATFORM_OHOS ) + || ( extension == "VK_OHOS_external_memory" ) +#endif /*VK_USE_PLATFORM_OHOS*/ + || ( extension == "VK_EXT_external_memory_acquire_unmodified" ) || ( extension == "VK_EXT_extended_dynamic_state3" ) || + ( extension == "VK_EXT_subpass_merge_feedback" ) || ( extension == "VK_ARM_tensors" ) || ( extension == "VK_EXT_shader_module_identifier" ) || + ( extension == "VK_EXT_rasterization_order_attachment_access" ) || ( extension == "VK_NV_optical_flow" ) || + ( extension == "VK_EXT_legacy_dithering" ) || ( extension == "VK_EXT_pipeline_protected_access" ) +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + || ( extension == "VK_ANDROID_external_format_resolve" ) +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + || ( extension == "VK_KHR_maintenance5" ) || ( extension == "VK_AMD_anti_lag" ) +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + || ( extension == "VK_AMDX_dense_geometry_format" ) +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + || ( extension == "VK_KHR_present_id2" ) || ( extension == "VK_KHR_present_wait2" ) || ( extension == "VK_KHR_ray_tracing_position_fetch" ) || + ( extension == "VK_EXT_shader_object" ) || ( extension == "VK_KHR_pipeline_binary" ) || ( extension == "VK_QCOM_tile_properties" ) || + ( extension == "VK_SEC_amigo_profiling" ) || ( extension == "VK_KHR_swapchain_maintenance1" ) || + ( extension == "VK_QCOM_multiview_per_view_viewports" ) || ( extension == "VK_NV_ray_tracing_invocation_reorder" ) || + ( extension == "VK_NV_cooperative_vector" ) || ( extension == "VK_NV_extended_sparse_address_space" ) || + ( extension == "VK_EXT_mutable_descriptor_type" ) || ( extension == "VK_EXT_legacy_vertex_attributes" ) || + ( extension == "VK_ARM_shader_core_builtins" ) || ( extension == "VK_EXT_pipeline_library_group_handles" ) || + ( extension == "VK_EXT_dynamic_rendering_unused_attachments" ) || ( extension == "VK_KHR_internally_synchronized_queues" ) || + ( extension == "VK_NV_low_latency2" ) || ( extension == "VK_KHR_cooperative_matrix" ) || ( extension == "VK_ARM_data_graph" ) || + ( extension == "VK_QCOM_multiview_per_view_render_areas" ) || ( extension == "VK_KHR_compute_shader_derivatives" ) || + ( extension == "VK_KHR_video_decode_av1" ) || ( extension == "VK_KHR_video_encode_av1" ) || ( extension == "VK_KHR_video_decode_vp9" ) || + ( extension == "VK_KHR_video_maintenance1" ) || ( extension == "VK_NV_per_stage_descriptor_set" ) || ( extension == "VK_QCOM_image_processing2" ) || + ( extension == "VK_QCOM_filter_cubic_weights" ) || ( extension == "VK_QCOM_ycbcr_degamma" ) || ( extension == "VK_QCOM_filter_cubic_clamp" ) || + ( extension == "VK_EXT_attachment_feedback_loop_dynamic_state" ) || ( extension == "VK_KHR_vertex_attribute_divisor" ) || + ( extension == "VK_KHR_load_store_op_none" ) || ( extension == "VK_KHR_unified_image_layouts" ) || ( extension == "VK_KHR_shader_float_controls2" ) +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + || ( extension == "VK_QNX_external_memory_screen_buffer" ) +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + || ( extension == "VK_MSFT_layered_driver" ) || ( extension == "VK_KHR_index_type_uint8" ) || ( extension == "VK_KHR_line_rasterization" ) || + ( extension == "VK_KHR_calibrated_timestamps" ) || ( extension == "VK_KHR_shader_expect_assume" ) || ( extension == "VK_KHR_maintenance6" ) || + ( extension == "VK_NV_descriptor_pool_overallocation" ) || ( extension == "VK_QCOM_tile_memory_heap" ) || + ( extension == "VK_KHR_copy_memory_indirect" ) || ( extension == "VK_EXT_memory_decompression" ) || + ( extension == "VK_KHR_video_encode_intra_refresh" ) || ( extension == "VK_KHR_video_encode_quantization_map" ) || + ( extension == "VK_NV_raw_access_chains" ) || ( extension == "VK_NV_external_compute_queue" ) || + ( extension == "VK_KHR_shader_relaxed_extended_instruction" ) || ( extension == "VK_NV_command_buffer_inheritance" ) || + ( extension == "VK_KHR_maintenance7" ) || ( extension == "VK_NV_shader_atomic_float16_vector" ) || + ( extension == "VK_EXT_shader_replicated_composites" ) || ( extension == "VK_EXT_shader_float8" ) || + ( extension == "VK_NV_ray_tracing_validation" ) || ( extension == "VK_NV_cluster_acceleration_structure" ) || + ( extension == "VK_NV_partitioned_acceleration_structure" ) || ( extension == "VK_EXT_device_generated_commands" ) || + ( extension == "VK_KHR_device_fault" ) || ( extension == "VK_KHR_maintenance8" ) || ( extension == "VK_MESA_image_alignment_control" ) || + ( extension == "VK_KHR_shader_fma" ) || ( extension == "VK_NV_push_constant_bank" ) || ( extension == "VK_EXT_ray_tracing_invocation_reorder" ) || + ( extension == "VK_EXT_depth_clamp_control" ) || ( extension == "VK_KHR_maintenance9" ) || ( extension == "VK_KHR_video_maintenance2" ) || + ( extension == "VK_HUAWEI_hdr_vivid" ) || ( extension == "VK_NV_cooperative_matrix2" ) || ( extension == "VK_ARM_pipeline_opacity_micromap" ) +#if defined( VK_USE_PLATFORM_METAL_EXT ) + || ( extension == "VK_EXT_external_memory_metal" ) +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + || ( extension == "VK_KHR_depth_clamp_zero_one" ) || ( extension == "VK_ARM_performance_counters_by_region" ) || + ( extension == "VK_ARM_shader_instrumentation" ) || ( extension == "VK_EXT_vertex_attribute_robustness" ) || ( extension == "VK_ARM_format_pack" ) || + ( extension == "VK_VALVE_fragment_density_map_layered" ) || ( extension == "VK_KHR_robustness2" ) || ( extension == "VK_NV_present_metering" ) || + ( extension == "VK_EXT_fragment_density_map_offset" ) || ( extension == "VK_EXT_zero_initialize_device_memory" ) || + ( extension == "VK_KHR_present_mode_fifo_latest_ready" ) || ( extension == "VK_EXT_shader_64bit_indexing" ) || + ( extension == "VK_EXT_custom_resolve" ) || ( extension == "VK_QCOM_data_graph_model" ) || ( extension == "VK_KHR_maintenance10" ) || + ( extension == "VK_EXT_shader_long_vector" ) || ( extension == "VK_SEC_pipeline_cache_incremental_mode" ) || + ( extension == "VK_EXT_shader_uniform_buffer_unsized_array" ) || ( extension == "VK_NV_compute_occupancy_priority" ) || + ( extension == "VK_EXT_shader_subgroup_partitioned" ) || ( extension == "VK_VALVE_shader_mixed_float_dot_product" ); + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isInstanceExtension( std::string const & extension ) + { + return ( extension == "VK_KHR_surface" ) || ( extension == "VK_KHR_display" ) +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + || ( extension == "VK_KHR_xlib_surface" ) +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ +#if defined( VK_USE_PLATFORM_XCB_KHR ) + || ( extension == "VK_KHR_xcb_surface" ) +#endif /*VK_USE_PLATFORM_XCB_KHR*/ +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + || ( extension == "VK_KHR_wayland_surface" ) +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + || ( extension == "VK_KHR_android_surface" ) +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + || ( extension == "VK_KHR_win32_surface" ) +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + || ( extension == "VK_EXT_debug_report" ) +#if defined( VK_USE_PLATFORM_GGP ) + || ( extension == "VK_GGP_stream_descriptor_surface" ) +#endif /*VK_USE_PLATFORM_GGP*/ + || ( extension == "VK_NV_external_memory_capabilities" ) || ( extension == "VK_KHR_get_physical_device_properties2" ) || + ( extension == "VK_EXT_validation_flags" ) +#if defined( VK_USE_PLATFORM_VI_NN ) + || ( extension == "VK_NN_vi_surface" ) +#endif /*VK_USE_PLATFORM_VI_NN*/ + || ( extension == "VK_KHR_device_group_creation" ) || ( extension == "VK_KHR_external_memory_capabilities" ) || + ( extension == "VK_KHR_external_semaphore_capabilities" ) || ( extension == "VK_EXT_direct_mode_display" ) +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + || ( extension == "VK_EXT_acquire_xlib_display" ) +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + || ( extension == "VK_EXT_display_surface_counter" ) || ( extension == "VK_EXT_swapchain_colorspace" ) || + ( extension == "VK_KHR_external_fence_capabilities" ) || ( extension == "VK_KHR_get_surface_capabilities2" ) || + ( extension == "VK_KHR_get_display_properties2" ) +#if defined( VK_USE_PLATFORM_IOS_MVK ) + || ( extension == "VK_MVK_ios_surface" ) +#endif /*VK_USE_PLATFORM_IOS_MVK*/ +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + || ( extension == "VK_MVK_macos_surface" ) +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + || ( extension == "VK_EXT_debug_utils" ) +#if defined( VK_USE_PLATFORM_FUCHSIA ) + || ( extension == "VK_FUCHSIA_imagepipe_surface" ) +#endif /*VK_USE_PLATFORM_FUCHSIA*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + || ( extension == "VK_EXT_metal_surface" ) +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + || ( extension == "VK_KHR_surface_protected_capabilities" ) || ( extension == "VK_EXT_validation_features" ) || + ( extension == "VK_EXT_headless_surface" ) || ( extension == "VK_EXT_surface_maintenance1" ) || ( extension == "VK_EXT_acquire_drm_display" ) +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + || ( extension == "VK_EXT_directfb_surface" ) +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + || ( extension == "VK_QNX_screen_surface" ) +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + || ( extension == "VK_KHR_portability_enumeration" ) || ( extension == "VK_GOOGLE_surfaceless_query" ) || + ( extension == "VK_LUNARG_direct_driver_loading" ) || ( extension == "VK_KHR_surface_maintenance1" ) || ( extension == "VK_EXT_layer_settings" ) || + ( extension == "VK_NV_display_stereo" ) +#if defined( VK_USE_PLATFORM_OHOS ) + || ( extension == "VK_OHOS_surface" ) +#endif /*VK_USE_PLATFORM_OHOS*/ +#if defined( VK_USE_PLATFORM_UBM_SEC ) + || ( extension == "VK_SEC_ubm_surface" ) +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + ; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isObsoletedExtension( std::string const & extension ) + { + return ( extension == "VK_AMD_negative_viewport_height" ); + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 bool isPromotedExtension( std::string const & extension ) + { + return ( extension == "VK_KHR_sampler_mirror_clamp_to_edge" ) || ( extension == "VK_EXT_debug_marker" ) || ( extension == "VK_AMD_draw_indirect_count" ) || + ( extension == "VK_KHR_dynamic_rendering" ) || ( extension == "VK_KHR_multiview" ) +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + || ( extension == "VK_NV_win32_keyed_mutex" ) +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + || ( extension == "VK_KHR_get_physical_device_properties2" ) || ( extension == "VK_KHR_device_group" ) || + ( extension == "VK_KHR_shader_draw_parameters" ) || ( extension == "VK_EXT_texture_compression_astc_hdr" ) || + ( extension == "VK_EXT_pipeline_robustness" ) || ( extension == "VK_KHR_maintenance1" ) || ( extension == "VK_KHR_device_group_creation" ) || + ( extension == "VK_KHR_external_memory_capabilities" ) || ( extension == "VK_KHR_external_memory" ) || + ( extension == "VK_KHR_external_semaphore_capabilities" ) || ( extension == "VK_KHR_external_semaphore" ) || + ( extension == "VK_KHR_push_descriptor" ) || ( extension == "VK_KHR_shader_float16_int8" ) || ( extension == "VK_KHR_16bit_storage" ) || + ( extension == "VK_KHR_descriptor_update_template" ) || ( extension == "VK_KHR_imageless_framebuffer" ) || + ( extension == "VK_KHR_create_renderpass2" ) || ( extension == "VK_KHR_external_fence_capabilities" ) || ( extension == "VK_KHR_external_fence" ) || + ( extension == "VK_KHR_maintenance2" ) || ( extension == "VK_KHR_variable_pointers" ) || ( extension == "VK_KHR_dedicated_allocation" ) || + ( extension == "VK_EXT_sampler_filter_minmax" ) || ( extension == "VK_KHR_storage_buffer_storage_class" ) || + ( extension == "VK_EXT_inline_uniform_block" ) || ( extension == "VK_KHR_relaxed_block_layout" ) || + ( extension == "VK_KHR_get_memory_requirements2" ) || ( extension == "VK_KHR_image_format_list" ) || + ( extension == "VK_KHR_sampler_ycbcr_conversion" ) || ( extension == "VK_KHR_bind_memory2" ) || ( extension == "VK_EXT_descriptor_indexing" ) || + ( extension == "VK_EXT_shader_viewport_index_layer" ) || ( extension == "VK_KHR_maintenance3" ) || ( extension == "VK_KHR_draw_indirect_count" ) || + ( extension == "VK_QCOM_render_pass_shader_resolve" ) || ( extension == "VK_EXT_global_priority" ) || + ( extension == "VK_KHR_shader_subgroup_extended_types" ) || ( extension == "VK_KHR_8bit_storage" ) || + ( extension == "VK_KHR_shader_atomic_int64" ) || ( extension == "VK_EXT_calibrated_timestamps" ) || ( extension == "VK_KHR_global_priority" ) || + ( extension == "VK_EXT_vertex_attribute_divisor" ) || ( extension == "VK_EXT_pipeline_creation_feedback" ) || + ( extension == "VK_KHR_driver_properties" ) || ( extension == "VK_KHR_shader_float_controls" ) || + ( extension == "VK_NV_shader_subgroup_partitioned" ) || ( extension == "VK_KHR_depth_stencil_resolve" ) || + ( extension == "VK_NV_compute_shader_derivatives" ) || ( extension == "VK_NV_fragment_shader_barycentric" ) || + ( extension == "VK_KHR_timeline_semaphore" ) || ( extension == "VK_KHR_vulkan_memory_model" ) || + ( extension == "VK_KHR_shader_terminate_invocation" ) || ( extension == "VK_EXT_scalar_block_layout" ) || + ( extension == "VK_EXT_subgroup_size_control" ) || ( extension == "VK_KHR_dynamic_rendering_local_read" ) || ( extension == "VK_KHR_spirv_1_4" ) || + ( extension == "VK_KHR_separate_depth_stencil_layouts" ) || ( extension == "VK_EXT_tooling_info" ) || + ( extension == "VK_EXT_separate_stencil_usage" ) || ( extension == "VK_KHR_uniform_buffer_standard_layout" ) || + ( extension == "VK_KHR_buffer_device_address" ) || ( extension == "VK_EXT_line_rasterization" ) || ( extension == "VK_EXT_host_query_reset" ) || + ( extension == "VK_EXT_index_type_uint8" ) || ( extension == "VK_EXT_extended_dynamic_state" ) || ( extension == "VK_EXT_host_image_copy" ) || + ( extension == "VK_KHR_map_memory2" ) || ( extension == "VK_EXT_surface_maintenance1" ) || ( extension == "VK_EXT_swapchain_maintenance1" ) || + ( extension == "VK_EXT_shader_demote_to_helper_invocation" ) || ( extension == "VK_KHR_shader_integer_dot_product" ) || + ( extension == "VK_EXT_texel_buffer_alignment" ) || ( extension == "VK_EXT_robustness2" ) || ( extension == "VK_KHR_shader_non_semantic_info" ) || + ( extension == "VK_EXT_private_data" ) || ( extension == "VK_EXT_pipeline_creation_cache_control" ) || ( extension == "VK_KHR_synchronization2" ) || + ( extension == "VK_KHR_zero_initialize_workgroup_memory" ) || ( extension == "VK_EXT_ycbcr_2plane_444_formats" ) || + ( extension == "VK_EXT_image_robustness" ) || ( extension == "VK_KHR_copy_commands2" ) || ( extension == "VK_EXT_4444_formats" ) || + ( extension == "VK_EXT_device_fault" ) || ( extension == "VK_ARM_rasterization_order_attachment_access" ) || + ( extension == "VK_VALVE_mutable_descriptor_type" ) || ( extension == "VK_KHR_format_feature_flags2" ) || + ( extension == "VK_EXT_present_mode_fifo_latest_ready" ) || ( extension == "VK_EXT_extended_dynamic_state2" ) || + ( extension == "VK_EXT_global_priority_query" ) || ( extension == "VK_EXT_load_store_op_none" ) || ( extension == "VK_KHR_maintenance4" ) || + ( extension == "VK_KHR_shader_subgroup_rotate" ) || ( extension == "VK_EXT_depth_clamp_zero_one" ) || + ( extension == "VK_QCOM_fragment_density_map_offset" ) || ( extension == "VK_NV_copy_memory_indirect" ) || + ( extension == "VK_NV_memory_decompression" ) || ( extension == "VK_EXT_pipeline_protected_access" ) || ( extension == "VK_KHR_maintenance5" ) || + ( extension == "VK_NV_ray_tracing_invocation_reorder" ) || ( extension == "VK_KHR_vertex_attribute_divisor" ) || + ( extension == "VK_KHR_load_store_op_none" ) || ( extension == "VK_KHR_shader_float_controls2" ) || ( extension == "VK_KHR_index_type_uint8" ) || + ( extension == "VK_KHR_line_rasterization" ) || ( extension == "VK_KHR_shader_expect_assume" ) || ( extension == "VK_KHR_maintenance6" ) || + ( extension == "VK_EXT_vertex_attribute_robustness" ); + } +} // namespace VULKAN_HPP_NAMESPACE + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_format_traits.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_format_traits.hpp new file mode 100644 index 000000000..b6a704ed1 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_format_traits.hpp @@ -0,0 +1,10655 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_FORMAT_TRAITS_HPP +#define VULKAN_FORMAT_TRAITS_HPP + +#if defined( VULKAN_HPP_CXX_MODULE ) +# define VULKAN_HPP_EXPORT export +#else +# include +#endif + +namespace VULKAN_HPP_NAMESPACE +{ + //===================== + //=== Format Traits === + //===================== + + //=== Function Declarations === + + // The three-dimensional extent of a texel block. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 std::array blockExtent( Format format ); + + // The texel block size in bytes. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 uint8_t blockSize( Format format ); + + // The class of the format (can't be just named "class"!) + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 char const * compatibilityClass( Format format ); + + // The number of bits in this component, if not compressed, otherwise 0. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 uint8_t componentBits( Format format, uint8_t component ); + + // The number of components of this format. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 uint8_t componentCount( Format format ); + + // The name of the component + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 char const * componentName( Format format, uint8_t component ); + + // The numeric format of the component + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 char const * componentNumericFormat( Format format, uint8_t component ); + + // The plane this component lies in. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 uint8_t componentPlaneIndex( Format format, uint8_t component ); + + // True, if the components of this format are compressed, otherwise false. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 bool componentsAreCompressed( Format format ); + + // A textual description of the compression scheme, or an empty string if it is not compressed + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 char const * compressionScheme( Format format ); + + // Get all formats + VULKAN_HPP_EXPORT std::vector const & getAllFormats(); + + // Get all color with a color component + VULKAN_HPP_EXPORT std::vector const & getColorFormats(); + + // Get all formats with a depth component + VULKAN_HPP_EXPORT std::vector const & getDepthFormats(); + + // Get all formats with a depth and a stencil component + VULKAN_HPP_EXPORT std::vector const & getDepthStencilFormats(); + + // Get all formats with a stencil component + VULKAN_HPP_EXPORT std::vector const & getStencilFormats(); + + // True, if this format has an alpha component + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 bool hasAlphaComponent( Format format ); + + // True, if this format has a blue component + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 bool hasBlueComponent( Format format ); + + // True, if this format has a depth component + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 bool hasDepthComponent( Format format ); + + // True, if this format has a green component + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 bool hasGreenComponent( Format format ); + + // True, if this format has a red component + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 bool hasRedComponent( Format format ); + + // True, if this format has a stencil component + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 bool hasStencilComponent( Format format ); + + // True, if the format is a color + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 bool isColor( Format format ); + + // True, if this format is a compressed one. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 bool isCompressed( Format format ); + + // The number of bits into which the format is packed. A single image element in this format can be stored in the same space as a scalar type of this bit + // width. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 uint8_t packed( Format format ); + + // The single-plane format that this plane is compatible with. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 Format planeCompatibleFormat( Format format, uint8_t plane ); + + // The number of image planes of this format. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 uint8_t planeCount( Format format ); + + // The relative height of this plane. A value of k means that this plane is 1/k the height of the overall format. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 uint8_t planeHeightDivisor( Format format, uint8_t plane ); + + // The relative width of this plane. A value of k means that this plane is 1/k the width of the overall format. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 uint8_t planeWidthDivisor( Format format, uint8_t plane ); + + // The number of texels in a texel block. + VULKAN_HPP_EXPORT VULKAN_HPP_CONSTEXPR_14 uint8_t texelsPerBlock( Format format ); + + //=== Function Definitions === + + // The three-dimensional extent of a texel block. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 std::array blockExtent( Format format ) + { + switch ( format ) + { + case Format::eBc1RgbUnormBlock : return { { 4, 4, 1 } }; + case Format::eBc1RgbSrgbBlock : return { { 4, 4, 1 } }; + case Format::eBc1RgbaUnormBlock : return { { 4, 4, 1 } }; + case Format::eBc1RgbaSrgbBlock : return { { 4, 4, 1 } }; + case Format::eBc2UnormBlock : return { { 4, 4, 1 } }; + case Format::eBc2SrgbBlock : return { { 4, 4, 1 } }; + case Format::eBc3UnormBlock : return { { 4, 4, 1 } }; + case Format::eBc3SrgbBlock : return { { 4, 4, 1 } }; + case Format::eBc4UnormBlock : return { { 4, 4, 1 } }; + case Format::eBc4SnormBlock : return { { 4, 4, 1 } }; + case Format::eBc5UnormBlock : return { { 4, 4, 1 } }; + case Format::eBc5SnormBlock : return { { 4, 4, 1 } }; + case Format::eBc6HUfloatBlock : return { { 4, 4, 1 } }; + case Format::eBc6HSfloatBlock : return { { 4, 4, 1 } }; + case Format::eBc7UnormBlock : return { { 4, 4, 1 } }; + case Format::eBc7SrgbBlock : return { { 4, 4, 1 } }; + case Format::eEtc2R8G8B8UnormBlock : return { { 4, 4, 1 } }; + case Format::eEtc2R8G8B8SrgbBlock : return { { 4, 4, 1 } }; + case Format::eEtc2R8G8B8A1UnormBlock : return { { 4, 4, 1 } }; + case Format::eEtc2R8G8B8A1SrgbBlock : return { { 4, 4, 1 } }; + case Format::eEtc2R8G8B8A8UnormBlock : return { { 4, 4, 1 } }; + case Format::eEtc2R8G8B8A8SrgbBlock : return { { 4, 4, 1 } }; + case Format::eEacR11UnormBlock : return { { 4, 4, 1 } }; + case Format::eEacR11SnormBlock : return { { 4, 4, 1 } }; + case Format::eEacR11G11UnormBlock : return { { 4, 4, 1 } }; + case Format::eEacR11G11SnormBlock : return { { 4, 4, 1 } }; + case Format::eAstc4x4UnormBlock : return { { 4, 4, 1 } }; + case Format::eAstc4x4SrgbBlock : return { { 4, 4, 1 } }; + case Format::eAstc5x4UnormBlock : return { { 5, 4, 1 } }; + case Format::eAstc5x4SrgbBlock : return { { 5, 4, 1 } }; + case Format::eAstc5x5UnormBlock : return { { 5, 5, 1 } }; + case Format::eAstc5x5SrgbBlock : return { { 5, 5, 1 } }; + case Format::eAstc6x5UnormBlock : return { { 6, 5, 1 } }; + case Format::eAstc6x5SrgbBlock : return { { 6, 5, 1 } }; + case Format::eAstc6x6UnormBlock : return { { 6, 6, 1 } }; + case Format::eAstc6x6SrgbBlock : return { { 6, 6, 1 } }; + case Format::eAstc8x5UnormBlock : return { { 8, 5, 1 } }; + case Format::eAstc8x5SrgbBlock : return { { 8, 5, 1 } }; + case Format::eAstc8x6UnormBlock : return { { 8, 6, 1 } }; + case Format::eAstc8x6SrgbBlock : return { { 8, 6, 1 } }; + case Format::eAstc8x8UnormBlock : return { { 8, 8, 1 } }; + case Format::eAstc8x8SrgbBlock : return { { 8, 8, 1 } }; + case Format::eAstc10x5UnormBlock : return { { 10, 5, 1 } }; + case Format::eAstc10x5SrgbBlock : return { { 10, 5, 1 } }; + case Format::eAstc10x6UnormBlock : return { { 10, 6, 1 } }; + case Format::eAstc10x6SrgbBlock : return { { 10, 6, 1 } }; + case Format::eAstc10x8UnormBlock : return { { 10, 8, 1 } }; + case Format::eAstc10x8SrgbBlock : return { { 10, 8, 1 } }; + case Format::eAstc10x10UnormBlock : return { { 10, 10, 1 } }; + case Format::eAstc10x10SrgbBlock : return { { 10, 10, 1 } }; + case Format::eAstc12x10UnormBlock : return { { 12, 10, 1 } }; + case Format::eAstc12x10SrgbBlock : return { { 12, 10, 1 } }; + case Format::eAstc12x12UnormBlock : return { { 12, 12, 1 } }; + case Format::eAstc12x12SrgbBlock : return { { 12, 12, 1 } }; + case Format::eG8B8G8R8422Unorm : return { { 2, 1, 1 } }; + case Format::eB8G8R8G8422Unorm : return { { 2, 1, 1 } }; + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: return { { 2, 1, 1 } }; + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: return { { 2, 1, 1 } }; + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: return { { 2, 1, 1 } }; + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: return { { 2, 1, 1 } }; + case Format::eG16B16G16R16422Unorm : return { { 2, 1, 1 } }; + case Format::eB16G16R16G16422Unorm : return { { 2, 1, 1 } }; + case Format::eAstc4x4SfloatBlock : return { { 4, 4, 1 } }; + case Format::eAstc5x4SfloatBlock : return { { 5, 4, 1 } }; + case Format::eAstc5x5SfloatBlock : return { { 5, 5, 1 } }; + case Format::eAstc6x5SfloatBlock : return { { 6, 5, 1 } }; + case Format::eAstc6x6SfloatBlock : return { { 6, 6, 1 } }; + case Format::eAstc8x5SfloatBlock : return { { 8, 5, 1 } }; + case Format::eAstc8x6SfloatBlock : return { { 8, 6, 1 } }; + case Format::eAstc8x8SfloatBlock : return { { 8, 8, 1 } }; + case Format::eAstc10x5SfloatBlock : return { { 10, 5, 1 } }; + case Format::eAstc10x6SfloatBlock : return { { 10, 6, 1 } }; + case Format::eAstc10x8SfloatBlock : return { { 10, 8, 1 } }; + case Format::eAstc10x10SfloatBlock : return { { 10, 10, 1 } }; + case Format::eAstc12x10SfloatBlock : return { { 12, 10, 1 } }; + case Format::eAstc12x12SfloatBlock : return { { 12, 12, 1 } }; + case Format::ePvrtc12BppUnormBlockIMG : return { { 8, 4, 1 } }; + case Format::ePvrtc14BppUnormBlockIMG : return { { 4, 4, 1 } }; + case Format::ePvrtc22BppUnormBlockIMG : return { { 8, 4, 1 } }; + case Format::ePvrtc24BppUnormBlockIMG : return { { 4, 4, 1 } }; + case Format::ePvrtc12BppSrgbBlockIMG : return { { 8, 4, 1 } }; + case Format::ePvrtc14BppSrgbBlockIMG : return { { 4, 4, 1 } }; + case Format::ePvrtc22BppSrgbBlockIMG : return { { 8, 4, 1 } }; + case Format::ePvrtc24BppSrgbBlockIMG : return { { 4, 4, 1 } }; + case Format::eAstc3x3x3UnormBlockEXT : return { { 3, 3, 3 } }; + case Format::eAstc3x3x3SrgbBlockEXT : return { { 3, 3, 3 } }; + case Format::eAstc3x3x3SfloatBlockEXT : return { { 3, 3, 3 } }; + case Format::eAstc4x3x3UnormBlockEXT : return { { 4, 3, 3 } }; + case Format::eAstc4x3x3SrgbBlockEXT : return { { 4, 3, 3 } }; + case Format::eAstc4x3x3SfloatBlockEXT : return { { 4, 3, 3 } }; + case Format::eAstc4x4x3UnormBlockEXT : return { { 4, 4, 3 } }; + case Format::eAstc4x4x3SrgbBlockEXT : return { { 4, 4, 3 } }; + case Format::eAstc4x4x3SfloatBlockEXT : return { { 4, 4, 3 } }; + case Format::eAstc4x4x4UnormBlockEXT : return { { 4, 4, 4 } }; + case Format::eAstc4x4x4SrgbBlockEXT : return { { 4, 4, 4 } }; + case Format::eAstc4x4x4SfloatBlockEXT : return { { 4, 4, 4 } }; + case Format::eAstc5x4x4UnormBlockEXT : return { { 5, 4, 4 } }; + case Format::eAstc5x4x4SrgbBlockEXT : return { { 5, 4, 4 } }; + case Format::eAstc5x4x4SfloatBlockEXT : return { { 5, 4, 4 } }; + case Format::eAstc5x5x4UnormBlockEXT : return { { 5, 5, 4 } }; + case Format::eAstc5x5x4SrgbBlockEXT : return { { 5, 5, 4 } }; + case Format::eAstc5x5x4SfloatBlockEXT : return { { 5, 5, 4 } }; + case Format::eAstc5x5x5UnormBlockEXT : return { { 5, 5, 5 } }; + case Format::eAstc5x5x5SrgbBlockEXT : return { { 5, 5, 5 } }; + case Format::eAstc5x5x5SfloatBlockEXT : return { { 5, 5, 5 } }; + case Format::eAstc6x5x5UnormBlockEXT : return { { 6, 5, 5 } }; + case Format::eAstc6x5x5SrgbBlockEXT : return { { 6, 5, 5 } }; + case Format::eAstc6x5x5SfloatBlockEXT : return { { 6, 5, 5 } }; + case Format::eAstc6x6x5UnormBlockEXT : return { { 6, 6, 5 } }; + case Format::eAstc6x6x5SrgbBlockEXT : return { { 6, 6, 5 } }; + case Format::eAstc6x6x5SfloatBlockEXT : return { { 6, 6, 5 } }; + case Format::eAstc6x6x6UnormBlockEXT : return { { 6, 6, 6 } }; + case Format::eAstc6x6x6SrgbBlockEXT : return { { 6, 6, 6 } }; + case Format::eAstc6x6x6SfloatBlockEXT : return { { 6, 6, 6 } }; + + default: return { { 1, 1, 1 } }; + } + } + + // The texel block size in bytes. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t blockSize( Format format ) + { + switch ( format ) + { + case Format::eR4G4UnormPack8 : return 1; + case Format::eR4G4B4A4UnormPack16 : return 2; + case Format::eB4G4R4A4UnormPack16 : return 2; + case Format::eR5G6B5UnormPack16 : return 2; + case Format::eB5G6R5UnormPack16 : return 2; + case Format::eR5G5B5A1UnormPack16 : return 2; + case Format::eB5G5R5A1UnormPack16 : return 2; + case Format::eA1R5G5B5UnormPack16 : return 2; + case Format::eR8Unorm : return 1; + case Format::eR8Snorm : return 1; + case Format::eR8Uscaled : return 1; + case Format::eR8Sscaled : return 1; + case Format::eR8Uint : return 1; + case Format::eR8Sint : return 1; + case Format::eR8Srgb : return 1; + case Format::eR8G8Unorm : return 2; + case Format::eR8G8Snorm : return 2; + case Format::eR8G8Uscaled : return 2; + case Format::eR8G8Sscaled : return 2; + case Format::eR8G8Uint : return 2; + case Format::eR8G8Sint : return 2; + case Format::eR8G8Srgb : return 2; + case Format::eR8G8B8Unorm : return 3; + case Format::eR8G8B8Snorm : return 3; + case Format::eR8G8B8Uscaled : return 3; + case Format::eR8G8B8Sscaled : return 3; + case Format::eR8G8B8Uint : return 3; + case Format::eR8G8B8Sint : return 3; + case Format::eR8G8B8Srgb : return 3; + case Format::eB8G8R8Unorm : return 3; + case Format::eB8G8R8Snorm : return 3; + case Format::eB8G8R8Uscaled : return 3; + case Format::eB8G8R8Sscaled : return 3; + case Format::eB8G8R8Uint : return 3; + case Format::eB8G8R8Sint : return 3; + case Format::eB8G8R8Srgb : return 3; + case Format::eR8G8B8A8Unorm : return 4; + case Format::eR8G8B8A8Snorm : return 4; + case Format::eR8G8B8A8Uscaled : return 4; + case Format::eR8G8B8A8Sscaled : return 4; + case Format::eR8G8B8A8Uint : return 4; + case Format::eR8G8B8A8Sint : return 4; + case Format::eR8G8B8A8Srgb : return 4; + case Format::eB8G8R8A8Unorm : return 4; + case Format::eB8G8R8A8Snorm : return 4; + case Format::eB8G8R8A8Uscaled : return 4; + case Format::eB8G8R8A8Sscaled : return 4; + case Format::eB8G8R8A8Uint : return 4; + case Format::eB8G8R8A8Sint : return 4; + case Format::eB8G8R8A8Srgb : return 4; + case Format::eA8B8G8R8UnormPack32 : return 4; + case Format::eA8B8G8R8SnormPack32 : return 4; + case Format::eA8B8G8R8UscaledPack32 : return 4; + case Format::eA8B8G8R8SscaledPack32 : return 4; + case Format::eA8B8G8R8UintPack32 : return 4; + case Format::eA8B8G8R8SintPack32 : return 4; + case Format::eA8B8G8R8SrgbPack32 : return 4; + case Format::eA2R10G10B10UnormPack32 : return 4; + case Format::eA2R10G10B10SnormPack32 : return 4; + case Format::eA2R10G10B10UscaledPack32 : return 4; + case Format::eA2R10G10B10SscaledPack32 : return 4; + case Format::eA2R10G10B10UintPack32 : return 4; + case Format::eA2R10G10B10SintPack32 : return 4; + case Format::eA2B10G10R10UnormPack32 : return 4; + case Format::eA2B10G10R10SnormPack32 : return 4; + case Format::eA2B10G10R10UscaledPack32 : return 4; + case Format::eA2B10G10R10SscaledPack32 : return 4; + case Format::eA2B10G10R10UintPack32 : return 4; + case Format::eA2B10G10R10SintPack32 : return 4; + case Format::eR16Unorm : return 2; + case Format::eR16Snorm : return 2; + case Format::eR16Uscaled : return 2; + case Format::eR16Sscaled : return 2; + case Format::eR16Uint : return 2; + case Format::eR16Sint : return 2; + case Format::eR16Sfloat : return 2; + case Format::eR16G16Unorm : return 4; + case Format::eR16G16Snorm : return 4; + case Format::eR16G16Uscaled : return 4; + case Format::eR16G16Sscaled : return 4; + case Format::eR16G16Uint : return 4; + case Format::eR16G16Sint : return 4; + case Format::eR16G16Sfloat : return 4; + case Format::eR16G16B16Unorm : return 6; + case Format::eR16G16B16Snorm : return 6; + case Format::eR16G16B16Uscaled : return 6; + case Format::eR16G16B16Sscaled : return 6; + case Format::eR16G16B16Uint : return 6; + case Format::eR16G16B16Sint : return 6; + case Format::eR16G16B16Sfloat : return 6; + case Format::eR16G16B16A16Unorm : return 8; + case Format::eR16G16B16A16Snorm : return 8; + case Format::eR16G16B16A16Uscaled : return 8; + case Format::eR16G16B16A16Sscaled : return 8; + case Format::eR16G16B16A16Uint : return 8; + case Format::eR16G16B16A16Sint : return 8; + case Format::eR16G16B16A16Sfloat : return 8; + case Format::eR32Uint : return 4; + case Format::eR32Sint : return 4; + case Format::eR32Sfloat : return 4; + case Format::eR32G32Uint : return 8; + case Format::eR32G32Sint : return 8; + case Format::eR32G32Sfloat : return 8; + case Format::eR32G32B32Uint : return 12; + case Format::eR32G32B32Sint : return 12; + case Format::eR32G32B32Sfloat : return 12; + case Format::eR32G32B32A32Uint : return 16; + case Format::eR32G32B32A32Sint : return 16; + case Format::eR32G32B32A32Sfloat : return 16; + case Format::eR64Uint : return 8; + case Format::eR64Sint : return 8; + case Format::eR64Sfloat : return 8; + case Format::eR64G64Uint : return 16; + case Format::eR64G64Sint : return 16; + case Format::eR64G64Sfloat : return 16; + case Format::eR64G64B64Uint : return 24; + case Format::eR64G64B64Sint : return 24; + case Format::eR64G64B64Sfloat : return 24; + case Format::eR64G64B64A64Uint : return 32; + case Format::eR64G64B64A64Sint : return 32; + case Format::eR64G64B64A64Sfloat : return 32; + case Format::eB10G11R11UfloatPack32 : return 4; + case Format::eE5B9G9R9UfloatPack32 : return 4; + case Format::eD16Unorm : return 2; + case Format::eX8D24UnormPack32 : return 4; + case Format::eD32Sfloat : return 4; + case Format::eS8Uint : return 1; + case Format::eD16UnormS8Uint : return 3; + case Format::eD24UnormS8Uint : return 4; + case Format::eD32SfloatS8Uint : return 5; + case Format::eBc1RgbUnormBlock : return 8; + case Format::eBc1RgbSrgbBlock : return 8; + case Format::eBc1RgbaUnormBlock : return 8; + case Format::eBc1RgbaSrgbBlock : return 8; + case Format::eBc2UnormBlock : return 16; + case Format::eBc2SrgbBlock : return 16; + case Format::eBc3UnormBlock : return 16; + case Format::eBc3SrgbBlock : return 16; + case Format::eBc4UnormBlock : return 8; + case Format::eBc4SnormBlock : return 8; + case Format::eBc5UnormBlock : return 16; + case Format::eBc5SnormBlock : return 16; + case Format::eBc6HUfloatBlock : return 16; + case Format::eBc6HSfloatBlock : return 16; + case Format::eBc7UnormBlock : return 16; + case Format::eBc7SrgbBlock : return 16; + case Format::eEtc2R8G8B8UnormBlock : return 8; + case Format::eEtc2R8G8B8SrgbBlock : return 8; + case Format::eEtc2R8G8B8A1UnormBlock : return 8; + case Format::eEtc2R8G8B8A1SrgbBlock : return 8; + case Format::eEtc2R8G8B8A8UnormBlock : return 16; + case Format::eEtc2R8G8B8A8SrgbBlock : return 16; + case Format::eEacR11UnormBlock : return 8; + case Format::eEacR11SnormBlock : return 8; + case Format::eEacR11G11UnormBlock : return 16; + case Format::eEacR11G11SnormBlock : return 16; + case Format::eAstc4x4UnormBlock : return 16; + case Format::eAstc4x4SrgbBlock : return 16; + case Format::eAstc5x4UnormBlock : return 16; + case Format::eAstc5x4SrgbBlock : return 16; + case Format::eAstc5x5UnormBlock : return 16; + case Format::eAstc5x5SrgbBlock : return 16; + case Format::eAstc6x5UnormBlock : return 16; + case Format::eAstc6x5SrgbBlock : return 16; + case Format::eAstc6x6UnormBlock : return 16; + case Format::eAstc6x6SrgbBlock : return 16; + case Format::eAstc8x5UnormBlock : return 16; + case Format::eAstc8x5SrgbBlock : return 16; + case Format::eAstc8x6UnormBlock : return 16; + case Format::eAstc8x6SrgbBlock : return 16; + case Format::eAstc8x8UnormBlock : return 16; + case Format::eAstc8x8SrgbBlock : return 16; + case Format::eAstc10x5UnormBlock : return 16; + case Format::eAstc10x5SrgbBlock : return 16; + case Format::eAstc10x6UnormBlock : return 16; + case Format::eAstc10x6SrgbBlock : return 16; + case Format::eAstc10x8UnormBlock : return 16; + case Format::eAstc10x8SrgbBlock : return 16; + case Format::eAstc10x10UnormBlock : return 16; + case Format::eAstc10x10SrgbBlock : return 16; + case Format::eAstc12x10UnormBlock : return 16; + case Format::eAstc12x10SrgbBlock : return 16; + case Format::eAstc12x12UnormBlock : return 16; + case Format::eAstc12x12SrgbBlock : return 16; + case Format::eG8B8G8R8422Unorm : return 4; + case Format::eB8G8R8G8422Unorm : return 4; + case Format::eG8B8R83Plane420Unorm : return 3; + case Format::eG8B8R82Plane420Unorm : return 3; + case Format::eG8B8R83Plane422Unorm : return 3; + case Format::eG8B8R82Plane422Unorm : return 3; + case Format::eG8B8R83Plane444Unorm : return 3; + case Format::eR10X6UnormPack16 : return 2; + case Format::eR10X6G10X6Unorm2Pack16 : return 4; + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16 : return 8; + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16 : return 8; + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16 : return 8; + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16 : return 6; + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16 : return 6; + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16 : return 6; + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16 : return 6; + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16 : return 6; + case Format::eR12X4UnormPack16 : return 2; + case Format::eR12X4G12X4Unorm2Pack16 : return 4; + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16 : return 8; + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16 : return 8; + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16 : return 8; + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16 : return 6; + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16 : return 6; + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16 : return 6; + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16 : return 6; + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16 : return 6; + case Format::eG16B16G16R16422Unorm : return 8; + case Format::eB16G16R16G16422Unorm : return 8; + case Format::eG16B16R163Plane420Unorm : return 6; + case Format::eG16B16R162Plane420Unorm : return 6; + case Format::eG16B16R163Plane422Unorm : return 6; + case Format::eG16B16R162Plane422Unorm : return 6; + case Format::eG16B16R163Plane444Unorm : return 6; + case Format::eG8B8R82Plane444Unorm : return 3; + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16 : return 6; + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16 : return 6; + case Format::eG16B16R162Plane444Unorm : return 6; + case Format::eA4R4G4B4UnormPack16 : return 2; + case Format::eA4B4G4R4UnormPack16 : return 2; + case Format::eAstc4x4SfloatBlock : return 16; + case Format::eAstc5x4SfloatBlock : return 16; + case Format::eAstc5x5SfloatBlock : return 16; + case Format::eAstc6x5SfloatBlock : return 16; + case Format::eAstc6x6SfloatBlock : return 16; + case Format::eAstc8x5SfloatBlock : return 16; + case Format::eAstc8x6SfloatBlock : return 16; + case Format::eAstc8x8SfloatBlock : return 16; + case Format::eAstc10x5SfloatBlock : return 16; + case Format::eAstc10x6SfloatBlock : return 16; + case Format::eAstc10x8SfloatBlock : return 16; + case Format::eAstc10x10SfloatBlock : return 16; + case Format::eAstc12x10SfloatBlock : return 16; + case Format::eAstc12x12SfloatBlock : return 16; + case Format::eA1B5G5R5UnormPack16 : return 2; + case Format::eA8Unorm : return 1; + case Format::ePvrtc12BppUnormBlockIMG : return 8; + case Format::ePvrtc14BppUnormBlockIMG : return 8; + case Format::ePvrtc22BppUnormBlockIMG : return 8; + case Format::ePvrtc24BppUnormBlockIMG : return 8; + case Format::ePvrtc12BppSrgbBlockIMG : return 8; + case Format::ePvrtc14BppSrgbBlockIMG : return 8; + case Format::ePvrtc22BppSrgbBlockIMG : return 8; + case Format::ePvrtc24BppSrgbBlockIMG : return 8; + case Format::eAstc3x3x3UnormBlockEXT : return 16; + case Format::eAstc3x3x3SrgbBlockEXT : return 16; + case Format::eAstc3x3x3SfloatBlockEXT : return 16; + case Format::eAstc4x3x3UnormBlockEXT : return 16; + case Format::eAstc4x3x3SrgbBlockEXT : return 16; + case Format::eAstc4x3x3SfloatBlockEXT : return 16; + case Format::eAstc4x4x3UnormBlockEXT : return 16; + case Format::eAstc4x4x3SrgbBlockEXT : return 16; + case Format::eAstc4x4x3SfloatBlockEXT : return 16; + case Format::eAstc4x4x4UnormBlockEXT : return 16; + case Format::eAstc4x4x4SrgbBlockEXT : return 16; + case Format::eAstc4x4x4SfloatBlockEXT : return 16; + case Format::eAstc5x4x4UnormBlockEXT : return 16; + case Format::eAstc5x4x4SrgbBlockEXT : return 16; + case Format::eAstc5x4x4SfloatBlockEXT : return 16; + case Format::eAstc5x5x4UnormBlockEXT : return 16; + case Format::eAstc5x5x4SrgbBlockEXT : return 16; + case Format::eAstc5x5x4SfloatBlockEXT : return 16; + case Format::eAstc5x5x5UnormBlockEXT : return 16; + case Format::eAstc5x5x5SrgbBlockEXT : return 16; + case Format::eAstc5x5x5SfloatBlockEXT : return 16; + case Format::eAstc6x5x5UnormBlockEXT : return 16; + case Format::eAstc6x5x5SrgbBlockEXT : return 16; + case Format::eAstc6x5x5SfloatBlockEXT : return 16; + case Format::eAstc6x6x5UnormBlockEXT : return 16; + case Format::eAstc6x6x5SrgbBlockEXT : return 16; + case Format::eAstc6x6x5SfloatBlockEXT : return 16; + case Format::eAstc6x6x6UnormBlockEXT : return 16; + case Format::eAstc6x6x6SrgbBlockEXT : return 16; + case Format::eAstc6x6x6SfloatBlockEXT : return 16; + case Format::eR8BoolARM : return 1; + case Format::eR16SfloatFpencodingBfloat16ARM : return 2; + case Format::eR8SfloatFpencodingFloat8E4M3ARM : return 1; + case Format::eR8SfloatFpencodingFloat8E5M2ARM : return 1; + case Format::eR16G16Sfixed5NV : return 4; + case Format::eR10X6UintPack16ARM : return 2; + case Format::eR10X6G10X6Uint2Pack16ARM : return 4; + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM : return 8; + case Format::eR12X4UintPack16ARM : return 2; + case Format::eR12X4G12X4Uint2Pack16ARM : return 4; + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM : return 8; + case Format::eR14X2UintPack16ARM : return 2; + case Format::eR14X2G14X2Uint2Pack16ARM : return 4; + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM : return 8; + case Format::eR14X2UnormPack16ARM : return 2; + case Format::eR14X2G14X2Unorm2Pack16ARM : return 4; + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM : return 8; + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: return 6; + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: return 6; + + default: VULKAN_HPP_ASSERT( false ); return 0; + } + } + + // The class of the format (can't be just named "class"!) + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 char const * compatibilityClass( Format format ) + { + switch ( format ) + { + case Format::eR4G4UnormPack8 : return "8-bit"; + case Format::eR4G4B4A4UnormPack16 : return "16-bit"; + case Format::eB4G4R4A4UnormPack16 : return "16-bit"; + case Format::eR5G6B5UnormPack16 : return "16-bit"; + case Format::eB5G6R5UnormPack16 : return "16-bit"; + case Format::eR5G5B5A1UnormPack16 : return "16-bit"; + case Format::eB5G5R5A1UnormPack16 : return "16-bit"; + case Format::eA1R5G5B5UnormPack16 : return "16-bit"; + case Format::eR8Unorm : return "8-bit"; + case Format::eR8Snorm : return "8-bit"; + case Format::eR8Uscaled : return "8-bit"; + case Format::eR8Sscaled : return "8-bit"; + case Format::eR8Uint : return "8-bit"; + case Format::eR8Sint : return "8-bit"; + case Format::eR8Srgb : return "8-bit"; + case Format::eR8G8Unorm : return "16-bit"; + case Format::eR8G8Snorm : return "16-bit"; + case Format::eR8G8Uscaled : return "16-bit"; + case Format::eR8G8Sscaled : return "16-bit"; + case Format::eR8G8Uint : return "16-bit"; + case Format::eR8G8Sint : return "16-bit"; + case Format::eR8G8Srgb : return "16-bit"; + case Format::eR8G8B8Unorm : return "24-bit"; + case Format::eR8G8B8Snorm : return "24-bit"; + case Format::eR8G8B8Uscaled : return "24-bit"; + case Format::eR8G8B8Sscaled : return "24-bit"; + case Format::eR8G8B8Uint : return "24-bit"; + case Format::eR8G8B8Sint : return "24-bit"; + case Format::eR8G8B8Srgb : return "24-bit"; + case Format::eB8G8R8Unorm : return "24-bit"; + case Format::eB8G8R8Snorm : return "24-bit"; + case Format::eB8G8R8Uscaled : return "24-bit"; + case Format::eB8G8R8Sscaled : return "24-bit"; + case Format::eB8G8R8Uint : return "24-bit"; + case Format::eB8G8R8Sint : return "24-bit"; + case Format::eB8G8R8Srgb : return "24-bit"; + case Format::eR8G8B8A8Unorm : return "32-bit"; + case Format::eR8G8B8A8Snorm : return "32-bit"; + case Format::eR8G8B8A8Uscaled : return "32-bit"; + case Format::eR8G8B8A8Sscaled : return "32-bit"; + case Format::eR8G8B8A8Uint : return "32-bit"; + case Format::eR8G8B8A8Sint : return "32-bit"; + case Format::eR8G8B8A8Srgb : return "32-bit"; + case Format::eB8G8R8A8Unorm : return "32-bit"; + case Format::eB8G8R8A8Snorm : return "32-bit"; + case Format::eB8G8R8A8Uscaled : return "32-bit"; + case Format::eB8G8R8A8Sscaled : return "32-bit"; + case Format::eB8G8R8A8Uint : return "32-bit"; + case Format::eB8G8R8A8Sint : return "32-bit"; + case Format::eB8G8R8A8Srgb : return "32-bit"; + case Format::eA8B8G8R8UnormPack32 : return "32-bit"; + case Format::eA8B8G8R8SnormPack32 : return "32-bit"; + case Format::eA8B8G8R8UscaledPack32 : return "32-bit"; + case Format::eA8B8G8R8SscaledPack32 : return "32-bit"; + case Format::eA8B8G8R8UintPack32 : return "32-bit"; + case Format::eA8B8G8R8SintPack32 : return "32-bit"; + case Format::eA8B8G8R8SrgbPack32 : return "32-bit"; + case Format::eA2R10G10B10UnormPack32 : return "32-bit"; + case Format::eA2R10G10B10SnormPack32 : return "32-bit"; + case Format::eA2R10G10B10UscaledPack32 : return "32-bit"; + case Format::eA2R10G10B10SscaledPack32 : return "32-bit"; + case Format::eA2R10G10B10UintPack32 : return "32-bit"; + case Format::eA2R10G10B10SintPack32 : return "32-bit"; + case Format::eA2B10G10R10UnormPack32 : return "32-bit"; + case Format::eA2B10G10R10SnormPack32 : return "32-bit"; + case Format::eA2B10G10R10UscaledPack32 : return "32-bit"; + case Format::eA2B10G10R10SscaledPack32 : return "32-bit"; + case Format::eA2B10G10R10UintPack32 : return "32-bit"; + case Format::eA2B10G10R10SintPack32 : return "32-bit"; + case Format::eR16Unorm : return "16-bit"; + case Format::eR16Snorm : return "16-bit"; + case Format::eR16Uscaled : return "16-bit"; + case Format::eR16Sscaled : return "16-bit"; + case Format::eR16Uint : return "16-bit"; + case Format::eR16Sint : return "16-bit"; + case Format::eR16Sfloat : return "16-bit"; + case Format::eR16G16Unorm : return "32-bit"; + case Format::eR16G16Snorm : return "32-bit"; + case Format::eR16G16Uscaled : return "32-bit"; + case Format::eR16G16Sscaled : return "32-bit"; + case Format::eR16G16Uint : return "32-bit"; + case Format::eR16G16Sint : return "32-bit"; + case Format::eR16G16Sfloat : return "32-bit"; + case Format::eR16G16B16Unorm : return "48-bit"; + case Format::eR16G16B16Snorm : return "48-bit"; + case Format::eR16G16B16Uscaled : return "48-bit"; + case Format::eR16G16B16Sscaled : return "48-bit"; + case Format::eR16G16B16Uint : return "48-bit"; + case Format::eR16G16B16Sint : return "48-bit"; + case Format::eR16G16B16Sfloat : return "48-bit"; + case Format::eR16G16B16A16Unorm : return "64-bit"; + case Format::eR16G16B16A16Snorm : return "64-bit"; + case Format::eR16G16B16A16Uscaled : return "64-bit"; + case Format::eR16G16B16A16Sscaled : return "64-bit"; + case Format::eR16G16B16A16Uint : return "64-bit"; + case Format::eR16G16B16A16Sint : return "64-bit"; + case Format::eR16G16B16A16Sfloat : return "64-bit"; + case Format::eR32Uint : return "32-bit"; + case Format::eR32Sint : return "32-bit"; + case Format::eR32Sfloat : return "32-bit"; + case Format::eR32G32Uint : return "64-bit"; + case Format::eR32G32Sint : return "64-bit"; + case Format::eR32G32Sfloat : return "64-bit"; + case Format::eR32G32B32Uint : return "96-bit"; + case Format::eR32G32B32Sint : return "96-bit"; + case Format::eR32G32B32Sfloat : return "96-bit"; + case Format::eR32G32B32A32Uint : return "128-bit"; + case Format::eR32G32B32A32Sint : return "128-bit"; + case Format::eR32G32B32A32Sfloat : return "128-bit"; + case Format::eR64Uint : return "64-bit"; + case Format::eR64Sint : return "64-bit"; + case Format::eR64Sfloat : return "64-bit"; + case Format::eR64G64Uint : return "128-bit"; + case Format::eR64G64Sint : return "128-bit"; + case Format::eR64G64Sfloat : return "128-bit"; + case Format::eR64G64B64Uint : return "192-bit"; + case Format::eR64G64B64Sint : return "192-bit"; + case Format::eR64G64B64Sfloat : return "192-bit"; + case Format::eR64G64B64A64Uint : return "256-bit"; + case Format::eR64G64B64A64Sint : return "256-bit"; + case Format::eR64G64B64A64Sfloat : return "256-bit"; + case Format::eB10G11R11UfloatPack32 : return "32-bit"; + case Format::eE5B9G9R9UfloatPack32 : return "32-bit"; + case Format::eD16Unorm : return "D16"; + case Format::eX8D24UnormPack32 : return "D24"; + case Format::eD32Sfloat : return "D32"; + case Format::eS8Uint : return "S8"; + case Format::eD16UnormS8Uint : return "D16S8"; + case Format::eD24UnormS8Uint : return "D24S8"; + case Format::eD32SfloatS8Uint : return "D32S8"; + case Format::eBc1RgbUnormBlock : return "BC1_RGB"; + case Format::eBc1RgbSrgbBlock : return "BC1_RGB"; + case Format::eBc1RgbaUnormBlock : return "BC1_RGBA"; + case Format::eBc1RgbaSrgbBlock : return "BC1_RGBA"; + case Format::eBc2UnormBlock : return "BC2"; + case Format::eBc2SrgbBlock : return "BC2"; + case Format::eBc3UnormBlock : return "BC3"; + case Format::eBc3SrgbBlock : return "BC3"; + case Format::eBc4UnormBlock : return "BC4"; + case Format::eBc4SnormBlock : return "BC4"; + case Format::eBc5UnormBlock : return "BC5"; + case Format::eBc5SnormBlock : return "BC5"; + case Format::eBc6HUfloatBlock : return "BC6H"; + case Format::eBc6HSfloatBlock : return "BC6H"; + case Format::eBc7UnormBlock : return "BC7"; + case Format::eBc7SrgbBlock : return "BC7"; + case Format::eEtc2R8G8B8UnormBlock : return "ETC2_RGB"; + case Format::eEtc2R8G8B8SrgbBlock : return "ETC2_RGB"; + case Format::eEtc2R8G8B8A1UnormBlock : return "ETC2_RGBA"; + case Format::eEtc2R8G8B8A1SrgbBlock : return "ETC2_RGBA"; + case Format::eEtc2R8G8B8A8UnormBlock : return "ETC2_EAC_RGBA"; + case Format::eEtc2R8G8B8A8SrgbBlock : return "ETC2_EAC_RGBA"; + case Format::eEacR11UnormBlock : return "EAC_R"; + case Format::eEacR11SnormBlock : return "EAC_R"; + case Format::eEacR11G11UnormBlock : return "EAC_RG"; + case Format::eEacR11G11SnormBlock : return "EAC_RG"; + case Format::eAstc4x4UnormBlock : return "ASTC_4x4"; + case Format::eAstc4x4SrgbBlock : return "ASTC_4x4"; + case Format::eAstc5x4UnormBlock : return "ASTC_5x4"; + case Format::eAstc5x4SrgbBlock : return "ASTC_5x4"; + case Format::eAstc5x5UnormBlock : return "ASTC_5x5"; + case Format::eAstc5x5SrgbBlock : return "ASTC_5x5"; + case Format::eAstc6x5UnormBlock : return "ASTC_6x5"; + case Format::eAstc6x5SrgbBlock : return "ASTC_6x5"; + case Format::eAstc6x6UnormBlock : return "ASTC_6x6"; + case Format::eAstc6x6SrgbBlock : return "ASTC_6x6"; + case Format::eAstc8x5UnormBlock : return "ASTC_8x5"; + case Format::eAstc8x5SrgbBlock : return "ASTC_8x5"; + case Format::eAstc8x6UnormBlock : return "ASTC_8x6"; + case Format::eAstc8x6SrgbBlock : return "ASTC_8x6"; + case Format::eAstc8x8UnormBlock : return "ASTC_8x8"; + case Format::eAstc8x8SrgbBlock : return "ASTC_8x8"; + case Format::eAstc10x5UnormBlock : return "ASTC_10x5"; + case Format::eAstc10x5SrgbBlock : return "ASTC_10x5"; + case Format::eAstc10x6UnormBlock : return "ASTC_10x6"; + case Format::eAstc10x6SrgbBlock : return "ASTC_10x6"; + case Format::eAstc10x8UnormBlock : return "ASTC_10x8"; + case Format::eAstc10x8SrgbBlock : return "ASTC_10x8"; + case Format::eAstc10x10UnormBlock : return "ASTC_10x10"; + case Format::eAstc10x10SrgbBlock : return "ASTC_10x10"; + case Format::eAstc12x10UnormBlock : return "ASTC_12x10"; + case Format::eAstc12x10SrgbBlock : return "ASTC_12x10"; + case Format::eAstc12x12UnormBlock : return "ASTC_12x12"; + case Format::eAstc12x12SrgbBlock : return "ASTC_12x12"; + case Format::eG8B8G8R8422Unorm : return "32-bit G8B8G8R8"; + case Format::eB8G8R8G8422Unorm : return "32-bit B8G8R8G8"; + case Format::eG8B8R83Plane420Unorm : return "8-bit 3-plane 420"; + case Format::eG8B8R82Plane420Unorm : return "8-bit 2-plane 420"; + case Format::eG8B8R83Plane422Unorm : return "8-bit 3-plane 422"; + case Format::eG8B8R82Plane422Unorm : return "8-bit 2-plane 422"; + case Format::eG8B8R83Plane444Unorm : return "8-bit 3-plane 444"; + case Format::eR10X6UnormPack16 : return "16-bit"; + case Format::eR10X6G10X6Unorm2Pack16 : return "32-bit"; + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16 : return "64-bit R10G10B10A10"; + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16 : return "64-bit G10B10G10R10"; + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16 : return "64-bit B10G10R10G10"; + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16 : return "10-bit 3-plane 420"; + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16 : return "10-bit 2-plane 420"; + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16 : return "10-bit 3-plane 422"; + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16 : return "10-bit 2-plane 422"; + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16 : return "10-bit 3-plane 444"; + case Format::eR12X4UnormPack16 : return "16-bit"; + case Format::eR12X4G12X4Unorm2Pack16 : return "32-bit"; + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16 : return "64-bit R12G12B12A12"; + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16 : return "64-bit G12B12G12R12"; + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16 : return "64-bit B12G12R12G12"; + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16 : return "12-bit 3-plane 420"; + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16 : return "12-bit 2-plane 420"; + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16 : return "12-bit 3-plane 422"; + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16 : return "12-bit 2-plane 422"; + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16 : return "12-bit 3-plane 444"; + case Format::eG16B16G16R16422Unorm : return "64-bit G16B16G16R16"; + case Format::eB16G16R16G16422Unorm : return "64-bit B16G16R16G16"; + case Format::eG16B16R163Plane420Unorm : return "16-bit 3-plane 420"; + case Format::eG16B16R162Plane420Unorm : return "16-bit 2-plane 420"; + case Format::eG16B16R163Plane422Unorm : return "16-bit 3-plane 422"; + case Format::eG16B16R162Plane422Unorm : return "16-bit 2-plane 422"; + case Format::eG16B16R163Plane444Unorm : return "16-bit 3-plane 444"; + case Format::eG8B8R82Plane444Unorm : return "8-bit 2-plane 444"; + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16 : return "10-bit 2-plane 444"; + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16 : return "12-bit 2-plane 444"; + case Format::eG16B16R162Plane444Unorm : return "16-bit 2-plane 444"; + case Format::eA4R4G4B4UnormPack16 : return "16-bit"; + case Format::eA4B4G4R4UnormPack16 : return "16-bit"; + case Format::eAstc4x4SfloatBlock : return "ASTC_4x4"; + case Format::eAstc5x4SfloatBlock : return "ASTC_5x4"; + case Format::eAstc5x5SfloatBlock : return "ASTC_5x5"; + case Format::eAstc6x5SfloatBlock : return "ASTC_6x5"; + case Format::eAstc6x6SfloatBlock : return "ASTC_6x6"; + case Format::eAstc8x5SfloatBlock : return "ASTC_8x5"; + case Format::eAstc8x6SfloatBlock : return "ASTC_8x6"; + case Format::eAstc8x8SfloatBlock : return "ASTC_8x8"; + case Format::eAstc10x5SfloatBlock : return "ASTC_10x5"; + case Format::eAstc10x6SfloatBlock : return "ASTC_10x6"; + case Format::eAstc10x8SfloatBlock : return "ASTC_10x8"; + case Format::eAstc10x10SfloatBlock : return "ASTC_10x10"; + case Format::eAstc12x10SfloatBlock : return "ASTC_12x10"; + case Format::eAstc12x12SfloatBlock : return "ASTC_12x12"; + case Format::eA1B5G5R5UnormPack16 : return "16-bit"; + case Format::eA8Unorm : return "8-bit alpha"; + case Format::ePvrtc12BppUnormBlockIMG : return "PVRTC1_2BPP"; + case Format::ePvrtc14BppUnormBlockIMG : return "PVRTC1_4BPP"; + case Format::ePvrtc22BppUnormBlockIMG : return "PVRTC2_2BPP"; + case Format::ePvrtc24BppUnormBlockIMG : return "PVRTC2_4BPP"; + case Format::ePvrtc12BppSrgbBlockIMG : return "PVRTC1_2BPP"; + case Format::ePvrtc14BppSrgbBlockIMG : return "PVRTC1_4BPP"; + case Format::ePvrtc22BppSrgbBlockIMG : return "PVRTC2_2BPP"; + case Format::ePvrtc24BppSrgbBlockIMG : return "PVRTC2_4BPP"; + case Format::eAstc3x3x3UnormBlockEXT : return "ASTC_3x3x3"; + case Format::eAstc3x3x3SrgbBlockEXT : return "ASTC_3x3x3"; + case Format::eAstc3x3x3SfloatBlockEXT : return "ASTC_3x3x3"; + case Format::eAstc4x3x3UnormBlockEXT : return "ASTC_4x3x3"; + case Format::eAstc4x3x3SrgbBlockEXT : return "ASTC_4x3x3"; + case Format::eAstc4x3x3SfloatBlockEXT : return "ASTC_4x3x3"; + case Format::eAstc4x4x3UnormBlockEXT : return "ASTC_4x4x3"; + case Format::eAstc4x4x3SrgbBlockEXT : return "ASTC_4x4x3"; + case Format::eAstc4x4x3SfloatBlockEXT : return "ASTC_4x4x3"; + case Format::eAstc4x4x4UnormBlockEXT : return "ASTC_4x4x4"; + case Format::eAstc4x4x4SrgbBlockEXT : return "ASTC_4x4x4"; + case Format::eAstc4x4x4SfloatBlockEXT : return "ASTC_4x4x4"; + case Format::eAstc5x4x4UnormBlockEXT : return "ASTC_5x4x4"; + case Format::eAstc5x4x4SrgbBlockEXT : return "ASTC_5x4x4"; + case Format::eAstc5x4x4SfloatBlockEXT : return "ASTC_5x4x4"; + case Format::eAstc5x5x4UnormBlockEXT : return "ASTC_5x5x4"; + case Format::eAstc5x5x4SrgbBlockEXT : return "ASTC_5x5x4"; + case Format::eAstc5x5x4SfloatBlockEXT : return "ASTC_5x5x4"; + case Format::eAstc5x5x5UnormBlockEXT : return "ASTC_5x5x5"; + case Format::eAstc5x5x5SrgbBlockEXT : return "ASTC_5x5x5"; + case Format::eAstc5x5x5SfloatBlockEXT : return "ASTC_5x5x5"; + case Format::eAstc6x5x5UnormBlockEXT : return "ASTC_6x5x5"; + case Format::eAstc6x5x5SrgbBlockEXT : return "ASTC_6x5x5"; + case Format::eAstc6x5x5SfloatBlockEXT : return "ASTC_6x5x5"; + case Format::eAstc6x6x5UnormBlockEXT : return "ASTC_6x6x5"; + case Format::eAstc6x6x5SrgbBlockEXT : return "ASTC_6x6x5"; + case Format::eAstc6x6x5SfloatBlockEXT : return "ASTC_6x6x5"; + case Format::eAstc6x6x6UnormBlockEXT : return "ASTC_6x6x6"; + case Format::eAstc6x6x6SrgbBlockEXT : return "ASTC_6x6x6"; + case Format::eAstc6x6x6SfloatBlockEXT : return "ASTC_6x6x6"; + case Format::eR8BoolARM : return "8-bit"; + case Format::eR16SfloatFpencodingBfloat16ARM : return "16-bit"; + case Format::eR8SfloatFpencodingFloat8E4M3ARM : return "8-bit"; + case Format::eR8SfloatFpencodingFloat8E5M2ARM : return "8-bit"; + case Format::eR16G16Sfixed5NV : return "32-bit"; + case Format::eR10X6UintPack16ARM : return "16-bit"; + case Format::eR10X6G10X6Uint2Pack16ARM : return "32-bit"; + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM : return "64-bit R10G10B10A10"; + case Format::eR12X4UintPack16ARM : return "16-bit"; + case Format::eR12X4G12X4Uint2Pack16ARM : return "32-bit"; + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM : return "64-bit R12G12B12A12"; + case Format::eR14X2UintPack16ARM : return "16-bit"; + case Format::eR14X2G14X2Uint2Pack16ARM : return "32-bit"; + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM : return "64-bit R14G14B14A14"; + case Format::eR14X2UnormPack16ARM : return "16-bit"; + case Format::eR14X2G14X2Unorm2Pack16ARM : return "32-bit"; + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM : return "64-bit R14G14B14A14"; + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: return "14-bit 2-plane 420"; + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: return "14-bit 2-plane 422"; + + default: VULKAN_HPP_ASSERT( false ); return ""; + } + } + + // The number of bits in this component, if not compressed, otherwise 0. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t componentBits( Format format, uint8_t component ) + { + switch ( format ) + { + case Format::eR4G4UnormPack8: + switch ( component ) + { + case 0 : return 4; + case 1 : return 4; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR4G4B4A4UnormPack16: + switch ( component ) + { + case 0 : return 4; + case 1 : return 4; + case 2 : return 4; + case 3 : return 4; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB4G4R4A4UnormPack16: + switch ( component ) + { + case 0 : return 4; + case 1 : return 4; + case 2 : return 4; + case 3 : return 4; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR5G6B5UnormPack16: + switch ( component ) + { + case 0 : return 5; + case 1 : return 6; + case 2 : return 5; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB5G6R5UnormPack16: + switch ( component ) + { + case 0 : return 5; + case 1 : return 6; + case 2 : return 5; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR5G5B5A1UnormPack16: + switch ( component ) + { + case 0 : return 5; + case 1 : return 5; + case 2 : return 5; + case 3 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB5G5R5A1UnormPack16: + switch ( component ) + { + case 0 : return 5; + case 1 : return 5; + case 2 : return 5; + case 3 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA1R5G5B5UnormPack16: + switch ( component ) + { + case 0 : return 1; + case 1 : return 5; + case 2 : return 5; + case 3 : return 5; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8Unorm: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8Snorm: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8Uscaled: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8Sscaled: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8Uint: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8Sint: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8Srgb: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8Snorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8Uscaled: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8Sscaled: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8Uint: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8Sint: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8Srgb: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8Snorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8Uscaled: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8Sscaled: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8Uint: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8Sint: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8Srgb: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8Snorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8Uscaled: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8Sscaled: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8Uint: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8Sint: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8Srgb: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8A8Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8A8Snorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8A8Uscaled: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8A8Sscaled: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8A8Uint: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8A8Sint: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8G8B8A8Srgb: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8A8Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8A8Snorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8A8Uscaled: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8A8Sscaled: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8A8Uint: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8A8Sint: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8A8Srgb: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA8B8G8R8UnormPack32: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA8B8G8R8SnormPack32: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA8B8G8R8UscaledPack32: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA8B8G8R8SscaledPack32: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA8B8G8R8UintPack32: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA8B8G8R8SintPack32: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA8B8G8R8SrgbPack32: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2R10G10B10UnormPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2R10G10B10SnormPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2R10G10B10UscaledPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2R10G10B10SscaledPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2R10G10B10UintPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2R10G10B10SintPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2B10G10R10UnormPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2B10G10R10SnormPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2B10G10R10UscaledPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2B10G10R10SscaledPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2B10G10R10UintPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA2B10G10R10SintPack32: + switch ( component ) + { + case 0 : return 2; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16Unorm: + switch ( component ) + { + case 0 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16Snorm: + switch ( component ) + { + case 0 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16Uscaled: + switch ( component ) + { + case 0 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16Sscaled: + switch ( component ) + { + case 0 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16Uint: + switch ( component ) + { + case 0 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16Sint: + switch ( component ) + { + case 0 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16Sfloat: + switch ( component ) + { + case 0 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16Snorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16Uscaled: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16Sscaled: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16Uint: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16Sint: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16Sfloat: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16Snorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16Uscaled: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16Sscaled: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16Uint: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16Sint: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16Sfloat: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16A16Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + case 3 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16A16Snorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + case 3 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16A16Uscaled: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + case 3 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16A16Sscaled: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + case 3 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16A16Uint: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + case 3 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16A16Sint: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + case 3 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16B16A16Sfloat: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + case 3 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32Uint: + switch ( component ) + { + case 0 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32Sint: + switch ( component ) + { + case 0 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32Sfloat: + switch ( component ) + { + case 0 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32G32Uint: + switch ( component ) + { + case 0 : return 32; + case 1 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32G32Sint: + switch ( component ) + { + case 0 : return 32; + case 1 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32G32Sfloat: + switch ( component ) + { + case 0 : return 32; + case 1 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32G32B32Uint: + switch ( component ) + { + case 0 : return 32; + case 1 : return 32; + case 2 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32G32B32Sint: + switch ( component ) + { + case 0 : return 32; + case 1 : return 32; + case 2 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32G32B32Sfloat: + switch ( component ) + { + case 0 : return 32; + case 1 : return 32; + case 2 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32G32B32A32Uint: + switch ( component ) + { + case 0 : return 32; + case 1 : return 32; + case 2 : return 32; + case 3 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32G32B32A32Sint: + switch ( component ) + { + case 0 : return 32; + case 1 : return 32; + case 2 : return 32; + case 3 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR32G32B32A32Sfloat: + switch ( component ) + { + case 0 : return 32; + case 1 : return 32; + case 2 : return 32; + case 3 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64Uint: + switch ( component ) + { + case 0 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64Sint: + switch ( component ) + { + case 0 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64Sfloat: + switch ( component ) + { + case 0 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64G64Uint: + switch ( component ) + { + case 0 : return 64; + case 1 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64G64Sint: + switch ( component ) + { + case 0 : return 64; + case 1 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64G64Sfloat: + switch ( component ) + { + case 0 : return 64; + case 1 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64G64B64Uint: + switch ( component ) + { + case 0 : return 64; + case 1 : return 64; + case 2 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64G64B64Sint: + switch ( component ) + { + case 0 : return 64; + case 1 : return 64; + case 2 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64G64B64Sfloat: + switch ( component ) + { + case 0 : return 64; + case 1 : return 64; + case 2 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64G64B64A64Uint: + switch ( component ) + { + case 0 : return 64; + case 1 : return 64; + case 2 : return 64; + case 3 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64G64B64A64Sint: + switch ( component ) + { + case 0 : return 64; + case 1 : return 64; + case 2 : return 64; + case 3 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR64G64B64A64Sfloat: + switch ( component ) + { + case 0 : return 64; + case 1 : return 64; + case 2 : return 64; + case 3 : return 64; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB10G11R11UfloatPack32: + switch ( component ) + { + case 0 : return 10; + case 1 : return 11; + case 2 : return 11; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eE5B9G9R9UfloatPack32: + switch ( component ) + { + case 0 : return 9; + case 1 : return 9; + case 2 : return 9; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eD16Unorm: + switch ( component ) + { + case 0 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eX8D24UnormPack32: + switch ( component ) + { + case 0 : return 24; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eD32Sfloat: + switch ( component ) + { + case 0 : return 32; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eS8Uint: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eD16UnormS8Uint: + switch ( component ) + { + case 0 : return 16; + case 1 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eD24UnormS8Uint: + switch ( component ) + { + case 0 : return 24; + case 1 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eD32SfloatS8Uint: + switch ( component ) + { + case 0 : return 32; + case 1 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eEacR11UnormBlock: + switch ( component ) + { + case 0 : return 11; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eEacR11SnormBlock: + switch ( component ) + { + case 0 : return 11; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eEacR11G11UnormBlock: + switch ( component ) + { + case 0 : return 11; + case 1 : return 11; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eEacR11G11SnormBlock: + switch ( component ) + { + case 0 : return 11; + case 1 : return 11; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8G8R8422Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB8G8R8G8422Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + case 3 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R83Plane420Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R82Plane420Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R83Plane422Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R82Plane422Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R83Plane444Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR10X6UnormPack16: + switch ( component ) + { + case 0 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR10X6G10X6Unorm2Pack16: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + case 2 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + case 2 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + case 2 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + case 2 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + case 2 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR12X4UnormPack16: + switch ( component ) + { + case 0 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR12X4G12X4Unorm2Pack16: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + case 2 : return 12; + case 3 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + case 2 : return 12; + case 3 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + case 2 : return 12; + case 3 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + case 2 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + case 2 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + case 2 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + case 2 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + case 2 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16G16R16422Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + case 3 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eB16G16R16G16422Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + case 3 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R163Plane420Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R162Plane420Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R163Plane422Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R162Plane422Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R163Plane444Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R82Plane444Unorm: + switch ( component ) + { + case 0 : return 8; + case 1 : return 8; + case 2 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + case 2 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + case 2 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R162Plane444Unorm: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + case 2 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA4R4G4B4UnormPack16: + switch ( component ) + { + case 0 : return 4; + case 1 : return 4; + case 2 : return 4; + case 3 : return 4; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA4B4G4R4UnormPack16: + switch ( component ) + { + case 0 : return 4; + case 1 : return 4; + case 2 : return 4; + case 3 : return 4; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA1B5G5R5UnormPack16: + switch ( component ) + { + case 0 : return 1; + case 1 : return 5; + case 2 : return 5; + case 3 : return 5; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eA8Unorm: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8BoolARM: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16SfloatFpencodingBfloat16ARM: + switch ( component ) + { + case 0 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8SfloatFpencodingFloat8E4M3ARM: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR8SfloatFpencodingFloat8E5M2ARM: + switch ( component ) + { + case 0 : return 8; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR16G16Sfixed5NV: + switch ( component ) + { + case 0 : return 16; + case 1 : return 16; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR10X6UintPack16ARM: + switch ( component ) + { + case 0 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR10X6G10X6Uint2Pack16ARM: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM: + switch ( component ) + { + case 0 : return 10; + case 1 : return 10; + case 2 : return 10; + case 3 : return 10; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR12X4UintPack16ARM: + switch ( component ) + { + case 0 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR12X4G12X4Uint2Pack16ARM: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM: + switch ( component ) + { + case 0 : return 12; + case 1 : return 12; + case 2 : return 12; + case 3 : return 12; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR14X2UintPack16ARM: + switch ( component ) + { + case 0 : return 14; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR14X2G14X2Uint2Pack16ARM: + switch ( component ) + { + case 0 : return 14; + case 1 : return 14; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM: + switch ( component ) + { + case 0 : return 14; + case 1 : return 14; + case 2 : return 14; + case 3 : return 14; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR14X2UnormPack16ARM: + switch ( component ) + { + case 0 : return 14; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR14X2G14X2Unorm2Pack16ARM: + switch ( component ) + { + case 0 : return 14; + case 1 : return 14; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM: + switch ( component ) + { + case 0 : return 14; + case 1 : return 14; + case 2 : return 14; + case 3 : return 14; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: + switch ( component ) + { + case 0 : return 14; + case 1 : return 14; + case 2 : return 14; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: + switch ( component ) + { + case 0 : return 14; + case 1 : return 14; + case 2 : return 14; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + + default: return 0; + } + } + + // The number of components of this format. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t componentCount( Format format ) + { + switch ( format ) + { + case Format::eR4G4UnormPack8 : return 2; + case Format::eR4G4B4A4UnormPack16 : return 4; + case Format::eB4G4R4A4UnormPack16 : return 4; + case Format::eR5G6B5UnormPack16 : return 3; + case Format::eB5G6R5UnormPack16 : return 3; + case Format::eR5G5B5A1UnormPack16 : return 4; + case Format::eB5G5R5A1UnormPack16 : return 4; + case Format::eA1R5G5B5UnormPack16 : return 4; + case Format::eR8Unorm : return 1; + case Format::eR8Snorm : return 1; + case Format::eR8Uscaled : return 1; + case Format::eR8Sscaled : return 1; + case Format::eR8Uint : return 1; + case Format::eR8Sint : return 1; + case Format::eR8Srgb : return 1; + case Format::eR8G8Unorm : return 2; + case Format::eR8G8Snorm : return 2; + case Format::eR8G8Uscaled : return 2; + case Format::eR8G8Sscaled : return 2; + case Format::eR8G8Uint : return 2; + case Format::eR8G8Sint : return 2; + case Format::eR8G8Srgb : return 2; + case Format::eR8G8B8Unorm : return 3; + case Format::eR8G8B8Snorm : return 3; + case Format::eR8G8B8Uscaled : return 3; + case Format::eR8G8B8Sscaled : return 3; + case Format::eR8G8B8Uint : return 3; + case Format::eR8G8B8Sint : return 3; + case Format::eR8G8B8Srgb : return 3; + case Format::eB8G8R8Unorm : return 3; + case Format::eB8G8R8Snorm : return 3; + case Format::eB8G8R8Uscaled : return 3; + case Format::eB8G8R8Sscaled : return 3; + case Format::eB8G8R8Uint : return 3; + case Format::eB8G8R8Sint : return 3; + case Format::eB8G8R8Srgb : return 3; + case Format::eR8G8B8A8Unorm : return 4; + case Format::eR8G8B8A8Snorm : return 4; + case Format::eR8G8B8A8Uscaled : return 4; + case Format::eR8G8B8A8Sscaled : return 4; + case Format::eR8G8B8A8Uint : return 4; + case Format::eR8G8B8A8Sint : return 4; + case Format::eR8G8B8A8Srgb : return 4; + case Format::eB8G8R8A8Unorm : return 4; + case Format::eB8G8R8A8Snorm : return 4; + case Format::eB8G8R8A8Uscaled : return 4; + case Format::eB8G8R8A8Sscaled : return 4; + case Format::eB8G8R8A8Uint : return 4; + case Format::eB8G8R8A8Sint : return 4; + case Format::eB8G8R8A8Srgb : return 4; + case Format::eA8B8G8R8UnormPack32 : return 4; + case Format::eA8B8G8R8SnormPack32 : return 4; + case Format::eA8B8G8R8UscaledPack32 : return 4; + case Format::eA8B8G8R8SscaledPack32 : return 4; + case Format::eA8B8G8R8UintPack32 : return 4; + case Format::eA8B8G8R8SintPack32 : return 4; + case Format::eA8B8G8R8SrgbPack32 : return 4; + case Format::eA2R10G10B10UnormPack32 : return 4; + case Format::eA2R10G10B10SnormPack32 : return 4; + case Format::eA2R10G10B10UscaledPack32 : return 4; + case Format::eA2R10G10B10SscaledPack32 : return 4; + case Format::eA2R10G10B10UintPack32 : return 4; + case Format::eA2R10G10B10SintPack32 : return 4; + case Format::eA2B10G10R10UnormPack32 : return 4; + case Format::eA2B10G10R10SnormPack32 : return 4; + case Format::eA2B10G10R10UscaledPack32 : return 4; + case Format::eA2B10G10R10SscaledPack32 : return 4; + case Format::eA2B10G10R10UintPack32 : return 4; + case Format::eA2B10G10R10SintPack32 : return 4; + case Format::eR16Unorm : return 1; + case Format::eR16Snorm : return 1; + case Format::eR16Uscaled : return 1; + case Format::eR16Sscaled : return 1; + case Format::eR16Uint : return 1; + case Format::eR16Sint : return 1; + case Format::eR16Sfloat : return 1; + case Format::eR16G16Unorm : return 2; + case Format::eR16G16Snorm : return 2; + case Format::eR16G16Uscaled : return 2; + case Format::eR16G16Sscaled : return 2; + case Format::eR16G16Uint : return 2; + case Format::eR16G16Sint : return 2; + case Format::eR16G16Sfloat : return 2; + case Format::eR16G16B16Unorm : return 3; + case Format::eR16G16B16Snorm : return 3; + case Format::eR16G16B16Uscaled : return 3; + case Format::eR16G16B16Sscaled : return 3; + case Format::eR16G16B16Uint : return 3; + case Format::eR16G16B16Sint : return 3; + case Format::eR16G16B16Sfloat : return 3; + case Format::eR16G16B16A16Unorm : return 4; + case Format::eR16G16B16A16Snorm : return 4; + case Format::eR16G16B16A16Uscaled : return 4; + case Format::eR16G16B16A16Sscaled : return 4; + case Format::eR16G16B16A16Uint : return 4; + case Format::eR16G16B16A16Sint : return 4; + case Format::eR16G16B16A16Sfloat : return 4; + case Format::eR32Uint : return 1; + case Format::eR32Sint : return 1; + case Format::eR32Sfloat : return 1; + case Format::eR32G32Uint : return 2; + case Format::eR32G32Sint : return 2; + case Format::eR32G32Sfloat : return 2; + case Format::eR32G32B32Uint : return 3; + case Format::eR32G32B32Sint : return 3; + case Format::eR32G32B32Sfloat : return 3; + case Format::eR32G32B32A32Uint : return 4; + case Format::eR32G32B32A32Sint : return 4; + case Format::eR32G32B32A32Sfloat : return 4; + case Format::eR64Uint : return 1; + case Format::eR64Sint : return 1; + case Format::eR64Sfloat : return 1; + case Format::eR64G64Uint : return 2; + case Format::eR64G64Sint : return 2; + case Format::eR64G64Sfloat : return 2; + case Format::eR64G64B64Uint : return 3; + case Format::eR64G64B64Sint : return 3; + case Format::eR64G64B64Sfloat : return 3; + case Format::eR64G64B64A64Uint : return 4; + case Format::eR64G64B64A64Sint : return 4; + case Format::eR64G64B64A64Sfloat : return 4; + case Format::eB10G11R11UfloatPack32 : return 3; + case Format::eE5B9G9R9UfloatPack32 : return 3; + case Format::eD16Unorm : return 1; + case Format::eX8D24UnormPack32 : return 1; + case Format::eD32Sfloat : return 1; + case Format::eS8Uint : return 1; + case Format::eD16UnormS8Uint : return 2; + case Format::eD24UnormS8Uint : return 2; + case Format::eD32SfloatS8Uint : return 2; + case Format::eBc1RgbUnormBlock : return 3; + case Format::eBc1RgbSrgbBlock : return 3; + case Format::eBc1RgbaUnormBlock : return 4; + case Format::eBc1RgbaSrgbBlock : return 4; + case Format::eBc2UnormBlock : return 4; + case Format::eBc2SrgbBlock : return 4; + case Format::eBc3UnormBlock : return 4; + case Format::eBc3SrgbBlock : return 4; + case Format::eBc4UnormBlock : return 1; + case Format::eBc4SnormBlock : return 1; + case Format::eBc5UnormBlock : return 2; + case Format::eBc5SnormBlock : return 2; + case Format::eBc6HUfloatBlock : return 3; + case Format::eBc6HSfloatBlock : return 3; + case Format::eBc7UnormBlock : return 4; + case Format::eBc7SrgbBlock : return 4; + case Format::eEtc2R8G8B8UnormBlock : return 3; + case Format::eEtc2R8G8B8SrgbBlock : return 3; + case Format::eEtc2R8G8B8A1UnormBlock : return 4; + case Format::eEtc2R8G8B8A1SrgbBlock : return 4; + case Format::eEtc2R8G8B8A8UnormBlock : return 4; + case Format::eEtc2R8G8B8A8SrgbBlock : return 4; + case Format::eEacR11UnormBlock : return 1; + case Format::eEacR11SnormBlock : return 1; + case Format::eEacR11G11UnormBlock : return 2; + case Format::eEacR11G11SnormBlock : return 2; + case Format::eAstc4x4UnormBlock : return 4; + case Format::eAstc4x4SrgbBlock : return 4; + case Format::eAstc5x4UnormBlock : return 4; + case Format::eAstc5x4SrgbBlock : return 4; + case Format::eAstc5x5UnormBlock : return 4; + case Format::eAstc5x5SrgbBlock : return 4; + case Format::eAstc6x5UnormBlock : return 4; + case Format::eAstc6x5SrgbBlock : return 4; + case Format::eAstc6x6UnormBlock : return 4; + case Format::eAstc6x6SrgbBlock : return 4; + case Format::eAstc8x5UnormBlock : return 4; + case Format::eAstc8x5SrgbBlock : return 4; + case Format::eAstc8x6UnormBlock : return 4; + case Format::eAstc8x6SrgbBlock : return 4; + case Format::eAstc8x8UnormBlock : return 4; + case Format::eAstc8x8SrgbBlock : return 4; + case Format::eAstc10x5UnormBlock : return 4; + case Format::eAstc10x5SrgbBlock : return 4; + case Format::eAstc10x6UnormBlock : return 4; + case Format::eAstc10x6SrgbBlock : return 4; + case Format::eAstc10x8UnormBlock : return 4; + case Format::eAstc10x8SrgbBlock : return 4; + case Format::eAstc10x10UnormBlock : return 4; + case Format::eAstc10x10SrgbBlock : return 4; + case Format::eAstc12x10UnormBlock : return 4; + case Format::eAstc12x10SrgbBlock : return 4; + case Format::eAstc12x12UnormBlock : return 4; + case Format::eAstc12x12SrgbBlock : return 4; + case Format::eG8B8G8R8422Unorm : return 4; + case Format::eB8G8R8G8422Unorm : return 4; + case Format::eG8B8R83Plane420Unorm : return 3; + case Format::eG8B8R82Plane420Unorm : return 3; + case Format::eG8B8R83Plane422Unorm : return 3; + case Format::eG8B8R82Plane422Unorm : return 3; + case Format::eG8B8R83Plane444Unorm : return 3; + case Format::eR10X6UnormPack16 : return 1; + case Format::eR10X6G10X6Unorm2Pack16 : return 2; + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16 : return 4; + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16 : return 4; + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16 : return 4; + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16 : return 3; + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16 : return 3; + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16 : return 3; + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16 : return 3; + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16 : return 3; + case Format::eR12X4UnormPack16 : return 1; + case Format::eR12X4G12X4Unorm2Pack16 : return 2; + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16 : return 4; + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16 : return 4; + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16 : return 4; + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16 : return 3; + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16 : return 3; + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16 : return 3; + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16 : return 3; + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16 : return 3; + case Format::eG16B16G16R16422Unorm : return 4; + case Format::eB16G16R16G16422Unorm : return 4; + case Format::eG16B16R163Plane420Unorm : return 3; + case Format::eG16B16R162Plane420Unorm : return 3; + case Format::eG16B16R163Plane422Unorm : return 3; + case Format::eG16B16R162Plane422Unorm : return 3; + case Format::eG16B16R163Plane444Unorm : return 3; + case Format::eG8B8R82Plane444Unorm : return 3; + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16 : return 3; + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16 : return 3; + case Format::eG16B16R162Plane444Unorm : return 3; + case Format::eA4R4G4B4UnormPack16 : return 4; + case Format::eA4B4G4R4UnormPack16 : return 4; + case Format::eAstc4x4SfloatBlock : return 4; + case Format::eAstc5x4SfloatBlock : return 4; + case Format::eAstc5x5SfloatBlock : return 4; + case Format::eAstc6x5SfloatBlock : return 4; + case Format::eAstc6x6SfloatBlock : return 4; + case Format::eAstc8x5SfloatBlock : return 4; + case Format::eAstc8x6SfloatBlock : return 4; + case Format::eAstc8x8SfloatBlock : return 4; + case Format::eAstc10x5SfloatBlock : return 4; + case Format::eAstc10x6SfloatBlock : return 4; + case Format::eAstc10x8SfloatBlock : return 4; + case Format::eAstc10x10SfloatBlock : return 4; + case Format::eAstc12x10SfloatBlock : return 4; + case Format::eAstc12x12SfloatBlock : return 4; + case Format::eA1B5G5R5UnormPack16 : return 4; + case Format::eA8Unorm : return 1; + case Format::ePvrtc12BppUnormBlockIMG : return 4; + case Format::ePvrtc14BppUnormBlockIMG : return 4; + case Format::ePvrtc22BppUnormBlockIMG : return 4; + case Format::ePvrtc24BppUnormBlockIMG : return 4; + case Format::ePvrtc12BppSrgbBlockIMG : return 4; + case Format::ePvrtc14BppSrgbBlockIMG : return 4; + case Format::ePvrtc22BppSrgbBlockIMG : return 4; + case Format::ePvrtc24BppSrgbBlockIMG : return 4; + case Format::eAstc3x3x3UnormBlockEXT : return 4; + case Format::eAstc3x3x3SrgbBlockEXT : return 4; + case Format::eAstc3x3x3SfloatBlockEXT : return 4; + case Format::eAstc4x3x3UnormBlockEXT : return 4; + case Format::eAstc4x3x3SrgbBlockEXT : return 4; + case Format::eAstc4x3x3SfloatBlockEXT : return 4; + case Format::eAstc4x4x3UnormBlockEXT : return 4; + case Format::eAstc4x4x3SrgbBlockEXT : return 4; + case Format::eAstc4x4x3SfloatBlockEXT : return 4; + case Format::eAstc4x4x4UnormBlockEXT : return 4; + case Format::eAstc4x4x4SrgbBlockEXT : return 4; + case Format::eAstc4x4x4SfloatBlockEXT : return 4; + case Format::eAstc5x4x4UnormBlockEXT : return 4; + case Format::eAstc5x4x4SrgbBlockEXT : return 4; + case Format::eAstc5x4x4SfloatBlockEXT : return 4; + case Format::eAstc5x5x4UnormBlockEXT : return 4; + case Format::eAstc5x5x4SrgbBlockEXT : return 4; + case Format::eAstc5x5x4SfloatBlockEXT : return 4; + case Format::eAstc5x5x5UnormBlockEXT : return 4; + case Format::eAstc5x5x5SrgbBlockEXT : return 4; + case Format::eAstc5x5x5SfloatBlockEXT : return 4; + case Format::eAstc6x5x5UnormBlockEXT : return 4; + case Format::eAstc6x5x5SrgbBlockEXT : return 4; + case Format::eAstc6x5x5SfloatBlockEXT : return 4; + case Format::eAstc6x6x5UnormBlockEXT : return 4; + case Format::eAstc6x6x5SrgbBlockEXT : return 4; + case Format::eAstc6x6x5SfloatBlockEXT : return 4; + case Format::eAstc6x6x6UnormBlockEXT : return 4; + case Format::eAstc6x6x6SrgbBlockEXT : return 4; + case Format::eAstc6x6x6SfloatBlockEXT : return 4; + case Format::eR8BoolARM : return 1; + case Format::eR16SfloatFpencodingBfloat16ARM : return 1; + case Format::eR8SfloatFpencodingFloat8E4M3ARM : return 1; + case Format::eR8SfloatFpencodingFloat8E5M2ARM : return 1; + case Format::eR16G16Sfixed5NV : return 2; + case Format::eR10X6UintPack16ARM : return 1; + case Format::eR10X6G10X6Uint2Pack16ARM : return 2; + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM : return 4; + case Format::eR12X4UintPack16ARM : return 1; + case Format::eR12X4G12X4Uint2Pack16ARM : return 2; + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM : return 4; + case Format::eR14X2UintPack16ARM : return 1; + case Format::eR14X2G14X2Uint2Pack16ARM : return 2; + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM : return 4; + case Format::eR14X2UnormPack16ARM : return 1; + case Format::eR14X2G14X2Unorm2Pack16ARM : return 2; + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM : return 4; + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: return 3; + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: return 3; + + default: return 0; + } + } + + // The name of the component + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 char const * componentName( Format format, uint8_t component ) + { + switch ( format ) + { + case Format::eR4G4UnormPack8: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR4G4B4A4UnormPack16: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB4G4R4A4UnormPack16: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR5G6B5UnormPack16: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB5G6R5UnormPack16: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR5G5B5A1UnormPack16: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB5G5R5A1UnormPack16: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA1R5G5B5UnormPack16: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "R"; + case 2 : return "G"; + case 3 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Unorm: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Snorm: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Uscaled: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Sscaled: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Uint: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Sint: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Srgb: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Unorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Snorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Uscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Sscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Srgb: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Unorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Snorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Uscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Sscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Srgb: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Unorm: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Snorm: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Uscaled: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Sscaled: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Uint: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Sint: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Srgb: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Unorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Snorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Uscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Sscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Srgb: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Unorm: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Snorm: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Uscaled: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Sscaled: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Uint: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Sint: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Srgb: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8UnormPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8SnormPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8UscaledPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8SscaledPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8UintPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8SintPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8SrgbPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10UnormPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "R"; + case 2 : return "G"; + case 3 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10SnormPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "R"; + case 2 : return "G"; + case 3 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10UscaledPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "R"; + case 2 : return "G"; + case 3 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10SscaledPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "R"; + case 2 : return "G"; + case 3 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10UintPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "R"; + case 2 : return "G"; + case 3 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10SintPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "R"; + case 2 : return "G"; + case 3 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10UnormPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10SnormPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10UscaledPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10SscaledPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10UintPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10SintPack32: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Unorm: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Snorm: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Uscaled: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Sscaled: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Uint: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Sint: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Sfloat: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Unorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Snorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Uscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Sscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Sfloat: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Unorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Snorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Uscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Sscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Sfloat: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Unorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Snorm: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Uscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Sscaled: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Sfloat: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32Uint: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32Sint: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32Sfloat: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32Sfloat: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32Sfloat: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32A32Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32A32Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32A32Sfloat: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64Uint: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64Sint: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64Sfloat: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64Sfloat: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64Sfloat: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64A64Uint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64A64Sint: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64A64Sfloat: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB10G11R11UfloatPack32: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eE5B9G9R9UfloatPack32: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eD16Unorm: + switch ( component ) + { + case 0 : return "D"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eX8D24UnormPack32: + switch ( component ) + { + case 0 : return "D"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eD32Sfloat: + switch ( component ) + { + case 0 : return "D"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eS8Uint: + switch ( component ) + { + case 0 : return "S"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eD16UnormS8Uint: + switch ( component ) + { + case 0 : return "D"; + case 1 : return "S"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eD24UnormS8Uint: + switch ( component ) + { + case 0 : return "D"; + case 1 : return "S"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eD32SfloatS8Uint: + switch ( component ) + { + case 0 : return "D"; + case 1 : return "S"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc1RgbUnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc1RgbSrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc1RgbaUnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc1RgbaSrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc2UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc2SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc3UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc3SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc4UnormBlock: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc4SnormBlock: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc5UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc5SnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc6HUfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc6HSfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc7UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc7SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8A1UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8A1SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8A8UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8A8SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEacR11UnormBlock: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEacR11SnormBlock: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEacR11G11UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEacR11G11SnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x5UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x5SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x6UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x6SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x8UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x8SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x5UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x5SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x6UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x6SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x8UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x8SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x10UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x10SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x10UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x10SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x12UnormBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x12SrgbBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8G8R8422Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8G8422Unorm: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R83Plane420Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R82Plane420Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R83Plane422Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R82Plane422Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R83Plane444Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6UnormPack16: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6G10X6Unorm2Pack16: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4UnormPack16: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4G12X4Unorm2Pack16: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16G16R16422Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB16G16R16G16422Unorm: + switch ( component ) + { + case 0 : return "B"; + case 1 : return "G"; + case 2 : return "R"; + case 3 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R163Plane420Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R162Plane420Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R163Plane422Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R162Plane422Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R163Plane444Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R82Plane444Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R162Plane444Unorm: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA4R4G4B4UnormPack16: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "R"; + case 2 : return "G"; + case 3 : return "B"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA4B4G4R4UnormPack16: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x5SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x6SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x8SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x5SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x6SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x8SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x10SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x10SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x12SfloatBlock: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA1B5G5R5UnormPack16: + switch ( component ) + { + case 0 : return "A"; + case 1 : return "B"; + case 2 : return "G"; + case 3 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8Unorm: + switch ( component ) + { + case 0 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc12BppUnormBlockIMG: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc14BppUnormBlockIMG: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc22BppUnormBlockIMG: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc24BppUnormBlockIMG: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc12BppSrgbBlockIMG: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc14BppSrgbBlockIMG: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc22BppSrgbBlockIMG: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc24BppSrgbBlockIMG: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc3x3x3UnormBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc3x3x3SrgbBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc3x3x3SfloatBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x3x3UnormBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x3x3SrgbBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x3x3SfloatBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x3UnormBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x3SrgbBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x3SfloatBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x4UnormBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x4SrgbBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x4SfloatBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4x4UnormBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4x4SrgbBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4x4SfloatBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x4UnormBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x4SrgbBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x4SfloatBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x5UnormBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x5SrgbBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x5SfloatBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5x5UnormBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5x5SrgbBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5x5SfloatBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x5UnormBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x5SrgbBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x5SfloatBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x6UnormBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x6SrgbBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x6SfloatBlockEXT: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8BoolARM: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16SfloatFpencodingBfloat16ARM: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8SfloatFpencodingFloat8E4M3ARM: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8SfloatFpencodingFloat8E5M2ARM: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Sfixed5NV: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6UintPack16ARM: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6G10X6Uint2Pack16ARM: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4UintPack16ARM: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4G12X4Uint2Pack16ARM: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2UintPack16ARM: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2G14X2Uint2Pack16ARM: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2UnormPack16ARM: + switch ( component ) + { + case 0 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2G14X2Unorm2Pack16ARM: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM: + switch ( component ) + { + case 0 : return "R"; + case 1 : return "G"; + case 2 : return "B"; + case 3 : return "A"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: + switch ( component ) + { + case 0 : return "G"; + case 1 : return "B"; + case 2 : return "R"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + + default: return ""; + } + } + + // The numeric format of the component + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 char const * componentNumericFormat( Format format, uint8_t component ) + { + switch ( format ) + { + case Format::eR4G4UnormPack8: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR4G4B4A4UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB4G4R4A4UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR5G6B5UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB5G6R5UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR5G5B5A1UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB5G5R5A1UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA1R5G5B5UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Snorm: + switch ( component ) + { + case 0 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Uscaled: + switch ( component ) + { + case 0 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Sscaled: + switch ( component ) + { + case 0 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Uint: + switch ( component ) + { + case 0 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Sint: + switch ( component ) + { + case 0 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8Srgb: + switch ( component ) + { + case 0 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Snorm: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Uscaled: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Sscaled: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8Srgb: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Snorm: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + case 2 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Uscaled: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + case 2 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Sscaled: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + case 2 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8Srgb: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Snorm: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + case 2 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Uscaled: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + case 2 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Sscaled: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + case 2 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8Srgb: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Snorm: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + case 2 : return "SNORM"; + case 3 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Uscaled: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + case 2 : return "USCALED"; + case 3 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Sscaled: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + case 2 : return "SSCALED"; + case 3 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + case 3 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8G8B8A8Srgb: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Snorm: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + case 2 : return "SNORM"; + case 3 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Uscaled: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + case 2 : return "USCALED"; + case 3 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Sscaled: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + case 2 : return "SSCALED"; + case 3 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + case 3 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8A8Srgb: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8UnormPack32: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8SnormPack32: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + case 2 : return "SNORM"; + case 3 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8UscaledPack32: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + case 2 : return "USCALED"; + case 3 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8SscaledPack32: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + case 2 : return "SSCALED"; + case 3 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8UintPack32: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8SintPack32: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + case 3 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8B8G8R8SrgbPack32: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10UnormPack32: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10SnormPack32: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + case 2 : return "SNORM"; + case 3 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10UscaledPack32: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + case 2 : return "USCALED"; + case 3 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10SscaledPack32: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + case 2 : return "SSCALED"; + case 3 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10UintPack32: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2R10G10B10SintPack32: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + case 3 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10UnormPack32: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10SnormPack32: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + case 2 : return "SNORM"; + case 3 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10UscaledPack32: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + case 2 : return "USCALED"; + case 3 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10SscaledPack32: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + case 2 : return "SSCALED"; + case 3 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10UintPack32: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA2B10G10R10SintPack32: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + case 3 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Snorm: + switch ( component ) + { + case 0 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Uscaled: + switch ( component ) + { + case 0 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Sscaled: + switch ( component ) + { + case 0 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Uint: + switch ( component ) + { + case 0 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Sint: + switch ( component ) + { + case 0 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Snorm: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Uscaled: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Sscaled: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Snorm: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + case 2 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Uscaled: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + case 2 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Sscaled: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + case 2 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Snorm: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + case 2 : return "SNORM"; + case 3 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Uscaled: + switch ( component ) + { + case 0 : return "USCALED"; + case 1 : return "USCALED"; + case 2 : return "USCALED"; + case 3 : return "USCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Sscaled: + switch ( component ) + { + case 0 : return "SSCALED"; + case 1 : return "SSCALED"; + case 2 : return "SSCALED"; + case 3 : return "SSCALED"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + case 3 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16B16A16Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32Uint: + switch ( component ) + { + case 0 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32Sint: + switch ( component ) + { + case 0 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32A32Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32A32Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + case 3 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR32G32B32A32Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64Uint: + switch ( component ) + { + case 0 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64Sint: + switch ( component ) + { + case 0 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64A64Uint: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64A64Sint: + switch ( component ) + { + case 0 : return "SINT"; + case 1 : return "SINT"; + case 2 : return "SINT"; + case 3 : return "SINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR64G64B64A64Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB10G11R11UfloatPack32: + switch ( component ) + { + case 0 : return "UFLOAT"; + case 1 : return "UFLOAT"; + case 2 : return "UFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eE5B9G9R9UfloatPack32: + switch ( component ) + { + case 0 : return "UFLOAT"; + case 1 : return "UFLOAT"; + case 2 : return "UFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eD16Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eX8D24UnormPack32: + switch ( component ) + { + case 0 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eD32Sfloat: + switch ( component ) + { + case 0 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eS8Uint: + switch ( component ) + { + case 0 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eD16UnormS8Uint: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eD24UnormS8Uint: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eD32SfloatS8Uint: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc1RgbUnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc1RgbSrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc1RgbaUnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc1RgbaSrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc2UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc2SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc3UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc3SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc4UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc4SnormBlock: + switch ( component ) + { + case 0 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc5UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc5SnormBlock: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc6HUfloatBlock: + switch ( component ) + { + case 0 : return "UFLOAT"; + case 1 : return "UFLOAT"; + case 2 : return "UFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc6HSfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc7UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eBc7SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8A1UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8A1SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8A8UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEtc2R8G8B8A8SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEacR11UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEacR11SnormBlock: + switch ( component ) + { + case 0 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEacR11G11UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eEacR11G11SnormBlock: + switch ( component ) + { + case 0 : return "SNORM"; + case 1 : return "SNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x5UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x5SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x6UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x6SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x8UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x8SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x5UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x5SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x6UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x6SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x8UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x8SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x10UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x10SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x10UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x10SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x12UnormBlock: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x12SrgbBlock: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8G8R8422Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB8G8R8G8422Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R83Plane420Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R82Plane420Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R83Plane422Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R82Plane422Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R83Plane444Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6G10X6Unorm2Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4G12X4Unorm2Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16G16R16422Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eB16G16R16G16422Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R163Plane420Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R162Plane420Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R163Plane422Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R162Plane422Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R163Plane444Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG8B8R82Plane444Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG16B16R162Plane444Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA4R4G4B4UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA4B4G4R4UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x5SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x6SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc8x8SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x5SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x6SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x8SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc10x10SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x10SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc12x12SfloatBlock: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA1B5G5R5UnormPack16: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eA8Unorm: + switch ( component ) + { + case 0 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc12BppUnormBlockIMG: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc14BppUnormBlockIMG: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc22BppUnormBlockIMG: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc24BppUnormBlockIMG: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc12BppSrgbBlockIMG: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc14BppSrgbBlockIMG: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc22BppSrgbBlockIMG: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::ePvrtc24BppSrgbBlockIMG: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc3x3x3UnormBlockEXT: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc3x3x3SrgbBlockEXT: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc3x3x3SfloatBlockEXT: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x3x3UnormBlockEXT: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x3x3SrgbBlockEXT: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x3x3SfloatBlockEXT: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x3UnormBlockEXT: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x3SrgbBlockEXT: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x3SfloatBlockEXT: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x4UnormBlockEXT: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x4SrgbBlockEXT: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc4x4x4SfloatBlockEXT: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4x4UnormBlockEXT: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4x4SrgbBlockEXT: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x4x4SfloatBlockEXT: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x4UnormBlockEXT: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x4SrgbBlockEXT: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x4SfloatBlockEXT: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x5UnormBlockEXT: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x5SrgbBlockEXT: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc5x5x5SfloatBlockEXT: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5x5UnormBlockEXT: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5x5SrgbBlockEXT: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x5x5SfloatBlockEXT: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x5UnormBlockEXT: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x5SrgbBlockEXT: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x5SfloatBlockEXT: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x6UnormBlockEXT: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x6SrgbBlockEXT: + switch ( component ) + { + case 0 : return "SRGB"; + case 1 : return "SRGB"; + case 2 : return "SRGB"; + case 3 : return "SRGB"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eAstc6x6x6SfloatBlockEXT: + switch ( component ) + { + case 0 : return "SFLOAT"; + case 1 : return "SFLOAT"; + case 2 : return "SFLOAT"; + case 3 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8BoolARM: + switch ( component ) + { + case 0 : return "BOOL"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16SfloatFpencodingBfloat16ARM: + switch ( component ) + { + case 0 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8SfloatFpencodingFloat8E4M3ARM: + switch ( component ) + { + case 0 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR8SfloatFpencodingFloat8E5M2ARM: + switch ( component ) + { + case 0 : return "SFLOAT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR16G16Sfixed5NV: + switch ( component ) + { + case 0 : return "SFIXED5"; + case 1 : return "SFIXED5"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6UintPack16ARM: + switch ( component ) + { + case 0 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6G10X6Uint2Pack16ARM: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4UintPack16ARM: + switch ( component ) + { + case 0 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4G12X4Uint2Pack16ARM: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2UintPack16ARM: + switch ( component ) + { + case 0 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2G14X2Uint2Pack16ARM: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM: + switch ( component ) + { + case 0 : return "UINT"; + case 1 : return "UINT"; + case 2 : return "UINT"; + case 3 : return "UINT"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2UnormPack16ARM: + switch ( component ) + { + case 0 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2G14X2Unorm2Pack16ARM: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + case 3 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: + switch ( component ) + { + case 0 : return "UNORM"; + case 1 : return "UNORM"; + case 2 : return "UNORM"; + default: VULKAN_HPP_ASSERT( false ); return ""; + } + + default: return ""; + } + } + + // The plane this component lies in. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t componentPlaneIndex( Format format, uint8_t component ) + { + switch ( format ) + { + case Format::eG8B8R83Plane420Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R82Plane420Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R83Plane422Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R82Plane422Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R83Plane444Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R163Plane420Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R162Plane420Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R163Plane422Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R162Plane422Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R163Plane444Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG8B8R82Plane444Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG16B16R162Plane444Unorm: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: + switch ( component ) + { + case 0 : return 0; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 0; + } + + default: return 0; + } + } + + // True, if the components of this format are compressed, otherwise false. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 bool componentsAreCompressed( Format format ) + { + switch ( format ) + { + case Format::eBc1RgbUnormBlock: + case Format::eBc1RgbSrgbBlock: + case Format::eBc1RgbaUnormBlock: + case Format::eBc1RgbaSrgbBlock: + case Format::eBc2UnormBlock: + case Format::eBc2SrgbBlock: + case Format::eBc3UnormBlock: + case Format::eBc3SrgbBlock: + case Format::eBc4UnormBlock: + case Format::eBc4SnormBlock: + case Format::eBc5UnormBlock: + case Format::eBc5SnormBlock: + case Format::eBc6HUfloatBlock: + case Format::eBc6HSfloatBlock: + case Format::eBc7UnormBlock: + case Format::eBc7SrgbBlock: + case Format::eEtc2R8G8B8UnormBlock: + case Format::eEtc2R8G8B8SrgbBlock: + case Format::eEtc2R8G8B8A1UnormBlock: + case Format::eEtc2R8G8B8A1SrgbBlock: + case Format::eEtc2R8G8B8A8UnormBlock: + case Format::eEtc2R8G8B8A8SrgbBlock: + case Format::eAstc4x4UnormBlock: + case Format::eAstc4x4SrgbBlock: + case Format::eAstc5x4UnormBlock: + case Format::eAstc5x4SrgbBlock: + case Format::eAstc5x5UnormBlock: + case Format::eAstc5x5SrgbBlock: + case Format::eAstc6x5UnormBlock: + case Format::eAstc6x5SrgbBlock: + case Format::eAstc6x6UnormBlock: + case Format::eAstc6x6SrgbBlock: + case Format::eAstc8x5UnormBlock: + case Format::eAstc8x5SrgbBlock: + case Format::eAstc8x6UnormBlock: + case Format::eAstc8x6SrgbBlock: + case Format::eAstc8x8UnormBlock: + case Format::eAstc8x8SrgbBlock: + case Format::eAstc10x5UnormBlock: + case Format::eAstc10x5SrgbBlock: + case Format::eAstc10x6UnormBlock: + case Format::eAstc10x6SrgbBlock: + case Format::eAstc10x8UnormBlock: + case Format::eAstc10x8SrgbBlock: + case Format::eAstc10x10UnormBlock: + case Format::eAstc10x10SrgbBlock: + case Format::eAstc12x10UnormBlock: + case Format::eAstc12x10SrgbBlock: + case Format::eAstc12x12UnormBlock: + case Format::eAstc12x12SrgbBlock: + case Format::eAstc4x4SfloatBlock: + case Format::eAstc5x4SfloatBlock: + case Format::eAstc5x5SfloatBlock: + case Format::eAstc6x5SfloatBlock: + case Format::eAstc6x6SfloatBlock: + case Format::eAstc8x5SfloatBlock: + case Format::eAstc8x6SfloatBlock: + case Format::eAstc8x8SfloatBlock: + case Format::eAstc10x5SfloatBlock: + case Format::eAstc10x6SfloatBlock: + case Format::eAstc10x8SfloatBlock: + case Format::eAstc10x10SfloatBlock: + case Format::eAstc12x10SfloatBlock: + case Format::eAstc12x12SfloatBlock: + case Format::ePvrtc12BppUnormBlockIMG: + case Format::ePvrtc14BppUnormBlockIMG: + case Format::ePvrtc22BppUnormBlockIMG: + case Format::ePvrtc24BppUnormBlockIMG: + case Format::ePvrtc12BppSrgbBlockIMG: + case Format::ePvrtc14BppSrgbBlockIMG: + case Format::ePvrtc22BppSrgbBlockIMG: + case Format::ePvrtc24BppSrgbBlockIMG: + case Format::eAstc3x3x3UnormBlockEXT: + case Format::eAstc3x3x3SrgbBlockEXT: + case Format::eAstc3x3x3SfloatBlockEXT: + case Format::eAstc4x3x3UnormBlockEXT: + case Format::eAstc4x3x3SrgbBlockEXT: + case Format::eAstc4x3x3SfloatBlockEXT: + case Format::eAstc4x4x3UnormBlockEXT: + case Format::eAstc4x4x3SrgbBlockEXT: + case Format::eAstc4x4x3SfloatBlockEXT: + case Format::eAstc4x4x4UnormBlockEXT: + case Format::eAstc4x4x4SrgbBlockEXT: + case Format::eAstc4x4x4SfloatBlockEXT: + case Format::eAstc5x4x4UnormBlockEXT: + case Format::eAstc5x4x4SrgbBlockEXT: + case Format::eAstc5x4x4SfloatBlockEXT: + case Format::eAstc5x5x4UnormBlockEXT: + case Format::eAstc5x5x4SrgbBlockEXT: + case Format::eAstc5x5x4SfloatBlockEXT: + case Format::eAstc5x5x5UnormBlockEXT: + case Format::eAstc5x5x5SrgbBlockEXT: + case Format::eAstc5x5x5SfloatBlockEXT: + case Format::eAstc6x5x5UnormBlockEXT: + case Format::eAstc6x5x5SrgbBlockEXT: + case Format::eAstc6x5x5SfloatBlockEXT: + case Format::eAstc6x6x5UnormBlockEXT: + case Format::eAstc6x6x5SrgbBlockEXT: + case Format::eAstc6x6x5SfloatBlockEXT: + case Format::eAstc6x6x6UnormBlockEXT: + case Format::eAstc6x6x6SrgbBlockEXT: + case Format::eAstc6x6x6SfloatBlockEXT: return true; + default : return false; + } + } + + // A textual description of the compression scheme, or an empty string if it is not compressed + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 char const * compressionScheme( Format format ) + { + switch ( format ) + { + case Format::eBc1RgbUnormBlock : return "BC"; + case Format::eBc1RgbSrgbBlock : return "BC"; + case Format::eBc1RgbaUnormBlock : return "BC"; + case Format::eBc1RgbaSrgbBlock : return "BC"; + case Format::eBc2UnormBlock : return "BC"; + case Format::eBc2SrgbBlock : return "BC"; + case Format::eBc3UnormBlock : return "BC"; + case Format::eBc3SrgbBlock : return "BC"; + case Format::eBc4UnormBlock : return "BC"; + case Format::eBc4SnormBlock : return "BC"; + case Format::eBc5UnormBlock : return "BC"; + case Format::eBc5SnormBlock : return "BC"; + case Format::eBc6HUfloatBlock : return "BC"; + case Format::eBc6HSfloatBlock : return "BC"; + case Format::eBc7UnormBlock : return "BC"; + case Format::eBc7SrgbBlock : return "BC"; + case Format::eEtc2R8G8B8UnormBlock : return "ETC2"; + case Format::eEtc2R8G8B8SrgbBlock : return "ETC2"; + case Format::eEtc2R8G8B8A1UnormBlock : return "ETC2"; + case Format::eEtc2R8G8B8A1SrgbBlock : return "ETC2"; + case Format::eEtc2R8G8B8A8UnormBlock : return "ETC2"; + case Format::eEtc2R8G8B8A8SrgbBlock : return "ETC2"; + case Format::eEacR11UnormBlock : return "EAC"; + case Format::eEacR11SnormBlock : return "EAC"; + case Format::eEacR11G11UnormBlock : return "EAC"; + case Format::eEacR11G11SnormBlock : return "EAC"; + case Format::eAstc4x4UnormBlock : return "ASTC LDR"; + case Format::eAstc4x4SrgbBlock : return "ASTC LDR"; + case Format::eAstc5x4UnormBlock : return "ASTC LDR"; + case Format::eAstc5x4SrgbBlock : return "ASTC LDR"; + case Format::eAstc5x5UnormBlock : return "ASTC LDR"; + case Format::eAstc5x5SrgbBlock : return "ASTC LDR"; + case Format::eAstc6x5UnormBlock : return "ASTC LDR"; + case Format::eAstc6x5SrgbBlock : return "ASTC LDR"; + case Format::eAstc6x6UnormBlock : return "ASTC LDR"; + case Format::eAstc6x6SrgbBlock : return "ASTC LDR"; + case Format::eAstc8x5UnormBlock : return "ASTC LDR"; + case Format::eAstc8x5SrgbBlock : return "ASTC LDR"; + case Format::eAstc8x6UnormBlock : return "ASTC LDR"; + case Format::eAstc8x6SrgbBlock : return "ASTC LDR"; + case Format::eAstc8x8UnormBlock : return "ASTC LDR"; + case Format::eAstc8x8SrgbBlock : return "ASTC LDR"; + case Format::eAstc10x5UnormBlock : return "ASTC LDR"; + case Format::eAstc10x5SrgbBlock : return "ASTC LDR"; + case Format::eAstc10x6UnormBlock : return "ASTC LDR"; + case Format::eAstc10x6SrgbBlock : return "ASTC LDR"; + case Format::eAstc10x8UnormBlock : return "ASTC LDR"; + case Format::eAstc10x8SrgbBlock : return "ASTC LDR"; + case Format::eAstc10x10UnormBlock : return "ASTC LDR"; + case Format::eAstc10x10SrgbBlock : return "ASTC LDR"; + case Format::eAstc12x10UnormBlock : return "ASTC LDR"; + case Format::eAstc12x10SrgbBlock : return "ASTC LDR"; + case Format::eAstc12x12UnormBlock : return "ASTC LDR"; + case Format::eAstc12x12SrgbBlock : return "ASTC LDR"; + case Format::eAstc4x4SfloatBlock : return "ASTC HDR"; + case Format::eAstc5x4SfloatBlock : return "ASTC HDR"; + case Format::eAstc5x5SfloatBlock : return "ASTC HDR"; + case Format::eAstc6x5SfloatBlock : return "ASTC HDR"; + case Format::eAstc6x6SfloatBlock : return "ASTC HDR"; + case Format::eAstc8x5SfloatBlock : return "ASTC HDR"; + case Format::eAstc8x6SfloatBlock : return "ASTC HDR"; + case Format::eAstc8x8SfloatBlock : return "ASTC HDR"; + case Format::eAstc10x5SfloatBlock : return "ASTC HDR"; + case Format::eAstc10x6SfloatBlock : return "ASTC HDR"; + case Format::eAstc10x8SfloatBlock : return "ASTC HDR"; + case Format::eAstc10x10SfloatBlock : return "ASTC HDR"; + case Format::eAstc12x10SfloatBlock : return "ASTC HDR"; + case Format::eAstc12x12SfloatBlock : return "ASTC HDR"; + case Format::ePvrtc12BppUnormBlockIMG: return "PVRTC"; + case Format::ePvrtc14BppUnormBlockIMG: return "PVRTC"; + case Format::ePvrtc22BppUnormBlockIMG: return "PVRTC"; + case Format::ePvrtc24BppUnormBlockIMG: return "PVRTC"; + case Format::ePvrtc12BppSrgbBlockIMG : return "PVRTC"; + case Format::ePvrtc14BppSrgbBlockIMG : return "PVRTC"; + case Format::ePvrtc22BppSrgbBlockIMG : return "PVRTC"; + case Format::ePvrtc24BppSrgbBlockIMG : return "PVRTC"; + case Format::eAstc3x3x3UnormBlockEXT : return "ASTC LDR"; + case Format::eAstc3x3x3SrgbBlockEXT : return "ASTC LDR"; + case Format::eAstc3x3x3SfloatBlockEXT: return "ASTC HDR"; + case Format::eAstc4x3x3UnormBlockEXT : return "ASTC LDR"; + case Format::eAstc4x3x3SrgbBlockEXT : return "ASTC LDR"; + case Format::eAstc4x3x3SfloatBlockEXT: return "ASTC HDR"; + case Format::eAstc4x4x3UnormBlockEXT : return "ASTC LDR"; + case Format::eAstc4x4x3SrgbBlockEXT : return "ASTC LDR"; + case Format::eAstc4x4x3SfloatBlockEXT: return "ASTC HDR"; + case Format::eAstc4x4x4UnormBlockEXT : return "ASTC LDR"; + case Format::eAstc4x4x4SrgbBlockEXT : return "ASTC LDR"; + case Format::eAstc4x4x4SfloatBlockEXT: return "ASTC HDR"; + case Format::eAstc5x4x4UnormBlockEXT : return "ASTC LDR"; + case Format::eAstc5x4x4SrgbBlockEXT : return "ASTC LDR"; + case Format::eAstc5x4x4SfloatBlockEXT: return "ASTC HDR"; + case Format::eAstc5x5x4UnormBlockEXT : return "ASTC LDR"; + case Format::eAstc5x5x4SrgbBlockEXT : return "ASTC LDR"; + case Format::eAstc5x5x4SfloatBlockEXT: return "ASTC HDR"; + case Format::eAstc5x5x5UnormBlockEXT : return "ASTC LDR"; + case Format::eAstc5x5x5SrgbBlockEXT : return "ASTC LDR"; + case Format::eAstc5x5x5SfloatBlockEXT: return "ASTC HDR"; + case Format::eAstc6x5x5UnormBlockEXT : return "ASTC LDR"; + case Format::eAstc6x5x5SrgbBlockEXT : return "ASTC LDR"; + case Format::eAstc6x5x5SfloatBlockEXT: return "ASTC HDR"; + case Format::eAstc6x6x5UnormBlockEXT : return "ASTC LDR"; + case Format::eAstc6x6x5SrgbBlockEXT : return "ASTC LDR"; + case Format::eAstc6x6x5SfloatBlockEXT: return "ASTC HDR"; + case Format::eAstc6x6x6UnormBlockEXT : return "ASTC LDR"; + case Format::eAstc6x6x6SrgbBlockEXT : return "ASTC LDR"; + case Format::eAstc6x6x6SfloatBlockEXT: return "ASTC HDR"; + + default: return ""; + } + } + + // Get all formats + VULKAN_HPP_INLINE std::vector const & getAllFormats() + { + static std::vector allFormats = { Format::eR4G4UnormPack8, + Format::eR4G4B4A4UnormPack16, + Format::eB4G4R4A4UnormPack16, + Format::eR5G6B5UnormPack16, + Format::eB5G6R5UnormPack16, + Format::eR5G5B5A1UnormPack16, + Format::eB5G5R5A1UnormPack16, + Format::eA1R5G5B5UnormPack16, + Format::eR8Unorm, + Format::eR8Snorm, + Format::eR8Uscaled, + Format::eR8Sscaled, + Format::eR8Uint, + Format::eR8Sint, + Format::eR8Srgb, + Format::eR8G8Unorm, + Format::eR8G8Snorm, + Format::eR8G8Uscaled, + Format::eR8G8Sscaled, + Format::eR8G8Uint, + Format::eR8G8Sint, + Format::eR8G8Srgb, + Format::eR8G8B8Unorm, + Format::eR8G8B8Snorm, + Format::eR8G8B8Uscaled, + Format::eR8G8B8Sscaled, + Format::eR8G8B8Uint, + Format::eR8G8B8Sint, + Format::eR8G8B8Srgb, + Format::eB8G8R8Unorm, + Format::eB8G8R8Snorm, + Format::eB8G8R8Uscaled, + Format::eB8G8R8Sscaled, + Format::eB8G8R8Uint, + Format::eB8G8R8Sint, + Format::eB8G8R8Srgb, + Format::eR8G8B8A8Unorm, + Format::eR8G8B8A8Snorm, + Format::eR8G8B8A8Uscaled, + Format::eR8G8B8A8Sscaled, + Format::eR8G8B8A8Uint, + Format::eR8G8B8A8Sint, + Format::eR8G8B8A8Srgb, + Format::eB8G8R8A8Unorm, + Format::eB8G8R8A8Snorm, + Format::eB8G8R8A8Uscaled, + Format::eB8G8R8A8Sscaled, + Format::eB8G8R8A8Uint, + Format::eB8G8R8A8Sint, + Format::eB8G8R8A8Srgb, + Format::eA8B8G8R8UnormPack32, + Format::eA8B8G8R8SnormPack32, + Format::eA8B8G8R8UscaledPack32, + Format::eA8B8G8R8SscaledPack32, + Format::eA8B8G8R8UintPack32, + Format::eA8B8G8R8SintPack32, + Format::eA8B8G8R8SrgbPack32, + Format::eA2R10G10B10UnormPack32, + Format::eA2R10G10B10SnormPack32, + Format::eA2R10G10B10UscaledPack32, + Format::eA2R10G10B10SscaledPack32, + Format::eA2R10G10B10UintPack32, + Format::eA2R10G10B10SintPack32, + Format::eA2B10G10R10UnormPack32, + Format::eA2B10G10R10SnormPack32, + Format::eA2B10G10R10UscaledPack32, + Format::eA2B10G10R10SscaledPack32, + Format::eA2B10G10R10UintPack32, + Format::eA2B10G10R10SintPack32, + Format::eR16Unorm, + Format::eR16Snorm, + Format::eR16Uscaled, + Format::eR16Sscaled, + Format::eR16Uint, + Format::eR16Sint, + Format::eR16Sfloat, + Format::eR16G16Unorm, + Format::eR16G16Snorm, + Format::eR16G16Uscaled, + Format::eR16G16Sscaled, + Format::eR16G16Uint, + Format::eR16G16Sint, + Format::eR16G16Sfloat, + Format::eR16G16B16Unorm, + Format::eR16G16B16Snorm, + Format::eR16G16B16Uscaled, + Format::eR16G16B16Sscaled, + Format::eR16G16B16Uint, + Format::eR16G16B16Sint, + Format::eR16G16B16Sfloat, + Format::eR16G16B16A16Unorm, + Format::eR16G16B16A16Snorm, + Format::eR16G16B16A16Uscaled, + Format::eR16G16B16A16Sscaled, + Format::eR16G16B16A16Uint, + Format::eR16G16B16A16Sint, + Format::eR16G16B16A16Sfloat, + Format::eR32Uint, + Format::eR32Sint, + Format::eR32Sfloat, + Format::eR32G32Uint, + Format::eR32G32Sint, + Format::eR32G32Sfloat, + Format::eR32G32B32Uint, + Format::eR32G32B32Sint, + Format::eR32G32B32Sfloat, + Format::eR32G32B32A32Uint, + Format::eR32G32B32A32Sint, + Format::eR32G32B32A32Sfloat, + Format::eR64Uint, + Format::eR64Sint, + Format::eR64Sfloat, + Format::eR64G64Uint, + Format::eR64G64Sint, + Format::eR64G64Sfloat, + Format::eR64G64B64Uint, + Format::eR64G64B64Sint, + Format::eR64G64B64Sfloat, + Format::eR64G64B64A64Uint, + Format::eR64G64B64A64Sint, + Format::eR64G64B64A64Sfloat, + Format::eB10G11R11UfloatPack32, + Format::eE5B9G9R9UfloatPack32, + Format::eD16Unorm, + Format::eX8D24UnormPack32, + Format::eD32Sfloat, + Format::eS8Uint, + Format::eD16UnormS8Uint, + Format::eD24UnormS8Uint, + Format::eD32SfloatS8Uint, + Format::eBc1RgbUnormBlock, + Format::eBc1RgbSrgbBlock, + Format::eBc1RgbaUnormBlock, + Format::eBc1RgbaSrgbBlock, + Format::eBc2UnormBlock, + Format::eBc2SrgbBlock, + Format::eBc3UnormBlock, + Format::eBc3SrgbBlock, + Format::eBc4UnormBlock, + Format::eBc4SnormBlock, + Format::eBc5UnormBlock, + Format::eBc5SnormBlock, + Format::eBc6HUfloatBlock, + Format::eBc6HSfloatBlock, + Format::eBc7UnormBlock, + Format::eBc7SrgbBlock, + Format::eEtc2R8G8B8UnormBlock, + Format::eEtc2R8G8B8SrgbBlock, + Format::eEtc2R8G8B8A1UnormBlock, + Format::eEtc2R8G8B8A1SrgbBlock, + Format::eEtc2R8G8B8A8UnormBlock, + Format::eEtc2R8G8B8A8SrgbBlock, + Format::eEacR11UnormBlock, + Format::eEacR11SnormBlock, + Format::eEacR11G11UnormBlock, + Format::eEacR11G11SnormBlock, + Format::eAstc4x4UnormBlock, + Format::eAstc4x4SrgbBlock, + Format::eAstc5x4UnormBlock, + Format::eAstc5x4SrgbBlock, + Format::eAstc5x5UnormBlock, + Format::eAstc5x5SrgbBlock, + Format::eAstc6x5UnormBlock, + Format::eAstc6x5SrgbBlock, + Format::eAstc6x6UnormBlock, + Format::eAstc6x6SrgbBlock, + Format::eAstc8x5UnormBlock, + Format::eAstc8x5SrgbBlock, + Format::eAstc8x6UnormBlock, + Format::eAstc8x6SrgbBlock, + Format::eAstc8x8UnormBlock, + Format::eAstc8x8SrgbBlock, + Format::eAstc10x5UnormBlock, + Format::eAstc10x5SrgbBlock, + Format::eAstc10x6UnormBlock, + Format::eAstc10x6SrgbBlock, + Format::eAstc10x8UnormBlock, + Format::eAstc10x8SrgbBlock, + Format::eAstc10x10UnormBlock, + Format::eAstc10x10SrgbBlock, + Format::eAstc12x10UnormBlock, + Format::eAstc12x10SrgbBlock, + Format::eAstc12x12UnormBlock, + Format::eAstc12x12SrgbBlock, + Format::eG8B8G8R8422Unorm, + Format::eB8G8R8G8422Unorm, + Format::eG8B8R83Plane420Unorm, + Format::eG8B8R82Plane420Unorm, + Format::eG8B8R83Plane422Unorm, + Format::eG8B8R82Plane422Unorm, + Format::eG8B8R83Plane444Unorm, + Format::eR10X6UnormPack16, + Format::eR10X6G10X6Unorm2Pack16, + Format::eR10X6G10X6B10X6A10X6Unorm4Pack16, + Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16, + Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16, + Format::eG10X6B10X6R10X63Plane420Unorm3Pack16, + Format::eG10X6B10X6R10X62Plane420Unorm3Pack16, + Format::eG10X6B10X6R10X63Plane422Unorm3Pack16, + Format::eG10X6B10X6R10X62Plane422Unorm3Pack16, + Format::eG10X6B10X6R10X63Plane444Unorm3Pack16, + Format::eR12X4UnormPack16, + Format::eR12X4G12X4Unorm2Pack16, + Format::eR12X4G12X4B12X4A12X4Unorm4Pack16, + Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16, + Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16, + Format::eG12X4B12X4R12X43Plane420Unorm3Pack16, + Format::eG12X4B12X4R12X42Plane420Unorm3Pack16, + Format::eG12X4B12X4R12X43Plane422Unorm3Pack16, + Format::eG12X4B12X4R12X42Plane422Unorm3Pack16, + Format::eG12X4B12X4R12X43Plane444Unorm3Pack16, + Format::eG16B16G16R16422Unorm, + Format::eB16G16R16G16422Unorm, + Format::eG16B16R163Plane420Unorm, + Format::eG16B16R162Plane420Unorm, + Format::eG16B16R163Plane422Unorm, + Format::eG16B16R162Plane422Unorm, + Format::eG16B16R163Plane444Unorm, + Format::eG8B8R82Plane444Unorm, + Format::eG10X6B10X6R10X62Plane444Unorm3Pack16, + Format::eG12X4B12X4R12X42Plane444Unorm3Pack16, + Format::eG16B16R162Plane444Unorm, + Format::eA4R4G4B4UnormPack16, + Format::eA4B4G4R4UnormPack16, + Format::eAstc4x4SfloatBlock, + Format::eAstc5x4SfloatBlock, + Format::eAstc5x5SfloatBlock, + Format::eAstc6x5SfloatBlock, + Format::eAstc6x6SfloatBlock, + Format::eAstc8x5SfloatBlock, + Format::eAstc8x6SfloatBlock, + Format::eAstc8x8SfloatBlock, + Format::eAstc10x5SfloatBlock, + Format::eAstc10x6SfloatBlock, + Format::eAstc10x8SfloatBlock, + Format::eAstc10x10SfloatBlock, + Format::eAstc12x10SfloatBlock, + Format::eAstc12x12SfloatBlock, + Format::eA1B5G5R5UnormPack16, + Format::eA8Unorm, + Format::ePvrtc12BppUnormBlockIMG, + Format::ePvrtc14BppUnormBlockIMG, + Format::ePvrtc22BppUnormBlockIMG, + Format::ePvrtc24BppUnormBlockIMG, + Format::ePvrtc12BppSrgbBlockIMG, + Format::ePvrtc14BppSrgbBlockIMG, + Format::ePvrtc22BppSrgbBlockIMG, + Format::ePvrtc24BppSrgbBlockIMG, + Format::eAstc3x3x3UnormBlockEXT, + Format::eAstc3x3x3SrgbBlockEXT, + Format::eAstc3x3x3SfloatBlockEXT, + Format::eAstc4x3x3UnormBlockEXT, + Format::eAstc4x3x3SrgbBlockEXT, + Format::eAstc4x3x3SfloatBlockEXT, + Format::eAstc4x4x3UnormBlockEXT, + Format::eAstc4x4x3SrgbBlockEXT, + Format::eAstc4x4x3SfloatBlockEXT, + Format::eAstc4x4x4UnormBlockEXT, + Format::eAstc4x4x4SrgbBlockEXT, + Format::eAstc4x4x4SfloatBlockEXT, + Format::eAstc5x4x4UnormBlockEXT, + Format::eAstc5x4x4SrgbBlockEXT, + Format::eAstc5x4x4SfloatBlockEXT, + Format::eAstc5x5x4UnormBlockEXT, + Format::eAstc5x5x4SrgbBlockEXT, + Format::eAstc5x5x4SfloatBlockEXT, + Format::eAstc5x5x5UnormBlockEXT, + Format::eAstc5x5x5SrgbBlockEXT, + Format::eAstc5x5x5SfloatBlockEXT, + Format::eAstc6x5x5UnormBlockEXT, + Format::eAstc6x5x5SrgbBlockEXT, + Format::eAstc6x5x5SfloatBlockEXT, + Format::eAstc6x6x5UnormBlockEXT, + Format::eAstc6x6x5SrgbBlockEXT, + Format::eAstc6x6x5SfloatBlockEXT, + Format::eAstc6x6x6UnormBlockEXT, + Format::eAstc6x6x6SrgbBlockEXT, + Format::eAstc6x6x6SfloatBlockEXT, + Format::eR8BoolARM, + Format::eR16SfloatFpencodingBfloat16ARM, + Format::eR8SfloatFpencodingFloat8E4M3ARM, + Format::eR8SfloatFpencodingFloat8E5M2ARM, + Format::eR16G16Sfixed5NV, + Format::eR10X6UintPack16ARM, + Format::eR10X6G10X6Uint2Pack16ARM, + Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM, + Format::eR12X4UintPack16ARM, + Format::eR12X4G12X4Uint2Pack16ARM, + Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM, + Format::eR14X2UintPack16ARM, + Format::eR14X2G14X2Uint2Pack16ARM, + Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM, + Format::eR14X2UnormPack16ARM, + Format::eR14X2G14X2Unorm2Pack16ARM, + Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM, + Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM, + Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM }; + return allFormats; + } + + // Get all formats with a color component + VULKAN_HPP_INLINE std::vector const & getColorFormats() + { + static std::vector colorFormats = { Format::eR4G4UnormPack8, + Format::eR4G4B4A4UnormPack16, + Format::eB4G4R4A4UnormPack16, + Format::eR5G6B5UnormPack16, + Format::eB5G6R5UnormPack16, + Format::eR5G5B5A1UnormPack16, + Format::eB5G5R5A1UnormPack16, + Format::eA1R5G5B5UnormPack16, + Format::eR8Unorm, + Format::eR8Snorm, + Format::eR8Uscaled, + Format::eR8Sscaled, + Format::eR8Uint, + Format::eR8Sint, + Format::eR8Srgb, + Format::eR8G8Unorm, + Format::eR8G8Snorm, + Format::eR8G8Uscaled, + Format::eR8G8Sscaled, + Format::eR8G8Uint, + Format::eR8G8Sint, + Format::eR8G8Srgb, + Format::eR8G8B8Unorm, + Format::eR8G8B8Snorm, + Format::eR8G8B8Uscaled, + Format::eR8G8B8Sscaled, + Format::eR8G8B8Uint, + Format::eR8G8B8Sint, + Format::eR8G8B8Srgb, + Format::eB8G8R8Unorm, + Format::eB8G8R8Snorm, + Format::eB8G8R8Uscaled, + Format::eB8G8R8Sscaled, + Format::eB8G8R8Uint, + Format::eB8G8R8Sint, + Format::eB8G8R8Srgb, + Format::eR8G8B8A8Unorm, + Format::eR8G8B8A8Snorm, + Format::eR8G8B8A8Uscaled, + Format::eR8G8B8A8Sscaled, + Format::eR8G8B8A8Uint, + Format::eR8G8B8A8Sint, + Format::eR8G8B8A8Srgb, + Format::eB8G8R8A8Unorm, + Format::eB8G8R8A8Snorm, + Format::eB8G8R8A8Uscaled, + Format::eB8G8R8A8Sscaled, + Format::eB8G8R8A8Uint, + Format::eB8G8R8A8Sint, + Format::eB8G8R8A8Srgb, + Format::eA8B8G8R8UnormPack32, + Format::eA8B8G8R8SnormPack32, + Format::eA8B8G8R8UscaledPack32, + Format::eA8B8G8R8SscaledPack32, + Format::eA8B8G8R8UintPack32, + Format::eA8B8G8R8SintPack32, + Format::eA8B8G8R8SrgbPack32, + Format::eA2R10G10B10UnormPack32, + Format::eA2R10G10B10SnormPack32, + Format::eA2R10G10B10UscaledPack32, + Format::eA2R10G10B10SscaledPack32, + Format::eA2R10G10B10UintPack32, + Format::eA2R10G10B10SintPack32, + Format::eA2B10G10R10UnormPack32, + Format::eA2B10G10R10SnormPack32, + Format::eA2B10G10R10UscaledPack32, + Format::eA2B10G10R10SscaledPack32, + Format::eA2B10G10R10UintPack32, + Format::eA2B10G10R10SintPack32, + Format::eR16Unorm, + Format::eR16Snorm, + Format::eR16Uscaled, + Format::eR16Sscaled, + Format::eR16Uint, + Format::eR16Sint, + Format::eR16Sfloat, + Format::eR16G16Unorm, + Format::eR16G16Snorm, + Format::eR16G16Uscaled, + Format::eR16G16Sscaled, + Format::eR16G16Uint, + Format::eR16G16Sint, + Format::eR16G16Sfloat, + Format::eR16G16B16Unorm, + Format::eR16G16B16Snorm, + Format::eR16G16B16Uscaled, + Format::eR16G16B16Sscaled, + Format::eR16G16B16Uint, + Format::eR16G16B16Sint, + Format::eR16G16B16Sfloat, + Format::eR16G16B16A16Unorm, + Format::eR16G16B16A16Snorm, + Format::eR16G16B16A16Uscaled, + Format::eR16G16B16A16Sscaled, + Format::eR16G16B16A16Uint, + Format::eR16G16B16A16Sint, + Format::eR16G16B16A16Sfloat, + Format::eR32Uint, + Format::eR32Sint, + Format::eR32Sfloat, + Format::eR32G32Uint, + Format::eR32G32Sint, + Format::eR32G32Sfloat, + Format::eR32G32B32Uint, + Format::eR32G32B32Sint, + Format::eR32G32B32Sfloat, + Format::eR32G32B32A32Uint, + Format::eR32G32B32A32Sint, + Format::eR32G32B32A32Sfloat, + Format::eR64Uint, + Format::eR64Sint, + Format::eR64Sfloat, + Format::eR64G64Uint, + Format::eR64G64Sint, + Format::eR64G64Sfloat, + Format::eR64G64B64Uint, + Format::eR64G64B64Sint, + Format::eR64G64B64Sfloat, + Format::eR64G64B64A64Uint, + Format::eR64G64B64A64Sint, + Format::eR64G64B64A64Sfloat, + Format::eB10G11R11UfloatPack32, + Format::eE5B9G9R9UfloatPack32, + Format::eBc1RgbUnormBlock, + Format::eBc1RgbSrgbBlock, + Format::eBc1RgbaUnormBlock, + Format::eBc1RgbaSrgbBlock, + Format::eBc2UnormBlock, + Format::eBc2SrgbBlock, + Format::eBc3UnormBlock, + Format::eBc3SrgbBlock, + Format::eBc4UnormBlock, + Format::eBc4SnormBlock, + Format::eBc5UnormBlock, + Format::eBc5SnormBlock, + Format::eBc6HUfloatBlock, + Format::eBc6HSfloatBlock, + Format::eBc7UnormBlock, + Format::eBc7SrgbBlock, + Format::eEtc2R8G8B8UnormBlock, + Format::eEtc2R8G8B8SrgbBlock, + Format::eEtc2R8G8B8A1UnormBlock, + Format::eEtc2R8G8B8A1SrgbBlock, + Format::eEtc2R8G8B8A8UnormBlock, + Format::eEtc2R8G8B8A8SrgbBlock, + Format::eEacR11UnormBlock, + Format::eEacR11SnormBlock, + Format::eEacR11G11UnormBlock, + Format::eEacR11G11SnormBlock, + Format::eAstc4x4UnormBlock, + Format::eAstc4x4SrgbBlock, + Format::eAstc5x4UnormBlock, + Format::eAstc5x4SrgbBlock, + Format::eAstc5x5UnormBlock, + Format::eAstc5x5SrgbBlock, + Format::eAstc6x5UnormBlock, + Format::eAstc6x5SrgbBlock, + Format::eAstc6x6UnormBlock, + Format::eAstc6x6SrgbBlock, + Format::eAstc8x5UnormBlock, + Format::eAstc8x5SrgbBlock, + Format::eAstc8x6UnormBlock, + Format::eAstc8x6SrgbBlock, + Format::eAstc8x8UnormBlock, + Format::eAstc8x8SrgbBlock, + Format::eAstc10x5UnormBlock, + Format::eAstc10x5SrgbBlock, + Format::eAstc10x6UnormBlock, + Format::eAstc10x6SrgbBlock, + Format::eAstc10x8UnormBlock, + Format::eAstc10x8SrgbBlock, + Format::eAstc10x10UnormBlock, + Format::eAstc10x10SrgbBlock, + Format::eAstc12x10UnormBlock, + Format::eAstc12x10SrgbBlock, + Format::eAstc12x12UnormBlock, + Format::eAstc12x12SrgbBlock, + Format::eG8B8G8R8422Unorm, + Format::eB8G8R8G8422Unorm, + Format::eG8B8R83Plane420Unorm, + Format::eG8B8R82Plane420Unorm, + Format::eG8B8R83Plane422Unorm, + Format::eG8B8R82Plane422Unorm, + Format::eG8B8R83Plane444Unorm, + Format::eR10X6UnormPack16, + Format::eR10X6G10X6Unorm2Pack16, + Format::eR10X6G10X6B10X6A10X6Unorm4Pack16, + Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16, + Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16, + Format::eG10X6B10X6R10X63Plane420Unorm3Pack16, + Format::eG10X6B10X6R10X62Plane420Unorm3Pack16, + Format::eG10X6B10X6R10X63Plane422Unorm3Pack16, + Format::eG10X6B10X6R10X62Plane422Unorm3Pack16, + Format::eG10X6B10X6R10X63Plane444Unorm3Pack16, + Format::eR12X4UnormPack16, + Format::eR12X4G12X4Unorm2Pack16, + Format::eR12X4G12X4B12X4A12X4Unorm4Pack16, + Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16, + Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16, + Format::eG12X4B12X4R12X43Plane420Unorm3Pack16, + Format::eG12X4B12X4R12X42Plane420Unorm3Pack16, + Format::eG12X4B12X4R12X43Plane422Unorm3Pack16, + Format::eG12X4B12X4R12X42Plane422Unorm3Pack16, + Format::eG12X4B12X4R12X43Plane444Unorm3Pack16, + Format::eG16B16G16R16422Unorm, + Format::eB16G16R16G16422Unorm, + Format::eG16B16R163Plane420Unorm, + Format::eG16B16R162Plane420Unorm, + Format::eG16B16R163Plane422Unorm, + Format::eG16B16R162Plane422Unorm, + Format::eG16B16R163Plane444Unorm, + Format::eG8B8R82Plane444Unorm, + Format::eG10X6B10X6R10X62Plane444Unorm3Pack16, + Format::eG12X4B12X4R12X42Plane444Unorm3Pack16, + Format::eG16B16R162Plane444Unorm, + Format::eA4R4G4B4UnormPack16, + Format::eA4B4G4R4UnormPack16, + Format::eAstc4x4SfloatBlock, + Format::eAstc5x4SfloatBlock, + Format::eAstc5x5SfloatBlock, + Format::eAstc6x5SfloatBlock, + Format::eAstc6x6SfloatBlock, + Format::eAstc8x5SfloatBlock, + Format::eAstc8x6SfloatBlock, + Format::eAstc8x8SfloatBlock, + Format::eAstc10x5SfloatBlock, + Format::eAstc10x6SfloatBlock, + Format::eAstc10x8SfloatBlock, + Format::eAstc10x10SfloatBlock, + Format::eAstc12x10SfloatBlock, + Format::eAstc12x12SfloatBlock, + Format::eA1B5G5R5UnormPack16, + Format::eA8Unorm, + Format::ePvrtc12BppUnormBlockIMG, + Format::ePvrtc14BppUnormBlockIMG, + Format::ePvrtc22BppUnormBlockIMG, + Format::ePvrtc24BppUnormBlockIMG, + Format::ePvrtc12BppSrgbBlockIMG, + Format::ePvrtc14BppSrgbBlockIMG, + Format::ePvrtc22BppSrgbBlockIMG, + Format::ePvrtc24BppSrgbBlockIMG, + Format::eAstc3x3x3UnormBlockEXT, + Format::eAstc3x3x3SrgbBlockEXT, + Format::eAstc3x3x3SfloatBlockEXT, + Format::eAstc4x3x3UnormBlockEXT, + Format::eAstc4x3x3SrgbBlockEXT, + Format::eAstc4x3x3SfloatBlockEXT, + Format::eAstc4x4x3UnormBlockEXT, + Format::eAstc4x4x3SrgbBlockEXT, + Format::eAstc4x4x3SfloatBlockEXT, + Format::eAstc4x4x4UnormBlockEXT, + Format::eAstc4x4x4SrgbBlockEXT, + Format::eAstc4x4x4SfloatBlockEXT, + Format::eAstc5x4x4UnormBlockEXT, + Format::eAstc5x4x4SrgbBlockEXT, + Format::eAstc5x4x4SfloatBlockEXT, + Format::eAstc5x5x4UnormBlockEXT, + Format::eAstc5x5x4SrgbBlockEXT, + Format::eAstc5x5x4SfloatBlockEXT, + Format::eAstc5x5x5UnormBlockEXT, + Format::eAstc5x5x5SrgbBlockEXT, + Format::eAstc5x5x5SfloatBlockEXT, + Format::eAstc6x5x5UnormBlockEXT, + Format::eAstc6x5x5SrgbBlockEXT, + Format::eAstc6x5x5SfloatBlockEXT, + Format::eAstc6x6x5UnormBlockEXT, + Format::eAstc6x6x5SrgbBlockEXT, + Format::eAstc6x6x5SfloatBlockEXT, + Format::eAstc6x6x6UnormBlockEXT, + Format::eAstc6x6x6SrgbBlockEXT, + Format::eAstc6x6x6SfloatBlockEXT, + Format::eR8BoolARM, + Format::eR16SfloatFpencodingBfloat16ARM, + Format::eR8SfloatFpencodingFloat8E4M3ARM, + Format::eR8SfloatFpencodingFloat8E5M2ARM, + Format::eR16G16Sfixed5NV, + Format::eR10X6UintPack16ARM, + Format::eR10X6G10X6Uint2Pack16ARM, + Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM, + Format::eR12X4UintPack16ARM, + Format::eR12X4G12X4Uint2Pack16ARM, + Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM, + Format::eR14X2UintPack16ARM, + Format::eR14X2G14X2Uint2Pack16ARM, + Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM, + Format::eR14X2UnormPack16ARM, + Format::eR14X2G14X2Unorm2Pack16ARM, + Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM, + Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM, + Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM }; + return colorFormats; + } + + // Get all formats with a depth component + VULKAN_HPP_INLINE std::vector const & getDepthFormats() + { + static std::vector depthFormats = { Format::eD16Unorm, Format::eX8D24UnormPack32, Format::eD32Sfloat, + Format::eD16UnormS8Uint, Format::eD24UnormS8Uint, Format::eD32SfloatS8Uint }; + return depthFormats; + } + + // Get all formats with a depth and a stencil component + VULKAN_HPP_INLINE std::vector const & getDepthStencilFormats() + { + static std::vector depthStencilFormats = { Format::eD16UnormS8Uint, Format::eD24UnormS8Uint, Format::eD32SfloatS8Uint }; + return depthStencilFormats; + } + + // Get all formats with a stencil component + VULKAN_HPP_INLINE std::vector const & getStencilFormats() + { + static std::vector stencilFormats = { Format::eS8Uint, Format::eD16UnormS8Uint, Format::eD24UnormS8Uint, Format::eD32SfloatS8Uint }; + return stencilFormats; + } + + // True, if this format has an alpha component + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 bool hasAlphaComponent( Format format ) + { + switch ( format ) + { + case Format::eR4G4B4A4UnormPack16: + case Format::eB4G4R4A4UnormPack16: + case Format::eR5G5B5A1UnormPack16: + case Format::eB5G5R5A1UnormPack16: + case Format::eA1R5G5B5UnormPack16: + case Format::eR8G8B8A8Unorm: + case Format::eR8G8B8A8Snorm: + case Format::eR8G8B8A8Uscaled: + case Format::eR8G8B8A8Sscaled: + case Format::eR8G8B8A8Uint: + case Format::eR8G8B8A8Sint: + case Format::eR8G8B8A8Srgb: + case Format::eB8G8R8A8Unorm: + case Format::eB8G8R8A8Snorm: + case Format::eB8G8R8A8Uscaled: + case Format::eB8G8R8A8Sscaled: + case Format::eB8G8R8A8Uint: + case Format::eB8G8R8A8Sint: + case Format::eB8G8R8A8Srgb: + case Format::eA8B8G8R8UnormPack32: + case Format::eA8B8G8R8SnormPack32: + case Format::eA8B8G8R8UscaledPack32: + case Format::eA8B8G8R8SscaledPack32: + case Format::eA8B8G8R8UintPack32: + case Format::eA8B8G8R8SintPack32: + case Format::eA8B8G8R8SrgbPack32: + case Format::eA2R10G10B10UnormPack32: + case Format::eA2R10G10B10SnormPack32: + case Format::eA2R10G10B10UscaledPack32: + case Format::eA2R10G10B10SscaledPack32: + case Format::eA2R10G10B10UintPack32: + case Format::eA2R10G10B10SintPack32: + case Format::eA2B10G10R10UnormPack32: + case Format::eA2B10G10R10SnormPack32: + case Format::eA2B10G10R10UscaledPack32: + case Format::eA2B10G10R10SscaledPack32: + case Format::eA2B10G10R10UintPack32: + case Format::eA2B10G10R10SintPack32: + case Format::eR16G16B16A16Unorm: + case Format::eR16G16B16A16Snorm: + case Format::eR16G16B16A16Uscaled: + case Format::eR16G16B16A16Sscaled: + case Format::eR16G16B16A16Uint: + case Format::eR16G16B16A16Sint: + case Format::eR16G16B16A16Sfloat: + case Format::eR32G32B32A32Uint: + case Format::eR32G32B32A32Sint: + case Format::eR32G32B32A32Sfloat: + case Format::eR64G64B64A64Uint: + case Format::eR64G64B64A64Sint: + case Format::eR64G64B64A64Sfloat: + case Format::eBc1RgbaUnormBlock: + case Format::eBc1RgbaSrgbBlock: + case Format::eBc2UnormBlock: + case Format::eBc2SrgbBlock: + case Format::eBc3UnormBlock: + case Format::eBc3SrgbBlock: + case Format::eBc7UnormBlock: + case Format::eBc7SrgbBlock: + case Format::eEtc2R8G8B8A1UnormBlock: + case Format::eEtc2R8G8B8A1SrgbBlock: + case Format::eEtc2R8G8B8A8UnormBlock: + case Format::eEtc2R8G8B8A8SrgbBlock: + case Format::eAstc4x4UnormBlock: + case Format::eAstc4x4SrgbBlock: + case Format::eAstc5x4UnormBlock: + case Format::eAstc5x4SrgbBlock: + case Format::eAstc5x5UnormBlock: + case Format::eAstc5x5SrgbBlock: + case Format::eAstc6x5UnormBlock: + case Format::eAstc6x5SrgbBlock: + case Format::eAstc6x6UnormBlock: + case Format::eAstc6x6SrgbBlock: + case Format::eAstc8x5UnormBlock: + case Format::eAstc8x5SrgbBlock: + case Format::eAstc8x6UnormBlock: + case Format::eAstc8x6SrgbBlock: + case Format::eAstc8x8UnormBlock: + case Format::eAstc8x8SrgbBlock: + case Format::eAstc10x5UnormBlock: + case Format::eAstc10x5SrgbBlock: + case Format::eAstc10x6UnormBlock: + case Format::eAstc10x6SrgbBlock: + case Format::eAstc10x8UnormBlock: + case Format::eAstc10x8SrgbBlock: + case Format::eAstc10x10UnormBlock: + case Format::eAstc10x10SrgbBlock: + case Format::eAstc12x10UnormBlock: + case Format::eAstc12x10SrgbBlock: + case Format::eAstc12x12UnormBlock: + case Format::eAstc12x12SrgbBlock: + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: + case Format::eA4R4G4B4UnormPack16: + case Format::eA4B4G4R4UnormPack16: + case Format::eAstc4x4SfloatBlock: + case Format::eAstc5x4SfloatBlock: + case Format::eAstc5x5SfloatBlock: + case Format::eAstc6x5SfloatBlock: + case Format::eAstc6x6SfloatBlock: + case Format::eAstc8x5SfloatBlock: + case Format::eAstc8x6SfloatBlock: + case Format::eAstc8x8SfloatBlock: + case Format::eAstc10x5SfloatBlock: + case Format::eAstc10x6SfloatBlock: + case Format::eAstc10x8SfloatBlock: + case Format::eAstc10x10SfloatBlock: + case Format::eAstc12x10SfloatBlock: + case Format::eAstc12x12SfloatBlock: + case Format::eA1B5G5R5UnormPack16: + case Format::eA8Unorm: + case Format::ePvrtc12BppUnormBlockIMG: + case Format::ePvrtc14BppUnormBlockIMG: + case Format::ePvrtc22BppUnormBlockIMG: + case Format::ePvrtc24BppUnormBlockIMG: + case Format::ePvrtc12BppSrgbBlockIMG: + case Format::ePvrtc14BppSrgbBlockIMG: + case Format::ePvrtc22BppSrgbBlockIMG: + case Format::ePvrtc24BppSrgbBlockIMG: + case Format::eAstc3x3x3UnormBlockEXT: + case Format::eAstc3x3x3SrgbBlockEXT: + case Format::eAstc3x3x3SfloatBlockEXT: + case Format::eAstc4x3x3UnormBlockEXT: + case Format::eAstc4x3x3SrgbBlockEXT: + case Format::eAstc4x3x3SfloatBlockEXT: + case Format::eAstc4x4x3UnormBlockEXT: + case Format::eAstc4x4x3SrgbBlockEXT: + case Format::eAstc4x4x3SfloatBlockEXT: + case Format::eAstc4x4x4UnormBlockEXT: + case Format::eAstc4x4x4SrgbBlockEXT: + case Format::eAstc4x4x4SfloatBlockEXT: + case Format::eAstc5x4x4UnormBlockEXT: + case Format::eAstc5x4x4SrgbBlockEXT: + case Format::eAstc5x4x4SfloatBlockEXT: + case Format::eAstc5x5x4UnormBlockEXT: + case Format::eAstc5x5x4SrgbBlockEXT: + case Format::eAstc5x5x4SfloatBlockEXT: + case Format::eAstc5x5x5UnormBlockEXT: + case Format::eAstc5x5x5SrgbBlockEXT: + case Format::eAstc5x5x5SfloatBlockEXT: + case Format::eAstc6x5x5UnormBlockEXT: + case Format::eAstc6x5x5SrgbBlockEXT: + case Format::eAstc6x5x5SfloatBlockEXT: + case Format::eAstc6x6x5UnormBlockEXT: + case Format::eAstc6x6x5SrgbBlockEXT: + case Format::eAstc6x6x5SfloatBlockEXT: + case Format::eAstc6x6x6UnormBlockEXT: + case Format::eAstc6x6x6SrgbBlockEXT: + case Format::eAstc6x6x6SfloatBlockEXT: + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM: + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM: + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM: + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM: return true; + default : return false; + } + } + + // True, if this format has a blue component + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 bool hasBlueComponent( Format format ) + { + switch ( format ) + { + case Format::eR4G4B4A4UnormPack16: + case Format::eB4G4R4A4UnormPack16: + case Format::eR5G6B5UnormPack16: + case Format::eB5G6R5UnormPack16: + case Format::eR5G5B5A1UnormPack16: + case Format::eB5G5R5A1UnormPack16: + case Format::eA1R5G5B5UnormPack16: + case Format::eR8G8B8Unorm: + case Format::eR8G8B8Snorm: + case Format::eR8G8B8Uscaled: + case Format::eR8G8B8Sscaled: + case Format::eR8G8B8Uint: + case Format::eR8G8B8Sint: + case Format::eR8G8B8Srgb: + case Format::eB8G8R8Unorm: + case Format::eB8G8R8Snorm: + case Format::eB8G8R8Uscaled: + case Format::eB8G8R8Sscaled: + case Format::eB8G8R8Uint: + case Format::eB8G8R8Sint: + case Format::eB8G8R8Srgb: + case Format::eR8G8B8A8Unorm: + case Format::eR8G8B8A8Snorm: + case Format::eR8G8B8A8Uscaled: + case Format::eR8G8B8A8Sscaled: + case Format::eR8G8B8A8Uint: + case Format::eR8G8B8A8Sint: + case Format::eR8G8B8A8Srgb: + case Format::eB8G8R8A8Unorm: + case Format::eB8G8R8A8Snorm: + case Format::eB8G8R8A8Uscaled: + case Format::eB8G8R8A8Sscaled: + case Format::eB8G8R8A8Uint: + case Format::eB8G8R8A8Sint: + case Format::eB8G8R8A8Srgb: + case Format::eA8B8G8R8UnormPack32: + case Format::eA8B8G8R8SnormPack32: + case Format::eA8B8G8R8UscaledPack32: + case Format::eA8B8G8R8SscaledPack32: + case Format::eA8B8G8R8UintPack32: + case Format::eA8B8G8R8SintPack32: + case Format::eA8B8G8R8SrgbPack32: + case Format::eA2R10G10B10UnormPack32: + case Format::eA2R10G10B10SnormPack32: + case Format::eA2R10G10B10UscaledPack32: + case Format::eA2R10G10B10SscaledPack32: + case Format::eA2R10G10B10UintPack32: + case Format::eA2R10G10B10SintPack32: + case Format::eA2B10G10R10UnormPack32: + case Format::eA2B10G10R10SnormPack32: + case Format::eA2B10G10R10UscaledPack32: + case Format::eA2B10G10R10SscaledPack32: + case Format::eA2B10G10R10UintPack32: + case Format::eA2B10G10R10SintPack32: + case Format::eR16G16B16Unorm: + case Format::eR16G16B16Snorm: + case Format::eR16G16B16Uscaled: + case Format::eR16G16B16Sscaled: + case Format::eR16G16B16Uint: + case Format::eR16G16B16Sint: + case Format::eR16G16B16Sfloat: + case Format::eR16G16B16A16Unorm: + case Format::eR16G16B16A16Snorm: + case Format::eR16G16B16A16Uscaled: + case Format::eR16G16B16A16Sscaled: + case Format::eR16G16B16A16Uint: + case Format::eR16G16B16A16Sint: + case Format::eR16G16B16A16Sfloat: + case Format::eR32G32B32Uint: + case Format::eR32G32B32Sint: + case Format::eR32G32B32Sfloat: + case Format::eR32G32B32A32Uint: + case Format::eR32G32B32A32Sint: + case Format::eR32G32B32A32Sfloat: + case Format::eR64G64B64Uint: + case Format::eR64G64B64Sint: + case Format::eR64G64B64Sfloat: + case Format::eR64G64B64A64Uint: + case Format::eR64G64B64A64Sint: + case Format::eR64G64B64A64Sfloat: + case Format::eB10G11R11UfloatPack32: + case Format::eE5B9G9R9UfloatPack32: + case Format::eBc1RgbUnormBlock: + case Format::eBc1RgbSrgbBlock: + case Format::eBc1RgbaUnormBlock: + case Format::eBc1RgbaSrgbBlock: + case Format::eBc2UnormBlock: + case Format::eBc2SrgbBlock: + case Format::eBc3UnormBlock: + case Format::eBc3SrgbBlock: + case Format::eBc6HUfloatBlock: + case Format::eBc6HSfloatBlock: + case Format::eBc7UnormBlock: + case Format::eBc7SrgbBlock: + case Format::eEtc2R8G8B8UnormBlock: + case Format::eEtc2R8G8B8SrgbBlock: + case Format::eEtc2R8G8B8A1UnormBlock: + case Format::eEtc2R8G8B8A1SrgbBlock: + case Format::eEtc2R8G8B8A8UnormBlock: + case Format::eEtc2R8G8B8A8SrgbBlock: + case Format::eAstc4x4UnormBlock: + case Format::eAstc4x4SrgbBlock: + case Format::eAstc5x4UnormBlock: + case Format::eAstc5x4SrgbBlock: + case Format::eAstc5x5UnormBlock: + case Format::eAstc5x5SrgbBlock: + case Format::eAstc6x5UnormBlock: + case Format::eAstc6x5SrgbBlock: + case Format::eAstc6x6UnormBlock: + case Format::eAstc6x6SrgbBlock: + case Format::eAstc8x5UnormBlock: + case Format::eAstc8x5SrgbBlock: + case Format::eAstc8x6UnormBlock: + case Format::eAstc8x6SrgbBlock: + case Format::eAstc8x8UnormBlock: + case Format::eAstc8x8SrgbBlock: + case Format::eAstc10x5UnormBlock: + case Format::eAstc10x5SrgbBlock: + case Format::eAstc10x6UnormBlock: + case Format::eAstc10x6SrgbBlock: + case Format::eAstc10x8UnormBlock: + case Format::eAstc10x8SrgbBlock: + case Format::eAstc10x10UnormBlock: + case Format::eAstc10x10SrgbBlock: + case Format::eAstc12x10UnormBlock: + case Format::eAstc12x10SrgbBlock: + case Format::eAstc12x12UnormBlock: + case Format::eAstc12x12SrgbBlock: + case Format::eG8B8G8R8422Unorm: + case Format::eB8G8R8G8422Unorm: + case Format::eG8B8R83Plane420Unorm: + case Format::eG8B8R82Plane420Unorm: + case Format::eG8B8R83Plane422Unorm: + case Format::eG8B8R82Plane422Unorm: + case Format::eG8B8R83Plane444Unorm: + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + case Format::eG16B16G16R16422Unorm: + case Format::eB16G16R16G16422Unorm: + case Format::eG16B16R163Plane420Unorm: + case Format::eG16B16R162Plane420Unorm: + case Format::eG16B16R163Plane422Unorm: + case Format::eG16B16R162Plane422Unorm: + case Format::eG16B16R163Plane444Unorm: + case Format::eG8B8R82Plane444Unorm: + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + case Format::eG16B16R162Plane444Unorm: + case Format::eA4R4G4B4UnormPack16: + case Format::eA4B4G4R4UnormPack16: + case Format::eAstc4x4SfloatBlock: + case Format::eAstc5x4SfloatBlock: + case Format::eAstc5x5SfloatBlock: + case Format::eAstc6x5SfloatBlock: + case Format::eAstc6x6SfloatBlock: + case Format::eAstc8x5SfloatBlock: + case Format::eAstc8x6SfloatBlock: + case Format::eAstc8x8SfloatBlock: + case Format::eAstc10x5SfloatBlock: + case Format::eAstc10x6SfloatBlock: + case Format::eAstc10x8SfloatBlock: + case Format::eAstc10x10SfloatBlock: + case Format::eAstc12x10SfloatBlock: + case Format::eAstc12x12SfloatBlock: + case Format::eA1B5G5R5UnormPack16: + case Format::ePvrtc12BppUnormBlockIMG: + case Format::ePvrtc14BppUnormBlockIMG: + case Format::ePvrtc22BppUnormBlockIMG: + case Format::ePvrtc24BppUnormBlockIMG: + case Format::ePvrtc12BppSrgbBlockIMG: + case Format::ePvrtc14BppSrgbBlockIMG: + case Format::ePvrtc22BppSrgbBlockIMG: + case Format::ePvrtc24BppSrgbBlockIMG: + case Format::eAstc3x3x3UnormBlockEXT: + case Format::eAstc3x3x3SrgbBlockEXT: + case Format::eAstc3x3x3SfloatBlockEXT: + case Format::eAstc4x3x3UnormBlockEXT: + case Format::eAstc4x3x3SrgbBlockEXT: + case Format::eAstc4x3x3SfloatBlockEXT: + case Format::eAstc4x4x3UnormBlockEXT: + case Format::eAstc4x4x3SrgbBlockEXT: + case Format::eAstc4x4x3SfloatBlockEXT: + case Format::eAstc4x4x4UnormBlockEXT: + case Format::eAstc4x4x4SrgbBlockEXT: + case Format::eAstc4x4x4SfloatBlockEXT: + case Format::eAstc5x4x4UnormBlockEXT: + case Format::eAstc5x4x4SrgbBlockEXT: + case Format::eAstc5x4x4SfloatBlockEXT: + case Format::eAstc5x5x4UnormBlockEXT: + case Format::eAstc5x5x4SrgbBlockEXT: + case Format::eAstc5x5x4SfloatBlockEXT: + case Format::eAstc5x5x5UnormBlockEXT: + case Format::eAstc5x5x5SrgbBlockEXT: + case Format::eAstc5x5x5SfloatBlockEXT: + case Format::eAstc6x5x5UnormBlockEXT: + case Format::eAstc6x5x5SrgbBlockEXT: + case Format::eAstc6x5x5SfloatBlockEXT: + case Format::eAstc6x6x5UnormBlockEXT: + case Format::eAstc6x6x5SrgbBlockEXT: + case Format::eAstc6x6x5SfloatBlockEXT: + case Format::eAstc6x6x6UnormBlockEXT: + case Format::eAstc6x6x6SrgbBlockEXT: + case Format::eAstc6x6x6SfloatBlockEXT: + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM: + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM: + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM: + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM: + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: return true; + default : return false; + } + } + + // True, if this format has a depth component + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 bool hasDepthComponent( Format format ) + { + switch ( format ) + { + case Format::eD16Unorm: + case Format::eX8D24UnormPack32: + case Format::eD32Sfloat: + case Format::eD16UnormS8Uint: + case Format::eD24UnormS8Uint: + case Format::eD32SfloatS8Uint : return true; + default : return false; + } + } + + // True, if this format has a green component + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 bool hasGreenComponent( Format format ) + { + switch ( format ) + { + case Format::eR4G4UnormPack8: + case Format::eR4G4B4A4UnormPack16: + case Format::eB4G4R4A4UnormPack16: + case Format::eR5G6B5UnormPack16: + case Format::eB5G6R5UnormPack16: + case Format::eR5G5B5A1UnormPack16: + case Format::eB5G5R5A1UnormPack16: + case Format::eA1R5G5B5UnormPack16: + case Format::eR8G8Unorm: + case Format::eR8G8Snorm: + case Format::eR8G8Uscaled: + case Format::eR8G8Sscaled: + case Format::eR8G8Uint: + case Format::eR8G8Sint: + case Format::eR8G8Srgb: + case Format::eR8G8B8Unorm: + case Format::eR8G8B8Snorm: + case Format::eR8G8B8Uscaled: + case Format::eR8G8B8Sscaled: + case Format::eR8G8B8Uint: + case Format::eR8G8B8Sint: + case Format::eR8G8B8Srgb: + case Format::eB8G8R8Unorm: + case Format::eB8G8R8Snorm: + case Format::eB8G8R8Uscaled: + case Format::eB8G8R8Sscaled: + case Format::eB8G8R8Uint: + case Format::eB8G8R8Sint: + case Format::eB8G8R8Srgb: + case Format::eR8G8B8A8Unorm: + case Format::eR8G8B8A8Snorm: + case Format::eR8G8B8A8Uscaled: + case Format::eR8G8B8A8Sscaled: + case Format::eR8G8B8A8Uint: + case Format::eR8G8B8A8Sint: + case Format::eR8G8B8A8Srgb: + case Format::eB8G8R8A8Unorm: + case Format::eB8G8R8A8Snorm: + case Format::eB8G8R8A8Uscaled: + case Format::eB8G8R8A8Sscaled: + case Format::eB8G8R8A8Uint: + case Format::eB8G8R8A8Sint: + case Format::eB8G8R8A8Srgb: + case Format::eA8B8G8R8UnormPack32: + case Format::eA8B8G8R8SnormPack32: + case Format::eA8B8G8R8UscaledPack32: + case Format::eA8B8G8R8SscaledPack32: + case Format::eA8B8G8R8UintPack32: + case Format::eA8B8G8R8SintPack32: + case Format::eA8B8G8R8SrgbPack32: + case Format::eA2R10G10B10UnormPack32: + case Format::eA2R10G10B10SnormPack32: + case Format::eA2R10G10B10UscaledPack32: + case Format::eA2R10G10B10SscaledPack32: + case Format::eA2R10G10B10UintPack32: + case Format::eA2R10G10B10SintPack32: + case Format::eA2B10G10R10UnormPack32: + case Format::eA2B10G10R10SnormPack32: + case Format::eA2B10G10R10UscaledPack32: + case Format::eA2B10G10R10SscaledPack32: + case Format::eA2B10G10R10UintPack32: + case Format::eA2B10G10R10SintPack32: + case Format::eR16G16Unorm: + case Format::eR16G16Snorm: + case Format::eR16G16Uscaled: + case Format::eR16G16Sscaled: + case Format::eR16G16Uint: + case Format::eR16G16Sint: + case Format::eR16G16Sfloat: + case Format::eR16G16B16Unorm: + case Format::eR16G16B16Snorm: + case Format::eR16G16B16Uscaled: + case Format::eR16G16B16Sscaled: + case Format::eR16G16B16Uint: + case Format::eR16G16B16Sint: + case Format::eR16G16B16Sfloat: + case Format::eR16G16B16A16Unorm: + case Format::eR16G16B16A16Snorm: + case Format::eR16G16B16A16Uscaled: + case Format::eR16G16B16A16Sscaled: + case Format::eR16G16B16A16Uint: + case Format::eR16G16B16A16Sint: + case Format::eR16G16B16A16Sfloat: + case Format::eR32G32Uint: + case Format::eR32G32Sint: + case Format::eR32G32Sfloat: + case Format::eR32G32B32Uint: + case Format::eR32G32B32Sint: + case Format::eR32G32B32Sfloat: + case Format::eR32G32B32A32Uint: + case Format::eR32G32B32A32Sint: + case Format::eR32G32B32A32Sfloat: + case Format::eR64G64Uint: + case Format::eR64G64Sint: + case Format::eR64G64Sfloat: + case Format::eR64G64B64Uint: + case Format::eR64G64B64Sint: + case Format::eR64G64B64Sfloat: + case Format::eR64G64B64A64Uint: + case Format::eR64G64B64A64Sint: + case Format::eR64G64B64A64Sfloat: + case Format::eB10G11R11UfloatPack32: + case Format::eE5B9G9R9UfloatPack32: + case Format::eBc1RgbUnormBlock: + case Format::eBc1RgbSrgbBlock: + case Format::eBc1RgbaUnormBlock: + case Format::eBc1RgbaSrgbBlock: + case Format::eBc2UnormBlock: + case Format::eBc2SrgbBlock: + case Format::eBc3UnormBlock: + case Format::eBc3SrgbBlock: + case Format::eBc5UnormBlock: + case Format::eBc5SnormBlock: + case Format::eBc6HUfloatBlock: + case Format::eBc6HSfloatBlock: + case Format::eBc7UnormBlock: + case Format::eBc7SrgbBlock: + case Format::eEtc2R8G8B8UnormBlock: + case Format::eEtc2R8G8B8SrgbBlock: + case Format::eEtc2R8G8B8A1UnormBlock: + case Format::eEtc2R8G8B8A1SrgbBlock: + case Format::eEtc2R8G8B8A8UnormBlock: + case Format::eEtc2R8G8B8A8SrgbBlock: + case Format::eEacR11G11UnormBlock: + case Format::eEacR11G11SnormBlock: + case Format::eAstc4x4UnormBlock: + case Format::eAstc4x4SrgbBlock: + case Format::eAstc5x4UnormBlock: + case Format::eAstc5x4SrgbBlock: + case Format::eAstc5x5UnormBlock: + case Format::eAstc5x5SrgbBlock: + case Format::eAstc6x5UnormBlock: + case Format::eAstc6x5SrgbBlock: + case Format::eAstc6x6UnormBlock: + case Format::eAstc6x6SrgbBlock: + case Format::eAstc8x5UnormBlock: + case Format::eAstc8x5SrgbBlock: + case Format::eAstc8x6UnormBlock: + case Format::eAstc8x6SrgbBlock: + case Format::eAstc8x8UnormBlock: + case Format::eAstc8x8SrgbBlock: + case Format::eAstc10x5UnormBlock: + case Format::eAstc10x5SrgbBlock: + case Format::eAstc10x6UnormBlock: + case Format::eAstc10x6SrgbBlock: + case Format::eAstc10x8UnormBlock: + case Format::eAstc10x8SrgbBlock: + case Format::eAstc10x10UnormBlock: + case Format::eAstc10x10SrgbBlock: + case Format::eAstc12x10UnormBlock: + case Format::eAstc12x10SrgbBlock: + case Format::eAstc12x12UnormBlock: + case Format::eAstc12x12SrgbBlock: + case Format::eG8B8G8R8422Unorm: + case Format::eB8G8R8G8422Unorm: + case Format::eG8B8R83Plane420Unorm: + case Format::eG8B8R82Plane420Unorm: + case Format::eG8B8R83Plane422Unorm: + case Format::eG8B8R82Plane422Unorm: + case Format::eG8B8R83Plane444Unorm: + case Format::eR10X6G10X6Unorm2Pack16: + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + case Format::eR12X4G12X4Unorm2Pack16: + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + case Format::eG16B16G16R16422Unorm: + case Format::eB16G16R16G16422Unorm: + case Format::eG16B16R163Plane420Unorm: + case Format::eG16B16R162Plane420Unorm: + case Format::eG16B16R163Plane422Unorm: + case Format::eG16B16R162Plane422Unorm: + case Format::eG16B16R163Plane444Unorm: + case Format::eG8B8R82Plane444Unorm: + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + case Format::eG16B16R162Plane444Unorm: + case Format::eA4R4G4B4UnormPack16: + case Format::eA4B4G4R4UnormPack16: + case Format::eAstc4x4SfloatBlock: + case Format::eAstc5x4SfloatBlock: + case Format::eAstc5x5SfloatBlock: + case Format::eAstc6x5SfloatBlock: + case Format::eAstc6x6SfloatBlock: + case Format::eAstc8x5SfloatBlock: + case Format::eAstc8x6SfloatBlock: + case Format::eAstc8x8SfloatBlock: + case Format::eAstc10x5SfloatBlock: + case Format::eAstc10x6SfloatBlock: + case Format::eAstc10x8SfloatBlock: + case Format::eAstc10x10SfloatBlock: + case Format::eAstc12x10SfloatBlock: + case Format::eAstc12x12SfloatBlock: + case Format::eA1B5G5R5UnormPack16: + case Format::ePvrtc12BppUnormBlockIMG: + case Format::ePvrtc14BppUnormBlockIMG: + case Format::ePvrtc22BppUnormBlockIMG: + case Format::ePvrtc24BppUnormBlockIMG: + case Format::ePvrtc12BppSrgbBlockIMG: + case Format::ePvrtc14BppSrgbBlockIMG: + case Format::ePvrtc22BppSrgbBlockIMG: + case Format::ePvrtc24BppSrgbBlockIMG: + case Format::eAstc3x3x3UnormBlockEXT: + case Format::eAstc3x3x3SrgbBlockEXT: + case Format::eAstc3x3x3SfloatBlockEXT: + case Format::eAstc4x3x3UnormBlockEXT: + case Format::eAstc4x3x3SrgbBlockEXT: + case Format::eAstc4x3x3SfloatBlockEXT: + case Format::eAstc4x4x3UnormBlockEXT: + case Format::eAstc4x4x3SrgbBlockEXT: + case Format::eAstc4x4x3SfloatBlockEXT: + case Format::eAstc4x4x4UnormBlockEXT: + case Format::eAstc4x4x4SrgbBlockEXT: + case Format::eAstc4x4x4SfloatBlockEXT: + case Format::eAstc5x4x4UnormBlockEXT: + case Format::eAstc5x4x4SrgbBlockEXT: + case Format::eAstc5x4x4SfloatBlockEXT: + case Format::eAstc5x5x4UnormBlockEXT: + case Format::eAstc5x5x4SrgbBlockEXT: + case Format::eAstc5x5x4SfloatBlockEXT: + case Format::eAstc5x5x5UnormBlockEXT: + case Format::eAstc5x5x5SrgbBlockEXT: + case Format::eAstc5x5x5SfloatBlockEXT: + case Format::eAstc6x5x5UnormBlockEXT: + case Format::eAstc6x5x5SrgbBlockEXT: + case Format::eAstc6x5x5SfloatBlockEXT: + case Format::eAstc6x6x5UnormBlockEXT: + case Format::eAstc6x6x5SrgbBlockEXT: + case Format::eAstc6x6x5SfloatBlockEXT: + case Format::eAstc6x6x6UnormBlockEXT: + case Format::eAstc6x6x6SrgbBlockEXT: + case Format::eAstc6x6x6SfloatBlockEXT: + case Format::eR16G16Sfixed5NV: + case Format::eR10X6G10X6Uint2Pack16ARM: + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM: + case Format::eR12X4G12X4Uint2Pack16ARM: + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM: + case Format::eR14X2G14X2Uint2Pack16ARM: + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM: + case Format::eR14X2G14X2Unorm2Pack16ARM: + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM: + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: return true; + default : return false; + } + } + + // True, if this format has a red component + VULKAN_HPP_CONSTEXPR_14 bool hasRedComponent( Format format ) + { + switch ( format ) + { + case Format::eR4G4UnormPack8: + case Format::eR4G4B4A4UnormPack16: + case Format::eB4G4R4A4UnormPack16: + case Format::eR5G6B5UnormPack16: + case Format::eB5G6R5UnormPack16: + case Format::eR5G5B5A1UnormPack16: + case Format::eB5G5R5A1UnormPack16: + case Format::eA1R5G5B5UnormPack16: + case Format::eR8Unorm: + case Format::eR8Snorm: + case Format::eR8Uscaled: + case Format::eR8Sscaled: + case Format::eR8Uint: + case Format::eR8Sint: + case Format::eR8Srgb: + case Format::eR8G8Unorm: + case Format::eR8G8Snorm: + case Format::eR8G8Uscaled: + case Format::eR8G8Sscaled: + case Format::eR8G8Uint: + case Format::eR8G8Sint: + case Format::eR8G8Srgb: + case Format::eR8G8B8Unorm: + case Format::eR8G8B8Snorm: + case Format::eR8G8B8Uscaled: + case Format::eR8G8B8Sscaled: + case Format::eR8G8B8Uint: + case Format::eR8G8B8Sint: + case Format::eR8G8B8Srgb: + case Format::eB8G8R8Unorm: + case Format::eB8G8R8Snorm: + case Format::eB8G8R8Uscaled: + case Format::eB8G8R8Sscaled: + case Format::eB8G8R8Uint: + case Format::eB8G8R8Sint: + case Format::eB8G8R8Srgb: + case Format::eR8G8B8A8Unorm: + case Format::eR8G8B8A8Snorm: + case Format::eR8G8B8A8Uscaled: + case Format::eR8G8B8A8Sscaled: + case Format::eR8G8B8A8Uint: + case Format::eR8G8B8A8Sint: + case Format::eR8G8B8A8Srgb: + case Format::eB8G8R8A8Unorm: + case Format::eB8G8R8A8Snorm: + case Format::eB8G8R8A8Uscaled: + case Format::eB8G8R8A8Sscaled: + case Format::eB8G8R8A8Uint: + case Format::eB8G8R8A8Sint: + case Format::eB8G8R8A8Srgb: + case Format::eA8B8G8R8UnormPack32: + case Format::eA8B8G8R8SnormPack32: + case Format::eA8B8G8R8UscaledPack32: + case Format::eA8B8G8R8SscaledPack32: + case Format::eA8B8G8R8UintPack32: + case Format::eA8B8G8R8SintPack32: + case Format::eA8B8G8R8SrgbPack32: + case Format::eA2R10G10B10UnormPack32: + case Format::eA2R10G10B10SnormPack32: + case Format::eA2R10G10B10UscaledPack32: + case Format::eA2R10G10B10SscaledPack32: + case Format::eA2R10G10B10UintPack32: + case Format::eA2R10G10B10SintPack32: + case Format::eA2B10G10R10UnormPack32: + case Format::eA2B10G10R10SnormPack32: + case Format::eA2B10G10R10UscaledPack32: + case Format::eA2B10G10R10SscaledPack32: + case Format::eA2B10G10R10UintPack32: + case Format::eA2B10G10R10SintPack32: + case Format::eR16Unorm: + case Format::eR16Snorm: + case Format::eR16Uscaled: + case Format::eR16Sscaled: + case Format::eR16Uint: + case Format::eR16Sint: + case Format::eR16Sfloat: + case Format::eR16G16Unorm: + case Format::eR16G16Snorm: + case Format::eR16G16Uscaled: + case Format::eR16G16Sscaled: + case Format::eR16G16Uint: + case Format::eR16G16Sint: + case Format::eR16G16Sfloat: + case Format::eR16G16B16Unorm: + case Format::eR16G16B16Snorm: + case Format::eR16G16B16Uscaled: + case Format::eR16G16B16Sscaled: + case Format::eR16G16B16Uint: + case Format::eR16G16B16Sint: + case Format::eR16G16B16Sfloat: + case Format::eR16G16B16A16Unorm: + case Format::eR16G16B16A16Snorm: + case Format::eR16G16B16A16Uscaled: + case Format::eR16G16B16A16Sscaled: + case Format::eR16G16B16A16Uint: + case Format::eR16G16B16A16Sint: + case Format::eR16G16B16A16Sfloat: + case Format::eR32Uint: + case Format::eR32Sint: + case Format::eR32Sfloat: + case Format::eR32G32Uint: + case Format::eR32G32Sint: + case Format::eR32G32Sfloat: + case Format::eR32G32B32Uint: + case Format::eR32G32B32Sint: + case Format::eR32G32B32Sfloat: + case Format::eR32G32B32A32Uint: + case Format::eR32G32B32A32Sint: + case Format::eR32G32B32A32Sfloat: + case Format::eR64Uint: + case Format::eR64Sint: + case Format::eR64Sfloat: + case Format::eR64G64Uint: + case Format::eR64G64Sint: + case Format::eR64G64Sfloat: + case Format::eR64G64B64Uint: + case Format::eR64G64B64Sint: + case Format::eR64G64B64Sfloat: + case Format::eR64G64B64A64Uint: + case Format::eR64G64B64A64Sint: + case Format::eR64G64B64A64Sfloat: + case Format::eB10G11R11UfloatPack32: + case Format::eE5B9G9R9UfloatPack32: + case Format::eBc1RgbUnormBlock: + case Format::eBc1RgbSrgbBlock: + case Format::eBc1RgbaUnormBlock: + case Format::eBc1RgbaSrgbBlock: + case Format::eBc2UnormBlock: + case Format::eBc2SrgbBlock: + case Format::eBc3UnormBlock: + case Format::eBc3SrgbBlock: + case Format::eBc4UnormBlock: + case Format::eBc4SnormBlock: + case Format::eBc5UnormBlock: + case Format::eBc5SnormBlock: + case Format::eBc6HUfloatBlock: + case Format::eBc6HSfloatBlock: + case Format::eBc7UnormBlock: + case Format::eBc7SrgbBlock: + case Format::eEtc2R8G8B8UnormBlock: + case Format::eEtc2R8G8B8SrgbBlock: + case Format::eEtc2R8G8B8A1UnormBlock: + case Format::eEtc2R8G8B8A1SrgbBlock: + case Format::eEtc2R8G8B8A8UnormBlock: + case Format::eEtc2R8G8B8A8SrgbBlock: + case Format::eEacR11UnormBlock: + case Format::eEacR11SnormBlock: + case Format::eEacR11G11UnormBlock: + case Format::eEacR11G11SnormBlock: + case Format::eAstc4x4UnormBlock: + case Format::eAstc4x4SrgbBlock: + case Format::eAstc5x4UnormBlock: + case Format::eAstc5x4SrgbBlock: + case Format::eAstc5x5UnormBlock: + case Format::eAstc5x5SrgbBlock: + case Format::eAstc6x5UnormBlock: + case Format::eAstc6x5SrgbBlock: + case Format::eAstc6x6UnormBlock: + case Format::eAstc6x6SrgbBlock: + case Format::eAstc8x5UnormBlock: + case Format::eAstc8x5SrgbBlock: + case Format::eAstc8x6UnormBlock: + case Format::eAstc8x6SrgbBlock: + case Format::eAstc8x8UnormBlock: + case Format::eAstc8x8SrgbBlock: + case Format::eAstc10x5UnormBlock: + case Format::eAstc10x5SrgbBlock: + case Format::eAstc10x6UnormBlock: + case Format::eAstc10x6SrgbBlock: + case Format::eAstc10x8UnormBlock: + case Format::eAstc10x8SrgbBlock: + case Format::eAstc10x10UnormBlock: + case Format::eAstc10x10SrgbBlock: + case Format::eAstc12x10UnormBlock: + case Format::eAstc12x10SrgbBlock: + case Format::eAstc12x12UnormBlock: + case Format::eAstc12x12SrgbBlock: + case Format::eG8B8G8R8422Unorm: + case Format::eB8G8R8G8422Unorm: + case Format::eG8B8R83Plane420Unorm: + case Format::eG8B8R82Plane420Unorm: + case Format::eG8B8R83Plane422Unorm: + case Format::eG8B8R82Plane422Unorm: + case Format::eG8B8R83Plane444Unorm: + case Format::eR10X6UnormPack16: + case Format::eR10X6G10X6Unorm2Pack16: + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16: + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16: + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16: + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + case Format::eR12X4UnormPack16: + case Format::eR12X4G12X4Unorm2Pack16: + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16: + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16: + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16: + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + case Format::eG16B16G16R16422Unorm: + case Format::eB16G16R16G16422Unorm: + case Format::eG16B16R163Plane420Unorm: + case Format::eG16B16R162Plane420Unorm: + case Format::eG16B16R163Plane422Unorm: + case Format::eG16B16R162Plane422Unorm: + case Format::eG16B16R163Plane444Unorm: + case Format::eG8B8R82Plane444Unorm: + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + case Format::eG16B16R162Plane444Unorm: + case Format::eA4R4G4B4UnormPack16: + case Format::eA4B4G4R4UnormPack16: + case Format::eAstc4x4SfloatBlock: + case Format::eAstc5x4SfloatBlock: + case Format::eAstc5x5SfloatBlock: + case Format::eAstc6x5SfloatBlock: + case Format::eAstc6x6SfloatBlock: + case Format::eAstc8x5SfloatBlock: + case Format::eAstc8x6SfloatBlock: + case Format::eAstc8x8SfloatBlock: + case Format::eAstc10x5SfloatBlock: + case Format::eAstc10x6SfloatBlock: + case Format::eAstc10x8SfloatBlock: + case Format::eAstc10x10SfloatBlock: + case Format::eAstc12x10SfloatBlock: + case Format::eAstc12x12SfloatBlock: + case Format::eA1B5G5R5UnormPack16: + case Format::ePvrtc12BppUnormBlockIMG: + case Format::ePvrtc14BppUnormBlockIMG: + case Format::ePvrtc22BppUnormBlockIMG: + case Format::ePvrtc24BppUnormBlockIMG: + case Format::ePvrtc12BppSrgbBlockIMG: + case Format::ePvrtc14BppSrgbBlockIMG: + case Format::ePvrtc22BppSrgbBlockIMG: + case Format::ePvrtc24BppSrgbBlockIMG: + case Format::eAstc3x3x3UnormBlockEXT: + case Format::eAstc3x3x3SrgbBlockEXT: + case Format::eAstc3x3x3SfloatBlockEXT: + case Format::eAstc4x3x3UnormBlockEXT: + case Format::eAstc4x3x3SrgbBlockEXT: + case Format::eAstc4x3x3SfloatBlockEXT: + case Format::eAstc4x4x3UnormBlockEXT: + case Format::eAstc4x4x3SrgbBlockEXT: + case Format::eAstc4x4x3SfloatBlockEXT: + case Format::eAstc4x4x4UnormBlockEXT: + case Format::eAstc4x4x4SrgbBlockEXT: + case Format::eAstc4x4x4SfloatBlockEXT: + case Format::eAstc5x4x4UnormBlockEXT: + case Format::eAstc5x4x4SrgbBlockEXT: + case Format::eAstc5x4x4SfloatBlockEXT: + case Format::eAstc5x5x4UnormBlockEXT: + case Format::eAstc5x5x4SrgbBlockEXT: + case Format::eAstc5x5x4SfloatBlockEXT: + case Format::eAstc5x5x5UnormBlockEXT: + case Format::eAstc5x5x5SrgbBlockEXT: + case Format::eAstc5x5x5SfloatBlockEXT: + case Format::eAstc6x5x5UnormBlockEXT: + case Format::eAstc6x5x5SrgbBlockEXT: + case Format::eAstc6x5x5SfloatBlockEXT: + case Format::eAstc6x6x5UnormBlockEXT: + case Format::eAstc6x6x5SrgbBlockEXT: + case Format::eAstc6x6x5SfloatBlockEXT: + case Format::eAstc6x6x6UnormBlockEXT: + case Format::eAstc6x6x6SrgbBlockEXT: + case Format::eAstc6x6x6SfloatBlockEXT: + case Format::eR8BoolARM: + case Format::eR16SfloatFpencodingBfloat16ARM: + case Format::eR8SfloatFpencodingFloat8E4M3ARM: + case Format::eR8SfloatFpencodingFloat8E5M2ARM: + case Format::eR16G16Sfixed5NV: + case Format::eR10X6UintPack16ARM: + case Format::eR10X6G10X6Uint2Pack16ARM: + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM: + case Format::eR12X4UintPack16ARM: + case Format::eR12X4G12X4Uint2Pack16ARM: + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM: + case Format::eR14X2UintPack16ARM: + case Format::eR14X2G14X2Uint2Pack16ARM: + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM: + case Format::eR14X2UnormPack16ARM: + case Format::eR14X2G14X2Unorm2Pack16ARM: + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM: + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: return true; + default : return false; + } + } + + // True, if this format has a stencil component + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 bool hasStencilComponent( Format format ) + { + switch ( format ) + { + case Format::eS8Uint: + case Format::eD16UnormS8Uint: + case Format::eD24UnormS8Uint: + case Format::eD32SfloatS8Uint: return true; + default : return false; + } + } + + // True, if this format is a color. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 bool isColor( Format format ) + { + return hasRedComponent( format ) || hasGreenComponent( format ) || hasBlueComponent( format ) || hasAlphaComponent( format ); + } + + // True, if this format is a compressed one. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 bool isCompressed( Format format ) + { + return ( *compressionScheme( format ) != 0 ); + } + + // The number of bits into which the format is packed. A single image element in this format + // can be stored in the same space as a scalar type of this bit width. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t packed( Format format ) + { + switch ( format ) + { + case Format::eR4G4UnormPack8 : return 8; + case Format::eR4G4B4A4UnormPack16 : return 16; + case Format::eB4G4R4A4UnormPack16 : return 16; + case Format::eR5G6B5UnormPack16 : return 16; + case Format::eB5G6R5UnormPack16 : return 16; + case Format::eR5G5B5A1UnormPack16 : return 16; + case Format::eB5G5R5A1UnormPack16 : return 16; + case Format::eA1R5G5B5UnormPack16 : return 16; + case Format::eA8B8G8R8UnormPack32 : return 32; + case Format::eA8B8G8R8SnormPack32 : return 32; + case Format::eA8B8G8R8UscaledPack32 : return 32; + case Format::eA8B8G8R8SscaledPack32 : return 32; + case Format::eA8B8G8R8UintPack32 : return 32; + case Format::eA8B8G8R8SintPack32 : return 32; + case Format::eA8B8G8R8SrgbPack32 : return 32; + case Format::eA2R10G10B10UnormPack32 : return 32; + case Format::eA2R10G10B10SnormPack32 : return 32; + case Format::eA2R10G10B10UscaledPack32 : return 32; + case Format::eA2R10G10B10SscaledPack32 : return 32; + case Format::eA2R10G10B10UintPack32 : return 32; + case Format::eA2R10G10B10SintPack32 : return 32; + case Format::eA2B10G10R10UnormPack32 : return 32; + case Format::eA2B10G10R10SnormPack32 : return 32; + case Format::eA2B10G10R10UscaledPack32 : return 32; + case Format::eA2B10G10R10SscaledPack32 : return 32; + case Format::eA2B10G10R10UintPack32 : return 32; + case Format::eA2B10G10R10SintPack32 : return 32; + case Format::eB10G11R11UfloatPack32 : return 32; + case Format::eE5B9G9R9UfloatPack32 : return 32; + case Format::eX8D24UnormPack32 : return 32; + case Format::eR10X6UnormPack16 : return 16; + case Format::eR10X6G10X6Unorm2Pack16 : return 16; + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16 : return 16; + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16 : return 16; + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16 : return 16; + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16 : return 16; + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16 : return 16; + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16 : return 16; + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16 : return 16; + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16 : return 16; + case Format::eR12X4UnormPack16 : return 16; + case Format::eR12X4G12X4Unorm2Pack16 : return 16; + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16 : return 16; + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16 : return 16; + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16 : return 16; + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16 : return 16; + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16 : return 16; + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16 : return 16; + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16 : return 16; + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16 : return 16; + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16 : return 16; + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16 : return 16; + case Format::eA4R4G4B4UnormPack16 : return 16; + case Format::eA4B4G4R4UnormPack16 : return 16; + case Format::eA1B5G5R5UnormPack16 : return 16; + case Format::eR10X6UintPack16ARM : return 16; + case Format::eR10X6G10X6Uint2Pack16ARM : return 16; + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM : return 16; + case Format::eR12X4UintPack16ARM : return 16; + case Format::eR12X4G12X4Uint2Pack16ARM : return 16; + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM : return 16; + case Format::eR14X2UintPack16ARM : return 16; + case Format::eR14X2G14X2Uint2Pack16ARM : return 16; + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM : return 16; + case Format::eR14X2UnormPack16ARM : return 16; + case Format::eR14X2G14X2Unorm2Pack16ARM : return 16; + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM : return 16; + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: return 16; + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: return 16; + + default: return 0; + } + } + + // The single-plane format that this plane is compatible with. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 Format planeCompatibleFormat( Format format, uint8_t plane ) + { + switch ( format ) + { + case Format::eG8B8R83Plane420Unorm: + switch ( plane ) + { + case 0 : return Format::eR8Unorm; + case 1 : return Format::eR8Unorm; + case 2 : return Format::eR8Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG8B8R82Plane420Unorm: + switch ( plane ) + { + case 0 : return Format::eR8Unorm; + case 1 : return Format::eR8G8Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG8B8R83Plane422Unorm: + switch ( plane ) + { + case 0 : return Format::eR8Unorm; + case 1 : return Format::eR8Unorm; + case 2 : return Format::eR8Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG8B8R82Plane422Unorm: + switch ( plane ) + { + case 0 : return Format::eR8Unorm; + case 1 : return Format::eR8G8Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG8B8R83Plane444Unorm: + switch ( plane ) + { + case 0 : return Format::eR8Unorm; + case 1 : return Format::eR8Unorm; + case 2 : return Format::eR8Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR10X6UnormPack16; + case 1 : return Format::eR10X6UnormPack16; + case 2 : return Format::eR10X6UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR10X6UnormPack16; + case 1 : return Format::eR10X6G10X6Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR10X6UnormPack16; + case 1 : return Format::eR10X6UnormPack16; + case 2 : return Format::eR10X6UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR10X6UnormPack16; + case 1 : return Format::eR10X6G10X6Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR10X6UnormPack16; + case 1 : return Format::eR10X6UnormPack16; + case 2 : return Format::eR10X6UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR12X4UnormPack16; + case 1 : return Format::eR12X4UnormPack16; + case 2 : return Format::eR12X4UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR12X4UnormPack16; + case 1 : return Format::eR12X4G12X4Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR12X4UnormPack16; + case 1 : return Format::eR12X4UnormPack16; + case 2 : return Format::eR12X4UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR12X4UnormPack16; + case 1 : return Format::eR12X4G12X4Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR12X4UnormPack16; + case 1 : return Format::eR12X4UnormPack16; + case 2 : return Format::eR12X4UnormPack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG16B16R163Plane420Unorm: + switch ( plane ) + { + case 0 : return Format::eR16Unorm; + case 1 : return Format::eR16Unorm; + case 2 : return Format::eR16Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG16B16R162Plane420Unorm: + switch ( plane ) + { + case 0 : return Format::eR16Unorm; + case 1 : return Format::eR16G16Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG16B16R163Plane422Unorm: + switch ( plane ) + { + case 0 : return Format::eR16Unorm; + case 1 : return Format::eR16Unorm; + case 2 : return Format::eR16Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG16B16R162Plane422Unorm: + switch ( plane ) + { + case 0 : return Format::eR16Unorm; + case 1 : return Format::eR16G16Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG16B16R163Plane444Unorm: + switch ( plane ) + { + case 0 : return Format::eR16Unorm; + case 1 : return Format::eR16Unorm; + case 2 : return Format::eR16Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG8B8R82Plane444Unorm: + switch ( plane ) + { + case 0 : return Format::eR8Unorm; + case 1 : return Format::eR8G8Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR10X6UnormPack16; + case 1 : return Format::eR10X6G10X6Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return Format::eR12X4UnormPack16; + case 1 : return Format::eR12X4G12X4Unorm2Pack16; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG16B16R162Plane444Unorm: + switch ( plane ) + { + case 0 : return Format::eR16Unorm; + case 1 : return Format::eR16G16Unorm; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: + switch ( plane ) + { + case 0 : return Format::eR14X2UnormPack16ARM; + case 1 : return Format::eR14X2G14X2Unorm2Pack16ARM; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: + switch ( plane ) + { + case 0 : return Format::eR14X2UnormPack16ARM; + case 1 : return Format::eR14X2G14X2Unorm2Pack16ARM; + default: VULKAN_HPP_ASSERT( false ); return Format::eUndefined; + } + + default: VULKAN_HPP_ASSERT( plane == 0 ); return format; + } + } + + // The number of image planes of this format. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t planeCount( Format format ) + { + switch ( format ) + { + case Format::eG8B8R83Plane420Unorm : return 3; + case Format::eG8B8R82Plane420Unorm : return 2; + case Format::eG8B8R83Plane422Unorm : return 3; + case Format::eG8B8R82Plane422Unorm : return 2; + case Format::eG8B8R83Plane444Unorm : return 3; + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16 : return 3; + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16 : return 2; + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16 : return 3; + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16 : return 2; + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16 : return 3; + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16 : return 3; + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16 : return 2; + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16 : return 3; + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16 : return 2; + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16 : return 3; + case Format::eG16B16R163Plane420Unorm : return 3; + case Format::eG16B16R162Plane420Unorm : return 2; + case Format::eG16B16R163Plane422Unorm : return 3; + case Format::eG16B16R162Plane422Unorm : return 2; + case Format::eG16B16R163Plane444Unorm : return 3; + case Format::eG8B8R82Plane444Unorm : return 2; + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16 : return 2; + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16 : return 2; + case Format::eG16B16R162Plane444Unorm : return 2; + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: return 2; + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: return 2; + + default: return 1; + } + } + + // The relative height of this plane. A value of k means that this plane is 1/k the height of the overall format. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t planeHeightDivisor( Format format, uint8_t plane ) + { + switch ( format ) + { + case Format::eG8B8R83Plane420Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG8B8R82Plane420Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG8B8R83Plane422Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG8B8R82Plane422Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG8B8R83Plane444Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R163Plane420Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R162Plane420Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R163Plane422Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R162Plane422Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R163Plane444Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG8B8R82Plane444Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R162Plane444Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + + default: VULKAN_HPP_ASSERT( plane == 0 ); return 1; + } + } + + // The relative width of this plane. A value of k means that this plane is 1/k the width of the overall format. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t planeWidthDivisor( Format format, uint8_t plane ) + { + switch ( format ) + { + case Format::eG8B8R83Plane420Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG8B8R82Plane420Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG8B8R83Plane422Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG8B8R82Plane422Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG8B8R83Plane444Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R163Plane420Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R162Plane420Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R163Plane422Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + case 2 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R162Plane422Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R163Plane444Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + case 2 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG8B8R82Plane444Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG16B16R162Plane444Unorm: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 1; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: + switch ( plane ) + { + case 0 : return 1; + case 1 : return 2; + default: VULKAN_HPP_ASSERT( false ); return 1; + } + + default: VULKAN_HPP_ASSERT( plane == 0 ); return 1; + } + } + + // The number of texels in a texel block. + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_14 uint8_t texelsPerBlock( Format format ) + { + switch ( format ) + { + case Format::eR4G4UnormPack8 : return 1; + case Format::eR4G4B4A4UnormPack16 : return 1; + case Format::eB4G4R4A4UnormPack16 : return 1; + case Format::eR5G6B5UnormPack16 : return 1; + case Format::eB5G6R5UnormPack16 : return 1; + case Format::eR5G5B5A1UnormPack16 : return 1; + case Format::eB5G5R5A1UnormPack16 : return 1; + case Format::eA1R5G5B5UnormPack16 : return 1; + case Format::eR8Unorm : return 1; + case Format::eR8Snorm : return 1; + case Format::eR8Uscaled : return 1; + case Format::eR8Sscaled : return 1; + case Format::eR8Uint : return 1; + case Format::eR8Sint : return 1; + case Format::eR8Srgb : return 1; + case Format::eR8G8Unorm : return 1; + case Format::eR8G8Snorm : return 1; + case Format::eR8G8Uscaled : return 1; + case Format::eR8G8Sscaled : return 1; + case Format::eR8G8Uint : return 1; + case Format::eR8G8Sint : return 1; + case Format::eR8G8Srgb : return 1; + case Format::eR8G8B8Unorm : return 1; + case Format::eR8G8B8Snorm : return 1; + case Format::eR8G8B8Uscaled : return 1; + case Format::eR8G8B8Sscaled : return 1; + case Format::eR8G8B8Uint : return 1; + case Format::eR8G8B8Sint : return 1; + case Format::eR8G8B8Srgb : return 1; + case Format::eB8G8R8Unorm : return 1; + case Format::eB8G8R8Snorm : return 1; + case Format::eB8G8R8Uscaled : return 1; + case Format::eB8G8R8Sscaled : return 1; + case Format::eB8G8R8Uint : return 1; + case Format::eB8G8R8Sint : return 1; + case Format::eB8G8R8Srgb : return 1; + case Format::eR8G8B8A8Unorm : return 1; + case Format::eR8G8B8A8Snorm : return 1; + case Format::eR8G8B8A8Uscaled : return 1; + case Format::eR8G8B8A8Sscaled : return 1; + case Format::eR8G8B8A8Uint : return 1; + case Format::eR8G8B8A8Sint : return 1; + case Format::eR8G8B8A8Srgb : return 1; + case Format::eB8G8R8A8Unorm : return 1; + case Format::eB8G8R8A8Snorm : return 1; + case Format::eB8G8R8A8Uscaled : return 1; + case Format::eB8G8R8A8Sscaled : return 1; + case Format::eB8G8R8A8Uint : return 1; + case Format::eB8G8R8A8Sint : return 1; + case Format::eB8G8R8A8Srgb : return 1; + case Format::eA8B8G8R8UnormPack32 : return 1; + case Format::eA8B8G8R8SnormPack32 : return 1; + case Format::eA8B8G8R8UscaledPack32 : return 1; + case Format::eA8B8G8R8SscaledPack32 : return 1; + case Format::eA8B8G8R8UintPack32 : return 1; + case Format::eA8B8G8R8SintPack32 : return 1; + case Format::eA8B8G8R8SrgbPack32 : return 1; + case Format::eA2R10G10B10UnormPack32 : return 1; + case Format::eA2R10G10B10SnormPack32 : return 1; + case Format::eA2R10G10B10UscaledPack32 : return 1; + case Format::eA2R10G10B10SscaledPack32 : return 1; + case Format::eA2R10G10B10UintPack32 : return 1; + case Format::eA2R10G10B10SintPack32 : return 1; + case Format::eA2B10G10R10UnormPack32 : return 1; + case Format::eA2B10G10R10SnormPack32 : return 1; + case Format::eA2B10G10R10UscaledPack32 : return 1; + case Format::eA2B10G10R10SscaledPack32 : return 1; + case Format::eA2B10G10R10UintPack32 : return 1; + case Format::eA2B10G10R10SintPack32 : return 1; + case Format::eR16Unorm : return 1; + case Format::eR16Snorm : return 1; + case Format::eR16Uscaled : return 1; + case Format::eR16Sscaled : return 1; + case Format::eR16Uint : return 1; + case Format::eR16Sint : return 1; + case Format::eR16Sfloat : return 1; + case Format::eR16G16Unorm : return 1; + case Format::eR16G16Snorm : return 1; + case Format::eR16G16Uscaled : return 1; + case Format::eR16G16Sscaled : return 1; + case Format::eR16G16Uint : return 1; + case Format::eR16G16Sint : return 1; + case Format::eR16G16Sfloat : return 1; + case Format::eR16G16B16Unorm : return 1; + case Format::eR16G16B16Snorm : return 1; + case Format::eR16G16B16Uscaled : return 1; + case Format::eR16G16B16Sscaled : return 1; + case Format::eR16G16B16Uint : return 1; + case Format::eR16G16B16Sint : return 1; + case Format::eR16G16B16Sfloat : return 1; + case Format::eR16G16B16A16Unorm : return 1; + case Format::eR16G16B16A16Snorm : return 1; + case Format::eR16G16B16A16Uscaled : return 1; + case Format::eR16G16B16A16Sscaled : return 1; + case Format::eR16G16B16A16Uint : return 1; + case Format::eR16G16B16A16Sint : return 1; + case Format::eR16G16B16A16Sfloat : return 1; + case Format::eR32Uint : return 1; + case Format::eR32Sint : return 1; + case Format::eR32Sfloat : return 1; + case Format::eR32G32Uint : return 1; + case Format::eR32G32Sint : return 1; + case Format::eR32G32Sfloat : return 1; + case Format::eR32G32B32Uint : return 1; + case Format::eR32G32B32Sint : return 1; + case Format::eR32G32B32Sfloat : return 1; + case Format::eR32G32B32A32Uint : return 1; + case Format::eR32G32B32A32Sint : return 1; + case Format::eR32G32B32A32Sfloat : return 1; + case Format::eR64Uint : return 1; + case Format::eR64Sint : return 1; + case Format::eR64Sfloat : return 1; + case Format::eR64G64Uint : return 1; + case Format::eR64G64Sint : return 1; + case Format::eR64G64Sfloat : return 1; + case Format::eR64G64B64Uint : return 1; + case Format::eR64G64B64Sint : return 1; + case Format::eR64G64B64Sfloat : return 1; + case Format::eR64G64B64A64Uint : return 1; + case Format::eR64G64B64A64Sint : return 1; + case Format::eR64G64B64A64Sfloat : return 1; + case Format::eB10G11R11UfloatPack32 : return 1; + case Format::eE5B9G9R9UfloatPack32 : return 1; + case Format::eD16Unorm : return 1; + case Format::eX8D24UnormPack32 : return 1; + case Format::eD32Sfloat : return 1; + case Format::eS8Uint : return 1; + case Format::eD16UnormS8Uint : return 1; + case Format::eD24UnormS8Uint : return 1; + case Format::eD32SfloatS8Uint : return 1; + case Format::eBc1RgbUnormBlock : return 16; + case Format::eBc1RgbSrgbBlock : return 16; + case Format::eBc1RgbaUnormBlock : return 16; + case Format::eBc1RgbaSrgbBlock : return 16; + case Format::eBc2UnormBlock : return 16; + case Format::eBc2SrgbBlock : return 16; + case Format::eBc3UnormBlock : return 16; + case Format::eBc3SrgbBlock : return 16; + case Format::eBc4UnormBlock : return 16; + case Format::eBc4SnormBlock : return 16; + case Format::eBc5UnormBlock : return 16; + case Format::eBc5SnormBlock : return 16; + case Format::eBc6HUfloatBlock : return 16; + case Format::eBc6HSfloatBlock : return 16; + case Format::eBc7UnormBlock : return 16; + case Format::eBc7SrgbBlock : return 16; + case Format::eEtc2R8G8B8UnormBlock : return 16; + case Format::eEtc2R8G8B8SrgbBlock : return 16; + case Format::eEtc2R8G8B8A1UnormBlock : return 16; + case Format::eEtc2R8G8B8A1SrgbBlock : return 16; + case Format::eEtc2R8G8B8A8UnormBlock : return 16; + case Format::eEtc2R8G8B8A8SrgbBlock : return 16; + case Format::eEacR11UnormBlock : return 16; + case Format::eEacR11SnormBlock : return 16; + case Format::eEacR11G11UnormBlock : return 16; + case Format::eEacR11G11SnormBlock : return 16; + case Format::eAstc4x4UnormBlock : return 16; + case Format::eAstc4x4SrgbBlock : return 16; + case Format::eAstc5x4UnormBlock : return 20; + case Format::eAstc5x4SrgbBlock : return 20; + case Format::eAstc5x5UnormBlock : return 25; + case Format::eAstc5x5SrgbBlock : return 25; + case Format::eAstc6x5UnormBlock : return 30; + case Format::eAstc6x5SrgbBlock : return 30; + case Format::eAstc6x6UnormBlock : return 36; + case Format::eAstc6x6SrgbBlock : return 36; + case Format::eAstc8x5UnormBlock : return 40; + case Format::eAstc8x5SrgbBlock : return 40; + case Format::eAstc8x6UnormBlock : return 48; + case Format::eAstc8x6SrgbBlock : return 48; + case Format::eAstc8x8UnormBlock : return 64; + case Format::eAstc8x8SrgbBlock : return 64; + case Format::eAstc10x5UnormBlock : return 50; + case Format::eAstc10x5SrgbBlock : return 50; + case Format::eAstc10x6UnormBlock : return 60; + case Format::eAstc10x6SrgbBlock : return 60; + case Format::eAstc10x8UnormBlock : return 80; + case Format::eAstc10x8SrgbBlock : return 80; + case Format::eAstc10x10UnormBlock : return 100; + case Format::eAstc10x10SrgbBlock : return 100; + case Format::eAstc12x10UnormBlock : return 120; + case Format::eAstc12x10SrgbBlock : return 120; + case Format::eAstc12x12UnormBlock : return 144; + case Format::eAstc12x12SrgbBlock : return 144; + case Format::eG8B8G8R8422Unorm : return 1; + case Format::eB8G8R8G8422Unorm : return 1; + case Format::eG8B8R83Plane420Unorm : return 1; + case Format::eG8B8R82Plane420Unorm : return 1; + case Format::eG8B8R83Plane422Unorm : return 1; + case Format::eG8B8R82Plane422Unorm : return 1; + case Format::eG8B8R83Plane444Unorm : return 1; + case Format::eR10X6UnormPack16 : return 1; + case Format::eR10X6G10X6Unorm2Pack16 : return 1; + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16 : return 1; + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16 : return 1; + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16 : return 1; + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16 : return 1; + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16 : return 1; + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16 : return 1; + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16 : return 1; + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16 : return 1; + case Format::eR12X4UnormPack16 : return 1; + case Format::eR12X4G12X4Unorm2Pack16 : return 1; + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16 : return 1; + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16 : return 1; + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16 : return 1; + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16 : return 1; + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16 : return 1; + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16 : return 1; + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16 : return 1; + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16 : return 1; + case Format::eG16B16G16R16422Unorm : return 1; + case Format::eB16G16R16G16422Unorm : return 1; + case Format::eG16B16R163Plane420Unorm : return 1; + case Format::eG16B16R162Plane420Unorm : return 1; + case Format::eG16B16R163Plane422Unorm : return 1; + case Format::eG16B16R162Plane422Unorm : return 1; + case Format::eG16B16R163Plane444Unorm : return 1; + case Format::eG8B8R82Plane444Unorm : return 1; + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16 : return 1; + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16 : return 1; + case Format::eG16B16R162Plane444Unorm : return 1; + case Format::eA4R4G4B4UnormPack16 : return 1; + case Format::eA4B4G4R4UnormPack16 : return 1; + case Format::eAstc4x4SfloatBlock : return 16; + case Format::eAstc5x4SfloatBlock : return 20; + case Format::eAstc5x5SfloatBlock : return 25; + case Format::eAstc6x5SfloatBlock : return 30; + case Format::eAstc6x6SfloatBlock : return 36; + case Format::eAstc8x5SfloatBlock : return 40; + case Format::eAstc8x6SfloatBlock : return 48; + case Format::eAstc8x8SfloatBlock : return 64; + case Format::eAstc10x5SfloatBlock : return 50; + case Format::eAstc10x6SfloatBlock : return 60; + case Format::eAstc10x8SfloatBlock : return 80; + case Format::eAstc10x10SfloatBlock : return 100; + case Format::eAstc12x10SfloatBlock : return 120; + case Format::eAstc12x12SfloatBlock : return 144; + case Format::eA1B5G5R5UnormPack16 : return 1; + case Format::eA8Unorm : return 1; + case Format::ePvrtc12BppUnormBlockIMG : return 1; + case Format::ePvrtc14BppUnormBlockIMG : return 1; + case Format::ePvrtc22BppUnormBlockIMG : return 1; + case Format::ePvrtc24BppUnormBlockIMG : return 1; + case Format::ePvrtc12BppSrgbBlockIMG : return 1; + case Format::ePvrtc14BppSrgbBlockIMG : return 1; + case Format::ePvrtc22BppSrgbBlockIMG : return 1; + case Format::ePvrtc24BppSrgbBlockIMG : return 1; + case Format::eAstc3x3x3UnormBlockEXT : return 27; + case Format::eAstc3x3x3SrgbBlockEXT : return 27; + case Format::eAstc3x3x3SfloatBlockEXT : return 27; + case Format::eAstc4x3x3UnormBlockEXT : return 36; + case Format::eAstc4x3x3SrgbBlockEXT : return 36; + case Format::eAstc4x3x3SfloatBlockEXT : return 36; + case Format::eAstc4x4x3UnormBlockEXT : return 48; + case Format::eAstc4x4x3SrgbBlockEXT : return 48; + case Format::eAstc4x4x3SfloatBlockEXT : return 48; + case Format::eAstc4x4x4UnormBlockEXT : return 64; + case Format::eAstc4x4x4SrgbBlockEXT : return 64; + case Format::eAstc4x4x4SfloatBlockEXT : return 64; + case Format::eAstc5x4x4UnormBlockEXT : return 80; + case Format::eAstc5x4x4SrgbBlockEXT : return 80; + case Format::eAstc5x4x4SfloatBlockEXT : return 80; + case Format::eAstc5x5x4UnormBlockEXT : return 100; + case Format::eAstc5x5x4SrgbBlockEXT : return 100; + case Format::eAstc5x5x4SfloatBlockEXT : return 100; + case Format::eAstc5x5x5UnormBlockEXT : return 125; + case Format::eAstc5x5x5SrgbBlockEXT : return 125; + case Format::eAstc5x5x5SfloatBlockEXT : return 125; + case Format::eAstc6x5x5UnormBlockEXT : return 150; + case Format::eAstc6x5x5SrgbBlockEXT : return 150; + case Format::eAstc6x5x5SfloatBlockEXT : return 150; + case Format::eAstc6x6x5UnormBlockEXT : return 180; + case Format::eAstc6x6x5SrgbBlockEXT : return 180; + case Format::eAstc6x6x5SfloatBlockEXT : return 180; + case Format::eAstc6x6x6UnormBlockEXT : return 216; + case Format::eAstc6x6x6SrgbBlockEXT : return 216; + case Format::eAstc6x6x6SfloatBlockEXT : return 216; + case Format::eR8BoolARM : return 1; + case Format::eR16SfloatFpencodingBfloat16ARM : return 1; + case Format::eR8SfloatFpencodingFloat8E4M3ARM : return 1; + case Format::eR8SfloatFpencodingFloat8E5M2ARM : return 1; + case Format::eR16G16Sfixed5NV : return 1; + case Format::eR10X6UintPack16ARM : return 1; + case Format::eR10X6G10X6Uint2Pack16ARM : return 1; + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM : return 1; + case Format::eR12X4UintPack16ARM : return 1; + case Format::eR12X4G12X4Uint2Pack16ARM : return 1; + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM : return 1; + case Format::eR14X2UintPack16ARM : return 1; + case Format::eR14X2G14X2Uint2Pack16ARM : return 1; + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM : return 1; + case Format::eR14X2UnormPack16ARM : return 1; + case Format::eR14X2G14X2Unorm2Pack16ARM : return 1; + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM : return 1; + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: return 1; + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: return 1; + + default: VULKAN_HPP_ASSERT( false ); return 0; + } + } + +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_fuchsia.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_fuchsia.h new file mode 100644 index 000000000..ccca6271f --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_fuchsia.h @@ -0,0 +1,282 @@ +#ifndef VULKAN_FUCHSIA_H_ +#define VULKAN_FUCHSIA_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_FUCHSIA_imagepipe_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_FUCHSIA_imagepipe_surface 1 +#define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1 +#define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface" +typedef VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA; +typedef struct VkImagePipeSurfaceCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkImagePipeSurfaceCreateFlagsFUCHSIA flags; + zx_handle_t imagePipeHandle; +} VkImagePipeSurfaceCreateInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateImagePipeSurfaceFUCHSIA)(VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA( + VkInstance instance, + const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif +#endif + + +// VK_FUCHSIA_external_memory is a preprocessor guard. Do not pass it to API calls. +#define VK_FUCHSIA_external_memory 1 +#define VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME "VK_FUCHSIA_external_memory" +typedef struct VkImportMemoryZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + zx_handle_t handle; +} VkImportMemoryZirconHandleInfoFUCHSIA; + +typedef struct VkMemoryZirconHandlePropertiesFUCHSIA { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryZirconHandlePropertiesFUCHSIA; + +typedef struct VkMemoryGetZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetZirconHandleInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandleFUCHSIA)(VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandleFUCHSIA( + VkDevice device, + const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, + zx_handle_t* pZirconHandle); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryZirconHandlePropertiesFUCHSIA( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); +#endif +#endif + + +// VK_FUCHSIA_external_semaphore is a preprocessor guard. Do not pass it to API calls. +#define VK_FUCHSIA_external_semaphore 1 +#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 +#define VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_FUCHSIA_external_semaphore" +typedef struct VkImportSemaphoreZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkSemaphoreImportFlags flags; + VkExternalSemaphoreHandleTypeFlagBits handleType; + zx_handle_t zirconHandle; +} VkImportSemaphoreZirconHandleInfoFUCHSIA; + +typedef struct VkSemaphoreGetZirconHandleInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkSemaphoreGetZirconHandleInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreZirconHandleFUCHSIA)(VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreZirconHandleFUCHSIA( + VkDevice device, + const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreZirconHandleFUCHSIA( + VkDevice device, + const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, + zx_handle_t* pZirconHandle); +#endif +#endif + + +// VK_FUCHSIA_buffer_collection is a preprocessor guard. Do not pass it to API calls. +#define VK_FUCHSIA_buffer_collection 1 +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferCollectionFUCHSIA) +#define VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION 2 +#define VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME "VK_FUCHSIA_buffer_collection" +typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA; + +typedef enum VkImageConstraintsInfoFlagBitsFUCHSIA { + VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_RARELY_FUCHSIA = 0x00000001, + VK_IMAGE_CONSTRAINTS_INFO_CPU_READ_OFTEN_FUCHSIA = 0x00000002, + VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_RARELY_FUCHSIA = 0x00000004, + VK_IMAGE_CONSTRAINTS_INFO_CPU_WRITE_OFTEN_FUCHSIA = 0x00000008, + VK_IMAGE_CONSTRAINTS_INFO_PROTECTED_OPTIONAL_FUCHSIA = 0x00000010, + VK_IMAGE_CONSTRAINTS_INFO_FLAG_BITS_MAX_ENUM_FUCHSIA = 0x7FFFFFFF +} VkImageConstraintsInfoFlagBitsFUCHSIA; +typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA; +typedef struct VkBufferCollectionCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + zx_handle_t collectionToken; +} VkBufferCollectionCreateInfoFUCHSIA; + +typedef struct VkImportMemoryBufferCollectionFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkImportMemoryBufferCollectionFUCHSIA; + +typedef struct VkBufferCollectionImageCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkBufferCollectionImageCreateInfoFUCHSIA; + +typedef struct VkBufferCollectionConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t minBufferCount; + uint32_t maxBufferCount; + uint32_t minBufferCountForCamping; + uint32_t minBufferCountForDedicatedSlack; + uint32_t minBufferCountForSharedSlack; +} VkBufferCollectionConstraintsInfoFUCHSIA; + +typedef struct VkBufferConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCreateInfo createInfo; + VkFormatFeatureFlags requiredFormatFeatures; + VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; +} VkBufferConstraintsInfoFUCHSIA; + +typedef struct VkBufferCollectionBufferCreateInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkBufferCollectionFUCHSIA collection; + uint32_t index; +} VkBufferCollectionBufferCreateInfoFUCHSIA; + +typedef struct VkSysmemColorSpaceFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t colorSpace; +} VkSysmemColorSpaceFUCHSIA; + +typedef struct VkBufferCollectionPropertiesFUCHSIA { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; + uint32_t bufferCount; + uint32_t createInfoIndex; + uint64_t sysmemPixelFormat; + VkFormatFeatureFlags formatFeatures; + VkSysmemColorSpaceFUCHSIA sysmemColorSpaceIndex; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkBufferCollectionPropertiesFUCHSIA; + +typedef struct VkImageFormatConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + VkImageCreateInfo imageCreateInfo; + VkFormatFeatureFlags requiredFormatFeatures; + VkImageFormatConstraintsFlagsFUCHSIA flags; + uint64_t sysmemPixelFormat; + uint32_t colorSpaceCount; + const VkSysmemColorSpaceFUCHSIA* pColorSpaces; +} VkImageFormatConstraintsInfoFUCHSIA; + +typedef struct VkImageConstraintsInfoFUCHSIA { + VkStructureType sType; + const void* pNext; + uint32_t formatConstraintsCount; + const VkImageFormatConstraintsInfoFUCHSIA* pFormatConstraints; + VkBufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints; + VkImageConstraintsInfoFlagsFUCHSIA flags; +} VkImageConstraintsInfoFUCHSIA; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferCollectionFUCHSIA)(VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferCollectionFUCHSIA* pCollection); +typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); +typedef VkResult (VKAPI_PTR *PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); +typedef void (VKAPI_PTR *PFN_vkDestroyBufferCollectionFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, const VkAllocationCallbacks* pAllocator); +typedef VkResult (VKAPI_PTR *PFN_vkGetBufferCollectionPropertiesFUCHSIA)(VkDevice device, VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferCollectionFUCHSIA( + VkDevice device, + const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkBufferCollectionFUCHSIA* pCollection); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionImageConstraintsFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkImageConstraintsInfoFUCHSIA* pImageConstraintsInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkSetBufferCollectionBufferConstraintsFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkBufferConstraintsInfoFUCHSIA* pBufferConstraintsInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkDestroyBufferCollectionFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + const VkAllocationCallbacks* pAllocator); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferCollectionPropertiesFUCHSIA( + VkDevice device, + VkBufferCollectionFUCHSIA collection, + VkBufferCollectionPropertiesFUCHSIA* pProperties); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_funcs.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_funcs.hpp new file mode 100644 index 000000000..82b41c89e --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_funcs.hpp @@ -0,0 +1,32974 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_FUNCS_HPP +#define VULKAN_FUNCS_HPP + +// include-what-you-use: make sure, vulkan.hpp is used by code-completers +// IWYU pragma: private, include "vulkan/vulkan.hpp" + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ + //=========================== + //=== COMMAND Definitions === + //=========================== + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkCreateInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateInstance.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result createInstance( + InstanceCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, Instance * pInstance, Dispatch const & d ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateInstance( reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pInstance ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateInstance.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type createInstance( + InstanceCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateInstance && "Function requires " ); +# endif + + Instance instance; + Result result = static_cast( d.vkCreateInstance( reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &instance ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::createInstance" ); + + return detail::createResultValueType( result, std::move( instance ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateInstance.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type createInstanceUnique( + InstanceCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateInstance && "Function requires " ); +# endif + + Instance instance; + Result result = static_cast( d.vkCreateInstance( reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &instance ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::createInstanceUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( instance, detail::ObjectDestroy( allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyInstance.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroy( AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyInstance( static_cast( m_instance ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyInstance.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroy( Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyInstance && "Function requires " ); +# endif + + d.vkDestroyInstance( m_instance, reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkEnumeratePhysicalDevices, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDevices.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( + uint32_t * pPhysicalDeviceCount, PhysicalDevice * pPhysicalDevices, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkEnumeratePhysicalDevices( static_cast( m_instance ), pPhysicalDeviceCount, reinterpret_cast( pPhysicalDevices ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDevices, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDevices.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::enumeratePhysicalDevices( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDevices && "Function requires " ); +# endif + + std::vector physicalDevices; + uint32_t physicalDeviceCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceCount ) + { + physicalDevices.resize( physicalDeviceCount ); + result = static_cast( + d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast( physicalDevices.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDevices" ); + VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() ); + if ( physicalDeviceCount < physicalDevices.size() ) + { + physicalDevices.resize( physicalDeviceCount ); + } + return detail::createResultValueType( result, std::move( physicalDevices ) ); + } + + // wrapper function for command vkEnumeratePhysicalDevices, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDevices.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::enumeratePhysicalDevices( PhysicalDeviceAllocator const & physicalDeviceAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDevices && "Function requires " ); +# endif + + std::vector physicalDevices( physicalDeviceAllocator ); + uint32_t physicalDeviceCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceCount ) + { + physicalDevices.resize( physicalDeviceCount ); + result = static_cast( + d.vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast( physicalDevices.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDevices" ); + VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() ); + if ( physicalDeviceCount < physicalDevices.size() ) + { + physicalDevices.resize( physicalDeviceCount ); + } + return detail::createResultValueType( result, std::move( physicalDevices ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceFeatures, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures * pFeatures, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFeatures( static_cast( m_physicalDevice ), reinterpret_cast( pFeatures ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFeatures, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFeatures && "Function requires " ); +# endif + + PhysicalDeviceFeatures features; + d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast( &features ) ); + + return features; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties * pFormatProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFormatProperties( + static_cast( m_physicalDevice ), static_cast( format ), reinterpret_cast( pFormatProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFormatProperties && "Function requires " ); +# endif + + FormatProperties formatProperties; + d.vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); + + return formatProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, + ImageType type, + ImageTiling tiling, + ImageUsageFlags usage, + ImageCreateFlags flags, + ImageFormatProperties * pImageFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceImageFormatProperties( static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + reinterpret_cast( pImageFormatProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getImageFormatProperties( + Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceImageFormatProperties && "Function requires " ); +# endif + + ImageFormatProperties imageFormatProperties; + Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties( m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + reinterpret_cast( &imageFormatProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties" ); + + return detail::createResultValueType( result, std::move( imageFormatProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceProperties( static_cast( m_physicalDevice ), reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceProperties && "Function requires " ); +# endif + + PhysicalDeviceProperties properties; + d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast( &properties ) ); + + return properties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( + uint32_t * pQueueFamilyPropertyCount, QueueFamilyProperties * pQueueFamilyProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceQueueFamilyProperties( + static_cast( m_physicalDevice ), pQueueFamilyPropertyCount, reinterpret_cast( pQueueFamilyProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties( + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyProperties && "Function requires " ); +# endif + + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties( + m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + queueFamilyProperties.resize( queueFamilyPropertyCount ); + } + return queueFamilyProperties; + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties( + QueueFamilyPropertiesAllocator const & queueFamilyPropertiesAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyProperties && "Function requires " ); +# endif + + std::vector queueFamilyProperties( queueFamilyPropertiesAllocator ); + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties( + m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + queueFamilyProperties.resize( queueFamilyPropertyCount ); + } + return queueFamilyProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties * pMemoryProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceMemoryProperties( static_cast( m_physicalDevice ), + reinterpret_cast( pMemoryProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceMemoryProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceMemoryProperties && "Function requires " ); +# endif + + PhysicalDeviceMemoryProperties memoryProperties; + d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); + + return memoryProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetInstanceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetInstanceProcAddr.html + template ::type> + VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( char const * pName, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetInstanceProcAddr( static_cast( m_instance ), pName ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetInstanceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetInstanceProcAddr.html + template ::type> + VULKAN_HPP_INLINE PFN_VoidFunction Instance::getProcAddr( std::string const & name, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetInstanceProcAddr && "Function requires " ); +# endif + + PFN_vkVoidFunction result = d.vkGetInstanceProcAddr( m_instance, name.c_str() ); + + return result; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceProcAddr.html + template ::type> + VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( char const * pName, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeviceProcAddr( static_cast( m_device ), pName ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceProcAddr.html + template ::type> + VULKAN_HPP_INLINE PFN_VoidFunction Device::getProcAddr( std::string const & name, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceProcAddr && "Function requires " ); +# endif + + PFN_vkVoidFunction result = d.vkGetDeviceProcAddr( m_device, name.c_str() ); + + return result; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDevice.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( + DeviceCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, Device * pDevice, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDevice( static_cast( m_physicalDevice ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pDevice ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDevice.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::createDevice( + DeviceCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDevice && "Function requires " ); +# endif + + Device device; + Result result = static_cast( d.vkCreateDevice( m_physicalDevice, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &device ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDevice" ); + + return detail::createResultValueType( result, std::move( device ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDevice.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::createDeviceUnique( + DeviceCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDevice && "Function requires " ); +# endif + + Device device; + Result result = static_cast( d.vkCreateDevice( m_physicalDevice, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &device ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDeviceUnique" ); + + return detail::createResultValueType( result, UniqueHandle( device, detail::ObjectDestroy( allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDevice.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDevice( static_cast( m_device ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDevice.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDevice && "Function requires " ); +# endif + + d.vkDestroyDevice( m_device, reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkEnumerateInstanceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceExtensionProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( + char const * pLayerName, uint32_t * pPropertyCount, ExtensionProperties * pProperties, Dispatch const & d ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumerateInstanceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceExtensionProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + enumerateInstanceExtensionProperties( Optional layerName, Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumerateInstanceExtensionProperties && "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkEnumerateInstanceExtensionProperties( + layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceExtensionProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkEnumerateInstanceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceExtensionProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + enumerateInstanceExtensionProperties( + Optional layerName, ExtensionPropertiesAllocator const & extensionPropertiesAllocator, Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumerateInstanceExtensionProperties && "Function requires " ); +# endif + + std::vector properties( extensionPropertiesAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkEnumerateInstanceExtensionProperties( + layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceExtensionProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkEnumerateDeviceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceExtensionProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( + char const * pLayerName, uint32_t * pPropertyCount, ExtensionProperties * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumerateDeviceExtensionProperties( + static_cast( m_physicalDevice ), pLayerName, pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumerateDeviceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceExtensionProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::enumerateDeviceExtensionProperties( Optional layerName, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumerateDeviceExtensionProperties && "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = + static_cast( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkEnumerateDeviceExtensionProperties( + m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceExtensionProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkEnumerateDeviceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceExtensionProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::enumerateDeviceExtensionProperties( + Optional layerName, ExtensionPropertiesAllocator const & extensionPropertiesAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumerateDeviceExtensionProperties && "Function requires " ); +# endif + + std::vector properties( extensionPropertiesAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = + static_cast( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkEnumerateDeviceExtensionProperties( + m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceExtensionProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkEnumerateInstanceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceLayerProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t * pPropertyCount, LayerProperties * pProperties, Dispatch const & d ) + VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumerateInstanceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceLayerProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + enumerateInstanceLayerProperties( Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumerateInstanceLayerProperties && "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceLayerProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkEnumerateInstanceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceLayerProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + enumerateInstanceLayerProperties( LayerPropertiesAllocator const & layerPropertiesAllocator, Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumerateInstanceLayerProperties && "Function requires " ); +# endif + + std::vector properties( layerPropertiesAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceLayerProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkEnumerateDeviceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceLayerProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( + uint32_t * pPropertyCount, LayerProperties * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumerateDeviceLayerProperties( + static_cast( m_physicalDevice ), pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumerateDeviceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceLayerProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::enumerateDeviceLayerProperties( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumerateDeviceLayerProperties && "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceLayerProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkEnumerateDeviceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceLayerProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::enumerateDeviceLayerProperties( LayerPropertiesAllocator const & layerPropertiesAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumerateDeviceLayerProperties && "Function requires " ); +# endif + + std::vector properties( layerPropertiesAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceLayerProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue.html + template ::type> + VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue * pQueue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceQueue( static_cast( m_device ), queueFamilyIndex, queueIndex, reinterpret_cast( pQueue ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceQueue && "Function requires " ); +# endif + + Queue queue; + d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast( &queue ) ); + + return queue; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkQueueSubmit, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, SubmitInfo const * pSubmits, Fence fence, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkQueueSubmit( static_cast( m_queue ), submitCount, reinterpret_cast( pSubmits ), static_cast( fence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueSubmit, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::submit( + ArrayProxy const & submits, Fence fence, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkQueueSubmit && "Function requires " ); +# endif + + Result result = static_cast( + d.vkQueueSubmit( m_queue, submits.size(), reinterpret_cast( submits.data() ), static_cast( fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueWaitIdle.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::waitIdle( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkQueueWaitIdle( static_cast( m_queue ) ) ); + } +#else + // wrapper function for command vkQueueWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueWaitIdle.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::waitIdle( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkQueueWaitIdle && "Function requires " ); +# endif + + Result result = static_cast( d.vkQueueWaitIdle( m_queue ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::waitIdle" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDeviceWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeviceWaitIdle.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitIdle( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkDeviceWaitIdle( static_cast( m_device ) ) ); + } +#else + // wrapper function for command vkDeviceWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeviceWaitIdle.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::waitIdle( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDeviceWaitIdle && "Function requires " ); +# endif + + Result result = static_cast( d.vkDeviceWaitIdle( m_device ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitIdle" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkAllocateMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateMemory.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::allocateMemory( + MemoryAllocateInfo const * pAllocateInfo, AllocationCallbacks const * pAllocator, DeviceMemory * pMemory, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAllocateMemory( static_cast( m_device ), + reinterpret_cast( pAllocateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pMemory ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAllocateMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateMemory.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::allocateMemory( + MemoryAllocateInfo const & allocateInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAllocateMemory && "Function requires " ); +# endif + + DeviceMemory memory; + Result result = static_cast( d.vkAllocateMemory( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &memory ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateMemory" ); + + return detail::createResultValueType( result, std::move( memory ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkAllocateMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateMemory.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateMemoryUnique( + MemoryAllocateInfo const & allocateInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAllocateMemory && "Function requires " ); +# endif + + DeviceMemory memory; + Result result = static_cast( d.vkAllocateMemory( m_device, + reinterpret_cast( &allocateInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &memory ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateMemoryUnique" ); + + return detail::createResultValueType( result, UniqueHandle( memory, detail::ObjectFree( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeMemory.html + template ::type> + VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeMemory( static_cast( m_device ), static_cast( memory ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeMemory.html + template ::type> + VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkFreeMemory && "Function requires " ); +# endif + + d.vkFreeMemory( m_device, static_cast( memory ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeMemory.html + template ::type> + VULKAN_HPP_INLINE void( Device::free )( DeviceMemory memory, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeMemory( static_cast( m_device ), static_cast( memory ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeMemory.html + template ::type> + VULKAN_HPP_INLINE void( Device::free )( DeviceMemory memory, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkFreeMemory && "Function requires " ); +# endif + + d.vkFreeMemory( m_device, static_cast( memory ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkMapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::mapMemory( + DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void ** ppData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkMapMemory( static_cast( m_device ), + static_cast( memory ), + static_cast( offset ), + static_cast( size ), + static_cast( flags ), + ppData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkMapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::mapMemory( + DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkMapMemory && "Function requires " ); +# endif + + void * pData; + Result result = static_cast( d.vkMapMemory( m_device, + static_cast( memory ), + static_cast( offset ), + static_cast( size ), + static_cast( flags ), + &pData ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::mapMemory" ); + + return detail::createResultValueType( result, std::move( pData ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUnmapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory.html + template ::type> + VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUnmapMemory( static_cast( m_device ), static_cast( memory ) ); + } + + // wrapper function for command vkFlushMappedMemoryRanges, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFlushMappedMemoryRanges.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( + uint32_t memoryRangeCount, MappedMemoryRange const * pMemoryRanges, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkFlushMappedMemoryRanges( static_cast( m_device ), memoryRangeCount, reinterpret_cast( pMemoryRanges ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFlushMappedMemoryRanges, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFlushMappedMemoryRanges.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::flushMappedMemoryRanges( + ArrayProxy const & memoryRanges, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkFlushMappedMemoryRanges && "Function requires " ); +# endif + + Result result = + static_cast( d.vkFlushMappedMemoryRanges( m_device, memoryRanges.size(), reinterpret_cast( memoryRanges.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::flushMappedMemoryRanges" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkInvalidateMappedMemoryRanges, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInvalidateMappedMemoryRanges.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( + uint32_t memoryRangeCount, MappedMemoryRange const * pMemoryRanges, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkInvalidateMappedMemoryRanges( static_cast( m_device ), memoryRangeCount, reinterpret_cast( pMemoryRanges ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkInvalidateMappedMemoryRanges, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInvalidateMappedMemoryRanges.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::invalidateMappedMemoryRanges( + ArrayProxy const & memoryRanges, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkInvalidateMappedMemoryRanges && "Function requires " ); +# endif + + Result result = static_cast( + d.vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size(), reinterpret_cast( memoryRanges.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::invalidateMappedMemoryRanges" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceMemoryCommitment, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryCommitment.html + template ::type> + VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize * pCommittedMemoryInBytes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceMemoryCommitment( + static_cast( m_device ), static_cast( memory ), reinterpret_cast( pCommittedMemoryInBytes ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceMemoryCommitment, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryCommitment.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceMemoryCommitment && "Function requires " ); +# endif + + DeviceSize committedMemoryInBytes; + d.vkGetDeviceMemoryCommitment( m_device, static_cast( memory ), reinterpret_cast( &committedMemoryInBytes ) ); + + return committedMemoryInBytes; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindBufferMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindBufferMemory( + static_cast( m_device ), static_cast( buffer ), static_cast( memory ), static_cast( memoryOffset ) ) ); + } +#else + // wrapper function for command vkBindBufferMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindBufferMemory( + Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindBufferMemory && "Function requires " ); +# endif + + Result result = static_cast( + d.vkBindBufferMemory( m_device, static_cast( buffer ), static_cast( memory ), static_cast( memoryOffset ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindImageMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindImageMemory( + static_cast( m_device ), static_cast( image ), static_cast( memory ), static_cast( memoryOffset ) ) ); + } +#else + // wrapper function for command vkBindImageMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindImageMemory( + Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindImageMemory && "Function requires " ); +# endif + + Result result = static_cast( + d.vkBindImageMemory( m_device, static_cast( image ), static_cast( memory ), static_cast( memoryOffset ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements.html + template ::type> + VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements * pMemoryRequirements, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetBufferMemoryRequirements( + static_cast( m_device ), static_cast( buffer ), reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferMemoryRequirements && "Function requires " ); +# endif + + MemoryRequirements memoryRequirements; + d.vkGetBufferMemoryRequirements( m_device, static_cast( buffer ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageMemoryRequirements, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements * pMemoryRequirements, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageMemoryRequirements( + static_cast( m_device ), static_cast( image ), reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageMemoryRequirements, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageMemoryRequirements && "Function requires " ); +# endif + + MemoryRequirements memoryRequirements; + d.vkGetImageMemoryRequirements( m_device, static_cast( image ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( + Image image, uint32_t * pSparseMemoryRequirementCount, SparseImageMemoryRequirements * pSparseMemoryRequirements, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSparseMemoryRequirements( static_cast( m_device ), + static_cast( image ), + pSparseMemoryRequirementCount, + reinterpret_cast( pSparseMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements( Image image, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageSparseMemoryRequirements && "Function requires " ); +# endif + + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements( m_device, static_cast( image ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements( m_device, + static_cast( image ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } + + // wrapper function for command vkGetImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements( + Image image, SparseImageMemoryRequirementsAllocator const & sparseImageMemoryRequirementsAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageSparseMemoryRequirements && "Function requires " ); +# endif + + std::vector sparseMemoryRequirements( sparseImageMemoryRequirementsAllocator ); + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements( m_device, static_cast( image ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements( m_device, + static_cast( image ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, + ImageType type, + SampleCountFlagBits samples, + ImageUsageFlags usage, + ImageTiling tiling, + uint32_t * pPropertyCount, + SparseImageFormatProperties * pProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceSparseImageFormatProperties( static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + pPropertyCount, + reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties( + Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSparseImageFormatProperties && + "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return properties; + } + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties( Format format, + ImageType type, + SampleCountFlagBits samples, + ImageUsageFlags usage, + ImageTiling tiling, + SparseImageFormatPropertiesAllocator const & sparseImageFormatPropertiesAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSparseImageFormatProperties && + "Function requires " ); +# endif + + std::vector properties( sparseImageFormatPropertiesAllocator ); + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return properties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkQueueBindSparse, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBindSparse.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, BindSparseInfo const * pBindInfo, Fence fence, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkQueueBindSparse( + static_cast( m_queue ), bindInfoCount, reinterpret_cast( pBindInfo ), static_cast( fence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueBindSparse, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBindSparse.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::bindSparse( + ArrayProxy const & bindInfo, Fence fence, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkQueueBindSparse && "Function requires " ); +# endif + + Result result = static_cast( + d.vkQueueBindSparse( m_queue, bindInfo.size(), reinterpret_cast( bindInfo.data() ), static_cast( fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::bindSparse" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFence.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createFence( + FenceCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, Fence * pFence, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateFence( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFence.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createFence( + FenceCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateFence && "Function requires " ); +# endif + + Fence fence; + Result result = static_cast( d.vkCreateFence( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createFence" ); + + return detail::createResultValueType( result, std::move( fence ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFence.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createFenceUnique( + FenceCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateFence && "Function requires " ); +# endif + + Fence fence; + Result result = static_cast( d.vkCreateFence( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createFenceUnique" ); + + return detail::createResultValueType( result, UniqueHandle( fence, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFence.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFence( static_cast( m_device ), static_cast( fence ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFence.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyFence && "Function requires " ); +# endif + + d.vkDestroyFence( m_device, static_cast( fence ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFence.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Fence fence, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFence( static_cast( m_device ), static_cast( fence ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFence.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Fence fence, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyFence && "Function requires " ); +# endif + + d.vkDestroyFence( m_device, static_cast( fence ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkResetFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetFences.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, Fence const * pFences, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkResetFences( static_cast( m_device ), fenceCount, reinterpret_cast( pFences ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkResetFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetFences.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::resetFences( ArrayProxy const & fences, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkResetFences && "Function requires " ); +# endif + + Result result = static_cast( d.vkResetFences( m_device, fences.size(), reinterpret_cast( fences.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetFences" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetFenceStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceStatus.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetFenceStatus( static_cast( m_device ), static_cast( fence ) ) ); + } +#else + // wrapper function for command vkGetFenceStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceStatus.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetFenceStatus && "Function requires " ); +# endif + + Result result = static_cast( d.vkGetFenceStatus( m_device, static_cast( fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } ); + + return static_cast( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkWaitForFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForFences.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForFences( + uint32_t fenceCount, Fence const * pFences, Bool32 waitAll, uint64_t timeout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkWaitForFences( + static_cast( m_device ), fenceCount, reinterpret_cast( pFences ), static_cast( waitAll ), timeout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWaitForFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForFences.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForFences( + ArrayProxy const & fences, Bool32 waitAll, uint64_t timeout, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWaitForFences && "Function requires " ); +# endif + + Result result = static_cast( + d.vkWaitForFences( m_device, fences.size(), reinterpret_cast( fences.data() ), static_cast( waitAll ), timeout ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitForFences", { Result::eSuccess, Result::eTimeout } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSemaphore.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSemaphore( + SemaphoreCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, Semaphore * pSemaphore, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateSemaphore( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSemaphore ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSemaphore.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createSemaphore( + SemaphoreCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSemaphore && "Function requires " ); +# endif + + Semaphore semaphore; + Result result = static_cast( d.vkCreateSemaphore( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &semaphore ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSemaphore" ); + + return detail::createResultValueType( result, std::move( semaphore ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSemaphore.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSemaphoreUnique( + SemaphoreCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSemaphore && "Function requires " ); +# endif + + Semaphore semaphore; + Result result = static_cast( d.vkCreateSemaphore( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &semaphore ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSemaphoreUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( semaphore, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySemaphore.html + template ::type> + VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySemaphore( + static_cast( m_device ), static_cast( semaphore ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySemaphore.html + template ::type> + VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySemaphore && "Function requires " ); +# endif + + d.vkDestroySemaphore( m_device, static_cast( semaphore ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySemaphore.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Semaphore semaphore, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySemaphore( + static_cast( m_device ), static_cast( semaphore ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySemaphore.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Semaphore semaphore, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySemaphore && "Function requires " ); +# endif + + d.vkDestroySemaphore( m_device, static_cast( semaphore ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateQueryPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createQueryPool( + QueryPoolCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, QueryPool * pQueryPool, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateQueryPool( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pQueryPool ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateQueryPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createQueryPool( + QueryPoolCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateQueryPool && "Function requires " ); +# endif + + QueryPool queryPool; + Result result = static_cast( d.vkCreateQueryPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &queryPool ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createQueryPool" ); + + return detail::createResultValueType( result, std::move( queryPool ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateQueryPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createQueryPoolUnique( + QueryPoolCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateQueryPool && "Function requires " ); +# endif + + QueryPool queryPool; + Result result = static_cast( d.vkCreateQueryPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &queryPool ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createQueryPoolUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( queryPool, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyQueryPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyQueryPool( + static_cast( m_device ), static_cast( queryPool ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyQueryPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyQueryPool && "Function requires " ); +# endif + + d.vkDestroyQueryPool( m_device, static_cast( queryPool ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyQueryPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( QueryPool queryPool, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyQueryPool( + static_cast( m_device ), static_cast( queryPool ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyQueryPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( QueryPool queryPool, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyQueryPool && "Function requires " ); +# endif + + d.vkDestroyQueryPool( m_device, static_cast( queryPool ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + void * pData, + DeviceSize stride, + QueryResultFlags flags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetQueryPoolResults( static_cast( m_device ), + static_cast( queryPool ), + firstQuery, + queryCount, + dataSize, + pData, + static_cast( stride ), + static_cast( flags ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::getQueryPoolResults( + QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, DeviceSize stride, QueryResultFlags flags, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetQueryPoolResults && "Function requires " ); +# endif + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( d.vkGetQueryPoolResults( m_device, + static_cast( queryPool ), + firstQuery, + queryCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ), + static_cast( stride ), + static_cast( flags ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } ); + + return { result, data }; + } + + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::getQueryPoolResult( + QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, DeviceSize stride, QueryResultFlags flags, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetQueryPoolResults && "Function requires " ); +# endif + + DataType data; + Result result = static_cast( d.vkGetQueryPoolResults( m_device, + static_cast( queryPool ), + firstQuery, + queryCount, + sizeof( DataType ), + reinterpret_cast( &data ), + static_cast( stride ), + static_cast( flags ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getQueryPoolResult", { Result::eSuccess, Result::eNotReady } ); + + return { result, data }; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBuffer.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createBuffer( + BufferCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, Buffer * pBuffer, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateBuffer( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pBuffer ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBuffer.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createBuffer( + BufferCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateBuffer && "Function requires " ); +# endif + + Buffer buffer; + Result result = static_cast( d.vkCreateBuffer( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &buffer ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createBuffer" ); + + return detail::createResultValueType( result, std::move( buffer ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBuffer.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createBufferUnique( + BufferCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateBuffer && "Function requires " ); +# endif + + Buffer buffer; + Result result = static_cast( d.vkCreateBuffer( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &buffer ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferUnique" ); + + return detail::createResultValueType( result, UniqueHandle( buffer, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBuffer.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBuffer( static_cast( m_device ), static_cast( buffer ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBuffer.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyBuffer && "Function requires " ); +# endif + + d.vkDestroyBuffer( m_device, static_cast( buffer ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBuffer.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Buffer buffer, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBuffer( static_cast( m_device ), static_cast( buffer ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBuffer.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Buffer buffer, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyBuffer && "Function requires " ); +# endif + + d.vkDestroyBuffer( m_device, static_cast( buffer ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImage.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createImage( + ImageCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, Image * pImage, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateImage( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pImage ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImage.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createImage( + ImageCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateImage && "Function requires " ); +# endif + + Image image; + Result result = static_cast( d.vkCreateImage( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &image ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createImage" ); + + return detail::createResultValueType( result, std::move( image ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImage.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createImageUnique( + ImageCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateImage && "Function requires " ); +# endif + + Image image; + Result result = static_cast( d.vkCreateImage( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &image ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createImageUnique" ); + + return detail::createResultValueType( result, UniqueHandle( image, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImage.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyImage( Image image, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImage( static_cast( m_device ), static_cast( image ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImage.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyImage && "Function requires " ); +# endif + + d.vkDestroyImage( m_device, static_cast( image ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImage.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Image image, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImage( static_cast( m_device ), static_cast( image ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImage.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Image image, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyImage && "Function requires " ); +# endif + + d.vkDestroyImage( m_device, static_cast( image ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSubresourceLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( + Image image, ImageSubresource const * pSubresource, SubresourceLayout * pLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSubresourceLayout( static_cast( m_device ), + static_cast( image ), + reinterpret_cast( pSubresource ), + reinterpret_cast( pLayout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSubresourceLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( + Image image, ImageSubresource const & subresource, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageSubresourceLayout && "Function requires " ); +# endif + + SubresourceLayout layout; + d.vkGetImageSubresourceLayout( m_device, + static_cast( image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return layout; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImageView.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createImageView( + ImageViewCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, ImageView * pView, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateImageView( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pView ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImageView.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createImageView( + ImageViewCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateImageView && "Function requires " ); +# endif + + ImageView view; + Result result = static_cast( d.vkCreateImageView( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &view ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createImageView" ); + + return detail::createResultValueType( result, std::move( view ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImageView.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createImageViewUnique( + ImageViewCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateImageView && "Function requires " ); +# endif + + ImageView view; + Result result = static_cast( d.vkCreateImageView( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &view ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createImageViewUnique" ); + + return detail::createResultValueType( result, UniqueHandle( view, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImageView.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImageView( + static_cast( m_device ), static_cast( imageView ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImageView.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyImageView && "Function requires " ); +# endif + + d.vkDestroyImageView( m_device, static_cast( imageView ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImageView.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ImageView imageView, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyImageView( + static_cast( m_device ), static_cast( imageView ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImageView.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ImageView imageView, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyImageView && "Function requires " ); +# endif + + d.vkDestroyImageView( m_device, static_cast( imageView ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCommandPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createCommandPool( + CommandPoolCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, CommandPool * pCommandPool, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateCommandPool( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pCommandPool ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCommandPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createCommandPool( + CommandPoolCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateCommandPool && "Function requires " ); +# endif + + CommandPool commandPool; + Result result = static_cast( d.vkCreateCommandPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &commandPool ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createCommandPool" ); + + return detail::createResultValueType( result, std::move( commandPool ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCommandPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createCommandPoolUnique( + CommandPoolCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateCommandPool && "Function requires " ); +# endif + + CommandPool commandPool; + Result result = static_cast( d.vkCreateCommandPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &commandPool ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createCommandPoolUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( commandPool, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCommandPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCommandPool( + static_cast( m_device ), static_cast( commandPool ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCommandPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyCommandPool && "Function requires " ); +# endif + + d.vkDestroyCommandPool( m_device, static_cast( commandPool ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCommandPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( CommandPool commandPool, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCommandPool( + static_cast( m_device ), static_cast( commandPool ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCommandPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( CommandPool commandPool, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyCommandPool && "Function requires " ); +# endif + + d.vkDestroyCommandPool( m_device, static_cast( commandPool ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkResetCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkResetCommandPool( static_cast( m_device ), static_cast( commandPool ), static_cast( flags ) ) ); + } +#else + // wrapper function for command vkResetCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandPool.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::resetCommandPool( + CommandPool commandPool, CommandPoolResetFlags flags, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkResetCommandPool && "Function requires " ); +# endif + + Result result = + static_cast( d.vkResetCommandPool( m_device, static_cast( commandPool ), static_cast( flags ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetCommandPool" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( + CommandBufferAllocateInfo const * pAllocateInfo, CommandBuffer * pCommandBuffers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAllocateCommandBuffers( static_cast( m_device ), + reinterpret_cast( pAllocateInfo ), + reinterpret_cast( pCommandBuffers ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateCommandBuffers( + CommandBufferAllocateInfo const & allocateInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAllocateCommandBuffers && "Function requires " ); +# endif + + std::vector commandBuffers( allocateInfo.commandBufferCount ); + Result result = static_cast( d.vkAllocateCommandBuffers( + m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( commandBuffers.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffers" ); + + return detail::createResultValueType( result, std::move( commandBuffers ) ); + } + + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateCommandBuffers( + CommandBufferAllocateInfo const & allocateInfo, CommandBufferAllocator const & commandBufferAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAllocateCommandBuffers && "Function requires " ); +# endif + + std::vector commandBuffers( allocateInfo.commandBufferCount, {}, commandBufferAllocator ); + Result result = static_cast( d.vkAllocateCommandBuffers( + m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( commandBuffers.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffers" ); + + return detail::createResultValueType( result, std::move( commandBuffers ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, CommandBufferAllocator>>::type + Device::allocateCommandBuffersUnique( CommandBufferAllocateInfo const & allocateInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAllocateCommandBuffers && "Function requires " ); +# endif + + std::vector commandBuffers( allocateInfo.commandBufferCount ); + Result result = static_cast( d.vkAllocateCommandBuffers( + m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( commandBuffers.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" ); + std::vector, CommandBufferAllocator> uniqueCommandBuffers; + uniqueCommandBuffers.reserve( allocateInfo.commandBufferCount ); + detail::PoolFree deleter( *this, allocateInfo.commandPool, d ); + for ( auto const & commandBuffer : commandBuffers ) + { + uniqueCommandBuffers.push_back( UniqueHandle( commandBuffer, deleter ) ); + } + return detail::createResultValueType( result, std::move( uniqueCommandBuffers ) ); + } + + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, CommandBufferAllocator>>::type + Device::allocateCommandBuffersUnique( + CommandBufferAllocateInfo const & allocateInfo, CommandBufferAllocator const & commandBufferAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAllocateCommandBuffers && "Function requires " ); +# endif + + std::vector commandBuffers( allocateInfo.commandBufferCount ); + Result result = static_cast( d.vkAllocateCommandBuffers( + m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( commandBuffers.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" ); + std::vector, CommandBufferAllocator> uniqueCommandBuffers( commandBufferAllocator ); + uniqueCommandBuffers.reserve( allocateInfo.commandBufferCount ); + detail::PoolFree deleter( *this, allocateInfo.commandPool, d ); + for ( auto const & commandBuffer : commandBuffers ) + { + uniqueCommandBuffers.push_back( UniqueHandle( commandBuffer, deleter ) ); + } + return detail::createResultValueType( result, std::move( uniqueCommandBuffers ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeCommandBuffers.html + template ::type> + VULKAN_HPP_INLINE void Device::freeCommandBuffers( + CommandPool commandPool, uint32_t commandBufferCount, CommandBuffer const * pCommandBuffers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeCommandBuffers( static_cast( m_device ), + static_cast( commandPool ), + commandBufferCount, + reinterpret_cast( pCommandBuffers ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeCommandBuffers.html + template ::type> + VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy const & commandBuffers, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkFreeCommandBuffers && "Function requires " ); +# endif + + d.vkFreeCommandBuffers( + m_device, static_cast( commandPool ), commandBuffers.size(), reinterpret_cast( commandBuffers.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeCommandBuffers.html + template ::type> + VULKAN_HPP_INLINE void( Device::free )( CommandPool commandPool, uint32_t commandBufferCount, CommandBuffer const * pCommandBuffers, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkFreeCommandBuffers( static_cast( m_device ), + static_cast( commandPool ), + commandBufferCount, + reinterpret_cast( pCommandBuffers ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeCommandBuffers.html + template ::type> + VULKAN_HPP_INLINE void( Device::free )( CommandPool commandPool, ArrayProxy const & commandBuffers, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkFreeCommandBuffers && "Function requires " ); +# endif + + d.vkFreeCommandBuffers( + m_device, static_cast( commandPool ), commandBuffers.size(), reinterpret_cast( commandBuffers.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBeginCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBeginCommandBuffer.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::begin( CommandBufferBeginInfo const * pBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkBeginCommandBuffer( static_cast( m_commandBuffer ), reinterpret_cast( pBeginInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBeginCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBeginCommandBuffer.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::begin( CommandBufferBeginInfo const & beginInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBeginCommandBuffer && "Function requires " ); +# endif + + Result result = static_cast( d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast( &beginInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::begin" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEndCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEndCommandBuffer.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::end( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEndCommandBuffer( static_cast( m_commandBuffer ) ) ); + } +#else + // wrapper function for command vkEndCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEndCommandBuffer.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::end( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEndCommandBuffer && "Function requires " ); +# endif + + Result result = static_cast( d.vkEndCommandBuffer( m_commandBuffer ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::end" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkResetCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandBuffer.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkResetCommandBuffer( static_cast( m_commandBuffer ), static_cast( flags ) ) ); + } +#else + // wrapper function for command vkResetCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandBuffer.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::reset( CommandBufferResetFlags flags, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkResetCommandBuffer && "Function requires " ); +# endif + + Result result = static_cast( d.vkResetCommandBuffer( m_commandBuffer, static_cast( flags ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::reset" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkCmdCopyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, BufferCopy const * pRegions, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBuffer( static_cast( m_commandBuffer ), + static_cast( srcBuffer ), + static_cast( dstBuffer ), + regionCount, + reinterpret_cast( pRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy const & regions, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyBuffer && "Function requires " ); +# endif + + d.vkCmdCopyBuffer( m_commandBuffer, + static_cast( srcBuffer ), + static_cast( dstBuffer ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, + ImageLayout srcImageLayout, + Image dstImage, + ImageLayout dstImageLayout, + uint32_t regionCount, + ImageCopy const * pRegions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImage( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regionCount, + reinterpret_cast( pRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImage( + Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy const & regions, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyImage && "Function requires " ); +# endif + + d.vkCmdCopyImage( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyBufferToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( + Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, BufferImageCopy const * pRegions, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBufferToImage( static_cast( m_commandBuffer ), + static_cast( srcBuffer ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regionCount, + reinterpret_cast( pRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBufferToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( + Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy const & regions, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyBufferToImage && "Function requires " ); +# endif + + d.vkCmdCopyBufferToImage( m_commandBuffer, + static_cast( srcBuffer ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImageToBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( + Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, BufferImageCopy const * pRegions, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImageToBuffer( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstBuffer ), + regionCount, + reinterpret_cast( pRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImageToBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( + Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy const & regions, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyImageToBuffer && "Function requires " ); +# endif + + d.vkCmdCopyImageToBuffer( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstBuffer ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdUpdateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateBuffer.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, void const * pData, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdUpdateBuffer( static_cast( m_commandBuffer ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( dataSize ), + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdUpdateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateBuffer.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy const & data, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdUpdateBuffer && "Function requires " ); +# endif + + d.vkCmdUpdateBuffer( m_commandBuffer, + static_cast( dstBuffer ), + static_cast( dstOffset ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdFillBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillBuffer.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdFillBuffer( static_cast( m_commandBuffer ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( size ), + data ); + } + + // wrapper function for command vkCmdPipelineBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + DependencyFlags dependencyFlags, + uint32_t memoryBarrierCount, + MemoryBarrier const * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + BufferMemoryBarrier const * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + ImageMemoryBarrier const * pImageMemoryBarriers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPipelineBarrier( static_cast( m_commandBuffer ), + static_cast( srcStageMask ), + static_cast( dstStageMask ), + static_cast( dependencyFlags ), + memoryBarrierCount, + reinterpret_cast( pMemoryBarriers ), + bufferMemoryBarrierCount, + reinterpret_cast( pBufferMemoryBarriers ), + imageMemoryBarrierCount, + reinterpret_cast( pImageMemoryBarriers ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPipelineBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + DependencyFlags dependencyFlags, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPipelineBarrier && "Function requires " ); +# endif + + d.vkCmdPipelineBarrier( m_commandBuffer, + static_cast( srcStageMask ), + static_cast( dstStageMask ), + static_cast( dependencyFlags ), + memoryBarriers.size(), + reinterpret_cast( memoryBarriers.data() ), + bufferMemoryBarriers.size(), + reinterpret_cast( bufferMemoryBarriers.data() ), + imageMemoryBarriers.size(), + reinterpret_cast( imageMemoryBarriers.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQuery.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginQuery( + static_cast( m_commandBuffer ), static_cast( queryPool ), query, static_cast( flags ) ); + } + + // wrapper function for command vkCmdEndQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQuery.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndQuery( static_cast( m_commandBuffer ), static_cast( queryPool ), query ); + } + + // wrapper function for command vkCmdResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetQueryPool.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResetQueryPool( static_cast( m_commandBuffer ), static_cast( queryPool ), firstQuery, queryCount ); + } + + // wrapper function for command vkCmdWriteTimestamp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteTimestamp( + static_cast( m_commandBuffer ), static_cast( pipelineStage ), static_cast( queryPool ), query ); + } + + // wrapper function for command vkCmdCopyQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResults.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Buffer dstBuffer, + DeviceSize dstOffset, + DeviceSize stride, + QueryResultFlags flags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyQueryPoolResults( static_cast( m_commandBuffer ), + static_cast( queryPool ), + firstQuery, + queryCount, + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( stride ), + static_cast( flags ) ); + } + + // wrapper function for command vkCmdExecuteCommands, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteCommands.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, CommandBuffer const * pCommandBuffers, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdExecuteCommands( static_cast( m_commandBuffer ), commandBufferCount, reinterpret_cast( pCommandBuffers ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdExecuteCommands, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteCommands.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy const & commandBuffers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdExecuteCommands && "Function requires " ); +# endif + + d.vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size(), reinterpret_cast( commandBuffers.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateEvent.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createEvent( + EventCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, Event * pEvent, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateEvent( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pEvent ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateEvent.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createEvent( + EventCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateEvent && "Function requires " ); +# endif + + Event event; + Result result = static_cast( d.vkCreateEvent( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &event ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createEvent" ); + + return detail::createResultValueType( result, std::move( event ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateEvent.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createEventUnique( + EventCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateEvent && "Function requires " ); +# endif + + Event event; + Result result = static_cast( d.vkCreateEvent( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &event ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createEventUnique" ); + + return detail::createResultValueType( result, UniqueHandle( event, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyEvent.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyEvent( Event event, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyEvent( static_cast( m_device ), static_cast( event ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyEvent.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyEvent && "Function requires " ); +# endif + + d.vkDestroyEvent( m_device, static_cast( event ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyEvent.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Event event, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyEvent( static_cast( m_device ), static_cast( event ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyEvent.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Event event, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyEvent && "Function requires " ); +# endif + + d.vkDestroyEvent( m_device, static_cast( event ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetEventStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEventStatus.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getEventStatus( Event event, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetEventStatus( static_cast( m_device ), static_cast( event ) ) ); + } +#else + // wrapper function for command vkGetEventStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEventStatus.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getEventStatus( Event event, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetEventStatus && "Function requires " ); +# endif + + Result result = static_cast( d.vkGetEventStatus( m_device, static_cast( event ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } ); + + return static_cast( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetEvent.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setEvent( Event event, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSetEvent( static_cast( m_device ), static_cast( event ) ) ); + } +#else + // wrapper function for command vkSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetEvent.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setEvent( Event event, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetEvent && "Function requires " ); +# endif + + Result result = static_cast( d.vkSetEvent( m_device, static_cast( event ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setEvent" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetEvent.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::resetEvent( Event event, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkResetEvent( static_cast( m_device ), static_cast( event ) ) ); + } +#else + // wrapper function for command vkResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetEvent.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::resetEvent( Event event, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkResetEvent && "Function requires " ); +# endif + + Result result = static_cast( d.vkResetEvent( m_device, static_cast( event ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetEvent" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkCreateBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferView.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createBufferView( + BufferViewCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, BufferView * pView, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateBufferView( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pView ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferView.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createBufferView( + BufferViewCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateBufferView && "Function requires " ); +# endif + + BufferView view; + Result result = static_cast( d.vkCreateBufferView( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &view ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferView" ); + + return detail::createResultValueType( result, std::move( view ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferView.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createBufferViewUnique( + BufferViewCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateBufferView && "Function requires " ); +# endif + + BufferView view; + Result result = static_cast( d.vkCreateBufferView( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &view ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferViewUnique" ); + + return detail::createResultValueType( result, UniqueHandle( view, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferView.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferView( + static_cast( m_device ), static_cast( bufferView ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferView.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyBufferView && "Function requires " ); +# endif + + d.vkDestroyBufferView( m_device, static_cast( bufferView ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferView.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( BufferView bufferView, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferView( + static_cast( m_device ), static_cast( bufferView ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferView.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( BufferView bufferView, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyBufferView && "Function requires " ); +# endif + + d.vkDestroyBufferView( m_device, static_cast( bufferView ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderModule.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createShaderModule( + ShaderModuleCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, ShaderModule * pShaderModule, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateShaderModule( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pShaderModule ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderModule.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createShaderModule( + ShaderModuleCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateShaderModule && "Function requires " ); +# endif + + ShaderModule shaderModule; + Result result = static_cast( d.vkCreateShaderModule( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &shaderModule ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createShaderModule" ); + + return detail::createResultValueType( result, std::move( shaderModule ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderModule.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createShaderModuleUnique( + ShaderModuleCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateShaderModule && "Function requires " ); +# endif + + ShaderModule shaderModule; + Result result = static_cast( d.vkCreateShaderModule( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &shaderModule ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createShaderModuleUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( shaderModule, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderModule.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyShaderModule( + static_cast( m_device ), static_cast( shaderModule ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderModule.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyShaderModule && "Function requires " ); +# endif + + d.vkDestroyShaderModule( m_device, static_cast( shaderModule ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderModule.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ShaderModule shaderModule, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyShaderModule( + static_cast( m_device ), static_cast( shaderModule ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderModule.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ShaderModule shaderModule, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyShaderModule && "Function requires " ); +# endif + + d.vkDestroyShaderModule( m_device, static_cast( shaderModule ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreatePipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineCache.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createPipelineCache( + PipelineCacheCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, PipelineCache * pPipelineCache, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreatePipelineCache( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelineCache ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreatePipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineCache.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createPipelineCache( + PipelineCacheCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePipelineCache && "Function requires " ); +# endif + + PipelineCache pipelineCache; + Result result = static_cast( d.vkCreatePipelineCache( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipelineCache ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineCache" ); + + return detail::createResultValueType( result, std::move( pipelineCache ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreatePipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineCache.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createPipelineCacheUnique( + PipelineCacheCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePipelineCache && "Function requires " ); +# endif + + PipelineCache pipelineCache; + Result result = static_cast( d.vkCreatePipelineCache( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipelineCache ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineCacheUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( pipelineCache, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineCache.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineCache( + static_cast( m_device ), static_cast( pipelineCache ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineCache.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPipelineCache && "Function requires " ); +# endif + + d.vkDestroyPipelineCache( m_device, static_cast( pipelineCache ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineCache.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( PipelineCache pipelineCache, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineCache( + static_cast( m_device ), static_cast( pipelineCache ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineCache.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( PipelineCache pipelineCache, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPipelineCache && "Function requires " ); +# endif + + d.vkDestroyPipelineCache( m_device, static_cast( pipelineCache ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineCacheData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineCacheData.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineCacheData( + PipelineCache pipelineCache, size_t * pDataSize, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPipelineCacheData( static_cast( m_device ), static_cast( pipelineCache ), pDataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineCacheData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineCacheData.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineCacheData( + PipelineCache pipelineCache, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineCacheData && "Function requires " ); +# endif + + std::vector data; + size_t dataSize; + Result result; + do + { + result = static_cast( d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( + d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), &dataSize, reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineCacheData" ); + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + return detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetPipelineCacheData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineCacheData.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineCacheData( + PipelineCache pipelineCache, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineCacheData && "Function requires " ); +# endif + + std::vector data( uint8_tAllocator ); + size_t dataSize; + Result result; + do + { + result = static_cast( d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( + d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), &dataSize, reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineCacheData" ); + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkMergePipelineCaches, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergePipelineCaches.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::mergePipelineCaches( + PipelineCache dstCache, uint32_t srcCacheCount, PipelineCache const * pSrcCaches, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkMergePipelineCaches( + static_cast( m_device ), static_cast( dstCache ), srcCacheCount, reinterpret_cast( pSrcCaches ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkMergePipelineCaches, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergePipelineCaches.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::mergePipelineCaches( + PipelineCache dstCache, ArrayProxy const & srcCaches, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkMergePipelineCaches && "Function requires " ); +# endif + + Result result = static_cast( d.vkMergePipelineCaches( + m_device, static_cast( dstCache ), srcCaches.size(), reinterpret_cast( srcCaches.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::mergePipelineCaches" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, + uint32_t createInfoCount, + ComputePipelineCreateInfo const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateComputePipelines( static_cast( m_device ), + static_cast( pipelineCache ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelines ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createComputePipelines( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateComputePipelines && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelines", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createComputePipelines( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateComputePipelines && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size(), {}, pipelineAllocator ); + Result result = static_cast( d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelines", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createComputePipeline( + PipelineCache pipelineCache, ComputePipelineCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateComputePipelines && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipeline", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + + return { result, pipeline }; + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createComputePipelinesUnique( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateComputePipelines && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines; + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createComputePipelinesUnique( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateComputePipelines && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createComputePipelineUnique( + PipelineCache pipelineCache, ComputePipelineCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateComputePipelines && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateComputePipelines( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelineUnique", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + + return ResultValue>( + result, UniqueHandle( pipeline, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipeline.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipeline( + static_cast( m_device ), static_cast( pipeline ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipeline.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPipeline && "Function requires " ); +# endif + + d.vkDestroyPipeline( m_device, static_cast( pipeline ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipeline.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Pipeline pipeline, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipeline( + static_cast( m_device ), static_cast( pipeline ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipeline.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Pipeline pipeline, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPipeline && "Function requires " ); +# endif + + d.vkDestroyPipeline( m_device, static_cast( pipeline ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreatePipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineLayout.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createPipelineLayout( + PipelineLayoutCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, PipelineLayout * pPipelineLayout, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreatePipelineLayout( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelineLayout ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreatePipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineLayout.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createPipelineLayout( + PipelineLayoutCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePipelineLayout && "Function requires " ); +# endif + + PipelineLayout pipelineLayout; + Result result = static_cast( d.vkCreatePipelineLayout( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipelineLayout ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineLayout" ); + + return detail::createResultValueType( result, std::move( pipelineLayout ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreatePipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineLayout.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createPipelineLayoutUnique( + PipelineLayoutCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePipelineLayout && "Function requires " ); +# endif + + PipelineLayout pipelineLayout; + Result result = static_cast( d.vkCreatePipelineLayout( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipelineLayout ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineLayoutUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( pipelineLayout, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineLayout.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineLayout( + static_cast( m_device ), static_cast( pipelineLayout ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineLayout.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPipelineLayout && "Function requires " ); +# endif + + d.vkDestroyPipelineLayout( m_device, static_cast( pipelineLayout ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineLayout.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( PipelineLayout pipelineLayout, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineLayout( + static_cast( m_device ), static_cast( pipelineLayout ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineLayout.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( PipelineLayout pipelineLayout, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPipelineLayout && "Function requires " ); +# endif + + d.vkDestroyPipelineLayout( m_device, static_cast( pipelineLayout ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSampler.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSampler( + SamplerCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, Sampler * pSampler, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateSampler( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSampler ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSampler.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createSampler( + SamplerCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSampler && "Function requires " ); +# endif + + Sampler sampler; + Result result = static_cast( d.vkCreateSampler( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &sampler ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSampler" ); + + return detail::createResultValueType( result, std::move( sampler ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSampler.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSamplerUnique( + SamplerCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSampler && "Function requires " ); +# endif + + Sampler sampler; + Result result = static_cast( d.vkCreateSampler( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &sampler ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerUnique" ); + + return detail::createResultValueType( result, UniqueHandle( sampler, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySampler.html + template ::type> + VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySampler( static_cast( m_device ), static_cast( sampler ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySampler.html + template ::type> + VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySampler && "Function requires " ); +# endif + + d.vkDestroySampler( m_device, static_cast( sampler ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySampler.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Sampler sampler, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySampler( static_cast( m_device ), static_cast( sampler ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySampler.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Sampler sampler, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySampler && "Function requires " ); +# endif + + d.vkDestroySampler( m_device, static_cast( sampler ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorSetLayout.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( + DescriptorSetLayoutCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, DescriptorSetLayout * pSetLayout, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDescriptorSetLayout( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSetLayout ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorSetLayout.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createDescriptorSetLayout( + DescriptorSetLayoutCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDescriptorSetLayout && "Function requires " ); +# endif + + DescriptorSetLayout setLayout; + Result result = static_cast( d.vkCreateDescriptorSetLayout( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &setLayout ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorSetLayout" ); + + return detail::createResultValueType( result, std::move( setLayout ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorSetLayout.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDescriptorSetLayoutUnique( + DescriptorSetLayoutCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDescriptorSetLayout && "Function requires " ); +# endif + + DescriptorSetLayout setLayout; + Result result = static_cast( d.vkCreateDescriptorSetLayout( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &setLayout ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorSetLayoutUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( setLayout, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorSetLayout.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( + DescriptorSetLayout descriptorSetLayout, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorSetLayout( static_cast( m_device ), + static_cast( descriptorSetLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorSetLayout.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( + DescriptorSetLayout descriptorSetLayout, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDescriptorSetLayout && "Function requires " ); +# endif + + d.vkDestroyDescriptorSetLayout( + m_device, static_cast( descriptorSetLayout ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorSetLayout.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( DescriptorSetLayout descriptorSetLayout, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorSetLayout( static_cast( m_device ), + static_cast( descriptorSetLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorSetLayout.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( DescriptorSetLayout descriptorSetLayout, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDescriptorSetLayout && "Function requires " ); +# endif + + d.vkDestroyDescriptorSetLayout( + m_device, static_cast( descriptorSetLayout ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDescriptorPool( + DescriptorPoolCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, DescriptorPool * pDescriptorPool, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDescriptorPool( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pDescriptorPool ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createDescriptorPool( + DescriptorPoolCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDescriptorPool && "Function requires " ); +# endif + + DescriptorPool descriptorPool; + Result result = static_cast( d.vkCreateDescriptorPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &descriptorPool ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorPool" ); + + return detail::createResultValueType( result, std::move( descriptorPool ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDescriptorPoolUnique( + DescriptorPoolCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDescriptorPool && "Function requires " ); +# endif + + DescriptorPool descriptorPool; + Result result = static_cast( d.vkCreateDescriptorPool( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &descriptorPool ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorPoolUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( descriptorPool, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorPool( + static_cast( m_device ), static_cast( descriptorPool ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDescriptorPool && "Function requires " ); +# endif + + d.vkDestroyDescriptorPool( m_device, static_cast( descriptorPool ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( DescriptorPool descriptorPool, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorPool( + static_cast( m_device ), static_cast( descriptorPool ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorPool.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( DescriptorPool descriptorPool, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDescriptorPool && "Function requires " ); +# endif + + d.vkDestroyDescriptorPool( m_device, static_cast( descriptorPool ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkResetDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetDescriptorPool.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkResetDescriptorPool( + static_cast( m_device ), static_cast( descriptorPool ), static_cast( flags ) ) ); + } +#else + // wrapper function for command vkResetDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetDescriptorPool.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::resetDescriptorPool( + DescriptorPool descriptorPool, DescriptorPoolResetFlags flags, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkResetDescriptorPool && "Function requires " ); +# endif + + Result result = static_cast( + d.vkResetDescriptorPool( m_device, static_cast( descriptorPool ), static_cast( flags ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetDescriptorPool" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( + DescriptorSetAllocateInfo const * pAllocateInfo, DescriptorSet * pDescriptorSets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAllocateDescriptorSets( static_cast( m_device ), + reinterpret_cast( pAllocateInfo ), + reinterpret_cast( pDescriptorSets ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateDescriptorSets( + DescriptorSetAllocateInfo const & allocateInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAllocateDescriptorSets && "Function requires " ); +# endif + + std::vector descriptorSets( allocateInfo.descriptorSetCount ); + Result result = static_cast( d.vkAllocateDescriptorSets( + m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( descriptorSets.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSets" ); + + return detail::createResultValueType( result, std::move( descriptorSets ) ); + } + + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateDescriptorSets( + DescriptorSetAllocateInfo const & allocateInfo, DescriptorSetAllocator const & descriptorSetAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAllocateDescriptorSets && "Function requires " ); +# endif + + std::vector descriptorSets( allocateInfo.descriptorSetCount, {}, descriptorSetAllocator ); + Result result = static_cast( d.vkAllocateDescriptorSets( + m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( descriptorSets.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSets" ); + + return detail::createResultValueType( result, std::move( descriptorSets ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, DescriptorSetAllocator>>::type + Device::allocateDescriptorSetsUnique( DescriptorSetAllocateInfo const & allocateInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAllocateDescriptorSets && "Function requires " ); +# endif + + std::vector descriptorSets( allocateInfo.descriptorSetCount ); + Result result = static_cast( d.vkAllocateDescriptorSets( + m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( descriptorSets.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" ); + std::vector, DescriptorSetAllocator> uniqueDescriptorSets; + uniqueDescriptorSets.reserve( allocateInfo.descriptorSetCount ); + detail::PoolFree deleter( *this, allocateInfo.descriptorPool, d ); + for ( auto const & descriptorSet : descriptorSets ) + { + uniqueDescriptorSets.push_back( UniqueHandle( descriptorSet, deleter ) ); + } + return detail::createResultValueType( result, std::move( uniqueDescriptorSets ) ); + } + + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, DescriptorSetAllocator>>::type + Device::allocateDescriptorSetsUnique( + DescriptorSetAllocateInfo const & allocateInfo, DescriptorSetAllocator const & descriptorSetAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAllocateDescriptorSets && "Function requires " ); +# endif + + std::vector descriptorSets( allocateInfo.descriptorSetCount ); + Result result = static_cast( d.vkAllocateDescriptorSets( + m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( descriptorSets.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" ); + std::vector, DescriptorSetAllocator> uniqueDescriptorSets( descriptorSetAllocator ); + uniqueDescriptorSets.reserve( allocateInfo.descriptorSetCount ); + detail::PoolFree deleter( *this, allocateInfo.descriptorPool, d ); + for ( auto const & descriptorSet : descriptorSets ) + { + uniqueDescriptorSets.push_back( UniqueHandle( descriptorSet, deleter ) ); + } + return detail::createResultValueType( result, std::move( uniqueDescriptorSets ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeDescriptorSets.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::freeDescriptorSets( + DescriptorPool descriptorPool, uint32_t descriptorSetCount, DescriptorSet const * pDescriptorSets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkFreeDescriptorSets( static_cast( m_device ), + static_cast( descriptorPool ), + descriptorSetCount, + reinterpret_cast( pDescriptorSets ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeDescriptorSets.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::freeDescriptorSets( + DescriptorPool descriptorPool, ArrayProxy const & descriptorSets, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkFreeDescriptorSets && "Function requires " ); +# endif + + Result result = static_cast( d.vkFreeDescriptorSets( + m_device, static_cast( descriptorPool ), descriptorSets.size(), reinterpret_cast( descriptorSets.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::freeDescriptorSets" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeDescriptorSets.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result( Device::free )( + DescriptorPool descriptorPool, uint32_t descriptorSetCount, DescriptorSet const * pDescriptorSets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkFreeDescriptorSets( static_cast( m_device ), + static_cast( descriptorPool ), + descriptorSetCount, + reinterpret_cast( pDescriptorSets ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeDescriptorSets.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type( Device::free )( + DescriptorPool descriptorPool, ArrayProxy const & descriptorSets, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkFreeDescriptorSets && "Function requires " ); +# endif + + Result result = static_cast( d.vkFreeDescriptorSets( + m_device, static_cast( descriptorPool ), descriptorSets.size(), reinterpret_cast( descriptorSets.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::( Device::free )" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSets.html + template ::type> + VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, + WriteDescriptorSet const * pDescriptorWrites, + uint32_t descriptorCopyCount, + CopyDescriptorSet const * pDescriptorCopies, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateDescriptorSets( static_cast( m_device ), + descriptorWriteCount, + reinterpret_cast( pDescriptorWrites ), + descriptorCopyCount, + reinterpret_cast( pDescriptorCopies ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSets.html + template ::type> + VULKAN_HPP_INLINE void Device::updateDescriptorSets( + ArrayProxy const & descriptorWrites, ArrayProxy const & descriptorCopies, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkUpdateDescriptorSets && "Function requires " ); +# endif + + d.vkUpdateDescriptorSets( m_device, + descriptorWrites.size(), + reinterpret_cast( descriptorWrites.data() ), + descriptorCopies.size(), + reinterpret_cast( descriptorCopies.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipeline.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindPipeline( + static_cast( m_commandBuffer ), static_cast( pipelineBindPoint ), static_cast( pipeline ) ); + } + + // wrapper function for command vkCmdBindDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t firstSet, + uint32_t descriptorSetCount, + DescriptorSet const * pDescriptorSets, + uint32_t dynamicOffsetCount, + uint32_t const * pDynamicOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindDescriptorSets( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( layout ), + firstSet, + descriptorSetCount, + reinterpret_cast( pDescriptorSets ), + dynamicOffsetCount, + pDynamicOffsets ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & descriptorSets, + ArrayProxy const & dynamicOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindDescriptorSets && "Function requires " ); +# endif + + d.vkCmdBindDescriptorSets( m_commandBuffer, + static_cast( pipelineBindPoint ), + static_cast( layout ), + firstSet, + descriptorSets.size(), + reinterpret_cast( descriptorSets.data() ), + dynamicOffsets.size(), + dynamicOffsets.data() ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdClearColorImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearColorImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( + Image image, ImageLayout imageLayout, ClearColorValue const * pColor, uint32_t rangeCount, ImageSubresourceRange const * pRanges, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdClearColorImage( static_cast( m_commandBuffer ), + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( pColor ), + rangeCount, + reinterpret_cast( pRanges ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdClearColorImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearColorImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( + Image image, ImageLayout imageLayout, ClearColorValue const & color, ArrayProxy const & ranges, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdClearColorImage && "Function requires " ); +# endif + + d.vkCmdClearColorImage( m_commandBuffer, + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( &color ), + ranges.size(), + reinterpret_cast( ranges.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDispatch, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatch.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatch( static_cast( m_commandBuffer ), groupCountX, groupCountY, groupCountZ ); + } + + // wrapper function for command vkCmdDispatchIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchIndirect( static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ) ); + } + + // wrapper function for command vkCmdSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetEvent( static_cast( m_commandBuffer ), static_cast( event ), static_cast( stageMask ) ); + } + + // wrapper function for command vkCmdResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResetEvent( static_cast( m_commandBuffer ), static_cast( event ), static_cast( stageMask ) ); + } + + // wrapper function for command vkCmdWaitEvents, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::waitEvents( uint32_t eventCount, + Event const * pEvents, + PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + uint32_t memoryBarrierCount, + MemoryBarrier const * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + BufferMemoryBarrier const * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + ImageMemoryBarrier const * pImageMemoryBarriers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWaitEvents( static_cast( m_commandBuffer ), + eventCount, + reinterpret_cast( pEvents ), + static_cast( srcStageMask ), + static_cast( dstStageMask ), + memoryBarrierCount, + reinterpret_cast( pMemoryBarriers ), + bufferMemoryBarrierCount, + reinterpret_cast( pBufferMemoryBarriers ), + imageMemoryBarrierCount, + reinterpret_cast( pImageMemoryBarriers ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWaitEvents, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::waitEvents( ArrayProxy const & events, + PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdWaitEvents && "Function requires " ); +# endif + + d.vkCmdWaitEvents( m_commandBuffer, + events.size(), + reinterpret_cast( events.data() ), + static_cast( srcStageMask ), + static_cast( dstStageMask ), + memoryBarriers.size(), + reinterpret_cast( memoryBarriers.data() ), + bufferMemoryBarriers.size(), + reinterpret_cast( bufferMemoryBarriers.data() ), + imageMemoryBarriers.size(), + reinterpret_cast( imageMemoryBarriers.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushConstants( + PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, void const * pValues, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushConstants( static_cast( m_commandBuffer ), + static_cast( layout ), + static_cast( stageFlags ), + offset, + size, + pValues ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushConstants( + PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy const & values, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPushConstants && "Function requires " ); +# endif + + d.vkCmdPushConstants( m_commandBuffer, + static_cast( layout ), + static_cast( stageFlags ), + offset, + values.size() * sizeof( ValuesType ), + reinterpret_cast( values.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, + uint32_t createInfoCount, + GraphicsPipelineCreateInfo const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateGraphicsPipelines( static_cast( m_device ), + static_cast( pipelineCache ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelines ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createGraphicsPipelines( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateGraphicsPipelines && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelines", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createGraphicsPipelines( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateGraphicsPipelines && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size(), {}, pipelineAllocator ); + Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelines", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createGraphicsPipeline( + PipelineCache pipelineCache, GraphicsPipelineCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateGraphicsPipelines && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipeline", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + + return { result, pipeline }; + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createGraphicsPipelinesUnique( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateGraphicsPipelines && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines; + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createGraphicsPipelinesUnique( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateGraphicsPipelines && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createGraphicsPipelineUnique( + PipelineCache pipelineCache, GraphicsPipelineCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateGraphicsPipelines && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelineUnique", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + + return ResultValue>( + result, UniqueHandle( pipeline, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFramebuffer.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createFramebuffer( + FramebufferCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, Framebuffer * pFramebuffer, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateFramebuffer( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFramebuffer ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFramebuffer.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createFramebuffer( + FramebufferCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateFramebuffer && "Function requires " ); +# endif + + Framebuffer framebuffer; + Result result = static_cast( d.vkCreateFramebuffer( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &framebuffer ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createFramebuffer" ); + + return detail::createResultValueType( result, std::move( framebuffer ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFramebuffer.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createFramebufferUnique( + FramebufferCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateFramebuffer && "Function requires " ); +# endif + + Framebuffer framebuffer; + Result result = static_cast( d.vkCreateFramebuffer( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &framebuffer ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createFramebufferUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( framebuffer, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFramebuffer.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFramebuffer( + static_cast( m_device ), static_cast( framebuffer ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFramebuffer.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyFramebuffer && "Function requires " ); +# endif + + d.vkDestroyFramebuffer( m_device, static_cast( framebuffer ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFramebuffer.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Framebuffer framebuffer, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyFramebuffer( + static_cast( m_device ), static_cast( framebuffer ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFramebuffer.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( Framebuffer framebuffer, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyFramebuffer && "Function requires " ); +# endif + + d.vkDestroyFramebuffer( m_device, static_cast( framebuffer ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createRenderPass( + RenderPassCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, RenderPass * pRenderPass, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateRenderPass( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pRenderPass ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createRenderPass( + RenderPassCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRenderPass && "Function requires " ); +# endif + + RenderPass renderPass; + Result result = static_cast( d.vkCreateRenderPass( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &renderPass ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass" ); + + return detail::createResultValueType( result, std::move( renderPass ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRenderPassUnique( + RenderPassCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRenderPass && "Function requires " ); +# endif + + RenderPass renderPass; + Result result = static_cast( d.vkCreateRenderPass( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &renderPass ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPassUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( renderPass, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyRenderPass.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyRenderPass( + static_cast( m_device ), static_cast( renderPass ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyRenderPass.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyRenderPass && "Function requires " ); +# endif + + d.vkDestroyRenderPass( m_device, static_cast( renderPass ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyRenderPass.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( RenderPass renderPass, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyRenderPass( + static_cast( m_device ), static_cast( renderPass ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyRenderPass.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( RenderPass renderPass, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyRenderPass && "Function requires " ); +# endif + + d.vkDestroyRenderPass( m_device, static_cast( renderPass ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRenderAreaGranularity, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderAreaGranularity.html + template ::type> + VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D * pGranularity, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetRenderAreaGranularity( static_cast( m_device ), static_cast( renderPass ), reinterpret_cast( pGranularity ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRenderAreaGranularity, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderAreaGranularity.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRenderAreaGranularity && "Function requires " ); +# endif + + Extent2D granularity; + d.vkGetRenderAreaGranularity( m_device, static_cast( renderPass ), reinterpret_cast( &granularity ) ); + + return granularity; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetViewport, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewport.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, Viewport const * pViewports, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewport( static_cast( m_commandBuffer ), firstViewport, viewportCount, reinterpret_cast( pViewports ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewport, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewport.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy const & viewports, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetViewport && "Function requires " ); +# endif + + d.vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size(), reinterpret_cast( viewports.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetScissor, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissor.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, Rect2D const * pScissors, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetScissor( static_cast( m_commandBuffer ), firstScissor, scissorCount, reinterpret_cast( pScissors ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetScissor, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissor.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy const & scissors, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetScissor && "Function requires " ); +# endif + + d.vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size(), reinterpret_cast( scissors.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetLineWidth, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineWidth.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLineWidth( static_cast( m_commandBuffer ), lineWidth ); + } + + // wrapper function for command vkCmdSetDepthBias, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBias( static_cast( m_commandBuffer ), depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); + } + + // wrapper function for command vkCmdSetBlendConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetBlendConstants.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( float const blendConstants[4], Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetBlendConstants( static_cast( m_commandBuffer ), blendConstants ); + } + + // wrapper function for command vkCmdSetDepthBounds, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBounds.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBounds( static_cast( m_commandBuffer ), minDepthBounds, maxDepthBounds ); + } + + // wrapper function for command vkCmdSetStencilCompareMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilCompareMask.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilCompareMask( static_cast( m_commandBuffer ), static_cast( faceMask ), compareMask ); + } + + // wrapper function for command vkCmdSetStencilWriteMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilWriteMask.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilWriteMask( static_cast( m_commandBuffer ), static_cast( faceMask ), writeMask ); + } + + // wrapper function for command vkCmdSetStencilReference, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilReference.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilReference( static_cast( m_commandBuffer ), static_cast( faceMask ), reference ); + } + + // wrapper function for command vkCmdBindIndexBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindIndexBuffer( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( indexType ) ); + } + + // wrapper function for command vkCmdBindVertexBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( + uint32_t firstBinding, uint32_t bindingCount, Buffer const * pBuffers, DeviceSize const * pOffsets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindVertexBuffers( static_cast( m_commandBuffer ), + firstBinding, + bindingCount, + reinterpret_cast( pBuffers ), + reinterpret_cast( pOffsets ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindVertexBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( + uint32_t firstBinding, ArrayProxy const & buffers, ArrayProxy const & offsets, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindVertexBuffers && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBindVertexBuffers( m_commandBuffer, + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDraw, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDraw.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDraw( static_cast( m_commandBuffer ), vertexCount, instanceCount, firstVertex, firstInstance ); + } + + // wrapper function for command vkCmdDrawIndexed, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexed.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( + uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexed( static_cast( m_commandBuffer ), indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); + } + + // wrapper function for command vkCmdDrawIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirect( + static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + // wrapper function for command vkCmdDrawIndexedIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexedIndirect( + static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + // wrapper function for command vkCmdBlitImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, + ImageLayout srcImageLayout, + Image dstImage, + ImageLayout dstImageLayout, + uint32_t regionCount, + ImageBlit const * pRegions, + Filter filter, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBlitImage( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regionCount, + reinterpret_cast( pRegions ), + static_cast( filter ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBlitImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, + ImageLayout srcImageLayout, + Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions, + Filter filter, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBlitImage && "Function requires " ); +# endif + + d.vkCmdBlitImage( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ), + static_cast( filter ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdClearDepthStencilImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearDepthStencilImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, + ImageLayout imageLayout, + ClearDepthStencilValue const * pDepthStencil, + uint32_t rangeCount, + ImageSubresourceRange const * pRanges, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdClearDepthStencilImage( static_cast( m_commandBuffer ), + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( pDepthStencil ), + rangeCount, + reinterpret_cast( pRanges ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdClearDepthStencilImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearDepthStencilImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, + ImageLayout imageLayout, + ClearDepthStencilValue const & depthStencil, + ArrayProxy const & ranges, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdClearDepthStencilImage && "Function requires " ); +# endif + + d.vkCmdClearDepthStencilImage( m_commandBuffer, + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( &depthStencil ), + ranges.size(), + reinterpret_cast( ranges.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdClearAttachments, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearAttachments.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( + uint32_t attachmentCount, ClearAttachment const * pAttachments, uint32_t rectCount, ClearRect const * pRects, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdClearAttachments( static_cast( m_commandBuffer ), + attachmentCount, + reinterpret_cast( pAttachments ), + rectCount, + reinterpret_cast( pRects ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdClearAttachments, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearAttachments.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( + ArrayProxy const & attachments, ArrayProxy const & rects, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdClearAttachments && "Function requires " ); +# endif + + d.vkCmdClearAttachments( m_commandBuffer, + attachments.size(), + reinterpret_cast( attachments.data() ), + rects.size(), + reinterpret_cast( rects.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdResolveImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, + ImageLayout srcImageLayout, + Image dstImage, + ImageLayout dstImageLayout, + uint32_t regionCount, + ImageResolve const * pRegions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResolveImage( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regionCount, + reinterpret_cast( pRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdResolveImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::resolveImage( + Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy const & regions, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdResolveImage && "Function requires " ); +# endif + + d.vkCmdResolveImage( m_commandBuffer, + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( RenderPassBeginInfo const * pRenderPassBegin, SubpassContents contents, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderPass( static_cast( m_commandBuffer ), + reinterpret_cast( pRenderPassBegin ), + static_cast( contents ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( RenderPassBeginInfo const & renderPassBegin, SubpassContents contents, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginRenderPass && "Function requires " ); +# endif + + d.vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast( &renderPassBegin ), static_cast( contents ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdNextSubpass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdNextSubpass( static_cast( m_commandBuffer ), static_cast( contents ) ); + } + + // wrapper function for command vkCmdEndRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRenderPass( static_cast( m_commandBuffer ) ); + } + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkEnumerateInstanceVersion, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceVersion.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result enumerateInstanceVersion( uint32_t * pApiVersion, Dispatch const & d ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumerateInstanceVersion( pApiVersion ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumerateInstanceVersion, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceVersion.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type enumerateInstanceVersion( Dispatch const & d ) + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumerateInstanceVersion && "Function requires " ); +# endif + + uint32_t apiVersion; + Result result = static_cast( d.vkEnumerateInstanceVersion( &apiVersion ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceVersion" ); + + return detail::createResultValueType( result, std::move( apiVersion ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindBufferMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindBufferMemory2( uint32_t bindInfoCount, BindBufferMemoryInfo const * pBindInfos, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkBindBufferMemory2( static_cast( m_device ), bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindBufferMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindBufferMemory2( + ArrayProxy const & bindInfos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindBufferMemory2 && "Function requires or " ); +# endif + + Result result = + static_cast( d.vkBindBufferMemory2( m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindImageMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindImageMemory2( uint32_t bindInfoCount, BindImageMemoryInfo const * pBindInfos, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkBindImageMemory2( static_cast( m_device ), bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindImageMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindImageMemory2( + ArrayProxy const & bindInfos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindImageMemory2 && "Function requires or " ); +# endif + + Result result = + static_cast( d.vkBindImageMemory2( m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceGroupPeerMemoryFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeatures.html + template ::type> + VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeatures( + uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlags * pPeerMemoryFeatures, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceGroupPeerMemoryFeatures( + static_cast( m_device ), heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast( pPeerMemoryFeatures ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceGroupPeerMemoryFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeatures.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeatures( + uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceGroupPeerMemoryFeatures && + "Function requires or " ); +# endif + + PeerMemoryFeatureFlags peerMemoryFeatures; + d.vkGetDeviceGroupPeerMemoryFeatures( + m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast( &peerMemoryFeatures ) ); + + return peerMemoryFeatures; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDeviceMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMask.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDeviceMask( static_cast( m_commandBuffer ), deviceMask ); + } + + // wrapper function for command vkEnumeratePhysicalDeviceGroups, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroups.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroups( + uint32_t * pPhysicalDeviceGroupCount, PhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumeratePhysicalDeviceGroups( static_cast( m_instance ), + pPhysicalDeviceGroupCount, + reinterpret_cast( pPhysicalDeviceGroupProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDeviceGroups, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroups.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::enumeratePhysicalDeviceGroups( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDeviceGroups && + "Function requires or " ); +# endif + + std::vector physicalDeviceGroupProperties; + uint32_t physicalDeviceGroupCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceGroups( + m_instance, &physicalDeviceGroupCount, reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroups" ); + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + return detail::createResultValueType( result, std::move( physicalDeviceGroupProperties ) ); + } + + // wrapper function for command vkEnumeratePhysicalDeviceGroups, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroups.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::enumeratePhysicalDeviceGroups( PhysicalDeviceGroupPropertiesAllocator const & physicalDeviceGroupPropertiesAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDeviceGroups && + "Function requires or " ); +# endif + + std::vector physicalDeviceGroupProperties( physicalDeviceGroupPropertiesAllocator ); + uint32_t physicalDeviceGroupCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDeviceGroups( m_instance, &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceGroups( + m_instance, &physicalDeviceGroupCount, reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroups" ); + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + return detail::createResultValueType( result, std::move( physicalDeviceGroupProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2( + ImageMemoryRequirementsInfo2 const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageMemoryRequirements2( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getImageMemoryRequirements2( ImageMemoryRequirementsInfo2 const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageMemoryRequirements2 && + "Function requires or " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetImageMemoryRequirements2( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirements2( ImageMemoryRequirementsInfo2 const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageMemoryRequirements2 && + "Function requires or " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetImageMemoryRequirements2( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html + template ::type> + VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2( + BufferMemoryRequirementsInfo2 const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetBufferMemoryRequirements2( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getBufferMemoryRequirements2( BufferMemoryRequirementsInfo2 const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferMemoryRequirements2 && + "Function requires or " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetBufferMemoryRequirements2( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetBufferMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirements2( BufferMemoryRequirementsInfo2 const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferMemoryRequirements2 && + "Function requires or " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetBufferMemoryRequirements2( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSparseMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2( ImageSparseMemoryRequirementsInfo2 const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSparseMemoryRequirements2( static_cast( m_device ), + reinterpret_cast( pInfo ), + pSparseMemoryRequirementCount, + reinterpret_cast( pSparseMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSparseMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2.html + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2( ImageSparseMemoryRequirementsInfo2 const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageSparseMemoryRequirements2 && + "Function requires or " ); +# endif + + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements2( + m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements2( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } + + // wrapper function for command vkGetImageSparseMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2.html + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2( ImageSparseMemoryRequirementsInfo2 const & info, + SparseImageMemoryRequirements2Allocator const & sparseImageMemoryRequirements2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageSparseMemoryRequirements2 && + "Function requires or " ); +# endif + + std::vector sparseMemoryRequirements( sparseImageMemoryRequirements2Allocator ); + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements2( + m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements2( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceFeatures2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2( PhysicalDeviceFeatures2 * pFeatures, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFeatures2( static_cast( m_physicalDevice ), reinterpret_cast( pFeatures ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFeatures2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFeatures2 && + "Function requires or " ); +# endif + + PhysicalDeviceFeatures2 features; + d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast( &features ) ); + + return features; + } + + // wrapper function for command vkGetPhysicalDeviceFeatures2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFeatures2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFeatures2 && + "Function requires or " ); +# endif + + StructureChain structureChain; + PhysicalDeviceFeatures2 & features = structureChain.template get(); + d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast( &features ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getProperties2( PhysicalDeviceProperties2 * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceProperties2( static_cast( m_physicalDevice ), reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceProperties2 PhysicalDevice::getProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceProperties2 && + "Function requires or " ); +# endif + + PhysicalDeviceProperties2 properties; + d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast( &properties ) ); + + return properties; + } + + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceProperties2 && + "Function requires or " ); +# endif + + StructureChain structureChain; + PhysicalDeviceProperties2 & properties = structureChain.template get(); + d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast( &properties ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2( Format format, FormatProperties2 * pFormatProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFormatProperties2( + static_cast( m_physicalDevice ), static_cast( format ), reinterpret_cast( pFormatProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE FormatProperties2 PhysicalDevice::getFormatProperties2( Format format, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFormatProperties2 && + "Function requires or " ); +# endif + + FormatProperties2 formatProperties; + d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); + + return formatProperties; + } + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFormatProperties2( Format format, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFormatProperties2 && + "Function requires or " ); +# endif + + StructureChain structureChain; + FormatProperties2 & formatProperties = structureChain.template get(); + d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2( + PhysicalDeviceImageFormatInfo2 const * pImageFormatInfo, ImageFormatProperties2 * pImageFormatProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( pImageFormatInfo ), + reinterpret_cast( pImageFormatProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getImageFormatProperties2( + PhysicalDeviceImageFormatInfo2 const & imageFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceImageFormatProperties2 && + "Function requires or " ); +# endif + + ImageFormatProperties2 imageFormatProperties; + Result result = + static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" ); + + return detail::createResultValueType( result, std::move( imageFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getImageFormatProperties2( + PhysicalDeviceImageFormatInfo2 const & imageFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceImageFormatProperties2 && + "Function requires or " ); +# endif + + StructureChain structureChain; + ImageFormatProperties2 & imageFormatProperties = structureChain.template get(); + Result result = + static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" ); + + return detail::createResultValueType( result, std::move( structureChain ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2( + uint32_t * pQueueFamilyPropertyCount, QueueFamilyProperties2 * pQueueFamilyProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceQueueFamilyProperties2( + static_cast( m_physicalDevice ), pQueueFamilyPropertyCount, reinterpret_cast( pQueueFamilyProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2( + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyProperties2 && + "Function requires or " ); +# endif + + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties2( + m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + queueFamilyProperties.resize( queueFamilyPropertyCount ); + } + return queueFamilyProperties; + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2( + QueueFamilyProperties2Allocator const & queueFamilyProperties2Allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyProperties2 && + "Function requires or " ); +# endif + + std::vector queueFamilyProperties( queueFamilyProperties2Allocator ); + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties2( + m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + queueFamilyProperties.resize( queueFamilyPropertyCount ); + } + return queueFamilyProperties; + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2( Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyProperties2 && + "Function requires or " ); +# endif + + std::vector structureChains; + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + structureChains.resize( queueFamilyPropertyCount ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = structureChains[i].template get().pNext; + } + d.vkGetPhysicalDeviceQueueFamilyProperties2( + m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + structureChains.resize( queueFamilyPropertyCount ); + } + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + structureChains[i].template get() = queueFamilyProperties[i]; + } + return structureChains; + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2( + StructureChainAllocator const & structureChainAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyProperties2 && + "Function requires or " ); +# endif + + std::vector structureChains( structureChainAllocator ); + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + structureChains.resize( queueFamilyPropertyCount ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = structureChains[i].template get().pNext; + } + d.vkGetPhysicalDeviceQueueFamilyProperties2( + m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + structureChains.resize( queueFamilyPropertyCount ); + } + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + structureChains[i].template get() = queueFamilyProperties[i]; + } + return structureChains; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2( PhysicalDeviceMemoryProperties2 * pMemoryProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceMemoryProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( pMemoryProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceMemoryProperties2 && + "Function requires or " ); +# endif + + PhysicalDeviceMemoryProperties2 memoryProperties; + d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); + + return memoryProperties; + } + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getMemoryProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceMemoryProperties2 && + "Function requires or " ); +# endif + + StructureChain structureChain; + PhysicalDeviceMemoryProperties2 & memoryProperties = structureChain.template get(); + d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2( + PhysicalDeviceSparseImageFormatInfo2 const * pFormatInfo, uint32_t * pPropertyCount, SparseImageFormatProperties2 * pProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( pFormatInfo ), + pPropertyCount, + reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSparseImageFormatProperties2 && + "Function requires or " ); +# endif + + std::vector properties; + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties2( + m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return properties; + } + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo, + SparseImageFormatProperties2Allocator const & sparseImageFormatProperties2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSparseImageFormatProperties2 && + "Function requires or " ); +# endif + + std::vector properties( sparseImageFormatProperties2Allocator ); + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties2( + m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return properties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkTrimCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPool.html + template ::type> + VULKAN_HPP_INLINE void Device::trimCommandPool( CommandPool commandPool, CommandPoolTrimFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkTrimCommandPool( static_cast( m_device ), static_cast( commandPool ), static_cast( flags ) ); + } + + // wrapper function for command vkGetDeviceQueue2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue2.html + template ::type> + VULKAN_HPP_INLINE void Device::getQueue2( DeviceQueueInfo2 const * pQueueInfo, Queue * pQueue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceQueue2( static_cast( m_device ), reinterpret_cast( pQueueInfo ), reinterpret_cast( pQueue ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceQueue2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Queue Device::getQueue2( DeviceQueueInfo2 const & queueInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceQueue2 && "Function requires " ); +# endif + + Queue queue; + d.vkGetDeviceQueue2( m_device, reinterpret_cast( &queueInfo ), reinterpret_cast( &queue ) ); + + return queue; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceExternalBufferProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferProperties.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferProperties( + PhysicalDeviceExternalBufferInfo const * pExternalBufferInfo, ExternalBufferProperties * pExternalBufferProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalBufferProperties( static_cast( m_physicalDevice ), + reinterpret_cast( pExternalBufferInfo ), + reinterpret_cast( pExternalBufferProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalBufferProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalBufferProperties PhysicalDevice::getExternalBufferProperties( + PhysicalDeviceExternalBufferInfo const & externalBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceExternalBufferProperties && + "Function requires or " ); +# endif + + ExternalBufferProperties externalBufferProperties; + d.vkGetPhysicalDeviceExternalBufferProperties( m_physicalDevice, + reinterpret_cast( &externalBufferInfo ), + reinterpret_cast( &externalBufferProperties ) ); + + return externalBufferProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceExternalFenceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFenceProperties.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getExternalFenceProperties( + PhysicalDeviceExternalFenceInfo const * pExternalFenceInfo, ExternalFenceProperties * pExternalFenceProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalFenceProperties( static_cast( m_physicalDevice ), + reinterpret_cast( pExternalFenceInfo ), + reinterpret_cast( pExternalFenceProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalFenceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFenceProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalFenceProperties PhysicalDevice::getExternalFenceProperties( + PhysicalDeviceExternalFenceInfo const & externalFenceInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceExternalFenceProperties && + "Function requires or " ); +# endif + + ExternalFenceProperties externalFenceProperties; + d.vkGetPhysicalDeviceExternalFenceProperties( m_physicalDevice, + reinterpret_cast( &externalFenceInfo ), + reinterpret_cast( &externalFenceProperties ) ); + + return externalFenceProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceExternalSemaphoreProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphoreProperties.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphoreProperties( + PhysicalDeviceExternalSemaphoreInfo const * pExternalSemaphoreInfo, ExternalSemaphoreProperties * pExternalSemaphoreProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalSemaphoreProperties( static_cast( m_physicalDevice ), + reinterpret_cast( pExternalSemaphoreInfo ), + reinterpret_cast( pExternalSemaphoreProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalSemaphoreProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphoreProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphoreProperties( + PhysicalDeviceExternalSemaphoreInfo const & externalSemaphoreInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceExternalSemaphoreProperties && + "Function requires or " ); +# endif + + ExternalSemaphoreProperties externalSemaphoreProperties; + d.vkGetPhysicalDeviceExternalSemaphoreProperties( m_physicalDevice, + reinterpret_cast( &externalSemaphoreInfo ), + reinterpret_cast( &externalSemaphoreProperties ) ); + + return externalSemaphoreProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDispatchBase, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBase.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( + uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchBase( static_cast( m_commandBuffer ), baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); + } + + // wrapper function for command vkCreateDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplate.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplate( DescriptorUpdateTemplateCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DescriptorUpdateTemplate * pDescriptorUpdateTemplate, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDescriptorUpdateTemplate( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pDescriptorUpdateTemplate ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplate.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createDescriptorUpdateTemplate( + DescriptorUpdateTemplateCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDescriptorUpdateTemplate && + "Function requires or " ); +# endif + + DescriptorUpdateTemplate descriptorUpdateTemplate; + Result result = static_cast( d.vkCreateDescriptorUpdateTemplate( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &descriptorUpdateTemplate ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplate" ); + + return detail::createResultValueType( result, std::move( descriptorUpdateTemplate ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplate.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createDescriptorUpdateTemplateUnique( + DescriptorUpdateTemplateCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDescriptorUpdateTemplate && + "Function requires or " ); +# endif + + DescriptorUpdateTemplate descriptorUpdateTemplate; + Result result = static_cast( d.vkCreateDescriptorUpdateTemplate( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &descriptorUpdateTemplate ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( descriptorUpdateTemplate, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplate.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplate( + DescriptorUpdateTemplate descriptorUpdateTemplate, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorUpdateTemplate( static_cast( m_device ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplate.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplate( + DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDescriptorUpdateTemplate && + "Function requires or " ); +# endif + + d.vkDestroyDescriptorUpdateTemplate( + m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplate.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorUpdateTemplate( static_cast( m_device ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplate.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDescriptorUpdateTemplate && + "Function requires or " ); +# endif + + d.vkDestroyDescriptorUpdateTemplate( + m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplate.html + template ::type> + VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplate( + DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, void const * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateDescriptorSetWithTemplate( static_cast( m_device ), + static_cast( descriptorSet ), + static_cast( descriptorUpdateTemplate ), + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplate.html + template ::type> + VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplate( + DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, DataType const & data, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkUpdateDescriptorSetWithTemplate && + "Function requires or " ); +# endif + + d.vkUpdateDescriptorSetWithTemplate( m_device, + static_cast( descriptorSet ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( &data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDescriptorSetLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html + template ::type> + VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSupport( + DescriptorSetLayoutCreateInfo const * pCreateInfo, DescriptorSetLayoutSupport * pSupport, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDescriptorSetLayoutSupport( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pSupport ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorSetLayoutSupport Device::getDescriptorSetLayoutSupport( DescriptorSetLayoutCreateInfo const & createInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDescriptorSetLayoutSupport && "Function requires or " ); +# endif + + DescriptorSetLayoutSupport support; + d.vkGetDescriptorSetLayoutSupport( + m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); + + return support; + } + + // wrapper function for command vkGetDescriptorSetLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getDescriptorSetLayoutSupport( DescriptorSetLayoutCreateInfo const & createInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDescriptorSetLayoutSupport && "Function requires or " ); +# endif + + StructureChain structureChain; + DescriptorSetLayoutSupport & support = structureChain.template get(); + d.vkGetDescriptorSetLayoutSupport( + m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateSamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversion.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversion( SamplerYcbcrConversionCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SamplerYcbcrConversion * pYcbcrConversion, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateSamplerYcbcrConversion( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pYcbcrConversion ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversion.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createSamplerYcbcrConversion( + SamplerYcbcrConversionCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSamplerYcbcrConversion && + "Function requires or " ); +# endif + + SamplerYcbcrConversion ycbcrConversion; + Result result = static_cast( d.vkCreateSamplerYcbcrConversion( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &ycbcrConversion ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversion" ); + + return detail::createResultValueType( result, std::move( ycbcrConversion ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversion.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createSamplerYcbcrConversionUnique( + SamplerYcbcrConversionCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSamplerYcbcrConversion && + "Function requires or " ); +# endif + + SamplerYcbcrConversion ycbcrConversion; + Result result = static_cast( d.vkCreateSamplerYcbcrConversion( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &ycbcrConversion ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( ycbcrConversion, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversion.html + template ::type> + VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversion( + SamplerYcbcrConversion ycbcrConversion, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySamplerYcbcrConversion( static_cast( m_device ), + static_cast( ycbcrConversion ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversion.html + template ::type> + VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversion( + SamplerYcbcrConversion ycbcrConversion, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySamplerYcbcrConversion && + "Function requires or " ); +# endif + + d.vkDestroySamplerYcbcrConversion( + m_device, static_cast( ycbcrConversion ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversion.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( SamplerYcbcrConversion ycbcrConversion, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySamplerYcbcrConversion( static_cast( m_device ), + static_cast( ycbcrConversion ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversion.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( SamplerYcbcrConversion ycbcrConversion, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySamplerYcbcrConversion && + "Function requires or " ); +# endif + + d.vkDestroySamplerYcbcrConversion( + m_device, static_cast( ycbcrConversion ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_2 === + + // wrapper function for command vkResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPool.html + template ::type> + VULKAN_HPP_INLINE void Device::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkResetQueryPool( static_cast( m_device ), static_cast( queryPool ), firstQuery, queryCount ); + } + + // wrapper function for command vkGetSemaphoreCounterValue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValue.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreCounterValue( Semaphore semaphore, uint64_t * pValue, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSemaphoreCounterValue( static_cast( m_device ), static_cast( semaphore ), pValue ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSemaphoreCounterValue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValue.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getSemaphoreCounterValue( Semaphore semaphore, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSemaphoreCounterValue && "Function requires or " ); +# endif + + uint64_t value; + Result result = static_cast( d.vkGetSemaphoreCounterValue( m_device, static_cast( semaphore ), &value ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreCounterValue" ); + + return detail::createResultValueType( result, std::move( value ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkWaitSemaphores, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphores.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphores( SemaphoreWaitInfo const * pWaitInfo, uint64_t timeout, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkWaitSemaphores( static_cast( m_device ), reinterpret_cast( pWaitInfo ), timeout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWaitSemaphores, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphores.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphores( SemaphoreWaitInfo const & waitInfo, uint64_t timeout, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWaitSemaphores && "Function requires or " ); +# endif + + Result result = static_cast( d.vkWaitSemaphores( m_device, reinterpret_cast( &waitInfo ), timeout ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphores", { Result::eSuccess, Result::eTimeout } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSignalSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphore.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::signalSemaphore( SemaphoreSignalInfo const * pSignalInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSignalSemaphore( static_cast( m_device ), reinterpret_cast( pSignalInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSignalSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphore.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::signalSemaphore( + SemaphoreSignalInfo const & signalInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSignalSemaphore && "Function requires or " ); +# endif + + Result result = static_cast( d.vkSignalSemaphore( m_device, reinterpret_cast( &signalInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphore" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferDeviceAddress, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddress.html + template ::type> + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddress( BufferDeviceAddressInfo const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetBufferDeviceAddress( static_cast( m_device ), reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferDeviceAddress, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddress.html + template ::type> + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddress( BufferDeviceAddressInfo const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferDeviceAddress && + "Function requires or or " ); +# endif + + VkDeviceAddress result = d.vkGetBufferDeviceAddress( m_device, reinterpret_cast( &info ) ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddress.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddress( BufferDeviceAddressInfo const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetBufferOpaqueCaptureAddress( static_cast( m_device ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddress.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddress( BufferDeviceAddressInfo const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferOpaqueCaptureAddress && + "Function requires or " ); +# endif + + uint64_t result = d.vkGetBufferOpaqueCaptureAddress( m_device, reinterpret_cast( &info ) ); + + return result; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddress.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddress( DeviceMemoryOpaqueCaptureAddressInfo const * pInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeviceMemoryOpaqueCaptureAddress( static_cast( m_device ), + reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddress.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddress( DeviceMemoryOpaqueCaptureAddressInfo const & info, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceMemoryOpaqueCaptureAddress && + "Function requires or " ); +# endif + + uint64_t result = d.vkGetDeviceMemoryOpaqueCaptureAddress( m_device, reinterpret_cast( &info ) ); + + return result; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndirectCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount( + Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirectCount( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + // wrapper function for command vkCmdDrawIndexedIndirectCount, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount( + Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexedIndirectCount( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + // wrapper function for command vkCreateRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createRenderPass2( + RenderPassCreateInfo2 const * pCreateInfo, AllocationCallbacks const * pAllocator, RenderPass * pRenderPass, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateRenderPass2( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pRenderPass ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createRenderPass2( + RenderPassCreateInfo2 const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRenderPass2 && "Function requires or " ); +# endif + + RenderPass renderPass; + Result result = static_cast( d.vkCreateRenderPass2( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &renderPass ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2" ); + + return detail::createResultValueType( result, std::move( renderPass ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRenderPass2Unique( + RenderPassCreateInfo2 const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRenderPass2 && "Function requires or " ); +# endif + + RenderPass renderPass; + Result result = static_cast( d.vkCreateRenderPass2( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &renderPass ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2Unique" ); + + return detail::createResultValueType( result, + UniqueHandle( renderPass, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2( + RenderPassBeginInfo const * pRenderPassBegin, SubpassBeginInfo const * pSubpassBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderPass2( static_cast( m_commandBuffer ), + reinterpret_cast( pRenderPassBegin ), + reinterpret_cast( pSubpassBeginInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2( + RenderPassBeginInfo const & renderPassBegin, SubpassBeginInfo const & subpassBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginRenderPass2 && "Function requires or " ); +# endif + + d.vkCmdBeginRenderPass2( + m_commandBuffer, reinterpret_cast( &renderPassBegin ), reinterpret_cast( &subpassBeginInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdNextSubpass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2( SubpassBeginInfo const * pSubpassBeginInfo, SubpassEndInfo const * pSubpassEndInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdNextSubpass2( static_cast( m_commandBuffer ), + reinterpret_cast( pSubpassBeginInfo ), + reinterpret_cast( pSubpassEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdNextSubpass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2( SubpassBeginInfo const & subpassBeginInfo, SubpassEndInfo const & subpassEndInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdNextSubpass2 && "Function requires or " ); +# endif + + d.vkCmdNextSubpass2( + m_commandBuffer, reinterpret_cast( &subpassBeginInfo ), reinterpret_cast( &subpassEndInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2( SubpassEndInfo const * pSubpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRenderPass2( static_cast( m_commandBuffer ), reinterpret_cast( pSubpassEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2( SubpassEndInfo const & subpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdEndRenderPass2 && "Function requires or " ); +# endif + + d.vkCmdEndRenderPass2( m_commandBuffer, reinterpret_cast( &subpassEndInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_3 === + + // wrapper function for command vkGetPhysicalDeviceToolProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolProperties.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getToolProperties( + uint32_t * pToolCount, PhysicalDeviceToolProperties * pToolProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceToolProperties( + static_cast( m_physicalDevice ), pToolCount, reinterpret_cast( pToolProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceToolProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getToolProperties( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceToolProperties && + "Function requires or " ); +# endif + + std::vector toolProperties; + uint32_t toolCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceToolProperties( m_physicalDevice, &toolCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( + d.vkGetPhysicalDeviceToolProperties( m_physicalDevice, &toolCount, reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolProperties" ); + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + return detail::createResultValueType( result, std::move( toolProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceToolProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolProperties.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getToolProperties( PhysicalDeviceToolPropertiesAllocator const & physicalDeviceToolPropertiesAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceToolProperties && + "Function requires or " ); +# endif + + std::vector toolProperties( physicalDeviceToolPropertiesAllocator ); + uint32_t toolCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceToolProperties( m_physicalDevice, &toolCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( + d.vkGetPhysicalDeviceToolProperties( m_physicalDevice, &toolCount, reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolProperties" ); + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + return detail::createResultValueType( result, std::move( toolProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreatePrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlot.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createPrivateDataSlot( + PrivateDataSlotCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, PrivateDataSlot * pPrivateDataSlot, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreatePrivateDataSlot( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPrivateDataSlot ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreatePrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlot.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createPrivateDataSlot( + PrivateDataSlotCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePrivateDataSlot && "Function requires or " ); +# endif + + PrivateDataSlot privateDataSlot; + Result result = static_cast( d.vkCreatePrivateDataSlot( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &privateDataSlot ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createPrivateDataSlot" ); + + return detail::createResultValueType( result, std::move( privateDataSlot ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreatePrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlot.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createPrivateDataSlotUnique( + PrivateDataSlotCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePrivateDataSlot && "Function requires or " ); +# endif + + PrivateDataSlot privateDataSlot; + Result result = static_cast( d.vkCreatePrivateDataSlot( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &privateDataSlot ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createPrivateDataSlotUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( privateDataSlot, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlot.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPrivateDataSlot( PrivateDataSlot privateDataSlot, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPrivateDataSlot( + static_cast( m_device ), static_cast( privateDataSlot ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlot.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPrivateDataSlot( PrivateDataSlot privateDataSlot, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPrivateDataSlot && "Function requires or " ); +# endif + + d.vkDestroyPrivateDataSlot( + m_device, static_cast( privateDataSlot ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlot.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( PrivateDataSlot privateDataSlot, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPrivateDataSlot( + static_cast( m_device ), static_cast( privateDataSlot ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlot.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( PrivateDataSlot privateDataSlot, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPrivateDataSlot && "Function requires or " ); +# endif + + d.vkDestroyPrivateDataSlot( + m_device, static_cast( privateDataSlot ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateData.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setPrivateData( + ObjectType objectType_, uint64_t objectHandle, PrivateDataSlot privateDataSlot, uint64_t data, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSetPrivateData( + static_cast( m_device ), static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), data ) ); + } +#else + // wrapper function for command vkSetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateData.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setPrivateData( + ObjectType objectType_, uint64_t objectHandle, PrivateDataSlot privateDataSlot, uint64_t data, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetPrivateData && "Function requires or " ); +# endif + + Result result = static_cast( + d.vkSetPrivateData( m_device, static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), data ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateData" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateData.html + template ::type> + VULKAN_HPP_INLINE void Device::getPrivateData( + ObjectType objectType_, uint64_t objectHandle, PrivateDataSlot privateDataSlot, uint64_t * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPrivateData( + static_cast( m_device ), static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateData.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getPrivateData( + ObjectType objectType_, uint64_t objectHandle, PrivateDataSlot privateDataSlot, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPrivateData && "Function requires or " ); +# endif + + uint64_t data; + d.vkGetPrivateData( m_device, static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), &data ); + + return data; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPipelineBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2( DependencyInfo const * pDependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPipelineBarrier2( static_cast( m_commandBuffer ), reinterpret_cast( pDependencyInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPipelineBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2( DependencyInfo const & dependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPipelineBarrier2 && "Function requires or " ); +# endif + + d.vkCmdPipelineBarrier2( m_commandBuffer, reinterpret_cast( &dependencyInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteTimestamp2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2( PipelineStageFlags2 stage, QueryPool queryPool, uint32_t query, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteTimestamp2( + static_cast( m_commandBuffer ), static_cast( stage ), static_cast( queryPool ), query ); + } + + // wrapper function for command vkQueueSubmit2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::submit2( uint32_t submitCount, SubmitInfo2 const * pSubmits, Fence fence, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkQueueSubmit2( static_cast( m_queue ), submitCount, reinterpret_cast( pSubmits ), static_cast( fence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueSubmit2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::submit2( + ArrayProxy const & submits, Fence fence, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkQueueSubmit2 && "Function requires or " ); +# endif + + Result result = static_cast( + d.vkQueueSubmit2( m_queue, submits.size(), reinterpret_cast( submits.data() ), static_cast( fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2( CopyBufferInfo2 const * pCopyBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBuffer2( static_cast( m_commandBuffer ), reinterpret_cast( pCopyBufferInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2( CopyBufferInfo2 const & copyBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyBuffer2 && "Function requires or " ); +# endif + + d.vkCmdCopyBuffer2( m_commandBuffer, reinterpret_cast( ©BufferInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImage2( CopyImageInfo2 const * pCopyImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImage2( static_cast( m_commandBuffer ), reinterpret_cast( pCopyImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImage2( CopyImageInfo2 const & copyImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyImage2 && "Function requires or " ); +# endif + + d.vkCmdCopyImage2( m_commandBuffer, reinterpret_cast( ©ImageInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyBufferToImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2( CopyBufferToImageInfo2 const * pCopyBufferToImageInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBufferToImage2( static_cast( m_commandBuffer ), reinterpret_cast( pCopyBufferToImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBufferToImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2( CopyBufferToImageInfo2 const & copyBufferToImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyBufferToImage2 && "Function requires or " ); +# endif + + d.vkCmdCopyBufferToImage2( m_commandBuffer, reinterpret_cast( ©BufferToImageInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImageToBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2( CopyImageToBufferInfo2 const * pCopyImageToBufferInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImageToBuffer2( static_cast( m_commandBuffer ), reinterpret_cast( pCopyImageToBufferInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImageToBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2( CopyImageToBufferInfo2 const & copyImageToBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyImageToBuffer2 && "Function requires or " ); +# endif + + d.vkCmdCopyImageToBuffer2( m_commandBuffer, reinterpret_cast( ©ImageToBufferInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html + template ::type> + VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( + DeviceBufferMemoryRequirements const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceBufferMemoryRequirements( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getBufferMemoryRequirements( DeviceBufferMemoryRequirements const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceBufferMemoryRequirements && + "Function requires or " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetDeviceBufferMemoryRequirements( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirements( DeviceBufferMemoryRequirements const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceBufferMemoryRequirements && + "Function requires or " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetDeviceBufferMemoryRequirements( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( + DeviceImageMemoryRequirements const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceImageMemoryRequirements( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getImageMemoryRequirements( DeviceImageMemoryRequirements const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageMemoryRequirements && + "Function requires or " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetDeviceImageMemoryRequirements( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirements( DeviceImageMemoryRequirements const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageMemoryRequirements && + "Function requires or " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetDeviceImageMemoryRequirements( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirements.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( DeviceImageMemoryRequirements const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceImageSparseMemoryRequirements( static_cast( m_device ), + reinterpret_cast( pInfo ), + pSparseMemoryRequirementCount, + reinterpret_cast( pSparseMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirements.html + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements( DeviceImageMemoryRequirements const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageSparseMemoryRequirements && + "Function requires or " ); +# endif + + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + d.vkGetDeviceImageSparseMemoryRequirements( + m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetDeviceImageSparseMemoryRequirements( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } + + // wrapper function for command vkGetDeviceImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirements.html + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements( + DeviceImageMemoryRequirements const & info, SparseImageMemoryRequirements2Allocator const & sparseImageMemoryRequirements2Allocator, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageSparseMemoryRequirements && + "Function requires or " ); +# endif + + std::vector sparseMemoryRequirements( sparseImageMemoryRequirements2Allocator ); + uint32_t sparseMemoryRequirementCount; + d.vkGetDeviceImageSparseMemoryRequirements( + m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetDeviceImageSparseMemoryRequirements( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setEvent2( Event event, DependencyInfo const * pDependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetEvent2( + static_cast( m_commandBuffer ), static_cast( event ), reinterpret_cast( pDependencyInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setEvent2( Event event, DependencyInfo const & dependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetEvent2 && "Function requires or " ); +# endif + + d.vkCmdSetEvent2( m_commandBuffer, static_cast( event ), reinterpret_cast( &dependencyInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdResetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::resetEvent2( Event event, PipelineStageFlags2 stageMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResetEvent2( static_cast( m_commandBuffer ), static_cast( event ), static_cast( stageMask ) ); + } + + // wrapper function for command vkCmdWaitEvents2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::waitEvents2( uint32_t eventCount, Event const * pEvents, DependencyInfo const * pDependencyInfos, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWaitEvents2( static_cast( m_commandBuffer ), + eventCount, + reinterpret_cast( pEvents ), + reinterpret_cast( pDependencyInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWaitEvents2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::waitEvents2( + ArrayProxy const & events, ArrayProxy const & dependencyInfos, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdWaitEvents2 && "Function requires or " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() ); +# else + if ( events.size() != dependencyInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::waitEvents2: events.size() != dependencyInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdWaitEvents2( m_commandBuffer, + events.size(), + reinterpret_cast( events.data() ), + reinterpret_cast( dependencyInfos.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBlitImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::blitImage2( BlitImageInfo2 const * pBlitImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBlitImage2( static_cast( m_commandBuffer ), reinterpret_cast( pBlitImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBlitImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::blitImage2( BlitImageInfo2 const & blitImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBlitImage2 && "Function requires or " ); +# endif + + d.vkCmdBlitImage2( m_commandBuffer, reinterpret_cast( &blitImageInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdResolveImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::resolveImage2( ResolveImageInfo2 const * pResolveImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResolveImage2( static_cast( m_commandBuffer ), reinterpret_cast( pResolveImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdResolveImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::resolveImage2( ResolveImageInfo2 const & resolveImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdResolveImage2 && "Function requires or " ); +# endif + + d.vkCmdResolveImage2( m_commandBuffer, reinterpret_cast( &resolveImageInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRendering.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginRendering( RenderingInfo const * pRenderingInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRendering( static_cast( m_commandBuffer ), reinterpret_cast( pRenderingInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRendering.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginRendering( RenderingInfo const & renderingInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginRendering && "Function requires or " ); +# endif + + d.vkCmdBeginRendering( m_commandBuffer, reinterpret_cast( &renderingInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRendering( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRendering( static_cast( m_commandBuffer ) ); + } + + // wrapper function for command vkCmdSetCullMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullMode.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCullMode( CullModeFlags cullMode, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCullMode( static_cast( m_commandBuffer ), static_cast( cullMode ) ); + } + + // wrapper function for command vkCmdSetFrontFace, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFace.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setFrontFace( FrontFace frontFace, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetFrontFace( static_cast( m_commandBuffer ), static_cast( frontFace ) ); + } + + // wrapper function for command vkCmdSetPrimitiveTopology, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopology.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopology( PrimitiveTopology primitiveTopology, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPrimitiveTopology( static_cast( m_commandBuffer ), static_cast( primitiveTopology ) ); + } + + // wrapper function for command vkCmdSetViewportWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCount.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCount( uint32_t viewportCount, Viewport const * pViewports, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportWithCount( static_cast( m_commandBuffer ), viewportCount, reinterpret_cast( pViewports ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewportWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCount.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCount( ArrayProxy const & viewports, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetViewportWithCount && + "Function requires or or " ); +# endif + + d.vkCmdSetViewportWithCount( m_commandBuffer, viewports.size(), reinterpret_cast( viewports.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetScissorWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCount.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCount( uint32_t scissorCount, Rect2D const * pScissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetScissorWithCount( static_cast( m_commandBuffer ), scissorCount, reinterpret_cast( pScissors ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetScissorWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCount.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCount( ArrayProxy const & scissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetScissorWithCount && + "Function requires or or " ); +# endif + + d.vkCmdSetScissorWithCount( m_commandBuffer, scissors.size(), reinterpret_cast( scissors.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindVertexBuffers2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2( uint32_t firstBinding, + uint32_t bindingCount, + Buffer const * pBuffers, + DeviceSize const * pOffsets, + DeviceSize const * pSizes, + DeviceSize const * pStrides, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindVertexBuffers2( static_cast( m_commandBuffer ), + firstBinding, + bindingCount, + reinterpret_cast( pBuffers ), + reinterpret_cast( pOffsets ), + reinterpret_cast( pSizes ), + reinterpret_cast( pStrides ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindVertexBuffers2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes, + ArrayProxy const & strides, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindVertexBuffers2 && + "Function requires or or " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); + VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != sizes.size()" ); + } + if ( !strides.empty() && buffers.size() != strides.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != strides.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBindVertexBuffers2( m_commandBuffer, + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ), + reinterpret_cast( strides.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDepthTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnable.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnable( Bool32 depthTestEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthTestEnable( static_cast( m_commandBuffer ), static_cast( depthTestEnable ) ); + } + + // wrapper function for command vkCmdSetDepthWriteEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnable.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnable( Bool32 depthWriteEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthWriteEnable( static_cast( m_commandBuffer ), static_cast( depthWriteEnable ) ); + } + + // wrapper function for command vkCmdSetDepthCompareOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOp.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOp( CompareOp depthCompareOp, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthCompareOp( static_cast( m_commandBuffer ), static_cast( depthCompareOp ) ); + } + + // wrapper function for command vkCmdSetDepthBoundsTestEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnable.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBoundsTestEnable( static_cast( m_commandBuffer ), static_cast( depthBoundsTestEnable ) ); + } + + // wrapper function for command vkCmdSetStencilTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnable.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnable( Bool32 stencilTestEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilTestEnable( static_cast( m_commandBuffer ), static_cast( stencilTestEnable ) ); + } + + // wrapper function for command vkCmdSetStencilOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOp.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setStencilOp( + StencilFaceFlags faceMask, StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilOp( static_cast( m_commandBuffer ), + static_cast( faceMask ), + static_cast( failOp ), + static_cast( passOp ), + static_cast( depthFailOp ), + static_cast( compareOp ) ); + } + + // wrapper function for command vkCmdSetRasterizerDiscardEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnable.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRasterizerDiscardEnable( static_cast( m_commandBuffer ), static_cast( rasterizerDiscardEnable ) ); + } + + // wrapper function for command vkCmdSetDepthBiasEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnable.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthBiasEnable( Bool32 depthBiasEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBiasEnable( static_cast( m_commandBuffer ), static_cast( depthBiasEnable ) ); + } + + // wrapper function for command vkCmdSetPrimitiveRestartEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnable.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnable( Bool32 primitiveRestartEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPrimitiveRestartEnable( static_cast( m_commandBuffer ), static_cast( primitiveRestartEnable ) ); + } + + //=== VK_VERSION_1_4 === + + // wrapper function for command vkMapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::mapMemory2( MemoryMapInfo const * pMemoryMapInfo, void ** ppData, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkMapMemory2( static_cast( m_device ), reinterpret_cast( pMemoryMapInfo ), ppData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkMapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::mapMemory2( MemoryMapInfo const & memoryMapInfo, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkMapMemory2 && "Function requires or " ); +# endif + + void * pData; + Result result = static_cast( d.vkMapMemory2( m_device, reinterpret_cast( &memoryMapInfo ), &pData ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::mapMemory2" ); + + return detail::createResultValueType( result, std::move( pData ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUnmapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::unmapMemory2( MemoryUnmapInfo const * pMemoryUnmapInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkUnmapMemory2( static_cast( m_device ), reinterpret_cast( pMemoryUnmapInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUnmapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::unmapMemory2( MemoryUnmapInfo const & memoryUnmapInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkUnmapMemory2 && "Function requires or " ); +# endif + + Result result = static_cast( d.vkUnmapMemory2( m_device, reinterpret_cast( &memoryUnmapInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::unmapMemory2" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( DeviceImageSubresourceInfo const * pInfo, SubresourceLayout2 * pLayout, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceImageSubresourceLayout( + static_cast( m_device ), reinterpret_cast( pInfo ), reinterpret_cast( pLayout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Device::getImageSubresourceLayout( DeviceImageSubresourceInfo const & info, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageSubresourceLayout && + "Function requires or " ); +# endif + + SubresourceLayout2 layout; + d.vkGetDeviceImageSubresourceLayout( + m_device, reinterpret_cast( &info ), reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkGetDeviceImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageSubresourceLayout( DeviceImageSubresourceInfo const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageSubresourceLayout && + "Function requires or " ); +# endif + + StructureChain structureChain; + SubresourceLayout2 & layout = structureChain.template get(); + d.vkGetDeviceImageSubresourceLayout( + m_device, reinterpret_cast( &info ), reinterpret_cast( &layout ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSubresourceLayout2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSubresourceLayout2( + Image image, ImageSubresource2 const * pSubresource, SubresourceLayout2 * pLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSubresourceLayout2( static_cast( m_device ), + static_cast( image ), + reinterpret_cast( pSubresource ), + reinterpret_cast( pLayout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSubresourceLayout2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Device::getImageSubresourceLayout2( + Image image, ImageSubresource2 const & subresource, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( + d.vkGetImageSubresourceLayout2 && + "Function requires or or or " ); +# endif + + SubresourceLayout2 layout; + d.vkGetImageSubresourceLayout2( m_device, + static_cast( image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkGetImageSubresourceLayout2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageSubresourceLayout2( + Image image, ImageSubresource2 const & subresource, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( + d.vkGetImageSubresourceLayout2 && + "Function requires or or or " ); +# endif + + StructureChain structureChain; + SubresourceLayout2 & layout = structureChain.template get(); + d.vkGetImageSubresourceLayout2( m_device, + static_cast( image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyMemoryToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImage.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToImage( CopyMemoryToImageInfo const * pCopyMemoryToImageInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCopyMemoryToImage( static_cast( m_device ), reinterpret_cast( pCopyMemoryToImageInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMemoryToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImage.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::copyMemoryToImage( + CopyMemoryToImageInfo const & copyMemoryToImageInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyMemoryToImage && "Function requires or " ); +# endif + + Result result = static_cast( d.vkCopyMemoryToImage( m_device, reinterpret_cast( ©MemoryToImageInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToImage" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyImageToMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemory.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyImageToMemory( CopyImageToMemoryInfo const * pCopyImageToMemoryInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCopyImageToMemory( static_cast( m_device ), reinterpret_cast( pCopyImageToMemoryInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyImageToMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemory.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::copyImageToMemory( + CopyImageToMemoryInfo const & copyImageToMemoryInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyImageToMemory && "Function requires or " ); +# endif + + Result result = static_cast( d.vkCopyImageToMemory( m_device, reinterpret_cast( ©ImageToMemoryInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyImageToMemory" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyImageToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImage.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyImageToImage( CopyImageToImageInfo const * pCopyImageToImageInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCopyImageToImage( static_cast( m_device ), reinterpret_cast( pCopyImageToImageInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyImageToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImage.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::copyImageToImage( + CopyImageToImageInfo const & copyImageToImageInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyImageToImage && "Function requires or " ); +# endif + + Result result = static_cast( d.vkCopyImageToImage( m_device, reinterpret_cast( ©ImageToImageInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyImageToImage" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkTransitionImageLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayout.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::transitionImageLayout( + uint32_t transitionCount, HostImageLayoutTransitionInfo const * pTransitions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkTransitionImageLayout( + static_cast( m_device ), transitionCount, reinterpret_cast( pTransitions ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkTransitionImageLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayout.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::transitionImageLayout( + ArrayProxy const & transitions, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkTransitionImageLayout && "Function requires or " ); +# endif + + Result result = static_cast( + d.vkTransitionImageLayout( m_device, transitions.size(), reinterpret_cast( transitions.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::transitionImageLayout" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + WriteDescriptorSet const * pDescriptorWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSet( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( layout ), + set, + descriptorWriteCount, + reinterpret_cast( pDescriptorWrites ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPushDescriptorSet && "Function requires or " ); +# endif + + d.vkCmdPushDescriptorSet( m_commandBuffer, + static_cast( pipelineBindPoint ), + static_cast( layout ), + set, + descriptorWrites.size(), + reinterpret_cast( descriptorWrites.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplate( + DescriptorUpdateTemplate descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, void const * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSetWithTemplate( static_cast( m_commandBuffer ), + static_cast( descriptorUpdateTemplate ), + static_cast( layout ), + set, + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplate( + DescriptorUpdateTemplate descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, DataType const & data, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( + d.vkCmdPushDescriptorSetWithTemplate && + "Function requires or or " ); +# endif + + d.vkCmdPushDescriptorSetWithTemplate( m_commandBuffer, + static_cast( descriptorUpdateTemplate ), + static_cast( layout ), + set, + reinterpret_cast( &data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindDescriptorSets2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets2( BindDescriptorSetsInfo const * pBindDescriptorSetsInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindDescriptorSets2( static_cast( m_commandBuffer ), + reinterpret_cast( pBindDescriptorSetsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindDescriptorSets2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets2( BindDescriptorSetsInfo const & bindDescriptorSetsInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindDescriptorSets2 && "Function requires or " ); +# endif + + d.vkCmdBindDescriptorSets2( m_commandBuffer, reinterpret_cast( &bindDescriptorSetsInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushConstants2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushConstants2( PushConstantsInfo const * pPushConstantsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushConstants2( static_cast( m_commandBuffer ), reinterpret_cast( pPushConstantsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushConstants2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushConstants2( PushConstantsInfo const & pushConstantsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPushConstants2 && "Function requires or " ); +# endif + + d.vkCmdPushConstants2( m_commandBuffer, reinterpret_cast( &pushConstantsInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSet2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet2( PushDescriptorSetInfo const * pPushDescriptorSetInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSet2( static_cast( m_commandBuffer ), reinterpret_cast( pPushDescriptorSetInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSet2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet2( PushDescriptorSetInfo const & pushDescriptorSetInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPushDescriptorSet2 && "Function requires or " ); +# endif + + d.vkCmdPushDescriptorSet2( m_commandBuffer, reinterpret_cast( &pushDescriptorSetInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplate2( PushDescriptorSetWithTemplateInfo const * pPushDescriptorSetWithTemplateInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSetWithTemplate2( static_cast( m_commandBuffer ), + reinterpret_cast( pPushDescriptorSetWithTemplateInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplate2( PushDescriptorSetWithTemplateInfo const & pushDescriptorSetWithTemplateInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPushDescriptorSetWithTemplate2 && + "Function requires or " ); +# endif + + d.vkCmdPushDescriptorSetWithTemplate2( m_commandBuffer, + reinterpret_cast( &pushDescriptorSetWithTemplateInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetLineStipple, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStipple.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setLineStipple( uint32_t lineStippleFactor, uint16_t lineStipplePattern, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLineStipple( static_cast( m_commandBuffer ), lineStippleFactor, lineStipplePattern ); + } + + // wrapper function for command vkCmdBindIndexBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer2( Buffer buffer, DeviceSize offset, DeviceSize size, IndexType indexType, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindIndexBuffer2( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( size ), + static_cast( indexType ) ); + } + + // wrapper function for command vkGetRenderingAreaGranularity, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularity.html + template ::type> + VULKAN_HPP_INLINE void Device::getRenderingAreaGranularity( RenderingAreaInfo const * pRenderingAreaInfo, Extent2D * pGranularity, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetRenderingAreaGranularity( + static_cast( m_device ), reinterpret_cast( pRenderingAreaInfo ), reinterpret_cast( pGranularity ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRenderingAreaGranularity, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularity.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Extent2D Device::getRenderingAreaGranularity( RenderingAreaInfo const & renderingAreaInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRenderingAreaGranularity && "Function requires or " ); +# endif + + Extent2D granularity; + d.vkGetRenderingAreaGranularity( + m_device, reinterpret_cast( &renderingAreaInfo ), reinterpret_cast( &granularity ) ); + + return granularity; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetRenderingAttachmentLocations, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocations.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRenderingAttachmentLocations( RenderingAttachmentLocationInfo const * pLocationInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRenderingAttachmentLocations( static_cast( m_commandBuffer ), + reinterpret_cast( pLocationInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetRenderingAttachmentLocations, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocations.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRenderingAttachmentLocations( RenderingAttachmentLocationInfo const & locationInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetRenderingAttachmentLocations && + "Function requires or " ); +# endif + + d.vkCmdSetRenderingAttachmentLocations( m_commandBuffer, reinterpret_cast( &locationInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetRenderingInputAttachmentIndices, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndices.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRenderingInputAttachmentIndices( RenderingInputAttachmentIndexInfo const * pInputAttachmentIndexInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRenderingInputAttachmentIndices( static_cast( m_commandBuffer ), + reinterpret_cast( pInputAttachmentIndexInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetRenderingInputAttachmentIndices, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndices.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRenderingInputAttachmentIndices( RenderingInputAttachmentIndexInfo const & inputAttachmentIndexInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetRenderingInputAttachmentIndices && + "Function requires or " ); +# endif + + d.vkCmdSetRenderingInputAttachmentIndices( m_commandBuffer, reinterpret_cast( &inputAttachmentIndexInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_surface === + + // wrapper function for command vkDestroySurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySurfaceKHR.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySurfaceKHR( + static_cast( m_instance ), static_cast( surface ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySurfaceKHR.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySurfaceKHR && "Function requires " ); +# endif + + d.vkDestroySurfaceKHR( m_instance, static_cast( surface ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySurfaceKHR.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroy( SurfaceKHR surface, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySurfaceKHR( + static_cast( m_instance ), static_cast( surface ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySurfaceKHR.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroy( SurfaceKHR surface, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySurfaceKHR && "Function requires " ); +# endif + + d.vkDestroySurfaceKHR( m_instance, static_cast( surface ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSurfaceSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( + uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32 * pSupported, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceSupportKHR( + static_cast( m_physicalDevice ), queueFamilyIndex, static_cast( surface ), reinterpret_cast( pSupported ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getSurfaceSupportKHR( + uint32_t queueFamilyIndex, SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceSupportKHR && "Function requires " ); +# endif + + Bool32 supported; + Result result = static_cast( d.vkGetPhysicalDeviceSurfaceSupportKHR( + m_physicalDevice, queueFamilyIndex, static_cast( surface ), reinterpret_cast( &supported ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceSupportKHR" ); + + return detail::createResultValueType( result, std::move( supported ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( + SurfaceKHR surface, SurfaceCapabilitiesKHR * pSurfaceCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + reinterpret_cast( pSurfaceCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getSurfaceCapabilitiesKHR( + SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR && "Function requires " ); +# endif + + SurfaceCapabilitiesKHR surfaceCapabilities; + Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + m_physicalDevice, static_cast( surface ), reinterpret_cast( &surfaceCapabilities ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilitiesKHR" ); + + return detail::createResultValueType( result, std::move( surfaceCapabilities ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormatsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( + SurfaceKHR surface, uint32_t * pSurfaceFormatCount, SurfaceFormatKHR * pSurfaceFormats, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + pSurfaceFormatCount, + reinterpret_cast( pSurfaceFormats ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceFormatsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceFormatsKHR && "Function requires " ); +# endif + + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + Result result; + do + { + result = + static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast( surface ), &surfaceFormatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( + m_physicalDevice, static_cast( surface ), &surfaceFormatCount, reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormatsKHR" ); + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + return detail::createResultValueType( result, std::move( surfaceFormats ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormatsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, SurfaceFormatKHRAllocator const & surfaceFormatKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceFormatsKHR && "Function requires " ); +# endif + + std::vector surfaceFormats( surfaceFormatKHRAllocator ); + uint32_t surfaceFormatCount; + Result result; + do + { + result = + static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast( surface ), &surfaceFormatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( + m_physicalDevice, static_cast( surface ), &surfaceFormatCount, reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormatsKHR" ); + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + return detail::createResultValueType( result, std::move( surfaceFormats ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( + SurfaceKHR surface, uint32_t * pPresentModeCount, PresentModeKHR * pPresentModes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + pPresentModeCount, + reinterpret_cast( pPresentModes ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfacePresentModesKHR && "Function requires " ); +# endif + + std::vector presentModes; + uint32_t presentModeCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast( surface ), &presentModeCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( + m_physicalDevice, static_cast( surface ), &presentModeCount, reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModesKHR" ); + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + return detail::createResultValueType( result, std::move( presentModes ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, PresentModeKHRAllocator const & presentModeKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfacePresentModesKHR && "Function requires " ); +# endif + + std::vector presentModes( presentModeKHRAllocator ); + uint32_t presentModeCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast( surface ), &presentModeCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( + m_physicalDevice, static_cast( surface ), &presentModeCount, reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModesKHR" ); + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + return detail::createResultValueType( result, std::move( presentModes ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_swapchain === + + // wrapper function for command vkCreateSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSwapchainKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSwapchainKHR( + SwapchainCreateInfoKHR const * pCreateInfo, AllocationCallbacks const * pAllocator, SwapchainKHR * pSwapchain, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateSwapchainKHR( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSwapchain ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSwapchainKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createSwapchainKHR( + SwapchainCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSwapchainKHR && "Function requires " ); +# endif + + SwapchainKHR swapchain; + Result result = static_cast( d.vkCreateSwapchainKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &swapchain ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSwapchainKHR" ); + + return detail::createResultValueType( result, std::move( swapchain ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSwapchainKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSwapchainKHRUnique( + SwapchainCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSwapchainKHR && "Function requires " ); +# endif + + SwapchainKHR swapchain; + Result result = static_cast( d.vkCreateSwapchainKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &swapchain ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSwapchainKHRUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( swapchain, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySwapchainKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySwapchainKHR( + static_cast( m_device ), static_cast( swapchain ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySwapchainKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySwapchainKHR && "Function requires " ); +# endif + + d.vkDestroySwapchainKHR( m_device, static_cast( swapchain ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySwapchainKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( SwapchainKHR swapchain, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySwapchainKHR( + static_cast( m_device ), static_cast( swapchain ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySwapchainKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( SwapchainKHR swapchain, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySwapchainKHR && "Function requires " ); +# endif + + d.vkDestroySwapchainKHR( m_device, static_cast( swapchain ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainImagesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( + SwapchainKHR swapchain, uint32_t * pSwapchainImageCount, Image * pSwapchainImages, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSwapchainImagesKHR( + static_cast( m_device ), static_cast( swapchain ), pSwapchainImageCount, reinterpret_cast( pSwapchainImages ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainImagesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getSwapchainImagesKHR( + SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSwapchainImagesKHR && "Function requires " ); +# endif + + std::vector swapchainImages; + uint32_t swapchainImageCount; + Result result; + do + { + result = static_cast( d.vkGetSwapchainImagesKHR( m_device, static_cast( swapchain ), &swapchainImageCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && swapchainImageCount ) + { + swapchainImages.resize( swapchainImageCount ); + result = static_cast( d.vkGetSwapchainImagesKHR( + m_device, static_cast( swapchain ), &swapchainImageCount, reinterpret_cast( swapchainImages.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainImagesKHR" ); + VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() ); + if ( swapchainImageCount < swapchainImages.size() ) + { + swapchainImages.resize( swapchainImageCount ); + } + return detail::createResultValueType( result, std::move( swapchainImages ) ); + } + + // wrapper function for command vkGetSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainImagesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getSwapchainImagesKHR( + SwapchainKHR swapchain, ImageAllocator const & imageAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSwapchainImagesKHR && "Function requires " ); +# endif + + std::vector swapchainImages( imageAllocator ); + uint32_t swapchainImageCount; + Result result; + do + { + result = static_cast( d.vkGetSwapchainImagesKHR( m_device, static_cast( swapchain ), &swapchainImageCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && swapchainImageCount ) + { + swapchainImages.resize( swapchainImageCount ); + result = static_cast( d.vkGetSwapchainImagesKHR( + m_device, static_cast( swapchain ), &swapchainImageCount, reinterpret_cast( swapchainImages.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainImagesKHR" ); + VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() ); + if ( swapchainImageCount < swapchainImages.size() ) + { + swapchainImages.resize( swapchainImageCount ); + } + return detail::createResultValueType( result, std::move( swapchainImages ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkAcquireNextImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImageKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( + SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t * pImageIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAcquireNextImageKHR( static_cast( m_device ), + static_cast( swapchain ), + timeout, + static_cast( semaphore ), + static_cast( fence ), + pImageIndex ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireNextImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImageKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::acquireNextImageKHR( + SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAcquireNextImageKHR && "Function requires " ); +# endif + + uint32_t imageIndex; + Result result = static_cast( d.vkAcquireNextImageKHR( + m_device, static_cast( swapchain ), timeout, static_cast( semaphore ), static_cast( fence ), &imageIndex ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImageKHR", + { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } ); +# endif + + return { result, imageIndex }; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkQueuePresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueuePresentKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::presentKHR( PresentInfoKHR const * pPresentInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkQueuePresentKHR( static_cast( m_queue ), reinterpret_cast( pPresentInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueuePresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueuePresentKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::presentKHR( PresentInfoKHR const & presentInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkQueuePresentKHR && "Function requires " ); +# endif + + Result result = static_cast( d.vkQueuePresentKHR( m_queue, reinterpret_cast( &presentInfo ) ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } ); +# endif + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceGroupPresentCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPresentCapabilitiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDeviceGroupPresentCapabilitiesKHR( + static_cast( m_device ), reinterpret_cast( pDeviceGroupPresentCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceGroupPresentCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPresentCapabilitiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getGroupPresentCapabilitiesKHR( + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceGroupPresentCapabilitiesKHR && + "Function requires or " ); +# endif + + DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities; + Result result = static_cast( + d.vkGetDeviceGroupPresentCapabilitiesKHR( m_device, reinterpret_cast( &deviceGroupPresentCapabilities ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupPresentCapabilitiesKHR" ); + + return detail::createResultValueType( result, std::move( deviceGroupPresentCapabilities ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceGroupSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHR( + SurfaceKHR surface, DeviceGroupPresentModeFlagsKHR * pModes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDeviceGroupSurfacePresentModesKHR( + static_cast( m_device ), static_cast( surface ), reinterpret_cast( pModes ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceGroupSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getGroupSurfacePresentModesKHR( + SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceGroupSurfacePresentModesKHR && + "Function requires or " ); +# endif + + DeviceGroupPresentModeFlagsKHR modes; + Result result = static_cast( d.vkGetDeviceGroupSurfacePresentModesKHR( + m_device, static_cast( surface ), reinterpret_cast( &modes ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModesKHR" ); + + return detail::createResultValueType( result, std::move( modes ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDevicePresentRectanglesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHR( + SurfaceKHR surface, uint32_t * pRectCount, Rect2D * pRects, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( + static_cast( m_physicalDevice ), static_cast( surface ), pRectCount, reinterpret_cast( pRects ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDevicePresentRectanglesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getPresentRectanglesKHR( + SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDevicePresentRectanglesKHR && + "Function requires or " ); +# endif + + std::vector rects; + uint32_t rectCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast( surface ), &rectCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && rectCount ) + { + rects.resize( rectCount ); + result = static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( + m_physicalDevice, static_cast( surface ), &rectCount, reinterpret_cast( rects.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getPresentRectanglesKHR" ); + VULKAN_HPP_ASSERT( rectCount <= rects.size() ); + if ( rectCount < rects.size() ) + { + rects.resize( rectCount ); + } + return detail::createResultValueType( result, std::move( rects ) ); + } + + // wrapper function for command vkGetPhysicalDevicePresentRectanglesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getPresentRectanglesKHR( + SurfaceKHR surface, Rect2DAllocator const & rect2DAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDevicePresentRectanglesKHR && + "Function requires or " ); +# endif + + std::vector rects( rect2DAllocator ); + uint32_t rectCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast( surface ), &rectCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && rectCount ) + { + rects.resize( rectCount ); + result = static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( + m_physicalDevice, static_cast( surface ), &rectCount, reinterpret_cast( rects.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getPresentRectanglesKHR" ); + VULKAN_HPP_ASSERT( rectCount <= rects.size() ); + if ( rectCount < rects.size() ) + { + rects.resize( rectCount ); + } + return detail::createResultValueType( result, std::move( rects ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkAcquireNextImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImage2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquireNextImage2KHR( + AcquireNextImageInfoKHR const * pAcquireInfo, uint32_t * pImageIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkAcquireNextImage2KHR( static_cast( m_device ), reinterpret_cast( pAcquireInfo ), pImageIndex ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireNextImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImage2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::acquireNextImage2KHR( AcquireNextImageInfoKHR const & acquireInfo, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAcquireNextImage2KHR && "Function requires or " ); +# endif + + uint32_t imageIndex; + Result result = + static_cast( d.vkAcquireNextImage2KHR( m_device, reinterpret_cast( &acquireInfo ), &imageIndex ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImage2KHR", + { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImage2KHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } ); +# endif + + return { result, imageIndex }; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_display === + + // wrapper function for command vkGetPhysicalDeviceDisplayPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( + uint32_t * pPropertyCount, DisplayPropertiesKHR * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( + static_cast( m_physicalDevice ), pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceDisplayPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPropertiesKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceDisplayPropertiesKHR && "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceDisplayPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPropertiesKHR( DisplayPropertiesKHRAllocator const & displayPropertiesKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceDisplayPropertiesKHR && "Function requires " ); +# endif + + std::vector properties( displayPropertiesKHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceDisplayPlanePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( + uint32_t * pPropertyCount, DisplayPlanePropertiesKHR * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + static_cast( m_physicalDevice ), pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceDisplayPlanePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlanePropertiesKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR && "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlanePropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceDisplayPlanePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlanePropertiesKHR( DisplayPlanePropertiesKHRAllocator const & displayPlanePropertiesKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR && "Function requires " ); +# endif + + std::vector properties( displayPlanePropertiesKHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlanePropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDisplayPlaneSupportedDisplaysKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( + uint32_t planeIndex, uint32_t * pDisplayCount, DisplayKHR * pDisplays, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( + static_cast( m_physicalDevice ), planeIndex, pDisplayCount, reinterpret_cast( pDisplays ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDisplayPlaneSupportedDisplaysKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDisplayPlaneSupportedDisplaysKHR && "Function requires " ); +# endif + + std::vector displays; + uint32_t displayCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && displayCount ) + { + displays.resize( displayCount ); + result = static_cast( + d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast( displays.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" ); + VULKAN_HPP_ASSERT( displayCount <= displays.size() ); + if ( displayCount < displays.size() ) + { + displays.resize( displayCount ); + } + return detail::createResultValueType( result, std::move( displays ) ); + } + + // wrapper function for command vkGetDisplayPlaneSupportedDisplaysKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, DisplayKHRAllocator const & displayKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDisplayPlaneSupportedDisplaysKHR && "Function requires " ); +# endif + + std::vector displays( displayKHRAllocator ); + uint32_t displayCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && displayCount ) + { + displays.resize( displayCount ); + result = static_cast( + d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast( displays.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" ); + VULKAN_HPP_ASSERT( displayCount <= displays.size() ); + if ( displayCount < displays.size() ) + { + displays.resize( displayCount ); + } + return detail::createResultValueType( result, std::move( displays ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDisplayModePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModePropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( + DisplayKHR display, uint32_t * pPropertyCount, DisplayModePropertiesKHR * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDisplayModePropertiesKHR( static_cast( m_physicalDevice ), + static_cast( display ), + pPropertyCount, + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDisplayModePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModePropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDisplayModePropertiesKHR && "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetDisplayModePropertiesKHR( + m_physicalDevice, static_cast( display ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayModePropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDisplayModePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModePropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayModePropertiesKHR( + DisplayKHR display, DisplayModePropertiesKHRAllocator const & displayModePropertiesKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDisplayModePropertiesKHR && "Function requires " ); +# endif + + std::vector properties( displayModePropertiesKHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetDisplayModePropertiesKHR( + m_physicalDevice, static_cast( display ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayModePropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayModeKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( + DisplayKHR display, DisplayModeCreateInfoKHR const * pCreateInfo, AllocationCallbacks const * pAllocator, DisplayModeKHR * pMode, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDisplayModeKHR( static_cast( m_physicalDevice ), + static_cast( display ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pMode ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayModeKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::createDisplayModeKHR( + DisplayKHR display, DisplayModeCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDisplayModeKHR && "Function requires " ); +# endif + + DisplayModeKHR mode; + Result result = static_cast( d.vkCreateDisplayModeKHR( m_physicalDevice, + static_cast( display ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &mode ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDisplayModeKHR" ); + + return detail::createResultValueType( result, std::move( mode ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayModeKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::createDisplayModeKHRUnique( + DisplayKHR display, DisplayModeCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDisplayModeKHR && "Function requires " ); +# endif + + DisplayModeKHR mode; + Result result = static_cast( d.vkCreateDisplayModeKHR( m_physicalDevice, + static_cast( display ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &mode ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDisplayModeKHRUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( mode, detail::DummyDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDisplayPlaneCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilitiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( + DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR * pCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDisplayPlaneCapabilitiesKHR( static_cast( m_physicalDevice ), + static_cast( mode ), + planeIndex, + reinterpret_cast( pCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDisplayPlaneCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilitiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( + DisplayModeKHR mode, uint32_t planeIndex, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDisplayPlaneCapabilitiesKHR && "Function requires " ); +# endif + + DisplayPlaneCapabilitiesKHR capabilities; + Result result = static_cast( d.vkGetDisplayPlaneCapabilitiesKHR( + m_physicalDevice, static_cast( mode ), planeIndex, reinterpret_cast( &capabilities ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" ); + + return detail::createResultValueType( result, std::move( capabilities ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDisplayPlaneSurfaceKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayPlaneSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( + DisplaySurfaceCreateInfoKHR const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDisplayPlaneSurfaceKHR( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDisplayPlaneSurfaceKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayPlaneSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createDisplayPlaneSurfaceKHR( + DisplaySurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDisplayPlaneSurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDisplayPlaneSurfaceKHR" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDisplayPlaneSurfaceKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayPlaneSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createDisplayPlaneSurfaceKHRUnique( + DisplaySurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDisplayPlaneSurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDisplayPlaneSurfaceKHRUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_display_swapchain === + + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, + SwapchainCreateInfoKHR const * pCreateInfos, + AllocationCallbacks const * pAllocator, + SwapchainKHR * pSwapchains, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateSharedSwapchainsKHR( static_cast( m_device ), + swapchainCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSwapchains ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSharedSwapchainsKHR( + ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSharedSwapchainsKHR && "Function requires " ); +# endif + + std::vector swapchains( createInfos.size() ); + Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( swapchains.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHR" ); + + return detail::createResultValueType( result, std::move( swapchains ) ); + } + + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSharedSwapchainsKHR( + ArrayProxy const & createInfos, + Optional allocator, + SwapchainKHRAllocator const & swapchainKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSharedSwapchainsKHR && "Function requires " ); +# endif + + std::vector swapchains( createInfos.size(), {}, swapchainKHRAllocator ); + Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( swapchains.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHR" ); + + return detail::createResultValueType( result, std::move( swapchains ) ); + } + + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createSharedSwapchainKHR( + SwapchainCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSharedSwapchainsKHR && "Function requires " ); +# endif + + SwapchainKHR swapchain; + Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &swapchain ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainKHR" ); + + return detail::createResultValueType( result, std::move( swapchain ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, SwapchainKHRAllocator>>::type + Device::createSharedSwapchainsKHRUnique( + ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSharedSwapchainsKHR && "Function requires " ); +# endif + + std::vector swapchains( createInfos.size() ); + Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( swapchains.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" ); + std::vector, SwapchainKHRAllocator> uniqueSwapchains; + uniqueSwapchains.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & swapchain : swapchains ) + { + uniqueSwapchains.push_back( UniqueHandle( swapchain, deleter ) ); + } + return detail::createResultValueType( result, std::move( uniqueSwapchains ) ); + } + + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, SwapchainKHRAllocator>>::type + Device::createSharedSwapchainsKHRUnique( ArrayProxy const & createInfos, + Optional allocator, + SwapchainKHRAllocator const & swapchainKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSharedSwapchainsKHR && "Function requires " ); +# endif + + std::vector swapchains( createInfos.size() ); + Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( swapchains.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" ); + std::vector, SwapchainKHRAllocator> uniqueSwapchains( swapchainKHRAllocator ); + uniqueSwapchains.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & swapchain : swapchains ) + { + uniqueSwapchains.push_back( UniqueHandle( swapchain, deleter ) ); + } + return detail::createResultValueType( result, std::move( uniqueSwapchains ) ); + } + + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSharedSwapchainKHRUnique( + SwapchainCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSharedSwapchainsKHR && "Function requires " ); +# endif + + SwapchainKHR swapchain; + Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &swapchain ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainKHRUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( swapchain, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + // wrapper function for command vkCreateXlibSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXlibSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( + XlibSurfaceCreateInfoKHR const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateXlibSurfaceKHR( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateXlibSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXlibSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createXlibSurfaceKHR( + XlibSurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateXlibSurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateXlibSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXlibSurfaceKHR" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateXlibSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXlibSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createXlibSurfaceKHRUnique( + XlibSurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateXlibSurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateXlibSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXlibSurfaceKHRUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceXlibPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display * dpy, VisualID visualID, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceXlibPresentationSupportKHR( static_cast( m_physicalDevice ), queueFamilyIndex, dpy, visualID ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceXlibPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceXlibPresentationSupportKHR && + "Function requires " ); +# endif + + VkBool32 result = d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID ); + + return static_cast( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + // wrapper function for command vkCreateXcbSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXcbSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( + XcbSurfaceCreateInfoKHR const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateXcbSurfaceKHR( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateXcbSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXcbSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createXcbSurfaceKHR( + XcbSurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateXcbSurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateXcbSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXcbSurfaceKHR" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateXcbSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXcbSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createXcbSurfaceKHRUnique( + XcbSurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateXcbSurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateXcbSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXcbSurfaceKHRUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceXcbPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( + uint32_t queueFamilyIndex, xcb_connection_t * connection, xcb_visualid_t visual_id, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceXcbPresentationSupportKHR( static_cast( m_physicalDevice ), queueFamilyIndex, connection, visual_id ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceXcbPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( + uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceXcbPresentationSupportKHR && + "Function requires " ); +# endif + + VkBool32 result = d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id ); + + return static_cast( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + // wrapper function for command vkCreateWaylandSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWaylandSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( + WaylandSurfaceCreateInfoKHR const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateWaylandSurfaceKHR( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateWaylandSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWaylandSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createWaylandSurfaceKHR( + WaylandSurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateWaylandSurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateWaylandSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWaylandSurfaceKHR" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateWaylandSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWaylandSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createWaylandSurfaceKHRUnique( + WaylandSurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateWaylandSurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateWaylandSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWaylandSurfaceKHRUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceWaylandPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display * display, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( static_cast( m_physicalDevice ), queueFamilyIndex, display ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceWaylandPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceWaylandPresentationSupportKHR && + "Function requires " ); +# endif + + VkBool32 result = d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display ); + + return static_cast( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + // wrapper function for command vkCreateAndroidSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAndroidSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( + AndroidSurfaceCreateInfoKHR const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateAndroidSurfaceKHR( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateAndroidSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAndroidSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createAndroidSurfaceKHR( + AndroidSurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateAndroidSurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateAndroidSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createAndroidSurfaceKHR" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateAndroidSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAndroidSurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createAndroidSurfaceKHRUnique( + AndroidSurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateAndroidSurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateAndroidSurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createAndroidSurfaceKHRUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + // wrapper function for command vkCreateWin32SurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWin32SurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( + Win32SurfaceCreateInfoKHR const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateWin32SurfaceKHR( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateWin32SurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWin32SurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createWin32SurfaceKHR( + Win32SurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateWin32SurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateWin32SurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWin32SurfaceKHR" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateWin32SurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWin32SurfaceKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createWin32SurfaceKHRUnique( + Win32SurfaceCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateWin32SurfaceKHR && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateWin32SurfaceKHR( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWin32SurfaceKHRUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceWin32PresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWin32PresentationSupportKHR.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceWin32PresentationSupportKHR( static_cast( m_physicalDevice ), queueFamilyIndex ) ); + } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + // wrapper function for command vkCreateDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugReportCallbackEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( + DebugReportCallbackCreateInfoEXT const * pCreateInfo, AllocationCallbacks const * pAllocator, DebugReportCallbackEXT * pCallback, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDebugReportCallbackEXT( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pCallback ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugReportCallbackEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createDebugReportCallbackEXT( + DebugReportCallbackCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDebugReportCallbackEXT && "Function requires " ); +# endif + + DebugReportCallbackEXT callback; + Result result = static_cast( d.vkCreateDebugReportCallbackEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &callback ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugReportCallbackEXT" ); + + return detail::createResultValueType( result, std::move( callback ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugReportCallbackEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::createDebugReportCallbackEXTUnique( + DebugReportCallbackCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDebugReportCallbackEXT && "Function requires " ); +# endif + + DebugReportCallbackEXT callback; + Result result = static_cast( d.vkCreateDebugReportCallbackEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &callback ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugReportCallbackEXTUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( callback, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugReportCallbackEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugReportCallbackEXT( + static_cast( m_instance ), static_cast( callback ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugReportCallbackEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( + DebugReportCallbackEXT callback, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDebugReportCallbackEXT && "Function requires " ); +# endif + + d.vkDestroyDebugReportCallbackEXT( + m_instance, static_cast( callback ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugReportCallbackEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroy( DebugReportCallbackEXT callback, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugReportCallbackEXT( + static_cast( m_instance ), static_cast( callback ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugReportCallbackEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroy( DebugReportCallbackEXT callback, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDebugReportCallbackEXT && "Function requires " ); +# endif + + d.vkDestroyDebugReportCallbackEXT( + m_instance, static_cast( callback ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDebugReportMessageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugReportMessageEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( DebugReportFlagsEXT flags, + DebugReportObjectTypeEXT objectType_, + uint64_t object, + size_t location, + int32_t messageCode, + char const * pLayerPrefix, + char const * pMessage, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDebugReportMessageEXT( static_cast( m_instance ), + static_cast( flags ), + static_cast( objectType_ ), + object, + location, + messageCode, + pLayerPrefix, + pMessage ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDebugReportMessageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugReportMessageEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( DebugReportFlagsEXT flags, + DebugReportObjectTypeEXT objectType_, + uint64_t object, + size_t location, + int32_t messageCode, + std::string const & layerPrefix, + std::string const & message, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDebugReportMessageEXT && "Function requires " ); +# endif + + d.vkDebugReportMessageEXT( m_instance, + static_cast( flags ), + static_cast( objectType_ ), + object, + location, + messageCode, + layerPrefix.c_str(), + message.c_str() ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_debug_marker === + + // wrapper function for command vkDebugMarkerSetObjectTagEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectTagEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT const * pTagInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkDebugMarkerSetObjectTagEXT( static_cast( m_device ), reinterpret_cast( pTagInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDebugMarkerSetObjectTagEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectTagEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::debugMarkerSetObjectTagEXT( + DebugMarkerObjectTagInfoEXT const & tagInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDebugMarkerSetObjectTagEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast( &tagInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectTagEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDebugMarkerSetObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectNameEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT const * pNameInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkDebugMarkerSetObjectNameEXT( static_cast( m_device ), reinterpret_cast( pNameInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDebugMarkerSetObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectNameEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::debugMarkerSetObjectNameEXT( + DebugMarkerObjectNameInfoEXT const & nameInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDebugMarkerSetObjectNameEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast( &nameInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectNameEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDebugMarkerBeginEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerBeginEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT const * pMarkerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDebugMarkerBeginEXT( static_cast( m_commandBuffer ), reinterpret_cast( pMarkerInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDebugMarkerBeginEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerBeginEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT const & markerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDebugMarkerBeginEXT && "Function requires " ); +# endif + + d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast( &markerInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDebugMarkerEndEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerEndEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDebugMarkerEndEXT( static_cast( m_commandBuffer ) ); + } + + // wrapper function for command vkCmdDebugMarkerInsertEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerInsertEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT const * pMarkerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDebugMarkerInsertEXT( static_cast( m_commandBuffer ), reinterpret_cast( pMarkerInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDebugMarkerInsertEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerInsertEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT const & markerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDebugMarkerInsertEXT && "Function requires " ); +# endif + + d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast( &markerInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_video_queue === + + // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getVideoCapabilitiesKHR( + VideoProfileInfoKHR const * pVideoProfile, VideoCapabilitiesKHR * pCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceVideoCapabilitiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( pVideoProfile ), + reinterpret_cast( pCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getVideoCapabilitiesKHR( + VideoProfileInfoKHR const & videoProfile, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceVideoCapabilitiesKHR && "Function requires " ); +# endif + + VideoCapabilitiesKHR capabilities; + Result result = static_cast( d.vkGetPhysicalDeviceVideoCapabilitiesKHR( + m_physicalDevice, reinterpret_cast( &videoProfile ), reinterpret_cast( &capabilities ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" ); + + return detail::createResultValueType( result, std::move( capabilities ) ); + } + + // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getVideoCapabilitiesKHR( + VideoProfileInfoKHR const & videoProfile, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceVideoCapabilitiesKHR && "Function requires " ); +# endif + + StructureChain structureChain; + VideoCapabilitiesKHR & capabilities = structureChain.template get(); + Result result = static_cast( d.vkGetPhysicalDeviceVideoCapabilitiesKHR( + m_physicalDevice, reinterpret_cast( &videoProfile ), reinterpret_cast( &capabilities ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" ); + + return detail::createResultValueType( result, std::move( structureChain ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const * pVideoFormatInfo, + uint32_t * pVideoFormatPropertyCount, + VideoFormatPropertiesKHR * pVideoFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( pVideoFormatInfo ), + pVideoFormatPropertyCount, + reinterpret_cast( pVideoFormatProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR && + "Function requires " ); +# endif + + std::vector videoFormatProperties; + uint32_t videoFormatPropertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( + m_physicalDevice, reinterpret_cast( &videoFormatInfo ), &videoFormatPropertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && videoFormatPropertyCount ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + result = static_cast( + d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( m_physicalDevice, + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + reinterpret_cast( videoFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" ); + VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() ); + if ( videoFormatPropertyCount < videoFormatProperties.size() ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + } + return detail::createResultValueType( result, std::move( videoFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo, + VideoFormatPropertiesKHRAllocator const & videoFormatPropertiesKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR && + "Function requires " ); +# endif + + std::vector videoFormatProperties( videoFormatPropertiesKHRAllocator ); + uint32_t videoFormatPropertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( + m_physicalDevice, reinterpret_cast( &videoFormatInfo ), &videoFormatPropertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && videoFormatPropertyCount ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + result = static_cast( + d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( m_physicalDevice, + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + reinterpret_cast( videoFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" ); + VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() ); + if ( videoFormatPropertyCount < videoFormatProperties.size() ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + } + return detail::createResultValueType( result, std::move( videoFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR && + "Function requires " ); +# endif + + std::vector structureChains; + std::vector videoFormatProperties; + uint32_t videoFormatPropertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( + m_physicalDevice, reinterpret_cast( &videoFormatInfo ), &videoFormatPropertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && videoFormatPropertyCount ) + { + structureChains.resize( videoFormatPropertyCount ); + videoFormatProperties.resize( videoFormatPropertyCount ); + for ( uint32_t i = 0; i < videoFormatPropertyCount; i++ ) + { + videoFormatProperties[i].pNext = structureChains[i].template get().pNext; + } + result = static_cast( + d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( m_physicalDevice, + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + reinterpret_cast( videoFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" ); + VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() ); + if ( videoFormatPropertyCount < videoFormatProperties.size() ) + { + structureChains.resize( videoFormatPropertyCount ); + } + for ( uint32_t i = 0; i < videoFormatPropertyCount; i++ ) + { + structureChains[i].template get() = videoFormatProperties[i]; + } + return detail::createResultValueType( result, std::move( structureChains ) ); + } + + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getVideoFormatPropertiesKHR( + PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo, StructureChainAllocator const & structureChainAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR && + "Function requires " ); +# endif + + std::vector structureChains( structureChainAllocator ); + std::vector videoFormatProperties; + uint32_t videoFormatPropertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( + m_physicalDevice, reinterpret_cast( &videoFormatInfo ), &videoFormatPropertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && videoFormatPropertyCount ) + { + structureChains.resize( videoFormatPropertyCount ); + videoFormatProperties.resize( videoFormatPropertyCount ); + for ( uint32_t i = 0; i < videoFormatPropertyCount; i++ ) + { + videoFormatProperties[i].pNext = structureChains[i].template get().pNext; + } + result = static_cast( + d.vkGetPhysicalDeviceVideoFormatPropertiesKHR( m_physicalDevice, + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + reinterpret_cast( videoFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" ); + VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() ); + if ( videoFormatPropertyCount < videoFormatProperties.size() ) + { + structureChains.resize( videoFormatPropertyCount ); + } + for ( uint32_t i = 0; i < videoFormatPropertyCount; i++ ) + { + structureChains[i].template get() = videoFormatProperties[i]; + } + return detail::createResultValueType( result, std::move( structureChains ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createVideoSessionKHR( + VideoSessionCreateInfoKHR const * pCreateInfo, AllocationCallbacks const * pAllocator, VideoSessionKHR * pVideoSession, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateVideoSessionKHR( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pVideoSession ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createVideoSessionKHR( + VideoSessionCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateVideoSessionKHR && "Function requires " ); +# endif + + VideoSessionKHR videoSession; + Result result = static_cast( d.vkCreateVideoSessionKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &videoSession ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createVideoSessionKHR" ); + + return detail::createResultValueType( result, std::move( videoSession ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createVideoSessionKHRUnique( + VideoSessionCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateVideoSessionKHR && "Function requires " ); +# endif + + VideoSessionKHR videoSession; + Result result = static_cast( d.vkCreateVideoSessionKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &videoSession ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createVideoSessionKHRUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( videoSession, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyVideoSessionKHR( VideoSessionKHR videoSession, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionKHR( + static_cast( m_device ), static_cast( videoSession ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyVideoSessionKHR( VideoSessionKHR videoSession, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyVideoSessionKHR && "Function requires " ); +# endif + + d.vkDestroyVideoSessionKHR( m_device, static_cast( videoSession ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( VideoSessionKHR videoSession, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionKHR( + static_cast( m_device ), static_cast( videoSession ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( VideoSessionKHR videoSession, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyVideoSessionKHR && "Function requires " ); +# endif + + d.vkDestroyVideoSessionKHR( m_device, static_cast( videoSession ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetVideoSessionMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetVideoSessionMemoryRequirementsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getVideoSessionMemoryRequirementsKHR( + VideoSessionKHR videoSession, uint32_t * pMemoryRequirementsCount, VideoSessionMemoryRequirementsKHR * pMemoryRequirements, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetVideoSessionMemoryRequirementsKHR( static_cast( m_device ), + static_cast( videoSession ), + pMemoryRequirementsCount, + reinterpret_cast( pMemoryRequirements ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetVideoSessionMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetVideoSessionMemoryRequirementsKHR.html + template < + typename VideoSessionMemoryRequirementsKHRAllocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getVideoSessionMemoryRequirementsKHR( VideoSessionKHR videoSession, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetVideoSessionMemoryRequirementsKHR && "Function requires " ); +# endif + + std::vector memoryRequirements; + uint32_t memoryRequirementsCount; + Result result; + do + { + result = static_cast( + d.vkGetVideoSessionMemoryRequirementsKHR( m_device, static_cast( videoSession ), &memoryRequirementsCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && memoryRequirementsCount ) + { + memoryRequirements.resize( memoryRequirementsCount ); + result = static_cast( + d.vkGetVideoSessionMemoryRequirementsKHR( m_device, + static_cast( videoSession ), + &memoryRequirementsCount, + reinterpret_cast( memoryRequirements.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getVideoSessionMemoryRequirementsKHR" ); + VULKAN_HPP_ASSERT( memoryRequirementsCount <= memoryRequirements.size() ); + if ( memoryRequirementsCount < memoryRequirements.size() ) + { + memoryRequirements.resize( memoryRequirementsCount ); + } + return detail::createResultValueType( result, std::move( memoryRequirements ) ); + } + + // wrapper function for command vkGetVideoSessionMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetVideoSessionMemoryRequirementsKHR.html + template < + typename VideoSessionMemoryRequirementsKHRAllocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getVideoSessionMemoryRequirementsKHR( + VideoSessionKHR videoSession, VideoSessionMemoryRequirementsKHRAllocator const & videoSessionMemoryRequirementsKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetVideoSessionMemoryRequirementsKHR && "Function requires " ); +# endif + + std::vector memoryRequirements( videoSessionMemoryRequirementsKHRAllocator ); + uint32_t memoryRequirementsCount; + Result result; + do + { + result = static_cast( + d.vkGetVideoSessionMemoryRequirementsKHR( m_device, static_cast( videoSession ), &memoryRequirementsCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && memoryRequirementsCount ) + { + memoryRequirements.resize( memoryRequirementsCount ); + result = static_cast( + d.vkGetVideoSessionMemoryRequirementsKHR( m_device, + static_cast( videoSession ), + &memoryRequirementsCount, + reinterpret_cast( memoryRequirements.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getVideoSessionMemoryRequirementsKHR" ); + VULKAN_HPP_ASSERT( memoryRequirementsCount <= memoryRequirements.size() ); + if ( memoryRequirementsCount < memoryRequirements.size() ) + { + memoryRequirements.resize( memoryRequirementsCount ); + } + return detail::createResultValueType( result, std::move( memoryRequirements ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindVideoSessionMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindVideoSessionMemoryKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindVideoSessionMemoryKHR( + VideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount, BindVideoSessionMemoryInfoKHR const * pBindSessionMemoryInfos, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindVideoSessionMemoryKHR( static_cast( m_device ), + static_cast( videoSession ), + bindSessionMemoryInfoCount, + reinterpret_cast( pBindSessionMemoryInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindVideoSessionMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindVideoSessionMemoryKHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindVideoSessionMemoryKHR( + VideoSessionKHR videoSession, ArrayProxy const & bindSessionMemoryInfos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindVideoSessionMemoryKHR && "Function requires " ); +# endif + + Result result = + static_cast( d.vkBindVideoSessionMemoryKHR( m_device, + static_cast( videoSession ), + bindSessionMemoryInfos.size(), + reinterpret_cast( bindSessionMemoryInfos.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindVideoSessionMemoryKHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionParametersKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createVideoSessionParametersKHR( VideoSessionParametersCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + VideoSessionParametersKHR * pVideoSessionParameters, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateVideoSessionParametersKHR( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pVideoSessionParameters ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionParametersKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createVideoSessionParametersKHR( + VideoSessionParametersCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateVideoSessionParametersKHR && "Function requires " ); +# endif + + VideoSessionParametersKHR videoSessionParameters; + Result result = static_cast( d.vkCreateVideoSessionParametersKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &videoSessionParameters ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createVideoSessionParametersKHR" ); + + return detail::createResultValueType( result, std::move( videoSessionParameters ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionParametersKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createVideoSessionParametersKHRUnique( + VideoSessionParametersCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateVideoSessionParametersKHR && "Function requires " ); +# endif + + VideoSessionParametersKHR videoSessionParameters; + Result result = static_cast( d.vkCreateVideoSessionParametersKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &videoSessionParameters ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createVideoSessionParametersKHRUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( videoSessionParameters, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateVideoSessionParametersKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::updateVideoSessionParametersKHR( + VideoSessionParametersKHR videoSessionParameters, VideoSessionParametersUpdateInfoKHR const * pUpdateInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkUpdateVideoSessionParametersKHR( static_cast( m_device ), + static_cast( videoSessionParameters ), + reinterpret_cast( pUpdateInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateVideoSessionParametersKHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::updateVideoSessionParametersKHR( + VideoSessionParametersKHR videoSessionParameters, VideoSessionParametersUpdateInfoKHR const & updateInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkUpdateVideoSessionParametersKHR && "Function requires " ); +# endif + + Result result = + static_cast( d.vkUpdateVideoSessionParametersKHR( m_device, + static_cast( videoSessionParameters ), + reinterpret_cast( &updateInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::updateVideoSessionParametersKHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionParametersKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyVideoSessionParametersKHR( + VideoSessionParametersKHR videoSessionParameters, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionParametersKHR( static_cast( m_device ), + static_cast( videoSessionParameters ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionParametersKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyVideoSessionParametersKHR( + VideoSessionParametersKHR videoSessionParameters, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyVideoSessionParametersKHR && "Function requires " ); +# endif + + d.vkDestroyVideoSessionParametersKHR( + m_device, static_cast( videoSessionParameters ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionParametersKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( VideoSessionParametersKHR videoSessionParameters, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyVideoSessionParametersKHR( static_cast( m_device ), + static_cast( videoSessionParameters ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionParametersKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( VideoSessionParametersKHR videoSessionParameters, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyVideoSessionParametersKHR && "Function requires " ); +# endif + + d.vkDestroyVideoSessionParametersKHR( + m_device, static_cast( videoSessionParameters ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginVideoCodingKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginVideoCodingKHR( VideoBeginCodingInfoKHR const * pBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginVideoCodingKHR( static_cast( m_commandBuffer ), reinterpret_cast( pBeginInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginVideoCodingKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginVideoCodingKHR( VideoBeginCodingInfoKHR const & beginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginVideoCodingKHR && "Function requires " ); +# endif + + d.vkCmdBeginVideoCodingKHR( m_commandBuffer, reinterpret_cast( &beginInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndVideoCodingKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endVideoCodingKHR( VideoEndCodingInfoKHR const * pEndCodingInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndVideoCodingKHR( static_cast( m_commandBuffer ), reinterpret_cast( pEndCodingInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndVideoCodingKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endVideoCodingKHR( VideoEndCodingInfoKHR const & endCodingInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdEndVideoCodingKHR && "Function requires " ); +# endif + + d.vkCmdEndVideoCodingKHR( m_commandBuffer, reinterpret_cast( &endCodingInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdControlVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdControlVideoCodingKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::controlVideoCodingKHR( VideoCodingControlInfoKHR const * pCodingControlInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdControlVideoCodingKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pCodingControlInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdControlVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdControlVideoCodingKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::controlVideoCodingKHR( VideoCodingControlInfoKHR const & codingControlInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdControlVideoCodingKHR && "Function requires " ); +# endif + + d.vkCmdControlVideoCodingKHR( m_commandBuffer, reinterpret_cast( &codingControlInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_video_decode_queue === + + // wrapper function for command vkCmdDecodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecodeVideoKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::decodeVideoKHR( VideoDecodeInfoKHR const * pDecodeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDecodeVideoKHR( static_cast( m_commandBuffer ), reinterpret_cast( pDecodeInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDecodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecodeVideoKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::decodeVideoKHR( VideoDecodeInfoKHR const & decodeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDecodeVideoKHR && "Function requires " ); +# endif + + d.vkCmdDecodeVideoKHR( m_commandBuffer, reinterpret_cast( &decodeInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_transform_feedback === + + // wrapper function for command vkCmdBindTransformFeedbackBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffersEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT( + uint32_t firstBinding, uint32_t bindingCount, Buffer const * pBuffers, DeviceSize const * pOffsets, DeviceSize const * pSizes, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindTransformFeedbackBuffersEXT( static_cast( m_commandBuffer ), + firstBinding, + bindingCount, + reinterpret_cast( pBuffers ), + reinterpret_cast( pOffsets ), + reinterpret_cast( pSizes ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindTransformFeedbackBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffersEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindTransformFeedbackBuffersEXT && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != sizes.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBindTransformFeedbackBuffersEXT( m_commandBuffer, + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginTransformFeedbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedbackEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( + uint32_t firstCounterBuffer, uint32_t counterBufferCount, Buffer const * pCounterBuffers, DeviceSize const * pCounterBufferOffsets, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginTransformFeedbackEXT( static_cast( m_commandBuffer ), + firstCounterBuffer, + counterBufferCount, + reinterpret_cast( pCounterBuffers ), + reinterpret_cast( pCounterBufferOffsets ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginTransformFeedbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedbackEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginTransformFeedbackEXT && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() ); +# else + if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::beginTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBeginTransformFeedbackEXT( m_commandBuffer, + firstCounterBuffer, + counterBuffers.size(), + reinterpret_cast( counterBuffers.data() ), + reinterpret_cast( counterBufferOffsets.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndTransformFeedbackEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedbackEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( + uint32_t firstCounterBuffer, uint32_t counterBufferCount, Buffer const * pCounterBuffers, DeviceSize const * pCounterBufferOffsets, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndTransformFeedbackEXT( static_cast( m_commandBuffer ), + firstCounterBuffer, + counterBufferCount, + reinterpret_cast( pCounterBuffers ), + reinterpret_cast( pCounterBufferOffsets ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndTransformFeedbackEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedbackEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdEndTransformFeedbackEXT && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() ); +# else + if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::endTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdEndTransformFeedbackEXT( m_commandBuffer, + firstCounterBuffer, + counterBuffers.size(), + reinterpret_cast( counterBuffers.data() ), + reinterpret_cast( counterBufferOffsets.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQueryIndexedEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( QueryPool queryPool, uint32_t query, QueryControlFlags flags, uint32_t index, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginQueryIndexedEXT( + static_cast( m_commandBuffer ), static_cast( queryPool ), query, static_cast( flags ), index ); + } + + // wrapper function for command vkCmdEndQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQueryIndexedEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endQueryIndexedEXT( QueryPool queryPool, uint32_t query, uint32_t index, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndQueryIndexedEXT( static_cast( m_commandBuffer ), static_cast( queryPool ), query, index ); + } + + // wrapper function for command vkCmdDrawIndirectByteCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCountEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCountEXT( uint32_t instanceCount, + uint32_t firstInstance, + Buffer counterBuffer, + DeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirectByteCountEXT( static_cast( m_commandBuffer ), + instanceCount, + firstInstance, + static_cast( counterBuffer ), + static_cast( counterBufferOffset ), + counterOffset, + vertexStride ); + } + + //=== VK_NVX_binary_import === + + // wrapper function for command vkCreateCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuModuleNVX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createCuModuleNVX( + CuModuleCreateInfoNVX const * pCreateInfo, AllocationCallbacks const * pAllocator, CuModuleNVX * pModule, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateCuModuleNVX( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pModule ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuModuleNVX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createCuModuleNVX( + CuModuleCreateInfoNVX const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateCuModuleNVX && "Function requires " ); +# endif + + CuModuleNVX module; + Result result = static_cast( d.vkCreateCuModuleNVX( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &module ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createCuModuleNVX" ); + + return detail::createResultValueType( result, std::move( module ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuModuleNVX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createCuModuleNVXUnique( + CuModuleCreateInfoNVX const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateCuModuleNVX && "Function requires " ); +# endif + + CuModuleNVX module; + Result result = static_cast( d.vkCreateCuModuleNVX( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &module ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createCuModuleNVXUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( module, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuFunctionNVX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createCuFunctionNVX( + CuFunctionCreateInfoNVX const * pCreateInfo, AllocationCallbacks const * pAllocator, CuFunctionNVX * pFunction, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateCuFunctionNVX( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFunction ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuFunctionNVX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createCuFunctionNVX( + CuFunctionCreateInfoNVX const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateCuFunctionNVX && "Function requires " ); +# endif + + CuFunctionNVX function; + Result result = static_cast( d.vkCreateCuFunctionNVX( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &function ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createCuFunctionNVX" ); + + return detail::createResultValueType( result, std::move( function ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuFunctionNVX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createCuFunctionNVXUnique( + CuFunctionCreateInfoNVX const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateCuFunctionNVX && "Function requires " ); +# endif + + CuFunctionNVX function; + Result result = static_cast( d.vkCreateCuFunctionNVX( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &function ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createCuFunctionNVXUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( function, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuModuleNVX.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyCuModuleNVX( CuModuleNVX module, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuModuleNVX( + static_cast( m_device ), static_cast( module ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuModuleNVX.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyCuModuleNVX( CuModuleNVX module, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyCuModuleNVX && "Function requires " ); +# endif + + d.vkDestroyCuModuleNVX( m_device, static_cast( module ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuModuleNVX.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( CuModuleNVX module, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuModuleNVX( + static_cast( m_device ), static_cast( module ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuModuleNVX.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( CuModuleNVX module, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyCuModuleNVX && "Function requires " ); +# endif + + d.vkDestroyCuModuleNVX( m_device, static_cast( module ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuFunctionNVX.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyCuFunctionNVX( CuFunctionNVX function, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuFunctionNVX( + static_cast( m_device ), static_cast( function ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuFunctionNVX.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyCuFunctionNVX( CuFunctionNVX function, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyCuFunctionNVX && "Function requires " ); +# endif + + d.vkDestroyCuFunctionNVX( m_device, static_cast( function ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuFunctionNVX.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( CuFunctionNVX function, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCuFunctionNVX( + static_cast( m_device ), static_cast( function ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuFunctionNVX.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( CuFunctionNVX function, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyCuFunctionNVX && "Function requires " ); +# endif + + d.vkDestroyCuFunctionNVX( m_device, static_cast( function ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCuLaunchKernelNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCuLaunchKernelNVX.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::cuLaunchKernelNVX( CuLaunchInfoNVX const * pLaunchInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCuLaunchKernelNVX( static_cast( m_commandBuffer ), reinterpret_cast( pLaunchInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCuLaunchKernelNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCuLaunchKernelNVX.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::cuLaunchKernelNVX( CuLaunchInfoNVX const & launchInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCuLaunchKernelNVX && "Function requires " ); +# endif + + d.vkCmdCuLaunchKernelNVX( m_commandBuffer, reinterpret_cast( &launchInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NVX_image_view_handle === + + // wrapper function for command vkGetImageViewHandleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandleNVX.html + template ::type> + VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( ImageViewHandleInfoNVX const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetImageViewHandleNVX( static_cast( m_device ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageViewHandleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandleNVX.html + template ::type> + VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( ImageViewHandleInfoNVX const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageViewHandleNVX && "Function requires " ); +# endif + + uint32_t result = d.vkGetImageViewHandleNVX( m_device, reinterpret_cast( &info ) ); + + return result; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageViewHandle64NVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandle64NVX.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getImageViewHandle64NVX( ImageViewHandleInfoNVX const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetImageViewHandle64NVX( static_cast( m_device ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageViewHandle64NVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandle64NVX.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getImageViewHandle64NVX( ImageViewHandleInfoNVX const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageViewHandle64NVX && "Function requires " ); +# endif + + uint64_t result = d.vkGetImageViewHandle64NVX( m_device, reinterpret_cast( &info ) ); + + return result; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageViewAddressNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewAddressNVX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getImageViewAddressNVX( + ImageView imageView, ImageViewAddressPropertiesNVX * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetImageViewAddressNVX( + static_cast( m_device ), static_cast( imageView ), reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageViewAddressNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewAddressNVX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getImageViewAddressNVX( + ImageView imageView, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageViewAddressNVX && "Function requires " ); +# endif + + ImageViewAddressPropertiesNVX properties; + Result result = static_cast( + d.vkGetImageViewAddressNVX( m_device, static_cast( imageView ), reinterpret_cast( &properties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getImageViewAddressNVX" ); + + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceCombinedImageSamplerIndexNVX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceCombinedImageSamplerIndexNVX.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getCombinedImageSamplerIndexNVX( uint64_t imageViewIndex, uint64_t samplerIndex, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeviceCombinedImageSamplerIndexNVX( static_cast( m_device ), imageViewIndex, samplerIndex ); + } + + //=== VK_AMD_draw_indirect_count === + + // wrapper function for command vkCmdDrawIndirectCountAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountAMD.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( + Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirectCountAMD( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + // wrapper function for command vkCmdDrawIndexedIndirectCountAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountAMD.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( + Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexedIndirectCountAMD( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_AMD_shader_info === + + // wrapper function for command vkGetShaderInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInfoAMD.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getShaderInfoAMD( + Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t * pInfoSize, void * pInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetShaderInfoAMD( static_cast( m_device ), + static_cast( pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + pInfoSize, + pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetShaderInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInfoAMD.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getShaderInfoAMD( + Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetShaderInfoAMD && "Function requires " ); +# endif + + std::vector info; + size_t infoSize; + Result result; + do + { + result = static_cast( d.vkGetShaderInfoAMD( m_device, + static_cast( pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && infoSize ) + { + info.resize( infoSize ); + result = static_cast( d.vkGetShaderInfoAMD( m_device, + static_cast( pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + reinterpret_cast( info.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getShaderInfoAMD" ); + VULKAN_HPP_ASSERT( infoSize <= info.size() ); + if ( infoSize < info.size() ) + { + info.resize( infoSize ); + } + return detail::createResultValueType( result, std::move( info ) ); + } + + // wrapper function for command vkGetShaderInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInfoAMD.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getShaderInfoAMD( + Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetShaderInfoAMD && "Function requires " ); +# endif + + std::vector info( uint8_tAllocator ); + size_t infoSize; + Result result; + do + { + result = static_cast( d.vkGetShaderInfoAMD( m_device, + static_cast( pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && infoSize ) + { + info.resize( infoSize ); + result = static_cast( d.vkGetShaderInfoAMD( m_device, + static_cast( pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + reinterpret_cast( info.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getShaderInfoAMD" ); + VULKAN_HPP_ASSERT( infoSize <= info.size() ); + if ( infoSize < info.size() ) + { + info.resize( infoSize ); + } + return detail::createResultValueType( result, std::move( info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_dynamic_rendering === + + // wrapper function for command vkCmdBeginRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderingKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginRenderingKHR( RenderingInfo const * pRenderingInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderingKHR( static_cast( m_commandBuffer ), reinterpret_cast( pRenderingInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderingKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginRenderingKHR( RenderingInfo const & renderingInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginRenderingKHR && "Function requires or " ); +# endif + + d.vkCmdBeginRenderingKHR( m_commandBuffer, reinterpret_cast( &renderingInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderingKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRenderingKHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRenderingKHR( static_cast( m_commandBuffer ) ); + } + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + // wrapper function for command vkCreateStreamDescriptorSurfaceGGP, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateStreamDescriptorSurfaceGGP.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createStreamDescriptorSurfaceGGP( + StreamDescriptorSurfaceCreateInfoGGP const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateStreamDescriptorSurfaceGGP( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateStreamDescriptorSurfaceGGP, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateStreamDescriptorSurfaceGGP.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createStreamDescriptorSurfaceGGP( + StreamDescriptorSurfaceCreateInfoGGP const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateStreamDescriptorSurfaceGGP && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateStreamDescriptorSurfaceGGP( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createStreamDescriptorSurfaceGGP" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateStreamDescriptorSurfaceGGP, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateStreamDescriptorSurfaceGGP.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createStreamDescriptorSurfaceGGPUnique( + StreamDescriptorSurfaceCreateInfoGGP const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateStreamDescriptorSurfaceGGP && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateStreamDescriptorSurfaceGGP( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createStreamDescriptorSurfaceGGPUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalImageFormatPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, + ImageType type, + ImageTiling tiling, + ImageUsageFlags usage, + ImageCreateFlags flags, + ExternalMemoryHandleTypeFlagsNV externalHandleType, + ExternalImageFormatPropertiesNV * + pExternalImageFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceExternalImageFormatPropertiesNV( static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + static_cast( externalHandleType ), + reinterpret_cast( pExternalImageFormatProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalImageFormatPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getExternalImageFormatPropertiesNV( + Format format, + ImageType type, + ImageTiling tiling, + ImageUsageFlags usage, + ImageCreateFlags flags, + ExternalMemoryHandleTypeFlagsNV externalHandleType, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceExternalImageFormatPropertiesNV && + "Function requires " ); +# endif + + ExternalImageFormatPropertiesNV externalImageFormatProperties; + Result result = static_cast( + d.vkGetPhysicalDeviceExternalImageFormatPropertiesNV( m_physicalDevice, + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + static_cast( externalHandleType ), + reinterpret_cast( &externalImageFormatProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getExternalImageFormatPropertiesNV" ); + + return detail::createResultValueType( result, std::move( externalImageFormatProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + + // wrapper function for command vkGetMemoryWin32HandleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( + DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE * pHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryWin32HandleNV( + static_cast( m_device ), static_cast( memory ), static_cast( handleType ), pHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryWin32HandleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryWin32HandleNV( + DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryWin32HandleNV && "Function requires " ); +# endif + + HANDLE handle; + Result result = static_cast( + d.vkGetMemoryWin32HandleNV( m_device, static_cast( memory ), static_cast( handleType ), &handle ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandleNV" ); + + return detail::createResultValueType( result, std::move( handle ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_get_physical_device_properties2 === + + // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2 * pFeatures, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFeatures2KHR( static_cast( m_physicalDevice ), reinterpret_cast( pFeatures ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFeatures2KHR && + "Function requires or " ); +# endif + + PhysicalDeviceFeatures2 features; + d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast( &features ) ); + + return features; + } + + // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFeatures2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFeatures2KHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + PhysicalDeviceFeatures2 & features = structureChain.template get(); + d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast( &features ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2 * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceProperties2KHR( static_cast( m_physicalDevice ), reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceProperties2 PhysicalDevice::getProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceProperties2KHR && + "Function requires or " ); +# endif + + PhysicalDeviceProperties2 properties; + d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast( &properties ) ); + + return properties; + } + + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceProperties2KHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + PhysicalDeviceProperties2 & properties = structureChain.template get(); + d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast( &properties ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2 * pFormatProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceFormatProperties2KHR( + static_cast( m_physicalDevice ), static_cast( format ), reinterpret_cast( pFormatProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE FormatProperties2 PhysicalDevice::getFormatProperties2KHR( Format format, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFormatProperties2KHR && + "Function requires or " ); +# endif + + FormatProperties2 formatProperties; + d.vkGetPhysicalDeviceFormatProperties2KHR( + m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); + + return formatProperties; + } + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFormatProperties2KHR( Format format, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFormatProperties2KHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + FormatProperties2 & formatProperties = structureChain.template get(); + d.vkGetPhysicalDeviceFormatProperties2KHR( + m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( + PhysicalDeviceImageFormatInfo2 const * pImageFormatInfo, ImageFormatProperties2 * pImageFormatProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( pImageFormatInfo ), + reinterpret_cast( pImageFormatProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getImageFormatProperties2KHR( + PhysicalDeviceImageFormatInfo2 const & imageFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceImageFormatProperties2KHR && + "Function requires or " ); +# endif + + ImageFormatProperties2 imageFormatProperties; + Result result = + static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" ); + + return detail::createResultValueType( result, std::move( imageFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getImageFormatProperties2KHR( + PhysicalDeviceImageFormatInfo2 const & imageFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceImageFormatProperties2KHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + ImageFormatProperties2 & imageFormatProperties = structureChain.template get(); + Result result = + static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" ); + + return detail::createResultValueType( result, std::move( structureChain ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( + uint32_t * pQueueFamilyPropertyCount, QueueFamilyProperties2 * pQueueFamilyProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( + static_cast( m_physicalDevice ), pQueueFamilyPropertyCount, reinterpret_cast( pQueueFamilyProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR( + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyProperties2KHR && + "Function requires or " ); +# endif + + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( + m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + queueFamilyProperties.resize( queueFamilyPropertyCount ); + } + return queueFamilyProperties; + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR( + QueueFamilyProperties2Allocator const & queueFamilyProperties2Allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyProperties2KHR && + "Function requires or " ); +# endif + + std::vector queueFamilyProperties( queueFamilyProperties2Allocator ); + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( + m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + queueFamilyProperties.resize( queueFamilyPropertyCount ); + } + return queueFamilyProperties; + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR( Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyProperties2KHR && + "Function requires or " ); +# endif + + std::vector structureChains; + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + structureChains.resize( queueFamilyPropertyCount ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = structureChains[i].template get().pNext; + } + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( + m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + structureChains.resize( queueFamilyPropertyCount ); + } + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + structureChains[i].template get() = queueFamilyProperties[i]; + } + return structureChains; + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR( + StructureChainAllocator const & structureChainAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyProperties2KHR && + "Function requires or " ); +# endif + + std::vector structureChains( structureChainAllocator ); + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); + structureChains.resize( queueFamilyPropertyCount ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = structureChains[i].template get().pNext; + } + d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( + m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + structureChains.resize( queueFamilyPropertyCount ); + } + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + structureChains[i].template get() = queueFamilyProperties[i]; + } + return structureChains; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2 * pMemoryProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceMemoryProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( pMemoryProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceMemoryProperties2KHR && + "Function requires or " ); +# endif + + PhysicalDeviceMemoryProperties2 memoryProperties; + d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); + + return memoryProperties; + } + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getMemoryProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceMemoryProperties2KHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + PhysicalDeviceMemoryProperties2 & memoryProperties = structureChain.template get(); + d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( + PhysicalDeviceSparseImageFormatInfo2 const * pFormatInfo, uint32_t * pPropertyCount, SparseImageFormatProperties2 * pProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( pFormatInfo ), + pPropertyCount, + reinterpret_cast( pProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2KHR( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR && + "Function requires or " ); +# endif + + std::vector properties; + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return properties; + } + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2KHR( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo, + SparseImageFormatProperties2Allocator const & sparseImageFormatProperties2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR && + "Function requires or " ); +# endif + + std::vector properties( sparseImageFormatProperties2Allocator ); + uint32_t propertyCount; + d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + m_physicalDevice, reinterpret_cast( &formatInfo ), &propertyCount, nullptr ); + properties.resize( propertyCount ); + d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return properties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_device_group === + + // wrapper function for command vkGetDeviceGroupPeerMemoryFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHR( + uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlags * pPeerMemoryFeatures, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceGroupPeerMemoryFeaturesKHR( + static_cast( m_device ), heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast( pPeerMemoryFeatures ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceGroupPeerMemoryFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeaturesKHR( + uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceGroupPeerMemoryFeaturesKHR && + "Function requires or " ); +# endif + + PeerMemoryFeatureFlags peerMemoryFeatures; + d.vkGetDeviceGroupPeerMemoryFeaturesKHR( + m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast( &peerMemoryFeatures ) ); + + return peerMemoryFeatures; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDeviceMaskKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMaskKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDeviceMaskKHR( static_cast( m_commandBuffer ), deviceMask ); + } + + // wrapper function for command vkCmdDispatchBaseKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBaseKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( + uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchBaseKHR( static_cast( m_commandBuffer ), baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); + } + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + // wrapper function for command vkCreateViSurfaceNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateViSurfaceNN.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( + ViSurfaceCreateInfoNN const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateViSurfaceNN( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateViSurfaceNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateViSurfaceNN.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createViSurfaceNN( + ViSurfaceCreateInfoNN const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateViSurfaceNN && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateViSurfaceNN( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createViSurfaceNN" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateViSurfaceNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateViSurfaceNN.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createViSurfaceNNUnique( + ViSurfaceCreateInfoNN const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateViSurfaceNN && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateViSurfaceNN( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createViSurfaceNNUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_maintenance1 === + + // wrapper function for command vkTrimCommandPoolKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPoolKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkTrimCommandPoolKHR( static_cast( m_device ), static_cast( commandPool ), static_cast( flags ) ); + } + + //=== VK_KHR_device_group_creation === + + // wrapper function for command vkEnumeratePhysicalDeviceGroupsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHR( + uint32_t * pPhysicalDeviceGroupCount, PhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( static_cast( m_instance ), + pPhysicalDeviceGroupCount, + reinterpret_cast( pPhysicalDeviceGroupProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDeviceGroupsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::enumeratePhysicalDeviceGroupsKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDeviceGroupsKHR && + "Function requires or " ); +# endif + + std::vector physicalDeviceGroupProperties; + uint32_t physicalDeviceGroupCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( + m_instance, &physicalDeviceGroupCount, reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroupsKHR" ); + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + return detail::createResultValueType( result, std::move( physicalDeviceGroupProperties ) ); + } + + // wrapper function for command vkEnumeratePhysicalDeviceGroupsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::enumeratePhysicalDeviceGroupsKHR( PhysicalDeviceGroupPropertiesAllocator const & physicalDeviceGroupPropertiesAllocator, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDeviceGroupsKHR && + "Function requires or " ); +# endif + + std::vector physicalDeviceGroupProperties( physicalDeviceGroupPropertiesAllocator ); + uint32_t physicalDeviceGroupCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( + m_instance, &physicalDeviceGroupCount, reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroupsKHR" ); + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + return detail::createResultValueType( result, std::move( physicalDeviceGroupProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_external_memory_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalBufferPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( + PhysicalDeviceExternalBufferInfo const * pExternalBufferInfo, ExternalBufferProperties * pExternalBufferProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( pExternalBufferInfo ), + reinterpret_cast( pExternalBufferProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalBufferPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalBufferProperties PhysicalDevice::getExternalBufferPropertiesKHR( + PhysicalDeviceExternalBufferInfo const & externalBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceExternalBufferPropertiesKHR && + "Function requires or " ); +# endif + + ExternalBufferProperties externalBufferProperties; + d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, + reinterpret_cast( &externalBufferInfo ), + reinterpret_cast( &externalBufferProperties ) ); + + return externalBufferProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + + // wrapper function for command vkGetMemoryWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( + MemoryGetWin32HandleInfoKHR const * pGetWin32HandleInfo, HANDLE * pHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryWin32HandleKHR( + static_cast( m_device ), reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryWin32HandleKHR( + MemoryGetWin32HandleInfoKHR const & getWin32HandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryWin32HandleKHR && "Function requires " ); +# endif + + HANDLE handle; + Result result = + static_cast( d.vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandleKHR" ); + + return detail::createResultValueType( result, std::move( handle ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryWin32HandlePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandlePropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( + ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryWin32HandlePropertiesKHR( static_cast( m_device ), + static_cast( handleType ), + handle, + reinterpret_cast( pMemoryWin32HandleProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryWin32HandlePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandlePropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryWin32HandlePropertiesKHR( + ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryWin32HandlePropertiesKHR && "Function requires " ); +# endif + + MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties; + Result result = + static_cast( d.vkGetMemoryWin32HandlePropertiesKHR( m_device, + static_cast( handleType ), + handle, + reinterpret_cast( &memoryWin32HandleProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandlePropertiesKHR" ); + + return detail::createResultValueType( result, std::move( memoryWin32HandleProperties ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + + // wrapper function for command vkGetMemoryFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( MemoryGetFdInfoKHR const * pGetFdInfo, int * pFd, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryFdKHR( static_cast( m_device ), reinterpret_cast( pGetFdInfo ), pFd ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryFdKHR( MemoryGetFdInfoKHR const & getFdInfo, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryFdKHR && "Function requires " ); +# endif + + int fd; + Result result = static_cast( d.vkGetMemoryFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdKHR" ); + + return detail::createResultValueType( result, std::move( fd ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryFdPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( + ExternalMemoryHandleTypeFlagBits handleType, int fd, MemoryFdPropertiesKHR * pMemoryFdProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryFdPropertiesKHR( static_cast( m_device ), + static_cast( handleType ), + fd, + reinterpret_cast( pMemoryFdProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryFdPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryFdPropertiesKHR( + ExternalMemoryHandleTypeFlagBits handleType, int fd, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryFdPropertiesKHR && "Function requires " ); +# endif + + MemoryFdPropertiesKHR memoryFdProperties; + Result result = static_cast( d.vkGetMemoryFdPropertiesKHR( + m_device, static_cast( handleType ), fd, reinterpret_cast( &memoryFdProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdPropertiesKHR" ); + + return detail::createResultValueType( result, std::move( memoryFdProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_external_semaphore_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( + PhysicalDeviceExternalSemaphoreInfo const * pExternalSemaphoreInfo, ExternalSemaphoreProperties * pExternalSemaphoreProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( pExternalSemaphoreInfo ), + reinterpret_cast( pExternalSemaphoreProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphorePropertiesKHR( + PhysicalDeviceExternalSemaphoreInfo const & externalSemaphoreInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR && + "Function requires or " ); +# endif + + ExternalSemaphoreProperties externalSemaphoreProperties; + d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, + reinterpret_cast( &externalSemaphoreInfo ), + reinterpret_cast( &externalSemaphoreProperties ) ); + + return externalSemaphoreProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + + // wrapper function for command vkImportSemaphoreWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreWin32HandleKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( + ImportSemaphoreWin32HandleInfoKHR const * pImportSemaphoreWin32HandleInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkImportSemaphoreWin32HandleKHR( + static_cast( m_device ), reinterpret_cast( pImportSemaphoreWin32HandleInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkImportSemaphoreWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreWin32HandleKHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::importSemaphoreWin32HandleKHR( + ImportSemaphoreWin32HandleInfoKHR const & importSemaphoreWin32HandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkImportSemaphoreWin32HandleKHR && "Function requires " ); +# endif + + Result result = static_cast( + d.vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast( &importSemaphoreWin32HandleInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreWin32HandleKHR" ); + + return detail::createResultValueType( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSemaphoreWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreWin32HandleKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( + SemaphoreGetWin32HandleInfoKHR const * pGetWin32HandleInfo, HANDLE * pHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSemaphoreWin32HandleKHR( + static_cast( m_device ), reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSemaphoreWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreWin32HandleKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getSemaphoreWin32HandleKHR( + SemaphoreGetWin32HandleInfoKHR const & getWin32HandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSemaphoreWin32HandleKHR && "Function requires " ); +# endif + + HANDLE handle; + Result result = static_cast( + d.vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreWin32HandleKHR" ); + + return detail::createResultValueType( result, std::move( handle ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + + // wrapper function for command vkImportSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreFdKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( ImportSemaphoreFdInfoKHR const * pImportSemaphoreFdInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkImportSemaphoreFdKHR( static_cast( m_device ), reinterpret_cast( pImportSemaphoreFdInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkImportSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreFdKHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::importSemaphoreFdKHR( + ImportSemaphoreFdInfoKHR const & importSemaphoreFdInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkImportSemaphoreFdKHR && "Function requires " ); +# endif + + Result result = static_cast( d.vkImportSemaphoreFdKHR( m_device, reinterpret_cast( &importSemaphoreFdInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreFdKHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreFdKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( SemaphoreGetFdInfoKHR const * pGetFdInfo, int * pFd, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetSemaphoreFdKHR( static_cast( m_device ), reinterpret_cast( pGetFdInfo ), pFd ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreFdKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getSemaphoreFdKHR( SemaphoreGetFdInfoKHR const & getFdInfo, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSemaphoreFdKHR && "Function requires " ); +# endif + + int fd; + Result result = static_cast( d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreFdKHR" ); + + return detail::createResultValueType( result, std::move( fd ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_push_descriptor === + + // wrapper function for command vkCmdPushDescriptorSetKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + WriteDescriptorSet const * pDescriptorWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSetKHR( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( layout ), + set, + descriptorWriteCount, + reinterpret_cast( pDescriptorWrites ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSetKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPushDescriptorSetKHR && "Function requires or " ); +# endif + + d.vkCmdPushDescriptorSetKHR( m_commandBuffer, + static_cast( pipelineBindPoint ), + static_cast( layout ), + set, + descriptorWrites.size(), + reinterpret_cast( descriptorWrites.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( + DescriptorUpdateTemplate descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, void const * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSetWithTemplateKHR( static_cast( m_commandBuffer ), + static_cast( descriptorUpdateTemplate ), + static_cast( layout ), + set, + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( + DescriptorUpdateTemplate descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, DataType const & data, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( + d.vkCmdPushDescriptorSetWithTemplateKHR && + "Function requires or or " ); +# endif + + d.vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, + static_cast( descriptorUpdateTemplate ), + static_cast( layout ), + set, + reinterpret_cast( &data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_conditional_rendering === + + // wrapper function for command vkCmdBeginConditionalRenderingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRenderingEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( ConditionalRenderingBeginInfoEXT const * pConditionalRenderingBegin, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginConditionalRenderingEXT( static_cast( m_commandBuffer ), + reinterpret_cast( pConditionalRenderingBegin ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginConditionalRenderingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRenderingEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( ConditionalRenderingBeginInfoEXT const & conditionalRenderingBegin, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginConditionalRenderingEXT && "Function requires " ); +# endif + + d.vkCmdBeginConditionalRenderingEXT( m_commandBuffer, reinterpret_cast( &conditionalRenderingBegin ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndConditionalRenderingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndConditionalRenderingEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndConditionalRenderingEXT( static_cast( m_commandBuffer ) ); + } + + //=== VK_KHR_descriptor_update_template === + + // wrapper function for command vkCreateDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplateKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DescriptorUpdateTemplate * pDescriptorUpdateTemplate, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDescriptorUpdateTemplateKHR( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pDescriptorUpdateTemplate ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplateKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createDescriptorUpdateTemplateKHR( + DescriptorUpdateTemplateCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDescriptorUpdateTemplateKHR && + "Function requires or " ); +# endif + + DescriptorUpdateTemplate descriptorUpdateTemplate; + Result result = static_cast( d.vkCreateDescriptorUpdateTemplateKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &descriptorUpdateTemplate ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateKHR" ); + + return detail::createResultValueType( result, std::move( descriptorUpdateTemplate ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplateKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createDescriptorUpdateTemplateKHRUnique( + DescriptorUpdateTemplateCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDescriptorUpdateTemplateKHR && + "Function requires or " ); +# endif + + DescriptorUpdateTemplate descriptorUpdateTemplate; + Result result = static_cast( d.vkCreateDescriptorUpdateTemplateKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &descriptorUpdateTemplate ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateKHRUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( descriptorUpdateTemplate, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplateKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( + DescriptorUpdateTemplate descriptorUpdateTemplate, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDescriptorUpdateTemplateKHR( static_cast( m_device ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplateKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( + DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDescriptorUpdateTemplateKHR && + "Function requires or " ); +# endif + + d.vkDestroyDescriptorUpdateTemplateKHR( + m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplateKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( + DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, void const * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateDescriptorSetWithTemplateKHR( static_cast( m_device ), + static_cast( descriptorSet ), + static_cast( descriptorUpdateTemplate ), + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplateKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( + DescriptorSet descriptorSet, DescriptorUpdateTemplate descriptorUpdateTemplate, DataType const & data, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkUpdateDescriptorSetWithTemplateKHR && + "Function requires or " ); +# endif + + d.vkUpdateDescriptorSetWithTemplateKHR( m_device, + static_cast( descriptorSet ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( &data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_clip_space_w_scaling === + + // wrapper function for command vkCmdSetViewportWScalingNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( + uint32_t firstViewport, uint32_t viewportCount, ViewportWScalingNV const * pViewportWScalings, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportWScalingNV( + static_cast( m_commandBuffer ), firstViewport, viewportCount, reinterpret_cast( pViewportWScalings ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewportWScalingNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( + uint32_t firstViewport, ArrayProxy const & viewportWScalings, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetViewportWScalingNV && "Function requires " ); +# endif + + d.vkCmdSetViewportWScalingNV( + m_commandBuffer, firstViewport, viewportWScalings.size(), reinterpret_cast( viewportWScalings.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_direct_mode_display === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkReleaseDisplayEXT( static_cast( m_physicalDevice ), static_cast( display ) ) ); + } +#else + // wrapper function for command vkReleaseDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkReleaseDisplayEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast( display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::releaseDisplayEXT" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::release( DisplayKHR display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkReleaseDisplayEXT( static_cast( m_physicalDevice ), static_cast( display ) ) ); + } +#else + // wrapper function for command vkReleaseDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::release( DisplayKHR display, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkReleaseDisplayEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast( display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::release" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + + // wrapper function for command vkAcquireXlibDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireXlibDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display * dpy, DisplayKHR display, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAcquireXlibDisplayEXT( static_cast( m_physicalDevice ), dpy, static_cast( display ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireXlibDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireXlibDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::acquireXlibDisplayEXT( + Display & dpy, DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAcquireXlibDisplayEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast( display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireXlibDisplayEXT" ); + + return detail::createResultValueType( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRandROutputDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRandROutputDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( + Display * dpy, RROutput rrOutput, DisplayKHR * pDisplay, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetRandROutputDisplayEXT( static_cast( m_physicalDevice ), dpy, rrOutput, reinterpret_cast( pDisplay ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRandROutputDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRandROutputDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getRandROutputDisplayEXT( + Display & dpy, RROutput rrOutput, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRandROutputDisplayEXT && "Function requires " ); +# endif + + DisplayKHR display; + Result result = static_cast( d.vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast( &display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getRandROutputDisplayEXT" ); + + return detail::createResultValueType( result, std::move( display ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkGetRandROutputDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRandROutputDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getRandROutputDisplayEXTUnique( + Display & dpy, RROutput rrOutput, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRandROutputDisplayEXT && "Function requires " ); +# endif + + DisplayKHR display; + Result result = static_cast( d.vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast( &display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getRandROutputDisplayEXTUnique" ); + + return detail::createResultValueType( result, UniqueHandle( display, detail::ObjectRelease( *this, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( + SurfaceKHR surface, SurfaceCapabilities2EXT * pSurfaceCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( static_cast( m_physicalDevice ), + static_cast( surface ), + reinterpret_cast( pSurfaceCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getSurfaceCapabilities2EXT( + SurfaceKHR surface, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT && + "Function requires " ); +# endif + + SurfaceCapabilities2EXT surfaceCapabilities; + Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( + m_physicalDevice, static_cast( surface ), reinterpret_cast( &surfaceCapabilities ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2EXT" ); + + return detail::createResultValueType( result, std::move( surfaceCapabilities ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_display_control === + + // wrapper function for command vkDisplayPowerControlEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDisplayPowerControlEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( + DisplayKHR display, DisplayPowerInfoEXT const * pDisplayPowerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkDisplayPowerControlEXT( + static_cast( m_device ), static_cast( display ), reinterpret_cast( pDisplayPowerInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDisplayPowerControlEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDisplayPowerControlEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::displayPowerControlEXT( + DisplayKHR display, DisplayPowerInfoEXT const & displayPowerInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDisplayPowerControlEXT && "Function requires " ); +# endif + + Result result = static_cast( + d.vkDisplayPowerControlEXT( m_device, static_cast( display ), reinterpret_cast( &displayPowerInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::displayPowerControlEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkRegisterDeviceEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDeviceEventEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::registerEventEXT( + DeviceEventInfoEXT const * pDeviceEventInfo, AllocationCallbacks const * pAllocator, Fence * pFence, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkRegisterDeviceEventEXT( static_cast( m_device ), + reinterpret_cast( pDeviceEventInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkRegisterDeviceEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDeviceEventEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::registerEventEXT( + DeviceEventInfoEXT const & deviceEventInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkRegisterDeviceEventEXT && "Function requires " ); +# endif + + Fence fence; + Result result = static_cast( d.vkRegisterDeviceEventEXT( m_device, + reinterpret_cast( &deviceEventInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::registerEventEXT" ); + + return detail::createResultValueType( result, std::move( fence ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkRegisterDeviceEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDeviceEventEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::registerEventEXTUnique( + DeviceEventInfoEXT const & deviceEventInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkRegisterDeviceEventEXT && "Function requires " ); +# endif + + Fence fence; + Result result = static_cast( d.vkRegisterDeviceEventEXT( m_device, + reinterpret_cast( &deviceEventInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::registerEventEXTUnique" ); + + return detail::createResultValueType( result, UniqueHandle( fence, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkRegisterDisplayEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDisplayEventEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( + DisplayKHR display, DisplayEventInfoEXT const * pDisplayEventInfo, AllocationCallbacks const * pAllocator, Fence * pFence, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkRegisterDisplayEventEXT( static_cast( m_device ), + static_cast( display ), + reinterpret_cast( pDisplayEventInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkRegisterDisplayEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDisplayEventEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::registerDisplayEventEXT( + DisplayKHR display, DisplayEventInfoEXT const & displayEventInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkRegisterDisplayEventEXT && "Function requires " ); +# endif + + Fence fence; + Result result = static_cast( d.vkRegisterDisplayEventEXT( m_device, + static_cast( display ), + reinterpret_cast( &displayEventInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::registerDisplayEventEXT" ); + + return detail::createResultValueType( result, std::move( fence ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkRegisterDisplayEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDisplayEventEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::registerDisplayEventEXTUnique( + DisplayKHR display, DisplayEventInfoEXT const & displayEventInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkRegisterDisplayEventEXT && "Function requires " ); +# endif + + Fence fence; + Result result = static_cast( d.vkRegisterDisplayEventEXT( m_device, + static_cast( display ), + reinterpret_cast( &displayEventInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::registerDisplayEventEXTUnique" ); + + return detail::createResultValueType( result, UniqueHandle( fence, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSwapchainCounterEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainCounterEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( + SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t * pCounterValue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSwapchainCounterEXT( + static_cast( m_device ), static_cast( swapchain ), static_cast( counter ), pCounterValue ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSwapchainCounterEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainCounterEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + ResultValue +# else + typename ResultValueType::type +# endif + Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSwapchainCounterEXT && "Function requires " ); +# endif + + uint64_t counterValue; + Result result = static_cast( + d.vkGetSwapchainCounterEXT( m_device, static_cast( swapchain ), static_cast( counter ), &counterValue ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorOutOfDateKHR } ); +# else + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainCounterEXT" ); +# endif + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + return ResultValue( result, std::move( counterValue ) ); +# else + return detail::createResultValueType( result, std::move( counterValue ) ); +# endif + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_GOOGLE_display_timing === + + // wrapper function for command vkGetRefreshCycleDurationGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRefreshCycleDurationGOOGLE.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( + SwapchainKHR swapchain, RefreshCycleDurationGOOGLE * pDisplayTimingProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetRefreshCycleDurationGOOGLE( static_cast( m_device ), + static_cast( swapchain ), + reinterpret_cast( pDisplayTimingProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRefreshCycleDurationGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRefreshCycleDurationGOOGLE.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getRefreshCycleDurationGOOGLE( + SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRefreshCycleDurationGOOGLE && "Function requires " ); +# endif + + RefreshCycleDurationGOOGLE displayTimingProperties; + Result result = static_cast( d.vkGetRefreshCycleDurationGOOGLE( + m_device, static_cast( swapchain ), reinterpret_cast( &displayTimingProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getRefreshCycleDurationGOOGLE" ); + + return detail::createResultValueType( result, std::move( displayTimingProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPastPresentationTimingGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingGOOGLE.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( + SwapchainKHR swapchain, uint32_t * pPresentationTimingCount, PastPresentationTimingGOOGLE * pPresentationTimings, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPastPresentationTimingGOOGLE( static_cast( m_device ), + static_cast( swapchain ), + pPresentationTimingCount, + reinterpret_cast( pPresentationTimings ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPastPresentationTimingGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingGOOGLE.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + ResultValue> +# else + typename ResultValueType>::type +# endif + Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPastPresentationTimingGOOGLE && "Function requires " ); +# endif + + std::vector presentationTimings; + uint32_t presentationTimingCount; + Result result; + do + { + result = + static_cast( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast( swapchain ), &presentationTimingCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentationTimingCount ) + { + presentationTimings.resize( presentationTimingCount ); + result = static_cast( d.vkGetPastPresentationTimingGOOGLE( m_device, + static_cast( swapchain ), + &presentationTimingCount, + reinterpret_cast( presentationTimings.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPastPresentationTimingGOOGLE", { Result::eSuccess, Result::eIncomplete, Result::eErrorOutOfDateKHR } ); +# else + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPastPresentationTimingGOOGLE" ); +# endif + + VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() ); + if ( presentationTimingCount < presentationTimings.size() ) + { + presentationTimings.resize( presentationTimingCount ); + } + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + return ResultValue>( result, std::move( presentationTimings ) ); +# else + return detail::createResultValueType( result, std::move( presentationTimings ) ); +# endif + } + + // wrapper function for command vkGetPastPresentationTimingGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingGOOGLE.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + ResultValue> +# else + typename ResultValueType>::type +# endif + Device::getPastPresentationTimingGOOGLE( + SwapchainKHR swapchain, PastPresentationTimingGOOGLEAllocator const & pastPresentationTimingGOOGLEAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPastPresentationTimingGOOGLE && "Function requires " ); +# endif + + std::vector presentationTimings( pastPresentationTimingGOOGLEAllocator ); + uint32_t presentationTimingCount; + Result result; + do + { + result = + static_cast( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast( swapchain ), &presentationTimingCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentationTimingCount ) + { + presentationTimings.resize( presentationTimingCount ); + result = static_cast( d.vkGetPastPresentationTimingGOOGLE( m_device, + static_cast( swapchain ), + &presentationTimingCount, + reinterpret_cast( presentationTimings.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPastPresentationTimingGOOGLE", { Result::eSuccess, Result::eIncomplete, Result::eErrorOutOfDateKHR } ); +# else + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPastPresentationTimingGOOGLE" ); +# endif + + VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() ); + if ( presentationTimingCount < presentationTimings.size() ) + { + presentationTimings.resize( presentationTimingCount ); + } + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + return ResultValue>( result, std::move( presentationTimings ) ); +# else + return detail::createResultValueType( result, std::move( presentationTimings ) ); +# endif + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_discard_rectangles === + + // wrapper function for command vkCmdSetDiscardRectangleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( + uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, Rect2D const * pDiscardRectangles, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDiscardRectangleEXT( + static_cast( m_commandBuffer ), firstDiscardRectangle, discardRectangleCount, reinterpret_cast( pDiscardRectangles ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetDiscardRectangleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( + uint32_t firstDiscardRectangle, ArrayProxy const & discardRectangles, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetDiscardRectangleEXT && "Function requires " ); +# endif + + d.vkCmdSetDiscardRectangleEXT( + m_commandBuffer, firstDiscardRectangle, discardRectangles.size(), reinterpret_cast( discardRectangles.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDiscardRectangleEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEnableEXT( Bool32 discardRectangleEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDiscardRectangleEnableEXT( static_cast( m_commandBuffer ), static_cast( discardRectangleEnable ) ); + } + + // wrapper function for command vkCmdSetDiscardRectangleModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleModeEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleModeEXT( DiscardRectangleModeEXT discardRectangleMode, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDiscardRectangleModeEXT( static_cast( m_commandBuffer ), static_cast( discardRectangleMode ) ); + } + + //=== VK_EXT_hdr_metadata === + + // wrapper function for command vkSetHdrMetadataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetHdrMetadataEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( + uint32_t swapchainCount, SwapchainKHR const * pSwapchains, HdrMetadataEXT const * pMetadata, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkSetHdrMetadataEXT( static_cast( m_device ), + swapchainCount, + reinterpret_cast( pSwapchains ), + reinterpret_cast( pMetadata ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetHdrMetadataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetHdrMetadataEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( + ArrayProxy const & swapchains, ArrayProxy const & metadata, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetHdrMetadataEXT && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() ); +# else + if ( swapchains.size() != metadata.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkSetHdrMetadataEXT( m_device, + swapchains.size(), + reinterpret_cast( swapchains.data() ), + reinterpret_cast( metadata.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_create_renderpass2 === + + // wrapper function for command vkCreateRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createRenderPass2KHR( + RenderPassCreateInfo2 const * pCreateInfo, AllocationCallbacks const * pAllocator, RenderPass * pRenderPass, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateRenderPass2KHR( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pRenderPass ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createRenderPass2KHR( + RenderPassCreateInfo2 const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRenderPass2KHR && "Function requires or " ); +# endif + + RenderPass renderPass; + Result result = static_cast( d.vkCreateRenderPass2KHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &renderPass ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2KHR" ); + + return detail::createResultValueType( result, std::move( renderPass ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRenderPass2KHRUnique( + RenderPassCreateInfo2 const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRenderPass2KHR && "Function requires or " ); +# endif + + RenderPass renderPass; + Result result = static_cast( d.vkCreateRenderPass2KHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &renderPass ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2KHRUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( renderPass, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( + RenderPassBeginInfo const * pRenderPassBegin, SubpassBeginInfo const * pSubpassBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginRenderPass2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( pRenderPassBegin ), + reinterpret_cast( pSubpassBeginInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( + RenderPassBeginInfo const & renderPassBegin, SubpassBeginInfo const & subpassBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginRenderPass2KHR && "Function requires or " ); +# endif + + d.vkCmdBeginRenderPass2KHR( + m_commandBuffer, reinterpret_cast( &renderPassBegin ), reinterpret_cast( &subpassBeginInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdNextSubpass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( + SubpassBeginInfo const * pSubpassBeginInfo, SubpassEndInfo const * pSubpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdNextSubpass2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( pSubpassBeginInfo ), + reinterpret_cast( pSubpassEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdNextSubpass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( SubpassBeginInfo const & subpassBeginInfo, SubpassEndInfo const & subpassEndInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdNextSubpass2KHR && "Function requires or " ); +# endif + + d.vkCmdNextSubpass2KHR( + m_commandBuffer, reinterpret_cast( &subpassBeginInfo ), reinterpret_cast( &subpassEndInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( SubpassEndInfo const * pSubpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRenderPass2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pSubpassEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( SubpassEndInfo const & subpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdEndRenderPass2KHR && "Function requires or " ); +# endif + + d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast( &subpassEndInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_shared_presentable_image === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSwapchainStatusKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainStatusKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSwapchainStatusKHR( static_cast( m_device ), static_cast( swapchain ) ) ); + } +#else + // wrapper function for command vkGetSwapchainStatusKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainStatusKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSwapchainStatusKHR && "Function requires " ); +# endif + + Result result = static_cast( d.vkGetSwapchainStatusKHR( m_device, static_cast( swapchain ) ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } ); +# endif + + return static_cast( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_external_fence_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalFencePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( + PhysicalDeviceExternalFenceInfo const * pExternalFenceInfo, ExternalFenceProperties * pExternalFenceProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalFencePropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( pExternalFenceInfo ), + reinterpret_cast( pExternalFenceProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalFencePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalFenceProperties PhysicalDevice::getExternalFencePropertiesKHR( + PhysicalDeviceExternalFenceInfo const & externalFenceInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceExternalFencePropertiesKHR && + "Function requires or " ); +# endif + + ExternalFenceProperties externalFenceProperties; + d.vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, + reinterpret_cast( &externalFenceInfo ), + reinterpret_cast( &externalFenceProperties ) ); + + return externalFenceProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + + // wrapper function for command vkImportFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceWin32HandleKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( ImportFenceWin32HandleInfoKHR const * pImportFenceWin32HandleInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkImportFenceWin32HandleKHR( static_cast( m_device ), + reinterpret_cast( pImportFenceWin32HandleInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkImportFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceWin32HandleKHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::importFenceWin32HandleKHR( + ImportFenceWin32HandleInfoKHR const & importFenceWin32HandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkImportFenceWin32HandleKHR && "Function requires " ); +# endif + + Result result = static_cast( + d.vkImportFenceWin32HandleKHR( m_device, reinterpret_cast( &importFenceWin32HandleInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceWin32HandleKHR" ); + + return detail::createResultValueType( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceWin32HandleKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( + FenceGetWin32HandleInfoKHR const * pGetWin32HandleInfo, HANDLE * pHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetFenceWin32HandleKHR( static_cast( m_device ), reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceWin32HandleKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getFenceWin32HandleKHR( + FenceGetWin32HandleInfoKHR const & getWin32HandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetFenceWin32HandleKHR && "Function requires " ); +# endif + + HANDLE handle; + Result result = + static_cast( d.vkGetFenceWin32HandleKHR( m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceWin32HandleKHR" ); + + return detail::createResultValueType( result, std::move( handle ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + + // wrapper function for command vkImportFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceFdKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importFenceFdKHR( ImportFenceFdInfoKHR const * pImportFenceFdInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkImportFenceFdKHR( static_cast( m_device ), reinterpret_cast( pImportFenceFdInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkImportFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceFdKHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::importFenceFdKHR( + ImportFenceFdInfoKHR const & importFenceFdInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkImportFenceFdKHR && "Function requires " ); +# endif + + Result result = static_cast( d.vkImportFenceFdKHR( m_device, reinterpret_cast( &importFenceFdInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceFdKHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceFdKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFenceFdKHR( FenceGetFdInfoKHR const * pGetFdInfo, int * pFd, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetFenceFdKHR( static_cast( m_device ), reinterpret_cast( pGetFdInfo ), pFd ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceFdKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getFenceFdKHR( FenceGetFdInfoKHR const & getFdInfo, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetFenceFdKHR && "Function requires " ); +# endif + + int fd; + Result result = static_cast( d.vkGetFenceFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceFdKHR" ); + + return detail::createResultValueType( result, std::move( fd ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_performance_query === + + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( + uint32_t queueFamilyIndex, + uint32_t * pCounterCount, + PerformanceCounterKHR * pCounters, + PerformanceCounterDescriptionKHR * pCounterDescriptions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( static_cast( m_physicalDevice ), + queueFamilyIndex, + pCounterCount, + reinterpret_cast( pCounters ), + reinterpret_cast( pCounterDescriptions ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.html + template ::value && + std::is_same::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType, + std::vector>>::type + PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR && + "Function requires " ); +# endif + + std::pair, + std::vector> + data_; + std::vector & counters = data_.first; + std::vector & counterDescriptions = data_.second; + uint32_t counterCount; + Result result; + do + { + result = static_cast( + d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( m_physicalDevice, queueFamilyIndex, &counterCount, nullptr, nullptr ) ); + if ( ( result == Result::eSuccess ) && counterCount ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + m_physicalDevice, + queueFamilyIndex, + &counterCount, + reinterpret_cast( counters.data() ), + reinterpret_cast( counterDescriptions.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" ); + VULKAN_HPP_ASSERT( counterCount <= counters.size() ); + if ( counterCount < counters.size() ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + } + return detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.html + template ::value && + std::is_same::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType, + std::vector>>::type + PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( + uint32_t queueFamilyIndex, + PerformanceCounterKHRAllocator const & performanceCounterKHRAllocator, + PerformanceCounterDescriptionKHRAllocator const & performanceCounterDescriptionKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR && + "Function requires " ); +# endif + + std::pair, + std::vector> + data_( + std::piecewise_construct, std::forward_as_tuple( performanceCounterKHRAllocator ), std::forward_as_tuple( performanceCounterDescriptionKHRAllocator ) ); + std::vector & counters = data_.first; + std::vector & counterDescriptions = data_.second; + uint32_t counterCount; + Result result; + do + { + result = static_cast( + d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( m_physicalDevice, queueFamilyIndex, &counterCount, nullptr, nullptr ) ); + if ( ( result == Result::eSuccess ) && counterCount ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + m_physicalDevice, + queueFamilyIndex, + &counterCount, + reinterpret_cast( counters.data() ), + reinterpret_cast( counterDescriptions.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" ); + VULKAN_HPP_ASSERT( counterCount <= counters.size() ); + if ( counterCount < counters.size() ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + } + return detail::createResultValueType( result, std::move( data_ ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR( + QueryPoolPerformanceCreateInfoKHR const * pPerformanceQueryCreateInfo, uint32_t * pNumPasses, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( pPerformanceQueryCreateInfo ), + pNumPasses ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR( + QueryPoolPerformanceCreateInfoKHR const & performanceQueryCreateInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR && + "Function requires " ); +# endif + + uint32_t numPasses; + d.vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + m_physicalDevice, reinterpret_cast( &performanceQueryCreateInfo ), &numPasses ); + + return numPasses; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkAcquireProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireProfilingLockKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquireProfilingLockKHR( AcquireProfilingLockInfoKHR const * pInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkAcquireProfilingLockKHR( static_cast( m_device ), reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireProfilingLockKHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::acquireProfilingLockKHR( + AcquireProfilingLockInfoKHR const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAcquireProfilingLockKHR && "Function requires " ); +# endif + + Result result = static_cast( d.vkAcquireProfilingLockKHR( m_device, reinterpret_cast( &info ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireProfilingLockKHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkReleaseProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseProfilingLockKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::releaseProfilingLockKHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkReleaseProfilingLockKHR( static_cast( m_device ) ); + } + + //=== VK_KHR_get_surface_capabilities2 === + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( + PhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, SurfaceCapabilities2KHR * pSurfaceCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( pSurfaceInfo ), + reinterpret_cast( pSurfaceCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getSurfaceCapabilities2KHR( + PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR && + "Function requires " ); +# endif + + SurfaceCapabilities2KHR surfaceCapabilities; + Result result = + static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &surfaceCapabilities ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" ); + + return detail::createResultValueType( result, std::move( surfaceCapabilities ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceCapabilities2KHR( + PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR && + "Function requires " ); +# endif + + StructureChain structureChain; + SurfaceCapabilities2KHR & surfaceCapabilities = structureChain.template get(); + Result result = + static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &surfaceCapabilities ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" ); + + return detail::createResultValueType( result, std::move( structureChain ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( + PhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, uint32_t * pSurfaceFormatCount, SurfaceFormat2KHR * pSurfaceFormats, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( pSurfaceInfo ), + pSurfaceFormatCount, + reinterpret_cast( pSurfaceFormats ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceFormats2KHR && + "Function requires " ); +# endif + + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( + m_physicalDevice, reinterpret_cast( &surfaceInfo ), &surfaceFormatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" ); + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + return detail::createResultValueType( result, std::move( surfaceFormats ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceFormats2KHR( + PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, SurfaceFormat2KHRAllocator const & surfaceFormat2KHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceFormats2KHR && + "Function requires " ); +# endif + + std::vector surfaceFormats( surfaceFormat2KHRAllocator ); + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( + m_physicalDevice, reinterpret_cast( &surfaceInfo ), &surfaceFormatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" ); + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + return detail::createResultValueType( result, std::move( surfaceFormats ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceFormats2KHR && + "Function requires " ); +# endif + + std::vector structureChains; + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( + m_physicalDevice, reinterpret_cast( &surfaceInfo ), &surfaceFormatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + structureChains.resize( surfaceFormatCount ); + surfaceFormats.resize( surfaceFormatCount ); + for ( uint32_t i = 0; i < surfaceFormatCount; i++ ) + { + surfaceFormats[i].pNext = structureChains[i].template get().pNext; + } + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" ); + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + structureChains.resize( surfaceFormatCount ); + } + for ( uint32_t i = 0; i < surfaceFormatCount; i++ ) + { + structureChains[i].template get() = surfaceFormats[i]; + } + return detail::createResultValueType( result, std::move( structureChains ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceFormats2KHR( + PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, StructureChainAllocator const & structureChainAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfaceFormats2KHR && + "Function requires " ); +# endif + + std::vector structureChains( structureChainAllocator ); + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( + m_physicalDevice, reinterpret_cast( &surfaceInfo ), &surfaceFormatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + structureChains.resize( surfaceFormatCount ); + surfaceFormats.resize( surfaceFormatCount ); + for ( uint32_t i = 0; i < surfaceFormatCount; i++ ) + { + surfaceFormats[i].pNext = structureChains[i].template get().pNext; + } + result = static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" ); + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + structureChains.resize( surfaceFormatCount ); + } + for ( uint32_t i = 0; i < surfaceFormatCount; i++ ) + { + structureChains[i].template get() = surfaceFormats[i]; + } + return detail::createResultValueType( result, std::move( structureChains ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_get_display_properties2 === + + // wrapper function for command vkGetPhysicalDeviceDisplayProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayProperties2KHR( + uint32_t * pPropertyCount, DisplayProperties2KHR * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( + static_cast( m_physicalDevice ), pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceDisplayProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayProperties2KHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceDisplayProperties2KHR && + "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayProperties2KHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceDisplayProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayProperties2KHR( DisplayProperties2KHRAllocator const & displayProperties2KHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceDisplayProperties2KHR && + "Function requires " ); +# endif + + std::vector properties( displayProperties2KHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayProperties2KHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceDisplayPlaneProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlaneProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneProperties2KHR( + uint32_t * pPropertyCount, DisplayPlaneProperties2KHR * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + static_cast( m_physicalDevice ), pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceDisplayPlaneProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlaneProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlaneProperties2KHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR && + "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneProperties2KHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceDisplayPlaneProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlaneProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlaneProperties2KHR( DisplayPlaneProperties2KHRAllocator const & displayPlaneProperties2KHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR && + "Function requires " ); +# endif + + std::vector properties( displayPlaneProperties2KHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneProperties2KHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModeProperties2KHR( + DisplayKHR display, uint32_t * pPropertyCount, DisplayModeProperties2KHR * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDisplayModeProperties2KHR( static_cast( m_physicalDevice ), + static_cast( display ), + pPropertyCount, + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayModeProperties2KHR( DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDisplayModeProperties2KHR && "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetDisplayModeProperties2KHR( + m_physicalDevice, static_cast( display ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayModeProperties2KHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayModeProperties2KHR( + DisplayKHR display, DisplayModeProperties2KHRAllocator const & displayModeProperties2KHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDisplayModeProperties2KHR && "Function requires " ); +# endif + + std::vector properties( displayModeProperties2KHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetDisplayModeProperties2KHR( + m_physicalDevice, static_cast( display ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayModeProperties2KHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayModeProperties2KHR( DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDisplayModeProperties2KHR && "Function requires " ); +# endif + + std::vector structureChains; + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + structureChains.resize( propertyCount ); + properties.resize( propertyCount ); + for ( uint32_t i = 0; i < propertyCount; i++ ) + { + properties[i].pNext = structureChains[i].template get().pNext; + } + result = static_cast( d.vkGetDisplayModeProperties2KHR( + m_physicalDevice, static_cast( display ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayModeProperties2KHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + structureChains.resize( propertyCount ); + } + for ( uint32_t i = 0; i < propertyCount; i++ ) + { + structureChains[i].template get() = properties[i]; + } + return detail::createResultValueType( result, std::move( structureChains ) ); + } + + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayModeProperties2KHR( DisplayKHR display, StructureChainAllocator const & structureChainAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDisplayModeProperties2KHR && "Function requires " ); +# endif + + std::vector structureChains( structureChainAllocator ); + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast( display ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + structureChains.resize( propertyCount ); + properties.resize( propertyCount ); + for ( uint32_t i = 0; i < propertyCount; i++ ) + { + properties[i].pNext = structureChains[i].template get().pNext; + } + result = static_cast( d.vkGetDisplayModeProperties2KHR( + m_physicalDevice, static_cast( display ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayModeProperties2KHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + structureChains.resize( propertyCount ); + } + for ( uint32_t i = 0; i < propertyCount; i++ ) + { + structureChains[i].template get() = properties[i]; + } + return detail::createResultValueType( result, std::move( structureChains ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDisplayPlaneCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilities2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilities2KHR( + DisplayPlaneInfo2KHR const * pDisplayPlaneInfo, DisplayPlaneCapabilities2KHR * pCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDisplayPlaneCapabilities2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( pDisplayPlaneInfo ), + reinterpret_cast( pCapabilities ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDisplayPlaneCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilities2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getDisplayPlaneCapabilities2KHR( + DisplayPlaneInfo2KHR const & displayPlaneInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDisplayPlaneCapabilities2KHR && "Function requires " ); +# endif + + DisplayPlaneCapabilities2KHR capabilities; + Result result = static_cast( d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, + reinterpret_cast( &displayPlaneInfo ), + reinterpret_cast( &capabilities ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilities2KHR" ); + + return detail::createResultValueType( result, std::move( capabilities ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + // wrapper function for command vkCreateIOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIOSSurfaceMVK.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( + IOSSurfaceCreateInfoMVK const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateIOSSurfaceMVK( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateIOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIOSSurfaceMVK.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createIOSSurfaceMVK( + IOSSurfaceCreateInfoMVK const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIOSSurfaceMVK && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateIOSSurfaceMVK( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createIOSSurfaceMVK" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateIOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIOSSurfaceMVK.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createIOSSurfaceMVKUnique( + IOSSurfaceCreateInfoMVK const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIOSSurfaceMVK && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateIOSSurfaceMVK( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createIOSSurfaceMVKUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + // wrapper function for command vkCreateMacOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMacOSSurfaceMVK.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( + MacOSSurfaceCreateInfoMVK const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateMacOSSurfaceMVK( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateMacOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMacOSSurfaceMVK.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createMacOSSurfaceMVK( + MacOSSurfaceCreateInfoMVK const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateMacOSSurfaceMVK && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateMacOSSurfaceMVK( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMacOSSurfaceMVK" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateMacOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMacOSSurfaceMVK.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createMacOSSurfaceMVKUnique( + MacOSSurfaceCreateInfoMVK const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateMacOSSurfaceMVK && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateMacOSSurfaceMVK( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMacOSSurfaceMVKUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + // wrapper function for command vkSetDebugUtilsObjectNameEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectNameEXT( DebugUtilsObjectNameInfoEXT const * pNameInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkSetDebugUtilsObjectNameEXT( static_cast( m_device ), reinterpret_cast( pNameInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetDebugUtilsObjectNameEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setDebugUtilsObjectNameEXT( + DebugUtilsObjectNameInfoEXT const & nameInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetDebugUtilsObjectNameEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkSetDebugUtilsObjectNameEXT( m_device, reinterpret_cast( &nameInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectNameEXT" ); + + return detail::createResultValueType( result ); + } + // wrapper function for command vkSetDebugUtilsObjectNameEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setDebugUtilsObjectNameEXT( + HandleType const & handle, std::string const & name, Dispatch const & d ) const + { + VULKAN_HPP_STATIC_ASSERT( VULKAN_HPP_NAMESPACE::isVulkanHandleType::value, "HandleType must be a Vulkan handle type" ); + // It might be, that neither constructors, nor setters, nor designated initializers are available... need to explicitly set member by member + VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT nameInfo; + nameInfo.objectType = handle.objectType; +# if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + nameInfo.objectHandle = reinterpret_cast( static_cast( handle ) ); +# else + nameInfo.objectHandle = static_cast( handle ); +# endif + nameInfo.pObjectName = name.c_str(); + return setDebugUtilsObjectNameEXT( nameInfo, d ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSetDebugUtilsObjectTagEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectTagEXT( DebugUtilsObjectTagInfoEXT const * pTagInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkSetDebugUtilsObjectTagEXT( static_cast( m_device ), reinterpret_cast( pTagInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetDebugUtilsObjectTagEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setDebugUtilsObjectTagEXT( + DebugUtilsObjectTagInfoEXT const & tagInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetDebugUtilsObjectTagEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast( &tagInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectTagEXT" ); + + return detail::createResultValueType( result ); + } + // wrapper function for command vkSetDebugUtilsObjectTagEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setDebugUtilsObjectTagEXT( + HandleType const & handle, uint64_t name, TagType const & tag, Dispatch const & d ) const + { + VULKAN_HPP_STATIC_ASSERT( VULKAN_HPP_NAMESPACE::isVulkanHandleType::value, "HandleType must be a Vulkan handle type" ); + // It might be, that neither constructors, nor setters, nor designated initializers are available... need to explicitly set member by member + VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT tagInfo; + tagInfo.objectType = handle.objectType; +# if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + tagInfo.objectHandle = reinterpret_cast( static_cast( handle ) ); +# else + tagInfo.objectHandle = static_cast( handle ); +# endif + tagInfo.tagName = name; + tagInfo.tagSize = sizeof( TagType ); + tagInfo.pTag = &tag; + return setDebugUtilsObjectTagEXT( tagInfo, d ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkQueueBeginDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBeginDebugUtilsLabelEXT.html + template ::type> + VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const * pLabelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkQueueBeginDebugUtilsLabelEXT( static_cast( m_queue ), reinterpret_cast( pLabelInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueBeginDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBeginDebugUtilsLabelEXT.html + template ::type> + VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkQueueBeginDebugUtilsLabelEXT && "Function requires " ); +# endif + + d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast( &labelInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkQueueEndDebugUtilsLabelEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueEndDebugUtilsLabelEXT.html + template ::type> + VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkQueueEndDebugUtilsLabelEXT( static_cast( m_queue ) ); + } + + // wrapper function for command vkQueueInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueInsertDebugUtilsLabelEXT.html + template ::type> + VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const * pLabelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkQueueInsertDebugUtilsLabelEXT( static_cast( m_queue ), reinterpret_cast( pLabelInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueInsertDebugUtilsLabelEXT.html + template ::type> + VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkQueueInsertDebugUtilsLabelEXT && "Function requires " ); +# endif + + d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast( &labelInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginDebugUtilsLabelEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginDebugUtilsLabelEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const * pLabelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginDebugUtilsLabelEXT( static_cast( m_commandBuffer ), reinterpret_cast( pLabelInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginDebugUtilsLabelEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginDebugUtilsLabelEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginDebugUtilsLabelEXT && "Function requires " ); +# endif + + d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( &labelInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndDebugUtilsLabelEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndDebugUtilsLabelEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndDebugUtilsLabelEXT( static_cast( m_commandBuffer ) ); + } + + // wrapper function for command vkCmdInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInsertDebugUtilsLabelEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const * pLabelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdInsertDebugUtilsLabelEXT( static_cast( m_commandBuffer ), reinterpret_cast( pLabelInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInsertDebugUtilsLabelEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdInsertDebugUtilsLabelEXT && "Function requires " ); +# endif + + d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( &labelInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugUtilsMessengerEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createDebugUtilsMessengerEXT( + DebugUtilsMessengerCreateInfoEXT const * pCreateInfo, AllocationCallbacks const * pAllocator, DebugUtilsMessengerEXT * pMessenger, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDebugUtilsMessengerEXT( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pMessenger ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugUtilsMessengerEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createDebugUtilsMessengerEXT( + DebugUtilsMessengerCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDebugUtilsMessengerEXT && "Function requires " ); +# endif + + DebugUtilsMessengerEXT messenger; + Result result = static_cast( d.vkCreateDebugUtilsMessengerEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &messenger ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugUtilsMessengerEXT" ); + + return detail::createResultValueType( result, std::move( messenger ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugUtilsMessengerEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::createDebugUtilsMessengerEXTUnique( + DebugUtilsMessengerCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDebugUtilsMessengerEXT && "Function requires " ); +# endif + + DebugUtilsMessengerEXT messenger; + Result result = static_cast( d.vkCreateDebugUtilsMessengerEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &messenger ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugUtilsMessengerEXTUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( messenger, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugUtilsMessengerEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugUtilsMessengerEXT( static_cast( m_instance ), + static_cast( messenger ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugUtilsMessengerEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroyDebugUtilsMessengerEXT( + DebugUtilsMessengerEXT messenger, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDebugUtilsMessengerEXT && "Function requires " ); +# endif + + d.vkDestroyDebugUtilsMessengerEXT( + m_instance, static_cast( messenger ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugUtilsMessengerEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroy( DebugUtilsMessengerEXT messenger, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDebugUtilsMessengerEXT( static_cast( m_instance ), + static_cast( messenger ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugUtilsMessengerEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::destroy( DebugUtilsMessengerEXT messenger, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDebugUtilsMessengerEXT && "Function requires " ); +# endif + + d.vkDestroyDebugUtilsMessengerEXT( + m_instance, static_cast( messenger ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSubmitDebugUtilsMessageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSubmitDebugUtilsMessageEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + DebugUtilsMessageTypeFlagsEXT messageTypes, + DebugUtilsMessengerCallbackDataEXT const * pCallbackData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkSubmitDebugUtilsMessageEXT( static_cast( m_instance ), + static_cast( messageSeverity ), + static_cast( messageTypes ), + reinterpret_cast( pCallbackData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSubmitDebugUtilsMessageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSubmitDebugUtilsMessageEXT.html + template ::type> + VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + DebugUtilsMessageTypeFlagsEXT messageTypes, + DebugUtilsMessengerCallbackDataEXT const & callbackData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSubmitDebugUtilsMessageEXT && "Function requires " ); +# endif + + d.vkSubmitDebugUtilsMessageEXT( m_instance, + static_cast( messageSeverity ), + static_cast( messageTypes ), + reinterpret_cast( &callbackData ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + + // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getAndroidHardwareBufferPropertiesANDROID( + struct AHardwareBuffer const * buffer, AndroidHardwareBufferPropertiesANDROID * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetAndroidHardwareBufferPropertiesANDROID( + static_cast( m_device ), buffer, reinterpret_cast( pProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getAndroidHardwareBufferPropertiesANDROID( struct AHardwareBuffer const & buffer, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetAndroidHardwareBufferPropertiesANDROID && + "Function requires " ); +# endif + + AndroidHardwareBufferPropertiesANDROID properties; + Result result = static_cast( + d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, &buffer, reinterpret_cast( &properties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" ); + + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getAndroidHardwareBufferPropertiesANDROID( + struct AHardwareBuffer const & buffer, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetAndroidHardwareBufferPropertiesANDROID && + "Function requires " ); +# endif + + StructureChain structureChain; + AndroidHardwareBufferPropertiesANDROID & properties = structureChain.template get(); + Result result = static_cast( + d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, &buffer, reinterpret_cast( &properties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" ); + + return detail::createResultValueType( result, std::move( structureChain ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryAndroidHardwareBufferANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryAndroidHardwareBufferANDROID.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryAndroidHardwareBufferANDROID( + MemoryGetAndroidHardwareBufferInfoANDROID const * pInfo, struct AHardwareBuffer ** pBuffer, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryAndroidHardwareBufferANDROID( + static_cast( m_device ), reinterpret_cast( pInfo ), pBuffer ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryAndroidHardwareBufferANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryAndroidHardwareBufferANDROID.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryAndroidHardwareBufferANDROID( + MemoryGetAndroidHardwareBufferInfoANDROID const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryAndroidHardwareBufferANDROID && + "Function requires " ); +# endif + + struct AHardwareBuffer * buffer; + Result result = static_cast( + d.vkGetMemoryAndroidHardwareBufferANDROID( m_device, reinterpret_cast( &info ), &buffer ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryAndroidHardwareBufferANDROID" ); + + return detail::createResultValueType( result, std::move( buffer ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createExecutionGraphPipelinesAMDX( PipelineCache pipelineCache, + uint32_t createInfoCount, + ExecutionGraphPipelineCreateInfoAMDX const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateExecutionGraphPipelinesAMDX( static_cast( m_device ), + static_cast( pipelineCache ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelines ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createExecutionGraphPipelinesAMDX( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateExecutionGraphPipelinesAMDX && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = + static_cast( d.vkCreateExecutionGraphPipelinesAMDX( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createExecutionGraphPipelinesAMDX", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createExecutionGraphPipelinesAMDX( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateExecutionGraphPipelinesAMDX && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size(), {}, pipelineAllocator ); + Result result = + static_cast( d.vkCreateExecutionGraphPipelinesAMDX( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createExecutionGraphPipelinesAMDX", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createExecutionGraphPipelineAMDX( + PipelineCache pipelineCache, ExecutionGraphPipelineCreateInfoAMDX const & createInfo, Optional allocator, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateExecutionGraphPipelinesAMDX && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateExecutionGraphPipelinesAMDX( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::createExecutionGraphPipelineAMDX", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + + return { result, pipeline }; + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createExecutionGraphPipelinesAMDXUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateExecutionGraphPipelinesAMDX && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = + static_cast( d.vkCreateExecutionGraphPipelinesAMDX( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createExecutionGraphPipelinesAMDXUnique", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines; + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createExecutionGraphPipelinesAMDXUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateExecutionGraphPipelinesAMDX && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = + static_cast( d.vkCreateExecutionGraphPipelinesAMDX( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createExecutionGraphPipelinesAMDXUnique", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createExecutionGraphPipelineAMDXUnique( + PipelineCache pipelineCache, ExecutionGraphPipelineCreateInfoAMDX const & createInfo, Optional allocator, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateExecutionGraphPipelinesAMDX && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateExecutionGraphPipelinesAMDX( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::createExecutionGraphPipelineAMDXUnique", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + + return ResultValue>( + result, UniqueHandle( pipeline, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetExecutionGraphPipelineScratchSizeAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineScratchSizeAMDX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getExecutionGraphPipelineScratchSizeAMDX( + Pipeline executionGraph, ExecutionGraphPipelineScratchSizeAMDX * pSizeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetExecutionGraphPipelineScratchSizeAMDX( static_cast( m_device ), + static_cast( executionGraph ), + reinterpret_cast( pSizeInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetExecutionGraphPipelineScratchSizeAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineScratchSizeAMDX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getExecutionGraphPipelineScratchSizeAMDX( + Pipeline executionGraph, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetExecutionGraphPipelineScratchSizeAMDX && + "Function requires " ); +# endif + + ExecutionGraphPipelineScratchSizeAMDX sizeInfo; + Result result = static_cast( d.vkGetExecutionGraphPipelineScratchSizeAMDX( + m_device, static_cast( executionGraph ), reinterpret_cast( &sizeInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getExecutionGraphPipelineScratchSizeAMDX" ); + + return detail::createResultValueType( result, std::move( sizeInfo ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetExecutionGraphPipelineNodeIndexAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineNodeIndexAMDX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getExecutionGraphPipelineNodeIndexAMDX( + Pipeline executionGraph, PipelineShaderStageNodeCreateInfoAMDX const * pNodeInfo, uint32_t * pNodeIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetExecutionGraphPipelineNodeIndexAMDX( static_cast( m_device ), + static_cast( executionGraph ), + reinterpret_cast( pNodeInfo ), + pNodeIndex ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetExecutionGraphPipelineNodeIndexAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineNodeIndexAMDX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getExecutionGraphPipelineNodeIndexAMDX( + Pipeline executionGraph, PipelineShaderStageNodeCreateInfoAMDX const & nodeInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetExecutionGraphPipelineNodeIndexAMDX && "Function requires " ); +# endif + + uint32_t nodeIndex; + Result result = static_cast( d.vkGetExecutionGraphPipelineNodeIndexAMDX( + m_device, static_cast( executionGraph ), reinterpret_cast( &nodeInfo ), &nodeIndex ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getExecutionGraphPipelineNodeIndexAMDX" ); + + return detail::createResultValueType( result, std::move( nodeIndex ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdInitializeGraphScratchMemoryAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInitializeGraphScratchMemoryAMDX.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::initializeGraphScratchMemoryAMDX( + Pipeline executionGraph, DeviceAddress scratch, DeviceSize scratchSize, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdInitializeGraphScratchMemoryAMDX( static_cast( m_commandBuffer ), + static_cast( executionGraph ), + static_cast( scratch ), + static_cast( scratchSize ) ); + } + + // wrapper function for command vkCmdDispatchGraphAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphAMDX.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchGraphAMDX( + DeviceAddress scratch, DeviceSize scratchSize, DispatchGraphCountInfoAMDX const * pCountInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchGraphAMDX( static_cast( m_commandBuffer ), + static_cast( scratch ), + static_cast( scratchSize ), + reinterpret_cast( pCountInfo ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDispatchGraphAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphAMDX.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchGraphAMDX( + DeviceAddress scratch, DeviceSize scratchSize, DispatchGraphCountInfoAMDX const & countInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDispatchGraphAMDX && "Function requires " ); +# endif + + d.vkCmdDispatchGraphAMDX( m_commandBuffer, + static_cast( scratch ), + static_cast( scratchSize ), + reinterpret_cast( &countInfo ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDispatchGraphIndirectAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectAMDX.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchGraphIndirectAMDX( + DeviceAddress scratch, DeviceSize scratchSize, DispatchGraphCountInfoAMDX const * pCountInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchGraphIndirectAMDX( static_cast( m_commandBuffer ), + static_cast( scratch ), + static_cast( scratchSize ), + reinterpret_cast( pCountInfo ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDispatchGraphIndirectAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectAMDX.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchGraphIndirectAMDX( + DeviceAddress scratch, DeviceSize scratchSize, DispatchGraphCountInfoAMDX const & countInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDispatchGraphIndirectAMDX && "Function requires " ); +# endif + + d.vkCmdDispatchGraphIndirectAMDX( m_commandBuffer, + static_cast( scratch ), + static_cast( scratchSize ), + reinterpret_cast( &countInfo ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDispatchGraphIndirectCountAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectCountAMDX.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchGraphIndirectCountAMDX( + DeviceAddress scratch, DeviceSize scratchSize, DeviceAddress countInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchGraphIndirectCountAMDX( static_cast( m_commandBuffer ), + static_cast( scratch ), + static_cast( scratchSize ), + static_cast( countInfo ) ); + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + + // wrapper function for command vkWriteSamplerDescriptorsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteSamplerDescriptorsEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::writeSamplerDescriptorsEXT( + uint32_t samplerCount, SamplerCreateInfo const * pSamplers, HostAddressRangeEXT const * pDescriptors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkWriteSamplerDescriptorsEXT( static_cast( m_device ), + samplerCount, + reinterpret_cast( pSamplers ), + reinterpret_cast( pDescriptors ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWriteSamplerDescriptorsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteSamplerDescriptorsEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::writeSamplerDescriptorsEXT( + ArrayProxy const & samplers, ArrayProxy const & descriptors, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWriteSamplerDescriptorsEXT && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( samplers.size() == descriptors.size() ); +# else + if ( samplers.size() != descriptors.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::writeSamplerDescriptorsEXT: samplers.size() != descriptors.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + Result result = static_cast( d.vkWriteSamplerDescriptorsEXT( m_device, + samplers.size(), + reinterpret_cast( samplers.data() ), + reinterpret_cast( descriptors.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeSamplerDescriptorsEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkWriteResourceDescriptorsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteResourceDescriptorsEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::writeResourceDescriptorsEXT( + uint32_t resourceCount, ResourceDescriptorInfoEXT const * pResources, HostAddressRangeEXT const * pDescriptors, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkWriteResourceDescriptorsEXT( static_cast( m_device ), + resourceCount, + reinterpret_cast( pResources ), + reinterpret_cast( pDescriptors ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWriteResourceDescriptorsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteResourceDescriptorsEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::writeResourceDescriptorsEXT( + ArrayProxy const & resources, ArrayProxy const & descriptors, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWriteResourceDescriptorsEXT && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( resources.size() == descriptors.size() ); +# else + if ( resources.size() != descriptors.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::writeResourceDescriptorsEXT: resources.size() != descriptors.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + Result result = static_cast( d.vkWriteResourceDescriptorsEXT( m_device, + resources.size(), + reinterpret_cast( resources.data() ), + reinterpret_cast( descriptors.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeResourceDescriptorsEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindSamplerHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindSamplerHeapEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindSamplerHeapEXT( BindHeapInfoEXT const * pBindInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindSamplerHeapEXT( static_cast( m_commandBuffer ), reinterpret_cast( pBindInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindSamplerHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindSamplerHeapEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindSamplerHeapEXT( BindHeapInfoEXT const & bindInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindSamplerHeapEXT && "Function requires " ); +# endif + + d.vkCmdBindSamplerHeapEXT( m_commandBuffer, reinterpret_cast( &bindInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindResourceHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindResourceHeapEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindResourceHeapEXT( BindHeapInfoEXT const * pBindInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindResourceHeapEXT( static_cast( m_commandBuffer ), reinterpret_cast( pBindInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindResourceHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindResourceHeapEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindResourceHeapEXT( BindHeapInfoEXT const & bindInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindResourceHeapEXT && "Function requires " ); +# endif + + d.vkCmdBindResourceHeapEXT( m_commandBuffer, reinterpret_cast( &bindInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDataEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDataEXT( PushDataInfoEXT const * pPushDataInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDataEXT( static_cast( m_commandBuffer ), reinterpret_cast( pPushDataInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDataEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDataEXT( PushDataInfoEXT const & pushDataInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPushDataEXT && "Function requires " ); +# endif + + d.vkCmdPushDataEXT( m_commandBuffer, reinterpret_cast( &pushDataInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageOpaqueCaptureDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getImageOpaqueCaptureDataEXT( + uint32_t imageCount, Image const * pImages, HostAddressRangeEXT * pDatas, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetImageOpaqueCaptureDataEXT( + static_cast( m_device ), imageCount, reinterpret_cast( pImages ), reinterpret_cast( pDatas ) ) ); + } + + // wrapper function for command vkGetPhysicalDeviceDescriptorSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDescriptorSizeEXT.html + template ::type> + VULKAN_HPP_INLINE DeviceSize PhysicalDevice::getDescriptorSizeEXT( DescriptorType descriptorType, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceDescriptorSizeEXT( static_cast( m_physicalDevice ), static_cast( descriptorType ) ) ); + } + + // wrapper function for command vkRegisterCustomBorderColorEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterCustomBorderColorEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::registerCustomBorderColorEXT( + SamplerCustomBorderColorCreateInfoEXT const * pBorderColor, Bool32 requestIndex, uint32_t * pIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkRegisterCustomBorderColorEXT( static_cast( m_device ), + reinterpret_cast( pBorderColor ), + static_cast( requestIndex ), + pIndex ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkRegisterCustomBorderColorEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterCustomBorderColorEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::registerCustomBorderColorEXT( + SamplerCustomBorderColorCreateInfoEXT const & borderColor, Bool32 requestIndex, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkRegisterCustomBorderColorEXT && "Function requires " ); +# endif + + uint32_t index; + Result result = static_cast( d.vkRegisterCustomBorderColorEXT( + m_device, reinterpret_cast( &borderColor ), static_cast( requestIndex ), &index ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::registerCustomBorderColorEXT" ); + + return detail::createResultValueType( result, std::move( index ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUnregisterCustomBorderColorEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnregisterCustomBorderColorEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::unregisterCustomBorderColorEXT( uint32_t index, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUnregisterCustomBorderColorEXT( static_cast( m_device ), index ); + } + + // wrapper function for command vkGetTensorOpaqueCaptureDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDataARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getTensorOpaqueCaptureDataARM( + uint32_t tensorCount, TensorARM const * pTensors, HostAddressRangeEXT * pDatas, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetTensorOpaqueCaptureDataARM( static_cast( m_device ), + tensorCount, + reinterpret_cast( pTensors ), + reinterpret_cast( pDatas ) ) ); + } + + //=== VK_EXT_sample_locations === + + // wrapper function for command vkCmdSetSampleLocationsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( SampleLocationsInfoEXT const * pSampleLocationsInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetSampleLocationsEXT( static_cast( m_commandBuffer ), reinterpret_cast( pSampleLocationsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetSampleLocationsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( SampleLocationsInfoEXT const & sampleLocationsInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetSampleLocationsEXT && "Function requires " ); +# endif + + d.vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast( &sampleLocationsInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceMultisamplePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( + SampleCountFlagBits samples, MultisamplePropertiesEXT * pMultisampleProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceMultisamplePropertiesEXT( static_cast( m_physicalDevice ), + static_cast( samples ), + reinterpret_cast( pMultisampleProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceMultisamplePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceMultisamplePropertiesEXT && + "Function requires " ); +# endif + + MultisamplePropertiesEXT multisampleProperties; + d.vkGetPhysicalDeviceMultisamplePropertiesEXT( + m_physicalDevice, static_cast( samples ), reinterpret_cast( &multisampleProperties ) ); + + return multisampleProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_get_memory_requirements2 === + + // wrapper function for command vkGetImageMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( + ImageMemoryRequirementsInfo2 const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageMemoryRequirements2KHR( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getImageMemoryRequirements2KHR( ImageMemoryRequirementsInfo2 const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageMemoryRequirements2KHR && + "Function requires or " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetImageMemoryRequirements2KHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetImageMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirements2KHR( ImageMemoryRequirementsInfo2 const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageMemoryRequirements2KHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetImageMemoryRequirements2KHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( + BufferMemoryRequirementsInfo2 const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetBufferMemoryRequirements2KHR( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getBufferMemoryRequirements2KHR( BufferMemoryRequirementsInfo2 const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferMemoryRequirements2KHR && + "Function requires or " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetBufferMemoryRequirements2KHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetBufferMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirements2KHR( BufferMemoryRequirementsInfo2 const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferMemoryRequirements2KHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetBufferMemoryRequirements2KHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSparseMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2KHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( ImageSparseMemoryRequirementsInfo2 const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSparseMemoryRequirements2KHR( static_cast( m_device ), + reinterpret_cast( pInfo ), + pSparseMemoryRequirementCount, + reinterpret_cast( pSparseMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSparseMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2KHR.html + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2KHR( ImageSparseMemoryRequirementsInfo2 const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageSparseMemoryRequirements2KHR && + "Function requires or " ); +# endif + + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements2KHR( + m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements2KHR( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } + + // wrapper function for command vkGetImageSparseMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2KHR.html + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2KHR( ImageSparseMemoryRequirementsInfo2 const & info, + SparseImageMemoryRequirements2Allocator const & sparseImageMemoryRequirements2Allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageSparseMemoryRequirements2KHR && + "Function requires or " ); +# endif + + std::vector sparseMemoryRequirements( sparseImageMemoryRequirements2Allocator ); + uint32_t sparseMemoryRequirementCount; + d.vkGetImageSparseMemoryRequirements2KHR( + m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetImageSparseMemoryRequirements2KHR( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_acceleration_structure === + + // wrapper function for command vkCreateAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createAccelerationStructureKHR( AccelerationStructureCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + AccelerationStructureKHR * pAccelerationStructure, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateAccelerationStructureKHR( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pAccelerationStructure ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createAccelerationStructureKHR( + AccelerationStructureCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateAccelerationStructureKHR && "Function requires " ); +# endif + + AccelerationStructureKHR accelerationStructure; + Result result = static_cast( d.vkCreateAccelerationStructureKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &accelerationStructure ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureKHR" ); + + return detail::createResultValueType( result, std::move( accelerationStructure ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createAccelerationStructureKHRUnique( + AccelerationStructureCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateAccelerationStructureKHR && "Function requires " ); +# endif + + AccelerationStructureKHR accelerationStructure; + Result result = static_cast( d.vkCreateAccelerationStructureKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &accelerationStructure ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureKHRUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( accelerationStructure, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyAccelerationStructureKHR( + AccelerationStructureKHR accelerationStructure, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureKHR( static_cast( m_device ), + static_cast( accelerationStructure ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyAccelerationStructureKHR( + AccelerationStructureKHR accelerationStructure, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyAccelerationStructureKHR && "Function requires " ); +# endif + + d.vkDestroyAccelerationStructureKHR( + m_device, static_cast( accelerationStructure ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( AccelerationStructureKHR accelerationStructure, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureKHR( static_cast( m_device ), + static_cast( accelerationStructure ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( AccelerationStructureKHR accelerationStructure, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyAccelerationStructureKHR && "Function requires " ); +# endif + + d.vkDestroyAccelerationStructureKHR( + m_device, static_cast( accelerationStructure ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresKHR( uint32_t infoCount, + AccelerationStructureBuildGeometryInfoKHR const * pInfos, + AccelerationStructureBuildRangeInfoKHR const * const * ppBuildRangeInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBuildAccelerationStructuresKHR( static_cast( m_commandBuffer ), + infoCount, + reinterpret_cast( pInfos ), + reinterpret_cast( ppBuildRangeInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresKHR( + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBuildAccelerationStructuresKHR && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() ); +# else + if ( infos.size() != pBuildRangeInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBuildAccelerationStructuresKHR( m_commandBuffer, + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( pBuildRangeInfos.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBuildAccelerationStructuresIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresIndirectKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR( uint32_t infoCount, + AccelerationStructureBuildGeometryInfoKHR const * pInfos, + DeviceAddress const * pIndirectDeviceAddresses, + uint32_t const * pIndirectStrides, + uint32_t const * const * ppMaxPrimitiveCounts, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBuildAccelerationStructuresIndirectKHR( static_cast( m_commandBuffer ), + infoCount, + reinterpret_cast( pInfos ), + reinterpret_cast( pIndirectDeviceAddresses ), + pIndirectStrides, + ppMaxPrimitiveCounts ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildAccelerationStructuresIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresIndirectKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR( ArrayProxy const & infos, + ArrayProxy const & indirectDeviceAddresses, + ArrayProxy const & indirectStrides, + ArrayProxy const & pMaxPrimitiveCounts, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBuildAccelerationStructuresIndirectKHR && + "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == indirectDeviceAddresses.size() ); + VULKAN_HPP_ASSERT( infos.size() == indirectStrides.size() ); + VULKAN_HPP_ASSERT( infos.size() == pMaxPrimitiveCounts.size() ); +# else + if ( infos.size() != indirectDeviceAddresses.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectDeviceAddresses.size()" ); + } + if ( infos.size() != indirectStrides.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectStrides.size()" ); + } + if ( infos.size() != pMaxPrimitiveCounts.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != pMaxPrimitiveCounts.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBuildAccelerationStructuresIndirectKHR( m_commandBuffer, + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( indirectDeviceAddresses.data() ), + indirectStrides.data(), + pMaxPrimitiveCounts.data() ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildAccelerationStructuresKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::buildAccelerationStructuresKHR( + DeferredOperationKHR deferredOperation, + uint32_t infoCount, + AccelerationStructureBuildGeometryInfoKHR const * pInfos, + AccelerationStructureBuildRangeInfoKHR const * const * ppBuildRangeInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkBuildAccelerationStructuresKHR( static_cast( m_device ), + static_cast( deferredOperation ), + infoCount, + reinterpret_cast( pInfos ), + reinterpret_cast( ppBuildRangeInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildAccelerationStructuresKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::buildAccelerationStructuresKHR( + DeferredOperationKHR deferredOperation, + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBuildAccelerationStructuresKHR && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() ); +# else + if ( infos.size() != pBuildRangeInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + Result result = static_cast( + d.vkBuildAccelerationStructuresKHR( m_device, + static_cast( deferredOperation ), + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( pBuildRangeInfos.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureKHR( + DeferredOperationKHR deferredOperation, CopyAccelerationStructureInfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCopyAccelerationStructureKHR( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureKHR( + DeferredOperationKHR deferredOperation, CopyAccelerationStructureInfoKHR const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyAccelerationStructureKHR && "Function requires " ); +# endif + + Result result = static_cast( d.vkCopyAccelerationStructureKHR( + m_device, static_cast( deferredOperation ), reinterpret_cast( &info ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureToMemoryKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureToMemoryKHR( + DeferredOperationKHR deferredOperation, CopyAccelerationStructureToMemoryInfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCopyAccelerationStructureToMemoryKHR( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureToMemoryKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureToMemoryKHR( + DeferredOperationKHR deferredOperation, CopyAccelerationStructureToMemoryInfoKHR const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyAccelerationStructureToMemoryKHR && + "Function requires " ); +# endif + + Result result = static_cast( d.vkCopyAccelerationStructureToMemoryKHR( + m_device, static_cast( deferredOperation ), reinterpret_cast( &info ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureToMemoryKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToAccelerationStructureKHR( + DeferredOperationKHR deferredOperation, CopyMemoryToAccelerationStructureInfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCopyMemoryToAccelerationStructureKHR( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToAccelerationStructureKHR( + DeferredOperationKHR deferredOperation, CopyMemoryToAccelerationStructureInfoKHR const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyMemoryToAccelerationStructureKHR && + "Function requires " ); +# endif + + Result result = static_cast( d.vkCopyMemoryToAccelerationStructureKHR( + m_device, static_cast( deferredOperation ), reinterpret_cast( &info ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToAccelerationStructureKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::writeAccelerationStructuresPropertiesKHR( uint32_t accelerationStructureCount, + AccelerationStructureKHR const * pAccelerationStructures, + QueryType queryType, + size_t dataSize, + void * pData, + size_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( static_cast( m_device ), + accelerationStructureCount, + reinterpret_cast( pAccelerationStructures ), + static_cast( queryType ), + dataSize, + pData, + stride ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::writeAccelerationStructuresPropertiesKHR( + ArrayProxy const & accelerationStructures, QueryType queryType, size_t dataSize, size_t stride, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWriteAccelerationStructuresPropertiesKHR && + "Function requires " ); +# endif + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = + static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( m_device, + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ), + stride ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertiesKHR" ); + + return detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::writeAccelerationStructuresPropertyKHR( + ArrayProxy const & accelerationStructures, QueryType queryType, size_t stride, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWriteAccelerationStructuresPropertiesKHR && + "Function requires " ); +# endif + + DataType data; + Result result = + static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( m_device, + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + sizeof( DataType ), + reinterpret_cast( &data ), + stride ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertyKHR" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureKHR( CopyAccelerationStructureInfoKHR const * pInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyAccelerationStructureKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureKHR( CopyAccelerationStructureInfoKHR const & info, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyAccelerationStructureKHR && "Function requires " ); +# endif + + d.vkCmdCopyAccelerationStructureKHR( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureToMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureToMemoryKHR( CopyAccelerationStructureToMemoryInfoKHR const * pInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyAccelerationStructureToMemoryKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureToMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureToMemoryKHR( CopyAccelerationStructureToMemoryInfoKHR const & info, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyAccelerationStructureToMemoryKHR && + "Function requires " ); +# endif + + d.vkCmdCopyAccelerationStructureToMemoryKHR( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToAccelerationStructureKHR( CopyMemoryToAccelerationStructureInfoKHR const * pInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMemoryToAccelerationStructureKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToAccelerationStructureKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToAccelerationStructureKHR( CopyMemoryToAccelerationStructureInfoKHR const & info, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyMemoryToAccelerationStructureKHR && + "Function requires " ); +# endif + + d.vkCmdCopyMemoryToAccelerationStructureKHR( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetAccelerationStructureDeviceAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureDeviceAddressKHR.html + template ::type> + VULKAN_HPP_INLINE DeviceAddress Device::getAccelerationStructureAddressKHR( AccelerationStructureDeviceAddressInfoKHR const * pInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetAccelerationStructureDeviceAddressKHR( + static_cast( m_device ), reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAccelerationStructureDeviceAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureDeviceAddressKHR.html + template ::type> + VULKAN_HPP_INLINE DeviceAddress Device::getAccelerationStructureAddressKHR( AccelerationStructureDeviceAddressInfoKHR const & info, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetAccelerationStructureDeviceAddressKHR && + "Function requires " ); +# endif + + VkDeviceAddress result = + d.vkGetAccelerationStructureDeviceAddressKHR( m_device, reinterpret_cast( &info ) ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesKHR( uint32_t accelerationStructureCount, + AccelerationStructureKHR const * pAccelerationStructures, + QueryType queryType, + QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteAccelerationStructuresPropertiesKHR( static_cast( m_commandBuffer ), + accelerationStructureCount, + reinterpret_cast( pAccelerationStructures ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, + QueryType queryType, + QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdWriteAccelerationStructuresPropertiesKHR && + "Function requires " ); +# endif + + d.vkCmdWriteAccelerationStructuresPropertiesKHR( m_commandBuffer, + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceAccelerationStructureCompatibilityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceAccelerationStructureCompatibilityKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getAccelerationStructureCompatibilityKHR( + AccelerationStructureVersionInfoKHR const * pVersionInfo, AccelerationStructureCompatibilityKHR * pCompatibility, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceAccelerationStructureCompatibilityKHR( static_cast( m_device ), + reinterpret_cast( pVersionInfo ), + reinterpret_cast( pCompatibility ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceAccelerationStructureCompatibilityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceAccelerationStructureCompatibilityKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureCompatibilityKHR Device::getAccelerationStructureCompatibilityKHR( + AccelerationStructureVersionInfoKHR const & versionInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceAccelerationStructureCompatibilityKHR && + "Function requires " ); +# endif + + AccelerationStructureCompatibilityKHR compatibility; + d.vkGetDeviceAccelerationStructureCompatibilityKHR( m_device, + reinterpret_cast( &versionInfo ), + reinterpret_cast( &compatibility ) ); + + return compatibility; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetAccelerationStructureBuildSizesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureBuildSizesKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getAccelerationStructureBuildSizesKHR( AccelerationStructureBuildTypeKHR buildType, + AccelerationStructureBuildGeometryInfoKHR const * pBuildInfo, + uint32_t const * pMaxPrimitiveCounts, + AccelerationStructureBuildSizesInfoKHR * pSizeInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetAccelerationStructureBuildSizesKHR( static_cast( m_device ), + static_cast( buildType ), + reinterpret_cast( pBuildInfo ), + pMaxPrimitiveCounts, + reinterpret_cast( pSizeInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAccelerationStructureBuildSizesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureBuildSizesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureBuildSizesInfoKHR Device::getAccelerationStructureBuildSizesKHR( + AccelerationStructureBuildTypeKHR buildType, + AccelerationStructureBuildGeometryInfoKHR const & buildInfo, + ArrayProxy const & maxPrimitiveCounts, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetAccelerationStructureBuildSizesKHR && + "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( maxPrimitiveCounts.size() == buildInfo.geometryCount ); +# else + if ( maxPrimitiveCounts.size() != buildInfo.geometryCount ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureBuildSizesKHR: maxPrimitiveCounts.size() != buildInfo.geometryCount" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + AccelerationStructureBuildSizesInfoKHR sizeInfo; + d.vkGetAccelerationStructureBuildSizesKHR( m_device, + static_cast( buildType ), + reinterpret_cast( &buildInfo ), + maxPrimitiveCounts.data(), + reinterpret_cast( &sizeInfo ) ); + + return sizeInfo; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_ray_tracing_pipeline === + + // wrapper function for command vkCmdTraceRaysKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::traceRaysKHR( StridedDeviceAddressRegionKHR const * pRaygenShaderBindingTable, + StridedDeviceAddressRegionKHR const * pMissShaderBindingTable, + StridedDeviceAddressRegionKHR const * pHitShaderBindingTable, + StridedDeviceAddressRegionKHR const * pCallableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdTraceRaysKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pRaygenShaderBindingTable ), + reinterpret_cast( pMissShaderBindingTable ), + reinterpret_cast( pHitShaderBindingTable ), + reinterpret_cast( pCallableShaderBindingTable ), + width, + height, + depth ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdTraceRaysKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::traceRaysKHR( StridedDeviceAddressRegionKHR const & raygenShaderBindingTable, + StridedDeviceAddressRegionKHR const & missShaderBindingTable, + StridedDeviceAddressRegionKHR const & hitShaderBindingTable, + StridedDeviceAddressRegionKHR const & callableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdTraceRaysKHR && "Function requires " ); +# endif + + d.vkCmdTraceRaysKHR( m_commandBuffer, + reinterpret_cast( &raygenShaderBindingTable ), + reinterpret_cast( &missShaderBindingTable ), + reinterpret_cast( &hitShaderBindingTable ), + reinterpret_cast( &callableShaderBindingTable ), + width, + height, + depth ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createRayTracingPipelinesKHR( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + uint32_t createInfoCount, + RayTracingPipelineCreateInfoKHR const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateRayTracingPipelinesKHR( static_cast( m_device ), + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelines ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelinesKHR( + DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesKHR && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelinesKHR( + DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesKHR && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size(), {}, pipelineAllocator ); + Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createRayTracingPipelineKHR( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + RayTracingPipelineCreateInfoKHR const & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesKHR && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR, Result::ePipelineCompileRequiredEXT } ); + + return { result, pipeline }; + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createRayTracingPipelinesKHRUnique( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesKHR && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHRUnique", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines; + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createRayTracingPipelinesKHRUnique( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesKHR && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHRUnique", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelineKHRUnique( + DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + RayTracingPipelineCreateInfoKHR const & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesKHR && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineKHRUnique", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR, Result::ePipelineCompileRequiredEXT } ); + + return ResultValue>( + result, UniqueHandle( pipeline, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getRayTracingShaderGroupHandlesKHR( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( + static_cast( m_device ), static_cast( pipeline ), firstGroup, groupCount, dataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getRayTracingShaderGroupHandlesKHR( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRayTracingShaderGroupHandlesKHR && + "Function requires or " ); +# endif + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( + m_device, static_cast( pipeline ), firstGroup, groupCount, data.size() * sizeof( DataType ), reinterpret_cast( data.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandlesKHR" ); + + return detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getRayTracingShaderGroupHandleKHR( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRayTracingShaderGroupHandlesKHR && + "Function requires or " ); +# endif + + DataType data; + Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( + m_device, static_cast( pipeline ), firstGroup, groupCount, sizeof( DataType ), reinterpret_cast( &data ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandleKHR" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getRayTracingCaptureReplayShaderGroupHandlesKHR( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + static_cast( m_device ), static_cast( pipeline ), firstGroup, groupCount, dataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getRayTracingCaptureReplayShaderGroupHandlesKHR( Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR && + "Function requires " ); +# endif + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + m_device, static_cast( pipeline ), firstGroup, groupCount, data.size() * sizeof( DataType ), reinterpret_cast( data.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingCaptureReplayShaderGroupHandlesKHR" ); + + return detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getRayTracingCaptureReplayShaderGroupHandleKHR( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR && + "Function requires " ); +# endif + + DataType data; + Result result = static_cast( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + m_device, static_cast( pipeline ), firstGroup, groupCount, sizeof( DataType ), reinterpret_cast( &data ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingCaptureReplayShaderGroupHandleKHR" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdTraceRaysIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirectKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR( StridedDeviceAddressRegionKHR const * pRaygenShaderBindingTable, + StridedDeviceAddressRegionKHR const * pMissShaderBindingTable, + StridedDeviceAddressRegionKHR const * pHitShaderBindingTable, + StridedDeviceAddressRegionKHR const * pCallableShaderBindingTable, + DeviceAddress indirectDeviceAddress, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdTraceRaysIndirectKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pRaygenShaderBindingTable ), + reinterpret_cast( pMissShaderBindingTable ), + reinterpret_cast( pHitShaderBindingTable ), + reinterpret_cast( pCallableShaderBindingTable ), + static_cast( indirectDeviceAddress ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdTraceRaysIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirectKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR( StridedDeviceAddressRegionKHR const & raygenShaderBindingTable, + StridedDeviceAddressRegionKHR const & missShaderBindingTable, + StridedDeviceAddressRegionKHR const & hitShaderBindingTable, + StridedDeviceAddressRegionKHR const & callableShaderBindingTable, + DeviceAddress indirectDeviceAddress, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdTraceRaysIndirectKHR && "Function requires " ); +# endif + + d.vkCmdTraceRaysIndirectKHR( m_commandBuffer, + reinterpret_cast( &raygenShaderBindingTable ), + reinterpret_cast( &missShaderBindingTable ), + reinterpret_cast( &hitShaderBindingTable ), + reinterpret_cast( &callableShaderBindingTable ), + static_cast( indirectDeviceAddress ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRayTracingShaderGroupStackSizeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupStackSizeKHR.html + template ::type> + VULKAN_HPP_INLINE DeviceSize Device::getRayTracingShaderGroupStackSizeKHR( + Pipeline pipeline, uint32_t group, ShaderGroupShaderKHR groupShader, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetRayTracingShaderGroupStackSizeKHR( + static_cast( m_device ), static_cast( pipeline ), group, static_cast( groupShader ) ) ); + } + + // wrapper function for command vkCmdSetRayTracingPipelineStackSizeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRayTracingPipelineStackSizeKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRayTracingPipelineStackSizeKHR( static_cast( m_commandBuffer ), pipelineStackSize ); + } + + //=== VK_KHR_sampler_ycbcr_conversion === + + // wrapper function for command vkCreateSamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversionKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversionKHR( SamplerYcbcrConversionCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SamplerYcbcrConversion * pYcbcrConversion, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateSamplerYcbcrConversionKHR( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pYcbcrConversion ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversionKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createSamplerYcbcrConversionKHR( + SamplerYcbcrConversionCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSamplerYcbcrConversionKHR && + "Function requires or " ); +# endif + + SamplerYcbcrConversion ycbcrConversion; + Result result = static_cast( d.vkCreateSamplerYcbcrConversionKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &ycbcrConversion ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionKHR" ); + + return detail::createResultValueType( result, std::move( ycbcrConversion ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversionKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createSamplerYcbcrConversionKHRUnique( + SamplerYcbcrConversionCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSamplerYcbcrConversionKHR && + "Function requires or " ); +# endif + + SamplerYcbcrConversion ycbcrConversion; + Result result = static_cast( d.vkCreateSamplerYcbcrConversionKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &ycbcrConversion ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionKHRUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( ycbcrConversion, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversionKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( + SamplerYcbcrConversion ycbcrConversion, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroySamplerYcbcrConversionKHR( static_cast( m_device ), + static_cast( ycbcrConversion ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversionKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( + SamplerYcbcrConversion ycbcrConversion, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroySamplerYcbcrConversionKHR && + "Function requires or " ); +# endif + + d.vkDestroySamplerYcbcrConversionKHR( + m_device, static_cast( ycbcrConversion ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_bind_memory2 === + + // wrapper function for command vkBindBufferMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHR( + uint32_t bindInfoCount, BindBufferMemoryInfo const * pBindInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkBindBufferMemory2KHR( static_cast( m_device ), bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindBufferMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2KHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindBufferMemory2KHR( + ArrayProxy const & bindInfos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindBufferMemory2KHR && "Function requires or " ); +# endif + + Result result = + static_cast( d.vkBindBufferMemory2KHR( m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2KHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindImageMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindImageMemory2KHR( + uint32_t bindInfoCount, BindImageMemoryInfo const * pBindInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkBindImageMemory2KHR( static_cast( m_device ), bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindImageMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2KHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindImageMemory2KHR( + ArrayProxy const & bindInfos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindImageMemory2KHR && "Function requires or " ); +# endif + + Result result = + static_cast( d.vkBindImageMemory2KHR( m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2KHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_image_drm_format_modifier === + + // wrapper function for command vkGetImageDrmFormatModifierPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageDrmFormatModifierPropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getImageDrmFormatModifierPropertiesEXT( + Image image, ImageDrmFormatModifierPropertiesEXT * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetImageDrmFormatModifierPropertiesEXT( + static_cast( m_device ), static_cast( image ), reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageDrmFormatModifierPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageDrmFormatModifierPropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getImageDrmFormatModifierPropertiesEXT( + Image image, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageDrmFormatModifierPropertiesEXT && + "Function requires " ); +# endif + + ImageDrmFormatModifierPropertiesEXT properties; + Result result = static_cast( d.vkGetImageDrmFormatModifierPropertiesEXT( + m_device, static_cast( image ), reinterpret_cast( &properties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getImageDrmFormatModifierPropertiesEXT" ); + + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_validation_cache === + + // wrapper function for command vkCreateValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateValidationCacheEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( + ValidationCacheCreateInfoEXT const * pCreateInfo, AllocationCallbacks const * pAllocator, ValidationCacheEXT * pValidationCache, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateValidationCacheEXT( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pValidationCache ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateValidationCacheEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createValidationCacheEXT( + ValidationCacheCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateValidationCacheEXT && "Function requires " ); +# endif + + ValidationCacheEXT validationCache; + Result result = static_cast( d.vkCreateValidationCacheEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &validationCache ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createValidationCacheEXT" ); + + return detail::createResultValueType( result, std::move( validationCache ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateValidationCacheEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createValidationCacheEXTUnique( + ValidationCacheCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateValidationCacheEXT && "Function requires " ); +# endif + + ValidationCacheEXT validationCache; + Result result = static_cast( d.vkCreateValidationCacheEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &validationCache ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createValidationCacheEXTUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( validationCache, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyValidationCacheEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyValidationCacheEXT( + static_cast( m_device ), static_cast( validationCache ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyValidationCacheEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( + ValidationCacheEXT validationCache, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyValidationCacheEXT && "Function requires " ); +# endif + + d.vkDestroyValidationCacheEXT( + m_device, static_cast( validationCache ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyValidationCacheEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ValidationCacheEXT validationCache, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyValidationCacheEXT( + static_cast( m_device ), static_cast( validationCache ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyValidationCacheEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ValidationCacheEXT validationCache, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyValidationCacheEXT && "Function requires " ); +# endif + + d.vkDestroyValidationCacheEXT( + m_device, static_cast( validationCache ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkMergeValidationCachesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergeValidationCachesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( + ValidationCacheEXT dstCache, uint32_t srcCacheCount, ValidationCacheEXT const * pSrcCaches, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkMergeValidationCachesEXT( static_cast( m_device ), + static_cast( dstCache ), + srcCacheCount, + reinterpret_cast( pSrcCaches ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkMergeValidationCachesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergeValidationCachesEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::mergeValidationCachesEXT( + ValidationCacheEXT dstCache, ArrayProxy const & srcCaches, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkMergeValidationCachesEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkMergeValidationCachesEXT( + m_device, static_cast( dstCache ), srcCaches.size(), reinterpret_cast( srcCaches.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::mergeValidationCachesEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetValidationCacheDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetValidationCacheDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( + ValidationCacheEXT validationCache, size_t * pDataSize, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetValidationCacheDataEXT( static_cast( m_device ), static_cast( validationCache ), pDataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetValidationCacheDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetValidationCacheDataEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getValidationCacheDataEXT( + ValidationCacheEXT validationCache, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetValidationCacheDataEXT && "Function requires " ); +# endif + + std::vector data; + size_t dataSize; + Result result; + do + { + result = static_cast( d.vkGetValidationCacheDataEXT( m_device, static_cast( validationCache ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( + d.vkGetValidationCacheDataEXT( m_device, static_cast( validationCache ), &dataSize, reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getValidationCacheDataEXT" ); + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + return detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetValidationCacheDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetValidationCacheDataEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getValidationCacheDataEXT( + ValidationCacheEXT validationCache, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetValidationCacheDataEXT && "Function requires " ); +# endif + + std::vector data( uint8_tAllocator ); + size_t dataSize; + Result result; + do + { + result = static_cast( d.vkGetValidationCacheDataEXT( m_device, static_cast( validationCache ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( + d.vkGetValidationCacheDataEXT( m_device, static_cast( validationCache ), &dataSize, reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getValidationCacheDataEXT" ); + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_shading_rate_image === + + // wrapper function for command vkCmdBindShadingRateImageNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadingRateImageNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindShadingRateImageNV( ImageView imageView, ImageLayout imageLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindShadingRateImageNV( + static_cast( m_commandBuffer ), static_cast( imageView ), static_cast( imageLayout ) ); + } + + // wrapper function for command vkCmdSetViewportShadingRatePaletteNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportShadingRatePaletteNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( + uint32_t firstViewport, uint32_t viewportCount, ShadingRatePaletteNV const * pShadingRatePalettes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportShadingRatePaletteNV( + static_cast( m_commandBuffer ), firstViewport, viewportCount, reinterpret_cast( pShadingRatePalettes ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewportShadingRatePaletteNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportShadingRatePaletteNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( + uint32_t firstViewport, ArrayProxy const & shadingRatePalettes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetViewportShadingRatePaletteNV && "Function requires " ); +# endif + + d.vkCmdSetViewportShadingRatePaletteNV( + m_commandBuffer, firstViewport, shadingRatePalettes.size(), reinterpret_cast( shadingRatePalettes.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetCoarseSampleOrderNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoarseSampleOrderNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV( + CoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, CoarseSampleOrderCustomNV const * pCustomSampleOrders, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCoarseSampleOrderNV( static_cast( m_commandBuffer ), + static_cast( sampleOrderType ), + customSampleOrderCount, + reinterpret_cast( pCustomSampleOrders ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetCoarseSampleOrderNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoarseSampleOrderNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV( + CoarseSampleOrderTypeNV sampleOrderType, ArrayProxy const & customSampleOrders, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetCoarseSampleOrderNV && "Function requires " ); +# endif + + d.vkCmdSetCoarseSampleOrderNV( m_commandBuffer, + static_cast( sampleOrderType ), + customSampleOrders.size(), + reinterpret_cast( customSampleOrders.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_ray_tracing === + + // wrapper function for command vkCreateAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createAccelerationStructureNV( AccelerationStructureCreateInfoNV const * pCreateInfo, + AllocationCallbacks const * pAllocator, + AccelerationStructureNV * pAccelerationStructure, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateAccelerationStructureNV( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pAccelerationStructure ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createAccelerationStructureNV( + AccelerationStructureCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateAccelerationStructureNV && "Function requires " ); +# endif + + AccelerationStructureNV accelerationStructure; + Result result = static_cast( d.vkCreateAccelerationStructureNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &accelerationStructure ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureNV" ); + + return detail::createResultValueType( result, std::move( accelerationStructure ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createAccelerationStructureNVUnique( + AccelerationStructureCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateAccelerationStructureNV && "Function requires " ); +# endif + + AccelerationStructureNV accelerationStructure; + Result result = static_cast( d.vkCreateAccelerationStructureNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &accelerationStructure ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureNVUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( accelerationStructure, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyAccelerationStructureNV( + AccelerationStructureNV accelerationStructure, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureNV( static_cast( m_device ), + static_cast( accelerationStructure ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyAccelerationStructureNV( + AccelerationStructureNV accelerationStructure, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyAccelerationStructureNV && "Function requires " ); +# endif + + d.vkDestroyAccelerationStructureNV( + m_device, static_cast( accelerationStructure ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( AccelerationStructureNV accelerationStructure, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyAccelerationStructureNV( static_cast( m_device ), + static_cast( accelerationStructure ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( AccelerationStructureNV accelerationStructure, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyAccelerationStructureNV && "Function requires " ); +# endif + + d.vkDestroyAccelerationStructureNV( + m_device, static_cast( accelerationStructure ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html + template ::type> + VULKAN_HPP_INLINE void Device::getAccelerationStructureMemoryRequirementsNV( + AccelerationStructureMemoryRequirementsInfoNV const * pInfo, MemoryRequirements2KHR * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetAccelerationStructureMemoryRequirementsNV( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getAccelerationStructureMemoryRequirementsNV( + AccelerationStructureMemoryRequirementsInfoNV const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetAccelerationStructureMemoryRequirementsNV && + "Function requires " ); +# endif + + MemoryRequirements2KHR memoryRequirements; + d.vkGetAccelerationStructureMemoryRequirementsNV( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getAccelerationStructureMemoryRequirementsNV( + AccelerationStructureMemoryRequirementsInfoNV const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetAccelerationStructureMemoryRequirementsNV && + "Function requires " ); +# endif + + StructureChain structureChain; + MemoryRequirements2KHR & memoryRequirements = structureChain.template get(); + d.vkGetAccelerationStructureMemoryRequirementsNV( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindAccelerationStructureMemoryNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindAccelerationStructureMemoryNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindAccelerationStructureMemoryNV( + uint32_t bindInfoCount, BindAccelerationStructureMemoryInfoNV const * pBindInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindAccelerationStructureMemoryNV( + static_cast( m_device ), bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindAccelerationStructureMemoryNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindAccelerationStructureMemoryNV.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindAccelerationStructureMemoryNV( + ArrayProxy const & bindInfos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindAccelerationStructureMemoryNV && "Function requires " ); +# endif + + Result result = static_cast( d.vkBindAccelerationStructureMemoryNV( + m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindAccelerationStructureMemoryNV" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBuildAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructureNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( AccelerationStructureInfoNV const * pInfo, + Buffer instanceData, + DeviceSize instanceOffset, + Bool32 update, + AccelerationStructureNV dst, + AccelerationStructureNV src, + Buffer scratch, + DeviceSize scratchOffset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBuildAccelerationStructureNV( static_cast( m_commandBuffer ), + reinterpret_cast( pInfo ), + static_cast( instanceData ), + static_cast( instanceOffset ), + static_cast( update ), + static_cast( dst ), + static_cast( src ), + static_cast( scratch ), + static_cast( scratchOffset ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructureNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( AccelerationStructureInfoNV const & info, + Buffer instanceData, + DeviceSize instanceOffset, + Bool32 update, + AccelerationStructureNV dst, + AccelerationStructureNV src, + Buffer scratch, + DeviceSize scratchOffset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBuildAccelerationStructureNV && "Function requires " ); +# endif + + d.vkCmdBuildAccelerationStructureNV( m_commandBuffer, + reinterpret_cast( &info ), + static_cast( instanceData ), + static_cast( instanceOffset ), + static_cast( update ), + static_cast( dst ), + static_cast( src ), + static_cast( scratch ), + static_cast( scratchOffset ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV( + AccelerationStructureNV dst, AccelerationStructureNV src, CopyAccelerationStructureModeKHR mode, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyAccelerationStructureNV( static_cast( m_commandBuffer ), + static_cast( dst ), + static_cast( src ), + static_cast( mode ) ); + } + + // wrapper function for command vkCmdTraceRaysNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( Buffer raygenShaderBindingTableBuffer, + DeviceSize raygenShaderBindingOffset, + Buffer missShaderBindingTableBuffer, + DeviceSize missShaderBindingOffset, + DeviceSize missShaderBindingStride, + Buffer hitShaderBindingTableBuffer, + DeviceSize hitShaderBindingOffset, + DeviceSize hitShaderBindingStride, + Buffer callableShaderBindingTableBuffer, + DeviceSize callableShaderBindingOffset, + DeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdTraceRaysNV( static_cast( m_commandBuffer ), + static_cast( raygenShaderBindingTableBuffer ), + static_cast( raygenShaderBindingOffset ), + static_cast( missShaderBindingTableBuffer ), + static_cast( missShaderBindingOffset ), + static_cast( missShaderBindingStride ), + static_cast( hitShaderBindingTableBuffer ), + static_cast( hitShaderBindingOffset ), + static_cast( hitShaderBindingStride ), + static_cast( callableShaderBindingTableBuffer ), + static_cast( callableShaderBindingOffset ), + static_cast( callableShaderBindingStride ), + width, + height, + depth ); + } + + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createRayTracingPipelinesNV( PipelineCache pipelineCache, + uint32_t createInfoCount, + RayTracingPipelineCreateInfoNV const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateRayTracingPipelinesNV( static_cast( m_device ), + static_cast( pipelineCache ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelines ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelinesNV( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesNV && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNV", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelinesNV( + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesNV && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size(), {}, pipelineAllocator ); + Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNV", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createRayTracingPipelineNV( + PipelineCache pipelineCache, RayTracingPipelineCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesNV && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineNV", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + + return { result, pipeline }; + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createRayTracingPipelinesNVUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesNV && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNVUnique", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines; + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createRayTracingPipelinesNVUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesNV && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNVUnique", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelineNVUnique( + PipelineCache pipelineCache, RayTracingPipelineCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateRayTracingPipelinesNV && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineNVUnique", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + + return ResultValue>( + result, UniqueHandle( pipeline, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getRayTracingShaderGroupHandlesNV( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetRayTracingShaderGroupHandlesNV( + static_cast( m_device ), static_cast( pipeline ), firstGroup, groupCount, dataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getRayTracingShaderGroupHandlesNV( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRayTracingShaderGroupHandlesNV && + "Function requires or " ); +# endif + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesNV( + m_device, static_cast( pipeline ), firstGroup, groupCount, data.size() * sizeof( DataType ), reinterpret_cast( data.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandlesNV" ); + + return detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getRayTracingShaderGroupHandleNV( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRayTracingShaderGroupHandlesNV && + "Function requires or " ); +# endif + + DataType data; + Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesNV( + m_device, static_cast( pipeline ), firstGroup, groupCount, sizeof( DataType ), reinterpret_cast( &data ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandleNV" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getAccelerationStructureHandleNV( + AccelerationStructureNV accelerationStructure, size_t dataSize, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetAccelerationStructureHandleNV( + static_cast( m_device ), static_cast( accelerationStructure ), dataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getAccelerationStructureHandleNV( + AccelerationStructureNV accelerationStructure, size_t dataSize, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetAccelerationStructureHandleNV && "Function requires " ); +# endif + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( d.vkGetAccelerationStructureHandleNV( + m_device, static_cast( accelerationStructure ), data.size() * sizeof( DataType ), reinterpret_cast( data.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureHandleNV" ); + + return detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getAccelerationStructureHandleNV( + AccelerationStructureNV accelerationStructure, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetAccelerationStructureHandleNV && "Function requires " ); +# endif + + DataType data; + Result result = static_cast( d.vkGetAccelerationStructureHandleNV( + m_device, static_cast( accelerationStructure ), sizeof( DataType ), reinterpret_cast( &data ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureHandleNV" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( uint32_t accelerationStructureCount, + AccelerationStructureNV const * pAccelerationStructures, + QueryType queryType, + QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteAccelerationStructuresPropertiesNV( static_cast( m_commandBuffer ), + accelerationStructureCount, + reinterpret_cast( pAccelerationStructures ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( ArrayProxy const & accelerationStructures, + QueryType queryType, + QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdWriteAccelerationStructuresPropertiesNV && + "Function requires " ); +# endif + + d.vkCmdWriteAccelerationStructuresPropertiesNV( m_commandBuffer, + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCompileDeferredNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCompileDeferredNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::compileDeferredNV( Pipeline pipeline, uint32_t shader, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCompileDeferredNV( static_cast( m_device ), static_cast( pipeline ), shader ) ); + } +#else + // wrapper function for command vkCompileDeferredNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCompileDeferredNV.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::compileDeferredNV( + Pipeline pipeline, uint32_t shader, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCompileDeferredNV && "Function requires " ); +# endif + + Result result = static_cast( d.vkCompileDeferredNV( m_device, static_cast( pipeline ), shader ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::compileDeferredNV" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_maintenance3 === + + // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSupportKHR( + DescriptorSetLayoutCreateInfo const * pCreateInfo, DescriptorSetLayoutSupport * pSupport, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDescriptorSetLayoutSupportKHR( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pSupport ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorSetLayoutSupport Device::getDescriptorSetLayoutSupportKHR( DescriptorSetLayoutCreateInfo const & createInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDescriptorSetLayoutSupportKHR && + "Function requires or " ); +# endif + + DescriptorSetLayoutSupport support; + d.vkGetDescriptorSetLayoutSupportKHR( + m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); + + return support; + } + + // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getDescriptorSetLayoutSupportKHR( DescriptorSetLayoutCreateInfo const & createInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDescriptorSetLayoutSupportKHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + DescriptorSetLayoutSupport & support = structureChain.template get(); + d.vkGetDescriptorSetLayoutSupportKHR( + m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_draw_indirect_count === + + // wrapper function for command vkCmdDrawIndirectCountKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( + Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirectCountKHR( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + // wrapper function for command vkCmdDrawIndexedIndirectCountKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( + Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexedIndirectCountKHR( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_EXT_external_memory_host === + + // wrapper function for command vkGetMemoryHostPointerPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryHostPointerPropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryHostPointerPropertiesEXT( + ExternalMemoryHandleTypeFlagBits handleType, void const * pHostPointer, MemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryHostPointerPropertiesEXT( static_cast( m_device ), + static_cast( handleType ), + pHostPointer, + reinterpret_cast( pMemoryHostPointerProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryHostPointerPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryHostPointerPropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryHostPointerPropertiesEXT( + ExternalMemoryHandleTypeFlagBits handleType, void const * pHostPointer, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryHostPointerPropertiesEXT && "Function requires " ); +# endif + + MemoryHostPointerPropertiesEXT memoryHostPointerProperties; + Result result = + static_cast( d.vkGetMemoryHostPointerPropertiesEXT( m_device, + static_cast( handleType ), + pHostPointer, + reinterpret_cast( &memoryHostPointerProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryHostPointerPropertiesEXT" ); + + return detail::createResultValueType( result, std::move( memoryHostPointerProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_AMD_buffer_marker === + + // wrapper function for command vkCmdWriteBufferMarkerAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarkerAMD.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( + PipelineStageFlagBits pipelineStage, Buffer dstBuffer, DeviceSize dstOffset, uint32_t marker, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteBufferMarkerAMD( static_cast( m_commandBuffer ), + static_cast( pipelineStage ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + marker ); + } + + // wrapper function for command vkCmdWriteBufferMarker2AMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarker2AMD.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarker2AMD( + PipelineStageFlags2 stage, Buffer dstBuffer, DeviceSize dstOffset, uint32_t marker, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteBufferMarker2AMD( static_cast( m_commandBuffer ), + static_cast( stage ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + marker ); + } + + //=== VK_EXT_calibrated_timestamps === + + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getCalibrateableTimeDomainsEXT( + uint32_t * pTimeDomainCount, TimeDomainKHR * pTimeDomains, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + static_cast( m_physicalDevice ), pTimeDomainCount, reinterpret_cast( pTimeDomains ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCalibrateableTimeDomainsEXT( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT && + "Function requires or " ); +# endif + + std::vector timeDomains; + uint32_t timeDomainCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && timeDomainCount ) + { + timeDomains.resize( timeDomainCount ); + result = static_cast( + d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, reinterpret_cast( timeDomains.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsEXT" ); + VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); + if ( timeDomainCount < timeDomains.size() ) + { + timeDomains.resize( timeDomainCount ); + } + return detail::createResultValueType( result, std::move( timeDomains ) ); + } + + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCalibrateableTimeDomainsEXT( TimeDomainKHRAllocator const & timeDomainKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT && + "Function requires or " ); +# endif + + std::vector timeDomains( timeDomainKHRAllocator ); + uint32_t timeDomainCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && timeDomainCount ) + { + timeDomains.resize( timeDomainCount ); + result = static_cast( + d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, &timeDomainCount, reinterpret_cast( timeDomains.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsEXT" ); + VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); + if ( timeDomainCount < timeDomains.size() ) + { + timeDomains.resize( timeDomainCount ); + } + return detail::createResultValueType( result, std::move( timeDomains ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetCalibratedTimestampsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getCalibratedTimestampsEXT( + uint32_t timestampCount, CalibratedTimestampInfoKHR const * pTimestampInfos, uint64_t * pTimestamps, uint64_t * pMaxDeviation, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetCalibratedTimestampsEXT( static_cast( m_device ), + timestampCount, + reinterpret_cast( pTimestampInfos ), + pTimestamps, + pMaxDeviation ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetCalibratedTimestampsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, uint64_t>>::type + Device::getCalibratedTimestampsEXT( ArrayProxy const & timestampInfos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetCalibratedTimestampsEXT && + "Function requires or " ); +# endif + + std::pair, uint64_t> data_( + std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) ); + std::vector & timestamps = data_.first; + uint64_t & maxDeviation = data_.second; + Result result = static_cast( d.vkGetCalibratedTimestampsEXT( + m_device, timestampInfos.size(), reinterpret_cast( timestampInfos.data() ), timestamps.data(), &maxDeviation ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetCalibratedTimestampsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, uint64_t>>::type + Device::getCalibratedTimestampsEXT( + ArrayProxy const & timestampInfos, Uint64_tAllocator const & uint64_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetCalibratedTimestampsEXT && + "Function requires or " ); +# endif + + std::pair, uint64_t> data_( + std::piecewise_construct, std::forward_as_tuple( timestampInfos.size(), uint64_tAllocator ), std::forward_as_tuple( 0 ) ); + std::vector & timestamps = data_.first; + uint64_t & maxDeviation = data_.second; + Result result = static_cast( d.vkGetCalibratedTimestampsEXT( + m_device, timestampInfos.size(), reinterpret_cast( timestampInfos.data() ), timestamps.data(), &maxDeviation ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetCalibratedTimestampsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getCalibratedTimestampEXT( + CalibratedTimestampInfoKHR const & timestampInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetCalibratedTimestampsEXT && + "Function requires or " ); +# endif + + std::pair data_; + uint64_t & timestamp = data_.first; + uint64_t & maxDeviation = data_.second; + Result result = static_cast( + d.vkGetCalibratedTimestampsEXT( m_device, 1, reinterpret_cast( ×tampInfo ), ×tamp, &maxDeviation ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampEXT" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_mesh_shader === + + // wrapper function for command vkCmdDrawMeshTasksNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksNV( static_cast( m_commandBuffer ), taskCount, firstTask ); + } + + // wrapper function for command vkCmdDrawMeshTasksIndirectNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksIndirectNV( + static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + // wrapper function for command vkCmdDrawMeshTasksIndirectCountNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountNV( + Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksIndirectCountNV( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_NV_scissor_exclusive === + + // wrapper function for command vkCmdSetExclusiveScissorEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorEnableNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorEnableNV( + uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, Bool32 const * pExclusiveScissorEnables, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetExclusiveScissorEnableNV( static_cast( m_commandBuffer ), + firstExclusiveScissor, + exclusiveScissorCount, + reinterpret_cast( pExclusiveScissorEnables ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetExclusiveScissorEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorEnableNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorEnableNV( + uint32_t firstExclusiveScissor, ArrayProxy const & exclusiveScissorEnables, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetExclusiveScissorEnableNV && "Function requires " ); +# endif + + d.vkCmdSetExclusiveScissorEnableNV( + m_commandBuffer, firstExclusiveScissor, exclusiveScissorEnables.size(), reinterpret_cast( exclusiveScissorEnables.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetExclusiveScissorNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( + uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, Rect2D const * pExclusiveScissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetExclusiveScissorNV( + static_cast( m_commandBuffer ), firstExclusiveScissor, exclusiveScissorCount, reinterpret_cast( pExclusiveScissors ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetExclusiveScissorNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( + uint32_t firstExclusiveScissor, ArrayProxy const & exclusiveScissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetExclusiveScissorNV && "Function requires " ); +# endif + + d.vkCmdSetExclusiveScissorNV( + m_commandBuffer, firstExclusiveScissor, exclusiveScissors.size(), reinterpret_cast( exclusiveScissors.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_device_diagnostic_checkpoints === + + // wrapper function for command vkCmdSetCheckpointNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCheckpointNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( void const * pCheckpointMarker, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCheckpointNV( static_cast( m_commandBuffer ), pCheckpointMarker ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetCheckpointNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCheckpointNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( CheckpointMarkerType const & checkpointMarker, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetCheckpointNV && "Function requires " ); +# endif + + d.vkCmdSetCheckpointNV( m_commandBuffer, reinterpret_cast( &checkpointMarker ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetQueueCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointDataNV.html + template ::type> + VULKAN_HPP_INLINE void Queue::getCheckpointDataNV( uint32_t * pCheckpointDataCount, CheckpointDataNV * pCheckpointData, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetQueueCheckpointDataNV( static_cast( m_queue ), pCheckpointDataCount, reinterpret_cast( pCheckpointData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetQueueCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointDataNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointDataNV( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetQueueCheckpointDataNV && "Function requires " ); +# endif + + std::vector checkpointData; + uint32_t checkpointDataCount; + d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr ); + checkpointData.resize( checkpointDataCount ); + d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); + + VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() ); + if ( checkpointDataCount < checkpointData.size() ) + { + checkpointData.resize( checkpointDataCount ); + } + return checkpointData; + } + + // wrapper function for command vkGetQueueCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointDataNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointDataNV( + CheckpointDataNVAllocator const & checkpointDataNVAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetQueueCheckpointDataNV && "Function requires " ); +# endif + + std::vector checkpointData( checkpointDataNVAllocator ); + uint32_t checkpointDataCount; + d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, nullptr ); + checkpointData.resize( checkpointDataCount ); + d.vkGetQueueCheckpointDataNV( m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); + + VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() ); + if ( checkpointDataCount < checkpointData.size() ) + { + checkpointData.resize( checkpointDataCount ); + } + return checkpointData; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetQueueCheckpointData2NV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointData2NV.html + template ::type> + VULKAN_HPP_INLINE void Queue::getCheckpointData2NV( uint32_t * pCheckpointDataCount, CheckpointData2NV * pCheckpointData, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetQueueCheckpointData2NV( static_cast( m_queue ), pCheckpointDataCount, reinterpret_cast( pCheckpointData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetQueueCheckpointData2NV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointData2NV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointData2NV( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetQueueCheckpointData2NV && "Function requires " ); +# endif + + std::vector checkpointData; + uint32_t checkpointDataCount; + d.vkGetQueueCheckpointData2NV( m_queue, &checkpointDataCount, nullptr ); + checkpointData.resize( checkpointDataCount ); + d.vkGetQueueCheckpointData2NV( m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); + + VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() ); + if ( checkpointDataCount < checkpointData.size() ) + { + checkpointData.resize( checkpointDataCount ); + } + return checkpointData; + } + + // wrapper function for command vkGetQueueCheckpointData2NV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointData2NV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointData2NV( + CheckpointData2NVAllocator const & checkpointData2NVAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetQueueCheckpointData2NV && "Function requires " ); +# endif + + std::vector checkpointData( checkpointData2NVAllocator ); + uint32_t checkpointDataCount; + d.vkGetQueueCheckpointData2NV( m_queue, &checkpointDataCount, nullptr ); + checkpointData.resize( checkpointDataCount ); + d.vkGetQueueCheckpointData2NV( m_queue, &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); + + VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() ); + if ( checkpointDataCount < checkpointData.size() ) + { + checkpointData.resize( checkpointDataCount ); + } + return checkpointData; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_timeline_semaphore === + + // wrapper function for command vkGetSemaphoreCounterValueKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValueKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreCounterValueKHR( Semaphore semaphore, uint64_t * pValue, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSemaphoreCounterValueKHR( static_cast( m_device ), static_cast( semaphore ), pValue ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSemaphoreCounterValueKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValueKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getSemaphoreCounterValueKHR( Semaphore semaphore, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSemaphoreCounterValueKHR && "Function requires or " ); +# endif + + uint64_t value; + Result result = static_cast( d.vkGetSemaphoreCounterValueKHR( m_device, static_cast( semaphore ), &value ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreCounterValueKHR" ); + + return detail::createResultValueType( result, std::move( value ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkWaitSemaphoresKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphoresKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphoresKHR( SemaphoreWaitInfo const * pWaitInfo, uint64_t timeout, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkWaitSemaphoresKHR( static_cast( m_device ), reinterpret_cast( pWaitInfo ), timeout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWaitSemaphoresKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphoresKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphoresKHR( SemaphoreWaitInfo const & waitInfo, uint64_t timeout, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWaitSemaphoresKHR && "Function requires or " ); +# endif + + Result result = static_cast( d.vkWaitSemaphoresKHR( m_device, reinterpret_cast( &waitInfo ), timeout ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphoresKHR", { Result::eSuccess, Result::eTimeout } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSignalSemaphoreKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphoreKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::signalSemaphoreKHR( SemaphoreSignalInfo const * pSignalInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSignalSemaphoreKHR( static_cast( m_device ), reinterpret_cast( pSignalInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSignalSemaphoreKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphoreKHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::signalSemaphoreKHR( + SemaphoreSignalInfo const & signalInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSignalSemaphoreKHR && "Function requires or " ); +# endif + + Result result = static_cast( d.vkSignalSemaphoreKHR( m_device, reinterpret_cast( &signalInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphoreKHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_present_timing === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetSwapchainPresentTimingQueueSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetSwapchainPresentTimingQueueSizeEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setSwapchainPresentTimingQueueSizeEXT( SwapchainKHR swapchain, uint32_t size, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkSetSwapchainPresentTimingQueueSizeEXT( static_cast( m_device ), static_cast( swapchain ), size ) ); + } +#else + // wrapper function for command vkSetSwapchainPresentTimingQueueSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetSwapchainPresentTimingQueueSizeEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setSwapchainPresentTimingQueueSizeEXT( SwapchainKHR swapchain, uint32_t size, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetSwapchainPresentTimingQueueSizeEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkSetSwapchainPresentTimingQueueSizeEXT( m_device, static_cast( swapchain ), size ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setSwapchainPresentTimingQueueSizeEXT", { Result::eSuccess, Result::eNotReady } ); + + return static_cast( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetSwapchainTimingPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainTimingPropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainTimingPropertiesEXT( + SwapchainKHR swapchain, SwapchainTimingPropertiesEXT * pSwapchainTimingProperties, uint64_t * pSwapchainTimingPropertiesCounter, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSwapchainTimingPropertiesEXT( static_cast( m_device ), + static_cast( swapchain ), + reinterpret_cast( pSwapchainTimingProperties ), + pSwapchainTimingPropertiesCounter ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSwapchainTimingPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainTimingPropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::getSwapchainTimingPropertiesEXT( + SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSwapchainTimingPropertiesEXT && "Function requires " ); +# endif + + std::pair data_; + SwapchainTimingPropertiesEXT & swapchainTimingProperties = data_.first; + uint64_t & swapchainTimingPropertiesCounter = data_.second; + Result result = static_cast( d.vkGetSwapchainTimingPropertiesEXT( m_device, + static_cast( swapchain ), + reinterpret_cast( &swapchainTimingProperties ), + &swapchainTimingPropertiesCounter ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainTimingPropertiesEXT", { Result::eSuccess, Result::eNotReady } ); + + return { result, data_ }; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSwapchainTimeDomainPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainTimeDomainPropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainTimeDomainPropertiesEXT( + SwapchainKHR swapchain, SwapchainTimeDomainPropertiesEXT * pSwapchainTimeDomainProperties, uint64_t * pTimeDomainsCounter, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetSwapchainTimeDomainPropertiesEXT( static_cast( m_device ), + static_cast( swapchain ), + reinterpret_cast( pSwapchainTimeDomainProperties ), + pTimeDomainsCounter ) ); + } + + // wrapper function for command vkGetPastPresentationTimingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPastPresentationTimingEXT( PastPresentationTimingInfoEXT const * pPastPresentationTimingInfo, + PastPresentationTimingPropertiesEXT * pPastPresentationTimingProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPastPresentationTimingEXT( static_cast( m_device ), + reinterpret_cast( pPastPresentationTimingInfo ), + reinterpret_cast( pPastPresentationTimingProperties ) ) ); + } + + //=== VK_INTEL_performance_query === + + // wrapper function for command vkInitializePerformanceApiINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInitializePerformanceApiINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::initializePerformanceApiINTEL( InitializePerformanceApiInfoINTEL const * pInitializeInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkInitializePerformanceApiINTEL( static_cast( m_device ), + reinterpret_cast( pInitializeInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkInitializePerformanceApiINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInitializePerformanceApiINTEL.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::initializePerformanceApiINTEL( + InitializePerformanceApiInfoINTEL const & initializeInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkInitializePerformanceApiINTEL && "Function requires " ); +# endif + + Result result = + static_cast( d.vkInitializePerformanceApiINTEL( m_device, reinterpret_cast( &initializeInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::initializePerformanceApiINTEL" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUninitializePerformanceApiINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUninitializePerformanceApiINTEL.html + template ::type> + VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUninitializePerformanceApiINTEL( static_cast( m_device ) ); + } + + // wrapper function for command vkCmdSetPerformanceMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceMarkerINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceMarkerINTEL( PerformanceMarkerInfoINTEL const * pMarkerInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCmdSetPerformanceMarkerINTEL( static_cast( m_commandBuffer ), + reinterpret_cast( pMarkerInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetPerformanceMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceMarkerINTEL.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::setPerformanceMarkerINTEL( + PerformanceMarkerInfoINTEL const & markerInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetPerformanceMarkerINTEL && "Function requires " ); +# endif + + Result result = + static_cast( d.vkCmdSetPerformanceMarkerINTEL( m_commandBuffer, reinterpret_cast( &markerInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceMarkerINTEL" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetPerformanceStreamMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceStreamMarkerINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceStreamMarkerINTEL( PerformanceStreamMarkerInfoINTEL const * pMarkerInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCmdSetPerformanceStreamMarkerINTEL( static_cast( m_commandBuffer ), + reinterpret_cast( pMarkerInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetPerformanceStreamMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceStreamMarkerINTEL.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::setPerformanceStreamMarkerINTEL( + PerformanceStreamMarkerInfoINTEL const & markerInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetPerformanceStreamMarkerINTEL && "Function requires " ); +# endif + + Result result = static_cast( + d.vkCmdSetPerformanceStreamMarkerINTEL( m_commandBuffer, reinterpret_cast( &markerInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceStreamMarkerINTEL" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetPerformanceOverrideINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceOverrideINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceOverrideINTEL( PerformanceOverrideInfoINTEL const * pOverrideInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCmdSetPerformanceOverrideINTEL( static_cast( m_commandBuffer ), + reinterpret_cast( pOverrideInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetPerformanceOverrideINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceOverrideINTEL.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::setPerformanceOverrideINTEL( + PerformanceOverrideInfoINTEL const & overrideInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetPerformanceOverrideINTEL && "Function requires " ); +# endif + + Result result = + static_cast( d.vkCmdSetPerformanceOverrideINTEL( m_commandBuffer, reinterpret_cast( &overrideInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceOverrideINTEL" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkAcquirePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquirePerformanceConfigurationINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquirePerformanceConfigurationINTEL( + PerformanceConfigurationAcquireInfoINTEL const * pAcquireInfo, PerformanceConfigurationINTEL * pConfiguration, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAcquirePerformanceConfigurationINTEL( static_cast( m_device ), + reinterpret_cast( pAcquireInfo ), + reinterpret_cast( pConfiguration ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquirePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquirePerformanceConfigurationINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::acquirePerformanceConfigurationINTEL( + PerformanceConfigurationAcquireInfoINTEL const & acquireInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAcquirePerformanceConfigurationINTEL && "Function requires " ); +# endif + + PerformanceConfigurationINTEL configuration; + Result result = + static_cast( d.vkAcquirePerformanceConfigurationINTEL( m_device, + reinterpret_cast( &acquireInfo ), + reinterpret_cast( &configuration ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquirePerformanceConfigurationINTEL" ); + + return detail::createResultValueType( result, std::move( configuration ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkAcquirePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquirePerformanceConfigurationINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::acquirePerformanceConfigurationINTELUnique( PerformanceConfigurationAcquireInfoINTEL const & acquireInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAcquirePerformanceConfigurationINTEL && "Function requires " ); +# endif + + PerformanceConfigurationINTEL configuration; + Result result = + static_cast( d.vkAcquirePerformanceConfigurationINTEL( m_device, + reinterpret_cast( &acquireInfo ), + reinterpret_cast( &configuration ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquirePerformanceConfigurationINTELUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( configuration, detail::ObjectRelease( *this, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleasePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleasePerformanceConfigurationINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::releasePerformanceConfigurationINTEL( PerformanceConfigurationINTEL configuration, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkReleasePerformanceConfigurationINTEL( static_cast( m_device ), static_cast( configuration ) ) ); + } +#else + // wrapper function for command vkReleasePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleasePerformanceConfigurationINTEL.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::releasePerformanceConfigurationINTEL( + PerformanceConfigurationINTEL configuration, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkReleasePerformanceConfigurationINTEL && "Function requires " ); +# endif + + Result result = static_cast( d.vkReleasePerformanceConfigurationINTEL( m_device, static_cast( configuration ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::releasePerformanceConfigurationINTEL" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleasePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleasePerformanceConfigurationINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::release( PerformanceConfigurationINTEL configuration, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkReleasePerformanceConfigurationINTEL( static_cast( m_device ), static_cast( configuration ) ) ); + } +#else + // wrapper function for command vkReleasePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleasePerformanceConfigurationINTEL.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::release( PerformanceConfigurationINTEL configuration, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkReleasePerformanceConfigurationINTEL && "Function requires " ); +# endif + + Result result = static_cast( d.vkReleasePerformanceConfigurationINTEL( m_device, static_cast( configuration ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::release" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueSetPerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSetPerformanceConfigurationINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::setPerformanceConfigurationINTEL( PerformanceConfigurationINTEL configuration, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkQueueSetPerformanceConfigurationINTEL( static_cast( m_queue ), static_cast( configuration ) ) ); + } +#else + // wrapper function for command vkQueueSetPerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSetPerformanceConfigurationINTEL.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::setPerformanceConfigurationINTEL( + PerformanceConfigurationINTEL configuration, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkQueueSetPerformanceConfigurationINTEL && + "Function requires " ); +# endif + + Result result = static_cast( d.vkQueueSetPerformanceConfigurationINTEL( m_queue, static_cast( configuration ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::setPerformanceConfigurationINTEL" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetPerformanceParameterINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPerformanceParameterINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPerformanceParameterINTEL( + PerformanceParameterTypeINTEL parameter, PerformanceValueINTEL * pValue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPerformanceParameterINTEL( + static_cast( m_device ), static_cast( parameter ), reinterpret_cast( pValue ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPerformanceParameterINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPerformanceParameterINTEL.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getPerformanceParameterINTEL( + PerformanceParameterTypeINTEL parameter, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPerformanceParameterINTEL && "Function requires " ); +# endif + + PerformanceValueINTEL value; + Result result = static_cast( d.vkGetPerformanceParameterINTEL( + m_device, static_cast( parameter ), reinterpret_cast( &value ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPerformanceParameterINTEL" ); + + return detail::createResultValueType( result, std::move( value ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_AMD_display_native_hdr === + + // wrapper function for command vkSetLocalDimmingAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLocalDimmingAMD.html + template ::type> + VULKAN_HPP_INLINE void Device::setLocalDimmingAMD( SwapchainKHR swapChain, Bool32 localDimmingEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkSetLocalDimmingAMD( static_cast( m_device ), static_cast( swapChain ), static_cast( localDimmingEnable ) ); + } + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + // wrapper function for command vkCreateImagePipeSurfaceFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImagePipeSurfaceFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createImagePipeSurfaceFUCHSIA( + ImagePipeSurfaceCreateInfoFUCHSIA const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateImagePipeSurfaceFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImagePipeSurfaceFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createImagePipeSurfaceFUCHSIA( + ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateImagePipeSurfaceFUCHSIA && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createImagePipeSurfaceFUCHSIA" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateImagePipeSurfaceFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImagePipeSurfaceFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createImagePipeSurfaceFUCHSIAUnique( + ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateImagePipeSurfaceFUCHSIA && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createImagePipeSurfaceFUCHSIAUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + // wrapper function for command vkCreateMetalSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMetalSurfaceEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createMetalSurfaceEXT( + MetalSurfaceCreateInfoEXT const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateMetalSurfaceEXT( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateMetalSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMetalSurfaceEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createMetalSurfaceEXT( + MetalSurfaceCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateMetalSurfaceEXT && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateMetalSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMetalSurfaceEXT" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateMetalSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMetalSurfaceEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createMetalSurfaceEXTUnique( + MetalSurfaceCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateMetalSurfaceEXT && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateMetalSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMetalSurfaceEXTUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + + // wrapper function for command vkGetPhysicalDeviceFragmentShadingRatesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFragmentShadingRatesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getFragmentShadingRatesKHR( + uint32_t * pFragmentShadingRateCount, PhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceFragmentShadingRatesKHR( static_cast( m_physicalDevice ), + pFragmentShadingRateCount, + reinterpret_cast( pFragmentShadingRates ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFragmentShadingRatesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFragmentShadingRatesKHR.html + template < + typename PhysicalDeviceFragmentShadingRateKHRAllocator, + typename Dispatch, + typename std::enable_if::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getFragmentShadingRatesKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFragmentShadingRatesKHR && + "Function requires " ); +# endif + + std::vector fragmentShadingRates; + uint32_t fragmentShadingRateCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceFragmentShadingRatesKHR( m_physicalDevice, &fragmentShadingRateCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && fragmentShadingRateCount ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + result = static_cast( d.vkGetPhysicalDeviceFragmentShadingRatesKHR( + m_physicalDevice, &fragmentShadingRateCount, reinterpret_cast( fragmentShadingRates.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getFragmentShadingRatesKHR" ); + VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() ); + if ( fragmentShadingRateCount < fragmentShadingRates.size() ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + } + return detail::createResultValueType( result, std::move( fragmentShadingRates ) ); + } + + // wrapper function for command vkGetPhysicalDeviceFragmentShadingRatesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFragmentShadingRatesKHR.html + template < + typename PhysicalDeviceFragmentShadingRateKHRAllocator, + typename Dispatch, + typename std::enable_if::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getFragmentShadingRatesKHR( PhysicalDeviceFragmentShadingRateKHRAllocator const & physicalDeviceFragmentShadingRateKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceFragmentShadingRatesKHR && + "Function requires " ); +# endif + + std::vector fragmentShadingRates( + physicalDeviceFragmentShadingRateKHRAllocator ); + uint32_t fragmentShadingRateCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceFragmentShadingRatesKHR( m_physicalDevice, &fragmentShadingRateCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && fragmentShadingRateCount ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + result = static_cast( d.vkGetPhysicalDeviceFragmentShadingRatesKHR( + m_physicalDevice, &fragmentShadingRateCount, reinterpret_cast( fragmentShadingRates.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getFragmentShadingRatesKHR" ); + VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() ); + if ( fragmentShadingRateCount < fragmentShadingRates.size() ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + } + return detail::createResultValueType( result, std::move( fragmentShadingRates ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetFragmentShadingRateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR( + Extent2D const * pFragmentSize, FragmentShadingRateCombinerOpKHR const combinerOps[2], Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetFragmentShadingRateKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pFragmentSize ), + reinterpret_cast( combinerOps ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetFragmentShadingRateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR( + Extent2D const & fragmentSize, FragmentShadingRateCombinerOpKHR const combinerOps[2], Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetFragmentShadingRateKHR && "Function requires " ); +# endif + + d.vkCmdSetFragmentShadingRateKHR( + m_commandBuffer, reinterpret_cast( &fragmentSize ), reinterpret_cast( combinerOps ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_dynamic_rendering_local_read === + + // wrapper function for command vkCmdSetRenderingAttachmentLocationsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocationsKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRenderingAttachmentLocationsKHR( RenderingAttachmentLocationInfo const * pLocationInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRenderingAttachmentLocationsKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pLocationInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetRenderingAttachmentLocationsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocationsKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRenderingAttachmentLocationsKHR( RenderingAttachmentLocationInfo const & locationInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetRenderingAttachmentLocationsKHR && + "Function requires or " ); +# endif + + d.vkCmdSetRenderingAttachmentLocationsKHR( m_commandBuffer, reinterpret_cast( &locationInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetRenderingInputAttachmentIndicesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndicesKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRenderingInputAttachmentIndicesKHR( RenderingInputAttachmentIndexInfo const * pInputAttachmentIndexInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRenderingInputAttachmentIndicesKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pInputAttachmentIndexInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetRenderingInputAttachmentIndicesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndicesKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRenderingInputAttachmentIndicesKHR( RenderingInputAttachmentIndexInfo const & inputAttachmentIndexInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetRenderingInputAttachmentIndicesKHR && + "Function requires or " ); +# endif + + d.vkCmdSetRenderingInputAttachmentIndicesKHR( m_commandBuffer, reinterpret_cast( &inputAttachmentIndexInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_buffer_device_address === + + // wrapper function for command vkGetBufferDeviceAddressEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressEXT.html + template ::type> + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressEXT( BufferDeviceAddressInfo const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetBufferDeviceAddressEXT( static_cast( m_device ), reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferDeviceAddressEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressEXT.html + template ::type> + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressEXT( BufferDeviceAddressInfo const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferDeviceAddressEXT && + "Function requires or or " ); +# endif + + VkDeviceAddress result = d.vkGetBufferDeviceAddressEXT( m_device, reinterpret_cast( &info ) ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_tooling_info === + + // wrapper function for command vkGetPhysicalDeviceToolPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getToolPropertiesEXT( + uint32_t * pToolCount, PhysicalDeviceToolProperties * pToolProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceToolPropertiesEXT( + static_cast( m_physicalDevice ), pToolCount, reinterpret_cast( pToolProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceToolPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getToolPropertiesEXT( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceToolPropertiesEXT && + "Function requires or " ); +# endif + + std::vector toolProperties; + uint32_t toolCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceToolPropertiesEXT( m_physicalDevice, &toolCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( + d.vkGetPhysicalDeviceToolPropertiesEXT( m_physicalDevice, &toolCount, reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolPropertiesEXT" ); + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + return detail::createResultValueType( result, std::move( toolProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceToolPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getToolPropertiesEXT( PhysicalDeviceToolPropertiesAllocator const & physicalDeviceToolPropertiesAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceToolPropertiesEXT && + "Function requires or " ); +# endif + + std::vector toolProperties( physicalDeviceToolPropertiesAllocator ); + uint32_t toolCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceToolPropertiesEXT( m_physicalDevice, &toolCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( + d.vkGetPhysicalDeviceToolPropertiesEXT( m_physicalDevice, &toolCount, reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getToolPropertiesEXT" ); + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + return detail::createResultValueType( result, std::move( toolProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_present_wait === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWaitForPresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresentKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForPresentKHR( SwapchainKHR swapchain, uint64_t presentId, uint64_t timeout, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkWaitForPresentKHR( static_cast( m_device ), static_cast( swapchain ), presentId, timeout ) ); + } +#else + // wrapper function for command vkWaitForPresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresentKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForPresentKHR( SwapchainKHR swapchain, uint64_t presentId, uint64_t timeout, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWaitForPresentKHR && "Function requires " ); +# endif + + Result result = static_cast( d.vkWaitForPresentKHR( m_device, static_cast( swapchain ), presentId, timeout ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::waitForPresentKHR", + { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitForPresentKHR", { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR } ); +# endif + + return static_cast( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_NV_cooperative_matrix === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getCooperativeMatrixPropertiesNV( + uint32_t * pPropertyCount, CooperativeMatrixPropertiesNV * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + static_cast( m_physicalDevice ), pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixPropertiesNV( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV && + "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesNV" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNVAllocator const & cooperativeMatrixPropertiesNVAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV && + "Function requires " ); +# endif + + std::vector properties( cooperativeMatrixPropertiesNVAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesNV" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_coverage_reduction_mode === + + // wrapper function for command vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV( + uint32_t * pCombinationCount, FramebufferMixedSamplesCombinationNV * pCombinations, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + static_cast( m_physicalDevice ), pCombinationCount, reinterpret_cast( pCombinations ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.html + template < + typename FramebufferMixedSamplesCombinationNVAllocator, + typename Dispatch, + typename std::enable_if::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV && + "Function requires " ); +# endif + + std::vector combinations; + uint32_t combinationCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( m_physicalDevice, &combinationCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && combinationCount ) + { + combinations.resize( combinationCount ); + result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + m_physicalDevice, &combinationCount, reinterpret_cast( combinations.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" ); + VULKAN_HPP_ASSERT( combinationCount <= combinations.size() ); + if ( combinationCount < combinations.size() ) + { + combinations.resize( combinationCount ); + } + return detail::createResultValueType( result, std::move( combinations ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.html + template < + typename FramebufferMixedSamplesCombinationNVAllocator, + typename Dispatch, + typename std::enable_if::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV( + FramebufferMixedSamplesCombinationNVAllocator const & framebufferMixedSamplesCombinationNVAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV && + "Function requires " ); +# endif + + std::vector combinations( + framebufferMixedSamplesCombinationNVAllocator ); + uint32_t combinationCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( m_physicalDevice, &combinationCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && combinationCount ) + { + combinations.resize( combinationCount ); + result = static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + m_physicalDevice, &combinationCount, reinterpret_cast( combinations.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" ); + VULKAN_HPP_ASSERT( combinationCount <= combinations.size() ); + if ( combinationCount < combinations.size() ) + { + combinations.resize( combinationCount ); + } + return detail::createResultValueType( result, std::move( combinations ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModes2EXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModes2EXT( + PhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, uint32_t * pPresentModeCount, PresentModeKHR * pPresentModes, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( static_cast( m_physicalDevice ), + reinterpret_cast( pSurfaceInfo ), + pPresentModeCount, + reinterpret_cast( pPresentModes ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModes2EXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfacePresentModes2EXT( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfacePresentModes2EXT && + "Function requires " ); +# endif + + std::vector presentModes; + uint32_t presentModeCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( + m_physicalDevice, reinterpret_cast( &surfaceInfo ), &presentModeCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &presentModeCount, + reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModes2EXT" ); + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + return detail::createResultValueType( result, std::move( presentModes ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModes2EXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfacePresentModes2EXT( + PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, PresentModeKHRAllocator const & presentModeKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceSurfacePresentModes2EXT && + "Function requires " ); +# endif + + std::vector presentModes( presentModeKHRAllocator ); + uint32_t presentModeCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( + m_physicalDevice, reinterpret_cast( &surfaceInfo ), &presentModeCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( m_physicalDevice, + reinterpret_cast( &surfaceInfo ), + &presentModeCount, + reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModes2EXT" ); + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + return detail::createResultValueType( result, std::move( presentModes ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireFullScreenExclusiveModeEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquireFullScreenExclusiveModeEXT( SwapchainKHR swapchain, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAcquireFullScreenExclusiveModeEXT( static_cast( m_device ), static_cast( swapchain ) ) ); + } +# else + // wrapper function for command vkAcquireFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireFullScreenExclusiveModeEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::acquireFullScreenExclusiveModeEXT( + SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAcquireFullScreenExclusiveModeEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkAcquireFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireFullScreenExclusiveModeEXT" ); + + return detail::createResultValueType( result ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseFullScreenExclusiveModeEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::releaseFullScreenExclusiveModeEXT( SwapchainKHR swapchain, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkReleaseFullScreenExclusiveModeEXT( static_cast( m_device ), static_cast( swapchain ) ) ); + } +# else + // wrapper function for command vkReleaseFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseFullScreenExclusiveModeEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::releaseFullScreenExclusiveModeEXT( + SwapchainKHR swapchain, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkReleaseFullScreenExclusiveModeEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkReleaseFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::releaseFullScreenExclusiveModeEXT" ); + + return detail::createResultValueType( result ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetDeviceGroupSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModes2EXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModes2EXT( + PhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, DeviceGroupPresentModeFlagsKHR * pModes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDeviceGroupSurfacePresentModes2EXT( static_cast( m_device ), + reinterpret_cast( pSurfaceInfo ), + reinterpret_cast( pModes ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceGroupSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModes2EXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getGroupSurfacePresentModes2EXT( + PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceGroupSurfacePresentModes2EXT && + "Function requires " ); +# endif + + DeviceGroupPresentModeFlagsKHR modes; + Result result = static_cast( d.vkGetDeviceGroupSurfacePresentModes2EXT( + m_device, reinterpret_cast( &surfaceInfo ), reinterpret_cast( &modes ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModes2EXT" ); + + return detail::createResultValueType( result, std::move( modes ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + + // wrapper function for command vkCreateHeadlessSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateHeadlessSurfaceEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createHeadlessSurfaceEXT( + HeadlessSurfaceCreateInfoEXT const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateHeadlessSurfaceEXT( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateHeadlessSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateHeadlessSurfaceEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createHeadlessSurfaceEXT( + HeadlessSurfaceCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateHeadlessSurfaceEXT && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateHeadlessSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createHeadlessSurfaceEXT" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateHeadlessSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateHeadlessSurfaceEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createHeadlessSurfaceEXTUnique( + HeadlessSurfaceCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateHeadlessSurfaceEXT && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateHeadlessSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createHeadlessSurfaceEXTUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_buffer_device_address === + + // wrapper function for command vkGetBufferDeviceAddressKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressKHR.html + template ::type> + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressKHR( BufferDeviceAddressInfo const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetBufferDeviceAddressKHR( static_cast( m_device ), reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferDeviceAddressKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressKHR.html + template ::type> + VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressKHR( BufferDeviceAddressInfo const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferDeviceAddressKHR && + "Function requires or or " ); +# endif + + VkDeviceAddress result = d.vkGetBufferDeviceAddressKHR( m_device, reinterpret_cast( &info ) ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddressKHR.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddressKHR( BufferDeviceAddressInfo const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetBufferOpaqueCaptureAddressKHR( static_cast( m_device ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddressKHR.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddressKHR( BufferDeviceAddressInfo const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferOpaqueCaptureAddressKHR && + "Function requires or " ); +# endif + + uint64_t result = d.vkGetBufferOpaqueCaptureAddressKHR( m_device, reinterpret_cast( &info ) ); + + return result; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddressKHR.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddressKHR( DeviceMemoryOpaqueCaptureAddressInfo const * pInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeviceMemoryOpaqueCaptureAddressKHR( static_cast( m_device ), + reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddressKHR.html + template ::type> + VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddressKHR( DeviceMemoryOpaqueCaptureAddressInfo const & info, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceMemoryOpaqueCaptureAddressKHR && + "Function requires or " ); +# endif + + uint64_t result = d.vkGetDeviceMemoryOpaqueCaptureAddressKHR( m_device, reinterpret_cast( &info ) ); + + return result; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_line_rasterization === + + // wrapper function for command vkCmdSetLineStippleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLineStippleEXT( static_cast( m_commandBuffer ), lineStippleFactor, lineStipplePattern ); + } + + //=== VK_EXT_host_query_reset === + + // wrapper function for command vkResetQueryPoolEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPoolEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::resetQueryPoolEXT( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkResetQueryPoolEXT( static_cast( m_device ), static_cast( queryPool ), firstQuery, queryCount ); + } + + //=== VK_EXT_extended_dynamic_state === + + // wrapper function for command vkCmdSetCullModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullModeEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCullModeEXT( CullModeFlags cullMode, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCullModeEXT( static_cast( m_commandBuffer ), static_cast( cullMode ) ); + } + + // wrapper function for command vkCmdSetFrontFaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFaceEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setFrontFaceEXT( FrontFace frontFace, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetFrontFaceEXT( static_cast( m_commandBuffer ), static_cast( frontFace ) ); + } + + // wrapper function for command vkCmdSetPrimitiveTopologyEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopologyEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopologyEXT( PrimitiveTopology primitiveTopology, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPrimitiveTopologyEXT( static_cast( m_commandBuffer ), static_cast( primitiveTopology ) ); + } + + // wrapper function for command vkCmdSetViewportWithCountEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCountEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT( uint32_t viewportCount, Viewport const * pViewports, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportWithCountEXT( static_cast( m_commandBuffer ), viewportCount, reinterpret_cast( pViewports ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewportWithCountEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCountEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT( ArrayProxy const & viewports, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetViewportWithCountEXT && + "Function requires or or " ); +# endif + + d.vkCmdSetViewportWithCountEXT( m_commandBuffer, viewports.size(), reinterpret_cast( viewports.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetScissorWithCountEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCountEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCountEXT( uint32_t scissorCount, Rect2D const * pScissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetScissorWithCountEXT( static_cast( m_commandBuffer ), scissorCount, reinterpret_cast( pScissors ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetScissorWithCountEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCountEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCountEXT( ArrayProxy const & scissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetScissorWithCountEXT && + "Function requires or or " ); +# endif + + d.vkCmdSetScissorWithCountEXT( m_commandBuffer, scissors.size(), reinterpret_cast( scissors.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindVertexBuffers2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2EXT( uint32_t firstBinding, + uint32_t bindingCount, + Buffer const * pBuffers, + DeviceSize const * pOffsets, + DeviceSize const * pSizes, + DeviceSize const * pStrides, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindVertexBuffers2EXT( static_cast( m_commandBuffer ), + firstBinding, + bindingCount, + reinterpret_cast( pBuffers ), + reinterpret_cast( pOffsets ), + reinterpret_cast( pSizes ), + reinterpret_cast( pStrides ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindVertexBuffers2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2EXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes, + ArrayProxy const & strides, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindVertexBuffers2EXT && + "Function requires or or " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); + VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != sizes.size()" ); + } + if ( !strides.empty() && buffers.size() != strides.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != strides.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBindVertexBuffers2EXT( m_commandBuffer, + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ), + reinterpret_cast( strides.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDepthTestEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnableEXT( Bool32 depthTestEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthTestEnableEXT( static_cast( m_commandBuffer ), static_cast( depthTestEnable ) ); + } + + // wrapper function for command vkCmdSetDepthWriteEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnableEXT( Bool32 depthWriteEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthWriteEnableEXT( static_cast( m_commandBuffer ), static_cast( depthWriteEnable ) ); + } + + // wrapper function for command vkCmdSetDepthCompareOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOpEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOpEXT( CompareOp depthCompareOp, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthCompareOpEXT( static_cast( m_commandBuffer ), static_cast( depthCompareOp ) ); + } + + // wrapper function for command vkCmdSetDepthBoundsTestEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnableEXT( Bool32 depthBoundsTestEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBoundsTestEnableEXT( static_cast( m_commandBuffer ), static_cast( depthBoundsTestEnable ) ); + } + + // wrapper function for command vkCmdSetStencilTestEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnableEXT( Bool32 stencilTestEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilTestEnableEXT( static_cast( m_commandBuffer ), static_cast( stencilTestEnable ) ); + } + + // wrapper function for command vkCmdSetStencilOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOpEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setStencilOpEXT( + StencilFaceFlags faceMask, StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetStencilOpEXT( static_cast( m_commandBuffer ), + static_cast( faceMask ), + static_cast( failOp ), + static_cast( passOp ), + static_cast( depthFailOp ), + static_cast( compareOp ) ); + } + + //=== VK_KHR_deferred_host_operations === + + // wrapper function for command vkCreateDeferredOperationKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDeferredOperationKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDeferredOperationKHR( + AllocationCallbacks const * pAllocator, DeferredOperationKHR * pDeferredOperation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDeferredOperationKHR( static_cast( m_device ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pDeferredOperation ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDeferredOperationKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDeferredOperationKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createDeferredOperationKHR( + Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDeferredOperationKHR && "Function requires " ); +# endif + + DeferredOperationKHR deferredOperation; + Result result = static_cast( d.vkCreateDeferredOperationKHR( + m_device, reinterpret_cast( allocator.get() ), reinterpret_cast( &deferredOperation ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDeferredOperationKHR" ); + + return detail::createResultValueType( result, std::move( deferredOperation ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDeferredOperationKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDeferredOperationKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDeferredOperationKHRUnique( + Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDeferredOperationKHR && "Function requires " ); +# endif + + DeferredOperationKHR deferredOperation; + Result result = static_cast( d.vkCreateDeferredOperationKHR( + m_device, reinterpret_cast( allocator.get() ), reinterpret_cast( &deferredOperation ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDeferredOperationKHRUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( deferredOperation, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDeferredOperationKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDeferredOperationKHR( DeferredOperationKHR operation, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDeferredOperationKHR( + static_cast( m_device ), static_cast( operation ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDeferredOperationKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDeferredOperationKHR( + DeferredOperationKHR operation, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDeferredOperationKHR && "Function requires " ); +# endif + + d.vkDestroyDeferredOperationKHR( + m_device, static_cast( operation ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDeferredOperationKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( DeferredOperationKHR operation, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDeferredOperationKHR( + static_cast( m_device ), static_cast( operation ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDeferredOperationKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( DeferredOperationKHR operation, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDeferredOperationKHR && "Function requires " ); +# endif + + d.vkDestroyDeferredOperationKHR( + m_device, static_cast( operation ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeferredOperationMaxConcurrencyKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationMaxConcurrencyKHR.html + template ::type> + VULKAN_HPP_INLINE uint32_t Device::getDeferredOperationMaxConcurrencyKHR( DeferredOperationKHR operation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return d.vkGetDeferredOperationMaxConcurrencyKHR( static_cast( m_device ), static_cast( operation ) ); + } + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeferredOperationResultKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationResultKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getDeferredOperationResultKHR( DeferredOperationKHR operation, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDeferredOperationResultKHR( static_cast( m_device ), static_cast( operation ) ) ); + } +#else + // wrapper function for command vkGetDeferredOperationResultKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationResultKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getDeferredOperationResultKHR( DeferredOperationKHR operation, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeferredOperationResultKHR && "Function requires " ); +# endif + + Result result = static_cast( d.vkGetDeferredOperationResultKHR( m_device, static_cast( operation ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getDeferredOperationResultKHR", { Result::eSuccess, Result::eNotReady } ); + + return static_cast( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDeferredOperationJoinKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeferredOperationJoinKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::deferredOperationJoinKHR( DeferredOperationKHR operation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkDeferredOperationJoinKHR( static_cast( m_device ), static_cast( operation ) ) ); + } +#else + // wrapper function for command vkDeferredOperationJoinKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeferredOperationJoinKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::deferredOperationJoinKHR( DeferredOperationKHR operation, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDeferredOperationJoinKHR && "Function requires " ); +# endif + + Result result = static_cast( d.vkDeferredOperationJoinKHR( m_device, static_cast( operation ) ) ); + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::deferredOperationJoinKHR", { Result::eSuccess, Result::eThreadDoneKHR, Result::eThreadIdleKHR } ); + + return static_cast( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_pipeline_executable_properties === + + // wrapper function for command vkGetPipelineExecutablePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutablePropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineExecutablePropertiesKHR( + PipelineInfoKHR const * pPipelineInfo, uint32_t * pExecutableCount, PipelineExecutablePropertiesKHR * pProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPipelineExecutablePropertiesKHR( static_cast( m_device ), + reinterpret_cast( pPipelineInfo ), + pExecutableCount, + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineExecutablePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutablePropertiesKHR.html + template < + typename PipelineExecutablePropertiesKHRAllocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getPipelineExecutablePropertiesKHR( PipelineInfoKHR const & pipelineInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineExecutablePropertiesKHR && + "Function requires " ); +# endif + + std::vector properties; + uint32_t executableCount; + Result result; + do + { + result = static_cast( + d.vkGetPipelineExecutablePropertiesKHR( m_device, reinterpret_cast( &pipelineInfo ), &executableCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && executableCount ) + { + properties.resize( executableCount ); + result = static_cast( d.vkGetPipelineExecutablePropertiesKHR( m_device, + reinterpret_cast( &pipelineInfo ), + &executableCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutablePropertiesKHR" ); + VULKAN_HPP_ASSERT( executableCount <= properties.size() ); + if ( executableCount < properties.size() ) + { + properties.resize( executableCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPipelineExecutablePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutablePropertiesKHR.html + template < + typename PipelineExecutablePropertiesKHRAllocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getPipelineExecutablePropertiesKHR( + PipelineInfoKHR const & pipelineInfo, PipelineExecutablePropertiesKHRAllocator const & pipelineExecutablePropertiesKHRAllocator, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineExecutablePropertiesKHR && + "Function requires " ); +# endif + + std::vector properties( pipelineExecutablePropertiesKHRAllocator ); + uint32_t executableCount; + Result result; + do + { + result = static_cast( + d.vkGetPipelineExecutablePropertiesKHR( m_device, reinterpret_cast( &pipelineInfo ), &executableCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && executableCount ) + { + properties.resize( executableCount ); + result = static_cast( d.vkGetPipelineExecutablePropertiesKHR( m_device, + reinterpret_cast( &pipelineInfo ), + &executableCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutablePropertiesKHR" ); + VULKAN_HPP_ASSERT( executableCount <= properties.size() ); + if ( executableCount < properties.size() ) + { + properties.resize( executableCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineExecutableStatisticsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableStatisticsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineExecutableStatisticsKHR( + PipelineExecutableInfoKHR const * pExecutableInfo, uint32_t * pStatisticCount, PipelineExecutableStatisticKHR * pStatistics, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPipelineExecutableStatisticsKHR( static_cast( m_device ), + reinterpret_cast( pExecutableInfo ), + pStatisticCount, + reinterpret_cast( pStatistics ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineExecutableStatisticsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableStatisticsKHR.html + template < + typename PipelineExecutableStatisticKHRAllocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getPipelineExecutableStatisticsKHR( PipelineExecutableInfoKHR const & executableInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineExecutableStatisticsKHR && + "Function requires " ); +# endif + + std::vector statistics; + uint32_t statisticCount; + Result result; + do + { + result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( + m_device, reinterpret_cast( &executableInfo ), &statisticCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && statisticCount ) + { + statistics.resize( statisticCount ); + result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( m_device, + reinterpret_cast( &executableInfo ), + &statisticCount, + reinterpret_cast( statistics.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableStatisticsKHR" ); + VULKAN_HPP_ASSERT( statisticCount <= statistics.size() ); + if ( statisticCount < statistics.size() ) + { + statistics.resize( statisticCount ); + } + return detail::createResultValueType( result, std::move( statistics ) ); + } + + // wrapper function for command vkGetPipelineExecutableStatisticsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableStatisticsKHR.html + template < + typename PipelineExecutableStatisticKHRAllocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getPipelineExecutableStatisticsKHR( PipelineExecutableInfoKHR const & executableInfo, + PipelineExecutableStatisticKHRAllocator const & pipelineExecutableStatisticKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineExecutableStatisticsKHR && + "Function requires " ); +# endif + + std::vector statistics( pipelineExecutableStatisticKHRAllocator ); + uint32_t statisticCount; + Result result; + do + { + result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( + m_device, reinterpret_cast( &executableInfo ), &statisticCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && statisticCount ) + { + statistics.resize( statisticCount ); + result = static_cast( d.vkGetPipelineExecutableStatisticsKHR( m_device, + reinterpret_cast( &executableInfo ), + &statisticCount, + reinterpret_cast( statistics.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineExecutableStatisticsKHR" ); + VULKAN_HPP_ASSERT( statisticCount <= statistics.size() ); + if ( statisticCount < statistics.size() ) + { + statistics.resize( statisticCount ); + } + return detail::createResultValueType( result, std::move( statistics ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineExecutableInternalRepresentationsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableInternalRepresentationsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineExecutableInternalRepresentationsKHR( + PipelineExecutableInfoKHR const * pExecutableInfo, + uint32_t * pInternalRepresentationCount, + PipelineExecutableInternalRepresentationKHR * pInternalRepresentations, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPipelineExecutableInternalRepresentationsKHR( static_cast( m_device ), + reinterpret_cast( pExecutableInfo ), + pInternalRepresentationCount, + reinterpret_cast( pInternalRepresentations ) ) ); + } + + //=== VK_EXT_host_image_copy === + + // wrapper function for command vkCopyMemoryToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImageEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToImageEXT( CopyMemoryToImageInfo const * pCopyMemoryToImageInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCopyMemoryToImageEXT( static_cast( m_device ), reinterpret_cast( pCopyMemoryToImageInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMemoryToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImageEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::copyMemoryToImageEXT( + CopyMemoryToImageInfo const & copyMemoryToImageInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyMemoryToImageEXT && "Function requires or " ); +# endif + + Result result = static_cast( d.vkCopyMemoryToImageEXT( m_device, reinterpret_cast( ©MemoryToImageInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToImageEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyImageToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemoryEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyImageToMemoryEXT( CopyImageToMemoryInfo const * pCopyImageToMemoryInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCopyImageToMemoryEXT( static_cast( m_device ), reinterpret_cast( pCopyImageToMemoryInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyImageToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemoryEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::copyImageToMemoryEXT( + CopyImageToMemoryInfo const & copyImageToMemoryInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyImageToMemoryEXT && "Function requires or " ); +# endif + + Result result = static_cast( d.vkCopyImageToMemoryEXT( m_device, reinterpret_cast( ©ImageToMemoryInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyImageToMemoryEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyImageToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImageEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyImageToImageEXT( CopyImageToImageInfo const * pCopyImageToImageInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkCopyImageToImageEXT( static_cast( m_device ), reinterpret_cast( pCopyImageToImageInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyImageToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImageEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::copyImageToImageEXT( + CopyImageToImageInfo const & copyImageToImageInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyImageToImageEXT && "Function requires or " ); +# endif + + Result result = static_cast( d.vkCopyImageToImageEXT( m_device, reinterpret_cast( ©ImageToImageInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyImageToImageEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkTransitionImageLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayoutEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::transitionImageLayoutEXT( + uint32_t transitionCount, HostImageLayoutTransitionInfo const * pTransitions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkTransitionImageLayoutEXT( + static_cast( m_device ), transitionCount, reinterpret_cast( pTransitions ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkTransitionImageLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayoutEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::transitionImageLayoutEXT( + ArrayProxy const & transitions, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkTransitionImageLayoutEXT && "Function requires or " ); +# endif + + Result result = static_cast( + d.vkTransitionImageLayoutEXT( m_device, transitions.size(), reinterpret_cast( transitions.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::transitionImageLayoutEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSubresourceLayout2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSubresourceLayout2EXT( + Image image, ImageSubresource2 const * pSubresource, SubresourceLayout2 * pLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSubresourceLayout2EXT( static_cast( m_device ), + static_cast( image ), + reinterpret_cast( pSubresource ), + reinterpret_cast( pLayout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSubresourceLayout2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Device::getImageSubresourceLayout2EXT( + Image image, ImageSubresource2 const & subresource, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( + d.vkGetImageSubresourceLayout2EXT && + "Function requires or or or " ); +# endif + + SubresourceLayout2 layout; + d.vkGetImageSubresourceLayout2EXT( m_device, + static_cast( image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkGetImageSubresourceLayout2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageSubresourceLayout2EXT( + Image image, ImageSubresource2 const & subresource, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( + d.vkGetImageSubresourceLayout2EXT && + "Function requires or or or " ); +# endif + + StructureChain structureChain; + SubresourceLayout2 & layout = structureChain.template get(); + d.vkGetImageSubresourceLayout2EXT( m_device, + static_cast( image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_map_memory2 === + + // wrapper function for command vkMapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::mapMemory2KHR( MemoryMapInfo const * pMemoryMapInfo, void ** ppData, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkMapMemory2KHR( static_cast( m_device ), reinterpret_cast( pMemoryMapInfo ), ppData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkMapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::mapMemory2KHR( MemoryMapInfo const & memoryMapInfo, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkMapMemory2KHR && "Function requires or " ); +# endif + + void * pData; + Result result = static_cast( d.vkMapMemory2KHR( m_device, reinterpret_cast( &memoryMapInfo ), &pData ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::mapMemory2KHR" ); + + return detail::createResultValueType( result, std::move( pData ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUnmapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::unmapMemory2KHR( MemoryUnmapInfo const * pMemoryUnmapInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkUnmapMemory2KHR( static_cast( m_device ), reinterpret_cast( pMemoryUnmapInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUnmapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2KHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::unmapMemory2KHR( + MemoryUnmapInfo const & memoryUnmapInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkUnmapMemory2KHR && "Function requires or " ); +# endif + + Result result = static_cast( d.vkUnmapMemory2KHR( m_device, reinterpret_cast( &memoryUnmapInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::unmapMemory2KHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_swapchain_maintenance1 === + + // wrapper function for command vkReleaseSwapchainImagesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::releaseSwapchainImagesEXT( ReleaseSwapchainImagesInfoKHR const * pReleaseInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkReleaseSwapchainImagesEXT( static_cast( m_device ), reinterpret_cast( pReleaseInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseSwapchainImagesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::releaseSwapchainImagesEXT( + ReleaseSwapchainImagesInfoKHR const & releaseInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkReleaseSwapchainImagesEXT && + "Function requires or " ); +# endif + + Result result = static_cast( d.vkReleaseSwapchainImagesEXT( m_device, reinterpret_cast( &releaseInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::releaseSwapchainImagesEXT" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_device_generated_commands === + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html + template ::type> + VULKAN_HPP_INLINE void Device::getGeneratedCommandsMemoryRequirementsNV( + GeneratedCommandsMemoryRequirementsInfoNV const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetGeneratedCommandsMemoryRequirementsNV( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getGeneratedCommandsMemoryRequirementsNV( + GeneratedCommandsMemoryRequirementsInfoNV const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetGeneratedCommandsMemoryRequirementsNV && + "Function requires " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetGeneratedCommandsMemoryRequirementsNV( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getGeneratedCommandsMemoryRequirementsNV( + GeneratedCommandsMemoryRequirementsInfoNV const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetGeneratedCommandsMemoryRequirementsNV && + "Function requires " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetGeneratedCommandsMemoryRequirementsNV( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPreprocessGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV( GeneratedCommandsInfoNV const * pGeneratedCommandsInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPreprocessGeneratedCommandsNV( static_cast( m_commandBuffer ), + reinterpret_cast( pGeneratedCommandsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPreprocessGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV( GeneratedCommandsInfoNV const & generatedCommandsInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPreprocessGeneratedCommandsNV && "Function requires " ); +# endif + + d.vkCmdPreprocessGeneratedCommandsNV( m_commandBuffer, reinterpret_cast( &generatedCommandsInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdExecuteGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV( + Bool32 isPreprocessed, GeneratedCommandsInfoNV const * pGeneratedCommandsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdExecuteGeneratedCommandsNV( static_cast( m_commandBuffer ), + static_cast( isPreprocessed ), + reinterpret_cast( pGeneratedCommandsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdExecuteGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV( + Bool32 isPreprocessed, GeneratedCommandsInfoNV const & generatedCommandsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdExecuteGeneratedCommandsNV && "Function requires " ); +# endif + + d.vkCmdExecuteGeneratedCommandsNV( + m_commandBuffer, static_cast( isPreprocessed ), reinterpret_cast( &generatedCommandsInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindPipelineShaderGroupNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipelineShaderGroupNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindPipelineShaderGroupNV( + PipelineBindPoint pipelineBindPoint, Pipeline pipeline, uint32_t groupIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindPipelineShaderGroupNV( + static_cast( m_commandBuffer ), static_cast( pipelineBindPoint ), static_cast( pipeline ), groupIndex ); + } + + // wrapper function for command vkCreateIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNV( IndirectCommandsLayoutCreateInfoNV const * pCreateInfo, + AllocationCallbacks const * pAllocator, + IndirectCommandsLayoutNV * pIndirectCommandsLayout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateIndirectCommandsLayoutNV( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pIndirectCommandsLayout ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createIndirectCommandsLayoutNV( + IndirectCommandsLayoutCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIndirectCommandsLayoutNV && "Function requires " ); +# endif + + IndirectCommandsLayoutNV indirectCommandsLayout; + Result result = static_cast( d.vkCreateIndirectCommandsLayoutNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &indirectCommandsLayout ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutNV" ); + + return detail::createResultValueType( result, std::move( indirectCommandsLayout ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createIndirectCommandsLayoutNVUnique( + IndirectCommandsLayoutCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIndirectCommandsLayoutNV && "Function requires " ); +# endif + + IndirectCommandsLayoutNV indirectCommandsLayout; + Result result = static_cast( d.vkCreateIndirectCommandsLayoutNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &indirectCommandsLayout ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutNVUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( indirectCommandsLayout, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNV( + IndirectCommandsLayoutNV indirectCommandsLayout, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectCommandsLayoutNV( static_cast( m_device ), + static_cast( indirectCommandsLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNV( + IndirectCommandsLayoutNV indirectCommandsLayout, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyIndirectCommandsLayoutNV && "Function requires " ); +# endif + + d.vkDestroyIndirectCommandsLayoutNV( + m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( IndirectCommandsLayoutNV indirectCommandsLayout, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectCommandsLayoutNV( static_cast( m_device ), + static_cast( indirectCommandsLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( IndirectCommandsLayoutNV indirectCommandsLayout, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyIndirectCommandsLayoutNV && "Function requires " ); +# endif + + d.vkDestroyIndirectCommandsLayoutNV( + m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_depth_bias_control === + + // wrapper function for command vkCmdSetDepthBias2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthBias2EXT( DepthBiasInfoEXT const * pDepthBiasInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBias2EXT( static_cast( m_commandBuffer ), reinterpret_cast( pDepthBiasInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetDepthBias2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthBias2EXT( DepthBiasInfoEXT const & depthBiasInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetDepthBias2EXT && "Function requires " ); +# endif + + d.vkCmdSetDepthBias2EXT( m_commandBuffer, reinterpret_cast( &depthBiasInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_acquire_drm_display === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireDrmDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::acquireDrmDisplayEXT( int32_t drmFd, DisplayKHR display, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAcquireDrmDisplayEXT( static_cast( m_physicalDevice ), drmFd, static_cast( display ) ) ); + } +#else + // wrapper function for command vkAcquireDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireDrmDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::acquireDrmDisplayEXT( + int32_t drmFd, DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAcquireDrmDisplayEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkAcquireDrmDisplayEXT( m_physicalDevice, drmFd, static_cast( display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireDrmDisplayEXT" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDrmDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDrmDisplayEXT( + int32_t drmFd, uint32_t connectorId, DisplayKHR * display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetDrmDisplayEXT( static_cast( m_physicalDevice ), drmFd, connectorId, reinterpret_cast( display ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDrmDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getDrmDisplayEXT( + int32_t drmFd, uint32_t connectorId, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDrmDisplayEXT && "Function requires " ); +# endif + + DisplayKHR display; + Result result = static_cast( d.vkGetDrmDisplayEXT( m_physicalDevice, drmFd, connectorId, reinterpret_cast( &display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDrmDisplayEXT" ); + + return detail::createResultValueType( result, std::move( display ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkGetDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDrmDisplayEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDrmDisplayEXTUnique( + int32_t drmFd, uint32_t connectorId, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDrmDisplayEXT && "Function requires " ); +# endif + + DisplayKHR display; + Result result = static_cast( d.vkGetDrmDisplayEXT( m_physicalDevice, drmFd, connectorId, reinterpret_cast( &display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDrmDisplayEXTUnique" ); + + return detail::createResultValueType( result, UniqueHandle( display, detail::ObjectRelease( *this, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_private_data === + + // wrapper function for command vkCreatePrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlotEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createPrivateDataSlotEXT( + PrivateDataSlotCreateInfo const * pCreateInfo, AllocationCallbacks const * pAllocator, PrivateDataSlot * pPrivateDataSlot, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreatePrivateDataSlotEXT( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPrivateDataSlot ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreatePrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlotEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createPrivateDataSlotEXT( + PrivateDataSlotCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePrivateDataSlotEXT && "Function requires or " ); +# endif + + PrivateDataSlot privateDataSlot; + Result result = static_cast( d.vkCreatePrivateDataSlotEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &privateDataSlot ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createPrivateDataSlotEXT" ); + + return detail::createResultValueType( result, std::move( privateDataSlot ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreatePrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlotEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createPrivateDataSlotEXTUnique( + PrivateDataSlotCreateInfo const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePrivateDataSlotEXT && "Function requires or " ); +# endif + + PrivateDataSlot privateDataSlot; + Result result = static_cast( d.vkCreatePrivateDataSlotEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &privateDataSlot ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createPrivateDataSlotEXTUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( privateDataSlot, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlotEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPrivateDataSlotEXT( PrivateDataSlot privateDataSlot, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPrivateDataSlotEXT( + static_cast( m_device ), static_cast( privateDataSlot ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlotEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPrivateDataSlotEXT( PrivateDataSlot privateDataSlot, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPrivateDataSlotEXT && "Function requires or " ); +# endif + + d.vkDestroyPrivateDataSlotEXT( + m_device, static_cast( privateDataSlot ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setPrivateDataEXT( + ObjectType objectType_, uint64_t objectHandle, PrivateDataSlot privateDataSlot, uint64_t data, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSetPrivateDataEXT( + static_cast( m_device ), static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), data ) ); + } +#else + // wrapper function for command vkSetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setPrivateDataEXT( + ObjectType objectType_, uint64_t objectHandle, PrivateDataSlot privateDataSlot, uint64_t data, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetPrivateDataEXT && "Function requires or " ); +# endif + + Result result = static_cast( + d.vkSetPrivateDataEXT( m_device, static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), data ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateDataEXT" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateDataEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getPrivateDataEXT( + ObjectType objectType_, uint64_t objectHandle, PrivateDataSlot privateDataSlot, uint64_t * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPrivateDataEXT( + static_cast( m_device ), static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getPrivateDataEXT( + ObjectType objectType_, uint64_t objectHandle, PrivateDataSlot privateDataSlot, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPrivateDataEXT && "Function requires or " ); +# endif + + uint64_t data; + d.vkGetPrivateDataEXT( m_device, static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), &data ); + + return data; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_video_encode_queue === + + // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR( + PhysicalDeviceVideoEncodeQualityLevelInfoKHR const * pQualityLevelInfo, VideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( pQualityLevelInfo ), + reinterpret_cast( pQualityLevelProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & qualityLevelInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR && + "Function requires " ); +# endif + + VideoEncodeQualityLevelPropertiesKHR qualityLevelProperties; + Result result = static_cast( + d.vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( m_physicalDevice, + reinterpret_cast( &qualityLevelInfo ), + reinterpret_cast( &qualityLevelProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR" ); + + return detail::createResultValueType( result, std::move( qualityLevelProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR( + PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & qualityLevelInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR && + "Function requires " ); +# endif + + StructureChain structureChain; + VideoEncodeQualityLevelPropertiesKHR & qualityLevelProperties = structureChain.template get(); + Result result = static_cast( + d.vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( m_physicalDevice, + reinterpret_cast( &qualityLevelInfo ), + reinterpret_cast( &qualityLevelProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR" ); + + return detail::createResultValueType( result, std::move( structureChain ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getEncodedVideoSessionParametersKHR( + VideoEncodeSessionParametersGetInfoKHR const * pVideoSessionParametersInfo, + VideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo, + size_t * pDataSize, + void * pData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetEncodedVideoSessionParametersKHR( static_cast( m_device ), + reinterpret_cast( pVideoSessionParametersInfo ), + reinterpret_cast( pFeedbackInfo ), + pDataSize, + pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>>::type + Device::getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetEncodedVideoSessionParametersKHR && "Function requires " ); +# endif + + std::pair> data_; + VideoEncodeSessionParametersFeedbackInfoKHR & feedbackInfo = data_.first; + std::vector & data = data_.second; + size_t dataSize; + Result result; + do + { + result = static_cast( + d.vkGetEncodedVideoSessionParametersKHR( m_device, + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( + d.vkGetEncodedVideoSessionParametersKHR( m_device, + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getEncodedVideoSessionParametersKHR" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>>::type + Device::getEncodedVideoSessionParametersKHR( + VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetEncodedVideoSessionParametersKHR && "Function requires " ); +# endif + + std::pair> data_( + std::piecewise_construct, std::forward_as_tuple(), std::forward_as_tuple( uint8_tAllocator ) ); + VideoEncodeSessionParametersFeedbackInfoKHR & feedbackInfo = data_.first; + std::vector & data = data_.second; + size_t dataSize; + Result result; + do + { + result = static_cast( + d.vkGetEncodedVideoSessionParametersKHR( m_device, + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( + d.vkGetEncodedVideoSessionParametersKHR( m_device, + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getEncodedVideoSessionParametersKHR" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, std::vector>>::type + Device::getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetEncodedVideoSessionParametersKHR && "Function requires " ); +# endif + + std::pair, std::vector> data_; + VideoEncodeSessionParametersFeedbackInfoKHR & feedbackInfo = data_.first.template get(); + std::vector & data = data_.second; + size_t dataSize; + Result result; + do + { + result = static_cast( + d.vkGetEncodedVideoSessionParametersKHR( m_device, + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( + d.vkGetEncodedVideoSessionParametersKHR( m_device, + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getEncodedVideoSessionParametersKHR" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, std::vector>>::type + Device::getEncodedVideoSessionParametersKHR( + VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetEncodedVideoSessionParametersKHR && "Function requires " ); +# endif + + std::pair, std::vector> data_( + std::piecewise_construct, std::forward_as_tuple(), std::forward_as_tuple( uint8_tAllocator ) ); + VideoEncodeSessionParametersFeedbackInfoKHR & feedbackInfo = data_.first.template get(); + std::vector & data = data_.second; + size_t dataSize; + Result result; + do + { + result = static_cast( + d.vkGetEncodedVideoSessionParametersKHR( m_device, + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( + d.vkGetEncodedVideoSessionParametersKHR( m_device, + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getEncodedVideoSessionParametersKHR" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEncodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEncodeVideoKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::encodeVideoKHR( VideoEncodeInfoKHR const * pEncodeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEncodeVideoKHR( static_cast( m_commandBuffer ), reinterpret_cast( pEncodeInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEncodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEncodeVideoKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::encodeVideoKHR( VideoEncodeInfoKHR const & encodeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdEncodeVideoKHR && "Function requires " ); +# endif + + d.vkCmdEncodeVideoKHR( m_commandBuffer, reinterpret_cast( &encodeInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + // wrapper function for command vkCreateCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaModuleNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createCudaModuleNV( + CudaModuleCreateInfoNV const * pCreateInfo, AllocationCallbacks const * pAllocator, CudaModuleNV * pModule, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateCudaModuleNV( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pModule ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaModuleNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createCudaModuleNV( + CudaModuleCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateCudaModuleNV && "Function requires " ); +# endif + + CudaModuleNV module; + Result result = static_cast( d.vkCreateCudaModuleNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &module ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createCudaModuleNV" ); + + return detail::createResultValueType( result, std::move( module ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaModuleNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createCudaModuleNVUnique( + CudaModuleCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateCudaModuleNV && "Function requires " ); +# endif + + CudaModuleNV module; + Result result = static_cast( d.vkCreateCudaModuleNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &module ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createCudaModuleNVUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( module, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetCudaModuleCacheNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCudaModuleCacheNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getCudaModuleCacheNV( CudaModuleNV module, size_t * pCacheSize, void * pCacheData, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetCudaModuleCacheNV( static_cast( m_device ), static_cast( module ), pCacheSize, pCacheData ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetCudaModuleCacheNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCudaModuleCacheNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getCudaModuleCacheNV( + CudaModuleNV module, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetCudaModuleCacheNV && "Function requires " ); +# endif + + std::vector cacheData; + size_t cacheSize; + Result result; + do + { + result = static_cast( d.vkGetCudaModuleCacheNV( m_device, static_cast( module ), &cacheSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && cacheSize ) + { + cacheData.resize( cacheSize ); + result = static_cast( + d.vkGetCudaModuleCacheNV( m_device, static_cast( module ), &cacheSize, reinterpret_cast( cacheData.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCudaModuleCacheNV" ); + VULKAN_HPP_ASSERT( cacheSize <= cacheData.size() ); + if ( cacheSize < cacheData.size() ) + { + cacheData.resize( cacheSize ); + } + return detail::createResultValueType( result, std::move( cacheData ) ); + } + + // wrapper function for command vkGetCudaModuleCacheNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCudaModuleCacheNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getCudaModuleCacheNV( + CudaModuleNV module, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetCudaModuleCacheNV && "Function requires " ); +# endif + + std::vector cacheData( uint8_tAllocator ); + size_t cacheSize; + Result result; + do + { + result = static_cast( d.vkGetCudaModuleCacheNV( m_device, static_cast( module ), &cacheSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && cacheSize ) + { + cacheData.resize( cacheSize ); + result = static_cast( + d.vkGetCudaModuleCacheNV( m_device, static_cast( module ), &cacheSize, reinterpret_cast( cacheData.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCudaModuleCacheNV" ); + VULKAN_HPP_ASSERT( cacheSize <= cacheData.size() ); + if ( cacheSize < cacheData.size() ) + { + cacheData.resize( cacheSize ); + } + return detail::createResultValueType( result, std::move( cacheData ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaFunctionNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createCudaFunctionNV( + CudaFunctionCreateInfoNV const * pCreateInfo, AllocationCallbacks const * pAllocator, CudaFunctionNV * pFunction, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateCudaFunctionNV( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pFunction ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaFunctionNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createCudaFunctionNV( + CudaFunctionCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateCudaFunctionNV && "Function requires " ); +# endif + + CudaFunctionNV function; + Result result = static_cast( d.vkCreateCudaFunctionNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &function ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createCudaFunctionNV" ); + + return detail::createResultValueType( result, std::move( function ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaFunctionNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createCudaFunctionNVUnique( + CudaFunctionCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateCudaFunctionNV && "Function requires " ); +# endif + + CudaFunctionNV function; + Result result = static_cast( d.vkCreateCudaFunctionNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &function ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createCudaFunctionNVUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( function, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaModuleNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyCudaModuleNV( CudaModuleNV module, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCudaModuleNV( + static_cast( m_device ), static_cast( module ), reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaModuleNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyCudaModuleNV( CudaModuleNV module, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyCudaModuleNV && "Function requires " ); +# endif + + d.vkDestroyCudaModuleNV( m_device, static_cast( module ), reinterpret_cast( allocator.get() ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaModuleNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( CudaModuleNV module, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCudaModuleNV( + static_cast( m_device ), static_cast( module ), reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaModuleNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( CudaModuleNV module, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyCudaModuleNV && "Function requires " ); +# endif + + d.vkDestroyCudaModuleNV( m_device, static_cast( module ), reinterpret_cast( allocator.get() ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaFunctionNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyCudaFunctionNV( CudaFunctionNV function, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCudaFunctionNV( + static_cast( m_device ), static_cast( function ), reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaFunctionNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyCudaFunctionNV( CudaFunctionNV function, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyCudaFunctionNV && "Function requires " ); +# endif + + d.vkDestroyCudaFunctionNV( m_device, static_cast( function ), reinterpret_cast( allocator.get() ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaFunctionNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( CudaFunctionNV function, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyCudaFunctionNV( + static_cast( m_device ), static_cast( function ), reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaFunctionNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( CudaFunctionNV function, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyCudaFunctionNV && "Function requires " ); +# endif + + d.vkDestroyCudaFunctionNV( m_device, static_cast( function ), reinterpret_cast( allocator.get() ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCudaLaunchKernelNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCudaLaunchKernelNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::cudaLaunchKernelNV( CudaLaunchInfoNV const * pLaunchInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCudaLaunchKernelNV( static_cast( m_commandBuffer ), reinterpret_cast( pLaunchInfo ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCudaLaunchKernelNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCudaLaunchKernelNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::cudaLaunchKernelNV( CudaLaunchInfoNV const & launchInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCudaLaunchKernelNV && "Function requires " ); +# endif + + d.vkCmdCudaLaunchKernelNV( m_commandBuffer, reinterpret_cast( &launchInfo ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + + // wrapper function for command vkCmdDispatchTileQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchTileQCOM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchTileQCOM( DispatchTileInfoQCOM const * pDispatchTileInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchTileQCOM( static_cast( m_commandBuffer ), reinterpret_cast( pDispatchTileInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDispatchTileQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchTileQCOM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchTileQCOM( DispatchTileInfoQCOM const & dispatchTileInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDispatchTileQCOM && "Function requires " ); +# endif + + d.vkCmdDispatchTileQCOM( m_commandBuffer, reinterpret_cast( &dispatchTileInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginPerTileExecutionQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginPerTileExecutionQCOM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginPerTileExecutionQCOM( PerTileBeginInfoQCOM const * pPerTileBeginInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginPerTileExecutionQCOM( static_cast( m_commandBuffer ), reinterpret_cast( pPerTileBeginInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginPerTileExecutionQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginPerTileExecutionQCOM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginPerTileExecutionQCOM( PerTileBeginInfoQCOM const & perTileBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginPerTileExecutionQCOM && "Function requires " ); +# endif + + d.vkCmdBeginPerTileExecutionQCOM( m_commandBuffer, reinterpret_cast( &perTileBeginInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndPerTileExecutionQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndPerTileExecutionQCOM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endPerTileExecutionQCOM( PerTileEndInfoQCOM const * pPerTileEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndPerTileExecutionQCOM( static_cast( m_commandBuffer ), reinterpret_cast( pPerTileEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndPerTileExecutionQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndPerTileExecutionQCOM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endPerTileExecutionQCOM( PerTileEndInfoQCOM const & perTileEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdEndPerTileExecutionQCOM && "Function requires " ); +# endif + + d.vkCmdEndPerTileExecutionQCOM( m_commandBuffer, reinterpret_cast( &perTileEndInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + + // wrapper function for command vkExportMetalObjectsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkExportMetalObjectsEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::exportMetalObjectsEXT( ExportMetalObjectsInfoEXT * pMetalObjectsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkExportMetalObjectsEXT( static_cast( m_device ), reinterpret_cast( pMetalObjectsInfo ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkExportMetalObjectsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkExportMetalObjectsEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::exportMetalObjectsEXT( ExportMetalObjectsInfoEXT & metalObjectsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkExportMetalObjectsEXT && "Function requires " ); +# endif + + d.vkExportMetalObjectsEXT( m_device, reinterpret_cast( &metalObjectsInfo ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_synchronization2 === + + // wrapper function for command vkCmdSetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR( Event event, DependencyInfo const * pDependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetEvent2KHR( + static_cast( m_commandBuffer ), static_cast( event ), reinterpret_cast( pDependencyInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR( Event event, DependencyInfo const & dependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetEvent2KHR && "Function requires or " ); +# endif + + d.vkCmdSetEvent2KHR( m_commandBuffer, static_cast( event ), reinterpret_cast( &dependencyInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdResetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::resetEvent2KHR( Event event, PipelineStageFlags2 stageMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResetEvent2KHR( static_cast( m_commandBuffer ), static_cast( event ), static_cast( stageMask ) ); + } + + // wrapper function for command vkCmdWaitEvents2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::waitEvents2KHR( + uint32_t eventCount, Event const * pEvents, DependencyInfo const * pDependencyInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWaitEvents2KHR( static_cast( m_commandBuffer ), + eventCount, + reinterpret_cast( pEvents ), + reinterpret_cast( pDependencyInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWaitEvents2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::waitEvents2KHR( + ArrayProxy const & events, ArrayProxy const & dependencyInfos, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdWaitEvents2KHR && "Function requires or " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() ); +# else + if ( events.size() != dependencyInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::waitEvents2KHR: events.size() != dependencyInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdWaitEvents2KHR( m_commandBuffer, + events.size(), + reinterpret_cast( events.data() ), + reinterpret_cast( dependencyInfos.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPipelineBarrier2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2KHR( DependencyInfo const * pDependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPipelineBarrier2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pDependencyInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPipelineBarrier2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2KHR( DependencyInfo const & dependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPipelineBarrier2KHR && "Function requires or " ); +# endif + + d.vkCmdPipelineBarrier2KHR( m_commandBuffer, reinterpret_cast( &dependencyInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteTimestamp2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2KHR( PipelineStageFlags2 stage, QueryPool queryPool, uint32_t query, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteTimestamp2KHR( + static_cast( m_commandBuffer ), static_cast( stage ), static_cast( queryPool ), query ); + } + + // wrapper function for command vkQueueSubmit2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::submit2KHR( uint32_t submitCount, SubmitInfo2 const * pSubmits, Fence fence, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkQueueSubmit2KHR( static_cast( m_queue ), submitCount, reinterpret_cast( pSubmits ), static_cast( fence ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueSubmit2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2KHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::submit2KHR( + ArrayProxy const & submits, Fence fence, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkQueueSubmit2KHR && "Function requires or " ); +# endif + + Result result = static_cast( + d.vkQueueSubmit2KHR( m_queue, submits.size(), reinterpret_cast( submits.data() ), static_cast( fence ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2KHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_descriptor_buffer === + + // wrapper function for command vkGetDescriptorSetLayoutSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSizeEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSizeEXT( DescriptorSetLayout layout, DeviceSize * pLayoutSizeInBytes, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDescriptorSetLayoutSizeEXT( + static_cast( m_device ), static_cast( layout ), reinterpret_cast( pLayoutSizeInBytes ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetLayoutSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSizeEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize Device::getDescriptorSetLayoutSizeEXT( DescriptorSetLayout layout, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDescriptorSetLayoutSizeEXT && "Function requires " ); +# endif + + DeviceSize layoutSizeInBytes; + d.vkGetDescriptorSetLayoutSizeEXT( m_device, static_cast( layout ), reinterpret_cast( &layoutSizeInBytes ) ); + + return layoutSizeInBytes; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDescriptorSetLayoutBindingOffsetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutBindingOffsetEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutBindingOffsetEXT( + DescriptorSetLayout layout, uint32_t binding, DeviceSize * pOffset, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDescriptorSetLayoutBindingOffsetEXT( + static_cast( m_device ), static_cast( layout ), binding, reinterpret_cast( pOffset ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetLayoutBindingOffsetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutBindingOffsetEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize Device::getDescriptorSetLayoutBindingOffsetEXT( + DescriptorSetLayout layout, uint32_t binding, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDescriptorSetLayoutBindingOffsetEXT && + "Function requires " ); +# endif + + DeviceSize offset; + d.vkGetDescriptorSetLayoutBindingOffsetEXT( m_device, static_cast( layout ), binding, reinterpret_cast( &offset ) ); + + return offset; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getDescriptorEXT( DescriptorGetInfoEXT const * pDescriptorInfo, size_t dataSize, void * pDescriptor, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDescriptorEXT( static_cast( m_device ), reinterpret_cast( pDescriptorInfo ), dataSize, pDescriptor ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getDescriptorEXT( DescriptorGetInfoEXT const & descriptorInfo, size_t dataSize, void * pDescriptor, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDescriptorEXT && "Function requires " ); +# endif + + d.vkGetDescriptorEXT( m_device, reinterpret_cast( &descriptorInfo ), dataSize, pDescriptor ); + } + + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorType Device::getDescriptorEXT( DescriptorGetInfoEXT const & descriptorInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDescriptorEXT && "Function requires " ); +# endif + + DescriptorType descriptor; + d.vkGetDescriptorEXT( + m_device, reinterpret_cast( &descriptorInfo ), sizeof( DescriptorType ), reinterpret_cast( &descriptor ) ); + + return descriptor; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindDescriptorBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBuffersEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBuffersEXT( + uint32_t bufferCount, DescriptorBufferBindingInfoEXT const * pBindingInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindDescriptorBuffersEXT( + static_cast( m_commandBuffer ), bufferCount, reinterpret_cast( pBindingInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindDescriptorBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBuffersEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBuffersEXT( ArrayProxy const & bindingInfos, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindDescriptorBuffersEXT && "Function requires " ); +# endif + + d.vkCmdBindDescriptorBuffersEXT( m_commandBuffer, bindingInfos.size(), reinterpret_cast( bindingInfos.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDescriptorBufferOffsetsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsetsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDescriptorBufferOffsetsEXT( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t firstSet, + uint32_t setCount, + uint32_t const * pBufferIndices, + DeviceSize const * pOffsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDescriptorBufferOffsetsEXT( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( layout ), + firstSet, + setCount, + pBufferIndices, + reinterpret_cast( pOffsets ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetDescriptorBufferOffsetsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsetsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDescriptorBufferOffsetsEXT( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & bufferIndices, + ArrayProxy const & offsets, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetDescriptorBufferOffsetsEXT && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( bufferIndices.size() == offsets.size() ); +# else + if ( bufferIndices.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setDescriptorBufferOffsetsEXT: bufferIndices.size() != offsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdSetDescriptorBufferOffsetsEXT( m_commandBuffer, + static_cast( pipelineBindPoint ), + static_cast( layout ), + firstSet, + bufferIndices.size(), + bufferIndices.data(), + reinterpret_cast( offsets.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplersEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBufferEmbeddedSamplersEXT( + PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindDescriptorBufferEmbeddedSamplersEXT( + static_cast( m_commandBuffer ), static_cast( pipelineBindPoint ), static_cast( layout ), set ); + } + + // wrapper function for command vkGetBufferOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureDescriptorDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getBufferOpaqueCaptureDescriptorDataEXT( + BufferCaptureDescriptorDataInfoEXT const * pInfo, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetBufferOpaqueCaptureDescriptorDataEXT( + static_cast( m_device ), reinterpret_cast( pInfo ), pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureDescriptorDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getBufferOpaqueCaptureDescriptorDataEXT( + BufferCaptureDescriptorDataInfoEXT const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferOpaqueCaptureDescriptorDataEXT && + "Function requires " ); +# endif + + DataType data; + Result result = static_cast( + d.vkGetBufferOpaqueCaptureDescriptorDataEXT( m_device, reinterpret_cast( &info ), &data ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getBufferOpaqueCaptureDescriptorDataEXT" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDescriptorDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getImageOpaqueCaptureDescriptorDataEXT( + ImageCaptureDescriptorDataInfoEXT const * pInfo, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetImageOpaqueCaptureDescriptorDataEXT( + static_cast( m_device ), reinterpret_cast( pInfo ), pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDescriptorDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getImageOpaqueCaptureDescriptorDataEXT( + ImageCaptureDescriptorDataInfoEXT const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageOpaqueCaptureDescriptorDataEXT && + "Function requires " ); +# endif + + DataType data; + Result result = static_cast( + d.vkGetImageOpaqueCaptureDescriptorDataEXT( m_device, reinterpret_cast( &info ), &data ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getImageOpaqueCaptureDescriptorDataEXT" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageViewOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewOpaqueCaptureDescriptorDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getImageViewOpaqueCaptureDescriptorDataEXT( + ImageViewCaptureDescriptorDataInfoEXT const * pInfo, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetImageViewOpaqueCaptureDescriptorDataEXT( + static_cast( m_device ), reinterpret_cast( pInfo ), pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageViewOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewOpaqueCaptureDescriptorDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getImageViewOpaqueCaptureDescriptorDataEXT( + ImageViewCaptureDescriptorDataInfoEXT const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetImageViewOpaqueCaptureDescriptorDataEXT && + "Function requires " ); +# endif + + DataType data; + Result result = static_cast( + d.vkGetImageViewOpaqueCaptureDescriptorDataEXT( m_device, reinterpret_cast( &info ), &data ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getImageViewOpaqueCaptureDescriptorDataEXT" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSamplerOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSamplerOpaqueCaptureDescriptorDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSamplerOpaqueCaptureDescriptorDataEXT( + SamplerCaptureDescriptorDataInfoEXT const * pInfo, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSamplerOpaqueCaptureDescriptorDataEXT( + static_cast( m_device ), reinterpret_cast( pInfo ), pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSamplerOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSamplerOpaqueCaptureDescriptorDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getSamplerOpaqueCaptureDescriptorDataEXT( + SamplerCaptureDescriptorDataInfoEXT const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSamplerOpaqueCaptureDescriptorDataEXT && + "Function requires " ); +# endif + + DataType data; + Result result = static_cast( + d.vkGetSamplerOpaqueCaptureDescriptorDataEXT( m_device, reinterpret_cast( &info ), &data ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSamplerOpaqueCaptureDescriptorDataEXT" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getAccelerationStructureOpaqueCaptureDescriptorDataEXT( + AccelerationStructureCaptureDescriptorDataInfoEXT const * pInfo, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( + static_cast( m_device ), reinterpret_cast( pInfo ), pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getAccelerationStructureOpaqueCaptureDescriptorDataEXT( + AccelerationStructureCaptureDescriptorDataInfoEXT const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT && + "Function requires " ); +# endif + + DataType data; + Result result = static_cast( d.vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( + m_device, reinterpret_cast( &info ), &data ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureOpaqueCaptureDescriptorDataEXT" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_device_address_commands === + + // wrapper function for command vkCmdBindIndexBuffer3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer3KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer3KHR( BindIndexBuffer3InfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindIndexBuffer3KHR( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindIndexBuffer3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer3KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer3KHR( BindIndexBuffer3InfoKHR const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindIndexBuffer3KHR && "Function requires " ); +# endif + + d.vkCmdBindIndexBuffer3KHR( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindVertexBuffers3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers3KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers3KHR( + uint32_t firstBinding, uint32_t bindingCount, BindVertexBuffer3InfoKHR const * pBindingInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindVertexBuffers3KHR( + static_cast( m_commandBuffer ), firstBinding, bindingCount, reinterpret_cast( pBindingInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindVertexBuffers3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers3KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers3KHR( + uint32_t firstBinding, ArrayProxy const & bindingInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindVertexBuffers3KHR && "Function requires " ); +# endif + + d.vkCmdBindVertexBuffers3KHR( + m_commandBuffer, firstBinding, bindingInfos.size(), reinterpret_cast( bindingInfos.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirect2KHR( DrawIndirect2InfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirect2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirect2KHR( DrawIndirect2InfoKHR const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDrawIndirect2KHR && "Function requires " ); +# endif + + d.vkCmdDrawIndirect2KHR( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndexedIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect2KHR( DrawIndirect2InfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexedIndirect2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawIndexedIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect2KHR( DrawIndirect2InfoKHR const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDrawIndexedIndirect2KHR && "Function requires " ); +# endif + + d.vkCmdDrawIndexedIndirect2KHR( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDispatchIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect2KHR( DispatchIndirect2InfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchIndirect2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDispatchIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect2KHR( DispatchIndirect2InfoKHR const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDispatchIndirect2KHR && "Function requires " ); +# endif + + d.vkCmdDispatchIndirect2KHR( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryKHR( CopyDeviceMemoryInfoKHR const * pCopyMemoryInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMemoryKHR( static_cast( m_commandBuffer ), reinterpret_cast( pCopyMemoryInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryKHR( Optional copyMemoryInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyMemoryKHR && "Function requires " ); +# endif + + d.vkCmdCopyMemoryKHR( m_commandBuffer, reinterpret_cast( copyMemoryInfo.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMemoryToImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToImageKHR( CopyDeviceMemoryImageInfoKHR const * pCopyMemoryInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMemoryToImageKHR( static_cast( m_commandBuffer ), reinterpret_cast( pCopyMemoryInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryToImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToImageKHR( Optional copyMemoryInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyMemoryToImageKHR && "Function requires " ); +# endif + + d.vkCmdCopyMemoryToImageKHR( m_commandBuffer, reinterpret_cast( copyMemoryInfo.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImageToMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImageToMemoryKHR( CopyDeviceMemoryImageInfoKHR const * pCopyMemoryInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImageToMemoryKHR( static_cast( m_commandBuffer ), reinterpret_cast( pCopyMemoryInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImageToMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImageToMemoryKHR( Optional copyMemoryInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyImageToMemoryKHR && "Function requires " ); +# endif + + d.vkCmdCopyImageToMemoryKHR( m_commandBuffer, reinterpret_cast( copyMemoryInfo.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdUpdateMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::updateMemoryKHR( + DeviceAddressRangeKHR const * pDstRange, AddressCommandFlagsKHR dstFlags, DeviceSize dataSize, void const * pData, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdUpdateMemoryKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pDstRange ), + static_cast( dstFlags ), + static_cast( dataSize ), + pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdUpdateMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::updateMemoryKHR( + DeviceAddressRangeKHR const & dstRange, AddressCommandFlagsKHR dstFlags, ArrayProxy const & data, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdUpdateMemoryKHR && "Function requires " ); +# endif + + d.vkCmdUpdateMemoryKHR( m_commandBuffer, + reinterpret_cast( &dstRange ), + static_cast( dstFlags ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdFillMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::fillMemoryKHR( + DeviceAddressRangeKHR const * pDstRange, AddressCommandFlagsKHR dstFlags, uint32_t data, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdFillMemoryKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pDstRange ), + static_cast( dstFlags ), + data ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdFillMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::fillMemoryKHR( + DeviceAddressRangeKHR const & dstRange, AddressCommandFlagsKHR dstFlags, uint32_t data, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdFillMemoryKHR && "Function requires " ); +# endif + + d.vkCmdFillMemoryKHR( + m_commandBuffer, reinterpret_cast( &dstRange ), static_cast( dstFlags ), data ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyQueryPoolResultsToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResultsToMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResultsToMemoryKHR( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + StridedDeviceAddressRangeKHR const * pDstRange, + AddressCommandFlagsKHR dstFlags, + QueryResultFlags queryResultFlags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyQueryPoolResultsToMemoryKHR( static_cast( m_commandBuffer ), + static_cast( queryPool ), + firstQuery, + queryCount, + reinterpret_cast( pDstRange ), + static_cast( dstFlags ), + static_cast( queryResultFlags ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyQueryPoolResultsToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResultsToMemoryKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResultsToMemoryKHR( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + StridedDeviceAddressRangeKHR const & dstRange, + AddressCommandFlagsKHR dstFlags, + QueryResultFlags queryResultFlags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyQueryPoolResultsToMemoryKHR && "Function requires " ); +# endif + + d.vkCmdCopyQueryPoolResultsToMemoryKHR( m_commandBuffer, + static_cast( queryPool ), + firstQuery, + queryCount, + reinterpret_cast( &dstRange ), + static_cast( dstFlags ), + static_cast( queryResultFlags ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndirectCount2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount2KHR( DrawIndirectCount2InfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirectCount2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawIndirectCount2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount2KHR( DrawIndirectCount2InfoKHR const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDrawIndirectCount2KHR && "Function requires " ); +# endif + + d.vkCmdDrawIndirectCount2KHR( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndexedIndirectCount2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount2KHR( DrawIndirectCount2InfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndexedIndirectCount2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawIndexedIndirectCount2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount2KHR( DrawIndirectCount2InfoKHR const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDrawIndexedIndirectCount2KHR && "Function requires " ); +# endif + + d.vkCmdDrawIndexedIndirectCount2KHR( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginConditionalRendering2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRendering2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRendering2EXT( ConditionalRenderingBeginInfo2EXT const * pConditionalRenderingBegin, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginConditionalRendering2EXT( static_cast( m_commandBuffer ), + reinterpret_cast( pConditionalRenderingBegin ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginConditionalRendering2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRendering2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRendering2EXT( ConditionalRenderingBeginInfo2EXT const & conditionalRenderingBegin, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginConditionalRendering2EXT && "Function requires " ); +# endif + + d.vkCmdBeginConditionalRendering2EXT( m_commandBuffer, reinterpret_cast( &conditionalRenderingBegin ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindTransformFeedbackBuffers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffers2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffers2EXT( + uint32_t firstBinding, uint32_t bindingCount, BindTransformFeedbackBuffer2InfoEXT const * pBindingInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindTransformFeedbackBuffers2EXT( static_cast( m_commandBuffer ), + firstBinding, + bindingCount, + reinterpret_cast( pBindingInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindTransformFeedbackBuffers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffers2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffers2EXT( + uint32_t firstBinding, ArrayProxy const & bindingInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindTransformFeedbackBuffers2EXT && + "Function requires " ); +# endif + + d.vkCmdBindTransformFeedbackBuffers2EXT( + m_commandBuffer, firstBinding, bindingInfos.size(), reinterpret_cast( bindingInfos.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedback2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedback2EXT( + uint32_t firstCounterRange, uint32_t counterRangeCount, BindTransformFeedbackBuffer2InfoEXT const * pCounterInfos, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginTransformFeedback2EXT( static_cast( m_commandBuffer ), + firstCounterRange, + counterRangeCount, + reinterpret_cast( pCounterInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedback2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedback2EXT( + uint32_t firstCounterRange, ArrayProxy const & counterInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginTransformFeedback2EXT && "Function requires " ); +# endif + + d.vkCmdBeginTransformFeedback2EXT( + m_commandBuffer, firstCounterRange, counterInfos.size(), reinterpret_cast( counterInfos.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedback2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedback2EXT( + uint32_t firstCounterRange, uint32_t counterRangeCount, BindTransformFeedbackBuffer2InfoEXT const * pCounterInfos, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndTransformFeedback2EXT( static_cast( m_commandBuffer ), + firstCounterRange, + counterRangeCount, + reinterpret_cast( pCounterInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedback2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedback2EXT( + uint32_t firstCounterRange, ArrayProxy const & counterInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdEndTransformFeedback2EXT && "Function requires " ); +# endif + + d.vkCmdEndTransformFeedback2EXT( + m_commandBuffer, firstCounterRange, counterInfos.size(), reinterpret_cast( counterInfos.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndirectByteCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCount2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCount2EXT( uint32_t instanceCount, + uint32_t firstInstance, + BindTransformFeedbackBuffer2InfoEXT const * pCounterInfo, + uint32_t counterOffset, + uint32_t vertexStride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawIndirectByteCount2EXT( static_cast( m_commandBuffer ), + instanceCount, + firstInstance, + reinterpret_cast( pCounterInfo ), + counterOffset, + vertexStride ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawIndirectByteCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCount2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCount2EXT( uint32_t instanceCount, + uint32_t firstInstance, + BindTransformFeedbackBuffer2InfoEXT const & counterInfo, + uint32_t counterOffset, + uint32_t vertexStride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDrawIndirectByteCount2EXT && "Function requires " ); +# endif + + d.vkCmdDrawIndirectByteCount2EXT( m_commandBuffer, + instanceCount, + firstInstance, + reinterpret_cast( &counterInfo ), + counterOffset, + vertexStride ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawMeshTasksIndirect2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirect2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirect2EXT( DrawIndirect2InfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksIndirect2EXT( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawMeshTasksIndirect2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirect2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirect2EXT( DrawIndirect2InfoKHR const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDrawMeshTasksIndirect2EXT && "Function requires " ); +# endif + + d.vkCmdDrawMeshTasksIndirect2EXT( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawMeshTasksIndirectCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCount2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCount2EXT( DrawIndirectCount2InfoKHR const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksIndirectCount2EXT( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawMeshTasksIndirectCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCount2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCount2EXT( DrawIndirectCount2InfoKHR const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDrawMeshTasksIndirectCount2EXT && "Function requires " ); +# endif + + d.vkCmdDrawMeshTasksIndirectCount2EXT( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteMarkerToMemoryAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMarkerToMemoryAMD.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeMarkerToMemoryAMD( MemoryMarkerInfoAMD const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteMarkerToMemoryAMD( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWriteMarkerToMemoryAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMarkerToMemoryAMD.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeMarkerToMemoryAMD( MemoryMarkerInfoAMD const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdWriteMarkerToMemoryAMD && "Function requires " ); +# endif + + d.vkCmdWriteMarkerToMemoryAMD( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateAccelerationStructure2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructure2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createAccelerationStructure2KHR( AccelerationStructureCreateInfo2KHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + AccelerationStructureKHR * pAccelerationStructure, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateAccelerationStructure2KHR( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pAccelerationStructure ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateAccelerationStructure2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructure2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createAccelerationStructure2KHR( + AccelerationStructureCreateInfo2KHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateAccelerationStructure2KHR && "Function requires " ); +# endif + + AccelerationStructureKHR accelerationStructure; + Result result = static_cast( d.vkCreateAccelerationStructure2KHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &accelerationStructure ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructure2KHR" ); + + return detail::createResultValueType( result, std::move( accelerationStructure ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateAccelerationStructure2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructure2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createAccelerationStructure2KHRUnique( + AccelerationStructureCreateInfo2KHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateAccelerationStructure2KHR && "Function requires " ); +# endif + + AccelerationStructureKHR accelerationStructure; + Result result = static_cast( d.vkCreateAccelerationStructure2KHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &accelerationStructure ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructure2KHRUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( accelerationStructure, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_fragment_shading_rate_enums === + + // wrapper function for command vkCmdSetFragmentShadingRateEnumNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateEnumNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateEnumNV( + FragmentShadingRateNV shadingRate, FragmentShadingRateCombinerOpKHR const combinerOps[2], Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetFragmentShadingRateEnumNV( static_cast( m_commandBuffer ), + static_cast( shadingRate ), + reinterpret_cast( combinerOps ) ); + } + + //=== VK_EXT_mesh_shader === + + // wrapper function for command vkCmdDrawMeshTasksEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksEXT( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksEXT( static_cast( m_commandBuffer ), groupCountX, groupCountY, groupCountZ ); + } + + // wrapper function for command vkCmdDrawMeshTasksIndirectEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectEXT( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksIndirectEXT( + static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + // wrapper function for command vkCmdDrawMeshTasksIndirectCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountEXT( + Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMeshTasksIndirectCountEXT( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_KHR_copy_commands2 === + + // wrapper function for command vkCmdCopyBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR( CopyBufferInfo2 const * pCopyBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBuffer2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pCopyBufferInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR( CopyBufferInfo2 const & copyBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyBuffer2KHR && "Function requires or " ); +# endif + + d.vkCmdCopyBuffer2KHR( m_commandBuffer, reinterpret_cast( ©BufferInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR( CopyImageInfo2 const * pCopyImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImage2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pCopyImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR( CopyImageInfo2 const & copyImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyImage2KHR && "Function requires or " ); +# endif + + d.vkCmdCopyImage2KHR( m_commandBuffer, reinterpret_cast( ©ImageInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyBufferToImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2KHR( CopyBufferToImageInfo2 const * pCopyBufferToImageInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyBufferToImage2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( pCopyBufferToImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBufferToImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2KHR( CopyBufferToImageInfo2 const & copyBufferToImageInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyBufferToImage2KHR && "Function requires or " ); +# endif + + d.vkCmdCopyBufferToImage2KHR( m_commandBuffer, reinterpret_cast( ©BufferToImageInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImageToBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2KHR( CopyImageToBufferInfo2 const * pCopyImageToBufferInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyImageToBuffer2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( pCopyImageToBufferInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImageToBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2KHR( CopyImageToBufferInfo2 const & copyImageToBufferInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyImageToBuffer2KHR && "Function requires or " ); +# endif + + d.vkCmdCopyImageToBuffer2KHR( m_commandBuffer, reinterpret_cast( ©ImageToBufferInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBlitImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR( BlitImageInfo2 const * pBlitImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBlitImage2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pBlitImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBlitImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR( BlitImageInfo2 const & blitImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBlitImage2KHR && "Function requires or " ); +# endif + + d.vkCmdBlitImage2KHR( m_commandBuffer, reinterpret_cast( &blitImageInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdResolveImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::resolveImage2KHR( ResolveImageInfo2 const * pResolveImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdResolveImage2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pResolveImageInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdResolveImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::resolveImage2KHR( ResolveImageInfo2 const & resolveImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdResolveImage2KHR && "Function requires or " ); +# endif + + d.vkCmdResolveImage2KHR( m_commandBuffer, reinterpret_cast( &resolveImageInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_device_fault === + + // wrapper function for command vkGetDeviceFaultInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultInfoEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFaultInfoEXT( + DeviceFaultCountsEXT * pFaultCounts, DeviceFaultInfoEXT * pFaultInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDeviceFaultInfoEXT( + static_cast( m_device ), reinterpret_cast( pFaultCounts ), reinterpret_cast( pFaultInfo ) ) ); + } + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireWinrtDisplayNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::acquireWinrtDisplayNV( DisplayKHR display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkAcquireWinrtDisplayNV( static_cast( m_physicalDevice ), static_cast( display ) ) ); + } +# else + // wrapper function for command vkAcquireWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireWinrtDisplayNV.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::acquireWinrtDisplayNV( + DisplayKHR display, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAcquireWinrtDisplayNV && "Function requires " ); +# endif + + Result result = static_cast( d.vkAcquireWinrtDisplayNV( m_physicalDevice, static_cast( display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireWinrtDisplayNV" ); + + return detail::createResultValueType( result ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetWinrtDisplayNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getWinrtDisplayNV( uint32_t deviceRelativeId, DisplayKHR * pDisplay, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetWinrtDisplayNV( static_cast( m_physicalDevice ), deviceRelativeId, reinterpret_cast( pDisplay ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetWinrtDisplayNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getWinrtDisplayNV( uint32_t deviceRelativeId, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetWinrtDisplayNV && "Function requires " ); +# endif + + DisplayKHR display; + Result result = static_cast( d.vkGetWinrtDisplayNV( m_physicalDevice, deviceRelativeId, reinterpret_cast( &display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getWinrtDisplayNV" ); + + return detail::createResultValueType( result, std::move( display ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkGetWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetWinrtDisplayNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getWinrtDisplayNVUnique( + uint32_t deviceRelativeId, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetWinrtDisplayNV && "Function requires " ); +# endif + + DisplayKHR display; + Result result = static_cast( d.vkGetWinrtDisplayNV( m_physicalDevice, deviceRelativeId, reinterpret_cast( &display ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getWinrtDisplayNVUnique" ); + + return detail::createResultValueType( result, UniqueHandle( display, detail::ObjectRelease( *this, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + // wrapper function for command vkCreateDirectFBSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDirectFBSurfaceEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createDirectFBSurfaceEXT( + DirectFBSurfaceCreateInfoEXT const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDirectFBSurfaceEXT( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDirectFBSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDirectFBSurfaceEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createDirectFBSurfaceEXT( + DirectFBSurfaceCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDirectFBSurfaceEXT && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateDirectFBSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDirectFBSurfaceEXT" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDirectFBSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDirectFBSurfaceEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createDirectFBSurfaceEXTUnique( + DirectFBSurfaceCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDirectFBSurfaceEXT && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateDirectFBSurfaceEXT( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDirectFBSurfaceEXTUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceDirectFBPresentationSupportEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDirectFBPresentationSupportEXT.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, IDirectFB * dfb, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceDirectFBPresentationSupportEXT( static_cast( m_physicalDevice ), queueFamilyIndex, dfb ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceDirectFBPresentationSupportEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDirectFBPresentationSupportEXT.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, IDirectFB & dfb, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceDirectFBPresentationSupportEXT && + "Function requires " ); +# endif + + VkBool32 result = d.vkGetPhysicalDeviceDirectFBPresentationSupportEXT( m_physicalDevice, queueFamilyIndex, &dfb ); + + return static_cast( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_vertex_input_dynamic_state === + + // wrapper function for command vkCmdSetVertexInputEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetVertexInputEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setVertexInputEXT( uint32_t vertexBindingDescriptionCount, + VertexInputBindingDescription2EXT const * pVertexBindingDescriptions, + uint32_t vertexAttributeDescriptionCount, + VertexInputAttributeDescription2EXT const * pVertexAttributeDescriptions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetVertexInputEXT( static_cast( m_commandBuffer ), + vertexBindingDescriptionCount, + reinterpret_cast( pVertexBindingDescriptions ), + vertexAttributeDescriptionCount, + reinterpret_cast( pVertexAttributeDescriptions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetVertexInputEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetVertexInputEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setVertexInputEXT( ArrayProxy const & vertexBindingDescriptions, + ArrayProxy const & vertexAttributeDescriptions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetVertexInputEXT && "Function requires or " ); +# endif + + d.vkCmdSetVertexInputEXT( m_commandBuffer, + vertexBindingDescriptions.size(), + reinterpret_cast( vertexBindingDescriptions.data() ), + vertexAttributeDescriptions.size(), + reinterpret_cast( vertexAttributeDescriptions.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + + // wrapper function for command vkGetMemoryZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandleFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryZirconHandleFUCHSIA( + MemoryGetZirconHandleInfoFUCHSIA const * pGetZirconHandleInfo, zx_handle_t * pZirconHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryZirconHandleFUCHSIA( + static_cast( m_device ), reinterpret_cast( pGetZirconHandleInfo ), pZirconHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandleFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryZirconHandleFUCHSIA( + MemoryGetZirconHandleInfoFUCHSIA const & getZirconHandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryZirconHandleFUCHSIA && "Function requires " ); +# endif + + zx_handle_t zirconHandle; + Result result = static_cast( + d.vkGetMemoryZirconHandleFUCHSIA( m_device, reinterpret_cast( &getZirconHandleInfo ), &zirconHandle ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandleFUCHSIA" ); + + return detail::createResultValueType( result, std::move( zirconHandle ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryZirconHandlePropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandlePropertiesFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryZirconHandlePropertiesFUCHSIA( ExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + MemoryZirconHandlePropertiesFUCHSIA * + pMemoryZirconHandleProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetMemoryZirconHandlePropertiesFUCHSIA( static_cast( m_device ), + static_cast( handleType ), + zirconHandle, + reinterpret_cast( pMemoryZirconHandleProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryZirconHandlePropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandlePropertiesFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryZirconHandlePropertiesFUCHSIA( + ExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryZirconHandlePropertiesFUCHSIA && + "Function requires " ); +# endif + + MemoryZirconHandlePropertiesFUCHSIA memoryZirconHandleProperties; + Result result = static_cast( + d.vkGetMemoryZirconHandlePropertiesFUCHSIA( m_device, + static_cast( handleType ), + zirconHandle, + reinterpret_cast( &memoryZirconHandleProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryZirconHandlePropertiesFUCHSIA" ); + + return detail::createResultValueType( result, std::move( memoryZirconHandleProperties ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + + // wrapper function for command vkImportSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreZirconHandleFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importSemaphoreZirconHandleFUCHSIA( + ImportSemaphoreZirconHandleInfoFUCHSIA const * pImportSemaphoreZirconHandleInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkImportSemaphoreZirconHandleFUCHSIA( + static_cast( m_device ), reinterpret_cast( pImportSemaphoreZirconHandleInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkImportSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreZirconHandleFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::importSemaphoreZirconHandleFUCHSIA( + ImportSemaphoreZirconHandleInfoFUCHSIA const & importSemaphoreZirconHandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkImportSemaphoreZirconHandleFUCHSIA && "Function requires " ); +# endif + + Result result = static_cast( d.vkImportSemaphoreZirconHandleFUCHSIA( + m_device, reinterpret_cast( &importSemaphoreZirconHandleInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreZirconHandleFUCHSIA" ); + + return detail::createResultValueType( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreZirconHandleFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreZirconHandleFUCHSIA( + SemaphoreGetZirconHandleInfoFUCHSIA const * pGetZirconHandleInfo, zx_handle_t * pZirconHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetSemaphoreZirconHandleFUCHSIA( + static_cast( m_device ), reinterpret_cast( pGetZirconHandleInfo ), pZirconHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreZirconHandleFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getSemaphoreZirconHandleFUCHSIA( + SemaphoreGetZirconHandleInfoFUCHSIA const & getZirconHandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetSemaphoreZirconHandleFUCHSIA && "Function requires " ); +# endif + + zx_handle_t zirconHandle; + Result result = static_cast( + d.vkGetSemaphoreZirconHandleFUCHSIA( m_device, reinterpret_cast( &getZirconHandleInfo ), &zirconHandle ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreZirconHandleFUCHSIA" ); + + return detail::createResultValueType( result, std::move( zirconHandle ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + // wrapper function for command vkCreateBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferCollectionFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createBufferCollectionFUCHSIA( + BufferCollectionCreateInfoFUCHSIA const * pCreateInfo, AllocationCallbacks const * pAllocator, BufferCollectionFUCHSIA * pCollection, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateBufferCollectionFUCHSIA( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pCollection ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferCollectionFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createBufferCollectionFUCHSIA( + BufferCollectionCreateInfoFUCHSIA const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateBufferCollectionFUCHSIA && "Function requires " ); +# endif + + BufferCollectionFUCHSIA collection; + Result result = static_cast( d.vkCreateBufferCollectionFUCHSIA( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &collection ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferCollectionFUCHSIA" ); + + return detail::createResultValueType( result, std::move( collection ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferCollectionFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createBufferCollectionFUCHSIAUnique( + BufferCollectionCreateInfoFUCHSIA const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateBufferCollectionFUCHSIA && "Function requires " ); +# endif + + BufferCollectionFUCHSIA collection; + Result result = static_cast( d.vkCreateBufferCollectionFUCHSIA( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &collection ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferCollectionFUCHSIAUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( collection, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSetBufferCollectionImageConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionImageConstraintsFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setBufferCollectionImageConstraintsFUCHSIA( + BufferCollectionFUCHSIA collection, ImageConstraintsInfoFUCHSIA const * pImageConstraintsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkSetBufferCollectionImageConstraintsFUCHSIA( static_cast( m_device ), + static_cast( collection ), + reinterpret_cast( pImageConstraintsInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetBufferCollectionImageConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionImageConstraintsFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setBufferCollectionImageConstraintsFUCHSIA( + BufferCollectionFUCHSIA collection, ImageConstraintsInfoFUCHSIA const & imageConstraintsInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetBufferCollectionImageConstraintsFUCHSIA && + "Function requires " ); +# endif + + Result result = static_cast( d.vkSetBufferCollectionImageConstraintsFUCHSIA( + m_device, static_cast( collection ), reinterpret_cast( &imageConstraintsInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setBufferCollectionImageConstraintsFUCHSIA" ); + + return detail::createResultValueType( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSetBufferCollectionBufferConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionBufferConstraintsFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setBufferCollectionBufferConstraintsFUCHSIA( + BufferCollectionFUCHSIA collection, BufferConstraintsInfoFUCHSIA const * pBufferConstraintsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkSetBufferCollectionBufferConstraintsFUCHSIA( static_cast( m_device ), + static_cast( collection ), + reinterpret_cast( pBufferConstraintsInfo ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetBufferCollectionBufferConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionBufferConstraintsFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setBufferCollectionBufferConstraintsFUCHSIA( + BufferCollectionFUCHSIA collection, BufferConstraintsInfoFUCHSIA const & bufferConstraintsInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetBufferCollectionBufferConstraintsFUCHSIA && + "Function requires " ); +# endif + + Result result = static_cast( d.vkSetBufferCollectionBufferConstraintsFUCHSIA( + m_device, static_cast( collection ), reinterpret_cast( &bufferConstraintsInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setBufferCollectionBufferConstraintsFUCHSIA" ); + + return detail::createResultValueType( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferCollectionFUCHSIA.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyBufferCollectionFUCHSIA( + BufferCollectionFUCHSIA collection, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferCollectionFUCHSIA( + static_cast( m_device ), static_cast( collection ), reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferCollectionFUCHSIA.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyBufferCollectionFUCHSIA( + BufferCollectionFUCHSIA collection, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyBufferCollectionFUCHSIA && "Function requires " ); +# endif + + d.vkDestroyBufferCollectionFUCHSIA( + m_device, static_cast( collection ), reinterpret_cast( allocator.get() ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferCollectionFUCHSIA.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( BufferCollectionFUCHSIA collection, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyBufferCollectionFUCHSIA( + static_cast( m_device ), static_cast( collection ), reinterpret_cast( pAllocator ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferCollectionFUCHSIA.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( BufferCollectionFUCHSIA collection, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyBufferCollectionFUCHSIA && "Function requires " ); +# endif + + d.vkDestroyBufferCollectionFUCHSIA( + m_device, static_cast( collection ), reinterpret_cast( allocator.get() ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferCollectionPropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferCollectionPropertiesFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getBufferCollectionPropertiesFUCHSIA( + BufferCollectionFUCHSIA collection, BufferCollectionPropertiesFUCHSIA * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetBufferCollectionPropertiesFUCHSIA( static_cast( m_device ), + static_cast( collection ), + reinterpret_cast( pProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferCollectionPropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferCollectionPropertiesFUCHSIA.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getBufferCollectionPropertiesFUCHSIA( + BufferCollectionFUCHSIA collection, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetBufferCollectionPropertiesFUCHSIA && + "Function requires " ); +# endif + + BufferCollectionPropertiesFUCHSIA properties; + Result result = static_cast( d.vkGetBufferCollectionPropertiesFUCHSIA( + m_device, static_cast( collection ), reinterpret_cast( &properties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getBufferCollectionPropertiesFUCHSIA" ); + + return detail::createResultValueType( result, std::move( properties ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + + // wrapper function for command vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSubpassShadingMaxWorkgroupSizeHUAWEI( + RenderPass renderpass, Extent2D * pMaxWorkgroupSize, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + static_cast( m_device ), static_cast( renderpass ), reinterpret_cast( pMaxWorkgroupSize ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getSubpassShadingMaxWorkgroupSizeHUAWEI( RenderPass renderpass, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI && + "Function requires " ); +# endif + + Extent2D maxWorkgroupSize; + Result result = static_cast( d.vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + m_device, static_cast( renderpass ), reinterpret_cast( &maxWorkgroupSize ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSubpassShadingMaxWorkgroupSizeHUAWEI" ); + + return detail::createResultValueType( result, std::move( maxWorkgroupSize ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSubpassShadingHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSubpassShadingHUAWEI.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::subpassShadingHUAWEI( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSubpassShadingHUAWEI( static_cast( m_commandBuffer ) ); + } + + //=== VK_HUAWEI_invocation_mask === + + // wrapper function for command vkCmdBindInvocationMaskHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindInvocationMaskHUAWEI.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindInvocationMaskHUAWEI( ImageView imageView, ImageLayout imageLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindInvocationMaskHUAWEI( + static_cast( m_commandBuffer ), static_cast( imageView ), static_cast( imageLayout ) ); + } + + //=== VK_NV_external_memory_rdma === + + // wrapper function for command vkGetMemoryRemoteAddressNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryRemoteAddressNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryRemoteAddressNV( + MemoryGetRemoteAddressInfoNV const * pMemoryGetRemoteAddressInfo, RemoteAddressNV * pAddress, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryRemoteAddressNV( static_cast( m_device ), + reinterpret_cast( pMemoryGetRemoteAddressInfo ), + reinterpret_cast( pAddress ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryRemoteAddressNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryRemoteAddressNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryRemoteAddressNV( + MemoryGetRemoteAddressInfoNV const & memoryGetRemoteAddressInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryRemoteAddressNV && "Function requires " ); +# endif + + RemoteAddressNV address; + Result result = static_cast( d.vkGetMemoryRemoteAddressNV( + m_device, reinterpret_cast( &memoryGetRemoteAddressInfo ), reinterpret_cast( &address ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryRemoteAddressNV" ); + + return detail::createResultValueType( result, std::move( address ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_pipeline_properties === + + // wrapper function for command vkGetPipelinePropertiesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelinePropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelinePropertiesEXT( + PipelineInfoEXT const * pPipelineInfo, BaseOutStructure * pPipelineProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPipelinePropertiesEXT( static_cast( m_device ), + reinterpret_cast( pPipelineInfo ), + reinterpret_cast( pPipelineProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelinePropertiesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelinePropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getPipelinePropertiesEXT( + PipelineInfoEXT const & pipelineInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelinePropertiesEXT && "Function requires " ); +# endif + + BaseOutStructure pipelineProperties; + Result result = static_cast( d.vkGetPipelinePropertiesEXT( + m_device, reinterpret_cast( &pipelineInfo ), reinterpret_cast( &pipelineProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelinePropertiesEXT" ); + + return detail::createResultValueType( result, std::move( pipelineProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_extended_dynamic_state2 === + + // wrapper function for command vkCmdSetPatchControlPointsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPatchControlPointsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setPatchControlPointsEXT( uint32_t patchControlPoints, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPatchControlPointsEXT( static_cast( m_commandBuffer ), patchControlPoints ); + } + + // wrapper function for command vkCmdSetRasterizerDiscardEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnableEXT( Bool32 rasterizerDiscardEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRasterizerDiscardEnableEXT( static_cast( m_commandBuffer ), static_cast( rasterizerDiscardEnable ) ); + } + + // wrapper function for command vkCmdSetDepthBiasEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthBiasEnableEXT( Bool32 depthBiasEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthBiasEnableEXT( static_cast( m_commandBuffer ), static_cast( depthBiasEnable ) ); + } + + // wrapper function for command vkCmdSetLogicOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setLogicOpEXT( LogicOp logicOp, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLogicOpEXT( static_cast( m_commandBuffer ), static_cast( logicOp ) ); + } + + // wrapper function for command vkCmdSetPrimitiveRestartEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnableEXT( Bool32 primitiveRestartEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPrimitiveRestartEnableEXT( static_cast( m_commandBuffer ), static_cast( primitiveRestartEnable ) ); + } + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + // wrapper function for command vkCreateScreenSurfaceQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateScreenSurfaceQNX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createScreenSurfaceQNX( + ScreenSurfaceCreateInfoQNX const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateScreenSurfaceQNX( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateScreenSurfaceQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateScreenSurfaceQNX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createScreenSurfaceQNX( + ScreenSurfaceCreateInfoQNX const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateScreenSurfaceQNX && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateScreenSurfaceQNX( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createScreenSurfaceQNX" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateScreenSurfaceQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateScreenSurfaceQNX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createScreenSurfaceQNXUnique( + ScreenSurfaceCreateInfoQNX const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateScreenSurfaceQNX && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateScreenSurfaceQNX( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createScreenSurfaceQNXUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceScreenPresentationSupportQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceScreenPresentationSupportQNX.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, struct _screen_window * window, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceScreenPresentationSupportQNX( static_cast( m_physicalDevice ), queueFamilyIndex, window ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceScreenPresentationSupportQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceScreenPresentationSupportQNX.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, struct _screen_window & window, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceScreenPresentationSupportQNX && + "Function requires " ); +# endif + + VkBool32 result = d.vkGetPhysicalDeviceScreenPresentationSupportQNX( m_physicalDevice, queueFamilyIndex, &window ); + + return static_cast( result ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + + // wrapper function for command vkCmdSetColorWriteEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setColorWriteEnableEXT( uint32_t attachmentCount, Bool32 const * pColorWriteEnables, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetColorWriteEnableEXT( static_cast( m_commandBuffer ), attachmentCount, reinterpret_cast( pColorWriteEnables ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetColorWriteEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setColorWriteEnableEXT( ArrayProxy const & colorWriteEnables, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetColorWriteEnableEXT && "Function requires " ); +# endif + + d.vkCmdSetColorWriteEnableEXT( m_commandBuffer, colorWriteEnables.size(), reinterpret_cast( colorWriteEnables.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_ray_tracing_maintenance1 === + + // wrapper function for command vkCmdTraceRaysIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirect2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirect2KHR( DeviceAddress indirectDeviceAddress, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdTraceRaysIndirect2KHR( static_cast( m_commandBuffer ), static_cast( indirectDeviceAddress ) ); + } + + //=== VK_EXT_multi_draw === + + // wrapper function for command vkCmdDrawMultiEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMultiEXT( + uint32_t drawCount, MultiDrawInfoEXT const * pVertexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMultiEXT( static_cast( m_commandBuffer ), + drawCount, + reinterpret_cast( pVertexInfo ), + instanceCount, + firstInstance, + stride ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawMultiEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMultiEXT( + StridedArrayProxy const & vertexInfo, uint32_t instanceCount, uint32_t firstInstance, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDrawMultiEXT && "Function requires " ); +# endif + + d.vkCmdDrawMultiEXT( m_commandBuffer, + vertexInfo.size(), + reinterpret_cast( vertexInfo.data() ), + instanceCount, + firstInstance, + vertexInfo.stride() ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawMultiIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiIndexedEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMultiIndexedEXT( uint32_t drawCount, + MultiDrawIndexedInfoEXT const * pIndexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + int32_t const * pVertexOffset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawMultiIndexedEXT( static_cast( m_commandBuffer ), + drawCount, + reinterpret_cast( pIndexInfo ), + instanceCount, + firstInstance, + stride, + pVertexOffset ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawMultiIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiIndexedEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawMultiIndexedEXT( StridedArrayProxy const & indexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + Optional vertexOffset, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDrawMultiIndexedEXT && "Function requires " ); +# endif + + d.vkCmdDrawMultiIndexedEXT( m_commandBuffer, + indexInfo.size(), + reinterpret_cast( indexInfo.data() ), + instanceCount, + firstInstance, + indexInfo.stride(), + vertexOffset.get() ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_opacity_micromap === + + // wrapper function for command vkCreateMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMicromapEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createMicromapEXT( + MicromapCreateInfoEXT const * pCreateInfo, AllocationCallbacks const * pAllocator, MicromapEXT * pMicromap, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateMicromapEXT( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pMicromap ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMicromapEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createMicromapEXT( + MicromapCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateMicromapEXT && "Function requires " ); +# endif + + MicromapEXT micromap; + Result result = static_cast( d.vkCreateMicromapEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( µmap ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createMicromapEXT" ); + + return detail::createResultValueType( result, std::move( micromap ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMicromapEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createMicromapEXTUnique( + MicromapCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateMicromapEXT && "Function requires " ); +# endif + + MicromapEXT micromap; + Result result = static_cast( d.vkCreateMicromapEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( µmap ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createMicromapEXTUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( micromap, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyMicromapEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyMicromapEXT( MicromapEXT micromap, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyMicromapEXT( + static_cast( m_device ), static_cast( micromap ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyMicromapEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyMicromapEXT( MicromapEXT micromap, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyMicromapEXT && "Function requires " ); +# endif + + d.vkDestroyMicromapEXT( m_device, static_cast( micromap ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyMicromapEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( MicromapEXT micromap, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyMicromapEXT( + static_cast( m_device ), static_cast( micromap ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyMicromapEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( MicromapEXT micromap, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyMicromapEXT && "Function requires " ); +# endif + + d.vkDestroyMicromapEXT( m_device, static_cast( micromap ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildMicromapsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildMicromapsEXT( uint32_t infoCount, MicromapBuildInfoEXT const * pInfos, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBuildMicromapsEXT( static_cast( m_commandBuffer ), infoCount, reinterpret_cast( pInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildMicromapsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildMicromapsEXT( ArrayProxy const & infos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBuildMicromapsEXT && "Function requires " ); +# endif + + d.vkCmdBuildMicromapsEXT( m_commandBuffer, infos.size(), reinterpret_cast( infos.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildMicromapsEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::buildMicromapsEXT( + DeferredOperationKHR deferredOperation, uint32_t infoCount, MicromapBuildInfoEXT const * pInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBuildMicromapsEXT( static_cast( m_device ), + static_cast( deferredOperation ), + infoCount, + reinterpret_cast( pInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildMicromapsEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::buildMicromapsEXT( + DeferredOperationKHR deferredOperation, ArrayProxy const & infos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBuildMicromapsEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkBuildMicromapsEXT( + m_device, static_cast( deferredOperation ), infos.size(), reinterpret_cast( infos.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::buildMicromapsEXT", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMicromapEXT( + DeferredOperationKHR deferredOperation, CopyMicromapInfoEXT const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCopyMicromapEXT( + static_cast( m_device ), static_cast( deferredOperation ), reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMicromapEXT( + DeferredOperationKHR deferredOperation, CopyMicromapInfoEXT const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyMicromapEXT && "Function requires " ); +# endif + + Result result = static_cast( + d.vkCopyMicromapEXT( m_device, static_cast( deferredOperation ), reinterpret_cast( &info ) ) ); + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyMicromapEXT", { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyMicromapToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapToMemoryEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMicromapToMemoryEXT( + DeferredOperationKHR deferredOperation, CopyMicromapToMemoryInfoEXT const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCopyMicromapToMemoryEXT( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMicromapToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapToMemoryEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMicromapToMemoryEXT( + DeferredOperationKHR deferredOperation, CopyMicromapToMemoryInfoEXT const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyMicromapToMemoryEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkCopyMicromapToMemoryEXT( + m_device, static_cast( deferredOperation ), reinterpret_cast( &info ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::copyMicromapToMemoryEXT", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyMemoryToMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToMicromapEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToMicromapEXT( + DeferredOperationKHR deferredOperation, CopyMemoryToMicromapInfoEXT const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCopyMemoryToMicromapEXT( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMemoryToMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToMicromapEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToMicromapEXT( + DeferredOperationKHR deferredOperation, CopyMemoryToMicromapInfoEXT const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCopyMemoryToMicromapEXT && "Function requires " ); +# endif + + Result result = static_cast( d.vkCopyMemoryToMicromapEXT( + m_device, static_cast( deferredOperation ), reinterpret_cast( &info ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToMicromapEXT", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::writeMicromapsPropertiesEXT( + uint32_t micromapCount, MicromapEXT const * pMicromaps, QueryType queryType, size_t dataSize, void * pData, size_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkWriteMicromapsPropertiesEXT( static_cast( m_device ), + micromapCount, + reinterpret_cast( pMicromaps ), + static_cast( queryType ), + dataSize, + pData, + stride ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::writeMicromapsPropertiesEXT( + ArrayProxy const & micromaps, QueryType queryType, size_t dataSize, size_t stride, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWriteMicromapsPropertiesEXT && "Function requires " ); +# endif + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( d.vkWriteMicromapsPropertiesEXT( m_device, + micromaps.size(), + reinterpret_cast( micromaps.data() ), + static_cast( queryType ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ), + stride ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeMicromapsPropertiesEXT" ); + + return detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::writeMicromapsPropertyEXT( + ArrayProxy const & micromaps, QueryType queryType, size_t stride, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWriteMicromapsPropertiesEXT && "Function requires " ); +# endif + + DataType data; + Result result = static_cast( d.vkWriteMicromapsPropertiesEXT( m_device, + micromaps.size(), + reinterpret_cast( micromaps.data() ), + static_cast( queryType ), + sizeof( DataType ), + reinterpret_cast( &data ), + stride ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::writeMicromapsPropertyEXT" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMicromapEXT( CopyMicromapInfoEXT const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMicromapEXT( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMicromapEXT( CopyMicromapInfoEXT const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyMicromapEXT && "Function requires " ); +# endif + + d.vkCmdCopyMicromapEXT( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMicromapToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapToMemoryEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMicromapToMemoryEXT( CopyMicromapToMemoryInfoEXT const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMicromapToMemoryEXT( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMicromapToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapToMemoryEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMicromapToMemoryEXT( CopyMicromapToMemoryInfoEXT const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyMicromapToMemoryEXT && "Function requires " ); +# endif + + d.vkCmdCopyMicromapToMemoryEXT( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMemoryToMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToMicromapEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToMicromapEXT( CopyMemoryToMicromapInfoEXT const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMemoryToMicromapEXT( static_cast( m_commandBuffer ), reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryToMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToMicromapEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToMicromapEXT( CopyMemoryToMicromapInfoEXT const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyMemoryToMicromapEXT && "Function requires " ); +# endif + + d.vkCmdCopyMemoryToMicromapEXT( m_commandBuffer, reinterpret_cast( &info ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMicromapsPropertiesEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeMicromapsPropertiesEXT( + uint32_t micromapCount, MicromapEXT const * pMicromaps, QueryType queryType, QueryPool queryPool, uint32_t firstQuery, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdWriteMicromapsPropertiesEXT( static_cast( m_commandBuffer ), + micromapCount, + reinterpret_cast( pMicromaps ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMicromapsPropertiesEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::writeMicromapsPropertiesEXT( + ArrayProxy const & micromaps, QueryType queryType, QueryPool queryPool, uint32_t firstQuery, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdWriteMicromapsPropertiesEXT && "Function requires " ); +# endif + + d.vkCmdWriteMicromapsPropertiesEXT( m_commandBuffer, + micromaps.size(), + reinterpret_cast( micromaps.data() ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceMicromapCompatibilityEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMicromapCompatibilityEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getMicromapCompatibilityEXT( + MicromapVersionInfoEXT const * pVersionInfo, AccelerationStructureCompatibilityKHR * pCompatibility, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceMicromapCompatibilityEXT( static_cast( m_device ), + reinterpret_cast( pVersionInfo ), + reinterpret_cast( pCompatibility ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceMicromapCompatibilityEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMicromapCompatibilityEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureCompatibilityKHR Device::getMicromapCompatibilityEXT( + MicromapVersionInfoEXT const & versionInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceMicromapCompatibilityEXT && "Function requires " ); +# endif + + AccelerationStructureCompatibilityKHR compatibility; + d.vkGetDeviceMicromapCompatibilityEXT( m_device, + reinterpret_cast( &versionInfo ), + reinterpret_cast( &compatibility ) ); + + return compatibility; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMicromapBuildSizesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMicromapBuildSizesEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getMicromapBuildSizesEXT( + AccelerationStructureBuildTypeKHR buildType, MicromapBuildInfoEXT const * pBuildInfo, MicromapBuildSizesInfoEXT * pSizeInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetMicromapBuildSizesEXT( static_cast( m_device ), + static_cast( buildType ), + reinterpret_cast( pBuildInfo ), + reinterpret_cast( pSizeInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMicromapBuildSizesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMicromapBuildSizesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MicromapBuildSizesInfoEXT Device::getMicromapBuildSizesEXT( + AccelerationStructureBuildTypeKHR buildType, MicromapBuildInfoEXT const & buildInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMicromapBuildSizesEXT && "Function requires " ); +# endif + + MicromapBuildSizesInfoEXT sizeInfo; + d.vkGetMicromapBuildSizesEXT( m_device, + static_cast( buildType ), + reinterpret_cast( &buildInfo ), + reinterpret_cast( &sizeInfo ) ); + + return sizeInfo; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_HUAWEI_cluster_culling_shader === + + // wrapper function for command vkCmdDrawClusterHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterHUAWEI.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawClusterHUAWEI( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawClusterHUAWEI( static_cast( m_commandBuffer ), groupCountX, groupCountY, groupCountZ ); + } + + // wrapper function for command vkCmdDrawClusterIndirectHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterIndirectHUAWEI.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::drawClusterIndirectHUAWEI( Buffer buffer, DeviceSize offset, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDrawClusterIndirectHUAWEI( static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ) ); + } + + //=== VK_EXT_pageable_device_local_memory === + + // wrapper function for command vkSetDeviceMemoryPriorityEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDeviceMemoryPriorityEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::setMemoryPriorityEXT( DeviceMemory memory, float priority, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkSetDeviceMemoryPriorityEXT( static_cast( m_device ), static_cast( memory ), priority ); + } + + //=== VK_KHR_maintenance4 === + + // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getBufferMemoryRequirementsKHR( + DeviceBufferMemoryRequirements const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceBufferMemoryRequirementsKHR( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getBufferMemoryRequirementsKHR( DeviceBufferMemoryRequirements const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceBufferMemoryRequirementsKHR && + "Function requires or " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetDeviceBufferMemoryRequirementsKHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirementsKHR( DeviceBufferMemoryRequirements const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceBufferMemoryRequirementsKHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetDeviceBufferMemoryRequirementsKHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageMemoryRequirementsKHR( + DeviceImageMemoryRequirements const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceImageMemoryRequirementsKHR( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getImageMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageMemoryRequirementsKHR && + "Function requires or " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetDeviceImageMemoryRequirementsKHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageMemoryRequirementsKHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetDeviceImageMemoryRequirementsKHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageSparseMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirementsKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirementsKHR( DeviceImageMemoryRequirements const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceImageSparseMemoryRequirementsKHR( static_cast( m_device ), + reinterpret_cast( pInfo ), + pSparseMemoryRequirementCount, + reinterpret_cast( pSparseMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageSparseMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirementsKHR.html + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageSparseMemoryRequirementsKHR && + "Function requires or " ); +# endif + + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + d.vkGetDeviceImageSparseMemoryRequirementsKHR( + m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetDeviceImageSparseMemoryRequirementsKHR( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } + + // wrapper function for command vkGetDeviceImageSparseMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirementsKHR.html + template < + typename SparseImageMemoryRequirements2Allocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirementsKHR( + DeviceImageMemoryRequirements const & info, SparseImageMemoryRequirements2Allocator const & sparseImageMemoryRequirements2Allocator, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageSparseMemoryRequirementsKHR && + "Function requires or " ); +# endif + + std::vector sparseMemoryRequirements( sparseImageMemoryRequirements2Allocator ); + uint32_t sparseMemoryRequirementCount; + d.vkGetDeviceImageSparseMemoryRequirementsKHR( + m_device, reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + d.vkGetDeviceImageSparseMemoryRequirementsKHR( m_device, + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VALVE_descriptor_set_host_mapping === + + // wrapper function for command vkGetDescriptorSetLayoutHostMappingInfoVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutHostMappingInfoVALVE.html + template ::type> + VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutHostMappingInfoVALVE( + DescriptorSetBindingReferenceVALVE const * pBindingReference, DescriptorSetLayoutHostMappingInfoVALVE * pHostMapping, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDescriptorSetLayoutHostMappingInfoVALVE( static_cast( m_device ), + reinterpret_cast( pBindingReference ), + reinterpret_cast( pHostMapping ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetLayoutHostMappingInfoVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutHostMappingInfoVALVE.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorSetLayoutHostMappingInfoVALVE Device::getDescriptorSetLayoutHostMappingInfoVALVE( + DescriptorSetBindingReferenceVALVE const & bindingReference, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDescriptorSetLayoutHostMappingInfoVALVE && + "Function requires " ); +# endif + + DescriptorSetLayoutHostMappingInfoVALVE hostMapping; + d.vkGetDescriptorSetLayoutHostMappingInfoVALVE( m_device, + reinterpret_cast( &bindingReference ), + reinterpret_cast( &hostMapping ) ); + + return hostMapping; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDescriptorSetHostMappingVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetHostMappingVALVE.html + template ::type> + VULKAN_HPP_INLINE void Device::getDescriptorSetHostMappingVALVE( DescriptorSet descriptorSet, void ** ppData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDescriptorSetHostMappingVALVE( static_cast( m_device ), static_cast( descriptorSet ), ppData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetHostMappingVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetHostMappingVALVE.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE void * Device::getDescriptorSetHostMappingVALVE( DescriptorSet descriptorSet, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDescriptorSetHostMappingVALVE && + "Function requires " ); +# endif + + void * pData; + d.vkGetDescriptorSetHostMappingVALVE( m_device, static_cast( descriptorSet ), &pData ); + + return pData; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_copy_memory_indirect === + + // wrapper function for command vkCmdCopyMemoryIndirectNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryIndirectNV( DeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMemoryIndirectNV( static_cast( m_commandBuffer ), static_cast( copyBufferAddress ), copyCount, stride ); + } + + // wrapper function for command vkCmdCopyMemoryToImageIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToImageIndirectNV( DeviceAddress copyBufferAddress, + uint32_t copyCount, + uint32_t stride, + Image dstImage, + ImageLayout dstImageLayout, + ImageSubresourceLayers const * pImageSubresources, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMemoryToImageIndirectNV( static_cast( m_commandBuffer ), + static_cast( copyBufferAddress ), + copyCount, + stride, + static_cast( dstImage ), + static_cast( dstImageLayout ), + reinterpret_cast( pImageSubresources ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryToImageIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToImageIndirectNV( DeviceAddress copyBufferAddress, + uint32_t stride, + Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & imageSubresources, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyMemoryToImageIndirectNV && "Function requires " ); +# endif + + d.vkCmdCopyMemoryToImageIndirectNV( m_commandBuffer, + static_cast( copyBufferAddress ), + imageSubresources.size(), + stride, + static_cast( dstImage ), + static_cast( dstImageLayout ), + reinterpret_cast( imageSubresources.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_memory_decompression === + + // wrapper function for command vkCmdDecompressMemoryNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryNV( + uint32_t decompressRegionCount, DecompressMemoryRegionNV const * pDecompressMemoryRegions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDecompressMemoryNV( static_cast( m_commandBuffer ), + decompressRegionCount, + reinterpret_cast( pDecompressMemoryRegions ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDecompressMemoryNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryNV( ArrayProxy const & decompressMemoryRegions, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDecompressMemoryNV && "Function requires " ); +# endif + + d.vkCmdDecompressMemoryNV( + m_commandBuffer, decompressMemoryRegions.size(), reinterpret_cast( decompressMemoryRegions.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDecompressMemoryIndirectCountNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryIndirectCountNV( + DeviceAddress indirectCommandsAddress, DeviceAddress indirectCommandsCountAddress, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDecompressMemoryIndirectCountNV( static_cast( m_commandBuffer ), + static_cast( indirectCommandsAddress ), + static_cast( indirectCommandsCountAddress ), + stride ); + } + + //=== VK_NV_device_generated_commands_compute === + + // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html + template ::type> + VULKAN_HPP_INLINE void Device::getPipelineIndirectMemoryRequirementsNV( + ComputePipelineCreateInfo const * pCreateInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPipelineIndirectMemoryRequirementsNV( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getPipelineIndirectMemoryRequirementsNV( ComputePipelineCreateInfo const & createInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineIndirectMemoryRequirementsNV && + "Function requires " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetPipelineIndirectMemoryRequirementsNV( + m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getPipelineIndirectMemoryRequirementsNV( + ComputePipelineCreateInfo const & createInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineIndirectMemoryRequirementsNV && + "Function requires " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetPipelineIndirectMemoryRequirementsNV( + m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdUpdatePipelineIndirectBufferNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdatePipelineIndirectBufferNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::updatePipelineIndirectBufferNV( PipelineBindPoint pipelineBindPoint, Pipeline pipeline, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdUpdatePipelineIndirectBufferNV( + static_cast( m_commandBuffer ), static_cast( pipelineBindPoint ), static_cast( pipeline ) ); + } + + // wrapper function for command vkGetPipelineIndirectDeviceAddressNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectDeviceAddressNV.html + template ::type> + VULKAN_HPP_INLINE DeviceAddress Device::getPipelineIndirectAddressNV( PipelineIndirectDeviceAddressInfoNV const * pInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPipelineIndirectDeviceAddressNV( static_cast( m_device ), reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineIndirectDeviceAddressNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectDeviceAddressNV.html + template ::type> + VULKAN_HPP_INLINE DeviceAddress Device::getPipelineIndirectAddressNV( PipelineIndirectDeviceAddressInfoNV const & info, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineIndirectDeviceAddressNV && + "Function requires " ); +# endif + + VkDeviceAddress result = d.vkGetPipelineIndirectDeviceAddressNV( m_device, reinterpret_cast( &info ) ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + + // wrapper function for command vkGetNativeBufferPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getNativeBufferPropertiesOHOS( + struct OH_NativeBuffer const * buffer, NativeBufferPropertiesOHOS * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetNativeBufferPropertiesOHOS( static_cast( m_device ), buffer, reinterpret_cast( pProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetNativeBufferPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getNativeBufferPropertiesOHOS( + struct OH_NativeBuffer const & buffer, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetNativeBufferPropertiesOHOS && "Function requires " ); +# endif + + NativeBufferPropertiesOHOS properties; + Result result = + static_cast( d.vkGetNativeBufferPropertiesOHOS( m_device, &buffer, reinterpret_cast( &properties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getNativeBufferPropertiesOHOS" ); + + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetNativeBufferPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getNativeBufferPropertiesOHOS( + struct OH_NativeBuffer const & buffer, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetNativeBufferPropertiesOHOS && "Function requires " ); +# endif + + StructureChain structureChain; + NativeBufferPropertiesOHOS & properties = structureChain.template get(); + Result result = + static_cast( d.vkGetNativeBufferPropertiesOHOS( m_device, &buffer, reinterpret_cast( &properties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getNativeBufferPropertiesOHOS" ); + + return detail::createResultValueType( result, std::move( structureChain ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryNativeBufferOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryNativeBufferOHOS.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryNativeBufferOHOS( + MemoryGetNativeBufferInfoOHOS const * pInfo, struct OH_NativeBuffer ** pBuffer, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetMemoryNativeBufferOHOS( static_cast( m_device ), reinterpret_cast( pInfo ), pBuffer ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryNativeBufferOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryNativeBufferOHOS.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryNativeBufferOHOS( + MemoryGetNativeBufferInfoOHOS const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryNativeBufferOHOS && "Function requires " ); +# endif + + struct OH_NativeBuffer * buffer; + Result result = + static_cast( d.vkGetMemoryNativeBufferOHOS( m_device, reinterpret_cast( &info ), &buffer ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryNativeBufferOHOS" ); + + return detail::createResultValueType( result, std::move( buffer ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_extended_dynamic_state3 === + + // wrapper function for command vkCmdSetDepthClampEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthClampEnableEXT( Bool32 depthClampEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthClampEnableEXT( static_cast( m_commandBuffer ), static_cast( depthClampEnable ) ); + } + + // wrapper function for command vkCmdSetPolygonModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPolygonModeEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setPolygonModeEXT( PolygonMode polygonMode, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetPolygonModeEXT( static_cast( m_commandBuffer ), static_cast( polygonMode ) ); + } + + // wrapper function for command vkCmdSetRasterizationSamplesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationSamplesEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRasterizationSamplesEXT( SampleCountFlagBits rasterizationSamples, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRasterizationSamplesEXT( static_cast( m_commandBuffer ), static_cast( rasterizationSamples ) ); + } + + // wrapper function for command vkCmdSetSampleMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleMaskEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setSampleMaskEXT( SampleCountFlagBits samples, SampleMask const * pSampleMask, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetSampleMaskEXT( + static_cast( m_commandBuffer ), static_cast( samples ), reinterpret_cast( pSampleMask ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetSampleMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleMaskEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setSampleMaskEXT( SampleCountFlagBits samples, ArrayProxy const & sampleMask, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetSampleMaskEXT && "Function requires or " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( sampleMask.size() == ( static_cast( samples ) + 31 ) / 32 ); +# else + if ( sampleMask.size() != ( static_cast( samples ) + 31 ) / 32 ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setSampleMaskEXT: sampleMask.size() != ( static_cast( samples ) + 31 ) / 32" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdSetSampleMaskEXT( m_commandBuffer, static_cast( samples ), reinterpret_cast( sampleMask.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetAlphaToCoverageEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToCoverageEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setAlphaToCoverageEnableEXT( Bool32 alphaToCoverageEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetAlphaToCoverageEnableEXT( static_cast( m_commandBuffer ), static_cast( alphaToCoverageEnable ) ); + } + + // wrapper function for command vkCmdSetAlphaToOneEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToOneEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setAlphaToOneEnableEXT( Bool32 alphaToOneEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetAlphaToOneEnableEXT( static_cast( m_commandBuffer ), static_cast( alphaToOneEnable ) ); + } + + // wrapper function for command vkCmdSetLogicOpEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setLogicOpEnableEXT( Bool32 logicOpEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLogicOpEnableEXT( static_cast( m_commandBuffer ), static_cast( logicOpEnable ) ); + } + + // wrapper function for command vkCmdSetColorBlendEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setColorBlendEnableEXT( + uint32_t firstAttachment, uint32_t attachmentCount, Bool32 const * pColorBlendEnables, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetColorBlendEnableEXT( + static_cast( m_commandBuffer ), firstAttachment, attachmentCount, reinterpret_cast( pColorBlendEnables ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetColorBlendEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setColorBlendEnableEXT( + uint32_t firstAttachment, ArrayProxy const & colorBlendEnables, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetColorBlendEnableEXT && + "Function requires or " ); +# endif + + d.vkCmdSetColorBlendEnableEXT( m_commandBuffer, firstAttachment, colorBlendEnables.size(), reinterpret_cast( colorBlendEnables.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetColorBlendEquationEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEquationEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setColorBlendEquationEXT( + uint32_t firstAttachment, uint32_t attachmentCount, ColorBlendEquationEXT const * pColorBlendEquations, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetColorBlendEquationEXT( static_cast( m_commandBuffer ), + firstAttachment, + attachmentCount, + reinterpret_cast( pColorBlendEquations ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetColorBlendEquationEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEquationEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setColorBlendEquationEXT( + uint32_t firstAttachment, ArrayProxy const & colorBlendEquations, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetColorBlendEquationEXT && + "Function requires or " ); +# endif + + d.vkCmdSetColorBlendEquationEXT( + m_commandBuffer, firstAttachment, colorBlendEquations.size(), reinterpret_cast( colorBlendEquations.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetColorWriteMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteMaskEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setColorWriteMaskEXT( + uint32_t firstAttachment, uint32_t attachmentCount, ColorComponentFlags const * pColorWriteMasks, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetColorWriteMaskEXT( + static_cast( m_commandBuffer ), firstAttachment, attachmentCount, reinterpret_cast( pColorWriteMasks ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetColorWriteMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteMaskEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setColorWriteMaskEXT( + uint32_t firstAttachment, ArrayProxy const & colorWriteMasks, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetColorWriteMaskEXT && + "Function requires or " ); +# endif + + d.vkCmdSetColorWriteMaskEXT( + m_commandBuffer, firstAttachment, colorWriteMasks.size(), reinterpret_cast( colorWriteMasks.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetTessellationDomainOriginEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetTessellationDomainOriginEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setTessellationDomainOriginEXT( TessellationDomainOrigin domainOrigin, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetTessellationDomainOriginEXT( static_cast( m_commandBuffer ), static_cast( domainOrigin ) ); + } + + // wrapper function for command vkCmdSetRasterizationStreamEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationStreamEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRasterizationStreamEXT( uint32_t rasterizationStream, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRasterizationStreamEXT( static_cast( m_commandBuffer ), rasterizationStream ); + } + + // wrapper function for command vkCmdSetConservativeRasterizationModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetConservativeRasterizationModeEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setConservativeRasterizationModeEXT( ConservativeRasterizationModeEXT conservativeRasterizationMode, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetConservativeRasterizationModeEXT( static_cast( m_commandBuffer ), + static_cast( conservativeRasterizationMode ) ); + } + + // wrapper function for command vkCmdSetExtraPrimitiveOverestimationSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExtraPrimitiveOverestimationSizeEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setExtraPrimitiveOverestimationSizeEXT( float extraPrimitiveOverestimationSize, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetExtraPrimitiveOverestimationSizeEXT( static_cast( m_commandBuffer ), extraPrimitiveOverestimationSize ); + } + + // wrapper function for command vkCmdSetDepthClipEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthClipEnableEXT( Bool32 depthClipEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthClipEnableEXT( static_cast( m_commandBuffer ), static_cast( depthClipEnable ) ); + } + + // wrapper function for command vkCmdSetSampleLocationsEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEnableEXT( Bool32 sampleLocationsEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetSampleLocationsEnableEXT( static_cast( m_commandBuffer ), static_cast( sampleLocationsEnable ) ); + } + + // wrapper function for command vkCmdSetColorBlendAdvancedEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendAdvancedEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setColorBlendAdvancedEXT( + uint32_t firstAttachment, uint32_t attachmentCount, ColorBlendAdvancedEXT const * pColorBlendAdvanced, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetColorBlendAdvancedEXT( static_cast( m_commandBuffer ), + firstAttachment, + attachmentCount, + reinterpret_cast( pColorBlendAdvanced ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetColorBlendAdvancedEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendAdvancedEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setColorBlendAdvancedEXT( + uint32_t firstAttachment, ArrayProxy const & colorBlendAdvanced, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetColorBlendAdvancedEXT && + "Function requires or " ); +# endif + + d.vkCmdSetColorBlendAdvancedEXT( + m_commandBuffer, firstAttachment, colorBlendAdvanced.size(), reinterpret_cast( colorBlendAdvanced.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetProvokingVertexModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetProvokingVertexModeEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setProvokingVertexModeEXT( ProvokingVertexModeEXT provokingVertexMode, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetProvokingVertexModeEXT( static_cast( m_commandBuffer ), static_cast( provokingVertexMode ) ); + } + + // wrapper function for command vkCmdSetLineRasterizationModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineRasterizationModeEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setLineRasterizationModeEXT( LineRasterizationModeEXT lineRasterizationMode, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLineRasterizationModeEXT( static_cast( m_commandBuffer ), static_cast( lineRasterizationMode ) ); + } + + // wrapper function for command vkCmdSetLineStippleEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEnableEXT( Bool32 stippledLineEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLineStippleEnableEXT( static_cast( m_commandBuffer ), static_cast( stippledLineEnable ) ); + } + + // wrapper function for command vkCmdSetDepthClipNegativeOneToOneEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipNegativeOneToOneEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthClipNegativeOneToOneEXT( Bool32 negativeOneToOne, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthClipNegativeOneToOneEXT( static_cast( m_commandBuffer ), static_cast( negativeOneToOne ) ); + } + + // wrapper function for command vkCmdSetViewportWScalingEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingEnableNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingEnableNV( Bool32 viewportWScalingEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportWScalingEnableNV( static_cast( m_commandBuffer ), static_cast( viewportWScalingEnable ) ); + } + + // wrapper function for command vkCmdSetViewportSwizzleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportSwizzleNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportSwizzleNV( + uint32_t firstViewport, uint32_t viewportCount, ViewportSwizzleNV const * pViewportSwizzles, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetViewportSwizzleNV( + static_cast( m_commandBuffer ), firstViewport, viewportCount, reinterpret_cast( pViewportSwizzles ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewportSwizzleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportSwizzleNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setViewportSwizzleNV( + uint32_t firstViewport, ArrayProxy const & viewportSwizzles, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetViewportSwizzleNV && + "Function requires or " ); +# endif + + d.vkCmdSetViewportSwizzleNV( + m_commandBuffer, firstViewport, viewportSwizzles.size(), reinterpret_cast( viewportSwizzles.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetCoverageToColorEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorEnableNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCoverageToColorEnableNV( Bool32 coverageToColorEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCoverageToColorEnableNV( static_cast( m_commandBuffer ), static_cast( coverageToColorEnable ) ); + } + + // wrapper function for command vkCmdSetCoverageToColorLocationNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorLocationNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCoverageToColorLocationNV( uint32_t coverageToColorLocation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCoverageToColorLocationNV( static_cast( m_commandBuffer ), coverageToColorLocation ); + } + + // wrapper function for command vkCmdSetCoverageModulationModeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationModeNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCoverageModulationModeNV( CoverageModulationModeNV coverageModulationMode, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCoverageModulationModeNV( static_cast( m_commandBuffer ), static_cast( coverageModulationMode ) ); + } + + // wrapper function for command vkCmdSetCoverageModulationTableEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableEnableNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCoverageModulationTableEnableNV( Bool32 coverageModulationTableEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCoverageModulationTableEnableNV( static_cast( m_commandBuffer ), static_cast( coverageModulationTableEnable ) ); + } + + // wrapper function for command vkCmdSetCoverageModulationTableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCoverageModulationTableNV( + uint32_t coverageModulationTableCount, float const * pCoverageModulationTable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCoverageModulationTableNV( static_cast( m_commandBuffer ), coverageModulationTableCount, pCoverageModulationTable ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetCoverageModulationTableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCoverageModulationTableNV( ArrayProxy const & coverageModulationTable, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetCoverageModulationTableNV && + "Function requires or " ); +# endif + + d.vkCmdSetCoverageModulationTableNV( m_commandBuffer, coverageModulationTable.size(), coverageModulationTable.data() ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetShadingRateImageEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetShadingRateImageEnableNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setShadingRateImageEnableNV( Bool32 shadingRateImageEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetShadingRateImageEnableNV( static_cast( m_commandBuffer ), static_cast( shadingRateImageEnable ) ); + } + + // wrapper function for command vkCmdSetRepresentativeFragmentTestEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRepresentativeFragmentTestEnableNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setRepresentativeFragmentTestEnableNV( Bool32 representativeFragmentTestEnable, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetRepresentativeFragmentTestEnableNV( static_cast( m_commandBuffer ), static_cast( representativeFragmentTestEnable ) ); + } + + // wrapper function for command vkCmdSetCoverageReductionModeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageReductionModeNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setCoverageReductionModeNV( CoverageReductionModeNV coverageReductionMode, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetCoverageReductionModeNV( static_cast( m_commandBuffer ), static_cast( coverageReductionMode ) ); + } + + //=== VK_ARM_tensors === + + // wrapper function for command vkCreateTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createTensorARM( + TensorCreateInfoARM const * pCreateInfo, AllocationCallbacks const * pAllocator, TensorARM * pTensor, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateTensorARM( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pTensor ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createTensorARM( + TensorCreateInfoARM const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateTensorARM && "Function requires " ); +# endif + + TensorARM tensor; + Result result = static_cast( d.vkCreateTensorARM( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &tensor ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createTensorARM" ); + + return detail::createResultValueType( result, std::move( tensor ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createTensorARMUnique( + TensorCreateInfoARM const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateTensorARM && "Function requires " ); +# endif + + TensorARM tensor; + Result result = static_cast( d.vkCreateTensorARM( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &tensor ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createTensorARMUnique" ); + + return detail::createResultValueType( result, UniqueHandle( tensor, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyTensorARM( TensorARM tensor, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyTensorARM( + static_cast( m_device ), static_cast( tensor ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyTensorARM( TensorARM tensor, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyTensorARM && "Function requires " ); +# endif + + d.vkDestroyTensorARM( m_device, static_cast( tensor ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( TensorARM tensor, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyTensorARM( + static_cast( m_device ), static_cast( tensor ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( TensorARM tensor, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyTensorARM && "Function requires " ); +# endif + + d.vkDestroyTensorARM( m_device, static_cast( tensor ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorViewARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createTensorViewARM( + TensorViewCreateInfoARM const * pCreateInfo, AllocationCallbacks const * pAllocator, TensorViewARM * pView, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateTensorViewARM( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pView ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorViewARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createTensorViewARM( + TensorViewCreateInfoARM const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateTensorViewARM && "Function requires " ); +# endif + + TensorViewARM view; + Result result = static_cast( d.vkCreateTensorViewARM( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &view ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createTensorViewARM" ); + + return detail::createResultValueType( result, std::move( view ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorViewARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createTensorViewARMUnique( + TensorViewCreateInfoARM const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateTensorViewARM && "Function requires " ); +# endif + + TensorViewARM view; + Result result = static_cast( d.vkCreateTensorViewARM( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &view ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createTensorViewARMUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( view, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorViewARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyTensorViewARM( TensorViewARM tensorView, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyTensorViewARM( + static_cast( m_device ), static_cast( tensorView ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorViewARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyTensorViewARM( TensorViewARM tensorView, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyTensorViewARM && "Function requires " ); +# endif + + d.vkDestroyTensorViewARM( m_device, static_cast( tensorView ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorViewARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( TensorViewARM tensorView, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyTensorViewARM( + static_cast( m_device ), static_cast( tensorView ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorViewARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( TensorViewARM tensorView, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyTensorViewARM && "Function requires " ); +# endif + + d.vkDestroyTensorViewARM( m_device, static_cast( tensorView ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html + template ::type> + VULKAN_HPP_INLINE void Device::getTensorMemoryRequirementsARM( + TensorMemoryRequirementsInfoARM const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetTensorMemoryRequirementsARM( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getTensorMemoryRequirementsARM( TensorMemoryRequirementsInfoARM const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetTensorMemoryRequirementsARM && "Function requires " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetTensorMemoryRequirementsARM( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getTensorMemoryRequirementsARM( TensorMemoryRequirementsInfoARM const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetTensorMemoryRequirementsARM && "Function requires " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetTensorMemoryRequirementsARM( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindTensorMemoryARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindTensorMemoryARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindTensorMemoryARM( + uint32_t bindInfoCount, BindTensorMemoryInfoARM const * pBindInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkBindTensorMemoryARM( static_cast( m_device ), bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindTensorMemoryARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindTensorMemoryARM.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindTensorMemoryARM( + ArrayProxy const & bindInfos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindTensorMemoryARM && "Function requires " ); +# endif + + Result result = + static_cast( d.vkBindTensorMemoryARM( m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindTensorMemoryARM" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html + template ::type> + VULKAN_HPP_INLINE void Device::getTensorMemoryRequirementsARM( + DeviceTensorMemoryRequirementsARM const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceTensorMemoryRequirementsARM( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getTensorMemoryRequirementsARM( DeviceTensorMemoryRequirementsARM const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceTensorMemoryRequirementsARM && "Function requires " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetDeviceTensorMemoryRequirementsARM( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getTensorMemoryRequirementsARM( DeviceTensorMemoryRequirementsARM const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceTensorMemoryRequirementsARM && "Function requires " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetDeviceTensorMemoryRequirementsARM( + m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyTensorARM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyTensorARM( CopyTensorInfoARM const * pCopyTensorInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyTensorARM( static_cast( m_commandBuffer ), reinterpret_cast( pCopyTensorInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyTensorARM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyTensorARM( CopyTensorInfoARM const & copyTensorInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyTensorARM && "Function requires " ); +# endif + + d.vkCmdCopyTensorARM( m_commandBuffer, reinterpret_cast( ©TensorInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceExternalTensorPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalTensorPropertiesARM.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getExternalTensorPropertiesARM( + PhysicalDeviceExternalTensorInfoARM const * pExternalTensorInfo, ExternalTensorPropertiesARM * pExternalTensorProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceExternalTensorPropertiesARM( static_cast( m_physicalDevice ), + reinterpret_cast( pExternalTensorInfo ), + reinterpret_cast( pExternalTensorProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalTensorPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalTensorPropertiesARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalTensorPropertiesARM PhysicalDevice::getExternalTensorPropertiesARM( + PhysicalDeviceExternalTensorInfoARM const & externalTensorInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceExternalTensorPropertiesARM && + "Function requires " ); +# endif + + ExternalTensorPropertiesARM externalTensorProperties; + d.vkGetPhysicalDeviceExternalTensorPropertiesARM( m_physicalDevice, + reinterpret_cast( &externalTensorInfo ), + reinterpret_cast( &externalTensorProperties ) ); + + return externalTensorProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetTensorOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDescriptorDataARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getTensorOpaqueCaptureDescriptorDataARM( + TensorCaptureDescriptorDataInfoARM const * pInfo, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetTensorOpaqueCaptureDescriptorDataARM( + static_cast( m_device ), reinterpret_cast( pInfo ), pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetTensorOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDescriptorDataARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getTensorOpaqueCaptureDescriptorDataARM( + TensorCaptureDescriptorDataInfoARM const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetTensorOpaqueCaptureDescriptorDataARM && "Function requires " ); +# endif + + DataType data; + Result result = static_cast( + d.vkGetTensorOpaqueCaptureDescriptorDataARM( m_device, reinterpret_cast( &info ), &data ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getTensorOpaqueCaptureDescriptorDataARM" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetTensorViewOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorViewOpaqueCaptureDescriptorDataARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getTensorViewOpaqueCaptureDescriptorDataARM( + TensorViewCaptureDescriptorDataInfoARM const * pInfo, void * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetTensorViewOpaqueCaptureDescriptorDataARM( + static_cast( m_device ), reinterpret_cast( pInfo ), pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetTensorViewOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorViewOpaqueCaptureDescriptorDataARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getTensorViewOpaqueCaptureDescriptorDataARM( + TensorViewCaptureDescriptorDataInfoARM const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetTensorViewOpaqueCaptureDescriptorDataARM && + "Function requires " ); +# endif + + DataType data; + Result result = static_cast( + d.vkGetTensorViewOpaqueCaptureDescriptorDataARM( m_device, reinterpret_cast( &info ), &data ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getTensorViewOpaqueCaptureDescriptorDataARM" ); + + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_shader_module_identifier === + + // wrapper function for command vkGetShaderModuleIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleIdentifierEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getShaderModuleIdentifierEXT( ShaderModule shaderModule, ShaderModuleIdentifierEXT * pIdentifier, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetShaderModuleIdentifierEXT( + static_cast( m_device ), static_cast( shaderModule ), reinterpret_cast( pIdentifier ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetShaderModuleIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleIdentifierEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ShaderModuleIdentifierEXT Device::getShaderModuleIdentifierEXT( ShaderModule shaderModule, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetShaderModuleIdentifierEXT && "Function requires " ); +# endif + + ShaderModuleIdentifierEXT identifier; + d.vkGetShaderModuleIdentifierEXT( m_device, static_cast( shaderModule ), reinterpret_cast( &identifier ) ); + + return identifier; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetShaderModuleCreateInfoIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleCreateInfoIdentifierEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getShaderModuleCreateInfoIdentifierEXT( + ShaderModuleCreateInfo const * pCreateInfo, ShaderModuleIdentifierEXT * pIdentifier, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetShaderModuleCreateInfoIdentifierEXT( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pIdentifier ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetShaderModuleCreateInfoIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleCreateInfoIdentifierEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ShaderModuleIdentifierEXT Device::getShaderModuleCreateInfoIdentifierEXT( + ShaderModuleCreateInfo const & createInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetShaderModuleCreateInfoIdentifierEXT && + "Function requires " ); +# endif + + ShaderModuleIdentifierEXT identifier; + d.vkGetShaderModuleCreateInfoIdentifierEXT( + m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &identifier ) ); + + return identifier; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_optical_flow === + + // wrapper function for command vkGetPhysicalDeviceOpticalFlowImageFormatsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getOpticalFlowImageFormatsNV( OpticalFlowImageFormatInfoNV const * pOpticalFlowImageFormatInfo, + uint32_t * pFormatCount, + OpticalFlowImageFormatPropertiesNV * pImageFormatProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceOpticalFlowImageFormatsNV( static_cast( m_physicalDevice ), + reinterpret_cast( pOpticalFlowImageFormatInfo ), + pFormatCount, + reinterpret_cast( pImageFormatProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceOpticalFlowImageFormatsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.html + template ::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getOpticalFlowImageFormatsNV( OpticalFlowImageFormatInfoNV const & opticalFlowImageFormatInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceOpticalFlowImageFormatsNV && + "Function requires " ); +# endif + + std::vector imageFormatProperties; + uint32_t formatCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceOpticalFlowImageFormatsNV( + m_physicalDevice, reinterpret_cast( &opticalFlowImageFormatInfo ), &formatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && formatCount ) + { + imageFormatProperties.resize( formatCount ); + result = static_cast( + d.vkGetPhysicalDeviceOpticalFlowImageFormatsNV( m_physicalDevice, + reinterpret_cast( &opticalFlowImageFormatInfo ), + &formatCount, + reinterpret_cast( imageFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getOpticalFlowImageFormatsNV" ); + VULKAN_HPP_ASSERT( formatCount <= imageFormatProperties.size() ); + if ( formatCount < imageFormatProperties.size() ) + { + imageFormatProperties.resize( formatCount ); + } + return detail::createResultValueType( result, std::move( imageFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceOpticalFlowImageFormatsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.html + template ::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getOpticalFlowImageFormatsNV( OpticalFlowImageFormatInfoNV const & opticalFlowImageFormatInfo, + OpticalFlowImageFormatPropertiesNVAllocator const & opticalFlowImageFormatPropertiesNVAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceOpticalFlowImageFormatsNV && + "Function requires " ); +# endif + + std::vector imageFormatProperties( + opticalFlowImageFormatPropertiesNVAllocator ); + uint32_t formatCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceOpticalFlowImageFormatsNV( + m_physicalDevice, reinterpret_cast( &opticalFlowImageFormatInfo ), &formatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && formatCount ) + { + imageFormatProperties.resize( formatCount ); + result = static_cast( + d.vkGetPhysicalDeviceOpticalFlowImageFormatsNV( m_physicalDevice, + reinterpret_cast( &opticalFlowImageFormatInfo ), + &formatCount, + reinterpret_cast( imageFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getOpticalFlowImageFormatsNV" ); + VULKAN_HPP_ASSERT( formatCount <= imageFormatProperties.size() ); + if ( formatCount < imageFormatProperties.size() ) + { + imageFormatProperties.resize( formatCount ); + } + return detail::createResultValueType( result, std::move( imageFormatProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateOpticalFlowSessionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateOpticalFlowSessionNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createOpticalFlowSessionNV( + OpticalFlowSessionCreateInfoNV const * pCreateInfo, AllocationCallbacks const * pAllocator, OpticalFlowSessionNV * pSession, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateOpticalFlowSessionNV( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSession ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateOpticalFlowSessionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateOpticalFlowSessionNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createOpticalFlowSessionNV( + OpticalFlowSessionCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateOpticalFlowSessionNV && "Function requires " ); +# endif + + OpticalFlowSessionNV session; + Result result = static_cast( d.vkCreateOpticalFlowSessionNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &session ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createOpticalFlowSessionNV" ); + + return detail::createResultValueType( result, std::move( session ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateOpticalFlowSessionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateOpticalFlowSessionNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::createOpticalFlowSessionNVUnique( + OpticalFlowSessionCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateOpticalFlowSessionNV && "Function requires " ); +# endif + + OpticalFlowSessionNV session; + Result result = static_cast( d.vkCreateOpticalFlowSessionNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &session ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createOpticalFlowSessionNVUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( session, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyOpticalFlowSessionNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyOpticalFlowSessionNV( OpticalFlowSessionNV session, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyOpticalFlowSessionNV( + static_cast( m_device ), static_cast( session ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyOpticalFlowSessionNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyOpticalFlowSessionNV( OpticalFlowSessionNV session, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyOpticalFlowSessionNV && "Function requires " ); +# endif + + d.vkDestroyOpticalFlowSessionNV( + m_device, static_cast( session ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyOpticalFlowSessionNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( OpticalFlowSessionNV session, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyOpticalFlowSessionNV( + static_cast( m_device ), static_cast( session ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyOpticalFlowSessionNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( OpticalFlowSessionNV session, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyOpticalFlowSessionNV && "Function requires " ); +# endif + + d.vkDestroyOpticalFlowSessionNV( + m_device, static_cast( session ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindOpticalFlowSessionImageNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindOpticalFlowSessionImageNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindOpticalFlowSessionImageNV( + OpticalFlowSessionNV session, OpticalFlowSessionBindingPointNV bindingPoint, ImageView view, ImageLayout layout, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindOpticalFlowSessionImageNV( static_cast( m_device ), + static_cast( session ), + static_cast( bindingPoint ), + static_cast( view ), + static_cast( layout ) ) ); + } +#else + // wrapper function for command vkBindOpticalFlowSessionImageNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindOpticalFlowSessionImageNV.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindOpticalFlowSessionImageNV( + OpticalFlowSessionNV session, OpticalFlowSessionBindingPointNV bindingPoint, ImageView view, ImageLayout layout, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindOpticalFlowSessionImageNV && "Function requires " ); +# endif + + Result result = static_cast( d.vkBindOpticalFlowSessionImageNV( m_device, + static_cast( session ), + static_cast( bindingPoint ), + static_cast( view ), + static_cast( layout ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindOpticalFlowSessionImageNV" ); + + return detail::createResultValueType( result ); + } +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkCmdOpticalFlowExecuteNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdOpticalFlowExecuteNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::opticalFlowExecuteNV( OpticalFlowSessionNV session, OpticalFlowExecuteInfoNV const * pExecuteInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdOpticalFlowExecuteNV( static_cast( m_commandBuffer ), + static_cast( session ), + reinterpret_cast( pExecuteInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdOpticalFlowExecuteNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdOpticalFlowExecuteNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::opticalFlowExecuteNV( OpticalFlowSessionNV session, OpticalFlowExecuteInfoNV const & executeInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdOpticalFlowExecuteNV && "Function requires " ); +# endif + + d.vkCmdOpticalFlowExecuteNV( + m_commandBuffer, static_cast( session ), reinterpret_cast( &executeInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_maintenance5 === + + // wrapper function for command vkCmdBindIndexBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer2KHR( Buffer buffer, DeviceSize offset, DeviceSize size, IndexType indexType, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindIndexBuffer2KHR( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( size ), + static_cast( indexType ) ); + } + + // wrapper function for command vkGetRenderingAreaGranularityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularityKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getRenderingAreaGranularityKHR( RenderingAreaInfo const * pRenderingAreaInfo, Extent2D * pGranularity, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetRenderingAreaGranularityKHR( + static_cast( m_device ), reinterpret_cast( pRenderingAreaInfo ), reinterpret_cast( pGranularity ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRenderingAreaGranularityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularityKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Extent2D Device::getRenderingAreaGranularityKHR( RenderingAreaInfo const & renderingAreaInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetRenderingAreaGranularityKHR && "Function requires or " ); +# endif + + Extent2D granularity; + d.vkGetRenderingAreaGranularityKHR( + m_device, reinterpret_cast( &renderingAreaInfo ), reinterpret_cast( &granularity ) ); + + return granularity; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSubresourceLayoutKHR( DeviceImageSubresourceInfo const * pInfo, SubresourceLayout2 * pLayout, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDeviceImageSubresourceLayoutKHR( + static_cast( m_device ), reinterpret_cast( pInfo ), reinterpret_cast( pLayout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Device::getImageSubresourceLayoutKHR( DeviceImageSubresourceInfo const & info, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageSubresourceLayoutKHR && + "Function requires or " ); +# endif + + SubresourceLayout2 layout; + d.vkGetDeviceImageSubresourceLayoutKHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageSubresourceLayoutKHR( DeviceImageSubresourceInfo const & info, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceImageSubresourceLayoutKHR && + "Function requires or " ); +# endif + + StructureChain structureChain; + SubresourceLayout2 & layout = structureChain.template get(); + d.vkGetDeviceImageSubresourceLayoutKHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( &layout ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSubresourceLayout2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html + template ::type> + VULKAN_HPP_INLINE void Device::getImageSubresourceLayout2KHR( + Image image, ImageSubresource2 const * pSubresource, SubresourceLayout2 * pLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetImageSubresourceLayout2KHR( static_cast( m_device ), + static_cast( image ), + reinterpret_cast( pSubresource ), + reinterpret_cast( pLayout ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSubresourceLayout2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Device::getImageSubresourceLayout2KHR( + Image image, ImageSubresource2 const & subresource, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( + d.vkGetImageSubresourceLayout2KHR && + "Function requires or or or " ); +# endif + + SubresourceLayout2 layout; + d.vkGetImageSubresourceLayout2KHR( m_device, + static_cast( image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkGetImageSubresourceLayout2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageSubresourceLayout2KHR( + Image image, ImageSubresource2 const & subresource, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( + d.vkGetImageSubresourceLayout2KHR && + "Function requires or or or " ); +# endif + + StructureChain structureChain; + SubresourceLayout2 & layout = structureChain.template get(); + d.vkGetImageSubresourceLayout2KHR( m_device, + static_cast( image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_AMD_anti_lag === + + // wrapper function for command vkAntiLagUpdateAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAntiLagUpdateAMD.html + template ::type> + VULKAN_HPP_INLINE void Device::antiLagUpdateAMD( AntiLagDataAMD const * pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkAntiLagUpdateAMD( static_cast( m_device ), reinterpret_cast( pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAntiLagUpdateAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAntiLagUpdateAMD.html + template ::type> + VULKAN_HPP_INLINE void Device::antiLagUpdateAMD( AntiLagDataAMD const & data, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkAntiLagUpdateAMD && "Function requires " ); +# endif + + d.vkAntiLagUpdateAMD( m_device, reinterpret_cast( &data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_present_wait2 === + + // wrapper function for command vkWaitForPresent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresent2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForPresent2KHR( + SwapchainKHR swapchain, PresentWait2InfoKHR const * pPresentWait2Info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkWaitForPresent2KHR( + static_cast( m_device ), static_cast( swapchain ), reinterpret_cast( pPresentWait2Info ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWaitForPresent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresent2KHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForPresent2KHR( + SwapchainKHR swapchain, PresentWait2InfoKHR const & presentWait2Info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkWaitForPresent2KHR && "Function requires " ); +# endif + + Result result = static_cast( + d.vkWaitForPresent2KHR( m_device, static_cast( swapchain ), reinterpret_cast( &presentWait2Info ) ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::waitForPresent2KHR", + { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitForPresent2KHR", { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR } ); +# endif + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_shader_object === + + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createShadersEXT( + uint32_t createInfoCount, ShaderCreateInfoEXT const * pCreateInfos, AllocationCallbacks const * pAllocator, ShaderEXT * pShaders, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateShadersEXT( static_cast( m_device ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pShaders ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createShadersEXT( + ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateShadersEXT && "Function requires " ); +# endif + + std::vector shaders( createInfos.size() ); + Result result = static_cast( d.vkCreateShadersEXT( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( shaders.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createShadersEXT", { Result::eSuccess, Result::eIncompatibleShaderBinaryEXT } ); + + return { result, shaders }; + } + + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createShadersEXT( + ArrayProxy const & createInfos, + Optional allocator, + ShaderEXTAllocator const & shaderEXTAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateShadersEXT && "Function requires " ); +# endif + + std::vector shaders( createInfos.size(), {}, shaderEXTAllocator ); + Result result = static_cast( d.vkCreateShadersEXT( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( shaders.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createShadersEXT", { Result::eSuccess, Result::eIncompatibleShaderBinaryEXT } ); + + return { result, shaders }; + } + + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createShaderEXT( + ShaderCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateShadersEXT && "Function requires " ); +# endif + + ShaderEXT shader; + Result result = static_cast( d.vkCreateShadersEXT( m_device, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &shader ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createShaderEXT", { Result::eSuccess, Result::eIncompatibleShaderBinaryEXT } ); + + return { result, shader }; + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, ShaderEXTAllocator>> Device::createShadersEXTUnique( + ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateShadersEXT && "Function requires " ); +# endif + + std::vector shaders( createInfos.size() ); + Result result = static_cast( d.vkCreateShadersEXT( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( shaders.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createShadersEXTUnique", { Result::eSuccess, Result::eIncompatibleShaderBinaryEXT } ); + std::vector, ShaderEXTAllocator> uniqueShaders; + uniqueShaders.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & shader : shaders ) + { + uniqueShaders.push_back( UniqueHandle( shader, deleter ) ); + } + return ResultValue, ShaderEXTAllocator>>( result, std::move( uniqueShaders ) ); + } + + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, ShaderEXTAllocator>> Device::createShadersEXTUnique( + ArrayProxy const & createInfos, + Optional allocator, + ShaderEXTAllocator const & shaderEXTAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateShadersEXT && "Function requires " ); +# endif + + std::vector shaders( createInfos.size() ); + Result result = static_cast( d.vkCreateShadersEXT( m_device, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( shaders.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createShadersEXTUnique", { Result::eSuccess, Result::eIncompatibleShaderBinaryEXT } ); + std::vector, ShaderEXTAllocator> uniqueShaders( shaderEXTAllocator ); + uniqueShaders.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & shader : shaders ) + { + uniqueShaders.push_back( UniqueHandle( shader, deleter ) ); + } + return ResultValue, ShaderEXTAllocator>>( result, std::move( uniqueShaders ) ); + } + + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createShaderEXTUnique( + ShaderCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateShadersEXT && "Function requires " ); +# endif + + ShaderEXT shader; + Result result = static_cast( d.vkCreateShadersEXT( m_device, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &shader ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createShaderEXTUnique", { Result::eSuccess, Result::eIncompatibleShaderBinaryEXT } ); + + return ResultValue>( + result, UniqueHandle( shader, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyShaderEXT( ShaderEXT shader, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyShaderEXT( + static_cast( m_device ), static_cast( shader ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyShaderEXT( ShaderEXT shader, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyShaderEXT && "Function requires " ); +# endif + + d.vkDestroyShaderEXT( m_device, static_cast( shader ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ShaderEXT shader, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyShaderEXT( + static_cast( m_device ), static_cast( shader ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ShaderEXT shader, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyShaderEXT && "Function requires " ); +# endif + + d.vkDestroyShaderEXT( m_device, static_cast( shader ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetShaderBinaryDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderBinaryDataEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getShaderBinaryDataEXT( ShaderEXT shader, size_t * pDataSize, void * pData, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetShaderBinaryDataEXT( static_cast( m_device ), static_cast( shader ), pDataSize, pData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetShaderBinaryDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderBinaryDataEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getShaderBinaryDataEXT( + ShaderEXT shader, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetShaderBinaryDataEXT && "Function requires " ); +# endif + + std::vector data; + size_t dataSize; + Result result; + do + { + result = static_cast( d.vkGetShaderBinaryDataEXT( m_device, static_cast( shader ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = + static_cast( d.vkGetShaderBinaryDataEXT( m_device, static_cast( shader ), &dataSize, reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getShaderBinaryDataEXT" ); + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + return detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetShaderBinaryDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderBinaryDataEXT.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getShaderBinaryDataEXT( + ShaderEXT shader, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetShaderBinaryDataEXT && "Function requires " ); +# endif + + std::vector data( uint8_tAllocator ); + size_t dataSize; + Result result; + do + { + result = static_cast( d.vkGetShaderBinaryDataEXT( m_device, static_cast( shader ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = + static_cast( d.vkGetShaderBinaryDataEXT( m_device, static_cast( shader ), &dataSize, reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getShaderBinaryDataEXT" ); + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + return detail::createResultValueType( result, std::move( data ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadersEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindShadersEXT( + uint32_t stageCount, ShaderStageFlagBits const * pStages, ShaderEXT const * pShaders, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindShadersEXT( static_cast( m_commandBuffer ), + stageCount, + reinterpret_cast( pStages ), + reinterpret_cast( pShaders ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadersEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindShadersEXT( + ArrayProxy const & stages, ArrayProxy const & shaders, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindShadersEXT && "Function requires " ); +# endif +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( stages.size() == shaders.size() ); +# else + if ( stages.size() != shaders.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindShadersEXT: stages.size() != shaders.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + d.vkCmdBindShadersEXT( m_commandBuffer, + stages.size(), + reinterpret_cast( stages.data() ), + reinterpret_cast( shaders.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDepthClampRangeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampRangeEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthClampRangeEXT( + DepthClampModeEXT depthClampMode, DepthClampRangeEXT const * pDepthClampRange, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDepthClampRangeEXT( static_cast( m_commandBuffer ), + static_cast( depthClampMode ), + reinterpret_cast( pDepthClampRange ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetDepthClampRangeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampRangeEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDepthClampRangeEXT( + DepthClampModeEXT depthClampMode, Optional depthClampRange, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetDepthClampRangeEXT && + "Function requires or " ); +# endif + + d.vkCmdSetDepthClampRangeEXT( + m_commandBuffer, static_cast( depthClampMode ), reinterpret_cast( depthClampRange.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_pipeline_binary === + + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createPipelineBinariesKHR( + PipelineBinaryCreateInfoKHR const * pCreateInfo, AllocationCallbacks const * pAllocator, PipelineBinaryHandlesInfoKHR * pBinaries, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreatePipelineBinariesKHR( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pBinaries ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createPipelineBinariesKHR( + PipelineBinaryCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePipelineBinariesKHR && "Function requires " ); +# endif + + std::vector pipelineBinaries; + PipelineBinaryHandlesInfoKHR binaries; + Result result; + if ( createInfo.pKeysAndDataInfo ) + { + VULKAN_HPP_ASSERT( !createInfo.pipeline && !createInfo.pPipelineCreateInfo ); + pipelineBinaries.resize( createInfo.pKeysAndDataInfo->binaryCount ); + binaries.pipelineBinaryCount = createInfo.pKeysAndDataInfo->binaryCount; + binaries.pPipelineBinaries = pipelineBinaries.data(); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + } + else + { + VULKAN_HPP_ASSERT( !createInfo.pipeline ^ !createInfo.pPipelineCreateInfo ); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + if ( result == Result::eSuccess ) + { + pipelineBinaries.resize( binaries.pipelineBinaryCount ); + binaries.pPipelineBinaries = pipelineBinaries.data(); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + } + } + + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineBinariesKHR", { Result::eSuccess, Result::eIncomplete, Result::ePipelineBinaryMissingKHR } ); + + return { result, pipelineBinaries }; + } + + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createPipelineBinariesKHR( + PipelineBinaryCreateInfoKHR const & createInfo, + Optional allocator, + PipelineBinaryKHRAllocator const & pipelineBinaryKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePipelineBinariesKHR && "Function requires " ); +# endif + + std::vector pipelineBinaries( pipelineBinaryKHRAllocator ); + PipelineBinaryHandlesInfoKHR binaries; + Result result; + if ( createInfo.pKeysAndDataInfo ) + { + VULKAN_HPP_ASSERT( !createInfo.pipeline && !createInfo.pPipelineCreateInfo ); + pipelineBinaries.resize( createInfo.pKeysAndDataInfo->binaryCount ); + binaries.pipelineBinaryCount = createInfo.pKeysAndDataInfo->binaryCount; + binaries.pPipelineBinaries = pipelineBinaries.data(); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + } + else + { + VULKAN_HPP_ASSERT( !createInfo.pipeline ^ !createInfo.pPipelineCreateInfo ); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + if ( result == Result::eSuccess ) + { + pipelineBinaries.resize( binaries.pipelineBinaryCount ); + binaries.pPipelineBinaries = pipelineBinaries.data(); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + } + } + + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineBinariesKHR", { Result::eSuccess, Result::eIncomplete, Result::ePipelineBinaryMissingKHR } ); + + return { result, pipelineBinaries }; + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineBinaryKHRAllocator>> + Device::createPipelineBinariesKHRUnique( PipelineBinaryCreateInfoKHR const & createInfo, Optional allocator, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePipelineBinariesKHR && "Function requires " ); +# endif + + std::vector pipelineBinaries; + PipelineBinaryHandlesInfoKHR binaries; + Result result; + if ( createInfo.pKeysAndDataInfo ) + { + VULKAN_HPP_ASSERT( !createInfo.pipeline && !createInfo.pPipelineCreateInfo ); + pipelineBinaries.resize( createInfo.pKeysAndDataInfo->binaryCount ); + binaries.pipelineBinaryCount = createInfo.pKeysAndDataInfo->binaryCount; + binaries.pPipelineBinaries = pipelineBinaries.data(); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + } + else + { + VULKAN_HPP_ASSERT( !createInfo.pipeline ^ !createInfo.pPipelineCreateInfo ); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + if ( result == Result::eSuccess ) + { + pipelineBinaries.resize( binaries.pipelineBinaryCount ); + binaries.pPipelineBinaries = pipelineBinaries.data(); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + } + } + + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineBinariesKHRUnique", + { Result::eSuccess, Result::eIncomplete, Result::ePipelineBinaryMissingKHR } ); + std::vector, PipelineBinaryKHRAllocator> uniquePipelineBinaries; + uniquePipelineBinaries.reserve( pipelineBinaries.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipelineBinary : pipelineBinaries ) + { + uniquePipelineBinaries.push_back( UniqueHandle( pipelineBinary, deleter ) ); + } + return ResultValue, PipelineBinaryKHRAllocator>>( result, std::move( uniquePipelineBinaries ) ); + } + + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineBinaryKHRAllocator>> + Device::createPipelineBinariesKHRUnique( PipelineBinaryCreateInfoKHR const & createInfo, + Optional allocator, + PipelineBinaryKHRAllocator const & pipelineBinaryKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreatePipelineBinariesKHR && "Function requires " ); +# endif + + std::vector pipelineBinaries; + PipelineBinaryHandlesInfoKHR binaries; + Result result; + if ( createInfo.pKeysAndDataInfo ) + { + VULKAN_HPP_ASSERT( !createInfo.pipeline && !createInfo.pPipelineCreateInfo ); + pipelineBinaries.resize( createInfo.pKeysAndDataInfo->binaryCount ); + binaries.pipelineBinaryCount = createInfo.pKeysAndDataInfo->binaryCount; + binaries.pPipelineBinaries = pipelineBinaries.data(); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + } + else + { + VULKAN_HPP_ASSERT( !createInfo.pipeline ^ !createInfo.pPipelineCreateInfo ); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + if ( result == Result::eSuccess ) + { + pipelineBinaries.resize( binaries.pipelineBinaryCount ); + binaries.pPipelineBinaries = pipelineBinaries.data(); + result = static_cast( d.vkCreatePipelineBinariesKHR( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + } + } + + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineBinariesKHRUnique", + { Result::eSuccess, Result::eIncomplete, Result::ePipelineBinaryMissingKHR } ); + std::vector, PipelineBinaryKHRAllocator> uniquePipelineBinaries( pipelineBinaryKHRAllocator ); + uniquePipelineBinaries.reserve( pipelineBinaries.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipelineBinary : pipelineBinaries ) + { + uniquePipelineBinaries.push_back( UniqueHandle( pipelineBinary, deleter ) ); + } + return ResultValue, PipelineBinaryKHRAllocator>>( result, std::move( uniquePipelineBinaries ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineBinaryKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPipelineBinaryKHR( PipelineBinaryKHR pipelineBinary, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineBinaryKHR( + static_cast( m_device ), static_cast( pipelineBinary ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineBinaryKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyPipelineBinaryKHR( PipelineBinaryKHR pipelineBinary, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPipelineBinaryKHR && "Function requires " ); +# endif + + d.vkDestroyPipelineBinaryKHR( + m_device, static_cast( pipelineBinary ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineBinaryKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( PipelineBinaryKHR pipelineBinary, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyPipelineBinaryKHR( + static_cast( m_device ), static_cast( pipelineBinary ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineBinaryKHR.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( PipelineBinaryKHR pipelineBinary, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyPipelineBinaryKHR && "Function requires " ); +# endif + + d.vkDestroyPipelineBinaryKHR( + m_device, static_cast( pipelineBinary ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineKeyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineKeyKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineKeyKHR( + PipelineCreateInfoKHR const * pPipelineCreateInfo, PipelineBinaryKeyKHR * pPipelineKey, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPipelineKeyKHR( static_cast( m_device ), + reinterpret_cast( pPipelineCreateInfo ), + reinterpret_cast( pPipelineKey ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineKeyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineKeyKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getPipelineKeyKHR( + Optional pipelineCreateInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineKeyKHR && "Function requires " ); +# endif + + PipelineBinaryKeyKHR pipelineKey; + Result result = static_cast( d.vkGetPipelineKeyKHR( + m_device, reinterpret_cast( pipelineCreateInfo.get() ), reinterpret_cast( &pipelineKey ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineKeyKHR" ); + + return detail::createResultValueType( result, std::move( pipelineKey ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineBinaryDataKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineBinaryDataKHR( PipelineBinaryDataInfoKHR const * pInfo, + PipelineBinaryKeyKHR * pPipelineBinaryKey, + size_t * pPipelineBinaryDataSize, + void * pPipelineBinaryData, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPipelineBinaryDataKHR( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pPipelineBinaryKey ), + pPipelineBinaryDataSize, + pPipelineBinaryData ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineBinaryDataKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>>::type + Device::getPipelineBinaryDataKHR( PipelineBinaryDataInfoKHR const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineBinaryDataKHR && "Function requires " ); +# endif + + std::pair> data_; + PipelineBinaryKeyKHR & pipelineBinaryKey = data_.first; + std::vector & pipelineBinaryData = data_.second; + size_t pipelineBinaryDataSize; + Result result = static_cast( d.vkGetPipelineBinaryDataKHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &pipelineBinaryKey ), + &pipelineBinaryDataSize, + nullptr ) ); + if ( result == Result::eSuccess ) + { + pipelineBinaryData.resize( pipelineBinaryDataSize ); + result = static_cast( d.vkGetPipelineBinaryDataKHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &pipelineBinaryKey ), + &pipelineBinaryDataSize, + reinterpret_cast( pipelineBinaryData.data() ) ) ); + } + + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineBinaryDataKHR" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineBinaryDataKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>>::type + Device::getPipelineBinaryDataKHR( PipelineBinaryDataInfoKHR const & info, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPipelineBinaryDataKHR && "Function requires " ); +# endif + + std::pair> data_( + std::piecewise_construct, std::forward_as_tuple(), std::forward_as_tuple( uint8_tAllocator ) ); + PipelineBinaryKeyKHR & pipelineBinaryKey = data_.first; + std::vector & pipelineBinaryData = data_.second; + size_t pipelineBinaryDataSize; + Result result = static_cast( d.vkGetPipelineBinaryDataKHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &pipelineBinaryKey ), + &pipelineBinaryDataSize, + nullptr ) ); + if ( result == Result::eSuccess ) + { + pipelineBinaryData.resize( pipelineBinaryDataSize ); + result = static_cast( d.vkGetPipelineBinaryDataKHR( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &pipelineBinaryKey ), + &pipelineBinaryDataSize, + reinterpret_cast( pipelineBinaryData.data() ) ) ); + } + + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getPipelineBinaryDataKHR" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkReleaseCapturedPipelineDataKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseCapturedPipelineDataKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::releaseCapturedPipelineDataKHR( + ReleaseCapturedPipelineDataInfoKHR const * pInfo, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkReleaseCapturedPipelineDataKHR( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pAllocator ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseCapturedPipelineDataKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseCapturedPipelineDataKHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::releaseCapturedPipelineDataKHR( + ReleaseCapturedPipelineDataInfoKHR const & info, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkReleaseCapturedPipelineDataKHR && "Function requires " ); +# endif + + Result result = static_cast( d.vkReleaseCapturedPipelineDataKHR( + m_device, reinterpret_cast( &info ), reinterpret_cast( allocator.get() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::releaseCapturedPipelineDataKHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_QCOM_tile_properties === + + // wrapper function for command vkGetFramebufferTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFramebufferTilePropertiesQCOM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFramebufferTilePropertiesQCOM( + Framebuffer framebuffer, uint32_t * pPropertiesCount, TilePropertiesQCOM * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetFramebufferTilePropertiesQCOM( static_cast( m_device ), + static_cast( framebuffer ), + pPropertiesCount, + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetFramebufferTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFramebufferTilePropertiesQCOM.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getFramebufferTilePropertiesQCOM( Framebuffer framebuffer, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetFramebufferTilePropertiesQCOM && "Function requires " ); +# endif + + std::vector properties; + uint32_t propertiesCount; + Result result; + do + { + result = static_cast( d.vkGetFramebufferTilePropertiesQCOM( m_device, static_cast( framebuffer ), &propertiesCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertiesCount ) + { + properties.resize( propertiesCount ); + result = static_cast( d.vkGetFramebufferTilePropertiesQCOM( + m_device, static_cast( framebuffer ), &propertiesCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFramebufferTilePropertiesQCOM" ); + VULKAN_HPP_ASSERT( propertiesCount <= properties.size() ); + if ( propertiesCount < properties.size() ) + { + properties.resize( propertiesCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetFramebufferTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFramebufferTilePropertiesQCOM.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getFramebufferTilePropertiesQCOM( Framebuffer framebuffer, TilePropertiesQCOMAllocator const & tilePropertiesQCOMAllocator, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetFramebufferTilePropertiesQCOM && "Function requires " ); +# endif + + std::vector properties( tilePropertiesQCOMAllocator ); + uint32_t propertiesCount; + Result result; + do + { + result = static_cast( d.vkGetFramebufferTilePropertiesQCOM( m_device, static_cast( framebuffer ), &propertiesCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertiesCount ) + { + properties.resize( propertiesCount ); + result = static_cast( d.vkGetFramebufferTilePropertiesQCOM( + m_device, static_cast( framebuffer ), &propertiesCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFramebufferTilePropertiesQCOM" ); + VULKAN_HPP_ASSERT( propertiesCount <= properties.size() ); + if ( propertiesCount < properties.size() ) + { + properties.resize( propertiesCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDynamicRenderingTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDynamicRenderingTilePropertiesQCOM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getDynamicRenderingTilePropertiesQCOM( + RenderingInfo const * pRenderingInfo, TilePropertiesQCOM * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDynamicRenderingTilePropertiesQCOM( static_cast( m_device ), + reinterpret_cast( pRenderingInfo ), + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDynamicRenderingTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDynamicRenderingTilePropertiesQCOM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getDynamicRenderingTilePropertiesQCOM( + RenderingInfo const & renderingInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDynamicRenderingTilePropertiesQCOM && "Function requires " ); +# endif + + TilePropertiesQCOM properties; + Result result = static_cast( d.vkGetDynamicRenderingTilePropertiesQCOM( + m_device, reinterpret_cast( &renderingInfo ), reinterpret_cast( &properties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getDynamicRenderingTilePropertiesQCOM" ); + + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_swapchain_maintenance1 === + + // wrapper function for command vkReleaseSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::releaseSwapchainImagesKHR( ReleaseSwapchainImagesInfoKHR const * pReleaseInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkReleaseSwapchainImagesKHR( static_cast( m_device ), reinterpret_cast( pReleaseInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesKHR.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::releaseSwapchainImagesKHR( + ReleaseSwapchainImagesInfoKHR const & releaseInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkReleaseSwapchainImagesKHR && + "Function requires or " ); +# endif + + Result result = static_cast( d.vkReleaseSwapchainImagesKHR( m_device, reinterpret_cast( &releaseInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::releaseSwapchainImagesKHR" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_cooperative_vector === + + // wrapper function for command vkGetPhysicalDeviceCooperativeVectorPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeVectorPropertiesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getCooperativeVectorPropertiesNV( + uint32_t * pPropertyCount, CooperativeVectorPropertiesNV * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceCooperativeVectorPropertiesNV( + static_cast( m_physicalDevice ), pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCooperativeVectorPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeVectorPropertiesNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCooperativeVectorPropertiesNV( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCooperativeVectorPropertiesNV && + "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCooperativeVectorPropertiesNV( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceCooperativeVectorPropertiesNV( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeVectorPropertiesNV" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceCooperativeVectorPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeVectorPropertiesNV.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCooperativeVectorPropertiesNV( CooperativeVectorPropertiesNVAllocator const & cooperativeVectorPropertiesNVAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCooperativeVectorPropertiesNV && + "Function requires " ); +# endif + + std::vector properties( cooperativeVectorPropertiesNVAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCooperativeVectorPropertiesNV( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceCooperativeVectorPropertiesNV( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeVectorPropertiesNV" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkConvertCooperativeVectorMatrixNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::convertCooperativeVectorMatrixNV( ConvertCooperativeVectorMatrixInfoNV const * pInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkConvertCooperativeVectorMatrixNV( static_cast( m_device ), reinterpret_cast( pInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkConvertCooperativeVectorMatrixNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::convertCooperativeVectorMatrixNV( ConvertCooperativeVectorMatrixInfoNV const & info, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkConvertCooperativeVectorMatrixNV && "Function requires " ); +# endif + + Result result = + static_cast( d.vkConvertCooperativeVectorMatrixNV( m_device, reinterpret_cast( &info ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::convertCooperativeVectorMatrixNV", { Result::eSuccess, Result::eIncomplete } ); + + return static_cast( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdConvertCooperativeVectorMatrixNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::convertCooperativeVectorMatrixNV( + uint32_t infoCount, ConvertCooperativeVectorMatrixInfoNV const * pInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdConvertCooperativeVectorMatrixNV( + static_cast( m_commandBuffer ), infoCount, reinterpret_cast( pInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdConvertCooperativeVectorMatrixNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::convertCooperativeVectorMatrixNV( ArrayProxy const & infos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdConvertCooperativeVectorMatrixNV && "Function requires " ); +# endif + + d.vkCmdConvertCooperativeVectorMatrixNV( m_commandBuffer, infos.size(), reinterpret_cast( infos.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_low_latency2 === + + // wrapper function for command vkSetLatencySleepModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencySleepModeNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setLatencySleepModeNV( + SwapchainKHR swapchain, LatencySleepModeInfoNV const * pSleepModeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkSetLatencySleepModeNV( + static_cast( m_device ), static_cast( swapchain ), reinterpret_cast( pSleepModeInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetLatencySleepModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencySleepModeNV.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setLatencySleepModeNV( + SwapchainKHR swapchain, LatencySleepModeInfoNV const & sleepModeInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetLatencySleepModeNV && "Function requires " ); +# endif + + Result result = static_cast( + d.vkSetLatencySleepModeNV( m_device, static_cast( swapchain ), reinterpret_cast( &sleepModeInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setLatencySleepModeNV" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkLatencySleepNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkLatencySleepNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::latencySleepNV( SwapchainKHR swapchain, LatencySleepInfoNV const * pSleepInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkLatencySleepNV( + static_cast( m_device ), static_cast( swapchain ), reinterpret_cast( pSleepInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkLatencySleepNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkLatencySleepNV.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::latencySleepNV( + SwapchainKHR swapchain, LatencySleepInfoNV const & sleepInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkLatencySleepNV && "Function requires " ); +# endif + + Result result = static_cast( + d.vkLatencySleepNV( m_device, static_cast( swapchain ), reinterpret_cast( &sleepInfo ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::latencySleepNV" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSetLatencyMarkerNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencyMarkerNV.html + template ::type> + VULKAN_HPP_INLINE void Device::setLatencyMarkerNV( SwapchainKHR swapchain, SetLatencyMarkerInfoNV const * pLatencyMarkerInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkSetLatencyMarkerNV( + static_cast( m_device ), static_cast( swapchain ), reinterpret_cast( pLatencyMarkerInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetLatencyMarkerNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencyMarkerNV.html + template ::type> + VULKAN_HPP_INLINE void Device::setLatencyMarkerNV( SwapchainKHR swapchain, SetLatencyMarkerInfoNV const & latencyMarkerInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkSetLatencyMarkerNV && "Function requires " ); +# endif + + d.vkSetLatencyMarkerNV( m_device, static_cast( swapchain ), reinterpret_cast( &latencyMarkerInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetLatencyTimingsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetLatencyTimingsNV.html + template ::type> + VULKAN_HPP_INLINE void Device::getLatencyTimingsNV( SwapchainKHR swapchain, GetLatencyMarkerInfoNV * pLatencyMarkerInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetLatencyTimingsNV( + static_cast( m_device ), static_cast( swapchain ), reinterpret_cast( pLatencyMarkerInfo ) ); + } + + // wrapper function for command vkQueueNotifyOutOfBandNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueNotifyOutOfBandNV.html + template ::type> + VULKAN_HPP_INLINE void Queue::notifyOutOfBandNV( OutOfBandQueueTypeInfoNV const * pQueueTypeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkQueueNotifyOutOfBandNV( static_cast( m_queue ), reinterpret_cast( pQueueTypeInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueNotifyOutOfBandNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueNotifyOutOfBandNV.html + template ::type> + VULKAN_HPP_INLINE void Queue::notifyOutOfBandNV( OutOfBandQueueTypeInfoNV const & queueTypeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkQueueNotifyOutOfBandNV && "Function requires " ); +# endif + + d.vkQueueNotifyOutOfBandNV( m_queue, reinterpret_cast( &queueTypeInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_cooperative_matrix === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getCooperativeMatrixPropertiesKHR( + uint32_t * pPropertyCount, CooperativeMatrixPropertiesKHR * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( + static_cast( m_physicalDevice ), pPropertyCount, reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR.html + template < + typename CooperativeMatrixPropertiesKHRAllocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixPropertiesKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR && + "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR.html + template < + typename CooperativeMatrixPropertiesKHRAllocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixPropertiesKHR( CooperativeMatrixPropertiesKHRAllocator const & cooperativeMatrixPropertiesKHRAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR && + "Function requires " ); +# endif + + std::vector properties( cooperativeMatrixPropertiesKHRAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_ARM_data_graph === + + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDataGraphPipelinesARM( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + uint32_t createInfoCount, + DataGraphPipelineCreateInfoARM const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDataGraphPipelinesARM( static_cast( m_device ), + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfoCount, + reinterpret_cast( pCreateInfos ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pPipelines ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createDataGraphPipelinesARM( + DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDataGraphPipelinesARM && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateDataGraphPipelinesARM( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createDataGraphPipelinesARM", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createDataGraphPipelinesARM( + DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDataGraphPipelinesARM && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size(), {}, pipelineAllocator ); + Result result = static_cast( d.vkCreateDataGraphPipelinesARM( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createDataGraphPipelinesARM", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + + return { result, pipelines }; + } + + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createDataGraphPipelineARM( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + DataGraphPipelineCreateInfoARM const & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDataGraphPipelinesARM && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateDataGraphPipelinesARM( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDataGraphPipelineARM", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + + return { result, pipeline }; + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createDataGraphPipelinesARMUnique( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDataGraphPipelinesARM && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateDataGraphPipelinesARM( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createDataGraphPipelinesARMUnique", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines; + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template >::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> + Device::createDataGraphPipelinesARMUnique( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDataGraphPipelinesARM && "Function requires " ); +# endif + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( d.vkCreateDataGraphPipelinesARM( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + detail::resultCheck( result, + VULKAN_HPP_NAMESPACE_STRING "::Device::createDataGraphPipelinesARMUnique", + { Result::eSuccess, Result::ePipelineCompileRequiredEXT }, + m_device, + pipelines, + allocator.get(), + d ); + std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); + uniquePipelines.reserve( createInfos.size() ); + detail::ObjectDestroy deleter( *this, allocator, d ); + for ( auto const & pipeline : pipelines ) + { + uniquePipelines.push_back( UniqueHandle( pipeline, deleter ) ); + } + return ResultValue, PipelineAllocator>>( result, std::move( uniquePipelines ) ); + } + + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createDataGraphPipelineARMUnique( + DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + DataGraphPipelineCreateInfoARM const & createInfo, + Optional allocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDataGraphPipelinesARM && "Function requires " ); +# endif + + Pipeline pipeline; + Result result = static_cast( d.vkCreateDataGraphPipelinesARM( m_device, + static_cast( deferredOperation ), + static_cast( pipelineCache ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + detail::resultCheck( + result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDataGraphPipelineARMUnique", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + + return ResultValue>( + result, UniqueHandle( pipeline, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelineSessionARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDataGraphPipelineSessionARM( DataGraphPipelineSessionCreateInfoARM const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DataGraphPipelineSessionARM * pSession, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateDataGraphPipelineSessionARM( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSession ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelineSessionARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createDataGraphPipelineSessionARM( + DataGraphPipelineSessionCreateInfoARM const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDataGraphPipelineSessionARM && "Function requires " ); +# endif + + DataGraphPipelineSessionARM session; + Result result = + static_cast( d.vkCreateDataGraphPipelineSessionARM( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &session ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDataGraphPipelineSessionARM" ); + + return detail::createResultValueType( result, std::move( session ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelineSessionARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createDataGraphPipelineSessionARMUnique( + DataGraphPipelineSessionCreateInfoARM const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateDataGraphPipelineSessionARM && "Function requires " ); +# endif + + DataGraphPipelineSessionARM session; + Result result = + static_cast( d.vkCreateDataGraphPipelineSessionARM( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &session ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createDataGraphPipelineSessionARMUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( session, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDataGraphPipelineSessionBindPointRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionBindPointRequirementsARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getDataGraphPipelineSessionBindPointRequirementsARM( + DataGraphPipelineSessionBindPointRequirementsInfoARM const * pInfo, + uint32_t * pBindPointRequirementCount, + DataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDataGraphPipelineSessionBindPointRequirementsARM( + static_cast( m_device ), + reinterpret_cast( pInfo ), + pBindPointRequirementCount, + reinterpret_cast( pBindPointRequirements ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDataGraphPipelineSessionBindPointRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionBindPointRequirementsARM.html + template ::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getDataGraphPipelineSessionBindPointRequirementsARM( DataGraphPipelineSessionBindPointRequirementsInfoARM const & info, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDataGraphPipelineSessionBindPointRequirementsARM && + "Function requires " ); +# endif + + std::vector bindPointRequirements; + uint32_t bindPointRequirementCount; + Result result; + do + { + result = static_cast( d.vkGetDataGraphPipelineSessionBindPointRequirementsARM( + m_device, reinterpret_cast( &info ), &bindPointRequirementCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && bindPointRequirementCount ) + { + bindPointRequirements.resize( bindPointRequirementCount ); + result = static_cast( d.vkGetDataGraphPipelineSessionBindPointRequirementsARM( + m_device, + reinterpret_cast( &info ), + &bindPointRequirementCount, + reinterpret_cast( bindPointRequirements.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getDataGraphPipelineSessionBindPointRequirementsARM" ); + VULKAN_HPP_ASSERT( bindPointRequirementCount <= bindPointRequirements.size() ); + if ( bindPointRequirementCount < bindPointRequirements.size() ) + { + bindPointRequirements.resize( bindPointRequirementCount ); + } + return detail::createResultValueType( result, std::move( bindPointRequirements ) ); + } + + // wrapper function for command vkGetDataGraphPipelineSessionBindPointRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionBindPointRequirementsARM.html + template ::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + Device::getDataGraphPipelineSessionBindPointRequirementsARM( + DataGraphPipelineSessionBindPointRequirementsInfoARM const & info, + DataGraphPipelineSessionBindPointRequirementARMAllocator const & dataGraphPipelineSessionBindPointRequirementARMAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDataGraphPipelineSessionBindPointRequirementsARM && + "Function requires " ); +# endif + + std::vector bindPointRequirements( + dataGraphPipelineSessionBindPointRequirementARMAllocator ); + uint32_t bindPointRequirementCount; + Result result; + do + { + result = static_cast( d.vkGetDataGraphPipelineSessionBindPointRequirementsARM( + m_device, reinterpret_cast( &info ), &bindPointRequirementCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && bindPointRequirementCount ) + { + bindPointRequirements.resize( bindPointRequirementCount ); + result = static_cast( d.vkGetDataGraphPipelineSessionBindPointRequirementsARM( + m_device, + reinterpret_cast( &info ), + &bindPointRequirementCount, + reinterpret_cast( bindPointRequirements.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getDataGraphPipelineSessionBindPointRequirementsARM" ); + VULKAN_HPP_ASSERT( bindPointRequirementCount <= bindPointRequirements.size() ); + if ( bindPointRequirementCount < bindPointRequirements.size() ) + { + bindPointRequirements.resize( bindPointRequirementCount ); + } + return detail::createResultValueType( result, std::move( bindPointRequirements ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html + template ::type> + VULKAN_HPP_INLINE void Device::getDataGraphPipelineSessionMemoryRequirementsARM( + DataGraphPipelineSessionMemoryRequirementsInfoARM const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetDataGraphPipelineSessionMemoryRequirementsARM( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getDataGraphPipelineSessionMemoryRequirementsARM( + DataGraphPipelineSessionMemoryRequirementsInfoARM const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDataGraphPipelineSessionMemoryRequirementsARM && + "Function requires " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetDataGraphPipelineSessionMemoryRequirementsARM( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getDataGraphPipelineSessionMemoryRequirementsARM( + DataGraphPipelineSessionMemoryRequirementsInfoARM const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDataGraphPipelineSessionMemoryRequirementsARM && + "Function requires " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetDataGraphPipelineSessionMemoryRequirementsARM( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindDataGraphPipelineSessionMemoryARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindDataGraphPipelineSessionMemoryARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindDataGraphPipelineSessionMemoryARM( + uint32_t bindInfoCount, BindDataGraphPipelineSessionMemoryInfoARM const * pBindInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkBindDataGraphPipelineSessionMemoryARM( + static_cast( m_device ), bindInfoCount, reinterpret_cast( pBindInfos ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindDataGraphPipelineSessionMemoryARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindDataGraphPipelineSessionMemoryARM.html + template ::type> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindDataGraphPipelineSessionMemoryARM( + ArrayProxy const & bindInfos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkBindDataGraphPipelineSessionMemoryARM && "Function requires " ); +# endif + + Result result = static_cast( d.vkBindDataGraphPipelineSessionMemoryARM( + m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindDataGraphPipelineSessionMemoryARM" ); + + return detail::createResultValueType( result ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDataGraphPipelineSessionARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDataGraphPipelineSessionARM( + DataGraphPipelineSessionARM session, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDataGraphPipelineSessionARM( + static_cast( m_device ), static_cast( session ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDataGraphPipelineSessionARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyDataGraphPipelineSessionARM( + DataGraphPipelineSessionARM session, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDataGraphPipelineSessionARM && "Function requires " ); +# endif + + d.vkDestroyDataGraphPipelineSessionARM( + m_device, static_cast( session ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDataGraphPipelineSessionARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( DataGraphPipelineSessionARM session, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyDataGraphPipelineSessionARM( + static_cast( m_device ), static_cast( session ), reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDataGraphPipelineSessionARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( DataGraphPipelineSessionARM session, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyDataGraphPipelineSessionARM && "Function requires " ); +# endif + + d.vkDestroyDataGraphPipelineSessionARM( + m_device, static_cast( session ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDispatchDataGraphARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchDataGraphARM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchDataGraphARM( + DataGraphPipelineSessionARM session, DataGraphPipelineDispatchInfoARM const * pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDispatchDataGraphARM( static_cast( m_commandBuffer ), + static_cast( session ), + reinterpret_cast( pInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDispatchDataGraphARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchDataGraphARM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::dispatchDataGraphARM( + DataGraphPipelineSessionARM session, Optional info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDispatchDataGraphARM && "Function requires " ); +# endif + + d.vkCmdDispatchDataGraphARM( + m_commandBuffer, static_cast( session ), reinterpret_cast( info.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDataGraphPipelineAvailablePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineAvailablePropertiesARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getDataGraphPipelineAvailablePropertiesARM( + DataGraphPipelineInfoARM const * pPipelineInfo, uint32_t * pPropertiesCount, DataGraphPipelinePropertyARM * pProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDataGraphPipelineAvailablePropertiesARM( static_cast( m_device ), + reinterpret_cast( pPipelineInfo ), + pPropertiesCount, + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDataGraphPipelineAvailablePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineAvailablePropertiesARM.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getDataGraphPipelineAvailablePropertiesARM( DataGraphPipelineInfoARM const & pipelineInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDataGraphPipelineAvailablePropertiesARM && + "Function requires " ); +# endif + + std::vector properties; + uint32_t propertiesCount; + Result result; + do + { + result = static_cast( d.vkGetDataGraphPipelineAvailablePropertiesARM( + m_device, reinterpret_cast( &pipelineInfo ), &propertiesCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertiesCount ) + { + properties.resize( propertiesCount ); + result = + static_cast( d.vkGetDataGraphPipelineAvailablePropertiesARM( m_device, + reinterpret_cast( &pipelineInfo ), + &propertiesCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getDataGraphPipelineAvailablePropertiesARM" ); + VULKAN_HPP_ASSERT( propertiesCount <= properties.size() ); + if ( propertiesCount < properties.size() ) + { + properties.resize( propertiesCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDataGraphPipelineAvailablePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineAvailablePropertiesARM.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getDataGraphPipelineAvailablePropertiesARM( + DataGraphPipelineInfoARM const & pipelineInfo, DataGraphPipelinePropertyARMAllocator const & dataGraphPipelinePropertyARMAllocator, Dispatch const & d ) + const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDataGraphPipelineAvailablePropertiesARM && + "Function requires " ); +# endif + + std::vector properties( dataGraphPipelinePropertyARMAllocator ); + uint32_t propertiesCount; + Result result; + do + { + result = static_cast( d.vkGetDataGraphPipelineAvailablePropertiesARM( + m_device, reinterpret_cast( &pipelineInfo ), &propertiesCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertiesCount ) + { + properties.resize( propertiesCount ); + result = + static_cast( d.vkGetDataGraphPipelineAvailablePropertiesARM( m_device, + reinterpret_cast( &pipelineInfo ), + &propertiesCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getDataGraphPipelineAvailablePropertiesARM" ); + VULKAN_HPP_ASSERT( propertiesCount <= properties.size() ); + if ( propertiesCount < properties.size() ) + { + properties.resize( propertiesCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDataGraphPipelinePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelinePropertiesARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getDataGraphPipelinePropertiesARM( + DataGraphPipelineInfoARM const * pPipelineInfo, uint32_t propertiesCount, DataGraphPipelinePropertyQueryResultARM * pProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetDataGraphPipelinePropertiesARM( static_cast( m_device ), + reinterpret_cast( pPipelineInfo ), + propertiesCount, + reinterpret_cast( pProperties ) ) ); + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getQueueFamilyDataGraphPropertiesARM( + uint32_t queueFamilyIndex, + uint32_t * pQueueFamilyDataGraphPropertyCount, + QueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( static_cast( m_physicalDevice ), + queueFamilyIndex, + pQueueFamilyDataGraphPropertyCount, + reinterpret_cast( pQueueFamilyDataGraphProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.html + template < + typename QueueFamilyDataGraphPropertiesARMAllocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getQueueFamilyDataGraphPropertiesARM( uint32_t queueFamilyIndex, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM && + "Function requires " ); +# endif + + std::vector queueFamilyDataGraphProperties; + uint32_t queueFamilyDataGraphPropertyCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( m_physicalDevice, queueFamilyIndex, &queueFamilyDataGraphPropertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && queueFamilyDataGraphPropertyCount ) + { + queueFamilyDataGraphProperties.resize( queueFamilyDataGraphPropertyCount ); + result = static_cast( d.vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + m_physicalDevice, + queueFamilyIndex, + &queueFamilyDataGraphPropertyCount, + reinterpret_cast( queueFamilyDataGraphProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getQueueFamilyDataGraphPropertiesARM" ); + VULKAN_HPP_ASSERT( queueFamilyDataGraphPropertyCount <= queueFamilyDataGraphProperties.size() ); + if ( queueFamilyDataGraphPropertyCount < queueFamilyDataGraphProperties.size() ) + { + queueFamilyDataGraphProperties.resize( queueFamilyDataGraphPropertyCount ); + } + return detail::createResultValueType( result, std::move( queueFamilyDataGraphProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.html + template < + typename QueueFamilyDataGraphPropertiesARMAllocator, + typename Dispatch, + typename std::enable_if::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getQueueFamilyDataGraphPropertiesARM( + uint32_t queueFamilyIndex, QueueFamilyDataGraphPropertiesARMAllocator const & queueFamilyDataGraphPropertiesARMAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM && + "Function requires " ); +# endif + + std::vector queueFamilyDataGraphProperties( + queueFamilyDataGraphPropertiesARMAllocator ); + uint32_t queueFamilyDataGraphPropertyCount; + Result result; + do + { + result = static_cast( + d.vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( m_physicalDevice, queueFamilyIndex, &queueFamilyDataGraphPropertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && queueFamilyDataGraphPropertyCount ) + { + queueFamilyDataGraphProperties.resize( queueFamilyDataGraphPropertyCount ); + result = static_cast( d.vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + m_physicalDevice, + queueFamilyIndex, + &queueFamilyDataGraphPropertyCount, + reinterpret_cast( queueFamilyDataGraphProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getQueueFamilyDataGraphPropertiesARM" ); + VULKAN_HPP_ASSERT( queueFamilyDataGraphPropertyCount <= queueFamilyDataGraphProperties.size() ); + if ( queueFamilyDataGraphPropertyCount < queueFamilyDataGraphProperties.size() ) + { + queueFamilyDataGraphProperties.resize( queueFamilyDataGraphPropertyCount ); + } + return detail::createResultValueType( result, std::move( queueFamilyDataGraphProperties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM.html + template ::type> + VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyDataGraphProcessingEnginePropertiesARM( + PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const * pQueueFamilyDataGraphProcessingEngineInfo, + QueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + static_cast( m_physicalDevice ), + reinterpret_cast( pQueueFamilyDataGraphProcessingEngineInfo ), + reinterpret_cast( pQueueFamilyDataGraphProcessingEngineProperties ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE QueueFamilyDataGraphProcessingEnginePropertiesARM PhysicalDevice::getQueueFamilyDataGraphProcessingEnginePropertiesARM( + PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & queueFamilyDataGraphProcessingEngineInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM && + "Function requires " ); +# endif + + QueueFamilyDataGraphProcessingEnginePropertiesARM queueFamilyDataGraphProcessingEngineProperties; + d.vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + m_physicalDevice, + reinterpret_cast( &queueFamilyDataGraphProcessingEngineInfo ), + reinterpret_cast( &queueFamilyDataGraphProcessingEngineProperties ) ); + + return queueFamilyDataGraphProcessingEngineProperties; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + + // wrapper function for command vkCmdSetAttachmentFeedbackLoopEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAttachmentFeedbackLoopEnableEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setAttachmentFeedbackLoopEnableEXT( ImageAspectFlags aspectMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetAttachmentFeedbackLoopEnableEXT( static_cast( m_commandBuffer ), static_cast( aspectMask ) ); + } + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + + // wrapper function for command vkGetScreenBufferPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getScreenBufferPropertiesQNX( + struct _screen_buffer const * buffer, ScreenBufferPropertiesQNX * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetScreenBufferPropertiesQNX( static_cast( m_device ), buffer, reinterpret_cast( pProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetScreenBufferPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getScreenBufferPropertiesQNX( + struct _screen_buffer const & buffer, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetScreenBufferPropertiesQNX && "Function requires " ); +# endif + + ScreenBufferPropertiesQNX properties; + Result result = + static_cast( d.vkGetScreenBufferPropertiesQNX( m_device, &buffer, reinterpret_cast( &properties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getScreenBufferPropertiesQNX" ); + + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetScreenBufferPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getScreenBufferPropertiesQNX( + struct _screen_buffer const & buffer, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetScreenBufferPropertiesQNX && "Function requires " ); +# endif + + StructureChain structureChain; + ScreenBufferPropertiesQNX & properties = structureChain.template get(); + Result result = + static_cast( d.vkGetScreenBufferPropertiesQNX( m_device, &buffer, reinterpret_cast( &properties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getScreenBufferPropertiesQNX" ); + + return detail::createResultValueType( result, std::move( structureChain ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_line_rasterization === + + // wrapper function for command vkCmdSetLineStippleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setLineStippleKHR( uint32_t lineStippleFactor, uint16_t lineStipplePattern, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetLineStippleKHR( static_cast( m_commandBuffer ), lineStippleFactor, lineStipplePattern ); + } + + //=== VK_KHR_calibrated_timestamps === + + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getCalibrateableTimeDomainsKHR( + uint32_t * pTimeDomainCount, TimeDomainKHR * pTimeDomains, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( + static_cast( m_physicalDevice ), pTimeDomainCount, reinterpret_cast( pTimeDomains ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCalibrateableTimeDomainsKHR( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCalibrateableTimeDomainsKHR && + "Function requires or " ); +# endif + + std::vector timeDomains; + uint32_t timeDomainCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( m_physicalDevice, &timeDomainCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && timeDomainCount ) + { + timeDomains.resize( timeDomainCount ); + result = static_cast( + d.vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( m_physicalDevice, &timeDomainCount, reinterpret_cast( timeDomains.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsKHR" ); + VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); + if ( timeDomainCount < timeDomains.size() ) + { + timeDomains.resize( timeDomainCount ); + } + return detail::createResultValueType( result, std::move( timeDomains ) ); + } + + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCalibrateableTimeDomainsKHR( TimeDomainKHRAllocator const & timeDomainKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCalibrateableTimeDomainsKHR && + "Function requires or " ); +# endif + + std::vector timeDomains( timeDomainKHRAllocator ); + uint32_t timeDomainCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( m_physicalDevice, &timeDomainCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && timeDomainCount ) + { + timeDomains.resize( timeDomainCount ); + result = static_cast( + d.vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( m_physicalDevice, &timeDomainCount, reinterpret_cast( timeDomains.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsKHR" ); + VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); + if ( timeDomainCount < timeDomains.size() ) + { + timeDomains.resize( timeDomainCount ); + } + return detail::createResultValueType( result, std::move( timeDomains ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetCalibratedTimestampsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getCalibratedTimestampsKHR( + uint32_t timestampCount, CalibratedTimestampInfoKHR const * pTimestampInfos, uint64_t * pTimestamps, uint64_t * pMaxDeviation, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetCalibratedTimestampsKHR( static_cast( m_device ), + timestampCount, + reinterpret_cast( pTimestampInfos ), + pTimestamps, + pMaxDeviation ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetCalibratedTimestampsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, uint64_t>>::type + Device::getCalibratedTimestampsKHR( ArrayProxy const & timestampInfos, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetCalibratedTimestampsKHR && + "Function requires or " ); +# endif + + std::pair, uint64_t> data_( + std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) ); + std::vector & timestamps = data_.first; + uint64_t & maxDeviation = data_.second; + Result result = static_cast( d.vkGetCalibratedTimestampsKHR( + m_device, timestampInfos.size(), reinterpret_cast( timestampInfos.data() ), timestamps.data(), &maxDeviation ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsKHR" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetCalibratedTimestampsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, uint64_t>>::type + Device::getCalibratedTimestampsKHR( + ArrayProxy const & timestampInfos, Uint64_tAllocator const & uint64_tAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetCalibratedTimestampsKHR && + "Function requires or " ); +# endif + + std::pair, uint64_t> data_( + std::piecewise_construct, std::forward_as_tuple( timestampInfos.size(), uint64_tAllocator ), std::forward_as_tuple( 0 ) ); + std::vector & timestamps = data_.first; + uint64_t & maxDeviation = data_.second; + Result result = static_cast( d.vkGetCalibratedTimestampsKHR( + m_device, timestampInfos.size(), reinterpret_cast( timestampInfos.data() ), timestamps.data(), &maxDeviation ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsKHR" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetCalibratedTimestampsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getCalibratedTimestampKHR( + CalibratedTimestampInfoKHR const & timestampInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetCalibratedTimestampsKHR && + "Function requires or " ); +# endif + + std::pair data_; + uint64_t & timestamp = data_.first; + uint64_t & maxDeviation = data_.second; + Result result = static_cast( + d.vkGetCalibratedTimestampsKHR( m_device, 1, reinterpret_cast( ×tampInfo ), ×tamp, &maxDeviation ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampKHR" ); + + return detail::createResultValueType( result, std::move( data_ ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_maintenance6 === + + // wrapper function for command vkCmdBindDescriptorSets2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets2KHR( BindDescriptorSetsInfo const * pBindDescriptorSetsInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindDescriptorSets2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( pBindDescriptorSetsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindDescriptorSets2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets2KHR( BindDescriptorSetsInfo const & bindDescriptorSetsInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindDescriptorSets2KHR && "Function requires or " ); +# endif + + d.vkCmdBindDescriptorSets2KHR( m_commandBuffer, reinterpret_cast( &bindDescriptorSetsInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushConstants2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushConstants2KHR( PushConstantsInfo const * pPushConstantsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushConstants2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pPushConstantsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushConstants2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushConstants2KHR( PushConstantsInfo const & pushConstantsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPushConstants2KHR && "Function requires or " ); +# endif + + d.vkCmdPushConstants2KHR( m_commandBuffer, reinterpret_cast( &pushConstantsInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSet2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet2KHR( PushDescriptorSetInfo const * pPushDescriptorSetInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSet2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( pPushDescriptorSetInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSet2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet2KHR( PushDescriptorSetInfo const & pushDescriptorSetInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPushDescriptorSet2KHR && "Function requires or " ); +# endif + + d.vkCmdPushDescriptorSet2KHR( m_commandBuffer, reinterpret_cast( &pushDescriptorSetInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplate2KHR( PushDescriptorSetWithTemplateInfo const * pPushDescriptorSetWithTemplateInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPushDescriptorSetWithTemplate2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( pPushDescriptorSetWithTemplateInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplate2KHR( PushDescriptorSetWithTemplateInfo const & pushDescriptorSetWithTemplateInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPushDescriptorSetWithTemplate2KHR && + "Function requires or " ); +# endif + + d.vkCmdPushDescriptorSetWithTemplate2KHR( m_commandBuffer, + reinterpret_cast( &pushDescriptorSetWithTemplateInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDescriptorBufferOffsets2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsets2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDescriptorBufferOffsets2EXT( SetDescriptorBufferOffsetsInfoEXT const * pSetDescriptorBufferOffsetsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetDescriptorBufferOffsets2EXT( static_cast( m_commandBuffer ), + reinterpret_cast( pSetDescriptorBufferOffsetsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetDescriptorBufferOffsets2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsets2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setDescriptorBufferOffsets2EXT( SetDescriptorBufferOffsetsInfoEXT const & setDescriptorBufferOffsetsInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetDescriptorBufferOffsets2EXT && "Function requires " ); +# endif + + d.vkCmdSetDescriptorBufferOffsets2EXT( m_commandBuffer, reinterpret_cast( &setDescriptorBufferOffsetsInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplers2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBufferEmbeddedSamplers2EXT( + BindDescriptorBufferEmbeddedSamplersInfoEXT const * pBindDescriptorBufferEmbeddedSamplersInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( + static_cast( m_commandBuffer ), + reinterpret_cast( pBindDescriptorBufferEmbeddedSamplersInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplers2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBufferEmbeddedSamplers2EXT( + BindDescriptorBufferEmbeddedSamplersInfoEXT const & bindDescriptorBufferEmbeddedSamplersInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindDescriptorBufferEmbeddedSamplers2EXT && + "Function requires " ); +# endif + + d.vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( + m_commandBuffer, reinterpret_cast( &bindDescriptorBufferEmbeddedSamplersInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_QCOM_tile_memory_heap === + + // wrapper function for command vkCmdBindTileMemoryQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTileMemoryQCOM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindTileMemoryQCOM( TileMemoryBindInfoQCOM const * pTileMemoryBindInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBindTileMemoryQCOM( static_cast( m_commandBuffer ), reinterpret_cast( pTileMemoryBindInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindTileMemoryQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTileMemoryQCOM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::bindTileMemoryQCOM( Optional tileMemoryBindInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBindTileMemoryQCOM && "Function requires " ); +# endif + + d.vkCmdBindTileMemoryQCOM( m_commandBuffer, reinterpret_cast( tileMemoryBindInfo.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_copy_memory_indirect === + + // wrapper function for command vkCmdCopyMemoryIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryIndirectKHR( CopyMemoryIndirectInfoKHR const * pCopyMemoryIndirectInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMemoryIndirectKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pCopyMemoryIndirectInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryIndirectKHR( CopyMemoryIndirectInfoKHR const & copyMemoryIndirectInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyMemoryIndirectKHR && "Function requires " ); +# endif + + d.vkCmdCopyMemoryIndirectKHR( m_commandBuffer, reinterpret_cast( ©MemoryIndirectInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMemoryToImageIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToImageIndirectKHR( CopyMemoryToImageIndirectInfoKHR const * pCopyMemoryToImageIndirectInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdCopyMemoryToImageIndirectKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pCopyMemoryToImageIndirectInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryToImageIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectKHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToImageIndirectKHR( CopyMemoryToImageIndirectInfoKHR const & copyMemoryToImageIndirectInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdCopyMemoryToImageIndirectKHR && "Function requires " ); +# endif + + d.vkCmdCopyMemoryToImageIndirectKHR( m_commandBuffer, reinterpret_cast( ©MemoryToImageIndirectInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_memory_decompression === + + // wrapper function for command vkCmdDecompressMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryEXT( DecompressMemoryInfoEXT const * pDecompressMemoryInfoEXT, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDecompressMemoryEXT( static_cast( m_commandBuffer ), + reinterpret_cast( pDecompressMemoryInfoEXT ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDecompressMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryEXT( DecompressMemoryInfoEXT const & decompressMemoryInfoEXT, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdDecompressMemoryEXT && "Function requires " ); +# endif + + d.vkCmdDecompressMemoryEXT( m_commandBuffer, reinterpret_cast( &decompressMemoryInfoEXT ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDecompressMemoryIndirectCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryIndirectCountEXT( MemoryDecompressionMethodFlagsEXT decompressionMethod, + DeviceAddress indirectCommandsAddress, + DeviceAddress indirectCommandsCountAddress, + uint32_t maxDecompressionCount, + uint32_t stride, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdDecompressMemoryIndirectCountEXT( static_cast( m_commandBuffer ), + static_cast( decompressionMethod ), + static_cast( indirectCommandsAddress ), + static_cast( indirectCommandsCountAddress ), + maxDecompressionCount, + stride ); + } + + //=== VK_NV_external_compute_queue === + + // wrapper function for command vkCreateExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExternalComputeQueueNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createExternalComputeQueueNV( + ExternalComputeQueueCreateInfoNV const * pCreateInfo, AllocationCallbacks const * pAllocator, ExternalComputeQueueNV * pExternalQueue, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateExternalComputeQueueNV( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pExternalQueue ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExternalComputeQueueNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createExternalComputeQueueNV( + ExternalComputeQueueCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateExternalComputeQueueNV && "Function requires " ); +# endif + + ExternalComputeQueueNV externalQueue; + Result result = static_cast( d.vkCreateExternalComputeQueueNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &externalQueue ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createExternalComputeQueueNV" ); + + return detail::createResultValueType( result, std::move( externalQueue ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExternalComputeQueueNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createExternalComputeQueueNVUnique( + ExternalComputeQueueCreateInfoNV const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateExternalComputeQueueNV && "Function requires " ); +# endif + + ExternalComputeQueueNV externalQueue; + Result result = static_cast( d.vkCreateExternalComputeQueueNV( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &externalQueue ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createExternalComputeQueueNVUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( externalQueue, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyExternalComputeQueueNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyExternalComputeQueueNV( + ExternalComputeQueueNV externalQueue, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyExternalComputeQueueNV( static_cast( m_device ), + static_cast( externalQueue ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyExternalComputeQueueNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyExternalComputeQueueNV( + ExternalComputeQueueNV externalQueue, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyExternalComputeQueueNV && "Function requires " ); +# endif + + d.vkDestroyExternalComputeQueueNV( + m_device, static_cast( externalQueue ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyExternalComputeQueueNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ExternalComputeQueueNV externalQueue, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyExternalComputeQueueNV( static_cast( m_device ), + static_cast( externalQueue ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyExternalComputeQueueNV.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ExternalComputeQueueNV externalQueue, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyExternalComputeQueueNV && "Function requires " ); +# endif + + d.vkDestroyExternalComputeQueueNV( + m_device, static_cast( externalQueue ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetExternalComputeQueueDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExternalComputeQueueDataNV.html + template ::type> + VULKAN_HPP_INLINE void ExternalComputeQueueNV::getData( ExternalComputeQueueDataParamsNV * params, void * pData, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetExternalComputeQueueDataNV( + static_cast( m_externalComputeQueueNV ), reinterpret_cast( params ), pData ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetExternalComputeQueueDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExternalComputeQueueDataNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair ExternalComputeQueueNV::getData( Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetExternalComputeQueueDataNV && "Function requires " ); +# endif + + std::pair data_; + ExternalComputeQueueDataParamsNV & arams = data_.first; + DataType & data = data_.second; + d.vkGetExternalComputeQueueDataNV( m_externalComputeQueueNV, reinterpret_cast( &arams ), &data ); + + return data_; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_cluster_acceleration_structure === + + // wrapper function for command vkGetClusterAccelerationStructureBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetClusterAccelerationStructureBuildSizesNV.html + template ::type> + VULKAN_HPP_INLINE void Device::getClusterAccelerationStructureBuildSizesNV( + ClusterAccelerationStructureInputInfoNV const * pInfo, AccelerationStructureBuildSizesInfoKHR * pSizeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetClusterAccelerationStructureBuildSizesNV( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pSizeInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetClusterAccelerationStructureBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetClusterAccelerationStructureBuildSizesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureBuildSizesInfoKHR Device::getClusterAccelerationStructureBuildSizesNV( + ClusterAccelerationStructureInputInfoNV const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetClusterAccelerationStructureBuildSizesNV && + "Function requires " ); +# endif + + AccelerationStructureBuildSizesInfoKHR sizeInfo; + d.vkGetClusterAccelerationStructureBuildSizesNV( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &sizeInfo ) ); + + return sizeInfo; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBuildClusterAccelerationStructureIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildClusterAccelerationStructureIndirectNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildClusterAccelerationStructureIndirectNV( ClusterAccelerationStructureCommandsInfoNV const * pCommandInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBuildClusterAccelerationStructureIndirectNV( static_cast( m_commandBuffer ), + reinterpret_cast( pCommandInfos ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildClusterAccelerationStructureIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildClusterAccelerationStructureIndirectNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildClusterAccelerationStructureIndirectNV( ClusterAccelerationStructureCommandsInfoNV const & commandInfos, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBuildClusterAccelerationStructureIndirectNV && + "Function requires " ); +# endif + + d.vkCmdBuildClusterAccelerationStructureIndirectNV( m_commandBuffer, + reinterpret_cast( &commandInfos ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_partitioned_acceleration_structure === + + // wrapper function for command vkGetPartitionedAccelerationStructuresBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPartitionedAccelerationStructuresBuildSizesNV.html + template ::type> + VULKAN_HPP_INLINE void Device::getPartitionedAccelerationStructuresBuildSizesNV( + PartitionedAccelerationStructureInstancesInputNV const * pInfo, AccelerationStructureBuildSizesInfoKHR * pSizeInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetPartitionedAccelerationStructuresBuildSizesNV( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pSizeInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPartitionedAccelerationStructuresBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPartitionedAccelerationStructuresBuildSizesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureBuildSizesInfoKHR Device::getPartitionedAccelerationStructuresBuildSizesNV( + PartitionedAccelerationStructureInstancesInputNV const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPartitionedAccelerationStructuresBuildSizesNV && + "Function requires " ); +# endif + + AccelerationStructureBuildSizesInfoKHR sizeInfo; + d.vkGetPartitionedAccelerationStructuresBuildSizesNV( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &sizeInfo ) ); + + return sizeInfo; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBuildPartitionedAccelerationStructuresNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildPartitionedAccelerationStructuresNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildPartitionedAccelerationStructuresNV( BuildPartitionedAccelerationStructureInfoNV const * pBuildInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBuildPartitionedAccelerationStructuresNV( static_cast( m_commandBuffer ), + reinterpret_cast( pBuildInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildPartitionedAccelerationStructuresNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildPartitionedAccelerationStructuresNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::buildPartitionedAccelerationStructuresNV( BuildPartitionedAccelerationStructureInfoNV const & buildInfo, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBuildPartitionedAccelerationStructuresNV && + "Function requires " ); +# endif + + d.vkCmdBuildPartitionedAccelerationStructuresNV( m_commandBuffer, reinterpret_cast( &buildInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_device_generated_commands === + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::getGeneratedCommandsMemoryRequirementsEXT( + GeneratedCommandsMemoryRequirementsInfoEXT const * pInfo, MemoryRequirements2 * pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkGetGeneratedCommandsMemoryRequirementsEXT( static_cast( m_device ), + reinterpret_cast( pInfo ), + reinterpret_cast( pMemoryRequirements ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 Device::getGeneratedCommandsMemoryRequirementsEXT( + GeneratedCommandsMemoryRequirementsInfoEXT const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetGeneratedCommandsMemoryRequirementsEXT && + "Function requires " ); +# endif + + MemoryRequirements2 memoryRequirements; + d.vkGetGeneratedCommandsMemoryRequirementsEXT( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getGeneratedCommandsMemoryRequirementsEXT( + GeneratedCommandsMemoryRequirementsInfoEXT const & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetGeneratedCommandsMemoryRequirementsEXT && + "Function requires " ); +# endif + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + d.vkGetGeneratedCommandsMemoryRequirementsEXT( m_device, + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPreprocessGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsEXT( + GeneratedCommandsInfoEXT const * pGeneratedCommandsInfo, CommandBuffer stateCommandBuffer, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdPreprocessGeneratedCommandsEXT( static_cast( m_commandBuffer ), + reinterpret_cast( pGeneratedCommandsInfo ), + static_cast( stateCommandBuffer ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPreprocessGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsEXT( + GeneratedCommandsInfoEXT const & generatedCommandsInfo, CommandBuffer stateCommandBuffer, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdPreprocessGeneratedCommandsEXT && "Function requires " ); +# endif + + d.vkCmdPreprocessGeneratedCommandsEXT( + m_commandBuffer, reinterpret_cast( &generatedCommandsInfo ), static_cast( stateCommandBuffer ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdExecuteGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsEXT( + Bool32 isPreprocessed, GeneratedCommandsInfoEXT const * pGeneratedCommandsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdExecuteGeneratedCommandsEXT( static_cast( m_commandBuffer ), + static_cast( isPreprocessed ), + reinterpret_cast( pGeneratedCommandsInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdExecuteGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsEXT( + Bool32 isPreprocessed, GeneratedCommandsInfoEXT const & generatedCommandsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdExecuteGeneratedCommandsEXT && "Function requires " ); +# endif + + d.vkCmdExecuteGeneratedCommandsEXT( + m_commandBuffer, static_cast( isPreprocessed ), reinterpret_cast( &generatedCommandsInfo ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutEXT( IndirectCommandsLayoutCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + IndirectCommandsLayoutEXT * pIndirectCommandsLayout, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateIndirectCommandsLayoutEXT( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pIndirectCommandsLayout ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createIndirectCommandsLayoutEXT( + IndirectCommandsLayoutCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIndirectCommandsLayoutEXT && "Function requires " ); +# endif + + IndirectCommandsLayoutEXT indirectCommandsLayout; + Result result = static_cast( d.vkCreateIndirectCommandsLayoutEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &indirectCommandsLayout ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutEXT" ); + + return detail::createResultValueType( result, std::move( indirectCommandsLayout ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createIndirectCommandsLayoutEXTUnique( + IndirectCommandsLayoutCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIndirectCommandsLayoutEXT && "Function requires " ); +# endif + + IndirectCommandsLayoutEXT indirectCommandsLayout; + Result result = static_cast( d.vkCreateIndirectCommandsLayoutEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &indirectCommandsLayout ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutEXTUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( indirectCommandsLayout, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutEXT( + IndirectCommandsLayoutEXT indirectCommandsLayout, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectCommandsLayoutEXT( static_cast( m_device ), + static_cast( indirectCommandsLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutEXT( + IndirectCommandsLayoutEXT indirectCommandsLayout, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyIndirectCommandsLayoutEXT && "Function requires " ); +# endif + + d.vkDestroyIndirectCommandsLayoutEXT( + m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( IndirectCommandsLayoutEXT indirectCommandsLayout, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectCommandsLayoutEXT( static_cast( m_device ), + static_cast( indirectCommandsLayout ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( IndirectCommandsLayoutEXT indirectCommandsLayout, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyIndirectCommandsLayoutEXT && "Function requires " ); +# endif + + d.vkDestroyIndirectCommandsLayoutEXT( + m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectExecutionSetEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createIndirectExecutionSetEXT( IndirectExecutionSetCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + IndirectExecutionSetEXT * pIndirectExecutionSet, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateIndirectExecutionSetEXT( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pIndirectExecutionSet ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectExecutionSetEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createIndirectExecutionSetEXT( + IndirectExecutionSetCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIndirectExecutionSetEXT && "Function requires " ); +# endif + + IndirectExecutionSetEXT indirectExecutionSet; + Result result = static_cast( d.vkCreateIndirectExecutionSetEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &indirectExecutionSet ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectExecutionSetEXT" ); + + return detail::createResultValueType( result, std::move( indirectExecutionSet ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectExecutionSetEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createIndirectExecutionSetEXTUnique( + IndirectExecutionSetCreateInfoEXT const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateIndirectExecutionSetEXT && "Function requires " ); +# endif + + IndirectExecutionSetEXT indirectExecutionSet; + Result result = static_cast( d.vkCreateIndirectExecutionSetEXT( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &indirectExecutionSet ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectExecutionSetEXTUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( indirectExecutionSet, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectExecutionSetEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyIndirectExecutionSetEXT( + IndirectExecutionSetEXT indirectExecutionSet, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectExecutionSetEXT( static_cast( m_device ), + static_cast( indirectExecutionSet ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectExecutionSetEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyIndirectExecutionSetEXT( + IndirectExecutionSetEXT indirectExecutionSet, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyIndirectExecutionSetEXT && "Function requires " ); +# endif + + d.vkDestroyIndirectExecutionSetEXT( + m_device, static_cast( indirectExecutionSet ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectExecutionSetEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( IndirectExecutionSetEXT indirectExecutionSet, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyIndirectExecutionSetEXT( static_cast( m_device ), + static_cast( indirectExecutionSet ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectExecutionSetEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( IndirectExecutionSetEXT indirectExecutionSet, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyIndirectExecutionSetEXT && "Function requires " ); +# endif + + d.vkDestroyIndirectExecutionSetEXT( + m_device, static_cast( indirectExecutionSet ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateIndirectExecutionSetPipelineEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetPipelineEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::updateIndirectExecutionSetPipelineEXT( IndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + WriteIndirectExecutionSetPipelineEXT const * pExecutionSetWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateIndirectExecutionSetPipelineEXT( static_cast( m_device ), + static_cast( indirectExecutionSet ), + executionSetWriteCount, + reinterpret_cast( pExecutionSetWrites ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateIndirectExecutionSetPipelineEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetPipelineEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::updateIndirectExecutionSetPipelineEXT( + IndirectExecutionSetEXT indirectExecutionSet, ArrayProxy const & executionSetWrites, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkUpdateIndirectExecutionSetPipelineEXT && + "Function requires " ); +# endif + + d.vkUpdateIndirectExecutionSetPipelineEXT( m_device, + static_cast( indirectExecutionSet ), + executionSetWrites.size(), + reinterpret_cast( executionSetWrites.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateIndirectExecutionSetShaderEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetShaderEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::updateIndirectExecutionSetShaderEXT( IndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + WriteIndirectExecutionSetShaderEXT const * pExecutionSetWrites, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkUpdateIndirectExecutionSetShaderEXT( static_cast( m_device ), + static_cast( indirectExecutionSet ), + executionSetWriteCount, + reinterpret_cast( pExecutionSetWrites ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateIndirectExecutionSetShaderEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetShaderEXT.html + template ::type> + VULKAN_HPP_INLINE void Device::updateIndirectExecutionSetShaderEXT( + IndirectExecutionSetEXT indirectExecutionSet, ArrayProxy const & executionSetWrites, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkUpdateIndirectExecutionSetShaderEXT && + "Function requires " ); +# endif + + d.vkUpdateIndirectExecutionSetShaderEXT( m_device, + static_cast( indirectExecutionSet ), + executionSetWrites.size(), + reinterpret_cast( executionSetWrites.data() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_device_fault === + + // wrapper function for command vkGetDeviceFaultReportsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultReportsKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFaultReportsKHR( + uint64_t timeout, uint32_t * pFaultCounts, DeviceFaultInfoKHR * pFaultInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetDeviceFaultReportsKHR( static_cast( m_device ), timeout, pFaultCounts, reinterpret_cast( pFaultInfo ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceFaultReportsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultReportsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::getFaultReportsKHR( + uint64_t timeout, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceFaultReportsKHR && "Function requires " ); +# endif + + std::vector faultInfo; + uint32_t faultCounts; + Result result; + do + { + result = static_cast( d.vkGetDeviceFaultReportsKHR( m_device, timeout, &faultCounts, nullptr ) ); + if ( ( result == Result::eSuccess ) && faultCounts ) + { + faultInfo.resize( faultCounts ); + result = + static_cast( d.vkGetDeviceFaultReportsKHR( m_device, timeout, &faultCounts, reinterpret_cast( faultInfo.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFaultReportsKHR", { Result::eSuccess, Result::eIncomplete, Result::eTimeout } ); + VULKAN_HPP_ASSERT( faultCounts <= faultInfo.size() ); + if ( faultCounts < faultInfo.size() ) + { + faultInfo.resize( faultCounts ); + } + return { result, faultInfo }; + } + + // wrapper function for command vkGetDeviceFaultReportsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultReportsKHR.html + template ::value, int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::getFaultReportsKHR( + uint64_t timeout, DeviceFaultInfoKHRAllocator const & deviceFaultInfoKHRAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetDeviceFaultReportsKHR && "Function requires " ); +# endif + + std::vector faultInfo( deviceFaultInfoKHRAllocator ); + uint32_t faultCounts; + Result result; + do + { + result = static_cast( d.vkGetDeviceFaultReportsKHR( m_device, timeout, &faultCounts, nullptr ) ); + if ( ( result == Result::eSuccess ) && faultCounts ) + { + faultInfo.resize( faultCounts ); + result = + static_cast( d.vkGetDeviceFaultReportsKHR( m_device, timeout, &faultCounts, reinterpret_cast( faultInfo.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFaultReportsKHR", { Result::eSuccess, Result::eIncomplete, Result::eTimeout } ); + VULKAN_HPP_ASSERT( faultCounts <= faultInfo.size() ); + if ( faultCounts < faultInfo.size() ) + { + faultInfo.resize( faultCounts ); + } + return { result, faultInfo }; + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceFaultDebugInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultDebugInfoKHR.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFaultDebugInfoKHR( DeviceFaultDebugInfoKHR * pDebugInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkGetDeviceFaultDebugInfoKHR( static_cast( m_device ), reinterpret_cast( pDebugInfo ) ) ); + } + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + + // wrapper function for command vkCreateSurfaceOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSurfaceOHOS.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createSurfaceOHOS( + SurfaceCreateInfoOHOS const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateSurfaceOHOS( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSurfaceOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSurfaceOHOS.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createSurfaceOHOS( + SurfaceCreateInfoOHOS const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSurfaceOHOS && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateSurfaceOHOS( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createSurfaceOHOS" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSurfaceOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSurfaceOHOS.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createSurfaceOHOSUnique( + SurfaceCreateInfoOHOS const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateSurfaceOHOS && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateSurfaceOHOS( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createSurfaceOHOSUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_NV_cooperative_matrix2 === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getCooperativeMatrixFlexibleDimensionsPropertiesNV( + uint32_t * pPropertyCount, CooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( + static_cast( m_physicalDevice ), + pPropertyCount, + reinterpret_cast( pProperties ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html + template ::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixFlexibleDimensionsPropertiesNV( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV && + "Function requires " ); +# endif + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixFlexibleDimensionsPropertiesNV" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html + template ::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixFlexibleDimensionsPropertiesNV( + CooperativeMatrixFlexibleDimensionsPropertiesNVAllocator const & cooperativeMatrixFlexibleDimensionsPropertiesNVAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV && + "Function requires " ); +# endif + + std::vector properties( + cooperativeMatrixFlexibleDimensionsPropertiesNVAllocator ); + uint32_t propertyCount; + Result result; + do + { + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( m_physicalDevice, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( d.vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( + m_physicalDevice, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixFlexibleDimensionsPropertiesNV" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return detail::createResultValueType( result, std::move( properties ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + + // wrapper function for command vkGetMemoryMetalHandleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandleEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryMetalHandleEXT( + MemoryGetMetalHandleInfoEXT const * pGetMetalHandleInfo, void ** pHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryMetalHandleEXT( + static_cast( m_device ), reinterpret_cast( pGetMetalHandleInfo ), pHandle ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryMetalHandleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandleEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryMetalHandleEXT( + MemoryGetMetalHandleInfoEXT const & getMetalHandleInfo, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryMetalHandleEXT && "Function requires " ); +# endif + + void * handle; + Result result = + static_cast( d.vkGetMemoryMetalHandleEXT( m_device, reinterpret_cast( &getMetalHandleInfo ), &handle ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryMetalHandleEXT" ); + + return detail::createResultValueType( result, std::move( handle ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryMetalHandlePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandlePropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryMetalHandlePropertiesEXT( + ExternalMemoryHandleTypeFlagBits handleType, void const * pHandle, MemoryMetalHandlePropertiesEXT * pMemoryMetalHandleProperties, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetMemoryMetalHandlePropertiesEXT( static_cast( m_device ), + static_cast( handleType ), + pHandle, + reinterpret_cast( pMemoryMetalHandleProperties ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryMetalHandlePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandlePropertiesEXT.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryMetalHandlePropertiesEXT( + ExternalMemoryHandleTypeFlagBits handleType, HandleType const & handle, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetMemoryMetalHandlePropertiesEXT && "Function requires " ); +# endif + + MemoryMetalHandlePropertiesEXT memoryMetalHandleProperties; + Result result = + static_cast( d.vkGetMemoryMetalHandlePropertiesEXT( m_device, + static_cast( handleType ), + reinterpret_cast( &handle ), + reinterpret_cast( &memoryMetalHandleProperties ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryMetalHandlePropertiesEXT" ); + + return detail::createResultValueType( result, std::move( memoryMetalHandleProperties ) ); + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_performance_counters_by_region === + + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::enumerateQueueFamilyPerformanceCountersByRegionARM( + uint32_t queueFamilyIndex, + uint32_t * pCounterCount, + PerformanceCounterARM * pCounters, + PerformanceCounterDescriptionARM * pCounterDescriptions, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( static_cast( m_physicalDevice ), + queueFamilyIndex, + pCounterCount, + reinterpret_cast( pCounters ), + reinterpret_cast( pCounterDescriptions ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM.html + template ::value && + std::is_same::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType, + std::vector>>::type + PhysicalDevice::enumerateQueueFamilyPerformanceCountersByRegionARM( uint32_t queueFamilyIndex, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM && + "Function requires " ); +# endif + + std::pair, + std::vector> + data_; + std::vector & counters = data_.first; + std::vector & counterDescriptions = data_.second; + uint32_t counterCount; + Result result; + do + { + result = static_cast( + d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( m_physicalDevice, queueFamilyIndex, &counterCount, nullptr, nullptr ) ); + if ( ( result == Result::eSuccess ) && counterCount ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( + m_physicalDevice, + queueFamilyIndex, + &counterCount, + reinterpret_cast( counters.data() ), + reinterpret_cast( counterDescriptions.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceCountersByRegionARM" ); + VULKAN_HPP_ASSERT( counterCount <= counters.size() ); + if ( counterCount < counters.size() ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + } + return detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM.html + template ::value && + std::is_same::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType, + std::vector>>::type + PhysicalDevice::enumerateQueueFamilyPerformanceCountersByRegionARM( + uint32_t queueFamilyIndex, + PerformanceCounterARMAllocator const & performanceCounterARMAllocator, + PerformanceCounterDescriptionARMAllocator const & performanceCounterDescriptionARMAllocator, + Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM && + "Function requires " ); +# endif + + std::pair, + std::vector> + data_( + std::piecewise_construct, std::forward_as_tuple( performanceCounterARMAllocator ), std::forward_as_tuple( performanceCounterDescriptionARMAllocator ) ); + std::vector & counters = data_.first; + std::vector & counterDescriptions = data_.second; + uint32_t counterCount; + Result result; + do + { + result = static_cast( + d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( m_physicalDevice, queueFamilyIndex, &counterCount, nullptr, nullptr ) ); + if ( ( result == Result::eSuccess ) && counterCount ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( + m_physicalDevice, + queueFamilyIndex, + &counterCount, + reinterpret_cast( counters.data() ), + reinterpret_cast( counterDescriptions.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceCountersByRegionARM" ); + VULKAN_HPP_ASSERT( counterCount <= counters.size() ); + if ( counterCount < counters.size() ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + } + return detail::createResultValueType( result, std::move( data_ ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_ARM_shader_instrumentation === + + // wrapper function for command vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::enumerateShaderInstrumentationMetricsARM( + uint32_t * pDescriptionCount, ShaderInstrumentationMetricDescriptionARM * pDescriptions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( + d.vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( static_cast( m_physicalDevice ), + pDescriptionCount, + reinterpret_cast( pDescriptions ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM.html + template ::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::enumerateShaderInstrumentationMetricsARM( Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM && + "Function requires " ); +# endif + + std::vector descriptions; + uint32_t descriptionCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( m_physicalDevice, &descriptionCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && descriptionCount ) + { + descriptions.resize( descriptionCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( + m_physicalDevice, &descriptionCount, reinterpret_cast( descriptions.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateShaderInstrumentationMetricsARM" ); + VULKAN_HPP_ASSERT( descriptionCount <= descriptions.size() ); + if ( descriptionCount < descriptions.size() ) + { + descriptions.resize( descriptionCount ); + } + return detail::createResultValueType( result, std::move( descriptions ) ); + } + + // wrapper function for command vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM.html + template ::value, + int>::type, + typename std::enable_if::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType>::type + PhysicalDevice::enumerateShaderInstrumentationMetricsARM( + ShaderInstrumentationMetricDescriptionARMAllocator const & shaderInstrumentationMetricDescriptionARMAllocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM && + "Function requires " ); +# endif + + std::vector descriptions( + shaderInstrumentationMetricDescriptionARMAllocator ); + uint32_t descriptionCount; + Result result; + do + { + result = static_cast( d.vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( m_physicalDevice, &descriptionCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && descriptionCount ) + { + descriptions.resize( descriptionCount ); + result = static_cast( d.vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( + m_physicalDevice, &descriptionCount, reinterpret_cast( descriptions.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::enumerateShaderInstrumentationMetricsARM" ); + VULKAN_HPP_ASSERT( descriptionCount <= descriptions.size() ); + if ( descriptionCount < descriptions.size() ) + { + descriptions.resize( descriptionCount ); + } + return detail::createResultValueType( result, std::move( descriptions ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderInstrumentationARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createShaderInstrumentationARM( ShaderInstrumentationCreateInfoARM const * pCreateInfo, + AllocationCallbacks const * pAllocator, + ShaderInstrumentationARM * pInstrumentation, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateShaderInstrumentationARM( static_cast( m_device ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pInstrumentation ) ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderInstrumentationARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::createShaderInstrumentationARM( + ShaderInstrumentationCreateInfoARM const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateShaderInstrumentationARM && "Function requires " ); +# endif + + ShaderInstrumentationARM instrumentation; + Result result = static_cast( d.vkCreateShaderInstrumentationARM( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &instrumentation ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createShaderInstrumentationARM" ); + + return detail::createResultValueType( result, std::move( instrumentation ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderInstrumentationARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createShaderInstrumentationARMUnique( + ShaderInstrumentationCreateInfoARM const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateShaderInstrumentationARM && "Function requires " ); +# endif + + ShaderInstrumentationARM instrumentation; + Result result = static_cast( d.vkCreateShaderInstrumentationARM( m_device, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &instrumentation ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Device::createShaderInstrumentationARMUnique" ); + + return detail::createResultValueType( + result, UniqueHandle( instrumentation, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderInstrumentationARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyShaderInstrumentationARM( + ShaderInstrumentationARM instrumentation, AllocationCallbacks const * pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyShaderInstrumentationARM( static_cast( m_device ), + static_cast( instrumentation ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderInstrumentationARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroyShaderInstrumentationARM( + ShaderInstrumentationARM instrumentation, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyShaderInstrumentationARM && "Function requires " ); +# endif + + d.vkDestroyShaderInstrumentationARM( + m_device, static_cast( instrumentation ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderInstrumentationARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ShaderInstrumentationARM instrumentation, AllocationCallbacks const * pAllocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkDestroyShaderInstrumentationARM( static_cast( m_device ), + static_cast( instrumentation ), + reinterpret_cast( pAllocator ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderInstrumentationARM.html + template ::type> + VULKAN_HPP_INLINE void Device::destroy( ShaderInstrumentationARM instrumentation, Optional allocator, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkDestroyShaderInstrumentationARM && "Function requires " ); +# endif + + d.vkDestroyShaderInstrumentationARM( + m_device, static_cast( instrumentation ), reinterpret_cast( allocator.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginShaderInstrumentationARM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginShaderInstrumentationARM( ShaderInstrumentationARM instrumentation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginShaderInstrumentationARM( static_cast( m_commandBuffer ), static_cast( instrumentation ) ); + } + + // wrapper function for command vkCmdEndShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndShaderInstrumentationARM.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endShaderInstrumentationARM( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndShaderInstrumentationARM( static_cast( m_commandBuffer ) ); + } + + // wrapper function for command vkGetShaderInstrumentationValuesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInstrumentationValuesARM.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getShaderInstrumentationValuesARM( ShaderInstrumentationARM instrumentation, + uint32_t * pMetricBlockCount, + void * pMetricValues, + ShaderInstrumentationValuesFlagsARM flags, + Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetShaderInstrumentationValuesARM( static_cast( m_device ), + static_cast( instrumentation ), + pMetricBlockCount, + pMetricValues, + static_cast( flags ) ) ); + } + + // wrapper function for command vkClearShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkClearShaderInstrumentationMetricsARM.html + template ::type> + VULKAN_HPP_INLINE void Device::clearShaderInstrumentationMetricsARM( ShaderInstrumentationARM instrumentation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkClearShaderInstrumentationMetricsARM( static_cast( m_device ), static_cast( instrumentation ) ); + } + + //=== VK_EXT_fragment_density_map_offset === + + // wrapper function for command vkCmdEndRendering2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRendering2EXT( RenderingEndInfoKHR const * pRenderingEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRendering2EXT( static_cast( m_commandBuffer ), reinterpret_cast( pRenderingEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndRendering2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2EXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRendering2EXT( Optional renderingEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdEndRendering2EXT && "Function requires or " ); +# endif + + d.vkCmdEndRendering2EXT( m_commandBuffer, reinterpret_cast( renderingEndInfo.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_custom_resolve === + + // wrapper function for command vkCmdBeginCustomResolveEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginCustomResolveEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginCustomResolveEXT( BeginCustomResolveInfoEXT const * pBeginCustomResolveInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdBeginCustomResolveEXT( static_cast( m_commandBuffer ), + reinterpret_cast( pBeginCustomResolveInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginCustomResolveEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginCustomResolveEXT.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::beginCustomResolveEXT( Optional beginCustomResolveInfo, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdBeginCustomResolveEXT && "Function requires " ); +# endif + + d.vkCmdBeginCustomResolveEXT( m_commandBuffer, reinterpret_cast( beginCustomResolveInfo.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_maintenance10 === + + // wrapper function for command vkCmdEndRendering2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRendering2KHR( RenderingEndInfoKHR const * pRenderingEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdEndRendering2KHR( static_cast( m_commandBuffer ), reinterpret_cast( pRenderingEndInfo ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndRendering2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2KHR.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::endRendering2KHR( Optional renderingEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdEndRendering2KHR && "Function requires or " ); +# endif + + d.vkCmdEndRendering2KHR( m_commandBuffer, reinterpret_cast( renderingEndInfo.get() ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_compute_occupancy_priority === + + // wrapper function for command vkCmdSetComputeOccupancyPriorityNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetComputeOccupancyPriorityNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setComputeOccupancyPriorityNV( ComputeOccupancyPriorityParametersNV const * pParameters, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + d.vkCmdSetComputeOccupancyPriorityNV( static_cast( m_commandBuffer ), + reinterpret_cast( pParameters ) ); + } + +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetComputeOccupancyPriorityNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetComputeOccupancyPriorityNV.html + template ::type> + VULKAN_HPP_INLINE void CommandBuffer::setComputeOccupancyPriorityNV( ComputeOccupancyPriorityParametersNV const & parameters, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCmdSetComputeOccupancyPriorityNV && "Function requires " ); +# endif + + d.vkCmdSetComputeOccupancyPriorityNV( m_commandBuffer, reinterpret_cast( ¶meters ) ); + } +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + + // wrapper function for command vkCreateUbmSurfaceSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateUbmSurfaceSEC.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createUbmSurfaceSEC( + UbmSurfaceCreateInfoSEC const * pCreateInfo, AllocationCallbacks const * pAllocator, SurfaceKHR * pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkCreateUbmSurfaceSEC( static_cast( m_instance ), + reinterpret_cast( pCreateInfo ), + reinterpret_cast( pAllocator ), + reinterpret_cast( pSurface ) ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateUbmSurfaceSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateUbmSurfaceSEC.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Instance::createUbmSurfaceSEC( + UbmSurfaceCreateInfoSEC const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateUbmSurfaceSEC && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateUbmSurfaceSEC( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createUbmSurfaceSEC" ); + + return detail::createResultValueType( result, std::move( surface ) ); + } + +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateUbmSurfaceSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateUbmSurfaceSEC.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createUbmSurfaceSECUnique( + UbmSurfaceCreateInfoSEC const & createInfo, Optional allocator, Dispatch const & d ) const + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkCreateUbmSurfaceSEC && "Function requires " ); +# endif + + SurfaceKHR surface; + Result result = static_cast( d.vkCreateUbmSurfaceSEC( m_instance, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + detail::resultCheck( result, VULKAN_HPP_NAMESPACE_STRING "::Instance::createUbmSurfaceSECUnique" ); + + return detail::createResultValueType( result, + UniqueHandle( surface, detail::ObjectDestroy( *this, allocator, d ) ) ); + } +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceUbmPresentationSupportSEC, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceUbmPresentationSupportSEC.html + template ::type> + VULKAN_HPP_INLINE Bool32 PhysicalDevice::getUbmPresentationSupportSEC( uint32_t queueFamilyIndex, struct ubm_device * device, Dispatch const & d ) + const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); + return static_cast( d.vkGetPhysicalDeviceUbmPresentationSupportSEC( static_cast( m_physicalDevice ), queueFamilyIndex, device ) ); + } + +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceUbmPresentationSupportSEC, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceUbmPresentationSupportSEC.html + template ::type> + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair PhysicalDevice::getUbmPresentationSupportSEC( + uint32_t queueFamilyIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( d.getVkHeaderVersion() == VK_HEADER_VERSION ); +# if ( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 ) + VULKAN_HPP_ASSERT( d.vkGetPhysicalDeviceUbmPresentationSupportSEC && + "Function requires " ); +# endif + + struct ubm_device device; + VkBool32 result = d.vkGetPhysicalDeviceUbmPresentationSupportSEC( m_physicalDevice, queueFamilyIndex, &device ); + + return { result, device }; + } +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ggp.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ggp.h new file mode 100644 index 000000000..f8a48ec87 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ggp.h @@ -0,0 +1,62 @@ +#ifndef VULKAN_GGP_H_ +#define VULKAN_GGP_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_GGP_stream_descriptor_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_GGP_stream_descriptor_surface 1 +#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION 1 +#define VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME "VK_GGP_stream_descriptor_surface" +typedef VkFlags VkStreamDescriptorSurfaceCreateFlagsGGP; +typedef struct VkStreamDescriptorSurfaceCreateInfoGGP { + VkStructureType sType; + const void* pNext; + VkStreamDescriptorSurfaceCreateFlagsGGP flags; + GgpStreamDescriptor streamDescriptor; +} VkStreamDescriptorSurfaceCreateInfoGGP; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateStreamDescriptorSurfaceGGP)(VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateStreamDescriptorSurfaceGGP( + VkInstance instance, + const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif +#endif + + +// VK_GGP_frame_token is a preprocessor guard. Do not pass it to API calls. +#define VK_GGP_frame_token 1 +#define VK_GGP_FRAME_TOKEN_SPEC_VERSION 1 +#define VK_GGP_FRAME_TOKEN_EXTENSION_NAME "VK_GGP_frame_token" +typedef struct VkPresentFrameTokenGGP { + VkStructureType sType; + const void* pNext; + GgpFrameToken frameToken; +} VkPresentFrameTokenGGP; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_handles.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_handles.hpp new file mode 100644 index 000000000..f54b8c27d --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_handles.hpp @@ -0,0 +1,23390 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_HANDLES_HPP +#define VULKAN_HANDLES_HPP + +// include-what-you-use: make sure, vulkan.hpp is used by code-completers +// IWYU pragma: private, include "vulkan/vulkan.hpp" + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ + //=================================== + //=== STRUCT forward declarations === + //=================================== + + //=== VK_VERSION_1_0 === + struct Extent2D; + struct Extent3D; + struct Offset2D; + struct Offset3D; + struct Rect2D; + struct BaseInStructure; + struct BaseOutStructure; + struct AllocationCallbacks; + struct ApplicationInfo; + struct FormatProperties; + struct ImageFormatProperties; + struct InstanceCreateInfo; + struct MemoryHeap; + struct MemoryType; + struct PhysicalDeviceFeatures; + struct PhysicalDeviceLimits; + struct PhysicalDeviceMemoryProperties; + struct PhysicalDeviceSparseProperties; + struct PhysicalDeviceProperties; + struct QueueFamilyProperties; + struct DeviceQueueCreateInfo; + struct DeviceCreateInfo; + struct ExtensionProperties; + struct LayerProperties; + struct SubmitInfo; + struct MappedMemoryRange; + struct MemoryAllocateInfo; + struct MemoryRequirements; + struct ImageSubresource; + struct SparseImageFormatProperties; + struct SparseImageMemoryBind; + struct SparseImageMemoryBindInfo; + struct SparseImageMemoryRequirements; + struct SparseMemoryBind; + struct SparseBufferMemoryBindInfo; + struct SparseImageOpaqueMemoryBindInfo; + struct BindSparseInfo; + struct FenceCreateInfo; + struct SemaphoreCreateInfo; + struct QueryPoolCreateInfo; + struct BufferCreateInfo; + struct ImageCreateInfo; + struct SubresourceLayout; + struct ComponentMapping; + struct ImageSubresourceRange; + struct ImageViewCreateInfo; + struct CommandPoolCreateInfo; + struct CommandBufferAllocateInfo; + struct CommandBufferInheritanceInfo; + struct CommandBufferBeginInfo; + struct BufferCopy; + struct ImageSubresourceLayers; + struct BufferImageCopy; + struct ImageCopy; + struct BufferMemoryBarrier; + struct ImageMemoryBarrier; + struct MemoryBarrier; + struct DispatchIndirectCommand; + struct PipelineCacheHeaderVersionOne; + struct EventCreateInfo; + struct BufferViewCreateInfo; + struct ShaderModuleCreateInfo; + struct PipelineCacheCreateInfo; + struct SpecializationMapEntry; + struct SpecializationInfo; + struct PipelineShaderStageCreateInfo; + struct ComputePipelineCreateInfo; + struct PushConstantRange; + struct PipelineLayoutCreateInfo; + struct SamplerCreateInfo; + struct CopyDescriptorSet; + struct DescriptorBufferInfo; + struct DescriptorImageInfo; + struct DescriptorPoolSize; + struct DescriptorPoolCreateInfo; + struct DescriptorSetAllocateInfo; + struct DescriptorSetLayoutBinding; + struct DescriptorSetLayoutCreateInfo; + struct WriteDescriptorSet; + union ClearColorValue; + struct DrawIndexedIndirectCommand; + struct DrawIndirectCommand; + struct StencilOpState; + struct VertexInputAttributeDescription; + struct VertexInputBindingDescription; + struct Viewport; + struct PipelineColorBlendAttachmentState; + struct PipelineColorBlendStateCreateInfo; + struct PipelineDepthStencilStateCreateInfo; + struct PipelineDynamicStateCreateInfo; + struct PipelineInputAssemblyStateCreateInfo; + struct PipelineMultisampleStateCreateInfo; + struct PipelineRasterizationStateCreateInfo; + struct PipelineTessellationStateCreateInfo; + struct PipelineVertexInputStateCreateInfo; + struct PipelineViewportStateCreateInfo; + struct GraphicsPipelineCreateInfo; + struct AttachmentDescription; + struct AttachmentReference; + struct FramebufferCreateInfo; + struct SubpassDependency; + struct SubpassDescription; + struct RenderPassCreateInfo; + struct ClearDepthStencilValue; + struct ClearRect; + union ClearValue; + struct ClearAttachment; + struct ImageBlit; + struct ImageResolve; + struct RenderPassBeginInfo; + + //=== VK_VERSION_1_1 === + struct BindBufferMemoryInfo; + using BindBufferMemoryInfoKHR = BindBufferMemoryInfo; + struct BindImageMemoryInfo; + using BindImageMemoryInfoKHR = BindImageMemoryInfo; + struct MemoryDedicatedRequirements; + using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements; + struct MemoryDedicatedAllocateInfo; + using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo; + struct MemoryAllocateFlagsInfo; + using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo; + struct DeviceGroupCommandBufferBeginInfo; + using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo; + struct DeviceGroupSubmitInfo; + using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo; + struct DeviceGroupBindSparseInfo; + using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo; + struct BindBufferMemoryDeviceGroupInfo; + using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo; + struct BindImageMemoryDeviceGroupInfo; + using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo; + struct PhysicalDeviceGroupProperties; + using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties; + struct DeviceGroupDeviceCreateInfo; + using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo; + struct BufferMemoryRequirementsInfo2; + using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2; + struct ImageMemoryRequirementsInfo2; + using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2; + struct ImageSparseMemoryRequirementsInfo2; + using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2; + struct MemoryRequirements2; + using MemoryRequirements2KHR = MemoryRequirements2; + struct SparseImageMemoryRequirements2; + using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2; + struct PhysicalDeviceFeatures2; + using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2; + struct PhysicalDeviceProperties2; + using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2; + struct FormatProperties2; + using FormatProperties2KHR = FormatProperties2; + struct ImageFormatProperties2; + using ImageFormatProperties2KHR = ImageFormatProperties2; + struct PhysicalDeviceImageFormatInfo2; + using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2; + struct QueueFamilyProperties2; + using QueueFamilyProperties2KHR = QueueFamilyProperties2; + struct PhysicalDeviceMemoryProperties2; + using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2; + struct SparseImageFormatProperties2; + using SparseImageFormatProperties2KHR = SparseImageFormatProperties2; + struct PhysicalDeviceSparseImageFormatInfo2; + using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2; + struct ImageViewUsageCreateInfo; + using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo; + struct PhysicalDeviceProtectedMemoryFeatures; + struct PhysicalDeviceProtectedMemoryProperties; + struct DeviceQueueInfo2; + struct ProtectedSubmitInfo; + struct BindImagePlaneMemoryInfo; + using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo; + struct ImagePlaneMemoryRequirementsInfo; + using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo; + struct ExternalMemoryProperties; + using ExternalMemoryPropertiesKHR = ExternalMemoryProperties; + struct PhysicalDeviceExternalImageFormatInfo; + using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo; + struct ExternalImageFormatProperties; + using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties; + struct PhysicalDeviceExternalBufferInfo; + using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo; + struct ExternalBufferProperties; + using ExternalBufferPropertiesKHR = ExternalBufferProperties; + struct PhysicalDeviceIDProperties; + using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties; + struct ExternalMemoryImageCreateInfo; + using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo; + struct ExternalMemoryBufferCreateInfo; + using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo; + struct ExportMemoryAllocateInfo; + using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo; + struct PhysicalDeviceExternalFenceInfo; + using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo; + struct ExternalFenceProperties; + using ExternalFencePropertiesKHR = ExternalFenceProperties; + struct ExportFenceCreateInfo; + using ExportFenceCreateInfoKHR = ExportFenceCreateInfo; + struct ExportSemaphoreCreateInfo; + using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo; + struct PhysicalDeviceExternalSemaphoreInfo; + using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo; + struct ExternalSemaphoreProperties; + using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties; + struct PhysicalDeviceSubgroupProperties; + struct PhysicalDevice16BitStorageFeatures; + using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures; + struct PhysicalDeviceVariablePointersFeatures; + using PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures; + using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures; + using PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures; + struct DescriptorUpdateTemplateEntry; + using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry; + struct DescriptorUpdateTemplateCreateInfo; + using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo; + struct PhysicalDeviceMaintenance3Properties; + using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties; + struct DescriptorSetLayoutSupport; + using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport; + struct SamplerYcbcrConversionCreateInfo; + using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo; + struct SamplerYcbcrConversionInfo; + using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo; + struct PhysicalDeviceSamplerYcbcrConversionFeatures; + using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures; + struct SamplerYcbcrConversionImageFormatProperties; + using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties; + struct DeviceGroupRenderPassBeginInfo; + using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo; + struct PhysicalDevicePointClippingProperties; + using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties; + struct InputAttachmentAspectReference; + using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference; + struct RenderPassInputAttachmentAspectCreateInfo; + using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo; + struct PipelineTessellationDomainOriginStateCreateInfo; + using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo; + struct RenderPassMultiviewCreateInfo; + using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo; + struct PhysicalDeviceMultiviewFeatures; + using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures; + struct PhysicalDeviceMultiviewProperties; + using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties; + struct PhysicalDeviceShaderDrawParametersFeatures; + using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures; + + //=== VK_VERSION_1_2 === + struct ConformanceVersion; + using ConformanceVersionKHR = ConformanceVersion; + struct PhysicalDeviceDriverProperties; + using PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties; + struct PhysicalDeviceVulkan11Features; + struct PhysicalDeviceVulkan11Properties; + struct PhysicalDeviceVulkan12Features; + struct PhysicalDeviceVulkan12Properties; + struct ImageFormatListCreateInfo; + using ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo; + struct PhysicalDeviceVulkanMemoryModelFeatures; + using PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures; + struct PhysicalDeviceHostQueryResetFeatures; + using PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures; + struct PhysicalDeviceTimelineSemaphoreFeatures; + using PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures; + struct PhysicalDeviceTimelineSemaphoreProperties; + using PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties; + struct SemaphoreTypeCreateInfo; + using SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo; + struct TimelineSemaphoreSubmitInfo; + using TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo; + struct SemaphoreWaitInfo; + using SemaphoreWaitInfoKHR = SemaphoreWaitInfo; + struct SemaphoreSignalInfo; + using SemaphoreSignalInfoKHR = SemaphoreSignalInfo; + struct PhysicalDeviceBufferDeviceAddressFeatures; + using PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures; + struct BufferDeviceAddressInfo; + using BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo; + using BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo; + struct BufferOpaqueCaptureAddressCreateInfo; + using BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo; + struct MemoryOpaqueCaptureAddressAllocateInfo; + using MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo; + struct DeviceMemoryOpaqueCaptureAddressInfo; + using DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo; + struct PhysicalDevice8BitStorageFeatures; + using PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures; + struct PhysicalDeviceShaderAtomicInt64Features; + using PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features; + struct PhysicalDeviceShaderFloat16Int8Features; + using PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features; + using PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features; + struct PhysicalDeviceFloatControlsProperties; + using PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties; + struct DescriptorSetLayoutBindingFlagsCreateInfo; + using DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo; + struct PhysicalDeviceDescriptorIndexingFeatures; + using PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures; + struct PhysicalDeviceDescriptorIndexingProperties; + using PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties; + struct DescriptorSetVariableDescriptorCountAllocateInfo; + using DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo; + struct DescriptorSetVariableDescriptorCountLayoutSupport; + using DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport; + struct PhysicalDeviceScalarBlockLayoutFeatures; + using PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures; + struct SamplerReductionModeCreateInfo; + using SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo; + struct PhysicalDeviceSamplerFilterMinmaxProperties; + using PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties; + struct PhysicalDeviceUniformBufferStandardLayoutFeatures; + using PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures; + struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures; + using PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures; + struct AttachmentDescription2; + using AttachmentDescription2KHR = AttachmentDescription2; + struct AttachmentReference2; + using AttachmentReference2KHR = AttachmentReference2; + struct SubpassDescription2; + using SubpassDescription2KHR = SubpassDescription2; + struct SubpassDependency2; + using SubpassDependency2KHR = SubpassDependency2; + struct SubpassBeginInfo; + using SubpassBeginInfoKHR = SubpassBeginInfo; + struct SubpassEndInfo; + using SubpassEndInfoKHR = SubpassEndInfo; + struct RenderPassCreateInfo2; + using RenderPassCreateInfo2KHR = RenderPassCreateInfo2; + struct SubpassDescriptionDepthStencilResolve; + using SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve; + struct PhysicalDeviceDepthStencilResolveProperties; + using PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties; + struct ImageStencilUsageCreateInfo; + using ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo; + struct PhysicalDeviceImagelessFramebufferFeatures; + using PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures; + struct FramebufferAttachmentImageInfo; + using FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo; + struct RenderPassAttachmentBeginInfo; + using RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo; + struct FramebufferAttachmentsCreateInfo; + using FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo; + struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures; + using PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures; + struct AttachmentReferenceStencilLayout; + using AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout; + struct AttachmentDescriptionStencilLayout; + using AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout; + + //=== VK_VERSION_1_3 === + struct PhysicalDeviceVulkan13Features; + struct PhysicalDeviceVulkan13Properties; + struct PhysicalDeviceToolProperties; + using PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties; + struct PhysicalDevicePrivateDataFeatures; + using PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures; + struct DevicePrivateDataCreateInfo; + using DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo; + struct PrivateDataSlotCreateInfo; + using PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo; + struct MemoryBarrier2; + using MemoryBarrier2KHR = MemoryBarrier2; + struct BufferMemoryBarrier2; + using BufferMemoryBarrier2KHR = BufferMemoryBarrier2; + struct ImageMemoryBarrier2; + using ImageMemoryBarrier2KHR = ImageMemoryBarrier2; + struct DependencyInfo; + using DependencyInfoKHR = DependencyInfo; + struct SemaphoreSubmitInfo; + using SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo; + struct CommandBufferSubmitInfo; + using CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo; + struct SubmitInfo2; + using SubmitInfo2KHR = SubmitInfo2; + struct PhysicalDeviceSynchronization2Features; + using PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features; + struct BufferCopy2; + using BufferCopy2KHR = BufferCopy2; + struct CopyBufferInfo2; + using CopyBufferInfo2KHR = CopyBufferInfo2; + struct ImageCopy2; + using ImageCopy2KHR = ImageCopy2; + struct CopyImageInfo2; + using CopyImageInfo2KHR = CopyImageInfo2; + struct BufferImageCopy2; + using BufferImageCopy2KHR = BufferImageCopy2; + struct CopyBufferToImageInfo2; + using CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2; + struct CopyImageToBufferInfo2; + using CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2; + struct PhysicalDeviceTextureCompressionASTCHDRFeatures; + using PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeatures; + struct FormatProperties3; + using FormatProperties3KHR = FormatProperties3; + struct PhysicalDeviceMaintenance4Features; + using PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features; + struct PhysicalDeviceMaintenance4Properties; + using PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties; + struct DeviceBufferMemoryRequirements; + using DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements; + struct DeviceImageMemoryRequirements; + using DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements; + struct PipelineCreationFeedback; + using PipelineCreationFeedbackEXT = PipelineCreationFeedback; + struct PipelineCreationFeedbackCreateInfo; + using PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo; + struct PhysicalDeviceShaderTerminateInvocationFeatures; + using PhysicalDeviceShaderTerminateInvocationFeaturesKHR = PhysicalDeviceShaderTerminateInvocationFeatures; + struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures; + using PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeatures; + struct PhysicalDevicePipelineCreationCacheControlFeatures; + using PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeatures; + struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + using PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + struct PhysicalDeviceImageRobustnessFeatures; + using PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures; + struct PhysicalDeviceSubgroupSizeControlFeatures; + using PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures; + struct PhysicalDeviceSubgroupSizeControlProperties; + using PhysicalDeviceSubgroupSizeControlPropertiesEXT = PhysicalDeviceSubgroupSizeControlProperties; + struct PipelineShaderStageRequiredSubgroupSizeCreateInfo; + using PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo; + using ShaderRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo; + struct PhysicalDeviceInlineUniformBlockFeatures; + using PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures; + struct PhysicalDeviceInlineUniformBlockProperties; + using PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties; + struct WriteDescriptorSetInlineUniformBlock; + using WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock; + struct DescriptorPoolInlineUniformBlockCreateInfo; + using DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo; + struct PhysicalDeviceShaderIntegerDotProductFeatures; + using PhysicalDeviceShaderIntegerDotProductFeaturesKHR = PhysicalDeviceShaderIntegerDotProductFeatures; + struct PhysicalDeviceShaderIntegerDotProductProperties; + using PhysicalDeviceShaderIntegerDotProductPropertiesKHR = PhysicalDeviceShaderIntegerDotProductProperties; + struct PhysicalDeviceTexelBufferAlignmentProperties; + using PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentProperties; + struct ImageBlit2; + using ImageBlit2KHR = ImageBlit2; + struct BlitImageInfo2; + using BlitImageInfo2KHR = BlitImageInfo2; + struct ImageResolve2; + using ImageResolve2KHR = ImageResolve2; + struct ResolveImageInfo2; + using ResolveImageInfo2KHR = ResolveImageInfo2; + struct RenderingAttachmentInfo; + using RenderingAttachmentInfoKHR = RenderingAttachmentInfo; + struct RenderingInfo; + using RenderingInfoKHR = RenderingInfo; + struct PipelineRenderingCreateInfo; + using PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo; + struct PhysicalDeviceDynamicRenderingFeatures; + using PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures; + struct CommandBufferInheritanceRenderingInfo; + using CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo; + + //=== VK_VERSION_1_4 === + struct PhysicalDeviceVulkan14Features; + struct PhysicalDeviceVulkan14Properties; + struct DeviceQueueGlobalPriorityCreateInfo; + using DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo; + using DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo; + struct PhysicalDeviceGlobalPriorityQueryFeatures; + using PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures; + using PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures; + struct QueueFamilyGlobalPriorityProperties; + using QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties; + using QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties; + struct PhysicalDeviceIndexTypeUint8Features; + using PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features; + using PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features; + struct MemoryMapInfo; + using MemoryMapInfoKHR = MemoryMapInfo; + struct MemoryUnmapInfo; + using MemoryUnmapInfoKHR = MemoryUnmapInfo; + struct PhysicalDeviceMaintenance5Features; + using PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features; + struct PhysicalDeviceMaintenance5Properties; + using PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties; + struct SubresourceLayout2; + using SubresourceLayout2EXT = SubresourceLayout2; + using SubresourceLayout2KHR = SubresourceLayout2; + struct ImageSubresource2; + using ImageSubresource2EXT = ImageSubresource2; + using ImageSubresource2KHR = ImageSubresource2; + struct DeviceImageSubresourceInfo; + using DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo; + struct BufferUsageFlags2CreateInfo; + using BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo; + struct PhysicalDeviceMaintenance6Features; + using PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features; + struct PhysicalDeviceMaintenance6Properties; + using PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties; + struct BindMemoryStatus; + using BindMemoryStatusKHR = BindMemoryStatus; + struct PhysicalDeviceHostImageCopyFeatures; + using PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures; + struct PhysicalDeviceHostImageCopyProperties; + using PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties; + struct MemoryToImageCopy; + using MemoryToImageCopyEXT = MemoryToImageCopy; + struct ImageToMemoryCopy; + using ImageToMemoryCopyEXT = ImageToMemoryCopy; + struct CopyMemoryToImageInfo; + using CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo; + struct CopyImageToMemoryInfo; + using CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo; + struct CopyImageToImageInfo; + using CopyImageToImageInfoEXT = CopyImageToImageInfo; + struct HostImageLayoutTransitionInfo; + using HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo; + struct SubresourceHostMemcpySize; + using SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize; + struct HostImageCopyDevicePerformanceQuery; + using HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery; + struct PhysicalDeviceShaderSubgroupRotateFeatures; + using PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures; + struct PhysicalDeviceShaderFloatControls2Features; + using PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features; + struct PhysicalDeviceShaderExpectAssumeFeatures; + using PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures; + struct PipelineCreateFlags2CreateInfo; + using PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo; + struct PhysicalDevicePushDescriptorProperties; + using PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties; + struct BindDescriptorSetsInfo; + using BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo; + struct PushConstantsInfo; + using PushConstantsInfoKHR = PushConstantsInfo; + struct PushDescriptorSetInfo; + using PushDescriptorSetInfoKHR = PushDescriptorSetInfo; + struct PushDescriptorSetWithTemplateInfo; + using PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo; + struct PhysicalDevicePipelineProtectedAccessFeatures; + using PhysicalDevicePipelineProtectedAccessFeaturesEXT = PhysicalDevicePipelineProtectedAccessFeatures; + struct PhysicalDevicePipelineRobustnessFeatures; + using PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures; + struct PhysicalDevicePipelineRobustnessProperties; + using PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties; + struct PipelineRobustnessCreateInfo; + using PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo; + struct PhysicalDeviceLineRasterizationFeatures; + using PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures; + using PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures; + struct PhysicalDeviceLineRasterizationProperties; + using PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties; + using PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties; + struct PipelineRasterizationLineStateCreateInfo; + using PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo; + using PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo; + struct PhysicalDeviceVertexAttributeDivisorProperties; + using PhysicalDeviceVertexAttributeDivisorPropertiesKHR = PhysicalDeviceVertexAttributeDivisorProperties; + struct VertexInputBindingDivisorDescription; + using VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription; + using VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription; + struct PipelineVertexInputDivisorStateCreateInfo; + using PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo; + using PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo; + struct PhysicalDeviceVertexAttributeDivisorFeatures; + using PhysicalDeviceVertexAttributeDivisorFeaturesEXT = PhysicalDeviceVertexAttributeDivisorFeatures; + using PhysicalDeviceVertexAttributeDivisorFeaturesKHR = PhysicalDeviceVertexAttributeDivisorFeatures; + struct RenderingAreaInfo; + using RenderingAreaInfoKHR = RenderingAreaInfo; + struct PhysicalDeviceDynamicRenderingLocalReadFeatures; + using PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = PhysicalDeviceDynamicRenderingLocalReadFeatures; + struct RenderingAttachmentLocationInfo; + using RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo; + struct RenderingInputAttachmentIndexInfo; + using RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo; + + //=== VK_KHR_surface === + struct SurfaceCapabilitiesKHR; + struct SurfaceFormatKHR; + + //=== VK_KHR_swapchain === + struct SwapchainCreateInfoKHR; + struct PresentInfoKHR; + struct ImageSwapchainCreateInfoKHR; + struct BindImageMemorySwapchainInfoKHR; + struct AcquireNextImageInfoKHR; + struct DeviceGroupPresentCapabilitiesKHR; + struct DeviceGroupPresentInfoKHR; + struct DeviceGroupSwapchainCreateInfoKHR; + + //=== VK_KHR_display === + struct DisplayModeCreateInfoKHR; + struct DisplayModeParametersKHR; + struct DisplayModePropertiesKHR; + struct DisplayPlaneCapabilitiesKHR; + struct DisplayPlanePropertiesKHR; + struct DisplayPropertiesKHR; + struct DisplaySurfaceCreateInfoKHR; + + //=== VK_KHR_display_swapchain === + struct DisplayPresentInfoKHR; + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + struct XlibSurfaceCreateInfoKHR; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + struct XcbSurfaceCreateInfoKHR; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + struct WaylandSurfaceCreateInfoKHR; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + struct AndroidSurfaceCreateInfoKHR; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + struct Win32SurfaceCreateInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + struct DebugReportCallbackCreateInfoEXT; + + //=== VK_AMD_rasterization_order === + struct PipelineRasterizationStateRasterizationOrderAMD; + + //=== VK_EXT_debug_marker === + struct DebugMarkerObjectNameInfoEXT; + struct DebugMarkerObjectTagInfoEXT; + struct DebugMarkerMarkerInfoEXT; + + //=== VK_KHR_video_queue === + struct QueueFamilyQueryResultStatusPropertiesKHR; + struct QueueFamilyVideoPropertiesKHR; + struct VideoProfileInfoKHR; + struct VideoProfileListInfoKHR; + struct VideoCapabilitiesKHR; + struct PhysicalDeviceVideoFormatInfoKHR; + struct VideoFormatPropertiesKHR; + struct VideoPictureResourceInfoKHR; + struct VideoReferenceSlotInfoKHR; + struct VideoSessionMemoryRequirementsKHR; + struct BindVideoSessionMemoryInfoKHR; + struct VideoSessionCreateInfoKHR; + struct VideoSessionParametersCreateInfoKHR; + struct VideoSessionParametersUpdateInfoKHR; + struct VideoBeginCodingInfoKHR; + struct VideoEndCodingInfoKHR; + struct VideoCodingControlInfoKHR; + + //=== VK_KHR_video_decode_queue === + struct VideoDecodeCapabilitiesKHR; + struct VideoDecodeUsageInfoKHR; + struct VideoDecodeInfoKHR; + + //=== VK_NV_dedicated_allocation === + struct DedicatedAllocationImageCreateInfoNV; + struct DedicatedAllocationBufferCreateInfoNV; + struct DedicatedAllocationMemoryAllocateInfoNV; + + //=== VK_EXT_transform_feedback === + struct PhysicalDeviceTransformFeedbackFeaturesEXT; + struct PhysicalDeviceTransformFeedbackPropertiesEXT; + struct PipelineRasterizationStateStreamCreateInfoEXT; + + //=== VK_NVX_binary_import === + struct CuModuleCreateInfoNVX; + struct CuModuleTexturingModeCreateInfoNVX; + struct CuFunctionCreateInfoNVX; + struct CuLaunchInfoNVX; + + //=== VK_NVX_image_view_handle === + struct ImageViewHandleInfoNVX; + struct ImageViewAddressPropertiesNVX; + + //=== VK_KHR_video_encode_h264 === + struct VideoEncodeH264CapabilitiesKHR; + struct VideoEncodeH264QualityLevelPropertiesKHR; + struct VideoEncodeH264SessionCreateInfoKHR; + struct VideoEncodeH264SessionParametersCreateInfoKHR; + struct VideoEncodeH264SessionParametersAddInfoKHR; + struct VideoEncodeH264SessionParametersGetInfoKHR; + struct VideoEncodeH264SessionParametersFeedbackInfoKHR; + struct VideoEncodeH264PictureInfoKHR; + struct VideoEncodeH264DpbSlotInfoKHR; + struct VideoEncodeH264NaluSliceInfoKHR; + struct VideoEncodeH264ProfileInfoKHR; + struct VideoEncodeH264RateControlInfoKHR; + struct VideoEncodeH264RateControlLayerInfoKHR; + struct VideoEncodeH264QpKHR; + struct VideoEncodeH264FrameSizeKHR; + struct VideoEncodeH264GopRemainingFrameInfoKHR; + + //=== VK_KHR_video_encode_h265 === + struct VideoEncodeH265CapabilitiesKHR; + struct VideoEncodeH265SessionCreateInfoKHR; + struct VideoEncodeH265QualityLevelPropertiesKHR; + struct VideoEncodeH265SessionParametersCreateInfoKHR; + struct VideoEncodeH265SessionParametersAddInfoKHR; + struct VideoEncodeH265SessionParametersGetInfoKHR; + struct VideoEncodeH265SessionParametersFeedbackInfoKHR; + struct VideoEncodeH265PictureInfoKHR; + struct VideoEncodeH265DpbSlotInfoKHR; + struct VideoEncodeH265NaluSliceSegmentInfoKHR; + struct VideoEncodeH265ProfileInfoKHR; + struct VideoEncodeH265RateControlInfoKHR; + struct VideoEncodeH265RateControlLayerInfoKHR; + struct VideoEncodeH265QpKHR; + struct VideoEncodeH265FrameSizeKHR; + struct VideoEncodeH265GopRemainingFrameInfoKHR; + + //=== VK_KHR_video_decode_h264 === + struct VideoDecodeH264ProfileInfoKHR; + struct VideoDecodeH264CapabilitiesKHR; + struct VideoDecodeH264SessionParametersCreateInfoKHR; + struct VideoDecodeH264SessionParametersAddInfoKHR; + struct VideoDecodeH264PictureInfoKHR; + struct VideoDecodeH264DpbSlotInfoKHR; + + //=== VK_AMD_texture_gather_bias_lod === + struct TextureLODGatherFormatPropertiesAMD; + + //=== VK_AMD_shader_info === + struct ShaderResourceUsageAMD; + struct ShaderStatisticsInfoAMD; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + struct StreamDescriptorSurfaceCreateInfoGGP; +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_corner_sampled_image === + struct PhysicalDeviceCornerSampledImageFeaturesNV; + + //=== VK_NV_external_memory_capabilities === + struct ExternalImageFormatPropertiesNV; + + //=== VK_NV_external_memory === + struct ExternalMemoryImageCreateInfoNV; + struct ExportMemoryAllocateInfoNV; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + struct ImportMemoryWin32HandleInfoNV; + struct ExportMemoryWin32HandleInfoNV; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_win32_keyed_mutex === + struct Win32KeyedMutexAcquireReleaseInfoNV; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_validation_flags === + struct ValidationFlagsEXT; + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + struct ViSurfaceCreateInfoNN; +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_EXT_astc_decode_mode === + struct ImageViewASTCDecodeModeEXT; + struct PhysicalDeviceASTCDecodeFeaturesEXT; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + struct ImportMemoryWin32HandleInfoKHR; + struct ExportMemoryWin32HandleInfoKHR; + struct MemoryWin32HandlePropertiesKHR; + struct MemoryGetWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + struct ImportMemoryFdInfoKHR; + struct MemoryFdPropertiesKHR; + struct MemoryGetFdInfoKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_keyed_mutex === + struct Win32KeyedMutexAcquireReleaseInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + struct ImportSemaphoreWin32HandleInfoKHR; + struct ExportSemaphoreWin32HandleInfoKHR; + struct D3D12FenceSubmitInfoKHR; + struct SemaphoreGetWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + struct ImportSemaphoreFdInfoKHR; + struct SemaphoreGetFdInfoKHR; + + //=== VK_EXT_conditional_rendering === + struct ConditionalRenderingBeginInfoEXT; + struct PhysicalDeviceConditionalRenderingFeaturesEXT; + struct CommandBufferInheritanceConditionalRenderingInfoEXT; + + //=== VK_KHR_incremental_present === + struct PresentRegionsKHR; + struct PresentRegionKHR; + struct RectLayerKHR; + + //=== VK_NV_clip_space_w_scaling === + struct ViewportWScalingNV; + struct PipelineViewportWScalingStateCreateInfoNV; + + //=== VK_EXT_display_surface_counter === + struct SurfaceCapabilities2EXT; + + //=== VK_EXT_display_control === + struct DisplayPowerInfoEXT; + struct DeviceEventInfoEXT; + struct DisplayEventInfoEXT; + struct SwapchainCounterCreateInfoEXT; + + //=== VK_GOOGLE_display_timing === + struct RefreshCycleDurationGOOGLE; + struct PastPresentationTimingGOOGLE; + struct PresentTimesInfoGOOGLE; + struct PresentTimeGOOGLE; + + //=== VK_NVX_multiview_per_view_attributes === + struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + struct MultiviewPerViewAttributesInfoNVX; + + //=== VK_NV_viewport_swizzle === + struct ViewportSwizzleNV; + struct PipelineViewportSwizzleStateCreateInfoNV; + + //=== VK_EXT_discard_rectangles === + struct PhysicalDeviceDiscardRectanglePropertiesEXT; + struct PipelineDiscardRectangleStateCreateInfoEXT; + + //=== VK_EXT_conservative_rasterization === + struct PhysicalDeviceConservativeRasterizationPropertiesEXT; + struct PipelineRasterizationConservativeStateCreateInfoEXT; + + //=== VK_EXT_depth_clip_enable === + struct PhysicalDeviceDepthClipEnableFeaturesEXT; + struct PipelineRasterizationDepthClipStateCreateInfoEXT; + + //=== VK_EXT_hdr_metadata === + struct HdrMetadataEXT; + struct XYColorEXT; + + //=== VK_IMG_relaxed_line_rasterization === + struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG; + + //=== VK_KHR_shared_presentable_image === + struct SharedPresentSurfaceCapabilitiesKHR; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + struct ImportFenceWin32HandleInfoKHR; + struct ExportFenceWin32HandleInfoKHR; + struct FenceGetWin32HandleInfoKHR; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + struct ImportFenceFdInfoKHR; + struct FenceGetFdInfoKHR; + + //=== VK_KHR_performance_query === + struct PhysicalDevicePerformanceQueryFeaturesKHR; + struct PhysicalDevicePerformanceQueryPropertiesKHR; + struct PerformanceCounterKHR; + struct PerformanceCounterDescriptionKHR; + struct QueryPoolPerformanceCreateInfoKHR; + union PerformanceCounterResultKHR; + struct AcquireProfilingLockInfoKHR; + struct PerformanceQuerySubmitInfoKHR; + + //=== VK_KHR_get_surface_capabilities2 === + struct PhysicalDeviceSurfaceInfo2KHR; + struct SurfaceCapabilities2KHR; + struct SurfaceFormat2KHR; + + //=== VK_KHR_get_display_properties2 === + struct DisplayProperties2KHR; + struct DisplayPlaneProperties2KHR; + struct DisplayModeProperties2KHR; + struct DisplayPlaneInfo2KHR; + struct DisplayPlaneCapabilities2KHR; + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + struct IOSSurfaceCreateInfoMVK; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + struct MacOSSurfaceCreateInfoMVK; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + struct DebugUtilsLabelEXT; + struct DebugUtilsMessengerCallbackDataEXT; + struct DebugUtilsMessengerCreateInfoEXT; + struct DebugUtilsObjectNameInfoEXT; + struct DebugUtilsObjectTagInfoEXT; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + struct AndroidHardwareBufferUsageANDROID; + struct AndroidHardwareBufferPropertiesANDROID; + struct AndroidHardwareBufferFormatPropertiesANDROID; + struct ImportAndroidHardwareBufferInfoANDROID; + struct MemoryGetAndroidHardwareBufferInfoANDROID; + struct ExternalFormatANDROID; + struct AndroidHardwareBufferFormatProperties2ANDROID; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + struct PhysicalDeviceShaderEnqueueFeaturesAMDX; + struct PhysicalDeviceShaderEnqueuePropertiesAMDX; + struct ExecutionGraphPipelineScratchSizeAMDX; + struct ExecutionGraphPipelineCreateInfoAMDX; + struct DispatchGraphInfoAMDX; + struct DispatchGraphCountInfoAMDX; + struct PipelineShaderStageNodeCreateInfoAMDX; + union DeviceOrHostAddressConstAMDX; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + struct HostAddressRangeEXT; + struct HostAddressRangeConstEXT; + struct TexelBufferDescriptorInfoEXT; + struct ImageDescriptorInfoEXT; + struct ResourceDescriptorInfoEXT; + union ResourceDescriptorDataEXT; + struct BindHeapInfoEXT; + struct PushDataInfoEXT; + struct DescriptorMappingSourceConstantOffsetEXT; + struct DescriptorMappingSourcePushIndexEXT; + struct DescriptorMappingSourceIndirectIndexEXT; + struct DescriptorMappingSourceHeapDataEXT; + struct DescriptorMappingSourceIndirectAddressEXT; + struct DescriptorMappingSourceShaderRecordIndexEXT; + union DescriptorMappingSourceDataEXT; + struct DescriptorMappingSourceIndirectIndexArrayEXT; + struct DescriptorSetAndBindingMappingEXT; + struct ShaderDescriptorSetAndBindingMappingInfoEXT; + struct OpaqueCaptureDataCreateInfoEXT; + struct PhysicalDeviceDescriptorHeapFeaturesEXT; + struct PhysicalDeviceDescriptorHeapPropertiesEXT; + struct CommandBufferInheritanceDescriptorHeapInfoEXT; + struct SamplerCustomBorderColorIndexCreateInfoEXT; + struct IndirectCommandsLayoutPushDataTokenNV; + struct SubsampledImageFormatPropertiesEXT; + struct TensorViewCreateInfoARM; + struct PhysicalDeviceDescriptorHeapTensorPropertiesARM; + + //=== VK_AMD_mixed_attachment_samples === + struct AttachmentSampleCountInfoAMD; + using AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD; + + //=== VK_KHR_shader_bfloat16 === + struct PhysicalDeviceShaderBfloat16FeaturesKHR; + + //=== VK_EXT_sample_locations === + struct SampleLocationEXT; + struct SampleLocationsInfoEXT; + struct AttachmentSampleLocationsEXT; + struct SubpassSampleLocationsEXT; + struct RenderPassSampleLocationsBeginInfoEXT; + struct PipelineSampleLocationsStateCreateInfoEXT; + struct PhysicalDeviceSampleLocationsPropertiesEXT; + struct MultisamplePropertiesEXT; + + //=== VK_EXT_blend_operation_advanced === + struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT; + struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT; + struct PipelineColorBlendAdvancedStateCreateInfoEXT; + + //=== VK_NV_fragment_coverage_to_color === + struct PipelineCoverageToColorStateCreateInfoNV; + + //=== VK_KHR_acceleration_structure === + union DeviceOrHostAddressKHR; + union DeviceOrHostAddressConstKHR; + struct AccelerationStructureBuildRangeInfoKHR; + struct AabbPositionsKHR; + using AabbPositionsNV = AabbPositionsKHR; + struct AccelerationStructureGeometryTrianglesDataKHR; + struct TransformMatrixKHR; + using TransformMatrixNV = TransformMatrixKHR; + struct AccelerationStructureBuildGeometryInfoKHR; + struct AccelerationStructureGeometryAabbsDataKHR; + struct AccelerationStructureInstanceKHR; + using AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR; + struct AccelerationStructureGeometryInstancesDataKHR; + union AccelerationStructureGeometryDataKHR; + struct AccelerationStructureGeometryKHR; + struct AccelerationStructureCreateInfoKHR; + struct WriteDescriptorSetAccelerationStructureKHR; + struct PhysicalDeviceAccelerationStructureFeaturesKHR; + struct PhysicalDeviceAccelerationStructurePropertiesKHR; + struct AccelerationStructureDeviceAddressInfoKHR; + struct AccelerationStructureVersionInfoKHR; + struct CopyAccelerationStructureToMemoryInfoKHR; + struct CopyMemoryToAccelerationStructureInfoKHR; + struct CopyAccelerationStructureInfoKHR; + struct AccelerationStructureBuildSizesInfoKHR; + + //=== VK_KHR_ray_tracing_pipeline === + struct RayTracingShaderGroupCreateInfoKHR; + struct RayTracingPipelineCreateInfoKHR; + struct PhysicalDeviceRayTracingPipelineFeaturesKHR; + struct PhysicalDeviceRayTracingPipelinePropertiesKHR; + struct StridedDeviceAddressRegionKHR; + struct TraceRaysIndirectCommandKHR; + struct RayTracingPipelineInterfaceCreateInfoKHR; + + //=== VK_KHR_ray_query === + struct PhysicalDeviceRayQueryFeaturesKHR; + + //=== VK_NV_framebuffer_mixed_samples === + struct PipelineCoverageModulationStateCreateInfoNV; + + //=== VK_NV_shader_sm_builtins === + struct PhysicalDeviceShaderSMBuiltinsPropertiesNV; + struct PhysicalDeviceShaderSMBuiltinsFeaturesNV; + + //=== VK_EXT_image_drm_format_modifier === + struct DrmFormatModifierPropertiesListEXT; + struct DrmFormatModifierPropertiesEXT; + struct PhysicalDeviceImageDrmFormatModifierInfoEXT; + struct ImageDrmFormatModifierListCreateInfoEXT; + struct ImageDrmFormatModifierExplicitCreateInfoEXT; + struct ImageDrmFormatModifierPropertiesEXT; + struct DrmFormatModifierPropertiesList2EXT; + struct DrmFormatModifierProperties2EXT; + + //=== VK_EXT_validation_cache === + struct ValidationCacheCreateInfoEXT; + struct ShaderModuleValidationCacheCreateInfoEXT; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_KHR_portability_subset === + struct PhysicalDevicePortabilitySubsetFeaturesKHR; + struct PhysicalDevicePortabilitySubsetPropertiesKHR; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_NV_shading_rate_image === + struct ShadingRatePaletteNV; + struct PipelineViewportShadingRateImageStateCreateInfoNV; + struct PhysicalDeviceShadingRateImageFeaturesNV; + struct PhysicalDeviceShadingRateImagePropertiesNV; + struct CoarseSampleLocationNV; + struct CoarseSampleOrderCustomNV; + struct PipelineViewportCoarseSampleOrderStateCreateInfoNV; + + //=== VK_NV_ray_tracing === + struct RayTracingShaderGroupCreateInfoNV; + struct RayTracingPipelineCreateInfoNV; + struct GeometryTrianglesNV; + struct GeometryAABBNV; + struct GeometryDataNV; + struct GeometryNV; + struct AccelerationStructureInfoNV; + struct AccelerationStructureCreateInfoNV; + struct BindAccelerationStructureMemoryInfoNV; + struct WriteDescriptorSetAccelerationStructureNV; + struct AccelerationStructureMemoryRequirementsInfoNV; + struct PhysicalDeviceRayTracingPropertiesNV; + + //=== VK_NV_representative_fragment_test === + struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV; + struct PipelineRepresentativeFragmentTestStateCreateInfoNV; + + //=== VK_EXT_filter_cubic === + struct PhysicalDeviceImageViewImageFormatInfoEXT; + struct FilterCubicImageViewImageFormatPropertiesEXT; + + //=== VK_QCOM_cooperative_matrix_conversion === + struct PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM; + + //=== VK_EXT_external_memory_host === + struct ImportMemoryHostPointerInfoEXT; + struct MemoryHostPointerPropertiesEXT; + struct PhysicalDeviceExternalMemoryHostPropertiesEXT; + + //=== VK_KHR_shader_clock === + struct PhysicalDeviceShaderClockFeaturesKHR; + + //=== VK_AMD_pipeline_compiler_control === + struct PipelineCompilerControlCreateInfoAMD; + + //=== VK_AMD_shader_core_properties === + struct PhysicalDeviceShaderCorePropertiesAMD; + + //=== VK_KHR_video_decode_h265 === + struct VideoDecodeH265ProfileInfoKHR; + struct VideoDecodeH265CapabilitiesKHR; + struct VideoDecodeH265SessionParametersCreateInfoKHR; + struct VideoDecodeH265SessionParametersAddInfoKHR; + struct VideoDecodeH265PictureInfoKHR; + struct VideoDecodeH265DpbSlotInfoKHR; + + //=== VK_AMD_memory_overallocation_behavior === + struct DeviceMemoryOverallocationCreateInfoAMD; + + //=== VK_EXT_vertex_attribute_divisor === + struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT; + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_frame_token === + struct PresentFrameTokenGGP; +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_mesh_shader === + struct PhysicalDeviceMeshShaderFeaturesNV; + struct PhysicalDeviceMeshShaderPropertiesNV; + struct DrawMeshTasksIndirectCommandNV; + + //=== VK_NV_shader_image_footprint === + struct PhysicalDeviceShaderImageFootprintFeaturesNV; + + //=== VK_NV_scissor_exclusive === + struct PipelineViewportExclusiveScissorStateCreateInfoNV; + struct PhysicalDeviceExclusiveScissorFeaturesNV; + + //=== VK_NV_device_diagnostic_checkpoints === + struct QueueFamilyCheckpointPropertiesNV; + struct CheckpointDataNV; + struct QueueFamilyCheckpointProperties2NV; + struct CheckpointData2NV; + + //=== VK_EXT_present_timing === + struct PhysicalDevicePresentTimingFeaturesEXT; + struct PresentTimingSurfaceCapabilitiesEXT; + struct SwapchainCalibratedTimestampInfoEXT; + struct SwapchainTimingPropertiesEXT; + struct SwapchainTimeDomainPropertiesEXT; + struct PastPresentationTimingInfoEXT; + struct PastPresentationTimingPropertiesEXT; + struct PastPresentationTimingEXT; + struct PresentTimingsInfoEXT; + struct PresentTimingInfoEXT; + struct PresentStageTimeEXT; + + //=== VK_INTEL_shader_integer_functions2 === + struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + + //=== VK_INTEL_performance_query === + union PerformanceValueDataINTEL; + struct PerformanceValueINTEL; + struct InitializePerformanceApiInfoINTEL; + struct QueryPoolPerformanceQueryCreateInfoINTEL; + using QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL; + struct PerformanceMarkerInfoINTEL; + struct PerformanceStreamMarkerInfoINTEL; + struct PerformanceOverrideInfoINTEL; + struct PerformanceConfigurationAcquireInfoINTEL; + + //=== VK_EXT_pci_bus_info === + struct PhysicalDevicePCIBusInfoPropertiesEXT; + + //=== VK_AMD_display_native_hdr === + struct DisplayNativeHdrSurfaceCapabilitiesAMD; + struct SwapchainDisplayNativeHdrCreateInfoAMD; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + struct ImagePipeSurfaceCreateInfoFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + struct MetalSurfaceCreateInfoEXT; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_fragment_density_map === + struct PhysicalDeviceFragmentDensityMapFeaturesEXT; + struct PhysicalDeviceFragmentDensityMapPropertiesEXT; + struct RenderPassFragmentDensityMapCreateInfoEXT; + struct RenderingFragmentDensityMapAttachmentInfoEXT; + + //=== VK_KHR_fragment_shading_rate === + struct FragmentShadingRateAttachmentInfoKHR; + struct PipelineFragmentShadingRateStateCreateInfoKHR; + struct PhysicalDeviceFragmentShadingRateFeaturesKHR; + struct PhysicalDeviceFragmentShadingRatePropertiesKHR; + struct PhysicalDeviceFragmentShadingRateKHR; + struct RenderingFragmentShadingRateAttachmentInfoKHR; + + //=== VK_AMD_shader_core_properties2 === + struct PhysicalDeviceShaderCoreProperties2AMD; + + //=== VK_AMD_device_coherent_memory === + struct PhysicalDeviceCoherentMemoryFeaturesAMD; + + //=== VK_KHR_shader_constant_data === + struct PhysicalDeviceShaderConstantDataFeaturesKHR; + + //=== VK_KHR_shader_abort === + struct PhysicalDeviceShaderAbortFeaturesKHR; + struct DeviceFaultShaderAbortMessageInfoKHR; + struct PhysicalDeviceShaderAbortPropertiesKHR; + + //=== VK_EXT_shader_image_atomic_int64 === + struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + + //=== VK_KHR_shader_quad_control === + struct PhysicalDeviceShaderQuadControlFeaturesKHR; + + //=== VK_EXT_memory_budget === + struct PhysicalDeviceMemoryBudgetPropertiesEXT; + + //=== VK_EXT_memory_priority === + struct PhysicalDeviceMemoryPriorityFeaturesEXT; + struct MemoryPriorityAllocateInfoEXT; + + //=== VK_KHR_surface_protected_capabilities === + struct SurfaceProtectedCapabilitiesKHR; + + //=== VK_NV_dedicated_allocation_image_aliasing === + struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + + //=== VK_EXT_buffer_device_address === + struct PhysicalDeviceBufferDeviceAddressFeaturesEXT; + using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT; + struct BufferDeviceAddressCreateInfoEXT; + + //=== VK_EXT_validation_features === + struct ValidationFeaturesEXT; + + //=== VK_KHR_present_wait === + struct PhysicalDevicePresentWaitFeaturesKHR; + + //=== VK_NV_cooperative_matrix === + struct CooperativeMatrixPropertiesNV; + struct PhysicalDeviceCooperativeMatrixFeaturesNV; + struct PhysicalDeviceCooperativeMatrixPropertiesNV; + + //=== VK_NV_coverage_reduction_mode === + struct PhysicalDeviceCoverageReductionModeFeaturesNV; + struct PipelineCoverageReductionStateCreateInfoNV; + struct FramebufferMixedSamplesCombinationNV; + + //=== VK_EXT_fragment_shader_interlock === + struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT; + + //=== VK_EXT_ycbcr_image_arrays === + struct PhysicalDeviceYcbcrImageArraysFeaturesEXT; + + //=== VK_EXT_provoking_vertex === + struct PhysicalDeviceProvokingVertexFeaturesEXT; + struct PhysicalDeviceProvokingVertexPropertiesEXT; + struct PipelineRasterizationProvokingVertexStateCreateInfoEXT; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + struct SurfaceFullScreenExclusiveInfoEXT; + struct SurfaceCapabilitiesFullScreenExclusiveEXT; + struct SurfaceFullScreenExclusiveWin32InfoEXT; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + struct HeadlessSurfaceCreateInfoEXT; + + //=== VK_EXT_shader_atomic_float === + struct PhysicalDeviceShaderAtomicFloatFeaturesEXT; + + //=== VK_EXT_extended_dynamic_state === + struct PhysicalDeviceExtendedDynamicStateFeaturesEXT; + + //=== VK_KHR_pipeline_executable_properties === + struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + struct PipelineInfoKHR; + using PipelineInfoEXT = PipelineInfoKHR; + struct PipelineExecutablePropertiesKHR; + struct PipelineExecutableInfoKHR; + union PipelineExecutableStatisticValueKHR; + struct PipelineExecutableStatisticKHR; + struct PipelineExecutableInternalRepresentationKHR; + + //=== VK_EXT_map_memory_placed === + struct PhysicalDeviceMapMemoryPlacedFeaturesEXT; + struct PhysicalDeviceMapMemoryPlacedPropertiesEXT; + struct MemoryMapPlacedInfoEXT; + + //=== VK_EXT_shader_atomic_float2 === + struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT; + + //=== VK_NV_device_generated_commands === + struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + struct GraphicsShaderGroupCreateInfoNV; + struct GraphicsPipelineShaderGroupsCreateInfoNV; + struct BindShaderGroupIndirectCommandNV; + struct BindIndexBufferIndirectCommandNV; + struct BindVertexBufferIndirectCommandNV; + struct SetStateFlagsIndirectCommandNV; + struct IndirectCommandsStreamNV; + struct IndirectCommandsLayoutTokenNV; + struct IndirectCommandsLayoutCreateInfoNV; + struct GeneratedCommandsInfoNV; + struct GeneratedCommandsMemoryRequirementsInfoNV; + + //=== VK_NV_inherited_viewport_scissor === + struct PhysicalDeviceInheritedViewportScissorFeaturesNV; + struct CommandBufferInheritanceViewportScissorInfoNV; + + //=== VK_EXT_texel_buffer_alignment === + struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT; + + //=== VK_QCOM_render_pass_transform === + struct RenderPassTransformBeginInfoQCOM; + struct CommandBufferInheritanceRenderPassTransformInfoQCOM; + + //=== VK_EXT_depth_bias_control === + struct PhysicalDeviceDepthBiasControlFeaturesEXT; + struct DepthBiasInfoEXT; + struct DepthBiasRepresentationInfoEXT; + + //=== VK_EXT_device_memory_report === + struct PhysicalDeviceDeviceMemoryReportFeaturesEXT; + struct DeviceDeviceMemoryReportCreateInfoEXT; + struct DeviceMemoryReportCallbackDataEXT; + + //=== VK_EXT_custom_border_color === + struct SamplerCustomBorderColorCreateInfoEXT; + struct PhysicalDeviceCustomBorderColorPropertiesEXT; + struct PhysicalDeviceCustomBorderColorFeaturesEXT; + + //=== VK_EXT_texture_compression_astc_3d === + struct PhysicalDeviceTextureCompressionASTC3DFeaturesEXT; + + //=== VK_KHR_pipeline_library === + struct PipelineLibraryCreateInfoKHR; + + //=== VK_NV_present_barrier === + struct PhysicalDevicePresentBarrierFeaturesNV; + struct SurfaceCapabilitiesPresentBarrierNV; + struct SwapchainPresentBarrierCreateInfoNV; + + //=== VK_KHR_present_id === + struct PresentIdKHR; + struct PhysicalDevicePresentIdFeaturesKHR; + + //=== VK_KHR_video_encode_queue === + struct VideoEncodeInfoKHR; + struct VideoEncodeCapabilitiesKHR; + struct QueryPoolVideoEncodeFeedbackCreateInfoKHR; + struct VideoEncodeUsageInfoKHR; + struct VideoEncodeRateControlInfoKHR; + struct VideoEncodeRateControlLayerInfoKHR; + struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR; + struct VideoEncodeQualityLevelPropertiesKHR; + struct VideoEncodeQualityLevelInfoKHR; + struct VideoEncodeSessionParametersGetInfoKHR; + struct VideoEncodeSessionParametersFeedbackInfoKHR; + + //=== VK_NV_device_diagnostics_config === + struct PhysicalDeviceDiagnosticsConfigFeaturesNV; + struct DeviceDiagnosticsConfigCreateInfoNV; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + struct CudaModuleCreateInfoNV; + struct CudaFunctionCreateInfoNV; + struct CudaLaunchInfoNV; + struct PhysicalDeviceCudaKernelLaunchFeaturesNV; + struct PhysicalDeviceCudaKernelLaunchPropertiesNV; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + struct PhysicalDeviceTileShadingFeaturesQCOM; + struct PhysicalDeviceTileShadingPropertiesQCOM; + struct RenderPassTileShadingCreateInfoQCOM; + struct PerTileBeginInfoQCOM; + struct PerTileEndInfoQCOM; + struct DispatchTileInfoQCOM; + + //=== VK_NV_low_latency === + struct QueryLowLatencySupportNV; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + struct ExportMetalObjectCreateInfoEXT; + struct ExportMetalObjectsInfoEXT; + struct ExportMetalDeviceInfoEXT; + struct ExportMetalCommandQueueInfoEXT; + struct ExportMetalBufferInfoEXT; + struct ImportMetalBufferInfoEXT; + struct ExportMetalTextureInfoEXT; + struct ImportMetalTextureInfoEXT; + struct ExportMetalIOSurfaceInfoEXT; + struct ImportMetalIOSurfaceInfoEXT; + struct ExportMetalSharedEventInfoEXT; + struct ImportMetalSharedEventInfoEXT; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_descriptor_buffer === + struct PhysicalDeviceDescriptorBufferPropertiesEXT; + struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT; + struct PhysicalDeviceDescriptorBufferFeaturesEXT; + struct DescriptorAddressInfoEXT; + struct DescriptorBufferBindingInfoEXT; + struct DescriptorBufferBindingPushDescriptorBufferHandleEXT; + union DescriptorDataEXT; + struct DescriptorGetInfoEXT; + struct BufferCaptureDescriptorDataInfoEXT; + struct ImageCaptureDescriptorDataInfoEXT; + struct ImageViewCaptureDescriptorDataInfoEXT; + struct SamplerCaptureDescriptorDataInfoEXT; + struct OpaqueCaptureDescriptorDataCreateInfoEXT; + struct AccelerationStructureCaptureDescriptorDataInfoEXT; + + //=== VK_KHR_device_address_commands === + struct DeviceAddressRangeKHR; + using DeviceAddressRangeEXT = DeviceAddressRangeKHR; + struct StridedDeviceAddressRangeKHR; + struct DeviceMemoryCopyKHR; + struct CopyDeviceMemoryInfoKHR; + struct DeviceMemoryImageCopyKHR; + struct CopyDeviceMemoryImageInfoKHR; + struct MemoryRangeBarriersInfoKHR; + struct MemoryRangeBarrierKHR; + struct PhysicalDeviceDeviceAddressCommandsFeaturesKHR; + struct BindIndexBuffer3InfoKHR; + struct BindVertexBuffer3InfoKHR; + struct DrawIndirect2InfoKHR; + struct DrawIndirectCount2InfoKHR; + struct DispatchIndirect2InfoKHR; + struct ConditionalRenderingBeginInfo2EXT; + struct BindTransformFeedbackBuffer2InfoEXT; + struct MemoryMarkerInfoAMD; + struct AccelerationStructureCreateInfo2KHR; + + //=== VK_EXT_graphics_pipeline_library === + struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT; + struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT; + struct GraphicsPipelineLibraryCreateInfoEXT; + + //=== VK_AMD_shader_early_and_late_fragment_tests === + struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; + + //=== VK_KHR_fragment_shader_barycentric === + struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + using PhysicalDeviceFragmentShaderBarycentricFeaturesNV = PhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR; + + //=== VK_KHR_shader_subgroup_uniform_control_flow === + struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + + //=== VK_NV_fragment_shading_rate_enums === + struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + struct PipelineFragmentShadingRateEnumStateCreateInfoNV; + + //=== VK_NV_ray_tracing_motion_blur === + struct AccelerationStructureGeometryMotionTrianglesDataNV; + struct AccelerationStructureMotionInfoNV; + struct AccelerationStructureMotionInstanceNV; + union AccelerationStructureMotionInstanceDataNV; + struct AccelerationStructureMatrixMotionInstanceNV; + struct AccelerationStructureSRTMotionInstanceNV; + struct SRTDataNV; + struct PhysicalDeviceRayTracingMotionBlurFeaturesNV; + + //=== VK_EXT_mesh_shader === + struct PhysicalDeviceMeshShaderFeaturesEXT; + struct PhysicalDeviceMeshShaderPropertiesEXT; + struct DrawMeshTasksIndirectCommandEXT; + + //=== VK_EXT_ycbcr_2plane_444_formats === + struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + + //=== VK_EXT_fragment_density_map2 === + struct PhysicalDeviceFragmentDensityMap2FeaturesEXT; + struct PhysicalDeviceFragmentDensityMap2PropertiesEXT; + + //=== VK_QCOM_rotated_copy_commands === + struct CopyCommandTransformInfoQCOM; + + //=== VK_KHR_workgroup_memory_explicit_layout === + struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + + //=== VK_EXT_image_compression_control === + struct PhysicalDeviceImageCompressionControlFeaturesEXT; + struct ImageCompressionControlEXT; + struct ImageCompressionPropertiesEXT; + + //=== VK_EXT_attachment_feedback_loop_layout === + struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; + + //=== VK_EXT_4444_formats === + struct PhysicalDevice4444FormatsFeaturesEXT; + + //=== VK_EXT_device_fault === + struct PhysicalDeviceFaultFeaturesEXT; + struct DeviceFaultCountsEXT; + struct DeviceFaultInfoEXT; + + //=== VK_EXT_rgba10x6_formats === + struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT; + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + struct DirectFBSurfaceCreateInfoEXT; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_vertex_input_dynamic_state === + struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT; + struct VertexInputBindingDescription2EXT; + struct VertexInputAttributeDescription2EXT; + + //=== VK_EXT_physical_device_drm === + struct PhysicalDeviceDrmPropertiesEXT; + + //=== VK_EXT_device_address_binding_report === + struct PhysicalDeviceAddressBindingReportFeaturesEXT; + struct DeviceAddressBindingCallbackDataEXT; + + //=== VK_EXT_depth_clip_control === + struct PhysicalDeviceDepthClipControlFeaturesEXT; + struct PipelineViewportDepthClipControlCreateInfoEXT; + + //=== VK_EXT_primitive_topology_list_restart === + struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + struct ImportMemoryZirconHandleInfoFUCHSIA; + struct MemoryZirconHandlePropertiesFUCHSIA; + struct MemoryGetZirconHandleInfoFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + struct ImportSemaphoreZirconHandleInfoFUCHSIA; + struct SemaphoreGetZirconHandleInfoFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + struct BufferCollectionCreateInfoFUCHSIA; + struct ImportMemoryBufferCollectionFUCHSIA; + struct BufferCollectionImageCreateInfoFUCHSIA; + struct BufferConstraintsInfoFUCHSIA; + struct BufferCollectionBufferCreateInfoFUCHSIA; + struct BufferCollectionPropertiesFUCHSIA; + struct SysmemColorSpaceFUCHSIA; + struct ImageConstraintsInfoFUCHSIA; + struct ImageFormatConstraintsInfoFUCHSIA; + struct BufferCollectionConstraintsInfoFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + struct SubpassShadingPipelineCreateInfoHUAWEI; + struct PhysicalDeviceSubpassShadingFeaturesHUAWEI; + struct PhysicalDeviceSubpassShadingPropertiesHUAWEI; + + //=== VK_HUAWEI_invocation_mask === + struct PhysicalDeviceInvocationMaskFeaturesHUAWEI; + + //=== VK_NV_external_memory_rdma === + struct MemoryGetRemoteAddressInfoNV; + struct PhysicalDeviceExternalMemoryRDMAFeaturesNV; + + //=== VK_EXT_pipeline_properties === + struct PipelinePropertiesIdentifierEXT; + struct PhysicalDevicePipelinePropertiesFeaturesEXT; + + //=== VK_EXT_frame_boundary === + struct PhysicalDeviceFrameBoundaryFeaturesEXT; + struct FrameBoundaryEXT; + + //=== VK_EXT_multisampled_render_to_single_sampled === + struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; + struct SubpassResolvePerformanceQueryEXT; + struct MultisampledRenderToSingleSampledInfoEXT; + + //=== VK_EXT_extended_dynamic_state2 === + struct PhysicalDeviceExtendedDynamicState2FeaturesEXT; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + struct ScreenSurfaceCreateInfoQNX; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + struct PhysicalDeviceColorWriteEnableFeaturesEXT; + struct PipelineColorWriteCreateInfoEXT; + + //=== VK_EXT_primitives_generated_query === + struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT; + + //=== VK_KHR_ray_tracing_maintenance1 === + struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR; + struct TraceRaysIndirectCommand2KHR; + + //=== VK_KHR_shader_untyped_pointers === + struct PhysicalDeviceShaderUntypedPointersFeaturesKHR; + + //=== VK_VALVE_video_encode_rgb_conversion === + struct PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE; + struct VideoEncodeRgbConversionCapabilitiesVALVE; + struct VideoEncodeProfileRgbConversionInfoVALVE; + struct VideoEncodeSessionRgbConversionCreateInfoVALVE; + + //=== VK_EXT_image_view_min_lod === + struct PhysicalDeviceImageViewMinLodFeaturesEXT; + struct ImageViewMinLodCreateInfoEXT; + + //=== VK_EXT_multi_draw === + struct PhysicalDeviceMultiDrawFeaturesEXT; + struct PhysicalDeviceMultiDrawPropertiesEXT; + struct MultiDrawInfoEXT; + struct MultiDrawIndexedInfoEXT; + + //=== VK_EXT_image_2d_view_of_3d === + struct PhysicalDeviceImage2DViewOf3DFeaturesEXT; + + //=== VK_EXT_shader_tile_image === + struct PhysicalDeviceShaderTileImageFeaturesEXT; + struct PhysicalDeviceShaderTileImagePropertiesEXT; + + //=== VK_EXT_opacity_micromap === + struct MicromapBuildInfoEXT; + struct MicromapUsageEXT; + struct MicromapCreateInfoEXT; + struct PhysicalDeviceOpacityMicromapFeaturesEXT; + struct PhysicalDeviceOpacityMicromapPropertiesEXT; + struct MicromapVersionInfoEXT; + struct CopyMicromapToMemoryInfoEXT; + struct CopyMemoryToMicromapInfoEXT; + struct CopyMicromapInfoEXT; + struct MicromapBuildSizesInfoEXT; + struct AccelerationStructureTrianglesOpacityMicromapEXT; + struct MicromapTriangleEXT; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_displacement_micromap === + struct PhysicalDeviceDisplacementMicromapFeaturesNV; + struct PhysicalDeviceDisplacementMicromapPropertiesNV; + struct AccelerationStructureTrianglesDisplacementMicromapNV; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_HUAWEI_cluster_culling_shader === + struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI; + struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI; + struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI; + + //=== VK_EXT_border_color_swizzle === + struct PhysicalDeviceBorderColorSwizzleFeaturesEXT; + struct SamplerBorderColorComponentMappingCreateInfoEXT; + + //=== VK_EXT_pageable_device_local_memory === + struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + + //=== VK_ARM_shader_core_properties === + struct PhysicalDeviceShaderCorePropertiesARM; + + //=== VK_ARM_scheduling_controls === + struct DeviceQueueShaderCoreControlCreateInfoARM; + struct PhysicalDeviceSchedulingControlsFeaturesARM; + struct PhysicalDeviceSchedulingControlsPropertiesARM; + + //=== VK_EXT_image_sliced_view_of_3d === + struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT; + struct ImageViewSlicedCreateInfoEXT; + + //=== VK_VALVE_descriptor_set_host_mapping === + struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE; + struct DescriptorSetBindingReferenceVALVE; + struct DescriptorSetLayoutHostMappingInfoVALVE; + + //=== VK_EXT_non_seamless_cube_map === + struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT; + + //=== VK_ARM_render_pass_striped === + struct PhysicalDeviceRenderPassStripedFeaturesARM; + struct PhysicalDeviceRenderPassStripedPropertiesARM; + struct RenderPassStripeBeginInfoARM; + struct RenderPassStripeInfoARM; + struct RenderPassStripeSubmitInfoARM; + + //=== VK_NV_copy_memory_indirect === + struct PhysicalDeviceCopyMemoryIndirectFeaturesNV; + + //=== VK_NV_memory_decompression === + struct DecompressMemoryRegionNV; + + //=== VK_NV_device_generated_commands_compute === + struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV; + struct ComputePipelineIndirectBufferInfoNV; + struct PipelineIndirectDeviceAddressInfoNV; + struct BindPipelineIndirectCommandNV; + + //=== VK_NV_ray_tracing_linear_swept_spheres === + struct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV; + struct AccelerationStructureGeometryLinearSweptSpheresDataNV; + struct AccelerationStructureGeometrySpheresDataNV; + + //=== VK_NV_linear_color_attachment === + struct PhysicalDeviceLinearColorAttachmentFeaturesNV; + + //=== VK_KHR_shader_maximal_reconvergence === + struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR; + + //=== VK_EXT_image_compression_control_swapchain === + struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT; + + //=== VK_QCOM_image_processing === + struct ImageViewSampleWeightCreateInfoQCOM; + struct PhysicalDeviceImageProcessingFeaturesQCOM; + struct PhysicalDeviceImageProcessingPropertiesQCOM; + + //=== VK_EXT_nested_command_buffer === + struct PhysicalDeviceNestedCommandBufferFeaturesEXT; + struct PhysicalDeviceNestedCommandBufferPropertiesEXT; + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + struct NativeBufferUsageOHOS; + struct NativeBufferPropertiesOHOS; + struct NativeBufferFormatPropertiesOHOS; + struct ImportNativeBufferInfoOHOS; + struct MemoryGetNativeBufferInfoOHOS; + struct ExternalFormatOHOS; +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_external_memory_acquire_unmodified === + struct ExternalMemoryAcquireUnmodifiedEXT; + + //=== VK_EXT_extended_dynamic_state3 === + struct PhysicalDeviceExtendedDynamicState3FeaturesEXT; + struct PhysicalDeviceExtendedDynamicState3PropertiesEXT; + struct ColorBlendEquationEXT; + struct ColorBlendAdvancedEXT; + + //=== VK_EXT_subpass_merge_feedback === + struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT; + struct RenderPassCreationControlEXT; + struct RenderPassCreationFeedbackInfoEXT; + struct RenderPassCreationFeedbackCreateInfoEXT; + struct RenderPassSubpassFeedbackInfoEXT; + struct RenderPassSubpassFeedbackCreateInfoEXT; + + //=== VK_LUNARG_direct_driver_loading === + struct DirectDriverLoadingInfoLUNARG; + struct DirectDriverLoadingListLUNARG; + + //=== VK_ARM_tensors === + struct TensorDescriptionARM; + struct TensorCreateInfoARM; + struct TensorMemoryRequirementsInfoARM; + struct BindTensorMemoryInfoARM; + struct WriteDescriptorSetTensorARM; + struct TensorFormatPropertiesARM; + struct PhysicalDeviceTensorPropertiesARM; + struct TensorMemoryBarrierARM; + struct TensorDependencyInfoARM; + struct PhysicalDeviceTensorFeaturesARM; + struct DeviceTensorMemoryRequirementsARM; + struct CopyTensorInfoARM; + struct TensorCopyARM; + struct MemoryDedicatedAllocateInfoTensorARM; + struct PhysicalDeviceExternalTensorInfoARM; + struct ExternalTensorPropertiesARM; + struct ExternalMemoryTensorCreateInfoARM; + struct PhysicalDeviceDescriptorBufferTensorFeaturesARM; + struct PhysicalDeviceDescriptorBufferTensorPropertiesARM; + struct DescriptorGetTensorInfoARM; + struct TensorCaptureDescriptorDataInfoARM; + struct TensorViewCaptureDescriptorDataInfoARM; + struct FrameBoundaryTensorsARM; + + //=== VK_EXT_shader_module_identifier === + struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT; + struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT; + struct PipelineShaderStageModuleIdentifierCreateInfoEXT; + struct ShaderModuleIdentifierEXT; + + //=== VK_EXT_rasterization_order_attachment_access === + struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT; + using PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT; + + //=== VK_NV_optical_flow === + struct PhysicalDeviceOpticalFlowFeaturesNV; + struct PhysicalDeviceOpticalFlowPropertiesNV; + struct OpticalFlowImageFormatInfoNV; + struct OpticalFlowImageFormatPropertiesNV; + struct OpticalFlowSessionCreateInfoNV; + struct OpticalFlowSessionCreatePrivateDataInfoNV; + struct OpticalFlowExecuteInfoNV; + + //=== VK_EXT_legacy_dithering === + struct PhysicalDeviceLegacyDitheringFeaturesEXT; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_format_resolve === + struct PhysicalDeviceExternalFormatResolveFeaturesANDROID; + struct PhysicalDeviceExternalFormatResolvePropertiesANDROID; + struct AndroidHardwareBufferFormatResolvePropertiesANDROID; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + //=== VK_AMD_anti_lag === + struct PhysicalDeviceAntiLagFeaturesAMD; + struct AntiLagDataAMD; + struct AntiLagPresentationInfoAMD; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_dense_geometry_format === + struct PhysicalDeviceDenseGeometryFormatFeaturesAMDX; + struct AccelerationStructureDenseGeometryFormatTrianglesDataAMDX; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_present_id2 === + struct SurfaceCapabilitiesPresentId2KHR; + struct PresentId2KHR; + struct PhysicalDevicePresentId2FeaturesKHR; + + //=== VK_KHR_present_wait2 === + struct SurfaceCapabilitiesPresentWait2KHR; + struct PhysicalDevicePresentWait2FeaturesKHR; + struct PresentWait2InfoKHR; + + //=== VK_KHR_ray_tracing_position_fetch === + struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR; + + //=== VK_EXT_shader_object === + struct PhysicalDeviceShaderObjectFeaturesEXT; + struct PhysicalDeviceShaderObjectPropertiesEXT; + struct ShaderCreateInfoEXT; + + //=== VK_KHR_pipeline_binary === + struct PhysicalDevicePipelineBinaryFeaturesKHR; + struct PhysicalDevicePipelineBinaryPropertiesKHR; + struct DevicePipelineBinaryInternalCacheControlKHR; + struct PipelineBinaryKeyKHR; + struct PipelineBinaryDataKHR; + struct PipelineBinaryKeysAndDataKHR; + struct PipelineBinaryCreateInfoKHR; + struct PipelineBinaryInfoKHR; + struct ReleaseCapturedPipelineDataInfoKHR; + struct PipelineBinaryDataInfoKHR; + struct PipelineCreateInfoKHR; + struct PipelineBinaryHandlesInfoKHR; + + //=== VK_QCOM_tile_properties === + struct PhysicalDeviceTilePropertiesFeaturesQCOM; + struct TilePropertiesQCOM; + + //=== VK_SEC_amigo_profiling === + struct PhysicalDeviceAmigoProfilingFeaturesSEC; + struct AmigoProfilingSubmitInfoSEC; + + //=== VK_KHR_surface_maintenance1 === + struct SurfacePresentModeKHR; + using SurfacePresentModeEXT = SurfacePresentModeKHR; + struct SurfacePresentScalingCapabilitiesKHR; + using SurfacePresentScalingCapabilitiesEXT = SurfacePresentScalingCapabilitiesKHR; + struct SurfacePresentModeCompatibilityKHR; + using SurfacePresentModeCompatibilityEXT = SurfacePresentModeCompatibilityKHR; + + //=== VK_KHR_swapchain_maintenance1 === + struct PhysicalDeviceSwapchainMaintenance1FeaturesKHR; + using PhysicalDeviceSwapchainMaintenance1FeaturesEXT = PhysicalDeviceSwapchainMaintenance1FeaturesKHR; + struct SwapchainPresentFenceInfoKHR; + using SwapchainPresentFenceInfoEXT = SwapchainPresentFenceInfoKHR; + struct SwapchainPresentModesCreateInfoKHR; + using SwapchainPresentModesCreateInfoEXT = SwapchainPresentModesCreateInfoKHR; + struct SwapchainPresentModeInfoKHR; + using SwapchainPresentModeInfoEXT = SwapchainPresentModeInfoKHR; + struct SwapchainPresentScalingCreateInfoKHR; + using SwapchainPresentScalingCreateInfoEXT = SwapchainPresentScalingCreateInfoKHR; + struct ReleaseSwapchainImagesInfoKHR; + using ReleaseSwapchainImagesInfoEXT = ReleaseSwapchainImagesInfoKHR; + + //=== VK_QCOM_multiview_per_view_viewports === + struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM; + + //=== VK_NV_ray_tracing_invocation_reorder === + struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV; + struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV; + + //=== VK_NV_cooperative_vector === + struct PhysicalDeviceCooperativeVectorPropertiesNV; + struct PhysicalDeviceCooperativeVectorFeaturesNV; + struct CooperativeVectorPropertiesNV; + struct ConvertCooperativeVectorMatrixInfoNV; + + //=== VK_NV_extended_sparse_address_space === + struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV; + struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV; + + //=== VK_EXT_mutable_descriptor_type === + struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT; + using PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = PhysicalDeviceMutableDescriptorTypeFeaturesEXT; + struct MutableDescriptorTypeListEXT; + using MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT; + struct MutableDescriptorTypeCreateInfoEXT; + using MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT; + + //=== VK_EXT_legacy_vertex_attributes === + struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT; + struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT; + + //=== VK_EXT_layer_settings === + struct LayerSettingsCreateInfoEXT; + struct LayerSettingEXT; + + //=== VK_ARM_shader_core_builtins === + struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM; + struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM; + + //=== VK_EXT_pipeline_library_group_handles === + struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT; + + //=== VK_EXT_dynamic_rendering_unused_attachments === + struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; + + //=== VK_KHR_internally_synchronized_queues === + struct PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR; + + //=== VK_NV_low_latency2 === + struct LatencySleepModeInfoNV; + struct LatencySleepInfoNV; + struct SetLatencyMarkerInfoNV; + struct GetLatencyMarkerInfoNV; + struct LatencyTimingsFrameReportNV; + struct LatencySubmissionPresentIdNV; + struct SwapchainLatencyCreateInfoNV; + struct OutOfBandQueueTypeInfoNV; + struct LatencySurfaceCapabilitiesNV; + + //=== VK_KHR_cooperative_matrix === + struct CooperativeMatrixPropertiesKHR; + struct PhysicalDeviceCooperativeMatrixFeaturesKHR; + struct PhysicalDeviceCooperativeMatrixPropertiesKHR; + + //=== VK_ARM_data_graph === + struct PhysicalDeviceDataGraphFeaturesARM; + struct DataGraphPipelineConstantARM; + struct DataGraphPipelineResourceInfoARM; + struct DataGraphPipelineCompilerControlCreateInfoARM; + struct DataGraphPipelineCreateInfoARM; + struct DataGraphPipelineShaderModuleCreateInfoARM; + struct DataGraphPipelineSessionCreateInfoARM; + struct DataGraphPipelineSessionBindPointRequirementsInfoARM; + struct DataGraphPipelineSessionBindPointRequirementARM; + struct DataGraphPipelineSessionMemoryRequirementsInfoARM; + struct BindDataGraphPipelineSessionMemoryInfoARM; + struct DataGraphPipelineInfoARM; + struct DataGraphPipelinePropertyQueryResultARM; + struct DataGraphPipelineIdentifierCreateInfoARM; + struct DataGraphPipelineDispatchInfoARM; + struct PhysicalDeviceDataGraphProcessingEngineARM; + struct QueueFamilyDataGraphPropertiesARM; + struct DataGraphProcessingEngineCreateInfoARM; + struct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM; + struct QueueFamilyDataGraphProcessingEnginePropertiesARM; + struct PhysicalDeviceDataGraphOperationSupportARM; + struct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM; + + //=== VK_QCOM_multiview_per_view_render_areas === + struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM; + struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM; + + //=== VK_KHR_compute_shader_derivatives === + struct PhysicalDeviceComputeShaderDerivativesFeaturesKHR; + using PhysicalDeviceComputeShaderDerivativesFeaturesNV = PhysicalDeviceComputeShaderDerivativesFeaturesKHR; + struct PhysicalDeviceComputeShaderDerivativesPropertiesKHR; + + //=== VK_KHR_video_decode_av1 === + struct VideoDecodeAV1ProfileInfoKHR; + struct VideoDecodeAV1CapabilitiesKHR; + struct VideoDecodeAV1SessionParametersCreateInfoKHR; + struct VideoDecodeAV1PictureInfoKHR; + struct VideoDecodeAV1DpbSlotInfoKHR; + + //=== VK_KHR_video_encode_av1 === + struct PhysicalDeviceVideoEncodeAV1FeaturesKHR; + struct VideoEncodeAV1CapabilitiesKHR; + struct VideoEncodeAV1QualityLevelPropertiesKHR; + struct VideoEncodeAV1SessionCreateInfoKHR; + struct VideoEncodeAV1SessionParametersCreateInfoKHR; + struct VideoEncodeAV1PictureInfoKHR; + struct VideoEncodeAV1DpbSlotInfoKHR; + struct VideoEncodeAV1ProfileInfoKHR; + struct VideoEncodeAV1QIndexKHR; + struct VideoEncodeAV1FrameSizeKHR; + struct VideoEncodeAV1GopRemainingFrameInfoKHR; + struct VideoEncodeAV1RateControlInfoKHR; + struct VideoEncodeAV1RateControlLayerInfoKHR; + + //=== VK_KHR_video_decode_vp9 === + struct PhysicalDeviceVideoDecodeVP9FeaturesKHR; + struct VideoDecodeVP9ProfileInfoKHR; + struct VideoDecodeVP9CapabilitiesKHR; + struct VideoDecodeVP9PictureInfoKHR; + + //=== VK_KHR_video_maintenance1 === + struct PhysicalDeviceVideoMaintenance1FeaturesKHR; + struct VideoInlineQueryInfoKHR; + + //=== VK_NV_per_stage_descriptor_set === + struct PhysicalDevicePerStageDescriptorSetFeaturesNV; + + //=== VK_QCOM_image_processing2 === + struct PhysicalDeviceImageProcessing2FeaturesQCOM; + struct PhysicalDeviceImageProcessing2PropertiesQCOM; + struct SamplerBlockMatchWindowCreateInfoQCOM; + + //=== VK_QCOM_filter_cubic_weights === + struct PhysicalDeviceCubicWeightsFeaturesQCOM; + struct SamplerCubicWeightsCreateInfoQCOM; + struct BlitImageCubicWeightsInfoQCOM; + + //=== VK_QCOM_ycbcr_degamma === + struct PhysicalDeviceYcbcrDegammaFeaturesQCOM; + struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM; + + //=== VK_QCOM_filter_cubic_clamp === + struct PhysicalDeviceCubicClampFeaturesQCOM; + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; + + //=== VK_KHR_unified_image_layouts === + struct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR; + struct AttachmentFeedbackLoopInfoEXT; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + struct ScreenBufferPropertiesQNX; + struct ScreenBufferFormatPropertiesQNX; + struct ImportScreenBufferInfoQNX; + struct ExternalFormatQNX; + struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_MSFT_layered_driver === + struct PhysicalDeviceLayeredDriverPropertiesMSFT; + + //=== VK_KHR_calibrated_timestamps === + struct CalibratedTimestampInfoKHR; + using CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR; + + //=== VK_KHR_maintenance6 === + struct SetDescriptorBufferOffsetsInfoEXT; + struct BindDescriptorBufferEmbeddedSamplersInfoEXT; + + //=== VK_NV_descriptor_pool_overallocation === + struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV; + + //=== VK_QCOM_tile_memory_heap === + struct PhysicalDeviceTileMemoryHeapFeaturesQCOM; + struct PhysicalDeviceTileMemoryHeapPropertiesQCOM; + struct TileMemoryRequirementsQCOM; + struct TileMemoryBindInfoQCOM; + struct TileMemorySizeInfoQCOM; + + //=== VK_KHR_copy_memory_indirect === + struct CopyMemoryIndirectCommandKHR; + using CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandKHR; + struct CopyMemoryIndirectInfoKHR; + struct CopyMemoryToImageIndirectCommandKHR; + using CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandKHR; + struct CopyMemoryToImageIndirectInfoKHR; + struct PhysicalDeviceCopyMemoryIndirectFeaturesKHR; + struct PhysicalDeviceCopyMemoryIndirectPropertiesKHR; + using PhysicalDeviceCopyMemoryIndirectPropertiesNV = PhysicalDeviceCopyMemoryIndirectPropertiesKHR; + + //=== VK_EXT_memory_decompression === + struct DecompressMemoryInfoEXT; + struct DecompressMemoryRegionEXT; + struct PhysicalDeviceMemoryDecompressionFeaturesEXT; + using PhysicalDeviceMemoryDecompressionFeaturesNV = PhysicalDeviceMemoryDecompressionFeaturesEXT; + struct PhysicalDeviceMemoryDecompressionPropertiesEXT; + using PhysicalDeviceMemoryDecompressionPropertiesNV = PhysicalDeviceMemoryDecompressionPropertiesEXT; + + //=== VK_NV_display_stereo === + struct DisplaySurfaceStereoCreateInfoNV; + struct DisplayModeStereoPropertiesNV; + + //=== VK_KHR_video_encode_intra_refresh === + struct VideoEncodeIntraRefreshCapabilitiesKHR; + struct VideoEncodeSessionIntraRefreshCreateInfoKHR; + struct VideoEncodeIntraRefreshInfoKHR; + struct VideoReferenceIntraRefreshInfoKHR; + struct PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR; + + //=== VK_KHR_video_encode_quantization_map === + struct VideoEncodeQuantizationMapCapabilitiesKHR; + struct VideoFormatQuantizationMapPropertiesKHR; + struct VideoEncodeQuantizationMapInfoKHR; + struct VideoEncodeQuantizationMapSessionParametersCreateInfoKHR; + struct PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR; + struct VideoEncodeH264QuantizationMapCapabilitiesKHR; + struct VideoEncodeH265QuantizationMapCapabilitiesKHR; + struct VideoFormatH265QuantizationMapPropertiesKHR; + struct VideoEncodeAV1QuantizationMapCapabilitiesKHR; + struct VideoFormatAV1QuantizationMapPropertiesKHR; + + //=== VK_NV_raw_access_chains === + struct PhysicalDeviceRawAccessChainsFeaturesNV; + + //=== VK_NV_external_compute_queue === + struct ExternalComputeQueueDeviceCreateInfoNV; + struct ExternalComputeQueueCreateInfoNV; + struct ExternalComputeQueueDataParamsNV; + struct PhysicalDeviceExternalComputeQueuePropertiesNV; + + //=== VK_KHR_shader_relaxed_extended_instruction === + struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR; + + //=== VK_NV_command_buffer_inheritance === + struct PhysicalDeviceCommandBufferInheritanceFeaturesNV; + + //=== VK_KHR_maintenance7 === + struct PhysicalDeviceMaintenance7FeaturesKHR; + struct PhysicalDeviceMaintenance7PropertiesKHR; + struct PhysicalDeviceLayeredApiPropertiesListKHR; + struct PhysicalDeviceLayeredApiPropertiesKHR; + struct PhysicalDeviceLayeredApiVulkanPropertiesKHR; + + //=== VK_NV_shader_atomic_float16_vector === + struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV; + + //=== VK_EXT_shader_replicated_composites === + struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT; + + //=== VK_EXT_shader_float8 === + struct PhysicalDeviceShaderFloat8FeaturesEXT; + + //=== VK_NV_ray_tracing_validation === + struct PhysicalDeviceRayTracingValidationFeaturesNV; + + //=== VK_NV_cluster_acceleration_structure === + struct PhysicalDeviceClusterAccelerationStructureFeaturesNV; + struct PhysicalDeviceClusterAccelerationStructurePropertiesNV; + struct ClusterAccelerationStructureClustersBottomLevelInputNV; + struct ClusterAccelerationStructureTriangleClusterInputNV; + struct ClusterAccelerationStructureMoveObjectsInputNV; + union ClusterAccelerationStructureOpInputNV; + struct ClusterAccelerationStructureInputInfoNV; + struct ClusterAccelerationStructureCommandsInfoNV; + struct StridedDeviceAddressNV; + struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV; + struct ClusterAccelerationStructureMoveObjectsInfoNV; + struct ClusterAccelerationStructureBuildClustersBottomLevelInfoNV; + struct ClusterAccelerationStructureBuildTriangleClusterInfoNV; + struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV; + struct ClusterAccelerationStructureInstantiateClusterInfoNV; + struct ClusterAccelerationStructureGetTemplateIndicesInfoNV; + struct RayTracingPipelineClusterAccelerationStructureCreateInfoNV; + + //=== VK_NV_partitioned_acceleration_structure === + struct PhysicalDevicePartitionedAccelerationStructureFeaturesNV; + struct PhysicalDevicePartitionedAccelerationStructurePropertiesNV; + struct PartitionedAccelerationStructureFlagsNV; + struct BuildPartitionedAccelerationStructureIndirectCommandNV; + struct PartitionedAccelerationStructureWriteInstanceDataNV; + struct PartitionedAccelerationStructureUpdateInstanceDataNV; + struct PartitionedAccelerationStructureWritePartitionTranslationDataNV; + struct WriteDescriptorSetPartitionedAccelerationStructureNV; + struct PartitionedAccelerationStructureInstancesInputNV; + struct BuildPartitionedAccelerationStructureInfoNV; + + //=== VK_EXT_device_generated_commands === + struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + struct GeneratedCommandsMemoryRequirementsInfoEXT; + struct IndirectExecutionSetCreateInfoEXT; + union IndirectExecutionSetInfoEXT; + struct IndirectExecutionSetPipelineInfoEXT; + struct IndirectExecutionSetShaderInfoEXT; + struct GeneratedCommandsInfoEXT; + struct WriteIndirectExecutionSetPipelineEXT; + struct IndirectCommandsLayoutCreateInfoEXT; + struct IndirectCommandsLayoutTokenEXT; + struct DrawIndirectCountIndirectCommandEXT; + struct IndirectCommandsVertexBufferTokenEXT; + struct BindVertexBufferIndirectCommandEXT; + struct IndirectCommandsIndexBufferTokenEXT; + struct BindIndexBufferIndirectCommandEXT; + struct IndirectCommandsPushConstantTokenEXT; + struct IndirectCommandsExecutionSetTokenEXT; + union IndirectCommandsTokenDataEXT; + struct IndirectExecutionSetShaderLayoutInfoEXT; + struct GeneratedCommandsPipelineInfoEXT; + struct GeneratedCommandsShaderInfoEXT; + struct WriteIndirectExecutionSetShaderEXT; + + //=== VK_KHR_device_fault === + struct PhysicalDeviceFaultFeaturesKHR; + struct PhysicalDeviceFaultPropertiesKHR; + struct DeviceFaultInfoKHR; + struct DeviceFaultDebugInfoKHR; + struct DeviceFaultAddressInfoKHR; + using DeviceFaultAddressInfoEXT = DeviceFaultAddressInfoKHR; + struct DeviceFaultVendorInfoKHR; + using DeviceFaultVendorInfoEXT = DeviceFaultVendorInfoKHR; + struct DeviceFaultVendorBinaryHeaderVersionOneKHR; + using DeviceFaultVendorBinaryHeaderVersionOneEXT = DeviceFaultVendorBinaryHeaderVersionOneKHR; + + //=== VK_KHR_maintenance8 === + struct MemoryBarrierAccessFlags3KHR; + struct PhysicalDeviceMaintenance8FeaturesKHR; + + //=== VK_MESA_image_alignment_control === + struct PhysicalDeviceImageAlignmentControlFeaturesMESA; + struct PhysicalDeviceImageAlignmentControlPropertiesMESA; + struct ImageAlignmentControlCreateInfoMESA; + + //=== VK_KHR_shader_fma === + struct PhysicalDeviceShaderFmaFeaturesKHR; + + //=== VK_NV_push_constant_bank === + struct PushConstantBankInfoNV; + struct PhysicalDevicePushConstantBankFeaturesNV; + struct PhysicalDevicePushConstantBankPropertiesNV; + + //=== VK_EXT_ray_tracing_invocation_reorder === + struct PhysicalDeviceRayTracingInvocationReorderPropertiesEXT; + struct PhysicalDeviceRayTracingInvocationReorderFeaturesEXT; + + //=== VK_EXT_depth_clamp_control === + struct PhysicalDeviceDepthClampControlFeaturesEXT; + struct PipelineViewportDepthClampControlCreateInfoEXT; + struct DepthClampRangeEXT; + + //=== VK_KHR_maintenance9 === + struct PhysicalDeviceMaintenance9FeaturesKHR; + struct PhysicalDeviceMaintenance9PropertiesKHR; + struct QueueFamilyOwnershipTransferPropertiesKHR; + + //=== VK_KHR_video_maintenance2 === + struct PhysicalDeviceVideoMaintenance2FeaturesKHR; + struct VideoDecodeH264InlineSessionParametersInfoKHR; + struct VideoDecodeH265InlineSessionParametersInfoKHR; + struct VideoDecodeAV1InlineSessionParametersInfoKHR; + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + struct SurfaceCreateInfoOHOS; +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_HUAWEI_hdr_vivid === + struct PhysicalDeviceHdrVividFeaturesHUAWEI; + struct HdrVividDynamicMetadataHUAWEI; + + //=== VK_NV_cooperative_matrix2 === + struct CooperativeMatrixFlexibleDimensionsPropertiesNV; + struct PhysicalDeviceCooperativeMatrix2FeaturesNV; + struct PhysicalDeviceCooperativeMatrix2PropertiesNV; + + //=== VK_ARM_pipeline_opacity_micromap === + struct PhysicalDevicePipelineOpacityMicromapFeaturesARM; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + struct ImportMemoryMetalHandleInfoEXT; + struct MemoryMetalHandlePropertiesEXT; + struct MemoryGetMetalHandleInfoEXT; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_depth_clamp_zero_one === + struct PhysicalDeviceDepthClampZeroOneFeaturesKHR; + using PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesKHR; + + //=== VK_ARM_performance_counters_by_region === + struct PhysicalDevicePerformanceCountersByRegionFeaturesARM; + struct PhysicalDevicePerformanceCountersByRegionPropertiesARM; + struct PerformanceCounterARM; + struct PerformanceCounterDescriptionARM; + struct RenderPassPerformanceCountersByRegionBeginInfoARM; + + //=== VK_ARM_shader_instrumentation === + struct PhysicalDeviceShaderInstrumentationFeaturesARM; + struct PhysicalDeviceShaderInstrumentationPropertiesARM; + struct ShaderInstrumentationCreateInfoARM; + struct ShaderInstrumentationMetricDescriptionARM; + struct ShaderInstrumentationMetricDataHeaderARM; + + //=== VK_EXT_vertex_attribute_robustness === + struct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT; + + //=== VK_ARM_format_pack === + struct PhysicalDeviceFormatPackFeaturesARM; + + //=== VK_VALVE_fragment_density_map_layered === + struct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE; + struct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE; + struct PipelineFragmentDensityMapLayeredCreateInfoVALVE; + + //=== VK_KHR_robustness2 === + struct PhysicalDeviceRobustness2FeaturesKHR; + using PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesKHR; + struct PhysicalDeviceRobustness2PropertiesKHR; + using PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesKHR; + + //=== VK_NV_present_metering === + struct SetPresentConfigNV; + struct PhysicalDevicePresentMeteringFeaturesNV; + + //=== VK_EXT_fragment_density_map_offset === + struct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT; + using PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT; + struct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT; + using PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT; + struct RenderPassFragmentDensityMapOffsetEndInfoEXT; + using SubpassFragmentDensityMapOffsetEndInfoQCOM = RenderPassFragmentDensityMapOffsetEndInfoEXT; + + //=== VK_EXT_zero_initialize_device_memory === + struct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT; + + //=== VK_KHR_present_mode_fifo_latest_ready === + struct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR; + using PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR; + + //=== VK_EXT_shader_64bit_indexing === + struct PhysicalDeviceShader64BitIndexingFeaturesEXT; + + //=== VK_EXT_custom_resolve === + struct PhysicalDeviceCustomResolveFeaturesEXT; + struct BeginCustomResolveInfoEXT; + struct CustomResolveCreateInfoEXT; + + //=== VK_QCOM_data_graph_model === + struct PipelineCacheHeaderVersionDataGraphQCOM; + struct DataGraphPipelineBuiltinModelCreateInfoQCOM; + struct PhysicalDeviceDataGraphModelFeaturesQCOM; + + //=== VK_KHR_maintenance10 === + struct PhysicalDeviceMaintenance10FeaturesKHR; + struct PhysicalDeviceMaintenance10PropertiesKHR; + struct RenderingEndInfoKHR; + using RenderingEndInfoEXT = RenderingEndInfoKHR; + struct RenderingAttachmentFlagsInfoKHR; + struct ResolveImageModeInfoKHR; + + //=== VK_EXT_shader_long_vector === + struct PhysicalDeviceShaderLongVectorFeaturesEXT; + struct PhysicalDeviceShaderLongVectorPropertiesEXT; + + //=== VK_SEC_pipeline_cache_incremental_mode === + struct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC; + + //=== VK_EXT_shader_uniform_buffer_unsized_array === + struct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT; + + //=== VK_NV_compute_occupancy_priority === + struct ComputeOccupancyPriorityParametersNV; + struct PhysicalDeviceComputeOccupancyPriorityFeaturesNV; + + //=== VK_EXT_shader_subgroup_partitioned === + struct PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT; + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + struct UbmSurfaceCreateInfoSEC; +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + + //=== VK_VALVE_shader_mixed_float_dot_product === + struct PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE; + + //=================================== + //=== HANDLE forward declarations === + //=================================== + + //=== VK_VERSION_1_0 === + class Instance; + class PhysicalDevice; + class Device; + class Queue; + class DeviceMemory; + class Fence; + class Semaphore; + class QueryPool; + class Buffer; + class Image; + class ImageView; + class CommandPool; + class CommandBuffer; + class Event; + class BufferView; + class ShaderModule; + class PipelineCache; + class Pipeline; + class PipelineLayout; + class Sampler; + class DescriptorPool; + class DescriptorSet; + class DescriptorSetLayout; + class Framebuffer; + class RenderPass; + + //=== VK_VERSION_1_1 === + class DescriptorUpdateTemplate; + class SamplerYcbcrConversion; + + //=== VK_VERSION_1_3 === + class PrivateDataSlot; + + //=== VK_KHR_surface === + class SurfaceKHR; + + //=== VK_KHR_swapchain === + class SwapchainKHR; + + //=== VK_KHR_display === + class DisplayKHR; + class DisplayModeKHR; + + //=== VK_EXT_debug_report === + class DebugReportCallbackEXT; + + //=== VK_KHR_video_queue === + class VideoSessionKHR; + class VideoSessionParametersKHR; + + //=== VK_NVX_binary_import === + class CuModuleNVX; + class CuFunctionNVX; + + //=== VK_EXT_debug_utils === + class DebugUtilsMessengerEXT; + + //=== VK_EXT_descriptor_heap === + class TensorARM; + + //=== VK_KHR_acceleration_structure === + class AccelerationStructureKHR; + + //=== VK_EXT_validation_cache === + class ValidationCacheEXT; + + //=== VK_NV_ray_tracing === + class AccelerationStructureNV; + + //=== VK_INTEL_performance_query === + class PerformanceConfigurationINTEL; + + //=== VK_KHR_deferred_host_operations === + class DeferredOperationKHR; + + //=== VK_NV_device_generated_commands === + class IndirectCommandsLayoutNV; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + class CudaModuleNV; + class CudaFunctionNV; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + class BufferCollectionFUCHSIA; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_EXT_opacity_micromap === + class MicromapEXT; + + //=== VK_ARM_tensors === + class TensorARM; + class TensorViewARM; + + //=== VK_NV_optical_flow === + class OpticalFlowSessionNV; + + //=== VK_EXT_shader_object === + class ShaderEXT; + + //=== VK_KHR_pipeline_binary === + class PipelineBinaryKHR; + + //=== VK_ARM_data_graph === + class DataGraphPipelineSessionARM; + + //=== VK_NV_external_compute_queue === + class ExternalComputeQueueNV; + + //=== VK_EXT_device_generated_commands === + class IndirectCommandsLayoutEXT; + class IndirectExecutionSetEXT; + + //=== VK_ARM_shader_instrumentation === + class ShaderInstrumentationARM; + + typedef void( VKAPI_PTR * PFN_VoidFunction )(); + +#ifndef VULKAN_HPP_NO_SMART_HANDLE + //====================== + //=== UNIQUE HANDLEs === + //====================== + + //=== VK_VERSION_1_0 === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueInstance = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::DummyDestroy; + }; + + using UniquePhysicalDevice = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueDevice = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::DummyDestroy; + }; + + using UniqueQueue = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectFree; + }; + + using UniqueDeviceMemory = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueFence = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueSemaphore = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueQueryPool = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueBuffer = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueImage = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueImageView = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueCommandPool = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::PoolFree; + }; + + using UniqueCommandBuffer = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueEvent = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueBufferView = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueShaderModule = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniquePipelineCache = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniquePipeline = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniquePipelineLayout = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueSampler = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueDescriptorPool = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::PoolFree; + }; + + using UniqueDescriptorSet = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueDescriptorSetLayout = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueFramebuffer = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueRenderPass = UniqueHandle; + + //=== VK_VERSION_1_1 === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueDescriptorUpdateTemplate = UniqueHandle; + using UniqueDescriptorUpdateTemplateKHR = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueSamplerYcbcrConversion = UniqueHandle; + using UniqueSamplerYcbcrConversionKHR = UniqueHandle; + + //=== VK_VERSION_1_3 === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniquePrivateDataSlot = UniqueHandle; + using UniquePrivateDataSlotEXT = UniqueHandle; + + //=== VK_KHR_surface === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueSurfaceKHR = UniqueHandle; + + //=== VK_KHR_swapchain === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueSwapchainKHR = UniqueHandle; + + //=== VK_KHR_display === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectRelease; + }; + + using UniqueDisplayKHR = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::DummyDestroy; + }; + + using UniqueDisplayModeKHR = UniqueHandle; + + //=== VK_EXT_debug_report === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueDebugReportCallbackEXT = UniqueHandle; + + //=== VK_KHR_video_queue === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueVideoSessionKHR = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueVideoSessionParametersKHR = UniqueHandle; + + //=== VK_NVX_binary_import === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueCuModuleNVX = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueCuFunctionNVX = UniqueHandle; + + //=== VK_EXT_debug_utils === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueDebugUtilsMessengerEXT = UniqueHandle; + + //=== VK_EXT_descriptor_heap === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueTensorARM = UniqueHandle; + + //=== VK_KHR_acceleration_structure === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueAccelerationStructureKHR = UniqueHandle; + + //=== VK_EXT_validation_cache === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueValidationCacheEXT = UniqueHandle; + + //=== VK_NV_ray_tracing === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueAccelerationStructureNV = UniqueHandle; + + //=== VK_INTEL_performance_query === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectRelease; + }; + + using UniquePerformanceConfigurationINTEL = UniqueHandle; + + //=== VK_KHR_deferred_host_operations === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueDeferredOperationKHR = UniqueHandle; + + //=== VK_NV_device_generated_commands === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueIndirectCommandsLayoutNV = UniqueHandle; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueCudaModuleNV = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueCudaFunctionNV = UniqueHandle; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueBufferCollectionFUCHSIA = UniqueHandle; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_EXT_opacity_micromap === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueMicromapEXT = UniqueHandle; + + //=== VK_ARM_tensors === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueTensorViewARM = UniqueHandle; + + //=== VK_NV_optical_flow === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueOpticalFlowSessionNV = UniqueHandle; + + //=== VK_EXT_shader_object === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueShaderEXT = UniqueHandle; + + //=== VK_KHR_pipeline_binary === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniquePipelineBinaryKHR = UniqueHandle; + + //=== VK_ARM_data_graph === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueDataGraphPipelineSessionARM = UniqueHandle; + + //=== VK_NV_external_compute_queue === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueExternalComputeQueueNV = UniqueHandle; + + //=== VK_EXT_device_generated_commands === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueIndirectCommandsLayoutEXT = UniqueHandle; + + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueIndirectExecutionSetEXT = UniqueHandle; + + //=== VK_ARM_shader_instrumentation === + template + class UniqueHandleTraits + { + public: + using deleter = detail::ObjectDestroy; + }; + + using UniqueShaderInstrumentationARM = UniqueHandle; +#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ + + //=============== + //=== HANDLEs === + //=============== + + template + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = false; + }; + + // wrapper class for handle VkSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceKHR.html + class SurfaceKHR + { + public: + using CType = VkSurfaceKHR; + using NativeType = VkSurfaceKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSurfaceKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSurfaceKHR; + + public: + SurfaceKHR() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + SurfaceKHR( SurfaceKHR const & rhs ) = default; + SurfaceKHR & operator=( SurfaceKHR const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + SurfaceKHR( SurfaceKHR && rhs ) = default; + SurfaceKHR & operator=( SurfaceKHR && rhs ) = default; +#else + SurfaceKHR( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT : m_surfaceKHR( exchange( rhs.m_surfaceKHR, {} ) ) {} + + SurfaceKHR & operator=( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + m_surfaceKHR = exchange( rhs.m_surfaceKHR, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR SurfaceKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR ) VULKAN_HPP_NOEXCEPT : m_surfaceKHR( surfaceKHR ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + SurfaceKHR & operator=( VkSurfaceKHR surfaceKHR ) VULKAN_HPP_NOEXCEPT + { + m_surfaceKHR = surfaceKHR; + return *this; + } +#endif + + SurfaceKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_surfaceKHR = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR == VK_NULL_HANDLE; + } + + private: + VkSurfaceKHR m_surfaceKHR = {}; + }; + + template <> + struct CppType + { + using Type = SurfaceKHR; + }; + + template <> + struct CppType + { + using Type = SurfaceKHR; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = SurfaceKHR; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDebugReportCallbackEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugReportCallbackEXT.html + class DebugReportCallbackEXT + { + public: + using CType = VkDebugReportCallbackEXT; + using NativeType = VkDebugReportCallbackEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDebugReportCallbackEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDebugReportCallbackEXT; + + public: + DebugReportCallbackEXT() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DebugReportCallbackEXT( DebugReportCallbackEXT const & rhs ) = default; + DebugReportCallbackEXT & operator=( DebugReportCallbackEXT const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DebugReportCallbackEXT( DebugReportCallbackEXT && rhs ) = default; + DebugReportCallbackEXT & operator=( DebugReportCallbackEXT && rhs ) = default; +#else + DebugReportCallbackEXT( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT : m_debugReportCallbackEXT( exchange( rhs.m_debugReportCallbackEXT, {} ) ) {} + + DebugReportCallbackEXT & operator=( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + m_debugReportCallbackEXT = exchange( rhs.m_debugReportCallbackEXT, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT ) VULKAN_HPP_NOEXCEPT + : m_debugReportCallbackEXT( debugReportCallbackEXT ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DebugReportCallbackEXT & operator=( VkDebugReportCallbackEXT debugReportCallbackEXT ) VULKAN_HPP_NOEXCEPT + { + m_debugReportCallbackEXT = debugReportCallbackEXT; + return *this; + } +#endif + + DebugReportCallbackEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_debugReportCallbackEXT = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT == VK_NULL_HANDLE; + } + + private: + VkDebugReportCallbackEXT m_debugReportCallbackEXT = {}; + }; + + template <> + struct CppType + { + using Type = DebugReportCallbackEXT; + }; + + template <> + struct CppType + { + using Type = DebugReportCallbackEXT; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DebugReportCallbackEXT; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDebugUtilsMessengerEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessengerEXT.html + class DebugUtilsMessengerEXT + { + public: + using CType = VkDebugUtilsMessengerEXT; + using NativeType = VkDebugUtilsMessengerEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDebugUtilsMessengerEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + DebugUtilsMessengerEXT() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DebugUtilsMessengerEXT( DebugUtilsMessengerEXT const & rhs ) = default; + DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DebugUtilsMessengerEXT( DebugUtilsMessengerEXT && rhs ) = default; + DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT && rhs ) = default; +#else + DebugUtilsMessengerEXT( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT : m_debugUtilsMessengerEXT( exchange( rhs.m_debugUtilsMessengerEXT, {} ) ) {} + + DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + m_debugUtilsMessengerEXT = exchange( rhs.m_debugUtilsMessengerEXT, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DebugUtilsMessengerEXT( VkDebugUtilsMessengerEXT debugUtilsMessengerEXT ) VULKAN_HPP_NOEXCEPT + : m_debugUtilsMessengerEXT( debugUtilsMessengerEXT ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DebugUtilsMessengerEXT & operator=( VkDebugUtilsMessengerEXT debugUtilsMessengerEXT ) VULKAN_HPP_NOEXCEPT + { + m_debugUtilsMessengerEXT = debugUtilsMessengerEXT; + return *this; + } +#endif + + DebugUtilsMessengerEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_debugUtilsMessengerEXT = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugUtilsMessengerEXT() const VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT == VK_NULL_HANDLE; + } + + private: + VkDebugUtilsMessengerEXT m_debugUtilsMessengerEXT = {}; + }; + + template <> + struct CppType + { + using Type = DebugUtilsMessengerEXT; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DebugUtilsMessengerEXT; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDisplayKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayKHR.html + class DisplayKHR + { + public: + using CType = VkDisplayKHR; + using NativeType = VkDisplayKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDisplayKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDisplayKHR; + + public: + DisplayKHR() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DisplayKHR( DisplayKHR const & rhs ) = default; + DisplayKHR & operator=( DisplayKHR const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DisplayKHR( DisplayKHR && rhs ) = default; + DisplayKHR & operator=( DisplayKHR && rhs ) = default; +#else + DisplayKHR( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT : m_displayKHR( exchange( rhs.m_displayKHR, {} ) ) {} + + DisplayKHR & operator=( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + m_displayKHR = exchange( rhs.m_displayKHR, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DisplayKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR ) VULKAN_HPP_NOEXCEPT : m_displayKHR( displayKHR ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DisplayKHR & operator=( VkDisplayKHR displayKHR ) VULKAN_HPP_NOEXCEPT + { + m_displayKHR = displayKHR; + return *this; + } +#endif + + DisplayKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_displayKHR = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const VULKAN_HPP_NOEXCEPT + { + return m_displayKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_displayKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_displayKHR == VK_NULL_HANDLE; + } + + private: + VkDisplayKHR m_displayKHR = {}; + }; + + template <> + struct CppType + { + using Type = DisplayKHR; + }; + + template <> + struct CppType + { + using Type = DisplayKHR; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DisplayKHR; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainKHR.html + class SwapchainKHR + { + public: + using CType = VkSwapchainKHR; + using NativeType = VkSwapchainKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSwapchainKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSwapchainKHR; + + public: + SwapchainKHR() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + SwapchainKHR( SwapchainKHR const & rhs ) = default; + SwapchainKHR & operator=( SwapchainKHR const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + SwapchainKHR( SwapchainKHR && rhs ) = default; + SwapchainKHR & operator=( SwapchainKHR && rhs ) = default; +#else + SwapchainKHR( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT : m_swapchainKHR( exchange( rhs.m_swapchainKHR, {} ) ) {} + + SwapchainKHR & operator=( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + m_swapchainKHR = exchange( rhs.m_swapchainKHR, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR SwapchainKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR ) VULKAN_HPP_NOEXCEPT : m_swapchainKHR( swapchainKHR ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + SwapchainKHR & operator=( VkSwapchainKHR swapchainKHR ) VULKAN_HPP_NOEXCEPT + { + m_swapchainKHR = swapchainKHR; + return *this; + } +#endif + + SwapchainKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_swapchainKHR = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR == VK_NULL_HANDLE; + } + + private: + VkSwapchainKHR m_swapchainKHR = {}; + }; + + template <> + struct CppType + { + using Type = SwapchainKHR; + }; + + template <> + struct CppType + { + using Type = SwapchainKHR; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = SwapchainKHR; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphore.html + class Semaphore + { + public: + using CType = VkSemaphore; + using NativeType = VkSemaphore; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSemaphore; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSemaphore; + + public: + Semaphore() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Semaphore( Semaphore const & rhs ) = default; + Semaphore & operator=( Semaphore const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Semaphore( Semaphore && rhs ) = default; + Semaphore & operator=( Semaphore && rhs ) = default; +#else + Semaphore( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT : m_semaphore( exchange( rhs.m_semaphore, {} ) ) {} + + Semaphore & operator=( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT + { + m_semaphore = exchange( rhs.m_semaphore, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Semaphore( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore ) VULKAN_HPP_NOEXCEPT : m_semaphore( semaphore ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + Semaphore & operator=( VkSemaphore semaphore ) VULKAN_HPP_NOEXCEPT + { + m_semaphore = semaphore; + return *this; + } +#endif + + Semaphore & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_semaphore = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const VULKAN_HPP_NOEXCEPT + { + return m_semaphore; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_semaphore != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_semaphore == VK_NULL_HANDLE; + } + + private: + VkSemaphore m_semaphore = {}; + }; + + template <> + struct CppType + { + using Type = Semaphore; + }; + + template <> + struct CppType + { + using Type = Semaphore; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Semaphore; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFence.html + class Fence + { + public: + using CType = VkFence; + using NativeType = VkFence; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eFence; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eFence; + + public: + Fence() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Fence( Fence const & rhs ) = default; + Fence & operator=( Fence const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Fence( Fence && rhs ) = default; + Fence & operator=( Fence && rhs ) = default; +#else + Fence( Fence && rhs ) VULKAN_HPP_NOEXCEPT : m_fence( exchange( rhs.m_fence, {} ) ) {} + + Fence & operator=( Fence && rhs ) VULKAN_HPP_NOEXCEPT + { + m_fence = exchange( rhs.m_fence, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Fence( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence ) VULKAN_HPP_NOEXCEPT : m_fence( fence ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + Fence & operator=( VkFence fence ) VULKAN_HPP_NOEXCEPT + { + m_fence = fence; + return *this; + } +#endif + + Fence & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_fence = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const VULKAN_HPP_NOEXCEPT + { + return m_fence; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_fence != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_fence == VK_NULL_HANDLE; + } + + private: + VkFence m_fence = {}; + }; + + template <> + struct CppType + { + using Type = Fence; + }; + + template <> + struct CppType + { + using Type = Fence; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Fence; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceConfigurationINTEL.html + class PerformanceConfigurationINTEL + { + public: + using CType = VkPerformanceConfigurationINTEL; + using NativeType = VkPerformanceConfigurationINTEL; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePerformanceConfigurationINTEL; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + PerformanceConfigurationINTEL() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + PerformanceConfigurationINTEL( PerformanceConfigurationINTEL const & rhs ) = default; + PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + PerformanceConfigurationINTEL( PerformanceConfigurationINTEL && rhs ) = default; + PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL && rhs ) = default; +#else + PerformanceConfigurationINTEL( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT + : m_performanceConfigurationINTEL( exchange( rhs.m_performanceConfigurationINTEL, {} ) ) + { + } + + PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT + { + m_performanceConfigurationINTEL = exchange( rhs.m_performanceConfigurationINTEL, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR PerformanceConfigurationINTEL( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT PerformanceConfigurationINTEL( VkPerformanceConfigurationINTEL performanceConfigurationINTEL ) VULKAN_HPP_NOEXCEPT + : m_performanceConfigurationINTEL( performanceConfigurationINTEL ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + PerformanceConfigurationINTEL & operator=( VkPerformanceConfigurationINTEL performanceConfigurationINTEL ) VULKAN_HPP_NOEXCEPT + { + m_performanceConfigurationINTEL = performanceConfigurationINTEL; + return *this; + } +#endif + + PerformanceConfigurationINTEL & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_performanceConfigurationINTEL = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPerformanceConfigurationINTEL() const VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL == VK_NULL_HANDLE; + } + + private: + VkPerformanceConfigurationINTEL m_performanceConfigurationINTEL = {}; + }; + + template <> + struct CppType + { + using Type = PerformanceConfigurationINTEL; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = PerformanceConfigurationINTEL; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPool.html + class QueryPool + { + public: + using CType = VkQueryPool; + using NativeType = VkQueryPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eQueryPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eQueryPool; + + public: + QueryPool() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + QueryPool( QueryPool const & rhs ) = default; + QueryPool & operator=( QueryPool const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + QueryPool( QueryPool && rhs ) = default; + QueryPool & operator=( QueryPool && rhs ) = default; +#else + QueryPool( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT : m_queryPool( exchange( rhs.m_queryPool, {} ) ) {} + + QueryPool & operator=( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT + { + m_queryPool = exchange( rhs.m_queryPool, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR QueryPool( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool ) VULKAN_HPP_NOEXCEPT : m_queryPool( queryPool ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + QueryPool & operator=( VkQueryPool queryPool ) VULKAN_HPP_NOEXCEPT + { + m_queryPool = queryPool; + return *this; + } +#endif + + QueryPool & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_queryPool = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const VULKAN_HPP_NOEXCEPT + { + return m_queryPool; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_queryPool != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_queryPool == VK_NULL_HANDLE; + } + + private: + VkQueryPool m_queryPool = {}; + }; + + template <> + struct CppType + { + using Type = QueryPool; + }; + + template <> + struct CppType + { + using Type = QueryPool; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = QueryPool; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkShaderInstrumentationARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderInstrumentationARM.html + class ShaderInstrumentationARM + { + public: + using CType = VkShaderInstrumentationARM; + using NativeType = VkShaderInstrumentationARM; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eShaderInstrumentationARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + ShaderInstrumentationARM() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + ShaderInstrumentationARM( ShaderInstrumentationARM const & rhs ) = default; + ShaderInstrumentationARM & operator=( ShaderInstrumentationARM const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + ShaderInstrumentationARM( ShaderInstrumentationARM && rhs ) = default; + ShaderInstrumentationARM & operator=( ShaderInstrumentationARM && rhs ) = default; +#else + ShaderInstrumentationARM( ShaderInstrumentationARM && rhs ) VULKAN_HPP_NOEXCEPT + : m_shaderInstrumentationARM( exchange( rhs.m_shaderInstrumentationARM, {} ) ) + { + } + + ShaderInstrumentationARM & operator=( ShaderInstrumentationARM && rhs ) VULKAN_HPP_NOEXCEPT + { + m_shaderInstrumentationARM = exchange( rhs.m_shaderInstrumentationARM, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR ShaderInstrumentationARM( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT ShaderInstrumentationARM( VkShaderInstrumentationARM shaderInstrumentationARM ) VULKAN_HPP_NOEXCEPT + : m_shaderInstrumentationARM( shaderInstrumentationARM ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + ShaderInstrumentationARM & operator=( VkShaderInstrumentationARM shaderInstrumentationARM ) VULKAN_HPP_NOEXCEPT + { + m_shaderInstrumentationARM = shaderInstrumentationARM; + return *this; + } +#endif + + ShaderInstrumentationARM & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_shaderInstrumentationARM = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderInstrumentationARM() const VULKAN_HPP_NOEXCEPT + { + return m_shaderInstrumentationARM; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_shaderInstrumentationARM != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_shaderInstrumentationARM == VK_NULL_HANDLE; + } + + private: + VkShaderInstrumentationARM m_shaderInstrumentationARM = {}; + }; + + template <> + struct CppType + { + using Type = ShaderInstrumentationARM; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = ShaderInstrumentationARM; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuffer.html + class Buffer + { + public: + using CType = VkBuffer; + using NativeType = VkBuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eBuffer; + + public: + Buffer() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Buffer( Buffer const & rhs ) = default; + Buffer & operator=( Buffer const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Buffer( Buffer && rhs ) = default; + Buffer & operator=( Buffer && rhs ) = default; +#else + Buffer( Buffer && rhs ) VULKAN_HPP_NOEXCEPT : m_buffer( exchange( rhs.m_buffer, {} ) ) {} + + Buffer & operator=( Buffer && rhs ) VULKAN_HPP_NOEXCEPT + { + m_buffer = exchange( rhs.m_buffer, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Buffer( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer ) VULKAN_HPP_NOEXCEPT : m_buffer( buffer ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + Buffer & operator=( VkBuffer buffer ) VULKAN_HPP_NOEXCEPT + { + m_buffer = buffer; + return *this; + } +#endif + + Buffer & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_buffer = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const VULKAN_HPP_NOEXCEPT + { + return m_buffer; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_buffer != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_buffer == VK_NULL_HANDLE; + } + + private: + VkBuffer m_buffer = {}; + }; + + template <> + struct CppType + { + using Type = Buffer; + }; + + template <> + struct CppType + { + using Type = Buffer; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Buffer; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineLayout.html + class PipelineLayout + { + public: + using CType = VkPipelineLayout; + using NativeType = VkPipelineLayout; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineLayout; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePipelineLayout; + + public: + PipelineLayout() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + PipelineLayout( PipelineLayout const & rhs ) = default; + PipelineLayout & operator=( PipelineLayout const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + PipelineLayout( PipelineLayout && rhs ) = default; + PipelineLayout & operator=( PipelineLayout && rhs ) = default; +#else + PipelineLayout( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT : m_pipelineLayout( exchange( rhs.m_pipelineLayout, {} ) ) {} + + PipelineLayout & operator=( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT + { + m_pipelineLayout = exchange( rhs.m_pipelineLayout, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR PipelineLayout( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout ) VULKAN_HPP_NOEXCEPT : m_pipelineLayout( pipelineLayout ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + PipelineLayout & operator=( VkPipelineLayout pipelineLayout ) VULKAN_HPP_NOEXCEPT + { + m_pipelineLayout = pipelineLayout; + return *this; + } +#endif + + PipelineLayout & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_pipelineLayout = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout == VK_NULL_HANDLE; + } + + private: + VkPipelineLayout m_pipelineLayout = {}; + }; + + template <> + struct CppType + { + using Type = PipelineLayout; + }; + + template <> + struct CppType + { + using Type = PipelineLayout; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = PipelineLayout; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSet.html + class DescriptorSet + { + public: + using CType = VkDescriptorSet; + using NativeType = VkDescriptorSet; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorSet; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorSet; + + public: + DescriptorSet() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DescriptorSet( DescriptorSet const & rhs ) = default; + DescriptorSet & operator=( DescriptorSet const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DescriptorSet( DescriptorSet && rhs ) = default; + DescriptorSet & operator=( DescriptorSet && rhs ) = default; +#else + DescriptorSet( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT : m_descriptorSet( exchange( rhs.m_descriptorSet, {} ) ) {} + + DescriptorSet & operator=( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT + { + m_descriptorSet = exchange( rhs.m_descriptorSet, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DescriptorSet( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet ) VULKAN_HPP_NOEXCEPT : m_descriptorSet( descriptorSet ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DescriptorSet & operator=( VkDescriptorSet descriptorSet ) VULKAN_HPP_NOEXCEPT + { + m_descriptorSet = descriptorSet; + return *this; + } +#endif + + DescriptorSet & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_descriptorSet = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet == VK_NULL_HANDLE; + } + + private: + VkDescriptorSet m_descriptorSet = {}; + }; + + template <> + struct CppType + { + using Type = DescriptorSet; + }; + + template <> + struct CppType + { + using Type = DescriptorSet; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DescriptorSet; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageView.html + class ImageView + { + public: + using CType = VkImageView; + using NativeType = VkImageView; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eImageView; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eImageView; + + public: + ImageView() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + ImageView( ImageView const & rhs ) = default; + ImageView & operator=( ImageView const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + ImageView( ImageView && rhs ) = default; + ImageView & operator=( ImageView && rhs ) = default; +#else + ImageView( ImageView && rhs ) VULKAN_HPP_NOEXCEPT : m_imageView( exchange( rhs.m_imageView, {} ) ) {} + + ImageView & operator=( ImageView && rhs ) VULKAN_HPP_NOEXCEPT + { + m_imageView = exchange( rhs.m_imageView, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR ImageView( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView ) VULKAN_HPP_NOEXCEPT : m_imageView( imageView ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + ImageView & operator=( VkImageView imageView ) VULKAN_HPP_NOEXCEPT + { + m_imageView = imageView; + return *this; + } +#endif + + ImageView & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_imageView = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const VULKAN_HPP_NOEXCEPT + { + return m_imageView; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_imageView != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_imageView == VK_NULL_HANDLE; + } + + private: + VkImageView m_imageView = {}; + }; + + template <> + struct CppType + { + using Type = ImageView; + }; + + template <> + struct CppType + { + using Type = ImageView; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = ImageView; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipeline.html + class Pipeline + { + public: + using CType = VkPipeline; + using NativeType = VkPipeline; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipeline; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePipeline; + + public: + Pipeline() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Pipeline( Pipeline const & rhs ) = default; + Pipeline & operator=( Pipeline const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Pipeline( Pipeline && rhs ) = default; + Pipeline & operator=( Pipeline && rhs ) = default; +#else + Pipeline( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT : m_pipeline( exchange( rhs.m_pipeline, {} ) ) {} + + Pipeline & operator=( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT + { + m_pipeline = exchange( rhs.m_pipeline, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Pipeline( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline ) VULKAN_HPP_NOEXCEPT : m_pipeline( pipeline ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + Pipeline & operator=( VkPipeline pipeline ) VULKAN_HPP_NOEXCEPT + { + m_pipeline = pipeline; + return *this; + } +#endif + + Pipeline & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_pipeline = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const VULKAN_HPP_NOEXCEPT + { + return m_pipeline; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_pipeline != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_pipeline == VK_NULL_HANDLE; + } + + private: + VkPipeline m_pipeline = {}; + }; + + template <> + struct CppType + { + using Type = Pipeline; + }; + + template <> + struct CppType + { + using Type = Pipeline; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Pipeline; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderEXT.html + class ShaderEXT + { + public: + using CType = VkShaderEXT; + using NativeType = VkShaderEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eShaderEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + ShaderEXT() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + ShaderEXT( ShaderEXT const & rhs ) = default; + ShaderEXT & operator=( ShaderEXT const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + ShaderEXT( ShaderEXT && rhs ) = default; + ShaderEXT & operator=( ShaderEXT && rhs ) = default; +#else + ShaderEXT( ShaderEXT && rhs ) VULKAN_HPP_NOEXCEPT : m_shaderEXT( exchange( rhs.m_shaderEXT, {} ) ) {} + + ShaderEXT & operator=( ShaderEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + m_shaderEXT = exchange( rhs.m_shaderEXT, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR ShaderEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT ShaderEXT( VkShaderEXT shaderEXT ) VULKAN_HPP_NOEXCEPT : m_shaderEXT( shaderEXT ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + ShaderEXT & operator=( VkShaderEXT shaderEXT ) VULKAN_HPP_NOEXCEPT + { + m_shaderEXT = shaderEXT; + return *this; + } +#endif + + ShaderEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_shaderEXT = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderEXT() const VULKAN_HPP_NOEXCEPT + { + return m_shaderEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_shaderEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_shaderEXT == VK_NULL_HANDLE; + } + + private: + VkShaderEXT m_shaderEXT = {}; + }; + + template <> + struct CppType + { + using Type = ShaderEXT; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = ShaderEXT; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImage.html + class Image + { + public: + using CType = VkImage; + using NativeType = VkImage; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eImage; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eImage; + + public: + Image() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Image( Image const & rhs ) = default; + Image & operator=( Image const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Image( Image && rhs ) = default; + Image & operator=( Image && rhs ) = default; +#else + Image( Image && rhs ) VULKAN_HPP_NOEXCEPT : m_image( exchange( rhs.m_image, {} ) ) {} + + Image & operator=( Image && rhs ) VULKAN_HPP_NOEXCEPT + { + m_image = exchange( rhs.m_image, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Image( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image ) VULKAN_HPP_NOEXCEPT : m_image( image ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + Image & operator=( VkImage image ) VULKAN_HPP_NOEXCEPT + { + m_image = image; + return *this; + } +#endif + + Image & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_image = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const VULKAN_HPP_NOEXCEPT + { + return m_image; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_image != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_image == VK_NULL_HANDLE; + } + + private: + VkImage m_image = {}; + }; + + template <> + struct CppType + { + using Type = Image; + }; + + template <> + struct CppType + { + using Type = Image; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Image; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkAccelerationStructureNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureNV.html + class AccelerationStructureNV + { + public: + using CType = VkAccelerationStructureNV; + using NativeType = VkAccelerationStructureNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eAccelerationStructureNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eAccelerationStructureNV; + + public: + AccelerationStructureNV() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + AccelerationStructureNV( AccelerationStructureNV const & rhs ) = default; + AccelerationStructureNV & operator=( AccelerationStructureNV const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + AccelerationStructureNV( AccelerationStructureNV && rhs ) = default; + AccelerationStructureNV & operator=( AccelerationStructureNV && rhs ) = default; +#else + AccelerationStructureNV( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT : m_accelerationStructureNV( exchange( rhs.m_accelerationStructureNV, {} ) ) + { + } + + AccelerationStructureNV & operator=( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT + { + m_accelerationStructureNV = exchange( rhs.m_accelerationStructureNV, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR AccelerationStructureNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT AccelerationStructureNV( VkAccelerationStructureNV accelerationStructureNV ) VULKAN_HPP_NOEXCEPT + : m_accelerationStructureNV( accelerationStructureNV ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + AccelerationStructureNV & operator=( VkAccelerationStructureNV accelerationStructureNV ) VULKAN_HPP_NOEXCEPT + { + m_accelerationStructureNV = accelerationStructureNV; + return *this; + } +#endif + + AccelerationStructureNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_accelerationStructureNV = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkAccelerationStructureNV() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV == VK_NULL_HANDLE; + } + + private: + VkAccelerationStructureNV m_accelerationStructureNV = {}; + }; + + template <> + struct CppType + { + using Type = AccelerationStructureNV; + }; + + template <> + struct CppType + { + using Type = AccelerationStructureNV; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = AccelerationStructureNV; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDataGraphPipelineSessionARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionARM.html + class DataGraphPipelineSessionARM + { + public: + using CType = VkDataGraphPipelineSessionARM; + using NativeType = VkDataGraphPipelineSessionARM; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDataGraphPipelineSessionARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + DataGraphPipelineSessionARM() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DataGraphPipelineSessionARM( DataGraphPipelineSessionARM const & rhs ) = default; + DataGraphPipelineSessionARM & operator=( DataGraphPipelineSessionARM const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DataGraphPipelineSessionARM( DataGraphPipelineSessionARM && rhs ) = default; + DataGraphPipelineSessionARM & operator=( DataGraphPipelineSessionARM && rhs ) = default; +#else + DataGraphPipelineSessionARM( DataGraphPipelineSessionARM && rhs ) VULKAN_HPP_NOEXCEPT + : m_dataGraphPipelineSessionARM( exchange( rhs.m_dataGraphPipelineSessionARM, {} ) ) + { + } + + DataGraphPipelineSessionARM & operator=( DataGraphPipelineSessionARM && rhs ) VULKAN_HPP_NOEXCEPT + { + m_dataGraphPipelineSessionARM = exchange( rhs.m_dataGraphPipelineSessionARM, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DataGraphPipelineSessionARM( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DataGraphPipelineSessionARM( VkDataGraphPipelineSessionARM dataGraphPipelineSessionARM ) VULKAN_HPP_NOEXCEPT + : m_dataGraphPipelineSessionARM( dataGraphPipelineSessionARM ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DataGraphPipelineSessionARM & operator=( VkDataGraphPipelineSessionARM dataGraphPipelineSessionARM ) VULKAN_HPP_NOEXCEPT + { + m_dataGraphPipelineSessionARM = dataGraphPipelineSessionARM; + return *this; + } +#endif + + DataGraphPipelineSessionARM & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_dataGraphPipelineSessionARM = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDataGraphPipelineSessionARM() const VULKAN_HPP_NOEXCEPT + { + return m_dataGraphPipelineSessionARM; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_dataGraphPipelineSessionARM != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_dataGraphPipelineSessionARM == VK_NULL_HANDLE; + } + + private: + VkDataGraphPipelineSessionARM m_dataGraphPipelineSessionARM = {}; + }; + + template <> + struct CppType + { + using Type = DataGraphPipelineSessionARM; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DataGraphPipelineSessionARM; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkOpticalFlowSessionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowSessionNV.html + class OpticalFlowSessionNV + { + public: + using CType = VkOpticalFlowSessionNV; + using NativeType = VkOpticalFlowSessionNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eOpticalFlowSessionNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + OpticalFlowSessionNV() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + OpticalFlowSessionNV( OpticalFlowSessionNV const & rhs ) = default; + OpticalFlowSessionNV & operator=( OpticalFlowSessionNV const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + OpticalFlowSessionNV( OpticalFlowSessionNV && rhs ) = default; + OpticalFlowSessionNV & operator=( OpticalFlowSessionNV && rhs ) = default; +#else + OpticalFlowSessionNV( OpticalFlowSessionNV && rhs ) VULKAN_HPP_NOEXCEPT : m_opticalFlowSessionNV( exchange( rhs.m_opticalFlowSessionNV, {} ) ) {} + + OpticalFlowSessionNV & operator=( OpticalFlowSessionNV && rhs ) VULKAN_HPP_NOEXCEPT + { + m_opticalFlowSessionNV = exchange( rhs.m_opticalFlowSessionNV, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR OpticalFlowSessionNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT OpticalFlowSessionNV( VkOpticalFlowSessionNV opticalFlowSessionNV ) VULKAN_HPP_NOEXCEPT + : m_opticalFlowSessionNV( opticalFlowSessionNV ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + OpticalFlowSessionNV & operator=( VkOpticalFlowSessionNV opticalFlowSessionNV ) VULKAN_HPP_NOEXCEPT + { + m_opticalFlowSessionNV = opticalFlowSessionNV; + return *this; + } +#endif + + OpticalFlowSessionNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_opticalFlowSessionNV = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkOpticalFlowSessionNV() const VULKAN_HPP_NOEXCEPT + { + return m_opticalFlowSessionNV; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_opticalFlowSessionNV != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_opticalFlowSessionNV == VK_NULL_HANDLE; + } + + private: + VkOpticalFlowSessionNV m_opticalFlowSessionNV = {}; + }; + + template <> + struct CppType + { + using Type = OpticalFlowSessionNV; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = OpticalFlowSessionNV; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDescriptorUpdateTemplate, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplate.html + class DescriptorUpdateTemplate + { + public: + using CType = VkDescriptorUpdateTemplate; + using NativeType = VkDescriptorUpdateTemplate; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorUpdateTemplate; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorUpdateTemplate; + + public: + DescriptorUpdateTemplate() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DescriptorUpdateTemplate( DescriptorUpdateTemplate const & rhs ) = default; + DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DescriptorUpdateTemplate( DescriptorUpdateTemplate && rhs ) = default; + DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate && rhs ) = default; +#else + DescriptorUpdateTemplate( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT + : m_descriptorUpdateTemplate( exchange( rhs.m_descriptorUpdateTemplate, {} ) ) + { + } + + DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT + { + m_descriptorUpdateTemplate = exchange( rhs.m_descriptorUpdateTemplate, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplate( VkDescriptorUpdateTemplate descriptorUpdateTemplate ) VULKAN_HPP_NOEXCEPT + : m_descriptorUpdateTemplate( descriptorUpdateTemplate ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DescriptorUpdateTemplate & operator=( VkDescriptorUpdateTemplate descriptorUpdateTemplate ) VULKAN_HPP_NOEXCEPT + { + m_descriptorUpdateTemplate = descriptorUpdateTemplate; + return *this; + } +#endif + + DescriptorUpdateTemplate & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_descriptorUpdateTemplate = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplate() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate == VK_NULL_HANDLE; + } + + private: + VkDescriptorUpdateTemplate m_descriptorUpdateTemplate = {}; + }; + + template <> + struct CppType + { + using Type = DescriptorUpdateTemplate; + }; + + template <> + struct CppType + { + using Type = DescriptorUpdateTemplate; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DescriptorUpdateTemplate; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + using DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate; + + // wrapper class for handle VkEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkEvent.html + class Event + { + public: + using CType = VkEvent; + using NativeType = VkEvent; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eEvent; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eEvent; + + public: + Event() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Event( Event const & rhs ) = default; + Event & operator=( Event const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Event( Event && rhs ) = default; + Event & operator=( Event && rhs ) = default; +#else + Event( Event && rhs ) VULKAN_HPP_NOEXCEPT : m_event( exchange( rhs.m_event, {} ) ) {} + + Event & operator=( Event && rhs ) VULKAN_HPP_NOEXCEPT + { + m_event = exchange( rhs.m_event, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Event( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event ) VULKAN_HPP_NOEXCEPT : m_event( event ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + Event & operator=( VkEvent event ) VULKAN_HPP_NOEXCEPT + { + m_event = event; + return *this; + } +#endif + + Event & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_event = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const VULKAN_HPP_NOEXCEPT + { + return m_event; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_event != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_event == VK_NULL_HANDLE; + } + + private: + VkEvent m_event = {}; + }; + + template <> + struct CppType + { + using Type = Event; + }; + + template <> + struct CppType + { + using Type = Event; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Event; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkAccelerationStructureKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureKHR.html + class AccelerationStructureKHR + { + public: + using CType = VkAccelerationStructureKHR; + using NativeType = VkAccelerationStructureKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eAccelerationStructureKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eAccelerationStructureKHR; + + public: + AccelerationStructureKHR() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + AccelerationStructureKHR( AccelerationStructureKHR const & rhs ) = default; + AccelerationStructureKHR & operator=( AccelerationStructureKHR const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + AccelerationStructureKHR( AccelerationStructureKHR && rhs ) = default; + AccelerationStructureKHR & operator=( AccelerationStructureKHR && rhs ) = default; +#else + AccelerationStructureKHR( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_accelerationStructureKHR( exchange( rhs.m_accelerationStructureKHR, {} ) ) + { + } + + AccelerationStructureKHR & operator=( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + m_accelerationStructureKHR = exchange( rhs.m_accelerationStructureKHR, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR AccelerationStructureKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT AccelerationStructureKHR( VkAccelerationStructureKHR accelerationStructureKHR ) VULKAN_HPP_NOEXCEPT + : m_accelerationStructureKHR( accelerationStructureKHR ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + AccelerationStructureKHR & operator=( VkAccelerationStructureKHR accelerationStructureKHR ) VULKAN_HPP_NOEXCEPT + { + m_accelerationStructureKHR = accelerationStructureKHR; + return *this; + } +#endif + + AccelerationStructureKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_accelerationStructureKHR = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkAccelerationStructureKHR() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR == VK_NULL_HANDLE; + } + + private: + VkAccelerationStructureKHR m_accelerationStructureKHR = {}; + }; + + template <> + struct CppType + { + using Type = AccelerationStructureKHR; + }; + + template <> + struct CppType + { + using Type = AccelerationStructureKHR; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = AccelerationStructureKHR; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapEXT.html + class MicromapEXT + { + public: + using CType = VkMicromapEXT; + using NativeType = VkMicromapEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eMicromapEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + MicromapEXT() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + MicromapEXT( MicromapEXT const & rhs ) = default; + MicromapEXT & operator=( MicromapEXT const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + MicromapEXT( MicromapEXT && rhs ) = default; + MicromapEXT & operator=( MicromapEXT && rhs ) = default; +#else + MicromapEXT( MicromapEXT && rhs ) VULKAN_HPP_NOEXCEPT : m_micromapEXT( exchange( rhs.m_micromapEXT, {} ) ) {} + + MicromapEXT & operator=( MicromapEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + m_micromapEXT = exchange( rhs.m_micromapEXT, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR MicromapEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT MicromapEXT( VkMicromapEXT micromapEXT ) VULKAN_HPP_NOEXCEPT : m_micromapEXT( micromapEXT ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + MicromapEXT & operator=( VkMicromapEXT micromapEXT ) VULKAN_HPP_NOEXCEPT + { + m_micromapEXT = micromapEXT; + return *this; + } +#endif + + MicromapEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_micromapEXT = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkMicromapEXT() const VULKAN_HPP_NOEXCEPT + { + return m_micromapEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_micromapEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_micromapEXT == VK_NULL_HANDLE; + } + + private: + VkMicromapEXT m_micromapEXT = {}; + }; + + template <> + struct CppType + { + using Type = MicromapEXT; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = MicromapEXT; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBuffer.html + class CommandBuffer + { + public: + using CType = VkCommandBuffer; + using NativeType = VkCommandBuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCommandBuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCommandBuffer; + + public: + CommandBuffer() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + CommandBuffer( CommandBuffer const & rhs ) = default; + CommandBuffer & operator=( CommandBuffer const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + CommandBuffer( CommandBuffer && rhs ) = default; + CommandBuffer & operator=( CommandBuffer && rhs ) = default; +#else + CommandBuffer( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT : m_commandBuffer( exchange( rhs.m_commandBuffer, {} ) ) {} + + CommandBuffer & operator=( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT + { + m_commandBuffer = exchange( rhs.m_commandBuffer, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR CommandBuffer( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + CommandBuffer( VkCommandBuffer commandBuffer ) VULKAN_HPP_NOEXCEPT : m_commandBuffer( commandBuffer ) {} + + CommandBuffer & operator=( VkCommandBuffer commandBuffer ) VULKAN_HPP_NOEXCEPT + { + m_commandBuffer = commandBuffer; + return *this; + } + + CommandBuffer & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_commandBuffer = {}; + return *this; + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkBeginCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBeginCommandBuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD Result begin( CommandBufferBeginInfo const * pBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBeginCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBeginCommandBuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type begin( CommandBufferBeginInfo const & beginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEndCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEndCommandBuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD Result end( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkEndCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEndCommandBuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type end( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkResetCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandBuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD Result reset( CommandBufferResetFlags flags, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkResetCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandBuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type reset( CommandBufferResetFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkCmdCopyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer.html + template ::type = true> + void copyBuffer( Buffer srcBuffer, + Buffer dstBuffer, + uint32_t regionCount, + BufferCopy const * pRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer.html + template ::type = true> + void copyBuffer( Buffer srcBuffer, + Buffer dstBuffer, + ArrayProxy const & regions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage.html + template ::type = true> + void copyImage( Image srcImage, + ImageLayout srcImageLayout, + Image dstImage, + ImageLayout dstImageLayout, + uint32_t regionCount, + ImageCopy const * pRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage.html + template ::type = true> + void copyImage( Image srcImage, + ImageLayout srcImageLayout, + Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyBufferToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage.html + template ::type = true> + void copyBufferToImage( Buffer srcBuffer, + Image dstImage, + ImageLayout dstImageLayout, + uint32_t regionCount, + BufferImageCopy const * pRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBufferToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage.html + template ::type = true> + void copyBufferToImage( Buffer srcBuffer, + Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImageToBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer.html + template ::type = true> + void copyImageToBuffer( Image srcImage, + ImageLayout srcImageLayout, + Buffer dstBuffer, + uint32_t regionCount, + BufferImageCopy const * pRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImageToBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer.html + template ::type = true> + void copyImageToBuffer( Image srcImage, + ImageLayout srcImageLayout, + Buffer dstBuffer, + ArrayProxy const & regions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdUpdateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateBuffer.html + template ::type = true> + void updateBuffer( Buffer dstBuffer, + DeviceSize dstOffset, + DeviceSize dataSize, + void const * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdUpdateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateBuffer.html + template ::type = true> + void updateBuffer( Buffer dstBuffer, + DeviceSize dstOffset, + ArrayProxy const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdFillBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillBuffer.html + template ::type = true> + void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const + VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPipelineBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier.html + template ::type = true> + void pipelineBarrier( PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + DependencyFlags dependencyFlags, + uint32_t memoryBarrierCount, + MemoryBarrier const * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + BufferMemoryBarrier const * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + ImageMemoryBarrier const * pImageMemoryBarriers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPipelineBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier.html + template ::type = true> + void pipelineBarrier( PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + DependencyFlags dependencyFlags, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQuery.html + template ::type = true> + void beginQuery( QueryPool queryPool, + uint32_t query, + QueryControlFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQuery.html + template ::type = true> + void endQuery( QueryPool queryPool, uint32_t query, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetQueryPool.html + template ::type = true> + void resetQueryPool( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteTimestamp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp.html + template ::type = true> + void writeTimestamp( PipelineStageFlagBits pipelineStage, + QueryPool queryPool, + uint32_t query, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResults.html + template ::type = true> + void copyQueryPoolResults( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Buffer dstBuffer, + DeviceSize dstOffset, + DeviceSize stride, + QueryResultFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdExecuteCommands, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteCommands.html + template ::type = true> + void executeCommands( uint32_t commandBufferCount, + CommandBuffer const * pCommandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdExecuteCommands, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteCommands.html + template ::type = true> + void executeCommands( ArrayProxy const & commandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipeline.html + template ::type = true> + void bindPipeline( PipelineBindPoint pipelineBindPoint, + Pipeline pipeline, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets.html + template ::type = true> + void bindDescriptorSets( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t firstSet, + uint32_t descriptorSetCount, + DescriptorSet const * pDescriptorSets, + uint32_t dynamicOffsetCount, + uint32_t const * pDynamicOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets.html + template ::type = true> + void bindDescriptorSets( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & descriptorSets, + ArrayProxy const & dynamicOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdClearColorImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearColorImage.html + template ::type = true> + void clearColorImage( Image image, + ImageLayout imageLayout, + ClearColorValue const * pColor, + uint32_t rangeCount, + ImageSubresourceRange const * pRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdClearColorImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearColorImage.html + template ::type = true> + void clearColorImage( Image image, + ImageLayout imageLayout, + ClearColorValue const & color, + ArrayProxy const & ranges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDispatch, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatch.html + template ::type = true> + void dispatch( uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect.html + template ::type = true> + void dispatchIndirect( Buffer buffer, DeviceSize offset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent.html + template ::type = true> + void setEvent( Event event, PipelineStageFlags stageMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent.html + template ::type = true> + void resetEvent( Event event, PipelineStageFlags stageMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWaitEvents, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents.html + template ::type = true> + void waitEvents( uint32_t eventCount, + Event const * pEvents, + PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + uint32_t memoryBarrierCount, + MemoryBarrier const * pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + BufferMemoryBarrier const * pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + ImageMemoryBarrier const * pImageMemoryBarriers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWaitEvents, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents.html + template ::type = true> + void waitEvents( ArrayProxy const & events, + PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants.html + template ::type = true> + void pushConstants( PipelineLayout layout, + ShaderStageFlags stageFlags, + uint32_t offset, + uint32_t size, + void const * pValues, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants.html + template ::type = true> + void pushConstants( PipelineLayout layout, + ShaderStageFlags stageFlags, + uint32_t offset, + ArrayProxy const & values, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetViewport, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewport.html + template ::type = true> + void setViewport( uint32_t firstViewport, + uint32_t viewportCount, + Viewport const * pViewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewport, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewport.html + template ::type = true> + void setViewport( uint32_t firstViewport, + ArrayProxy const & viewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetScissor, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissor.html + template ::type = true> + void setScissor( uint32_t firstScissor, + uint32_t scissorCount, + Rect2D const * pScissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetScissor, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissor.html + template ::type = true> + void setScissor( uint32_t firstScissor, + ArrayProxy const & scissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetLineWidth, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineWidth.html + template ::type = true> + void setLineWidth( float lineWidth, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBias, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias.html + template ::type = true> + void setDepthBias( float depthBiasConstantFactor, + float depthBiasClamp, + float depthBiasSlopeFactor, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetBlendConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetBlendConstants.html + template ::type = true> + void setBlendConstants( float const blendConstants[4], Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBounds, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBounds.html + template ::type = true> + void setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilCompareMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilCompareMask.html + template ::type = true> + void setStencilCompareMask( StencilFaceFlags faceMask, + uint32_t compareMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilWriteMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilWriteMask.html + template ::type = true> + void setStencilWriteMask( StencilFaceFlags faceMask, + uint32_t writeMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilReference, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilReference.html + template ::type = true> + void setStencilReference( StencilFaceFlags faceMask, + uint32_t reference, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindIndexBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer.html + template ::type = true> + void bindIndexBuffer( Buffer buffer, + DeviceSize offset, + IndexType indexType, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindVertexBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers.html + template ::type = true> + void bindVertexBuffers( uint32_t firstBinding, + uint32_t bindingCount, + Buffer const * pBuffers, + DeviceSize const * pOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindVertexBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers.html + template ::type = true> + void bindVertexBuffers( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDraw, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDraw.html + template ::type = true> + void draw( uint32_t vertexCount, + uint32_t instanceCount, + uint32_t firstVertex, + uint32_t firstInstance, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexed, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexed.html + template ::type = true> + void drawIndexed( uint32_t indexCount, + uint32_t instanceCount, + uint32_t firstIndex, + int32_t vertexOffset, + uint32_t firstInstance, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect.html + template ::type = true> + void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) + const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexedIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect.html + template ::type = true> + void drawIndexedIndirect( Buffer buffer, + DeviceSize offset, + uint32_t drawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBlitImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage.html + template ::type = true> + void blitImage( Image srcImage, + ImageLayout srcImageLayout, + Image dstImage, + ImageLayout dstImageLayout, + uint32_t regionCount, + ImageBlit const * pRegions, + Filter filter, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBlitImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage.html + template ::type = true> + void blitImage( Image srcImage, + ImageLayout srcImageLayout, + Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions, + Filter filter, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdClearDepthStencilImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearDepthStencilImage.html + template ::type = true> + void clearDepthStencilImage( Image image, + ImageLayout imageLayout, + ClearDepthStencilValue const * pDepthStencil, + uint32_t rangeCount, + ImageSubresourceRange const * pRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdClearDepthStencilImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearDepthStencilImage.html + template ::type = true> + void clearDepthStencilImage( Image image, + ImageLayout imageLayout, + ClearDepthStencilValue const & depthStencil, + ArrayProxy const & ranges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdClearAttachments, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearAttachments.html + template ::type = true> + void clearAttachments( uint32_t attachmentCount, + ClearAttachment const * pAttachments, + uint32_t rectCount, + ClearRect const * pRects, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdClearAttachments, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearAttachments.html + template ::type = true> + void clearAttachments( ArrayProxy const & attachments, + ArrayProxy const & rects, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdResolveImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage.html + template ::type = true> + void resolveImage( Image srcImage, + ImageLayout srcImageLayout, + Image dstImage, + ImageLayout dstImageLayout, + uint32_t regionCount, + ImageResolve const * pRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdResolveImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage.html + template ::type = true> + void resolveImage( Image srcImage, + ImageLayout srcImageLayout, + Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass.html + template ::type = true> + void beginRenderPass( RenderPassBeginInfo const * pRenderPassBegin, + SubpassContents contents, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass.html + template ::type = true> + void beginRenderPass( RenderPassBeginInfo const & renderPassBegin, + SubpassContents contents, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdNextSubpass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass.html + template ::type = true> + void nextSubpass( SubpassContents contents, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass.html + template ::type = true> + void endRenderPass( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkCmdSetDeviceMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMask.html + template ::type = true> + void setDeviceMask( uint32_t deviceMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchBase, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBase.html + template ::type = true> + void dispatchBase( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_2 === + + // wrapper function for command vkCmdDrawIndirectCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount.html + template ::type = true> + void drawIndirectCount( Buffer buffer, + DeviceSize offset, + Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexedIndirectCount, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount.html + template ::type = true> + void drawIndexedIndirectCount( Buffer buffer, + DeviceSize offset, + Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBeginRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2.html + template ::type = true> + void beginRenderPass2( RenderPassBeginInfo const * pRenderPassBegin, + SubpassBeginInfo const * pSubpassBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2.html + template ::type = true> + void beginRenderPass2( RenderPassBeginInfo const & renderPassBegin, + SubpassBeginInfo const & subpassBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdNextSubpass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2.html + template ::type = true> + void nextSubpass2( SubpassBeginInfo const * pSubpassBeginInfo, + SubpassEndInfo const * pSubpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdNextSubpass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2.html + template ::type = true> + void nextSubpass2( SubpassBeginInfo const & subpassBeginInfo, + SubpassEndInfo const & subpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2.html + template ::type = true> + void endRenderPass2( SubpassEndInfo const * pSubpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2.html + template ::type = true> + void endRenderPass2( SubpassEndInfo const & subpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_3 === + + // wrapper function for command vkCmdPipelineBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2.html + template ::type = true> + void pipelineBarrier2( DependencyInfo const * pDependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPipelineBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2.html + template ::type = true> + void pipelineBarrier2( DependencyInfo const & dependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteTimestamp2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2.html + template ::type = true> + void writeTimestamp2( PipelineStageFlags2 stage, + QueryPool queryPool, + uint32_t query, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2.html + template ::type = true> + void copyBuffer2( CopyBufferInfo2 const * pCopyBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2.html + template ::type = true> + void copyBuffer2( CopyBufferInfo2 const & copyBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2.html + template ::type = true> + void copyImage2( CopyImageInfo2 const * pCopyImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2.html + template ::type = true> + void copyImage2( CopyImageInfo2 const & copyImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyBufferToImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2.html + template ::type = true> + void copyBufferToImage2( CopyBufferToImageInfo2 const * pCopyBufferToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBufferToImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2.html + template ::type = true> + void copyBufferToImage2( CopyBufferToImageInfo2 const & copyBufferToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImageToBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2.html + template ::type = true> + void copyImageToBuffer2( CopyImageToBufferInfo2 const * pCopyImageToBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImageToBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2.html + template ::type = true> + void copyImageToBuffer2( CopyImageToBufferInfo2 const & copyImageToBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2.html + template ::type = true> + void + setEvent2( Event event, DependencyInfo const * pDependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2.html + template ::type = true> + void setEvent2( Event event, DependencyInfo const & dependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdResetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2.html + template ::type = true> + void resetEvent2( Event event, PipelineStageFlags2 stageMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWaitEvents2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2.html + template ::type = true> + void waitEvents2( uint32_t eventCount, + Event const * pEvents, + DependencyInfo const * pDependencyInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWaitEvents2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2.html + template ::type = true> + void waitEvents2( ArrayProxy const & events, + ArrayProxy const & dependencyInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBlitImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2.html + template ::type = true> + void blitImage2( BlitImageInfo2 const * pBlitImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBlitImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2.html + template ::type = true> + void blitImage2( BlitImageInfo2 const & blitImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdResolveImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2.html + template ::type = true> + void resolveImage2( ResolveImageInfo2 const * pResolveImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdResolveImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2.html + template ::type = true> + void resolveImage2( ResolveImageInfo2 const & resolveImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRendering.html + template ::type = true> + void beginRendering( RenderingInfo const * pRenderingInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRendering.html + template ::type = true> + void beginRendering( RenderingInfo const & renderingInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering.html + template ::type = true> + void endRendering( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCullMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullMode.html + template ::type = true> + void setCullMode( CullModeFlags cullMode, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetFrontFace, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFace.html + template ::type = true> + void setFrontFace( FrontFace frontFace, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetPrimitiveTopology, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopology.html + template ::type = true> + void setPrimitiveTopology( PrimitiveTopology primitiveTopology, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewportWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCount.html + template ::type = true> + void setViewportWithCount( uint32_t viewportCount, + Viewport const * pViewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewportWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCount.html + template ::type = true> + void setViewportWithCount( ArrayProxy const & viewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetScissorWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCount.html + template ::type = true> + void setScissorWithCount( uint32_t scissorCount, + Rect2D const * pScissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetScissorWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCount.html + template ::type = true> + void setScissorWithCount( ArrayProxy const & scissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindVertexBuffers2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2.html + template ::type = true> + void bindVertexBuffers2( uint32_t firstBinding, + uint32_t bindingCount, + Buffer const * pBuffers, + DeviceSize const * pOffsets, + DeviceSize const * pSizes, + DeviceSize const * pStrides, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindVertexBuffers2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2.html + template ::type = true> + void bindVertexBuffers2( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + ArrayProxy const & strides VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDepthTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnable.html + template ::type = true> + void setDepthTestEnable( Bool32 depthTestEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthWriteEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnable.html + template ::type = true> + void setDepthWriteEnable( Bool32 depthWriteEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthCompareOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOp.html + template ::type = true> + void setDepthCompareOp( CompareOp depthCompareOp, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBoundsTestEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnable.html + template ::type = true> + void setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnable.html + template ::type = true> + void setStencilTestEnable( Bool32 stencilTestEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOp.html + template ::type = true> + void setStencilOp( StencilFaceFlags faceMask, + StencilOp failOp, + StencilOp passOp, + StencilOp depthFailOp, + CompareOp compareOp, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRasterizerDiscardEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnable.html + template ::type = true> + void setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBiasEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnable.html + template ::type = true> + void setDepthBiasEnable( Bool32 depthBiasEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetPrimitiveRestartEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnable.html + template ::type = true> + void setPrimitiveRestartEnable( Bool32 primitiveRestartEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_4 === + + // wrapper function for command vkCmdPushDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet.html + template ::type = true> + void pushDescriptorSet( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + WriteDescriptorSet const * pDescriptorWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet.html + template ::type = true> + void pushDescriptorSet( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate.html + template ::type = true> + void pushDescriptorSetWithTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, + PipelineLayout layout, + uint32_t set, + void const * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate.html + template ::type = true> + void pushDescriptorSetWithTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, + PipelineLayout layout, + uint32_t set, + DataType const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindDescriptorSets2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2.html + template ::type = true> + void bindDescriptorSets2( BindDescriptorSetsInfo const * pBindDescriptorSetsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindDescriptorSets2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2.html + template ::type = true> + void bindDescriptorSets2( BindDescriptorSetsInfo const & bindDescriptorSetsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushConstants2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2.html + template ::type = true> + void pushConstants2( PushConstantsInfo const * pPushConstantsInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushConstants2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2.html + template ::type = true> + void pushConstants2( PushConstantsInfo const & pushConstantsInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSet2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2.html + template ::type = true> + void pushDescriptorSet2( PushDescriptorSetInfo const * pPushDescriptorSetInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSet2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2.html + template ::type = true> + void pushDescriptorSet2( PushDescriptorSetInfo const & pushDescriptorSetInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2.html + template ::type = true> + void pushDescriptorSetWithTemplate2( PushDescriptorSetWithTemplateInfo const * pPushDescriptorSetWithTemplateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2.html + template ::type = true> + void pushDescriptorSetWithTemplate2( PushDescriptorSetWithTemplateInfo const & pushDescriptorSetWithTemplateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetLineStipple, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStipple.html + template ::type = true> + void setLineStipple( uint32_t lineStippleFactor, + uint16_t lineStipplePattern, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindIndexBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2.html + template ::type = true> + void bindIndexBuffer2( Buffer buffer, DeviceSize offset, DeviceSize size, IndexType indexType, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) + const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRenderingAttachmentLocations, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocations.html + template ::type = true> + void setRenderingAttachmentLocations( RenderingAttachmentLocationInfo const * pLocationInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetRenderingAttachmentLocations, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocations.html + template ::type = true> + void setRenderingAttachmentLocations( RenderingAttachmentLocationInfo const & locationInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetRenderingInputAttachmentIndices, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndices.html + template ::type = true> + void setRenderingInputAttachmentIndices( RenderingInputAttachmentIndexInfo const * pInputAttachmentIndexInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetRenderingInputAttachmentIndices, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndices.html + template ::type = true> + void setRenderingInputAttachmentIndices( RenderingInputAttachmentIndexInfo const & inputAttachmentIndexInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_debug_marker === + + // wrapper function for command vkCmdDebugMarkerBeginEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerBeginEXT.html + template ::type = true> + void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT const * pMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDebugMarkerBeginEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerBeginEXT.html + template ::type = true> + void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT const & markerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDebugMarkerEndEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerEndEXT.html + template ::type = true> + void debugMarkerEndEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDebugMarkerInsertEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerInsertEXT.html + template ::type = true> + void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT const * pMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDebugMarkerInsertEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerInsertEXT.html + template ::type = true> + void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT const & markerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_video_queue === + + // wrapper function for command vkCmdBeginVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginVideoCodingKHR.html + template ::type = true> + void beginVideoCodingKHR( VideoBeginCodingInfoKHR const * pBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginVideoCodingKHR.html + template ::type = true> + void beginVideoCodingKHR( VideoBeginCodingInfoKHR const & beginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndVideoCodingKHR.html + template ::type = true> + void endVideoCodingKHR( VideoEndCodingInfoKHR const * pEndCodingInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndVideoCodingKHR.html + template ::type = true> + void endVideoCodingKHR( VideoEndCodingInfoKHR const & endCodingInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdControlVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdControlVideoCodingKHR.html + template ::type = true> + void controlVideoCodingKHR( VideoCodingControlInfoKHR const * pCodingControlInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdControlVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdControlVideoCodingKHR.html + template ::type = true> + void controlVideoCodingKHR( VideoCodingControlInfoKHR const & codingControlInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_video_decode_queue === + + // wrapper function for command vkCmdDecodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecodeVideoKHR.html + template ::type = true> + void decodeVideoKHR( VideoDecodeInfoKHR const * pDecodeInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDecodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecodeVideoKHR.html + template ::type = true> + void decodeVideoKHR( VideoDecodeInfoKHR const & decodeInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_transform_feedback === + + // wrapper function for command vkCmdBindTransformFeedbackBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffersEXT.html + template ::type = true> + void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, + uint32_t bindingCount, + Buffer const * pBuffers, + DeviceSize const * pOffsets, + DeviceSize const * pSizes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindTransformFeedbackBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffersEXT.html + template ::type = true> + void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginTransformFeedbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedbackEXT.html + template ::type = true> + void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + Buffer const * pCounterBuffers, + DeviceSize const * pCounterBufferOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginTransformFeedbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedbackEXT.html + template ::type = true> + void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndTransformFeedbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedbackEXT.html + template ::type = true> + void endTransformFeedbackEXT( uint32_t firstCounterBuffer, + uint32_t counterBufferCount, + Buffer const * pCounterBuffers, + DeviceSize const * pCounterBufferOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndTransformFeedbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedbackEXT.html + template ::type = true> + void endTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQueryIndexedEXT.html + template ::type = true> + void beginQueryIndexedEXT( QueryPool queryPool, + uint32_t query, + QueryControlFlags flags, + uint32_t index, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQueryIndexedEXT.html + template ::type = true> + void endQueryIndexedEXT( QueryPool queryPool, + uint32_t query, + uint32_t index, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndirectByteCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCountEXT.html + template ::type = true> + void drawIndirectByteCountEXT( uint32_t instanceCount, + uint32_t firstInstance, + Buffer counterBuffer, + DeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NVX_binary_import === + + // wrapper function for command vkCmdCuLaunchKernelNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCuLaunchKernelNVX.html + template ::type = true> + void cuLaunchKernelNVX( CuLaunchInfoNVX const * pLaunchInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCuLaunchKernelNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCuLaunchKernelNVX.html + template ::type = true> + void cuLaunchKernelNVX( CuLaunchInfoNVX const & launchInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_AMD_draw_indirect_count === + + // wrapper function for command vkCmdDrawIndirectCountAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountAMD.html + template ::type = true> + void drawIndirectCountAMD( Buffer buffer, + DeviceSize offset, + Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexedIndirectCountAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountAMD.html + template ::type = true> + void drawIndexedIndirectCountAMD( Buffer buffer, + DeviceSize offset, + Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_dynamic_rendering === + + // wrapper function for command vkCmdBeginRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderingKHR.html + template ::type = true> + void beginRenderingKHR( RenderingInfo const * pRenderingInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderingKHR.html + template ::type = true> + void beginRenderingKHR( RenderingInfo const & renderingInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderingKHR.html + template ::type = true> + void endRenderingKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_device_group === + + // wrapper function for command vkCmdSetDeviceMaskKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMaskKHR.html + template ::type = true> + void setDeviceMaskKHR( uint32_t deviceMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchBaseKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBaseKHR.html + template ::type = true> + void dispatchBaseKHR( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_push_descriptor === + + // wrapper function for command vkCmdPushDescriptorSetKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetKHR.html + template ::type = true> + void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t set, + uint32_t descriptorWriteCount, + WriteDescriptorSet const * pDescriptorWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSetKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetKHR.html + template ::type = true> + void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html + template ::type = true> + void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, + PipelineLayout layout, + uint32_t set, + void const * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html + template ::type = true> + void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, + PipelineLayout layout, + uint32_t set, + DataType const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_conditional_rendering === + + // wrapper function for command vkCmdBeginConditionalRenderingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRenderingEXT.html + template ::type = true> + void beginConditionalRenderingEXT( ConditionalRenderingBeginInfoEXT const * pConditionalRenderingBegin, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginConditionalRenderingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRenderingEXT.html + template ::type = true> + void beginConditionalRenderingEXT( ConditionalRenderingBeginInfoEXT const & conditionalRenderingBegin, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndConditionalRenderingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndConditionalRenderingEXT.html + template ::type = true> + void endConditionalRenderingEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_clip_space_w_scaling === + + // wrapper function for command vkCmdSetViewportWScalingNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingNV.html + template ::type = true> + void setViewportWScalingNV( uint32_t firstViewport, + uint32_t viewportCount, + ViewportWScalingNV const * pViewportWScalings, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewportWScalingNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingNV.html + template ::type = true> + void setViewportWScalingNV( uint32_t firstViewport, + ArrayProxy const & viewportWScalings, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_discard_rectangles === + + // wrapper function for command vkCmdSetDiscardRectangleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEXT.html + template ::type = true> + void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, + uint32_t discardRectangleCount, + Rect2D const * pDiscardRectangles, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetDiscardRectangleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEXT.html + template ::type = true> + void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, + ArrayProxy const & discardRectangles, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDiscardRectangleEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEnableEXT.html + template ::type = true> + void setDiscardRectangleEnableEXT( Bool32 discardRectangleEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDiscardRectangleModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleModeEXT.html + template ::type = true> + void setDiscardRectangleModeEXT( DiscardRectangleModeEXT discardRectangleMode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_create_renderpass2 === + + // wrapper function for command vkCmdBeginRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2KHR.html + template ::type = true> + void beginRenderPass2KHR( RenderPassBeginInfo const * pRenderPassBegin, + SubpassBeginInfo const * pSubpassBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2KHR.html + template ::type = true> + void beginRenderPass2KHR( RenderPassBeginInfo const & renderPassBegin, + SubpassBeginInfo const & subpassBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdNextSubpass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2KHR.html + template ::type = true> + void nextSubpass2KHR( SubpassBeginInfo const * pSubpassBeginInfo, + SubpassEndInfo const * pSubpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdNextSubpass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2KHR.html + template ::type = true> + void nextSubpass2KHR( SubpassBeginInfo const & subpassBeginInfo, + SubpassEndInfo const & subpassEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2KHR.html + template ::type = true> + void endRenderPass2KHR( SubpassEndInfo const * pSubpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2KHR.html + template ::type = true> + void endRenderPass2KHR( SubpassEndInfo const & subpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_debug_utils === + + // wrapper function for command vkCmdBeginDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginDebugUtilsLabelEXT.html + template ::type = true> + void beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const * pLabelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginDebugUtilsLabelEXT.html + template ::type = true> + void beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndDebugUtilsLabelEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndDebugUtilsLabelEXT.html + template ::type = true> + void endDebugUtilsLabelEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInsertDebugUtilsLabelEXT.html + template ::type = true> + void insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const * pLabelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInsertDebugUtilsLabelEXT.html + template ::type = true> + void insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + + // wrapper function for command vkCmdInitializeGraphScratchMemoryAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInitializeGraphScratchMemoryAMDX.html + template ::type = true> + void initializeGraphScratchMemoryAMDX( Pipeline executionGraph, + DeviceAddress scratch, + DeviceSize scratchSize, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchGraphAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphAMDX.html + template ::type = true> + void dispatchGraphAMDX( DeviceAddress scratch, + DeviceSize scratchSize, + DispatchGraphCountInfoAMDX const * pCountInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDispatchGraphAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphAMDX.html + template ::type = true> + void dispatchGraphAMDX( DeviceAddress scratch, + DeviceSize scratchSize, + DispatchGraphCountInfoAMDX const & countInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDispatchGraphIndirectAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectAMDX.html + template ::type = true> + void dispatchGraphIndirectAMDX( DeviceAddress scratch, + DeviceSize scratchSize, + DispatchGraphCountInfoAMDX const * pCountInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDispatchGraphIndirectAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectAMDX.html + template ::type = true> + void dispatchGraphIndirectAMDX( DeviceAddress scratch, + DeviceSize scratchSize, + DispatchGraphCountInfoAMDX const & countInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDispatchGraphIndirectCountAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectCountAMDX.html + template ::type = true> + void dispatchGraphIndirectCountAMDX( DeviceAddress scratch, + DeviceSize scratchSize, + DeviceAddress countInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + + // wrapper function for command vkCmdBindSamplerHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindSamplerHeapEXT.html + template ::type = true> + void bindSamplerHeapEXT( BindHeapInfoEXT const * pBindInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindSamplerHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindSamplerHeapEXT.html + template ::type = true> + void bindSamplerHeapEXT( BindHeapInfoEXT const & bindInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindResourceHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindResourceHeapEXT.html + template ::type = true> + void bindResourceHeapEXT( BindHeapInfoEXT const * pBindInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindResourceHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindResourceHeapEXT.html + template ::type = true> + void bindResourceHeapEXT( BindHeapInfoEXT const & bindInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDataEXT.html + template ::type = true> + void pushDataEXT( PushDataInfoEXT const * pPushDataInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDataEXT.html + template ::type = true> + void pushDataEXT( PushDataInfoEXT const & pushDataInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_sample_locations === + + // wrapper function for command vkCmdSetSampleLocationsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEXT.html + template ::type = true> + void setSampleLocationsEXT( SampleLocationsInfoEXT const * pSampleLocationsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetSampleLocationsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEXT.html + template ::type = true> + void setSampleLocationsEXT( SampleLocationsInfoEXT const & sampleLocationsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_acceleration_structure === + + // wrapper function for command vkCmdBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresKHR.html + template ::type = true> + void buildAccelerationStructuresKHR( uint32_t infoCount, + AccelerationStructureBuildGeometryInfoKHR const * pInfos, + AccelerationStructureBuildRangeInfoKHR const * const * ppBuildRangeInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresKHR.html + template ::type = true> + void buildAccelerationStructuresKHR( ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBuildAccelerationStructuresIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresIndirectKHR.html + template ::type = true> + void buildAccelerationStructuresIndirectKHR( uint32_t infoCount, + AccelerationStructureBuildGeometryInfoKHR const * pInfos, + DeviceAddress const * pIndirectDeviceAddresses, + uint32_t const * pIndirectStrides, + uint32_t const * const * ppMaxPrimitiveCounts, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildAccelerationStructuresIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresIndirectKHR.html + template ::type = true> + void buildAccelerationStructuresIndirectKHR( ArrayProxy const & infos, + ArrayProxy const & indirectDeviceAddresses, + ArrayProxy const & indirectStrides, + ArrayProxy const & pMaxPrimitiveCounts, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureKHR.html + template ::type = true> + void copyAccelerationStructureKHR( CopyAccelerationStructureInfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureKHR.html + template ::type = true> + void copyAccelerationStructureKHR( CopyAccelerationStructureInfoKHR const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureToMemoryKHR.html + template ::type = true> + void copyAccelerationStructureToMemoryKHR( CopyAccelerationStructureToMemoryInfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureToMemoryKHR.html + template ::type = true> + void copyAccelerationStructureToMemoryKHR( CopyAccelerationStructureToMemoryInfoKHR const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToAccelerationStructureKHR.html + template ::type = true> + void copyMemoryToAccelerationStructureKHR( CopyMemoryToAccelerationStructureInfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToAccelerationStructureKHR.html + template ::type = true> + void copyMemoryToAccelerationStructureKHR( CopyMemoryToAccelerationStructureInfoKHR const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesKHR.html + template ::type = true> + void writeAccelerationStructuresPropertiesKHR( uint32_t accelerationStructureCount, + AccelerationStructureKHR const * pAccelerationStructures, + QueryType queryType, + QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesKHR.html + template ::type = true> + void writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, + QueryType queryType, + QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_ray_tracing_pipeline === + + // wrapper function for command vkCmdTraceRaysKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysKHR.html + template ::type = true> + void traceRaysKHR( StridedDeviceAddressRegionKHR const * pRaygenShaderBindingTable, + StridedDeviceAddressRegionKHR const * pMissShaderBindingTable, + StridedDeviceAddressRegionKHR const * pHitShaderBindingTable, + StridedDeviceAddressRegionKHR const * pCallableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdTraceRaysKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysKHR.html + template ::type = true> + void traceRaysKHR( StridedDeviceAddressRegionKHR const & raygenShaderBindingTable, + StridedDeviceAddressRegionKHR const & missShaderBindingTable, + StridedDeviceAddressRegionKHR const & hitShaderBindingTable, + StridedDeviceAddressRegionKHR const & callableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdTraceRaysIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirectKHR.html + template ::type = true> + void traceRaysIndirectKHR( StridedDeviceAddressRegionKHR const * pRaygenShaderBindingTable, + StridedDeviceAddressRegionKHR const * pMissShaderBindingTable, + StridedDeviceAddressRegionKHR const * pHitShaderBindingTable, + StridedDeviceAddressRegionKHR const * pCallableShaderBindingTable, + DeviceAddress indirectDeviceAddress, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdTraceRaysIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirectKHR.html + template ::type = true> + void traceRaysIndirectKHR( StridedDeviceAddressRegionKHR const & raygenShaderBindingTable, + StridedDeviceAddressRegionKHR const & missShaderBindingTable, + StridedDeviceAddressRegionKHR const & hitShaderBindingTable, + StridedDeviceAddressRegionKHR const & callableShaderBindingTable, + DeviceAddress indirectDeviceAddress, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetRayTracingPipelineStackSizeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRayTracingPipelineStackSizeKHR.html + template ::type = true> + void setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_shading_rate_image === + + // wrapper function for command vkCmdBindShadingRateImageNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadingRateImageNV.html + template ::type = true> + void bindShadingRateImageNV( ImageView imageView, + ImageLayout imageLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewportShadingRatePaletteNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportShadingRatePaletteNV.html + template ::type = true> + void setViewportShadingRatePaletteNV( uint32_t firstViewport, + uint32_t viewportCount, + ShadingRatePaletteNV const * pShadingRatePalettes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewportShadingRatePaletteNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportShadingRatePaletteNV.html + template ::type = true> + void setViewportShadingRatePaletteNV( uint32_t firstViewport, + ArrayProxy const & shadingRatePalettes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetCoarseSampleOrderNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoarseSampleOrderNV.html + template ::type = true> + void setCoarseSampleOrderNV( CoarseSampleOrderTypeNV sampleOrderType, + uint32_t customSampleOrderCount, + CoarseSampleOrderCustomNV const * pCustomSampleOrders, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetCoarseSampleOrderNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoarseSampleOrderNV.html + template ::type = true> + void setCoarseSampleOrderNV( CoarseSampleOrderTypeNV sampleOrderType, + ArrayProxy const & customSampleOrders, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_ray_tracing === + + // wrapper function for command vkCmdBuildAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructureNV.html + template ::type = true> + void buildAccelerationStructureNV( AccelerationStructureInfoNV const * pInfo, + Buffer instanceData, + DeviceSize instanceOffset, + Bool32 update, + AccelerationStructureNV dst, + AccelerationStructureNV src, + Buffer scratch, + DeviceSize scratchOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructureNV.html + template ::type = true> + void buildAccelerationStructureNV( AccelerationStructureInfoNV const & info, + Buffer instanceData, + DeviceSize instanceOffset, + Bool32 update, + AccelerationStructureNV dst, + AccelerationStructureNV src, + Buffer scratch, + DeviceSize scratchOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureNV.html + template ::type = true> + void copyAccelerationStructureNV( AccelerationStructureNV dst, + AccelerationStructureNV src, + CopyAccelerationStructureModeKHR mode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdTraceRaysNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysNV.html + template ::type = true> + void traceRaysNV( Buffer raygenShaderBindingTableBuffer, + DeviceSize raygenShaderBindingOffset, + Buffer missShaderBindingTableBuffer, + DeviceSize missShaderBindingOffset, + DeviceSize missShaderBindingStride, + Buffer hitShaderBindingTableBuffer, + DeviceSize hitShaderBindingOffset, + DeviceSize hitShaderBindingStride, + Buffer callableShaderBindingTableBuffer, + DeviceSize callableShaderBindingOffset, + DeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesNV.html + template ::type = true> + void writeAccelerationStructuresPropertiesNV( uint32_t accelerationStructureCount, + AccelerationStructureNV const * pAccelerationStructures, + QueryType queryType, + QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesNV.html + template ::type = true> + void writeAccelerationStructuresPropertiesNV( ArrayProxy const & accelerationStructures, + QueryType queryType, + QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_draw_indirect_count === + + // wrapper function for command vkCmdDrawIndirectCountKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountKHR.html + template ::type = true> + void drawIndirectCountKHR( Buffer buffer, + DeviceSize offset, + Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexedIndirectCountKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountKHR.html + template ::type = true> + void drawIndexedIndirectCountKHR( Buffer buffer, + DeviceSize offset, + Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_AMD_buffer_marker === + + // wrapper function for command vkCmdWriteBufferMarkerAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarkerAMD.html + template ::type = true> + void writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage, + Buffer dstBuffer, + DeviceSize dstOffset, + uint32_t marker, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteBufferMarker2AMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarker2AMD.html + template ::type = true> + void writeBufferMarker2AMD( PipelineStageFlags2 stage, + Buffer dstBuffer, + DeviceSize dstOffset, + uint32_t marker, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_mesh_shader === + + // wrapper function for command vkCmdDrawMeshTasksNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksNV.html + template ::type = true> + void drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMeshTasksIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectNV.html + template ::type = true> + void drawMeshTasksIndirectNV( Buffer buffer, + DeviceSize offset, + uint32_t drawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMeshTasksIndirectCountNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountNV.html + template ::type = true> + void drawMeshTasksIndirectCountNV( Buffer buffer, + DeviceSize offset, + Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_scissor_exclusive === + + // wrapper function for command vkCmdSetExclusiveScissorEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorEnableNV.html + template ::type = true> + void setExclusiveScissorEnableNV( uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + Bool32 const * pExclusiveScissorEnables, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetExclusiveScissorEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorEnableNV.html + template ::type = true> + void setExclusiveScissorEnableNV( uint32_t firstExclusiveScissor, + ArrayProxy const & exclusiveScissorEnables, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetExclusiveScissorNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorNV.html + template ::type = true> + void setExclusiveScissorNV( uint32_t firstExclusiveScissor, + uint32_t exclusiveScissorCount, + Rect2D const * pExclusiveScissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetExclusiveScissorNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorNV.html + template ::type = true> + void setExclusiveScissorNV( uint32_t firstExclusiveScissor, + ArrayProxy const & exclusiveScissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_device_diagnostic_checkpoints === + + // wrapper function for command vkCmdSetCheckpointNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCheckpointNV.html + template ::type = true> + void setCheckpointNV( void const * pCheckpointMarker, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetCheckpointNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCheckpointNV.html + template ::type = true> + void setCheckpointNV( CheckpointMarkerType const & checkpointMarker, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_INTEL_performance_query === + + // wrapper function for command vkCmdSetPerformanceMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceMarkerINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setPerformanceMarkerINTEL( PerformanceMarkerInfoINTEL const * pMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetPerformanceMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceMarkerINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setPerformanceMarkerINTEL( PerformanceMarkerInfoINTEL const & markerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetPerformanceStreamMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceStreamMarkerINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setPerformanceStreamMarkerINTEL( PerformanceStreamMarkerInfoINTEL const * pMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetPerformanceStreamMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceStreamMarkerINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setPerformanceStreamMarkerINTEL( PerformanceStreamMarkerInfoINTEL const & markerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetPerformanceOverrideINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceOverrideINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setPerformanceOverrideINTEL( PerformanceOverrideInfoINTEL const * pOverrideInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetPerformanceOverrideINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceOverrideINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setPerformanceOverrideINTEL( PerformanceOverrideInfoINTEL const & overrideInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_fragment_shading_rate === + + // wrapper function for command vkCmdSetFragmentShadingRateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateKHR.html + template ::type = true> + void setFragmentShadingRateKHR( Extent2D const * pFragmentSize, + FragmentShadingRateCombinerOpKHR const combinerOps[2], + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetFragmentShadingRateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateKHR.html + template ::type = true> + void setFragmentShadingRateKHR( Extent2D const & fragmentSize, + FragmentShadingRateCombinerOpKHR const combinerOps[2], + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_dynamic_rendering_local_read === + + // wrapper function for command vkCmdSetRenderingAttachmentLocationsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocationsKHR.html + template ::type = true> + void setRenderingAttachmentLocationsKHR( RenderingAttachmentLocationInfo const * pLocationInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetRenderingAttachmentLocationsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocationsKHR.html + template ::type = true> + void setRenderingAttachmentLocationsKHR( RenderingAttachmentLocationInfo const & locationInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetRenderingInputAttachmentIndicesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndicesKHR.html + template ::type = true> + void setRenderingInputAttachmentIndicesKHR( RenderingInputAttachmentIndexInfo const * pInputAttachmentIndexInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetRenderingInputAttachmentIndicesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndicesKHR.html + template ::type = true> + void setRenderingInputAttachmentIndicesKHR( RenderingInputAttachmentIndexInfo const & inputAttachmentIndexInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_line_rasterization === + + // wrapper function for command vkCmdSetLineStippleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEXT.html + template ::type = true> + void setLineStippleEXT( uint32_t lineStippleFactor, + uint16_t lineStipplePattern, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_extended_dynamic_state === + + // wrapper function for command vkCmdSetCullModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullModeEXT.html + template ::type = true> + void setCullModeEXT( CullModeFlags cullMode, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetFrontFaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFaceEXT.html + template ::type = true> + void setFrontFaceEXT( FrontFace frontFace, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetPrimitiveTopologyEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopologyEXT.html + template ::type = true> + void setPrimitiveTopologyEXT( PrimitiveTopology primitiveTopology, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewportWithCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCountEXT.html + template ::type = true> + void setViewportWithCountEXT( uint32_t viewportCount, + Viewport const * pViewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewportWithCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCountEXT.html + template ::type = true> + void setViewportWithCountEXT( ArrayProxy const & viewports, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetScissorWithCountEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCountEXT.html + template ::type = true> + void setScissorWithCountEXT( uint32_t scissorCount, + Rect2D const * pScissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetScissorWithCountEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCountEXT.html + template ::type = true> + void setScissorWithCountEXT( ArrayProxy const & scissors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindVertexBuffers2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2EXT.html + template ::type = true> + void bindVertexBuffers2EXT( uint32_t firstBinding, + uint32_t bindingCount, + Buffer const * pBuffers, + DeviceSize const * pOffsets, + DeviceSize const * pSizes, + DeviceSize const * pStrides, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindVertexBuffers2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2EXT.html + template ::type = true> + void bindVertexBuffers2EXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + ArrayProxy const & strides VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDepthTestEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnableEXT.html + template ::type = true> + void setDepthTestEnableEXT( Bool32 depthTestEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthWriteEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnableEXT.html + template ::type = true> + void setDepthWriteEnableEXT( Bool32 depthWriteEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthCompareOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOpEXT.html + template ::type = true> + void setDepthCompareOpEXT( CompareOp depthCompareOp, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBoundsTestEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnableEXT.html + template ::type = true> + void setDepthBoundsTestEnableEXT( Bool32 depthBoundsTestEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilTestEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnableEXT.html + template ::type = true> + void setStencilTestEnableEXT( Bool32 stencilTestEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOpEXT.html + template ::type = true> + void setStencilOpEXT( StencilFaceFlags faceMask, + StencilOp failOp, + StencilOp passOp, + StencilOp depthFailOp, + CompareOp compareOp, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_generated_commands === + + // wrapper function for command vkCmdPreprocessGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsNV.html + template ::type = true> + void preprocessGeneratedCommandsNV( GeneratedCommandsInfoNV const * pGeneratedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPreprocessGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsNV.html + template ::type = true> + void preprocessGeneratedCommandsNV( GeneratedCommandsInfoNV const & generatedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdExecuteGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsNV.html + template ::type = true> + void executeGeneratedCommandsNV( Bool32 isPreprocessed, + GeneratedCommandsInfoNV const * pGeneratedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdExecuteGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsNV.html + template ::type = true> + void executeGeneratedCommandsNV( Bool32 isPreprocessed, + GeneratedCommandsInfoNV const & generatedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindPipelineShaderGroupNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipelineShaderGroupNV.html + template ::type = true> + void bindPipelineShaderGroupNV( PipelineBindPoint pipelineBindPoint, + Pipeline pipeline, + uint32_t groupIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_depth_bias_control === + + // wrapper function for command vkCmdSetDepthBias2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias2EXT.html + template ::type = true> + void setDepthBias2EXT( DepthBiasInfoEXT const * pDepthBiasInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetDepthBias2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias2EXT.html + template ::type = true> + void setDepthBias2EXT( DepthBiasInfoEXT const & depthBiasInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_video_encode_queue === + + // wrapper function for command vkCmdEncodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEncodeVideoKHR.html + template ::type = true> + void encodeVideoKHR( VideoEncodeInfoKHR const * pEncodeInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEncodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEncodeVideoKHR.html + template ::type = true> + void encodeVideoKHR( VideoEncodeInfoKHR const & encodeInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + // wrapper function for command vkCmdCudaLaunchKernelNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCudaLaunchKernelNV.html + template ::type = true> + void cudaLaunchKernelNV( CudaLaunchInfoNV const * pLaunchInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCudaLaunchKernelNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCudaLaunchKernelNV.html + template ::type = true> + void cudaLaunchKernelNV( CudaLaunchInfoNV const & launchInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + + // wrapper function for command vkCmdDispatchTileQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchTileQCOM.html + template ::type = true> + void dispatchTileQCOM( DispatchTileInfoQCOM const * pDispatchTileInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDispatchTileQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchTileQCOM.html + template ::type = true> + void dispatchTileQCOM( DispatchTileInfoQCOM const & dispatchTileInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginPerTileExecutionQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginPerTileExecutionQCOM.html + template ::type = true> + void beginPerTileExecutionQCOM( PerTileBeginInfoQCOM const * pPerTileBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginPerTileExecutionQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginPerTileExecutionQCOM.html + template ::type = true> + void beginPerTileExecutionQCOM( PerTileBeginInfoQCOM const & perTileBeginInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndPerTileExecutionQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndPerTileExecutionQCOM.html + template ::type = true> + void endPerTileExecutionQCOM( PerTileEndInfoQCOM const * pPerTileEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndPerTileExecutionQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndPerTileExecutionQCOM.html + template ::type = true> + void endPerTileExecutionQCOM( PerTileEndInfoQCOM const & perTileEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_synchronization2 === + + // wrapper function for command vkCmdSetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2KHR.html + template ::type = true> + void setEvent2KHR( Event event, + DependencyInfo const * pDependencyInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2KHR.html + template ::type = true> + void + setEvent2KHR( Event event, DependencyInfo const & dependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdResetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2KHR.html + template ::type = true> + void resetEvent2KHR( Event event, PipelineStageFlags2 stageMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWaitEvents2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2KHR.html + template ::type = true> + void waitEvents2KHR( uint32_t eventCount, + Event const * pEvents, + DependencyInfo const * pDependencyInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWaitEvents2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2KHR.html + template ::type = true> + void waitEvents2KHR( ArrayProxy const & events, + ArrayProxy const & dependencyInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPipelineBarrier2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2KHR.html + template ::type = true> + void pipelineBarrier2KHR( DependencyInfo const * pDependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPipelineBarrier2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2KHR.html + template ::type = true> + void pipelineBarrier2KHR( DependencyInfo const & dependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteTimestamp2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2KHR.html + template ::type = true> + void writeTimestamp2KHR( PipelineStageFlags2 stage, + QueryPool queryPool, + uint32_t query, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_descriptor_buffer === + + // wrapper function for command vkCmdBindDescriptorBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBuffersEXT.html + template ::type = true> + void bindDescriptorBuffersEXT( uint32_t bufferCount, + DescriptorBufferBindingInfoEXT const * pBindingInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindDescriptorBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBuffersEXT.html + template ::type = true> + void bindDescriptorBuffersEXT( ArrayProxy const & bindingInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDescriptorBufferOffsetsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsetsEXT.html + template ::type = true> + void setDescriptorBufferOffsetsEXT( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t firstSet, + uint32_t setCount, + uint32_t const * pBufferIndices, + DeviceSize const * pOffsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetDescriptorBufferOffsetsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsetsEXT.html + template ::type = true> + void setDescriptorBufferOffsetsEXT( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & bufferIndices, + ArrayProxy const & offsets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplersEXT.html + template ::type = true> + void bindDescriptorBufferEmbeddedSamplersEXT( PipelineBindPoint pipelineBindPoint, + PipelineLayout layout, + uint32_t set, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_device_address_commands === + + // wrapper function for command vkCmdBindIndexBuffer3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer3KHR.html + template ::type = true> + void bindIndexBuffer3KHR( BindIndexBuffer3InfoKHR const * pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindIndexBuffer3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer3KHR.html + template ::type = true> + void bindIndexBuffer3KHR( BindIndexBuffer3InfoKHR const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindVertexBuffers3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers3KHR.html + template ::type = true> + void bindVertexBuffers3KHR( uint32_t firstBinding, + uint32_t bindingCount, + BindVertexBuffer3InfoKHR const * pBindingInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindVertexBuffers3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers3KHR.html + template ::type = true> + void bindVertexBuffers3KHR( uint32_t firstBinding, + ArrayProxy const & bindingInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect2KHR.html + template ::type = true> + void drawIndirect2KHR( DrawIndirect2InfoKHR const * pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect2KHR.html + template ::type = true> + void drawIndirect2KHR( DrawIndirect2InfoKHR const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndexedIndirect2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect2KHR.html + template ::type = true> + void drawIndexedIndirect2KHR( DrawIndirect2InfoKHR const * pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawIndexedIndirect2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect2KHR.html + template ::type = true> + void drawIndexedIndirect2KHR( DrawIndirect2InfoKHR const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDispatchIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect2KHR.html + template ::type = true> + void dispatchIndirect2KHR( DispatchIndirect2InfoKHR const * pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDispatchIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect2KHR.html + template ::type = true> + void dispatchIndirect2KHR( DispatchIndirect2InfoKHR const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryKHR.html + template ::type = true> + void copyMemoryKHR( CopyDeviceMemoryInfoKHR const * pCopyMemoryInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryKHR.html + template ::type = true> + void copyMemoryKHR( Optional copyMemoryInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMemoryToImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageKHR.html + template ::type = true> + void copyMemoryToImageKHR( CopyDeviceMemoryImageInfoKHR const * pCopyMemoryInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryToImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageKHR.html + template ::type = true> + void copyMemoryToImageKHR( Optional copyMemoryInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImageToMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToMemoryKHR.html + template ::type = true> + void copyImageToMemoryKHR( CopyDeviceMemoryImageInfoKHR const * pCopyMemoryInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImageToMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToMemoryKHR.html + template ::type = true> + void copyImageToMemoryKHR( Optional copyMemoryInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdUpdateMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateMemoryKHR.html + template ::type = true> + void updateMemoryKHR( DeviceAddressRangeKHR const * pDstRange, + AddressCommandFlagsKHR dstFlags, + DeviceSize dataSize, + void const * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdUpdateMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateMemoryKHR.html + template ::type = true> + void updateMemoryKHR( DeviceAddressRangeKHR const & dstRange, + AddressCommandFlagsKHR dstFlags, + ArrayProxy const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdFillMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillMemoryKHR.html + template ::type = true> + void fillMemoryKHR( DeviceAddressRangeKHR const * pDstRange, + AddressCommandFlagsKHR dstFlags, + uint32_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdFillMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillMemoryKHR.html + template ::type = true> + void fillMemoryKHR( DeviceAddressRangeKHR const & dstRange, + AddressCommandFlagsKHR dstFlags, + uint32_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyQueryPoolResultsToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResultsToMemoryKHR.html + template ::type = true> + void copyQueryPoolResultsToMemoryKHR( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + StridedDeviceAddressRangeKHR const * pDstRange, + AddressCommandFlagsKHR dstFlags, + QueryResultFlags queryResultFlags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyQueryPoolResultsToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResultsToMemoryKHR.html + template ::type = true> + void copyQueryPoolResultsToMemoryKHR( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + StridedDeviceAddressRangeKHR const & dstRange, + AddressCommandFlagsKHR dstFlags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + QueryResultFlags queryResultFlags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndirectCount2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount2KHR.html + template ::type = true> + void drawIndirectCount2KHR( DrawIndirectCount2InfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawIndirectCount2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount2KHR.html + template ::type = true> + void drawIndirectCount2KHR( DrawIndirectCount2InfoKHR const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndexedIndirectCount2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount2KHR.html + template ::type = true> + void drawIndexedIndirectCount2KHR( DrawIndirectCount2InfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawIndexedIndirectCount2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount2KHR.html + template ::type = true> + void drawIndexedIndirectCount2KHR( DrawIndirectCount2InfoKHR const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginConditionalRendering2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRendering2EXT.html + template ::type = true> + void beginConditionalRendering2EXT( ConditionalRenderingBeginInfo2EXT const * pConditionalRenderingBegin, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginConditionalRendering2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRendering2EXT.html + template ::type = true> + void beginConditionalRendering2EXT( ConditionalRenderingBeginInfo2EXT const & conditionalRenderingBegin, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindTransformFeedbackBuffers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffers2EXT.html + template ::type = true> + void bindTransformFeedbackBuffers2EXT( uint32_t firstBinding, + uint32_t bindingCount, + BindTransformFeedbackBuffer2InfoEXT const * pBindingInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindTransformFeedbackBuffers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffers2EXT.html + template ::type = true> + void bindTransformFeedbackBuffers2EXT( uint32_t firstBinding, + ArrayProxy const & bindingInfos VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBeginTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedback2EXT.html + template ::type = true> + void beginTransformFeedback2EXT( uint32_t firstCounterRange, + uint32_t counterRangeCount, + BindTransformFeedbackBuffer2InfoEXT const * pCounterInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedback2EXT.html + template ::type = true> + void beginTransformFeedback2EXT( uint32_t firstCounterRange, + ArrayProxy const & counterInfos VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdEndTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedback2EXT.html + template ::type = true> + void endTransformFeedback2EXT( uint32_t firstCounterRange, + uint32_t counterRangeCount, + BindTransformFeedbackBuffer2InfoEXT const * pCounterInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedback2EXT.html + template ::type = true> + void endTransformFeedback2EXT( uint32_t firstCounterRange, + ArrayProxy const & counterInfos VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawIndirectByteCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCount2EXT.html + template ::type = true> + void drawIndirectByteCount2EXT( uint32_t instanceCount, + uint32_t firstInstance, + BindTransformFeedbackBuffer2InfoEXT const * pCounterInfo, + uint32_t counterOffset, + uint32_t vertexStride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawIndirectByteCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCount2EXT.html + template ::type = true> + void drawIndirectByteCount2EXT( uint32_t instanceCount, + uint32_t firstInstance, + BindTransformFeedbackBuffer2InfoEXT const & counterInfo, + uint32_t counterOffset, + uint32_t vertexStride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawMeshTasksIndirect2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirect2EXT.html + template ::type = true> + void drawMeshTasksIndirect2EXT( DrawIndirect2InfoKHR const * pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawMeshTasksIndirect2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirect2EXT.html + template ::type = true> + void drawMeshTasksIndirect2EXT( DrawIndirect2InfoKHR const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawMeshTasksIndirectCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCount2EXT.html + template ::type = true> + void drawMeshTasksIndirectCount2EXT( DrawIndirectCount2InfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawMeshTasksIndirectCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCount2EXT.html + template ::type = true> + void drawMeshTasksIndirectCount2EXT( DrawIndirectCount2InfoKHR const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteMarkerToMemoryAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMarkerToMemoryAMD.html + template ::type = true> + void writeMarkerToMemoryAMD( MemoryMarkerInfoAMD const * pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWriteMarkerToMemoryAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMarkerToMemoryAMD.html + template ::type = true> + void writeMarkerToMemoryAMD( MemoryMarkerInfoAMD const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_fragment_shading_rate_enums === + + // wrapper function for command vkCmdSetFragmentShadingRateEnumNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateEnumNV.html + template ::type = true> + void setFragmentShadingRateEnumNV( FragmentShadingRateNV shadingRate, + FragmentShadingRateCombinerOpKHR const combinerOps[2], + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_mesh_shader === + + // wrapper function for command vkCmdDrawMeshTasksEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksEXT.html + template ::type = true> + void drawMeshTasksEXT( uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMeshTasksIndirectEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectEXT.html + template ::type = true> + void drawMeshTasksIndirectEXT( Buffer buffer, + DeviceSize offset, + uint32_t drawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMeshTasksIndirectCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountEXT.html + template ::type = true> + void drawMeshTasksIndirectCountEXT( Buffer buffer, + DeviceSize offset, + Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_copy_commands2 === + + // wrapper function for command vkCmdCopyBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2KHR.html + template ::type = true> + void copyBuffer2KHR( CopyBufferInfo2 const * pCopyBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2KHR.html + template ::type = true> + void copyBuffer2KHR( CopyBufferInfo2 const & copyBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2KHR.html + template ::type = true> + void copyImage2KHR( CopyImageInfo2 const * pCopyImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2KHR.html + template ::type = true> + void copyImage2KHR( CopyImageInfo2 const & copyImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyBufferToImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2KHR.html + template ::type = true> + void copyBufferToImage2KHR( CopyBufferToImageInfo2 const * pCopyBufferToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyBufferToImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2KHR.html + template ::type = true> + void copyBufferToImage2KHR( CopyBufferToImageInfo2 const & copyBufferToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyImageToBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2KHR.html + template ::type = true> + void copyImageToBuffer2KHR( CopyImageToBufferInfo2 const * pCopyImageToBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyImageToBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2KHR.html + template ::type = true> + void copyImageToBuffer2KHR( CopyImageToBufferInfo2 const & copyImageToBufferInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBlitImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2KHR.html + template ::type = true> + void blitImage2KHR( BlitImageInfo2 const * pBlitImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBlitImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2KHR.html + template ::type = true> + void blitImage2KHR( BlitImageInfo2 const & blitImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdResolveImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2KHR.html + template ::type = true> + void resolveImage2KHR( ResolveImageInfo2 const * pResolveImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdResolveImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2KHR.html + template ::type = true> + void resolveImage2KHR( ResolveImageInfo2 const & resolveImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_vertex_input_dynamic_state === + + // wrapper function for command vkCmdSetVertexInputEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetVertexInputEXT.html + template ::type = true> + void setVertexInputEXT( uint32_t vertexBindingDescriptionCount, + VertexInputBindingDescription2EXT const * pVertexBindingDescriptions, + uint32_t vertexAttributeDescriptionCount, + VertexInputAttributeDescription2EXT const * pVertexAttributeDescriptions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetVertexInputEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetVertexInputEXT.html + template ::type = true> + void setVertexInputEXT( ArrayProxy const & vertexBindingDescriptions, + ArrayProxy const & vertexAttributeDescriptions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_HUAWEI_subpass_shading === + + // wrapper function for command vkCmdSubpassShadingHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSubpassShadingHUAWEI.html + template ::type = true> + void subpassShadingHUAWEI( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_HUAWEI_invocation_mask === + + // wrapper function for command vkCmdBindInvocationMaskHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindInvocationMaskHUAWEI.html + template ::type = true> + void bindInvocationMaskHUAWEI( ImageView imageView, + ImageLayout imageLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_extended_dynamic_state2 === + + // wrapper function for command vkCmdSetPatchControlPointsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPatchControlPointsEXT.html + template ::type = true> + void setPatchControlPointsEXT( uint32_t patchControlPoints, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRasterizerDiscardEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnableEXT.html + template ::type = true> + void setRasterizerDiscardEnableEXT( Bool32 rasterizerDiscardEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBiasEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnableEXT.html + template ::type = true> + void setDepthBiasEnableEXT( Bool32 depthBiasEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetLogicOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEXT.html + template ::type = true> + void setLogicOpEXT( LogicOp logicOp, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetPrimitiveRestartEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnableEXT.html + template ::type = true> + void setPrimitiveRestartEnableEXT( Bool32 primitiveRestartEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_color_write_enable === + + // wrapper function for command vkCmdSetColorWriteEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteEnableEXT.html + template ::type = true> + void setColorWriteEnableEXT( uint32_t attachmentCount, + Bool32 const * pColorWriteEnables, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetColorWriteEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteEnableEXT.html + template ::type = true> + void setColorWriteEnableEXT( ArrayProxy const & colorWriteEnables, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_ray_tracing_maintenance1 === + + // wrapper function for command vkCmdTraceRaysIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirect2KHR.html + template ::type = true> + void traceRaysIndirect2KHR( DeviceAddress indirectDeviceAddress, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_multi_draw === + + // wrapper function for command vkCmdDrawMultiEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiEXT.html + template ::type = true> + void drawMultiEXT( uint32_t drawCount, + MultiDrawInfoEXT const * pVertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawMultiEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiEXT.html + template ::type = true> + void drawMultiEXT( StridedArrayProxy const & vertexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDrawMultiIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiIndexedEXT.html + template ::type = true> + void drawMultiIndexedEXT( uint32_t drawCount, + MultiDrawIndexedInfoEXT const * pIndexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + uint32_t stride, + int32_t const * pVertexOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDrawMultiIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiIndexedEXT.html + template ::type = true> + void drawMultiIndexedEXT( StridedArrayProxy const & indexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + Optional vertexOffset VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_opacity_micromap === + + // wrapper function for command vkCmdBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildMicromapsEXT.html + template ::type = true> + void buildMicromapsEXT( uint32_t infoCount, + MicromapBuildInfoEXT const * pInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildMicromapsEXT.html + template ::type = true> + void buildMicromapsEXT( ArrayProxy const & infos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapEXT.html + template ::type = true> + void copyMicromapEXT( CopyMicromapInfoEXT const * pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapEXT.html + template ::type = true> + void copyMicromapEXT( CopyMicromapInfoEXT const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMicromapToMemoryEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapToMemoryEXT.html + template ::type = true> + void copyMicromapToMemoryEXT( CopyMicromapToMemoryInfoEXT const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMicromapToMemoryEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapToMemoryEXT.html + template ::type = true> + void copyMicromapToMemoryEXT( CopyMicromapToMemoryInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMemoryToMicromapEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToMicromapEXT.html + template ::type = true> + void copyMemoryToMicromapEXT( CopyMemoryToMicromapInfoEXT const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryToMicromapEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToMicromapEXT.html + template ::type = true> + void copyMemoryToMicromapEXT( CopyMemoryToMicromapInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMicromapsPropertiesEXT.html + template ::type = true> + void writeMicromapsPropertiesEXT( uint32_t micromapCount, + MicromapEXT const * pMicromaps, + QueryType queryType, + QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMicromapsPropertiesEXT.html + template ::type = true> + void writeMicromapsPropertiesEXT( ArrayProxy const & micromaps, + QueryType queryType, + QueryPool queryPool, + uint32_t firstQuery, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_HUAWEI_cluster_culling_shader === + + // wrapper function for command vkCmdDrawClusterHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterHUAWEI.html + template ::type = true> + void drawClusterHUAWEI( uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawClusterIndirectHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterIndirectHUAWEI.html + template ::type = true> + void drawClusterIndirectHUAWEI( Buffer buffer, DeviceSize offset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_copy_memory_indirect === + + // wrapper function for command vkCmdCopyMemoryIndirectNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectNV.html + template ::type = true> + void copyMemoryIndirectNV( DeviceAddress copyBufferAddress, + uint32_t copyCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyMemoryToImageIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectNV.html + template ::type = true> + void copyMemoryToImageIndirectNV( DeviceAddress copyBufferAddress, + uint32_t copyCount, + uint32_t stride, + Image dstImage, + ImageLayout dstImageLayout, + ImageSubresourceLayers const * pImageSubresources, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryToImageIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectNV.html + template ::type = true> + void copyMemoryToImageIndirectNV( DeviceAddress copyBufferAddress, + uint32_t stride, + Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & imageSubresources, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_memory_decompression === + + // wrapper function for command vkCmdDecompressMemoryNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryNV.html + template ::type = true> + void decompressMemoryNV( uint32_t decompressRegionCount, + DecompressMemoryRegionNV const * pDecompressMemoryRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDecompressMemoryNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryNV.html + template ::type = true> + void decompressMemoryNV( ArrayProxy const & decompressMemoryRegions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDecompressMemoryIndirectCountNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountNV.html + template ::type = true> + void decompressMemoryIndirectCountNV( DeviceAddress indirectCommandsAddress, + DeviceAddress indirectCommandsCountAddress, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_generated_commands_compute === + + // wrapper function for command vkCmdUpdatePipelineIndirectBufferNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdatePipelineIndirectBufferNV.html + template ::type = true> + void updatePipelineIndirectBufferNV( PipelineBindPoint pipelineBindPoint, + Pipeline pipeline, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_extended_dynamic_state3 === + + // wrapper function for command vkCmdSetDepthClampEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampEnableEXT.html + template ::type = true> + void setDepthClampEnableEXT( Bool32 depthClampEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetPolygonModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPolygonModeEXT.html + template ::type = true> + void setPolygonModeEXT( PolygonMode polygonMode, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRasterizationSamplesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationSamplesEXT.html + template ::type = true> + void setRasterizationSamplesEXT( SampleCountFlagBits rasterizationSamples, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetSampleMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleMaskEXT.html + template ::type = true> + void setSampleMaskEXT( SampleCountFlagBits samples, + SampleMask const * pSampleMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetSampleMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleMaskEXT.html + template ::type = true> + void setSampleMaskEXT( SampleCountFlagBits samples, + ArrayProxy const & sampleMask VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetAlphaToCoverageEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToCoverageEnableEXT.html + template ::type = true> + void setAlphaToCoverageEnableEXT( Bool32 alphaToCoverageEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetAlphaToOneEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToOneEnableEXT.html + template ::type = true> + void setAlphaToOneEnableEXT( Bool32 alphaToOneEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetLogicOpEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEnableEXT.html + template ::type = true> + void setLogicOpEnableEXT( Bool32 logicOpEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetColorBlendEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEnableEXT.html + template ::type = true> + void setColorBlendEnableEXT( uint32_t firstAttachment, + uint32_t attachmentCount, + Bool32 const * pColorBlendEnables, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetColorBlendEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEnableEXT.html + template ::type = true> + void setColorBlendEnableEXT( uint32_t firstAttachment, + ArrayProxy const & colorBlendEnables, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetColorBlendEquationEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEquationEXT.html + template ::type = true> + void setColorBlendEquationEXT( uint32_t firstAttachment, + uint32_t attachmentCount, + ColorBlendEquationEXT const * pColorBlendEquations, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetColorBlendEquationEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEquationEXT.html + template ::type = true> + void setColorBlendEquationEXT( uint32_t firstAttachment, + ArrayProxy const & colorBlendEquations, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetColorWriteMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteMaskEXT.html + template ::type = true> + void setColorWriteMaskEXT( uint32_t firstAttachment, + uint32_t attachmentCount, + ColorComponentFlags const * pColorWriteMasks, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetColorWriteMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteMaskEXT.html + template ::type = true> + void setColorWriteMaskEXT( uint32_t firstAttachment, + ArrayProxy const & colorWriteMasks, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetTessellationDomainOriginEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetTessellationDomainOriginEXT.html + template ::type = true> + void setTessellationDomainOriginEXT( TessellationDomainOrigin domainOrigin, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRasterizationStreamEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationStreamEXT.html + template ::type = true> + void setRasterizationStreamEXT( uint32_t rasterizationStream, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetConservativeRasterizationModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetConservativeRasterizationModeEXT.html + template ::type = true> + void setConservativeRasterizationModeEXT( ConservativeRasterizationModeEXT conservativeRasterizationMode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetExtraPrimitiveOverestimationSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExtraPrimitiveOverestimationSizeEXT.html + template ::type = true> + void setExtraPrimitiveOverestimationSizeEXT( float extraPrimitiveOverestimationSize, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthClipEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipEnableEXT.html + template ::type = true> + void setDepthClipEnableEXT( Bool32 depthClipEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetSampleLocationsEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEnableEXT.html + template ::type = true> + void setSampleLocationsEnableEXT( Bool32 sampleLocationsEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetColorBlendAdvancedEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendAdvancedEXT.html + template ::type = true> + void setColorBlendAdvancedEXT( uint32_t firstAttachment, + uint32_t attachmentCount, + ColorBlendAdvancedEXT const * pColorBlendAdvanced, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetColorBlendAdvancedEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendAdvancedEXT.html + template ::type = true> + void setColorBlendAdvancedEXT( uint32_t firstAttachment, + ArrayProxy const & colorBlendAdvanced, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetProvokingVertexModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetProvokingVertexModeEXT.html + template ::type = true> + void setProvokingVertexModeEXT( ProvokingVertexModeEXT provokingVertexMode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetLineRasterizationModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineRasterizationModeEXT.html + template ::type = true> + void setLineRasterizationModeEXT( LineRasterizationModeEXT lineRasterizationMode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetLineStippleEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEnableEXT.html + template ::type = true> + void setLineStippleEnableEXT( Bool32 stippledLineEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthClipNegativeOneToOneEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipNegativeOneToOneEXT.html + template ::type = true> + void setDepthClipNegativeOneToOneEXT( Bool32 negativeOneToOne, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewportWScalingEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingEnableNV.html + template ::type = true> + void setViewportWScalingEnableNV( Bool32 viewportWScalingEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewportSwizzleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportSwizzleNV.html + template ::type = true> + void setViewportSwizzleNV( uint32_t firstViewport, + uint32_t viewportCount, + ViewportSwizzleNV const * pViewportSwizzles, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetViewportSwizzleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportSwizzleNV.html + template ::type = true> + void setViewportSwizzleNV( uint32_t firstViewport, + ArrayProxy const & viewportSwizzles, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetCoverageToColorEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorEnableNV.html + template ::type = true> + void setCoverageToColorEnableNV( Bool32 coverageToColorEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageToColorLocationNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorLocationNV.html + template ::type = true> + void setCoverageToColorLocationNV( uint32_t coverageToColorLocation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageModulationModeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationModeNV.html + template ::type = true> + void setCoverageModulationModeNV( CoverageModulationModeNV coverageModulationMode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageModulationTableEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableEnableNV.html + template ::type = true> + void setCoverageModulationTableEnableNV( Bool32 coverageModulationTableEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageModulationTableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableNV.html + template ::type = true> + void setCoverageModulationTableNV( uint32_t coverageModulationTableCount, + float const * pCoverageModulationTable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetCoverageModulationTableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableNV.html + template ::type = true> + void setCoverageModulationTableNV( ArrayProxy const & coverageModulationTable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetShadingRateImageEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetShadingRateImageEnableNV.html + template ::type = true> + void setShadingRateImageEnableNV( Bool32 shadingRateImageEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRepresentativeFragmentTestEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRepresentativeFragmentTestEnableNV.html + template ::type = true> + void setRepresentativeFragmentTestEnableNV( Bool32 representativeFragmentTestEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageReductionModeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageReductionModeNV.html + template ::type = true> + void setCoverageReductionModeNV( CoverageReductionModeNV coverageReductionMode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_ARM_tensors === + + // wrapper function for command vkCmdCopyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyTensorARM.html + template ::type = true> + void copyTensorARM( CopyTensorInfoARM const * pCopyTensorInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyTensorARM.html + template ::type = true> + void copyTensorARM( CopyTensorInfoARM const & copyTensorInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_optical_flow === + + // wrapper function for command vkCmdOpticalFlowExecuteNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdOpticalFlowExecuteNV.html + template ::type = true> + void opticalFlowExecuteNV( OpticalFlowSessionNV session, + OpticalFlowExecuteInfoNV const * pExecuteInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdOpticalFlowExecuteNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdOpticalFlowExecuteNV.html + template ::type = true> + void opticalFlowExecuteNV( OpticalFlowSessionNV session, + OpticalFlowExecuteInfoNV const & executeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_maintenance5 === + + // wrapper function for command vkCmdBindIndexBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2KHR.html + template ::type = true> + void bindIndexBuffer2KHR( Buffer buffer, + DeviceSize offset, + DeviceSize size, + IndexType indexType, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_shader_object === + + // wrapper function for command vkCmdBindShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadersEXT.html + template ::type = true> + void bindShadersEXT( uint32_t stageCount, + ShaderStageFlagBits const * pStages, + ShaderEXT const * pShaders, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadersEXT.html + template ::type = true> + void bindShadersEXT( ArrayProxy const & stages, + ArrayProxy const & shaders, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDepthClampRangeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampRangeEXT.html + template ::type = true> + void setDepthClampRangeEXT( DepthClampModeEXT depthClampMode, + DepthClampRangeEXT const * pDepthClampRange, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetDepthClampRangeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampRangeEXT.html + template ::type = true> + void setDepthClampRangeEXT( DepthClampModeEXT depthClampMode, + Optional depthClampRange VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_cooperative_vector === + + // wrapper function for command vkCmdConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdConvertCooperativeVectorMatrixNV.html + template ::type = true> + void convertCooperativeVectorMatrixNV( uint32_t infoCount, + ConvertCooperativeVectorMatrixInfoNV const * pInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdConvertCooperativeVectorMatrixNV.html + template ::type = true> + void convertCooperativeVectorMatrixNV( ArrayProxy const & infos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_ARM_data_graph === + + // wrapper function for command vkCmdDispatchDataGraphARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchDataGraphARM.html + template ::type = true> + void dispatchDataGraphARM( DataGraphPipelineSessionARM session, + DataGraphPipelineDispatchInfoARM const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDispatchDataGraphARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchDataGraphARM.html + template ::type = true> + void dispatchDataGraphARM( DataGraphPipelineSessionARM session, + Optional info VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + + // wrapper function for command vkCmdSetAttachmentFeedbackLoopEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAttachmentFeedbackLoopEnableEXT.html + template ::type = true> + void setAttachmentFeedbackLoopEnableEXT( ImageAspectFlags aspectMask, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_line_rasterization === + + // wrapper function for command vkCmdSetLineStippleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleKHR.html + template ::type = true> + void setLineStippleKHR( uint32_t lineStippleFactor, + uint16_t lineStipplePattern, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_maintenance6 === + + // wrapper function for command vkCmdBindDescriptorSets2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2KHR.html + template ::type = true> + void bindDescriptorSets2KHR( BindDescriptorSetsInfo const * pBindDescriptorSetsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindDescriptorSets2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2KHR.html + template ::type = true> + void bindDescriptorSets2KHR( BindDescriptorSetsInfo const & bindDescriptorSetsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushConstants2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2KHR.html + template ::type = true> + void pushConstants2KHR( PushConstantsInfo const * pPushConstantsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushConstants2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2KHR.html + template ::type = true> + void pushConstants2KHR( PushConstantsInfo const & pushConstantsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSet2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2KHR.html + template ::type = true> + void pushDescriptorSet2KHR( PushDescriptorSetInfo const * pPushDescriptorSetInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSet2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2KHR.html + template ::type = true> + void pushDescriptorSet2KHR( PushDescriptorSetInfo const & pushDescriptorSetInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2KHR.html + template ::type = true> + void pushDescriptorSetWithTemplate2KHR( PushDescriptorSetWithTemplateInfo const * pPushDescriptorSetWithTemplateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2KHR.html + template ::type = true> + void pushDescriptorSetWithTemplate2KHR( PushDescriptorSetWithTemplateInfo const & pushDescriptorSetWithTemplateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdSetDescriptorBufferOffsets2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsets2EXT.html + template ::type = true> + void setDescriptorBufferOffsets2EXT( SetDescriptorBufferOffsetsInfoEXT const * pSetDescriptorBufferOffsetsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetDescriptorBufferOffsets2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsets2EXT.html + template ::type = true> + void setDescriptorBufferOffsets2EXT( SetDescriptorBufferOffsetsInfoEXT const & setDescriptorBufferOffsetsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplers2EXT.html + template ::type = true> + void bindDescriptorBufferEmbeddedSamplers2EXT( BindDescriptorBufferEmbeddedSamplersInfoEXT const * pBindDescriptorBufferEmbeddedSamplersInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplers2EXT.html + template ::type = true> + void bindDescriptorBufferEmbeddedSamplers2EXT( BindDescriptorBufferEmbeddedSamplersInfoEXT const & bindDescriptorBufferEmbeddedSamplersInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_QCOM_tile_memory_heap === + + // wrapper function for command vkCmdBindTileMemoryQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTileMemoryQCOM.html + template ::type = true> + void bindTileMemoryQCOM( TileMemoryBindInfoQCOM const * pTileMemoryBindInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBindTileMemoryQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTileMemoryQCOM.html + template ::type = true> + void bindTileMemoryQCOM( Optional tileMemoryBindInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_copy_memory_indirect === + + // wrapper function for command vkCmdCopyMemoryIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectKHR.html + template ::type = true> + void copyMemoryIndirectKHR( CopyMemoryIndirectInfoKHR const * pCopyMemoryIndirectInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectKHR.html + template ::type = true> + void copyMemoryIndirectKHR( CopyMemoryIndirectInfoKHR const & copyMemoryIndirectInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdCopyMemoryToImageIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectKHR.html + template ::type = true> + void copyMemoryToImageIndirectKHR( CopyMemoryToImageIndirectInfoKHR const * pCopyMemoryToImageIndirectInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdCopyMemoryToImageIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectKHR.html + template ::type = true> + void copyMemoryToImageIndirectKHR( CopyMemoryToImageIndirectInfoKHR const & copyMemoryToImageIndirectInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_memory_decompression === + + // wrapper function for command vkCmdDecompressMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryEXT.html + template ::type = true> + void decompressMemoryEXT( DecompressMemoryInfoEXT const * pDecompressMemoryInfoEXT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdDecompressMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryEXT.html + template ::type = true> + void decompressMemoryEXT( DecompressMemoryInfoEXT const & decompressMemoryInfoEXT, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdDecompressMemoryIndirectCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountEXT.html + template ::type = true> + void decompressMemoryIndirectCountEXT( MemoryDecompressionMethodFlagsEXT decompressionMethod, + DeviceAddress indirectCommandsAddress, + DeviceAddress indirectCommandsCountAddress, + uint32_t maxDecompressionCount, + uint32_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_cluster_acceleration_structure === + + // wrapper function for command vkCmdBuildClusterAccelerationStructureIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildClusterAccelerationStructureIndirectNV.html + template ::type = true> + void buildClusterAccelerationStructureIndirectNV( ClusterAccelerationStructureCommandsInfoNV const * pCommandInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildClusterAccelerationStructureIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildClusterAccelerationStructureIndirectNV.html + template ::type = true> + void buildClusterAccelerationStructureIndirectNV( ClusterAccelerationStructureCommandsInfoNV const & commandInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_partitioned_acceleration_structure === + + // wrapper function for command vkCmdBuildPartitionedAccelerationStructuresNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildPartitionedAccelerationStructuresNV.html + template ::type = true> + void buildPartitionedAccelerationStructuresNV( BuildPartitionedAccelerationStructureInfoNV const * pBuildInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBuildPartitionedAccelerationStructuresNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildPartitionedAccelerationStructuresNV.html + template ::type = true> + void buildPartitionedAccelerationStructuresNV( BuildPartitionedAccelerationStructureInfoNV const & buildInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_device_generated_commands === + + // wrapper function for command vkCmdPreprocessGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsEXT.html + template ::type = true> + void preprocessGeneratedCommandsEXT( GeneratedCommandsInfoEXT const * pGeneratedCommandsInfo, + CommandBuffer stateCommandBuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdPreprocessGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsEXT.html + template ::type = true> + void preprocessGeneratedCommandsEXT( GeneratedCommandsInfoEXT const & generatedCommandsInfo, + CommandBuffer stateCommandBuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCmdExecuteGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsEXT.html + template ::type = true> + void executeGeneratedCommandsEXT( Bool32 isPreprocessed, + GeneratedCommandsInfoEXT const * pGeneratedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdExecuteGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsEXT.html + template ::type = true> + void executeGeneratedCommandsEXT( Bool32 isPreprocessed, + GeneratedCommandsInfoEXT const & generatedCommandsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_ARM_shader_instrumentation === + + // wrapper function for command vkCmdBeginShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginShaderInstrumentationARM.html + template ::type = true> + void beginShaderInstrumentationARM( ShaderInstrumentationARM instrumentation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndShaderInstrumentationARM.html + template ::type = true> + void endShaderInstrumentationARM( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_fragment_density_map_offset === + + // wrapper function for command vkCmdEndRendering2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2EXT.html + template ::type = true> + void endRendering2EXT( RenderingEndInfoKHR const * pRenderingEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndRendering2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2EXT.html + template ::type = true> + void endRendering2EXT( Optional renderingEndInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_custom_resolve === + + // wrapper function for command vkCmdBeginCustomResolveEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginCustomResolveEXT.html + template ::type = true> + void beginCustomResolveEXT( BeginCustomResolveInfoEXT const * pBeginCustomResolveInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdBeginCustomResolveEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginCustomResolveEXT.html + template ::type = true> + void beginCustomResolveEXT( Optional beginCustomResolveInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_maintenance10 === + + // wrapper function for command vkCmdEndRendering2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2KHR.html + template ::type = true> + void endRendering2KHR( RenderingEndInfoKHR const * pRenderingEndInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdEndRendering2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2KHR.html + template ::type = true> + void endRendering2KHR( Optional renderingEndInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_compute_occupancy_priority === + + // wrapper function for command vkCmdSetComputeOccupancyPriorityNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetComputeOccupancyPriorityNV.html + template ::type = true> + void setComputeOccupancyPriorityNV( ComputeOccupancyPriorityParametersNV const * pParameters, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCmdSetComputeOccupancyPriorityNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetComputeOccupancyPriorityNV.html + template ::type = true> + void setComputeOccupancyPriorityNV( ComputeOccupancyPriorityParametersNV const & parameters, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + operator VkCommandBuffer() const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer == VK_NULL_HANDLE; + } + + private: + VkCommandBuffer m_commandBuffer = {}; + }; + + template <> + struct CppType + { + using Type = CommandBuffer; + }; + + template <> + struct CppType + { + using Type = CommandBuffer; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = CommandBuffer; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDeviceMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemory.html + class DeviceMemory + { + public: + using CType = VkDeviceMemory; + using NativeType = VkDeviceMemory; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDeviceMemory; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDeviceMemory; + + public: + DeviceMemory() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DeviceMemory( DeviceMemory const & rhs ) = default; + DeviceMemory & operator=( DeviceMemory const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DeviceMemory( DeviceMemory && rhs ) = default; + DeviceMemory & operator=( DeviceMemory && rhs ) = default; +#else + DeviceMemory( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT : m_deviceMemory( exchange( rhs.m_deviceMemory, {} ) ) {} + + DeviceMemory & operator=( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT + { + m_deviceMemory = exchange( rhs.m_deviceMemory, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DeviceMemory( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory ) VULKAN_HPP_NOEXCEPT : m_deviceMemory( deviceMemory ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DeviceMemory & operator=( VkDeviceMemory deviceMemory ) VULKAN_HPP_NOEXCEPT + { + m_deviceMemory = deviceMemory; + return *this; + } +#endif + + DeviceMemory & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_deviceMemory = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory == VK_NULL_HANDLE; + } + + private: + VkDeviceMemory m_deviceMemory = {}; + }; + + template <> + struct CppType + { + using Type = DeviceMemory; + }; + + template <> + struct CppType + { + using Type = DeviceMemory; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DeviceMemory; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionKHR.html + class VideoSessionKHR + { + public: + using CType = VkVideoSessionKHR; + using NativeType = VkVideoSessionKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eVideoSessionKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + VideoSessionKHR() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + VideoSessionKHR( VideoSessionKHR const & rhs ) = default; + VideoSessionKHR & operator=( VideoSessionKHR const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + VideoSessionKHR( VideoSessionKHR && rhs ) = default; + VideoSessionKHR & operator=( VideoSessionKHR && rhs ) = default; +#else + VideoSessionKHR( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT : m_videoSessionKHR( exchange( rhs.m_videoSessionKHR, {} ) ) {} + + VideoSessionKHR & operator=( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + m_videoSessionKHR = exchange( rhs.m_videoSessionKHR, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR VideoSessionKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT VideoSessionKHR( VkVideoSessionKHR videoSessionKHR ) VULKAN_HPP_NOEXCEPT : m_videoSessionKHR( videoSessionKHR ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + VideoSessionKHR & operator=( VkVideoSessionKHR videoSessionKHR ) VULKAN_HPP_NOEXCEPT + { + m_videoSessionKHR = videoSessionKHR; + return *this; + } +#endif + + VideoSessionKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_videoSessionKHR = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkVideoSessionKHR() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR == VK_NULL_HANDLE; + } + + private: + VkVideoSessionKHR m_videoSessionKHR = {}; + }; + + template <> + struct CppType + { + using Type = VideoSessionKHR; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = VideoSessionKHR; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDeferredOperationKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeferredOperationKHR.html + class DeferredOperationKHR + { + public: + using CType = VkDeferredOperationKHR; + using NativeType = VkDeferredOperationKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDeferredOperationKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + DeferredOperationKHR() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DeferredOperationKHR( DeferredOperationKHR const & rhs ) = default; + DeferredOperationKHR & operator=( DeferredOperationKHR const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DeferredOperationKHR( DeferredOperationKHR && rhs ) = default; + DeferredOperationKHR & operator=( DeferredOperationKHR && rhs ) = default; +#else + DeferredOperationKHR( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT : m_deferredOperationKHR( exchange( rhs.m_deferredOperationKHR, {} ) ) {} + + DeferredOperationKHR & operator=( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + m_deferredOperationKHR = exchange( rhs.m_deferredOperationKHR, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DeferredOperationKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DeferredOperationKHR( VkDeferredOperationKHR deferredOperationKHR ) VULKAN_HPP_NOEXCEPT + : m_deferredOperationKHR( deferredOperationKHR ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DeferredOperationKHR & operator=( VkDeferredOperationKHR deferredOperationKHR ) VULKAN_HPP_NOEXCEPT + { + m_deferredOperationKHR = deferredOperationKHR; + return *this; + } +#endif + + DeferredOperationKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_deferredOperationKHR = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeferredOperationKHR() const VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR == VK_NULL_HANDLE; + } + + private: + VkDeferredOperationKHR m_deferredOperationKHR = {}; + }; + + template <> + struct CppType + { + using Type = DeferredOperationKHR; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DeferredOperationKHR; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkBufferCollectionFUCHSIA, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCollectionFUCHSIA.html +#if defined( VK_USE_PLATFORM_FUCHSIA ) + class BufferCollectionFUCHSIA + { + public: + using CType = VkBufferCollectionFUCHSIA; + using NativeType = VkBufferCollectionFUCHSIA; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBufferCollectionFUCHSIA; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA; + + public: + BufferCollectionFUCHSIA() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + BufferCollectionFUCHSIA( BufferCollectionFUCHSIA const & rhs ) = default; + BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA const & rhs ) = default; + +# if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + BufferCollectionFUCHSIA( BufferCollectionFUCHSIA && rhs ) = default; + BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA && rhs ) = default; +# else + BufferCollectionFUCHSIA( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT : m_bufferCollectionFUCHSIA( exchange( rhs.m_bufferCollectionFUCHSIA, {} ) ) + { + } + + BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT + { + m_bufferCollectionFUCHSIA = exchange( rhs.m_bufferCollectionFUCHSIA, {} ); + return *this; + } +# endif + + VULKAN_HPP_CONSTEXPR BufferCollectionFUCHSIA( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT BufferCollectionFUCHSIA( VkBufferCollectionFUCHSIA bufferCollectionFUCHSIA ) VULKAN_HPP_NOEXCEPT + : m_bufferCollectionFUCHSIA( bufferCollectionFUCHSIA ) + { + } + +# if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + BufferCollectionFUCHSIA & operator=( VkBufferCollectionFUCHSIA bufferCollectionFUCHSIA ) VULKAN_HPP_NOEXCEPT + { + m_bufferCollectionFUCHSIA = bufferCollectionFUCHSIA; + return *this; + } +# endif + + BufferCollectionFUCHSIA & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_bufferCollectionFUCHSIA = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferCollectionFUCHSIA() const VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA == VK_NULL_HANDLE; + } + + private: + VkBufferCollectionFUCHSIA m_bufferCollectionFUCHSIA = {}; + }; + + template <> + struct CppType + { + using Type = BufferCollectionFUCHSIA; + }; + + template <> + struct CppType + { + using Type = BufferCollectionFUCHSIA; + }; + +# if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = BufferCollectionFUCHSIA; + }; +# endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + // wrapper class for handle VkBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferView.html + class BufferView + { + public: + using CType = VkBufferView; + using NativeType = VkBufferView; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBufferView; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eBufferView; + + public: + BufferView() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + BufferView( BufferView const & rhs ) = default; + BufferView & operator=( BufferView const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + BufferView( BufferView && rhs ) = default; + BufferView & operator=( BufferView && rhs ) = default; +#else + BufferView( BufferView && rhs ) VULKAN_HPP_NOEXCEPT : m_bufferView( exchange( rhs.m_bufferView, {} ) ) {} + + BufferView & operator=( BufferView && rhs ) VULKAN_HPP_NOEXCEPT + { + m_bufferView = exchange( rhs.m_bufferView, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR BufferView( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView ) VULKAN_HPP_NOEXCEPT : m_bufferView( bufferView ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + BufferView & operator=( VkBufferView bufferView ) VULKAN_HPP_NOEXCEPT + { + m_bufferView = bufferView; + return *this; + } +#endif + + BufferView & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_bufferView = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const VULKAN_HPP_NOEXCEPT + { + return m_bufferView; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_bufferView != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_bufferView == VK_NULL_HANDLE; + } + + private: + VkBufferView m_bufferView = {}; + }; + + template <> + struct CppType + { + using Type = BufferView; + }; + + template <> + struct CppType + { + using Type = BufferView; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = BufferView; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPool.html + class CommandPool + { + public: + using CType = VkCommandPool; + using NativeType = VkCommandPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCommandPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCommandPool; + + public: + CommandPool() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + CommandPool( CommandPool const & rhs ) = default; + CommandPool & operator=( CommandPool const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + CommandPool( CommandPool && rhs ) = default; + CommandPool & operator=( CommandPool && rhs ) = default; +#else + CommandPool( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT : m_commandPool( exchange( rhs.m_commandPool, {} ) ) {} + + CommandPool & operator=( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT + { + m_commandPool = exchange( rhs.m_commandPool, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR CommandPool( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool ) VULKAN_HPP_NOEXCEPT : m_commandPool( commandPool ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + CommandPool & operator=( VkCommandPool commandPool ) VULKAN_HPP_NOEXCEPT + { + m_commandPool = commandPool; + return *this; + } +#endif + + CommandPool & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_commandPool = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const VULKAN_HPP_NOEXCEPT + { + return m_commandPool; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_commandPool != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_commandPool == VK_NULL_HANDLE; + } + + private: + VkCommandPool m_commandPool = {}; + }; + + template <> + struct CppType + { + using Type = CommandPool; + }; + + template <> + struct CppType + { + using Type = CommandPool; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = CommandPool; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCache.html + class PipelineCache + { + public: + using CType = VkPipelineCache; + using NativeType = VkPipelineCache; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineCache; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePipelineCache; + + public: + PipelineCache() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + PipelineCache( PipelineCache const & rhs ) = default; + PipelineCache & operator=( PipelineCache const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + PipelineCache( PipelineCache && rhs ) = default; + PipelineCache & operator=( PipelineCache && rhs ) = default; +#else + PipelineCache( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT : m_pipelineCache( exchange( rhs.m_pipelineCache, {} ) ) {} + + PipelineCache & operator=( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT + { + m_pipelineCache = exchange( rhs.m_pipelineCache, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR PipelineCache( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache ) VULKAN_HPP_NOEXCEPT : m_pipelineCache( pipelineCache ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + PipelineCache & operator=( VkPipelineCache pipelineCache ) VULKAN_HPP_NOEXCEPT + { + m_pipelineCache = pipelineCache; + return *this; + } +#endif + + PipelineCache & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_pipelineCache = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache == VK_NULL_HANDLE; + } + + private: + VkPipelineCache m_pipelineCache = {}; + }; + + template <> + struct CppType + { + using Type = PipelineCache; + }; + + template <> + struct CppType + { + using Type = PipelineCache; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = PipelineCache; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuFunctionNVX.html + class CuFunctionNVX + { + public: + using CType = VkCuFunctionNVX; + using NativeType = VkCuFunctionNVX; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCuFunctionNVX; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCuFunctionNVX; + + public: + CuFunctionNVX() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + CuFunctionNVX( CuFunctionNVX const & rhs ) = default; + CuFunctionNVX & operator=( CuFunctionNVX const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + CuFunctionNVX( CuFunctionNVX && rhs ) = default; + CuFunctionNVX & operator=( CuFunctionNVX && rhs ) = default; +#else + CuFunctionNVX( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT : m_cuFunctionNVX( exchange( rhs.m_cuFunctionNVX, {} ) ) {} + + CuFunctionNVX & operator=( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT + { + m_cuFunctionNVX = exchange( rhs.m_cuFunctionNVX, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR CuFunctionNVX( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT CuFunctionNVX( VkCuFunctionNVX cuFunctionNVX ) VULKAN_HPP_NOEXCEPT : m_cuFunctionNVX( cuFunctionNVX ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + CuFunctionNVX & operator=( VkCuFunctionNVX cuFunctionNVX ) VULKAN_HPP_NOEXCEPT + { + m_cuFunctionNVX = cuFunctionNVX; + return *this; + } +#endif + + CuFunctionNVX & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_cuFunctionNVX = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCuFunctionNVX() const VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX == VK_NULL_HANDLE; + } + + private: + VkCuFunctionNVX m_cuFunctionNVX = {}; + }; + + template <> + struct CppType + { + using Type = CuFunctionNVX; + }; + + template <> + struct CppType + { + using Type = CuFunctionNVX; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = CuFunctionNVX; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuModuleNVX.html + class CuModuleNVX + { + public: + using CType = VkCuModuleNVX; + using NativeType = VkCuModuleNVX; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCuModuleNVX; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCuModuleNVX; + + public: + CuModuleNVX() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + CuModuleNVX( CuModuleNVX const & rhs ) = default; + CuModuleNVX & operator=( CuModuleNVX const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + CuModuleNVX( CuModuleNVX && rhs ) = default; + CuModuleNVX & operator=( CuModuleNVX && rhs ) = default; +#else + CuModuleNVX( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT : m_cuModuleNVX( exchange( rhs.m_cuModuleNVX, {} ) ) {} + + CuModuleNVX & operator=( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT + { + m_cuModuleNVX = exchange( rhs.m_cuModuleNVX, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR CuModuleNVX( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT CuModuleNVX( VkCuModuleNVX cuModuleNVX ) VULKAN_HPP_NOEXCEPT : m_cuModuleNVX( cuModuleNVX ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + CuModuleNVX & operator=( VkCuModuleNVX cuModuleNVX ) VULKAN_HPP_NOEXCEPT + { + m_cuModuleNVX = cuModuleNVX; + return *this; + } +#endif + + CuModuleNVX & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_cuModuleNVX = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCuModuleNVX() const VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX == VK_NULL_HANDLE; + } + + private: + VkCuModuleNVX m_cuModuleNVX = {}; + }; + + template <> + struct CppType + { + using Type = CuModuleNVX; + }; + + template <> + struct CppType + { + using Type = CuModuleNVX; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = CuModuleNVX; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaFunctionNV.html +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + class CudaFunctionNV + { + public: + using CType = VkCudaFunctionNV; + using NativeType = VkCudaFunctionNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCudaFunctionNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCudaFunctionNV; + + public: + CudaFunctionNV() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + CudaFunctionNV( CudaFunctionNV const & rhs ) = default; + CudaFunctionNV & operator=( CudaFunctionNV const & rhs ) = default; + +# if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + CudaFunctionNV( CudaFunctionNV && rhs ) = default; + CudaFunctionNV & operator=( CudaFunctionNV && rhs ) = default; +# else + CudaFunctionNV( CudaFunctionNV && rhs ) VULKAN_HPP_NOEXCEPT : m_cudaFunctionNV( exchange( rhs.m_cudaFunctionNV, {} ) ) {} + + CudaFunctionNV & operator=( CudaFunctionNV && rhs ) VULKAN_HPP_NOEXCEPT + { + m_cudaFunctionNV = exchange( rhs.m_cudaFunctionNV, {} ); + return *this; + } +# endif + + VULKAN_HPP_CONSTEXPR CudaFunctionNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT CudaFunctionNV( VkCudaFunctionNV cudaFunctionNV ) VULKAN_HPP_NOEXCEPT : m_cudaFunctionNV( cudaFunctionNV ) {} + +# if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + CudaFunctionNV & operator=( VkCudaFunctionNV cudaFunctionNV ) VULKAN_HPP_NOEXCEPT + { + m_cudaFunctionNV = cudaFunctionNV; + return *this; + } +# endif + + CudaFunctionNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_cudaFunctionNV = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCudaFunctionNV() const VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV == VK_NULL_HANDLE; + } + + private: + VkCudaFunctionNV m_cudaFunctionNV = {}; + }; + + template <> + struct CppType + { + using Type = CudaFunctionNV; + }; + + template <> + struct CppType + { + using Type = CudaFunctionNV; + }; + +# if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = CudaFunctionNV; + }; +# endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper class for handle VkCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaModuleNV.html +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + class CudaModuleNV + { + public: + using CType = VkCudaModuleNV; + using NativeType = VkCudaModuleNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCudaModuleNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCudaModuleNV; + + public: + CudaModuleNV() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + CudaModuleNV( CudaModuleNV const & rhs ) = default; + CudaModuleNV & operator=( CudaModuleNV const & rhs ) = default; + +# if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + CudaModuleNV( CudaModuleNV && rhs ) = default; + CudaModuleNV & operator=( CudaModuleNV && rhs ) = default; +# else + CudaModuleNV( CudaModuleNV && rhs ) VULKAN_HPP_NOEXCEPT : m_cudaModuleNV( exchange( rhs.m_cudaModuleNV, {} ) ) {} + + CudaModuleNV & operator=( CudaModuleNV && rhs ) VULKAN_HPP_NOEXCEPT + { + m_cudaModuleNV = exchange( rhs.m_cudaModuleNV, {} ); + return *this; + } +# endif + + VULKAN_HPP_CONSTEXPR CudaModuleNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT CudaModuleNV( VkCudaModuleNV cudaModuleNV ) VULKAN_HPP_NOEXCEPT : m_cudaModuleNV( cudaModuleNV ) {} + +# if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + CudaModuleNV & operator=( VkCudaModuleNV cudaModuleNV ) VULKAN_HPP_NOEXCEPT + { + m_cudaModuleNV = cudaModuleNV; + return *this; + } +# endif + + CudaModuleNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_cudaModuleNV = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCudaModuleNV() const VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV == VK_NULL_HANDLE; + } + + private: + VkCudaModuleNV m_cudaModuleNV = {}; + }; + + template <> + struct CppType + { + using Type = CudaModuleNV; + }; + + template <> + struct CppType + { + using Type = CudaModuleNV; + }; + +# if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = CudaModuleNV; + }; +# endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper class for handle VkDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPool.html + class DescriptorPool + { + public: + using CType = VkDescriptorPool; + using NativeType = VkDescriptorPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorPool; + + public: + DescriptorPool() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DescriptorPool( DescriptorPool const & rhs ) = default; + DescriptorPool & operator=( DescriptorPool const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DescriptorPool( DescriptorPool && rhs ) = default; + DescriptorPool & operator=( DescriptorPool && rhs ) = default; +#else + DescriptorPool( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT : m_descriptorPool( exchange( rhs.m_descriptorPool, {} ) ) {} + + DescriptorPool & operator=( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT + { + m_descriptorPool = exchange( rhs.m_descriptorPool, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DescriptorPool( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool ) VULKAN_HPP_NOEXCEPT : m_descriptorPool( descriptorPool ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DescriptorPool & operator=( VkDescriptorPool descriptorPool ) VULKAN_HPP_NOEXCEPT + { + m_descriptorPool = descriptorPool; + return *this; + } +#endif + + DescriptorPool & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_descriptorPool = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool == VK_NULL_HANDLE; + } + + private: + VkDescriptorPool m_descriptorPool = {}; + }; + + template <> + struct CppType + { + using Type = DescriptorPool; + }; + + template <> + struct CppType + { + using Type = DescriptorPool; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DescriptorPool; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayout.html + class DescriptorSetLayout + { + public: + using CType = VkDescriptorSetLayout; + using NativeType = VkDescriptorSetLayout; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorSetLayout; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorSetLayout; + + public: + DescriptorSetLayout() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DescriptorSetLayout( DescriptorSetLayout const & rhs ) = default; + DescriptorSetLayout & operator=( DescriptorSetLayout const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DescriptorSetLayout( DescriptorSetLayout && rhs ) = default; + DescriptorSetLayout & operator=( DescriptorSetLayout && rhs ) = default; +#else + DescriptorSetLayout( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT : m_descriptorSetLayout( exchange( rhs.m_descriptorSetLayout, {} ) ) {} + + DescriptorSetLayout & operator=( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT + { + m_descriptorSetLayout = exchange( rhs.m_descriptorSetLayout, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DescriptorSetLayout( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout ) VULKAN_HPP_NOEXCEPT + : m_descriptorSetLayout( descriptorSetLayout ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DescriptorSetLayout & operator=( VkDescriptorSetLayout descriptorSetLayout ) VULKAN_HPP_NOEXCEPT + { + m_descriptorSetLayout = descriptorSetLayout; + return *this; + } +#endif + + DescriptorSetLayout & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_descriptorSetLayout = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout == VK_NULL_HANDLE; + } + + private: + VkDescriptorSetLayout m_descriptorSetLayout = {}; + }; + + template <> + struct CppType + { + using Type = DescriptorSetLayout; + }; + + template <> + struct CppType + { + using Type = DescriptorSetLayout; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DescriptorSetLayout; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkExternalComputeQueueNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalComputeQueueNV.html + class ExternalComputeQueueNV + { + public: + using CType = VkExternalComputeQueueNV; + using NativeType = VkExternalComputeQueueNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eExternalComputeQueueNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + ExternalComputeQueueNV() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + ExternalComputeQueueNV( ExternalComputeQueueNV const & rhs ) = default; + ExternalComputeQueueNV & operator=( ExternalComputeQueueNV const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + ExternalComputeQueueNV( ExternalComputeQueueNV && rhs ) = default; + ExternalComputeQueueNV & operator=( ExternalComputeQueueNV && rhs ) = default; +#else + ExternalComputeQueueNV( ExternalComputeQueueNV && rhs ) VULKAN_HPP_NOEXCEPT : m_externalComputeQueueNV( exchange( rhs.m_externalComputeQueueNV, {} ) ) {} + + ExternalComputeQueueNV & operator=( ExternalComputeQueueNV && rhs ) VULKAN_HPP_NOEXCEPT + { + m_externalComputeQueueNV = exchange( rhs.m_externalComputeQueueNV, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR ExternalComputeQueueNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + ExternalComputeQueueNV( VkExternalComputeQueueNV externalComputeQueueNV ) VULKAN_HPP_NOEXCEPT : m_externalComputeQueueNV( externalComputeQueueNV ) {} + + ExternalComputeQueueNV & operator=( VkExternalComputeQueueNV externalComputeQueueNV ) VULKAN_HPP_NOEXCEPT + { + m_externalComputeQueueNV = externalComputeQueueNV; + return *this; + } + + ExternalComputeQueueNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_externalComputeQueueNV = {}; + return *this; + } + + //=== VK_NV_external_compute_queue === + + // wrapper function for command vkGetExternalComputeQueueDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExternalComputeQueueDataNV.html + template ::type = true> + void + getData( ExternalComputeQueueDataParamsNV * params, void * pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetExternalComputeQueueDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExternalComputeQueueDataNV.html + template ::type = true> + VULKAN_HPP_NODISCARD std::pair + getData( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + operator VkExternalComputeQueueNV() const VULKAN_HPP_NOEXCEPT + { + return m_externalComputeQueueNV; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_externalComputeQueueNV != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_externalComputeQueueNV == VK_NULL_HANDLE; + } + + private: + VkExternalComputeQueueNV m_externalComputeQueueNV = {}; + }; + + template <> + struct CppType + { + using Type = ExternalComputeQueueNV; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = ExternalComputeQueueNV; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebuffer.html + class Framebuffer + { + public: + using CType = VkFramebuffer; + using NativeType = VkFramebuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eFramebuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eFramebuffer; + + public: + Framebuffer() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Framebuffer( Framebuffer const & rhs ) = default; + Framebuffer & operator=( Framebuffer const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Framebuffer( Framebuffer && rhs ) = default; + Framebuffer & operator=( Framebuffer && rhs ) = default; +#else + Framebuffer( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT : m_framebuffer( exchange( rhs.m_framebuffer, {} ) ) {} + + Framebuffer & operator=( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT + { + m_framebuffer = exchange( rhs.m_framebuffer, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Framebuffer( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer ) VULKAN_HPP_NOEXCEPT : m_framebuffer( framebuffer ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + Framebuffer & operator=( VkFramebuffer framebuffer ) VULKAN_HPP_NOEXCEPT + { + m_framebuffer = framebuffer; + return *this; + } +#endif + + Framebuffer & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_framebuffer = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer == VK_NULL_HANDLE; + } + + private: + VkFramebuffer m_framebuffer = {}; + }; + + template <> + struct CppType + { + using Type = Framebuffer; + }; + + template <> + struct CppType + { + using Type = Framebuffer; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Framebuffer; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkIndirectCommandsLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutEXT.html + class IndirectCommandsLayoutEXT + { + public: + using CType = VkIndirectCommandsLayoutEXT; + using NativeType = VkIndirectCommandsLayoutEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eIndirectCommandsLayoutEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + IndirectCommandsLayoutEXT() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT const & rhs ) = default; + IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT && rhs ) = default; + IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT && rhs ) = default; +#else + IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_indirectCommandsLayoutEXT( exchange( rhs.m_indirectCommandsLayoutEXT, {} ) ) + { + } + + IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutEXT = exchange( rhs.m_indirectCommandsLayoutEXT, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutEXT( VkIndirectCommandsLayoutEXT indirectCommandsLayoutEXT ) VULKAN_HPP_NOEXCEPT + : m_indirectCommandsLayoutEXT( indirectCommandsLayoutEXT ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + IndirectCommandsLayoutEXT & operator=( VkIndirectCommandsLayoutEXT indirectCommandsLayoutEXT ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutEXT = indirectCommandsLayoutEXT; + return *this; + } +#endif + + IndirectCommandsLayoutEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutEXT = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutEXT() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT == VK_NULL_HANDLE; + } + + private: + VkIndirectCommandsLayoutEXT m_indirectCommandsLayoutEXT = {}; + }; + + template <> + struct CppType + { + using Type = IndirectCommandsLayoutEXT; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = IndirectCommandsLayoutEXT; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkIndirectCommandsLayoutNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutNV.html + class IndirectCommandsLayoutNV + { + public: + using CType = VkIndirectCommandsLayoutNV; + using NativeType = VkIndirectCommandsLayoutNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eIndirectCommandsLayoutNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + IndirectCommandsLayoutNV() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + IndirectCommandsLayoutNV( IndirectCommandsLayoutNV const & rhs ) = default; + IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + IndirectCommandsLayoutNV( IndirectCommandsLayoutNV && rhs ) = default; + IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV && rhs ) = default; +#else + IndirectCommandsLayoutNV( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_indirectCommandsLayoutNV( exchange( rhs.m_indirectCommandsLayoutNV, {} ) ) + { + } + + IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutNV = exchange( rhs.m_indirectCommandsLayoutNV, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNV( VkIndirectCommandsLayoutNV indirectCommandsLayoutNV ) VULKAN_HPP_NOEXCEPT + : m_indirectCommandsLayoutNV( indirectCommandsLayoutNV ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + IndirectCommandsLayoutNV & operator=( VkIndirectCommandsLayoutNV indirectCommandsLayoutNV ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutNV = indirectCommandsLayoutNV; + return *this; + } +#endif + + IndirectCommandsLayoutNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_indirectCommandsLayoutNV = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNV() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV == VK_NULL_HANDLE; + } + + private: + VkIndirectCommandsLayoutNV m_indirectCommandsLayoutNV = {}; + }; + + template <> + struct CppType + { + using Type = IndirectCommandsLayoutNV; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = IndirectCommandsLayoutNV; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkIndirectExecutionSetEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectExecutionSetEXT.html + class IndirectExecutionSetEXT + { + public: + using CType = VkIndirectExecutionSetEXT; + using NativeType = VkIndirectExecutionSetEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eIndirectExecutionSetEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + IndirectExecutionSetEXT() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + IndirectExecutionSetEXT( IndirectExecutionSetEXT const & rhs ) = default; + IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + IndirectExecutionSetEXT( IndirectExecutionSetEXT && rhs ) = default; + IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT && rhs ) = default; +#else + IndirectExecutionSetEXT( IndirectExecutionSetEXT && rhs ) VULKAN_HPP_NOEXCEPT : m_indirectExecutionSetEXT( exchange( rhs.m_indirectExecutionSetEXT, {} ) ) + { + } + + IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + m_indirectExecutionSetEXT = exchange( rhs.m_indirectExecutionSetEXT, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR IndirectExecutionSetEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT IndirectExecutionSetEXT( VkIndirectExecutionSetEXT indirectExecutionSetEXT ) VULKAN_HPP_NOEXCEPT + : m_indirectExecutionSetEXT( indirectExecutionSetEXT ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + IndirectExecutionSetEXT & operator=( VkIndirectExecutionSetEXT indirectExecutionSetEXT ) VULKAN_HPP_NOEXCEPT + { + m_indirectExecutionSetEXT = indirectExecutionSetEXT; + return *this; + } +#endif + + IndirectExecutionSetEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_indirectExecutionSetEXT = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectExecutionSetEXT() const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT == VK_NULL_HANDLE; + } + + private: + VkIndirectExecutionSetEXT m_indirectExecutionSetEXT = {}; + }; + + template <> + struct CppType + { + using Type = IndirectExecutionSetEXT; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = IndirectExecutionSetEXT; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPrivateDataSlot.html + class PrivateDataSlot + { + public: + using CType = VkPrivateDataSlot; + using NativeType = VkPrivateDataSlot; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePrivateDataSlot; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + PrivateDataSlot() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + PrivateDataSlot( PrivateDataSlot const & rhs ) = default; + PrivateDataSlot & operator=( PrivateDataSlot const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + PrivateDataSlot( PrivateDataSlot && rhs ) = default; + PrivateDataSlot & operator=( PrivateDataSlot && rhs ) = default; +#else + PrivateDataSlot( PrivateDataSlot && rhs ) VULKAN_HPP_NOEXCEPT : m_privateDataSlot( exchange( rhs.m_privateDataSlot, {} ) ) {} + + PrivateDataSlot & operator=( PrivateDataSlot && rhs ) VULKAN_HPP_NOEXCEPT + { + m_privateDataSlot = exchange( rhs.m_privateDataSlot, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR PrivateDataSlot( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT PrivateDataSlot( VkPrivateDataSlot privateDataSlot ) VULKAN_HPP_NOEXCEPT : m_privateDataSlot( privateDataSlot ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + PrivateDataSlot & operator=( VkPrivateDataSlot privateDataSlot ) VULKAN_HPP_NOEXCEPT + { + m_privateDataSlot = privateDataSlot; + return *this; + } +#endif + + PrivateDataSlot & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_privateDataSlot = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPrivateDataSlot() const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot == VK_NULL_HANDLE; + } + + private: + VkPrivateDataSlot m_privateDataSlot = {}; + }; + + template <> + struct CppType + { + using Type = PrivateDataSlot; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = PrivateDataSlot; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + using PrivateDataSlotEXT = PrivateDataSlot; + + // wrapper class for handle VkRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPass.html + class RenderPass + { + public: + using CType = VkRenderPass; + using NativeType = VkRenderPass; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eRenderPass; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eRenderPass; + + public: + RenderPass() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + RenderPass( RenderPass const & rhs ) = default; + RenderPass & operator=( RenderPass const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + RenderPass( RenderPass && rhs ) = default; + RenderPass & operator=( RenderPass && rhs ) = default; +#else + RenderPass( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT : m_renderPass( exchange( rhs.m_renderPass, {} ) ) {} + + RenderPass & operator=( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT + { + m_renderPass = exchange( rhs.m_renderPass, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR RenderPass( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass ) VULKAN_HPP_NOEXCEPT : m_renderPass( renderPass ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + RenderPass & operator=( VkRenderPass renderPass ) VULKAN_HPP_NOEXCEPT + { + m_renderPass = renderPass; + return *this; + } +#endif + + RenderPass & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_renderPass = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const VULKAN_HPP_NOEXCEPT + { + return m_renderPass; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_renderPass != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_renderPass == VK_NULL_HANDLE; + } + + private: + VkRenderPass m_renderPass = {}; + }; + + template <> + struct CppType + { + using Type = RenderPass; + }; + + template <> + struct CppType + { + using Type = RenderPass; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = RenderPass; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSampler.html + class Sampler + { + public: + using CType = VkSampler; + using NativeType = VkSampler; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSampler; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSampler; + + public: + Sampler() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Sampler( Sampler const & rhs ) = default; + Sampler & operator=( Sampler const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Sampler( Sampler && rhs ) = default; + Sampler & operator=( Sampler && rhs ) = default; +#else + Sampler( Sampler && rhs ) VULKAN_HPP_NOEXCEPT : m_sampler( exchange( rhs.m_sampler, {} ) ) {} + + Sampler & operator=( Sampler && rhs ) VULKAN_HPP_NOEXCEPT + { + m_sampler = exchange( rhs.m_sampler, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Sampler( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler ) VULKAN_HPP_NOEXCEPT : m_sampler( sampler ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + Sampler & operator=( VkSampler sampler ) VULKAN_HPP_NOEXCEPT + { + m_sampler = sampler; + return *this; + } +#endif + + Sampler & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_sampler = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const VULKAN_HPP_NOEXCEPT + { + return m_sampler; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_sampler != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_sampler == VK_NULL_HANDLE; + } + + private: + VkSampler m_sampler = {}; + }; + + template <> + struct CppType + { + using Type = Sampler; + }; + + template <> + struct CppType + { + using Type = Sampler; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Sampler; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkSamplerYcbcrConversion, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerYcbcrConversion.html + class SamplerYcbcrConversion + { + public: + using CType = VkSamplerYcbcrConversion; + using NativeType = VkSamplerYcbcrConversion; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSamplerYcbcrConversion; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSamplerYcbcrConversion; + + public: + SamplerYcbcrConversion() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + SamplerYcbcrConversion( SamplerYcbcrConversion const & rhs ) = default; + SamplerYcbcrConversion & operator=( SamplerYcbcrConversion const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + SamplerYcbcrConversion( SamplerYcbcrConversion && rhs ) = default; + SamplerYcbcrConversion & operator=( SamplerYcbcrConversion && rhs ) = default; +#else + SamplerYcbcrConversion( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT : m_samplerYcbcrConversion( exchange( rhs.m_samplerYcbcrConversion, {} ) ) {} + + SamplerYcbcrConversion & operator=( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT + { + m_samplerYcbcrConversion = exchange( rhs.m_samplerYcbcrConversion, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT SamplerYcbcrConversion( VkSamplerYcbcrConversion samplerYcbcrConversion ) VULKAN_HPP_NOEXCEPT + : m_samplerYcbcrConversion( samplerYcbcrConversion ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + SamplerYcbcrConversion & operator=( VkSamplerYcbcrConversion samplerYcbcrConversion ) VULKAN_HPP_NOEXCEPT + { + m_samplerYcbcrConversion = samplerYcbcrConversion; + return *this; + } +#endif + + SamplerYcbcrConversion & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_samplerYcbcrConversion = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSamplerYcbcrConversion() const VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion == VK_NULL_HANDLE; + } + + private: + VkSamplerYcbcrConversion m_samplerYcbcrConversion = {}; + }; + + template <> + struct CppType + { + using Type = SamplerYcbcrConversion; + }; + + template <> + struct CppType + { + using Type = SamplerYcbcrConversion; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = SamplerYcbcrConversion; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + using SamplerYcbcrConversionKHR = SamplerYcbcrConversion; + + // wrapper class for handle VkShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderModule.html + class ShaderModule + { + public: + using CType = VkShaderModule; + using NativeType = VkShaderModule; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eShaderModule; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eShaderModule; + + public: + ShaderModule() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + ShaderModule( ShaderModule const & rhs ) = default; + ShaderModule & operator=( ShaderModule const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + ShaderModule( ShaderModule && rhs ) = default; + ShaderModule & operator=( ShaderModule && rhs ) = default; +#else + ShaderModule( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT : m_shaderModule( exchange( rhs.m_shaderModule, {} ) ) {} + + ShaderModule & operator=( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT + { + m_shaderModule = exchange( rhs.m_shaderModule, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR ShaderModule( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule ) VULKAN_HPP_NOEXCEPT : m_shaderModule( shaderModule ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + ShaderModule & operator=( VkShaderModule shaderModule ) VULKAN_HPP_NOEXCEPT + { + m_shaderModule = shaderModule; + return *this; + } +#endif + + ShaderModule & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_shaderModule = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule == VK_NULL_HANDLE; + } + + private: + VkShaderModule m_shaderModule = {}; + }; + + template <> + struct CppType + { + using Type = ShaderModule; + }; + + template <> + struct CppType + { + using Type = ShaderModule; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = ShaderModule; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorARM.html + class TensorARM + { + public: + using CType = VkTensorARM; + using NativeType = VkTensorARM; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eTensorARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + TensorARM() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + TensorARM( TensorARM const & rhs ) = default; + TensorARM & operator=( TensorARM const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + TensorARM( TensorARM && rhs ) = default; + TensorARM & operator=( TensorARM && rhs ) = default; +#else + TensorARM( TensorARM && rhs ) VULKAN_HPP_NOEXCEPT : m_tensorARM( exchange( rhs.m_tensorARM, {} ) ) {} + + TensorARM & operator=( TensorARM && rhs ) VULKAN_HPP_NOEXCEPT + { + m_tensorARM = exchange( rhs.m_tensorARM, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR TensorARM( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT TensorARM( VkTensorARM tensorARM ) VULKAN_HPP_NOEXCEPT : m_tensorARM( tensorARM ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + TensorARM & operator=( VkTensorARM tensorARM ) VULKAN_HPP_NOEXCEPT + { + m_tensorARM = tensorARM; + return *this; + } +#endif + + TensorARM & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_tensorARM = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkTensorARM() const VULKAN_HPP_NOEXCEPT + { + return m_tensorARM; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_tensorARM != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_tensorARM == VK_NULL_HANDLE; + } + + private: + VkTensorARM m_tensorARM = {}; + }; + + template <> + struct CppType + { + using Type = TensorARM; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = TensorARM; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorViewARM.html + class TensorViewARM + { + public: + using CType = VkTensorViewARM; + using NativeType = VkTensorViewARM; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eTensorViewARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + TensorViewARM() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + TensorViewARM( TensorViewARM const & rhs ) = default; + TensorViewARM & operator=( TensorViewARM const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + TensorViewARM( TensorViewARM && rhs ) = default; + TensorViewARM & operator=( TensorViewARM && rhs ) = default; +#else + TensorViewARM( TensorViewARM && rhs ) VULKAN_HPP_NOEXCEPT : m_tensorViewARM( exchange( rhs.m_tensorViewARM, {} ) ) {} + + TensorViewARM & operator=( TensorViewARM && rhs ) VULKAN_HPP_NOEXCEPT + { + m_tensorViewARM = exchange( rhs.m_tensorViewARM, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR TensorViewARM( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT TensorViewARM( VkTensorViewARM tensorViewARM ) VULKAN_HPP_NOEXCEPT : m_tensorViewARM( tensorViewARM ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + TensorViewARM & operator=( VkTensorViewARM tensorViewARM ) VULKAN_HPP_NOEXCEPT + { + m_tensorViewARM = tensorViewARM; + return *this; + } +#endif + + TensorViewARM & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_tensorViewARM = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkTensorViewARM() const VULKAN_HPP_NOEXCEPT + { + return m_tensorViewARM; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_tensorViewARM != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_tensorViewARM == VK_NULL_HANDLE; + } + + private: + VkTensorViewARM m_tensorViewARM = {}; + }; + + template <> + struct CppType + { + using Type = TensorViewARM; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = TensorViewARM; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationCacheEXT.html + class ValidationCacheEXT + { + public: + using CType = VkValidationCacheEXT; + using NativeType = VkValidationCacheEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eValidationCacheEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eValidationCacheEXT; + + public: + ValidationCacheEXT() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + ValidationCacheEXT( ValidationCacheEXT const & rhs ) = default; + ValidationCacheEXT & operator=( ValidationCacheEXT const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + ValidationCacheEXT( ValidationCacheEXT && rhs ) = default; + ValidationCacheEXT & operator=( ValidationCacheEXT && rhs ) = default; +#else + ValidationCacheEXT( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT : m_validationCacheEXT( exchange( rhs.m_validationCacheEXT, {} ) ) {} + + ValidationCacheEXT & operator=( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + m_validationCacheEXT = exchange( rhs.m_validationCacheEXT, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR ValidationCacheEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT ) VULKAN_HPP_NOEXCEPT : m_validationCacheEXT( validationCacheEXT ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + ValidationCacheEXT & operator=( VkValidationCacheEXT validationCacheEXT ) VULKAN_HPP_NOEXCEPT + { + m_validationCacheEXT = validationCacheEXT; + return *this; + } +#endif + + ValidationCacheEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_validationCacheEXT = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT == VK_NULL_HANDLE; + } + + private: + VkValidationCacheEXT m_validationCacheEXT = {}; + }; + + template <> + struct CppType + { + using Type = ValidationCacheEXT; + }; + + template <> + struct CppType + { + using Type = ValidationCacheEXT; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = ValidationCacheEXT; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkVideoSessionParametersKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionParametersKHR.html + class VideoSessionParametersKHR + { + public: + using CType = VkVideoSessionParametersKHR; + using NativeType = VkVideoSessionParametersKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eVideoSessionParametersKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + VideoSessionParametersKHR() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + VideoSessionParametersKHR( VideoSessionParametersKHR const & rhs ) = default; + VideoSessionParametersKHR & operator=( VideoSessionParametersKHR const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + VideoSessionParametersKHR( VideoSessionParametersKHR && rhs ) = default; + VideoSessionParametersKHR & operator=( VideoSessionParametersKHR && rhs ) = default; +#else + VideoSessionParametersKHR( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_videoSessionParametersKHR( exchange( rhs.m_videoSessionParametersKHR, {} ) ) + { + } + + VideoSessionParametersKHR & operator=( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + m_videoSessionParametersKHR = exchange( rhs.m_videoSessionParametersKHR, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR VideoSessionParametersKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT VideoSessionParametersKHR( VkVideoSessionParametersKHR videoSessionParametersKHR ) VULKAN_HPP_NOEXCEPT + : m_videoSessionParametersKHR( videoSessionParametersKHR ) + { + } + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + VideoSessionParametersKHR & operator=( VkVideoSessionParametersKHR videoSessionParametersKHR ) VULKAN_HPP_NOEXCEPT + { + m_videoSessionParametersKHR = videoSessionParametersKHR; + return *this; + } +#endif + + VideoSessionParametersKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_videoSessionParametersKHR = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkVideoSessionParametersKHR() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR == VK_NULL_HANDLE; + } + + private: + VkVideoSessionParametersKHR m_videoSessionParametersKHR = {}; + }; + + template <> + struct CppType + { + using Type = VideoSessionParametersKHR; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = VideoSessionParametersKHR; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryKHR.html + class PipelineBinaryKHR + { + public: + using CType = VkPipelineBinaryKHR; + using NativeType = VkPipelineBinaryKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineBinaryKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + PipelineBinaryKHR() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + PipelineBinaryKHR( PipelineBinaryKHR const & rhs ) = default; + PipelineBinaryKHR & operator=( PipelineBinaryKHR const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + PipelineBinaryKHR( PipelineBinaryKHR && rhs ) = default; + PipelineBinaryKHR & operator=( PipelineBinaryKHR && rhs ) = default; +#else + PipelineBinaryKHR( PipelineBinaryKHR && rhs ) VULKAN_HPP_NOEXCEPT : m_pipelineBinaryKHR( exchange( rhs.m_pipelineBinaryKHR, {} ) ) {} + + PipelineBinaryKHR & operator=( PipelineBinaryKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + m_pipelineBinaryKHR = exchange( rhs.m_pipelineBinaryKHR, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR PipelineBinaryKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT PipelineBinaryKHR( VkPipelineBinaryKHR pipelineBinaryKHR ) VULKAN_HPP_NOEXCEPT : m_pipelineBinaryKHR( pipelineBinaryKHR ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + PipelineBinaryKHR & operator=( VkPipelineBinaryKHR pipelineBinaryKHR ) VULKAN_HPP_NOEXCEPT + { + m_pipelineBinaryKHR = pipelineBinaryKHR; + return *this; + } +#endif + + PipelineBinaryKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_pipelineBinaryKHR = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineBinaryKHR() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineBinaryKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineBinaryKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineBinaryKHR == VK_NULL_HANDLE; + } + + private: + VkPipelineBinaryKHR m_pipelineBinaryKHR = {}; + }; + + template <> + struct CppType + { + using Type = PipelineBinaryKHR; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = PipelineBinaryKHR; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueue.html + class Queue + { + public: + using CType = VkQueue; + using NativeType = VkQueue; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eQueue; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eQueue; + + public: + Queue() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Queue( Queue const & rhs ) = default; + Queue & operator=( Queue const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Queue( Queue && rhs ) = default; + Queue & operator=( Queue && rhs ) = default; +#else + Queue( Queue && rhs ) VULKAN_HPP_NOEXCEPT : m_queue( exchange( rhs.m_queue, {} ) ) {} + + Queue & operator=( Queue && rhs ) VULKAN_HPP_NOEXCEPT + { + m_queue = exchange( rhs.m_queue, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Queue( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + Queue( VkQueue queue ) VULKAN_HPP_NOEXCEPT : m_queue( queue ) {} + + Queue & operator=( VkQueue queue ) VULKAN_HPP_NOEXCEPT + { + m_queue = queue; + return *this; + } + + Queue & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_queue = {}; + return *this; + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkQueueSubmit, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit.html + template ::type = true> + VULKAN_HPP_NODISCARD Result submit( uint32_t submitCount, + SubmitInfo const * pSubmits, + Fence fence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueSubmit, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type submit( ArrayProxy const & submits, + Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueWaitIdle.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitIdle( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkQueueWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueWaitIdle.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type waitIdle( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkQueueBindSparse, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBindSparse.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindSparse( uint32_t bindInfoCount, + BindSparseInfo const * pBindInfo, + Fence fence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueBindSparse, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBindSparse.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindSparse( ArrayProxy const & bindInfo, + Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_3 === + + // wrapper function for command vkQueueSubmit2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2.html + template ::type = true> + VULKAN_HPP_NODISCARD Result submit2( uint32_t submitCount, + SubmitInfo2 const * pSubmits, + Fence fence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueSubmit2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type submit2( ArrayProxy const & submits, + Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_swapchain === + + // wrapper function for command vkQueuePresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueuePresentKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result presentKHR( PresentInfoKHR const * pPresentInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueuePresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueuePresentKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result presentKHR( PresentInfoKHR const & presentInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_debug_utils === + + // wrapper function for command vkQueueBeginDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBeginDebugUtilsLabelEXT.html + template ::type = true> + void beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const * pLabelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueBeginDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBeginDebugUtilsLabelEXT.html + template ::type = true> + void beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkQueueEndDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueEndDebugUtilsLabelEXT.html + template ::type = true> + void endDebugUtilsLabelEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkQueueInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueInsertDebugUtilsLabelEXT.html + template ::type = true> + void insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const * pLabelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueInsertDebugUtilsLabelEXT.html + template ::type = true> + void insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_device_diagnostic_checkpoints === + + // wrapper function for command vkGetQueueCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointDataNV.html + template ::type = true> + void getCheckpointDataNV( uint32_t * pCheckpointDataCount, + CheckpointDataNV * pCheckpointData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetQueueCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointDataNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getCheckpointDataNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetQueueCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointDataNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getCheckpointDataNV( CheckpointDataNVAllocator const & checkpointDataNVAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetQueueCheckpointData2NV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointData2NV.html + template ::type = true> + void getCheckpointData2NV( uint32_t * pCheckpointDataCount, + CheckpointData2NV * pCheckpointData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetQueueCheckpointData2NV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointData2NV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getCheckpointData2NV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetQueueCheckpointData2NV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointData2NV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getCheckpointData2NV( CheckpointData2NVAllocator const & checkpointData2NVAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_INTEL_performance_query === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueSetPerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSetPerformanceConfigurationINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setPerformanceConfigurationINTEL( PerformanceConfigurationINTEL configuration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkQueueSetPerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSetPerformanceConfigurationINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setPerformanceConfigurationINTEL( PerformanceConfigurationINTEL configuration, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_synchronization2 === + + // wrapper function for command vkQueueSubmit2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result submit2KHR( uint32_t submitCount, + SubmitInfo2 const * pSubmits, + Fence fence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueSubmit2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + submit2KHR( ArrayProxy const & submits, + Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_low_latency2 === + + // wrapper function for command vkQueueNotifyOutOfBandNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueNotifyOutOfBandNV.html + template ::type = true> + void notifyOutOfBandNV( OutOfBandQueueTypeInfoNV const * pQueueTypeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkQueueNotifyOutOfBandNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueNotifyOutOfBandNV.html + template ::type = true> + void notifyOutOfBandNV( OutOfBandQueueTypeInfoNV const & queueTypeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + operator VkQueue() const VULKAN_HPP_NOEXCEPT + { + return m_queue; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_queue != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_queue == VK_NULL_HANDLE; + } + + private: + VkQueue m_queue = {}; + }; + + template <> + struct CppType + { + using Type = Queue; + }; + + template <> + struct CppType + { + using Type = Queue; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Queue; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDevice.html + class Device + { + public: + using CType = VkDevice; + using NativeType = VkDevice; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDevice; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDevice; + + public: + Device() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Device( Device const & rhs ) = default; + Device & operator=( Device const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Device( Device && rhs ) = default; + Device & operator=( Device && rhs ) = default; +#else + Device( Device && rhs ) VULKAN_HPP_NOEXCEPT : m_device( exchange( rhs.m_device, {} ) ) {} + + Device & operator=( Device && rhs ) VULKAN_HPP_NOEXCEPT + { + m_device = exchange( rhs.m_device, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Device( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + Device( VkDevice device ) VULKAN_HPP_NOEXCEPT : m_device( device ) {} + + Device & operator=( VkDevice device ) VULKAN_HPP_NOEXCEPT + { + m_device = device; + return *this; + } + + Device & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_device = {}; + return *this; + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkGetDeviceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceProcAddr.html + template ::type = true> + PFN_vkVoidFunction getProcAddr( char const * pName, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceProcAddr.html + template ::type = true> + PFN_VoidFunction getProcAddr( std::string const & name, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDevice.html + template ::type = true> + void destroy( AllocationCallbacks const * pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDevice.html + template ::type = true> + void destroy( Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue.html + template ::type = true> + void getQueue( uint32_t queueFamilyIndex, + uint32_t queueIndex, + Queue * pQueue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue.html + template ::type = true> + VULKAN_HPP_NODISCARD Queue getQueue( uint32_t queueFamilyIndex, + uint32_t queueIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDeviceWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeviceWaitIdle.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitIdle( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkDeviceWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeviceWaitIdle.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type waitIdle( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkAllocateMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD Result allocateMemory( MemoryAllocateInfo const * pAllocateInfo, + AllocationCallbacks const * pAllocator, + DeviceMemory * pMemory, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAllocateMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + allocateMemory( MemoryAllocateInfo const & allocateInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkAllocateMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + allocateMemoryUnique( MemoryAllocateInfo const & allocateInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeMemory.html + template ::type = true> + void freeMemory( DeviceMemory memory, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeMemory.html + template ::type = true> + void freeMemory( DeviceMemory memory VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeMemory.html + template ::type = true> + void( free )( DeviceMemory memory, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeMemory.html + template ::type = true> + void( free )( DeviceMemory memory, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkMapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD Result mapMemory( DeviceMemory memory, + DeviceSize offset, + DeviceSize size, + MemoryMapFlags flags, + void ** ppData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkMapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type mapMemory( DeviceMemory memory, + DeviceSize offset, + DeviceSize size, + MemoryMapFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUnmapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory.html + template ::type = true> + void unmapMemory( DeviceMemory memory, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkFlushMappedMemoryRanges, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFlushMappedMemoryRanges.html + template ::type = true> + VULKAN_HPP_NODISCARD Result flushMappedMemoryRanges( uint32_t memoryRangeCount, + MappedMemoryRange const * pMemoryRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFlushMappedMemoryRanges, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFlushMappedMemoryRanges.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + flushMappedMemoryRanges( ArrayProxy const & memoryRanges, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkInvalidateMappedMemoryRanges, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInvalidateMappedMemoryRanges.html + template ::type = true> + VULKAN_HPP_NODISCARD Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, + MappedMemoryRange const * pMemoryRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkInvalidateMappedMemoryRanges, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInvalidateMappedMemoryRanges.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + invalidateMappedMemoryRanges( ArrayProxy const & memoryRanges, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceMemoryCommitment, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryCommitment.html + template ::type = true> + void getMemoryCommitment( DeviceMemory memory, + DeviceSize * pCommittedMemoryInBytes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceMemoryCommitment, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryCommitment.html + template ::type = true> + VULKAN_HPP_NODISCARD DeviceSize getMemoryCommitment( DeviceMemory memory, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindBufferMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindBufferMemory( Buffer buffer, + DeviceMemory memory, + DeviceSize memoryOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkBindBufferMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindImageMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindImageMemory( Image image, + DeviceMemory memory, + DeviceSize memoryOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkBindImageMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements.html + template ::type = true> + void getBufferMemoryRequirements( Buffer buffer, + MemoryRequirements * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements + getBufferMemoryRequirements( Buffer buffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements.html + template ::type = true> + void getImageMemoryRequirements( Image image, + MemoryRequirements * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements getImageMemoryRequirements( Image image, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements.html + template ::type = true> + void getImageSparseMemoryRequirements( Image image, + uint32_t * pSparseMemoryRequirementCount, + SparseImageMemoryRequirements * pSparseMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements.html + template < + typename SparseImageMemoryRequirementsAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements( Image image, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements.html + template < + typename SparseImageMemoryRequirementsAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements( Image image, + SparseImageMemoryRequirementsAllocator const & sparseImageMemoryRequirementsAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFence.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createFence( FenceCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + Fence * pFence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFence.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createFence( FenceCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFence.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createFenceUnique( FenceCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFence.html + template ::type = true> + void destroyFence( Fence fence, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFence.html + template ::type = true> + void destroyFence( Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFence.html + template ::type = true> + void destroy( Fence fence, AllocationCallbacks const * pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFence.html + template ::type = true> + void destroy( Fence fence, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkResetFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetFences.html + template ::type = true> + VULKAN_HPP_NODISCARD Result resetFences( uint32_t fenceCount, + Fence const * pFences, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkResetFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetFences.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + resetFences( ArrayProxy const & fences, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetFenceStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceStatus.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getFenceStatus( Fence fence, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkGetFenceStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceStatus.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getFenceStatus( Fence fence, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkWaitForFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForFences.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitForFences( uint32_t fenceCount, + Fence const * pFences, + Bool32 waitAll, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWaitForFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForFences.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitForFences( ArrayProxy const & fences, + Bool32 waitAll, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSemaphore.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createSemaphore( SemaphoreCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + Semaphore * pSemaphore, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSemaphore.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSemaphore( SemaphoreCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSemaphore.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createSemaphoreUnique( SemaphoreCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySemaphore.html + template ::type = true> + void destroySemaphore( Semaphore semaphore, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySemaphore.html + template ::type = true> + void destroySemaphore( Semaphore semaphore VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySemaphore.html + template ::type = true> + void destroy( Semaphore semaphore, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySemaphore.html + template ::type = true> + void destroy( Semaphore semaphore, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateQueryPool.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createQueryPool( QueryPoolCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + QueryPool * pQueryPool, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateQueryPool.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createQueryPool( QueryPoolCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateQueryPool.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createQueryPoolUnique( QueryPoolCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyQueryPool.html + template ::type = true> + void destroyQueryPool( QueryPool queryPool, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyQueryPool.html + template ::type = true> + void destroyQueryPool( QueryPool queryPool VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyQueryPool.html + template ::type = true> + void destroy( QueryPool queryPool, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyQueryPool.html + template ::type = true> + void destroy( QueryPool queryPool, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getQueryPoolResults( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + void * pData, + DeviceSize stride, + QueryResultFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + getQueryPoolResults( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + size_t dataSize, + DeviceSize stride, + QueryResultFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue getQueryPoolResult( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + DeviceSize stride, + QueryResultFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createBuffer( BufferCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + Buffer * pBuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createBuffer( BufferCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createBufferUnique( BufferCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBuffer.html + template ::type = true> + void destroyBuffer( Buffer buffer, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBuffer.html + template ::type = true> + void destroyBuffer( Buffer buffer VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBuffer.html + template ::type = true> + void + destroy( Buffer buffer, AllocationCallbacks const * pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBuffer.html + template ::type = true> + void destroy( Buffer buffer, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImage.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createImage( ImageCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + Image * pImage, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImage.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createImage( ImageCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImage.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createImageUnique( ImageCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImage.html + template ::type = true> + void destroyImage( Image image, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImage.html + template ::type = true> + void destroyImage( Image image VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImage.html + template ::type = true> + void destroy( Image image, AllocationCallbacks const * pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImage.html + template ::type = true> + void destroy( Image image, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSubresourceLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout.html + template ::type = true> + void getImageSubresourceLayout( Image image, + ImageSubresource const * pSubresource, + SubresourceLayout * pLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSubresourceLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD SubresourceLayout getImageSubresourceLayout( Image image, + ImageSubresource const & subresource, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImageView.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createImageView( ImageViewCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + ImageView * pView, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImageView.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createImageView( ImageViewCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImageView.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createImageViewUnique( ImageViewCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImageView.html + template ::type = true> + void destroyImageView( ImageView imageView, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImageView.html + template ::type = true> + void destroyImageView( ImageView imageView VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImageView.html + template ::type = true> + void destroy( ImageView imageView, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyImageView.html + template ::type = true> + void destroy( ImageView imageView, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCommandPool.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createCommandPool( CommandPoolCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + CommandPool * pCommandPool, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCommandPool.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCommandPool( CommandPoolCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCommandPool.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createCommandPoolUnique( CommandPoolCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCommandPool.html + template ::type = true> + void destroyCommandPool( CommandPool commandPool, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCommandPool.html + template ::type = true> + void destroyCommandPool( CommandPool commandPool VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCommandPool.html + template ::type = true> + void destroy( CommandPool commandPool, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCommandPool.html + template ::type = true> + void destroy( CommandPool commandPool, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkResetCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandPool.html + template ::type = true> + VULKAN_HPP_NODISCARD Result resetCommandPool( CommandPool commandPool, + CommandPoolResetFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkResetCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandPool.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + resetCommandPool( CommandPool commandPool, + CommandPoolResetFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + template ::type = true> + VULKAN_HPP_NODISCARD Result allocateCommandBuffers( CommandBufferAllocateInfo const * pAllocateInfo, + CommandBuffer * pCommandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + allocateCommandBuffers( CommandBufferAllocateInfo const & allocateInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + allocateCommandBuffers( CommandBufferAllocateInfo const & allocateInfo, + CommandBufferAllocator const & commandBufferAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, CommandBufferAllocator>>::type + allocateCommandBuffersUnique( CommandBufferAllocateInfo const & allocateInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, CommandBufferAllocator>>::type + allocateCommandBuffersUnique( CommandBufferAllocateInfo const & allocateInfo, + CommandBufferAllocator const & commandBufferAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeCommandBuffers.html + template ::type = true> + void freeCommandBuffers( CommandPool commandPool, + uint32_t commandBufferCount, + CommandBuffer const * pCommandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeCommandBuffers.html + template ::type = true> + void freeCommandBuffers( CommandPool commandPool, + ArrayProxy const & commandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeCommandBuffers.html + template ::type = true> + void( free )( CommandPool commandPool, + uint32_t commandBufferCount, + CommandBuffer const * pCommandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeCommandBuffers.html + template ::type = true> + void( free )( CommandPool commandPool, + ArrayProxy const & commandBuffers, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateEvent.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createEvent( EventCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + Event * pEvent, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateEvent.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createEvent( EventCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateEvent.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createEventUnique( EventCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyEvent.html + template ::type = true> + void destroyEvent( Event event, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyEvent.html + template ::type = true> + void destroyEvent( Event event VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyEvent.html + template ::type = true> + void destroy( Event event, AllocationCallbacks const * pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyEvent.html + template ::type = true> + void destroy( Event event, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetEventStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEventStatus.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getEventStatus( Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkGetEventStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEventStatus.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getEventStatus( Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetEvent.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setEvent( Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetEvent.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type setEvent( Event event, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetEvent.html + template ::type = true> + VULKAN_HPP_NODISCARD Result resetEvent( Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetEvent.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + resetEvent( Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkCreateBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferView.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createBufferView( BufferViewCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + BufferView * pView, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferView.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createBufferView( BufferViewCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferView.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createBufferViewUnique( BufferViewCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferView.html + template ::type = true> + void destroyBufferView( BufferView bufferView, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferView.html + template ::type = true> + void destroyBufferView( BufferView bufferView VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferView.html + template ::type = true> + void destroy( BufferView bufferView, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferView.html + template ::type = true> + void destroy( BufferView bufferView, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderModule.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createShaderModule( ShaderModuleCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + ShaderModule * pShaderModule, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderModule.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createShaderModule( ShaderModuleCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderModule.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createShaderModuleUnique( ShaderModuleCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderModule.html + template ::type = true> + void destroyShaderModule( ShaderModule shaderModule, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderModule.html + template ::type = true> + void destroyShaderModule( ShaderModule shaderModule VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderModule.html + template ::type = true> + void destroy( ShaderModule shaderModule, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderModule.html + template ::type = true> + void destroy( ShaderModule shaderModule, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreatePipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineCache.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createPipelineCache( PipelineCacheCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + PipelineCache * pPipelineCache, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreatePipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineCache.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createPipelineCache( PipelineCacheCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreatePipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineCache.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createPipelineCacheUnique( PipelineCacheCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineCache.html + template ::type = true> + void destroyPipelineCache( PipelineCache pipelineCache, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineCache.html + template ::type = true> + void destroyPipelineCache( PipelineCache pipelineCache VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineCache.html + template ::type = true> + void destroy( PipelineCache pipelineCache, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineCache.html + template ::type = true> + void destroy( PipelineCache pipelineCache, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineCacheData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineCacheData.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getPipelineCacheData( PipelineCache pipelineCache, + size_t * pDataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineCacheData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineCacheData.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPipelineCacheData( PipelineCache pipelineCache, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPipelineCacheData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineCacheData.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getPipelineCacheData( + PipelineCache pipelineCache, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkMergePipelineCaches, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergePipelineCaches.html + template ::type = true> + VULKAN_HPP_NODISCARD Result mergePipelineCaches( PipelineCache dstCache, + uint32_t srcCacheCount, + PipelineCache const * pSrcCaches, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkMergePipelineCaches, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergePipelineCaches.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type mergePipelineCaches( + PipelineCache dstCache, ArrayProxy const & srcCaches, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createComputePipelines( PipelineCache pipelineCache, + uint32_t createInfoCount, + ComputePipelineCreateInfo const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createComputePipelines( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createComputePipelines( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue createComputePipeline( PipelineCache pipelineCache, + ComputePipelineCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createComputePipelinesUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createComputePipelinesUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createComputePipelineUnique( PipelineCache pipelineCache, + ComputePipelineCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipeline.html + template ::type = true> + void destroyPipeline( Pipeline pipeline, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipeline.html + template ::type = true> + void destroyPipeline( Pipeline pipeline VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipeline.html + template ::type = true> + void destroy( Pipeline pipeline, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipeline.html + template ::type = true> + void destroy( Pipeline pipeline, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreatePipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createPipelineLayout( PipelineLayoutCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + PipelineLayout * pPipelineLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreatePipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createPipelineLayout( PipelineLayoutCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreatePipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createPipelineLayoutUnique( PipelineLayoutCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineLayout.html + template ::type = true> + void destroyPipelineLayout( PipelineLayout pipelineLayout, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineLayout.html + template ::type = true> + void destroyPipelineLayout( PipelineLayout pipelineLayout VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineLayout.html + template ::type = true> + void destroy( PipelineLayout pipelineLayout, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineLayout.html + template ::type = true> + void destroy( PipelineLayout pipelineLayout, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSampler.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createSampler( SamplerCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + Sampler * pSampler, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSampler.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSampler( SamplerCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSampler.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createSamplerUnique( SamplerCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySampler.html + template ::type = true> + void destroySampler( Sampler sampler, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySampler.html + template ::type = true> + void destroySampler( Sampler sampler VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySampler.html + template ::type = true> + void + destroy( Sampler sampler, AllocationCallbacks const * pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySampler.html + template ::type = true> + void destroy( Sampler sampler, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorSetLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDescriptorSetLayout( DescriptorSetLayoutCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DescriptorSetLayout * pSetLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorSetLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDescriptorSetLayout( DescriptorSetLayoutCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorSetLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDescriptorSetLayoutUnique( DescriptorSetLayoutCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorSetLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorSetLayout.html + template ::type = true> + void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorSetLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorSetLayout.html + template ::type = true> + void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorSetLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorSetLayout.html + template ::type = true> + void destroy( DescriptorSetLayout descriptorSetLayout, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorSetLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorSetLayout.html + template ::type = true> + void destroy( DescriptorSetLayout descriptorSetLayout, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorPool.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDescriptorPool( DescriptorPoolCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DescriptorPool * pDescriptorPool, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorPool.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDescriptorPool( DescriptorPoolCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorPool.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDescriptorPoolUnique( DescriptorPoolCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorPool.html + template ::type = true> + void destroyDescriptorPool( DescriptorPool descriptorPool, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorPool.html + template ::type = true> + void destroyDescriptorPool( DescriptorPool descriptorPool VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorPool.html + template ::type = true> + void destroy( DescriptorPool descriptorPool, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorPool.html + template ::type = true> + void destroy( DescriptorPool descriptorPool, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkResetDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetDescriptorPool.html + template ::type = true> + VULKAN_HPP_NODISCARD Result resetDescriptorPool( DescriptorPool descriptorPool, + DescriptorPoolResetFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkResetDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetDescriptorPool.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + resetDescriptorPool( DescriptorPool descriptorPool, + DescriptorPoolResetFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + template ::type = true> + VULKAN_HPP_NODISCARD Result allocateDescriptorSets( DescriptorSetAllocateInfo const * pAllocateInfo, + DescriptorSet * pDescriptorSets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + allocateDescriptorSets( DescriptorSetAllocateInfo const & allocateInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + allocateDescriptorSets( DescriptorSetAllocateInfo const & allocateInfo, + DescriptorSetAllocator const & descriptorSetAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, DescriptorSetAllocator>>::type + allocateDescriptorSetsUnique( DescriptorSetAllocateInfo const & allocateInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, DescriptorSetAllocator>>::type + allocateDescriptorSetsUnique( DescriptorSetAllocateInfo const & allocateInfo, + DescriptorSetAllocator const & descriptorSetAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeDescriptorSets.html + template ::type = true> + VULKAN_HPP_NODISCARD Result freeDescriptorSets( DescriptorPool descriptorPool, + uint32_t descriptorSetCount, + DescriptorSet const * pDescriptorSets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeDescriptorSets.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + freeDescriptorSets( DescriptorPool descriptorPool, + ArrayProxy const & descriptorSets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkFreeDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeDescriptorSets.html + template ::type = true> + VULKAN_HPP_NODISCARD Result( free )( DescriptorPool descriptorPool, + uint32_t descriptorSetCount, + DescriptorSet const * pDescriptorSets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkFreeDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFreeDescriptorSets.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type( free )( DescriptorPool descriptorPool, + ArrayProxy const & descriptorSets, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSets.html + template ::type = true> + void updateDescriptorSets( uint32_t descriptorWriteCount, + WriteDescriptorSet const * pDescriptorWrites, + uint32_t descriptorCopyCount, + CopyDescriptorSet const * pDescriptorCopies, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSets.html + template ::type = true> + void updateDescriptorSets( ArrayProxy const & descriptorWrites, + ArrayProxy const & descriptorCopies, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createGraphicsPipelines( PipelineCache pipelineCache, + uint32_t createInfoCount, + GraphicsPipelineCreateInfo const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createGraphicsPipelines( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createGraphicsPipelines( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue createGraphicsPipeline( PipelineCache pipelineCache, + GraphicsPipelineCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createGraphicsPipelinesUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createGraphicsPipelinesUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createGraphicsPipelineUnique( PipelineCache pipelineCache, + GraphicsPipelineCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFramebuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createFramebuffer( FramebufferCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + Framebuffer * pFramebuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFramebuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createFramebuffer( FramebufferCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFramebuffer.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createFramebufferUnique( FramebufferCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFramebuffer.html + template ::type = true> + void destroyFramebuffer( Framebuffer framebuffer, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFramebuffer.html + template ::type = true> + void destroyFramebuffer( Framebuffer framebuffer VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFramebuffer.html + template ::type = true> + void destroy( Framebuffer framebuffer, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyFramebuffer.html + template ::type = true> + void destroy( Framebuffer framebuffer, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createRenderPass( RenderPassCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + RenderPass * pRenderPass, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createRenderPass( RenderPassCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createRenderPassUnique( RenderPassCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyRenderPass.html + template ::type = true> + void destroyRenderPass( RenderPass renderPass, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyRenderPass.html + template ::type = true> + void destroyRenderPass( RenderPass renderPass VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyRenderPass.html + template ::type = true> + void destroy( RenderPass renderPass, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyRenderPass.html + template ::type = true> + void destroy( RenderPass renderPass, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRenderAreaGranularity, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderAreaGranularity.html + template ::type = true> + void getRenderAreaGranularity( RenderPass renderPass, + Extent2D * pGranularity, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRenderAreaGranularity, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderAreaGranularity.html + template ::type = true> + VULKAN_HPP_NODISCARD Extent2D getRenderAreaGranularity( RenderPass renderPass, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkBindBufferMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindBufferMemory2( uint32_t bindInfoCount, + BindBufferMemoryInfo const * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindBufferMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindBufferMemory2( ArrayProxy const & bindInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindImageMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindImageMemory2( uint32_t bindInfoCount, + BindImageMemoryInfo const * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindImageMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindImageMemory2( ArrayProxy const & bindInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceGroupPeerMemoryFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeatures.html + template ::type = true> + void getGroupPeerMemoryFeatures( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + PeerMemoryFeatureFlags * pPeerMemoryFeatures, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceGroupPeerMemoryFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeatures.html + template ::type = true> + VULKAN_HPP_NODISCARD PeerMemoryFeatureFlags + getGroupPeerMemoryFeatures( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html + template ::type = true> + void getImageMemoryRequirements2( ImageMemoryRequirementsInfo2 const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirements2( + ImageMemoryRequirementsInfo2 const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getImageMemoryRequirements2( ImageMemoryRequirementsInfo2 const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html + template ::type = true> + void getBufferMemoryRequirements2( BufferMemoryRequirementsInfo2 const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirements2( + BufferMemoryRequirementsInfo2 const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetBufferMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getBufferMemoryRequirements2( BufferMemoryRequirementsInfo2 const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSparseMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2.html + template ::type = true> + void getImageSparseMemoryRequirements2( ImageSparseMemoryRequirementsInfo2 const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSparseMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2.html + template < + typename SparseImageMemoryRequirements2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2( ImageSparseMemoryRequirementsInfo2 const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetImageSparseMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2.html + template < + typename SparseImageMemoryRequirements2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2( ImageSparseMemoryRequirementsInfo2 const & info, + SparseImageMemoryRequirements2Allocator const & sparseImageMemoryRequirements2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkTrimCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPool.html + template ::type = true> + void trimCommandPool( CommandPool commandPool, + CommandPoolTrimFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceQueue2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue2.html + template ::type = true> + void + getQueue2( DeviceQueueInfo2 const * pQueueInfo, Queue * pQueue, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceQueue2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue2.html + template ::type = true> + VULKAN_HPP_NODISCARD Queue getQueue2( DeviceQueueInfo2 const & queueInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplate.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDescriptorUpdateTemplate( DescriptorUpdateTemplateCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DescriptorUpdateTemplate * pDescriptorUpdateTemplate, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplate.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDescriptorUpdateTemplate( DescriptorUpdateTemplateCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplate.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDescriptorUpdateTemplateUnique( DescriptorUpdateTemplateCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplate.html + template ::type = true> + void destroyDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplate.html + template ::type = true> + void destroyDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplate.html + template ::type = true> + void destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplate.html + template ::type = true> + void destroy( DescriptorUpdateTemplate descriptorUpdateTemplate, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplate.html + template ::type = true> + void updateDescriptorSetWithTemplate( DescriptorSet descriptorSet, + DescriptorUpdateTemplate descriptorUpdateTemplate, + void const * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplate.html + template ::type = true> + void updateDescriptorSetWithTemplate( DescriptorSet descriptorSet, + DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDescriptorSetLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html + template ::type = true> + void getDescriptorSetLayoutSupport( DescriptorSetLayoutCreateInfo const * pCreateInfo, + DescriptorSetLayoutSupport * pSupport, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html + template ::type = true> + VULKAN_HPP_NODISCARD DescriptorSetLayoutSupport getDescriptorSetLayoutSupport( + DescriptorSetLayoutCreateInfo const & createInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDescriptorSetLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getDescriptorSetLayoutSupport( DescriptorSetLayoutCreateInfo const & createInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateSamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversion.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createSamplerYcbcrConversion( SamplerYcbcrConversionCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SamplerYcbcrConversion * pYcbcrConversion, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversion.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSamplerYcbcrConversion( SamplerYcbcrConversionCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversion.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createSamplerYcbcrConversionUnique( SamplerYcbcrConversionCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversion.html + template ::type = true> + void destroySamplerYcbcrConversion( SamplerYcbcrConversion ycbcrConversion, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversion.html + template ::type = true> + void destroySamplerYcbcrConversion( SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversion.html + template ::type = true> + void destroy( SamplerYcbcrConversion ycbcrConversion, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversion.html + template ::type = true> + void destroy( SamplerYcbcrConversion ycbcrConversion, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_2 === + + // wrapper function for command vkResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPool.html + template ::type = true> + void resetQueryPool( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetSemaphoreCounterValue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValue.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSemaphoreCounterValue( Semaphore semaphore, + uint64_t * pValue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSemaphoreCounterValue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValue.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getSemaphoreCounterValue( Semaphore semaphore, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkWaitSemaphores, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphores.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitSemaphores( SemaphoreWaitInfo const * pWaitInfo, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWaitSemaphores, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphores.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitSemaphores( SemaphoreWaitInfo const & waitInfo, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSignalSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphore.html + template ::type = true> + VULKAN_HPP_NODISCARD Result signalSemaphore( SemaphoreSignalInfo const * pSignalInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSignalSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphore.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + signalSemaphore( SemaphoreSignalInfo const & signalInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferDeviceAddress, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddress.html + template ::type = true> + DeviceAddress getBufferAddress( BufferDeviceAddressInfo const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferDeviceAddress, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddress.html + template ::type = true> + DeviceAddress getBufferAddress( BufferDeviceAddressInfo const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddress.html + template ::type = true> + uint64_t getBufferOpaqueCaptureAddress( BufferDeviceAddressInfo const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddress.html + template ::type = true> + uint64_t getBufferOpaqueCaptureAddress( BufferDeviceAddressInfo const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddress.html + template ::type = true> + uint64_t getMemoryOpaqueCaptureAddress( DeviceMemoryOpaqueCaptureAddressInfo const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddress.html + template ::type = true> + uint64_t getMemoryOpaqueCaptureAddress( DeviceMemoryOpaqueCaptureAddressInfo const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createRenderPass2( RenderPassCreateInfo2 const * pCreateInfo, + AllocationCallbacks const * pAllocator, + RenderPass * pRenderPass, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createRenderPass2( RenderPassCreateInfo2 const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createRenderPass2Unique( RenderPassCreateInfo2 const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_3 === + + // wrapper function for command vkCreatePrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlot.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createPrivateDataSlot( PrivateDataSlotCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + PrivateDataSlot * pPrivateDataSlot, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreatePrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlot.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createPrivateDataSlot( PrivateDataSlotCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreatePrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlot.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createPrivateDataSlotUnique( PrivateDataSlotCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlot.html + template ::type = true> + void destroyPrivateDataSlot( PrivateDataSlot privateDataSlot, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlot.html + template ::type = true> + void destroyPrivateDataSlot( PrivateDataSlot privateDataSlot VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlot.html + template ::type = true> + void destroy( PrivateDataSlot privateDataSlot, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlot.html + template ::type = true> + void destroy( PrivateDataSlot privateDataSlot, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateData.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setPrivateData( ObjectType objectType, + uint64_t objectHandle, + PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkSetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateData.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setPrivateData( ObjectType objectType, + uint64_t objectHandle, + PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateData.html + template ::type = true> + void getPrivateData( ObjectType objectType, + uint64_t objectHandle, + PrivateDataSlot privateDataSlot, + uint64_t * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateData.html + template ::type = true> + VULKAN_HPP_NODISCARD uint64_t getPrivateData( ObjectType objectType, + uint64_t objectHandle, + PrivateDataSlot privateDataSlot, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html + template ::type = true> + void getBufferMemoryRequirements( DeviceBufferMemoryRequirements const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirements( + DeviceBufferMemoryRequirements const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getBufferMemoryRequirements( DeviceBufferMemoryRequirements const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html + template ::type = true> + void getImageMemoryRequirements( DeviceImageMemoryRequirements const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirements( + DeviceImageMemoryRequirements const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getImageMemoryRequirements( DeviceImageMemoryRequirements const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirements.html + template ::type = true> + void getImageSparseMemoryRequirements( DeviceImageMemoryRequirements const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirements.html + template < + typename SparseImageMemoryRequirements2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements( DeviceImageMemoryRequirements const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetDeviceImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirements.html + template < + typename SparseImageMemoryRequirements2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements( DeviceImageMemoryRequirements const & info, + SparseImageMemoryRequirements2Allocator const & sparseImageMemoryRequirements2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_4 === + + // wrapper function for command vkMapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2.html + template ::type = true> + VULKAN_HPP_NODISCARD Result mapMemory2( MemoryMapInfo const * pMemoryMapInfo, + void ** ppData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkMapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type mapMemory2( MemoryMapInfo const & memoryMapInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUnmapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2.html + template ::type = true> + VULKAN_HPP_NODISCARD Result unmapMemory2( MemoryUnmapInfo const * pMemoryUnmapInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUnmapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + unmapMemory2( MemoryUnmapInfo const & memoryUnmapInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html + template ::type = true> + void getImageSubresourceLayout( DeviceImageSubresourceInfo const * pInfo, + SubresourceLayout2 * pLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD SubresourceLayout2 getImageSubresourceLayout( DeviceImageSubresourceInfo const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDeviceImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getImageSubresourceLayout( DeviceImageSubresourceInfo const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSubresourceLayout2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html + template ::type = true> + void getImageSubresourceLayout2( Image image, + ImageSubresource2 const * pSubresource, + SubresourceLayout2 * pLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSubresourceLayout2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html + template ::type = true> + VULKAN_HPP_NODISCARD SubresourceLayout2 getImageSubresourceLayout2( Image image, + ImageSubresource2 const & subresource, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetImageSubresourceLayout2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain getImageSubresourceLayout2( + Image image, ImageSubresource2 const & subresource, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyMemoryToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImage.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyMemoryToImage( CopyMemoryToImageInfo const * pCopyMemoryToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMemoryToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImage.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + copyMemoryToImage( CopyMemoryToImageInfo const & copyMemoryToImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyImageToMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyImageToMemory( CopyImageToMemoryInfo const * pCopyImageToMemoryInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyImageToMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemory.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + copyImageToMemory( CopyImageToMemoryInfo const & copyImageToMemoryInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyImageToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImage.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyImageToImage( CopyImageToImageInfo const * pCopyImageToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyImageToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImage.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + copyImageToImage( CopyImageToImageInfo const & copyImageToImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkTransitionImageLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD Result transitionImageLayout( uint32_t transitionCount, + HostImageLayoutTransitionInfo const * pTransitions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkTransitionImageLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayout.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + transitionImageLayout( ArrayProxy const & transitions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRenderingAreaGranularity, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularity.html + template ::type = true> + void getRenderingAreaGranularity( RenderingAreaInfo const * pRenderingAreaInfo, + Extent2D * pGranularity, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRenderingAreaGranularity, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularity.html + template ::type = true> + VULKAN_HPP_NODISCARD Extent2D getRenderingAreaGranularity( RenderingAreaInfo const & renderingAreaInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_swapchain === + + // wrapper function for command vkCreateSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSwapchainKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createSwapchainKHR( SwapchainCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SwapchainKHR * pSwapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSwapchainKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSwapchainKHR( SwapchainCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSwapchainKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createSwapchainKHRUnique( SwapchainCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySwapchainKHR.html + template ::type = true> + void destroySwapchainKHR( SwapchainKHR swapchain, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySwapchainKHR.html + template ::type = true> + void destroySwapchainKHR( SwapchainKHR swapchain VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySwapchainKHR.html + template ::type = true> + void destroy( SwapchainKHR swapchain, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySwapchainKHR.html + template ::type = true> + void destroy( SwapchainKHR swapchain, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainImagesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSwapchainImagesKHR( SwapchainKHR swapchain, + uint32_t * pSwapchainImageCount, + Image * pSwapchainImages, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainImagesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSwapchainImagesKHR( SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainImagesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSwapchainImagesKHR( SwapchainKHR swapchain, ImageAllocator const & imageAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkAcquireNextImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImageKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result acquireNextImageKHR( SwapchainKHR swapchain, + uint64_t timeout, + Semaphore semaphore, + Fence fence, + uint32_t * pImageIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireNextImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImageKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue acquireNextImageKHR( SwapchainKHR swapchain, + uint64_t timeout, + Semaphore semaphore VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceGroupPresentCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPresentCapabilitiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceGroupPresentCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPresentCapabilitiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getGroupPresentCapabilitiesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceGroupSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getGroupSurfacePresentModesKHR( SurfaceKHR surface, + DeviceGroupPresentModeFlagsKHR * pModes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceGroupSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getGroupSurfacePresentModesKHR( SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkAcquireNextImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImage2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result acquireNextImage2KHR( AcquireNextImageInfoKHR const * pAcquireInfo, + uint32_t * pImageIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireNextImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImage2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue acquireNextImage2KHR( AcquireNextImageInfoKHR const & acquireInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_display_swapchain === + + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createSharedSwapchainsKHR( uint32_t swapchainCount, + SwapchainCreateInfoKHR const * pCreateInfos, + AllocationCallbacks const * pAllocator, + SwapchainKHR * pSwapchains, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createSharedSwapchainsKHR( ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createSharedSwapchainsKHR( ArrayProxy const & createInfos, + Optional allocator, + SwapchainKHRAllocator const & swapchainKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSharedSwapchainKHR( SwapchainCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, SwapchainKHRAllocator>>::type + createSharedSwapchainsKHRUnique( ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, SwapchainKHRAllocator>>::type + createSharedSwapchainsKHRUnique( ArrayProxy const & createInfos, + Optional allocator, + SwapchainKHRAllocator const & swapchainKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createSharedSwapchainKHRUnique( SwapchainCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_debug_marker === + + // wrapper function for command vkDebugMarkerSetObjectTagEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectTagEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT const * pTagInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDebugMarkerSetObjectTagEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectTagEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT const & tagInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDebugMarkerSetObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectNameEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT const * pNameInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDebugMarkerSetObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectNameEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT const & nameInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_video_queue === + + // wrapper function for command vkCreateVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createVideoSessionKHR( VideoSessionCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + VideoSessionKHR * pVideoSession, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createVideoSessionKHR( VideoSessionCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createVideoSessionKHRUnique( VideoSessionCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionKHR.html + template ::type = true> + void destroyVideoSessionKHR( VideoSessionKHR videoSession, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionKHR.html + template ::type = true> + void destroyVideoSessionKHR( VideoSessionKHR videoSession VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionKHR.html + template ::type = true> + void destroy( VideoSessionKHR videoSession, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionKHR.html + template ::type = true> + void destroy( VideoSessionKHR videoSession, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetVideoSessionMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetVideoSessionMemoryRequirementsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getVideoSessionMemoryRequirementsKHR( VideoSessionKHR videoSession, + uint32_t * pMemoryRequirementsCount, + VideoSessionMemoryRequirementsKHR * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetVideoSessionMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetVideoSessionMemoryRequirementsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoSessionMemoryRequirementsKHR( VideoSessionKHR videoSession, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetVideoSessionMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetVideoSessionMemoryRequirementsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoSessionMemoryRequirementsKHR( VideoSessionKHR videoSession, + VideoSessionMemoryRequirementsKHRAllocator const & videoSessionMemoryRequirementsKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindVideoSessionMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindVideoSessionMemoryKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindVideoSessionMemoryKHR( VideoSessionKHR videoSession, + uint32_t bindSessionMemoryInfoCount, + BindVideoSessionMemoryInfoKHR const * pBindSessionMemoryInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindVideoSessionMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindVideoSessionMemoryKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindVideoSessionMemoryKHR( VideoSessionKHR videoSession, + ArrayProxy const & bindSessionMemoryInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionParametersKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createVideoSessionParametersKHR( VideoSessionParametersCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + VideoSessionParametersKHR * pVideoSessionParameters, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionParametersKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createVideoSessionParametersKHR( VideoSessionParametersCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionParametersKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createVideoSessionParametersKHRUnique( VideoSessionParametersCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateVideoSessionParametersKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result updateVideoSessionParametersKHR( VideoSessionParametersKHR videoSessionParameters, + VideoSessionParametersUpdateInfoKHR const * pUpdateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateVideoSessionParametersKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + updateVideoSessionParametersKHR( VideoSessionParametersKHR videoSessionParameters, + VideoSessionParametersUpdateInfoKHR const & updateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionParametersKHR.html + template ::type = true> + void destroyVideoSessionParametersKHR( VideoSessionParametersKHR videoSessionParameters, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionParametersKHR.html + template ::type = true> + void destroyVideoSessionParametersKHR( VideoSessionParametersKHR videoSessionParameters VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionParametersKHR.html + template ::type = true> + void destroy( VideoSessionParametersKHR videoSessionParameters, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyVideoSessionParametersKHR.html + template ::type = true> + void destroy( VideoSessionParametersKHR videoSessionParameters, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NVX_binary_import === + + // wrapper function for command vkCreateCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuModuleNVX.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createCuModuleNVX( CuModuleCreateInfoNVX const * pCreateInfo, + AllocationCallbacks const * pAllocator, + CuModuleNVX * pModule, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuModuleNVX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCuModuleNVX( CuModuleCreateInfoNVX const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuModuleNVX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createCuModuleNVXUnique( CuModuleCreateInfoNVX const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuFunctionNVX.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createCuFunctionNVX( CuFunctionCreateInfoNVX const * pCreateInfo, + AllocationCallbacks const * pAllocator, + CuFunctionNVX * pFunction, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuFunctionNVX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCuFunctionNVX( CuFunctionCreateInfoNVX const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuFunctionNVX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createCuFunctionNVXUnique( CuFunctionCreateInfoNVX const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuModuleNVX.html + template ::type = true> + void destroyCuModuleNVX( CuModuleNVX module, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuModuleNVX.html + template ::type = true> + void destroyCuModuleNVX( CuModuleNVX module, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuModuleNVX.html + template ::type = true> + void destroy( CuModuleNVX module, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuModuleNVX.html + template ::type = true> + void destroy( CuModuleNVX module, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuFunctionNVX.html + template ::type = true> + void destroyCuFunctionNVX( CuFunctionNVX function, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuFunctionNVX.html + template ::type = true> + void destroyCuFunctionNVX( CuFunctionNVX function, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuFunctionNVX.html + template ::type = true> + void destroy( CuFunctionNVX function, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCuFunctionNVX.html + template ::type = true> + void destroy( CuFunctionNVX function, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NVX_image_view_handle === + + // wrapper function for command vkGetImageViewHandleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandleNVX.html + template ::type = true> + uint32_t getImageViewHandleNVX( ImageViewHandleInfoNVX const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageViewHandleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandleNVX.html + template ::type = true> + uint32_t getImageViewHandleNVX( ImageViewHandleInfoNVX const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageViewHandle64NVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandle64NVX.html + template ::type = true> + uint64_t getImageViewHandle64NVX( ImageViewHandleInfoNVX const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageViewHandle64NVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandle64NVX.html + template ::type = true> + uint64_t getImageViewHandle64NVX( ImageViewHandleInfoNVX const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageViewAddressNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewAddressNVX.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getImageViewAddressNVX( ImageView imageView, + ImageViewAddressPropertiesNVX * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageViewAddressNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewAddressNVX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageViewAddressNVX( ImageView imageView, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceCombinedImageSamplerIndexNVX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceCombinedImageSamplerIndexNVX.html + template ::type = true> + uint64_t getCombinedImageSamplerIndexNVX( uint64_t imageViewIndex, + uint64_t samplerIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_AMD_shader_info === + + // wrapper function for command vkGetShaderInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInfoAMD.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getShaderInfoAMD( Pipeline pipeline, + ShaderStageFlagBits shaderStage, + ShaderInfoTypeAMD infoType, + size_t * pInfoSize, + void * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetShaderInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInfoAMD.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getShaderInfoAMD( + Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetShaderInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInfoAMD.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getShaderInfoAMD( Pipeline pipeline, + ShaderStageFlagBits shaderStage, + ShaderInfoTypeAMD infoType, + Uint8_tAllocator const & uint8_tAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + + // wrapper function for command vkGetMemoryWin32HandleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryWin32HandleNV( DeviceMemory memory, + ExternalMemoryHandleTypeFlagsNV handleType, + HANDLE * pHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryWin32HandleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryWin32HandleNV( DeviceMemory memory, + ExternalMemoryHandleTypeFlagsNV handleType, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_device_group === + + // wrapper function for command vkGetDeviceGroupPeerMemoryFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHR.html + template ::type = true> + void getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + PeerMemoryFeatureFlags * pPeerMemoryFeatures, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceGroupPeerMemoryFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD PeerMemoryFeatureFlags + getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_maintenance1 === + + // wrapper function for command vkTrimCommandPoolKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPoolKHR.html + template ::type = true> + void trimCommandPoolKHR( CommandPool commandPool, + CommandPoolTrimFlags flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + + // wrapper function for command vkGetMemoryWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryWin32HandleKHR( MemoryGetWin32HandleInfoKHR const * pGetWin32HandleInfo, + HANDLE * pHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryWin32HandleKHR( MemoryGetWin32HandleInfoKHR const & getWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryWin32HandlePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandlePropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle, + MemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryWin32HandlePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandlePropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryWin32HandlePropertiesKHR( + ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + + // wrapper function for command vkGetMemoryFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryFdKHR( MemoryGetFdInfoKHR const * pGetFdInfo, + int * pFd, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryFdKHR( MemoryGetFdInfoKHR const & getFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryFdPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, + int fd, + MemoryFdPropertiesKHR * pMemoryFdProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryFdPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + + // wrapper function for command vkImportSemaphoreWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreWin32HandleKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result importSemaphoreWin32HandleKHR( ImportSemaphoreWin32HandleInfoKHR const * pImportSemaphoreWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkImportSemaphoreWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreWin32HandleKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + importSemaphoreWin32HandleKHR( ImportSemaphoreWin32HandleInfoKHR const & importSemaphoreWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSemaphoreWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreWin32HandleKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSemaphoreWin32HandleKHR( SemaphoreGetWin32HandleInfoKHR const * pGetWin32HandleInfo, + HANDLE * pHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSemaphoreWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreWin32HandleKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getSemaphoreWin32HandleKHR( SemaphoreGetWin32HandleInfoKHR const & getWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + + // wrapper function for command vkImportSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreFdKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result importSemaphoreFdKHR( ImportSemaphoreFdInfoKHR const * pImportSemaphoreFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkImportSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreFdKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + importSemaphoreFdKHR( ImportSemaphoreFdInfoKHR const & importSemaphoreFdInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreFdKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSemaphoreFdKHR( SemaphoreGetFdInfoKHR const * pGetFdInfo, + int * pFd, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreFdKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getSemaphoreFdKHR( SemaphoreGetFdInfoKHR const & getFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_descriptor_update_template === + + // wrapper function for command vkCreateDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplateKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DescriptorUpdateTemplate * pDescriptorUpdateTemplate, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplateKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplateKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDescriptorUpdateTemplateKHRUnique( DescriptorUpdateTemplateCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplateKHR.html + template ::type = true> + void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplateKHR.html + template ::type = true> + void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplateKHR.html + template ::type = true> + void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, + DescriptorUpdateTemplate descriptorUpdateTemplate, + void const * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplateKHR.html + template ::type = true> + void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, + DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_display_control === + + // wrapper function for command vkDisplayPowerControlEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDisplayPowerControlEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result displayPowerControlEXT( DisplayKHR display, + DisplayPowerInfoEXT const * pDisplayPowerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDisplayPowerControlEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDisplayPowerControlEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type displayPowerControlEXT( + DisplayKHR display, DisplayPowerInfoEXT const & displayPowerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkRegisterDeviceEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDeviceEventEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result registerEventEXT( DeviceEventInfoEXT const * pDeviceEventInfo, + AllocationCallbacks const * pAllocator, + Fence * pFence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkRegisterDeviceEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDeviceEventEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + registerEventEXT( DeviceEventInfoEXT const & deviceEventInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkRegisterDeviceEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDeviceEventEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + registerEventEXTUnique( DeviceEventInfoEXT const & deviceEventInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkRegisterDisplayEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDisplayEventEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result registerDisplayEventEXT( DisplayKHR display, + DisplayEventInfoEXT const * pDisplayEventInfo, + AllocationCallbacks const * pAllocator, + Fence * pFence, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkRegisterDisplayEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDisplayEventEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + registerDisplayEventEXT( DisplayKHR display, + DisplayEventInfoEXT const & displayEventInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkRegisterDisplayEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDisplayEventEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + registerDisplayEventEXTUnique( DisplayKHR display, + DisplayEventInfoEXT const & displayEventInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSwapchainCounterEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainCounterEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSwapchainCounterEXT( SwapchainKHR swapchain, + SurfaceCounterFlagBitsEXT counter, + uint64_t * pCounterValue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSwapchainCounterEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainCounterEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + ResultValue +# else + typename ResultValueType::type +# endif + getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_GOOGLE_display_timing === + + // wrapper function for command vkGetRefreshCycleDurationGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRefreshCycleDurationGOOGLE.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, + RefreshCycleDurationGOOGLE * pDisplayTimingProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRefreshCycleDurationGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRefreshCycleDurationGOOGLE.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPastPresentationTimingGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingGOOGLE.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, + uint32_t * pPresentationTimingCount, + PastPresentationTimingGOOGLE * pPresentationTimings, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPastPresentationTimingGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingGOOGLE.html + template < + typename PastPresentationTimingGOOGLEAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + ResultValue> +# else + typename ResultValueType>::type +# endif + getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPastPresentationTimingGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingGOOGLE.html + template < + typename PastPresentationTimingGOOGLEAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + ResultValue> +# else + typename ResultValueType>::type +# endif + getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, + PastPresentationTimingGOOGLEAllocator const & pastPresentationTimingGOOGLEAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_hdr_metadata === + + // wrapper function for command vkSetHdrMetadataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetHdrMetadataEXT.html + template ::type = true> + void setHdrMetadataEXT( uint32_t swapchainCount, + SwapchainKHR const * pSwapchains, + HdrMetadataEXT const * pMetadata, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetHdrMetadataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetHdrMetadataEXT.html + template ::type = true> + void setHdrMetadataEXT( ArrayProxy const & swapchains, + ArrayProxy const & metadata, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_create_renderpass2 === + + // wrapper function for command vkCreateRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createRenderPass2KHR( RenderPassCreateInfo2 const * pCreateInfo, + AllocationCallbacks const * pAllocator, + RenderPass * pRenderPass, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createRenderPass2KHR( RenderPassCreateInfo2 const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createRenderPass2KHRUnique( RenderPassCreateInfo2 const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_shared_presentable_image === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSwapchainStatusKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainStatusKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSwapchainStatusKHR( SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkGetSwapchainStatusKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainStatusKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSwapchainStatusKHR( SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + + // wrapper function for command vkImportFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceWin32HandleKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result importFenceWin32HandleKHR( ImportFenceWin32HandleInfoKHR const * pImportFenceWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkImportFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceWin32HandleKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + importFenceWin32HandleKHR( ImportFenceWin32HandleInfoKHR const & importFenceWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceWin32HandleKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getFenceWin32HandleKHR( FenceGetWin32HandleInfoKHR const * pGetWin32HandleInfo, + HANDLE * pHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceWin32HandleKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getFenceWin32HandleKHR( FenceGetWin32HandleInfoKHR const & getWin32HandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + + // wrapper function for command vkImportFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceFdKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result importFenceFdKHR( ImportFenceFdInfoKHR const * pImportFenceFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkImportFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceFdKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + importFenceFdKHR( ImportFenceFdInfoKHR const & importFenceFdInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceFdKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getFenceFdKHR( FenceGetFdInfoKHR const * pGetFdInfo, + int * pFd, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceFdKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getFenceFdKHR( FenceGetFdInfoKHR const & getFdInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_performance_query === + + // wrapper function for command vkAcquireProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireProfilingLockKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result acquireProfilingLockKHR( AcquireProfilingLockInfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireProfilingLockKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + acquireProfilingLockKHR( AcquireProfilingLockInfoKHR const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkReleaseProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseProfilingLockKHR.html + template ::type = true> + void releaseProfilingLockKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_debug_utils === + + // wrapper function for command vkSetDebugUtilsObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setDebugUtilsObjectNameEXT( DebugUtilsObjectNameInfoEXT const * pNameInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetDebugUtilsObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setDebugUtilsObjectNameEXT( DebugUtilsObjectNameInfoEXT const & nameInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkSetDebugUtilsObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setDebugUtilsObjectNameEXT( HandleType const & handle, std::string const & name, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSetDebugUtilsObjectTagEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setDebugUtilsObjectTagEXT( DebugUtilsObjectTagInfoEXT const * pTagInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetDebugUtilsObjectTagEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setDebugUtilsObjectTagEXT( DebugUtilsObjectTagInfoEXT const & tagInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkSetDebugUtilsObjectTagEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type setDebugUtilsObjectTagEXT( + HandleType const & handle, uint64_t name, TagType const & tag, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + + // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getAndroidHardwareBufferPropertiesANDROID( struct AHardwareBuffer const * buffer, + AndroidHardwareBufferPropertiesANDROID * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getAndroidHardwareBufferPropertiesANDROID( struct AHardwareBuffer const & buffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getAndroidHardwareBufferPropertiesANDROID( struct AHardwareBuffer const & buffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryAndroidHardwareBufferANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryAndroidHardwareBufferANDROID.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryAndroidHardwareBufferANDROID( MemoryGetAndroidHardwareBufferInfoANDROID const * pInfo, + struct AHardwareBuffer ** pBuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryAndroidHardwareBufferANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryAndroidHardwareBufferANDROID.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryAndroidHardwareBufferANDROID( MemoryGetAndroidHardwareBufferInfoANDROID const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createExecutionGraphPipelinesAMDX( PipelineCache pipelineCache, + uint32_t createInfoCount, + ExecutionGraphPipelineCreateInfoAMDX const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createExecutionGraphPipelinesAMDX( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createExecutionGraphPipelinesAMDX( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue + createExecutionGraphPipelineAMDX( PipelineCache pipelineCache, + ExecutionGraphPipelineCreateInfoAMDX const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createExecutionGraphPipelinesAMDXUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createExecutionGraphPipelinesAMDXUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createExecutionGraphPipelineAMDXUnique( PipelineCache pipelineCache, + ExecutionGraphPipelineCreateInfoAMDX const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetExecutionGraphPipelineScratchSizeAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineScratchSizeAMDX.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getExecutionGraphPipelineScratchSizeAMDX( Pipeline executionGraph, + ExecutionGraphPipelineScratchSizeAMDX * pSizeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetExecutionGraphPipelineScratchSizeAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineScratchSizeAMDX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getExecutionGraphPipelineScratchSizeAMDX( Pipeline executionGraph, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetExecutionGraphPipelineNodeIndexAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineNodeIndexAMDX.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getExecutionGraphPipelineNodeIndexAMDX( Pipeline executionGraph, + PipelineShaderStageNodeCreateInfoAMDX const * pNodeInfo, + uint32_t * pNodeIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetExecutionGraphPipelineNodeIndexAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineNodeIndexAMDX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getExecutionGraphPipelineNodeIndexAMDX( + Pipeline executionGraph, PipelineShaderStageNodeCreateInfoAMDX const & nodeInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + + // wrapper function for command vkWriteSamplerDescriptorsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteSamplerDescriptorsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result writeSamplerDescriptorsEXT( uint32_t samplerCount, + SamplerCreateInfo const * pSamplers, + HostAddressRangeEXT const * pDescriptors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWriteSamplerDescriptorsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteSamplerDescriptorsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + writeSamplerDescriptorsEXT( ArrayProxy const & samplers, + ArrayProxy const & descriptors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkWriteResourceDescriptorsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteResourceDescriptorsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result writeResourceDescriptorsEXT( uint32_t resourceCount, + ResourceDescriptorInfoEXT const * pResources, + HostAddressRangeEXT const * pDescriptors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWriteResourceDescriptorsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteResourceDescriptorsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + writeResourceDescriptorsEXT( ArrayProxy const & resources, + ArrayProxy const & descriptors, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageOpaqueCaptureDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getImageOpaqueCaptureDataEXT( uint32_t imageCount, + Image const * pImages, + HostAddressRangeEXT * pDatas, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkRegisterCustomBorderColorEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterCustomBorderColorEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result registerCustomBorderColorEXT( SamplerCustomBorderColorCreateInfoEXT const * pBorderColor, + Bool32 requestIndex, + uint32_t * pIndex, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkRegisterCustomBorderColorEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterCustomBorderColorEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type registerCustomBorderColorEXT( + SamplerCustomBorderColorCreateInfoEXT const & borderColor, Bool32 requestIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUnregisterCustomBorderColorEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnregisterCustomBorderColorEXT.html + template ::type = true> + void unregisterCustomBorderColorEXT( uint32_t index, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetTensorOpaqueCaptureDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDataARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getTensorOpaqueCaptureDataARM( uint32_t tensorCount, + TensorARM const * pTensors, + HostAddressRangeEXT * pDatas, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_get_memory_requirements2 === + + // wrapper function for command vkGetImageMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html + template ::type = true> + void getImageMemoryRequirements2KHR( ImageMemoryRequirementsInfo2 const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirements2KHR( + ImageMemoryRequirementsInfo2 const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetImageMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getImageMemoryRequirements2KHR( ImageMemoryRequirementsInfo2 const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html + template ::type = true> + void getBufferMemoryRequirements2KHR( BufferMemoryRequirementsInfo2 const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirements2KHR( + BufferMemoryRequirementsInfo2 const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetBufferMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getBufferMemoryRequirements2KHR( BufferMemoryRequirementsInfo2 const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSparseMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2KHR.html + template ::type = true> + void getImageSparseMemoryRequirements2KHR( ImageSparseMemoryRequirementsInfo2 const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSparseMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2KHR.html + template < + typename SparseImageMemoryRequirements2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2KHR( ImageSparseMemoryRequirementsInfo2 const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetImageSparseMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2KHR.html + template < + typename SparseImageMemoryRequirements2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2KHR( ImageSparseMemoryRequirementsInfo2 const & info, + SparseImageMemoryRequirements2Allocator const & sparseImageMemoryRequirements2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_acceleration_structure === + + // wrapper function for command vkCreateAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createAccelerationStructureKHR( AccelerationStructureCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + AccelerationStructureKHR * pAccelerationStructure, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createAccelerationStructureKHR( AccelerationStructureCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createAccelerationStructureKHRUnique( AccelerationStructureCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureKHR.html + template ::type = true> + void destroyAccelerationStructureKHR( AccelerationStructureKHR accelerationStructure, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureKHR.html + template ::type = true> + void destroyAccelerationStructureKHR( AccelerationStructureKHR accelerationStructure VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureKHR.html + template ::type = true> + void destroy( AccelerationStructureKHR accelerationStructure, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureKHR.html + template ::type = true> + void destroy( AccelerationStructureKHR accelerationStructure, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildAccelerationStructuresKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result buildAccelerationStructuresKHR( DeferredOperationKHR deferredOperation, + uint32_t infoCount, + AccelerationStructureBuildGeometryInfoKHR const * pInfos, + AccelerationStructureBuildRangeInfoKHR const * const * ppBuildRangeInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildAccelerationStructuresKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result buildAccelerationStructuresKHR( DeferredOperationKHR deferredOperation, + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyAccelerationStructureKHR( DeferredOperationKHR deferredOperation, + CopyAccelerationStructureInfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyAccelerationStructureKHR( DeferredOperationKHR deferredOperation, + CopyAccelerationStructureInfoKHR const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureToMemoryKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyAccelerationStructureToMemoryKHR( DeferredOperationKHR deferredOperation, + CopyAccelerationStructureToMemoryInfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureToMemoryKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyAccelerationStructureToMemoryKHR( DeferredOperationKHR deferredOperation, + CopyAccelerationStructureToMemoryInfoKHR const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToAccelerationStructureKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyMemoryToAccelerationStructureKHR( DeferredOperationKHR deferredOperation, + CopyMemoryToAccelerationStructureInfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToAccelerationStructureKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyMemoryToAccelerationStructureKHR( DeferredOperationKHR deferredOperation, + CopyMemoryToAccelerationStructureInfoKHR const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + writeAccelerationStructuresPropertiesKHR( uint32_t accelerationStructureCount, + AccelerationStructureKHR const * pAccelerationStructures, + QueryType queryType, + size_t dataSize, + void * pData, + size_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, + QueryType queryType, + size_t dataSize, + size_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + writeAccelerationStructuresPropertyKHR( ArrayProxy const & accelerationStructures, + QueryType queryType, + size_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetAccelerationStructureDeviceAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureDeviceAddressKHR.html + template ::type = true> + DeviceAddress getAccelerationStructureAddressKHR( AccelerationStructureDeviceAddressInfoKHR const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAccelerationStructureDeviceAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureDeviceAddressKHR.html + template ::type = true> + DeviceAddress getAccelerationStructureAddressKHR( AccelerationStructureDeviceAddressInfoKHR const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceAccelerationStructureCompatibilityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceAccelerationStructureCompatibilityKHR.html + template ::type = true> + void getAccelerationStructureCompatibilityKHR( AccelerationStructureVersionInfoKHR const * pVersionInfo, + AccelerationStructureCompatibilityKHR * pCompatibility, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceAccelerationStructureCompatibilityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceAccelerationStructureCompatibilityKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD AccelerationStructureCompatibilityKHR getAccelerationStructureCompatibilityKHR( + AccelerationStructureVersionInfoKHR const & versionInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetAccelerationStructureBuildSizesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureBuildSizesKHR.html + template ::type = true> + void getAccelerationStructureBuildSizesKHR( AccelerationStructureBuildTypeKHR buildType, + AccelerationStructureBuildGeometryInfoKHR const * pBuildInfo, + uint32_t const * pMaxPrimitiveCounts, + AccelerationStructureBuildSizesInfoKHR * pSizeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAccelerationStructureBuildSizesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureBuildSizesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD AccelerationStructureBuildSizesInfoKHR + getAccelerationStructureBuildSizesKHR( AccelerationStructureBuildTypeKHR buildType, + AccelerationStructureBuildGeometryInfoKHR const & buildInfo, + ArrayProxy const & maxPrimitiveCounts VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_ray_tracing_pipeline === + + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createRayTracingPipelinesKHR( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + uint32_t createInfoCount, + RayTracingPipelineCreateInfoKHR const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelinesKHR( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelinesKHR( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue + createRayTracingPipelineKHR( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + RayTracingPipelineCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createRayTracingPipelinesKHRUnique( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createRayTracingPipelinesKHRUnique( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelineKHRUnique( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + RayTracingPipelineCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getRayTracingShaderGroupHandlesKHR( Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getRayTracingShaderGroupHandlesKHR( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getRayTracingShaderGroupHandleKHR( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getRayTracingCaptureReplayShaderGroupHandlesKHR( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void * pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) + const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getRayTracingCaptureReplayShaderGroupHandlesKHR( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getRayTracingCaptureReplayShaderGroupHandleKHR( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRayTracingShaderGroupStackSizeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupStackSizeKHR.html + template ::type = true> + DeviceSize getRayTracingShaderGroupStackSizeKHR( Pipeline pipeline, + uint32_t group, + ShaderGroupShaderKHR groupShader, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_sampler_ycbcr_conversion === + + // wrapper function for command vkCreateSamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversionKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createSamplerYcbcrConversionKHR( SamplerYcbcrConversionCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SamplerYcbcrConversion * pYcbcrConversion, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversionKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSamplerYcbcrConversionKHR( SamplerYcbcrConversionCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversionKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createSamplerYcbcrConversionKHRUnique( SamplerYcbcrConversionCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversionKHR.html + template ::type = true> + void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversion ycbcrConversion, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversionKHR.html + template ::type = true> + void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_bind_memory2 === + + // wrapper function for command vkBindBufferMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindBufferMemory2KHR( uint32_t bindInfoCount, + BindBufferMemoryInfo const * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindBufferMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindBufferMemory2KHR( ArrayProxy const & bindInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindImageMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindImageMemory2KHR( uint32_t bindInfoCount, + BindImageMemoryInfo const * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindImageMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindImageMemory2KHR( ArrayProxy const & bindInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_image_drm_format_modifier === + + // wrapper function for command vkGetImageDrmFormatModifierPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageDrmFormatModifierPropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getImageDrmFormatModifierPropertiesEXT( Image image, + ImageDrmFormatModifierPropertiesEXT * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageDrmFormatModifierPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageDrmFormatModifierPropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageDrmFormatModifierPropertiesEXT( Image image, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_validation_cache === + + // wrapper function for command vkCreateValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateValidationCacheEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createValidationCacheEXT( ValidationCacheCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + ValidationCacheEXT * pValidationCache, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateValidationCacheEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createValidationCacheEXT( ValidationCacheCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateValidationCacheEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createValidationCacheEXTUnique( ValidationCacheCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyValidationCacheEXT.html + template ::type = true> + void destroyValidationCacheEXT( ValidationCacheEXT validationCache, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyValidationCacheEXT.html + template ::type = true> + void destroyValidationCacheEXT( ValidationCacheEXT validationCache VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyValidationCacheEXT.html + template ::type = true> + void destroy( ValidationCacheEXT validationCache, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyValidationCacheEXT.html + template ::type = true> + void destroy( ValidationCacheEXT validationCache, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkMergeValidationCachesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergeValidationCachesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result mergeValidationCachesEXT( ValidationCacheEXT dstCache, + uint32_t srcCacheCount, + ValidationCacheEXT const * pSrcCaches, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkMergeValidationCachesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergeValidationCachesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type mergeValidationCachesEXT( + ValidationCacheEXT dstCache, ArrayProxy const & srcCaches, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetValidationCacheDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetValidationCacheDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getValidationCacheDataEXT( ValidationCacheEXT validationCache, + size_t * pDataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetValidationCacheDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetValidationCacheDataEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getValidationCacheDataEXT( ValidationCacheEXT validationCache, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetValidationCacheDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetValidationCacheDataEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getValidationCacheDataEXT( + ValidationCacheEXT validationCache, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_ray_tracing === + + // wrapper function for command vkCreateAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createAccelerationStructureNV( AccelerationStructureCreateInfoNV const * pCreateInfo, + AllocationCallbacks const * pAllocator, + AccelerationStructureNV * pAccelerationStructure, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createAccelerationStructureNV( AccelerationStructureCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createAccelerationStructureNVUnique( AccelerationStructureCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureNV.html + template ::type = true> + void destroyAccelerationStructureNV( AccelerationStructureNV accelerationStructure, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureNV.html + template ::type = true> + void destroyAccelerationStructureNV( AccelerationStructureNV accelerationStructure VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureNV.html + template ::type = true> + void destroy( AccelerationStructureNV accelerationStructure, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyAccelerationStructureNV.html + template ::type = true> + void destroy( AccelerationStructureNV accelerationStructure, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html + template ::type = true> + void getAccelerationStructureMemoryRequirementsNV( AccelerationStructureMemoryRequirementsInfoNV const * pInfo, + MemoryRequirements2KHR * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2KHR getAccelerationStructureMemoryRequirementsNV( + AccelerationStructureMemoryRequirementsInfoNV const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getAccelerationStructureMemoryRequirementsNV( AccelerationStructureMemoryRequirementsInfoNV const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindAccelerationStructureMemoryNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindAccelerationStructureMemoryNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindAccelerationStructureMemoryNV( uint32_t bindInfoCount, + BindAccelerationStructureMemoryInfoNV const * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindAccelerationStructureMemoryNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindAccelerationStructureMemoryNV.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindAccelerationStructureMemoryNV( ArrayProxy const & bindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createRayTracingPipelinesNV( PipelineCache pipelineCache, + uint32_t createInfoCount, + RayTracingPipelineCreateInfoNV const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelinesNV( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelinesNV( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue + createRayTracingPipelineNV( PipelineCache pipelineCache, + RayTracingPipelineCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createRayTracingPipelinesNVUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createRayTracingPipelinesNVUnique( PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createRayTracingPipelineNVUnique( PipelineCache pipelineCache, + RayTracingPipelineCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getRayTracingShaderGroupHandlesNV( Pipeline pipeline, + uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getRayTracingShaderGroupHandlesNV( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getRayTracingShaderGroupHandleNV( + Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getAccelerationStructureHandleNV( AccelerationStructureNV accelerationStructure, + size_t dataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getAccelerationStructureHandleNV( + AccelerationStructureNV accelerationStructure, size_t dataSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getAccelerationStructureHandleNV( AccelerationStructureNV accelerationStructure, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCompileDeferredNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCompileDeferredNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result compileDeferredNV( Pipeline pipeline, + uint32_t shader, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkCompileDeferredNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCompileDeferredNV.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + compileDeferredNV( Pipeline pipeline, uint32_t shader, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_maintenance3 === + + // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html + template ::type = true> + void getDescriptorSetLayoutSupportKHR( DescriptorSetLayoutCreateInfo const * pCreateInfo, + DescriptorSetLayoutSupport * pSupport, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD DescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR( + DescriptorSetLayoutCreateInfo const & createInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getDescriptorSetLayoutSupportKHR( DescriptorSetLayoutCreateInfo const & createInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_external_memory_host === + + // wrapper function for command vkGetMemoryHostPointerPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryHostPointerPropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, + void const * pHostPointer, + MemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryHostPointerPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryHostPointerPropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryHostPointerPropertiesEXT( + ExternalMemoryHandleTypeFlagBits handleType, void const * pHostPointer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_calibrated_timestamps === + + // wrapper function for command vkGetCalibratedTimestampsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getCalibratedTimestampsEXT( uint32_t timestampCount, + CalibratedTimestampInfoKHR const * pTimestampInfos, + uint64_t * pTimestamps, + uint64_t * pMaxDeviation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetCalibratedTimestampsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, uint64_t>>::type + getCalibratedTimestampsEXT( ArrayProxy const & timestampInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetCalibratedTimestampsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, uint64_t>>::type + getCalibratedTimestampsEXT( ArrayProxy const & timestampInfos, + Uint64_tAllocator const & uint64_tAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetCalibratedTimestampsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCalibratedTimestampEXT( CalibratedTimestampInfoKHR const & timestampInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_timeline_semaphore === + + // wrapper function for command vkGetSemaphoreCounterValueKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValueKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSemaphoreCounterValueKHR( Semaphore semaphore, + uint64_t * pValue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSemaphoreCounterValueKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValueKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSemaphoreCounterValueKHR( Semaphore semaphore, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkWaitSemaphoresKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphoresKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitSemaphoresKHR( SemaphoreWaitInfo const * pWaitInfo, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWaitSemaphoresKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphoresKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitSemaphoresKHR( SemaphoreWaitInfo const & waitInfo, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSignalSemaphoreKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphoreKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result signalSemaphoreKHR( SemaphoreSignalInfo const * pSignalInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSignalSemaphoreKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphoreKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + signalSemaphoreKHR( SemaphoreSignalInfo const & signalInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_present_timing === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetSwapchainPresentTimingQueueSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetSwapchainPresentTimingQueueSizeEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setSwapchainPresentTimingQueueSizeEXT( SwapchainKHR swapchain, + uint32_t size, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkSetSwapchainPresentTimingQueueSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetSwapchainPresentTimingQueueSizeEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setSwapchainPresentTimingQueueSizeEXT( SwapchainKHR swapchain, + uint32_t size, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetSwapchainTimingPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainTimingPropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSwapchainTimingPropertiesEXT( SwapchainKHR swapchain, + SwapchainTimingPropertiesEXT * pSwapchainTimingProperties, + uint64_t * pSwapchainTimingPropertiesCounter, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSwapchainTimingPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainTimingPropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue> + getSwapchainTimingPropertiesEXT( SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSwapchainTimeDomainPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainTimeDomainPropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSwapchainTimeDomainPropertiesEXT( SwapchainKHR swapchain, + SwapchainTimeDomainPropertiesEXT * pSwapchainTimeDomainProperties, + uint64_t * pTimeDomainsCounter, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPastPresentationTimingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getPastPresentationTimingEXT( PastPresentationTimingInfoEXT const * pPastPresentationTimingInfo, + PastPresentationTimingPropertiesEXT * pPastPresentationTimingProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_INTEL_performance_query === + + // wrapper function for command vkInitializePerformanceApiINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInitializePerformanceApiINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD Result initializePerformanceApiINTEL( InitializePerformanceApiInfoINTEL const * pInitializeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkInitializePerformanceApiINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInitializePerformanceApiINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + initializePerformanceApiINTEL( InitializePerformanceApiInfoINTEL const & initializeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUninitializePerformanceApiINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUninitializePerformanceApiINTEL.html + template ::type = true> + void uninitializePerformanceApiINTEL( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkAcquirePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquirePerformanceConfigurationINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD Result acquirePerformanceConfigurationINTEL( PerformanceConfigurationAcquireInfoINTEL const * pAcquireInfo, + PerformanceConfigurationINTEL * pConfiguration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquirePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquirePerformanceConfigurationINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + acquirePerformanceConfigurationINTEL( PerformanceConfigurationAcquireInfoINTEL const & acquireInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkAcquirePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquirePerformanceConfigurationINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + acquirePerformanceConfigurationINTELUnique( PerformanceConfigurationAcquireInfoINTEL const & acquireInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleasePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleasePerformanceConfigurationINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD Result releasePerformanceConfigurationINTEL( PerformanceConfigurationINTEL configuration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkReleasePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleasePerformanceConfigurationINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + releasePerformanceConfigurationINTEL( PerformanceConfigurationINTEL configuration VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleasePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleasePerformanceConfigurationINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD Result release( PerformanceConfigurationINTEL configuration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkReleasePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleasePerformanceConfigurationINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type release( PerformanceConfigurationINTEL configuration, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetPerformanceParameterINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPerformanceParameterINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getPerformanceParameterINTEL( PerformanceParameterTypeINTEL parameter, + PerformanceValueINTEL * pValue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPerformanceParameterINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPerformanceParameterINTEL.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getPerformanceParameterINTEL( PerformanceParameterTypeINTEL parameter, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_AMD_display_native_hdr === + + // wrapper function for command vkSetLocalDimmingAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLocalDimmingAMD.html + template ::type = true> + void setLocalDimmingAMD( SwapchainKHR swapChain, + Bool32 localDimmingEnable, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_buffer_device_address === + + // wrapper function for command vkGetBufferDeviceAddressEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressEXT.html + template ::type = true> + DeviceAddress getBufferAddressEXT( BufferDeviceAddressInfo const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferDeviceAddressEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressEXT.html + template ::type = true> + DeviceAddress getBufferAddressEXT( BufferDeviceAddressInfo const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_present_wait === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWaitForPresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresentKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitForPresentKHR( SwapchainKHR swapchain, + uint64_t presentId, + uint64_t timeout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkWaitForPresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresentKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + waitForPresentKHR( SwapchainKHR swapchain, uint64_t presentId, uint64_t timeout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireFullScreenExclusiveModeEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result acquireFullScreenExclusiveModeEXT( SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# else + // wrapper function for command vkAcquireFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireFullScreenExclusiveModeEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + acquireFullScreenExclusiveModeEXT( SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseFullScreenExclusiveModeEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result releaseFullScreenExclusiveModeEXT( SwapchainKHR swapchain, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# else + // wrapper function for command vkReleaseFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseFullScreenExclusiveModeEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + releaseFullScreenExclusiveModeEXT( SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetDeviceGroupSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModes2EXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getGroupSurfacePresentModes2EXT( PhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, + DeviceGroupPresentModeFlagsKHR * pModes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceGroupSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModes2EXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getGroupSurfacePresentModes2EXT( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_buffer_device_address === + + // wrapper function for command vkGetBufferDeviceAddressKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressKHR.html + template ::type = true> + DeviceAddress getBufferAddressKHR( BufferDeviceAddressInfo const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferDeviceAddressKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressKHR.html + template ::type = true> + DeviceAddress getBufferAddressKHR( BufferDeviceAddressInfo const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddressKHR.html + template ::type = true> + uint64_t getBufferOpaqueCaptureAddressKHR( BufferDeviceAddressInfo const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddressKHR.html + template ::type = true> + uint64_t getBufferOpaqueCaptureAddressKHR( BufferDeviceAddressInfo const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddressKHR.html + template ::type = true> + uint64_t getMemoryOpaqueCaptureAddressKHR( DeviceMemoryOpaqueCaptureAddressInfo const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddressKHR.html + template ::type = true> + uint64_t getMemoryOpaqueCaptureAddressKHR( DeviceMemoryOpaqueCaptureAddressInfo const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_host_query_reset === + + // wrapper function for command vkResetQueryPoolEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPoolEXT.html + template ::type = true> + void resetQueryPoolEXT( QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_deferred_host_operations === + + // wrapper function for command vkCreateDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDeferredOperationKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDeferredOperationKHR( AllocationCallbacks const * pAllocator, + DeferredOperationKHR * pDeferredOperation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDeferredOperationKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDeferredOperationKHR( Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDeferredOperationKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDeferredOperationKHRUnique( Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDeferredOperationKHR.html + template ::type = true> + void destroyDeferredOperationKHR( DeferredOperationKHR operation, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDeferredOperationKHR.html + template ::type = true> + void destroyDeferredOperationKHR( DeferredOperationKHR operation VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDeferredOperationKHR.html + template ::type = true> + void destroy( DeferredOperationKHR operation, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDeferredOperationKHR.html + template ::type = true> + void destroy( DeferredOperationKHR operation, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeferredOperationMaxConcurrencyKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationMaxConcurrencyKHR.html + template ::type = true> + uint32_t getDeferredOperationMaxConcurrencyKHR( DeferredOperationKHR operation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeferredOperationResultKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationResultKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDeferredOperationResultKHR( DeferredOperationKHR operation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkGetDeferredOperationResultKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationResultKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDeferredOperationResultKHR( DeferredOperationKHR operation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDeferredOperationJoinKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeferredOperationJoinKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result deferredOperationJoinKHR( DeferredOperationKHR operation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkDeferredOperationJoinKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeferredOperationJoinKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result deferredOperationJoinKHR( DeferredOperationKHR operation, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_pipeline_executable_properties === + + // wrapper function for command vkGetPipelineExecutablePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutablePropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getPipelineExecutablePropertiesKHR( PipelineInfoKHR const * pPipelineInfo, + uint32_t * pExecutableCount, + PipelineExecutablePropertiesKHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineExecutablePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutablePropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPipelineExecutablePropertiesKHR( PipelineInfoKHR const & pipelineInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPipelineExecutablePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutablePropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPipelineExecutablePropertiesKHR( PipelineInfoKHR const & pipelineInfo, + PipelineExecutablePropertiesKHRAllocator const & pipelineExecutablePropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineExecutableStatisticsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableStatisticsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getPipelineExecutableStatisticsKHR( PipelineExecutableInfoKHR const * pExecutableInfo, + uint32_t * pStatisticCount, + PipelineExecutableStatisticKHR * pStatistics, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineExecutableStatisticsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableStatisticsKHR.html + template < + typename PipelineExecutableStatisticKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPipelineExecutableStatisticsKHR( PipelineExecutableInfoKHR const & executableInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPipelineExecutableStatisticsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableStatisticsKHR.html + template < + typename PipelineExecutableStatisticKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPipelineExecutableStatisticsKHR( PipelineExecutableInfoKHR const & executableInfo, + PipelineExecutableStatisticKHRAllocator const & pipelineExecutableStatisticKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineExecutableInternalRepresentationsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableInternalRepresentationsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getPipelineExecutableInternalRepresentationsKHR( PipelineExecutableInfoKHR const * pExecutableInfo, + uint32_t * pInternalRepresentationCount, + PipelineExecutableInternalRepresentationKHR * pInternalRepresentations, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_host_image_copy === + + // wrapper function for command vkCopyMemoryToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImageEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyMemoryToImageEXT( CopyMemoryToImageInfo const * pCopyMemoryToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMemoryToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImageEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + copyMemoryToImageEXT( CopyMemoryToImageInfo const & copyMemoryToImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyImageToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemoryEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyImageToMemoryEXT( CopyImageToMemoryInfo const * pCopyImageToMemoryInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyImageToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemoryEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + copyImageToMemoryEXT( CopyImageToMemoryInfo const & copyImageToMemoryInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyImageToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImageEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyImageToImageEXT( CopyImageToImageInfo const * pCopyImageToImageInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyImageToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImageEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + copyImageToImageEXT( CopyImageToImageInfo const & copyImageToImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkTransitionImageLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayoutEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result transitionImageLayoutEXT( uint32_t transitionCount, + HostImageLayoutTransitionInfo const * pTransitions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkTransitionImageLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayoutEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + transitionImageLayoutEXT( ArrayProxy const & transitions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSubresourceLayout2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html + template ::type = true> + void getImageSubresourceLayout2EXT( Image image, + ImageSubresource2 const * pSubresource, + SubresourceLayout2 * pLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSubresourceLayout2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html + template ::type = true> + VULKAN_HPP_NODISCARD SubresourceLayout2 getImageSubresourceLayout2EXT( + Image image, ImageSubresource2 const & subresource, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetImageSubresourceLayout2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain getImageSubresourceLayout2EXT( + Image image, ImageSubresource2 const & subresource, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_map_memory2 === + + // wrapper function for command vkMapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result mapMemory2KHR( MemoryMapInfo const * pMemoryMapInfo, + void ** ppData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkMapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type mapMemory2KHR( MemoryMapInfo const & memoryMapInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUnmapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result unmapMemory2KHR( MemoryUnmapInfo const * pMemoryUnmapInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUnmapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + unmapMemory2KHR( MemoryUnmapInfo const & memoryUnmapInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_swapchain_maintenance1 === + + // wrapper function for command vkReleaseSwapchainImagesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result releaseSwapchainImagesEXT( ReleaseSwapchainImagesInfoKHR const * pReleaseInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseSwapchainImagesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + releaseSwapchainImagesEXT( ReleaseSwapchainImagesInfoKHR const & releaseInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_device_generated_commands === + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html + template ::type = true> + void getGeneratedCommandsMemoryRequirementsNV( GeneratedCommandsMemoryRequirementsInfoNV const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getGeneratedCommandsMemoryRequirementsNV( + GeneratedCommandsMemoryRequirementsInfoNV const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getGeneratedCommandsMemoryRequirementsNV( GeneratedCommandsMemoryRequirementsInfoNV const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createIndirectCommandsLayoutNV( IndirectCommandsLayoutCreateInfoNV const * pCreateInfo, + AllocationCallbacks const * pAllocator, + IndirectCommandsLayoutNV * pIndirectCommandsLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createIndirectCommandsLayoutNV( IndirectCommandsLayoutCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createIndirectCommandsLayoutNVUnique( IndirectCommandsLayoutCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutNV.html + template ::type = true> + void destroyIndirectCommandsLayoutNV( IndirectCommandsLayoutNV indirectCommandsLayout, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutNV.html + template ::type = true> + void destroyIndirectCommandsLayoutNV( IndirectCommandsLayoutNV indirectCommandsLayout VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutNV.html + template ::type = true> + void destroy( IndirectCommandsLayoutNV indirectCommandsLayout, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutNV.html + template ::type = true> + void destroy( IndirectCommandsLayoutNV indirectCommandsLayout, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_private_data === + + // wrapper function for command vkCreatePrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlotEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createPrivateDataSlotEXT( PrivateDataSlotCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + PrivateDataSlot * pPrivateDataSlot, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreatePrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlotEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createPrivateDataSlotEXT( PrivateDataSlotCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreatePrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlotEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createPrivateDataSlotEXTUnique( PrivateDataSlotCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlotEXT.html + template ::type = true> + void destroyPrivateDataSlotEXT( PrivateDataSlot privateDataSlot, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlotEXT.html + template ::type = true> + void destroyPrivateDataSlotEXT( PrivateDataSlot privateDataSlot VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setPrivateDataEXT( ObjectType objectType, + uint64_t objectHandle, + PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkSetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setPrivateDataEXT( ObjectType objectType, + uint64_t objectHandle, + PrivateDataSlot privateDataSlot, + uint64_t data, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateDataEXT.html + template ::type = true> + void getPrivateDataEXT( ObjectType objectType, + uint64_t objectHandle, + PrivateDataSlot privateDataSlot, + uint64_t * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD uint64_t getPrivateDataEXT( ObjectType objectType, + uint64_t objectHandle, + PrivateDataSlot privateDataSlot, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_video_encode_queue === + + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const * pVideoSessionParametersInfo, + VideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo, + size_t * pDataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>>::type + getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>>::type + getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo, + Uint8_tAllocator const & uint8_tAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, std::vector>>::type + getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, std::vector>>::type + getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo, + Uint8_tAllocator const & uint8_tAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + // wrapper function for command vkCreateCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaModuleNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createCudaModuleNV( CudaModuleCreateInfoNV const * pCreateInfo, + AllocationCallbacks const * pAllocator, + CudaModuleNV * pModule, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaModuleNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCudaModuleNV( CudaModuleCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaModuleNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createCudaModuleNVUnique( CudaModuleCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetCudaModuleCacheNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCudaModuleCacheNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getCudaModuleCacheNV( CudaModuleNV module, + size_t * pCacheSize, + void * pCacheData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetCudaModuleCacheNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCudaModuleCacheNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCudaModuleCacheNV( CudaModuleNV module, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetCudaModuleCacheNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCudaModuleCacheNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCudaModuleCacheNV( CudaModuleNV module, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaFunctionNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createCudaFunctionNV( CudaFunctionCreateInfoNV const * pCreateInfo, + AllocationCallbacks const * pAllocator, + CudaFunctionNV * pFunction, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaFunctionNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCudaFunctionNV( CudaFunctionCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaFunctionNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createCudaFunctionNVUnique( CudaFunctionCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaModuleNV.html + template ::type = true> + void destroyCudaModuleNV( CudaModuleNV module, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaModuleNV.html + template ::type = true> + void destroyCudaModuleNV( CudaModuleNV module, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaModuleNV.html + template ::type = true> + void destroy( CudaModuleNV module, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaModuleNV.html + template ::type = true> + void destroy( CudaModuleNV module, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaFunctionNV.html + template ::type = true> + void destroyCudaFunctionNV( CudaFunctionNV function, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaFunctionNV.html + template ::type = true> + void destroyCudaFunctionNV( CudaFunctionNV function, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaFunctionNV.html + template ::type = true> + void destroy( CudaFunctionNV function, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyCudaFunctionNV.html + template ::type = true> + void destroy( CudaFunctionNV function, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + + // wrapper function for command vkExportMetalObjectsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkExportMetalObjectsEXT.html + template ::type = true> + void exportMetalObjectsEXT( ExportMetalObjectsInfoEXT * pMetalObjectsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkExportMetalObjectsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkExportMetalObjectsEXT.html + template ::type = true> + void exportMetalObjectsEXT( ExportMetalObjectsInfoEXT & metalObjectsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_descriptor_buffer === + + // wrapper function for command vkGetDescriptorSetLayoutSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSizeEXT.html + template ::type = true> + void getDescriptorSetLayoutSizeEXT( DescriptorSetLayout layout, + DeviceSize * pLayoutSizeInBytes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetLayoutSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSizeEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD DeviceSize getDescriptorSetLayoutSizeEXT( DescriptorSetLayout layout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDescriptorSetLayoutBindingOffsetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutBindingOffsetEXT.html + template ::type = true> + void getDescriptorSetLayoutBindingOffsetEXT( DescriptorSetLayout layout, + uint32_t binding, + DeviceSize * pOffset, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetLayoutBindingOffsetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutBindingOffsetEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD DeviceSize getDescriptorSetLayoutBindingOffsetEXT( + DescriptorSetLayout layout, uint32_t binding, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + template ::type = true> + void getDescriptorEXT( DescriptorGetInfoEXT const * pDescriptorInfo, + size_t dataSize, + void * pDescriptor, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + template ::type = true> + void getDescriptorEXT( DescriptorGetInfoEXT const & descriptorInfo, + size_t dataSize, + void * pDescriptor, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD DescriptorType getDescriptorEXT( DescriptorGetInfoEXT const & descriptorInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureDescriptorDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getBufferOpaqueCaptureDescriptorDataEXT( + BufferCaptureDescriptorDataInfoEXT const * pInfo, void * pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureDescriptorDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getBufferOpaqueCaptureDescriptorDataEXT( BufferCaptureDescriptorDataInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDescriptorDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getImageOpaqueCaptureDescriptorDataEXT( ImageCaptureDescriptorDataInfoEXT const * pInfo, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDescriptorDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageOpaqueCaptureDescriptorDataEXT( ImageCaptureDescriptorDataInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageViewOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewOpaqueCaptureDescriptorDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getImageViewOpaqueCaptureDescriptorDataEXT( ImageViewCaptureDescriptorDataInfoEXT const * pInfo, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageViewOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewOpaqueCaptureDescriptorDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageViewOpaqueCaptureDescriptorDataEXT( ImageViewCaptureDescriptorDataInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSamplerOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSamplerOpaqueCaptureDescriptorDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSamplerOpaqueCaptureDescriptorDataEXT( + SamplerCaptureDescriptorDataInfoEXT const * pInfo, void * pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSamplerOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSamplerOpaqueCaptureDescriptorDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSamplerOpaqueCaptureDescriptorDataEXT( SamplerCaptureDescriptorDataInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getAccelerationStructureOpaqueCaptureDescriptorDataEXT( AccelerationStructureCaptureDescriptorDataInfoEXT const * pInfo, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getAccelerationStructureOpaqueCaptureDescriptorDataEXT( AccelerationStructureCaptureDescriptorDataInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_device_address_commands === + + // wrapper function for command vkCreateAccelerationStructure2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructure2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createAccelerationStructure2KHR( AccelerationStructureCreateInfo2KHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + AccelerationStructureKHR * pAccelerationStructure, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateAccelerationStructure2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructure2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createAccelerationStructure2KHR( AccelerationStructureCreateInfo2KHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateAccelerationStructure2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructure2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createAccelerationStructure2KHRUnique( AccelerationStructureCreateInfo2KHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_device_fault === + + // wrapper function for command vkGetDeviceFaultInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultInfoEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getFaultInfoEXT( DeviceFaultCountsEXT * pFaultCounts, + DeviceFaultInfoEXT * pFaultInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + + // wrapper function for command vkGetMemoryZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandleFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryZirconHandleFUCHSIA( MemoryGetZirconHandleInfoFUCHSIA const * pGetZirconHandleInfo, + zx_handle_t * pZirconHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandleFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryZirconHandleFUCHSIA( MemoryGetZirconHandleInfoFUCHSIA const & getZirconHandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryZirconHandlePropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandlePropertiesFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryZirconHandlePropertiesFUCHSIA( ExternalMemoryHandleTypeFlagBits handleType, + zx_handle_t zirconHandle, + MemoryZirconHandlePropertiesFUCHSIA * pMemoryZirconHandleProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryZirconHandlePropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandlePropertiesFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryZirconHandlePropertiesFUCHSIA( + ExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + + // wrapper function for command vkImportSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreZirconHandleFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD Result importSemaphoreZirconHandleFUCHSIA( ImportSemaphoreZirconHandleInfoFUCHSIA const * pImportSemaphoreZirconHandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkImportSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreZirconHandleFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + importSemaphoreZirconHandleFUCHSIA( ImportSemaphoreZirconHandleInfoFUCHSIA const & importSemaphoreZirconHandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreZirconHandleFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSemaphoreZirconHandleFUCHSIA( SemaphoreGetZirconHandleInfoFUCHSIA const * pGetZirconHandleInfo, + zx_handle_t * pZirconHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreZirconHandleFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSemaphoreZirconHandleFUCHSIA( SemaphoreGetZirconHandleInfoFUCHSIA const & getZirconHandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + // wrapper function for command vkCreateBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferCollectionFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createBufferCollectionFUCHSIA( BufferCollectionCreateInfoFUCHSIA const * pCreateInfo, + AllocationCallbacks const * pAllocator, + BufferCollectionFUCHSIA * pCollection, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferCollectionFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createBufferCollectionFUCHSIA( BufferCollectionCreateInfoFUCHSIA const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferCollectionFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createBufferCollectionFUCHSIAUnique( BufferCollectionCreateInfoFUCHSIA const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSetBufferCollectionImageConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionImageConstraintsFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + setBufferCollectionImageConstraintsFUCHSIA( BufferCollectionFUCHSIA collection, + ImageConstraintsInfoFUCHSIA const * pImageConstraintsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetBufferCollectionImageConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionImageConstraintsFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setBufferCollectionImageConstraintsFUCHSIA( BufferCollectionFUCHSIA collection, + ImageConstraintsInfoFUCHSIA const & imageConstraintsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSetBufferCollectionBufferConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionBufferConstraintsFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + setBufferCollectionBufferConstraintsFUCHSIA( BufferCollectionFUCHSIA collection, + BufferConstraintsInfoFUCHSIA const * pBufferConstraintsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetBufferCollectionBufferConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionBufferConstraintsFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + setBufferCollectionBufferConstraintsFUCHSIA( BufferCollectionFUCHSIA collection, + BufferConstraintsInfoFUCHSIA const & bufferConstraintsInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferCollectionFUCHSIA.html + template ::type = true> + void destroyBufferCollectionFUCHSIA( BufferCollectionFUCHSIA collection, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferCollectionFUCHSIA.html + template ::type = true> + void destroyBufferCollectionFUCHSIA( BufferCollectionFUCHSIA collection, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferCollectionFUCHSIA.html + template ::type = true> + void destroy( BufferCollectionFUCHSIA collection, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyBufferCollectionFUCHSIA.html + template ::type = true> + void destroy( BufferCollectionFUCHSIA collection, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetBufferCollectionPropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferCollectionPropertiesFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getBufferCollectionPropertiesFUCHSIA( BufferCollectionFUCHSIA collection, + BufferCollectionPropertiesFUCHSIA * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetBufferCollectionPropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferCollectionPropertiesFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getBufferCollectionPropertiesFUCHSIA( BufferCollectionFUCHSIA collection, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + + // wrapper function for command vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSubpassShadingMaxWorkgroupSizeHUAWEI( + RenderPass renderpass, Extent2D * pMaxWorkgroupSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSubpassShadingMaxWorkgroupSizeHUAWEI( RenderPass renderpass, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_external_memory_rdma === + + // wrapper function for command vkGetMemoryRemoteAddressNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryRemoteAddressNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryRemoteAddressNV( MemoryGetRemoteAddressInfoNV const * pMemoryGetRemoteAddressInfo, + RemoteAddressNV * pAddress, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryRemoteAddressNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryRemoteAddressNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryRemoteAddressNV( MemoryGetRemoteAddressInfoNV const & memoryGetRemoteAddressInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_pipeline_properties === + + // wrapper function for command vkGetPipelinePropertiesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelinePropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getPipelinePropertiesEXT( PipelineInfoEXT const * pPipelineInfo, + BaseOutStructure * pPipelineProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelinePropertiesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelinePropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getPipelinePropertiesEXT( PipelineInfoEXT const & pipelineInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_opacity_micromap === + + // wrapper function for command vkCreateMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMicromapEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createMicromapEXT( MicromapCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + MicromapEXT * pMicromap, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMicromapEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createMicromapEXT( MicromapCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMicromapEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createMicromapEXTUnique( MicromapCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyMicromapEXT.html + template ::type = true> + void destroyMicromapEXT( MicromapEXT micromap, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyMicromapEXT.html + template ::type = true> + void destroyMicromapEXT( MicromapEXT micromap VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyMicromapEXT.html + template ::type = true> + void destroy( MicromapEXT micromap, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyMicromapEXT.html + template ::type = true> + void destroy( MicromapEXT micromap, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildMicromapsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result buildMicromapsEXT( DeferredOperationKHR deferredOperation, + uint32_t infoCount, + MicromapBuildInfoEXT const * pInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildMicromapsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result buildMicromapsEXT( DeferredOperationKHR deferredOperation, + ArrayProxy const & infos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyMicromapEXT( DeferredOperationKHR deferredOperation, + CopyMicromapInfoEXT const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyMicromapEXT( DeferredOperationKHR deferredOperation, + CopyMicromapInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyMicromapToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapToMemoryEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyMicromapToMemoryEXT( DeferredOperationKHR deferredOperation, + CopyMicromapToMemoryInfoEXT const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMicromapToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapToMemoryEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyMicromapToMemoryEXT( DeferredOperationKHR deferredOperation, + CopyMicromapToMemoryInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCopyMemoryToMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToMicromapEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyMemoryToMicromapEXT( DeferredOperationKHR deferredOperation, + CopyMemoryToMicromapInfoEXT const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCopyMemoryToMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToMicromapEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result copyMemoryToMicromapEXT( DeferredOperationKHR deferredOperation, + CopyMemoryToMicromapInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result writeMicromapsPropertiesEXT( uint32_t micromapCount, + MicromapEXT const * pMicromaps, + QueryType queryType, + size_t dataSize, + void * pData, + size_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + writeMicromapsPropertiesEXT( ArrayProxy const & micromaps, + QueryType queryType, + size_t dataSize, + size_t stride, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type writeMicromapsPropertyEXT( + ArrayProxy const & micromaps, QueryType queryType, size_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceMicromapCompatibilityEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMicromapCompatibilityEXT.html + template ::type = true> + void getMicromapCompatibilityEXT( MicromapVersionInfoEXT const * pVersionInfo, + AccelerationStructureCompatibilityKHR * pCompatibility, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceMicromapCompatibilityEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMicromapCompatibilityEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD AccelerationStructureCompatibilityKHR getMicromapCompatibilityEXT( + MicromapVersionInfoEXT const & versionInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMicromapBuildSizesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMicromapBuildSizesEXT.html + template ::type = true> + void getMicromapBuildSizesEXT( AccelerationStructureBuildTypeKHR buildType, + MicromapBuildInfoEXT const * pBuildInfo, + MicromapBuildSizesInfoEXT * pSizeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMicromapBuildSizesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMicromapBuildSizesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD MicromapBuildSizesInfoEXT + getMicromapBuildSizesEXT( AccelerationStructureBuildTypeKHR buildType, + MicromapBuildInfoEXT const & buildInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_pageable_device_local_memory === + + // wrapper function for command vkSetDeviceMemoryPriorityEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDeviceMemoryPriorityEXT.html + template ::type = true> + void setMemoryPriorityEXT( DeviceMemory memory, float priority, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_maintenance4 === + + // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html + template ::type = true> + void getBufferMemoryRequirementsKHR( DeviceBufferMemoryRequirements const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirementsKHR( + DeviceBufferMemoryRequirements const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getBufferMemoryRequirementsKHR( DeviceBufferMemoryRequirements const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html + template ::type = true> + void getImageMemoryRequirementsKHR( DeviceImageMemoryRequirements const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirementsKHR( + DeviceImageMemoryRequirements const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getImageMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageSparseMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirementsKHR.html + template ::type = true> + void getImageSparseMemoryRequirementsKHR( DeviceImageMemoryRequirements const * pInfo, + uint32_t * pSparseMemoryRequirementCount, + SparseImageMemoryRequirements2 * pSparseMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageSparseMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirementsKHR.html + template < + typename SparseImageMemoryRequirements2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetDeviceImageSparseMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirementsKHR.html + template < + typename SparseImageMemoryRequirements2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info, + SparseImageMemoryRequirements2Allocator const & sparseImageMemoryRequirements2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VALVE_descriptor_set_host_mapping === + + // wrapper function for command vkGetDescriptorSetLayoutHostMappingInfoVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutHostMappingInfoVALVE.html + template ::type = true> + void getDescriptorSetLayoutHostMappingInfoVALVE( DescriptorSetBindingReferenceVALVE const * pBindingReference, + DescriptorSetLayoutHostMappingInfoVALVE * pHostMapping, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetLayoutHostMappingInfoVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutHostMappingInfoVALVE.html + template ::type = true> + VULKAN_HPP_NODISCARD DescriptorSetLayoutHostMappingInfoVALVE getDescriptorSetLayoutHostMappingInfoVALVE( + DescriptorSetBindingReferenceVALVE const & bindingReference, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDescriptorSetHostMappingVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetHostMappingVALVE.html + template ::type = true> + void getDescriptorSetHostMappingVALVE( DescriptorSet descriptorSet, + void ** ppData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDescriptorSetHostMappingVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetHostMappingVALVE.html + template ::type = true> + VULKAN_HPP_NODISCARD void * getDescriptorSetHostMappingVALVE( DescriptorSet descriptorSet, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_device_generated_commands_compute === + + // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html + template ::type = true> + void getPipelineIndirectMemoryRequirementsNV( ComputePipelineCreateInfo const * pCreateInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getPipelineIndirectMemoryRequirementsNV( + ComputePipelineCreateInfo const & createInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getPipelineIndirectMemoryRequirementsNV( ComputePipelineCreateInfo const & createInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineIndirectDeviceAddressNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectDeviceAddressNV.html + template ::type = true> + DeviceAddress getPipelineIndirectAddressNV( PipelineIndirectDeviceAddressInfoNV const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineIndirectDeviceAddressNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectDeviceAddressNV.html + template ::type = true> + DeviceAddress getPipelineIndirectAddressNV( PipelineIndirectDeviceAddressInfoNV const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + + // wrapper function for command vkGetNativeBufferPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getNativeBufferPropertiesOHOS( struct OH_NativeBuffer const * buffer, + NativeBufferPropertiesOHOS * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetNativeBufferPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getNativeBufferPropertiesOHOS( struct OH_NativeBuffer const & buffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetNativeBufferPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getNativeBufferPropertiesOHOS( struct OH_NativeBuffer const & buffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryNativeBufferOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryNativeBufferOHOS.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryNativeBufferOHOS( MemoryGetNativeBufferInfoOHOS const * pInfo, + struct OH_NativeBuffer ** pBuffer, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryNativeBufferOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryNativeBufferOHOS.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryNativeBufferOHOS( MemoryGetNativeBufferInfoOHOS const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_ARM_tensors === + + // wrapper function for command vkCreateTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createTensorARM( TensorCreateInfoARM const * pCreateInfo, + AllocationCallbacks const * pAllocator, + TensorARM * pTensor, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorARM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createTensorARM( TensorCreateInfoARM const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorARM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createTensorARMUnique( TensorCreateInfoARM const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorARM.html + template ::type = true> + void destroyTensorARM( TensorARM tensor, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorARM.html + template ::type = true> + void destroyTensorARM( TensorARM tensor VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorARM.html + template ::type = true> + void destroy( TensorARM tensor, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorARM.html + template ::type = true> + void destroy( TensorARM tensor, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorViewARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createTensorViewARM( TensorViewCreateInfoARM const * pCreateInfo, + AllocationCallbacks const * pAllocator, + TensorViewARM * pView, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorViewARM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createTensorViewARM( TensorViewCreateInfoARM const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorViewARM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createTensorViewARMUnique( TensorViewCreateInfoARM const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorViewARM.html + template ::type = true> + void destroyTensorViewARM( TensorViewARM tensorView, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorViewARM.html + template ::type = true> + void destroyTensorViewARM( TensorViewARM tensorView VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorViewARM.html + template ::type = true> + void destroy( TensorViewARM tensorView, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyTensorViewARM.html + template ::type = true> + void destroy( TensorViewARM tensorView, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html + template ::type = true> + void getTensorMemoryRequirementsARM( TensorMemoryRequirementsInfoARM const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getTensorMemoryRequirementsARM( + TensorMemoryRequirementsInfoARM const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getTensorMemoryRequirementsARM( TensorMemoryRequirementsInfoARM const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindTensorMemoryARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindTensorMemoryARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindTensorMemoryARM( uint32_t bindInfoCount, + BindTensorMemoryInfoARM const * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindTensorMemoryARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindTensorMemoryARM.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindTensorMemoryARM( ArrayProxy const & bindInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html + template ::type = true> + void getTensorMemoryRequirementsARM( DeviceTensorMemoryRequirementsARM const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getTensorMemoryRequirementsARM( + DeviceTensorMemoryRequirementsARM const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getTensorMemoryRequirementsARM( DeviceTensorMemoryRequirementsARM const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetTensorOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDescriptorDataARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getTensorOpaqueCaptureDescriptorDataARM( + TensorCaptureDescriptorDataInfoARM const * pInfo, void * pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetTensorOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDescriptorDataARM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getTensorOpaqueCaptureDescriptorDataARM( TensorCaptureDescriptorDataInfoARM const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetTensorViewOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorViewOpaqueCaptureDescriptorDataARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getTensorViewOpaqueCaptureDescriptorDataARM( TensorViewCaptureDescriptorDataInfoARM const * pInfo, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetTensorViewOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorViewOpaqueCaptureDescriptorDataARM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getTensorViewOpaqueCaptureDescriptorDataARM( TensorViewCaptureDescriptorDataInfoARM const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_shader_module_identifier === + + // wrapper function for command vkGetShaderModuleIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleIdentifierEXT.html + template ::type = true> + void getShaderModuleIdentifierEXT( ShaderModule shaderModule, + ShaderModuleIdentifierEXT * pIdentifier, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetShaderModuleIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleIdentifierEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD ShaderModuleIdentifierEXT + getShaderModuleIdentifierEXT( ShaderModule shaderModule, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetShaderModuleCreateInfoIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleCreateInfoIdentifierEXT.html + template ::type = true> + void getShaderModuleCreateInfoIdentifierEXT( ShaderModuleCreateInfo const * pCreateInfo, + ShaderModuleIdentifierEXT * pIdentifier, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetShaderModuleCreateInfoIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleCreateInfoIdentifierEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD ShaderModuleIdentifierEXT getShaderModuleCreateInfoIdentifierEXT( + ShaderModuleCreateInfo const & createInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_optical_flow === + + // wrapper function for command vkCreateOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateOpticalFlowSessionNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createOpticalFlowSessionNV( OpticalFlowSessionCreateInfoNV const * pCreateInfo, + AllocationCallbacks const * pAllocator, + OpticalFlowSessionNV * pSession, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateOpticalFlowSessionNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createOpticalFlowSessionNV( OpticalFlowSessionCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateOpticalFlowSessionNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createOpticalFlowSessionNVUnique( OpticalFlowSessionCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyOpticalFlowSessionNV.html + template ::type = true> + void destroyOpticalFlowSessionNV( OpticalFlowSessionNV session, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyOpticalFlowSessionNV.html + template ::type = true> + void destroyOpticalFlowSessionNV( OpticalFlowSessionNV session, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyOpticalFlowSessionNV.html + template ::type = true> + void destroy( OpticalFlowSessionNV session, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyOpticalFlowSessionNV.html + template ::type = true> + void destroy( OpticalFlowSessionNV session, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindOpticalFlowSessionImageNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindOpticalFlowSessionImageNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindOpticalFlowSessionImageNV( OpticalFlowSessionNV session, + OpticalFlowSessionBindingPointNV bindingPoint, + ImageView view, + ImageLayout layout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkBindOpticalFlowSessionImageNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindOpticalFlowSessionImageNV.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindOpticalFlowSessionImageNV( OpticalFlowSessionNV session, + OpticalFlowSessionBindingPointNV bindingPoint, + ImageView view, + ImageLayout layout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + //=== VK_KHR_maintenance5 === + + // wrapper function for command vkGetRenderingAreaGranularityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularityKHR.html + template ::type = true> + void getRenderingAreaGranularityKHR( RenderingAreaInfo const * pRenderingAreaInfo, + Extent2D * pGranularity, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRenderingAreaGranularityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularityKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Extent2D getRenderingAreaGranularityKHR( RenderingAreaInfo const & renderingAreaInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html + template ::type = true> + void getImageSubresourceLayoutKHR( DeviceImageSubresourceInfo const * pInfo, + SubresourceLayout2 * pLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD SubresourceLayout2 getImageSubresourceLayoutKHR( + DeviceImageSubresourceInfo const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getImageSubresourceLayoutKHR( DeviceImageSubresourceInfo const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetImageSubresourceLayout2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html + template ::type = true> + void getImageSubresourceLayout2KHR( Image image, + ImageSubresource2 const * pSubresource, + SubresourceLayout2 * pLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetImageSubresourceLayout2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD SubresourceLayout2 getImageSubresourceLayout2KHR( + Image image, ImageSubresource2 const & subresource, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetImageSubresourceLayout2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain getImageSubresourceLayout2KHR( + Image image, ImageSubresource2 const & subresource, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_AMD_anti_lag === + + // wrapper function for command vkAntiLagUpdateAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAntiLagUpdateAMD.html + template ::type = true> + void antiLagUpdateAMD( AntiLagDataAMD const * pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAntiLagUpdateAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAntiLagUpdateAMD.html + template ::type = true> + void antiLagUpdateAMD( AntiLagDataAMD const & data, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_present_wait2 === + + // wrapper function for command vkWaitForPresent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresent2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitForPresent2KHR( SwapchainKHR swapchain, + PresentWait2InfoKHR const * pPresentWait2Info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkWaitForPresent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresent2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result waitForPresent2KHR( SwapchainKHR swapchain, + PresentWait2InfoKHR const & presentWait2Info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_shader_object === + + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createShadersEXT( uint32_t createInfoCount, + ShaderCreateInfoEXT const * pCreateInfos, + AllocationCallbacks const * pAllocator, + ShaderEXT * pShaders, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createShadersEXT( ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createShadersEXT( ArrayProxy const & createInfos, + Optional allocator, + ShaderEXTAllocator const & shaderEXTAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue createShaderEXT( ShaderCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, ShaderEXTAllocator>> + createShadersEXTUnique( ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, ShaderEXTAllocator>> + createShadersEXTUnique( ArrayProxy const & createInfos, + Optional allocator, + ShaderEXTAllocator const & shaderEXTAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createShaderEXTUnique( ShaderCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderEXT.html + template ::type = true> + void destroyShaderEXT( ShaderEXT shader, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderEXT.html + template ::type = true> + void destroyShaderEXT( ShaderEXT shader VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderEXT.html + template ::type = true> + void destroy( ShaderEXT shader, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderEXT.html + template ::type = true> + void destroy( ShaderEXT shader, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetShaderBinaryDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderBinaryDataEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getShaderBinaryDataEXT( ShaderEXT shader, + size_t * pDataSize, + void * pData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetShaderBinaryDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderBinaryDataEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getShaderBinaryDataEXT( ShaderEXT shader, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetShaderBinaryDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderBinaryDataEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getShaderBinaryDataEXT( ShaderEXT shader, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_pipeline_binary === + + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createPipelineBinariesKHR( PipelineBinaryCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + PipelineBinaryHandlesInfoKHR * pBinaries, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createPipelineBinariesKHR( PipelineBinaryCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createPipelineBinariesKHR( PipelineBinaryCreateInfoKHR const & createInfo, + Optional allocator, + PipelineBinaryKHRAllocator const & pipelineBinaryKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + template < + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename PipelineBinaryKHRAllocator = std::allocator>, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineBinaryKHRAllocator>> + createPipelineBinariesKHRUnique( PipelineBinaryCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + template < + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename PipelineBinaryKHRAllocator = std::allocator>, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineBinaryKHRAllocator>> + createPipelineBinariesKHRUnique( PipelineBinaryCreateInfoKHR const & createInfo, + Optional allocator, + PipelineBinaryKHRAllocator const & pipelineBinaryKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineBinaryKHR.html + template ::type = true> + void destroyPipelineBinaryKHR( PipelineBinaryKHR pipelineBinary, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineBinaryKHR.html + template ::type = true> + void destroyPipelineBinaryKHR( PipelineBinaryKHR pipelineBinary VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineBinaryKHR.html + template ::type = true> + void destroy( PipelineBinaryKHR pipelineBinary, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPipelineBinaryKHR.html + template ::type = true> + void destroy( PipelineBinaryKHR pipelineBinary, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineKeyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineKeyKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getPipelineKeyKHR( PipelineCreateInfoKHR const * pPipelineCreateInfo, + PipelineBinaryKeyKHR * pPipelineKey, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineKeyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineKeyKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getPipelineKeyKHR( Optional pipelineCreateInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineBinaryDataKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getPipelineBinaryDataKHR( PipelineBinaryDataInfoKHR const * pInfo, + PipelineBinaryKeyKHR * pPipelineBinaryKey, + size_t * pPipelineBinaryDataSize, + void * pPipelineBinaryData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineBinaryDataKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>>::type + getPipelineBinaryDataKHR( PipelineBinaryDataInfoKHR const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineBinaryDataKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>>::type getPipelineBinaryDataKHR( + PipelineBinaryDataInfoKHR const & info, Uint8_tAllocator const & uint8_tAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkReleaseCapturedPipelineDataKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseCapturedPipelineDataKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result releaseCapturedPipelineDataKHR( ReleaseCapturedPipelineDataInfoKHR const * pInfo, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseCapturedPipelineDataKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseCapturedPipelineDataKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + releaseCapturedPipelineDataKHR( ReleaseCapturedPipelineDataInfoKHR const & info, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_QCOM_tile_properties === + + // wrapper function for command vkGetFramebufferTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFramebufferTilePropertiesQCOM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getFramebufferTilePropertiesQCOM( Framebuffer framebuffer, + uint32_t * pPropertiesCount, + TilePropertiesQCOM * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetFramebufferTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFramebufferTilePropertiesQCOM.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getFramebufferTilePropertiesQCOM( Framebuffer framebuffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetFramebufferTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFramebufferTilePropertiesQCOM.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getFramebufferTilePropertiesQCOM( Framebuffer framebuffer, + TilePropertiesQCOMAllocator const & tilePropertiesQCOMAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDynamicRenderingTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDynamicRenderingTilePropertiesQCOM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDynamicRenderingTilePropertiesQCOM( RenderingInfo const * pRenderingInfo, + TilePropertiesQCOM * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDynamicRenderingTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDynamicRenderingTilePropertiesQCOM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getDynamicRenderingTilePropertiesQCOM( RenderingInfo const & renderingInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_swapchain_maintenance1 === + + // wrapper function for command vkReleaseSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result releaseSwapchainImagesKHR( ReleaseSwapchainImagesInfoKHR const * pReleaseInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + releaseSwapchainImagesKHR( ReleaseSwapchainImagesInfoKHR const & releaseInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_cooperative_vector === + + // wrapper function for command vkConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkConvertCooperativeVectorMatrixNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result convertCooperativeVectorMatrixNV( ConvertCooperativeVectorMatrixInfoNV const * pInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkConvertCooperativeVectorMatrixNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result convertCooperativeVectorMatrixNV( ConvertCooperativeVectorMatrixInfoNV const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_low_latency2 === + + // wrapper function for command vkSetLatencySleepModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencySleepModeNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result setLatencySleepModeNV( SwapchainKHR swapchain, + LatencySleepModeInfoNV const * pSleepModeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetLatencySleepModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencySleepModeNV.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type setLatencySleepModeNV( + SwapchainKHR swapchain, LatencySleepModeInfoNV const & sleepModeInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkLatencySleepNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkLatencySleepNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result latencySleepNV( SwapchainKHR swapchain, + LatencySleepInfoNV const * pSleepInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkLatencySleepNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkLatencySleepNV.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + latencySleepNV( SwapchainKHR swapchain, LatencySleepInfoNV const & sleepInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSetLatencyMarkerNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencyMarkerNV.html + template ::type = true> + void setLatencyMarkerNV( SwapchainKHR swapchain, + SetLatencyMarkerInfoNV const * pLatencyMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSetLatencyMarkerNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencyMarkerNV.html + template ::type = true> + void setLatencyMarkerNV( SwapchainKHR swapchain, + SetLatencyMarkerInfoNV const & latencyMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetLatencyTimingsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetLatencyTimingsNV.html + template ::type = true> + void getLatencyTimingsNV( SwapchainKHR swapchain, + GetLatencyMarkerInfoNV * pLatencyMarkerInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_ARM_data_graph === + + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDataGraphPipelinesARM( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + uint32_t createInfoCount, + DataGraphPipelineCreateInfoARM const * pCreateInfos, + AllocationCallbacks const * pAllocator, + Pipeline * pPipelines, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createDataGraphPipelinesARM( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createDataGraphPipelinesARM( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue + createDataGraphPipelineARM( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + DataGraphPipelineCreateInfoARM const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createDataGraphPipelinesARMUnique( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template >, + typename std::enable_if>::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> + createDataGraphPipelinesARMUnique( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + ArrayProxy const & createInfos, + Optional allocator, + PipelineAllocator const & pipelineAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + template ::type = true> + VULKAN_HPP_NODISCARD ResultValue> + createDataGraphPipelineARMUnique( DeferredOperationKHR deferredOperation, + PipelineCache pipelineCache, + DataGraphPipelineCreateInfoARM const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelineSessionARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDataGraphPipelineSessionARM( DataGraphPipelineSessionCreateInfoARM const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DataGraphPipelineSessionARM * pSession, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelineSessionARM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDataGraphPipelineSessionARM( DataGraphPipelineSessionCreateInfoARM const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelineSessionARM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDataGraphPipelineSessionARMUnique( DataGraphPipelineSessionCreateInfoARM const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDataGraphPipelineSessionBindPointRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionBindPointRequirementsARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getDataGraphPipelineSessionBindPointRequirementsARM( DataGraphPipelineSessionBindPointRequirementsInfoARM const * pInfo, + uint32_t * pBindPointRequirementCount, + DataGraphPipelineSessionBindPointRequirementARM * pBindPointRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDataGraphPipelineSessionBindPointRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionBindPointRequirementsARM.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDataGraphPipelineSessionBindPointRequirementsARM( DataGraphPipelineSessionBindPointRequirementsInfoARM const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetDataGraphPipelineSessionBindPointRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionBindPointRequirementsARM.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getDataGraphPipelineSessionBindPointRequirementsARM( + DataGraphPipelineSessionBindPointRequirementsInfoARM const & info, + DataGraphPipelineSessionBindPointRequirementARMAllocator const & dataGraphPipelineSessionBindPointRequirementARMAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html + template ::type = true> + void getDataGraphPipelineSessionMemoryRequirementsARM( DataGraphPipelineSessionMemoryRequirementsInfoARM const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getDataGraphPipelineSessionMemoryRequirementsARM( + DataGraphPipelineSessionMemoryRequirementsInfoARM const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getDataGraphPipelineSessionMemoryRequirementsARM( DataGraphPipelineSessionMemoryRequirementsInfoARM const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkBindDataGraphPipelineSessionMemoryARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindDataGraphPipelineSessionMemoryARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result bindDataGraphPipelineSessionMemoryARM( uint32_t bindInfoCount, + BindDataGraphPipelineSessionMemoryInfoARM const * pBindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkBindDataGraphPipelineSessionMemoryARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindDataGraphPipelineSessionMemoryARM.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + bindDataGraphPipelineSessionMemoryARM( ArrayProxy const & bindInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDataGraphPipelineSessionARM.html + template ::type = true> + void destroyDataGraphPipelineSessionARM( DataGraphPipelineSessionARM session, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDataGraphPipelineSessionARM.html + template ::type = true> + void destroyDataGraphPipelineSessionARM( DataGraphPipelineSessionARM session, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDataGraphPipelineSessionARM.html + template ::type = true> + void destroy( DataGraphPipelineSessionARM session, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDataGraphPipelineSessionARM.html + template ::type = true> + void destroy( DataGraphPipelineSessionARM session, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDataGraphPipelineAvailablePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineAvailablePropertiesARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getDataGraphPipelineAvailablePropertiesARM( DataGraphPipelineInfoARM const * pPipelineInfo, + uint32_t * pPropertiesCount, + DataGraphPipelinePropertyARM * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDataGraphPipelineAvailablePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineAvailablePropertiesARM.html + template < + typename DataGraphPipelinePropertyARMAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDataGraphPipelineAvailablePropertiesARM( DataGraphPipelineInfoARM const & pipelineInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetDataGraphPipelineAvailablePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineAvailablePropertiesARM.html + template < + typename DataGraphPipelinePropertyARMAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDataGraphPipelineAvailablePropertiesARM( DataGraphPipelineInfoARM const & pipelineInfo, + DataGraphPipelinePropertyARMAllocator const & dataGraphPipelinePropertyARMAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDataGraphPipelinePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelinePropertiesARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDataGraphPipelinePropertiesARM( DataGraphPipelineInfoARM const * pPipelineInfo, + uint32_t propertiesCount, + DataGraphPipelinePropertyQueryResultARM * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + + // wrapper function for command vkGetScreenBufferPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getScreenBufferPropertiesQNX( struct _screen_buffer const * buffer, + ScreenBufferPropertiesQNX * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetScreenBufferPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getScreenBufferPropertiesQNX( struct _screen_buffer const & buffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetScreenBufferPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getScreenBufferPropertiesQNX( struct _screen_buffer const & buffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_calibrated_timestamps === + + // wrapper function for command vkGetCalibratedTimestampsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getCalibratedTimestampsKHR( uint32_t timestampCount, + CalibratedTimestampInfoKHR const * pTimestampInfos, + uint64_t * pTimestamps, + uint64_t * pMaxDeviation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetCalibratedTimestampsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, uint64_t>>::type + getCalibratedTimestampsKHR( ArrayProxy const & timestampInfos, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetCalibratedTimestampsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, uint64_t>>::type + getCalibratedTimestampsKHR( ArrayProxy const & timestampInfos, + Uint64_tAllocator const & uint64_tAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetCalibratedTimestampsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCalibratedTimestampKHR( CalibratedTimestampInfoKHR const & timestampInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_external_compute_queue === + + // wrapper function for command vkCreateExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExternalComputeQueueNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createExternalComputeQueueNV( ExternalComputeQueueCreateInfoNV const * pCreateInfo, + AllocationCallbacks const * pAllocator, + ExternalComputeQueueNV * pExternalQueue, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExternalComputeQueueNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createExternalComputeQueueNV( ExternalComputeQueueCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExternalComputeQueueNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createExternalComputeQueueNVUnique( ExternalComputeQueueCreateInfoNV const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyExternalComputeQueueNV.html + template ::type = true> + void destroyExternalComputeQueueNV( ExternalComputeQueueNV externalQueue, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyExternalComputeQueueNV.html + template ::type = true> + void destroyExternalComputeQueueNV( ExternalComputeQueueNV externalQueue, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyExternalComputeQueueNV.html + template ::type = true> + void destroy( ExternalComputeQueueNV externalQueue, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyExternalComputeQueueNV.html + template ::type = true> + void destroy( ExternalComputeQueueNV externalQueue, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_cluster_acceleration_structure === + + // wrapper function for command vkGetClusterAccelerationStructureBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetClusterAccelerationStructureBuildSizesNV.html + template ::type = true> + void getClusterAccelerationStructureBuildSizesNV( ClusterAccelerationStructureInputInfoNV const * pInfo, + AccelerationStructureBuildSizesInfoKHR * pSizeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetClusterAccelerationStructureBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetClusterAccelerationStructureBuildSizesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD AccelerationStructureBuildSizesInfoKHR getClusterAccelerationStructureBuildSizesNV( + ClusterAccelerationStructureInputInfoNV const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_partitioned_acceleration_structure === + + // wrapper function for command vkGetPartitionedAccelerationStructuresBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPartitionedAccelerationStructuresBuildSizesNV.html + template ::type = true> + void getPartitionedAccelerationStructuresBuildSizesNV( PartitionedAccelerationStructureInstancesInputNV const * pInfo, + AccelerationStructureBuildSizesInfoKHR * pSizeInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPartitionedAccelerationStructuresBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPartitionedAccelerationStructuresBuildSizesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD AccelerationStructureBuildSizesInfoKHR getPartitionedAccelerationStructuresBuildSizesNV( + PartitionedAccelerationStructureInstancesInputNV const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_device_generated_commands === + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + template ::type = true> + void getGeneratedCommandsMemoryRequirementsEXT( GeneratedCommandsMemoryRequirementsInfoEXT const * pInfo, + MemoryRequirements2 * pMemoryRequirements, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD MemoryRequirements2 getGeneratedCommandsMemoryRequirementsEXT( + GeneratedCommandsMemoryRequirementsInfoEXT const & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getGeneratedCommandsMemoryRequirementsEXT( GeneratedCommandsMemoryRequirementsInfoEXT const & info, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createIndirectCommandsLayoutEXT( IndirectCommandsLayoutCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + IndirectCommandsLayoutEXT * pIndirectCommandsLayout, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createIndirectCommandsLayoutEXT( IndirectCommandsLayoutCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createIndirectCommandsLayoutEXTUnique( IndirectCommandsLayoutCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutEXT.html + template ::type = true> + void destroyIndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT indirectCommandsLayout, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutEXT.html + template ::type = true> + void destroyIndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT indirectCommandsLayout VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutEXT.html + template ::type = true> + void destroy( IndirectCommandsLayoutEXT indirectCommandsLayout, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectCommandsLayoutEXT.html + template ::type = true> + void destroy( IndirectCommandsLayoutEXT indirectCommandsLayout, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectExecutionSetEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createIndirectExecutionSetEXT( IndirectExecutionSetCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + IndirectExecutionSetEXT * pIndirectExecutionSet, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectExecutionSetEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createIndirectExecutionSetEXT( IndirectExecutionSetCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectExecutionSetEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createIndirectExecutionSetEXTUnique( IndirectExecutionSetCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectExecutionSetEXT.html + template ::type = true> + void destroyIndirectExecutionSetEXT( IndirectExecutionSetEXT indirectExecutionSet, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectExecutionSetEXT.html + template ::type = true> + void destroyIndirectExecutionSetEXT( IndirectExecutionSetEXT indirectExecutionSet VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectExecutionSetEXT.html + template ::type = true> + void destroy( IndirectExecutionSetEXT indirectExecutionSet, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyIndirectExecutionSetEXT.html + template ::type = true> + void destroy( IndirectExecutionSetEXT indirectExecutionSet, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateIndirectExecutionSetPipelineEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetPipelineEXT.html + template ::type = true> + void updateIndirectExecutionSetPipelineEXT( IndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + WriteIndirectExecutionSetPipelineEXT const * pExecutionSetWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateIndirectExecutionSetPipelineEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetPipelineEXT.html + template ::type = true> + void updateIndirectExecutionSetPipelineEXT( IndirectExecutionSetEXT indirectExecutionSet, + ArrayProxy const & executionSetWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkUpdateIndirectExecutionSetShaderEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetShaderEXT.html + template ::type = true> + void updateIndirectExecutionSetShaderEXT( IndirectExecutionSetEXT indirectExecutionSet, + uint32_t executionSetWriteCount, + WriteIndirectExecutionSetShaderEXT const * pExecutionSetWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkUpdateIndirectExecutionSetShaderEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetShaderEXT.html + template ::type = true> + void updateIndirectExecutionSetShaderEXT( IndirectExecutionSetEXT indirectExecutionSet, + ArrayProxy const & executionSetWrites, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_device_fault === + + // wrapper function for command vkGetDeviceFaultReportsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultReportsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getFaultReportsKHR( uint64_t timeout, + uint32_t * pFaultCounts, + DeviceFaultInfoKHR * pFaultInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDeviceFaultReportsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultReportsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> + getFaultReportsKHR( uint64_t timeout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetDeviceFaultReportsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultReportsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD ResultValue> getFaultReportsKHR( + uint64_t timeout, DeviceFaultInfoKHRAllocator const & deviceFaultInfoKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDeviceFaultDebugInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultDebugInfoKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getFaultDebugInfoKHR( DeviceFaultDebugInfoKHR * pDebugInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + + // wrapper function for command vkGetMemoryMetalHandleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandleEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryMetalHandleEXT( MemoryGetMetalHandleInfoEXT const * pGetMetalHandleInfo, + void ** pHandle, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryMetalHandleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandleEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryMetalHandleEXT( MemoryGetMetalHandleInfoEXT const & getMetalHandleInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetMemoryMetalHandlePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandlePropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getMemoryMetalHandlePropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, + void const * pHandle, + MemoryMetalHandlePropertiesEXT * pMemoryMetalHandleProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetMemoryMetalHandlePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandlePropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryMetalHandlePropertiesEXT( + ExternalMemoryHandleTypeFlagBits handleType, HandleType const & handle, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_shader_instrumentation === + + // wrapper function for command vkCreateShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderInstrumentationARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createShaderInstrumentationARM( ShaderInstrumentationCreateInfoARM const * pCreateInfo, + AllocationCallbacks const * pAllocator, + ShaderInstrumentationARM * pInstrumentation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderInstrumentationARM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createShaderInstrumentationARM( ShaderInstrumentationCreateInfoARM const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderInstrumentationARM.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createShaderInstrumentationARMUnique( ShaderInstrumentationCreateInfoARM const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderInstrumentationARM.html + template ::type = true> + void destroyShaderInstrumentationARM( ShaderInstrumentationARM instrumentation, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderInstrumentationARM.html + template ::type = true> + void destroyShaderInstrumentationARM( ShaderInstrumentationARM instrumentation VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderInstrumentationARM.html + template ::type = true> + void destroy( ShaderInstrumentationARM instrumentation, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyShaderInstrumentationARM.html + template ::type = true> + void destroy( ShaderInstrumentationARM instrumentation, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetShaderInstrumentationValuesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInstrumentationValuesARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getShaderInstrumentationValuesARM( ShaderInstrumentationARM instrumentation, + uint32_t * pMetricBlockCount, + void * pMetricValues, + ShaderInstrumentationValuesFlagsARM flags, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkClearShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkClearShaderInstrumentationMetricsARM.html + template ::type = true> + void clearShaderInstrumentationMetricsARM( ShaderInstrumentationARM instrumentation, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + operator VkDevice() const VULKAN_HPP_NOEXCEPT + { + return m_device; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_device != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_device == VK_NULL_HANDLE; + } + + private: + VkDevice m_device = {}; + }; + + template <> + struct CppType + { + using Type = Device; + }; + + template <> + struct CppType + { + using Type = Device; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Device; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayModeKHR.html + class DisplayModeKHR + { + public: + using CType = VkDisplayModeKHR; + using NativeType = VkDisplayModeKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDisplayModeKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDisplayModeKHR; + + public: + DisplayModeKHR() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + DisplayModeKHR( DisplayModeKHR const & rhs ) = default; + DisplayModeKHR & operator=( DisplayModeKHR const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + DisplayModeKHR( DisplayModeKHR && rhs ) = default; + DisplayModeKHR & operator=( DisplayModeKHR && rhs ) = default; +#else + DisplayModeKHR( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT : m_displayModeKHR( exchange( rhs.m_displayModeKHR, {} ) ) {} + + DisplayModeKHR & operator=( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + m_displayModeKHR = exchange( rhs.m_displayModeKHR, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR DisplayModeKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR ) VULKAN_HPP_NOEXCEPT : m_displayModeKHR( displayModeKHR ) {} + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) + DisplayModeKHR & operator=( VkDisplayModeKHR displayModeKHR ) VULKAN_HPP_NOEXCEPT + { + m_displayModeKHR = displayModeKHR; + return *this; + } +#endif + + DisplayModeKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_displayModeKHR = {}; + return *this; + } + + VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR == VK_NULL_HANDLE; + } + + private: + VkDisplayModeKHR m_displayModeKHR = {}; + }; + + template <> + struct CppType + { + using Type = DisplayModeKHR; + }; + + template <> + struct CppType + { + using Type = DisplayModeKHR; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = DisplayModeKHR; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPhysicalDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevice.html + class PhysicalDevice + { + public: + using CType = VkPhysicalDevice; + using NativeType = VkPhysicalDevice; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePhysicalDevice; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePhysicalDevice; + + public: + PhysicalDevice() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + PhysicalDevice( PhysicalDevice const & rhs ) = default; + PhysicalDevice & operator=( PhysicalDevice const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + PhysicalDevice( PhysicalDevice && rhs ) = default; + PhysicalDevice & operator=( PhysicalDevice && rhs ) = default; +#else + PhysicalDevice( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT : m_physicalDevice( exchange( rhs.m_physicalDevice, {} ) ) {} + + PhysicalDevice & operator=( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT + { + m_physicalDevice = exchange( rhs.m_physicalDevice, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR PhysicalDevice( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + PhysicalDevice( VkPhysicalDevice physicalDevice ) VULKAN_HPP_NOEXCEPT : m_physicalDevice( physicalDevice ) {} + + PhysicalDevice & operator=( VkPhysicalDevice physicalDevice ) VULKAN_HPP_NOEXCEPT + { + m_physicalDevice = physicalDevice; + return *this; + } + + PhysicalDevice & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_physicalDevice = {}; + return *this; + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkGetPhysicalDeviceFeatures, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures.html + template ::type = true> + void getFeatures( PhysicalDeviceFeatures * pFeatures, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFeatures, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures.html + template ::type = true> + VULKAN_HPP_NODISCARD PhysicalDeviceFeatures getFeatures( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties.html + template ::type = true> + void getFormatProperties( Format format, + FormatProperties * pFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD FormatProperties getFormatProperties( Format format, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getImageFormatProperties( Format format, + ImageType type, + ImageTiling tiling, + ImageUsageFlags usage, + ImageCreateFlags flags, + ImageFormatProperties * pImageFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageFormatProperties( Format format, + ImageType type, + ImageTiling tiling, + ImageUsageFlags usage, + ImageCreateFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties.html + template ::type = true> + void getProperties( PhysicalDeviceProperties * pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD PhysicalDeviceProperties getProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html + template ::type = true> + void getQueueFamilyProperties( uint32_t * pQueueFamilyPropertyCount, + QueueFamilyProperties * pQueueFamilyProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties( QueueFamilyPropertiesAllocator const & queueFamilyPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties.html + template ::type = true> + void getMemoryProperties( PhysicalDeviceMemoryProperties * pMemoryProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceMemoryProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD PhysicalDeviceMemoryProperties + getMemoryProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDevice.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDevice( DeviceCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + Device * pDevice, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDevice.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDevice( DeviceCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDevice.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDeviceUnique( DeviceCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkEnumerateDeviceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceExtensionProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD Result enumerateDeviceExtensionProperties( char const * pLayerName, + uint32_t * pPropertyCount, + ExtensionProperties * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumerateDeviceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceExtensionProperties.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateDeviceExtensionProperties( Optional layerName VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkEnumerateDeviceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceExtensionProperties.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateDeviceExtensionProperties( Optional layerName, + ExtensionPropertiesAllocator const & extensionPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkEnumerateDeviceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceLayerProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD Result enumerateDeviceLayerProperties( uint32_t * pPropertyCount, + LayerProperties * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumerateDeviceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceLayerProperties.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateDeviceLayerProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkEnumerateDeviceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceLayerProperties.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateDeviceLayerProperties( LayerPropertiesAllocator const & layerPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html + template ::type = true> + void getSparseImageFormatProperties( Format format, + ImageType type, + SampleCountFlagBits samples, + ImageUsageFlags usage, + ImageTiling tiling, + uint32_t * pPropertyCount, + SparseImageFormatProperties * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html + template < + typename SparseImageFormatPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties( Format format, + ImageType type, + SampleCountFlagBits samples, + ImageUsageFlags usage, + ImageTiling tiling, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html + template < + typename SparseImageFormatPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties( Format format, + ImageType type, + SampleCountFlagBits samples, + ImageUsageFlags usage, + ImageTiling tiling, + SparseImageFormatPropertiesAllocator const & sparseImageFormatPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkGetPhysicalDeviceFeatures2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html + template ::type = true> + void getFeatures2( PhysicalDeviceFeatures2 * pFeatures, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFeatures2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html + template ::type = true> + VULKAN_HPP_NODISCARD PhysicalDeviceFeatures2 getFeatures2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetPhysicalDeviceFeatures2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain getFeatures2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + template ::type = true> + void getProperties2( PhysicalDeviceProperties2 * pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + template ::type = true> + VULKAN_HPP_NODISCARD PhysicalDeviceProperties2 getProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain getProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + template ::type = true> + void getFormatProperties2( Format format, + FormatProperties2 * pFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + template ::type = true> + VULKAN_HPP_NODISCARD FormatProperties2 getFormatProperties2( Format format, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getFormatProperties2( Format format, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getImageFormatProperties2( PhysicalDeviceImageFormatInfo2 const * pImageFormatInfo, + ImageFormatProperties2 * pImageFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageFormatProperties2( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getImageFormatProperties2( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template ::type = true> + void getQueueFamilyProperties2( uint32_t * pQueueFamilyPropertyCount, + QueueFamilyProperties2 * pQueueFamilyProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2( QueueFamilyProperties2Allocator const & queueFamilyProperties2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2( StructureChainAllocator const & structureChainAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html + template ::type = true> + void getMemoryProperties2( PhysicalDeviceMemoryProperties2 * pMemoryProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html + template ::type = true> + VULKAN_HPP_NODISCARD PhysicalDeviceMemoryProperties2 + getMemoryProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getMemoryProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html + template ::type = true> + void getSparseImageFormatProperties2( PhysicalDeviceSparseImageFormatInfo2 const * pFormatInfo, + uint32_t * pPropertyCount, + SparseImageFormatProperties2 * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html + template < + typename SparseImageFormatProperties2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html + template < + typename SparseImageFormatProperties2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo, + SparseImageFormatProperties2Allocator const & sparseImageFormatProperties2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceExternalBufferProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferProperties.html + template ::type = true> + void getExternalBufferProperties( PhysicalDeviceExternalBufferInfo const * pExternalBufferInfo, + ExternalBufferProperties * pExternalBufferProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalBufferProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD ExternalBufferProperties getExternalBufferProperties( + PhysicalDeviceExternalBufferInfo const & externalBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceExternalFenceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFenceProperties.html + template ::type = true> + void getExternalFenceProperties( PhysicalDeviceExternalFenceInfo const * pExternalFenceInfo, + ExternalFenceProperties * pExternalFenceProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalFenceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFenceProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD ExternalFenceProperties getExternalFenceProperties( + PhysicalDeviceExternalFenceInfo const & externalFenceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceExternalSemaphoreProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphoreProperties.html + template ::type = true> + void getExternalSemaphoreProperties( PhysicalDeviceExternalSemaphoreInfo const * pExternalSemaphoreInfo, + ExternalSemaphoreProperties * pExternalSemaphoreProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalSemaphoreProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphoreProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD ExternalSemaphoreProperties + getExternalSemaphoreProperties( PhysicalDeviceExternalSemaphoreInfo const & externalSemaphoreInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_3 === + + // wrapper function for command vkGetPhysicalDeviceToolProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getToolProperties( uint32_t * pToolCount, + PhysicalDeviceToolProperties * pToolProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceToolProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolProperties.html + template < + typename PhysicalDeviceToolPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getToolProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceToolProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolProperties.html + template < + typename PhysicalDeviceToolPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getToolProperties( PhysicalDeviceToolPropertiesAllocator const & physicalDeviceToolPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_surface === + + // wrapper function for command vkGetPhysicalDeviceSurfaceSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, + SurfaceKHR surface, + Bool32 * pSupported, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, + SurfaceCapabilitiesKHR * pSurfaceCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSurfaceCapabilitiesKHR( SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormatsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSurfaceFormatsKHR( SurfaceKHR surface, + uint32_t * pSurfaceFormatCount, + SurfaceFormatKHR * pSurfaceFormats, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceFormatsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormatsKHR( SurfaceKHR surface VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSurfaceFormatsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getSurfaceFormatsKHR( + SurfaceKHR surface, SurfaceFormatKHRAllocator const & surfaceFormatKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSurfacePresentModesKHR( SurfaceKHR surface, + uint32_t * pPresentModeCount, + PresentModeKHR * pPresentModes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfacePresentModesKHR( SurfaceKHR surface VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getSurfacePresentModesKHR( + SurfaceKHR surface, PresentModeKHRAllocator const & presentModeKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_swapchain === + + // wrapper function for command vkGetPhysicalDevicePresentRectanglesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getPresentRectanglesKHR( SurfaceKHR surface, + uint32_t * pRectCount, + Rect2D * pRects, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDevicePresentRectanglesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPresentRectanglesKHR( SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDevicePresentRectanglesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPresentRectanglesKHR( SurfaceKHR surface, Rect2DAllocator const & rect2DAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_display === + + // wrapper function for command vkGetPhysicalDeviceDisplayPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDisplayPropertiesKHR( uint32_t * pPropertyCount, + DisplayPropertiesKHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceDisplayPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayPropertiesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceDisplayPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayPropertiesKHR( DisplayPropertiesKHRAllocator const & displayPropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceDisplayPlanePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDisplayPlanePropertiesKHR( uint32_t * pPropertyCount, + DisplayPlanePropertiesKHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceDisplayPlanePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayPlanePropertiesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceDisplayPlanePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayPlanePropertiesKHR( DisplayPlanePropertiesKHRAllocator const & displayPlanePropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDisplayPlaneSupportedDisplaysKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, + uint32_t * pDisplayCount, + DisplayKHR * pDisplays, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDisplayPlaneSupportedDisplaysKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetDisplayPlaneSupportedDisplaysKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPlaneSupportedDisplaysKHR( + uint32_t planeIndex, DisplayKHRAllocator const & displayKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDisplayModePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModePropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDisplayModePropertiesKHR( DisplayKHR display, + uint32_t * pPropertyCount, + DisplayModePropertiesKHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDisplayModePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModePropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayModePropertiesKHR( DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetDisplayModePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModePropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayModePropertiesKHR( DisplayKHR display, + DisplayModePropertiesKHRAllocator const & displayModePropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkCreateDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayModeKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDisplayModeKHR( DisplayKHR display, + DisplayModeCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DisplayModeKHR * pMode, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayModeKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDisplayModeKHR( DisplayKHR display, + DisplayModeCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayModeKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDisplayModeKHRUnique( DisplayKHR display, + DisplayModeCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDisplayPlaneCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilitiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, + uint32_t planeIndex, + DisplayPlaneCapabilitiesKHR * pCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDisplayPlaneCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilitiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + // wrapper function for command vkGetPhysicalDeviceXlibPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html + template ::type = true> + Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, + Display * dpy, + VisualID visualID, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceXlibPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html + template ::type = true> + Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, + Display & dpy, + VisualID visualID, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + // wrapper function for command vkGetPhysicalDeviceXcbPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html + template ::type = true> + Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, + xcb_connection_t * connection, + xcb_visualid_t visual_id, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceXcbPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html + template ::type = true> + Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, + xcb_connection_t & connection, + xcb_visualid_t visual_id, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + // wrapper function for command vkGetPhysicalDeviceWaylandPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html + template ::type = true> + Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, + struct wl_display * display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceWaylandPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html + template ::type = true> + Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, + struct wl_display & display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + // wrapper function for command vkGetPhysicalDeviceWin32PresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWin32PresentationSupportKHR.html + template ::type = true> + Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_video_queue === + + // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getVideoCapabilitiesKHR( VideoProfileInfoKHR const * pVideoProfile, + VideoCapabilitiesKHR * pCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getVideoCapabilitiesKHR( VideoProfileInfoKHR const & videoProfile, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoCapabilitiesKHR( VideoProfileInfoKHR const & videoProfile, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const * pVideoFormatInfo, + uint32_t * pVideoFormatPropertyCount, + VideoFormatPropertiesKHR * pVideoFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo, + VideoFormatPropertiesKHRAllocator const & videoFormatPropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo, + StructureChainAllocator const & structureChainAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_external_memory_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalImageFormatPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getExternalImageFormatPropertiesNV( Format format, + ImageType type, + ImageTiling tiling, + ImageUsageFlags usage, + ImageCreateFlags flags, + ExternalMemoryHandleTypeFlagsNV externalHandleType, + ExternalImageFormatPropertiesNV * pExternalImageFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalImageFormatPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getExternalImageFormatPropertiesNV( Format format, + ImageType type, + ImageTiling tiling, + ImageUsageFlags usage, + ImageCreateFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + ExternalMemoryHandleTypeFlagsNV externalHandleType VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_get_physical_device_properties2 === + + // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html + template ::type = true> + void getFeatures2KHR( PhysicalDeviceFeatures2 * pFeatures, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD PhysicalDeviceFeatures2 getFeatures2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain getFeatures2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + template ::type = true> + void getProperties2KHR( PhysicalDeviceProperties2 * pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD PhysicalDeviceProperties2 getProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain getProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + template ::type = true> + void getFormatProperties2KHR( Format format, + FormatProperties2 * pFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD FormatProperties2 getFormatProperties2KHR( Format format, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getFormatProperties2KHR( Format format, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getImageFormatProperties2KHR( PhysicalDeviceImageFormatInfo2 const * pImageFormatInfo, + ImageFormatProperties2 * pImageFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageFormatProperties2KHR( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getImageFormatProperties2KHR( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template ::type = true> + void getQueueFamilyProperties2KHR( uint32_t * pQueueFamilyPropertyCount, + QueueFamilyProperties2 * pQueueFamilyProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2KHR( QueueFamilyProperties2Allocator const & queueFamilyProperties2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getQueueFamilyProperties2KHR( StructureChainAllocator const & structureChainAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html + template ::type = true> + void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2 * pMemoryProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD PhysicalDeviceMemoryProperties2 + getMemoryProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD StructureChain + getMemoryProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html + template ::type = true> + void getSparseImageFormatProperties2KHR( PhysicalDeviceSparseImageFormatInfo2 const * pFormatInfo, + uint32_t * pPropertyCount, + SparseImageFormatProperties2 * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html + template < + typename SparseImageFormatProperties2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2KHR( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html + template < + typename SparseImageFormatProperties2Allocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2KHR( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo, + SparseImageFormatProperties2Allocator const & sparseImageFormatProperties2Allocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_external_memory_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalBufferPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html + template ::type = true> + void getExternalBufferPropertiesKHR( PhysicalDeviceExternalBufferInfo const * pExternalBufferInfo, + ExternalBufferProperties * pExternalBufferProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalBufferPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD ExternalBufferProperties getExternalBufferPropertiesKHR( + PhysicalDeviceExternalBufferInfo const & externalBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_external_semaphore_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html + template ::type = true> + void getExternalSemaphorePropertiesKHR( PhysicalDeviceExternalSemaphoreInfo const * pExternalSemaphoreInfo, + ExternalSemaphoreProperties * pExternalSemaphoreProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD ExternalSemaphoreProperties + getExternalSemaphorePropertiesKHR( PhysicalDeviceExternalSemaphoreInfo const & externalSemaphoreInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_direct_mode_display === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result releaseDisplayEXT( DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkReleaseDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + releaseDisplayEXT( DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkReleaseDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result release( DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkReleaseDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type release( DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + +#if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + + // wrapper function for command vkAcquireXlibDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireXlibDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result acquireXlibDisplayEXT( Display * dpy, + DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireXlibDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireXlibDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + acquireXlibDisplayEXT( Display & dpy, DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetRandROutputDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRandROutputDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getRandROutputDisplayEXT( Display * dpy, + RROutput rrOutput, + DisplayKHR * pDisplay, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetRandROutputDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRandROutputDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkGetRandROutputDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRandROutputDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getRandROutputDisplayEXTUnique( Display & dpy, RROutput rrOutput, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSurfaceCapabilities2EXT( SurfaceKHR surface, + SurfaceCapabilities2EXT * pSurfaceCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSurfaceCapabilities2EXT( SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_external_fence_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalFencePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html + template ::type = true> + void getExternalFencePropertiesKHR( PhysicalDeviceExternalFenceInfo const * pExternalFenceInfo, + ExternalFenceProperties * pExternalFenceProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalFencePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD ExternalFenceProperties getExternalFencePropertiesKHR( + PhysicalDeviceExternalFenceInfo const & externalFenceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_performance_query === + + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, + uint32_t * pCounterCount, + PerformanceCounterKHR * pCounters, + PerformanceCounterDescriptionKHR * pCounterDescriptions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.html + template , + typename PerformanceCounterDescriptionKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value && + std::is_same::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, + std::vector>>::type + enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.html + template , + typename PerformanceCounterDescriptionKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value && + std::is_same::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, + std::vector>>::type + enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, + PerformanceCounterKHRAllocator const & performanceCounterKHRAllocator, + PerformanceCounterDescriptionKHRAllocator const & performanceCounterDescriptionKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR.html + template ::type = true> + void getQueueFamilyPerformanceQueryPassesKHR( QueryPoolPerformanceCreateInfoKHR const * pPerformanceQueryCreateInfo, + uint32_t * pNumPasses, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD uint32_t + getQueueFamilyPerformanceQueryPassesKHR( QueryPoolPerformanceCreateInfoKHR const & performanceQueryCreateInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_get_surface_capabilities2 === + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSurfaceCapabilities2KHR( PhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, + SurfaceCapabilities2KHR * pSurfaceCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSurfaceCapabilities2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceCapabilities2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, + uint32_t * pSurfaceFormatCount, + SurfaceFormat2KHR * pSurfaceFormats, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, + SurfaceFormat2KHRAllocator const & surfaceFormat2KHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, + StructureChainAllocator const & structureChainAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_get_display_properties2 === + + // wrapper function for command vkGetPhysicalDeviceDisplayProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDisplayProperties2KHR( uint32_t * pPropertyCount, + DisplayProperties2KHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceDisplayProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceDisplayProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayProperties2KHR( DisplayProperties2KHRAllocator const & displayProperties2KHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceDisplayPlaneProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlaneProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDisplayPlaneProperties2KHR( uint32_t * pPropertyCount, + DisplayPlaneProperties2KHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceDisplayPlaneProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlaneProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayPlaneProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceDisplayPlaneProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlaneProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayPlaneProperties2KHR( DisplayPlaneProperties2KHRAllocator const & displayPlaneProperties2KHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDisplayModeProperties2KHR( DisplayKHR display, + uint32_t * pPropertyCount, + DisplayModeProperties2KHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayModeProperties2KHR( DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayModeProperties2KHR( DisplayKHR display, + DisplayModeProperties2KHRAllocator const & displayModeProperties2KHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDisplayModeProperties2KHR( DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayModeProperties2KHR( + DisplayKHR display, StructureChainAllocator const & structureChainAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetDisplayPlaneCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilities2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDisplayPlaneCapabilities2KHR( DisplayPlaneInfo2KHR const * pDisplayPlaneInfo, + DisplayPlaneCapabilities2KHR * pCapabilities, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDisplayPlaneCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilities2KHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getDisplayPlaneCapabilities2KHR( DisplayPlaneInfo2KHR const & displayPlaneInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_descriptor_heap === + + // wrapper function for command vkGetPhysicalDeviceDescriptorSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDescriptorSizeEXT.html + template ::type = true> + DeviceSize getDescriptorSizeEXT( DescriptorType descriptorType, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_sample_locations === + + // wrapper function for command vkGetPhysicalDeviceMultisamplePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html + template ::type = true> + void getMultisamplePropertiesEXT( SampleCountFlagBits samples, + MultisamplePropertiesEXT * pMultisampleProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceMultisamplePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD MultisamplePropertiesEXT + getMultisamplePropertiesEXT( SampleCountFlagBits samples, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_calibrated_timestamps === + + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getCalibrateableTimeDomainsEXT( uint32_t * pTimeDomainCount, + TimeDomainKHR * pTimeDomains, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCalibrateableTimeDomainsEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCalibrateableTimeDomainsEXT( TimeDomainKHRAllocator const & timeDomainKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_fragment_shading_rate === + + // wrapper function for command vkGetPhysicalDeviceFragmentShadingRatesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFragmentShadingRatesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getFragmentShadingRatesKHR( uint32_t * pFragmentShadingRateCount, + PhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceFragmentShadingRatesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFragmentShadingRatesKHR.html + template < + typename PhysicalDeviceFragmentShadingRateKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getFragmentShadingRatesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceFragmentShadingRatesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFragmentShadingRatesKHR.html + template < + typename PhysicalDeviceFragmentShadingRateKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getFragmentShadingRatesKHR( PhysicalDeviceFragmentShadingRateKHRAllocator const & physicalDeviceFragmentShadingRateKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_EXT_tooling_info === + + // wrapper function for command vkGetPhysicalDeviceToolPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getToolPropertiesEXT( uint32_t * pToolCount, + PhysicalDeviceToolProperties * pToolProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceToolPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html + template < + typename PhysicalDeviceToolPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getToolPropertiesEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceToolPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html + template < + typename PhysicalDeviceToolPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getToolPropertiesEXT( PhysicalDeviceToolPropertiesAllocator const & physicalDeviceToolPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_cooperative_matrix === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getCooperativeMatrixPropertiesNV( uint32_t * pPropertyCount, + CooperativeMatrixPropertiesNV * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesNV.html + template < + typename CooperativeMatrixPropertiesNVAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCooperativeMatrixPropertiesNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesNV.html + template < + typename CooperativeMatrixPropertiesNVAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNVAllocator const & cooperativeMatrixPropertiesNVAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_coverage_reduction_mode === + + // wrapper function for command vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getSupportedFramebufferMixedSamplesCombinationsNV( uint32_t * pCombinationCount, + FramebufferMixedSamplesCombinationNV * pCombinations, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.html + template < + typename FramebufferMixedSamplesCombinationNVAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSupportedFramebufferMixedSamplesCombinationsNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.html + template < + typename FramebufferMixedSamplesCombinationNVAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSupportedFramebufferMixedSamplesCombinationsNV( FramebufferMixedSamplesCombinationNVAllocator const & framebufferMixedSamplesCombinationNVAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModes2EXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getSurfacePresentModes2EXT( PhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, + uint32_t * pPresentModeCount, + PresentModeKHR * pPresentModes, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModes2EXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfacePresentModes2EXT( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModes2EXT.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfacePresentModes2EXT( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo, + PresentModeKHRAllocator const & presentModeKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_acquire_drm_display === + +#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireDrmDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result acquireDrmDisplayEXT( int32_t drmFd, + DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#else + // wrapper function for command vkAcquireDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireDrmDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + acquireDrmDisplayEXT( int32_t drmFd, DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDrmDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getDrmDisplayEXT( int32_t drmFd, + uint32_t connectorId, + DisplayKHR * display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDrmDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getDrmDisplayEXT( int32_t drmFd, uint32_t connectorId, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkGetDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDrmDisplayEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDrmDisplayEXTUnique( int32_t drmFd, uint32_t connectorId, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_video_encode_queue === + + // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getVideoEncodeQualityLevelPropertiesKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const * pQualityLevelInfo, + VideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + getVideoEncodeQualityLevelPropertiesKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & qualityLevelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoEncodeQualityLevelPropertiesKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & qualityLevelInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + +# ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkAcquireWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireWinrtDisplayNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result acquireWinrtDisplayNV( DisplayKHR display, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# else + // wrapper function for command vkAcquireWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireWinrtDisplayNV.html + template ::type = true> + VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type + acquireWinrtDisplayNV( DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + // wrapper function for command vkGetWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetWinrtDisplayNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getWinrtDisplayNV( uint32_t deviceRelativeId, + DisplayKHR * pDisplay, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetWinrtDisplayNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type getWinrtDisplayNV( uint32_t deviceRelativeId, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkGetWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetWinrtDisplayNV.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getWinrtDisplayNVUnique( uint32_t deviceRelativeId, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + // wrapper function for command vkGetPhysicalDeviceDirectFBPresentationSupportEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDirectFBPresentationSupportEXT.html + template ::type = true> + Bool32 getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, + IDirectFB * dfb, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceDirectFBPresentationSupportEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDirectFBPresentationSupportEXT.html + template ::type = true> + Bool32 getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, + IDirectFB & dfb, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + // wrapper function for command vkGetPhysicalDeviceScreenPresentationSupportQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceScreenPresentationSupportQNX.html + template ::type = true> + Bool32 getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, + struct _screen_window * window, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceScreenPresentationSupportQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceScreenPresentationSupportQNX.html + template ::type = true> + Bool32 getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, + struct _screen_window & window, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_ARM_tensors === + + // wrapper function for command vkGetPhysicalDeviceExternalTensorPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalTensorPropertiesARM.html + template ::type = true> + void getExternalTensorPropertiesARM( PhysicalDeviceExternalTensorInfoARM const * pExternalTensorInfo, + ExternalTensorPropertiesARM * pExternalTensorProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceExternalTensorPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalTensorPropertiesARM.html + template ::type = true> + VULKAN_HPP_NODISCARD ExternalTensorPropertiesARM getExternalTensorPropertiesARM( + PhysicalDeviceExternalTensorInfoARM const & externalTensorInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_optical_flow === + + // wrapper function for command vkGetPhysicalDeviceOpticalFlowImageFormatsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getOpticalFlowImageFormatsNV( OpticalFlowImageFormatInfoNV const * pOpticalFlowImageFormatInfo, + uint32_t * pFormatCount, + OpticalFlowImageFormatPropertiesNV * pImageFormatProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceOpticalFlowImageFormatsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getOpticalFlowImageFormatsNV( OpticalFlowImageFormatInfoNV const & opticalFlowImageFormatInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceOpticalFlowImageFormatsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getOpticalFlowImageFormatsNV( OpticalFlowImageFormatInfoNV const & opticalFlowImageFormatInfo, + OpticalFlowImageFormatPropertiesNVAllocator const & opticalFlowImageFormatPropertiesNVAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_cooperative_vector === + + // wrapper function for command vkGetPhysicalDeviceCooperativeVectorPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeVectorPropertiesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getCooperativeVectorPropertiesNV( uint32_t * pPropertyCount, + CooperativeVectorPropertiesNV * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCooperativeVectorPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeVectorPropertiesNV.html + template < + typename CooperativeVectorPropertiesNVAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCooperativeVectorPropertiesNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceCooperativeVectorPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeVectorPropertiesNV.html + template < + typename CooperativeVectorPropertiesNVAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCooperativeVectorPropertiesNV( CooperativeVectorPropertiesNVAllocator const & cooperativeVectorPropertiesNVAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_cooperative_matrix === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getCooperativeMatrixPropertiesKHR( uint32_t * pPropertyCount, + CooperativeMatrixPropertiesKHR * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR.html + template < + typename CooperativeMatrixPropertiesKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCooperativeMatrixPropertiesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR.html + template < + typename CooperativeMatrixPropertiesKHRAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCooperativeMatrixPropertiesKHR( CooperativeMatrixPropertiesKHRAllocator const & cooperativeMatrixPropertiesKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_ARM_data_graph === + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getQueueFamilyDataGraphPropertiesARM( uint32_t queueFamilyIndex, + uint32_t * pQueueFamilyDataGraphPropertyCount, + QueueFamilyDataGraphPropertiesARM * pQueueFamilyDataGraphProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getQueueFamilyDataGraphPropertiesARM( uint32_t queueFamilyIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getQueueFamilyDataGraphPropertiesARM( uint32_t queueFamilyIndex, + QueueFamilyDataGraphPropertiesARMAllocator const & queueFamilyDataGraphPropertiesARMAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM.html + template ::type = true> + void getQueueFamilyDataGraphProcessingEnginePropertiesARM( + PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const * pQueueFamilyDataGraphProcessingEngineInfo, + QueueFamilyDataGraphProcessingEnginePropertiesARM * pQueueFamilyDataGraphProcessingEngineProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM.html + template ::type = true> + VULKAN_HPP_NODISCARD QueueFamilyDataGraphProcessingEnginePropertiesARM getQueueFamilyDataGraphProcessingEnginePropertiesARM( + PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & queueFamilyDataGraphProcessingEngineInfo, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_calibrated_timestamps === + + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result getCalibrateableTimeDomainsKHR( uint32_t * pTimeDomainCount, + TimeDomainKHR * pTimeDomains, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCalibrateableTimeDomainsKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCalibrateableTimeDomainsKHR( TimeDomainKHRAllocator const & timeDomainKHRAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_NV_cooperative_matrix2 === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + getCooperativeMatrixFlexibleDimensionsPropertiesNV( uint32_t * pPropertyCount, + CooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getCooperativeMatrixFlexibleDimensionsPropertiesNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + getCooperativeMatrixFlexibleDimensionsPropertiesNV( + CooperativeMatrixFlexibleDimensionsPropertiesNVAllocator const & cooperativeMatrixFlexibleDimensionsPropertiesNVAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_ARM_performance_counters_by_region === + + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + enumerateQueueFamilyPerformanceCountersByRegionARM( uint32_t queueFamilyIndex, + uint32_t * pCounterCount, + PerformanceCounterARM * pCounters, + PerformanceCounterDescriptionARM * pCounterDescriptions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM.html + template , + typename PerformanceCounterDescriptionARMAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value && + std::is_same::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, + std::vector>>::type + enumerateQueueFamilyPerformanceCountersByRegionARM( uint32_t queueFamilyIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM.html + template , + typename PerformanceCounterDescriptionARMAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value && + std::is_same::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType, + std::vector>>::type + enumerateQueueFamilyPerformanceCountersByRegionARM( uint32_t queueFamilyIndex, + PerformanceCounterARMAllocator const & performanceCounterARMAllocator, + PerformanceCounterDescriptionARMAllocator const & performanceCounterDescriptionARMAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_ARM_shader_instrumentation === + + // wrapper function for command vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM.html + template ::type = true> + VULKAN_HPP_NODISCARD Result + enumerateShaderInstrumentationMetricsARM( uint32_t * pDescriptionCount, + ShaderInstrumentationMetricDescriptionARM * pDescriptions, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if< + std::is_same::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + enumerateShaderInstrumentationMetricsARM( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if< + std::is_same::value, + int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD + typename ResultValueType>::type + enumerateShaderInstrumentationMetricsARM( ShaderInstrumentationMetricDescriptionARMAllocator const & shaderInstrumentationMetricDescriptionARMAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + + // wrapper function for command vkGetPhysicalDeviceUbmPresentationSupportSEC, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceUbmPresentationSupportSEC.html + template ::type = true> + Bool32 getUbmPresentationSupportSEC( uint32_t queueFamilyIndex, + struct ubm_device * device, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetPhysicalDeviceUbmPresentationSupportSEC, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceUbmPresentationSupportSEC.html + template ::type = true> + VULKAN_HPP_NODISCARD std::pair + getUbmPresentationSupportSEC( uint32_t queueFamilyIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + + operator VkPhysicalDevice() const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice == VK_NULL_HANDLE; + } + + private: + VkPhysicalDevice m_physicalDevice = {}; + }; + + template <> + struct CppType + { + using Type = PhysicalDevice; + }; + + template <> + struct CppType + { + using Type = PhysicalDevice; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = PhysicalDevice; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkInstance.html + class Instance + { + public: + using CType = VkInstance; + using NativeType = VkInstance; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eInstance; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eInstance; + + public: + Instance() VULKAN_HPP_NOEXCEPT {} // = default; - try to workaround a compiler issue + + Instance( Instance const & rhs ) = default; + Instance & operator=( Instance const & rhs ) = default; + +#if !defined( VULKAN_HPP_HANDLES_MOVE_EXCHANGE ) + Instance( Instance && rhs ) = default; + Instance & operator=( Instance && rhs ) = default; +#else + Instance( Instance && rhs ) VULKAN_HPP_NOEXCEPT : m_instance( exchange( rhs.m_instance, {} ) ) {} + + Instance & operator=( Instance && rhs ) VULKAN_HPP_NOEXCEPT + { + m_instance = exchange( rhs.m_instance, {} ); + return *this; + } +#endif + + VULKAN_HPP_CONSTEXPR Instance( std::nullptr_t ) VULKAN_HPP_NOEXCEPT {} + + Instance( VkInstance instance ) VULKAN_HPP_NOEXCEPT : m_instance( instance ) {} + + Instance & operator=( VkInstance instance ) VULKAN_HPP_NOEXCEPT + { + m_instance = instance; + return *this; + } + + Instance & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + m_instance = {}; + return *this; + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkDestroyInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyInstance.html + template ::type = true> + void destroy( AllocationCallbacks const * pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyInstance.html + template ::type = true> + void destroy( Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkEnumeratePhysicalDevices, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDevices.html + template ::type = true> + VULKAN_HPP_NODISCARD Result enumeratePhysicalDevices( uint32_t * pPhysicalDeviceCount, + PhysicalDevice * pPhysicalDevices, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDevices, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDevices.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumeratePhysicalDevices( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkEnumeratePhysicalDevices, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDevices.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumeratePhysicalDevices( PhysicalDeviceAllocator const & physicalDeviceAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkGetInstanceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetInstanceProcAddr.html + template ::type = true> + PFN_vkVoidFunction getProcAddr( char const * pName, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkGetInstanceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetInstanceProcAddr.html + template ::type = true> + PFN_VoidFunction getProcAddr( std::string const & name, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkEnumeratePhysicalDeviceGroups, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroups.html + template ::type = true> + VULKAN_HPP_NODISCARD Result enumeratePhysicalDeviceGroups( uint32_t * pPhysicalDeviceGroupCount, + PhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDeviceGroups, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroups.html + template < + typename PhysicalDeviceGroupPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumeratePhysicalDeviceGroups( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkEnumeratePhysicalDeviceGroups, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroups.html + template < + typename PhysicalDeviceGroupPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumeratePhysicalDeviceGroups( PhysicalDeviceGroupPropertiesAllocator const & physicalDeviceGroupPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_surface === + + // wrapper function for command vkDestroySurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySurfaceKHR.html + template ::type = true> + void destroySurfaceKHR( SurfaceKHR surface, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySurfaceKHR.html + template ::type = true> + void destroySurfaceKHR( SurfaceKHR surface VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroySurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySurfaceKHR.html + template ::type = true> + void destroy( SurfaceKHR surface, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroySurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySurfaceKHR.html + template ::type = true> + void destroy( SurfaceKHR surface, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_KHR_display === + + // wrapper function for command vkCreateDisplayPlaneSurfaceKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayPlaneSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDisplayPlaneSurfaceKHR( DisplaySurfaceCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDisplayPlaneSurfaceKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayPlaneSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDisplayPlaneSurfaceKHR( DisplaySurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDisplayPlaneSurfaceKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayPlaneSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDisplayPlaneSurfaceKHRUnique( DisplaySurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + // wrapper function for command vkCreateXlibSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXlibSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createXlibSurfaceKHR( XlibSurfaceCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateXlibSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXlibSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createXlibSurfaceKHR( XlibSurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateXlibSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXlibSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createXlibSurfaceKHRUnique( XlibSurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + // wrapper function for command vkCreateXcbSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXcbSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createXcbSurfaceKHR( XcbSurfaceCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateXcbSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXcbSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createXcbSurfaceKHR( XcbSurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateXcbSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXcbSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createXcbSurfaceKHRUnique( XcbSurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + // wrapper function for command vkCreateWaylandSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWaylandSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createWaylandSurfaceKHR( WaylandSurfaceCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateWaylandSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWaylandSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createWaylandSurfaceKHR( WaylandSurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateWaylandSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWaylandSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createWaylandSurfaceKHRUnique( WaylandSurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + // wrapper function for command vkCreateAndroidSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAndroidSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createAndroidSurfaceKHR( AndroidSurfaceCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateAndroidSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAndroidSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createAndroidSurfaceKHR( AndroidSurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateAndroidSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAndroidSurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createAndroidSurfaceKHRUnique( AndroidSurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + // wrapper function for command vkCreateWin32SurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWin32SurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createWin32SurfaceKHR( Win32SurfaceCreateInfoKHR const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateWin32SurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWin32SurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createWin32SurfaceKHR( Win32SurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateWin32SurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWin32SurfaceKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createWin32SurfaceKHRUnique( Win32SurfaceCreateInfoKHR const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + // wrapper function for command vkCreateDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugReportCallbackEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDebugReportCallbackEXT( DebugReportCallbackCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DebugReportCallbackEXT * pCallback, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugReportCallbackEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDebugReportCallbackEXT( DebugReportCallbackCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugReportCallbackEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDebugReportCallbackEXTUnique( DebugReportCallbackCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugReportCallbackEXT.html + template ::type = true> + void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugReportCallbackEXT.html + template ::type = true> + void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugReportCallbackEXT.html + template ::type = true> + void destroy( DebugReportCallbackEXT callback, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugReportCallbackEXT.html + template ::type = true> + void destroy( DebugReportCallbackEXT callback, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDebugReportMessageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugReportMessageEXT.html + template ::type = true> + void debugReportMessageEXT( DebugReportFlagsEXT flags, + DebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + char const * pLayerPrefix, + char const * pMessage, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDebugReportMessageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugReportMessageEXT.html + template ::type = true> + void debugReportMessageEXT( DebugReportFlagsEXT flags, + DebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + std::string const & layerPrefix, + std::string const & message, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + // wrapper function for command vkCreateStreamDescriptorSurfaceGGP, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateStreamDescriptorSurfaceGGP.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createStreamDescriptorSurfaceGGP( StreamDescriptorSurfaceCreateInfoGGP const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateStreamDescriptorSurfaceGGP, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateStreamDescriptorSurfaceGGP.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createStreamDescriptorSurfaceGGP( StreamDescriptorSurfaceCreateInfoGGP const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateStreamDescriptorSurfaceGGP, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateStreamDescriptorSurfaceGGP.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createStreamDescriptorSurfaceGGPUnique( StreamDescriptorSurfaceCreateInfoGGP const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_GGP*/ + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + // wrapper function for command vkCreateViSurfaceNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateViSurfaceNN.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createViSurfaceNN( ViSurfaceCreateInfoNN const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateViSurfaceNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateViSurfaceNN.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createViSurfaceNN( ViSurfaceCreateInfoNN const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateViSurfaceNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateViSurfaceNN.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createViSurfaceNNUnique( ViSurfaceCreateInfoNN const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_device_group_creation === + + // wrapper function for command vkEnumeratePhysicalDeviceGroupsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html + template ::type = true> + VULKAN_HPP_NODISCARD Result enumeratePhysicalDeviceGroupsKHR( uint32_t * pPhysicalDeviceGroupCount, + PhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumeratePhysicalDeviceGroupsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html + template < + typename PhysicalDeviceGroupPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumeratePhysicalDeviceGroupsKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; + // wrapper function for command vkEnumeratePhysicalDeviceGroupsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html + template < + typename PhysicalDeviceGroupPropertiesAllocator = std::allocator, + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumeratePhysicalDeviceGroupsKHR( PhysicalDeviceGroupPropertiesAllocator const & physicalDeviceGroupPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + // wrapper function for command vkCreateIOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIOSSurfaceMVK.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createIOSSurfaceMVK( IOSSurfaceCreateInfoMVK const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateIOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIOSSurfaceMVK.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createIOSSurfaceMVK( IOSSurfaceCreateInfoMVK const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateIOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIOSSurfaceMVK.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createIOSSurfaceMVKUnique( IOSSurfaceCreateInfoMVK const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + // wrapper function for command vkCreateMacOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMacOSSurfaceMVK.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createMacOSSurfaceMVK( MacOSSurfaceCreateInfoMVK const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateMacOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMacOSSurfaceMVK.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createMacOSSurfaceMVK( MacOSSurfaceCreateInfoMVK const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateMacOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMacOSSurfaceMVK.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createMacOSSurfaceMVKUnique( MacOSSurfaceCreateInfoMVK const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + // wrapper function for command vkCreateDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugUtilsMessengerEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDebugUtilsMessengerEXT( DebugUtilsMessengerCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + DebugUtilsMessengerEXT * pMessenger, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugUtilsMessengerEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDebugUtilsMessengerEXT( DebugUtilsMessengerCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugUtilsMessengerEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDebugUtilsMessengerEXTUnique( DebugUtilsMessengerCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugUtilsMessengerEXT.html + template ::type = true> + void destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugUtilsMessengerEXT.html + template ::type = true> + void destroyDebugUtilsMessengerEXT( DebugUtilsMessengerEXT messenger VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkDestroyDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugUtilsMessengerEXT.html + template ::type = true> + void destroy( DebugUtilsMessengerEXT messenger, + AllocationCallbacks const * pAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkDestroyDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDebugUtilsMessengerEXT.html + template ::type = true> + void destroy( DebugUtilsMessengerEXT messenger, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkSubmitDebugUtilsMessageEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSubmitDebugUtilsMessageEXT.html + template ::type = true> + void submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + DebugUtilsMessageTypeFlagsEXT messageTypes, + DebugUtilsMessengerCallbackDataEXT const * pCallbackData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkSubmitDebugUtilsMessageEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSubmitDebugUtilsMessageEXT.html + template ::type = true> + void submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + DebugUtilsMessageTypeFlagsEXT messageTypes, + DebugUtilsMessengerCallbackDataEXT const & callbackData, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + // wrapper function for command vkCreateImagePipeSurfaceFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImagePipeSurfaceFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createImagePipeSurfaceFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateImagePipeSurfaceFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImagePipeSurfaceFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createImagePipeSurfaceFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateImagePipeSurfaceFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImagePipeSurfaceFUCHSIA.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createImagePipeSurfaceFUCHSIAUnique( ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + // wrapper function for command vkCreateMetalSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMetalSurfaceEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createMetalSurfaceEXT( MetalSurfaceCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateMetalSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMetalSurfaceEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createMetalSurfaceEXT( MetalSurfaceCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateMetalSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMetalSurfaceEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createMetalSurfaceEXTUnique( MetalSurfaceCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_headless_surface === + + // wrapper function for command vkCreateHeadlessSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateHeadlessSurfaceEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createHeadlessSurfaceEXT( HeadlessSurfaceCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateHeadlessSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateHeadlessSurfaceEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createHeadlessSurfaceEXT( HeadlessSurfaceCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateHeadlessSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateHeadlessSurfaceEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createHeadlessSurfaceEXTUnique( HeadlessSurfaceCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + // wrapper function for command vkCreateDirectFBSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDirectFBSurfaceEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createDirectFBSurfaceEXT( DirectFBSurfaceCreateInfoEXT const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateDirectFBSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDirectFBSurfaceEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDirectFBSurfaceEXT( DirectFBSurfaceCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateDirectFBSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDirectFBSurfaceEXT.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDirectFBSurfaceEXTUnique( DirectFBSurfaceCreateInfoEXT const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + // wrapper function for command vkCreateScreenSurfaceQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateScreenSurfaceQNX.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createScreenSurfaceQNX( ScreenSurfaceCreateInfoQNX const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateScreenSurfaceQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateScreenSurfaceQNX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createScreenSurfaceQNX( ScreenSurfaceCreateInfoQNX const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateScreenSurfaceQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateScreenSurfaceQNX.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createScreenSurfaceQNXUnique( ScreenSurfaceCreateInfoQNX const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + + // wrapper function for command vkCreateSurfaceOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSurfaceOHOS.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createSurfaceOHOS( SurfaceCreateInfoOHOS const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateSurfaceOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSurfaceOHOS.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSurfaceOHOS( SurfaceCreateInfoOHOS const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateSurfaceOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSurfaceOHOS.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createSurfaceOHOSUnique( SurfaceCreateInfoOHOS const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_OHOS*/ + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + + // wrapper function for command vkCreateUbmSurfaceSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateUbmSurfaceSEC.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createUbmSurfaceSEC( UbmSurfaceCreateInfoSEC const * pCreateInfo, + AllocationCallbacks const * pAllocator, + SurfaceKHR * pSurface, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; +# ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateUbmSurfaceSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateUbmSurfaceSEC.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type + createUbmSurfaceSEC( UbmSurfaceCreateInfoSEC const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateUbmSurfaceSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateUbmSurfaceSEC.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createUbmSurfaceSECUnique( UbmSurfaceCreateInfoSEC const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +# endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + + operator VkInstance() const VULKAN_HPP_NOEXCEPT + { + return m_instance; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return m_instance != VK_NULL_HANDLE; + } + + bool operator!() const VULKAN_HPP_NOEXCEPT + { + return m_instance == VK_NULL_HANDLE; + } + + private: + VkInstance m_instance = {}; + }; + + template <> + struct CppType + { + using Type = Instance; + }; + + template <> + struct CppType + { + using Type = Instance; + }; + +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + template <> + struct CppType + { + using Type = Instance; + }; +#endif + + template <> + struct isVulkanHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkCreateInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateInstance.html + template ::type = true> + VULKAN_HPP_NODISCARD Result createInstance( InstanceCreateInfo const * pCreateInfo, + AllocationCallbacks const * pAllocator, + Instance * pInstance, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkCreateInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateInstance.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type createInstance( + InstanceCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); +# ifndef VULKAN_HPP_NO_SMART_HANDLE + // wrapper function for command vkCreateInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateInstance.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type createInstanceUnique( + InstanceCreateInfo const & createInfo, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); +# endif /* VULKAN_HPP_NO_SMART_HANDLE */ +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkEnumerateInstanceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceExtensionProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD Result enumerateInstanceExtensionProperties( + char const * pLayerName, uint32_t * pPropertyCount, ExtensionProperties * pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumerateInstanceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceExtensionProperties.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateInstanceExtensionProperties( + Optional layerName VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); + // wrapper function for command vkEnumerateInstanceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceExtensionProperties.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateInstanceExtensionProperties( + Optional layerName, + ExtensionPropertiesAllocator const & extensionPropertiesAllocator, + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // wrapper function for command vkEnumerateInstanceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceLayerProperties.html + template ::type = true> + VULKAN_HPP_NODISCARD Result enumerateInstanceLayerProperties( + uint32_t * pPropertyCount, LayerProperties * pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumerateInstanceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceLayerProperties.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateInstanceLayerProperties( + Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); + // wrapper function for command vkEnumerateInstanceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceLayerProperties.html + template , + typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, + typename std::enable_if::value, int>::type = 0, + typename std::enable_if::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateInstanceLayerProperties( + LayerPropertiesAllocator const & layerPropertiesAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkEnumerateInstanceVersion, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceVersion.html + template ::type = true> + VULKAN_HPP_NODISCARD Result enumerateInstanceVersion( uint32_t * pApiVersion, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) + VULKAN_HPP_NOEXCEPT; +#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE + // wrapper function for command vkEnumerateInstanceVersion, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceVersion.html + template ::type = true> + VULKAN_HPP_NODISCARD typename ResultValueType::type enumerateInstanceVersion( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); +#endif /* VULKAN_HPP_DISABLE_ENHANCED_MODE */ + + // operators to compare VULKAN_HPP_NAMESPACE::-handles + template ::value, int>::type = 0> + bool operator==( T const & lhs, T const & rhs ) + { + return static_cast( lhs ) == static_cast( rhs ); + } + + template ::value, int>::type = 0> + bool operator!=( T const & lhs, T const & rhs ) + { + return static_cast( lhs ) != static_cast( rhs ); + } + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + template ::value, int>::type = 0> + auto operator<=>( T const & lhs, T const & rhs ) + { + return static_cast( lhs ) <=> static_cast( rhs ); + } +#else + template ::value, int>::type = 0> + bool operator<( T const & lhs, T const & rhs ) + { + return static_cast( lhs ) < static_cast( rhs ); + } + + template ::value, int>::type = 0> + bool operator<=( T const & lhs, T const & rhs ) + { + return static_cast( lhs ) <= static_cast( rhs ); + } + + template ::value, int>::type = 0> + bool operator>( T const & lhs, T const & rhs ) + { + return static_cast( lhs ) > static_cast( rhs ); + } + + template ::value, int>::type = 0> + bool operator>=( T const & lhs, T const & rhs ) + { + return static_cast( lhs ) >= static_cast( rhs ); + } +#endif + + template ::value, int>::type = 0> + bool operator==( T const & v, std::nullptr_t ) + { + return !v; + } + + template ::value, int>::type = 0> + bool operator==( std::nullptr_t, T const & v ) + { + return !v; + } + + template ::value, int>::type = 0> + bool operator!=( T const & v, std::nullptr_t ) + { + return !!v; + } + + template ::value, int>::type = 0> + bool operator!=( std::nullptr_t, T const & v ) + { + return !!v; + } +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_hash.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_hash.hpp new file mode 100644 index 000000000..4b9b738dd --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_hash.hpp @@ -0,0 +1,21927 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_HASH_HPP +#define VULKAN_HASH_HPP + +#if !defined( VULKAN_HPP_CXX_MODULE ) +# include +#endif + +VULKAN_HPP_EXPORT namespace std +{ + //======================================= + //=== HASH structures for Flags types === + //======================================= + + template + struct hash> + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Flags const & flags ) const VULKAN_HPP_NOEXCEPT + { + return std::hash::type>{}( static_cast::type>( flags ) ); + } + }; + + //=================================== + //=== HASH structures for handles === + //=================================== + + //=== VK_VERSION_1_0 === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Instance const & instance ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( instance ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevice const & physicalDevice ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( physicalDevice ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Device const & device ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( device ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Queue const & queue ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( queue ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceMemory const & deviceMemory ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( deviceMemory ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Fence const & fence ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( fence ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Semaphore const & semaphore ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( semaphore ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueryPool const & queryPool ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( queryPool ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Buffer const & buffer ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( buffer ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Image const & image ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( image ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageView const & imageView ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( imageView ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandPool const & commandPool ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( commandPool ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBuffer const & commandBuffer ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( commandBuffer ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Event const & event ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( event ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferView const & bufferView ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( bufferView ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderModule const & shaderModule ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( shaderModule ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCache const & pipelineCache ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( pipelineCache ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Pipeline const & pipeline ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( pipeline ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineLayout const & pipelineLayout ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( pipelineLayout ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Sampler const & sampler ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( sampler ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorPool const & descriptorPool ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( descriptorPool ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSet const & descriptorSet ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( descriptorSet ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayout const & descriptorSetLayout ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( descriptorSetLayout ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Framebuffer const & framebuffer ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( framebuffer ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPass const & renderPass ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( renderPass ) ); + } + }; + + //=== VK_VERSION_1_1 === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const & descriptorUpdateTemplate ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( descriptorUpdateTemplate ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const & samplerYcbcrConversion ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( samplerYcbcrConversion ) ); + } + }; + + //=== VK_VERSION_1_3 === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PrivateDataSlot const & privateDataSlot ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( privateDataSlot ) ); + } + }; + + //=== VK_KHR_surface === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceKHR const & surfaceKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( surfaceKHR ) ); + } + }; + + //=== VK_KHR_swapchain === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainKHR const & swapchainKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( swapchainKHR ) ); + } + }; + + //=== VK_KHR_display === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayKHR const & displayKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( displayKHR ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModeKHR const & displayModeKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( displayModeKHR ) ); + } + }; + + //=== VK_EXT_debug_report === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const & debugReportCallbackEXT ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( debugReportCallbackEXT ) ); + } + }; + + //=== VK_KHR_video_queue === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionKHR const & videoSessionKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( videoSessionKHR ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const & videoSessionParametersKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( videoSessionParametersKHR ) ); + } + }; + + //=== VK_NVX_binary_import === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CuModuleNVX const & cuModuleNVX ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( cuModuleNVX ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CuFunctionNVX const & cuFunctionNVX ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( cuFunctionNVX ) ); + } + }; + + //=== VK_EXT_debug_utils === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const & debugUtilsMessengerEXT ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( debugUtilsMessengerEXT ) ); + } + }; + + //=== VK_EXT_descriptor_heap === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorARM const & tensorARM ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( tensorARM ) ); + } + }; + + //=== VK_KHR_acceleration_structure === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const & accelerationStructureKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( accelerationStructureKHR ) ); + } + }; + + //=== VK_EXT_validation_cache === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ValidationCacheEXT const & validationCacheEXT ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( validationCacheEXT ) ); + } + }; + + //=== VK_NV_ray_tracing === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureNV const & accelerationStructureNV ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( accelerationStructureNV ) ); + } + }; + + //=== VK_INTEL_performance_query === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const & performanceConfigurationINTEL ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( performanceConfigurationINTEL ) ); + } + }; + + //=== VK_KHR_deferred_host_operations === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeferredOperationKHR const & deferredOperationKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( deferredOperationKHR ) ); + } + }; + + //=== VK_NV_device_generated_commands === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const & indirectCommandsLayoutNV ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( indirectCommandsLayoutNV ) ); + } + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CudaModuleNV const & cudaModuleNV ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( cudaModuleNV ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CudaFunctionNV const & cudaFunctionNV ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( cudaFunctionNV ) ); + } + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const & bufferCollectionFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( bufferCollectionFUCHSIA ) ); + } + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_EXT_opacity_micromap === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MicromapEXT const & micromapEXT ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( micromapEXT ) ); + } + }; + + //=== VK_ARM_tensors === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorViewARM const & tensorViewARM ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( tensorViewARM ) ); + } + }; + + //=== VK_NV_optical_flow === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV const & opticalFlowSessionNV ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( opticalFlowSessionNV ) ); + } + }; + + //=== VK_EXT_shader_object === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderEXT const & shaderEXT ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( shaderEXT ) ); + } + }; + + //=== VK_KHR_pipeline_binary === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineBinaryKHR const & pipelineBinaryKHR ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( pipelineBinaryKHR ) ); + } + }; + + //=== VK_ARM_data_graph === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM const & dataGraphPipelineSessionARM ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( dataGraphPipelineSessionARM ) ); + } + }; + + //=== VK_NV_external_compute_queue === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV const & externalComputeQueueNV ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( externalComputeQueueNV ) ); + } + }; + + //=== VK_EXT_device_generated_commands === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT const & indirectCommandsLayoutEXT ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( indirectCommandsLayoutEXT ) ); + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT const & indirectExecutionSetEXT ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( indirectExecutionSetEXT ) ); + } + }; + + //=== VK_ARM_shader_instrumentation === + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM const & shaderInstrumentationARM ) const VULKAN_HPP_NOEXCEPT + { + return std::hash{}( static_cast( shaderInstrumentationARM ) ); + } + }; + +#if 14 <= VULKAN_HPP_CPP_VERSION + //====================================== + //=== HASH structures for structures === + //====================================== + +# if !defined( VULKAN_HPP_HASH_COMBINE ) +# define VULKAN_HPP_HASH_COMBINE( seed, value ) \ + seed ^= std::hash::type>{}( value ) + 0x9e3779b9 + ( seed << 6 ) + ( seed >> 2 ) +# endif + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AabbPositionsKHR const & aabbPositionsKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.minX ); + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.minY ); + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.minZ ); + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.maxX ); + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.maxY ); + VULKAN_HPP_HASH_COMBINE( seed, aabbPositionsKHR.maxZ ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR const & accelerationStructureBuildRangeInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.primitiveCount ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.primitiveOffset ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.firstVertex ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildRangeInfoKHR.transformOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR const & accelerationStructureBuildSizesInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.accelerationStructureSize ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.updateScratchSize ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureBuildSizesInfoKHR.buildScratchSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT const & accelerationStructureCaptureDescriptorDataInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCaptureDescriptorDataInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCaptureDescriptorDataInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCaptureDescriptorDataInfoEXT.accelerationStructure ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCaptureDescriptorDataInfoEXT.accelerationStructureNV ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceAddressRangeKHR const & deviceAddressRangeKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceAddressRangeKHR.address ); + VULKAN_HPP_HASH_COMBINE( seed, deviceAddressRangeKHR.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfo2KHR const & accelerationStructureCreateInfo2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfo2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfo2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfo2KHR.createFlags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfo2KHR.addressRange ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfo2KHR.addressFlags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfo2KHR.type ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR const & accelerationStructureCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.createFlags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.offset ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.size ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.type ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoKHR.deviceAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const & geometryTrianglesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexData ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexOffset ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexCount ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexStride ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.vertexFormat ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexData ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexOffset ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexCount ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.indexType ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.transformData ); + VULKAN_HPP_HASH_COMBINE( seed, geometryTrianglesNV.transformOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeometryAABBNV const & geometryAABBNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.aabbData ); + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.numAABBs ); + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.stride ); + VULKAN_HPP_HASH_COMBINE( seed, geometryAABBNV.offset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeometryDataNV const & geometryDataNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, geometryDataNV.triangles ); + VULKAN_HPP_HASH_COMBINE( seed, geometryDataNV.aabbs ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeometryNV const & geometryNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, geometryNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, geometryNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, geometryNV.geometryType ); + VULKAN_HPP_HASH_COMBINE( seed, geometryNV.geometry ); + VULKAN_HPP_HASH_COMBINE( seed, geometryNV.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const & accelerationStructureInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.type ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.instanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.geometryCount ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInfoNV.pGeometries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV const & accelerationStructureCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.compactedSize ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureCreateInfoNV.info ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR const & accelerationStructureDeviceAddressInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureDeviceAddressInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureDeviceAddressInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureDeviceAddressInfoKHR.accelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transformMatrixKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + for ( size_t i = 0; i < 3; ++i ) + { + for ( size_t j = 0; j < 4; ++j ) + { + VULKAN_HPP_HASH_COMBINE( seed, transformMatrixKHR.matrix[i][j] ); + } + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR const & accelerationStructureInstanceKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.transform ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.instanceCustomIndex ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.mask ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.instanceShaderBindingTableRecordOffset ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureInstanceKHR.accelerationStructureReference ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV const & accelerationStructureMatrixMotionInstanceNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.transformT0 ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.transformT1 ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.instanceCustomIndex ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.mask ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.instanceShaderBindingTableRecordOffset ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMatrixMotionInstanceNV.accelerationStructureReference ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV const & accelerationStructureMemoryRequirementsInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.type ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMemoryRequirementsInfoNV.accelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV const & accelerationStructureMotionInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.maxInstances ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureMotionInfoNV.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SRTDataNV const & sRTDataNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.sx ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.a ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.b ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.pvx ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.sy ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.c ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.pvy ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.sz ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.pvz ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qx ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qy ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qz ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.qw ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.tx ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.ty ); + VULKAN_HPP_HASH_COMBINE( seed, sRTDataNV.tz ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV const & accelerationStructureSRTMotionInstanceNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.transformT0 ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.transformT1 ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.instanceCustomIndex ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.mask ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.instanceShaderBindingTableRecordOffset ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureSRTMotionInstanceNV.accelerationStructureReference ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MicromapUsageEXT const & micromapUsageEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, micromapUsageEXT.count ); + VULKAN_HPP_HASH_COMBINE( seed, micromapUsageEXT.subdivisionLevel ); + VULKAN_HPP_HASH_COMBINE( seed, micromapUsageEXT.format ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR const & accelerationStructureVersionInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureVersionInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureVersionInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, accelerationStructureVersionInfoKHR.pVersionData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR const & acquireNextImageInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.swapchain ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.timeout ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.fence ); + VULKAN_HPP_HASH_COMBINE( seed, acquireNextImageInfoKHR.deviceMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR const & acquireProfilingLockInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, acquireProfilingLockInfoKHR.timeout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AllocationCallbacks const & allocationCallbacks ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pUserData ); + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnReallocation ); + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnFree ); + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnInternalAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, allocationCallbacks.pfnInternalFree ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC const & amigoProfilingSubmitInfoSEC ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, amigoProfilingSubmitInfoSEC.sType ); + VULKAN_HPP_HASH_COMBINE( seed, amigoProfilingSubmitInfoSEC.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, amigoProfilingSubmitInfoSEC.firstDrawTimestamp ); + VULKAN_HPP_HASH_COMBINE( seed, amigoProfilingSubmitInfoSEC.swapBufferTimestamp ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ComponentMapping const & componentMapping ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, componentMapping.r ); + VULKAN_HPP_HASH_COMBINE( seed, componentMapping.g ); + VULKAN_HPP_HASH_COMBINE( seed, componentMapping.b ); + VULKAN_HPP_HASH_COMBINE( seed, componentMapping.a ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID const & androidHardwareBufferFormatProperties2ANDROID ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.format ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.externalFormat ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.formatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.samplerYcbcrConversionComponents ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedYcbcrModel ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedYcbcrRange ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedXChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatProperties2ANDROID.suggestedYChromaOffset ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID const & androidHardwareBufferFormatPropertiesANDROID ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.format ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.externalFormat ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.formatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.samplerYcbcrConversionComponents ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedYcbcrModel ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedYcbcrRange ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedXChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatPropertiesANDROID.suggestedYChromaOffset ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID const & androidHardwareBufferFormatResolvePropertiesANDROID ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatResolvePropertiesANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatResolvePropertiesANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferFormatResolvePropertiesANDROID.colorAttachmentFormat ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID const & androidHardwareBufferPropertiesANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.allocationSize ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferPropertiesANDROID.memoryTypeBits ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID const & androidHardwareBufferUsageANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferUsageANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferUsageANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidHardwareBufferUsageANDROID.androidHardwareBufferUsage ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR const & androidSurfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, androidSurfaceCreateInfoKHR.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD const & antiLagPresentationInfoAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, antiLagPresentationInfoAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, antiLagPresentationInfoAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, antiLagPresentationInfoAMD.stage ); + VULKAN_HPP_HASH_COMBINE( seed, antiLagPresentationInfoAMD.frameIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AntiLagDataAMD const & antiLagDataAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, antiLagDataAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, antiLagDataAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, antiLagDataAMD.mode ); + VULKAN_HPP_HASH_COMBINE( seed, antiLagDataAMD.maxFPS ); + VULKAN_HPP_HASH_COMBINE( seed, antiLagDataAMD.pPresentationInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ApplicationInfo const & applicationInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.pNext ); + for ( char const * p = applicationInfo.pApplicationName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.applicationVersion ); + for ( char const * p = applicationInfo.pEngineName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.engineVersion ); + VULKAN_HPP_HASH_COMBINE( seed, applicationInfo.apiVersion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentDescription const & attachmentDescription ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.flags ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.format ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.samples ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.loadOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.storeOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.stencilLoadOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.stencilStoreOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.initialLayout ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription.finalLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentDescription2 const & attachmentDescription2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.flags ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.format ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.samples ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.loadOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.storeOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.stencilLoadOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.stencilStoreOp ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.initialLayout ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescription2.finalLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout const & attachmentDescriptionStencilLayout ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.stencilInitialLayout ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentDescriptionStencilLayout.stencilFinalLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentFeedbackLoopInfoEXT const & attachmentFeedbackLoopInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentFeedbackLoopInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentFeedbackLoopInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentFeedbackLoopInfoEXT.feedbackLoopEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentReference const & attachmentReference ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference.attachment ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference.layout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentReference2 const & attachmentReference2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.attachment ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.layout ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReference2.aspectMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout const & attachmentReferenceStencilLayout ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentReferenceStencilLayout.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReferenceStencilLayout.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentReferenceStencilLayout.stencilLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD const & attachmentSampleCountInfoAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.pColorAttachmentSamples ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleCountInfoAMD.depthStencilAttachmentSamples ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Extent2D const & extent2D ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, extent2D.width ); + VULKAN_HPP_HASH_COMBINE( seed, extent2D.height ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SampleLocationEXT const & sampleLocationEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationEXT.x ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationEXT.y ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sampleLocationsPerPixel ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sampleLocationGridSize ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.sampleLocationsCount ); + VULKAN_HPP_HASH_COMBINE( seed, sampleLocationsInfoEXT.pSampleLocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT const & attachmentSampleLocationsEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleLocationsEXT.attachmentIndex ); + VULKAN_HPP_HASH_COMBINE( seed, attachmentSampleLocationsEXT.sampleLocationsInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BaseInStructure const & baseInStructure ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, baseInStructure.sType ); + VULKAN_HPP_HASH_COMBINE( seed, baseInStructure.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BaseOutStructure const & baseOutStructure ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, baseOutStructure.sType ); + VULKAN_HPP_HASH_COMBINE( seed, baseOutStructure.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BeginCustomResolveInfoEXT const & beginCustomResolveInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, beginCustomResolveInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, beginCustomResolveInfoEXT.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV const & bindAccelerationStructureMemoryInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.accelerationStructure ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.memory ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.memoryOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.deviceIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindAccelerationStructureMemoryInfoNV.pDeviceIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo const & bindBufferMemoryDeviceGroupInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.deviceIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryDeviceGroupInfo.pDeviceIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo const & bindBufferMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.memory ); + VULKAN_HPP_HASH_COMBINE( seed, bindBufferMemoryInfo.memoryOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BindDataGraphPipelineSessionMemoryInfoARM const & bindDataGraphPipelineSessionMemoryInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindDataGraphPipelineSessionMemoryInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindDataGraphPipelineSessionMemoryInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindDataGraphPipelineSessionMemoryInfoARM.session ); + VULKAN_HPP_HASH_COMBINE( seed, bindDataGraphPipelineSessionMemoryInfoARM.bindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, bindDataGraphPipelineSessionMemoryInfoARM.objectIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bindDataGraphPipelineSessionMemoryInfoARM.memory ); + VULKAN_HPP_HASH_COMBINE( seed, bindDataGraphPipelineSessionMemoryInfoARM.memoryOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT const & bindDescriptorBufferEmbeddedSamplersInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorBufferEmbeddedSamplersInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorBufferEmbeddedSamplersInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorBufferEmbeddedSamplersInfoEXT.stageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorBufferEmbeddedSamplersInfoEXT.layout ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorBufferEmbeddedSamplersInfoEXT.set ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo const & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorSetsInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorSetsInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorSetsInfo.stageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorSetsInfo.layout ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorSetsInfo.firstSet ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorSetsInfo.descriptorSetCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorSetsInfo.pDescriptorSets ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorSetsInfo.dynamicOffsetCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindDescriptorSetsInfo.pDynamicOffsets ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindHeapInfoEXT const & bindHeapInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindHeapInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindHeapInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindHeapInfoEXT.heapRange ); + VULKAN_HPP_HASH_COMBINE( seed, bindHeapInfoEXT.reservedRangeOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bindHeapInfoEXT.reservedRangeSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Offset2D const & offset2D ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, offset2D.x ); + VULKAN_HPP_HASH_COMBINE( seed, offset2D.y ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Rect2D const & rect2D ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rect2D.offset ); + VULKAN_HPP_HASH_COMBINE( seed, rect2D.extent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo const & bindImageMemoryDeviceGroupInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.deviceIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.pDeviceIndices ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.splitInstanceBindRegionCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryDeviceGroupInfo.pSplitInstanceBindRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindImageMemoryInfo const & bindImageMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.memory ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemoryInfo.memoryOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR const & bindImageMemorySwapchainInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.swapchain ); + VULKAN_HPP_HASH_COMBINE( seed, bindImageMemorySwapchainInfoKHR.imageIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo const & bindImagePlaneMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindImagePlaneMemoryInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindImagePlaneMemoryInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindImagePlaneMemoryInfo.planeAspect ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindIndexBuffer3InfoKHR const & bindIndexBuffer3InfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBuffer3InfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBuffer3InfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBuffer3InfoKHR.addressRange ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBuffer3InfoKHR.addressFlags ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBuffer3InfoKHR.indexType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandEXT const & bindIndexBufferIndirectCommandEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandEXT.bufferAddress ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandEXT.size ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandEXT.indexType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV const & bindIndexBufferIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandNV.bufferAddress ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandNV.size ); + VULKAN_HPP_HASH_COMBINE( seed, bindIndexBufferIndirectCommandNV.indexType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindMemoryStatus const & bindMemoryStatus ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindMemoryStatus.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindMemoryStatus.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindMemoryStatus.pResult ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV const & bindPipelineIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindPipelineIndirectCommandNV.pipelineAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV const & bindShaderGroupIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindShaderGroupIndirectCommandNV.groupIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseMemoryBind const & sparseMemoryBind ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.resourceOffset ); + VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.size ); + VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.memory ); + VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.memoryOffset ); + VULKAN_HPP_HASH_COMBINE( seed, sparseMemoryBind.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo const & sparseBufferMemoryBindInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseBufferMemoryBindInfo.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, sparseBufferMemoryBindInfo.bindCount ); + VULKAN_HPP_HASH_COMBINE( seed, sparseBufferMemoryBindInfo.pBinds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo const & sparseImageOpaqueMemoryBindInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageOpaqueMemoryBindInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageOpaqueMemoryBindInfo.bindCount ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageOpaqueMemoryBindInfo.pBinds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageSubresource const & imageSubresource ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSubresource.aspectMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresource.mipLevel ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresource.arrayLayer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Offset3D const & offset3D ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, offset3D.x ); + VULKAN_HPP_HASH_COMBINE( seed, offset3D.y ); + VULKAN_HPP_HASH_COMBINE( seed, offset3D.z ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Extent3D const & extent3D ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, extent3D.width ); + VULKAN_HPP_HASH_COMBINE( seed, extent3D.height ); + VULKAN_HPP_HASH_COMBINE( seed, extent3D.depth ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseImageMemoryBind const & sparseImageMemoryBind ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.subresource ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.offset ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.extent ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.memory ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.memoryOffset ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBind.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo const & sparseImageMemoryBindInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBindInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBindInfo.bindCount ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryBindInfo.pBinds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindSparseInfo const & bindSparseInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.waitSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pWaitSemaphores ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.bufferBindCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pBufferBinds ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.imageOpaqueBindCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pImageOpaqueBinds ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.imageBindCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pImageBinds ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.signalSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, bindSparseInfo.pSignalSemaphores ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindTensorMemoryInfoARM const & bindTensorMemoryInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindTensorMemoryInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindTensorMemoryInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindTensorMemoryInfoARM.tensor ); + VULKAN_HPP_HASH_COMBINE( seed, bindTensorMemoryInfoARM.memory ); + VULKAN_HPP_HASH_COMBINE( seed, bindTensorMemoryInfoARM.memoryOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindTransformFeedbackBuffer2InfoEXT const & bindTransformFeedbackBuffer2InfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindTransformFeedbackBuffer2InfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindTransformFeedbackBuffer2InfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindTransformFeedbackBuffer2InfoEXT.addressRange ); + VULKAN_HPP_HASH_COMBINE( seed, bindTransformFeedbackBuffer2InfoEXT.addressFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::StridedDeviceAddressRangeKHR const & stridedDeviceAddressRangeKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRangeKHR.address ); + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRangeKHR.size ); + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRangeKHR.stride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindVertexBuffer3InfoKHR const & bindVertexBuffer3InfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBuffer3InfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBuffer3InfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBuffer3InfoKHR.setStride ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBuffer3InfoKHR.addressRange ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBuffer3InfoKHR.addressFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandEXT const & bindVertexBufferIndirectCommandEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandEXT.bufferAddress ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandEXT.size ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandEXT.stride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV const & bindVertexBufferIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandNV.bufferAddress ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandNV.size ); + VULKAN_HPP_HASH_COMBINE( seed, bindVertexBufferIndirectCommandNV.stride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR const & bindVideoSessionMemoryInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.memoryBindIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.memory ); + VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.memoryOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bindVideoSessionMemoryInfoKHR.memorySize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM const & blitImageCubicWeightsInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, blitImageCubicWeightsInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageCubicWeightsInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageCubicWeightsInfoQCOM.cubicWeights ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresourceLayers ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.aspectMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.mipLevel ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.baseArrayLayer ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceLayers.layerCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageBlit2 const & imageBlit2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.srcSubresource ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.srcOffsets[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.dstSubresource ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, imageBlit2.dstOffsets[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BlitImageInfo2 const & blitImageInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.srcImage ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.srcImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.pRegions ); + VULKAN_HPP_HASH_COMBINE( seed, blitImageInfo2.filter ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT const & bufferCaptureDescriptorDataInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCaptureDescriptorDataInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCaptureDescriptorDataInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCaptureDescriptorDataInfoEXT.buffer ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA const & bufferCollectionBufferCreateInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.collection ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionBufferCreateInfoFUCHSIA.index ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraintsInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.maxBufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCountForCamping ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCountForDedicatedSlack ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionConstraintsInfoFUCHSIA.minBufferCountForSharedSlack ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA const & bufferCollectionCreateInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionCreateInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionCreateInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionCreateInfoFUCHSIA.collectionToken ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA const & bufferCollectionImageCreateInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.collection ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionImageCreateInfoFUCHSIA.index ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA const & sysmemColorSpaceFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sysmemColorSpaceFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, sysmemColorSpaceFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, sysmemColorSpaceFUCHSIA.colorSpace ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA const & bufferCollectionPropertiesFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.memoryTypeBits ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.bufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.createInfoIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.sysmemPixelFormat ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.formatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.sysmemColorSpaceIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.samplerYcbcrConversionComponents ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedYcbcrModel ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedYcbcrRange ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedXChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCollectionPropertiesFUCHSIA.suggestedYChromaOffset ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCreateInfo const & bufferCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.size ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.usage ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.sharingMode ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.queueFamilyIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCreateInfo.pQueueFamilyIndices ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA const & bufferConstraintsInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.createInfo ); + VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.requiredFormatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, bufferConstraintsInfoFUCHSIA.bufferCollectionConstraints ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCopy const & bufferCopy ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferCopy2 const & bufferCopy2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferCopy2.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT const & bufferDeviceAddressCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressCreateInfoEXT.deviceAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo const & bufferDeviceAddressInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferDeviceAddressInfo.buffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferImageCopy const & bufferImageCopy ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.bufferOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.bufferRowLength ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.bufferImageHeight ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.imageSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.imageOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy.imageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferImageCopy2 const & bufferImageCopy2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.bufferOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.bufferRowLength ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.bufferImageHeight ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.imageSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.imageOffset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferImageCopy2.imageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferMemoryBarrier const & bufferMemoryBarrier ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.srcQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.dstQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.offset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 const & bufferMemoryBarrier2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.srcQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.dstQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.offset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryBarrier2.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 const & bufferMemoryRequirementsInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryRequirementsInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryRequirementsInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferMemoryRequirementsInfo2.buffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo const & bufferOpaqueCaptureAddressCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferOpaqueCaptureAddressCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferOpaqueCaptureAddressCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferOpaqueCaptureAddressCreateInfo.opaqueCaptureAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo const & bufferUsageFlags2CreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferUsageFlags2CreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferUsageFlags2CreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferUsageFlags2CreateInfo.usage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BufferViewCreateInfo const & bufferViewCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.format ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.offset ); + VULKAN_HPP_HASH_COMBINE( seed, bufferViewCreateInfo.range ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::StridedDeviceAddressNV const & stridedDeviceAddressNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressNV.startAddress ); + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressNV.strideInBytes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BuildPartitionedAccelerationStructureIndirectCommandNV const & + buildPartitionedAccelerationStructureIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureIndirectCommandNV.opType ); + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureIndirectCommandNV.argCount ); + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureIndirectCommandNV.argData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PartitionedAccelerationStructureInstancesInputNV const & partitionedAccelerationStructureInstancesInputNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureInstancesInputNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureInstancesInputNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureInstancesInputNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureInstancesInputNV.instanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureInstancesInputNV.maxInstancePerPartitionCount ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureInstancesInputNV.partitionCount ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureInstancesInputNV.maxInstanceInGlobalPartitionCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::BuildPartitionedAccelerationStructureInfoNV const & buildPartitionedAccelerationStructureInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureInfoNV.input ); + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureInfoNV.srcAccelerationStructureData ); + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureInfoNV.dstAccelerationStructureData ); + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureInfoNV.scratchData ); + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureInfoNV.srcInfos ); + VULKAN_HPP_HASH_COMBINE( seed, buildPartitionedAccelerationStructureInfoNV.srcInfosCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR const & calibratedTimestampInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, calibratedTimestampInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, calibratedTimestampInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, calibratedTimestampInfoKHR.timeDomain ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CheckpointData2NV const & checkpointData2NV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.stage ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointData2NV.pCheckpointMarker ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CheckpointDataNV const & checkpointDataNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.stage ); + VULKAN_HPP_HASH_COMBINE( seed, checkpointDataNV.pCheckpointMarker ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & clearDepthStencilValue ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clearDepthStencilValue.depth ); + VULKAN_HPP_HASH_COMBINE( seed, clearDepthStencilValue.stencil ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClearRect const & clearRect ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clearRect.rect ); + VULKAN_HPP_HASH_COMBINE( seed, clearRect.baseArrayLayer ); + VULKAN_HPP_HASH_COMBINE( seed, clearRect.layerCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureBuildClustersBottomLevelInfoNV const & + clusterAccelerationStructureBuildClustersBottomLevelInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildClustersBottomLevelInfoNV.clusterReferencesCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildClustersBottomLevelInfoNV.clusterReferencesStride ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildClustersBottomLevelInfoNV.clusterReferences ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & + clusterAccelerationStructureGeometryIndexAndGeometryFlagsNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.geometryIndex ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.reserved ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.geometryFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureBuildTriangleClusterInfoNV const & + clusterAccelerationStructureBuildTriangleClusterInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.clusterID ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.clusterFlags ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.triangleCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.vertexCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.positionTruncateBitCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.indexType ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.opacityMicromapIndexType ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.baseGeometryIndexAndGeometryFlags ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.indexBufferStride ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.vertexBufferStride ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.geometryIndexAndFlagsBufferStride ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.opacityMicromapIndexBufferStride ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.indexBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.vertexBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.geometryIndexAndFlagsBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.opacityMicromapArray ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterInfoNV.opacityMicromapIndexBuffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV const & + clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.clusterID ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.clusterFlags ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.triangleCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.vertexCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.positionTruncateBitCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.indexType ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.opacityMicromapIndexType ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.baseGeometryIndexAndGeometryFlags ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.indexBufferStride ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.vertexBufferStride ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.geometryIndexAndFlagsBufferStride ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.opacityMicromapIndexBufferStride ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.indexBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.vertexBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.geometryIndexAndFlagsBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.opacityMicromapArray ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.opacityMicromapIndexBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.instantiationBoundingBoxLimit ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureClustersBottomLevelInputNV const & + clusterAccelerationStructureClustersBottomLevelInputNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureClustersBottomLevelInputNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureClustersBottomLevelInputNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureClustersBottomLevelInputNV.maxTotalClusterCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureClustersBottomLevelInputNV.maxClusterCountPerAccelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureTriangleClusterInputNV const & clusterAccelerationStructureTriangleClusterInputNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureTriangleClusterInputNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureTriangleClusterInputNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureTriangleClusterInputNV.vertexFormat ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureTriangleClusterInputNV.maxGeometryIndexValue ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureTriangleClusterInputNV.maxClusterUniqueGeometryCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureTriangleClusterInputNV.maxClusterTriangleCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureTriangleClusterInputNV.maxClusterVertexCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureTriangleClusterInputNV.maxTotalTriangleCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureTriangleClusterInputNV.maxTotalVertexCount ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureTriangleClusterInputNV.minPositionTruncateBitCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureMoveObjectsInputNV const & clusterAccelerationStructureMoveObjectsInputNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureMoveObjectsInputNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureMoveObjectsInputNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureMoveObjectsInputNV.type ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureMoveObjectsInputNV.noMoveOverlap ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureMoveObjectsInputNV.maxMovedBytes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR const & stridedDeviceAddressRegionKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRegionKHR.deviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRegionKHR.stride ); + VULKAN_HPP_HASH_COMBINE( seed, stridedDeviceAddressRegionKHR.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureGetTemplateIndicesInfoNV const & + clusterAccelerationStructureGetTemplateIndicesInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureGetTemplateIndicesInfoNV.clusterTemplateAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureInstantiateClusterInfoNV const & + clusterAccelerationStructureInstantiateClusterInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureInstantiateClusterInfoNV.clusterIdOffset ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureInstantiateClusterInfoNV.geometryIndexOffset ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureInstantiateClusterInfoNV.reserved ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureInstantiateClusterInfoNV.clusterTemplateAddress ); + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureInstantiateClusterInfoNV.vertexBuffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureMoveObjectsInfoNV const & clusterAccelerationStructureMoveObjectsInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, clusterAccelerationStructureMoveObjectsInfoNV.srcAccelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV const & coarseSampleLocationNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleLocationNV.pixelX ); + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleLocationNV.pixelY ); + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleLocationNV.sample ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV const & coarseSampleOrderCustomNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.shadingRate ); + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.sampleCount ); + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.sampleLocationCount ); + VULKAN_HPP_HASH_COMBINE( seed, coarseSampleOrderCustomNV.pSampleLocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT const & colorBlendAdvancedEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, colorBlendAdvancedEXT.advancedBlendOp ); + VULKAN_HPP_HASH_COMBINE( seed, colorBlendAdvancedEXT.srcPremultiplied ); + VULKAN_HPP_HASH_COMBINE( seed, colorBlendAdvancedEXT.dstPremultiplied ); + VULKAN_HPP_HASH_COMBINE( seed, colorBlendAdvancedEXT.blendOverlap ); + VULKAN_HPP_HASH_COMBINE( seed, colorBlendAdvancedEXT.clampResults ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT const & colorBlendEquationEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.srcColorBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.dstColorBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.colorBlendOp ); + VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.srcAlphaBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.dstAlphaBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, colorBlendEquationEXT.alphaBlendOp ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo const & commandBufferAllocateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.commandPool ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.level ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferAllocateInfo.commandBufferCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo const & commandBufferInheritanceInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.renderPass ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.subpass ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.framebuffer ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.occlusionQueryEnable ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.queryFlags ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceInfo.pipelineStatistics ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo const & commandBufferBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferBeginInfo.pInheritanceInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT const & commandBufferInheritanceConditionalRenderingInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceConditionalRenderingInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceConditionalRenderingInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceConditionalRenderingInfoEXT.conditionalRenderingEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceDescriptorHeapInfoEXT const & commandBufferInheritanceDescriptorHeapInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceDescriptorHeapInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceDescriptorHeapInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceDescriptorHeapInfoEXT.pSamplerHeapBindInfo ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceDescriptorHeapInfoEXT.pResourceHeapBindInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM const & commandBufferInheritanceRenderPassTransformInfoQCOM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.transform ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderPassTransformInfoQCOM.renderArea ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo const & commandBufferInheritanceRenderingInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.viewMask ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.pColorAttachmentFormats ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.depthAttachmentFormat ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.stencilAttachmentFormat ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceRenderingInfo.rasterizationSamples ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Viewport const & viewport ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, viewport.x ); + VULKAN_HPP_HASH_COMBINE( seed, viewport.y ); + VULKAN_HPP_HASH_COMBINE( seed, viewport.width ); + VULKAN_HPP_HASH_COMBINE( seed, viewport.height ); + VULKAN_HPP_HASH_COMBINE( seed, viewport.minDepth ); + VULKAN_HPP_HASH_COMBINE( seed, viewport.maxDepth ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV const & commandBufferInheritanceViewportScissorInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.viewportScissor2D ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.viewportDepthCount ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferInheritanceViewportScissorInfoNV.pViewportDepths ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo const & commandBufferSubmitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.commandBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, commandBufferSubmitInfo.deviceMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo const & commandPoolCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, commandPoolCreateInfo.queueFamilyIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ComputeOccupancyPriorityParametersNV const & computeOccupancyPriorityParametersNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, computeOccupancyPriorityParametersNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, computeOccupancyPriorityParametersNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, computeOccupancyPriorityParametersNV.occupancyPriority ); + VULKAN_HPP_HASH_COMBINE( seed, computeOccupancyPriorityParametersNV.occupancyThrottling ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SpecializationMapEntry const & specializationMapEntry ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, specializationMapEntry.constantID ); + VULKAN_HPP_HASH_COMBINE( seed, specializationMapEntry.offset ); + VULKAN_HPP_HASH_COMBINE( seed, specializationMapEntry.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SpecializationInfo const & specializationInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.mapEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.pMapEntries ); + VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, specializationInfo.pData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const & pipelineShaderStageCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.stage ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.module ); + for ( char const * p = pipelineShaderStageCreateInfo.pName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageCreateInfo.pSpecializationInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo const & computePipelineCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.stage ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.layout ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.basePipelineHandle ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineCreateInfo.basePipelineIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV const & computePipelineIndirectBufferInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, computePipelineIndirectBufferInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineIndirectBufferInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineIndirectBufferInfoNV.deviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineIndirectBufferInfoNV.size ); + VULKAN_HPP_HASH_COMBINE( seed, computePipelineIndirectBufferInfoNV.pipelineDeviceAddressCaptureReplay ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfo2EXT const & conditionalRenderingBeginInfo2EXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfo2EXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfo2EXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfo2EXT.addressRange ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfo2EXT.addressFlags ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfo2EXT.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT const & conditionalRenderingBeginInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.offset ); + VULKAN_HPP_HASH_COMBINE( seed, conditionalRenderingBeginInfoEXT.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ConformanceVersion const & conformanceVersion ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.major ); + VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.minor ); + VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.subminor ); + VULKAN_HPP_HASH_COMBINE( seed, conformanceVersion.patch ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::CooperativeMatrixFlexibleDimensionsPropertiesNV const & cooperativeMatrixFlexibleDimensionsPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.MGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.NGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.KGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.AType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.BType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.CType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.ResultType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.saturatingAccumulation ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.scope ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixFlexibleDimensionsPropertiesNV.workgroupInvocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR const & cooperativeMatrixPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.MSize ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.NSize ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.KSize ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.AType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.BType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.CType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.ResultType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.saturatingAccumulation ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesKHR.scope ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV const & cooperativeMatrixPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.MSize ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.NSize ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.KSize ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.AType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.BType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.CType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.DType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeMatrixPropertiesNV.scope ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CooperativeVectorPropertiesNV const & cooperativeVectorPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cooperativeVectorPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeVectorPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeVectorPropertiesNV.inputType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeVectorPropertiesNV.inputInterpretation ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeVectorPropertiesNV.matrixInterpretation ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeVectorPropertiesNV.biasInterpretation ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeVectorPropertiesNV.resultType ); + VULKAN_HPP_HASH_COMBINE( seed, cooperativeVectorPropertiesNV.transpose ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR const & copyAccelerationStructureInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.src ); + VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.dst ); + VULKAN_HPP_HASH_COMBINE( seed, copyAccelerationStructureInfoKHR.mode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyBufferInfo2 const & copyBufferInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.srcBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.dstBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferInfo2.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 const & copyBufferToImageInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.srcBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyBufferToImageInfo2.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM const & copyCommandTransformInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyCommandTransformInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyCommandTransformInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyCommandTransformInfoQCOM.transform ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyDescriptorSet const & copyDescriptorSet ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.srcSet ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.srcBinding ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.srcArrayElement ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.dstSet ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.dstBinding ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.dstArrayElement ); + VULKAN_HPP_HASH_COMBINE( seed, copyDescriptorSet.descriptorCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceMemoryImageCopyKHR const & deviceMemoryImageCopyKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryImageCopyKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryImageCopyKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryImageCopyKHR.addressRange ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryImageCopyKHR.addressFlags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryImageCopyKHR.addressRowLength ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryImageCopyKHR.addressImageHeight ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryImageCopyKHR.imageSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryImageCopyKHR.imageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryImageCopyKHR.imageOffset ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryImageCopyKHR.imageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyDeviceMemoryImageInfoKHR const & copyDeviceMemoryImageInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyDeviceMemoryImageInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyDeviceMemoryImageInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyDeviceMemoryImageInfoKHR.image ); + VULKAN_HPP_HASH_COMBINE( seed, copyDeviceMemoryImageInfoKHR.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyDeviceMemoryImageInfoKHR.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceMemoryCopyKHR const & deviceMemoryCopyKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryCopyKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryCopyKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryCopyKHR.srcRange ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryCopyKHR.srcFlags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryCopyKHR.dstRange ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryCopyKHR.dstFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyDeviceMemoryInfoKHR const & copyDeviceMemoryInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyDeviceMemoryInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyDeviceMemoryInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyDeviceMemoryInfoKHR.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyDeviceMemoryInfoKHR.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageCopy2 const & imageCopy2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.srcSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.dstSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy2.extent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyImageInfo2 const & copyImageInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.srcImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.srcImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageInfo2.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 const & copyImageToBufferInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.srcImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.srcImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.dstBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToBufferInfo2.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyImageToImageInfo const & copyImageToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyImageToImageInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToImageInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToImageInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToImageInfo.srcImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToImageInfo.srcImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToImageInfo.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToImageInfo.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToImageInfo.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToImageInfo.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageToMemoryCopy const & imageToMemoryCopy ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageToMemoryCopy.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageToMemoryCopy.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageToMemoryCopy.pHostPointer ); + VULKAN_HPP_HASH_COMBINE( seed, imageToMemoryCopy.memoryRowLength ); + VULKAN_HPP_HASH_COMBINE( seed, imageToMemoryCopy.memoryImageHeight ); + VULKAN_HPP_HASH_COMBINE( seed, imageToMemoryCopy.imageSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageToMemoryCopy.imageOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageToMemoryCopy.imageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo const & copyImageToMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyImageToMemoryInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToMemoryInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToMemoryInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToMemoryInfo.srcImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToMemoryInfo.srcImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToMemoryInfo.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyImageToMemoryInfo.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandKHR const & copyMemoryIndirectCommandKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectCommandKHR.srcAddress ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectCommandKHR.dstAddress ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectCommandKHR.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyMemoryIndirectInfoKHR const & copyMemoryIndirectInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectInfoKHR.srcCopyFlags ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectInfoKHR.dstCopyFlags ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectInfoKHR.copyCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryIndirectInfoKHR.copyAddressRange ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandKHR const & copyMemoryToImageIndirectCommandKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandKHR.srcAddress ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandKHR.bufferRowLength ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandKHR.bufferImageHeight ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandKHR.imageSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandKHR.imageOffset ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectCommandKHR.imageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectInfoKHR const & copyMemoryToImageIndirectInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectInfoKHR.srcCopyFlags ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectInfoKHR.copyCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectInfoKHR.copyAddressRange ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectInfoKHR.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectInfoKHR.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageIndirectInfoKHR.pImageSubresources ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryToImageCopy const & memoryToImageCopy ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryToImageCopy.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryToImageCopy.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryToImageCopy.pHostPointer ); + VULKAN_HPP_HASH_COMBINE( seed, memoryToImageCopy.memoryRowLength ); + VULKAN_HPP_HASH_COMBINE( seed, memoryToImageCopy.memoryImageHeight ); + VULKAN_HPP_HASH_COMBINE( seed, memoryToImageCopy.imageSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, memoryToImageCopy.imageOffset ); + VULKAN_HPP_HASH_COMBINE( seed, memoryToImageCopy.imageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo const & copyMemoryToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageInfo.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageInfo.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageInfo.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyMemoryToImageInfo.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT const & copyMicromapInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyMicromapInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyMicromapInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyMicromapInfoEXT.src ); + VULKAN_HPP_HASH_COMBINE( seed, copyMicromapInfoEXT.dst ); + VULKAN_HPP_HASH_COMBINE( seed, copyMicromapInfoEXT.mode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorCopyARM const & tensorCopyARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tensorCopyARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCopyARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCopyARM.dimensionCount ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCopyARM.pSrcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCopyARM.pDstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCopyARM.pExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CopyTensorInfoARM const & copyTensorInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, copyTensorInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, copyTensorInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, copyTensorInfoARM.srcTensor ); + VULKAN_HPP_HASH_COMBINE( seed, copyTensorInfoARM.dstTensor ); + VULKAN_HPP_HASH_COMBINE( seed, copyTensorInfoARM.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, copyTensorInfoARM.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX const & cuFunctionCreateInfoNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cuFunctionCreateInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cuFunctionCreateInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cuFunctionCreateInfoNVX.module ); + for ( char const * p = cuFunctionCreateInfoNVX.pName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX const & cuLaunchInfoNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.function ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.gridDimX ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.gridDimY ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.gridDimZ ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.blockDimX ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.blockDimY ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.blockDimZ ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.sharedMemBytes ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.paramCount ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.pParams ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.extraCount ); + VULKAN_HPP_HASH_COMBINE( seed, cuLaunchInfoNVX.pExtras ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX const & cuModuleCreateInfoNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, cuModuleCreateInfoNVX.pData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CuModuleTexturingModeCreateInfoNVX const & cuModuleTexturingModeCreateInfoNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cuModuleTexturingModeCreateInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cuModuleTexturingModeCreateInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cuModuleTexturingModeCreateInfoNVX.use64bitTexturing ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV const & cudaFunctionCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cudaFunctionCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cudaFunctionCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cudaFunctionCreateInfoNV.module ); + for ( char const * p = cudaFunctionCreateInfoNV.pName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV const & cudaLaunchInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.function ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.gridDimX ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.gridDimY ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.gridDimZ ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.blockDimX ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.blockDimY ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.blockDimZ ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.sharedMemBytes ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.paramCount ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.pParams ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.extraCount ); + VULKAN_HPP_HASH_COMBINE( seed, cudaLaunchInfoNV.pExtras ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV const & cudaModuleCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, cudaModuleCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, cudaModuleCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, cudaModuleCreateInfoNV.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, cudaModuleCreateInfoNV.pData ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::CustomResolveCreateInfoEXT const & customResolveCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, customResolveCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, customResolveCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, customResolveCreateInfoEXT.customResolve ); + VULKAN_HPP_HASH_COMBINE( seed, customResolveCreateInfoEXT.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, customResolveCreateInfoEXT.pColorAttachmentFormats ); + VULKAN_HPP_HASH_COMBINE( seed, customResolveCreateInfoEXT.depthAttachmentFormat ); + VULKAN_HPP_HASH_COMBINE( seed, customResolveCreateInfoEXT.stencilAttachmentFormat ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR const & d3D12FenceSubmitInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.waitSemaphoreValuesCount ); + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.pWaitSemaphoreValues ); + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.signalSemaphoreValuesCount ); + VULKAN_HPP_HASH_COMBINE( seed, d3D12FenceSubmitInfoKHR.pSignalSemaphoreValues ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDataGraphOperationSupportARM const & physicalDeviceDataGraphOperationSupportARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphOperationSupportARM.operationType ); + for ( size_t i = 0; i < VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphOperationSupportARM.name[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphOperationSupportARM.version ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineBuiltinModelCreateInfoQCOM const & dataGraphPipelineBuiltinModelCreateInfoQCOM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineBuiltinModelCreateInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineBuiltinModelCreateInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineBuiltinModelCreateInfoQCOM.pOperation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineCompilerControlCreateInfoARM const & dataGraphPipelineCompilerControlCreateInfoARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineCompilerControlCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineCompilerControlCreateInfoARM.pNext ); + for ( char const * p = dataGraphPipelineCompilerControlCreateInfoARM.pVendorOptions; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineConstantARM const & dataGraphPipelineConstantARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineConstantARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineConstantARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineConstantARM.id ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineConstantARM.pConstantData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM const & + dataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.dimension ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.zeroCount ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.groupSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineResourceInfoARM const & dataGraphPipelineResourceInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineResourceInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineResourceInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineResourceInfoARM.descriptorSet ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineResourceInfoARM.binding ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineResourceInfoARM.arrayElement ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineCreateInfoARM const & dataGraphPipelineCreateInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineCreateInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineCreateInfoARM.flags ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineCreateInfoARM.layout ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineCreateInfoARM.resourceInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineCreateInfoARM.pResourceInfos ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineDispatchInfoARM const & dataGraphPipelineDispatchInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineDispatchInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineDispatchInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineDispatchInfoARM.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineIdentifierCreateInfoARM const & dataGraphPipelineIdentifierCreateInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineIdentifierCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineIdentifierCreateInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineIdentifierCreateInfoARM.identifierSize ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineIdentifierCreateInfoARM.pIdentifier ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineInfoARM const & dataGraphPipelineInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineInfoARM.dataGraphPipeline ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelinePropertyQueryResultARM const & dataGraphPipelinePropertyQueryResultARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelinePropertyQueryResultARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelinePropertyQueryResultARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelinePropertyQueryResultARM.property ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelinePropertyQueryResultARM.isText ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelinePropertyQueryResultARM.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelinePropertyQueryResultARM.pData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionBindPointRequirementARM const & dataGraphPipelineSessionBindPointRequirementARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionBindPointRequirementARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionBindPointRequirementARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionBindPointRequirementARM.bindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionBindPointRequirementARM.bindPointType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionBindPointRequirementARM.numObjects ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionBindPointRequirementsInfoARM const & + dataGraphPipelineSessionBindPointRequirementsInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionBindPointRequirementsInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionBindPointRequirementsInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionBindPointRequirementsInfoARM.session ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionCreateInfoARM const & dataGraphPipelineSessionCreateInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionCreateInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionCreateInfoARM.flags ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionCreateInfoARM.dataGraphPipeline ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionMemoryRequirementsInfoARM const & dataGraphPipelineSessionMemoryRequirementsInfoARM ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionMemoryRequirementsInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionMemoryRequirementsInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionMemoryRequirementsInfoARM.session ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionMemoryRequirementsInfoARM.bindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineSessionMemoryRequirementsInfoARM.objectIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DataGraphPipelineShaderModuleCreateInfoARM const & dataGraphPipelineShaderModuleCreateInfoARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineShaderModuleCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineShaderModuleCreateInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineShaderModuleCreateInfoARM.module ); + for ( char const * p = dataGraphPipelineShaderModuleCreateInfoARM.pName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineShaderModuleCreateInfoARM.pSpecializationInfo ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineShaderModuleCreateInfoARM.constantCount ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphPipelineShaderModuleCreateInfoARM.pConstants ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDataGraphProcessingEngineARM const & physicalDeviceDataGraphProcessingEngineARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphProcessingEngineARM.type ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphProcessingEngineARM.isForeign ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DataGraphProcessingEngineCreateInfoARM const & dataGraphProcessingEngineCreateInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dataGraphProcessingEngineCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphProcessingEngineCreateInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphProcessingEngineCreateInfoARM.processingEngineCount ); + VULKAN_HPP_HASH_COMBINE( seed, dataGraphProcessingEngineCreateInfoARM.pProcessingEngines ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT const & debugMarkerMarkerInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerMarkerInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerMarkerInfoEXT.pNext ); + for ( char const * p = debugMarkerMarkerInfoEXT.pMarkerName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + for ( size_t i = 0; i < 4; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerMarkerInfoEXT.color[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT const & debugMarkerObjectNameInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.objectType ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectNameInfoEXT.object ); + for ( char const * p = debugMarkerObjectNameInfoEXT.pObjectName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT const & debugMarkerObjectTagInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.objectType ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.object ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.tagName ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.tagSize ); + VULKAN_HPP_HASH_COMBINE( seed, debugMarkerObjectTagInfoEXT.pTag ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT const & debugReportCallbackCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.pfnCallback ); + VULKAN_HPP_HASH_COMBINE( seed, debugReportCallbackCreateInfoEXT.pUserData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT const & debugUtilsLabelEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsLabelEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsLabelEXT.pNext ); + for ( char const * p = debugUtilsLabelEXT.pLabelName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + for ( size_t i = 0; i < 4; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsLabelEXT.color[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT const & debugUtilsObjectNameInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.objectType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectNameInfoEXT.objectHandle ); + for ( char const * p = debugUtilsObjectNameInfoEXT.pObjectName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT const & debugUtilsMessengerCallbackDataEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.flags ); + for ( char const * p = debugUtilsMessengerCallbackDataEXT.pMessageIdName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.messageIdNumber ); + for ( char const * p = debugUtilsMessengerCallbackDataEXT.pMessage; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.queueLabelCount ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pQueueLabels ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.cmdBufLabelCount ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pCmdBufLabels ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.objectCount ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCallbackDataEXT.pObjects ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT const & debugUtilsMessengerCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.messageSeverity ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.messageType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.pfnUserCallback ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsMessengerCreateInfoEXT.pUserData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT const & debugUtilsObjectTagInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.objectType ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.objectHandle ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.tagName ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.tagSize ); + VULKAN_HPP_HASH_COMBINE( seed, debugUtilsObjectTagInfoEXT.pTag ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DecompressMemoryRegionEXT const & decompressMemoryRegionEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionEXT.srcAddress ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionEXT.dstAddress ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionEXT.compressedSize ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionEXT.decompressedSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DecompressMemoryInfoEXT const & decompressMemoryInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryInfoEXT.decompressionMethod ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryInfoEXT.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryInfoEXT.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV const & decompressMemoryRegionNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionNV.srcAddress ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionNV.dstAddress ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionNV.compressedSize ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionNV.decompressedSize ); + VULKAN_HPP_HASH_COMBINE( seed, decompressMemoryRegionNV.decompressionMethod ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV const & dedicatedAllocationBufferCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationBufferCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationBufferCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationBufferCreateInfoNV.dedicatedAllocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV const & dedicatedAllocationImageCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationImageCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationImageCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationImageCreateInfoNV.dedicatedAllocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV const & dedicatedAllocationMemoryAllocateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.image ); + VULKAN_HPP_HASH_COMBINE( seed, dedicatedAllocationMemoryAllocateInfoNV.buffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryBarrier2 const & memoryBarrier2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier2.dstAccessMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & imageSubresourceRange ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.aspectMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.baseMipLevel ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.levelCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.baseArrayLayer ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresourceRange.layerCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 const & imageMemoryBarrier2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.oldLayout ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.newLayout ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.srcQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.dstQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.image ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier2.subresourceRange ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DependencyInfo const & dependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.dependencyFlags ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.memoryBarrierCount ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pMemoryBarriers ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.bufferMemoryBarrierCount ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pBufferMemoryBarriers ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.imageMemoryBarrierCount ); + VULKAN_HPP_HASH_COMBINE( seed, dependencyInfo.pImageMemoryBarriers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT const & depthBiasInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, depthBiasInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, depthBiasInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, depthBiasInfoEXT.depthBiasConstantFactor ); + VULKAN_HPP_HASH_COMBINE( seed, depthBiasInfoEXT.depthBiasClamp ); + VULKAN_HPP_HASH_COMBINE( seed, depthBiasInfoEXT.depthBiasSlopeFactor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT const & depthBiasRepresentationInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, depthBiasRepresentationInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, depthBiasRepresentationInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, depthBiasRepresentationInfoEXT.depthBiasRepresentation ); + VULKAN_HPP_HASH_COMBINE( seed, depthBiasRepresentationInfoEXT.depthBiasExact ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DepthClampRangeEXT const & depthClampRangeEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, depthClampRangeEXT.minDepthClamp ); + VULKAN_HPP_HASH_COMBINE( seed, depthClampRangeEXT.maxDepthClamp ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT const & descriptorAddressInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorAddressInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorAddressInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorAddressInfoEXT.address ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorAddressInfoEXT.range ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorAddressInfoEXT.format ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT const & descriptorBufferBindingInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingInfoEXT.address ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingInfoEXT.usage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT const & + descriptorBufferBindingPushDescriptorBufferHandleEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingPushDescriptorBufferHandleEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingPushDescriptorBufferHandleEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferBindingPushDescriptorBufferHandleEXT.buffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorBufferInfo const & descriptorBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferInfo.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferInfo.offset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorBufferInfo.range ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorImageInfo const & descriptorImageInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorImageInfo.sampler ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorImageInfo.imageView ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorImageInfo.imageLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorGetTensorInfoARM const & descriptorGetTensorInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorGetTensorInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorGetTensorInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorGetTensorInfoARM.tensorView ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerCreateInfo const & samplerCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.magFilter ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.minFilter ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.mipmapMode ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.addressModeU ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.addressModeV ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.addressModeW ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.mipLodBias ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.anisotropyEnable ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.maxAnisotropy ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.compareEnable ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.compareOp ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.minLod ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.maxLod ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.borderColor ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCreateInfo.unnormalizedCoordinates ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceConstantOffsetEXT const & descriptorMappingSourceConstantOffsetEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceConstantOffsetEXT.heapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceConstantOffsetEXT.heapArrayStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceConstantOffsetEXT.pEmbeddedSampler ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceConstantOffsetEXT.samplerHeapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceConstantOffsetEXT.samplerHeapArrayStride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorMappingSourcePushIndexEXT const & descriptorMappingSourcePushIndexEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourcePushIndexEXT.heapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourcePushIndexEXT.pushOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourcePushIndexEXT.heapIndexStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourcePushIndexEXT.heapArrayStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourcePushIndexEXT.pEmbeddedSampler ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourcePushIndexEXT.useCombinedImageSamplerIndex ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourcePushIndexEXT.samplerHeapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourcePushIndexEXT.samplerPushOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourcePushIndexEXT.samplerHeapIndexStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourcePushIndexEXT.samplerHeapArrayStride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceIndirectIndexEXT const & descriptorMappingSourceIndirectIndexEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.heapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.pushOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.addressOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.heapIndexStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.heapArrayStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.pEmbeddedSampler ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.useCombinedImageSamplerIndex ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.samplerHeapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.samplerPushOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.samplerAddressOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.samplerHeapIndexStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexEXT.samplerHeapArrayStride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceIndirectIndexArrayEXT const & descriptorMappingSourceIndirectIndexArrayEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexArrayEXT.heapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexArrayEXT.pushOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexArrayEXT.addressOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexArrayEXT.heapIndexStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexArrayEXT.pEmbeddedSampler ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexArrayEXT.useCombinedImageSamplerIndex ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexArrayEXT.samplerHeapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexArrayEXT.samplerPushOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexArrayEXT.samplerAddressOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectIndexArrayEXT.samplerHeapIndexStride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceHeapDataEXT const & descriptorMappingSourceHeapDataEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceHeapDataEXT.heapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceHeapDataEXT.pushOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceIndirectAddressEXT const & descriptorMappingSourceIndirectAddressEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectAddressEXT.pushOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceIndirectAddressEXT.addressOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceShaderRecordIndexEXT const & descriptorMappingSourceShaderRecordIndexEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceShaderRecordIndexEXT.heapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceShaderRecordIndexEXT.shaderRecordOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceShaderRecordIndexEXT.heapIndexStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceShaderRecordIndexEXT.heapArrayStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceShaderRecordIndexEXT.pEmbeddedSampler ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceShaderRecordIndexEXT.useCombinedImageSamplerIndex ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceShaderRecordIndexEXT.samplerHeapOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceShaderRecordIndexEXT.samplerShaderRecordOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceShaderRecordIndexEXT.samplerHeapIndexStride ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorMappingSourceShaderRecordIndexEXT.samplerHeapArrayStride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorPoolSize const & descriptorPoolSize ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolSize.type ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolSize.descriptorCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo const & descriptorPoolCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.maxSets ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.poolSizeCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolCreateInfo.pPoolSizes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo const & descriptorPoolInlineUniformBlockCreateInfo ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolInlineUniformBlockCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolInlineUniformBlockCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorPoolInlineUniformBlockCreateInfo.maxInlineUniformBlockBindings ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo const & descriptorSetAllocateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.descriptorPool ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.descriptorSetCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetAllocateInfo.pSetLayouts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE const & descriptorSetBindingReferenceVALVE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetBindingReferenceVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetBindingReferenceVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetBindingReferenceVALVE.descriptorSetLayout ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetBindingReferenceVALVE.binding ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding const & descriptorSetLayoutBinding ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.binding ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.descriptorType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.descriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.stageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBinding.pImmutableSamplers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo const & descriptorSetLayoutBindingFlagsCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.bindingCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutBindingFlagsCreateInfo.pBindingFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo const & descriptorSetLayoutCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.bindingCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutCreateInfo.pBindings ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE const & descriptorSetLayoutHostMappingInfoVALVE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutHostMappingInfoVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutHostMappingInfoVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutHostMappingInfoVALVE.descriptorOffset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutHostMappingInfoVALVE.descriptorSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport const & descriptorSetLayoutSupport ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutSupport.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutSupport.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetLayoutSupport.supported ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo const & descriptorSetVariableDescriptorCountAllocateInfo ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.descriptorSetCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountAllocateInfo.pDescriptorCounts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport const & descriptorSetVariableDescriptorCountLayoutSupport ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountLayoutSupport.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountLayoutSupport.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorSetVariableDescriptorCountLayoutSupport.maxVariableDescriptorCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry const & descriptorUpdateTemplateEntry ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.dstBinding ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.dstArrayElement ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.descriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.descriptorType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.offset ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateEntry.stride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo const & descriptorUpdateTemplateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.descriptorUpdateEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pDescriptorUpdateEntries ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.templateType ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.descriptorSetLayout ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.pipelineLayout ); + VULKAN_HPP_HASH_COMBINE( seed, descriptorUpdateTemplateCreateInfo.set ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT const & deviceAddressBindingCallbackDataEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.baseAddress ); + VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.size ); + VULKAN_HPP_HASH_COMBINE( seed, deviceAddressBindingCallbackDataEXT.bindingType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements const & deviceBufferMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceBufferMemoryRequirements.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceBufferMemoryRequirements.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceBufferMemoryRequirements.pCreateInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo const & deviceQueueCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.queueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.queueCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueCreateInfo.pQueuePriorities ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const & physicalDeviceFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.robustBufferAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.fullDrawIndexUint32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.imageCubeArray ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.independentBlend ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.geometryShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.tessellationShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sampleRateShading ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.dualSrcBlend ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.logicOp ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.multiDrawIndirect ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.drawIndirectFirstInstance ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.depthClamp ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.depthBiasClamp ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.fillModeNonSolid ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.depthBounds ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.wideLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.largePoints ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.alphaToOne ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.multiViewport ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.samplerAnisotropy ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.textureCompressionETC2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.textureCompressionASTC_LDR ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.textureCompressionBC ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.occlusionQueryPrecise ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.pipelineStatisticsQuery ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.vertexPipelineStoresAndAtomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.fragmentStoresAndAtomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderTessellationAndGeometryPointSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderImageGatherExtended ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageExtendedFormats ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageMultisample ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageReadWithoutFormat ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageWriteWithoutFormat ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderUniformBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderSampledImageArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderStorageImageArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderClipDistance ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderCullDistance ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderInt64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderInt16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderResourceResidency ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.shaderResourceMinLod ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseBinding ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyImage2D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyImage3D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency2Samples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency4Samples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency8Samples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidency16Samples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.sparseResidencyAliased ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.variableMultisampleRate ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures.inheritedQueries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceCreateInfo const & deviceCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.queueCreateInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.pQueueCreateInfos ); + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.enabledExtensionCount ); + for ( size_t i = 0; i < deviceCreateInfo.enabledExtensionCount; ++i ) + { + for ( char const * p = deviceCreateInfo.ppEnabledExtensionNames[i]; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + } + VULKAN_HPP_HASH_COMBINE( seed, deviceCreateInfo.pEnabledFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT const & deviceDeviceMemoryReportCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.pfnUserCallback ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDeviceMemoryReportCreateInfoEXT.pUserData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV const & deviceDiagnosticsConfigCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceDiagnosticsConfigCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDiagnosticsConfigCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceDiagnosticsConfigCreateInfoNV.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT const & deviceEventInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceEventInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceEventInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceEventInfoEXT.deviceEvent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoKHR const & deviceFaultAddressInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultAddressInfoKHR.addressType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultAddressInfoKHR.reportedAddress ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultAddressInfoKHR.addressPrecision ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT const & deviceFaultCountsEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultCountsEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultCountsEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultCountsEXT.addressInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultCountsEXT.vendorInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultCountsEXT.vendorBinarySize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceFaultDebugInfoKHR const & deviceFaultDebugInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultDebugInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultDebugInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultDebugInfoKHR.vendorBinarySize ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultDebugInfoKHR.pVendorBinaryData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoKHR const & deviceFaultVendorInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorInfoKHR.description[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorInfoKHR.vendorFaultCode ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorInfoKHR.vendorFaultData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT const & deviceFaultInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.pNext ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.description[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.pAddressInfos ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.pVendorInfos ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoEXT.pVendorBinaryData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceFaultInfoKHR const & deviceFaultInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoKHR.groupId ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoKHR.description[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoKHR.faultAddressInfo ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoKHR.instructionAddressInfo ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultInfoKHR.vendorInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceFaultShaderAbortMessageInfoKHR const & deviceFaultShaderAbortMessageInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultShaderAbortMessageInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultShaderAbortMessageInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultShaderAbortMessageInfoKHR.messageDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultShaderAbortMessageInfoKHR.pMessageData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneKHR const & deviceFaultVendorBinaryHeaderVersionOneKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.headerSize ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.headerVersion ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.vendorID ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.deviceID ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.driverVersion ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.pipelineCacheUUID[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.applicationNameOffset ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.applicationVersion ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.engineNameOffset ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.engineVersion ); + VULKAN_HPP_HASH_COMBINE( seed, deviceFaultVendorBinaryHeaderVersionOneKHR.apiVersion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo const & deviceGroupBindSparseInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.resourceDeviceIndex ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupBindSparseInfo.memoryDeviceIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo const & deviceGroupCommandBufferBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupCommandBufferBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupCommandBufferBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupCommandBufferBeginInfo.deviceMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo const & deviceGroupDeviceCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.physicalDeviceCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupDeviceCreateInfo.pPhysicalDevices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR const & deviceGroupPresentCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.pNext ); + for ( size_t i = 0; i < VK_MAX_DEVICE_GROUP_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.presentMask[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentCapabilitiesKHR.modes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR const & deviceGroupPresentInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.pDeviceMasks ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupPresentInfoKHR.mode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo const & deviceGroupRenderPassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.deviceMask ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.deviceRenderAreaCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupRenderPassBeginInfo.pDeviceRenderAreas ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo const & deviceGroupSubmitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.waitSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pWaitSemaphoreDeviceIndices ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.commandBufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pCommandBufferDeviceMasks ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.signalSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSubmitInfo.pSignalSemaphoreDeviceIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR const & deviceGroupSwapchainCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSwapchainCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSwapchainCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceGroupSwapchainCreateInfoKHR.modes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageCreateInfo const & imageCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.imageType ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.format ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.extent ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.mipLevels ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.arrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.samples ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.tiling ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.usage ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.sharingMode ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.queueFamilyIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.pQueueFamilyIndices ); + VULKAN_HPP_HASH_COMBINE( seed, imageCreateInfo.initialLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements const & deviceImageMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.pCreateInfo ); + VULKAN_HPP_HASH_COMBINE( seed, deviceImageMemoryRequirements.planeAspect ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageSubresource2 const & imageSubresource2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSubresource2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresource2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageSubresource2.imageSubresource ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo const & deviceImageSubresourceInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceImageSubresourceInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceImageSubresourceInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceImageSubresourceInfo.pCreateInfo ); + VULKAN_HPP_HASH_COMBINE( seed, deviceImageSubresourceInfo.pSubresource ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo const & deviceMemoryOpaqueCaptureAddressInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOpaqueCaptureAddressInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOpaqueCaptureAddressInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOpaqueCaptureAddressInfo.memory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD const & deviceMemoryOverallocationCreateInfoAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOverallocationCreateInfoAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOverallocationCreateInfoAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryOverallocationCreateInfoAMD.overallocationBehavior ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT const & deviceMemoryReportCallbackDataEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.type ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.memoryObjectId ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.size ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.objectType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.objectHandle ); + VULKAN_HPP_HASH_COMBINE( seed, deviceMemoryReportCallbackDataEXT.heapIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR const & devicePipelineBinaryInternalCacheControlKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, devicePipelineBinaryInternalCacheControlKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, devicePipelineBinaryInternalCacheControlKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, devicePipelineBinaryInternalCacheControlKHR.disableInternalCache ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo const & devicePrivateDataCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, devicePrivateDataCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, devicePrivateDataCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, devicePrivateDataCreateInfo.privateDataSlotRequestCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo const & deviceQueueGlobalPriorityCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueGlobalPriorityCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueGlobalPriorityCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueGlobalPriorityCreateInfo.globalPriority ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 const & deviceQueueInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.flags ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.queueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueInfo2.queueIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM const & deviceQueueShaderCoreControlCreateInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueShaderCoreControlCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueShaderCoreControlCreateInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceQueueShaderCoreControlCreateInfoARM.shaderCoreCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorDescriptionARM const & tensorDescriptionARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tensorDescriptionARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tensorDescriptionARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tensorDescriptionARM.tiling ); + VULKAN_HPP_HASH_COMBINE( seed, tensorDescriptionARM.format ); + VULKAN_HPP_HASH_COMBINE( seed, tensorDescriptionARM.dimensionCount ); + VULKAN_HPP_HASH_COMBINE( seed, tensorDescriptionARM.pDimensions ); + VULKAN_HPP_HASH_COMBINE( seed, tensorDescriptionARM.pStrides ); + VULKAN_HPP_HASH_COMBINE( seed, tensorDescriptionARM.usage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorCreateInfoARM const & tensorCreateInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tensorCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCreateInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCreateInfoARM.flags ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCreateInfoARM.pDescription ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCreateInfoARM.sharingMode ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCreateInfoARM.queueFamilyIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCreateInfoARM.pQueueFamilyIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DeviceTensorMemoryRequirementsARM const & deviceTensorMemoryRequirementsARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, deviceTensorMemoryRequirementsARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, deviceTensorMemoryRequirementsARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, deviceTensorMemoryRequirementsARM.pCreateInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG const & directDriverLoadingInfoLUNARG ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingInfoLUNARG.sType ); + VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingInfoLUNARG.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingInfoLUNARG.flags ); + VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingInfoLUNARG.pfnGetInstanceProcAddr ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG const & directDriverLoadingListLUNARG ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingListLUNARG.sType ); + VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingListLUNARG.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingListLUNARG.mode ); + VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingListLUNARG.driverCount ); + VULKAN_HPP_HASH_COMBINE( seed, directDriverLoadingListLUNARG.pDrivers ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT const & directFBSurfaceCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.dfb ); + VULKAN_HPP_HASH_COMBINE( seed, directFBSurfaceCreateInfoEXT.surface ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DispatchIndirect2InfoKHR const & dispatchIndirect2InfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirect2InfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirect2InfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirect2InfoKHR.addressRange ); + VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirect2InfoKHR.addressFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DispatchIndirectCommand const & dispatchIndirectCommand ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirectCommand.x ); + VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirectCommand.y ); + VULKAN_HPP_HASH_COMBINE( seed, dispatchIndirectCommand.z ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DispatchTileInfoQCOM const & dispatchTileInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, dispatchTileInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, dispatchTileInfoQCOM.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT const & displayEventInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayEventInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayEventInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayEventInfoEXT.displayEvent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const & displayModeParametersKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayModeParametersKHR.visibleRegion ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeParametersKHR.refreshRate ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR const & displayModeCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeCreateInfoKHR.parameters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR const & displayModePropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayModePropertiesKHR.displayMode ); + VULKAN_HPP_HASH_COMBINE( seed, displayModePropertiesKHR.parameters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR const & displayModeProperties2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayModeProperties2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeProperties2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeProperties2KHR.displayModeProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayModeStereoPropertiesNV const & displayModeStereoPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayModeStereoPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeStereoPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayModeStereoPropertiesNV.hdmi3DSupported ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD const & displayNativeHdrSurfaceCapabilitiesAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayNativeHdrSurfaceCapabilitiesAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayNativeHdrSurfaceCapabilitiesAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayNativeHdrSurfaceCapabilitiesAMD.localDimmingSupport ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR const & displayPlaneCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.supportedAlpha ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minSrcPosition ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxSrcPosition ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minSrcExtent ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxSrcExtent ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minDstPosition ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxDstPosition ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.minDstExtent ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilitiesKHR.maxDstExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR const & displayPlaneCapabilities2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilities2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilities2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneCapabilities2KHR.capabilities ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR const & displayPlaneInfo2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.mode ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneInfo2KHR.planeIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR const & displayPlanePropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPlanePropertiesKHR.currentDisplay ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlanePropertiesKHR.currentStackIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR const & displayPlaneProperties2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneProperties2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneProperties2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayPlaneProperties2KHR.displayPlaneProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT const & displayPowerInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPowerInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayPowerInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayPowerInfoEXT.powerState ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR const & displayPresentInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.srcRect ); + VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.dstRect ); + VULKAN_HPP_HASH_COMBINE( seed, displayPresentInfoKHR.persistent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR const & displayPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.display ); + for ( char const * p = displayPropertiesKHR.displayName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.physicalDimensions ); + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.physicalResolution ); + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.supportedTransforms ); + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.planeReorderPossible ); + VULKAN_HPP_HASH_COMBINE( seed, displayPropertiesKHR.persistentContent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplayProperties2KHR const & displayProperties2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displayProperties2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displayProperties2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displayProperties2KHR.displayProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR const & displaySurfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.displayMode ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.planeIndex ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.planeStackIndex ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.transform ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.globalAlpha ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.alphaMode ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceCreateInfoKHR.imageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DisplaySurfaceStereoCreateInfoNV const & displaySurfaceStereoCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceStereoCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceStereoCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, displaySurfaceStereoCreateInfoNV.stereoType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand const & drawIndexedIndirectCommand ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.indexCount ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.instanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.firstIndex ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.vertexOffset ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndexedIndirectCommand.firstInstance ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrawIndirect2InfoKHR const & drawIndirect2InfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawIndirect2InfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirect2InfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirect2InfoKHR.addressRange ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirect2InfoKHR.addressFlags ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirect2InfoKHR.drawCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrawIndirectCommand const & drawIndirectCommand ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.vertexCount ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.instanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.firstVertex ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCommand.firstInstance ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrawIndirectCount2InfoKHR const & drawIndirectCount2InfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCount2InfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCount2InfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCount2InfoKHR.addressRange ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCount2InfoKHR.addressFlags ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCount2InfoKHR.countAddressRange ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCount2InfoKHR.countAddressFlags ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCount2InfoKHR.maxDrawCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrawIndirectCountIndirectCommandEXT const & drawIndirectCountIndirectCommandEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCountIndirectCommandEXT.bufferAddress ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCountIndirectCommandEXT.stride ); + VULKAN_HPP_HASH_COMBINE( seed, drawIndirectCountIndirectCommandEXT.commandCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT const & drawMeshTasksIndirectCommandEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandEXT.groupCountX ); + VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandEXT.groupCountY ); + VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandEXT.groupCountZ ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV const & drawMeshTasksIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandNV.taskCount ); + VULKAN_HPP_HASH_COMBINE( seed, drawMeshTasksIndirectCommandNV.firstTask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT const & drmFormatModifierProperties2EXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierProperties2EXT.drmFormatModifier ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierProperties2EXT.drmFormatModifierPlaneCount ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierProperties2EXT.drmFormatModifierTilingFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT const & drmFormatModifierPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesEXT.drmFormatModifier ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesEXT.drmFormatModifierPlaneCount ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesEXT.drmFormatModifierTilingFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT const & drmFormatModifierPropertiesList2EXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.drmFormatModifierCount ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesList2EXT.pDrmFormatModifierProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT const & drmFormatModifierPropertiesListEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.drmFormatModifierCount ); + VULKAN_HPP_HASH_COMBINE( seed, drmFormatModifierPropertiesListEXT.pDrmFormatModifierProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::EventCreateInfo const & eventCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, eventCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, eventCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, eventCreateInfo.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR const & pipelineLibraryCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.libraryCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLibraryCreateInfoKHR.pLibraries ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX const & executionGraphPipelineCreateInfoAMDX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineCreateInfoAMDX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineCreateInfoAMDX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineCreateInfoAMDX.flags ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineCreateInfoAMDX.stageCount ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineCreateInfoAMDX.pStages ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineCreateInfoAMDX.pLibraryInfo ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineCreateInfoAMDX.layout ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineCreateInfoAMDX.basePipelineHandle ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineCreateInfoAMDX.basePipelineIndex ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX const & executionGraphPipelineScratchSizeAMDX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineScratchSizeAMDX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineScratchSizeAMDX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineScratchSizeAMDX.minSize ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineScratchSizeAMDX.maxSize ); + VULKAN_HPP_HASH_COMBINE( seed, executionGraphPipelineScratchSizeAMDX.sizeGranularity ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo const & exportFenceCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportFenceCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceCreateInfo.handleTypes ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR const & exportFenceWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.pAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.dwAccess ); + VULKAN_HPP_HASH_COMBINE( seed, exportFenceWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo const & exportMemoryAllocateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfo.handleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV const & exportMemoryAllocateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryAllocateInfoNV.handleTypes ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR const & exportMemoryWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.pAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.dwAccess ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV const & exportMemoryWin32HandleInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.pAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, exportMemoryWin32HandleInfoNV.dwAccess ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT const & exportMetalBufferInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMetalBufferInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalBufferInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalBufferInfoEXT.memory ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalBufferInfoEXT.mtlBuffer ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT const & exportMetalCommandQueueInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMetalCommandQueueInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalCommandQueueInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalCommandQueueInfoEXT.queue ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalCommandQueueInfoEXT.mtlCommandQueue ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT const & exportMetalDeviceInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMetalDeviceInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalDeviceInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalDeviceInfoEXT.mtlDevice ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT const & exportMetalIOSurfaceInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMetalIOSurfaceInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalIOSurfaceInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalIOSurfaceInfoEXT.image ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalIOSurfaceInfoEXT.ioSurface ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT const & exportMetalObjectCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMetalObjectCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalObjectCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalObjectCreateInfoEXT.exportObjectType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT const & exportMetalObjectsInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMetalObjectsInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalObjectsInfoEXT.pNext ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT const & exportMetalSharedEventInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMetalSharedEventInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalSharedEventInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalSharedEventInfoEXT.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalSharedEventInfoEXT.event ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalSharedEventInfoEXT.mtlSharedEvent ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT const & exportMetalTextureInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.image ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.imageView ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.bufferView ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.plane ); + VULKAN_HPP_HASH_COMBINE( seed, exportMetalTextureInfoEXT.mtlTexture ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo const & exportSemaphoreCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreCreateInfo.handleTypes ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR const & exportSemaphoreWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.pAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.dwAccess ); + VULKAN_HPP_HASH_COMBINE( seed, exportSemaphoreWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExtensionProperties const & extensionProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, extensionProperties.extensionName[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, extensionProperties.specVersion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalMemoryProperties const & externalMemoryProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryProperties.externalMemoryFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryProperties.exportFromImportedHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryProperties.compatibleHandleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalBufferProperties const & externalBufferProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalBufferProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalBufferProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalBufferProperties.externalMemoryProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalComputeQueueCreateInfoNV const & externalComputeQueueCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueCreateInfoNV.preferredQueue ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalComputeQueueDataParamsNV const & externalComputeQueueDataParamsNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDataParamsNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDataParamsNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDataParamsNV.deviceIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ExternalComputeQueueDeviceCreateInfoNV const & externalComputeQueueDeviceCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDeviceCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDeviceCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalComputeQueueDeviceCreateInfoNV.reservedExternalQueues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalFenceProperties const & externalFenceProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.exportFromImportedHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.compatibleHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalFenceProperties.externalFenceFeatures ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalFormatANDROID const & externalFormatANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalFormatANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalFormatANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalFormatANDROID.externalFormat ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_OHOS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalFormatOHOS const & externalFormatOHOS ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalFormatOHOS.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalFormatOHOS.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalFormatOHOS.externalFormat ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_OHOS*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalFormatQNX const & externalFormatQNX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalFormatQNX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalFormatQNX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalFormatQNX.externalFormat ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties const & externalImageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatProperties.externalMemoryProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageFormatProperties const & imageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxExtent ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxMipLevels ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.sampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties.maxResourceSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV const & externalImageFormatPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.imageFormatProperties ); + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.externalMemoryFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.exportFromImportedHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalImageFormatPropertiesNV.compatibleHandleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT const & externalMemoryAcquireUnmodifiedEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryAcquireUnmodifiedEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryAcquireUnmodifiedEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryAcquireUnmodifiedEXT.acquireUnmodifiedMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo const & externalMemoryBufferCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryBufferCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryBufferCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryBufferCreateInfo.handleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo const & externalMemoryImageCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfo.handleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV const & externalMemoryImageCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryImageCreateInfoNV.handleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalMemoryTensorCreateInfoARM const & externalMemoryTensorCreateInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryTensorCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryTensorCreateInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalMemoryTensorCreateInfoARM.handleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties const & externalSemaphoreProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.exportFromImportedHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.compatibleHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, externalSemaphoreProperties.externalSemaphoreFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ExternalTensorPropertiesARM const & externalTensorPropertiesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, externalTensorPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, externalTensorPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, externalTensorPropertiesARM.externalMemoryProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FenceCreateInfo const & fenceCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, fenceCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, fenceCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, fenceCreateInfo.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR const & fenceGetFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.fence ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetFdInfoKHR.handleType ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR const & fenceGetWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.fence ); + VULKAN_HPP_HASH_COMBINE( seed, fenceGetWin32HandleInfoKHR.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT const & filterCubicImageViewImageFormatPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.filterCubic ); + VULKAN_HPP_HASH_COMBINE( seed, filterCubicImageViewImageFormatPropertiesEXT.filterCubicMinmax ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FormatProperties const & formatProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, formatProperties.linearTilingFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties.optimalTilingFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties.bufferFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FormatProperties2 const & formatProperties2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, formatProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties2.formatProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FormatProperties3 const & formatProperties3 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.sType ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.linearTilingFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.optimalTilingFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, formatProperties3.bufferFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR const & fragmentShadingRateAttachmentInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.pFragmentShadingRateAttachment ); + VULKAN_HPP_HASH_COMBINE( seed, fragmentShadingRateAttachmentInfoKHR.shadingRateAttachmentTexelSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FrameBoundaryEXT const & frameBoundaryEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.frameID ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.imageCount ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.pImages ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.bufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.pBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.tagName ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.tagSize ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryEXT.pTag ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FrameBoundaryTensorsARM const & frameBoundaryTensorsARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryTensorsARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryTensorsARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryTensorsARM.tensorCount ); + VULKAN_HPP_HASH_COMBINE( seed, frameBoundaryTensorsARM.pTensors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo const & framebufferAttachmentImageInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.usage ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.width ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.height ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.layerCount ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.viewFormatCount ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentImageInfo.pViewFormats ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo const & framebufferAttachmentsCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.attachmentImageInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferAttachmentsCreateInfo.pAttachmentImageInfos ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FramebufferCreateInfo const & framebufferCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.renderPass ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.pAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.width ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.height ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferCreateInfo.layers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV const & framebufferMixedSamplesCombinationNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.coverageReductionMode ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.rasterizationSamples ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.depthStencilSamples ); + VULKAN_HPP_HASH_COMBINE( seed, framebufferMixedSamplesCombinationNV.colorSamples ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT const & generatedCommandsInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.shaderStages ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.indirectExecutionSet ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.indirectCommandsLayout ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.indirectAddress ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.indirectAddressSize ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.preprocessAddress ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.preprocessSize ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.maxSequenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.sequenceCountAddress ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoEXT.maxDrawCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV const & indirectCommandsStreamNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsStreamNV.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsStreamNV.offset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV const & generatedCommandsInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pipeline ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.indirectCommandsLayout ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.streamCount ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.pStreams ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesCount ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.preprocessBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.preprocessOffset ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.preprocessSize ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesCountBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesCountOffset ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesIndexBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsInfoNV.sequencesIndexOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT const & generatedCommandsMemoryRequirementsInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.indirectExecutionSet ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.indirectCommandsLayout ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.maxSequenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoEXT.maxDrawCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV const & generatedCommandsMemoryRequirementsInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.pipeline ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.indirectCommandsLayout ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsMemoryRequirementsInfoNV.maxSequencesCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsPipelineInfoEXT const & generatedCommandsPipelineInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsPipelineInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsPipelineInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsPipelineInfoEXT.pipeline ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GeneratedCommandsShaderInfoEXT const & generatedCommandsShaderInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsShaderInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsShaderInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsShaderInfoEXT.shaderCount ); + VULKAN_HPP_HASH_COMBINE( seed, generatedCommandsShaderInfoEXT.pShaders ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV const & latencyTimingsFrameReportNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.presentID ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.inputSampleTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.simStartTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.simEndTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.renderSubmitStartTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.renderSubmitEndTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.presentStartTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.presentEndTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.driverStartTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.driverEndTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.osRenderQueueStartTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.osRenderQueueEndTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.gpuRenderStartTimeUs ); + VULKAN_HPP_HASH_COMBINE( seed, latencyTimingsFrameReportNV.gpuRenderEndTimeUs ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV const & getLatencyMarkerInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, getLatencyMarkerInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, getLatencyMarkerInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, getLatencyMarkerInfoNV.timingCount ); + VULKAN_HPP_HASH_COMBINE( seed, getLatencyMarkerInfoNV.pTimings ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VertexInputBindingDescription const & vertexInputBindingDescription ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription.binding ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription.stride ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription.inputRate ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription const & vertexInputAttributeDescription ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.location ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.binding ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.format ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription.offset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo const & pipelineVertexInputStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.vertexBindingDescriptionCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.pVertexBindingDescriptions ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.vertexAttributeDescriptionCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputStateCreateInfo.pVertexAttributeDescriptions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo const & pipelineInputAssemblyStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.topology ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInputAssemblyStateCreateInfo.primitiveRestartEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo const & pipelineTessellationStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationStateCreateInfo.patchControlPoints ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo const & pipelineViewportStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.viewportCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.pViewports ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.scissorCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportStateCreateInfo.pScissors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo const & pipelineRasterizationStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthClampEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.rasterizerDiscardEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.polygonMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.cullMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.frontFace ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasConstantFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasClamp ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.depthBiasSlopeFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateCreateInfo.lineWidth ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo const & pipelineMultisampleStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.rasterizationSamples ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.sampleShadingEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.minSampleShading ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.pSampleMask ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.alphaToCoverageEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineMultisampleStateCreateInfo.alphaToOneEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::StencilOpState const & stencilOpState ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.failOp ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.passOp ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.depthFailOp ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.compareOp ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.compareMask ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.writeMask ); + VULKAN_HPP_HASH_COMBINE( seed, stencilOpState.reference ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo const & pipelineDepthStencilStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthTestEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthWriteEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthCompareOp ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.depthBoundsTestEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.stencilTestEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.front ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.back ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.minDepthBounds ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDepthStencilStateCreateInfo.maxDepthBounds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState const & pipelineColorBlendAttachmentState ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.blendEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.srcColorBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.dstColorBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.colorBlendOp ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.srcAlphaBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.dstAlphaBlendFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.alphaBlendOp ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAttachmentState.colorWriteMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo const & pipelineColorBlendStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.logicOpEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.logicOp ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.pAttachments ); + for ( size_t i = 0; i < 4; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendStateCreateInfo.blendConstants[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo const & pipelineDynamicStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.dynamicStateCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDynamicStateCreateInfo.pDynamicStates ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo const & graphicsPipelineCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.stageCount ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pStages ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pVertexInputState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pInputAssemblyState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pTessellationState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pViewportState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pRasterizationState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pMultisampleState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pDepthStencilState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pColorBlendState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.pDynamicState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.layout ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.renderPass ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.subpass ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.basePipelineHandle ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineCreateInfo.basePipelineIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT const & graphicsPipelineLibraryCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineLibraryCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineLibraryCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineLibraryCreateInfoEXT.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV const & graphicsShaderGroupCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.stageCount ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pStages ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pVertexInputState ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsShaderGroupCreateInfoNV.pTessellationState ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV const & graphicsPipelineShaderGroupsCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.groupCount ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pGroups ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pipelineCount ); + VULKAN_HPP_HASH_COMBINE( seed, graphicsPipelineShaderGroupsCreateInfoNV.pPipelines ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::XYColorEXT const & xYColorEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, xYColorEXT.x ); + VULKAN_HPP_HASH_COMBINE( seed, xYColorEXT.y ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::HdrMetadataEXT const & hdrMetadataEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.displayPrimaryRed ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.displayPrimaryGreen ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.displayPrimaryBlue ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.whitePoint ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.maxLuminance ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.minLuminance ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.maxContentLightLevel ); + VULKAN_HPP_HASH_COMBINE( seed, hdrMetadataEXT.maxFrameAverageLightLevel ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::HdrVividDynamicMetadataHUAWEI const & hdrVividDynamicMetadataHUAWEI ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, hdrVividDynamicMetadataHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, hdrVividDynamicMetadataHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, hdrVividDynamicMetadataHUAWEI.dynamicMetadataSize ); + VULKAN_HPP_HASH_COMBINE( seed, hdrVividDynamicMetadataHUAWEI.pDynamicMetadata ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT const & headlessSurfaceCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, headlessSurfaceCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, headlessSurfaceCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, headlessSurfaceCreateInfoEXT.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::HostAddressRangeConstEXT const & hostAddressRangeConstEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, hostAddressRangeConstEXT.address ); + VULKAN_HPP_HASH_COMBINE( seed, hostAddressRangeConstEXT.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::HostAddressRangeEXT const & hostAddressRangeEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, hostAddressRangeEXT.address ); + VULKAN_HPP_HASH_COMBINE( seed, hostAddressRangeEXT.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery const & hostImageCopyDevicePerformanceQuery ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, hostImageCopyDevicePerformanceQuery.sType ); + VULKAN_HPP_HASH_COMBINE( seed, hostImageCopyDevicePerformanceQuery.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, hostImageCopyDevicePerformanceQuery.optimalDeviceAccess ); + VULKAN_HPP_HASH_COMBINE( seed, hostImageCopyDevicePerformanceQuery.identicalMemoryLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo const & hostImageLayoutTransitionInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, hostImageLayoutTransitionInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, hostImageLayoutTransitionInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, hostImageLayoutTransitionInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, hostImageLayoutTransitionInfo.oldLayout ); + VULKAN_HPP_HASH_COMBINE( seed, hostImageLayoutTransitionInfo.newLayout ); + VULKAN_HPP_HASH_COMBINE( seed, hostImageLayoutTransitionInfo.subresourceRange ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK const & iOSSurfaceCreateInfoMVK ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.sType ); + VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.flags ); + VULKAN_HPP_HASH_COMBINE( seed, iOSSurfaceCreateInfoMVK.pView ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA const & imageAlignmentControlCreateInfoMESA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageAlignmentControlCreateInfoMESA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageAlignmentControlCreateInfoMESA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageAlignmentControlCreateInfoMESA.maximumRequestedAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageBlit const & imageBlit ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageBlit.srcSubresource ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, imageBlit.srcOffsets[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, imageBlit.dstSubresource ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, imageBlit.dstOffsets[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT const & imageCaptureDescriptorDataInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageCaptureDescriptorDataInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageCaptureDescriptorDataInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageCaptureDescriptorDataInfoEXT.image ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT const & imageCompressionControlEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageCompressionControlEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageCompressionControlEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageCompressionControlEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, imageCompressionControlEXT.compressionControlPlaneCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageCompressionControlEXT.pFixedRateFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT const & imageCompressionPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageCompressionPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageCompressionPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageCompressionPropertiesEXT.imageCompressionFlags ); + VULKAN_HPP_HASH_COMBINE( seed, imageCompressionPropertiesEXT.imageCompressionFixedRateFlags ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA const & imageFormatConstraintsInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.imageCreateInfo ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.requiredFormatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.flags ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.sysmemPixelFormat ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.colorSpaceCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatConstraintsInfoFUCHSIA.pColorSpaces ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA const & imageConstraintsInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.formatConstraintsCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.pFormatConstraints ); + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.bufferCollectionConstraints ); + VULKAN_HPP_HASH_COMBINE( seed, imageConstraintsInfoFUCHSIA.flags ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageCopy const & imageCopy ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageCopy.srcSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy.dstSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageCopy.extent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewCreateInfo const & imageViewCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.viewType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.format ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.components ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCreateInfo.subresourceRange ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageDescriptorInfoEXT const & imageDescriptorInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageDescriptorInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageDescriptorInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageDescriptorInfoEXT.pView ); + VULKAN_HPP_HASH_COMBINE( seed, imageDescriptorInfoEXT.layout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubresourceLayout const & subresourceLayout ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.offset ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.size ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.rowPitch ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.arrayPitch ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout.depthPitch ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT const & imageDrmFormatModifierExplicitCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.drmFormatModifier ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.drmFormatModifierPlaneCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierExplicitCreateInfoEXT.pPlaneLayouts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT const & imageDrmFormatModifierListCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.drmFormatModifierCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierListCreateInfoEXT.pDrmFormatModifiers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT const & imageDrmFormatModifierPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageDrmFormatModifierPropertiesEXT.drmFormatModifier ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo const & imageFormatListCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.viewFormatCount ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatListCreateInfo.pViewFormats ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageFormatProperties2 const & imageFormatProperties2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageFormatProperties2.imageFormatProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageMemoryBarrier const & imageMemoryBarrier ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.oldLayout ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.newLayout ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.srcQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.dstQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.image ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryBarrier.subresourceRange ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 const & imageMemoryRequirementsInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryRequirementsInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryRequirementsInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageMemoryRequirementsInfo2.image ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA const & imagePipeSurfaceCreateInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.flags ); + VULKAN_HPP_HASH_COMBINE( seed, imagePipeSurfaceCreateInfoFUCHSIA.imagePipeHandle ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo const & imagePlaneMemoryRequirementsInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imagePlaneMemoryRequirementsInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imagePlaneMemoryRequirementsInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imagePlaneMemoryRequirementsInfo.planeAspect ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageResolve const & imageResolve ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageResolve.srcSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve.dstSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve.extent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageResolve2 const & imageResolve2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.srcSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.srcOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.dstSubresource ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.dstOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageResolve2.extent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 const & imageSparseMemoryRequirementsInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSparseMemoryRequirementsInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageSparseMemoryRequirementsInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageSparseMemoryRequirementsInfo2.image ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo const & imageStencilUsageCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageStencilUsageCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageStencilUsageCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageStencilUsageCreateInfo.stencilUsage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR const & imageSwapchainCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageSwapchainCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageSwapchainCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageSwapchainCreateInfoKHR.swapchain ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT const & imageViewASTCDecodeModeEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewASTCDecodeModeEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewASTCDecodeModeEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewASTCDecodeModeEXT.decodeMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX const & imageViewAddressPropertiesNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.deviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewAddressPropertiesNVX.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT const & imageViewCaptureDescriptorDataInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewCaptureDescriptorDataInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCaptureDescriptorDataInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewCaptureDescriptorDataInfoEXT.imageView ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX const & imageViewHandleInfoNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.imageView ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.descriptorType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewHandleInfoNVX.sampler ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT const & imageViewMinLodCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewMinLodCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewMinLodCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewMinLodCreateInfoEXT.minLod ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM const & imageViewSampleWeightCreateInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewSampleWeightCreateInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewSampleWeightCreateInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewSampleWeightCreateInfoQCOM.filterCenter ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewSampleWeightCreateInfoQCOM.filterSize ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewSampleWeightCreateInfoQCOM.numPhases ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT const & imageViewSlicedCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewSlicedCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewSlicedCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewSlicedCreateInfoEXT.sliceOffset ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewSlicedCreateInfoEXT.sliceCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo const & imageViewUsageCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, imageViewUsageCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewUsageCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, imageViewUsageCreateInfo.usage ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID const & importAndroidHardwareBufferInfoANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importAndroidHardwareBufferInfoANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importAndroidHardwareBufferInfoANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importAndroidHardwareBufferInfoANDROID.buffer ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR const & importFenceFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.fence ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceFdInfoKHR.fd ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR const & importFenceWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.fence ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.handle ); + VULKAN_HPP_HASH_COMBINE( seed, importFenceWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA const & importMemoryBufferCollectionFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.collection ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryBufferCollectionFUCHSIA.index ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR const & importMemoryFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryFdInfoKHR.fd ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT const & importMemoryHostPointerInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryHostPointerInfoEXT.pHostPointer ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMemoryMetalHandleInfoEXT const & importMemoryMetalHandleInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryMetalHandleInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryMetalHandleInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryMetalHandleInfoEXT.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryMetalHandleInfoEXT.handle ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR const & importMemoryWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.handle ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV const & importMemoryWin32HandleInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryWin32HandleInfoNV.handle ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA const & importMemoryZirconHandleInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importMemoryZirconHandleInfoFUCHSIA.handle ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT const & importMetalBufferInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMetalBufferInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMetalBufferInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMetalBufferInfoEXT.mtlBuffer ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT const & importMetalIOSurfaceInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMetalIOSurfaceInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMetalIOSurfaceInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMetalIOSurfaceInfoEXT.ioSurface ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT const & importMetalSharedEventInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMetalSharedEventInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMetalSharedEventInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMetalSharedEventInfoEXT.mtlSharedEvent ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT const & importMetalTextureInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importMetalTextureInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importMetalTextureInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importMetalTextureInfoEXT.plane ); + VULKAN_HPP_HASH_COMBINE( seed, importMetalTextureInfoEXT.mtlTexture ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_OHOS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportNativeBufferInfoOHOS const & importNativeBufferInfoOHOS ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importNativeBufferInfoOHOS.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importNativeBufferInfoOHOS.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importNativeBufferInfoOHOS.buffer ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_OHOS*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX const & importScreenBufferInfoQNX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importScreenBufferInfoQNX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importScreenBufferInfoQNX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importScreenBufferInfoQNX.buffer ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR const & importSemaphoreFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreFdInfoKHR.fd ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR const & importSemaphoreWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.handle ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreWin32HandleInfoKHR.name ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA const & importSemaphoreZirconHandleInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.flags ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.handleType ); + VULKAN_HPP_HASH_COMBINE( seed, importSemaphoreZirconHandleInfoFUCHSIA.zirconHandle ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT const & indirectCommandsExecutionSetTokenEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsExecutionSetTokenEXT.type ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsExecutionSetTokenEXT.shaderStages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT const & indirectCommandsIndexBufferTokenEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsIndexBufferTokenEXT.mode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PushConstantRange const & pushConstantRange ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.stageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.offset ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantRange.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT const & indirectCommandsPushConstantTokenEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsPushConstantTokenEXT.updateRange ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT const & indirectCommandsVertexBufferTokenEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsVertexBufferTokenEXT.vertexBindingUnit ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT const & indirectCommandsLayoutCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.shaderStages ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.indirectStride ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.pipelineLayout ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.tokenCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoEXT.pTokens ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV const & indirectCommandsLayoutTokenNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.tokenType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.stream ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.offset ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.vertexBindingUnit ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.vertexDynamicStride ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantPipelineLayout ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantShaderStageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantOffset ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pushconstantSize ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.indirectStateFlags ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.indexTypeCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pIndexTypes ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutTokenNV.pIndexTypeValues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV const & indirectCommandsLayoutCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.tokenCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pTokens ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.streamCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutCreateInfoNV.pStreamStrides ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutPushDataTokenNV const & indirectCommandsLayoutPushDataTokenNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutPushDataTokenNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutPushDataTokenNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutPushDataTokenNV.pushDataOffset ); + VULKAN_HPP_HASH_COMBINE( seed, indirectCommandsLayoutPushDataTokenNV.pushDataSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT const & indirectExecutionSetPipelineInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetPipelineInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetPipelineInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetPipelineInfoEXT.initialPipeline ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetPipelineInfoEXT.maxPipelineCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT const & indirectExecutionSetShaderLayoutInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderLayoutInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderLayoutInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderLayoutInfoEXT.setLayoutCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderLayoutInfoEXT.pSetLayouts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT const & indirectExecutionSetShaderInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.shaderCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.pInitialShaders ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.pSetLayoutInfos ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.maxShaderCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.pushConstantRangeCount ); + VULKAN_HPP_HASH_COMBINE( seed, indirectExecutionSetShaderInfoEXT.pPushConstantRanges ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL const & initializePerformanceApiInfoINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, initializePerformanceApiInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, initializePerformanceApiInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, initializePerformanceApiInfoINTEL.pUserData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference const & inputAttachmentAspectReference ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, inputAttachmentAspectReference.subpass ); + VULKAN_HPP_HASH_COMBINE( seed, inputAttachmentAspectReference.inputAttachmentIndex ); + VULKAN_HPP_HASH_COMBINE( seed, inputAttachmentAspectReference.aspectMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::InstanceCreateInfo const & instanceCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.pApplicationInfo ); + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.enabledLayerCount ); + for ( size_t i = 0; i < instanceCreateInfo.enabledLayerCount; ++i ) + { + for ( char const * p = instanceCreateInfo.ppEnabledLayerNames[i]; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + } + VULKAN_HPP_HASH_COMBINE( seed, instanceCreateInfo.enabledExtensionCount ); + for ( size_t i = 0; i < instanceCreateInfo.enabledExtensionCount; ++i ) + { + for ( char const * p = instanceCreateInfo.ppEnabledExtensionNames[i]; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::LatencySleepInfoNV const & latencySleepInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, latencySleepInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, latencySleepInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, latencySleepInfoNV.signalSemaphore ); + VULKAN_HPP_HASH_COMBINE( seed, latencySleepInfoNV.value ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV const & latencySleepModeInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, latencySleepModeInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, latencySleepModeInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, latencySleepModeInfoNV.lowLatencyMode ); + VULKAN_HPP_HASH_COMBINE( seed, latencySleepModeInfoNV.lowLatencyBoost ); + VULKAN_HPP_HASH_COMBINE( seed, latencySleepModeInfoNV.minimumIntervalUs ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV const & latencySubmissionPresentIdNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, latencySubmissionPresentIdNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, latencySubmissionPresentIdNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, latencySubmissionPresentIdNV.presentID ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV const & latencySurfaceCapabilitiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, latencySurfaceCapabilitiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, latencySurfaceCapabilitiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, latencySurfaceCapabilitiesNV.presentModeCount ); + VULKAN_HPP_HASH_COMBINE( seed, latencySurfaceCapabilitiesNV.pPresentModes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::LayerProperties const & layerProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, layerProperties.layerName[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, layerProperties.specVersion ); + VULKAN_HPP_HASH_COMBINE( seed, layerProperties.implementationVersion ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, layerProperties.description[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::LayerSettingEXT const & layerSettingEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + for ( char const * p = layerSettingEXT.pLayerName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + for ( char const * p = layerSettingEXT.pSettingName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, layerSettingEXT.type ); + VULKAN_HPP_HASH_COMBINE( seed, layerSettingEXT.valueCount ); + VULKAN_HPP_HASH_COMBINE( seed, layerSettingEXT.pValues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT const & layerSettingsCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, layerSettingsCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, layerSettingsCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, layerSettingsCreateInfoEXT.settingCount ); + VULKAN_HPP_HASH_COMBINE( seed, layerSettingsCreateInfoEXT.pSettings ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK const & macOSSurfaceCreateInfoMVK ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.sType ); + VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.flags ); + VULKAN_HPP_HASH_COMBINE( seed, macOSSurfaceCreateInfoMVK.pView ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MappedMemoryRange const & mappedMemoryRange ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.sType ); + VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.memory ); + VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.offset ); + VULKAN_HPP_HASH_COMBINE( seed, mappedMemoryRange.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo const & memoryAllocateFlagsInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateFlagsInfo.deviceMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryAllocateInfo const & memoryAllocateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.allocationSize ); + VULKAN_HPP_HASH_COMBINE( seed, memoryAllocateInfo.memoryTypeIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryBarrier const & memoryBarrier ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrier.dstAccessMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryBarrierAccessFlags3KHR const & memoryBarrierAccessFlags3KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrierAccessFlags3KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrierAccessFlags3KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrierAccessFlags3KHR.srcAccessMask3 ); + VULKAN_HPP_HASH_COMBINE( seed, memoryBarrierAccessFlags3KHR.dstAccessMask3 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo const & memoryDedicatedAllocateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.image ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfo.buffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfoTensorARM const & memoryDedicatedAllocateInfoTensorARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfoTensorARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfoTensorARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedAllocateInfoTensorARM.tensor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements const & memoryDedicatedRequirements ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.prefersDedicatedAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, memoryDedicatedRequirements.requiresDedicatedAllocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR const & memoryFdPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryFdPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryFdPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryFdPropertiesKHR.memoryTypeBits ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID const & memoryGetAndroidHardwareBufferInfoANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetAndroidHardwareBufferInfoANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetAndroidHardwareBufferInfoANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetAndroidHardwareBufferInfoANDROID.memory ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR const & memoryGetFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetFdInfoKHR.handleType ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryGetMetalHandleInfoEXT const & memoryGetMetalHandleInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetMetalHandleInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetMetalHandleInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetMetalHandleInfoEXT.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetMetalHandleInfoEXT.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + +# if defined( VK_USE_PLATFORM_OHOS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryGetNativeBufferInfoOHOS const & memoryGetNativeBufferInfoOHOS ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetNativeBufferInfoOHOS.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetNativeBufferInfoOHOS.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetNativeBufferInfoOHOS.memory ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_OHOS*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV const & memoryGetRemoteAddressInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetRemoteAddressInfoNV.handleType ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR const & memoryGetWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetWin32HandleInfoKHR.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA const & memoryGetZirconHandleInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryGetZirconHandleInfoFUCHSIA.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryHeap const & memoryHeap ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryHeap.size ); + VULKAN_HPP_HASH_COMBINE( seed, memoryHeap.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT const & memoryHostPointerPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryHostPointerPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryHostPointerPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryHostPointerPropertiesEXT.memoryTypeBits ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryMapInfo const & memoryMapInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfo.memory ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfo.offset ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapInfo.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT const & memoryMapPlacedInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryMapPlacedInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapPlacedInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMapPlacedInfoEXT.pPlacedAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryMarkerInfoAMD const & memoryMarkerInfoAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryMarkerInfoAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMarkerInfoAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMarkerInfoAMD.stage ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMarkerInfoAMD.dstRange ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMarkerInfoAMD.dstFlags ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMarkerInfoAMD.marker ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryMetalHandlePropertiesEXT const & memoryMetalHandlePropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryMetalHandlePropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMetalHandlePropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryMetalHandlePropertiesEXT.memoryTypeBits ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo const & memoryOpaqueCaptureAddressAllocateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryOpaqueCaptureAddressAllocateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryOpaqueCaptureAddressAllocateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryOpaqueCaptureAddressAllocateInfo.opaqueCaptureAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT const & memoryPriorityAllocateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryPriorityAllocateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryPriorityAllocateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryPriorityAllocateInfoEXT.priority ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryRangeBarrierKHR const & memoryRangeBarrierKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarrierKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarrierKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarrierKHR.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarrierKHR.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarrierKHR.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarrierKHR.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarrierKHR.srcQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarrierKHR.dstQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarrierKHR.addressRange ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarrierKHR.addressFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryRangeBarriersInfoKHR const & memoryRangeBarriersInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarriersInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarriersInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarriersInfoKHR.memoryRangeBarrierCount ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRangeBarriersInfoKHR.pMemoryRangeBarriers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryRequirements const & memoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements.size ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements.alignment ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements.memoryTypeBits ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryRequirements2 const & memoryRequirements2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryRequirements2.memoryRequirements ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryType const & memoryType ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryType.propertyFlags ); + VULKAN_HPP_HASH_COMBINE( seed, memoryType.heapIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryUnmapInfo const & memoryUnmapInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryUnmapInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryUnmapInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryUnmapInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, memoryUnmapInfo.memory ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR const & memoryWin32HandlePropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryWin32HandlePropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryWin32HandlePropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryWin32HandlePropertiesKHR.memoryTypeBits ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA const & memoryZirconHandlePropertiesFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, memoryZirconHandlePropertiesFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, memoryZirconHandlePropertiesFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, memoryZirconHandlePropertiesFUCHSIA.memoryTypeBits ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT const & metalSurfaceCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, metalSurfaceCreateInfoEXT.pLayer ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT const & micromapBuildSizesInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, micromapBuildSizesInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, micromapBuildSizesInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, micromapBuildSizesInfoEXT.micromapSize ); + VULKAN_HPP_HASH_COMBINE( seed, micromapBuildSizesInfoEXT.buildScratchSize ); + VULKAN_HPP_HASH_COMBINE( seed, micromapBuildSizesInfoEXT.discardable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT const & micromapCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.createFlags ); + VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.buffer ); + VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.offset ); + VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.size ); + VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.type ); + VULKAN_HPP_HASH_COMBINE( seed, micromapCreateInfoEXT.deviceAddress ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MicromapTriangleEXT const & micromapTriangleEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, micromapTriangleEXT.dataOffset ); + VULKAN_HPP_HASH_COMBINE( seed, micromapTriangleEXT.subdivisionLevel ); + VULKAN_HPP_HASH_COMBINE( seed, micromapTriangleEXT.format ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT const & micromapVersionInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, micromapVersionInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, micromapVersionInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, micromapVersionInfoEXT.pVersionData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT const & multiDrawIndexedInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, multiDrawIndexedInfoEXT.firstIndex ); + VULKAN_HPP_HASH_COMBINE( seed, multiDrawIndexedInfoEXT.indexCount ); + VULKAN_HPP_HASH_COMBINE( seed, multiDrawIndexedInfoEXT.vertexOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT const & multiDrawInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, multiDrawInfoEXT.firstVertex ); + VULKAN_HPP_HASH_COMBINE( seed, multiDrawInfoEXT.vertexCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT const & multisamplePropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, multisamplePropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, multisamplePropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, multisamplePropertiesEXT.maxSampleLocationGridSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT const & multisampledRenderToSingleSampledInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, multisampledRenderToSingleSampledInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, multisampledRenderToSingleSampledInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, multisampledRenderToSingleSampledInfoEXT.multisampledRenderToSingleSampledEnable ); + VULKAN_HPP_HASH_COMBINE( seed, multisampledRenderToSingleSampledInfoEXT.rasterizationSamples ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX const & multiviewPerViewAttributesInfoNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.perViewAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewAttributesInfoNVX.perViewAttributesPositionXOnly ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & multiviewPerViewRenderAreasRenderPassBeginInfoQCOM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewRenderAreasRenderPassBeginInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewRenderAreasRenderPassBeginInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewRenderAreasRenderPassBeginInfoQCOM.perViewRenderAreaCount ); + VULKAN_HPP_HASH_COMBINE( seed, multiviewPerViewRenderAreasRenderPassBeginInfoQCOM.pPerViewRenderAreas ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT const & mutableDescriptorTypeListEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeListEXT.descriptorTypeCount ); + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeListEXT.pDescriptorTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT const & mutableDescriptorTypeCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoEXT.mutableDescriptorTypeListCount ); + VULKAN_HPP_HASH_COMBINE( seed, mutableDescriptorTypeCreateInfoEXT.pMutableDescriptorTypeLists ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_OHOS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::NativeBufferFormatPropertiesOHOS const & nativeBufferFormatPropertiesOHOS ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferFormatPropertiesOHOS.sType ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferFormatPropertiesOHOS.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferFormatPropertiesOHOS.format ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferFormatPropertiesOHOS.externalFormat ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferFormatPropertiesOHOS.formatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferFormatPropertiesOHOS.samplerYcbcrConversionComponents ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferFormatPropertiesOHOS.suggestedYcbcrModel ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferFormatPropertiesOHOS.suggestedYcbcrRange ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferFormatPropertiesOHOS.suggestedXChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferFormatPropertiesOHOS.suggestedYChromaOffset ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_OHOS*/ + +# if defined( VK_USE_PLATFORM_OHOS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::NativeBufferPropertiesOHOS const & nativeBufferPropertiesOHOS ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferPropertiesOHOS.sType ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferPropertiesOHOS.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferPropertiesOHOS.allocationSize ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferPropertiesOHOS.memoryTypeBits ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_OHOS*/ + +# if defined( VK_USE_PLATFORM_OHOS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::NativeBufferUsageOHOS const & nativeBufferUsageOHOS ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferUsageOHOS.sType ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferUsageOHOS.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, nativeBufferUsageOHOS.OHOSNativeBufferUsage ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_OHOS*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::OpaqueCaptureDataCreateInfoEXT const & opaqueCaptureDataCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, opaqueCaptureDataCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, opaqueCaptureDataCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, opaqueCaptureDataCreateInfoEXT.pData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT const & opaqueCaptureDescriptorDataCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, opaqueCaptureDescriptorDataCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, opaqueCaptureDescriptorDataCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, opaqueCaptureDescriptorDataCreateInfoEXT.opaqueCaptureDescriptorData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV const & opticalFlowExecuteInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowExecuteInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowExecuteInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowExecuteInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowExecuteInfoNV.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowExecuteInfoNV.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV const & opticalFlowImageFormatInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatInfoNV.usage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV const & opticalFlowImageFormatPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowImageFormatPropertiesNV.format ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV const & opticalFlowSessionCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.width ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.height ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.imageFormat ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.flowVectorFormat ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.costFormat ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.outputGridSize ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.hintGridSize ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.performanceLevel ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreateInfoNV.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV const & opticalFlowSessionCreatePrivateDataInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreatePrivateDataInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreatePrivateDataInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreatePrivateDataInfoNV.id ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreatePrivateDataInfoNV.size ); + VULKAN_HPP_HASH_COMBINE( seed, opticalFlowSessionCreatePrivateDataInfoNV.pPrivateData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV const & outOfBandQueueTypeInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, outOfBandQueueTypeInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, outOfBandQueueTypeInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, outOfBandQueueTypeInfoNV.queueType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PartitionedAccelerationStructureFlagsNV const & partitionedAccelerationStructureFlagsNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureFlagsNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureFlagsNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureFlagsNV.enablePartitionTranslation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PartitionedAccelerationStructureUpdateInstanceDataNV const & + partitionedAccelerationStructureUpdateInstanceDataNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureUpdateInstanceDataNV.instanceIndex ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureUpdateInstanceDataNV.instanceContributionToHitGroupIndex ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureUpdateInstanceDataNV.accelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PartitionedAccelerationStructureWriteInstanceDataNV const & partitionedAccelerationStructureWriteInstanceDataNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWriteInstanceDataNV.transform ); + for ( size_t i = 0; i < 6; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWriteInstanceDataNV.explicitAABB[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWriteInstanceDataNV.instanceID ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWriteInstanceDataNV.instanceMask ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWriteInstanceDataNV.instanceContributionToHitGroupIndex ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWriteInstanceDataNV.instanceFlags ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWriteInstanceDataNV.instanceIndex ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWriteInstanceDataNV.partitionIndex ); + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWriteInstanceDataNV.accelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PartitionedAccelerationStructureWritePartitionTranslationDataNV const & + partitionedAccelerationStructureWritePartitionTranslationDataNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWritePartitionTranslationDataNV.partitionIndex ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, partitionedAccelerationStructureWritePartitionTranslationDataNV.partitionTranslation[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentStageTimeEXT const & presentStageTimeEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentStageTimeEXT.stage ); + VULKAN_HPP_HASH_COMBINE( seed, presentStageTimeEXT.time ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PastPresentationTimingEXT const & pastPresentationTimingEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingEXT.presentId ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingEXT.targetTime ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingEXT.presentStageCount ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingEXT.pPresentStages ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingEXT.timeDomain ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingEXT.timeDomainId ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingEXT.reportComplete ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE const & pastPresentationTimingGOOGLE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.presentID ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.desiredPresentTime ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.actualPresentTime ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.earliestPresentTime ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingGOOGLE.presentMargin ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PastPresentationTimingInfoEXT const & pastPresentationTimingInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingInfoEXT.swapchain ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PastPresentationTimingPropertiesEXT const & pastPresentationTimingPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingPropertiesEXT.timingPropertiesCounter ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingPropertiesEXT.timeDomainsCounter ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingPropertiesEXT.presentationTimingCount ); + VULKAN_HPP_HASH_COMBINE( seed, pastPresentationTimingPropertiesEXT.pPresentationTimings ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerTileBeginInfoQCOM const & perTileBeginInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, perTileBeginInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, perTileBeginInfoQCOM.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerTileEndInfoQCOM const & perTileEndInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, perTileEndInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, perTileEndInfoQCOM.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL const & performanceConfigurationAcquireInfoINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceConfigurationAcquireInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceConfigurationAcquireInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceConfigurationAcquireInfoINTEL.type ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceCounterARM const & performanceCounterARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterARM.counterID ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionARM const & performanceCounterDescriptionARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionARM.flags ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionARM.name[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR const & performanceCounterDescriptionKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.flags ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.name[i] ); + } + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.category[i] ); + } + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterDescriptionKHR.description[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceCounterKHR const & performanceCounterKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.unit ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.scope ); + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.storage ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, performanceCounterKHR.uuid[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL const & performanceMarkerInfoINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceMarkerInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceMarkerInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceMarkerInfoINTEL.marker ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL const & performanceOverrideInfoINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.type ); + VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.enable ); + VULKAN_HPP_HASH_COMBINE( seed, performanceOverrideInfoINTEL.parameter ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR const & performanceQuerySubmitInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceQuerySubmitInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceQuerySubmitInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceQuerySubmitInfoKHR.counterPassIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL const & performanceStreamMarkerInfoINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, performanceStreamMarkerInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, performanceStreamMarkerInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, performanceStreamMarkerInfoINTEL.marker ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures const & physicalDevice16BitStorageFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.storageBuffer16BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.uniformAndStorageBuffer16BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.storagePushConstant16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice16BitStorageFeatures.storageInputOutput16 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT const & physicalDevice4444FormatsFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.formatA4R4G4B4 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice4444FormatsFeaturesEXT.formatA4B4G4R4 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures const & physicalDevice8BitStorageFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.storageBuffer8BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.uniformAndStorageBuffer8BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevice8BitStorageFeatures.storagePushConstant8 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT const & physicalDeviceASTCDecodeFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceASTCDecodeFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceASTCDecodeFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceASTCDecodeFeaturesEXT.decodeModeSharedExponent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR const & physicalDeviceAccelerationStructureFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructure ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureIndirectBuild ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.accelerationStructureHostCommands ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructureFeaturesKHR.descriptorBindingAccelerationStructureUpdateAfterBind ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR const & physicalDeviceAccelerationStructurePropertiesKHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxGeometryCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxInstanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxPrimitiveCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxPerStageDescriptorAccelerationStructures ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxPerStageDescriptorUpdateAfterBindAccelerationStructures ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxDescriptorSetAccelerationStructures ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.maxDescriptorSetUpdateAfterBindAccelerationStructures ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAccelerationStructurePropertiesKHR.minAccelerationStructureScratchOffsetAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT const & physicalDeviceAddressBindingReportFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAddressBindingReportFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAddressBindingReportFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAddressBindingReportFeaturesEXT.reportAddressBinding ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC const & physicalDeviceAmigoProfilingFeaturesSEC ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAmigoProfilingFeaturesSEC.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAmigoProfilingFeaturesSEC.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAmigoProfilingFeaturesSEC.amigoProfiling ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD const & physicalDeviceAntiLagFeaturesAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAntiLagFeaturesAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAntiLagFeaturesAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAntiLagFeaturesAMD.antiLag ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & + physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.attachmentFeedbackLoopDynamicState ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & + physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.attachmentFeedbackLoopLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & physicalDeviceBlendOperationAdvancedFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedFeaturesEXT.advancedBlendCoherentOperations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & physicalDeviceBlendOperationAdvancedPropertiesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendMaxColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendIndependentBlend ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendNonPremultipliedSrcColor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendNonPremultipliedDstColor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendCorrelatedOverlap ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBlendOperationAdvancedPropertiesEXT.advancedBlendAllOperations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT const & physicalDeviceBorderColorSwizzleFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzle ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBorderColorSwizzleFeaturesEXT.borderColorSwizzleFromImage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures const & physicalDeviceBufferDeviceAddressFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddressCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeatures.bufferDeviceAddressMultiDevice ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT const & physicalDeviceBufferDeviceAddressFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.bufferDeviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.bufferDeviceAddressCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceBufferDeviceAddressFeaturesEXT.bufferDeviceAddressMultiDevice ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterAccelerationStructureFeaturesNV const & + physicalDeviceClusterAccelerationStructureFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructureFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructureFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructureFeaturesNV.clusterAccelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterAccelerationStructurePropertiesNV const & + physicalDeviceClusterAccelerationStructurePropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructurePropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructurePropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructurePropertiesNV.maxVerticesPerCluster ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructurePropertiesNV.maxTrianglesPerCluster ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructurePropertiesNV.clusterScratchByteAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructurePropertiesNV.clusterByteAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructurePropertiesNV.clusterTemplateByteAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructurePropertiesNV.clusterBottomLevelByteAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructurePropertiesNV.clusterTemplateBoundsByteAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterAccelerationStructurePropertiesNV.maxClusterGeometryIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & physicalDeviceClusterCullingShaderFeaturesHUAWEI ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderFeaturesHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderFeaturesHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderFeaturesHUAWEI.clustercullingShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderFeaturesHUAWEI.multiviewClusterCullingShader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & physicalDeviceClusterCullingShaderPropertiesHUAWEI ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.pNext ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.maxWorkGroupCount[i] ); + } + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.maxWorkGroupSize[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.maxOutputClusterCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderPropertiesHUAWEI.indirectBufferOffsetAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & physicalDeviceClusterCullingShaderVrsFeaturesHUAWEI ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.clusterShadingRate ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD const & physicalDeviceCoherentMemoryFeaturesAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoherentMemoryFeaturesAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoherentMemoryFeaturesAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoherentMemoryFeaturesAMD.deviceCoherentMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT const & physicalDeviceColorWriteEnableFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceColorWriteEnableFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceColorWriteEnableFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceColorWriteEnableFeaturesEXT.colorWriteEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV const & physicalDeviceCommandBufferInheritanceFeaturesNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCommandBufferInheritanceFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCommandBufferInheritanceFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCommandBufferInheritanceFeaturesNV.commandBufferInheritance ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeOccupancyPriorityFeaturesNV const & physicalDeviceComputeOccupancyPriorityFeaturesNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeOccupancyPriorityFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeOccupancyPriorityFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeOccupancyPriorityFeaturesNV.computeOccupancyPriority ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesKHR const & physicalDeviceComputeShaderDerivativesFeaturesKHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesKHR.computeDerivativeGroupQuads ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesFeaturesKHR.computeDerivativeGroupLinear ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesPropertiesKHR const & physicalDeviceComputeShaderDerivativesPropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceComputeShaderDerivativesPropertiesKHR.meshAndTaskShaderDerivatives ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT const & physicalDeviceConditionalRenderingFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.conditionalRendering ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConditionalRenderingFeaturesEXT.inheritedConditionalRendering ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT const & + physicalDeviceConservativeRasterizationPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.primitiveOverestimationSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.maxExtraPrimitiveOverestimationSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.extraPrimitiveOverestimationSizeGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.primitiveUnderestimation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.conservativePointAndLineRasterization ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.degenerateTrianglesRasterized ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.degenerateLinesRasterized ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.fullyCoveredFragmentShaderInputVariable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceConservativeRasterizationPropertiesEXT.conservativeRasterizationPostDepthCoverage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrix2FeaturesNV const & physicalDeviceCooperativeMatrix2FeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2FeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2FeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2FeaturesNV.cooperativeMatrixWorkgroupScope ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2FeaturesNV.cooperativeMatrixFlexibleDimensions ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2FeaturesNV.cooperativeMatrixReductions ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2FeaturesNV.cooperativeMatrixConversions ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2FeaturesNV.cooperativeMatrixPerElementOperations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2FeaturesNV.cooperativeMatrixTensorAddressing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2FeaturesNV.cooperativeMatrixBlockLoads ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrix2PropertiesNV const & physicalDeviceCooperativeMatrix2PropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2PropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2PropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2PropertiesNV.cooperativeMatrixWorkgroupScopeMaxWorkgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2PropertiesNV.cooperativeMatrixFlexibleDimensionsMaxDimension ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrix2PropertiesNV.cooperativeMatrixWorkgroupScopeReservedSharedMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM const & + physicalDeviceCooperativeMatrixConversionFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixConversionFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixConversionFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixConversionFeaturesQCOM.cooperativeMatrixConversion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR const & physicalDeviceCooperativeMatrixFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesKHR.cooperativeMatrix ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesKHR.cooperativeMatrixRobustBufferAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV const & physicalDeviceCooperativeMatrixFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.cooperativeMatrix ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixFeaturesNV.cooperativeMatrixRobustBufferAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR const & physicalDeviceCooperativeMatrixPropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesKHR.cooperativeMatrixSupportedStages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV const & physicalDeviceCooperativeMatrixPropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeMatrixPropertiesNV.cooperativeMatrixSupportedStages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeVectorFeaturesNV const & physicalDeviceCooperativeVectorFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeVectorFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeVectorFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeVectorFeaturesNV.cooperativeVector ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeVectorFeaturesNV.cooperativeVectorTraining ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeVectorPropertiesNV const & physicalDeviceCooperativeVectorPropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeVectorPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeVectorPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeVectorPropertiesNV.cooperativeVectorSupportedStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeVectorPropertiesNV.cooperativeVectorTrainingFloat16Accumulation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeVectorPropertiesNV.cooperativeVectorTrainingFloat32Accumulation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCooperativeVectorPropertiesNV.maxCooperativeVectorComponents ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesKHR const & physicalDeviceCopyMemoryIndirectFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectFeaturesKHR.indirectMemoryCopy ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectFeaturesKHR.indirectMemoryToImageCopy ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV const & physicalDeviceCopyMemoryIndirectFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectFeaturesNV.indirectCopy ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesKHR const & physicalDeviceCopyMemoryIndirectPropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCopyMemoryIndirectPropertiesKHR.supportedQueues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV const & physicalDeviceCornerSampledImageFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCornerSampledImageFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCornerSampledImageFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCornerSampledImageFeaturesNV.cornerSampledImage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV const & physicalDeviceCoverageReductionModeFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoverageReductionModeFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoverageReductionModeFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCoverageReductionModeFeaturesNV.coverageReductionMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM const & physicalDeviceCubicClampFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCubicClampFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCubicClampFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCubicClampFeaturesQCOM.cubicRangeClamp ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM const & physicalDeviceCubicWeightsFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCubicWeightsFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCubicWeightsFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCubicWeightsFeaturesQCOM.selectableCubicWeights ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV const & physicalDeviceCudaKernelLaunchFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchFeaturesNV.cudaKernelLaunchFeatures ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV const & physicalDeviceCudaKernelLaunchPropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchPropertiesNV.computeCapabilityMinor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCudaKernelLaunchPropertiesNV.computeCapabilityMajor ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT const & physicalDeviceCustomBorderColorFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.customBorderColors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorFeaturesEXT.customBorderColorWithoutFormat ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT const & physicalDeviceCustomBorderColorPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomBorderColorPropertiesEXT.maxCustomBorderColorSamplers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomResolveFeaturesEXT const & physicalDeviceCustomResolveFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomResolveFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomResolveFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceCustomResolveFeaturesEXT.customResolve ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDataGraphFeaturesARM const & physicalDeviceDataGraphFeaturesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphFeaturesARM.dataGraph ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphFeaturesARM.dataGraphUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphFeaturesARM.dataGraphSpecializationConstants ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphFeaturesARM.dataGraphDescriptorBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphFeaturesARM.dataGraphShaderModule ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDataGraphModelFeaturesQCOM const & physicalDeviceDataGraphModelFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphModelFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphModelFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDataGraphModelFeaturesQCOM.dataGraphModel ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & + physicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDedicatedAllocationImageAliasingFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDedicatedAllocationImageAliasingFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDedicatedAllocationImageAliasingFeaturesNV.dedicatedAllocationImageAliasing ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDenseGeometryFormatFeaturesAMDX const & physicalDeviceDenseGeometryFormatFeaturesAMDX ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDenseGeometryFormatFeaturesAMDX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDenseGeometryFormatFeaturesAMDX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDenseGeometryFormatFeaturesAMDX.denseGeometryFormat ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT const & physicalDeviceDepthBiasControlFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthBiasControlFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthBiasControlFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthBiasControlFeaturesEXT.depthBiasControl ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthBiasControlFeaturesEXT.leastRepresentableValueForceUnormRepresentation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthBiasControlFeaturesEXT.floatRepresentation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthBiasControlFeaturesEXT.depthBiasExact ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampControlFeaturesEXT const & physicalDeviceDepthClampControlFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampControlFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampControlFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampControlFeaturesEXT.depthClampControl ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesKHR const & physicalDeviceDepthClampZeroOneFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampZeroOneFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampZeroOneFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClampZeroOneFeaturesKHR.depthClampZeroOne ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT const & physicalDeviceDepthClipControlFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipControlFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipControlFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipControlFeaturesEXT.depthClipControl ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT const & physicalDeviceDepthClipEnableFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipEnableFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipEnableFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthClipEnableFeaturesEXT.depthClipEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties const & physicalDeviceDepthStencilResolveProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.supportedDepthResolveModes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.supportedStencilResolveModes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.independentResolveNone ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDepthStencilResolveProperties.independentResolve ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & + physicalDeviceDescriptorBufferDensityMapPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferDensityMapPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferDensityMapPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferDensityMapPropertiesEXT.combinedImageSamplerDensityMapDescriptorSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT const & physicalDeviceDescriptorBufferFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.descriptorBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.descriptorBufferCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.descriptorBufferImageLayoutIgnored ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferFeaturesEXT.descriptorBufferPushDescriptors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT const & physicalDeviceDescriptorBufferPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.combinedImageSamplerDescriptorSingleArray ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.bufferlessPushDescriptors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.allowSamplerImageViewPostSubmitCreation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.descriptorBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxDescriptorBufferBindings ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxResourceDescriptorBufferBindings ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxSamplerDescriptorBufferBindings ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxEmbeddedImmutableSamplerBindings ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxEmbeddedImmutableSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.bufferCaptureReplayDescriptorDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.imageCaptureReplayDescriptorDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.imageViewCaptureReplayDescriptorDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.samplerCaptureReplayDescriptorDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.accelerationStructureCaptureReplayDescriptorDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.samplerDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.combinedImageSamplerDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.sampledImageDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.storageImageDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.uniformTexelBufferDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.robustUniformTexelBufferDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.storageTexelBufferDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.robustStorageTexelBufferDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.uniformBufferDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.robustUniformBufferDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.storageBufferDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.robustStorageBufferDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.inputAttachmentDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.accelerationStructureDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxSamplerDescriptorBufferRange ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.maxResourceDescriptorBufferRange ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.samplerDescriptorBufferAddressSpaceSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.resourceDescriptorBufferAddressSpaceSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferPropertiesEXT.descriptorBufferAddressSpaceSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferTensorFeaturesARM const & physicalDeviceDescriptorBufferTensorFeaturesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferTensorFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferTensorFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferTensorFeaturesARM.descriptorBufferTensorDescriptors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferTensorPropertiesARM const & physicalDeviceDescriptorBufferTensorPropertiesARM ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferTensorPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferTensorPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferTensorPropertiesARM.tensorCaptureReplayDescriptorDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferTensorPropertiesARM.tensorViewCaptureReplayDescriptorDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorBufferTensorPropertiesARM.tensorDescriptorSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorHeapFeaturesEXT const & physicalDeviceDescriptorHeapFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapFeaturesEXT.descriptorHeap ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapFeaturesEXT.descriptorHeapCaptureReplay ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorHeapPropertiesEXT const & physicalDeviceDescriptorHeapPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.samplerHeapAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.resourceHeapAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.maxSamplerHeapSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.maxResourceHeapSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.minSamplerHeapReservedRange ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.minSamplerHeapReservedRangeWithEmbedded ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.minResourceHeapReservedRange ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.samplerDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.imageDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.bufferDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.samplerDescriptorAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.imageDescriptorAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.bufferDescriptorAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.maxPushDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.imageCaptureReplayOpaqueDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.maxDescriptorHeapEmbeddedSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.samplerYcbcrConversionCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.sparseDescriptorHeaps ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapPropertiesEXT.protectedDescriptorHeaps ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorHeapTensorPropertiesARM const & physicalDeviceDescriptorHeapTensorPropertiesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapTensorPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapTensorPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapTensorPropertiesARM.tensorDescriptorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapTensorPropertiesARM.tensorDescriptorAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorHeapTensorPropertiesARM.tensorCaptureReplayOpaqueDataSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures const & physicalDeviceDescriptorIndexingFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderInputAttachmentArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderUniformBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderSampledImageArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderStorageBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderStorageImageArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderInputAttachmentArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderUniformTexelBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.shaderStorageTexelBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingSampledImageUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageImageUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingUniformTexelBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingStorageTexelBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingUpdateUnusedWhilePending ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingPartiallyBound ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.descriptorBindingVariableDescriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingFeatures.runtimeDescriptorArray ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties const & physicalDeviceDescriptorIndexingProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxUpdateAfterBindDescriptorsInAllPools ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.shaderUniformBufferArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.shaderSampledImageArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.shaderStorageBufferArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.shaderStorageImageArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.shaderInputAttachmentArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.robustBufferAccessUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.quadDivergentImplicitLod ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindSampledImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindStorageImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageDescriptorUpdateAfterBindInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxPerStageUpdateAfterBindResources ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindSampledImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindStorageImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorIndexingProperties.maxDescriptorSetUpdateAfterBindInputAttachments ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & + physicalDeviceDescriptorPoolOverallocationFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorPoolOverallocationFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorPoolOverallocationFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorPoolOverallocationFeaturesNV.descriptorPoolOverallocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & physicalDeviceDescriptorSetHostMappingFeaturesVALVE ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorSetHostMappingFeaturesVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorSetHostMappingFeaturesVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDescriptorSetHostMappingFeaturesVALVE.descriptorSetHostMapping ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceAddressCommandsFeaturesKHR const & physicalDeviceDeviceAddressCommandsFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceAddressCommandsFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceAddressCommandsFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceAddressCommandsFeaturesKHR.deviceAddressCommands ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & + physicalDeviceDeviceGeneratedCommandsComputeFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.deviceGeneratedCompute ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.deviceGeneratedComputePipelines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.deviceGeneratedComputeCaptureReplay ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & physicalDeviceDeviceGeneratedCommandsFeaturesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesEXT.deviceGeneratedCommands ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesEXT.dynamicGeneratedPipelineLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & physicalDeviceDeviceGeneratedCommandsFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsFeaturesNV.deviceGeneratedCommands ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & physicalDeviceDeviceGeneratedCommandsPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectPipelineCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectShaderObjectCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectSequenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectCommandsTokenCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectCommandsTokenOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.maxIndirectCommandsIndirectStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.supportedIndirectCommandsInputModes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.supportedIndirectCommandsShaderStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.supportedIndirectCommandsShaderStagesPipelineBinding ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.supportedIndirectCommandsShaderStagesShaderBinding ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.deviceGeneratedCommandsTransformFeedback ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesEXT.deviceGeneratedCommandsMultiDrawIndirectCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & physicalDeviceDeviceGeneratedCommandsPropertiesNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxGraphicsShaderGroupCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectSequenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsTokenCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsStreamCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsTokenOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.maxIndirectCommandsStreamStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.minSequencesCountBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.minSequencesIndexBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceGeneratedCommandsPropertiesNV.minIndirectCommandsBufferOffsetAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT const & physicalDeviceDeviceMemoryReportFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceMemoryReportFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceMemoryReportFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDeviceMemoryReportFeaturesEXT.deviceMemoryReport ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV const & physicalDeviceDiagnosticsConfigFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiagnosticsConfigFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiagnosticsConfigFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiagnosticsConfigFeaturesNV.diagnosticsConfig ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT const & physicalDeviceDiscardRectanglePropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiscardRectanglePropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiscardRectanglePropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDiscardRectanglePropertiesEXT.maxDiscardRectangles ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV const & physicalDeviceDisplacementMicromapFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDisplacementMicromapFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDisplacementMicromapFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDisplacementMicromapFeaturesNV.displacementMicromap ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV const & physicalDeviceDisplacementMicromapPropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDisplacementMicromapPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDisplacementMicromapPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDisplacementMicromapPropertiesNV.maxDisplacementMicromapSubdivisionLevel ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties const & physicalDeviceDriverProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.driverID ); + for ( size_t i = 0; i < VK_MAX_DRIVER_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.driverName[i] ); + } + for ( size_t i = 0; i < VK_MAX_DRIVER_INFO_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.driverInfo[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDriverProperties.conformanceVersion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT const & physicalDeviceDrmPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.hasPrimary ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.hasRender ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.primaryMajor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.primaryMinor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.renderMajor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDrmPropertiesEXT.renderMinor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures const & physicalDeviceDynamicRenderingFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingFeatures.dynamicRendering ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures const & physicalDeviceDynamicRenderingLocalReadFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingLocalReadFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingLocalReadFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingLocalReadFeatures.dynamicRenderingLocalRead ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & + physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.dynamicRenderingUnusedAttachments ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV const & physicalDeviceExclusiveScissorFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExclusiveScissorFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExclusiveScissorFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExclusiveScissorFeaturesNV.exclusiveScissor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT const & physicalDeviceExtendedDynamicState2FeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2LogicOp ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState2FeaturesEXT.extendedDynamicState2PatchControlPoints ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT const & physicalDeviceExtendedDynamicState3FeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3TessellationDomainOrigin ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3DepthClampEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3PolygonMode ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3RasterizationSamples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3SampleMask ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3AlphaToCoverageEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3AlphaToOneEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LogicOpEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendEquation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ColorWriteMask ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3RasterizationStream ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ConservativeRasterizationMode ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ExtraPrimitiveOverestimationSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3DepthClipEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3SampleLocationsEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ColorBlendAdvanced ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ProvokingVertexMode ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LineRasterizationMode ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3LineStippleEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3DepthClipNegativeOneToOne ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ViewportWScalingEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ViewportSwizzle ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageToColorEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageToColorLocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationMode ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationTableEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageModulationTable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3CoverageReductionMode ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3RepresentativeFragmentTestEnable ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3FeaturesEXT.extendedDynamicState3ShadingRateImageEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT const & physicalDeviceExtendedDynamicState3PropertiesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3PropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3PropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicState3PropertiesEXT.dynamicPrimitiveTopologyUnrestricted ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT const & physicalDeviceExtendedDynamicStateFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicStateFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicStateFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedDynamicStateFeaturesEXT.extendedDynamicState ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & physicalDeviceExtendedSparseAddressSpaceFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedSparseAddressSpaceFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedSparseAddressSpaceFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedSparseAddressSpaceFeaturesNV.extendedSparseAddressSpace ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & + physicalDeviceExtendedSparseAddressSpacePropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedSparseAddressSpacePropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedSparseAddressSpacePropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedSparseAddressSpacePropertiesNV.extendedSparseAddressSpaceSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedSparseAddressSpacePropertiesNV.extendedSparseImageUsageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExtendedSparseAddressSpacePropertiesNV.extendedSparseBufferUsageFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo const & physicalDeviceExternalBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.usage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalBufferInfo.handleType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalComputeQueuePropertiesNV const & physicalDeviceExternalComputeQueuePropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalComputeQueuePropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalComputeQueuePropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalComputeQueuePropertiesNV.externalDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalComputeQueuePropertiesNV.maxExternalQueues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo const & physicalDeviceExternalFenceInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFenceInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFenceInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFenceInfo.handleType ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID const & physicalDeviceExternalFormatResolveFeaturesANDROID ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFormatResolveFeaturesANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFormatResolveFeaturesANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFormatResolveFeaturesANDROID.externalFormatResolve ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID const & + physicalDeviceExternalFormatResolvePropertiesANDROID ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFormatResolvePropertiesANDROID.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFormatResolvePropertiesANDROID.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFormatResolvePropertiesANDROID.nullColorAttachmentWithExternalFormatResolve ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFormatResolvePropertiesANDROID.externalFormatResolveChromaOffsetX ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalFormatResolvePropertiesANDROID.externalFormatResolveChromaOffsetY ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo const & physicalDeviceExternalImageFormatInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalImageFormatInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalImageFormatInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalImageFormatInfo.handleType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT const & physicalDeviceExternalMemoryHostPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryHostPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryHostPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryHostPropertiesEXT.minImportedHostPointerAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV const & physicalDeviceExternalMemoryRDMAFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryRDMAFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryRDMAFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryRDMAFeaturesNV.externalMemoryRDMA ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & physicalDeviceExternalMemoryScreenBufferFeaturesQNX ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryScreenBufferFeaturesQNX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryScreenBufferFeaturesQNX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalMemoryScreenBufferFeaturesQNX.screenBufferImport ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo const & physicalDeviceExternalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalSemaphoreInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalSemaphoreInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalSemaphoreInfo.handleType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalTensorInfoARM const & physicalDeviceExternalTensorInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalTensorInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalTensorInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalTensorInfoARM.flags ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalTensorInfoARM.pDescription ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceExternalTensorInfoARM.handleType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT const & physicalDeviceFaultFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesEXT.deviceFault ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesEXT.deviceFaultVendorBinary ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesKHR const & physicalDeviceFaultFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesKHR.deviceFault ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesKHR.deviceFaultVendorBinary ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesKHR.deviceFaultReportMasked ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultFeaturesKHR.deviceFaultDeviceLostOnMasked ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultPropertiesKHR const & physicalDeviceFaultPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFaultPropertiesKHR.maxDeviceFaultCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 const & physicalDeviceFeatures2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFeatures2.features ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties const & physicalDeviceFloatControlsProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.denormBehaviorIndependence ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.roundingModeIndependence ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderSignedZeroInfNanPreserveFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderSignedZeroInfNanPreserveFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderSignedZeroInfNanPreserveFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormPreserveFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormPreserveFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormPreserveFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormFlushToZeroFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormFlushToZeroFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderDenormFlushToZeroFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTEFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTEFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTEFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTZFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTZFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFloatControlsProperties.shaderRoundingModeRTZFloat64 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFormatPackFeaturesARM const & physicalDeviceFormatPackFeaturesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFormatPackFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFormatPackFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFormatPackFeaturesARM.formatPack ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT const & physicalDeviceFragmentDensityMap2FeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2FeaturesEXT.fragmentDensityMapDeferred ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT const & physicalDeviceFragmentDensityMap2PropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.subsampledLoads ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.subsampledCoarseReconstructionEarlyAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.maxSubsampledArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMap2PropertiesEXT.maxDescriptorSetSubsampledSamplers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT const & physicalDeviceFragmentDensityMapFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMap ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMapDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapFeaturesEXT.fragmentDensityMapNonSubsampledImages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE const & + physicalDeviceFragmentDensityMapLayeredFeaturesVALVE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapLayeredFeaturesVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapLayeredFeaturesVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapLayeredFeaturesVALVE.fragmentDensityMapLayered ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE const & + physicalDeviceFragmentDensityMapLayeredPropertiesVALVE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapLayeredPropertiesVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapLayeredPropertiesVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapLayeredPropertiesVALVE.maxFragmentDensityMapLayers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const & physicalDeviceFragmentDensityMapOffsetFeaturesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetFeaturesEXT.fragmentDensityMapOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const & physicalDeviceFragmentDensityMapOffsetPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapOffsetPropertiesEXT.fragmentDensityOffsetGranularity ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT const & physicalDeviceFragmentDensityMapPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.minFragmentDensityTexelSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.maxFragmentDensityTexelSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentDensityMapPropertiesEXT.fragmentDensityInvocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & physicalDeviceFragmentShaderBarycentricFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricFeaturesKHR.fragmentShaderBarycentric ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & + physicalDeviceFragmentShaderBarycentricPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderBarycentricPropertiesKHR.triStripVertexOrderIndependentOfProvokingVertex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & physicalDeviceFragmentShaderInterlockFeaturesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderSampleInterlock ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderPixelInterlock ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShaderInterlockFeaturesEXT.fragmentShaderShadingRateInterlock ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & physicalDeviceFragmentShadingRateEnumsFeaturesNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.fragmentShadingRateEnums ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.supersampleFragmentShadingRates ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsFeaturesNV.noInvocationFragmentShadingRates ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & physicalDeviceFragmentShadingRateEnumsPropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateEnumsPropertiesNV.maxFragmentShadingRateInvocationCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR const & physicalDeviceFragmentShadingRateFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.pipelineFragmentShadingRate ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.primitiveFragmentShadingRate ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateFeaturesKHR.attachmentFragmentShadingRate ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR const & physicalDeviceFragmentShadingRateKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.sampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRateKHR.fragmentSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR const & physicalDeviceFragmentShadingRatePropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.minFragmentShadingRateAttachmentTexelSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateAttachmentTexelSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateAttachmentTexelSizeAspectRatio ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.primitiveFragmentShadingRateWithMultipleViewports ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.layeredShadingRateAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateNonTrivialCombinerOps ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentSizeAspectRatio ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateCoverageSamples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.maxFragmentShadingRateRasterizationSamples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithShaderDepthStencilWrites ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithSampleMask ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithShaderSampleMask ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithConservativeRasterization ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithFragmentShaderInterlock ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateWithCustomSampleLocations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFragmentShadingRatePropertiesKHR.fragmentShadingRateStrictMultiplyCombiner ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT const & physicalDeviceFrameBoundaryFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFrameBoundaryFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFrameBoundaryFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceFrameBoundaryFeaturesEXT.frameBoundary ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures const & physicalDeviceGlobalPriorityQueryFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGlobalPriorityQueryFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGlobalPriorityQueryFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGlobalPriorityQueryFeatures.globalPriorityQuery ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & physicalDeviceGraphicsPipelineLibraryFeaturesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryFeaturesEXT.graphicsPipelineLibrary ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & physicalDeviceGraphicsPipelineLibraryPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryPropertiesEXT.graphicsPipelineLibraryFastLinking ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGraphicsPipelineLibraryPropertiesEXT.graphicsPipelineLibraryIndependentInterpolationDecoration ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties const & physicalDeviceGroupProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.physicalDeviceCount ); + for ( size_t i = 0; i < VK_MAX_DEVICE_GROUP_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.physicalDevices[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceGroupProperties.subsetAllocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceHdrVividFeaturesHUAWEI const & physicalDeviceHdrVividFeaturesHUAWEI ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHdrVividFeaturesHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHdrVividFeaturesHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHdrVividFeaturesHUAWEI.hdrVivid ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures const & physicalDeviceHostImageCopyFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyFeatures.hostImageCopy ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties const & physicalDeviceHostImageCopyProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyProperties.copySrcLayoutCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyProperties.pCopySrcLayouts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyProperties.copyDstLayoutCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyProperties.pCopyDstLayouts ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyProperties.optimalTilingLayoutUUID[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostImageCopyProperties.identicalMemoryTypeRequirements ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures const & physicalDeviceHostQueryResetFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostQueryResetFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostQueryResetFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceHostQueryResetFeatures.hostQueryReset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties const & physicalDeviceIDProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.pNext ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceUUID[i] ); + } + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.driverUUID[i] ); + } + for ( size_t i = 0; i < VK_LUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceLUID[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceNodeMask ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIDProperties.deviceLUIDValid ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT const & physicalDeviceImage2DViewOf3DFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImage2DViewOf3DFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImage2DViewOf3DFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImage2DViewOf3DFeaturesEXT.image2DViewOf3D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImage2DViewOf3DFeaturesEXT.sampler2DViewOf3D ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA const & physicalDeviceImageAlignmentControlFeaturesMESA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageAlignmentControlFeaturesMESA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageAlignmentControlFeaturesMESA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageAlignmentControlFeaturesMESA.imageAlignmentControl ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA const & physicalDeviceImageAlignmentControlPropertiesMESA ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageAlignmentControlPropertiesMESA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageAlignmentControlPropertiesMESA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageAlignmentControlPropertiesMESA.supportedImageAlignmentMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT const & physicalDeviceImageCompressionControlFeaturesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlFeaturesEXT.imageCompressionControl ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & + physicalDeviceImageCompressionControlSwapchainFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlSwapchainFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlSwapchainFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageCompressionControlSwapchainFeaturesEXT.imageCompressionControlSwapchain ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT const & physicalDeviceImageDrmFormatModifierInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.drmFormatModifier ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.sharingMode ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.queueFamilyIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageDrmFormatModifierInfoEXT.pQueueFamilyIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 const & physicalDeviceImageFormatInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.format ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.type ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.tiling ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.usage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageFormatInfo2.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM const & physicalDeviceImageProcessing2FeaturesQCOM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessing2FeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessing2FeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessing2FeaturesQCOM.textureBlockMatch2 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM const & physicalDeviceImageProcessing2PropertiesQCOM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessing2PropertiesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessing2PropertiesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessing2PropertiesQCOM.maxBlockMatchWindow ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM const & physicalDeviceImageProcessingFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingFeaturesQCOM.textureSampleWeighted ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingFeaturesQCOM.textureBoxFilter ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingFeaturesQCOM.textureBlockMatch ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM const & physicalDeviceImageProcessingPropertiesQCOM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.maxWeightFilterPhases ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.maxWeightFilterDimension ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.maxBlockMatchRegion ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageProcessingPropertiesQCOM.maxBoxFilterBlockSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures const & physicalDeviceImageRobustnessFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageRobustnessFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageRobustnessFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageRobustnessFeatures.robustImageAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & physicalDeviceImageSlicedViewOf3DFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageSlicedViewOf3DFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageSlicedViewOf3DFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageSlicedViewOf3DFeaturesEXT.imageSlicedViewOf3D ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT const & physicalDeviceImageViewImageFormatInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewImageFormatInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewImageFormatInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewImageFormatInfoEXT.imageViewType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT const & physicalDeviceImageViewMinLodFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewMinLodFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewMinLodFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImageViewMinLodFeaturesEXT.minLod ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures const & physicalDeviceImagelessFramebufferFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImagelessFramebufferFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImagelessFramebufferFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceImagelessFramebufferFeatures.imagelessFramebuffer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features const & physicalDeviceIndexTypeUint8Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIndexTypeUint8Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIndexTypeUint8Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceIndexTypeUint8Features.indexTypeUint8 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV const & physicalDeviceInheritedViewportScissorFeaturesNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInheritedViewportScissorFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInheritedViewportScissorFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInheritedViewportScissorFeaturesNV.inheritedViewportScissor2D ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures const & physicalDeviceInlineUniformBlockFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.inlineUniformBlock ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockFeatures.descriptorBindingInlineUniformBlockUpdateAfterBind ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties const & physicalDeviceInlineUniformBlockProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxInlineUniformBlockSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxPerStageDescriptorInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxDescriptorSetInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInlineUniformBlockProperties.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR const & + physicalDeviceInternallySynchronizedQueuesFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInternallySynchronizedQueuesFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInternallySynchronizedQueuesFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInternallySynchronizedQueuesFeaturesKHR.internallySynchronizedQueues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI const & physicalDeviceInvocationMaskFeaturesHUAWEI ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInvocationMaskFeaturesHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInvocationMaskFeaturesHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceInvocationMaskFeaturesHUAWEI.invocationMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR const & physicalDeviceLayeredApiPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiPropertiesKHR.vendorID ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiPropertiesKHR.deviceID ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiPropertiesKHR.layeredAPI ); + for ( size_t i = 0; i < VK_MAX_PHYSICAL_DEVICE_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiPropertiesKHR.deviceName[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR const & physicalDeviceLayeredApiPropertiesListKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiPropertiesListKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiPropertiesListKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiPropertiesListKHR.layeredApiCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiPropertiesListKHR.pLayeredApis ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits const & physicalDeviceLimits ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimension1D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimension2D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimension3D ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageDimensionCube ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxImageArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTexelBufferElements ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxUniformBufferRange ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxStorageBufferRange ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPushConstantsSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxMemoryAllocationCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSamplerAllocationCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.bufferImageGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sparseAddressSpaceSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxBoundDescriptorSets ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorSampledImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorStorageImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageDescriptorInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxPerStageResources ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetUniformBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetStorageBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetSampledImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetStorageImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDescriptorSetInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputAttributes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputBindings ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputAttributeOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexInputBindingStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxVertexOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationGenerationLevel ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationPatchSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlPerVertexInputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlPerVertexOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlPerPatchOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationControlTotalOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationEvaluationInputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTessellationEvaluationOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryShaderInvocations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryInputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryOutputVertices ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxGeometryTotalOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentInputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentOutputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentDualSrcAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFragmentCombinedOutputResources ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeSharedMemorySize ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeWorkGroupCount[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeWorkGroupInvocations ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxComputeWorkGroupSize[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.subPixelPrecisionBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.subTexelPrecisionBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.mipmapPrecisionBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDrawIndexedIndexValue ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxDrawIndirectCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSamplerLodBias ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSamplerAnisotropy ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxViewports ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxViewportDimensions[i] ); + } + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.viewportBoundsRange[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.viewportSubPixelBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minMemoryMapAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minTexelBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minUniformBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minStorageBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minTexelOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTexelOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minTexelGatherOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxTexelGatherOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.minInterpolationOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxInterpolationOffset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.subPixelInterpolationOffsetBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFramebufferWidth ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFramebufferHeight ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxFramebufferLayers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferColorSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferDepthSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferStencilSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.framebufferNoAttachmentsSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageColorSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageIntegerSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageDepthSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.sampledImageStencilSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.storageImageSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxSampleMaskWords ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.timestampComputeAndGraphics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.timestampPeriod ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxClipDistances ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxCullDistances ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.maxCombinedClipAndCullDistances ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.discreteQueuePriorities ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.pointSizeRange[i] ); + } + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.lineWidthRange[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.pointSizeGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.lineWidthGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.strictLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.standardSampleLocations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.optimalBufferCopyOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.optimalBufferCopyRowPitchAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLimits.nonCoherentAtomSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties const & physicalDeviceSparseProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyStandard2DBlockShape ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyStandard2DMultisampleBlockShape ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyStandard3DBlockShape ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyAlignedMipSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseProperties.residencyNonResidentStrict ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties const & physicalDeviceProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.apiVersion ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.driverVersion ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.vendorID ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.deviceID ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.deviceType ); + for ( size_t i = 0; i < VK_MAX_PHYSICAL_DEVICE_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.deviceName[i] ); + } + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.pipelineCacheUUID[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.limits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties.sparseProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 const & physicalDeviceProperties2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProperties2.properties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR const & physicalDeviceLayeredApiVulkanPropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiVulkanPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiVulkanPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredApiVulkanPropertiesKHR.properties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT const & physicalDeviceLayeredDriverPropertiesMSFT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredDriverPropertiesMSFT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredDriverPropertiesMSFT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLayeredDriverPropertiesMSFT.underlyingAPI ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT const & physicalDeviceLegacyDitheringFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyDitheringFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyDitheringFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyDitheringFeaturesEXT.legacyDithering ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & physicalDeviceLegacyVertexAttributesFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyVertexAttributesFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyVertexAttributesFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyVertexAttributesFeaturesEXT.legacyVertexAttributes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & physicalDeviceLegacyVertexAttributesPropertiesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyVertexAttributesPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyVertexAttributesPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLegacyVertexAttributesPropertiesEXT.nativeUnalignedPerformance ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures const & physicalDeviceLineRasterizationFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeatures.rectangularLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeatures.bresenhamLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeatures.smoothLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeatures.stippledRectangularLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeatures.stippledBresenhamLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationFeatures.stippledSmoothLines ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties const & physicalDeviceLineRasterizationProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLineRasterizationProperties.lineSubPixelPrecisionBits ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV const & physicalDeviceLinearColorAttachmentFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLinearColorAttachmentFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLinearColorAttachmentFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceLinearColorAttachmentFeaturesNV.linearColorAttachment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance10FeaturesKHR const & physicalDeviceMaintenance10FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance10FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance10FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance10FeaturesKHR.maintenance10 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance10PropertiesKHR const & physicalDeviceMaintenance10PropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance10PropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance10PropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance10PropertiesKHR.rgba4OpaqueBlackSwizzled ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance10PropertiesKHR.resolveSrgbFormatAppliesTransferFunction ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance10PropertiesKHR.resolveSrgbFormatSupportsTransferFunctionControl ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties const & physicalDeviceMaintenance3Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.maxPerSetDescriptors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance3Properties.maxMemoryAllocationSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features const & physicalDeviceMaintenance4Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Features.maintenance4 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties const & physicalDeviceMaintenance4Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance4Properties.maxBufferSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features const & physicalDeviceMaintenance5Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Features.maintenance5 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties const & physicalDeviceMaintenance5Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Properties.earlyFragmentMultisampleCoverageAfterSampleCounting ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Properties.earlyFragmentSampleMaskTestBeforeSampleCounting ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Properties.depthStencilSwizzleOneSupport ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Properties.polygonModePointSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Properties.nonStrictSinglePixelWideLinesUseParallelogram ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance5Properties.nonStrictWideLinesUseParallelogram ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features const & physicalDeviceMaintenance6Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance6Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance6Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance6Features.maintenance6 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties const & physicalDeviceMaintenance6Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance6Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance6Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance6Properties.blockTexelViewCompatibleMultipleLayers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance6Properties.maxCombinedImageSamplerDescriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance6Properties.fragmentShadingRateClampCombinerInputs ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR const & physicalDeviceMaintenance7FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7FeaturesKHR.maintenance7 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR const & physicalDeviceMaintenance7PropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7PropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7PropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7PropertiesKHR.robustFragmentShadingRateAttachmentAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7PropertiesKHR.separateDepthStencilAttachmentAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7PropertiesKHR.maxDescriptorSetTotalUniformBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7PropertiesKHR.maxDescriptorSetTotalStorageBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7PropertiesKHR.maxDescriptorSetTotalBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7PropertiesKHR.maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7PropertiesKHR.maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance7PropertiesKHR.maxDescriptorSetUpdateAfterBindTotalBuffersDynamic ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance8FeaturesKHR const & physicalDeviceMaintenance8FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance8FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance8FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance8FeaturesKHR.maintenance8 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance9FeaturesKHR const & physicalDeviceMaintenance9FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance9FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance9FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance9FeaturesKHR.maintenance9 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance9PropertiesKHR const & physicalDeviceMaintenance9PropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance9PropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance9PropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance9PropertiesKHR.image2DViewOf3DSparse ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMaintenance9PropertiesKHR.defaultVertexAttributeValue ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT const & physicalDeviceMapMemoryPlacedFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMapMemoryPlacedFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMapMemoryPlacedFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMapMemoryPlacedFeaturesEXT.memoryMapPlaced ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMapMemoryPlacedFeaturesEXT.memoryMapRangePlaced ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMapMemoryPlacedFeaturesEXT.memoryUnmapReserve ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT const & physicalDeviceMapMemoryPlacedPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMapMemoryPlacedPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMapMemoryPlacedPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMapMemoryPlacedPropertiesEXT.minPlacedMemoryMapAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT const & physicalDeviceMemoryBudgetPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.pNext ); + for ( size_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.heapBudget[i] ); + } + for ( size_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryBudgetPropertiesEXT.heapUsage[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesEXT const & physicalDeviceMemoryDecompressionFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionFeaturesEXT.memoryDecompression ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesEXT const & physicalDeviceMemoryDecompressionPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionPropertiesEXT.decompressionMethods ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryDecompressionPropertiesEXT.maxDecompressionIndirectCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT const & physicalDeviceMemoryPriorityFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryPriorityFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryPriorityFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryPriorityFeaturesEXT.memoryPriority ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties const & physicalDeviceMemoryProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryTypeCount ); + for ( size_t i = 0; i < VK_MAX_MEMORY_TYPES; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryTypes[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryHeapCount ); + for ( size_t i = 0; i < VK_MAX_MEMORY_HEAPS; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties.memoryHeaps[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 const & physicalDeviceMemoryProperties2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMemoryProperties2.memoryProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT const & physicalDeviceMeshShaderFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.taskShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.meshShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.multiviewMeshShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.primitiveFragmentShadingRateMeshShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesEXT.meshShaderQueries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV const & physicalDeviceMeshShaderFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.taskShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderFeaturesNV.meshShader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT const & physicalDeviceMeshShaderPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskWorkGroupTotalCount ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskWorkGroupCount[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskWorkGroupInvocations ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskWorkGroupSize[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskPayloadSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskSharedMemorySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxTaskPayloadAndSharedMemorySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshWorkGroupTotalCount ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshWorkGroupCount[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshWorkGroupInvocations ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshWorkGroupSize[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshSharedMemorySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshPayloadAndSharedMemorySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshOutputMemorySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshPayloadAndOutputMemorySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshOutputComponents ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshOutputVertices ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshOutputPrimitives ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshOutputLayers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxMeshMultiviewViewCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.meshOutputPerVertexGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.meshOutputPerPrimitiveGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxPreferredTaskWorkGroupInvocations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.maxPreferredMeshWorkGroupInvocations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.prefersLocalInvocationVertexOutput ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.prefersLocalInvocationPrimitiveOutput ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.prefersCompactVertexOutput ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesEXT.prefersCompactPrimitiveOutput ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV const & physicalDeviceMeshShaderPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxDrawMeshTasksCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskWorkGroupInvocations ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskWorkGroupSize[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskTotalMemorySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxTaskOutputCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshWorkGroupInvocations ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshWorkGroupSize[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshTotalMemorySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshOutputVertices ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshOutputPrimitives ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.maxMeshMultiviewViewCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.meshOutputPerVertexGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMeshShaderPropertiesNV.meshOutputPerPrimitiveGranularity ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT const & physicalDeviceMultiDrawFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawFeaturesEXT.multiDraw ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT const & physicalDeviceMultiDrawPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiDrawPropertiesEXT.maxMultiDrawCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & + physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.multisampledRenderToSingleSampled ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures const & physicalDeviceMultiviewFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.multiview ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.multiviewGeometryShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewFeatures.multiviewTessellationShader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & + physicalDeviceMultiviewPerViewAttributesPropertiesNVX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewAttributesPropertiesNVX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewAttributesPropertiesNVX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewAttributesPropertiesNVX.perViewPositionAllComponents ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & + physicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.multiviewPerViewRenderAreas ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & physicalDeviceMultiviewPerViewViewportsFeaturesQCOM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewViewportsFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewViewportsFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewPerViewViewportsFeaturesQCOM.multiviewPerViewViewports ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties const & physicalDeviceMultiviewProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.maxMultiviewViewCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMultiviewProperties.maxMultiviewInstanceIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & physicalDeviceMutableDescriptorTypeFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMutableDescriptorTypeFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMutableDescriptorTypeFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceMutableDescriptorTypeFeaturesEXT.mutableDescriptorType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT const & physicalDeviceNestedCommandBufferFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNestedCommandBufferFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNestedCommandBufferFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNestedCommandBufferFeaturesEXT.nestedCommandBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNestedCommandBufferFeaturesEXT.nestedCommandBufferRendering ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNestedCommandBufferFeaturesEXT.nestedCommandBufferSimultaneousUse ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT const & physicalDeviceNestedCommandBufferPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNestedCommandBufferPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNestedCommandBufferPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNestedCommandBufferPropertiesEXT.maxCommandBufferNestingLevel ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & physicalDeviceNonSeamlessCubeMapFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNonSeamlessCubeMapFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNonSeamlessCubeMapFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceNonSeamlessCubeMapFeaturesEXT.nonSeamlessCubeMap ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT const & physicalDeviceOpacityMicromapFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapFeaturesEXT.micromap ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapFeaturesEXT.micromapCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapFeaturesEXT.micromapHostCommands ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT const & physicalDeviceOpacityMicromapPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapPropertiesEXT.maxOpacity2StateSubdivisionLevel ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpacityMicromapPropertiesEXT.maxOpacity4StateSubdivisionLevel ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV const & physicalDeviceOpticalFlowFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowFeaturesNV.opticalFlow ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV const & physicalDeviceOpticalFlowPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.supportedOutputGridSizes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.supportedHintGridSizes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.hintSupported ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.costSupported ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.bidirectionalFlowSupported ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.globalFlowSupported ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.minWidth ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.minHeight ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.maxWidth ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.maxHeight ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceOpticalFlowPropertiesNV.maxNumRegionsOfInterest ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT const & physicalDevicePCIBusInfoPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciDomain ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciBus ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciDevice ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePCIBusInfoPropertiesEXT.pciFunction ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & physicalDevicePageableDeviceLocalMemoryFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePageableDeviceLocalMemoryFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePageableDeviceLocalMemoryFeaturesEXT.pageableDeviceLocalMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePartitionedAccelerationStructureFeaturesNV const & + physicalDevicePartitionedAccelerationStructureFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePartitionedAccelerationStructureFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePartitionedAccelerationStructureFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePartitionedAccelerationStructureFeaturesNV.partitionedAccelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePartitionedAccelerationStructurePropertiesNV const & + physicalDevicePartitionedAccelerationStructurePropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePartitionedAccelerationStructurePropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePartitionedAccelerationStructurePropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePartitionedAccelerationStructurePropertiesNV.maxPartitionCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV const & physicalDevicePerStageDescriptorSetFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerStageDescriptorSetFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerStageDescriptorSetFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerStageDescriptorSetFeaturesNV.perStageDescriptorSet ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerStageDescriptorSetFeaturesNV.dynamicPipelineLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceCountersByRegionFeaturesARM const & + physicalDevicePerformanceCountersByRegionFeaturesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceCountersByRegionFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceCountersByRegionFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceCountersByRegionFeaturesARM.performanceCountersByRegion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceCountersByRegionPropertiesARM const & + physicalDevicePerformanceCountersByRegionPropertiesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceCountersByRegionPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceCountersByRegionPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceCountersByRegionPropertiesARM.maxPerRegionPerformanceCounters ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceCountersByRegionPropertiesARM.performanceCounterRegionSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceCountersByRegionPropertiesARM.rowStrideAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceCountersByRegionPropertiesARM.regionAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceCountersByRegionPropertiesARM.identityTransformOrder ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR const & physicalDevicePerformanceQueryFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.performanceCounterQueryPools ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryFeaturesKHR.performanceCounterMultipleQueryPools ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR const & physicalDevicePerformanceQueryPropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePerformanceQueryPropertiesKHR.allowCommandBufferQueryCopies ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR const & physicalDevicePipelineBinaryFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineBinaryFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineBinaryFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineBinaryFeaturesKHR.pipelineBinaries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR const & physicalDevicePipelineBinaryPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineBinaryPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineBinaryPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineBinaryPropertiesKHR.pipelineBinaryInternalCache ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineBinaryPropertiesKHR.pipelineBinaryInternalCacheControl ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineBinaryPropertiesKHR.pipelineBinaryPrefersInternalCache ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineBinaryPropertiesKHR.pipelineBinaryPrecompiledInternalCache ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineBinaryPropertiesKHR.pipelineBinaryCompressedData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC const & + physicalDevicePipelineCacheIncrementalModeFeaturesSEC ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCacheIncrementalModeFeaturesSEC.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCacheIncrementalModeFeaturesSEC.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCacheIncrementalModeFeaturesSEC.pipelineCacheIncrementalMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures const & physicalDevicePipelineCreationCacheControlFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCreationCacheControlFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCreationCacheControlFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineCreationCacheControlFeatures.pipelineCreationCacheControl ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & + physicalDevicePipelineExecutablePropertiesFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineExecutablePropertiesFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineExecutablePropertiesFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineExecutablePropertiesFeaturesKHR.pipelineExecutableInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & + physicalDevicePipelineLibraryGroupHandlesFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineLibraryGroupHandlesFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineLibraryGroupHandlesFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineLibraryGroupHandlesFeaturesEXT.pipelineLibraryGroupHandles ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineOpacityMicromapFeaturesARM const & physicalDevicePipelineOpacityMicromapFeaturesARM ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineOpacityMicromapFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineOpacityMicromapFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineOpacityMicromapFeaturesARM.pipelineOpacityMicromap ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT const & physicalDevicePipelinePropertiesFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelinePropertiesFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelinePropertiesFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelinePropertiesFeaturesEXT.pipelinePropertiesIdentifier ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures const & physicalDevicePipelineProtectedAccessFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineProtectedAccessFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineProtectedAccessFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineProtectedAccessFeatures.pipelineProtectedAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures const & physicalDevicePipelineRobustnessFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessFeatures.pipelineRobustness ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties const & physicalDevicePipelineRobustnessProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessProperties.defaultRobustnessStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessProperties.defaultRobustnessUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessProperties.defaultRobustnessVertexInputs ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePipelineRobustnessProperties.defaultRobustnessImages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties const & physicalDevicePointClippingProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePointClippingProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePointClippingProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePointClippingProperties.pointClippingBehavior ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR const & physicalDevicePortabilitySubsetFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.constantAlphaColorBlendFactors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.events ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.imageViewFormatReinterpretation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.imageViewFormatSwizzle ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.imageView2DOn3DImage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.multisampleArrayImage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.mutableComparisonSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.pointPolygons ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.samplerMipLodBias ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.separateStencilMaskRef ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.shaderSampleRateInterpolationFunctions ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.tessellationIsolines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.tessellationPointMode ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.triangleFans ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetFeaturesKHR.vertexAttributeAccessBeyondStride ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR const & physicalDevicePortabilitySubsetPropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePortabilitySubsetPropertiesKHR.minVertexInputBindingStrideAlignment ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV const & physicalDevicePresentBarrierFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentBarrierFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentBarrierFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentBarrierFeaturesNV.presentBarrier ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentId2FeaturesKHR const & physicalDevicePresentId2FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentId2FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentId2FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentId2FeaturesKHR.presentId2 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR const & physicalDevicePresentIdFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentIdFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentIdFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentIdFeaturesKHR.presentId ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentMeteringFeaturesNV const & physicalDevicePresentMeteringFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentMeteringFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentMeteringFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentMeteringFeaturesNV.presentMetering ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR const & physicalDevicePresentModeFifoLatestReadyFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentModeFifoLatestReadyFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentModeFifoLatestReadyFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentModeFifoLatestReadyFeaturesKHR.presentModeFifoLatestReady ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentTimingFeaturesEXT const & physicalDevicePresentTimingFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentTimingFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentTimingFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentTimingFeaturesEXT.presentTiming ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentTimingFeaturesEXT.presentAtAbsoluteTime ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentTimingFeaturesEXT.presentAtRelativeTime ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWait2FeaturesKHR const & physicalDevicePresentWait2FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWait2FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWait2FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWait2FeaturesKHR.presentWait2 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR const & physicalDevicePresentWaitFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWaitFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWaitFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePresentWaitFeaturesKHR.presentWait ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & + physicalDevicePrimitiveTopologyListRestartFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyListRestart ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitiveTopologyListRestartFeaturesEXT.primitiveTopologyPatchListRestart ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & physicalDevicePrimitivesGeneratedQueryFeaturesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitivesGeneratedQueryFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitivesGeneratedQueryFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitivesGeneratedQueryFeaturesEXT.primitivesGeneratedQuery ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitivesGeneratedQueryFeaturesEXT.primitivesGeneratedQueryWithRasterizerDiscard ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrimitivesGeneratedQueryFeaturesEXT.primitivesGeneratedQueryWithNonZeroStreams ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures const & physicalDevicePrivateDataFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrivateDataFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrivateDataFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePrivateDataFeatures.privateData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures const & physicalDeviceProtectedMemoryFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryFeatures.protectedMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties const & physicalDeviceProtectedMemoryProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProtectedMemoryProperties.protectedNoFault ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT const & physicalDeviceProvokingVertexFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.provokingVertexLast ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexFeaturesEXT.transformFeedbackPreservesProvokingVertex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT const & physicalDeviceProvokingVertexPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.provokingVertexModePerPipeline ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceProvokingVertexPropertiesEXT.transformFeedbackPreservesTriangleFanProvokingVertex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePushConstantBankFeaturesNV const & physicalDevicePushConstantBankFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushConstantBankFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushConstantBankFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushConstantBankFeaturesNV.pushConstantBank ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePushConstantBankPropertiesNV const & physicalDevicePushConstantBankPropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushConstantBankPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushConstantBankPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushConstantBankPropertiesNV.maxGraphicsPushConstantBanks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushConstantBankPropertiesNV.maxComputePushConstantBanks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushConstantBankPropertiesNV.maxGraphicsPushDataBanks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushConstantBankPropertiesNV.maxComputePushDataBanks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties const & physicalDevicePushDescriptorProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushDescriptorProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushDescriptorProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDevicePushDescriptorProperties.maxPushDescriptors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & + physicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.queueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.engineType ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & physicalDeviceRGBA10X6FormatsFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRGBA10X6FormatsFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRGBA10X6FormatsFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRGBA10X6FormatsFeaturesEXT.formatRgba10x6WithoutYCbCrSampler ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & + physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.rasterizationOrderColorAttachmentAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.rasterizationOrderDepthAttachmentAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.rasterizationOrderStencilAttachmentAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV const & physicalDeviceRawAccessChainsFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRawAccessChainsFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRawAccessChainsFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRawAccessChainsFeaturesNV.shaderRawAccessChains ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR const & physicalDeviceRayQueryFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayQueryFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayQueryFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayQueryFeaturesKHR.rayQuery ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesEXT const & + physicalDeviceRayTracingInvocationReorderFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderFeaturesEXT.rayTracingInvocationReorder ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & physicalDeviceRayTracingInvocationReorderFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderFeaturesNV.rayTracingInvocationReorder ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesEXT const & + physicalDeviceRayTracingInvocationReorderPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderPropertiesEXT.rayTracingInvocationReorderReorderingHint ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderPropertiesEXT.maxShaderBindingTableRecordIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & + physicalDeviceRayTracingInvocationReorderPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingInvocationReorderPropertiesNV.rayTracingInvocationReorderReorderingHint ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV const & + physicalDeviceRayTracingLinearSweptSpheresFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingLinearSweptSpheresFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingLinearSweptSpheresFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingLinearSweptSpheresFeaturesNV.spheres ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingLinearSweptSpheresFeaturesNV.linearSweptSpheres ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & physicalDeviceRayTracingMaintenance1FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMaintenance1FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMaintenance1FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMaintenance1FeaturesKHR.rayTracingMaintenance1 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMaintenance1FeaturesKHR.rayTracingPipelineTraceRaysIndirect2 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV const & physicalDeviceRayTracingMotionBlurFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.rayTracingMotionBlur ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingMotionBlurFeaturesNV.rayTracingMotionBlurPipelineTraceRaysIndirect ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR const & physicalDeviceRayTracingPipelineFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipeline ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineShaderGroupHandleCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineShaderGroupHandleCaptureReplayMixed ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTracingPipelineTraceRaysIndirect ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelineFeaturesKHR.rayTraversalPrimitiveCulling ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR const & physicalDeviceRayTracingPipelinePropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupHandleSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxRayRecursionDepth ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxShaderGroupStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupBaseAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupHandleCaptureReplaySize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxRayDispatchInvocationCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.shaderGroupHandleAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPipelinePropertiesKHR.maxRayHitAttributeSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & physicalDeviceRayTracingPositionFetchFeaturesKHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPositionFetchFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPositionFetchFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPositionFetchFeaturesKHR.rayTracingPositionFetch ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV const & physicalDeviceRayTracingPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.shaderGroupHandleSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxRecursionDepth ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxShaderGroupStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.shaderGroupBaseAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxGeometryCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxInstanceCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxTriangleCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingPropertiesNV.maxDescriptorSetAccelerationStructures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV const & physicalDeviceRayTracingValidationFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingValidationFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingValidationFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRayTracingValidationFeaturesNV.rayTracingValidation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & physicalDeviceRelaxedLineRasterizationFeaturesIMG ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRelaxedLineRasterizationFeaturesIMG.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRelaxedLineRasterizationFeaturesIMG.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRelaxedLineRasterizationFeaturesIMG.relaxedLineRasterization ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM const & physicalDeviceRenderPassStripedFeaturesARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedFeaturesARM.renderPassStriped ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM const & physicalDeviceRenderPassStripedPropertiesARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedPropertiesARM.renderPassStripeGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRenderPassStripedPropertiesARM.maxRenderPassStripes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & physicalDeviceRepresentativeFragmentTestFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRepresentativeFragmentTestFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRepresentativeFragmentTestFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRepresentativeFragmentTestFeaturesNV.representativeFragmentTest ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesKHR const & physicalDeviceRobustness2FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesKHR.robustBufferAccess2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesKHR.robustImageAccess2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2FeaturesKHR.nullDescriptor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesKHR const & physicalDeviceRobustness2PropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesKHR.robustStorageBufferAccessSizeAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceRobustness2PropertiesKHR.robustUniformBufferAccessSizeAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT const & physicalDeviceSampleLocationsPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sampleLocationSampleCounts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.maxSampleLocationGridSize ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sampleLocationCoordinateRange[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.sampleLocationSubPixelBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSampleLocationsPropertiesEXT.variableSampleLocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties const & physicalDeviceSamplerFilterMinmaxProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.filterMinmaxSingleComponentFormats ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerFilterMinmaxProperties.filterMinmaxImageComponentMapping ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures const & physicalDeviceSamplerYcbcrConversionFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerYcbcrConversionFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerYcbcrConversionFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSamplerYcbcrConversionFeatures.samplerYcbcrConversion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures const & physicalDeviceScalarBlockLayoutFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceScalarBlockLayoutFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceScalarBlockLayoutFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceScalarBlockLayoutFeatures.scalarBlockLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM const & physicalDeviceSchedulingControlsFeaturesARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsFeaturesARM.schedulingControls ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM const & physicalDeviceSchedulingControlsPropertiesARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSchedulingControlsPropertiesARM.schedulingControlsFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & physicalDeviceSeparateDepthStencilLayoutsFeatures ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSeparateDepthStencilLayoutsFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSeparateDepthStencilLayoutsFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSeparateDepthStencilLayoutsFeatures.separateDepthStencilLayouts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShader64BitIndexingFeaturesEXT const & physicalDeviceShader64BitIndexingFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShader64BitIndexingFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShader64BitIndexingFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShader64BitIndexingFeaturesEXT.shader64BitIndexing ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAbortFeaturesKHR const & physicalDeviceShaderAbortFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAbortFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAbortFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAbortFeaturesKHR.shaderAbort ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAbortPropertiesKHR const & physicalDeviceShaderAbortPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAbortPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAbortPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAbortPropertiesKHR.maxShaderAbortMessageSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & physicalDeviceShaderAtomicFloat16VectorFeaturesNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat16VectorFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat16VectorFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat16VectorFeaturesNV.shaderFloat16VectorAtomics ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & physicalDeviceShaderAtomicFloat2FeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat16Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat16AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat16AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat32AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderBufferFloat64AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat16Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat16AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat16AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat32AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderSharedFloat64AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.shaderImageFloat32AtomicMinMax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloat2FeaturesEXT.sparseImageFloat32AtomicMinMax ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT const & physicalDeviceShaderAtomicFloatFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat32Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat32AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderBufferFloat64AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat32Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat32AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderSharedFloat64AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.shaderImageFloat32AtomicAdd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicFloatFeaturesEXT.sparseImageFloat32AtomicAdd ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features const & physicalDeviceShaderAtomicInt64Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.shaderBufferInt64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderAtomicInt64Features.shaderSharedInt64Atomics ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderBfloat16FeaturesKHR const & physicalDeviceShaderBfloat16FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderBfloat16FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderBfloat16FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderBfloat16FeaturesKHR.shaderBFloat16Type ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderBfloat16FeaturesKHR.shaderBFloat16DotProduct ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderBfloat16FeaturesKHR.shaderBFloat16CooperativeMatrix ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR const & physicalDeviceShaderClockFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.shaderSubgroupClock ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderClockFeaturesKHR.shaderDeviceClock ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderConstantDataFeaturesKHR const & physicalDeviceShaderConstantDataFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderConstantDataFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderConstantDataFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderConstantDataFeaturesKHR.shaderConstantData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & physicalDeviceShaderCoreBuiltinsFeaturesARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsFeaturesARM.shaderCoreBuiltins ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & physicalDeviceShaderCoreBuiltinsPropertiesARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsPropertiesARM.shaderCoreMask ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsPropertiesARM.shaderCoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreBuiltinsPropertiesARM.shaderWarpsPerCore ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD const & physicalDeviceShaderCoreProperties2AMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.shaderCoreFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCoreProperties2AMD.activeComputeUnitCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD const & physicalDeviceShaderCorePropertiesAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.shaderEngineCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.shaderArraysPerEngineCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.computeUnitsPerShaderArray ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.simdPerComputeUnit ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.wavefrontsPerSimd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.wavefrontSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.sgprsPerSimd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.minSgprAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.maxSgprAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.sgprAllocationGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.vgprsPerSimd ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.minVgprAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.maxVgprAllocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesAMD.vgprAllocationGranularity ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM const & physicalDeviceShaderCorePropertiesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesARM.pixelRate ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesARM.texelRate ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderCorePropertiesARM.fmaRate ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & + physicalDeviceShaderDemoteToHelperInvocationFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDemoteToHelperInvocationFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDemoteToHelperInvocationFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDemoteToHelperInvocationFeatures.shaderDemoteToHelperInvocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures const & physicalDeviceShaderDrawParametersFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDrawParametersFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDrawParametersFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderDrawParametersFeatures.shaderDrawParameters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & + physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.shaderEarlyAndLateFragmentTests ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX const & physicalDeviceShaderEnqueueFeaturesAMDX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueueFeaturesAMDX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueueFeaturesAMDX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueueFeaturesAMDX.shaderEnqueue ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueueFeaturesAMDX.shaderMeshEnqueue ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX const & physicalDeviceShaderEnqueuePropertiesAMDX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueuePropertiesAMDX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueuePropertiesAMDX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueuePropertiesAMDX.maxExecutionGraphDepth ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueuePropertiesAMDX.maxExecutionGraphShaderOutputNodes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueuePropertiesAMDX.maxExecutionGraphShaderPayloadSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueuePropertiesAMDX.maxExecutionGraphShaderPayloadCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueuePropertiesAMDX.executionGraphDispatchAddressAlignment ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueuePropertiesAMDX.maxExecutionGraphWorkgroupCount[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderEnqueuePropertiesAMDX.maxExecutionGraphWorkgroups ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures const & physicalDeviceShaderExpectAssumeFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderExpectAssumeFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderExpectAssumeFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderExpectAssumeFeatures.shaderExpectAssume ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features const & physicalDeviceShaderFloat16Int8Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.shaderFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat16Int8Features.shaderInt8 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat8FeaturesEXT const & physicalDeviceShaderFloat8FeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat8FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat8FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat8FeaturesEXT.shaderFloat8 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloat8FeaturesEXT.shaderFloat8CooperativeMatrix ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features const & physicalDeviceShaderFloatControls2Features ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloatControls2Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloatControls2Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFloatControls2Features.shaderFloatControls2 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFmaFeaturesKHR const & physicalDeviceShaderFmaFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFmaFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFmaFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFmaFeaturesKHR.shaderFmaFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFmaFeaturesKHR.shaderFmaFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderFmaFeaturesKHR.shaderFmaFloat64 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & physicalDeviceShaderImageAtomicInt64FeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.shaderImageInt64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageAtomicInt64FeaturesEXT.sparseImageInt64Atomics ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV const & physicalDeviceShaderImageFootprintFeaturesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageFootprintFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageFootprintFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderImageFootprintFeaturesNV.imageFootprint ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderInstrumentationFeaturesARM const & physicalDeviceShaderInstrumentationFeaturesARM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderInstrumentationFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderInstrumentationFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderInstrumentationFeaturesARM.shaderInstrumentation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderInstrumentationPropertiesARM const & physicalDeviceShaderInstrumentationPropertiesARM ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderInstrumentationPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderInstrumentationPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderInstrumentationPropertiesARM.numMetrics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderInstrumentationPropertiesARM.perBasicBlockGranularity ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures const & physicalDeviceShaderIntegerDotProductFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductFeatures.shaderIntegerDotProduct ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties const & physicalDeviceShaderIntegerDotProductProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct8BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct8BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct8BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct4x8BitPackedUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct4x8BitPackedSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct4x8BitPackedMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct16BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct16BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct16BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct32BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct32BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct32BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct64BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct64BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProduct64BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating8BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, + physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating16BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating32BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating64BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerDotProductProperties.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & physicalDeviceShaderIntegerFunctions2FeaturesINTEL ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerFunctions2FeaturesINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerFunctions2FeaturesINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderIntegerFunctions2FeaturesINTEL.shaderIntegerFunctions2 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderLongVectorFeaturesEXT const & physicalDeviceShaderLongVectorFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderLongVectorFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderLongVectorFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderLongVectorFeaturesEXT.longVector ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderLongVectorPropertiesEXT const & physicalDeviceShaderLongVectorPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderLongVectorPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderLongVectorPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderLongVectorPropertiesEXT.maxVectorComponents ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & physicalDeviceShaderMaximalReconvergenceFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderMaximalReconvergenceFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderMaximalReconvergenceFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderMaximalReconvergenceFeaturesKHR.shaderMaximalReconvergence ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE const & + physicalDeviceShaderMixedFloatDotProductFeaturesVALVE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderMixedFloatDotProductFeaturesVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderMixedFloatDotProductFeaturesVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderMixedFloatDotProductFeaturesVALVE.shaderMixedFloatDotProductFloat16AccFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderMixedFloatDotProductFeaturesVALVE.shaderMixedFloatDotProductFloat16AccFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderMixedFloatDotProductFeaturesVALVE.shaderMixedFloatDotProductBFloat16Acc ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderMixedFloatDotProductFeaturesVALVE.shaderMixedFloatDotProductFloat8AccFloat32 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & physicalDeviceShaderModuleIdentifierFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierFeaturesEXT.shaderModuleIdentifier ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & physicalDeviceShaderModuleIdentifierPropertiesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierPropertiesEXT.pNext ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderModuleIdentifierPropertiesEXT.shaderModuleIdentifierAlgorithmUUID[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT const & physicalDeviceShaderObjectFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderObjectFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderObjectFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderObjectFeaturesEXT.shaderObject ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT const & physicalDeviceShaderObjectPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderObjectPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderObjectPropertiesEXT.pNext ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderObjectPropertiesEXT.shaderBinaryUUID[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderObjectPropertiesEXT.shaderBinaryVersion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR const & physicalDeviceShaderQuadControlFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderQuadControlFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderQuadControlFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderQuadControlFeaturesKHR.shaderQuadControl ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & + physicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.shaderRelaxedExtendedInstruction ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & physicalDeviceShaderReplicatedCompositesFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderReplicatedCompositesFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderReplicatedCompositesFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderReplicatedCompositesFeaturesEXT.shaderReplicatedComposites ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV const & physicalDeviceShaderSMBuiltinsFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsFeaturesNV.shaderSMBuiltins ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV const & physicalDeviceShaderSMBuiltinsPropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.shaderSMCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSMBuiltinsPropertiesNV.shaderWarpsPerSM ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & physicalDeviceShaderSubgroupExtendedTypesFeatures ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupExtendedTypesFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupExtendedTypesFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupExtendedTypesFeatures.shaderSubgroupExtendedTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT const & physicalDeviceShaderSubgroupPartitionedFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupPartitionedFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupPartitionedFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupPartitionedFeaturesEXT.shaderSubgroupPartitioned ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures const & physicalDeviceShaderSubgroupRotateFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupRotateFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupRotateFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupRotateFeatures.shaderSubgroupRotate ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupRotateFeatures.shaderSubgroupRotateClustered ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & + physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.shaderSubgroupUniformControlFlow ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures const & physicalDeviceShaderTerminateInvocationFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTerminateInvocationFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTerminateInvocationFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTerminateInvocationFeatures.shaderTerminateInvocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT const & physicalDeviceShaderTileImageFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTileImageFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTileImageFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTileImageFeaturesEXT.shaderTileImageColorReadAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTileImageFeaturesEXT.shaderTileImageDepthReadAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTileImageFeaturesEXT.shaderTileImageStencilReadAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT const & physicalDeviceShaderTileImagePropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTileImagePropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTileImagePropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTileImagePropertiesEXT.shaderTileImageCoherentReadAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTileImagePropertiesEXT.shaderTileImageReadSampleFromPixelRateInvocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderTileImagePropertiesEXT.shaderTileImageReadFromHelperInvocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT const & + physicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT.shaderUniformBufferUnsizedArray ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderUntypedPointersFeaturesKHR const & physicalDeviceShaderUntypedPointersFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderUntypedPointersFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderUntypedPointersFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShaderUntypedPointersFeaturesKHR.shaderUntypedPointers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV const & physicalDeviceShadingRateImageFeaturesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.shadingRateImage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImageFeaturesNV.shadingRateCoarseSampleOrder ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV const & physicalDeviceShadingRateImagePropertiesNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.shadingRateTexelSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.shadingRatePaletteSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceShadingRateImagePropertiesNV.shadingRateMaxCoarseSamples ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 const & physicalDeviceSparseImageFormatInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.format ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.type ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.samples ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.usage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSparseImageFormatInfo2.tiling ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties const & physicalDeviceSubgroupProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.subgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.supportedStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.supportedOperations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupProperties.quadOperationsInAllStages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures const & physicalDeviceSubgroupSizeControlFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.subgroupSizeControl ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlFeatures.computeFullSubgroups ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties const & physicalDeviceSubgroupSizeControlProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.minSubgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.maxSubgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.maxComputeWorkgroupSubgroups ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubgroupSizeControlProperties.requiredSubgroupSizeStages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & physicalDeviceSubpassMergeFeedbackFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassMergeFeedbackFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassMergeFeedbackFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassMergeFeedbackFeaturesEXT.subpassMergeFeedback ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI const & physicalDeviceSubpassShadingFeaturesHUAWEI ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingFeaturesHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingFeaturesHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingFeaturesHUAWEI.subpassShading ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI const & physicalDeviceSubpassShadingPropertiesHUAWEI ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingPropertiesHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingPropertiesHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSubpassShadingPropertiesHUAWEI.maxSubpassShadingWorkgroupSizeAspectRatio ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR const & physicalDeviceSurfaceInfo2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSurfaceInfo2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSurfaceInfo2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSurfaceInfo2KHR.surface ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesKHR const & physicalDeviceSwapchainMaintenance1FeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSwapchainMaintenance1FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSwapchainMaintenance1FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSwapchainMaintenance1FeaturesKHR.swapchainMaintenance1 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features const & physicalDeviceSynchronization2Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSynchronization2Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSynchronization2Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceSynchronization2Features.synchronization2 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTensorFeaturesARM const & physicalDeviceTensorFeaturesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorFeaturesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorFeaturesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorFeaturesARM.tensorNonPacked ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorFeaturesARM.shaderTensorAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorFeaturesARM.shaderStorageTensorArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorFeaturesARM.shaderStorageTensorArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorFeaturesARM.descriptorBindingStorageTensorUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorFeaturesARM.tensors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTensorPropertiesARM const & physicalDeviceTensorPropertiesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxTensorDimensionCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxTensorElements ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxPerDimensionTensorElements ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxTensorStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxTensorSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxTensorShaderAccessArrayLength ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxTensorShaderAccessSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxDescriptorSetStorageTensors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxPerStageDescriptorSetStorageTensors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxDescriptorSetUpdateAfterBindStorageTensors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.maxPerStageDescriptorUpdateAfterBindStorageTensors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.shaderStorageTensorArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTensorPropertiesARM.shaderTensorSupportedStages ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & physicalDeviceTexelBufferAlignmentFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentFeaturesEXT.texelBufferAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties const & physicalDeviceTexelBufferAlignmentProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.storageTexelBufferOffsetAlignmentBytes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.storageTexelBufferOffsetSingleTexelAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.uniformTexelBufferOffsetAlignmentBytes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTexelBufferAlignmentProperties.uniformTexelBufferOffsetSingleTexelAlignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTC3DFeaturesEXT const & physicalDeviceTextureCompressionASTC3DFeaturesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTC3DFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTC3DFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTC3DFeaturesEXT.textureCompressionASTC_3D ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures const & physicalDeviceTextureCompressionASTCHDRFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTCHDRFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTCHDRFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTextureCompressionASTCHDRFeatures.textureCompressionASTC_HDR ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileMemoryHeapFeaturesQCOM const & physicalDeviceTileMemoryHeapFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileMemoryHeapFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileMemoryHeapFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileMemoryHeapFeaturesQCOM.tileMemoryHeap ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileMemoryHeapPropertiesQCOM const & physicalDeviceTileMemoryHeapPropertiesQCOM ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileMemoryHeapPropertiesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileMemoryHeapPropertiesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileMemoryHeapPropertiesQCOM.queueSubmitBoundary ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileMemoryHeapPropertiesQCOM.tileBufferTransfers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM const & physicalDeviceTilePropertiesFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTilePropertiesFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTilePropertiesFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTilePropertiesFeaturesQCOM.tileProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingFeaturesQCOM const & physicalDeviceTileShadingFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShading ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingFragmentStage ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingDepthAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingStencilAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingSampledAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingPerTileDraw ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingPerTileDispatch ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingDispatchTile ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingApron ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingAnisotropicApron ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingAtomicOps ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingFeaturesQCOM.tileShadingImageProcessing ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingPropertiesQCOM const & physicalDeviceTileShadingPropertiesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.maxApronSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.preferNonCoherent ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.tileGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTileShadingPropertiesQCOM.maxTileShadingRate ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures const & physicalDeviceTimelineSemaphoreFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreFeatures.timelineSemaphore ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties const & physicalDeviceTimelineSemaphoreProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTimelineSemaphoreProperties.maxTimelineSemaphoreValueDifference ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties const & physicalDeviceToolProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.pNext ); + for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.name[i] ); + } + for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.version[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.purposes ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.description[i] ); + } + for ( size_t i = 0; i < VK_MAX_EXTENSION_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceToolProperties.layer[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT const & physicalDeviceTransformFeedbackFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.transformFeedback ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackFeaturesEXT.geometryStreams ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT const & physicalDeviceTransformFeedbackPropertiesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackStreams ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBufferSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackStreamDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBufferDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.maxTransformFeedbackBufferDataStride ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackQueries ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackStreamsLinesTriangles ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackRasterizationStreamSelect ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceTransformFeedbackPropertiesEXT.transformFeedbackDraw ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceUnifiedImageLayoutsFeaturesKHR const & physicalDeviceUnifiedImageLayoutsFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUnifiedImageLayoutsFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUnifiedImageLayoutsFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUnifiedImageLayoutsFeaturesKHR.unifiedImageLayouts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUnifiedImageLayoutsFeaturesKHR.unifiedImageLayoutsVideo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures const & physicalDeviceUniformBufferStandardLayoutFeatures ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUniformBufferStandardLayoutFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUniformBufferStandardLayoutFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceUniformBufferStandardLayoutFeatures.uniformBufferStandardLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures const & physicalDeviceVariablePointersFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.variablePointersStorageBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVariablePointersFeatures.variablePointers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures const & physicalDeviceVertexAttributeDivisorFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorFeatures.vertexAttributeInstanceRateDivisor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorFeatures.vertexAttributeInstanceRateZeroDivisor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties const & physicalDeviceVertexAttributeDivisorProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorProperties.maxVertexAttribDivisor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorProperties.supportsNonZeroFirstInstance ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & physicalDeviceVertexAttributeDivisorPropertiesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeDivisorPropertiesEXT.maxVertexAttribDivisor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeRobustnessFeaturesEXT const & physicalDeviceVertexAttributeRobustnessFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeRobustnessFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeRobustnessFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexAttributeRobustnessFeaturesEXT.vertexAttributeRobustness ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & physicalDeviceVertexInputDynamicStateFeaturesEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexInputDynamicStateFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexInputDynamicStateFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVertexInputDynamicStateFeaturesEXT.vertexInputDynamicState ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoDecodeVP9FeaturesKHR const & physicalDeviceVideoDecodeVP9FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoDecodeVP9FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoDecodeVP9FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoDecodeVP9FeaturesKHR.videoDecodeVP9 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeAV1FeaturesKHR const & physicalDeviceVideoEncodeAV1FeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeAV1FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeAV1FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeAV1FeaturesKHR.videoEncodeAV1 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR const & physicalDeviceVideoEncodeIntraRefreshFeaturesKHR ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeIntraRefreshFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeIntraRefreshFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeIntraRefreshFeaturesKHR.videoEncodeIntraRefresh ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR const & videoProfileInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.videoCodecOperation ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.chromaSubsampling ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.lumaBitDepth ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileInfoKHR.chromaBitDepth ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & physicalDeviceVideoEncodeQualityLevelInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeQualityLevelInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeQualityLevelInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeQualityLevelInfoKHR.pVideoProfile ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeQualityLevelInfoKHR.qualityLevel ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR const & physicalDeviceVideoEncodeQuantizationMapFeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeQuantizationMapFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeQuantizationMapFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeQuantizationMapFeaturesKHR.videoEncodeQuantizationMap ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE const & physicalDeviceVideoEncodeRgbConversionFeaturesVALVE ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeRgbConversionFeaturesVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeRgbConversionFeaturesVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoEncodeRgbConversionFeaturesVALVE.videoEncodeRgbConversion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR const & physicalDeviceVideoFormatInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoFormatInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoFormatInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoFormatInfoKHR.imageUsage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR const & physicalDeviceVideoMaintenance1FeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoMaintenance1FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoMaintenance1FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoMaintenance1FeaturesKHR.videoMaintenance1 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance2FeaturesKHR const & physicalDeviceVideoMaintenance2FeaturesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoMaintenance2FeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoMaintenance2FeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVideoMaintenance2FeaturesKHR.videoMaintenance2 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features const & physicalDeviceVulkan11Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.storageBuffer16BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.uniformAndStorageBuffer16BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.storagePushConstant16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.storageInputOutput16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.multiview ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.multiviewGeometryShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.multiviewTessellationShader ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.variablePointersStorageBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.variablePointers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.protectedMemory ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.samplerYcbcrConversion ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Features.shaderDrawParameters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties const & physicalDeviceVulkan11Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.pNext ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceUUID[i] ); + } + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.driverUUID[i] ); + } + for ( size_t i = 0; i < VK_LUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceLUID[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceNodeMask ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.deviceLUIDValid ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupSupportedStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupSupportedOperations ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.subgroupQuadOperationsInAllStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.pointClippingBehavior ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxMultiviewViewCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxMultiviewInstanceIndex ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.protectedNoFault ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxPerSetDescriptors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan11Properties.maxMemoryAllocationSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features const & physicalDeviceVulkan12Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.samplerMirrorClampToEdge ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.drawIndirectCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.storageBuffer8BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.uniformAndStorageBuffer8BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.storagePushConstant8 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderBufferInt64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderSharedInt64Atomics ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderInt8 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderInputAttachmentArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayDynamicIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderUniformBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderSampledImageArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageImageArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderInputAttachmentArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderUniformTexelBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderStorageTexelBufferArrayNonUniformIndexing ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingUniformBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingSampledImageUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingStorageImageUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingStorageBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingUniformTexelBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingStorageTexelBufferUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingUpdateUnusedWhilePending ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingPartiallyBound ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.descriptorBindingVariableDescriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.runtimeDescriptorArray ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.samplerFilterMinmax ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.scalarBlockLayout ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.imagelessFramebuffer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.uniformBufferStandardLayout ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderSubgroupExtendedTypes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.separateDepthStencilLayouts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.hostQueryReset ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.timelineSemaphore ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.bufferDeviceAddress ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.bufferDeviceAddressCaptureReplay ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.bufferDeviceAddressMultiDevice ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.vulkanMemoryModel ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.vulkanMemoryModelDeviceScope ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.vulkanMemoryModelAvailabilityVisibilityChains ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderOutputViewportIndex ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.shaderOutputLayer ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Features.subgroupBroadcastDynamicId ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties const & physicalDeviceVulkan12Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.driverID ); + for ( size_t i = 0; i < VK_MAX_DRIVER_NAME_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.driverName[i] ); + } + for ( size_t i = 0; i < VK_MAX_DRIVER_INFO_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.driverInfo[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.conformanceVersion ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.denormBehaviorIndependence ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.roundingModeIndependence ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSignedZeroInfNanPreserveFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSignedZeroInfNanPreserveFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSignedZeroInfNanPreserveFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormPreserveFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormPreserveFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormPreserveFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormFlushToZeroFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormFlushToZeroFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderDenormFlushToZeroFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTEFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTEFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTEFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTZFloat16 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTZFloat32 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderRoundingModeRTZFloat64 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxUpdateAfterBindDescriptorsInAllPools ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderUniformBufferArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderSampledImageArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderStorageBufferArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderStorageImageArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.shaderInputAttachmentArrayNonUniformIndexingNative ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.robustBufferAccessUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.quadDivergentImplicitLod ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindSampledImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindStorageImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageDescriptorUpdateAfterBindInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxPerStageUpdateAfterBindResources ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindSamplers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindSampledImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindStorageImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxDescriptorSetUpdateAfterBindInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.supportedDepthResolveModes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.supportedStencilResolveModes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.independentResolveNone ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.independentResolve ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.filterMinmaxSingleComponentFormats ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.filterMinmaxImageComponentMapping ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.maxTimelineSemaphoreValueDifference ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan12Properties.framebufferIntegerColorSampleCounts ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features const & physicalDeviceVulkan13Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.robustImageAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.inlineUniformBlock ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.descriptorBindingInlineUniformBlockUpdateAfterBind ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.pipelineCreationCacheControl ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.privateData ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderDemoteToHelperInvocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderTerminateInvocation ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.subgroupSizeControl ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.computeFullSubgroups ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.synchronization2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.textureCompressionASTC_HDR ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderZeroInitializeWorkgroupMemory ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.dynamicRendering ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.shaderIntegerDotProduct ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Features.maintenance4 ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties const & physicalDeviceVulkan13Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.minSubgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxSubgroupSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxComputeWorkgroupSubgroups ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.requiredSubgroupSizeStages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxInlineUniformBlockSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxPerStageDescriptorInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxDescriptorSetInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxInlineUniformTotalSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct8BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct8BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct8BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct4x8BitPackedUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct4x8BitPackedSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct4x8BitPackedMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct16BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct16BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct16BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct32BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct32BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct32BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct64BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct64BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProduct64BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating8BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating16BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating32BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating64BitSignedAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.storageTexelBufferOffsetAlignmentBytes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.storageTexelBufferOffsetSingleTexelAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.uniformTexelBufferOffsetAlignmentBytes ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.uniformTexelBufferOffsetSingleTexelAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan13Properties.maxBufferSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features const & physicalDeviceVulkan14Features ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.globalPriorityQuery ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.shaderSubgroupRotate ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.shaderSubgroupRotateClustered ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.shaderFloatControls2 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.shaderExpectAssume ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.rectangularLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.bresenhamLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.smoothLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.stippledRectangularLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.stippledBresenhamLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.stippledSmoothLines ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.vertexAttributeInstanceRateDivisor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.vertexAttributeInstanceRateZeroDivisor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.indexTypeUint8 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.dynamicRenderingLocalRead ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.maintenance5 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.maintenance6 ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.pipelineProtectedAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.pipelineRobustness ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.hostImageCopy ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Features.pushDescriptor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties const & physicalDeviceVulkan14Properties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.lineSubPixelPrecisionBits ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.maxVertexAttribDivisor ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.supportsNonZeroFirstInstance ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.maxPushDescriptors ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.dynamicRenderingLocalReadDepthStencilAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.dynamicRenderingLocalReadMultisampledAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.earlyFragmentMultisampleCoverageAfterSampleCounting ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.earlyFragmentSampleMaskTestBeforeSampleCounting ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.depthStencilSwizzleOneSupport ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.polygonModePointSize ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.nonStrictSinglePixelWideLinesUseParallelogram ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.nonStrictWideLinesUseParallelogram ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.blockTexelViewCompatibleMultipleLayers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.maxCombinedImageSamplerDescriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.fragmentShadingRateClampCombinerInputs ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.defaultRobustnessStorageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.defaultRobustnessUniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.defaultRobustnessVertexInputs ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.defaultRobustnessImages ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.copySrcLayoutCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.pCopySrcLayouts ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.copyDstLayoutCount ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.pCopyDstLayouts ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.optimalTilingLayoutUUID[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkan14Properties.identicalMemoryTypeRequirements ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures const & physicalDeviceVulkanMemoryModelFeatures ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModel ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModelDeviceScope ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceVulkanMemoryModelFeatures.vulkanMemoryModelAvailabilityVisibilityChains ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & + physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayoutScalarBlockLayout ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout8BitAccess ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.workgroupMemoryExplicitLayout16BitAccess ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & physicalDeviceYcbcr2Plane444FormatsFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcr2Plane444FormatsFeaturesEXT.ycbcr2plane444Formats ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM const & physicalDeviceYcbcrDegammaFeaturesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrDegammaFeaturesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrDegammaFeaturesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrDegammaFeaturesQCOM.ycbcrDegamma ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT const & physicalDeviceYcbcrImageArraysFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrImageArraysFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrImageArraysFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceYcbcrImageArraysFeaturesEXT.ycbcrImageArrays ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT const & physicalDeviceZeroInitializeDeviceMemoryFeaturesEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.zeroInitializeDeviceMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & physicalDeviceZeroInitializeWorkgroupMemoryFeatures ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeWorkgroupMemoryFeatures.sType ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeWorkgroupMemoryFeatures.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, physicalDeviceZeroInitializeWorkgroupMemoryFeatures.shaderZeroInitializeWorkgroupMemory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR const & pipelineBinaryKeyKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryKeyKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryKeyKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryKeyKHR.keySize ); + for ( size_t i = 0; i < VK_MAX_PIPELINE_BINARY_KEY_SIZE_KHR; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryKeyKHR.key[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR const & pipelineBinaryDataKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryDataKHR.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryDataKHR.pData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR const & pipelineBinaryKeysAndDataKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryKeysAndDataKHR.binaryCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryKeysAndDataKHR.pPipelineBinaryKeys ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryKeysAndDataKHR.pPipelineBinaryData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR const & pipelineCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreateInfoKHR.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR const & pipelineBinaryCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryCreateInfoKHR.pKeysAndDataInfo ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryCreateInfoKHR.pipeline ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryCreateInfoKHR.pPipelineCreateInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR const & pipelineBinaryDataInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryDataInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryDataInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryDataInfoKHR.pipelineBinary ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR const & pipelineBinaryHandlesInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryHandlesInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryHandlesInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryHandlesInfoKHR.pipelineBinaryCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryHandlesInfoKHR.pPipelineBinaries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR const & pipelineBinaryInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryInfoKHR.binaryCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineBinaryInfoKHR.pPipelineBinaries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo const & pipelineCacheCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.initialDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheCreateInfo.pInitialData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionDataGraphQCOM const & pipelineCacheHeaderVersionDataGraphQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionDataGraphQCOM.headerSize ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionDataGraphQCOM.headerVersion ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionDataGraphQCOM.cacheType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionDataGraphQCOM.cacheVersion ); + for ( size_t i = 0; i < VK_DATA_GRAPH_MODEL_TOOLCHAIN_VERSION_LENGTH_QCOM; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionDataGraphQCOM.toolchainVersion[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne const & pipelineCacheHeaderVersionOne ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.headerSize ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.headerVersion ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.vendorID ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.deviceID ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineCacheHeaderVersionOne.pipelineCacheUUID[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT const & pipelineColorBlendAdvancedStateCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.srcPremultiplied ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.dstPremultiplied ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorBlendAdvancedStateCreateInfoEXT.blendOverlap ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT const & pipelineColorWriteCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineColorWriteCreateInfoEXT.pColorWriteEnables ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD const & pipelineCompilerControlCreateInfoAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCompilerControlCreateInfoAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCompilerControlCreateInfoAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCompilerControlCreateInfoAMD.compilerControlFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV const & pipelineCoverageModulationStateCreateInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.coverageModulationMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.coverageModulationTableEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.coverageModulationTableCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageModulationStateCreateInfoNV.pCoverageModulationTable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV const & pipelineCoverageReductionStateCreateInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageReductionStateCreateInfoNV.coverageReductionMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV const & pipelineCoverageToColorStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.coverageToColorEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCoverageToColorStateCreateInfoNV.coverageToColorLocation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo const & pipelineCreateFlags2CreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreateFlags2CreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreateFlags2CreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreateFlags2CreateInfo.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback const & pipelineCreationFeedback ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedback.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedback.duration ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo const & pipelineCreationFeedbackCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pPipelineCreationFeedback ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pipelineStageCreationFeedbackCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineCreationFeedbackCreateInfo.pPipelineStageCreationFeedbacks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT const & pipelineDiscardRectangleStateCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.discardRectangleMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.discardRectangleCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineDiscardRectangleStateCreateInfoEXT.pDiscardRectangles ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR const & pipelineExecutableInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.pipeline ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInfoKHR.executableIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR const & pipelineExecutableInternalRepresentationKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.pNext ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.name[i] ); + } + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.description[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.isText ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutableInternalRepresentationKHR.pData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR const & pipelineExecutablePropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.stages ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.name[i] ); + } + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.description[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, pipelineExecutablePropertiesKHR.subgroupSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineFragmentDensityMapLayeredCreateInfoVALVE const & pipelineFragmentDensityMapLayeredCreateInfoVALVE ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentDensityMapLayeredCreateInfoVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentDensityMapLayeredCreateInfoVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentDensityMapLayeredCreateInfoVALVE.maxFragmentDensityMapLayers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV const & pipelineFragmentShadingRateEnumStateCreateInfoNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.shadingRateType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.shadingRate ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateEnumStateCreateInfoNV.combinerOps[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR const & pipelineFragmentShadingRateStateCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.fragmentSize ); + for ( size_t i = 0; i < 2; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelineFragmentShadingRateStateCreateInfoKHR.combinerOps[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV const & pipelineIndirectDeviceAddressInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineIndirectDeviceAddressInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineIndirectDeviceAddressInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineIndirectDeviceAddressInfoNV.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineIndirectDeviceAddressInfoNV.pipeline ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineInfoKHR const & pipelineInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineInfoKHR.pipeline ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo const & pipelineLayoutCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.setLayoutCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pSetLayouts ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pushConstantRangeCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineLayoutCreateInfo.pPushConstantRanges ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT const & pipelinePropertiesIdentifierEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelinePropertiesIdentifierEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelinePropertiesIdentifierEXT.pNext ); + for ( size_t i = 0; i < VK_UUID_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, pipelinePropertiesIdentifierEXT.pipelineIdentifier[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT const & pipelineRasterizationConservativeStateCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.conservativeRasterizationMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationConservativeStateCreateInfoEXT.extraPrimitiveOverestimationSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT const & pipelineRasterizationDepthClipStateCreateInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationDepthClipStateCreateInfoEXT.depthClipEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo const & pipelineRasterizationLineStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfo.lineRasterizationMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfo.stippledLineEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfo.lineStippleFactor ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationLineStateCreateInfo.lineStipplePattern ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT const & + pipelineRasterizationProvokingVertexStateCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationProvokingVertexStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationProvokingVertexStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationProvokingVertexStateCreateInfoEXT.provokingVertexMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD const & pipelineRasterizationStateRasterizationOrderAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateRasterizationOrderAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateRasterizationOrderAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateRasterizationOrderAMD.rasterizationOrder ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT const & pipelineRasterizationStateStreamCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRasterizationStateStreamCreateInfoEXT.rasterizationStream ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo const & pipelineRenderingCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.viewMask ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.pColorAttachmentFormats ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.depthAttachmentFormat ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRenderingCreateInfo.stencilAttachmentFormat ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV const & pipelineRepresentativeFragmentTestStateCreateInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRepresentativeFragmentTestStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRepresentativeFragmentTestStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRepresentativeFragmentTestStateCreateInfoNV.representativeFragmentTestEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo const & pipelineRobustnessCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfo.storageBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfo.uniformBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfo.vertexInputs ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineRobustnessCreateInfo.images ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT const & pipelineSampleLocationsStateCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.sampleLocationsEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineSampleLocationsStateCreateInfoEXT.sampleLocationsInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT const & pipelineShaderStageModuleIdentifierCreateInfoEXT ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageModuleIdentifierCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageModuleIdentifierCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageModuleIdentifierCreateInfoEXT.identifierSize ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageModuleIdentifierCreateInfoEXT.pIdentifier ); + return seed; + } + }; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX const & pipelineShaderStageNodeCreateInfoAMDX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageNodeCreateInfoAMDX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageNodeCreateInfoAMDX.pNext ); + for ( char const * p = pipelineShaderStageNodeCreateInfoAMDX.pName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageNodeCreateInfoAMDX.index ); + return seed; + } + }; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo const & pipelineShaderStageRequiredSubgroupSizeCreateInfo ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageRequiredSubgroupSizeCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageRequiredSubgroupSizeCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineShaderStageRequiredSubgroupSizeCreateInfo.requiredSubgroupSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo const & pipelineTessellationDomainOriginStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationDomainOriginStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationDomainOriginStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineTessellationDomainOriginStateCreateInfo.domainOrigin ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription const & vertexInputBindingDivisorDescription ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDivisorDescription.binding ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDivisorDescription.divisor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo const & pipelineVertexInputDivisorStateCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfo.vertexBindingDivisorCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineVertexInputDivisorStateCreateInfo.pVertexBindingDivisors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV const & pipelineViewportCoarseSampleOrderStateCreateInfoNV ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.sampleOrderType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.customSampleOrderCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportCoarseSampleOrderStateCreateInfoNV.pCustomSampleOrders ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportDepthClampControlCreateInfoEXT const & pipelineViewportDepthClampControlCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClampControlCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClampControlCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClampControlCreateInfoEXT.depthClampMode ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClampControlCreateInfoEXT.pDepthClampRange ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT const & pipelineViewportDepthClipControlCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClipControlCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClipControlCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportDepthClipControlCreateInfoEXT.negativeOneToOne ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV const & pipelineViewportExclusiveScissorStateCreateInfoNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.exclusiveScissorCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportExclusiveScissorStateCreateInfoNV.pExclusiveScissors ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV const & shadingRatePaletteNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shadingRatePaletteNV.shadingRatePaletteEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, shadingRatePaletteNV.pShadingRatePaletteEntries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV const & pipelineViewportShadingRateImageStateCreateInfoNV ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.shadingRateImageEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.viewportCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportShadingRateImageStateCreateInfoNV.pShadingRatePalettes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ViewportSwizzleNV const & viewportSwizzleNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.x ); + VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.y ); + VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.z ); + VULKAN_HPP_HASH_COMBINE( seed, viewportSwizzleNV.w ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV const & pipelineViewportSwizzleStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.viewportCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportSwizzleStateCreateInfoNV.pViewportSwizzles ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ViewportWScalingNV const & viewportWScalingNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, viewportWScalingNV.xcoeff ); + VULKAN_HPP_HASH_COMBINE( seed, viewportWScalingNV.ycoeff ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV const & pipelineViewportWScalingStateCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.viewportWScalingEnable ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.viewportCount ); + VULKAN_HPP_HASH_COMBINE( seed, pipelineViewportWScalingStateCreateInfoNV.pViewportWScalings ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_GGP ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP const & presentFrameTokenGGP ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentFrameTokenGGP.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentFrameTokenGGP.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentFrameTokenGGP.frameToken ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_GGP*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentId2KHR const & presentId2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentId2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentId2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentId2KHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentId2KHR.pPresentIds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentIdKHR const & presentIdKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentIdKHR.pPresentIds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentInfoKHR const & presentInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.waitSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pWaitSemaphores ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pSwapchains ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pImageIndices ); + VULKAN_HPP_HASH_COMBINE( seed, presentInfoKHR.pResults ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RectLayerKHR const & rectLayerKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rectLayerKHR.offset ); + VULKAN_HPP_HASH_COMBINE( seed, rectLayerKHR.extent ); + VULKAN_HPP_HASH_COMBINE( seed, rectLayerKHR.layer ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentRegionKHR const & presentRegionKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentRegionKHR.rectangleCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentRegionKHR.pRectangles ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentRegionsKHR const & presentRegionsKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentRegionsKHR.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE const & presentTimeGOOGLE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentTimeGOOGLE.presentID ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimeGOOGLE.desiredPresentTime ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE const & presentTimesInfoGOOGLE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimesInfoGOOGLE.pTimes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentTimingInfoEXT const & presentTimingInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentTimingInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingInfoEXT.targetTime ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingInfoEXT.timeDomainId ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingInfoEXT.presentStageQueries ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingInfoEXT.targetTimeDomainPresentStage ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentTimingSurfaceCapabilitiesEXT const & presentTimingSurfaceCapabilitiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentTimingSurfaceCapabilitiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingSurfaceCapabilitiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingSurfaceCapabilitiesEXT.presentTimingSupported ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingSurfaceCapabilitiesEXT.presentAtAbsoluteTimeSupported ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingSurfaceCapabilitiesEXT.presentAtRelativeTimeSupported ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingSurfaceCapabilitiesEXT.presentStageQueries ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentTimingsInfoEXT const & presentTimingsInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentTimingsInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingsInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingsInfoEXT.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, presentTimingsInfoEXT.pTimingInfos ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PresentWait2InfoKHR const & presentWait2InfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, presentWait2InfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, presentWait2InfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, presentWait2InfoKHR.presentId ); + VULKAN_HPP_HASH_COMBINE( seed, presentWait2InfoKHR.timeout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo const & privateDataSlotCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, privateDataSlotCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, privateDataSlotCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, privateDataSlotCreateInfo.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo const & protectedSubmitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, protectedSubmitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, protectedSubmitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, protectedSubmitInfo.protectedSubmit ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PushConstantBankInfoNV const & pushConstantBankInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pushConstantBankInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantBankInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantBankInfoNV.bank ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PushConstantsInfo const & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pushConstantsInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantsInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantsInfo.layout ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantsInfo.stageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantsInfo.offset ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantsInfo.size ); + VULKAN_HPP_HASH_COMBINE( seed, pushConstantsInfo.pValues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PushDataInfoEXT const & pushDataInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pushDataInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pushDataInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pushDataInfoEXT.offset ); + VULKAN_HPP_HASH_COMBINE( seed, pushDataInfoEXT.data ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteDescriptorSet const & writeDescriptorSet ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.dstSet ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.dstBinding ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.dstArrayElement ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.descriptorCount ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.descriptorType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pImageInfo ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pBufferInfo ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSet.pTexelBufferView ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PushDescriptorSetInfo const & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetInfo.stageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetInfo.layout ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetInfo.set ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetInfo.descriptorWriteCount ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetInfo.pDescriptorWrites ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo const & pushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetWithTemplateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetWithTemplateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetWithTemplateInfo.descriptorUpdateTemplate ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetWithTemplateInfo.layout ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetWithTemplateInfo.set ); + VULKAN_HPP_HASH_COMBINE( seed, pushDescriptorSetWithTemplateInfo.pData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV const & queryLowLatencySupportNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queryLowLatencySupportNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queryLowLatencySupportNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queryLowLatencySupportNV.pQueriedLowLatencyData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo const & queryPoolCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.queryType ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.queryCount ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolCreateInfo.pipelineStatistics ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR const & queryPoolPerformanceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.queueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.counterIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceCreateInfoKHR.pCounterIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL const & queryPoolPerformanceQueryCreateInfoINTEL ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceQueryCreateInfoINTEL.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceQueryCreateInfoINTEL.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolPerformanceQueryCreateInfoINTEL.performanceCountersSampling ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR const & queryPoolVideoEncodeFeedbackCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queryPoolVideoEncodeFeedbackCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolVideoEncodeFeedbackCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queryPoolVideoEncodeFeedbackCreateInfoKHR.encodeFeedbackFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV const & queueFamilyCheckpointProperties2NV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointProperties2NV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointProperties2NV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointProperties2NV.checkpointExecutionStageMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV const & queueFamilyCheckpointPropertiesNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointPropertiesNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointPropertiesNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyCheckpointPropertiesNV.checkpointExecutionStageMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyDataGraphProcessingEnginePropertiesARM const & queueFamilyDataGraphProcessingEnginePropertiesARM ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyDataGraphProcessingEnginePropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyDataGraphProcessingEnginePropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyDataGraphProcessingEnginePropertiesARM.foreignSemaphoreHandleTypes ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyDataGraphProcessingEnginePropertiesARM.foreignMemoryHandleTypes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyDataGraphPropertiesARM const & queueFamilyDataGraphPropertiesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyDataGraphPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyDataGraphPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyDataGraphPropertiesARM.engine ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyDataGraphPropertiesARM.operation ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties const & queueFamilyGlobalPriorityProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityProperties.priorityCount ); + for ( size_t i = 0; i < VK_MAX_GLOBAL_PRIORITY_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyGlobalPriorityProperties.priorities[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::QueueFamilyOwnershipTransferPropertiesKHR const & queueFamilyOwnershipTransferPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyOwnershipTransferPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyOwnershipTransferPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyOwnershipTransferPropertiesKHR.optimalImageTransferToQueueFamilies ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyProperties const & queueFamilyProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.queueFlags ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.queueCount ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.timestampValidBits ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties.minImageTransferGranularity ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 const & queueFamilyProperties2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyProperties2.queueFamilyProperties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR const & queueFamilyQueryResultStatusPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyQueryResultStatusPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyQueryResultStatusPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyQueryResultStatusPropertiesKHR.queryResultStatusSupport ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR const & queueFamilyVideoPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyVideoPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyVideoPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, queueFamilyVideoPropertiesKHR.videoCodecOperations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RayTracingPipelineClusterAccelerationStructureCreateInfoNV const & + rayTracingPipelineClusterAccelerationStructureCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineClusterAccelerationStructureCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineClusterAccelerationStructureCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineClusterAccelerationStructureCreateInfoNV.allowClusterAccelerationStructure ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR const & rayTracingShaderGroupCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.type ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.generalShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.closestHitShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.anyHitShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.intersectionShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoKHR.pShaderGroupCaptureReplayHandle ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR const & rayTracingPipelineInterfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.maxPipelineRayPayloadSize ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineInterfaceCreateInfoKHR.maxPipelineRayHitAttributeSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR const & rayTracingPipelineCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.stageCount ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pStages ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.groupCount ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pGroups ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.maxPipelineRayRecursionDepth ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pLibraryInfo ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pLibraryInterface ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.pDynamicState ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.layout ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.basePipelineHandle ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoKHR.basePipelineIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV const & rayTracingShaderGroupCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.type ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.generalShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.closestHitShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.anyHitShader ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingShaderGroupCreateInfoNV.intersectionShader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV const & rayTracingPipelineCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.flags ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.stageCount ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.pStages ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.groupCount ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.pGroups ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.maxRecursionDepth ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.layout ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.basePipelineHandle ); + VULKAN_HPP_HASH_COMBINE( seed, rayTracingPipelineCreateInfoNV.basePipelineIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE const & refreshCycleDurationGOOGLE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, refreshCycleDurationGOOGLE.refreshDuration ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR const & releaseCapturedPipelineDataInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, releaseCapturedPipelineDataInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, releaseCapturedPipelineDataInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, releaseCapturedPipelineDataInfoKHR.pipeline ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoKHR const & releaseSwapchainImagesInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, releaseSwapchainImagesInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, releaseSwapchainImagesInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, releaseSwapchainImagesInfoKHR.swapchain ); + VULKAN_HPP_HASH_COMBINE( seed, releaseSwapchainImagesInfoKHR.imageIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, releaseSwapchainImagesInfoKHR.pImageIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo const & renderPassAttachmentBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassAttachmentBeginInfo.pAttachments ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassBeginInfo const & renderPassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.renderPass ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.framebuffer ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.renderArea ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.clearValueCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassBeginInfo.pClearValues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassDescription const & subpassDescription ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.flags ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.inputAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pResolveAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pDepthStencilAttachment ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.preserveAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription.pPreserveAttachments ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassDependency const & subpassDependency ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.srcSubpass ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dstSubpass ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency.dependencyFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo const & renderPassCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.subpassCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pSubpasses ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.dependencyCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo.pDependencies ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassDescription2 const & subpassDescription2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.flags ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pipelineBindPoint ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.viewMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.inputAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pInputAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pResolveAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pDepthStencilAttachment ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.preserveAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescription2.pPreserveAttachments ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassDependency2 const & subpassDependency2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.srcSubpass ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dstSubpass ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.dependencyFlags ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDependency2.viewOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 const & renderPassCreateInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.flags ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.attachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.subpassCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pSubpasses ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.dependencyCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pDependencies ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.correlatedViewMaskCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreateInfo2.pCorrelatedViewMasks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT const & renderPassCreationControlEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationControlEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationControlEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationControlEXT.disallowMerging ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT const & renderPassCreationFeedbackInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationFeedbackInfoEXT.postMergeSubpassCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT const & renderPassCreationFeedbackCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationFeedbackCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationFeedbackCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassCreationFeedbackCreateInfoEXT.pRenderPassFeedback ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT const & renderPassFragmentDensityMapCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapCreateInfoEXT.fragmentDensityMapAttachment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapOffsetEndInfoEXT const & renderPassFragmentDensityMapOffsetEndInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapOffsetEndInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapOffsetEndInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapOffsetEndInfoEXT.fragmentDensityOffsetCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassFragmentDensityMapOffsetEndInfoEXT.pFragmentDensityOffsets ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo const & renderPassInputAttachmentAspectCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.aspectReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassInputAttachmentAspectCreateInfo.pAspectReferences ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo const & renderPassMultiviewCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.subpassCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pViewMasks ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.dependencyCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pViewOffsets ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.correlationMaskCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassMultiviewCreateInfo.pCorrelationMasks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassPerformanceCountersByRegionBeginInfoARM const & renderPassPerformanceCountersByRegionBeginInfoARM ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassPerformanceCountersByRegionBeginInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassPerformanceCountersByRegionBeginInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassPerformanceCountersByRegionBeginInfoARM.counterAddressCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassPerformanceCountersByRegionBeginInfoARM.pCounterAddresses ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassPerformanceCountersByRegionBeginInfoARM.serializeRegions ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassPerformanceCountersByRegionBeginInfoARM.counterIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassPerformanceCountersByRegionBeginInfoARM.pCounterIndices ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT const & subpassSampleLocationsEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassSampleLocationsEXT.subpassIndex ); + VULKAN_HPP_HASH_COMBINE( seed, subpassSampleLocationsEXT.sampleLocationsInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT const & renderPassSampleLocationsBeginInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.attachmentInitialSampleLocationsCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.pAttachmentInitialSampleLocations ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.postSubpassSampleLocationsCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSampleLocationsBeginInfoEXT.pPostSubpassSampleLocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM const & renderPassStripeInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeInfoARM.stripeArea ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM const & renderPassStripeBeginInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeBeginInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeBeginInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeBeginInfoARM.stripeInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeBeginInfoARM.pStripeInfos ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo const & semaphoreSubmitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.value ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.stageMask ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSubmitInfo.deviceIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM const & renderPassStripeSubmitInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeSubmitInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeSubmitInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeSubmitInfoARM.stripeSemaphoreInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassStripeSubmitInfoARM.pStripeSemaphoreInfos ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT const & renderPassSubpassFeedbackInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackInfoEXT.subpassMergeStatus ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackInfoEXT.description[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackInfoEXT.postMergeIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT const & renderPassSubpassFeedbackCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassSubpassFeedbackCreateInfoEXT.pSubpassFeedback ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassTileShadingCreateInfoQCOM const & renderPassTileShadingCreateInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassTileShadingCreateInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassTileShadingCreateInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassTileShadingCreateInfoQCOM.flags ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassTileShadingCreateInfoQCOM.tileApronSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM const & renderPassTransformBeginInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderPassTransformBeginInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassTransformBeginInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderPassTransformBeginInfoQCOM.transform ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingAreaInfo const & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingAreaInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAreaInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAreaInfo.viewMask ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAreaInfo.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAreaInfo.pColorAttachmentFormats ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAreaInfo.depthAttachmentFormat ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAreaInfo.stencilAttachmentFormat ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingAttachmentFlagsInfoKHR const & renderingAttachmentFlagsInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingAttachmentFlagsInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAttachmentFlagsInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAttachmentFlagsInfoKHR.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo const & renderingAttachmentLocationInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingAttachmentLocationInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAttachmentLocationInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAttachmentLocationInfo.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderingAttachmentLocationInfo.pColorAttachmentLocations ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingEndInfoKHR const & renderingEndInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingEndInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingEndInfoKHR.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT const & renderingFragmentDensityMapAttachmentInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.imageView ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentDensityMapAttachmentInfoEXT.imageLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR const & renderingFragmentShadingRateAttachmentInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.imageView ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.imageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, renderingFragmentShadingRateAttachmentInfoKHR.shadingRateAttachmentTexelSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingInfo const & renderingInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.renderArea ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.layerCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.viewMask ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pColorAttachments ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pDepthAttachment ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInfo.pStencilAttachment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo const & renderingInputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, renderingInputAttachmentIndexInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInputAttachmentIndexInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInputAttachmentIndexInfo.colorAttachmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInputAttachmentIndexInfo.pColorAttachmentInputIndices ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInputAttachmentIndexInfo.pDepthInputAttachmentIndex ); + VULKAN_HPP_HASH_COMBINE( seed, renderingInputAttachmentIndexInfo.pStencilInputAttachmentIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ResolveImageInfo2 const & resolveImageInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.srcImage ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.srcImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.dstImage ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.dstImageLayout ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.regionCount ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageInfo2.pRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ResolveImageModeInfoKHR const & resolveImageModeInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, resolveImageModeInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageModeInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageModeInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageModeInfoKHR.resolveMode ); + VULKAN_HPP_HASH_COMBINE( seed, resolveImageModeInfoKHR.stencilResolveMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TexelBufferDescriptorInfoEXT const & texelBufferDescriptorInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, texelBufferDescriptorInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, texelBufferDescriptorInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, texelBufferDescriptorInfoEXT.format ); + VULKAN_HPP_HASH_COMBINE( seed, texelBufferDescriptorInfoEXT.addressRange ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorViewCreateInfoARM const & tensorViewCreateInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tensorViewCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tensorViewCreateInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tensorViewCreateInfoARM.flags ); + VULKAN_HPP_HASH_COMBINE( seed, tensorViewCreateInfoARM.tensor ); + VULKAN_HPP_HASH_COMBINE( seed, tensorViewCreateInfoARM.format ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM const & samplerBlockMatchWindowCreateInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerBlockMatchWindowCreateInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerBlockMatchWindowCreateInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerBlockMatchWindowCreateInfoQCOM.windowExtent ); + VULKAN_HPP_HASH_COMBINE( seed, samplerBlockMatchWindowCreateInfoQCOM.windowCompareMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT const & samplerBorderColorComponentMappingCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.components ); + VULKAN_HPP_HASH_COMBINE( seed, samplerBorderColorComponentMappingCreateInfoEXT.srgb ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT const & samplerCaptureDescriptorDataInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerCaptureDescriptorDataInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCaptureDescriptorDataInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCaptureDescriptorDataInfoEXT.sampler ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM const & samplerCubicWeightsCreateInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerCubicWeightsCreateInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCubicWeightsCreateInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCubicWeightsCreateInfoQCOM.cubicWeights ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorIndexCreateInfoEXT const & samplerCustomBorderColorIndexCreateInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerCustomBorderColorIndexCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCustomBorderColorIndexCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerCustomBorderColorIndexCreateInfoEXT.index ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo const & samplerReductionModeCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerReductionModeCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerReductionModeCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerReductionModeCreateInfo.reductionMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo const & samplerYcbcrConversionCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.format ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.ycbcrModel ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.ycbcrRange ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.components ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.xChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.yChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.chromaFilter ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionCreateInfo.forceExplicitReconstruction ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties const & samplerYcbcrConversionImageFormatProperties ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionImageFormatProperties.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionImageFormatProperties.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionImageFormatProperties.combinedImageSamplerDescriptorCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo const & samplerYcbcrConversionInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionInfo.conversion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & samplerYcbcrConversionYcbcrDegammaCreateInfoQCOM ) + const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.enableYDegamma ); + VULKAN_HPP_HASH_COMBINE( seed, samplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.enableCbCrDegamma ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX const & screenBufferFormatPropertiesQNX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.format ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.externalFormat ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.screenUsage ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.formatFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.samplerYcbcrConversionComponents ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.suggestedYcbcrModel ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.suggestedYcbcrRange ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.suggestedXChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferFormatPropertiesQNX.suggestedYChromaOffset ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX const & screenBufferPropertiesQNX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, screenBufferPropertiesQNX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferPropertiesQNX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferPropertiesQNX.allocationSize ); + VULKAN_HPP_HASH_COMBINE( seed, screenBufferPropertiesQNX.memoryTypeBits ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX const & screenSurfaceCreateInfoQNX ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.sType ); + VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.flags ); + VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.context ); + VULKAN_HPP_HASH_COMBINE( seed, screenSurfaceCreateInfoQNX.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo const & semaphoreCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreCreateInfo.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR const & semaphoreGetFdInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetFdInfoKHR.handleType ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR const & semaphoreGetWin32HandleInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetWin32HandleInfoKHR.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA const & semaphoreGetZirconHandleInfoFUCHSIA ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreGetZirconHandleInfoFUCHSIA.handleType ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo const & semaphoreSignalInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.semaphore ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreSignalInfo.value ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo const & semaphoreTypeCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.semaphoreType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreTypeCreateInfo.initialValue ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo const & semaphoreWaitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.semaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.pSemaphores ); + VULKAN_HPP_HASH_COMBINE( seed, semaphoreWaitInfo.pValues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT const & setDescriptorBufferOffsetsInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, setDescriptorBufferOffsetsInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, setDescriptorBufferOffsetsInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, setDescriptorBufferOffsetsInfoEXT.stageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, setDescriptorBufferOffsetsInfoEXT.layout ); + VULKAN_HPP_HASH_COMBINE( seed, setDescriptorBufferOffsetsInfoEXT.firstSet ); + VULKAN_HPP_HASH_COMBINE( seed, setDescriptorBufferOffsetsInfoEXT.setCount ); + VULKAN_HPP_HASH_COMBINE( seed, setDescriptorBufferOffsetsInfoEXT.pBufferIndices ); + VULKAN_HPP_HASH_COMBINE( seed, setDescriptorBufferOffsetsInfoEXT.pOffsets ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV const & setLatencyMarkerInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, setLatencyMarkerInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, setLatencyMarkerInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, setLatencyMarkerInfoNV.presentID ); + VULKAN_HPP_HASH_COMBINE( seed, setLatencyMarkerInfoNV.marker ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SetPresentConfigNV const & setPresentConfigNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, setPresentConfigNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, setPresentConfigNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, setPresentConfigNV.numFramesPerBatch ); + VULKAN_HPP_HASH_COMBINE( seed, setPresentConfigNV.presentConfigFeedback ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV const & setStateFlagsIndirectCommandNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, setStateFlagsIndirectCommandNV.data ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT const & shaderCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.stage ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.nextStage ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.codeType ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.codeSize ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.pCode ); + for ( char const * p = shaderCreateInfoEXT.pName; *p != '\0'; ++p ) + { + VULKAN_HPP_HASH_COMBINE( seed, *p ); + } + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.setLayoutCount ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.pSetLayouts ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.pushConstantRangeCount ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.pPushConstantRanges ); + VULKAN_HPP_HASH_COMBINE( seed, shaderCreateInfoEXT.pSpecializationInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderDescriptorSetAndBindingMappingInfoEXT const & shaderDescriptorSetAndBindingMappingInfoEXT ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderDescriptorSetAndBindingMappingInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, shaderDescriptorSetAndBindingMappingInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, shaderDescriptorSetAndBindingMappingInfoEXT.mappingCount ); + VULKAN_HPP_HASH_COMBINE( seed, shaderDescriptorSetAndBindingMappingInfoEXT.pMappings ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderInstrumentationCreateInfoARM const & shaderInstrumentationCreateInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderInstrumentationCreateInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, shaderInstrumentationCreateInfoARM.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ShaderInstrumentationMetricDataHeaderARM const & shaderInstrumentationMetricDataHeaderARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderInstrumentationMetricDataHeaderARM.resultIndex ); + VULKAN_HPP_HASH_COMBINE( seed, shaderInstrumentationMetricDataHeaderARM.resultSubIndex ); + VULKAN_HPP_HASH_COMBINE( seed, shaderInstrumentationMetricDataHeaderARM.stages ); + VULKAN_HPP_HASH_COMBINE( seed, shaderInstrumentationMetricDataHeaderARM.basicBlockIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ShaderInstrumentationMetricDescriptionARM const & shaderInstrumentationMetricDescriptionARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderInstrumentationMetricDescriptionARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, shaderInstrumentationMetricDescriptionARM.pNext ); + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, shaderInstrumentationMetricDescriptionARM.name[i] ); + } + for ( size_t i = 0; i < VK_MAX_DESCRIPTION_SIZE; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, shaderInstrumentationMetricDescriptionARM.description[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo const & shaderModuleCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.flags ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.codeSize ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleCreateInfo.pCode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT const & shaderModuleIdentifierEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleIdentifierEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleIdentifierEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleIdentifierEXT.identifierSize ); + for ( size_t i = 0; i < VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleIdentifierEXT.identifier[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT const & shaderModuleValidationCacheCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleValidationCacheCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleValidationCacheCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, shaderModuleValidationCacheCreateInfoEXT.validationCache ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD const & shaderResourceUsageAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.numUsedVgprs ); + VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.numUsedSgprs ); + VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.ldsSizePerLocalWorkGroup ); + VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.ldsUsageSizeInBytes ); + VULKAN_HPP_HASH_COMBINE( seed, shaderResourceUsageAMD.scratchMemUsageInBytes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD const & shaderStatisticsInfoAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.shaderStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.resourceUsage ); + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numPhysicalVgprs ); + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numPhysicalSgprs ); + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numAvailableVgprs ); + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.numAvailableSgprs ); + for ( size_t i = 0; i < 3; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, shaderStatisticsInfoAMD.computeWorkGroupSize[i] ); + } + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR const & sharedPresentSurfaceCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sharedPresentSurfaceCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, sharedPresentSurfaceCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, sharedPresentSurfaceCapabilitiesKHR.sharedPresentSupportedUsageFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties const & sparseImageFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties.aspectMask ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties.imageGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 const & sparseImageFormatProperties2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageFormatProperties2.properties ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements const & sparseImageMemoryRequirements ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.formatProperties ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailFirstLod ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailSize ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailOffset ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements.imageMipTailStride ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 const & sparseImageMemoryRequirements2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, sparseImageMemoryRequirements2.memoryRequirements ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_GGP ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP const & streamDescriptorSurfaceCreateInfoGGP ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.sType ); + VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.flags ); + VULKAN_HPP_HASH_COMBINE( seed, streamDescriptorSurfaceCreateInfoGGP.streamDescriptor ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_GGP*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubmitInfo const & submitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.waitSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pWaitSemaphores ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pWaitDstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.commandBufferCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pCommandBuffers ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.signalSemaphoreCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo.pSignalSemaphores ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubmitInfo2 const & submitInfo2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.flags ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.waitSemaphoreInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pWaitSemaphoreInfos ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.commandBufferInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pCommandBufferInfos ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.signalSemaphoreInfoCount ); + VULKAN_HPP_HASH_COMBINE( seed, submitInfo2.pSignalSemaphoreInfos ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassBeginInfo const & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassBeginInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassBeginInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassBeginInfo.contents ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve const & subpassDescriptionDepthStencilResolve ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.depthResolveMode ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.stencilResolveMode ); + VULKAN_HPP_HASH_COMBINE( seed, subpassDescriptionDepthStencilResolve.pDepthStencilResolveAttachment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassEndInfo const & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassEndInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassEndInfo.pNext ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT const & subpassResolvePerformanceQueryEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassResolvePerformanceQueryEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassResolvePerformanceQueryEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassResolvePerformanceQueryEXT.optimal ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI const & subpassShadingPipelineCreateInfoHUAWEI ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.renderPass ); + VULKAN_HPP_HASH_COMBINE( seed, subpassShadingPipelineCreateInfoHUAWEI.subpass ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize const & subresourceHostMemcpySize ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subresourceHostMemcpySize.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceHostMemcpySize.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceHostMemcpySize.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubresourceLayout2 const & subresourceLayout2 ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout2.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout2.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subresourceLayout2.subresourceLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SubsampledImageFormatPropertiesEXT const & subsampledImageFormatPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, subsampledImageFormatPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, subsampledImageFormatPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, subsampledImageFormatPropertiesEXT.subsampledImageDescriptorCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT const & surfaceCapabilities2EXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.minImageCount ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.maxImageCount ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.currentExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.minImageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.maxImageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.maxImageArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedTransforms ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.currentTransform ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedCompositeAlpha ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedUsageFlags ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2EXT.supportedSurfaceCounters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR const & surfaceCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.minImageCount ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.maxImageCount ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.currentExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.minImageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.maxImageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.maxImageArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.supportedTransforms ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.currentTransform ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.supportedCompositeAlpha ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesKHR.supportedUsageFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR const & surfaceCapabilities2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilities2KHR.surfaceCapabilities ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT const & surfaceCapabilitiesFullScreenExclusiveEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesFullScreenExclusiveEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesFullScreenExclusiveEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesFullScreenExclusiveEXT.fullScreenExclusiveSupported ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV const & surfaceCapabilitiesPresentBarrierNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentBarrierNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentBarrierNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentBarrierNV.presentBarrierSupported ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentId2KHR const & surfaceCapabilitiesPresentId2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentId2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentId2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentId2KHR.presentId2Supported ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentWait2KHR const & surfaceCapabilitiesPresentWait2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentWait2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentWait2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCapabilitiesPresentWait2KHR.presentWait2Supported ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_OHOS ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceCreateInfoOHOS const & surfaceCreateInfoOHOS ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceCreateInfoOHOS.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCreateInfoOHOS.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCreateInfoOHOS.flags ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceCreateInfoOHOS.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_OHOS*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceFormatKHR const & surfaceFormatKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceFormatKHR.format ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFormatKHR.colorSpace ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR const & surfaceFormat2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceFormat2KHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFormat2KHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFormat2KHR.surfaceFormat ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT const & surfaceFullScreenExclusiveInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveInfoEXT.fullScreenExclusive ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT const & surfaceFullScreenExclusiveWin32InfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveWin32InfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveWin32InfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceFullScreenExclusiveWin32InfoEXT.hmonitor ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityKHR const & surfacePresentModeCompatibilityKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeCompatibilityKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeCompatibilityKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeCompatibilityKHR.presentModeCount ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeCompatibilityKHR.pPresentModes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfacePresentModeKHR const & surfacePresentModeKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentModeKHR.presentMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesKHR const & surfacePresentScalingCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesKHR.supportedPresentScaling ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesKHR.supportedPresentGravityX ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesKHR.supportedPresentGravityY ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesKHR.minScaledImageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, surfacePresentScalingCapabilitiesKHR.maxScaledImageExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR const & surfaceProtectedCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, surfaceProtectedCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceProtectedCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, surfaceProtectedCapabilitiesKHR.supportsProtected ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainCalibratedTimestampInfoEXT const & swapchainCalibratedTimestampInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainCalibratedTimestampInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCalibratedTimestampInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCalibratedTimestampInfoEXT.swapchain ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCalibratedTimestampInfoEXT.presentStage ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCalibratedTimestampInfoEXT.timeDomainId ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT const & swapchainCounterCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainCounterCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCounterCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCounterCreateInfoEXT.surfaceCounters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR const & swapchainCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.surface ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.minImageCount ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageFormat ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageColorSpace ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageExtent ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageArrayLayers ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageUsage ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.imageSharingMode ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.queueFamilyIndexCount ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.pQueueFamilyIndices ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.preTransform ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.compositeAlpha ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.presentMode ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.clipped ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainCreateInfoKHR.oldSwapchain ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD const & swapchainDisplayNativeHdrCreateInfoAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainDisplayNativeHdrCreateInfoAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainDisplayNativeHdrCreateInfoAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainDisplayNativeHdrCreateInfoAMD.localDimmingEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV const & swapchainLatencyCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainLatencyCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainLatencyCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainLatencyCreateInfoNV.latencyModeEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV const & swapchainPresentBarrierCreateInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentBarrierCreateInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentBarrierCreateInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentBarrierCreateInfoNV.presentBarrierEnable ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoKHR const & swapchainPresentFenceInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentFenceInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentFenceInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentFenceInfoKHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentFenceInfoKHR.pFences ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoKHR const & swapchainPresentModeInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModeInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModeInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModeInfoKHR.swapchainCount ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModeInfoKHR.pPresentModes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoKHR const & swapchainPresentModesCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModesCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModesCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModesCreateInfoKHR.presentModeCount ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentModesCreateInfoKHR.pPresentModes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoKHR const & swapchainPresentScalingCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentScalingCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentScalingCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentScalingCreateInfoKHR.scalingBehavior ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentScalingCreateInfoKHR.presentGravityX ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainPresentScalingCreateInfoKHR.presentGravityY ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainTimeDomainPropertiesEXT const & swapchainTimeDomainPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainTimeDomainPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainTimeDomainPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainTimeDomainPropertiesEXT.timeDomainCount ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainTimeDomainPropertiesEXT.pTimeDomains ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainTimeDomainPropertiesEXT.pTimeDomainIds ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::SwapchainTimingPropertiesEXT const & swapchainTimingPropertiesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, swapchainTimingPropertiesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainTimingPropertiesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainTimingPropertiesEXT.refreshDuration ); + VULKAN_HPP_HASH_COMBINE( seed, swapchainTimingPropertiesEXT.refreshInterval ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorCaptureDescriptorDataInfoARM const & tensorCaptureDescriptorDataInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tensorCaptureDescriptorDataInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCaptureDescriptorDataInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tensorCaptureDescriptorDataInfoARM.tensor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorMemoryBarrierARM const & tensorMemoryBarrierARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryBarrierARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryBarrierARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryBarrierARM.srcStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryBarrierARM.srcAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryBarrierARM.dstStageMask ); + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryBarrierARM.dstAccessMask ); + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryBarrierARM.srcQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryBarrierARM.dstQueueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryBarrierARM.tensor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorDependencyInfoARM const & tensorDependencyInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tensorDependencyInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tensorDependencyInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tensorDependencyInfoARM.tensorMemoryBarrierCount ); + VULKAN_HPP_HASH_COMBINE( seed, tensorDependencyInfoARM.pTensorMemoryBarriers ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorFormatPropertiesARM const & tensorFormatPropertiesARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tensorFormatPropertiesARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tensorFormatPropertiesARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tensorFormatPropertiesARM.optimalTilingTensorFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, tensorFormatPropertiesARM.linearTilingTensorFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TensorMemoryRequirementsInfoARM const & tensorMemoryRequirementsInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryRequirementsInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryRequirementsInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tensorMemoryRequirementsInfoARM.tensor ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::TensorViewCaptureDescriptorDataInfoARM const & tensorViewCaptureDescriptorDataInfoARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tensorViewCaptureDescriptorDataInfoARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tensorViewCaptureDescriptorDataInfoARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tensorViewCaptureDescriptorDataInfoARM.tensorView ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD const & textureLODGatherFormatPropertiesAMD ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, textureLODGatherFormatPropertiesAMD.sType ); + VULKAN_HPP_HASH_COMBINE( seed, textureLODGatherFormatPropertiesAMD.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, textureLODGatherFormatPropertiesAMD.supportsTextureGatherLODBiasAMD ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TileMemoryBindInfoQCOM const & tileMemoryBindInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tileMemoryBindInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tileMemoryBindInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tileMemoryBindInfoQCOM.memory ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TileMemoryRequirementsQCOM const & tileMemoryRequirementsQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tileMemoryRequirementsQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tileMemoryRequirementsQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tileMemoryRequirementsQCOM.size ); + VULKAN_HPP_HASH_COMBINE( seed, tileMemoryRequirementsQCOM.alignment ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TileMemorySizeInfoQCOM const & tileMemorySizeInfoQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tileMemorySizeInfoQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tileMemorySizeInfoQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tileMemorySizeInfoQCOM.size ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TilePropertiesQCOM const & tilePropertiesQCOM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, tilePropertiesQCOM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, tilePropertiesQCOM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, tilePropertiesQCOM.tileSize ); + VULKAN_HPP_HASH_COMBINE( seed, tilePropertiesQCOM.apronSize ); + VULKAN_HPP_HASH_COMBINE( seed, tilePropertiesQCOM.origin ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo const & timelineSemaphoreSubmitInfo ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.sType ); + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.waitSemaphoreValueCount ); + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.pWaitSemaphoreValues ); + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.signalSemaphoreValueCount ); + VULKAN_HPP_HASH_COMBINE( seed, timelineSemaphoreSubmitInfo.pSignalSemaphoreValues ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR const & traceRaysIndirectCommand2KHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.raygenShaderRecordAddress ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.raygenShaderRecordSize ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.missShaderBindingTableAddress ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.missShaderBindingTableSize ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.missShaderBindingTableStride ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.hitShaderBindingTableAddress ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.hitShaderBindingTableSize ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.hitShaderBindingTableStride ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.callableShaderBindingTableAddress ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.callableShaderBindingTableSize ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.callableShaderBindingTableStride ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.width ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.height ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommand2KHR.depth ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR const & traceRaysIndirectCommandKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommandKHR.width ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommandKHR.height ); + VULKAN_HPP_HASH_COMBINE( seed, traceRaysIndirectCommandKHR.depth ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_UBM_SEC ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::UbmSurfaceCreateInfoSEC const & ubmSurfaceCreateInfoSEC ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, ubmSurfaceCreateInfoSEC.sType ); + VULKAN_HPP_HASH_COMBINE( seed, ubmSurfaceCreateInfoSEC.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, ubmSurfaceCreateInfoSEC.flags ); + VULKAN_HPP_HASH_COMBINE( seed, ubmSurfaceCreateInfoSEC.device ); + VULKAN_HPP_HASH_COMBINE( seed, ubmSurfaceCreateInfoSEC.surface ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_UBM_SEC*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT const & validationCacheCreateInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.flags ); + VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.initialDataSize ); + VULKAN_HPP_HASH_COMBINE( seed, validationCacheCreateInfoEXT.pInitialData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT const & validationFeaturesEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.enabledValidationFeatureCount ); + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.pEnabledValidationFeatures ); + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.disabledValidationFeatureCount ); + VULKAN_HPP_HASH_COMBINE( seed, validationFeaturesEXT.pDisabledValidationFeatures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ValidationFlagsEXT const & validationFlagsEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.disabledValidationCheckCount ); + VULKAN_HPP_HASH_COMBINE( seed, validationFlagsEXT.pDisabledValidationChecks ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT const & vertexInputAttributeDescription2EXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.location ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.binding ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.format ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputAttributeDescription2EXT.offset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT const & vertexInputBindingDescription2EXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.binding ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.stride ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.inputRate ); + VULKAN_HPP_HASH_COMBINE( seed, vertexInputBindingDescription2EXT.divisor ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_VI_NN ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN const & viSurfaceCreateInfoNN ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.sType ); + VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.flags ); + VULKAN_HPP_HASH_COMBINE( seed, viSurfaceCreateInfoNN.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_VI_NN*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR const & videoPictureResourceInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.codedOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.codedExtent ); + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.baseArrayLayer ); + VULKAN_HPP_HASH_COMBINE( seed, videoPictureResourceInfoKHR.imageViewBinding ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR const & videoReferenceSlotInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotInfoKHR.slotIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceSlotInfoKHR.pPictureResource ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR const & videoBeginCodingInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.videoSession ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.videoSessionParameters ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.referenceSlotCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoBeginCodingInfoKHR.pReferenceSlots ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR const & videoCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.minBitstreamBufferOffsetAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.minBitstreamBufferSizeAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.pictureAccessGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.minCodedExtent ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.maxCodedExtent ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.maxDpbSlots ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.maxActiveReferencePictures ); + VULKAN_HPP_HASH_COMBINE( seed, videoCapabilitiesKHR.stdHeaderVersion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR const & videoCodingControlInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoCodingControlInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoCodingControlInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoCodingControlInfoKHR.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR const & videoDecodeAV1CapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1CapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1CapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1CapabilitiesKHR.maxLevel ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR const & videoDecodeAV1DpbSlotInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1DpbSlotInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1DpbSlotInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1DpbSlotInfoKHR.pStdReferenceInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeAV1InlineSessionParametersInfoKHR const & videoDecodeAV1InlineSessionParametersInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1InlineSessionParametersInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1InlineSessionParametersInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1InlineSessionParametersInfoKHR.pStdSequenceHeader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR const & videoDecodeAV1PictureInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1PictureInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1PictureInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1PictureInfoKHR.pStdPictureInfo ); + for ( size_t i = 0; i < VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1PictureInfoKHR.referenceNameSlotIndices[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1PictureInfoKHR.frameHeaderOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1PictureInfoKHR.tileCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1PictureInfoKHR.pTileOffsets ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1PictureInfoKHR.pTileSizes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR const & videoDecodeAV1ProfileInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1ProfileInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1ProfileInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1ProfileInfoKHR.stdProfile ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1ProfileInfoKHR.filmGrainSupport ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR const & videoDecodeAV1SessionParametersCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1SessionParametersCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1SessionParametersCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeAV1SessionParametersCreateInfoKHR.pStdSequenceHeader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR const & videoDecodeCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeCapabilitiesKHR.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR const & videoDecodeH264CapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesKHR.maxLevelIdc ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264CapabilitiesKHR.fieldOffsetGranularity ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR const & videoDecodeH264DpbSlotInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264DpbSlotInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264DpbSlotInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264DpbSlotInfoKHR.pStdReferenceInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264InlineSessionParametersInfoKHR const & videoDecodeH264InlineSessionParametersInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264InlineSessionParametersInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264InlineSessionParametersInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264InlineSessionParametersInfoKHR.pStdSPS ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264InlineSessionParametersInfoKHR.pStdPPS ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR const & videoDecodeH264PictureInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoKHR.pStdPictureInfo ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoKHR.sliceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264PictureInfoKHR.pSliceOffsets ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR const & videoDecodeH264ProfileInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileInfoKHR.stdProfileIdc ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264ProfileInfoKHR.pictureLayout ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR const & videoDecodeH264SessionParametersAddInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.stdSPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.pStdSPSs ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.stdPPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersAddInfoKHR.pStdPPSs ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR const & videoDecodeH264SessionParametersCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoKHR.maxStdSPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoKHR.maxStdPPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH264SessionParametersCreateInfoKHR.pParametersAddInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR const & videoDecodeH265CapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265CapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265CapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265CapabilitiesKHR.maxLevelIdc ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR const & videoDecodeH265DpbSlotInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265DpbSlotInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265DpbSlotInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265DpbSlotInfoKHR.pStdReferenceInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265InlineSessionParametersInfoKHR const & videoDecodeH265InlineSessionParametersInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265InlineSessionParametersInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265InlineSessionParametersInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265InlineSessionParametersInfoKHR.pStdVPS ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265InlineSessionParametersInfoKHR.pStdSPS ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265InlineSessionParametersInfoKHR.pStdPPS ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR const & videoDecodeH265PictureInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoKHR.pStdPictureInfo ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoKHR.sliceSegmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265PictureInfoKHR.pSliceSegmentOffsets ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR const & videoDecodeH265ProfileInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265ProfileInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265ProfileInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265ProfileInfoKHR.stdProfileIdc ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR const & videoDecodeH265SessionParametersAddInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.stdVPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.pStdVPSs ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.stdSPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.pStdSPSs ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.stdPPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersAddInfoKHR.pStdPPSs ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR const & videoDecodeH265SessionParametersCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.maxStdVPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.maxStdSPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.maxStdPPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeH265SessionParametersCreateInfoKHR.pParametersAddInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR const & videoDecodeInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.srcBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.srcBufferOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.srcBufferRange ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.dstPictureResource ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.pSetupReferenceSlot ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.referenceSlotCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeInfoKHR.pReferenceSlots ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR const & videoDecodeUsageInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeUsageInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeUsageInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeUsageInfoKHR.videoUsageHints ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeVP9CapabilitiesKHR const & videoDecodeVP9CapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9CapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9CapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9CapabilitiesKHR.maxLevel ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeVP9PictureInfoKHR const & videoDecodeVP9PictureInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9PictureInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9PictureInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9PictureInfoKHR.pStdPictureInfo ); + for ( size_t i = 0; i < VK_MAX_VIDEO_VP9_REFERENCES_PER_FRAME_KHR; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9PictureInfoKHR.referenceNameSlotIndices[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9PictureInfoKHR.uncompressedHeaderOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9PictureInfoKHR.compressedHeaderOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9PictureInfoKHR.tilesOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoDecodeVP9ProfileInfoKHR const & videoDecodeVP9ProfileInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9ProfileInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9ProfileInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoDecodeVP9ProfileInfoKHR.stdProfile ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1CapabilitiesKHR const & videoEncodeAV1CapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxLevel ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.codedPictureAlignment ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxTiles ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.minTileSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxTileSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.superblockSizes ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxSingleReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.singleReferenceNameMask ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxUnidirectionalCompoundReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxUnidirectionalCompoundGroup1ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.unidirectionalCompoundReferenceNameMask ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxBidirectionalCompoundReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxBidirectionalCompoundGroup1ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxBidirectionalCompoundGroup2ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.bidirectionalCompoundReferenceNameMask ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxTemporalLayerCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxSpatialLayerCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxOperatingPoints ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.minQIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.maxQIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.prefersGopRemainingFrames ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.requiresGopRemainingFrames ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1CapabilitiesKHR.stdSyntaxFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1DpbSlotInfoKHR const & videoEncodeAV1DpbSlotInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1DpbSlotInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1DpbSlotInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1DpbSlotInfoKHR.pStdReferenceInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1FrameSizeKHR const & videoEncodeAV1FrameSizeKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1FrameSizeKHR.intraFrameSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1FrameSizeKHR.predictiveFrameSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1FrameSizeKHR.bipredictiveFrameSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1GopRemainingFrameInfoKHR const & videoEncodeAV1GopRemainingFrameInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1GopRemainingFrameInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1GopRemainingFrameInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1GopRemainingFrameInfoKHR.useGopRemainingFrames ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1GopRemainingFrameInfoKHR.gopRemainingIntra ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1GopRemainingFrameInfoKHR.gopRemainingPredictive ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1GopRemainingFrameInfoKHR.gopRemainingBipredictive ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1PictureInfoKHR const & videoEncodeAV1PictureInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1PictureInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1PictureInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1PictureInfoKHR.predictionMode ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1PictureInfoKHR.rateControlGroup ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1PictureInfoKHR.constantQIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1PictureInfoKHR.pStdPictureInfo ); + for ( size_t i = 0; i < VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR; ++i ) + { + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1PictureInfoKHR.referenceNameSlotIndices[i] ); + } + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1PictureInfoKHR.primaryReferenceCdfOnly ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1PictureInfoKHR.generateObuExtensionHeader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1ProfileInfoKHR const & videoEncodeAV1ProfileInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1ProfileInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1ProfileInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1ProfileInfoKHR.stdProfile ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1QIndexKHR const & videoEncodeAV1QIndexKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QIndexKHR.intraQIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QIndexKHR.predictiveQIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QIndexKHR.bipredictiveQIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1QualityLevelPropertiesKHR const & videoEncodeAV1QualityLevelPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredRateControlFlags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredGopFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredKeyFramePeriod ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredConsecutiveBipredictiveFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredTemporalLayerCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredConstantQIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredMaxSingleReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredSingleReferenceNameMask ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredMaxUnidirectionalCompoundReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredMaxUnidirectionalCompoundGroup1ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredUnidirectionalCompoundReferenceNameMask ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredMaxBidirectionalCompoundReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredMaxBidirectionalCompoundGroup1ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredMaxBidirectionalCompoundGroup2ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QualityLevelPropertiesKHR.preferredBidirectionalCompoundReferenceNameMask ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1QuantizationMapCapabilitiesKHR const & videoEncodeAV1QuantizationMapCapabilitiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QuantizationMapCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QuantizationMapCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QuantizationMapCapabilitiesKHR.minQIndexDelta ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1QuantizationMapCapabilitiesKHR.maxQIndexDelta ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1RateControlInfoKHR const & videoEncodeAV1RateControlInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlInfoKHR.gopFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlInfoKHR.keyFramePeriod ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlInfoKHR.consecutiveBipredictiveFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlInfoKHR.temporalLayerCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1RateControlLayerInfoKHR const & videoEncodeAV1RateControlLayerInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlLayerInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlLayerInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlLayerInfoKHR.useMinQIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlLayerInfoKHR.minQIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlLayerInfoKHR.useMaxQIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlLayerInfoKHR.maxQIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlLayerInfoKHR.useMaxFrameSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1RateControlLayerInfoKHR.maxFrameSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1SessionCreateInfoKHR const & videoEncodeAV1SessionCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1SessionCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1SessionCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1SessionCreateInfoKHR.useMaxLevel ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1SessionCreateInfoKHR.maxLevel ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeAV1SessionParametersCreateInfoKHR const & videoEncodeAV1SessionParametersCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1SessionParametersCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1SessionParametersCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1SessionParametersCreateInfoKHR.pStdSequenceHeader ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1SessionParametersCreateInfoKHR.pStdDecoderModelInfo ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1SessionParametersCreateInfoKHR.stdOperatingPointCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeAV1SessionParametersCreateInfoKHR.pStdOperatingPoints ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR const & videoEncodeCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.rateControlModes ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.maxRateControlLayers ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.maxBitrate ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.maxQualityLevels ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.encodeInputPictureGranularity ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeCapabilitiesKHR.supportedEncodeFeedbackFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR const & videoEncodeH264CapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.maxLevelIdc ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.maxSliceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.maxPPictureL0ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.maxBPictureL0ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.maxL1ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.maxTemporalLayerCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.expectDyadicTemporalLayerPattern ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.minQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.maxQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.prefersGopRemainingFrames ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.requiresGopRemainingFrames ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264CapabilitiesKHR.stdSyntaxFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR const & videoEncodeH264DpbSlotInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264DpbSlotInfoKHR.pStdReferenceInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR const & videoEncodeH264FrameSizeKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264FrameSizeKHR.frameISize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264FrameSizeKHR.framePSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264FrameSizeKHR.frameBSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR const & videoEncodeH264GopRemainingFrameInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264GopRemainingFrameInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264GopRemainingFrameInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264GopRemainingFrameInfoKHR.useGopRemainingFrames ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264GopRemainingFrameInfoKHR.gopRemainingI ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264GopRemainingFrameInfoKHR.gopRemainingP ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264GopRemainingFrameInfoKHR.gopRemainingB ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR const & videoEncodeH264NaluSliceInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceInfoKHR.constantQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264NaluSliceInfoKHR.pStdSliceHeader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR const & videoEncodeH264PictureInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264PictureInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264PictureInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264PictureInfoKHR.naluSliceEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264PictureInfoKHR.pNaluSliceEntries ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264PictureInfoKHR.pStdPictureInfo ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264PictureInfoKHR.generatePrefixNalu ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR const & videoEncodeH264ProfileInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ProfileInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ProfileInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264ProfileInfoKHR.stdProfileIdc ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR const & videoEncodeH264QpKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QpKHR.qpI ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QpKHR.qpP ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QpKHR.qpB ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR const & videoEncodeH264QualityLevelPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.preferredRateControlFlags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.preferredGopFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.preferredIdrPeriod ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.preferredConsecutiveBFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.preferredTemporalLayerCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.preferredConstantQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.preferredMaxL0ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.preferredMaxL1ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QualityLevelPropertiesKHR.preferredStdEntropyCodingModeFlag ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264QuantizationMapCapabilitiesKHR const & videoEncodeH264QuantizationMapCapabilitiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QuantizationMapCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QuantizationMapCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QuantizationMapCapabilitiesKHR.minQpDelta ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264QuantizationMapCapabilitiesKHR.maxQpDelta ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR const & videoEncodeH264RateControlInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoKHR.gopFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoKHR.idrPeriod ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoKHR.consecutiveBFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlInfoKHR.temporalLayerCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR const & videoEncodeH264RateControlLayerInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoKHR.useMinQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoKHR.minQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoKHR.useMaxQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoKHR.maxQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoKHR.useMaxFrameSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264RateControlLayerInfoKHR.maxFrameSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR const & videoEncodeH264SessionCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionCreateInfoKHR.useMaxLevelIdc ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionCreateInfoKHR.maxLevelIdc ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR const & videoEncodeH264SessionParametersAddInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoKHR.stdSPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoKHR.pStdSPSs ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoKHR.stdPPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersAddInfoKHR.pStdPPSs ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR const & videoEncodeH264SessionParametersCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoKHR.maxStdSPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoKHR.maxStdPPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersCreateInfoKHR.pParametersAddInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR const & videoEncodeH264SessionParametersFeedbackInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersFeedbackInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersFeedbackInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersFeedbackInfoKHR.hasStdSPSOverrides ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersFeedbackInfoKHR.hasStdPPSOverrides ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR const & videoEncodeH264SessionParametersGetInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersGetInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersGetInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersGetInfoKHR.writeStdSPS ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersGetInfoKHR.writeStdPPS ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersGetInfoKHR.stdSPSId ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH264SessionParametersGetInfoKHR.stdPPSId ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR const & videoEncodeH265CapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.maxLevelIdc ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.maxSliceSegmentCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.maxTiles ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.ctbSizes ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.transformBlockSizes ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.maxPPictureL0ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.maxBPictureL0ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.maxL1ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.maxSubLayerCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.expectDyadicTemporalSubLayerPattern ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.minQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.maxQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.prefersGopRemainingFrames ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.requiresGopRemainingFrames ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265CapabilitiesKHR.stdSyntaxFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR const & videoEncodeH265DpbSlotInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265DpbSlotInfoKHR.pStdReferenceInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR const & videoEncodeH265FrameSizeKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265FrameSizeKHR.frameISize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265FrameSizeKHR.framePSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265FrameSizeKHR.frameBSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR const & videoEncodeH265GopRemainingFrameInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265GopRemainingFrameInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265GopRemainingFrameInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265GopRemainingFrameInfoKHR.useGopRemainingFrames ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265GopRemainingFrameInfoKHR.gopRemainingI ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265GopRemainingFrameInfoKHR.gopRemainingP ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265GopRemainingFrameInfoKHR.gopRemainingB ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR const & videoEncodeH265NaluSliceSegmentInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceSegmentInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceSegmentInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceSegmentInfoKHR.constantQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265NaluSliceSegmentInfoKHR.pStdSliceSegmentHeader ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR const & videoEncodeH265PictureInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265PictureInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265PictureInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265PictureInfoKHR.naluSliceSegmentEntryCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265PictureInfoKHR.pNaluSliceSegmentEntries ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265PictureInfoKHR.pStdPictureInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR const & videoEncodeH265ProfileInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ProfileInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ProfileInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265ProfileInfoKHR.stdProfileIdc ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR const & videoEncodeH265QpKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QpKHR.qpI ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QpKHR.qpP ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QpKHR.qpB ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR const & videoEncodeH265QualityLevelPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QualityLevelPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QualityLevelPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QualityLevelPropertiesKHR.preferredRateControlFlags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QualityLevelPropertiesKHR.preferredGopFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QualityLevelPropertiesKHR.preferredIdrPeriod ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QualityLevelPropertiesKHR.preferredConsecutiveBFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QualityLevelPropertiesKHR.preferredSubLayerCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QualityLevelPropertiesKHR.preferredConstantQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QualityLevelPropertiesKHR.preferredMaxL0ReferenceCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QualityLevelPropertiesKHR.preferredMaxL1ReferenceCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265QuantizationMapCapabilitiesKHR const & videoEncodeH265QuantizationMapCapabilitiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QuantizationMapCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QuantizationMapCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QuantizationMapCapabilitiesKHR.minQpDelta ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265QuantizationMapCapabilitiesKHR.maxQpDelta ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR const & videoEncodeH265RateControlInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoKHR.gopFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoKHR.idrPeriod ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoKHR.consecutiveBFrameCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlInfoKHR.subLayerCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR const & videoEncodeH265RateControlLayerInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoKHR.useMinQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoKHR.minQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoKHR.useMaxQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoKHR.maxQp ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoKHR.useMaxFrameSize ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265RateControlLayerInfoKHR.maxFrameSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR const & videoEncodeH265SessionCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionCreateInfoKHR.useMaxLevelIdc ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionCreateInfoKHR.maxLevelIdc ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR const & videoEncodeH265SessionParametersAddInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoKHR.stdVPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoKHR.pStdVPSs ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoKHR.stdSPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoKHR.pStdSPSs ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoKHR.stdPPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersAddInfoKHR.pStdPPSs ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR const & videoEncodeH265SessionParametersCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoKHR.maxStdVPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoKHR.maxStdSPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoKHR.maxStdPPSCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersCreateInfoKHR.pParametersAddInfo ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( + VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR const & videoEncodeH265SessionParametersFeedbackInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersFeedbackInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersFeedbackInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersFeedbackInfoKHR.hasStdVPSOverrides ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersFeedbackInfoKHR.hasStdSPSOverrides ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersFeedbackInfoKHR.hasStdPPSOverrides ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR const & videoEncodeH265SessionParametersGetInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersGetInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersGetInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersGetInfoKHR.writeStdVPS ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersGetInfoKHR.writeStdSPS ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersGetInfoKHR.writeStdPPS ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersGetInfoKHR.stdVPSId ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersGetInfoKHR.stdSPSId ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeH265SessionParametersGetInfoKHR.stdPPSId ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR const & videoEncodeInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.dstBuffer ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.dstBufferOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.dstBufferRange ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.srcPictureResource ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.pSetupReferenceSlot ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.referenceSlotCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.pReferenceSlots ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeInfoKHR.precedingExternallyEncodedBytes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeIntraRefreshCapabilitiesKHR const & videoEncodeIntraRefreshCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshCapabilitiesKHR.intraRefreshModes ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshCapabilitiesKHR.maxIntraRefreshCycleDuration ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshCapabilitiesKHR.maxIntraRefreshActiveReferencePictures ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshCapabilitiesKHR.partitionIndependentIntraRefreshRegions ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshCapabilitiesKHR.nonRectangularIntraRefreshRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeIntraRefreshInfoKHR const & videoEncodeIntraRefreshInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshInfoKHR.intraRefreshCycleDuration ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeIntraRefreshInfoKHR.intraRefreshIndex ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeProfileRgbConversionInfoVALVE const & videoEncodeProfileRgbConversionInfoVALVE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeProfileRgbConversionInfoVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeProfileRgbConversionInfoVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeProfileRgbConversionInfoVALVE.performEncodeRgbConversion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR const & videoEncodeQualityLevelInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQualityLevelInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQualityLevelInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQualityLevelInfoKHR.qualityLevel ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR const & videoEncodeQualityLevelPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQualityLevelPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQualityLevelPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQualityLevelPropertiesKHR.preferredRateControlMode ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQualityLevelPropertiesKHR.preferredRateControlLayerCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeQuantizationMapCapabilitiesKHR const & videoEncodeQuantizationMapCapabilitiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQuantizationMapCapabilitiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQuantizationMapCapabilitiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQuantizationMapCapabilitiesKHR.maxQuantizationMapExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeQuantizationMapInfoKHR const & videoEncodeQuantizationMapInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQuantizationMapInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQuantizationMapInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQuantizationMapInfoKHR.quantizationMap ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQuantizationMapInfoKHR.quantizationMapExtent ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeQuantizationMapSessionParametersCreateInfoKHR const & + videoEncodeQuantizationMapSessionParametersCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQuantizationMapSessionParametersCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQuantizationMapSessionParametersCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeQuantizationMapSessionParametersCreateInfoKHR.quantizationMapTexelSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR const & videoEncodeRateControlLayerInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.averageBitrate ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.maxBitrate ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.frameRateNumerator ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlLayerInfoKHR.frameRateDenominator ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR const & videoEncodeRateControlInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.rateControlMode ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.layerCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.pLayers ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.virtualBufferSizeInMs ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRateControlInfoKHR.initialVirtualBufferSizeInMs ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeRgbConversionCapabilitiesVALVE const & videoEncodeRgbConversionCapabilitiesVALVE ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRgbConversionCapabilitiesVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRgbConversionCapabilitiesVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRgbConversionCapabilitiesVALVE.rgbModels ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRgbConversionCapabilitiesVALVE.rgbRanges ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRgbConversionCapabilitiesVALVE.xChromaOffsets ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeRgbConversionCapabilitiesVALVE.yChromaOffsets ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeSessionIntraRefreshCreateInfoKHR const & videoEncodeSessionIntraRefreshCreateInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionIntraRefreshCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionIntraRefreshCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionIntraRefreshCreateInfoKHR.intraRefreshMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR const & videoEncodeSessionParametersFeedbackInfoKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionParametersFeedbackInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionParametersFeedbackInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionParametersFeedbackInfoKHR.hasOverrides ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR const & videoEncodeSessionParametersGetInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionParametersGetInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionParametersGetInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionParametersGetInfoKHR.videoSessionParameters ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeSessionRgbConversionCreateInfoVALVE const & videoEncodeSessionRgbConversionCreateInfoVALVE ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionRgbConversionCreateInfoVALVE.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionRgbConversionCreateInfoVALVE.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionRgbConversionCreateInfoVALVE.rgbModel ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionRgbConversionCreateInfoVALVE.rgbRange ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionRgbConversionCreateInfoVALVE.xChromaOffset ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeSessionRgbConversionCreateInfoVALVE.yChromaOffset ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR const & videoEncodeUsageInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeUsageInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeUsageInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeUsageInfoKHR.videoUsageHints ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeUsageInfoKHR.videoContentHints ); + VULKAN_HPP_HASH_COMBINE( seed, videoEncodeUsageInfoKHR.tuningMode ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR const & videoEndCodingInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoEndCodingInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoEndCodingInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoEndCodingInfoKHR.flags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoFormatAV1QuantizationMapPropertiesKHR const & videoFormatAV1QuantizationMapPropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoFormatAV1QuantizationMapPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatAV1QuantizationMapPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatAV1QuantizationMapPropertiesKHR.compatibleSuperblockSizes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoFormatH265QuantizationMapPropertiesKHR const & videoFormatH265QuantizationMapPropertiesKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoFormatH265QuantizationMapPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatH265QuantizationMapPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatH265QuantizationMapPropertiesKHR.compatibleCtbSizes ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR const & videoFormatPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.format ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.componentMapping ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.imageCreateFlags ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.imageType ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.imageTiling ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatPropertiesKHR.imageUsageFlags ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::VideoFormatQuantizationMapPropertiesKHR const & videoFormatQuantizationMapPropertiesKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoFormatQuantizationMapPropertiesKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatQuantizationMapPropertiesKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoFormatQuantizationMapPropertiesKHR.quantizationMapTexelSize ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR const & videoInlineQueryInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoInlineQueryInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoInlineQueryInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoInlineQueryInfoKHR.queryPool ); + VULKAN_HPP_HASH_COMBINE( seed, videoInlineQueryInfoKHR.firstQuery ); + VULKAN_HPP_HASH_COMBINE( seed, videoInlineQueryInfoKHR.queryCount ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR const & videoProfileListInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoProfileListInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileListInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileListInfoKHR.profileCount ); + VULKAN_HPP_HASH_COMBINE( seed, videoProfileListInfoKHR.pProfiles ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoReferenceIntraRefreshInfoKHR const & videoReferenceIntraRefreshInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceIntraRefreshInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceIntraRefreshInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoReferenceIntraRefreshInfoKHR.dirtyIntraRefreshRegions ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR const & videoSessionCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.queueFamilyIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pVideoProfile ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pictureFormat ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.maxCodedExtent ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.referencePictureFormat ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.maxDpbSlots ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.maxActiveReferencePictures ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionCreateInfoKHR.pStdHeaderVersion ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR const & videoSessionMemoryRequirementsKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoSessionMemoryRequirementsKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionMemoryRequirementsKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionMemoryRequirementsKHR.memoryBindIndex ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionMemoryRequirementsKHR.memoryRequirements ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR const & videoSessionParametersCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.videoSessionParametersTemplate ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersCreateInfoKHR.videoSession ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR const & videoSessionParametersUpdateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersUpdateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersUpdateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, videoSessionParametersUpdateInfoKHR.updateSequenceCount ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR const & waylandSurfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.display ); + VULKAN_HPP_HASH_COMBINE( seed, waylandSurfaceCreateInfoKHR.surface ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR const & win32KeyedMutexAcquireReleaseInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.acquireCount ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pAcquireSyncs ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pAcquireKeys ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pAcquireTimeouts ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.releaseCount ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pReleaseSyncs ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoKHR.pReleaseKeys ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV const & win32KeyedMutexAcquireReleaseInfoNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.acquireCount ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pAcquireSyncs ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pAcquireKeys ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pAcquireTimeoutMilliseconds ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.releaseCount ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pReleaseSyncs ); + VULKAN_HPP_HASH_COMBINE( seed, win32KeyedMutexAcquireReleaseInfoNV.pReleaseKeys ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR const & win32SurfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.hinstance ); + VULKAN_HPP_HASH_COMBINE( seed, win32SurfaceCreateInfoKHR.hwnd ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR const & writeDescriptorSetAccelerationStructureKHR ) const + VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.accelerationStructureCount ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureKHR.pAccelerationStructures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t + operator()( VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV const & writeDescriptorSetAccelerationStructureNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.accelerationStructureCount ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetAccelerationStructureNV.pAccelerationStructures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock const & writeDescriptorSetInlineUniformBlock ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.dataSize ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetInlineUniformBlock.pData ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteDescriptorSetPartitionedAccelerationStructureNV const & + writeDescriptorSetPartitionedAccelerationStructureNV ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetPartitionedAccelerationStructureNV.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetPartitionedAccelerationStructureNV.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetPartitionedAccelerationStructureNV.accelerationStructureCount ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetPartitionedAccelerationStructureNV.pAccelerationStructures ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteDescriptorSetTensorARM const & writeDescriptorSetTensorARM ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetTensorARM.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetTensorARM.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetTensorARM.tensorViewCount ); + VULKAN_HPP_HASH_COMBINE( seed, writeDescriptorSetTensorARM.pTensorViews ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT const & writeIndirectExecutionSetPipelineEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetPipelineEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetPipelineEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetPipelineEXT.index ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetPipelineEXT.pipeline ); + return seed; + } + }; + + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT const & writeIndirectExecutionSetShaderEXT ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetShaderEXT.sType ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetShaderEXT.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetShaderEXT.index ); + VULKAN_HPP_HASH_COMBINE( seed, writeIndirectExecutionSetShaderEXT.shader ); + return seed; + } + }; + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR const & xcbSurfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.connection ); + VULKAN_HPP_HASH_COMBINE( seed, xcbSurfaceCreateInfoKHR.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + template <> + struct hash + { + std::size_t operator()( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR const & xlibSurfaceCreateInfoKHR ) const VULKAN_HPP_NOEXCEPT + { + std::size_t seed = 0; + VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.sType ); + VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.pNext ); + VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.flags ); + VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.dpy ); + VULKAN_HPP_HASH_COMBINE( seed, xlibSurfaceCreateInfoKHR.window ); + return seed; + } + }; +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#endif // 14 <= VULKAN_HPP_CPP_VERSION + +} // namespace std +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_hpp_macros.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_hpp_macros.hpp new file mode 100644 index 000000000..af154ae9e --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_hpp_macros.hpp @@ -0,0 +1,356 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_HPP_MACROS_HPP +#define VULKAN_HPP_MACROS_HPP + +#if defined( _MSVC_LANG ) +# define VULKAN_HPP_CPLUSPLUS _MSVC_LANG +#else +# define VULKAN_HPP_CPLUSPLUS __cplusplus +#endif + +#if 202002L < VULKAN_HPP_CPLUSPLUS +# define VULKAN_HPP_CPP_VERSION 23 +#elif 201703L < VULKAN_HPP_CPLUSPLUS +# define VULKAN_HPP_CPP_VERSION 20 +#elif 201402L < VULKAN_HPP_CPLUSPLUS +# define VULKAN_HPP_CPP_VERSION 17 +#elif 201103L < VULKAN_HPP_CPLUSPLUS +# define VULKAN_HPP_CPP_VERSION 14 +#elif 199711L < VULKAN_HPP_CPLUSPLUS +# define VULKAN_HPP_CPP_VERSION 11 +#else +# error "vulkan.hpp needs at least c++ standard version 11" +#endif + +// include headers holding feature-test macros +#if 20 <= VULKAN_HPP_CPP_VERSION +# include +#else +# include +#endif + +#define VULKAN_HPP_STRINGIFY2( text ) #text +#define VULKAN_HPP_STRINGIFY( text ) VULKAN_HPP_STRINGIFY2( text ) +#define VULKAN_HPP_NAMESPACE_STRING VULKAN_HPP_STRINGIFY( VULKAN_HPP_NAMESPACE ) + +#if defined( __clang__ ) || defined( __GNUC__ ) || defined( __GNUG__ ) +# define VULKAN_HPP_COMPILE_WARNING( text ) _Pragma( VULKAN_HPP_STRINGIFY( GCC warning text ) ) +#elif defined( _MSC_VER ) +# define VULKAN_HPP_COMPILE_WARNING( text ) _Pragma( VULKAN_HPP_STRINGIFY( message( __FILE__ "(" VULKAN_HPP_STRINGIFY( __LINE__ ) "): warning: " text ) ) ) +#else +# define VULKAN_HPP_COMPILE_WARNING( text ) +#endif + +#if defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) +# if !defined( VULKAN_HPP_NO_SMART_HANDLE ) +# define VULKAN_HPP_NO_SMART_HANDLE +# endif +#endif + +#if defined( VULKAN_HPP_NO_CONSTRUCTORS ) +# if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) +# define VULKAN_HPP_NO_STRUCT_CONSTRUCTORS +# endif +# if !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) +# define VULKAN_HPP_NO_UNION_CONSTRUCTORS +# endif +#endif + +#if defined( VULKAN_HPP_NO_SETTERS ) +# if !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) +# define VULKAN_HPP_NO_STRUCT_SETTERS +# endif +# if !defined( VULKAN_HPP_NO_UNION_SETTERS ) +# define VULKAN_HPP_NO_UNION_SETTERS +# endif +#endif + +#if !defined( VULKAN_HPP_ASSERT ) +# define VULKAN_HPP_ASSERT assert +#endif + +#if !defined( VULKAN_HPP_ASSERT_ON_RESULT ) +# define VULKAN_HPP_ASSERT_ON_RESULT VULKAN_HPP_ASSERT +#endif + +#if !defined( VULKAN_HPP_STATIC_ASSERT ) +# define VULKAN_HPP_STATIC_ASSERT static_assert +#endif + +#if !defined( VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL ) +# define VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL 1 +#endif + +#if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL == 1 +# if defined( __unix__ ) || defined( __APPLE__ ) || defined( __QNX__ ) || defined( __Fuchsia__ ) && !defined( VULKAN_HPP_CXX_MODULE ) +# include +# elif defined( _WIN32 ) && !defined( VULKAN_HPP_NO_WIN32_PROTOTYPES ) +using HINSTANCE = struct HINSTANCE__ *; +# if defined( _WIN64 ) +# include +using FARPROC = int64_t( __stdcall * )(); +# else +using FARPROC = int( __stdcall * )(); +# endif +extern "C" __declspec( dllimport ) HINSTANCE __stdcall LoadLibraryA( char const * lpLibFileName ); +extern "C" __declspec( dllimport ) int __stdcall FreeLibrary( HINSTANCE hLibModule ); +extern "C" __declspec( dllimport ) FARPROC __stdcall GetProcAddress( HINSTANCE hModule, char const * lpProcName ); +# endif +#endif + +#if !defined( __has_include ) +# define __has_include( x ) false +#endif + +#if defined( __cpp_lib_three_way_comparison ) && ( 201907 <= __cpp_lib_three_way_comparison ) && __has_include( ) && !defined( VULKAN_HPP_NO_SPACESHIP_OPERATOR ) +# define VULKAN_HPP_HAS_SPACESHIP_OPERATOR +#endif + +#if defined( __cpp_lib_span ) && ( 201803 <= __cpp_lib_span ) +# define VULKAN_HPP_SUPPORT_SPAN +#endif + +#if defined( VULKAN_HPP_CXX_MODULE ) +# define VULKAN_HPP_EXPORT export +#else +# define VULKAN_HPP_EXPORT +#endif + +#if defined( VULKAN_HPP_CXX_MODULE ) && !( defined( __cpp_modules ) && defined( __cpp_lib_modules ) ) +VULKAN_HPP_COMPILE_WARNING( "This is a non-conforming implementation of C++ named modules and the standard library module." ) +#endif + +#ifndef VK_USE_64_BIT_PTR_DEFINES +# if defined( __LP64__ ) || defined( _WIN64 ) || ( defined( __x86_64__ ) && !defined( __ILP32__ ) ) || defined( _M_X64 ) || defined( __ia64 ) || \ + defined( _M_IA64 ) || defined( __aarch64__ ) || defined( __powerpc64__ ) || ( defined( __riscv ) && __riscv_xlen == 64 ) +# define VK_USE_64_BIT_PTR_DEFINES 1 +# else +# define VK_USE_64_BIT_PTR_DEFINES 0 +# endif +#endif + +// 32-bit vulkan is not typesafe for non-dispatchable handles, so don't allow copy constructors on this platform by default. +// To enable this feature on 32-bit platforms please #define VULKAN_HPP_TYPESAFE_CONVERSION 1 +// To disable this feature on 64-bit platforms please #define VULKAN_HPP_TYPESAFE_CONVERSION 0 +#if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) +# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION ) +# define VULKAN_HPP_TYPESAFE_CONVERSION 1 +# endif +#endif + +#if defined( __GNUC__ ) +# define GCC_VERSION ( __GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__ ) +#endif + +#if !defined( VULKAN_HPP_HAS_UNRESTRICTED_UNIONS ) +# if defined( __clang__ ) +# if __has_feature( cxx_unrestricted_unions ) +# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS +# endif +# elif defined( __GNUC__ ) +# if 40600 <= GCC_VERSION +# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS +# endif +# elif defined( _MSC_VER ) +# if 1900 <= _MSC_VER +# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS +# endif +# endif +#endif + +#if !defined( VULKAN_HPP_INLINE ) +# if defined( __clang__ ) +# if __has_attribute( always_inline ) +# define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__ +# else +# define VULKAN_HPP_INLINE inline +# endif +# elif defined( __GNUC__ ) +# define VULKAN_HPP_INLINE __attribute__( ( always_inline ) ) __inline__ +# elif defined( _MSC_VER ) +# define VULKAN_HPP_INLINE inline +# else +# define VULKAN_HPP_INLINE inline +# endif +#endif + +#if ( VULKAN_HPP_TYPESAFE_CONVERSION == 1 ) +# define VULKAN_HPP_TYPESAFE_EXPLICIT +#else +# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit +#endif + +#if defined( __cpp_constexpr ) +# define VULKAN_HPP_CONSTEXPR constexpr +# if 201304 <= __cpp_constexpr +# define VULKAN_HPP_CONSTEXPR_14 constexpr +# else +# define VULKAN_HPP_CONSTEXPR_14 +# endif +# if 201603 <= __cpp_constexpr +# define VULKAN_HPP_CONSTEXPR_17 constexpr +# else +# define VULKAN_HPP_CONSTEXPR_17 +# endif +# if ( 201907 <= __cpp_constexpr ) && ( !defined( __GNUC__ ) || ( 110400 < GCC_VERSION ) ) +# define VULKAN_HPP_CONSTEXPR_20 constexpr +# else +# define VULKAN_HPP_CONSTEXPR_20 +# endif +# define VULKAN_HPP_CONST_OR_CONSTEXPR constexpr +#else +# define VULKAN_HPP_CONSTEXPR +# define VULKAN_HPP_CONSTEXPR_14 +# define VULKAN_HPP_CONST_OR_CONSTEXPR const +#endif + +#if !defined( VULKAN_HPP_CONSTEXPR_INLINE ) +# if 201606L <= __cpp_inline_variables +# define VULKAN_HPP_CONSTEXPR_INLINE VULKAN_HPP_CONSTEXPR inline +# else +# define VULKAN_HPP_CONSTEXPR_INLINE VULKAN_HPP_CONSTEXPR +# endif +#endif + +#if !defined( VULKAN_HPP_NOEXCEPT ) +# if defined( _MSC_VER ) && ( _MSC_VER <= 1800 ) +# define VULKAN_HPP_NOEXCEPT +# else +# define VULKAN_HPP_NOEXCEPT noexcept +# define VULKAN_HPP_HAS_NOEXCEPT 1 +# if defined( VULKAN_HPP_NO_EXCEPTIONS ) +# define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS noexcept +# else +# define VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS +# endif +# endif +#endif + +#if 14 <= VULKAN_HPP_CPP_VERSION +# define VULKAN_HPP_DEPRECATED( msg ) [[deprecated( msg )]] +#else +# define VULKAN_HPP_DEPRECATED( msg ) +#endif + +#if 17 <= VULKAN_HPP_CPP_VERSION +# define VULKAN_HPP_DEPRECATED_17( msg ) [[deprecated( msg )]] +#else +# define VULKAN_HPP_DEPRECATED_17( msg ) +#endif + +#if ( 17 <= VULKAN_HPP_CPP_VERSION ) && !defined( VULKAN_HPP_NO_NODISCARD_WARNINGS ) +# define VULKAN_HPP_NODISCARD [[nodiscard]] +# if defined( VULKAN_HPP_NO_EXCEPTIONS ) +# define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS [[nodiscard]] +# else +# define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS +# endif +#else +# define VULKAN_HPP_NODISCARD +# define VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS +#endif + +#if 17 <= VULKAN_HPP_CPP_VERSION +# define VULKAN_HPP_MAYBE_UNUSED [[maybe_unused]] +# define VULKAN_HPP_UNUSED( var ) +#else +# define VULKAN_HPP_MAYBE_UNUSED +# define VULKAN_HPP_UNUSED( var ) ( (void)( var ) ) +#endif + +#if !defined( VULKAN_HPP_NAMESPACE ) +# define VULKAN_HPP_NAMESPACE vk +#endif + +#if !defined( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC ) +# if defined( VK_NO_PROTOTYPES ) +# define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 1 +# else +# define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC 0 +# endif +#endif + +#if !defined( VULKAN_HPP_STORAGE_API ) +# if defined( VULKAN_HPP_STORAGE_SHARED ) +# if defined( _MSC_VER ) +# if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT ) +# define VULKAN_HPP_STORAGE_API __declspec( dllexport ) +# else +# define VULKAN_HPP_STORAGE_API __declspec( dllimport ) +# endif +# elif defined( __clang__ ) || defined( __GNUC__ ) +# if defined( VULKAN_HPP_STORAGE_SHARED_EXPORT ) +# define VULKAN_HPP_STORAGE_API __attribute__( ( visibility( "default" ) ) ) +# else +# define VULKAN_HPP_STORAGE_API +# endif +# else +# define VULKAN_HPP_STORAGE_API +# pragma warning Unknown import / export semantics +# endif +# else +# define VULKAN_HPP_STORAGE_API +# endif +#endif + +#if !defined( VULKAN_HPP_DISPATCH_LOADER_DYNAMIC_TYPE ) +# define VULKAN_HPP_DISPATCH_LOADER_DYNAMIC_TYPE VULKAN_HPP_NAMESPACE::detail::DispatchLoaderDynamic +#endif +#if !defined( VULKAN_HPP_DISPATCH_LOADER_STATIC_TYPE ) +# define VULKAN_HPP_DISPATCH_LOADER_STATIC_TYPE VULKAN_HPP_NAMESPACE::detail::DispatchLoaderStatic +#endif + +#if !defined( VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ) +# if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 +# define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE VULKAN_HPP_DISPATCH_LOADER_DYNAMIC_TYPE +# else +# define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE VULKAN_HPP_DISPATCH_LOADER_STATIC_TYPE +# endif +#endif + +#if !defined( VULKAN_HPP_DEFAULT_DISPATCHER ) +# if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 +# define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::detail::defaultDispatchLoaderDynamic +# define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE \ + namespace VULKAN_HPP_NAMESPACE \ + { \ + namespace detail \ + { \ + VULKAN_HPP_STORAGE_API DispatchLoaderDynamic defaultDispatchLoaderDynamic; \ + } \ + } +# else +# define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::detail::getDispatchLoaderStatic() +# define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE +# endif +#else +# define VULKAN_HPP_DEFAULT_DISPATCHER_HANDLED +#endif + +#if defined( VULKAN_HPP_NO_DEFAULT_DISPATCHER ) +# define VULKAN_HPP_DEFAULT_ASSIGNMENT( assignment ) +#else +# define VULKAN_HPP_DEFAULT_ASSIGNMENT( assignment ) = assignment +#endif +#define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT VULKAN_HPP_DEFAULT_ASSIGNMENT( VULKAN_HPP_DEFAULT_DISPATCHER ) + +#if !defined( VULKAN_HPP_EXPECTED ) && ( 23 <= VULKAN_HPP_CPP_VERSION ) && defined( __cpp_lib_expected ) && defined( VULKAN_HPP_USE_STD_EXPECTED ) +# if !( defined( VULKAN_HPP_ENABLE_STD_MODULE ) && defined( VULKAN_HPP_STD_MODULE ) ) +# include +# endif +# define VULKAN_HPP_EXPECTED std::expected +# define VULKAN_HPP_UNEXPECTED std::unexpected +#endif + +#if !defined( VULKAN_HPP_RAII_NAMESPACE ) +# define VULKAN_HPP_RAII_NAMESPACE raii +# define VULKAN_HPP_RAII_NAMESPACE_STRING VULKAN_HPP_STRINGIFY( VULKAN_HPP_NAMESPACE::VULKAN_HPP_RAII_NAMESPACE ) +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ios.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ios.h new file mode 100644 index 000000000..089991a4f --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ios.h @@ -0,0 +1,50 @@ +#ifndef VULKAN_IOS_H_ +#define VULKAN_IOS_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_MVK_ios_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_MVK_ios_surface 1 +#define VK_MVK_IOS_SURFACE_SPEC_VERSION 3 +#define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface" +typedef VkFlags VkIOSSurfaceCreateFlagsMVK; +typedef struct VkIOSSurfaceCreateInfoMVK { + VkStructureType sType; + const void* pNext; + VkIOSSurfaceCreateFlagsMVK flags; + const void* pView; +} VkIOSSurfaceCreateInfoMVK; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateIOSSurfaceMVK)(VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK( + VkInstance instance, + const VkIOSSurfaceCreateInfoMVK* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_macos.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_macos.h new file mode 100644 index 000000000..7d5d8a1b3 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_macos.h @@ -0,0 +1,50 @@ +#ifndef VULKAN_MACOS_H_ +#define VULKAN_MACOS_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_MVK_macos_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_MVK_macos_surface 1 +#define VK_MVK_MACOS_SURFACE_SPEC_VERSION 3 +#define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface" +typedef VkFlags VkMacOSSurfaceCreateFlagsMVK; +typedef struct VkMacOSSurfaceCreateInfoMVK { + VkStructureType sType; + const void* pNext; + VkMacOSSurfaceCreateFlagsMVK flags; + const void* pView; +} VkMacOSSurfaceCreateInfoMVK; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateMacOSSurfaceMVK)(VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK( + VkInstance instance, + const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_metal.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_metal.h new file mode 100644 index 000000000..501c36388 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_metal.h @@ -0,0 +1,244 @@ +#ifndef VULKAN_METAL_H_ +#define VULKAN_METAL_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_EXT_metal_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_metal_surface 1 +#ifdef __OBJC__ +@class CAMetalLayer; +#else +typedef void CAMetalLayer; +#endif + +#define VK_EXT_METAL_SURFACE_SPEC_VERSION 1 +#define VK_EXT_METAL_SURFACE_EXTENSION_NAME "VK_EXT_metal_surface" +typedef VkFlags VkMetalSurfaceCreateFlagsEXT; +typedef struct VkMetalSurfaceCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkMetalSurfaceCreateFlagsEXT flags; + const CAMetalLayer* pLayer; +} VkMetalSurfaceCreateInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateMetalSurfaceEXT)(VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateMetalSurfaceEXT( + VkInstance instance, + const VkMetalSurfaceCreateInfoEXT* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif +#endif + + +// VK_EXT_metal_objects is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_metal_objects 1 +#ifdef __OBJC__ +@protocol MTLDevice; +typedef __unsafe_unretained id MTLDevice_id; +#else +typedef void* MTLDevice_id; +#endif + +#ifdef __OBJC__ +@protocol MTLCommandQueue; +typedef __unsafe_unretained id MTLCommandQueue_id; +#else +typedef void* MTLCommandQueue_id; +#endif + +#ifdef __OBJC__ +@protocol MTLBuffer; +typedef __unsafe_unretained id MTLBuffer_id; +#else +typedef void* MTLBuffer_id; +#endif + +#ifdef __OBJC__ +@protocol MTLTexture; +typedef __unsafe_unretained id MTLTexture_id; +#else +typedef void* MTLTexture_id; +#endif + +typedef struct __IOSurface* IOSurfaceRef; +#ifdef __OBJC__ +@protocol MTLSharedEvent; +typedef __unsafe_unretained id MTLSharedEvent_id; +#else +typedef void* MTLSharedEvent_id; +#endif + +#define VK_EXT_METAL_OBJECTS_SPEC_VERSION 2 +#define VK_EXT_METAL_OBJECTS_EXTENSION_NAME "VK_EXT_metal_objects" + +typedef enum VkExportMetalObjectTypeFlagBitsEXT { + VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT = 0x00000001, + VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT = 0x00000002, + VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT = 0x00000004, + VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT = 0x00000008, + VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT = 0x00000010, + VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT = 0x00000020, + VK_EXPORT_METAL_OBJECT_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF +} VkExportMetalObjectTypeFlagBitsEXT; +typedef VkFlags VkExportMetalObjectTypeFlagsEXT; +typedef struct VkExportMetalObjectCreateInfoEXT { + VkStructureType sType; + const void* pNext; + VkExportMetalObjectTypeFlagBitsEXT exportObjectType; +} VkExportMetalObjectCreateInfoEXT; + +typedef struct VkExportMetalObjectsInfoEXT { + VkStructureType sType; + const void* pNext; +} VkExportMetalObjectsInfoEXT; + +typedef struct VkExportMetalDeviceInfoEXT { + VkStructureType sType; + const void* pNext; + MTLDevice_id mtlDevice; +} VkExportMetalDeviceInfoEXT; + +typedef struct VkExportMetalCommandQueueInfoEXT { + VkStructureType sType; + const void* pNext; + VkQueue queue; + MTLCommandQueue_id mtlCommandQueue; +} VkExportMetalCommandQueueInfoEXT; + +typedef struct VkExportMetalBufferInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + MTLBuffer_id mtlBuffer; +} VkExportMetalBufferInfoEXT; + +typedef struct VkImportMetalBufferInfoEXT { + VkStructureType sType; + const void* pNext; + MTLBuffer_id mtlBuffer; +} VkImportMetalBufferInfoEXT; + +typedef struct VkExportMetalTextureInfoEXT { + VkStructureType sType; + const void* pNext; + VkImage image; + VkImageView imageView; + VkBufferView bufferView; + VkImageAspectFlagBits plane; + MTLTexture_id mtlTexture; +} VkExportMetalTextureInfoEXT; + +typedef struct VkImportMetalTextureInfoEXT { + VkStructureType sType; + const void* pNext; + VkImageAspectFlagBits plane; + MTLTexture_id mtlTexture; +} VkImportMetalTextureInfoEXT; + +typedef struct VkExportMetalIOSurfaceInfoEXT { + VkStructureType sType; + const void* pNext; + VkImage image; + IOSurfaceRef ioSurface; +} VkExportMetalIOSurfaceInfoEXT; + +typedef struct VkImportMetalIOSurfaceInfoEXT { + VkStructureType sType; + const void* pNext; + IOSurfaceRef ioSurface; +} VkImportMetalIOSurfaceInfoEXT; + +typedef struct VkExportMetalSharedEventInfoEXT { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkEvent event; + MTLSharedEvent_id mtlSharedEvent; +} VkExportMetalSharedEventInfoEXT; + +typedef struct VkImportMetalSharedEventInfoEXT { + VkStructureType sType; + const void* pNext; + MTLSharedEvent_id mtlSharedEvent; +} VkImportMetalSharedEventInfoEXT; + +typedef void (VKAPI_PTR *PFN_vkExportMetalObjectsEXT)(VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR void VKAPI_CALL vkExportMetalObjectsEXT( + VkDevice device, + VkExportMetalObjectsInfoEXT* pMetalObjectsInfo); +#endif +#endif + + +// VK_EXT_external_memory_metal is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_external_memory_metal 1 +#define VK_EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION 1 +#define VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME "VK_EXT_external_memory_metal" +typedef struct VkImportMemoryMetalHandleInfoEXT { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + void* handle; +} VkImportMemoryMetalHandleInfoEXT; + +typedef struct VkMemoryMetalHandlePropertiesEXT { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryMetalHandlePropertiesEXT; + +typedef struct VkMemoryGetMetalHandleInfoEXT { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetMetalHandleInfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryMetalHandleEXT)(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, void** pHandle); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryMetalHandlePropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHandle, VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryMetalHandleEXT( + VkDevice device, + const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryMetalHandlePropertiesEXT( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ohos.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ohos.h new file mode 100644 index 000000000..3bde0114f --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_ohos.h @@ -0,0 +1,120 @@ +#ifndef VULKAN_OHOS_H_ +#define VULKAN_OHOS_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_OHOS_external_memory is a preprocessor guard. Do not pass it to API calls. +#define VK_OHOS_external_memory 1 +struct OH_NativeBuffer; +#define VK_OHOS_EXTERNAL_MEMORY_SPEC_VERSION 1 +#define VK_OHOS_EXTERNAL_MEMORY_EXTENSION_NAME "VK_OHOS_external_memory" +typedef struct VkNativeBufferUsageOHOS { + VkStructureType sType; + void* pNext; + uint64_t OHOSNativeBufferUsage; +} VkNativeBufferUsageOHOS; + +typedef struct VkNativeBufferPropertiesOHOS { + VkStructureType sType; + void* pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeBits; +} VkNativeBufferPropertiesOHOS; + +typedef struct VkNativeBufferFormatPropertiesOHOS { + VkStructureType sType; + void* pNext; + VkFormat format; + uint64_t externalFormat; + VkFormatFeatureFlags formatFeatures; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkNativeBufferFormatPropertiesOHOS; + +typedef struct VkImportNativeBufferInfoOHOS { + VkStructureType sType; + const void* pNext; + struct OH_NativeBuffer* buffer; +} VkImportNativeBufferInfoOHOS; + +typedef struct VkMemoryGetNativeBufferInfoOHOS { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; +} VkMemoryGetNativeBufferInfoOHOS; + +typedef struct VkExternalFormatOHOS { + VkStructureType sType; + void* pNext; + uint64_t externalFormat; +} VkExternalFormatOHOS; + +typedef VkResult (VKAPI_PTR *PFN_vkGetNativeBufferPropertiesOHOS)(VkDevice device, const struct OH_NativeBuffer* buffer, VkNativeBufferPropertiesOHOS* pProperties); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryNativeBufferOHOS)(VkDevice device, const VkMemoryGetNativeBufferInfoOHOS* pInfo, struct OH_NativeBuffer** pBuffer); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeBufferPropertiesOHOS( + VkDevice device, + const struct OH_NativeBuffer* buffer, + VkNativeBufferPropertiesOHOS* pProperties); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryNativeBufferOHOS( + VkDevice device, + const VkMemoryGetNativeBufferInfoOHOS* pInfo, + struct OH_NativeBuffer** pBuffer); +#endif +#endif + + +// VK_OHOS_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_OHOS_surface 1 +typedef struct NativeWindow OHNativeWindow; +#define VK_OHOS_SURFACE_SPEC_VERSION 1 +#define VK_OHOS_SURFACE_EXTENSION_NAME "VK_OHOS_surface" +typedef VkFlags VkSurfaceCreateFlagsOHOS; +typedef struct VkSurfaceCreateInfoOHOS { + VkStructureType sType; + const void* pNext; + VkSurfaceCreateFlagsOHOS flags; + OHNativeWindow* window; +} VkSurfaceCreateInfoOHOS; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateSurfaceOHOS)(VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateSurfaceOHOS( + VkInstance instance, + const VkSurfaceCreateInfoOHOS* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_raii.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_raii.hpp new file mode 100644 index 000000000..48984463a --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_raii.hpp @@ -0,0 +1,29518 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_RAII_HPP +#define VULKAN_RAII_HPP + +#if !defined( VULKAN_HPP_CXX_MODULE ) +# include // std::unique_ptr +# include // std::forward +# include +#endif + +#if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ + namespace VULKAN_HPP_RAII_NAMESPACE + { + namespace detail + { + using PFN_dummy = void ( * )(); + + class ContextDispatcher : public ::VULKAN_HPP_NAMESPACE::detail::DispatchLoaderBase + { + public: + ContextDispatcher( PFN_vkGetInstanceProcAddr getProcAddr ) + : vkGetInstanceProcAddr( getProcAddr ) + //=== VK_VERSION_1_0 === + , vkCreateInstance( PFN_vkCreateInstance( getProcAddr( NULL, "vkCreateInstance" ) ) ) + , vkEnumerateInstanceExtensionProperties( + PFN_vkEnumerateInstanceExtensionProperties( getProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) ) ) + , vkEnumerateInstanceLayerProperties( PFN_vkEnumerateInstanceLayerProperties( getProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) ) ) + //=== VK_VERSION_1_1 === + , vkEnumerateInstanceVersion( PFN_vkEnumerateInstanceVersion( getProcAddr( NULL, "vkEnumerateInstanceVersion" ) ) ) + { + } + + public: + PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0; + + //=== VK_VERSION_1_0 === + PFN_vkCreateInstance vkCreateInstance = 0; + PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0; + PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = 0; + + //=== VK_VERSION_1_1 === + PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0; + }; + + class InstanceDispatcher : public ::VULKAN_HPP_NAMESPACE::detail::DispatchLoaderBase + { + public: + InstanceDispatcher( PFN_vkGetInstanceProcAddr getProcAddr, VkInstance instance ) : vkGetInstanceProcAddr( getProcAddr ) + { + //=== VK_VERSION_1_0 === + vkDestroyInstance = PFN_vkDestroyInstance( vkGetInstanceProcAddr( instance, "vkDestroyInstance" ) ); + vkEnumeratePhysicalDevices = PFN_vkEnumeratePhysicalDevices( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ) ); + vkGetPhysicalDeviceFeatures = PFN_vkGetPhysicalDeviceFeatures( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ) ); + vkGetPhysicalDeviceFormatProperties = + PFN_vkGetPhysicalDeviceFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ) ); + vkGetPhysicalDeviceImageFormatProperties = + PFN_vkGetPhysicalDeviceImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ) ); + vkGetPhysicalDeviceProperties = PFN_vkGetPhysicalDeviceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ) ); + vkGetPhysicalDeviceQueueFamilyProperties = + PFN_vkGetPhysicalDeviceQueueFamilyProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ) ); + vkGetPhysicalDeviceMemoryProperties = + PFN_vkGetPhysicalDeviceMemoryProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ) ); + vkCreateDevice = PFN_vkCreateDevice( vkGetInstanceProcAddr( instance, "vkCreateDevice" ) ); + vkEnumerateDeviceExtensionProperties = + PFN_vkEnumerateDeviceExtensionProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ) ); + vkEnumerateDeviceLayerProperties = PFN_vkEnumerateDeviceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ) ); + vkGetPhysicalDeviceSparseImageFormatProperties = + PFN_vkGetPhysicalDeviceSparseImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ) ); + + //=== VK_VERSION_1_1 === + vkEnumeratePhysicalDeviceGroups = PFN_vkEnumeratePhysicalDeviceGroups( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" ) ); + vkGetPhysicalDeviceFeatures2 = PFN_vkGetPhysicalDeviceFeatures2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" ) ); + vkGetPhysicalDeviceProperties2 = PFN_vkGetPhysicalDeviceProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" ) ); + vkGetPhysicalDeviceFormatProperties2 = + PFN_vkGetPhysicalDeviceFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" ) ); + vkGetPhysicalDeviceImageFormatProperties2 = + PFN_vkGetPhysicalDeviceImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" ) ); + vkGetPhysicalDeviceQueueFamilyProperties2 = + PFN_vkGetPhysicalDeviceQueueFamilyProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" ) ); + vkGetPhysicalDeviceMemoryProperties2 = + PFN_vkGetPhysicalDeviceMemoryProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" ) ); + vkGetPhysicalDeviceSparseImageFormatProperties2 = + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" ) ); + vkGetPhysicalDeviceExternalBufferProperties = + PFN_vkGetPhysicalDeviceExternalBufferProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" ) ); + vkGetPhysicalDeviceExternalFenceProperties = + PFN_vkGetPhysicalDeviceExternalFenceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" ) ); + vkGetPhysicalDeviceExternalSemaphoreProperties = + PFN_vkGetPhysicalDeviceExternalSemaphoreProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" ) ); + + //=== VK_VERSION_1_3 === + vkGetPhysicalDeviceToolProperties = PFN_vkGetPhysicalDeviceToolProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolProperties" ) ); + + //=== VK_KHR_surface === + vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR( vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ) ); + vkGetPhysicalDeviceSurfaceSupportKHR = + PFN_vkGetPhysicalDeviceSurfaceSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ) ); + vkGetPhysicalDeviceSurfaceCapabilitiesKHR = + PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ) ); + vkGetPhysicalDeviceSurfaceFormatsKHR = + PFN_vkGetPhysicalDeviceSurfaceFormatsKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ) ); + vkGetPhysicalDeviceSurfacePresentModesKHR = + PFN_vkGetPhysicalDeviceSurfacePresentModesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ) ); + + //=== VK_KHR_swapchain === + vkGetPhysicalDevicePresentRectanglesKHR = + PFN_vkGetPhysicalDevicePresentRectanglesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) ); + + //=== VK_KHR_display === + vkGetPhysicalDeviceDisplayPropertiesKHR = + PFN_vkGetPhysicalDeviceDisplayPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ) ); + vkGetPhysicalDeviceDisplayPlanePropertiesKHR = + PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ) ); + vkGetDisplayPlaneSupportedDisplaysKHR = + PFN_vkGetDisplayPlaneSupportedDisplaysKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ) ); + vkGetDisplayModePropertiesKHR = PFN_vkGetDisplayModePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ) ); + vkCreateDisplayModeKHR = PFN_vkCreateDisplayModeKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ) ); + vkGetDisplayPlaneCapabilitiesKHR = PFN_vkGetDisplayPlaneCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ) ); + vkCreateDisplayPlaneSurfaceKHR = PFN_vkCreateDisplayPlaneSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ) ); + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + vkCreateXlibSurfaceKHR = PFN_vkCreateXlibSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ) ); + vkGetPhysicalDeviceXlibPresentationSupportKHR = + PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ) ); +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ) ); + vkGetPhysicalDeviceXcbPresentationSupportKHR = + PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ) ); +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + vkCreateWaylandSurfaceKHR = PFN_vkCreateWaylandSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ) ); + vkGetPhysicalDeviceWaylandPresentationSupportKHR = + PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ) ); +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + vkCreateAndroidSurfaceKHR = PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) ); +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + vkCreateWin32SurfaceKHR = PFN_vkCreateWin32SurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ) ); + vkGetPhysicalDeviceWin32PresentationSupportKHR = + PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + vkCreateDebugReportCallbackEXT = PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) ); + vkDestroyDebugReportCallbackEXT = PFN_vkDestroyDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ) ); + vkDebugReportMessageEXT = PFN_vkDebugReportMessageEXT( vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ) ); + + //=== VK_KHR_video_queue === + vkGetPhysicalDeviceVideoCapabilitiesKHR = + PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoCapabilitiesKHR" ) ); + vkGetPhysicalDeviceVideoFormatPropertiesKHR = + PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoFormatPropertiesKHR" ) ); + +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + vkCreateStreamDescriptorSurfaceGGP = + PFN_vkCreateStreamDescriptorSurfaceGGP( vkGetInstanceProcAddr( instance, "vkCreateStreamDescriptorSurfaceGGP" ) ); +# endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + vkGetPhysicalDeviceExternalImageFormatPropertiesNV = + PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ) ); + + //=== VK_KHR_get_physical_device_properties2 === + vkGetPhysicalDeviceFeatures2KHR = PFN_vkGetPhysicalDeviceFeatures2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ) ); + if ( !vkGetPhysicalDeviceFeatures2 ) + vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2KHR; + vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceProperties2 ) + vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2KHR; + vkGetPhysicalDeviceFormatProperties2KHR = + PFN_vkGetPhysicalDeviceFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceFormatProperties2 ) + vkGetPhysicalDeviceFormatProperties2 = vkGetPhysicalDeviceFormatProperties2KHR; + vkGetPhysicalDeviceImageFormatProperties2KHR = + PFN_vkGetPhysicalDeviceImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceImageFormatProperties2 ) + vkGetPhysicalDeviceImageFormatProperties2 = vkGetPhysicalDeviceImageFormatProperties2KHR; + vkGetPhysicalDeviceQueueFamilyProperties2KHR = + PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceQueueFamilyProperties2 ) + vkGetPhysicalDeviceQueueFamilyProperties2 = vkGetPhysicalDeviceQueueFamilyProperties2KHR; + vkGetPhysicalDeviceMemoryProperties2KHR = + PFN_vkGetPhysicalDeviceMemoryProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceMemoryProperties2 ) + vkGetPhysicalDeviceMemoryProperties2 = vkGetPhysicalDeviceMemoryProperties2KHR; + vkGetPhysicalDeviceSparseImageFormatProperties2KHR = + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ) ); + if ( !vkGetPhysicalDeviceSparseImageFormatProperties2 ) + vkGetPhysicalDeviceSparseImageFormatProperties2 = vkGetPhysicalDeviceSparseImageFormatProperties2KHR; + +# if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN( vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ) ); +# endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_device_group_creation === + vkEnumeratePhysicalDeviceGroupsKHR = + PFN_vkEnumeratePhysicalDeviceGroupsKHR( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHR" ) ); + if ( !vkEnumeratePhysicalDeviceGroups ) + vkEnumeratePhysicalDeviceGroups = vkEnumeratePhysicalDeviceGroupsKHR; + + //=== VK_KHR_external_memory_capabilities === + vkGetPhysicalDeviceExternalBufferPropertiesKHR = + PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalBufferProperties ) + vkGetPhysicalDeviceExternalBufferProperties = vkGetPhysicalDeviceExternalBufferPropertiesKHR; + + //=== VK_KHR_external_semaphore_capabilities === + vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = + PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalSemaphoreProperties ) + vkGetPhysicalDeviceExternalSemaphoreProperties = vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; + + //=== VK_EXT_direct_mode_display === + vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT( vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ) ); + +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + vkAcquireXlibDisplayEXT = PFN_vkAcquireXlibDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ) ); + vkGetRandROutputDisplayEXT = PFN_vkGetRandROutputDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ) ); +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + vkGetPhysicalDeviceSurfaceCapabilities2EXT = + PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ) ); + + //=== VK_KHR_external_fence_capabilities === + vkGetPhysicalDeviceExternalFencePropertiesKHR = + PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ) ); + if ( !vkGetPhysicalDeviceExternalFenceProperties ) + vkGetPhysicalDeviceExternalFenceProperties = vkGetPhysicalDeviceExternalFencePropertiesKHR; + + //=== VK_KHR_performance_query === + vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR" ) ); + vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR" ) ); + + //=== VK_KHR_get_surface_capabilities2 === + vkGetPhysicalDeviceSurfaceCapabilities2KHR = + PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ) ); + vkGetPhysicalDeviceSurfaceFormats2KHR = + PFN_vkGetPhysicalDeviceSurfaceFormats2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ) ); + + //=== VK_KHR_get_display_properties2 === + vkGetPhysicalDeviceDisplayProperties2KHR = + PFN_vkGetPhysicalDeviceDisplayProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" ) ); + vkGetPhysicalDeviceDisplayPlaneProperties2KHR = + PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" ) ); + vkGetDisplayModeProperties2KHR = PFN_vkGetDisplayModeProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" ) ); + vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" ) ); + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ) ); +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + vkCreateMacOSSurfaceMVK = PFN_vkCreateMacOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ) ); +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + vkCreateDebugUtilsMessengerEXT = PFN_vkCreateDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" ) ); + vkDestroyDebugUtilsMessengerEXT = PFN_vkDestroyDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" ) ); + vkSubmitDebugUtilsMessageEXT = PFN_vkSubmitDebugUtilsMessageEXT( vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" ) ); + + //=== VK_EXT_descriptor_heap === + vkGetPhysicalDeviceDescriptorSizeEXT = + PFN_vkGetPhysicalDeviceDescriptorSizeEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDescriptorSizeEXT" ) ); + + //=== VK_EXT_sample_locations === + vkGetPhysicalDeviceMultisamplePropertiesEXT = + PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" ) ); + + //=== VK_EXT_calibrated_timestamps === + vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = + PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" ) ); + if ( !vkGetPhysicalDeviceCalibrateableTimeDomainsKHR ) + vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = vkGetPhysicalDeviceCalibrateableTimeDomainsEXT; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + vkCreateImagePipeSurfaceFUCHSIA = PFN_vkCreateImagePipeSurfaceFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateImagePipeSurfaceFUCHSIA" ) ); +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + vkCreateMetalSurfaceEXT = PFN_vkCreateMetalSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateMetalSurfaceEXT" ) ); +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + vkGetPhysicalDeviceFragmentShadingRatesKHR = + PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR" ) ); + + //=== VK_EXT_tooling_info === + vkGetPhysicalDeviceToolPropertiesEXT = + PFN_vkGetPhysicalDeviceToolPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolPropertiesEXT" ) ); + if ( !vkGetPhysicalDeviceToolProperties ) + vkGetPhysicalDeviceToolProperties = vkGetPhysicalDeviceToolPropertiesEXT; + + //=== VK_NV_cooperative_matrix === + vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = + PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" ) ); + + //=== VK_NV_coverage_reduction_mode === + vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + vkGetPhysicalDeviceSurfacePresentModes2EXT = + PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + vkCreateHeadlessSurfaceEXT = PFN_vkCreateHeadlessSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" ) ); + + //=== VK_EXT_acquire_drm_display === + vkAcquireDrmDisplayEXT = PFN_vkAcquireDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireDrmDisplayEXT" ) ); + vkGetDrmDisplayEXT = PFN_vkGetDrmDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetDrmDisplayEXT" ) ); + + //=== VK_KHR_video_encode_queue === + vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + vkAcquireWinrtDisplayNV = PFN_vkAcquireWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkAcquireWinrtDisplayNV" ) ); + vkGetWinrtDisplayNV = PFN_vkGetWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkGetWinrtDisplayNV" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + vkCreateDirectFBSurfaceEXT = PFN_vkCreateDirectFBSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateDirectFBSurfaceEXT" ) ); + vkGetPhysicalDeviceDirectFBPresentationSupportEXT = + PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT" ) ); +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + vkCreateScreenSurfaceQNX = PFN_vkCreateScreenSurfaceQNX( vkGetInstanceProcAddr( instance, "vkCreateScreenSurfaceQNX" ) ); + vkGetPhysicalDeviceScreenPresentationSupportQNX = + PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceScreenPresentationSupportQNX" ) ); +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_ARM_tensors === + vkGetPhysicalDeviceExternalTensorPropertiesARM = + PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalTensorPropertiesARM" ) ); + + //=== VK_NV_optical_flow === + vkGetPhysicalDeviceOpticalFlowImageFormatsNV = + PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV" ) ); + + //=== VK_NV_cooperative_vector === + vkGetPhysicalDeviceCooperativeVectorPropertiesNV = + PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeVectorPropertiesNV" ) ); + + //=== VK_KHR_cooperative_matrix === + vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = + PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR" ) ); + + //=== VK_ARM_data_graph === + vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM" ) ); + vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM" ) ); + + //=== VK_KHR_calibrated_timestamps === + vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = + PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsKHR" ) ); + +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + vkCreateSurfaceOHOS = PFN_vkCreateSurfaceOHOS( vkGetInstanceProcAddr( instance, "vkCreateSurfaceOHOS" ) ); +# endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_NV_cooperative_matrix2 === + vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( + vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV" ) ); + + //=== VK_ARM_performance_counters_by_region === + vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( + vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM" ) ); + + //=== VK_ARM_shader_instrumentation === + vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM = PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( + vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM" ) ); + +# if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + vkCreateUbmSurfaceSEC = PFN_vkCreateUbmSurfaceSEC( vkGetInstanceProcAddr( instance, "vkCreateUbmSurfaceSEC" ) ); + vkGetPhysicalDeviceUbmPresentationSupportSEC = + PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceUbmPresentationSupportSEC" ) ); +# endif /*VK_USE_PLATFORM_UBM_SEC*/ + + vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" ) ); + } + + public: + //=== VK_VERSION_1_0 === + PFN_vkDestroyInstance vkDestroyInstance = 0; + PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = 0; + PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures = 0; + PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties = 0; + PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = 0; + PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties = 0; + PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0; + PFN_vkCreateDevice vkCreateDevice = 0; + PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = 0; + PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0; + + //=== VK_VERSION_1_1 === + PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups = 0; + PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = 0; + PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = 0; + PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 = 0; + PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0; + PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties = 0; + PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties = 0; + PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties = 0; + + //=== VK_VERSION_1_3 === + PFN_vkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolProperties = 0; + + //=== VK_KHR_surface === + PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0; + PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR = 0; + PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0; + + //=== VK_KHR_swapchain === + PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0; + + //=== VK_KHR_display === + PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR = 0; + PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0; + PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR = 0; + PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR = 0; + PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR = 0; + PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR = 0; + PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR = 0; + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0; +# else + PFN_dummy vkCreateXlibSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceXlibPresentationSupportKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0; +# else + PFN_dummy vkCreateXcbSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceXcbPresentationSupportKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR = 0; + PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0; +# else + PFN_dummy vkCreateWaylandSurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceWaylandPresentationSupportKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0; +# else + PFN_dummy vkCreateAndroidSurfaceKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = 0; + PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0; +# else + PFN_dummy vkCreateWin32SurfaceKHR_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceWin32PresentationSupportKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0; + PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0; + PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT = 0; + + //=== VK_KHR_video_queue === + PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR = 0; + PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR = 0; + +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP = 0; +# else + PFN_dummy vkCreateStreamDescriptorSurfaceGGP_placeholder = 0; +# endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0; + + //=== VK_KHR_get_physical_device_properties2 === + PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR = 0; + PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = 0; + PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR = 0; + PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR = 0; + PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR = 0; + PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR = 0; + PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0; + +# if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0; +# else + PFN_dummy vkCreateViSurfaceNN_placeholder = 0; +# endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_device_group_creation === + PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0; + + //=== VK_KHR_external_memory_capabilities === + PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0; + + //=== VK_KHR_external_semaphore_capabilities === + PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0; + + //=== VK_EXT_direct_mode_display === + PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0; + +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT = 0; + PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0; +# else + PFN_dummy vkAcquireXlibDisplayEXT_placeholder = 0; + PFN_dummy vkGetRandROutputDisplayEXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0; + + //=== VK_KHR_external_fence_capabilities === + PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0; + + //=== VK_KHR_performance_query === + PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 0; + PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 0; + + //=== VK_KHR_get_surface_capabilities2 === + PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0; + PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR = 0; + + //=== VK_KHR_get_display_properties2 === + PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR = 0; + PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0; + PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR = 0; + PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR = 0; + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0; +# else + PFN_dummy vkCreateIOSSurfaceMVK_placeholder = 0; +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0; +# else + PFN_dummy vkCreateMacOSSurfaceMVK_placeholder = 0; +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = 0; + PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0; + PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT = 0; + + //=== VK_EXT_descriptor_heap === + PFN_vkGetPhysicalDeviceDescriptorSizeEXT vkGetPhysicalDeviceDescriptorSizeEXT = 0; + + //=== VK_EXT_sample_locations === + PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0; + + //=== VK_EXT_calibrated_timestamps === + PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0; +# else + PFN_dummy vkCreateImagePipeSurfaceFUCHSIA_placeholder = 0; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT = 0; +# else + PFN_dummy vkCreateMetalSurfaceEXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR = 0; + + //=== VK_EXT_tooling_info === + PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT = 0; + + //=== VK_NV_cooperative_matrix === + PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0; + + //=== VK_NV_coverage_reduction_mode === + PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT = 0; +# else + PFN_dummy vkGetPhysicalDeviceSurfacePresentModes2EXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT = 0; + + //=== VK_EXT_acquire_drm_display === + PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT = 0; + PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT = 0; + + //=== VK_KHR_video_encode_queue === + PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV = 0; + PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV = 0; +# else + PFN_dummy vkAcquireWinrtDisplayNV_placeholder = 0; + PFN_dummy vkGetWinrtDisplayNV_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT = 0; + PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 0; +# else + PFN_dummy vkCreateDirectFBSurfaceEXT_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceDirectFBPresentationSupportEXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX = 0; + PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX = 0; +# else + PFN_dummy vkCreateScreenSurfaceQNX_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceScreenPresentationSupportQNX_placeholder = 0; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_ARM_tensors === + PFN_vkGetPhysicalDeviceExternalTensorPropertiesARM vkGetPhysicalDeviceExternalTensorPropertiesARM = 0; + + //=== VK_NV_optical_flow === + PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV vkGetPhysicalDeviceOpticalFlowImageFormatsNV = 0; + + //=== VK_NV_cooperative_vector === + PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV vkGetPhysicalDeviceCooperativeVectorPropertiesNV = 0; + + //=== VK_KHR_cooperative_matrix === + PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR = 0; + + //=== VK_ARM_data_graph === + PFN_vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM = 0; + PFN_vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM = 0; + + //=== VK_KHR_calibrated_timestamps === + PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR vkGetPhysicalDeviceCalibrateableTimeDomainsKHR = 0; + +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + PFN_vkCreateSurfaceOHOS vkCreateSurfaceOHOS = 0; +# else + PFN_dummy vkCreateSurfaceOHOS_placeholder = 0; +# endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_NV_cooperative_matrix2 === + PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = 0; + + //=== VK_ARM_performance_counters_by_region === + PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM = 0; + + //=== VK_ARM_shader_instrumentation === + PFN_vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM = 0; + +# if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + PFN_vkCreateUbmSurfaceSEC vkCreateUbmSurfaceSEC = 0; + PFN_vkGetPhysicalDeviceUbmPresentationSupportSEC vkGetPhysicalDeviceUbmPresentationSupportSEC = 0; +# else + PFN_dummy vkCreateUbmSurfaceSEC_placeholder = 0; + PFN_dummy vkGetPhysicalDeviceUbmPresentationSupportSEC_placeholder = 0; +# endif /*VK_USE_PLATFORM_UBM_SEC*/ + + PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0; + }; + + class DeviceDispatcher : public ::VULKAN_HPP_NAMESPACE::detail::DispatchLoaderBase + { + public: + DeviceDispatcher( PFN_vkGetDeviceProcAddr getProcAddr, VkDevice device ) : vkGetDeviceProcAddr( getProcAddr ) + { + //=== VK_VERSION_1_0 === + vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetDeviceProcAddr( device, "vkGetDeviceProcAddr" ) ); + vkDestroyDevice = PFN_vkDestroyDevice( vkGetDeviceProcAddr( device, "vkDestroyDevice" ) ); + vkGetDeviceQueue = PFN_vkGetDeviceQueue( vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ) ); + vkQueueSubmit = PFN_vkQueueSubmit( vkGetDeviceProcAddr( device, "vkQueueSubmit" ) ); + vkQueueWaitIdle = PFN_vkQueueWaitIdle( vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ) ); + vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ) ); + vkAllocateMemory = PFN_vkAllocateMemory( vkGetDeviceProcAddr( device, "vkAllocateMemory" ) ); + vkFreeMemory = PFN_vkFreeMemory( vkGetDeviceProcAddr( device, "vkFreeMemory" ) ); + vkMapMemory = PFN_vkMapMemory( vkGetDeviceProcAddr( device, "vkMapMemory" ) ); + vkUnmapMemory = PFN_vkUnmapMemory( vkGetDeviceProcAddr( device, "vkUnmapMemory" ) ); + vkFlushMappedMemoryRanges = PFN_vkFlushMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ) ); + vkInvalidateMappedMemoryRanges = PFN_vkInvalidateMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ) ); + vkGetDeviceMemoryCommitment = PFN_vkGetDeviceMemoryCommitment( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ) ); + vkBindBufferMemory = PFN_vkBindBufferMemory( vkGetDeviceProcAddr( device, "vkBindBufferMemory" ) ); + vkBindImageMemory = PFN_vkBindImageMemory( vkGetDeviceProcAddr( device, "vkBindImageMemory" ) ); + vkGetBufferMemoryRequirements = PFN_vkGetBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ) ); + vkGetImageMemoryRequirements = PFN_vkGetImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ) ); + vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ) ); + vkQueueBindSparse = PFN_vkQueueBindSparse( vkGetDeviceProcAddr( device, "vkQueueBindSparse" ) ); + vkCreateFence = PFN_vkCreateFence( vkGetDeviceProcAddr( device, "vkCreateFence" ) ); + vkDestroyFence = PFN_vkDestroyFence( vkGetDeviceProcAddr( device, "vkDestroyFence" ) ); + vkResetFences = PFN_vkResetFences( vkGetDeviceProcAddr( device, "vkResetFences" ) ); + vkGetFenceStatus = PFN_vkGetFenceStatus( vkGetDeviceProcAddr( device, "vkGetFenceStatus" ) ); + vkWaitForFences = PFN_vkWaitForFences( vkGetDeviceProcAddr( device, "vkWaitForFences" ) ); + vkCreateSemaphore = PFN_vkCreateSemaphore( vkGetDeviceProcAddr( device, "vkCreateSemaphore" ) ); + vkDestroySemaphore = PFN_vkDestroySemaphore( vkGetDeviceProcAddr( device, "vkDestroySemaphore" ) ); + vkCreateQueryPool = PFN_vkCreateQueryPool( vkGetDeviceProcAddr( device, "vkCreateQueryPool" ) ); + vkDestroyQueryPool = PFN_vkDestroyQueryPool( vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ) ); + vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ) ); + vkCreateBuffer = PFN_vkCreateBuffer( vkGetDeviceProcAddr( device, "vkCreateBuffer" ) ); + vkDestroyBuffer = PFN_vkDestroyBuffer( vkGetDeviceProcAddr( device, "vkDestroyBuffer" ) ); + vkCreateImage = PFN_vkCreateImage( vkGetDeviceProcAddr( device, "vkCreateImage" ) ); + vkDestroyImage = PFN_vkDestroyImage( vkGetDeviceProcAddr( device, "vkDestroyImage" ) ); + vkGetImageSubresourceLayout = PFN_vkGetImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ) ); + vkCreateImageView = PFN_vkCreateImageView( vkGetDeviceProcAddr( device, "vkCreateImageView" ) ); + vkDestroyImageView = PFN_vkDestroyImageView( vkGetDeviceProcAddr( device, "vkDestroyImageView" ) ); + vkCreateCommandPool = PFN_vkCreateCommandPool( vkGetDeviceProcAddr( device, "vkCreateCommandPool" ) ); + vkDestroyCommandPool = PFN_vkDestroyCommandPool( vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ) ); + vkResetCommandPool = PFN_vkResetCommandPool( vkGetDeviceProcAddr( device, "vkResetCommandPool" ) ); + vkAllocateCommandBuffers = PFN_vkAllocateCommandBuffers( vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ) ); + vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ) ); + vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ) ); + vkEndCommandBuffer = PFN_vkEndCommandBuffer( vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ) ); + vkResetCommandBuffer = PFN_vkResetCommandBuffer( vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ) ); + vkCmdCopyBuffer = PFN_vkCmdCopyBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ) ); + vkCmdCopyImage = PFN_vkCmdCopyImage( vkGetDeviceProcAddr( device, "vkCmdCopyImage" ) ); + vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ) ); + vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ) ); + vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer( vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ) ); + vkCmdFillBuffer = PFN_vkCmdFillBuffer( vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ) ); + vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ) ); + vkCmdBeginQuery = PFN_vkCmdBeginQuery( vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ) ); + vkCmdEndQuery = PFN_vkCmdEndQuery( vkGetDeviceProcAddr( device, "vkCmdEndQuery" ) ); + vkCmdResetQueryPool = PFN_vkCmdResetQueryPool( vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ) ); + vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ) ); + vkCmdCopyQueryPoolResults = PFN_vkCmdCopyQueryPoolResults( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ) ); + vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ) ); + vkCreateEvent = PFN_vkCreateEvent( vkGetDeviceProcAddr( device, "vkCreateEvent" ) ); + vkDestroyEvent = PFN_vkDestroyEvent( vkGetDeviceProcAddr( device, "vkDestroyEvent" ) ); + vkGetEventStatus = PFN_vkGetEventStatus( vkGetDeviceProcAddr( device, "vkGetEventStatus" ) ); + vkSetEvent = PFN_vkSetEvent( vkGetDeviceProcAddr( device, "vkSetEvent" ) ); + vkResetEvent = PFN_vkResetEvent( vkGetDeviceProcAddr( device, "vkResetEvent" ) ); + vkCreateBufferView = PFN_vkCreateBufferView( vkGetDeviceProcAddr( device, "vkCreateBufferView" ) ); + vkDestroyBufferView = PFN_vkDestroyBufferView( vkGetDeviceProcAddr( device, "vkDestroyBufferView" ) ); + vkCreateShaderModule = PFN_vkCreateShaderModule( vkGetDeviceProcAddr( device, "vkCreateShaderModule" ) ); + vkDestroyShaderModule = PFN_vkDestroyShaderModule( vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ) ); + vkCreatePipelineCache = PFN_vkCreatePipelineCache( vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ) ); + vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ) ); + vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ) ); + vkMergePipelineCaches = PFN_vkMergePipelineCaches( vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ) ); + vkCreateComputePipelines = PFN_vkCreateComputePipelines( vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ) ); + vkDestroyPipeline = PFN_vkDestroyPipeline( vkGetDeviceProcAddr( device, "vkDestroyPipeline" ) ); + vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ) ); + vkDestroyPipelineLayout = PFN_vkDestroyPipelineLayout( vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ) ); + vkCreateSampler = PFN_vkCreateSampler( vkGetDeviceProcAddr( device, "vkCreateSampler" ) ); + vkDestroySampler = PFN_vkDestroySampler( vkGetDeviceProcAddr( device, "vkDestroySampler" ) ); + vkCreateDescriptorSetLayout = PFN_vkCreateDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ) ); + vkDestroyDescriptorSetLayout = PFN_vkDestroyDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ) ); + vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ) ); + vkDestroyDescriptorPool = PFN_vkDestroyDescriptorPool( vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ) ); + vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ) ); + vkAllocateDescriptorSets = PFN_vkAllocateDescriptorSets( vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ) ); + vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ) ); + vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ) ); + vkCmdBindPipeline = PFN_vkCmdBindPipeline( vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ) ); + vkCmdBindDescriptorSets = PFN_vkCmdBindDescriptorSets( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ) ); + vkCmdClearColorImage = PFN_vkCmdClearColorImage( vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ) ); + vkCmdDispatch = PFN_vkCmdDispatch( vkGetDeviceProcAddr( device, "vkCmdDispatch" ) ); + vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ) ); + vkCmdSetEvent = PFN_vkCmdSetEvent( vkGetDeviceProcAddr( device, "vkCmdSetEvent" ) ); + vkCmdResetEvent = PFN_vkCmdResetEvent( vkGetDeviceProcAddr( device, "vkCmdResetEvent" ) ); + vkCmdWaitEvents = PFN_vkCmdWaitEvents( vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ) ); + vkCmdPushConstants = PFN_vkCmdPushConstants( vkGetDeviceProcAddr( device, "vkCmdPushConstants" ) ); + vkCreateGraphicsPipelines = PFN_vkCreateGraphicsPipelines( vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ) ); + vkCreateFramebuffer = PFN_vkCreateFramebuffer( vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ) ); + vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ) ); + vkCreateRenderPass = PFN_vkCreateRenderPass( vkGetDeviceProcAddr( device, "vkCreateRenderPass" ) ); + vkDestroyRenderPass = PFN_vkDestroyRenderPass( vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ) ); + vkGetRenderAreaGranularity = PFN_vkGetRenderAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ) ); + vkCmdSetViewport = PFN_vkCmdSetViewport( vkGetDeviceProcAddr( device, "vkCmdSetViewport" ) ); + vkCmdSetScissor = PFN_vkCmdSetScissor( vkGetDeviceProcAddr( device, "vkCmdSetScissor" ) ); + vkCmdSetLineWidth = PFN_vkCmdSetLineWidth( vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ) ); + vkCmdSetDepthBias = PFN_vkCmdSetDepthBias( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ) ); + vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ) ); + vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ) ); + vkCmdSetStencilCompareMask = PFN_vkCmdSetStencilCompareMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ) ); + vkCmdSetStencilWriteMask = PFN_vkCmdSetStencilWriteMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ) ); + vkCmdSetStencilReference = PFN_vkCmdSetStencilReference( vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ) ); + vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ) ); + vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ) ); + vkCmdDraw = PFN_vkCmdDraw( vkGetDeviceProcAddr( device, "vkCmdDraw" ) ); + vkCmdDrawIndexed = PFN_vkCmdDrawIndexed( vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ) ); + vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ) ); + vkCmdDrawIndexedIndirect = PFN_vkCmdDrawIndexedIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ) ); + vkCmdBlitImage = PFN_vkCmdBlitImage( vkGetDeviceProcAddr( device, "vkCmdBlitImage" ) ); + vkCmdClearDepthStencilImage = PFN_vkCmdClearDepthStencilImage( vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ) ); + vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ) ); + vkCmdResolveImage = PFN_vkCmdResolveImage( vkGetDeviceProcAddr( device, "vkCmdResolveImage" ) ); + vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ) ); + vkCmdNextSubpass = PFN_vkCmdNextSubpass( vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ) ); + vkCmdEndRenderPass = PFN_vkCmdEndRenderPass( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ) ); + + //=== VK_VERSION_1_1 === + vkBindBufferMemory2 = PFN_vkBindBufferMemory2( vkGetDeviceProcAddr( device, "vkBindBufferMemory2" ) ); + vkBindImageMemory2 = PFN_vkBindImageMemory2( vkGetDeviceProcAddr( device, "vkBindImageMemory2" ) ); + vkGetDeviceGroupPeerMemoryFeatures = PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" ) ); + vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" ) ); + vkGetImageMemoryRequirements2 = PFN_vkGetImageMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" ) ); + vkGetBufferMemoryRequirements2 = PFN_vkGetBufferMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" ) ); + vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" ) ); + vkTrimCommandPool = PFN_vkTrimCommandPool( vkGetDeviceProcAddr( device, "vkTrimCommandPool" ) ); + vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" ) ); + vkCmdDispatchBase = PFN_vkCmdDispatchBase( vkGetDeviceProcAddr( device, "vkCmdDispatchBase" ) ); + vkCreateDescriptorUpdateTemplate = PFN_vkCreateDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" ) ); + vkDestroyDescriptorUpdateTemplate = PFN_vkDestroyDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" ) ); + vkUpdateDescriptorSetWithTemplate = PFN_vkUpdateDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" ) ); + vkGetDescriptorSetLayoutSupport = PFN_vkGetDescriptorSetLayoutSupport( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" ) ); + vkCreateSamplerYcbcrConversion = PFN_vkCreateSamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" ) ); + vkDestroySamplerYcbcrConversion = PFN_vkDestroySamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" ) ); + + //=== VK_VERSION_1_2 === + vkResetQueryPool = PFN_vkResetQueryPool( vkGetDeviceProcAddr( device, "vkResetQueryPool" ) ); + vkGetSemaphoreCounterValue = PFN_vkGetSemaphoreCounterValue( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValue" ) ); + vkWaitSemaphores = PFN_vkWaitSemaphores( vkGetDeviceProcAddr( device, "vkWaitSemaphores" ) ); + vkSignalSemaphore = PFN_vkSignalSemaphore( vkGetDeviceProcAddr( device, "vkSignalSemaphore" ) ); + vkGetBufferDeviceAddress = PFN_vkGetBufferDeviceAddress( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddress" ) ); + vkGetBufferOpaqueCaptureAddress = PFN_vkGetBufferOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddress" ) ); + vkGetDeviceMemoryOpaqueCaptureAddress = + PFN_vkGetDeviceMemoryOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddress" ) ); + vkCmdDrawIndirectCount = PFN_vkCmdDrawIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount" ) ); + vkCmdDrawIndexedIndirectCount = PFN_vkCmdDrawIndexedIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount" ) ); + vkCreateRenderPass2 = PFN_vkCreateRenderPass2( vkGetDeviceProcAddr( device, "vkCreateRenderPass2" ) ); + vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2" ) ); + vkCmdNextSubpass2 = PFN_vkCmdNextSubpass2( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2" ) ); + vkCmdEndRenderPass2 = PFN_vkCmdEndRenderPass2( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2" ) ); + + //=== VK_VERSION_1_3 === + vkCreatePrivateDataSlot = PFN_vkCreatePrivateDataSlot( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlot" ) ); + vkDestroyPrivateDataSlot = PFN_vkDestroyPrivateDataSlot( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlot" ) ); + vkSetPrivateData = PFN_vkSetPrivateData( vkGetDeviceProcAddr( device, "vkSetPrivateData" ) ); + vkGetPrivateData = PFN_vkGetPrivateData( vkGetDeviceProcAddr( device, "vkGetPrivateData" ) ); + vkCmdPipelineBarrier2 = PFN_vkCmdPipelineBarrier2( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2" ) ); + vkCmdWriteTimestamp2 = PFN_vkCmdWriteTimestamp2( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2" ) ); + vkQueueSubmit2 = PFN_vkQueueSubmit2( vkGetDeviceProcAddr( device, "vkQueueSubmit2" ) ); + vkCmdCopyBuffer2 = PFN_vkCmdCopyBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2" ) ); + vkCmdCopyImage2 = PFN_vkCmdCopyImage2( vkGetDeviceProcAddr( device, "vkCmdCopyImage2" ) ); + vkCmdCopyBufferToImage2 = PFN_vkCmdCopyBufferToImage2( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2" ) ); + vkCmdCopyImageToBuffer2 = PFN_vkCmdCopyImageToBuffer2( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2" ) ); + vkGetDeviceBufferMemoryRequirements = PFN_vkGetDeviceBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirements" ) ); + vkGetDeviceImageMemoryRequirements = PFN_vkGetDeviceImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirements" ) ); + vkGetDeviceImageSparseMemoryRequirements = + PFN_vkGetDeviceImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirements" ) ); + vkCmdSetEvent2 = PFN_vkCmdSetEvent2( vkGetDeviceProcAddr( device, "vkCmdSetEvent2" ) ); + vkCmdResetEvent2 = PFN_vkCmdResetEvent2( vkGetDeviceProcAddr( device, "vkCmdResetEvent2" ) ); + vkCmdWaitEvents2 = PFN_vkCmdWaitEvents2( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2" ) ); + vkCmdBlitImage2 = PFN_vkCmdBlitImage2( vkGetDeviceProcAddr( device, "vkCmdBlitImage2" ) ); + vkCmdResolveImage2 = PFN_vkCmdResolveImage2( vkGetDeviceProcAddr( device, "vkCmdResolveImage2" ) ); + vkCmdBeginRendering = PFN_vkCmdBeginRendering( vkGetDeviceProcAddr( device, "vkCmdBeginRendering" ) ); + vkCmdEndRendering = PFN_vkCmdEndRendering( vkGetDeviceProcAddr( device, "vkCmdEndRendering" ) ); + vkCmdSetCullMode = PFN_vkCmdSetCullMode( vkGetDeviceProcAddr( device, "vkCmdSetCullMode" ) ); + vkCmdSetFrontFace = PFN_vkCmdSetFrontFace( vkGetDeviceProcAddr( device, "vkCmdSetFrontFace" ) ); + vkCmdSetPrimitiveTopology = PFN_vkCmdSetPrimitiveTopology( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopology" ) ); + vkCmdSetViewportWithCount = PFN_vkCmdSetViewportWithCount( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCount" ) ); + vkCmdSetScissorWithCount = PFN_vkCmdSetScissorWithCount( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCount" ) ); + vkCmdBindVertexBuffers2 = PFN_vkCmdBindVertexBuffers2( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2" ) ); + vkCmdSetDepthTestEnable = PFN_vkCmdSetDepthTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnable" ) ); + vkCmdSetDepthWriteEnable = PFN_vkCmdSetDepthWriteEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnable" ) ); + vkCmdSetDepthCompareOp = PFN_vkCmdSetDepthCompareOp( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOp" ) ); + vkCmdSetDepthBoundsTestEnable = PFN_vkCmdSetDepthBoundsTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnable" ) ); + vkCmdSetStencilTestEnable = PFN_vkCmdSetStencilTestEnable( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnable" ) ); + vkCmdSetStencilOp = PFN_vkCmdSetStencilOp( vkGetDeviceProcAddr( device, "vkCmdSetStencilOp" ) ); + vkCmdSetRasterizerDiscardEnable = PFN_vkCmdSetRasterizerDiscardEnable( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnable" ) ); + vkCmdSetDepthBiasEnable = PFN_vkCmdSetDepthBiasEnable( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnable" ) ); + vkCmdSetPrimitiveRestartEnable = PFN_vkCmdSetPrimitiveRestartEnable( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnable" ) ); + + //=== VK_VERSION_1_4 === + vkMapMemory2 = PFN_vkMapMemory2( vkGetDeviceProcAddr( device, "vkMapMemory2" ) ); + vkUnmapMemory2 = PFN_vkUnmapMemory2( vkGetDeviceProcAddr( device, "vkUnmapMemory2" ) ); + vkGetDeviceImageSubresourceLayout = PFN_vkGetDeviceImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetDeviceImageSubresourceLayout" ) ); + vkGetImageSubresourceLayout2 = PFN_vkGetImageSubresourceLayout2( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2" ) ); + vkCopyMemoryToImage = PFN_vkCopyMemoryToImage( vkGetDeviceProcAddr( device, "vkCopyMemoryToImage" ) ); + vkCopyImageToMemory = PFN_vkCopyImageToMemory( vkGetDeviceProcAddr( device, "vkCopyImageToMemory" ) ); + vkCopyImageToImage = PFN_vkCopyImageToImage( vkGetDeviceProcAddr( device, "vkCopyImageToImage" ) ); + vkTransitionImageLayout = PFN_vkTransitionImageLayout( vkGetDeviceProcAddr( device, "vkTransitionImageLayout" ) ); + vkCmdPushDescriptorSet = PFN_vkCmdPushDescriptorSet( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSet" ) ); + vkCmdPushDescriptorSetWithTemplate = PFN_vkCmdPushDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplate" ) ); + vkCmdBindDescriptorSets2 = PFN_vkCmdBindDescriptorSets2( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets2" ) ); + vkCmdPushConstants2 = PFN_vkCmdPushConstants2( vkGetDeviceProcAddr( device, "vkCmdPushConstants2" ) ); + vkCmdPushDescriptorSet2 = PFN_vkCmdPushDescriptorSet2( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSet2" ) ); + vkCmdPushDescriptorSetWithTemplate2 = PFN_vkCmdPushDescriptorSetWithTemplate2( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplate2" ) ); + vkCmdSetLineStipple = PFN_vkCmdSetLineStipple( vkGetDeviceProcAddr( device, "vkCmdSetLineStipple" ) ); + vkCmdBindIndexBuffer2 = PFN_vkCmdBindIndexBuffer2( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer2" ) ); + vkGetRenderingAreaGranularity = PFN_vkGetRenderingAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderingAreaGranularity" ) ); + vkCmdSetRenderingAttachmentLocations = + PFN_vkCmdSetRenderingAttachmentLocations( vkGetDeviceProcAddr( device, "vkCmdSetRenderingAttachmentLocations" ) ); + vkCmdSetRenderingInputAttachmentIndices = + PFN_vkCmdSetRenderingInputAttachmentIndices( vkGetDeviceProcAddr( device, "vkCmdSetRenderingInputAttachmentIndices" ) ); + + //=== VK_KHR_swapchain === + vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ) ); + vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ) ); + vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ) ); + vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ) ); + vkQueuePresentKHR = PFN_vkQueuePresentKHR( vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ) ); + vkGetDeviceGroupPresentCapabilitiesKHR = + PFN_vkGetDeviceGroupPresentCapabilitiesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" ) ); + vkGetDeviceGroupSurfacePresentModesKHR = + PFN_vkGetDeviceGroupSurfacePresentModesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" ) ); + vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" ) ); + + //=== VK_KHR_display_swapchain === + vkCreateSharedSwapchainsKHR = PFN_vkCreateSharedSwapchainsKHR( vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ) ); + + //=== VK_EXT_debug_marker === + vkDebugMarkerSetObjectTagEXT = PFN_vkDebugMarkerSetObjectTagEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ) ); + vkDebugMarkerSetObjectNameEXT = PFN_vkDebugMarkerSetObjectNameEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ) ); + vkCmdDebugMarkerBeginEXT = PFN_vkCmdDebugMarkerBeginEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ) ); + vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ) ); + vkCmdDebugMarkerInsertEXT = PFN_vkCmdDebugMarkerInsertEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ) ); + + //=== VK_KHR_video_queue === + vkCreateVideoSessionKHR = PFN_vkCreateVideoSessionKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionKHR" ) ); + vkDestroyVideoSessionKHR = PFN_vkDestroyVideoSessionKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionKHR" ) ); + vkGetVideoSessionMemoryRequirementsKHR = + PFN_vkGetVideoSessionMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetVideoSessionMemoryRequirementsKHR" ) ); + vkBindVideoSessionMemoryKHR = PFN_vkBindVideoSessionMemoryKHR( vkGetDeviceProcAddr( device, "vkBindVideoSessionMemoryKHR" ) ); + vkCreateVideoSessionParametersKHR = PFN_vkCreateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkCreateVideoSessionParametersKHR" ) ); + vkUpdateVideoSessionParametersKHR = PFN_vkUpdateVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkUpdateVideoSessionParametersKHR" ) ); + vkDestroyVideoSessionParametersKHR = PFN_vkDestroyVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkDestroyVideoSessionParametersKHR" ) ); + vkCmdBeginVideoCodingKHR = PFN_vkCmdBeginVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginVideoCodingKHR" ) ); + vkCmdEndVideoCodingKHR = PFN_vkCmdEndVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdEndVideoCodingKHR" ) ); + vkCmdControlVideoCodingKHR = PFN_vkCmdControlVideoCodingKHR( vkGetDeviceProcAddr( device, "vkCmdControlVideoCodingKHR" ) ); + + //=== VK_KHR_video_decode_queue === + vkCmdDecodeVideoKHR = PFN_vkCmdDecodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdDecodeVideoKHR" ) ); + + //=== VK_EXT_transform_feedback === + vkCmdBindTransformFeedbackBuffersEXT = + PFN_vkCmdBindTransformFeedbackBuffersEXT( vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" ) ); + vkCmdBeginTransformFeedbackEXT = PFN_vkCmdBeginTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" ) ); + vkCmdEndTransformFeedbackEXT = PFN_vkCmdEndTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" ) ); + vkCmdBeginQueryIndexedEXT = PFN_vkCmdBeginQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" ) ); + vkCmdEndQueryIndexedEXT = PFN_vkCmdEndQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" ) ); + vkCmdDrawIndirectByteCountEXT = PFN_vkCmdDrawIndirectByteCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" ) ); + + //=== VK_NVX_binary_import === + vkCreateCuModuleNVX = PFN_vkCreateCuModuleNVX( vkGetDeviceProcAddr( device, "vkCreateCuModuleNVX" ) ); + vkCreateCuFunctionNVX = PFN_vkCreateCuFunctionNVX( vkGetDeviceProcAddr( device, "vkCreateCuFunctionNVX" ) ); + vkDestroyCuModuleNVX = PFN_vkDestroyCuModuleNVX( vkGetDeviceProcAddr( device, "vkDestroyCuModuleNVX" ) ); + vkDestroyCuFunctionNVX = PFN_vkDestroyCuFunctionNVX( vkGetDeviceProcAddr( device, "vkDestroyCuFunctionNVX" ) ); + vkCmdCuLaunchKernelNVX = PFN_vkCmdCuLaunchKernelNVX( vkGetDeviceProcAddr( device, "vkCmdCuLaunchKernelNVX" ) ); + + //=== VK_NVX_image_view_handle === + vkGetImageViewHandleNVX = PFN_vkGetImageViewHandleNVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" ) ); + vkGetImageViewHandle64NVX = PFN_vkGetImageViewHandle64NVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandle64NVX" ) ); + vkGetImageViewAddressNVX = PFN_vkGetImageViewAddressNVX( vkGetDeviceProcAddr( device, "vkGetImageViewAddressNVX" ) ); + vkGetDeviceCombinedImageSamplerIndexNVX = + PFN_vkGetDeviceCombinedImageSamplerIndexNVX( vkGetDeviceProcAddr( device, "vkGetDeviceCombinedImageSamplerIndexNVX" ) ); + + //=== VK_AMD_draw_indirect_count === + vkCmdDrawIndirectCountAMD = PFN_vkCmdDrawIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD; + vkCmdDrawIndexedIndirectCountAMD = PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD; + + //=== VK_AMD_shader_info === + vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" ) ); + + //=== VK_KHR_dynamic_rendering === + vkCmdBeginRenderingKHR = PFN_vkCmdBeginRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderingKHR" ) ); + if ( !vkCmdBeginRendering ) + vkCmdBeginRendering = vkCmdBeginRenderingKHR; + vkCmdEndRenderingKHR = PFN_vkCmdEndRenderingKHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderingKHR" ) ); + if ( !vkCmdEndRendering ) + vkCmdEndRendering = vkCmdEndRenderingKHR; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + vkGetMemoryWin32HandleNV = PFN_vkGetMemoryWin32HandleNV( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_device_group === + vkGetDeviceGroupPeerMemoryFeaturesKHR = + PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) ); + if ( !vkGetDeviceGroupPeerMemoryFeatures ) + vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR; + vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHR" ) ); + if ( !vkCmdSetDeviceMask ) + vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR; + vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHR" ) ); + if ( !vkCmdDispatchBase ) + vkCmdDispatchBase = vkCmdDispatchBaseKHR; + + //=== VK_KHR_maintenance1 === + vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ) ); + if ( !vkTrimCommandPool ) + vkTrimCommandPool = vkTrimCommandPoolKHR; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + vkGetMemoryWin32HandleKHR = PFN_vkGetMemoryWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ) ); + vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ) ); + vkGetMemoryFdPropertiesKHR = PFN_vkGetMemoryFdPropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + vkImportSemaphoreWin32HandleKHR = PFN_vkImportSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ) ); + vkGetSemaphoreWin32HandleKHR = PFN_vkGetSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ) ); + vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ) ); + + //=== VK_KHR_push_descriptor === + vkCmdPushDescriptorSetKHR = PFN_vkCmdPushDescriptorSetKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ) ); + if ( !vkCmdPushDescriptorSet ) + vkCmdPushDescriptorSet = vkCmdPushDescriptorSetKHR; + vkCmdPushDescriptorSetWithTemplateKHR = + PFN_vkCmdPushDescriptorSetWithTemplateKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ) ); + if ( !vkCmdPushDescriptorSetWithTemplate ) + vkCmdPushDescriptorSetWithTemplate = vkCmdPushDescriptorSetWithTemplateKHR; + + //=== VK_EXT_conditional_rendering === + vkCmdBeginConditionalRenderingEXT = PFN_vkCmdBeginConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" ) ); + vkCmdEndConditionalRenderingEXT = PFN_vkCmdEndConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" ) ); + + //=== VK_KHR_descriptor_update_template === + vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ) ); + if ( !vkCreateDescriptorUpdateTemplate ) + vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR; + vkDestroyDescriptorUpdateTemplateKHR = + PFN_vkDestroyDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ) ); + if ( !vkDestroyDescriptorUpdateTemplate ) + vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR; + vkUpdateDescriptorSetWithTemplateKHR = + PFN_vkUpdateDescriptorSetWithTemplateKHR( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ) ); + if ( !vkUpdateDescriptorSetWithTemplate ) + vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR; + + //=== VK_NV_clip_space_w_scaling === + vkCmdSetViewportWScalingNV = PFN_vkCmdSetViewportWScalingNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ) ); + + //=== VK_EXT_display_control === + vkDisplayPowerControlEXT = PFN_vkDisplayPowerControlEXT( vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ) ); + vkRegisterDeviceEventEXT = PFN_vkRegisterDeviceEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ) ); + vkRegisterDisplayEventEXT = PFN_vkRegisterDisplayEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ) ); + vkGetSwapchainCounterEXT = PFN_vkGetSwapchainCounterEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ) ); + + //=== VK_GOOGLE_display_timing === + vkGetRefreshCycleDurationGOOGLE = PFN_vkGetRefreshCycleDurationGOOGLE( vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ) ); + vkGetPastPresentationTimingGOOGLE = PFN_vkGetPastPresentationTimingGOOGLE( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ) ); + + //=== VK_EXT_discard_rectangles === + vkCmdSetDiscardRectangleEXT = PFN_vkCmdSetDiscardRectangleEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ) ); + vkCmdSetDiscardRectangleEnableEXT = PFN_vkCmdSetDiscardRectangleEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEnableEXT" ) ); + vkCmdSetDiscardRectangleModeEXT = PFN_vkCmdSetDiscardRectangleModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleModeEXT" ) ); + + //=== VK_EXT_hdr_metadata === + vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ) ); + + //=== VK_KHR_create_renderpass2 === + vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" ) ); + if ( !vkCreateRenderPass2 ) + vkCreateRenderPass2 = vkCreateRenderPass2KHR; + vkCmdBeginRenderPass2KHR = PFN_vkCmdBeginRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" ) ); + if ( !vkCmdBeginRenderPass2 ) + vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR; + vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" ) ); + if ( !vkCmdNextSubpass2 ) + vkCmdNextSubpass2 = vkCmdNextSubpass2KHR; + vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" ) ); + if ( !vkCmdEndRenderPass2 ) + vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR; + + //=== VK_KHR_shared_presentable_image === + vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + vkImportFenceWin32HandleKHR = PFN_vkImportFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ) ); + vkGetFenceWin32HandleKHR = PFN_vkGetFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ) ); + vkGetFenceFdKHR = PFN_vkGetFenceFdKHR( vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ) ); + + //=== VK_KHR_performance_query === + vkAcquireProfilingLockKHR = PFN_vkAcquireProfilingLockKHR( vkGetDeviceProcAddr( device, "vkAcquireProfilingLockKHR" ) ); + vkReleaseProfilingLockKHR = PFN_vkReleaseProfilingLockKHR( vkGetDeviceProcAddr( device, "vkReleaseProfilingLockKHR" ) ); + + //=== VK_EXT_debug_utils === + vkSetDebugUtilsObjectNameEXT = PFN_vkSetDebugUtilsObjectNameEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" ) ); + vkSetDebugUtilsObjectTagEXT = PFN_vkSetDebugUtilsObjectTagEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" ) ); + vkQueueBeginDebugUtilsLabelEXT = PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" ) ); + vkQueueEndDebugUtilsLabelEXT = PFN_vkQueueEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" ) ); + vkQueueInsertDebugUtilsLabelEXT = PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" ) ); + vkCmdBeginDebugUtilsLabelEXT = PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" ) ); + vkCmdEndDebugUtilsLabelEXT = PFN_vkCmdEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" ) ); + vkCmdInsertDebugUtilsLabelEXT = PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" ) ); + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + vkGetAndroidHardwareBufferPropertiesANDROID = + PFN_vkGetAndroidHardwareBufferPropertiesANDROID( vkGetDeviceProcAddr( device, "vkGetAndroidHardwareBufferPropertiesANDROID" ) ); + vkGetMemoryAndroidHardwareBufferANDROID = + PFN_vkGetMemoryAndroidHardwareBufferANDROID( vkGetDeviceProcAddr( device, "vkGetMemoryAndroidHardwareBufferANDROID" ) ); +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + vkCreateExecutionGraphPipelinesAMDX = PFN_vkCreateExecutionGraphPipelinesAMDX( vkGetDeviceProcAddr( device, "vkCreateExecutionGraphPipelinesAMDX" ) ); + vkGetExecutionGraphPipelineScratchSizeAMDX = + PFN_vkGetExecutionGraphPipelineScratchSizeAMDX( vkGetDeviceProcAddr( device, "vkGetExecutionGraphPipelineScratchSizeAMDX" ) ); + vkGetExecutionGraphPipelineNodeIndexAMDX = + PFN_vkGetExecutionGraphPipelineNodeIndexAMDX( vkGetDeviceProcAddr( device, "vkGetExecutionGraphPipelineNodeIndexAMDX" ) ); + vkCmdInitializeGraphScratchMemoryAMDX = + PFN_vkCmdInitializeGraphScratchMemoryAMDX( vkGetDeviceProcAddr( device, "vkCmdInitializeGraphScratchMemoryAMDX" ) ); + vkCmdDispatchGraphAMDX = PFN_vkCmdDispatchGraphAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphAMDX" ) ); + vkCmdDispatchGraphIndirectAMDX = PFN_vkCmdDispatchGraphIndirectAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphIndirectAMDX" ) ); + vkCmdDispatchGraphIndirectCountAMDX = PFN_vkCmdDispatchGraphIndirectCountAMDX( vkGetDeviceProcAddr( device, "vkCmdDispatchGraphIndirectCountAMDX" ) ); +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + vkWriteSamplerDescriptorsEXT = PFN_vkWriteSamplerDescriptorsEXT( vkGetDeviceProcAddr( device, "vkWriteSamplerDescriptorsEXT" ) ); + vkWriteResourceDescriptorsEXT = PFN_vkWriteResourceDescriptorsEXT( vkGetDeviceProcAddr( device, "vkWriteResourceDescriptorsEXT" ) ); + vkCmdBindSamplerHeapEXT = PFN_vkCmdBindSamplerHeapEXT( vkGetDeviceProcAddr( device, "vkCmdBindSamplerHeapEXT" ) ); + vkCmdBindResourceHeapEXT = PFN_vkCmdBindResourceHeapEXT( vkGetDeviceProcAddr( device, "vkCmdBindResourceHeapEXT" ) ); + vkCmdPushDataEXT = PFN_vkCmdPushDataEXT( vkGetDeviceProcAddr( device, "vkCmdPushDataEXT" ) ); + vkGetImageOpaqueCaptureDataEXT = PFN_vkGetImageOpaqueCaptureDataEXT( vkGetDeviceProcAddr( device, "vkGetImageOpaqueCaptureDataEXT" ) ); + vkRegisterCustomBorderColorEXT = PFN_vkRegisterCustomBorderColorEXT( vkGetDeviceProcAddr( device, "vkRegisterCustomBorderColorEXT" ) ); + vkUnregisterCustomBorderColorEXT = PFN_vkUnregisterCustomBorderColorEXT( vkGetDeviceProcAddr( device, "vkUnregisterCustomBorderColorEXT" ) ); + vkGetTensorOpaqueCaptureDataARM = PFN_vkGetTensorOpaqueCaptureDataARM( vkGetDeviceProcAddr( device, "vkGetTensorOpaqueCaptureDataARM" ) ); + + //=== VK_EXT_sample_locations === + vkCmdSetSampleLocationsEXT = PFN_vkCmdSetSampleLocationsEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" ) ); + + //=== VK_KHR_get_memory_requirements2 === + vkGetImageMemoryRequirements2KHR = PFN_vkGetImageMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ) ); + if ( !vkGetImageMemoryRequirements2 ) + vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR; + vkGetBufferMemoryRequirements2KHR = PFN_vkGetBufferMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ) ); + if ( !vkGetBufferMemoryRequirements2 ) + vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR; + vkGetImageSparseMemoryRequirements2KHR = + PFN_vkGetImageSparseMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ) ); + if ( !vkGetImageSparseMemoryRequirements2 ) + vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR; + + //=== VK_KHR_acceleration_structure === + vkCreateAccelerationStructureKHR = PFN_vkCreateAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureKHR" ) ); + vkDestroyAccelerationStructureKHR = PFN_vkDestroyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureKHR" ) ); + vkCmdBuildAccelerationStructuresKHR = PFN_vkCmdBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresKHR" ) ); + vkCmdBuildAccelerationStructuresIndirectKHR = + PFN_vkCmdBuildAccelerationStructuresIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresIndirectKHR" ) ); + vkBuildAccelerationStructuresKHR = PFN_vkBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkBuildAccelerationStructuresKHR" ) ); + vkCopyAccelerationStructureKHR = PFN_vkCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureKHR" ) ); + vkCopyAccelerationStructureToMemoryKHR = + PFN_vkCopyAccelerationStructureToMemoryKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureToMemoryKHR" ) ); + vkCopyMemoryToAccelerationStructureKHR = + PFN_vkCopyMemoryToAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyMemoryToAccelerationStructureKHR" ) ); + vkWriteAccelerationStructuresPropertiesKHR = + PFN_vkWriteAccelerationStructuresPropertiesKHR( vkGetDeviceProcAddr( device, "vkWriteAccelerationStructuresPropertiesKHR" ) ); + vkCmdCopyAccelerationStructureKHR = PFN_vkCmdCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureKHR" ) ); + vkCmdCopyAccelerationStructureToMemoryKHR = + PFN_vkCmdCopyAccelerationStructureToMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureToMemoryKHR" ) ); + vkCmdCopyMemoryToAccelerationStructureKHR = + PFN_vkCmdCopyMemoryToAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToAccelerationStructureKHR" ) ); + vkGetAccelerationStructureDeviceAddressKHR = + PFN_vkGetAccelerationStructureDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureDeviceAddressKHR" ) ); + vkCmdWriteAccelerationStructuresPropertiesKHR = + PFN_vkCmdWriteAccelerationStructuresPropertiesKHR( vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) ); + vkGetDeviceAccelerationStructureCompatibilityKHR = + PFN_vkGetDeviceAccelerationStructureCompatibilityKHR( vkGetDeviceProcAddr( device, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) ); + vkGetAccelerationStructureBuildSizesKHR = + PFN_vkGetAccelerationStructureBuildSizesKHR( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureBuildSizesKHR" ) ); + + //=== VK_KHR_ray_tracing_pipeline === + vkCmdTraceRaysKHR = PFN_vkCmdTraceRaysKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysKHR" ) ); + vkCreateRayTracingPipelinesKHR = PFN_vkCreateRayTracingPipelinesKHR( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesKHR" ) ); + vkGetRayTracingShaderGroupHandlesKHR = + PFN_vkGetRayTracingShaderGroupHandlesKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesKHR" ) ); + vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = + PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) ); + vkCmdTraceRaysIndirectKHR = PFN_vkCmdTraceRaysIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirectKHR" ) ); + vkGetRayTracingShaderGroupStackSizeKHR = + PFN_vkGetRayTracingShaderGroupStackSizeKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupStackSizeKHR" ) ); + vkCmdSetRayTracingPipelineStackSizeKHR = + PFN_vkCmdSetRayTracingPipelineStackSizeKHR( vkGetDeviceProcAddr( device, "vkCmdSetRayTracingPipelineStackSizeKHR" ) ); + + //=== VK_KHR_sampler_ycbcr_conversion === + vkCreateSamplerYcbcrConversionKHR = PFN_vkCreateSamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversionKHR" ) ); + if ( !vkCreateSamplerYcbcrConversion ) + vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR; + vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversionKHR" ) ); + if ( !vkDestroySamplerYcbcrConversion ) + vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR; + + //=== VK_KHR_bind_memory2 === + vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHR" ) ); + if ( !vkBindBufferMemory2 ) + vkBindBufferMemory2 = vkBindBufferMemory2KHR; + vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetDeviceProcAddr( device, "vkBindImageMemory2KHR" ) ); + if ( !vkBindImageMemory2 ) + vkBindImageMemory2 = vkBindImageMemory2KHR; + + //=== VK_EXT_image_drm_format_modifier === + vkGetImageDrmFormatModifierPropertiesEXT = + PFN_vkGetImageDrmFormatModifierPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" ) ); + + //=== VK_EXT_validation_cache === + vkCreateValidationCacheEXT = PFN_vkCreateValidationCacheEXT( vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" ) ); + vkDestroyValidationCacheEXT = PFN_vkDestroyValidationCacheEXT( vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" ) ); + vkMergeValidationCachesEXT = PFN_vkMergeValidationCachesEXT( vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" ) ); + vkGetValidationCacheDataEXT = PFN_vkGetValidationCacheDataEXT( vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" ) ); + + //=== VK_NV_shading_rate_image === + vkCmdBindShadingRateImageNV = PFN_vkCmdBindShadingRateImageNV( vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" ) ); + vkCmdSetViewportShadingRatePaletteNV = + PFN_vkCmdSetViewportShadingRatePaletteNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" ) ); + vkCmdSetCoarseSampleOrderNV = PFN_vkCmdSetCoarseSampleOrderNV( vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" ) ); + + //=== VK_NV_ray_tracing === + vkCreateAccelerationStructureNV = PFN_vkCreateAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" ) ); + vkDestroyAccelerationStructureNV = PFN_vkDestroyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" ) ); + vkGetAccelerationStructureMemoryRequirementsNV = + PFN_vkGetAccelerationStructureMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" ) ); + vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV( vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" ) ); + vkCmdBuildAccelerationStructureNV = PFN_vkCmdBuildAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" ) ); + vkCmdCopyAccelerationStructureNV = PFN_vkCmdCopyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" ) ); + vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" ) ); + vkCreateRayTracingPipelinesNV = PFN_vkCreateRayTracingPipelinesNV( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" ) ); + vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" ) ); + if ( !vkGetRayTracingShaderGroupHandlesKHR ) + vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV; + vkGetAccelerationStructureHandleNV = PFN_vkGetAccelerationStructureHandleNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" ) ); + vkCmdWriteAccelerationStructuresPropertiesNV = + PFN_vkCmdWriteAccelerationStructuresPropertiesNV( vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" ) ); + vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetDeviceProcAddr( device, "vkCompileDeferredNV" ) ); + + //=== VK_KHR_maintenance3 === + vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupportKHR" ) ); + if ( !vkGetDescriptorSetLayoutSupport ) + vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR; + + //=== VK_KHR_draw_indirect_count === + vkCmdDrawIndirectCountKHR = PFN_vkCmdDrawIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" ) ); + if ( !vkCmdDrawIndirectCount ) + vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR; + vkCmdDrawIndexedIndirectCountKHR = PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" ) ); + if ( !vkCmdDrawIndexedIndirectCount ) + vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR; + + //=== VK_EXT_external_memory_host === + vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" ) ); + + //=== VK_AMD_buffer_marker === + vkCmdWriteBufferMarkerAMD = PFN_vkCmdWriteBufferMarkerAMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" ) ); + vkCmdWriteBufferMarker2AMD = PFN_vkCmdWriteBufferMarker2AMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarker2AMD" ) ); + + //=== VK_EXT_calibrated_timestamps === + vkGetCalibratedTimestampsEXT = PFN_vkGetCalibratedTimestampsEXT( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" ) ); + if ( !vkGetCalibratedTimestampsKHR ) + vkGetCalibratedTimestampsKHR = vkGetCalibratedTimestampsEXT; + + //=== VK_NV_mesh_shader === + vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" ) ); + vkCmdDrawMeshTasksIndirectNV = PFN_vkCmdDrawMeshTasksIndirectNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" ) ); + vkCmdDrawMeshTasksIndirectCountNV = PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" ) ); + + //=== VK_NV_scissor_exclusive === + vkCmdSetExclusiveScissorEnableNV = PFN_vkCmdSetExclusiveScissorEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorEnableNV" ) ); + vkCmdSetExclusiveScissorNV = PFN_vkCmdSetExclusiveScissorNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" ) ); + + //=== VK_NV_device_diagnostic_checkpoints === + vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" ) ); + vkGetQueueCheckpointDataNV = PFN_vkGetQueueCheckpointDataNV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" ) ); + vkGetQueueCheckpointData2NV = PFN_vkGetQueueCheckpointData2NV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointData2NV" ) ); + + //=== VK_KHR_timeline_semaphore === + vkGetSemaphoreCounterValueKHR = PFN_vkGetSemaphoreCounterValueKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValueKHR" ) ); + if ( !vkGetSemaphoreCounterValue ) + vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR; + vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetDeviceProcAddr( device, "vkWaitSemaphoresKHR" ) ); + if ( !vkWaitSemaphores ) + vkWaitSemaphores = vkWaitSemaphoresKHR; + vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetDeviceProcAddr( device, "vkSignalSemaphoreKHR" ) ); + if ( !vkSignalSemaphore ) + vkSignalSemaphore = vkSignalSemaphoreKHR; + + //=== VK_EXT_present_timing === + vkSetSwapchainPresentTimingQueueSizeEXT = + PFN_vkSetSwapchainPresentTimingQueueSizeEXT( vkGetDeviceProcAddr( device, "vkSetSwapchainPresentTimingQueueSizeEXT" ) ); + vkGetSwapchainTimingPropertiesEXT = PFN_vkGetSwapchainTimingPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainTimingPropertiesEXT" ) ); + vkGetSwapchainTimeDomainPropertiesEXT = + PFN_vkGetSwapchainTimeDomainPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainTimeDomainPropertiesEXT" ) ); + vkGetPastPresentationTimingEXT = PFN_vkGetPastPresentationTimingEXT( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingEXT" ) ); + + //=== VK_INTEL_performance_query === + vkInitializePerformanceApiINTEL = PFN_vkInitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" ) ); + vkUninitializePerformanceApiINTEL = PFN_vkUninitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" ) ); + vkCmdSetPerformanceMarkerINTEL = PFN_vkCmdSetPerformanceMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" ) ); + vkCmdSetPerformanceStreamMarkerINTEL = + PFN_vkCmdSetPerformanceStreamMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" ) ); + vkCmdSetPerformanceOverrideINTEL = PFN_vkCmdSetPerformanceOverrideINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" ) ); + vkAcquirePerformanceConfigurationINTEL = + PFN_vkAcquirePerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" ) ); + vkReleasePerformanceConfigurationINTEL = + PFN_vkReleasePerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" ) ); + vkQueueSetPerformanceConfigurationINTEL = + PFN_vkQueueSetPerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" ) ); + vkGetPerformanceParameterINTEL = PFN_vkGetPerformanceParameterINTEL( vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" ) ); + + //=== VK_AMD_display_native_hdr === + vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" ) ); + + //=== VK_KHR_fragment_shading_rate === + vkCmdSetFragmentShadingRateKHR = PFN_vkCmdSetFragmentShadingRateKHR( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateKHR" ) ); + + //=== VK_KHR_dynamic_rendering_local_read === + vkCmdSetRenderingAttachmentLocationsKHR = + PFN_vkCmdSetRenderingAttachmentLocationsKHR( vkGetDeviceProcAddr( device, "vkCmdSetRenderingAttachmentLocationsKHR" ) ); + if ( !vkCmdSetRenderingAttachmentLocations ) + vkCmdSetRenderingAttachmentLocations = vkCmdSetRenderingAttachmentLocationsKHR; + vkCmdSetRenderingInputAttachmentIndicesKHR = + PFN_vkCmdSetRenderingInputAttachmentIndicesKHR( vkGetDeviceProcAddr( device, "vkCmdSetRenderingInputAttachmentIndicesKHR" ) ); + if ( !vkCmdSetRenderingInputAttachmentIndices ) + vkCmdSetRenderingInputAttachmentIndices = vkCmdSetRenderingInputAttachmentIndicesKHR; + + //=== VK_EXT_buffer_device_address === + vkGetBufferDeviceAddressEXT = PFN_vkGetBufferDeviceAddressEXT( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT; + + //=== VK_KHR_present_wait === + vkWaitForPresentKHR = PFN_vkWaitForPresentKHR( vkGetDeviceProcAddr( device, "vkWaitForPresentKHR" ) ); + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkAcquireFullScreenExclusiveModeEXT" ) ); + vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkReleaseFullScreenExclusiveModeEXT" ) ); + vkGetDeviceGroupSurfacePresentModes2EXT = + PFN_vkGetDeviceGroupSurfacePresentModes2EXT( vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" ) ); +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_buffer_device_address === + vkGetBufferDeviceAddressKHR = PFN_vkGetBufferDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressKHR" ) ); + if ( !vkGetBufferDeviceAddress ) + vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR; + vkGetBufferOpaqueCaptureAddressKHR = PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddressKHR" ) ); + if ( !vkGetBufferOpaqueCaptureAddress ) + vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR; + vkGetDeviceMemoryOpaqueCaptureAddressKHR = + PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) ); + if ( !vkGetDeviceMemoryOpaqueCaptureAddress ) + vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR; + + //=== VK_EXT_line_rasterization === + vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" ) ); + if ( !vkCmdSetLineStipple ) + vkCmdSetLineStipple = vkCmdSetLineStippleEXT; + + //=== VK_EXT_host_query_reset === + vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" ) ); + if ( !vkResetQueryPool ) + vkResetQueryPool = vkResetQueryPoolEXT; + + //=== VK_EXT_extended_dynamic_state === + vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetCullModeEXT" ) ); + if ( !vkCmdSetCullMode ) + vkCmdSetCullMode = vkCmdSetCullModeEXT; + vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetDeviceProcAddr( device, "vkCmdSetFrontFaceEXT" ) ); + if ( !vkCmdSetFrontFace ) + vkCmdSetFrontFace = vkCmdSetFrontFaceEXT; + vkCmdSetPrimitiveTopologyEXT = PFN_vkCmdSetPrimitiveTopologyEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopologyEXT" ) ); + if ( !vkCmdSetPrimitiveTopology ) + vkCmdSetPrimitiveTopology = vkCmdSetPrimitiveTopologyEXT; + vkCmdSetViewportWithCountEXT = PFN_vkCmdSetViewportWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCountEXT" ) ); + if ( !vkCmdSetViewportWithCount ) + vkCmdSetViewportWithCount = vkCmdSetViewportWithCountEXT; + vkCmdSetScissorWithCountEXT = PFN_vkCmdSetScissorWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCountEXT" ) ); + if ( !vkCmdSetScissorWithCount ) + vkCmdSetScissorWithCount = vkCmdSetScissorWithCountEXT; + vkCmdBindVertexBuffers2EXT = PFN_vkCmdBindVertexBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2EXT" ) ); + if ( !vkCmdBindVertexBuffers2 ) + vkCmdBindVertexBuffers2 = vkCmdBindVertexBuffers2EXT; + vkCmdSetDepthTestEnableEXT = PFN_vkCmdSetDepthTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnableEXT" ) ); + if ( !vkCmdSetDepthTestEnable ) + vkCmdSetDepthTestEnable = vkCmdSetDepthTestEnableEXT; + vkCmdSetDepthWriteEnableEXT = PFN_vkCmdSetDepthWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnableEXT" ) ); + if ( !vkCmdSetDepthWriteEnable ) + vkCmdSetDepthWriteEnable = vkCmdSetDepthWriteEnableEXT; + vkCmdSetDepthCompareOpEXT = PFN_vkCmdSetDepthCompareOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOpEXT" ) ); + if ( !vkCmdSetDepthCompareOp ) + vkCmdSetDepthCompareOp = vkCmdSetDepthCompareOpEXT; + vkCmdSetDepthBoundsTestEnableEXT = PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnableEXT" ) ); + if ( !vkCmdSetDepthBoundsTestEnable ) + vkCmdSetDepthBoundsTestEnable = vkCmdSetDepthBoundsTestEnableEXT; + vkCmdSetStencilTestEnableEXT = PFN_vkCmdSetStencilTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnableEXT" ) ); + if ( !vkCmdSetStencilTestEnable ) + vkCmdSetStencilTestEnable = vkCmdSetStencilTestEnableEXT; + vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilOpEXT" ) ); + if ( !vkCmdSetStencilOp ) + vkCmdSetStencilOp = vkCmdSetStencilOpEXT; + + //=== VK_KHR_deferred_host_operations === + vkCreateDeferredOperationKHR = PFN_vkCreateDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkCreateDeferredOperationKHR" ) ); + vkDestroyDeferredOperationKHR = PFN_vkDestroyDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkDestroyDeferredOperationKHR" ) ); + vkGetDeferredOperationMaxConcurrencyKHR = + PFN_vkGetDeferredOperationMaxConcurrencyKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationMaxConcurrencyKHR" ) ); + vkGetDeferredOperationResultKHR = PFN_vkGetDeferredOperationResultKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationResultKHR" ) ); + vkDeferredOperationJoinKHR = PFN_vkDeferredOperationJoinKHR( vkGetDeviceProcAddr( device, "vkDeferredOperationJoinKHR" ) ); + + //=== VK_KHR_pipeline_executable_properties === + vkGetPipelineExecutablePropertiesKHR = + PFN_vkGetPipelineExecutablePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" ) ); + vkGetPipelineExecutableStatisticsKHR = + PFN_vkGetPipelineExecutableStatisticsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" ) ); + vkGetPipelineExecutableInternalRepresentationsKHR = + PFN_vkGetPipelineExecutableInternalRepresentationsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); + + //=== VK_EXT_host_image_copy === + vkCopyMemoryToImageEXT = PFN_vkCopyMemoryToImageEXT( vkGetDeviceProcAddr( device, "vkCopyMemoryToImageEXT" ) ); + if ( !vkCopyMemoryToImage ) + vkCopyMemoryToImage = vkCopyMemoryToImageEXT; + vkCopyImageToMemoryEXT = PFN_vkCopyImageToMemoryEXT( vkGetDeviceProcAddr( device, "vkCopyImageToMemoryEXT" ) ); + if ( !vkCopyImageToMemory ) + vkCopyImageToMemory = vkCopyImageToMemoryEXT; + vkCopyImageToImageEXT = PFN_vkCopyImageToImageEXT( vkGetDeviceProcAddr( device, "vkCopyImageToImageEXT" ) ); + if ( !vkCopyImageToImage ) + vkCopyImageToImage = vkCopyImageToImageEXT; + vkTransitionImageLayoutEXT = PFN_vkTransitionImageLayoutEXT( vkGetDeviceProcAddr( device, "vkTransitionImageLayoutEXT" ) ); + if ( !vkTransitionImageLayout ) + vkTransitionImageLayout = vkTransitionImageLayoutEXT; + vkGetImageSubresourceLayout2EXT = PFN_vkGetImageSubresourceLayout2EXT( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2EXT" ) ); + if ( !vkGetImageSubresourceLayout2 ) + vkGetImageSubresourceLayout2 = vkGetImageSubresourceLayout2EXT; + + //=== VK_KHR_map_memory2 === + vkMapMemory2KHR = PFN_vkMapMemory2KHR( vkGetDeviceProcAddr( device, "vkMapMemory2KHR" ) ); + if ( !vkMapMemory2 ) + vkMapMemory2 = vkMapMemory2KHR; + vkUnmapMemory2KHR = PFN_vkUnmapMemory2KHR( vkGetDeviceProcAddr( device, "vkUnmapMemory2KHR" ) ); + if ( !vkUnmapMemory2 ) + vkUnmapMemory2 = vkUnmapMemory2KHR; + + //=== VK_EXT_swapchain_maintenance1 === + vkReleaseSwapchainImagesEXT = PFN_vkReleaseSwapchainImagesEXT( vkGetDeviceProcAddr( device, "vkReleaseSwapchainImagesEXT" ) ); + if ( !vkReleaseSwapchainImagesKHR ) + vkReleaseSwapchainImagesKHR = vkReleaseSwapchainImagesEXT; + + //=== VK_NV_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsNV = + PFN_vkGetGeneratedCommandsMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsNV" ) ); + vkCmdPreprocessGeneratedCommandsNV = PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsNV" ) ); + vkCmdExecuteGeneratedCommandsNV = PFN_vkCmdExecuteGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsNV" ) ); + vkCmdBindPipelineShaderGroupNV = PFN_vkCmdBindPipelineShaderGroupNV( vkGetDeviceProcAddr( device, "vkCmdBindPipelineShaderGroupNV" ) ); + vkCreateIndirectCommandsLayoutNV = PFN_vkCreateIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNV" ) ); + vkDestroyIndirectCommandsLayoutNV = PFN_vkDestroyIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNV" ) ); + + //=== VK_EXT_depth_bias_control === + vkCmdSetDepthBias2EXT = PFN_vkCmdSetDepthBias2EXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias2EXT" ) ); + + //=== VK_EXT_private_data === + vkCreatePrivateDataSlotEXT = PFN_vkCreatePrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlotEXT" ) ); + if ( !vkCreatePrivateDataSlot ) + vkCreatePrivateDataSlot = vkCreatePrivateDataSlotEXT; + vkDestroyPrivateDataSlotEXT = PFN_vkDestroyPrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlotEXT" ) ); + if ( !vkDestroyPrivateDataSlot ) + vkDestroyPrivateDataSlot = vkDestroyPrivateDataSlotEXT; + vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkSetPrivateDataEXT" ) ); + if ( !vkSetPrivateData ) + vkSetPrivateData = vkSetPrivateDataEXT; + vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkGetPrivateDataEXT" ) ); + if ( !vkGetPrivateData ) + vkGetPrivateData = vkGetPrivateDataEXT; + + //=== VK_KHR_video_encode_queue === + vkGetEncodedVideoSessionParametersKHR = + PFN_vkGetEncodedVideoSessionParametersKHR( vkGetDeviceProcAddr( device, "vkGetEncodedVideoSessionParametersKHR" ) ); + vkCmdEncodeVideoKHR = PFN_vkCmdEncodeVideoKHR( vkGetDeviceProcAddr( device, "vkCmdEncodeVideoKHR" ) ); + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + vkCreateCudaModuleNV = PFN_vkCreateCudaModuleNV( vkGetDeviceProcAddr( device, "vkCreateCudaModuleNV" ) ); + vkGetCudaModuleCacheNV = PFN_vkGetCudaModuleCacheNV( vkGetDeviceProcAddr( device, "vkGetCudaModuleCacheNV" ) ); + vkCreateCudaFunctionNV = PFN_vkCreateCudaFunctionNV( vkGetDeviceProcAddr( device, "vkCreateCudaFunctionNV" ) ); + vkDestroyCudaModuleNV = PFN_vkDestroyCudaModuleNV( vkGetDeviceProcAddr( device, "vkDestroyCudaModuleNV" ) ); + vkDestroyCudaFunctionNV = PFN_vkDestroyCudaFunctionNV( vkGetDeviceProcAddr( device, "vkDestroyCudaFunctionNV" ) ); + vkCmdCudaLaunchKernelNV = PFN_vkCmdCudaLaunchKernelNV( vkGetDeviceProcAddr( device, "vkCmdCudaLaunchKernelNV" ) ); +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + vkCmdDispatchTileQCOM = PFN_vkCmdDispatchTileQCOM( vkGetDeviceProcAddr( device, "vkCmdDispatchTileQCOM" ) ); + vkCmdBeginPerTileExecutionQCOM = PFN_vkCmdBeginPerTileExecutionQCOM( vkGetDeviceProcAddr( device, "vkCmdBeginPerTileExecutionQCOM" ) ); + vkCmdEndPerTileExecutionQCOM = PFN_vkCmdEndPerTileExecutionQCOM( vkGetDeviceProcAddr( device, "vkCmdEndPerTileExecutionQCOM" ) ); + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + vkExportMetalObjectsEXT = PFN_vkExportMetalObjectsEXT( vkGetDeviceProcAddr( device, "vkExportMetalObjectsEXT" ) ); +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_synchronization2 === + vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdSetEvent2KHR" ) ); + if ( !vkCmdSetEvent2 ) + vkCmdSetEvent2 = vkCmdSetEvent2KHR; + vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdResetEvent2KHR" ) ); + if ( !vkCmdResetEvent2 ) + vkCmdResetEvent2 = vkCmdResetEvent2KHR; + vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2KHR" ) ); + if ( !vkCmdWaitEvents2 ) + vkCmdWaitEvents2 = vkCmdWaitEvents2KHR; + vkCmdPipelineBarrier2KHR = PFN_vkCmdPipelineBarrier2KHR( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2KHR" ) ); + if ( !vkCmdPipelineBarrier2 ) + vkCmdPipelineBarrier2 = vkCmdPipelineBarrier2KHR; + vkCmdWriteTimestamp2KHR = PFN_vkCmdWriteTimestamp2KHR( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2KHR" ) ); + if ( !vkCmdWriteTimestamp2 ) + vkCmdWriteTimestamp2 = vkCmdWriteTimestamp2KHR; + vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetDeviceProcAddr( device, "vkQueueSubmit2KHR" ) ); + if ( !vkQueueSubmit2 ) + vkQueueSubmit2 = vkQueueSubmit2KHR; + + //=== VK_EXT_descriptor_buffer === + vkGetDescriptorSetLayoutSizeEXT = PFN_vkGetDescriptorSetLayoutSizeEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSizeEXT" ) ); + vkGetDescriptorSetLayoutBindingOffsetEXT = + PFN_vkGetDescriptorSetLayoutBindingOffsetEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutBindingOffsetEXT" ) ); + vkGetDescriptorEXT = PFN_vkGetDescriptorEXT( vkGetDeviceProcAddr( device, "vkGetDescriptorEXT" ) ); + vkCmdBindDescriptorBuffersEXT = PFN_vkCmdBindDescriptorBuffersEXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBuffersEXT" ) ); + vkCmdSetDescriptorBufferOffsetsEXT = PFN_vkCmdSetDescriptorBufferOffsetsEXT( vkGetDeviceProcAddr( device, "vkCmdSetDescriptorBufferOffsetsEXT" ) ); + vkCmdBindDescriptorBufferEmbeddedSamplersEXT = + PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT" ) ); + vkGetBufferOpaqueCaptureDescriptorDataEXT = + PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureDescriptorDataEXT" ) ); + vkGetImageOpaqueCaptureDescriptorDataEXT = + PFN_vkGetImageOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetImageOpaqueCaptureDescriptorDataEXT" ) ); + vkGetImageViewOpaqueCaptureDescriptorDataEXT = + PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetImageViewOpaqueCaptureDescriptorDataEXT" ) ); + vkGetSamplerOpaqueCaptureDescriptorDataEXT = + PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT( vkGetDeviceProcAddr( device, "vkGetSamplerOpaqueCaptureDescriptorDataEXT" ) ); + vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( + vkGetDeviceProcAddr( device, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT" ) ); + + //=== VK_KHR_device_address_commands === + vkCmdBindIndexBuffer3KHR = PFN_vkCmdBindIndexBuffer3KHR( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer3KHR" ) ); + vkCmdBindVertexBuffers3KHR = PFN_vkCmdBindVertexBuffers3KHR( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers3KHR" ) ); + vkCmdDrawIndirect2KHR = PFN_vkCmdDrawIndirect2KHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect2KHR" ) ); + vkCmdDrawIndexedIndirect2KHR = PFN_vkCmdDrawIndexedIndirect2KHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect2KHR" ) ); + vkCmdDispatchIndirect2KHR = PFN_vkCmdDispatchIndirect2KHR( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect2KHR" ) ); + vkCmdCopyMemoryKHR = PFN_vkCmdCopyMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryKHR" ) ); + vkCmdCopyMemoryToImageKHR = PFN_vkCmdCopyMemoryToImageKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToImageKHR" ) ); + vkCmdCopyImageToMemoryKHR = PFN_vkCmdCopyImageToMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToMemoryKHR" ) ); + vkCmdUpdateMemoryKHR = PFN_vkCmdUpdateMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdUpdateMemoryKHR" ) ); + vkCmdFillMemoryKHR = PFN_vkCmdFillMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdFillMemoryKHR" ) ); + vkCmdCopyQueryPoolResultsToMemoryKHR = + PFN_vkCmdCopyQueryPoolResultsToMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResultsToMemoryKHR" ) ); + vkCmdDrawIndirectCount2KHR = PFN_vkCmdDrawIndirectCount2KHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount2KHR" ) ); + vkCmdDrawIndexedIndirectCount2KHR = PFN_vkCmdDrawIndexedIndirectCount2KHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount2KHR" ) ); + vkCmdBeginConditionalRendering2EXT = PFN_vkCmdBeginConditionalRendering2EXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRendering2EXT" ) ); + vkCmdBindTransformFeedbackBuffers2EXT = + PFN_vkCmdBindTransformFeedbackBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffers2EXT" ) ); + vkCmdBeginTransformFeedback2EXT = PFN_vkCmdBeginTransformFeedback2EXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedback2EXT" ) ); + vkCmdEndTransformFeedback2EXT = PFN_vkCmdEndTransformFeedback2EXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedback2EXT" ) ); + vkCmdDrawIndirectByteCount2EXT = PFN_vkCmdDrawIndirectByteCount2EXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCount2EXT" ) ); + vkCmdDrawMeshTasksIndirect2EXT = PFN_vkCmdDrawMeshTasksIndirect2EXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirect2EXT" ) ); + vkCmdDrawMeshTasksIndirectCount2EXT = PFN_vkCmdDrawMeshTasksIndirectCount2EXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCount2EXT" ) ); + vkCmdWriteMarkerToMemoryAMD = PFN_vkCmdWriteMarkerToMemoryAMD( vkGetDeviceProcAddr( device, "vkCmdWriteMarkerToMemoryAMD" ) ); + vkCreateAccelerationStructure2KHR = PFN_vkCreateAccelerationStructure2KHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructure2KHR" ) ); + + //=== VK_NV_fragment_shading_rate_enums === + vkCmdSetFragmentShadingRateEnumNV = PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateEnumNV" ) ); + + //=== VK_EXT_mesh_shader === + vkCmdDrawMeshTasksEXT = PFN_vkCmdDrawMeshTasksEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksEXT" ) ); + vkCmdDrawMeshTasksIndirectEXT = PFN_vkCmdDrawMeshTasksIndirectEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectEXT" ) ); + vkCmdDrawMeshTasksIndirectCountEXT = PFN_vkCmdDrawMeshTasksIndirectCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountEXT" ) ); + + //=== VK_KHR_copy_commands2 === + vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2KHR" ) ); + if ( !vkCmdCopyBuffer2 ) + vkCmdCopyBuffer2 = vkCmdCopyBuffer2KHR; + vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImage2KHR" ) ); + if ( !vkCmdCopyImage2 ) + vkCmdCopyImage2 = vkCmdCopyImage2KHR; + vkCmdCopyBufferToImage2KHR = PFN_vkCmdCopyBufferToImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2KHR" ) ); + if ( !vkCmdCopyBufferToImage2 ) + vkCmdCopyBufferToImage2 = vkCmdCopyBufferToImage2KHR; + vkCmdCopyImageToBuffer2KHR = PFN_vkCmdCopyImageToBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2KHR" ) ); + if ( !vkCmdCopyImageToBuffer2 ) + vkCmdCopyImageToBuffer2 = vkCmdCopyImageToBuffer2KHR; + vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetDeviceProcAddr( device, "vkCmdBlitImage2KHR" ) ); + if ( !vkCmdBlitImage2 ) + vkCmdBlitImage2 = vkCmdBlitImage2KHR; + vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetDeviceProcAddr( device, "vkCmdResolveImage2KHR" ) ); + if ( !vkCmdResolveImage2 ) + vkCmdResolveImage2 = vkCmdResolveImage2KHR; + + //=== VK_EXT_device_fault === + vkGetDeviceFaultInfoEXT = PFN_vkGetDeviceFaultInfoEXT( vkGetDeviceProcAddr( device, "vkGetDeviceFaultInfoEXT" ) ); + + //=== VK_EXT_vertex_input_dynamic_state === + vkCmdSetVertexInputEXT = PFN_vkCmdSetVertexInputEXT( vkGetDeviceProcAddr( device, "vkCmdSetVertexInputEXT" ) ); + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + vkGetMemoryZirconHandleFUCHSIA = PFN_vkGetMemoryZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandleFUCHSIA" ) ); + vkGetMemoryZirconHandlePropertiesFUCHSIA = + PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA( vkGetDeviceProcAddr( device, "vkGetMemoryZirconHandlePropertiesFUCHSIA" ) ); +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + vkImportSemaphoreZirconHandleFUCHSIA = + PFN_vkImportSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkImportSemaphoreZirconHandleFUCHSIA" ) ); + vkGetSemaphoreZirconHandleFUCHSIA = PFN_vkGetSemaphoreZirconHandleFUCHSIA( vkGetDeviceProcAddr( device, "vkGetSemaphoreZirconHandleFUCHSIA" ) ); +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + vkCreateBufferCollectionFUCHSIA = PFN_vkCreateBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkCreateBufferCollectionFUCHSIA" ) ); + vkSetBufferCollectionImageConstraintsFUCHSIA = + PFN_vkSetBufferCollectionImageConstraintsFUCHSIA( vkGetDeviceProcAddr( device, "vkSetBufferCollectionImageConstraintsFUCHSIA" ) ); + vkSetBufferCollectionBufferConstraintsFUCHSIA = + PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA( vkGetDeviceProcAddr( device, "vkSetBufferCollectionBufferConstraintsFUCHSIA" ) ); + vkDestroyBufferCollectionFUCHSIA = PFN_vkDestroyBufferCollectionFUCHSIA( vkGetDeviceProcAddr( device, "vkDestroyBufferCollectionFUCHSIA" ) ); + vkGetBufferCollectionPropertiesFUCHSIA = + PFN_vkGetBufferCollectionPropertiesFUCHSIA( vkGetDeviceProcAddr( device, "vkGetBufferCollectionPropertiesFUCHSIA" ) ); +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = + PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( vkGetDeviceProcAddr( device, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI" ) ); + vkCmdSubpassShadingHUAWEI = PFN_vkCmdSubpassShadingHUAWEI( vkGetDeviceProcAddr( device, "vkCmdSubpassShadingHUAWEI" ) ); + + //=== VK_HUAWEI_invocation_mask === + vkCmdBindInvocationMaskHUAWEI = PFN_vkCmdBindInvocationMaskHUAWEI( vkGetDeviceProcAddr( device, "vkCmdBindInvocationMaskHUAWEI" ) ); + + //=== VK_NV_external_memory_rdma === + vkGetMemoryRemoteAddressNV = PFN_vkGetMemoryRemoteAddressNV( vkGetDeviceProcAddr( device, "vkGetMemoryRemoteAddressNV" ) ); + + //=== VK_EXT_pipeline_properties === + vkGetPipelinePropertiesEXT = PFN_vkGetPipelinePropertiesEXT( vkGetDeviceProcAddr( device, "vkGetPipelinePropertiesEXT" ) ); + + //=== VK_EXT_extended_dynamic_state2 === + vkCmdSetPatchControlPointsEXT = PFN_vkCmdSetPatchControlPointsEXT( vkGetDeviceProcAddr( device, "vkCmdSetPatchControlPointsEXT" ) ); + vkCmdSetRasterizerDiscardEnableEXT = PFN_vkCmdSetRasterizerDiscardEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizerDiscardEnableEXT" ) ); + if ( !vkCmdSetRasterizerDiscardEnable ) + vkCmdSetRasterizerDiscardEnable = vkCmdSetRasterizerDiscardEnableEXT; + vkCmdSetDepthBiasEnableEXT = PFN_vkCmdSetDepthBiasEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBiasEnableEXT" ) ); + if ( !vkCmdSetDepthBiasEnable ) + vkCmdSetDepthBiasEnable = vkCmdSetDepthBiasEnableEXT; + vkCmdSetLogicOpEXT = PFN_vkCmdSetLogicOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEXT" ) ); + vkCmdSetPrimitiveRestartEnableEXT = PFN_vkCmdSetPrimitiveRestartEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveRestartEnableEXT" ) ); + if ( !vkCmdSetPrimitiveRestartEnable ) + vkCmdSetPrimitiveRestartEnable = vkCmdSetPrimitiveRestartEnableEXT; + + //=== VK_EXT_color_write_enable === + vkCmdSetColorWriteEnableEXT = PFN_vkCmdSetColorWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteEnableEXT" ) ); + + //=== VK_KHR_ray_tracing_maintenance1 === + vkCmdTraceRaysIndirect2KHR = PFN_vkCmdTraceRaysIndirect2KHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirect2KHR" ) ); + + //=== VK_EXT_multi_draw === + vkCmdDrawMultiEXT = PFN_vkCmdDrawMultiEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiEXT" ) ); + vkCmdDrawMultiIndexedEXT = PFN_vkCmdDrawMultiIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdDrawMultiIndexedEXT" ) ); + + //=== VK_EXT_opacity_micromap === + vkCreateMicromapEXT = PFN_vkCreateMicromapEXT( vkGetDeviceProcAddr( device, "vkCreateMicromapEXT" ) ); + vkDestroyMicromapEXT = PFN_vkDestroyMicromapEXT( vkGetDeviceProcAddr( device, "vkDestroyMicromapEXT" ) ); + vkCmdBuildMicromapsEXT = PFN_vkCmdBuildMicromapsEXT( vkGetDeviceProcAddr( device, "vkCmdBuildMicromapsEXT" ) ); + vkBuildMicromapsEXT = PFN_vkBuildMicromapsEXT( vkGetDeviceProcAddr( device, "vkBuildMicromapsEXT" ) ); + vkCopyMicromapEXT = PFN_vkCopyMicromapEXT( vkGetDeviceProcAddr( device, "vkCopyMicromapEXT" ) ); + vkCopyMicromapToMemoryEXT = PFN_vkCopyMicromapToMemoryEXT( vkGetDeviceProcAddr( device, "vkCopyMicromapToMemoryEXT" ) ); + vkCopyMemoryToMicromapEXT = PFN_vkCopyMemoryToMicromapEXT( vkGetDeviceProcAddr( device, "vkCopyMemoryToMicromapEXT" ) ); + vkWriteMicromapsPropertiesEXT = PFN_vkWriteMicromapsPropertiesEXT( vkGetDeviceProcAddr( device, "vkWriteMicromapsPropertiesEXT" ) ); + vkCmdCopyMicromapEXT = PFN_vkCmdCopyMicromapEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMicromapEXT" ) ); + vkCmdCopyMicromapToMemoryEXT = PFN_vkCmdCopyMicromapToMemoryEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMicromapToMemoryEXT" ) ); + vkCmdCopyMemoryToMicromapEXT = PFN_vkCmdCopyMemoryToMicromapEXT( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToMicromapEXT" ) ); + vkCmdWriteMicromapsPropertiesEXT = PFN_vkCmdWriteMicromapsPropertiesEXT( vkGetDeviceProcAddr( device, "vkCmdWriteMicromapsPropertiesEXT" ) ); + vkGetDeviceMicromapCompatibilityEXT = PFN_vkGetDeviceMicromapCompatibilityEXT( vkGetDeviceProcAddr( device, "vkGetDeviceMicromapCompatibilityEXT" ) ); + vkGetMicromapBuildSizesEXT = PFN_vkGetMicromapBuildSizesEXT( vkGetDeviceProcAddr( device, "vkGetMicromapBuildSizesEXT" ) ); + + //=== VK_HUAWEI_cluster_culling_shader === + vkCmdDrawClusterHUAWEI = PFN_vkCmdDrawClusterHUAWEI( vkGetDeviceProcAddr( device, "vkCmdDrawClusterHUAWEI" ) ); + vkCmdDrawClusterIndirectHUAWEI = PFN_vkCmdDrawClusterIndirectHUAWEI( vkGetDeviceProcAddr( device, "vkCmdDrawClusterIndirectHUAWEI" ) ); + + //=== VK_EXT_pageable_device_local_memory === + vkSetDeviceMemoryPriorityEXT = PFN_vkSetDeviceMemoryPriorityEXT( vkGetDeviceProcAddr( device, "vkSetDeviceMemoryPriorityEXT" ) ); + + //=== VK_KHR_maintenance4 === + vkGetDeviceBufferMemoryRequirementsKHR = + PFN_vkGetDeviceBufferMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceBufferMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceBufferMemoryRequirements ) + vkGetDeviceBufferMemoryRequirements = vkGetDeviceBufferMemoryRequirementsKHR; + vkGetDeviceImageMemoryRequirementsKHR = + PFN_vkGetDeviceImageMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageMemoryRequirements ) + vkGetDeviceImageMemoryRequirements = vkGetDeviceImageMemoryRequirementsKHR; + vkGetDeviceImageSparseMemoryRequirementsKHR = + PFN_vkGetDeviceImageSparseMemoryRequirementsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageSparseMemoryRequirementsKHR" ) ); + if ( !vkGetDeviceImageSparseMemoryRequirements ) + vkGetDeviceImageSparseMemoryRequirements = vkGetDeviceImageSparseMemoryRequirementsKHR; + + //=== VK_VALVE_descriptor_set_host_mapping === + vkGetDescriptorSetLayoutHostMappingInfoVALVE = + PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutHostMappingInfoVALVE" ) ); + vkGetDescriptorSetHostMappingVALVE = PFN_vkGetDescriptorSetHostMappingVALVE( vkGetDeviceProcAddr( device, "vkGetDescriptorSetHostMappingVALVE" ) ); + + //=== VK_NV_copy_memory_indirect === + vkCmdCopyMemoryIndirectNV = PFN_vkCmdCopyMemoryIndirectNV( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryIndirectNV" ) ); + vkCmdCopyMemoryToImageIndirectNV = PFN_vkCmdCopyMemoryToImageIndirectNV( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToImageIndirectNV" ) ); + + //=== VK_NV_memory_decompression === + vkCmdDecompressMemoryNV = PFN_vkCmdDecompressMemoryNV( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryNV" ) ); + vkCmdDecompressMemoryIndirectCountNV = + PFN_vkCmdDecompressMemoryIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryIndirectCountNV" ) ); + + //=== VK_NV_device_generated_commands_compute === + vkGetPipelineIndirectMemoryRequirementsNV = + PFN_vkGetPipelineIndirectMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetPipelineIndirectMemoryRequirementsNV" ) ); + vkCmdUpdatePipelineIndirectBufferNV = PFN_vkCmdUpdatePipelineIndirectBufferNV( vkGetDeviceProcAddr( device, "vkCmdUpdatePipelineIndirectBufferNV" ) ); + vkGetPipelineIndirectDeviceAddressNV = + PFN_vkGetPipelineIndirectDeviceAddressNV( vkGetDeviceProcAddr( device, "vkGetPipelineIndirectDeviceAddressNV" ) ); + +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + vkGetNativeBufferPropertiesOHOS = PFN_vkGetNativeBufferPropertiesOHOS( vkGetDeviceProcAddr( device, "vkGetNativeBufferPropertiesOHOS" ) ); + vkGetMemoryNativeBufferOHOS = PFN_vkGetMemoryNativeBufferOHOS( vkGetDeviceProcAddr( device, "vkGetMemoryNativeBufferOHOS" ) ); +# endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_extended_dynamic_state3 === + vkCmdSetDepthClampEnableEXT = PFN_vkCmdSetDepthClampEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClampEnableEXT" ) ); + vkCmdSetPolygonModeEXT = PFN_vkCmdSetPolygonModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetPolygonModeEXT" ) ); + vkCmdSetRasterizationSamplesEXT = PFN_vkCmdSetRasterizationSamplesEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizationSamplesEXT" ) ); + vkCmdSetSampleMaskEXT = PFN_vkCmdSetSampleMaskEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleMaskEXT" ) ); + vkCmdSetAlphaToCoverageEnableEXT = PFN_vkCmdSetAlphaToCoverageEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAlphaToCoverageEnableEXT" ) ); + vkCmdSetAlphaToOneEnableEXT = PFN_vkCmdSetAlphaToOneEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAlphaToOneEnableEXT" ) ); + vkCmdSetLogicOpEnableEXT = PFN_vkCmdSetLogicOpEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetLogicOpEnableEXT" ) ); + vkCmdSetColorBlendEnableEXT = PFN_vkCmdSetColorBlendEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendEnableEXT" ) ); + vkCmdSetColorBlendEquationEXT = PFN_vkCmdSetColorBlendEquationEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendEquationEXT" ) ); + vkCmdSetColorWriteMaskEXT = PFN_vkCmdSetColorWriteMaskEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorWriteMaskEXT" ) ); + vkCmdSetTessellationDomainOriginEXT = PFN_vkCmdSetTessellationDomainOriginEXT( vkGetDeviceProcAddr( device, "vkCmdSetTessellationDomainOriginEXT" ) ); + vkCmdSetRasterizationStreamEXT = PFN_vkCmdSetRasterizationStreamEXT( vkGetDeviceProcAddr( device, "vkCmdSetRasterizationStreamEXT" ) ); + vkCmdSetConservativeRasterizationModeEXT = + PFN_vkCmdSetConservativeRasterizationModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetConservativeRasterizationModeEXT" ) ); + vkCmdSetExtraPrimitiveOverestimationSizeEXT = + PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT( vkGetDeviceProcAddr( device, "vkCmdSetExtraPrimitiveOverestimationSizeEXT" ) ); + vkCmdSetDepthClipEnableEXT = PFN_vkCmdSetDepthClipEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClipEnableEXT" ) ); + vkCmdSetSampleLocationsEnableEXT = PFN_vkCmdSetSampleLocationsEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEnableEXT" ) ); + vkCmdSetColorBlendAdvancedEXT = PFN_vkCmdSetColorBlendAdvancedEXT( vkGetDeviceProcAddr( device, "vkCmdSetColorBlendAdvancedEXT" ) ); + vkCmdSetProvokingVertexModeEXT = PFN_vkCmdSetProvokingVertexModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetProvokingVertexModeEXT" ) ); + vkCmdSetLineRasterizationModeEXT = PFN_vkCmdSetLineRasterizationModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineRasterizationModeEXT" ) ); + vkCmdSetLineStippleEnableEXT = PFN_vkCmdSetLineStippleEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEnableEXT" ) ); + vkCmdSetDepthClipNegativeOneToOneEXT = + PFN_vkCmdSetDepthClipNegativeOneToOneEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClipNegativeOneToOneEXT" ) ); + vkCmdSetViewportWScalingEnableNV = PFN_vkCmdSetViewportWScalingEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingEnableNV" ) ); + vkCmdSetViewportSwizzleNV = PFN_vkCmdSetViewportSwizzleNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportSwizzleNV" ) ); + vkCmdSetCoverageToColorEnableNV = PFN_vkCmdSetCoverageToColorEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageToColorEnableNV" ) ); + vkCmdSetCoverageToColorLocationNV = PFN_vkCmdSetCoverageToColorLocationNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageToColorLocationNV" ) ); + vkCmdSetCoverageModulationModeNV = PFN_vkCmdSetCoverageModulationModeNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationModeNV" ) ); + vkCmdSetCoverageModulationTableEnableNV = + PFN_vkCmdSetCoverageModulationTableEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationTableEnableNV" ) ); + vkCmdSetCoverageModulationTableNV = PFN_vkCmdSetCoverageModulationTableNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageModulationTableNV" ) ); + vkCmdSetShadingRateImageEnableNV = PFN_vkCmdSetShadingRateImageEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetShadingRateImageEnableNV" ) ); + vkCmdSetRepresentativeFragmentTestEnableNV = + PFN_vkCmdSetRepresentativeFragmentTestEnableNV( vkGetDeviceProcAddr( device, "vkCmdSetRepresentativeFragmentTestEnableNV" ) ); + vkCmdSetCoverageReductionModeNV = PFN_vkCmdSetCoverageReductionModeNV( vkGetDeviceProcAddr( device, "vkCmdSetCoverageReductionModeNV" ) ); + + //=== VK_ARM_tensors === + vkCreateTensorARM = PFN_vkCreateTensorARM( vkGetDeviceProcAddr( device, "vkCreateTensorARM" ) ); + vkDestroyTensorARM = PFN_vkDestroyTensorARM( vkGetDeviceProcAddr( device, "vkDestroyTensorARM" ) ); + vkCreateTensorViewARM = PFN_vkCreateTensorViewARM( vkGetDeviceProcAddr( device, "vkCreateTensorViewARM" ) ); + vkDestroyTensorViewARM = PFN_vkDestroyTensorViewARM( vkGetDeviceProcAddr( device, "vkDestroyTensorViewARM" ) ); + vkGetTensorMemoryRequirementsARM = PFN_vkGetTensorMemoryRequirementsARM( vkGetDeviceProcAddr( device, "vkGetTensorMemoryRequirementsARM" ) ); + vkBindTensorMemoryARM = PFN_vkBindTensorMemoryARM( vkGetDeviceProcAddr( device, "vkBindTensorMemoryARM" ) ); + vkGetDeviceTensorMemoryRequirementsARM = + PFN_vkGetDeviceTensorMemoryRequirementsARM( vkGetDeviceProcAddr( device, "vkGetDeviceTensorMemoryRequirementsARM" ) ); + vkCmdCopyTensorARM = PFN_vkCmdCopyTensorARM( vkGetDeviceProcAddr( device, "vkCmdCopyTensorARM" ) ); + vkGetTensorOpaqueCaptureDescriptorDataARM = + PFN_vkGetTensorOpaqueCaptureDescriptorDataARM( vkGetDeviceProcAddr( device, "vkGetTensorOpaqueCaptureDescriptorDataARM" ) ); + vkGetTensorViewOpaqueCaptureDescriptorDataARM = + PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM( vkGetDeviceProcAddr( device, "vkGetTensorViewOpaqueCaptureDescriptorDataARM" ) ); + + //=== VK_EXT_shader_module_identifier === + vkGetShaderModuleIdentifierEXT = PFN_vkGetShaderModuleIdentifierEXT( vkGetDeviceProcAddr( device, "vkGetShaderModuleIdentifierEXT" ) ); + vkGetShaderModuleCreateInfoIdentifierEXT = + PFN_vkGetShaderModuleCreateInfoIdentifierEXT( vkGetDeviceProcAddr( device, "vkGetShaderModuleCreateInfoIdentifierEXT" ) ); + + //=== VK_NV_optical_flow === + vkCreateOpticalFlowSessionNV = PFN_vkCreateOpticalFlowSessionNV( vkGetDeviceProcAddr( device, "vkCreateOpticalFlowSessionNV" ) ); + vkDestroyOpticalFlowSessionNV = PFN_vkDestroyOpticalFlowSessionNV( vkGetDeviceProcAddr( device, "vkDestroyOpticalFlowSessionNV" ) ); + vkBindOpticalFlowSessionImageNV = PFN_vkBindOpticalFlowSessionImageNV( vkGetDeviceProcAddr( device, "vkBindOpticalFlowSessionImageNV" ) ); + vkCmdOpticalFlowExecuteNV = PFN_vkCmdOpticalFlowExecuteNV( vkGetDeviceProcAddr( device, "vkCmdOpticalFlowExecuteNV" ) ); + + //=== VK_KHR_maintenance5 === + vkCmdBindIndexBuffer2KHR = PFN_vkCmdBindIndexBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer2KHR" ) ); + if ( !vkCmdBindIndexBuffer2 ) + vkCmdBindIndexBuffer2 = vkCmdBindIndexBuffer2KHR; + vkGetRenderingAreaGranularityKHR = PFN_vkGetRenderingAreaGranularityKHR( vkGetDeviceProcAddr( device, "vkGetRenderingAreaGranularityKHR" ) ); + if ( !vkGetRenderingAreaGranularity ) + vkGetRenderingAreaGranularity = vkGetRenderingAreaGranularityKHR; + vkGetDeviceImageSubresourceLayoutKHR = + PFN_vkGetDeviceImageSubresourceLayoutKHR( vkGetDeviceProcAddr( device, "vkGetDeviceImageSubresourceLayoutKHR" ) ); + if ( !vkGetDeviceImageSubresourceLayout ) + vkGetDeviceImageSubresourceLayout = vkGetDeviceImageSubresourceLayoutKHR; + vkGetImageSubresourceLayout2KHR = PFN_vkGetImageSubresourceLayout2KHR( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout2KHR" ) ); + if ( !vkGetImageSubresourceLayout2 ) + vkGetImageSubresourceLayout2 = vkGetImageSubresourceLayout2KHR; + + //=== VK_AMD_anti_lag === + vkAntiLagUpdateAMD = PFN_vkAntiLagUpdateAMD( vkGetDeviceProcAddr( device, "vkAntiLagUpdateAMD" ) ); + + //=== VK_KHR_present_wait2 === + vkWaitForPresent2KHR = PFN_vkWaitForPresent2KHR( vkGetDeviceProcAddr( device, "vkWaitForPresent2KHR" ) ); + + //=== VK_EXT_shader_object === + vkCreateShadersEXT = PFN_vkCreateShadersEXT( vkGetDeviceProcAddr( device, "vkCreateShadersEXT" ) ); + vkDestroyShaderEXT = PFN_vkDestroyShaderEXT( vkGetDeviceProcAddr( device, "vkDestroyShaderEXT" ) ); + vkGetShaderBinaryDataEXT = PFN_vkGetShaderBinaryDataEXT( vkGetDeviceProcAddr( device, "vkGetShaderBinaryDataEXT" ) ); + vkCmdBindShadersEXT = PFN_vkCmdBindShadersEXT( vkGetDeviceProcAddr( device, "vkCmdBindShadersEXT" ) ); + vkCmdSetDepthClampRangeEXT = PFN_vkCmdSetDepthClampRangeEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthClampRangeEXT" ) ); + + //=== VK_KHR_pipeline_binary === + vkCreatePipelineBinariesKHR = PFN_vkCreatePipelineBinariesKHR( vkGetDeviceProcAddr( device, "vkCreatePipelineBinariesKHR" ) ); + vkDestroyPipelineBinaryKHR = PFN_vkDestroyPipelineBinaryKHR( vkGetDeviceProcAddr( device, "vkDestroyPipelineBinaryKHR" ) ); + vkGetPipelineKeyKHR = PFN_vkGetPipelineKeyKHR( vkGetDeviceProcAddr( device, "vkGetPipelineKeyKHR" ) ); + vkGetPipelineBinaryDataKHR = PFN_vkGetPipelineBinaryDataKHR( vkGetDeviceProcAddr( device, "vkGetPipelineBinaryDataKHR" ) ); + vkReleaseCapturedPipelineDataKHR = PFN_vkReleaseCapturedPipelineDataKHR( vkGetDeviceProcAddr( device, "vkReleaseCapturedPipelineDataKHR" ) ); + + //=== VK_QCOM_tile_properties === + vkGetFramebufferTilePropertiesQCOM = PFN_vkGetFramebufferTilePropertiesQCOM( vkGetDeviceProcAddr( device, "vkGetFramebufferTilePropertiesQCOM" ) ); + vkGetDynamicRenderingTilePropertiesQCOM = + PFN_vkGetDynamicRenderingTilePropertiesQCOM( vkGetDeviceProcAddr( device, "vkGetDynamicRenderingTilePropertiesQCOM" ) ); + + //=== VK_KHR_swapchain_maintenance1 === + vkReleaseSwapchainImagesKHR = PFN_vkReleaseSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkReleaseSwapchainImagesKHR" ) ); + + //=== VK_NV_cooperative_vector === + vkConvertCooperativeVectorMatrixNV = PFN_vkConvertCooperativeVectorMatrixNV( vkGetDeviceProcAddr( device, "vkConvertCooperativeVectorMatrixNV" ) ); + vkCmdConvertCooperativeVectorMatrixNV = + PFN_vkCmdConvertCooperativeVectorMatrixNV( vkGetDeviceProcAddr( device, "vkCmdConvertCooperativeVectorMatrixNV" ) ); + + //=== VK_NV_low_latency2 === + vkSetLatencySleepModeNV = PFN_vkSetLatencySleepModeNV( vkGetDeviceProcAddr( device, "vkSetLatencySleepModeNV" ) ); + vkLatencySleepNV = PFN_vkLatencySleepNV( vkGetDeviceProcAddr( device, "vkLatencySleepNV" ) ); + vkSetLatencyMarkerNV = PFN_vkSetLatencyMarkerNV( vkGetDeviceProcAddr( device, "vkSetLatencyMarkerNV" ) ); + vkGetLatencyTimingsNV = PFN_vkGetLatencyTimingsNV( vkGetDeviceProcAddr( device, "vkGetLatencyTimingsNV" ) ); + vkQueueNotifyOutOfBandNV = PFN_vkQueueNotifyOutOfBandNV( vkGetDeviceProcAddr( device, "vkQueueNotifyOutOfBandNV" ) ); + + //=== VK_ARM_data_graph === + vkCreateDataGraphPipelinesARM = PFN_vkCreateDataGraphPipelinesARM( vkGetDeviceProcAddr( device, "vkCreateDataGraphPipelinesARM" ) ); + vkCreateDataGraphPipelineSessionARM = PFN_vkCreateDataGraphPipelineSessionARM( vkGetDeviceProcAddr( device, "vkCreateDataGraphPipelineSessionARM" ) ); + vkGetDataGraphPipelineSessionBindPointRequirementsARM = + PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelineSessionBindPointRequirementsARM" ) ); + vkGetDataGraphPipelineSessionMemoryRequirementsARM = + PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelineSessionMemoryRequirementsARM" ) ); + vkBindDataGraphPipelineSessionMemoryARM = + PFN_vkBindDataGraphPipelineSessionMemoryARM( vkGetDeviceProcAddr( device, "vkBindDataGraphPipelineSessionMemoryARM" ) ); + vkDestroyDataGraphPipelineSessionARM = + PFN_vkDestroyDataGraphPipelineSessionARM( vkGetDeviceProcAddr( device, "vkDestroyDataGraphPipelineSessionARM" ) ); + vkCmdDispatchDataGraphARM = PFN_vkCmdDispatchDataGraphARM( vkGetDeviceProcAddr( device, "vkCmdDispatchDataGraphARM" ) ); + vkGetDataGraphPipelineAvailablePropertiesARM = + PFN_vkGetDataGraphPipelineAvailablePropertiesARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelineAvailablePropertiesARM" ) ); + vkGetDataGraphPipelinePropertiesARM = PFN_vkGetDataGraphPipelinePropertiesARM( vkGetDeviceProcAddr( device, "vkGetDataGraphPipelinePropertiesARM" ) ); + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + vkCmdSetAttachmentFeedbackLoopEnableEXT = + PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetAttachmentFeedbackLoopEnableEXT" ) ); + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + vkGetScreenBufferPropertiesQNX = PFN_vkGetScreenBufferPropertiesQNX( vkGetDeviceProcAddr( device, "vkGetScreenBufferPropertiesQNX" ) ); +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_line_rasterization === + vkCmdSetLineStippleKHR = PFN_vkCmdSetLineStippleKHR( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleKHR" ) ); + if ( !vkCmdSetLineStipple ) + vkCmdSetLineStipple = vkCmdSetLineStippleKHR; + + //=== VK_KHR_calibrated_timestamps === + vkGetCalibratedTimestampsKHR = PFN_vkGetCalibratedTimestampsKHR( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsKHR" ) ); + + //=== VK_KHR_maintenance6 === + vkCmdBindDescriptorSets2KHR = PFN_vkCmdBindDescriptorSets2KHR( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets2KHR" ) ); + if ( !vkCmdBindDescriptorSets2 ) + vkCmdBindDescriptorSets2 = vkCmdBindDescriptorSets2KHR; + vkCmdPushConstants2KHR = PFN_vkCmdPushConstants2KHR( vkGetDeviceProcAddr( device, "vkCmdPushConstants2KHR" ) ); + if ( !vkCmdPushConstants2 ) + vkCmdPushConstants2 = vkCmdPushConstants2KHR; + vkCmdPushDescriptorSet2KHR = PFN_vkCmdPushDescriptorSet2KHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSet2KHR" ) ); + if ( !vkCmdPushDescriptorSet2 ) + vkCmdPushDescriptorSet2 = vkCmdPushDescriptorSet2KHR; + vkCmdPushDescriptorSetWithTemplate2KHR = + PFN_vkCmdPushDescriptorSetWithTemplate2KHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplate2KHR" ) ); + if ( !vkCmdPushDescriptorSetWithTemplate2 ) + vkCmdPushDescriptorSetWithTemplate2 = vkCmdPushDescriptorSetWithTemplate2KHR; + vkCmdSetDescriptorBufferOffsets2EXT = PFN_vkCmdSetDescriptorBufferOffsets2EXT( vkGetDeviceProcAddr( device, "vkCmdSetDescriptorBufferOffsets2EXT" ) ); + vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = + PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT" ) ); + + //=== VK_QCOM_tile_memory_heap === + vkCmdBindTileMemoryQCOM = PFN_vkCmdBindTileMemoryQCOM( vkGetDeviceProcAddr( device, "vkCmdBindTileMemoryQCOM" ) ); + + //=== VK_KHR_copy_memory_indirect === + vkCmdCopyMemoryIndirectKHR = PFN_vkCmdCopyMemoryIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryIndirectKHR" ) ); + vkCmdCopyMemoryToImageIndirectKHR = PFN_vkCmdCopyMemoryToImageIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToImageIndirectKHR" ) ); + + //=== VK_EXT_memory_decompression === + vkCmdDecompressMemoryEXT = PFN_vkCmdDecompressMemoryEXT( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryEXT" ) ); + vkCmdDecompressMemoryIndirectCountEXT = + PFN_vkCmdDecompressMemoryIndirectCountEXT( vkGetDeviceProcAddr( device, "vkCmdDecompressMemoryIndirectCountEXT" ) ); + + //=== VK_NV_external_compute_queue === + vkCreateExternalComputeQueueNV = PFN_vkCreateExternalComputeQueueNV( vkGetDeviceProcAddr( device, "vkCreateExternalComputeQueueNV" ) ); + vkDestroyExternalComputeQueueNV = PFN_vkDestroyExternalComputeQueueNV( vkGetDeviceProcAddr( device, "vkDestroyExternalComputeQueueNV" ) ); + vkGetExternalComputeQueueDataNV = PFN_vkGetExternalComputeQueueDataNV( vkGetDeviceProcAddr( device, "vkGetExternalComputeQueueDataNV" ) ); + + //=== VK_NV_cluster_acceleration_structure === + vkGetClusterAccelerationStructureBuildSizesNV = + PFN_vkGetClusterAccelerationStructureBuildSizesNV( vkGetDeviceProcAddr( device, "vkGetClusterAccelerationStructureBuildSizesNV" ) ); + vkCmdBuildClusterAccelerationStructureIndirectNV = + PFN_vkCmdBuildClusterAccelerationStructureIndirectNV( vkGetDeviceProcAddr( device, "vkCmdBuildClusterAccelerationStructureIndirectNV" ) ); + + //=== VK_NV_partitioned_acceleration_structure === + vkGetPartitionedAccelerationStructuresBuildSizesNV = + PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV( vkGetDeviceProcAddr( device, "vkGetPartitionedAccelerationStructuresBuildSizesNV" ) ); + vkCmdBuildPartitionedAccelerationStructuresNV = + PFN_vkCmdBuildPartitionedAccelerationStructuresNV( vkGetDeviceProcAddr( device, "vkCmdBuildPartitionedAccelerationStructuresNV" ) ); + + //=== VK_EXT_device_generated_commands === + vkGetGeneratedCommandsMemoryRequirementsEXT = + PFN_vkGetGeneratedCommandsMemoryRequirementsEXT( vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsEXT" ) ); + vkCmdPreprocessGeneratedCommandsEXT = PFN_vkCmdPreprocessGeneratedCommandsEXT( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsEXT" ) ); + vkCmdExecuteGeneratedCommandsEXT = PFN_vkCmdExecuteGeneratedCommandsEXT( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsEXT" ) ); + vkCreateIndirectCommandsLayoutEXT = PFN_vkCreateIndirectCommandsLayoutEXT( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutEXT" ) ); + vkDestroyIndirectCommandsLayoutEXT = PFN_vkDestroyIndirectCommandsLayoutEXT( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutEXT" ) ); + vkCreateIndirectExecutionSetEXT = PFN_vkCreateIndirectExecutionSetEXT( vkGetDeviceProcAddr( device, "vkCreateIndirectExecutionSetEXT" ) ); + vkDestroyIndirectExecutionSetEXT = PFN_vkDestroyIndirectExecutionSetEXT( vkGetDeviceProcAddr( device, "vkDestroyIndirectExecutionSetEXT" ) ); + vkUpdateIndirectExecutionSetPipelineEXT = + PFN_vkUpdateIndirectExecutionSetPipelineEXT( vkGetDeviceProcAddr( device, "vkUpdateIndirectExecutionSetPipelineEXT" ) ); + vkUpdateIndirectExecutionSetShaderEXT = + PFN_vkUpdateIndirectExecutionSetShaderEXT( vkGetDeviceProcAddr( device, "vkUpdateIndirectExecutionSetShaderEXT" ) ); + + //=== VK_KHR_device_fault === + vkGetDeviceFaultReportsKHR = PFN_vkGetDeviceFaultReportsKHR( vkGetDeviceProcAddr( device, "vkGetDeviceFaultReportsKHR" ) ); + vkGetDeviceFaultDebugInfoKHR = PFN_vkGetDeviceFaultDebugInfoKHR( vkGetDeviceProcAddr( device, "vkGetDeviceFaultDebugInfoKHR" ) ); + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + vkGetMemoryMetalHandleEXT = PFN_vkGetMemoryMetalHandleEXT( vkGetDeviceProcAddr( device, "vkGetMemoryMetalHandleEXT" ) ); + vkGetMemoryMetalHandlePropertiesEXT = PFN_vkGetMemoryMetalHandlePropertiesEXT( vkGetDeviceProcAddr( device, "vkGetMemoryMetalHandlePropertiesEXT" ) ); +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_shader_instrumentation === + vkCreateShaderInstrumentationARM = PFN_vkCreateShaderInstrumentationARM( vkGetDeviceProcAddr( device, "vkCreateShaderInstrumentationARM" ) ); + vkDestroyShaderInstrumentationARM = PFN_vkDestroyShaderInstrumentationARM( vkGetDeviceProcAddr( device, "vkDestroyShaderInstrumentationARM" ) ); + vkCmdBeginShaderInstrumentationARM = PFN_vkCmdBeginShaderInstrumentationARM( vkGetDeviceProcAddr( device, "vkCmdBeginShaderInstrumentationARM" ) ); + vkCmdEndShaderInstrumentationARM = PFN_vkCmdEndShaderInstrumentationARM( vkGetDeviceProcAddr( device, "vkCmdEndShaderInstrumentationARM" ) ); + vkGetShaderInstrumentationValuesARM = PFN_vkGetShaderInstrumentationValuesARM( vkGetDeviceProcAddr( device, "vkGetShaderInstrumentationValuesARM" ) ); + vkClearShaderInstrumentationMetricsARM = + PFN_vkClearShaderInstrumentationMetricsARM( vkGetDeviceProcAddr( device, "vkClearShaderInstrumentationMetricsARM" ) ); + + //=== VK_EXT_fragment_density_map_offset === + vkCmdEndRendering2EXT = PFN_vkCmdEndRendering2EXT( vkGetDeviceProcAddr( device, "vkCmdEndRendering2EXT" ) ); + if ( !vkCmdEndRendering2KHR ) + vkCmdEndRendering2KHR = vkCmdEndRendering2EXT; + + //=== VK_EXT_custom_resolve === + vkCmdBeginCustomResolveEXT = PFN_vkCmdBeginCustomResolveEXT( vkGetDeviceProcAddr( device, "vkCmdBeginCustomResolveEXT" ) ); + + //=== VK_KHR_maintenance10 === + vkCmdEndRendering2KHR = PFN_vkCmdEndRendering2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRendering2KHR" ) ); + + //=== VK_NV_compute_occupancy_priority === + vkCmdSetComputeOccupancyPriorityNV = PFN_vkCmdSetComputeOccupancyPriorityNV( vkGetDeviceProcAddr( device, "vkCmdSetComputeOccupancyPriorityNV" ) ); + } + + public: + //=== VK_VERSION_1_0 === + PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0; + PFN_vkDestroyDevice vkDestroyDevice = 0; + PFN_vkGetDeviceQueue vkGetDeviceQueue = 0; + PFN_vkQueueSubmit vkQueueSubmit = 0; + PFN_vkQueueWaitIdle vkQueueWaitIdle = 0; + PFN_vkDeviceWaitIdle vkDeviceWaitIdle = 0; + PFN_vkAllocateMemory vkAllocateMemory = 0; + PFN_vkFreeMemory vkFreeMemory = 0; + PFN_vkMapMemory vkMapMemory = 0; + PFN_vkUnmapMemory vkUnmapMemory = 0; + PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges = 0; + PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges = 0; + PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment = 0; + PFN_vkBindBufferMemory vkBindBufferMemory = 0; + PFN_vkBindImageMemory vkBindImageMemory = 0; + PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements = 0; + PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements = 0; + PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0; + PFN_vkQueueBindSparse vkQueueBindSparse = 0; + PFN_vkCreateFence vkCreateFence = 0; + PFN_vkDestroyFence vkDestroyFence = 0; + PFN_vkResetFences vkResetFences = 0; + PFN_vkGetFenceStatus vkGetFenceStatus = 0; + PFN_vkWaitForFences vkWaitForFences = 0; + PFN_vkCreateSemaphore vkCreateSemaphore = 0; + PFN_vkDestroySemaphore vkDestroySemaphore = 0; + PFN_vkCreateQueryPool vkCreateQueryPool = 0; + PFN_vkDestroyQueryPool vkDestroyQueryPool = 0; + PFN_vkGetQueryPoolResults vkGetQueryPoolResults = 0; + PFN_vkCreateBuffer vkCreateBuffer = 0; + PFN_vkDestroyBuffer vkDestroyBuffer = 0; + PFN_vkCreateImage vkCreateImage = 0; + PFN_vkDestroyImage vkDestroyImage = 0; + PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout = 0; + PFN_vkCreateImageView vkCreateImageView = 0; + PFN_vkDestroyImageView vkDestroyImageView = 0; + PFN_vkCreateCommandPool vkCreateCommandPool = 0; + PFN_vkDestroyCommandPool vkDestroyCommandPool = 0; + PFN_vkResetCommandPool vkResetCommandPool = 0; + PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = 0; + PFN_vkFreeCommandBuffers vkFreeCommandBuffers = 0; + PFN_vkBeginCommandBuffer vkBeginCommandBuffer = 0; + PFN_vkEndCommandBuffer vkEndCommandBuffer = 0; + PFN_vkResetCommandBuffer vkResetCommandBuffer = 0; + PFN_vkCmdCopyBuffer vkCmdCopyBuffer = 0; + PFN_vkCmdCopyImage vkCmdCopyImage = 0; + PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = 0; + PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer = 0; + PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer = 0; + PFN_vkCmdFillBuffer vkCmdFillBuffer = 0; + PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = 0; + PFN_vkCmdBeginQuery vkCmdBeginQuery = 0; + PFN_vkCmdEndQuery vkCmdEndQuery = 0; + PFN_vkCmdResetQueryPool vkCmdResetQueryPool = 0; + PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp = 0; + PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults = 0; + PFN_vkCmdExecuteCommands vkCmdExecuteCommands = 0; + PFN_vkCreateEvent vkCreateEvent = 0; + PFN_vkDestroyEvent vkDestroyEvent = 0; + PFN_vkGetEventStatus vkGetEventStatus = 0; + PFN_vkSetEvent vkSetEvent = 0; + PFN_vkResetEvent vkResetEvent = 0; + PFN_vkCreateBufferView vkCreateBufferView = 0; + PFN_vkDestroyBufferView vkDestroyBufferView = 0; + PFN_vkCreateShaderModule vkCreateShaderModule = 0; + PFN_vkDestroyShaderModule vkDestroyShaderModule = 0; + PFN_vkCreatePipelineCache vkCreatePipelineCache = 0; + PFN_vkDestroyPipelineCache vkDestroyPipelineCache = 0; + PFN_vkGetPipelineCacheData vkGetPipelineCacheData = 0; + PFN_vkMergePipelineCaches vkMergePipelineCaches = 0; + PFN_vkCreateComputePipelines vkCreateComputePipelines = 0; + PFN_vkDestroyPipeline vkDestroyPipeline = 0; + PFN_vkCreatePipelineLayout vkCreatePipelineLayout = 0; + PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = 0; + PFN_vkCreateSampler vkCreateSampler = 0; + PFN_vkDestroySampler vkDestroySampler = 0; + PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = 0; + PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0; + PFN_vkCreateDescriptorPool vkCreateDescriptorPool = 0; + PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = 0; + PFN_vkResetDescriptorPool vkResetDescriptorPool = 0; + PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets = 0; + PFN_vkFreeDescriptorSets vkFreeDescriptorSets = 0; + PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets = 0; + PFN_vkCmdBindPipeline vkCmdBindPipeline = 0; + PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = 0; + PFN_vkCmdClearColorImage vkCmdClearColorImage = 0; + PFN_vkCmdDispatch vkCmdDispatch = 0; + PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect = 0; + PFN_vkCmdSetEvent vkCmdSetEvent = 0; + PFN_vkCmdResetEvent vkCmdResetEvent = 0; + PFN_vkCmdWaitEvents vkCmdWaitEvents = 0; + PFN_vkCmdPushConstants vkCmdPushConstants = 0; + PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = 0; + PFN_vkCreateFramebuffer vkCreateFramebuffer = 0; + PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0; + PFN_vkCreateRenderPass vkCreateRenderPass = 0; + PFN_vkDestroyRenderPass vkDestroyRenderPass = 0; + PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity = 0; + PFN_vkCmdSetViewport vkCmdSetViewport = 0; + PFN_vkCmdSetScissor vkCmdSetScissor = 0; + PFN_vkCmdSetLineWidth vkCmdSetLineWidth = 0; + PFN_vkCmdSetDepthBias vkCmdSetDepthBias = 0; + PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants = 0; + PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds = 0; + PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask = 0; + PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask = 0; + PFN_vkCmdSetStencilReference vkCmdSetStencilReference = 0; + PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = 0; + PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0; + PFN_vkCmdDraw vkCmdDraw = 0; + PFN_vkCmdDrawIndexed vkCmdDrawIndexed = 0; + PFN_vkCmdDrawIndirect vkCmdDrawIndirect = 0; + PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect = 0; + PFN_vkCmdBlitImage vkCmdBlitImage = 0; + PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage = 0; + PFN_vkCmdClearAttachments vkCmdClearAttachments = 0; + PFN_vkCmdResolveImage vkCmdResolveImage = 0; + PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass = 0; + PFN_vkCmdNextSubpass vkCmdNextSubpass = 0; + PFN_vkCmdEndRenderPass vkCmdEndRenderPass = 0; + + //=== VK_VERSION_1_1 === + PFN_vkBindBufferMemory2 vkBindBufferMemory2 = 0; + PFN_vkBindImageMemory2 vkBindImageMemory2 = 0; + PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures = 0; + PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask = 0; + PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 = 0; + PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 = 0; + PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0; + PFN_vkTrimCommandPool vkTrimCommandPool = 0; + PFN_vkGetDeviceQueue2 vkGetDeviceQueue2 = 0; + PFN_vkCmdDispatchBase vkCmdDispatchBase = 0; + PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate = 0; + PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate = 0; + PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate = 0; + PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport = 0; + PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion = 0; + PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion = 0; + + //=== VK_VERSION_1_2 === + PFN_vkResetQueryPool vkResetQueryPool = 0; + PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue = 0; + PFN_vkWaitSemaphores vkWaitSemaphores = 0; + PFN_vkSignalSemaphore vkSignalSemaphore = 0; + PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress = 0; + PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress = 0; + PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress = 0; + PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount = 0; + PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount = 0; + PFN_vkCreateRenderPass2 vkCreateRenderPass2 = 0; + PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2 = 0; + PFN_vkCmdNextSubpass2 vkCmdNextSubpass2 = 0; + PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2 = 0; + + //=== VK_VERSION_1_3 === + PFN_vkCreatePrivateDataSlot vkCreatePrivateDataSlot = 0; + PFN_vkDestroyPrivateDataSlot vkDestroyPrivateDataSlot = 0; + PFN_vkSetPrivateData vkSetPrivateData = 0; + PFN_vkGetPrivateData vkGetPrivateData = 0; + PFN_vkCmdPipelineBarrier2 vkCmdPipelineBarrier2 = 0; + PFN_vkCmdWriteTimestamp2 vkCmdWriteTimestamp2 = 0; + PFN_vkQueueSubmit2 vkQueueSubmit2 = 0; + PFN_vkCmdCopyBuffer2 vkCmdCopyBuffer2 = 0; + PFN_vkCmdCopyImage2 vkCmdCopyImage2 = 0; + PFN_vkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2 = 0; + PFN_vkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2 = 0; + PFN_vkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirements = 0; + PFN_vkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirements = 0; + PFN_vkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirements = 0; + PFN_vkCmdSetEvent2 vkCmdSetEvent2 = 0; + PFN_vkCmdResetEvent2 vkCmdResetEvent2 = 0; + PFN_vkCmdWaitEvents2 vkCmdWaitEvents2 = 0; + PFN_vkCmdBlitImage2 vkCmdBlitImage2 = 0; + PFN_vkCmdResolveImage2 vkCmdResolveImage2 = 0; + PFN_vkCmdBeginRendering vkCmdBeginRendering = 0; + PFN_vkCmdEndRendering vkCmdEndRendering = 0; + PFN_vkCmdSetCullMode vkCmdSetCullMode = 0; + PFN_vkCmdSetFrontFace vkCmdSetFrontFace = 0; + PFN_vkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopology = 0; + PFN_vkCmdSetViewportWithCount vkCmdSetViewportWithCount = 0; + PFN_vkCmdSetScissorWithCount vkCmdSetScissorWithCount = 0; + PFN_vkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2 = 0; + PFN_vkCmdSetDepthTestEnable vkCmdSetDepthTestEnable = 0; + PFN_vkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnable = 0; + PFN_vkCmdSetDepthCompareOp vkCmdSetDepthCompareOp = 0; + PFN_vkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnable = 0; + PFN_vkCmdSetStencilTestEnable vkCmdSetStencilTestEnable = 0; + PFN_vkCmdSetStencilOp vkCmdSetStencilOp = 0; + PFN_vkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnable = 0; + PFN_vkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnable = 0; + PFN_vkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnable = 0; + + //=== VK_VERSION_1_4 === + PFN_vkMapMemory2 vkMapMemory2 = 0; + PFN_vkUnmapMemory2 vkUnmapMemory2 = 0; + PFN_vkGetDeviceImageSubresourceLayout vkGetDeviceImageSubresourceLayout = 0; + PFN_vkGetImageSubresourceLayout2 vkGetImageSubresourceLayout2 = 0; + PFN_vkCopyMemoryToImage vkCopyMemoryToImage = 0; + PFN_vkCopyImageToMemory vkCopyImageToMemory = 0; + PFN_vkCopyImageToImage vkCopyImageToImage = 0; + PFN_vkTransitionImageLayout vkTransitionImageLayout = 0; + PFN_vkCmdPushDescriptorSet vkCmdPushDescriptorSet = 0; + PFN_vkCmdPushDescriptorSetWithTemplate vkCmdPushDescriptorSetWithTemplate = 0; + PFN_vkCmdBindDescriptorSets2 vkCmdBindDescriptorSets2 = 0; + PFN_vkCmdPushConstants2 vkCmdPushConstants2 = 0; + PFN_vkCmdPushDescriptorSet2 vkCmdPushDescriptorSet2 = 0; + PFN_vkCmdPushDescriptorSetWithTemplate2 vkCmdPushDescriptorSetWithTemplate2 = 0; + PFN_vkCmdSetLineStipple vkCmdSetLineStipple = 0; + PFN_vkCmdBindIndexBuffer2 vkCmdBindIndexBuffer2 = 0; + PFN_vkGetRenderingAreaGranularity vkGetRenderingAreaGranularity = 0; + PFN_vkCmdSetRenderingAttachmentLocations vkCmdSetRenderingAttachmentLocations = 0; + PFN_vkCmdSetRenderingInputAttachmentIndices vkCmdSetRenderingInputAttachmentIndices = 0; + + //=== VK_KHR_swapchain === + PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR = 0; + PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR = 0; + PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = 0; + PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR = 0; + PFN_vkQueuePresentKHR vkQueuePresentKHR = 0; + PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0; + PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0; + PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR = 0; + + //=== VK_KHR_display_swapchain === + PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0; + + //=== VK_EXT_debug_marker === + PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT = 0; + PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0; + PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT = 0; + PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT = 0; + PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT = 0; + + //=== VK_KHR_video_queue === + PFN_vkCreateVideoSessionKHR vkCreateVideoSessionKHR = 0; + PFN_vkDestroyVideoSessionKHR vkDestroyVideoSessionKHR = 0; + PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR = 0; + PFN_vkBindVideoSessionMemoryKHR vkBindVideoSessionMemoryKHR = 0; + PFN_vkCreateVideoSessionParametersKHR vkCreateVideoSessionParametersKHR = 0; + PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR = 0; + PFN_vkDestroyVideoSessionParametersKHR vkDestroyVideoSessionParametersKHR = 0; + PFN_vkCmdBeginVideoCodingKHR vkCmdBeginVideoCodingKHR = 0; + PFN_vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR = 0; + PFN_vkCmdControlVideoCodingKHR vkCmdControlVideoCodingKHR = 0; + + //=== VK_KHR_video_decode_queue === + PFN_vkCmdDecodeVideoKHR vkCmdDecodeVideoKHR = 0; + + //=== VK_EXT_transform_feedback === + PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT = 0; + PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT = 0; + PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT = 0; + PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT = 0; + PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT = 0; + PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT = 0; + + //=== VK_NVX_binary_import === + PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX = 0; + PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX = 0; + PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX = 0; + PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX = 0; + PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX = 0; + + //=== VK_NVX_image_view_handle === + PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX = 0; + PFN_vkGetImageViewHandle64NVX vkGetImageViewHandle64NVX = 0; + PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX = 0; + PFN_vkGetDeviceCombinedImageSamplerIndexNVX vkGetDeviceCombinedImageSamplerIndexNVX = 0; + + //=== VK_AMD_draw_indirect_count === + PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD = 0; + PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0; + + //=== VK_AMD_shader_info === + PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0; + + //=== VK_KHR_dynamic_rendering === + PFN_vkCmdBeginRenderingKHR vkCmdBeginRenderingKHR = 0; + PFN_vkCmdEndRenderingKHR vkCmdEndRenderingKHR = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0; +# else + PFN_dummy vkGetMemoryWin32HandleNV_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_device_group === + PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR = 0; + PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR = 0; + PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR = 0; + + //=== VK_KHR_maintenance1 === + PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 0; + PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0; +# else + PFN_dummy vkGetMemoryWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetMemoryWin32HandlePropertiesKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR = 0; + PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0; + PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR = 0; +# else + PFN_dummy vkImportSemaphoreWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetSemaphoreWin32HandleKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0; + PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = 0; + + //=== VK_KHR_push_descriptor === + PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR = 0; + PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0; + + //=== VK_EXT_conditional_rendering === + PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0; + PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT = 0; + + //=== VK_KHR_descriptor_update_template === + PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR = 0; + PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0; + PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR = 0; + + //=== VK_NV_clip_space_w_scaling === + PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0; + + //=== VK_EXT_display_control === + PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT = 0; + PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT = 0; + PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0; + PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT = 0; + + //=== VK_GOOGLE_display_timing === + PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE = 0; + PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0; + + //=== VK_EXT_discard_rectangles === + PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT = 0; + PFN_vkCmdSetDiscardRectangleEnableEXT vkCmdSetDiscardRectangleEnableEXT = 0; + PFN_vkCmdSetDiscardRectangleModeEXT vkCmdSetDiscardRectangleModeEXT = 0; + + //=== VK_EXT_hdr_metadata === + PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0; + + //=== VK_KHR_create_renderpass2 === + PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR = 0; + PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0; + PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR = 0; + PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR = 0; + + //=== VK_KHR_shared_presentable_image === + PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0; + PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR = 0; +# else + PFN_dummy vkImportFenceWin32HandleKHR_placeholder = 0; + PFN_dummy vkGetFenceWin32HandleKHR_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0; + PFN_vkGetFenceFdKHR vkGetFenceFdKHR = 0; + + //=== VK_KHR_performance_query === + PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR = 0; + PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR = 0; + + //=== VK_EXT_debug_utils === + PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT = 0; + PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT = 0; + PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT = 0; + PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT = 0; + PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0; + PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT = 0; + PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT = 0; + PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT = 0; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0; + PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID = 0; +# else + PFN_dummy vkGetAndroidHardwareBufferPropertiesANDROID_placeholder = 0; + PFN_dummy vkGetMemoryAndroidHardwareBufferANDROID_placeholder = 0; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + PFN_vkCreateExecutionGraphPipelinesAMDX vkCreateExecutionGraphPipelinesAMDX = 0; + PFN_vkGetExecutionGraphPipelineScratchSizeAMDX vkGetExecutionGraphPipelineScratchSizeAMDX = 0; + PFN_vkGetExecutionGraphPipelineNodeIndexAMDX vkGetExecutionGraphPipelineNodeIndexAMDX = 0; + PFN_vkCmdInitializeGraphScratchMemoryAMDX vkCmdInitializeGraphScratchMemoryAMDX = 0; + PFN_vkCmdDispatchGraphAMDX vkCmdDispatchGraphAMDX = 0; + PFN_vkCmdDispatchGraphIndirectAMDX vkCmdDispatchGraphIndirectAMDX = 0; + PFN_vkCmdDispatchGraphIndirectCountAMDX vkCmdDispatchGraphIndirectCountAMDX = 0; +# else + PFN_dummy vkCreateExecutionGraphPipelinesAMDX_placeholder = 0; + PFN_dummy vkGetExecutionGraphPipelineScratchSizeAMDX_placeholder = 0; + PFN_dummy vkGetExecutionGraphPipelineNodeIndexAMDX_placeholder = 0; + PFN_dummy vkCmdInitializeGraphScratchMemoryAMDX_placeholder = 0; + PFN_dummy vkCmdDispatchGraphAMDX_placeholder = 0; + PFN_dummy vkCmdDispatchGraphIndirectAMDX_placeholder = 0; + PFN_dummy vkCmdDispatchGraphIndirectCountAMDX_placeholder = 0; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + PFN_vkWriteSamplerDescriptorsEXT vkWriteSamplerDescriptorsEXT = 0; + PFN_vkWriteResourceDescriptorsEXT vkWriteResourceDescriptorsEXT = 0; + PFN_vkCmdBindSamplerHeapEXT vkCmdBindSamplerHeapEXT = 0; + PFN_vkCmdBindResourceHeapEXT vkCmdBindResourceHeapEXT = 0; + PFN_vkCmdPushDataEXT vkCmdPushDataEXT = 0; + PFN_vkGetImageOpaqueCaptureDataEXT vkGetImageOpaqueCaptureDataEXT = 0; + PFN_vkRegisterCustomBorderColorEXT vkRegisterCustomBorderColorEXT = 0; + PFN_vkUnregisterCustomBorderColorEXT vkUnregisterCustomBorderColorEXT = 0; + PFN_vkGetTensorOpaqueCaptureDataARM vkGetTensorOpaqueCaptureDataARM = 0; + + //=== VK_EXT_sample_locations === + PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0; + + //=== VK_KHR_get_memory_requirements2 === + PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR = 0; + PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR = 0; + PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0; + + //=== VK_KHR_acceleration_structure === + PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR = 0; + PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR = 0; + PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR = 0; + PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR = 0; + PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR = 0; + PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR = 0; + PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR = 0; + PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR = 0; + PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR = 0; + PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR = 0; + PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR = 0; + PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR = 0; + PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR = 0; + PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR = 0; + PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR = 0; + PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR = 0; + + //=== VK_KHR_ray_tracing_pipeline === + PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR = 0; + PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR = 0; + PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR = 0; + PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0; + PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR = 0; + PFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR = 0; + PFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR = 0; + + //=== VK_KHR_sampler_ycbcr_conversion === + PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR = 0; + PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0; + + //=== VK_KHR_bind_memory2 === + PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0; + PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR = 0; + + //=== VK_EXT_image_drm_format_modifier === + PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT = 0; + + //=== VK_EXT_validation_cache === + PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT = 0; + PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0; + PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT = 0; + PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0; + + //=== VK_NV_shading_rate_image === + PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV = 0; + PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV = 0; + PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV = 0; + + //=== VK_NV_ray_tracing === + PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV = 0; + PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV = 0; + PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0; + PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV = 0; + PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV = 0; + PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV = 0; + PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV = 0; + PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV = 0; + PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV = 0; + PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV = 0; + PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV = 0; + PFN_vkCompileDeferredNV vkCompileDeferredNV = 0; + + //=== VK_KHR_maintenance3 === + PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0; + + //=== VK_KHR_draw_indirect_count === + PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR = 0; + PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0; + + //=== VK_EXT_external_memory_host === + PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0; + + //=== VK_AMD_buffer_marker === + PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0; + PFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD = 0; + + //=== VK_EXT_calibrated_timestamps === + PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT = 0; + + //=== VK_NV_mesh_shader === + PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV = 0; + PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV = 0; + PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0; + + //=== VK_NV_scissor_exclusive === + PFN_vkCmdSetExclusiveScissorEnableNV vkCmdSetExclusiveScissorEnableNV = 0; + PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV = 0; + + //=== VK_NV_device_diagnostic_checkpoints === + PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV = 0; + PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0; + PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV = 0; + + //=== VK_KHR_timeline_semaphore === + PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR = 0; + PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR = 0; + PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR = 0; + + //=== VK_EXT_present_timing === + PFN_vkSetSwapchainPresentTimingQueueSizeEXT vkSetSwapchainPresentTimingQueueSizeEXT = 0; + PFN_vkGetSwapchainTimingPropertiesEXT vkGetSwapchainTimingPropertiesEXT = 0; + PFN_vkGetSwapchainTimeDomainPropertiesEXT vkGetSwapchainTimeDomainPropertiesEXT = 0; + PFN_vkGetPastPresentationTimingEXT vkGetPastPresentationTimingEXT = 0; + + //=== VK_INTEL_performance_query === + PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL = 0; + PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL = 0; + PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL = 0; + PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL = 0; + PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL = 0; + PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL = 0; + PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL = 0; + PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL = 0; + PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL = 0; + + //=== VK_AMD_display_native_hdr === + PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD = 0; + + //=== VK_KHR_fragment_shading_rate === + PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR = 0; + + //=== VK_KHR_dynamic_rendering_local_read === + PFN_vkCmdSetRenderingAttachmentLocationsKHR vkCmdSetRenderingAttachmentLocationsKHR = 0; + PFN_vkCmdSetRenderingInputAttachmentIndicesKHR vkCmdSetRenderingInputAttachmentIndicesKHR = 0; + + //=== VK_EXT_buffer_device_address === + PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT = 0; + + //=== VK_KHR_present_wait === + PFN_vkWaitForPresentKHR vkWaitForPresentKHR = 0; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT = 0; + PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT = 0; + PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT = 0; +# else + PFN_dummy vkAcquireFullScreenExclusiveModeEXT_placeholder = 0; + PFN_dummy vkReleaseFullScreenExclusiveModeEXT_placeholder = 0; + PFN_dummy vkGetDeviceGroupSurfacePresentModes2EXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_buffer_device_address === + PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR = 0; + PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR = 0; + PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR = 0; + + //=== VK_EXT_line_rasterization === + PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT = 0; + + //=== VK_EXT_host_query_reset === + PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT = 0; + + //=== VK_EXT_extended_dynamic_state === + PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT = 0; + PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT = 0; + PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT = 0; + PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT = 0; + PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT = 0; + PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT = 0; + PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT = 0; + PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT = 0; + PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT = 0; + PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT = 0; + PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT = 0; + PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT = 0; + + //=== VK_KHR_deferred_host_operations === + PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR = 0; + PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR = 0; + PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR = 0; + PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR = 0; + PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR = 0; + + //=== VK_KHR_pipeline_executable_properties === + PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR = 0; + PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR = 0; + PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0; + + //=== VK_EXT_host_image_copy === + PFN_vkCopyMemoryToImageEXT vkCopyMemoryToImageEXT = 0; + PFN_vkCopyImageToMemoryEXT vkCopyImageToMemoryEXT = 0; + PFN_vkCopyImageToImageEXT vkCopyImageToImageEXT = 0; + PFN_vkTransitionImageLayoutEXT vkTransitionImageLayoutEXT = 0; + PFN_vkGetImageSubresourceLayout2EXT vkGetImageSubresourceLayout2EXT = 0; + + //=== VK_KHR_map_memory2 === + PFN_vkMapMemory2KHR vkMapMemory2KHR = 0; + PFN_vkUnmapMemory2KHR vkUnmapMemory2KHR = 0; + + //=== VK_EXT_swapchain_maintenance1 === + PFN_vkReleaseSwapchainImagesEXT vkReleaseSwapchainImagesEXT = 0; + + //=== VK_NV_device_generated_commands === + PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV = 0; + PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV = 0; + PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV = 0; + PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV = 0; + PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV = 0; + PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV = 0; + + //=== VK_EXT_depth_bias_control === + PFN_vkCmdSetDepthBias2EXT vkCmdSetDepthBias2EXT = 0; + + //=== VK_EXT_private_data === + PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT = 0; + PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT = 0; + PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT = 0; + PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT = 0; + + //=== VK_KHR_video_encode_queue === + PFN_vkGetEncodedVideoSessionParametersKHR vkGetEncodedVideoSessionParametersKHR = 0; + PFN_vkCmdEncodeVideoKHR vkCmdEncodeVideoKHR = 0; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + PFN_vkCreateCudaModuleNV vkCreateCudaModuleNV = 0; + PFN_vkGetCudaModuleCacheNV vkGetCudaModuleCacheNV = 0; + PFN_vkCreateCudaFunctionNV vkCreateCudaFunctionNV = 0; + PFN_vkDestroyCudaModuleNV vkDestroyCudaModuleNV = 0; + PFN_vkDestroyCudaFunctionNV vkDestroyCudaFunctionNV = 0; + PFN_vkCmdCudaLaunchKernelNV vkCmdCudaLaunchKernelNV = 0; +# else + PFN_dummy vkCreateCudaModuleNV_placeholder = 0; + PFN_dummy vkGetCudaModuleCacheNV_placeholder = 0; + PFN_dummy vkCreateCudaFunctionNV_placeholder = 0; + PFN_dummy vkDestroyCudaModuleNV_placeholder = 0; + PFN_dummy vkDestroyCudaFunctionNV_placeholder = 0; + PFN_dummy vkCmdCudaLaunchKernelNV_placeholder = 0; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + PFN_vkCmdDispatchTileQCOM vkCmdDispatchTileQCOM = 0; + PFN_vkCmdBeginPerTileExecutionQCOM vkCmdBeginPerTileExecutionQCOM = 0; + PFN_vkCmdEndPerTileExecutionQCOM vkCmdEndPerTileExecutionQCOM = 0; + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + PFN_vkExportMetalObjectsEXT vkExportMetalObjectsEXT = 0; +# else + PFN_dummy vkExportMetalObjectsEXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_synchronization2 === + PFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR = 0; + PFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR = 0; + PFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR = 0; + PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR = 0; + PFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR = 0; + PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR = 0; + + //=== VK_EXT_descriptor_buffer === + PFN_vkGetDescriptorSetLayoutSizeEXT vkGetDescriptorSetLayoutSizeEXT = 0; + PFN_vkGetDescriptorSetLayoutBindingOffsetEXT vkGetDescriptorSetLayoutBindingOffsetEXT = 0; + PFN_vkGetDescriptorEXT vkGetDescriptorEXT = 0; + PFN_vkCmdBindDescriptorBuffersEXT vkCmdBindDescriptorBuffersEXT = 0; + PFN_vkCmdSetDescriptorBufferOffsetsEXT vkCmdSetDescriptorBufferOffsetsEXT = 0; + PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT vkCmdBindDescriptorBufferEmbeddedSamplersEXT = 0; + PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT vkGetBufferOpaqueCaptureDescriptorDataEXT = 0; + PFN_vkGetImageOpaqueCaptureDescriptorDataEXT vkGetImageOpaqueCaptureDescriptorDataEXT = 0; + PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT vkGetImageViewOpaqueCaptureDescriptorDataEXT = 0; + PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT vkGetSamplerOpaqueCaptureDescriptorDataEXT = 0; + PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT = 0; + + //=== VK_KHR_device_address_commands === + PFN_vkCmdBindIndexBuffer3KHR vkCmdBindIndexBuffer3KHR = 0; + PFN_vkCmdBindVertexBuffers3KHR vkCmdBindVertexBuffers3KHR = 0; + PFN_vkCmdDrawIndirect2KHR vkCmdDrawIndirect2KHR = 0; + PFN_vkCmdDrawIndexedIndirect2KHR vkCmdDrawIndexedIndirect2KHR = 0; + PFN_vkCmdDispatchIndirect2KHR vkCmdDispatchIndirect2KHR = 0; + PFN_vkCmdCopyMemoryKHR vkCmdCopyMemoryKHR = 0; + PFN_vkCmdCopyMemoryToImageKHR vkCmdCopyMemoryToImageKHR = 0; + PFN_vkCmdCopyImageToMemoryKHR vkCmdCopyImageToMemoryKHR = 0; + PFN_vkCmdUpdateMemoryKHR vkCmdUpdateMemoryKHR = 0; + PFN_vkCmdFillMemoryKHR vkCmdFillMemoryKHR = 0; + PFN_vkCmdCopyQueryPoolResultsToMemoryKHR vkCmdCopyQueryPoolResultsToMemoryKHR = 0; + PFN_vkCmdDrawIndirectCount2KHR vkCmdDrawIndirectCount2KHR = 0; + PFN_vkCmdDrawIndexedIndirectCount2KHR vkCmdDrawIndexedIndirectCount2KHR = 0; + PFN_vkCmdBeginConditionalRendering2EXT vkCmdBeginConditionalRendering2EXT = 0; + PFN_vkCmdBindTransformFeedbackBuffers2EXT vkCmdBindTransformFeedbackBuffers2EXT = 0; + PFN_vkCmdBeginTransformFeedback2EXT vkCmdBeginTransformFeedback2EXT = 0; + PFN_vkCmdEndTransformFeedback2EXT vkCmdEndTransformFeedback2EXT = 0; + PFN_vkCmdDrawIndirectByteCount2EXT vkCmdDrawIndirectByteCount2EXT = 0; + PFN_vkCmdDrawMeshTasksIndirect2EXT vkCmdDrawMeshTasksIndirect2EXT = 0; + PFN_vkCmdDrawMeshTasksIndirectCount2EXT vkCmdDrawMeshTasksIndirectCount2EXT = 0; + PFN_vkCmdWriteMarkerToMemoryAMD vkCmdWriteMarkerToMemoryAMD = 0; + PFN_vkCreateAccelerationStructure2KHR vkCreateAccelerationStructure2KHR = 0; + + //=== VK_NV_fragment_shading_rate_enums === + PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV = 0; + + //=== VK_EXT_mesh_shader === + PFN_vkCmdDrawMeshTasksEXT vkCmdDrawMeshTasksEXT = 0; + PFN_vkCmdDrawMeshTasksIndirectEXT vkCmdDrawMeshTasksIndirectEXT = 0; + PFN_vkCmdDrawMeshTasksIndirectCountEXT vkCmdDrawMeshTasksIndirectCountEXT = 0; + + //=== VK_KHR_copy_commands2 === + PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR = 0; + PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR = 0; + PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR = 0; + PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR = 0; + PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR = 0; + PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR = 0; + + //=== VK_EXT_device_fault === + PFN_vkGetDeviceFaultInfoEXT vkGetDeviceFaultInfoEXT = 0; + + //=== VK_EXT_vertex_input_dynamic_state === + PFN_vkCmdSetVertexInputEXT vkCmdSetVertexInputEXT = 0; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + PFN_vkGetMemoryZirconHandleFUCHSIA vkGetMemoryZirconHandleFUCHSIA = 0; + PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA vkGetMemoryZirconHandlePropertiesFUCHSIA = 0; +# else + PFN_dummy vkGetMemoryZirconHandleFUCHSIA_placeholder = 0; + PFN_dummy vkGetMemoryZirconHandlePropertiesFUCHSIA_placeholder = 0; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + PFN_vkImportSemaphoreZirconHandleFUCHSIA vkImportSemaphoreZirconHandleFUCHSIA = 0; + PFN_vkGetSemaphoreZirconHandleFUCHSIA vkGetSemaphoreZirconHandleFUCHSIA = 0; +# else + PFN_dummy vkImportSemaphoreZirconHandleFUCHSIA_placeholder = 0; + PFN_dummy vkGetSemaphoreZirconHandleFUCHSIA_placeholder = 0; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + PFN_vkCreateBufferCollectionFUCHSIA vkCreateBufferCollectionFUCHSIA = 0; + PFN_vkSetBufferCollectionImageConstraintsFUCHSIA vkSetBufferCollectionImageConstraintsFUCHSIA = 0; + PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA vkSetBufferCollectionBufferConstraintsFUCHSIA = 0; + PFN_vkDestroyBufferCollectionFUCHSIA vkDestroyBufferCollectionFUCHSIA = 0; + PFN_vkGetBufferCollectionPropertiesFUCHSIA vkGetBufferCollectionPropertiesFUCHSIA = 0; +# else + PFN_dummy vkCreateBufferCollectionFUCHSIA_placeholder = 0; + PFN_dummy vkSetBufferCollectionImageConstraintsFUCHSIA_placeholder = 0; + PFN_dummy vkSetBufferCollectionBufferConstraintsFUCHSIA_placeholder = 0; + PFN_dummy vkDestroyBufferCollectionFUCHSIA_placeholder = 0; + PFN_dummy vkGetBufferCollectionPropertiesFUCHSIA_placeholder = 0; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = 0; + PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI = 0; + + //=== VK_HUAWEI_invocation_mask === + PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI = 0; + + //=== VK_NV_external_memory_rdma === + PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV = 0; + + //=== VK_EXT_pipeline_properties === + PFN_vkGetPipelinePropertiesEXT vkGetPipelinePropertiesEXT = 0; + + //=== VK_EXT_extended_dynamic_state2 === + PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT = 0; + PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT = 0; + PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT = 0; + PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT = 0; + PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT = 0; + + //=== VK_EXT_color_write_enable === + PFN_vkCmdSetColorWriteEnableEXT vkCmdSetColorWriteEnableEXT = 0; + + //=== VK_KHR_ray_tracing_maintenance1 === + PFN_vkCmdTraceRaysIndirect2KHR vkCmdTraceRaysIndirect2KHR = 0; + + //=== VK_EXT_multi_draw === + PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT = 0; + PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT = 0; + + //=== VK_EXT_opacity_micromap === + PFN_vkCreateMicromapEXT vkCreateMicromapEXT = 0; + PFN_vkDestroyMicromapEXT vkDestroyMicromapEXT = 0; + PFN_vkCmdBuildMicromapsEXT vkCmdBuildMicromapsEXT = 0; + PFN_vkBuildMicromapsEXT vkBuildMicromapsEXT = 0; + PFN_vkCopyMicromapEXT vkCopyMicromapEXT = 0; + PFN_vkCopyMicromapToMemoryEXT vkCopyMicromapToMemoryEXT = 0; + PFN_vkCopyMemoryToMicromapEXT vkCopyMemoryToMicromapEXT = 0; + PFN_vkWriteMicromapsPropertiesEXT vkWriteMicromapsPropertiesEXT = 0; + PFN_vkCmdCopyMicromapEXT vkCmdCopyMicromapEXT = 0; + PFN_vkCmdCopyMicromapToMemoryEXT vkCmdCopyMicromapToMemoryEXT = 0; + PFN_vkCmdCopyMemoryToMicromapEXT vkCmdCopyMemoryToMicromapEXT = 0; + PFN_vkCmdWriteMicromapsPropertiesEXT vkCmdWriteMicromapsPropertiesEXT = 0; + PFN_vkGetDeviceMicromapCompatibilityEXT vkGetDeviceMicromapCompatibilityEXT = 0; + PFN_vkGetMicromapBuildSizesEXT vkGetMicromapBuildSizesEXT = 0; + + //=== VK_HUAWEI_cluster_culling_shader === + PFN_vkCmdDrawClusterHUAWEI vkCmdDrawClusterHUAWEI = 0; + PFN_vkCmdDrawClusterIndirectHUAWEI vkCmdDrawClusterIndirectHUAWEI = 0; + + //=== VK_EXT_pageable_device_local_memory === + PFN_vkSetDeviceMemoryPriorityEXT vkSetDeviceMemoryPriorityEXT = 0; + + //=== VK_KHR_maintenance4 === + PFN_vkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHR = 0; + PFN_vkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHR = 0; + PFN_vkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHR = 0; + + //=== VK_VALVE_descriptor_set_host_mapping === + PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE vkGetDescriptorSetLayoutHostMappingInfoVALVE = 0; + PFN_vkGetDescriptorSetHostMappingVALVE vkGetDescriptorSetHostMappingVALVE = 0; + + //=== VK_NV_copy_memory_indirect === + PFN_vkCmdCopyMemoryIndirectNV vkCmdCopyMemoryIndirectNV = 0; + PFN_vkCmdCopyMemoryToImageIndirectNV vkCmdCopyMemoryToImageIndirectNV = 0; + + //=== VK_NV_memory_decompression === + PFN_vkCmdDecompressMemoryNV vkCmdDecompressMemoryNV = 0; + PFN_vkCmdDecompressMemoryIndirectCountNV vkCmdDecompressMemoryIndirectCountNV = 0; + + //=== VK_NV_device_generated_commands_compute === + PFN_vkGetPipelineIndirectMemoryRequirementsNV vkGetPipelineIndirectMemoryRequirementsNV = 0; + PFN_vkCmdUpdatePipelineIndirectBufferNV vkCmdUpdatePipelineIndirectBufferNV = 0; + PFN_vkGetPipelineIndirectDeviceAddressNV vkGetPipelineIndirectDeviceAddressNV = 0; + +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + PFN_vkGetNativeBufferPropertiesOHOS vkGetNativeBufferPropertiesOHOS = 0; + PFN_vkGetMemoryNativeBufferOHOS vkGetMemoryNativeBufferOHOS = 0; +# else + PFN_dummy vkGetNativeBufferPropertiesOHOS_placeholder = 0; + PFN_dummy vkGetMemoryNativeBufferOHOS_placeholder = 0; +# endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_extended_dynamic_state3 === + PFN_vkCmdSetDepthClampEnableEXT vkCmdSetDepthClampEnableEXT = 0; + PFN_vkCmdSetPolygonModeEXT vkCmdSetPolygonModeEXT = 0; + PFN_vkCmdSetRasterizationSamplesEXT vkCmdSetRasterizationSamplesEXT = 0; + PFN_vkCmdSetSampleMaskEXT vkCmdSetSampleMaskEXT = 0; + PFN_vkCmdSetAlphaToCoverageEnableEXT vkCmdSetAlphaToCoverageEnableEXT = 0; + PFN_vkCmdSetAlphaToOneEnableEXT vkCmdSetAlphaToOneEnableEXT = 0; + PFN_vkCmdSetLogicOpEnableEXT vkCmdSetLogicOpEnableEXT = 0; + PFN_vkCmdSetColorBlendEnableEXT vkCmdSetColorBlendEnableEXT = 0; + PFN_vkCmdSetColorBlendEquationEXT vkCmdSetColorBlendEquationEXT = 0; + PFN_vkCmdSetColorWriteMaskEXT vkCmdSetColorWriteMaskEXT = 0; + PFN_vkCmdSetTessellationDomainOriginEXT vkCmdSetTessellationDomainOriginEXT = 0; + PFN_vkCmdSetRasterizationStreamEXT vkCmdSetRasterizationStreamEXT = 0; + PFN_vkCmdSetConservativeRasterizationModeEXT vkCmdSetConservativeRasterizationModeEXT = 0; + PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT vkCmdSetExtraPrimitiveOverestimationSizeEXT = 0; + PFN_vkCmdSetDepthClipEnableEXT vkCmdSetDepthClipEnableEXT = 0; + PFN_vkCmdSetSampleLocationsEnableEXT vkCmdSetSampleLocationsEnableEXT = 0; + PFN_vkCmdSetColorBlendAdvancedEXT vkCmdSetColorBlendAdvancedEXT = 0; + PFN_vkCmdSetProvokingVertexModeEXT vkCmdSetProvokingVertexModeEXT = 0; + PFN_vkCmdSetLineRasterizationModeEXT vkCmdSetLineRasterizationModeEXT = 0; + PFN_vkCmdSetLineStippleEnableEXT vkCmdSetLineStippleEnableEXT = 0; + PFN_vkCmdSetDepthClipNegativeOneToOneEXT vkCmdSetDepthClipNegativeOneToOneEXT = 0; + PFN_vkCmdSetViewportWScalingEnableNV vkCmdSetViewportWScalingEnableNV = 0; + PFN_vkCmdSetViewportSwizzleNV vkCmdSetViewportSwizzleNV = 0; + PFN_vkCmdSetCoverageToColorEnableNV vkCmdSetCoverageToColorEnableNV = 0; + PFN_vkCmdSetCoverageToColorLocationNV vkCmdSetCoverageToColorLocationNV = 0; + PFN_vkCmdSetCoverageModulationModeNV vkCmdSetCoverageModulationModeNV = 0; + PFN_vkCmdSetCoverageModulationTableEnableNV vkCmdSetCoverageModulationTableEnableNV = 0; + PFN_vkCmdSetCoverageModulationTableNV vkCmdSetCoverageModulationTableNV = 0; + PFN_vkCmdSetShadingRateImageEnableNV vkCmdSetShadingRateImageEnableNV = 0; + PFN_vkCmdSetRepresentativeFragmentTestEnableNV vkCmdSetRepresentativeFragmentTestEnableNV = 0; + PFN_vkCmdSetCoverageReductionModeNV vkCmdSetCoverageReductionModeNV = 0; + + //=== VK_ARM_tensors === + PFN_vkCreateTensorARM vkCreateTensorARM = 0; + PFN_vkDestroyTensorARM vkDestroyTensorARM = 0; + PFN_vkCreateTensorViewARM vkCreateTensorViewARM = 0; + PFN_vkDestroyTensorViewARM vkDestroyTensorViewARM = 0; + PFN_vkGetTensorMemoryRequirementsARM vkGetTensorMemoryRequirementsARM = 0; + PFN_vkBindTensorMemoryARM vkBindTensorMemoryARM = 0; + PFN_vkGetDeviceTensorMemoryRequirementsARM vkGetDeviceTensorMemoryRequirementsARM = 0; + PFN_vkCmdCopyTensorARM vkCmdCopyTensorARM = 0; + PFN_vkGetTensorOpaqueCaptureDescriptorDataARM vkGetTensorOpaqueCaptureDescriptorDataARM = 0; + PFN_vkGetTensorViewOpaqueCaptureDescriptorDataARM vkGetTensorViewOpaqueCaptureDescriptorDataARM = 0; + + //=== VK_EXT_shader_module_identifier === + PFN_vkGetShaderModuleIdentifierEXT vkGetShaderModuleIdentifierEXT = 0; + PFN_vkGetShaderModuleCreateInfoIdentifierEXT vkGetShaderModuleCreateInfoIdentifierEXT = 0; + + //=== VK_NV_optical_flow === + PFN_vkCreateOpticalFlowSessionNV vkCreateOpticalFlowSessionNV = 0; + PFN_vkDestroyOpticalFlowSessionNV vkDestroyOpticalFlowSessionNV = 0; + PFN_vkBindOpticalFlowSessionImageNV vkBindOpticalFlowSessionImageNV = 0; + PFN_vkCmdOpticalFlowExecuteNV vkCmdOpticalFlowExecuteNV = 0; + + //=== VK_KHR_maintenance5 === + PFN_vkCmdBindIndexBuffer2KHR vkCmdBindIndexBuffer2KHR = 0; + PFN_vkGetRenderingAreaGranularityKHR vkGetRenderingAreaGranularityKHR = 0; + PFN_vkGetDeviceImageSubresourceLayoutKHR vkGetDeviceImageSubresourceLayoutKHR = 0; + PFN_vkGetImageSubresourceLayout2KHR vkGetImageSubresourceLayout2KHR = 0; + + //=== VK_AMD_anti_lag === + PFN_vkAntiLagUpdateAMD vkAntiLagUpdateAMD = 0; + + //=== VK_KHR_present_wait2 === + PFN_vkWaitForPresent2KHR vkWaitForPresent2KHR = 0; + + //=== VK_EXT_shader_object === + PFN_vkCreateShadersEXT vkCreateShadersEXT = 0; + PFN_vkDestroyShaderEXT vkDestroyShaderEXT = 0; + PFN_vkGetShaderBinaryDataEXT vkGetShaderBinaryDataEXT = 0; + PFN_vkCmdBindShadersEXT vkCmdBindShadersEXT = 0; + PFN_vkCmdSetDepthClampRangeEXT vkCmdSetDepthClampRangeEXT = 0; + + //=== VK_KHR_pipeline_binary === + PFN_vkCreatePipelineBinariesKHR vkCreatePipelineBinariesKHR = 0; + PFN_vkDestroyPipelineBinaryKHR vkDestroyPipelineBinaryKHR = 0; + PFN_vkGetPipelineKeyKHR vkGetPipelineKeyKHR = 0; + PFN_vkGetPipelineBinaryDataKHR vkGetPipelineBinaryDataKHR = 0; + PFN_vkReleaseCapturedPipelineDataKHR vkReleaseCapturedPipelineDataKHR = 0; + + //=== VK_QCOM_tile_properties === + PFN_vkGetFramebufferTilePropertiesQCOM vkGetFramebufferTilePropertiesQCOM = 0; + PFN_vkGetDynamicRenderingTilePropertiesQCOM vkGetDynamicRenderingTilePropertiesQCOM = 0; + + //=== VK_KHR_swapchain_maintenance1 === + PFN_vkReleaseSwapchainImagesKHR vkReleaseSwapchainImagesKHR = 0; + + //=== VK_NV_cooperative_vector === + PFN_vkConvertCooperativeVectorMatrixNV vkConvertCooperativeVectorMatrixNV = 0; + PFN_vkCmdConvertCooperativeVectorMatrixNV vkCmdConvertCooperativeVectorMatrixNV = 0; + + //=== VK_NV_low_latency2 === + PFN_vkSetLatencySleepModeNV vkSetLatencySleepModeNV = 0; + PFN_vkLatencySleepNV vkLatencySleepNV = 0; + PFN_vkSetLatencyMarkerNV vkSetLatencyMarkerNV = 0; + PFN_vkGetLatencyTimingsNV vkGetLatencyTimingsNV = 0; + PFN_vkQueueNotifyOutOfBandNV vkQueueNotifyOutOfBandNV = 0; + + //=== VK_ARM_data_graph === + PFN_vkCreateDataGraphPipelinesARM vkCreateDataGraphPipelinesARM = 0; + PFN_vkCreateDataGraphPipelineSessionARM vkCreateDataGraphPipelineSessionARM = 0; + PFN_vkGetDataGraphPipelineSessionBindPointRequirementsARM vkGetDataGraphPipelineSessionBindPointRequirementsARM = 0; + PFN_vkGetDataGraphPipelineSessionMemoryRequirementsARM vkGetDataGraphPipelineSessionMemoryRequirementsARM = 0; + PFN_vkBindDataGraphPipelineSessionMemoryARM vkBindDataGraphPipelineSessionMemoryARM = 0; + PFN_vkDestroyDataGraphPipelineSessionARM vkDestroyDataGraphPipelineSessionARM = 0; + PFN_vkCmdDispatchDataGraphARM vkCmdDispatchDataGraphARM = 0; + PFN_vkGetDataGraphPipelineAvailablePropertiesARM vkGetDataGraphPipelineAvailablePropertiesARM = 0; + PFN_vkGetDataGraphPipelinePropertiesARM vkGetDataGraphPipelinePropertiesARM = 0; + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT vkCmdSetAttachmentFeedbackLoopEnableEXT = 0; + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + PFN_vkGetScreenBufferPropertiesQNX vkGetScreenBufferPropertiesQNX = 0; +# else + PFN_dummy vkGetScreenBufferPropertiesQNX_placeholder = 0; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_line_rasterization === + PFN_vkCmdSetLineStippleKHR vkCmdSetLineStippleKHR = 0; + + //=== VK_KHR_calibrated_timestamps === + PFN_vkGetCalibratedTimestampsKHR vkGetCalibratedTimestampsKHR = 0; + + //=== VK_KHR_maintenance6 === + PFN_vkCmdBindDescriptorSets2KHR vkCmdBindDescriptorSets2KHR = 0; + PFN_vkCmdPushConstants2KHR vkCmdPushConstants2KHR = 0; + PFN_vkCmdPushDescriptorSet2KHR vkCmdPushDescriptorSet2KHR = 0; + PFN_vkCmdPushDescriptorSetWithTemplate2KHR vkCmdPushDescriptorSetWithTemplate2KHR = 0; + PFN_vkCmdSetDescriptorBufferOffsets2EXT vkCmdSetDescriptorBufferOffsets2EXT = 0; + PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT vkCmdBindDescriptorBufferEmbeddedSamplers2EXT = 0; + + //=== VK_QCOM_tile_memory_heap === + PFN_vkCmdBindTileMemoryQCOM vkCmdBindTileMemoryQCOM = 0; + + //=== VK_KHR_copy_memory_indirect === + PFN_vkCmdCopyMemoryIndirectKHR vkCmdCopyMemoryIndirectKHR = 0; + PFN_vkCmdCopyMemoryToImageIndirectKHR vkCmdCopyMemoryToImageIndirectKHR = 0; + + //=== VK_EXT_memory_decompression === + PFN_vkCmdDecompressMemoryEXT vkCmdDecompressMemoryEXT = 0; + PFN_vkCmdDecompressMemoryIndirectCountEXT vkCmdDecompressMemoryIndirectCountEXT = 0; + + //=== VK_NV_external_compute_queue === + PFN_vkCreateExternalComputeQueueNV vkCreateExternalComputeQueueNV = 0; + PFN_vkDestroyExternalComputeQueueNV vkDestroyExternalComputeQueueNV = 0; + PFN_vkGetExternalComputeQueueDataNV vkGetExternalComputeQueueDataNV = 0; + + //=== VK_NV_cluster_acceleration_structure === + PFN_vkGetClusterAccelerationStructureBuildSizesNV vkGetClusterAccelerationStructureBuildSizesNV = 0; + PFN_vkCmdBuildClusterAccelerationStructureIndirectNV vkCmdBuildClusterAccelerationStructureIndirectNV = 0; + + //=== VK_NV_partitioned_acceleration_structure === + PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV vkGetPartitionedAccelerationStructuresBuildSizesNV = 0; + PFN_vkCmdBuildPartitionedAccelerationStructuresNV vkCmdBuildPartitionedAccelerationStructuresNV = 0; + + //=== VK_EXT_device_generated_commands === + PFN_vkGetGeneratedCommandsMemoryRequirementsEXT vkGetGeneratedCommandsMemoryRequirementsEXT = 0; + PFN_vkCmdPreprocessGeneratedCommandsEXT vkCmdPreprocessGeneratedCommandsEXT = 0; + PFN_vkCmdExecuteGeneratedCommandsEXT vkCmdExecuteGeneratedCommandsEXT = 0; + PFN_vkCreateIndirectCommandsLayoutEXT vkCreateIndirectCommandsLayoutEXT = 0; + PFN_vkDestroyIndirectCommandsLayoutEXT vkDestroyIndirectCommandsLayoutEXT = 0; + PFN_vkCreateIndirectExecutionSetEXT vkCreateIndirectExecutionSetEXT = 0; + PFN_vkDestroyIndirectExecutionSetEXT vkDestroyIndirectExecutionSetEXT = 0; + PFN_vkUpdateIndirectExecutionSetPipelineEXT vkUpdateIndirectExecutionSetPipelineEXT = 0; + PFN_vkUpdateIndirectExecutionSetShaderEXT vkUpdateIndirectExecutionSetShaderEXT = 0; + + //=== VK_KHR_device_fault === + PFN_vkGetDeviceFaultReportsKHR vkGetDeviceFaultReportsKHR = 0; + PFN_vkGetDeviceFaultDebugInfoKHR vkGetDeviceFaultDebugInfoKHR = 0; + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + PFN_vkGetMemoryMetalHandleEXT vkGetMemoryMetalHandleEXT = 0; + PFN_vkGetMemoryMetalHandlePropertiesEXT vkGetMemoryMetalHandlePropertiesEXT = 0; +# else + PFN_dummy vkGetMemoryMetalHandleEXT_placeholder = 0; + PFN_dummy vkGetMemoryMetalHandlePropertiesEXT_placeholder = 0; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_shader_instrumentation === + PFN_vkCreateShaderInstrumentationARM vkCreateShaderInstrumentationARM = 0; + PFN_vkDestroyShaderInstrumentationARM vkDestroyShaderInstrumentationARM = 0; + PFN_vkCmdBeginShaderInstrumentationARM vkCmdBeginShaderInstrumentationARM = 0; + PFN_vkCmdEndShaderInstrumentationARM vkCmdEndShaderInstrumentationARM = 0; + PFN_vkGetShaderInstrumentationValuesARM vkGetShaderInstrumentationValuesARM = 0; + PFN_vkClearShaderInstrumentationMetricsARM vkClearShaderInstrumentationMetricsARM = 0; + + //=== VK_EXT_fragment_density_map_offset === + PFN_vkCmdEndRendering2EXT vkCmdEndRendering2EXT = 0; + + //=== VK_EXT_custom_resolve === + PFN_vkCmdBeginCustomResolveEXT vkCmdBeginCustomResolveEXT = 0; + + //=== VK_KHR_maintenance10 === + PFN_vkCmdEndRendering2KHR vkCmdEndRendering2KHR = 0; + + //=== VK_NV_compute_occupancy_priority === + PFN_vkCmdSetComputeOccupancyPriorityNV vkCmdSetComputeOccupancyPriorityNV = 0; + }; + + } // namespace detail + + //======================================== + //=== RAII HANDLE forward declarations === + //======================================== + + //=== VK_VERSION_1_0 === + class Instance; + class PhysicalDevice; + class Device; + class Queue; + class DeviceMemory; + class Fence; + class Semaphore; + class QueryPool; + class Buffer; + class Image; + class ImageView; + class CommandPool; + class CommandBuffer; + class Event; + class BufferView; + class ShaderModule; + class PipelineCache; + class Pipeline; + class PipelineLayout; + class Sampler; + class DescriptorPool; + class DescriptorSet; + class DescriptorSetLayout; + class Framebuffer; + class RenderPass; + + //=== VK_VERSION_1_1 === + class DescriptorUpdateTemplate; + class SamplerYcbcrConversion; + + //=== VK_VERSION_1_3 === + class PrivateDataSlot; + + //=== VK_KHR_surface === + class SurfaceKHR; + + //=== VK_KHR_swapchain === + class SwapchainKHR; + + //=== VK_KHR_display === + class DisplayKHR; + class DisplayModeKHR; + + //=== VK_EXT_debug_report === + class DebugReportCallbackEXT; + + //=== VK_KHR_video_queue === + class VideoSessionKHR; + class VideoSessionParametersKHR; + + //=== VK_NVX_binary_import === + class CuModuleNVX; + class CuFunctionNVX; + + //=== VK_KHR_descriptor_update_template === + using DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate; + + //=== VK_EXT_debug_utils === + class DebugUtilsMessengerEXT; + + //=== VK_EXT_descriptor_heap === + class TensorARM; + + //=== VK_KHR_acceleration_structure === + class AccelerationStructureKHR; + + //=== VK_KHR_sampler_ycbcr_conversion === + using SamplerYcbcrConversionKHR = SamplerYcbcrConversion; + + //=== VK_EXT_validation_cache === + class ValidationCacheEXT; + + //=== VK_NV_ray_tracing === + class AccelerationStructureNV; + + //=== VK_INTEL_performance_query === + class PerformanceConfigurationINTEL; + + //=== VK_KHR_deferred_host_operations === + class DeferredOperationKHR; + + //=== VK_NV_device_generated_commands === + class IndirectCommandsLayoutNV; + + //=== VK_EXT_private_data === + using PrivateDataSlotEXT = PrivateDataSlot; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + class CudaModuleNV; + class CudaFunctionNV; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + class BufferCollectionFUCHSIA; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_EXT_opacity_micromap === + class MicromapEXT; + + //=== VK_ARM_tensors === + class TensorARM; + class TensorViewARM; + + //=== VK_NV_optical_flow === + class OpticalFlowSessionNV; + + //=== VK_EXT_shader_object === + class ShaderEXT; + + //=== VK_KHR_pipeline_binary === + class PipelineBinaryKHR; + + //=== VK_ARM_data_graph === + class DataGraphPipelineSessionARM; + + //=== VK_NV_external_compute_queue === + class ExternalComputeQueueNV; + + //=== VK_EXT_device_generated_commands === + class IndirectCommandsLayoutEXT; + class IndirectExecutionSetEXT; + + //=== VK_ARM_shader_instrumentation === + class ShaderInstrumentationARM; + + //==================== + //=== RAII HANDLES === + //==================== + + template + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = false; + }; + + class Context + { + public: +# if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + Context() : m_dispatcher( new detail::ContextDispatcher( m_dynamicLoader.getProcAddress( "vkGetInstanceProcAddr" ) ) ) +# else + Context( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) : m_dispatcher( new detail::ContextDispatcher( getInstanceProcAddr ) ) +# endif + { + } + + ~Context() = default; + + Context( Context const & ) = delete; + Context( Context && rhs ) VULKAN_HPP_NOEXCEPT +# if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + : m_dynamicLoader( std::move( rhs.m_dynamicLoader ) ) + , m_dispatcher( rhs.m_dispatcher.release() ) +# else + : m_dispatcher( rhs.m_dispatcher.release() ) +# endif + { + } + Context & operator=( Context const & ) = delete; + + Context & operator=( Context && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { +# if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + m_dynamicLoader = std::move( rhs.m_dynamicLoader ); +# endif + m_dispatcher.reset( rhs.m_dispatcher.release() ); + } + return *this; + } + + detail::ContextDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return &*m_dispatcher; + } + + void swap( Context & rhs ) + { +# if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + std::swap( m_dynamicLoader, rhs.m_dynamicLoader ); +# endif + m_dispatcher.swap( rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkCreateInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateInstance.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createInstance( InstanceCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkEnumerateInstanceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceExtensionProperties.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateInstanceExtensionProperties( Optional layerName VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + // wrapper function for command vkEnumerateInstanceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceLayerProperties.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateInstanceLayerProperties() const; + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkEnumerateInstanceVersion, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceVersion.html + VULKAN_HPP_NODISCARD typename ResultValueType::type enumerateInstanceVersion() const; + + private: +# if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL + VULKAN_HPP_NAMESPACE::detail::DynamicLoader m_dynamicLoader; +# endif + std::unique_ptr m_dispatcher; + }; + + // wrapper class for handle VkInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkInstance.html + class Instance + { + public: + using CType = VkInstance; + using CppType = VULKAN_HPP_NAMESPACE::Instance; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eInstance; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eInstance; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Instance( Context const & context, InstanceCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = context.createInstance( createInfo, allocator ); + } +# endif + + Instance( Context const & context, VkInstance instance, Optional allocator = nullptr ) + : m_instance( instance ), m_allocator( static_cast( allocator ) ) + { + m_dispatcher.reset( new detail::InstanceDispatcher( context.getDispatcher()->vkGetInstanceProcAddr, static_cast( m_instance ) ) ); + } + + Instance( std::nullptr_t ) {} + + ~Instance() + { + clear(); + } + + Instance() = delete; + Instance( Instance const & ) = delete; + + Instance( Instance && rhs ) VULKAN_HPP_NOEXCEPT + : m_instance( exchange( rhs.m_instance, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( rhs.m_dispatcher.release() ) + { + } + + Instance & operator=( Instance const & ) = delete; + + Instance & operator=( Instance && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_instance, rhs.m_instance ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Instance const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_instance; + } + + VULKAN_HPP_NAMESPACE::Instance const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_instance ); + } + + operator VULKAN_HPP_NAMESPACE::Instance() const VULKAN_HPP_NOEXCEPT + { + return m_instance; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_instance ) + { + getDispatcher()->vkDestroyInstance( static_cast( m_instance ), reinterpret_cast( m_allocator ) ); + } + m_instance = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Instance release() + { + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_instance, nullptr ); + } + + detail::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return &*m_dispatcher; + } + + void swap( Instance & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_instance, rhs.m_instance ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkEnumeratePhysicalDevices, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDevices.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type enumeratePhysicalDevices() const; + + // wrapper function for command vkGetInstanceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetInstanceProcAddr.html + VULKAN_HPP_NODISCARD PFN_VoidFunction getProcAddr( std::string const & name ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkEnumeratePhysicalDeviceGroups, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroups.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type enumeratePhysicalDeviceGroups() const; + + //=== VK_KHR_display === + + // wrapper function for command vkCreateDisplayPlaneSurfaceKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayPlaneSurfaceKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDisplayPlaneSurfaceKHR( DisplaySurfaceCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + // wrapper function for command vkCreateXlibSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXlibSurfaceKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createXlibSurfaceKHR( XlibSurfaceCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + // wrapper function for command vkCreateXcbSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXcbSurfaceKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createXcbSurfaceKHR( XcbSurfaceCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + // wrapper function for command vkCreateWaylandSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWaylandSurfaceKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createWaylandSurfaceKHR( WaylandSurfaceCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + // wrapper function for command vkCreateAndroidSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAndroidSurfaceKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createAndroidSurfaceKHR( AndroidSurfaceCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + // wrapper function for command vkCreateWin32SurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWin32SurfaceKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createWin32SurfaceKHR( Win32SurfaceCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + // wrapper function for command vkCreateDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugReportCallbackEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDebugReportCallbackEXT( DebugReportCallbackCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkDebugReportMessageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugReportMessageEXT.html + void debugReportMessageEXT( DebugReportFlagsEXT flags, + DebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + std::string const & layerPrefix, + std::string const & message ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + // wrapper function for command vkCreateStreamDescriptorSurfaceGGP, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateStreamDescriptorSurfaceGGP.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createStreamDescriptorSurfaceGGP( StreamDescriptorSurfaceCreateInfoGGP const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_GGP*/ + +# if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + // wrapper function for command vkCreateViSurfaceNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateViSurfaceNN.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createViSurfaceNN( ViSurfaceCreateInfoNN const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_device_group_creation === + + // wrapper function for command vkEnumeratePhysicalDeviceGroupsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type enumeratePhysicalDeviceGroupsKHR() const; + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + // wrapper function for command vkCreateIOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIOSSurfaceMVK.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createIOSSurfaceMVK( IOSSurfaceCreateInfoMVK const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + // wrapper function for command vkCreateMacOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMacOSSurfaceMVK.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createMacOSSurfaceMVK( MacOSSurfaceCreateInfoMVK const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + // wrapper function for command vkCreateDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugUtilsMessengerEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDebugUtilsMessengerEXT( DebugUtilsMessengerCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkSubmitDebugUtilsMessageEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSubmitDebugUtilsMessageEXT.html + void submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + DebugUtilsMessageTypeFlagsEXT messageTypes, + DebugUtilsMessengerCallbackDataEXT const & callbackData ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + // wrapper function for command vkCreateImagePipeSurfaceFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImagePipeSurfaceFUCHSIA.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createImagePipeSurfaceFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + // wrapper function for command vkCreateMetalSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMetalSurfaceEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createMetalSurfaceEXT( MetalSurfaceCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_headless_surface === + + // wrapper function for command vkCreateHeadlessSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateHeadlessSurfaceEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createHeadlessSurfaceEXT( HeadlessSurfaceCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + // wrapper function for command vkCreateDirectFBSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDirectFBSurfaceEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDirectFBSurfaceEXT( DirectFBSurfaceCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + // wrapper function for command vkCreateScreenSurfaceQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateScreenSurfaceQNX.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createScreenSurfaceQNX( ScreenSurfaceCreateInfoQNX const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + + // wrapper function for command vkCreateSurfaceOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSurfaceOHOS.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSurfaceOHOS( SurfaceCreateInfoOHOS const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_OHOS*/ + +# if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + + // wrapper function for command vkCreateUbmSurfaceSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateUbmSurfaceSEC.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createUbmSurfaceSEC( UbmSurfaceCreateInfoSEC const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_UBM_SEC*/ + + private: + VULKAN_HPP_NAMESPACE::Instance m_instance = {}; + AllocationCallbacks const * m_allocator = {}; + std::unique_ptr m_dispatcher; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPhysicalDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevice.html + class PhysicalDevice + { + public: + using CType = VkPhysicalDevice; + using CppType = VULKAN_HPP_NAMESPACE::PhysicalDevice; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePhysicalDevice; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePhysicalDevice; + + public: + PhysicalDevice( Instance const & instance, VkPhysicalDevice physicalDevice ) + : m_physicalDevice( physicalDevice ), m_dispatcher( instance.getDispatcher() ) + { + } + + PhysicalDevice( std::nullptr_t ) {} + + ~PhysicalDevice() + { + clear(); + } + + PhysicalDevice() = delete; + + PhysicalDevice( PhysicalDevice const & rhs ) : m_physicalDevice( rhs.m_physicalDevice ), m_dispatcher( rhs.m_dispatcher ) {} + + PhysicalDevice( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT + : m_physicalDevice( exchange( rhs.m_physicalDevice, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + PhysicalDevice & operator=( PhysicalDevice const & rhs ) + { + m_physicalDevice = rhs.m_physicalDevice; + m_dispatcher = rhs.m_dispatcher; + return *this; + } + + PhysicalDevice & operator=( PhysicalDevice && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_physicalDevice, rhs.m_physicalDevice ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PhysicalDevice const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice; + } + + VULKAN_HPP_NAMESPACE::PhysicalDevice const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_physicalDevice ); + } + + operator VULKAN_HPP_NAMESPACE::PhysicalDevice() const VULKAN_HPP_NOEXCEPT + { + return m_physicalDevice; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + m_physicalDevice = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::PhysicalDevice release() + { + m_dispatcher = nullptr; + return exchange( m_physicalDevice, nullptr ); + } + + detail::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( PhysicalDevice & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_physicalDevice, rhs.m_physicalDevice ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkGetPhysicalDeviceFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures.html + VULKAN_HPP_NODISCARD PhysicalDeviceFeatures getFeatures() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties.html + VULKAN_HPP_NODISCARD FormatProperties getFormatProperties( Format format ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getImageFormatProperties( + Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + // wrapper function for command vkGetPhysicalDeviceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties.html + VULKAN_HPP_NODISCARD PhysicalDeviceProperties getProperties() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html + VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties() const; + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties.html + VULKAN_HPP_NODISCARD PhysicalDeviceMemoryProperties getMemoryProperties() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCreateDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDevice.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDevice( DeviceCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkEnumerateDeviceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceExtensionProperties.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateDeviceExtensionProperties( Optional layerName VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + // wrapper function for command vkEnumerateDeviceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceLayerProperties.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateDeviceLayerProperties() const; + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const; + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkGetPhysicalDeviceFeatures2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html + VULKAN_HPP_NODISCARD PhysicalDeviceFeatures2 getFeatures2() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceFeatures2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html + template + VULKAN_HPP_NODISCARD StructureChain getFeatures2() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + void getProperties2( PhysicalDeviceProperties2 * pProperties ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + VULKAN_HPP_NODISCARD PhysicalDeviceProperties2 getProperties2() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + template + VULKAN_HPP_NODISCARD StructureChain getProperties2() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + void getFormatProperties2( Format format, FormatProperties2 * pFormatProperties ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + VULKAN_HPP_NODISCARD FormatProperties2 getFormatProperties2( Format format ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + template + VULKAN_HPP_NODISCARD StructureChain getFormatProperties2( Format format ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageFormatProperties2( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo ) const; + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getImageFormatProperties2( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo ) const; + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2() const; + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template + VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2() const; + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html + VULKAN_HPP_NODISCARD PhysicalDeviceMemoryProperties2 getMemoryProperties2() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html + template + VULKAN_HPP_NODISCARD StructureChain getMemoryProperties2() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo ) const; + + // wrapper function for command vkGetPhysicalDeviceExternalBufferProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferProperties.html + VULKAN_HPP_NODISCARD ExternalBufferProperties + getExternalBufferProperties( PhysicalDeviceExternalBufferInfo const & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceExternalFenceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFenceProperties.html + VULKAN_HPP_NODISCARD ExternalFenceProperties + getExternalFenceProperties( PhysicalDeviceExternalFenceInfo const & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceExternalSemaphoreProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphoreProperties.html + VULKAN_HPP_NODISCARD ExternalSemaphoreProperties + getExternalSemaphoreProperties( PhysicalDeviceExternalSemaphoreInfo const & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_3 === + + // wrapper function for command vkGetPhysicalDeviceToolProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolProperties.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getToolProperties() const; + + //=== VK_KHR_surface === + + // wrapper function for command vkGetPhysicalDeviceSurfaceSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, + VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const; + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const; + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormatsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + //=== VK_KHR_swapchain === + + // wrapper function for command vkGetPhysicalDevicePresentRectanglesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const; + + //=== VK_KHR_display === + + // wrapper function for command vkGetPhysicalDeviceDisplayPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPropertiesKHR() const; + + // wrapper function for command vkGetPhysicalDeviceDisplayPlanePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPlanePropertiesKHR() const; + + // wrapper function for command vkGetDisplayPlaneSupportedDisplaysKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const; + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + // wrapper function for command vkGetPhysicalDeviceXlibPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html + VULKAN_HPP_NODISCARD Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + // wrapper function for command vkGetPhysicalDeviceXcbPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html + VULKAN_HPP_NODISCARD Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, + xcb_connection_t & connection, + xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + // wrapper function for command vkGetPhysicalDeviceWaylandPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html + VULKAN_HPP_NODISCARD Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + // wrapper function for command vkGetPhysicalDeviceWin32PresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWin32PresentationSupportKHR.html + VULKAN_HPP_NODISCARD Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_video_queue === + + // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getVideoCapabilitiesKHR( VideoProfileInfoKHR const & videoProfile ) const; + + // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type getVideoCapabilitiesKHR( VideoProfileInfoKHR const & videoProfile ) const; + + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo ) const; + + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo ) const; + + //=== VK_NV_external_memory_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalImageFormatPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getExternalImageFormatPropertiesNV( Format format, + ImageType type, + ImageTiling tiling, + ImageUsageFlags usage, + ImageCreateFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + ExternalMemoryHandleTypeFlagsNV externalHandleType VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + //=== VK_KHR_get_physical_device_properties2 === + + // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html + VULKAN_HPP_NODISCARD PhysicalDeviceFeatures2 getFeatures2KHR() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html + template + VULKAN_HPP_NODISCARD StructureChain getFeatures2KHR() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + void getProperties2KHR( PhysicalDeviceProperties2 * pProperties ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + VULKAN_HPP_NODISCARD PhysicalDeviceProperties2 getProperties2KHR() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + template + VULKAN_HPP_NODISCARD StructureChain getProperties2KHR() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + void getFormatProperties2KHR( Format format, FormatProperties2 * pFormatProperties ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + VULKAN_HPP_NODISCARD FormatProperties2 getFormatProperties2KHR( Format format ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + template + VULKAN_HPP_NODISCARD StructureChain getFormatProperties2KHR( Format format ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageFormatProperties2KHR( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo ) const; + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getImageFormatProperties2KHR( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo ) const; + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2KHR() const; + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template + VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2KHR() const; + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html + VULKAN_HPP_NODISCARD PhysicalDeviceMemoryProperties2 getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html + template + VULKAN_HPP_NODISCARD StructureChain getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html + VULKAN_HPP_NODISCARD std::vector + getSparseImageFormatProperties2KHR( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo ) const; + + //=== VK_KHR_external_memory_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalBufferPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html + VULKAN_HPP_NODISCARD ExternalBufferProperties + getExternalBufferPropertiesKHR( PhysicalDeviceExternalBufferInfo const & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_external_semaphore_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html + VULKAN_HPP_NODISCARD ExternalSemaphoreProperties + getExternalSemaphorePropertiesKHR( PhysicalDeviceExternalSemaphoreInfo const & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + + // wrapper function for command vkAcquireXlibDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireXlibDisplayEXT.html + typename ResultValueType::type acquireXlibDisplayEXT( Display & dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const; + + // wrapper function for command vkGetRandROutputDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRandROutputDisplayEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const; + + //=== VK_KHR_external_fence_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalFencePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html + VULKAN_HPP_NODISCARD ExternalFenceProperties + getExternalFencePropertiesKHR( PhysicalDeviceExternalFenceInfo const & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_performance_query === + + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType, std::vector>>::type + enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const; + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR.html + VULKAN_HPP_NODISCARD uint32_t + getQueueFamilyPerformanceQueryPassesKHR( QueryPoolPerformanceCreateInfoKHR const & performanceQueryCreateInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_get_surface_capabilities2 === + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + VULKAN_HPP_NODISCARD Result getSurfaceCapabilities2KHR( PhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, + SurfaceCapabilities2KHR * pSurfaceCapabilities ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSurfaceCapabilities2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const; + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceCapabilities2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const; + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const; + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const; + + //=== VK_KHR_get_display_properties2 === + + // wrapper function for command vkGetPhysicalDeviceDisplayProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayProperties2KHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayProperties2KHR() const; + + // wrapper function for command vkGetPhysicalDeviceDisplayPlaneProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlaneProperties2KHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPlaneProperties2KHR() const; + + // wrapper function for command vkGetDisplayPlaneCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilities2KHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getDisplayPlaneCapabilities2KHR( DisplayPlaneInfo2KHR const & displayPlaneInfo ) const; + + //=== VK_EXT_descriptor_heap === + + // wrapper function for command vkGetPhysicalDeviceDescriptorSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDescriptorSizeEXT.html + VULKAN_HPP_NODISCARD DeviceSize getDescriptorSizeEXT( DescriptorType descriptorType ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_sample_locations === + + // wrapper function for command vkGetPhysicalDeviceMultisamplePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html + VULKAN_HPP_NODISCARD MultisamplePropertiesEXT getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_calibrated_timestamps === + + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getCalibrateableTimeDomainsEXT() const; + + //=== VK_KHR_fragment_shading_rate === + + // wrapper function for command vkGetPhysicalDeviceFragmentShadingRatesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFragmentShadingRatesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getFragmentShadingRatesKHR() const; + + //=== VK_EXT_tooling_info === + + // wrapper function for command vkGetPhysicalDeviceToolPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getToolPropertiesEXT() const; + + //=== VK_NV_cooperative_matrix === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesNV.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getCooperativeMatrixPropertiesNV() const; + + //=== VK_NV_coverage_reduction_mode === + + // wrapper function for command vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSupportedFramebufferMixedSamplesCombinationsNV() const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModes2EXT.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getSurfacePresentModes2EXT( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_acquire_drm_display === + + // wrapper function for command vkAcquireDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireDrmDisplayEXT.html + typename ResultValueType::type acquireDrmDisplayEXT( int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const; + + // wrapper function for command vkGetDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDrmDisplayEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getDrmDisplayEXT( int32_t drmFd, + uint32_t connectorId ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_KHR_video_encode_queue === + + // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getVideoEncodeQualityLevelPropertiesKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & qualityLevelInfo ) const; + + // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getVideoEncodeQualityLevelPropertiesKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & qualityLevelInfo ) const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + + // wrapper function for command vkGetWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetWinrtDisplayNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getWinrtDisplayNV( uint32_t deviceRelativeId ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + // wrapper function for command vkGetPhysicalDeviceDirectFBPresentationSupportEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDirectFBPresentationSupportEXT.html + VULKAN_HPP_NODISCARD Bool32 getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + // wrapper function for command vkGetPhysicalDeviceScreenPresentationSupportQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceScreenPresentationSupportQNX.html + VULKAN_HPP_NODISCARD Bool32 getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_ARM_tensors === + + // wrapper function for command vkGetPhysicalDeviceExternalTensorPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalTensorPropertiesARM.html + VULKAN_HPP_NODISCARD ExternalTensorPropertiesARM + getExternalTensorPropertiesARM( PhysicalDeviceExternalTensorInfoARM const & externalTensorInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_optical_flow === + + // wrapper function for command vkGetPhysicalDeviceOpticalFlowImageFormatsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getOpticalFlowImageFormatsNV( OpticalFlowImageFormatInfoNV const & opticalFlowImageFormatInfo ) const; + + //=== VK_NV_cooperative_vector === + + // wrapper function for command vkGetPhysicalDeviceCooperativeVectorPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeVectorPropertiesNV.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getCooperativeVectorPropertiesNV() const; + + //=== VK_KHR_cooperative_matrix === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getCooperativeMatrixPropertiesKHR() const; + + //=== VK_ARM_data_graph === + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getQueueFamilyDataGraphPropertiesARM( uint32_t queueFamilyIndex ) const; + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM.html + VULKAN_HPP_NODISCARD QueueFamilyDataGraphProcessingEnginePropertiesARM getQueueFamilyDataGraphProcessingEnginePropertiesARM( + PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & queueFamilyDataGraphProcessingEngineInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_calibrated_timestamps === + + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getCalibrateableTimeDomainsKHR() const; + + //=== VK_NV_cooperative_matrix2 === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCooperativeMatrixFlexibleDimensionsPropertiesNV() const; + + //=== VK_ARM_performance_counters_by_region === + + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM.html + VULKAN_HPP_NODISCARD typename ResultValueType, std::vector>>::type + enumerateQueueFamilyPerformanceCountersByRegionARM( uint32_t queueFamilyIndex ) const; + + //=== VK_ARM_shader_instrumentation === + + // wrapper function for command vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + enumerateShaderInstrumentationMetricsARM() const; + +# if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + + // wrapper function for command vkGetPhysicalDeviceUbmPresentationSupportSEC, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceUbmPresentationSupportSEC.html + VULKAN_HPP_NODISCARD std::pair getUbmPresentationSupportSEC( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_UBM_SEC*/ + + private: + VULKAN_HPP_NAMESPACE::PhysicalDevice m_physicalDevice = {}; + detail::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class PhysicalDevices : public std::vector + { + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + PhysicalDevices( Instance const & instance ) + { + *this = instance.enumeratePhysicalDevices(); + } +# endif + + PhysicalDevices( std::nullptr_t ) {} + + PhysicalDevices() = delete; + PhysicalDevices( PhysicalDevices const & ) = delete; + PhysicalDevices( PhysicalDevices && rhs ) = default; + PhysicalDevices & operator=( PhysicalDevices const & ) = delete; + PhysicalDevices & operator=( PhysicalDevices && rhs ) = default; + + PhysicalDevices( std::vector && rhs ) + { + std::swap( *this, rhs ); + } + }; + + // wrapper class for handle VkDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDevice.html + class Device + { + public: + using CType = VkDevice; + using CppType = VULKAN_HPP_NAMESPACE::Device; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDevice; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDevice; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Device( PhysicalDevice const & physicalDevice, DeviceCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = physicalDevice.createDevice( createInfo, allocator ); + } +# endif + + Device( PhysicalDevice const & physicalDevice, VkDevice device, Optional allocator = nullptr ) + : m_device( device ), m_allocator( static_cast( allocator ) ) + { + m_dispatcher.reset( new detail::DeviceDispatcher( physicalDevice.getDispatcher()->vkGetDeviceProcAddr, static_cast( m_device ) ) ); + } + + Device( std::nullptr_t ) {} + + ~Device() + { + clear(); + } + + Device() = delete; + Device( Device const & ) = delete; + + Device( Device && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( rhs.m_dispatcher.release() ) + { + } + + Device & operator=( Device const & ) = delete; + + Device & operator=( Device && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Device const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_device; + } + + VULKAN_HPP_NAMESPACE::Device const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_device ); + } + + operator VULKAN_HPP_NAMESPACE::Device() const VULKAN_HPP_NOEXCEPT + { + return m_device; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_device ) + { + getDispatcher()->vkDestroyDevice( static_cast( m_device ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Device release() + { + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_device, nullptr ); + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return &*m_dispatcher; + } + + void swap( Device & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkGetDeviceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceProcAddr.html + VULKAN_HPP_NODISCARD PFN_VoidFunction getProcAddr( std::string const & name ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue.html + VULKAN_HPP_NODISCARD Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkDeviceWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeviceWaitIdle.html + typename ResultValueType::type waitIdle() const; + + // wrapper function for command vkAllocateMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateMemory.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + allocateMemory( MemoryAllocateInfo const & allocateInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkFlushMappedMemoryRanges, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFlushMappedMemoryRanges.html + typename ResultValueType::type flushMappedMemoryRanges( ArrayProxy const & memoryRanges ) const; + + // wrapper function for command vkInvalidateMappedMemoryRanges, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInvalidateMappedMemoryRanges.html + typename ResultValueType::type invalidateMappedMemoryRanges( ArrayProxy const & memoryRanges ) const; + + // wrapper function for command vkCreateFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFence.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createFence( FenceCreateInfo const & createInfo, Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkResetFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetFences.html + typename ResultValueType::type resetFences( ArrayProxy const & fences ) const; + + // wrapper function for command vkWaitForFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForFences.html + VULKAN_HPP_NODISCARD Result waitForFences( ArrayProxy const & fences, Bool32 waitAll, uint64_t timeout ) const; + + // wrapper function for command vkCreateSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSemaphore.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSemaphore( SemaphoreCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateQueryPool.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createQueryPool( QueryPoolCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBuffer.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createBuffer( BufferCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImage.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createImage( ImageCreateInfo const & createInfo, Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImageView.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createImageView( ImageViewCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCommandPool.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCommandPool( CommandPoolCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + allocateCommandBuffers( CommandBufferAllocateInfo const & allocateInfo ) const; + + // wrapper function for command vkCreateEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateEvent.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createEvent( EventCreateInfo const & createInfo, Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferView.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createBufferView( BufferViewCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderModule.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createShaderModule( ShaderModuleCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreatePipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineCache.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createPipelineCache( PipelineCacheCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createComputePipelines( Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) const; + + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createComputePipeline( Optional const & pipelineCache, + ComputePipelineCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreatePipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineLayout.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createPipelineLayout( PipelineLayoutCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSampler.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSampler( SamplerCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateDescriptorSetLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorSetLayout.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDescriptorSetLayout( DescriptorSetLayoutCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorPool.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDescriptorPool( DescriptorPoolCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + allocateDescriptorSets( DescriptorSetAllocateInfo const & allocateInfo ) const; + + // wrapper function for command vkUpdateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSets.html + void updateDescriptorSets( ArrayProxy const & descriptorWrites, + ArrayProxy const & descriptorCopies ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createGraphicsPipelines( Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) const; + + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createGraphicsPipeline( Optional const & pipelineCache, + GraphicsPipelineCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFramebuffer.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createFramebuffer( FramebufferCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createRenderPass( RenderPassCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkBindBufferMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2.html + typename ResultValueType::type bindBufferMemory2( ArrayProxy const & bindInfos ) const; + + // wrapper function for command vkBindImageMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2.html + typename ResultValueType::type bindImageMemory2( ArrayProxy const & bindInfos ) const; + + // wrapper function for command vkGetDeviceGroupPeerMemoryFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeatures.html + VULKAN_HPP_NODISCARD PeerMemoryFeatureFlags getGroupPeerMemoryFeatures( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html + VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirements2( ImageMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements2( ImageMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetBufferMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html + VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirements2( BufferMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetBufferMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements2( BufferMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetImageSparseMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2.html + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2( ImageSparseMemoryRequirementsInfo2 const & info ) const; + + // wrapper function for command vkGetDeviceQueue2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue2.html + VULKAN_HPP_NODISCARD Queue getQueue2( DeviceQueueInfo2 const & queueInfo ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplate.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDescriptorUpdateTemplate( DescriptorUpdateTemplateCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkGetDescriptorSetLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html + VULKAN_HPP_NODISCARD DescriptorSetLayoutSupport + getDescriptorSetLayoutSupport( DescriptorSetLayoutCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDescriptorSetLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html + template + VULKAN_HPP_NODISCARD StructureChain + getDescriptorSetLayoutSupport( DescriptorSetLayoutCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCreateSamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversion.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSamplerYcbcrConversion( SamplerYcbcrConversionCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_VERSION_1_2 === + + // wrapper function for command vkWaitSemaphores, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphores.html + VULKAN_HPP_NODISCARD Result waitSemaphores( SemaphoreWaitInfo const & waitInfo, uint64_t timeout ) const; + + // wrapper function for command vkSignalSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphore.html + typename ResultValueType::type signalSemaphore( SemaphoreSignalInfo const & signalInfo ) const; + + // wrapper function for command vkGetBufferDeviceAddress, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddress.html + VULKAN_HPP_NODISCARD DeviceAddress getBufferAddress( BufferDeviceAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetBufferOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddress.html + VULKAN_HPP_NODISCARD uint64_t getBufferOpaqueCaptureAddress( BufferDeviceAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddress.html + VULKAN_HPP_NODISCARD uint64_t getMemoryOpaqueCaptureAddress( DeviceMemoryOpaqueCaptureAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCreateRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createRenderPass2( RenderPassCreateInfo2 const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_VERSION_1_3 === + + // wrapper function for command vkCreatePrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlot.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createPrivateDataSlot( PrivateDataSlotCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkSetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateData.html + typename ResultValueType::type + setPrivateData( ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, uint64_t data ) const; + + // wrapper function for command vkGetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateData.html + VULKAN_HPP_NODISCARD uint64_t getPrivateData( ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html + VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirements( DeviceBufferMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements( DeviceBufferMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html + VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirements( DeviceImageMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements( DeviceImageMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirements.html + VULKAN_HPP_NODISCARD std::vector getImageSparseMemoryRequirements( DeviceImageMemoryRequirements const & info ) const; + + //=== VK_VERSION_1_4 === + + // wrapper function for command vkMapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2.html + VULKAN_HPP_NODISCARD typename ResultValueType::type mapMemory2( MemoryMapInfo const & memoryMapInfo ) const; + + // wrapper function for command vkUnmapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2.html + typename ResultValueType::type unmapMemory2( MemoryUnmapInfo const & memoryUnmapInfo ) const; + + // wrapper function for command vkGetDeviceImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html + VULKAN_HPP_NODISCARD SubresourceLayout2 getImageSubresourceLayout( DeviceImageSubresourceInfo const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html + template + VULKAN_HPP_NODISCARD StructureChain getImageSubresourceLayout( DeviceImageSubresourceInfo const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCopyMemoryToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImage.html + typename ResultValueType::type copyMemoryToImage( CopyMemoryToImageInfo const & copyMemoryToImageInfo ) const; + + // wrapper function for command vkCopyImageToMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemory.html + typename ResultValueType::type copyImageToMemory( CopyImageToMemoryInfo const & copyImageToMemoryInfo ) const; + + // wrapper function for command vkCopyImageToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImage.html + typename ResultValueType::type copyImageToImage( CopyImageToImageInfo const & copyImageToImageInfo ) const; + + // wrapper function for command vkTransitionImageLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayout.html + typename ResultValueType::type transitionImageLayout( ArrayProxy const & transitions ) const; + + // wrapper function for command vkGetRenderingAreaGranularity, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularity.html + VULKAN_HPP_NODISCARD Extent2D getRenderingAreaGranularity( RenderingAreaInfo const & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_swapchain === + + // wrapper function for command vkCreateSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSwapchainKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSwapchainKHR( SwapchainCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkGetDeviceGroupPresentCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPresentCapabilitiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getGroupPresentCapabilitiesKHR() const; + + // wrapper function for command vkGetDeviceGroupSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const; + + // wrapper function for command vkAcquireNextImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImage2KHR.html + VULKAN_HPP_NODISCARD ResultValue acquireNextImage2KHR( AcquireNextImageInfoKHR const & acquireInfo ) const; + + //=== VK_KHR_display_swapchain === + + // wrapper function for command vkCreateSharedSwapchainsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createSharedSwapchainsKHR( ArrayProxy const & createInfos, Optional allocator = nullptr ) const; + + // wrapper function for command vkCreateSharedSwapchainsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSharedSwapchainKHR( SwapchainCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_EXT_debug_marker === + + // wrapper function for command vkDebugMarkerSetObjectTagEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectTagEXT.html + typename ResultValueType::type debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT const & tagInfo ) const; + + // wrapper function for command vkDebugMarkerSetObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectNameEXT.html + typename ResultValueType::type debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT const & nameInfo ) const; + + //=== VK_KHR_video_queue === + + // wrapper function for command vkCreateVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createVideoSessionKHR( VideoSessionCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionParametersKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createVideoSessionParametersKHR( VideoSessionParametersCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_NVX_binary_import === + + // wrapper function for command vkCreateCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuModuleNVX.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCuModuleNVX( CuModuleCreateInfoNVX const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuFunctionNVX.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCuFunctionNVX( CuFunctionCreateInfoNVX const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_NVX_image_view_handle === + + // wrapper function for command vkGetImageViewHandleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandleNVX.html + VULKAN_HPP_NODISCARD uint32_t getImageViewHandleNVX( ImageViewHandleInfoNVX const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetImageViewHandle64NVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandle64NVX.html + VULKAN_HPP_NODISCARD uint64_t getImageViewHandle64NVX( ImageViewHandleInfoNVX const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceCombinedImageSamplerIndexNVX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceCombinedImageSamplerIndexNVX.html + VULKAN_HPP_NODISCARD uint64_t getCombinedImageSamplerIndexNVX( uint64_t imageViewIndex, uint64_t samplerIndex ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_device_group === + + // wrapper function for command vkGetDeviceGroupPeerMemoryFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHR.html + VULKAN_HPP_NODISCARD PeerMemoryFeatureFlags getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + + // wrapper function for command vkGetMemoryWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryWin32HandleKHR( MemoryGetWin32HandleInfoKHR const & getWin32HandleInfo ) const; + + // wrapper function for command vkGetMemoryWin32HandlePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandlePropertiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + + // wrapper function for command vkGetMemoryFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryFdKHR( MemoryGetFdInfoKHR const & getFdInfo ) const; + + // wrapper function for command vkGetMemoryFdPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdPropertiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, + int fd ) const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + + // wrapper function for command vkImportSemaphoreWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreWin32HandleKHR.html + typename ResultValueType::type importSemaphoreWin32HandleKHR( ImportSemaphoreWin32HandleInfoKHR const & importSemaphoreWin32HandleInfo ) const; + + // wrapper function for command vkGetSemaphoreWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreWin32HandleKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getSemaphoreWin32HandleKHR( SemaphoreGetWin32HandleInfoKHR const & getWin32HandleInfo ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + + // wrapper function for command vkImportSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreFdKHR.html + typename ResultValueType::type importSemaphoreFdKHR( ImportSemaphoreFdInfoKHR const & importSemaphoreFdInfo ) const; + + // wrapper function for command vkGetSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreFdKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getSemaphoreFdKHR( SemaphoreGetFdInfoKHR const & getFdInfo ) const; + + //=== VK_KHR_descriptor_update_template === + + // wrapper function for command vkCreateDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplateKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkDestroyDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplateKHR.html + void + destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_display_control === + + // wrapper function for command vkDisplayPowerControlEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDisplayPowerControlEXT.html + typename ResultValueType::type displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + DisplayPowerInfoEXT const & displayPowerInfo ) const; + + // wrapper function for command vkRegisterDeviceEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDeviceEventEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + registerEventEXT( DeviceEventInfoEXT const & deviceEventInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkRegisterDisplayEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDisplayEventEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + registerDisplayEventEXT( DisplayKHR const & display, + DisplayEventInfoEXT const & displayEventInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_EXT_hdr_metadata === + + // wrapper function for command vkSetHdrMetadataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetHdrMetadataEXT.html + void setHdrMetadataEXT( ArrayProxy const & swapchains, + ArrayProxy const & metadata ) const; + + //=== VK_KHR_create_renderpass2 === + + // wrapper function for command vkCreateRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2KHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createRenderPass2KHR( RenderPassCreateInfo2 const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + + // wrapper function for command vkImportFenceWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceWin32HandleKHR.html + typename ResultValueType::type importFenceWin32HandleKHR( ImportFenceWin32HandleInfoKHR const & importFenceWin32HandleInfo ) const; + + // wrapper function for command vkGetFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceWin32HandleKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getFenceWin32HandleKHR( FenceGetWin32HandleInfoKHR const & getWin32HandleInfo ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + + // wrapper function for command vkImportFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceFdKHR.html + typename ResultValueType::type importFenceFdKHR( ImportFenceFdInfoKHR const & importFenceFdInfo ) const; + + // wrapper function for command vkGetFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceFdKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getFenceFdKHR( FenceGetFdInfoKHR const & getFdInfo ) const; + + //=== VK_KHR_performance_query === + + // wrapper function for command vkAcquireProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireProfilingLockKHR.html + typename ResultValueType::type acquireProfilingLockKHR( AcquireProfilingLockInfoKHR const & info ) const; + + // wrapper function for command vkReleaseProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseProfilingLockKHR.html + void releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_debug_utils === + + // wrapper function for command vkSetDebugUtilsObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html + typename ResultValueType::type setDebugUtilsObjectNameEXT( DebugUtilsObjectNameInfoEXT const & nameInfo ) const; + + // wrapper function for command vkSetDebugUtilsObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html + template + typename ResultValueType::type setDebugUtilsObjectNameEXT( HandleType const & handle, std::string const & name ) const; + + // wrapper function for command vkSetDebugUtilsObjectTagEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html + typename ResultValueType::type setDebugUtilsObjectTagEXT( DebugUtilsObjectTagInfoEXT const & tagInfo ) const; + + // wrapper function for command vkSetDebugUtilsObjectTagEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html + template + typename ResultValueType::type setDebugUtilsObjectTagEXT( HandleType const & handle, uint64_t name, TagType const & tag ) const; + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + + // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getAndroidHardwareBufferPropertiesANDROID( struct AHardwareBuffer const & buffer ) const; + + // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getAndroidHardwareBufferPropertiesANDROID( struct AHardwareBuffer const & buffer ) const; + + // wrapper function for command vkGetMemoryAndroidHardwareBufferANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryAndroidHardwareBufferANDROID.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryAndroidHardwareBufferANDROID( MemoryGetAndroidHardwareBufferInfoANDROID const & info ) const; +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createExecutionGraphPipelinesAMDX( Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) const; + + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createExecutionGraphPipelineAMDX( Optional const & pipelineCache, + ExecutionGraphPipelineCreateInfoAMDX const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + + // wrapper function for command vkWriteSamplerDescriptorsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteSamplerDescriptorsEXT.html + typename ResultValueType::type writeSamplerDescriptorsEXT( ArrayProxy const & samplers, + ArrayProxy const & descriptors ) const; + + // wrapper function for command vkWriteResourceDescriptorsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteResourceDescriptorsEXT.html + typename ResultValueType::type writeResourceDescriptorsEXT( ArrayProxy const & resources, + ArrayProxy const & descriptors ) const; + + // wrapper function for command vkGetImageOpaqueCaptureDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDataEXT.html + VULKAN_HPP_NODISCARD Result getImageOpaqueCaptureDataEXT( uint32_t imageCount, + VULKAN_HPP_NAMESPACE::Image const * pImages, + HostAddressRangeEXT * pDatas ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkRegisterCustomBorderColorEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterCustomBorderColorEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type registerCustomBorderColorEXT( SamplerCustomBorderColorCreateInfoEXT const & borderColor, + Bool32 requestIndex ) const; + + // wrapper function for command vkUnregisterCustomBorderColorEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnregisterCustomBorderColorEXT.html + void unregisterCustomBorderColorEXT( uint32_t index ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetTensorOpaqueCaptureDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDataARM.html + VULKAN_HPP_NODISCARD Result getTensorOpaqueCaptureDataARM( uint32_t tensorCount, + VULKAN_HPP_NAMESPACE::TensorARM const * pTensors, + HostAddressRangeEXT * pDatas ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_get_memory_requirements2 === + + // wrapper function for command vkGetImageMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html + VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirements2KHR( ImageMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetImageMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements2KHR( ImageMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetBufferMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html + VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirements2KHR( BufferMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetBufferMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements2KHR( BufferMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetImageSparseMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2KHR.html + VULKAN_HPP_NODISCARD std::vector + getImageSparseMemoryRequirements2KHR( ImageSparseMemoryRequirementsInfo2 const & info ) const; + + //=== VK_KHR_acceleration_structure === + + // wrapper function for command vkCreateAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createAccelerationStructureKHR( AccelerationStructureCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildAccelerationStructuresKHR.html + VULKAN_HPP_NODISCARD Result + buildAccelerationStructuresKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos ) const; + + // wrapper function for command vkCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureKHR.html + VULKAN_HPP_NODISCARD Result copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyAccelerationStructureInfoKHR const & info ) const; + + // wrapper function for command vkCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureToMemoryKHR.html + VULKAN_HPP_NODISCARD Result copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyAccelerationStructureToMemoryInfoKHR const & info ) const; + + // wrapper function for command vkCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToAccelerationStructureKHR.html + VULKAN_HPP_NODISCARD Result copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyMemoryToAccelerationStructureInfoKHR const & info ) const; + + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + VULKAN_HPP_NODISCARD Result writeAccelerationStructuresPropertiesKHR( uint32_t accelerationStructureCount, + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const * pAccelerationStructures, + QueryType queryType, + size_t dataSize, + void * pData, + size_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, + QueryType queryType, + size_t dataSize, + size_t stride ) const; + + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type writeAccelerationStructuresPropertyKHR( + ArrayProxy const & accelerationStructures, QueryType queryType, size_t stride ) const; + + // wrapper function for command vkGetAccelerationStructureDeviceAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureDeviceAddressKHR.html + VULKAN_HPP_NODISCARD DeviceAddress getAccelerationStructureAddressKHR( AccelerationStructureDeviceAddressInfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceAccelerationStructureCompatibilityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceAccelerationStructureCompatibilityKHR.html + VULKAN_HPP_NODISCARD AccelerationStructureCompatibilityKHR + getAccelerationStructureCompatibilityKHR( AccelerationStructureVersionInfoKHR const & versionInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetAccelerationStructureBuildSizesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureBuildSizesKHR.html + VULKAN_HPP_NODISCARD AccelerationStructureBuildSizesInfoKHR + getAccelerationStructureBuildSizesKHR( AccelerationStructureBuildTypeKHR buildType, + AccelerationStructureBuildGeometryInfoKHR const & buildInfo, + ArrayProxy const & maxPrimitiveCounts VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + //=== VK_KHR_ray_tracing_pipeline === + + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createRayTracingPipelinesKHR( Optional const & deferredOperation, + Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) const; + + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createRayTracingPipelineKHR( Optional const & deferredOperation, + Optional const & pipelineCache, + RayTracingPipelineCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_KHR_sampler_ycbcr_conversion === + + // wrapper function for command vkCreateSamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversionKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createSamplerYcbcrConversionKHR( SamplerYcbcrConversionCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkDestroySamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversionKHR.html + void destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_bind_memory2 === + + // wrapper function for command vkBindBufferMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2KHR.html + typename ResultValueType::type bindBufferMemory2KHR( ArrayProxy const & bindInfos ) const; + + // wrapper function for command vkBindImageMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2KHR.html + typename ResultValueType::type bindImageMemory2KHR( ArrayProxy const & bindInfos ) const; + + //=== VK_EXT_validation_cache === + + // wrapper function for command vkCreateValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateValidationCacheEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createValidationCacheEXT( ValidationCacheCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_NV_ray_tracing === + + // wrapper function for command vkCreateAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createAccelerationStructureNV( AccelerationStructureCreateInfoNV const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html + VULKAN_HPP_NODISCARD MemoryRequirements2KHR + getAccelerationStructureMemoryRequirementsNV( AccelerationStructureMemoryRequirementsInfoNV const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html + template + VULKAN_HPP_NODISCARD StructureChain + getAccelerationStructureMemoryRequirementsNV( AccelerationStructureMemoryRequirementsInfoNV const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkBindAccelerationStructureMemoryNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindAccelerationStructureMemoryNV.html + typename ResultValueType::type bindAccelerationStructureMemoryNV( ArrayProxy const & bindInfos ) const; + + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createRayTracingPipelinesNV( Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) const; + + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createRayTracingPipelineNV( Optional const & pipelineCache, + RayTracingPipelineCreateInfoNV const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_KHR_maintenance3 === + + // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html + VULKAN_HPP_NODISCARD DescriptorSetLayoutSupport + getDescriptorSetLayoutSupportKHR( DescriptorSetLayoutCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html + template + VULKAN_HPP_NODISCARD StructureChain + getDescriptorSetLayoutSupportKHR( DescriptorSetLayoutCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_external_memory_host === + + // wrapper function for command vkGetMemoryHostPointerPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryHostPointerPropertiesEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, void const * pHostPointer ) const; + + //=== VK_EXT_calibrated_timestamps === + + // wrapper function for command vkGetCalibratedTimestampsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType, uint64_t>>::type + getCalibratedTimestampsEXT( ArrayProxy const & timestampInfos ) const; + + // wrapper function for command vkGetCalibratedTimestampsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCalibratedTimestampEXT( CalibratedTimestampInfoKHR const & timestampInfo ) const; + + //=== VK_KHR_timeline_semaphore === + + // wrapper function for command vkWaitSemaphoresKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphoresKHR.html + VULKAN_HPP_NODISCARD Result waitSemaphoresKHR( SemaphoreWaitInfo const & waitInfo, uint64_t timeout ) const; + + // wrapper function for command vkSignalSemaphoreKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphoreKHR.html + typename ResultValueType::type signalSemaphoreKHR( SemaphoreSignalInfo const & signalInfo ) const; + + //=== VK_EXT_present_timing === + + // wrapper function for command vkGetPastPresentationTimingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingEXT.html + VULKAN_HPP_NODISCARD Result + getPastPresentationTimingEXT( PastPresentationTimingInfoEXT const * pPastPresentationTimingInfo, + PastPresentationTimingPropertiesEXT * pPastPresentationTimingProperties ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_INTEL_performance_query === + + // wrapper function for command vkInitializePerformanceApiINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInitializePerformanceApiINTEL.html + typename ResultValueType::type initializePerformanceApiINTEL( InitializePerformanceApiInfoINTEL const & initializeInfo ) const; + + // wrapper function for command vkUninitializePerformanceApiINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUninitializePerformanceApiINTEL.html + void uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkAcquirePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquirePerformanceConfigurationINTEL.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + acquirePerformanceConfigurationINTEL( PerformanceConfigurationAcquireInfoINTEL const & acquireInfo ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkGetPerformanceParameterINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPerformanceParameterINTEL.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getPerformanceParameterINTEL( PerformanceParameterTypeINTEL parameter ) const; + + //=== VK_EXT_buffer_device_address === + + // wrapper function for command vkGetBufferDeviceAddressEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressEXT.html + VULKAN_HPP_NODISCARD DeviceAddress getBufferAddressEXT( BufferDeviceAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + // wrapper function for command vkGetDeviceGroupSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModes2EXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getGroupSurfacePresentModes2EXT( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_buffer_device_address === + + // wrapper function for command vkGetBufferDeviceAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressKHR.html + VULKAN_HPP_NODISCARD DeviceAddress getBufferAddressKHR( BufferDeviceAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetBufferOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddressKHR.html + VULKAN_HPP_NODISCARD uint64_t getBufferOpaqueCaptureAddressKHR( BufferDeviceAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddressKHR.html + VULKAN_HPP_NODISCARD uint64_t getMemoryOpaqueCaptureAddressKHR( DeviceMemoryOpaqueCaptureAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_deferred_host_operations === + + // wrapper function for command vkCreateDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDeferredOperationKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDeferredOperationKHR( Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_KHR_pipeline_executable_properties === + + // wrapper function for command vkGetPipelineExecutablePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutablePropertiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPipelineExecutablePropertiesKHR( PipelineInfoKHR const & pipelineInfo ) const; + + // wrapper function for command vkGetPipelineExecutableStatisticsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableStatisticsKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getPipelineExecutableStatisticsKHR( PipelineExecutableInfoKHR const & executableInfo ) const; + + // wrapper function for command vkGetPipelineExecutableInternalRepresentationsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableInternalRepresentationsKHR.html + VULKAN_HPP_NODISCARD Result + getPipelineExecutableInternalRepresentationsKHR( PipelineExecutableInfoKHR const * pExecutableInfo, + uint32_t * pInternalRepresentationCount, + PipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_host_image_copy === + + // wrapper function for command vkCopyMemoryToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImageEXT.html + typename ResultValueType::type copyMemoryToImageEXT( CopyMemoryToImageInfo const & copyMemoryToImageInfo ) const; + + // wrapper function for command vkCopyImageToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemoryEXT.html + typename ResultValueType::type copyImageToMemoryEXT( CopyImageToMemoryInfo const & copyImageToMemoryInfo ) const; + + // wrapper function for command vkCopyImageToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImageEXT.html + typename ResultValueType::type copyImageToImageEXT( CopyImageToImageInfo const & copyImageToImageInfo ) const; + + // wrapper function for command vkTransitionImageLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayoutEXT.html + typename ResultValueType::type transitionImageLayoutEXT( ArrayProxy const & transitions ) const; + + //=== VK_KHR_map_memory2 === + + // wrapper function for command vkMapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2KHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type mapMemory2KHR( MemoryMapInfo const & memoryMapInfo ) const; + + // wrapper function for command vkUnmapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2KHR.html + typename ResultValueType::type unmapMemory2KHR( MemoryUnmapInfo const & memoryUnmapInfo ) const; + + //=== VK_EXT_swapchain_maintenance1 === + + // wrapper function for command vkReleaseSwapchainImagesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesEXT.html + typename ResultValueType::type releaseSwapchainImagesEXT( ReleaseSwapchainImagesInfoKHR const & releaseInfo ) const; + + //=== VK_NV_device_generated_commands === + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html + VULKAN_HPP_NODISCARD MemoryRequirements2 + getGeneratedCommandsMemoryRequirementsNV( GeneratedCommandsMemoryRequirementsInfoNV const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html + template + VULKAN_HPP_NODISCARD StructureChain + getGeneratedCommandsMemoryRequirementsNV( GeneratedCommandsMemoryRequirementsInfoNV const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCreateIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createIndirectCommandsLayoutNV( IndirectCommandsLayoutCreateInfoNV const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_EXT_private_data === + + // wrapper function for command vkCreatePrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlotEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createPrivateDataSlotEXT( PrivateDataSlotCreateInfo const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkDestroyPrivateDataSlotEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlotEXT.html + void destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkSetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateDataEXT.html + typename ResultValueType::type + setPrivateDataEXT( ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, uint64_t data ) const; + + // wrapper function for command vkGetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateDataEXT.html + VULKAN_HPP_NODISCARD uint64_t getPrivateDataEXT( ObjectType objectType, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_video_encode_queue === + + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>>::type + getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo ) const; + + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType, std::vector>>::type + getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo ) const; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + // wrapper function for command vkCreateCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaModuleNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCudaModuleNV( CudaModuleCreateInfoNV const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaFunctionNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createCudaFunctionNV( CudaFunctionCreateInfoNV const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + + // wrapper function for command vkExportMetalObjectsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkExportMetalObjectsEXT.html + void exportMetalObjectsEXT( ExportMetalObjectsInfoEXT & metalObjectsInfo ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_EXT_descriptor_buffer === + + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + void getDescriptorEXT( DescriptorGetInfoEXT const * pDescriptorInfo, size_t dataSize, void * pDescriptor ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + void getDescriptorEXT( DescriptorGetInfoEXT const & descriptorInfo, size_t dataSize, void * pDescriptor ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + template + VULKAN_HPP_NODISCARD DescriptorType getDescriptorEXT( DescriptorGetInfoEXT const & descriptorInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetBufferOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureDescriptorDataEXT.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + getBufferOpaqueCaptureDescriptorDataEXT( BufferCaptureDescriptorDataInfoEXT const & info ) const; + + // wrapper function for command vkGetImageOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDescriptorDataEXT.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageOpaqueCaptureDescriptorDataEXT( ImageCaptureDescriptorDataInfoEXT const & info ) const; + + // wrapper function for command vkGetImageViewOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewOpaqueCaptureDescriptorDataEXT.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + getImageViewOpaqueCaptureDescriptorDataEXT( ImageViewCaptureDescriptorDataInfoEXT const & info ) const; + + // wrapper function for command vkGetSamplerOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSamplerOpaqueCaptureDescriptorDataEXT.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSamplerOpaqueCaptureDescriptorDataEXT( SamplerCaptureDescriptorDataInfoEXT const & info ) const; + + // wrapper function for command vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + getAccelerationStructureOpaqueCaptureDescriptorDataEXT( AccelerationStructureCaptureDescriptorDataInfoEXT const & info ) const; + + //=== VK_KHR_device_address_commands === + + // wrapper function for command vkCreateAccelerationStructure2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructure2KHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createAccelerationStructure2KHR( AccelerationStructureCreateInfo2KHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_EXT_device_fault === + + // wrapper function for command vkGetDeviceFaultInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultInfoEXT.html + VULKAN_HPP_NODISCARD Result getFaultInfoEXT( DeviceFaultCountsEXT * pFaultCounts, DeviceFaultInfoEXT * pFaultInfo ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + + // wrapper function for command vkGetMemoryZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandleFUCHSIA.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryZirconHandleFUCHSIA( MemoryGetZirconHandleInfoFUCHSIA const & getZirconHandleInfo ) const; + + // wrapper function for command vkGetMemoryZirconHandlePropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandlePropertiesFUCHSIA.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryZirconHandlePropertiesFUCHSIA( ExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle ) const; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + + // wrapper function for command vkImportSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreZirconHandleFUCHSIA.html + typename ResultValueType::type + importSemaphoreZirconHandleFUCHSIA( ImportSemaphoreZirconHandleInfoFUCHSIA const & importSemaphoreZirconHandleInfo ) const; + + // wrapper function for command vkGetSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreZirconHandleFUCHSIA.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getSemaphoreZirconHandleFUCHSIA( SemaphoreGetZirconHandleInfoFUCHSIA const & getZirconHandleInfo ) const; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + // wrapper function for command vkCreateBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferCollectionFUCHSIA.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createBufferCollectionFUCHSIA( BufferCollectionCreateInfoFUCHSIA const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_NV_external_memory_rdma === + + // wrapper function for command vkGetMemoryRemoteAddressNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryRemoteAddressNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryRemoteAddressNV( MemoryGetRemoteAddressInfoNV const & memoryGetRemoteAddressInfo ) const; + + //=== VK_EXT_pipeline_properties === + + // wrapper function for command vkGetPipelinePropertiesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelinePropertiesEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getPipelinePropertiesEXT( PipelineInfoEXT const & pipelineInfo ) const; + + //=== VK_EXT_opacity_micromap === + + // wrapper function for command vkCreateMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMicromapEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createMicromapEXT( MicromapCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildMicromapsEXT.html + VULKAN_HPP_NODISCARD Result buildMicromapsEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + ArrayProxy const & infos ) const; + + // wrapper function for command vkCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapEXT.html + VULKAN_HPP_NODISCARD Result copyMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, CopyMicromapInfoEXT const & info ) const; + + // wrapper function for command vkCopyMicromapToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapToMemoryEXT.html + VULKAN_HPP_NODISCARD Result copyMicromapToMemoryEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyMicromapToMemoryInfoEXT const & info ) const; + + // wrapper function for command vkCopyMemoryToMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToMicromapEXT.html + VULKAN_HPP_NODISCARD Result copyMemoryToMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyMemoryToMicromapInfoEXT const & info ) const; + + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + VULKAN_HPP_NODISCARD Result writeMicromapsPropertiesEXT( uint32_t micromapCount, + VULKAN_HPP_NAMESPACE::MicromapEXT const * pMicromaps, + QueryType queryType, + size_t dataSize, + void * pData, + size_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type writeMicromapsPropertiesEXT( + ArrayProxy const & micromaps, QueryType queryType, size_t dataSize, size_t stride ) const; + + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + writeMicromapsPropertyEXT( ArrayProxy const & micromaps, QueryType queryType, size_t stride ) const; + + // wrapper function for command vkGetDeviceMicromapCompatibilityEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMicromapCompatibilityEXT.html + VULKAN_HPP_NODISCARD AccelerationStructureCompatibilityKHR + getMicromapCompatibilityEXT( MicromapVersionInfoEXT const & versionInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetMicromapBuildSizesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMicromapBuildSizesEXT.html + VULKAN_HPP_NODISCARD MicromapBuildSizesInfoEXT getMicromapBuildSizesEXT( AccelerationStructureBuildTypeKHR buildType, + MicromapBuildInfoEXT const & buildInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_maintenance4 === + + // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html + VULKAN_HPP_NODISCARD MemoryRequirements2 getBufferMemoryRequirementsKHR( DeviceBufferMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html + template + VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirementsKHR( DeviceBufferMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html + VULKAN_HPP_NODISCARD MemoryRequirements2 getImageMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html + template + VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceImageSparseMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirementsKHR.html + VULKAN_HPP_NODISCARD std::vector getImageSparseMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info ) const; + + //=== VK_VALVE_descriptor_set_host_mapping === + + // wrapper function for command vkGetDescriptorSetLayoutHostMappingInfoVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutHostMappingInfoVALVE.html + VULKAN_HPP_NODISCARD DescriptorSetLayoutHostMappingInfoVALVE + getDescriptorSetLayoutHostMappingInfoVALVE( DescriptorSetBindingReferenceVALVE const & bindingReference ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_generated_commands_compute === + + // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html + VULKAN_HPP_NODISCARD MemoryRequirements2 + getPipelineIndirectMemoryRequirementsNV( ComputePipelineCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html + template + VULKAN_HPP_NODISCARD StructureChain + getPipelineIndirectMemoryRequirementsNV( ComputePipelineCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetPipelineIndirectDeviceAddressNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectDeviceAddressNV.html + VULKAN_HPP_NODISCARD DeviceAddress getPipelineIndirectAddressNV( PipelineIndirectDeviceAddressInfoNV const & info ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + + // wrapper function for command vkGetNativeBufferPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getNativeBufferPropertiesOHOS( struct OH_NativeBuffer const & buffer ) const; + + // wrapper function for command vkGetNativeBufferPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getNativeBufferPropertiesOHOS( struct OH_NativeBuffer const & buffer ) const; + + // wrapper function for command vkGetMemoryNativeBufferOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryNativeBufferOHOS.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryNativeBufferOHOS( MemoryGetNativeBufferInfoOHOS const & info ) const; +# endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_ARM_tensors === + + // wrapper function for command vkCreateTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorARM.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createTensorARM( TensorCreateInfoARM const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorViewARM.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createTensorViewARM( TensorViewCreateInfoARM const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkGetTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html + VULKAN_HPP_NODISCARD MemoryRequirements2 getTensorMemoryRequirementsARM( TensorMemoryRequirementsInfoARM const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html + template + VULKAN_HPP_NODISCARD StructureChain getTensorMemoryRequirementsARM( TensorMemoryRequirementsInfoARM const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkBindTensorMemoryARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindTensorMemoryARM.html + typename ResultValueType::type bindTensorMemoryARM( ArrayProxy const & bindInfos ) const; + + // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html + VULKAN_HPP_NODISCARD MemoryRequirements2 getTensorMemoryRequirementsARM( DeviceTensorMemoryRequirementsARM const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html + template + VULKAN_HPP_NODISCARD StructureChain + getTensorMemoryRequirementsARM( DeviceTensorMemoryRequirementsARM const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetTensorOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDescriptorDataARM.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + getTensorOpaqueCaptureDescriptorDataARM( TensorCaptureDescriptorDataInfoARM const & info ) const; + + // wrapper function for command vkGetTensorViewOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorViewOpaqueCaptureDescriptorDataARM.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + getTensorViewOpaqueCaptureDescriptorDataARM( TensorViewCaptureDescriptorDataInfoARM const & info ) const; + + //=== VK_EXT_shader_module_identifier === + + // wrapper function for command vkGetShaderModuleCreateInfoIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleCreateInfoIdentifierEXT.html + VULKAN_HPP_NODISCARD ShaderModuleIdentifierEXT + getShaderModuleCreateInfoIdentifierEXT( ShaderModuleCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_optical_flow === + + // wrapper function for command vkCreateOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateOpticalFlowSessionNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createOpticalFlowSessionNV( OpticalFlowSessionCreateInfoNV const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_KHR_maintenance5 === + + // wrapper function for command vkGetRenderingAreaGranularityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularityKHR.html + VULKAN_HPP_NODISCARD Extent2D getRenderingAreaGranularityKHR( RenderingAreaInfo const & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html + VULKAN_HPP_NODISCARD SubresourceLayout2 getImageSubresourceLayoutKHR( DeviceImageSubresourceInfo const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html + template + VULKAN_HPP_NODISCARD StructureChain getImageSubresourceLayoutKHR( DeviceImageSubresourceInfo const & info ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_AMD_anti_lag === + + // wrapper function for command vkAntiLagUpdateAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAntiLagUpdateAMD.html + void antiLagUpdateAMD( AntiLagDataAMD const & data ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_shader_object === + + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createShadersEXT( ArrayProxy const & createInfos, Optional allocator = nullptr ) const; + + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createShaderEXT( ShaderCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_KHR_pipeline_binary === + + // wrapper function for command vkCreatePipelineBinariesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createPipelineBinariesKHR( PipelineBinaryCreateInfoKHR const & createInfo, Optional allocator = nullptr ) const; + + // wrapper function for command vkGetPipelineKeyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineKeyKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getPipelineKeyKHR( Optional pipelineCreateInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + // wrapper function for command vkGetPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineBinaryDataKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>>::type + getPipelineBinaryDataKHR( PipelineBinaryDataInfoKHR const & info ) const; + + // wrapper function for command vkReleaseCapturedPipelineDataKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseCapturedPipelineDataKHR.html + typename ResultValueType::type + releaseCapturedPipelineDataKHR( ReleaseCapturedPipelineDataInfoKHR const & info, + Optional allocator VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + //=== VK_QCOM_tile_properties === + + // wrapper function for command vkGetDynamicRenderingTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDynamicRenderingTilePropertiesQCOM.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getDynamicRenderingTilePropertiesQCOM( RenderingInfo const & renderingInfo ) const; + + //=== VK_KHR_swapchain_maintenance1 === + + // wrapper function for command vkReleaseSwapchainImagesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesKHR.html + typename ResultValueType::type releaseSwapchainImagesKHR( ReleaseSwapchainImagesInfoKHR const & releaseInfo ) const; + + //=== VK_NV_cooperative_vector === + + // wrapper function for command vkConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkConvertCooperativeVectorMatrixNV.html + VULKAN_HPP_NODISCARD Result convertCooperativeVectorMatrixNV( ConvertCooperativeVectorMatrixInfoNV const & info ) const; + + //=== VK_ARM_data_graph === + + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + createDataGraphPipelinesARM( Optional const & deferredOperation, + Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) const; + + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDataGraphPipelineARM( Optional const & deferredOperation, + Optional const & pipelineCache, + DataGraphPipelineCreateInfoARM const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelineSessionARM.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createDataGraphPipelineSessionARM( DataGraphPipelineSessionCreateInfoARM const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkGetDataGraphPipelineSessionBindPointRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionBindPointRequirementsARM.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDataGraphPipelineSessionBindPointRequirementsARM( DataGraphPipelineSessionBindPointRequirementsInfoARM const & info ) const; + + // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html + VULKAN_HPP_NODISCARD MemoryRequirements2 + getDataGraphPipelineSessionMemoryRequirementsARM( DataGraphPipelineSessionMemoryRequirementsInfoARM const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html + template + VULKAN_HPP_NODISCARD StructureChain + getDataGraphPipelineSessionMemoryRequirementsARM( DataGraphPipelineSessionMemoryRequirementsInfoARM const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkBindDataGraphPipelineSessionMemoryARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindDataGraphPipelineSessionMemoryARM.html + typename ResultValueType::type + bindDataGraphPipelineSessionMemoryARM( ArrayProxy const & bindInfos ) const; + + // wrapper function for command vkGetDataGraphPipelineAvailablePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineAvailablePropertiesARM.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getDataGraphPipelineAvailablePropertiesARM( DataGraphPipelineInfoARM const & pipelineInfo ) const; + + // wrapper function for command vkGetDataGraphPipelinePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelinePropertiesARM.html + VULKAN_HPP_NODISCARD Result getDataGraphPipelinePropertiesARM( DataGraphPipelineInfoARM const * pPipelineInfo, + uint32_t propertiesCount, + DataGraphPipelinePropertyQueryResultARM * pProperties ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + + // wrapper function for command vkGetScreenBufferPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getScreenBufferPropertiesQNX( struct _screen_buffer const & buffer ) const; + + // wrapper function for command vkGetScreenBufferPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getScreenBufferPropertiesQNX( struct _screen_buffer const & buffer ) const; +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_calibrated_timestamps === + + // wrapper function for command vkGetCalibratedTimestampsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType, uint64_t>>::type + getCalibratedTimestampsKHR( ArrayProxy const & timestampInfos ) const; + + // wrapper function for command vkGetCalibratedTimestampsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getCalibratedTimestampKHR( CalibratedTimestampInfoKHR const & timestampInfo ) const; + + //=== VK_NV_external_compute_queue === + + // wrapper function for command vkCreateExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExternalComputeQueueNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createExternalComputeQueueNV( ExternalComputeQueueCreateInfoNV const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_NV_cluster_acceleration_structure === + + // wrapper function for command vkGetClusterAccelerationStructureBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetClusterAccelerationStructureBuildSizesNV.html + VULKAN_HPP_NODISCARD AccelerationStructureBuildSizesInfoKHR + getClusterAccelerationStructureBuildSizesNV( ClusterAccelerationStructureInputInfoNV const & info ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_partitioned_acceleration_structure === + + // wrapper function for command vkGetPartitionedAccelerationStructuresBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPartitionedAccelerationStructuresBuildSizesNV.html + VULKAN_HPP_NODISCARD AccelerationStructureBuildSizesInfoKHR + getPartitionedAccelerationStructuresBuildSizesNV( PartitionedAccelerationStructureInstancesInputNV const & info ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_device_generated_commands === + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + VULKAN_HPP_NODISCARD MemoryRequirements2 + getGeneratedCommandsMemoryRequirementsEXT( GeneratedCommandsMemoryRequirementsInfoEXT const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + template + VULKAN_HPP_NODISCARD StructureChain + getGeneratedCommandsMemoryRequirementsEXT( GeneratedCommandsMemoryRequirementsInfoEXT const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCreateIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createIndirectCommandsLayoutEXT( IndirectCommandsLayoutCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + // wrapper function for command vkCreateIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectExecutionSetEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createIndirectExecutionSetEXT( IndirectExecutionSetCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_KHR_device_fault === + + // wrapper function for command vkGetDeviceFaultReportsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultReportsKHR.html + VULKAN_HPP_NODISCARD ResultValue> getFaultReportsKHR( uint64_t timeout ) const; + + // wrapper function for command vkGetDeviceFaultDebugInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultDebugInfoKHR.html + VULKAN_HPP_NODISCARD Result getFaultDebugInfoKHR( DeviceFaultDebugInfoKHR * pDebugInfo ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + + // wrapper function for command vkGetMemoryMetalHandleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandleEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryMetalHandleEXT( MemoryGetMetalHandleInfoEXT const & getMetalHandleInfo ) const; + + // wrapper function for command vkGetMemoryMetalHandlePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandlePropertiesEXT.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type + getMemoryMetalHandlePropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, HandleType const & handle ) const; +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_shader_instrumentation === + + // wrapper function for command vkCreateShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderInstrumentationARM.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createShaderInstrumentationARM( ShaderInstrumentationCreateInfoARM const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + AllocationCallbacks const * m_allocator = {}; + std::unique_ptr m_dispatcher; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkAccelerationStructureKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureKHR.html + class AccelerationStructureKHR + { + public: + using CType = VkAccelerationStructureKHR; + using CppType = VULKAN_HPP_NAMESPACE::AccelerationStructureKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eAccelerationStructureKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eAccelerationStructureKHR; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + AccelerationStructureKHR( Device const & device, + AccelerationStructureCreateInfo2KHR const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createAccelerationStructure2KHR( createInfo, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + AccelerationStructureKHR( Device const & device, + AccelerationStructureCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createAccelerationStructureKHR( createInfo, allocator ); + } +# endif + + AccelerationStructureKHR( Device const & device, + VkAccelerationStructureKHR accelerationStructure, + Optional allocator = nullptr ) + : m_device( device ) + , m_accelerationStructureKHR( accelerationStructure ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + AccelerationStructureKHR( std::nullptr_t ) {} + + ~AccelerationStructureKHR() + { + clear(); + } + + AccelerationStructureKHR() = delete; + AccelerationStructureKHR( AccelerationStructureKHR const & ) = delete; + + AccelerationStructureKHR( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_accelerationStructureKHR( exchange( rhs.m_accelerationStructureKHR, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + AccelerationStructureKHR & operator=( AccelerationStructureKHR const & ) = delete; + + AccelerationStructureKHR & operator=( AccelerationStructureKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_accelerationStructureKHR, rhs.m_accelerationStructureKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR; + } + + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_accelerationStructureKHR ); + } + + operator VULKAN_HPP_NAMESPACE::AccelerationStructureKHR() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureKHR; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_accelerationStructureKHR ) + { + getDispatcher()->vkDestroyAccelerationStructureKHR( static_cast( m_device ), + static_cast( m_accelerationStructureKHR ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_accelerationStructureKHR = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_accelerationStructureKHR, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( AccelerationStructureKHR & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_accelerationStructureKHR, rhs.m_accelerationStructureKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR m_accelerationStructureKHR = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkAccelerationStructureNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureNV.html + class AccelerationStructureNV + { + public: + using CType = VkAccelerationStructureNV; + using CppType = VULKAN_HPP_NAMESPACE::AccelerationStructureNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eAccelerationStructureNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eAccelerationStructureNV; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + AccelerationStructureNV( Device const & device, + AccelerationStructureCreateInfoNV const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createAccelerationStructureNV( createInfo, allocator ); + } +# endif + + AccelerationStructureNV( Device const & device, VkAccelerationStructureNV accelerationStructure, Optional allocator = nullptr ) + : m_device( device ) + , m_accelerationStructureNV( accelerationStructure ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + AccelerationStructureNV( std::nullptr_t ) {} + + ~AccelerationStructureNV() + { + clear(); + } + + AccelerationStructureNV() = delete; + AccelerationStructureNV( AccelerationStructureNV const & ) = delete; + + AccelerationStructureNV( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_accelerationStructureNV( exchange( rhs.m_accelerationStructureNV, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + AccelerationStructureNV & operator=( AccelerationStructureNV const & ) = delete; + + AccelerationStructureNV & operator=( AccelerationStructureNV && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_accelerationStructureNV, rhs.m_accelerationStructureNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::AccelerationStructureNV const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV; + } + + VULKAN_HPP_NAMESPACE::AccelerationStructureNV const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_accelerationStructureNV ); + } + + operator VULKAN_HPP_NAMESPACE::AccelerationStructureNV() const VULKAN_HPP_NOEXCEPT + { + return m_accelerationStructureNV; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_accelerationStructureNV ) + { + getDispatcher()->vkDestroyAccelerationStructureNV( static_cast( m_device ), + static_cast( m_accelerationStructureNV ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_accelerationStructureNV = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::AccelerationStructureNV release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_accelerationStructureNV, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( AccelerationStructureNV & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_accelerationStructureNV, rhs.m_accelerationStructureNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_NV_ray_tracing === + + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + VULKAN_HPP_NODISCARD Result getHandle( size_t dataSize, void * pData ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type getHandle( size_t dataSize ) const; + + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type getHandle() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::AccelerationStructureNV m_accelerationStructureNV = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuffer.html + class Buffer + { + public: + using CType = VkBuffer; + using CppType = VULKAN_HPP_NAMESPACE::Buffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eBuffer; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Buffer( Device const & device, BufferCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createBuffer( createInfo, allocator ); + } +# endif + + Buffer( Device const & device, VkBuffer buffer, Optional allocator = nullptr ) + : m_device( device ), m_buffer( buffer ), m_allocator( static_cast( allocator ) ), m_dispatcher( device.getDispatcher() ) + { + } + + Buffer( std::nullptr_t ) {} + + ~Buffer() + { + clear(); + } + + Buffer() = delete; + Buffer( Buffer const & ) = delete; + + Buffer( Buffer && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_buffer( exchange( rhs.m_buffer, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + Buffer & operator=( Buffer const & ) = delete; + + Buffer & operator=( Buffer && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_buffer, rhs.m_buffer ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Buffer const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_buffer; + } + + VULKAN_HPP_NAMESPACE::Buffer const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_buffer ); + } + + operator VULKAN_HPP_NAMESPACE::Buffer() const VULKAN_HPP_NOEXCEPT + { + return m_buffer; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_buffer ) + { + getDispatcher()->vkDestroyBuffer( + static_cast( m_device ), static_cast( m_buffer ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_buffer = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Buffer release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_buffer, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( Buffer & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_buffer, rhs.m_buffer ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkBindBufferMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory.html + typename ResultValueType::type bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, DeviceSize memoryOffset ) const; + + // wrapper function for command vkGetBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements.html + VULKAN_HPP_NODISCARD MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT; + + protected: + Buffer( VULKAN_HPP_NAMESPACE::Device device, + VULKAN_HPP_NAMESPACE::Buffer buffer, + AllocationCallbacks const * allocator, + detail::DeviceDispatcher const * dispatcher ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( device, {} ) ) + , m_buffer( exchange( buffer, {} ) ) + , m_allocator( exchange( allocator, {} ) ) + , m_dispatcher( exchange( dispatcher, nullptr ) ) + { + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Buffer m_buffer = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkBufferCollectionFUCHSIA, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCollectionFUCHSIA.html +# if defined( VK_USE_PLATFORM_FUCHSIA ) + class BufferCollectionFUCHSIA + { + public: + using CType = VkBufferCollectionFUCHSIA; + using CppType = VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBufferCollectionFUCHSIA; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + BufferCollectionFUCHSIA( Device const & device, + BufferCollectionCreateInfoFUCHSIA const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createBufferCollectionFUCHSIA( createInfo, allocator ); + } +# endif + + BufferCollectionFUCHSIA( Device const & device, VkBufferCollectionFUCHSIA collection, Optional allocator = nullptr ) + : m_device( device ) + , m_bufferCollectionFUCHSIA( collection ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + BufferCollectionFUCHSIA( std::nullptr_t ) {} + + ~BufferCollectionFUCHSIA() + { + clear(); + } + + BufferCollectionFUCHSIA() = delete; + BufferCollectionFUCHSIA( BufferCollectionFUCHSIA const & ) = delete; + + BufferCollectionFUCHSIA( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_bufferCollectionFUCHSIA( exchange( rhs.m_bufferCollectionFUCHSIA, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA const & ) = delete; + + BufferCollectionFUCHSIA & operator=( BufferCollectionFUCHSIA && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_bufferCollectionFUCHSIA, rhs.m_bufferCollectionFUCHSIA ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA; + } + + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_bufferCollectionFUCHSIA ); + } + + operator VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA() const VULKAN_HPP_NOEXCEPT + { + return m_bufferCollectionFUCHSIA; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_bufferCollectionFUCHSIA ) + { + getDispatcher()->vkDestroyBufferCollectionFUCHSIA( static_cast( m_device ), + static_cast( m_bufferCollectionFUCHSIA ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_bufferCollectionFUCHSIA = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_bufferCollectionFUCHSIA, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( BufferCollectionFUCHSIA & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_bufferCollectionFUCHSIA, rhs.m_bufferCollectionFUCHSIA ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_FUCHSIA_buffer_collection === + + // wrapper function for command vkSetBufferCollectionImageConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionImageConstraintsFUCHSIA.html + typename ResultValueType::type setImageConstraints( ImageConstraintsInfoFUCHSIA const & imageConstraintsInfo ) const; + + // wrapper function for command vkSetBufferCollectionBufferConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionBufferConstraintsFUCHSIA.html + typename ResultValueType::type setBufferConstraints( BufferConstraintsInfoFUCHSIA const & bufferConstraintsInfo ) const; + + // wrapper function for command vkGetBufferCollectionPropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferCollectionPropertiesFUCHSIA.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getProperties() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA m_bufferCollectionFUCHSIA = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + // wrapper class for handle VkBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferView.html + class BufferView + { + public: + using CType = VkBufferView; + using CppType = VULKAN_HPP_NAMESPACE::BufferView; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eBufferView; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eBufferView; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + BufferView( Device const & device, BufferViewCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createBufferView( createInfo, allocator ); + } +# endif + + BufferView( Device const & device, VkBufferView bufferView, Optional allocator = nullptr ) + : m_device( device ) + , m_bufferView( bufferView ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + BufferView( std::nullptr_t ) {} + + ~BufferView() + { + clear(); + } + + BufferView() = delete; + BufferView( BufferView const & ) = delete; + + BufferView( BufferView && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_bufferView( exchange( rhs.m_bufferView, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + BufferView & operator=( BufferView const & ) = delete; + + BufferView & operator=( BufferView && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_bufferView, rhs.m_bufferView ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::BufferView const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_bufferView; + } + + VULKAN_HPP_NAMESPACE::BufferView const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_bufferView ); + } + + operator VULKAN_HPP_NAMESPACE::BufferView() const VULKAN_HPP_NOEXCEPT + { + return m_bufferView; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_bufferView ) + { + getDispatcher()->vkDestroyBufferView( + static_cast( m_device ), static_cast( m_bufferView ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_bufferView = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::BufferView release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_bufferView, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( BufferView & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_bufferView, rhs.m_bufferView ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::BufferView m_bufferView = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPool.html + class CommandPool + { + public: + using CType = VkCommandPool; + using CppType = VULKAN_HPP_NAMESPACE::CommandPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCommandPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCommandPool; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + CommandPool( Device const & device, CommandPoolCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createCommandPool( createInfo, allocator ); + } +# endif + + CommandPool( Device const & device, VkCommandPool commandPool, Optional allocator = nullptr ) + : m_device( device ) + , m_commandPool( commandPool ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + CommandPool( std::nullptr_t ) {} + + ~CommandPool() + { + clear(); + } + + CommandPool() = delete; + CommandPool( CommandPool const & ) = delete; + + CommandPool( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_commandPool( exchange( rhs.m_commandPool, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + CommandPool & operator=( CommandPool const & ) = delete; + + CommandPool & operator=( CommandPool && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_commandPool, rhs.m_commandPool ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CommandPool const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_commandPool; + } + + VULKAN_HPP_NAMESPACE::CommandPool const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_commandPool ); + } + + operator VULKAN_HPP_NAMESPACE::CommandPool() const VULKAN_HPP_NOEXCEPT + { + return m_commandPool; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_commandPool ) + { + getDispatcher()->vkDestroyCommandPool( + static_cast( m_device ), static_cast( m_commandPool ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_commandPool = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::CommandPool release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_commandPool, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( CommandPool & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_commandPool, rhs.m_commandPool ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkResetCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandPool.html + typename ResultValueType::type reset( CommandPoolResetFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkTrimCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPool.html + void trim( CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_maintenance1 === + + // wrapper function for command vkTrimCommandPoolKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPoolKHR.html + void trimKHR( CommandPoolTrimFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CommandPool m_commandPool = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBuffer.html + class CommandBuffer + { + public: + using CType = VkCommandBuffer; + using CppType = VULKAN_HPP_NAMESPACE::CommandBuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCommandBuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCommandBuffer; + + public: + CommandBuffer( Device const & device, VkCommandBuffer commandBuffer, VkCommandPool commandPool ) + : m_device( device ), m_commandPool( commandPool ), m_commandBuffer( commandBuffer ), m_dispatcher( device.getDispatcher() ) + { + } + + CommandBuffer( std::nullptr_t ) {} + + ~CommandBuffer() + { + clear(); + } + + CommandBuffer() = delete; + CommandBuffer( CommandBuffer const & ) = delete; + + CommandBuffer( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_commandPool( exchange( rhs.m_commandPool, {} ) ) + , m_commandBuffer( exchange( rhs.m_commandBuffer, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + CommandBuffer & operator=( CommandBuffer const & ) = delete; + + CommandBuffer & operator=( CommandBuffer && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_commandPool, rhs.m_commandPool ); + std::swap( m_commandBuffer, rhs.m_commandBuffer ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CommandBuffer const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer; + } + + VULKAN_HPP_NAMESPACE::CommandBuffer const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_commandBuffer ); + } + + operator VULKAN_HPP_NAMESPACE::CommandBuffer() const VULKAN_HPP_NOEXCEPT + { + return m_commandBuffer; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_commandBuffer ) + { + getDispatcher()->vkFreeCommandBuffers( + static_cast( m_device ), static_cast( m_commandPool ), 1, reinterpret_cast( &m_commandBuffer ) ); + } + m_device = nullptr; + m_commandPool = nullptr; + m_commandBuffer = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::CommandBuffer release() + { + m_device = nullptr; + m_commandPool = nullptr; + m_dispatcher = nullptr; + return exchange( m_commandBuffer, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( CommandBuffer & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_commandPool, rhs.m_commandPool ); + std::swap( m_commandBuffer, rhs.m_commandBuffer ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkBeginCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBeginCommandBuffer.html + typename ResultValueType::type begin( CommandBufferBeginInfo const & beginInfo ) const; + + // wrapper function for command vkEndCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEndCommandBuffer.html + typename ResultValueType::type end() const; + + // wrapper function for command vkResetCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandBuffer.html + typename ResultValueType::type reset( CommandBufferResetFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + // wrapper function for command vkCmdCopyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer.html + void copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage.html + void copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, + ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyBufferToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage.html + void copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyImageToBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer.html + void copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, + ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdUpdateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateBuffer.html + void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, void const * pData ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdUpdateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateBuffer.html + template + void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy const & data ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdFillBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillBuffer.html + void fillBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPipelineBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier.html + void pipelineBarrier( PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + DependencyFlags dependencyFlags, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBeginQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQuery.html + void beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + QueryControlFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQuery.html + void endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetQueryPool.html + void resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteTimestamp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp.html + void writeTimestamp( PipelineStageFlagBits pipelineStage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResults.html + void copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + DeviceSize dstOffset, + DeviceSize stride, + QueryResultFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdExecuteCommands, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteCommands.html + void executeCommands( ArrayProxy const & commandBuffers ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipeline.html + void bindPipeline( PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets.html + void bindDescriptorSets( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & descriptorSets, + ArrayProxy const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdClearColorImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearColorImage.html + void clearColorImage( VULKAN_HPP_NAMESPACE::Image image, + ImageLayout imageLayout, + ClearColorValue const & color, + ArrayProxy const & ranges ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatch, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatch.html + void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect.html + void dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent.html + void setEvent( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags stageMask VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent.html + void resetEvent( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags stageMask VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWaitEvents, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents.html + void waitEvents( ArrayProxy const & events, + PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants.html + void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, void const * pValues ) const + VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants.html + template + void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, + ShaderStageFlags stageFlags, + uint32_t offset, + ArrayProxy const & values ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewport, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewport.html + void setViewport( uint32_t firstViewport, ArrayProxy const & viewports ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetScissor, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissor.html + void setScissor( uint32_t firstScissor, ArrayProxy const & scissors ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetLineWidth, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineWidth.html + void setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBias, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias.html + void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetBlendConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetBlendConstants.html + void setBlendConstants( float const blendConstants[4] ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBounds, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBounds.html + void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilCompareMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilCompareMask.html + void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilWriteMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilWriteMask.html + void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilReference, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilReference.html + void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindIndexBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer.html + void bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, IndexType indexType ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindVertexBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers.html + void bindVertexBuffers( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets ) const; + + // wrapper function for command vkCmdDraw, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDraw.html + void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexed, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexed.html + void + drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect.html + void drawIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexedIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect.html + void drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBlitImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage.html + void blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, + ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions, + Filter filter ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdClearDepthStencilImage, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearDepthStencilImage.html + void clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, + ImageLayout imageLayout, + ClearDepthStencilValue const & depthStencil, + ArrayProxy const & ranges ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdClearAttachments, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearAttachments.html + void clearAttachments( ArrayProxy const & attachments, ArrayProxy const & rects ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdResolveImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage.html + void resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, + ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBeginRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass.html + void beginRenderPass( RenderPassBeginInfo const & renderPassBegin, SubpassContents contents ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdNextSubpass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass.html + void nextSubpass( SubpassContents contents ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass.html + void endRenderPass() const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkCmdSetDeviceMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMask.html + void setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchBase, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBase.html + void dispatchBase( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_2 === + + // wrapper function for command vkCmdDrawIndirectCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount.html + void drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexedIndirectCount, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount.html + void drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBeginRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2.html + void beginRenderPass2( RenderPassBeginInfo const & renderPassBegin, SubpassBeginInfo const & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdNextSubpass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2.html + void nextSubpass2( SubpassBeginInfo const & subpassBeginInfo, SubpassEndInfo const & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2.html + void endRenderPass2( SubpassEndInfo const & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_3 === + + // wrapper function for command vkCmdPipelineBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2.html + void pipelineBarrier2( DependencyInfo const & dependencyInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteTimestamp2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2.html + void writeTimestamp2( PipelineStageFlags2 stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2.html + void copyBuffer2( CopyBufferInfo2 const & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2.html + void copyImage2( CopyImageInfo2 const & copyImageInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyBufferToImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2.html + void copyBufferToImage2( CopyBufferToImageInfo2 const & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyImageToBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2.html + void copyImageToBuffer2( CopyImageToBufferInfo2 const & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2.html + void setEvent2( VULKAN_HPP_NAMESPACE::Event event, DependencyInfo const & dependencyInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdResetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2.html + void resetEvent2( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags2 stageMask VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWaitEvents2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2.html + void waitEvents2( ArrayProxy const & events, ArrayProxy const & dependencyInfos ) const; + + // wrapper function for command vkCmdBlitImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2.html + void blitImage2( BlitImageInfo2 const & blitImageInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdResolveImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2.html + void resolveImage2( ResolveImageInfo2 const & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBeginRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRendering.html + void beginRendering( RenderingInfo const & renderingInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering.html + void endRendering() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCullMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullMode.html + void setCullMode( CullModeFlags cullMode VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetFrontFace, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFace.html + void setFrontFace( FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetPrimitiveTopology, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopology.html + void setPrimitiveTopology( PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewportWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCount.html + void setViewportWithCount( ArrayProxy const & viewports ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetScissorWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCount.html + void setScissorWithCount( ArrayProxy const & scissors ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindVertexBuffers2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2.html + void bindVertexBuffers2( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + ArrayProxy const & strides VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + // wrapper function for command vkCmdSetDepthTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnable.html + void setDepthTestEnable( Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthWriteEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnable.html + void setDepthWriteEnable( Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthCompareOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOp.html + void setDepthCompareOp( CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBoundsTestEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnable.html + void setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnable.html + void setStencilTestEnable( Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOp.html + void setStencilOp( StencilFaceFlags faceMask, StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRasterizerDiscardEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnable.html + void setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBiasEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnable.html + void setDepthBiasEnable( Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetPrimitiveRestartEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnable.html + void setPrimitiveRestartEnable( Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_4 === + + // wrapper function for command vkCmdPushDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet.html + void pushDescriptorSet( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate.html + template + void pushDescriptorSetWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + DataType const & data ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindDescriptorSets2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2.html + void bindDescriptorSets2( BindDescriptorSetsInfo const & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushConstants2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2.html + void pushConstants2( PushConstantsInfo const & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushDescriptorSet2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2.html + void pushDescriptorSet2( PushDescriptorSetInfo const & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2.html + void pushDescriptorSetWithTemplate2( PushDescriptorSetWithTemplateInfo const & pushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetLineStipple, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStipple.html + void setLineStipple( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindIndexBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2.html + void bindIndexBuffer2( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, DeviceSize size, IndexType indexType ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRenderingAttachmentLocations, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocations.html + void setRenderingAttachmentLocations( RenderingAttachmentLocationInfo const & locationInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRenderingInputAttachmentIndices, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndices.html + void setRenderingInputAttachmentIndices( RenderingInputAttachmentIndexInfo const & inputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_debug_marker === + + // wrapper function for command vkCmdDebugMarkerBeginEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerBeginEXT.html + void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT const & markerInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDebugMarkerEndEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerEndEXT.html + void debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDebugMarkerInsertEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerInsertEXT.html + void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT const & markerInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_video_queue === + + // wrapper function for command vkCmdBeginVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginVideoCodingKHR.html + void beginVideoCodingKHR( VideoBeginCodingInfoKHR const & beginInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndVideoCodingKHR.html + void endVideoCodingKHR( VideoEndCodingInfoKHR const & endCodingInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdControlVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdControlVideoCodingKHR.html + void controlVideoCodingKHR( VideoCodingControlInfoKHR const & codingControlInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_video_decode_queue === + + // wrapper function for command vkCmdDecodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecodeVideoKHR.html + void decodeVideoKHR( VideoDecodeInfoKHR const & decodeInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_transform_feedback === + + // wrapper function for command vkCmdBindTransformFeedbackBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffersEXT.html + void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + // wrapper function for command vkCmdBeginTransformFeedbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedbackEXT.html + void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + // wrapper function for command vkCmdEndTransformFeedbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedbackEXT.html + void endTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + // wrapper function for command vkCmdBeginQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQueryIndexedEXT.html + void beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, QueryControlFlags flags, uint32_t index ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQueryIndexedEXT.html + void endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, uint32_t index ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndirectByteCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCountEXT.html + void drawIndirectByteCountEXT( uint32_t instanceCount, + uint32_t firstInstance, + VULKAN_HPP_NAMESPACE::Buffer counterBuffer, + DeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NVX_binary_import === + + // wrapper function for command vkCmdCuLaunchKernelNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCuLaunchKernelNVX.html + void cuLaunchKernelNVX( CuLaunchInfoNVX const & launchInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_AMD_draw_indirect_count === + + // wrapper function for command vkCmdDrawIndirectCountAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountAMD.html + void drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexedIndirectCountAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountAMD.html + void drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_dynamic_rendering === + + // wrapper function for command vkCmdBeginRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderingKHR.html + void beginRenderingKHR( RenderingInfo const & renderingInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderingKHR.html + void endRenderingKHR() const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_device_group === + + // wrapper function for command vkCmdSetDeviceMaskKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMaskKHR.html + void setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchBaseKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBaseKHR.html + void dispatchBaseKHR( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) + const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_push_descriptor === + + // wrapper function for command vkCmdPushDescriptorSetKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetKHR.html + void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html + template + void pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + DataType const & data ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_conditional_rendering === + + // wrapper function for command vkCmdBeginConditionalRenderingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRenderingEXT.html + void beginConditionalRenderingEXT( ConditionalRenderingBeginInfoEXT const & conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndConditionalRenderingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndConditionalRenderingEXT.html + void endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_clip_space_w_scaling === + + // wrapper function for command vkCmdSetViewportWScalingNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingNV.html + void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy const & viewportWScalings ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_discard_rectangles === + + // wrapper function for command vkCmdSetDiscardRectangleEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEXT.html + void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy const & discardRectangles ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDiscardRectangleEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEnableEXT.html + void setDiscardRectangleEnableEXT( Bool32 discardRectangleEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDiscardRectangleModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleModeEXT.html + void setDiscardRectangleModeEXT( DiscardRectangleModeEXT discardRectangleMode ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_create_renderpass2 === + + // wrapper function for command vkCmdBeginRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2KHR.html + void beginRenderPass2KHR( RenderPassBeginInfo const & renderPassBegin, SubpassBeginInfo const & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdNextSubpass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2KHR.html + void nextSubpass2KHR( SubpassBeginInfo const & subpassBeginInfo, SubpassEndInfo const & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2KHR.html + void endRenderPass2KHR( SubpassEndInfo const & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_debug_utils === + + // wrapper function for command vkCmdBeginDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginDebugUtilsLabelEXT.html + void beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndDebugUtilsLabelEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndDebugUtilsLabelEXT.html + void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInsertDebugUtilsLabelEXT.html + void insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + + // wrapper function for command vkCmdInitializeGraphScratchMemoryAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInitializeGraphScratchMemoryAMDX.html + void initializeGraphScratchMemoryAMDX( VULKAN_HPP_NAMESPACE::Pipeline executionGraph, + DeviceAddress scratch, + DeviceSize scratchSize ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchGraphAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphAMDX.html + void dispatchGraphAMDX( DeviceAddress scratch, DeviceSize scratchSize, DispatchGraphCountInfoAMDX const & countInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchGraphIndirectAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectAMDX.html + void dispatchGraphIndirectAMDX( DeviceAddress scratch, DeviceSize scratchSize, DispatchGraphCountInfoAMDX const & countInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchGraphIndirectCountAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectCountAMDX.html + void dispatchGraphIndirectCountAMDX( DeviceAddress scratch, DeviceSize scratchSize, DeviceAddress countInfo ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + + // wrapper function for command vkCmdBindSamplerHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindSamplerHeapEXT.html + void bindSamplerHeapEXT( BindHeapInfoEXT const & bindInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindResourceHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindResourceHeapEXT.html + void bindResourceHeapEXT( BindHeapInfoEXT const & bindInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDataEXT.html + void pushDataEXT( PushDataInfoEXT const & pushDataInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_sample_locations === + + // wrapper function for command vkCmdSetSampleLocationsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEXT.html + void setSampleLocationsEXT( SampleLocationsInfoEXT const & sampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_acceleration_structure === + + // wrapper function for command vkCmdBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresKHR.html + void buildAccelerationStructuresKHR( ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos ) const; + + // wrapper function for command vkCmdBuildAccelerationStructuresIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresIndirectKHR.html + void buildAccelerationStructuresIndirectKHR( ArrayProxy const & infos, + ArrayProxy const & indirectDeviceAddresses, + ArrayProxy const & indirectStrides, + ArrayProxy const & pMaxPrimitiveCounts ) const; + + // wrapper function for command vkCmdCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureKHR.html + void copyAccelerationStructureKHR( CopyAccelerationStructureInfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureToMemoryKHR.html + void copyAccelerationStructureToMemoryKHR( CopyAccelerationStructureToMemoryInfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToAccelerationStructureKHR.html + void copyMemoryToAccelerationStructureKHR( CopyMemoryToAccelerationStructureInfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesKHR.html + void writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, + QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_ray_tracing_pipeline === + + // wrapper function for command vkCmdTraceRaysKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysKHR.html + void traceRaysKHR( StridedDeviceAddressRegionKHR const & raygenShaderBindingTable, + StridedDeviceAddressRegionKHR const & missShaderBindingTable, + StridedDeviceAddressRegionKHR const & hitShaderBindingTable, + StridedDeviceAddressRegionKHR const & callableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdTraceRaysIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirectKHR.html + void traceRaysIndirectKHR( StridedDeviceAddressRegionKHR const & raygenShaderBindingTable, + StridedDeviceAddressRegionKHR const & missShaderBindingTable, + StridedDeviceAddressRegionKHR const & hitShaderBindingTable, + StridedDeviceAddressRegionKHR const & callableShaderBindingTable, + DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRayTracingPipelineStackSizeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRayTracingPipelineStackSizeKHR.html + void setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_shading_rate_image === + + // wrapper function for command vkCmdBindShadingRateImageNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadingRateImageNV.html + void bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewportShadingRatePaletteNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportShadingRatePaletteNV.html + void setViewportShadingRatePaletteNV( uint32_t firstViewport, + ArrayProxy const & shadingRatePalettes ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoarseSampleOrderNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoarseSampleOrderNV.html + void setCoarseSampleOrderNV( CoarseSampleOrderTypeNV sampleOrderType, + ArrayProxy const & customSampleOrders ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_ray_tracing === + + // wrapper function for command vkCmdBuildAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructureNV.html + void buildAccelerationStructureNV( AccelerationStructureInfoNV const & info, + VULKAN_HPP_NAMESPACE::Buffer instanceData, + DeviceSize instanceOffset, + Bool32 update, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::Buffer scratch, + DeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureNV.html + void copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + CopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdTraceRaysNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysNV.html + void traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer, + DeviceSize raygenShaderBindingOffset, + VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer, + DeviceSize missShaderBindingOffset, + DeviceSize missShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer, + DeviceSize hitShaderBindingOffset, + DeviceSize hitShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer, + DeviceSize callableShaderBindingOffset, + DeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesNV.html + void writeAccelerationStructuresPropertiesNV( ArrayProxy const & accelerationStructures, + QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_draw_indirect_count === + + // wrapper function for command vkCmdDrawIndirectCountKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountKHR.html + void drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexedIndirectCountKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountKHR.html + void drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_AMD_buffer_marker === + + // wrapper function for command vkCmdWriteBufferMarkerAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarkerAMD.html + void writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + DeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteBufferMarker2AMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarker2AMD.html + void writeBufferMarker2AMD( PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + DeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_mesh_shader === + + // wrapper function for command vkCmdDrawMeshTasksNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksNV.html + void drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMeshTasksIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectNV.html + void drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMeshTasksIndirectCountNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountNV.html + void drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_scissor_exclusive === + + // wrapper function for command vkCmdSetExclusiveScissorEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorEnableNV.html + void setExclusiveScissorEnableNV( uint32_t firstExclusiveScissor, ArrayProxy const & exclusiveScissorEnables ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetExclusiveScissorNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorNV.html + void setExclusiveScissorNV( uint32_t firstExclusiveScissor, ArrayProxy const & exclusiveScissors ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_diagnostic_checkpoints === + + // wrapper function for command vkCmdSetCheckpointNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCheckpointNV.html + template + void setCheckpointNV( CheckpointMarkerType const & checkpointMarker ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_INTEL_performance_query === + + // wrapper function for command vkCmdSetPerformanceMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceMarkerINTEL.html + typename ResultValueType::type setPerformanceMarkerINTEL( PerformanceMarkerInfoINTEL const & markerInfo ) const; + + // wrapper function for command vkCmdSetPerformanceStreamMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceStreamMarkerINTEL.html + typename ResultValueType::type setPerformanceStreamMarkerINTEL( PerformanceStreamMarkerInfoINTEL const & markerInfo ) const; + + // wrapper function for command vkCmdSetPerformanceOverrideINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceOverrideINTEL.html + typename ResultValueType::type setPerformanceOverrideINTEL( PerformanceOverrideInfoINTEL const & overrideInfo ) const; + + //=== VK_KHR_fragment_shading_rate === + + // wrapper function for command vkCmdSetFragmentShadingRateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateKHR.html + void setFragmentShadingRateKHR( Extent2D const & fragmentSize, FragmentShadingRateCombinerOpKHR const combinerOps[2] ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_dynamic_rendering_local_read === + + // wrapper function for command vkCmdSetRenderingAttachmentLocationsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocationsKHR.html + void setRenderingAttachmentLocationsKHR( RenderingAttachmentLocationInfo const & locationInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRenderingInputAttachmentIndicesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndicesKHR.html + void setRenderingInputAttachmentIndicesKHR( RenderingInputAttachmentIndexInfo const & inputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_line_rasterization === + + // wrapper function for command vkCmdSetLineStippleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEXT.html + void setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_extended_dynamic_state === + + // wrapper function for command vkCmdSetCullModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullModeEXT.html + void setCullModeEXT( CullModeFlags cullMode VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetFrontFaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFaceEXT.html + void setFrontFaceEXT( FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetPrimitiveTopologyEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopologyEXT.html + void setPrimitiveTopologyEXT( PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewportWithCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCountEXT.html + void setViewportWithCountEXT( ArrayProxy const & viewports ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetScissorWithCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCountEXT.html + void setScissorWithCountEXT( ArrayProxy const & scissors ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindVertexBuffers2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2EXT.html + void bindVertexBuffers2EXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + ArrayProxy const & strides VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + // wrapper function for command vkCmdSetDepthTestEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnableEXT.html + void setDepthTestEnableEXT( Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthWriteEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnableEXT.html + void setDepthWriteEnableEXT( Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthCompareOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOpEXT.html + void setDepthCompareOpEXT( CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBoundsTestEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnableEXT.html + void setDepthBoundsTestEnableEXT( Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilTestEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnableEXT.html + void setStencilTestEnableEXT( Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetStencilOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOpEXT.html + void + setStencilOpEXT( StencilFaceFlags faceMask, StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_generated_commands === + + // wrapper function for command vkCmdPreprocessGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsNV.html + void preprocessGeneratedCommandsNV( GeneratedCommandsInfoNV const & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdExecuteGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsNV.html + void executeGeneratedCommandsNV( Bool32 isPreprocessed, GeneratedCommandsInfoNV const & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindPipelineShaderGroupNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipelineShaderGroupNV.html + void bindPipelineShaderGroupNV( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_depth_bias_control === + + // wrapper function for command vkCmdSetDepthBias2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias2EXT.html + void setDepthBias2EXT( DepthBiasInfoEXT const & depthBiasInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_video_encode_queue === + + // wrapper function for command vkCmdEncodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEncodeVideoKHR.html + void encodeVideoKHR( VideoEncodeInfoKHR const & encodeInfo ) const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + // wrapper function for command vkCmdCudaLaunchKernelNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCudaLaunchKernelNV.html + void cudaLaunchKernelNV( CudaLaunchInfoNV const & launchInfo ) const VULKAN_HPP_NOEXCEPT; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + + // wrapper function for command vkCmdDispatchTileQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchTileQCOM.html + void dispatchTileQCOM( DispatchTileInfoQCOM const & dispatchTileInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBeginPerTileExecutionQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginPerTileExecutionQCOM.html + void beginPerTileExecutionQCOM( PerTileBeginInfoQCOM const & perTileBeginInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndPerTileExecutionQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndPerTileExecutionQCOM.html + void endPerTileExecutionQCOM( PerTileEndInfoQCOM const & perTileEndInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_synchronization2 === + + // wrapper function for command vkCmdSetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2KHR.html + void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, DependencyInfo const & dependencyInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdResetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2KHR.html + void resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags2 stageMask VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWaitEvents2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2KHR.html + void waitEvents2KHR( ArrayProxy const & events, ArrayProxy const & dependencyInfos ) const; + + // wrapper function for command vkCmdPipelineBarrier2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2KHR.html + void pipelineBarrier2KHR( DependencyInfo const & dependencyInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteTimestamp2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2KHR.html + void writeTimestamp2KHR( PipelineStageFlags2 stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_descriptor_buffer === + + // wrapper function for command vkCmdBindDescriptorBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBuffersEXT.html + void bindDescriptorBuffersEXT( ArrayProxy const & bindingInfos ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDescriptorBufferOffsetsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsetsEXT.html + void setDescriptorBufferOffsetsEXT( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & bufferIndices, + ArrayProxy const & offsets ) const; + + // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplersEXT.html + void bindDescriptorBufferEmbeddedSamplersEXT( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_device_address_commands === + + // wrapper function for command vkCmdBindIndexBuffer3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer3KHR.html + void bindIndexBuffer3KHR( BindIndexBuffer3InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindVertexBuffers3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers3KHR.html + void bindVertexBuffers3KHR( uint32_t firstBinding, ArrayProxy const & bindingInfos ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect2KHR.html + void drawIndirect2KHR( DrawIndirect2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexedIndirect2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect2KHR.html + void drawIndexedIndirect2KHR( DrawIndirect2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDispatchIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect2KHR.html + void dispatchIndirect2KHR( DispatchIndirect2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryKHR.html + void copyMemoryKHR( Optional copyMemoryInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyMemoryToImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageKHR.html + void + copyMemoryToImageKHR( Optional copyMemoryInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyImageToMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToMemoryKHR.html + void + copyImageToMemoryKHR( Optional copyMemoryInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdUpdateMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateMemoryKHR.html + void updateMemoryKHR( DeviceAddressRangeKHR const * pDstRange, + AddressCommandFlagsKHR dstFlags, + DeviceSize dataSize, + void const * pData ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdUpdateMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateMemoryKHR.html + template + void updateMemoryKHR( DeviceAddressRangeKHR const & dstRange, + AddressCommandFlagsKHR dstFlags, + ArrayProxy const & data ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdFillMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillMemoryKHR.html + void fillMemoryKHR( DeviceAddressRangeKHR const & dstRange, AddressCommandFlagsKHR dstFlags, uint32_t data ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyQueryPoolResultsToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResultsToMemoryKHR.html + void copyQueryPoolResultsToMemoryKHR( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + StridedDeviceAddressRangeKHR const & dstRange, + AddressCommandFlagsKHR dstFlags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + QueryResultFlags queryResultFlags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndirectCount2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount2KHR.html + void drawIndirectCount2KHR( DrawIndirectCount2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndexedIndirectCount2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount2KHR.html + void drawIndexedIndirectCount2KHR( DrawIndirectCount2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBeginConditionalRendering2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRendering2EXT.html + void beginConditionalRendering2EXT( ConditionalRenderingBeginInfo2EXT const & conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindTransformFeedbackBuffers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffers2EXT.html + void bindTransformFeedbackBuffers2EXT( uint32_t firstBinding, + ArrayProxy const & bindingInfos + VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBeginTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedback2EXT.html + void beginTransformFeedback2EXT( uint32_t firstCounterRange, + ArrayProxy const & counterInfos + VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedback2EXT.html + void endTransformFeedback2EXT( uint32_t firstCounterRange, + ArrayProxy const & counterInfos + VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawIndirectByteCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCount2EXT.html + void drawIndirectByteCount2EXT( uint32_t instanceCount, + uint32_t firstInstance, + BindTransformFeedbackBuffer2InfoEXT const & counterInfo, + uint32_t counterOffset, + uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMeshTasksIndirect2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirect2EXT.html + void drawMeshTasksIndirect2EXT( DrawIndirect2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMeshTasksIndirectCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCount2EXT.html + void drawMeshTasksIndirectCount2EXT( DrawIndirectCount2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteMarkerToMemoryAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMarkerToMemoryAMD.html + void writeMarkerToMemoryAMD( MemoryMarkerInfoAMD const & info ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_fragment_shading_rate_enums === + + // wrapper function for command vkCmdSetFragmentShadingRateEnumNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateEnumNV.html + void setFragmentShadingRateEnumNV( FragmentShadingRateNV shadingRate, FragmentShadingRateCombinerOpKHR const combinerOps[2] ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_mesh_shader === + + // wrapper function for command vkCmdDrawMeshTasksEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksEXT.html + void drawMeshTasksEXT( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMeshTasksIndirectEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectEXT.html + void drawMeshTasksIndirectEXT( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMeshTasksIndirectCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountEXT.html + void drawMeshTasksIndirectCountEXT( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_copy_commands2 === + + // wrapper function for command vkCmdCopyBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2KHR.html + void copyBuffer2KHR( CopyBufferInfo2 const & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2KHR.html + void copyImage2KHR( CopyImageInfo2 const & copyImageInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyBufferToImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2KHR.html + void copyBufferToImage2KHR( CopyBufferToImageInfo2 const & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyImageToBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2KHR.html + void copyImageToBuffer2KHR( CopyImageToBufferInfo2 const & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBlitImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2KHR.html + void blitImage2KHR( BlitImageInfo2 const & blitImageInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdResolveImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2KHR.html + void resolveImage2KHR( ResolveImageInfo2 const & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_vertex_input_dynamic_state === + + // wrapper function for command vkCmdSetVertexInputEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetVertexInputEXT.html + void setVertexInputEXT( ArrayProxy const & vertexBindingDescriptions, + ArrayProxy const & vertexAttributeDescriptions ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_HUAWEI_subpass_shading === + + // wrapper function for command vkCmdSubpassShadingHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSubpassShadingHUAWEI.html + void subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT; + + //=== VK_HUAWEI_invocation_mask === + + // wrapper function for command vkCmdBindInvocationMaskHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindInvocationMaskHUAWEI.html + void bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView imageView, ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_extended_dynamic_state2 === + + // wrapper function for command vkCmdSetPatchControlPointsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPatchControlPointsEXT.html + void setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRasterizerDiscardEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnableEXT.html + void setRasterizerDiscardEnableEXT( Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthBiasEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnableEXT.html + void setDepthBiasEnableEXT( Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetLogicOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEXT.html + void setLogicOpEXT( LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetPrimitiveRestartEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnableEXT.html + void setPrimitiveRestartEnableEXT( Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_color_write_enable === + + // wrapper function for command vkCmdSetColorWriteEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteEnableEXT.html + void setColorWriteEnableEXT( ArrayProxy const & colorWriteEnables ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_ray_tracing_maintenance1 === + + // wrapper function for command vkCmdTraceRaysIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirect2KHR.html + void traceRaysIndirect2KHR( DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_multi_draw === + + // wrapper function for command vkCmdDrawMultiEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiEXT.html + void + drawMultiEXT( StridedArrayProxy const & vertexInfo, uint32_t instanceCount, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawMultiIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiIndexedEXT.html + void drawMultiIndexedEXT( StridedArrayProxy const & indexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + Optional vertexOffset VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_opacity_micromap === + + // wrapper function for command vkCmdBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildMicromapsEXT.html + void buildMicromapsEXT( ArrayProxy const & infos ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapEXT.html + void copyMicromapEXT( CopyMicromapInfoEXT const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyMicromapToMemoryEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapToMemoryEXT.html + void copyMicromapToMemoryEXT( CopyMicromapToMemoryInfoEXT const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyMemoryToMicromapEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToMicromapEXT.html + void copyMemoryToMicromapEXT( CopyMemoryToMicromapInfoEXT const & info ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMicromapsPropertiesEXT.html + void writeMicromapsPropertiesEXT( ArrayProxy const & micromaps, + QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_HUAWEI_cluster_culling_shader === + + // wrapper function for command vkCmdDrawClusterHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterHUAWEI.html + void drawClusterHUAWEI( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDrawClusterIndirectHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterIndirectHUAWEI.html + void drawClusterIndirectHUAWEI( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_copy_memory_indirect === + + // wrapper function for command vkCmdCopyMemoryIndirectNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectNV.html + void copyMemoryIndirectNV( DeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyMemoryToImageIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectNV.html + void copyMemoryToImageIndirectNV( DeviceAddress copyBufferAddress, + uint32_t stride, + VULKAN_HPP_NAMESPACE::Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & imageSubresources ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_memory_decompression === + + // wrapper function for command vkCmdDecompressMemoryNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryNV.html + void decompressMemoryNV( ArrayProxy const & decompressMemoryRegions ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDecompressMemoryIndirectCountNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountNV.html + void decompressMemoryIndirectCountNV( DeviceAddress indirectCommandsAddress, + DeviceAddress indirectCommandsCountAddress, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_generated_commands_compute === + + // wrapper function for command vkCmdUpdatePipelineIndirectBufferNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdatePipelineIndirectBufferNV.html + void updatePipelineIndirectBufferNV( PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_extended_dynamic_state3 === + + // wrapper function for command vkCmdSetDepthClampEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampEnableEXT.html + void setDepthClampEnableEXT( Bool32 depthClampEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetPolygonModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPolygonModeEXT.html + void setPolygonModeEXT( PolygonMode polygonMode ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRasterizationSamplesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationSamplesEXT.html + void setRasterizationSamplesEXT( SampleCountFlagBits rasterizationSamples ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetSampleMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleMaskEXT.html + void setSampleMaskEXT( SampleCountFlagBits samples, ArrayProxy const & sampleMask VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const; + + // wrapper function for command vkCmdSetAlphaToCoverageEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToCoverageEnableEXT.html + void setAlphaToCoverageEnableEXT( Bool32 alphaToCoverageEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetAlphaToOneEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToOneEnableEXT.html + void setAlphaToOneEnableEXT( Bool32 alphaToOneEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetLogicOpEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEnableEXT.html + void setLogicOpEnableEXT( Bool32 logicOpEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetColorBlendEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEnableEXT.html + void setColorBlendEnableEXT( uint32_t firstAttachment, ArrayProxy const & colorBlendEnables ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetColorBlendEquationEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEquationEXT.html + void setColorBlendEquationEXT( uint32_t firstAttachment, ArrayProxy const & colorBlendEquations ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetColorWriteMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteMaskEXT.html + void setColorWriteMaskEXT( uint32_t firstAttachment, ArrayProxy const & colorWriteMasks ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetTessellationDomainOriginEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetTessellationDomainOriginEXT.html + void setTessellationDomainOriginEXT( TessellationDomainOrigin domainOrigin ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRasterizationStreamEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationStreamEXT.html + void setRasterizationStreamEXT( uint32_t rasterizationStream ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetConservativeRasterizationModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetConservativeRasterizationModeEXT.html + void setConservativeRasterizationModeEXT( ConservativeRasterizationModeEXT conservativeRasterizationMode ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetExtraPrimitiveOverestimationSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExtraPrimitiveOverestimationSizeEXT.html + void setExtraPrimitiveOverestimationSizeEXT( float extraPrimitiveOverestimationSize ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthClipEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipEnableEXT.html + void setDepthClipEnableEXT( Bool32 depthClipEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetSampleLocationsEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEnableEXT.html + void setSampleLocationsEnableEXT( Bool32 sampleLocationsEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetColorBlendAdvancedEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendAdvancedEXT.html + void setColorBlendAdvancedEXT( uint32_t firstAttachment, ArrayProxy const & colorBlendAdvanced ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetProvokingVertexModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetProvokingVertexModeEXT.html + void setProvokingVertexModeEXT( ProvokingVertexModeEXT provokingVertexMode ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetLineRasterizationModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineRasterizationModeEXT.html + void setLineRasterizationModeEXT( LineRasterizationModeEXT lineRasterizationMode ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetLineStippleEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEnableEXT.html + void setLineStippleEnableEXT( Bool32 stippledLineEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDepthClipNegativeOneToOneEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipNegativeOneToOneEXT.html + void setDepthClipNegativeOneToOneEXT( Bool32 negativeOneToOne ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewportWScalingEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingEnableNV.html + void setViewportWScalingEnableNV( Bool32 viewportWScalingEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetViewportSwizzleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportSwizzleNV.html + void setViewportSwizzleNV( uint32_t firstViewport, ArrayProxy const & viewportSwizzles ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageToColorEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorEnableNV.html + void setCoverageToColorEnableNV( Bool32 coverageToColorEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageToColorLocationNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorLocationNV.html + void setCoverageToColorLocationNV( uint32_t coverageToColorLocation ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageModulationModeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationModeNV.html + void setCoverageModulationModeNV( CoverageModulationModeNV coverageModulationMode ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageModulationTableEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableEnableNV.html + void setCoverageModulationTableEnableNV( Bool32 coverageModulationTableEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageModulationTableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableNV.html + void setCoverageModulationTableNV( ArrayProxy const & coverageModulationTable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetShadingRateImageEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetShadingRateImageEnableNV.html + void setShadingRateImageEnableNV( Bool32 shadingRateImageEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetRepresentativeFragmentTestEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRepresentativeFragmentTestEnableNV.html + void setRepresentativeFragmentTestEnableNV( Bool32 representativeFragmentTestEnable ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetCoverageReductionModeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageReductionModeNV.html + void setCoverageReductionModeNV( CoverageReductionModeNV coverageReductionMode ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_ARM_tensors === + + // wrapper function for command vkCmdCopyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyTensorARM.html + void copyTensorARM( CopyTensorInfoARM const & copyTensorInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_optical_flow === + + // wrapper function for command vkCmdOpticalFlowExecuteNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdOpticalFlowExecuteNV.html + void opticalFlowExecuteNV( VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV session, OpticalFlowExecuteInfoNV const & executeInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_maintenance5 === + + // wrapper function for command vkCmdBindIndexBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2KHR.html + void bindIndexBuffer2KHR( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, DeviceSize size, IndexType indexType ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_shader_object === + + // wrapper function for command vkCmdBindShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadersEXT.html + void bindShadersEXT( ArrayProxy const & stages, ArrayProxy const & shaders ) const; + + // wrapper function for command vkCmdSetDepthClampRangeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampRangeEXT.html + void setDepthClampRangeEXT( DepthClampModeEXT depthClampMode, + Optional depthClampRange VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_cooperative_vector === + + // wrapper function for command vkCmdConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdConvertCooperativeVectorMatrixNV.html + void convertCooperativeVectorMatrixNV( ArrayProxy const & infos ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_ARM_data_graph === + + // wrapper function for command vkCmdDispatchDataGraphARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchDataGraphARM.html + void dispatchDataGraphARM( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM session, + Optional info VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + + // wrapper function for command vkCmdSetAttachmentFeedbackLoopEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAttachmentFeedbackLoopEnableEXT.html + void setAttachmentFeedbackLoopEnableEXT( ImageAspectFlags aspectMask VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_line_rasterization === + + // wrapper function for command vkCmdSetLineStippleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleKHR.html + void setLineStippleKHR( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_maintenance6 === + + // wrapper function for command vkCmdBindDescriptorSets2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2KHR.html + void bindDescriptorSets2KHR( BindDescriptorSetsInfo const & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushConstants2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2KHR.html + void pushConstants2KHR( PushConstantsInfo const & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushDescriptorSet2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2KHR.html + void pushDescriptorSet2KHR( PushDescriptorSetInfo const & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2KHR.html + void pushDescriptorSetWithTemplate2KHR( PushDescriptorSetWithTemplateInfo const & pushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdSetDescriptorBufferOffsets2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsets2EXT.html + void setDescriptorBufferOffsets2EXT( SetDescriptorBufferOffsetsInfoEXT const & setDescriptorBufferOffsetsInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplers2EXT.html + void bindDescriptorBufferEmbeddedSamplers2EXT( BindDescriptorBufferEmbeddedSamplersInfoEXT const & bindDescriptorBufferEmbeddedSamplersInfo ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_QCOM_tile_memory_heap === + + // wrapper function for command vkCmdBindTileMemoryQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTileMemoryQCOM.html + void bindTileMemoryQCOM( Optional tileMemoryBindInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_copy_memory_indirect === + + // wrapper function for command vkCmdCopyMemoryIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectKHR.html + void copyMemoryIndirectKHR( CopyMemoryIndirectInfoKHR const & copyMemoryIndirectInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdCopyMemoryToImageIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectKHR.html + void copyMemoryToImageIndirectKHR( CopyMemoryToImageIndirectInfoKHR const & copyMemoryToImageIndirectInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_memory_decompression === + + // wrapper function for command vkCmdDecompressMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryEXT.html + void decompressMemoryEXT( DecompressMemoryInfoEXT const & decompressMemoryInfoEXT ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdDecompressMemoryIndirectCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountEXT.html + void decompressMemoryIndirectCountEXT( MemoryDecompressionMethodFlagsEXT decompressionMethod, + DeviceAddress indirectCommandsAddress, + DeviceAddress indirectCommandsCountAddress, + uint32_t maxDecompressionCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_cluster_acceleration_structure === + + // wrapper function for command vkCmdBuildClusterAccelerationStructureIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildClusterAccelerationStructureIndirectNV.html + void buildClusterAccelerationStructureIndirectNV( ClusterAccelerationStructureCommandsInfoNV const & commandInfos ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_partitioned_acceleration_structure === + + // wrapper function for command vkCmdBuildPartitionedAccelerationStructuresNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildPartitionedAccelerationStructuresNV.html + void buildPartitionedAccelerationStructuresNV( BuildPartitionedAccelerationStructureInfoNV const & buildInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_device_generated_commands === + + // wrapper function for command vkCmdPreprocessGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsEXT.html + void preprocessGeneratedCommandsEXT( GeneratedCommandsInfoEXT const & generatedCommandsInfo, + VULKAN_HPP_NAMESPACE::CommandBuffer stateCommandBuffer ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdExecuteGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsEXT.html + void executeGeneratedCommandsEXT( Bool32 isPreprocessed, GeneratedCommandsInfoEXT const & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_ARM_shader_instrumentation === + + // wrapper function for command vkCmdBeginShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginShaderInstrumentationARM.html + void beginShaderInstrumentationARM( VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM instrumentation ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkCmdEndShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndShaderInstrumentationARM.html + void endShaderInstrumentationARM() const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_fragment_density_map_offset === + + // wrapper function for command vkCmdEndRendering2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2EXT.html + void endRendering2EXT( Optional renderingEndInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_custom_resolve === + + // wrapper function for command vkCmdBeginCustomResolveEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginCustomResolveEXT.html + void beginCustomResolveEXT( Optional beginCustomResolveInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const + VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_maintenance10 === + + // wrapper function for command vkCmdEndRendering2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2KHR.html + void endRendering2KHR( Optional renderingEndInfo VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ) ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_compute_occupancy_priority === + + // wrapper function for command vkCmdSetComputeOccupancyPriorityNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetComputeOccupancyPriorityNV.html + void setComputeOccupancyPriorityNV( ComputeOccupancyPriorityParametersNV const & parameters ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CommandPool m_commandPool = {}; + VULKAN_HPP_NAMESPACE::CommandBuffer m_commandBuffer = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class CommandBuffers : public std::vector + { + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + CommandBuffers( Device const & device, CommandBufferAllocateInfo const & allocateInfo ) + { + *this = device.allocateCommandBuffers( allocateInfo ); + } +# endif + + CommandBuffers( std::nullptr_t ) {} + + CommandBuffers() = delete; + CommandBuffers( CommandBuffers const & ) = delete; + CommandBuffers( CommandBuffers && rhs ) = default; + CommandBuffers & operator=( CommandBuffers const & ) = delete; + CommandBuffers & operator=( CommandBuffers && rhs ) = default; + + CommandBuffers( std::vector && rhs ) + { + std::swap( *this, rhs ); + } + }; + + // wrapper class for handle VkCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuFunctionNVX.html + class CuFunctionNVX + { + public: + using CType = VkCuFunctionNVX; + using CppType = VULKAN_HPP_NAMESPACE::CuFunctionNVX; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCuFunctionNVX; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCuFunctionNVX; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + CuFunctionNVX( Device const & device, CuFunctionCreateInfoNVX const & createInfo, Optional allocator = nullptr ) + { + *this = device.createCuFunctionNVX( createInfo, allocator ); + } +# endif + + CuFunctionNVX( Device const & device, VkCuFunctionNVX function, Optional allocator = nullptr ) + : m_device( device ) + , m_cuFunctionNVX( function ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + CuFunctionNVX( std::nullptr_t ) {} + + ~CuFunctionNVX() + { + clear(); + } + + CuFunctionNVX() = delete; + CuFunctionNVX( CuFunctionNVX const & ) = delete; + + CuFunctionNVX( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_cuFunctionNVX( exchange( rhs.m_cuFunctionNVX, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + CuFunctionNVX & operator=( CuFunctionNVX const & ) = delete; + + CuFunctionNVX & operator=( CuFunctionNVX && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_cuFunctionNVX, rhs.m_cuFunctionNVX ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CuFunctionNVX const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX; + } + + VULKAN_HPP_NAMESPACE::CuFunctionNVX const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_cuFunctionNVX ); + } + + operator VULKAN_HPP_NAMESPACE::CuFunctionNVX() const VULKAN_HPP_NOEXCEPT + { + return m_cuFunctionNVX; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_cuFunctionNVX ) + { + getDispatcher()->vkDestroyCuFunctionNVX( static_cast( m_device ), + static_cast( m_cuFunctionNVX ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_cuFunctionNVX = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::CuFunctionNVX release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_cuFunctionNVX, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( CuFunctionNVX & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_cuFunctionNVX, rhs.m_cuFunctionNVX ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CuFunctionNVX m_cuFunctionNVX = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuModuleNVX.html + class CuModuleNVX + { + public: + using CType = VkCuModuleNVX; + using CppType = VULKAN_HPP_NAMESPACE::CuModuleNVX; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCuModuleNVX; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCuModuleNVX; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + CuModuleNVX( Device const & device, CuModuleCreateInfoNVX const & createInfo, Optional allocator = nullptr ) + { + *this = device.createCuModuleNVX( createInfo, allocator ); + } +# endif + + CuModuleNVX( Device const & device, VkCuModuleNVX module, Optional allocator = nullptr ) + : m_device( device ) + , m_cuModuleNVX( module ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + CuModuleNVX( std::nullptr_t ) {} + + ~CuModuleNVX() + { + clear(); + } + + CuModuleNVX() = delete; + CuModuleNVX( CuModuleNVX const & ) = delete; + + CuModuleNVX( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_cuModuleNVX( exchange( rhs.m_cuModuleNVX, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + CuModuleNVX & operator=( CuModuleNVX const & ) = delete; + + CuModuleNVX & operator=( CuModuleNVX && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_cuModuleNVX, rhs.m_cuModuleNVX ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CuModuleNVX const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX; + } + + VULKAN_HPP_NAMESPACE::CuModuleNVX const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_cuModuleNVX ); + } + + operator VULKAN_HPP_NAMESPACE::CuModuleNVX() const VULKAN_HPP_NOEXCEPT + { + return m_cuModuleNVX; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_cuModuleNVX ) + { + getDispatcher()->vkDestroyCuModuleNVX( + static_cast( m_device ), static_cast( m_cuModuleNVX ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_cuModuleNVX = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::CuModuleNVX release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_cuModuleNVX, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( CuModuleNVX & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_cuModuleNVX, rhs.m_cuModuleNVX ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CuModuleNVX m_cuModuleNVX = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaFunctionNV.html +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + class CudaFunctionNV + { + public: + using CType = VkCudaFunctionNV; + using CppType = VULKAN_HPP_NAMESPACE::CudaFunctionNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCudaFunctionNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCudaFunctionNV; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + CudaFunctionNV( Device const & device, CudaFunctionCreateInfoNV const & createInfo, Optional allocator = nullptr ) + { + *this = device.createCudaFunctionNV( createInfo, allocator ); + } +# endif + + CudaFunctionNV( Device const & device, VkCudaFunctionNV function, Optional allocator = nullptr ) + : m_device( device ) + , m_cudaFunctionNV( function ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + CudaFunctionNV( std::nullptr_t ) {} + + ~CudaFunctionNV() + { + clear(); + } + + CudaFunctionNV() = delete; + CudaFunctionNV( CudaFunctionNV const & ) = delete; + + CudaFunctionNV( CudaFunctionNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_cudaFunctionNV( exchange( rhs.m_cudaFunctionNV, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + CudaFunctionNV & operator=( CudaFunctionNV const & ) = delete; + + CudaFunctionNV & operator=( CudaFunctionNV && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_cudaFunctionNV, rhs.m_cudaFunctionNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CudaFunctionNV const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV; + } + + VULKAN_HPP_NAMESPACE::CudaFunctionNV const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_cudaFunctionNV ); + } + + operator VULKAN_HPP_NAMESPACE::CudaFunctionNV() const VULKAN_HPP_NOEXCEPT + { + return m_cudaFunctionNV; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_cudaFunctionNV ) + { + getDispatcher()->vkDestroyCudaFunctionNV( static_cast( m_device ), + static_cast( m_cudaFunctionNV ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_cudaFunctionNV = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::CudaFunctionNV release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_cudaFunctionNV, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( CudaFunctionNV & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_cudaFunctionNV, rhs.m_cudaFunctionNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CudaFunctionNV m_cudaFunctionNV = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper class for handle VkCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaModuleNV.html +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + class CudaModuleNV + { + public: + using CType = VkCudaModuleNV; + using CppType = VULKAN_HPP_NAMESPACE::CudaModuleNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eCudaModuleNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eCudaModuleNV; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + CudaModuleNV( Device const & device, CudaModuleCreateInfoNV const & createInfo, Optional allocator = nullptr ) + { + *this = device.createCudaModuleNV( createInfo, allocator ); + } +# endif + + CudaModuleNV( Device const & device, VkCudaModuleNV module, Optional allocator = nullptr ) + : m_device( device ) + , m_cudaModuleNV( module ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + CudaModuleNV( std::nullptr_t ) {} + + ~CudaModuleNV() + { + clear(); + } + + CudaModuleNV() = delete; + CudaModuleNV( CudaModuleNV const & ) = delete; + + CudaModuleNV( CudaModuleNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_cudaModuleNV( exchange( rhs.m_cudaModuleNV, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + CudaModuleNV & operator=( CudaModuleNV const & ) = delete; + + CudaModuleNV & operator=( CudaModuleNV && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_cudaModuleNV, rhs.m_cudaModuleNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::CudaModuleNV const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV; + } + + VULKAN_HPP_NAMESPACE::CudaModuleNV const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_cudaModuleNV ); + } + + operator VULKAN_HPP_NAMESPACE::CudaModuleNV() const VULKAN_HPP_NOEXCEPT + { + return m_cudaModuleNV; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_cudaModuleNV ) + { + getDispatcher()->vkDestroyCudaModuleNV( + static_cast( m_device ), static_cast( m_cudaModuleNV ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_cudaModuleNV = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::CudaModuleNV release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_cudaModuleNV, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( CudaModuleNV & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_cudaModuleNV, rhs.m_cudaModuleNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_NV_cuda_kernel_launch === + + // wrapper function for command vkGetCudaModuleCacheNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCudaModuleCacheNV.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getCache() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::CudaModuleNV m_cudaModuleNV = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper class for handle VkDataGraphPipelineSessionARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionARM.html + class DataGraphPipelineSessionARM + { + public: + using CType = VkDataGraphPipelineSessionARM; + using CppType = VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDataGraphPipelineSessionARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DataGraphPipelineSessionARM( Device const & device, + DataGraphPipelineSessionCreateInfoARM const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createDataGraphPipelineSessionARM( createInfo, allocator ); + } +# endif + + DataGraphPipelineSessionARM( Device const & device, VkDataGraphPipelineSessionARM session, Optional allocator = nullptr ) + : m_device( device ) + , m_dataGraphPipelineSessionARM( session ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + DataGraphPipelineSessionARM( std::nullptr_t ) {} + + ~DataGraphPipelineSessionARM() + { + clear(); + } + + DataGraphPipelineSessionARM() = delete; + DataGraphPipelineSessionARM( DataGraphPipelineSessionARM const & ) = delete; + + DataGraphPipelineSessionARM( DataGraphPipelineSessionARM && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_dataGraphPipelineSessionARM( exchange( rhs.m_dataGraphPipelineSessionARM, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DataGraphPipelineSessionARM & operator=( DataGraphPipelineSessionARM const & ) = delete; + + DataGraphPipelineSessionARM & operator=( DataGraphPipelineSessionARM && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_dataGraphPipelineSessionARM, rhs.m_dataGraphPipelineSessionARM ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_dataGraphPipelineSessionARM; + } + + VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_dataGraphPipelineSessionARM ); + } + + operator VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM() const VULKAN_HPP_NOEXCEPT + { + return m_dataGraphPipelineSessionARM; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_dataGraphPipelineSessionARM ) + { + getDispatcher()->vkDestroyDataGraphPipelineSessionARM( static_cast( m_device ), + static_cast( m_dataGraphPipelineSessionARM ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_dataGraphPipelineSessionARM = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_dataGraphPipelineSessionARM, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DataGraphPipelineSessionARM & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_dataGraphPipelineSessionARM, rhs.m_dataGraphPipelineSessionARM ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM m_dataGraphPipelineSessionARM = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDebugReportCallbackEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugReportCallbackEXT.html + class DebugReportCallbackEXT + { + public: + using CType = VkDebugReportCallbackEXT; + using CppType = VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDebugReportCallbackEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDebugReportCallbackEXT; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DebugReportCallbackEXT( Instance const & instance, + DebugReportCallbackCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) + { + *this = instance.createDebugReportCallbackEXT( createInfo, allocator ); + } +# endif + + DebugReportCallbackEXT( Instance const & instance, VkDebugReportCallbackEXT callback, Optional allocator = nullptr ) + : m_instance( instance ) + , m_debugReportCallbackEXT( callback ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + } + + DebugReportCallbackEXT( std::nullptr_t ) {} + + ~DebugReportCallbackEXT() + { + clear(); + } + + DebugReportCallbackEXT() = delete; + DebugReportCallbackEXT( DebugReportCallbackEXT const & ) = delete; + + DebugReportCallbackEXT( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_instance( exchange( rhs.m_instance, {} ) ) + , m_debugReportCallbackEXT( exchange( rhs.m_debugReportCallbackEXT, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DebugReportCallbackEXT & operator=( DebugReportCallbackEXT const & ) = delete; + + DebugReportCallbackEXT & operator=( DebugReportCallbackEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_instance, rhs.m_instance ); + std::swap( m_debugReportCallbackEXT, rhs.m_debugReportCallbackEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT; + } + + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_debugReportCallbackEXT ); + } + + operator VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT() const VULKAN_HPP_NOEXCEPT + { + return m_debugReportCallbackEXT; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_debugReportCallbackEXT ) + { + getDispatcher()->vkDestroyDebugReportCallbackEXT( static_cast( m_instance ), + static_cast( m_debugReportCallbackEXT ), + reinterpret_cast( m_allocator ) ); + } + m_instance = nullptr; + m_debugReportCallbackEXT = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT release() + { + m_instance = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_debugReportCallbackEXT, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Instance getInstance() const + { + return m_instance; + } + + detail::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DebugReportCallbackEXT & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_instance, rhs.m_instance ); + std::swap( m_debugReportCallbackEXT, rhs.m_debugReportCallbackEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Instance m_instance = {}; + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT m_debugReportCallbackEXT = {}; + AllocationCallbacks const * m_allocator = {}; + detail::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDebugUtilsMessengerEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessengerEXT.html + class DebugUtilsMessengerEXT + { + public: + using CType = VkDebugUtilsMessengerEXT; + using CppType = VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDebugUtilsMessengerEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DebugUtilsMessengerEXT( Instance const & instance, + DebugUtilsMessengerCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) + { + *this = instance.createDebugUtilsMessengerEXT( createInfo, allocator ); + } +# endif + + DebugUtilsMessengerEXT( Instance const & instance, VkDebugUtilsMessengerEXT messenger, Optional allocator = nullptr ) + : m_instance( instance ) + , m_debugUtilsMessengerEXT( messenger ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + } + + DebugUtilsMessengerEXT( std::nullptr_t ) {} + + ~DebugUtilsMessengerEXT() + { + clear(); + } + + DebugUtilsMessengerEXT() = delete; + DebugUtilsMessengerEXT( DebugUtilsMessengerEXT const & ) = delete; + + DebugUtilsMessengerEXT( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_instance( exchange( rhs.m_instance, {} ) ) + , m_debugUtilsMessengerEXT( exchange( rhs.m_debugUtilsMessengerEXT, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT const & ) = delete; + + DebugUtilsMessengerEXT & operator=( DebugUtilsMessengerEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_instance, rhs.m_instance ); + std::swap( m_debugUtilsMessengerEXT, rhs.m_debugUtilsMessengerEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT; + } + + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_debugUtilsMessengerEXT ); + } + + operator VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT() const VULKAN_HPP_NOEXCEPT + { + return m_debugUtilsMessengerEXT; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_debugUtilsMessengerEXT ) + { + getDispatcher()->vkDestroyDebugUtilsMessengerEXT( static_cast( m_instance ), + static_cast( m_debugUtilsMessengerEXT ), + reinterpret_cast( m_allocator ) ); + } + m_instance = nullptr; + m_debugUtilsMessengerEXT = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT release() + { + m_instance = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_debugUtilsMessengerEXT, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Instance getInstance() const + { + return m_instance; + } + + detail::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DebugUtilsMessengerEXT & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_instance, rhs.m_instance ); + std::swap( m_debugUtilsMessengerEXT, rhs.m_debugUtilsMessengerEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Instance m_instance = {}; + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT m_debugUtilsMessengerEXT = {}; + AllocationCallbacks const * m_allocator = {}; + detail::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDeferredOperationKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeferredOperationKHR.html + class DeferredOperationKHR + { + public: + using CType = VkDeferredOperationKHR; + using CppType = VULKAN_HPP_NAMESPACE::DeferredOperationKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDeferredOperationKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DeferredOperationKHR( Device const & device, Optional allocator = nullptr ) + { + *this = device.createDeferredOperationKHR( allocator ); + } +# endif + + DeferredOperationKHR( Device const & device, VkDeferredOperationKHR operation, Optional allocator = nullptr ) + : m_device( device ) + , m_deferredOperationKHR( operation ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + DeferredOperationKHR( std::nullptr_t ) {} + + ~DeferredOperationKHR() + { + clear(); + } + + DeferredOperationKHR() = delete; + DeferredOperationKHR( DeferredOperationKHR const & ) = delete; + + DeferredOperationKHR( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_deferredOperationKHR( exchange( rhs.m_deferredOperationKHR, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DeferredOperationKHR & operator=( DeferredOperationKHR const & ) = delete; + + DeferredOperationKHR & operator=( DeferredOperationKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_deferredOperationKHR, rhs.m_deferredOperationKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DeferredOperationKHR const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR; + } + + VULKAN_HPP_NAMESPACE::DeferredOperationKHR const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_deferredOperationKHR ); + } + + operator VULKAN_HPP_NAMESPACE::DeferredOperationKHR() const VULKAN_HPP_NOEXCEPT + { + return m_deferredOperationKHR; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_deferredOperationKHR ) + { + getDispatcher()->vkDestroyDeferredOperationKHR( static_cast( m_device ), + static_cast( m_deferredOperationKHR ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_deferredOperationKHR = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DeferredOperationKHR release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_deferredOperationKHR, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DeferredOperationKHR & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_deferredOperationKHR, rhs.m_deferredOperationKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_KHR_deferred_host_operations === + + // wrapper function for command vkGetDeferredOperationMaxConcurrencyKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationMaxConcurrencyKHR.html + VULKAN_HPP_NODISCARD uint32_t getMaxConcurrency() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeferredOperationResultKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationResultKHR.html + VULKAN_HPP_NODISCARD Result getResult() const; + + // wrapper function for command vkDeferredOperationJoinKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeferredOperationJoinKHR.html + VULKAN_HPP_NODISCARD Result join() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DeferredOperationKHR m_deferredOperationKHR = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPool.html + class DescriptorPool + { + public: + using CType = VkDescriptorPool; + using CppType = VULKAN_HPP_NAMESPACE::DescriptorPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorPool; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DescriptorPool( Device const & device, DescriptorPoolCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createDescriptorPool( createInfo, allocator ); + } +# endif + + DescriptorPool( Device const & device, VkDescriptorPool descriptorPool, Optional allocator = nullptr ) + : m_device( device ) + , m_descriptorPool( descriptorPool ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + DescriptorPool( std::nullptr_t ) {} + + ~DescriptorPool() + { + clear(); + } + + DescriptorPool() = delete; + DescriptorPool( DescriptorPool const & ) = delete; + + DescriptorPool( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_descriptorPool( exchange( rhs.m_descriptorPool, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DescriptorPool & operator=( DescriptorPool const & ) = delete; + + DescriptorPool & operator=( DescriptorPool && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_descriptorPool, rhs.m_descriptorPool ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DescriptorPool const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool; + } + + VULKAN_HPP_NAMESPACE::DescriptorPool const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_descriptorPool ); + } + + operator VULKAN_HPP_NAMESPACE::DescriptorPool() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorPool; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_descriptorPool ) + { + getDispatcher()->vkDestroyDescriptorPool( static_cast( m_device ), + static_cast( m_descriptorPool ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_descriptorPool = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DescriptorPool release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_descriptorPool, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DescriptorPool & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_descriptorPool, rhs.m_descriptorPool ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkResetDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetDescriptorPool.html + typename ResultValueType::type reset( DescriptorPoolResetFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DescriptorPool m_descriptorPool = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSet.html + class DescriptorSet + { + public: + using CType = VkDescriptorSet; + using CppType = VULKAN_HPP_NAMESPACE::DescriptorSet; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorSet; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorSet; + + public: + DescriptorSet( Device const & device, VkDescriptorSet descriptorSet, VkDescriptorPool descriptorPool ) + : m_device( device ), m_descriptorPool( descriptorPool ), m_descriptorSet( descriptorSet ), m_dispatcher( device.getDispatcher() ) + { + } + + DescriptorSet( std::nullptr_t ) {} + + ~DescriptorSet() + { + clear(); + } + + DescriptorSet() = delete; + DescriptorSet( DescriptorSet const & ) = delete; + + DescriptorSet( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_descriptorPool( exchange( rhs.m_descriptorPool, {} ) ) + , m_descriptorSet( exchange( rhs.m_descriptorSet, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DescriptorSet & operator=( DescriptorSet const & ) = delete; + + DescriptorSet & operator=( DescriptorSet && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_descriptorPool, rhs.m_descriptorPool ); + std::swap( m_descriptorSet, rhs.m_descriptorSet ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DescriptorSet const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet; + } + + VULKAN_HPP_NAMESPACE::DescriptorSet const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_descriptorSet ); + } + + operator VULKAN_HPP_NAMESPACE::DescriptorSet() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSet; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_descriptorSet ) + { + getDispatcher()->vkFreeDescriptorSets( static_cast( m_device ), + static_cast( m_descriptorPool ), + 1, + reinterpret_cast( &m_descriptorSet ) ); + } + m_device = nullptr; + m_descriptorPool = nullptr; + m_descriptorSet = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DescriptorSet release() + { + m_device = nullptr; + m_descriptorPool = nullptr; + m_dispatcher = nullptr; + return exchange( m_descriptorSet, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DescriptorSet & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_descriptorPool, rhs.m_descriptorPool ); + std::swap( m_descriptorSet, rhs.m_descriptorSet ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkUpdateDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplate.html + template + void updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, DataType const & data ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_descriptor_update_template === + + // wrapper function for command vkUpdateDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplateKHR.html + template + void updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, DataType const & data ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VALVE_descriptor_set_host_mapping === + + // wrapper function for command vkGetDescriptorSetHostMappingVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetHostMappingVALVE.html + VULKAN_HPP_NODISCARD void * getHostMappingVALVE() const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DescriptorPool m_descriptorPool = {}; + VULKAN_HPP_NAMESPACE::DescriptorSet m_descriptorSet = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DescriptorSets : public std::vector + { + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DescriptorSets( Device const & device, DescriptorSetAllocateInfo const & allocateInfo ) + { + *this = device.allocateDescriptorSets( allocateInfo ); + } +# endif + + DescriptorSets( std::nullptr_t ) {} + + DescriptorSets() = delete; + DescriptorSets( DescriptorSets const & ) = delete; + DescriptorSets( DescriptorSets && rhs ) = default; + DescriptorSets & operator=( DescriptorSets const & ) = delete; + DescriptorSets & operator=( DescriptorSets && rhs ) = default; + + DescriptorSets( std::vector && rhs ) + { + std::swap( *this, rhs ); + } + }; + + // wrapper class for handle VkDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayout.html + class DescriptorSetLayout + { + public: + using CType = VkDescriptorSetLayout; + using CppType = VULKAN_HPP_NAMESPACE::DescriptorSetLayout; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorSetLayout; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorSetLayout; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DescriptorSetLayout( Device const & device, DescriptorSetLayoutCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createDescriptorSetLayout( createInfo, allocator ); + } +# endif + + DescriptorSetLayout( Device const & device, VkDescriptorSetLayout descriptorSetLayout, Optional allocator = nullptr ) + : m_device( device ) + , m_descriptorSetLayout( descriptorSetLayout ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + DescriptorSetLayout( std::nullptr_t ) {} + + ~DescriptorSetLayout() + { + clear(); + } + + DescriptorSetLayout() = delete; + DescriptorSetLayout( DescriptorSetLayout const & ) = delete; + + DescriptorSetLayout( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_descriptorSetLayout( exchange( rhs.m_descriptorSetLayout, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DescriptorSetLayout & operator=( DescriptorSetLayout const & ) = delete; + + DescriptorSetLayout & operator=( DescriptorSetLayout && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_descriptorSetLayout, rhs.m_descriptorSetLayout ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DescriptorSetLayout const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout; + } + + VULKAN_HPP_NAMESPACE::DescriptorSetLayout const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_descriptorSetLayout ); + } + + operator VULKAN_HPP_NAMESPACE::DescriptorSetLayout() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorSetLayout; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_descriptorSetLayout ) + { + getDispatcher()->vkDestroyDescriptorSetLayout( static_cast( m_device ), + static_cast( m_descriptorSetLayout ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_descriptorSetLayout = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DescriptorSetLayout release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_descriptorSetLayout, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DescriptorSetLayout & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_descriptorSetLayout, rhs.m_descriptorSetLayout ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_EXT_descriptor_buffer === + + // wrapper function for command vkGetDescriptorSetLayoutSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSizeEXT.html + VULKAN_HPP_NODISCARD DeviceSize getSizeEXT() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDescriptorSetLayoutBindingOffsetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutBindingOffsetEXT.html + VULKAN_HPP_NODISCARD DeviceSize getBindingOffsetEXT( uint32_t binding ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DescriptorSetLayout m_descriptorSetLayout = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDescriptorUpdateTemplate, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplate.html + class DescriptorUpdateTemplate + { + public: + using CType = VkDescriptorUpdateTemplate; + using CppType = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDescriptorUpdateTemplate; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDescriptorUpdateTemplate; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DescriptorUpdateTemplate( Device const & device, + DescriptorUpdateTemplateCreateInfo const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createDescriptorUpdateTemplate( createInfo, allocator ); + } +# endif + + DescriptorUpdateTemplate( Device const & device, + VkDescriptorUpdateTemplate descriptorUpdateTemplate, + Optional allocator = nullptr ) + : m_device( device ) + , m_descriptorUpdateTemplate( descriptorUpdateTemplate ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + DescriptorUpdateTemplate( std::nullptr_t ) {} + + ~DescriptorUpdateTemplate() + { + clear(); + } + + DescriptorUpdateTemplate() = delete; + DescriptorUpdateTemplate( DescriptorUpdateTemplate const & ) = delete; + + DescriptorUpdateTemplate( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_descriptorUpdateTemplate( exchange( rhs.m_descriptorUpdateTemplate, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate const & ) = delete; + + DescriptorUpdateTemplate & operator=( DescriptorUpdateTemplate && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_descriptorUpdateTemplate, rhs.m_descriptorUpdateTemplate ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate; + } + + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_descriptorUpdateTemplate ); + } + + operator VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate() const VULKAN_HPP_NOEXCEPT + { + return m_descriptorUpdateTemplate; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_descriptorUpdateTemplate ) + { + getDispatcher()->vkDestroyDescriptorUpdateTemplate( static_cast( m_device ), + static_cast( m_descriptorUpdateTemplate ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_descriptorUpdateTemplate = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_descriptorUpdateTemplate, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DescriptorUpdateTemplate & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_descriptorUpdateTemplate, rhs.m_descriptorUpdateTemplate ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate m_descriptorUpdateTemplate = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDeviceMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemory.html + class DeviceMemory + { + public: + using CType = VkDeviceMemory; + using CppType = VULKAN_HPP_NAMESPACE::DeviceMemory; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDeviceMemory; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDeviceMemory; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DeviceMemory( Device const & device, MemoryAllocateInfo const & allocateInfo, Optional allocator = nullptr ) + { + *this = device.allocateMemory( allocateInfo, allocator ); + } +# endif + + DeviceMemory( Device const & device, VkDeviceMemory memory, Optional allocator = nullptr ) + : m_device( device ) + , m_deviceMemory( memory ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + DeviceMemory( std::nullptr_t ) {} + + ~DeviceMemory() + { + clear(); + } + + DeviceMemory() = delete; + DeviceMemory( DeviceMemory const & ) = delete; + + DeviceMemory( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_deviceMemory( exchange( rhs.m_deviceMemory, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DeviceMemory & operator=( DeviceMemory const & ) = delete; + + DeviceMemory & operator=( DeviceMemory && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_deviceMemory, rhs.m_deviceMemory ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DeviceMemory const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory; + } + + VULKAN_HPP_NAMESPACE::DeviceMemory const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_deviceMemory ); + } + + operator VULKAN_HPP_NAMESPACE::DeviceMemory() const VULKAN_HPP_NOEXCEPT + { + return m_deviceMemory; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_deviceMemory ) + { + getDispatcher()->vkFreeMemory( + static_cast( m_device ), static_cast( m_deviceMemory ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_deviceMemory = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DeviceMemory release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_deviceMemory, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DeviceMemory & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_deviceMemory, rhs.m_deviceMemory ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkMapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + mapMemory( DeviceSize offset, DeviceSize size, MemoryMapFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + // wrapper function for command vkUnmapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory.html + void unmapMemory() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetDeviceMemoryCommitment, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryCommitment.html + VULKAN_HPP_NODISCARD DeviceSize getCommitment() const VULKAN_HPP_NOEXCEPT; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + + // wrapper function for command vkGetMemoryWin32HandleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleNV.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getMemoryWin32HandleNV( ExternalMemoryHandleTypeFlagsNV handleType ) const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_pageable_device_local_memory === + + // wrapper function for command vkSetDeviceMemoryPriorityEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDeviceMemoryPriorityEXT.html + void setPriorityEXT( float priority ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::DeviceMemory m_deviceMemory = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkDisplayKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayKHR.html + class DisplayKHR + { + public: + using CType = VkDisplayKHR; + using CppType = VULKAN_HPP_NAMESPACE::DisplayKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDisplayKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDisplayKHR; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DisplayKHR( PhysicalDevice const & physicalDevice, int32_t drmFd, uint32_t connectorId ) + { + *this = physicalDevice.getDrmDisplayEXT( drmFd, connectorId ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + DisplayKHR( PhysicalDevice const & physicalDevice, Display & dpy, RROutput rrOutput ) + { + *this = physicalDevice.getRandROutputDisplayEXT( dpy, rrOutput ); + } +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + DisplayKHR( PhysicalDevice const & physicalDevice, uint32_t deviceRelativeId ) + { + *this = physicalDevice.getWinrtDisplayNV( deviceRelativeId ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ +# endif + + DisplayKHR( PhysicalDevice const & physicalDevice, VkDisplayKHR display ) + : m_physicalDevice( physicalDevice ), m_displayKHR( display ), m_dispatcher( physicalDevice.getDispatcher() ) + { + } + + DisplayKHR( std::nullptr_t ) {} + + ~DisplayKHR() + { + clear(); + } + + DisplayKHR() = delete; + DisplayKHR( DisplayKHR const & ) = delete; + + DisplayKHR( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_physicalDevice( exchange( rhs.m_physicalDevice, {} ) ) + , m_displayKHR( exchange( rhs.m_displayKHR, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DisplayKHR & operator=( DisplayKHR const & ) = delete; + + DisplayKHR & operator=( DisplayKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_physicalDevice, rhs.m_physicalDevice ); + std::swap( m_displayKHR, rhs.m_displayKHR ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DisplayKHR const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_displayKHR; + } + + VULKAN_HPP_NAMESPACE::DisplayKHR const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_displayKHR ); + } + + operator VULKAN_HPP_NAMESPACE::DisplayKHR() const VULKAN_HPP_NOEXCEPT + { + return m_displayKHR; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_displayKHR ) + { + getDispatcher()->vkReleaseDisplayEXT( static_cast( m_physicalDevice ), static_cast( m_displayKHR ) ); + } + m_physicalDevice = nullptr; + m_displayKHR = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DisplayKHR release() + { + m_physicalDevice = nullptr; + m_dispatcher = nullptr; + return exchange( m_displayKHR, nullptr ); + } + + VULKAN_HPP_NAMESPACE::PhysicalDevice getPhysicalDevice() const + { + return m_physicalDevice; + } + + detail::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DisplayKHR & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_physicalDevice, rhs.m_physicalDevice ); + std::swap( m_displayKHR, rhs.m_displayKHR ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_KHR_display === + + // wrapper function for command vkGetDisplayModePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModePropertiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getModeProperties() const; + + // wrapper function for command vkCreateDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayModeKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + createMode( DisplayModeCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; + + //=== VK_KHR_get_display_properties2 === + + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getModeProperties2() const; + + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type getModeProperties2() const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + + // wrapper function for command vkAcquireWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireWinrtDisplayNV.html + typename ResultValueType::type acquireWinrtNV() const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + private: + VULKAN_HPP_NAMESPACE::PhysicalDevice m_physicalDevice = {}; + VULKAN_HPP_NAMESPACE::DisplayKHR m_displayKHR = {}; + detail::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class DisplayKHRs : public std::vector + { + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DisplayKHRs( PhysicalDevice const & physicalDevice, uint32_t planeIndex ) + { + *this = physicalDevice.getDisplayPlaneSupportedDisplaysKHR( planeIndex ); + } +# endif + + DisplayKHRs( std::nullptr_t ) {} + + DisplayKHRs() = delete; + DisplayKHRs( DisplayKHRs const & ) = delete; + DisplayKHRs( DisplayKHRs && rhs ) = default; + DisplayKHRs & operator=( DisplayKHRs const & ) = delete; + DisplayKHRs & operator=( DisplayKHRs && rhs ) = default; + + DisplayKHRs( std::vector && rhs ) + { + std::swap( *this, rhs ); + } + }; + + // wrapper class for handle VkDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayModeKHR.html + class DisplayModeKHR + { + public: + using CType = VkDisplayModeKHR; + using CppType = VULKAN_HPP_NAMESPACE::DisplayModeKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eDisplayModeKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eDisplayModeKHR; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + DisplayModeKHR( DisplayKHR const & display, DisplayModeCreateInfoKHR const & createInfo, Optional allocator = nullptr ) + { + *this = display.createMode( createInfo, allocator ); + } +# endif + + DisplayModeKHR( DisplayKHR const & display, VkDisplayModeKHR displayModeKHR ) + : m_physicalDevice( display.getPhysicalDevice() ), m_displayModeKHR( displayModeKHR ), m_dispatcher( display.getDispatcher() ) + { + } + + DisplayModeKHR( std::nullptr_t ) {} + + ~DisplayModeKHR() + { + clear(); + } + + DisplayModeKHR() = delete; + + DisplayModeKHR( DisplayModeKHR const & rhs ) : m_displayModeKHR( rhs.m_displayModeKHR ), m_dispatcher( rhs.m_dispatcher ) {} + + DisplayModeKHR( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_physicalDevice( exchange( rhs.m_physicalDevice, {} ) ) + , m_displayModeKHR( exchange( rhs.m_displayModeKHR, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + DisplayModeKHR & operator=( DisplayModeKHR const & rhs ) + { + m_displayModeKHR = rhs.m_displayModeKHR; + m_dispatcher = rhs.m_dispatcher; + return *this; + } + + DisplayModeKHR & operator=( DisplayModeKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_physicalDevice, rhs.m_physicalDevice ); + std::swap( m_displayModeKHR, rhs.m_displayModeKHR ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::DisplayModeKHR const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR; + } + + VULKAN_HPP_NAMESPACE::DisplayModeKHR const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_displayModeKHR ); + } + + operator VULKAN_HPP_NAMESPACE::DisplayModeKHR() const VULKAN_HPP_NOEXCEPT + { + return m_displayModeKHR; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + m_physicalDevice = nullptr; + m_displayModeKHR = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::DisplayModeKHR release() + { + m_physicalDevice = nullptr; + m_dispatcher = nullptr; + return exchange( m_displayModeKHR, nullptr ); + } + + detail::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( DisplayModeKHR & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_physicalDevice, rhs.m_physicalDevice ); + std::swap( m_displayModeKHR, rhs.m_displayModeKHR ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_KHR_display === + + // wrapper function for command vkGetDisplayPlaneCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilitiesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getDisplayPlaneCapabilities( uint32_t planeIndex ) const; + + private: + VULKAN_HPP_NAMESPACE::PhysicalDevice m_physicalDevice = {}; + VULKAN_HPP_NAMESPACE::DisplayModeKHR m_displayModeKHR = {}; + detail::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkEvent.html + class Event + { + public: + using CType = VkEvent; + using CppType = VULKAN_HPP_NAMESPACE::Event; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eEvent; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eEvent; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Event( Device const & device, EventCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createEvent( createInfo, allocator ); + } +# endif + + Event( Device const & device, VkEvent event, Optional allocator = nullptr ) + : m_device( device ), m_event( event ), m_allocator( static_cast( allocator ) ), m_dispatcher( device.getDispatcher() ) + { + } + + Event( std::nullptr_t ) {} + + ~Event() + { + clear(); + } + + Event() = delete; + Event( Event const & ) = delete; + + Event( Event && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_event( exchange( rhs.m_event, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + Event & operator=( Event const & ) = delete; + + Event & operator=( Event && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_event, rhs.m_event ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Event const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_event; + } + + VULKAN_HPP_NAMESPACE::Event const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_event ); + } + + operator VULKAN_HPP_NAMESPACE::Event() const VULKAN_HPP_NOEXCEPT + { + return m_event; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_event ) + { + getDispatcher()->vkDestroyEvent( + static_cast( m_device ), static_cast( m_event ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_event = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Event release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_event, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( Event & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_event, rhs.m_event ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkGetEventStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEventStatus.html + VULKAN_HPP_NODISCARD Result getStatus() const; + + // wrapper function for command vkSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetEvent.html + typename ResultValueType::type set() const; + + // wrapper function for command vkResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetEvent.html + typename ResultValueType::type reset() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Event m_event = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkExternalComputeQueueNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalComputeQueueNV.html + class ExternalComputeQueueNV + { + public: + using CType = VkExternalComputeQueueNV; + using CppType = VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eExternalComputeQueueNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + ExternalComputeQueueNV( Device const & device, + ExternalComputeQueueCreateInfoNV const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createExternalComputeQueueNV( createInfo, allocator ); + } +# endif + + ExternalComputeQueueNV( Device const & device, VkExternalComputeQueueNV externalQueue, Optional allocator = nullptr ) + : m_device( device ) + , m_externalComputeQueueNV( externalQueue ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + ExternalComputeQueueNV( std::nullptr_t ) {} + + ~ExternalComputeQueueNV() + { + clear(); + } + + ExternalComputeQueueNV() = delete; + ExternalComputeQueueNV( ExternalComputeQueueNV const & ) = delete; + + ExternalComputeQueueNV( ExternalComputeQueueNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_externalComputeQueueNV( exchange( rhs.m_externalComputeQueueNV, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + ExternalComputeQueueNV & operator=( ExternalComputeQueueNV const & ) = delete; + + ExternalComputeQueueNV & operator=( ExternalComputeQueueNV && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_externalComputeQueueNV, rhs.m_externalComputeQueueNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_externalComputeQueueNV; + } + + VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_externalComputeQueueNV ); + } + + operator VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV() const VULKAN_HPP_NOEXCEPT + { + return m_externalComputeQueueNV; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_externalComputeQueueNV ) + { + getDispatcher()->vkDestroyExternalComputeQueueNV( static_cast( m_device ), + static_cast( m_externalComputeQueueNV ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_externalComputeQueueNV = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_externalComputeQueueNV, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( ExternalComputeQueueNV & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_externalComputeQueueNV, rhs.m_externalComputeQueueNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_NV_external_compute_queue === + + // wrapper function for command vkGetExternalComputeQueueDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExternalComputeQueueDataNV.html + template + VULKAN_HPP_NODISCARD std::pair getData() const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV m_externalComputeQueueNV = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFence.html + class Fence + { + public: + using CType = VkFence; + using CppType = VULKAN_HPP_NAMESPACE::Fence; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eFence; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eFence; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Fence( Device const & device, FenceCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createFence( createInfo, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Fence( Device const & device, DeviceEventInfoEXT const & deviceEventInfo, Optional allocator = nullptr ) + { + *this = device.registerEventEXT( deviceEventInfo, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Fence( Device const & device, + DisplayKHR const & display, + DisplayEventInfoEXT const & displayEventInfo, + Optional allocator = nullptr ) + { + *this = device.registerDisplayEventEXT( display, displayEventInfo, allocator ); + } +# endif + + Fence( Device const & device, VkFence fence, Optional allocator = nullptr ) + : m_device( device ), m_fence( fence ), m_allocator( static_cast( allocator ) ), m_dispatcher( device.getDispatcher() ) + { + } + + Fence( std::nullptr_t ) {} + + ~Fence() + { + clear(); + } + + Fence() = delete; + Fence( Fence const & ) = delete; + + Fence( Fence && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_fence( exchange( rhs.m_fence, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + Fence & operator=( Fence const & ) = delete; + + Fence & operator=( Fence && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_fence, rhs.m_fence ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Fence const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_fence; + } + + VULKAN_HPP_NAMESPACE::Fence const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_fence ); + } + + operator VULKAN_HPP_NAMESPACE::Fence() const VULKAN_HPP_NOEXCEPT + { + return m_fence; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_fence ) + { + getDispatcher()->vkDestroyFence( + static_cast( m_device ), static_cast( m_fence ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_fence = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Fence release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_fence, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( Fence & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_fence, rhs.m_fence ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkGetFenceStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceStatus.html + VULKAN_HPP_NODISCARD Result getStatus() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Fence m_fence = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebuffer.html + class Framebuffer + { + public: + using CType = VkFramebuffer; + using CppType = VULKAN_HPP_NAMESPACE::Framebuffer; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eFramebuffer; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eFramebuffer; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Framebuffer( Device const & device, FramebufferCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createFramebuffer( createInfo, allocator ); + } +# endif + + Framebuffer( Device const & device, VkFramebuffer framebuffer, Optional allocator = nullptr ) + : m_device( device ) + , m_framebuffer( framebuffer ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + Framebuffer( std::nullptr_t ) {} + + ~Framebuffer() + { + clear(); + } + + Framebuffer() = delete; + Framebuffer( Framebuffer const & ) = delete; + + Framebuffer( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_framebuffer( exchange( rhs.m_framebuffer, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + Framebuffer & operator=( Framebuffer const & ) = delete; + + Framebuffer & operator=( Framebuffer && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_framebuffer, rhs.m_framebuffer ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Framebuffer const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_framebuffer; + } + + VULKAN_HPP_NAMESPACE::Framebuffer const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_framebuffer ); + } + + operator VULKAN_HPP_NAMESPACE::Framebuffer() const VULKAN_HPP_NOEXCEPT + { + return m_framebuffer; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_framebuffer ) + { + getDispatcher()->vkDestroyFramebuffer( + static_cast( m_device ), static_cast( m_framebuffer ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_framebuffer = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Framebuffer release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_framebuffer, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( Framebuffer & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_framebuffer, rhs.m_framebuffer ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_QCOM_tile_properties === + + // wrapper function for command vkGetFramebufferTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFramebufferTilePropertiesQCOM.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getTilePropertiesQCOM() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Framebuffer m_framebuffer = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImage.html + class Image + { + public: + using CType = VkImage; + using CppType = VULKAN_HPP_NAMESPACE::Image; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eImage; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eImage; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Image( Device const & device, ImageCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createImage( createInfo, allocator ); + } +# endif + + Image( Device const & device, VkImage image, Optional allocator = nullptr ) + : m_device( device ), m_image( image ), m_allocator( static_cast( allocator ) ), m_dispatcher( device.getDispatcher() ) + { + } + + Image( std::nullptr_t ) {} + + ~Image() + { + clear(); + } + + Image() = delete; + Image( Image const & ) = delete; + + Image( Image && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_image( exchange( rhs.m_image, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + Image & operator=( Image const & ) = delete; + + Image & operator=( Image && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_image, rhs.m_image ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Image const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_image; + } + + VULKAN_HPP_NAMESPACE::Image const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_image ); + } + + operator VULKAN_HPP_NAMESPACE::Image() const VULKAN_HPP_NOEXCEPT + { + return m_image; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_image ) + { + getDispatcher()->vkDestroyImage( + static_cast( m_device ), static_cast( m_image ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_image = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Image release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_image, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( Image & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_image, rhs.m_image ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkBindImageMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory.html + typename ResultValueType::type bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, DeviceSize memoryOffset ) const; + + // wrapper function for command vkGetImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements.html + VULKAN_HPP_NODISCARD MemoryRequirements getMemoryRequirements() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements.html + VULKAN_HPP_NODISCARD std::vector getSparseMemoryRequirements() const; + + // wrapper function for command vkGetImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout.html + VULKAN_HPP_NODISCARD SubresourceLayout getSubresourceLayout( ImageSubresource const & subresource ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_VERSION_1_4 === + + // wrapper function for command vkGetImageSubresourceLayout2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html + VULKAN_HPP_NODISCARD SubresourceLayout2 getSubresourceLayout2( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetImageSubresourceLayout2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html + template + VULKAN_HPP_NODISCARD StructureChain getSubresourceLayout2( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_image_drm_format_modifier === + + // wrapper function for command vkGetImageDrmFormatModifierPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageDrmFormatModifierPropertiesEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getDrmFormatModifierPropertiesEXT() const; + + //=== VK_EXT_host_image_copy === + + // wrapper function for command vkGetImageSubresourceLayout2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html + VULKAN_HPP_NODISCARD SubresourceLayout2 getSubresourceLayout2EXT( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetImageSubresourceLayout2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html + template + VULKAN_HPP_NODISCARD StructureChain getSubresourceLayout2EXT( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_maintenance5 === + + // wrapper function for command vkGetImageSubresourceLayout2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html + VULKAN_HPP_NODISCARD SubresourceLayout2 getSubresourceLayout2KHR( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetImageSubresourceLayout2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html + template + VULKAN_HPP_NODISCARD StructureChain getSubresourceLayout2KHR( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT; + + protected: + Image( VULKAN_HPP_NAMESPACE::Device device, + VULKAN_HPP_NAMESPACE::Image image, + AllocationCallbacks const * allocator, + detail::DeviceDispatcher const * dispatcher ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( device, {} ) ) + , m_image( exchange( image, {} ) ) + , m_allocator( exchange( allocator, {} ) ) + , m_dispatcher( exchange( dispatcher, nullptr ) ) + { + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Image m_image = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageView.html + class ImageView + { + public: + using CType = VkImageView; + using CppType = VULKAN_HPP_NAMESPACE::ImageView; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eImageView; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eImageView; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + ImageView( Device const & device, ImageViewCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createImageView( createInfo, allocator ); + } +# endif + + ImageView( Device const & device, VkImageView imageView, Optional allocator = nullptr ) + : m_device( device ) + , m_imageView( imageView ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + ImageView( std::nullptr_t ) {} + + ~ImageView() + { + clear(); + } + + ImageView() = delete; + ImageView( ImageView const & ) = delete; + + ImageView( ImageView && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_imageView( exchange( rhs.m_imageView, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + ImageView & operator=( ImageView const & ) = delete; + + ImageView & operator=( ImageView && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_imageView, rhs.m_imageView ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::ImageView const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_imageView; + } + + VULKAN_HPP_NAMESPACE::ImageView const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_imageView ); + } + + operator VULKAN_HPP_NAMESPACE::ImageView() const VULKAN_HPP_NOEXCEPT + { + return m_imageView; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_imageView ) + { + getDispatcher()->vkDestroyImageView( + static_cast( m_device ), static_cast( m_imageView ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_imageView = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::ImageView release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_imageView, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( ImageView & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_imageView, rhs.m_imageView ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_NVX_image_view_handle === + + // wrapper function for command vkGetImageViewAddressNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewAddressNVX.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getAddressNVX() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::ImageView m_imageView = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkIndirectCommandsLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutEXT.html + class IndirectCommandsLayoutEXT + { + public: + using CType = VkIndirectCommandsLayoutEXT; + using CppType = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eIndirectCommandsLayoutEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + IndirectCommandsLayoutEXT( Device const & device, + IndirectCommandsLayoutCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createIndirectCommandsLayoutEXT( createInfo, allocator ); + } +# endif + + IndirectCommandsLayoutEXT( Device const & device, + VkIndirectCommandsLayoutEXT indirectCommandsLayout, + Optional allocator = nullptr ) + : m_device( device ) + , m_indirectCommandsLayoutEXT( indirectCommandsLayout ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + IndirectCommandsLayoutEXT( std::nullptr_t ) {} + + ~IndirectCommandsLayoutEXT() + { + clear(); + } + + IndirectCommandsLayoutEXT() = delete; + IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT const & ) = delete; + + IndirectCommandsLayoutEXT( IndirectCommandsLayoutEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_indirectCommandsLayoutEXT( exchange( rhs.m_indirectCommandsLayoutEXT, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT const & ) = delete; + + IndirectCommandsLayoutEXT & operator=( IndirectCommandsLayoutEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_indirectCommandsLayoutEXT, rhs.m_indirectCommandsLayoutEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT; + } + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_indirectCommandsLayoutEXT ); + } + + operator VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutEXT; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_indirectCommandsLayoutEXT ) + { + getDispatcher()->vkDestroyIndirectCommandsLayoutEXT( static_cast( m_device ), + static_cast( m_indirectCommandsLayoutEXT ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_indirectCommandsLayoutEXT = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_indirectCommandsLayoutEXT, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( IndirectCommandsLayoutEXT & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_indirectCommandsLayoutEXT, rhs.m_indirectCommandsLayoutEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT m_indirectCommandsLayoutEXT = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkIndirectCommandsLayoutNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutNV.html + class IndirectCommandsLayoutNV + { + public: + using CType = VkIndirectCommandsLayoutNV; + using CppType = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eIndirectCommandsLayoutNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + IndirectCommandsLayoutNV( Device const & device, + IndirectCommandsLayoutCreateInfoNV const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createIndirectCommandsLayoutNV( createInfo, allocator ); + } +# endif + + IndirectCommandsLayoutNV( Device const & device, + VkIndirectCommandsLayoutNV indirectCommandsLayout, + Optional allocator = nullptr ) + : m_device( device ) + , m_indirectCommandsLayoutNV( indirectCommandsLayout ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + IndirectCommandsLayoutNV( std::nullptr_t ) {} + + ~IndirectCommandsLayoutNV() + { + clear(); + } + + IndirectCommandsLayoutNV() = delete; + IndirectCommandsLayoutNV( IndirectCommandsLayoutNV const & ) = delete; + + IndirectCommandsLayoutNV( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_indirectCommandsLayoutNV( exchange( rhs.m_indirectCommandsLayoutNV, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV const & ) = delete; + + IndirectCommandsLayoutNV & operator=( IndirectCommandsLayoutNV && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_indirectCommandsLayoutNV, rhs.m_indirectCommandsLayoutNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV; + } + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_indirectCommandsLayoutNV ); + } + + operator VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV() const VULKAN_HPP_NOEXCEPT + { + return m_indirectCommandsLayoutNV; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_indirectCommandsLayoutNV ) + { + getDispatcher()->vkDestroyIndirectCommandsLayoutNV( static_cast( m_device ), + static_cast( m_indirectCommandsLayoutNV ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_indirectCommandsLayoutNV = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_indirectCommandsLayoutNV, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( IndirectCommandsLayoutNV & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_indirectCommandsLayoutNV, rhs.m_indirectCommandsLayoutNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV m_indirectCommandsLayoutNV = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkIndirectExecutionSetEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectExecutionSetEXT.html + class IndirectExecutionSetEXT + { + public: + using CType = VkIndirectExecutionSetEXT; + using CppType = VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eIndirectExecutionSetEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + IndirectExecutionSetEXT( Device const & device, + IndirectExecutionSetCreateInfoEXT const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createIndirectExecutionSetEXT( createInfo, allocator ); + } +# endif + + IndirectExecutionSetEXT( Device const & device, VkIndirectExecutionSetEXT indirectExecutionSet, Optional allocator = nullptr ) + : m_device( device ) + , m_indirectExecutionSetEXT( indirectExecutionSet ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + IndirectExecutionSetEXT( std::nullptr_t ) {} + + ~IndirectExecutionSetEXT() + { + clear(); + } + + IndirectExecutionSetEXT() = delete; + IndirectExecutionSetEXT( IndirectExecutionSetEXT const & ) = delete; + + IndirectExecutionSetEXT( IndirectExecutionSetEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_indirectExecutionSetEXT( exchange( rhs.m_indirectExecutionSetEXT, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT const & ) = delete; + + IndirectExecutionSetEXT & operator=( IndirectExecutionSetEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_indirectExecutionSetEXT, rhs.m_indirectExecutionSetEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT; + } + + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_indirectExecutionSetEXT ); + } + + operator VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT() const VULKAN_HPP_NOEXCEPT + { + return m_indirectExecutionSetEXT; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_indirectExecutionSetEXT ) + { + getDispatcher()->vkDestroyIndirectExecutionSetEXT( static_cast( m_device ), + static_cast( m_indirectExecutionSetEXT ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_indirectExecutionSetEXT = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_indirectExecutionSetEXT, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( IndirectExecutionSetEXT & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_indirectExecutionSetEXT, rhs.m_indirectExecutionSetEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_EXT_device_generated_commands === + + // wrapper function for command vkUpdateIndirectExecutionSetPipelineEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetPipelineEXT.html + void updatePipeline( ArrayProxy const & executionSetWrites ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkUpdateIndirectExecutionSetShaderEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetShaderEXT.html + void updateShader( ArrayProxy const & executionSetWrites ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT m_indirectExecutionSetEXT = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapEXT.html + class MicromapEXT + { + public: + using CType = VkMicromapEXT; + using CppType = VULKAN_HPP_NAMESPACE::MicromapEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eMicromapEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + MicromapEXT( Device const & device, MicromapCreateInfoEXT const & createInfo, Optional allocator = nullptr ) + { + *this = device.createMicromapEXT( createInfo, allocator ); + } +# endif + + MicromapEXT( Device const & device, VkMicromapEXT micromap, Optional allocator = nullptr ) + : m_device( device ) + , m_micromapEXT( micromap ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + MicromapEXT( std::nullptr_t ) {} + + ~MicromapEXT() + { + clear(); + } + + MicromapEXT() = delete; + MicromapEXT( MicromapEXT const & ) = delete; + + MicromapEXT( MicromapEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_micromapEXT( exchange( rhs.m_micromapEXT, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + MicromapEXT & operator=( MicromapEXT const & ) = delete; + + MicromapEXT & operator=( MicromapEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_micromapEXT, rhs.m_micromapEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::MicromapEXT const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_micromapEXT; + } + + VULKAN_HPP_NAMESPACE::MicromapEXT const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_micromapEXT ); + } + + operator VULKAN_HPP_NAMESPACE::MicromapEXT() const VULKAN_HPP_NOEXCEPT + { + return m_micromapEXT; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_micromapEXT ) + { + getDispatcher()->vkDestroyMicromapEXT( + static_cast( m_device ), static_cast( m_micromapEXT ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_micromapEXT = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::MicromapEXT release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_micromapEXT, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( MicromapEXT & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_micromapEXT, rhs.m_micromapEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::MicromapEXT m_micromapEXT = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkOpticalFlowSessionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowSessionNV.html + class OpticalFlowSessionNV + { + public: + using CType = VkOpticalFlowSessionNV; + using CppType = VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eOpticalFlowSessionNV; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + OpticalFlowSessionNV( Device const & device, OpticalFlowSessionCreateInfoNV const & createInfo, Optional allocator = nullptr ) + { + *this = device.createOpticalFlowSessionNV( createInfo, allocator ); + } +# endif + + OpticalFlowSessionNV( Device const & device, VkOpticalFlowSessionNV session, Optional allocator = nullptr ) + : m_device( device ) + , m_opticalFlowSessionNV( session ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + OpticalFlowSessionNV( std::nullptr_t ) {} + + ~OpticalFlowSessionNV() + { + clear(); + } + + OpticalFlowSessionNV() = delete; + OpticalFlowSessionNV( OpticalFlowSessionNV const & ) = delete; + + OpticalFlowSessionNV( OpticalFlowSessionNV && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_opticalFlowSessionNV( exchange( rhs.m_opticalFlowSessionNV, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + OpticalFlowSessionNV & operator=( OpticalFlowSessionNV const & ) = delete; + + OpticalFlowSessionNV & operator=( OpticalFlowSessionNV && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_opticalFlowSessionNV, rhs.m_opticalFlowSessionNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_opticalFlowSessionNV; + } + + VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_opticalFlowSessionNV ); + } + + operator VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV() const VULKAN_HPP_NOEXCEPT + { + return m_opticalFlowSessionNV; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_opticalFlowSessionNV ) + { + getDispatcher()->vkDestroyOpticalFlowSessionNV( static_cast( m_device ), + static_cast( m_opticalFlowSessionNV ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_opticalFlowSessionNV = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_opticalFlowSessionNV, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( OpticalFlowSessionNV & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_opticalFlowSessionNV, rhs.m_opticalFlowSessionNV ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_NV_optical_flow === + + // wrapper function for command vkBindOpticalFlowSessionImageNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindOpticalFlowSessionImageNV.html + typename ResultValueType::type + bindImage( OpticalFlowSessionBindingPointNV bindingPoint, VULKAN_HPP_NAMESPACE::ImageView view, ImageLayout layout ) const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV m_opticalFlowSessionNV = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceConfigurationINTEL.html + class PerformanceConfigurationINTEL + { + public: + using CType = VkPerformanceConfigurationINTEL; + using CppType = VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePerformanceConfigurationINTEL; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + PerformanceConfigurationINTEL( Device const & device, PerformanceConfigurationAcquireInfoINTEL const & acquireInfo ) + { + *this = device.acquirePerformanceConfigurationINTEL( acquireInfo ); + } +# endif + + PerformanceConfigurationINTEL( Device const & device, VkPerformanceConfigurationINTEL configuration ) + : m_device( device ), m_performanceConfigurationINTEL( configuration ), m_dispatcher( device.getDispatcher() ) + { + } + + PerformanceConfigurationINTEL( std::nullptr_t ) {} + + ~PerformanceConfigurationINTEL() + { + clear(); + } + + PerformanceConfigurationINTEL() = delete; + PerformanceConfigurationINTEL( PerformanceConfigurationINTEL const & ) = delete; + + PerformanceConfigurationINTEL( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_performanceConfigurationINTEL( exchange( rhs.m_performanceConfigurationINTEL, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL const & ) = delete; + + PerformanceConfigurationINTEL & operator=( PerformanceConfigurationINTEL && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_performanceConfigurationINTEL, rhs.m_performanceConfigurationINTEL ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL; + } + + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_performanceConfigurationINTEL ); + } + + operator VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL() const VULKAN_HPP_NOEXCEPT + { + return m_performanceConfigurationINTEL; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_performanceConfigurationINTEL ) + { + getDispatcher()->vkReleasePerformanceConfigurationINTEL( static_cast( m_device ), + static_cast( m_performanceConfigurationINTEL ) ); + } + m_device = nullptr; + m_performanceConfigurationINTEL = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL release() + { + m_device = nullptr; + m_dispatcher = nullptr; + return exchange( m_performanceConfigurationINTEL, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( PerformanceConfigurationINTEL & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_performanceConfigurationINTEL, rhs.m_performanceConfigurationINTEL ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL m_performanceConfigurationINTEL = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCache.html + class PipelineCache + { + public: + using CType = VkPipelineCache; + using CppType = VULKAN_HPP_NAMESPACE::PipelineCache; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineCache; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePipelineCache; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + PipelineCache( Device const & device, PipelineCacheCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createPipelineCache( createInfo, allocator ); + } +# endif + + PipelineCache( Device const & device, VkPipelineCache pipelineCache, Optional allocator = nullptr ) + : m_device( device ) + , m_pipelineCache( pipelineCache ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + PipelineCache( std::nullptr_t ) {} + + ~PipelineCache() + { + clear(); + } + + PipelineCache() = delete; + PipelineCache( PipelineCache const & ) = delete; + + PipelineCache( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_pipelineCache( exchange( rhs.m_pipelineCache, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + PipelineCache & operator=( PipelineCache const & ) = delete; + + PipelineCache & operator=( PipelineCache && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_pipelineCache, rhs.m_pipelineCache ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PipelineCache const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache; + } + + VULKAN_HPP_NAMESPACE::PipelineCache const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_pipelineCache ); + } + + operator VULKAN_HPP_NAMESPACE::PipelineCache() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineCache; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_pipelineCache ) + { + getDispatcher()->vkDestroyPipelineCache( static_cast( m_device ), + static_cast( m_pipelineCache ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_pipelineCache = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::PipelineCache release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_pipelineCache, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( PipelineCache & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_pipelineCache, rhs.m_pipelineCache ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkGetPipelineCacheData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineCacheData.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getData() const; + + // wrapper function for command vkMergePipelineCaches, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergePipelineCaches.html + typename ResultValueType::type merge( ArrayProxy const & srcCaches ) const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::PipelineCache m_pipelineCache = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipeline.html + class Pipeline + { + public: + using CType = VkPipeline; + using CppType = VULKAN_HPP_NAMESPACE::Pipeline; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipeline; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePipeline; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Pipeline( Device const & device, + Optional const & pipelineCache, + ComputePipelineCreateInfo const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createComputePipeline( pipelineCache, createInfo, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Pipeline( Device const & device, + Optional const & deferredOperation, + Optional const & pipelineCache, + DataGraphPipelineCreateInfoARM const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createDataGraphPipelineARM( deferredOperation, pipelineCache, createInfo, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + Pipeline( Device const & device, + Optional const & pipelineCache, + ExecutionGraphPipelineCreateInfoAMDX const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createExecutionGraphPipelineAMDX( pipelineCache, createInfo, allocator ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Pipeline( Device const & device, + Optional const & pipelineCache, + GraphicsPipelineCreateInfo const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createGraphicsPipeline( pipelineCache, createInfo, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Pipeline( Device const & device, + Optional const & deferredOperation, + Optional const & pipelineCache, + RayTracingPipelineCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createRayTracingPipelineKHR( deferredOperation, pipelineCache, createInfo, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Pipeline( Device const & device, + Optional const & pipelineCache, + RayTracingPipelineCreateInfoNV const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createRayTracingPipelineNV( pipelineCache, createInfo, allocator ); + } +# endif + + Pipeline( Device const & device, VkPipeline pipeline, Optional allocator = nullptr, Result successCode = Result::eSuccess ) + : m_device( device ) + , m_pipeline( pipeline ) + , m_allocator( static_cast( allocator ) ) + , m_constructorSuccessCode( successCode ) + , m_dispatcher( device.getDispatcher() ) + { + } + + Pipeline( std::nullptr_t ) {} + + ~Pipeline() + { + clear(); + } + + Pipeline() = delete; + Pipeline( Pipeline const & ) = delete; + + Pipeline( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_pipeline( exchange( rhs.m_pipeline, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_constructorSuccessCode( exchange( rhs.m_constructorSuccessCode, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + Pipeline & operator=( Pipeline const & ) = delete; + + Pipeline & operator=( Pipeline && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_pipeline, rhs.m_pipeline ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Pipeline const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_pipeline; + } + + VULKAN_HPP_NAMESPACE::Pipeline const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_pipeline ); + } + + operator VULKAN_HPP_NAMESPACE::Pipeline() const VULKAN_HPP_NOEXCEPT + { + return m_pipeline; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_pipeline ) + { + getDispatcher()->vkDestroyPipeline( + static_cast( m_device ), static_cast( m_pipeline ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_pipeline = nullptr; + m_allocator = nullptr; + m_constructorSuccessCode = Result::eErrorUnknown; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Pipeline release() + { + m_device = nullptr; + m_allocator = nullptr; + m_constructorSuccessCode = Result::eErrorUnknown; + m_dispatcher = nullptr; + return exchange( m_pipeline, nullptr ); + } + + Result getConstructorSuccessCode() const + { + return m_constructorSuccessCode; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( Pipeline & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_pipeline, rhs.m_pipeline ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_AMD_shader_info === + + // wrapper function for command vkGetShaderInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInfoAMD.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getShaderInfoAMD( ShaderStageFlagBits shaderStage, + ShaderInfoTypeAMD infoType ) const; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + + // wrapper function for command vkGetExecutionGraphPipelineScratchSizeAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineScratchSizeAMDX.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getExecutionGraphScratchSizeAMDX() const; + + // wrapper function for command vkGetExecutionGraphPipelineNodeIndexAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineNodeIndexAMDX.html + VULKAN_HPP_NODISCARD typename ResultValueType::type + getExecutionGraphNodeIndexAMDX( PipelineShaderStageNodeCreateInfoAMDX const & nodeInfo ) const; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_KHR_ray_tracing_pipeline === + + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + VULKAN_HPP_NODISCARD Result getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const; + + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const; + + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + VULKAN_HPP_NODISCARD Result getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const; + + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup, + uint32_t groupCount ) const; + + // wrapper function for command vkGetRayTracingShaderGroupStackSizeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupStackSizeKHR.html + VULKAN_HPP_NODISCARD DeviceSize getRayTracingShaderGroupStackSizeKHR( uint32_t group, ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_ray_tracing === + + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + VULKAN_HPP_NODISCARD Result getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + template + VULKAN_HPP_NODISCARD typename ResultValueType>::type + getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const; + + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + template + VULKAN_HPP_NODISCARD typename ResultValueType::type getRayTracingShaderGroupHandleNV( uint32_t firstGroup, uint32_t groupCount ) const; + + // wrapper function for command vkCompileDeferredNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCompileDeferredNV.html + typename ResultValueType::type compileDeferredNV( uint32_t shader ) const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Pipeline m_pipeline = {}; + AllocationCallbacks const * m_allocator = {}; + Result m_constructorSuccessCode = Result::eErrorUnknown; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class Pipelines : public std::vector + { + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Pipelines( Device const & device, + Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) + { + *this = device.createComputePipelines( pipelineCache, createInfos, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Pipelines( Device const & device, + Optional const & deferredOperation, + Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) + { + *this = device.createDataGraphPipelinesARM( deferredOperation, pipelineCache, createInfos, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + Pipelines( Device const & device, + Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) + { + *this = device.createExecutionGraphPipelinesAMDX( pipelineCache, createInfos, allocator ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Pipelines( Device const & device, + Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) + { + *this = device.createGraphicsPipelines( pipelineCache, createInfos, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Pipelines( Device const & device, + Optional const & deferredOperation, + Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) + { + *this = device.createRayTracingPipelinesKHR( deferredOperation, pipelineCache, createInfos, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Pipelines( Device const & device, + Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator = nullptr ) + { + *this = device.createRayTracingPipelinesNV( pipelineCache, createInfos, allocator ); + } +# endif + + Pipelines( std::nullptr_t ) {} + + Pipelines() = delete; + Pipelines( Pipelines const & ) = delete; + Pipelines( Pipelines && rhs ) = default; + Pipelines & operator=( Pipelines const & ) = delete; + Pipelines & operator=( Pipelines && rhs ) = default; + + Pipelines( std::vector && rhs ) + { + std::swap( *this, rhs ); + } + }; + + // wrapper class for handle VkPipelineBinaryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryKHR.html + class PipelineBinaryKHR + { + public: + using CType = VkPipelineBinaryKHR; + using CppType = VULKAN_HPP_NAMESPACE::PipelineBinaryKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineBinaryKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: + PipelineBinaryKHR( Device const & device, + VkPipelineBinaryKHR pipelineBinary, + Optional allocator = nullptr, + Result successCode = Result::eSuccess ) + : m_device( device ) + , m_pipelineBinaryKHR( pipelineBinary ) + , m_allocator( static_cast( allocator ) ) + , m_constructorSuccessCode( successCode ) + , m_dispatcher( device.getDispatcher() ) + { + } + + PipelineBinaryKHR( std::nullptr_t ) {} + + ~PipelineBinaryKHR() + { + clear(); + } + + PipelineBinaryKHR() = delete; + PipelineBinaryKHR( PipelineBinaryKHR const & ) = delete; + + PipelineBinaryKHR( PipelineBinaryKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_pipelineBinaryKHR( exchange( rhs.m_pipelineBinaryKHR, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_constructorSuccessCode( exchange( rhs.m_constructorSuccessCode, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + PipelineBinaryKHR & operator=( PipelineBinaryKHR const & ) = delete; + + PipelineBinaryKHR & operator=( PipelineBinaryKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_pipelineBinaryKHR, rhs.m_pipelineBinaryKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PipelineBinaryKHR const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_pipelineBinaryKHR; + } + + VULKAN_HPP_NAMESPACE::PipelineBinaryKHR const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_pipelineBinaryKHR ); + } + + operator VULKAN_HPP_NAMESPACE::PipelineBinaryKHR() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineBinaryKHR; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_pipelineBinaryKHR ) + { + getDispatcher()->vkDestroyPipelineBinaryKHR( static_cast( m_device ), + static_cast( m_pipelineBinaryKHR ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_pipelineBinaryKHR = nullptr; + m_allocator = nullptr; + m_constructorSuccessCode = Result::eErrorUnknown; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::PipelineBinaryKHR release() + { + m_device = nullptr; + m_allocator = nullptr; + m_constructorSuccessCode = Result::eErrorUnknown; + m_dispatcher = nullptr; + return exchange( m_pipelineBinaryKHR, nullptr ); + } + + Result getConstructorSuccessCode() const + { + return m_constructorSuccessCode; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( PipelineBinaryKHR & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_pipelineBinaryKHR, rhs.m_pipelineBinaryKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::PipelineBinaryKHR m_pipelineBinaryKHR = {}; + AllocationCallbacks const * m_allocator = {}; + Result m_constructorSuccessCode = Result::eErrorUnknown; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class PipelineBinaryKHRs : public std::vector + { + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + PipelineBinaryKHRs( Device const & device, PipelineBinaryCreateInfoKHR const & createInfo, Optional allocator = nullptr ) + { + *this = device.createPipelineBinariesKHR( createInfo, allocator ); + } +# endif + + PipelineBinaryKHRs( std::nullptr_t ) {} + + PipelineBinaryKHRs() = delete; + PipelineBinaryKHRs( PipelineBinaryKHRs const & ) = delete; + PipelineBinaryKHRs( PipelineBinaryKHRs && rhs ) = default; + PipelineBinaryKHRs & operator=( PipelineBinaryKHRs const & ) = delete; + PipelineBinaryKHRs & operator=( PipelineBinaryKHRs && rhs ) = default; + + PipelineBinaryKHRs( std::vector && rhs ) + { + std::swap( *this, rhs ); + } + }; + + // wrapper class for handle VkPipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineLayout.html + class PipelineLayout + { + public: + using CType = VkPipelineLayout; + using CppType = VULKAN_HPP_NAMESPACE::PipelineLayout; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePipelineLayout; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::ePipelineLayout; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + PipelineLayout( Device const & device, PipelineLayoutCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createPipelineLayout( createInfo, allocator ); + } +# endif + + PipelineLayout( Device const & device, VkPipelineLayout pipelineLayout, Optional allocator = nullptr ) + : m_device( device ) + , m_pipelineLayout( pipelineLayout ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + PipelineLayout( std::nullptr_t ) {} + + ~PipelineLayout() + { + clear(); + } + + PipelineLayout() = delete; + PipelineLayout( PipelineLayout const & ) = delete; + + PipelineLayout( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_pipelineLayout( exchange( rhs.m_pipelineLayout, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + PipelineLayout & operator=( PipelineLayout const & ) = delete; + + PipelineLayout & operator=( PipelineLayout && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_pipelineLayout, rhs.m_pipelineLayout ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PipelineLayout const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout; + } + + VULKAN_HPP_NAMESPACE::PipelineLayout const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_pipelineLayout ); + } + + operator VULKAN_HPP_NAMESPACE::PipelineLayout() const VULKAN_HPP_NOEXCEPT + { + return m_pipelineLayout; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_pipelineLayout ) + { + getDispatcher()->vkDestroyPipelineLayout( static_cast( m_device ), + static_cast( m_pipelineLayout ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_pipelineLayout = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::PipelineLayout release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_pipelineLayout, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( PipelineLayout & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_pipelineLayout, rhs.m_pipelineLayout ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::PipelineLayout m_pipelineLayout = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkPrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPrivateDataSlot.html + class PrivateDataSlot + { + public: + using CType = VkPrivateDataSlot; + using CppType = VULKAN_HPP_NAMESPACE::PrivateDataSlot; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::ePrivateDataSlot; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + PrivateDataSlot( Device const & device, PrivateDataSlotCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createPrivateDataSlot( createInfo, allocator ); + } +# endif + + PrivateDataSlot( Device const & device, VkPrivateDataSlot privateDataSlot, Optional allocator = nullptr ) + : m_device( device ) + , m_privateDataSlot( privateDataSlot ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + PrivateDataSlot( std::nullptr_t ) {} + + ~PrivateDataSlot() + { + clear(); + } + + PrivateDataSlot() = delete; + PrivateDataSlot( PrivateDataSlot const & ) = delete; + + PrivateDataSlot( PrivateDataSlot && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_privateDataSlot( exchange( rhs.m_privateDataSlot, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + PrivateDataSlot & operator=( PrivateDataSlot const & ) = delete; + + PrivateDataSlot & operator=( PrivateDataSlot && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_privateDataSlot, rhs.m_privateDataSlot ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::PrivateDataSlot const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot; + } + + VULKAN_HPP_NAMESPACE::PrivateDataSlot const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_privateDataSlot ); + } + + operator VULKAN_HPP_NAMESPACE::PrivateDataSlot() const VULKAN_HPP_NOEXCEPT + { + return m_privateDataSlot; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_privateDataSlot ) + { + getDispatcher()->vkDestroyPrivateDataSlot( static_cast( m_device ), + static_cast( m_privateDataSlot ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_privateDataSlot = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::PrivateDataSlot release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_privateDataSlot, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( PrivateDataSlot & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_privateDataSlot, rhs.m_privateDataSlot ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::PrivateDataSlot m_privateDataSlot = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPool.html + class QueryPool + { + public: + using CType = VkQueryPool; + using CppType = VULKAN_HPP_NAMESPACE::QueryPool; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eQueryPool; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eQueryPool; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + QueryPool( Device const & device, QueryPoolCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createQueryPool( createInfo, allocator ); + } +# endif + + QueryPool( Device const & device, VkQueryPool queryPool, Optional allocator = nullptr ) + : m_device( device ) + , m_queryPool( queryPool ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + QueryPool( std::nullptr_t ) {} + + ~QueryPool() + { + clear(); + } + + QueryPool() = delete; + QueryPool( QueryPool const & ) = delete; + + QueryPool( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_queryPool( exchange( rhs.m_queryPool, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + QueryPool & operator=( QueryPool const & ) = delete; + + QueryPool & operator=( QueryPool && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_queryPool, rhs.m_queryPool ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::QueryPool const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_queryPool; + } + + VULKAN_HPP_NAMESPACE::QueryPool const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_queryPool ); + } + + operator VULKAN_HPP_NAMESPACE::QueryPool() const VULKAN_HPP_NOEXCEPT + { + return m_queryPool; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_queryPool ) + { + getDispatcher()->vkDestroyQueryPool( + static_cast( m_device ), static_cast( m_queryPool ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_queryPool = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::QueryPool release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_queryPool, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( QueryPool & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_queryPool, rhs.m_queryPool ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + VULKAN_HPP_NODISCARD Result getResults( + uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void * pData, DeviceSize stride, QueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + template + VULKAN_HPP_NODISCARD ResultValue> getResults( + uint32_t firstQuery, uint32_t queryCount, size_t dataSize, DeviceSize stride, QueryResultFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + template + VULKAN_HPP_NODISCARD ResultValue + getResult( uint32_t firstQuery, uint32_t queryCount, DeviceSize stride, QueryResultFlags flags VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + //=== VK_VERSION_1_2 === + + // wrapper function for command vkResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPool.html + void reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_EXT_host_query_reset === + + // wrapper function for command vkResetQueryPoolEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPoolEXT.html + void resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::QueryPool m_queryPool = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueue.html + class Queue + { + public: + using CType = VkQueue; + using CppType = VULKAN_HPP_NAMESPACE::Queue; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eQueue; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eQueue; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Queue( Device const & device, uint32_t queueFamilyIndex, uint32_t queueIndex ) + { + *this = device.getQueue( queueFamilyIndex, queueIndex ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Queue( Device const & device, DeviceQueueInfo2 const & queueInfo ) + { + *this = device.getQueue2( queueInfo ); + } +# endif + + Queue( Device const & device, VkQueue queue ) : m_queue( queue ), m_dispatcher( device.getDispatcher() ) {} + + Queue( std::nullptr_t ) {} + + ~Queue() + { + clear(); + } + + Queue() = delete; + + Queue( Queue const & rhs ) : m_queue( rhs.m_queue ), m_dispatcher( rhs.m_dispatcher ) {} + + Queue( Queue && rhs ) VULKAN_HPP_NOEXCEPT + : m_queue( exchange( rhs.m_queue, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + Queue & operator=( Queue const & rhs ) + { + m_queue = rhs.m_queue; + m_dispatcher = rhs.m_dispatcher; + return *this; + } + + Queue & operator=( Queue && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_queue, rhs.m_queue ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Queue const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_queue; + } + + VULKAN_HPP_NAMESPACE::Queue const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_queue ); + } + + operator VULKAN_HPP_NAMESPACE::Queue() const VULKAN_HPP_NOEXCEPT + { + return m_queue; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + m_queue = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Queue release() + { + m_dispatcher = nullptr; + return exchange( m_queue, nullptr ); + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( Queue & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_queue, rhs.m_queue ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkQueueSubmit, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit.html + typename ResultValueType::type submit( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + // wrapper function for command vkQueueWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueWaitIdle.html + typename ResultValueType::type waitIdle() const; + + // wrapper function for command vkQueueBindSparse, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBindSparse.html + typename ResultValueType::type bindSparse( ArrayProxy const & bindInfo, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + //=== VK_VERSION_1_3 === + + // wrapper function for command vkQueueSubmit2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2.html + typename ResultValueType::type submit2( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + //=== VK_KHR_swapchain === + + // wrapper function for command vkQueuePresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueuePresentKHR.html + VULKAN_HPP_NODISCARD Result presentKHR( PresentInfoKHR const & presentInfo ) const; + + //=== VK_EXT_debug_utils === + + // wrapper function for command vkQueueBeginDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBeginDebugUtilsLabelEXT.html + void beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkQueueEndDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueEndDebugUtilsLabelEXT.html + void endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkQueueInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueInsertDebugUtilsLabelEXT.html + void insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_NV_device_diagnostic_checkpoints === + + // wrapper function for command vkGetQueueCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointDataNV.html + VULKAN_HPP_NODISCARD std::vector getCheckpointDataNV() const; + + // wrapper function for command vkGetQueueCheckpointData2NV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointData2NV.html + VULKAN_HPP_NODISCARD std::vector getCheckpointData2NV() const; + + //=== VK_INTEL_performance_query === + + // wrapper function for command vkQueueSetPerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSetPerformanceConfigurationINTEL.html + typename ResultValueType::type setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const; + + //=== VK_KHR_synchronization2 === + + // wrapper function for command vkQueueSubmit2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2KHR.html + typename ResultValueType::type submit2KHR( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + //=== VK_NV_low_latency2 === + + // wrapper function for command vkQueueNotifyOutOfBandNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueNotifyOutOfBandNV.html + void notifyOutOfBandNV( OutOfBandQueueTypeInfoNV const & queueTypeInfo ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Queue m_queue = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPass.html + class RenderPass + { + public: + using CType = VkRenderPass; + using CppType = VULKAN_HPP_NAMESPACE::RenderPass; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eRenderPass; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eRenderPass; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + RenderPass( Device const & device, RenderPassCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createRenderPass( createInfo, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + RenderPass( Device const & device, RenderPassCreateInfo2 const & createInfo, Optional allocator = nullptr ) + { + *this = device.createRenderPass2( createInfo, allocator ); + } +# endif + + RenderPass( Device const & device, VkRenderPass renderPass, Optional allocator = nullptr ) + : m_device( device ) + , m_renderPass( renderPass ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + RenderPass( std::nullptr_t ) {} + + ~RenderPass() + { + clear(); + } + + RenderPass() = delete; + RenderPass( RenderPass const & ) = delete; + + RenderPass( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_renderPass( exchange( rhs.m_renderPass, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + RenderPass & operator=( RenderPass const & ) = delete; + + RenderPass & operator=( RenderPass && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_renderPass, rhs.m_renderPass ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::RenderPass const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_renderPass; + } + + VULKAN_HPP_NAMESPACE::RenderPass const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_renderPass ); + } + + operator VULKAN_HPP_NAMESPACE::RenderPass() const VULKAN_HPP_NOEXCEPT + { + return m_renderPass; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_renderPass ) + { + getDispatcher()->vkDestroyRenderPass( + static_cast( m_device ), static_cast( m_renderPass ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_renderPass = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::RenderPass release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_renderPass, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( RenderPass & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_renderPass, rhs.m_renderPass ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkGetRenderAreaGranularity, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderAreaGranularity.html + VULKAN_HPP_NODISCARD Extent2D getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT; + + //=== VK_HUAWEI_subpass_shading === + + // wrapper function for command vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getSubpassShadingMaxWorkgroupSizeHUAWEI() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::RenderPass m_renderPass = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSampler.html + class Sampler + { + public: + using CType = VkSampler; + using CppType = VULKAN_HPP_NAMESPACE::Sampler; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSampler; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSampler; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Sampler( Device const & device, SamplerCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createSampler( createInfo, allocator ); + } +# endif + + Sampler( Device const & device, VkSampler sampler, Optional allocator = nullptr ) + : m_device( device ), m_sampler( sampler ), m_allocator( static_cast( allocator ) ), m_dispatcher( device.getDispatcher() ) + { + } + + Sampler( std::nullptr_t ) {} + + ~Sampler() + { + clear(); + } + + Sampler() = delete; + Sampler( Sampler const & ) = delete; + + Sampler( Sampler && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_sampler( exchange( rhs.m_sampler, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + Sampler & operator=( Sampler const & ) = delete; + + Sampler & operator=( Sampler && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_sampler, rhs.m_sampler ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Sampler const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_sampler; + } + + VULKAN_HPP_NAMESPACE::Sampler const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_sampler ); + } + + operator VULKAN_HPP_NAMESPACE::Sampler() const VULKAN_HPP_NOEXCEPT + { + return m_sampler; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_sampler ) + { + getDispatcher()->vkDestroySampler( + static_cast( m_device ), static_cast( m_sampler ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_sampler = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Sampler release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_sampler, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( Sampler & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_sampler, rhs.m_sampler ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Sampler m_sampler = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkSamplerYcbcrConversion, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerYcbcrConversion.html + class SamplerYcbcrConversion + { + public: + using CType = VkSamplerYcbcrConversion; + using CppType = VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSamplerYcbcrConversion; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSamplerYcbcrConversion; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + SamplerYcbcrConversion( Device const & device, + SamplerYcbcrConversionCreateInfo const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createSamplerYcbcrConversion( createInfo, allocator ); + } +# endif + + SamplerYcbcrConversion( Device const & device, VkSamplerYcbcrConversion ycbcrConversion, Optional allocator = nullptr ) + : m_device( device ) + , m_samplerYcbcrConversion( ycbcrConversion ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + SamplerYcbcrConversion( std::nullptr_t ) {} + + ~SamplerYcbcrConversion() + { + clear(); + } + + SamplerYcbcrConversion() = delete; + SamplerYcbcrConversion( SamplerYcbcrConversion const & ) = delete; + + SamplerYcbcrConversion( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_samplerYcbcrConversion( exchange( rhs.m_samplerYcbcrConversion, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + SamplerYcbcrConversion & operator=( SamplerYcbcrConversion const & ) = delete; + + SamplerYcbcrConversion & operator=( SamplerYcbcrConversion && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_samplerYcbcrConversion, rhs.m_samplerYcbcrConversion ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion; + } + + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_samplerYcbcrConversion ); + } + + operator VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion() const VULKAN_HPP_NOEXCEPT + { + return m_samplerYcbcrConversion; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_samplerYcbcrConversion ) + { + getDispatcher()->vkDestroySamplerYcbcrConversion( static_cast( m_device ), + static_cast( m_samplerYcbcrConversion ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_samplerYcbcrConversion = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_samplerYcbcrConversion, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( SamplerYcbcrConversion & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_samplerYcbcrConversion, rhs.m_samplerYcbcrConversion ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion m_samplerYcbcrConversion = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphore.html + class Semaphore + { + public: + using CType = VkSemaphore; + using CppType = VULKAN_HPP_NAMESPACE::Semaphore; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSemaphore; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSemaphore; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + Semaphore( Device const & device, SemaphoreCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createSemaphore( createInfo, allocator ); + } +# endif + + Semaphore( Device const & device, VkSemaphore semaphore, Optional allocator = nullptr ) + : m_device( device ) + , m_semaphore( semaphore ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + Semaphore( std::nullptr_t ) {} + + ~Semaphore() + { + clear(); + } + + Semaphore() = delete; + Semaphore( Semaphore const & ) = delete; + + Semaphore( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_semaphore( exchange( rhs.m_semaphore, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + Semaphore & operator=( Semaphore const & ) = delete; + + Semaphore & operator=( Semaphore && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_semaphore, rhs.m_semaphore ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::Semaphore const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_semaphore; + } + + VULKAN_HPP_NAMESPACE::Semaphore const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_semaphore ); + } + + operator VULKAN_HPP_NAMESPACE::Semaphore() const VULKAN_HPP_NOEXCEPT + { + return m_semaphore; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_semaphore ) + { + getDispatcher()->vkDestroySemaphore( + static_cast( m_device ), static_cast( m_semaphore ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_semaphore = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::Semaphore release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_semaphore, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( Semaphore & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_semaphore, rhs.m_semaphore ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_VERSION_1_2 === + + // wrapper function for command vkGetSemaphoreCounterValue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValue.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getCounterValue() const; + + //=== VK_KHR_timeline_semaphore === + + // wrapper function for command vkGetSemaphoreCounterValueKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValueKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getCounterValueKHR() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::Semaphore m_semaphore = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkShaderEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderEXT.html + class ShaderEXT + { + public: + using CType = VkShaderEXT; + using CppType = VULKAN_HPP_NAMESPACE::ShaderEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eShaderEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + ShaderEXT( Device const & device, ShaderCreateInfoEXT const & createInfo, Optional allocator = nullptr ) + { + *this = device.createShaderEXT( createInfo, allocator ); + } +# endif + + ShaderEXT( Device const & device, VkShaderEXT shader, Optional allocator = nullptr, Result successCode = Result::eSuccess ) + : m_device( device ) + , m_shaderEXT( shader ) + , m_allocator( static_cast( allocator ) ) + , m_constructorSuccessCode( successCode ) + , m_dispatcher( device.getDispatcher() ) + { + } + + ShaderEXT( std::nullptr_t ) {} + + ~ShaderEXT() + { + clear(); + } + + ShaderEXT() = delete; + ShaderEXT( ShaderEXT const & ) = delete; + + ShaderEXT( ShaderEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_shaderEXT( exchange( rhs.m_shaderEXT, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_constructorSuccessCode( exchange( rhs.m_constructorSuccessCode, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + ShaderEXT & operator=( ShaderEXT const & ) = delete; + + ShaderEXT & operator=( ShaderEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_shaderEXT, rhs.m_shaderEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::ShaderEXT const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_shaderEXT; + } + + VULKAN_HPP_NAMESPACE::ShaderEXT const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_shaderEXT ); + } + + operator VULKAN_HPP_NAMESPACE::ShaderEXT() const VULKAN_HPP_NOEXCEPT + { + return m_shaderEXT; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_shaderEXT ) + { + getDispatcher()->vkDestroyShaderEXT( + static_cast( m_device ), static_cast( m_shaderEXT ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_shaderEXT = nullptr; + m_allocator = nullptr; + m_constructorSuccessCode = Result::eErrorUnknown; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::ShaderEXT release() + { + m_device = nullptr; + m_allocator = nullptr; + m_constructorSuccessCode = Result::eErrorUnknown; + m_dispatcher = nullptr; + return exchange( m_shaderEXT, nullptr ); + } + + Result getConstructorSuccessCode() const + { + return m_constructorSuccessCode; + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( ShaderEXT & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_shaderEXT, rhs.m_shaderEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_constructorSuccessCode, rhs.m_constructorSuccessCode ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_EXT_shader_object === + + // wrapper function for command vkGetShaderBinaryDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderBinaryDataEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getBinaryData() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::ShaderEXT m_shaderEXT = {}; + AllocationCallbacks const * m_allocator = {}; + Result m_constructorSuccessCode = Result::eErrorUnknown; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class ShaderEXTs : public std::vector + { + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + ShaderEXTs( Device const & device, ArrayProxy const & createInfos, Optional allocator = nullptr ) + { + *this = device.createShadersEXT( createInfos, allocator ); + } +# endif + + ShaderEXTs( std::nullptr_t ) {} + + ShaderEXTs() = delete; + ShaderEXTs( ShaderEXTs const & ) = delete; + ShaderEXTs( ShaderEXTs && rhs ) = default; + ShaderEXTs & operator=( ShaderEXTs const & ) = delete; + ShaderEXTs & operator=( ShaderEXTs && rhs ) = default; + + ShaderEXTs( std::vector && rhs ) + { + std::swap( *this, rhs ); + } + }; + + // wrapper class for handle VkShaderInstrumentationARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderInstrumentationARM.html + class ShaderInstrumentationARM + { + public: + using CType = VkShaderInstrumentationARM; + using CppType = VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eShaderInstrumentationARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + ShaderInstrumentationARM( Device const & device, + ShaderInstrumentationCreateInfoARM const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createShaderInstrumentationARM( createInfo, allocator ); + } +# endif + + ShaderInstrumentationARM( Device const & device, VkShaderInstrumentationARM instrumentation, Optional allocator = nullptr ) + : m_device( device ) + , m_shaderInstrumentationARM( instrumentation ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + ShaderInstrumentationARM( std::nullptr_t ) {} + + ~ShaderInstrumentationARM() + { + clear(); + } + + ShaderInstrumentationARM() = delete; + ShaderInstrumentationARM( ShaderInstrumentationARM const & ) = delete; + + ShaderInstrumentationARM( ShaderInstrumentationARM && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_shaderInstrumentationARM( exchange( rhs.m_shaderInstrumentationARM, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + ShaderInstrumentationARM & operator=( ShaderInstrumentationARM const & ) = delete; + + ShaderInstrumentationARM & operator=( ShaderInstrumentationARM && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_shaderInstrumentationARM, rhs.m_shaderInstrumentationARM ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_shaderInstrumentationARM; + } + + VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_shaderInstrumentationARM ); + } + + operator VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM() const VULKAN_HPP_NOEXCEPT + { + return m_shaderInstrumentationARM; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_shaderInstrumentationARM ) + { + getDispatcher()->vkDestroyShaderInstrumentationARM( static_cast( m_device ), + static_cast( m_shaderInstrumentationARM ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_shaderInstrumentationARM = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_shaderInstrumentationARM, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( ShaderInstrumentationARM & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_shaderInstrumentationARM, rhs.m_shaderInstrumentationARM ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_ARM_shader_instrumentation === + + // wrapper function for command vkGetShaderInstrumentationValuesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInstrumentationValuesARM.html + VULKAN_HPP_NODISCARD Result getValues( uint32_t * pMetricBlockCount, + void * pMetricValues, + ShaderInstrumentationValuesFlagsARM flags ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkClearShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkClearShaderInstrumentationMetricsARM.html + void clearMetrics() const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM m_shaderInstrumentationARM = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderModule.html + class ShaderModule + { + public: + using CType = VkShaderModule; + using CppType = VULKAN_HPP_NAMESPACE::ShaderModule; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eShaderModule; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eShaderModule; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + ShaderModule( Device const & device, ShaderModuleCreateInfo const & createInfo, Optional allocator = nullptr ) + { + *this = device.createShaderModule( createInfo, allocator ); + } +# endif + + ShaderModule( Device const & device, VkShaderModule shaderModule, Optional allocator = nullptr ) + : m_device( device ) + , m_shaderModule( shaderModule ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + ShaderModule( std::nullptr_t ) {} + + ~ShaderModule() + { + clear(); + } + + ShaderModule() = delete; + ShaderModule( ShaderModule const & ) = delete; + + ShaderModule( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_shaderModule( exchange( rhs.m_shaderModule, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + ShaderModule & operator=( ShaderModule const & ) = delete; + + ShaderModule & operator=( ShaderModule && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_shaderModule, rhs.m_shaderModule ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::ShaderModule const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_shaderModule; + } + + VULKAN_HPP_NAMESPACE::ShaderModule const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_shaderModule ); + } + + operator VULKAN_HPP_NAMESPACE::ShaderModule() const VULKAN_HPP_NOEXCEPT + { + return m_shaderModule; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_shaderModule ) + { + getDispatcher()->vkDestroyShaderModule( + static_cast( m_device ), static_cast( m_shaderModule ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_shaderModule = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::ShaderModule release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_shaderModule, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( ShaderModule & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_shaderModule, rhs.m_shaderModule ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_EXT_shader_module_identifier === + + // wrapper function for command vkGetShaderModuleIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleIdentifierEXT.html + VULKAN_HPP_NODISCARD ShaderModuleIdentifierEXT getIdentifierEXT() const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::ShaderModule m_shaderModule = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceKHR.html + class SurfaceKHR + { + public: + using CType = VkSurfaceKHR; + using CppType = VULKAN_HPP_NAMESPACE::SurfaceKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSurfaceKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSurfaceKHR; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + SurfaceKHR( Instance const & instance, AndroidSurfaceCreateInfoKHR const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createAndroidSurfaceKHR( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + SurfaceKHR( Instance const & instance, DirectFBSurfaceCreateInfoEXT const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createDirectFBSurfaceEXT( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + SurfaceKHR( Instance const & instance, DisplaySurfaceCreateInfoKHR const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createDisplayPlaneSurfaceKHR( createInfo, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + SurfaceKHR( Instance const & instance, HeadlessSurfaceCreateInfoEXT const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createHeadlessSurfaceEXT( createInfo, allocator ); + } +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_IOS_MVK ) + SurfaceKHR( Instance const & instance, IOSSurfaceCreateInfoMVK const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createIOSSurfaceMVK( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_IOS_MVK*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_FUCHSIA ) + SurfaceKHR( Instance const & instance, ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createImagePipeSurfaceFUCHSIA( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + SurfaceKHR( Instance const & instance, MacOSSurfaceCreateInfoMVK const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createMacOSSurfaceMVK( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_METAL_EXT ) + SurfaceKHR( Instance const & instance, MetalSurfaceCreateInfoEXT const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createMetalSurfaceEXT( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_METAL_EXT*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + SurfaceKHR( Instance const & instance, ScreenSurfaceCreateInfoQNX const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createScreenSurfaceQNX( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_GGP ) + SurfaceKHR( Instance const & instance, StreamDescriptorSurfaceCreateInfoGGP const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createStreamDescriptorSurfaceGGP( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_GGP*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_OHOS ) + SurfaceKHR( Instance const & instance, SurfaceCreateInfoOHOS const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createSurfaceOHOS( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_OHOS*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_UBM_SEC ) + SurfaceKHR( Instance const & instance, UbmSurfaceCreateInfoSEC const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createUbmSurfaceSEC( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_UBM_SEC*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_VI_NN ) + SurfaceKHR( Instance const & instance, ViSurfaceCreateInfoNN const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createViSurfaceNN( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_VI_NN*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + SurfaceKHR( Instance const & instance, WaylandSurfaceCreateInfoKHR const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createWaylandSurfaceKHR( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + SurfaceKHR( Instance const & instance, Win32SurfaceCreateInfoKHR const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createWin32SurfaceKHR( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_XCB_KHR ) + SurfaceKHR( Instance const & instance, XcbSurfaceCreateInfoKHR const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createXcbSurfaceKHR( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_XCB_KHR*/ +# endif + +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + SurfaceKHR( Instance const & instance, XlibSurfaceCreateInfoKHR const & createInfo, Optional allocator = nullptr ) + { + *this = instance.createXlibSurfaceKHR( createInfo, allocator ); + } +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ +# endif + + SurfaceKHR( Instance const & instance, VkSurfaceKHR surface, Optional allocator = nullptr ) + : m_instance( instance ) + , m_surfaceKHR( surface ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( instance.getDispatcher() ) + { + } + + SurfaceKHR( std::nullptr_t ) {} + + ~SurfaceKHR() + { + clear(); + } + + SurfaceKHR() = delete; + SurfaceKHR( SurfaceKHR const & ) = delete; + + SurfaceKHR( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_instance( exchange( rhs.m_instance, {} ) ) + , m_surfaceKHR( exchange( rhs.m_surfaceKHR, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + SurfaceKHR & operator=( SurfaceKHR const & ) = delete; + + SurfaceKHR & operator=( SurfaceKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_instance, rhs.m_instance ); + std::swap( m_surfaceKHR, rhs.m_surfaceKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::SurfaceKHR const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR; + } + + VULKAN_HPP_NAMESPACE::SurfaceKHR const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_surfaceKHR ); + } + + operator VULKAN_HPP_NAMESPACE::SurfaceKHR() const VULKAN_HPP_NOEXCEPT + { + return m_surfaceKHR; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_surfaceKHR ) + { + getDispatcher()->vkDestroySurfaceKHR( + static_cast( m_instance ), static_cast( m_surfaceKHR ), reinterpret_cast( m_allocator ) ); + } + m_instance = nullptr; + m_surfaceKHR = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::SurfaceKHR release() + { + m_instance = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_surfaceKHR, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Instance getInstance() const + { + return m_instance; + } + + detail::InstanceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( SurfaceKHR & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_instance, rhs.m_instance ); + std::swap( m_surfaceKHR, rhs.m_surfaceKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Instance m_instance = {}; + VULKAN_HPP_NAMESPACE::SurfaceKHR m_surfaceKHR = {}; + AllocationCallbacks const * m_allocator = {}; + detail::InstanceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainKHR.html + class SwapchainKHR + { + public: + using CType = VkSwapchainKHR; + using CppType = VULKAN_HPP_NAMESPACE::SwapchainKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eSwapchainKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eSwapchainKHR; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + SwapchainKHR( Device const & device, SwapchainCreateInfoKHR const & createInfo, Optional allocator = nullptr ) + { + *this = device.createSwapchainKHR( createInfo, allocator ); + } +# endif + + SwapchainKHR( Device const & device, VkSwapchainKHR swapchain, Optional allocator = nullptr ) + : m_device( device ) + , m_swapchainKHR( swapchain ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + SwapchainKHR( std::nullptr_t ) {} + + ~SwapchainKHR() + { + clear(); + } + + SwapchainKHR() = delete; + SwapchainKHR( SwapchainKHR const & ) = delete; + + SwapchainKHR( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_swapchainKHR( exchange( rhs.m_swapchainKHR, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + SwapchainKHR & operator=( SwapchainKHR const & ) = delete; + + SwapchainKHR & operator=( SwapchainKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_swapchainKHR, rhs.m_swapchainKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::SwapchainKHR const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR; + } + + VULKAN_HPP_NAMESPACE::SwapchainKHR const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_swapchainKHR ); + } + + operator VULKAN_HPP_NAMESPACE::SwapchainKHR() const VULKAN_HPP_NOEXCEPT + { + return m_swapchainKHR; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_swapchainKHR ) + { + getDispatcher()->vkDestroySwapchainKHR( + static_cast( m_device ), static_cast( m_swapchainKHR ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_swapchainKHR = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::SwapchainKHR release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_swapchainKHR, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( SwapchainKHR & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_swapchainKHR, rhs.m_swapchainKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_KHR_swapchain === + + // wrapper function for command vkGetSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainImagesKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getImages() const; + + // wrapper function for command vkAcquireNextImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImageKHR.html + VULKAN_HPP_NODISCARD ResultValue acquireNextImage( uint64_t timeout, + VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ), + VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ASSIGNMENT( {} ) ) const; + + //=== VK_EXT_display_control === + + // wrapper function for command vkGetSwapchainCounterEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainCounterEXT.html + VULKAN_HPP_NODISCARD +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + ResultValue +# else + typename ResultValueType::type +# endif + getCounterEXT( SurfaceCounterFlagBitsEXT counter ) const; + + //=== VK_GOOGLE_display_timing === + + // wrapper function for command vkGetRefreshCycleDurationGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRefreshCycleDurationGOOGLE.html + VULKAN_HPP_NODISCARD typename ResultValueType::type getRefreshCycleDurationGOOGLE() const; + + // wrapper function for command vkGetPastPresentationTimingGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingGOOGLE.html + VULKAN_HPP_NODISCARD +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + ResultValue> +# else + typename ResultValueType>::type +# endif + getPastPresentationTimingGOOGLE() const; + + //=== VK_KHR_shared_presentable_image === + + // wrapper function for command vkGetSwapchainStatusKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainStatusKHR.html + VULKAN_HPP_NODISCARD Result getStatus() const; + + //=== VK_EXT_present_timing === + + // wrapper function for command vkSetSwapchainPresentTimingQueueSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetSwapchainPresentTimingQueueSizeEXT.html + VULKAN_HPP_NODISCARD Result setPresentTimingQueueSizeEXT( uint32_t size ) const; + + // wrapper function for command vkGetSwapchainTimingPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainTimingPropertiesEXT.html + VULKAN_HPP_NODISCARD ResultValue> getTimingPropertiesEXT() const; + + // wrapper function for command vkGetSwapchainTimeDomainPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainTimeDomainPropertiesEXT.html + VULKAN_HPP_NODISCARD Result getTimeDomainPropertiesEXT( SwapchainTimeDomainPropertiesEXT * pSwapchainTimeDomainProperties, + uint64_t * pTimeDomainsCounter ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_AMD_display_native_hdr === + + // wrapper function for command vkSetLocalDimmingAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLocalDimmingAMD.html + void setLocalDimmingAMD( Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT; + + //=== VK_KHR_present_wait === + + // wrapper function for command vkWaitForPresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresentKHR.html + VULKAN_HPP_NODISCARD Result waitForPresent( uint64_t presentId, uint64_t timeout ) const; + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + // wrapper function for command vkAcquireFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireFullScreenExclusiveModeEXT.html + typename ResultValueType::type acquireFullScreenExclusiveModeEXT() const; + + // wrapper function for command vkReleaseFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseFullScreenExclusiveModeEXT.html + typename ResultValueType::type releaseFullScreenExclusiveModeEXT() const; +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_present_wait2 === + + // wrapper function for command vkWaitForPresent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresent2KHR.html + VULKAN_HPP_NODISCARD Result waitForPresent2( PresentWait2InfoKHR const & presentWait2Info ) const; + + //=== VK_NV_low_latency2 === + + // wrapper function for command vkSetLatencySleepModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencySleepModeNV.html + typename ResultValueType::type setLatencySleepModeNV( LatencySleepModeInfoNV const & sleepModeInfo ) const; + + // wrapper function for command vkLatencySleepNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkLatencySleepNV.html + typename ResultValueType::type latencySleepNV( LatencySleepInfoNV const & sleepInfo ) const; + + // wrapper function for command vkSetLatencyMarkerNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencyMarkerNV.html + void setLatencyMarkerNV( SetLatencyMarkerInfoNV const & latencyMarkerInfo ) const VULKAN_HPP_NOEXCEPT; + + // wrapper function for command vkGetLatencyTimingsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetLatencyTimingsNV.html + void getLatencyTimingsNV( GetLatencyMarkerInfoNV * pLatencyMarkerInfo ) const VULKAN_HPP_NOEXCEPT; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::SwapchainKHR m_swapchainKHR = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + class SwapchainKHRs : public std::vector + { + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + SwapchainKHRs( Device const & device, ArrayProxy const & createInfos, Optional allocator = nullptr ) + { + *this = device.createSharedSwapchainsKHR( createInfos, allocator ); + } +# endif + + SwapchainKHRs( std::nullptr_t ) {} + + SwapchainKHRs() = delete; + SwapchainKHRs( SwapchainKHRs const & ) = delete; + SwapchainKHRs( SwapchainKHRs && rhs ) = default; + SwapchainKHRs & operator=( SwapchainKHRs const & ) = delete; + SwapchainKHRs & operator=( SwapchainKHRs && rhs ) = default; + + SwapchainKHRs( std::vector && rhs ) + { + std::swap( *this, rhs ); + } + }; + + // wrapper class for handle VkTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorARM.html + class TensorARM + { + public: + using CType = VkTensorARM; + using CppType = VULKAN_HPP_NAMESPACE::TensorARM; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eTensorARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + TensorARM( Device const & device, TensorCreateInfoARM const & createInfo, Optional allocator = nullptr ) + { + *this = device.createTensorARM( createInfo, allocator ); + } +# endif + + TensorARM( Device const & device, VkTensorARM tensor, Optional allocator = nullptr ) + : m_device( device ) + , m_tensorARM( tensor ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + TensorARM( std::nullptr_t ) {} + + ~TensorARM() + { + clear(); + } + + TensorARM() = delete; + TensorARM( TensorARM const & ) = delete; + + TensorARM( TensorARM && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_tensorARM( exchange( rhs.m_tensorARM, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + TensorARM & operator=( TensorARM const & ) = delete; + + TensorARM & operator=( TensorARM && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_tensorARM, rhs.m_tensorARM ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::TensorARM const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_tensorARM; + } + + VULKAN_HPP_NAMESPACE::TensorARM const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_tensorARM ); + } + + operator VULKAN_HPP_NAMESPACE::TensorARM() const VULKAN_HPP_NOEXCEPT + { + return m_tensorARM; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_tensorARM ) + { + getDispatcher()->vkDestroyTensorARM( + static_cast( m_device ), static_cast( m_tensorARM ), reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_tensorARM = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::TensorARM release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_tensorARM, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( TensorARM & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_tensorARM, rhs.m_tensorARM ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::TensorARM m_tensorARM = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorViewARM.html + class TensorViewARM + { + public: + using CType = VkTensorViewARM; + using CppType = VULKAN_HPP_NAMESPACE::TensorViewARM; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eTensorViewARM; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + TensorViewARM( Device const & device, TensorViewCreateInfoARM const & createInfo, Optional allocator = nullptr ) + { + *this = device.createTensorViewARM( createInfo, allocator ); + } +# endif + + TensorViewARM( Device const & device, VkTensorViewARM tensorView, Optional allocator = nullptr ) + : m_device( device ) + , m_tensorViewARM( tensorView ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + TensorViewARM( std::nullptr_t ) {} + + ~TensorViewARM() + { + clear(); + } + + TensorViewARM() = delete; + TensorViewARM( TensorViewARM const & ) = delete; + + TensorViewARM( TensorViewARM && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_tensorViewARM( exchange( rhs.m_tensorViewARM, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + TensorViewARM & operator=( TensorViewARM const & ) = delete; + + TensorViewARM & operator=( TensorViewARM && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_tensorViewARM, rhs.m_tensorViewARM ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::TensorViewARM const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_tensorViewARM; + } + + VULKAN_HPP_NAMESPACE::TensorViewARM const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_tensorViewARM ); + } + + operator VULKAN_HPP_NAMESPACE::TensorViewARM() const VULKAN_HPP_NOEXCEPT + { + return m_tensorViewARM; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_tensorViewARM ) + { + getDispatcher()->vkDestroyTensorViewARM( static_cast( m_device ), + static_cast( m_tensorViewARM ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_tensorViewARM = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::TensorViewARM release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_tensorViewARM, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( TensorViewARM & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_tensorViewARM, rhs.m_tensorViewARM ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::TensorViewARM m_tensorViewARM = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationCacheEXT.html + class ValidationCacheEXT + { + public: + using CType = VkValidationCacheEXT; + using CppType = VULKAN_HPP_NAMESPACE::ValidationCacheEXT; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eValidationCacheEXT; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eValidationCacheEXT; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + ValidationCacheEXT( Device const & device, ValidationCacheCreateInfoEXT const & createInfo, Optional allocator = nullptr ) + { + *this = device.createValidationCacheEXT( createInfo, allocator ); + } +# endif + + ValidationCacheEXT( Device const & device, VkValidationCacheEXT validationCache, Optional allocator = nullptr ) + : m_device( device ) + , m_validationCacheEXT( validationCache ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + ValidationCacheEXT( std::nullptr_t ) {} + + ~ValidationCacheEXT() + { + clear(); + } + + ValidationCacheEXT() = delete; + ValidationCacheEXT( ValidationCacheEXT const & ) = delete; + + ValidationCacheEXT( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_validationCacheEXT( exchange( rhs.m_validationCacheEXT, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + ValidationCacheEXT & operator=( ValidationCacheEXT const & ) = delete; + + ValidationCacheEXT & operator=( ValidationCacheEXT && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_validationCacheEXT, rhs.m_validationCacheEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::ValidationCacheEXT const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT; + } + + VULKAN_HPP_NAMESPACE::ValidationCacheEXT const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_validationCacheEXT ); + } + + operator VULKAN_HPP_NAMESPACE::ValidationCacheEXT() const VULKAN_HPP_NOEXCEPT + { + return m_validationCacheEXT; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_validationCacheEXT ) + { + getDispatcher()->vkDestroyValidationCacheEXT( static_cast( m_device ), + static_cast( m_validationCacheEXT ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_validationCacheEXT = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::ValidationCacheEXT release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_validationCacheEXT, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( ValidationCacheEXT & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_validationCacheEXT, rhs.m_validationCacheEXT ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_EXT_validation_cache === + + // wrapper function for command vkMergeValidationCachesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergeValidationCachesEXT.html + typename ResultValueType::type merge( ArrayProxy const & srcCaches ) const; + + // wrapper function for command vkGetValidationCacheDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetValidationCacheDataEXT.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getData() const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::ValidationCacheEXT m_validationCacheEXT = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionKHR.html + class VideoSessionKHR + { + public: + using CType = VkVideoSessionKHR; + using CppType = VULKAN_HPP_NAMESPACE::VideoSessionKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eVideoSessionKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + VideoSessionKHR( Device const & device, VideoSessionCreateInfoKHR const & createInfo, Optional allocator = nullptr ) + { + *this = device.createVideoSessionKHR( createInfo, allocator ); + } +# endif + + VideoSessionKHR( Device const & device, VkVideoSessionKHR videoSession, Optional allocator = nullptr ) + : m_device( device ) + , m_videoSessionKHR( videoSession ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + VideoSessionKHR( std::nullptr_t ) {} + + ~VideoSessionKHR() + { + clear(); + } + + VideoSessionKHR() = delete; + VideoSessionKHR( VideoSessionKHR const & ) = delete; + + VideoSessionKHR( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_videoSessionKHR( exchange( rhs.m_videoSessionKHR, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + VideoSessionKHR & operator=( VideoSessionKHR const & ) = delete; + + VideoSessionKHR & operator=( VideoSessionKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_videoSessionKHR, rhs.m_videoSessionKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::VideoSessionKHR const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR; + } + + VULKAN_HPP_NAMESPACE::VideoSessionKHR const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_videoSessionKHR ); + } + + operator VULKAN_HPP_NAMESPACE::VideoSessionKHR() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionKHR; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_videoSessionKHR ) + { + getDispatcher()->vkDestroyVideoSessionKHR( static_cast( m_device ), + static_cast( m_videoSessionKHR ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_videoSessionKHR = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::VideoSessionKHR release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_videoSessionKHR, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( VideoSessionKHR & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_videoSessionKHR, rhs.m_videoSessionKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_KHR_video_queue === + + // wrapper function for command vkGetVideoSessionMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetVideoSessionMemoryRequirementsKHR.html + VULKAN_HPP_NODISCARD typename ResultValueType>::type getMemoryRequirements() const; + + // wrapper function for command vkBindVideoSessionMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindVideoSessionMemoryKHR.html + typename ResultValueType::type bindMemory( ArrayProxy const & bindSessionMemoryInfos ) const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::VideoSessionKHR m_videoSessionKHR = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // wrapper class for handle VkVideoSessionParametersKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionParametersKHR.html + class VideoSessionParametersKHR + { + public: + using CType = VkVideoSessionParametersKHR; + using CppType = VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR; + + static VULKAN_HPP_CONST_OR_CONSTEXPR ObjectType objectType = ObjectType::eVideoSessionParametersKHR; + static VULKAN_HPP_CONST_OR_CONSTEXPR DebugReportObjectTypeEXT debugReportObjectType = DebugReportObjectTypeEXT::eUnknown; + + public: +# if !defined( VULKAN_HPP_NO_EXCEPTIONS ) + VideoSessionParametersKHR( Device const & device, + VideoSessionParametersCreateInfoKHR const & createInfo, + Optional allocator = nullptr ) + { + *this = device.createVideoSessionParametersKHR( createInfo, allocator ); + } +# endif + + VideoSessionParametersKHR( Device const & device, + VkVideoSessionParametersKHR videoSessionParameters, + Optional allocator = nullptr ) + : m_device( device ) + , m_videoSessionParametersKHR( videoSessionParameters ) + , m_allocator( static_cast( allocator ) ) + , m_dispatcher( device.getDispatcher() ) + { + } + + VideoSessionParametersKHR( std::nullptr_t ) {} + + ~VideoSessionParametersKHR() + { + clear(); + } + + VideoSessionParametersKHR() = delete; + VideoSessionParametersKHR( VideoSessionParametersKHR const & ) = delete; + + VideoSessionParametersKHR( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT + : m_device( exchange( rhs.m_device, {} ) ) + , m_videoSessionParametersKHR( exchange( rhs.m_videoSessionParametersKHR, {} ) ) + , m_allocator( exchange( rhs.m_allocator, {} ) ) + , m_dispatcher( exchange( rhs.m_dispatcher, nullptr ) ) + { + } + + VideoSessionParametersKHR & operator=( VideoSessionParametersKHR const & ) = delete; + + VideoSessionParametersKHR & operator=( VideoSessionParametersKHR && rhs ) VULKAN_HPP_NOEXCEPT + { + if ( this != &rhs ) + { + std::swap( m_device, rhs.m_device ); + std::swap( m_videoSessionParametersKHR, rhs.m_videoSessionParametersKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + return *this; + } + + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const & operator*() const & VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR; + } + + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR const && operator*() const && VULKAN_HPP_NOEXCEPT + { + return std::move( m_videoSessionParametersKHR ); + } + + operator VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR() const VULKAN_HPP_NOEXCEPT + { + return m_videoSessionParametersKHR; + } + + void clear() VULKAN_HPP_NOEXCEPT + { + if ( m_videoSessionParametersKHR ) + { + getDispatcher()->vkDestroyVideoSessionParametersKHR( static_cast( m_device ), + static_cast( m_videoSessionParametersKHR ), + reinterpret_cast( m_allocator ) ); + } + m_device = nullptr; + m_videoSessionParametersKHR = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + } + + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR release() + { + m_device = nullptr; + m_allocator = nullptr; + m_dispatcher = nullptr; + return exchange( m_videoSessionParametersKHR, nullptr ); + } + + VULKAN_HPP_NAMESPACE::Device getDevice() const + { + return m_device; + } + + detail::DeviceDispatcher const * getDispatcher() const + { + VULKAN_HPP_ASSERT( m_dispatcher->getVkHeaderVersion() == VK_HEADER_VERSION ); + return m_dispatcher; + } + + void swap( VideoSessionParametersKHR & rhs ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_device, rhs.m_device ); + std::swap( m_videoSessionParametersKHR, rhs.m_videoSessionParametersKHR ); + std::swap( m_allocator, rhs.m_allocator ); + std::swap( m_dispatcher, rhs.m_dispatcher ); + } + + //=== VK_KHR_video_queue === + + // wrapper function for command vkUpdateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateVideoSessionParametersKHR.html + typename ResultValueType::type update( VideoSessionParametersUpdateInfoKHR const & updateInfo ) const; + + private: + VULKAN_HPP_NAMESPACE::Device m_device = {}; + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR m_videoSessionParametersKHR = {}; + AllocationCallbacks const * m_allocator = {}; + detail::DeviceDispatcher const * m_dispatcher = nullptr; + }; + + template <> + struct isVulkanRAIIHandleType + { + static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; + }; + + // operators to compare VULKAN_HPP_NAMESPACE::raii-handles +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + template ::value, bool>::type = 0> + auto operator<=>( T const & a, T const & b ) VULKAN_HPP_NOEXCEPT + { + return *a <=> *b; + } +# else + template ::value, bool>::type = 0> + bool operator<( T const & a, T const & b ) VULKAN_HPP_NOEXCEPT + { + return *a < *b; + } +# endif + + template ::value, bool>::type = 0> + bool operator==( T const & a, T const & b ) VULKAN_HPP_NOEXCEPT + { + return *a == *b; + } + + template ::value, bool>::type = 0> + bool operator!=( T const & a, T const & b ) VULKAN_HPP_NOEXCEPT + { + return *a != *b; + } + + template ::value, bool>::type = 0> + bool operator==( T const & v, std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + return !*v; + } + + template ::value, bool>::type = 0> + bool operator==( std::nullptr_t, T const & v ) VULKAN_HPP_NOEXCEPT + { + return !*v; + } + + template ::value, bool>::type = 0> + bool operator!=( T const & v, std::nullptr_t ) VULKAN_HPP_NOEXCEPT + { + return *v; + } + + template ::value, bool>::type = 0> + bool operator!=( std::nullptr_t, T const & v ) VULKAN_HPP_NOEXCEPT + { + return *v; + } + + //=========================== + //=== COMMAND Definitions === + //=========================== + + //=== VK_VERSION_1_0 === + + // wrapper function for command vkCreateInstance, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateInstance.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Context::createInstance( InstanceCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateInstance && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Instance instance; + Result result = static_cast( getDispatcher()->vkCreateInstance( reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &instance ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Context::createInstance" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Instance( *this, *reinterpret_cast( &instance ), allocator ) ); + } + + // wrapper function for command vkEnumeratePhysicalDevices, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDevices.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDevices() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDevices && "Function requires " ); + + std::vector physicalDevices; + uint32_t physicalDeviceCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkEnumeratePhysicalDevices( static_cast( m_instance ), &physicalDeviceCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceCount ) + { + physicalDevices.resize( physicalDeviceCount ); + result = static_cast( getDispatcher()->vkEnumeratePhysicalDevices( + static_cast( m_instance ), &physicalDeviceCount, reinterpret_cast( physicalDevices.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::enumeratePhysicalDevices" ); + std::vector physicalDevicesRAII; + if ( result == Result::eSuccess ) + { + physicalDevicesRAII.reserve( physicalDevices.size() ); + for ( auto & physicalDevice : physicalDevices ) + { + physicalDevicesRAII.emplace_back( *this, *reinterpret_cast( &physicalDevice ) ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( physicalDevicesRAII ) ); + } + + // wrapper function for command vkGetPhysicalDeviceFeatures, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures && "Function requires " ); + + PhysicalDeviceFeatures features; + getDispatcher()->vkGetPhysicalDeviceFeatures( static_cast( m_physicalDevice ), + reinterpret_cast( &features ) ); + + return features; + } + + // wrapper function for command vkGetPhysicalDeviceFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties && "Function requires " ); + + FormatProperties formatProperties; + getDispatcher()->vkGetPhysicalDeviceFormatProperties( + static_cast( m_physicalDevice ), static_cast( format ), reinterpret_cast( &formatProperties ) ); + + return formatProperties; + } + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties && + "Function requires " ); + + ImageFormatProperties imageFormatProperties; + Result result = static_cast( + getDispatcher()->vkGetPhysicalDeviceImageFormatProperties( static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + reinterpret_cast( &imageFormatProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( imageFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties && "Function requires " ); + + PhysicalDeviceProperties properties; + getDispatcher()->vkGetPhysicalDeviceProperties( static_cast( m_physicalDevice ), + reinterpret_cast( &properties ) ); + + return properties; + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties && + "Function requires " ); + + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties( static_cast( m_physicalDevice ), &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties( static_cast( m_physicalDevice ), + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + queueFamilyProperties.resize( queueFamilyPropertyCount ); + } + return queueFamilyProperties; + } + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties && "Function requires " ); + + PhysicalDeviceMemoryProperties memoryProperties; + getDispatcher()->vkGetPhysicalDeviceMemoryProperties( static_cast( m_physicalDevice ), + reinterpret_cast( &memoryProperties ) ); + + return memoryProperties; + } + + // wrapper function for command vkGetInstanceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetInstanceProcAddr.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_VoidFunction Instance::getProcAddr( std::string const & name ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetInstanceProcAddr && "Function requires " ); + + PFN_vkVoidFunction result = getDispatcher()->vkGetInstanceProcAddr( static_cast( m_instance ), name.c_str() ); + + return result; + } + + // wrapper function for command vkGetDeviceProcAddr, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceProcAddr.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PFN_VoidFunction Device::getProcAddr( std::string const & name ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceProcAddr && "Function requires " ); + + PFN_vkVoidFunction result = getDispatcher()->vkGetDeviceProcAddr( static_cast( m_device ), name.c_str() ); + + return result; + } + + // wrapper function for command vkCreateDevice, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDevice.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::createDevice( DeviceCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDevice && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Device device; + Result result = static_cast( getDispatcher()->vkCreateDevice( static_cast( m_physicalDevice ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &device ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::createDevice" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Device( *this, *reinterpret_cast( &device ), allocator ) ); + } + + // wrapper function for command vkEnumerateInstanceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceExtensionProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Context::enumerateInstanceExtensionProperties( Optional layerName ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateInstanceExtensionProperties && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = + static_cast( getDispatcher()->vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkEnumerateInstanceExtensionProperties( + layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Context::enumerateInstanceExtensionProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkEnumerateDeviceExtensionProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceExtensionProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::enumerateDeviceExtensionProperties( Optional layerName ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateDeviceExtensionProperties && "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkEnumerateDeviceExtensionProperties( + static_cast( m_physicalDevice ), layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = + static_cast( getDispatcher()->vkEnumerateDeviceExtensionProperties( static_cast( m_physicalDevice ), + layerName ? layerName->c_str() : nullptr, + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceExtensionProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkEnumerateInstanceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceLayerProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Context::enumerateInstanceLayerProperties() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateInstanceLayerProperties && "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( + getDispatcher()->vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Context::enumerateInstanceLayerProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkEnumerateDeviceLayerProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateDeviceLayerProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateDeviceLayerProperties() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateDeviceLayerProperties && "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkEnumerateDeviceLayerProperties( static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkEnumerateDeviceLayerProperties( + static_cast( m_physicalDevice ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::enumerateDeviceLayerProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDeviceQueue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceQueue && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Queue queue; + getDispatcher()->vkGetDeviceQueue( static_cast( m_device ), queueFamilyIndex, queueIndex, reinterpret_cast( &queue ) ); + + return Queue( *this, *reinterpret_cast( &queue ) ); + } + + // wrapper function for command vkQueueSubmit, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit.html + VULKAN_HPP_INLINE typename ResultValueType::type Queue::submit( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkQueueSubmit( + static_cast( m_queue ), submits.size(), reinterpret_cast( submits.data() ), static_cast( fence ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::submit" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkQueueWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueWaitIdle.html + VULKAN_HPP_INLINE typename ResultValueType::type Queue::waitIdle() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueWaitIdle && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkQueueWaitIdle( static_cast( m_queue ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::waitIdle" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkDeviceWaitIdle, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeviceWaitIdle.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::waitIdle() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDeviceWaitIdle && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkDeviceWaitIdle( static_cast( m_device ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::waitIdle" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkAllocateMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateMemory.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::allocateMemory( MemoryAllocateInfo const & allocateInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAllocateMemory && "Function requires " ); + + VULKAN_HPP_NAMESPACE::DeviceMemory memory; + Result result = static_cast( getDispatcher()->vkAllocateMemory( static_cast( m_device ), + reinterpret_cast( &allocateInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &memory ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::allocateMemory" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, DeviceMemory( *this, *reinterpret_cast( &memory ), allocator ) ); + } + + // wrapper function for command vkMapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + DeviceMemory::mapMemory( DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkMapMemory && "Function requires " ); + + void * pData; + Result result = static_cast( getDispatcher()->vkMapMemory( static_cast( m_device ), + static_cast( m_deviceMemory ), + static_cast( offset ), + static_cast( size ), + static_cast( flags ), + &pData ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DeviceMemory::mapMemory" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pData ) ); + } + + // wrapper function for command vkUnmapMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory.html + VULKAN_HPP_INLINE void DeviceMemory::unmapMemory() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUnmapMemory && "Function requires " ); + + getDispatcher()->vkUnmapMemory( static_cast( m_device ), static_cast( m_deviceMemory ) ); + } + + // wrapper function for command vkFlushMappedMemoryRanges, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkFlushMappedMemoryRanges.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::flushMappedMemoryRanges( ArrayProxy const & memoryRanges ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkFlushMappedMemoryRanges && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkFlushMappedMemoryRanges( + static_cast( m_device ), memoryRanges.size(), reinterpret_cast( memoryRanges.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::flushMappedMemoryRanges" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkInvalidateMappedMemoryRanges, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInvalidateMappedMemoryRanges.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::invalidateMappedMemoryRanges( ArrayProxy const & memoryRanges ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkInvalidateMappedMemoryRanges && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkInvalidateMappedMemoryRanges( + static_cast( m_device ), memoryRanges.size(), reinterpret_cast( memoryRanges.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::invalidateMappedMemoryRanges" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetDeviceMemoryCommitment, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryCommitment.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize DeviceMemory::getCommitment() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMemoryCommitment && "Function requires " ); + + DeviceSize committedMemoryInBytes; + getDispatcher()->vkGetDeviceMemoryCommitment( + static_cast( m_device ), static_cast( m_deviceMemory ), reinterpret_cast( &committedMemoryInBytes ) ); + + return committedMemoryInBytes; + } + + // wrapper function for command vkBindBufferMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory.html + VULKAN_HPP_INLINE typename ResultValueType::type Buffer::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, DeviceSize memoryOffset ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkBindBufferMemory( static_cast( m_device ), + static_cast( m_buffer ), + static_cast( memory ), + static_cast( memoryOffset ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Buffer::bindMemory" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkBindImageMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory.html + VULKAN_HPP_INLINE typename ResultValueType::type Image::bindMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, DeviceSize memoryOffset ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkBindImageMemory( static_cast( m_device ), + static_cast( m_image ), + static_cast( memory ), + static_cast( memoryOffset ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Image::bindMemory" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements Buffer::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements && "Function requires " ); + + MemoryRequirements memoryRequirements; + getDispatcher()->vkGetBufferMemoryRequirements( + static_cast( m_device ), static_cast( m_buffer ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements Image::getMemoryRequirements() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements && "Function requires " ); + + MemoryRequirements memoryRequirements; + getDispatcher()->vkGetImageMemoryRequirements( + static_cast( m_device ), static_cast( m_image ), reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Image::getSparseMemoryRequirements() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSparseMemoryRequirements && "Function requires " ); + + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + getDispatcher()->vkGetImageSparseMemoryRequirements( + static_cast( m_device ), static_cast( m_image ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + getDispatcher()->vkGetImageSparseMemoryRequirements( static_cast( m_device ), + static_cast( m_image ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties( + Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties( static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties( static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( samples ), + static_cast( usage ), + static_cast( tiling ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return properties; + } + + // wrapper function for command vkQueueBindSparse, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBindSparse.html + VULKAN_HPP_INLINE typename ResultValueType::type Queue::bindSparse( ArrayProxy const & bindInfo, + VULKAN_HPP_NAMESPACE::Fence fence ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueBindSparse && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkQueueBindSparse( + static_cast( m_queue ), bindInfo.size(), reinterpret_cast( bindInfo.data() ), static_cast( fence ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::bindSparse" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCreateFence, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFence.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createFence( FenceCreateInfo const & createInfo, Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateFence && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Fence fence; + Result result = static_cast( getDispatcher()->vkCreateFence( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &fence ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createFence" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Fence( *this, *reinterpret_cast( &fence ), allocator ) ); + } + + // wrapper function for command vkResetFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetFences.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::resetFences( ArrayProxy const & fences ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkResetFences && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkResetFences( static_cast( m_device ), fences.size(), reinterpret_cast( fences.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::resetFences" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetFenceStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceStatus.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Fence::getStatus() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceStatus && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkGetFenceStatus( static_cast( m_device ), static_cast( m_fence ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Fence::getStatus", { Result::eSuccess, Result::eNotReady } ); + + return static_cast( result ); + } + + // wrapper function for command vkWaitForFences, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForFences.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy const & fences, + Bool32 waitAll, + uint64_t timeout ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWaitForFences && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkWaitForFences( + static_cast( m_device ), fences.size(), reinterpret_cast( fences.data() ), static_cast( waitAll ), timeout ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::waitForFences", { Result::eSuccess, Result::eTimeout } ); + + return static_cast( result ); + } + + // wrapper function for command vkCreateSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSemaphore.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createSemaphore( SemaphoreCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateSemaphore && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Semaphore semaphore; + Result result = static_cast( getDispatcher()->vkCreateSemaphore( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &semaphore ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSemaphore" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Semaphore( *this, *reinterpret_cast( &semaphore ), allocator ) ); + } + + // wrapper function for command vkCreateQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateQueryPool.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createQueryPool( QueryPoolCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateQueryPool && "Function requires " ); + + VULKAN_HPP_NAMESPACE::QueryPool queryPool; + Result result = static_cast( getDispatcher()->vkCreateQueryPool( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &queryPool ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createQueryPool" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, QueryPool( *this, *reinterpret_cast( &queryPool ), allocator ) ); + } + + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result QueryPool::getResults( + uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void * pData, DeviceSize stride, QueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueryPoolResults && "Function requires " ); + return static_cast( getDispatcher()->vkGetQueryPoolResults( static_cast( m_device ), + static_cast( m_queryPool ), + firstQuery, + queryCount, + dataSize, + pData, + static_cast( stride ), + static_cast( flags ) ) ); + } + + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> + QueryPool::getResults( uint32_t firstQuery, uint32_t queryCount, size_t dataSize, DeviceSize stride, QueryResultFlags flags ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueryPoolResults && "Function requires " ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( getDispatcher()->vkGetQueryPoolResults( static_cast( m_device ), + static_cast( m_queryPool ), + firstQuery, + queryCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ), + static_cast( stride ), + static_cast( flags ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::QueryPool::getResults", { Result::eSuccess, Result::eNotReady } ); + + return { result, data }; + } + + // wrapper function for command vkGetQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueryPoolResults.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue + QueryPool::getResult( uint32_t firstQuery, uint32_t queryCount, DeviceSize stride, QueryResultFlags flags ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueryPoolResults && "Function requires " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetQueryPoolResults( static_cast( m_device ), + static_cast( m_queryPool ), + firstQuery, + queryCount, + sizeof( DataType ), + reinterpret_cast( &data ), + static_cast( stride ), + static_cast( flags ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::QueryPool::getResult", { Result::eSuccess, Result::eNotReady } ); + + return { result, data }; + } + + // wrapper function for command vkCreateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBuffer.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createBuffer( BufferCreateInfo const & createInfo, Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateBuffer && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Buffer buffer; + Result result = static_cast( getDispatcher()->vkCreateBuffer( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &buffer ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createBuffer" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Buffer( *this, *reinterpret_cast( &buffer ), allocator ) ); + } + + // wrapper function for command vkCreateImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImage.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createImage( ImageCreateInfo const & createInfo, Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateImage && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Image image; + Result result = static_cast( getDispatcher()->vkCreateImage( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &image ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createImage" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Image( *this, *reinterpret_cast( &image ), allocator ) ); + } + + // wrapper function for command vkGetImageSubresourceLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout Image::getSubresourceLayout( ImageSubresource const & subresource ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSubresourceLayout && "Function requires " ); + + SubresourceLayout layout; + getDispatcher()->vkGetImageSubresourceLayout( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkCreateImageView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImageView.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createImageView( ImageViewCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateImageView && "Function requires " ); + + VULKAN_HPP_NAMESPACE::ImageView view; + Result result = static_cast( getDispatcher()->vkCreateImageView( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &view ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createImageView" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, ImageView( *this, *reinterpret_cast( &view ), allocator ) ); + } + + // wrapper function for command vkCreateCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCommandPool.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createCommandPool( CommandPoolCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateCommandPool && "Function requires " ); + + VULKAN_HPP_NAMESPACE::CommandPool commandPool; + Result result = static_cast( getDispatcher()->vkCreateCommandPool( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &commandPool ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createCommandPool" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, CommandPool( *this, *reinterpret_cast( &commandPool ), allocator ) ); + } + + // wrapper function for command vkResetCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandPool.html + VULKAN_HPP_INLINE typename ResultValueType::type CommandPool::reset( CommandPoolResetFlags flags ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkResetCommandPool && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkResetCommandPool( + static_cast( m_device ), static_cast( m_commandPool ), static_cast( flags ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandPool::reset" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkAllocateCommandBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateCommandBuffers.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::allocateCommandBuffers( CommandBufferAllocateInfo const & allocateInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAllocateCommandBuffers && "Function requires " ); + + std::vector commandBuffers( allocateInfo.commandBufferCount ); + Result result = static_cast( getDispatcher()->vkAllocateCommandBuffers( static_cast( m_device ), + reinterpret_cast( &allocateInfo ), + reinterpret_cast( commandBuffers.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::allocateCommandBuffers" ); + std::vector commandBuffersRAII; + if ( result == Result::eSuccess ) + { + commandBuffersRAII.reserve( commandBuffers.size() ); + for ( auto & commandBuffer : commandBuffers ) + { + commandBuffersRAII.emplace_back( + *this, *reinterpret_cast( &commandBuffer ), static_cast( allocateInfo.commandPool ) ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( commandBuffersRAII ) ); + } + + // wrapper function for command vkBeginCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBeginCommandBuffer.html + VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::begin( CommandBufferBeginInfo const & beginInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBeginCommandBuffer && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkBeginCommandBuffer( static_cast( m_commandBuffer ), + reinterpret_cast( &beginInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::begin" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkEndCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEndCommandBuffer.html + VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::end() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEndCommandBuffer && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkEndCommandBuffer( static_cast( m_commandBuffer ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::end" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkResetCommandBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetCommandBuffer.html + VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::reset( CommandBufferResetFlags flags ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkResetCommandBuffer && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkResetCommandBuffer( static_cast( m_commandBuffer ), static_cast( flags ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::reset" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdCopyBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer.html + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer && "Function requires " ); + + getDispatcher()->vkCmdCopyBuffer( static_cast( m_commandBuffer ), + static_cast( srcBuffer ), + static_cast( dstBuffer ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } + + // wrapper function for command vkCmdCopyImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage.html + VULKAN_HPP_INLINE void CommandBuffer::copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, + ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage && "Function requires " ); + + getDispatcher()->vkCmdCopyImage( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } + + // wrapper function for command vkCmdCopyBufferToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage.html + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, + VULKAN_HPP_NAMESPACE::Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage && "Function requires " ); + + getDispatcher()->vkCmdCopyBufferToImage( static_cast( m_commandBuffer ), + static_cast( srcBuffer ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } + + // wrapper function for command vkCmdCopyImageToBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer.html + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, + ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer && "Function requires " ); + + getDispatcher()->vkCmdCopyImageToBuffer( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstBuffer ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } + + // wrapper function for command vkCmdUpdateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateBuffer.html + VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + DeviceSize dstOffset, + DeviceSize dataSize, + void const * pData ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdUpdateBuffer && "Function requires " ); + getDispatcher()->vkCmdUpdateBuffer( static_cast( m_commandBuffer ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( dataSize ), + pData ); + } + + // wrapper function for command vkCmdUpdateBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateBuffer.html + template + VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + DeviceSize dstOffset, + ArrayProxy const & data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdUpdateBuffer && "Function requires " ); + + getDispatcher()->vkCmdUpdateBuffer( static_cast( m_commandBuffer ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ); + } + + // wrapper function for command vkCmdFillBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillBuffer.html + VULKAN_HPP_INLINE void + CommandBuffer::fillBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdFillBuffer && "Function requires " ); + + getDispatcher()->vkCmdFillBuffer( static_cast( m_commandBuffer ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( size ), + data ); + } + + // wrapper function for command vkCmdPipelineBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier.html + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + DependencyFlags dependencyFlags, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier && "Function requires " ); + + getDispatcher()->vkCmdPipelineBarrier( static_cast( m_commandBuffer ), + static_cast( srcStageMask ), + static_cast( dstStageMask ), + static_cast( dependencyFlags ), + memoryBarriers.size(), + reinterpret_cast( memoryBarriers.data() ), + bufferMemoryBarriers.size(), + reinterpret_cast( bufferMemoryBarriers.data() ), + imageMemoryBarriers.size(), + reinterpret_cast( imageMemoryBarriers.data() ) ); + } + + // wrapper function for command vkCmdBeginQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQuery.html + VULKAN_HPP_INLINE void + CommandBuffer::beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginQuery && "Function requires " ); + + getDispatcher()->vkCmdBeginQuery( + static_cast( m_commandBuffer ), static_cast( queryPool ), query, static_cast( flags ) ); + } + + // wrapper function for command vkCmdEndQuery, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQuery.html + VULKAN_HPP_INLINE void CommandBuffer::endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndQuery && "Function requires " ); + + getDispatcher()->vkCmdEndQuery( static_cast( m_commandBuffer ), static_cast( queryPool ), query ); + } + + // wrapper function for command vkCmdResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetQueryPool.html + VULKAN_HPP_INLINE void + CommandBuffer::resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetQueryPool && "Function requires " ); + + getDispatcher()->vkCmdResetQueryPool( static_cast( m_commandBuffer ), static_cast( queryPool ), firstQuery, queryCount ); + } + + // wrapper function for command vkCmdWriteTimestamp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp.html + VULKAN_HPP_INLINE void + CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp && "Function requires " ); + + getDispatcher()->vkCmdWriteTimestamp( + static_cast( m_commandBuffer ), static_cast( pipelineStage ), static_cast( queryPool ), query ); + } + + // wrapper function for command vkCmdCopyQueryPoolResults, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResults.html + VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + DeviceSize dstOffset, + DeviceSize stride, + QueryResultFlags flags ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyQueryPoolResults && "Function requires " ); + + getDispatcher()->vkCmdCopyQueryPoolResults( static_cast( m_commandBuffer ), + static_cast( queryPool ), + firstQuery, + queryCount, + static_cast( dstBuffer ), + static_cast( dstOffset ), + static_cast( stride ), + static_cast( flags ) ); + } + + // wrapper function for command vkCmdExecuteCommands, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteCommands.html + VULKAN_HPP_INLINE void + CommandBuffer::executeCommands( ArrayProxy const & commandBuffers ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdExecuteCommands && "Function requires " ); + + getDispatcher()->vkCmdExecuteCommands( + static_cast( m_commandBuffer ), commandBuffers.size(), reinterpret_cast( commandBuffers.data() ) ); + } + + // wrapper function for command vkCreateEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateEvent.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createEvent( EventCreateInfo const & createInfo, Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateEvent && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Event event; + Result result = static_cast( getDispatcher()->vkCreateEvent( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &event ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createEvent" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Event( *this, *reinterpret_cast( &event ), allocator ) ); + } + + // wrapper function for command vkGetEventStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEventStatus.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Event::getStatus() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetEventStatus && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkGetEventStatus( static_cast( m_device ), static_cast( m_event ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Event::getStatus", { Result::eEventSet, Result::eEventReset } ); + + return static_cast( result ); + } + + // wrapper function for command vkSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetEvent.html + VULKAN_HPP_INLINE typename ResultValueType::type Event::set() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetEvent && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkSetEvent( static_cast( m_device ), static_cast( m_event ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Event::set" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetEvent.html + VULKAN_HPP_INLINE typename ResultValueType::type Event::reset() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkResetEvent && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkResetEvent( static_cast( m_device ), static_cast( m_event ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Event::reset" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCreateBufferView, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferView.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createBufferView( BufferViewCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateBufferView && "Function requires " ); + + VULKAN_HPP_NAMESPACE::BufferView view; + Result result = static_cast( getDispatcher()->vkCreateBufferView( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &view ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createBufferView" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, BufferView( *this, *reinterpret_cast( &view ), allocator ) ); + } + + // wrapper function for command vkCreateShaderModule, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderModule.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createShaderModule( ShaderModuleCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateShaderModule && "Function requires " ); + + VULKAN_HPP_NAMESPACE::ShaderModule shaderModule; + Result result = static_cast( getDispatcher()->vkCreateShaderModule( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &shaderModule ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createShaderModule" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, + ShaderModule( *this, *reinterpret_cast( &shaderModule ), allocator ) ); + } + + // wrapper function for command vkCreatePipelineCache, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineCache.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createPipelineCache( PipelineCacheCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreatePipelineCache && "Function requires " ); + + VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache; + Result result = static_cast( getDispatcher()->vkCreatePipelineCache( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipelineCache ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createPipelineCache" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, + PipelineCache( *this, *reinterpret_cast( &pipelineCache ), allocator ) ); + } + + // wrapper function for command vkGetPipelineCacheData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineCacheData.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PipelineCache::getData() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineCacheData && "Function requires " ); + + std::vector data; + size_t dataSize; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPipelineCacheData( static_cast( m_device ), static_cast( m_pipelineCache ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( getDispatcher()->vkGetPipelineCacheData( + static_cast( m_device ), static_cast( m_pipelineCache ), &dataSize, reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PipelineCache::getData" ); + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkMergePipelineCaches, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergePipelineCaches.html + VULKAN_HPP_INLINE typename ResultValueType::type PipelineCache::merge( ArrayProxy const & srcCaches ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkMergePipelineCaches && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkMergePipelineCaches( static_cast( m_device ), + static_cast( m_pipelineCache ), + srcCaches.size(), + reinterpret_cast( srcCaches.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PipelineCache::merge" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createComputePipelines( Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateComputePipelines && "Function requires " ); + + std::vector pipelines( createInfos.size() ); + Result result = + static_cast( getDispatcher()->vkCreateComputePipelines( static_cast( m_device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createComputePipelines", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + std::vector pipelinesRAII; + if ( result == Result::eSuccess ) + { + pipelinesRAII.reserve( pipelines.size() ); + for ( auto & pipeline : pipelines ) + { + pipelinesRAII.emplace_back( *this, *reinterpret_cast( &pipeline ), allocator, result ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) ); + } + + // wrapper function for command vkCreateComputePipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateComputePipelines.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createComputePipeline( Optional const & pipelineCache, + ComputePipelineCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateComputePipelines && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Pipeline pipeline; + Result result = static_cast( getDispatcher()->vkCreateComputePipelines( static_cast( m_device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createComputePipeline", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast( &pipeline ), allocator, result ) ); + } + + // wrapper function for command vkCreatePipelineLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineLayout.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createPipelineLayout( PipelineLayoutCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreatePipelineLayout && "Function requires " ); + + VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout; + Result result = static_cast( getDispatcher()->vkCreatePipelineLayout( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipelineLayout ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createPipelineLayout" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, PipelineLayout( *this, *reinterpret_cast( &pipelineLayout ), allocator ) ); + } + + // wrapper function for command vkCreateSampler, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSampler.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createSampler( SamplerCreateInfo const & createInfo, Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateSampler && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Sampler sampler; + Result result = static_cast( getDispatcher()->vkCreateSampler( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &sampler ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSampler" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Sampler( *this, *reinterpret_cast( &sampler ), allocator ) ); + } + + // wrapper function for command vkCreateDescriptorSetLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorSetLayout.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createDescriptorSetLayout( DescriptorSetLayoutCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDescriptorSetLayout && "Function requires " ); + + VULKAN_HPP_NAMESPACE::DescriptorSetLayout setLayout; + Result result = + static_cast( getDispatcher()->vkCreateDescriptorSetLayout( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &setLayout ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDescriptorSetLayout" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, DescriptorSetLayout( *this, *reinterpret_cast( &setLayout ), allocator ) ); + } + + // wrapper function for command vkCreateDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorPool.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createDescriptorPool( DescriptorPoolCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDescriptorPool && "Function requires " ); + + VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool; + Result result = static_cast( getDispatcher()->vkCreateDescriptorPool( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &descriptorPool ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDescriptorPool" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, DescriptorPool( *this, *reinterpret_cast( &descriptorPool ), allocator ) ); + } + + // wrapper function for command vkResetDescriptorPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetDescriptorPool.html + VULKAN_HPP_INLINE typename ResultValueType::type DescriptorPool::reset( DescriptorPoolResetFlags flags ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkResetDescriptorPool && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkResetDescriptorPool( + static_cast( m_device ), static_cast( m_descriptorPool ), static_cast( flags ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DescriptorPool::reset" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkAllocateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAllocateDescriptorSets.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::allocateDescriptorSets( DescriptorSetAllocateInfo const & allocateInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAllocateDescriptorSets && "Function requires " ); + + std::vector descriptorSets( allocateInfo.descriptorSetCount ); + Result result = static_cast( getDispatcher()->vkAllocateDescriptorSets( static_cast( m_device ), + reinterpret_cast( &allocateInfo ), + reinterpret_cast( descriptorSets.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::allocateDescriptorSets" ); + std::vector descriptorSetsRAII; + if ( result == Result::eSuccess ) + { + descriptorSetsRAII.reserve( descriptorSets.size() ); + for ( auto & descriptorSet : descriptorSets ) + { + descriptorSetsRAII.emplace_back( + *this, *reinterpret_cast( &descriptorSet ), static_cast( allocateInfo.descriptorPool ) ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( descriptorSetsRAII ) ); + } + + // wrapper function for command vkUpdateDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSets.html + VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy const & descriptorWrites, + ArrayProxy const & descriptorCopies ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateDescriptorSets && "Function requires " ); + + getDispatcher()->vkUpdateDescriptorSets( static_cast( m_device ), + descriptorWrites.size(), + reinterpret_cast( descriptorWrites.data() ), + descriptorCopies.size(), + reinterpret_cast( descriptorCopies.data() ) ); + } + + // wrapper function for command vkCmdBindPipeline, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipeline.html + VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindPipeline && "Function requires " ); + + getDispatcher()->vkCmdBindPipeline( + static_cast( m_commandBuffer ), static_cast( pipelineBindPoint ), static_cast( pipeline ) ); + } + + // wrapper function for command vkCmdBindDescriptorSets, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets.html + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & descriptorSets, + ArrayProxy const & dynamicOffsets ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorSets && "Function requires " ); + + getDispatcher()->vkCmdBindDescriptorSets( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( layout ), + firstSet, + descriptorSets.size(), + reinterpret_cast( descriptorSets.data() ), + dynamicOffsets.size(), + dynamicOffsets.data() ); + } + + // wrapper function for command vkCmdClearColorImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearColorImage.html + VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( VULKAN_HPP_NAMESPACE::Image image, + ImageLayout imageLayout, + ClearColorValue const & color, + ArrayProxy const & ranges ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdClearColorImage && "Function requires " ); + + getDispatcher()->vkCmdClearColorImage( static_cast( m_commandBuffer ), + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( &color ), + ranges.size(), + reinterpret_cast( ranges.data() ) ); + } + + // wrapper function for command vkCmdDispatch, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatch.html + VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatch && "Function requires " ); + + getDispatcher()->vkCmdDispatch( static_cast( m_commandBuffer ), groupCountX, groupCountY, groupCountZ ); + } + + // wrapper function for command vkCmdDispatchIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect.html + VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchIndirect && "Function requires " ); + + getDispatcher()->vkCmdDispatchIndirect( + static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ) ); + } + + // wrapper function for command vkCmdSetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent.html + VULKAN_HPP_INLINE void CommandBuffer::setEvent( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent && "Function requires " ); + + getDispatcher()->vkCmdSetEvent( + static_cast( m_commandBuffer ), static_cast( event ), static_cast( stageMask ) ); + } + + // wrapper function for command vkCmdResetEvent, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent.html + VULKAN_HPP_INLINE void CommandBuffer::resetEvent( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent && "Function requires " ); + + getDispatcher()->vkCmdResetEvent( + static_cast( m_commandBuffer ), static_cast( event ), static_cast( stageMask ) ); + } + + // wrapper function for command vkCmdWaitEvents, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents.html + VULKAN_HPP_INLINE void CommandBuffer::waitEvents( ArrayProxy const & events, + PipelineStageFlags srcStageMask, + PipelineStageFlags dstStageMask, + ArrayProxy const & memoryBarriers, + ArrayProxy const & bufferMemoryBarriers, + ArrayProxy const & imageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents && "Function requires " ); + + getDispatcher()->vkCmdWaitEvents( static_cast( m_commandBuffer ), + events.size(), + reinterpret_cast( events.data() ), + static_cast( srcStageMask ), + static_cast( dstStageMask ), + memoryBarriers.size(), + reinterpret_cast( memoryBarriers.data() ), + bufferMemoryBarriers.size(), + reinterpret_cast( bufferMemoryBarriers.data() ), + imageMemoryBarriers.size(), + reinterpret_cast( imageMemoryBarriers.data() ) ); + } + + // wrapper function for command vkCmdPushConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants.html + VULKAN_HPP_INLINE void CommandBuffer::pushConstants( + VULKAN_HPP_NAMESPACE::PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, void const * pValues ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushConstants && "Function requires " ); + getDispatcher()->vkCmdPushConstants( static_cast( m_commandBuffer ), + static_cast( layout ), + static_cast( stageFlags ), + offset, + size, + pValues ); + } + + // wrapper function for command vkCmdPushConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants.html + template + VULKAN_HPP_INLINE void CommandBuffer::pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, + ShaderStageFlags stageFlags, + uint32_t offset, + ArrayProxy const & values ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushConstants && "Function requires " ); + + getDispatcher()->vkCmdPushConstants( static_cast( m_commandBuffer ), + static_cast( layout ), + static_cast( stageFlags ), + offset, + values.size() * sizeof( ValuesType ), + reinterpret_cast( values.data() ) ); + } + + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createGraphicsPipelines( Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateGraphicsPipelines && "Function requires " ); + + std::vector pipelines( createInfos.size() ); + Result result = + static_cast( getDispatcher()->vkCreateGraphicsPipelines( static_cast( m_device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createGraphicsPipelines", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + std::vector pipelinesRAII; + if ( result == Result::eSuccess ) + { + pipelinesRAII.reserve( pipelines.size() ); + for ( auto & pipeline : pipelines ) + { + pipelinesRAII.emplace_back( *this, *reinterpret_cast( &pipeline ), allocator, result ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) ); + } + + // wrapper function for command vkCreateGraphicsPipelines, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateGraphicsPipelines.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createGraphicsPipeline( Optional const & pipelineCache, + GraphicsPipelineCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateGraphicsPipelines && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Pipeline pipeline; + Result result = static_cast( getDispatcher()->vkCreateGraphicsPipelines( static_cast( m_device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createGraphicsPipeline", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast( &pipeline ), allocator, result ) ); + } + + // wrapper function for command vkCreateFramebuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateFramebuffer.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createFramebuffer( FramebufferCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateFramebuffer && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Framebuffer framebuffer; + Result result = static_cast( getDispatcher()->vkCreateFramebuffer( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &framebuffer ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createFramebuffer" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Framebuffer( *this, *reinterpret_cast( &framebuffer ), allocator ) ); + } + + // wrapper function for command vkCreateRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createRenderPass( RenderPassCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateRenderPass && "Function requires " ); + + VULKAN_HPP_NAMESPACE::RenderPass renderPass; + Result result = static_cast( getDispatcher()->vkCreateRenderPass( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &renderPass ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRenderPass" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, RenderPass( *this, *reinterpret_cast( &renderPass ), allocator ) ); + } + + // wrapper function for command vkGetRenderAreaGranularity, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderAreaGranularity.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Extent2D RenderPass::getRenderAreaGranularity() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRenderAreaGranularity && "Function requires " ); + + Extent2D granularity; + getDispatcher()->vkGetRenderAreaGranularity( + static_cast( m_device ), static_cast( m_renderPass ), reinterpret_cast( &granularity ) ); + + return granularity; + } + + // wrapper function for command vkCmdSetViewport, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewport.html + VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy const & viewports ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewport && "Function requires " ); + + getDispatcher()->vkCmdSetViewport( + static_cast( m_commandBuffer ), firstViewport, viewports.size(), reinterpret_cast( viewports.data() ) ); + } + + // wrapper function for command vkCmdSetScissor, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissor.html + VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy const & scissors ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetScissor && "Function requires " ); + + getDispatcher()->vkCmdSetScissor( + static_cast( m_commandBuffer ), firstScissor, scissors.size(), reinterpret_cast( scissors.data() ) ); + } + + // wrapper function for command vkCmdSetLineWidth, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineWidth.html + VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineWidth && "Function requires " ); + + getDispatcher()->vkCmdSetLineWidth( static_cast( m_commandBuffer ), lineWidth ); + } + + // wrapper function for command vkCmdSetDepthBias, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias.html + VULKAN_HPP_INLINE void + CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBias && "Function requires " ); + + getDispatcher()->vkCmdSetDepthBias( static_cast( m_commandBuffer ), depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); + } + + // wrapper function for command vkCmdSetBlendConstants, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetBlendConstants.html + VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( float const blendConstants[4] ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetBlendConstants && "Function requires " ); + + getDispatcher()->vkCmdSetBlendConstants( static_cast( m_commandBuffer ), blendConstants ); + } + + // wrapper function for command vkCmdSetDepthBounds, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBounds.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBounds && "Function requires " ); + + getDispatcher()->vkCmdSetDepthBounds( static_cast( m_commandBuffer ), minDepthBounds, maxDepthBounds ); + } + + // wrapper function for command vkCmdSetStencilCompareMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilCompareMask.html + VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilCompareMask && "Function requires " ); + + getDispatcher()->vkCmdSetStencilCompareMask( static_cast( m_commandBuffer ), static_cast( faceMask ), compareMask ); + } + + // wrapper function for command vkCmdSetStencilWriteMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilWriteMask.html + VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilWriteMask && "Function requires " ); + + getDispatcher()->vkCmdSetStencilWriteMask( static_cast( m_commandBuffer ), static_cast( faceMask ), writeMask ); + } + + // wrapper function for command vkCmdSetStencilReference, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilReference.html + VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilReference && "Function requires " ); + + getDispatcher()->vkCmdSetStencilReference( static_cast( m_commandBuffer ), static_cast( faceMask ), reference ); + } + + // wrapper function for command vkCmdBindIndexBuffer, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer.html + VULKAN_HPP_INLINE void + CommandBuffer::bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, IndexType indexType ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindIndexBuffer && "Function requires " ); + + getDispatcher()->vkCmdBindIndexBuffer( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( indexType ) ); + } + + // wrapper function for command vkCmdBindVertexBuffers, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers.html + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindVertexBuffers && "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBindVertexBuffers( static_cast( m_commandBuffer ), + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ) ); + } + + // wrapper function for command vkCmdDraw, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDraw.html + VULKAN_HPP_INLINE void + CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDraw && "Function requires " ); + + getDispatcher()->vkCmdDraw( static_cast( m_commandBuffer ), vertexCount, instanceCount, firstVertex, firstInstance ); + } + + // wrapper function for command vkCmdDrawIndexed, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexed.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( + uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexed && "Function requires " ); + + getDispatcher()->vkCmdDrawIndexed( static_cast( m_commandBuffer ), indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); + } + + // wrapper function for command vkCmdDrawIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect.html + VULKAN_HPP_INLINE void + CommandBuffer::drawIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirect && "Function requires " ); + + getDispatcher()->vkCmdDrawIndirect( + static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + // wrapper function for command vkCmdDrawIndexedIndirect, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexedIndirect && "Function requires " ); + + getDispatcher()->vkCmdDrawIndexedIndirect( + static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + // wrapper function for command vkCmdBlitImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage.html + VULKAN_HPP_INLINE void CommandBuffer::blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, + ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions, + Filter filter ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage && "Function requires " ); + + getDispatcher()->vkCmdBlitImage( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ), + static_cast( filter ) ); + } + + // wrapper function for command vkCmdClearDepthStencilImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearDepthStencilImage.html + VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, + ImageLayout imageLayout, + ClearDepthStencilValue const & depthStencil, + ArrayProxy const & ranges ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdClearDepthStencilImage && "Function requires " ); + + getDispatcher()->vkCmdClearDepthStencilImage( static_cast( m_commandBuffer ), + static_cast( image ), + static_cast( imageLayout ), + reinterpret_cast( &depthStencil ), + ranges.size(), + reinterpret_cast( ranges.data() ) ); + } + + // wrapper function for command vkCmdClearAttachments, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdClearAttachments.html + VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy const & attachments, + ArrayProxy const & rects ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdClearAttachments && "Function requires " ); + + getDispatcher()->vkCmdClearAttachments( static_cast( m_commandBuffer ), + attachments.size(), + reinterpret_cast( attachments.data() ), + rects.size(), + reinterpret_cast( rects.data() ) ); + } + + // wrapper function for command vkCmdResolveImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage.html + VULKAN_HPP_INLINE void CommandBuffer::resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, + ImageLayout srcImageLayout, + VULKAN_HPP_NAMESPACE::Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & regions ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage && "Function requires " ); + + getDispatcher()->vkCmdResolveImage( static_cast( m_commandBuffer ), + static_cast( srcImage ), + static_cast( srcImageLayout ), + static_cast( dstImage ), + static_cast( dstImageLayout ), + regions.size(), + reinterpret_cast( regions.data() ) ); + } + + // wrapper function for command vkCmdBeginRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass.html + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( RenderPassBeginInfo const & renderPassBegin, SubpassContents contents ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass && "Function requires " ); + + getDispatcher()->vkCmdBeginRenderPass( static_cast( m_commandBuffer ), + reinterpret_cast( &renderPassBegin ), + static_cast( contents ) ); + } + + // wrapper function for command vkCmdNextSubpass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass.html + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass && "Function requires " ); + + getDispatcher()->vkCmdNextSubpass( static_cast( m_commandBuffer ), static_cast( contents ) ); + } + + // wrapper function for command vkCmdEndRenderPass, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass.html + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass && "Function requires " ); + + getDispatcher()->vkCmdEndRenderPass( static_cast( m_commandBuffer ) ); + } + + //=== VK_VERSION_1_1 === + + // wrapper function for command vkEnumerateInstanceVersion, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumerateInstanceVersion.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Context::enumerateInstanceVersion() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumerateInstanceVersion && "Function requires " ); + + uint32_t apiVersion; + Result result = static_cast( getDispatcher()->vkEnumerateInstanceVersion( &apiVersion ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Context::enumerateInstanceVersion" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( apiVersion ) ); + } + + // wrapper function for command vkBindBufferMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::bindBufferMemory2( ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory2 && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkBindBufferMemory2( + static_cast( m_device ), bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindBufferMemory2" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkBindImageMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::bindImageMemory2( ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory2 && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkBindImageMemory2( + static_cast( m_device ), bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindImageMemory2" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetDeviceGroupPeerMemoryFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeatures.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupPeerMemoryFeatures && + "Function requires or " ); + + PeerMemoryFeatureFlags peerMemoryFeatures; + getDispatcher()->vkGetDeviceGroupPeerMemoryFeatures( static_cast( m_device ), + heapIndex, + localDeviceIndex, + remoteDeviceIndex, + reinterpret_cast( &peerMemoryFeatures ) ); + + return peerMemoryFeatures; + } + + // wrapper function for command vkCmdSetDeviceMask, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMask.html + VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDeviceMask && "Function requires or " ); + + getDispatcher()->vkCmdSetDeviceMask( static_cast( m_commandBuffer ), deviceMask ); + } + + // wrapper function for command vkEnumeratePhysicalDeviceGroups, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroups.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::enumeratePhysicalDeviceGroups() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceGroups && + "Function requires or " ); + + std::vector physicalDeviceGroupProperties; + uint32_t physicalDeviceGroupCount; + Result result; + do + { + result = + static_cast( getDispatcher()->vkEnumeratePhysicalDeviceGroups( static_cast( m_instance ), &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( + getDispatcher()->vkEnumeratePhysicalDeviceGroups( static_cast( m_instance ), + &physicalDeviceGroupCount, + reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroups" ); + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( physicalDeviceGroupProperties ) ); + } + + // wrapper function for command vkGetImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getImageMemoryRequirements2( ImageMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2 && + "Function requires or " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetImageMemoryRequirements2( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getImageMemoryRequirements2( ImageMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2 && + "Function requires or " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetImageMemoryRequirements2( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkGetBufferMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getBufferMemoryRequirements2( BufferMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2 && + "Function requires or " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetBufferMemoryRequirements2( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetBufferMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getBufferMemoryRequirements2( BufferMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2 && + "Function requires or " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetBufferMemoryRequirements2( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkGetImageSparseMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2( ImageSparseMemoryRequirementsInfo2 const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSparseMemoryRequirements2 && + "Function requires or " ); + + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + getDispatcher()->vkGetImageSparseMemoryRequirements2( + static_cast( m_device ), reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + getDispatcher()->vkGetImageSparseMemoryRequirements2( static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } + + // wrapper function for command vkGetPhysicalDeviceFeatures2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2 && + "Function requires or " ); + + PhysicalDeviceFeatures2 features; + getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast( m_physicalDevice ), + reinterpret_cast( &features ) ); + + return features; + } + + // wrapper function for command vkGetPhysicalDeviceFeatures2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFeatures2() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2 && + "Function requires or " ); + + StructureChain structureChain; + PhysicalDeviceFeatures2 & features = structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceFeatures2( static_cast( m_physicalDevice ), + reinterpret_cast( &features ) ); + + return structureChain; + } + + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + VULKAN_HPP_INLINE void PhysicalDevice::getProperties2( PhysicalDeviceProperties2 * pProperties ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2 && + "Function requires or " ); + getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( pProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceProperties2 PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2 && + "Function requires or " ); + + PhysicalDeviceProperties2 properties; + getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( &properties ) ); + + return properties; + } + + // wrapper function for command vkGetPhysicalDeviceProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getProperties2() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2 && + "Function requires or " ); + + StructureChain structureChain; + PhysicalDeviceProperties2 & properties = structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( &properties ) ); + + return structureChain; + } + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2( Format format, FormatProperties2 * pFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2 && + "Function requires or " ); + getDispatcher()->vkGetPhysicalDeviceFormatProperties2( + static_cast( m_physicalDevice ), static_cast( format ), reinterpret_cast( pFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE FormatProperties2 PhysicalDevice::getFormatProperties2( Format format ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2 && + "Function requires or " ); + + FormatProperties2 formatProperties; + getDispatcher()->vkGetPhysicalDeviceFormatProperties2( + static_cast( m_physicalDevice ), static_cast( format ), reinterpret_cast( &formatProperties ) ); + + return formatProperties; + } + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFormatProperties2( Format format ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2 && + "Function requires or " ); + + StructureChain structureChain; + FormatProperties2 & formatProperties = structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceFormatProperties2( + static_cast( m_physicalDevice ), static_cast( format ), reinterpret_cast( &formatProperties ) ); + + return structureChain; + } + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getImageFormatProperties2( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2 && + "Function requires or " ); + + ImageFormatProperties2 imageFormatProperties; + Result result = static_cast( + getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( imageFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getImageFormatProperties2( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2 && + "Function requires or " ); + + StructureChain structureChain; + ImageFormatProperties2 & imageFormatProperties = structureChain.template get(); + Result result = static_cast( + getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) ); + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2 && + "Function requires or " ); + + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast( m_physicalDevice ), &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast( m_physicalDevice ), + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + queueFamilyProperties.resize( queueFamilyPropertyCount ); + } + return queueFamilyProperties; + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2 && + "Function requires or " ); + + std::vector structureChains; + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast( m_physicalDevice ), &queueFamilyPropertyCount, nullptr ); + structureChains.resize( queueFamilyPropertyCount ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = structureChains[i].template get().pNext; + } + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2( static_cast( m_physicalDevice ), + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + structureChains.resize( queueFamilyPropertyCount ); + } + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + structureChains[i].template get() = queueFamilyProperties[i]; + } + return structureChains; + } + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2 && + "Function requires or " ); + + PhysicalDeviceMemoryProperties2 memoryProperties; + getDispatcher()->vkGetPhysicalDeviceMemoryProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( &memoryProperties ) ); + + return memoryProperties; + } + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getMemoryProperties2() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2 && + "Function requires or " ); + + StructureChain structureChain; + PhysicalDeviceMemoryProperties2 & memoryProperties = structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceMemoryProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( &memoryProperties ) ); + + return structureChain; + } + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2 && + "Function requires or " ); + + std::vector properties; + uint32_t propertyCount; + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( &formatInfo ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2( static_cast( m_physicalDevice ), + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return properties; + } + + // wrapper function for command vkTrimCommandPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPool.html + VULKAN_HPP_INLINE void CommandPool::trim( CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkTrimCommandPool && "Function requires or " ); + + getDispatcher()->vkTrimCommandPool( + static_cast( m_device ), static_cast( m_commandPool ), static_cast( flags ) ); + } + + // wrapper function for command vkGetDeviceQueue2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceQueue2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Queue Device::getQueue2( DeviceQueueInfo2 const & queueInfo ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceQueue2 && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Queue queue; + getDispatcher()->vkGetDeviceQueue2( + static_cast( m_device ), reinterpret_cast( &queueInfo ), reinterpret_cast( &queue ) ); + + return Queue( *this, *reinterpret_cast( &queue ) ); + } + + // wrapper function for command vkGetPhysicalDeviceExternalBufferProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalBufferProperties + PhysicalDevice::getExternalBufferProperties( PhysicalDeviceExternalBufferInfo const & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalBufferProperties && + "Function requires or " ); + + ExternalBufferProperties externalBufferProperties; + getDispatcher()->vkGetPhysicalDeviceExternalBufferProperties( static_cast( m_physicalDevice ), + reinterpret_cast( &externalBufferInfo ), + reinterpret_cast( &externalBufferProperties ) ); + + return externalBufferProperties; + } + + // wrapper function for command vkGetPhysicalDeviceExternalFenceProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFenceProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalFenceProperties + PhysicalDevice::getExternalFenceProperties( PhysicalDeviceExternalFenceInfo const & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalFenceProperties && + "Function requires or " ); + + ExternalFenceProperties externalFenceProperties; + getDispatcher()->vkGetPhysicalDeviceExternalFenceProperties( static_cast( m_physicalDevice ), + reinterpret_cast( &externalFenceInfo ), + reinterpret_cast( &externalFenceProperties ) ); + + return externalFenceProperties; + } + + // wrapper function for command vkGetPhysicalDeviceExternalSemaphoreProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphoreProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalSemaphoreProperties + PhysicalDevice::getExternalSemaphoreProperties( PhysicalDeviceExternalSemaphoreInfo const & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalSemaphoreProperties && + "Function requires or " ); + + ExternalSemaphoreProperties externalSemaphoreProperties; + getDispatcher()->vkGetPhysicalDeviceExternalSemaphoreProperties( + static_cast( m_physicalDevice ), + reinterpret_cast( &externalSemaphoreInfo ), + reinterpret_cast( &externalSemaphoreProperties ) ); + + return externalSemaphoreProperties; + } + + // wrapper function for command vkCmdDispatchBase, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBase.html + VULKAN_HPP_INLINE void CommandBuffer::dispatchBase( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchBase && "Function requires or " ); + + getDispatcher()->vkCmdDispatchBase( + static_cast( m_commandBuffer ), baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); + } + + // wrapper function for command vkCreateDescriptorUpdateTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplate.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createDescriptorUpdateTemplate( DescriptorUpdateTemplateCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDescriptorUpdateTemplate && + "Function requires or " ); + + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate; + Result result = + static_cast( getDispatcher()->vkCreateDescriptorUpdateTemplate( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &descriptorUpdateTemplate ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplate" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, DescriptorUpdateTemplate( *this, *reinterpret_cast( &descriptorUpdateTemplate ), allocator ) ); + } + + // wrapper function for command vkUpdateDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplate.html + template + VULKAN_HPP_INLINE void DescriptorSet::updateWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateDescriptorSetWithTemplate && + "Function requires or " ); + + getDispatcher()->vkUpdateDescriptorSetWithTemplate( static_cast( m_device ), + static_cast( m_descriptorSet ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( &data ) ); + } + + // wrapper function for command vkGetDescriptorSetLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorSetLayoutSupport + Device::getDescriptorSetLayoutSupport( DescriptorSetLayoutCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupport && + "Function requires or " ); + + DescriptorSetLayoutSupport support; + getDispatcher()->vkGetDescriptorSetLayoutSupport( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + + return support; + } + + // wrapper function for command vkGetDescriptorSetLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupport.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getDescriptorSetLayoutSupport( DescriptorSetLayoutCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupport && + "Function requires or " ); + + StructureChain structureChain; + DescriptorSetLayoutSupport & support = structureChain.template get(); + getDispatcher()->vkGetDescriptorSetLayoutSupport( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + + return structureChain; + } + + // wrapper function for command vkCreateSamplerYcbcrConversion, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversion.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createSamplerYcbcrConversion( SamplerYcbcrConversionCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateSamplerYcbcrConversion && + "Function requires or " ); + + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion; + Result result = + static_cast( getDispatcher()->vkCreateSamplerYcbcrConversion( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &ycbcrConversion ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSamplerYcbcrConversion" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, SamplerYcbcrConversion( *this, *reinterpret_cast( &ycbcrConversion ), allocator ) ); + } + + //=== VK_VERSION_1_2 === + + // wrapper function for command vkResetQueryPool, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPool.html + VULKAN_HPP_INLINE void QueryPool::reset( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkResetQueryPool && "Function requires or " ); + + getDispatcher()->vkResetQueryPool( static_cast( m_device ), static_cast( m_queryPool ), firstQuery, queryCount ); + } + + // wrapper function for command vkGetSemaphoreCounterValue, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValue.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Semaphore::getCounterValue() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreCounterValue && + "Function requires or " ); + + uint64_t value; + Result result = static_cast( + getDispatcher()->vkGetSemaphoreCounterValue( static_cast( m_device ), static_cast( m_semaphore ), &value ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Semaphore::getCounterValue" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( value ) ); + } + + // wrapper function for command vkWaitSemaphores, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphores.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphores( SemaphoreWaitInfo const & waitInfo, uint64_t timeout ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWaitSemaphores && "Function requires or " ); + + Result result = static_cast( + getDispatcher()->vkWaitSemaphores( static_cast( m_device ), reinterpret_cast( &waitInfo ), timeout ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::waitSemaphores", { Result::eSuccess, Result::eTimeout } ); + + return static_cast( result ); + } + + // wrapper function for command vkSignalSemaphore, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphore.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::signalSemaphore( SemaphoreSignalInfo const & signalInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSignalSemaphore && "Function requires or " ); + + Result result = static_cast( + getDispatcher()->vkSignalSemaphore( static_cast( m_device ), reinterpret_cast( &signalInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::signalSemaphore" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetBufferDeviceAddress, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddress.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddress( BufferDeviceAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferDeviceAddress && + "Function requires or or " ); + + VkDeviceAddress result = + getDispatcher()->vkGetBufferDeviceAddress( static_cast( m_device ), reinterpret_cast( &info ) ); + + return static_cast( result ); + } + + // wrapper function for command vkGetBufferOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddress.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddress( BufferDeviceAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferOpaqueCaptureAddress && + "Function requires or " ); + + uint64_t result = + getDispatcher()->vkGetBufferOpaqueCaptureAddress( static_cast( m_device ), reinterpret_cast( &info ) ); + + return result; + } + + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddress, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddress.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t + Device::getMemoryOpaqueCaptureAddress( DeviceMemoryOpaqueCaptureAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddress && + "Function requires or " ); + + uint64_t result = getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddress( static_cast( m_device ), + reinterpret_cast( &info ) ); + + return result; + } + + // wrapper function for command vkCmdDrawIndirectCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCount && + "Function requires or or " ); + + getDispatcher()->vkCmdDrawIndirectCount( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + // wrapper function for command vkCmdDrawIndexedIndirectCount, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexedIndirectCount && + "Function requires or or " ); + + getDispatcher()->vkCmdDrawIndexedIndirectCount( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + // wrapper function for command vkCreateRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createRenderPass2( RenderPassCreateInfo2 const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateRenderPass2 && "Function requires or " ); + + VULKAN_HPP_NAMESPACE::RenderPass renderPass; + Result result = static_cast( getDispatcher()->vkCreateRenderPass2( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &renderPass ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRenderPass2" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, RenderPass( *this, *reinterpret_cast( &renderPass ), allocator ) ); + } + + // wrapper function for command vkCmdBeginRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2.html + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2( RenderPassBeginInfo const & renderPassBegin, + SubpassBeginInfo const & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass2 && + "Function requires or " ); + + getDispatcher()->vkCmdBeginRenderPass2( static_cast( m_commandBuffer ), + reinterpret_cast( &renderPassBegin ), + reinterpret_cast( &subpassBeginInfo ) ); + } + + // wrapper function for command vkCmdNextSubpass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2.html + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2( SubpassBeginInfo const & subpassBeginInfo, + SubpassEndInfo const & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass2 && "Function requires or " ); + + getDispatcher()->vkCmdNextSubpass2( static_cast( m_commandBuffer ), + reinterpret_cast( &subpassBeginInfo ), + reinterpret_cast( &subpassEndInfo ) ); + } + + // wrapper function for command vkCmdEndRenderPass2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2.html + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2( SubpassEndInfo const & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass2 && "Function requires or " ); + + getDispatcher()->vkCmdEndRenderPass2( static_cast( m_commandBuffer ), reinterpret_cast( &subpassEndInfo ) ); + } + + //=== VK_VERSION_1_3 === + + // wrapper function for command vkGetPhysicalDeviceToolProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolProperties.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getToolProperties() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceToolProperties && + "Function requires or " ); + + std::vector toolProperties; + uint32_t toolCount; + Result result; + do + { + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceToolProperties( static_cast( m_physicalDevice ), &toolCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceToolProperties( + static_cast( m_physicalDevice ), &toolCount, reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getToolProperties" ); + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( toolProperties ) ); + } + + // wrapper function for command vkCreatePrivateDataSlot, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlot.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createPrivateDataSlot( PrivateDataSlotCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreatePrivateDataSlot && "Function requires or " ); + + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot; + Result result = static_cast( getDispatcher()->vkCreatePrivateDataSlot( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &privateDataSlot ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createPrivateDataSlot" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, PrivateDataSlot( *this, *reinterpret_cast( &privateDataSlot ), allocator ) ); + } + + // wrapper function for command vkSetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateData.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::setPrivateData( ObjectType objectType_, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, uint64_t data ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetPrivateData && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkSetPrivateData( + static_cast( m_device ), static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), data ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::setPrivateData" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetPrivateData, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateData.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getPrivateData( ObjectType objectType_, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPrivateData && "Function requires or " ); + + uint64_t data; + getDispatcher()->vkGetPrivateData( + static_cast( m_device ), static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), &data ); + + return data; + } + + // wrapper function for command vkCmdPipelineBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2.html + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2( DependencyInfo const & dependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier2 && "Function requires or " ); + + getDispatcher()->vkCmdPipelineBarrier2( static_cast( m_commandBuffer ), reinterpret_cast( &dependencyInfo ) ); + } + + // wrapper function for command vkCmdWriteTimestamp2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2.html + VULKAN_HPP_INLINE void + CommandBuffer::writeTimestamp2( PipelineStageFlags2 stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp2 && "Function requires or " ); + + getDispatcher()->vkCmdWriteTimestamp2( + static_cast( m_commandBuffer ), static_cast( stage ), static_cast( queryPool ), query ); + } + + // wrapper function for command vkQueueSubmit2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2.html + VULKAN_HPP_INLINE typename ResultValueType::type Queue::submit2( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit2 && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkQueueSubmit2( + static_cast( m_queue ), submits.size(), reinterpret_cast( submits.data() ), static_cast( fence ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::submit2" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdCopyBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2.html + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2( CopyBufferInfo2 const & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer2 && "Function requires or " ); + + getDispatcher()->vkCmdCopyBuffer2( static_cast( m_commandBuffer ), reinterpret_cast( ©BufferInfo ) ); + } + + // wrapper function for command vkCmdCopyImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2.html + VULKAN_HPP_INLINE void CommandBuffer::copyImage2( CopyImageInfo2 const & copyImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage2 && "Function requires or " ); + + getDispatcher()->vkCmdCopyImage2( static_cast( m_commandBuffer ), reinterpret_cast( ©ImageInfo ) ); + } + + // wrapper function for command vkCmdCopyBufferToImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2.html + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2( CopyBufferToImageInfo2 const & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage2 && + "Function requires or " ); + + getDispatcher()->vkCmdCopyBufferToImage2( static_cast( m_commandBuffer ), + reinterpret_cast( ©BufferToImageInfo ) ); + } + + // wrapper function for command vkCmdCopyImageToBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2.html + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2( CopyImageToBufferInfo2 const & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer2 && + "Function requires or " ); + + getDispatcher()->vkCmdCopyImageToBuffer2( static_cast( m_commandBuffer ), + reinterpret_cast( ©ImageToBufferInfo ) ); + } + + // wrapper function for command vkGetDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getBufferMemoryRequirements( DeviceBufferMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirements && + "Function requires or " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetDeviceBufferMemoryRequirements( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirements.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getBufferMemoryRequirements( DeviceBufferMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirements && + "Function requires or " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetDeviceBufferMemoryRequirements( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkGetDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getImageMemoryRequirements( DeviceImageMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirements && + "Function requires or " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetDeviceImageMemoryRequirements( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirements.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getImageMemoryRequirements( DeviceImageMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirements && + "Function requires or " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetDeviceImageMemoryRequirements( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkGetDeviceImageSparseMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirements.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements( DeviceImageMemoryRequirements const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSparseMemoryRequirements && + "Function requires or " ); + + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + getDispatcher()->vkGetDeviceImageSparseMemoryRequirements( + static_cast( m_device ), reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + getDispatcher()->vkGetDeviceImageSparseMemoryRequirements( static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } + + // wrapper function for command vkCmdSetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2.html + VULKAN_HPP_INLINE void CommandBuffer::setEvent2( VULKAN_HPP_NAMESPACE::Event event, DependencyInfo const & dependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent2 && "Function requires or " ); + + getDispatcher()->vkCmdSetEvent2( + static_cast( m_commandBuffer ), static_cast( event ), reinterpret_cast( &dependencyInfo ) ); + } + + // wrapper function for command vkCmdResetEvent2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2.html + VULKAN_HPP_INLINE void CommandBuffer::resetEvent2( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent2 && "Function requires or " ); + + getDispatcher()->vkCmdResetEvent2( + static_cast( m_commandBuffer ), static_cast( event ), static_cast( stageMask ) ); + } + + // wrapper function for command vkCmdWaitEvents2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2.html + VULKAN_HPP_INLINE void CommandBuffer::waitEvents2( ArrayProxy const & events, + ArrayProxy const & dependencyInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents2 && "Function requires or " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() ); +# else + if ( events.size() != dependencyInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::waitEvents2: events.size() != dependencyInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdWaitEvents2( static_cast( m_commandBuffer ), + events.size(), + reinterpret_cast( events.data() ), + reinterpret_cast( dependencyInfos.data() ) ); + } + + // wrapper function for command vkCmdBlitImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2.html + VULKAN_HPP_INLINE void CommandBuffer::blitImage2( BlitImageInfo2 const & blitImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage2 && "Function requires or " ); + + getDispatcher()->vkCmdBlitImage2( static_cast( m_commandBuffer ), reinterpret_cast( &blitImageInfo ) ); + } + + // wrapper function for command vkCmdResolveImage2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2.html + VULKAN_HPP_INLINE void CommandBuffer::resolveImage2( ResolveImageInfo2 const & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage2 && "Function requires or " ); + + getDispatcher()->vkCmdResolveImage2( static_cast( m_commandBuffer ), + reinterpret_cast( &resolveImageInfo ) ); + } + + // wrapper function for command vkCmdBeginRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRendering.html + VULKAN_HPP_INLINE void CommandBuffer::beginRendering( RenderingInfo const & renderingInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRendering && "Function requires or " ); + + getDispatcher()->vkCmdBeginRendering( static_cast( m_commandBuffer ), reinterpret_cast( &renderingInfo ) ); + } + + // wrapper function for command vkCmdEndRendering, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering.html + VULKAN_HPP_INLINE void CommandBuffer::endRendering() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRendering && "Function requires or " ); + + getDispatcher()->vkCmdEndRendering( static_cast( m_commandBuffer ) ); + } + + // wrapper function for command vkCmdSetCullMode, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullMode.html + VULKAN_HPP_INLINE void CommandBuffer::setCullMode( CullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCullMode && + "Function requires or or " ); + + getDispatcher()->vkCmdSetCullMode( static_cast( m_commandBuffer ), static_cast( cullMode ) ); + } + + // wrapper function for command vkCmdSetFrontFace, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFace.html + VULKAN_HPP_INLINE void CommandBuffer::setFrontFace( FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFrontFace && + "Function requires or or " ); + + getDispatcher()->vkCmdSetFrontFace( static_cast( m_commandBuffer ), static_cast( frontFace ) ); + } + + // wrapper function for command vkCmdSetPrimitiveTopology, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopology.html + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopology( PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPrimitiveTopology && + "Function requires or or " ); + + getDispatcher()->vkCmdSetPrimitiveTopology( static_cast( m_commandBuffer ), static_cast( primitiveTopology ) ); + } + + // wrapper function for command vkCmdSetViewportWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCount.html + VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCount( ArrayProxy const & viewports ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWithCount && + "Function requires or or " ); + + getDispatcher()->vkCmdSetViewportWithCount( + static_cast( m_commandBuffer ), viewports.size(), reinterpret_cast( viewports.data() ) ); + } + + // wrapper function for command vkCmdSetScissorWithCount, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCount.html + VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCount( ArrayProxy const & scissors ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetScissorWithCount && + "Function requires or or " ); + + getDispatcher()->vkCmdSetScissorWithCount( + static_cast( m_commandBuffer ), scissors.size(), reinterpret_cast( scissors.data() ) ); + } + + // wrapper function for command vkCmdBindVertexBuffers2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2.html + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes, + ArrayProxy const & strides ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindVertexBuffers2 && + "Function requires or or " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); + VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != sizes.size()" ); + } + if ( !strides.empty() && buffers.size() != strides.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2: buffers.size() != strides.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBindVertexBuffers2( static_cast( m_commandBuffer ), + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ), + reinterpret_cast( strides.data() ) ); + } + + // wrapper function for command vkCmdSetDepthTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnable.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnable( Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthTestEnable && + "Function requires or or " ); + + getDispatcher()->vkCmdSetDepthTestEnable( static_cast( m_commandBuffer ), static_cast( depthTestEnable ) ); + } + + // wrapper function for command vkCmdSetDepthWriteEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnable.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnable( Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthWriteEnable && + "Function requires or or " ); + + getDispatcher()->vkCmdSetDepthWriteEnable( static_cast( m_commandBuffer ), static_cast( depthWriteEnable ) ); + } + + // wrapper function for command vkCmdSetDepthCompareOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOp.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOp( CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthCompareOp && + "Function requires or or " ); + + getDispatcher()->vkCmdSetDepthCompareOp( static_cast( m_commandBuffer ), static_cast( depthCompareOp ) ); + } + + // wrapper function for command vkCmdSetDepthBoundsTestEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnable.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBoundsTestEnable && + "Function requires or or " ); + + getDispatcher()->vkCmdSetDepthBoundsTestEnable( static_cast( m_commandBuffer ), static_cast( depthBoundsTestEnable ) ); + } + + // wrapper function for command vkCmdSetStencilTestEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnable.html + VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnable( Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilTestEnable && + "Function requires or or " ); + + getDispatcher()->vkCmdSetStencilTestEnable( static_cast( m_commandBuffer ), static_cast( stencilTestEnable ) ); + } + + // wrapper function for command vkCmdSetStencilOp, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOp.html + VULKAN_HPP_INLINE void CommandBuffer::setStencilOp( + StencilFaceFlags faceMask, StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilOp && + "Function requires or or " ); + + getDispatcher()->vkCmdSetStencilOp( static_cast( m_commandBuffer ), + static_cast( faceMask ), + static_cast( failOp ), + static_cast( passOp ), + static_cast( depthFailOp ), + static_cast( compareOp ) ); + } + + // wrapper function for command vkCmdSetRasterizerDiscardEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnable.html + VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRasterizerDiscardEnable && + "Function requires or or " ); + + getDispatcher()->vkCmdSetRasterizerDiscardEnable( static_cast( m_commandBuffer ), static_cast( rasterizerDiscardEnable ) ); + } + + // wrapper function for command vkCmdSetDepthBiasEnable, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnable.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthBiasEnable( Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBiasEnable && + "Function requires or or " ); + + getDispatcher()->vkCmdSetDepthBiasEnable( static_cast( m_commandBuffer ), static_cast( depthBiasEnable ) ); + } + + // wrapper function for command vkCmdSetPrimitiveRestartEnable, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnable.html + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnable( Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPrimitiveRestartEnable && + "Function requires or or " ); + + getDispatcher()->vkCmdSetPrimitiveRestartEnable( static_cast( m_commandBuffer ), static_cast( primitiveRestartEnable ) ); + } + + //=== VK_VERSION_1_4 === + + // wrapper function for command vkMapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::mapMemory2( MemoryMapInfo const & memoryMapInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkMapMemory2 && "Function requires or " ); + + void * pData; + Result result = static_cast( + getDispatcher()->vkMapMemory2( static_cast( m_device ), reinterpret_cast( &memoryMapInfo ), &pData ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::mapMemory2" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pData ) ); + } + + // wrapper function for command vkUnmapMemory2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::unmapMemory2( MemoryUnmapInfo const & memoryUnmapInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUnmapMemory2 && "Function requires or " ); + + Result result = static_cast( + getDispatcher()->vkUnmapMemory2( static_cast( m_device ), reinterpret_cast( &memoryUnmapInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::unmapMemory2" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetDeviceImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 + Device::getImageSubresourceLayout( DeviceImageSubresourceInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSubresourceLayout && + "Function requires or " ); + + SubresourceLayout2 layout; + getDispatcher()->vkGetDeviceImageSubresourceLayout( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkGetDeviceImageSubresourceLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayout.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getImageSubresourceLayout( DeviceImageSubresourceInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSubresourceLayout && + "Function requires or " ); + + StructureChain structureChain; + SubresourceLayout2 & layout = structureChain.template get(); + getDispatcher()->vkGetDeviceImageSubresourceLayout( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &layout ) ); + + return structureChain; + } + + // wrapper function for command vkGetImageSubresourceLayout2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Image::getSubresourceLayout2( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetImageSubresourceLayout2 && + "Function requires or or or " ); + + SubresourceLayout2 layout; + getDispatcher()->vkGetImageSubresourceLayout2( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkGetImageSubresourceLayout2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Image::getSubresourceLayout2( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetImageSubresourceLayout2 && + "Function requires or or or " ); + + StructureChain structureChain; + SubresourceLayout2 & layout = structureChain.template get(); + getDispatcher()->vkGetImageSubresourceLayout2( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return structureChain; + } + + // wrapper function for command vkCopyMemoryToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImage.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::copyMemoryToImage( CopyMemoryToImageInfo const & copyMemoryToImageInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToImage && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkCopyMemoryToImage( + static_cast( m_device ), reinterpret_cast( ©MemoryToImageInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMemoryToImage" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCopyImageToMemory, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemory.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::copyImageToMemory( CopyImageToMemoryInfo const & copyImageToMemoryInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyImageToMemory && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkCopyImageToMemory( + static_cast( m_device ), reinterpret_cast( ©ImageToMemoryInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyImageToMemory" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCopyImageToImage, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImage.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::copyImageToImage( CopyImageToImageInfo const & copyImageToImageInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyImageToImage && "Function requires or " ); + + Result result = static_cast( + getDispatcher()->vkCopyImageToImage( static_cast( m_device ), reinterpret_cast( ©ImageToImageInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyImageToImage" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkTransitionImageLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayout.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::transitionImageLayout( ArrayProxy const & transitions ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkTransitionImageLayout && + "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkTransitionImageLayout( + static_cast( m_device ), transitions.size(), reinterpret_cast( transitions.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::transitionImageLayout" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdPushDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet.html + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSet && "Function requires or " ); + + getDispatcher()->vkCmdPushDescriptorSet( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( layout ), + set, + descriptorWrites.size(), + reinterpret_cast( descriptorWrites.data() ) ); + } + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate.html + template + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + DataType const & data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdPushDescriptorSetWithTemplate && + "Function requires or or " ); + + getDispatcher()->vkCmdPushDescriptorSetWithTemplate( static_cast( m_commandBuffer ), + static_cast( descriptorUpdateTemplate ), + static_cast( layout ), + set, + reinterpret_cast( &data ) ); + } + + // wrapper function for command vkCmdBindDescriptorSets2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2.html + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets2( BindDescriptorSetsInfo const & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorSets2 && + "Function requires or " ); + + getDispatcher()->vkCmdBindDescriptorSets2( static_cast( m_commandBuffer ), + reinterpret_cast( &bindDescriptorSetsInfo ) ); + } + + // wrapper function for command vkCmdPushConstants2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2.html + VULKAN_HPP_INLINE void CommandBuffer::pushConstants2( PushConstantsInfo const & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushConstants2 && "Function requires or " ); + + getDispatcher()->vkCmdPushConstants2( static_cast( m_commandBuffer ), + reinterpret_cast( &pushConstantsInfo ) ); + } + + // wrapper function for command vkCmdPushDescriptorSet2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2.html + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet2( PushDescriptorSetInfo const & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSet2 && "Function requires or " ); + + getDispatcher()->vkCmdPushDescriptorSet2( static_cast( m_commandBuffer ), + reinterpret_cast( &pushDescriptorSetInfo ) ); + } + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2.html + VULKAN_HPP_INLINE void + CommandBuffer::pushDescriptorSetWithTemplate2( PushDescriptorSetWithTemplateInfo const & pushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetWithTemplate2 && + "Function requires or " ); + + getDispatcher()->vkCmdPushDescriptorSetWithTemplate2( + static_cast( m_commandBuffer ), reinterpret_cast( &pushDescriptorSetWithTemplateInfo ) ); + } + + // wrapper function for command vkCmdSetLineStipple, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStipple.html + VULKAN_HPP_INLINE void CommandBuffer::setLineStipple( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStipple && + "Function requires or or " ); + + getDispatcher()->vkCmdSetLineStipple( static_cast( m_commandBuffer ), lineStippleFactor, lineStipplePattern ); + } + + // wrapper function for command vkCmdBindIndexBuffer2, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2.html + VULKAN_HPP_INLINE void + CommandBuffer::bindIndexBuffer2( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset, DeviceSize size, IndexType indexType ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindIndexBuffer2 && "Function requires or " ); + + getDispatcher()->vkCmdBindIndexBuffer2( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( size ), + static_cast( indexType ) ); + } + + // wrapper function for command vkGetRenderingAreaGranularity, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularity.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Extent2D Device::getRenderingAreaGranularity( RenderingAreaInfo const & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRenderingAreaGranularity && + "Function requires or " ); + + Extent2D granularity; + getDispatcher()->vkGetRenderingAreaGranularity( static_cast( m_device ), + reinterpret_cast( &renderingAreaInfo ), + reinterpret_cast( &granularity ) ); + + return granularity; + } + + // wrapper function for command vkCmdSetRenderingAttachmentLocations, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocations.html + VULKAN_HPP_INLINE void CommandBuffer::setRenderingAttachmentLocations( RenderingAttachmentLocationInfo const & locationInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRenderingAttachmentLocations && + "Function requires or " ); + + getDispatcher()->vkCmdSetRenderingAttachmentLocations( static_cast( m_commandBuffer ), + reinterpret_cast( &locationInfo ) ); + } + + // wrapper function for command vkCmdSetRenderingInputAttachmentIndices, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndices.html + VULKAN_HPP_INLINE void + CommandBuffer::setRenderingInputAttachmentIndices( RenderingInputAttachmentIndexInfo const & inputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRenderingInputAttachmentIndices && + "Function requires or " ); + + getDispatcher()->vkCmdSetRenderingInputAttachmentIndices( static_cast( m_commandBuffer ), + reinterpret_cast( &inputAttachmentIndexInfo ) ); + } + + //=== VK_KHR_surface === + + // wrapper function for command vkGetPhysicalDeviceSurfaceSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceSupportKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR && "Function requires " ); + + Bool32 supported; + Result result = static_cast( getDispatcher()->vkGetPhysicalDeviceSurfaceSupportKHR( static_cast( m_physicalDevice ), + queueFamilyIndex, + static_cast( surface ), + reinterpret_cast( &supported ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceSupportKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( supported ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilitiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR && + "Function requires " ); + + SurfaceCapabilitiesKHR surfaceCapabilities; + Result result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilitiesKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + reinterpret_cast( &surfaceCapabilities ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilitiesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( surfaceCapabilities ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormatsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormatsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR && "Function requires " ); + + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR( + static_cast( m_physicalDevice ), static_cast( surface ), &surfaceFormatCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceSurfaceFormatsKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormatsKHR" ); + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( surfaceFormats ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR && + "Function requires " ); + + std::vector presentModes; + uint32_t presentModeCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR( + static_cast( m_physicalDevice ), static_cast( surface ), &presentModeCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = + static_cast( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModesKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + &presentModeCount, + reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModesKHR" ); + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( presentModes ) ); + } + + //=== VK_KHR_swapchain === + + // wrapper function for command vkCreateSwapchainKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSwapchainKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createSwapchainKHR( SwapchainCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateSwapchainKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain; + Result result = static_cast( getDispatcher()->vkCreateSwapchainKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &swapchain ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSwapchainKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SwapchainKHR( *this, *reinterpret_cast( &swapchain ), allocator ) ); + } + + // wrapper function for command vkGetSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainImagesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type SwapchainKHR::getImages() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainImagesKHR && "Function requires " ); + + std::vector swapchainImages; + uint32_t swapchainImageCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetSwapchainImagesKHR( + static_cast( m_device ), static_cast( m_swapchainKHR ), &swapchainImageCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && swapchainImageCount ) + { + swapchainImages.resize( swapchainImageCount ); + result = static_cast( getDispatcher()->vkGetSwapchainImagesKHR( static_cast( m_device ), + static_cast( m_swapchainKHR ), + &swapchainImageCount, + reinterpret_cast( swapchainImages.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getImages" ); + VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() ); + if ( swapchainImageCount < swapchainImages.size() ) + { + swapchainImages.resize( swapchainImageCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( swapchainImages ) ); + } + + // wrapper function for command vkAcquireNextImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImageKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue + SwapchainKHR::acquireNextImage( uint64_t timeout, VULKAN_HPP_NAMESPACE::Semaphore semaphore, VULKAN_HPP_NAMESPACE::Fence fence ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImageKHR && "Function requires " ); + + uint32_t imageIndex; + Result result = static_cast( getDispatcher()->vkAcquireNextImageKHR( static_cast( m_device ), + static_cast( m_swapchainKHR ), + timeout, + static_cast( semaphore ), + static_cast( fence ), + &imageIndex ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::acquireNextImage", + { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::acquireNextImage", + { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } ); +# endif + + return { result, imageIndex }; + } + + // wrapper function for command vkQueuePresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueuePresentKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::presentKHR( PresentInfoKHR const & presentInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueuePresentKHR && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkQueuePresentKHR( static_cast( m_queue ), reinterpret_cast( &presentInfo ) ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } ); +# endif + + return static_cast( result ); + } + + // wrapper function for command vkGetDeviceGroupPresentCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPresentCapabilitiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getGroupPresentCapabilitiesKHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR && + "Function requires or " ); + + DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities; + Result result = static_cast( getDispatcher()->vkGetDeviceGroupPresentCapabilitiesKHR( + static_cast( m_device ), reinterpret_cast( &deviceGroupPresentCapabilities ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getGroupPresentCapabilitiesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( deviceGroupPresentCapabilities ) ); + } + + // wrapper function for command vkGetDeviceGroupSurfacePresentModesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR && + "Function requires or " ); + + DeviceGroupPresentModeFlagsKHR modes; + Result result = static_cast( getDispatcher()->vkGetDeviceGroupSurfacePresentModesKHR( + static_cast( m_device ), static_cast( surface ), reinterpret_cast( &modes ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getGroupSurfacePresentModesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( modes ) ); + } + + // wrapper function for command vkGetPhysicalDevicePresentRectanglesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDevicePresentRectanglesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR && + "Function requires or " ); + + std::vector rects; + uint32_t rectCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR( + static_cast( m_physicalDevice ), static_cast( surface ), &rectCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && rectCount ) + { + rects.resize( rectCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDevicePresentRectanglesKHR( static_cast( m_physicalDevice ), + static_cast( surface ), + &rectCount, + reinterpret_cast( rects.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getPresentRectanglesKHR" ); + VULKAN_HPP_ASSERT( rectCount <= rects.size() ); + if ( rectCount < rects.size() ) + { + rects.resize( rectCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( rects ) ); + } + + // wrapper function for command vkAcquireNextImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireNextImage2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::acquireNextImage2KHR( AcquireNextImageInfoKHR const & acquireInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireNextImage2KHR && "Function requires or " ); + + uint32_t imageIndex; + Result result = static_cast( getDispatcher()->vkAcquireNextImage2KHR( + static_cast( m_device ), reinterpret_cast( &acquireInfo ), &imageIndex ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::acquireNextImage2KHR", + { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::acquireNextImage2KHR", + { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } ); +# endif + + return { result, imageIndex }; + } + + //=== VK_KHR_display === + + // wrapper function for command vkGetPhysicalDeviceDisplayPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPropertiesKHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR( static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayPropertiesKHR( + static_cast( m_physicalDevice ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayPropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceDisplayPlanePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlanePropertiesKHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR( static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + static_cast( m_physicalDevice ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlanePropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDisplayPlaneSupportedDisplaysKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayPlaneSupportedDisplaysKHR && + "Function requires " ); + + std::vector displays; + uint32_t displayCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetDisplayPlaneSupportedDisplaysKHR( static_cast( m_physicalDevice ), planeIndex, &displayCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && displayCount ) + { + displays.resize( displayCount ); + result = static_cast( getDispatcher()->vkGetDisplayPlaneSupportedDisplaysKHR( + static_cast( m_physicalDevice ), planeIndex, &displayCount, reinterpret_cast( displays.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" ); + std::vector displaysRAII; + if ( result == Result::eSuccess ) + { + displaysRAII.reserve( displays.size() ); + for ( auto & display : displays ) + { + displaysRAII.emplace_back( *this, *reinterpret_cast( &display ) ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( displaysRAII ) ); + } + + // wrapper function for command vkGetDisplayModePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModePropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type DisplayKHR::getModeProperties() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModePropertiesKHR && "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetDisplayModePropertiesKHR( + static_cast( m_physicalDevice ), static_cast( m_displayKHR ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetDisplayModePropertiesKHR( static_cast( m_physicalDevice ), + static_cast( m_displayKHR ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayKHR::getModeProperties" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkCreateDisplayModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayModeKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + DisplayKHR::createMode( DisplayModeCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDisplayModeKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::DisplayModeKHR mode; + Result result = static_cast( getDispatcher()->vkCreateDisplayModeKHR( static_cast( m_physicalDevice ), + static_cast( m_displayKHR ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &mode ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayKHR::createMode" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, DisplayModeKHR( *this, *reinterpret_cast( &mode ) ) ); + } + + // wrapper function for command vkGetDisplayPlaneCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilitiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + DisplayModeKHR::getDisplayPlaneCapabilities( uint32_t planeIndex ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR && "Function requires " ); + + DisplayPlaneCapabilitiesKHR capabilities; + Result result = + static_cast( getDispatcher()->vkGetDisplayPlaneCapabilitiesKHR( static_cast( m_physicalDevice ), + static_cast( m_displayModeKHR ), + planeIndex, + reinterpret_cast( &capabilities ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayModeKHR::getDisplayPlaneCapabilities" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( capabilities ) ); + } + + // wrapper function for command vkCreateDisplayPlaneSurfaceKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDisplayPlaneSurfaceKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createDisplayPlaneSurfaceKHR( DisplaySurfaceCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDisplayPlaneSurfaceKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = + static_cast( getDispatcher()->vkCreateDisplayPlaneSurfaceKHR( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createDisplayPlaneSurfaceKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } + + //=== VK_KHR_display_swapchain === + + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createSharedSwapchainsKHR( ArrayProxy const & createInfos, Optional allocator ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateSharedSwapchainsKHR && "Function requires " ); + + std::vector swapchains( createInfos.size() ); + Result result = + static_cast( getDispatcher()->vkCreateSharedSwapchainsKHR( static_cast( m_device ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( swapchains.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSharedSwapchainsKHR" ); + std::vector swapchainsRAII; + if ( result == Result::eSuccess ) + { + swapchainsRAII.reserve( swapchains.size() ); + for ( auto & swapchain : swapchains ) + { + swapchainsRAII.emplace_back( *this, *reinterpret_cast( &swapchain ), allocator ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( swapchainsRAII ) ); + } + + // wrapper function for command vkCreateSharedSwapchainsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSharedSwapchainsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createSharedSwapchainKHR( SwapchainCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateSharedSwapchainsKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain; + Result result = static_cast( getDispatcher()->vkCreateSharedSwapchainsKHR( static_cast( m_device ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &swapchain ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSharedSwapchainKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SwapchainKHR( *this, *reinterpret_cast( &swapchain ), allocator ) ); + } + +# if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + // wrapper function for command vkCreateXlibSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXlibSurfaceKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createXlibSurfaceKHR( XlibSurfaceCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateXlibSurfaceKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateXlibSurfaceKHR( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createXlibSurfaceKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } + + // wrapper function for command vkGetPhysicalDeviceXlibPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXlibPresentationSupportKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, + Display & dpy, + VisualID visualID ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR && + "Function requires " ); + + VkBool32 result = + getDispatcher()->vkGetPhysicalDeviceXlibPresentationSupportKHR( static_cast( m_physicalDevice ), queueFamilyIndex, &dpy, visualID ); + + return static_cast( result ); + } +# endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +# if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + // wrapper function for command vkCreateXcbSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateXcbSurfaceKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createXcbSurfaceKHR( XcbSurfaceCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateXcbSurfaceKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateXcbSurfaceKHR( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createXcbSurfaceKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } + + // wrapper function for command vkGetPhysicalDeviceXcbPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceXcbPresentationSupportKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, + xcb_connection_t & connection, + xcb_visualid_t visual_id ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR && + "Function requires " ); + + VkBool32 result = getDispatcher()->vkGetPhysicalDeviceXcbPresentationSupportKHR( + static_cast( m_physicalDevice ), queueFamilyIndex, &connection, visual_id ); + + return static_cast( result ); + } +# endif /*VK_USE_PLATFORM_XCB_KHR*/ + +# if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + // wrapper function for command vkCreateWaylandSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWaylandSurfaceKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createWaylandSurfaceKHR( WaylandSurfaceCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateWaylandSurfaceKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateWaylandSurfaceKHR( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createWaylandSurfaceKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } + + // wrapper function for command vkGetPhysicalDeviceWaylandPresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWaylandPresentationSupportKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, + struct wl_display & display ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR && + "Function requires " ); + + VkBool32 result = + getDispatcher()->vkGetPhysicalDeviceWaylandPresentationSupportKHR( static_cast( m_physicalDevice ), queueFamilyIndex, &display ); + + return static_cast( result ); + } +# endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + // wrapper function for command vkCreateAndroidSurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAndroidSurfaceKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createAndroidSurfaceKHR( AndroidSurfaceCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateAndroidSurfaceKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateAndroidSurfaceKHR( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createAndroidSurfaceKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + // wrapper function for command vkCreateWin32SurfaceKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateWin32SurfaceKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createWin32SurfaceKHR( Win32SurfaceCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateWin32SurfaceKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateWin32SurfaceKHR( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createWin32SurfaceKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } + + // wrapper function for command vkGetPhysicalDeviceWin32PresentationSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceWin32PresentationSupportKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR && + "Function requires " ); + + VkBool32 result = getDispatcher()->vkGetPhysicalDeviceWin32PresentationSupportKHR( static_cast( m_physicalDevice ), queueFamilyIndex ); + + return static_cast( result ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + // wrapper function for command vkCreateDebugReportCallbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugReportCallbackEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createDebugReportCallbackEXT( DebugReportCallbackCreateInfoEXT const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDebugReportCallbackEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback; + Result result = + static_cast( getDispatcher()->vkCreateDebugReportCallbackEXT( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &callback ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createDebugReportCallbackEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, DebugReportCallbackEXT( *this, *reinterpret_cast( &callback ), allocator ) ); + } + + // wrapper function for command vkDebugReportMessageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugReportMessageEXT.html + VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( DebugReportFlagsEXT flags, + DebugReportObjectTypeEXT objectType_, + uint64_t object, + size_t location, + int32_t messageCode, + std::string const & layerPrefix, + std::string const & message ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDebugReportMessageEXT && "Function requires " ); + + getDispatcher()->vkDebugReportMessageEXT( static_cast( m_instance ), + static_cast( flags ), + static_cast( objectType_ ), + object, + location, + messageCode, + layerPrefix.c_str(), + message.c_str() ); + } + + //=== VK_EXT_debug_marker === + + // wrapper function for command vkDebugMarkerSetObjectTagEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectTagEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT const & tagInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectTagEXT && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkDebugMarkerSetObjectTagEXT( + static_cast( m_device ), reinterpret_cast( &tagInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::debugMarkerSetObjectTagEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkDebugMarkerSetObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDebugMarkerSetObjectNameEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT const & nameInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDebugMarkerSetObjectNameEXT && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkDebugMarkerSetObjectNameEXT( + static_cast( m_device ), reinterpret_cast( &nameInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::debugMarkerSetObjectNameEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdDebugMarkerBeginEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerBeginEXT.html + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT const & markerInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerBeginEXT && "Function requires " ); + + getDispatcher()->vkCmdDebugMarkerBeginEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &markerInfo ) ); + } + + // wrapper function for command vkCmdDebugMarkerEndEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerEndEXT.html + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerEndEXT && "Function requires " ); + + getDispatcher()->vkCmdDebugMarkerEndEXT( static_cast( m_commandBuffer ) ); + } + + // wrapper function for command vkCmdDebugMarkerInsertEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDebugMarkerInsertEXT.html + VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT const & markerInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDebugMarkerInsertEXT && "Function requires " ); + + getDispatcher()->vkCmdDebugMarkerInsertEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &markerInfo ) ); + } + + //=== VK_KHR_video_queue === + + // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getVideoCapabilitiesKHR( VideoProfileInfoKHR const & videoProfile ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR && + "Function requires " ); + + VideoCapabilitiesKHR capabilities; + Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( &videoProfile ), + reinterpret_cast( &capabilities ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( capabilities ) ); + } + + // wrapper function for command vkGetPhysicalDeviceVideoCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoCapabilitiesKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getVideoCapabilitiesKHR( VideoProfileInfoKHR const & videoProfile ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR && + "Function requires " ); + + StructureChain structureChain; + VideoCapabilitiesKHR & capabilities = structureChain.template get(); + Result result = + static_cast( getDispatcher()->vkGetPhysicalDeviceVideoCapabilitiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( &videoProfile ), + reinterpret_cast( &capabilities ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoCapabilitiesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) ); + } + + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR && + "Function requires " ); + + std::vector videoFormatProperties; + uint32_t videoFormatPropertyCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && videoFormatPropertyCount ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + reinterpret_cast( videoFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" ); + VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() ); + if ( videoFormatPropertyCount < videoFormatProperties.size() ) + { + videoFormatProperties.resize( videoFormatPropertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( videoFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceVideoFormatPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoFormatPropertiesKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getVideoFormatPropertiesKHR( PhysicalDeviceVideoFormatInfoKHR const & videoFormatInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR && + "Function requires " ); + + std::vector structureChains; + std::vector videoFormatProperties; + uint32_t videoFormatPropertyCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && videoFormatPropertyCount ) + { + structureChains.resize( videoFormatPropertyCount ); + videoFormatProperties.resize( videoFormatPropertyCount ); + for ( uint32_t i = 0; i < videoFormatPropertyCount; i++ ) + { + videoFormatProperties[i].pNext = structureChains[i].template get().pNext; + } + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceVideoFormatPropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( &videoFormatInfo ), + &videoFormatPropertyCount, + reinterpret_cast( videoFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoFormatPropertiesKHR" ); + VULKAN_HPP_ASSERT( videoFormatPropertyCount <= videoFormatProperties.size() ); + if ( videoFormatPropertyCount < videoFormatProperties.size() ) + { + structureChains.resize( videoFormatPropertyCount ); + } + for ( uint32_t i = 0; i < videoFormatPropertyCount; i++ ) + { + structureChains[i].template get() = videoFormatProperties[i]; + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChains ) ); + } + + // wrapper function for command vkCreateVideoSessionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createVideoSessionKHR( VideoSessionCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateVideoSessionKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::VideoSessionKHR videoSession; + Result result = static_cast( getDispatcher()->vkCreateVideoSessionKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &videoSession ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createVideoSessionKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, VideoSessionKHR( *this, *reinterpret_cast( &videoSession ), allocator ) ); + } + + // wrapper function for command vkGetVideoSessionMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetVideoSessionMemoryRequirementsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + VideoSessionKHR::getMemoryRequirements() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR && + "Function requires " ); + + std::vector memoryRequirements; + uint32_t memoryRequirementsCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR( + static_cast( m_device ), static_cast( m_videoSessionKHR ), &memoryRequirementsCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && memoryRequirementsCount ) + { + memoryRequirements.resize( memoryRequirementsCount ); + result = static_cast( + getDispatcher()->vkGetVideoSessionMemoryRequirementsKHR( static_cast( m_device ), + static_cast( m_videoSessionKHR ), + &memoryRequirementsCount, + reinterpret_cast( memoryRequirements.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::VideoSessionKHR::getMemoryRequirements" ); + VULKAN_HPP_ASSERT( memoryRequirementsCount <= memoryRequirements.size() ); + if ( memoryRequirementsCount < memoryRequirements.size() ) + { + memoryRequirements.resize( memoryRequirementsCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryRequirements ) ); + } + + // wrapper function for command vkBindVideoSessionMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindVideoSessionMemoryKHR.html + VULKAN_HPP_INLINE typename ResultValueType::type + VideoSessionKHR::bindMemory( ArrayProxy const & bindSessionMemoryInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindVideoSessionMemoryKHR && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkBindVideoSessionMemoryKHR( static_cast( m_device ), + static_cast( m_videoSessionKHR ), + bindSessionMemoryInfos.size(), + reinterpret_cast( bindSessionMemoryInfos.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::VideoSessionKHR::bindMemory" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCreateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateVideoSessionParametersKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createVideoSessionParametersKHR( VideoSessionParametersCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateVideoSessionParametersKHR && "Function requires " ); + + VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR videoSessionParameters; + Result result = + static_cast( getDispatcher()->vkCreateVideoSessionParametersKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &videoSessionParameters ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createVideoSessionParametersKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, VideoSessionParametersKHR( *this, *reinterpret_cast( &videoSessionParameters ), allocator ) ); + } + + // wrapper function for command vkUpdateVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateVideoSessionParametersKHR.html + VULKAN_HPP_INLINE typename ResultValueType::type VideoSessionParametersKHR::update( VideoSessionParametersUpdateInfoKHR const & updateInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateVideoSessionParametersKHR && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkUpdateVideoSessionParametersKHR( static_cast( m_device ), + static_cast( m_videoSessionParametersKHR ), + reinterpret_cast( &updateInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::VideoSessionParametersKHR::update" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdBeginVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginVideoCodingKHR.html + VULKAN_HPP_INLINE void CommandBuffer::beginVideoCodingKHR( VideoBeginCodingInfoKHR const & beginInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginVideoCodingKHR && "Function requires " ); + + getDispatcher()->vkCmdBeginVideoCodingKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &beginInfo ) ); + } + + // wrapper function for command vkCmdEndVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndVideoCodingKHR.html + VULKAN_HPP_INLINE void CommandBuffer::endVideoCodingKHR( VideoEndCodingInfoKHR const & endCodingInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndVideoCodingKHR && "Function requires " ); + + getDispatcher()->vkCmdEndVideoCodingKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &endCodingInfo ) ); + } + + // wrapper function for command vkCmdControlVideoCodingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdControlVideoCodingKHR.html + VULKAN_HPP_INLINE void CommandBuffer::controlVideoCodingKHR( VideoCodingControlInfoKHR const & codingControlInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdControlVideoCodingKHR && "Function requires " ); + + getDispatcher()->vkCmdControlVideoCodingKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &codingControlInfo ) ); + } + + //=== VK_KHR_video_decode_queue === + + // wrapper function for command vkCmdDecodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecodeVideoKHR.html + VULKAN_HPP_INLINE void CommandBuffer::decodeVideoKHR( VideoDecodeInfoKHR const & decodeInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecodeVideoKHR && "Function requires " ); + + getDispatcher()->vkCmdDecodeVideoKHR( static_cast( m_commandBuffer ), reinterpret_cast( &decodeInfo ) ); + } + + //=== VK_EXT_transform_feedback === + + // wrapper function for command vkCmdBindTransformFeedbackBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffersEXT.html + VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT && + "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindTransformFeedbackBuffersEXT: buffers.size() != sizes.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBindTransformFeedbackBuffersEXT( static_cast( m_commandBuffer ), + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ) ); + } + + // wrapper function for command vkCmdBeginTransformFeedbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedbackEXT.html + VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginTransformFeedbackEXT && "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() ); +# else + if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::beginTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBeginTransformFeedbackEXT( static_cast( m_commandBuffer ), + firstCounterBuffer, + counterBuffers.size(), + reinterpret_cast( counterBuffers.data() ), + reinterpret_cast( counterBufferOffsets.data() ) ); + } + + // wrapper function for command vkCmdEndTransformFeedbackEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedbackEXT.html + VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( uint32_t firstCounterBuffer, + ArrayProxy const & counterBuffers, + ArrayProxy const & counterBufferOffsets ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndTransformFeedbackEXT && "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( counterBufferOffsets.empty() || counterBuffers.size() == counterBufferOffsets.size() ); +# else + if ( !counterBufferOffsets.empty() && counterBuffers.size() != counterBufferOffsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::endTransformFeedbackEXT: counterBuffers.size() != counterBufferOffsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdEndTransformFeedbackEXT( static_cast( m_commandBuffer ), + firstCounterBuffer, + counterBuffers.size(), + reinterpret_cast( counterBuffers.data() ), + reinterpret_cast( counterBufferOffsets.data() ) ); + } + + // wrapper function for command vkCmdBeginQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginQueryIndexedEXT.html + VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t query, + QueryControlFlags flags, + uint32_t index ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginQueryIndexedEXT && "Function requires " ); + + getDispatcher()->vkCmdBeginQueryIndexedEXT( + static_cast( m_commandBuffer ), static_cast( queryPool ), query, static_cast( flags ), index ); + } + + // wrapper function for command vkCmdEndQueryIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndQueryIndexedEXT.html + VULKAN_HPP_INLINE void + CommandBuffer::endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, uint32_t index ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndQueryIndexedEXT && "Function requires " ); + + getDispatcher()->vkCmdEndQueryIndexedEXT( static_cast( m_commandBuffer ), static_cast( queryPool ), query, index ); + } + + // wrapper function for command vkCmdDrawIndirectByteCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCountEXT.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCountEXT( uint32_t instanceCount, + uint32_t firstInstance, + VULKAN_HPP_NAMESPACE::Buffer counterBuffer, + DeviceSize counterBufferOffset, + uint32_t counterOffset, + uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectByteCountEXT && "Function requires " ); + + getDispatcher()->vkCmdDrawIndirectByteCountEXT( static_cast( m_commandBuffer ), + instanceCount, + firstInstance, + static_cast( counterBuffer ), + static_cast( counterBufferOffset ), + counterOffset, + vertexStride ); + } + + //=== VK_NVX_binary_import === + + // wrapper function for command vkCreateCuModuleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuModuleNVX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createCuModuleNVX( CuModuleCreateInfoNVX const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateCuModuleNVX && "Function requires " ); + + VULKAN_HPP_NAMESPACE::CuModuleNVX module; + Result result = static_cast( getDispatcher()->vkCreateCuModuleNVX( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &module ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createCuModuleNVX" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, CuModuleNVX( *this, *reinterpret_cast( &module ), allocator ) ); + } + + // wrapper function for command vkCreateCuFunctionNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCuFunctionNVX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createCuFunctionNVX( CuFunctionCreateInfoNVX const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateCuFunctionNVX && "Function requires " ); + + VULKAN_HPP_NAMESPACE::CuFunctionNVX function; + Result result = static_cast( getDispatcher()->vkCreateCuFunctionNVX( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &function ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createCuFunctionNVX" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, + CuFunctionNVX( *this, *reinterpret_cast( &function ), allocator ) ); + } + + // wrapper function for command vkCmdCuLaunchKernelNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCuLaunchKernelNVX.html + VULKAN_HPP_INLINE void CommandBuffer::cuLaunchKernelNVX( CuLaunchInfoNVX const & launchInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCuLaunchKernelNVX && "Function requires " ); + + getDispatcher()->vkCmdCuLaunchKernelNVX( static_cast( m_commandBuffer ), reinterpret_cast( &launchInfo ) ); + } + + //=== VK_NVX_image_view_handle === + + // wrapper function for command vkGetImageViewHandleNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandleNVX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( ImageViewHandleInfoNVX const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewHandleNVX && "Function requires " ); + + uint32_t result = + getDispatcher()->vkGetImageViewHandleNVX( static_cast( m_device ), reinterpret_cast( &info ) ); + + return result; + } + + // wrapper function for command vkGetImageViewHandle64NVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewHandle64NVX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getImageViewHandle64NVX( ImageViewHandleInfoNVX const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewHandle64NVX && "Function requires " ); + + uint64_t result = + getDispatcher()->vkGetImageViewHandle64NVX( static_cast( m_device ), reinterpret_cast( &info ) ); + + return result; + } + + // wrapper function for command vkGetImageViewAddressNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewAddressNVX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type ImageView::getAddressNVX() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewAddressNVX && "Function requires " ); + + ImageViewAddressPropertiesNVX properties; + Result result = static_cast( getDispatcher()->vkGetImageViewAddressNVX( + static_cast( m_device ), static_cast( m_imageView ), reinterpret_cast( &properties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::ImageView::getAddressNVX" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDeviceCombinedImageSamplerIndexNVX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceCombinedImageSamplerIndexNVX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getCombinedImageSamplerIndexNVX( uint64_t imageViewIndex, + uint64_t samplerIndex ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceCombinedImageSamplerIndexNVX && + "Function requires " ); + + uint64_t result = getDispatcher()->vkGetDeviceCombinedImageSamplerIndexNVX( static_cast( m_device ), imageViewIndex, samplerIndex ); + + return result; + } + + //=== VK_AMD_draw_indirect_count === + + // wrapper function for command vkCmdDrawIndirectCountAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountAMD.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountAMD && + "Function requires or or " ); + + getDispatcher()->vkCmdDrawIndirectCountAMD( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + // wrapper function for command vkCmdDrawIndexedIndirectCountAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountAMD.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdDrawIndexedIndirectCountAMD && + "Function requires or or " ); + + getDispatcher()->vkCmdDrawIndexedIndirectCountAMD( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_AMD_shader_info === + + // wrapper function for command vkGetShaderInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInfoAMD.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Pipeline::getShaderInfoAMD( ShaderStageFlagBits shaderStage, + ShaderInfoTypeAMD infoType ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderInfoAMD && "Function requires " ); + + std::vector info; + size_t infoSize; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetShaderInfoAMD( static_cast( m_device ), + static_cast( m_pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && infoSize ) + { + info.resize( infoSize ); + result = static_cast( getDispatcher()->vkGetShaderInfoAMD( static_cast( m_device ), + static_cast( m_pipeline ), + static_cast( shaderStage ), + static_cast( infoType ), + &infoSize, + reinterpret_cast( info.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getShaderInfoAMD" ); + VULKAN_HPP_ASSERT( infoSize <= info.size() ); + if ( infoSize < info.size() ) + { + info.resize( infoSize ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( info ) ); + } + + //=== VK_KHR_dynamic_rendering === + + // wrapper function for command vkCmdBeginRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderingKHR.html + VULKAN_HPP_INLINE void CommandBuffer::beginRenderingKHR( RenderingInfo const & renderingInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderingKHR && + "Function requires or " ); + + getDispatcher()->vkCmdBeginRenderingKHR( static_cast( m_commandBuffer ), reinterpret_cast( &renderingInfo ) ); + } + + // wrapper function for command vkCmdEndRenderingKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderingKHR.html + VULKAN_HPP_INLINE void CommandBuffer::endRenderingKHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderingKHR && "Function requires or " ); + + getDispatcher()->vkCmdEndRenderingKHR( static_cast( m_commandBuffer ) ); + } + +# if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + // wrapper function for command vkCreateStreamDescriptorSurfaceGGP, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateStreamDescriptorSurfaceGGP.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createStreamDescriptorSurfaceGGP( StreamDescriptorSurfaceCreateInfoGGP const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateStreamDescriptorSurfaceGGP && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( + getDispatcher()->vkCreateStreamDescriptorSurfaceGGP( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createStreamDescriptorSurfaceGGP" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } +# endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalImageFormatPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalImageFormatPropertiesNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, + ImageType type, + ImageTiling tiling, + ImageUsageFlags usage, + ImageCreateFlags flags, + ExternalMemoryHandleTypeFlagsNV externalHandleType ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV && + "Function requires " ); + + ExternalImageFormatPropertiesNV externalImageFormatProperties; + Result result = static_cast( getDispatcher()->vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + static_cast( m_physicalDevice ), + static_cast( format ), + static_cast( type ), + static_cast( tiling ), + static_cast( usage ), + static_cast( flags ), + static_cast( externalHandleType ), + reinterpret_cast( &externalImageFormatProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getExternalImageFormatPropertiesNV" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( externalImageFormatProperties ) ); + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_external_memory_win32 === + + // wrapper function for command vkGetMemoryWin32HandleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + DeviceMemory::getMemoryWin32HandleNV( ExternalMemoryHandleTypeFlagsNV handleType ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandleNV && "Function requires " ); + + HANDLE handle; + Result result = static_cast( getDispatcher()->vkGetMemoryWin32HandleNV( static_cast( m_device ), + static_cast( m_deviceMemory ), + static_cast( handleType ), + &handle ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DeviceMemory::getMemoryWin32HandleNV" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( handle ) ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_get_physical_device_properties2 === + + // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2KHR && + "Function requires or " ); + + PhysicalDeviceFeatures2 features; + getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &features ) ); + + return features; + } + + // wrapper function for command vkGetPhysicalDeviceFeatures2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFeatures2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFeatures2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFeatures2KHR && + "Function requires or " ); + + StructureChain structureChain; + PhysicalDeviceFeatures2 & features = structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceFeatures2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &features ) ); + + return structureChain; + } + + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2 * pProperties ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2KHR && + "Function requires or " ); + getDispatcher()->vkGetPhysicalDeviceProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( pProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceProperties2 PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2KHR && + "Function requires or " ); + + PhysicalDeviceProperties2 properties; + getDispatcher()->vkGetPhysicalDeviceProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &properties ) ); + + return properties; + } + + // wrapper function for command vkGetPhysicalDeviceProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceProperties2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getProperties2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceProperties2KHR && + "Function requires or " ); + + StructureChain structureChain; + PhysicalDeviceProperties2 & properties = structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &properties ) ); + + return structureChain; + } + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2 * pFormatProperties ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR && + "Function requires or " ); + getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR( + static_cast( m_physicalDevice ), static_cast( format ), reinterpret_cast( pFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE FormatProperties2 PhysicalDevice::getFormatProperties2KHR( Format format ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR && + "Function requires or " ); + + FormatProperties2 formatProperties; + getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR( + static_cast( m_physicalDevice ), static_cast( format ), reinterpret_cast( &formatProperties ) ); + + return formatProperties; + } + + // wrapper function for command vkGetPhysicalDeviceFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFormatProperties2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFormatProperties2KHR( Format format ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR && + "Function requires or " ); + + StructureChain structureChain; + FormatProperties2 & formatProperties = structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceFormatProperties2KHR( + static_cast( m_physicalDevice ), static_cast( format ), reinterpret_cast( &formatProperties ) ); + + return structureChain; + } + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getImageFormatProperties2KHR( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR && + "Function requires or " ); + + ImageFormatProperties2 imageFormatProperties; + Result result = static_cast( + getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( imageFormatProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceImageFormatProperties2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getImageFormatProperties2KHR( PhysicalDeviceImageFormatInfo2 const & imageFormatInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR && + "Function requires or " ); + + StructureChain structureChain; + ImageFormatProperties2 & imageFormatProperties = structureChain.template get(); + Result result = static_cast( + getDispatcher()->vkGetPhysicalDeviceImageFormatProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &imageFormatInfo ), + reinterpret_cast( &imageFormatProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) ); + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR && + "Function requires or " ); + + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast( m_physicalDevice ), &queueFamilyPropertyCount, nullptr ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast( m_physicalDevice ), + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + queueFamilyProperties.resize( queueFamilyPropertyCount ); + } + return queueFamilyProperties; + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyProperties2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR && + "Function requires or " ); + + std::vector structureChains; + std::vector queueFamilyProperties; + uint32_t queueFamilyPropertyCount; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast( m_physicalDevice ), &queueFamilyPropertyCount, nullptr ); + structureChains.resize( queueFamilyPropertyCount ); + queueFamilyProperties.resize( queueFamilyPropertyCount ); + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + queueFamilyProperties[i].pNext = structureChains[i].template get().pNext; + } + getDispatcher()->vkGetPhysicalDeviceQueueFamilyProperties2KHR( static_cast( m_physicalDevice ), + &queueFamilyPropertyCount, + reinterpret_cast( queueFamilyProperties.data() ) ); + + VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); + if ( queueFamilyPropertyCount < queueFamilyProperties.size() ) + { + structureChains.resize( queueFamilyPropertyCount ); + } + for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) + { + structureChains[i].template get() = queueFamilyProperties[i]; + } + return structureChains; + } + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR && + "Function requires or " ); + + PhysicalDeviceMemoryProperties2 memoryProperties; + getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &memoryProperties ) ); + + return memoryProperties; + } + + // wrapper function for command vkGetPhysicalDeviceMemoryProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMemoryProperties2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getMemoryProperties2KHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR && + "Function requires or " ); + + StructureChain structureChain; + PhysicalDeviceMemoryProperties2 & memoryProperties = structureChain.template get(); + getDispatcher()->vkGetPhysicalDeviceMemoryProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &memoryProperties ) ); + + return structureChain; + } + + // wrapper function for command vkGetPhysicalDeviceSparseImageFormatProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSparseImageFormatProperties2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + PhysicalDevice::getSparseImageFormatProperties2KHR( PhysicalDeviceSparseImageFormatInfo2 const & formatInfo ) const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR && + "Function requires or " ); + + std::vector properties; + uint32_t propertyCount; + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &formatInfo ), + &propertyCount, + nullptr ); + properties.resize( propertyCount ); + getDispatcher()->vkGetPhysicalDeviceSparseImageFormatProperties2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &formatInfo ), + &propertyCount, + reinterpret_cast( properties.data() ) ); + + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return properties; + } + + //=== VK_KHR_device_group === + + // wrapper function for command vkGetDeviceGroupPeerMemoryFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupPeerMemoryFeaturesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, + uint32_t localDeviceIndex, + uint32_t remoteDeviceIndex ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR && + "Function requires or " ); + + PeerMemoryFeatureFlags peerMemoryFeatures; + getDispatcher()->vkGetDeviceGroupPeerMemoryFeaturesKHR( static_cast( m_device ), + heapIndex, + localDeviceIndex, + remoteDeviceIndex, + reinterpret_cast( &peerMemoryFeatures ) ); + + return peerMemoryFeatures; + } + + // wrapper function for command vkCmdSetDeviceMaskKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDeviceMaskKHR.html + VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDeviceMaskKHR && "Function requires or " ); + + getDispatcher()->vkCmdSetDeviceMaskKHR( static_cast( m_commandBuffer ), deviceMask ); + } + + // wrapper function for command vkCmdDispatchBaseKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchBaseKHR.html + VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHR( uint32_t baseGroupX, + uint32_t baseGroupY, + uint32_t baseGroupZ, + uint32_t groupCountX, + uint32_t groupCountY, + uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchBaseKHR && "Function requires or " ); + + getDispatcher()->vkCmdDispatchBaseKHR( + static_cast( m_commandBuffer ), baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); + } + +# if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + // wrapper function for command vkCreateViSurfaceNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateViSurfaceNN.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createViSurfaceNN( ViSurfaceCreateInfoNN const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateViSurfaceNN && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateViSurfaceNN( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createViSurfaceNN" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } +# endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_KHR_maintenance1 === + + // wrapper function for command vkTrimCommandPoolKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTrimCommandPoolKHR.html + VULKAN_HPP_INLINE void CommandPool::trimKHR( CommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkTrimCommandPoolKHR && "Function requires or " ); + + getDispatcher()->vkTrimCommandPoolKHR( + static_cast( m_device ), static_cast( m_commandPool ), static_cast( flags ) ); + } + + //=== VK_KHR_device_group_creation === + + // wrapper function for command vkEnumeratePhysicalDeviceGroupsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceGroupsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Instance::enumeratePhysicalDeviceGroupsKHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR && + "Function requires or " ); + + std::vector physicalDeviceGroupProperties; + uint32_t physicalDeviceGroupCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR( static_cast( m_instance ), &physicalDeviceGroupCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceGroupsKHR( + static_cast( m_instance ), + &physicalDeviceGroupCount, + reinterpret_cast( physicalDeviceGroupProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::enumeratePhysicalDeviceGroupsKHR" ); + VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); + if ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) + { + physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( physicalDeviceGroupProperties ) ); + } + + //=== VK_KHR_external_memory_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalBufferPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalBufferPropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalBufferProperties + PhysicalDevice::getExternalBufferPropertiesKHR( PhysicalDeviceExternalBufferInfo const & externalBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR && + "Function requires or " ); + + ExternalBufferProperties externalBufferProperties; + getDispatcher()->vkGetPhysicalDeviceExternalBufferPropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( &externalBufferInfo ), + reinterpret_cast( &externalBufferProperties ) ); + + return externalBufferProperties; + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_memory_win32 === + + // wrapper function for command vkGetMemoryWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandleKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryWin32HandleKHR( MemoryGetWin32HandleInfoKHR const & getWin32HandleInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandleKHR && "Function requires " ); + + HANDLE handle; + Result result = static_cast( getDispatcher()->vkGetMemoryWin32HandleKHR( + static_cast( m_device ), reinterpret_cast( &getWin32HandleInfo ), &handle ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryWin32HandleKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( handle ) ); + } + + // wrapper function for command vkGetMemoryWin32HandlePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryWin32HandlePropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR && + "Function requires " ); + + MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties; + Result result = static_cast( + getDispatcher()->vkGetMemoryWin32HandlePropertiesKHR( static_cast( m_device ), + static_cast( handleType ), + handle, + reinterpret_cast( &memoryWin32HandleProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryWin32HandlePropertiesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryWin32HandleProperties ) ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_memory_fd === + + // wrapper function for command vkGetMemoryFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryFdKHR( MemoryGetFdInfoKHR const & getFdInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdKHR && "Function requires " ); + + int fd; + Result result = static_cast( + getDispatcher()->vkGetMemoryFdKHR( static_cast( m_device ), reinterpret_cast( &getFdInfo ), &fd ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryFdKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( fd ) ); + } + + // wrapper function for command vkGetMemoryFdPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryFdPropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBits handleType, int fd ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryFdPropertiesKHR && "Function requires " ); + + MemoryFdPropertiesKHR memoryFdProperties; + Result result = static_cast( getDispatcher()->vkGetMemoryFdPropertiesKHR( static_cast( m_device ), + static_cast( handleType ), + fd, + reinterpret_cast( &memoryFdProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryFdPropertiesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryFdProperties ) ); + } + + //=== VK_KHR_external_semaphore_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalSemaphoreProperties + PhysicalDevice::getExternalSemaphorePropertiesKHR( PhysicalDeviceExternalSemaphoreInfo const & externalSemaphoreInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR && + "Function requires or " ); + + ExternalSemaphoreProperties externalSemaphoreProperties; + getDispatcher()->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &externalSemaphoreInfo ), + reinterpret_cast( &externalSemaphoreProperties ) ); + + return externalSemaphoreProperties; + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_semaphore_win32 === + + // wrapper function for command vkImportSemaphoreWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreWin32HandleKHR.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::importSemaphoreWin32HandleKHR( ImportSemaphoreWin32HandleInfoKHR const & importSemaphoreWin32HandleInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreWin32HandleKHR && + "Function requires " ); + + Result result = static_cast( getDispatcher()->vkImportSemaphoreWin32HandleKHR( + static_cast( m_device ), reinterpret_cast( &importSemaphoreWin32HandleInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::importSemaphoreWin32HandleKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetSemaphoreWin32HandleKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreWin32HandleKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getSemaphoreWin32HandleKHR( SemaphoreGetWin32HandleInfoKHR const & getWin32HandleInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreWin32HandleKHR && + "Function requires " ); + + HANDLE handle; + Result result = static_cast( getDispatcher()->vkGetSemaphoreWin32HandleKHR( + static_cast( m_device ), reinterpret_cast( &getWin32HandleInfo ), &handle ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getSemaphoreWin32HandleKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( handle ) ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_semaphore_fd === + + // wrapper function for command vkImportSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreFdKHR.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::importSemaphoreFdKHR( ImportSemaphoreFdInfoKHR const & importSemaphoreFdInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreFdKHR && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkImportSemaphoreFdKHR( + static_cast( m_device ), reinterpret_cast( &importSemaphoreFdInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::importSemaphoreFdKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetSemaphoreFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreFdKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getSemaphoreFdKHR( SemaphoreGetFdInfoKHR const & getFdInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreFdKHR && "Function requires " ); + + int fd; + Result result = static_cast( + getDispatcher()->vkGetSemaphoreFdKHR( static_cast( m_device ), reinterpret_cast( &getFdInfo ), &fd ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getSemaphoreFdKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( fd ) ); + } + + //=== VK_KHR_push_descriptor === + + // wrapper function for command vkCmdPushDescriptorSetKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetKHR.html + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + ArrayProxy const & descriptorWrites ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetKHR && + "Function requires or " ); + + getDispatcher()->vkCmdPushDescriptorSetKHR( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( layout ), + set, + descriptorWrites.size(), + reinterpret_cast( descriptorWrites.data() ) ); + } + + // wrapper function for command vkCmdPushDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplateKHR.html + template + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set, + DataType const & data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR && + "Function requires or or " ); + + getDispatcher()->vkCmdPushDescriptorSetWithTemplateKHR( static_cast( m_commandBuffer ), + static_cast( descriptorUpdateTemplate ), + static_cast( layout ), + set, + reinterpret_cast( &data ) ); + } + + //=== VK_EXT_conditional_rendering === + + // wrapper function for command vkCmdBeginConditionalRenderingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRenderingEXT.html + VULKAN_HPP_INLINE void + CommandBuffer::beginConditionalRenderingEXT( ConditionalRenderingBeginInfoEXT const & conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginConditionalRenderingEXT && + "Function requires " ); + + getDispatcher()->vkCmdBeginConditionalRenderingEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &conditionalRenderingBegin ) ); + } + + // wrapper function for command vkCmdEndConditionalRenderingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndConditionalRenderingEXT.html + VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndConditionalRenderingEXT && + "Function requires " ); + + getDispatcher()->vkCmdEndConditionalRenderingEXT( static_cast( m_commandBuffer ) ); + } + + //=== VK_KHR_descriptor_update_template === + + // wrapper function for command vkCreateDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDescriptorUpdateTemplateKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDescriptorUpdateTemplateKHR && + "Function requires or " ); + + VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate; + Result result = static_cast( + getDispatcher()->vkCreateDescriptorUpdateTemplateKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &descriptorUpdateTemplate ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, DescriptorUpdateTemplate( *this, *reinterpret_cast( &descriptorUpdateTemplate ), allocator ) ); + } + + // wrapper function for command vkDestroyDescriptorUpdateTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyDescriptorUpdateTemplateKHR.html + VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + Optional allocator ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR && + "Function requires or " ); + + getDispatcher()->vkDestroyDescriptorUpdateTemplateKHR( static_cast( m_device ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( allocator.get() ) ); + } + + // wrapper function for command vkUpdateDescriptorSetWithTemplateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateDescriptorSetWithTemplateKHR.html + template + VULKAN_HPP_INLINE void DescriptorSet::updateWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, + DataType const & data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR && + "Function requires or " ); + + getDispatcher()->vkUpdateDescriptorSetWithTemplateKHR( static_cast( m_device ), + static_cast( m_descriptorSet ), + static_cast( descriptorUpdateTemplate ), + reinterpret_cast( &data ) ); + } + + //=== VK_NV_clip_space_w_scaling === + + // wrapper function for command vkCmdSetViewportWScalingNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingNV.html + VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, + ArrayProxy const & viewportWScalings ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWScalingNV && "Function requires " ); + + getDispatcher()->vkCmdSetViewportWScalingNV( static_cast( m_commandBuffer ), + firstViewport, + viewportWScalings.size(), + reinterpret_cast( viewportWScalings.data() ) ); + } + +# if defined( VK_USE_PLATFORM_XLIB_XRANDR_EXT ) + //=== VK_EXT_acquire_xlib_display === + + // wrapper function for command vkAcquireXlibDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireXlibDisplayEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::acquireXlibDisplayEXT( Display & dpy, + VULKAN_HPP_NAMESPACE::DisplayKHR display ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireXlibDisplayEXT && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkAcquireXlibDisplayEXT( static_cast( m_physicalDevice ), &dpy, static_cast( display ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::acquireXlibDisplayEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetRandROutputDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRandROutputDisplayEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRandROutputDisplayEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::DisplayKHR display; + Result result = static_cast( getDispatcher()->vkGetRandROutputDisplayEXT( + static_cast( m_physicalDevice ), &dpy, rrOutput, reinterpret_cast( &display ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getRandROutputDisplayEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, DisplayKHR( *this, *reinterpret_cast( &display ) ) ); + } +# endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ + + //=== VK_EXT_display_surface_counter === + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2EXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT && + "Function requires " ); + + SurfaceCapabilities2EXT surfaceCapabilities; + Result result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2EXT( static_cast( m_physicalDevice ), + static_cast( surface ), + reinterpret_cast( &surfaceCapabilities ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2EXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( surfaceCapabilities ) ); + } + + //=== VK_EXT_display_control === + + // wrapper function for command vkDisplayPowerControlEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDisplayPowerControlEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, + DisplayPowerInfoEXT const & displayPowerInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDisplayPowerControlEXT && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkDisplayPowerControlEXT( + static_cast( m_device ), static_cast( display ), reinterpret_cast( &displayPowerInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::displayPowerControlEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkRegisterDeviceEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDeviceEventEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::registerEventEXT( DeviceEventInfoEXT const & deviceEventInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkRegisterDeviceEventEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Fence fence; + Result result = static_cast( getDispatcher()->vkRegisterDeviceEventEXT( static_cast( m_device ), + reinterpret_cast( &deviceEventInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &fence ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::registerEventEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Fence( *this, *reinterpret_cast( &fence ), allocator ) ); + } + + // wrapper function for command vkRegisterDisplayEventEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterDisplayEventEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::registerDisplayEventEXT( DisplayKHR const & display, + DisplayEventInfoEXT const & displayEventInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkRegisterDisplayEventEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Fence fence; + Result result = static_cast( getDispatcher()->vkRegisterDisplayEventEXT( static_cast( m_device ), + static_cast( *display ), + reinterpret_cast( &displayEventInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &fence ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::registerDisplayEventEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Fence( *this, *reinterpret_cast( &fence ), allocator ) ); + } + + // wrapper function for command vkGetSwapchainCounterEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainCounterEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + ResultValue +# else + typename ResultValueType::type +# endif + SwapchainKHR::getCounterEXT( SurfaceCounterFlagBitsEXT counter ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainCounterEXT && "Function requires " ); + + uint64_t counterValue; + Result result = static_cast( getDispatcher()->vkGetSwapchainCounterEXT( static_cast( m_device ), + static_cast( m_swapchainKHR ), + static_cast( counter ), + &counterValue ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getCounterEXT", { Result::eSuccess, Result::eErrorOutOfDateKHR } ); +# else + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getCounterEXT" ); +# endif + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + return ResultValue( result, std::move( counterValue ) ); +# else + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( counterValue ) ); +# endif + } + + //=== VK_GOOGLE_display_timing === + + // wrapper function for command vkGetRefreshCycleDurationGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRefreshCycleDurationGOOGLE.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type SwapchainKHR::getRefreshCycleDurationGOOGLE() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRefreshCycleDurationGOOGLE && "Function requires " ); + + RefreshCycleDurationGOOGLE displayTimingProperties; + Result result = + static_cast( getDispatcher()->vkGetRefreshCycleDurationGOOGLE( static_cast( m_device ), + static_cast( m_swapchainKHR ), + reinterpret_cast( &displayTimingProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getRefreshCycleDurationGOOGLE" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( displayTimingProperties ) ); + } + + // wrapper function for command vkGetPastPresentationTimingGOOGLE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingGOOGLE.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + ResultValue> +# else + typename ResultValueType>::type +# endif + SwapchainKHR::getPastPresentationTimingGOOGLE() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPastPresentationTimingGOOGLE && + "Function requires " ); + + std::vector presentationTimings; + uint32_t presentationTimingCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPastPresentationTimingGOOGLE( + static_cast( m_device ), static_cast( m_swapchainKHR ), &presentationTimingCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && presentationTimingCount ) + { + presentationTimings.resize( presentationTimingCount ); + result = static_cast( + getDispatcher()->vkGetPastPresentationTimingGOOGLE( static_cast( m_device ), + static_cast( m_swapchainKHR ), + &presentationTimingCount, + reinterpret_cast( presentationTimings.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getPastPresentationTimingGOOGLE", + { Result::eSuccess, Result::eIncomplete, Result::eErrorOutOfDateKHR } ); +# else + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getPastPresentationTimingGOOGLE" ); +# endif + + VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() ); + if ( presentationTimingCount < presentationTimings.size() ) + { + presentationTimings.resize( presentationTimingCount ); + } + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + return ResultValue>( result, std::move( presentationTimings ) ); +# else + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( presentationTimings ) ); +# endif + } + + //=== VK_EXT_discard_rectangles === + + // wrapper function for command vkCmdSetDiscardRectangleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, + ArrayProxy const & discardRectangles ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDiscardRectangleEXT && "Function requires " ); + + getDispatcher()->vkCmdSetDiscardRectangleEXT( static_cast( m_commandBuffer ), + firstDiscardRectangle, + discardRectangles.size(), + reinterpret_cast( discardRectangles.data() ) ); + } + + // wrapper function for command vkCmdSetDiscardRectangleEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEnableEXT( Bool32 discardRectangleEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDiscardRectangleEnableEXT && + "Function requires " ); + + getDispatcher()->vkCmdSetDiscardRectangleEnableEXT( static_cast( m_commandBuffer ), static_cast( discardRectangleEnable ) ); + } + + // wrapper function for command vkCmdSetDiscardRectangleModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDiscardRectangleModeEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleModeEXT( DiscardRectangleModeEXT discardRectangleMode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDiscardRectangleModeEXT && + "Function requires " ); + + getDispatcher()->vkCmdSetDiscardRectangleModeEXT( static_cast( m_commandBuffer ), + static_cast( discardRectangleMode ) ); + } + + //=== VK_EXT_hdr_metadata === + + // wrapper function for command vkSetHdrMetadataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetHdrMetadataEXT.html + VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy const & swapchains, + ArrayProxy const & metadata ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetHdrMetadataEXT && "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( swapchains.size() == metadata.size() ); +# else + if ( swapchains.size() != metadata.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkSetHdrMetadataEXT( static_cast( m_device ), + swapchains.size(), + reinterpret_cast( swapchains.data() ), + reinterpret_cast( metadata.data() ) ); + } + + //=== VK_KHR_create_renderpass2 === + + // wrapper function for command vkCreateRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRenderPass2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createRenderPass2KHR( RenderPassCreateInfo2 const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateRenderPass2KHR && + "Function requires or " ); + + VULKAN_HPP_NAMESPACE::RenderPass renderPass; + Result result = static_cast( getDispatcher()->vkCreateRenderPass2KHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &renderPass ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRenderPass2KHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, RenderPass( *this, *reinterpret_cast( &renderPass ), allocator ) ); + } + + // wrapper function for command vkCmdBeginRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginRenderPass2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( RenderPassBeginInfo const & renderPassBegin, + SubpassBeginInfo const & subpassBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginRenderPass2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdBeginRenderPass2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &renderPassBegin ), + reinterpret_cast( &subpassBeginInfo ) ); + } + + // wrapper function for command vkCmdNextSubpass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdNextSubpass2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( SubpassBeginInfo const & subpassBeginInfo, + SubpassEndInfo const & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdNextSubpass2KHR && "Function requires or " ); + + getDispatcher()->vkCmdNextSubpass2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &subpassBeginInfo ), + reinterpret_cast( &subpassEndInfo ) ); + } + + // wrapper function for command vkCmdEndRenderPass2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRenderPass2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( SubpassEndInfo const & subpassEndInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRenderPass2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdEndRenderPass2KHR( static_cast( m_commandBuffer ), reinterpret_cast( &subpassEndInfo ) ); + } + + //=== VK_KHR_shared_presentable_image === + + // wrapper function for command vkGetSwapchainStatusKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainStatusKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result SwapchainKHR::getStatus() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainStatusKHR && "Function requires " ); + + Result result = + static_cast( getDispatcher()->vkGetSwapchainStatusKHR( static_cast( m_device ), static_cast( m_swapchainKHR ) ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getStatus", { Result::eSuccess, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getStatus", { Result::eSuccess, Result::eSuboptimalKHR } ); +# endif + + return static_cast( result ); + } + + //=== VK_KHR_external_fence_capabilities === + + // wrapper function for command vkGetPhysicalDeviceExternalFencePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalFencePropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalFenceProperties + PhysicalDevice::getExternalFencePropertiesKHR( PhysicalDeviceExternalFenceInfo const & externalFenceInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR && + "Function requires or " ); + + ExternalFenceProperties externalFenceProperties; + getDispatcher()->vkGetPhysicalDeviceExternalFencePropertiesKHR( static_cast( m_physicalDevice ), + reinterpret_cast( &externalFenceInfo ), + reinterpret_cast( &externalFenceProperties ) ); + + return externalFenceProperties; + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_external_fence_win32 === + + // wrapper function for command vkImportFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceWin32HandleKHR.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::importFenceWin32HandleKHR( ImportFenceWin32HandleInfoKHR const & importFenceWin32HandleInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkImportFenceWin32HandleKHR && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkImportFenceWin32HandleKHR( + static_cast( m_device ), reinterpret_cast( &importFenceWin32HandleInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::importFenceWin32HandleKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetFenceWin32HandleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceWin32HandleKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getFenceWin32HandleKHR( FenceGetWin32HandleInfoKHR const & getWin32HandleInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceWin32HandleKHR && "Function requires " ); + + HANDLE handle; + Result result = static_cast( getDispatcher()->vkGetFenceWin32HandleKHR( + static_cast( m_device ), reinterpret_cast( &getWin32HandleInfo ), &handle ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getFenceWin32HandleKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( handle ) ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_KHR_external_fence_fd === + + // wrapper function for command vkImportFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportFenceFdKHR.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::importFenceFdKHR( ImportFenceFdInfoKHR const & importFenceFdInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkImportFenceFdKHR && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkImportFenceFdKHR( static_cast( m_device ), reinterpret_cast( &importFenceFdInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::importFenceFdKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetFenceFdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFenceFdKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::getFenceFdKHR( FenceGetFdInfoKHR const & getFdInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetFenceFdKHR && "Function requires " ); + + int fd; + Result result = static_cast( + getDispatcher()->vkGetFenceFdKHR( static_cast( m_device ), reinterpret_cast( &getFdInfo ), &fd ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getFenceFdKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( fd ) ); + } + + //=== VK_KHR_performance_query === + + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType, std::vector>>::type + PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR && + "Function requires " ); + + std::pair, std::vector> data_; + std::vector & counters = data_.first; + std::vector & counterDescriptions = data_.second; + uint32_t counterCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + static_cast( m_physicalDevice ), queueFamilyIndex, &counterCount, nullptr, nullptr ) ); + if ( ( result == Result::eSuccess ) && counterCount ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( + static_cast( m_physicalDevice ), + queueFamilyIndex, + &counterCount, + reinterpret_cast( counters.data() ), + reinterpret_cast( counterDescriptions.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" ); + VULKAN_HPP_ASSERT( counterCount <= counters.size() ); + if ( counterCount < counters.size() ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t + PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR( QueryPoolPerformanceCreateInfoKHR const & performanceQueryCreateInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR && + "Function requires " ); + + uint32_t numPasses; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &performanceQueryCreateInfo ), + &numPasses ); + + return numPasses; + } + + // wrapper function for command vkAcquireProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireProfilingLockKHR.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::acquireProfilingLockKHR( AcquireProfilingLockInfoKHR const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireProfilingLockKHR && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkAcquireProfilingLockKHR( static_cast( m_device ), reinterpret_cast( &info ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::acquireProfilingLockKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkReleaseProfilingLockKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseProfilingLockKHR.html + VULKAN_HPP_INLINE void Device::releaseProfilingLockKHR() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseProfilingLockKHR && "Function requires " ); + + getDispatcher()->vkReleaseProfilingLockKHR( static_cast( m_device ) ); + } + + //=== VK_KHR_get_surface_capabilities2 === + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( + PhysicalDeviceSurfaceInfo2KHR const * pSurfaceInfo, SurfaceCapabilities2KHR * pSurfaceCapabilities ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR && + "Function requires " ); + return static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( pSurfaceInfo ), + reinterpret_cast( pSurfaceCapabilities ) ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getSurfaceCapabilities2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR && + "Function requires " ); + + SurfaceCapabilities2KHR surfaceCapabilities; + Result result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &surfaceCapabilities ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( surfaceCapabilities ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceCapabilities2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceCapabilities2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR && + "Function requires " ); + + StructureChain structureChain; + SurfaceCapabilities2KHR & surfaceCapabilities = structureChain.template get(); + Result result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceCapabilities2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &surfaceCapabilities ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR && + "Function requires " ); + + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + surfaceFormats.resize( surfaceFormatCount ); + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" ); + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + surfaceFormats.resize( surfaceFormatCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( surfaceFormats ) ); + } + + // wrapper function for command vkGetPhysicalDeviceSurfaceFormats2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfaceFormats2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfaceFormats2KHR( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR && + "Function requires " ); + + std::vector structureChains; + std::vector surfaceFormats; + uint32_t surfaceFormatCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && surfaceFormatCount ) + { + structureChains.resize( surfaceFormatCount ); + surfaceFormats.resize( surfaceFormatCount ); + for ( uint32_t i = 0; i < surfaceFormatCount; i++ ) + { + surfaceFormats[i].pNext = structureChains[i].template get().pNext; + } + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfaceFormats2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + &surfaceFormatCount, + reinterpret_cast( surfaceFormats.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfaceFormats2KHR" ); + VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); + if ( surfaceFormatCount < surfaceFormats.size() ) + { + structureChains.resize( surfaceFormatCount ); + } + for ( uint32_t i = 0; i < surfaceFormatCount; i++ ) + { + structureChains[i].template get() = surfaceFormats[i]; + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChains ) ); + } + + //=== VK_KHR_get_display_properties2 === + + // wrapper function for command vkGetPhysicalDeviceDisplayProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayProperties2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayProperties2KHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR( static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayProperties2KHR( + static_cast( m_physicalDevice ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayProperties2KHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceDisplayPlaneProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDisplayPlaneProperties2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getDisplayPlaneProperties2KHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR( static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + static_cast( m_physicalDevice ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneProperties2KHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type DisplayKHR::getModeProperties2() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModeProperties2KHR && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetDisplayModeProperties2KHR( + static_cast( m_physicalDevice ), static_cast( m_displayKHR ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = + static_cast( getDispatcher()->vkGetDisplayModeProperties2KHR( static_cast( m_physicalDevice ), + static_cast( m_displayKHR ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayKHR::getModeProperties2" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDisplayModeProperties2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayModeProperties2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type DisplayKHR::getModeProperties2() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayModeProperties2KHR && + "Function requires " ); + + std::vector structureChains; + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetDisplayModeProperties2KHR( + static_cast( m_physicalDevice ), static_cast( m_displayKHR ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + structureChains.resize( propertyCount ); + properties.resize( propertyCount ); + for ( uint32_t i = 0; i < propertyCount; i++ ) + { + properties[i].pNext = structureChains[i].template get().pNext; + } + result = + static_cast( getDispatcher()->vkGetDisplayModeProperties2KHR( static_cast( m_physicalDevice ), + static_cast( m_displayKHR ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayKHR::getModeProperties2" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + structureChains.resize( propertyCount ); + } + for ( uint32_t i = 0; i < propertyCount; i++ ) + { + structureChains[i].template get() = properties[i]; + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChains ) ); + } + + // wrapper function for command vkGetDisplayPlaneCapabilities2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDisplayPlaneCapabilities2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getDisplayPlaneCapabilities2KHR( DisplayPlaneInfo2KHR const & displayPlaneInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDisplayPlaneCapabilities2KHR && + "Function requires " ); + + DisplayPlaneCapabilities2KHR capabilities; + Result result = + static_cast( getDispatcher()->vkGetDisplayPlaneCapabilities2KHR( static_cast( m_physicalDevice ), + reinterpret_cast( &displayPlaneInfo ), + reinterpret_cast( &capabilities ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilities2KHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( capabilities ) ); + } + +# if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + // wrapper function for command vkCreateIOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIOSSurfaceMVK.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createIOSSurfaceMVK( IOSSurfaceCreateInfoMVK const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateIOSSurfaceMVK && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateIOSSurfaceMVK( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createIOSSurfaceMVK" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } +# endif /*VK_USE_PLATFORM_IOS_MVK*/ + +# if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + // wrapper function for command vkCreateMacOSSurfaceMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMacOSSurfaceMVK.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createMacOSSurfaceMVK( MacOSSurfaceCreateInfoMVK const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateMacOSSurfaceMVK && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateMacOSSurfaceMVK( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createMacOSSurfaceMVK" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } +# endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + // wrapper function for command vkSetDebugUtilsObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::setDebugUtilsObjectNameEXT( DebugUtilsObjectNameInfoEXT const & nameInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectNameEXT && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkSetDebugUtilsObjectNameEXT( + static_cast( m_device ), reinterpret_cast( &nameInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::setDebugUtilsObjectNameEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkSetDebugUtilsObjectNameEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectNameEXT.html + template + VULKAN_HPP_INLINE typename ResultValueType::type Device::setDebugUtilsObjectNameEXT( HandleType const & handle, std::string const & name ) const + { + VULKAN_HPP_STATIC_ASSERT( VULKAN_HPP_NAMESPACE::isVulkanHandleType::value, "HandleType must be a Vulkan handle type" ); + // It might be, that neither constructors, nor setters, nor designated initializers are available... need to explicitly set member by member + VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT nameInfo; + nameInfo.objectType = handle.objectType; +# if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + nameInfo.objectHandle = reinterpret_cast( static_cast( handle ) ); +# else + nameInfo.objectHandle = static_cast( handle ); +# endif + nameInfo.pObjectName = name.c_str(); + return setDebugUtilsObjectNameEXT( nameInfo ); + } + + // wrapper function for command vkSetDebugUtilsObjectTagEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::setDebugUtilsObjectTagEXT( DebugUtilsObjectTagInfoEXT const & tagInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetDebugUtilsObjectTagEXT && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkSetDebugUtilsObjectTagEXT( static_cast( m_device ), reinterpret_cast( &tagInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::setDebugUtilsObjectTagEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkSetDebugUtilsObjectTagEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDebugUtilsObjectTagEXT.html + template + VULKAN_HPP_INLINE typename ResultValueType::type + Device::setDebugUtilsObjectTagEXT( HandleType const & handle, uint64_t name, TagType const & tag ) const + { + VULKAN_HPP_STATIC_ASSERT( VULKAN_HPP_NAMESPACE::isVulkanHandleType::value, "HandleType must be a Vulkan handle type" ); + // It might be, that neither constructors, nor setters, nor designated initializers are available... need to explicitly set member by member + VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT tagInfo; + tagInfo.objectType = handle.objectType; +# if ( VK_USE_64_BIT_PTR_DEFINES == 1 ) + tagInfo.objectHandle = reinterpret_cast( static_cast( handle ) ); +# else + tagInfo.objectHandle = static_cast( handle ); +# endif + tagInfo.tagName = name; + tagInfo.tagSize = sizeof( TagType ); + tagInfo.pTag = &tag; + return setDebugUtilsObjectTagEXT( tagInfo ); + } + + // wrapper function for command vkQueueBeginDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueBeginDebugUtilsLabelEXT.html + VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueBeginDebugUtilsLabelEXT && "Function requires " ); + + getDispatcher()->vkQueueBeginDebugUtilsLabelEXT( static_cast( m_queue ), reinterpret_cast( &labelInfo ) ); + } + + // wrapper function for command vkQueueEndDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueEndDebugUtilsLabelEXT.html + VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueEndDebugUtilsLabelEXT && "Function requires " ); + + getDispatcher()->vkQueueEndDebugUtilsLabelEXT( static_cast( m_queue ) ); + } + + // wrapper function for command vkQueueInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueInsertDebugUtilsLabelEXT.html + VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueInsertDebugUtilsLabelEXT && "Function requires " ); + + getDispatcher()->vkQueueInsertDebugUtilsLabelEXT( static_cast( m_queue ), reinterpret_cast( &labelInfo ) ); + } + + // wrapper function for command vkCmdBeginDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginDebugUtilsLabelEXT.html + VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginDebugUtilsLabelEXT && "Function requires " ); + + getDispatcher()->vkCmdBeginDebugUtilsLabelEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &labelInfo ) ); + } + + // wrapper function for command vkCmdEndDebugUtilsLabelEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndDebugUtilsLabelEXT.html + VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndDebugUtilsLabelEXT && "Function requires " ); + + getDispatcher()->vkCmdEndDebugUtilsLabelEXT( static_cast( m_commandBuffer ) ); + } + + // wrapper function for command vkCmdInsertDebugUtilsLabelEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInsertDebugUtilsLabelEXT.html + VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( DebugUtilsLabelEXT const & labelInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdInsertDebugUtilsLabelEXT && "Function requires " ); + + getDispatcher()->vkCmdInsertDebugUtilsLabelEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &labelInfo ) ); + } + + // wrapper function for command vkCreateDebugUtilsMessengerEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDebugUtilsMessengerEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createDebugUtilsMessengerEXT( DebugUtilsMessengerCreateInfoEXT const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDebugUtilsMessengerEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger; + Result result = + static_cast( getDispatcher()->vkCreateDebugUtilsMessengerEXT( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &messenger ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createDebugUtilsMessengerEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, DebugUtilsMessengerEXT( *this, *reinterpret_cast( &messenger ), allocator ) ); + } + + // wrapper function for command vkSubmitDebugUtilsMessageEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSubmitDebugUtilsMessageEXT.html + VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + DebugUtilsMessageTypeFlagsEXT messageTypes, + DebugUtilsMessengerCallbackDataEXT const & callbackData ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSubmitDebugUtilsMessageEXT && "Function requires " ); + + getDispatcher()->vkSubmitDebugUtilsMessageEXT( static_cast( m_instance ), + static_cast( messageSeverity ), + static_cast( messageTypes ), + reinterpret_cast( &callbackData ) ); + } + +# if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_ANDROID_external_memory_android_hardware_buffer === + + // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getAndroidHardwareBufferPropertiesANDROID( struct AHardwareBuffer const & buffer ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID && + "Function requires " ); + + AndroidHardwareBufferPropertiesANDROID properties; + Result result = static_cast( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID( + static_cast( m_device ), &buffer, reinterpret_cast( &properties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAndroidHardwareBufferPropertiesANDROID.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getAndroidHardwareBufferPropertiesANDROID( struct AHardwareBuffer const & buffer ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID && + "Function requires " ); + + StructureChain structureChain; + AndroidHardwareBufferPropertiesANDROID & properties = structureChain.template get(); + Result result = static_cast( getDispatcher()->vkGetAndroidHardwareBufferPropertiesANDROID( + static_cast( m_device ), &buffer, reinterpret_cast( &properties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) ); + } + + // wrapper function for command vkGetMemoryAndroidHardwareBufferANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryAndroidHardwareBufferANDROID.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryAndroidHardwareBufferANDROID( MemoryGetAndroidHardwareBufferInfoANDROID const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID && + "Function requires " ); + + struct AHardwareBuffer * buffer; + Result result = static_cast( getDispatcher()->vkGetMemoryAndroidHardwareBufferANDROID( + static_cast( m_device ), reinterpret_cast( &info ), &buffer ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryAndroidHardwareBufferANDROID" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( buffer ) ); + } +# endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_shader_enqueue === + + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createExecutionGraphPipelinesAMDX( Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateExecutionGraphPipelinesAMDX && + "Function requires " ); + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + getDispatcher()->vkCreateExecutionGraphPipelinesAMDX( static_cast( m_device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createExecutionGraphPipelinesAMDX", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + std::vector pipelinesRAII; + if ( result == Result::eSuccess ) + { + pipelinesRAII.reserve( pipelines.size() ); + for ( auto & pipeline : pipelines ) + { + pipelinesRAII.emplace_back( *this, *reinterpret_cast( &pipeline ), allocator, result ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) ); + } + + // wrapper function for command vkCreateExecutionGraphPipelinesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExecutionGraphPipelinesAMDX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createExecutionGraphPipelineAMDX( Optional const & pipelineCache, + ExecutionGraphPipelineCreateInfoAMDX const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateExecutionGraphPipelinesAMDX && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::Pipeline pipeline; + Result result = static_cast( + getDispatcher()->vkCreateExecutionGraphPipelinesAMDX( static_cast( m_device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createExecutionGraphPipelineAMDX", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast( &pipeline ), allocator, result ) ); + } + + // wrapper function for command vkGetExecutionGraphPipelineScratchSizeAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineScratchSizeAMDX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Pipeline::getExecutionGraphScratchSizeAMDX() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetExecutionGraphPipelineScratchSizeAMDX && + "Function requires " ); + + ExecutionGraphPipelineScratchSizeAMDX sizeInfo; + Result result = static_cast( getDispatcher()->vkGetExecutionGraphPipelineScratchSizeAMDX( + static_cast( m_device ), static_cast( m_pipeline ), reinterpret_cast( &sizeInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getExecutionGraphScratchSizeAMDX" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( sizeInfo ) ); + } + + // wrapper function for command vkGetExecutionGraphPipelineNodeIndexAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExecutionGraphPipelineNodeIndexAMDX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Pipeline::getExecutionGraphNodeIndexAMDX( PipelineShaderStageNodeCreateInfoAMDX const & nodeInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetExecutionGraphPipelineNodeIndexAMDX && + "Function requires " ); + + uint32_t nodeIndex; + Result result = static_cast( + getDispatcher()->vkGetExecutionGraphPipelineNodeIndexAMDX( static_cast( m_device ), + static_cast( m_pipeline ), + reinterpret_cast( &nodeInfo ), + &nodeIndex ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getExecutionGraphNodeIndexAMDX" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( nodeIndex ) ); + } + + // wrapper function for command vkCmdInitializeGraphScratchMemoryAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdInitializeGraphScratchMemoryAMDX.html + VULKAN_HPP_INLINE void CommandBuffer::initializeGraphScratchMemoryAMDX( VULKAN_HPP_NAMESPACE::Pipeline executionGraph, + DeviceAddress scratch, + DeviceSize scratchSize ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdInitializeGraphScratchMemoryAMDX && + "Function requires " ); + + getDispatcher()->vkCmdInitializeGraphScratchMemoryAMDX( static_cast( m_commandBuffer ), + static_cast( executionGraph ), + static_cast( scratch ), + static_cast( scratchSize ) ); + } + + // wrapper function for command vkCmdDispatchGraphAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphAMDX.html + VULKAN_HPP_INLINE void + CommandBuffer::dispatchGraphAMDX( DeviceAddress scratch, DeviceSize scratchSize, DispatchGraphCountInfoAMDX const & countInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchGraphAMDX && "Function requires " ); + + getDispatcher()->vkCmdDispatchGraphAMDX( static_cast( m_commandBuffer ), + static_cast( scratch ), + static_cast( scratchSize ), + reinterpret_cast( &countInfo ) ); + } + + // wrapper function for command vkCmdDispatchGraphIndirectAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectAMDX.html + VULKAN_HPP_INLINE void CommandBuffer::dispatchGraphIndirectAMDX( DeviceAddress scratch, + DeviceSize scratchSize, + DispatchGraphCountInfoAMDX const & countInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchGraphIndirectAMDX && "Function requires " ); + + getDispatcher()->vkCmdDispatchGraphIndirectAMDX( static_cast( m_commandBuffer ), + static_cast( scratch ), + static_cast( scratchSize ), + reinterpret_cast( &countInfo ) ); + } + + // wrapper function for command vkCmdDispatchGraphIndirectCountAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchGraphIndirectCountAMDX.html + VULKAN_HPP_INLINE void + CommandBuffer::dispatchGraphIndirectCountAMDX( DeviceAddress scratch, DeviceSize scratchSize, DeviceAddress countInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchGraphIndirectCountAMDX && + "Function requires " ); + + getDispatcher()->vkCmdDispatchGraphIndirectCountAMDX( static_cast( m_commandBuffer ), + static_cast( scratch ), + static_cast( scratchSize ), + static_cast( countInfo ) ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_descriptor_heap === + + // wrapper function for command vkWriteSamplerDescriptorsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteSamplerDescriptorsEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::writeSamplerDescriptorsEXT( ArrayProxy const & samplers, + ArrayProxy const & descriptors ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWriteSamplerDescriptorsEXT && "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( samplers.size() == descriptors.size() ); +# else + if ( samplers.size() != descriptors.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::writeSamplerDescriptorsEXT: samplers.size() != descriptors.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + Result result = + static_cast( getDispatcher()->vkWriteSamplerDescriptorsEXT( static_cast( m_device ), + samplers.size(), + reinterpret_cast( samplers.data() ), + reinterpret_cast( descriptors.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::writeSamplerDescriptorsEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkWriteResourceDescriptorsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteResourceDescriptorsEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::writeResourceDescriptorsEXT( ArrayProxy const & resources, + ArrayProxy const & descriptors ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWriteResourceDescriptorsEXT && "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( resources.size() == descriptors.size() ); +# else + if ( resources.size() != descriptors.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::writeResourceDescriptorsEXT: resources.size() != descriptors.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + Result result = + static_cast( getDispatcher()->vkWriteResourceDescriptorsEXT( static_cast( m_device ), + resources.size(), + reinterpret_cast( resources.data() ), + reinterpret_cast( descriptors.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::writeResourceDescriptorsEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdBindSamplerHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindSamplerHeapEXT.html + VULKAN_HPP_INLINE void CommandBuffer::bindSamplerHeapEXT( BindHeapInfoEXT const & bindInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindSamplerHeapEXT && "Function requires " ); + + getDispatcher()->vkCmdBindSamplerHeapEXT( static_cast( m_commandBuffer ), reinterpret_cast( &bindInfo ) ); + } + + // wrapper function for command vkCmdBindResourceHeapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindResourceHeapEXT.html + VULKAN_HPP_INLINE void CommandBuffer::bindResourceHeapEXT( BindHeapInfoEXT const & bindInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindResourceHeapEXT && "Function requires " ); + + getDispatcher()->vkCmdBindResourceHeapEXT( static_cast( m_commandBuffer ), reinterpret_cast( &bindInfo ) ); + } + + // wrapper function for command vkCmdPushDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDataEXT.html + VULKAN_HPP_INLINE void CommandBuffer::pushDataEXT( PushDataInfoEXT const & pushDataInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDataEXT && "Function requires " ); + + getDispatcher()->vkCmdPushDataEXT( static_cast( m_commandBuffer ), reinterpret_cast( &pushDataInfo ) ); + } + + // wrapper function for command vkGetImageOpaqueCaptureDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDataEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getImageOpaqueCaptureDataEXT( uint32_t imageCount, + VULKAN_HPP_NAMESPACE::Image const * pImages, + HostAddressRangeEXT * pDatas ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageOpaqueCaptureDataEXT && "Function requires " ); + return static_cast( getDispatcher()->vkGetImageOpaqueCaptureDataEXT( + static_cast( m_device ), imageCount, reinterpret_cast( pImages ), reinterpret_cast( pDatas ) ) ); + } + + // wrapper function for command vkGetPhysicalDeviceDescriptorSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDescriptorSizeEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize PhysicalDevice::getDescriptorSizeEXT( DescriptorType descriptorType ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDescriptorSizeEXT && + "Function requires " ); + + VkDeviceSize result = getDispatcher()->vkGetPhysicalDeviceDescriptorSizeEXT( static_cast( m_physicalDevice ), + static_cast( descriptorType ) ); + + return static_cast( result ); + } + + // wrapper function for command vkRegisterCustomBorderColorEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkRegisterCustomBorderColorEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::registerCustomBorderColorEXT( SamplerCustomBorderColorCreateInfoEXT const & borderColor, Bool32 requestIndex ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkRegisterCustomBorderColorEXT && "Function requires " ); + + uint32_t index; + Result result = + static_cast( getDispatcher()->vkRegisterCustomBorderColorEXT( static_cast( m_device ), + reinterpret_cast( &borderColor ), + static_cast( requestIndex ), + &index ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::registerCustomBorderColorEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( index ) ); + } + + // wrapper function for command vkUnregisterCustomBorderColorEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnregisterCustomBorderColorEXT.html + VULKAN_HPP_INLINE void Device::unregisterCustomBorderColorEXT( uint32_t index ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUnregisterCustomBorderColorEXT && "Function requires " ); + + getDispatcher()->vkUnregisterCustomBorderColorEXT( static_cast( m_device ), index ); + } + + // wrapper function for command vkGetTensorOpaqueCaptureDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDataARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getTensorOpaqueCaptureDataARM( uint32_t tensorCount, + VULKAN_HPP_NAMESPACE::TensorARM const * pTensors, + HostAddressRangeEXT * pDatas ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetTensorOpaqueCaptureDataARM && "Function requires " ); + return static_cast( getDispatcher()->vkGetTensorOpaqueCaptureDataARM( static_cast( m_device ), + tensorCount, + reinterpret_cast( pTensors ), + reinterpret_cast( pDatas ) ) ); + } + + //=== VK_EXT_sample_locations === + + // wrapper function for command vkCmdSetSampleLocationsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( SampleLocationsInfoEXT const & sampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleLocationsEXT && "Function requires " ); + + getDispatcher()->vkCmdSetSampleLocationsEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &sampleLocationsInfo ) ); + } + + // wrapper function for command vkGetPhysicalDeviceMultisamplePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MultisamplePropertiesEXT + PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT && + "Function requires " ); + + MultisamplePropertiesEXT multisampleProperties; + getDispatcher()->vkGetPhysicalDeviceMultisamplePropertiesEXT( static_cast( m_physicalDevice ), + static_cast( samples ), + reinterpret_cast( &multisampleProperties ) ); + + return multisampleProperties; + } + + //=== VK_KHR_get_memory_requirements2 === + + // wrapper function for command vkGetImageMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getImageMemoryRequirements2KHR( ImageMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2KHR && + "Function requires or " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetImageMemoryRequirements2KHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetImageMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageMemoryRequirements2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getImageMemoryRequirements2KHR( ImageMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageMemoryRequirements2KHR && + "Function requires or " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetImageMemoryRequirements2KHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkGetBufferMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getBufferMemoryRequirements2KHR( BufferMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2KHR && + "Function requires or " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetBufferMemoryRequirements2KHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetBufferMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferMemoryRequirements2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getBufferMemoryRequirements2KHR( BufferMemoryRequirementsInfo2 const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferMemoryRequirements2KHR && + "Function requires or " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetBufferMemoryRequirements2KHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkGetImageSparseMemoryRequirements2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSparseMemoryRequirements2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirements2KHR( ImageSparseMemoryRequirementsInfo2 const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageSparseMemoryRequirements2KHR && + "Function requires or " ); + + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + getDispatcher()->vkGetImageSparseMemoryRequirements2KHR( + static_cast( m_device ), reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + getDispatcher()->vkGetImageSparseMemoryRequirements2KHR( static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } + + //=== VK_KHR_acceleration_structure === + + // wrapper function for command vkCreateAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createAccelerationStructureKHR( AccelerationStructureCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateAccelerationStructureKHR && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure; + Result result = + static_cast( getDispatcher()->vkCreateAccelerationStructureKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &accelerationStructure ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createAccelerationStructureKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, AccelerationStructureKHR( *this, *reinterpret_cast( &accelerationStructure ), allocator ) ); + } + + // wrapper function for command vkCmdBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresKHR.html + VULKAN_HPP_INLINE void + CommandBuffer::buildAccelerationStructuresKHR( ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructuresKHR && + "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() ); +# else + if ( infos.size() != pBuildRangeInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBuildAccelerationStructuresKHR( + static_cast( m_commandBuffer ), + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( pBuildRangeInfos.data() ) ); + } + + // wrapper function for command vkCmdBuildAccelerationStructuresIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructuresIndirectKHR.html + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR( ArrayProxy const & infos, + ArrayProxy const & indirectDeviceAddresses, + ArrayProxy const & indirectStrides, + ArrayProxy const & pMaxPrimitiveCounts ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR && + "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == indirectDeviceAddresses.size() ); + VULKAN_HPP_ASSERT( infos.size() == indirectStrides.size() ); + VULKAN_HPP_ASSERT( infos.size() == pMaxPrimitiveCounts.size() ); +# else + if ( infos.size() != indirectDeviceAddresses.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectDeviceAddresses.size()" ); + } + if ( infos.size() != indirectStrides.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != indirectStrides.size()" ); + } + if ( infos.size() != pMaxPrimitiveCounts.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::buildAccelerationStructuresIndirectKHR: infos.size() != pMaxPrimitiveCounts.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBuildAccelerationStructuresIndirectKHR( static_cast( m_commandBuffer ), + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( indirectDeviceAddresses.data() ), + indirectStrides.data(), + pMaxPrimitiveCounts.data() ); + } + + // wrapper function for command vkBuildAccelerationStructuresKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildAccelerationStructuresKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::buildAccelerationStructuresKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + ArrayProxy const & infos, + ArrayProxy const & pBuildRangeInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBuildAccelerationStructuresKHR && + "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( infos.size() == pBuildRangeInfos.size() ); +# else + if ( infos.size() != pBuildRangeInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR: infos.size() != pBuildRangeInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + Result result = static_cast( getDispatcher()->vkBuildAccelerationStructuresKHR( + static_cast( m_device ), + static_cast( deferredOperation ), + infos.size(), + reinterpret_cast( infos.data() ), + reinterpret_cast( pBuildRangeInfos.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } + + // wrapper function for command vkCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyAccelerationStructureInfoKHR const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyAccelerationStructureKHR && + "Function requires " ); + + Result result = + static_cast( getDispatcher()->vkCopyAccelerationStructureKHR( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyAccelerationStructureKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } + + // wrapper function for command vkCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyAccelerationStructureToMemoryKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyAccelerationStructureToMemoryInfoKHR const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyAccelerationStructureToMemoryKHR && + "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkCopyAccelerationStructureToMemoryKHR( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyAccelerationStructureToMemoryKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } + + // wrapper function for command vkCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToAccelerationStructureKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyMemoryToAccelerationStructureInfoKHR const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToAccelerationStructureKHR && + "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkCopyMemoryToAccelerationStructureKHR( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMemoryToAccelerationStructureKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } + + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::writeAccelerationStructuresPropertiesKHR( uint32_t accelerationStructureCount, + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const * pAccelerationStructures, + QueryType queryType, + size_t dataSize, + void * pData, + size_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR && + "Function requires " ); + return static_cast( + getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR( static_cast( m_device ), + accelerationStructureCount, + reinterpret_cast( pAccelerationStructures ), + static_cast( queryType ), + dataSize, + pData, + stride ) ); + } + + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, + QueryType queryType, + size_t dataSize, + size_t stride ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR && + "Function requires " ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( + getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR( static_cast( m_device ), + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ), + stride ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertiesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteAccelerationStructuresPropertiesKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::writeAccelerationStructuresPropertyKHR( + ArrayProxy const & accelerationStructures, QueryType queryType, size_t stride ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR && + "Function requires " ); + + DataType data; + Result result = static_cast( + getDispatcher()->vkWriteAccelerationStructuresPropertiesKHR( static_cast( m_device ), + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + sizeof( DataType ), + reinterpret_cast( &data ), + stride ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertyKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkCmdCopyAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureKHR.html + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureKHR( CopyAccelerationStructureInfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureKHR && + "Function requires " ); + + getDispatcher()->vkCmdCopyAccelerationStructureKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdCopyAccelerationStructureToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureToMemoryKHR.html + VULKAN_HPP_INLINE void + CommandBuffer::copyAccelerationStructureToMemoryKHR( CopyAccelerationStructureToMemoryInfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR && + "Function requires " ); + + getDispatcher()->vkCmdCopyAccelerationStructureToMemoryKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdCopyMemoryToAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToAccelerationStructureKHR.html + VULKAN_HPP_INLINE void + CommandBuffer::copyMemoryToAccelerationStructureKHR( CopyMemoryToAccelerationStructureInfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR && + "Function requires " ); + + getDispatcher()->vkCmdCopyMemoryToAccelerationStructureKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkGetAccelerationStructureDeviceAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureDeviceAddressKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceAddress + Device::getAccelerationStructureAddressKHR( AccelerationStructureDeviceAddressInfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR && + "Function requires " ); + + VkDeviceAddress result = getDispatcher()->vkGetAccelerationStructureDeviceAddressKHR( + static_cast( m_device ), reinterpret_cast( &info ) ); + + return static_cast( result ); + } + + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesKHR.html + VULKAN_HPP_INLINE void + CommandBuffer::writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, + QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR && + "Function requires " ); + + getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesKHR( static_cast( m_commandBuffer ), + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } + + // wrapper function for command vkGetDeviceAccelerationStructureCompatibilityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceAccelerationStructureCompatibilityKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureCompatibilityKHR + Device::getAccelerationStructureCompatibilityKHR( AccelerationStructureVersionInfoKHR const & versionInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR && + "Function requires " ); + + AccelerationStructureCompatibilityKHR compatibility; + getDispatcher()->vkGetDeviceAccelerationStructureCompatibilityKHR( static_cast( m_device ), + reinterpret_cast( &versionInfo ), + reinterpret_cast( &compatibility ) ); + + return compatibility; + } + + // wrapper function for command vkGetAccelerationStructureBuildSizesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureBuildSizesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureBuildSizesInfoKHR + Device::getAccelerationStructureBuildSizesKHR( AccelerationStructureBuildTypeKHR buildType, + AccelerationStructureBuildGeometryInfoKHR const & buildInfo, + ArrayProxy const & maxPrimitiveCounts ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureBuildSizesKHR && + "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( maxPrimitiveCounts.size() == buildInfo.geometryCount ); +# else + if ( maxPrimitiveCounts.size() != buildInfo.geometryCount ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureBuildSizesKHR: maxPrimitiveCounts.size() != buildInfo.geometryCount" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + AccelerationStructureBuildSizesInfoKHR sizeInfo; + getDispatcher()->vkGetAccelerationStructureBuildSizesKHR( static_cast( m_device ), + static_cast( buildType ), + reinterpret_cast( &buildInfo ), + maxPrimitiveCounts.data(), + reinterpret_cast( &sizeInfo ) ); + + return sizeInfo; + } + + //=== VK_KHR_ray_tracing_pipeline === + + // wrapper function for command vkCmdTraceRaysKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysKHR.html + VULKAN_HPP_INLINE void CommandBuffer::traceRaysKHR( StridedDeviceAddressRegionKHR const & raygenShaderBindingTable, + StridedDeviceAddressRegionKHR const & missShaderBindingTable, + StridedDeviceAddressRegionKHR const & hitShaderBindingTable, + StridedDeviceAddressRegionKHR const & callableShaderBindingTable, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysKHR && "Function requires " ); + + getDispatcher()->vkCmdTraceRaysKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &raygenShaderBindingTable ), + reinterpret_cast( &missShaderBindingTable ), + reinterpret_cast( &hitShaderBindingTable ), + reinterpret_cast( &callableShaderBindingTable ), + width, + height, + depth ); + } + + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createRayTracingPipelinesKHR( Optional const & deferredOperation, + Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateRayTracingPipelinesKHR && + "Function requires " ); + + std::vector pipelines( createInfos.size() ); + Result result = static_cast( + getDispatcher()->vkCreateRayTracingPipelinesKHR( static_cast( m_device ), + deferredOperation ? static_cast( **deferredOperation ) : 0, + pipelineCache ? static_cast( **pipelineCache ) : 0, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR, Result::ePipelineCompileRequiredEXT } ); + std::vector pipelinesRAII; + if ( result == Result::eSuccess ) + { + pipelinesRAII.reserve( pipelines.size() ); + for ( auto & pipeline : pipelines ) + { + pipelinesRAII.emplace_back( *this, *reinterpret_cast( &pipeline ), allocator, result ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) ); + } + + // wrapper function for command vkCreateRayTracingPipelinesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createRayTracingPipelineKHR( Optional const & deferredOperation, + Optional const & pipelineCache, + RayTracingPipelineCreateInfoKHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateRayTracingPipelinesKHR && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::Pipeline pipeline; + Result result = static_cast( + getDispatcher()->vkCreateRayTracingPipelinesKHR( static_cast( m_device ), + deferredOperation ? static_cast( **deferredOperation ) : 0, + pipelineCache ? static_cast( **pipelineCache ) : 0, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRayTracingPipelineKHR", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR, Result::ePipelineCompileRequiredEXT } ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast( &pipeline ), allocator, result ) ); + } + + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Pipeline::getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR && + "Function requires or " ); + return static_cast( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( + static_cast( m_device ), static_cast( m_pipeline ), firstGroup, groupCount, dataSize, pData ) ); + } + + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Pipeline::getRayTracingShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR && + "Function requires or " ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetRayTracingShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Pipeline::getRayTracingShaderGroupHandleKHR( uint32_t firstGroup, + uint32_t groupCount ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR && + "Function requires or " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetRayTracingShaderGroupHandlesKHR( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR && + "Function requires " ); + return static_cast( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( + static_cast( m_device ), static_cast( m_pipeline ), firstGroup, groupCount, dataSize, pData ) ); + } + + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR && + "Function requires " ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandlesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingCaptureReplayShaderGroupHandlesKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR( uint32_t firstGroup, uint32_t groupCount ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR && + "Function requires " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingCaptureReplayShaderGroupHandleKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkCmdTraceRaysIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirectKHR.html + VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR( StridedDeviceAddressRegionKHR const & raygenShaderBindingTable, + StridedDeviceAddressRegionKHR const & missShaderBindingTable, + StridedDeviceAddressRegionKHR const & hitShaderBindingTable, + StridedDeviceAddressRegionKHR const & callableShaderBindingTable, + DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysIndirectKHR && "Function requires " ); + + getDispatcher()->vkCmdTraceRaysIndirectKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &raygenShaderBindingTable ), + reinterpret_cast( &missShaderBindingTable ), + reinterpret_cast( &hitShaderBindingTable ), + reinterpret_cast( &callableShaderBindingTable ), + static_cast( indirectDeviceAddress ) ); + } + + // wrapper function for command vkGetRayTracingShaderGroupStackSizeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupStackSizeKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize + Pipeline::getRayTracingShaderGroupStackSizeKHR( uint32_t group, ShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR && + "Function requires " ); + + VkDeviceSize result = getDispatcher()->vkGetRayTracingShaderGroupStackSizeKHR( + static_cast( m_device ), static_cast( m_pipeline ), group, static_cast( groupShader ) ); + + return static_cast( result ); + } + + // wrapper function for command vkCmdSetRayTracingPipelineStackSizeKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRayTracingPipelineStackSizeKHR.html + VULKAN_HPP_INLINE void CommandBuffer::setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR && + "Function requires " ); + + getDispatcher()->vkCmdSetRayTracingPipelineStackSizeKHR( static_cast( m_commandBuffer ), pipelineStackSize ); + } + + //=== VK_KHR_sampler_ycbcr_conversion === + + // wrapper function for command vkCreateSamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSamplerYcbcrConversionKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createSamplerYcbcrConversionKHR( SamplerYcbcrConversionCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateSamplerYcbcrConversionKHR && + "Function requires or " ); + + VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion; + Result result = + static_cast( getDispatcher()->vkCreateSamplerYcbcrConversionKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &ycbcrConversion ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, SamplerYcbcrConversion( *this, *reinterpret_cast( &ycbcrConversion ), allocator ) ); + } + + // wrapper function for command vkDestroySamplerYcbcrConversionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroySamplerYcbcrConversionKHR.html + VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, + Optional allocator ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDestroySamplerYcbcrConversionKHR && + "Function requires or " ); + + getDispatcher()->vkDestroySamplerYcbcrConversionKHR( static_cast( m_device ), + static_cast( ycbcrConversion ), + reinterpret_cast( allocator.get() ) ); + } + + //=== VK_KHR_bind_memory2 === + + // wrapper function for command vkBindBufferMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindBufferMemory2KHR.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::bindBufferMemory2KHR( ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindBufferMemory2KHR && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkBindBufferMemory2KHR( + static_cast( m_device ), bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindBufferMemory2KHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkBindImageMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindImageMemory2KHR.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::bindImageMemory2KHR( ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindImageMemory2KHR && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkBindImageMemory2KHR( + static_cast( m_device ), bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindImageMemory2KHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + //=== VK_EXT_image_drm_format_modifier === + + // wrapper function for command vkGetImageDrmFormatModifierPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageDrmFormatModifierPropertiesEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Image::getDrmFormatModifierPropertiesEXT() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT && + "Function requires " ); + + ImageDrmFormatModifierPropertiesEXT properties; + Result result = static_cast( getDispatcher()->vkGetImageDrmFormatModifierPropertiesEXT( + static_cast( m_device ), static_cast( m_image ), reinterpret_cast( &properties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Image::getDrmFormatModifierPropertiesEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + //=== VK_EXT_validation_cache === + + // wrapper function for command vkCreateValidationCacheEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateValidationCacheEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createValidationCacheEXT( ValidationCacheCreateInfoEXT const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateValidationCacheEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache; + Result result = static_cast( getDispatcher()->vkCreateValidationCacheEXT( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &validationCache ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createValidationCacheEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, ValidationCacheEXT( *this, *reinterpret_cast( &validationCache ), allocator ) ); + } + + // wrapper function for command vkMergeValidationCachesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMergeValidationCachesEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type + ValidationCacheEXT::merge( ArrayProxy const & srcCaches ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkMergeValidationCachesEXT && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkMergeValidationCachesEXT( static_cast( m_device ), + static_cast( m_validationCacheEXT ), + srcCaches.size(), + reinterpret_cast( srcCaches.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::ValidationCacheEXT::merge" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetValidationCacheDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetValidationCacheDataEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type ValidationCacheEXT::getData() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetValidationCacheDataEXT && "Function requires " ); + + std::vector data; + size_t dataSize; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetValidationCacheDataEXT( + static_cast( m_device ), static_cast( m_validationCacheEXT ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( getDispatcher()->vkGetValidationCacheDataEXT( static_cast( m_device ), + static_cast( m_validationCacheEXT ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::ValidationCacheEXT::getData" ); + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + //=== VK_NV_shading_rate_image === + + // wrapper function for command vkCmdBindShadingRateImageNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadingRateImageNV.html + VULKAN_HPP_INLINE void CommandBuffer::bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindShadingRateImageNV && "Function requires " ); + + getDispatcher()->vkCmdBindShadingRateImageNV( + static_cast( m_commandBuffer ), static_cast( imageView ), static_cast( imageLayout ) ); + } + + // wrapper function for command vkCmdSetViewportShadingRatePaletteNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportShadingRatePaletteNV.html + VULKAN_HPP_INLINE void + CommandBuffer::setViewportShadingRatePaletteNV( uint32_t firstViewport, + ArrayProxy const & shadingRatePalettes ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportShadingRatePaletteNV && + "Function requires " ); + + getDispatcher()->vkCmdSetViewportShadingRatePaletteNV( static_cast( m_commandBuffer ), + firstViewport, + shadingRatePalettes.size(), + reinterpret_cast( shadingRatePalettes.data() ) ); + } + + // wrapper function for command vkCmdSetCoarseSampleOrderNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoarseSampleOrderNV.html + VULKAN_HPP_INLINE void + CommandBuffer::setCoarseSampleOrderNV( CoarseSampleOrderTypeNV sampleOrderType, + ArrayProxy const & customSampleOrders ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoarseSampleOrderNV && "Function requires " ); + + getDispatcher()->vkCmdSetCoarseSampleOrderNV( static_cast( m_commandBuffer ), + static_cast( sampleOrderType ), + customSampleOrders.size(), + reinterpret_cast( customSampleOrders.data() ) ); + } + + //=== VK_NV_ray_tracing === + + // wrapper function for command vkCreateAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructureNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createAccelerationStructureNV( AccelerationStructureCreateInfoNV const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateAccelerationStructureNV && "Function requires " ); + + VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure; + Result result = + static_cast( getDispatcher()->vkCreateAccelerationStructureNV( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &accelerationStructure ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createAccelerationStructureNV" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, AccelerationStructureNV( *this, *reinterpret_cast( &accelerationStructure ), allocator ) ); + } + + // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2KHR + Device::getAccelerationStructureMemoryRequirementsNV( AccelerationStructureMemoryRequirementsInfoNV const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV && + "Function requires " ); + + MemoryRequirements2KHR memoryRequirements; + getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetAccelerationStructureMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureMemoryRequirementsNV.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getAccelerationStructureMemoryRequirementsNV( AccelerationStructureMemoryRequirementsInfoNV const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV && + "Function requires " ); + + StructureChain structureChain; + MemoryRequirements2KHR & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetAccelerationStructureMemoryRequirementsNV( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkBindAccelerationStructureMemoryNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindAccelerationStructureMemoryNV.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::bindAccelerationStructureMemoryNV( ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindAccelerationStructureMemoryNV && + "Function requires " ); + + Result result = static_cast( getDispatcher()->vkBindAccelerationStructureMemoryNV( + static_cast( m_device ), bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindAccelerationStructureMemoryNV" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdBuildAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildAccelerationStructureNV.html + VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( AccelerationStructureInfoNV const & info, + VULKAN_HPP_NAMESPACE::Buffer instanceData, + DeviceSize instanceOffset, + Bool32 update, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + VULKAN_HPP_NAMESPACE::Buffer scratch, + DeviceSize scratchOffset ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildAccelerationStructureNV && "Function requires " ); + + getDispatcher()->vkCmdBuildAccelerationStructureNV( static_cast( m_commandBuffer ), + reinterpret_cast( &info ), + static_cast( instanceData ), + static_cast( instanceOffset ), + static_cast( update ), + static_cast( dst ), + static_cast( src ), + static_cast( scratch ), + static_cast( scratchOffset ) ); + } + + // wrapper function for command vkCmdCopyAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyAccelerationStructureNV.html + VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, + VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, + CopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyAccelerationStructureNV && "Function requires " ); + + getDispatcher()->vkCmdCopyAccelerationStructureNV( static_cast( m_commandBuffer ), + static_cast( dst ), + static_cast( src ), + static_cast( mode ) ); + } + + // wrapper function for command vkCmdTraceRaysNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysNV.html + VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer, + DeviceSize raygenShaderBindingOffset, + VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer, + DeviceSize missShaderBindingOffset, + DeviceSize missShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer, + DeviceSize hitShaderBindingOffset, + DeviceSize hitShaderBindingStride, + VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer, + DeviceSize callableShaderBindingOffset, + DeviceSize callableShaderBindingStride, + uint32_t width, + uint32_t height, + uint32_t depth ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysNV && "Function requires " ); + + getDispatcher()->vkCmdTraceRaysNV( static_cast( m_commandBuffer ), + static_cast( raygenShaderBindingTableBuffer ), + static_cast( raygenShaderBindingOffset ), + static_cast( missShaderBindingTableBuffer ), + static_cast( missShaderBindingOffset ), + static_cast( missShaderBindingStride ), + static_cast( hitShaderBindingTableBuffer ), + static_cast( hitShaderBindingOffset ), + static_cast( hitShaderBindingStride ), + static_cast( callableShaderBindingTableBuffer ), + static_cast( callableShaderBindingOffset ), + static_cast( callableShaderBindingStride ), + width, + height, + depth ); + } + + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createRayTracingPipelinesNV( Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateRayTracingPipelinesNV && "Function requires " ); + + std::vector pipelines( createInfos.size() ); + Result result = + static_cast( getDispatcher()->vkCreateRayTracingPipelinesNV( static_cast( m_device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRayTracingPipelinesNV", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + std::vector pipelinesRAII; + if ( result == Result::eSuccess ) + { + pipelinesRAII.reserve( pipelines.size() ); + for ( auto & pipeline : pipelines ) + { + pipelinesRAII.emplace_back( *this, *reinterpret_cast( &pipeline ), allocator, result ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) ); + } + + // wrapper function for command vkCreateRayTracingPipelinesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateRayTracingPipelinesNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createRayTracingPipelineNV( Optional const & pipelineCache, + RayTracingPipelineCreateInfoNV const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateRayTracingPipelinesNV && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Pipeline pipeline; + Result result = + static_cast( getDispatcher()->vkCreateRayTracingPipelinesNV( static_cast( m_device ), + pipelineCache ? static_cast( **pipelineCache ) : 0, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createRayTracingPipelineNV", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast( &pipeline ), allocator, result ) ); + } + + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Pipeline::getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, + uint32_t groupCount, + size_t dataSize, + void * pData ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV && + "Function requires or " ); + return static_cast( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( + static_cast( m_device ), static_cast( m_pipeline ), firstGroup, groupCount, dataSize, pData ) ); + } + + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Pipeline::getRayTracingShaderGroupHandlesNV( uint32_t firstGroup, uint32_t groupCount, size_t dataSize ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV && + "Function requires or " ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandlesNV" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetRayTracingShaderGroupHandlesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRayTracingShaderGroupHandlesNV.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Pipeline::getRayTracingShaderGroupHandleNV( uint32_t firstGroup, + uint32_t groupCount ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV && + "Function requires or " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetRayTracingShaderGroupHandlesNV( static_cast( m_device ), + static_cast( m_pipeline ), + firstGroup, + groupCount, + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::getRayTracingShaderGroupHandleNV" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result AccelerationStructureNV::getHandle( size_t dataSize, void * pData ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureHandleNV && "Function requires " ); + return static_cast( getDispatcher()->vkGetAccelerationStructureHandleNV( + static_cast( m_device ), static_cast( m_accelerationStructureNV ), dataSize, pData ) ); + } + + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type AccelerationStructureNV::getHandle( size_t dataSize ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureHandleNV && "Function requires " ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = + static_cast( getDispatcher()->vkGetAccelerationStructureHandleNV( static_cast( m_device ), + static_cast( m_accelerationStructureNV ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetAccelerationStructureHandleNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureHandleNV.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type AccelerationStructureNV::getHandle() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureHandleNV && "Function requires " ); + + DataType data; + Result result = + static_cast( getDispatcher()->vkGetAccelerationStructureHandleNV( static_cast( m_device ), + static_cast( m_accelerationStructureNV ), + sizeof( DataType ), + reinterpret_cast( &data ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::AccelerationStructureNV::getHandle" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkCmdWriteAccelerationStructuresPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteAccelerationStructuresPropertiesNV.html + VULKAN_HPP_INLINE void + CommandBuffer::writeAccelerationStructuresPropertiesNV( ArrayProxy const & accelerationStructures, + QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV && + "Function requires " ); + + getDispatcher()->vkCmdWriteAccelerationStructuresPropertiesNV( static_cast( m_commandBuffer ), + accelerationStructures.size(), + reinterpret_cast( accelerationStructures.data() ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } + + // wrapper function for command vkCompileDeferredNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCompileDeferredNV.html + VULKAN_HPP_INLINE typename ResultValueType::type Pipeline::compileDeferredNV( uint32_t shader ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCompileDeferredNV && "Function requires " ); + + Result result = + static_cast( getDispatcher()->vkCompileDeferredNV( static_cast( m_device ), static_cast( m_pipeline ), shader ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Pipeline::compileDeferredNV" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + //=== VK_KHR_maintenance3 === + + // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorSetLayoutSupport + Device::getDescriptorSetLayoutSupportKHR( DescriptorSetLayoutCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupportKHR && + "Function requires or " ); + + DescriptorSetLayoutSupport support; + getDispatcher()->vkGetDescriptorSetLayoutSupportKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + + return support; + } + + // wrapper function for command vkGetDescriptorSetLayoutSupportKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSupportKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getDescriptorSetLayoutSupportKHR( DescriptorSetLayoutCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSupportKHR && + "Function requires or " ); + + StructureChain structureChain; + DescriptorSetLayoutSupport & support = structureChain.template get(); + getDispatcher()->vkGetDescriptorSetLayoutSupportKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &support ) ); + + return structureChain; + } + + //=== VK_KHR_draw_indirect_count === + + // wrapper function for command vkCmdDrawIndirectCountKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCountKHR.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCountKHR && + "Function requires or or " ); + + getDispatcher()->vkCmdDrawIndirectCountKHR( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + // wrapper function for command vkCmdDrawIndexedIndirectCountKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCountKHR.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdDrawIndexedIndirectCountKHR && + "Function requires or or " ); + + getDispatcher()->vkCmdDrawIndexedIndirectCountKHR( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_EXT_external_memory_host === + + // wrapper function for command vkGetMemoryHostPointerPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryHostPointerPropertiesEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, void const * pHostPointer ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryHostPointerPropertiesEXT && + "Function requires " ); + + MemoryHostPointerPropertiesEXT memoryHostPointerProperties; + Result result = static_cast( + getDispatcher()->vkGetMemoryHostPointerPropertiesEXT( static_cast( m_device ), + static_cast( handleType ), + pHostPointer, + reinterpret_cast( &memoryHostPointerProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryHostPointerPropertiesEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryHostPointerProperties ) ); + } + + //=== VK_AMD_buffer_marker === + + // wrapper function for command vkCmdWriteBufferMarkerAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarkerAMD.html + VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( PipelineStageFlagBits pipelineStage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + DeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarkerAMD && "Function requires " ); + + getDispatcher()->vkCmdWriteBufferMarkerAMD( static_cast( m_commandBuffer ), + static_cast( pipelineStage ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + marker ); + } + + // wrapper function for command vkCmdWriteBufferMarker2AMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteBufferMarker2AMD.html + VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarker2AMD( PipelineStageFlags2 stage, + VULKAN_HPP_NAMESPACE::Buffer dstBuffer, + DeviceSize dstOffset, + uint32_t marker ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteBufferMarker2AMD && "Function requires " ); + + getDispatcher()->vkCmdWriteBufferMarker2AMD( static_cast( m_commandBuffer ), + static_cast( stage ), + static_cast( dstBuffer ), + static_cast( dstOffset ), + marker ); + } + + //=== VK_EXT_calibrated_timestamps === + + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getCalibrateableTimeDomainsEXT() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT && + "Function requires or " ); + + std::vector timeDomains; + uint32_t timeDomainCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( static_cast( m_physicalDevice ), &timeDomainCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && timeDomainCount ) + { + timeDomains.resize( timeDomainCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( + static_cast( m_physicalDevice ), &timeDomainCount, reinterpret_cast( timeDomains.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsEXT" ); + VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); + if ( timeDomainCount < timeDomains.size() ) + { + timeDomains.resize( timeDomainCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( timeDomains ) ); + } + + // wrapper function for command vkGetCalibratedTimestampsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, uint64_t>>::type + Device::getCalibratedTimestampsEXT( ArrayProxy const & timestampInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsEXT && + "Function requires or " ); + + std::pair, uint64_t> data_( std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) ); + std::vector & timestamps = data_.first; + uint64_t & maxDeviation = data_.second; + Result result = + static_cast( getDispatcher()->vkGetCalibratedTimestampsEXT( static_cast( m_device ), + timestampInfos.size(), + reinterpret_cast( timestampInfos.data() ), + timestamps.data(), + &maxDeviation ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetCalibratedTimestampsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getCalibratedTimestampEXT( CalibratedTimestampInfoKHR const & timestampInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsEXT && + "Function requires or " ); + + std::pair data_; + uint64_t & timestamp = data_.first; + uint64_t & maxDeviation = data_.second; + Result result = static_cast( getDispatcher()->vkGetCalibratedTimestampsEXT( + static_cast( m_device ), 1, reinterpret_cast( ×tampInfo ), ×tamp, &maxDeviation ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getCalibratedTimestampEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) ); + } + + //=== VK_NV_mesh_shader === + + // wrapper function for command vkCmdDrawMeshTasksNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksNV.html + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksNV && "Function requires " ); + + getDispatcher()->vkCmdDrawMeshTasksNV( static_cast( m_commandBuffer ), taskCount, firstTask ); + } + + // wrapper function for command vkCmdDrawMeshTasksIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectNV.html + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectNV && "Function requires " ); + + getDispatcher()->vkCmdDrawMeshTasksIndirectNV( + static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + // wrapper function for command vkCmdDrawMeshTasksIndirectCountNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountNV.html + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV && "Function requires " ); + + getDispatcher()->vkCmdDrawMeshTasksIndirectCountNV( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_NV_scissor_exclusive === + + // wrapper function for command vkCmdSetExclusiveScissorEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorEnableNV.html + VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorEnableNV( uint32_t firstExclusiveScissor, + ArrayProxy const & exclusiveScissorEnables ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExclusiveScissorEnableNV && + "Function requires " ); + + getDispatcher()->vkCmdSetExclusiveScissorEnableNV( static_cast( m_commandBuffer ), + firstExclusiveScissor, + exclusiveScissorEnables.size(), + reinterpret_cast( exclusiveScissorEnables.data() ) ); + } + + // wrapper function for command vkCmdSetExclusiveScissorNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExclusiveScissorNV.html + VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( uint32_t firstExclusiveScissor, + ArrayProxy const & exclusiveScissors ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExclusiveScissorNV && "Function requires " ); + + getDispatcher()->vkCmdSetExclusiveScissorNV( static_cast( m_commandBuffer ), + firstExclusiveScissor, + exclusiveScissors.size(), + reinterpret_cast( exclusiveScissors.data() ) ); + } + + //=== VK_NV_device_diagnostic_checkpoints === + + // wrapper function for command vkCmdSetCheckpointNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCheckpointNV.html + template + VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( CheckpointMarkerType const & checkpointMarker ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCheckpointNV && "Function requires " ); + + getDispatcher()->vkCmdSetCheckpointNV( static_cast( m_commandBuffer ), reinterpret_cast( &checkpointMarker ) ); + } + + // wrapper function for command vkGetQueueCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointDataNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointDataNV() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueueCheckpointDataNV && + "Function requires " ); + + std::vector checkpointData; + uint32_t checkpointDataCount; + getDispatcher()->vkGetQueueCheckpointDataNV( static_cast( m_queue ), &checkpointDataCount, nullptr ); + checkpointData.resize( checkpointDataCount ); + getDispatcher()->vkGetQueueCheckpointDataNV( + static_cast( m_queue ), &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); + + VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() ); + if ( checkpointDataCount < checkpointData.size() ) + { + checkpointData.resize( checkpointDataCount ); + } + return checkpointData; + } + + // wrapper function for command vkGetQueueCheckpointData2NV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetQueueCheckpointData2NV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointData2NV() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetQueueCheckpointData2NV && + "Function requires " ); + + std::vector checkpointData; + uint32_t checkpointDataCount; + getDispatcher()->vkGetQueueCheckpointData2NV( static_cast( m_queue ), &checkpointDataCount, nullptr ); + checkpointData.resize( checkpointDataCount ); + getDispatcher()->vkGetQueueCheckpointData2NV( + static_cast( m_queue ), &checkpointDataCount, reinterpret_cast( checkpointData.data() ) ); + + VULKAN_HPP_ASSERT( checkpointDataCount <= checkpointData.size() ); + if ( checkpointDataCount < checkpointData.size() ) + { + checkpointData.resize( checkpointDataCount ); + } + return checkpointData; + } + + //=== VK_KHR_timeline_semaphore === + + // wrapper function for command vkGetSemaphoreCounterValueKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreCounterValueKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Semaphore::getCounterValueKHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreCounterValueKHR && + "Function requires or " ); + + uint64_t value; + Result result = static_cast( + getDispatcher()->vkGetSemaphoreCounterValueKHR( static_cast( m_device ), static_cast( m_semaphore ), &value ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Semaphore::getCounterValueKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( value ) ); + } + + // wrapper function for command vkWaitSemaphoresKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitSemaphoresKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphoresKHR( SemaphoreWaitInfo const & waitInfo, uint64_t timeout ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWaitSemaphoresKHR && "Function requires or " ); + + Result result = static_cast( + getDispatcher()->vkWaitSemaphoresKHR( static_cast( m_device ), reinterpret_cast( &waitInfo ), timeout ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::waitSemaphoresKHR", { Result::eSuccess, Result::eTimeout } ); + + return static_cast( result ); + } + + // wrapper function for command vkSignalSemaphoreKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSignalSemaphoreKHR.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::signalSemaphoreKHR( SemaphoreSignalInfo const & signalInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSignalSemaphoreKHR && "Function requires or " ); + + Result result = static_cast( + getDispatcher()->vkSignalSemaphoreKHR( static_cast( m_device ), reinterpret_cast( &signalInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::signalSemaphoreKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + //=== VK_EXT_present_timing === + + // wrapper function for command vkSetSwapchainPresentTimingQueueSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetSwapchainPresentTimingQueueSizeEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result SwapchainKHR::setPresentTimingQueueSizeEXT( uint32_t size ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetSwapchainPresentTimingQueueSizeEXT && + "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkSetSwapchainPresentTimingQueueSizeEXT( static_cast( m_device ), static_cast( m_swapchainKHR ), size ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::setPresentTimingQueueSizeEXT", { Result::eSuccess, Result::eNotReady } ); + + return static_cast( result ); + } + + // wrapper function for command vkGetSwapchainTimingPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainTimingPropertiesEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> SwapchainKHR::getTimingPropertiesEXT() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainTimingPropertiesEXT && + "Function requires " ); + + std::pair data_; + SwapchainTimingPropertiesEXT & swapchainTimingProperties = data_.first; + uint64_t & swapchainTimingPropertiesCounter = data_.second; + Result result = static_cast( + getDispatcher()->vkGetSwapchainTimingPropertiesEXT( static_cast( m_device ), + static_cast( m_swapchainKHR ), + reinterpret_cast( &swapchainTimingProperties ), + &swapchainTimingPropertiesCounter ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::getTimingPropertiesEXT", { Result::eSuccess, Result::eNotReady } ); + + return { result, data_ }; + } + + // wrapper function for command vkGetSwapchainTimeDomainPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSwapchainTimeDomainPropertiesEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result SwapchainKHR::getTimeDomainPropertiesEXT( SwapchainTimeDomainPropertiesEXT * pSwapchainTimeDomainProperties, + uint64_t * pTimeDomainsCounter ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSwapchainTimeDomainPropertiesEXT && + "Function requires " ); + return static_cast( + getDispatcher()->vkGetSwapchainTimeDomainPropertiesEXT( static_cast( m_device ), + static_cast( m_swapchainKHR ), + reinterpret_cast( pSwapchainTimeDomainProperties ), + pTimeDomainsCounter ) ); + } // wrapper function for command vkGetPastPresentationTimingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPastPresentationTimingEXT.html + + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getPastPresentationTimingEXT( PastPresentationTimingInfoEXT const * pPastPresentationTimingInfo, + PastPresentationTimingPropertiesEXT * pPastPresentationTimingProperties ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPastPresentationTimingEXT && "Function requires " ); + return static_cast( + getDispatcher()->vkGetPastPresentationTimingEXT( static_cast( m_device ), + reinterpret_cast( pPastPresentationTimingInfo ), + reinterpret_cast( pPastPresentationTimingProperties ) ) ); + } + + //=== VK_INTEL_performance_query === + + // wrapper function for command vkInitializePerformanceApiINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkInitializePerformanceApiINTEL.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::initializePerformanceApiINTEL( InitializePerformanceApiInfoINTEL const & initializeInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkInitializePerformanceApiINTEL && + "Function requires " ); + + Result result = static_cast( getDispatcher()->vkInitializePerformanceApiINTEL( + static_cast( m_device ), reinterpret_cast( &initializeInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::initializePerformanceApiINTEL" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkUninitializePerformanceApiINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUninitializePerformanceApiINTEL.html + VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUninitializePerformanceApiINTEL && + "Function requires " ); + + getDispatcher()->vkUninitializePerformanceApiINTEL( static_cast( m_device ) ); + } + + // wrapper function for command vkCmdSetPerformanceMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceMarkerINTEL.html + VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::setPerformanceMarkerINTEL( PerformanceMarkerInfoINTEL const & markerInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPerformanceMarkerINTEL && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkCmdSetPerformanceMarkerINTEL( + static_cast( m_commandBuffer ), reinterpret_cast( &markerInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::setPerformanceMarkerINTEL" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdSetPerformanceStreamMarkerINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceStreamMarkerINTEL.html + VULKAN_HPP_INLINE typename ResultValueType::type + CommandBuffer::setPerformanceStreamMarkerINTEL( PerformanceStreamMarkerInfoINTEL const & markerInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL && + "Function requires " ); + + Result result = static_cast( getDispatcher()->vkCmdSetPerformanceStreamMarkerINTEL( + static_cast( m_commandBuffer ), reinterpret_cast( &markerInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::setPerformanceStreamMarkerINTEL" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdSetPerformanceOverrideINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPerformanceOverrideINTEL.html + VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::setPerformanceOverrideINTEL( PerformanceOverrideInfoINTEL const & overrideInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPerformanceOverrideINTEL && + "Function requires " ); + + Result result = static_cast( getDispatcher()->vkCmdSetPerformanceOverrideINTEL( + static_cast( m_commandBuffer ), reinterpret_cast( &overrideInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CommandBuffer::setPerformanceOverrideINTEL" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkAcquirePerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquirePerformanceConfigurationINTEL.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::acquirePerformanceConfigurationINTEL( PerformanceConfigurationAcquireInfoINTEL const & acquireInfo ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquirePerformanceConfigurationINTEL && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration; + Result result = static_cast( + getDispatcher()->vkAcquirePerformanceConfigurationINTEL( static_cast( m_device ), + reinterpret_cast( &acquireInfo ), + reinterpret_cast( &configuration ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::acquirePerformanceConfigurationINTEL" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, PerformanceConfigurationINTEL( *this, *reinterpret_cast( &configuration ) ) ); + } + + // wrapper function for command vkQueueSetPerformanceConfigurationINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSetPerformanceConfigurationINTEL.html + VULKAN_HPP_INLINE typename ResultValueType::type + Queue::setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSetPerformanceConfigurationINTEL && + "Function requires " ); + + Result result = static_cast( getDispatcher()->vkQueueSetPerformanceConfigurationINTEL( + static_cast( m_queue ), static_cast( configuration ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::setPerformanceConfigurationINTEL" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetPerformanceParameterINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPerformanceParameterINTEL.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getPerformanceParameterINTEL( PerformanceParameterTypeINTEL parameter ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPerformanceParameterINTEL && "Function requires " ); + + PerformanceValueINTEL value; + Result result = static_cast( getDispatcher()->vkGetPerformanceParameterINTEL( + static_cast( m_device ), static_cast( parameter ), reinterpret_cast( &value ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPerformanceParameterINTEL" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( value ) ); + } + + //=== VK_AMD_display_native_hdr === + + // wrapper function for command vkSetLocalDimmingAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLocalDimmingAMD.html + VULKAN_HPP_INLINE void SwapchainKHR::setLocalDimmingAMD( Bool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetLocalDimmingAMD && "Function requires " ); + + getDispatcher()->vkSetLocalDimmingAMD( + static_cast( m_device ), static_cast( m_swapchainKHR ), static_cast( localDimmingEnable ) ); + } + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + // wrapper function for command vkCreateImagePipeSurfaceFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateImagePipeSurfaceFUCHSIA.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createImagePipeSurfaceFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateImagePipeSurfaceFUCHSIA && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = + static_cast( getDispatcher()->vkCreateImagePipeSurfaceFUCHSIA( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createImagePipeSurfaceFUCHSIA" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + // wrapper function for command vkCreateMetalSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMetalSurfaceEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createMetalSurfaceEXT( MetalSurfaceCreateInfoEXT const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateMetalSurfaceEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateMetalSurfaceEXT( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createMetalSurfaceEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + + // wrapper function for command vkGetPhysicalDeviceFragmentShadingRatesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceFragmentShadingRatesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getFragmentShadingRatesKHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR && + "Function requires " ); + + std::vector fragmentShadingRates; + uint32_t fragmentShadingRateCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR( + static_cast( m_physicalDevice ), &fragmentShadingRateCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && fragmentShadingRateCount ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceFragmentShadingRatesKHR( + static_cast( m_physicalDevice ), + &fragmentShadingRateCount, + reinterpret_cast( fragmentShadingRates.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getFragmentShadingRatesKHR" ); + VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() ); + if ( fragmentShadingRateCount < fragmentShadingRates.size() ) + { + fragmentShadingRates.resize( fragmentShadingRateCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( fragmentShadingRates ) ); + } + + // wrapper function for command vkCmdSetFragmentShadingRateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateKHR.html + VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR( Extent2D const & fragmentSize, + FragmentShadingRateCombinerOpKHR const combinerOps[2] ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFragmentShadingRateKHR && + "Function requires " ); + + getDispatcher()->vkCmdSetFragmentShadingRateKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &fragmentSize ), + reinterpret_cast( combinerOps ) ); + } + + //=== VK_KHR_dynamic_rendering_local_read === + + // wrapper function for command vkCmdSetRenderingAttachmentLocationsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingAttachmentLocationsKHR.html + VULKAN_HPP_INLINE void CommandBuffer::setRenderingAttachmentLocationsKHR( RenderingAttachmentLocationInfo const & locationInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRenderingAttachmentLocationsKHR && + "Function requires or " ); + + getDispatcher()->vkCmdSetRenderingAttachmentLocationsKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &locationInfo ) ); + } + + // wrapper function for command vkCmdSetRenderingInputAttachmentIndicesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRenderingInputAttachmentIndicesKHR.html + VULKAN_HPP_INLINE void + CommandBuffer::setRenderingInputAttachmentIndicesKHR( RenderingInputAttachmentIndexInfo const & inputAttachmentIndexInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRenderingInputAttachmentIndicesKHR && + "Function requires or " ); + + getDispatcher()->vkCmdSetRenderingInputAttachmentIndicesKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &inputAttachmentIndexInfo ) ); + } + + //=== VK_EXT_buffer_device_address === + + // wrapper function for command vkGetBufferDeviceAddressEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressEXT( BufferDeviceAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetBufferDeviceAddressEXT && + "Function requires or or " ); + + VkDeviceAddress result = + getDispatcher()->vkGetBufferDeviceAddressEXT( static_cast( m_device ), reinterpret_cast( &info ) ); + + return static_cast( result ); + } + + //=== VK_EXT_tooling_info === + + // wrapper function for command vkGetPhysicalDeviceToolPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceToolPropertiesEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getToolPropertiesEXT() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT && + "Function requires or " ); + + std::vector toolProperties; + uint32_t toolCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT( static_cast( m_physicalDevice ), &toolCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && toolCount ) + { + toolProperties.resize( toolCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceToolPropertiesEXT( + static_cast( m_physicalDevice ), &toolCount, reinterpret_cast( toolProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getToolPropertiesEXT" ); + VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); + if ( toolCount < toolProperties.size() ) + { + toolProperties.resize( toolCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( toolProperties ) ); + } + + //=== VK_KHR_present_wait === + + // wrapper function for command vkWaitForPresentKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresentKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result SwapchainKHR::waitForPresent( uint64_t presentId, uint64_t timeout ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWaitForPresentKHR && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkWaitForPresentKHR( static_cast( m_device ), static_cast( m_swapchainKHR ), presentId, timeout ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::waitForPresent", + { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::waitForPresent", { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR } ); +# endif + + return static_cast( result ); + } + + //=== VK_NV_cooperative_matrix === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixPropertiesNV() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( + static_cast( m_physicalDevice ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesNV" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + //=== VK_NV_coverage_reduction_mode === + + // wrapper function for command vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV && + "Function requires " ); + + std::vector combinations; + uint32_t combinationCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + static_cast( m_physicalDevice ), &combinationCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && combinationCount ) + { + combinations.resize( combinationCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( + static_cast( m_physicalDevice ), + &combinationCount, + reinterpret_cast( combinations.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" ); + VULKAN_HPP_ASSERT( combinationCount <= combinations.size() ); + if ( combinationCount < combinations.size() ) + { + combinations.resize( combinationCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( combinations ) ); + } + +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + // wrapper function for command vkGetPhysicalDeviceSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceSurfacePresentModes2EXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getSurfacePresentModes2EXT( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT && + "Function requires " ); + + std::vector presentModes; + uint32_t presentModeCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT( static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + &presentModeCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && presentModeCount ) + { + presentModes.resize( presentModeCount ); + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceSurfacePresentModes2EXT( static_cast( m_physicalDevice ), + reinterpret_cast( &surfaceInfo ), + &presentModeCount, + reinterpret_cast( presentModes.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getSurfacePresentModes2EXT" ); + VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); + if ( presentModeCount < presentModes.size() ) + { + presentModes.resize( presentModeCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( presentModes ) ); + } + + // wrapper function for command vkAcquireFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireFullScreenExclusiveModeEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type SwapchainKHR::acquireFullScreenExclusiveModeEXT() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireFullScreenExclusiveModeEXT && + "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkAcquireFullScreenExclusiveModeEXT( static_cast( m_device ), static_cast( m_swapchainKHR ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::acquireFullScreenExclusiveModeEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkReleaseFullScreenExclusiveModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseFullScreenExclusiveModeEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type SwapchainKHR::releaseFullScreenExclusiveModeEXT() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseFullScreenExclusiveModeEXT && + "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkReleaseFullScreenExclusiveModeEXT( static_cast( m_device ), static_cast( m_swapchainKHR ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::releaseFullScreenExclusiveModeEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetDeviceGroupSurfacePresentModes2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceGroupSurfacePresentModes2EXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getGroupSurfacePresentModes2EXT( PhysicalDeviceSurfaceInfo2KHR const & surfaceInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT && + "Function requires " ); + + DeviceGroupPresentModeFlagsKHR modes; + Result result = static_cast( + getDispatcher()->vkGetDeviceGroupSurfacePresentModes2EXT( static_cast( m_device ), + reinterpret_cast( &surfaceInfo ), + reinterpret_cast( &modes ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getGroupSurfacePresentModes2EXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( modes ) ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + + // wrapper function for command vkCreateHeadlessSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateHeadlessSurfaceEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createHeadlessSurfaceEXT( HeadlessSurfaceCreateInfoEXT const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateHeadlessSurfaceEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateHeadlessSurfaceEXT( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createHeadlessSurfaceEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } + + //=== VK_KHR_buffer_device_address === + + // wrapper function for command vkGetBufferDeviceAddressKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferDeviceAddressKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressKHR( BufferDeviceAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetBufferDeviceAddressKHR && + "Function requires or or " ); + + VkDeviceAddress result = + getDispatcher()->vkGetBufferDeviceAddressKHR( static_cast( m_device ), reinterpret_cast( &info ) ); + + return static_cast( result ); + } + + // wrapper function for command vkGetBufferOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureAddressKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddressKHR( BufferDeviceAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR && + "Function requires or " ); + + uint64_t result = + getDispatcher()->vkGetBufferOpaqueCaptureAddressKHR( static_cast( m_device ), reinterpret_cast( &info ) ); + + return result; + } + + // wrapper function for command vkGetDeviceMemoryOpaqueCaptureAddressKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMemoryOpaqueCaptureAddressKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t + Device::getMemoryOpaqueCaptureAddressKHR( DeviceMemoryOpaqueCaptureAddressInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR && + "Function requires or " ); + + uint64_t result = getDispatcher()->vkGetDeviceMemoryOpaqueCaptureAddressKHR( static_cast( m_device ), + reinterpret_cast( &info ) ); + + return result; + } + + //=== VK_EXT_line_rasterization === + + // wrapper function for command vkCmdSetLineStippleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetLineStippleEXT( static_cast( m_commandBuffer ), lineStippleFactor, lineStipplePattern ); + } + + //=== VK_EXT_host_query_reset === + + // wrapper function for command vkResetQueryPoolEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkResetQueryPoolEXT.html + VULKAN_HPP_INLINE void QueryPool::resetEXT( uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkResetQueryPoolEXT && "Function requires or " ); + + getDispatcher()->vkResetQueryPoolEXT( static_cast( m_device ), static_cast( m_queryPool ), firstQuery, queryCount ); + } + + //=== VK_EXT_extended_dynamic_state === + + // wrapper function for command vkCmdSetCullModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCullModeEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setCullModeEXT( CullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCullModeEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetCullModeEXT( static_cast( m_commandBuffer ), static_cast( cullMode ) ); + } + + // wrapper function for command vkCmdSetFrontFaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFrontFaceEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setFrontFaceEXT( FrontFace frontFace ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFrontFaceEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetFrontFaceEXT( static_cast( m_commandBuffer ), static_cast( frontFace ) ); + } + + // wrapper function for command vkCmdSetPrimitiveTopologyEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveTopologyEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopologyEXT( PrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPrimitiveTopologyEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetPrimitiveTopologyEXT( static_cast( m_commandBuffer ), static_cast( primitiveTopology ) ); + } + + // wrapper function for command vkCmdSetViewportWithCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWithCountEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT( ArrayProxy const & viewports ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWithCountEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetViewportWithCountEXT( + static_cast( m_commandBuffer ), viewports.size(), reinterpret_cast( viewports.data() ) ); + } + + // wrapper function for command vkCmdSetScissorWithCountEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetScissorWithCountEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCountEXT( ArrayProxy const & scissors ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetScissorWithCountEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetScissorWithCountEXT( + static_cast( m_commandBuffer ), scissors.size(), reinterpret_cast( scissors.data() ) ); + } + + // wrapper function for command vkCmdBindVertexBuffers2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers2EXT.html + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2EXT( uint32_t firstBinding, + ArrayProxy const & buffers, + ArrayProxy const & offsets, + ArrayProxy const & sizes, + ArrayProxy const & strides ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindVertexBuffers2EXT && + "Function requires or or " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( buffers.size() == offsets.size() ); + VULKAN_HPP_ASSERT( sizes.empty() || buffers.size() == sizes.size() ); + VULKAN_HPP_ASSERT( strides.empty() || buffers.size() == strides.size() ); +# else + if ( buffers.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != offsets.size()" ); + } + if ( !sizes.empty() && buffers.size() != sizes.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != sizes.size()" ); + } + if ( !strides.empty() && buffers.size() != strides.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindVertexBuffers2EXT: buffers.size() != strides.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBindVertexBuffers2EXT( static_cast( m_commandBuffer ), + firstBinding, + buffers.size(), + reinterpret_cast( buffers.data() ), + reinterpret_cast( offsets.data() ), + reinterpret_cast( sizes.data() ), + reinterpret_cast( strides.data() ) ); + } + + // wrapper function for command vkCmdSetDepthTestEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthTestEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnableEXT( Bool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthTestEnableEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetDepthTestEnableEXT( static_cast( m_commandBuffer ), static_cast( depthTestEnable ) ); + } + + // wrapper function for command vkCmdSetDepthWriteEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthWriteEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnableEXT( Bool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthWriteEnableEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetDepthWriteEnableEXT( static_cast( m_commandBuffer ), static_cast( depthWriteEnable ) ); + } + + // wrapper function for command vkCmdSetDepthCompareOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthCompareOpEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOpEXT( CompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthCompareOpEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetDepthCompareOpEXT( static_cast( m_commandBuffer ), static_cast( depthCompareOp ) ); + } + + // wrapper function for command vkCmdSetDepthBoundsTestEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBoundsTestEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnableEXT( Bool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetDepthBoundsTestEnableEXT( static_cast( m_commandBuffer ), static_cast( depthBoundsTestEnable ) ); + } + + // wrapper function for command vkCmdSetStencilTestEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilTestEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnableEXT( Bool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilTestEnableEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetStencilTestEnableEXT( static_cast( m_commandBuffer ), static_cast( stencilTestEnable ) ); + } + + // wrapper function for command vkCmdSetStencilOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetStencilOpEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setStencilOpEXT( + StencilFaceFlags faceMask, StencilOp failOp, StencilOp passOp, StencilOp depthFailOp, CompareOp compareOp ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetStencilOpEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetStencilOpEXT( static_cast( m_commandBuffer ), + static_cast( faceMask ), + static_cast( failOp ), + static_cast( passOp ), + static_cast( depthFailOp ), + static_cast( compareOp ) ); + } + + //=== VK_KHR_deferred_host_operations === + + // wrapper function for command vkCreateDeferredOperationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDeferredOperationKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createDeferredOperationKHR( Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDeferredOperationKHR && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation; + Result result = static_cast( getDispatcher()->vkCreateDeferredOperationKHR( static_cast( m_device ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &deferredOperation ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDeferredOperationKHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, DeferredOperationKHR( *this, *reinterpret_cast( &deferredOperation ), allocator ) ); + } + + // wrapper function for command vkGetDeferredOperationMaxConcurrencyKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationMaxConcurrencyKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t DeferredOperationKHR::getMaxConcurrency() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR && + "Function requires " ); + + uint32_t result = getDispatcher()->vkGetDeferredOperationMaxConcurrencyKHR( static_cast( m_device ), + static_cast( m_deferredOperationKHR ) ); + + return result; + } + + // wrapper function for command vkGetDeferredOperationResultKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeferredOperationResultKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result DeferredOperationKHR::getResult() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeferredOperationResultKHR && + "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkGetDeferredOperationResultKHR( static_cast( m_device ), static_cast( m_deferredOperationKHR ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DeferredOperationKHR::getResult", { Result::eSuccess, Result::eNotReady } ); + + return static_cast( result ); + } + + // wrapper function for command vkDeferredOperationJoinKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDeferredOperationJoinKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result DeferredOperationKHR::join() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDeferredOperationJoinKHR && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkDeferredOperationJoinKHR( static_cast( m_device ), static_cast( m_deferredOperationKHR ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DeferredOperationKHR::join", { Result::eSuccess, Result::eThreadDoneKHR, Result::eThreadIdleKHR } ); + + return static_cast( result ); + } + + //=== VK_KHR_pipeline_executable_properties === + + // wrapper function for command vkGetPipelineExecutablePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutablePropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getPipelineExecutablePropertiesKHR( PipelineInfoKHR const & pipelineInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineExecutablePropertiesKHR && + "Function requires " ); + + std::vector properties; + uint32_t executableCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPipelineExecutablePropertiesKHR( + static_cast( m_device ), reinterpret_cast( &pipelineInfo ), &executableCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && executableCount ) + { + properties.resize( executableCount ); + result = static_cast( + getDispatcher()->vkGetPipelineExecutablePropertiesKHR( static_cast( m_device ), + reinterpret_cast( &pipelineInfo ), + &executableCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelineExecutablePropertiesKHR" ); + VULKAN_HPP_ASSERT( executableCount <= properties.size() ); + if ( executableCount < properties.size() ) + { + properties.resize( executableCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetPipelineExecutableStatisticsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableStatisticsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getPipelineExecutableStatisticsKHR( PipelineExecutableInfoKHR const & executableInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineExecutableStatisticsKHR && + "Function requires " ); + + std::vector statistics; + uint32_t statisticCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPipelineExecutableStatisticsKHR( + static_cast( m_device ), reinterpret_cast( &executableInfo ), &statisticCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && statisticCount ) + { + statistics.resize( statisticCount ); + result = static_cast( + getDispatcher()->vkGetPipelineExecutableStatisticsKHR( static_cast( m_device ), + reinterpret_cast( &executableInfo ), + &statisticCount, + reinterpret_cast( statistics.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelineExecutableStatisticsKHR" ); + VULKAN_HPP_ASSERT( statisticCount <= statistics.size() ); + if ( statisticCount < statistics.size() ) + { + statistics.resize( statisticCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( statistics ) ); + } + + // wrapper function for command vkGetPipelineExecutableInternalRepresentationsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineExecutableInternalRepresentationsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineExecutableInternalRepresentationsKHR( + PipelineExecutableInfoKHR const * pExecutableInfo, + uint32_t * pInternalRepresentationCount, + PipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR && + "Function requires " ); + return static_cast( getDispatcher()->vkGetPipelineExecutableInternalRepresentationsKHR( + static_cast( m_device ), + reinterpret_cast( pExecutableInfo ), + pInternalRepresentationCount, + reinterpret_cast( pInternalRepresentations ) ) ); + } + + //=== VK_EXT_host_image_copy === + + // wrapper function for command vkCopyMemoryToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToImageEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::copyMemoryToImageEXT( CopyMemoryToImageInfo const & copyMemoryToImageInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToImageEXT && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkCopyMemoryToImageEXT( + static_cast( m_device ), reinterpret_cast( ©MemoryToImageInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMemoryToImageEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCopyImageToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToMemoryEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::copyImageToMemoryEXT( CopyImageToMemoryInfo const & copyImageToMemoryInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyImageToMemoryEXT && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkCopyImageToMemoryEXT( + static_cast( m_device ), reinterpret_cast( ©ImageToMemoryInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyImageToMemoryEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCopyImageToImageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyImageToImageEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::copyImageToImageEXT( CopyImageToImageInfo const & copyImageToImageInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyImageToImageEXT && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkCopyImageToImageEXT( + static_cast( m_device ), reinterpret_cast( ©ImageToImageInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyImageToImageEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkTransitionImageLayoutEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkTransitionImageLayoutEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::transitionImageLayoutEXT( ArrayProxy const & transitions ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkTransitionImageLayoutEXT && + "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkTransitionImageLayoutEXT( + static_cast( m_device ), transitions.size(), reinterpret_cast( transitions.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::transitionImageLayoutEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetImageSubresourceLayout2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Image::getSubresourceLayout2EXT( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetImageSubresourceLayout2EXT && + "Function requires or or or " ); + + SubresourceLayout2 layout; + getDispatcher()->vkGetImageSubresourceLayout2EXT( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkGetImageSubresourceLayout2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2EXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Image::getSubresourceLayout2EXT( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetImageSubresourceLayout2EXT && + "Function requires or or or " ); + + StructureChain structureChain; + SubresourceLayout2 & layout = structureChain.template get(); + getDispatcher()->vkGetImageSubresourceLayout2EXT( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return structureChain; + } + + //=== VK_KHR_map_memory2 === + + // wrapper function for command vkMapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkMapMemory2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type Device::mapMemory2KHR( MemoryMapInfo const & memoryMapInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkMapMemory2KHR && "Function requires or " ); + + void * pData; + Result result = static_cast( + getDispatcher()->vkMapMemory2KHR( static_cast( m_device ), reinterpret_cast( &memoryMapInfo ), &pData ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::mapMemory2KHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pData ) ); + } + + // wrapper function for command vkUnmapMemory2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkUnmapMemory2KHR.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::unmapMemory2KHR( MemoryUnmapInfo const & memoryUnmapInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUnmapMemory2KHR && "Function requires or " ); + + Result result = static_cast( + getDispatcher()->vkUnmapMemory2KHR( static_cast( m_device ), reinterpret_cast( &memoryUnmapInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::unmapMemory2KHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + //=== VK_EXT_swapchain_maintenance1 === + + // wrapper function for command vkReleaseSwapchainImagesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::releaseSwapchainImagesEXT( ReleaseSwapchainImagesInfoKHR const & releaseInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseSwapchainImagesEXT && + "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkReleaseSwapchainImagesEXT( + static_cast( m_device ), reinterpret_cast( &releaseInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::releaseSwapchainImagesEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + //=== VK_NV_device_generated_commands === + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getGeneratedCommandsMemoryRequirementsNV( GeneratedCommandsMemoryRequirementsInfoNV const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV && + "Function requires " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsNV.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getGeneratedCommandsMemoryRequirementsNV( GeneratedCommandsMemoryRequirementsInfoNV const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV && + "Function requires " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsNV( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkCmdPreprocessGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsNV.html + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV( GeneratedCommandsInfoNV const & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPreprocessGeneratedCommandsNV && + "Function requires " ); + + getDispatcher()->vkCmdPreprocessGeneratedCommandsNV( static_cast( m_commandBuffer ), + reinterpret_cast( &generatedCommandsInfo ) ); + } + + // wrapper function for command vkCmdExecuteGeneratedCommandsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsNV.html + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV( Bool32 isPreprocessed, + GeneratedCommandsInfoNV const & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdExecuteGeneratedCommandsNV && + "Function requires " ); + + getDispatcher()->vkCmdExecuteGeneratedCommandsNV( static_cast( m_commandBuffer ), + static_cast( isPreprocessed ), + reinterpret_cast( &generatedCommandsInfo ) ); + } + + // wrapper function for command vkCmdBindPipelineShaderGroupNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindPipelineShaderGroupNV.html + VULKAN_HPP_INLINE void CommandBuffer::bindPipelineShaderGroupNV( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline, + uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindPipelineShaderGroupNV && + "Function requires " ); + + getDispatcher()->vkCmdBindPipelineShaderGroupNV( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( pipeline ), + groupIndex ); + } + + // wrapper function for command vkCreateIndirectCommandsLayoutNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createIndirectCommandsLayoutNV( IndirectCommandsLayoutCreateInfoNV const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateIndirectCommandsLayoutNV && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout; + Result result = + static_cast( getDispatcher()->vkCreateIndirectCommandsLayoutNV( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &indirectCommandsLayout ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutNV" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, IndirectCommandsLayoutNV( *this, *reinterpret_cast( &indirectCommandsLayout ), allocator ) ); + } + + //=== VK_EXT_depth_bias_control === + + // wrapper function for command vkCmdSetDepthBias2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBias2EXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthBias2EXT( DepthBiasInfoEXT const & depthBiasInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBias2EXT && "Function requires " ); + + getDispatcher()->vkCmdSetDepthBias2EXT( static_cast( m_commandBuffer ), reinterpret_cast( &depthBiasInfo ) ); + } + + //=== VK_EXT_acquire_drm_display === + + // wrapper function for command vkAcquireDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireDrmDisplayEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::acquireDrmDisplayEXT( int32_t drmFd, VULKAN_HPP_NAMESPACE::DisplayKHR display ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireDrmDisplayEXT && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkAcquireDrmDisplayEXT( static_cast( m_physicalDevice ), drmFd, static_cast( display ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::acquireDrmDisplayEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetDrmDisplayEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDrmDisplayEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getDrmDisplayEXT( int32_t drmFd, uint32_t connectorId ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDrmDisplayEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::DisplayKHR display; + Result result = static_cast( getDispatcher()->vkGetDrmDisplayEXT( + static_cast( m_physicalDevice ), drmFd, connectorId, reinterpret_cast( &display ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getDrmDisplayEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, DisplayKHR( *this, *reinterpret_cast( &display ) ) ); + } + + //=== VK_EXT_private_data === + + // wrapper function for command vkCreatePrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePrivateDataSlotEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createPrivateDataSlotEXT( PrivateDataSlotCreateInfo const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreatePrivateDataSlotEXT && + "Function requires or " ); + + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot; + Result result = static_cast( getDispatcher()->vkCreatePrivateDataSlotEXT( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &privateDataSlot ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createPrivateDataSlotEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, PrivateDataSlot( *this, *reinterpret_cast( &privateDataSlot ), allocator ) ); + } + + // wrapper function for command vkDestroyPrivateDataSlotEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkDestroyPrivateDataSlotEXT.html + VULKAN_HPP_INLINE void Device::destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, + Optional allocator ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkDestroyPrivateDataSlotEXT && + "Function requires or " ); + + getDispatcher()->vkDestroyPrivateDataSlotEXT( static_cast( m_device ), + static_cast( privateDataSlot ), + reinterpret_cast( allocator.get() ) ); + } + + // wrapper function for command vkSetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetPrivateDataEXT.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::setPrivateDataEXT( ObjectType objectType_, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot, uint64_t data ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetPrivateDataEXT && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkSetPrivateDataEXT( + static_cast( m_device ), static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), data ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::setPrivateDataEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetPrivateDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPrivateDataEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getPrivateDataEXT( ObjectType objectType_, + uint64_t objectHandle, + VULKAN_HPP_NAMESPACE::PrivateDataSlot privateDataSlot ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPrivateDataEXT && "Function requires or " ); + + uint64_t data; + getDispatcher()->vkGetPrivateDataEXT( + static_cast( m_device ), static_cast( objectType_ ), objectHandle, static_cast( privateDataSlot ), &data ); + + return data; + } + + //=== VK_KHR_video_encode_queue === + + // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & qualityLevelInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR && + "Function requires " ); + + VideoEncodeQualityLevelPropertiesKHR qualityLevelProperties; + Result result = static_cast( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &qualityLevelInfo ), + reinterpret_cast( &qualityLevelProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( qualityLevelProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & qualityLevelInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR && + "Function requires " ); + + StructureChain structureChain; + VideoEncodeQualityLevelPropertiesKHR & qualityLevelProperties = structureChain.template get(); + Result result = static_cast( getDispatcher()->vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( + static_cast( m_physicalDevice ), + reinterpret_cast( &qualityLevelInfo ), + reinterpret_cast( &qualityLevelProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getVideoEncodeQualityLevelPropertiesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) ); + } + + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>>::type + Device::getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetEncodedVideoSessionParametersKHR && + "Function requires " ); + + std::pair> data_; + VideoEncodeSessionParametersFeedbackInfoKHR & feedbackInfo = data_.first; + std::vector & data = data_.second; + size_t dataSize; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetEncodedVideoSessionParametersKHR( + static_cast( m_device ), + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( getDispatcher()->vkGetEncodedVideoSessionParametersKHR( + static_cast( m_device ), + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getEncodedVideoSessionParametersKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetEncodedVideoSessionParametersKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetEncodedVideoSessionParametersKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, std::vector>>::type + Device::getEncodedVideoSessionParametersKHR( VideoEncodeSessionParametersGetInfoKHR const & videoSessionParametersInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetEncodedVideoSessionParametersKHR && + "Function requires " ); + + std::pair, std::vector> data_; + VideoEncodeSessionParametersFeedbackInfoKHR & feedbackInfo = data_.first.template get(); + std::vector & data = data_.second; + size_t dataSize; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetEncodedVideoSessionParametersKHR( + static_cast( m_device ), + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( getDispatcher()->vkGetEncodedVideoSessionParametersKHR( + static_cast( m_device ), + reinterpret_cast( &videoSessionParametersInfo ), + reinterpret_cast( &feedbackInfo ), + &dataSize, + reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getEncodedVideoSessionParametersKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkCmdEncodeVideoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEncodeVideoKHR.html + VULKAN_HPP_INLINE void CommandBuffer::encodeVideoKHR( VideoEncodeInfoKHR const & encodeInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEncodeVideoKHR && "Function requires " ); + + getDispatcher()->vkCmdEncodeVideoKHR( static_cast( m_commandBuffer ), reinterpret_cast( &encodeInfo ) ); + } + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + + // wrapper function for command vkCreateCudaModuleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaModuleNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createCudaModuleNV( CudaModuleCreateInfoNV const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateCudaModuleNV && "Function requires " ); + + VULKAN_HPP_NAMESPACE::CudaModuleNV module; + Result result = static_cast( getDispatcher()->vkCreateCudaModuleNV( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &module ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createCudaModuleNV" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, CudaModuleNV( *this, *reinterpret_cast( &module ), allocator ) ); + } + + // wrapper function for command vkGetCudaModuleCacheNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCudaModuleCacheNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type CudaModuleNV::getCache() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetCudaModuleCacheNV && "Function requires " ); + + std::vector cacheData; + size_t cacheSize; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetCudaModuleCacheNV( static_cast( m_device ), static_cast( m_cudaModuleNV ), &cacheSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && cacheSize ) + { + cacheData.resize( cacheSize ); + result = static_cast( getDispatcher()->vkGetCudaModuleCacheNV( + static_cast( m_device ), static_cast( m_cudaModuleNV ), &cacheSize, reinterpret_cast( cacheData.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::CudaModuleNV::getCache" ); + VULKAN_HPP_ASSERT( cacheSize <= cacheData.size() ); + if ( cacheSize < cacheData.size() ) + { + cacheData.resize( cacheSize ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( cacheData ) ); + } + + // wrapper function for command vkCreateCudaFunctionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateCudaFunctionNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createCudaFunctionNV( CudaFunctionCreateInfoNV const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateCudaFunctionNV && "Function requires " ); + + VULKAN_HPP_NAMESPACE::CudaFunctionNV function; + Result result = static_cast( getDispatcher()->vkCreateCudaFunctionNV( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &function ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createCudaFunctionNV" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, + CudaFunctionNV( *this, *reinterpret_cast( &function ), allocator ) ); + } + + // wrapper function for command vkCmdCudaLaunchKernelNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCudaLaunchKernelNV.html + VULKAN_HPP_INLINE void CommandBuffer::cudaLaunchKernelNV( CudaLaunchInfoNV const & launchInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCudaLaunchKernelNV && "Function requires " ); + + getDispatcher()->vkCmdCudaLaunchKernelNV( static_cast( m_commandBuffer ), reinterpret_cast( &launchInfo ) ); + } +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_QCOM_tile_shading === + + // wrapper function for command vkCmdDispatchTileQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchTileQCOM.html + VULKAN_HPP_INLINE void CommandBuffer::dispatchTileQCOM( DispatchTileInfoQCOM const & dispatchTileInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchTileQCOM && "Function requires " ); + + getDispatcher()->vkCmdDispatchTileQCOM( static_cast( m_commandBuffer ), + reinterpret_cast( &dispatchTileInfo ) ); + } + + // wrapper function for command vkCmdBeginPerTileExecutionQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginPerTileExecutionQCOM.html + VULKAN_HPP_INLINE void CommandBuffer::beginPerTileExecutionQCOM( PerTileBeginInfoQCOM const & perTileBeginInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginPerTileExecutionQCOM && "Function requires " ); + + getDispatcher()->vkCmdBeginPerTileExecutionQCOM( static_cast( m_commandBuffer ), + reinterpret_cast( &perTileBeginInfo ) ); + } + + // wrapper function for command vkCmdEndPerTileExecutionQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndPerTileExecutionQCOM.html + VULKAN_HPP_INLINE void CommandBuffer::endPerTileExecutionQCOM( PerTileEndInfoQCOM const & perTileEndInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndPerTileExecutionQCOM && "Function requires " ); + + getDispatcher()->vkCmdEndPerTileExecutionQCOM( static_cast( m_commandBuffer ), + reinterpret_cast( &perTileEndInfo ) ); + } + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + + // wrapper function for command vkExportMetalObjectsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkExportMetalObjectsEXT.html + VULKAN_HPP_INLINE void Device::exportMetalObjectsEXT( ExportMetalObjectsInfoEXT & metalObjectsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkExportMetalObjectsEXT && "Function requires " ); + + getDispatcher()->vkExportMetalObjectsEXT( static_cast( m_device ), reinterpret_cast( &metalObjectsInfo ) ); + } +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_synchronization2 === + + // wrapper function for command vkCmdSetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetEvent2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, DependencyInfo const & dependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetEvent2KHR && "Function requires or " ); + + getDispatcher()->vkCmdSetEvent2KHR( + static_cast( m_commandBuffer ), static_cast( event ), reinterpret_cast( &dependencyInfo ) ); + } + + // wrapper function for command vkCmdResetEvent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResetEvent2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, PipelineStageFlags2 stageMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResetEvent2KHR && "Function requires or " ); + + getDispatcher()->vkCmdResetEvent2KHR( + static_cast( m_commandBuffer ), static_cast( event ), static_cast( stageMask ) ); + } + + // wrapper function for command vkCmdWaitEvents2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWaitEvents2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::waitEvents2KHR( ArrayProxy const & events, + ArrayProxy const & dependencyInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWaitEvents2KHR && "Function requires or " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( events.size() == dependencyInfos.size() ); +# else + if ( events.size() != dependencyInfos.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::waitEvents2KHR: events.size() != dependencyInfos.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdWaitEvents2KHR( static_cast( m_commandBuffer ), + events.size(), + reinterpret_cast( events.data() ), + reinterpret_cast( dependencyInfos.data() ) ); + } + + // wrapper function for command vkCmdPipelineBarrier2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPipelineBarrier2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2KHR( DependencyInfo const & dependencyInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPipelineBarrier2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdPipelineBarrier2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &dependencyInfo ) ); + } + + // wrapper function for command vkCmdWriteTimestamp2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteTimestamp2KHR.html + VULKAN_HPP_INLINE void + CommandBuffer::writeTimestamp2KHR( PipelineStageFlags2 stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteTimestamp2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdWriteTimestamp2KHR( + static_cast( m_commandBuffer ), static_cast( stage ), static_cast( queryPool ), query ); + } + + // wrapper function for command vkQueueSubmit2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueSubmit2KHR.html + VULKAN_HPP_INLINE typename ResultValueType::type Queue::submit2KHR( ArrayProxy const & submits, + VULKAN_HPP_NAMESPACE::Fence fence ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueSubmit2KHR && "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkQueueSubmit2KHR( + static_cast( m_queue ), submits.size(), reinterpret_cast( submits.data() ), static_cast( fence ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Queue::submit2KHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + //=== VK_EXT_descriptor_buffer === + + // wrapper function for command vkGetDescriptorSetLayoutSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutSizeEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize DescriptorSetLayout::getSizeEXT() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutSizeEXT && "Function requires " ); + + DeviceSize layoutSizeInBytes; + getDispatcher()->vkGetDescriptorSetLayoutSizeEXT( static_cast( m_device ), + static_cast( m_descriptorSetLayout ), + reinterpret_cast( &layoutSizeInBytes ) ); + + return layoutSizeInBytes; + } + + // wrapper function for command vkGetDescriptorSetLayoutBindingOffsetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutBindingOffsetEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceSize DescriptorSetLayout::getBindingOffsetEXT( uint32_t binding ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutBindingOffsetEXT && + "Function requires " ); + + DeviceSize offset; + getDispatcher()->vkGetDescriptorSetLayoutBindingOffsetEXT( + static_cast( m_device ), static_cast( m_descriptorSetLayout ), binding, reinterpret_cast( &offset ) ); + + return offset; + } + + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + VULKAN_HPP_INLINE void + Device::getDescriptorEXT( DescriptorGetInfoEXT const * pDescriptorInfo, size_t dataSize, void * pDescriptor ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorEXT && "Function requires " ); + getDispatcher()->vkGetDescriptorEXT( + static_cast( m_device ), reinterpret_cast( pDescriptorInfo ), dataSize, pDescriptor ); + } + + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + VULKAN_HPP_INLINE void + Device::getDescriptorEXT( DescriptorGetInfoEXT const & descriptorInfo, size_t dataSize, void * pDescriptor ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorEXT && "Function requires " ); + + getDispatcher()->vkGetDescriptorEXT( + static_cast( m_device ), reinterpret_cast( &descriptorInfo ), dataSize, pDescriptor ); + } + + // wrapper function for command vkGetDescriptorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorEXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorType Device::getDescriptorEXT( DescriptorGetInfoEXT const & descriptorInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorEXT && "Function requires " ); + + DescriptorType descriptor; + getDispatcher()->vkGetDescriptorEXT( static_cast( m_device ), + reinterpret_cast( &descriptorInfo ), + sizeof( DescriptorType ), + reinterpret_cast( &descriptor ) ); + + return descriptor; + } + + // wrapper function for command vkCmdBindDescriptorBuffersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBuffersEXT.html + VULKAN_HPP_INLINE void + CommandBuffer::bindDescriptorBuffersEXT( ArrayProxy const & bindingInfos ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorBuffersEXT && "Function requires " ); + + getDispatcher()->vkCmdBindDescriptorBuffersEXT( static_cast( m_commandBuffer ), + bindingInfos.size(), + reinterpret_cast( bindingInfos.data() ) ); + } + + // wrapper function for command vkCmdSetDescriptorBufferOffsetsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsetsEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDescriptorBufferOffsetsEXT( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t firstSet, + ArrayProxy const & bufferIndices, + ArrayProxy const & offsets ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDescriptorBufferOffsetsEXT && + "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( bufferIndices.size() == offsets.size() ); +# else + if ( bufferIndices.size() != offsets.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setDescriptorBufferOffsetsEXT: bufferIndices.size() != offsets.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdSetDescriptorBufferOffsetsEXT( static_cast( m_commandBuffer ), + static_cast( pipelineBindPoint ), + static_cast( layout ), + firstSet, + bufferIndices.size(), + bufferIndices.data(), + reinterpret_cast( offsets.data() ) ); + } + + // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplersEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplersEXT.html + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBufferEmbeddedSamplersEXT( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::PipelineLayout layout, + uint32_t set ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplersEXT && + "Function requires " ); + + getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplersEXT( + static_cast( m_commandBuffer ), static_cast( pipelineBindPoint ), static_cast( layout ), set ); + } + + // wrapper function for command vkGetBufferOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferOpaqueCaptureDescriptorDataEXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getBufferOpaqueCaptureDescriptorDataEXT( BufferCaptureDescriptorDataInfoEXT const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferOpaqueCaptureDescriptorDataEXT && + "Function requires " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetBufferOpaqueCaptureDescriptorDataEXT( + static_cast( m_device ), reinterpret_cast( &info ), &data ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getBufferOpaqueCaptureDescriptorDataEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetImageOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageOpaqueCaptureDescriptorDataEXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getImageOpaqueCaptureDescriptorDataEXT( ImageCaptureDescriptorDataInfoEXT const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageOpaqueCaptureDescriptorDataEXT && + "Function requires " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetImageOpaqueCaptureDescriptorDataEXT( + static_cast( m_device ), reinterpret_cast( &info ), &data ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getImageOpaqueCaptureDescriptorDataEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetImageViewOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageViewOpaqueCaptureDescriptorDataEXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getImageViewOpaqueCaptureDescriptorDataEXT( ImageViewCaptureDescriptorDataInfoEXT const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetImageViewOpaqueCaptureDescriptorDataEXT && + "Function requires " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetImageViewOpaqueCaptureDescriptorDataEXT( + static_cast( m_device ), reinterpret_cast( &info ), &data ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getImageViewOpaqueCaptureDescriptorDataEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetSamplerOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSamplerOpaqueCaptureDescriptorDataEXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getSamplerOpaqueCaptureDescriptorDataEXT( SamplerCaptureDescriptorDataInfoEXT const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSamplerOpaqueCaptureDescriptorDataEXT && + "Function requires " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetSamplerOpaqueCaptureDescriptorDataEXT( + static_cast( m_device ), reinterpret_cast( &info ), &data ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getSamplerOpaqueCaptureDescriptorDataEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getAccelerationStructureOpaqueCaptureDescriptorDataEXT( AccelerationStructureCaptureDescriptorDataInfoEXT const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT && + "Function requires " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT( + static_cast( m_device ), reinterpret_cast( &info ), &data ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getAccelerationStructureOpaqueCaptureDescriptorDataEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + //=== VK_KHR_device_address_commands === + + // wrapper function for command vkCmdBindIndexBuffer3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer3KHR.html + VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer3KHR( BindIndexBuffer3InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindIndexBuffer3KHR && "Function requires " ); + + getDispatcher()->vkCmdBindIndexBuffer3KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdBindVertexBuffers3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindVertexBuffers3KHR.html + VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers3KHR( uint32_t firstBinding, + ArrayProxy const & bindingInfos ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindVertexBuffers3KHR && "Function requires " ); + + getDispatcher()->vkCmdBindVertexBuffers3KHR( static_cast( m_commandBuffer ), + firstBinding, + bindingInfos.size(), + reinterpret_cast( bindingInfos.data() ) ); + } + + // wrapper function for command vkCmdDrawIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirect2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndirect2KHR( DrawIndirect2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirect2KHR && "Function requires " ); + + getDispatcher()->vkCmdDrawIndirect2KHR( static_cast( m_commandBuffer ), reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdDrawIndexedIndirect2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirect2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect2KHR( DrawIndirect2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexedIndirect2KHR && "Function requires " ); + + getDispatcher()->vkCmdDrawIndexedIndirect2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdDispatchIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchIndirect2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect2KHR( DispatchIndirect2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchIndirect2KHR && "Function requires " ); + + getDispatcher()->vkCmdDispatchIndirect2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdCopyMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryKHR.html + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryKHR( Optional copyMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryKHR && "Function requires " ); + + getDispatcher()->vkCmdCopyMemoryKHR( static_cast( m_commandBuffer ), + reinterpret_cast( copyMemoryInfo.get() ) ); + } + + // wrapper function for command vkCmdCopyMemoryToImageKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageKHR.html + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToImageKHR( Optional copyMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToImageKHR && "Function requires " ); + + getDispatcher()->vkCmdCopyMemoryToImageKHR( static_cast( m_commandBuffer ), + reinterpret_cast( copyMemoryInfo.get() ) ); + } + + // wrapper function for command vkCmdCopyImageToMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToMemoryKHR.html + VULKAN_HPP_INLINE void CommandBuffer::copyImageToMemoryKHR( Optional copyMemoryInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToMemoryKHR && "Function requires " ); + + getDispatcher()->vkCmdCopyImageToMemoryKHR( static_cast( m_commandBuffer ), + reinterpret_cast( copyMemoryInfo.get() ) ); + } + + // wrapper function for command vkCmdUpdateMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateMemoryKHR.html + VULKAN_HPP_INLINE void CommandBuffer::updateMemoryKHR( DeviceAddressRangeKHR const * pDstRange, + AddressCommandFlagsKHR dstFlags, + DeviceSize dataSize, + void const * pData ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdUpdateMemoryKHR && "Function requires " ); + getDispatcher()->vkCmdUpdateMemoryKHR( static_cast( m_commandBuffer ), + reinterpret_cast( pDstRange ), + static_cast( dstFlags ), + static_cast( dataSize ), + pData ); + } + + // wrapper function for command vkCmdUpdateMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdateMemoryKHR.html + template + VULKAN_HPP_INLINE void CommandBuffer::updateMemoryKHR( DeviceAddressRangeKHR const & dstRange, + AddressCommandFlagsKHR dstFlags, + ArrayProxy const & data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdUpdateMemoryKHR && "Function requires " ); + + getDispatcher()->vkCmdUpdateMemoryKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &dstRange ), + static_cast( dstFlags ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ) ); + } + + // wrapper function for command vkCmdFillMemoryKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdFillMemoryKHR.html + VULKAN_HPP_INLINE void + CommandBuffer::fillMemoryKHR( DeviceAddressRangeKHR const & dstRange, AddressCommandFlagsKHR dstFlags, uint32_t data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdFillMemoryKHR && "Function requires " ); + + getDispatcher()->vkCmdFillMemoryKHR( static_cast( m_commandBuffer ), + reinterpret_cast( &dstRange ), + static_cast( dstFlags ), + data ); + } + + // wrapper function for command vkCmdCopyQueryPoolResultsToMemoryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyQueryPoolResultsToMemoryKHR.html + VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResultsToMemoryKHR( VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery, + uint32_t queryCount, + StridedDeviceAddressRangeKHR const & dstRange, + AddressCommandFlagsKHR dstFlags, + QueryResultFlags queryResultFlags ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyQueryPoolResultsToMemoryKHR && + "Function requires " ); + + getDispatcher()->vkCmdCopyQueryPoolResultsToMemoryKHR( static_cast( m_commandBuffer ), + static_cast( queryPool ), + firstQuery, + queryCount, + reinterpret_cast( &dstRange ), + static_cast( dstFlags ), + static_cast( queryResultFlags ) ); + } + + // wrapper function for command vkCmdDrawIndirectCount2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectCount2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount2KHR( DrawIndirectCount2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectCount2KHR && "Function requires " ); + + getDispatcher()->vkCmdDrawIndirectCount2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdDrawIndexedIndirectCount2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndexedIndirectCount2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount2KHR( DrawIndirectCount2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndexedIndirectCount2KHR && + "Function requires " ); + + getDispatcher()->vkCmdDrawIndexedIndirectCount2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdBeginConditionalRendering2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginConditionalRendering2EXT.html + VULKAN_HPP_INLINE void + CommandBuffer::beginConditionalRendering2EXT( ConditionalRenderingBeginInfo2EXT const & conditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginConditionalRendering2EXT && + "Function requires " ); + + getDispatcher()->vkCmdBeginConditionalRendering2EXT( static_cast( m_commandBuffer ), + reinterpret_cast( &conditionalRenderingBegin ) ); + } + + // wrapper function for command vkCmdBindTransformFeedbackBuffers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTransformFeedbackBuffers2EXT.html + VULKAN_HPP_INLINE void + CommandBuffer::bindTransformFeedbackBuffers2EXT( uint32_t firstBinding, + ArrayProxy const & bindingInfos ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindTransformFeedbackBuffers2EXT && + "Function requires " ); + + getDispatcher()->vkCmdBindTransformFeedbackBuffers2EXT( static_cast( m_commandBuffer ), + firstBinding, + bindingInfos.size(), + reinterpret_cast( bindingInfos.data() ) ); + } + + // wrapper function for command vkCmdBeginTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginTransformFeedback2EXT.html + VULKAN_HPP_INLINE void + CommandBuffer::beginTransformFeedback2EXT( uint32_t firstCounterRange, + ArrayProxy const & counterInfos ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginTransformFeedback2EXT && + "Function requires " ); + + getDispatcher()->vkCmdBeginTransformFeedback2EXT( static_cast( m_commandBuffer ), + firstCounterRange, + counterInfos.size(), + reinterpret_cast( counterInfos.data() ) ); + } + + // wrapper function for command vkCmdEndTransformFeedback2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndTransformFeedback2EXT.html + VULKAN_HPP_INLINE void + CommandBuffer::endTransformFeedback2EXT( uint32_t firstCounterRange, + ArrayProxy const & counterInfos ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndTransformFeedback2EXT && + "Function requires " ); + + getDispatcher()->vkCmdEndTransformFeedback2EXT( static_cast( m_commandBuffer ), + firstCounterRange, + counterInfos.size(), + reinterpret_cast( counterInfos.data() ) ); + } + + // wrapper function for command vkCmdDrawIndirectByteCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawIndirectByteCount2EXT.html + VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCount2EXT( uint32_t instanceCount, + uint32_t firstInstance, + BindTransformFeedbackBuffer2InfoEXT const & counterInfo, + uint32_t counterOffset, + uint32_t vertexStride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawIndirectByteCount2EXT && + "Function requires " ); + + getDispatcher()->vkCmdDrawIndirectByteCount2EXT( static_cast( m_commandBuffer ), + instanceCount, + firstInstance, + reinterpret_cast( &counterInfo ), + counterOffset, + vertexStride ); + } + + // wrapper function for command vkCmdDrawMeshTasksIndirect2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirect2EXT.html + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirect2EXT( DrawIndirect2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirect2EXT && + "Function requires " ); + + getDispatcher()->vkCmdDrawMeshTasksIndirect2EXT( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdDrawMeshTasksIndirectCount2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCount2EXT.html + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCount2EXT( DrawIndirectCount2InfoKHR const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectCount2EXT && + "Function requires " ); + + getDispatcher()->vkCmdDrawMeshTasksIndirectCount2EXT( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdWriteMarkerToMemoryAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMarkerToMemoryAMD.html + VULKAN_HPP_INLINE void CommandBuffer::writeMarkerToMemoryAMD( MemoryMarkerInfoAMD const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteMarkerToMemoryAMD && "Function requires " ); + + getDispatcher()->vkCmdWriteMarkerToMemoryAMD( static_cast( m_commandBuffer ), reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCreateAccelerationStructure2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateAccelerationStructure2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createAccelerationStructure2KHR( AccelerationStructureCreateInfo2KHR const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateAccelerationStructure2KHR && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure; + Result result = + static_cast( getDispatcher()->vkCreateAccelerationStructure2KHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &accelerationStructure ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createAccelerationStructure2KHR" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, AccelerationStructureKHR( *this, *reinterpret_cast( &accelerationStructure ), allocator ) ); + } + + //=== VK_NV_fragment_shading_rate_enums === + + // wrapper function for command vkCmdSetFragmentShadingRateEnumNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetFragmentShadingRateEnumNV.html + VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateEnumNV( FragmentShadingRateNV shadingRate, + FragmentShadingRateCombinerOpKHR const combinerOps[2] ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetFragmentShadingRateEnumNV && + "Function requires " ); + + getDispatcher()->vkCmdSetFragmentShadingRateEnumNV( static_cast( m_commandBuffer ), + static_cast( shadingRate ), + reinterpret_cast( combinerOps ) ); + } + + //=== VK_EXT_mesh_shader === + + // wrapper function for command vkCmdDrawMeshTasksEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksEXT.html + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksEXT( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksEXT && "Function requires " ); + + getDispatcher()->vkCmdDrawMeshTasksEXT( static_cast( m_commandBuffer ), groupCountX, groupCountY, groupCountZ ); + } + + // wrapper function for command vkCmdDrawMeshTasksIndirectEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectEXT.html + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectEXT( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + uint32_t drawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectEXT && "Function requires " ); + + getDispatcher()->vkCmdDrawMeshTasksIndirectEXT( + static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ), drawCount, stride ); + } + + // wrapper function for command vkCmdDrawMeshTasksIndirectCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMeshTasksIndirectCountEXT.html + VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountEXT( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + VULKAN_HPP_NAMESPACE::Buffer countBuffer, + DeviceSize countBufferOffset, + uint32_t maxDrawCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMeshTasksIndirectCountEXT && "Function requires " ); + + getDispatcher()->vkCmdDrawMeshTasksIndirectCountEXT( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( countBuffer ), + static_cast( countBufferOffset ), + maxDrawCount, + stride ); + } + + //=== VK_KHR_copy_commands2 === + + // wrapper function for command vkCmdCopyBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBuffer2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR( CopyBufferInfo2 const & copyBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBuffer2KHR && "Function requires or " ); + + getDispatcher()->vkCmdCopyBuffer2KHR( static_cast( m_commandBuffer ), reinterpret_cast( ©BufferInfo ) ); + } + + // wrapper function for command vkCmdCopyImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImage2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR( CopyImageInfo2 const & copyImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImage2KHR && "Function requires or " ); + + getDispatcher()->vkCmdCopyImage2KHR( static_cast( m_commandBuffer ), reinterpret_cast( ©ImageInfo ) ); + } + + // wrapper function for command vkCmdCopyBufferToImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyBufferToImage2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2KHR( CopyBufferToImageInfo2 const & copyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyBufferToImage2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdCopyBufferToImage2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( ©BufferToImageInfo ) ); + } + + // wrapper function for command vkCmdCopyImageToBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyImageToBuffer2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2KHR( CopyImageToBufferInfo2 const & copyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyImageToBuffer2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdCopyImageToBuffer2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( ©ImageToBufferInfo ) ); + } + + // wrapper function for command vkCmdBlitImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBlitImage2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR( BlitImageInfo2 const & blitImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBlitImage2KHR && "Function requires or " ); + + getDispatcher()->vkCmdBlitImage2KHR( static_cast( m_commandBuffer ), reinterpret_cast( &blitImageInfo ) ); + } + + // wrapper function for command vkCmdResolveImage2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdResolveImage2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::resolveImage2KHR( ResolveImageInfo2 const & resolveImageInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdResolveImage2KHR && "Function requires or " ); + + getDispatcher()->vkCmdResolveImage2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &resolveImageInfo ) ); + } + + //=== VK_EXT_device_fault === + // wrapper function for command vkGetDeviceFaultInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultInfoEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFaultInfoEXT( DeviceFaultCountsEXT * pFaultCounts, + DeviceFaultInfoEXT * pFaultInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceFaultInfoEXT && "Function requires " ); + return static_cast( getDispatcher()->vkGetDeviceFaultInfoEXT( static_cast( m_device ), + reinterpret_cast( pFaultCounts ), + reinterpret_cast( pFaultInfo ) ) ); + } +# if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_NV_acquire_winrt_display === + + // wrapper function for command vkAcquireWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAcquireWinrtDisplayNV.html + VULKAN_HPP_INLINE typename ResultValueType::type DisplayKHR::acquireWinrtNV() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAcquireWinrtDisplayNV && "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkAcquireWinrtDisplayNV( static_cast( m_physicalDevice ), static_cast( m_displayKHR ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::DisplayKHR::acquireWinrtNV" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetWinrtDisplayNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetWinrtDisplayNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + PhysicalDevice::getWinrtDisplayNV( uint32_t deviceRelativeId ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetWinrtDisplayNV && "Function requires " ); + + VULKAN_HPP_NAMESPACE::DisplayKHR display; + Result result = static_cast( getDispatcher()->vkGetWinrtDisplayNV( + static_cast( m_physicalDevice ), deviceRelativeId, reinterpret_cast( &display ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getWinrtDisplayNV" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, DisplayKHR( *this, *reinterpret_cast( &display ) ) ); + } +# endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +# if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + // wrapper function for command vkCreateDirectFBSurfaceEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDirectFBSurfaceEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createDirectFBSurfaceEXT( DirectFBSurfaceCreateInfoEXT const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDirectFBSurfaceEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateDirectFBSurfaceEXT( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createDirectFBSurfaceEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } + + // wrapper function for command vkGetPhysicalDeviceDirectFBPresentationSupportEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceDirectFBPresentationSupportEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, + IDirectFB & dfb ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT && + "Function requires " ); + + VkBool32 result = + getDispatcher()->vkGetPhysicalDeviceDirectFBPresentationSupportEXT( static_cast( m_physicalDevice ), queueFamilyIndex, &dfb ); + + return static_cast( result ); + } +# endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_vertex_input_dynamic_state === + + // wrapper function for command vkCmdSetVertexInputEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetVertexInputEXT.html + VULKAN_HPP_INLINE void + CommandBuffer::setVertexInputEXT( ArrayProxy const & vertexBindingDescriptions, + ArrayProxy const & vertexAttributeDescriptions ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetVertexInputEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetVertexInputEXT( static_cast( m_commandBuffer ), + vertexBindingDescriptions.size(), + reinterpret_cast( vertexBindingDescriptions.data() ), + vertexAttributeDescriptions.size(), + reinterpret_cast( vertexAttributeDescriptions.data() ) ); + } + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_memory === + + // wrapper function for command vkGetMemoryZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandleFUCHSIA.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryZirconHandleFUCHSIA( MemoryGetZirconHandleInfoFUCHSIA const & getZirconHandleInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryZirconHandleFUCHSIA && "Function requires " ); + + zx_handle_t zirconHandle; + Result result = static_cast( getDispatcher()->vkGetMemoryZirconHandleFUCHSIA( + static_cast( m_device ), reinterpret_cast( &getZirconHandleInfo ), &zirconHandle ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryZirconHandleFUCHSIA" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( zirconHandle ) ); + } + + // wrapper function for command vkGetMemoryZirconHandlePropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryZirconHandlePropertiesFUCHSIA.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryZirconHandlePropertiesFUCHSIA( ExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA && + "Function requires " ); + + MemoryZirconHandlePropertiesFUCHSIA memoryZirconHandleProperties; + Result result = static_cast( getDispatcher()->vkGetMemoryZirconHandlePropertiesFUCHSIA( + static_cast( m_device ), + static_cast( handleType ), + zirconHandle, + reinterpret_cast( &memoryZirconHandleProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryZirconHandlePropertiesFUCHSIA" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryZirconHandleProperties ) ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_external_semaphore === + + // wrapper function for command vkImportSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkImportSemaphoreZirconHandleFUCHSIA.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::importSemaphoreZirconHandleFUCHSIA( ImportSemaphoreZirconHandleInfoFUCHSIA const & importSemaphoreZirconHandleInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA && + "Function requires " ); + + Result result = static_cast( getDispatcher()->vkImportSemaphoreZirconHandleFUCHSIA( + static_cast( m_device ), reinterpret_cast( &importSemaphoreZirconHandleInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::importSemaphoreZirconHandleFUCHSIA" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetSemaphoreZirconHandleFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetSemaphoreZirconHandleFUCHSIA.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getSemaphoreZirconHandleFUCHSIA( SemaphoreGetZirconHandleInfoFUCHSIA const & getZirconHandleInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA && + "Function requires " ); + + zx_handle_t zirconHandle; + Result result = static_cast( getDispatcher()->vkGetSemaphoreZirconHandleFUCHSIA( + static_cast( m_device ), reinterpret_cast( &getZirconHandleInfo ), &zirconHandle ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getSemaphoreZirconHandleFUCHSIA" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( zirconHandle ) ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + // wrapper function for command vkCreateBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateBufferCollectionFUCHSIA.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createBufferCollectionFUCHSIA( BufferCollectionCreateInfoFUCHSIA const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateBufferCollectionFUCHSIA && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA collection; + Result result = + static_cast( getDispatcher()->vkCreateBufferCollectionFUCHSIA( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &collection ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createBufferCollectionFUCHSIA" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, BufferCollectionFUCHSIA( *this, *reinterpret_cast( &collection ), allocator ) ); + } + + // wrapper function for command vkSetBufferCollectionImageConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionImageConstraintsFUCHSIA.html + VULKAN_HPP_INLINE typename ResultValueType::type + BufferCollectionFUCHSIA::setImageConstraints( ImageConstraintsInfoFUCHSIA const & imageConstraintsInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetBufferCollectionImageConstraintsFUCHSIA && + "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkSetBufferCollectionImageConstraintsFUCHSIA( static_cast( m_device ), + static_cast( m_bufferCollectionFUCHSIA ), + reinterpret_cast( &imageConstraintsInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::BufferCollectionFUCHSIA::setImageConstraints" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkSetBufferCollectionBufferConstraintsFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetBufferCollectionBufferConstraintsFUCHSIA.html + VULKAN_HPP_INLINE typename ResultValueType::type + BufferCollectionFUCHSIA::setBufferConstraints( BufferConstraintsInfoFUCHSIA const & bufferConstraintsInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetBufferCollectionBufferConstraintsFUCHSIA && + "Function requires " ); + + Result result = static_cast( + getDispatcher()->vkSetBufferCollectionBufferConstraintsFUCHSIA( static_cast( m_device ), + static_cast( m_bufferCollectionFUCHSIA ), + reinterpret_cast( &bufferConstraintsInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::BufferCollectionFUCHSIA::setBufferConstraints" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetBufferCollectionPropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetBufferCollectionPropertiesFUCHSIA.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type BufferCollectionFUCHSIA::getProperties() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetBufferCollectionPropertiesFUCHSIA && + "Function requires " ); + + BufferCollectionPropertiesFUCHSIA properties; + Result result = static_cast( + getDispatcher()->vkGetBufferCollectionPropertiesFUCHSIA( static_cast( m_device ), + static_cast( m_bufferCollectionFUCHSIA ), + reinterpret_cast( &properties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::BufferCollectionFUCHSIA::getProperties" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_HUAWEI_subpass_shading === + + // wrapper function for command vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type RenderPass::getSubpassShadingMaxWorkgroupSizeHUAWEI() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI && + "Function requires " ); + + Extent2D maxWorkgroupSize; + Result result = static_cast( getDispatcher()->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( + static_cast( m_device ), static_cast( m_renderPass ), reinterpret_cast( &maxWorkgroupSize ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::RenderPass::getSubpassShadingMaxWorkgroupSizeHUAWEI" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( maxWorkgroupSize ) ); + } + + // wrapper function for command vkCmdSubpassShadingHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSubpassShadingHUAWEI.html + VULKAN_HPP_INLINE void CommandBuffer::subpassShadingHUAWEI() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSubpassShadingHUAWEI && "Function requires " ); + + getDispatcher()->vkCmdSubpassShadingHUAWEI( static_cast( m_commandBuffer ) ); + } + + //=== VK_HUAWEI_invocation_mask === + + // wrapper function for command vkCmdBindInvocationMaskHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindInvocationMaskHUAWEI.html + VULKAN_HPP_INLINE void CommandBuffer::bindInvocationMaskHUAWEI( VULKAN_HPP_NAMESPACE::ImageView imageView, + ImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindInvocationMaskHUAWEI && "Function requires " ); + + getDispatcher()->vkCmdBindInvocationMaskHUAWEI( + static_cast( m_commandBuffer ), static_cast( imageView ), static_cast( imageLayout ) ); + } + + //=== VK_NV_external_memory_rdma === + + // wrapper function for command vkGetMemoryRemoteAddressNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryRemoteAddressNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryRemoteAddressNV( MemoryGetRemoteAddressInfoNV const & memoryGetRemoteAddressInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryRemoteAddressNV && "Function requires " ); + + RemoteAddressNV address; + Result result = static_cast( + getDispatcher()->vkGetMemoryRemoteAddressNV( static_cast( m_device ), + reinterpret_cast( &memoryGetRemoteAddressInfo ), + reinterpret_cast( &address ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryRemoteAddressNV" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( address ) ); + } + + //=== VK_EXT_pipeline_properties === + + // wrapper function for command vkGetPipelinePropertiesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelinePropertiesEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getPipelinePropertiesEXT( PipelineInfoEXT const & pipelineInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelinePropertiesEXT && "Function requires " ); + + BaseOutStructure pipelineProperties; + Result result = static_cast( getDispatcher()->vkGetPipelinePropertiesEXT( static_cast( m_device ), + reinterpret_cast( &pipelineInfo ), + reinterpret_cast( &pipelineProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelinePropertiesEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelineProperties ) ); + } + + //=== VK_EXT_extended_dynamic_state2 === + + // wrapper function for command vkCmdSetPatchControlPointsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPatchControlPointsEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setPatchControlPointsEXT( uint32_t patchControlPoints ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPatchControlPointsEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetPatchControlPointsEXT( static_cast( m_commandBuffer ), patchControlPoints ); + } + + // wrapper function for command vkCmdSetRasterizerDiscardEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizerDiscardEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setRasterizerDiscardEnableEXT( Bool32 rasterizerDiscardEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetRasterizerDiscardEnableEXT( static_cast( m_commandBuffer ), static_cast( rasterizerDiscardEnable ) ); + } + + // wrapper function for command vkCmdSetDepthBiasEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthBiasEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthBiasEnableEXT( Bool32 depthBiasEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthBiasEnableEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetDepthBiasEnableEXT( static_cast( m_commandBuffer ), static_cast( depthBiasEnable ) ); + } + + // wrapper function for command vkCmdSetLogicOpEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setLogicOpEXT( LogicOp logicOp ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLogicOpEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetLogicOpEXT( static_cast( m_commandBuffer ), static_cast( logicOp ) ); + } + + // wrapper function for command vkCmdSetPrimitiveRestartEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPrimitiveRestartEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveRestartEnableEXT( Bool32 primitiveRestartEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT && + "Function requires or or " ); + + getDispatcher()->vkCmdSetPrimitiveRestartEnableEXT( static_cast( m_commandBuffer ), static_cast( primitiveRestartEnable ) ); + } + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + // wrapper function for command vkCreateScreenSurfaceQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateScreenSurfaceQNX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createScreenSurfaceQNX( ScreenSurfaceCreateInfoQNX const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateScreenSurfaceQNX && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateScreenSurfaceQNX( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createScreenSurfaceQNX" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } + + // wrapper function for command vkGetPhysicalDeviceScreenPresentationSupportQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceScreenPresentationSupportQNX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Bool32 PhysicalDevice::getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, + struct _screen_window & window ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX && + "Function requires " ); + + VkBool32 result = + getDispatcher()->vkGetPhysicalDeviceScreenPresentationSupportQNX( static_cast( m_physicalDevice ), queueFamilyIndex, &window ); + + return static_cast( result ); + } +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_EXT_color_write_enable === + + // wrapper function for command vkCmdSetColorWriteEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setColorWriteEnableEXT( ArrayProxy const & colorWriteEnables ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorWriteEnableEXT && "Function requires " ); + + getDispatcher()->vkCmdSetColorWriteEnableEXT( + static_cast( m_commandBuffer ), colorWriteEnables.size(), reinterpret_cast( colorWriteEnables.data() ) ); + } + + //=== VK_KHR_ray_tracing_maintenance1 === + + // wrapper function for command vkCmdTraceRaysIndirect2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdTraceRaysIndirect2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirect2KHR( DeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdTraceRaysIndirect2KHR && "Function requires " ); + + getDispatcher()->vkCmdTraceRaysIndirect2KHR( static_cast( m_commandBuffer ), static_cast( indirectDeviceAddress ) ); + } + + //=== VK_EXT_multi_draw === + + // wrapper function for command vkCmdDrawMultiEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiEXT.html + VULKAN_HPP_INLINE void CommandBuffer::drawMultiEXT( StridedArrayProxy const & vertexInfo, + uint32_t instanceCount, + uint32_t firstInstance ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiEXT && "Function requires " ); + + getDispatcher()->vkCmdDrawMultiEXT( static_cast( m_commandBuffer ), + vertexInfo.size(), + reinterpret_cast( vertexInfo.data() ), + instanceCount, + firstInstance, + vertexInfo.stride() ); + } + + // wrapper function for command vkCmdDrawMultiIndexedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawMultiIndexedEXT.html + VULKAN_HPP_INLINE void CommandBuffer::drawMultiIndexedEXT( StridedArrayProxy const & indexInfo, + uint32_t instanceCount, + uint32_t firstInstance, + Optional vertexOffset ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawMultiIndexedEXT && "Function requires " ); + + getDispatcher()->vkCmdDrawMultiIndexedEXT( static_cast( m_commandBuffer ), + indexInfo.size(), + reinterpret_cast( indexInfo.data() ), + instanceCount, + firstInstance, + indexInfo.stride(), + vertexOffset.get() ); + } + + //=== VK_EXT_opacity_micromap === + + // wrapper function for command vkCreateMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateMicromapEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createMicromapEXT( MicromapCreateInfoEXT const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateMicromapEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::MicromapEXT micromap; + Result result = static_cast( getDispatcher()->vkCreateMicromapEXT( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( µmap ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createMicromapEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, MicromapEXT( *this, *reinterpret_cast( µmap ), allocator ) ); + } + + // wrapper function for command vkCmdBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildMicromapsEXT.html + VULKAN_HPP_INLINE void CommandBuffer::buildMicromapsEXT( ArrayProxy const & infos ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildMicromapsEXT && "Function requires " ); + + getDispatcher()->vkCmdBuildMicromapsEXT( + static_cast( m_commandBuffer ), infos.size(), reinterpret_cast( infos.data() ) ); + } + + // wrapper function for command vkBuildMicromapsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBuildMicromapsEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::buildMicromapsEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + ArrayProxy const & infos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBuildMicromapsEXT && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkBuildMicromapsEXT( static_cast( m_device ), + static_cast( deferredOperation ), + infos.size(), + reinterpret_cast( infos.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::buildMicromapsEXT", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } + + // wrapper function for command vkCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyMicromapInfoEXT const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMicromapEXT && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkCopyMicromapEXT( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMicromapEXT", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } + + // wrapper function for command vkCopyMicromapToMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMicromapToMemoryEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMicromapToMemoryEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyMicromapToMemoryInfoEXT const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMicromapToMemoryEXT && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkCopyMicromapToMemoryEXT( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMicromapToMemoryEXT", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } + + // wrapper function for command vkCopyMemoryToMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCopyMemoryToMicromapEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToMicromapEXT( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, + CopyMemoryToMicromapInfoEXT const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCopyMemoryToMicromapEXT && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkCopyMemoryToMicromapEXT( static_cast( m_device ), + static_cast( deferredOperation ), + reinterpret_cast( &info ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::copyMemoryToMicromapEXT", + { Result::eSuccess, Result::eOperationDeferredKHR, Result::eOperationNotDeferredKHR } ); + + return static_cast( result ); + } + + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::writeMicromapsPropertiesEXT( uint32_t micromapCount, + VULKAN_HPP_NAMESPACE::MicromapEXT const * pMicromaps, + QueryType queryType, + size_t dataSize, + void * pData, + size_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWriteMicromapsPropertiesEXT && "Function requires " ); + return static_cast( getDispatcher()->vkWriteMicromapsPropertiesEXT( static_cast( m_device ), + micromapCount, + reinterpret_cast( pMicromaps ), + static_cast( queryType ), + dataSize, + pData, + stride ) ); + } + + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::writeMicromapsPropertiesEXT( + ArrayProxy const & micromaps, QueryType queryType, size_t dataSize, size_t stride ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWriteMicromapsPropertiesEXT && "Function requires " ); + + VULKAN_HPP_ASSERT( dataSize % sizeof( DataType ) == 0 ); + std::vector data( dataSize / sizeof( DataType ) ); + Result result = static_cast( getDispatcher()->vkWriteMicromapsPropertiesEXT( static_cast( m_device ), + micromaps.size(), + reinterpret_cast( micromaps.data() ), + static_cast( queryType ), + data.size() * sizeof( DataType ), + reinterpret_cast( data.data() ), + stride ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::writeMicromapsPropertiesEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkWriteMicromapsPropertiesEXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::writeMicromapsPropertyEXT( ArrayProxy const & micromaps, QueryType queryType, size_t stride ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWriteMicromapsPropertiesEXT && "Function requires " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkWriteMicromapsPropertiesEXT( static_cast( m_device ), + micromaps.size(), + reinterpret_cast( micromaps.data() ), + static_cast( queryType ), + sizeof( DataType ), + reinterpret_cast( &data ), + stride ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::writeMicromapsPropertyEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkCmdCopyMicromapEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapEXT.html + VULKAN_HPP_INLINE void CommandBuffer::copyMicromapEXT( CopyMicromapInfoEXT const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMicromapEXT && "Function requires " ); + + getDispatcher()->vkCmdCopyMicromapEXT( static_cast( m_commandBuffer ), reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdCopyMicromapToMemoryEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMicromapToMemoryEXT.html + VULKAN_HPP_INLINE void CommandBuffer::copyMicromapToMemoryEXT( CopyMicromapToMemoryInfoEXT const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMicromapToMemoryEXT && "Function requires " ); + + getDispatcher()->vkCmdCopyMicromapToMemoryEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdCopyMemoryToMicromapEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToMicromapEXT.html + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToMicromapEXT( CopyMemoryToMicromapInfoEXT const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToMicromapEXT && "Function requires " ); + + getDispatcher()->vkCmdCopyMemoryToMicromapEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &info ) ); + } + + // wrapper function for command vkCmdWriteMicromapsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdWriteMicromapsPropertiesEXT.html + VULKAN_HPP_INLINE void CommandBuffer::writeMicromapsPropertiesEXT( ArrayProxy const & micromaps, + QueryType queryType, + VULKAN_HPP_NAMESPACE::QueryPool queryPool, + uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdWriteMicromapsPropertiesEXT && + "Function requires " ); + + getDispatcher()->vkCmdWriteMicromapsPropertiesEXT( static_cast( m_commandBuffer ), + micromaps.size(), + reinterpret_cast( micromaps.data() ), + static_cast( queryType ), + static_cast( queryPool ), + firstQuery ); + } + + // wrapper function for command vkGetDeviceMicromapCompatibilityEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceMicromapCompatibilityEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureCompatibilityKHR + Device::getMicromapCompatibilityEXT( MicromapVersionInfoEXT const & versionInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceMicromapCompatibilityEXT && + "Function requires " ); + + AccelerationStructureCompatibilityKHR compatibility; + getDispatcher()->vkGetDeviceMicromapCompatibilityEXT( static_cast( m_device ), + reinterpret_cast( &versionInfo ), + reinterpret_cast( &compatibility ) ); + + return compatibility; + } + + // wrapper function for command vkGetMicromapBuildSizesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMicromapBuildSizesEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MicromapBuildSizesInfoEXT + Device::getMicromapBuildSizesEXT( AccelerationStructureBuildTypeKHR buildType, MicromapBuildInfoEXT const & buildInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMicromapBuildSizesEXT && "Function requires " ); + + MicromapBuildSizesInfoEXT sizeInfo; + getDispatcher()->vkGetMicromapBuildSizesEXT( static_cast( m_device ), + static_cast( buildType ), + reinterpret_cast( &buildInfo ), + reinterpret_cast( &sizeInfo ) ); + + return sizeInfo; + } + + //=== VK_HUAWEI_cluster_culling_shader === + + // wrapper function for command vkCmdDrawClusterHUAWEI, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterHUAWEI.html + VULKAN_HPP_INLINE void CommandBuffer::drawClusterHUAWEI( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawClusterHUAWEI && "Function requires " ); + + getDispatcher()->vkCmdDrawClusterHUAWEI( static_cast( m_commandBuffer ), groupCountX, groupCountY, groupCountZ ); + } + + // wrapper function for command vkCmdDrawClusterIndirectHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDrawClusterIndirectHUAWEI.html + VULKAN_HPP_INLINE void CommandBuffer::drawClusterIndirectHUAWEI( VULKAN_HPP_NAMESPACE::Buffer buffer, DeviceSize offset ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDrawClusterIndirectHUAWEI && + "Function requires " ); + + getDispatcher()->vkCmdDrawClusterIndirectHUAWEI( + static_cast( m_commandBuffer ), static_cast( buffer ), static_cast( offset ) ); + } + + //=== VK_EXT_pageable_device_local_memory === + + // wrapper function for command vkSetDeviceMemoryPriorityEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetDeviceMemoryPriorityEXT.html + VULKAN_HPP_INLINE void DeviceMemory::setPriorityEXT( float priority ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetDeviceMemoryPriorityEXT && + "Function requires " ); + + getDispatcher()->vkSetDeviceMemoryPriorityEXT( static_cast( m_device ), static_cast( m_deviceMemory ), priority ); + } + + //=== VK_KHR_maintenance4 === + + // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getBufferMemoryRequirementsKHR( DeviceBufferMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR && + "Function requires or " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDeviceBufferMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceBufferMemoryRequirementsKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getBufferMemoryRequirementsKHR( DeviceBufferMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR && + "Function requires or " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetDeviceBufferMemoryRequirementsKHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getImageMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR && + "Function requires or " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDeviceImageMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageMemoryRequirementsKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getImageMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR && + "Function requires or " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetDeviceImageMemoryRequirementsKHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkGetDeviceImageSparseMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSparseMemoryRequirementsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector + Device::getImageSparseMemoryRequirementsKHR( DeviceImageMemoryRequirements const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR && + "Function requires or " ); + + std::vector sparseMemoryRequirements; + uint32_t sparseMemoryRequirementCount; + getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR( + static_cast( m_device ), reinterpret_cast( &info ), &sparseMemoryRequirementCount, nullptr ); + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + getDispatcher()->vkGetDeviceImageSparseMemoryRequirementsKHR( static_cast( m_device ), + reinterpret_cast( &info ), + &sparseMemoryRequirementCount, + reinterpret_cast( sparseMemoryRequirements.data() ) ); + + VULKAN_HPP_ASSERT( sparseMemoryRequirementCount <= sparseMemoryRequirements.size() ); + if ( sparseMemoryRequirementCount < sparseMemoryRequirements.size() ) + { + sparseMemoryRequirements.resize( sparseMemoryRequirementCount ); + } + return sparseMemoryRequirements; + } + + //=== VK_VALVE_descriptor_set_host_mapping === + + // wrapper function for command vkGetDescriptorSetLayoutHostMappingInfoVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetLayoutHostMappingInfoVALVE.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DescriptorSetLayoutHostMappingInfoVALVE + Device::getDescriptorSetLayoutHostMappingInfoVALVE( DescriptorSetBindingReferenceVALVE const & bindingReference ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetLayoutHostMappingInfoVALVE && + "Function requires " ); + + DescriptorSetLayoutHostMappingInfoVALVE hostMapping; + getDispatcher()->vkGetDescriptorSetLayoutHostMappingInfoVALVE( static_cast( m_device ), + reinterpret_cast( &bindingReference ), + reinterpret_cast( &hostMapping ) ); + + return hostMapping; + } + + // wrapper function for command vkGetDescriptorSetHostMappingVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDescriptorSetHostMappingVALVE.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE void * DescriptorSet::getHostMappingVALVE() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDescriptorSetHostMappingVALVE && + "Function requires " ); + + void * pData; + getDispatcher()->vkGetDescriptorSetHostMappingVALVE( static_cast( m_device ), static_cast( m_descriptorSet ), &pData ); + + return pData; + } + + //=== VK_NV_copy_memory_indirect === + + // wrapper function for command vkCmdCopyMemoryIndirectNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectNV.html + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryIndirectNV( DeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryIndirectNV && "Function requires " ); + + getDispatcher()->vkCmdCopyMemoryIndirectNV( + static_cast( m_commandBuffer ), static_cast( copyBufferAddress ), copyCount, stride ); + } + + // wrapper function for command vkCmdCopyMemoryToImageIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectNV.html + VULKAN_HPP_INLINE void + CommandBuffer::copyMemoryToImageIndirectNV( DeviceAddress copyBufferAddress, + uint32_t stride, + VULKAN_HPP_NAMESPACE::Image dstImage, + ImageLayout dstImageLayout, + ArrayProxy const & imageSubresources ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToImageIndirectNV && + "Function requires " ); + + getDispatcher()->vkCmdCopyMemoryToImageIndirectNV( static_cast( m_commandBuffer ), + static_cast( copyBufferAddress ), + imageSubresources.size(), + stride, + static_cast( dstImage ), + static_cast( dstImageLayout ), + reinterpret_cast( imageSubresources.data() ) ); + } + + //=== VK_NV_memory_decompression === + + // wrapper function for command vkCmdDecompressMemoryNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryNV.html + VULKAN_HPP_INLINE void + CommandBuffer::decompressMemoryNV( ArrayProxy const & decompressMemoryRegions ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecompressMemoryNV && "Function requires " ); + + getDispatcher()->vkCmdDecompressMemoryNV( static_cast( m_commandBuffer ), + decompressMemoryRegions.size(), + reinterpret_cast( decompressMemoryRegions.data() ) ); + } + + // wrapper function for command vkCmdDecompressMemoryIndirectCountNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountNV.html + VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryIndirectCountNV( DeviceAddress indirectCommandsAddress, + DeviceAddress indirectCommandsCountAddress, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecompressMemoryIndirectCountNV && + "Function requires " ); + + getDispatcher()->vkCmdDecompressMemoryIndirectCountNV( static_cast( m_commandBuffer ), + static_cast( indirectCommandsAddress ), + static_cast( indirectCommandsCountAddress ), + stride ); + } + + //=== VK_NV_device_generated_commands_compute === + + // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getPipelineIndirectMemoryRequirementsNV( ComputePipelineCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV && + "Function requires " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetPipelineIndirectMemoryRequirementsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getPipelineIndirectMemoryRequirementsNV( ComputePipelineCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV && + "Function requires " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetPipelineIndirectMemoryRequirementsNV( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkCmdUpdatePipelineIndirectBufferNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdUpdatePipelineIndirectBufferNV.html + VULKAN_HPP_INLINE void CommandBuffer::updatePipelineIndirectBufferNV( PipelineBindPoint pipelineBindPoint, + VULKAN_HPP_NAMESPACE::Pipeline pipeline ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdUpdatePipelineIndirectBufferNV && + "Function requires " ); + + getDispatcher()->vkCmdUpdatePipelineIndirectBufferNV( + static_cast( m_commandBuffer ), static_cast( pipelineBindPoint ), static_cast( pipeline ) ); + } + + // wrapper function for command vkGetPipelineIndirectDeviceAddressNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineIndirectDeviceAddressNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE DeviceAddress + Device::getPipelineIndirectAddressNV( PipelineIndirectDeviceAddressInfoNV const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineIndirectDeviceAddressNV && + "Function requires " ); + + VkDeviceAddress result = getDispatcher()->vkGetPipelineIndirectDeviceAddressNV( + static_cast( m_device ), reinterpret_cast( &info ) ); + + return static_cast( result ); + } + +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_external_memory === + + // wrapper function for command vkGetNativeBufferPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getNativeBufferPropertiesOHOS( struct OH_NativeBuffer const & buffer ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetNativeBufferPropertiesOHOS && "Function requires " ); + + NativeBufferPropertiesOHOS properties; + Result result = static_cast( getDispatcher()->vkGetNativeBufferPropertiesOHOS( + static_cast( m_device ), &buffer, reinterpret_cast( &properties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getNativeBufferPropertiesOHOS" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetNativeBufferPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetNativeBufferPropertiesOHOS.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getNativeBufferPropertiesOHOS( struct OH_NativeBuffer const & buffer ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetNativeBufferPropertiesOHOS && "Function requires " ); + + StructureChain structureChain; + NativeBufferPropertiesOHOS & properties = structureChain.template get(); + Result result = static_cast( getDispatcher()->vkGetNativeBufferPropertiesOHOS( + static_cast( m_device ), &buffer, reinterpret_cast( &properties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getNativeBufferPropertiesOHOS" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) ); + } + + // wrapper function for command vkGetMemoryNativeBufferOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryNativeBufferOHOS.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryNativeBufferOHOS( MemoryGetNativeBufferInfoOHOS const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryNativeBufferOHOS && "Function requires " ); + + struct OH_NativeBuffer * buffer; + Result result = static_cast( getDispatcher()->vkGetMemoryNativeBufferOHOS( + static_cast( m_device ), reinterpret_cast( &info ), &buffer ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryNativeBufferOHOS" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( buffer ) ); + } +# endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_EXT_extended_dynamic_state3 === + + // wrapper function for command vkCmdSetDepthClampEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthClampEnableEXT( Bool32 depthClampEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClampEnableEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetDepthClampEnableEXT( static_cast( m_commandBuffer ), static_cast( depthClampEnable ) ); + } + + // wrapper function for command vkCmdSetPolygonModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetPolygonModeEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setPolygonModeEXT( PolygonMode polygonMode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetPolygonModeEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetPolygonModeEXT( static_cast( m_commandBuffer ), static_cast( polygonMode ) ); + } + + // wrapper function for command vkCmdSetRasterizationSamplesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationSamplesEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setRasterizationSamplesEXT( SampleCountFlagBits rasterizationSamples ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRasterizationSamplesEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetRasterizationSamplesEXT( static_cast( m_commandBuffer ), + static_cast( rasterizationSamples ) ); + } + + // wrapper function for command vkCmdSetSampleMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleMaskEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setSampleMaskEXT( SampleCountFlagBits samples, ArrayProxy const & sampleMask ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleMaskEXT && + "Function requires or " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( sampleMask.size() == ( static_cast( samples ) + 31 ) / 32 ); +# else + if ( sampleMask.size() != ( static_cast( samples ) + 31 ) / 32 ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::CommandBuffer::setSampleMaskEXT: sampleMask.size() != ( static_cast( samples ) + 31 ) / 32" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdSetSampleMaskEXT( static_cast( m_commandBuffer ), + static_cast( samples ), + reinterpret_cast( sampleMask.data() ) ); + } + + // wrapper function for command vkCmdSetAlphaToCoverageEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToCoverageEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setAlphaToCoverageEnableEXT( Bool32 alphaToCoverageEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetAlphaToCoverageEnableEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetAlphaToCoverageEnableEXT( static_cast( m_commandBuffer ), static_cast( alphaToCoverageEnable ) ); + } + + // wrapper function for command vkCmdSetAlphaToOneEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAlphaToOneEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setAlphaToOneEnableEXT( Bool32 alphaToOneEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetAlphaToOneEnableEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetAlphaToOneEnableEXT( static_cast( m_commandBuffer ), static_cast( alphaToOneEnable ) ); + } + + // wrapper function for command vkCmdSetLogicOpEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLogicOpEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setLogicOpEnableEXT( Bool32 logicOpEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLogicOpEnableEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetLogicOpEnableEXT( static_cast( m_commandBuffer ), static_cast( logicOpEnable ) ); + } + + // wrapper function for command vkCmdSetColorBlendEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setColorBlendEnableEXT( uint32_t firstAttachment, + ArrayProxy const & colorBlendEnables ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorBlendEnableEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetColorBlendEnableEXT( static_cast( m_commandBuffer ), + firstAttachment, + colorBlendEnables.size(), + reinterpret_cast( colorBlendEnables.data() ) ); + } + + // wrapper function for command vkCmdSetColorBlendEquationEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendEquationEXT.html + VULKAN_HPP_INLINE void + CommandBuffer::setColorBlendEquationEXT( uint32_t firstAttachment, + ArrayProxy const & colorBlendEquations ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorBlendEquationEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetColorBlendEquationEXT( static_cast( m_commandBuffer ), + firstAttachment, + colorBlendEquations.size(), + reinterpret_cast( colorBlendEquations.data() ) ); + } + + // wrapper function for command vkCmdSetColorWriteMaskEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorWriteMaskEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setColorWriteMaskEXT( uint32_t firstAttachment, + ArrayProxy const & colorWriteMasks ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorWriteMaskEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetColorWriteMaskEXT( static_cast( m_commandBuffer ), + firstAttachment, + colorWriteMasks.size(), + reinterpret_cast( colorWriteMasks.data() ) ); + } + + // wrapper function for command vkCmdSetTessellationDomainOriginEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetTessellationDomainOriginEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setTessellationDomainOriginEXT( TessellationDomainOrigin domainOrigin ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetTessellationDomainOriginEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetTessellationDomainOriginEXT( static_cast( m_commandBuffer ), + static_cast( domainOrigin ) ); + } + + // wrapper function for command vkCmdSetRasterizationStreamEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRasterizationStreamEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setRasterizationStreamEXT( uint32_t rasterizationStream ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRasterizationStreamEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetRasterizationStreamEXT( static_cast( m_commandBuffer ), rasterizationStream ); + } + + // wrapper function for command vkCmdSetConservativeRasterizationModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetConservativeRasterizationModeEXT.html + VULKAN_HPP_INLINE void + CommandBuffer::setConservativeRasterizationModeEXT( ConservativeRasterizationModeEXT conservativeRasterizationMode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetConservativeRasterizationModeEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetConservativeRasterizationModeEXT( static_cast( m_commandBuffer ), + static_cast( conservativeRasterizationMode ) ); + } + + // wrapper function for command vkCmdSetExtraPrimitiveOverestimationSizeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetExtraPrimitiveOverestimationSizeEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setExtraPrimitiveOverestimationSizeEXT( float extraPrimitiveOverestimationSize ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetExtraPrimitiveOverestimationSizeEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetExtraPrimitiveOverestimationSizeEXT( static_cast( m_commandBuffer ), extraPrimitiveOverestimationSize ); + } + + // wrapper function for command vkCmdSetDepthClipEnableEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthClipEnableEXT( Bool32 depthClipEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClipEnableEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetDepthClipEnableEXT( static_cast( m_commandBuffer ), static_cast( depthClipEnable ) ); + } + + // wrapper function for command vkCmdSetSampleLocationsEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetSampleLocationsEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEnableEXT( Bool32 sampleLocationsEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetSampleLocationsEnableEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetSampleLocationsEnableEXT( static_cast( m_commandBuffer ), static_cast( sampleLocationsEnable ) ); + } + + // wrapper function for command vkCmdSetColorBlendAdvancedEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetColorBlendAdvancedEXT.html + VULKAN_HPP_INLINE void + CommandBuffer::setColorBlendAdvancedEXT( uint32_t firstAttachment, + ArrayProxy const & colorBlendAdvanced ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetColorBlendAdvancedEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetColorBlendAdvancedEXT( static_cast( m_commandBuffer ), + firstAttachment, + colorBlendAdvanced.size(), + reinterpret_cast( colorBlendAdvanced.data() ) ); + } + + // wrapper function for command vkCmdSetProvokingVertexModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetProvokingVertexModeEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setProvokingVertexModeEXT( ProvokingVertexModeEXT provokingVertexMode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetProvokingVertexModeEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetProvokingVertexModeEXT( static_cast( m_commandBuffer ), + static_cast( provokingVertexMode ) ); + } + + // wrapper function for command vkCmdSetLineRasterizationModeEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineRasterizationModeEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setLineRasterizationModeEXT( LineRasterizationModeEXT lineRasterizationMode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineRasterizationModeEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetLineRasterizationModeEXT( static_cast( m_commandBuffer ), + static_cast( lineRasterizationMode ) ); + } + + // wrapper function for command vkCmdSetLineStippleEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEnableEXT( Bool32 stippledLineEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleEnableEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetLineStippleEnableEXT( static_cast( m_commandBuffer ), static_cast( stippledLineEnable ) ); + } + + // wrapper function for command vkCmdSetDepthClipNegativeOneToOneEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClipNegativeOneToOneEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthClipNegativeOneToOneEXT( Bool32 negativeOneToOne ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClipNegativeOneToOneEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetDepthClipNegativeOneToOneEXT( static_cast( m_commandBuffer ), static_cast( negativeOneToOne ) ); + } + + // wrapper function for command vkCmdSetViewportWScalingEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportWScalingEnableNV.html + VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingEnableNV( Bool32 viewportWScalingEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportWScalingEnableNV && + "Function requires or " ); + + getDispatcher()->vkCmdSetViewportWScalingEnableNV( static_cast( m_commandBuffer ), static_cast( viewportWScalingEnable ) ); + } + + // wrapper function for command vkCmdSetViewportSwizzleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetViewportSwizzleNV.html + VULKAN_HPP_INLINE void CommandBuffer::setViewportSwizzleNV( uint32_t firstViewport, + ArrayProxy const & viewportSwizzles ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetViewportSwizzleNV && + "Function requires or " ); + + getDispatcher()->vkCmdSetViewportSwizzleNV( static_cast( m_commandBuffer ), + firstViewport, + viewportSwizzles.size(), + reinterpret_cast( viewportSwizzles.data() ) ); + } + + // wrapper function for command vkCmdSetCoverageToColorEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorEnableNV.html + VULKAN_HPP_INLINE void CommandBuffer::setCoverageToColorEnableNV( Bool32 coverageToColorEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageToColorEnableNV && + "Function requires or " ); + + getDispatcher()->vkCmdSetCoverageToColorEnableNV( static_cast( m_commandBuffer ), static_cast( coverageToColorEnable ) ); + } + + // wrapper function for command vkCmdSetCoverageToColorLocationNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageToColorLocationNV.html + VULKAN_HPP_INLINE void CommandBuffer::setCoverageToColorLocationNV( uint32_t coverageToColorLocation ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageToColorLocationNV && + "Function requires or " ); + + getDispatcher()->vkCmdSetCoverageToColorLocationNV( static_cast( m_commandBuffer ), coverageToColorLocation ); + } + + // wrapper function for command vkCmdSetCoverageModulationModeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationModeNV.html + VULKAN_HPP_INLINE void CommandBuffer::setCoverageModulationModeNV( CoverageModulationModeNV coverageModulationMode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageModulationModeNV && + "Function requires or " ); + + getDispatcher()->vkCmdSetCoverageModulationModeNV( static_cast( m_commandBuffer ), + static_cast( coverageModulationMode ) ); + } + + // wrapper function for command vkCmdSetCoverageModulationTableEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableEnableNV.html + VULKAN_HPP_INLINE void CommandBuffer::setCoverageModulationTableEnableNV( Bool32 coverageModulationTableEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageModulationTableEnableNV && + "Function requires or " ); + + getDispatcher()->vkCmdSetCoverageModulationTableEnableNV( static_cast( m_commandBuffer ), + static_cast( coverageModulationTableEnable ) ); + } + + // wrapper function for command vkCmdSetCoverageModulationTableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageModulationTableNV.html + VULKAN_HPP_INLINE void CommandBuffer::setCoverageModulationTableNV( ArrayProxy const & coverageModulationTable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageModulationTableNV && + "Function requires or " ); + + getDispatcher()->vkCmdSetCoverageModulationTableNV( + static_cast( m_commandBuffer ), coverageModulationTable.size(), coverageModulationTable.data() ); + } + + // wrapper function for command vkCmdSetShadingRateImageEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetShadingRateImageEnableNV.html + VULKAN_HPP_INLINE void CommandBuffer::setShadingRateImageEnableNV( Bool32 shadingRateImageEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetShadingRateImageEnableNV && + "Function requires or " ); + + getDispatcher()->vkCmdSetShadingRateImageEnableNV( static_cast( m_commandBuffer ), static_cast( shadingRateImageEnable ) ); + } + + // wrapper function for command vkCmdSetRepresentativeFragmentTestEnableNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetRepresentativeFragmentTestEnableNV.html + VULKAN_HPP_INLINE void CommandBuffer::setRepresentativeFragmentTestEnableNV( Bool32 representativeFragmentTestEnable ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetRepresentativeFragmentTestEnableNV && + "Function requires or " ); + + getDispatcher()->vkCmdSetRepresentativeFragmentTestEnableNV( static_cast( m_commandBuffer ), + static_cast( representativeFragmentTestEnable ) ); + } + + // wrapper function for command vkCmdSetCoverageReductionModeNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetCoverageReductionModeNV.html + VULKAN_HPP_INLINE void CommandBuffer::setCoverageReductionModeNV( CoverageReductionModeNV coverageReductionMode ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetCoverageReductionModeNV && + "Function requires or " ); + + getDispatcher()->vkCmdSetCoverageReductionModeNV( static_cast( m_commandBuffer ), + static_cast( coverageReductionMode ) ); + } + + //=== VK_ARM_tensors === + + // wrapper function for command vkCreateTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createTensorARM( TensorCreateInfoARM const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateTensorARM && "Function requires " ); + + VULKAN_HPP_NAMESPACE::TensorARM tensor; + Result result = static_cast( getDispatcher()->vkCreateTensorARM( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &tensor ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createTensorARM" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, TensorARM( *this, *reinterpret_cast( &tensor ), allocator ) ); + } + + // wrapper function for command vkCreateTensorViewARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateTensorViewARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createTensorViewARM( TensorViewCreateInfoARM const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateTensorViewARM && "Function requires " ); + + VULKAN_HPP_NAMESPACE::TensorViewARM view; + Result result = static_cast( getDispatcher()->vkCreateTensorViewARM( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &view ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createTensorViewARM" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, TensorViewARM( *this, *reinterpret_cast( &view ), allocator ) ); + } + + // wrapper function for command vkGetTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getTensorMemoryRequirementsARM( TensorMemoryRequirementsInfoARM const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetTensorMemoryRequirementsARM && "Function requires " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetTensorMemoryRequirementsARM( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorMemoryRequirementsARM.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getTensorMemoryRequirementsARM( TensorMemoryRequirementsInfoARM const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetTensorMemoryRequirementsARM && "Function requires " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetTensorMemoryRequirementsARM( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkBindTensorMemoryARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindTensorMemoryARM.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::bindTensorMemoryARM( ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindTensorMemoryARM && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkBindTensorMemoryARM( + static_cast( m_device ), bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindTensorMemoryARM" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getTensorMemoryRequirementsARM( DeviceTensorMemoryRequirementsARM const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceTensorMemoryRequirementsARM && + "Function requires " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetDeviceTensorMemoryRequirementsARM( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceTensorMemoryRequirementsARM.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getTensorMemoryRequirementsARM( DeviceTensorMemoryRequirementsARM const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceTensorMemoryRequirementsARM && + "Function requires " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetDeviceTensorMemoryRequirementsARM( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkCmdCopyTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyTensorARM.html + VULKAN_HPP_INLINE void CommandBuffer::copyTensorARM( CopyTensorInfoARM const & copyTensorInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyTensorARM && "Function requires " ); + + getDispatcher()->vkCmdCopyTensorARM( static_cast( m_commandBuffer ), reinterpret_cast( ©TensorInfo ) ); + } + + // wrapper function for command vkGetPhysicalDeviceExternalTensorPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceExternalTensorPropertiesARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ExternalTensorPropertiesARM + PhysicalDevice::getExternalTensorPropertiesARM( PhysicalDeviceExternalTensorInfoARM const & externalTensorInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceExternalTensorPropertiesARM && + "Function requires " ); + + ExternalTensorPropertiesARM externalTensorProperties; + getDispatcher()->vkGetPhysicalDeviceExternalTensorPropertiesARM( static_cast( m_physicalDevice ), + reinterpret_cast( &externalTensorInfo ), + reinterpret_cast( &externalTensorProperties ) ); + + return externalTensorProperties; + } + + // wrapper function for command vkGetTensorOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorOpaqueCaptureDescriptorDataARM.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getTensorOpaqueCaptureDescriptorDataARM( TensorCaptureDescriptorDataInfoARM const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetTensorOpaqueCaptureDescriptorDataARM && + "Function requires " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetTensorOpaqueCaptureDescriptorDataARM( + static_cast( m_device ), reinterpret_cast( &info ), &data ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getTensorOpaqueCaptureDescriptorDataARM" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkGetTensorViewOpaqueCaptureDescriptorDataARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetTensorViewOpaqueCaptureDescriptorDataARM.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getTensorViewOpaqueCaptureDescriptorDataARM( TensorViewCaptureDescriptorDataInfoARM const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetTensorViewOpaqueCaptureDescriptorDataARM && + "Function requires " ); + + DataType data; + Result result = static_cast( getDispatcher()->vkGetTensorViewOpaqueCaptureDescriptorDataARM( + static_cast( m_device ), reinterpret_cast( &info ), &data ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getTensorViewOpaqueCaptureDescriptorDataARM" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + //=== VK_EXT_shader_module_identifier === + + // wrapper function for command vkGetShaderModuleIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleIdentifierEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ShaderModuleIdentifierEXT ShaderModule::getIdentifierEXT() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderModuleIdentifierEXT && + "Function requires " ); + + ShaderModuleIdentifierEXT identifier; + getDispatcher()->vkGetShaderModuleIdentifierEXT( + static_cast( m_device ), static_cast( m_shaderModule ), reinterpret_cast( &identifier ) ); + + return identifier; + } + + // wrapper function for command vkGetShaderModuleCreateInfoIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderModuleCreateInfoIdentifierEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ShaderModuleIdentifierEXT + Device::getShaderModuleCreateInfoIdentifierEXT( ShaderModuleCreateInfo const & createInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderModuleCreateInfoIdentifierEXT && + "Function requires " ); + + ShaderModuleIdentifierEXT identifier; + getDispatcher()->vkGetShaderModuleCreateInfoIdentifierEXT( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( &identifier ) ); + + return identifier; + } + + //=== VK_NV_optical_flow === + + // wrapper function for command vkGetPhysicalDeviceOpticalFlowImageFormatsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceOpticalFlowImageFormatsNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getOpticalFlowImageFormatsNV( OpticalFlowImageFormatInfoNV const & opticalFlowImageFormatInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceOpticalFlowImageFormatsNV && + "Function requires " ); + + std::vector imageFormatProperties; + uint32_t formatCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceOpticalFlowImageFormatsNV( + static_cast( m_physicalDevice ), + reinterpret_cast( &opticalFlowImageFormatInfo ), + &formatCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && formatCount ) + { + imageFormatProperties.resize( formatCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceOpticalFlowImageFormatsNV( + static_cast( m_physicalDevice ), + reinterpret_cast( &opticalFlowImageFormatInfo ), + &formatCount, + reinterpret_cast( imageFormatProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getOpticalFlowImageFormatsNV" ); + VULKAN_HPP_ASSERT( formatCount <= imageFormatProperties.size() ); + if ( formatCount < imageFormatProperties.size() ) + { + imageFormatProperties.resize( formatCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( imageFormatProperties ) ); + } + + // wrapper function for command vkCreateOpticalFlowSessionNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateOpticalFlowSessionNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createOpticalFlowSessionNV( OpticalFlowSessionCreateInfoNV const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateOpticalFlowSessionNV && "Function requires " ); + + VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV session; + Result result = + static_cast( getDispatcher()->vkCreateOpticalFlowSessionNV( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &session ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createOpticalFlowSessionNV" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, OpticalFlowSessionNV( *this, *reinterpret_cast( &session ), allocator ) ); + } + + // wrapper function for command vkBindOpticalFlowSessionImageNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindOpticalFlowSessionImageNV.html + VULKAN_HPP_INLINE typename ResultValueType::type + OpticalFlowSessionNV::bindImage( OpticalFlowSessionBindingPointNV bindingPoint, VULKAN_HPP_NAMESPACE::ImageView view, ImageLayout layout ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindOpticalFlowSessionImageNV && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkBindOpticalFlowSessionImageNV( static_cast( m_device ), + static_cast( m_opticalFlowSessionNV ), + static_cast( bindingPoint ), + static_cast( view ), + static_cast( layout ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::OpticalFlowSessionNV::bindImage" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdOpticalFlowExecuteNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdOpticalFlowExecuteNV.html + VULKAN_HPP_INLINE void CommandBuffer::opticalFlowExecuteNV( VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV session, + OpticalFlowExecuteInfoNV const & executeInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdOpticalFlowExecuteNV && "Function requires " ); + + getDispatcher()->vkCmdOpticalFlowExecuteNV( static_cast( m_commandBuffer ), + static_cast( session ), + reinterpret_cast( &executeInfo ) ); + } + + //=== VK_KHR_maintenance5 === + + // wrapper function for command vkCmdBindIndexBuffer2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindIndexBuffer2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer2KHR( VULKAN_HPP_NAMESPACE::Buffer buffer, + DeviceSize offset, + DeviceSize size, + IndexType indexType ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindIndexBuffer2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdBindIndexBuffer2KHR( static_cast( m_commandBuffer ), + static_cast( buffer ), + static_cast( offset ), + static_cast( size ), + static_cast( indexType ) ); + } + + // wrapper function for command vkGetRenderingAreaGranularityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetRenderingAreaGranularityKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Extent2D + Device::getRenderingAreaGranularityKHR( RenderingAreaInfo const & renderingAreaInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetRenderingAreaGranularityKHR && + "Function requires or " ); + + Extent2D granularity; + getDispatcher()->vkGetRenderingAreaGranularityKHR( static_cast( m_device ), + reinterpret_cast( &renderingAreaInfo ), + reinterpret_cast( &granularity ) ); + + return granularity; + } + + // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 + Device::getImageSubresourceLayoutKHR( DeviceImageSubresourceInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR && + "Function requires or " ); + + SubresourceLayout2 layout; + getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkGetDeviceImageSubresourceLayoutKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceImageSubresourceLayoutKHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getImageSubresourceLayoutKHR( DeviceImageSubresourceInfo const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR && + "Function requires or " ); + + StructureChain structureChain; + SubresourceLayout2 & layout = structureChain.template get(); + getDispatcher()->vkGetDeviceImageSubresourceLayoutKHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &layout ) ); + + return structureChain; + } + + // wrapper function for command vkGetImageSubresourceLayout2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE SubresourceLayout2 Image::getSubresourceLayout2KHR( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetImageSubresourceLayout2KHR && + "Function requires or or or " ); + + SubresourceLayout2 layout; + getDispatcher()->vkGetImageSubresourceLayout2KHR( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return layout; + } + + // wrapper function for command vkGetImageSubresourceLayout2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetImageSubresourceLayout2KHR.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Image::getSubresourceLayout2KHR( ImageSubresource2 const & subresource ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetImageSubresourceLayout2KHR && + "Function requires or or or " ); + + StructureChain structureChain; + SubresourceLayout2 & layout = structureChain.template get(); + getDispatcher()->vkGetImageSubresourceLayout2KHR( static_cast( m_device ), + static_cast( m_image ), + reinterpret_cast( &subresource ), + reinterpret_cast( &layout ) ); + + return structureChain; + } + + //=== VK_AMD_anti_lag === + + // wrapper function for command vkAntiLagUpdateAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkAntiLagUpdateAMD.html + VULKAN_HPP_INLINE void Device::antiLagUpdateAMD( AntiLagDataAMD const & data ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkAntiLagUpdateAMD && "Function requires " ); + + getDispatcher()->vkAntiLagUpdateAMD( static_cast( m_device ), reinterpret_cast( &data ) ); + } + + //=== VK_KHR_present_wait2 === + + // wrapper function for command vkWaitForPresent2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkWaitForPresent2KHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result SwapchainKHR::waitForPresent2( PresentWait2InfoKHR const & presentWait2Info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkWaitForPresent2KHR && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkWaitForPresent2KHR( static_cast( m_device ), + static_cast( m_swapchainKHR ), + reinterpret_cast( &presentWait2Info ) ) ); + +# if defined( VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS ) + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::waitForPresent2", + { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR, Result::eErrorOutOfDateKHR } ); +# else + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::waitForPresent2", { Result::eSuccess, Result::eTimeout, Result::eSuboptimalKHR } ); +# endif + + return static_cast( result ); + } + + //=== VK_EXT_shader_object === + + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createShadersEXT( ArrayProxy const & createInfos, Optional allocator ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateShadersEXT && "Function requires " ); + + std::vector shaders( createInfos.size() ); + Result result = static_cast( getDispatcher()->vkCreateShadersEXT( static_cast( m_device ), + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( shaders.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createShadersEXT", { Result::eSuccess, Result::eIncompatibleShaderBinaryEXT } ); + std::vector shadersRAII; + if ( result == Result::eSuccess ) + { + shadersRAII.reserve( shaders.size() ); + for ( auto & shader : shaders ) + { + shadersRAII.emplace_back( *this, *reinterpret_cast( &shader ), allocator, result ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( shadersRAII ) ); + } + + // wrapper function for command vkCreateShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShadersEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createShaderEXT( ShaderCreateInfoEXT const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateShadersEXT && "Function requires " ); + + VULKAN_HPP_NAMESPACE::ShaderEXT shader; + Result result = static_cast( getDispatcher()->vkCreateShadersEXT( static_cast( m_device ), + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &shader ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createShaderEXT", { Result::eSuccess, Result::eIncompatibleShaderBinaryEXT } ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, ShaderEXT( *this, *reinterpret_cast( &shader ), allocator, result ) ); + } + + // wrapper function for command vkGetShaderBinaryDataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderBinaryDataEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type ShaderEXT::getBinaryData() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderBinaryDataEXT && "Function requires " ); + + std::vector data; + size_t dataSize; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetShaderBinaryDataEXT( static_cast( m_device ), static_cast( m_shaderEXT ), &dataSize, nullptr ) ); + if ( ( result == Result::eSuccess ) && dataSize ) + { + data.resize( dataSize ); + result = static_cast( getDispatcher()->vkGetShaderBinaryDataEXT( + static_cast( m_device ), static_cast( m_shaderEXT ), &dataSize, reinterpret_cast( data.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::ShaderEXT::getBinaryData" ); + VULKAN_HPP_ASSERT( dataSize <= data.size() ); + if ( dataSize < data.size() ) + { + data.resize( dataSize ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data ) ); + } + + // wrapper function for command vkCmdBindShadersEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindShadersEXT.html + VULKAN_HPP_INLINE void CommandBuffer::bindShadersEXT( ArrayProxy const & stages, + ArrayProxy const & shaders ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindShadersEXT && "Function requires " ); +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( stages.size() == shaders.size() ); +# else + if ( stages.size() != shaders.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::bindShadersEXT: stages.size() != shaders.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + + getDispatcher()->vkCmdBindShadersEXT( static_cast( m_commandBuffer ), + stages.size(), + reinterpret_cast( stages.data() ), + reinterpret_cast( shaders.data() ) ); + } + + // wrapper function for command vkCmdSetDepthClampRangeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDepthClampRangeEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setDepthClampRangeEXT( DepthClampModeEXT depthClampMode, + Optional depthClampRange ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDepthClampRangeEXT && + "Function requires or " ); + + getDispatcher()->vkCmdSetDepthClampRangeEXT( static_cast( m_commandBuffer ), + static_cast( depthClampMode ), + reinterpret_cast( depthClampRange.get() ) ); + } + + //=== VK_KHR_pipeline_binary === + + // wrapper function for command vkCreatePipelineBinariesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreatePipelineBinariesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createPipelineBinariesKHR( PipelineBinaryCreateInfoKHR const & createInfo, Optional allocator ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreatePipelineBinariesKHR && "Function requires " ); + + std::vector pipelineBinaries; + PipelineBinaryHandlesInfoKHR binaries; + Result result; + if ( createInfo.pKeysAndDataInfo ) + { + VULKAN_HPP_ASSERT( !createInfo.pipeline && !createInfo.pPipelineCreateInfo ); + pipelineBinaries.resize( createInfo.pKeysAndDataInfo->binaryCount ); + binaries.pipelineBinaryCount = createInfo.pKeysAndDataInfo->binaryCount; + binaries.pPipelineBinaries = pipelineBinaries.data(); + result = static_cast( getDispatcher()->vkCreatePipelineBinariesKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + } + else + { + VULKAN_HPP_ASSERT( !createInfo.pipeline ^ !createInfo.pPipelineCreateInfo ); + result = static_cast( getDispatcher()->vkCreatePipelineBinariesKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + if ( result == Result::eSuccess ) + { + pipelineBinaries.resize( binaries.pipelineBinaryCount ); + binaries.pPipelineBinaries = pipelineBinaries.data(); + result = static_cast( getDispatcher()->vkCreatePipelineBinariesKHR( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &binaries ) ) ); + } + } + + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createPipelineBinariesKHR", + { Result::eSuccess, Result::eIncomplete, Result::ePipelineBinaryMissingKHR } ); + std::vector pipelineBinariesRAII; + if ( result == Result::eSuccess ) + { + pipelineBinariesRAII.reserve( pipelineBinaries.size() ); + for ( auto & pipelineBinary : pipelineBinaries ) + { + pipelineBinariesRAII.emplace_back( *this, *reinterpret_cast( &pipelineBinary ), allocator, result ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelineBinariesRAII ) ); + } + + // wrapper function for command vkGetPipelineKeyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineKeyKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getPipelineKeyKHR( Optional pipelineCreateInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineKeyKHR && "Function requires " ); + + PipelineBinaryKeyKHR pipelineKey; + Result result = static_cast( getDispatcher()->vkGetPipelineKeyKHR( static_cast( m_device ), + reinterpret_cast( pipelineCreateInfo.get() ), + reinterpret_cast( &pipelineKey ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelineKeyKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelineKey ) ); + } + + // wrapper function for command vkGetPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPipelineBinaryDataKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>>::type + Device::getPipelineBinaryDataKHR( PipelineBinaryDataInfoKHR const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPipelineBinaryDataKHR && "Function requires " ); + + std::pair> data_; + PipelineBinaryKeyKHR & pipelineBinaryKey = data_.first; + std::vector & pipelineBinaryData = data_.second; + size_t pipelineBinaryDataSize; + Result result = static_cast( getDispatcher()->vkGetPipelineBinaryDataKHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &pipelineBinaryKey ), + &pipelineBinaryDataSize, + nullptr ) ); + if ( result == Result::eSuccess ) + { + pipelineBinaryData.resize( pipelineBinaryDataSize ); + result = static_cast( getDispatcher()->vkGetPipelineBinaryDataKHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &pipelineBinaryKey ), + &pipelineBinaryDataSize, + reinterpret_cast( pipelineBinaryData.data() ) ) ); + } + + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getPipelineBinaryDataKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkReleaseCapturedPipelineDataKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseCapturedPipelineDataKHR.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::releaseCapturedPipelineDataKHR( ReleaseCapturedPipelineDataInfoKHR const & info, + Optional allocator ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseCapturedPipelineDataKHR && "Function requires " ); + + Result result = + static_cast( getDispatcher()->vkReleaseCapturedPipelineDataKHR( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( allocator.get() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::releaseCapturedPipelineDataKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + //=== VK_QCOM_tile_properties === + + // wrapper function for command vkGetFramebufferTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetFramebufferTilePropertiesQCOM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Framebuffer::getTilePropertiesQCOM() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetFramebufferTilePropertiesQCOM && + "Function requires " ); + + std::vector properties; + uint32_t propertiesCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetFramebufferTilePropertiesQCOM( + static_cast( m_device ), static_cast( m_framebuffer ), &propertiesCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertiesCount ) + { + properties.resize( propertiesCount ); + result = static_cast( getDispatcher()->vkGetFramebufferTilePropertiesQCOM( static_cast( m_device ), + static_cast( m_framebuffer ), + &propertiesCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Framebuffer::getTilePropertiesQCOM" ); + VULKAN_HPP_ASSERT( propertiesCount <= properties.size() ); + if ( propertiesCount < properties.size() ) + { + properties.resize( propertiesCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDynamicRenderingTilePropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDynamicRenderingTilePropertiesQCOM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getDynamicRenderingTilePropertiesQCOM( RenderingInfo const & renderingInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDynamicRenderingTilePropertiesQCOM && + "Function requires " ); + + TilePropertiesQCOM properties; + Result result = + static_cast( getDispatcher()->vkGetDynamicRenderingTilePropertiesQCOM( static_cast( m_device ), + reinterpret_cast( &renderingInfo ), + reinterpret_cast( &properties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getDynamicRenderingTilePropertiesQCOM" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + //=== VK_KHR_swapchain_maintenance1 === + + // wrapper function for command vkReleaseSwapchainImagesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkReleaseSwapchainImagesKHR.html + VULKAN_HPP_INLINE typename ResultValueType::type Device::releaseSwapchainImagesKHR( ReleaseSwapchainImagesInfoKHR const & releaseInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkReleaseSwapchainImagesKHR && + "Function requires or " ); + + Result result = static_cast( getDispatcher()->vkReleaseSwapchainImagesKHR( + static_cast( m_device ), reinterpret_cast( &releaseInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::releaseSwapchainImagesKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + //=== VK_NV_cooperative_vector === + + // wrapper function for command vkGetPhysicalDeviceCooperativeVectorPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeVectorPropertiesNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCooperativeVectorPropertiesNV() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceCooperativeVectorPropertiesNV && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceCooperativeVectorPropertiesNV( static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceCooperativeVectorPropertiesNV( + static_cast( m_physicalDevice ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCooperativeVectorPropertiesNV" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkConvertCooperativeVectorMatrixNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::convertCooperativeVectorMatrixNV( ConvertCooperativeVectorMatrixInfoNV const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkConvertCooperativeVectorMatrixNV && + "Function requires " ); + + Result result = static_cast( getDispatcher()->vkConvertCooperativeVectorMatrixNV( + static_cast( m_device ), reinterpret_cast( &info ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::convertCooperativeVectorMatrixNV", { Result::eSuccess, Result::eIncomplete } ); + + return static_cast( result ); + } + + // wrapper function for command vkCmdConvertCooperativeVectorMatrixNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdConvertCooperativeVectorMatrixNV.html + VULKAN_HPP_INLINE void + CommandBuffer::convertCooperativeVectorMatrixNV( ArrayProxy const & infos ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdConvertCooperativeVectorMatrixNV && + "Function requires " ); + + getDispatcher()->vkCmdConvertCooperativeVectorMatrixNV( + static_cast( m_commandBuffer ), infos.size(), reinterpret_cast( infos.data() ) ); + } + + //=== VK_NV_low_latency2 === + + // wrapper function for command vkSetLatencySleepModeNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencySleepModeNV.html + VULKAN_HPP_INLINE typename ResultValueType::type SwapchainKHR::setLatencySleepModeNV( LatencySleepModeInfoNV const & sleepModeInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetLatencySleepModeNV && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkSetLatencySleepModeNV( static_cast( m_device ), + static_cast( m_swapchainKHR ), + reinterpret_cast( &sleepModeInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::setLatencySleepModeNV" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkLatencySleepNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkLatencySleepNV.html + VULKAN_HPP_INLINE typename ResultValueType::type SwapchainKHR::latencySleepNV( LatencySleepInfoNV const & sleepInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkLatencySleepNV && "Function requires " ); + + Result result = static_cast( getDispatcher()->vkLatencySleepNV( + static_cast( m_device ), static_cast( m_swapchainKHR ), reinterpret_cast( &sleepInfo ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::SwapchainKHR::latencySleepNV" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkSetLatencyMarkerNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkSetLatencyMarkerNV.html + VULKAN_HPP_INLINE void SwapchainKHR::setLatencyMarkerNV( SetLatencyMarkerInfoNV const & latencyMarkerInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkSetLatencyMarkerNV && "Function requires " ); + + getDispatcher()->vkSetLatencyMarkerNV( static_cast( m_device ), + static_cast( m_swapchainKHR ), + reinterpret_cast( &latencyMarkerInfo ) ); + } + + // wrapper function for command vkGetLatencyTimingsNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetLatencyTimingsNV.html + VULKAN_HPP_INLINE void SwapchainKHR::getLatencyTimingsNV( GetLatencyMarkerInfoNV * pLatencyMarkerInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetLatencyTimingsNV && "Function requires " ); + getDispatcher()->vkGetLatencyTimingsNV( + static_cast( m_device ), static_cast( m_swapchainKHR ), reinterpret_cast( pLatencyMarkerInfo ) ); + } + + // wrapper function for command vkQueueNotifyOutOfBandNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkQueueNotifyOutOfBandNV.html + VULKAN_HPP_INLINE void Queue::notifyOutOfBandNV( OutOfBandQueueTypeInfoNV const & queueTypeInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkQueueNotifyOutOfBandNV && "Function requires " ); + + getDispatcher()->vkQueueNotifyOutOfBandNV( static_cast( m_queue ), reinterpret_cast( &queueTypeInfo ) ); + } + + //=== VK_KHR_cooperative_matrix === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixPropertiesKHR() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR( + static_cast( m_physicalDevice ), &propertyCount, reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixPropertiesKHR" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + //=== VK_ARM_data_graph === + + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::createDataGraphPipelinesARM( Optional const & deferredOperation, + Optional const & pipelineCache, + ArrayProxy const & createInfos, + Optional allocator ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDataGraphPipelinesARM && "Function requires " ); + + std::vector pipelines( createInfos.size() ); + Result result = + static_cast( getDispatcher()->vkCreateDataGraphPipelinesARM( static_cast( m_device ), + deferredOperation ? static_cast( **deferredOperation ) : 0, + pipelineCache ? static_cast( **pipelineCache ) : 0, + createInfos.size(), + reinterpret_cast( createInfos.data() ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( pipelines.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDataGraphPipelinesARM", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + std::vector pipelinesRAII; + if ( result == Result::eSuccess ) + { + pipelinesRAII.reserve( pipelines.size() ); + for ( auto & pipeline : pipelines ) + { + pipelinesRAII.emplace_back( *this, *reinterpret_cast( &pipeline ), allocator, result ); + } + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( pipelinesRAII ) ); + } + + // wrapper function for command vkCreateDataGraphPipelinesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelinesARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createDataGraphPipelineARM( Optional const & deferredOperation, + Optional const & pipelineCache, + DataGraphPipelineCreateInfoARM const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDataGraphPipelinesARM && "Function requires " ); + + VULKAN_HPP_NAMESPACE::Pipeline pipeline; + Result result = + static_cast( getDispatcher()->vkCreateDataGraphPipelinesARM( static_cast( m_device ), + deferredOperation ? static_cast( **deferredOperation ) : 0, + pipelineCache ? static_cast( **pipelineCache ) : 0, + 1, + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &pipeline ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDataGraphPipelineARM", { Result::eSuccess, Result::ePipelineCompileRequiredEXT } ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, Pipeline( *this, *reinterpret_cast( &pipeline ), allocator, result ) ); + } + + // wrapper function for command vkCreateDataGraphPipelineSessionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateDataGraphPipelineSessionARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createDataGraphPipelineSessionARM( DataGraphPipelineSessionCreateInfoARM const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateDataGraphPipelineSessionARM && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM session; + Result result = static_cast( + getDispatcher()->vkCreateDataGraphPipelineSessionARM( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &session ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createDataGraphPipelineSessionARM" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, DataGraphPipelineSessionARM( *this, *reinterpret_cast( &session ), allocator ) ); + } + + // wrapper function for command vkGetDataGraphPipelineSessionBindPointRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionBindPointRequirementsARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getDataGraphPipelineSessionBindPointRequirementsARM( DataGraphPipelineSessionBindPointRequirementsInfoARM const & info ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDataGraphPipelineSessionBindPointRequirementsARM && + "Function requires " ); + + std::vector bindPointRequirements; + uint32_t bindPointRequirementCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetDataGraphPipelineSessionBindPointRequirementsARM( + static_cast( m_device ), + reinterpret_cast( &info ), + &bindPointRequirementCount, + nullptr ) ); + if ( ( result == Result::eSuccess ) && bindPointRequirementCount ) + { + bindPointRequirements.resize( bindPointRequirementCount ); + result = static_cast( getDispatcher()->vkGetDataGraphPipelineSessionBindPointRequirementsARM( + static_cast( m_device ), + reinterpret_cast( &info ), + &bindPointRequirementCount, + reinterpret_cast( bindPointRequirements.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getDataGraphPipelineSessionBindPointRequirementsARM" ); + VULKAN_HPP_ASSERT( bindPointRequirementCount <= bindPointRequirements.size() ); + if ( bindPointRequirementCount < bindPointRequirements.size() ) + { + bindPointRequirements.resize( bindPointRequirementCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( bindPointRequirements ) ); + } + + // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getDataGraphPipelineSessionMemoryRequirementsARM( DataGraphPipelineSessionMemoryRequirementsInfoARM const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDataGraphPipelineSessionMemoryRequirementsARM && + "Function requires " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetDataGraphPipelineSessionMemoryRequirementsARM( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetDataGraphPipelineSessionMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineSessionMemoryRequirementsARM.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getDataGraphPipelineSessionMemoryRequirementsARM( DataGraphPipelineSessionMemoryRequirementsInfoARM const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDataGraphPipelineSessionMemoryRequirementsARM && + "Function requires " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetDataGraphPipelineSessionMemoryRequirementsARM( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkBindDataGraphPipelineSessionMemoryARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkBindDataGraphPipelineSessionMemoryARM.html + VULKAN_HPP_INLINE typename ResultValueType::type + Device::bindDataGraphPipelineSessionMemoryARM( ArrayProxy const & bindInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkBindDataGraphPipelineSessionMemoryARM && + "Function requires " ); + + Result result = static_cast( getDispatcher()->vkBindDataGraphPipelineSessionMemoryARM( + static_cast( m_device ), bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::bindDataGraphPipelineSessionMemoryARM" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result ); + } + + // wrapper function for command vkCmdDispatchDataGraphARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDispatchDataGraphARM.html + VULKAN_HPP_INLINE void CommandBuffer::dispatchDataGraphARM( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM session, + Optional info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDispatchDataGraphARM && "Function requires " ); + + getDispatcher()->vkCmdDispatchDataGraphARM( static_cast( m_commandBuffer ), + static_cast( session ), + reinterpret_cast( info.get() ) ); + } + + // wrapper function for command vkGetDataGraphPipelineAvailablePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelineAvailablePropertiesARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getDataGraphPipelineAvailablePropertiesARM( DataGraphPipelineInfoARM const & pipelineInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDataGraphPipelineAvailablePropertiesARM && + "Function requires " ); + + std::vector properties; + uint32_t propertiesCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetDataGraphPipelineAvailablePropertiesARM( + static_cast( m_device ), reinterpret_cast( &pipelineInfo ), &propertiesCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertiesCount ) + { + properties.resize( propertiesCount ); + result = static_cast( + getDispatcher()->vkGetDataGraphPipelineAvailablePropertiesARM( static_cast( m_device ), + reinterpret_cast( &pipelineInfo ), + &propertiesCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getDataGraphPipelineAvailablePropertiesARM" ); + VULKAN_HPP_ASSERT( propertiesCount <= properties.size() ); + if ( propertiesCount < properties.size() ) + { + properties.resize( propertiesCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetDataGraphPipelinePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDataGraphPipelinePropertiesARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result + Device::getDataGraphPipelinePropertiesARM( DataGraphPipelineInfoARM const * pPipelineInfo, + uint32_t propertiesCount, + DataGraphPipelinePropertyQueryResultARM * pProperties ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDataGraphPipelinePropertiesARM && + "Function requires " ); + return static_cast( + getDispatcher()->vkGetDataGraphPipelinePropertiesARM( static_cast( m_device ), + reinterpret_cast( pPipelineInfo ), + propertiesCount, + reinterpret_cast( pProperties ) ) ); + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getQueueFamilyDataGraphPropertiesARM( uint32_t queueFamilyIndex ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM && + "Function requires " ); + + std::vector queueFamilyDataGraphProperties; + uint32_t queueFamilyDataGraphPropertyCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + static_cast( m_physicalDevice ), queueFamilyIndex, &queueFamilyDataGraphPropertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && queueFamilyDataGraphPropertyCount ) + { + queueFamilyDataGraphProperties.resize( queueFamilyDataGraphPropertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( + static_cast( m_physicalDevice ), + queueFamilyIndex, + &queueFamilyDataGraphPropertyCount, + reinterpret_cast( queueFamilyDataGraphProperties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getQueueFamilyDataGraphPropertiesARM" ); + VULKAN_HPP_ASSERT( queueFamilyDataGraphPropertyCount <= queueFamilyDataGraphProperties.size() ); + if ( queueFamilyDataGraphPropertyCount < queueFamilyDataGraphProperties.size() ) + { + queueFamilyDataGraphProperties.resize( queueFamilyDataGraphPropertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( queueFamilyDataGraphProperties ) ); + } + + // wrapper function for command vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE QueueFamilyDataGraphProcessingEnginePropertiesARM + PhysicalDevice::getQueueFamilyDataGraphProcessingEnginePropertiesARM( + PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & queueFamilyDataGraphProcessingEngineInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM && + "Function requires " ); + + QueueFamilyDataGraphProcessingEnginePropertiesARM queueFamilyDataGraphProcessingEngineProperties; + getDispatcher()->vkGetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( + static_cast( m_physicalDevice ), + reinterpret_cast( &queueFamilyDataGraphProcessingEngineInfo ), + reinterpret_cast( &queueFamilyDataGraphProcessingEngineProperties ) ); + + return queueFamilyDataGraphProcessingEngineProperties; + } + + //=== VK_EXT_attachment_feedback_loop_dynamic_state === + + // wrapper function for command vkCmdSetAttachmentFeedbackLoopEnableEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetAttachmentFeedbackLoopEnableEXT.html + VULKAN_HPP_INLINE void CommandBuffer::setAttachmentFeedbackLoopEnableEXT( ImageAspectFlags aspectMask ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetAttachmentFeedbackLoopEnableEXT && + "Function requires " ); + + getDispatcher()->vkCmdSetAttachmentFeedbackLoopEnableEXT( static_cast( m_commandBuffer ), + static_cast( aspectMask ) ); + } + +# if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_external_memory_screen_buffer === + + // wrapper function for command vkGetScreenBufferPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getScreenBufferPropertiesQNX( struct _screen_buffer const & buffer ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetScreenBufferPropertiesQNX && + "Function requires " ); + + ScreenBufferPropertiesQNX properties; + Result result = static_cast( getDispatcher()->vkGetScreenBufferPropertiesQNX( + static_cast( m_device ), &buffer, reinterpret_cast( &properties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getScreenBufferPropertiesQNX" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + + // wrapper function for command vkGetScreenBufferPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetScreenBufferPropertiesQNX.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getScreenBufferPropertiesQNX( struct _screen_buffer const & buffer ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetScreenBufferPropertiesQNX && + "Function requires " ); + + StructureChain structureChain; + ScreenBufferPropertiesQNX & properties = structureChain.template get(); + Result result = static_cast( getDispatcher()->vkGetScreenBufferPropertiesQNX( + static_cast( m_device ), &buffer, reinterpret_cast( &properties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getScreenBufferPropertiesQNX" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( structureChain ) ); + } +# endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_KHR_line_rasterization === + + // wrapper function for command vkCmdSetLineStippleKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetLineStippleKHR.html + VULKAN_HPP_INLINE void CommandBuffer::setLineStippleKHR( uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetLineStippleKHR && + "Function requires or or " ); + + getDispatcher()->vkCmdSetLineStippleKHR( static_cast( m_commandBuffer ), lineStippleFactor, lineStipplePattern ); + } + + //=== VK_KHR_calibrated_timestamps === + + // wrapper function for command vkGetPhysicalDeviceCalibrateableTimeDomainsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCalibrateableTimeDomainsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getCalibrateableTimeDomainsKHR() const + { + VULKAN_HPP_ASSERT( + getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR && + "Function requires or " ); + + std::vector timeDomains; + uint32_t timeDomainCount; + Result result; + do + { + result = static_cast( + getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( static_cast( m_physicalDevice ), &timeDomainCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && timeDomainCount ) + { + timeDomains.resize( timeDomainCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceCalibrateableTimeDomainsKHR( + static_cast( m_physicalDevice ), &timeDomainCount, reinterpret_cast( timeDomains.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCalibrateableTimeDomainsKHR" ); + VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); + if ( timeDomainCount < timeDomains.size() ) + { + timeDomains.resize( timeDomainCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( timeDomains ) ); + } + + // wrapper function for command vkGetCalibratedTimestampsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, uint64_t>>::type + Device::getCalibratedTimestampsKHR( ArrayProxy const & timestampInfos ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsKHR && + "Function requires or " ); + + std::pair, uint64_t> data_( std::piecewise_construct, std::forward_as_tuple( timestampInfos.size() ), std::forward_as_tuple( 0 ) ); + std::vector & timestamps = data_.first; + uint64_t & maxDeviation = data_.second; + Result result = + static_cast( getDispatcher()->vkGetCalibratedTimestampsKHR( static_cast( m_device ), + timestampInfos.size(), + reinterpret_cast( timestampInfos.data() ), + timestamps.data(), + &maxDeviation ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getCalibratedTimestampsKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) ); + } + + // wrapper function for command vkGetCalibratedTimestampsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetCalibratedTimestampsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + Device::getCalibratedTimestampKHR( CalibratedTimestampInfoKHR const & timestampInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetCalibratedTimestampsKHR && + "Function requires or " ); + + std::pair data_; + uint64_t & timestamp = data_.first; + uint64_t & maxDeviation = data_.second; + Result result = static_cast( getDispatcher()->vkGetCalibratedTimestampsKHR( + static_cast( m_device ), 1, reinterpret_cast( ×tampInfo ), ×tamp, &maxDeviation ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getCalibratedTimestampKHR" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) ); + } + + //=== VK_KHR_maintenance6 === + + // wrapper function for command vkCmdBindDescriptorSets2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorSets2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets2KHR( BindDescriptorSetsInfo const & bindDescriptorSetsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorSets2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdBindDescriptorSets2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &bindDescriptorSetsInfo ) ); + } + + // wrapper function for command vkCmdPushConstants2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushConstants2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::pushConstants2KHR( PushConstantsInfo const & pushConstantsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushConstants2KHR && "Function requires or " ); + + getDispatcher()->vkCmdPushConstants2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &pushConstantsInfo ) ); + } + + // wrapper function for command vkCmdPushDescriptorSet2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSet2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSet2KHR( PushDescriptorSetInfo const & pushDescriptorSetInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSet2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdPushDescriptorSet2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( &pushDescriptorSetInfo ) ); + } + + // wrapper function for command vkCmdPushDescriptorSetWithTemplate2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPushDescriptorSetWithTemplate2KHR.html + VULKAN_HPP_INLINE void + CommandBuffer::pushDescriptorSetWithTemplate2KHR( PushDescriptorSetWithTemplateInfo const & pushDescriptorSetWithTemplateInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPushDescriptorSetWithTemplate2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdPushDescriptorSetWithTemplate2KHR( + static_cast( m_commandBuffer ), reinterpret_cast( &pushDescriptorSetWithTemplateInfo ) ); + } + + // wrapper function for command vkCmdSetDescriptorBufferOffsets2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetDescriptorBufferOffsets2EXT.html + VULKAN_HPP_INLINE void + CommandBuffer::setDescriptorBufferOffsets2EXT( SetDescriptorBufferOffsetsInfoEXT const & setDescriptorBufferOffsetsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetDescriptorBufferOffsets2EXT && + "Function requires " ); + + getDispatcher()->vkCmdSetDescriptorBufferOffsets2EXT( static_cast( m_commandBuffer ), + reinterpret_cast( &setDescriptorBufferOffsetsInfo ) ); + } + + // wrapper function for command vkCmdBindDescriptorBufferEmbeddedSamplers2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindDescriptorBufferEmbeddedSamplers2EXT.html + VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorBufferEmbeddedSamplers2EXT( + BindDescriptorBufferEmbeddedSamplersInfoEXT const & bindDescriptorBufferEmbeddedSamplersInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT && + "Function requires " ); + + getDispatcher()->vkCmdBindDescriptorBufferEmbeddedSamplers2EXT( + static_cast( m_commandBuffer ), + reinterpret_cast( &bindDescriptorBufferEmbeddedSamplersInfo ) ); + } + + //=== VK_QCOM_tile_memory_heap === + + // wrapper function for command vkCmdBindTileMemoryQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBindTileMemoryQCOM.html + VULKAN_HPP_INLINE void CommandBuffer::bindTileMemoryQCOM( Optional tileMemoryBindInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBindTileMemoryQCOM && "Function requires " ); + + getDispatcher()->vkCmdBindTileMemoryQCOM( static_cast( m_commandBuffer ), + reinterpret_cast( tileMemoryBindInfo.get() ) ); + } + + //=== VK_KHR_copy_memory_indirect === + + // wrapper function for command vkCmdCopyMemoryIndirectKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryIndirectKHR.html + VULKAN_HPP_INLINE void CommandBuffer::copyMemoryIndirectKHR( CopyMemoryIndirectInfoKHR const & copyMemoryIndirectInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryIndirectKHR && "Function requires " ); + + getDispatcher()->vkCmdCopyMemoryIndirectKHR( static_cast( m_commandBuffer ), + reinterpret_cast( ©MemoryIndirectInfo ) ); + } + + // wrapper function for command vkCmdCopyMemoryToImageIndirectKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdCopyMemoryToImageIndirectKHR.html + VULKAN_HPP_INLINE void + CommandBuffer::copyMemoryToImageIndirectKHR( CopyMemoryToImageIndirectInfoKHR const & copyMemoryToImageIndirectInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdCopyMemoryToImageIndirectKHR && + "Function requires " ); + + getDispatcher()->vkCmdCopyMemoryToImageIndirectKHR( static_cast( m_commandBuffer ), + reinterpret_cast( ©MemoryToImageIndirectInfo ) ); + } + + //=== VK_EXT_memory_decompression === + + // wrapper function for command vkCmdDecompressMemoryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryEXT.html + VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryEXT( DecompressMemoryInfoEXT const & decompressMemoryInfoEXT ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecompressMemoryEXT && "Function requires " ); + + getDispatcher()->vkCmdDecompressMemoryEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &decompressMemoryInfoEXT ) ); + } + + // wrapper function for command vkCmdDecompressMemoryIndirectCountEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdDecompressMemoryIndirectCountEXT.html + VULKAN_HPP_INLINE void CommandBuffer::decompressMemoryIndirectCountEXT( MemoryDecompressionMethodFlagsEXT decompressionMethod, + DeviceAddress indirectCommandsAddress, + DeviceAddress indirectCommandsCountAddress, + uint32_t maxDecompressionCount, + uint32_t stride ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdDecompressMemoryIndirectCountEXT && + "Function requires " ); + + getDispatcher()->vkCmdDecompressMemoryIndirectCountEXT( static_cast( m_commandBuffer ), + static_cast( decompressionMethod ), + static_cast( indirectCommandsAddress ), + static_cast( indirectCommandsCountAddress ), + maxDecompressionCount, + stride ); + } + + //=== VK_NV_external_compute_queue === + + // wrapper function for command vkCreateExternalComputeQueueNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateExternalComputeQueueNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createExternalComputeQueueNV( ExternalComputeQueueCreateInfoNV const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateExternalComputeQueueNV && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV externalQueue; + Result result = + static_cast( getDispatcher()->vkCreateExternalComputeQueueNV( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &externalQueue ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createExternalComputeQueueNV" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, ExternalComputeQueueNV( *this, *reinterpret_cast( &externalQueue ), allocator ) ); + } + + // wrapper function for command vkGetExternalComputeQueueDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetExternalComputeQueueDataNV.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair ExternalComputeQueueNV::getData() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetExternalComputeQueueDataNV && + "Function requires " ); + + std::pair data_; + ExternalComputeQueueDataParamsNV & arams = data_.first; + DataType & data = data_.second; + getDispatcher()->vkGetExternalComputeQueueDataNV( + static_cast( m_externalComputeQueueNV ), reinterpret_cast( &arams ), &data ); + + return data_; + } + + //=== VK_NV_cluster_acceleration_structure === + + // wrapper function for command vkGetClusterAccelerationStructureBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetClusterAccelerationStructureBuildSizesNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureBuildSizesInfoKHR + Device::getClusterAccelerationStructureBuildSizesNV( ClusterAccelerationStructureInputInfoNV const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetClusterAccelerationStructureBuildSizesNV && + "Function requires " ); + + AccelerationStructureBuildSizesInfoKHR sizeInfo; + getDispatcher()->vkGetClusterAccelerationStructureBuildSizesNV( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &sizeInfo ) ); + + return sizeInfo; + } + + // wrapper function for command vkCmdBuildClusterAccelerationStructureIndirectNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildClusterAccelerationStructureIndirectNV.html + VULKAN_HPP_INLINE void + CommandBuffer::buildClusterAccelerationStructureIndirectNV( ClusterAccelerationStructureCommandsInfoNV const & commandInfos ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildClusterAccelerationStructureIndirectNV && + "Function requires " ); + + getDispatcher()->vkCmdBuildClusterAccelerationStructureIndirectNV( + static_cast( m_commandBuffer ), reinterpret_cast( &commandInfos ) ); + } + + //=== VK_NV_partitioned_acceleration_structure === + + // wrapper function for command vkGetPartitionedAccelerationStructuresBuildSizesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPartitionedAccelerationStructuresBuildSizesNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE AccelerationStructureBuildSizesInfoKHR + Device::getPartitionedAccelerationStructuresBuildSizesNV( PartitionedAccelerationStructureInstancesInputNV const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPartitionedAccelerationStructuresBuildSizesNV && + "Function requires " ); + + AccelerationStructureBuildSizesInfoKHR sizeInfo; + getDispatcher()->vkGetPartitionedAccelerationStructuresBuildSizesNV( + static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &sizeInfo ) ); + + return sizeInfo; + } + + // wrapper function for command vkCmdBuildPartitionedAccelerationStructuresNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBuildPartitionedAccelerationStructuresNV.html + VULKAN_HPP_INLINE void + CommandBuffer::buildPartitionedAccelerationStructuresNV( BuildPartitionedAccelerationStructureInfoNV const & buildInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBuildPartitionedAccelerationStructuresNV && + "Function requires " ); + + getDispatcher()->vkCmdBuildPartitionedAccelerationStructuresNV( static_cast( m_commandBuffer ), + reinterpret_cast( &buildInfo ) ); + } + + //=== VK_EXT_device_generated_commands === + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE MemoryRequirements2 + Device::getGeneratedCommandsMemoryRequirementsEXT( GeneratedCommandsMemoryRequirementsInfoEXT const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT && + "Function requires " ); + + MemoryRequirements2 memoryRequirements; + getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return memoryRequirements; + } + + // wrapper function for command vkGetGeneratedCommandsMemoryRequirementsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetGeneratedCommandsMemoryRequirementsEXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain + Device::getGeneratedCommandsMemoryRequirementsEXT( GeneratedCommandsMemoryRequirementsInfoEXT const & info ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT && + "Function requires " ); + + StructureChain structureChain; + MemoryRequirements2 & memoryRequirements = structureChain.template get(); + getDispatcher()->vkGetGeneratedCommandsMemoryRequirementsEXT( static_cast( m_device ), + reinterpret_cast( &info ), + reinterpret_cast( &memoryRequirements ) ); + + return structureChain; + } + + // wrapper function for command vkCmdPreprocessGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdPreprocessGeneratedCommandsEXT.html + VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsEXT( GeneratedCommandsInfoEXT const & generatedCommandsInfo, + VULKAN_HPP_NAMESPACE::CommandBuffer stateCommandBuffer ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdPreprocessGeneratedCommandsEXT && + "Function requires " ); + + getDispatcher()->vkCmdPreprocessGeneratedCommandsEXT( static_cast( m_commandBuffer ), + reinterpret_cast( &generatedCommandsInfo ), + static_cast( stateCommandBuffer ) ); + } + + // wrapper function for command vkCmdExecuteGeneratedCommandsEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdExecuteGeneratedCommandsEXT.html + VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsEXT( Bool32 isPreprocessed, + GeneratedCommandsInfoEXT const & generatedCommandsInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdExecuteGeneratedCommandsEXT && + "Function requires " ); + + getDispatcher()->vkCmdExecuteGeneratedCommandsEXT( static_cast( m_commandBuffer ), + static_cast( isPreprocessed ), + reinterpret_cast( &generatedCommandsInfo ) ); + } + + // wrapper function for command vkCreateIndirectCommandsLayoutEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectCommandsLayoutEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createIndirectCommandsLayoutEXT( IndirectCommandsLayoutCreateInfoEXT const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateIndirectCommandsLayoutEXT && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT indirectCommandsLayout; + Result result = + static_cast( getDispatcher()->vkCreateIndirectCommandsLayoutEXT( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &indirectCommandsLayout ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, IndirectCommandsLayoutEXT( *this, *reinterpret_cast( &indirectCommandsLayout ), allocator ) ); + } + + // wrapper function for command vkCreateIndirectExecutionSetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateIndirectExecutionSetEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createIndirectExecutionSetEXT( IndirectExecutionSetCreateInfoEXT const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateIndirectExecutionSetEXT && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT indirectExecutionSet; + Result result = + static_cast( getDispatcher()->vkCreateIndirectExecutionSetEXT( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &indirectExecutionSet ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createIndirectExecutionSetEXT" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, IndirectExecutionSetEXT( *this, *reinterpret_cast( &indirectExecutionSet ), allocator ) ); + } + + // wrapper function for command vkUpdateIndirectExecutionSetPipelineEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetPipelineEXT.html + VULKAN_HPP_INLINE void + IndirectExecutionSetEXT::updatePipeline( ArrayProxy const & executionSetWrites ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateIndirectExecutionSetPipelineEXT && + "Function requires " ); + + getDispatcher()->vkUpdateIndirectExecutionSetPipelineEXT( static_cast( m_device ), + static_cast( m_indirectExecutionSetEXT ), + executionSetWrites.size(), + reinterpret_cast( executionSetWrites.data() ) ); + } + + // wrapper function for command vkUpdateIndirectExecutionSetShaderEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkUpdateIndirectExecutionSetShaderEXT.html + VULKAN_HPP_INLINE void + IndirectExecutionSetEXT::updateShader( ArrayProxy const & executionSetWrites ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkUpdateIndirectExecutionSetShaderEXT && + "Function requires " ); + + getDispatcher()->vkUpdateIndirectExecutionSetShaderEXT( static_cast( m_device ), + static_cast( m_indirectExecutionSetEXT ), + executionSetWrites.size(), + reinterpret_cast( executionSetWrites.data() ) ); + } + + //=== VK_KHR_device_fault === + + // wrapper function for command vkGetDeviceFaultReportsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultReportsKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::getFaultReportsKHR( uint64_t timeout ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceFaultReportsKHR && "Function requires " ); + + std::vector faultInfo; + uint32_t faultCounts; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetDeviceFaultReportsKHR( static_cast( m_device ), timeout, &faultCounts, nullptr ) ); + if ( ( result == Result::eSuccess ) && faultCounts ) + { + faultInfo.resize( faultCounts ); + result = static_cast( getDispatcher()->vkGetDeviceFaultReportsKHR( + static_cast( m_device ), timeout, &faultCounts, reinterpret_cast( faultInfo.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( + result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getFaultReportsKHR", { Result::eSuccess, Result::eIncomplete, Result::eTimeout } ); + VULKAN_HPP_ASSERT( faultCounts <= faultInfo.size() ); + if ( faultCounts < faultInfo.size() ) + { + faultInfo.resize( faultCounts ); + } + return { result, faultInfo }; + } + + // wrapper function for command vkGetDeviceFaultDebugInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetDeviceFaultDebugInfoKHR.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFaultDebugInfoKHR( DeviceFaultDebugInfoKHR * pDebugInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetDeviceFaultDebugInfoKHR && "Function requires " ); + return static_cast( + getDispatcher()->vkGetDeviceFaultDebugInfoKHR( static_cast( m_device ), reinterpret_cast( pDebugInfo ) ) ); + } +# if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + + // wrapper function for command vkCreateSurfaceOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateSurfaceOHOS.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createSurfaceOHOS( SurfaceCreateInfoOHOS const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateSurfaceOHOS && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateSurfaceOHOS( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createSurfaceOHOS" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } +# endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_NV_cooperative_matrix2 === + + // wrapper function for command vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::getCooperativeMatrixFlexibleDimensionsPropertiesNV() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV && + "Function requires " ); + + std::vector properties; + uint32_t propertyCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( + static_cast( m_physicalDevice ), &propertyCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && propertyCount ) + { + properties.resize( propertyCount ); + result = static_cast( getDispatcher()->vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( + static_cast( m_physicalDevice ), + &propertyCount, + reinterpret_cast( properties.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::getCooperativeMatrixFlexibleDimensionsPropertiesNV" ); + VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); + if ( propertyCount < properties.size() ) + { + properties.resize( propertyCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( properties ) ); + } + +# if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_external_memory_metal === + + // wrapper function for command vkGetMemoryMetalHandleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandleEXT.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryMetalHandleEXT( MemoryGetMetalHandleInfoEXT const & getMetalHandleInfo ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryMetalHandleEXT && "Function requires " ); + + void * handle; + Result result = static_cast( getDispatcher()->vkGetMemoryMetalHandleEXT( + static_cast( m_device ), reinterpret_cast( &getMetalHandleInfo ), &handle ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryMetalHandleEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( handle ) ); + } + + // wrapper function for command vkGetMemoryMetalHandlePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetMemoryMetalHandlePropertiesEXT.html + template + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::getMemoryMetalHandlePropertiesEXT( ExternalMemoryHandleTypeFlagBits handleType, HandleType const & handle ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetMemoryMetalHandlePropertiesEXT && + "Function requires " ); + + MemoryMetalHandlePropertiesEXT memoryMetalHandleProperties; + Result result = static_cast( + getDispatcher()->vkGetMemoryMetalHandlePropertiesEXT( static_cast( m_device ), + static_cast( handleType ), + reinterpret_cast( &handle ), + reinterpret_cast( &memoryMetalHandleProperties ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::getMemoryMetalHandlePropertiesEXT" ); + + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( memoryMetalHandleProperties ) ); + } +# endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_ARM_performance_counters_by_region === + + // wrapper function for command vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE + typename ResultValueType, std::vector>>::type + PhysicalDevice::enumerateQueueFamilyPerformanceCountersByRegionARM( uint32_t queueFamilyIndex ) const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM && + "Function requires " ); + + std::pair, std::vector> data_; + std::vector & counters = data_.first; + std::vector & counterDescriptions = data_.second; + uint32_t counterCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( + static_cast( m_physicalDevice ), queueFamilyIndex, &counterCount, nullptr, nullptr ) ); + if ( ( result == Result::eSuccess ) && counterCount ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceQueueFamilyPerformanceCountersByRegionARM( + static_cast( m_physicalDevice ), + queueFamilyIndex, + &counterCount, + reinterpret_cast( counters.data() ), + reinterpret_cast( counterDescriptions.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, + VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::enumerateQueueFamilyPerformanceCountersByRegionARM" ); + VULKAN_HPP_ASSERT( counterCount <= counters.size() ); + if ( counterCount < counters.size() ) + { + counters.resize( counterCount ); + counterDescriptions.resize( counterCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( data_ ) ); + } + + //=== VK_ARM_shader_instrumentation === + + // wrapper function for command vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type + PhysicalDevice::enumerateShaderInstrumentationMetricsARM() const + { + VULKAN_HPP_ASSERT( getDispatcher()->vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM && + "Function requires " ); + + std::vector descriptions; + uint32_t descriptionCount; + Result result; + do + { + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( + static_cast( m_physicalDevice ), &descriptionCount, nullptr ) ); + if ( ( result == Result::eSuccess ) && descriptionCount ) + { + descriptions.resize( descriptionCount ); + result = static_cast( getDispatcher()->vkEnumeratePhysicalDeviceShaderInstrumentationMetricsARM( + static_cast( m_physicalDevice ), + &descriptionCount, + reinterpret_cast( descriptions.data() ) ) ); + } + } while ( result == Result::eIncomplete ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::PhysicalDevice::enumerateShaderInstrumentationMetricsARM" ); + VULKAN_HPP_ASSERT( descriptionCount <= descriptions.size() ); + if ( descriptionCount < descriptions.size() ) + { + descriptions.resize( descriptionCount ); + } + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, std::move( descriptions ) ); + } + + // wrapper function for command vkCreateShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateShaderInstrumentationARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Device::createShaderInstrumentationARM( ShaderInstrumentationCreateInfoARM const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateShaderInstrumentationARM && + "Function requires " ); + + VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM instrumentation; + Result result = + static_cast( getDispatcher()->vkCreateShaderInstrumentationARM( static_cast( m_device ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &instrumentation ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Device::createShaderInstrumentationARM" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( + result, ShaderInstrumentationARM( *this, *reinterpret_cast( &instrumentation ), allocator ) ); + } + + // wrapper function for command vkCmdBeginShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginShaderInstrumentationARM.html + VULKAN_HPP_INLINE void + CommandBuffer::beginShaderInstrumentationARM( VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM instrumentation ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginShaderInstrumentationARM && + "Function requires " ); + + getDispatcher()->vkCmdBeginShaderInstrumentationARM( static_cast( m_commandBuffer ), + static_cast( instrumentation ) ); + } + + // wrapper function for command vkCmdEndShaderInstrumentationARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndShaderInstrumentationARM.html + VULKAN_HPP_INLINE void CommandBuffer::endShaderInstrumentationARM() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndShaderInstrumentationARM && + "Function requires " ); + + getDispatcher()->vkCmdEndShaderInstrumentationARM( static_cast( m_commandBuffer ) ); + } + + // wrapper function for command vkGetShaderInstrumentationValuesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetShaderInstrumentationValuesARM.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result ShaderInstrumentationARM::getValues( uint32_t * pMetricBlockCount, + void * pMetricValues, + ShaderInstrumentationValuesFlagsARM flags ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetShaderInstrumentationValuesARM && + "Function requires " ); + return static_cast( getDispatcher()->vkGetShaderInstrumentationValuesARM( static_cast( m_device ), + static_cast( m_shaderInstrumentationARM ), + pMetricBlockCount, + pMetricValues, + static_cast( flags ) ) ); + } + + // wrapper function for command vkClearShaderInstrumentationMetricsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkClearShaderInstrumentationMetricsARM.html + VULKAN_HPP_INLINE void ShaderInstrumentationARM::clearMetrics() const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkClearShaderInstrumentationMetricsARM && + "Function requires " ); + + getDispatcher()->vkClearShaderInstrumentationMetricsARM( static_cast( m_device ), + static_cast( m_shaderInstrumentationARM ) ); + } + + //=== VK_EXT_fragment_density_map_offset === + + // wrapper function for command vkCmdEndRendering2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2EXT.html + VULKAN_HPP_INLINE void CommandBuffer::endRendering2EXT( Optional renderingEndInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRendering2EXT && + "Function requires or " ); + + getDispatcher()->vkCmdEndRendering2EXT( static_cast( m_commandBuffer ), + reinterpret_cast( renderingEndInfo.get() ) ); + } + + //=== VK_EXT_custom_resolve === + + // wrapper function for command vkCmdBeginCustomResolveEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdBeginCustomResolveEXT.html + VULKAN_HPP_INLINE void CommandBuffer::beginCustomResolveEXT( Optional beginCustomResolveInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdBeginCustomResolveEXT && "Function requires " ); + + getDispatcher()->vkCmdBeginCustomResolveEXT( static_cast( m_commandBuffer ), + reinterpret_cast( beginCustomResolveInfo.get() ) ); + } + + //=== VK_KHR_maintenance10 === + + // wrapper function for command vkCmdEndRendering2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdEndRendering2KHR.html + VULKAN_HPP_INLINE void CommandBuffer::endRendering2KHR( Optional renderingEndInfo ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdEndRendering2KHR && + "Function requires or " ); + + getDispatcher()->vkCmdEndRendering2KHR( static_cast( m_commandBuffer ), + reinterpret_cast( renderingEndInfo.get() ) ); + } + + //=== VK_NV_compute_occupancy_priority === + + // wrapper function for command vkCmdSetComputeOccupancyPriorityNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkCmdSetComputeOccupancyPriorityNV.html + VULKAN_HPP_INLINE void CommandBuffer::setComputeOccupancyPriorityNV( ComputeOccupancyPriorityParametersNV const & parameters ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCmdSetComputeOccupancyPriorityNV && + "Function requires " ); + + getDispatcher()->vkCmdSetComputeOccupancyPriorityNV( static_cast( m_commandBuffer ), + reinterpret_cast( ¶meters ) ); + } + +# if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + + // wrapper function for command vkCreateUbmSurfaceSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/vkCreateUbmSurfaceSEC.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType::type + Instance::createUbmSurfaceSEC( UbmSurfaceCreateInfoSEC const & createInfo, + Optional allocator ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS + { + VULKAN_HPP_ASSERT( getDispatcher()->vkCreateUbmSurfaceSEC && "Function requires " ); + + VULKAN_HPP_NAMESPACE::SurfaceKHR surface; + Result result = static_cast( getDispatcher()->vkCreateUbmSurfaceSEC( static_cast( m_instance ), + reinterpret_cast( &createInfo ), + reinterpret_cast( allocator.get() ), + reinterpret_cast( &surface ) ) ); + VULKAN_HPP_NAMESPACE::detail::resultCheck( result, VULKAN_HPP_RAII_NAMESPACE_STRING "::Instance::createUbmSurfaceSEC" ); + return VULKAN_HPP_NAMESPACE::detail::createResultValueType( result, SurfaceKHR( *this, *reinterpret_cast( &surface ), allocator ) ); + } + + // wrapper function for command vkGetPhysicalDeviceUbmPresentationSupportSEC, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/vkGetPhysicalDeviceUbmPresentationSupportSEC.html + VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::pair + PhysicalDevice::getUbmPresentationSupportSEC( uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( getDispatcher()->vkGetPhysicalDeviceUbmPresentationSupportSEC && + "Function requires " ); + + struct ubm_device device; + VkBool32 result = + getDispatcher()->vkGetPhysicalDeviceUbmPresentationSupportSEC( static_cast( m_physicalDevice ), queueFamilyIndex, &device ); + + return { result, device }; + } +# endif /*VK_USE_PLATFORM_UBM_SEC*/ + + //==================== + //=== RAII Helpers === + //==================== + + template + std::vector filterCppTypes( std::vector const & raiiTypes ) + { + std::vector cppTypes( raiiTypes.size() ); + std::transform( raiiTypes.begin(), raiiTypes.end(), cppTypes.begin(), []( RAIIType const & d ) { return *d; } ); + return cppTypes; + } + + template + std::vector filterCppTypes( std::vector const & raiiTypes, UnaryPredicate p ) + { + std::vector cppTypes; + for ( auto const & t : raiiTypes ) + { + if ( p( t ) ) + { + cppTypes.push_back( *t ); + } + } + return cppTypes; + } + + } // namespace VULKAN_HPP_RAII_NAMESPACE +} // namespace VULKAN_HPP_NAMESPACE +#endif +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_screen.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_screen.h new file mode 100644 index 000000000..15e9d0902 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_screen.h @@ -0,0 +1,114 @@ +#ifndef VULKAN_SCREEN_H_ +#define VULKAN_SCREEN_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_QNX_screen_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_QNX_screen_surface 1 +#define VK_QNX_SCREEN_SURFACE_SPEC_VERSION 1 +#define VK_QNX_SCREEN_SURFACE_EXTENSION_NAME "VK_QNX_screen_surface" +typedef VkFlags VkScreenSurfaceCreateFlagsQNX; +typedef struct VkScreenSurfaceCreateInfoQNX { + VkStructureType sType; + const void* pNext; + VkScreenSurfaceCreateFlagsQNX flags; + struct _screen_context* context; + struct _screen_window* window; +} VkScreenSurfaceCreateInfoQNX; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateScreenSurfaceQNX)(VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct _screen_window* window); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateScreenSurfaceQNX( + VkInstance instance, + const VkScreenSurfaceCreateInfoQNX* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceScreenPresentationSupportQNX( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct _screen_window* window); +#endif +#endif + + +// VK_QNX_external_memory_screen_buffer is a preprocessor guard. Do not pass it to API calls. +#define VK_QNX_external_memory_screen_buffer 1 +#define VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION 1 +#define VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_EXTENSION_NAME "VK_QNX_external_memory_screen_buffer" +typedef struct VkScreenBufferPropertiesQNX { + VkStructureType sType; + void* pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeBits; +} VkScreenBufferPropertiesQNX; + +typedef struct VkScreenBufferFormatPropertiesQNX { + VkStructureType sType; + void* pNext; + VkFormat format; + uint64_t externalFormat; + uint64_t screenUsage; + VkFormatFeatureFlags formatFeatures; + VkComponentMapping samplerYcbcrConversionComponents; + VkSamplerYcbcrModelConversion suggestedYcbcrModel; + VkSamplerYcbcrRange suggestedYcbcrRange; + VkChromaLocation suggestedXChromaOffset; + VkChromaLocation suggestedYChromaOffset; +} VkScreenBufferFormatPropertiesQNX; + +typedef struct VkImportScreenBufferInfoQNX { + VkStructureType sType; + const void* pNext; + struct _screen_buffer* buffer; +} VkImportScreenBufferInfoQNX; + +typedef struct VkExternalFormatQNX { + VkStructureType sType; + void* pNext; + uint64_t externalFormat; +} VkExternalFormatQNX; + +typedef struct VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX { + VkStructureType sType; + void* pNext; + VkBool32 screenBufferImport; +} VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX; + +typedef VkResult (VKAPI_PTR *PFN_vkGetScreenBufferPropertiesQNX)(VkDevice device, const struct _screen_buffer* buffer, VkScreenBufferPropertiesQNX* pProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetScreenBufferPropertiesQNX( + VkDevice device, + const struct _screen_buffer* buffer, + VkScreenBufferPropertiesQNX* pProperties); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_shared.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_shared.hpp new file mode 100644 index 000000000..19c957c39 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_shared.hpp @@ -0,0 +1,1207 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_SHARED_HPP +#define VULKAN_SHARED_HPP + +#if !defined( VULKAN_HPP_CXX_MODULE ) +# include // std::atomic_size_t +# include +#endif + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ +#if !defined( VULKAN_HPP_NO_SMART_HANDLE ) + template + class SharedHandleTraits; + + class NoDestructor + { + }; + + template + struct HasDestructorType : std::false_type + { + }; + + template + struct HasDestructorType::DestructorType() )> : std::true_type + { + }; + + template + struct GetDestructorType + { + using type = NoDestructor; + }; + + template + struct GetDestructorType::value>::type> + { + using type = typename SharedHandleTraits::DestructorType; + }; + + template + using DestructorTypeOf = typename GetDestructorType::type; + + template + struct HasDestructor : std::integral_constant, NoDestructor>::value> + { + }; + + template + struct HasPoolType : std::false_type + { + }; + + template + struct HasPoolType::deleter::PoolTypeExport() )> : std::true_type + { + }; + + template + struct GetPoolType + { + using type = NoDestructor; + }; + + template + struct GetPoolType::value>::type> + { + using type = typename SharedHandleTraits::deleter::PoolTypeExport; + }; + + //===================================================================================================================== + + template + class SharedHandle; + + template + struct SharedHeader + { + SharedHeader( SharedHandle parent, Deleter deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( Deleter() ) ) VULKAN_HPP_NOEXCEPT + : parent( std::move( parent ) ) + , deleter( std::move( deleter ) ) + { + } + + SharedHandle parent; + Deleter deleter; + }; + + template + struct SharedHeader + { + SharedHeader( Deleter deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( Deleter() ) ) VULKAN_HPP_NOEXCEPT : deleter( std::move( deleter ) ) {} + + Deleter deleter; + }; + + //===================================================================================================================== + + template + class ReferenceCounter + { + public: + template + ReferenceCounter( Args &&... control_args ) : m_header( std::forward( control_args )... ) + { + } + + ReferenceCounter( ReferenceCounter const & ) = delete; + ReferenceCounter & operator=( ReferenceCounter const & ) = delete; + + public: + size_t addRef() VULKAN_HPP_NOEXCEPT + { + // Relaxed memory order is sufficient since this does not impose any ordering on other operations + return m_ref_cnt.fetch_add( 1, std::memory_order_relaxed ); + } + + size_t release() VULKAN_HPP_NOEXCEPT + { + // A release memory order to ensure that all releases are ordered + return m_ref_cnt.fetch_sub( 1, std::memory_order_release ); + } + + public: + std::atomic_size_t m_ref_cnt{ 1 }; + HeaderType m_header; + }; + + //===================================================================================================================== + + template > + class SharedHandleBase + { + public: + SharedHandleBase() = default; + + template + SharedHandleBase( HandleType handle, Args &&... control_args ) + : m_control( new ReferenceCounter( std::forward( control_args )... ) ), m_handle( handle ) + { + } + + SharedHandleBase( SharedHandleBase const & o ) VULKAN_HPP_NOEXCEPT + { + o.addRef(); + m_handle = o.m_handle; + m_control = o.m_control; + } + + SharedHandleBase( SharedHandleBase && o ) VULKAN_HPP_NOEXCEPT + : m_control( o.m_control ) + , m_handle( o.m_handle ) + { + o.m_handle = nullptr; + o.m_control = nullptr; + } + + SharedHandleBase & operator=( SharedHandleBase const & o ) VULKAN_HPP_NOEXCEPT + { + SharedHandleBase( o ).swap( *this ); + return *this; + } + + SharedHandleBase & operator=( SharedHandleBase && o ) VULKAN_HPP_NOEXCEPT + { + SharedHandleBase( std::move( o ) ).swap( *this ); + return *this; + } + + ~SharedHandleBase() + { + // only this function owns the last reference to the control block + // the same principle is used in the default deleter of std::shared_ptr + if ( m_control && ( m_control->release() == 1 ) ) + { + // noop in x86, but does thread synchronization in ARM + // it is required to ensure that last thread is getting to destroy the control block + // by ordering all atomic operations before this fence + std::atomic_thread_fence( std::memory_order_acquire ); + ForwardType::internalDestroy( getHeader(), m_handle ); + delete m_control; + } + } + + public: + HandleType get() const VULKAN_HPP_NOEXCEPT + { + return m_handle; + } + + HandleType operator*() const VULKAN_HPP_NOEXCEPT + { + return m_handle; + } + + explicit operator bool() const VULKAN_HPP_NOEXCEPT + { + return bool( m_handle ); + } + +# if defined( VULKAN_HPP_SMART_HANDLE_IMPLICIT_CAST ) + operator HandleType() const VULKAN_HPP_NOEXCEPT + { + return m_handle; + } +# endif + + HandleType const * operator->() const VULKAN_HPP_NOEXCEPT + { + return &m_handle; + } + + HandleType * operator->() VULKAN_HPP_NOEXCEPT + { + return &m_handle; + } + + void reset() VULKAN_HPP_NOEXCEPT + { + SharedHandleBase().swap( *this ); + } + + void swap( SharedHandleBase & o ) VULKAN_HPP_NOEXCEPT + { + std::swap( m_handle, o.m_handle ); + std::swap( m_control, o.m_control ); + } + + template + typename std::enable_if::value, SharedHandle> const &>::type getDestructorType() const VULKAN_HPP_NOEXCEPT + { + return getHeader().parent; + } + + protected: + template + static typename std::enable_if::value, void>::type internalDestroy( HeaderType const & control, HandleType handle ) VULKAN_HPP_NOEXCEPT + { + control.deleter.destroy( handle ); + } + + template + static typename std::enable_if::value, void>::type internalDestroy( HeaderType const & control, HandleType handle ) VULKAN_HPP_NOEXCEPT + { + control.deleter.destroy( control.parent.get(), handle ); + } + + HeaderType const & getHeader() const VULKAN_HPP_NOEXCEPT + { + return m_control->m_header; + } + + private: + void addRef() const VULKAN_HPP_NOEXCEPT + { + if ( m_control ) + m_control->addRef(); + } + + protected: + ReferenceCounter * m_control = nullptr; + HandleType m_handle{}; + }; + + template + class SharedHandle : public SharedHandleBase, typename SharedHandleTraits::deleter>> + { + private: + using BaseType = SharedHandleBase, typename SharedHandleTraits::deleter>>; + using DeleterType = typename SharedHandleTraits::deleter; + friend BaseType; + + public: + SharedHandle() = default; + + template ::value && !HasPoolType::value>::type> + explicit SharedHandle( HandleType handle, + SharedHandle> parent, + DeleterType deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( DeleterType() ) ) VULKAN_HPP_NOEXCEPT + : BaseType( handle, std::move( parent ), std::move( deleter ) ) + { + } + + template ::value && HasPoolType::value>::type> + explicit SharedHandle( HandleType handle, + SharedHandle> parent, + SharedHandle::type> pool, + Dispatcher const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT + : BaseType( handle, std::move( parent ), DeleterType{ std::move( pool ), dispatch } ) + { + } + + template ::value>::type> + explicit SharedHandle( HandleType handle, DeleterType deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( DeleterType() ) ) VULKAN_HPP_NOEXCEPT + : BaseType( handle, std::move( deleter ) ) + { + } + + protected: + using BaseType::internalDestroy; + }; + + namespace detail + { +// Silence the function cast warnings. +# if defined( __GNUC__ ) && !defined( __clang__ ) && !defined( __INTEL_COMPILER ) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wcast-function-type" +# elif defined( __clang__ ) && ( __clang_major__ >= 13 ) && !defined( __INTEL_COMPILER ) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wcast-function-type" +# endif + + template + class ObjectDestroyShared + { + public: + using DestructorType = typename SharedHandleTraits::DestructorType; + + using DestroyFunctionPointerType = + typename std::conditional::value, + void ( DestructorType::* )( HandleType, AllocationCallbacks const *, Dispatcher const & ) const, + void ( HandleType::* )( AllocationCallbacks const *, Dispatcher const & ) const>::type; + + using SelectorType = typename std::conditional::value, DestructorType, HandleType>::type; + + ObjectDestroyShared( Optional allocationCallbacks VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatcher const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) + : m_destroy( reinterpret_cast( static_cast( &SelectorType::destroy ) ) ) + , m_dispatch( &dispatch ) + , m_allocationCallbacks( allocationCallbacks ) + { + } + + public: + template + typename std::enable_if::value, void>::type destroy( DestructorType parent, HandleType handle ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_destroy && m_dispatch ); + ( parent.*m_destroy )( handle, m_allocationCallbacks, *m_dispatch ); + } + + template + typename std::enable_if::value, void>::type destroy( HandleType handle ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_destroy && m_dispatch ); + ( handle.*m_destroy )( m_allocationCallbacks, *m_dispatch ); + } + + private: + DestroyFunctionPointerType m_destroy = nullptr; + Dispatcher const * m_dispatch = nullptr; + Optional m_allocationCallbacks = nullptr; + }; + + template + class ObjectFreeShared + { + public: + using DestructorType = typename SharedHandleTraits::DestructorType; + + using DestroyFunctionPointerType = void ( DestructorType::* )( HandleType, AllocationCallbacks const *, Dispatcher const & ) const; + + ObjectFreeShared( Optional allocationCallbacks VULKAN_HPP_DEFAULT_ASSIGNMENT( nullptr ), + Dispatcher const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) + : m_destroy( reinterpret_cast( static_cast( &DestructorType::free ) ) ) + , m_dispatch( &dispatch ) + , m_allocationCallbacks( allocationCallbacks ) + { + } + + public: + void destroy( DestructorType parent, HandleType handle ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_destroy && m_dispatch ); + ( parent.*m_destroy )( handle, m_allocationCallbacks, *m_dispatch ); + } + + private: + DestroyFunctionPointerType m_destroy = nullptr; + Dispatcher const * m_dispatch = nullptr; + Optional m_allocationCallbacks = nullptr; + }; + + template + class ObjectReleaseShared + { + public: + using DestructorType = typename SharedHandleTraits::DestructorType; + + using DestroyFunctionPointerType = void ( DestructorType::* )( HandleType, Dispatcher const & ) const; + + ObjectReleaseShared( Dispatcher const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) + : m_destroy( reinterpret_cast( static_cast( &DestructorType::release ) ) ), m_dispatch( &dispatch ) + { + } + + public: + void destroy( DestructorType parent, HandleType handle ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_destroy && m_dispatch ); + ( parent.*m_destroy )( handle, *m_dispatch ); + } + + private: + DestroyFunctionPointerType m_destroy = nullptr; + Dispatcher const * m_dispatch = nullptr; + }; + + template + class PoolFreeShared + { + public: + using DestructorType = typename SharedHandleTraits::DestructorType; + + using PoolTypeExport = PoolType; + + using ReturnType = decltype( std::declval().free( PoolType(), 0u, nullptr, Dispatcher() ) ); + + using DestroyFunctionPointerType = ReturnType ( DestructorType::* )( PoolType, uint32_t, HandleType const *, Dispatcher const & ) const; + + PoolFreeShared() = default; + + PoolFreeShared( SharedHandle pool, Dispatcher const & dispatch VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) + : m_destroy( reinterpret_cast( static_cast( &DestructorType::free ) ) ) + , m_dispatch( &dispatch ) + , m_pool( std::move( pool ) ) + { + } + + public: + void destroy( DestructorType parent, HandleType handle ) const VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( m_destroy && m_dispatch && m_pool ); + ( parent.*m_destroy )( m_pool.get(), 1u, &handle, *m_dispatch ); + } + + private: + DestroyFunctionPointerType m_destroy = nullptr; + Dispatcher const * m_dispatch = nullptr; + SharedHandle m_pool{}; + }; + +# if defined( __GNUC__ ) && !defined( __clang__ ) && !defined( __INTEL_COMPILER ) +# pragma GCC diagnostic pop +# elif defined( __clang__ ) && ( __clang_major__ >= 13 ) && !defined( __INTEL_COMPILER ) +# pragma clang diagnostic pop +# endif + } // namespace detail + + //====================== + //=== SHARED HANDLEs === + //====================== + + //=== VK_VERSION_1_0 === + template <> + class SharedHandleTraits + { + public: + using DestructorType = NoDestructor; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedInstance = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = NoDestructor; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedDevice = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectFreeShared; + }; + + using SharedDeviceMemory = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedFence = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedSemaphore = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedQueryPool = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedBuffer = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedImage = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedImageView = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedCommandPool = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::PoolFreeShared; + }; + + using SharedCommandBuffer = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedEvent = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedBufferView = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedShaderModule = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedPipelineCache = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedPipeline = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedPipelineLayout = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedSampler = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedDescriptorPool = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::PoolFreeShared; + }; + + using SharedDescriptorSet = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedDescriptorSetLayout = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedFramebuffer = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedRenderPass = SharedHandle; + + //=== VK_VERSION_1_1 === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedDescriptorUpdateTemplate = SharedHandle; + using SharedDescriptorUpdateTemplateKHR = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedSamplerYcbcrConversion = SharedHandle; + using SharedSamplerYcbcrConversionKHR = SharedHandle; + + //=== VK_VERSION_1_3 === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedPrivateDataSlot = SharedHandle; + using SharedPrivateDataSlotEXT = SharedHandle; + + //=== VK_KHR_surface === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Instance; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedSurfaceKHR = SharedHandle; + + //=== VK_KHR_swapchain === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedSwapchainKHR = SharedHandle; + + //=== VK_KHR_display === + template <> + class SharedHandleTraits + { + public: + using DestructorType = PhysicalDevice; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedDisplayKHR = SharedHandle; + + //=== VK_EXT_debug_report === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Instance; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedDebugReportCallbackEXT = SharedHandle; + + //=== VK_KHR_video_queue === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedVideoSessionKHR = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedVideoSessionParametersKHR = SharedHandle; + + //=== VK_NVX_binary_import === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedCuModuleNVX = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedCuFunctionNVX = SharedHandle; + + //=== VK_EXT_debug_utils === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Instance; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedDebugUtilsMessengerEXT = SharedHandle; + + //=== VK_EXT_descriptor_heap === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedTensorARM = SharedHandle; + + //=== VK_KHR_acceleration_structure === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedAccelerationStructureKHR = SharedHandle; + + //=== VK_EXT_validation_cache === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedValidationCacheEXT = SharedHandle; + + //=== VK_NV_ray_tracing === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedAccelerationStructureNV = SharedHandle; + + //=== VK_INTEL_performance_query === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedPerformanceConfigurationINTEL = SharedHandle; + + //=== VK_KHR_deferred_host_operations === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedDeferredOperationKHR = SharedHandle; + + //=== VK_NV_device_generated_commands === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedIndirectCommandsLayoutNV = SharedHandle; + +# if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_cuda_kernel_launch === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedCudaModuleNV = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedCudaFunctionNV = SharedHandle; +# endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +# if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedBufferCollectionFUCHSIA = SharedHandle; +# endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_EXT_opacity_micromap === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedMicromapEXT = SharedHandle; + + //=== VK_ARM_tensors === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedTensorViewARM = SharedHandle; + + //=== VK_NV_optical_flow === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedOpticalFlowSessionNV = SharedHandle; + + //=== VK_EXT_shader_object === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedShaderEXT = SharedHandle; + + //=== VK_KHR_pipeline_binary === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedPipelineBinaryKHR = SharedHandle; + + //=== VK_ARM_data_graph === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedDataGraphPipelineSessionARM = SharedHandle; + + //=== VK_NV_external_compute_queue === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedExternalComputeQueueNV = SharedHandle; + + //=== VK_EXT_device_generated_commands === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedIndirectCommandsLayoutEXT = SharedHandle; + + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedIndirectExecutionSetEXT = SharedHandle; + + //=== VK_ARM_shader_instrumentation === + template <> + class SharedHandleTraits + { + public: + using DestructorType = Device; + using deleter = detail::ObjectDestroyShared; + }; + + using SharedShaderInstrumentationARM = SharedHandle; + + // a number of SharedHandle specializations + enum class SwapchainOwns + { + no, + yes, + }; + + struct ImageHeader : SharedHeader, typename SharedHandleTraits::deleter> + { + ImageHeader( SharedHandle> parent, + typename SharedHandleTraits::deleter deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( typename SharedHandleTraits::deleter() ), + SwapchainOwns swapchainOwned = SwapchainOwns::no ) VULKAN_HPP_NOEXCEPT + : SharedHeader, typename SharedHandleTraits::deleter>( std::move( parent ), std::move( deleter ) ) + , swapchainOwned( swapchainOwned ) + { + } + + SwapchainOwns swapchainOwned = SwapchainOwns::no; + }; + + template <> + class SharedHandle : public SharedHandleBase + { + using BaseType = SharedHandleBase; + using DeleterType = typename SharedHandleTraits::deleter; + friend BaseType; + + public: + SharedHandle() = default; + + explicit SharedHandle( Image handle, + SharedHandle> parent, + SwapchainOwns swapchain_owned VULKAN_HPP_DEFAULT_ASSIGNMENT( SwapchainOwns::no ), + DeleterType deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( DeleterType() ) ) VULKAN_HPP_NOEXCEPT + : BaseType( handle, std::move( parent ), std::move( deleter ), swapchain_owned ) + { + } + + protected: + static void internalDestroy( ImageHeader const & control, Image handle ) VULKAN_HPP_NOEXCEPT + { + if ( control.swapchainOwned == SwapchainOwns::no ) + { + control.deleter.destroy( control.parent.get(), handle ); + } + } + }; + + struct SwapchainHeader + { + SwapchainHeader( SharedHandle surface, + SharedHandle> parent, + typename SharedHandleTraits::deleter deleter + VULKAN_HPP_DEFAULT_ASSIGNMENT( typename SharedHandleTraits::deleter() ) ) VULKAN_HPP_NOEXCEPT + : surface( std::move( surface ) ) + , parent( std::move( parent ) ) + , deleter( std::move( deleter ) ) + { + } + + SharedHandle surface; + SharedHandle> parent; + typename SharedHandleTraits::deleter deleter; + }; + + template <> + class SharedHandle : public SharedHandleBase + { + using BaseType = SharedHandleBase; + using DeleterType = typename SharedHandleTraits::deleter; + friend BaseType; + + public: + SharedHandle() = default; + + explicit SharedHandle( SwapchainKHR handle, + SharedHandle> parent, + SharedHandle surface, + DeleterType deleter VULKAN_HPP_DEFAULT_ASSIGNMENT( DeleterType() ) ) VULKAN_HPP_NOEXCEPT + : BaseType( handle, std::move( surface ), std::move( parent ), std::move( deleter ) ) + { + } + + public: + SharedHandle const & getSurface() const VULKAN_HPP_NOEXCEPT + { + return getHeader().surface; + } + + protected: + using BaseType::internalDestroy; + }; + + template + class SharedHandleBaseNoDestroy : public SharedHandleBase + { + public: + using SharedHandleBase::SharedHandleBase; + + DestructorType const & getDestructorType() const VULKAN_HPP_NOEXCEPT + { + return SharedHandleBase::getHeader(); + } + + protected: + static void internalDestroy( DestructorType const &, HandleType ) VULKAN_HPP_NOEXCEPT {} + }; + + //=== VK_VERSION_1_0 === + + template <> + class SharedHandle : public SharedHandleBaseNoDestroy + { + friend SharedHandleBase; + + public: + SharedHandle() = default; + + explicit SharedHandle( PhysicalDevice handle, SharedInstance parent ) noexcept + : SharedHandleBaseNoDestroy( handle, std::move( parent ) ) + { + } + }; + + using SharedPhysicalDevice = SharedHandle; + + template <> + class SharedHandle : public SharedHandleBaseNoDestroy + { + friend SharedHandleBase; + + public: + SharedHandle() = default; + + explicit SharedHandle( Queue handle, SharedDevice parent ) noexcept : SharedHandleBaseNoDestroy( handle, std::move( parent ) ) {} + }; + + using SharedQueue = SharedHandle; + + //=== VK_KHR_display === + + template <> + class SharedHandle : public SharedHandleBaseNoDestroy + { + friend SharedHandleBase; + + public: + SharedHandle() = default; + + explicit SharedHandle( DisplayModeKHR handle, SharedDisplayKHR parent ) noexcept + : SharedHandleBaseNoDestroy( handle, std::move( parent ) ) + { + } + }; + + using SharedDisplayModeKHR = SharedHandle; +#endif // !VULKAN_HPP_NO_SMART_HANDLE +} // namespace VULKAN_HPP_NAMESPACE +#endif // VULKAN_SHARED_HPP diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_static_assertions.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_static_assertions.hpp new file mode 100644 index 000000000..dfe549585 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_static_assertions.hpp @@ -0,0 +1,10092 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_STATIC_ASSERTIONS_HPP +#define VULKAN_STATIC_ASSERTIONS_HPP + +#include + +//========================= +//=== static_assertions === +//========================= + +//=== VK_VERSION_1_0 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Instance is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Instance is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "PhysicalDevice is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevice is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Device is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Device is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Queue is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Queue is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "DeviceMemory is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "DeviceMemory is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Fence is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Fence is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Semaphore is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Semaphore is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "QueryPool is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "QueryPool is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Buffer is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Buffer is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Image ) == sizeof( VkImage ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Image is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Image is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "ImageView is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ImageView is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "CommandPool is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "CommandPool is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "CommandBuffer is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "CommandBuffer is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Event is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Event is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "BufferView is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "BufferView is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "ShaderModule is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ShaderModule is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "PipelineCache is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "PipelineCache is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Pipeline is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Pipeline is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "PipelineLayout is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineLayout is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Sampler is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Sampler is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "DescriptorPool is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorPool is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "DescriptorSet is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "DescriptorSet is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "DescriptorSetLayout is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetLayout is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "Framebuffer is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Framebuffer is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "RenderPass is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "RenderPass is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Extent2D is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Extent3D is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Offset2D is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Offset3D is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Rect2D is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BaseInStructure ) == sizeof( VkBaseInStructure ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BaseInStructure is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BaseOutStructure ) == sizeof( VkBaseOutStructure ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BaseOutStructure is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AllocationCallbacks is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ApplicationInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FormatProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatProperties ) == sizeof( VkImageFormatProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageFormatProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "InstanceCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "MemoryHeap is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "MemoryType is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLimits is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMemoryProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSparseProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceQueueCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExtensionProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "LayerProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "SubmitInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MappedMemoryRange is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryAllocateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryRequirements is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageSubresource is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseImageFormatProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseImageMemoryBind is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseImageMemoryBindInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseImageMemoryRequirements is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseMemoryBind is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseBufferMemoryBindInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseImageOpaqueMemoryBindInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindSparseInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FenceCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueryPoolCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubresourceLayout is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ComponentMapping is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageSubresourceRange is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandPoolCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferAllocateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferInheritanceInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferBeginInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "BufferCopy is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageSubresourceLayers is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferImageCopy is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ImageCopy is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferMemoryBarrier is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageMemoryBarrier is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "MemoryBarrier is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DispatchIndirectCommand is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionOne ) == sizeof( VkPipelineCacheHeaderVersionOne ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCacheHeaderVersionOne is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "EventCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferViewCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderModuleCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCacheCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SpecializationMapEntry is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SpecializationInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineShaderStageCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ComputePipelineCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PushConstantRange is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineLayoutCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyDescriptorSet is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorBufferInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorImageInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorPoolSize is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorPoolCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetAllocateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetLayoutBinding is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetLayoutCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "WriteDescriptorSet is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearColorValue ) == sizeof( VkClearColorValue ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClearColorValue is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrawIndexedIndirectCommand is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrawIndirectCommand is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "StencilOpState is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VertexInputAttributeDescription is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VertexInputBindingDescription is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "Viewport is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineColorBlendAttachmentState is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineColorBlendStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineDepthStencilStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineDynamicStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineInputAssemblyStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineMultisampleStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineRasterizationStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineTessellationStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineVertexInputStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineViewportStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GraphicsPipelineCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentDescription ) == sizeof( VkAttachmentDescription ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentDescription is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentReference is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FramebufferCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassDependency is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassDescription is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClearDepthStencilValue is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ClearRect is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearValue ) == sizeof( VkClearValue ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ClearValue is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClearAttachment is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ImageBlit is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ImageResolve is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassBeginInfo is not nothrow_move_constructible!" ); + +//=== VK_VERSION_1_1 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate ) == sizeof( VkDescriptorUpdateTemplate ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "DescriptorUpdateTemplate is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorUpdateTemplate is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ) == sizeof( VkSamplerYcbcrConversion ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "SamplerYcbcrConversion is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerYcbcrConversion is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo ) == sizeof( VkBindBufferMemoryInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindBufferMemoryInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImageMemoryInfo ) == sizeof( VkBindImageMemoryInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindImageMemoryInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryDedicatedRequirements ) == sizeof( VkMemoryDedicatedRequirements ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryDedicatedRequirements is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfo ) == sizeof( VkMemoryDedicatedAllocateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryDedicatedAllocateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryAllocateFlagsInfo ) == sizeof( VkMemoryAllocateFlagsInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryAllocateFlagsInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupCommandBufferBeginInfo ) == sizeof( VkDeviceGroupCommandBufferBeginInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupCommandBufferBeginInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupSubmitInfo ) == sizeof( VkDeviceGroupSubmitInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupSubmitInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupBindSparseInfo ) == sizeof( VkDeviceGroupBindSparseInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupBindSparseInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindBufferMemoryDeviceGroupInfo ) == sizeof( VkBindBufferMemoryDeviceGroupInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindBufferMemoryDeviceGroupInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImageMemoryDeviceGroupInfo ) == sizeof( VkBindImageMemoryDeviceGroupInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindImageMemoryDeviceGroupInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties ) == sizeof( VkPhysicalDeviceGroupProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceGroupProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupDeviceCreateInfo ) == sizeof( VkDeviceGroupDeviceCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupDeviceCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2 ) == sizeof( VkBufferMemoryRequirementsInfo2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferMemoryRequirementsInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2 ) == sizeof( VkImageMemoryRequirementsInfo2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageMemoryRequirementsInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2 ) == sizeof( VkImageSparseMemoryRequirementsInfo2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageSparseMemoryRequirementsInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryRequirements2 ) == sizeof( VkMemoryRequirements2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryRequirements2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2 ) == sizeof( VkSparseImageMemoryRequirements2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseImageMemoryRequirements2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 ) == sizeof( VkPhysicalDeviceFeatures2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFeatures2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 ) == sizeof( VkPhysicalDeviceProperties2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceProperties2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FormatProperties2 ) == sizeof( VkFormatProperties2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FormatProperties2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatProperties2 ) == sizeof( VkImageFormatProperties2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageFormatProperties2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2 ) == sizeof( VkPhysicalDeviceImageFormatInfo2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageFormatInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyProperties2 ) == sizeof( VkQueueFamilyProperties2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyProperties2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 ) == sizeof( VkPhysicalDeviceMemoryProperties2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMemoryProperties2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2 ) == sizeof( VkSparseImageFormatProperties2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SparseImageFormatProperties2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2 ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSparseImageFormatInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewUsageCreateInfo ) == sizeof( VkImageViewUsageCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewUsageCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryFeatures ) == sizeof( VkPhysicalDeviceProtectedMemoryFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceProtectedMemoryFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProtectedMemoryProperties ) == sizeof( VkPhysicalDeviceProtectedMemoryProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceProtectedMemoryProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueInfo2 ) == sizeof( VkDeviceQueueInfo2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceQueueInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ProtectedSubmitInfo ) == sizeof( VkProtectedSubmitInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ProtectedSubmitInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImagePlaneMemoryInfo ) == sizeof( VkBindImagePlaneMemoryInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindImagePlaneMemoryInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImagePlaneMemoryRequirementsInfo ) == sizeof( VkImagePlaneMemoryRequirementsInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImagePlaneMemoryRequirementsInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryProperties ) == sizeof( VkExternalMemoryProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalMemoryProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalImageFormatInfo ) == sizeof( VkPhysicalDeviceExternalImageFormatInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalImageFormatInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalImageFormatProperties ) == sizeof( VkExternalImageFormatProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalImageFormatProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo ) == sizeof( VkPhysicalDeviceExternalBufferInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalBufferInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalBufferProperties ) == sizeof( VkExternalBufferProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalBufferProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceIDProperties ) == sizeof( VkPhysicalDeviceIDProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceIDProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfo ) == sizeof( VkExternalMemoryImageCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalMemoryImageCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryBufferCreateInfo ) == sizeof( VkExternalMemoryBufferCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalMemoryBufferCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfo ) == sizeof( VkExportMemoryAllocateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMemoryAllocateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo ) == sizeof( VkPhysicalDeviceExternalFenceInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalFenceInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalFenceProperties ) == sizeof( VkExternalFenceProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalFenceProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportFenceCreateInfo ) == sizeof( VkExportFenceCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportFenceCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportSemaphoreCreateInfo ) == sizeof( VkExportSemaphoreCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportSemaphoreCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalSemaphoreInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties ) == sizeof( VkExternalSemaphoreProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalSemaphoreProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupProperties ) == sizeof( VkPhysicalDeviceSubgroupProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubgroupProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice16BitStorageFeatures ) == sizeof( VkPhysicalDevice16BitStorageFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevice16BitStorageFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVariablePointersFeatures ) == sizeof( VkPhysicalDeviceVariablePointersFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVariablePointersFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry ) == sizeof( VkDescriptorUpdateTemplateEntry ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorUpdateTemplateEntry is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo ) == sizeof( VkDescriptorUpdateTemplateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorUpdateTemplateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance3Properties ) == sizeof( VkPhysicalDeviceMaintenance3Properties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance3Properties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport ) == sizeof( VkDescriptorSetLayoutSupport ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetLayoutSupport is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo ) == sizeof( VkSamplerYcbcrConversionCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerYcbcrConversionCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionInfo ) == sizeof( VkSamplerYcbcrConversionInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerYcbcrConversionInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerYcbcrConversionFeatures ) == + sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSamplerYcbcrConversionFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionImageFormatProperties ) == + sizeof( VkSamplerYcbcrConversionImageFormatProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerYcbcrConversionImageFormatProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupRenderPassBeginInfo ) == sizeof( VkDeviceGroupRenderPassBeginInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupRenderPassBeginInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePointClippingProperties ) == sizeof( VkPhysicalDevicePointClippingProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePointClippingProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference ) == sizeof( VkInputAttachmentAspectReference ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "InputAttachmentAspectReference is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassInputAttachmentAspectCreateInfo ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassInputAttachmentAspectCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineTessellationDomainOriginStateCreateInfo ) == + sizeof( VkPipelineTessellationDomainOriginStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineTessellationDomainOriginStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassMultiviewCreateInfo ) == sizeof( VkRenderPassMultiviewCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassMultiviewCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewFeatures ) == sizeof( VkPhysicalDeviceMultiviewFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiviewFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewProperties ) == sizeof( VkPhysicalDeviceMultiviewProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiviewProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDrawParametersFeatures ) == sizeof( VkPhysicalDeviceShaderDrawParametersFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderDrawParametersFeatures is not nothrow_move_constructible!" ); + +//=== VK_VERSION_1_2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ConformanceVersion ) == sizeof( VkConformanceVersion ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ConformanceVersion is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDriverProperties ) == sizeof( VkPhysicalDeviceDriverProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDriverProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Features ) == sizeof( VkPhysicalDeviceVulkan11Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan11Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan11Properties ) == sizeof( VkPhysicalDeviceVulkan11Properties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan11Properties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Features ) == sizeof( VkPhysicalDeviceVulkan12Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan12Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan12Properties ) == sizeof( VkPhysicalDeviceVulkan12Properties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan12Properties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatListCreateInfo ) == sizeof( VkImageFormatListCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageFormatListCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkanMemoryModelFeatures ) == sizeof( VkPhysicalDeviceVulkanMemoryModelFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkanMemoryModelFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceHostQueryResetFeatures ) == sizeof( VkPhysicalDeviceHostQueryResetFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceHostQueryResetFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreFeatures ) == sizeof( VkPhysicalDeviceTimelineSemaphoreFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTimelineSemaphoreFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTimelineSemaphoreProperties ) == sizeof( VkPhysicalDeviceTimelineSemaphoreProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTimelineSemaphoreProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreTypeCreateInfo ) == sizeof( VkSemaphoreTypeCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreTypeCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TimelineSemaphoreSubmitInfo ) == sizeof( VkTimelineSemaphoreSubmitInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TimelineSemaphoreSubmitInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo ) == sizeof( VkSemaphoreWaitInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreWaitInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo ) == sizeof( VkSemaphoreSignalInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreSignalInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeatures ) == sizeof( VkPhysicalDeviceBufferDeviceAddressFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceBufferDeviceAddressFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo ) == sizeof( VkBufferDeviceAddressInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferDeviceAddressInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferOpaqueCaptureAddressCreateInfo ) == sizeof( VkBufferOpaqueCaptureAddressCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferOpaqueCaptureAddressCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryOpaqueCaptureAddressAllocateInfo ) == sizeof( VkMemoryOpaqueCaptureAddressAllocateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryOpaqueCaptureAddressAllocateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo ) == sizeof( VkDeviceMemoryOpaqueCaptureAddressInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceMemoryOpaqueCaptureAddressInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice8BitStorageFeatures ) == sizeof( VkPhysicalDevice8BitStorageFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevice8BitStorageFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicInt64Features ) == sizeof( VkPhysicalDeviceShaderAtomicInt64Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderAtomicInt64Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat16Int8Features ) == sizeof( VkPhysicalDeviceShaderFloat16Int8Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderFloat16Int8Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFloatControlsProperties ) == sizeof( VkPhysicalDeviceFloatControlsProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFloatControlsProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBindingFlagsCreateInfo ) == sizeof( VkDescriptorSetLayoutBindingFlagsCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetLayoutBindingFlagsCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingFeatures ) == sizeof( VkPhysicalDeviceDescriptorIndexingFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorIndexingFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorIndexingProperties ) == sizeof( VkPhysicalDeviceDescriptorIndexingProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorIndexingProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountAllocateInfo ) == + sizeof( VkDescriptorSetVariableDescriptorCountAllocateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetVariableDescriptorCountAllocateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetVariableDescriptorCountLayoutSupport ) == + sizeof( VkDescriptorSetVariableDescriptorCountLayoutSupport ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetVariableDescriptorCountLayoutSupport is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceScalarBlockLayoutFeatures ) == sizeof( VkPhysicalDeviceScalarBlockLayoutFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceScalarBlockLayoutFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerReductionModeCreateInfo ) == sizeof( VkSamplerReductionModeCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerReductionModeCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSamplerFilterMinmaxProperties ) == + sizeof( VkPhysicalDeviceSamplerFilterMinmaxProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSamplerFilterMinmaxProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceUniformBufferStandardLayoutFeatures ) == + sizeof( VkPhysicalDeviceUniformBufferStandardLayoutFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceUniformBufferStandardLayoutFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupExtendedTypesFeatures ) == + sizeof( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderSubgroupExtendedTypesFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentDescription2 ) == sizeof( VkAttachmentDescription2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentDescription2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentReference2 ) == sizeof( VkAttachmentReference2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentReference2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDescription2 ) == sizeof( VkSubpassDescription2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassDescription2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDependency2 ) == sizeof( VkSubpassDependency2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassDependency2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassBeginInfo ) == sizeof( VkSubpassBeginInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassBeginInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassEndInfo ) == sizeof( VkSubpassEndInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassEndInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2 ) == sizeof( VkRenderPassCreateInfo2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassCreateInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassDescriptionDepthStencilResolve ) == sizeof( VkSubpassDescriptionDepthStencilResolve ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassDescriptionDepthStencilResolve is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthStencilResolveProperties ) == + sizeof( VkPhysicalDeviceDepthStencilResolveProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDepthStencilResolveProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageStencilUsageCreateInfo ) == sizeof( VkImageStencilUsageCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageStencilUsageCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImagelessFramebufferFeatures ) == sizeof( VkPhysicalDeviceImagelessFramebufferFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImagelessFramebufferFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo ) == sizeof( VkFramebufferAttachmentImageInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FramebufferAttachmentImageInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassAttachmentBeginInfo ) == sizeof( VkRenderPassAttachmentBeginInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassAttachmentBeginInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferAttachmentsCreateInfo ) == sizeof( VkFramebufferAttachmentsCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FramebufferAttachmentsCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSeparateDepthStencilLayoutsFeatures ) == + sizeof( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSeparateDepthStencilLayoutsFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentReferenceStencilLayout ) == sizeof( VkAttachmentReferenceStencilLayout ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentReferenceStencilLayout is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentDescriptionStencilLayout ) == sizeof( VkAttachmentDescriptionStencilLayout ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentDescriptionStencilLayout is not nothrow_move_constructible!" ); + +//=== VK_VERSION_1_3 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PrivateDataSlot ) == sizeof( VkPrivateDataSlot ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "PrivateDataSlot is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PrivateDataSlot is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Features ) == sizeof( VkPhysicalDeviceVulkan13Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan13Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan13Properties ) == sizeof( VkPhysicalDeviceVulkan13Properties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan13Properties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceToolProperties ) == sizeof( VkPhysicalDeviceToolProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceToolProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePrivateDataFeatures ) == sizeof( VkPhysicalDevicePrivateDataFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePrivateDataFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DevicePrivateDataCreateInfo ) == sizeof( VkDevicePrivateDataCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DevicePrivateDataCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfo ) == sizeof( VkPrivateDataSlotCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PrivateDataSlotCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryBarrier2 ) == sizeof( VkMemoryBarrier2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryBarrier2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2 ) == sizeof( VkBufferMemoryBarrier2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferMemoryBarrier2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2 ) == sizeof( VkImageMemoryBarrier2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageMemoryBarrier2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DependencyInfo ) == sizeof( VkDependencyInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DependencyInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfo ) == sizeof( VkSemaphoreSubmitInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreSubmitInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfo ) == sizeof( VkCommandBufferSubmitInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferSubmitInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubmitInfo2 ) == sizeof( VkSubmitInfo2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "SubmitInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSynchronization2Features ) == sizeof( VkPhysicalDeviceSynchronization2Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSynchronization2Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCopy2 ) == sizeof( VkBufferCopy2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "BufferCopy2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyBufferInfo2 ) == sizeof( VkCopyBufferInfo2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyBufferInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCopy2 ) == sizeof( VkImageCopy2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ImageCopy2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyImageInfo2 ) == sizeof( VkCopyImageInfo2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyImageInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferImageCopy2 ) == sizeof( VkBufferImageCopy2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferImageCopy2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2 ) == sizeof( VkCopyBufferToImageInfo2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyBufferToImageInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2 ) == sizeof( VkCopyImageToBufferInfo2 ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyImageToBufferInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTCHDRFeatures ) == + sizeof( VkPhysicalDeviceTextureCompressionASTCHDRFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTextureCompressionASTCHDRFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FormatProperties3 ) == sizeof( VkFormatProperties3 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FormatProperties3 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Features ) == sizeof( VkPhysicalDeviceMaintenance4Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance4Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance4Properties ) == sizeof( VkPhysicalDeviceMaintenance4Properties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance4Properties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceBufferMemoryRequirements ) == sizeof( VkDeviceBufferMemoryRequirements ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceBufferMemoryRequirements is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceImageMemoryRequirements ) == sizeof( VkDeviceImageMemoryRequirements ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceImageMemoryRequirements is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCreationFeedback ) == sizeof( VkPipelineCreationFeedback ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCreationFeedback is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackCreateInfo ) == sizeof( VkPipelineCreationFeedbackCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCreationFeedbackCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTerminateInvocationFeatures ) == + sizeof( VkPhysicalDeviceShaderTerminateInvocationFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderTerminateInvocationFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderDemoteToHelperInvocationFeatures ) == + sizeof( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderDemoteToHelperInvocationFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCreationCacheControlFeatures ) == + sizeof( VkPhysicalDevicePipelineCreationCacheControlFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineCreationCacheControlFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures ) == + sizeof( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageRobustnessFeatures ) == sizeof( VkPhysicalDeviceImageRobustnessFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageRobustnessFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlFeatures ) == sizeof( VkPhysicalDeviceSubgroupSizeControlFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubgroupSizeControlFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubgroupSizeControlProperties ) == + sizeof( VkPhysicalDeviceSubgroupSizeControlProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubgroupSizeControlProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineShaderStageRequiredSubgroupSizeCreateInfo ) == + sizeof( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineShaderStageRequiredSubgroupSizeCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockFeatures ) == sizeof( VkPhysicalDeviceInlineUniformBlockFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceInlineUniformBlockFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInlineUniformBlockProperties ) == sizeof( VkPhysicalDeviceInlineUniformBlockProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceInlineUniformBlockProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetInlineUniformBlock ) == sizeof( VkWriteDescriptorSetInlineUniformBlock ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "WriteDescriptorSetInlineUniformBlock is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPoolInlineUniformBlockCreateInfo ) == sizeof( VkDescriptorPoolInlineUniformBlockCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorPoolInlineUniformBlockCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductFeatures ) == + sizeof( VkPhysicalDeviceShaderIntegerDotProductFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderIntegerDotProductFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerDotProductProperties ) == + sizeof( VkPhysicalDeviceShaderIntegerDotProductProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderIntegerDotProductProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentProperties ) == + sizeof( VkPhysicalDeviceTexelBufferAlignmentProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTexelBufferAlignmentProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageBlit2 ) == sizeof( VkImageBlit2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ImageBlit2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BlitImageInfo2 ) == sizeof( VkBlitImageInfo2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BlitImageInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageResolve2 ) == sizeof( VkImageResolve2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ImageResolve2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ResolveImageInfo2 ) == sizeof( VkResolveImageInfo2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ResolveImageInfo2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingAttachmentInfo ) == sizeof( VkRenderingAttachmentInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderingAttachmentInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingInfo ) == sizeof( VkRenderingInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "RenderingInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRenderingCreateInfo ) == sizeof( VkPipelineRenderingCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineRenderingCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingFeatures ) == sizeof( VkPhysicalDeviceDynamicRenderingFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDynamicRenderingFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderingInfo ) == sizeof( VkCommandBufferInheritanceRenderingInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferInheritanceRenderingInfo is not nothrow_move_constructible!" ); + +//=== VK_VERSION_1_4 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Features ) == sizeof( VkPhysicalDeviceVulkan14Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan14Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVulkan14Properties ) == sizeof( VkPhysicalDeviceVulkan14Properties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVulkan14Properties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueGlobalPriorityCreateInfo ) == sizeof( VkDeviceQueueGlobalPriorityCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceQueueGlobalPriorityCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceGlobalPriorityQueryFeatures ) == sizeof( VkPhysicalDeviceGlobalPriorityQueryFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceGlobalPriorityQueryFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyGlobalPriorityProperties ) == sizeof( VkQueueFamilyGlobalPriorityProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyGlobalPriorityProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceIndexTypeUint8Features ) == sizeof( VkPhysicalDeviceIndexTypeUint8Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceIndexTypeUint8Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryMapInfo ) == sizeof( VkMemoryMapInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "MemoryMapInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryUnmapInfo ) == sizeof( VkMemoryUnmapInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryUnmapInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Features ) == sizeof( VkPhysicalDeviceMaintenance5Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance5Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance5Properties ) == sizeof( VkPhysicalDeviceMaintenance5Properties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance5Properties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubresourceLayout2 ) == sizeof( VkSubresourceLayout2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubresourceLayout2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSubresource2 ) == sizeof( VkImageSubresource2 ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageSubresource2 is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceImageSubresourceInfo ) == sizeof( VkDeviceImageSubresourceInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceImageSubresourceInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferUsageFlags2CreateInfo ) == sizeof( VkBufferUsageFlags2CreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferUsageFlags2CreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Features ) == sizeof( VkPhysicalDeviceMaintenance6Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance6Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance6Properties ) == sizeof( VkPhysicalDeviceMaintenance6Properties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance6Properties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindMemoryStatus ) == sizeof( VkBindMemoryStatus ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindMemoryStatus is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyFeatures ) == sizeof( VkPhysicalDeviceHostImageCopyFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceHostImageCopyFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceHostImageCopyProperties ) == sizeof( VkPhysicalDeviceHostImageCopyProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceHostImageCopyProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryToImageCopy ) == sizeof( VkMemoryToImageCopy ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryToImageCopy is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageToMemoryCopy ) == sizeof( VkImageToMemoryCopy ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageToMemoryCopy is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMemoryToImageInfo ) == sizeof( VkCopyMemoryToImageInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyMemoryToImageInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyImageToMemoryInfo ) == sizeof( VkCopyImageToMemoryInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyImageToMemoryInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyImageToImageInfo ) == sizeof( VkCopyImageToImageInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyImageToImageInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HostImageLayoutTransitionInfo ) == sizeof( VkHostImageLayoutTransitionInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "HostImageLayoutTransitionInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubresourceHostMemcpySize ) == sizeof( VkSubresourceHostMemcpySize ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubresourceHostMemcpySize is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HostImageCopyDevicePerformanceQuery ) == sizeof( VkHostImageCopyDevicePerformanceQuery ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "HostImageCopyDevicePerformanceQuery is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupRotateFeatures ) == sizeof( VkPhysicalDeviceShaderSubgroupRotateFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderSubgroupRotateFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloatControls2Features ) == sizeof( VkPhysicalDeviceShaderFloatControls2Features ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderFloatControls2Features is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderExpectAssumeFeatures ) == sizeof( VkPhysicalDeviceShaderExpectAssumeFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderExpectAssumeFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCreateFlags2CreateInfo ) == sizeof( VkPipelineCreateFlags2CreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCreateFlags2CreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePushDescriptorProperties ) == sizeof( VkPhysicalDevicePushDescriptorProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePushDescriptorProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindDescriptorSetsInfo ) == sizeof( VkBindDescriptorSetsInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindDescriptorSetsInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PushConstantsInfo ) == sizeof( VkPushConstantsInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PushConstantsInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PushDescriptorSetInfo ) == sizeof( VkPushDescriptorSetInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PushDescriptorSetInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PushDescriptorSetWithTemplateInfo ) == sizeof( VkPushDescriptorSetWithTemplateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PushDescriptorSetWithTemplateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineProtectedAccessFeatures ) == + sizeof( VkPhysicalDevicePipelineProtectedAccessFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineProtectedAccessFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessFeatures ) == sizeof( VkPhysicalDevicePipelineRobustnessFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineRobustnessFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineRobustnessProperties ) == sizeof( VkPhysicalDevicePipelineRobustnessProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineRobustnessProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRobustnessCreateInfo ) == sizeof( VkPipelineRobustnessCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineRobustnessCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationFeatures ) == sizeof( VkPhysicalDeviceLineRasterizationFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLineRasterizationFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLineRasterizationProperties ) == sizeof( VkPhysicalDeviceLineRasterizationProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLineRasterizationProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationLineStateCreateInfo ) == sizeof( VkPipelineRasterizationLineStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineRasterizationLineStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorProperties ) == + sizeof( VkPhysicalDeviceVertexAttributeDivisorProperties ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVertexAttributeDivisorProperties is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescription ) == sizeof( VkVertexInputBindingDivisorDescription ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VertexInputBindingDivisorDescription is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineVertexInputDivisorStateCreateInfo ) == sizeof( VkPipelineVertexInputDivisorStateCreateInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineVertexInputDivisorStateCreateInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorFeatures ) == + sizeof( VkPhysicalDeviceVertexAttributeDivisorFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVertexAttributeDivisorFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingAreaInfo ) == sizeof( VkRenderingAreaInfo ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderingAreaInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingLocalReadFeatures ) == + sizeof( VkPhysicalDeviceDynamicRenderingLocalReadFeatures ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDynamicRenderingLocalReadFeatures is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingAttachmentLocationInfo ) == sizeof( VkRenderingAttachmentLocationInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderingAttachmentLocationInfo is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingInputAttachmentIndexInfo ) == sizeof( VkRenderingInputAttachmentIndexInfo ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderingInputAttachmentIndexInfo is not nothrow_move_constructible!" ); + +//=== VK_KHR_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "SurfaceKHR is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "SurfaceKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceFormatKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_swapchain === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "SwapchainKHR is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "SwapchainKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageSwapchainCreateInfoKHR ) == sizeof( VkImageSwapchainCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageSwapchainCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindImageMemorySwapchainInfoKHR ) == sizeof( VkBindImageMemorySwapchainInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindImageMemorySwapchainInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR ) == sizeof( VkAcquireNextImageInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AcquireNextImageInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR ) == sizeof( VkDeviceGroupPresentCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupPresentCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupPresentInfoKHR ) == sizeof( VkDeviceGroupPresentInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupPresentInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceGroupSwapchainCreateInfoKHR ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceGroupSwapchainCreateInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_display === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "DisplayKHR is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "DisplayKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "DisplayModeKHR is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModeKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModeCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModeParametersKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModePropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPlaneCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPlanePropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplaySurfaceCreateInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_display_swapchain === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPresentInfoKHR is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) +//=== VK_KHR_xlib_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "XlibSurfaceCreateInfoKHR is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) +//=== VK_KHR_xcb_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "XcbSurfaceCreateInfoKHR is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) +//=== VK_KHR_wayland_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "WaylandSurfaceCreateInfoKHR is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) +//=== VK_KHR_android_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AndroidSurfaceCreateInfoKHR is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) +//=== VK_KHR_win32_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Win32SurfaceCreateInfoKHR is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +//=== VK_EXT_debug_report === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "DebugReportCallbackEXT is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugReportCallbackEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugReportCallbackCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_AMD_rasterization_order === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateRasterizationOrderAMD ) == + sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineRasterizationStateRasterizationOrderAMD is not nothrow_move_constructible!" ); + +//=== VK_EXT_debug_marker === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugMarkerObjectNameInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugMarkerObjectTagInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugMarkerMarkerInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_queue === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionKHR ) == sizeof( VkVideoSessionKHR ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "VideoSessionKHR is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoSessionKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionParametersKHR ) == sizeof( VkVideoSessionParametersKHR ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "VideoSessionParametersKHR is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoSessionParametersKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyQueryResultStatusPropertiesKHR ) == sizeof( VkQueueFamilyQueryResultStatusPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyQueryResultStatusPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyVideoPropertiesKHR ) == sizeof( VkQueueFamilyVideoPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyVideoPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoProfileInfoKHR ) == sizeof( VkVideoProfileInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoProfileInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoProfileListInfoKHR ) == sizeof( VkVideoProfileListInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoProfileListInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoCapabilitiesKHR ) == sizeof( VkVideoCapabilitiesKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoFormatInfoKHR ) == sizeof( VkPhysicalDeviceVideoFormatInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVideoFormatInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoFormatPropertiesKHR ) == sizeof( VkVideoFormatPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoFormatPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoPictureResourceInfoKHR ) == sizeof( VkVideoPictureResourceInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoPictureResourceInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoReferenceSlotInfoKHR ) == sizeof( VkVideoReferenceSlotInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoReferenceSlotInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionMemoryRequirementsKHR ) == sizeof( VkVideoSessionMemoryRequirementsKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoSessionMemoryRequirementsKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindVideoSessionMemoryInfoKHR ) == sizeof( VkBindVideoSessionMemoryInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindVideoSessionMemoryInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionCreateInfoKHR ) == sizeof( VkVideoSessionCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoSessionCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionParametersCreateInfoKHR ) == sizeof( VkVideoSessionParametersCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoSessionParametersCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoSessionParametersUpdateInfoKHR ) == sizeof( VkVideoSessionParametersUpdateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoSessionParametersUpdateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoBeginCodingInfoKHR ) == sizeof( VkVideoBeginCodingInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoBeginCodingInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEndCodingInfoKHR ) == sizeof( VkVideoEndCodingInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEndCodingInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoCodingControlInfoKHR ) == sizeof( VkVideoCodingControlInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoCodingControlInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_decode_queue === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeCapabilitiesKHR ) == sizeof( VkVideoDecodeCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeUsageInfoKHR ) == sizeof( VkVideoDecodeUsageInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeUsageInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeInfoKHR ) == sizeof( VkVideoDecodeInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_dedicated_allocation === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DedicatedAllocationImageCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DedicatedAllocationBufferCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DedicatedAllocationMemoryAllocateInfoNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_transform_feedback === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackFeaturesEXT ) == sizeof( VkPhysicalDeviceTransformFeedbackFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTransformFeedbackFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTransformFeedbackPropertiesEXT ) == + sizeof( VkPhysicalDeviceTransformFeedbackPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTransformFeedbackPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateInfoEXT ) == + sizeof( VkPipelineRasterizationStateStreamCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineRasterizationStateStreamCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_NVX_binary_import === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuModuleNVX ) == sizeof( VkCuModuleNVX ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "CuModuleNVX is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "CuModuleNVX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuFunctionNVX ) == sizeof( VkCuFunctionNVX ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "CuFunctionNVX is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "CuFunctionNVX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuModuleCreateInfoNVX ) == sizeof( VkCuModuleCreateInfoNVX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CuModuleCreateInfoNVX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuModuleTexturingModeCreateInfoNVX ) == sizeof( VkCuModuleTexturingModeCreateInfoNVX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CuModuleTexturingModeCreateInfoNVX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuFunctionCreateInfoNVX ) == sizeof( VkCuFunctionCreateInfoNVX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CuFunctionCreateInfoNVX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CuLaunchInfoNVX ) == sizeof( VkCuLaunchInfoNVX ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CuLaunchInfoNVX is not nothrow_move_constructible!" ); + +//=== VK_NVX_image_view_handle === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX ) == sizeof( VkImageViewHandleInfoNVX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewHandleInfoNVX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX ) == sizeof( VkImageViewAddressPropertiesNVX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewAddressPropertiesNVX is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_encode_h264 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264CapabilitiesKHR ) == sizeof( VkVideoEncodeH264CapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264CapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264QualityLevelPropertiesKHR ) == sizeof( VkVideoEncodeH264QualityLevelPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264QualityLevelPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionCreateInfoKHR ) == sizeof( VkVideoEncodeH264SessionCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264SessionCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersCreateInfoKHR ) == + sizeof( VkVideoEncodeH264SessionParametersCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264SessionParametersCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersAddInfoKHR ) == sizeof( VkVideoEncodeH264SessionParametersAddInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264SessionParametersAddInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersGetInfoKHR ) == sizeof( VkVideoEncodeH264SessionParametersGetInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264SessionParametersGetInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264SessionParametersFeedbackInfoKHR ) == + sizeof( VkVideoEncodeH264SessionParametersFeedbackInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264SessionParametersFeedbackInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264PictureInfoKHR ) == sizeof( VkVideoEncodeH264PictureInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264PictureInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264DpbSlotInfoKHR ) == sizeof( VkVideoEncodeH264DpbSlotInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264DpbSlotInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264NaluSliceInfoKHR ) == sizeof( VkVideoEncodeH264NaluSliceInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264NaluSliceInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264ProfileInfoKHR ) == sizeof( VkVideoEncodeH264ProfileInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264ProfileInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlInfoKHR ) == sizeof( VkVideoEncodeH264RateControlInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264RateControlInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264RateControlLayerInfoKHR ) == sizeof( VkVideoEncodeH264RateControlLayerInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264RateControlLayerInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264QpKHR ) == sizeof( VkVideoEncodeH264QpKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264QpKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264FrameSizeKHR ) == sizeof( VkVideoEncodeH264FrameSizeKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264FrameSizeKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264GopRemainingFrameInfoKHR ) == sizeof( VkVideoEncodeH264GopRemainingFrameInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264GopRemainingFrameInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_encode_h265 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265CapabilitiesKHR ) == sizeof( VkVideoEncodeH265CapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265CapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionCreateInfoKHR ) == sizeof( VkVideoEncodeH265SessionCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265SessionCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265QualityLevelPropertiesKHR ) == sizeof( VkVideoEncodeH265QualityLevelPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265QualityLevelPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersCreateInfoKHR ) == + sizeof( VkVideoEncodeH265SessionParametersCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265SessionParametersCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersAddInfoKHR ) == sizeof( VkVideoEncodeH265SessionParametersAddInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265SessionParametersAddInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersGetInfoKHR ) == sizeof( VkVideoEncodeH265SessionParametersGetInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265SessionParametersGetInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265SessionParametersFeedbackInfoKHR ) == + sizeof( VkVideoEncodeH265SessionParametersFeedbackInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265SessionParametersFeedbackInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265PictureInfoKHR ) == sizeof( VkVideoEncodeH265PictureInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265PictureInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265DpbSlotInfoKHR ) == sizeof( VkVideoEncodeH265DpbSlotInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265DpbSlotInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265NaluSliceSegmentInfoKHR ) == sizeof( VkVideoEncodeH265NaluSliceSegmentInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265NaluSliceSegmentInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265ProfileInfoKHR ) == sizeof( VkVideoEncodeH265ProfileInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265ProfileInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlInfoKHR ) == sizeof( VkVideoEncodeH265RateControlInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265RateControlInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265RateControlLayerInfoKHR ) == sizeof( VkVideoEncodeH265RateControlLayerInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265RateControlLayerInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265QpKHR ) == sizeof( VkVideoEncodeH265QpKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265QpKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265FrameSizeKHR ) == sizeof( VkVideoEncodeH265FrameSizeKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265FrameSizeKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265GopRemainingFrameInfoKHR ) == sizeof( VkVideoEncodeH265GopRemainingFrameInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265GopRemainingFrameInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_decode_h264 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264ProfileInfoKHR ) == sizeof( VkVideoDecodeH264ProfileInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH264ProfileInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264CapabilitiesKHR ) == sizeof( VkVideoDecodeH264CapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH264CapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersCreateInfoKHR ) == + sizeof( VkVideoDecodeH264SessionParametersCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH264SessionParametersCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264SessionParametersAddInfoKHR ) == sizeof( VkVideoDecodeH264SessionParametersAddInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH264SessionParametersAddInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264PictureInfoKHR ) == sizeof( VkVideoDecodeH264PictureInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH264PictureInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264DpbSlotInfoKHR ) == sizeof( VkVideoDecodeH264DpbSlotInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH264DpbSlotInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_AMD_texture_gather_bias_lod === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TextureLODGatherFormatPropertiesAMD is not nothrow_move_constructible!" ); + +//=== VK_AMD_shader_info === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD ) == sizeof( VkShaderResourceUsageAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderResourceUsageAMD is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderStatisticsInfoAMD ) == sizeof( VkShaderStatisticsInfoAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderStatisticsInfoAMD is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_GGP ) +//=== VK_GGP_stream_descriptor_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP ) == sizeof( VkStreamDescriptorSurfaceCreateInfoGGP ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "StreamDescriptorSurfaceCreateInfoGGP is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_GGP*/ + +//=== VK_NV_corner_sampled_image === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCornerSampledImageFeaturesNV ) == sizeof( VkPhysicalDeviceCornerSampledImageFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCornerSampledImageFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_NV_external_memory_capabilities === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalImageFormatPropertiesNV is not nothrow_move_constructible!" ); + +//=== VK_NV_external_memory === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalMemoryImageCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMemoryAllocateInfoNV is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) +//=== VK_NV_external_memory_win32 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMemoryWin32HandleInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMemoryWin32HandleInfoNV is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) +//=== VK_NV_win32_keyed_mutex === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Win32KeyedMutexAcquireReleaseInfoNV is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +//=== VK_EXT_validation_flags === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ValidationFlagsEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_VI_NN ) +//=== VK_NN_vi_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ViSurfaceCreateInfoNN is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_VI_NN*/ + +//=== VK_EXT_astc_decode_mode === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewASTCDecodeModeEXT ) == sizeof( VkImageViewASTCDecodeModeEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewASTCDecodeModeEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceASTCDecodeFeaturesEXT ) == sizeof( VkPhysicalDeviceASTCDecodeFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceASTCDecodeFeaturesEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) +//=== VK_KHR_external_memory_win32 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMemoryWin32HandleInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMemoryWin32HandleInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryWin32HandlePropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryGetWin32HandleInfoKHR is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +//=== VK_KHR_external_memory_fd === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMemoryFdInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryFdPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryGetFdInfoKHR is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) +//=== VK_KHR_win32_keyed_mutex === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "Win32KeyedMutexAcquireReleaseInfoKHR is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) +//=== VK_KHR_external_semaphore_win32 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportSemaphoreWin32HandleInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportSemaphoreWin32HandleInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "D3D12FenceSubmitInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreGetWin32HandleInfoKHR is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +//=== VK_KHR_external_semaphore_fd === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportSemaphoreFdInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreGetFdInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_conditional_rendering === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT ) == sizeof( VkConditionalRenderingBeginInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ConditionalRenderingBeginInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceConditionalRenderingFeaturesEXT ) == + sizeof( VkPhysicalDeviceConditionalRenderingFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceConditionalRenderingFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceConditionalRenderingInfoEXT ) == + sizeof( VkCommandBufferInheritanceConditionalRenderingInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferInheritanceConditionalRenderingInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_incremental_present === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentRegionsKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentRegionKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "RectLayerKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_clip_space_w_scaling === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ViewportWScalingNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineViewportWScalingStateCreateInfoNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_display_surface_counter === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCapabilities2EXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_display_control === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPowerInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceEventInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayEventInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainCounterCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_GOOGLE_display_timing === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RefreshCycleDurationGOOGLE is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PastPresentationTimingGOOGLE is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentTimesInfoGOOGLE is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentTimeGOOGLE is not nothrow_move_constructible!" ); + +//=== VK_NVX_multiview_per_view_attributes === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == + sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultiviewPerViewAttributesInfoNVX ) == sizeof( VkMultiviewPerViewAttributesInfoNVX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MultiviewPerViewAttributesInfoNVX is not nothrow_move_constructible!" ); + +//=== VK_NV_viewport_swizzle === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ViewportSwizzleNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineViewportSwizzleStateCreateInfoNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_discard_rectangles === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDiscardRectanglePropertiesEXT ) == + sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDiscardRectanglePropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineDiscardRectangleStateCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_conservative_rasterization === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceConservativeRasterizationPropertiesEXT ) == + sizeof( VkPhysicalDeviceConservativeRasterizationPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceConservativeRasterizationPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateInfoEXT ) == + sizeof( VkPipelineRasterizationConservativeStateCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineRasterizationConservativeStateCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_depth_clip_enable === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipEnableFeaturesEXT ) == sizeof( VkPhysicalDeviceDepthClipEnableFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDepthClipEnableFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateInfoEXT ) == + sizeof( VkPipelineRasterizationDepthClipStateCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineRasterizationDepthClipStateCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_hdr_metadata === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "HdrMetadataEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "XYColorEXT is not nothrow_move_constructible!" ); + +//=== VK_IMG_relaxed_line_rasterization === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRelaxedLineRasterizationFeaturesIMG ) == + sizeof( VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRelaxedLineRasterizationFeaturesIMG is not nothrow_move_constructible!" ); + +//=== VK_KHR_shared_presentable_image === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SharedPresentSurfaceCapabilitiesKHR is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) +//=== VK_KHR_external_fence_win32 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportFenceWin32HandleInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportFenceWin32HandleInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FenceGetWin32HandleInfoKHR is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +//=== VK_KHR_external_fence_fd === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportFenceFdInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FenceGetFdInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_performance_query === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryFeaturesKHR ) == sizeof( VkPhysicalDevicePerformanceQueryFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePerformanceQueryFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceQueryPropertiesKHR ) == + sizeof( VkPhysicalDevicePerformanceQueryPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePerformanceQueryPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterKHR ) == sizeof( VkPerformanceCounterKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceCounterKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR ) == sizeof( VkPerformanceCounterDescriptionKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceCounterDescriptionKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR ) == sizeof( VkQueryPoolPerformanceCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueryPoolPerformanceCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterResultKHR ) == sizeof( VkPerformanceCounterResultKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceCounterResultKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR ) == sizeof( VkAcquireProfilingLockInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AcquireProfilingLockInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceQuerySubmitInfoKHR ) == sizeof( VkPerformanceQuerySubmitInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceQuerySubmitInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_get_surface_capabilities2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSurfaceInfo2KHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCapabilities2KHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceFormat2KHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_get_display_properties2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayProperties2KHR ) == sizeof( VkDisplayProperties2KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayProperties2KHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR ) == sizeof( VkDisplayPlaneProperties2KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPlaneProperties2KHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR ) == sizeof( VkDisplayModeProperties2KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModeProperties2KHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR ) == sizeof( VkDisplayPlaneInfo2KHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPlaneInfo2KHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR ) == sizeof( VkDisplayPlaneCapabilities2KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayPlaneCapabilities2KHR is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_IOS_MVK ) +//=== VK_MVK_ios_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IOSSurfaceCreateInfoMVK is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) +//=== VK_MVK_macos_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MacOSSurfaceCreateInfoMVK is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + +//=== VK_EXT_debug_utils === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT ) == sizeof( VkDebugUtilsMessengerEXT ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "DebugUtilsMessengerEXT is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugUtilsMessengerEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT ) == sizeof( VkDebugUtilsLabelEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugUtilsLabelEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT ) == sizeof( VkDebugUtilsMessengerCallbackDataEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugUtilsMessengerCallbackDataEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT ) == sizeof( VkDebugUtilsMessengerCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugUtilsMessengerCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT ) == sizeof( VkDebugUtilsObjectNameInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugUtilsObjectNameInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT ) == sizeof( VkDebugUtilsObjectTagInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DebugUtilsObjectTagInfoEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) +//=== VK_ANDROID_external_memory_android_hardware_buffer === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferUsageANDROID ) == sizeof( VkAndroidHardwareBufferUsageANDROID ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AndroidHardwareBufferUsageANDROID is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferPropertiesANDROID ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AndroidHardwareBufferPropertiesANDROID is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatPropertiesANDROID ) == + sizeof( VkAndroidHardwareBufferFormatPropertiesANDROID ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AndroidHardwareBufferFormatPropertiesANDROID is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportAndroidHardwareBufferInfoANDROID ) == sizeof( VkImportAndroidHardwareBufferInfoANDROID ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportAndroidHardwareBufferInfoANDROID is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID ) == sizeof( VkMemoryGetAndroidHardwareBufferInfoANDROID ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryGetAndroidHardwareBufferInfoANDROID is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalFormatANDROID ) == sizeof( VkExternalFormatANDROID ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalFormatANDROID is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatProperties2ANDROID ) == + sizeof( VkAndroidHardwareBufferFormatProperties2ANDROID ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AndroidHardwareBufferFormatProperties2ANDROID is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) +//=== VK_AMDX_shader_enqueue === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueueFeaturesAMDX ) == sizeof( VkPhysicalDeviceShaderEnqueueFeaturesAMDX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderEnqueueFeaturesAMDX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEnqueuePropertiesAMDX ) == sizeof( VkPhysicalDeviceShaderEnqueuePropertiesAMDX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderEnqueuePropertiesAMDX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineScratchSizeAMDX ) == sizeof( VkExecutionGraphPipelineScratchSizeAMDX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExecutionGraphPipelineScratchSizeAMDX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExecutionGraphPipelineCreateInfoAMDX ) == sizeof( VkExecutionGraphPipelineCreateInfoAMDX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExecutionGraphPipelineCreateInfoAMDX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DispatchGraphInfoAMDX ) == sizeof( VkDispatchGraphInfoAMDX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DispatchGraphInfoAMDX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DispatchGraphCountInfoAMDX ) == sizeof( VkDispatchGraphCountInfoAMDX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DispatchGraphCountInfoAMDX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineShaderStageNodeCreateInfoAMDX ) == sizeof( VkPipelineShaderStageNodeCreateInfoAMDX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineShaderStageNodeCreateInfoAMDX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstAMDX ) == sizeof( VkDeviceOrHostAddressConstAMDX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceOrHostAddressConstAMDX is not nothrow_move_constructible!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +//=== VK_EXT_descriptor_heap === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorARM ) == sizeof( VkTensorARM ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "TensorARM is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "TensorARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HostAddressRangeEXT ) == sizeof( VkHostAddressRangeEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "HostAddressRangeEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HostAddressRangeConstEXT ) == sizeof( VkHostAddressRangeConstEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "HostAddressRangeConstEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TexelBufferDescriptorInfoEXT ) == sizeof( VkTexelBufferDescriptorInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TexelBufferDescriptorInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageDescriptorInfoEXT ) == sizeof( VkImageDescriptorInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageDescriptorInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ResourceDescriptorInfoEXT ) == sizeof( VkResourceDescriptorInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ResourceDescriptorInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ResourceDescriptorDataEXT ) == sizeof( VkResourceDescriptorDataEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ResourceDescriptorDataEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindHeapInfoEXT ) == sizeof( VkBindHeapInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindHeapInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PushDataInfoEXT ) == sizeof( VkPushDataInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PushDataInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceConstantOffsetEXT ) == sizeof( VkDescriptorMappingSourceConstantOffsetEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorMappingSourceConstantOffsetEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorMappingSourcePushIndexEXT ) == sizeof( VkDescriptorMappingSourcePushIndexEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorMappingSourcePushIndexEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceIndirectIndexEXT ) == sizeof( VkDescriptorMappingSourceIndirectIndexEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorMappingSourceIndirectIndexEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceHeapDataEXT ) == sizeof( VkDescriptorMappingSourceHeapDataEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorMappingSourceHeapDataEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceIndirectAddressEXT ) == sizeof( VkDescriptorMappingSourceIndirectAddressEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorMappingSourceIndirectAddressEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceShaderRecordIndexEXT ) == + sizeof( VkDescriptorMappingSourceShaderRecordIndexEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorMappingSourceShaderRecordIndexEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceDataEXT ) == sizeof( VkDescriptorMappingSourceDataEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorMappingSourceDataEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorMappingSourceIndirectIndexArrayEXT ) == + sizeof( VkDescriptorMappingSourceIndirectIndexArrayEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorMappingSourceIndirectIndexArrayEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetAndBindingMappingEXT ) == sizeof( VkDescriptorSetAndBindingMappingEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetAndBindingMappingEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderDescriptorSetAndBindingMappingInfoEXT ) == + sizeof( VkShaderDescriptorSetAndBindingMappingInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderDescriptorSetAndBindingMappingInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::OpaqueCaptureDataCreateInfoEXT ) == sizeof( VkOpaqueCaptureDataCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "OpaqueCaptureDataCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorHeapFeaturesEXT ) == sizeof( VkPhysicalDeviceDescriptorHeapFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorHeapFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorHeapPropertiesEXT ) == sizeof( VkPhysicalDeviceDescriptorHeapPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorHeapPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceDescriptorHeapInfoEXT ) == + sizeof( VkCommandBufferInheritanceDescriptorHeapInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferInheritanceDescriptorHeapInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorIndexCreateInfoEXT ) == sizeof( VkSamplerCustomBorderColorIndexCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerCustomBorderColorIndexCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutPushDataTokenNV ) == sizeof( VkIndirectCommandsLayoutPushDataTokenNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsLayoutPushDataTokenNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubsampledImageFormatPropertiesEXT ) == sizeof( VkSubsampledImageFormatPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubsampledImageFormatPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorViewCreateInfoARM ) == sizeof( VkTensorViewCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TensorViewCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorHeapTensorPropertiesARM ) == + sizeof( VkPhysicalDeviceDescriptorHeapTensorPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorHeapTensorPropertiesARM is not nothrow_move_constructible!" ); + +//=== VK_AMD_mixed_attachment_samples === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentSampleCountInfoAMD ) == sizeof( VkAttachmentSampleCountInfoAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentSampleCountInfoAMD is not nothrow_move_constructible!" ); + +//=== VK_KHR_shader_bfloat16 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderBfloat16FeaturesKHR ) == sizeof( VkPhysicalDeviceShaderBfloat16FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderBfloat16FeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_sample_locations === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SampleLocationEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SampleLocationsInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentSampleLocationsEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassSampleLocationsEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassSampleLocationsBeginInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineSampleLocationsStateCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSampleLocationsPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MultisamplePropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_blend_operation_advanced === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == + sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceBlendOperationAdvancedFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == + sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceBlendOperationAdvancedPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorBlendAdvancedStateCreateInfoEXT ) == + sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineColorBlendAdvancedStateCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_NV_fragment_coverage_to_color === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCoverageToColorStateCreateInfoNV is not nothrow_move_constructible!" ); + +//=== VK_KHR_acceleration_structure === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR ) == sizeof( VkAccelerationStructureKHR ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "AccelerationStructureKHR is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR ) == sizeof( VkDeviceOrHostAddressKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceOrHostAddressKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR ) == sizeof( VkDeviceOrHostAddressConstKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceOrHostAddressConstKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR ) == sizeof( VkAccelerationStructureBuildRangeInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureBuildRangeInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AabbPositionsKHR ) == sizeof( VkAabbPositionsKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AabbPositionsKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR ) == + sizeof( VkAccelerationStructureGeometryTrianglesDataKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryTrianglesDataKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TransformMatrixKHR ) == sizeof( VkTransformMatrixKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TransformMatrixKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR ) == sizeof( VkAccelerationStructureBuildGeometryInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureBuildGeometryInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR ) == sizeof( VkAccelerationStructureGeometryAabbsDataKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryAabbsDataKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureInstanceKHR ) == sizeof( VkAccelerationStructureInstanceKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureInstanceKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR ) == + sizeof( VkAccelerationStructureGeometryInstancesDataKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryInstancesDataKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR ) == sizeof( VkAccelerationStructureGeometryDataKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryDataKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR ) == sizeof( VkAccelerationStructureGeometryKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR ) == sizeof( VkAccelerationStructureCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureKHR ) == sizeof( VkWriteDescriptorSetAccelerationStructureKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "WriteDescriptorSetAccelerationStructureKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructureFeaturesKHR ) == + sizeof( VkPhysicalDeviceAccelerationStructureFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceAccelerationStructureFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAccelerationStructurePropertiesKHR ) == + sizeof( VkPhysicalDeviceAccelerationStructurePropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceAccelerationStructurePropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR ) == sizeof( VkAccelerationStructureDeviceAddressInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureDeviceAddressInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR ) == sizeof( VkAccelerationStructureVersionInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureVersionInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR ) == sizeof( VkCopyAccelerationStructureToMemoryInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyAccelerationStructureToMemoryInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR ) == sizeof( VkCopyMemoryToAccelerationStructureInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyMemoryToAccelerationStructureInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR ) == sizeof( VkCopyAccelerationStructureInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyAccelerationStructureInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR ) == sizeof( VkAccelerationStructureBuildSizesInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureBuildSizesInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_ray_tracing_pipeline === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR ) == sizeof( VkRayTracingShaderGroupCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RayTracingShaderGroupCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR ) == sizeof( VkRayTracingPipelineCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RayTracingPipelineCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelineFeaturesKHR ) == + sizeof( VkPhysicalDeviceRayTracingPipelineFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingPipelineFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPipelinePropertiesKHR ) == + sizeof( VkPhysicalDeviceRayTracingPipelinePropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingPipelinePropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR ) == sizeof( VkStridedDeviceAddressRegionKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "StridedDeviceAddressRegionKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommandKHR ) == sizeof( VkTraceRaysIndirectCommandKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TraceRaysIndirectCommandKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR ) == sizeof( VkRayTracingPipelineInterfaceCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RayTracingPipelineInterfaceCreateInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_ray_query === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayQueryFeaturesKHR ) == sizeof( VkPhysicalDeviceRayQueryFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayQueryFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_framebuffer_mixed_samples === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateInfoNV ) == + sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCoverageModulationStateCreateInfoNV is not nothrow_move_constructible!" ); + +//=== VK_NV_shader_sm_builtins === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsPropertiesNV ) == sizeof( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderSMBuiltinsPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSMBuiltinsFeaturesNV ) == sizeof( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderSMBuiltinsFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_image_drm_format_modifier === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesListEXT ) == sizeof( VkDrmFormatModifierPropertiesListEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrmFormatModifierPropertiesListEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT ) == sizeof( VkDrmFormatModifierPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrmFormatModifierPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageDrmFormatModifierInfoEXT ) == + sizeof( VkPhysicalDeviceImageDrmFormatModifierInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageDrmFormatModifierInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierListCreateInfoEXT ) == sizeof( VkImageDrmFormatModifierListCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageDrmFormatModifierListCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierExplicitCreateInfoEXT ) == + sizeof( VkImageDrmFormatModifierExplicitCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageDrmFormatModifierExplicitCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT ) == sizeof( VkImageDrmFormatModifierPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageDrmFormatModifierPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesList2EXT ) == sizeof( VkDrmFormatModifierPropertiesList2EXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrmFormatModifierPropertiesList2EXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrmFormatModifierProperties2EXT ) == sizeof( VkDrmFormatModifierProperties2EXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrmFormatModifierProperties2EXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_validation_cache === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "ValidationCacheEXT is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ValidationCacheEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ValidationCacheCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderModuleValidationCacheCreateInfoEXT is not nothrow_move_constructible!" ); + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) +//=== VK_KHR_portability_subset === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetFeaturesKHR ) == sizeof( VkPhysicalDevicePortabilitySubsetFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePortabilitySubsetFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePortabilitySubsetPropertiesKHR ) == + sizeof( VkPhysicalDevicePortabilitySubsetPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePortabilitySubsetPropertiesKHR is not nothrow_move_constructible!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +//=== VK_NV_shading_rate_image === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV ) == sizeof( VkShadingRatePaletteNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShadingRatePaletteNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportShadingRateImageStateCreateInfoNV ) == + sizeof( VkPipelineViewportShadingRateImageStateCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineViewportShadingRateImageStateCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImageFeaturesNV ) == sizeof( VkPhysicalDeviceShadingRateImageFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShadingRateImageFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShadingRateImagePropertiesNV ) == sizeof( VkPhysicalDeviceShadingRateImagePropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShadingRateImagePropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV ) == sizeof( VkCoarseSampleLocationNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CoarseSampleLocationNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV ) == sizeof( VkCoarseSampleOrderCustomNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CoarseSampleOrderCustomNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportCoarseSampleOrderStateCreateInfoNV ) == + sizeof( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineViewportCoarseSampleOrderStateCreateInfoNV is not nothrow_move_constructible!" ); + +//=== VK_NV_ray_tracing === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureNV ) == sizeof( VkAccelerationStructureNV ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "AccelerationStructureNV is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV ) == sizeof( VkRayTracingShaderGroupCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RayTracingShaderGroupCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV ) == sizeof( VkRayTracingPipelineCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RayTracingPipelineCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV ) == sizeof( VkGeometryTrianglesNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeometryTrianglesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryAABBNV ) == sizeof( VkGeometryAABBNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeometryAABBNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryDataNV ) == sizeof( VkGeometryDataNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeometryDataNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeometryNV ) == sizeof( VkGeometryNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "GeometryNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV ) == sizeof( VkAccelerationStructureInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV ) == sizeof( VkAccelerationStructureCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV ) == sizeof( VkBindAccelerationStructureMemoryInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindAccelerationStructureMemoryInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetAccelerationStructureNV ) == sizeof( VkWriteDescriptorSetAccelerationStructureNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "WriteDescriptorSetAccelerationStructureNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV ) == + sizeof( VkAccelerationStructureMemoryRequirementsInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureMemoryRequirementsInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPropertiesNV ) == sizeof( VkPhysicalDeviceRayTracingPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingPropertiesNV is not nothrow_move_constructible!" ); + +//=== VK_NV_representative_fragment_test === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) == + sizeof( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRepresentativeFragmentTestFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRepresentativeFragmentTestStateCreateInfoNV ) == + sizeof( VkPipelineRepresentativeFragmentTestStateCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineRepresentativeFragmentTestStateCreateInfoNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_filter_cubic === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewImageFormatInfoEXT ) == sizeof( VkPhysicalDeviceImageViewImageFormatInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageViewImageFormatInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FilterCubicImageViewImageFormatPropertiesEXT ) == + sizeof( VkFilterCubicImageViewImageFormatPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FilterCubicImageViewImageFormatPropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_QCOM_cooperative_matrix_conversion === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM ) == + sizeof( VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM is not nothrow_move_constructible!" ); + +//=== VK_EXT_external_memory_host === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryHostPointerInfoEXT ) == sizeof( VkImportMemoryHostPointerInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMemoryHostPointerInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT ) == sizeof( VkMemoryHostPointerPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryHostPointerPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryHostPropertiesEXT ) == + sizeof( VkPhysicalDeviceExternalMemoryHostPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalMemoryHostPropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_shader_clock === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderClockFeaturesKHR ) == sizeof( VkPhysicalDeviceShaderClockFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderClockFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_AMD_pipeline_compiler_control === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCompilerControlCreateInfoAMD ) == sizeof( VkPipelineCompilerControlCreateInfoAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCompilerControlCreateInfoAMD is not nothrow_move_constructible!" ); + +//=== VK_AMD_shader_core_properties === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesAMD ) == sizeof( VkPhysicalDeviceShaderCorePropertiesAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderCorePropertiesAMD is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_decode_h265 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265ProfileInfoKHR ) == sizeof( VkVideoDecodeH265ProfileInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH265ProfileInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265CapabilitiesKHR ) == sizeof( VkVideoDecodeH265CapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH265CapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersCreateInfoKHR ) == + sizeof( VkVideoDecodeH265SessionParametersCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH265SessionParametersCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265SessionParametersAddInfoKHR ) == sizeof( VkVideoDecodeH265SessionParametersAddInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH265SessionParametersAddInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265PictureInfoKHR ) == sizeof( VkVideoDecodeH265PictureInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH265PictureInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265DpbSlotInfoKHR ) == sizeof( VkVideoDecodeH265DpbSlotInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH265DpbSlotInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_AMD_memory_overallocation_behavior === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryOverallocationCreateInfoAMD ) == sizeof( VkDeviceMemoryOverallocationCreateInfoAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceMemoryOverallocationCreateInfoAMD is not nothrow_move_constructible!" ); + +//=== VK_EXT_vertex_attribute_divisor === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) == + sizeof( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVertexAttributeDivisorPropertiesEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_GGP ) +//=== VK_GGP_frame_token === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentFrameTokenGGP ) == sizeof( VkPresentFrameTokenGGP ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentFrameTokenGGP is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_GGP*/ + +//=== VK_NV_mesh_shader === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesNV ) == sizeof( VkPhysicalDeviceMeshShaderFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMeshShaderFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesNV ) == sizeof( VkPhysicalDeviceMeshShaderPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMeshShaderPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandNV ) == sizeof( VkDrawMeshTasksIndirectCommandNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrawMeshTasksIndirectCommandNV is not nothrow_move_constructible!" ); + +//=== VK_NV_shader_image_footprint === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageFootprintFeaturesNV ) == + sizeof( VkPhysicalDeviceShaderImageFootprintFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderImageFootprintFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_NV_scissor_exclusive === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportExclusiveScissorStateCreateInfoNV ) == + sizeof( VkPipelineViewportExclusiveScissorStateCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineViewportExclusiveScissorStateCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExclusiveScissorFeaturesNV ) == sizeof( VkPhysicalDeviceExclusiveScissorFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExclusiveScissorFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_NV_device_diagnostic_checkpoints === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointPropertiesNV ) == sizeof( VkQueueFamilyCheckpointPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyCheckpointPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CheckpointDataNV ) == sizeof( VkCheckpointDataNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CheckpointDataNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyCheckpointProperties2NV ) == sizeof( VkQueueFamilyCheckpointProperties2NV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyCheckpointProperties2NV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CheckpointData2NV ) == sizeof( VkCheckpointData2NV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CheckpointData2NV is not nothrow_move_constructible!" ); + +//=== VK_EXT_present_timing === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentTimingFeaturesEXT ) == sizeof( VkPhysicalDevicePresentTimingFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePresentTimingFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentTimingSurfaceCapabilitiesEXT ) == sizeof( VkPresentTimingSurfaceCapabilitiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentTimingSurfaceCapabilitiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainCalibratedTimestampInfoEXT ) == sizeof( VkSwapchainCalibratedTimestampInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainCalibratedTimestampInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainTimingPropertiesEXT ) == sizeof( VkSwapchainTimingPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainTimingPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainTimeDomainPropertiesEXT ) == sizeof( VkSwapchainTimeDomainPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainTimeDomainPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PastPresentationTimingInfoEXT ) == sizeof( VkPastPresentationTimingInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PastPresentationTimingInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PastPresentationTimingPropertiesEXT ) == sizeof( VkPastPresentationTimingPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PastPresentationTimingPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PastPresentationTimingEXT ) == sizeof( VkPastPresentationTimingEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PastPresentationTimingEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentTimingsInfoEXT ) == sizeof( VkPresentTimingsInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentTimingsInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentTimingInfoEXT ) == sizeof( VkPresentTimingInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentTimingInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentStageTimeEXT ) == sizeof( VkPresentStageTimeEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentStageTimeEXT is not nothrow_move_constructible!" ); + +//=== VK_INTEL_shader_integer_functions2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ) == + sizeof( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL is not nothrow_move_constructible!" ); + +//=== VK_INTEL_performance_query === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL ) == sizeof( VkPerformanceConfigurationINTEL ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "PerformanceConfigurationINTEL is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceConfigurationINTEL is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL ) == sizeof( VkPerformanceValueDataINTEL ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceValueDataINTEL is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceValueINTEL ) == sizeof( VkPerformanceValueINTEL ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceValueINTEL is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL ) == sizeof( VkInitializePerformanceApiInfoINTEL ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "InitializePerformanceApiInfoINTEL is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPoolPerformanceQueryCreateInfoINTEL ) == sizeof( VkQueryPoolPerformanceQueryCreateInfoINTEL ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueryPoolPerformanceQueryCreateInfoINTEL is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL ) == sizeof( VkPerformanceMarkerInfoINTEL ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceMarkerInfoINTEL is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL ) == sizeof( VkPerformanceStreamMarkerInfoINTEL ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceStreamMarkerInfoINTEL is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL ) == sizeof( VkPerformanceOverrideInfoINTEL ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceOverrideInfoINTEL is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL ) == sizeof( VkPerformanceConfigurationAcquireInfoINTEL ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceConfigurationAcquireInfoINTEL is not nothrow_move_constructible!" ); + +//=== VK_EXT_pci_bus_info === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePCIBusInfoPropertiesEXT ) == sizeof( VkPhysicalDevicePCIBusInfoPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePCIBusInfoPropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_AMD_display_native_hdr === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayNativeHdrSurfaceCapabilitiesAMD ) == sizeof( VkDisplayNativeHdrSurfaceCapabilitiesAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayNativeHdrSurfaceCapabilitiesAMD is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainDisplayNativeHdrCreateInfoAMD ) == sizeof( VkSwapchainDisplayNativeHdrCreateInfoAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainDisplayNativeHdrCreateInfoAMD is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_FUCHSIA ) +//=== VK_FUCHSIA_imagepipe_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA ) == sizeof( VkImagePipeSurfaceCreateInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImagePipeSurfaceCreateInfoFUCHSIA is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) +//=== VK_EXT_metal_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT ) == sizeof( VkMetalSurfaceCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MetalSurfaceCreateInfoEXT is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +//=== VK_EXT_fragment_density_map === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapFeaturesEXT ) == + sizeof( VkPhysicalDeviceFragmentDensityMapFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMapFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapPropertiesEXT ) == + sizeof( VkPhysicalDeviceFragmentDensityMapPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMapPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapCreateInfoEXT ) == sizeof( VkRenderPassFragmentDensityMapCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassFragmentDensityMapCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingFragmentDensityMapAttachmentInfoEXT ) == + sizeof( VkRenderingFragmentDensityMapAttachmentInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderingFragmentDensityMapAttachmentInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_fragment_shading_rate === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FragmentShadingRateAttachmentInfoKHR ) == sizeof( VkFragmentShadingRateAttachmentInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FragmentShadingRateAttachmentInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateStateCreateInfoKHR ) == + sizeof( VkPipelineFragmentShadingRateStateCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineFragmentShadingRateStateCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateFeaturesKHR ) == + sizeof( VkPhysicalDeviceFragmentShadingRateFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShadingRateFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRatePropertiesKHR ) == + sizeof( VkPhysicalDeviceFragmentShadingRatePropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShadingRatePropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR ) == sizeof( VkPhysicalDeviceFragmentShadingRateKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShadingRateKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingFragmentShadingRateAttachmentInfoKHR ) == + sizeof( VkRenderingFragmentShadingRateAttachmentInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderingFragmentShadingRateAttachmentInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_AMD_shader_core_properties2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreProperties2AMD ) == sizeof( VkPhysicalDeviceShaderCoreProperties2AMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderCoreProperties2AMD is not nothrow_move_constructible!" ); + +//=== VK_AMD_device_coherent_memory === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCoherentMemoryFeaturesAMD ) == sizeof( VkPhysicalDeviceCoherentMemoryFeaturesAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCoherentMemoryFeaturesAMD is not nothrow_move_constructible!" ); + +//=== VK_KHR_shader_constant_data === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderConstantDataFeaturesKHR ) == + sizeof( VkPhysicalDeviceShaderConstantDataFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderConstantDataFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_shader_abort === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAbortFeaturesKHR ) == sizeof( VkPhysicalDeviceShaderAbortFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderAbortFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceFaultShaderAbortMessageInfoKHR ) == sizeof( VkDeviceFaultShaderAbortMessageInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceFaultShaderAbortMessageInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAbortPropertiesKHR ) == sizeof( VkPhysicalDeviceShaderAbortPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderAbortPropertiesKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_image_atomic_int64 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderImageAtomicInt64FeaturesEXT ) == + sizeof( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderImageAtomicInt64FeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_shader_quad_control === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderQuadControlFeaturesKHR ) == sizeof( VkPhysicalDeviceShaderQuadControlFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderQuadControlFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_memory_budget === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryBudgetPropertiesEXT ) == sizeof( VkPhysicalDeviceMemoryBudgetPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMemoryBudgetPropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_memory_priority === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryPriorityFeaturesEXT ) == sizeof( VkPhysicalDeviceMemoryPriorityFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMemoryPriorityFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryPriorityAllocateInfoEXT ) == sizeof( VkMemoryPriorityAllocateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryPriorityAllocateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_surface_protected_capabilities === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceProtectedCapabilitiesKHR ) == sizeof( VkSurfaceProtectedCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceProtectedCapabilitiesKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_dedicated_allocation_image_aliasing === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) == + sizeof( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_buffer_device_address === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBufferDeviceAddressFeaturesEXT ) == + sizeof( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceBufferDeviceAddressFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferDeviceAddressCreateInfoEXT ) == sizeof( VkBufferDeviceAddressCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferDeviceAddressCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_validation_features === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ValidationFeaturesEXT ) == sizeof( VkValidationFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ValidationFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_present_wait === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWaitFeaturesKHR ) == sizeof( VkPhysicalDevicePresentWaitFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePresentWaitFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_cooperative_matrix === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV ) == sizeof( VkCooperativeMatrixPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CooperativeMatrixPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesNV ) == sizeof( VkPhysicalDeviceCooperativeMatrixFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeMatrixFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesNV ) == + sizeof( VkPhysicalDeviceCooperativeMatrixPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeMatrixPropertiesNV is not nothrow_move_constructible!" ); + +//=== VK_NV_coverage_reduction_mode === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCoverageReductionModeFeaturesNV ) == + sizeof( VkPhysicalDeviceCoverageReductionModeFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCoverageReductionModeFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateInfoNV ) == sizeof( VkPipelineCoverageReductionStateCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCoverageReductionStateCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV ) == sizeof( VkFramebufferMixedSamplesCombinationNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FramebufferMixedSamplesCombinationNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_fragment_shader_interlock === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderInterlockFeaturesEXT ) == + sizeof( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShaderInterlockFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_ycbcr_image_arrays === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrImageArraysFeaturesEXT ) == sizeof( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceYcbcrImageArraysFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_provoking_vertex === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexFeaturesEXT ) == sizeof( VkPhysicalDeviceProvokingVertexFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceProvokingVertexFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceProvokingVertexPropertiesEXT ) == sizeof( VkPhysicalDeviceProvokingVertexPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceProvokingVertexPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineRasterizationProvokingVertexStateCreateInfoEXT ) == + sizeof( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineRasterizationProvokingVertexStateCreateInfoEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) +//=== VK_EXT_full_screen_exclusive === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveInfoEXT ) == sizeof( VkSurfaceFullScreenExclusiveInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceFullScreenExclusiveInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesFullScreenExclusiveEXT ) == sizeof( VkSurfaceCapabilitiesFullScreenExclusiveEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCapabilitiesFullScreenExclusiveEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceFullScreenExclusiveWin32InfoEXT ) == sizeof( VkSurfaceFullScreenExclusiveWin32InfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceFullScreenExclusiveWin32InfoEXT is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +//=== VK_EXT_headless_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT ) == sizeof( VkHeadlessSurfaceCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "HeadlessSurfaceCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_atomic_float === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloatFeaturesEXT ) == sizeof( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderAtomicFloatFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_extended_dynamic_state === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicStateFeaturesEXT ) == + sizeof( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExtendedDynamicStateFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_deferred_host_operations === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeferredOperationKHR ) == sizeof( VkDeferredOperationKHR ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "DeferredOperationKHR is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeferredOperationKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_pipeline_executable_properties === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineExecutablePropertiesFeaturesKHR ) == + sizeof( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineExecutablePropertiesFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineInfoKHR ) == sizeof( VkPipelineInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR ) == sizeof( VkPipelineExecutablePropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineExecutablePropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR ) == sizeof( VkPipelineExecutableInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineExecutableInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR ) == sizeof( VkPipelineExecutableStatisticValueKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineExecutableStatisticValueKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR ) == sizeof( VkPipelineExecutableStatisticKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineExecutableStatisticKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR ) == + sizeof( VkPipelineExecutableInternalRepresentationKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineExecutableInternalRepresentationKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_map_memory_placed === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedFeaturesEXT ) == sizeof( VkPhysicalDeviceMapMemoryPlacedFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMapMemoryPlacedFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMapMemoryPlacedPropertiesEXT ) == sizeof( VkPhysicalDeviceMapMemoryPlacedPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMapMemoryPlacedPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryMapPlacedInfoEXT ) == sizeof( VkMemoryMapPlacedInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryMapPlacedInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_atomic_float2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat2FeaturesEXT ) == + sizeof( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderAtomicFloat2FeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_NV_device_generated_commands === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV ) == sizeof( VkIndirectCommandsLayoutNV ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "IndirectCommandsLayoutNV is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsLayoutNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesNV ) == + sizeof( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDeviceGeneratedCommandsPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesNV ) == + sizeof( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDeviceGeneratedCommandsFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV ) == sizeof( VkGraphicsShaderGroupCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GraphicsShaderGroupCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GraphicsPipelineShaderGroupsCreateInfoNV ) == sizeof( VkGraphicsPipelineShaderGroupsCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GraphicsPipelineShaderGroupsCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindShaderGroupIndirectCommandNV ) == sizeof( VkBindShaderGroupIndirectCommandNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindShaderGroupIndirectCommandNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandNV ) == sizeof( VkBindIndexBufferIndirectCommandNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindIndexBufferIndirectCommandNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandNV ) == sizeof( VkBindVertexBufferIndirectCommandNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindVertexBufferIndirectCommandNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SetStateFlagsIndirectCommandNV ) == sizeof( VkSetStateFlagsIndirectCommandNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SetStateFlagsIndirectCommandNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV ) == sizeof( VkIndirectCommandsStreamNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsStreamNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV ) == sizeof( VkIndirectCommandsLayoutTokenNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsLayoutTokenNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV ) == sizeof( VkIndirectCommandsLayoutCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsLayoutCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV ) == sizeof( VkGeneratedCommandsInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeneratedCommandsInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV ) == sizeof( VkGeneratedCommandsMemoryRequirementsInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeneratedCommandsMemoryRequirementsInfoNV is not nothrow_move_constructible!" ); + +//=== VK_NV_inherited_viewport_scissor === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInheritedViewportScissorFeaturesNV ) == + sizeof( VkPhysicalDeviceInheritedViewportScissorFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceInheritedViewportScissorFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceViewportScissorInfoNV ) == + sizeof( VkCommandBufferInheritanceViewportScissorInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferInheritanceViewportScissorInfoNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_texel_buffer_alignment === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTexelBufferAlignmentFeaturesEXT ) == + sizeof( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTexelBufferAlignmentFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_QCOM_render_pass_transform === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassTransformBeginInfoQCOM ) == sizeof( VkRenderPassTransformBeginInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassTransformBeginInfoQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CommandBufferInheritanceRenderPassTransformInfoQCOM ) == + sizeof( VkCommandBufferInheritanceRenderPassTransformInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CommandBufferInheritanceRenderPassTransformInfoQCOM is not nothrow_move_constructible!" ); + +//=== VK_EXT_depth_bias_control === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthBiasControlFeaturesEXT ) == sizeof( VkPhysicalDeviceDepthBiasControlFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDepthBiasControlFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DepthBiasInfoEXT ) == sizeof( VkDepthBiasInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DepthBiasInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DepthBiasRepresentationInfoEXT ) == sizeof( VkDepthBiasRepresentationInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DepthBiasRepresentationInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_device_memory_report === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceMemoryReportFeaturesEXT ) == + sizeof( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDeviceMemoryReportFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceDeviceMemoryReportCreateInfoEXT ) == sizeof( VkDeviceDeviceMemoryReportCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceDeviceMemoryReportCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryReportCallbackDataEXT ) == sizeof( VkDeviceMemoryReportCallbackDataEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceMemoryReportCallbackDataEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_custom_border_color === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerCustomBorderColorCreateInfoEXT ) == sizeof( VkSamplerCustomBorderColorCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerCustomBorderColorCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorPropertiesEXT ) == + sizeof( VkPhysicalDeviceCustomBorderColorPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCustomBorderColorPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomBorderColorFeaturesEXT ) == sizeof( VkPhysicalDeviceCustomBorderColorFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCustomBorderColorFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_texture_compression_astc_3d === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTextureCompressionASTC3DFeaturesEXT ) == + sizeof( VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTextureCompressionASTC3DFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_pipeline_library === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR ) == sizeof( VkPipelineLibraryCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineLibraryCreateInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_present_barrier === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentBarrierFeaturesNV ) == sizeof( VkPhysicalDevicePresentBarrierFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePresentBarrierFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentBarrierNV ) == sizeof( VkSurfaceCapabilitiesPresentBarrierNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCapabilitiesPresentBarrierNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainPresentBarrierCreateInfoNV ) == sizeof( VkSwapchainPresentBarrierCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainPresentBarrierCreateInfoNV is not nothrow_move_constructible!" ); + +//=== VK_KHR_present_id === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentIdKHR ) == sizeof( VkPresentIdKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "PresentIdKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentIdFeaturesKHR ) == sizeof( VkPhysicalDevicePresentIdFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePresentIdFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_encode_queue === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeInfoKHR ) == sizeof( VkVideoEncodeInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeCapabilitiesKHR ) == sizeof( VkVideoEncodeCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryPoolVideoEncodeFeedbackCreateInfoKHR ) == sizeof( VkQueryPoolVideoEncodeFeedbackCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueryPoolVideoEncodeFeedbackCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeUsageInfoKHR ) == sizeof( VkVideoEncodeUsageInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeUsageInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlInfoKHR ) == sizeof( VkVideoEncodeRateControlInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeRateControlInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeRateControlLayerInfoKHR ) == sizeof( VkVideoEncodeRateControlLayerInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeRateControlLayerInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQualityLevelInfoKHR ) == + sizeof( VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVideoEncodeQualityLevelInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelPropertiesKHR ) == sizeof( VkVideoEncodeQualityLevelPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeQualityLevelPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeQualityLevelInfoKHR ) == sizeof( VkVideoEncodeQualityLevelInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeQualityLevelInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersGetInfoKHR ) == sizeof( VkVideoEncodeSessionParametersGetInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeSessionParametersGetInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeSessionParametersFeedbackInfoKHR ) == + sizeof( VkVideoEncodeSessionParametersFeedbackInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeSessionParametersFeedbackInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_device_diagnostics_config === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDiagnosticsConfigFeaturesNV ) == sizeof( VkPhysicalDeviceDiagnosticsConfigFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDiagnosticsConfigFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigCreateInfoNV ) == sizeof( VkDeviceDiagnosticsConfigCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceDiagnosticsConfigCreateInfoNV is not nothrow_move_constructible!" ); + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) +//=== VK_NV_cuda_kernel_launch === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CudaModuleNV ) == sizeof( VkCudaModuleNV ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "CudaModuleNV is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "CudaModuleNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CudaFunctionNV ) == sizeof( VkCudaFunctionNV ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "CudaFunctionNV is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CudaFunctionNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CudaModuleCreateInfoNV ) == sizeof( VkCudaModuleCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CudaModuleCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CudaFunctionCreateInfoNV ) == sizeof( VkCudaFunctionCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CudaFunctionCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CudaLaunchInfoNV ) == sizeof( VkCudaLaunchInfoNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CudaLaunchInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchFeaturesNV ) == sizeof( VkPhysicalDeviceCudaKernelLaunchFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCudaKernelLaunchFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCudaKernelLaunchPropertiesNV ) == sizeof( VkPhysicalDeviceCudaKernelLaunchPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCudaKernelLaunchPropertiesNV is not nothrow_move_constructible!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +//=== VK_QCOM_tile_shading === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingFeaturesQCOM ) == sizeof( VkPhysicalDeviceTileShadingFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTileShadingFeaturesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileShadingPropertiesQCOM ) == sizeof( VkPhysicalDeviceTileShadingPropertiesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTileShadingPropertiesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassTileShadingCreateInfoQCOM ) == sizeof( VkRenderPassTileShadingCreateInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassTileShadingCreateInfoQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerTileBeginInfoQCOM ) == sizeof( VkPerTileBeginInfoQCOM ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerTileBeginInfoQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerTileEndInfoQCOM ) == sizeof( VkPerTileEndInfoQCOM ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerTileEndInfoQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DispatchTileInfoQCOM ) == sizeof( VkDispatchTileInfoQCOM ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DispatchTileInfoQCOM is not nothrow_move_constructible!" ); + +//=== VK_NV_low_latency === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueryLowLatencySupportNV ) == sizeof( VkQueryLowLatencySupportNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueryLowLatencySupportNV is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_METAL_EXT ) +//=== VK_EXT_metal_objects === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMetalObjectCreateInfoEXT ) == sizeof( VkExportMetalObjectCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMetalObjectCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMetalObjectsInfoEXT ) == sizeof( VkExportMetalObjectsInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMetalObjectsInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMetalDeviceInfoEXT ) == sizeof( VkExportMetalDeviceInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMetalDeviceInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMetalCommandQueueInfoEXT ) == sizeof( VkExportMetalCommandQueueInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMetalCommandQueueInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMetalBufferInfoEXT ) == sizeof( VkExportMetalBufferInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMetalBufferInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMetalBufferInfoEXT ) == sizeof( VkImportMetalBufferInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMetalBufferInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMetalTextureInfoEXT ) == sizeof( VkExportMetalTextureInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMetalTextureInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMetalTextureInfoEXT ) == sizeof( VkImportMetalTextureInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMetalTextureInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMetalIOSurfaceInfoEXT ) == sizeof( VkExportMetalIOSurfaceInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMetalIOSurfaceInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMetalIOSurfaceInfoEXT ) == sizeof( VkImportMetalIOSurfaceInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMetalIOSurfaceInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExportMetalSharedEventInfoEXT ) == sizeof( VkExportMetalSharedEventInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExportMetalSharedEventInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMetalSharedEventInfoEXT ) == sizeof( VkImportMetalSharedEventInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMetalSharedEventInfoEXT is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +//=== VK_EXT_descriptor_buffer === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferPropertiesEXT ) == + sizeof( VkPhysicalDeviceDescriptorBufferPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorBufferPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT ) == + sizeof( VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferFeaturesEXT ) == sizeof( VkPhysicalDeviceDescriptorBufferFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorBufferFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorAddressInfoEXT ) == sizeof( VkDescriptorAddressInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorAddressInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorBufferBindingInfoEXT ) == sizeof( VkDescriptorBufferBindingInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorBufferBindingInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorBufferBindingPushDescriptorBufferHandleEXT ) == + sizeof( VkDescriptorBufferBindingPushDescriptorBufferHandleEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorBufferBindingPushDescriptorBufferHandleEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorDataEXT ) == sizeof( VkDescriptorDataEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorDataEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorGetInfoEXT ) == sizeof( VkDescriptorGetInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorGetInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCaptureDescriptorDataInfoEXT ) == sizeof( VkBufferCaptureDescriptorDataInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCaptureDescriptorDataInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCaptureDescriptorDataInfoEXT ) == sizeof( VkImageCaptureDescriptorDataInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageCaptureDescriptorDataInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewCaptureDescriptorDataInfoEXT ) == sizeof( VkImageViewCaptureDescriptorDataInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewCaptureDescriptorDataInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerCaptureDescriptorDataInfoEXT ) == sizeof( VkSamplerCaptureDescriptorDataInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerCaptureDescriptorDataInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::OpaqueCaptureDescriptorDataCreateInfoEXT ) == sizeof( VkOpaqueCaptureDescriptorDataCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "OpaqueCaptureDescriptorDataCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureCaptureDescriptorDataInfoEXT ) == + sizeof( VkAccelerationStructureCaptureDescriptorDataInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureCaptureDescriptorDataInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_device_address_commands === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceAddressRangeKHR ) == sizeof( VkDeviceAddressRangeKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceAddressRangeKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StridedDeviceAddressRangeKHR ) == sizeof( VkStridedDeviceAddressRangeKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "StridedDeviceAddressRangeKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryCopyKHR ) == sizeof( VkDeviceMemoryCopyKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceMemoryCopyKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyDeviceMemoryInfoKHR ) == sizeof( VkCopyDeviceMemoryInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyDeviceMemoryInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemoryImageCopyKHR ) == sizeof( VkDeviceMemoryImageCopyKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceMemoryImageCopyKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyDeviceMemoryImageInfoKHR ) == sizeof( VkCopyDeviceMemoryImageInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyDeviceMemoryImageInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryRangeBarriersInfoKHR ) == sizeof( VkMemoryRangeBarriersInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryRangeBarriersInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryRangeBarrierKHR ) == sizeof( VkMemoryRangeBarrierKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryRangeBarrierKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceAddressCommandsFeaturesKHR ) == + sizeof( VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDeviceAddressCommandsFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindIndexBuffer3InfoKHR ) == sizeof( VkBindIndexBuffer3InfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindIndexBuffer3InfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindVertexBuffer3InfoKHR ) == sizeof( VkBindVertexBuffer3InfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindVertexBuffer3InfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawIndirect2InfoKHR ) == sizeof( VkDrawIndirect2InfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrawIndirect2InfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawIndirectCount2InfoKHR ) == sizeof( VkDrawIndirectCount2InfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrawIndirectCount2InfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DispatchIndirect2InfoKHR ) == sizeof( VkDispatchIndirect2InfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DispatchIndirect2InfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfo2EXT ) == sizeof( VkConditionalRenderingBeginInfo2EXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ConditionalRenderingBeginInfo2EXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindTransformFeedbackBuffer2InfoEXT ) == sizeof( VkBindTransformFeedbackBuffer2InfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindTransformFeedbackBuffer2InfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryMarkerInfoAMD ) == sizeof( VkMemoryMarkerInfoAMD ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryMarkerInfoAMD is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfo2KHR ) == sizeof( VkAccelerationStructureCreateInfo2KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureCreateInfo2KHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_graphics_pipeline_library === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT ) == + sizeof( VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT ) == + sizeof( VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GraphicsPipelineLibraryCreateInfoEXT ) == sizeof( VkGraphicsPipelineLibraryCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GraphicsPipelineLibraryCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_AMD_shader_early_and_late_fragment_tests === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD ) == + sizeof( VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD is not nothrow_move_constructible!" ); + +//=== VK_KHR_fragment_shader_barycentric === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricFeaturesKHR ) == + sizeof( VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShaderBarycentricFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShaderBarycentricPropertiesKHR ) == + sizeof( VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShaderBarycentricPropertiesKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_shader_subgroup_uniform_control_flow === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR ) == + sizeof( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_fragment_shading_rate_enums === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsFeaturesNV ) == + sizeof( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShadingRateEnumsFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateEnumsPropertiesNV ) == + sizeof( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentShadingRateEnumsPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineFragmentShadingRateEnumStateCreateInfoNV ) == + sizeof( VkPipelineFragmentShadingRateEnumStateCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineFragmentShadingRateEnumStateCreateInfoNV is not nothrow_move_constructible!" ); + +//=== VK_NV_ray_tracing_motion_blur === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryMotionTrianglesDataNV ) == + sizeof( VkAccelerationStructureGeometryMotionTrianglesDataNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryMotionTrianglesDataNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInfoNV ) == sizeof( VkAccelerationStructureMotionInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureMotionInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceNV ) == sizeof( VkAccelerationStructureMotionInstanceNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureMotionInstanceNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMotionInstanceDataNV ) == sizeof( VkAccelerationStructureMotionInstanceDataNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureMotionInstanceDataNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureMatrixMotionInstanceNV ) == + sizeof( VkAccelerationStructureMatrixMotionInstanceNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureMatrixMotionInstanceNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureSRTMotionInstanceNV ) == sizeof( VkAccelerationStructureSRTMotionInstanceNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureSRTMotionInstanceNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SRTDataNV ) == sizeof( VkSRTDataNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "SRTDataNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMotionBlurFeaturesNV ) == + sizeof( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingMotionBlurFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_mesh_shader === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderFeaturesEXT ) == sizeof( VkPhysicalDeviceMeshShaderFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMeshShaderFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMeshShaderPropertiesEXT ) == sizeof( VkPhysicalDeviceMeshShaderPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMeshShaderPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawMeshTasksIndirectCommandEXT ) == sizeof( VkDrawMeshTasksIndirectCommandEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrawMeshTasksIndirectCommandEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_ycbcr_2plane_444_formats === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT ) == + sizeof( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_fragment_density_map2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2FeaturesEXT ) == + sizeof( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMap2FeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMap2PropertiesEXT ) == + sizeof( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMap2PropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_QCOM_rotated_copy_commands === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyCommandTransformInfoQCOM ) == sizeof( VkCopyCommandTransformInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyCommandTransformInfoQCOM is not nothrow_move_constructible!" ); + +//=== VK_KHR_workgroup_memory_explicit_layout === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR ) == + sizeof( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_image_compression_control === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlFeaturesEXT ) == + sizeof( VkPhysicalDeviceImageCompressionControlFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageCompressionControlFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCompressionControlEXT ) == sizeof( VkImageCompressionControlEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageCompressionControlEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageCompressionPropertiesEXT ) == sizeof( VkImageCompressionPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageCompressionPropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_attachment_feedback_loop_layout === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT ) == + sizeof( VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_4444_formats === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice4444FormatsFeaturesEXT ) == sizeof( VkPhysicalDevice4444FormatsFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevice4444FormatsFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_device_fault === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesEXT ) == sizeof( VkPhysicalDeviceFaultFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFaultFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceFaultCountsEXT ) == sizeof( VkDeviceFaultCountsEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceFaultCountsEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceFaultInfoEXT ) == sizeof( VkDeviceFaultInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceFaultInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_rgba10x6_formats === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRGBA10X6FormatsFeaturesEXT ) == sizeof( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRGBA10X6FormatsFeaturesEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) +//=== VK_EXT_directfb_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT ) == sizeof( VkDirectFBSurfaceCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DirectFBSurfaceCreateInfoEXT is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +//=== VK_EXT_vertex_input_dynamic_state === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexInputDynamicStateFeaturesEXT ) == + sizeof( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVertexInputDynamicStateFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputBindingDescription2EXT ) == sizeof( VkVertexInputBindingDescription2EXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VertexInputBindingDescription2EXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription2EXT ) == sizeof( VkVertexInputAttributeDescription2EXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VertexInputAttributeDescription2EXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_physical_device_drm === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDrmPropertiesEXT ) == sizeof( VkPhysicalDeviceDrmPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDrmPropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_device_address_binding_report === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAddressBindingReportFeaturesEXT ) == + sizeof( VkPhysicalDeviceAddressBindingReportFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceAddressBindingReportFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceAddressBindingCallbackDataEXT ) == sizeof( VkDeviceAddressBindingCallbackDataEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceAddressBindingCallbackDataEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_depth_clip_control === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClipControlFeaturesEXT ) == sizeof( VkPhysicalDeviceDepthClipControlFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDepthClipControlFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportDepthClipControlCreateInfoEXT ) == + sizeof( VkPipelineViewportDepthClipControlCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineViewportDepthClipControlCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_primitive_topology_list_restart === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT ) == + sizeof( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_FUCHSIA ) +//=== VK_FUCHSIA_external_memory === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryZirconHandleInfoFUCHSIA ) == sizeof( VkImportMemoryZirconHandleInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMemoryZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryZirconHandlePropertiesFUCHSIA ) == sizeof( VkMemoryZirconHandlePropertiesFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryZirconHandlePropertiesFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetZirconHandleInfoFUCHSIA ) == sizeof( VkMemoryGetZirconHandleInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryGetZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) +//=== VK_FUCHSIA_external_semaphore === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportSemaphoreZirconHandleInfoFUCHSIA ) == sizeof( VkImportSemaphoreZirconHandleInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportSemaphoreZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SemaphoreGetZirconHandleInfoFUCHSIA ) == sizeof( VkSemaphoreGetZirconHandleInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SemaphoreGetZirconHandleInfoFUCHSIA is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) +//=== VK_FUCHSIA_buffer_collection === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionFUCHSIA ) == sizeof( VkBufferCollectionFUCHSIA ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "BufferCollectionFUCHSIA is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCollectionFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionCreateInfoFUCHSIA ) == sizeof( VkBufferCollectionCreateInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCollectionCreateInfoFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryBufferCollectionFUCHSIA ) == sizeof( VkImportMemoryBufferCollectionFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMemoryBufferCollectionFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionImageCreateInfoFUCHSIA ) == sizeof( VkBufferCollectionImageCreateInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCollectionImageCreateInfoFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferConstraintsInfoFUCHSIA ) == sizeof( VkBufferConstraintsInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferConstraintsInfoFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionBufferCreateInfoFUCHSIA ) == sizeof( VkBufferCollectionBufferCreateInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCollectionBufferCreateInfoFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionPropertiesFUCHSIA ) == sizeof( VkBufferCollectionPropertiesFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCollectionPropertiesFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SysmemColorSpaceFUCHSIA ) == sizeof( VkSysmemColorSpaceFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SysmemColorSpaceFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageConstraintsInfoFUCHSIA ) == sizeof( VkImageConstraintsInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageConstraintsInfoFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageFormatConstraintsInfoFUCHSIA ) == sizeof( VkImageFormatConstraintsInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageFormatConstraintsInfoFUCHSIA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BufferCollectionConstraintsInfoFUCHSIA ) == sizeof( VkBufferCollectionConstraintsInfoFUCHSIA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BufferCollectionConstraintsInfoFUCHSIA is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +//=== VK_HUAWEI_subpass_shading === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassShadingPipelineCreateInfoHUAWEI ) == sizeof( VkSubpassShadingPipelineCreateInfoHUAWEI ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassShadingPipelineCreateInfoHUAWEI is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingFeaturesHUAWEI ) == sizeof( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubpassShadingFeaturesHUAWEI is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassShadingPropertiesHUAWEI ) == + sizeof( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubpassShadingPropertiesHUAWEI is not nothrow_move_constructible!" ); + +//=== VK_HUAWEI_invocation_mask === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInvocationMaskFeaturesHUAWEI ) == sizeof( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceInvocationMaskFeaturesHUAWEI is not nothrow_move_constructible!" ); + +//=== VK_NV_external_memory_rdma === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetRemoteAddressInfoNV ) == sizeof( VkMemoryGetRemoteAddressInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryGetRemoteAddressInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryRDMAFeaturesNV ) == sizeof( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalMemoryRDMAFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_pipeline_properties === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelinePropertiesIdentifierEXT ) == sizeof( VkPipelinePropertiesIdentifierEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelinePropertiesIdentifierEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelinePropertiesFeaturesEXT ) == + sizeof( VkPhysicalDevicePipelinePropertiesFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelinePropertiesFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_frame_boundary === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFrameBoundaryFeaturesEXT ) == sizeof( VkPhysicalDeviceFrameBoundaryFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFrameBoundaryFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FrameBoundaryEXT ) == sizeof( VkFrameBoundaryEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FrameBoundaryEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_multisampled_render_to_single_sampled === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT ) == + sizeof( VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SubpassResolvePerformanceQueryEXT ) == sizeof( VkSubpassResolvePerformanceQueryEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SubpassResolvePerformanceQueryEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultisampledRenderToSingleSampledInfoEXT ) == sizeof( VkMultisampledRenderToSingleSampledInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MultisampledRenderToSingleSampledInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_extended_dynamic_state2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState2FeaturesEXT ) == + sizeof( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExtendedDynamicState2FeaturesEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) +//=== VK_QNX_screen_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX ) == sizeof( VkScreenSurfaceCreateInfoQNX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ScreenSurfaceCreateInfoQNX is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + +//=== VK_EXT_color_write_enable === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceColorWriteEnableFeaturesEXT ) == sizeof( VkPhysicalDeviceColorWriteEnableFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceColorWriteEnableFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineColorWriteCreateInfoEXT ) == sizeof( VkPipelineColorWriteCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineColorWriteCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_primitives_generated_query === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT ) == + sizeof( VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_ray_tracing_maintenance1 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingMaintenance1FeaturesKHR ) == + sizeof( VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingMaintenance1FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TraceRaysIndirectCommand2KHR ) == sizeof( VkTraceRaysIndirectCommand2KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TraceRaysIndirectCommand2KHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_shader_untyped_pointers === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderUntypedPointersFeaturesKHR ) == + sizeof( VkPhysicalDeviceShaderUntypedPointersFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderUntypedPointersFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_VALVE_video_encode_rgb_conversion === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE ) == + sizeof( VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeRgbConversionCapabilitiesVALVE ) == sizeof( VkVideoEncodeRgbConversionCapabilitiesVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeRgbConversionCapabilitiesVALVE is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeProfileRgbConversionInfoVALVE ) == sizeof( VkVideoEncodeProfileRgbConversionInfoVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeProfileRgbConversionInfoVALVE is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeSessionRgbConversionCreateInfoVALVE ) == + sizeof( VkVideoEncodeSessionRgbConversionCreateInfoVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeSessionRgbConversionCreateInfoVALVE is not nothrow_move_constructible!" ); + +//=== VK_EXT_image_view_min_lod === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageViewMinLodFeaturesEXT ) == sizeof( VkPhysicalDeviceImageViewMinLodFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageViewMinLodFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewMinLodCreateInfoEXT ) == sizeof( VkImageViewMinLodCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewMinLodCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_multi_draw === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawFeaturesEXT ) == sizeof( VkPhysicalDeviceMultiDrawFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiDrawFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiDrawPropertiesEXT ) == sizeof( VkPhysicalDeviceMultiDrawPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiDrawPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultiDrawInfoEXT ) == sizeof( VkMultiDrawInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MultiDrawInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultiDrawIndexedInfoEXT ) == sizeof( VkMultiDrawIndexedInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MultiDrawIndexedInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_image_2d_view_of_3d === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImage2DViewOf3DFeaturesEXT ) == sizeof( VkPhysicalDeviceImage2DViewOf3DFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImage2DViewOf3DFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_tile_image === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImageFeaturesEXT ) == sizeof( VkPhysicalDeviceShaderTileImageFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderTileImageFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderTileImagePropertiesEXT ) == sizeof( VkPhysicalDeviceShaderTileImagePropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderTileImagePropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_opacity_micromap === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MicromapEXT ) == sizeof( VkMicromapEXT ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "MicromapEXT is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "MicromapEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MicromapBuildInfoEXT ) == sizeof( VkMicromapBuildInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MicromapBuildInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MicromapUsageEXT ) == sizeof( VkMicromapUsageEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MicromapUsageEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MicromapCreateInfoEXT ) == sizeof( VkMicromapCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MicromapCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapFeaturesEXT ) == sizeof( VkPhysicalDeviceOpacityMicromapFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceOpacityMicromapFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceOpacityMicromapPropertiesEXT ) == sizeof( VkPhysicalDeviceOpacityMicromapPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceOpacityMicromapPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MicromapVersionInfoEXT ) == sizeof( VkMicromapVersionInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MicromapVersionInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMicromapToMemoryInfoEXT ) == sizeof( VkCopyMicromapToMemoryInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyMicromapToMemoryInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMemoryToMicromapInfoEXT ) == sizeof( VkCopyMemoryToMicromapInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyMemoryToMicromapInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMicromapInfoEXT ) == sizeof( VkCopyMicromapInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyMicromapInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MicromapBuildSizesInfoEXT ) == sizeof( VkMicromapBuildSizesInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MicromapBuildSizesInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesOpacityMicromapEXT ) == + sizeof( VkAccelerationStructureTrianglesOpacityMicromapEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureTrianglesOpacityMicromapEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MicromapTriangleEXT ) == sizeof( VkMicromapTriangleEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MicromapTriangleEXT is not nothrow_move_constructible!" ); + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) +//=== VK_NV_displacement_micromap === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapFeaturesNV ) == + sizeof( VkPhysicalDeviceDisplacementMicromapFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDisplacementMicromapFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDisplacementMicromapPropertiesNV ) == + sizeof( VkPhysicalDeviceDisplacementMicromapPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDisplacementMicromapPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureTrianglesDisplacementMicromapNV ) == + sizeof( VkAccelerationStructureTrianglesDisplacementMicromapNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureTrianglesDisplacementMicromapNV is not nothrow_move_constructible!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +//=== VK_HUAWEI_cluster_culling_shader === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderFeaturesHUAWEI ) == + sizeof( VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceClusterCullingShaderFeaturesHUAWEI is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderPropertiesHUAWEI ) == + sizeof( VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceClusterCullingShaderPropertiesHUAWEI is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI ) == + sizeof( VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI is not nothrow_move_constructible!" ); + +//=== VK_EXT_border_color_swizzle === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceBorderColorSwizzleFeaturesEXT ) == + sizeof( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceBorderColorSwizzleFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerBorderColorComponentMappingCreateInfoEXT ) == + sizeof( VkSamplerBorderColorComponentMappingCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerBorderColorComponentMappingCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_pageable_device_local_memory === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT ) == + sizeof( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_ARM_shader_core_properties === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCorePropertiesARM ) == sizeof( VkPhysicalDeviceShaderCorePropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderCorePropertiesARM is not nothrow_move_constructible!" ); + +//=== VK_ARM_scheduling_controls === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceQueueShaderCoreControlCreateInfoARM ) == sizeof( VkDeviceQueueShaderCoreControlCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceQueueShaderCoreControlCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsFeaturesARM ) == + sizeof( VkPhysicalDeviceSchedulingControlsFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSchedulingControlsFeaturesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSchedulingControlsPropertiesARM ) == + sizeof( VkPhysicalDeviceSchedulingControlsPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSchedulingControlsPropertiesARM is not nothrow_move_constructible!" ); + +//=== VK_EXT_image_sliced_view_of_3d === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageSlicedViewOf3DFeaturesEXT ) == + sizeof( VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageSlicedViewOf3DFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewSlicedCreateInfoEXT ) == sizeof( VkImageViewSlicedCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewSlicedCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_VALVE_descriptor_set_host_mapping === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE ) == + sizeof( VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetBindingReferenceVALVE ) == sizeof( VkDescriptorSetBindingReferenceVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetBindingReferenceVALVE is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutHostMappingInfoVALVE ) == sizeof( VkDescriptorSetLayoutHostMappingInfoVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorSetLayoutHostMappingInfoVALVE is not nothrow_move_constructible!" ); + +//=== VK_EXT_non_seamless_cube_map === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceNonSeamlessCubeMapFeaturesEXT ) == + sizeof( VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceNonSeamlessCubeMapFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_ARM_render_pass_striped === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedFeaturesARM ) == sizeof( VkPhysicalDeviceRenderPassStripedFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRenderPassStripedFeaturesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRenderPassStripedPropertiesARM ) == + sizeof( VkPhysicalDeviceRenderPassStripedPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRenderPassStripedPropertiesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassStripeBeginInfoARM ) == sizeof( VkRenderPassStripeBeginInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassStripeBeginInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassStripeInfoARM ) == sizeof( VkRenderPassStripeInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassStripeInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassStripeSubmitInfoARM ) == sizeof( VkRenderPassStripeSubmitInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassStripeSubmitInfoARM is not nothrow_move_constructible!" ); + +//=== VK_NV_copy_memory_indirect === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesNV ) == sizeof( VkPhysicalDeviceCopyMemoryIndirectFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCopyMemoryIndirectFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_NV_memory_decompression === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DecompressMemoryRegionNV ) == sizeof( VkDecompressMemoryRegionNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DecompressMemoryRegionNV is not nothrow_move_constructible!" ); + +//=== VK_NV_device_generated_commands_compute === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV ) == + sizeof( VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ComputePipelineIndirectBufferInfoNV ) == sizeof( VkComputePipelineIndirectBufferInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ComputePipelineIndirectBufferInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineIndirectDeviceAddressInfoNV ) == sizeof( VkPipelineIndirectDeviceAddressInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineIndirectDeviceAddressInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindPipelineIndirectCommandNV ) == sizeof( VkBindPipelineIndirectCommandNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindPipelineIndirectCommandNV is not nothrow_move_constructible!" ); + +//=== VK_NV_ray_tracing_linear_swept_spheres === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV ) == + sizeof( VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryLinearSweptSpheresDataNV ) == + sizeof( VkAccelerationStructureGeometryLinearSweptSpheresDataNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometryLinearSweptSpheresDataNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometrySpheresDataNV ) == sizeof( VkAccelerationStructureGeometrySpheresDataNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureGeometrySpheresDataNV is not nothrow_move_constructible!" ); + +//=== VK_NV_linear_color_attachment === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLinearColorAttachmentFeaturesNV ) == + sizeof( VkPhysicalDeviceLinearColorAttachmentFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLinearColorAttachmentFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_KHR_shader_maximal_reconvergence === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR ) == + sizeof( VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_image_compression_control_swapchain === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT ) == + sizeof( VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_QCOM_image_processing === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageViewSampleWeightCreateInfoQCOM ) == sizeof( VkImageViewSampleWeightCreateInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageViewSampleWeightCreateInfoQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingFeaturesQCOM ) == sizeof( VkPhysicalDeviceImageProcessingFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageProcessingFeaturesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessingPropertiesQCOM ) == + sizeof( VkPhysicalDeviceImageProcessingPropertiesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageProcessingPropertiesQCOM is not nothrow_move_constructible!" ); + +//=== VK_EXT_nested_command_buffer === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferFeaturesEXT ) == + sizeof( VkPhysicalDeviceNestedCommandBufferFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceNestedCommandBufferFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceNestedCommandBufferPropertiesEXT ) == + sizeof( VkPhysicalDeviceNestedCommandBufferPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceNestedCommandBufferPropertiesEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_OHOS ) +//=== VK_OHOS_external_memory === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::NativeBufferUsageOHOS ) == sizeof( VkNativeBufferUsageOHOS ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "NativeBufferUsageOHOS is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::NativeBufferPropertiesOHOS ) == sizeof( VkNativeBufferPropertiesOHOS ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "NativeBufferPropertiesOHOS is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::NativeBufferFormatPropertiesOHOS ) == sizeof( VkNativeBufferFormatPropertiesOHOS ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "NativeBufferFormatPropertiesOHOS is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportNativeBufferInfoOHOS ) == sizeof( VkImportNativeBufferInfoOHOS ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportNativeBufferInfoOHOS is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetNativeBufferInfoOHOS ) == sizeof( VkMemoryGetNativeBufferInfoOHOS ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryGetNativeBufferInfoOHOS is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalFormatOHOS ) == sizeof( VkExternalFormatOHOS ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalFormatOHOS is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_OHOS*/ + +//=== VK_EXT_external_memory_acquire_unmodified === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryAcquireUnmodifiedEXT ) == sizeof( VkExternalMemoryAcquireUnmodifiedEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalMemoryAcquireUnmodifiedEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_extended_dynamic_state3 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3FeaturesEXT ) == + sizeof( VkPhysicalDeviceExtendedDynamicState3FeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExtendedDynamicState3FeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedDynamicState3PropertiesEXT ) == + sizeof( VkPhysicalDeviceExtendedDynamicState3PropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExtendedDynamicState3PropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ColorBlendEquationEXT ) == sizeof( VkColorBlendEquationEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ColorBlendEquationEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ColorBlendAdvancedEXT ) == sizeof( VkColorBlendAdvancedEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ColorBlendAdvancedEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_subpass_merge_feedback === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSubpassMergeFeedbackFeaturesEXT ) == + sizeof( VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSubpassMergeFeedbackFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassCreationControlEXT ) == sizeof( VkRenderPassCreationControlEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassCreationControlEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackInfoEXT ) == sizeof( VkRenderPassCreationFeedbackInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassCreationFeedbackInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassCreationFeedbackCreateInfoEXT ) == sizeof( VkRenderPassCreationFeedbackCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassCreationFeedbackCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackInfoEXT ) == sizeof( VkRenderPassSubpassFeedbackInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassSubpassFeedbackInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassSubpassFeedbackCreateInfoEXT ) == sizeof( VkRenderPassSubpassFeedbackCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassSubpassFeedbackCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_LUNARG_direct_driver_loading === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DirectDriverLoadingInfoLUNARG ) == sizeof( VkDirectDriverLoadingInfoLUNARG ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DirectDriverLoadingInfoLUNARG is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DirectDriverLoadingListLUNARG ) == sizeof( VkDirectDriverLoadingListLUNARG ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DirectDriverLoadingListLUNARG is not nothrow_move_constructible!" ); + +//=== VK_ARM_tensors === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorARM ) == sizeof( VkTensorARM ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "TensorARM is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "TensorARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorViewARM ) == sizeof( VkTensorViewARM ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "TensorViewARM is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "TensorViewARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorDescriptionARM ) == sizeof( VkTensorDescriptionARM ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TensorDescriptionARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorCreateInfoARM ) == sizeof( VkTensorCreateInfoARM ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TensorCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorMemoryRequirementsInfoARM ) == sizeof( VkTensorMemoryRequirementsInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TensorMemoryRequirementsInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindTensorMemoryInfoARM ) == sizeof( VkBindTensorMemoryInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindTensorMemoryInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetTensorARM ) == sizeof( VkWriteDescriptorSetTensorARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "WriteDescriptorSetTensorARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorFormatPropertiesARM ) == sizeof( VkTensorFormatPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TensorFormatPropertiesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTensorPropertiesARM ) == sizeof( VkPhysicalDeviceTensorPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTensorPropertiesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorMemoryBarrierARM ) == sizeof( VkTensorMemoryBarrierARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TensorMemoryBarrierARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorDependencyInfoARM ) == sizeof( VkTensorDependencyInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TensorDependencyInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTensorFeaturesARM ) == sizeof( VkPhysicalDeviceTensorFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTensorFeaturesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceTensorMemoryRequirementsARM ) == sizeof( VkDeviceTensorMemoryRequirementsARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceTensorMemoryRequirementsARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyTensorInfoARM ) == sizeof( VkCopyTensorInfoARM ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyTensorInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorCopyARM ) == sizeof( VkTensorCopyARM ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "TensorCopyARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryDedicatedAllocateInfoTensorARM ) == sizeof( VkMemoryDedicatedAllocateInfoTensorARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryDedicatedAllocateInfoTensorARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalTensorInfoARM ) == sizeof( VkPhysicalDeviceExternalTensorInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalTensorInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalTensorPropertiesARM ) == sizeof( VkExternalTensorPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalTensorPropertiesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalMemoryTensorCreateInfoARM ) == sizeof( VkExternalMemoryTensorCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalMemoryTensorCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferTensorFeaturesARM ) == + sizeof( VkPhysicalDeviceDescriptorBufferTensorFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorBufferTensorFeaturesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorBufferTensorPropertiesARM ) == + sizeof( VkPhysicalDeviceDescriptorBufferTensorPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorBufferTensorPropertiesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DescriptorGetTensorInfoARM ) == sizeof( VkDescriptorGetTensorInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DescriptorGetTensorInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorCaptureDescriptorDataInfoARM ) == sizeof( VkTensorCaptureDescriptorDataInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TensorCaptureDescriptorDataInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TensorViewCaptureDescriptorDataInfoARM ) == sizeof( VkTensorViewCaptureDescriptorDataInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TensorViewCaptureDescriptorDataInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::FrameBoundaryTensorsARM ) == sizeof( VkFrameBoundaryTensorsARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "FrameBoundaryTensorsARM is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_module_identifier === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierFeaturesEXT ) == + sizeof( VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderModuleIdentifierFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderModuleIdentifierPropertiesEXT ) == + sizeof( VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderModuleIdentifierPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineShaderStageModuleIdentifierCreateInfoEXT ) == + sizeof( VkPipelineShaderStageModuleIdentifierCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineShaderStageModuleIdentifierCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderModuleIdentifierEXT ) == sizeof( VkShaderModuleIdentifierEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderModuleIdentifierEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_rasterization_order_attachment_access === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT ) == + sizeof( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_NV_optical_flow === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::OpticalFlowSessionNV ) == sizeof( VkOpticalFlowSessionNV ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "OpticalFlowSessionNV is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "OpticalFlowSessionNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowFeaturesNV ) == sizeof( VkPhysicalDeviceOpticalFlowFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceOpticalFlowFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceOpticalFlowPropertiesNV ) == sizeof( VkPhysicalDeviceOpticalFlowPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceOpticalFlowPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatInfoNV ) == sizeof( VkOpticalFlowImageFormatInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "OpticalFlowImageFormatInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::OpticalFlowImageFormatPropertiesNV ) == sizeof( VkOpticalFlowImageFormatPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "OpticalFlowImageFormatPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreateInfoNV ) == sizeof( VkOpticalFlowSessionCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "OpticalFlowSessionCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::OpticalFlowSessionCreatePrivateDataInfoNV ) == sizeof( VkOpticalFlowSessionCreatePrivateDataInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "OpticalFlowSessionCreatePrivateDataInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::OpticalFlowExecuteInfoNV ) == sizeof( VkOpticalFlowExecuteInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "OpticalFlowExecuteInfoNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_legacy_dithering === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyDitheringFeaturesEXT ) == sizeof( VkPhysicalDeviceLegacyDitheringFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLegacyDitheringFeaturesEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) +//=== VK_ANDROID_external_format_resolve === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolveFeaturesANDROID ) == + sizeof( VkPhysicalDeviceExternalFormatResolveFeaturesANDROID ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalFormatResolveFeaturesANDROID is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFormatResolvePropertiesANDROID ) == + sizeof( VkPhysicalDeviceExternalFormatResolvePropertiesANDROID ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalFormatResolvePropertiesANDROID is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AndroidHardwareBufferFormatResolvePropertiesANDROID ) == + sizeof( VkAndroidHardwareBufferFormatResolvePropertiesANDROID ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AndroidHardwareBufferFormatResolvePropertiesANDROID is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +//=== VK_AMD_anti_lag === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAntiLagFeaturesAMD ) == sizeof( VkPhysicalDeviceAntiLagFeaturesAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceAntiLagFeaturesAMD is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AntiLagDataAMD ) == sizeof( VkAntiLagDataAMD ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AntiLagDataAMD is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AntiLagPresentationInfoAMD ) == sizeof( VkAntiLagPresentationInfoAMD ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AntiLagPresentationInfoAMD is not nothrow_move_constructible!" ); + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) +//=== VK_AMDX_dense_geometry_format === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDenseGeometryFormatFeaturesAMDX ) == + sizeof( VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDenseGeometryFormatFeaturesAMDX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureDenseGeometryFormatTrianglesDataAMDX ) == + sizeof( VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AccelerationStructureDenseGeometryFormatTrianglesDataAMDX is not nothrow_move_constructible!" ); +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +//=== VK_KHR_present_id2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentId2KHR ) == sizeof( VkSurfaceCapabilitiesPresentId2KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCapabilitiesPresentId2KHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentId2KHR ) == sizeof( VkPresentId2KHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "PresentId2KHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentId2FeaturesKHR ) == sizeof( VkPhysicalDevicePresentId2FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePresentId2FeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_present_wait2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesPresentWait2KHR ) == sizeof( VkSurfaceCapabilitiesPresentWait2KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCapabilitiesPresentWait2KHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentWait2FeaturesKHR ) == sizeof( VkPhysicalDevicePresentWait2FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePresentWait2FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PresentWait2InfoKHR ) == sizeof( VkPresentWait2InfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PresentWait2InfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_ray_tracing_position_fetch === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingPositionFetchFeaturesKHR ) == + sizeof( VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingPositionFetchFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_object === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderEXT ) == sizeof( VkShaderEXT ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "ShaderEXT is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, "ShaderEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectFeaturesEXT ) == sizeof( VkPhysicalDeviceShaderObjectFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderObjectFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderObjectPropertiesEXT ) == sizeof( VkPhysicalDeviceShaderObjectPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderObjectPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderCreateInfoEXT ) == sizeof( VkShaderCreateInfoEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_pipeline_binary === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineBinaryKHR ) == sizeof( VkPipelineBinaryKHR ), "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, "PipelineBinaryKHR is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineBinaryKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryFeaturesKHR ) == sizeof( VkPhysicalDevicePipelineBinaryFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineBinaryFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineBinaryPropertiesKHR ) == sizeof( VkPhysicalDevicePipelineBinaryPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineBinaryPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DevicePipelineBinaryInternalCacheControlKHR ) == + sizeof( VkDevicePipelineBinaryInternalCacheControlKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DevicePipelineBinaryInternalCacheControlKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineBinaryKeyKHR ) == sizeof( VkPipelineBinaryKeyKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineBinaryKeyKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineBinaryDataKHR ) == sizeof( VkPipelineBinaryDataKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineBinaryDataKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineBinaryKeysAndDataKHR ) == sizeof( VkPipelineBinaryKeysAndDataKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineBinaryKeysAndDataKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineBinaryCreateInfoKHR ) == sizeof( VkPipelineBinaryCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineBinaryCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineBinaryInfoKHR ) == sizeof( VkPipelineBinaryInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineBinaryInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ReleaseCapturedPipelineDataInfoKHR ) == sizeof( VkReleaseCapturedPipelineDataInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ReleaseCapturedPipelineDataInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineBinaryDataInfoKHR ) == sizeof( VkPipelineBinaryDataInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineBinaryDataInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCreateInfoKHR ) == sizeof( VkPipelineCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineBinaryHandlesInfoKHR ) == sizeof( VkPipelineBinaryHandlesInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineBinaryHandlesInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_QCOM_tile_properties === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTilePropertiesFeaturesQCOM ) == sizeof( VkPhysicalDeviceTilePropertiesFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTilePropertiesFeaturesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TilePropertiesQCOM ) == sizeof( VkTilePropertiesQCOM ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TilePropertiesQCOM is not nothrow_move_constructible!" ); + +//=== VK_SEC_amigo_profiling === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAmigoProfilingFeaturesSEC ) == sizeof( VkPhysicalDeviceAmigoProfilingFeaturesSEC ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceAmigoProfilingFeaturesSEC is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AmigoProfilingSubmitInfoSEC ) == sizeof( VkAmigoProfilingSubmitInfoSEC ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AmigoProfilingSubmitInfoSEC is not nothrow_move_constructible!" ); + +//=== VK_KHR_surface_maintenance1 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfacePresentModeKHR ) == sizeof( VkSurfacePresentModeKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfacePresentModeKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfacePresentScalingCapabilitiesKHR ) == sizeof( VkSurfacePresentScalingCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfacePresentScalingCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfacePresentModeCompatibilityKHR ) == sizeof( VkSurfacePresentModeCompatibilityKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfacePresentModeCompatibilityKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_swapchain_maintenance1 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceSwapchainMaintenance1FeaturesKHR ) == + sizeof( VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceSwapchainMaintenance1FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainPresentFenceInfoKHR ) == sizeof( VkSwapchainPresentFenceInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainPresentFenceInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainPresentModesCreateInfoKHR ) == sizeof( VkSwapchainPresentModesCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainPresentModesCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainPresentModeInfoKHR ) == sizeof( VkSwapchainPresentModeInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainPresentModeInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainPresentScalingCreateInfoKHR ) == sizeof( VkSwapchainPresentScalingCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainPresentScalingCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ReleaseSwapchainImagesInfoKHR ) == sizeof( VkReleaseSwapchainImagesInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ReleaseSwapchainImagesInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_QCOM_multiview_per_view_viewports === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM ) == + sizeof( VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM is not nothrow_move_constructible!" ); + +//=== VK_NV_ray_tracing_invocation_reorder === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesNV ) == + sizeof( VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingInvocationReorderPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesNV ) == + sizeof( VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingInvocationReorderFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_NV_cooperative_vector === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeVectorPropertiesNV ) == + sizeof( VkPhysicalDeviceCooperativeVectorPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeVectorPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeVectorFeaturesNV ) == sizeof( VkPhysicalDeviceCooperativeVectorFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeVectorFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CooperativeVectorPropertiesNV ) == sizeof( VkCooperativeVectorPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CooperativeVectorPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ConvertCooperativeVectorMatrixInfoNV ) == sizeof( VkConvertCooperativeVectorMatrixInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ConvertCooperativeVectorMatrixInfoNV is not nothrow_move_constructible!" ); + +//=== VK_NV_extended_sparse_address_space === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV ) == + sizeof( VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExtendedSparseAddressSpacePropertiesNV ) == + sizeof( VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExtendedSparseAddressSpacePropertiesNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_mutable_descriptor_type === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMutableDescriptorTypeFeaturesEXT ) == + sizeof( VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMutableDescriptorTypeFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListEXT ) == sizeof( VkMutableDescriptorTypeListEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MutableDescriptorTypeListEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MutableDescriptorTypeCreateInfoEXT ) == sizeof( VkMutableDescriptorTypeCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MutableDescriptorTypeCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_legacy_vertex_attributes === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesFeaturesEXT ) == + sizeof( VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLegacyVertexAttributesFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLegacyVertexAttributesPropertiesEXT ) == + sizeof( VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLegacyVertexAttributesPropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_layer_settings === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LayerSettingsCreateInfoEXT ) == sizeof( VkLayerSettingsCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "LayerSettingsCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LayerSettingEXT ) == sizeof( VkLayerSettingEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "LayerSettingEXT is not nothrow_move_constructible!" ); + +//=== VK_ARM_shader_core_builtins === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsFeaturesARM ) == + sizeof( VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderCoreBuiltinsFeaturesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderCoreBuiltinsPropertiesARM ) == + sizeof( VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderCoreBuiltinsPropertiesARM is not nothrow_move_constructible!" ); + +//=== VK_EXT_pipeline_library_group_handles === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT ) == + sizeof( VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_dynamic_rendering_unused_attachments === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT ) == + sizeof( VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_internally_synchronized_queues === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR ) == + sizeof( VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_low_latency2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LatencySleepModeInfoNV ) == sizeof( VkLatencySleepModeInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "LatencySleepModeInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LatencySleepInfoNV ) == sizeof( VkLatencySleepInfoNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "LatencySleepInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SetLatencyMarkerInfoNV ) == sizeof( VkSetLatencyMarkerInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SetLatencyMarkerInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GetLatencyMarkerInfoNV ) == sizeof( VkGetLatencyMarkerInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GetLatencyMarkerInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LatencyTimingsFrameReportNV ) == sizeof( VkLatencyTimingsFrameReportNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "LatencyTimingsFrameReportNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LatencySubmissionPresentIdNV ) == sizeof( VkLatencySubmissionPresentIdNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "LatencySubmissionPresentIdNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SwapchainLatencyCreateInfoNV ) == sizeof( VkSwapchainLatencyCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SwapchainLatencyCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::OutOfBandQueueTypeInfoNV ) == sizeof( VkOutOfBandQueueTypeInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "OutOfBandQueueTypeInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::LatencySurfaceCapabilitiesNV ) == sizeof( VkLatencySurfaceCapabilitiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "LatencySurfaceCapabilitiesNV is not nothrow_move_constructible!" ); + +//=== VK_KHR_cooperative_matrix === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesKHR ) == sizeof( VkCooperativeMatrixPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CooperativeMatrixPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixFeaturesKHR ) == sizeof( VkPhysicalDeviceCooperativeMatrixFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeMatrixFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrixPropertiesKHR ) == + sizeof( VkPhysicalDeviceCooperativeMatrixPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeMatrixPropertiesKHR is not nothrow_move_constructible!" ); + +//=== VK_ARM_data_graph === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionARM ) == sizeof( VkDataGraphPipelineSessionARM ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "DataGraphPipelineSessionARM is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineSessionARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDataGraphFeaturesARM ) == sizeof( VkPhysicalDeviceDataGraphFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDataGraphFeaturesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineConstantARM ) == sizeof( VkDataGraphPipelineConstantARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineConstantARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineResourceInfoARM ) == sizeof( VkDataGraphPipelineResourceInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineResourceInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineCompilerControlCreateInfoARM ) == + sizeof( VkDataGraphPipelineCompilerControlCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineCompilerControlCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineCreateInfoARM ) == sizeof( VkDataGraphPipelineCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineShaderModuleCreateInfoARM ) == sizeof( VkDataGraphPipelineShaderModuleCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineShaderModuleCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionCreateInfoARM ) == sizeof( VkDataGraphPipelineSessionCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineSessionCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionBindPointRequirementsInfoARM ) == + sizeof( VkDataGraphPipelineSessionBindPointRequirementsInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineSessionBindPointRequirementsInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionBindPointRequirementARM ) == + sizeof( VkDataGraphPipelineSessionBindPointRequirementARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineSessionBindPointRequirementARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineSessionMemoryRequirementsInfoARM ) == + sizeof( VkDataGraphPipelineSessionMemoryRequirementsInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineSessionMemoryRequirementsInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindDataGraphPipelineSessionMemoryInfoARM ) == sizeof( VkBindDataGraphPipelineSessionMemoryInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindDataGraphPipelineSessionMemoryInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineInfoARM ) == sizeof( VkDataGraphPipelineInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelinePropertyQueryResultARM ) == sizeof( VkDataGraphPipelinePropertyQueryResultARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelinePropertyQueryResultARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineIdentifierCreateInfoARM ) == sizeof( VkDataGraphPipelineIdentifierCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineIdentifierCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineDispatchInfoARM ) == sizeof( VkDataGraphPipelineDispatchInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineDispatchInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDataGraphProcessingEngineARM ) == sizeof( VkPhysicalDeviceDataGraphProcessingEngineARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDataGraphProcessingEngineARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyDataGraphPropertiesARM ) == sizeof( VkQueueFamilyDataGraphPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyDataGraphPropertiesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphProcessingEngineCreateInfoARM ) == sizeof( VkDataGraphProcessingEngineCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphProcessingEngineCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM ) == + sizeof( VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyDataGraphProcessingEnginePropertiesARM ) == + sizeof( VkQueueFamilyDataGraphProcessingEnginePropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyDataGraphProcessingEnginePropertiesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDataGraphOperationSupportARM ) == sizeof( VkPhysicalDeviceDataGraphOperationSupportARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDataGraphOperationSupportARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM ) == + sizeof( VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM is not nothrow_move_constructible!" ); + +//=== VK_QCOM_multiview_per_view_render_areas === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM ) == + sizeof( VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM ) == + sizeof( VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM is not nothrow_move_constructible!" ); + +//=== VK_KHR_compute_shader_derivatives === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesFeaturesKHR ) == + sizeof( VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceComputeShaderDerivativesFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeShaderDerivativesPropertiesKHR ) == + sizeof( VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceComputeShaderDerivativesPropertiesKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_decode_av1 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeAV1ProfileInfoKHR ) == sizeof( VkVideoDecodeAV1ProfileInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeAV1ProfileInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeAV1CapabilitiesKHR ) == sizeof( VkVideoDecodeAV1CapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeAV1CapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeAV1SessionParametersCreateInfoKHR ) == + sizeof( VkVideoDecodeAV1SessionParametersCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeAV1SessionParametersCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeAV1PictureInfoKHR ) == sizeof( VkVideoDecodeAV1PictureInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeAV1PictureInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeAV1DpbSlotInfoKHR ) == sizeof( VkVideoDecodeAV1DpbSlotInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeAV1DpbSlotInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_encode_av1 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeAV1FeaturesKHR ) == sizeof( VkPhysicalDeviceVideoEncodeAV1FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVideoEncodeAV1FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1CapabilitiesKHR ) == sizeof( VkVideoEncodeAV1CapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1CapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1QualityLevelPropertiesKHR ) == sizeof( VkVideoEncodeAV1QualityLevelPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1QualityLevelPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1SessionCreateInfoKHR ) == sizeof( VkVideoEncodeAV1SessionCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1SessionCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1SessionParametersCreateInfoKHR ) == + sizeof( VkVideoEncodeAV1SessionParametersCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1SessionParametersCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1PictureInfoKHR ) == sizeof( VkVideoEncodeAV1PictureInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1PictureInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1DpbSlotInfoKHR ) == sizeof( VkVideoEncodeAV1DpbSlotInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1DpbSlotInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1ProfileInfoKHR ) == sizeof( VkVideoEncodeAV1ProfileInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1ProfileInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1QIndexKHR ) == sizeof( VkVideoEncodeAV1QIndexKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1QIndexKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1FrameSizeKHR ) == sizeof( VkVideoEncodeAV1FrameSizeKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1FrameSizeKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1GopRemainingFrameInfoKHR ) == sizeof( VkVideoEncodeAV1GopRemainingFrameInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1GopRemainingFrameInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1RateControlInfoKHR ) == sizeof( VkVideoEncodeAV1RateControlInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1RateControlInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1RateControlLayerInfoKHR ) == sizeof( VkVideoEncodeAV1RateControlLayerInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1RateControlLayerInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_decode_vp9 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoDecodeVP9FeaturesKHR ) == sizeof( VkPhysicalDeviceVideoDecodeVP9FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVideoDecodeVP9FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeVP9ProfileInfoKHR ) == sizeof( VkVideoDecodeVP9ProfileInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeVP9ProfileInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeVP9CapabilitiesKHR ) == sizeof( VkVideoDecodeVP9CapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeVP9CapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeVP9PictureInfoKHR ) == sizeof( VkVideoDecodeVP9PictureInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeVP9PictureInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_maintenance1 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance1FeaturesKHR ) == sizeof( VkPhysicalDeviceVideoMaintenance1FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVideoMaintenance1FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoInlineQueryInfoKHR ) == sizeof( VkVideoInlineQueryInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoInlineQueryInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_per_stage_descriptor_set === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePerStageDescriptorSetFeaturesNV ) == + sizeof( VkPhysicalDevicePerStageDescriptorSetFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePerStageDescriptorSetFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_QCOM_image_processing2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2FeaturesQCOM ) == sizeof( VkPhysicalDeviceImageProcessing2FeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageProcessing2FeaturesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageProcessing2PropertiesQCOM ) == + sizeof( VkPhysicalDeviceImageProcessing2PropertiesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageProcessing2PropertiesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerBlockMatchWindowCreateInfoQCOM ) == sizeof( VkSamplerBlockMatchWindowCreateInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerBlockMatchWindowCreateInfoQCOM is not nothrow_move_constructible!" ); + +//=== VK_QCOM_filter_cubic_weights === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicWeightsFeaturesQCOM ) == sizeof( VkPhysicalDeviceCubicWeightsFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCubicWeightsFeaturesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerCubicWeightsCreateInfoQCOM ) == sizeof( VkSamplerCubicWeightsCreateInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerCubicWeightsCreateInfoQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BlitImageCubicWeightsInfoQCOM ) == sizeof( VkBlitImageCubicWeightsInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BlitImageCubicWeightsInfoQCOM is not nothrow_move_constructible!" ); + +//=== VK_QCOM_ycbcr_degamma === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceYcbcrDegammaFeaturesQCOM ) == sizeof( VkPhysicalDeviceYcbcrDegammaFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceYcbcrDegammaFeaturesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM ) == + sizeof( VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM is not nothrow_move_constructible!" ); + +//=== VK_QCOM_filter_cubic_clamp === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCubicClampFeaturesQCOM ) == sizeof( VkPhysicalDeviceCubicClampFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCubicClampFeaturesQCOM is not nothrow_move_constructible!" ); + +//=== VK_EXT_attachment_feedback_loop_dynamic_state === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT ) == + sizeof( VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_unified_image_layouts === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceUnifiedImageLayoutsFeaturesKHR ) == + sizeof( VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceUnifiedImageLayoutsFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::AttachmentFeedbackLoopInfoEXT ) == sizeof( VkAttachmentFeedbackLoopInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "AttachmentFeedbackLoopInfoEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) +//=== VK_QNX_external_memory_screen_buffer === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ScreenBufferPropertiesQNX ) == sizeof( VkScreenBufferPropertiesQNX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ScreenBufferPropertiesQNX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ScreenBufferFormatPropertiesQNX ) == sizeof( VkScreenBufferFormatPropertiesQNX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ScreenBufferFormatPropertiesQNX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportScreenBufferInfoQNX ) == sizeof( VkImportScreenBufferInfoQNX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportScreenBufferInfoQNX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalFormatQNX ) == sizeof( VkExternalFormatQNX ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalFormatQNX is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX ) == + sizeof( VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + +//=== VK_MSFT_layered_driver === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredDriverPropertiesMSFT ) == sizeof( VkPhysicalDeviceLayeredDriverPropertiesMSFT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLayeredDriverPropertiesMSFT is not nothrow_move_constructible!" ); + +//=== VK_KHR_calibrated_timestamps === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoKHR ) == sizeof( VkCalibratedTimestampInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CalibratedTimestampInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_maintenance6 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SetDescriptorBufferOffsetsInfoEXT ) == sizeof( VkSetDescriptorBufferOffsetsInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SetDescriptorBufferOffsetsInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindDescriptorBufferEmbeddedSamplersInfoEXT ) == + sizeof( VkBindDescriptorBufferEmbeddedSamplersInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindDescriptorBufferEmbeddedSamplersInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_NV_descriptor_pool_overallocation === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDescriptorPoolOverallocationFeaturesNV ) == + sizeof( VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDescriptorPoolOverallocationFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_QCOM_tile_memory_heap === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileMemoryHeapFeaturesQCOM ) == sizeof( VkPhysicalDeviceTileMemoryHeapFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTileMemoryHeapFeaturesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceTileMemoryHeapPropertiesQCOM ) == sizeof( VkPhysicalDeviceTileMemoryHeapPropertiesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceTileMemoryHeapPropertiesQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TileMemoryRequirementsQCOM ) == sizeof( VkTileMemoryRequirementsQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TileMemoryRequirementsQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TileMemoryBindInfoQCOM ) == sizeof( VkTileMemoryBindInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TileMemoryBindInfoQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::TileMemorySizeInfoQCOM ) == sizeof( VkTileMemorySizeInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "TileMemorySizeInfoQCOM is not nothrow_move_constructible!" ); + +//=== VK_KHR_copy_memory_indirect === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMemoryIndirectCommandKHR ) == sizeof( VkCopyMemoryIndirectCommandKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyMemoryIndirectCommandKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMemoryIndirectInfoKHR ) == sizeof( VkCopyMemoryIndirectInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyMemoryIndirectInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectCommandKHR ) == sizeof( VkCopyMemoryToImageIndirectCommandKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyMemoryToImageIndirectCommandKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CopyMemoryToImageIndirectInfoKHR ) == sizeof( VkCopyMemoryToImageIndirectInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CopyMemoryToImageIndirectInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectFeaturesKHR ) == + sizeof( VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCopyMemoryIndirectFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCopyMemoryIndirectPropertiesKHR ) == + sizeof( VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCopyMemoryIndirectPropertiesKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_memory_decompression === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DecompressMemoryInfoEXT ) == sizeof( VkDecompressMemoryInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DecompressMemoryInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DecompressMemoryRegionEXT ) == sizeof( VkDecompressMemoryRegionEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DecompressMemoryRegionEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionFeaturesEXT ) == + sizeof( VkPhysicalDeviceMemoryDecompressionFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMemoryDecompressionFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryDecompressionPropertiesEXT ) == + sizeof( VkPhysicalDeviceMemoryDecompressionPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMemoryDecompressionPropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_NV_display_stereo === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplaySurfaceStereoCreateInfoNV ) == sizeof( VkDisplaySurfaceStereoCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplaySurfaceStereoCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeStereoPropertiesNV ) == sizeof( VkDisplayModeStereoPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DisplayModeStereoPropertiesNV is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_encode_intra_refresh === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeIntraRefreshCapabilitiesKHR ) == sizeof( VkVideoEncodeIntraRefreshCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeIntraRefreshCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeSessionIntraRefreshCreateInfoKHR ) == + sizeof( VkVideoEncodeSessionIntraRefreshCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeSessionIntraRefreshCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeIntraRefreshInfoKHR ) == sizeof( VkVideoEncodeIntraRefreshInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeIntraRefreshInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoReferenceIntraRefreshInfoKHR ) == sizeof( VkVideoReferenceIntraRefreshInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoReferenceIntraRefreshInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR ) == + sizeof( VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_encode_quantization_map === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeQuantizationMapCapabilitiesKHR ) == sizeof( VkVideoEncodeQuantizationMapCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeQuantizationMapCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoFormatQuantizationMapPropertiesKHR ) == sizeof( VkVideoFormatQuantizationMapPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoFormatQuantizationMapPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeQuantizationMapInfoKHR ) == sizeof( VkVideoEncodeQuantizationMapInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeQuantizationMapInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeQuantizationMapSessionParametersCreateInfoKHR ) == + sizeof( VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeQuantizationMapSessionParametersCreateInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR ) == + sizeof( VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH264QuantizationMapCapabilitiesKHR ) == + sizeof( VkVideoEncodeH264QuantizationMapCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH264QuantizationMapCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeH265QuantizationMapCapabilitiesKHR ) == + sizeof( VkVideoEncodeH265QuantizationMapCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeH265QuantizationMapCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoFormatH265QuantizationMapPropertiesKHR ) == + sizeof( VkVideoFormatH265QuantizationMapPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoFormatH265QuantizationMapPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoEncodeAV1QuantizationMapCapabilitiesKHR ) == + sizeof( VkVideoEncodeAV1QuantizationMapCapabilitiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoEncodeAV1QuantizationMapCapabilitiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoFormatAV1QuantizationMapPropertiesKHR ) == sizeof( VkVideoFormatAV1QuantizationMapPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoFormatAV1QuantizationMapPropertiesKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_raw_access_chains === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRawAccessChainsFeaturesNV ) == sizeof( VkPhysicalDeviceRawAccessChainsFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRawAccessChainsFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_NV_external_compute_queue === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalComputeQueueNV ) == sizeof( VkExternalComputeQueueNV ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "ExternalComputeQueueNV is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalComputeQueueNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalComputeQueueDeviceCreateInfoNV ) == sizeof( VkExternalComputeQueueDeviceCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalComputeQueueDeviceCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalComputeQueueCreateInfoNV ) == sizeof( VkExternalComputeQueueCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalComputeQueueCreateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ExternalComputeQueueDataParamsNV ) == sizeof( VkExternalComputeQueueDataParamsNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ExternalComputeQueueDataParamsNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalComputeQueuePropertiesNV ) == + sizeof( VkPhysicalDeviceExternalComputeQueuePropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceExternalComputeQueuePropertiesNV is not nothrow_move_constructible!" ); + +//=== VK_KHR_shader_relaxed_extended_instruction === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR ) == + sizeof( VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_command_buffer_inheritance === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCommandBufferInheritanceFeaturesNV ) == + sizeof( VkPhysicalDeviceCommandBufferInheritanceFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCommandBufferInheritanceFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_KHR_maintenance7 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7FeaturesKHR ) == sizeof( VkPhysicalDeviceMaintenance7FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance7FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance7PropertiesKHR ) == sizeof( VkPhysicalDeviceMaintenance7PropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance7PropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesListKHR ) == sizeof( VkPhysicalDeviceLayeredApiPropertiesListKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLayeredApiPropertiesListKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiPropertiesKHR ) == sizeof( VkPhysicalDeviceLayeredApiPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLayeredApiPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceLayeredApiVulkanPropertiesKHR ) == + sizeof( VkPhysicalDeviceLayeredApiVulkanPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceLayeredApiVulkanPropertiesKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_shader_atomic_float16_vector === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV ) == + sizeof( VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_replicated_composites === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderReplicatedCompositesFeaturesEXT ) == + sizeof( VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderReplicatedCompositesFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_float8 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFloat8FeaturesEXT ) == sizeof( VkPhysicalDeviceShaderFloat8FeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderFloat8FeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_NV_ray_tracing_validation === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingValidationFeaturesNV ) == + sizeof( VkPhysicalDeviceRayTracingValidationFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingValidationFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_NV_cluster_acceleration_structure === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterAccelerationStructureFeaturesNV ) == + sizeof( VkPhysicalDeviceClusterAccelerationStructureFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceClusterAccelerationStructureFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceClusterAccelerationStructurePropertiesNV ) == + sizeof( VkPhysicalDeviceClusterAccelerationStructurePropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceClusterAccelerationStructurePropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureClustersBottomLevelInputNV ) == + sizeof( VkClusterAccelerationStructureClustersBottomLevelInputNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureClustersBottomLevelInputNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureTriangleClusterInputNV ) == + sizeof( VkClusterAccelerationStructureTriangleClusterInputNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureTriangleClusterInputNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureMoveObjectsInputNV ) == + sizeof( VkClusterAccelerationStructureMoveObjectsInputNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureMoveObjectsInputNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureOpInputNV ) == sizeof( VkClusterAccelerationStructureOpInputNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureOpInputNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureInputInfoNV ) == sizeof( VkClusterAccelerationStructureInputInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureInputInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureCommandsInfoNV ) == sizeof( VkClusterAccelerationStructureCommandsInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureCommandsInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::StridedDeviceAddressNV ) == sizeof( VkStridedDeviceAddressNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "StridedDeviceAddressNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV ) == + sizeof( VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureMoveObjectsInfoNV ) == + sizeof( VkClusterAccelerationStructureMoveObjectsInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureMoveObjectsInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureBuildClustersBottomLevelInfoNV ) == + sizeof( VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureBuildClustersBottomLevelInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureBuildTriangleClusterInfoNV ) == + sizeof( VkClusterAccelerationStructureBuildTriangleClusterInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureBuildTriangleClusterInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV ) == + sizeof( VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureInstantiateClusterInfoNV ) == + sizeof( VkClusterAccelerationStructureInstantiateClusterInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureInstantiateClusterInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ClusterAccelerationStructureGetTemplateIndicesInfoNV ) == + sizeof( VkClusterAccelerationStructureGetTemplateIndicesInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ClusterAccelerationStructureGetTemplateIndicesInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RayTracingPipelineClusterAccelerationStructureCreateInfoNV ) == + sizeof( VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RayTracingPipelineClusterAccelerationStructureCreateInfoNV is not nothrow_move_constructible!" ); + +//=== VK_NV_partitioned_acceleration_structure === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePartitionedAccelerationStructureFeaturesNV ) == + sizeof( VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePartitionedAccelerationStructureFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePartitionedAccelerationStructurePropertiesNV ) == + sizeof( VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePartitionedAccelerationStructurePropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PartitionedAccelerationStructureFlagsNV ) == sizeof( VkPartitionedAccelerationStructureFlagsNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PartitionedAccelerationStructureFlagsNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BuildPartitionedAccelerationStructureIndirectCommandNV ) == + sizeof( VkBuildPartitionedAccelerationStructureIndirectCommandNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BuildPartitionedAccelerationStructureIndirectCommandNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PartitionedAccelerationStructureWriteInstanceDataNV ) == + sizeof( VkPartitionedAccelerationStructureWriteInstanceDataNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PartitionedAccelerationStructureWriteInstanceDataNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PartitionedAccelerationStructureUpdateInstanceDataNV ) == + sizeof( VkPartitionedAccelerationStructureUpdateInstanceDataNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PartitionedAccelerationStructureUpdateInstanceDataNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PartitionedAccelerationStructureWritePartitionTranslationDataNV ) == + sizeof( VkPartitionedAccelerationStructureWritePartitionTranslationDataNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PartitionedAccelerationStructureWritePartitionTranslationDataNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteDescriptorSetPartitionedAccelerationStructureNV ) == + sizeof( VkWriteDescriptorSetPartitionedAccelerationStructureNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "WriteDescriptorSetPartitionedAccelerationStructureNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PartitionedAccelerationStructureInstancesInputNV ) == + sizeof( VkPartitionedAccelerationStructureInstancesInputNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PartitionedAccelerationStructureInstancesInputNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BuildPartitionedAccelerationStructureInfoNV ) == + sizeof( VkBuildPartitionedAccelerationStructureInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BuildPartitionedAccelerationStructureInfoNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_device_generated_commands === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutEXT ) == sizeof( VkIndirectCommandsLayoutEXT ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "IndirectCommandsLayoutEXT is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsLayoutEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetEXT ) == sizeof( VkIndirectExecutionSetEXT ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "IndirectExecutionSetEXT is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectExecutionSetEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT ) == + sizeof( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT ) == + sizeof( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoEXT ) == sizeof( VkGeneratedCommandsMemoryRequirementsInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeneratedCommandsMemoryRequirementsInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetCreateInfoEXT ) == sizeof( VkIndirectExecutionSetCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectExecutionSetCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetInfoEXT ) == sizeof( VkIndirectExecutionSetInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectExecutionSetInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetPipelineInfoEXT ) == sizeof( VkIndirectExecutionSetPipelineInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectExecutionSetPipelineInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderInfoEXT ) == sizeof( VkIndirectExecutionSetShaderInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectExecutionSetShaderInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoEXT ) == sizeof( VkGeneratedCommandsInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeneratedCommandsInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetPipelineEXT ) == sizeof( VkWriteIndirectExecutionSetPipelineEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "WriteIndirectExecutionSetPipelineEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoEXT ) == sizeof( VkIndirectCommandsLayoutCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsLayoutCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenEXT ) == sizeof( VkIndirectCommandsLayoutTokenEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsLayoutTokenEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DrawIndirectCountIndirectCommandEXT ) == sizeof( VkDrawIndirectCountIndirectCommandEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DrawIndirectCountIndirectCommandEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsVertexBufferTokenEXT ) == sizeof( VkIndirectCommandsVertexBufferTokenEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsVertexBufferTokenEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindVertexBufferIndirectCommandEXT ) == sizeof( VkBindVertexBufferIndirectCommandEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindVertexBufferIndirectCommandEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsIndexBufferTokenEXT ) == sizeof( VkIndirectCommandsIndexBufferTokenEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsIndexBufferTokenEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BindIndexBufferIndirectCommandEXT ) == sizeof( VkBindIndexBufferIndirectCommandEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BindIndexBufferIndirectCommandEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsPushConstantTokenEXT ) == sizeof( VkIndirectCommandsPushConstantTokenEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsPushConstantTokenEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsExecutionSetTokenEXT ) == sizeof( VkIndirectCommandsExecutionSetTokenEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsExecutionSetTokenEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenDataEXT ) == sizeof( VkIndirectCommandsTokenDataEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectCommandsTokenDataEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::IndirectExecutionSetShaderLayoutInfoEXT ) == sizeof( VkIndirectExecutionSetShaderLayoutInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "IndirectExecutionSetShaderLayoutInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsPipelineInfoEXT ) == sizeof( VkGeneratedCommandsPipelineInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeneratedCommandsPipelineInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::GeneratedCommandsShaderInfoEXT ) == sizeof( VkGeneratedCommandsShaderInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "GeneratedCommandsShaderInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::WriteIndirectExecutionSetShaderEXT ) == sizeof( VkWriteIndirectExecutionSetShaderEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "WriteIndirectExecutionSetShaderEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_device_fault === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultFeaturesKHR ) == sizeof( VkPhysicalDeviceFaultFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFaultFeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFaultPropertiesKHR ) == sizeof( VkPhysicalDeviceFaultPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFaultPropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceFaultInfoKHR ) == sizeof( VkDeviceFaultInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceFaultInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceFaultDebugInfoKHR ) == sizeof( VkDeviceFaultDebugInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceFaultDebugInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceFaultAddressInfoKHR ) == sizeof( VkDeviceFaultAddressInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceFaultAddressInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceFaultVendorInfoKHR ) == sizeof( VkDeviceFaultVendorInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceFaultVendorInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DeviceFaultVendorBinaryHeaderVersionOneKHR ) == sizeof( VkDeviceFaultVendorBinaryHeaderVersionOneKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DeviceFaultVendorBinaryHeaderVersionOneKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_maintenance8 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryBarrierAccessFlags3KHR ) == sizeof( VkMemoryBarrierAccessFlags3KHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryBarrierAccessFlags3KHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance8FeaturesKHR ) == sizeof( VkPhysicalDeviceMaintenance8FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance8FeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_MESA_image_alignment_control === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlFeaturesMESA ) == + sizeof( VkPhysicalDeviceImageAlignmentControlFeaturesMESA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageAlignmentControlFeaturesMESA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceImageAlignmentControlPropertiesMESA ) == + sizeof( VkPhysicalDeviceImageAlignmentControlPropertiesMESA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceImageAlignmentControlPropertiesMESA is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImageAlignmentControlCreateInfoMESA ) == sizeof( VkImageAlignmentControlCreateInfoMESA ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImageAlignmentControlCreateInfoMESA is not nothrow_move_constructible!" ); + +//=== VK_KHR_shader_fma === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderFmaFeaturesKHR ) == sizeof( VkPhysicalDeviceShaderFmaFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderFmaFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_push_constant_bank === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PushConstantBankInfoNV ) == sizeof( VkPushConstantBankInfoNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PushConstantBankInfoNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePushConstantBankFeaturesNV ) == sizeof( VkPhysicalDevicePushConstantBankFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePushConstantBankFeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePushConstantBankPropertiesNV ) == sizeof( VkPhysicalDevicePushConstantBankPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePushConstantBankPropertiesNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_ray_tracing_invocation_reorder === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderPropertiesEXT ) == + sizeof( VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingInvocationReorderPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRayTracingInvocationReorderFeaturesEXT ) == + sizeof( VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRayTracingInvocationReorderFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_depth_clamp_control === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampControlFeaturesEXT ) == sizeof( VkPhysicalDeviceDepthClampControlFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDepthClampControlFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineViewportDepthClampControlCreateInfoEXT ) == + sizeof( VkPipelineViewportDepthClampControlCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineViewportDepthClampControlCreateInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DepthClampRangeEXT ) == sizeof( VkDepthClampRangeEXT ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DepthClampRangeEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_maintenance9 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance9FeaturesKHR ) == sizeof( VkPhysicalDeviceMaintenance9FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance9FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance9PropertiesKHR ) == sizeof( VkPhysicalDeviceMaintenance9PropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance9PropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::QueueFamilyOwnershipTransferPropertiesKHR ) == sizeof( VkQueueFamilyOwnershipTransferPropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "QueueFamilyOwnershipTransferPropertiesKHR is not nothrow_move_constructible!" ); + +//=== VK_KHR_video_maintenance2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVideoMaintenance2FeaturesKHR ) == sizeof( VkPhysicalDeviceVideoMaintenance2FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVideoMaintenance2FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH264InlineSessionParametersInfoKHR ) == + sizeof( VkVideoDecodeH264InlineSessionParametersInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH264InlineSessionParametersInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeH265InlineSessionParametersInfoKHR ) == + sizeof( VkVideoDecodeH265InlineSessionParametersInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeH265InlineSessionParametersInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::VideoDecodeAV1InlineSessionParametersInfoKHR ) == + sizeof( VkVideoDecodeAV1InlineSessionParametersInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "VideoDecodeAV1InlineSessionParametersInfoKHR is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_OHOS ) +//=== VK_OHOS_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SurfaceCreateInfoOHOS ) == sizeof( VkSurfaceCreateInfoOHOS ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SurfaceCreateInfoOHOS is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_OHOS*/ + +//=== VK_HUAWEI_hdr_vivid === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceHdrVividFeaturesHUAWEI ) == sizeof( VkPhysicalDeviceHdrVividFeaturesHUAWEI ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceHdrVividFeaturesHUAWEI is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::HdrVividDynamicMetadataHUAWEI ) == sizeof( VkHdrVividDynamicMetadataHUAWEI ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "HdrVividDynamicMetadataHUAWEI is not nothrow_move_constructible!" ); + +//=== VK_NV_cooperative_matrix2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CooperativeMatrixFlexibleDimensionsPropertiesNV ) == + sizeof( VkCooperativeMatrixFlexibleDimensionsPropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CooperativeMatrixFlexibleDimensionsPropertiesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrix2FeaturesNV ) == sizeof( VkPhysicalDeviceCooperativeMatrix2FeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeMatrix2FeaturesNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCooperativeMatrix2PropertiesNV ) == + sizeof( VkPhysicalDeviceCooperativeMatrix2PropertiesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCooperativeMatrix2PropertiesNV is not nothrow_move_constructible!" ); + +//=== VK_ARM_pipeline_opacity_micromap === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineOpacityMicromapFeaturesARM ) == + sizeof( VkPhysicalDevicePipelineOpacityMicromapFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineOpacityMicromapFeaturesARM is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_METAL_EXT ) +//=== VK_EXT_external_memory_metal === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ImportMemoryMetalHandleInfoEXT ) == sizeof( VkImportMemoryMetalHandleInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ImportMemoryMetalHandleInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryMetalHandlePropertiesEXT ) == sizeof( VkMemoryMetalHandlePropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryMetalHandlePropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::MemoryGetMetalHandleInfoEXT ) == sizeof( VkMemoryGetMetalHandleInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "MemoryGetMetalHandleInfoEXT is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +//=== VK_KHR_depth_clamp_zero_one === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDepthClampZeroOneFeaturesKHR ) == sizeof( VkPhysicalDeviceDepthClampZeroOneFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDepthClampZeroOneFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_ARM_performance_counters_by_region === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceCountersByRegionFeaturesARM ) == + sizeof( VkPhysicalDevicePerformanceCountersByRegionFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePerformanceCountersByRegionFeaturesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePerformanceCountersByRegionPropertiesARM ) == + sizeof( VkPhysicalDevicePerformanceCountersByRegionPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePerformanceCountersByRegionPropertiesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterARM ) == sizeof( VkPerformanceCounterARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceCounterARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionARM ) == sizeof( VkPerformanceCounterDescriptionARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PerformanceCounterDescriptionARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassPerformanceCountersByRegionBeginInfoARM ) == + sizeof( VkRenderPassPerformanceCountersByRegionBeginInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassPerformanceCountersByRegionBeginInfoARM is not nothrow_move_constructible!" ); + +//=== VK_ARM_shader_instrumentation === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderInstrumentationARM ) == sizeof( VkShaderInstrumentationARM ), + "handle and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_copy_constructible::value, + "ShaderInstrumentationARM is not copy_constructible!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderInstrumentationARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderInstrumentationFeaturesARM ) == + sizeof( VkPhysicalDeviceShaderInstrumentationFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderInstrumentationFeaturesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderInstrumentationPropertiesARM ) == + sizeof( VkPhysicalDeviceShaderInstrumentationPropertiesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderInstrumentationPropertiesARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderInstrumentationCreateInfoARM ) == sizeof( VkShaderInstrumentationCreateInfoARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderInstrumentationCreateInfoARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderInstrumentationMetricDescriptionARM ) == sizeof( VkShaderInstrumentationMetricDescriptionARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderInstrumentationMetricDescriptionARM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ShaderInstrumentationMetricDataHeaderARM ) == sizeof( VkShaderInstrumentationMetricDataHeaderARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ShaderInstrumentationMetricDataHeaderARM is not nothrow_move_constructible!" ); + +//=== VK_EXT_vertex_attribute_robustness === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceVertexAttributeRobustnessFeaturesEXT ) == + sizeof( VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceVertexAttributeRobustnessFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_ARM_format_pack === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFormatPackFeaturesARM ) == sizeof( VkPhysicalDeviceFormatPackFeaturesARM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFormatPackFeaturesARM is not nothrow_move_constructible!" ); + +//=== VK_VALVE_fragment_density_map_layered === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE ) == + sizeof( VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE ) == + sizeof( VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineFragmentDensityMapLayeredCreateInfoVALVE ) == + sizeof( VkPipelineFragmentDensityMapLayeredCreateInfoVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineFragmentDensityMapLayeredCreateInfoVALVE is not nothrow_move_constructible!" ); + +//=== VK_KHR_robustness2 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2FeaturesKHR ) == sizeof( VkPhysicalDeviceRobustness2FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRobustness2FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceRobustness2PropertiesKHR ) == sizeof( VkPhysicalDeviceRobustness2PropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceRobustness2PropertiesKHR is not nothrow_move_constructible!" ); + +//=== VK_NV_present_metering === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::SetPresentConfigNV ) == sizeof( VkSetPresentConfigNV ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "SetPresentConfigNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentMeteringFeaturesNV ) == sizeof( VkPhysicalDevicePresentMeteringFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePresentMeteringFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_fragment_density_map_offset === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT ) == + sizeof( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT ) == + sizeof( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderPassFragmentDensityMapOffsetEndInfoEXT ) == + sizeof( VkRenderPassFragmentDensityMapOffsetEndInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderPassFragmentDensityMapOffsetEndInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_zero_initialize_device_memory === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT ) == + sizeof( VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_KHR_present_mode_fifo_latest_ready === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR ) == + sizeof( VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_64bit_indexing === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShader64BitIndexingFeaturesEXT ) == + sizeof( VkPhysicalDeviceShader64BitIndexingFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShader64BitIndexingFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_EXT_custom_resolve === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceCustomResolveFeaturesEXT ) == sizeof( VkPhysicalDeviceCustomResolveFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceCustomResolveFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::BeginCustomResolveInfoEXT ) == sizeof( VkBeginCustomResolveInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "BeginCustomResolveInfoEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::CustomResolveCreateInfoEXT ) == sizeof( VkCustomResolveCreateInfoEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "CustomResolveCreateInfoEXT is not nothrow_move_constructible!" ); + +//=== VK_QCOM_data_graph_model === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PipelineCacheHeaderVersionDataGraphQCOM ) == sizeof( VkPipelineCacheHeaderVersionDataGraphQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PipelineCacheHeaderVersionDataGraphQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::DataGraphPipelineBuiltinModelCreateInfoQCOM ) == + sizeof( VkDataGraphPipelineBuiltinModelCreateInfoQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "DataGraphPipelineBuiltinModelCreateInfoQCOM is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceDataGraphModelFeaturesQCOM ) == sizeof( VkPhysicalDeviceDataGraphModelFeaturesQCOM ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceDataGraphModelFeaturesQCOM is not nothrow_move_constructible!" ); + +//=== VK_KHR_maintenance10 === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance10FeaturesKHR ) == sizeof( VkPhysicalDeviceMaintenance10FeaturesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance10FeaturesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceMaintenance10PropertiesKHR ) == sizeof( VkPhysicalDeviceMaintenance10PropertiesKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceMaintenance10PropertiesKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingEndInfoKHR ) == sizeof( VkRenderingEndInfoKHR ), "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderingEndInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::RenderingAttachmentFlagsInfoKHR ) == sizeof( VkRenderingAttachmentFlagsInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "RenderingAttachmentFlagsInfoKHR is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ResolveImageModeInfoKHR ) == sizeof( VkResolveImageModeInfoKHR ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ResolveImageModeInfoKHR is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_long_vector === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderLongVectorFeaturesEXT ) == sizeof( VkPhysicalDeviceShaderLongVectorFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderLongVectorFeaturesEXT is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderLongVectorPropertiesEXT ) == + sizeof( VkPhysicalDeviceShaderLongVectorPropertiesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderLongVectorPropertiesEXT is not nothrow_move_constructible!" ); + +//=== VK_SEC_pipeline_cache_incremental_mode === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC ) == + sizeof( VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_uniform_buffer_unsized_array === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT ) == + sizeof( VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT is not nothrow_move_constructible!" ); + +//=== VK_NV_compute_occupancy_priority === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::ComputeOccupancyPriorityParametersNV ) == sizeof( VkComputeOccupancyPriorityParametersNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "ComputeOccupancyPriorityParametersNV is not nothrow_move_constructible!" ); + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceComputeOccupancyPriorityFeaturesNV ) == + sizeof( VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceComputeOccupancyPriorityFeaturesNV is not nothrow_move_constructible!" ); + +//=== VK_EXT_shader_subgroup_partitioned === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT ) == + sizeof( VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT is not nothrow_move_constructible!" ); + +#if defined( VK_USE_PLATFORM_UBM_SEC ) +//=== VK_SEC_ubm_surface === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::UbmSurfaceCreateInfoSEC ) == sizeof( VkUbmSurfaceCreateInfoSEC ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "UbmSurfaceCreateInfoSEC is not nothrow_move_constructible!" ); +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + +//=== VK_VALVE_shader_mixed_float_dot_product === + +VULKAN_HPP_STATIC_ASSERT( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE ) == + sizeof( VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE ), + "struct and wrapper have different size!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_standard_layout::value, + "struct wrapper is not a standard layout!" ); +VULKAN_HPP_STATIC_ASSERT( std::is_nothrow_move_constructible::value, + "PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE is not nothrow_move_constructible!" ); + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_structs.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_structs.hpp new file mode 100644 index 000000000..f7a2fd2ed --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_structs.hpp @@ -0,0 +1,211080 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_STRUCTS_HPP +#define VULKAN_STRUCTS_HPP + +// include-what-you-use: make sure, vulkan.hpp is used by code-completers +// IWYU pragma: private, include "vulkan/vulkan.hpp" + +#if !defined( VULKAN_HPP_CXX_MODULE ) +# include // strcmp +#endif + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ + //=============== + //=== STRUCTS === + //=============== + + // wrapper struct for struct VkAabbPositionsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAabbPositionsKHR.html + struct AabbPositionsKHR + { + using NativeType = VkAabbPositionsKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AabbPositionsKHR( float minX_ = {}, float minY_ = {}, float minZ_ = {}, float maxX_ = {}, float maxY_ = {}, float maxZ_ = {} ) VULKAN_HPP_NOEXCEPT + : minX{ minX_ } + , minY{ minY_ } + , minZ{ minZ_ } + , maxX{ maxX_ } + , maxY{ maxY_ } + , maxZ{ maxZ_ } + { + } + + VULKAN_HPP_CONSTEXPR AabbPositionsKHR( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AabbPositionsKHR( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT : AabbPositionsKHR( *reinterpret_cast( &rhs ) ) {} + + AabbPositionsKHR & operator=( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AabbPositionsKHR & operator=( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinX( float minX_ ) & VULKAN_HPP_NOEXCEPT + { + minX = minX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR && setMinX( float minX_ ) && VULKAN_HPP_NOEXCEPT + { + minX = minX_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinY( float minY_ ) & VULKAN_HPP_NOEXCEPT + { + minY = minY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR && setMinY( float minY_ ) && VULKAN_HPP_NOEXCEPT + { + minY = minY_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMinZ( float minZ_ ) & VULKAN_HPP_NOEXCEPT + { + minZ = minZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR && setMinZ( float minZ_ ) && VULKAN_HPP_NOEXCEPT + { + minZ = minZ_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxX( float maxX_ ) & VULKAN_HPP_NOEXCEPT + { + maxX = maxX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR && setMaxX( float maxX_ ) && VULKAN_HPP_NOEXCEPT + { + maxX = maxX_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxY( float maxY_ ) & VULKAN_HPP_NOEXCEPT + { + maxY = maxY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR && setMaxY( float maxY_ ) && VULKAN_HPP_NOEXCEPT + { + maxY = maxY_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & setMaxZ( float maxZ_ ) & VULKAN_HPP_NOEXCEPT + { + maxZ = maxZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR && setMaxZ( float maxZ_ ) && VULKAN_HPP_NOEXCEPT + { + maxZ = maxZ_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAabbPositionsKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAabbPositionsKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAabbPositionsKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAabbPositionsKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( minX, minY, minZ, maxX, maxY, maxZ ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AabbPositionsKHR const & ) const = default; +#else + bool operator==( AabbPositionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( minX == rhs.minX ) && ( minY == rhs.minY ) && ( minZ == rhs.minZ ) && ( maxX == rhs.maxX ) && ( maxY == rhs.maxY ) && ( maxZ == rhs.maxZ ); +# endif + } + + bool operator!=( AabbPositionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float minX = {}; + float minY = {}; + float minZ = {}; + float maxX = {}; + float maxY = {}; + float maxZ = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AabbPositionsKHR; + }; +#endif + using AabbPositionsNV = AabbPositionsKHR; + + union DeviceOrHostAddressConstKHR + { + using NativeType = VkDeviceOrHostAddressConstKHR; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR( DeviceAddress deviceAddress_ = {} ) : deviceAddress( deviceAddress_ ) {} + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR( void const * hostAddress_ ) : hostAddress( hostAddress_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR & setDeviceAddress( DeviceAddress deviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR && setDeviceAddress( DeviceAddress deviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR & setHostAddress( void const * hostAddress_ ) & VULKAN_HPP_NOEXCEPT + { + hostAddress = hostAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstKHR && setHostAddress( void const * hostAddress_ ) && VULKAN_HPP_NOEXCEPT + { + hostAddress = hostAddress_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceOrHostAddressConstKHR const &() const + { + return *reinterpret_cast( this ); + } + + operator VkDeviceOrHostAddressConstKHR &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + DeviceAddress deviceAddress; + void const * hostAddress; +#else + VkDeviceAddress deviceAddress; + void const * hostAddress; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceOrHostAddressConstKHR; + }; +#endif + + // wrapper struct for struct VkAccelerationStructureGeometryTrianglesDataKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryTrianglesDataKHR.html + struct AccelerationStructureGeometryTrianglesDataKHR + { + using NativeType = VkAccelerationStructureGeometryTrianglesDataKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryTrianglesDataKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR( Format vertexFormat_ = Format::eUndefined, + DeviceOrHostAddressConstKHR vertexData_ = {}, + DeviceSize vertexStride_ = {}, + uint32_t maxVertex_ = {}, + IndexType indexType_ = IndexType::eUint16, + DeviceOrHostAddressConstKHR indexData_ = {}, + DeviceOrHostAddressConstKHR transformData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vertexFormat{ vertexFormat_ } + , vertexData{ vertexData_ } + , vertexStride{ vertexStride_ } + , maxVertex{ maxVertex_ } + , indexType{ indexType_ } + , indexData{ indexData_ } + , transformData{ transformData_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureGeometryTrianglesDataKHR( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryTrianglesDataKHR( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryTrianglesDataKHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureGeometryTrianglesDataKHR & operator=( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureGeometryTrianglesDataKHR & operator=( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setVertexFormat( Format vertexFormat_ ) & VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR && setVertexFormat( Format vertexFormat_ ) && VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setVertexData( DeviceOrHostAddressConstKHR const & vertexData_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR && setVertexData( DeviceOrHostAddressConstKHR const & vertexData_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setVertexStride( DeviceSize vertexStride_ ) & VULKAN_HPP_NOEXCEPT + { + vertexStride = vertexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR && setVertexStride( DeviceSize vertexStride_ ) && VULKAN_HPP_NOEXCEPT + { + vertexStride = vertexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setMaxVertex( uint32_t maxVertex_ ) & VULKAN_HPP_NOEXCEPT + { + maxVertex = maxVertex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR && setMaxVertex( uint32_t maxVertex_ ) && VULKAN_HPP_NOEXCEPT + { + maxVertex = maxVertex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setIndexType( IndexType indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR && setIndexType( IndexType indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setIndexData( DeviceOrHostAddressConstKHR const & indexData_ ) & VULKAN_HPP_NOEXCEPT + { + indexData = indexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR && setIndexData( DeviceOrHostAddressConstKHR const & indexData_ ) && + VULKAN_HPP_NOEXCEPT + { + indexData = indexData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR & setTransformData( DeviceOrHostAddressConstKHR const & transformData_ ) & + VULKAN_HPP_NOEXCEPT + { + transformData = transformData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryTrianglesDataKHR && setTransformData( DeviceOrHostAddressConstKHR const & transformData_ ) && + VULKAN_HPP_NOEXCEPT + { + transformData = transformData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureGeometryTrianglesDataKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryTrianglesDataKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryTrianglesDataKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryTrianglesDataKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexFormat, vertexData, vertexStride, maxVertex, indexType, indexData, transformData ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureGeometryTrianglesDataKHR; + void const * pNext = {}; + Format vertexFormat = Format::eUndefined; + DeviceOrHostAddressConstKHR vertexData = {}; + DeviceSize vertexStride = {}; + uint32_t maxVertex = {}; + IndexType indexType = IndexType::eUint16; + DeviceOrHostAddressConstKHR indexData = {}; + DeviceOrHostAddressConstKHR transformData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureGeometryTrianglesDataKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryTrianglesDataKHR; + }; + + // wrapper struct for struct VkAccelerationStructureGeometryAabbsDataKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryAabbsDataKHR.html + struct AccelerationStructureGeometryAabbsDataKHR + { + using NativeType = VkAccelerationStructureGeometryAabbsDataKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryAabbsDataKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR( DeviceOrHostAddressConstKHR data_ = {}, + DeviceSize stride_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , data{ data_ } + , stride{ stride_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryAabbsDataKHR( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryAabbsDataKHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureGeometryAabbsDataKHR & operator=( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureGeometryAabbsDataKHR & operator=( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR & setData( DeviceOrHostAddressConstKHR const & data_ ) & VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR && setData( DeviceOrHostAddressConstKHR const & data_ ) && VULKAN_HPP_NOEXCEPT + { + data = data_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR & setStride( DeviceSize stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryAabbsDataKHR && setStride( DeviceSize stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureGeometryAabbsDataKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryAabbsDataKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryAabbsDataKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryAabbsDataKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, data, stride ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureGeometryAabbsDataKHR; + void const * pNext = {}; + DeviceOrHostAddressConstKHR data = {}; + DeviceSize stride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureGeometryAabbsDataKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryAabbsDataKHR; + }; + + // wrapper struct for struct VkAccelerationStructureGeometryInstancesDataKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryInstancesDataKHR.html + struct AccelerationStructureGeometryInstancesDataKHR + { + using NativeType = VkAccelerationStructureGeometryInstancesDataKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryInstancesDataKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR( Bool32 arrayOfPointers_ = {}, + DeviceOrHostAddressConstKHR data_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , arrayOfPointers{ arrayOfPointers_ } + , data{ data_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureGeometryInstancesDataKHR( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryInstancesDataKHR( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryInstancesDataKHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureGeometryInstancesDataKHR & operator=( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureGeometryInstancesDataKHR & operator=( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR & setArrayOfPointers( Bool32 arrayOfPointers_ ) & VULKAN_HPP_NOEXCEPT + { + arrayOfPointers = arrayOfPointers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR && setArrayOfPointers( Bool32 arrayOfPointers_ ) && VULKAN_HPP_NOEXCEPT + { + arrayOfPointers = arrayOfPointers_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR & setData( DeviceOrHostAddressConstKHR const & data_ ) & VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryInstancesDataKHR && setData( DeviceOrHostAddressConstKHR const & data_ ) && VULKAN_HPP_NOEXCEPT + { + data = data_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureGeometryInstancesDataKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryInstancesDataKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryInstancesDataKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryInstancesDataKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, arrayOfPointers, data ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureGeometryInstancesDataKHR; + void const * pNext = {}; + Bool32 arrayOfPointers = {}; + DeviceOrHostAddressConstKHR data = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureGeometryInstancesDataKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryInstancesDataKHR; + }; + + union AccelerationStructureGeometryDataKHR + { + using NativeType = VkAccelerationStructureGeometryDataKHR; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( AccelerationStructureGeometryTrianglesDataKHR triangles_ = {} ) : triangles( triangles_ ) {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( AccelerationStructureGeometryAabbsDataKHR aabbs_ ) : aabbs( aabbs_ ) {} + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR( AccelerationStructureGeometryInstancesDataKHR instances_ ) : instances( instances_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR & setTriangles( AccelerationStructureGeometryTrianglesDataKHR const & triangles_ ) & + VULKAN_HPP_NOEXCEPT + { + triangles = triangles_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR && setTriangles( AccelerationStructureGeometryTrianglesDataKHR const & triangles_ ) && + VULKAN_HPP_NOEXCEPT + { + triangles = triangles_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR & setAabbs( AccelerationStructureGeometryAabbsDataKHR const & aabbs_ ) & VULKAN_HPP_NOEXCEPT + { + aabbs = aabbs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR && setAabbs( AccelerationStructureGeometryAabbsDataKHR const & aabbs_ ) && VULKAN_HPP_NOEXCEPT + { + aabbs = aabbs_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR & setInstances( AccelerationStructureGeometryInstancesDataKHR const & instances_ ) & + VULKAN_HPP_NOEXCEPT + { + instances = instances_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryDataKHR && setInstances( AccelerationStructureGeometryInstancesDataKHR const & instances_ ) && + VULKAN_HPP_NOEXCEPT + { + instances = instances_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureGeometryDataKHR const &() const + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryDataKHR &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + AccelerationStructureGeometryTrianglesDataKHR triangles; + AccelerationStructureGeometryAabbsDataKHR aabbs; + AccelerationStructureGeometryInstancesDataKHR instances; +#else + VkAccelerationStructureGeometryTrianglesDataKHR triangles; + VkAccelerationStructureGeometryAabbsDataKHR aabbs; + VkAccelerationStructureGeometryInstancesDataKHR instances; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureGeometryDataKHR; + }; +#endif + + // wrapper struct for struct VkAccelerationStructureGeometryKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryKHR.html + struct AccelerationStructureGeometryKHR + { + using NativeType = VkAccelerationStructureGeometryKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR( GeometryTypeKHR geometryType_ = GeometryTypeKHR::eTriangles, + AccelerationStructureGeometryDataKHR geometry_ = {}, + GeometryFlagsKHR flags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , geometryType{ geometryType_ } + , geometry{ geometry_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryKHR( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryKHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureGeometryKHR & operator=( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureGeometryKHR & operator=( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setGeometryType( GeometryTypeKHR geometryType_ ) & VULKAN_HPP_NOEXCEPT + { + geometryType = geometryType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR && setGeometryType( GeometryTypeKHR geometryType_ ) && VULKAN_HPP_NOEXCEPT + { + geometryType = geometryType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setGeometry( AccelerationStructureGeometryDataKHR const & geometry_ ) & VULKAN_HPP_NOEXCEPT + { + geometry = geometry_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR && setGeometry( AccelerationStructureGeometryDataKHR const & geometry_ ) && VULKAN_HPP_NOEXCEPT + { + geometry = geometry_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR & setFlags( GeometryFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryKHR && setFlags( GeometryFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureGeometryKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, geometryType, geometry, flags ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureGeometryKHR; + void const * pNext = {}; + GeometryTypeKHR geometryType = GeometryTypeKHR::eTriangles; + AccelerationStructureGeometryDataKHR geometry = {}; + GeometryFlagsKHR flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureGeometryKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryKHR; + }; + + union DeviceOrHostAddressKHR + { + using NativeType = VkDeviceOrHostAddressKHR; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR( DeviceAddress deviceAddress_ = {} ) : deviceAddress( deviceAddress_ ) {} + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR( void * hostAddress_ ) : hostAddress( hostAddress_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR & setDeviceAddress( DeviceAddress deviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR && setDeviceAddress( DeviceAddress deviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR & setHostAddress( void * hostAddress_ ) & VULKAN_HPP_NOEXCEPT + { + hostAddress = hostAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressKHR && setHostAddress( void * hostAddress_ ) && VULKAN_HPP_NOEXCEPT + { + hostAddress = hostAddress_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceOrHostAddressKHR const &() const + { + return *reinterpret_cast( this ); + } + + operator VkDeviceOrHostAddressKHR &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + DeviceAddress deviceAddress; + void * hostAddress; +#else + VkDeviceAddress deviceAddress; + void * hostAddress; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceOrHostAddressKHR; + }; +#endif + + // wrapper struct for struct VkAccelerationStructureBuildGeometryInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureBuildGeometryInfoKHR.html + struct AccelerationStructureBuildGeometryInfoKHR + { + using NativeType = VkAccelerationStructureBuildGeometryInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureBuildGeometryInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR( AccelerationStructureTypeKHR type_ = AccelerationStructureTypeKHR::eTopLevel, + BuildAccelerationStructureFlagsKHR flags_ = {}, + BuildAccelerationStructureModeKHR mode_ = BuildAccelerationStructureModeKHR::eBuild, + AccelerationStructureKHR srcAccelerationStructure_ = {}, + AccelerationStructureKHR dstAccelerationStructure_ = {}, + uint32_t geometryCount_ = {}, + AccelerationStructureGeometryKHR const * pGeometries_ = {}, + AccelerationStructureGeometryKHR const * const * ppGeometries_ = {}, + DeviceOrHostAddressKHR scratchData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , flags{ flags_ } + , mode{ mode_ } + , srcAccelerationStructure{ srcAccelerationStructure_ } + , dstAccelerationStructure{ dstAccelerationStructure_ } + , geometryCount{ geometryCount_ } + , pGeometries{ pGeometries_ } + , ppGeometries{ ppGeometries_ } + , scratchData{ scratchData_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureBuildGeometryInfoKHR( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureBuildGeometryInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureBuildGeometryInfoKHR( AccelerationStructureTypeKHR type_, + BuildAccelerationStructureFlagsKHR flags_, + BuildAccelerationStructureModeKHR mode_, + AccelerationStructureKHR srcAccelerationStructure_, + AccelerationStructureKHR dstAccelerationStructure_, + ArrayProxyNoTemporaries const & geometries_, + ArrayProxyNoTemporaries const & pGeometries_ = {}, + DeviceOrHostAddressKHR scratchData_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , type( type_ ) + , flags( flags_ ) + , mode( mode_ ) + , srcAccelerationStructure( srcAccelerationStructure_ ) + , dstAccelerationStructure( dstAccelerationStructure_ ) + , geometryCount( static_cast( !geometries_.empty() ? geometries_.size() : pGeometries_.size() ) ) + , pGeometries( geometries_.data() ) + , ppGeometries( pGeometries_.data() ) + , scratchData( scratchData_ ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( ( !geometries_.empty() + !pGeometries_.empty() ) <= 1 ); +# else + if ( 1 < ( !geometries_.empty() + !pGeometries_.empty() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::AccelerationStructureBuildGeometryInfoKHR::AccelerationStructureBuildGeometryInfoKHR: 1 < ( !geometries_.empty() + !pGeometries_.empty() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + AccelerationStructureBuildGeometryInfoKHR & operator=( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureBuildGeometryInfoKHR & operator=( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setType( AccelerationStructureTypeKHR type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR && setType( AccelerationStructureTypeKHR type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setFlags( BuildAccelerationStructureFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR && setFlags( BuildAccelerationStructureFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setMode( BuildAccelerationStructureModeKHR mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR && setMode( BuildAccelerationStructureModeKHR mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setSrcAccelerationStructure( AccelerationStructureKHR srcAccelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + srcAccelerationStructure = srcAccelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR && setSrcAccelerationStructure( AccelerationStructureKHR srcAccelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + srcAccelerationStructure = srcAccelerationStructure_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setDstAccelerationStructure( AccelerationStructureKHR dstAccelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + dstAccelerationStructure = dstAccelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR && setDstAccelerationStructure( AccelerationStructureKHR dstAccelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + dstAccelerationStructure = dstAccelerationStructure_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setGeometryCount( uint32_t geometryCount_ ) & VULKAN_HPP_NOEXCEPT + { + geometryCount = geometryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR && setGeometryCount( uint32_t geometryCount_ ) && VULKAN_HPP_NOEXCEPT + { + geometryCount = geometryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setPGeometries( AccelerationStructureGeometryKHR const * pGeometries_ ) & + VULKAN_HPP_NOEXCEPT + { + pGeometries = pGeometries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR && setPGeometries( AccelerationStructureGeometryKHR const * pGeometries_ ) && + VULKAN_HPP_NOEXCEPT + { + pGeometries = pGeometries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureBuildGeometryInfoKHR & + setGeometries( ArrayProxyNoTemporaries const & geometries_ ) VULKAN_HPP_NOEXCEPT + { + geometryCount = static_cast( geometries_.size() ); + pGeometries = geometries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setPpGeometries( AccelerationStructureGeometryKHR const * const * ppGeometries_ ) & + VULKAN_HPP_NOEXCEPT + { + ppGeometries = ppGeometries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR && setPpGeometries( AccelerationStructureGeometryKHR const * const * ppGeometries_ ) && + VULKAN_HPP_NOEXCEPT + { + ppGeometries = ppGeometries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureBuildGeometryInfoKHR & + setPGeometries( ArrayProxyNoTemporaries const & pGeometries_ ) VULKAN_HPP_NOEXCEPT + { + geometryCount = static_cast( pGeometries_.size() ); + ppGeometries = pGeometries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR & setScratchData( DeviceOrHostAddressKHR const & scratchData_ ) & VULKAN_HPP_NOEXCEPT + { + scratchData = scratchData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildGeometryInfoKHR && setScratchData( DeviceOrHostAddressKHR const & scratchData_ ) && VULKAN_HPP_NOEXCEPT + { + scratchData = scratchData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureBuildGeometryInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureBuildGeometryInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureBuildGeometryInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureBuildGeometryInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, type, flags, mode, srcAccelerationStructure, dstAccelerationStructure, geometryCount, pGeometries, ppGeometries, scratchData ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureBuildGeometryInfoKHR; + void const * pNext = {}; + AccelerationStructureTypeKHR type = AccelerationStructureTypeKHR::eTopLevel; + BuildAccelerationStructureFlagsKHR flags = {}; + BuildAccelerationStructureModeKHR mode = BuildAccelerationStructureModeKHR::eBuild; + AccelerationStructureKHR srcAccelerationStructure = {}; + AccelerationStructureKHR dstAccelerationStructure = {}; + uint32_t geometryCount = {}; + AccelerationStructureGeometryKHR const * pGeometries = {}; + AccelerationStructureGeometryKHR const * const * ppGeometries = {}; + DeviceOrHostAddressKHR scratchData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureBuildGeometryInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureBuildGeometryInfoKHR; + }; + + // wrapper struct for struct VkAccelerationStructureBuildRangeInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureBuildRangeInfoKHR.html + struct AccelerationStructureBuildRangeInfoKHR + { + using NativeType = VkAccelerationStructureBuildRangeInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( uint32_t primitiveCount_ = {}, + uint32_t primitiveOffset_ = {}, + uint32_t firstVertex_ = {}, + uint32_t transformOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : primitiveCount{ primitiveCount_ } + , primitiveOffset{ primitiveOffset_ } + , firstVertex{ firstVertex_ } + , transformOffset{ transformOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR AccelerationStructureBuildRangeInfoKHR( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureBuildRangeInfoKHR( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureBuildRangeInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureBuildRangeInfoKHR & operator=( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureBuildRangeInfoKHR & operator=( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setPrimitiveCount( uint32_t primitiveCount_ ) & VULKAN_HPP_NOEXCEPT + { + primitiveCount = primitiveCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR && setPrimitiveCount( uint32_t primitiveCount_ ) && VULKAN_HPP_NOEXCEPT + { + primitiveCount = primitiveCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setPrimitiveOffset( uint32_t primitiveOffset_ ) & VULKAN_HPP_NOEXCEPT + { + primitiveOffset = primitiveOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR && setPrimitiveOffset( uint32_t primitiveOffset_ ) && VULKAN_HPP_NOEXCEPT + { + primitiveOffset = primitiveOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setFirstVertex( uint32_t firstVertex_ ) & VULKAN_HPP_NOEXCEPT + { + firstVertex = firstVertex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR && setFirstVertex( uint32_t firstVertex_ ) && VULKAN_HPP_NOEXCEPT + { + firstVertex = firstVertex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & setTransformOffset( uint32_t transformOffset_ ) & VULKAN_HPP_NOEXCEPT + { + transformOffset = transformOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR && setTransformOffset( uint32_t transformOffset_ ) && VULKAN_HPP_NOEXCEPT + { + transformOffset = transformOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureBuildRangeInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureBuildRangeInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureBuildRangeInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureBuildRangeInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( primitiveCount, primitiveOffset, firstVertex, transformOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureBuildRangeInfoKHR const & ) const = default; +#else + bool operator==( AccelerationStructureBuildRangeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( primitiveCount == rhs.primitiveCount ) && ( primitiveOffset == rhs.primitiveOffset ) && ( firstVertex == rhs.firstVertex ) && + ( transformOffset == rhs.transformOffset ); +# endif + } + + bool operator!=( AccelerationStructureBuildRangeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t primitiveCount = {}; + uint32_t primitiveOffset = {}; + uint32_t firstVertex = {}; + uint32_t transformOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureBuildRangeInfoKHR; + }; +#endif + + // wrapper struct for struct VkAccelerationStructureBuildSizesInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureBuildSizesInfoKHR.html + struct AccelerationStructureBuildSizesInfoKHR + { + using NativeType = VkAccelerationStructureBuildSizesInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureBuildSizesInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR( DeviceSize accelerationStructureSize_ = {}, + DeviceSize updateScratchSize_ = {}, + DeviceSize buildScratchSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , accelerationStructureSize{ accelerationStructureSize_ } + , updateScratchSize{ updateScratchSize_ } + , buildScratchSize{ buildScratchSize_ } + { + } + + VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureBuildSizesInfoKHR( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureBuildSizesInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureBuildSizesInfoKHR & operator=( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureBuildSizesInfoKHR & operator=( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkAccelerationStructureBuildSizesInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureBuildSizesInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureBuildSizesInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureBuildSizesInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructureSize, updateScratchSize, buildScratchSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureBuildSizesInfoKHR const & ) const = default; +#else + bool operator==( AccelerationStructureBuildSizesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructureSize == rhs.accelerationStructureSize ) && + ( updateScratchSize == rhs.updateScratchSize ) && ( buildScratchSize == rhs.buildScratchSize ); +# endif + } + + bool operator!=( AccelerationStructureBuildSizesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureBuildSizesInfoKHR; + void * pNext = {}; + DeviceSize accelerationStructureSize = {}; + DeviceSize updateScratchSize = {}; + DeviceSize buildScratchSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureBuildSizesInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureBuildSizesInfoKHR; + }; + + // wrapper struct for struct VkAccelerationStructureCaptureDescriptorDataInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureCaptureDescriptorDataInfoEXT.html + struct AccelerationStructureCaptureDescriptorDataInfoEXT + { + using NativeType = VkAccelerationStructureCaptureDescriptorDataInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureCaptureDescriptorDataInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureCaptureDescriptorDataInfoEXT( AccelerationStructureKHR accelerationStructure_ = {}, + AccelerationStructureNV accelerationStructureNV_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , accelerationStructure{ accelerationStructure_ } + , accelerationStructureNV{ accelerationStructureNV_ } + { + } + + VULKAN_HPP_CONSTEXPR + AccelerationStructureCaptureDescriptorDataInfoEXT( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureCaptureDescriptorDataInfoEXT( VkAccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureCaptureDescriptorDataInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureCaptureDescriptorDataInfoEXT & + operator=( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureCaptureDescriptorDataInfoEXT & operator=( VkAccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT & setAccelerationStructure( AccelerationStructureKHR accelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT && setAccelerationStructure( AccelerationStructureKHR accelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT & setAccelerationStructureNV( AccelerationStructureNV accelerationStructureNV_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructureNV = accelerationStructureNV_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCaptureDescriptorDataInfoEXT && + setAccelerationStructureNV( AccelerationStructureNV accelerationStructureNV_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructureNV = accelerationStructureNV_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureCaptureDescriptorDataInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureCaptureDescriptorDataInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructure, accelerationStructureNV ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureCaptureDescriptorDataInfoEXT const & ) const = default; +#else + bool operator==( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ) && + ( accelerationStructureNV == rhs.accelerationStructureNV ); +# endif + } + + bool operator!=( AccelerationStructureCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureCaptureDescriptorDataInfoEXT; + void const * pNext = {}; + AccelerationStructureKHR accelerationStructure = {}; + AccelerationStructureNV accelerationStructureNV = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureCaptureDescriptorDataInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureCaptureDescriptorDataInfoEXT; + }; + + // wrapper struct for struct VkDeviceAddressRangeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceAddressRangeKHR.html + struct DeviceAddressRangeKHR + { + using NativeType = VkDeviceAddressRangeKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceAddressRangeKHR( DeviceAddress address_ = {}, DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : address{ address_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceAddressRangeKHR( DeviceAddressRangeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceAddressRangeKHR( VkDeviceAddressRangeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceAddressRangeKHR( *reinterpret_cast( &rhs ) ) + { + } + + DeviceAddressRangeKHR & operator=( DeviceAddressRangeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceAddressRangeKHR & operator=( VkDeviceAddressRangeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceAddressRangeKHR & setAddress( DeviceAddress address_ ) & VULKAN_HPP_NOEXCEPT + { + address = address_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressRangeKHR && setAddress( DeviceAddress address_ ) && VULKAN_HPP_NOEXCEPT + { + address = address_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressRangeKHR & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressRangeKHR && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceAddressRangeKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceAddressRangeKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceAddressRangeKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceAddressRangeKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( address, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceAddressRangeKHR const & ) const = default; +#else + bool operator==( DeviceAddressRangeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( address == rhs.address ) && ( size == rhs.size ); +# endif + } + + bool operator!=( DeviceAddressRangeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress address = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceAddressRangeKHR; + }; +#endif + using DeviceAddressRangeEXT = DeviceAddressRangeKHR; + + // wrapper struct for struct VkAccelerationStructureCreateInfo2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfo2KHR.html + struct AccelerationStructureCreateInfo2KHR + { + using NativeType = VkAccelerationStructureCreateInfo2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureCreateInfo2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfo2KHR( AccelerationStructureCreateFlagsKHR createFlags_ = {}, + DeviceAddressRangeKHR addressRange_ = {}, + AddressCommandFlagsKHR addressFlags_ = {}, + AccelerationStructureTypeKHR type_ = AccelerationStructureTypeKHR::eTopLevel, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , createFlags{ createFlags_ } + , addressRange{ addressRange_ } + , addressFlags{ addressFlags_ } + , type{ type_ } + { + } + + VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfo2KHR( AccelerationStructureCreateInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureCreateInfo2KHR( VkAccelerationStructureCreateInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureCreateInfo2KHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureCreateInfo2KHR & operator=( AccelerationStructureCreateInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureCreateInfo2KHR & operator=( VkAccelerationStructureCreateInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfo2KHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfo2KHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfo2KHR & setCreateFlags( AccelerationStructureCreateFlagsKHR createFlags_ ) & VULKAN_HPP_NOEXCEPT + { + createFlags = createFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfo2KHR && setCreateFlags( AccelerationStructureCreateFlagsKHR createFlags_ ) && VULKAN_HPP_NOEXCEPT + { + createFlags = createFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfo2KHR & setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfo2KHR && setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfo2KHR & setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfo2KHR && setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfo2KHR & setType( AccelerationStructureTypeKHR type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfo2KHR && setType( AccelerationStructureTypeKHR type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureCreateInfo2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureCreateInfo2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureCreateInfo2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureCreateInfo2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, createFlags, addressRange, addressFlags, type ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureCreateInfo2KHR const & ) const = default; +#else + bool operator==( AccelerationStructureCreateInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createFlags == rhs.createFlags ) && ( addressRange == rhs.addressRange ) && + ( addressFlags == rhs.addressFlags ) && ( type == rhs.type ); +# endif + } + + bool operator!=( AccelerationStructureCreateInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureCreateInfo2KHR; + void const * pNext = {}; + AccelerationStructureCreateFlagsKHR createFlags = {}; + DeviceAddressRangeKHR addressRange = {}; + AddressCommandFlagsKHR addressFlags = {}; + AccelerationStructureTypeKHR type = AccelerationStructureTypeKHR::eTopLevel; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureCreateInfo2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureCreateInfo2KHR; + }; + + // wrapper struct for struct VkAccelerationStructureCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfoKHR.html + struct AccelerationStructureCreateInfoKHR + { + using NativeType = VkAccelerationStructureCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoKHR( AccelerationStructureCreateFlagsKHR createFlags_ = {}, + Buffer buffer_ = {}, + DeviceSize offset_ = {}, + DeviceSize size_ = {}, + AccelerationStructureTypeKHR type_ = AccelerationStructureTypeKHR::eTopLevel, + DeviceAddress deviceAddress_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , createFlags{ createFlags_ } + , buffer{ buffer_ } + , offset{ offset_ } + , size{ size_ } + , type{ type_ } + , deviceAddress{ deviceAddress_ } + { + } + + VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoKHR( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureCreateInfoKHR( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureCreateInfoKHR & operator=( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureCreateInfoKHR & operator=( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setCreateFlags( AccelerationStructureCreateFlagsKHR createFlags_ ) & VULKAN_HPP_NOEXCEPT + { + createFlags = createFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR && setCreateFlags( AccelerationStructureCreateFlagsKHR createFlags_ ) && VULKAN_HPP_NOEXCEPT + { + createFlags = createFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setType( AccelerationStructureTypeKHR type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR && setType( AccelerationStructureTypeKHR type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & setDeviceAddress( DeviceAddress deviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR && setDeviceAddress( DeviceAddress deviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, createFlags, buffer, offset, size, type, deviceAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureCreateInfoKHR const & ) const = default; +#else + bool operator==( AccelerationStructureCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createFlags == rhs.createFlags ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && + ( size == rhs.size ) && ( type == rhs.type ) && ( deviceAddress == rhs.deviceAddress ); +# endif + } + + bool operator!=( AccelerationStructureCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureCreateInfoKHR; + void const * pNext = {}; + AccelerationStructureCreateFlagsKHR createFlags = {}; + Buffer buffer = {}; + DeviceSize offset = {}; + DeviceSize size = {}; + AccelerationStructureTypeKHR type = AccelerationStructureTypeKHR::eTopLevel; + DeviceAddress deviceAddress = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureCreateInfoKHR; + }; + + // wrapper struct for struct VkGeometryTrianglesNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryTrianglesNV.html + struct GeometryTrianglesNV + { + using NativeType = VkGeometryTrianglesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeometryTrianglesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeometryTrianglesNV( Buffer vertexData_ = {}, + DeviceSize vertexOffset_ = {}, + uint32_t vertexCount_ = {}, + DeviceSize vertexStride_ = {}, + Format vertexFormat_ = Format::eUndefined, + Buffer indexData_ = {}, + DeviceSize indexOffset_ = {}, + uint32_t indexCount_ = {}, + IndexType indexType_ = IndexType::eUint16, + Buffer transformData_ = {}, + DeviceSize transformOffset_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vertexData{ vertexData_ } + , vertexOffset{ vertexOffset_ } + , vertexCount{ vertexCount_ } + , vertexStride{ vertexStride_ } + , vertexFormat{ vertexFormat_ } + , indexData{ indexData_ } + , indexOffset{ indexOffset_ } + , indexCount{ indexCount_ } + , indexType{ indexType_ } + , transformData{ transformData_ } + , transformOffset{ transformOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR GeometryTrianglesNV( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryTrianglesNV( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryTrianglesNV( *reinterpret_cast( &rhs ) ) + { + } + + GeometryTrianglesNV & operator=( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GeometryTrianglesNV & operator=( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexData( Buffer vertexData_ ) & VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setVertexData( Buffer vertexData_ ) && VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexOffset( DeviceSize vertexOffset_ ) & VULKAN_HPP_NOEXCEPT + { + vertexOffset = vertexOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setVertexOffset( DeviceSize vertexOffset_ ) && VULKAN_HPP_NOEXCEPT + { + vertexOffset = vertexOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexCount( uint32_t vertexCount_ ) & VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setVertexCount( uint32_t vertexCount_ ) && VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexStride( DeviceSize vertexStride_ ) & VULKAN_HPP_NOEXCEPT + { + vertexStride = vertexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setVertexStride( DeviceSize vertexStride_ ) && VULKAN_HPP_NOEXCEPT + { + vertexStride = vertexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setVertexFormat( Format vertexFormat_ ) & VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setVertexFormat( Format vertexFormat_ ) && VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexData( Buffer indexData_ ) & VULKAN_HPP_NOEXCEPT + { + indexData = indexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setIndexData( Buffer indexData_ ) && VULKAN_HPP_NOEXCEPT + { + indexData = indexData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexOffset( DeviceSize indexOffset_ ) & VULKAN_HPP_NOEXCEPT + { + indexOffset = indexOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setIndexOffset( DeviceSize indexOffset_ ) && VULKAN_HPP_NOEXCEPT + { + indexOffset = indexOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexCount( uint32_t indexCount_ ) & VULKAN_HPP_NOEXCEPT + { + indexCount = indexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setIndexCount( uint32_t indexCount_ ) && VULKAN_HPP_NOEXCEPT + { + indexCount = indexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setIndexType( IndexType indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setIndexType( IndexType indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setTransformData( Buffer transformData_ ) & VULKAN_HPP_NOEXCEPT + { + transformData = transformData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setTransformData( Buffer transformData_ ) && VULKAN_HPP_NOEXCEPT + { + transformData = transformData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & setTransformOffset( DeviceSize transformOffset_ ) & VULKAN_HPP_NOEXCEPT + { + transformOffset = transformOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV && setTransformOffset( DeviceSize transformOffset_ ) && VULKAN_HPP_NOEXCEPT + { + transformOffset = transformOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGeometryTrianglesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeometryTrianglesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeometryTrianglesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGeometryTrianglesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + vertexData, + vertexOffset, + vertexCount, + vertexStride, + vertexFormat, + indexData, + indexOffset, + indexCount, + indexType, + transformData, + transformOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeometryTrianglesNV const & ) const = default; +#else + bool operator==( GeometryTrianglesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexData == rhs.vertexData ) && ( vertexOffset == rhs.vertexOffset ) && + ( vertexCount == rhs.vertexCount ) && ( vertexStride == rhs.vertexStride ) && ( vertexFormat == rhs.vertexFormat ) && + ( indexData == rhs.indexData ) && ( indexOffset == rhs.indexOffset ) && ( indexCount == rhs.indexCount ) && ( indexType == rhs.indexType ) && + ( transformData == rhs.transformData ) && ( transformOffset == rhs.transformOffset ); +# endif + } + + bool operator!=( GeometryTrianglesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGeometryTrianglesNV; + void const * pNext = {}; + Buffer vertexData = {}; + DeviceSize vertexOffset = {}; + uint32_t vertexCount = {}; + DeviceSize vertexStride = {}; + Format vertexFormat = Format::eUndefined; + Buffer indexData = {}; + DeviceSize indexOffset = {}; + uint32_t indexCount = {}; + IndexType indexType = IndexType::eUint16; + Buffer transformData = {}; + DeviceSize transformOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GeometryTrianglesNV; + }; +#endif + + template <> + struct CppType + { + using Type = GeometryTrianglesNV; + }; + + // wrapper struct for struct VkGeometryAABBNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryAABBNV.html + struct GeometryAABBNV + { + using NativeType = VkGeometryAABBNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeometryAabbNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeometryAABBNV( + Buffer aabbData_ = {}, uint32_t numAABBs_ = {}, uint32_t stride_ = {}, DeviceSize offset_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , aabbData{ aabbData_ } + , numAABBs{ numAABBs_ } + , stride{ stride_ } + , offset{ offset_ } + { + } + + VULKAN_HPP_CONSTEXPR GeometryAABBNV( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryAABBNV( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryAABBNV( *reinterpret_cast( &rhs ) ) {} + + GeometryAABBNV & operator=( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GeometryAABBNV & operator=( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setAabbData( Buffer aabbData_ ) & VULKAN_HPP_NOEXCEPT + { + aabbData = aabbData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV && setAabbData( Buffer aabbData_ ) && VULKAN_HPP_NOEXCEPT + { + aabbData = aabbData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setNumAABBs( uint32_t numAABBs_ ) & VULKAN_HPP_NOEXCEPT + { + numAABBs = numAABBs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV && setNumAABBs( uint32_t numAABBs_ ) && VULKAN_HPP_NOEXCEPT + { + numAABBs = numAABBs_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setStride( uint32_t stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV && setStride( uint32_t stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGeometryAABBNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeometryAABBNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeometryAABBNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGeometryAABBNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, aabbData, numAABBs, stride, offset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeometryAABBNV const & ) const = default; +#else + bool operator==( GeometryAABBNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( aabbData == rhs.aabbData ) && ( numAABBs == rhs.numAABBs ) && ( stride == rhs.stride ) && + ( offset == rhs.offset ); +# endif + } + + bool operator!=( GeometryAABBNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGeometryAabbNV; + void const * pNext = {}; + Buffer aabbData = {}; + uint32_t numAABBs = {}; + uint32_t stride = {}; + DeviceSize offset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GeometryAABBNV; + }; +#endif + + template <> + struct CppType + { + using Type = GeometryAABBNV; + }; + + // wrapper struct for struct VkGeometryDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryDataNV.html + struct GeometryDataNV + { + using NativeType = VkGeometryDataNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeometryDataNV( GeometryTrianglesNV triangles_ = {}, GeometryAABBNV aabbs_ = {} ) VULKAN_HPP_NOEXCEPT + : triangles{ triangles_ } + , aabbs{ aabbs_ } + { + } + + VULKAN_HPP_CONSTEXPR GeometryDataNV( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryDataNV( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryDataNV( *reinterpret_cast( &rhs ) ) {} + + GeometryDataNV & operator=( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GeometryDataNV & operator=( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeometryDataNV & setTriangles( GeometryTrianglesNV const & triangles_ ) & VULKAN_HPP_NOEXCEPT + { + triangles = triangles_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryDataNV && setTriangles( GeometryTrianglesNV const & triangles_ ) && VULKAN_HPP_NOEXCEPT + { + triangles = triangles_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryDataNV & setAabbs( GeometryAABBNV const & aabbs_ ) & VULKAN_HPP_NOEXCEPT + { + aabbs = aabbs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryDataNV && setAabbs( GeometryAABBNV const & aabbs_ ) && VULKAN_HPP_NOEXCEPT + { + aabbs = aabbs_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGeometryDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeometryDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeometryDataNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGeometryDataNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( triangles, aabbs ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeometryDataNV const & ) const = default; +#else + bool operator==( GeometryDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( triangles == rhs.triangles ) && ( aabbs == rhs.aabbs ); +# endif + } + + bool operator!=( GeometryDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + GeometryTrianglesNV triangles = {}; + GeometryAABBNV aabbs = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GeometryDataNV; + }; +#endif + + // wrapper struct for struct VkGeometryNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeometryNV.html + struct GeometryNV + { + using NativeType = VkGeometryNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeometryNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeometryNV( GeometryTypeKHR geometryType_ = GeometryTypeKHR::eTriangles, + GeometryDataNV geometry_ = {}, + GeometryFlagsKHR flags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , geometryType{ geometryType_ } + , geometry{ geometry_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR GeometryNV( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeometryNV( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT : GeometryNV( *reinterpret_cast( &rhs ) ) {} + + GeometryNV & operator=( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GeometryNV & operator=( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeometryNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryNV & setGeometryType( GeometryTypeKHR geometryType_ ) & VULKAN_HPP_NOEXCEPT + { + geometryType = geometryType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryNV && setGeometryType( GeometryTypeKHR geometryType_ ) && VULKAN_HPP_NOEXCEPT + { + geometryType = geometryType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryNV & setGeometry( GeometryDataNV const & geometry_ ) & VULKAN_HPP_NOEXCEPT + { + geometry = geometry_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryNV && setGeometry( GeometryDataNV const & geometry_ ) && VULKAN_HPP_NOEXCEPT + { + geometry = geometry_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeometryNV & setFlags( GeometryFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeometryNV && setFlags( GeometryFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGeometryNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeometryNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeometryNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGeometryNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, geometryType, geometry, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeometryNV const & ) const = default; +#else + bool operator==( GeometryNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( geometryType == rhs.geometryType ) && ( geometry == rhs.geometry ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( GeometryNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGeometryNV; + void const * pNext = {}; + GeometryTypeKHR geometryType = GeometryTypeKHR::eTriangles; + GeometryDataNV geometry = {}; + GeometryFlagsKHR flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GeometryNV; + }; +#endif + + template <> + struct CppType + { + using Type = GeometryNV; + }; + + // wrapper struct for struct VkAccelerationStructureInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureInfoNV.html + struct AccelerationStructureInfoNV + { + using NativeType = VkAccelerationStructureInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureInfoNV( AccelerationStructureTypeNV type_ = {}, + BuildAccelerationStructureFlagsNV flags_ = {}, + uint32_t instanceCount_ = {}, + uint32_t geometryCount_ = {}, + GeometryNV const * pGeometries_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , flags{ flags_ } + , instanceCount{ instanceCount_ } + , geometryCount{ geometryCount_ } + , pGeometries{ pGeometries_ } + { + } + + VULKAN_HPP_CONSTEXPR AccelerationStructureInfoNV( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureInfoNV( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureInfoNV( AccelerationStructureTypeNV type_, + BuildAccelerationStructureFlagsNV flags_, + uint32_t instanceCount_, + ArrayProxyNoTemporaries const & geometries_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , type( type_ ) + , flags( flags_ ) + , instanceCount( instanceCount_ ) + , geometryCount( static_cast( geometries_.size() ) ) + , pGeometries( geometries_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + AccelerationStructureInfoNV & operator=( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureInfoNV & operator=( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setType( AccelerationStructureTypeNV type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV && setType( AccelerationStructureTypeNV type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setFlags( BuildAccelerationStructureFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV && setFlags( BuildAccelerationStructureFlagsNV flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setInstanceCount( uint32_t instanceCount_ ) & VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV && setInstanceCount( uint32_t instanceCount_ ) && VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setGeometryCount( uint32_t geometryCount_ ) & VULKAN_HPP_NOEXCEPT + { + geometryCount = geometryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV && setGeometryCount( uint32_t geometryCount_ ) && VULKAN_HPP_NOEXCEPT + { + geometryCount = geometryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & setPGeometries( GeometryNV const * pGeometries_ ) & VULKAN_HPP_NOEXCEPT + { + pGeometries = pGeometries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV && setPGeometries( GeometryNV const * pGeometries_ ) && VULKAN_HPP_NOEXCEPT + { + pGeometries = pGeometries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureInfoNV & setGeometries( ArrayProxyNoTemporaries const & geometries_ ) VULKAN_HPP_NOEXCEPT + { + geometryCount = static_cast( geometries_.size() ); + pGeometries = geometries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, flags, instanceCount, geometryCount, pGeometries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureInfoNV const & ) const = default; +#else + bool operator==( AccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( flags == rhs.flags ) && ( instanceCount == rhs.instanceCount ) && + ( geometryCount == rhs.geometryCount ) && ( pGeometries == rhs.pGeometries ); +# endif + } + + bool operator!=( AccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureInfoNV; + void const * pNext = {}; + AccelerationStructureTypeNV type = {}; + BuildAccelerationStructureFlagsNV flags = {}; + uint32_t instanceCount = {}; + uint32_t geometryCount = {}; + GeometryNV const * pGeometries = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureInfoNV; + }; + + // wrapper struct for struct VkAccelerationStructureCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureCreateInfoNV.html + struct AccelerationStructureCreateInfoNV + { + using NativeType = VkAccelerationStructureCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoNV( DeviceSize compactedSize_ = {}, + AccelerationStructureInfoNV info_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , compactedSize{ compactedSize_ } + , info{ info_ } + { + } + + VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoNV( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureCreateInfoNV( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureCreateInfoNV & operator=( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureCreateInfoNV & operator=( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setCompactedSize( DeviceSize compactedSize_ ) & VULKAN_HPP_NOEXCEPT + { + compactedSize = compactedSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV && setCompactedSize( DeviceSize compactedSize_ ) && VULKAN_HPP_NOEXCEPT + { + compactedSize = compactedSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & setInfo( AccelerationStructureInfoNV const & info_ ) & VULKAN_HPP_NOEXCEPT + { + info = info_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV && setInfo( AccelerationStructureInfoNV const & info_ ) && VULKAN_HPP_NOEXCEPT + { + info = info_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, compactedSize, info ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureCreateInfoNV const & ) const = default; +#else + bool operator==( AccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( compactedSize == rhs.compactedSize ) && ( info == rhs.info ); +# endif + } + + bool operator!=( AccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureCreateInfoNV; + void const * pNext = {}; + DeviceSize compactedSize = {}; + AccelerationStructureInfoNV info = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureCreateInfoNV; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX.html + struct AccelerationStructureDenseGeometryFormatTrianglesDataAMDX + { + using NativeType = VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureDenseGeometryFormatTrianglesDataAMDX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureDenseGeometryFormatTrianglesDataAMDX( DeviceOrHostAddressConstKHR compressedData_ = {}, + DeviceSize dataSize_ = {}, + uint32_t numTriangles_ = {}, + uint32_t numVertices_ = {}, + uint32_t maxPrimitiveIndex_ = {}, + uint32_t maxGeometryIndex_ = {}, + CompressedTriangleFormatAMDX format_ = CompressedTriangleFormatAMDX::eDgf1, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , compressedData{ compressedData_ } + , dataSize{ dataSize_ } + , numTriangles{ numTriangles_ } + , numVertices{ numVertices_ } + , maxPrimitiveIndex{ maxPrimitiveIndex_ } + , maxGeometryIndex{ maxGeometryIndex_ } + , format{ format_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX( AccelerationStructureDenseGeometryFormatTrianglesDataAMDX const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureDenseGeometryFormatTrianglesDataAMDX( VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureDenseGeometryFormatTrianglesDataAMDX( + *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureDenseGeometryFormatTrianglesDataAMDX & + operator=( AccelerationStructureDenseGeometryFormatTrianglesDataAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureDenseGeometryFormatTrianglesDataAMDX & + operator=( VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX & + setCompressedData( DeviceOrHostAddressConstKHR const & compressedData_ ) & + VULKAN_HPP_NOEXCEPT + { + compressedData = compressedData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX && + setCompressedData( DeviceOrHostAddressConstKHR const & compressedData_ ) && + VULKAN_HPP_NOEXCEPT + { + compressedData = compressedData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX & setDataSize( DeviceSize dataSize_ ) & VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX && setDataSize( DeviceSize dataSize_ ) && VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX & setNumTriangles( uint32_t numTriangles_ ) & VULKAN_HPP_NOEXCEPT + { + numTriangles = numTriangles_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX && setNumTriangles( uint32_t numTriangles_ ) && VULKAN_HPP_NOEXCEPT + { + numTriangles = numTriangles_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX & setNumVertices( uint32_t numVertices_ ) & VULKAN_HPP_NOEXCEPT + { + numVertices = numVertices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX && setNumVertices( uint32_t numVertices_ ) && VULKAN_HPP_NOEXCEPT + { + numVertices = numVertices_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX & setMaxPrimitiveIndex( uint32_t maxPrimitiveIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + maxPrimitiveIndex = maxPrimitiveIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX && setMaxPrimitiveIndex( uint32_t maxPrimitiveIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + maxPrimitiveIndex = maxPrimitiveIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX & setMaxGeometryIndex( uint32_t maxGeometryIndex_ ) & VULKAN_HPP_NOEXCEPT + { + maxGeometryIndex = maxGeometryIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX && setMaxGeometryIndex( uint32_t maxGeometryIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + maxGeometryIndex = maxGeometryIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX & setFormat( CompressedTriangleFormatAMDX format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDenseGeometryFormatTrianglesDataAMDX && setFormat( CompressedTriangleFormatAMDX format_ ) && + VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureDenseGeometryFormatTrianglesDataAMDX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, compressedData, dataSize, numTriangles, numVertices, maxPrimitiveIndex, maxGeometryIndex, format ); + } +# endif + + public: + StructureType sType = StructureType::eAccelerationStructureDenseGeometryFormatTrianglesDataAMDX; + void const * pNext = {}; + DeviceOrHostAddressConstKHR compressedData = {}; + DeviceSize dataSize = {}; + uint32_t numTriangles = {}; + uint32_t numVertices = {}; + uint32_t maxPrimitiveIndex = {}; + uint32_t maxGeometryIndex = {}; + CompressedTriangleFormatAMDX format = CompressedTriangleFormatAMDX::eDgf1; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureDenseGeometryFormatTrianglesDataAMDX; + }; +# endif + + template <> + struct CppType + { + using Type = AccelerationStructureDenseGeometryFormatTrianglesDataAMDX; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkAccelerationStructureDeviceAddressInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureDeviceAddressInfoKHR.html + struct AccelerationStructureDeviceAddressInfoKHR + { + using NativeType = VkAccelerationStructureDeviceAddressInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureDeviceAddressInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR( AccelerationStructureKHR accelerationStructure_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , accelerationStructure{ accelerationStructure_ } + { + } + + VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureDeviceAddressInfoKHR( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureDeviceAddressInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureDeviceAddressInfoKHR & operator=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureDeviceAddressInfoKHR & operator=( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR & setAccelerationStructure( AccelerationStructureKHR accelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR && setAccelerationStructure( AccelerationStructureKHR accelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureDeviceAddressInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureDeviceAddressInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureDeviceAddressInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureDeviceAddressInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureDeviceAddressInfoKHR const & ) const = default; +#else + bool operator==( AccelerationStructureDeviceAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ); +# endif + } + + bool operator!=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureDeviceAddressInfoKHR; + void const * pNext = {}; + AccelerationStructureKHR accelerationStructure = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureDeviceAddressInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureDeviceAddressInfoKHR; + }; + + // wrapper struct for struct VkAccelerationStructureGeometryLinearSweptSpheresDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryLinearSweptSpheresDataNV.html + struct AccelerationStructureGeometryLinearSweptSpheresDataNV + { + using NativeType = VkAccelerationStructureGeometryLinearSweptSpheresDataNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryLinearSweptSpheresDataNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureGeometryLinearSweptSpheresDataNV( Format vertexFormat_ = Format::eUndefined, + DeviceOrHostAddressConstKHR vertexData_ = {}, + DeviceSize vertexStride_ = {}, + Format radiusFormat_ = Format::eUndefined, + DeviceOrHostAddressConstKHR radiusData_ = {}, + DeviceSize radiusStride_ = {}, + IndexType indexType_ = IndexType::eUint16, + DeviceOrHostAddressConstKHR indexData_ = {}, + DeviceSize indexStride_ = {}, + RayTracingLssIndexingModeNV indexingMode_ = RayTracingLssIndexingModeNV::eList, + RayTracingLssPrimitiveEndCapsModeNV endCapsMode_ = RayTracingLssPrimitiveEndCapsModeNV::eNone, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vertexFormat{ vertexFormat_ } + , vertexData{ vertexData_ } + , vertexStride{ vertexStride_ } + , radiusFormat{ radiusFormat_ } + , radiusData{ radiusData_ } + , radiusStride{ radiusStride_ } + , indexType{ indexType_ } + , indexData{ indexData_ } + , indexStride{ indexStride_ } + , indexingMode{ indexingMode_ } + , endCapsMode{ endCapsMode_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureGeometryLinearSweptSpheresDataNV( AccelerationStructureGeometryLinearSweptSpheresDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryLinearSweptSpheresDataNV( VkAccelerationStructureGeometryLinearSweptSpheresDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryLinearSweptSpheresDataNV( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureGeometryLinearSweptSpheresDataNV & + operator=( AccelerationStructureGeometryLinearSweptSpheresDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureGeometryLinearSweptSpheresDataNV & operator=( VkAccelerationStructureGeometryLinearSweptSpheresDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setVertexFormat( Format vertexFormat_ ) & VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setVertexFormat( Format vertexFormat_ ) && VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setVertexData( DeviceOrHostAddressConstKHR const & vertexData_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setVertexData( DeviceOrHostAddressConstKHR const & vertexData_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setVertexStride( DeviceSize vertexStride_ ) & VULKAN_HPP_NOEXCEPT + { + vertexStride = vertexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setVertexStride( DeviceSize vertexStride_ ) && VULKAN_HPP_NOEXCEPT + { + vertexStride = vertexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setRadiusFormat( Format radiusFormat_ ) & VULKAN_HPP_NOEXCEPT + { + radiusFormat = radiusFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setRadiusFormat( Format radiusFormat_ ) && VULKAN_HPP_NOEXCEPT + { + radiusFormat = radiusFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setRadiusData( DeviceOrHostAddressConstKHR const & radiusData_ ) & + VULKAN_HPP_NOEXCEPT + { + radiusData = radiusData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setRadiusData( DeviceOrHostAddressConstKHR const & radiusData_ ) && + VULKAN_HPP_NOEXCEPT + { + radiusData = radiusData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setRadiusStride( DeviceSize radiusStride_ ) & VULKAN_HPP_NOEXCEPT + { + radiusStride = radiusStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setRadiusStride( DeviceSize radiusStride_ ) && VULKAN_HPP_NOEXCEPT + { + radiusStride = radiusStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setIndexType( IndexType indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setIndexType( IndexType indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setIndexData( DeviceOrHostAddressConstKHR const & indexData_ ) & + VULKAN_HPP_NOEXCEPT + { + indexData = indexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setIndexData( DeviceOrHostAddressConstKHR const & indexData_ ) && + VULKAN_HPP_NOEXCEPT + { + indexData = indexData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setIndexStride( DeviceSize indexStride_ ) & VULKAN_HPP_NOEXCEPT + { + indexStride = indexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setIndexStride( DeviceSize indexStride_ ) && VULKAN_HPP_NOEXCEPT + { + indexStride = indexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setIndexingMode( RayTracingLssIndexingModeNV indexingMode_ ) & + VULKAN_HPP_NOEXCEPT + { + indexingMode = indexingMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setIndexingMode( RayTracingLssIndexingModeNV indexingMode_ ) && + VULKAN_HPP_NOEXCEPT + { + indexingMode = indexingMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV & setEndCapsMode( RayTracingLssPrimitiveEndCapsModeNV endCapsMode_ ) & + VULKAN_HPP_NOEXCEPT + { + endCapsMode = endCapsMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryLinearSweptSpheresDataNV && setEndCapsMode( RayTracingLssPrimitiveEndCapsModeNV endCapsMode_ ) && + VULKAN_HPP_NOEXCEPT + { + endCapsMode = endCapsMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureGeometryLinearSweptSpheresDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryLinearSweptSpheresDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryLinearSweptSpheresDataNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryLinearSweptSpheresDataNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + vertexFormat, + vertexData, + vertexStride, + radiusFormat, + radiusData, + radiusStride, + indexType, + indexData, + indexStride, + indexingMode, + endCapsMode ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureGeometryLinearSweptSpheresDataNV; + void const * pNext = {}; + Format vertexFormat = Format::eUndefined; + DeviceOrHostAddressConstKHR vertexData = {}; + DeviceSize vertexStride = {}; + Format radiusFormat = Format::eUndefined; + DeviceOrHostAddressConstKHR radiusData = {}; + DeviceSize radiusStride = {}; + IndexType indexType = IndexType::eUint16; + DeviceOrHostAddressConstKHR indexData = {}; + DeviceSize indexStride = {}; + RayTracingLssIndexingModeNV indexingMode = RayTracingLssIndexingModeNV::eList; + RayTracingLssPrimitiveEndCapsModeNV endCapsMode = RayTracingLssPrimitiveEndCapsModeNV::eNone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureGeometryLinearSweptSpheresDataNV; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryLinearSweptSpheresDataNV; + }; + + // wrapper struct for struct VkAccelerationStructureGeometryMotionTrianglesDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureGeometryMotionTrianglesDataNV.html + struct AccelerationStructureGeometryMotionTrianglesDataNV + { + using NativeType = VkAccelerationStructureGeometryMotionTrianglesDataNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV( DeviceOrHostAddressConstKHR vertexData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vertexData{ vertexData_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureGeometryMotionTrianglesDataNV( AccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometryMotionTrianglesDataNV( VkAccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometryMotionTrianglesDataNV( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureGeometryMotionTrianglesDataNV & + operator=( AccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureGeometryMotionTrianglesDataNV & operator=( VkAccelerationStructureGeometryMotionTrianglesDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV & setVertexData( DeviceOrHostAddressConstKHR const & vertexData_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometryMotionTrianglesDataNV && setVertexData( DeviceOrHostAddressConstKHR const & vertexData_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureGeometryMotionTrianglesDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryMotionTrianglesDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryMotionTrianglesDataNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometryMotionTrianglesDataNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexData ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV; + void const * pNext = {}; + DeviceOrHostAddressConstKHR vertexData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureGeometryMotionTrianglesDataNV; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureGeometryMotionTrianglesDataNV; + }; + + // wrapper struct for struct VkAccelerationStructureGeometrySpheresDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureGeometrySpheresDataNV.html + struct AccelerationStructureGeometrySpheresDataNV + { + using NativeType = VkAccelerationStructureGeometrySpheresDataNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometrySpheresDataNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV( Format vertexFormat_ = Format::eUndefined, + DeviceOrHostAddressConstKHR vertexData_ = {}, + DeviceSize vertexStride_ = {}, + Format radiusFormat_ = Format::eUndefined, + DeviceOrHostAddressConstKHR radiusData_ = {}, + DeviceSize radiusStride_ = {}, + IndexType indexType_ = IndexType::eUint16, + DeviceOrHostAddressConstKHR indexData_ = {}, + DeviceSize indexStride_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vertexFormat{ vertexFormat_ } + , vertexData{ vertexData_ } + , vertexStride{ vertexStride_ } + , radiusFormat{ radiusFormat_ } + , radiusData{ radiusData_ } + , radiusStride{ radiusStride_ } + , indexType{ indexType_ } + , indexData{ indexData_ } + , indexStride{ indexStride_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV( AccelerationStructureGeometrySpheresDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureGeometrySpheresDataNV( VkAccelerationStructureGeometrySpheresDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureGeometrySpheresDataNV( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureGeometrySpheresDataNV & operator=( AccelerationStructureGeometrySpheresDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureGeometrySpheresDataNV & operator=( VkAccelerationStructureGeometrySpheresDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV & setVertexFormat( Format vertexFormat_ ) & VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV && setVertexFormat( Format vertexFormat_ ) && VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV & setVertexData( DeviceOrHostAddressConstKHR const & vertexData_ ) & VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV && setVertexData( DeviceOrHostAddressConstKHR const & vertexData_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexData = vertexData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV & setVertexStride( DeviceSize vertexStride_ ) & VULKAN_HPP_NOEXCEPT + { + vertexStride = vertexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV && setVertexStride( DeviceSize vertexStride_ ) && VULKAN_HPP_NOEXCEPT + { + vertexStride = vertexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV & setRadiusFormat( Format radiusFormat_ ) & VULKAN_HPP_NOEXCEPT + { + radiusFormat = radiusFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV && setRadiusFormat( Format radiusFormat_ ) && VULKAN_HPP_NOEXCEPT + { + radiusFormat = radiusFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV & setRadiusData( DeviceOrHostAddressConstKHR const & radiusData_ ) & VULKAN_HPP_NOEXCEPT + { + radiusData = radiusData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV && setRadiusData( DeviceOrHostAddressConstKHR const & radiusData_ ) && + VULKAN_HPP_NOEXCEPT + { + radiusData = radiusData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV & setRadiusStride( DeviceSize radiusStride_ ) & VULKAN_HPP_NOEXCEPT + { + radiusStride = radiusStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV && setRadiusStride( DeviceSize radiusStride_ ) && VULKAN_HPP_NOEXCEPT + { + radiusStride = radiusStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV & setIndexType( IndexType indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV && setIndexType( IndexType indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV & setIndexData( DeviceOrHostAddressConstKHR const & indexData_ ) & VULKAN_HPP_NOEXCEPT + { + indexData = indexData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV && setIndexData( DeviceOrHostAddressConstKHR const & indexData_ ) && VULKAN_HPP_NOEXCEPT + { + indexData = indexData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV & setIndexStride( DeviceSize indexStride_ ) & VULKAN_HPP_NOEXCEPT + { + indexStride = indexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureGeometrySpheresDataNV && setIndexStride( DeviceSize indexStride_ ) && VULKAN_HPP_NOEXCEPT + { + indexStride = indexStride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureGeometrySpheresDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometrySpheresDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometrySpheresDataNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureGeometrySpheresDataNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexFormat, vertexData, vertexStride, radiusFormat, radiusData, radiusStride, indexType, indexData, indexStride ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureGeometrySpheresDataNV; + void const * pNext = {}; + Format vertexFormat = Format::eUndefined; + DeviceOrHostAddressConstKHR vertexData = {}; + DeviceSize vertexStride = {}; + Format radiusFormat = Format::eUndefined; + DeviceOrHostAddressConstKHR radiusData = {}; + DeviceSize radiusStride = {}; + IndexType indexType = IndexType::eUint16; + DeviceOrHostAddressConstKHR indexData = {}; + DeviceSize indexStride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureGeometrySpheresDataNV; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureGeometrySpheresDataNV; + }; + + // wrapper struct for struct VkTransformMatrixKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTransformMatrixKHR.html + struct TransformMatrixKHR + { + using NativeType = VkTransformMatrixKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR( std::array, 3> const & matrix_ = {} ) VULKAN_HPP_NOEXCEPT : matrix{ matrix_ } {} + + VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TransformMatrixKHR( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT : TransformMatrixKHR( *reinterpret_cast( &rhs ) ) {} + + TransformMatrixKHR & operator=( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TransformMatrixKHR & operator=( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR & setMatrix( std::array, 3> matrix_ ) & VULKAN_HPP_NOEXCEPT + { + matrix = matrix_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR && setMatrix( std::array, 3> matrix_ ) && VULKAN_HPP_NOEXCEPT + { + matrix = matrix_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTransformMatrixKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTransformMatrixKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTransformMatrixKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTransformMatrixKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( matrix ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TransformMatrixKHR const & ) const = default; +#else + bool operator==( TransformMatrixKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( matrix == rhs.matrix ); +# endif + } + + bool operator!=( TransformMatrixKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ArrayWrapper2D matrix = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TransformMatrixKHR; + }; +#endif + using TransformMatrixNV = TransformMatrixKHR; + + // wrapper struct for struct VkAccelerationStructureInstanceKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureInstanceKHR.html + struct AccelerationStructureInstanceKHR + { + using NativeType = VkAccelerationStructureInstanceKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR( TransformMatrixKHR transform_ = {}, + uint32_t instanceCustomIndex_ = {}, + uint32_t mask_ = {}, + uint32_t instanceShaderBindingTableRecordOffset_ = {}, + GeometryInstanceFlagsKHR flags_ = {}, + uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT + : transform{ transform_ } + , instanceCustomIndex{ instanceCustomIndex_ } + , mask{ mask_ } + , instanceShaderBindingTableRecordOffset{ instanceShaderBindingTableRecordOffset_ } + , flags{ flags_ } + , accelerationStructureReference{ accelerationStructureReference_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureInstanceKHR( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureInstanceKHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureInstanceKHR & operator=( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureInstanceKHR & operator=( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setTransform( TransformMatrixKHR const & transform_ ) & VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR && setTransform( TransformMatrixKHR const & transform_ ) && VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) & VULKAN_HPP_NOEXCEPT + { + instanceCustomIndex = instanceCustomIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR && setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) && VULKAN_HPP_NOEXCEPT + { + instanceCustomIndex = instanceCustomIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setMask( uint32_t mask_ ) & VULKAN_HPP_NOEXCEPT + { + mask = mask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR && setMask( uint32_t mask_ ) && VULKAN_HPP_NOEXCEPT + { + mask = mask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) & + VULKAN_HPP_NOEXCEPT + { + instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR && setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) && + VULKAN_HPP_NOEXCEPT + { + instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_; + return std::move( *this ); + } + + AccelerationStructureInstanceKHR & setFlags( GeometryInstanceFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = *reinterpret_cast( &flags_ ); + return *this; + } + + AccelerationStructureInstanceKHR && setFlags( GeometryInstanceFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = *reinterpret_cast( &flags_ ); + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructureReference = accelerationStructureReference_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR && setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructureReference = accelerationStructureReference_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureInstanceKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureInstanceKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureInstanceKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureInstanceKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( transform, instanceCustomIndex, mask, instanceShaderBindingTableRecordOffset, flags, accelerationStructureReference ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureInstanceKHR const & ) const = default; +#else + bool operator==( AccelerationStructureInstanceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( transform == rhs.transform ) && ( instanceCustomIndex == rhs.instanceCustomIndex ) && ( mask == rhs.mask ) && + ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && ( flags == rhs.flags ) && + ( accelerationStructureReference == rhs.accelerationStructureReference ); +# endif + } + + bool operator!=( AccelerationStructureInstanceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + TransformMatrixKHR transform = {}; + uint32_t instanceCustomIndex : 24; + uint32_t mask : 8; + uint32_t instanceShaderBindingTableRecordOffset : 24; + VkGeometryInstanceFlagsKHR flags : 8; + uint64_t accelerationStructureReference = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureInstanceKHR; + }; +#endif + using AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR; + + // wrapper struct for struct VkAccelerationStructureMatrixMotionInstanceNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureMatrixMotionInstanceNV.html + struct AccelerationStructureMatrixMotionInstanceNV + { + using NativeType = VkAccelerationStructureMatrixMotionInstanceNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV( TransformMatrixKHR transformT0_ = {}, + TransformMatrixKHR transformT1_ = {}, + uint32_t instanceCustomIndex_ = {}, + uint32_t mask_ = {}, + uint32_t instanceShaderBindingTableRecordOffset_ = {}, + GeometryInstanceFlagsKHR flags_ = {}, + uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT + : transformT0{ transformT0_ } + , transformT1{ transformT1_ } + , instanceCustomIndex{ instanceCustomIndex_ } + , mask{ mask_ } + , instanceShaderBindingTableRecordOffset{ instanceShaderBindingTableRecordOffset_ } + , flags{ flags_ } + , accelerationStructureReference{ accelerationStructureReference_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureMatrixMotionInstanceNV( AccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMatrixMotionInstanceNV( VkAccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureMatrixMotionInstanceNV( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureMatrixMotionInstanceNV & operator=( AccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureMatrixMotionInstanceNV & operator=( VkAccelerationStructureMatrixMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setTransformT0( TransformMatrixKHR const & transformT0_ ) & VULKAN_HPP_NOEXCEPT + { + transformT0 = transformT0_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV && setTransformT0( TransformMatrixKHR const & transformT0_ ) && VULKAN_HPP_NOEXCEPT + { + transformT0 = transformT0_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setTransformT1( TransformMatrixKHR const & transformT1_ ) & VULKAN_HPP_NOEXCEPT + { + transformT1 = transformT1_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV && setTransformT1( TransformMatrixKHR const & transformT1_ ) && VULKAN_HPP_NOEXCEPT + { + transformT1 = transformT1_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) & VULKAN_HPP_NOEXCEPT + { + instanceCustomIndex = instanceCustomIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV && setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) && VULKAN_HPP_NOEXCEPT + { + instanceCustomIndex = instanceCustomIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setMask( uint32_t mask_ ) & VULKAN_HPP_NOEXCEPT + { + mask = mask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV && setMask( uint32_t mask_ ) && VULKAN_HPP_NOEXCEPT + { + mask = mask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & + setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) & + VULKAN_HPP_NOEXCEPT + { + instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV && + setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) && + VULKAN_HPP_NOEXCEPT + { + instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_; + return std::move( *this ); + } + + AccelerationStructureMatrixMotionInstanceNV & setFlags( GeometryInstanceFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = *reinterpret_cast( &flags_ ); + return *this; + } + + AccelerationStructureMatrixMotionInstanceNV && setFlags( GeometryInstanceFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = *reinterpret_cast( &flags_ ); + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV & setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructureReference = accelerationStructureReference_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMatrixMotionInstanceNV && setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructureReference = accelerationStructureReference_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureMatrixMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureMatrixMotionInstanceNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureMatrixMotionInstanceNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureMatrixMotionInstanceNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( transformT0, transformT1, instanceCustomIndex, mask, instanceShaderBindingTableRecordOffset, flags, accelerationStructureReference ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureMatrixMotionInstanceNV const & ) const = default; +#else + bool operator==( AccelerationStructureMatrixMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( transformT0 == rhs.transformT0 ) && ( transformT1 == rhs.transformT1 ) && ( instanceCustomIndex == rhs.instanceCustomIndex ) && + ( mask == rhs.mask ) && ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && ( flags == rhs.flags ) && + ( accelerationStructureReference == rhs.accelerationStructureReference ); +# endif + } + + bool operator!=( AccelerationStructureMatrixMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + TransformMatrixKHR transformT0 = {}; + TransformMatrixKHR transformT1 = {}; + uint32_t instanceCustomIndex : 24; + uint32_t mask : 8; + uint32_t instanceShaderBindingTableRecordOffset : 24; + VkGeometryInstanceFlagsKHR flags : 8; + uint64_t accelerationStructureReference = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureMatrixMotionInstanceNV; + }; +#endif + + // wrapper struct for struct VkAccelerationStructureMemoryRequirementsInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureMemoryRequirementsInfoNV.html + struct AccelerationStructureMemoryRequirementsInfoNV + { + using NativeType = VkAccelerationStructureMemoryRequirementsInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureMemoryRequirementsInfoNV( + AccelerationStructureMemoryRequirementsTypeNV type_ = AccelerationStructureMemoryRequirementsTypeNV::eObject, + AccelerationStructureNV accelerationStructure_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , accelerationStructure{ accelerationStructure_ } + { + } + + VULKAN_HPP_CONSTEXPR + AccelerationStructureMemoryRequirementsInfoNV( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMemoryRequirementsInfoNV( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureMemoryRequirementsInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureMemoryRequirementsInfoNV & operator=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureMemoryRequirementsInfoNV & operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & setType( AccelerationStructureMemoryRequirementsTypeNV type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV && setType( AccelerationStructureMemoryRequirementsTypeNV type_ ) && + VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & setAccelerationStructure( AccelerationStructureNV accelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV && setAccelerationStructure( AccelerationStructureNV accelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureMemoryRequirementsInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureMemoryRequirementsInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureMemoryRequirementsInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureMemoryRequirementsInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, accelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureMemoryRequirementsInfoNV const & ) const = default; +#else + bool operator==( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( accelerationStructure == rhs.accelerationStructure ); +# endif + } + + bool operator!=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV; + void const * pNext = {}; + AccelerationStructureMemoryRequirementsTypeNV type = AccelerationStructureMemoryRequirementsTypeNV::eObject; + AccelerationStructureNV accelerationStructure = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureMemoryRequirementsInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureMemoryRequirementsInfoNV; + }; + + // wrapper struct for struct VkAccelerationStructureMotionInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInfoNV.html + struct AccelerationStructureMotionInfoNV + { + using NativeType = VkAccelerationStructureMotionInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureMotionInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureMotionInfoNV( uint32_t maxInstances_ = {}, + AccelerationStructureMotionInfoFlagsNV flags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxInstances{ maxInstances_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR AccelerationStructureMotionInfoNV( AccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMotionInfoNV( VkAccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureMotionInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureMotionInfoNV & operator=( AccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureMotionInfoNV & operator=( VkAccelerationStructureMotionInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & setMaxInstances( uint32_t maxInstances_ ) & VULKAN_HPP_NOEXCEPT + { + maxInstances = maxInstances_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV && setMaxInstances( uint32_t maxInstances_ ) && VULKAN_HPP_NOEXCEPT + { + maxInstances = maxInstances_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV & setFlags( AccelerationStructureMotionInfoFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInfoNV && setFlags( AccelerationStructureMotionInfoFlagsNV flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureMotionInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureMotionInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureMotionInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureMotionInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxInstances, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureMotionInfoNV const & ) const = default; +#else + bool operator==( AccelerationStructureMotionInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxInstances == rhs.maxInstances ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( AccelerationStructureMotionInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureMotionInfoNV; + void const * pNext = {}; + uint32_t maxInstances = {}; + AccelerationStructureMotionInfoFlagsNV flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureMotionInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureMotionInfoNV; + }; + + // wrapper struct for struct VkSRTDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSRTDataNV.html + struct SRTDataNV + { + using NativeType = VkSRTDataNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SRTDataNV( float sx_ = {}, + float a_ = {}, + float b_ = {}, + float pvx_ = {}, + float sy_ = {}, + float c_ = {}, + float pvy_ = {}, + float sz_ = {}, + float pvz_ = {}, + float qx_ = {}, + float qy_ = {}, + float qz_ = {}, + float qw_ = {}, + float tx_ = {}, + float ty_ = {}, + float tz_ = {} ) VULKAN_HPP_NOEXCEPT + : sx{ sx_ } + , a{ a_ } + , b{ b_ } + , pvx{ pvx_ } + , sy{ sy_ } + , c{ c_ } + , pvy{ pvy_ } + , sz{ sz_ } + , pvz{ pvz_ } + , qx{ qx_ } + , qy{ qy_ } + , qz{ qz_ } + , qw{ qw_ } + , tx{ tx_ } + , ty{ ty_ } + , tz{ tz_ } + { + } + + VULKAN_HPP_CONSTEXPR SRTDataNV( SRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SRTDataNV( VkSRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : SRTDataNV( *reinterpret_cast( &rhs ) ) {} + + SRTDataNV & operator=( SRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SRTDataNV & operator=( VkSRTDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSx( float sx_ ) & VULKAN_HPP_NOEXCEPT + { + sx = sx_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setSx( float sx_ ) && VULKAN_HPP_NOEXCEPT + { + sx = sx_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setA( float a_ ) & VULKAN_HPP_NOEXCEPT + { + a = a_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setA( float a_ ) && VULKAN_HPP_NOEXCEPT + { + a = a_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setB( float b_ ) & VULKAN_HPP_NOEXCEPT + { + b = b_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setB( float b_ ) && VULKAN_HPP_NOEXCEPT + { + b = b_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvx( float pvx_ ) & VULKAN_HPP_NOEXCEPT + { + pvx = pvx_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setPvx( float pvx_ ) && VULKAN_HPP_NOEXCEPT + { + pvx = pvx_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSy( float sy_ ) & VULKAN_HPP_NOEXCEPT + { + sy = sy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setSy( float sy_ ) && VULKAN_HPP_NOEXCEPT + { + sy = sy_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setC( float c_ ) & VULKAN_HPP_NOEXCEPT + { + c = c_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setC( float c_ ) && VULKAN_HPP_NOEXCEPT + { + c = c_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvy( float pvy_ ) & VULKAN_HPP_NOEXCEPT + { + pvy = pvy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setPvy( float pvy_ ) && VULKAN_HPP_NOEXCEPT + { + pvy = pvy_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setSz( float sz_ ) & VULKAN_HPP_NOEXCEPT + { + sz = sz_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setSz( float sz_ ) && VULKAN_HPP_NOEXCEPT + { + sz = sz_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setPvz( float pvz_ ) & VULKAN_HPP_NOEXCEPT + { + pvz = pvz_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setPvz( float pvz_ ) && VULKAN_HPP_NOEXCEPT + { + pvz = pvz_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQx( float qx_ ) & VULKAN_HPP_NOEXCEPT + { + qx = qx_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setQx( float qx_ ) && VULKAN_HPP_NOEXCEPT + { + qx = qx_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQy( float qy_ ) & VULKAN_HPP_NOEXCEPT + { + qy = qy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setQy( float qy_ ) && VULKAN_HPP_NOEXCEPT + { + qy = qy_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQz( float qz_ ) & VULKAN_HPP_NOEXCEPT + { + qz = qz_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setQz( float qz_ ) && VULKAN_HPP_NOEXCEPT + { + qz = qz_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setQw( float qw_ ) & VULKAN_HPP_NOEXCEPT + { + qw = qw_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setQw( float qw_ ) && VULKAN_HPP_NOEXCEPT + { + qw = qw_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTx( float tx_ ) & VULKAN_HPP_NOEXCEPT + { + tx = tx_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setTx( float tx_ ) && VULKAN_HPP_NOEXCEPT + { + tx = tx_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTy( float ty_ ) & VULKAN_HPP_NOEXCEPT + { + ty = ty_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setTy( float ty_ ) && VULKAN_HPP_NOEXCEPT + { + ty = ty_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV & setTz( float tz_ ) & VULKAN_HPP_NOEXCEPT + { + tz = tz_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SRTDataNV && setTz( float tz_ ) && VULKAN_HPP_NOEXCEPT + { + tz = tz_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSRTDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSRTDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSRTDataNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSRTDataNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sx, a, b, pvx, sy, c, pvy, sz, pvz, qx, qy, qz, qw, tx, ty, tz ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SRTDataNV const & ) const = default; +#else + bool operator==( SRTDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sx == rhs.sx ) && ( a == rhs.a ) && ( b == rhs.b ) && ( pvx == rhs.pvx ) && ( sy == rhs.sy ) && ( c == rhs.c ) && ( pvy == rhs.pvy ) && + ( sz == rhs.sz ) && ( pvz == rhs.pvz ) && ( qx == rhs.qx ) && ( qy == rhs.qy ) && ( qz == rhs.qz ) && ( qw == rhs.qw ) && ( tx == rhs.tx ) && + ( ty == rhs.ty ) && ( tz == rhs.tz ); +# endif + } + + bool operator!=( SRTDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float sx = {}; + float a = {}; + float b = {}; + float pvx = {}; + float sy = {}; + float c = {}; + float pvy = {}; + float sz = {}; + float pvz = {}; + float qx = {}; + float qy = {}; + float qz = {}; + float qw = {}; + float tx = {}; + float ty = {}; + float tz = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SRTDataNV; + }; +#endif + + // wrapper struct for struct VkAccelerationStructureSRTMotionInstanceNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureSRTMotionInstanceNV.html + struct AccelerationStructureSRTMotionInstanceNV + { + using NativeType = VkAccelerationStructureSRTMotionInstanceNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureSRTMotionInstanceNV( SRTDataNV transformT0_ = {}, + SRTDataNV transformT1_ = {}, + uint32_t instanceCustomIndex_ = {}, + uint32_t mask_ = {}, + uint32_t instanceShaderBindingTableRecordOffset_ = {}, + GeometryInstanceFlagsKHR flags_ = {}, + uint64_t accelerationStructureReference_ = {} ) VULKAN_HPP_NOEXCEPT + : transformT0{ transformT0_ } + , transformT1{ transformT1_ } + , instanceCustomIndex{ instanceCustomIndex_ } + , mask{ mask_ } + , instanceShaderBindingTableRecordOffset{ instanceShaderBindingTableRecordOffset_ } + , flags{ flags_ } + , accelerationStructureReference{ accelerationStructureReference_ } + { + } + + VULKAN_HPP_CONSTEXPR AccelerationStructureSRTMotionInstanceNV( AccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureSRTMotionInstanceNV( VkAccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureSRTMotionInstanceNV( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureSRTMotionInstanceNV & operator=( AccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureSRTMotionInstanceNV & operator=( VkAccelerationStructureSRTMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setTransformT0( SRTDataNV const & transformT0_ ) & VULKAN_HPP_NOEXCEPT + { + transformT0 = transformT0_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV && setTransformT0( SRTDataNV const & transformT0_ ) && VULKAN_HPP_NOEXCEPT + { + transformT0 = transformT0_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setTransformT1( SRTDataNV const & transformT1_ ) & VULKAN_HPP_NOEXCEPT + { + transformT1 = transformT1_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV && setTransformT1( SRTDataNV const & transformT1_ ) && VULKAN_HPP_NOEXCEPT + { + transformT1 = transformT1_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) & VULKAN_HPP_NOEXCEPT + { + instanceCustomIndex = instanceCustomIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV && setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) && VULKAN_HPP_NOEXCEPT + { + instanceCustomIndex = instanceCustomIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setMask( uint32_t mask_ ) & VULKAN_HPP_NOEXCEPT + { + mask = mask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV && setMask( uint32_t mask_ ) && VULKAN_HPP_NOEXCEPT + { + mask = mask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & + setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) & + VULKAN_HPP_NOEXCEPT + { + instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV && + setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) && + VULKAN_HPP_NOEXCEPT + { + instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_; + return std::move( *this ); + } + + AccelerationStructureSRTMotionInstanceNV & setFlags( GeometryInstanceFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = *reinterpret_cast( &flags_ ); + return *this; + } + + AccelerationStructureSRTMotionInstanceNV && setFlags( GeometryInstanceFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = *reinterpret_cast( &flags_ ); + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV & setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructureReference = accelerationStructureReference_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureSRTMotionInstanceNV && setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructureReference = accelerationStructureReference_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureSRTMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureSRTMotionInstanceNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureSRTMotionInstanceNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureSRTMotionInstanceNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( transformT0, transformT1, instanceCustomIndex, mask, instanceShaderBindingTableRecordOffset, flags, accelerationStructureReference ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureSRTMotionInstanceNV const & ) const = default; +#else + bool operator==( AccelerationStructureSRTMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( transformT0 == rhs.transformT0 ) && ( transformT1 == rhs.transformT1 ) && ( instanceCustomIndex == rhs.instanceCustomIndex ) && + ( mask == rhs.mask ) && ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) && ( flags == rhs.flags ) && + ( accelerationStructureReference == rhs.accelerationStructureReference ); +# endif + } + + bool operator!=( AccelerationStructureSRTMotionInstanceNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + SRTDataNV transformT0 = {}; + SRTDataNV transformT1 = {}; + uint32_t instanceCustomIndex : 24; + uint32_t mask : 8; + uint32_t instanceShaderBindingTableRecordOffset : 24; + VkGeometryInstanceFlagsKHR flags : 8; + uint64_t accelerationStructureReference = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureSRTMotionInstanceNV; + }; +#endif + + union AccelerationStructureMotionInstanceDataNV + { + using NativeType = VkAccelerationStructureMotionInstanceDataNV; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( AccelerationStructureInstanceKHR staticInstance_ = {} ) + : staticInstance( staticInstance_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance_ ) + : matrixMotionInstance( matrixMotionInstance_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV( AccelerationStructureSRTMotionInstanceNV srtMotionInstance_ ) + : srtMotionInstance( srtMotionInstance_ ) + { + } +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV & setStaticInstance( AccelerationStructureInstanceKHR const & staticInstance_ ) & + VULKAN_HPP_NOEXCEPT + { + staticInstance = staticInstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV && setStaticInstance( AccelerationStructureInstanceKHR const & staticInstance_ ) && + VULKAN_HPP_NOEXCEPT + { + staticInstance = staticInstance_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV & + setMatrixMotionInstance( AccelerationStructureMatrixMotionInstanceNV const & matrixMotionInstance_ ) & + VULKAN_HPP_NOEXCEPT + { + matrixMotionInstance = matrixMotionInstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV && + setMatrixMotionInstance( AccelerationStructureMatrixMotionInstanceNV const & matrixMotionInstance_ ) && + VULKAN_HPP_NOEXCEPT + { + matrixMotionInstance = matrixMotionInstance_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV & + setSrtMotionInstance( AccelerationStructureSRTMotionInstanceNV const & srtMotionInstance_ ) & + VULKAN_HPP_NOEXCEPT + { + srtMotionInstance = srtMotionInstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceDataNV && + setSrtMotionInstance( AccelerationStructureSRTMotionInstanceNV const & srtMotionInstance_ ) && + VULKAN_HPP_NOEXCEPT + { + srtMotionInstance = srtMotionInstance_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureMotionInstanceDataNV const &() const + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureMotionInstanceDataNV &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + AccelerationStructureInstanceKHR staticInstance; + AccelerationStructureMatrixMotionInstanceNV matrixMotionInstance; + AccelerationStructureSRTMotionInstanceNV srtMotionInstance; +#else + VkAccelerationStructureInstanceKHR staticInstance; + VkAccelerationStructureMatrixMotionInstanceNV matrixMotionInstance; + VkAccelerationStructureSRTMotionInstanceNV srtMotionInstance; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureMotionInstanceDataNV; + }; +#endif + + // wrapper struct for struct VkAccelerationStructureMotionInstanceNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureMotionInstanceNV.html + struct AccelerationStructureMotionInstanceNV + { + using NativeType = VkAccelerationStructureMotionInstanceNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureMotionInstanceNV( AccelerationStructureMotionInstanceTypeNV type_ = AccelerationStructureMotionInstanceTypeNV::eStatic, + AccelerationStructureMotionInstanceFlagsNV flags_ = {}, + AccelerationStructureMotionInstanceDataNV data_ = {} ) VULKAN_HPP_NOEXCEPT + : type{ type_ } + , flags{ flags_ } + , data{ data_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV( AccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureMotionInstanceNV( VkAccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureMotionInstanceNV( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureMotionInstanceNV & operator=( AccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureMotionInstanceNV & operator=( VkAccelerationStructureMotionInstanceNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV & setType( AccelerationStructureMotionInstanceTypeNV type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV && setType( AccelerationStructureMotionInstanceTypeNV type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV & setFlags( AccelerationStructureMotionInstanceFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV && setFlags( AccelerationStructureMotionInstanceFlagsNV flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV & setData( AccelerationStructureMotionInstanceDataNV const & data_ ) & VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMotionInstanceNV && setData( AccelerationStructureMotionInstanceDataNV const & data_ ) && VULKAN_HPP_NOEXCEPT + { + data = data_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureMotionInstanceNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureMotionInstanceNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureMotionInstanceNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureMotionInstanceNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( type, flags, data ); + } +#endif + + public: + AccelerationStructureMotionInstanceTypeNV type = AccelerationStructureMotionInstanceTypeNV::eStatic; + AccelerationStructureMotionInstanceFlagsNV flags = {}; + AccelerationStructureMotionInstanceDataNV data = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureMotionInstanceNV; + }; +#endif + + // wrapper struct for struct VkMicromapUsageEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapUsageEXT.html + struct MicromapUsageEXT + { + using NativeType = VkMicromapUsageEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MicromapUsageEXT( uint32_t count_ = {}, uint32_t subdivisionLevel_ = {}, uint32_t format_ = {} ) VULKAN_HPP_NOEXCEPT + : count{ count_ } + , subdivisionLevel{ subdivisionLevel_ } + , format{ format_ } + { + } + + VULKAN_HPP_CONSTEXPR MicromapUsageEXT( MicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MicromapUsageEXT( VkMicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT : MicromapUsageEXT( *reinterpret_cast( &rhs ) ) {} + + MicromapUsageEXT & operator=( MicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MicromapUsageEXT & operator=( VkMicromapUsageEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT & setCount( uint32_t count_ ) & VULKAN_HPP_NOEXCEPT + { + count = count_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT && setCount( uint32_t count_ ) && VULKAN_HPP_NOEXCEPT + { + count = count_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT & setSubdivisionLevel( uint32_t subdivisionLevel_ ) & VULKAN_HPP_NOEXCEPT + { + subdivisionLevel = subdivisionLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT && setSubdivisionLevel( uint32_t subdivisionLevel_ ) && VULKAN_HPP_NOEXCEPT + { + subdivisionLevel = subdivisionLevel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT & setFormat( uint32_t format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapUsageEXT && setFormat( uint32_t format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMicromapUsageEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapUsageEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapUsageEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMicromapUsageEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( count, subdivisionLevel, format ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MicromapUsageEXT const & ) const = default; +#else + bool operator==( MicromapUsageEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( count == rhs.count ) && ( subdivisionLevel == rhs.subdivisionLevel ) && ( format == rhs.format ); +# endif + } + + bool operator!=( MicromapUsageEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t count = {}; + uint32_t subdivisionLevel = {}; + uint32_t format = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MicromapUsageEXT; + }; +#endif + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkAccelerationStructureTrianglesDisplacementMicromapNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureTrianglesDisplacementMicromapNV.html + struct AccelerationStructureTrianglesDisplacementMicromapNV + { + using NativeType = VkAccelerationStructureTrianglesDisplacementMicromapNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureTrianglesDisplacementMicromapNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV( Format displacementBiasAndScaleFormat_ = Format::eUndefined, + Format displacementVectorFormat_ = Format::eUndefined, + DeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer_ = {}, + DeviceSize displacementBiasAndScaleStride_ = {}, + DeviceOrHostAddressConstKHR displacementVectorBuffer_ = {}, + DeviceSize displacementVectorStride_ = {}, + DeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags_ = {}, + DeviceSize displacedMicromapPrimitiveFlagsStride_ = {}, + IndexType indexType_ = IndexType::eUint16, + DeviceOrHostAddressConstKHR indexBuffer_ = {}, + DeviceSize indexStride_ = {}, + uint32_t baseTriangle_ = {}, + uint32_t usageCountsCount_ = {}, + MicromapUsageEXT const * pUsageCounts_ = {}, + MicromapUsageEXT const * const * ppUsageCounts_ = {}, + MicromapEXT micromap_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , displacementBiasAndScaleFormat{ displacementBiasAndScaleFormat_ } + , displacementVectorFormat{ displacementVectorFormat_ } + , displacementBiasAndScaleBuffer{ displacementBiasAndScaleBuffer_ } + , displacementBiasAndScaleStride{ displacementBiasAndScaleStride_ } + , displacementVectorBuffer{ displacementVectorBuffer_ } + , displacementVectorStride{ displacementVectorStride_ } + , displacedMicromapPrimitiveFlags{ displacedMicromapPrimitiveFlags_ } + , displacedMicromapPrimitiveFlagsStride{ displacedMicromapPrimitiveFlagsStride_ } + , indexType{ indexType_ } + , indexBuffer{ indexBuffer_ } + , indexStride{ indexStride_ } + , baseTriangle{ baseTriangle_ } + , usageCountsCount{ usageCountsCount_ } + , pUsageCounts{ pUsageCounts_ } + , ppUsageCounts{ ppUsageCounts_ } + , micromap{ micromap_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureTrianglesDisplacementMicromapNV( AccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureTrianglesDisplacementMicromapNV( VkAccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureTrianglesDisplacementMicromapNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureTrianglesDisplacementMicromapNV( Format displacementBiasAndScaleFormat_, + Format displacementVectorFormat_, + DeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer_, + DeviceSize displacementBiasAndScaleStride_, + DeviceOrHostAddressConstKHR displacementVectorBuffer_, + DeviceSize displacementVectorStride_, + DeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags_, + DeviceSize displacedMicromapPrimitiveFlagsStride_, + IndexType indexType_, + DeviceOrHostAddressConstKHR indexBuffer_, + DeviceSize indexStride_, + uint32_t baseTriangle_, + ArrayProxyNoTemporaries const & usageCounts_, + ArrayProxyNoTemporaries const & pUsageCounts_ = {}, + MicromapEXT micromap_ = {}, + void * pNext_ = nullptr ) + : pNext( pNext_ ) + , displacementBiasAndScaleFormat( displacementBiasAndScaleFormat_ ) + , displacementVectorFormat( displacementVectorFormat_ ) + , displacementBiasAndScaleBuffer( displacementBiasAndScaleBuffer_ ) + , displacementBiasAndScaleStride( displacementBiasAndScaleStride_ ) + , displacementVectorBuffer( displacementVectorBuffer_ ) + , displacementVectorStride( displacementVectorStride_ ) + , displacedMicromapPrimitiveFlags( displacedMicromapPrimitiveFlags_ ) + , displacedMicromapPrimitiveFlagsStride( displacedMicromapPrimitiveFlagsStride_ ) + , indexType( indexType_ ) + , indexBuffer( indexBuffer_ ) + , indexStride( indexStride_ ) + , baseTriangle( baseTriangle_ ) + , usageCountsCount( static_cast( usageCounts_.size() ) ) + , pUsageCounts( usageCounts_.data() ) + , ppUsageCounts( pUsageCounts_.data() ) + , micromap( micromap_ ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( usageCounts_.empty() || pUsageCounts_.empty() || ( usageCounts_.size() == pUsageCounts_.size() ) ); +# else + if ( !usageCounts_.empty() && !pUsageCounts_.empty() && ( usageCounts_.size() != pUsageCounts_.size() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::AccelerationStructureTrianglesDisplacementMicromapNV::AccelerationStructureTrianglesDisplacementMicromapNV: !usageCounts_.empty() && !pUsageCounts_.empty() && ( usageCounts_.size() != pUsageCounts_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + AccelerationStructureTrianglesDisplacementMicromapNV & + operator=( AccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureTrianglesDisplacementMicromapNV & operator=( VkAccelerationStructureTrianglesDisplacementMicromapNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setDisplacementBiasAndScaleFormat( Format displacementBiasAndScaleFormat_ ) & + VULKAN_HPP_NOEXCEPT + { + displacementBiasAndScaleFormat = displacementBiasAndScaleFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && + setDisplacementBiasAndScaleFormat( Format displacementBiasAndScaleFormat_ ) && + VULKAN_HPP_NOEXCEPT + { + displacementBiasAndScaleFormat = displacementBiasAndScaleFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setDisplacementVectorFormat( Format displacementVectorFormat_ ) & + VULKAN_HPP_NOEXCEPT + { + displacementVectorFormat = displacementVectorFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setDisplacementVectorFormat( Format displacementVectorFormat_ ) && + VULKAN_HPP_NOEXCEPT + { + displacementVectorFormat = displacementVectorFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & + setDisplacementBiasAndScaleBuffer( DeviceOrHostAddressConstKHR const & displacementBiasAndScaleBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + displacementBiasAndScaleBuffer = displacementBiasAndScaleBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && + setDisplacementBiasAndScaleBuffer( DeviceOrHostAddressConstKHR const & displacementBiasAndScaleBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + displacementBiasAndScaleBuffer = displacementBiasAndScaleBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & + setDisplacementBiasAndScaleStride( DeviceSize displacementBiasAndScaleStride_ ) & + VULKAN_HPP_NOEXCEPT + { + displacementBiasAndScaleStride = displacementBiasAndScaleStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && + setDisplacementBiasAndScaleStride( DeviceSize displacementBiasAndScaleStride_ ) && + VULKAN_HPP_NOEXCEPT + { + displacementBiasAndScaleStride = displacementBiasAndScaleStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & + setDisplacementVectorBuffer( DeviceOrHostAddressConstKHR const & displacementVectorBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + displacementVectorBuffer = displacementVectorBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && + setDisplacementVectorBuffer( DeviceOrHostAddressConstKHR const & displacementVectorBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + displacementVectorBuffer = displacementVectorBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setDisplacementVectorStride( DeviceSize displacementVectorStride_ ) & + VULKAN_HPP_NOEXCEPT + { + displacementVectorStride = displacementVectorStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setDisplacementVectorStride( DeviceSize displacementVectorStride_ ) && + VULKAN_HPP_NOEXCEPT + { + displacementVectorStride = displacementVectorStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & + setDisplacedMicromapPrimitiveFlags( DeviceOrHostAddressConstKHR const & displacedMicromapPrimitiveFlags_ ) & + VULKAN_HPP_NOEXCEPT + { + displacedMicromapPrimitiveFlags = displacedMicromapPrimitiveFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && + setDisplacedMicromapPrimitiveFlags( DeviceOrHostAddressConstKHR const & displacedMicromapPrimitiveFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + displacedMicromapPrimitiveFlags = displacedMicromapPrimitiveFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & + setDisplacedMicromapPrimitiveFlagsStride( DeviceSize displacedMicromapPrimitiveFlagsStride_ ) & + VULKAN_HPP_NOEXCEPT + { + displacedMicromapPrimitiveFlagsStride = displacedMicromapPrimitiveFlagsStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && + setDisplacedMicromapPrimitiveFlagsStride( DeviceSize displacedMicromapPrimitiveFlagsStride_ ) && + VULKAN_HPP_NOEXCEPT + { + displacedMicromapPrimitiveFlagsStride = displacedMicromapPrimitiveFlagsStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setIndexType( IndexType indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setIndexType( IndexType indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setIndexBuffer( DeviceOrHostAddressConstKHR const & indexBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + indexBuffer = indexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setIndexBuffer( DeviceOrHostAddressConstKHR const & indexBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + indexBuffer = indexBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setIndexStride( DeviceSize indexStride_ ) & VULKAN_HPP_NOEXCEPT + { + indexStride = indexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setIndexStride( DeviceSize indexStride_ ) && VULKAN_HPP_NOEXCEPT + { + indexStride = indexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setBaseTriangle( uint32_t baseTriangle_ ) & VULKAN_HPP_NOEXCEPT + { + baseTriangle = baseTriangle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setBaseTriangle( uint32_t baseTriangle_ ) && VULKAN_HPP_NOEXCEPT + { + baseTriangle = baseTriangle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setUsageCountsCount( uint32_t usageCountsCount_ ) & VULKAN_HPP_NOEXCEPT + { + usageCountsCount = usageCountsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setUsageCountsCount( uint32_t usageCountsCount_ ) && VULKAN_HPP_NOEXCEPT + { + usageCountsCount = usageCountsCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setPUsageCounts( MicromapUsageEXT const * pUsageCounts_ ) & + VULKAN_HPP_NOEXCEPT + { + pUsageCounts = pUsageCounts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setPUsageCounts( MicromapUsageEXT const * pUsageCounts_ ) && + VULKAN_HPP_NOEXCEPT + { + pUsageCounts = pUsageCounts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureTrianglesDisplacementMicromapNV & + setUsageCounts( ArrayProxyNoTemporaries const & usageCounts_ ) VULKAN_HPP_NOEXCEPT + { + usageCountsCount = static_cast( usageCounts_.size() ); + pUsageCounts = usageCounts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setPpUsageCounts( MicromapUsageEXT const * const * ppUsageCounts_ ) & + VULKAN_HPP_NOEXCEPT + { + ppUsageCounts = ppUsageCounts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setPpUsageCounts( MicromapUsageEXT const * const * ppUsageCounts_ ) && + VULKAN_HPP_NOEXCEPT + { + ppUsageCounts = ppUsageCounts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureTrianglesDisplacementMicromapNV & + setPUsageCounts( ArrayProxyNoTemporaries const & pUsageCounts_ ) VULKAN_HPP_NOEXCEPT + { + usageCountsCount = static_cast( pUsageCounts_.size() ); + ppUsageCounts = pUsageCounts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV & setMicromap( MicromapEXT micromap_ ) & VULKAN_HPP_NOEXCEPT + { + micromap = micromap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesDisplacementMicromapNV && setMicromap( MicromapEXT micromap_ ) && VULKAN_HPP_NOEXCEPT + { + micromap = micromap_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureTrianglesDisplacementMicromapNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureTrianglesDisplacementMicromapNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureTrianglesDisplacementMicromapNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureTrianglesDisplacementMicromapNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + displacementBiasAndScaleFormat, + displacementVectorFormat, + displacementBiasAndScaleBuffer, + displacementBiasAndScaleStride, + displacementVectorBuffer, + displacementVectorStride, + displacedMicromapPrimitiveFlags, + displacedMicromapPrimitiveFlagsStride, + indexType, + indexBuffer, + indexStride, + baseTriangle, + usageCountsCount, + pUsageCounts, + ppUsageCounts, + micromap ); + } +# endif + + public: + StructureType sType = StructureType::eAccelerationStructureTrianglesDisplacementMicromapNV; + void * pNext = {}; + Format displacementBiasAndScaleFormat = Format::eUndefined; + Format displacementVectorFormat = Format::eUndefined; + DeviceOrHostAddressConstKHR displacementBiasAndScaleBuffer = {}; + DeviceSize displacementBiasAndScaleStride = {}; + DeviceOrHostAddressConstKHR displacementVectorBuffer = {}; + DeviceSize displacementVectorStride = {}; + DeviceOrHostAddressConstKHR displacedMicromapPrimitiveFlags = {}; + DeviceSize displacedMicromapPrimitiveFlagsStride = {}; + IndexType indexType = IndexType::eUint16; + DeviceOrHostAddressConstKHR indexBuffer = {}; + DeviceSize indexStride = {}; + uint32_t baseTriangle = {}; + uint32_t usageCountsCount = {}; + MicromapUsageEXT const * pUsageCounts = {}; + MicromapUsageEXT const * const * ppUsageCounts = {}; + MicromapEXT micromap = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureTrianglesDisplacementMicromapNV; + }; +# endif + + template <> + struct CppType + { + using Type = AccelerationStructureTrianglesDisplacementMicromapNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkAccelerationStructureTrianglesOpacityMicromapEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureTrianglesOpacityMicromapEXT.html + struct AccelerationStructureTrianglesOpacityMicromapEXT + { + using NativeType = VkAccelerationStructureTrianglesOpacityMicromapEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureTrianglesOpacityMicromapEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT( IndexType indexType_ = IndexType::eUint16, + DeviceOrHostAddressConstKHR indexBuffer_ = {}, + DeviceSize indexStride_ = {}, + uint32_t baseTriangle_ = {}, + uint32_t usageCountsCount_ = {}, + MicromapUsageEXT const * pUsageCounts_ = {}, + MicromapUsageEXT const * const * ppUsageCounts_ = {}, + MicromapEXT micromap_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , indexType{ indexType_ } + , indexBuffer{ indexBuffer_ } + , indexStride{ indexStride_ } + , baseTriangle{ baseTriangle_ } + , usageCountsCount{ usageCountsCount_ } + , pUsageCounts{ pUsageCounts_ } + , ppUsageCounts{ ppUsageCounts_ } + , micromap{ micromap_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + AccelerationStructureTrianglesOpacityMicromapEXT( AccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureTrianglesOpacityMicromapEXT( VkAccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureTrianglesOpacityMicromapEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureTrianglesOpacityMicromapEXT( IndexType indexType_, + DeviceOrHostAddressConstKHR indexBuffer_, + DeviceSize indexStride_, + uint32_t baseTriangle_, + ArrayProxyNoTemporaries const & usageCounts_, + ArrayProxyNoTemporaries const & pUsageCounts_ = {}, + MicromapEXT micromap_ = {}, + void * pNext_ = nullptr ) + : pNext( pNext_ ) + , indexType( indexType_ ) + , indexBuffer( indexBuffer_ ) + , indexStride( indexStride_ ) + , baseTriangle( baseTriangle_ ) + , usageCountsCount( static_cast( !usageCounts_.empty() ? usageCounts_.size() : pUsageCounts_.size() ) ) + , pUsageCounts( usageCounts_.data() ) + , ppUsageCounts( pUsageCounts_.data() ) + , micromap( micromap_ ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( ( !usageCounts_.empty() + !pUsageCounts_.empty() ) <= 1 ); +# else + if ( 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::AccelerationStructureTrianglesOpacityMicromapEXT::AccelerationStructureTrianglesOpacityMicromapEXT: 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + AccelerationStructureTrianglesOpacityMicromapEXT & operator=( AccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureTrianglesOpacityMicromapEXT & operator=( VkAccelerationStructureTrianglesOpacityMicromapEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setIndexType( IndexType indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT && setIndexType( IndexType indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setIndexBuffer( DeviceOrHostAddressConstKHR const & indexBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + indexBuffer = indexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT && setIndexBuffer( DeviceOrHostAddressConstKHR const & indexBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + indexBuffer = indexBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setIndexStride( DeviceSize indexStride_ ) & VULKAN_HPP_NOEXCEPT + { + indexStride = indexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT && setIndexStride( DeviceSize indexStride_ ) && VULKAN_HPP_NOEXCEPT + { + indexStride = indexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setBaseTriangle( uint32_t baseTriangle_ ) & VULKAN_HPP_NOEXCEPT + { + baseTriangle = baseTriangle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT && setBaseTriangle( uint32_t baseTriangle_ ) && VULKAN_HPP_NOEXCEPT + { + baseTriangle = baseTriangle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setUsageCountsCount( uint32_t usageCountsCount_ ) & VULKAN_HPP_NOEXCEPT + { + usageCountsCount = usageCountsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT && setUsageCountsCount( uint32_t usageCountsCount_ ) && VULKAN_HPP_NOEXCEPT + { + usageCountsCount = usageCountsCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setPUsageCounts( MicromapUsageEXT const * pUsageCounts_ ) & VULKAN_HPP_NOEXCEPT + { + pUsageCounts = pUsageCounts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT && setPUsageCounts( MicromapUsageEXT const * pUsageCounts_ ) && VULKAN_HPP_NOEXCEPT + { + pUsageCounts = pUsageCounts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureTrianglesOpacityMicromapEXT & + setUsageCounts( ArrayProxyNoTemporaries const & usageCounts_ ) VULKAN_HPP_NOEXCEPT + { + usageCountsCount = static_cast( usageCounts_.size() ); + pUsageCounts = usageCounts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setPpUsageCounts( MicromapUsageEXT const * const * ppUsageCounts_ ) & + VULKAN_HPP_NOEXCEPT + { + ppUsageCounts = ppUsageCounts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT && setPpUsageCounts( MicromapUsageEXT const * const * ppUsageCounts_ ) && + VULKAN_HPP_NOEXCEPT + { + ppUsageCounts = ppUsageCounts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AccelerationStructureTrianglesOpacityMicromapEXT & + setPUsageCounts( ArrayProxyNoTemporaries const & pUsageCounts_ ) VULKAN_HPP_NOEXCEPT + { + usageCountsCount = static_cast( pUsageCounts_.size() ); + ppUsageCounts = pUsageCounts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT & setMicromap( MicromapEXT micromap_ ) & VULKAN_HPP_NOEXCEPT + { + micromap = micromap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureTrianglesOpacityMicromapEXT && setMicromap( MicromapEXT micromap_ ) && VULKAN_HPP_NOEXCEPT + { + micromap = micromap_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureTrianglesOpacityMicromapEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureTrianglesOpacityMicromapEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureTrianglesOpacityMicromapEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureTrianglesOpacityMicromapEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, indexType, indexBuffer, indexStride, baseTriangle, usageCountsCount, pUsageCounts, ppUsageCounts, micromap ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureTrianglesOpacityMicromapEXT; + void * pNext = {}; + IndexType indexType = IndexType::eUint16; + DeviceOrHostAddressConstKHR indexBuffer = {}; + DeviceSize indexStride = {}; + uint32_t baseTriangle = {}; + uint32_t usageCountsCount = {}; + MicromapUsageEXT const * pUsageCounts = {}; + MicromapUsageEXT const * const * ppUsageCounts = {}; + MicromapEXT micromap = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureTrianglesOpacityMicromapEXT; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureTrianglesOpacityMicromapEXT; + }; + + // wrapper struct for struct VkAccelerationStructureVersionInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAccelerationStructureVersionInfoKHR.html + struct AccelerationStructureVersionInfoKHR + { + using NativeType = VkAccelerationStructureVersionInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureVersionInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( uint8_t const * pVersionData_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pVersionData{ pVersionData_ } + { + } + + VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AccelerationStructureVersionInfoKHR( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AccelerationStructureVersionInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + AccelerationStructureVersionInfoKHR & operator=( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AccelerationStructureVersionInfoKHR & operator=( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & setPVersionData( uint8_t const * pVersionData_ ) & VULKAN_HPP_NOEXCEPT + { + pVersionData = pVersionData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR && setPVersionData( uint8_t const * pVersionData_ ) && VULKAN_HPP_NOEXCEPT + { + pVersionData = pVersionData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAccelerationStructureVersionInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureVersionInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAccelerationStructureVersionInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAccelerationStructureVersionInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pVersionData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AccelerationStructureVersionInfoKHR const & ) const = default; +#else + bool operator==( AccelerationStructureVersionInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pVersionData == rhs.pVersionData ); +# endif + } + + bool operator!=( AccelerationStructureVersionInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAccelerationStructureVersionInfoKHR; + void const * pNext = {}; + uint8_t const * pVersionData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AccelerationStructureVersionInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AccelerationStructureVersionInfoKHR; + }; + + // wrapper struct for struct VkAcquireNextImageInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAcquireNextImageInfoKHR.html + struct AcquireNextImageInfoKHR + { + using NativeType = VkAcquireNextImageInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAcquireNextImageInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( SwapchainKHR swapchain_ = {}, + uint64_t timeout_ = {}, + Semaphore semaphore_ = {}, + Fence fence_ = {}, + uint32_t deviceMask_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchain{ swapchain_ } + , timeout{ timeout_ } + , semaphore{ semaphore_ } + , fence{ fence_ } + , deviceMask{ deviceMask_ } + { + } + + VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AcquireNextImageInfoKHR( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AcquireNextImageInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + AcquireNextImageInfoKHR & operator=( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AcquireNextImageInfoKHR & operator=( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setSwapchain( SwapchainKHR swapchain_ ) & VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR && setSwapchain( SwapchainKHR swapchain_ ) && VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setTimeout( uint64_t timeout_ ) & VULKAN_HPP_NOEXCEPT + { + timeout = timeout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR && setTimeout( uint64_t timeout_ ) && VULKAN_HPP_NOEXCEPT + { + timeout = timeout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setSemaphore( Semaphore semaphore_ ) & VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR && setSemaphore( Semaphore semaphore_ ) && VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setFence( Fence fence_ ) & VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR && setFence( Fence fence_ ) && VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & setDeviceMask( uint32_t deviceMask_ ) & VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR && setDeviceMask( uint32_t deviceMask_ ) && VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAcquireNextImageInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAcquireNextImageInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAcquireNextImageInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAcquireNextImageInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchain, timeout, semaphore, fence, deviceMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AcquireNextImageInfoKHR const & ) const = default; +#else + bool operator==( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && ( timeout == rhs.timeout ) && + ( semaphore == rhs.semaphore ) && ( fence == rhs.fence ) && ( deviceMask == rhs.deviceMask ); +# endif + } + + bool operator!=( AcquireNextImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAcquireNextImageInfoKHR; + void const * pNext = {}; + SwapchainKHR swapchain = {}; + uint64_t timeout = {}; + Semaphore semaphore = {}; + Fence fence = {}; + uint32_t deviceMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AcquireNextImageInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AcquireNextImageInfoKHR; + }; + + // wrapper struct for struct VkAcquireProfilingLockInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAcquireProfilingLockInfoKHR.html + struct AcquireProfilingLockInfoKHR + { + using NativeType = VkAcquireProfilingLockInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAcquireProfilingLockInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AcquireProfilingLockInfoKHR( AcquireProfilingLockFlagsKHR flags_ = {}, uint64_t timeout_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , timeout{ timeout_ } + { + } + + VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AcquireProfilingLockInfoKHR( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AcquireProfilingLockInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + AcquireProfilingLockInfoKHR & operator=( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AcquireProfilingLockInfoKHR & operator=( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setFlags( AcquireProfilingLockFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR && setFlags( AcquireProfilingLockFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & setTimeout( uint64_t timeout_ ) & VULKAN_HPP_NOEXCEPT + { + timeout = timeout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR && setTimeout( uint64_t timeout_ ) && VULKAN_HPP_NOEXCEPT + { + timeout = timeout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAcquireProfilingLockInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAcquireProfilingLockInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAcquireProfilingLockInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAcquireProfilingLockInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, timeout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AcquireProfilingLockInfoKHR const & ) const = default; +#else + bool operator==( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( timeout == rhs.timeout ); +# endif + } + + bool operator!=( AcquireProfilingLockInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAcquireProfilingLockInfoKHR; + void const * pNext = {}; + AcquireProfilingLockFlagsKHR flags = {}; + uint64_t timeout = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AcquireProfilingLockInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = AcquireProfilingLockInfoKHR; + }; + + typedef void *( VKAPI_PTR * PFN_AllocationFunction )( void * pUserData, size_t size, size_t alignment, SystemAllocationScope allocationScope ); + + typedef void *( VKAPI_PTR * + PFN_ReallocationFunction )( void * pUserData, void * pOriginal, size_t size, size_t alignment, SystemAllocationScope allocationScope ); + + typedef void( VKAPI_PTR * PFN_FreeFunction )( void * pUserData, void * pMemory ); + + typedef void( VKAPI_PTR * PFN_InternalAllocationNotification )( + void * pUserData, size_t size, InternalAllocationType allocationType, SystemAllocationScope allocationScope ); + + typedef void( VKAPI_PTR * + PFN_InternalFreeNotification )( void * pUserData, size_t size, InternalAllocationType allocationType, SystemAllocationScope allocationScope ); + + // wrapper struct for struct VkAllocationCallbacks, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAllocationCallbacks.html + struct AllocationCallbacks + { + using NativeType = VkAllocationCallbacks; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AllocationCallbacks( void * pUserData_ = {}, + PFN_AllocationFunction pfnAllocation_ = {}, + PFN_ReallocationFunction pfnReallocation_ = {}, + PFN_FreeFunction pfnFree_ = {}, + PFN_InternalAllocationNotification pfnInternalAllocation_ = {}, + PFN_InternalFreeNotification pfnInternalFree_ = {} ) VULKAN_HPP_NOEXCEPT + : pUserData{ pUserData_ } + , pfnAllocation{ pfnAllocation_ } + , pfnReallocation{ pfnReallocation_ } + , pfnFree{ pfnFree_ } + , pfnInternalAllocation{ pfnInternalAllocation_ } + , pfnInternalFree{ pfnInternalFree_ } + { + } + + VULKAN_HPP_CONSTEXPR AllocationCallbacks( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AllocationCallbacks( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT : AllocationCallbacks( *reinterpret_cast( &rhs ) ) + { + } + +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic push +# if defined( __clang__ ) +# pragma clang diagnostic ignored "-Wunknown-warning-option" +# endif +# pragma GCC diagnostic ignored "-Wcast-function-type" +# endif + VULKAN_HPP_DEPRECATED( "This constructor is deprecated. Use the one taking function pointer types from the vk-namespace instead." ) + + AllocationCallbacks( void * pUserData_, + PFN_vkAllocationFunction pfnAllocation_, + PFN_vkReallocationFunction pfnReallocation_ = {}, + PFN_vkFreeFunction pfnFree_ = {}, + PFN_vkInternalAllocationNotification pfnInternalAllocation_ = {}, + PFN_vkInternalFreeNotification pfnInternalFree_ = {} ) VULKAN_HPP_NOEXCEPT + : AllocationCallbacks( pUserData_, + reinterpret_cast( pfnAllocation_ ), + reinterpret_cast( pfnReallocation_ ), + reinterpret_cast( pfnFree_ ), + reinterpret_cast( pfnInternalAllocation_ ), + reinterpret_cast( pfnInternalFree_ ) ) + { + } +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic pop +# endif + + AllocationCallbacks & operator=( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AllocationCallbacks & operator=( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPUserData( void * pUserData_ ) & VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks && setPUserData( void * pUserData_ ) && VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnAllocation( PFN_AllocationFunction pfnAllocation_ ) & VULKAN_HPP_NOEXCEPT + { + pfnAllocation = pfnAllocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks && setPfnAllocation( PFN_AllocationFunction pfnAllocation_ ) && VULKAN_HPP_NOEXCEPT + { + pfnAllocation = pfnAllocation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnReallocation( PFN_ReallocationFunction pfnReallocation_ ) & VULKAN_HPP_NOEXCEPT + { + pfnReallocation = pfnReallocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks && setPfnReallocation( PFN_ReallocationFunction pfnReallocation_ ) && VULKAN_HPP_NOEXCEPT + { + pfnReallocation = pfnReallocation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnFree( PFN_FreeFunction pfnFree_ ) & VULKAN_HPP_NOEXCEPT + { + pfnFree = pfnFree_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks && setPfnFree( PFN_FreeFunction pfnFree_ ) && VULKAN_HPP_NOEXCEPT + { + pfnFree = pfnFree_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnInternalAllocation( PFN_InternalAllocationNotification pfnInternalAllocation_ ) & VULKAN_HPP_NOEXCEPT + { + pfnInternalAllocation = pfnInternalAllocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks && setPfnInternalAllocation( PFN_InternalAllocationNotification pfnInternalAllocation_ ) && VULKAN_HPP_NOEXCEPT + { + pfnInternalAllocation = pfnInternalAllocation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & setPfnInternalFree( PFN_InternalFreeNotification pfnInternalFree_ ) & VULKAN_HPP_NOEXCEPT + { + pfnInternalFree = pfnInternalFree_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks && setPfnInternalFree( PFN_InternalFreeNotification pfnInternalFree_ ) && VULKAN_HPP_NOEXCEPT + { + pfnInternalFree = pfnInternalFree_; + return std::move( *this ); + } + +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic push +# if defined( __clang__ ) +# pragma clang diagnostic ignored "-Wunknown-warning-option" +# endif +# pragma GCC diagnostic ignored "-Wcast-function-type" +# endif + VULKAN_HPP_DEPRECATED( "This setter is deprecated. Use the one taking a function pointer type from the vk-namespace instead." ) + + AllocationCallbacks & setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ ) VULKAN_HPP_NOEXCEPT + { + return setPfnAllocation( reinterpret_cast( pfnAllocation_ ) ); + } + + VULKAN_HPP_DEPRECATED( "This setter is deprecated. Use the one taking a function pointer type from the vk-namespace instead." ) + + AllocationCallbacks & setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ ) VULKAN_HPP_NOEXCEPT + { + return setPfnReallocation( reinterpret_cast( pfnReallocation_ ) ); + } + + VULKAN_HPP_DEPRECATED( "This setter is deprecated. Use the one taking a function pointer type from the vk-namespace instead." ) + + AllocationCallbacks & setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ ) VULKAN_HPP_NOEXCEPT + { + return setPfnInternalAllocation( reinterpret_cast( pfnInternalAllocation_ ) ); + } + + VULKAN_HPP_DEPRECATED( "This setter is deprecated. Use the one taking a function pointer type from the vk-namespace instead." ) + + AllocationCallbacks & setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ ) VULKAN_HPP_NOEXCEPT + { + return setPfnInternalFree( reinterpret_cast( pfnInternalFree_ ) ); + } +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic pop +# endif +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAllocationCallbacks const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAllocationCallbacks &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAllocationCallbacks const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAllocationCallbacks *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( pUserData, pfnAllocation, pfnReallocation, pfnFree, pfnInternalAllocation, pfnInternalFree ); + } +#endif + + bool operator==( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT + { +#if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +#else + return ( pUserData == rhs.pUserData ) && ( pfnAllocation == rhs.pfnAllocation ) && ( pfnReallocation == rhs.pfnReallocation ) && + ( pfnFree == rhs.pfnFree ) && ( pfnInternalAllocation == rhs.pfnInternalAllocation ) && ( pfnInternalFree == rhs.pfnInternalFree ); +#endif + } + + bool operator!=( AllocationCallbacks const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + void * pUserData = {}; + PFN_AllocationFunction pfnAllocation = {}; + PFN_ReallocationFunction pfnReallocation = {}; + PFN_FreeFunction pfnFree = {}; + PFN_InternalAllocationNotification pfnInternalAllocation = {}; + PFN_InternalFreeNotification pfnInternalFree = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AllocationCallbacks; + }; +#endif + + // wrapper struct for struct VkAmigoProfilingSubmitInfoSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAmigoProfilingSubmitInfoSEC.html + struct AmigoProfilingSubmitInfoSEC + { + using NativeType = VkAmigoProfilingSubmitInfoSEC; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAmigoProfilingSubmitInfoSEC; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AmigoProfilingSubmitInfoSEC( uint64_t firstDrawTimestamp_ = {}, uint64_t swapBufferTimestamp_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , firstDrawTimestamp{ firstDrawTimestamp_ } + , swapBufferTimestamp{ swapBufferTimestamp_ } + { + } + + VULKAN_HPP_CONSTEXPR AmigoProfilingSubmitInfoSEC( AmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AmigoProfilingSubmitInfoSEC( VkAmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT + : AmigoProfilingSubmitInfoSEC( *reinterpret_cast( &rhs ) ) + { + } + + AmigoProfilingSubmitInfoSEC & operator=( AmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AmigoProfilingSubmitInfoSEC & operator=( VkAmigoProfilingSubmitInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC & setFirstDrawTimestamp( uint64_t firstDrawTimestamp_ ) & VULKAN_HPP_NOEXCEPT + { + firstDrawTimestamp = firstDrawTimestamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC && setFirstDrawTimestamp( uint64_t firstDrawTimestamp_ ) && VULKAN_HPP_NOEXCEPT + { + firstDrawTimestamp = firstDrawTimestamp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC & setSwapBufferTimestamp( uint64_t swapBufferTimestamp_ ) & VULKAN_HPP_NOEXCEPT + { + swapBufferTimestamp = swapBufferTimestamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AmigoProfilingSubmitInfoSEC && setSwapBufferTimestamp( uint64_t swapBufferTimestamp_ ) && VULKAN_HPP_NOEXCEPT + { + swapBufferTimestamp = swapBufferTimestamp_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAmigoProfilingSubmitInfoSEC const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAmigoProfilingSubmitInfoSEC &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAmigoProfilingSubmitInfoSEC const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAmigoProfilingSubmitInfoSEC *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, firstDrawTimestamp, swapBufferTimestamp ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AmigoProfilingSubmitInfoSEC const & ) const = default; +#else + bool operator==( AmigoProfilingSubmitInfoSEC const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( firstDrawTimestamp == rhs.firstDrawTimestamp ) && + ( swapBufferTimestamp == rhs.swapBufferTimestamp ); +# endif + } + + bool operator!=( AmigoProfilingSubmitInfoSEC const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAmigoProfilingSubmitInfoSEC; + void const * pNext = {}; + uint64_t firstDrawTimestamp = {}; + uint64_t swapBufferTimestamp = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AmigoProfilingSubmitInfoSEC; + }; +#endif + + template <> + struct CppType + { + using Type = AmigoProfilingSubmitInfoSEC; + }; + + // wrapper struct for struct VkComponentMapping, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkComponentMapping.html + struct ComponentMapping + { + using NativeType = VkComponentMapping; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, + ComponentSwizzle g_ = ComponentSwizzle::eIdentity, + ComponentSwizzle b_ = ComponentSwizzle::eIdentity, + ComponentSwizzle a_ = ComponentSwizzle::eIdentity ) VULKAN_HPP_NOEXCEPT + : r{ r_ } + , g{ g_ } + , b{ b_ } + , a{ a_ } + { + } + + VULKAN_HPP_CONSTEXPR ComponentMapping( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ComponentMapping( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT : ComponentMapping( *reinterpret_cast( &rhs ) ) {} + + ComponentMapping & operator=( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ComponentMapping & operator=( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setR( ComponentSwizzle r_ ) & VULKAN_HPP_NOEXCEPT + { + r = r_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComponentMapping && setR( ComponentSwizzle r_ ) && VULKAN_HPP_NOEXCEPT + { + r = r_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setG( ComponentSwizzle g_ ) & VULKAN_HPP_NOEXCEPT + { + g = g_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComponentMapping && setG( ComponentSwizzle g_ ) && VULKAN_HPP_NOEXCEPT + { + g = g_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setB( ComponentSwizzle b_ ) & VULKAN_HPP_NOEXCEPT + { + b = b_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComponentMapping && setB( ComponentSwizzle b_ ) && VULKAN_HPP_NOEXCEPT + { + b = b_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComponentMapping & setA( ComponentSwizzle a_ ) & VULKAN_HPP_NOEXCEPT + { + a = a_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComponentMapping && setA( ComponentSwizzle a_ ) && VULKAN_HPP_NOEXCEPT + { + a = a_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkComponentMapping const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkComponentMapping &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkComponentMapping const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkComponentMapping *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( r, g, b, a ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ComponentMapping const & ) const = default; +#else + bool operator==( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( r == rhs.r ) && ( g == rhs.g ) && ( b == rhs.b ) && ( a == rhs.a ); +# endif + } + + bool operator!=( ComponentMapping const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ComponentSwizzle r = ComponentSwizzle::eIdentity; + ComponentSwizzle g = ComponentSwizzle::eIdentity; + ComponentSwizzle b = ComponentSwizzle::eIdentity; + ComponentSwizzle a = ComponentSwizzle::eIdentity; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ComponentMapping; + }; +#endif + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkAndroidHardwareBufferFormatProperties2ANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatProperties2ANDROID.html + struct AndroidHardwareBufferFormatProperties2ANDROID + { + using NativeType = VkAndroidHardwareBufferFormatProperties2ANDROID; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidHardwareBufferFormatProperties2ANDROID; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AndroidHardwareBufferFormatProperties2ANDROID( Format format_ = Format::eUndefined, + uint64_t externalFormat_ = {}, + FormatFeatureFlags2 formatFeatures_ = {}, + ComponentMapping samplerYcbcrConversionComponents_ = {}, + SamplerYcbcrModelConversion suggestedYcbcrModel_ = SamplerYcbcrModelConversion::eRgbIdentity, + SamplerYcbcrRange suggestedYcbcrRange_ = SamplerYcbcrRange::eItuFull, + ChromaLocation suggestedXChromaOffset_ = ChromaLocation::eCositedEven, + ChromaLocation suggestedYChromaOffset_ = ChromaLocation::eCositedEven, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , format{ format_ } + , externalFormat{ externalFormat_ } + , formatFeatures{ formatFeatures_ } + , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ } + , suggestedYcbcrModel{ suggestedYcbcrModel_ } + , suggestedYcbcrRange{ suggestedYcbcrRange_ } + , suggestedXChromaOffset{ suggestedXChromaOffset_ } + , suggestedYChromaOffset{ suggestedYChromaOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR + AndroidHardwareBufferFormatProperties2ANDROID( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferFormatProperties2ANDROID( VkAndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : AndroidHardwareBufferFormatProperties2ANDROID( *reinterpret_cast( &rhs ) ) + { + } + + AndroidHardwareBufferFormatProperties2ANDROID & operator=( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AndroidHardwareBufferFormatProperties2ANDROID & operator=( VkAndroidHardwareBufferFormatProperties2ANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkAndroidHardwareBufferFormatProperties2ANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferFormatProperties2ANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferFormatProperties2ANDROID const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferFormatProperties2ANDROID *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + format, + externalFormat, + formatFeatures, + samplerYcbcrConversionComponents, + suggestedYcbcrModel, + suggestedYcbcrRange, + suggestedXChromaOffset, + suggestedYChromaOffset ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidHardwareBufferFormatProperties2ANDROID const & ) const = default; +# else + bool operator==( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( externalFormat == rhs.externalFormat ) && + ( formatFeatures == rhs.formatFeatures ) && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) && + ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) && + ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset ); +# endif + } + + bool operator!=( AndroidHardwareBufferFormatProperties2ANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eAndroidHardwareBufferFormatProperties2ANDROID; + void * pNext = {}; + Format format = Format::eUndefined; + uint64_t externalFormat = {}; + FormatFeatureFlags2 formatFeatures = {}; + ComponentMapping samplerYcbcrConversionComponents = {}; + SamplerYcbcrModelConversion suggestedYcbcrModel = SamplerYcbcrModelConversion::eRgbIdentity; + SamplerYcbcrRange suggestedYcbcrRange = SamplerYcbcrRange::eItuFull; + ChromaLocation suggestedXChromaOffset = ChromaLocation::eCositedEven; + ChromaLocation suggestedYChromaOffset = ChromaLocation::eCositedEven; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AndroidHardwareBufferFormatProperties2ANDROID; + }; +# endif + + template <> + struct CppType + { + using Type = AndroidHardwareBufferFormatProperties2ANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkAndroidHardwareBufferFormatPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatPropertiesANDROID.html + struct AndroidHardwareBufferFormatPropertiesANDROID + { + using NativeType = VkAndroidHardwareBufferFormatPropertiesANDROID; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AndroidHardwareBufferFormatPropertiesANDROID( Format format_ = Format::eUndefined, + uint64_t externalFormat_ = {}, + FormatFeatureFlags formatFeatures_ = {}, + ComponentMapping samplerYcbcrConversionComponents_ = {}, + SamplerYcbcrModelConversion suggestedYcbcrModel_ = SamplerYcbcrModelConversion::eRgbIdentity, + SamplerYcbcrRange suggestedYcbcrRange_ = SamplerYcbcrRange::eItuFull, + ChromaLocation suggestedXChromaOffset_ = ChromaLocation::eCositedEven, + ChromaLocation suggestedYChromaOffset_ = ChromaLocation::eCositedEven, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , format{ format_ } + , externalFormat{ externalFormat_ } + , formatFeatures{ formatFeatures_ } + , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ } + , suggestedYcbcrModel{ suggestedYcbcrModel_ } + , suggestedYcbcrRange{ suggestedYcbcrRange_ } + , suggestedXChromaOffset{ suggestedXChromaOffset_ } + , suggestedYChromaOffset{ suggestedYChromaOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferFormatPropertiesANDROID( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : AndroidHardwareBufferFormatPropertiesANDROID( *reinterpret_cast( &rhs ) ) + { + } + + AndroidHardwareBufferFormatPropertiesANDROID & operator=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AndroidHardwareBufferFormatPropertiesANDROID & operator=( VkAndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkAndroidHardwareBufferFormatPropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferFormatPropertiesANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferFormatPropertiesANDROID const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferFormatPropertiesANDROID *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + format, + externalFormat, + formatFeatures, + samplerYcbcrConversionComponents, + suggestedYcbcrModel, + suggestedYcbcrRange, + suggestedXChromaOffset, + suggestedYChromaOffset ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidHardwareBufferFormatPropertiesANDROID const & ) const = default; +# else + bool operator==( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( externalFormat == rhs.externalFormat ) && + ( formatFeatures == rhs.formatFeatures ) && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) && + ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) && + ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset ); +# endif + } + + bool operator!=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID; + void * pNext = {}; + Format format = Format::eUndefined; + uint64_t externalFormat = {}; + FormatFeatureFlags formatFeatures = {}; + ComponentMapping samplerYcbcrConversionComponents = {}; + SamplerYcbcrModelConversion suggestedYcbcrModel = SamplerYcbcrModelConversion::eRgbIdentity; + SamplerYcbcrRange suggestedYcbcrRange = SamplerYcbcrRange::eItuFull; + ChromaLocation suggestedXChromaOffset = ChromaLocation::eCositedEven; + ChromaLocation suggestedYChromaOffset = ChromaLocation::eCositedEven; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AndroidHardwareBufferFormatPropertiesANDROID; + }; +# endif + + template <> + struct CppType + { + using Type = AndroidHardwareBufferFormatPropertiesANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkAndroidHardwareBufferFormatResolvePropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAndroidHardwareBufferFormatResolvePropertiesANDROID.html + struct AndroidHardwareBufferFormatResolvePropertiesANDROID + { + using NativeType = VkAndroidHardwareBufferFormatResolvePropertiesANDROID; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidHardwareBufferFormatResolvePropertiesANDROID; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatResolvePropertiesANDROID( Format colorAttachmentFormat_ = Format::eUndefined, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , colorAttachmentFormat{ colorAttachmentFormat_ } + { + } + + VULKAN_HPP_CONSTEXPR + AndroidHardwareBufferFormatResolvePropertiesANDROID( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferFormatResolvePropertiesANDROID( VkAndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : AndroidHardwareBufferFormatResolvePropertiesANDROID( *reinterpret_cast( &rhs ) ) + { + } + + AndroidHardwareBufferFormatResolvePropertiesANDROID & + operator=( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AndroidHardwareBufferFormatResolvePropertiesANDROID & operator=( VkAndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferFormatResolvePropertiesANDROID *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, colorAttachmentFormat ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidHardwareBufferFormatResolvePropertiesANDROID const & ) const = default; +# else + bool operator==( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentFormat == rhs.colorAttachmentFormat ); +# endif + } + + bool operator!=( AndroidHardwareBufferFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eAndroidHardwareBufferFormatResolvePropertiesANDROID; + void * pNext = {}; + Format colorAttachmentFormat = Format::eUndefined; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AndroidHardwareBufferFormatResolvePropertiesANDROID; + }; +# endif + + template <> + struct CppType + { + using Type = AndroidHardwareBufferFormatResolvePropertiesANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkAndroidHardwareBufferPropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAndroidHardwareBufferPropertiesANDROID.html + struct AndroidHardwareBufferPropertiesANDROID + { + using NativeType = VkAndroidHardwareBufferPropertiesANDROID; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidHardwareBufferPropertiesANDROID; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AndroidHardwareBufferPropertiesANDROID( DeviceSize allocationSize_ = {}, uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , allocationSize{ allocationSize_ } + , memoryTypeBits{ memoryTypeBits_ } + { + } + + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferPropertiesANDROID( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : AndroidHardwareBufferPropertiesANDROID( *reinterpret_cast( &rhs ) ) + { + } + + AndroidHardwareBufferPropertiesANDROID & operator=( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AndroidHardwareBufferPropertiesANDROID & operator=( VkAndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkAndroidHardwareBufferPropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferPropertiesANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferPropertiesANDROID const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferPropertiesANDROID *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, allocationSize, memoryTypeBits ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidHardwareBufferPropertiesANDROID const & ) const = default; +# else + bool operator==( AndroidHardwareBufferPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( AndroidHardwareBufferPropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eAndroidHardwareBufferPropertiesANDROID; + void * pNext = {}; + DeviceSize allocationSize = {}; + uint32_t memoryTypeBits = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AndroidHardwareBufferPropertiesANDROID; + }; +# endif + + template <> + struct CppType + { + using Type = AndroidHardwareBufferPropertiesANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkAndroidHardwareBufferUsageANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAndroidHardwareBufferUsageANDROID.html + struct AndroidHardwareBufferUsageANDROID + { + using NativeType = VkAndroidHardwareBufferUsageANDROID; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidHardwareBufferUsageANDROID; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferUsageANDROID( uint64_t androidHardwareBufferUsage_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , androidHardwareBufferUsage{ androidHardwareBufferUsage_ } + { + } + + VULKAN_HPP_CONSTEXPR AndroidHardwareBufferUsageANDROID( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidHardwareBufferUsageANDROID( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : AndroidHardwareBufferUsageANDROID( *reinterpret_cast( &rhs ) ) + { + } + + AndroidHardwareBufferUsageANDROID & operator=( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AndroidHardwareBufferUsageANDROID & operator=( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkAndroidHardwareBufferUsageANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferUsageANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferUsageANDROID const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAndroidHardwareBufferUsageANDROID *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, androidHardwareBufferUsage ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidHardwareBufferUsageANDROID const & ) const = default; +# else + bool operator==( AndroidHardwareBufferUsageANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( androidHardwareBufferUsage == rhs.androidHardwareBufferUsage ); +# endif + } + + bool operator!=( AndroidHardwareBufferUsageANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eAndroidHardwareBufferUsageANDROID; + void * pNext = {}; + uint64_t androidHardwareBufferUsage = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AndroidHardwareBufferUsageANDROID; + }; +# endif + + template <> + struct CppType + { + using Type = AndroidHardwareBufferUsageANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkAndroidSurfaceCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAndroidSurfaceCreateInfoKHR.html + struct AndroidSurfaceCreateInfoKHR + { + using NativeType = VkAndroidSurfaceCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidSurfaceCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = {}, + struct ANativeWindow * window_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , window{ window_ } + { + } + + VULKAN_HPP_CONSTEXPR AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : AndroidSurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + AndroidSurfaceCreateInfoKHR & operator=( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AndroidSurfaceCreateInfoKHR & operator=( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setFlags( AndroidSurfaceCreateFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR && setFlags( AndroidSurfaceCreateFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & setWindow( struct ANativeWindow * window_ ) & VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR && setWindow( struct ANativeWindow * window_ ) && VULKAN_HPP_NOEXCEPT + { + window = window_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAndroidSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAndroidSurfaceCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAndroidSurfaceCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AndroidSurfaceCreateInfoKHR const & ) const = default; +# else + bool operator==( AndroidSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( window == rhs.window ); +# endif + } + + bool operator!=( AndroidSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eAndroidSurfaceCreateInfoKHR; + void const * pNext = {}; + AndroidSurfaceCreateFlagsKHR flags = {}; + struct ANativeWindow * window = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AndroidSurfaceCreateInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = AndroidSurfaceCreateInfoKHR; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + // wrapper struct for struct VkAntiLagPresentationInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAntiLagPresentationInfoAMD.html + struct AntiLagPresentationInfoAMD + { + using NativeType = VkAntiLagPresentationInfoAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAntiLagPresentationInfoAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + AntiLagPresentationInfoAMD( AntiLagStageAMD stage_ = AntiLagStageAMD::eInput, uint64_t frameIndex_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stage{ stage_ } + , frameIndex{ frameIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR AntiLagPresentationInfoAMD( AntiLagPresentationInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AntiLagPresentationInfoAMD( VkAntiLagPresentationInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : AntiLagPresentationInfoAMD( *reinterpret_cast( &rhs ) ) + { + } + + AntiLagPresentationInfoAMD & operator=( AntiLagPresentationInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AntiLagPresentationInfoAMD & operator=( VkAntiLagPresentationInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AntiLagPresentationInfoAMD & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagPresentationInfoAMD && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagPresentationInfoAMD & setStage( AntiLagStageAMD stage_ ) & VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagPresentationInfoAMD && setStage( AntiLagStageAMD stage_ ) && VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagPresentationInfoAMD & setFrameIndex( uint64_t frameIndex_ ) & VULKAN_HPP_NOEXCEPT + { + frameIndex = frameIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagPresentationInfoAMD && setFrameIndex( uint64_t frameIndex_ ) && VULKAN_HPP_NOEXCEPT + { + frameIndex = frameIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAntiLagPresentationInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAntiLagPresentationInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAntiLagPresentationInfoAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAntiLagPresentationInfoAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stage, frameIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AntiLagPresentationInfoAMD const & ) const = default; +#else + bool operator==( AntiLagPresentationInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && ( frameIndex == rhs.frameIndex ); +# endif + } + + bool operator!=( AntiLagPresentationInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAntiLagPresentationInfoAMD; + void * pNext = {}; + AntiLagStageAMD stage = AntiLagStageAMD::eInput; + uint64_t frameIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AntiLagPresentationInfoAMD; + }; +#endif + + template <> + struct CppType + { + using Type = AntiLagPresentationInfoAMD; + }; + + // wrapper struct for struct VkAntiLagDataAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAntiLagDataAMD.html + struct AntiLagDataAMD + { + using NativeType = VkAntiLagDataAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAntiLagDataAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AntiLagDataAMD( AntiLagModeAMD mode_ = AntiLagModeAMD::eDriverControl, + uint32_t maxFPS_ = {}, + AntiLagPresentationInfoAMD const * pPresentationInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , mode{ mode_ } + , maxFPS{ maxFPS_ } + , pPresentationInfo{ pPresentationInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR AntiLagDataAMD( AntiLagDataAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AntiLagDataAMD( VkAntiLagDataAMD const & rhs ) VULKAN_HPP_NOEXCEPT : AntiLagDataAMD( *reinterpret_cast( &rhs ) ) {} + + AntiLagDataAMD & operator=( AntiLagDataAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AntiLagDataAMD & operator=( VkAntiLagDataAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD & setMode( AntiLagModeAMD mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD && setMode( AntiLagModeAMD mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD & setMaxFPS( uint32_t maxFPS_ ) & VULKAN_HPP_NOEXCEPT + { + maxFPS = maxFPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD && setMaxFPS( uint32_t maxFPS_ ) && VULKAN_HPP_NOEXCEPT + { + maxFPS = maxFPS_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD & setPPresentationInfo( AntiLagPresentationInfoAMD const * pPresentationInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pPresentationInfo = pPresentationInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AntiLagDataAMD && setPPresentationInfo( AntiLagPresentationInfoAMD const * pPresentationInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pPresentationInfo = pPresentationInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAntiLagDataAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAntiLagDataAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAntiLagDataAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAntiLagDataAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mode, maxFPS, pPresentationInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AntiLagDataAMD const & ) const = default; +#else + bool operator==( AntiLagDataAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mode == rhs.mode ) && ( maxFPS == rhs.maxFPS ) && + ( pPresentationInfo == rhs.pPresentationInfo ); +# endif + } + + bool operator!=( AntiLagDataAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAntiLagDataAMD; + void const * pNext = {}; + AntiLagModeAMD mode = AntiLagModeAMD::eDriverControl; + uint32_t maxFPS = {}; + AntiLagPresentationInfoAMD const * pPresentationInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AntiLagDataAMD; + }; +#endif + + template <> + struct CppType + { + using Type = AntiLagDataAMD; + }; + + // wrapper struct for struct VkApplicationInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkApplicationInfo.html + struct ApplicationInfo + { + using NativeType = VkApplicationInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eApplicationInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ApplicationInfo( char const * pApplicationName_ = {}, + uint32_t applicationVersion_ = {}, + char const * pEngineName_ = {}, + uint32_t engineVersion_ = {}, + uint32_t apiVersion_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pApplicationName{ pApplicationName_ } + , applicationVersion{ applicationVersion_ } + , pEngineName{ pEngineName_ } + , engineVersion{ engineVersion_ } + , apiVersion{ apiVersion_ } + { + } + + VULKAN_HPP_CONSTEXPR ApplicationInfo( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ApplicationInfo( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ApplicationInfo( *reinterpret_cast( &rhs ) ) {} + + ApplicationInfo & operator=( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ApplicationInfo & operator=( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPApplicationName( char const * pApplicationName_ ) & VULKAN_HPP_NOEXCEPT + { + pApplicationName = pApplicationName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo && setPApplicationName( char const * pApplicationName_ ) && VULKAN_HPP_NOEXCEPT + { + pApplicationName = pApplicationName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApplicationVersion( uint32_t applicationVersion_ ) & VULKAN_HPP_NOEXCEPT + { + applicationVersion = applicationVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo && setApplicationVersion( uint32_t applicationVersion_ ) && VULKAN_HPP_NOEXCEPT + { + applicationVersion = applicationVersion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setPEngineName( char const * pEngineName_ ) & VULKAN_HPP_NOEXCEPT + { + pEngineName = pEngineName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo && setPEngineName( char const * pEngineName_ ) && VULKAN_HPP_NOEXCEPT + { + pEngineName = pEngineName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setEngineVersion( uint32_t engineVersion_ ) & VULKAN_HPP_NOEXCEPT + { + engineVersion = engineVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo && setEngineVersion( uint32_t engineVersion_ ) && VULKAN_HPP_NOEXCEPT + { + engineVersion = engineVersion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & setApiVersion( uint32_t apiVersion_ ) & VULKAN_HPP_NOEXCEPT + { + apiVersion = apiVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ApplicationInfo && setApiVersion( uint32_t apiVersion_ ) && VULKAN_HPP_NOEXCEPT + { + apiVersion = apiVersion_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkApplicationInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkApplicationInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkApplicationInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkApplicationInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pApplicationName, applicationVersion, pEngineName, engineVersion, apiVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( pApplicationName != rhs.pApplicationName ) + if ( auto cmp = strcmp( pApplicationName, rhs.pApplicationName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = applicationVersion <=> rhs.applicationVersion; cmp != 0 ) + return cmp; + if ( pEngineName != rhs.pEngineName ) + if ( auto cmp = strcmp( pEngineName, rhs.pEngineName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = engineVersion <=> rhs.engineVersion; cmp != 0 ) + return cmp; + if ( auto cmp = apiVersion <=> rhs.apiVersion; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( ( pApplicationName == rhs.pApplicationName ) || ( strcmp( pApplicationName, rhs.pApplicationName ) == 0 ) ) && + ( applicationVersion == rhs.applicationVersion ) && ( ( pEngineName == rhs.pEngineName ) || ( strcmp( pEngineName, rhs.pEngineName ) == 0 ) ) && + ( engineVersion == rhs.engineVersion ) && ( apiVersion == rhs.apiVersion ); + } + + bool operator!=( ApplicationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eApplicationInfo; + void const * pNext = {}; + char const * pApplicationName = {}; + uint32_t applicationVersion = {}; + char const * pEngineName = {}; + uint32_t engineVersion = {}; + uint32_t apiVersion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ApplicationInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ApplicationInfo; + }; + + // wrapper struct for struct VkAttachmentDescription, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentDescription.html + struct AttachmentDescription + { + using NativeType = VkAttachmentDescription; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentDescription( AttachmentDescriptionFlags flags_ = {}, + Format format_ = Format::eUndefined, + SampleCountFlagBits samples_ = SampleCountFlagBits::e1, + AttachmentLoadOp loadOp_ = AttachmentLoadOp::eLoad, + AttachmentStoreOp storeOp_ = AttachmentStoreOp::eStore, + AttachmentLoadOp stencilLoadOp_ = AttachmentLoadOp::eLoad, + AttachmentStoreOp stencilStoreOp_ = AttachmentStoreOp::eStore, + ImageLayout initialLayout_ = ImageLayout::eUndefined, + ImageLayout finalLayout_ = ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT + : flags{ flags_ } + , format{ format_ } + , samples{ samples_ } + , loadOp{ loadOp_ } + , storeOp{ storeOp_ } + , stencilLoadOp{ stencilLoadOp_ } + , stencilStoreOp{ stencilStoreOp_ } + , initialLayout{ initialLayout_ } + , finalLayout{ finalLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR AttachmentDescription( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentDescription( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentDescription( *reinterpret_cast( &rhs ) ) + { + } + + AttachmentDescription & operator=( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AttachmentDescription & operator=( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFlags( AttachmentDescriptionFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription && setFlags( AttachmentDescriptionFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setSamples( SampleCountFlagBits samples_ ) & VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription && setSamples( SampleCountFlagBits samples_ ) && VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setLoadOp( AttachmentLoadOp loadOp_ ) & VULKAN_HPP_NOEXCEPT + { + loadOp = loadOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription && setLoadOp( AttachmentLoadOp loadOp_ ) && VULKAN_HPP_NOEXCEPT + { + loadOp = loadOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStoreOp( AttachmentStoreOp storeOp_ ) & VULKAN_HPP_NOEXCEPT + { + storeOp = storeOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription && setStoreOp( AttachmentStoreOp storeOp_ ) && VULKAN_HPP_NOEXCEPT + { + storeOp = storeOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ ) & VULKAN_HPP_NOEXCEPT + { + stencilLoadOp = stencilLoadOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription && setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ ) && VULKAN_HPP_NOEXCEPT + { + stencilLoadOp = stencilLoadOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ ) & VULKAN_HPP_NOEXCEPT + { + stencilStoreOp = stencilStoreOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription && setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ ) && VULKAN_HPP_NOEXCEPT + { + stencilStoreOp = stencilStoreOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setInitialLayout( ImageLayout initialLayout_ ) & VULKAN_HPP_NOEXCEPT + { + initialLayout = initialLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription && setInitialLayout( ImageLayout initialLayout_ ) && VULKAN_HPP_NOEXCEPT + { + initialLayout = initialLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & setFinalLayout( ImageLayout finalLayout_ ) & VULKAN_HPP_NOEXCEPT + { + finalLayout = finalLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription && setFinalLayout( ImageLayout finalLayout_ ) && VULKAN_HPP_NOEXCEPT + { + finalLayout = finalLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAttachmentDescription const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentDescription &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentDescription const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAttachmentDescription *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( flags, format, samples, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentDescription const & ) const = default; +#else + bool operator==( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( flags == rhs.flags ) && ( format == rhs.format ) && ( samples == rhs.samples ) && ( loadOp == rhs.loadOp ) && ( storeOp == rhs.storeOp ) && + ( stencilLoadOp == rhs.stencilLoadOp ) && ( stencilStoreOp == rhs.stencilStoreOp ) && ( initialLayout == rhs.initialLayout ) && + ( finalLayout == rhs.finalLayout ); +# endif + } + + bool operator!=( AttachmentDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + AttachmentDescriptionFlags flags = {}; + Format format = Format::eUndefined; + SampleCountFlagBits samples = SampleCountFlagBits::e1; + AttachmentLoadOp loadOp = AttachmentLoadOp::eLoad; + AttachmentStoreOp storeOp = AttachmentStoreOp::eStore; + AttachmentLoadOp stencilLoadOp = AttachmentLoadOp::eLoad; + AttachmentStoreOp stencilStoreOp = AttachmentStoreOp::eStore; + ImageLayout initialLayout = ImageLayout::eUndefined; + ImageLayout finalLayout = ImageLayout::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AttachmentDescription; + }; +#endif + + // wrapper struct for struct VkAttachmentDescription2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentDescription2.html + struct AttachmentDescription2 + { + using NativeType = VkAttachmentDescription2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentDescription2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentDescription2( AttachmentDescriptionFlags flags_ = {}, + Format format_ = Format::eUndefined, + SampleCountFlagBits samples_ = SampleCountFlagBits::e1, + AttachmentLoadOp loadOp_ = AttachmentLoadOp::eLoad, + AttachmentStoreOp storeOp_ = AttachmentStoreOp::eStore, + AttachmentLoadOp stencilLoadOp_ = AttachmentLoadOp::eLoad, + AttachmentStoreOp stencilStoreOp_ = AttachmentStoreOp::eStore, + ImageLayout initialLayout_ = ImageLayout::eUndefined, + ImageLayout finalLayout_ = ImageLayout::eUndefined, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , format{ format_ } + , samples{ samples_ } + , loadOp{ loadOp_ } + , storeOp{ storeOp_ } + , stencilLoadOp{ stencilLoadOp_ } + , stencilStoreOp{ stencilStoreOp_ } + , initialLayout{ initialLayout_ } + , finalLayout{ finalLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR AttachmentDescription2( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentDescription2( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentDescription2( *reinterpret_cast( &rhs ) ) + { + } + + AttachmentDescription2 & operator=( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AttachmentDescription2 & operator=( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFlags( AttachmentDescriptionFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 && setFlags( AttachmentDescriptionFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setSamples( SampleCountFlagBits samples_ ) & VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 && setSamples( SampleCountFlagBits samples_ ) && VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setLoadOp( AttachmentLoadOp loadOp_ ) & VULKAN_HPP_NOEXCEPT + { + loadOp = loadOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 && setLoadOp( AttachmentLoadOp loadOp_ ) && VULKAN_HPP_NOEXCEPT + { + loadOp = loadOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStoreOp( AttachmentStoreOp storeOp_ ) & VULKAN_HPP_NOEXCEPT + { + storeOp = storeOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 && setStoreOp( AttachmentStoreOp storeOp_ ) && VULKAN_HPP_NOEXCEPT + { + storeOp = storeOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ ) & VULKAN_HPP_NOEXCEPT + { + stencilLoadOp = stencilLoadOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 && setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ ) && VULKAN_HPP_NOEXCEPT + { + stencilLoadOp = stencilLoadOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ ) & VULKAN_HPP_NOEXCEPT + { + stencilStoreOp = stencilStoreOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 && setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ ) && VULKAN_HPP_NOEXCEPT + { + stencilStoreOp = stencilStoreOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setInitialLayout( ImageLayout initialLayout_ ) & VULKAN_HPP_NOEXCEPT + { + initialLayout = initialLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 && setInitialLayout( ImageLayout initialLayout_ ) && VULKAN_HPP_NOEXCEPT + { + initialLayout = initialLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & setFinalLayout( ImageLayout finalLayout_ ) & VULKAN_HPP_NOEXCEPT + { + finalLayout = finalLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 && setFinalLayout( ImageLayout finalLayout_ ) && VULKAN_HPP_NOEXCEPT + { + finalLayout = finalLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAttachmentDescription2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentDescription2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentDescription2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAttachmentDescription2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, format, samples, loadOp, storeOp, stencilLoadOp, stencilStoreOp, initialLayout, finalLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentDescription2 const & ) const = default; +#else + bool operator==( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( format == rhs.format ) && ( samples == rhs.samples ) && + ( loadOp == rhs.loadOp ) && ( storeOp == rhs.storeOp ) && ( stencilLoadOp == rhs.stencilLoadOp ) && ( stencilStoreOp == rhs.stencilStoreOp ) && + ( initialLayout == rhs.initialLayout ) && ( finalLayout == rhs.finalLayout ); +# endif + } + + bool operator!=( AttachmentDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAttachmentDescription2; + void const * pNext = {}; + AttachmentDescriptionFlags flags = {}; + Format format = Format::eUndefined; + SampleCountFlagBits samples = SampleCountFlagBits::e1; + AttachmentLoadOp loadOp = AttachmentLoadOp::eLoad; + AttachmentStoreOp storeOp = AttachmentStoreOp::eStore; + AttachmentLoadOp stencilLoadOp = AttachmentLoadOp::eLoad; + AttachmentStoreOp stencilStoreOp = AttachmentStoreOp::eStore; + ImageLayout initialLayout = ImageLayout::eUndefined; + ImageLayout finalLayout = ImageLayout::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AttachmentDescription2; + }; +#endif + + template <> + struct CppType + { + using Type = AttachmentDescription2; + }; + + using AttachmentDescription2KHR = AttachmentDescription2; + + // wrapper struct for struct VkAttachmentDescriptionStencilLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentDescriptionStencilLayout.html + struct AttachmentDescriptionStencilLayout + { + using NativeType = VkAttachmentDescriptionStencilLayout; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentDescriptionStencilLayout; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout( ImageLayout stencilInitialLayout_ = ImageLayout::eUndefined, + ImageLayout stencilFinalLayout_ = ImageLayout::eUndefined, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stencilInitialLayout{ stencilInitialLayout_ } + , stencilFinalLayout{ stencilFinalLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentDescriptionStencilLayout( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentDescriptionStencilLayout( *reinterpret_cast( &rhs ) ) + { + } + + AttachmentDescriptionStencilLayout & operator=( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AttachmentDescriptionStencilLayout & operator=( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & setStencilInitialLayout( ImageLayout stencilInitialLayout_ ) & VULKAN_HPP_NOEXCEPT + { + stencilInitialLayout = stencilInitialLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout && setStencilInitialLayout( ImageLayout stencilInitialLayout_ ) && VULKAN_HPP_NOEXCEPT + { + stencilInitialLayout = stencilInitialLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & setStencilFinalLayout( ImageLayout stencilFinalLayout_ ) & VULKAN_HPP_NOEXCEPT + { + stencilFinalLayout = stencilFinalLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout && setStencilFinalLayout( ImageLayout stencilFinalLayout_ ) && VULKAN_HPP_NOEXCEPT + { + stencilFinalLayout = stencilFinalLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAttachmentDescriptionStencilLayout const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentDescriptionStencilLayout &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentDescriptionStencilLayout const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAttachmentDescriptionStencilLayout *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stencilInitialLayout, stencilFinalLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentDescriptionStencilLayout const & ) const = default; +#else + bool operator==( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilInitialLayout == rhs.stencilInitialLayout ) && + ( stencilFinalLayout == rhs.stencilFinalLayout ); +# endif + } + + bool operator!=( AttachmentDescriptionStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAttachmentDescriptionStencilLayout; + void * pNext = {}; + ImageLayout stencilInitialLayout = ImageLayout::eUndefined; + ImageLayout stencilFinalLayout = ImageLayout::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AttachmentDescriptionStencilLayout; + }; +#endif + + template <> + struct CppType + { + using Type = AttachmentDescriptionStencilLayout; + }; + + using AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout; + + // wrapper struct for struct VkAttachmentFeedbackLoopInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentFeedbackLoopInfoEXT.html + struct AttachmentFeedbackLoopInfoEXT + { + using NativeType = VkAttachmentFeedbackLoopInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentFeedbackLoopInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentFeedbackLoopInfoEXT( Bool32 feedbackLoopEnable_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , feedbackLoopEnable{ feedbackLoopEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR AttachmentFeedbackLoopInfoEXT( AttachmentFeedbackLoopInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentFeedbackLoopInfoEXT( VkAttachmentFeedbackLoopInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentFeedbackLoopInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + AttachmentFeedbackLoopInfoEXT & operator=( AttachmentFeedbackLoopInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AttachmentFeedbackLoopInfoEXT & operator=( VkAttachmentFeedbackLoopInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentFeedbackLoopInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentFeedbackLoopInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentFeedbackLoopInfoEXT & setFeedbackLoopEnable( Bool32 feedbackLoopEnable_ ) & VULKAN_HPP_NOEXCEPT + { + feedbackLoopEnable = feedbackLoopEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentFeedbackLoopInfoEXT && setFeedbackLoopEnable( Bool32 feedbackLoopEnable_ ) && VULKAN_HPP_NOEXCEPT + { + feedbackLoopEnable = feedbackLoopEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAttachmentFeedbackLoopInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentFeedbackLoopInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentFeedbackLoopInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAttachmentFeedbackLoopInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, feedbackLoopEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentFeedbackLoopInfoEXT const & ) const = default; +#else + bool operator==( AttachmentFeedbackLoopInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( feedbackLoopEnable == rhs.feedbackLoopEnable ); +# endif + } + + bool operator!=( AttachmentFeedbackLoopInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAttachmentFeedbackLoopInfoEXT; + void const * pNext = {}; + Bool32 feedbackLoopEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AttachmentFeedbackLoopInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = AttachmentFeedbackLoopInfoEXT; + }; + + // wrapper struct for struct VkAttachmentReference, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentReference.html + struct AttachmentReference + { + using NativeType = VkAttachmentReference; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentReference( uint32_t attachment_ = {}, ImageLayout layout_ = ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT + : attachment{ attachment_ } + , layout{ layout_ } + { + } + + VULKAN_HPP_CONSTEXPR AttachmentReference( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentReference( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT : AttachmentReference( *reinterpret_cast( &rhs ) ) + { + } + + AttachmentReference & operator=( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AttachmentReference & operator=( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentReference & setAttachment( uint32_t attachment_ ) & VULKAN_HPP_NOEXCEPT + { + attachment = attachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference && setAttachment( uint32_t attachment_ ) && VULKAN_HPP_NOEXCEPT + { + attachment = attachment_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference & setLayout( ImageLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference && setLayout( ImageLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAttachmentReference const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentReference &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentReference const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAttachmentReference *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( attachment, layout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentReference const & ) const = default; +#else + bool operator==( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( attachment == rhs.attachment ) && ( layout == rhs.layout ); +# endif + } + + bool operator!=( AttachmentReference const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t attachment = {}; + ImageLayout layout = ImageLayout::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AttachmentReference; + }; +#endif + + // wrapper struct for struct VkAttachmentReference2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentReference2.html + struct AttachmentReference2 + { + using NativeType = VkAttachmentReference2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentReference2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentReference2( uint32_t attachment_ = {}, + ImageLayout layout_ = ImageLayout::eUndefined, + ImageAspectFlags aspectMask_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , attachment{ attachment_ } + , layout{ layout_ } + , aspectMask{ aspectMask_ } + { + } + + VULKAN_HPP_CONSTEXPR AttachmentReference2( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentReference2( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentReference2( *reinterpret_cast( &rhs ) ) + { + } + + AttachmentReference2 & operator=( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AttachmentReference2 & operator=( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setAttachment( uint32_t attachment_ ) & VULKAN_HPP_NOEXCEPT + { + attachment = attachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 && setAttachment( uint32_t attachment_ ) && VULKAN_HPP_NOEXCEPT + { + attachment = attachment_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setLayout( ImageLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 && setLayout( ImageLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & setAspectMask( ImageAspectFlags aspectMask_ ) & VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 && setAspectMask( ImageAspectFlags aspectMask_ ) && VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAttachmentReference2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentReference2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentReference2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAttachmentReference2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, attachment, layout, aspectMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentReference2 const & ) const = default; +#else + bool operator==( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachment == rhs.attachment ) && ( layout == rhs.layout ) && + ( aspectMask == rhs.aspectMask ); +# endif + } + + bool operator!=( AttachmentReference2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAttachmentReference2; + void const * pNext = {}; + uint32_t attachment = {}; + ImageLayout layout = ImageLayout::eUndefined; + ImageAspectFlags aspectMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AttachmentReference2; + }; +#endif + + template <> + struct CppType + { + using Type = AttachmentReference2; + }; + + using AttachmentReference2KHR = AttachmentReference2; + + // wrapper struct for struct VkAttachmentReferenceStencilLayout, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentReferenceStencilLayout.html + struct AttachmentReferenceStencilLayout + { + using NativeType = VkAttachmentReferenceStencilLayout; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentReferenceStencilLayout; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout( ImageLayout stencilLayout_ = ImageLayout::eUndefined, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stencilLayout{ stencilLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentReferenceStencilLayout( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentReferenceStencilLayout( *reinterpret_cast( &rhs ) ) + { + } + + AttachmentReferenceStencilLayout & operator=( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AttachmentReferenceStencilLayout & operator=( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & setStencilLayout( ImageLayout stencilLayout_ ) & VULKAN_HPP_NOEXCEPT + { + stencilLayout = stencilLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout && setStencilLayout( ImageLayout stencilLayout_ ) && VULKAN_HPP_NOEXCEPT + { + stencilLayout = stencilLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAttachmentReferenceStencilLayout const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentReferenceStencilLayout &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentReferenceStencilLayout const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAttachmentReferenceStencilLayout *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stencilLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentReferenceStencilLayout const & ) const = default; +#else + bool operator==( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilLayout == rhs.stencilLayout ); +# endif + } + + bool operator!=( AttachmentReferenceStencilLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAttachmentReferenceStencilLayout; + void * pNext = {}; + ImageLayout stencilLayout = ImageLayout::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AttachmentReferenceStencilLayout; + }; +#endif + + template <> + struct CppType + { + using Type = AttachmentReferenceStencilLayout; + }; + + using AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout; + + // wrapper struct for struct VkAttachmentSampleCountInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentSampleCountInfoAMD.html + struct AttachmentSampleCountInfoAMD + { + using NativeType = VkAttachmentSampleCountInfoAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentSampleCountInfoAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentSampleCountInfoAMD( uint32_t colorAttachmentCount_ = {}, + SampleCountFlagBits const * pColorAttachmentSamples_ = {}, + SampleCountFlagBits depthStencilAttachmentSamples_ = SampleCountFlagBits::e1, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , colorAttachmentCount{ colorAttachmentCount_ } + , pColorAttachmentSamples{ pColorAttachmentSamples_ } + , depthStencilAttachmentSamples{ depthStencilAttachmentSamples_ } + { + } + + VULKAN_HPP_CONSTEXPR AttachmentSampleCountInfoAMD( AttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentSampleCountInfoAMD( VkAttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentSampleCountInfoAMD( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AttachmentSampleCountInfoAMD( ArrayProxyNoTemporaries const & colorAttachmentSamples_, + SampleCountFlagBits depthStencilAttachmentSamples_ = SampleCountFlagBits::e1, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , colorAttachmentCount( static_cast( colorAttachmentSamples_.size() ) ) + , pColorAttachmentSamples( colorAttachmentSamples_.data() ) + , depthStencilAttachmentSamples( depthStencilAttachmentSamples_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + AttachmentSampleCountInfoAMD & operator=( AttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AttachmentSampleCountInfoAMD & operator=( VkAttachmentSampleCountInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD && setColorAttachmentCount( uint32_t colorAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setPColorAttachmentSamples( SampleCountFlagBits const * pColorAttachmentSamples_ ) & + VULKAN_HPP_NOEXCEPT + { + pColorAttachmentSamples = pColorAttachmentSamples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD && setPColorAttachmentSamples( SampleCountFlagBits const * pColorAttachmentSamples_ ) && + VULKAN_HPP_NOEXCEPT + { + pColorAttachmentSamples = pColorAttachmentSamples_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + AttachmentSampleCountInfoAMD & + setColorAttachmentSamples( ArrayProxyNoTemporaries const & colorAttachmentSamples_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachmentSamples_.size() ); + pColorAttachmentSamples = colorAttachmentSamples_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD & setDepthStencilAttachmentSamples( SampleCountFlagBits depthStencilAttachmentSamples_ ) & + VULKAN_HPP_NOEXCEPT + { + depthStencilAttachmentSamples = depthStencilAttachmentSamples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleCountInfoAMD && setDepthStencilAttachmentSamples( SampleCountFlagBits depthStencilAttachmentSamples_ ) && + VULKAN_HPP_NOEXCEPT + { + depthStencilAttachmentSamples = depthStencilAttachmentSamples_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAttachmentSampleCountInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentSampleCountInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentSampleCountInfoAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAttachmentSampleCountInfoAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentSamples, depthStencilAttachmentSamples ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentSampleCountInfoAMD const & ) const = default; +#else + bool operator==( AttachmentSampleCountInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) && + ( pColorAttachmentSamples == rhs.pColorAttachmentSamples ) && ( depthStencilAttachmentSamples == rhs.depthStencilAttachmentSamples ); +# endif + } + + bool operator!=( AttachmentSampleCountInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eAttachmentSampleCountInfoAMD; + void const * pNext = {}; + uint32_t colorAttachmentCount = {}; + SampleCountFlagBits const * pColorAttachmentSamples = {}; + SampleCountFlagBits depthStencilAttachmentSamples = SampleCountFlagBits::e1; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AttachmentSampleCountInfoAMD; + }; +#endif + + template <> + struct CppType + { + using Type = AttachmentSampleCountInfoAMD; + }; + + using AttachmentSampleCountInfoNV = AttachmentSampleCountInfoAMD; + + // wrapper struct for struct VkExtent2D, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExtent2D.html + struct Extent2D + { + using NativeType = VkExtent2D; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Extent2D( uint32_t width_ = {}, uint32_t height_ = {} ) VULKAN_HPP_NOEXCEPT + : width{ width_ } + , height{ height_ } + { + } + + VULKAN_HPP_CONSTEXPR Extent2D( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Extent2D( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT : Extent2D( *reinterpret_cast( &rhs ) ) {} + + Extent2D & operator=( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + Extent2D & operator=( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Extent2D & setWidth( uint32_t width_ ) & VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Extent2D && setWidth( uint32_t width_ ) && VULKAN_HPP_NOEXCEPT + { + width = width_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Extent2D & setHeight( uint32_t height_ ) & VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Extent2D && setHeight( uint32_t height_ ) && VULKAN_HPP_NOEXCEPT + { + height = height_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExtent2D const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExtent2D &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExtent2D const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExtent2D *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( width, height ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Extent2D const & ) const = default; +#else + bool operator==( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( width == rhs.width ) && ( height == rhs.height ); +# endif + } + + bool operator!=( Extent2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t width = {}; + uint32_t height = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = Extent2D; + }; +#endif + + // wrapper struct for struct VkSampleLocationEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSampleLocationEXT.html + struct SampleLocationEXT + { + using NativeType = VkSampleLocationEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SampleLocationEXT( float x_ = {}, float y_ = {} ) VULKAN_HPP_NOEXCEPT + : x{ x_ } + , y{ y_ } + { + } + + VULKAN_HPP_CONSTEXPR SampleLocationEXT( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SampleLocationEXT( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT : SampleLocationEXT( *reinterpret_cast( &rhs ) ) {} + + SampleLocationEXT & operator=( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SampleLocationEXT & operator=( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setX( float x_ ) & VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT && setX( float x_ ) && VULKAN_HPP_NOEXCEPT + { + x = x_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & setY( float y_ ) & VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT && setY( float y_ ) && VULKAN_HPP_NOEXCEPT + { + y = y_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSampleLocationEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSampleLocationEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSampleLocationEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSampleLocationEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SampleLocationEXT const & ) const = default; +#else + bool operator==( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ); +# endif + } + + bool operator!=( SampleLocationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float x = {}; + float y = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SampleLocationEXT; + }; +#endif + + // wrapper struct for struct VkSampleLocationsInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSampleLocationsInfoEXT.html + struct SampleLocationsInfoEXT + { + using NativeType = VkSampleLocationsInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSampleLocationsInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT( SampleCountFlagBits sampleLocationsPerPixel_ = SampleCountFlagBits::e1, + Extent2D sampleLocationGridSize_ = {}, + uint32_t sampleLocationsCount_ = {}, + SampleLocationEXT const * pSampleLocations_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , sampleLocationsPerPixel{ sampleLocationsPerPixel_ } + , sampleLocationGridSize{ sampleLocationGridSize_ } + , sampleLocationsCount{ sampleLocationsCount_ } + , pSampleLocations{ pSampleLocations_ } + { + } + + VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SampleLocationsInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SampleLocationsInfoEXT( SampleCountFlagBits sampleLocationsPerPixel_, + Extent2D sampleLocationGridSize_, + ArrayProxyNoTemporaries const & sampleLocations_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , sampleLocationsPerPixel( sampleLocationsPerPixel_ ) + , sampleLocationGridSize( sampleLocationGridSize_ ) + , sampleLocationsCount( static_cast( sampleLocations_.size() ) ) + , pSampleLocations( sampleLocations_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SampleLocationsInfoEXT & operator=( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SampleLocationsInfoEXT & operator=( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setSampleLocationsPerPixel( SampleCountFlagBits sampleLocationsPerPixel_ ) & VULKAN_HPP_NOEXCEPT + { + sampleLocationsPerPixel = sampleLocationsPerPixel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT && setSampleLocationsPerPixel( SampleCountFlagBits sampleLocationsPerPixel_ ) && VULKAN_HPP_NOEXCEPT + { + sampleLocationsPerPixel = sampleLocationsPerPixel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setSampleLocationGridSize( Extent2D const & sampleLocationGridSize_ ) & VULKAN_HPP_NOEXCEPT + { + sampleLocationGridSize = sampleLocationGridSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT && setSampleLocationGridSize( Extent2D const & sampleLocationGridSize_ ) && VULKAN_HPP_NOEXCEPT + { + sampleLocationGridSize = sampleLocationGridSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setSampleLocationsCount( uint32_t sampleLocationsCount_ ) & VULKAN_HPP_NOEXCEPT + { + sampleLocationsCount = sampleLocationsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT && setSampleLocationsCount( uint32_t sampleLocationsCount_ ) && VULKAN_HPP_NOEXCEPT + { + sampleLocationsCount = sampleLocationsCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & setPSampleLocations( SampleLocationEXT const * pSampleLocations_ ) & VULKAN_HPP_NOEXCEPT + { + pSampleLocations = pSampleLocations_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT && setPSampleLocations( SampleLocationEXT const * pSampleLocations_ ) && VULKAN_HPP_NOEXCEPT + { + pSampleLocations = pSampleLocations_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SampleLocationsInfoEXT & setSampleLocations( ArrayProxyNoTemporaries const & sampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationsCount = static_cast( sampleLocations_.size() ); + pSampleLocations = sampleLocations_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSampleLocationsInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSampleLocationsInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSampleLocationsInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSampleLocationsInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sampleLocationsPerPixel, sampleLocationGridSize, sampleLocationsCount, pSampleLocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SampleLocationsInfoEXT const & ) const = default; +#else + bool operator==( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel ) && + ( sampleLocationGridSize == rhs.sampleLocationGridSize ) && ( sampleLocationsCount == rhs.sampleLocationsCount ) && + ( pSampleLocations == rhs.pSampleLocations ); +# endif + } + + bool operator!=( SampleLocationsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSampleLocationsInfoEXT; + void const * pNext = {}; + SampleCountFlagBits sampleLocationsPerPixel = SampleCountFlagBits::e1; + Extent2D sampleLocationGridSize = {}; + uint32_t sampleLocationsCount = {}; + SampleLocationEXT const * pSampleLocations = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SampleLocationsInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SampleLocationsInfoEXT; + }; + + // wrapper struct for struct VkAttachmentSampleLocationsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkAttachmentSampleLocationsEXT.html + struct AttachmentSampleLocationsEXT + { + using NativeType = VkAttachmentSampleLocationsEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT( uint32_t attachmentIndex_ = {}, SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : attachmentIndex{ attachmentIndex_ } + , sampleLocationsInfo{ sampleLocationsInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : AttachmentSampleLocationsEXT( *reinterpret_cast( &rhs ) ) + { + } + + AttachmentSampleLocationsEXT & operator=( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + AttachmentSampleLocationsEXT & operator=( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & setAttachmentIndex( uint32_t attachmentIndex_ ) & VULKAN_HPP_NOEXCEPT + { + attachmentIndex = attachmentIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT && setAttachmentIndex( uint32_t attachmentIndex_ ) && VULKAN_HPP_NOEXCEPT + { + attachmentIndex = attachmentIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & setSampleLocationsInfo( SampleLocationsInfoEXT const & sampleLocationsInfo_ ) & VULKAN_HPP_NOEXCEPT + { + sampleLocationsInfo = sampleLocationsInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT && setSampleLocationsInfo( SampleLocationsInfoEXT const & sampleLocationsInfo_ ) && VULKAN_HPP_NOEXCEPT + { + sampleLocationsInfo = sampleLocationsInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkAttachmentSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkAttachmentSampleLocationsEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkAttachmentSampleLocationsEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( attachmentIndex, sampleLocationsInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( AttachmentSampleLocationsEXT const & ) const = default; +#else + bool operator==( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( attachmentIndex == rhs.attachmentIndex ) && ( sampleLocationsInfo == rhs.sampleLocationsInfo ); +# endif + } + + bool operator!=( AttachmentSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t attachmentIndex = {}; + SampleLocationsInfoEXT sampleLocationsInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = AttachmentSampleLocationsEXT; + }; +#endif + + // wrapper struct for struct VkBaseInStructure, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBaseInStructure.html + struct BaseInStructure + { + using NativeType = VkBaseInStructure; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + BaseInStructure( StructureType sType_ = StructureType::eApplicationInfo, struct BaseInStructure const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : sType{ sType_ } + , pNext{ pNext_ } + { + } + + BaseInStructure( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BaseInStructure( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT : BaseInStructure( *reinterpret_cast( &rhs ) ) {} + + BaseInStructure & operator=( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BaseInStructure & operator=( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BaseInStructure & setPNext( struct BaseInStructure const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BaseInStructure && setPNext( struct BaseInStructure const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBaseInStructure const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBaseInStructure &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBaseInStructure const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBaseInStructure *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BaseInStructure const & ) const = default; +#else + bool operator==( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( BaseInStructure const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eApplicationInfo; + struct BaseInStructure const * pNext = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BaseInStructure; + }; +#endif + + // wrapper struct for struct VkBaseOutStructure, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBaseOutStructure.html + struct BaseOutStructure + { + using NativeType = VkBaseOutStructure; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + BaseOutStructure( StructureType sType_ = StructureType::eApplicationInfo, struct BaseOutStructure * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : sType{ sType_ } + , pNext{ pNext_ } + { + } + + BaseOutStructure( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BaseOutStructure( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT : BaseOutStructure( *reinterpret_cast( &rhs ) ) {} + + BaseOutStructure & operator=( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BaseOutStructure & operator=( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BaseOutStructure & setPNext( struct BaseOutStructure * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BaseOutStructure && setPNext( struct BaseOutStructure * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBaseOutStructure const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBaseOutStructure &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBaseOutStructure const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBaseOutStructure *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BaseOutStructure const & ) const = default; +#else + bool operator==( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( BaseOutStructure const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eApplicationInfo; + struct BaseOutStructure * pNext = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BaseOutStructure; + }; +#endif + + // wrapper struct for struct VkBeginCustomResolveInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBeginCustomResolveInfoEXT.html + struct BeginCustomResolveInfoEXT + { + using NativeType = VkBeginCustomResolveInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBeginCustomResolveInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BeginCustomResolveInfoEXT( void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {} + + VULKAN_HPP_CONSTEXPR BeginCustomResolveInfoEXT( BeginCustomResolveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BeginCustomResolveInfoEXT( VkBeginCustomResolveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : BeginCustomResolveInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + BeginCustomResolveInfoEXT & operator=( BeginCustomResolveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BeginCustomResolveInfoEXT & operator=( VkBeginCustomResolveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BeginCustomResolveInfoEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BeginCustomResolveInfoEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBeginCustomResolveInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBeginCustomResolveInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBeginCustomResolveInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBeginCustomResolveInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BeginCustomResolveInfoEXT const & ) const = default; +#else + bool operator==( BeginCustomResolveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( BeginCustomResolveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBeginCustomResolveInfoEXT; + void * pNext = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BeginCustomResolveInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = BeginCustomResolveInfoEXT; + }; + + // wrapper struct for struct VkBindAccelerationStructureMemoryInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindAccelerationStructureMemoryInfoNV.html + struct BindAccelerationStructureMemoryInfoNV + { + using NativeType = VkBindAccelerationStructureMemoryInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindAccelerationStructureMemoryInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindAccelerationStructureMemoryInfoNV( AccelerationStructureNV accelerationStructure_ = {}, + DeviceMemory memory_ = {}, + DeviceSize memoryOffset_ = {}, + uint32_t deviceIndexCount_ = {}, + uint32_t const * pDeviceIndices_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , accelerationStructure{ accelerationStructure_ } + , memory{ memory_ } + , memoryOffset{ memoryOffset_ } + , deviceIndexCount{ deviceIndexCount_ } + , pDeviceIndices{ pDeviceIndices_ } + { + } + + VULKAN_HPP_CONSTEXPR BindAccelerationStructureMemoryInfoNV( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindAccelerationStructureMemoryInfoNV( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BindAccelerationStructureMemoryInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindAccelerationStructureMemoryInfoNV( AccelerationStructureNV accelerationStructure_, + DeviceMemory memory_, + DeviceSize memoryOffset_, + ArrayProxyNoTemporaries const & deviceIndices_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , accelerationStructure( accelerationStructure_ ) + , memory( memory_ ) + , memoryOffset( memoryOffset_ ) + , deviceIndexCount( static_cast( deviceIndices_.size() ) ) + , pDeviceIndices( deviceIndices_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + BindAccelerationStructureMemoryInfoNV & operator=( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindAccelerationStructureMemoryInfoNV & operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setAccelerationStructure( AccelerationStructureNV accelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV && setAccelerationStructure( AccelerationStructureNV accelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setMemoryOffset( DeviceSize memoryOffset_ ) & VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV && setMemoryOffset( DeviceSize memoryOffset_ ) && VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setDeviceIndexCount( uint32_t deviceIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = deviceIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV && setDeviceIndexCount( uint32_t deviceIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = deviceIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & setPDeviceIndices( uint32_t const * pDeviceIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pDeviceIndices = pDeviceIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV && setPDeviceIndices( uint32_t const * pDeviceIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pDeviceIndices = pDeviceIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindAccelerationStructureMemoryInfoNV & setDeviceIndices( ArrayProxyNoTemporaries const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = static_cast( deviceIndices_.size() ); + pDeviceIndices = deviceIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindAccelerationStructureMemoryInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindAccelerationStructureMemoryInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindAccelerationStructureMemoryInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindAccelerationStructureMemoryInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructure, memory, memoryOffset, deviceIndexCount, pDeviceIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindAccelerationStructureMemoryInfoNV const & ) const = default; +#else + bool operator==( BindAccelerationStructureMemoryInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ) && ( memory == rhs.memory ) && + ( memoryOffset == rhs.memoryOffset ) && ( deviceIndexCount == rhs.deviceIndexCount ) && ( pDeviceIndices == rhs.pDeviceIndices ); +# endif + } + + bool operator!=( BindAccelerationStructureMemoryInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindAccelerationStructureMemoryInfoNV; + void const * pNext = {}; + AccelerationStructureNV accelerationStructure = {}; + DeviceMemory memory = {}; + DeviceSize memoryOffset = {}; + uint32_t deviceIndexCount = {}; + uint32_t const * pDeviceIndices = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindAccelerationStructureMemoryInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = BindAccelerationStructureMemoryInfoNV; + }; + + // wrapper struct for struct VkBindBufferMemoryDeviceGroupInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindBufferMemoryDeviceGroupInfo.html + struct BindBufferMemoryDeviceGroupInfo + { + using NativeType = VkBindBufferMemoryDeviceGroupInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindBufferMemoryDeviceGroupInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = {}, + uint32_t const * pDeviceIndices_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceIndexCount{ deviceIndexCount_ } + , pDeviceIndices{ pDeviceIndices_ } + { + } + + VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindBufferMemoryDeviceGroupInfo( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindBufferMemoryDeviceGroupInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindBufferMemoryDeviceGroupInfo( ArrayProxyNoTemporaries const & deviceIndices_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), deviceIndexCount( static_cast( deviceIndices_.size() ) ), pDeviceIndices( deviceIndices_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + BindBufferMemoryDeviceGroupInfo & operator=( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindBufferMemoryDeviceGroupInfo & operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = deviceIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo && setDeviceIndexCount( uint32_t deviceIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = deviceIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & setPDeviceIndices( uint32_t const * pDeviceIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pDeviceIndices = pDeviceIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo && setPDeviceIndices( uint32_t const * pDeviceIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pDeviceIndices = pDeviceIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindBufferMemoryDeviceGroupInfo & setDeviceIndices( ArrayProxyNoTemporaries const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = static_cast( deviceIndices_.size() ); + pDeviceIndices = deviceIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindBufferMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindBufferMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindBufferMemoryDeviceGroupInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindBufferMemoryDeviceGroupInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceIndexCount, pDeviceIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindBufferMemoryDeviceGroupInfo const & ) const = default; +#else + bool operator==( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceIndexCount == rhs.deviceIndexCount ) && ( pDeviceIndices == rhs.pDeviceIndices ); +# endif + } + + bool operator!=( BindBufferMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindBufferMemoryDeviceGroupInfo; + void const * pNext = {}; + uint32_t deviceIndexCount = {}; + uint32_t const * pDeviceIndices = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindBufferMemoryDeviceGroupInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BindBufferMemoryDeviceGroupInfo; + }; + + using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo; + + // wrapper struct for struct VkBindBufferMemoryInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindBufferMemoryInfo.html + struct BindBufferMemoryInfo + { + using NativeType = VkBindBufferMemoryInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindBufferMemoryInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BindBufferMemoryInfo( Buffer buffer_ = {}, DeviceMemory memory_ = {}, DeviceSize memoryOffset_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , buffer{ buffer_ } + , memory{ memory_ } + , memoryOffset{ memoryOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindBufferMemoryInfo( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindBufferMemoryInfo( *reinterpret_cast( &rhs ) ) + { + } + + BindBufferMemoryInfo & operator=( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindBufferMemoryInfo & operator=( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & setMemoryOffset( DeviceSize memoryOffset_ ) & VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo && setMemoryOffset( DeviceSize memoryOffset_ ) && VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindBufferMemoryInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindBufferMemoryInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindBufferMemoryInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindBufferMemoryInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer, memory, memoryOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindBufferMemoryInfo const & ) const = default; +#else + bool operator==( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset ); +# endif + } + + bool operator!=( BindBufferMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindBufferMemoryInfo; + void const * pNext = {}; + Buffer buffer = {}; + DeviceMemory memory = {}; + DeviceSize memoryOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindBufferMemoryInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BindBufferMemoryInfo; + }; + + using BindBufferMemoryInfoKHR = BindBufferMemoryInfo; + + // wrapper struct for struct VkBindDataGraphPipelineSessionMemoryInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindDataGraphPipelineSessionMemoryInfoARM.html + struct BindDataGraphPipelineSessionMemoryInfoARM + { + using NativeType = VkBindDataGraphPipelineSessionMemoryInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindDataGraphPipelineSessionMemoryInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BindDataGraphPipelineSessionMemoryInfoARM( DataGraphPipelineSessionARM session_ = {}, + DataGraphPipelineSessionBindPointARM bindPoint_ = DataGraphPipelineSessionBindPointARM::eTransient, + uint32_t objectIndex_ = {}, + DeviceMemory memory_ = {}, + DeviceSize memoryOffset_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , session{ session_ } + , bindPoint{ bindPoint_ } + , objectIndex{ objectIndex_ } + , memory{ memory_ } + , memoryOffset{ memoryOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR BindDataGraphPipelineSessionMemoryInfoARM( BindDataGraphPipelineSessionMemoryInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindDataGraphPipelineSessionMemoryInfoARM( VkBindDataGraphPipelineSessionMemoryInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : BindDataGraphPipelineSessionMemoryInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + BindDataGraphPipelineSessionMemoryInfoARM & operator=( BindDataGraphPipelineSessionMemoryInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindDataGraphPipelineSessionMemoryInfoARM & operator=( VkBindDataGraphPipelineSessionMemoryInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM & setSession( DataGraphPipelineSessionARM session_ ) & VULKAN_HPP_NOEXCEPT + { + session = session_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM && setSession( DataGraphPipelineSessionARM session_ ) && VULKAN_HPP_NOEXCEPT + { + session = session_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM & setBindPoint( DataGraphPipelineSessionBindPointARM bindPoint_ ) & VULKAN_HPP_NOEXCEPT + { + bindPoint = bindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM && setBindPoint( DataGraphPipelineSessionBindPointARM bindPoint_ ) && VULKAN_HPP_NOEXCEPT + { + bindPoint = bindPoint_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM & setObjectIndex( uint32_t objectIndex_ ) & VULKAN_HPP_NOEXCEPT + { + objectIndex = objectIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM && setObjectIndex( uint32_t objectIndex_ ) && VULKAN_HPP_NOEXCEPT + { + objectIndex = objectIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM & setMemoryOffset( DeviceSize memoryOffset_ ) & VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDataGraphPipelineSessionMemoryInfoARM && setMemoryOffset( DeviceSize memoryOffset_ ) && VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindDataGraphPipelineSessionMemoryInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindDataGraphPipelineSessionMemoryInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindDataGraphPipelineSessionMemoryInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindDataGraphPipelineSessionMemoryInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, session, bindPoint, objectIndex, memory, memoryOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindDataGraphPipelineSessionMemoryInfoARM const & ) const = default; +#else + bool operator==( BindDataGraphPipelineSessionMemoryInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( session == rhs.session ) && ( bindPoint == rhs.bindPoint ) && + ( objectIndex == rhs.objectIndex ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset ); +# endif + } + + bool operator!=( BindDataGraphPipelineSessionMemoryInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindDataGraphPipelineSessionMemoryInfoARM; + void const * pNext = {}; + DataGraphPipelineSessionARM session = {}; + DataGraphPipelineSessionBindPointARM bindPoint = DataGraphPipelineSessionBindPointARM::eTransient; + uint32_t objectIndex = {}; + DeviceMemory memory = {}; + DeviceSize memoryOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindDataGraphPipelineSessionMemoryInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = BindDataGraphPipelineSessionMemoryInfoARM; + }; + + // wrapper struct for struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindDescriptorBufferEmbeddedSamplersInfoEXT.html + struct BindDescriptorBufferEmbeddedSamplersInfoEXT + { + using NativeType = VkBindDescriptorBufferEmbeddedSamplersInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindDescriptorBufferEmbeddedSamplersInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindDescriptorBufferEmbeddedSamplersInfoEXT( ShaderStageFlags stageFlags_ = {}, + PipelineLayout layout_ = {}, + uint32_t set_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stageFlags{ stageFlags_ } + , layout{ layout_ } + , set{ set_ } + { + } + + VULKAN_HPP_CONSTEXPR BindDescriptorBufferEmbeddedSamplersInfoEXT( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindDescriptorBufferEmbeddedSamplersInfoEXT( VkBindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : BindDescriptorBufferEmbeddedSamplersInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + BindDescriptorBufferEmbeddedSamplersInfoEXT & operator=( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindDescriptorBufferEmbeddedSamplersInfoEXT & operator=( VkBindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT & setStageFlags( ShaderStageFlags stageFlags_ ) & VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT && setStageFlags( ShaderStageFlags stageFlags_ ) && VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT & setSet( uint32_t set_ ) & VULKAN_HPP_NOEXCEPT + { + set = set_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorBufferEmbeddedSamplersInfoEXT && setSet( uint32_t set_ ) && VULKAN_HPP_NOEXCEPT + { + set = set_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindDescriptorBufferEmbeddedSamplersInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stageFlags, layout, set ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindDescriptorBufferEmbeddedSamplersInfoEXT const & ) const = default; +#else + bool operator==( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( set == rhs.set ); +# endif + } + + bool operator!=( BindDescriptorBufferEmbeddedSamplersInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindDescriptorBufferEmbeddedSamplersInfoEXT; + void const * pNext = {}; + ShaderStageFlags stageFlags = {}; + PipelineLayout layout = {}; + uint32_t set = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindDescriptorBufferEmbeddedSamplersInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = BindDescriptorBufferEmbeddedSamplersInfoEXT; + }; + + // wrapper struct for struct VkBindDescriptorSetsInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindDescriptorSetsInfo.html + struct BindDescriptorSetsInfo + { + using NativeType = VkBindDescriptorSetsInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindDescriptorSetsInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindDescriptorSetsInfo( ShaderStageFlags stageFlags_ = {}, + PipelineLayout layout_ = {}, + uint32_t firstSet_ = {}, + uint32_t descriptorSetCount_ = {}, + DescriptorSet const * pDescriptorSets_ = {}, + uint32_t dynamicOffsetCount_ = {}, + uint32_t const * pDynamicOffsets_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stageFlags{ stageFlags_ } + , layout{ layout_ } + , firstSet{ firstSet_ } + , descriptorSetCount{ descriptorSetCount_ } + , pDescriptorSets{ pDescriptorSets_ } + , dynamicOffsetCount{ dynamicOffsetCount_ } + , pDynamicOffsets{ pDynamicOffsets_ } + { + } + + VULKAN_HPP_CONSTEXPR BindDescriptorSetsInfo( BindDescriptorSetsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindDescriptorSetsInfo( VkBindDescriptorSetsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindDescriptorSetsInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindDescriptorSetsInfo( ShaderStageFlags stageFlags_, + PipelineLayout layout_, + uint32_t firstSet_, + ArrayProxyNoTemporaries const & descriptorSets_, + ArrayProxyNoTemporaries const & dynamicOffsets_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , stageFlags( stageFlags_ ) + , layout( layout_ ) + , firstSet( firstSet_ ) + , descriptorSetCount( static_cast( descriptorSets_.size() ) ) + , pDescriptorSets( descriptorSets_.data() ) + , dynamicOffsetCount( static_cast( dynamicOffsets_.size() ) ) + , pDynamicOffsets( dynamicOffsets_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + BindDescriptorSetsInfo & operator=( BindDescriptorSetsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindDescriptorSetsInfo & operator=( VkBindDescriptorSetsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setStageFlags( ShaderStageFlags stageFlags_ ) & VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo && setStageFlags( ShaderStageFlags stageFlags_ ) && VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setFirstSet( uint32_t firstSet_ ) & VULKAN_HPP_NOEXCEPT + { + firstSet = firstSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo && setFirstSet( uint32_t firstSet_ ) && VULKAN_HPP_NOEXCEPT + { + firstSet = firstSet_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = descriptorSetCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo && setDescriptorSetCount( uint32_t descriptorSetCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = descriptorSetCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setPDescriptorSets( DescriptorSet const * pDescriptorSets_ ) & VULKAN_HPP_NOEXCEPT + { + pDescriptorSets = pDescriptorSets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo && setPDescriptorSets( DescriptorSet const * pDescriptorSets_ ) && VULKAN_HPP_NOEXCEPT + { + pDescriptorSets = pDescriptorSets_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindDescriptorSetsInfo & setDescriptorSets( ArrayProxyNoTemporaries const & descriptorSets_ ) VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = static_cast( descriptorSets_.size() ); + pDescriptorSets = descriptorSets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setDynamicOffsetCount( uint32_t dynamicOffsetCount_ ) & VULKAN_HPP_NOEXCEPT + { + dynamicOffsetCount = dynamicOffsetCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo && setDynamicOffsetCount( uint32_t dynamicOffsetCount_ ) && VULKAN_HPP_NOEXCEPT + { + dynamicOffsetCount = dynamicOffsetCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo & setPDynamicOffsets( uint32_t const * pDynamicOffsets_ ) & VULKAN_HPP_NOEXCEPT + { + pDynamicOffsets = pDynamicOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindDescriptorSetsInfo && setPDynamicOffsets( uint32_t const * pDynamicOffsets_ ) && VULKAN_HPP_NOEXCEPT + { + pDynamicOffsets = pDynamicOffsets_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindDescriptorSetsInfo & setDynamicOffsets( ArrayProxyNoTemporaries const & dynamicOffsets_ ) VULKAN_HPP_NOEXCEPT + { + dynamicOffsetCount = static_cast( dynamicOffsets_.size() ); + pDynamicOffsets = dynamicOffsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindDescriptorSetsInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindDescriptorSetsInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindDescriptorSetsInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindDescriptorSetsInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stageFlags, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindDescriptorSetsInfo const & ) const = default; +#else + bool operator==( BindDescriptorSetsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( firstSet == rhs.firstSet ) && + ( descriptorSetCount == rhs.descriptorSetCount ) && ( pDescriptorSets == rhs.pDescriptorSets ) && + ( dynamicOffsetCount == rhs.dynamicOffsetCount ) && ( pDynamicOffsets == rhs.pDynamicOffsets ); +# endif + } + + bool operator!=( BindDescriptorSetsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindDescriptorSetsInfo; + void const * pNext = {}; + ShaderStageFlags stageFlags = {}; + PipelineLayout layout = {}; + uint32_t firstSet = {}; + uint32_t descriptorSetCount = {}; + DescriptorSet const * pDescriptorSets = {}; + uint32_t dynamicOffsetCount = {}; + uint32_t const * pDynamicOffsets = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindDescriptorSetsInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BindDescriptorSetsInfo; + }; + + using BindDescriptorSetsInfoKHR = BindDescriptorSetsInfo; + + // wrapper struct for struct VkBindHeapInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindHeapInfoEXT.html + struct BindHeapInfoEXT + { + using NativeType = VkBindHeapInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindHeapInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindHeapInfoEXT( DeviceAddressRangeEXT heapRange_ = {}, + DeviceSize reservedRangeOffset_ = {}, + DeviceSize reservedRangeSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , heapRange{ heapRange_ } + , reservedRangeOffset{ reservedRangeOffset_ } + , reservedRangeSize{ reservedRangeSize_ } + { + } + + VULKAN_HPP_CONSTEXPR BindHeapInfoEXT( BindHeapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindHeapInfoEXT( VkBindHeapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : BindHeapInfoEXT( *reinterpret_cast( &rhs ) ) {} + + BindHeapInfoEXT & operator=( BindHeapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindHeapInfoEXT & operator=( VkBindHeapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindHeapInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindHeapInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindHeapInfoEXT & setHeapRange( DeviceAddressRangeEXT heapRange_ ) & VULKAN_HPP_NOEXCEPT + { + heapRange = heapRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindHeapInfoEXT && setHeapRange( DeviceAddressRangeEXT heapRange_ ) && VULKAN_HPP_NOEXCEPT + { + heapRange = heapRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindHeapInfoEXT & setReservedRangeOffset( DeviceSize reservedRangeOffset_ ) & VULKAN_HPP_NOEXCEPT + { + reservedRangeOffset = reservedRangeOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindHeapInfoEXT && setReservedRangeOffset( DeviceSize reservedRangeOffset_ ) && VULKAN_HPP_NOEXCEPT + { + reservedRangeOffset = reservedRangeOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindHeapInfoEXT & setReservedRangeSize( DeviceSize reservedRangeSize_ ) & VULKAN_HPP_NOEXCEPT + { + reservedRangeSize = reservedRangeSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindHeapInfoEXT && setReservedRangeSize( DeviceSize reservedRangeSize_ ) && VULKAN_HPP_NOEXCEPT + { + reservedRangeSize = reservedRangeSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindHeapInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindHeapInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindHeapInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindHeapInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, heapRange, reservedRangeOffset, reservedRangeSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindHeapInfoEXT const & ) const = default; +#else + bool operator==( BindHeapInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( heapRange == rhs.heapRange ) && ( reservedRangeOffset == rhs.reservedRangeOffset ) && + ( reservedRangeSize == rhs.reservedRangeSize ); +# endif + } + + bool operator!=( BindHeapInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindHeapInfoEXT; + void const * pNext = {}; + DeviceAddressRangeEXT heapRange = {}; + DeviceSize reservedRangeOffset = {}; + DeviceSize reservedRangeSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindHeapInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = BindHeapInfoEXT; + }; + + // wrapper struct for struct VkOffset2D, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOffset2D.html + struct Offset2D + { + using NativeType = VkOffset2D; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Offset2D( int32_t x_ = {}, int32_t y_ = {} ) VULKAN_HPP_NOEXCEPT + : x{ x_ } + , y{ y_ } + { + } + + VULKAN_HPP_CONSTEXPR Offset2D( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Offset2D( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT : Offset2D( *reinterpret_cast( &rhs ) ) {} + + Offset2D & operator=( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + Offset2D & operator=( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Offset2D & setX( int32_t x_ ) & VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Offset2D && setX( int32_t x_ ) && VULKAN_HPP_NOEXCEPT + { + x = x_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Offset2D & setY( int32_t y_ ) & VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Offset2D && setY( int32_t y_ ) && VULKAN_HPP_NOEXCEPT + { + y = y_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkOffset2D const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOffset2D &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOffset2D const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkOffset2D *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Offset2D const & ) const = default; +#else + bool operator==( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ); +# endif + } + + bool operator!=( Offset2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + int32_t x = {}; + int32_t y = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = Offset2D; + }; +#endif + + // wrapper struct for struct VkRect2D, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRect2D.html + struct Rect2D + { + using NativeType = VkRect2D; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Rect2D( Offset2D offset_ = {}, Extent2D extent_ = {} ) VULKAN_HPP_NOEXCEPT + : offset{ offset_ } + , extent{ extent_ } + { + } + + VULKAN_HPP_CONSTEXPR Rect2D( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Rect2D( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT : Rect2D( *reinterpret_cast( &rhs ) ) {} + + Rect2D & operator=( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + Rect2D & operator=( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Rect2D & setOffset( Offset2D const & offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Rect2D && setOffset( Offset2D const & offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Rect2D & setExtent( Extent2D const & extent_ ) & VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Rect2D && setExtent( Extent2D const & extent_ ) && VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRect2D const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRect2D &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRect2D const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRect2D *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( offset, extent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Rect2D const & ) const = default; +#else + bool operator==( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( offset == rhs.offset ) && ( extent == rhs.extent ); +# endif + } + + bool operator!=( Rect2D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Offset2D offset = {}; + Extent2D extent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = Rect2D; + }; +#endif + + // wrapper struct for struct VkBindImageMemoryDeviceGroupInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindImageMemoryDeviceGroupInfo.html + struct BindImageMemoryDeviceGroupInfo + { + using NativeType = VkBindImageMemoryDeviceGroupInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemoryDeviceGroupInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo( uint32_t deviceIndexCount_ = {}, + uint32_t const * pDeviceIndices_ = {}, + uint32_t splitInstanceBindRegionCount_ = {}, + Rect2D const * pSplitInstanceBindRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceIndexCount{ deviceIndexCount_ } + , pDeviceIndices{ pDeviceIndices_ } + , splitInstanceBindRegionCount{ splitInstanceBindRegionCount_ } + , pSplitInstanceBindRegions{ pSplitInstanceBindRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImageMemoryDeviceGroupInfo( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindImageMemoryDeviceGroupInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindImageMemoryDeviceGroupInfo( ArrayProxyNoTemporaries const & deviceIndices_, + ArrayProxyNoTemporaries const & splitInstanceBindRegions_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , deviceIndexCount( static_cast( deviceIndices_.size() ) ) + , pDeviceIndices( deviceIndices_.data() ) + , splitInstanceBindRegionCount( static_cast( splitInstanceBindRegions_.size() ) ) + , pSplitInstanceBindRegions( splitInstanceBindRegions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + BindImageMemoryDeviceGroupInfo & operator=( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindImageMemoryDeviceGroupInfo & operator=( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = deviceIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo && setDeviceIndexCount( uint32_t deviceIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = deviceIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPDeviceIndices( uint32_t const * pDeviceIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pDeviceIndices = pDeviceIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo && setPDeviceIndices( uint32_t const * pDeviceIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pDeviceIndices = pDeviceIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindImageMemoryDeviceGroupInfo & setDeviceIndices( ArrayProxyNoTemporaries const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + deviceIndexCount = static_cast( deviceIndices_.size() ); + pDeviceIndices = deviceIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ ) & VULKAN_HPP_NOEXCEPT + { + splitInstanceBindRegionCount = splitInstanceBindRegionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo && setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ ) && VULKAN_HPP_NOEXCEPT + { + splitInstanceBindRegionCount = splitInstanceBindRegionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & setPSplitInstanceBindRegions( Rect2D const * pSplitInstanceBindRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pSplitInstanceBindRegions = pSplitInstanceBindRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo && setPSplitInstanceBindRegions( Rect2D const * pSplitInstanceBindRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pSplitInstanceBindRegions = pSplitInstanceBindRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegions( ArrayProxyNoTemporaries const & splitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT + { + splitInstanceBindRegionCount = static_cast( splitInstanceBindRegions_.size() ); + pSplitInstanceBindRegions = splitInstanceBindRegions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindImageMemoryDeviceGroupInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindImageMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindImageMemoryDeviceGroupInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindImageMemoryDeviceGroupInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceIndexCount, pDeviceIndices, splitInstanceBindRegionCount, pSplitInstanceBindRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindImageMemoryDeviceGroupInfo const & ) const = default; +#else + bool operator==( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceIndexCount == rhs.deviceIndexCount ) && ( pDeviceIndices == rhs.pDeviceIndices ) && + ( splitInstanceBindRegionCount == rhs.splitInstanceBindRegionCount ) && ( pSplitInstanceBindRegions == rhs.pSplitInstanceBindRegions ); +# endif + } + + bool operator!=( BindImageMemoryDeviceGroupInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindImageMemoryDeviceGroupInfo; + void const * pNext = {}; + uint32_t deviceIndexCount = {}; + uint32_t const * pDeviceIndices = {}; + uint32_t splitInstanceBindRegionCount = {}; + Rect2D const * pSplitInstanceBindRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindImageMemoryDeviceGroupInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BindImageMemoryDeviceGroupInfo; + }; + + using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo; + + // wrapper struct for struct VkBindImageMemoryInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindImageMemoryInfo.html + struct BindImageMemoryInfo + { + using NativeType = VkBindImageMemoryInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemoryInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BindImageMemoryInfo( Image image_ = {}, DeviceMemory memory_ = {}, DeviceSize memoryOffset_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image{ image_ } + , memory{ memory_ } + , memoryOffset{ memoryOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR BindImageMemoryInfo( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImageMemoryInfo( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT : BindImageMemoryInfo( *reinterpret_cast( &rhs ) ) + { + } + + BindImageMemoryInfo & operator=( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindImageMemoryInfo & operator=( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & setMemoryOffset( DeviceSize memoryOffset_ ) & VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo && setMemoryOffset( DeviceSize memoryOffset_ ) && VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindImageMemoryInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindImageMemoryInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindImageMemoryInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindImageMemoryInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image, memory, memoryOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindImageMemoryInfo const & ) const = default; +#else + bool operator==( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset ); +# endif + } + + bool operator!=( BindImageMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindImageMemoryInfo; + void const * pNext = {}; + Image image = {}; + DeviceMemory memory = {}; + DeviceSize memoryOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindImageMemoryInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BindImageMemoryInfo; + }; + + using BindImageMemoryInfoKHR = BindImageMemoryInfo; + + // wrapper struct for struct VkBindImageMemorySwapchainInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindImageMemorySwapchainInfoKHR.html + struct BindImageMemorySwapchainInfoKHR + { + using NativeType = VkBindImageMemorySwapchainInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemorySwapchainInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BindImageMemorySwapchainInfoKHR( SwapchainKHR swapchain_ = {}, uint32_t imageIndex_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchain{ swapchain_ } + , imageIndex{ imageIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImageMemorySwapchainInfoKHR( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : BindImageMemorySwapchainInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + BindImageMemorySwapchainInfoKHR & operator=( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindImageMemorySwapchainInfoKHR & operator=( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setSwapchain( SwapchainKHR swapchain_ ) & VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR && setSwapchain( SwapchainKHR swapchain_ ) && VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & setImageIndex( uint32_t imageIndex_ ) & VULKAN_HPP_NOEXCEPT + { + imageIndex = imageIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR && setImageIndex( uint32_t imageIndex_ ) && VULKAN_HPP_NOEXCEPT + { + imageIndex = imageIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindImageMemorySwapchainInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindImageMemorySwapchainInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindImageMemorySwapchainInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindImageMemorySwapchainInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchain, imageIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindImageMemorySwapchainInfoKHR const & ) const = default; +#else + bool operator==( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && ( imageIndex == rhs.imageIndex ); +# endif + } + + bool operator!=( BindImageMemorySwapchainInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindImageMemorySwapchainInfoKHR; + void const * pNext = {}; + SwapchainKHR swapchain = {}; + uint32_t imageIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindImageMemorySwapchainInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = BindImageMemorySwapchainInfoKHR; + }; + + // wrapper struct for struct VkBindImagePlaneMemoryInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindImagePlaneMemoryInfo.html + struct BindImagePlaneMemoryInfo + { + using NativeType = VkBindImagePlaneMemoryInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImagePlaneMemoryInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , planeAspect{ planeAspect_ } + { + } + + VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BindImagePlaneMemoryInfo( *reinterpret_cast( &rhs ) ) + { + } + + BindImagePlaneMemoryInfo & operator=( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindImagePlaneMemoryInfo & operator=( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & setPlaneAspect( ImageAspectFlagBits planeAspect_ ) & VULKAN_HPP_NOEXCEPT + { + planeAspect = planeAspect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo && setPlaneAspect( ImageAspectFlagBits planeAspect_ ) && VULKAN_HPP_NOEXCEPT + { + planeAspect = planeAspect_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindImagePlaneMemoryInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindImagePlaneMemoryInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindImagePlaneMemoryInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindImagePlaneMemoryInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, planeAspect ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindImagePlaneMemoryInfo const & ) const = default; +#else + bool operator==( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( planeAspect == rhs.planeAspect ); +# endif + } + + bool operator!=( BindImagePlaneMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindImagePlaneMemoryInfo; + void const * pNext = {}; + ImageAspectFlagBits planeAspect = ImageAspectFlagBits::eColor; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindImagePlaneMemoryInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BindImagePlaneMemoryInfo; + }; + + using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo; + + // wrapper struct for struct VkBindIndexBuffer3InfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindIndexBuffer3InfoKHR.html + struct BindIndexBuffer3InfoKHR + { + using NativeType = VkBindIndexBuffer3InfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindIndexBuffer3InfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindIndexBuffer3InfoKHR( DeviceAddressRangeKHR addressRange_ = {}, + AddressCommandFlagsKHR addressFlags_ = {}, + IndexType indexType_ = IndexType::eUint16, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , addressRange{ addressRange_ } + , addressFlags{ addressFlags_ } + , indexType{ indexType_ } + { + } + + VULKAN_HPP_CONSTEXPR BindIndexBuffer3InfoKHR( BindIndexBuffer3InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindIndexBuffer3InfoKHR( VkBindIndexBuffer3InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : BindIndexBuffer3InfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + BindIndexBuffer3InfoKHR & operator=( BindIndexBuffer3InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindIndexBuffer3InfoKHR & operator=( VkBindIndexBuffer3InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindIndexBuffer3InfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBuffer3InfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBuffer3InfoKHR & setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBuffer3InfoKHR && setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBuffer3InfoKHR & setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBuffer3InfoKHR && setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBuffer3InfoKHR & setIndexType( IndexType indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBuffer3InfoKHR && setIndexType( IndexType indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindIndexBuffer3InfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindIndexBuffer3InfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindIndexBuffer3InfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindIndexBuffer3InfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, addressRange, addressFlags, indexType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindIndexBuffer3InfoKHR const & ) const = default; +#else + bool operator==( BindIndexBuffer3InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( addressRange == rhs.addressRange ) && ( addressFlags == rhs.addressFlags ) && + ( indexType == rhs.indexType ); +# endif + } + + bool operator!=( BindIndexBuffer3InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindIndexBuffer3InfoKHR; + void const * pNext = {}; + DeviceAddressRangeKHR addressRange = {}; + AddressCommandFlagsKHR addressFlags = {}; + IndexType indexType = IndexType::eUint16; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindIndexBuffer3InfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = BindIndexBuffer3InfoKHR; + }; + + // wrapper struct for struct VkBindIndexBufferIndirectCommandEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandEXT.html + struct BindIndexBufferIndirectCommandEXT + { + using NativeType = VkBindIndexBufferIndirectCommandEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BindIndexBufferIndirectCommandEXT( DeviceAddress bufferAddress_ = {}, uint32_t size_ = {}, IndexType indexType_ = IndexType::eUint16 ) VULKAN_HPP_NOEXCEPT + : bufferAddress{ bufferAddress_ } + , size{ size_ } + , indexType{ indexType_ } + { + } + + VULKAN_HPP_CONSTEXPR BindIndexBufferIndirectCommandEXT( BindIndexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindIndexBufferIndirectCommandEXT( VkBindIndexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : BindIndexBufferIndirectCommandEXT( *reinterpret_cast( &rhs ) ) + { + } + + BindIndexBufferIndirectCommandEXT & operator=( BindIndexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindIndexBufferIndirectCommandEXT & operator=( VkBindIndexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandEXT & setBufferAddress( DeviceAddress bufferAddress_ ) & VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandEXT && setBufferAddress( DeviceAddress bufferAddress_ ) && VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandEXT & setSize( uint32_t size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandEXT && setSize( uint32_t size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandEXT & setIndexType( IndexType indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandEXT && setIndexType( IndexType indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindIndexBufferIndirectCommandEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindIndexBufferIndirectCommandEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindIndexBufferIndirectCommandEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindIndexBufferIndirectCommandEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferAddress, size, indexType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindIndexBufferIndirectCommandEXT const & ) const = default; +#else + bool operator==( BindIndexBufferIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( indexType == rhs.indexType ); +# endif + } + + bool operator!=( BindIndexBufferIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress bufferAddress = {}; + uint32_t size = {}; + IndexType indexType = IndexType::eUint16; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindIndexBufferIndirectCommandEXT; + }; +#endif + + // wrapper struct for struct VkBindIndexBufferIndirectCommandNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindIndexBufferIndirectCommandNV.html + struct BindIndexBufferIndirectCommandNV + { + using NativeType = VkBindIndexBufferIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BindIndexBufferIndirectCommandNV( DeviceAddress bufferAddress_ = {}, uint32_t size_ = {}, IndexType indexType_ = IndexType::eUint16 ) VULKAN_HPP_NOEXCEPT + : bufferAddress{ bufferAddress_ } + , size{ size_ } + , indexType{ indexType_ } + { + } + + VULKAN_HPP_CONSTEXPR BindIndexBufferIndirectCommandNV( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindIndexBufferIndirectCommandNV( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BindIndexBufferIndirectCommandNV( *reinterpret_cast( &rhs ) ) + { + } + + BindIndexBufferIndirectCommandNV & operator=( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindIndexBufferIndirectCommandNV & operator=( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setBufferAddress( DeviceAddress bufferAddress_ ) & VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV && setBufferAddress( DeviceAddress bufferAddress_ ) && VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setSize( uint32_t size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV && setSize( uint32_t size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & setIndexType( IndexType indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV && setIndexType( IndexType indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindIndexBufferIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindIndexBufferIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindIndexBufferIndirectCommandNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindIndexBufferIndirectCommandNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferAddress, size, indexType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindIndexBufferIndirectCommandNV const & ) const = default; +#else + bool operator==( BindIndexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( indexType == rhs.indexType ); +# endif + } + + bool operator!=( BindIndexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress bufferAddress = {}; + uint32_t size = {}; + IndexType indexType = IndexType::eUint16; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindIndexBufferIndirectCommandNV; + }; +#endif + + // wrapper struct for struct VkBindMemoryStatus, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindMemoryStatus.html + struct BindMemoryStatus + { + using NativeType = VkBindMemoryStatus; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindMemoryStatus; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindMemoryStatus( Result * pResult_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pResult{ pResult_ } + { + } + + VULKAN_HPP_CONSTEXPR BindMemoryStatus( BindMemoryStatus const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindMemoryStatus( VkBindMemoryStatus const & rhs ) VULKAN_HPP_NOEXCEPT : BindMemoryStatus( *reinterpret_cast( &rhs ) ) {} + + BindMemoryStatus & operator=( BindMemoryStatus const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindMemoryStatus & operator=( VkBindMemoryStatus const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindMemoryStatus & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindMemoryStatus && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindMemoryStatus & setPResult( Result * pResult_ ) & VULKAN_HPP_NOEXCEPT + { + pResult = pResult_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindMemoryStatus && setPResult( Result * pResult_ ) && VULKAN_HPP_NOEXCEPT + { + pResult = pResult_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindMemoryStatus const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindMemoryStatus &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindMemoryStatus const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindMemoryStatus *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pResult ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindMemoryStatus const & ) const = default; +#else + bool operator==( BindMemoryStatus const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pResult == rhs.pResult ); +# endif + } + + bool operator!=( BindMemoryStatus const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindMemoryStatus; + void const * pNext = {}; + Result * pResult = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindMemoryStatus; + }; +#endif + + template <> + struct CppType + { + using Type = BindMemoryStatus; + }; + + using BindMemoryStatusKHR = BindMemoryStatus; + + // wrapper struct for struct VkBindPipelineIndirectCommandNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindPipelineIndirectCommandNV.html + struct BindPipelineIndirectCommandNV + { + using NativeType = VkBindPipelineIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindPipelineIndirectCommandNV( DeviceAddress pipelineAddress_ = {} ) VULKAN_HPP_NOEXCEPT : pipelineAddress{ pipelineAddress_ } {} + + VULKAN_HPP_CONSTEXPR BindPipelineIndirectCommandNV( BindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindPipelineIndirectCommandNV( VkBindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BindPipelineIndirectCommandNV( *reinterpret_cast( &rhs ) ) + { + } + + BindPipelineIndirectCommandNV & operator=( BindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindPipelineIndirectCommandNV & operator=( VkBindPipelineIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindPipelineIndirectCommandNV & setPipelineAddress( DeviceAddress pipelineAddress_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineAddress = pipelineAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindPipelineIndirectCommandNV && setPipelineAddress( DeviceAddress pipelineAddress_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineAddress = pipelineAddress_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindPipelineIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindPipelineIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindPipelineIndirectCommandNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindPipelineIndirectCommandNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( pipelineAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindPipelineIndirectCommandNV const & ) const = default; +#else + bool operator==( BindPipelineIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( pipelineAddress == rhs.pipelineAddress ); +# endif + } + + bool operator!=( BindPipelineIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress pipelineAddress = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindPipelineIndirectCommandNV; + }; +#endif + + // wrapper struct for struct VkBindShaderGroupIndirectCommandNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindShaderGroupIndirectCommandNV.html + struct BindShaderGroupIndirectCommandNV + { + using NativeType = VkBindShaderGroupIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindShaderGroupIndirectCommandNV( uint32_t groupIndex_ = {} ) VULKAN_HPP_NOEXCEPT : groupIndex{ groupIndex_ } {} + + VULKAN_HPP_CONSTEXPR BindShaderGroupIndirectCommandNV( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindShaderGroupIndirectCommandNV( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BindShaderGroupIndirectCommandNV( *reinterpret_cast( &rhs ) ) + { + } + + BindShaderGroupIndirectCommandNV & operator=( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindShaderGroupIndirectCommandNV & operator=( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindShaderGroupIndirectCommandNV & setGroupIndex( uint32_t groupIndex_ ) & VULKAN_HPP_NOEXCEPT + { + groupIndex = groupIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindShaderGroupIndirectCommandNV && setGroupIndex( uint32_t groupIndex_ ) && VULKAN_HPP_NOEXCEPT + { + groupIndex = groupIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindShaderGroupIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindShaderGroupIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindShaderGroupIndirectCommandNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindShaderGroupIndirectCommandNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( groupIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindShaderGroupIndirectCommandNV const & ) const = default; +#else + bool operator==( BindShaderGroupIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( groupIndex == rhs.groupIndex ); +# endif + } + + bool operator!=( BindShaderGroupIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t groupIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindShaderGroupIndirectCommandNV; + }; +#endif + + // wrapper struct for struct VkSparseMemoryBind, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseMemoryBind.html + struct SparseMemoryBind + { + using NativeType = VkSparseMemoryBind; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SparseMemoryBind( DeviceSize resourceOffset_ = {}, + DeviceSize size_ = {}, + DeviceMemory memory_ = {}, + DeviceSize memoryOffset_ = {}, + SparseMemoryBindFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : resourceOffset{ resourceOffset_ } + , size{ size_ } + , memory{ memory_ } + , memoryOffset{ memoryOffset_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR SparseMemoryBind( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseMemoryBind( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT : SparseMemoryBind( *reinterpret_cast( &rhs ) ) {} + + SparseMemoryBind & operator=( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SparseMemoryBind & operator=( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setResourceOffset( DeviceSize resourceOffset_ ) & VULKAN_HPP_NOEXCEPT + { + resourceOffset = resourceOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind && setResourceOffset( DeviceSize resourceOffset_ ) && VULKAN_HPP_NOEXCEPT + { + resourceOffset = resourceOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setMemoryOffset( DeviceSize memoryOffset_ ) & VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind && setMemoryOffset( DeviceSize memoryOffset_ ) && VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & setFlags( SparseMemoryBindFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind && setFlags( SparseMemoryBindFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSparseMemoryBind const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseMemoryBind &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseMemoryBind const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSparseMemoryBind *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( resourceOffset, size, memory, memoryOffset, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseMemoryBind const & ) const = default; +#else + bool operator==( SparseMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( resourceOffset == rhs.resourceOffset ) && ( size == rhs.size ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset ) && + ( flags == rhs.flags ); +# endif + } + + bool operator!=( SparseMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceSize resourceOffset = {}; + DeviceSize size = {}; + DeviceMemory memory = {}; + DeviceSize memoryOffset = {}; + SparseMemoryBindFlags flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SparseMemoryBind; + }; +#endif + + // wrapper struct for struct VkSparseBufferMemoryBindInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseBufferMemoryBindInfo.html + struct SparseBufferMemoryBindInfo + { + using NativeType = VkSparseBufferMemoryBindInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SparseBufferMemoryBindInfo( Buffer buffer_ = {}, uint32_t bindCount_ = {}, SparseMemoryBind const * pBinds_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer{ buffer_ } + , bindCount{ bindCount_ } + , pBinds{ pBinds_ } + { + } + + VULKAN_HPP_CONSTEXPR SparseBufferMemoryBindInfo( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseBufferMemoryBindInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseBufferMemoryBindInfo( Buffer buffer_, ArrayProxyNoTemporaries const & binds_ ) + : buffer( buffer_ ), bindCount( static_cast( binds_.size() ) ), pBinds( binds_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SparseBufferMemoryBindInfo & operator=( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SparseBufferMemoryBindInfo & operator=( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setBindCount( uint32_t bindCount_ ) & VULKAN_HPP_NOEXCEPT + { + bindCount = bindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo && setBindCount( uint32_t bindCount_ ) && VULKAN_HPP_NOEXCEPT + { + bindCount = bindCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & setPBinds( SparseMemoryBind const * pBinds_ ) & VULKAN_HPP_NOEXCEPT + { + pBinds = pBinds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo && setPBinds( SparseMemoryBind const * pBinds_ ) && VULKAN_HPP_NOEXCEPT + { + pBinds = pBinds_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseBufferMemoryBindInfo & setBinds( ArrayProxyNoTemporaries const & binds_ ) VULKAN_HPP_NOEXCEPT + { + bindCount = static_cast( binds_.size() ); + pBinds = binds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSparseBufferMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseBufferMemoryBindInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseBufferMemoryBindInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSparseBufferMemoryBindInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( buffer, bindCount, pBinds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseBufferMemoryBindInfo const & ) const = default; +#else + bool operator==( SparseBufferMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( buffer == rhs.buffer ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds ); +# endif + } + + bool operator!=( SparseBufferMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Buffer buffer = {}; + uint32_t bindCount = {}; + SparseMemoryBind const * pBinds = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SparseBufferMemoryBindInfo; + }; +#endif + + // wrapper struct for struct VkSparseImageOpaqueMemoryBindInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseImageOpaqueMemoryBindInfo.html + struct SparseImageOpaqueMemoryBindInfo + { + using NativeType = VkSparseImageOpaqueMemoryBindInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SparseImageOpaqueMemoryBindInfo( Image image_ = {}, uint32_t bindCount_ = {}, SparseMemoryBind const * pBinds_ = {} ) VULKAN_HPP_NOEXCEPT + : image{ image_ } + , bindCount{ bindCount_ } + , pBinds{ pBinds_ } + { + } + + VULKAN_HPP_CONSTEXPR SparseImageOpaqueMemoryBindInfo( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageOpaqueMemoryBindInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseImageOpaqueMemoryBindInfo( Image image_, ArrayProxyNoTemporaries const & binds_ ) + : image( image_ ), bindCount( static_cast( binds_.size() ) ), pBinds( binds_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SparseImageOpaqueMemoryBindInfo & operator=( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SparseImageOpaqueMemoryBindInfo & operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setBindCount( uint32_t bindCount_ ) & VULKAN_HPP_NOEXCEPT + { + bindCount = bindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo && setBindCount( uint32_t bindCount_ ) && VULKAN_HPP_NOEXCEPT + { + bindCount = bindCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & setPBinds( SparseMemoryBind const * pBinds_ ) & VULKAN_HPP_NOEXCEPT + { + pBinds = pBinds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo && setPBinds( SparseMemoryBind const * pBinds_ ) && VULKAN_HPP_NOEXCEPT + { + pBinds = pBinds_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseImageOpaqueMemoryBindInfo & setBinds( ArrayProxyNoTemporaries const & binds_ ) VULKAN_HPP_NOEXCEPT + { + bindCount = static_cast( binds_.size() ); + pBinds = binds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSparseImageOpaqueMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageOpaqueMemoryBindInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageOpaqueMemoryBindInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSparseImageOpaqueMemoryBindInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( image, bindCount, pBinds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageOpaqueMemoryBindInfo const & ) const = default; +#else + bool operator==( SparseImageOpaqueMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( image == rhs.image ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds ); +# endif + } + + bool operator!=( SparseImageOpaqueMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Image image = {}; + uint32_t bindCount = {}; + SparseMemoryBind const * pBinds = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SparseImageOpaqueMemoryBindInfo; + }; +#endif + + // wrapper struct for struct VkImageSubresource, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageSubresource.html + struct ImageSubresource + { + using NativeType = VkImageSubresource; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageSubresource( ImageAspectFlags aspectMask_ = {}, uint32_t mipLevel_ = {}, uint32_t arrayLayer_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectMask{ aspectMask_ } + , mipLevel{ mipLevel_ } + , arrayLayer{ arrayLayer_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageSubresource( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSubresource( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT : ImageSubresource( *reinterpret_cast( &rhs ) ) {} + + ImageSubresource & operator=( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageSubresource & operator=( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setAspectMask( ImageAspectFlags aspectMask_ ) & VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresource && setAspectMask( ImageAspectFlags aspectMask_ ) && VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setMipLevel( uint32_t mipLevel_ ) & VULKAN_HPP_NOEXCEPT + { + mipLevel = mipLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresource && setMipLevel( uint32_t mipLevel_ ) && VULKAN_HPP_NOEXCEPT + { + mipLevel = mipLevel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresource & setArrayLayer( uint32_t arrayLayer_ ) & VULKAN_HPP_NOEXCEPT + { + arrayLayer = arrayLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresource && setArrayLayer( uint32_t arrayLayer_ ) && VULKAN_HPP_NOEXCEPT + { + arrayLayer = arrayLayer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageSubresource const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSubresource &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSubresource const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageSubresource *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( aspectMask, mipLevel, arrayLayer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSubresource const & ) const = default; +#else + bool operator==( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( aspectMask == rhs.aspectMask ) && ( mipLevel == rhs.mipLevel ) && ( arrayLayer == rhs.arrayLayer ); +# endif + } + + bool operator!=( ImageSubresource const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ImageAspectFlags aspectMask = {}; + uint32_t mipLevel = {}; + uint32_t arrayLayer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageSubresource; + }; +#endif + + // wrapper struct for struct VkOffset3D, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOffset3D.html + struct Offset3D + { + using NativeType = VkOffset3D; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Offset3D( int32_t x_ = {}, int32_t y_ = {}, int32_t z_ = {} ) VULKAN_HPP_NOEXCEPT + : x{ x_ } + , y{ y_ } + , z{ z_ } + { + } + + VULKAN_HPP_CONSTEXPR Offset3D( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Offset3D( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT : Offset3D( *reinterpret_cast( &rhs ) ) {} + + explicit Offset3D( Offset2D const & offset2D, int32_t z_ = {} ) : x( offset2D.x ), y( offset2D.y ), z( z_ ) {} + + Offset3D & operator=( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + Offset3D & operator=( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Offset3D & setX( int32_t x_ ) & VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Offset3D && setX( int32_t x_ ) && VULKAN_HPP_NOEXCEPT + { + x = x_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Offset3D & setY( int32_t y_ ) & VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Offset3D && setY( int32_t y_ ) && VULKAN_HPP_NOEXCEPT + { + y = y_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Offset3D & setZ( int32_t z_ ) & VULKAN_HPP_NOEXCEPT + { + z = z_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Offset3D && setZ( int32_t z_ ) && VULKAN_HPP_NOEXCEPT + { + z = z_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkOffset3D const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOffset3D &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOffset3D const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkOffset3D *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y, z ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Offset3D const & ) const = default; +#else + bool operator==( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z ); +# endif + } + + bool operator!=( Offset3D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + int32_t x = {}; + int32_t y = {}; + int32_t z = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = Offset3D; + }; +#endif + + // wrapper struct for struct VkExtent3D, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExtent3D.html + struct Extent3D + { + using NativeType = VkExtent3D; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Extent3D( uint32_t width_ = {}, uint32_t height_ = {}, uint32_t depth_ = {} ) VULKAN_HPP_NOEXCEPT + : width{ width_ } + , height{ height_ } + , depth{ depth_ } + { + } + + VULKAN_HPP_CONSTEXPR Extent3D( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Extent3D( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT : Extent3D( *reinterpret_cast( &rhs ) ) {} + + explicit Extent3D( Extent2D const & extent2D, uint32_t depth_ = {} ) : width( extent2D.width ), height( extent2D.height ), depth( depth_ ) {} + + Extent3D & operator=( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + Extent3D & operator=( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Extent3D & setWidth( uint32_t width_ ) & VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Extent3D && setWidth( uint32_t width_ ) && VULKAN_HPP_NOEXCEPT + { + width = width_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Extent3D & setHeight( uint32_t height_ ) & VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Extent3D && setHeight( uint32_t height_ ) && VULKAN_HPP_NOEXCEPT + { + height = height_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Extent3D & setDepth( uint32_t depth_ ) & VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Extent3D && setDepth( uint32_t depth_ ) && VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExtent3D const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExtent3D &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExtent3D const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExtent3D *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( width, height, depth ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Extent3D const & ) const = default; +#else + bool operator==( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( width == rhs.width ) && ( height == rhs.height ) && ( depth == rhs.depth ); +# endif + } + + bool operator!=( Extent3D const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t width = {}; + uint32_t height = {}; + uint32_t depth = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = Extent3D; + }; +#endif + + // wrapper struct for struct VkSparseImageMemoryBind, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseImageMemoryBind.html + struct SparseImageMemoryBind + { + using NativeType = VkSparseImageMemoryBind; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SparseImageMemoryBind( ImageSubresource subresource_ = {}, + Offset3D offset_ = {}, + Extent3D extent_ = {}, + DeviceMemory memory_ = {}, + DeviceSize memoryOffset_ = {}, + SparseMemoryBindFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : subresource{ subresource_ } + , offset{ offset_ } + , extent{ extent_ } + , memory{ memory_ } + , memoryOffset{ memoryOffset_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR SparseImageMemoryBind( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageMemoryBind( *reinterpret_cast( &rhs ) ) + { + } + + SparseImageMemoryBind & operator=( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SparseImageMemoryBind & operator=( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setSubresource( ImageSubresource const & subresource_ ) & VULKAN_HPP_NOEXCEPT + { + subresource = subresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind && setSubresource( ImageSubresource const & subresource_ ) && VULKAN_HPP_NOEXCEPT + { + subresource = subresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setOffset( Offset3D const & offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind && setOffset( Offset3D const & offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setExtent( Extent3D const & extent_ ) & VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind && setExtent( Extent3D const & extent_ ) && VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setMemoryOffset( DeviceSize memoryOffset_ ) & VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind && setMemoryOffset( DeviceSize memoryOffset_ ) && VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & setFlags( SparseMemoryBindFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind && setFlags( SparseMemoryBindFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSparseImageMemoryBind const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageMemoryBind &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageMemoryBind const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSparseImageMemoryBind *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( subresource, offset, extent, memory, memoryOffset, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageMemoryBind const & ) const = default; +#else + bool operator==( SparseImageMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( subresource == rhs.subresource ) && ( offset == rhs.offset ) && ( extent == rhs.extent ) && ( memory == rhs.memory ) && + ( memoryOffset == rhs.memoryOffset ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( SparseImageMemoryBind const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ImageSubresource subresource = {}; + Offset3D offset = {}; + Extent3D extent = {}; + DeviceMemory memory = {}; + DeviceSize memoryOffset = {}; + SparseMemoryBindFlags flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SparseImageMemoryBind; + }; +#endif + + // wrapper struct for struct VkSparseImageMemoryBindInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseImageMemoryBindInfo.html + struct SparseImageMemoryBindInfo + { + using NativeType = VkSparseImageMemoryBindInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SparseImageMemoryBindInfo( Image image_ = {}, uint32_t bindCount_ = {}, SparseImageMemoryBind const * pBinds_ = {} ) VULKAN_HPP_NOEXCEPT + : image{ image_ } + , bindCount{ bindCount_ } + , pBinds{ pBinds_ } + { + } + + VULKAN_HPP_CONSTEXPR SparseImageMemoryBindInfo( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageMemoryBindInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseImageMemoryBindInfo( Image image_, ArrayProxyNoTemporaries const & binds_ ) + : image( image_ ), bindCount( static_cast( binds_.size() ) ), pBinds( binds_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SparseImageMemoryBindInfo & operator=( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SparseImageMemoryBindInfo & operator=( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setBindCount( uint32_t bindCount_ ) & VULKAN_HPP_NOEXCEPT + { + bindCount = bindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo && setBindCount( uint32_t bindCount_ ) && VULKAN_HPP_NOEXCEPT + { + bindCount = bindCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & setPBinds( SparseImageMemoryBind const * pBinds_ ) & VULKAN_HPP_NOEXCEPT + { + pBinds = pBinds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo && setPBinds( SparseImageMemoryBind const * pBinds_ ) && VULKAN_HPP_NOEXCEPT + { + pBinds = pBinds_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SparseImageMemoryBindInfo & setBinds( ArrayProxyNoTemporaries const & binds_ ) VULKAN_HPP_NOEXCEPT + { + bindCount = static_cast( binds_.size() ); + pBinds = binds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSparseImageMemoryBindInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageMemoryBindInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageMemoryBindInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSparseImageMemoryBindInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( image, bindCount, pBinds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageMemoryBindInfo const & ) const = default; +#else + bool operator==( SparseImageMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( image == rhs.image ) && ( bindCount == rhs.bindCount ) && ( pBinds == rhs.pBinds ); +# endif + } + + bool operator!=( SparseImageMemoryBindInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Image image = {}; + uint32_t bindCount = {}; + SparseImageMemoryBind const * pBinds = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SparseImageMemoryBindInfo; + }; +#endif + + // wrapper struct for struct VkBindSparseInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindSparseInfo.html + struct BindSparseInfo + { + using NativeType = VkBindSparseInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindSparseInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindSparseInfo( uint32_t waitSemaphoreCount_ = {}, + Semaphore const * pWaitSemaphores_ = {}, + uint32_t bufferBindCount_ = {}, + SparseBufferMemoryBindInfo const * pBufferBinds_ = {}, + uint32_t imageOpaqueBindCount_ = {}, + SparseImageOpaqueMemoryBindInfo const * pImageOpaqueBinds_ = {}, + uint32_t imageBindCount_ = {}, + SparseImageMemoryBindInfo const * pImageBinds_ = {}, + uint32_t signalSemaphoreCount_ = {}, + Semaphore const * pSignalSemaphores_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , waitSemaphoreCount{ waitSemaphoreCount_ } + , pWaitSemaphores{ pWaitSemaphores_ } + , bufferBindCount{ bufferBindCount_ } + , pBufferBinds{ pBufferBinds_ } + , imageOpaqueBindCount{ imageOpaqueBindCount_ } + , pImageOpaqueBinds{ pImageOpaqueBinds_ } + , imageBindCount{ imageBindCount_ } + , pImageBinds{ pImageBinds_ } + , signalSemaphoreCount{ signalSemaphoreCount_ } + , pSignalSemaphores{ pSignalSemaphores_ } + { + } + + VULKAN_HPP_CONSTEXPR BindSparseInfo( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindSparseInfo( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT : BindSparseInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo( ArrayProxyNoTemporaries const & waitSemaphores_, + ArrayProxyNoTemporaries const & bufferBinds_ = {}, + ArrayProxyNoTemporaries const & imageOpaqueBinds_ = {}, + ArrayProxyNoTemporaries const & imageBinds_ = {}, + ArrayProxyNoTemporaries const & signalSemaphores_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , waitSemaphoreCount( static_cast( waitSemaphores_.size() ) ) + , pWaitSemaphores( waitSemaphores_.data() ) + , bufferBindCount( static_cast( bufferBinds_.size() ) ) + , pBufferBinds( bufferBinds_.data() ) + , imageOpaqueBindCount( static_cast( imageOpaqueBinds_.size() ) ) + , pImageOpaqueBinds( imageOpaqueBinds_.data() ) + , imageBindCount( static_cast( imageBinds_.size() ) ) + , pImageBinds( imageBinds_.data() ) + , signalSemaphoreCount( static_cast( signalSemaphores_.size() ) ) + , pSignalSemaphores( signalSemaphores_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + BindSparseInfo & operator=( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindSparseInfo & operator=( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) & VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) && VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPWaitSemaphores( Semaphore const * pWaitSemaphores_ ) & VULKAN_HPP_NOEXCEPT + { + pWaitSemaphores = pWaitSemaphores_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setPWaitSemaphores( Semaphore const * pWaitSemaphores_ ) && VULKAN_HPP_NOEXCEPT + { + pWaitSemaphores = pWaitSemaphores_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo & setWaitSemaphores( ArrayProxyNoTemporaries const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = static_cast( waitSemaphores_.size() ); + pWaitSemaphores = waitSemaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setBufferBindCount( uint32_t bufferBindCount_ ) & VULKAN_HPP_NOEXCEPT + { + bufferBindCount = bufferBindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setBufferBindCount( uint32_t bufferBindCount_ ) && VULKAN_HPP_NOEXCEPT + { + bufferBindCount = bufferBindCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPBufferBinds( SparseBufferMemoryBindInfo const * pBufferBinds_ ) & VULKAN_HPP_NOEXCEPT + { + pBufferBinds = pBufferBinds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setPBufferBinds( SparseBufferMemoryBindInfo const * pBufferBinds_ ) && VULKAN_HPP_NOEXCEPT + { + pBufferBinds = pBufferBinds_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo & setBufferBinds( ArrayProxyNoTemporaries const & bufferBinds_ ) VULKAN_HPP_NOEXCEPT + { + bufferBindCount = static_cast( bufferBinds_.size() ); + pBufferBinds = bufferBinds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ ) & VULKAN_HPP_NOEXCEPT + { + imageOpaqueBindCount = imageOpaqueBindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ ) && VULKAN_HPP_NOEXCEPT + { + imageOpaqueBindCount = imageOpaqueBindCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPImageOpaqueBinds( SparseImageOpaqueMemoryBindInfo const * pImageOpaqueBinds_ ) & VULKAN_HPP_NOEXCEPT + { + pImageOpaqueBinds = pImageOpaqueBinds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setPImageOpaqueBinds( SparseImageOpaqueMemoryBindInfo const * pImageOpaqueBinds_ ) && VULKAN_HPP_NOEXCEPT + { + pImageOpaqueBinds = pImageOpaqueBinds_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo & setImageOpaqueBinds( ArrayProxyNoTemporaries const & imageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT + { + imageOpaqueBindCount = static_cast( imageOpaqueBinds_.size() ); + pImageOpaqueBinds = imageOpaqueBinds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setImageBindCount( uint32_t imageBindCount_ ) & VULKAN_HPP_NOEXCEPT + { + imageBindCount = imageBindCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setImageBindCount( uint32_t imageBindCount_ ) && VULKAN_HPP_NOEXCEPT + { + imageBindCount = imageBindCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPImageBinds( SparseImageMemoryBindInfo const * pImageBinds_ ) & VULKAN_HPP_NOEXCEPT + { + pImageBinds = pImageBinds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setPImageBinds( SparseImageMemoryBindInfo const * pImageBinds_ ) && VULKAN_HPP_NOEXCEPT + { + pImageBinds = pImageBinds_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo & setImageBinds( ArrayProxyNoTemporaries const & imageBinds_ ) VULKAN_HPP_NOEXCEPT + { + imageBindCount = static_cast( imageBinds_.size() ); + pImageBinds = imageBinds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) & VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = signalSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) && VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = signalSemaphoreCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & setPSignalSemaphores( Semaphore const * pSignalSemaphores_ ) & VULKAN_HPP_NOEXCEPT + { + pSignalSemaphores = pSignalSemaphores_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindSparseInfo && setPSignalSemaphores( Semaphore const * pSignalSemaphores_ ) && VULKAN_HPP_NOEXCEPT + { + pSignalSemaphores = pSignalSemaphores_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BindSparseInfo & setSignalSemaphores( ArrayProxyNoTemporaries const & signalSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = static_cast( signalSemaphores_.size() ); + pSignalSemaphores = signalSemaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindSparseInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindSparseInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindSparseInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindSparseInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + waitSemaphoreCount, + pWaitSemaphores, + bufferBindCount, + pBufferBinds, + imageOpaqueBindCount, + pImageOpaqueBinds, + imageBindCount, + pImageBinds, + signalSemaphoreCount, + pSignalSemaphores ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindSparseInfo const & ) const = default; +#else + bool operator==( BindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) && + ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( bufferBindCount == rhs.bufferBindCount ) && ( pBufferBinds == rhs.pBufferBinds ) && + ( imageOpaqueBindCount == rhs.imageOpaqueBindCount ) && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds ) && + ( imageBindCount == rhs.imageBindCount ) && ( pImageBinds == rhs.pImageBinds ) && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) && + ( pSignalSemaphores == rhs.pSignalSemaphores ); +# endif + } + + bool operator!=( BindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindSparseInfo; + void const * pNext = {}; + uint32_t waitSemaphoreCount = {}; + Semaphore const * pWaitSemaphores = {}; + uint32_t bufferBindCount = {}; + SparseBufferMemoryBindInfo const * pBufferBinds = {}; + uint32_t imageOpaqueBindCount = {}; + SparseImageOpaqueMemoryBindInfo const * pImageOpaqueBinds = {}; + uint32_t imageBindCount = {}; + SparseImageMemoryBindInfo const * pImageBinds = {}; + uint32_t signalSemaphoreCount = {}; + Semaphore const * pSignalSemaphores = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindSparseInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BindSparseInfo; + }; + + // wrapper struct for struct VkBindTensorMemoryInfoARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindTensorMemoryInfoARM.html + struct BindTensorMemoryInfoARM + { + using NativeType = VkBindTensorMemoryInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindTensorMemoryInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindTensorMemoryInfoARM( TensorARM tensor_ = {}, + DeviceMemory memory_ = {}, + DeviceSize memoryOffset_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensor{ tensor_ } + , memory{ memory_ } + , memoryOffset{ memoryOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR BindTensorMemoryInfoARM( BindTensorMemoryInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindTensorMemoryInfoARM( VkBindTensorMemoryInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : BindTensorMemoryInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + BindTensorMemoryInfoARM & operator=( BindTensorMemoryInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindTensorMemoryInfoARM & operator=( VkBindTensorMemoryInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindTensorMemoryInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindTensorMemoryInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindTensorMemoryInfoARM & setTensor( TensorARM tensor_ ) & VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindTensorMemoryInfoARM && setTensor( TensorARM tensor_ ) && VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindTensorMemoryInfoARM & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindTensorMemoryInfoARM && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindTensorMemoryInfoARM & setMemoryOffset( DeviceSize memoryOffset_ ) & VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindTensorMemoryInfoARM && setMemoryOffset( DeviceSize memoryOffset_ ) && VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindTensorMemoryInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindTensorMemoryInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindTensorMemoryInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindTensorMemoryInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensor, memory, memoryOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindTensorMemoryInfoARM const & ) const = default; +#else + bool operator==( BindTensorMemoryInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensor == rhs.tensor ) && ( memory == rhs.memory ) && ( memoryOffset == rhs.memoryOffset ); +# endif + } + + bool operator!=( BindTensorMemoryInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindTensorMemoryInfoARM; + void const * pNext = {}; + TensorARM tensor = {}; + DeviceMemory memory = {}; + DeviceSize memoryOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindTensorMemoryInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = BindTensorMemoryInfoARM; + }; + + // wrapper struct for struct VkBindTransformFeedbackBuffer2InfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindTransformFeedbackBuffer2InfoEXT.html + struct BindTransformFeedbackBuffer2InfoEXT + { + using NativeType = VkBindTransformFeedbackBuffer2InfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindTransformFeedbackBuffer2InfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindTransformFeedbackBuffer2InfoEXT( DeviceAddressRangeKHR addressRange_ = {}, + AddressCommandFlagsKHR addressFlags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , addressRange{ addressRange_ } + , addressFlags{ addressFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR BindTransformFeedbackBuffer2InfoEXT( BindTransformFeedbackBuffer2InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindTransformFeedbackBuffer2InfoEXT( VkBindTransformFeedbackBuffer2InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : BindTransformFeedbackBuffer2InfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + BindTransformFeedbackBuffer2InfoEXT & operator=( BindTransformFeedbackBuffer2InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindTransformFeedbackBuffer2InfoEXT & operator=( VkBindTransformFeedbackBuffer2InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindTransformFeedbackBuffer2InfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindTransformFeedbackBuffer2InfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindTransformFeedbackBuffer2InfoEXT & setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindTransformFeedbackBuffer2InfoEXT && setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindTransformFeedbackBuffer2InfoEXT & setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindTransformFeedbackBuffer2InfoEXT && setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindTransformFeedbackBuffer2InfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindTransformFeedbackBuffer2InfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindTransformFeedbackBuffer2InfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindTransformFeedbackBuffer2InfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, addressRange, addressFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindTransformFeedbackBuffer2InfoEXT const & ) const = default; +#else + bool operator==( BindTransformFeedbackBuffer2InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( addressRange == rhs.addressRange ) && ( addressFlags == rhs.addressFlags ); +# endif + } + + bool operator!=( BindTransformFeedbackBuffer2InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindTransformFeedbackBuffer2InfoEXT; + void const * pNext = {}; + DeviceAddressRangeKHR addressRange = {}; + AddressCommandFlagsKHR addressFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindTransformFeedbackBuffer2InfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = BindTransformFeedbackBuffer2InfoEXT; + }; + + // wrapper struct for struct VkStridedDeviceAddressRangeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkStridedDeviceAddressRangeKHR.html + struct StridedDeviceAddressRangeKHR + { + using NativeType = VkStridedDeviceAddressRangeKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR StridedDeviceAddressRangeKHR( DeviceAddress address_ = {}, DeviceSize size_ = {}, DeviceSize stride_ = {} ) VULKAN_HPP_NOEXCEPT + : address{ address_ } + , size{ size_ } + , stride{ stride_ } + { + } + + VULKAN_HPP_CONSTEXPR StridedDeviceAddressRangeKHR( StridedDeviceAddressRangeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + StridedDeviceAddressRangeKHR( VkStridedDeviceAddressRangeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : StridedDeviceAddressRangeKHR( *reinterpret_cast( &rhs ) ) + { + } + + StridedDeviceAddressRangeKHR & operator=( StridedDeviceAddressRangeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + StridedDeviceAddressRangeKHR & operator=( VkStridedDeviceAddressRangeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRangeKHR & setAddress( DeviceAddress address_ ) & VULKAN_HPP_NOEXCEPT + { + address = address_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRangeKHR && setAddress( DeviceAddress address_ ) && VULKAN_HPP_NOEXCEPT + { + address = address_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRangeKHR & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRangeKHR && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRangeKHR & setStride( DeviceSize stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRangeKHR && setStride( DeviceSize stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkStridedDeviceAddressRangeKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkStridedDeviceAddressRangeKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkStridedDeviceAddressRangeKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkStridedDeviceAddressRangeKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( address, size, stride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( StridedDeviceAddressRangeKHR const & ) const = default; +#else + bool operator==( StridedDeviceAddressRangeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( address == rhs.address ) && ( size == rhs.size ) && ( stride == rhs.stride ); +# endif + } + + bool operator!=( StridedDeviceAddressRangeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress address = {}; + DeviceSize size = {}; + DeviceSize stride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = StridedDeviceAddressRangeKHR; + }; +#endif + + // wrapper struct for struct VkBindVertexBuffer3InfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindVertexBuffer3InfoKHR.html + struct BindVertexBuffer3InfoKHR + { + using NativeType = VkBindVertexBuffer3InfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindVertexBuffer3InfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindVertexBuffer3InfoKHR( Bool32 setStride_ = {}, + StridedDeviceAddressRangeKHR addressRange_ = {}, + AddressCommandFlagsKHR addressFlags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , setStride{ setStride_ } + , addressRange{ addressRange_ } + , addressFlags{ addressFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR BindVertexBuffer3InfoKHR( BindVertexBuffer3InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindVertexBuffer3InfoKHR( VkBindVertexBuffer3InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : BindVertexBuffer3InfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + BindVertexBuffer3InfoKHR & operator=( BindVertexBuffer3InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindVertexBuffer3InfoKHR & operator=( VkBindVertexBuffer3InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindVertexBuffer3InfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBuffer3InfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBuffer3InfoKHR & setSetStride( Bool32 setStride_ ) & VULKAN_HPP_NOEXCEPT + { + setStride = setStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBuffer3InfoKHR && setSetStride( Bool32 setStride_ ) && VULKAN_HPP_NOEXCEPT + { + setStride = setStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBuffer3InfoKHR & setAddressRange( StridedDeviceAddressRangeKHR const & addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBuffer3InfoKHR && setAddressRange( StridedDeviceAddressRangeKHR const & addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBuffer3InfoKHR & setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBuffer3InfoKHR && setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindVertexBuffer3InfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindVertexBuffer3InfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindVertexBuffer3InfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindVertexBuffer3InfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, setStride, addressRange, addressFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindVertexBuffer3InfoKHR const & ) const = default; +#else + bool operator==( BindVertexBuffer3InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( setStride == rhs.setStride ) && ( addressRange == rhs.addressRange ) && + ( addressFlags == rhs.addressFlags ); +# endif + } + + bool operator!=( BindVertexBuffer3InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindVertexBuffer3InfoKHR; + void const * pNext = {}; + Bool32 setStride = {}; + StridedDeviceAddressRangeKHR addressRange = {}; + AddressCommandFlagsKHR addressFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindVertexBuffer3InfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = BindVertexBuffer3InfoKHR; + }; + + // wrapper struct for struct VkBindVertexBufferIndirectCommandEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandEXT.html + struct BindVertexBufferIndirectCommandEXT + { + using NativeType = VkBindVertexBufferIndirectCommandEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandEXT( DeviceAddress bufferAddress_ = {}, uint32_t size_ = {}, uint32_t stride_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferAddress{ bufferAddress_ } + , size{ size_ } + , stride{ stride_ } + { + } + + VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandEXT( BindVertexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindVertexBufferIndirectCommandEXT( VkBindVertexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : BindVertexBufferIndirectCommandEXT( *reinterpret_cast( &rhs ) ) + { + } + + BindVertexBufferIndirectCommandEXT & operator=( BindVertexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindVertexBufferIndirectCommandEXT & operator=( VkBindVertexBufferIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandEXT & setBufferAddress( DeviceAddress bufferAddress_ ) & VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandEXT && setBufferAddress( DeviceAddress bufferAddress_ ) && VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandEXT & setSize( uint32_t size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandEXT && setSize( uint32_t size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandEXT & setStride( uint32_t stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandEXT && setStride( uint32_t stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindVertexBufferIndirectCommandEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindVertexBufferIndirectCommandEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindVertexBufferIndirectCommandEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindVertexBufferIndirectCommandEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferAddress, size, stride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindVertexBufferIndirectCommandEXT const & ) const = default; +#else + bool operator==( BindVertexBufferIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( stride == rhs.stride ); +# endif + } + + bool operator!=( BindVertexBufferIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress bufferAddress = {}; + uint32_t size = {}; + uint32_t stride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindVertexBufferIndirectCommandEXT; + }; +#endif + + // wrapper struct for struct VkBindVertexBufferIndirectCommandNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindVertexBufferIndirectCommandNV.html + struct BindVertexBufferIndirectCommandNV + { + using NativeType = VkBindVertexBufferIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandNV( DeviceAddress bufferAddress_ = {}, uint32_t size_ = {}, uint32_t stride_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferAddress{ bufferAddress_ } + , size{ size_ } + , stride{ stride_ } + { + } + + VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandNV( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindVertexBufferIndirectCommandNV( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BindVertexBufferIndirectCommandNV( *reinterpret_cast( &rhs ) ) + { + } + + BindVertexBufferIndirectCommandNV & operator=( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindVertexBufferIndirectCommandNV & operator=( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setBufferAddress( DeviceAddress bufferAddress_ ) & VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV && setBufferAddress( DeviceAddress bufferAddress_ ) && VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setSize( uint32_t size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV && setSize( uint32_t size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & setStride( uint32_t stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV && setStride( uint32_t stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindVertexBufferIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindVertexBufferIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindVertexBufferIndirectCommandNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindVertexBufferIndirectCommandNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferAddress, size, stride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindVertexBufferIndirectCommandNV const & ) const = default; +#else + bool operator==( BindVertexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferAddress == rhs.bufferAddress ) && ( size == rhs.size ) && ( stride == rhs.stride ); +# endif + } + + bool operator!=( BindVertexBufferIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress bufferAddress = {}; + uint32_t size = {}; + uint32_t stride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindVertexBufferIndirectCommandNV; + }; +#endif + + // wrapper struct for struct VkBindVideoSessionMemoryInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBindVideoSessionMemoryInfoKHR.html + struct BindVideoSessionMemoryInfoKHR + { + using NativeType = VkBindVideoSessionMemoryInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindVideoSessionMemoryInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BindVideoSessionMemoryInfoKHR( uint32_t memoryBindIndex_ = {}, + DeviceMemory memory_ = {}, + DeviceSize memoryOffset_ = {}, + DeviceSize memorySize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryBindIndex{ memoryBindIndex_ } + , memory{ memory_ } + , memoryOffset{ memoryOffset_ } + , memorySize{ memorySize_ } + { + } + + VULKAN_HPP_CONSTEXPR BindVideoSessionMemoryInfoKHR( BindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BindVideoSessionMemoryInfoKHR( VkBindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : BindVideoSessionMemoryInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + BindVideoSessionMemoryInfoKHR & operator=( BindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BindVideoSessionMemoryInfoKHR & operator=( VkBindVideoSessionMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemoryBindIndex( uint32_t memoryBindIndex_ ) & VULKAN_HPP_NOEXCEPT + { + memoryBindIndex = memoryBindIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR && setMemoryBindIndex( uint32_t memoryBindIndex_ ) && VULKAN_HPP_NOEXCEPT + { + memoryBindIndex = memoryBindIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemoryOffset( DeviceSize memoryOffset_ ) & VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR && setMemoryOffset( DeviceSize memoryOffset_ ) && VULKAN_HPP_NOEXCEPT + { + memoryOffset = memoryOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR & setMemorySize( DeviceSize memorySize_ ) & VULKAN_HPP_NOEXCEPT + { + memorySize = memorySize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BindVideoSessionMemoryInfoKHR && setMemorySize( DeviceSize memorySize_ ) && VULKAN_HPP_NOEXCEPT + { + memorySize = memorySize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBindVideoSessionMemoryInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindVideoSessionMemoryInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBindVideoSessionMemoryInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBindVideoSessionMemoryInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryBindIndex, memory, memoryOffset, memorySize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BindVideoSessionMemoryInfoKHR const & ) const = default; +#else + bool operator==( BindVideoSessionMemoryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryBindIndex == rhs.memoryBindIndex ) && ( memory == rhs.memory ) && + ( memoryOffset == rhs.memoryOffset ) && ( memorySize == rhs.memorySize ); +# endif + } + + bool operator!=( BindVideoSessionMemoryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBindVideoSessionMemoryInfoKHR; + void const * pNext = {}; + uint32_t memoryBindIndex = {}; + DeviceMemory memory = {}; + DeviceSize memoryOffset = {}; + DeviceSize memorySize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BindVideoSessionMemoryInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = BindVideoSessionMemoryInfoKHR; + }; + + // wrapper struct for struct VkBlitImageCubicWeightsInfoQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBlitImageCubicWeightsInfoQCOM.html + struct BlitImageCubicWeightsInfoQCOM + { + using NativeType = VkBlitImageCubicWeightsInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBlitImageCubicWeightsInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BlitImageCubicWeightsInfoQCOM( CubicFilterWeightsQCOM cubicWeights_ = CubicFilterWeightsQCOM::eCatmullRom, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cubicWeights{ cubicWeights_ } + { + } + + VULKAN_HPP_CONSTEXPR BlitImageCubicWeightsInfoQCOM( BlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BlitImageCubicWeightsInfoQCOM( VkBlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : BlitImageCubicWeightsInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + BlitImageCubicWeightsInfoQCOM & operator=( BlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BlitImageCubicWeightsInfoQCOM & operator=( VkBlitImageCubicWeightsInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BlitImageCubicWeightsInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageCubicWeightsInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageCubicWeightsInfoQCOM & setCubicWeights( CubicFilterWeightsQCOM cubicWeights_ ) & VULKAN_HPP_NOEXCEPT + { + cubicWeights = cubicWeights_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageCubicWeightsInfoQCOM && setCubicWeights( CubicFilterWeightsQCOM cubicWeights_ ) && VULKAN_HPP_NOEXCEPT + { + cubicWeights = cubicWeights_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBlitImageCubicWeightsInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBlitImageCubicWeightsInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBlitImageCubicWeightsInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBlitImageCubicWeightsInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cubicWeights ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BlitImageCubicWeightsInfoQCOM const & ) const = default; +#else + bool operator==( BlitImageCubicWeightsInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cubicWeights == rhs.cubicWeights ); +# endif + } + + bool operator!=( BlitImageCubicWeightsInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBlitImageCubicWeightsInfoQCOM; + void const * pNext = {}; + CubicFilterWeightsQCOM cubicWeights = CubicFilterWeightsQCOM::eCatmullRom; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BlitImageCubicWeightsInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = BlitImageCubicWeightsInfoQCOM; + }; + + // wrapper struct for struct VkImageSubresourceLayers, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageSubresourceLayers.html + struct ImageSubresourceLayers + { + using NativeType = VkImageSubresourceLayers; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( ImageAspectFlags aspectMask_ = {}, + uint32_t mipLevel_ = {}, + uint32_t baseArrayLayer_ = {}, + uint32_t layerCount_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectMask{ aspectMask_ } + , mipLevel{ mipLevel_ } + , baseArrayLayer{ baseArrayLayer_ } + , layerCount{ layerCount_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageSubresourceLayers( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSubresourceLayers( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageSubresourceLayers( *reinterpret_cast( &rhs ) ) + { + } + + ImageSubresourceLayers & operator=( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageSubresourceLayers & operator=( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setAspectMask( ImageAspectFlags aspectMask_ ) & VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers && setAspectMask( ImageAspectFlags aspectMask_ ) && VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setMipLevel( uint32_t mipLevel_ ) & VULKAN_HPP_NOEXCEPT + { + mipLevel = mipLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers && setMipLevel( uint32_t mipLevel_ ) && VULKAN_HPP_NOEXCEPT + { + mipLevel = mipLevel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setBaseArrayLayer( uint32_t baseArrayLayer_ ) & VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers && setBaseArrayLayer( uint32_t baseArrayLayer_ ) && VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & setLayerCount( uint32_t layerCount_ ) & VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers && setLayerCount( uint32_t layerCount_ ) && VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageSubresourceLayers const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSubresourceLayers &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSubresourceLayers const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageSubresourceLayers *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( aspectMask, mipLevel, baseArrayLayer, layerCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSubresourceLayers const & ) const = default; +#else + bool operator==( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( aspectMask == rhs.aspectMask ) && ( mipLevel == rhs.mipLevel ) && ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount ); +# endif + } + + bool operator!=( ImageSubresourceLayers const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ImageAspectFlags aspectMask = {}; + uint32_t mipLevel = {}; + uint32_t baseArrayLayer = {}; + uint32_t layerCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageSubresourceLayers; + }; +#endif + + // wrapper struct for struct VkImageBlit2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageBlit2.html + struct ImageBlit2 + { + using NativeType = VkImageBlit2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageBlit2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 ImageBlit2( ImageSubresourceLayers srcSubresource_ = {}, + std::array const & srcOffsets_ = {}, + ImageSubresourceLayers dstSubresource_ = {}, + std::array const & dstOffsets_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcSubresource{ srcSubresource_ } + , srcOffsets{ srcOffsets_ } + , dstSubresource{ dstSubresource_ } + , dstOffsets{ dstOffsets_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2( ImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageBlit2( VkImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageBlit2( *reinterpret_cast( &rhs ) ) {} + + ImageBlit2 & operator=( ImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageBlit2 & operator=( VkImageBlit2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 && setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setSrcOffsets( std::array const & srcOffsets_ ) & VULKAN_HPP_NOEXCEPT + { + srcOffsets = srcOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 && setSrcOffsets( std::array const & srcOffsets_ ) && VULKAN_HPP_NOEXCEPT + { + srcOffsets = srcOffsets_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 && setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 & setDstOffsets( std::array const & dstOffsets_ ) & VULKAN_HPP_NOEXCEPT + { + dstOffsets = dstOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit2 && setDstOffsets( std::array const & dstOffsets_ ) && VULKAN_HPP_NOEXCEPT + { + dstOffsets = dstOffsets_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageBlit2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageBlit2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageBlit2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageBlit2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ImageSubresourceLayers const &, + ArrayWrapper1D const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcSubresource, srcOffsets, dstSubresource, dstOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageBlit2 const & ) const = default; +#else + bool operator==( ImageBlit2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && ( srcOffsets == rhs.srcOffsets ) && + ( dstSubresource == rhs.dstSubresource ) && ( dstOffsets == rhs.dstOffsets ); +# endif + } + + bool operator!=( ImageBlit2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageBlit2; + void const * pNext = {}; + ImageSubresourceLayers srcSubresource = {}; + ArrayWrapper1D srcOffsets = {}; + ImageSubresourceLayers dstSubresource = {}; + ArrayWrapper1D dstOffsets = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageBlit2; + }; +#endif + + template <> + struct CppType + { + using Type = ImageBlit2; + }; + + using ImageBlit2KHR = ImageBlit2; + + // wrapper struct for struct VkBlitImageInfo2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBlitImageInfo2.html + struct BlitImageInfo2 + { + using NativeType = VkBlitImageInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBlitImageInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2( Image srcImage_ = {}, + ImageLayout srcImageLayout_ = ImageLayout::eUndefined, + Image dstImage_ = {}, + ImageLayout dstImageLayout_ = ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + ImageBlit2 const * pRegions_ = {}, + Filter filter_ = Filter::eNearest, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcImage{ srcImage_ } + , srcImageLayout{ srcImageLayout_ } + , dstImage{ dstImage_ } + , dstImageLayout{ dstImageLayout_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + , filter{ filter_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2( BlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BlitImageInfo2( VkBlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : BlitImageInfo2( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BlitImageInfo2( Image srcImage_, + ImageLayout srcImageLayout_, + Image dstImage_, + ImageLayout dstImageLayout_, + ArrayProxyNoTemporaries const & regions_, + Filter filter_ = Filter::eNearest, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + , filter( filter_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + BlitImageInfo2 & operator=( BlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BlitImageInfo2 & operator=( VkBlitImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setSrcImage( Image srcImage_ ) & VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 && setSrcImage( Image srcImage_ ) && VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setSrcImageLayout( ImageLayout srcImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 && setSrcImageLayout( ImageLayout srcImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setDstImage( Image dstImage_ ) & VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 && setDstImage( Image dstImage_ ) && VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setDstImageLayout( ImageLayout dstImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 && setDstImageLayout( ImageLayout dstImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setPRegions( ImageBlit2 const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 && setPRegions( ImageBlit2 const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BlitImageInfo2 & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 & setFilter( Filter filter_ ) & VULKAN_HPP_NOEXCEPT + { + filter = filter_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2 && setFilter( Filter filter_ ) && VULKAN_HPP_NOEXCEPT + { + filter = filter_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBlitImageInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBlitImageInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBlitImageInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBlitImageInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BlitImageInfo2 const & ) const = default; +#else + bool operator==( BlitImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) && + ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ) && + ( filter == rhs.filter ); +# endif + } + + bool operator!=( BlitImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBlitImageInfo2; + void const * pNext = {}; + Image srcImage = {}; + ImageLayout srcImageLayout = ImageLayout::eUndefined; + Image dstImage = {}; + ImageLayout dstImageLayout = ImageLayout::eUndefined; + uint32_t regionCount = {}; + ImageBlit2 const * pRegions = {}; + Filter filter = Filter::eNearest; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BlitImageInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = BlitImageInfo2; + }; + + using BlitImageInfo2KHR = BlitImageInfo2; + + // wrapper struct for struct VkBufferCaptureDescriptorDataInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCaptureDescriptorDataInfoEXT.html + struct BufferCaptureDescriptorDataInfoEXT + { + using NativeType = VkBufferCaptureDescriptorDataInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCaptureDescriptorDataInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCaptureDescriptorDataInfoEXT( Buffer buffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , buffer{ buffer_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferCaptureDescriptorDataInfoEXT( BufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCaptureDescriptorDataInfoEXT( VkBufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCaptureDescriptorDataInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + BufferCaptureDescriptorDataInfoEXT & operator=( BufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferCaptureDescriptorDataInfoEXT & operator=( VkBufferCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCaptureDescriptorDataInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCaptureDescriptorDataInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCaptureDescriptorDataInfoEXT & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCaptureDescriptorDataInfoEXT && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCaptureDescriptorDataInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferCaptureDescriptorDataInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCaptureDescriptorDataInfoEXT const & ) const = default; +#else + bool operator==( BufferCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( BufferCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferCaptureDescriptorDataInfoEXT; + void const * pNext = {}; + Buffer buffer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferCaptureDescriptorDataInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = BufferCaptureDescriptorDataInfoEXT; + }; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkBufferCollectionBufferCreateInfoFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCollectionBufferCreateInfoFUCHSIA.html + struct BufferCollectionBufferCreateInfoFUCHSIA + { + using NativeType = VkBufferCollectionBufferCreateInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCollectionBufferCreateInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCollectionBufferCreateInfoFUCHSIA( BufferCollectionFUCHSIA collection_ = {}, + uint32_t index_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , collection{ collection_ } + , index{ index_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferCollectionBufferCreateInfoFUCHSIA( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionBufferCreateInfoFUCHSIA( VkBufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCollectionBufferCreateInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + BufferCollectionBufferCreateInfoFUCHSIA & operator=( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferCollectionBufferCreateInfoFUCHSIA & operator=( VkBufferCollectionBufferCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & setCollection( BufferCollectionFUCHSIA collection_ ) & VULKAN_HPP_NOEXCEPT + { + collection = collection_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA && setCollection( BufferCollectionFUCHSIA collection_ ) && VULKAN_HPP_NOEXCEPT + { + collection = collection_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA & setIndex( uint32_t index_ ) & VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionBufferCreateInfoFUCHSIA && setIndex( uint32_t index_ ) && VULKAN_HPP_NOEXCEPT + { + index = index_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferCollectionBufferCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCollectionBufferCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCollectionBufferCreateInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferCollectionBufferCreateInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, collection, index ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCollectionBufferCreateInfoFUCHSIA const & ) const = default; +# else + bool operator==( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && ( index == rhs.index ); +# endif + } + + bool operator!=( BufferCollectionBufferCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eBufferCollectionBufferCreateInfoFUCHSIA; + void const * pNext = {}; + BufferCollectionFUCHSIA collection = {}; + uint32_t index = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferCollectionBufferCreateInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = BufferCollectionBufferCreateInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkBufferCollectionConstraintsInfoFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCollectionConstraintsInfoFUCHSIA.html + struct BufferCollectionConstraintsInfoFUCHSIA + { + using NativeType = VkBufferCollectionConstraintsInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCollectionConstraintsInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCollectionConstraintsInfoFUCHSIA( uint32_t minBufferCount_ = {}, + uint32_t maxBufferCount_ = {}, + uint32_t minBufferCountForCamping_ = {}, + uint32_t minBufferCountForDedicatedSlack_ = {}, + uint32_t minBufferCountForSharedSlack_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minBufferCount{ minBufferCount_ } + , maxBufferCount{ maxBufferCount_ } + , minBufferCountForCamping{ minBufferCountForCamping_ } + , minBufferCountForDedicatedSlack{ minBufferCountForDedicatedSlack_ } + , minBufferCountForSharedSlack{ minBufferCountForSharedSlack_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferCollectionConstraintsInfoFUCHSIA( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionConstraintsInfoFUCHSIA( VkBufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCollectionConstraintsInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + BufferCollectionConstraintsInfoFUCHSIA & operator=( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferCollectionConstraintsInfoFUCHSIA & operator=( VkBufferCollectionConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMinBufferCount( uint32_t minBufferCount_ ) & VULKAN_HPP_NOEXCEPT + { + minBufferCount = minBufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA && setMinBufferCount( uint32_t minBufferCount_ ) && VULKAN_HPP_NOEXCEPT + { + minBufferCount = minBufferCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMaxBufferCount( uint32_t maxBufferCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxBufferCount = maxBufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA && setMaxBufferCount( uint32_t maxBufferCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxBufferCount = maxBufferCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMinBufferCountForCamping( uint32_t minBufferCountForCamping_ ) & VULKAN_HPP_NOEXCEPT + { + minBufferCountForCamping = minBufferCountForCamping_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA && setMinBufferCountForCamping( uint32_t minBufferCountForCamping_ ) && VULKAN_HPP_NOEXCEPT + { + minBufferCountForCamping = minBufferCountForCamping_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMinBufferCountForDedicatedSlack( uint32_t minBufferCountForDedicatedSlack_ ) & + VULKAN_HPP_NOEXCEPT + { + minBufferCountForDedicatedSlack = minBufferCountForDedicatedSlack_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA && setMinBufferCountForDedicatedSlack( uint32_t minBufferCountForDedicatedSlack_ ) && + VULKAN_HPP_NOEXCEPT + { + minBufferCountForDedicatedSlack = minBufferCountForDedicatedSlack_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA & setMinBufferCountForSharedSlack( uint32_t minBufferCountForSharedSlack_ ) & + VULKAN_HPP_NOEXCEPT + { + minBufferCountForSharedSlack = minBufferCountForSharedSlack_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionConstraintsInfoFUCHSIA && setMinBufferCountForSharedSlack( uint32_t minBufferCountForSharedSlack_ ) && + VULKAN_HPP_NOEXCEPT + { + minBufferCountForSharedSlack = minBufferCountForSharedSlack_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferCollectionConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCollectionConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCollectionConstraintsInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferCollectionConstraintsInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minBufferCount, maxBufferCount, minBufferCountForCamping, minBufferCountForDedicatedSlack, minBufferCountForSharedSlack ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCollectionConstraintsInfoFUCHSIA const & ) const = default; +# else + bool operator==( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minBufferCount == rhs.minBufferCount ) && ( maxBufferCount == rhs.maxBufferCount ) && + ( minBufferCountForCamping == rhs.minBufferCountForCamping ) && ( minBufferCountForDedicatedSlack == rhs.minBufferCountForDedicatedSlack ) && + ( minBufferCountForSharedSlack == rhs.minBufferCountForSharedSlack ); +# endif + } + + bool operator!=( BufferCollectionConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eBufferCollectionConstraintsInfoFUCHSIA; + void const * pNext = {}; + uint32_t minBufferCount = {}; + uint32_t maxBufferCount = {}; + uint32_t minBufferCountForCamping = {}; + uint32_t minBufferCountForDedicatedSlack = {}; + uint32_t minBufferCountForSharedSlack = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferCollectionConstraintsInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = BufferCollectionConstraintsInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkBufferCollectionCreateInfoFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCollectionCreateInfoFUCHSIA.html + struct BufferCollectionCreateInfoFUCHSIA + { + using NativeType = VkBufferCollectionCreateInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCollectionCreateInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCollectionCreateInfoFUCHSIA( zx_handle_t collectionToken_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , collectionToken{ collectionToken_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferCollectionCreateInfoFUCHSIA( BufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionCreateInfoFUCHSIA( VkBufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCollectionCreateInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + BufferCollectionCreateInfoFUCHSIA & operator=( BufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferCollectionCreateInfoFUCHSIA & operator=( VkBufferCollectionCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA & setCollectionToken( zx_handle_t collectionToken_ ) & VULKAN_HPP_NOEXCEPT + { + collectionToken = collectionToken_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionCreateInfoFUCHSIA && setCollectionToken( zx_handle_t collectionToken_ ) && VULKAN_HPP_NOEXCEPT + { + collectionToken = collectionToken_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferCollectionCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCollectionCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCollectionCreateInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferCollectionCreateInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, collectionToken ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &collectionToken, &rhs.collectionToken, sizeof( zx_handle_t ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &collectionToken, &rhs.collectionToken, sizeof( zx_handle_t ) ) == 0 ); + } + + bool operator!=( BufferCollectionCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eBufferCollectionCreateInfoFUCHSIA; + void const * pNext = {}; + zx_handle_t collectionToken = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferCollectionCreateInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = BufferCollectionCreateInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkBufferCollectionImageCreateInfoFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCollectionImageCreateInfoFUCHSIA.html + struct BufferCollectionImageCreateInfoFUCHSIA + { + using NativeType = VkBufferCollectionImageCreateInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCollectionImageCreateInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCollectionImageCreateInfoFUCHSIA( BufferCollectionFUCHSIA collection_ = {}, + uint32_t index_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , collection{ collection_ } + , index{ index_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferCollectionImageCreateInfoFUCHSIA( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionImageCreateInfoFUCHSIA( VkBufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCollectionImageCreateInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + BufferCollectionImageCreateInfoFUCHSIA & operator=( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferCollectionImageCreateInfoFUCHSIA & operator=( VkBufferCollectionImageCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setCollection( BufferCollectionFUCHSIA collection_ ) & VULKAN_HPP_NOEXCEPT + { + collection = collection_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA && setCollection( BufferCollectionFUCHSIA collection_ ) && VULKAN_HPP_NOEXCEPT + { + collection = collection_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA & setIndex( uint32_t index_ ) & VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCollectionImageCreateInfoFUCHSIA && setIndex( uint32_t index_ ) && VULKAN_HPP_NOEXCEPT + { + index = index_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferCollectionImageCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCollectionImageCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCollectionImageCreateInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferCollectionImageCreateInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, collection, index ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCollectionImageCreateInfoFUCHSIA const & ) const = default; +# else + bool operator==( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && ( index == rhs.index ); +# endif + } + + bool operator!=( BufferCollectionImageCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eBufferCollectionImageCreateInfoFUCHSIA; + void const * pNext = {}; + BufferCollectionFUCHSIA collection = {}; + uint32_t index = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferCollectionImageCreateInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = BufferCollectionImageCreateInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkSysmemColorSpaceFUCHSIA, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSysmemColorSpaceFUCHSIA.html + struct SysmemColorSpaceFUCHSIA + { + using NativeType = VkSysmemColorSpaceFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSysmemColorSpaceFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SysmemColorSpaceFUCHSIA( uint32_t colorSpace_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , colorSpace{ colorSpace_ } + { + } + + VULKAN_HPP_CONSTEXPR SysmemColorSpaceFUCHSIA( SysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SysmemColorSpaceFUCHSIA( VkSysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : SysmemColorSpaceFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + SysmemColorSpaceFUCHSIA & operator=( SysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SysmemColorSpaceFUCHSIA & operator=( VkSysmemColorSpaceFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA & setColorSpace( uint32_t colorSpace_ ) & VULKAN_HPP_NOEXCEPT + { + colorSpace = colorSpace_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SysmemColorSpaceFUCHSIA && setColorSpace( uint32_t colorSpace_ ) && VULKAN_HPP_NOEXCEPT + { + colorSpace = colorSpace_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSysmemColorSpaceFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSysmemColorSpaceFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSysmemColorSpaceFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSysmemColorSpaceFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, colorSpace ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SysmemColorSpaceFUCHSIA const & ) const = default; +# else + bool operator==( SysmemColorSpaceFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorSpace == rhs.colorSpace ); +# endif + } + + bool operator!=( SysmemColorSpaceFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eSysmemColorSpaceFUCHSIA; + void const * pNext = {}; + uint32_t colorSpace = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SysmemColorSpaceFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = SysmemColorSpaceFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkBufferCollectionPropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCollectionPropertiesFUCHSIA.html + struct BufferCollectionPropertiesFUCHSIA + { + using NativeType = VkBufferCollectionPropertiesFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCollectionPropertiesFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCollectionPropertiesFUCHSIA( uint32_t memoryTypeBits_ = {}, + uint32_t bufferCount_ = {}, + uint32_t createInfoIndex_ = {}, + uint64_t sysmemPixelFormat_ = {}, + FormatFeatureFlags formatFeatures_ = {}, + SysmemColorSpaceFUCHSIA sysmemColorSpaceIndex_ = {}, + ComponentMapping samplerYcbcrConversionComponents_ = {}, + SamplerYcbcrModelConversion suggestedYcbcrModel_ = SamplerYcbcrModelConversion::eRgbIdentity, + SamplerYcbcrRange suggestedYcbcrRange_ = SamplerYcbcrRange::eItuFull, + ChromaLocation suggestedXChromaOffset_ = ChromaLocation::eCositedEven, + ChromaLocation suggestedYChromaOffset_ = ChromaLocation::eCositedEven, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryTypeBits{ memoryTypeBits_ } + , bufferCount{ bufferCount_ } + , createInfoIndex{ createInfoIndex_ } + , sysmemPixelFormat{ sysmemPixelFormat_ } + , formatFeatures{ formatFeatures_ } + , sysmemColorSpaceIndex{ sysmemColorSpaceIndex_ } + , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ } + , suggestedYcbcrModel{ suggestedYcbcrModel_ } + , suggestedYcbcrRange{ suggestedYcbcrRange_ } + , suggestedXChromaOffset{ suggestedXChromaOffset_ } + , suggestedYChromaOffset{ suggestedYChromaOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferCollectionPropertiesFUCHSIA( BufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCollectionPropertiesFUCHSIA( VkBufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferCollectionPropertiesFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + BufferCollectionPropertiesFUCHSIA & operator=( BufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferCollectionPropertiesFUCHSIA & operator=( VkBufferCollectionPropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkBufferCollectionPropertiesFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCollectionPropertiesFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCollectionPropertiesFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferCollectionPropertiesFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + memoryTypeBits, + bufferCount, + createInfoIndex, + sysmemPixelFormat, + formatFeatures, + sysmemColorSpaceIndex, + samplerYcbcrConversionComponents, + suggestedYcbcrModel, + suggestedYcbcrRange, + suggestedXChromaOffset, + suggestedYChromaOffset ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCollectionPropertiesFUCHSIA const & ) const = default; +# else + bool operator==( BufferCollectionPropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ) && ( bufferCount == rhs.bufferCount ) && + ( createInfoIndex == rhs.createInfoIndex ) && ( sysmemPixelFormat == rhs.sysmemPixelFormat ) && ( formatFeatures == rhs.formatFeatures ) && + ( sysmemColorSpaceIndex == rhs.sysmemColorSpaceIndex ) && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) && + ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) && + ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset ); +# endif + } + + bool operator!=( BufferCollectionPropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eBufferCollectionPropertiesFUCHSIA; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + uint32_t bufferCount = {}; + uint32_t createInfoIndex = {}; + uint64_t sysmemPixelFormat = {}; + FormatFeatureFlags formatFeatures = {}; + SysmemColorSpaceFUCHSIA sysmemColorSpaceIndex = {}; + ComponentMapping samplerYcbcrConversionComponents = {}; + SamplerYcbcrModelConversion suggestedYcbcrModel = SamplerYcbcrModelConversion::eRgbIdentity; + SamplerYcbcrRange suggestedYcbcrRange = SamplerYcbcrRange::eItuFull; + ChromaLocation suggestedXChromaOffset = ChromaLocation::eCositedEven; + ChromaLocation suggestedYChromaOffset = ChromaLocation::eCositedEven; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferCollectionPropertiesFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = BufferCollectionPropertiesFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + // wrapper struct for struct VkBufferCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCreateInfo.html + struct BufferCreateInfo + { + using NativeType = VkBufferCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCreateInfo( BufferCreateFlags flags_ = {}, + DeviceSize size_ = {}, + BufferUsageFlags usage_ = {}, + SharingMode sharingMode_ = SharingMode::eExclusive, + uint32_t queueFamilyIndexCount_ = {}, + uint32_t const * pQueueFamilyIndices_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , size{ size_ } + , usage{ usage_ } + , sharingMode{ sharingMode_ } + , queueFamilyIndexCount{ queueFamilyIndexCount_ } + , pQueueFamilyIndices{ pQueueFamilyIndices_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferCreateInfo( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCreateInfo( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : BufferCreateInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BufferCreateInfo( BufferCreateFlags flags_, + DeviceSize size_, + BufferUsageFlags usage_, + SharingMode sharingMode_, + ArrayProxyNoTemporaries const & queueFamilyIndices_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , size( size_ ) + , usage( usage_ ) + , sharingMode( sharingMode_ ) + , queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ) + , pQueueFamilyIndices( queueFamilyIndices_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + BufferCreateInfo & operator=( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferCreateInfo & operator=( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setFlags( BufferCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo && setFlags( BufferCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setUsage( BufferUsageFlags usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo && setUsage( BufferUsageFlags usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setSharingMode( SharingMode sharingMode_ ) & VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo && setSharingMode( SharingMode sharingMode_ ) && VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo && setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & setPQueueFamilyIndices( uint32_t const * pQueueFamilyIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo && setPQueueFamilyIndices( uint32_t const * pQueueFamilyIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + BufferCreateInfo & setQueueFamilyIndices( ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); + pQueueFamilyIndices = queueFamilyIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, size, usage, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCreateInfo const & ) const = default; +#else + bool operator==( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( size == rhs.size ) && ( usage == rhs.usage ) && + ( sharingMode == rhs.sharingMode ) && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ); +# endif + } + + bool operator!=( BufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferCreateInfo; + void const * pNext = {}; + BufferCreateFlags flags = {}; + DeviceSize size = {}; + BufferUsageFlags usage = {}; + SharingMode sharingMode = SharingMode::eExclusive; + uint32_t queueFamilyIndexCount = {}; + uint32_t const * pQueueFamilyIndices = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BufferCreateInfo; + }; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkBufferConstraintsInfoFUCHSIA, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferConstraintsInfoFUCHSIA.html + struct BufferConstraintsInfoFUCHSIA + { + using NativeType = VkBufferConstraintsInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferConstraintsInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferConstraintsInfoFUCHSIA( BufferCreateInfo createInfo_ = {}, + FormatFeatureFlags requiredFormatFeatures_ = {}, + BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , createInfo{ createInfo_ } + , requiredFormatFeatures{ requiredFormatFeatures_ } + , bufferCollectionConstraints{ bufferCollectionConstraints_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferConstraintsInfoFUCHSIA( BufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferConstraintsInfoFUCHSIA( VkBufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferConstraintsInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + BufferConstraintsInfoFUCHSIA & operator=( BufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferConstraintsInfoFUCHSIA & operator=( VkBufferConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setCreateInfo( BufferCreateInfo const & createInfo_ ) & VULKAN_HPP_NOEXCEPT + { + createInfo = createInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA && setCreateInfo( BufferCreateInfo const & createInfo_ ) && VULKAN_HPP_NOEXCEPT + { + createInfo = createInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & setRequiredFormatFeatures( FormatFeatureFlags requiredFormatFeatures_ ) & VULKAN_HPP_NOEXCEPT + { + requiredFormatFeatures = requiredFormatFeatures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA && setRequiredFormatFeatures( FormatFeatureFlags requiredFormatFeatures_ ) && VULKAN_HPP_NOEXCEPT + { + requiredFormatFeatures = requiredFormatFeatures_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA & + setBufferCollectionConstraints( BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ ) & + VULKAN_HPP_NOEXCEPT + { + bufferCollectionConstraints = bufferCollectionConstraints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferConstraintsInfoFUCHSIA && + setBufferCollectionConstraints( BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ ) && + VULKAN_HPP_NOEXCEPT + { + bufferCollectionConstraints = bufferCollectionConstraints_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferConstraintsInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferConstraintsInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, createInfo, requiredFormatFeatures, bufferCollectionConstraints ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferConstraintsInfoFUCHSIA const & ) const = default; +# else + bool operator==( BufferConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createInfo == rhs.createInfo ) && ( requiredFormatFeatures == rhs.requiredFormatFeatures ) && + ( bufferCollectionConstraints == rhs.bufferCollectionConstraints ); +# endif + } + + bool operator!=( BufferConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eBufferConstraintsInfoFUCHSIA; + void const * pNext = {}; + BufferCreateInfo createInfo = {}; + FormatFeatureFlags requiredFormatFeatures = {}; + BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferConstraintsInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = BufferConstraintsInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + // wrapper struct for struct VkBufferCopy, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCopy.html + struct BufferCopy + { + using NativeType = VkBufferCopy; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferCopy( DeviceSize srcOffset_ = {}, DeviceSize dstOffset_ = {}, DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : srcOffset{ srcOffset_ } + , dstOffset{ dstOffset_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferCopy( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCopy( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT : BufferCopy( *reinterpret_cast( &rhs ) ) {} + + BufferCopy & operator=( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferCopy & operator=( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSrcOffset( DeviceSize srcOffset_ ) & VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy && setSrcOffset( DeviceSize srcOffset_ ) && VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy & setDstOffset( DeviceSize dstOffset_ ) & VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy && setDstOffset( DeviceSize dstOffset_ ) && VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferCopy const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCopy &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCopy const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferCopy *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcOffset, dstOffset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCopy const & ) const = default; +#else + bool operator==( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcOffset == rhs.srcOffset ) && ( dstOffset == rhs.dstOffset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( BufferCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceSize srcOffset = {}; + DeviceSize dstOffset = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferCopy; + }; +#endif + + // wrapper struct for struct VkBufferCopy2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferCopy2.html + struct BufferCopy2 + { + using NativeType = VkBufferCopy2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCopy2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + BufferCopy2( DeviceSize srcOffset_ = {}, DeviceSize dstOffset_ = {}, DeviceSize size_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcOffset{ srcOffset_ } + , dstOffset{ dstOffset_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferCopy2( BufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferCopy2( VkBufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT : BufferCopy2( *reinterpret_cast( &rhs ) ) {} + + BufferCopy2 & operator=( BufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferCopy2 & operator=( VkBufferCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setSrcOffset( DeviceSize srcOffset_ ) & VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 && setSrcOffset( DeviceSize srcOffset_ ) && VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setDstOffset( DeviceSize dstOffset_ ) & VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 && setDstOffset( DeviceSize dstOffset_ ) && VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferCopy2 && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferCopy2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCopy2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferCopy2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferCopy2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcOffset, dstOffset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferCopy2 const & ) const = default; +#else + bool operator==( BufferCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcOffset == rhs.srcOffset ) && ( dstOffset == rhs.dstOffset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( BufferCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferCopy2; + void const * pNext = {}; + DeviceSize srcOffset = {}; + DeviceSize dstOffset = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferCopy2; + }; +#endif + + template <> + struct CppType + { + using Type = BufferCopy2; + }; + + using BufferCopy2KHR = BufferCopy2; + + // wrapper struct for struct VkBufferDeviceAddressCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferDeviceAddressCreateInfoEXT.html + struct BufferDeviceAddressCreateInfoEXT + { + using NativeType = VkBufferDeviceAddressCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferDeviceAddressCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferDeviceAddressCreateInfoEXT( DeviceAddress deviceAddress_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceAddress{ deviceAddress_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferDeviceAddressCreateInfoEXT( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferDeviceAddressCreateInfoEXT( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferDeviceAddressCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + BufferDeviceAddressCreateInfoEXT & operator=( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferDeviceAddressCreateInfoEXT & operator=( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & setDeviceAddress( DeviceAddress deviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT && setDeviceAddress( DeviceAddress deviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferDeviceAddressCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferDeviceAddressCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferDeviceAddressCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferDeviceAddressCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferDeviceAddressCreateInfoEXT const & ) const = default; +#else + bool operator==( BufferDeviceAddressCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress ); +# endif + } + + bool operator!=( BufferDeviceAddressCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferDeviceAddressCreateInfoEXT; + void const * pNext = {}; + DeviceAddress deviceAddress = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferDeviceAddressCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = BufferDeviceAddressCreateInfoEXT; + }; + + // wrapper struct for struct VkBufferDeviceAddressInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferDeviceAddressInfo.html + struct BufferDeviceAddressInfo + { + using NativeType = VkBufferDeviceAddressInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferDeviceAddressInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( Buffer buffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , buffer{ buffer_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferDeviceAddressInfo( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferDeviceAddressInfo( *reinterpret_cast( &rhs ) ) + { + } + + BufferDeviceAddressInfo & operator=( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferDeviceAddressInfo & operator=( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferDeviceAddressInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferDeviceAddressInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferDeviceAddressInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferDeviceAddressInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferDeviceAddressInfo const & ) const = default; +#else + bool operator==( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( BufferDeviceAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferDeviceAddressInfo; + void const * pNext = {}; + Buffer buffer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferDeviceAddressInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BufferDeviceAddressInfo; + }; + + using BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo; + using BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo; + + // wrapper struct for struct VkBufferImageCopy, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferImageCopy.html + struct BufferImageCopy + { + using NativeType = VkBufferImageCopy; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferImageCopy( DeviceSize bufferOffset_ = {}, + uint32_t bufferRowLength_ = {}, + uint32_t bufferImageHeight_ = {}, + ImageSubresourceLayers imageSubresource_ = {}, + Offset3D imageOffset_ = {}, + Extent3D imageExtent_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferOffset{ bufferOffset_ } + , bufferRowLength{ bufferRowLength_ } + , bufferImageHeight{ bufferImageHeight_ } + , imageSubresource{ imageSubresource_ } + , imageOffset{ imageOffset_ } + , imageExtent{ imageExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferImageCopy( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferImageCopy( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT : BufferImageCopy( *reinterpret_cast( &rhs ) ) {} + + BufferImageCopy & operator=( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferImageCopy & operator=( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferOffset( DeviceSize bufferOffset_ ) & VULKAN_HPP_NOEXCEPT + { + bufferOffset = bufferOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy && setBufferOffset( DeviceSize bufferOffset_ ) && VULKAN_HPP_NOEXCEPT + { + bufferOffset = bufferOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferRowLength( uint32_t bufferRowLength_ ) & VULKAN_HPP_NOEXCEPT + { + bufferRowLength = bufferRowLength_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy && setBufferRowLength( uint32_t bufferRowLength_ ) && VULKAN_HPP_NOEXCEPT + { + bufferRowLength = bufferRowLength_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setBufferImageHeight( uint32_t bufferImageHeight_ ) & VULKAN_HPP_NOEXCEPT + { + bufferImageHeight = bufferImageHeight_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy && setBufferImageHeight( uint32_t bufferImageHeight_ ) && VULKAN_HPP_NOEXCEPT + { + bufferImageHeight = bufferImageHeight_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy && setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageOffset( Offset3D const & imageOffset_ ) & VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy && setImageOffset( Offset3D const & imageOffset_ ) && VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & setImageExtent( Extent3D const & imageExtent_ ) & VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy && setImageExtent( Extent3D const & imageExtent_ ) && VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferImageCopy const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferImageCopy &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferImageCopy const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferImageCopy *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferImageCopy const & ) const = default; +#else + bool operator==( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferOffset == rhs.bufferOffset ) && ( bufferRowLength == rhs.bufferRowLength ) && ( bufferImageHeight == rhs.bufferImageHeight ) && + ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) && ( imageExtent == rhs.imageExtent ); +# endif + } + + bool operator!=( BufferImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceSize bufferOffset = {}; + uint32_t bufferRowLength = {}; + uint32_t bufferImageHeight = {}; + ImageSubresourceLayers imageSubresource = {}; + Offset3D imageOffset = {}; + Extent3D imageExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferImageCopy; + }; +#endif + + // wrapper struct for struct VkBufferImageCopy2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferImageCopy2.html + struct BufferImageCopy2 + { + using NativeType = VkBufferImageCopy2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferImageCopy2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferImageCopy2( DeviceSize bufferOffset_ = {}, + uint32_t bufferRowLength_ = {}, + uint32_t bufferImageHeight_ = {}, + ImageSubresourceLayers imageSubresource_ = {}, + Offset3D imageOffset_ = {}, + Extent3D imageExtent_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , bufferOffset{ bufferOffset_ } + , bufferRowLength{ bufferRowLength_ } + , bufferImageHeight{ bufferImageHeight_ } + , imageSubresource{ imageSubresource_ } + , imageOffset{ imageOffset_ } + , imageExtent{ imageExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferImageCopy2( BufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferImageCopy2( VkBufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT : BufferImageCopy2( *reinterpret_cast( &rhs ) ) {} + + BufferImageCopy2 & operator=( BufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferImageCopy2 & operator=( VkBufferImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferOffset( DeviceSize bufferOffset_ ) & VULKAN_HPP_NOEXCEPT + { + bufferOffset = bufferOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 && setBufferOffset( DeviceSize bufferOffset_ ) && VULKAN_HPP_NOEXCEPT + { + bufferOffset = bufferOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferRowLength( uint32_t bufferRowLength_ ) & VULKAN_HPP_NOEXCEPT + { + bufferRowLength = bufferRowLength_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 && setBufferRowLength( uint32_t bufferRowLength_ ) && VULKAN_HPP_NOEXCEPT + { + bufferRowLength = bufferRowLength_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setBufferImageHeight( uint32_t bufferImageHeight_ ) & VULKAN_HPP_NOEXCEPT + { + bufferImageHeight = bufferImageHeight_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 && setBufferImageHeight( uint32_t bufferImageHeight_ ) && VULKAN_HPP_NOEXCEPT + { + bufferImageHeight = bufferImageHeight_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 && setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageOffset( Offset3D const & imageOffset_ ) & VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 && setImageOffset( Offset3D const & imageOffset_ ) && VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 & setImageExtent( Extent3D const & imageExtent_ ) & VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2 && setImageExtent( Extent3D const & imageExtent_ ) && VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferImageCopy2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferImageCopy2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferImageCopy2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferImageCopy2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, bufferOffset, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferImageCopy2 const & ) const = default; +#else + bool operator==( BufferImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferOffset == rhs.bufferOffset ) && ( bufferRowLength == rhs.bufferRowLength ) && + ( bufferImageHeight == rhs.bufferImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) && + ( imageExtent == rhs.imageExtent ); +# endif + } + + bool operator!=( BufferImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferImageCopy2; + void const * pNext = {}; + DeviceSize bufferOffset = {}; + uint32_t bufferRowLength = {}; + uint32_t bufferImageHeight = {}; + ImageSubresourceLayers imageSubresource = {}; + Offset3D imageOffset = {}; + Extent3D imageExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferImageCopy2; + }; +#endif + + template <> + struct CppType + { + using Type = BufferImageCopy2; + }; + + using BufferImageCopy2KHR = BufferImageCopy2; + + // wrapper struct for struct VkBufferMemoryBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferMemoryBarrier.html + struct BufferMemoryBarrier + { + using NativeType = VkBufferMemoryBarrier; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryBarrier; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( AccessFlags srcAccessMask_ = {}, + AccessFlags dstAccessMask_ = {}, + uint32_t srcQueueFamilyIndex_ = {}, + uint32_t dstQueueFamilyIndex_ = {}, + Buffer buffer_ = {}, + DeviceSize offset_ = {}, + DeviceSize size_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcAccessMask{ srcAccessMask_ } + , dstAccessMask{ dstAccessMask_ } + , srcQueueFamilyIndex{ srcQueueFamilyIndex_ } + , dstQueueFamilyIndex{ dstQueueFamilyIndex_ } + , buffer{ buffer_ } + , offset{ offset_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferMemoryBarrier( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT : BufferMemoryBarrier( *reinterpret_cast( &rhs ) ) + { + } + + BufferMemoryBarrier & operator=( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferMemoryBarrier & operator=( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSrcAccessMask( AccessFlags srcAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier && setSrcAccessMask( AccessFlags srcAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setDstAccessMask( AccessFlags dstAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier && setDstAccessMask( AccessFlags dstAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier && setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier && setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferMemoryBarrier &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferMemoryBarrier const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferMemoryBarrier *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcAccessMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, buffer, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferMemoryBarrier const & ) const = default; +#else + bool operator==( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ) && + ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( buffer == rhs.buffer ) && + ( offset == rhs.offset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( BufferMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferMemoryBarrier; + void const * pNext = {}; + AccessFlags srcAccessMask = {}; + AccessFlags dstAccessMask = {}; + uint32_t srcQueueFamilyIndex = {}; + uint32_t dstQueueFamilyIndex = {}; + Buffer buffer = {}; + DeviceSize offset = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferMemoryBarrier; + }; +#endif + + template <> + struct CppType + { + using Type = BufferMemoryBarrier; + }; + + // wrapper struct for struct VkBufferMemoryBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferMemoryBarrier2.html + struct BufferMemoryBarrier2 + { + using NativeType = VkBufferMemoryBarrier2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryBarrier2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2( PipelineStageFlags2 srcStageMask_ = {}, + AccessFlags2 srcAccessMask_ = {}, + PipelineStageFlags2 dstStageMask_ = {}, + AccessFlags2 dstAccessMask_ = {}, + uint32_t srcQueueFamilyIndex_ = {}, + uint32_t dstQueueFamilyIndex_ = {}, + Buffer buffer_ = {}, + DeviceSize offset_ = {}, + DeviceSize size_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcStageMask{ srcStageMask_ } + , srcAccessMask{ srcAccessMask_ } + , dstStageMask{ dstStageMask_ } + , dstAccessMask{ dstAccessMask_ } + , srcQueueFamilyIndex{ srcQueueFamilyIndex_ } + , dstQueueFamilyIndex{ dstQueueFamilyIndex_ } + , buffer{ buffer_ } + , offset{ offset_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2( BufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferMemoryBarrier2( VkBufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferMemoryBarrier2( *reinterpret_cast( &rhs ) ) + { + } + + BufferMemoryBarrier2 & operator=( BufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferMemoryBarrier2 & operator=( VkBufferMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcStageMask( PipelineStageFlags2 srcStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 && setSrcStageMask( PipelineStageFlags2 srcStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcAccessMask( AccessFlags2 srcAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 && setSrcAccessMask( AccessFlags2 srcAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstStageMask( PipelineStageFlags2 dstStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 && setDstStageMask( PipelineStageFlags2 dstStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstAccessMask( AccessFlags2 dstAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 && setDstAccessMask( AccessFlags2 dstAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 && setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 && setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2 && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferMemoryBarrier2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferMemoryBarrier2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, buffer, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferMemoryBarrier2 const & ) const = default; +#else + bool operator==( BufferMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) && + ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && + ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( BufferMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferMemoryBarrier2; + void const * pNext = {}; + PipelineStageFlags2 srcStageMask = {}; + AccessFlags2 srcAccessMask = {}; + PipelineStageFlags2 dstStageMask = {}; + AccessFlags2 dstAccessMask = {}; + uint32_t srcQueueFamilyIndex = {}; + uint32_t dstQueueFamilyIndex = {}; + Buffer buffer = {}; + DeviceSize offset = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferMemoryBarrier2; + }; +#endif + + template <> + struct CppType + { + using Type = BufferMemoryBarrier2; + }; + + using BufferMemoryBarrier2KHR = BufferMemoryBarrier2; + + // wrapper struct for struct VkBufferMemoryRequirementsInfo2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferMemoryRequirementsInfo2.html + struct BufferMemoryRequirementsInfo2 + { + using NativeType = VkBufferMemoryRequirementsInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryRequirementsInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( Buffer buffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , buffer{ buffer_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferMemoryRequirementsInfo2( *reinterpret_cast( &rhs ) ) + { + } + + BufferMemoryRequirementsInfo2 & operator=( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferMemoryRequirementsInfo2 & operator=( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferMemoryRequirementsInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferMemoryRequirementsInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferMemoryRequirementsInfo2 const & ) const = default; +#else + bool operator==( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( BufferMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferMemoryRequirementsInfo2; + void const * pNext = {}; + Buffer buffer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferMemoryRequirementsInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = BufferMemoryRequirementsInfo2; + }; + + using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2; + + // wrapper struct for struct VkBufferOpaqueCaptureAddressCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferOpaqueCaptureAddressCreateInfo.html + struct BufferOpaqueCaptureAddressCreateInfo + { + using NativeType = VkBufferOpaqueCaptureAddressCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferOpaqueCaptureAddressCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( uint64_t opaqueCaptureAddress_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , opaqueCaptureAddress{ opaqueCaptureAddress_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferOpaqueCaptureAddressCreateInfo( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferOpaqueCaptureAddressCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + BufferOpaqueCaptureAddressCreateInfo & operator=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferOpaqueCaptureAddressCreateInfo & operator=( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) & VULKAN_HPP_NOEXCEPT + { + opaqueCaptureAddress = opaqueCaptureAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo && setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) && VULKAN_HPP_NOEXCEPT + { + opaqueCaptureAddress = opaqueCaptureAddress_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferOpaqueCaptureAddressCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferOpaqueCaptureAddressCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferOpaqueCaptureAddressCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferOpaqueCaptureAddressCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, opaqueCaptureAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferOpaqueCaptureAddressCreateInfo const & ) const = default; +#else + bool operator==( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress ); +# endif + } + + bool operator!=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferOpaqueCaptureAddressCreateInfo; + void const * pNext = {}; + uint64_t opaqueCaptureAddress = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferOpaqueCaptureAddressCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BufferOpaqueCaptureAddressCreateInfo; + }; + + using BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo; + + // wrapper struct for struct VkBufferUsageFlags2CreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferUsageFlags2CreateInfo.html + struct BufferUsageFlags2CreateInfo + { + using NativeType = VkBufferUsageFlags2CreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferUsageFlags2CreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferUsageFlags2CreateInfo( BufferUsageFlags2 usage_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , usage{ usage_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferUsageFlags2CreateInfo( BufferUsageFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferUsageFlags2CreateInfo( VkBufferUsageFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferUsageFlags2CreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + BufferUsageFlags2CreateInfo & operator=( BufferUsageFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferUsageFlags2CreateInfo & operator=( VkBufferUsageFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferUsageFlags2CreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferUsageFlags2CreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferUsageFlags2CreateInfo & setUsage( BufferUsageFlags2 usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferUsageFlags2CreateInfo && setUsage( BufferUsageFlags2 usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferUsageFlags2CreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferUsageFlags2CreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferUsageFlags2CreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferUsageFlags2CreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, usage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferUsageFlags2CreateInfo const & ) const = default; +#else + bool operator==( BufferUsageFlags2CreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( usage == rhs.usage ); +# endif + } + + bool operator!=( BufferUsageFlags2CreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferUsageFlags2CreateInfo; + void const * pNext = {}; + BufferUsageFlags2 usage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferUsageFlags2CreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BufferUsageFlags2CreateInfo; + }; + + using BufferUsageFlags2CreateInfoKHR = BufferUsageFlags2CreateInfo; + + // wrapper struct for struct VkBufferViewCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkBufferViewCreateInfo.html + struct BufferViewCreateInfo + { + using NativeType = VkBufferViewCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferViewCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BufferViewCreateInfo( BufferViewCreateFlags flags_ = {}, + Buffer buffer_ = {}, + Format format_ = Format::eUndefined, + DeviceSize offset_ = {}, + DeviceSize range_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , buffer{ buffer_ } + , format{ format_ } + , offset{ offset_ } + , range{ range_ } + { + } + + VULKAN_HPP_CONSTEXPR BufferViewCreateInfo( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : BufferViewCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + BufferViewCreateInfo & operator=( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BufferViewCreateInfo & operator=( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setFlags( BufferViewCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo && setFlags( BufferViewCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & setRange( DeviceSize range_ ) & VULKAN_HPP_NOEXCEPT + { + range = range_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo && setRange( DeviceSize range_ ) && VULKAN_HPP_NOEXCEPT + { + range = range_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBufferViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferViewCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBufferViewCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBufferViewCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, buffer, format, offset, range ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BufferViewCreateInfo const & ) const = default; +#else + bool operator==( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( buffer == rhs.buffer ) && ( format == rhs.format ) && + ( offset == rhs.offset ) && ( range == rhs.range ); +# endif + } + + bool operator!=( BufferViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBufferViewCreateInfo; + void const * pNext = {}; + BufferViewCreateFlags flags = {}; + Buffer buffer = {}; + Format format = Format::eUndefined; + DeviceSize offset = {}; + DeviceSize range = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BufferViewCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = BufferViewCreateInfo; + }; + + // wrapper struct for struct VkStridedDeviceAddressNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkStridedDeviceAddressNV.html + struct StridedDeviceAddressNV + { + using NativeType = VkStridedDeviceAddressNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR StridedDeviceAddressNV( DeviceAddress startAddress_ = {}, DeviceSize strideInBytes_ = {} ) VULKAN_HPP_NOEXCEPT + : startAddress{ startAddress_ } + , strideInBytes{ strideInBytes_ } + { + } + + VULKAN_HPP_CONSTEXPR StridedDeviceAddressNV( StridedDeviceAddressNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + StridedDeviceAddressNV( VkStridedDeviceAddressNV const & rhs ) VULKAN_HPP_NOEXCEPT + : StridedDeviceAddressNV( *reinterpret_cast( &rhs ) ) + { + } + + StridedDeviceAddressNV & operator=( StridedDeviceAddressNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + StridedDeviceAddressNV & operator=( VkStridedDeviceAddressNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressNV & setStartAddress( DeviceAddress startAddress_ ) & VULKAN_HPP_NOEXCEPT + { + startAddress = startAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressNV && setStartAddress( DeviceAddress startAddress_ ) && VULKAN_HPP_NOEXCEPT + { + startAddress = startAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressNV & setStrideInBytes( DeviceSize strideInBytes_ ) & VULKAN_HPP_NOEXCEPT + { + strideInBytes = strideInBytes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressNV && setStrideInBytes( DeviceSize strideInBytes_ ) && VULKAN_HPP_NOEXCEPT + { + strideInBytes = strideInBytes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkStridedDeviceAddressNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkStridedDeviceAddressNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkStridedDeviceAddressNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkStridedDeviceAddressNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( startAddress, strideInBytes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( StridedDeviceAddressNV const & ) const = default; +#else + bool operator==( StridedDeviceAddressNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( startAddress == rhs.startAddress ) && ( strideInBytes == rhs.strideInBytes ); +# endif + } + + bool operator!=( StridedDeviceAddressNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress startAddress = {}; + DeviceSize strideInBytes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = StridedDeviceAddressNV; + }; +#endif + + // wrapper struct for struct VkBuildPartitionedAccelerationStructureIndirectCommandNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureIndirectCommandNV.html + struct BuildPartitionedAccelerationStructureIndirectCommandNV + { + using NativeType = VkBuildPartitionedAccelerationStructureIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BuildPartitionedAccelerationStructureIndirectCommandNV( + PartitionedAccelerationStructureOpTypeNV opType_ = PartitionedAccelerationStructureOpTypeNV::eWriteInstance, + uint32_t argCount_ = {}, + StridedDeviceAddressNV argData_ = {} ) VULKAN_HPP_NOEXCEPT + : opType{ opType_ } + , argCount{ argCount_ } + , argData{ argData_ } + { + } + + VULKAN_HPP_CONSTEXPR BuildPartitionedAccelerationStructureIndirectCommandNV( BuildPartitionedAccelerationStructureIndirectCommandNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + BuildPartitionedAccelerationStructureIndirectCommandNV( VkBuildPartitionedAccelerationStructureIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BuildPartitionedAccelerationStructureIndirectCommandNV( *reinterpret_cast( &rhs ) ) + { + } + + BuildPartitionedAccelerationStructureIndirectCommandNV & + operator=( BuildPartitionedAccelerationStructureIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BuildPartitionedAccelerationStructureIndirectCommandNV & + operator=( VkBuildPartitionedAccelerationStructureIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureIndirectCommandNV & setOpType( PartitionedAccelerationStructureOpTypeNV opType_ ) & + VULKAN_HPP_NOEXCEPT + { + opType = opType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureIndirectCommandNV && setOpType( PartitionedAccelerationStructureOpTypeNV opType_ ) && + VULKAN_HPP_NOEXCEPT + { + opType = opType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureIndirectCommandNV & setArgCount( uint32_t argCount_ ) & VULKAN_HPP_NOEXCEPT + { + argCount = argCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureIndirectCommandNV && setArgCount( uint32_t argCount_ ) && VULKAN_HPP_NOEXCEPT + { + argCount = argCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureIndirectCommandNV & setArgData( StridedDeviceAddressNV const & argData_ ) & VULKAN_HPP_NOEXCEPT + { + argData = argData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureIndirectCommandNV && setArgData( StridedDeviceAddressNV const & argData_ ) && + VULKAN_HPP_NOEXCEPT + { + argData = argData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBuildPartitionedAccelerationStructureIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBuildPartitionedAccelerationStructureIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBuildPartitionedAccelerationStructureIndirectCommandNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBuildPartitionedAccelerationStructureIndirectCommandNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( opType, argCount, argData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BuildPartitionedAccelerationStructureIndirectCommandNV const & ) const = default; +#else + bool operator==( BuildPartitionedAccelerationStructureIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( opType == rhs.opType ) && ( argCount == rhs.argCount ) && ( argData == rhs.argData ); +# endif + } + + bool operator!=( BuildPartitionedAccelerationStructureIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + PartitionedAccelerationStructureOpTypeNV opType = PartitionedAccelerationStructureOpTypeNV::eWriteInstance; + uint32_t argCount = {}; + StridedDeviceAddressNV argData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BuildPartitionedAccelerationStructureIndirectCommandNV; + }; +#endif + + // wrapper struct for struct VkPartitionedAccelerationStructureInstancesInputNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureInstancesInputNV.html + struct PartitionedAccelerationStructureInstancesInputNV + { + using NativeType = VkPartitionedAccelerationStructureInstancesInputNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePartitionedAccelerationStructureInstancesInputNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PartitionedAccelerationStructureInstancesInputNV( BuildAccelerationStructureFlagsKHR flags_ = {}, + uint32_t instanceCount_ = {}, + uint32_t maxInstancePerPartitionCount_ = {}, + uint32_t partitionCount_ = {}, + uint32_t maxInstanceInGlobalPartitionCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , instanceCount{ instanceCount_ } + , maxInstancePerPartitionCount{ maxInstancePerPartitionCount_ } + , partitionCount{ partitionCount_ } + , maxInstanceInGlobalPartitionCount{ maxInstanceInGlobalPartitionCount_ } + { + } + + VULKAN_HPP_CONSTEXPR + PartitionedAccelerationStructureInstancesInputNV( PartitionedAccelerationStructureInstancesInputNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PartitionedAccelerationStructureInstancesInputNV( VkPartitionedAccelerationStructureInstancesInputNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PartitionedAccelerationStructureInstancesInputNV( *reinterpret_cast( &rhs ) ) + { + } + + PartitionedAccelerationStructureInstancesInputNV & operator=( PartitionedAccelerationStructureInstancesInputNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PartitionedAccelerationStructureInstancesInputNV & operator=( VkPartitionedAccelerationStructureInstancesInputNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV & setFlags( BuildAccelerationStructureFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV && setFlags( BuildAccelerationStructureFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV & setInstanceCount( uint32_t instanceCount_ ) & VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV && setInstanceCount( uint32_t instanceCount_ ) && VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV & setMaxInstancePerPartitionCount( uint32_t maxInstancePerPartitionCount_ ) & + VULKAN_HPP_NOEXCEPT + { + maxInstancePerPartitionCount = maxInstancePerPartitionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV && setMaxInstancePerPartitionCount( uint32_t maxInstancePerPartitionCount_ ) && + VULKAN_HPP_NOEXCEPT + { + maxInstancePerPartitionCount = maxInstancePerPartitionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV & setPartitionCount( uint32_t partitionCount_ ) & VULKAN_HPP_NOEXCEPT + { + partitionCount = partitionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV && setPartitionCount( uint32_t partitionCount_ ) && VULKAN_HPP_NOEXCEPT + { + partitionCount = partitionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV & + setMaxInstanceInGlobalPartitionCount( uint32_t maxInstanceInGlobalPartitionCount_ ) & + VULKAN_HPP_NOEXCEPT + { + maxInstanceInGlobalPartitionCount = maxInstanceInGlobalPartitionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureInstancesInputNV && + setMaxInstanceInGlobalPartitionCount( uint32_t maxInstanceInGlobalPartitionCount_ ) && + VULKAN_HPP_NOEXCEPT + { + maxInstanceInGlobalPartitionCount = maxInstanceInGlobalPartitionCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPartitionedAccelerationStructureInstancesInputNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureInstancesInputNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureInstancesInputNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureInstancesInputNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, instanceCount, maxInstancePerPartitionCount, partitionCount, maxInstanceInGlobalPartitionCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PartitionedAccelerationStructureInstancesInputNV const & ) const = default; +#else + bool operator==( PartitionedAccelerationStructureInstancesInputNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( instanceCount == rhs.instanceCount ) && + ( maxInstancePerPartitionCount == rhs.maxInstancePerPartitionCount ) && ( partitionCount == rhs.partitionCount ) && + ( maxInstanceInGlobalPartitionCount == rhs.maxInstanceInGlobalPartitionCount ); +# endif + } + + bool operator!=( PartitionedAccelerationStructureInstancesInputNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePartitionedAccelerationStructureInstancesInputNV; + void * pNext = {}; + BuildAccelerationStructureFlagsKHR flags = {}; + uint32_t instanceCount = {}; + uint32_t maxInstancePerPartitionCount = {}; + uint32_t partitionCount = {}; + uint32_t maxInstanceInGlobalPartitionCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PartitionedAccelerationStructureInstancesInputNV; + }; +#endif + + template <> + struct CppType + { + using Type = PartitionedAccelerationStructureInstancesInputNV; + }; + + // wrapper struct for struct VkBuildPartitionedAccelerationStructureInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkBuildPartitionedAccelerationStructureInfoNV.html + struct BuildPartitionedAccelerationStructureInfoNV + { + using NativeType = VkBuildPartitionedAccelerationStructureInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBuildPartitionedAccelerationStructureInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR BuildPartitionedAccelerationStructureInfoNV( PartitionedAccelerationStructureInstancesInputNV input_ = {}, + DeviceAddress srcAccelerationStructureData_ = {}, + DeviceAddress dstAccelerationStructureData_ = {}, + DeviceAddress scratchData_ = {}, + DeviceAddress srcInfos_ = {}, + DeviceAddress srcInfosCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , input{ input_ } + , srcAccelerationStructureData{ srcAccelerationStructureData_ } + , dstAccelerationStructureData{ dstAccelerationStructureData_ } + , scratchData{ scratchData_ } + , srcInfos{ srcInfos_ } + , srcInfosCount{ srcInfosCount_ } + { + } + + VULKAN_HPP_CONSTEXPR BuildPartitionedAccelerationStructureInfoNV( BuildPartitionedAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + BuildPartitionedAccelerationStructureInfoNV( VkBuildPartitionedAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : BuildPartitionedAccelerationStructureInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + BuildPartitionedAccelerationStructureInfoNV & operator=( BuildPartitionedAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + BuildPartitionedAccelerationStructureInfoNV & operator=( VkBuildPartitionedAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV & setInput( PartitionedAccelerationStructureInstancesInputNV const & input_ ) & + VULKAN_HPP_NOEXCEPT + { + input = input_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV && setInput( PartitionedAccelerationStructureInstancesInputNV const & input_ ) && + VULKAN_HPP_NOEXCEPT + { + input = input_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV & setSrcAccelerationStructureData( DeviceAddress srcAccelerationStructureData_ ) & + VULKAN_HPP_NOEXCEPT + { + srcAccelerationStructureData = srcAccelerationStructureData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV && setSrcAccelerationStructureData( DeviceAddress srcAccelerationStructureData_ ) && + VULKAN_HPP_NOEXCEPT + { + srcAccelerationStructureData = srcAccelerationStructureData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV & setDstAccelerationStructureData( DeviceAddress dstAccelerationStructureData_ ) & + VULKAN_HPP_NOEXCEPT + { + dstAccelerationStructureData = dstAccelerationStructureData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV && setDstAccelerationStructureData( DeviceAddress dstAccelerationStructureData_ ) && + VULKAN_HPP_NOEXCEPT + { + dstAccelerationStructureData = dstAccelerationStructureData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV & setScratchData( DeviceAddress scratchData_ ) & VULKAN_HPP_NOEXCEPT + { + scratchData = scratchData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV && setScratchData( DeviceAddress scratchData_ ) && VULKAN_HPP_NOEXCEPT + { + scratchData = scratchData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV & setSrcInfos( DeviceAddress srcInfos_ ) & VULKAN_HPP_NOEXCEPT + { + srcInfos = srcInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV && setSrcInfos( DeviceAddress srcInfos_ ) && VULKAN_HPP_NOEXCEPT + { + srcInfos = srcInfos_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV & setSrcInfosCount( DeviceAddress srcInfosCount_ ) & VULKAN_HPP_NOEXCEPT + { + srcInfosCount = srcInfosCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 BuildPartitionedAccelerationStructureInfoNV && setSrcInfosCount( DeviceAddress srcInfosCount_ ) && VULKAN_HPP_NOEXCEPT + { + srcInfosCount = srcInfosCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkBuildPartitionedAccelerationStructureInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBuildPartitionedAccelerationStructureInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkBuildPartitionedAccelerationStructureInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkBuildPartitionedAccelerationStructureInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, input, srcAccelerationStructureData, dstAccelerationStructureData, scratchData, srcInfos, srcInfosCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( BuildPartitionedAccelerationStructureInfoNV const & ) const = default; +#else + bool operator==( BuildPartitionedAccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( input == rhs.input ) && + ( srcAccelerationStructureData == rhs.srcAccelerationStructureData ) && ( dstAccelerationStructureData == rhs.dstAccelerationStructureData ) && + ( scratchData == rhs.scratchData ) && ( srcInfos == rhs.srcInfos ) && ( srcInfosCount == rhs.srcInfosCount ); +# endif + } + + bool operator!=( BuildPartitionedAccelerationStructureInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eBuildPartitionedAccelerationStructureInfoNV; + void * pNext = {}; + PartitionedAccelerationStructureInstancesInputNV input = {}; + DeviceAddress srcAccelerationStructureData = {}; + DeviceAddress dstAccelerationStructureData = {}; + DeviceAddress scratchData = {}; + DeviceAddress srcInfos = {}; + DeviceAddress srcInfosCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = BuildPartitionedAccelerationStructureInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = BuildPartitionedAccelerationStructureInfoNV; + }; + + // wrapper struct for struct VkCalibratedTimestampInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCalibratedTimestampInfoKHR.html + struct CalibratedTimestampInfoKHR + { + using NativeType = VkCalibratedTimestampInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCalibratedTimestampInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoKHR( TimeDomainKHR timeDomain_ = TimeDomainKHR::eDevice, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , timeDomain{ timeDomain_ } + { + } + + VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoKHR( CalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CalibratedTimestampInfoKHR( VkCalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CalibratedTimestampInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + CalibratedTimestampInfoKHR & operator=( CalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CalibratedTimestampInfoKHR & operator=( VkCalibratedTimestampInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoKHR & setTimeDomain( TimeDomainKHR timeDomain_ ) & VULKAN_HPP_NOEXCEPT + { + timeDomain = timeDomain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoKHR && setTimeDomain( TimeDomainKHR timeDomain_ ) && VULKAN_HPP_NOEXCEPT + { + timeDomain = timeDomain_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCalibratedTimestampInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCalibratedTimestampInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCalibratedTimestampInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCalibratedTimestampInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, timeDomain ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CalibratedTimestampInfoKHR const & ) const = default; +#else + bool operator==( CalibratedTimestampInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timeDomain == rhs.timeDomain ); +# endif + } + + bool operator!=( CalibratedTimestampInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCalibratedTimestampInfoKHR; + void const * pNext = {}; + TimeDomainKHR timeDomain = TimeDomainKHR::eDevice; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CalibratedTimestampInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = CalibratedTimestampInfoKHR; + }; + + using CalibratedTimestampInfoEXT = CalibratedTimestampInfoKHR; + + // wrapper struct for struct VkCheckpointData2NV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCheckpointData2NV.html + struct CheckpointData2NV + { + using NativeType = VkCheckpointData2NV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCheckpointData2NV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CheckpointData2NV( PipelineStageFlags2 stage_ = {}, void * pCheckpointMarker_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stage{ stage_ } + , pCheckpointMarker{ pCheckpointMarker_ } + { + } + + VULKAN_HPP_CONSTEXPR CheckpointData2NV( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CheckpointData2NV( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT : CheckpointData2NV( *reinterpret_cast( &rhs ) ) {} + + CheckpointData2NV & operator=( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CheckpointData2NV & operator=( VkCheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkCheckpointData2NV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCheckpointData2NV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCheckpointData2NV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCheckpointData2NV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stage, pCheckpointMarker ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CheckpointData2NV const & ) const = default; +#else + bool operator==( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && ( pCheckpointMarker == rhs.pCheckpointMarker ); +# endif + } + + bool operator!=( CheckpointData2NV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCheckpointData2NV; + void * pNext = {}; + PipelineStageFlags2 stage = {}; + void * pCheckpointMarker = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CheckpointData2NV; + }; +#endif + + template <> + struct CppType + { + using Type = CheckpointData2NV; + }; + + // wrapper struct for struct VkCheckpointDataNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCheckpointDataNV.html + struct CheckpointDataNV + { + using NativeType = VkCheckpointDataNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCheckpointDataNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CheckpointDataNV( PipelineStageFlagBits stage_ = PipelineStageFlagBits::eTopOfPipe, + void * pCheckpointMarker_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stage{ stage_ } + , pCheckpointMarker{ pCheckpointMarker_ } + { + } + + VULKAN_HPP_CONSTEXPR CheckpointDataNV( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CheckpointDataNV( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT : CheckpointDataNV( *reinterpret_cast( &rhs ) ) {} + + CheckpointDataNV & operator=( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CheckpointDataNV & operator=( VkCheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkCheckpointDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCheckpointDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCheckpointDataNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCheckpointDataNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stage, pCheckpointMarker ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CheckpointDataNV const & ) const = default; +#else + bool operator==( CheckpointDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && ( pCheckpointMarker == rhs.pCheckpointMarker ); +# endif + } + + bool operator!=( CheckpointDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCheckpointDataNV; + void * pNext = {}; + PipelineStageFlagBits stage = PipelineStageFlagBits::eTopOfPipe; + void * pCheckpointMarker = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CheckpointDataNV; + }; +#endif + + template <> + struct CppType + { + using Type = CheckpointDataNV; + }; + + union ClearColorValue + { + using NativeType = VkClearColorValue; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array & float32_ = {} ) : float32( float32_ ) {} + + VULKAN_HPP_CONSTEXPR ClearColorValue( float float32_0, float float32_1, float float32_2, float float32_3 ) + : float32{ { { float32_0, float32_1, float32_2, float32_3 } } } + { + } + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array & int32_ ) : int32( int32_ ) {} + + VULKAN_HPP_CONSTEXPR ClearColorValue( int32_t int32_0, int32_t int32_1, int32_t int32_2, int32_t int32_3 ) + : int32{ { { int32_0, int32_1, int32_2, int32_3 } } } + { + } + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue( const std::array & uint32_ ) : uint32( uint32_ ) {} + + VULKAN_HPP_CONSTEXPR ClearColorValue( uint32_t uint32_0, uint32_t uint32_1, uint32_t uint32_2, uint32_t uint32_3 ) + : uint32{ { { uint32_0, uint32_1, uint32_2, uint32_3 } } } + { + } +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setFloat32( std::array float32_ ) & VULKAN_HPP_NOEXCEPT + { + float32 = float32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue && setFloat32( std::array float32_ ) && VULKAN_HPP_NOEXCEPT + { + float32 = float32_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setInt32( std::array int32_ ) & VULKAN_HPP_NOEXCEPT + { + int32 = int32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue && setInt32( std::array int32_ ) && VULKAN_HPP_NOEXCEPT + { + int32 = int32_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue & setUint32( std::array uint32_ ) & VULKAN_HPP_NOEXCEPT + { + uint32 = uint32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearColorValue && setUint32( std::array uint32_ ) && VULKAN_HPP_NOEXCEPT + { + uint32 = uint32_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClearColorValue const &() const + { + return *reinterpret_cast( this ); + } + + operator VkClearColorValue &() + { + return *reinterpret_cast( this ); + } + + ArrayWrapper1D float32; + ArrayWrapper1D int32; + ArrayWrapper1D uint32; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClearColorValue; + }; +#endif + + // wrapper struct for struct VkClearDepthStencilValue, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkClearDepthStencilValue.html + struct ClearDepthStencilValue + { + using NativeType = VkClearDepthStencilValue; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( float depth_ = {}, uint32_t stencil_ = {} ) VULKAN_HPP_NOEXCEPT + : depth{ depth_ } + , stencil{ stencil_ } + { + } + + VULKAN_HPP_CONSTEXPR ClearDepthStencilValue( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClearDepthStencilValue( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT + : ClearDepthStencilValue( *reinterpret_cast( &rhs ) ) + { + } + + ClearDepthStencilValue & operator=( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClearDepthStencilValue & operator=( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setDepth( float depth_ ) & VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue && setDepth( float depth_ ) && VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & setStencil( uint32_t stencil_ ) & VULKAN_HPP_NOEXCEPT + { + stencil = stencil_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue && setStencil( uint32_t stencil_ ) && VULKAN_HPP_NOEXCEPT + { + stencil = stencil_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClearDepthStencilValue const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClearDepthStencilValue &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClearDepthStencilValue const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClearDepthStencilValue *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( depth, stencil ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClearDepthStencilValue const & ) const = default; +#else + bool operator==( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( depth == rhs.depth ) && ( stencil == rhs.stencil ); +# endif + } + + bool operator!=( ClearDepthStencilValue const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float depth = {}; + uint32_t stencil = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClearDepthStencilValue; + }; +#endif + + union ClearValue + { + using NativeType = VkClearValue; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 ClearValue( ClearColorValue color_ = {} ) : color( color_ ) {} + + VULKAN_HPP_CONSTEXPR_14 ClearValue( ClearDepthStencilValue depthStencil_ ) : depthStencil( depthStencil_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClearValue & setColor( ClearColorValue const & color_ ) & VULKAN_HPP_NOEXCEPT + { + color = color_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearValue && setColor( ClearColorValue const & color_ ) && VULKAN_HPP_NOEXCEPT + { + color = color_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClearValue & setDepthStencil( ClearDepthStencilValue const & depthStencil_ ) & VULKAN_HPP_NOEXCEPT + { + depthStencil = depthStencil_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearValue && setDepthStencil( ClearDepthStencilValue const & depthStencil_ ) && VULKAN_HPP_NOEXCEPT + { + depthStencil = depthStencil_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClearValue const &() const + { + return *reinterpret_cast( this ); + } + + operator VkClearValue &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + ClearColorValue color; + ClearDepthStencilValue depthStencil; +#else + VkClearColorValue color; + VkClearDepthStencilValue depthStencil; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClearValue; + }; +#endif + + // wrapper struct for struct VkClearAttachment, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkClearAttachment.html + struct ClearAttachment + { + using NativeType = VkClearAttachment; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + ClearAttachment( ImageAspectFlags aspectMask_ = {}, uint32_t colorAttachment_ = {}, ClearValue clearValue_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectMask{ aspectMask_ } + , colorAttachment{ colorAttachment_ } + , clearValue{ clearValue_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ClearAttachment( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClearAttachment( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT : ClearAttachment( *reinterpret_cast( &rhs ) ) {} + + ClearAttachment & operator=( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClearAttachment & operator=( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setAspectMask( ImageAspectFlags aspectMask_ ) & VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearAttachment && setAspectMask( ImageAspectFlags aspectMask_ ) && VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setColorAttachment( uint32_t colorAttachment_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachment = colorAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearAttachment && setColorAttachment( uint32_t colorAttachment_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachment = colorAttachment_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClearAttachment & setClearValue( ClearValue const & clearValue_ ) & VULKAN_HPP_NOEXCEPT + { + clearValue = clearValue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearAttachment && setClearValue( ClearValue const & clearValue_ ) && VULKAN_HPP_NOEXCEPT + { + clearValue = clearValue_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClearAttachment const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClearAttachment &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClearAttachment const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClearAttachment *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( aspectMask, colorAttachment, clearValue ); + } +#endif + + public: + ImageAspectFlags aspectMask = {}; + uint32_t colorAttachment = {}; + ClearValue clearValue = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClearAttachment; + }; +#endif + + // wrapper struct for struct VkClearRect, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkClearRect.html + struct ClearRect + { + using NativeType = VkClearRect; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClearRect( Rect2D rect_ = {}, uint32_t baseArrayLayer_ = {}, uint32_t layerCount_ = {} ) VULKAN_HPP_NOEXCEPT + : rect{ rect_ } + , baseArrayLayer{ baseArrayLayer_ } + , layerCount{ layerCount_ } + { + } + + VULKAN_HPP_CONSTEXPR ClearRect( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClearRect( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT : ClearRect( *reinterpret_cast( &rhs ) ) {} + + ClearRect & operator=( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClearRect & operator=( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClearRect & setRect( Rect2D const & rect_ ) & VULKAN_HPP_NOEXCEPT + { + rect = rect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearRect && setRect( Rect2D const & rect_ ) && VULKAN_HPP_NOEXCEPT + { + rect = rect_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClearRect & setBaseArrayLayer( uint32_t baseArrayLayer_ ) & VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearRect && setBaseArrayLayer( uint32_t baseArrayLayer_ ) && VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClearRect & setLayerCount( uint32_t layerCount_ ) & VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClearRect && setLayerCount( uint32_t layerCount_ ) && VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClearRect const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClearRect &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClearRect const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClearRect *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( rect, baseArrayLayer, layerCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClearRect const & ) const = default; +#else + bool operator==( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( rect == rhs.rect ) && ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount ); +# endif + } + + bool operator!=( ClearRect const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Rect2D rect = {}; + uint32_t baseArrayLayer = {}; + uint32_t layerCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClearRect; + }; +#endif + + // wrapper struct for struct VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV.html + struct ClusterAccelerationStructureBuildClustersBottomLevelInfoNV + { + using NativeType = VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureBuildClustersBottomLevelInfoNV( uint32_t clusterReferencesCount_ = {}, + uint32_t clusterReferencesStride_ = {}, + DeviceAddress clusterReferences_ = {} ) VULKAN_HPP_NOEXCEPT + : clusterReferencesCount{ clusterReferencesCount_ } + , clusterReferencesStride{ clusterReferencesStride_ } + , clusterReferences{ clusterReferences_ } + { + } + + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureBuildClustersBottomLevelInfoNV( ClusterAccelerationStructureBuildClustersBottomLevelInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureBuildClustersBottomLevelInfoNV( VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureBuildClustersBottomLevelInfoNV( + *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureBuildClustersBottomLevelInfoNV & + operator=( ClusterAccelerationStructureBuildClustersBottomLevelInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureBuildClustersBottomLevelInfoNV & + operator=( VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildClustersBottomLevelInfoNV & setClusterReferencesCount( uint32_t clusterReferencesCount_ ) & + VULKAN_HPP_NOEXCEPT + { + clusterReferencesCount = clusterReferencesCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildClustersBottomLevelInfoNV && setClusterReferencesCount( uint32_t clusterReferencesCount_ ) && + VULKAN_HPP_NOEXCEPT + { + clusterReferencesCount = clusterReferencesCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildClustersBottomLevelInfoNV & setClusterReferencesStride( uint32_t clusterReferencesStride_ ) & + VULKAN_HPP_NOEXCEPT + { + clusterReferencesStride = clusterReferencesStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildClustersBottomLevelInfoNV && setClusterReferencesStride( uint32_t clusterReferencesStride_ ) && + VULKAN_HPP_NOEXCEPT + { + clusterReferencesStride = clusterReferencesStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildClustersBottomLevelInfoNV & setClusterReferences( DeviceAddress clusterReferences_ ) & + VULKAN_HPP_NOEXCEPT + { + clusterReferences = clusterReferences_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildClustersBottomLevelInfoNV && setClusterReferences( DeviceAddress clusterReferences_ ) && + VULKAN_HPP_NOEXCEPT + { + clusterReferences = clusterReferences_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureBuildClustersBottomLevelInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( clusterReferencesCount, clusterReferencesStride, clusterReferences ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClusterAccelerationStructureBuildClustersBottomLevelInfoNV const & ) const = default; +#else + bool operator==( ClusterAccelerationStructureBuildClustersBottomLevelInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( clusterReferencesCount == rhs.clusterReferencesCount ) && ( clusterReferencesStride == rhs.clusterReferencesStride ) && + ( clusterReferences == rhs.clusterReferences ); +# endif + } + + bool operator!=( ClusterAccelerationStructureBuildClustersBottomLevelInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t clusterReferencesCount = {}; + uint32_t clusterReferencesStride = {}; + DeviceAddress clusterReferences = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureBuildClustersBottomLevelInfoNV; + }; +#endif + + // wrapper struct for struct VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV.html + struct ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV + { + using NativeType = VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV( uint32_t geometryIndex_ = {}, + uint32_t reserved_ = {}, + uint32_t geometryFlags_ = {} ) VULKAN_HPP_NOEXCEPT + : geometryIndex{ geometryIndex_ } + , reserved{ reserved_ } + , geometryFlags{ geometryFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV( ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV( VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV( + *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV & + operator=( ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV & + operator=( VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV & setGeometryIndex( uint32_t geometryIndex_ ) & VULKAN_HPP_NOEXCEPT + { + geometryIndex = geometryIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV && setGeometryIndex( uint32_t geometryIndex_ ) && VULKAN_HPP_NOEXCEPT + { + geometryIndex = geometryIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV & setReserved( uint32_t reserved_ ) & VULKAN_HPP_NOEXCEPT + { + reserved = reserved_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV && setReserved( uint32_t reserved_ ) && VULKAN_HPP_NOEXCEPT + { + reserved = reserved_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV & setGeometryFlags( uint32_t geometryFlags_ ) & VULKAN_HPP_NOEXCEPT + { + geometryFlags = geometryFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV && setGeometryFlags( uint32_t geometryFlags_ ) && VULKAN_HPP_NOEXCEPT + { + geometryFlags = geometryFlags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( geometryIndex, reserved, geometryFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & ) const = default; +#else + bool operator==( ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( geometryIndex == rhs.geometryIndex ) && ( reserved == rhs.reserved ) && ( geometryFlags == rhs.geometryFlags ); +# endif + } + + bool operator!=( ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t geometryIndex : 24; + uint32_t reserved : 5; + uint32_t geometryFlags : 3; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV; + }; +#endif + + // wrapper struct for struct VkClusterAccelerationStructureBuildTriangleClusterInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterInfoNV.html + struct ClusterAccelerationStructureBuildTriangleClusterInfoNV + { + using NativeType = VkClusterAccelerationStructureBuildTriangleClusterInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureBuildTriangleClusterInfoNV( + uint32_t clusterID_ = {}, + ClusterAccelerationStructureClusterFlagsNV clusterFlags_ = {}, + uint32_t triangleCount_ = {}, + uint32_t vertexCount_ = {}, + uint32_t positionTruncateBitCount_ = {}, + uint32_t indexType_ = {}, + uint32_t opacityMicromapIndexType_ = {}, + ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV baseGeometryIndexAndGeometryFlags_ = {}, + uint16_t indexBufferStride_ = {}, + uint16_t vertexBufferStride_ = {}, + uint16_t geometryIndexAndFlagsBufferStride_ = {}, + uint16_t opacityMicromapIndexBufferStride_ = {}, + DeviceAddress indexBuffer_ = {}, + DeviceAddress vertexBuffer_ = {}, + DeviceAddress geometryIndexAndFlagsBuffer_ = {}, + DeviceAddress opacityMicromapArray_ = {}, + DeviceAddress opacityMicromapIndexBuffer_ = {} ) VULKAN_HPP_NOEXCEPT + : clusterID{ clusterID_ } + , clusterFlags{ clusterFlags_ } + , triangleCount{ triangleCount_ } + , vertexCount{ vertexCount_ } + , positionTruncateBitCount{ positionTruncateBitCount_ } + , indexType{ indexType_ } + , opacityMicromapIndexType{ opacityMicromapIndexType_ } + , baseGeometryIndexAndGeometryFlags{ baseGeometryIndexAndGeometryFlags_ } + , indexBufferStride{ indexBufferStride_ } + , vertexBufferStride{ vertexBufferStride_ } + , geometryIndexAndFlagsBufferStride{ geometryIndexAndFlagsBufferStride_ } + , opacityMicromapIndexBufferStride{ opacityMicromapIndexBufferStride_ } + , indexBuffer{ indexBuffer_ } + , vertexBuffer{ vertexBuffer_ } + , geometryIndexAndFlagsBuffer{ geometryIndexAndFlagsBuffer_ } + , opacityMicromapArray{ opacityMicromapArray_ } + , opacityMicromapIndexBuffer{ opacityMicromapIndexBuffer_ } + { + } + + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureBuildTriangleClusterInfoNV( ClusterAccelerationStructureBuildTriangleClusterInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureBuildTriangleClusterInfoNV( VkClusterAccelerationStructureBuildTriangleClusterInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureBuildTriangleClusterInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureBuildTriangleClusterInfoNV & + operator=( ClusterAccelerationStructureBuildTriangleClusterInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureBuildTriangleClusterInfoNV & + operator=( VkClusterAccelerationStructureBuildTriangleClusterInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setClusterID( uint32_t clusterID_ ) & VULKAN_HPP_NOEXCEPT + { + clusterID = clusterID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setClusterID( uint32_t clusterID_ ) && VULKAN_HPP_NOEXCEPT + { + clusterID = clusterID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & + setClusterFlags( ClusterAccelerationStructureClusterFlagsNV clusterFlags_ ) & + VULKAN_HPP_NOEXCEPT + { + clusterFlags = clusterFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && + setClusterFlags( ClusterAccelerationStructureClusterFlagsNV clusterFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + clusterFlags = clusterFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setTriangleCount( uint32_t triangleCount_ ) & VULKAN_HPP_NOEXCEPT + { + triangleCount = triangleCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setTriangleCount( uint32_t triangleCount_ ) && VULKAN_HPP_NOEXCEPT + { + triangleCount = triangleCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setVertexCount( uint32_t vertexCount_ ) & VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setVertexCount( uint32_t vertexCount_ ) && VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setPositionTruncateBitCount( uint32_t positionTruncateBitCount_ ) & + VULKAN_HPP_NOEXCEPT + { + positionTruncateBitCount = positionTruncateBitCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setPositionTruncateBitCount( uint32_t positionTruncateBitCount_ ) && + VULKAN_HPP_NOEXCEPT + { + positionTruncateBitCount = positionTruncateBitCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setIndexType( uint32_t indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setIndexType( uint32_t indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setOpacityMicromapIndexType( uint32_t opacityMicromapIndexType_ ) & + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexType = opacityMicromapIndexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setOpacityMicromapIndexType( uint32_t opacityMicromapIndexType_ ) && + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexType = opacityMicromapIndexType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & + setBaseGeometryIndexAndGeometryFlags( ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & baseGeometryIndexAndGeometryFlags_ ) & + VULKAN_HPP_NOEXCEPT + { + baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && + setBaseGeometryIndexAndGeometryFlags( ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & baseGeometryIndexAndGeometryFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setIndexBufferStride( uint16_t indexBufferStride_ ) & VULKAN_HPP_NOEXCEPT + { + indexBufferStride = indexBufferStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setIndexBufferStride( uint16_t indexBufferStride_ ) && VULKAN_HPP_NOEXCEPT + { + indexBufferStride = indexBufferStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setVertexBufferStride( uint16_t vertexBufferStride_ ) & VULKAN_HPP_NOEXCEPT + { + vertexBufferStride = vertexBufferStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setVertexBufferStride( uint16_t vertexBufferStride_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexBufferStride = vertexBufferStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & + setGeometryIndexAndFlagsBufferStride( uint16_t geometryIndexAndFlagsBufferStride_ ) & + VULKAN_HPP_NOEXCEPT + { + geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && + setGeometryIndexAndFlagsBufferStride( uint16_t geometryIndexAndFlagsBufferStride_ ) && + VULKAN_HPP_NOEXCEPT + { + geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & + setOpacityMicromapIndexBufferStride( uint16_t opacityMicromapIndexBufferStride_ ) & + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && + setOpacityMicromapIndexBufferStride( uint16_t opacityMicromapIndexBufferStride_ ) && + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setIndexBuffer( DeviceAddress indexBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + indexBuffer = indexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setIndexBuffer( DeviceAddress indexBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + indexBuffer = indexBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setVertexBuffer( DeviceAddress vertexBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + vertexBuffer = vertexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setVertexBuffer( DeviceAddress vertexBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + vertexBuffer = vertexBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & + setGeometryIndexAndFlagsBuffer( DeviceAddress geometryIndexAndFlagsBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && + setGeometryIndexAndFlagsBuffer( DeviceAddress geometryIndexAndFlagsBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & setOpacityMicromapArray( DeviceAddress opacityMicromapArray_ ) & + VULKAN_HPP_NOEXCEPT + { + opacityMicromapArray = opacityMicromapArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && setOpacityMicromapArray( DeviceAddress opacityMicromapArray_ ) && + VULKAN_HPP_NOEXCEPT + { + opacityMicromapArray = opacityMicromapArray_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV & + setOpacityMicromapIndexBuffer( DeviceAddress opacityMicromapIndexBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexBuffer = opacityMicromapIndexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterInfoNV && + setOpacityMicromapIndexBuffer( DeviceAddress opacityMicromapIndexBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexBuffer = opacityMicromapIndexBuffer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureBuildTriangleClusterInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureBuildTriangleClusterInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureBuildTriangleClusterInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureBuildTriangleClusterInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( clusterID, + clusterFlags, + triangleCount, + vertexCount, + positionTruncateBitCount, + indexType, + opacityMicromapIndexType, + baseGeometryIndexAndGeometryFlags, + indexBufferStride, + vertexBufferStride, + geometryIndexAndFlagsBufferStride, + opacityMicromapIndexBufferStride, + indexBuffer, + vertexBuffer, + geometryIndexAndFlagsBuffer, + opacityMicromapArray, + opacityMicromapIndexBuffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClusterAccelerationStructureBuildTriangleClusterInfoNV const & ) const = default; +#else + bool operator==( ClusterAccelerationStructureBuildTriangleClusterInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( clusterID == rhs.clusterID ) && ( clusterFlags == rhs.clusterFlags ) && ( triangleCount == rhs.triangleCount ) && + ( vertexCount == rhs.vertexCount ) && ( positionTruncateBitCount == rhs.positionTruncateBitCount ) && ( indexType == rhs.indexType ) && + ( opacityMicromapIndexType == rhs.opacityMicromapIndexType ) && ( baseGeometryIndexAndGeometryFlags == rhs.baseGeometryIndexAndGeometryFlags ) && + ( indexBufferStride == rhs.indexBufferStride ) && ( vertexBufferStride == rhs.vertexBufferStride ) && + ( geometryIndexAndFlagsBufferStride == rhs.geometryIndexAndFlagsBufferStride ) && + ( opacityMicromapIndexBufferStride == rhs.opacityMicromapIndexBufferStride ) && ( indexBuffer == rhs.indexBuffer ) && + ( vertexBuffer == rhs.vertexBuffer ) && ( geometryIndexAndFlagsBuffer == rhs.geometryIndexAndFlagsBuffer ) && + ( opacityMicromapArray == rhs.opacityMicromapArray ) && ( opacityMicromapIndexBuffer == rhs.opacityMicromapIndexBuffer ); +# endif + } + + bool operator!=( ClusterAccelerationStructureBuildTriangleClusterInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t clusterID = {}; + ClusterAccelerationStructureClusterFlagsNV clusterFlags = {}; + uint32_t triangleCount : 9; + uint32_t vertexCount : 9; + uint32_t positionTruncateBitCount : 6; + uint32_t indexType : 4; + uint32_t opacityMicromapIndexType : 4; + ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV baseGeometryIndexAndGeometryFlags = {}; + uint16_t indexBufferStride = {}; + uint16_t vertexBufferStride = {}; + uint16_t geometryIndexAndFlagsBufferStride = {}; + uint16_t opacityMicromapIndexBufferStride = {}; + DeviceAddress indexBuffer = {}; + DeviceAddress vertexBuffer = {}; + DeviceAddress geometryIndexAndFlagsBuffer = {}; + DeviceAddress opacityMicromapArray = {}; + DeviceAddress opacityMicromapIndexBuffer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureBuildTriangleClusterInfoNV; + }; +#endif + + // wrapper struct for struct VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV.html + struct ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV + { + using NativeType = VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV( + uint32_t clusterID_ = {}, + ClusterAccelerationStructureClusterFlagsNV clusterFlags_ = {}, + uint32_t triangleCount_ = {}, + uint32_t vertexCount_ = {}, + uint32_t positionTruncateBitCount_ = {}, + uint32_t indexType_ = {}, + uint32_t opacityMicromapIndexType_ = {}, + ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV baseGeometryIndexAndGeometryFlags_ = {}, + uint16_t indexBufferStride_ = {}, + uint16_t vertexBufferStride_ = {}, + uint16_t geometryIndexAndFlagsBufferStride_ = {}, + uint16_t opacityMicromapIndexBufferStride_ = {}, + DeviceAddress indexBuffer_ = {}, + DeviceAddress vertexBuffer_ = {}, + DeviceAddress geometryIndexAndFlagsBuffer_ = {}, + DeviceAddress opacityMicromapArray_ = {}, + DeviceAddress opacityMicromapIndexBuffer_ = {}, + DeviceAddress instantiationBoundingBoxLimit_ = {} ) VULKAN_HPP_NOEXCEPT + : clusterID{ clusterID_ } + , clusterFlags{ clusterFlags_ } + , triangleCount{ triangleCount_ } + , vertexCount{ vertexCount_ } + , positionTruncateBitCount{ positionTruncateBitCount_ } + , indexType{ indexType_ } + , opacityMicromapIndexType{ opacityMicromapIndexType_ } + , baseGeometryIndexAndGeometryFlags{ baseGeometryIndexAndGeometryFlags_ } + , indexBufferStride{ indexBufferStride_ } + , vertexBufferStride{ vertexBufferStride_ } + , geometryIndexAndFlagsBufferStride{ geometryIndexAndFlagsBufferStride_ } + , opacityMicromapIndexBufferStride{ opacityMicromapIndexBufferStride_ } + , indexBuffer{ indexBuffer_ } + , vertexBuffer{ vertexBuffer_ } + , geometryIndexAndFlagsBuffer{ geometryIndexAndFlagsBuffer_ } + , opacityMicromapArray{ opacityMicromapArray_ } + , opacityMicromapIndexBuffer{ opacityMicromapIndexBuffer_ } + , instantiationBoundingBoxLimit{ instantiationBoundingBoxLimit_ } + { + } + + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV( + ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV( VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV( + *reinterpret_cast( &rhs ) ) + { + } + + explicit ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV( + ClusterAccelerationStructureBuildTriangleClusterInfoNV const & clusterAccelerationStructureBuildTriangleClusterInfoNV, + DeviceAddress instantiationBoundingBoxLimit_ = {} ) + : clusterID( clusterAccelerationStructureBuildTriangleClusterInfoNV.clusterID ) + , clusterFlags( clusterAccelerationStructureBuildTriangleClusterInfoNV.clusterFlags ) + , triangleCount( clusterAccelerationStructureBuildTriangleClusterInfoNV.triangleCount ) + , vertexCount( clusterAccelerationStructureBuildTriangleClusterInfoNV.vertexCount ) + , positionTruncateBitCount( clusterAccelerationStructureBuildTriangleClusterInfoNV.positionTruncateBitCount ) + , indexType( clusterAccelerationStructureBuildTriangleClusterInfoNV.indexType ) + , opacityMicromapIndexType( clusterAccelerationStructureBuildTriangleClusterInfoNV.opacityMicromapIndexType ) + , baseGeometryIndexAndGeometryFlags( clusterAccelerationStructureBuildTriangleClusterInfoNV.baseGeometryIndexAndGeometryFlags ) + , indexBufferStride( clusterAccelerationStructureBuildTriangleClusterInfoNV.indexBufferStride ) + , vertexBufferStride( clusterAccelerationStructureBuildTriangleClusterInfoNV.vertexBufferStride ) + , geometryIndexAndFlagsBufferStride( clusterAccelerationStructureBuildTriangleClusterInfoNV.geometryIndexAndFlagsBufferStride ) + , opacityMicromapIndexBufferStride( clusterAccelerationStructureBuildTriangleClusterInfoNV.opacityMicromapIndexBufferStride ) + , indexBuffer( clusterAccelerationStructureBuildTriangleClusterInfoNV.indexBuffer ) + , vertexBuffer( clusterAccelerationStructureBuildTriangleClusterInfoNV.vertexBuffer ) + , geometryIndexAndFlagsBuffer( clusterAccelerationStructureBuildTriangleClusterInfoNV.geometryIndexAndFlagsBuffer ) + , opacityMicromapArray( clusterAccelerationStructureBuildTriangleClusterInfoNV.opacityMicromapArray ) + , opacityMicromapIndexBuffer( clusterAccelerationStructureBuildTriangleClusterInfoNV.opacityMicromapIndexBuffer ) + , instantiationBoundingBoxLimit( instantiationBoundingBoxLimit_ ) + { + } + + ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & + operator=( ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & + operator=( VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setClusterID( uint32_t clusterID_ ) & VULKAN_HPP_NOEXCEPT + { + clusterID = clusterID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && setClusterID( uint32_t clusterID_ ) && VULKAN_HPP_NOEXCEPT + { + clusterID = clusterID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & + setClusterFlags( ClusterAccelerationStructureClusterFlagsNV clusterFlags_ ) & + VULKAN_HPP_NOEXCEPT + { + clusterFlags = clusterFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && + setClusterFlags( ClusterAccelerationStructureClusterFlagsNV clusterFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + clusterFlags = clusterFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setTriangleCount( uint32_t triangleCount_ ) & VULKAN_HPP_NOEXCEPT + { + triangleCount = triangleCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && setTriangleCount( uint32_t triangleCount_ ) && VULKAN_HPP_NOEXCEPT + { + triangleCount = triangleCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setVertexCount( uint32_t vertexCount_ ) & VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && setVertexCount( uint32_t vertexCount_ ) && VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setPositionTruncateBitCount( uint32_t positionTruncateBitCount_ ) & + VULKAN_HPP_NOEXCEPT + { + positionTruncateBitCount = positionTruncateBitCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && + setPositionTruncateBitCount( uint32_t positionTruncateBitCount_ ) && + VULKAN_HPP_NOEXCEPT + { + positionTruncateBitCount = positionTruncateBitCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setIndexType( uint32_t indexType_ ) & VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && setIndexType( uint32_t indexType_ ) && VULKAN_HPP_NOEXCEPT + { + indexType = indexType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setOpacityMicromapIndexType( uint32_t opacityMicromapIndexType_ ) & + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexType = opacityMicromapIndexType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && + setOpacityMicromapIndexType( uint32_t opacityMicromapIndexType_ ) && + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexType = opacityMicromapIndexType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & + setBaseGeometryIndexAndGeometryFlags( ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & baseGeometryIndexAndGeometryFlags_ ) & + VULKAN_HPP_NOEXCEPT + { + baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && + setBaseGeometryIndexAndGeometryFlags( ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV const & baseGeometryIndexAndGeometryFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + baseGeometryIndexAndGeometryFlags = baseGeometryIndexAndGeometryFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setIndexBufferStride( uint16_t indexBufferStride_ ) & + VULKAN_HPP_NOEXCEPT + { + indexBufferStride = indexBufferStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && setIndexBufferStride( uint16_t indexBufferStride_ ) && + VULKAN_HPP_NOEXCEPT + { + indexBufferStride = indexBufferStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setVertexBufferStride( uint16_t vertexBufferStride_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexBufferStride = vertexBufferStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && setVertexBufferStride( uint16_t vertexBufferStride_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexBufferStride = vertexBufferStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & + setGeometryIndexAndFlagsBufferStride( uint16_t geometryIndexAndFlagsBufferStride_ ) & + VULKAN_HPP_NOEXCEPT + { + geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && + setGeometryIndexAndFlagsBufferStride( uint16_t geometryIndexAndFlagsBufferStride_ ) && + VULKAN_HPP_NOEXCEPT + { + geometryIndexAndFlagsBufferStride = geometryIndexAndFlagsBufferStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & + setOpacityMicromapIndexBufferStride( uint16_t opacityMicromapIndexBufferStride_ ) & + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && + setOpacityMicromapIndexBufferStride( uint16_t opacityMicromapIndexBufferStride_ ) && + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexBufferStride = opacityMicromapIndexBufferStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setIndexBuffer( DeviceAddress indexBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + indexBuffer = indexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && setIndexBuffer( DeviceAddress indexBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + indexBuffer = indexBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setVertexBuffer( DeviceAddress vertexBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexBuffer = vertexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && setVertexBuffer( DeviceAddress vertexBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexBuffer = vertexBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & + setGeometryIndexAndFlagsBuffer( DeviceAddress geometryIndexAndFlagsBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && + setGeometryIndexAndFlagsBuffer( DeviceAddress geometryIndexAndFlagsBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + geometryIndexAndFlagsBuffer = geometryIndexAndFlagsBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & setOpacityMicromapArray( DeviceAddress opacityMicromapArray_ ) & + VULKAN_HPP_NOEXCEPT + { + opacityMicromapArray = opacityMicromapArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && setOpacityMicromapArray( DeviceAddress opacityMicromapArray_ ) && + VULKAN_HPP_NOEXCEPT + { + opacityMicromapArray = opacityMicromapArray_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & + setOpacityMicromapIndexBuffer( DeviceAddress opacityMicromapIndexBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexBuffer = opacityMicromapIndexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && + setOpacityMicromapIndexBuffer( DeviceAddress opacityMicromapIndexBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + opacityMicromapIndexBuffer = opacityMicromapIndexBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV & + setInstantiationBoundingBoxLimit( DeviceAddress instantiationBoundingBoxLimit_ ) & + VULKAN_HPP_NOEXCEPT + { + instantiationBoundingBoxLimit = instantiationBoundingBoxLimit_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV && + setInstantiationBoundingBoxLimit( DeviceAddress instantiationBoundingBoxLimit_ ) && + VULKAN_HPP_NOEXCEPT + { + instantiationBoundingBoxLimit = instantiationBoundingBoxLimit_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( clusterID, + clusterFlags, + triangleCount, + vertexCount, + positionTruncateBitCount, + indexType, + opacityMicromapIndexType, + baseGeometryIndexAndGeometryFlags, + indexBufferStride, + vertexBufferStride, + geometryIndexAndFlagsBufferStride, + opacityMicromapIndexBufferStride, + indexBuffer, + vertexBuffer, + geometryIndexAndFlagsBuffer, + opacityMicromapArray, + opacityMicromapIndexBuffer, + instantiationBoundingBoxLimit ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV const & ) const = default; +#else + bool operator==( ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( clusterID == rhs.clusterID ) && ( clusterFlags == rhs.clusterFlags ) && ( triangleCount == rhs.triangleCount ) && + ( vertexCount == rhs.vertexCount ) && ( positionTruncateBitCount == rhs.positionTruncateBitCount ) && ( indexType == rhs.indexType ) && + ( opacityMicromapIndexType == rhs.opacityMicromapIndexType ) && ( baseGeometryIndexAndGeometryFlags == rhs.baseGeometryIndexAndGeometryFlags ) && + ( indexBufferStride == rhs.indexBufferStride ) && ( vertexBufferStride == rhs.vertexBufferStride ) && + ( geometryIndexAndFlagsBufferStride == rhs.geometryIndexAndFlagsBufferStride ) && + ( opacityMicromapIndexBufferStride == rhs.opacityMicromapIndexBufferStride ) && ( indexBuffer == rhs.indexBuffer ) && + ( vertexBuffer == rhs.vertexBuffer ) && ( geometryIndexAndFlagsBuffer == rhs.geometryIndexAndFlagsBuffer ) && + ( opacityMicromapArray == rhs.opacityMicromapArray ) && ( opacityMicromapIndexBuffer == rhs.opacityMicromapIndexBuffer ) && + ( instantiationBoundingBoxLimit == rhs.instantiationBoundingBoxLimit ); +# endif + } + + bool operator!=( ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t clusterID = {}; + ClusterAccelerationStructureClusterFlagsNV clusterFlags = {}; + uint32_t triangleCount : 9; + uint32_t vertexCount : 9; + uint32_t positionTruncateBitCount : 6; + uint32_t indexType : 4; + uint32_t opacityMicromapIndexType : 4; + ClusterAccelerationStructureGeometryIndexAndGeometryFlagsNV baseGeometryIndexAndGeometryFlags = {}; + uint16_t indexBufferStride = {}; + uint16_t vertexBufferStride = {}; + uint16_t geometryIndexAndFlagsBufferStride = {}; + uint16_t opacityMicromapIndexBufferStride = {}; + DeviceAddress indexBuffer = {}; + DeviceAddress vertexBuffer = {}; + DeviceAddress geometryIndexAndFlagsBuffer = {}; + DeviceAddress opacityMicromapArray = {}; + DeviceAddress opacityMicromapIndexBuffer = {}; + DeviceAddress instantiationBoundingBoxLimit = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureBuildTriangleClusterTemplateInfoNV; + }; +#endif + + // wrapper struct for struct VkClusterAccelerationStructureClustersBottomLevelInputNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureClustersBottomLevelInputNV.html + struct ClusterAccelerationStructureClustersBottomLevelInputNV + { + using NativeType = VkClusterAccelerationStructureClustersBottomLevelInputNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eClusterAccelerationStructureClustersBottomLevelInputNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureClustersBottomLevelInputNV( uint32_t maxTotalClusterCount_ = {}, + uint32_t maxClusterCountPerAccelerationStructure_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxTotalClusterCount{ maxTotalClusterCount_ } + , maxClusterCountPerAccelerationStructure{ maxClusterCountPerAccelerationStructure_ } + { + } + + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureClustersBottomLevelInputNV( ClusterAccelerationStructureClustersBottomLevelInputNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureClustersBottomLevelInputNV( VkClusterAccelerationStructureClustersBottomLevelInputNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureClustersBottomLevelInputNV( *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureClustersBottomLevelInputNV & + operator=( ClusterAccelerationStructureClustersBottomLevelInputNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureClustersBottomLevelInputNV & + operator=( VkClusterAccelerationStructureClustersBottomLevelInputNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureClustersBottomLevelInputNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureClustersBottomLevelInputNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureClustersBottomLevelInputNV & setMaxTotalClusterCount( uint32_t maxTotalClusterCount_ ) & + VULKAN_HPP_NOEXCEPT + { + maxTotalClusterCount = maxTotalClusterCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureClustersBottomLevelInputNV && setMaxTotalClusterCount( uint32_t maxTotalClusterCount_ ) && + VULKAN_HPP_NOEXCEPT + { + maxTotalClusterCount = maxTotalClusterCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureClustersBottomLevelInputNV & + setMaxClusterCountPerAccelerationStructure( uint32_t maxClusterCountPerAccelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + maxClusterCountPerAccelerationStructure = maxClusterCountPerAccelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureClustersBottomLevelInputNV && + setMaxClusterCountPerAccelerationStructure( uint32_t maxClusterCountPerAccelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + maxClusterCountPerAccelerationStructure = maxClusterCountPerAccelerationStructure_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureClustersBottomLevelInputNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureClustersBottomLevelInputNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureClustersBottomLevelInputNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureClustersBottomLevelInputNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxTotalClusterCount, maxClusterCountPerAccelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClusterAccelerationStructureClustersBottomLevelInputNV const & ) const = default; +#else + bool operator==( ClusterAccelerationStructureClustersBottomLevelInputNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTotalClusterCount == rhs.maxTotalClusterCount ) && + ( maxClusterCountPerAccelerationStructure == rhs.maxClusterCountPerAccelerationStructure ); +# endif + } + + bool operator!=( ClusterAccelerationStructureClustersBottomLevelInputNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eClusterAccelerationStructureClustersBottomLevelInputNV; + void * pNext = {}; + uint32_t maxTotalClusterCount = {}; + uint32_t maxClusterCountPerAccelerationStructure = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureClustersBottomLevelInputNV; + }; +#endif + + template <> + struct CppType + { + using Type = ClusterAccelerationStructureClustersBottomLevelInputNV; + }; + + // wrapper struct for struct VkClusterAccelerationStructureTriangleClusterInputNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureTriangleClusterInputNV.html + struct ClusterAccelerationStructureTriangleClusterInputNV + { + using NativeType = VkClusterAccelerationStructureTriangleClusterInputNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eClusterAccelerationStructureTriangleClusterInputNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureTriangleClusterInputNV( Format vertexFormat_ = Format::eUndefined, + uint32_t maxGeometryIndexValue_ = {}, + uint32_t maxClusterUniqueGeometryCount_ = {}, + uint32_t maxClusterTriangleCount_ = {}, + uint32_t maxClusterVertexCount_ = {}, + uint32_t maxTotalTriangleCount_ = {}, + uint32_t maxTotalVertexCount_ = {}, + uint32_t minPositionTruncateBitCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vertexFormat{ vertexFormat_ } + , maxGeometryIndexValue{ maxGeometryIndexValue_ } + , maxClusterUniqueGeometryCount{ maxClusterUniqueGeometryCount_ } + , maxClusterTriangleCount{ maxClusterTriangleCount_ } + , maxClusterVertexCount{ maxClusterVertexCount_ } + , maxTotalTriangleCount{ maxTotalTriangleCount_ } + , maxTotalVertexCount{ maxTotalVertexCount_ } + , minPositionTruncateBitCount{ minPositionTruncateBitCount_ } + { + } + + VULKAN_HPP_CONSTEXPR + ClusterAccelerationStructureTriangleClusterInputNV( ClusterAccelerationStructureTriangleClusterInputNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureTriangleClusterInputNV( VkClusterAccelerationStructureTriangleClusterInputNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureTriangleClusterInputNV( *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureTriangleClusterInputNV & + operator=( ClusterAccelerationStructureTriangleClusterInputNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureTriangleClusterInputNV & operator=( VkClusterAccelerationStructureTriangleClusterInputNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV & setVertexFormat( Format vertexFormat_ ) & VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV && setVertexFormat( Format vertexFormat_ ) && VULKAN_HPP_NOEXCEPT + { + vertexFormat = vertexFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV & setMaxGeometryIndexValue( uint32_t maxGeometryIndexValue_ ) & + VULKAN_HPP_NOEXCEPT + { + maxGeometryIndexValue = maxGeometryIndexValue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV && setMaxGeometryIndexValue( uint32_t maxGeometryIndexValue_ ) && + VULKAN_HPP_NOEXCEPT + { + maxGeometryIndexValue = maxGeometryIndexValue_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV & setMaxClusterUniqueGeometryCount( uint32_t maxClusterUniqueGeometryCount_ ) & + VULKAN_HPP_NOEXCEPT + { + maxClusterUniqueGeometryCount = maxClusterUniqueGeometryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV && setMaxClusterUniqueGeometryCount( uint32_t maxClusterUniqueGeometryCount_ ) && + VULKAN_HPP_NOEXCEPT + { + maxClusterUniqueGeometryCount = maxClusterUniqueGeometryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV & setMaxClusterTriangleCount( uint32_t maxClusterTriangleCount_ ) & + VULKAN_HPP_NOEXCEPT + { + maxClusterTriangleCount = maxClusterTriangleCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV && setMaxClusterTriangleCount( uint32_t maxClusterTriangleCount_ ) && + VULKAN_HPP_NOEXCEPT + { + maxClusterTriangleCount = maxClusterTriangleCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV & setMaxClusterVertexCount( uint32_t maxClusterVertexCount_ ) & + VULKAN_HPP_NOEXCEPT + { + maxClusterVertexCount = maxClusterVertexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV && setMaxClusterVertexCount( uint32_t maxClusterVertexCount_ ) && + VULKAN_HPP_NOEXCEPT + { + maxClusterVertexCount = maxClusterVertexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV & setMaxTotalTriangleCount( uint32_t maxTotalTriangleCount_ ) & + VULKAN_HPP_NOEXCEPT + { + maxTotalTriangleCount = maxTotalTriangleCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV && setMaxTotalTriangleCount( uint32_t maxTotalTriangleCount_ ) && + VULKAN_HPP_NOEXCEPT + { + maxTotalTriangleCount = maxTotalTriangleCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV & setMaxTotalVertexCount( uint32_t maxTotalVertexCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxTotalVertexCount = maxTotalVertexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV && setMaxTotalVertexCount( uint32_t maxTotalVertexCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxTotalVertexCount = maxTotalVertexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV & setMinPositionTruncateBitCount( uint32_t minPositionTruncateBitCount_ ) & + VULKAN_HPP_NOEXCEPT + { + minPositionTruncateBitCount = minPositionTruncateBitCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureTriangleClusterInputNV && setMinPositionTruncateBitCount( uint32_t minPositionTruncateBitCount_ ) && + VULKAN_HPP_NOEXCEPT + { + minPositionTruncateBitCount = minPositionTruncateBitCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureTriangleClusterInputNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureTriangleClusterInputNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureTriangleClusterInputNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureTriangleClusterInputNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + vertexFormat, + maxGeometryIndexValue, + maxClusterUniqueGeometryCount, + maxClusterTriangleCount, + maxClusterVertexCount, + maxTotalTriangleCount, + maxTotalVertexCount, + minPositionTruncateBitCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClusterAccelerationStructureTriangleClusterInputNV const & ) const = default; +#else + bool operator==( ClusterAccelerationStructureTriangleClusterInputNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexFormat == rhs.vertexFormat ) && + ( maxGeometryIndexValue == rhs.maxGeometryIndexValue ) && ( maxClusterUniqueGeometryCount == rhs.maxClusterUniqueGeometryCount ) && + ( maxClusterTriangleCount == rhs.maxClusterTriangleCount ) && ( maxClusterVertexCount == rhs.maxClusterVertexCount ) && + ( maxTotalTriangleCount == rhs.maxTotalTriangleCount ) && ( maxTotalVertexCount == rhs.maxTotalVertexCount ) && + ( minPositionTruncateBitCount == rhs.minPositionTruncateBitCount ); +# endif + } + + bool operator!=( ClusterAccelerationStructureTriangleClusterInputNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eClusterAccelerationStructureTriangleClusterInputNV; + void * pNext = {}; + Format vertexFormat = Format::eUndefined; + uint32_t maxGeometryIndexValue = {}; + uint32_t maxClusterUniqueGeometryCount = {}; + uint32_t maxClusterTriangleCount = {}; + uint32_t maxClusterVertexCount = {}; + uint32_t maxTotalTriangleCount = {}; + uint32_t maxTotalVertexCount = {}; + uint32_t minPositionTruncateBitCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureTriangleClusterInputNV; + }; +#endif + + template <> + struct CppType + { + using Type = ClusterAccelerationStructureTriangleClusterInputNV; + }; + + // wrapper struct for struct VkClusterAccelerationStructureMoveObjectsInputNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInputNV.html + struct ClusterAccelerationStructureMoveObjectsInputNV + { + using NativeType = VkClusterAccelerationStructureMoveObjectsInputNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eClusterAccelerationStructureMoveObjectsInputNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ClusterAccelerationStructureMoveObjectsInputNV( ClusterAccelerationStructureTypeNV type_ = ClusterAccelerationStructureTypeNV::eClustersBottomLevel, + Bool32 noMoveOverlap_ = {}, + DeviceSize maxMovedBytes_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , noMoveOverlap{ noMoveOverlap_ } + , maxMovedBytes{ maxMovedBytes_ } + { + } + + VULKAN_HPP_CONSTEXPR + ClusterAccelerationStructureMoveObjectsInputNV( ClusterAccelerationStructureMoveObjectsInputNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureMoveObjectsInputNV( VkClusterAccelerationStructureMoveObjectsInputNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureMoveObjectsInputNV( *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureMoveObjectsInputNV & operator=( ClusterAccelerationStructureMoveObjectsInputNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureMoveObjectsInputNV & operator=( VkClusterAccelerationStructureMoveObjectsInputNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureMoveObjectsInputNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureMoveObjectsInputNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureMoveObjectsInputNV & setType( ClusterAccelerationStructureTypeNV type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureMoveObjectsInputNV && setType( ClusterAccelerationStructureTypeNV type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureMoveObjectsInputNV & setNoMoveOverlap( Bool32 noMoveOverlap_ ) & VULKAN_HPP_NOEXCEPT + { + noMoveOverlap = noMoveOverlap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureMoveObjectsInputNV && setNoMoveOverlap( Bool32 noMoveOverlap_ ) && VULKAN_HPP_NOEXCEPT + { + noMoveOverlap = noMoveOverlap_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureMoveObjectsInputNV & setMaxMovedBytes( DeviceSize maxMovedBytes_ ) & VULKAN_HPP_NOEXCEPT + { + maxMovedBytes = maxMovedBytes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureMoveObjectsInputNV && setMaxMovedBytes( DeviceSize maxMovedBytes_ ) && VULKAN_HPP_NOEXCEPT + { + maxMovedBytes = maxMovedBytes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureMoveObjectsInputNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureMoveObjectsInputNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureMoveObjectsInputNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureMoveObjectsInputNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, noMoveOverlap, maxMovedBytes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClusterAccelerationStructureMoveObjectsInputNV const & ) const = default; +#else + bool operator==( ClusterAccelerationStructureMoveObjectsInputNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( noMoveOverlap == rhs.noMoveOverlap ) && + ( maxMovedBytes == rhs.maxMovedBytes ); +# endif + } + + bool operator!=( ClusterAccelerationStructureMoveObjectsInputNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eClusterAccelerationStructureMoveObjectsInputNV; + void * pNext = {}; + ClusterAccelerationStructureTypeNV type = ClusterAccelerationStructureTypeNV::eClustersBottomLevel; + Bool32 noMoveOverlap = {}; + DeviceSize maxMovedBytes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureMoveObjectsInputNV; + }; +#endif + + template <> + struct CppType + { + using Type = ClusterAccelerationStructureMoveObjectsInputNV; + }; + + union ClusterAccelerationStructureOpInputNV + { + using NativeType = VkClusterAccelerationStructureOpInputNV; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureOpInputNV( ClusterAccelerationStructureClustersBottomLevelInputNV * pClustersBottomLevel_ = {} ) + : pClustersBottomLevel( pClustersBottomLevel_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureOpInputNV( ClusterAccelerationStructureTriangleClusterInputNV * pTriangleClusters_ ) + : pTriangleClusters( pTriangleClusters_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureOpInputNV( ClusterAccelerationStructureMoveObjectsInputNV * pMoveObjects_ ) + : pMoveObjects( pMoveObjects_ ) + { + } +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureOpInputNV & + setPClustersBottomLevel( ClusterAccelerationStructureClustersBottomLevelInputNV * pClustersBottomLevel_ ) & + VULKAN_HPP_NOEXCEPT + { + pClustersBottomLevel = pClustersBottomLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureOpInputNV && + setPClustersBottomLevel( ClusterAccelerationStructureClustersBottomLevelInputNV * pClustersBottomLevel_ ) && + VULKAN_HPP_NOEXCEPT + { + pClustersBottomLevel = pClustersBottomLevel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureOpInputNV & + setPTriangleClusters( ClusterAccelerationStructureTriangleClusterInputNV * pTriangleClusters_ ) & + VULKAN_HPP_NOEXCEPT + { + pTriangleClusters = pTriangleClusters_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureOpInputNV && + setPTriangleClusters( ClusterAccelerationStructureTriangleClusterInputNV * pTriangleClusters_ ) && + VULKAN_HPP_NOEXCEPT + { + pTriangleClusters = pTriangleClusters_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureOpInputNV & setPMoveObjects( ClusterAccelerationStructureMoveObjectsInputNV * pMoveObjects_ ) & + VULKAN_HPP_NOEXCEPT + { + pMoveObjects = pMoveObjects_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureOpInputNV && setPMoveObjects( ClusterAccelerationStructureMoveObjectsInputNV * pMoveObjects_ ) && + VULKAN_HPP_NOEXCEPT + { + pMoveObjects = pMoveObjects_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureOpInputNV const &() const + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureOpInputNV &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + ClusterAccelerationStructureClustersBottomLevelInputNV * pClustersBottomLevel; + ClusterAccelerationStructureTriangleClusterInputNV * pTriangleClusters; + ClusterAccelerationStructureMoveObjectsInputNV * pMoveObjects; +#else + VkClusterAccelerationStructureClustersBottomLevelInputNV * pClustersBottomLevel; + VkClusterAccelerationStructureTriangleClusterInputNV * pTriangleClusters; + VkClusterAccelerationStructureMoveObjectsInputNV * pMoveObjects; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureOpInputNV; + }; +#endif + + // wrapper struct for struct VkClusterAccelerationStructureInputInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInputInfoNV.html + struct ClusterAccelerationStructureInputInfoNV + { + using NativeType = VkClusterAccelerationStructureInputInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eClusterAccelerationStructureInputInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + ClusterAccelerationStructureInputInfoNV( uint32_t maxAccelerationStructureCount_ = {}, + BuildAccelerationStructureFlagsKHR flags_ = {}, + ClusterAccelerationStructureOpTypeNV opType_ = ClusterAccelerationStructureOpTypeNV::eMoveObjects, + ClusterAccelerationStructureOpModeNV opMode_ = ClusterAccelerationStructureOpModeNV::eImplicitDestinations, + ClusterAccelerationStructureOpInputNV opInput_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxAccelerationStructureCount{ maxAccelerationStructureCount_ } + , flags{ flags_ } + , opType{ opType_ } + , opMode{ opMode_ } + , opInput{ opInput_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV( ClusterAccelerationStructureInputInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureInputInfoNV( VkClusterAccelerationStructureInputInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureInputInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureInputInfoNV & operator=( ClusterAccelerationStructureInputInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureInputInfoNV & operator=( VkClusterAccelerationStructureInputInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV & setMaxAccelerationStructureCount( uint32_t maxAccelerationStructureCount_ ) & + VULKAN_HPP_NOEXCEPT + { + maxAccelerationStructureCount = maxAccelerationStructureCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV && setMaxAccelerationStructureCount( uint32_t maxAccelerationStructureCount_ ) && + VULKAN_HPP_NOEXCEPT + { + maxAccelerationStructureCount = maxAccelerationStructureCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV & setFlags( BuildAccelerationStructureFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV && setFlags( BuildAccelerationStructureFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV & setOpType( ClusterAccelerationStructureOpTypeNV opType_ ) & VULKAN_HPP_NOEXCEPT + { + opType = opType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV && setOpType( ClusterAccelerationStructureOpTypeNV opType_ ) && VULKAN_HPP_NOEXCEPT + { + opType = opType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV & setOpMode( ClusterAccelerationStructureOpModeNV opMode_ ) & VULKAN_HPP_NOEXCEPT + { + opMode = opMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV && setOpMode( ClusterAccelerationStructureOpModeNV opMode_ ) && VULKAN_HPP_NOEXCEPT + { + opMode = opMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV & setOpInput( ClusterAccelerationStructureOpInputNV const & opInput_ ) & VULKAN_HPP_NOEXCEPT + { + opInput = opInput_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInputInfoNV && setOpInput( ClusterAccelerationStructureOpInputNV const & opInput_ ) && + VULKAN_HPP_NOEXCEPT + { + opInput = opInput_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureInputInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureInputInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureInputInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureInputInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxAccelerationStructureCount, flags, opType, opMode, opInput ); + } +#endif + + public: + StructureType sType = StructureType::eClusterAccelerationStructureInputInfoNV; + void * pNext = {}; + uint32_t maxAccelerationStructureCount = {}; + BuildAccelerationStructureFlagsKHR flags = {}; + ClusterAccelerationStructureOpTypeNV opType = ClusterAccelerationStructureOpTypeNV::eMoveObjects; + ClusterAccelerationStructureOpModeNV opMode = ClusterAccelerationStructureOpModeNV::eImplicitDestinations; + ClusterAccelerationStructureOpInputNV opInput = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureInputInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = ClusterAccelerationStructureInputInfoNV; + }; + + // wrapper struct for struct VkStridedDeviceAddressRegionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkStridedDeviceAddressRegionKHR.html + struct StridedDeviceAddressRegionKHR + { + using NativeType = VkStridedDeviceAddressRegionKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR StridedDeviceAddressRegionKHR( DeviceAddress deviceAddress_ = {}, DeviceSize stride_ = {}, DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : deviceAddress{ deviceAddress_ } + , stride{ stride_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR StridedDeviceAddressRegionKHR( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + StridedDeviceAddressRegionKHR( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : StridedDeviceAddressRegionKHR( *reinterpret_cast( &rhs ) ) + { + } + + StridedDeviceAddressRegionKHR & operator=( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + StridedDeviceAddressRegionKHR & operator=( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & setDeviceAddress( DeviceAddress deviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR && setDeviceAddress( DeviceAddress deviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & setStride( DeviceSize stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR && setStride( DeviceSize stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkStridedDeviceAddressRegionKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkStridedDeviceAddressRegionKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkStridedDeviceAddressRegionKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkStridedDeviceAddressRegionKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( deviceAddress, stride, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( StridedDeviceAddressRegionKHR const & ) const = default; +#else + bool operator==( StridedDeviceAddressRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( deviceAddress == rhs.deviceAddress ) && ( stride == rhs.stride ) && ( size == rhs.size ); +# endif + } + + bool operator!=( StridedDeviceAddressRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress deviceAddress = {}; + DeviceSize stride = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = StridedDeviceAddressRegionKHR; + }; +#endif + + // wrapper struct for struct VkClusterAccelerationStructureCommandsInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureCommandsInfoNV.html + struct ClusterAccelerationStructureCommandsInfoNV + { + using NativeType = VkClusterAccelerationStructureCommandsInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eClusterAccelerationStructureCommandsInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV( ClusterAccelerationStructureInputInfoNV input_ = {}, + DeviceAddress dstImplicitData_ = {}, + DeviceAddress scratchData_ = {}, + StridedDeviceAddressRegionKHR dstAddressesArray_ = {}, + StridedDeviceAddressRegionKHR dstSizesArray_ = {}, + StridedDeviceAddressRegionKHR srcInfosArray_ = {}, + DeviceAddress srcInfosCount_ = {}, + ClusterAccelerationStructureAddressResolutionFlagsNV addressResolutionFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , input{ input_ } + , dstImplicitData{ dstImplicitData_ } + , scratchData{ scratchData_ } + , dstAddressesArray{ dstAddressesArray_ } + , dstSizesArray{ dstSizesArray_ } + , srcInfosArray{ srcInfosArray_ } + , srcInfosCount{ srcInfosCount_ } + , addressResolutionFlags{ addressResolutionFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV( ClusterAccelerationStructureCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureCommandsInfoNV( VkClusterAccelerationStructureCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureCommandsInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureCommandsInfoNV & operator=( ClusterAccelerationStructureCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureCommandsInfoNV & operator=( VkClusterAccelerationStructureCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV & setInput( ClusterAccelerationStructureInputInfoNV const & input_ ) & + VULKAN_HPP_NOEXCEPT + { + input = input_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV && setInput( ClusterAccelerationStructureInputInfoNV const & input_ ) && + VULKAN_HPP_NOEXCEPT + { + input = input_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV & setDstImplicitData( DeviceAddress dstImplicitData_ ) & VULKAN_HPP_NOEXCEPT + { + dstImplicitData = dstImplicitData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV && setDstImplicitData( DeviceAddress dstImplicitData_ ) && VULKAN_HPP_NOEXCEPT + { + dstImplicitData = dstImplicitData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV & setScratchData( DeviceAddress scratchData_ ) & VULKAN_HPP_NOEXCEPT + { + scratchData = scratchData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV && setScratchData( DeviceAddress scratchData_ ) && VULKAN_HPP_NOEXCEPT + { + scratchData = scratchData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV & setDstAddressesArray( StridedDeviceAddressRegionKHR const & dstAddressesArray_ ) & + VULKAN_HPP_NOEXCEPT + { + dstAddressesArray = dstAddressesArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV && setDstAddressesArray( StridedDeviceAddressRegionKHR const & dstAddressesArray_ ) && + VULKAN_HPP_NOEXCEPT + { + dstAddressesArray = dstAddressesArray_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV & setDstSizesArray( StridedDeviceAddressRegionKHR const & dstSizesArray_ ) & + VULKAN_HPP_NOEXCEPT + { + dstSizesArray = dstSizesArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV && setDstSizesArray( StridedDeviceAddressRegionKHR const & dstSizesArray_ ) && + VULKAN_HPP_NOEXCEPT + { + dstSizesArray = dstSizesArray_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV & setSrcInfosArray( StridedDeviceAddressRegionKHR const & srcInfosArray_ ) & + VULKAN_HPP_NOEXCEPT + { + srcInfosArray = srcInfosArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV && setSrcInfosArray( StridedDeviceAddressRegionKHR const & srcInfosArray_ ) && + VULKAN_HPP_NOEXCEPT + { + srcInfosArray = srcInfosArray_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV & setSrcInfosCount( DeviceAddress srcInfosCount_ ) & VULKAN_HPP_NOEXCEPT + { + srcInfosCount = srcInfosCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV && setSrcInfosCount( DeviceAddress srcInfosCount_ ) && VULKAN_HPP_NOEXCEPT + { + srcInfosCount = srcInfosCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV & + setAddressResolutionFlags( ClusterAccelerationStructureAddressResolutionFlagsNV addressResolutionFlags_ ) & + VULKAN_HPP_NOEXCEPT + { + addressResolutionFlags = addressResolutionFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureCommandsInfoNV && + setAddressResolutionFlags( ClusterAccelerationStructureAddressResolutionFlagsNV addressResolutionFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + addressResolutionFlags = addressResolutionFlags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureCommandsInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureCommandsInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureCommandsInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureCommandsInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, input, dstImplicitData, scratchData, dstAddressesArray, dstSizesArray, srcInfosArray, srcInfosCount, addressResolutionFlags ); + } +#endif + + public: + StructureType sType = StructureType::eClusterAccelerationStructureCommandsInfoNV; + void * pNext = {}; + ClusterAccelerationStructureInputInfoNV input = {}; + DeviceAddress dstImplicitData = {}; + DeviceAddress scratchData = {}; + StridedDeviceAddressRegionKHR dstAddressesArray = {}; + StridedDeviceAddressRegionKHR dstSizesArray = {}; + StridedDeviceAddressRegionKHR srcInfosArray = {}; + DeviceAddress srcInfosCount = {}; + ClusterAccelerationStructureAddressResolutionFlagsNV addressResolutionFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureCommandsInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = ClusterAccelerationStructureCommandsInfoNV; + }; + + // wrapper struct for struct VkClusterAccelerationStructureGetTemplateIndicesInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureGetTemplateIndicesInfoNV.html + struct ClusterAccelerationStructureGetTemplateIndicesInfoNV + { + using NativeType = VkClusterAccelerationStructureGetTemplateIndicesInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureGetTemplateIndicesInfoNV( DeviceAddress clusterTemplateAddress_ = {} ) VULKAN_HPP_NOEXCEPT + : clusterTemplateAddress{ clusterTemplateAddress_ } + { + } + + VULKAN_HPP_CONSTEXPR + ClusterAccelerationStructureGetTemplateIndicesInfoNV( ClusterAccelerationStructureGetTemplateIndicesInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureGetTemplateIndicesInfoNV( VkClusterAccelerationStructureGetTemplateIndicesInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureGetTemplateIndicesInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureGetTemplateIndicesInfoNV & + operator=( ClusterAccelerationStructureGetTemplateIndicesInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureGetTemplateIndicesInfoNV & operator=( VkClusterAccelerationStructureGetTemplateIndicesInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureGetTemplateIndicesInfoNV & setClusterTemplateAddress( DeviceAddress clusterTemplateAddress_ ) & + VULKAN_HPP_NOEXCEPT + { + clusterTemplateAddress = clusterTemplateAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureGetTemplateIndicesInfoNV && setClusterTemplateAddress( DeviceAddress clusterTemplateAddress_ ) && + VULKAN_HPP_NOEXCEPT + { + clusterTemplateAddress = clusterTemplateAddress_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureGetTemplateIndicesInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureGetTemplateIndicesInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureGetTemplateIndicesInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureGetTemplateIndicesInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( clusterTemplateAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClusterAccelerationStructureGetTemplateIndicesInfoNV const & ) const = default; +#else + bool operator==( ClusterAccelerationStructureGetTemplateIndicesInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( clusterTemplateAddress == rhs.clusterTemplateAddress ); +# endif + } + + bool operator!=( ClusterAccelerationStructureGetTemplateIndicesInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress clusterTemplateAddress = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureGetTemplateIndicesInfoNV; + }; +#endif + + // wrapper struct for struct VkClusterAccelerationStructureInstantiateClusterInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureInstantiateClusterInfoNV.html + struct ClusterAccelerationStructureInstantiateClusterInfoNV + { + using NativeType = VkClusterAccelerationStructureInstantiateClusterInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureInstantiateClusterInfoNV( uint32_t clusterIdOffset_ = {}, + uint32_t geometryIndexOffset_ = {}, + uint32_t reserved_ = {}, + DeviceAddress clusterTemplateAddress_ = {}, + StridedDeviceAddressNV vertexBuffer_ = {} ) VULKAN_HPP_NOEXCEPT + : clusterIdOffset{ clusterIdOffset_ } + , geometryIndexOffset{ geometryIndexOffset_ } + , reserved{ reserved_ } + , clusterTemplateAddress{ clusterTemplateAddress_ } + , vertexBuffer{ vertexBuffer_ } + { + } + + VULKAN_HPP_CONSTEXPR + ClusterAccelerationStructureInstantiateClusterInfoNV( ClusterAccelerationStructureInstantiateClusterInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureInstantiateClusterInfoNV( VkClusterAccelerationStructureInstantiateClusterInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureInstantiateClusterInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureInstantiateClusterInfoNV & + operator=( ClusterAccelerationStructureInstantiateClusterInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureInstantiateClusterInfoNV & operator=( VkClusterAccelerationStructureInstantiateClusterInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInstantiateClusterInfoNV & setClusterIdOffset( uint32_t clusterIdOffset_ ) & VULKAN_HPP_NOEXCEPT + { + clusterIdOffset = clusterIdOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInstantiateClusterInfoNV && setClusterIdOffset( uint32_t clusterIdOffset_ ) && VULKAN_HPP_NOEXCEPT + { + clusterIdOffset = clusterIdOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInstantiateClusterInfoNV & setGeometryIndexOffset( uint32_t geometryIndexOffset_ ) & VULKAN_HPP_NOEXCEPT + { + geometryIndexOffset = geometryIndexOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInstantiateClusterInfoNV && setGeometryIndexOffset( uint32_t geometryIndexOffset_ ) && + VULKAN_HPP_NOEXCEPT + { + geometryIndexOffset = geometryIndexOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInstantiateClusterInfoNV & setReserved( uint32_t reserved_ ) & VULKAN_HPP_NOEXCEPT + { + reserved = reserved_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInstantiateClusterInfoNV && setReserved( uint32_t reserved_ ) && VULKAN_HPP_NOEXCEPT + { + reserved = reserved_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInstantiateClusterInfoNV & setClusterTemplateAddress( DeviceAddress clusterTemplateAddress_ ) & + VULKAN_HPP_NOEXCEPT + { + clusterTemplateAddress = clusterTemplateAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInstantiateClusterInfoNV && setClusterTemplateAddress( DeviceAddress clusterTemplateAddress_ ) && + VULKAN_HPP_NOEXCEPT + { + clusterTemplateAddress = clusterTemplateAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInstantiateClusterInfoNV & setVertexBuffer( StridedDeviceAddressNV const & vertexBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexBuffer = vertexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureInstantiateClusterInfoNV && setVertexBuffer( StridedDeviceAddressNV const & vertexBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexBuffer = vertexBuffer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureInstantiateClusterInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureInstantiateClusterInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureInstantiateClusterInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureInstantiateClusterInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( clusterIdOffset, geometryIndexOffset, reserved, clusterTemplateAddress, vertexBuffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClusterAccelerationStructureInstantiateClusterInfoNV const & ) const = default; +#else + bool operator==( ClusterAccelerationStructureInstantiateClusterInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( clusterIdOffset == rhs.clusterIdOffset ) && ( geometryIndexOffset == rhs.geometryIndexOffset ) && ( reserved == rhs.reserved ) && + ( clusterTemplateAddress == rhs.clusterTemplateAddress ) && ( vertexBuffer == rhs.vertexBuffer ); +# endif + } + + bool operator!=( ClusterAccelerationStructureInstantiateClusterInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t clusterIdOffset = {}; + uint32_t geometryIndexOffset : 24; + uint32_t reserved : 8; + DeviceAddress clusterTemplateAddress = {}; + StridedDeviceAddressNV vertexBuffer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureInstantiateClusterInfoNV; + }; +#endif + + // wrapper struct for struct VkClusterAccelerationStructureMoveObjectsInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkClusterAccelerationStructureMoveObjectsInfoNV.html + struct ClusterAccelerationStructureMoveObjectsInfoNV + { + using NativeType = VkClusterAccelerationStructureMoveObjectsInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ClusterAccelerationStructureMoveObjectsInfoNV( DeviceAddress srcAccelerationStructure_ = {} ) VULKAN_HPP_NOEXCEPT + : srcAccelerationStructure{ srcAccelerationStructure_ } + { + } + + VULKAN_HPP_CONSTEXPR + ClusterAccelerationStructureMoveObjectsInfoNV( ClusterAccelerationStructureMoveObjectsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ClusterAccelerationStructureMoveObjectsInfoNV( VkClusterAccelerationStructureMoveObjectsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ClusterAccelerationStructureMoveObjectsInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ClusterAccelerationStructureMoveObjectsInfoNV & operator=( ClusterAccelerationStructureMoveObjectsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ClusterAccelerationStructureMoveObjectsInfoNV & operator=( VkClusterAccelerationStructureMoveObjectsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureMoveObjectsInfoNV & setSrcAccelerationStructure( DeviceAddress srcAccelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + srcAccelerationStructure = srcAccelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ClusterAccelerationStructureMoveObjectsInfoNV && setSrcAccelerationStructure( DeviceAddress srcAccelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + srcAccelerationStructure = srcAccelerationStructure_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkClusterAccelerationStructureMoveObjectsInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureMoveObjectsInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureMoveObjectsInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkClusterAccelerationStructureMoveObjectsInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcAccelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ClusterAccelerationStructureMoveObjectsInfoNV const & ) const = default; +#else + bool operator==( ClusterAccelerationStructureMoveObjectsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcAccelerationStructure == rhs.srcAccelerationStructure ); +# endif + } + + bool operator!=( ClusterAccelerationStructureMoveObjectsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress srcAccelerationStructure = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ClusterAccelerationStructureMoveObjectsInfoNV; + }; +#endif + + // wrapper struct for struct VkCoarseSampleLocationNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCoarseSampleLocationNV.html + struct CoarseSampleLocationNV + { + using NativeType = VkCoarseSampleLocationNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CoarseSampleLocationNV( uint32_t pixelX_ = {}, uint32_t pixelY_ = {}, uint32_t sample_ = {} ) VULKAN_HPP_NOEXCEPT + : pixelX{ pixelX_ } + , pixelY{ pixelY_ } + , sample{ sample_ } + { + } + + VULKAN_HPP_CONSTEXPR CoarseSampleLocationNV( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CoarseSampleLocationNV( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CoarseSampleLocationNV( *reinterpret_cast( &rhs ) ) + { + } + + CoarseSampleLocationNV & operator=( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CoarseSampleLocationNV & operator=( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setPixelX( uint32_t pixelX_ ) & VULKAN_HPP_NOEXCEPT + { + pixelX = pixelX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV && setPixelX( uint32_t pixelX_ ) && VULKAN_HPP_NOEXCEPT + { + pixelX = pixelX_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setPixelY( uint32_t pixelY_ ) & VULKAN_HPP_NOEXCEPT + { + pixelY = pixelY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV && setPixelY( uint32_t pixelY_ ) && VULKAN_HPP_NOEXCEPT + { + pixelY = pixelY_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & setSample( uint32_t sample_ ) & VULKAN_HPP_NOEXCEPT + { + sample = sample_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV && setSample( uint32_t sample_ ) && VULKAN_HPP_NOEXCEPT + { + sample = sample_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCoarseSampleLocationNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCoarseSampleLocationNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCoarseSampleLocationNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCoarseSampleLocationNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( pixelX, pixelY, sample ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CoarseSampleLocationNV const & ) const = default; +#else + bool operator==( CoarseSampleLocationNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( pixelX == rhs.pixelX ) && ( pixelY == rhs.pixelY ) && ( sample == rhs.sample ); +# endif + } + + bool operator!=( CoarseSampleLocationNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t pixelX = {}; + uint32_t pixelY = {}; + uint32_t sample = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CoarseSampleLocationNV; + }; +#endif + + // wrapper struct for struct VkCoarseSampleOrderCustomNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCoarseSampleOrderCustomNV.html + struct CoarseSampleOrderCustomNV + { + using NativeType = VkCoarseSampleOrderCustomNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CoarseSampleOrderCustomNV( ShadingRatePaletteEntryNV shadingRate_ = ShadingRatePaletteEntryNV::eNoInvocations, + uint32_t sampleCount_ = {}, + uint32_t sampleLocationCount_ = {}, + CoarseSampleLocationNV const * pSampleLocations_ = {} ) VULKAN_HPP_NOEXCEPT + : shadingRate{ shadingRate_ } + , sampleCount{ sampleCount_ } + , sampleLocationCount{ sampleLocationCount_ } + , pSampleLocations{ pSampleLocations_ } + { + } + + VULKAN_HPP_CONSTEXPR CoarseSampleOrderCustomNV( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CoarseSampleOrderCustomNV( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CoarseSampleOrderCustomNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CoarseSampleOrderCustomNV( ShadingRatePaletteEntryNV shadingRate_, + uint32_t sampleCount_, + ArrayProxyNoTemporaries const & sampleLocations_ ) + : shadingRate( shadingRate_ ) + , sampleCount( sampleCount_ ) + , sampleLocationCount( static_cast( sampleLocations_.size() ) ) + , pSampleLocations( sampleLocations_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CoarseSampleOrderCustomNV & operator=( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CoarseSampleOrderCustomNV & operator=( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setShadingRate( ShadingRatePaletteEntryNV shadingRate_ ) & VULKAN_HPP_NOEXCEPT + { + shadingRate = shadingRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV && setShadingRate( ShadingRatePaletteEntryNV shadingRate_ ) && VULKAN_HPP_NOEXCEPT + { + shadingRate = shadingRate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setSampleCount( uint32_t sampleCount_ ) & VULKAN_HPP_NOEXCEPT + { + sampleCount = sampleCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV && setSampleCount( uint32_t sampleCount_ ) && VULKAN_HPP_NOEXCEPT + { + sampleCount = sampleCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setSampleLocationCount( uint32_t sampleLocationCount_ ) & VULKAN_HPP_NOEXCEPT + { + sampleLocationCount = sampleLocationCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV && setSampleLocationCount( uint32_t sampleLocationCount_ ) && VULKAN_HPP_NOEXCEPT + { + sampleLocationCount = sampleLocationCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & setPSampleLocations( CoarseSampleLocationNV const * pSampleLocations_ ) & VULKAN_HPP_NOEXCEPT + { + pSampleLocations = pSampleLocations_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV && setPSampleLocations( CoarseSampleLocationNV const * pSampleLocations_ ) && VULKAN_HPP_NOEXCEPT + { + pSampleLocations = pSampleLocations_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CoarseSampleOrderCustomNV & setSampleLocations( ArrayProxyNoTemporaries const & sampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + sampleLocationCount = static_cast( sampleLocations_.size() ); + pSampleLocations = sampleLocations_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCoarseSampleOrderCustomNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCoarseSampleOrderCustomNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCoarseSampleOrderCustomNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCoarseSampleOrderCustomNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( shadingRate, sampleCount, sampleLocationCount, pSampleLocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CoarseSampleOrderCustomNV const & ) const = default; +#else + bool operator==( CoarseSampleOrderCustomNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( shadingRate == rhs.shadingRate ) && ( sampleCount == rhs.sampleCount ) && ( sampleLocationCount == rhs.sampleLocationCount ) && + ( pSampleLocations == rhs.pSampleLocations ); +# endif + } + + bool operator!=( CoarseSampleOrderCustomNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ShadingRatePaletteEntryNV shadingRate = ShadingRatePaletteEntryNV::eNoInvocations; + uint32_t sampleCount = {}; + uint32_t sampleLocationCount = {}; + CoarseSampleLocationNV const * pSampleLocations = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CoarseSampleOrderCustomNV; + }; +#endif + + // wrapper struct for struct VkColorBlendAdvancedEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkColorBlendAdvancedEXT.html + struct ColorBlendAdvancedEXT + { + using NativeType = VkColorBlendAdvancedEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ColorBlendAdvancedEXT( BlendOp advancedBlendOp_ = BlendOp::eAdd, + Bool32 srcPremultiplied_ = {}, + Bool32 dstPremultiplied_ = {}, + BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated, + Bool32 clampResults_ = {} ) VULKAN_HPP_NOEXCEPT + : advancedBlendOp{ advancedBlendOp_ } + , srcPremultiplied{ srcPremultiplied_ } + , dstPremultiplied{ dstPremultiplied_ } + , blendOverlap{ blendOverlap_ } + , clampResults{ clampResults_ } + { + } + + VULKAN_HPP_CONSTEXPR ColorBlendAdvancedEXT( ColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ColorBlendAdvancedEXT( VkColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ColorBlendAdvancedEXT( *reinterpret_cast( &rhs ) ) + { + } + + ColorBlendAdvancedEXT & operator=( ColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ColorBlendAdvancedEXT & operator=( VkColorBlendAdvancedEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setAdvancedBlendOp( BlendOp advancedBlendOp_ ) & VULKAN_HPP_NOEXCEPT + { + advancedBlendOp = advancedBlendOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT && setAdvancedBlendOp( BlendOp advancedBlendOp_ ) && VULKAN_HPP_NOEXCEPT + { + advancedBlendOp = advancedBlendOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setSrcPremultiplied( Bool32 srcPremultiplied_ ) & VULKAN_HPP_NOEXCEPT + { + srcPremultiplied = srcPremultiplied_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT && setSrcPremultiplied( Bool32 srcPremultiplied_ ) && VULKAN_HPP_NOEXCEPT + { + srcPremultiplied = srcPremultiplied_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setDstPremultiplied( Bool32 dstPremultiplied_ ) & VULKAN_HPP_NOEXCEPT + { + dstPremultiplied = dstPremultiplied_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT && setDstPremultiplied( Bool32 dstPremultiplied_ ) && VULKAN_HPP_NOEXCEPT + { + dstPremultiplied = dstPremultiplied_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setBlendOverlap( BlendOverlapEXT blendOverlap_ ) & VULKAN_HPP_NOEXCEPT + { + blendOverlap = blendOverlap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT && setBlendOverlap( BlendOverlapEXT blendOverlap_ ) && VULKAN_HPP_NOEXCEPT + { + blendOverlap = blendOverlap_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT & setClampResults( Bool32 clampResults_ ) & VULKAN_HPP_NOEXCEPT + { + clampResults = clampResults_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendAdvancedEXT && setClampResults( Bool32 clampResults_ ) && VULKAN_HPP_NOEXCEPT + { + clampResults = clampResults_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkColorBlendAdvancedEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkColorBlendAdvancedEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkColorBlendAdvancedEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkColorBlendAdvancedEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( advancedBlendOp, srcPremultiplied, dstPremultiplied, blendOverlap, clampResults ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ColorBlendAdvancedEXT const & ) const = default; +#else + bool operator==( ColorBlendAdvancedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( advancedBlendOp == rhs.advancedBlendOp ) && ( srcPremultiplied == rhs.srcPremultiplied ) && ( dstPremultiplied == rhs.dstPremultiplied ) && + ( blendOverlap == rhs.blendOverlap ) && ( clampResults == rhs.clampResults ); +# endif + } + + bool operator!=( ColorBlendAdvancedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + BlendOp advancedBlendOp = BlendOp::eAdd; + Bool32 srcPremultiplied = {}; + Bool32 dstPremultiplied = {}; + BlendOverlapEXT blendOverlap = BlendOverlapEXT::eUncorrelated; + Bool32 clampResults = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ColorBlendAdvancedEXT; + }; +#endif + + // wrapper struct for struct VkColorBlendEquationEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkColorBlendEquationEXT.html + struct ColorBlendEquationEXT + { + using NativeType = VkColorBlendEquationEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ColorBlendEquationEXT( BlendFactor srcColorBlendFactor_ = BlendFactor::eZero, + BlendFactor dstColorBlendFactor_ = BlendFactor::eZero, + BlendOp colorBlendOp_ = BlendOp::eAdd, + BlendFactor srcAlphaBlendFactor_ = BlendFactor::eZero, + BlendFactor dstAlphaBlendFactor_ = BlendFactor::eZero, + BlendOp alphaBlendOp_ = BlendOp::eAdd ) VULKAN_HPP_NOEXCEPT + : srcColorBlendFactor{ srcColorBlendFactor_ } + , dstColorBlendFactor{ dstColorBlendFactor_ } + , colorBlendOp{ colorBlendOp_ } + , srcAlphaBlendFactor{ srcAlphaBlendFactor_ } + , dstAlphaBlendFactor{ dstAlphaBlendFactor_ } + , alphaBlendOp{ alphaBlendOp_ } + { + } + + VULKAN_HPP_CONSTEXPR ColorBlendEquationEXT( ColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ColorBlendEquationEXT( VkColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ColorBlendEquationEXT( *reinterpret_cast( &rhs ) ) + { + } + + ColorBlendEquationEXT & operator=( ColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ColorBlendEquationEXT & operator=( VkColorBlendEquationEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ ) & VULKAN_HPP_NOEXCEPT + { + srcColorBlendFactor = srcColorBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT && setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ ) && VULKAN_HPP_NOEXCEPT + { + srcColorBlendFactor = srcColorBlendFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ ) & VULKAN_HPP_NOEXCEPT + { + dstColorBlendFactor = dstColorBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT && setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ ) && VULKAN_HPP_NOEXCEPT + { + dstColorBlendFactor = dstColorBlendFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setColorBlendOp( BlendOp colorBlendOp_ ) & VULKAN_HPP_NOEXCEPT + { + colorBlendOp = colorBlendOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT && setColorBlendOp( BlendOp colorBlendOp_ ) && VULKAN_HPP_NOEXCEPT + { + colorBlendOp = colorBlendOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ ) & VULKAN_HPP_NOEXCEPT + { + srcAlphaBlendFactor = srcAlphaBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT && setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ ) && VULKAN_HPP_NOEXCEPT + { + srcAlphaBlendFactor = srcAlphaBlendFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ ) & VULKAN_HPP_NOEXCEPT + { + dstAlphaBlendFactor = dstAlphaBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT && setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ ) && VULKAN_HPP_NOEXCEPT + { + dstAlphaBlendFactor = dstAlphaBlendFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT & setAlphaBlendOp( BlendOp alphaBlendOp_ ) & VULKAN_HPP_NOEXCEPT + { + alphaBlendOp = alphaBlendOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ColorBlendEquationEXT && setAlphaBlendOp( BlendOp alphaBlendOp_ ) && VULKAN_HPP_NOEXCEPT + { + alphaBlendOp = alphaBlendOp_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkColorBlendEquationEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkColorBlendEquationEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkColorBlendEquationEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkColorBlendEquationEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcColorBlendFactor, dstColorBlendFactor, colorBlendOp, srcAlphaBlendFactor, dstAlphaBlendFactor, alphaBlendOp ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ColorBlendEquationEXT const & ) const = default; +#else + bool operator==( ColorBlendEquationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcColorBlendFactor == rhs.srcColorBlendFactor ) && ( dstColorBlendFactor == rhs.dstColorBlendFactor ) && ( colorBlendOp == rhs.colorBlendOp ) && + ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor ) && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor ) && ( alphaBlendOp == rhs.alphaBlendOp ); +# endif + } + + bool operator!=( ColorBlendEquationEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + BlendFactor srcColorBlendFactor = BlendFactor::eZero; + BlendFactor dstColorBlendFactor = BlendFactor::eZero; + BlendOp colorBlendOp = BlendOp::eAdd; + BlendFactor srcAlphaBlendFactor = BlendFactor::eZero; + BlendFactor dstAlphaBlendFactor = BlendFactor::eZero; + BlendOp alphaBlendOp = BlendOp::eAdd; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ColorBlendEquationEXT; + }; +#endif + + // wrapper struct for struct VkCommandBufferAllocateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferAllocateInfo.html + struct CommandBufferAllocateInfo + { + using NativeType = VkCommandBufferAllocateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferAllocateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo( CommandPool commandPool_ = {}, + CommandBufferLevel level_ = CommandBufferLevel::ePrimary, + uint32_t commandBufferCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , commandPool{ commandPool_ } + , level{ level_ } + , commandBufferCount{ commandBufferCount_ } + { + } + + VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferAllocateInfo( *reinterpret_cast( &rhs ) ) + { + } + + CommandBufferAllocateInfo & operator=( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CommandBufferAllocateInfo & operator=( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setCommandPool( CommandPool commandPool_ ) & VULKAN_HPP_NOEXCEPT + { + commandPool = commandPool_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo && setCommandPool( CommandPool commandPool_ ) && VULKAN_HPP_NOEXCEPT + { + commandPool = commandPool_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setLevel( CommandBufferLevel level_ ) & VULKAN_HPP_NOEXCEPT + { + level = level_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo && setLevel( CommandBufferLevel level_ ) && VULKAN_HPP_NOEXCEPT + { + level = level_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) & VULKAN_HPP_NOEXCEPT + { + commandBufferCount = commandBufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo && setCommandBufferCount( uint32_t commandBufferCount_ ) && VULKAN_HPP_NOEXCEPT + { + commandBufferCount = commandBufferCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCommandBufferAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferAllocateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCommandBufferAllocateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, commandPool, level, commandBufferCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferAllocateInfo const & ) const = default; +#else + bool operator==( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( commandPool == rhs.commandPool ) && ( level == rhs.level ) && + ( commandBufferCount == rhs.commandBufferCount ); +# endif + } + + bool operator!=( CommandBufferAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCommandBufferAllocateInfo; + void const * pNext = {}; + CommandPool commandPool = {}; + CommandBufferLevel level = CommandBufferLevel::ePrimary; + uint32_t commandBufferCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CommandBufferAllocateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = CommandBufferAllocateInfo; + }; + + // wrapper struct for struct VkCommandBufferInheritanceInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferInheritanceInfo.html + struct CommandBufferInheritanceInfo + { + using NativeType = VkCommandBufferInheritanceInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo( RenderPass renderPass_ = {}, + uint32_t subpass_ = {}, + Framebuffer framebuffer_ = {}, + Bool32 occlusionQueryEnable_ = {}, + QueryControlFlags queryFlags_ = {}, + QueryPipelineStatisticFlags pipelineStatistics_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , renderPass{ renderPass_ } + , subpass{ subpass_ } + , framebuffer{ framebuffer_ } + , occlusionQueryEnable{ occlusionQueryEnable_ } + , queryFlags{ queryFlags_ } + , pipelineStatistics{ pipelineStatistics_ } + { + } + + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceInfo( *reinterpret_cast( &rhs ) ) + { + } + + CommandBufferInheritanceInfo & operator=( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CommandBufferInheritanceInfo & operator=( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setRenderPass( RenderPass renderPass_ ) & VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo && setRenderPass( RenderPass renderPass_ ) && VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setSubpass( uint32_t subpass_ ) & VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo && setSubpass( uint32_t subpass_ ) && VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setFramebuffer( Framebuffer framebuffer_ ) & VULKAN_HPP_NOEXCEPT + { + framebuffer = framebuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo && setFramebuffer( Framebuffer framebuffer_ ) && VULKAN_HPP_NOEXCEPT + { + framebuffer = framebuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ ) & VULKAN_HPP_NOEXCEPT + { + occlusionQueryEnable = occlusionQueryEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo && setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ ) && VULKAN_HPP_NOEXCEPT + { + occlusionQueryEnable = occlusionQueryEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setQueryFlags( QueryControlFlags queryFlags_ ) & VULKAN_HPP_NOEXCEPT + { + queryFlags = queryFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo && setQueryFlags( QueryControlFlags queryFlags_ ) && VULKAN_HPP_NOEXCEPT + { + queryFlags = queryFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineStatistics = pipelineStatistics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo && setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineStatistics = pipelineStatistics_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCommandBufferInheritanceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, renderPass, subpass, framebuffer, occlusionQueryEnable, queryFlags, pipelineStatistics ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceInfo const & ) const = default; +#else + bool operator==( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && ( subpass == rhs.subpass ) && + ( framebuffer == rhs.framebuffer ) && ( occlusionQueryEnable == rhs.occlusionQueryEnable ) && ( queryFlags == rhs.queryFlags ) && + ( pipelineStatistics == rhs.pipelineStatistics ); +# endif + } + + bool operator!=( CommandBufferInheritanceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCommandBufferInheritanceInfo; + void const * pNext = {}; + RenderPass renderPass = {}; + uint32_t subpass = {}; + Framebuffer framebuffer = {}; + Bool32 occlusionQueryEnable = {}; + QueryControlFlags queryFlags = {}; + QueryPipelineStatisticFlags pipelineStatistics = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CommandBufferInheritanceInfo; + }; +#endif + + template <> + struct CppType + { + using Type = CommandBufferInheritanceInfo; + }; + + // wrapper struct for struct VkCommandBufferBeginInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferBeginInfo.html + struct CommandBufferBeginInfo + { + using NativeType = VkCommandBufferBeginInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferBeginInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = {}, + CommandBufferInheritanceInfo const * pInheritanceInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pInheritanceInfo{ pInheritanceInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferBeginInfo( *reinterpret_cast( &rhs ) ) + { + } + + CommandBufferBeginInfo & operator=( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CommandBufferBeginInfo & operator=( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setFlags( CommandBufferUsageFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo && setFlags( CommandBufferUsageFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & setPInheritanceInfo( CommandBufferInheritanceInfo const * pInheritanceInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pInheritanceInfo = pInheritanceInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo && setPInheritanceInfo( CommandBufferInheritanceInfo const * pInheritanceInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pInheritanceInfo = pInheritanceInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferBeginInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCommandBufferBeginInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pInheritanceInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferBeginInfo const & ) const = default; +#else + bool operator==( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pInheritanceInfo == rhs.pInheritanceInfo ); +# endif + } + + bool operator!=( CommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCommandBufferBeginInfo; + void const * pNext = {}; + CommandBufferUsageFlags flags = {}; + CommandBufferInheritanceInfo const * pInheritanceInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CommandBufferBeginInfo; + }; +#endif + + template <> + struct CppType + { + using Type = CommandBufferBeginInfo; + }; + + // wrapper struct for struct VkCommandBufferInheritanceConditionalRenderingInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferInheritanceConditionalRenderingInfoEXT.html + struct CommandBufferInheritanceConditionalRenderingInfoEXT + { + using NativeType = VkCommandBufferInheritanceConditionalRenderingInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceConditionalRenderingInfoEXT( Bool32 conditionalRenderingEnable_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , conditionalRenderingEnable{ conditionalRenderingEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR + CommandBufferInheritanceConditionalRenderingInfoEXT( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceConditionalRenderingInfoEXT( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceConditionalRenderingInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + CommandBufferInheritanceConditionalRenderingInfoEXT & + operator=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CommandBufferInheritanceConditionalRenderingInfoEXT & operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT & setConditionalRenderingEnable( Bool32 conditionalRenderingEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + conditionalRenderingEnable = conditionalRenderingEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT && setConditionalRenderingEnable( Bool32 conditionalRenderingEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + conditionalRenderingEnable = conditionalRenderingEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceConditionalRenderingInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceConditionalRenderingInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceConditionalRenderingInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, conditionalRenderingEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceConditionalRenderingInfoEXT const & ) const = default; +#else + bool operator==( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conditionalRenderingEnable == rhs.conditionalRenderingEnable ); +# endif + } + + bool operator!=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT; + void const * pNext = {}; + Bool32 conditionalRenderingEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CommandBufferInheritanceConditionalRenderingInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = CommandBufferInheritanceConditionalRenderingInfoEXT; + }; + + // wrapper struct for struct VkCommandBufferInheritanceDescriptorHeapInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferInheritanceDescriptorHeapInfoEXT.html + struct CommandBufferInheritanceDescriptorHeapInfoEXT + { + using NativeType = VkCommandBufferInheritanceDescriptorHeapInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceDescriptorHeapInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceDescriptorHeapInfoEXT( BindHeapInfoEXT const * pSamplerHeapBindInfo_ = {}, + BindHeapInfoEXT const * pResourceHeapBindInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pSamplerHeapBindInfo{ pSamplerHeapBindInfo_ } + , pResourceHeapBindInfo{ pResourceHeapBindInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR + CommandBufferInheritanceDescriptorHeapInfoEXT( CommandBufferInheritanceDescriptorHeapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceDescriptorHeapInfoEXT( VkCommandBufferInheritanceDescriptorHeapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceDescriptorHeapInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + CommandBufferInheritanceDescriptorHeapInfoEXT & operator=( CommandBufferInheritanceDescriptorHeapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CommandBufferInheritanceDescriptorHeapInfoEXT & operator=( VkCommandBufferInheritanceDescriptorHeapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceDescriptorHeapInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceDescriptorHeapInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceDescriptorHeapInfoEXT & setPSamplerHeapBindInfo( BindHeapInfoEXT const * pSamplerHeapBindInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pSamplerHeapBindInfo = pSamplerHeapBindInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceDescriptorHeapInfoEXT && setPSamplerHeapBindInfo( BindHeapInfoEXT const * pSamplerHeapBindInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pSamplerHeapBindInfo = pSamplerHeapBindInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceDescriptorHeapInfoEXT & setPResourceHeapBindInfo( BindHeapInfoEXT const * pResourceHeapBindInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pResourceHeapBindInfo = pResourceHeapBindInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceDescriptorHeapInfoEXT && setPResourceHeapBindInfo( BindHeapInfoEXT const * pResourceHeapBindInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pResourceHeapBindInfo = pResourceHeapBindInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCommandBufferInheritanceDescriptorHeapInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceDescriptorHeapInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceDescriptorHeapInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceDescriptorHeapInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pSamplerHeapBindInfo, pResourceHeapBindInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceDescriptorHeapInfoEXT const & ) const = default; +#else + bool operator==( CommandBufferInheritanceDescriptorHeapInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pSamplerHeapBindInfo == rhs.pSamplerHeapBindInfo ) && + ( pResourceHeapBindInfo == rhs.pResourceHeapBindInfo ); +# endif + } + + bool operator!=( CommandBufferInheritanceDescriptorHeapInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCommandBufferInheritanceDescriptorHeapInfoEXT; + void const * pNext = {}; + BindHeapInfoEXT const * pSamplerHeapBindInfo = {}; + BindHeapInfoEXT const * pResourceHeapBindInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CommandBufferInheritanceDescriptorHeapInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = CommandBufferInheritanceDescriptorHeapInfoEXT; + }; + + // wrapper struct for struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderPassTransformInfoQCOM.html + struct CommandBufferInheritanceRenderPassTransformInfoQCOM + { + using NativeType = VkCommandBufferInheritanceRenderPassTransformInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderPassTransformInfoQCOM( SurfaceTransformFlagBitsKHR transform_ = SurfaceTransformFlagBitsKHR::eIdentity, + Rect2D renderArea_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , transform{ transform_ } + , renderArea{ renderArea_ } + { + } + + VULKAN_HPP_CONSTEXPR + CommandBufferInheritanceRenderPassTransformInfoQCOM( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceRenderPassTransformInfoQCOM( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceRenderPassTransformInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + CommandBufferInheritanceRenderPassTransformInfoQCOM & + operator=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CommandBufferInheritanceRenderPassTransformInfoQCOM & operator=( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM & setTransform( SurfaceTransformFlagBitsKHR transform_ ) & VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM && setTransform( SurfaceTransformFlagBitsKHR transform_ ) && VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM & setRenderArea( Rect2D const & renderArea_ ) & VULKAN_HPP_NOEXCEPT + { + renderArea = renderArea_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM && setRenderArea( Rect2D const & renderArea_ ) && VULKAN_HPP_NOEXCEPT + { + renderArea = renderArea_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceRenderPassTransformInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, transform, renderArea ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceRenderPassTransformInfoQCOM const & ) const = default; +#else + bool operator==( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform ) && ( renderArea == rhs.renderArea ); +# endif + } + + bool operator!=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM; + void const * pNext = {}; + SurfaceTransformFlagBitsKHR transform = SurfaceTransformFlagBitsKHR::eIdentity; + Rect2D renderArea = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CommandBufferInheritanceRenderPassTransformInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = CommandBufferInheritanceRenderPassTransformInfoQCOM; + }; + + // wrapper struct for struct VkCommandBufferInheritanceRenderingInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferInheritanceRenderingInfo.html + struct CommandBufferInheritanceRenderingInfo + { + using NativeType = VkCommandBufferInheritanceRenderingInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceRenderingInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderingInfo( RenderingFlags flags_ = {}, + uint32_t viewMask_ = {}, + uint32_t colorAttachmentCount_ = {}, + Format const * pColorAttachmentFormats_ = {}, + Format depthAttachmentFormat_ = Format::eUndefined, + Format stencilAttachmentFormat_ = Format::eUndefined, + SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , viewMask{ viewMask_ } + , colorAttachmentCount{ colorAttachmentCount_ } + , pColorAttachmentFormats{ pColorAttachmentFormats_ } + , depthAttachmentFormat{ depthAttachmentFormat_ } + , stencilAttachmentFormat{ stencilAttachmentFormat_ } + , rasterizationSamples{ rasterizationSamples_ } + { + } + + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderingInfo( CommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceRenderingInfo( VkCommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceRenderingInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CommandBufferInheritanceRenderingInfo( RenderingFlags flags_, + uint32_t viewMask_, + ArrayProxyNoTemporaries const & colorAttachmentFormats_, + Format depthAttachmentFormat_ = Format::eUndefined, + Format stencilAttachmentFormat_ = Format::eUndefined, + SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , viewMask( viewMask_ ) + , colorAttachmentCount( static_cast( colorAttachmentFormats_.size() ) ) + , pColorAttachmentFormats( colorAttachmentFormats_.data() ) + , depthAttachmentFormat( depthAttachmentFormat_ ) + , stencilAttachmentFormat( stencilAttachmentFormat_ ) + , rasterizationSamples( rasterizationSamples_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CommandBufferInheritanceRenderingInfo & operator=( CommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CommandBufferInheritanceRenderingInfo & operator=( VkCommandBufferInheritanceRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setFlags( RenderingFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo && setFlags( RenderingFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setViewMask( uint32_t viewMask_ ) & VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo && setViewMask( uint32_t viewMask_ ) && VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo && setColorAttachmentCount( uint32_t colorAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setPColorAttachmentFormats( Format const * pColorAttachmentFormats_ ) & VULKAN_HPP_NOEXCEPT + { + pColorAttachmentFormats = pColorAttachmentFormats_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo && setPColorAttachmentFormats( Format const * pColorAttachmentFormats_ ) && + VULKAN_HPP_NOEXCEPT + { + pColorAttachmentFormats = pColorAttachmentFormats_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CommandBufferInheritanceRenderingInfo & + setColorAttachmentFormats( ArrayProxyNoTemporaries const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachmentFormats_.size() ); + pColorAttachmentFormats = colorAttachmentFormats_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setDepthAttachmentFormat( Format depthAttachmentFormat_ ) & VULKAN_HPP_NOEXCEPT + { + depthAttachmentFormat = depthAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo && setDepthAttachmentFormat( Format depthAttachmentFormat_ ) && VULKAN_HPP_NOEXCEPT + { + depthAttachmentFormat = depthAttachmentFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setStencilAttachmentFormat( Format stencilAttachmentFormat_ ) & VULKAN_HPP_NOEXCEPT + { + stencilAttachmentFormat = stencilAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo && setStencilAttachmentFormat( Format stencilAttachmentFormat_ ) && VULKAN_HPP_NOEXCEPT + { + stencilAttachmentFormat = stencilAttachmentFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo & setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ ) & VULKAN_HPP_NOEXCEPT + { + rasterizationSamples = rasterizationSamples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderingInfo && setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ ) && VULKAN_HPP_NOEXCEPT + { + rasterizationSamples = rasterizationSamples_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCommandBufferInheritanceRenderingInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceRenderingInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceRenderingInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceRenderingInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, flags, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat, rasterizationSamples ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceRenderingInfo const & ) const = default; +#else + bool operator==( CommandBufferInheritanceRenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( viewMask == rhs.viewMask ) && + ( colorAttachmentCount == rhs.colorAttachmentCount ) && ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) && + ( depthAttachmentFormat == rhs.depthAttachmentFormat ) && ( stencilAttachmentFormat == rhs.stencilAttachmentFormat ) && + ( rasterizationSamples == rhs.rasterizationSamples ); +# endif + } + + bool operator!=( CommandBufferInheritanceRenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCommandBufferInheritanceRenderingInfo; + void const * pNext = {}; + RenderingFlags flags = {}; + uint32_t viewMask = {}; + uint32_t colorAttachmentCount = {}; + Format const * pColorAttachmentFormats = {}; + Format depthAttachmentFormat = Format::eUndefined; + Format stencilAttachmentFormat = Format::eUndefined; + SampleCountFlagBits rasterizationSamples = SampleCountFlagBits::e1; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CommandBufferInheritanceRenderingInfo; + }; +#endif + + template <> + struct CppType + { + using Type = CommandBufferInheritanceRenderingInfo; + }; + + using CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo; + + // wrapper struct for struct VkViewport, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkViewport.html + struct Viewport + { + using NativeType = VkViewport; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + Viewport( float x_ = {}, float y_ = {}, float width_ = {}, float height_ = {}, float minDepth_ = {}, float maxDepth_ = {} ) VULKAN_HPP_NOEXCEPT + : x{ x_ } + , y{ y_ } + , width{ width_ } + , height{ height_ } + , minDepth{ minDepth_ } + , maxDepth{ maxDepth_ } + { + } + + VULKAN_HPP_CONSTEXPR Viewport( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Viewport( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT : Viewport( *reinterpret_cast( &rhs ) ) {} + + Viewport & operator=( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + Viewport & operator=( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Viewport & setX( float x_ ) & VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport && setX( float x_ ) && VULKAN_HPP_NOEXCEPT + { + x = x_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Viewport & setY( float y_ ) & VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport && setY( float y_ ) && VULKAN_HPP_NOEXCEPT + { + y = y_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Viewport & setWidth( float width_ ) & VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport && setWidth( float width_ ) && VULKAN_HPP_NOEXCEPT + { + width = width_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Viewport & setHeight( float height_ ) & VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport && setHeight( float height_ ) && VULKAN_HPP_NOEXCEPT + { + height = height_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Viewport & setMinDepth( float minDepth_ ) & VULKAN_HPP_NOEXCEPT + { + minDepth = minDepth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport && setMinDepth( float minDepth_ ) && VULKAN_HPP_NOEXCEPT + { + minDepth = minDepth_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Viewport & setMaxDepth( float maxDepth_ ) & VULKAN_HPP_NOEXCEPT + { + maxDepth = maxDepth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Viewport && setMaxDepth( float maxDepth_ ) && VULKAN_HPP_NOEXCEPT + { + maxDepth = maxDepth_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkViewport const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkViewport &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkViewport const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkViewport *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y, width, height, minDepth, maxDepth ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Viewport const & ) const = default; +#else + bool operator==( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ) && ( width == rhs.width ) && ( height == rhs.height ) && ( minDepth == rhs.minDepth ) && + ( maxDepth == rhs.maxDepth ); +# endif + } + + bool operator!=( Viewport const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float x = {}; + float y = {}; + float width = {}; + float height = {}; + float minDepth = {}; + float maxDepth = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = Viewport; + }; +#endif + + // wrapper struct for struct VkCommandBufferInheritanceViewportScissorInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferInheritanceViewportScissorInfoNV.html + struct CommandBufferInheritanceViewportScissorInfoNV + { + using NativeType = VkCommandBufferInheritanceViewportScissorInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceViewportScissorInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CommandBufferInheritanceViewportScissorInfoNV( Bool32 viewportScissor2D_ = {}, + uint32_t viewportDepthCount_ = {}, + Viewport const * pViewportDepths_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , viewportScissor2D{ viewportScissor2D_ } + , viewportDepthCount{ viewportDepthCount_ } + , pViewportDepths{ pViewportDepths_ } + { + } + + VULKAN_HPP_CONSTEXPR + CommandBufferInheritanceViewportScissorInfoNV( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferInheritanceViewportScissorInfoNV( VkCommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferInheritanceViewportScissorInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + CommandBufferInheritanceViewportScissorInfoNV & operator=( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CommandBufferInheritanceViewportScissorInfoNV & operator=( VkCommandBufferInheritanceViewportScissorInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & setViewportScissor2D( Bool32 viewportScissor2D_ ) & VULKAN_HPP_NOEXCEPT + { + viewportScissor2D = viewportScissor2D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV && setViewportScissor2D( Bool32 viewportScissor2D_ ) && VULKAN_HPP_NOEXCEPT + { + viewportScissor2D = viewportScissor2D_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & setViewportDepthCount( uint32_t viewportDepthCount_ ) & VULKAN_HPP_NOEXCEPT + { + viewportDepthCount = viewportDepthCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV && setViewportDepthCount( uint32_t viewportDepthCount_ ) && VULKAN_HPP_NOEXCEPT + { + viewportDepthCount = viewportDepthCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV & setPViewportDepths( Viewport const * pViewportDepths_ ) & VULKAN_HPP_NOEXCEPT + { + pViewportDepths = pViewportDepths_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceViewportScissorInfoNV && setPViewportDepths( Viewport const * pViewportDepths_ ) && VULKAN_HPP_NOEXCEPT + { + pViewportDepths = pViewportDepths_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCommandBufferInheritanceViewportScissorInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceViewportScissorInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceViewportScissorInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCommandBufferInheritanceViewportScissorInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, viewportScissor2D, viewportDepthCount, pViewportDepths ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferInheritanceViewportScissorInfoNV const & ) const = default; +#else + bool operator==( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewportScissor2D == rhs.viewportScissor2D ) && + ( viewportDepthCount == rhs.viewportDepthCount ) && ( pViewportDepths == rhs.pViewportDepths ); +# endif + } + + bool operator!=( CommandBufferInheritanceViewportScissorInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCommandBufferInheritanceViewportScissorInfoNV; + void const * pNext = {}; + Bool32 viewportScissor2D = {}; + uint32_t viewportDepthCount = {}; + Viewport const * pViewportDepths = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CommandBufferInheritanceViewportScissorInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = CommandBufferInheritanceViewportScissorInfoNV; + }; + + // wrapper struct for struct VkCommandBufferSubmitInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandBufferSubmitInfo.html + struct CommandBufferSubmitInfo + { + using NativeType = VkCommandBufferSubmitInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferSubmitInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + CommandBufferSubmitInfo( CommandBuffer commandBuffer_ = {}, uint32_t deviceMask_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , commandBuffer{ commandBuffer_ } + , deviceMask{ deviceMask_ } + { + } + + VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfo( CommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandBufferSubmitInfo( VkCommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandBufferSubmitInfo( *reinterpret_cast( &rhs ) ) + { + } + + CommandBufferSubmitInfo & operator=( CommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CommandBufferSubmitInfo & operator=( VkCommandBufferSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setCommandBuffer( CommandBuffer commandBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + commandBuffer = commandBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo && setCommandBuffer( CommandBuffer commandBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + commandBuffer = commandBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo & setDeviceMask( uint32_t deviceMask_ ) & VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfo && setDeviceMask( uint32_t deviceMask_ ) && VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCommandBufferSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandBufferSubmitInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCommandBufferSubmitInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, commandBuffer, deviceMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandBufferSubmitInfo const & ) const = default; +#else + bool operator==( CommandBufferSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( commandBuffer == rhs.commandBuffer ) && ( deviceMask == rhs.deviceMask ); +# endif + } + + bool operator!=( CommandBufferSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCommandBufferSubmitInfo; + void const * pNext = {}; + CommandBuffer commandBuffer = {}; + uint32_t deviceMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CommandBufferSubmitInfo; + }; +#endif + + template <> + struct CppType + { + using Type = CommandBufferSubmitInfo; + }; + + using CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo; + + // wrapper struct for struct VkCommandPoolCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCommandPoolCreateInfo.html + struct CommandPoolCreateInfo + { + using NativeType = VkCommandPoolCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandPoolCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = {}, uint32_t queueFamilyIndex_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , queueFamilyIndex{ queueFamilyIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CommandPoolCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + CommandPoolCreateInfo & operator=( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CommandPoolCreateInfo & operator=( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setFlags( CommandPoolCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo && setFlags( CommandPoolCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo && setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCommandPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandPoolCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCommandPoolCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCommandPoolCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, queueFamilyIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CommandPoolCreateInfo const & ) const = default; +#else + bool operator==( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueFamilyIndex == rhs.queueFamilyIndex ); +# endif + } + + bool operator!=( CommandPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCommandPoolCreateInfo; + void const * pNext = {}; + CommandPoolCreateFlags flags = {}; + uint32_t queueFamilyIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CommandPoolCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = CommandPoolCreateInfo; + }; + + // wrapper struct for struct VkComputeOccupancyPriorityParametersNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkComputeOccupancyPriorityParametersNV.html + struct ComputeOccupancyPriorityParametersNV + { + using NativeType = VkComputeOccupancyPriorityParametersNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eComputeOccupancyPriorityParametersNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ComputeOccupancyPriorityParametersNV( float occupancyPriority_ = {}, float occupancyThrottling_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , occupancyPriority{ occupancyPriority_ } + , occupancyThrottling{ occupancyThrottling_ } + { + } + + VULKAN_HPP_CONSTEXPR ComputeOccupancyPriorityParametersNV( ComputeOccupancyPriorityParametersNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ComputeOccupancyPriorityParametersNV( VkComputeOccupancyPriorityParametersNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ComputeOccupancyPriorityParametersNV( *reinterpret_cast( &rhs ) ) + { + } + + ComputeOccupancyPriorityParametersNV & operator=( ComputeOccupancyPriorityParametersNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ComputeOccupancyPriorityParametersNV & operator=( VkComputeOccupancyPriorityParametersNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ComputeOccupancyPriorityParametersNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputeOccupancyPriorityParametersNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComputeOccupancyPriorityParametersNV & setOccupancyPriority( float occupancyPriority_ ) & VULKAN_HPP_NOEXCEPT + { + occupancyPriority = occupancyPriority_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputeOccupancyPriorityParametersNV && setOccupancyPriority( float occupancyPriority_ ) && VULKAN_HPP_NOEXCEPT + { + occupancyPriority = occupancyPriority_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComputeOccupancyPriorityParametersNV & setOccupancyThrottling( float occupancyThrottling_ ) & VULKAN_HPP_NOEXCEPT + { + occupancyThrottling = occupancyThrottling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputeOccupancyPriorityParametersNV && setOccupancyThrottling( float occupancyThrottling_ ) && VULKAN_HPP_NOEXCEPT + { + occupancyThrottling = occupancyThrottling_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkComputeOccupancyPriorityParametersNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkComputeOccupancyPriorityParametersNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkComputeOccupancyPriorityParametersNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkComputeOccupancyPriorityParametersNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, occupancyPriority, occupancyThrottling ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ComputeOccupancyPriorityParametersNV const & ) const = default; +#else + bool operator==( ComputeOccupancyPriorityParametersNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( occupancyPriority == rhs.occupancyPriority ) && + ( occupancyThrottling == rhs.occupancyThrottling ); +# endif + } + + bool operator!=( ComputeOccupancyPriorityParametersNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eComputeOccupancyPriorityParametersNV; + void const * pNext = {}; + float occupancyPriority = {}; + float occupancyThrottling = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ComputeOccupancyPriorityParametersNV; + }; +#endif + + template <> + struct CppType + { + using Type = ComputeOccupancyPriorityParametersNV; + }; + + // wrapper struct for struct VkSpecializationMapEntry, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSpecializationMapEntry.html + struct SpecializationMapEntry + { + using NativeType = VkSpecializationMapEntry; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SpecializationMapEntry( uint32_t constantID_ = {}, uint32_t offset_ = {}, size_t size_ = {} ) VULKAN_HPP_NOEXCEPT + : constantID{ constantID_ } + , offset{ offset_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR SpecializationMapEntry( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SpecializationMapEntry( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT + : SpecializationMapEntry( *reinterpret_cast( &rhs ) ) + { + } + + SpecializationMapEntry & operator=( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SpecializationMapEntry & operator=( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setConstantID( uint32_t constantID_ ) & VULKAN_HPP_NOEXCEPT + { + constantID = constantID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry && setConstantID( uint32_t constantID_ ) && VULKAN_HPP_NOEXCEPT + { + constantID = constantID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setOffset( uint32_t offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry && setOffset( uint32_t offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & setSize( size_t size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry && setSize( size_t size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSpecializationMapEntry const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSpecializationMapEntry &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSpecializationMapEntry const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSpecializationMapEntry *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( constantID, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SpecializationMapEntry const & ) const = default; +#else + bool operator==( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( constantID == rhs.constantID ) && ( offset == rhs.offset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( SpecializationMapEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t constantID = {}; + uint32_t offset = {}; + size_t size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SpecializationMapEntry; + }; +#endif + + // wrapper struct for struct VkSpecializationInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSpecializationInfo.html + struct SpecializationInfo + { + using NativeType = VkSpecializationInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SpecializationInfo( uint32_t mapEntryCount_ = {}, + SpecializationMapEntry const * pMapEntries_ = {}, + size_t dataSize_ = {}, + void const * pData_ = {} ) VULKAN_HPP_NOEXCEPT + : mapEntryCount{ mapEntryCount_ } + , pMapEntries{ pMapEntries_ } + , dataSize{ dataSize_ } + , pData{ pData_ } + { + } + + VULKAN_HPP_CONSTEXPR SpecializationInfo( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SpecializationInfo( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SpecializationInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + SpecializationInfo( ArrayProxyNoTemporaries const & mapEntries_, ArrayProxyNoTemporaries const & data_ = {} ) + : mapEntryCount( static_cast( mapEntries_.size() ) ) + , pMapEntries( mapEntries_.data() ) + , dataSize( data_.size() * sizeof( T ) ) + , pData( data_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SpecializationInfo & operator=( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SpecializationInfo & operator=( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setMapEntryCount( uint32_t mapEntryCount_ ) & VULKAN_HPP_NOEXCEPT + { + mapEntryCount = mapEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo && setMapEntryCount( uint32_t mapEntryCount_ ) && VULKAN_HPP_NOEXCEPT + { + mapEntryCount = mapEntryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setPMapEntries( SpecializationMapEntry const * pMapEntries_ ) & VULKAN_HPP_NOEXCEPT + { + pMapEntries = pMapEntries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo && setPMapEntries( SpecializationMapEntry const * pMapEntries_ ) && VULKAN_HPP_NOEXCEPT + { + pMapEntries = pMapEntries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SpecializationInfo & setMapEntries( ArrayProxyNoTemporaries const & mapEntries_ ) VULKAN_HPP_NOEXCEPT + { + mapEntryCount = static_cast( mapEntries_.size() ); + pMapEntries = mapEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setDataSize( size_t dataSize_ ) & VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo && setDataSize( size_t dataSize_ ) && VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & setPData( void const * pData_ ) & VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SpecializationInfo && setPData( void const * pData_ ) && VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + SpecializationInfo & setData( ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = data_.size() * sizeof( T ); + pData = data_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSpecializationInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSpecializationInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSpecializationInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSpecializationInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( mapEntryCount, pMapEntries, dataSize, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SpecializationInfo const & ) const = default; +#else + bool operator==( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( mapEntryCount == rhs.mapEntryCount ) && ( pMapEntries == rhs.pMapEntries ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( SpecializationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t mapEntryCount = {}; + SpecializationMapEntry const * pMapEntries = {}; + size_t dataSize = {}; + void const * pData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SpecializationInfo; + }; +#endif + + // wrapper struct for struct VkPipelineShaderStageCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineShaderStageCreateInfo.html + struct PipelineShaderStageCreateInfo + { + using NativeType = VkPipelineShaderStageCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineShaderStageCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = {}, + ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, + ShaderModule module_ = {}, + char const * pName_ = {}, + SpecializationInfo const * pSpecializationInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , stage{ stage_ } + , module{ module_ } + , pName{ pName_ } + , pSpecializationInfo{ pSpecializationInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineShaderStageCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineShaderStageCreateInfo & operator=( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineShaderStageCreateInfo & operator=( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setFlags( PipelineShaderStageCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo && setFlags( PipelineShaderStageCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setStage( ShaderStageFlagBits stage_ ) & VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo && setStage( ShaderStageFlagBits stage_ ) && VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setModule( ShaderModule module_ ) & VULKAN_HPP_NOEXCEPT + { + module = module_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo && setModule( ShaderModule module_ ) && VULKAN_HPP_NOEXCEPT + { + module = module_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPName( char const * pName_ ) & VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo && setPName( char const * pName_ ) && VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & setPSpecializationInfo( SpecializationInfo const * pSpecializationInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pSpecializationInfo = pSpecializationInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo && setPSpecializationInfo( SpecializationInfo const * pSpecializationInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pSpecializationInfo = pSpecializationInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineShaderStageCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineShaderStageCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineShaderStageCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineShaderStageCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, stage, module, pName, pSpecializationInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = stage <=> rhs.stage; cmp != 0 ) + return cmp; + if ( auto cmp = module <=> rhs.module; cmp != 0 ) + return cmp; + if ( pName != rhs.pName ) + if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = pSpecializationInfo <=> rhs.pSpecializationInfo; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && ( module == rhs.module ) && + ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && ( pSpecializationInfo == rhs.pSpecializationInfo ); + } + + bool operator!=( PipelineShaderStageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePipelineShaderStageCreateInfo; + void const * pNext = {}; + PipelineShaderStageCreateFlags flags = {}; + ShaderStageFlagBits stage = ShaderStageFlagBits::eVertex; + ShaderModule module = {}; + char const * pName = {}; + SpecializationInfo const * pSpecializationInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineShaderStageCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineShaderStageCreateInfo; + }; + + // wrapper struct for struct VkComputePipelineCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkComputePipelineCreateInfo.html + struct ComputePipelineCreateInfo + { + using NativeType = VkComputePipelineCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eComputePipelineCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo( PipelineCreateFlags flags_ = {}, + PipelineShaderStageCreateInfo stage_ = {}, + PipelineLayout layout_ = {}, + Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , stage{ stage_ } + , layout{ layout_ } + , basePipelineHandle{ basePipelineHandle_ } + , basePipelineIndex{ basePipelineIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ComputePipelineCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + ComputePipelineCreateInfo & operator=( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ComputePipelineCreateInfo & operator=( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setFlags( PipelineCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo && setFlags( PipelineCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setStage( PipelineShaderStageCreateInfo const & stage_ ) & VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo && setStage( PipelineShaderStageCreateInfo const & stage_ ) && VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setBasePipelineHandle( Pipeline basePipelineHandle_ ) & VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo && setBasePipelineHandle( Pipeline basePipelineHandle_ ) && VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) & VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo && setBasePipelineIndex( int32_t basePipelineIndex_ ) && VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkComputePipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkComputePipelineCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkComputePipelineCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkComputePipelineCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, stage, layout, basePipelineHandle, basePipelineIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ComputePipelineCreateInfo const & ) const = default; +#else + bool operator==( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && ( layout == rhs.layout ) && + ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex ); +# endif + } + + bool operator!=( ComputePipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eComputePipelineCreateInfo; + void const * pNext = {}; + PipelineCreateFlags flags = {}; + PipelineShaderStageCreateInfo stage = {}; + PipelineLayout layout = {}; + Pipeline basePipelineHandle = {}; + int32_t basePipelineIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ComputePipelineCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ComputePipelineCreateInfo; + }; + + // wrapper struct for struct VkComputePipelineIndirectBufferInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkComputePipelineIndirectBufferInfoNV.html + struct ComputePipelineIndirectBufferInfoNV + { + using NativeType = VkComputePipelineIndirectBufferInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eComputePipelineIndirectBufferInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ComputePipelineIndirectBufferInfoNV( DeviceAddress deviceAddress_ = {}, + DeviceSize size_ = {}, + DeviceAddress pipelineDeviceAddressCaptureReplay_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceAddress{ deviceAddress_ } + , size{ size_ } + , pipelineDeviceAddressCaptureReplay{ pipelineDeviceAddressCaptureReplay_ } + { + } + + VULKAN_HPP_CONSTEXPR ComputePipelineIndirectBufferInfoNV( ComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ComputePipelineIndirectBufferInfoNV( VkComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ComputePipelineIndirectBufferInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ComputePipelineIndirectBufferInfoNV & operator=( ComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ComputePipelineIndirectBufferInfoNV & operator=( VkComputePipelineIndirectBufferInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV & setDeviceAddress( DeviceAddress deviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV && setDeviceAddress( DeviceAddress deviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV & setPipelineDeviceAddressCaptureReplay( DeviceAddress pipelineDeviceAddressCaptureReplay_ ) & + VULKAN_HPP_NOEXCEPT + { + pipelineDeviceAddressCaptureReplay = pipelineDeviceAddressCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ComputePipelineIndirectBufferInfoNV && setPipelineDeviceAddressCaptureReplay( DeviceAddress pipelineDeviceAddressCaptureReplay_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelineDeviceAddressCaptureReplay = pipelineDeviceAddressCaptureReplay_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkComputePipelineIndirectBufferInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkComputePipelineIndirectBufferInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkComputePipelineIndirectBufferInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkComputePipelineIndirectBufferInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceAddress, size, pipelineDeviceAddressCaptureReplay ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ComputePipelineIndirectBufferInfoNV const & ) const = default; +#else + bool operator==( ComputePipelineIndirectBufferInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress ) && ( size == rhs.size ) && + ( pipelineDeviceAddressCaptureReplay == rhs.pipelineDeviceAddressCaptureReplay ); +# endif + } + + bool operator!=( ComputePipelineIndirectBufferInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eComputePipelineIndirectBufferInfoNV; + void const * pNext = {}; + DeviceAddress deviceAddress = {}; + DeviceSize size = {}; + DeviceAddress pipelineDeviceAddressCaptureReplay = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ComputePipelineIndirectBufferInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = ComputePipelineIndirectBufferInfoNV; + }; + + // wrapper struct for struct VkConditionalRenderingBeginInfo2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkConditionalRenderingBeginInfo2EXT.html + struct ConditionalRenderingBeginInfo2EXT + { + using NativeType = VkConditionalRenderingBeginInfo2EXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eConditionalRenderingBeginInfo2EXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfo2EXT( DeviceAddressRangeKHR addressRange_ = {}, + AddressCommandFlagsKHR addressFlags_ = {}, + ConditionalRenderingFlagsEXT flags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , addressRange{ addressRange_ } + , addressFlags{ addressFlags_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfo2EXT( ConditionalRenderingBeginInfo2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ConditionalRenderingBeginInfo2EXT( VkConditionalRenderingBeginInfo2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ConditionalRenderingBeginInfo2EXT( *reinterpret_cast( &rhs ) ) + { + } + + ConditionalRenderingBeginInfo2EXT & operator=( ConditionalRenderingBeginInfo2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ConditionalRenderingBeginInfo2EXT & operator=( VkConditionalRenderingBeginInfo2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfo2EXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfo2EXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfo2EXT & setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfo2EXT && setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfo2EXT & setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfo2EXT && setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfo2EXT & setFlags( ConditionalRenderingFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfo2EXT && setFlags( ConditionalRenderingFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkConditionalRenderingBeginInfo2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkConditionalRenderingBeginInfo2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkConditionalRenderingBeginInfo2EXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkConditionalRenderingBeginInfo2EXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, addressRange, addressFlags, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ConditionalRenderingBeginInfo2EXT const & ) const = default; +#else + bool operator==( ConditionalRenderingBeginInfo2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( addressRange == rhs.addressRange ) && ( addressFlags == rhs.addressFlags ) && + ( flags == rhs.flags ); +# endif + } + + bool operator!=( ConditionalRenderingBeginInfo2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eConditionalRenderingBeginInfo2EXT; + void const * pNext = {}; + DeviceAddressRangeKHR addressRange = {}; + AddressCommandFlagsKHR addressFlags = {}; + ConditionalRenderingFlagsEXT flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ConditionalRenderingBeginInfo2EXT; + }; +#endif + + template <> + struct CppType + { + using Type = ConditionalRenderingBeginInfo2EXT; + }; + + // wrapper struct for struct VkConditionalRenderingBeginInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkConditionalRenderingBeginInfoEXT.html + struct ConditionalRenderingBeginInfoEXT + { + using NativeType = VkConditionalRenderingBeginInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eConditionalRenderingBeginInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfoEXT( Buffer buffer_ = {}, + DeviceSize offset_ = {}, + ConditionalRenderingFlagsEXT flags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , buffer{ buffer_ } + , offset{ offset_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfoEXT( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ConditionalRenderingBeginInfoEXT( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ConditionalRenderingBeginInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ConditionalRenderingBeginInfoEXT & operator=( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ConditionalRenderingBeginInfoEXT & operator=( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & setFlags( ConditionalRenderingFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT && setFlags( ConditionalRenderingFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkConditionalRenderingBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkConditionalRenderingBeginInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkConditionalRenderingBeginInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkConditionalRenderingBeginInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer, offset, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ConditionalRenderingBeginInfoEXT const & ) const = default; +#else + bool operator==( ConditionalRenderingBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( ConditionalRenderingBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eConditionalRenderingBeginInfoEXT; + void const * pNext = {}; + Buffer buffer = {}; + DeviceSize offset = {}; + ConditionalRenderingFlagsEXT flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ConditionalRenderingBeginInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ConditionalRenderingBeginInfoEXT; + }; + + // wrapper struct for struct VkConformanceVersion, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkConformanceVersion.html + struct ConformanceVersion + { + using NativeType = VkConformanceVersion; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ConformanceVersion( uint8_t major_ = {}, uint8_t minor_ = {}, uint8_t subminor_ = {}, uint8_t patch_ = {} ) VULKAN_HPP_NOEXCEPT + : major{ major_ } + , minor{ minor_ } + , subminor{ subminor_ } + , patch{ patch_ } + { + } + + VULKAN_HPP_CONSTEXPR ConformanceVersion( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ConformanceVersion( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT : ConformanceVersion( *reinterpret_cast( &rhs ) ) {} + + ConformanceVersion & operator=( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ConformanceVersion & operator=( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMajor( uint8_t major_ ) & VULKAN_HPP_NOEXCEPT + { + major = major_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion && setMajor( uint8_t major_ ) && VULKAN_HPP_NOEXCEPT + { + major = major_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setMinor( uint8_t minor_ ) & VULKAN_HPP_NOEXCEPT + { + minor = minor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion && setMinor( uint8_t minor_ ) && VULKAN_HPP_NOEXCEPT + { + minor = minor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setSubminor( uint8_t subminor_ ) & VULKAN_HPP_NOEXCEPT + { + subminor = subminor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion && setSubminor( uint8_t subminor_ ) && VULKAN_HPP_NOEXCEPT + { + subminor = subminor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & setPatch( uint8_t patch_ ) & VULKAN_HPP_NOEXCEPT + { + patch = patch_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConformanceVersion && setPatch( uint8_t patch_ ) && VULKAN_HPP_NOEXCEPT + { + patch = patch_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkConformanceVersion const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkConformanceVersion &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkConformanceVersion const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkConformanceVersion *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( major, minor, subminor, patch ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ConformanceVersion const & ) const = default; +#else + bool operator==( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( major == rhs.major ) && ( minor == rhs.minor ) && ( subminor == rhs.subminor ) && ( patch == rhs.patch ); +# endif + } + + bool operator!=( ConformanceVersion const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint8_t major = {}; + uint8_t minor = {}; + uint8_t subminor = {}; + uint8_t patch = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ConformanceVersion; + }; +#endif + using ConformanceVersionKHR = ConformanceVersion; + + // wrapper struct for struct VkConvertCooperativeVectorMatrixInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkConvertCooperativeVectorMatrixInfoNV.html + struct ConvertCooperativeVectorMatrixInfoNV + { + using NativeType = VkConvertCooperativeVectorMatrixInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eConvertCooperativeVectorMatrixInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV( size_t srcSize_ = {}, + DeviceOrHostAddressConstKHR srcData_ = {}, + size_t * pDstSize_ = {}, + DeviceOrHostAddressKHR dstData_ = {}, + ComponentTypeKHR srcComponentType_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR dstComponentType_ = ComponentTypeKHR::eFloat16, + uint32_t numRows_ = {}, + uint32_t numColumns_ = {}, + CooperativeVectorMatrixLayoutNV srcLayout_ = CooperativeVectorMatrixLayoutNV::eRowMajor, + size_t srcStride_ = {}, + CooperativeVectorMatrixLayoutNV dstLayout_ = CooperativeVectorMatrixLayoutNV::eRowMajor, + size_t dstStride_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcSize{ srcSize_ } + , srcData{ srcData_ } + , pDstSize{ pDstSize_ } + , dstData{ dstData_ } + , srcComponentType{ srcComponentType_ } + , dstComponentType{ dstComponentType_ } + , numRows{ numRows_ } + , numColumns{ numColumns_ } + , srcLayout{ srcLayout_ } + , srcStride{ srcStride_ } + , dstLayout{ dstLayout_ } + , dstStride{ dstStride_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV( ConvertCooperativeVectorMatrixInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ConvertCooperativeVectorMatrixInfoNV( VkConvertCooperativeVectorMatrixInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ConvertCooperativeVectorMatrixInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ConvertCooperativeVectorMatrixInfoNV & operator=( ConvertCooperativeVectorMatrixInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ConvertCooperativeVectorMatrixInfoNV & operator=( VkConvertCooperativeVectorMatrixInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setSrcSize( size_t srcSize_ ) & VULKAN_HPP_NOEXCEPT + { + srcSize = srcSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setSrcSize( size_t srcSize_ ) && VULKAN_HPP_NOEXCEPT + { + srcSize = srcSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setSrcData( DeviceOrHostAddressConstKHR const & srcData_ ) & VULKAN_HPP_NOEXCEPT + { + srcData = srcData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setSrcData( DeviceOrHostAddressConstKHR const & srcData_ ) && VULKAN_HPP_NOEXCEPT + { + srcData = srcData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setPDstSize( size_t * pDstSize_ ) & VULKAN_HPP_NOEXCEPT + { + pDstSize = pDstSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setPDstSize( size_t * pDstSize_ ) && VULKAN_HPP_NOEXCEPT + { + pDstSize = pDstSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setDstData( DeviceOrHostAddressKHR const & dstData_ ) & VULKAN_HPP_NOEXCEPT + { + dstData = dstData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setDstData( DeviceOrHostAddressKHR const & dstData_ ) && VULKAN_HPP_NOEXCEPT + { + dstData = dstData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setSrcComponentType( ComponentTypeKHR srcComponentType_ ) & VULKAN_HPP_NOEXCEPT + { + srcComponentType = srcComponentType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setSrcComponentType( ComponentTypeKHR srcComponentType_ ) && VULKAN_HPP_NOEXCEPT + { + srcComponentType = srcComponentType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setDstComponentType( ComponentTypeKHR dstComponentType_ ) & VULKAN_HPP_NOEXCEPT + { + dstComponentType = dstComponentType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setDstComponentType( ComponentTypeKHR dstComponentType_ ) && VULKAN_HPP_NOEXCEPT + { + dstComponentType = dstComponentType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setNumRows( uint32_t numRows_ ) & VULKAN_HPP_NOEXCEPT + { + numRows = numRows_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setNumRows( uint32_t numRows_ ) && VULKAN_HPP_NOEXCEPT + { + numRows = numRows_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setNumColumns( uint32_t numColumns_ ) & VULKAN_HPP_NOEXCEPT + { + numColumns = numColumns_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setNumColumns( uint32_t numColumns_ ) && VULKAN_HPP_NOEXCEPT + { + numColumns = numColumns_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setSrcLayout( CooperativeVectorMatrixLayoutNV srcLayout_ ) & VULKAN_HPP_NOEXCEPT + { + srcLayout = srcLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setSrcLayout( CooperativeVectorMatrixLayoutNV srcLayout_ ) && VULKAN_HPP_NOEXCEPT + { + srcLayout = srcLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setSrcStride( size_t srcStride_ ) & VULKAN_HPP_NOEXCEPT + { + srcStride = srcStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setSrcStride( size_t srcStride_ ) && VULKAN_HPP_NOEXCEPT + { + srcStride = srcStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setDstLayout( CooperativeVectorMatrixLayoutNV dstLayout_ ) & VULKAN_HPP_NOEXCEPT + { + dstLayout = dstLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setDstLayout( CooperativeVectorMatrixLayoutNV dstLayout_ ) && VULKAN_HPP_NOEXCEPT + { + dstLayout = dstLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV & setDstStride( size_t dstStride_ ) & VULKAN_HPP_NOEXCEPT + { + dstStride = dstStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ConvertCooperativeVectorMatrixInfoNV && setDstStride( size_t dstStride_ ) && VULKAN_HPP_NOEXCEPT + { + dstStride = dstStride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkConvertCooperativeVectorMatrixInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkConvertCooperativeVectorMatrixInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkConvertCooperativeVectorMatrixInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkConvertCooperativeVectorMatrixInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + srcSize, + srcData, + pDstSize, + dstData, + srcComponentType, + dstComponentType, + numRows, + numColumns, + srcLayout, + srcStride, + dstLayout, + dstStride ); + } +#endif + + public: + StructureType sType = StructureType::eConvertCooperativeVectorMatrixInfoNV; + void const * pNext = {}; + size_t srcSize = {}; + DeviceOrHostAddressConstKHR srcData = {}; + size_t * pDstSize = {}; + DeviceOrHostAddressKHR dstData = {}; + ComponentTypeKHR srcComponentType = ComponentTypeKHR::eFloat16; + ComponentTypeKHR dstComponentType = ComponentTypeKHR::eFloat16; + uint32_t numRows = {}; + uint32_t numColumns = {}; + CooperativeVectorMatrixLayoutNV srcLayout = CooperativeVectorMatrixLayoutNV::eRowMajor; + size_t srcStride = {}; + CooperativeVectorMatrixLayoutNV dstLayout = CooperativeVectorMatrixLayoutNV::eRowMajor; + size_t dstStride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ConvertCooperativeVectorMatrixInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = ConvertCooperativeVectorMatrixInfoNV; + }; + + // wrapper struct for struct VkCooperativeMatrixFlexibleDimensionsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCooperativeMatrixFlexibleDimensionsPropertiesNV.html + struct CooperativeMatrixFlexibleDimensionsPropertiesNV + { + using NativeType = VkCooperativeMatrixFlexibleDimensionsPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCooperativeMatrixFlexibleDimensionsPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CooperativeMatrixFlexibleDimensionsPropertiesNV( uint32_t MGranularity_ = {}, + uint32_t NGranularity_ = {}, + uint32_t KGranularity_ = {}, + ComponentTypeKHR AType_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR BType_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR CType_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR ResultType_ = ComponentTypeKHR::eFloat16, + Bool32 saturatingAccumulation_ = {}, + ScopeKHR scope_ = ScopeKHR::eDevice, + uint32_t workgroupInvocations_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , MGranularity{ MGranularity_ } + , NGranularity{ NGranularity_ } + , KGranularity{ KGranularity_ } + , AType{ AType_ } + , BType{ BType_ } + , CType{ CType_ } + , ResultType{ ResultType_ } + , saturatingAccumulation{ saturatingAccumulation_ } + , scope{ scope_ } + , workgroupInvocations{ workgroupInvocations_ } + { + } + + VULKAN_HPP_CONSTEXPR + CooperativeMatrixFlexibleDimensionsPropertiesNV( CooperativeMatrixFlexibleDimensionsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CooperativeMatrixFlexibleDimensionsPropertiesNV( VkCooperativeMatrixFlexibleDimensionsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CooperativeMatrixFlexibleDimensionsPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + CooperativeMatrixFlexibleDimensionsPropertiesNV & operator=( CooperativeMatrixFlexibleDimensionsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CooperativeMatrixFlexibleDimensionsPropertiesNV & operator=( VkCooperativeMatrixFlexibleDimensionsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkCooperativeMatrixFlexibleDimensionsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCooperativeMatrixFlexibleDimensionsPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCooperativeMatrixFlexibleDimensionsPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCooperativeMatrixFlexibleDimensionsPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, MGranularity, NGranularity, KGranularity, AType, BType, CType, ResultType, saturatingAccumulation, scope, workgroupInvocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CooperativeMatrixFlexibleDimensionsPropertiesNV const & ) const = default; +#else + bool operator==( CooperativeMatrixFlexibleDimensionsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( MGranularity == rhs.MGranularity ) && ( NGranularity == rhs.NGranularity ) && + ( KGranularity == rhs.KGranularity ) && ( AType == rhs.AType ) && ( BType == rhs.BType ) && ( CType == rhs.CType ) && + ( ResultType == rhs.ResultType ) && ( saturatingAccumulation == rhs.saturatingAccumulation ) && ( scope == rhs.scope ) && + ( workgroupInvocations == rhs.workgroupInvocations ); +# endif + } + + bool operator!=( CooperativeMatrixFlexibleDimensionsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCooperativeMatrixFlexibleDimensionsPropertiesNV; + void * pNext = {}; + uint32_t MGranularity = {}; + uint32_t NGranularity = {}; + uint32_t KGranularity = {}; + ComponentTypeKHR AType = ComponentTypeKHR::eFloat16; + ComponentTypeKHR BType = ComponentTypeKHR::eFloat16; + ComponentTypeKHR CType = ComponentTypeKHR::eFloat16; + ComponentTypeKHR ResultType = ComponentTypeKHR::eFloat16; + Bool32 saturatingAccumulation = {}; + ScopeKHR scope = ScopeKHR::eDevice; + uint32_t workgroupInvocations = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CooperativeMatrixFlexibleDimensionsPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = CooperativeMatrixFlexibleDimensionsPropertiesNV; + }; + + // wrapper struct for struct VkCooperativeMatrixPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesKHR.html + struct CooperativeMatrixPropertiesKHR + { + using NativeType = VkCooperativeMatrixPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCooperativeMatrixPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesKHR( uint32_t MSize_ = {}, + uint32_t NSize_ = {}, + uint32_t KSize_ = {}, + ComponentTypeKHR AType_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR BType_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR CType_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR ResultType_ = ComponentTypeKHR::eFloat16, + Bool32 saturatingAccumulation_ = {}, + ScopeKHR scope_ = ScopeKHR::eDevice, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , MSize{ MSize_ } + , NSize{ NSize_ } + , KSize{ KSize_ } + , AType{ AType_ } + , BType{ BType_ } + , CType{ CType_ } + , ResultType{ ResultType_ } + , saturatingAccumulation{ saturatingAccumulation_ } + , scope{ scope_ } + { + } + + VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesKHR( CooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CooperativeMatrixPropertiesKHR( VkCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CooperativeMatrixPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + CooperativeMatrixPropertiesKHR & operator=( CooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CooperativeMatrixPropertiesKHR & operator=( VkCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkCooperativeMatrixPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCooperativeMatrixPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCooperativeMatrixPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCooperativeMatrixPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, MSize, NSize, KSize, AType, BType, CType, ResultType, saturatingAccumulation, scope ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CooperativeMatrixPropertiesKHR const & ) const = default; +#else + bool operator==( CooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( MSize == rhs.MSize ) && ( NSize == rhs.NSize ) && ( KSize == rhs.KSize ) && + ( AType == rhs.AType ) && ( BType == rhs.BType ) && ( CType == rhs.CType ) && ( ResultType == rhs.ResultType ) && + ( saturatingAccumulation == rhs.saturatingAccumulation ) && ( scope == rhs.scope ); +# endif + } + + bool operator!=( CooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCooperativeMatrixPropertiesKHR; + void * pNext = {}; + uint32_t MSize = {}; + uint32_t NSize = {}; + uint32_t KSize = {}; + ComponentTypeKHR AType = ComponentTypeKHR::eFloat16; + ComponentTypeKHR BType = ComponentTypeKHR::eFloat16; + ComponentTypeKHR CType = ComponentTypeKHR::eFloat16; + ComponentTypeKHR ResultType = ComponentTypeKHR::eFloat16; + Bool32 saturatingAccumulation = {}; + ScopeKHR scope = ScopeKHR::eDevice; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CooperativeMatrixPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = CooperativeMatrixPropertiesKHR; + }; + + // wrapper struct for struct VkCooperativeMatrixPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCooperativeMatrixPropertiesNV.html + struct CooperativeMatrixPropertiesNV + { + using NativeType = VkCooperativeMatrixPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCooperativeMatrixPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesNV( uint32_t MSize_ = {}, + uint32_t NSize_ = {}, + uint32_t KSize_ = {}, + ComponentTypeNV AType_ = {}, + ComponentTypeNV BType_ = {}, + ComponentTypeNV CType_ = {}, + ComponentTypeNV DType_ = {}, + ScopeNV scope_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , MSize{ MSize_ } + , NSize{ NSize_ } + , KSize{ KSize_ } + , AType{ AType_ } + , BType{ BType_ } + , CType{ CType_ } + , DType{ DType_ } + , scope{ scope_ } + { + } + + VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CooperativeMatrixPropertiesNV( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CooperativeMatrixPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + CooperativeMatrixPropertiesNV & operator=( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CooperativeMatrixPropertiesNV & operator=( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkCooperativeMatrixPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCooperativeMatrixPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCooperativeMatrixPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCooperativeMatrixPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, MSize, NSize, KSize, AType, BType, CType, DType, scope ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CooperativeMatrixPropertiesNV const & ) const = default; +#else + bool operator==( CooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( MSize == rhs.MSize ) && ( NSize == rhs.NSize ) && ( KSize == rhs.KSize ) && + ( AType == rhs.AType ) && ( BType == rhs.BType ) && ( CType == rhs.CType ) && ( DType == rhs.DType ) && ( scope == rhs.scope ); +# endif + } + + bool operator!=( CooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCooperativeMatrixPropertiesNV; + void * pNext = {}; + uint32_t MSize = {}; + uint32_t NSize = {}; + uint32_t KSize = {}; + ComponentTypeNV AType = {}; + ComponentTypeNV BType = {}; + ComponentTypeNV CType = {}; + ComponentTypeNV DType = {}; + ScopeNV scope = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CooperativeMatrixPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = CooperativeMatrixPropertiesNV; + }; + + // wrapper struct for struct VkCooperativeVectorPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCooperativeVectorPropertiesNV.html + struct CooperativeVectorPropertiesNV + { + using NativeType = VkCooperativeVectorPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCooperativeVectorPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CooperativeVectorPropertiesNV( ComponentTypeKHR inputType_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR inputInterpretation_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR matrixInterpretation_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR biasInterpretation_ = ComponentTypeKHR::eFloat16, + ComponentTypeKHR resultType_ = ComponentTypeKHR::eFloat16, + Bool32 transpose_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , inputType{ inputType_ } + , inputInterpretation{ inputInterpretation_ } + , matrixInterpretation{ matrixInterpretation_ } + , biasInterpretation{ biasInterpretation_ } + , resultType{ resultType_ } + , transpose{ transpose_ } + { + } + + VULKAN_HPP_CONSTEXPR CooperativeVectorPropertiesNV( CooperativeVectorPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CooperativeVectorPropertiesNV( VkCooperativeVectorPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CooperativeVectorPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + CooperativeVectorPropertiesNV & operator=( CooperativeVectorPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CooperativeVectorPropertiesNV & operator=( VkCooperativeVectorPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV & setInputType( ComponentTypeKHR inputType_ ) & VULKAN_HPP_NOEXCEPT + { + inputType = inputType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV && setInputType( ComponentTypeKHR inputType_ ) && VULKAN_HPP_NOEXCEPT + { + inputType = inputType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV & setInputInterpretation( ComponentTypeKHR inputInterpretation_ ) & VULKAN_HPP_NOEXCEPT + { + inputInterpretation = inputInterpretation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV && setInputInterpretation( ComponentTypeKHR inputInterpretation_ ) && VULKAN_HPP_NOEXCEPT + { + inputInterpretation = inputInterpretation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV & setMatrixInterpretation( ComponentTypeKHR matrixInterpretation_ ) & VULKAN_HPP_NOEXCEPT + { + matrixInterpretation = matrixInterpretation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV && setMatrixInterpretation( ComponentTypeKHR matrixInterpretation_ ) && VULKAN_HPP_NOEXCEPT + { + matrixInterpretation = matrixInterpretation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV & setBiasInterpretation( ComponentTypeKHR biasInterpretation_ ) & VULKAN_HPP_NOEXCEPT + { + biasInterpretation = biasInterpretation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV && setBiasInterpretation( ComponentTypeKHR biasInterpretation_ ) && VULKAN_HPP_NOEXCEPT + { + biasInterpretation = biasInterpretation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV & setResultType( ComponentTypeKHR resultType_ ) & VULKAN_HPP_NOEXCEPT + { + resultType = resultType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV && setResultType( ComponentTypeKHR resultType_ ) && VULKAN_HPP_NOEXCEPT + { + resultType = resultType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV & setTranspose( Bool32 transpose_ ) & VULKAN_HPP_NOEXCEPT + { + transpose = transpose_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CooperativeVectorPropertiesNV && setTranspose( Bool32 transpose_ ) && VULKAN_HPP_NOEXCEPT + { + transpose = transpose_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCooperativeVectorPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCooperativeVectorPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCooperativeVectorPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCooperativeVectorPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, inputType, inputInterpretation, matrixInterpretation, biasInterpretation, resultType, transpose ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CooperativeVectorPropertiesNV const & ) const = default; +#else + bool operator==( CooperativeVectorPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( inputType == rhs.inputType ) && ( inputInterpretation == rhs.inputInterpretation ) && + ( matrixInterpretation == rhs.matrixInterpretation ) && ( biasInterpretation == rhs.biasInterpretation ) && ( resultType == rhs.resultType ) && + ( transpose == rhs.transpose ); +# endif + } + + bool operator!=( CooperativeVectorPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCooperativeVectorPropertiesNV; + void * pNext = {}; + ComponentTypeKHR inputType = ComponentTypeKHR::eFloat16; + ComponentTypeKHR inputInterpretation = ComponentTypeKHR::eFloat16; + ComponentTypeKHR matrixInterpretation = ComponentTypeKHR::eFloat16; + ComponentTypeKHR biasInterpretation = ComponentTypeKHR::eFloat16; + ComponentTypeKHR resultType = ComponentTypeKHR::eFloat16; + Bool32 transpose = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CooperativeVectorPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = CooperativeVectorPropertiesNV; + }; + + // wrapper struct for struct VkCopyAccelerationStructureInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyAccelerationStructureInfoKHR.html + struct CopyAccelerationStructureInfoKHR + { + using NativeType = VkCopyAccelerationStructureInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyAccelerationStructureInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyAccelerationStructureInfoKHR( AccelerationStructureKHR src_ = {}, + AccelerationStructureKHR dst_ = {}, + CopyAccelerationStructureModeKHR mode_ = CopyAccelerationStructureModeKHR::eClone, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , src{ src_ } + , dst{ dst_ } + , mode{ mode_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyAccelerationStructureInfoKHR( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyAccelerationStructureInfoKHR( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyAccelerationStructureInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + CopyAccelerationStructureInfoKHR & operator=( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyAccelerationStructureInfoKHR & operator=( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setSrc( AccelerationStructureKHR src_ ) & VULKAN_HPP_NOEXCEPT + { + src = src_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR && setSrc( AccelerationStructureKHR src_ ) && VULKAN_HPP_NOEXCEPT + { + src = src_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setDst( AccelerationStructureKHR dst_ ) & VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR && setDst( AccelerationStructureKHR dst_ ) && VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & setMode( CopyAccelerationStructureModeKHR mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR && setMode( CopyAccelerationStructureModeKHR mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyAccelerationStructureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyAccelerationStructureInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyAccelerationStructureInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, src, dst, mode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyAccelerationStructureInfoKHR const & ) const = default; +#else + bool operator==( CopyAccelerationStructureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( src == rhs.src ) && ( dst == rhs.dst ) && ( mode == rhs.mode ); +# endif + } + + bool operator!=( CopyAccelerationStructureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyAccelerationStructureInfoKHR; + void const * pNext = {}; + AccelerationStructureKHR src = {}; + AccelerationStructureKHR dst = {}; + CopyAccelerationStructureModeKHR mode = CopyAccelerationStructureModeKHR::eClone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyAccelerationStructureInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = CopyAccelerationStructureInfoKHR; + }; + + // wrapper struct for struct VkCopyAccelerationStructureToMemoryInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyAccelerationStructureToMemoryInfoKHR.html + struct CopyAccelerationStructureToMemoryInfoKHR + { + using NativeType = VkCopyAccelerationStructureToMemoryInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyAccelerationStructureToMemoryInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR( AccelerationStructureKHR src_ = {}, + DeviceOrHostAddressKHR dst_ = {}, + CopyAccelerationStructureModeKHR mode_ = CopyAccelerationStructureModeKHR::eClone, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , src{ src_ } + , dst{ dst_ } + , mode{ mode_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyAccelerationStructureToMemoryInfoKHR( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyAccelerationStructureToMemoryInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + CopyAccelerationStructureToMemoryInfoKHR & operator=( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyAccelerationStructureToMemoryInfoKHR & operator=( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & setSrc( AccelerationStructureKHR src_ ) & VULKAN_HPP_NOEXCEPT + { + src = src_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR && setSrc( AccelerationStructureKHR src_ ) && VULKAN_HPP_NOEXCEPT + { + src = src_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & setDst( DeviceOrHostAddressKHR const & dst_ ) & VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR && setDst( DeviceOrHostAddressKHR const & dst_ ) && VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR & setMode( CopyAccelerationStructureModeKHR mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureToMemoryInfoKHR && setMode( CopyAccelerationStructureModeKHR mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyAccelerationStructureToMemoryInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyAccelerationStructureToMemoryInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyAccelerationStructureToMemoryInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyAccelerationStructureToMemoryInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, src, dst, mode ); + } +#endif + + public: + StructureType sType = StructureType::eCopyAccelerationStructureToMemoryInfoKHR; + void const * pNext = {}; + AccelerationStructureKHR src = {}; + DeviceOrHostAddressKHR dst = {}; + CopyAccelerationStructureModeKHR mode = CopyAccelerationStructureModeKHR::eClone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyAccelerationStructureToMemoryInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = CopyAccelerationStructureToMemoryInfoKHR; + }; + + // wrapper struct for struct VkCopyBufferInfo2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyBufferInfo2.html + struct CopyBufferInfo2 + { + using NativeType = VkCopyBufferInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyBufferInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyBufferInfo2( Buffer srcBuffer_ = {}, + Buffer dstBuffer_ = {}, + uint32_t regionCount_ = {}, + BufferCopy2 const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcBuffer{ srcBuffer_ } + , dstBuffer{ dstBuffer_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyBufferInfo2( CopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyBufferInfo2( VkCopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : CopyBufferInfo2( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyBufferInfo2( Buffer srcBuffer_, Buffer dstBuffer_, ArrayProxyNoTemporaries const & regions_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), srcBuffer( srcBuffer_ ), dstBuffer( dstBuffer_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyBufferInfo2 & operator=( CopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyBufferInfo2 & operator=( VkCopyBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setSrcBuffer( Buffer srcBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + srcBuffer = srcBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 && setSrcBuffer( Buffer srcBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + srcBuffer = srcBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setDstBuffer( Buffer dstBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + dstBuffer = dstBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 && setDstBuffer( Buffer dstBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + dstBuffer = dstBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 & setPRegions( BufferCopy2 const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2 && setPRegions( BufferCopy2 const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyBufferInfo2 & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyBufferInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyBufferInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyBufferInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyBufferInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcBuffer, dstBuffer, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyBufferInfo2 const & ) const = default; +#else + bool operator==( CopyBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcBuffer == rhs.srcBuffer ) && ( dstBuffer == rhs.dstBuffer ) && + ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyBufferInfo2; + void const * pNext = {}; + Buffer srcBuffer = {}; + Buffer dstBuffer = {}; + uint32_t regionCount = {}; + BufferCopy2 const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyBufferInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = CopyBufferInfo2; + }; + + using CopyBufferInfo2KHR = CopyBufferInfo2; + + // wrapper struct for struct VkCopyBufferToImageInfo2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyBufferToImageInfo2.html + struct CopyBufferToImageInfo2 + { + using NativeType = VkCopyBufferToImageInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyBufferToImageInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2( Buffer srcBuffer_ = {}, + Image dstImage_ = {}, + ImageLayout dstImageLayout_ = ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + BufferImageCopy2 const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcBuffer{ srcBuffer_ } + , dstImage{ dstImage_ } + , dstImageLayout{ dstImageLayout_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2( CopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyBufferToImageInfo2( VkCopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyBufferToImageInfo2( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyBufferToImageInfo2( Buffer srcBuffer_, + Image dstImage_, + ImageLayout dstImageLayout_, + ArrayProxyNoTemporaries const & regions_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , srcBuffer( srcBuffer_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyBufferToImageInfo2 & operator=( CopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyBufferToImageInfo2 & operator=( VkCopyBufferToImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setSrcBuffer( Buffer srcBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + srcBuffer = srcBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 && setSrcBuffer( Buffer srcBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + srcBuffer = srcBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setDstImage( Image dstImage_ ) & VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 && setDstImage( Image dstImage_ ) && VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setDstImageLayout( ImageLayout dstImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 && setDstImageLayout( ImageLayout dstImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 & setPRegions( BufferImageCopy2 const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2 && setPRegions( BufferImageCopy2 const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyBufferToImageInfo2 & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyBufferToImageInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyBufferToImageInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyBufferToImageInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyBufferToImageInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyBufferToImageInfo2 const & ) const = default; +#else + bool operator==( CopyBufferToImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcBuffer == rhs.srcBuffer ) && ( dstImage == rhs.dstImage ) && + ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyBufferToImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyBufferToImageInfo2; + void const * pNext = {}; + Buffer srcBuffer = {}; + Image dstImage = {}; + ImageLayout dstImageLayout = ImageLayout::eUndefined; + uint32_t regionCount = {}; + BufferImageCopy2 const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyBufferToImageInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = CopyBufferToImageInfo2; + }; + + using CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2; + + // wrapper struct for struct VkCopyCommandTransformInfoQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyCommandTransformInfoQCOM.html + struct CopyCommandTransformInfoQCOM + { + using NativeType = VkCopyCommandTransformInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyCommandTransformInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyCommandTransformInfoQCOM( SurfaceTransformFlagBitsKHR transform_ = SurfaceTransformFlagBitsKHR::eIdentity, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , transform{ transform_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyCommandTransformInfoQCOM( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyCommandTransformInfoQCOM( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyCommandTransformInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + CopyCommandTransformInfoQCOM & operator=( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyCommandTransformInfoQCOM & operator=( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & setTransform( SurfaceTransformFlagBitsKHR transform_ ) & VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM && setTransform( SurfaceTransformFlagBitsKHR transform_ ) && VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyCommandTransformInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyCommandTransformInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyCommandTransformInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyCommandTransformInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, transform ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyCommandTransformInfoQCOM const & ) const = default; +#else + bool operator==( CopyCommandTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform ); +# endif + } + + bool operator!=( CopyCommandTransformInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyCommandTransformInfoQCOM; + void const * pNext = {}; + SurfaceTransformFlagBitsKHR transform = SurfaceTransformFlagBitsKHR::eIdentity; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyCommandTransformInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = CopyCommandTransformInfoQCOM; + }; + + // wrapper struct for struct VkCopyDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyDescriptorSet.html + struct CopyDescriptorSet + { + using NativeType = VkCopyDescriptorSet; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyDescriptorSet; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyDescriptorSet( DescriptorSet srcSet_ = {}, + uint32_t srcBinding_ = {}, + uint32_t srcArrayElement_ = {}, + DescriptorSet dstSet_ = {}, + uint32_t dstBinding_ = {}, + uint32_t dstArrayElement_ = {}, + uint32_t descriptorCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcSet{ srcSet_ } + , srcBinding{ srcBinding_ } + , srcArrayElement{ srcArrayElement_ } + , dstSet{ dstSet_ } + , dstBinding{ dstBinding_ } + , dstArrayElement{ dstArrayElement_ } + , descriptorCount{ descriptorCount_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyDescriptorSet( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyDescriptorSet( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT : CopyDescriptorSet( *reinterpret_cast( &rhs ) ) {} + + CopyDescriptorSet & operator=( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyDescriptorSet & operator=( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcSet( DescriptorSet srcSet_ ) & VULKAN_HPP_NOEXCEPT + { + srcSet = srcSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet && setSrcSet( DescriptorSet srcSet_ ) && VULKAN_HPP_NOEXCEPT + { + srcSet = srcSet_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcBinding( uint32_t srcBinding_ ) & VULKAN_HPP_NOEXCEPT + { + srcBinding = srcBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet && setSrcBinding( uint32_t srcBinding_ ) && VULKAN_HPP_NOEXCEPT + { + srcBinding = srcBinding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setSrcArrayElement( uint32_t srcArrayElement_ ) & VULKAN_HPP_NOEXCEPT + { + srcArrayElement = srcArrayElement_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet && setSrcArrayElement( uint32_t srcArrayElement_ ) && VULKAN_HPP_NOEXCEPT + { + srcArrayElement = srcArrayElement_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstSet( DescriptorSet dstSet_ ) & VULKAN_HPP_NOEXCEPT + { + dstSet = dstSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet && setDstSet( DescriptorSet dstSet_ ) && VULKAN_HPP_NOEXCEPT + { + dstSet = dstSet_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstBinding( uint32_t dstBinding_ ) & VULKAN_HPP_NOEXCEPT + { + dstBinding = dstBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet && setDstBinding( uint32_t dstBinding_ ) && VULKAN_HPP_NOEXCEPT + { + dstBinding = dstBinding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) & VULKAN_HPP_NOEXCEPT + { + dstArrayElement = dstArrayElement_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet && setDstArrayElement( uint32_t dstArrayElement_ ) && VULKAN_HPP_NOEXCEPT + { + dstArrayElement = dstArrayElement_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet && setDescriptorCount( uint32_t descriptorCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyDescriptorSet const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyDescriptorSet &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyDescriptorSet const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyDescriptorSet *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcSet, srcBinding, srcArrayElement, dstSet, dstBinding, dstArrayElement, descriptorCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyDescriptorSet const & ) const = default; +#else + bool operator==( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSet == rhs.srcSet ) && ( srcBinding == rhs.srcBinding ) && + ( srcArrayElement == rhs.srcArrayElement ) && ( dstSet == rhs.dstSet ) && ( dstBinding == rhs.dstBinding ) && + ( dstArrayElement == rhs.dstArrayElement ) && ( descriptorCount == rhs.descriptorCount ); +# endif + } + + bool operator!=( CopyDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyDescriptorSet; + void const * pNext = {}; + DescriptorSet srcSet = {}; + uint32_t srcBinding = {}; + uint32_t srcArrayElement = {}; + DescriptorSet dstSet = {}; + uint32_t dstBinding = {}; + uint32_t dstArrayElement = {}; + uint32_t descriptorCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyDescriptorSet; + }; +#endif + + template <> + struct CppType + { + using Type = CopyDescriptorSet; + }; + + // wrapper struct for struct VkDeviceMemoryImageCopyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemoryImageCopyKHR.html + struct DeviceMemoryImageCopyKHR + { + using NativeType = VkDeviceMemoryImageCopyKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceMemoryImageCopyKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceMemoryImageCopyKHR( DeviceAddressRangeKHR addressRange_ = {}, + AddressCommandFlagsKHR addressFlags_ = {}, + uint32_t addressRowLength_ = {}, + uint32_t addressImageHeight_ = {}, + ImageSubresourceLayers imageSubresource_ = {}, + ImageLayout imageLayout_ = ImageLayout::eUndefined, + Offset3D imageOffset_ = {}, + Extent3D imageExtent_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , addressRange{ addressRange_ } + , addressFlags{ addressFlags_ } + , addressRowLength{ addressRowLength_ } + , addressImageHeight{ addressImageHeight_ } + , imageSubresource{ imageSubresource_ } + , imageLayout{ imageLayout_ } + , imageOffset{ imageOffset_ } + , imageExtent{ imageExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceMemoryImageCopyKHR( DeviceMemoryImageCopyKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryImageCopyKHR( VkDeviceMemoryImageCopyKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceMemoryImageCopyKHR( *reinterpret_cast( &rhs ) ) + { + } + + DeviceMemoryImageCopyKHR & operator=( DeviceMemoryImageCopyKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceMemoryImageCopyKHR & operator=( VkDeviceMemoryImageCopyKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR & setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR && setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR & setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR && setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR & setAddressRowLength( uint32_t addressRowLength_ ) & VULKAN_HPP_NOEXCEPT + { + addressRowLength = addressRowLength_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR && setAddressRowLength( uint32_t addressRowLength_ ) && VULKAN_HPP_NOEXCEPT + { + addressRowLength = addressRowLength_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR & setAddressImageHeight( uint32_t addressImageHeight_ ) & VULKAN_HPP_NOEXCEPT + { + addressImageHeight = addressImageHeight_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR && setAddressImageHeight( uint32_t addressImageHeight_ ) && VULKAN_HPP_NOEXCEPT + { + addressImageHeight = addressImageHeight_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR & setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR && setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR & setImageLayout( ImageLayout imageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR && setImageLayout( ImageLayout imageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR & setImageOffset( Offset3D const & imageOffset_ ) & VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR && setImageOffset( Offset3D const & imageOffset_ ) && VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR & setImageExtent( Extent3D const & imageExtent_ ) & VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryImageCopyKHR && setImageExtent( Extent3D const & imageExtent_ ) && VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceMemoryImageCopyKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceMemoryImageCopyKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceMemoryImageCopyKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceMemoryImageCopyKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, addressRange, addressFlags, addressRowLength, addressImageHeight, imageSubresource, imageLayout, imageOffset, imageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceMemoryImageCopyKHR const & ) const = default; +#else + bool operator==( DeviceMemoryImageCopyKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( addressRange == rhs.addressRange ) && ( addressFlags == rhs.addressFlags ) && + ( addressRowLength == rhs.addressRowLength ) && ( addressImageHeight == rhs.addressImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && + ( imageLayout == rhs.imageLayout ) && ( imageOffset == rhs.imageOffset ) && ( imageExtent == rhs.imageExtent ); +# endif + } + + bool operator!=( DeviceMemoryImageCopyKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceMemoryImageCopyKHR; + void const * pNext = {}; + DeviceAddressRangeKHR addressRange = {}; + AddressCommandFlagsKHR addressFlags = {}; + uint32_t addressRowLength = {}; + uint32_t addressImageHeight = {}; + ImageSubresourceLayers imageSubresource = {}; + ImageLayout imageLayout = ImageLayout::eUndefined; + Offset3D imageOffset = {}; + Extent3D imageExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceMemoryImageCopyKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceMemoryImageCopyKHR; + }; + + // wrapper struct for struct VkCopyDeviceMemoryImageInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyDeviceMemoryImageInfoKHR.html + struct CopyDeviceMemoryImageInfoKHR + { + using NativeType = VkCopyDeviceMemoryImageInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyDeviceMemoryImageInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyDeviceMemoryImageInfoKHR( Image image_ = {}, + uint32_t regionCount_ = {}, + DeviceMemoryImageCopyKHR const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image{ image_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyDeviceMemoryImageInfoKHR( CopyDeviceMemoryImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyDeviceMemoryImageInfoKHR( VkCopyDeviceMemoryImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyDeviceMemoryImageInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyDeviceMemoryImageInfoKHR( Image image_, ArrayProxyNoTemporaries const & regions_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), image( image_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyDeviceMemoryImageInfoKHR & operator=( CopyDeviceMemoryImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyDeviceMemoryImageInfoKHR & operator=( VkCopyDeviceMemoryImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryImageInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryImageInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryImageInfoKHR & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryImageInfoKHR && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryImageInfoKHR & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryImageInfoKHR && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryImageInfoKHR & setPRegions( DeviceMemoryImageCopyKHR const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryImageInfoKHR && setPRegions( DeviceMemoryImageCopyKHR const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyDeviceMemoryImageInfoKHR & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyDeviceMemoryImageInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyDeviceMemoryImageInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyDeviceMemoryImageInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyDeviceMemoryImageInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyDeviceMemoryImageInfoKHR const & ) const = default; +#else + bool operator==( CopyDeviceMemoryImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyDeviceMemoryImageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyDeviceMemoryImageInfoKHR; + void const * pNext = {}; + Image image = {}; + uint32_t regionCount = {}; + DeviceMemoryImageCopyKHR const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyDeviceMemoryImageInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = CopyDeviceMemoryImageInfoKHR; + }; + + // wrapper struct for struct VkDeviceMemoryCopyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemoryCopyKHR.html + struct DeviceMemoryCopyKHR + { + using NativeType = VkDeviceMemoryCopyKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceMemoryCopyKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceMemoryCopyKHR( DeviceAddressRangeKHR srcRange_ = {}, + AddressCommandFlagsKHR srcFlags_ = {}, + DeviceAddressRangeKHR dstRange_ = {}, + AddressCommandFlagsKHR dstFlags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcRange{ srcRange_ } + , srcFlags{ srcFlags_ } + , dstRange{ dstRange_ } + , dstFlags{ dstFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceMemoryCopyKHR( DeviceMemoryCopyKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryCopyKHR( VkDeviceMemoryCopyKHR const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceMemoryCopyKHR( *reinterpret_cast( &rhs ) ) + { + } + + DeviceMemoryCopyKHR & operator=( DeviceMemoryCopyKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceMemoryCopyKHR & operator=( VkDeviceMemoryCopyKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryCopyKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryCopyKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryCopyKHR & setSrcRange( DeviceAddressRangeKHR const & srcRange_ ) & VULKAN_HPP_NOEXCEPT + { + srcRange = srcRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryCopyKHR && setSrcRange( DeviceAddressRangeKHR const & srcRange_ ) && VULKAN_HPP_NOEXCEPT + { + srcRange = srcRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryCopyKHR & setSrcFlags( AddressCommandFlagsKHR srcFlags_ ) & VULKAN_HPP_NOEXCEPT + { + srcFlags = srcFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryCopyKHR && setSrcFlags( AddressCommandFlagsKHR srcFlags_ ) && VULKAN_HPP_NOEXCEPT + { + srcFlags = srcFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryCopyKHR & setDstRange( DeviceAddressRangeKHR const & dstRange_ ) & VULKAN_HPP_NOEXCEPT + { + dstRange = dstRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryCopyKHR && setDstRange( DeviceAddressRangeKHR const & dstRange_ ) && VULKAN_HPP_NOEXCEPT + { + dstRange = dstRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryCopyKHR & setDstFlags( AddressCommandFlagsKHR dstFlags_ ) & VULKAN_HPP_NOEXCEPT + { + dstFlags = dstFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryCopyKHR && setDstFlags( AddressCommandFlagsKHR dstFlags_ ) && VULKAN_HPP_NOEXCEPT + { + dstFlags = dstFlags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceMemoryCopyKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceMemoryCopyKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceMemoryCopyKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceMemoryCopyKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcRange, srcFlags, dstRange, dstFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceMemoryCopyKHR const & ) const = default; +#else + bool operator==( DeviceMemoryCopyKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcRange == rhs.srcRange ) && ( srcFlags == rhs.srcFlags ) && ( dstRange == rhs.dstRange ) && + ( dstFlags == rhs.dstFlags ); +# endif + } + + bool operator!=( DeviceMemoryCopyKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceMemoryCopyKHR; + void const * pNext = {}; + DeviceAddressRangeKHR srcRange = {}; + AddressCommandFlagsKHR srcFlags = {}; + DeviceAddressRangeKHR dstRange = {}; + AddressCommandFlagsKHR dstFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceMemoryCopyKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceMemoryCopyKHR; + }; + + // wrapper struct for struct VkCopyDeviceMemoryInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyDeviceMemoryInfoKHR.html + struct CopyDeviceMemoryInfoKHR + { + using NativeType = VkCopyDeviceMemoryInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyDeviceMemoryInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + CopyDeviceMemoryInfoKHR( uint32_t regionCount_ = {}, DeviceMemoryCopyKHR const * pRegions_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyDeviceMemoryInfoKHR( CopyDeviceMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyDeviceMemoryInfoKHR( VkCopyDeviceMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyDeviceMemoryInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyDeviceMemoryInfoKHR( ArrayProxyNoTemporaries const & regions_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyDeviceMemoryInfoKHR & operator=( CopyDeviceMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyDeviceMemoryInfoKHR & operator=( VkCopyDeviceMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryInfoKHR & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryInfoKHR && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryInfoKHR & setPRegions( DeviceMemoryCopyKHR const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyDeviceMemoryInfoKHR && setPRegions( DeviceMemoryCopyKHR const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyDeviceMemoryInfoKHR & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyDeviceMemoryInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyDeviceMemoryInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyDeviceMemoryInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyDeviceMemoryInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyDeviceMemoryInfoKHR const & ) const = default; +#else + bool operator==( CopyDeviceMemoryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyDeviceMemoryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyDeviceMemoryInfoKHR; + void const * pNext = {}; + uint32_t regionCount = {}; + DeviceMemoryCopyKHR const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyDeviceMemoryInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = CopyDeviceMemoryInfoKHR; + }; + + // wrapper struct for struct VkImageCopy2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCopy2.html + struct ImageCopy2 + { + using NativeType = VkImageCopy2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCopy2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageCopy2( ImageSubresourceLayers srcSubresource_ = {}, + Offset3D srcOffset_ = {}, + ImageSubresourceLayers dstSubresource_ = {}, + Offset3D dstOffset_ = {}, + Extent3D extent_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcSubresource{ srcSubresource_ } + , srcOffset{ srcOffset_ } + , dstSubresource{ dstSubresource_ } + , dstOffset{ dstOffset_ } + , extent{ extent_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageCopy2( ImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCopy2( VkImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCopy2( *reinterpret_cast( &rhs ) ) {} + + ImageCopy2 & operator=( ImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageCopy2 & operator=( VkImageCopy2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 && setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setSrcOffset( Offset3D const & srcOffset_ ) & VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 && setSrcOffset( Offset3D const & srcOffset_ ) && VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 && setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setDstOffset( Offset3D const & dstOffset_ ) & VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 && setDstOffset( Offset3D const & dstOffset_ ) && VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 & setExtent( Extent3D const & extent_ ) & VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy2 && setExtent( Extent3D const & extent_ ) && VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageCopy2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCopy2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCopy2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageCopy2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageCopy2 const & ) const = default; +#else + bool operator==( ImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) && + ( dstSubresource == rhs.dstSubresource ) && ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent ); +# endif + } + + bool operator!=( ImageCopy2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageCopy2; + void const * pNext = {}; + ImageSubresourceLayers srcSubresource = {}; + Offset3D srcOffset = {}; + ImageSubresourceLayers dstSubresource = {}; + Offset3D dstOffset = {}; + Extent3D extent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageCopy2; + }; +#endif + + template <> + struct CppType + { + using Type = ImageCopy2; + }; + + using ImageCopy2KHR = ImageCopy2; + + // wrapper struct for struct VkCopyImageInfo2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyImageInfo2.html + struct CopyImageInfo2 + { + using NativeType = VkCopyImageInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyImageInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyImageInfo2( Image srcImage_ = {}, + ImageLayout srcImageLayout_ = ImageLayout::eUndefined, + Image dstImage_ = {}, + ImageLayout dstImageLayout_ = ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + ImageCopy2 const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcImage{ srcImage_ } + , srcImageLayout{ srcImageLayout_ } + , dstImage{ dstImage_ } + , dstImageLayout{ dstImageLayout_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyImageInfo2( CopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyImageInfo2( VkCopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : CopyImageInfo2( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageInfo2( Image srcImage_, + ImageLayout srcImageLayout_, + Image dstImage_, + ImageLayout dstImageLayout_, + ArrayProxyNoTemporaries const & regions_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyImageInfo2 & operator=( CopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyImageInfo2 & operator=( VkCopyImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setSrcImage( Image srcImage_ ) & VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 && setSrcImage( Image srcImage_ ) && VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setSrcImageLayout( ImageLayout srcImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 && setSrcImageLayout( ImageLayout srcImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setDstImage( Image dstImage_ ) & VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 && setDstImage( Image dstImage_ ) && VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setDstImageLayout( ImageLayout dstImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 && setDstImageLayout( ImageLayout dstImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 & setPRegions( ImageCopy2 const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2 && setPRegions( ImageCopy2 const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageInfo2 & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyImageInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyImageInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyImageInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyImageInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyImageInfo2 const & ) const = default; +#else + bool operator==( CopyImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) && + ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyImageInfo2; + void const * pNext = {}; + Image srcImage = {}; + ImageLayout srcImageLayout = ImageLayout::eUndefined; + Image dstImage = {}; + ImageLayout dstImageLayout = ImageLayout::eUndefined; + uint32_t regionCount = {}; + ImageCopy2 const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyImageInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = CopyImageInfo2; + }; + + using CopyImageInfo2KHR = CopyImageInfo2; + + // wrapper struct for struct VkCopyImageToBufferInfo2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyImageToBufferInfo2.html + struct CopyImageToBufferInfo2 + { + using NativeType = VkCopyImageToBufferInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyImageToBufferInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2( Image srcImage_ = {}, + ImageLayout srcImageLayout_ = ImageLayout::eUndefined, + Buffer dstBuffer_ = {}, + uint32_t regionCount_ = {}, + BufferImageCopy2 const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcImage{ srcImage_ } + , srcImageLayout{ srcImageLayout_ } + , dstBuffer{ dstBuffer_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2( CopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyImageToBufferInfo2( VkCopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyImageToBufferInfo2( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageToBufferInfo2( Image srcImage_, + ImageLayout srcImageLayout_, + Buffer dstBuffer_, + ArrayProxyNoTemporaries const & regions_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstBuffer( dstBuffer_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyImageToBufferInfo2 & operator=( CopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyImageToBufferInfo2 & operator=( VkCopyImageToBufferInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setSrcImage( Image srcImage_ ) & VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 && setSrcImage( Image srcImage_ ) && VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setSrcImageLayout( ImageLayout srcImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 && setSrcImageLayout( ImageLayout srcImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setDstBuffer( Buffer dstBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + dstBuffer = dstBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 && setDstBuffer( Buffer dstBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + dstBuffer = dstBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 & setPRegions( BufferImageCopy2 const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2 && setPRegions( BufferImageCopy2 const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageToBufferInfo2 & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyImageToBufferInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyImageToBufferInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyImageToBufferInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyImageToBufferInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyImageToBufferInfo2 const & ) const = default; +#else + bool operator==( CopyImageToBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) && + ( dstBuffer == rhs.dstBuffer ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyImageToBufferInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyImageToBufferInfo2; + void const * pNext = {}; + Image srcImage = {}; + ImageLayout srcImageLayout = ImageLayout::eUndefined; + Buffer dstBuffer = {}; + uint32_t regionCount = {}; + BufferImageCopy2 const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyImageToBufferInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = CopyImageToBufferInfo2; + }; + + using CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2; + + // wrapper struct for struct VkCopyImageToImageInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyImageToImageInfo.html + struct CopyImageToImageInfo + { + using NativeType = VkCopyImageToImageInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyImageToImageInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyImageToImageInfo( HostImageCopyFlags flags_ = {}, + Image srcImage_ = {}, + ImageLayout srcImageLayout_ = ImageLayout::eUndefined, + Image dstImage_ = {}, + ImageLayout dstImageLayout_ = ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + ImageCopy2 const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , srcImage{ srcImage_ } + , srcImageLayout{ srcImageLayout_ } + , dstImage{ dstImage_ } + , dstImageLayout{ dstImageLayout_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyImageToImageInfo( CopyImageToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyImageToImageInfo( VkCopyImageToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyImageToImageInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageToImageInfo( HostImageCopyFlags flags_, + Image srcImage_, + ImageLayout srcImageLayout_, + Image dstImage_, + ImageLayout dstImageLayout_, + ArrayProxyNoTemporaries const & regions_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyImageToImageInfo & operator=( CopyImageToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyImageToImageInfo & operator=( VkCopyImageToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setFlags( HostImageCopyFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo && setFlags( HostImageCopyFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setSrcImage( Image srcImage_ ) & VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo && setSrcImage( Image srcImage_ ) && VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setSrcImageLayout( ImageLayout srcImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo && setSrcImageLayout( ImageLayout srcImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setDstImage( Image dstImage_ ) & VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo && setDstImage( Image dstImage_ ) && VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setDstImageLayout( ImageLayout dstImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo && setDstImageLayout( ImageLayout dstImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo & setPRegions( ImageCopy2 const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToImageInfo && setPRegions( ImageCopy2 const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageToImageInfo & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyImageToImageInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyImageToImageInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyImageToImageInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyImageToImageInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyImageToImageInfo const & ) const = default; +#else + bool operator==( CopyImageToImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( srcImage == rhs.srcImage ) && + ( srcImageLayout == rhs.srcImageLayout ) && ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && + ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyImageToImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyImageToImageInfo; + void const * pNext = {}; + HostImageCopyFlags flags = {}; + Image srcImage = {}; + ImageLayout srcImageLayout = ImageLayout::eUndefined; + Image dstImage = {}; + ImageLayout dstImageLayout = ImageLayout::eUndefined; + uint32_t regionCount = {}; + ImageCopy2 const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyImageToImageInfo; + }; +#endif + + template <> + struct CppType + { + using Type = CopyImageToImageInfo; + }; + + using CopyImageToImageInfoEXT = CopyImageToImageInfo; + + // wrapper struct for struct VkImageToMemoryCopy, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageToMemoryCopy.html + struct ImageToMemoryCopy + { + using NativeType = VkImageToMemoryCopy; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageToMemoryCopy; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageToMemoryCopy( void * pHostPointer_ = {}, + uint32_t memoryRowLength_ = {}, + uint32_t memoryImageHeight_ = {}, + ImageSubresourceLayers imageSubresource_ = {}, + Offset3D imageOffset_ = {}, + Extent3D imageExtent_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pHostPointer{ pHostPointer_ } + , memoryRowLength{ memoryRowLength_ } + , memoryImageHeight{ memoryImageHeight_ } + , imageSubresource{ imageSubresource_ } + , imageOffset{ imageOffset_ } + , imageExtent{ imageExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageToMemoryCopy( ImageToMemoryCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageToMemoryCopy( VkImageToMemoryCopy const & rhs ) VULKAN_HPP_NOEXCEPT : ImageToMemoryCopy( *reinterpret_cast( &rhs ) ) {} + + ImageToMemoryCopy & operator=( ImageToMemoryCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageToMemoryCopy & operator=( VkImageToMemoryCopy const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setPHostPointer( void * pHostPointer_ ) & VULKAN_HPP_NOEXCEPT + { + pHostPointer = pHostPointer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy && setPHostPointer( void * pHostPointer_ ) && VULKAN_HPP_NOEXCEPT + { + pHostPointer = pHostPointer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setMemoryRowLength( uint32_t memoryRowLength_ ) & VULKAN_HPP_NOEXCEPT + { + memoryRowLength = memoryRowLength_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy && setMemoryRowLength( uint32_t memoryRowLength_ ) && VULKAN_HPP_NOEXCEPT + { + memoryRowLength = memoryRowLength_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setMemoryImageHeight( uint32_t memoryImageHeight_ ) & VULKAN_HPP_NOEXCEPT + { + memoryImageHeight = memoryImageHeight_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy && setMemoryImageHeight( uint32_t memoryImageHeight_ ) && VULKAN_HPP_NOEXCEPT + { + memoryImageHeight = memoryImageHeight_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy && setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setImageOffset( Offset3D const & imageOffset_ ) & VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy && setImageOffset( Offset3D const & imageOffset_ ) && VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy & setImageExtent( Extent3D const & imageExtent_ ) & VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageToMemoryCopy && setImageExtent( Extent3D const & imageExtent_ ) && VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageToMemoryCopy const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageToMemoryCopy &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageToMemoryCopy const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageToMemoryCopy *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pHostPointer, memoryRowLength, memoryImageHeight, imageSubresource, imageOffset, imageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageToMemoryCopy const & ) const = default; +#else + bool operator==( ImageToMemoryCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pHostPointer == rhs.pHostPointer ) && ( memoryRowLength == rhs.memoryRowLength ) && + ( memoryImageHeight == rhs.memoryImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) && + ( imageExtent == rhs.imageExtent ); +# endif + } + + bool operator!=( ImageToMemoryCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageToMemoryCopy; + void const * pNext = {}; + void * pHostPointer = {}; + uint32_t memoryRowLength = {}; + uint32_t memoryImageHeight = {}; + ImageSubresourceLayers imageSubresource = {}; + Offset3D imageOffset = {}; + Extent3D imageExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageToMemoryCopy; + }; +#endif + + template <> + struct CppType + { + using Type = ImageToMemoryCopy; + }; + + using ImageToMemoryCopyEXT = ImageToMemoryCopy; + + // wrapper struct for struct VkCopyImageToMemoryInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyImageToMemoryInfo.html + struct CopyImageToMemoryInfo + { + using NativeType = VkCopyImageToMemoryInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyImageToMemoryInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyImageToMemoryInfo( HostImageCopyFlags flags_ = {}, + Image srcImage_ = {}, + ImageLayout srcImageLayout_ = ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + ImageToMemoryCopy const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , srcImage{ srcImage_ } + , srcImageLayout{ srcImageLayout_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyImageToMemoryInfo( CopyImageToMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyImageToMemoryInfo( VkCopyImageToMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyImageToMemoryInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageToMemoryInfo( HostImageCopyFlags flags_, + Image srcImage_, + ImageLayout srcImageLayout_, + ArrayProxyNoTemporaries const & regions_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyImageToMemoryInfo & operator=( CopyImageToMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyImageToMemoryInfo & operator=( VkCopyImageToMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setFlags( HostImageCopyFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo && setFlags( HostImageCopyFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setSrcImage( Image srcImage_ ) & VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo && setSrcImage( Image srcImage_ ) && VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setSrcImageLayout( ImageLayout srcImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo && setSrcImageLayout( ImageLayout srcImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo & setPRegions( ImageToMemoryCopy const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyImageToMemoryInfo && setPRegions( ImageToMemoryCopy const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyImageToMemoryInfo & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyImageToMemoryInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyImageToMemoryInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyImageToMemoryInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyImageToMemoryInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, srcImage, srcImageLayout, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyImageToMemoryInfo const & ) const = default; +#else + bool operator==( CopyImageToMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( srcImage == rhs.srcImage ) && + ( srcImageLayout == rhs.srcImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyImageToMemoryInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyImageToMemoryInfo; + void const * pNext = {}; + HostImageCopyFlags flags = {}; + Image srcImage = {}; + ImageLayout srcImageLayout = ImageLayout::eUndefined; + uint32_t regionCount = {}; + ImageToMemoryCopy const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyImageToMemoryInfo; + }; +#endif + + template <> + struct CppType + { + using Type = CopyImageToMemoryInfo; + }; + + using CopyImageToMemoryInfoEXT = CopyImageToMemoryInfo; + + // wrapper struct for struct VkCopyMemoryIndirectCommandKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyMemoryIndirectCommandKHR.html + struct CopyMemoryIndirectCommandKHR + { + using NativeType = VkCopyMemoryIndirectCommandKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + CopyMemoryIndirectCommandKHR( DeviceAddress srcAddress_ = {}, DeviceAddress dstAddress_ = {}, DeviceSize size_ = {} ) VULKAN_HPP_NOEXCEPT + : srcAddress{ srcAddress_ } + , dstAddress{ dstAddress_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyMemoryIndirectCommandKHR( CopyMemoryIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMemoryIndirectCommandKHR( VkCopyMemoryIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyMemoryIndirectCommandKHR( *reinterpret_cast( &rhs ) ) + { + } + + CopyMemoryIndirectCommandKHR & operator=( CopyMemoryIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyMemoryIndirectCommandKHR & operator=( VkCopyMemoryIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandKHR & setSrcAddress( DeviceAddress srcAddress_ ) & VULKAN_HPP_NOEXCEPT + { + srcAddress = srcAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandKHR && setSrcAddress( DeviceAddress srcAddress_ ) && VULKAN_HPP_NOEXCEPT + { + srcAddress = srcAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandKHR & setDstAddress( DeviceAddress dstAddress_ ) & VULKAN_HPP_NOEXCEPT + { + dstAddress = dstAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandKHR && setDstAddress( DeviceAddress dstAddress_ ) && VULKAN_HPP_NOEXCEPT + { + dstAddress = dstAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandKHR & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectCommandKHR && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyMemoryIndirectCommandKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryIndirectCommandKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryIndirectCommandKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyMemoryIndirectCommandKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcAddress, dstAddress, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyMemoryIndirectCommandKHR const & ) const = default; +#else + bool operator==( CopyMemoryIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcAddress == rhs.srcAddress ) && ( dstAddress == rhs.dstAddress ) && ( size == rhs.size ); +# endif + } + + bool operator!=( CopyMemoryIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress srcAddress = {}; + DeviceAddress dstAddress = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyMemoryIndirectCommandKHR; + }; +#endif + using CopyMemoryIndirectCommandNV = CopyMemoryIndirectCommandKHR; + + // wrapper struct for struct VkCopyMemoryIndirectInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyMemoryIndirectInfoKHR.html + struct CopyMemoryIndirectInfoKHR + { + using NativeType = VkCopyMemoryIndirectInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyMemoryIndirectInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyMemoryIndirectInfoKHR( AddressCopyFlagsKHR srcCopyFlags_ = {}, + AddressCopyFlagsKHR dstCopyFlags_ = {}, + uint32_t copyCount_ = {}, + StridedDeviceAddressRangeKHR copyAddressRange_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcCopyFlags{ srcCopyFlags_ } + , dstCopyFlags{ dstCopyFlags_ } + , copyCount{ copyCount_ } + , copyAddressRange{ copyAddressRange_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyMemoryIndirectInfoKHR( CopyMemoryIndirectInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMemoryIndirectInfoKHR( VkCopyMemoryIndirectInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyMemoryIndirectInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + CopyMemoryIndirectInfoKHR & operator=( CopyMemoryIndirectInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyMemoryIndirectInfoKHR & operator=( VkCopyMemoryIndirectInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectInfoKHR & setSrcCopyFlags( AddressCopyFlagsKHR srcCopyFlags_ ) & VULKAN_HPP_NOEXCEPT + { + srcCopyFlags = srcCopyFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectInfoKHR && setSrcCopyFlags( AddressCopyFlagsKHR srcCopyFlags_ ) && VULKAN_HPP_NOEXCEPT + { + srcCopyFlags = srcCopyFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectInfoKHR & setDstCopyFlags( AddressCopyFlagsKHR dstCopyFlags_ ) & VULKAN_HPP_NOEXCEPT + { + dstCopyFlags = dstCopyFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectInfoKHR && setDstCopyFlags( AddressCopyFlagsKHR dstCopyFlags_ ) && VULKAN_HPP_NOEXCEPT + { + dstCopyFlags = dstCopyFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectInfoKHR & setCopyCount( uint32_t copyCount_ ) & VULKAN_HPP_NOEXCEPT + { + copyCount = copyCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectInfoKHR && setCopyCount( uint32_t copyCount_ ) && VULKAN_HPP_NOEXCEPT + { + copyCount = copyCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectInfoKHR & setCopyAddressRange( StridedDeviceAddressRangeKHR const & copyAddressRange_ ) & VULKAN_HPP_NOEXCEPT + { + copyAddressRange = copyAddressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryIndirectInfoKHR && setCopyAddressRange( StridedDeviceAddressRangeKHR const & copyAddressRange_ ) && VULKAN_HPP_NOEXCEPT + { + copyAddressRange = copyAddressRange_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyMemoryIndirectInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryIndirectInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryIndirectInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyMemoryIndirectInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcCopyFlags, dstCopyFlags, copyCount, copyAddressRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyMemoryIndirectInfoKHR const & ) const = default; +#else + bool operator==( CopyMemoryIndirectInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcCopyFlags == rhs.srcCopyFlags ) && ( dstCopyFlags == rhs.dstCopyFlags ) && + ( copyCount == rhs.copyCount ) && ( copyAddressRange == rhs.copyAddressRange ); +# endif + } + + bool operator!=( CopyMemoryIndirectInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyMemoryIndirectInfoKHR; + void const * pNext = {}; + AddressCopyFlagsKHR srcCopyFlags = {}; + AddressCopyFlagsKHR dstCopyFlags = {}; + uint32_t copyCount = {}; + StridedDeviceAddressRangeKHR copyAddressRange = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyMemoryIndirectInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = CopyMemoryIndirectInfoKHR; + }; + + // wrapper struct for struct VkCopyMemoryToAccelerationStructureInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyMemoryToAccelerationStructureInfoKHR.html + struct CopyMemoryToAccelerationStructureInfoKHR + { + using NativeType = VkCopyMemoryToAccelerationStructureInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyMemoryToAccelerationStructureInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR( DeviceOrHostAddressConstKHR src_ = {}, + AccelerationStructureKHR dst_ = {}, + CopyAccelerationStructureModeKHR mode_ = CopyAccelerationStructureModeKHR::eClone, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , src{ src_ } + , dst{ dst_ } + , mode{ mode_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMemoryToAccelerationStructureInfoKHR( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyMemoryToAccelerationStructureInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + CopyMemoryToAccelerationStructureInfoKHR & operator=( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyMemoryToAccelerationStructureInfoKHR & operator=( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & setSrc( DeviceOrHostAddressConstKHR const & src_ ) & VULKAN_HPP_NOEXCEPT + { + src = src_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR && setSrc( DeviceOrHostAddressConstKHR const & src_ ) && VULKAN_HPP_NOEXCEPT + { + src = src_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & setDst( AccelerationStructureKHR dst_ ) & VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR && setDst( AccelerationStructureKHR dst_ ) && VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR & setMode( CopyAccelerationStructureModeKHR mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToAccelerationStructureInfoKHR && setMode( CopyAccelerationStructureModeKHR mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyMemoryToAccelerationStructureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryToAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryToAccelerationStructureInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyMemoryToAccelerationStructureInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, src, dst, mode ); + } +#endif + + public: + StructureType sType = StructureType::eCopyMemoryToAccelerationStructureInfoKHR; + void const * pNext = {}; + DeviceOrHostAddressConstKHR src = {}; + AccelerationStructureKHR dst = {}; + CopyAccelerationStructureModeKHR mode = CopyAccelerationStructureModeKHR::eClone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyMemoryToAccelerationStructureInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = CopyMemoryToAccelerationStructureInfoKHR; + }; + + // wrapper struct for struct VkCopyMemoryToImageIndirectCommandKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectCommandKHR.html + struct CopyMemoryToImageIndirectCommandKHR + { + using NativeType = VkCopyMemoryToImageIndirectCommandKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyMemoryToImageIndirectCommandKHR( DeviceAddress srcAddress_ = {}, + uint32_t bufferRowLength_ = {}, + uint32_t bufferImageHeight_ = {}, + ImageSubresourceLayers imageSubresource_ = {}, + Offset3D imageOffset_ = {}, + Extent3D imageExtent_ = {} ) VULKAN_HPP_NOEXCEPT + : srcAddress{ srcAddress_ } + , bufferRowLength{ bufferRowLength_ } + , bufferImageHeight{ bufferImageHeight_ } + , imageSubresource{ imageSubresource_ } + , imageOffset{ imageOffset_ } + , imageExtent{ imageExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyMemoryToImageIndirectCommandKHR( CopyMemoryToImageIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMemoryToImageIndirectCommandKHR( VkCopyMemoryToImageIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyMemoryToImageIndirectCommandKHR( *reinterpret_cast( &rhs ) ) + { + } + + CopyMemoryToImageIndirectCommandKHR & operator=( CopyMemoryToImageIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyMemoryToImageIndirectCommandKHR & operator=( VkCopyMemoryToImageIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR & setSrcAddress( DeviceAddress srcAddress_ ) & VULKAN_HPP_NOEXCEPT + { + srcAddress = srcAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR && setSrcAddress( DeviceAddress srcAddress_ ) && VULKAN_HPP_NOEXCEPT + { + srcAddress = srcAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR & setBufferRowLength( uint32_t bufferRowLength_ ) & VULKAN_HPP_NOEXCEPT + { + bufferRowLength = bufferRowLength_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR && setBufferRowLength( uint32_t bufferRowLength_ ) && VULKAN_HPP_NOEXCEPT + { + bufferRowLength = bufferRowLength_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR & setBufferImageHeight( uint32_t bufferImageHeight_ ) & VULKAN_HPP_NOEXCEPT + { + bufferImageHeight = bufferImageHeight_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR && setBufferImageHeight( uint32_t bufferImageHeight_ ) && VULKAN_HPP_NOEXCEPT + { + bufferImageHeight = bufferImageHeight_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR & setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR && setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) && + VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR & setImageOffset( Offset3D const & imageOffset_ ) & VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR && setImageOffset( Offset3D const & imageOffset_ ) && VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR & setImageExtent( Extent3D const & imageExtent_ ) & VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectCommandKHR && setImageExtent( Extent3D const & imageExtent_ ) && VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyMemoryToImageIndirectCommandKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryToImageIndirectCommandKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryToImageIndirectCommandKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyMemoryToImageIndirectCommandKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcAddress, bufferRowLength, bufferImageHeight, imageSubresource, imageOffset, imageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyMemoryToImageIndirectCommandKHR const & ) const = default; +#else + bool operator==( CopyMemoryToImageIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcAddress == rhs.srcAddress ) && ( bufferRowLength == rhs.bufferRowLength ) && ( bufferImageHeight == rhs.bufferImageHeight ) && + ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) && ( imageExtent == rhs.imageExtent ); +# endif + } + + bool operator!=( CopyMemoryToImageIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress srcAddress = {}; + uint32_t bufferRowLength = {}; + uint32_t bufferImageHeight = {}; + ImageSubresourceLayers imageSubresource = {}; + Offset3D imageOffset = {}; + Extent3D imageExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyMemoryToImageIndirectCommandKHR; + }; +#endif + using CopyMemoryToImageIndirectCommandNV = CopyMemoryToImageIndirectCommandKHR; + + // wrapper struct for struct VkCopyMemoryToImageIndirectInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyMemoryToImageIndirectInfoKHR.html + struct CopyMemoryToImageIndirectInfoKHR + { + using NativeType = VkCopyMemoryToImageIndirectInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyMemoryToImageIndirectInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyMemoryToImageIndirectInfoKHR( AddressCopyFlagsKHR srcCopyFlags_ = {}, + uint32_t copyCount_ = {}, + StridedDeviceAddressRangeKHR copyAddressRange_ = {}, + Image dstImage_ = {}, + ImageLayout dstImageLayout_ = ImageLayout::eUndefined, + ImageSubresourceLayers const * pImageSubresources_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcCopyFlags{ srcCopyFlags_ } + , copyCount{ copyCount_ } + , copyAddressRange{ copyAddressRange_ } + , dstImage{ dstImage_ } + , dstImageLayout{ dstImageLayout_ } + , pImageSubresources{ pImageSubresources_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyMemoryToImageIndirectInfoKHR( CopyMemoryToImageIndirectInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMemoryToImageIndirectInfoKHR( VkCopyMemoryToImageIndirectInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyMemoryToImageIndirectInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyMemoryToImageIndirectInfoKHR( AddressCopyFlagsKHR srcCopyFlags_, + StridedDeviceAddressRangeKHR copyAddressRange_, + Image dstImage_, + ImageLayout dstImageLayout_, + ArrayProxyNoTemporaries const & imageSubresources_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , srcCopyFlags( srcCopyFlags_ ) + , copyCount( static_cast( imageSubresources_.size() ) ) + , copyAddressRange( copyAddressRange_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , pImageSubresources( imageSubresources_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyMemoryToImageIndirectInfoKHR & operator=( CopyMemoryToImageIndirectInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyMemoryToImageIndirectInfoKHR & operator=( VkCopyMemoryToImageIndirectInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR & setSrcCopyFlags( AddressCopyFlagsKHR srcCopyFlags_ ) & VULKAN_HPP_NOEXCEPT + { + srcCopyFlags = srcCopyFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR && setSrcCopyFlags( AddressCopyFlagsKHR srcCopyFlags_ ) && VULKAN_HPP_NOEXCEPT + { + srcCopyFlags = srcCopyFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR & setCopyCount( uint32_t copyCount_ ) & VULKAN_HPP_NOEXCEPT + { + copyCount = copyCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR && setCopyCount( uint32_t copyCount_ ) && VULKAN_HPP_NOEXCEPT + { + copyCount = copyCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR & setCopyAddressRange( StridedDeviceAddressRangeKHR const & copyAddressRange_ ) & + VULKAN_HPP_NOEXCEPT + { + copyAddressRange = copyAddressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR && setCopyAddressRange( StridedDeviceAddressRangeKHR const & copyAddressRange_ ) && + VULKAN_HPP_NOEXCEPT + { + copyAddressRange = copyAddressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR & setDstImage( Image dstImage_ ) & VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR && setDstImage( Image dstImage_ ) && VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR & setDstImageLayout( ImageLayout dstImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR && setDstImageLayout( ImageLayout dstImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR & setPImageSubresources( ImageSubresourceLayers const * pImageSubresources_ ) & VULKAN_HPP_NOEXCEPT + { + pImageSubresources = pImageSubresources_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageIndirectInfoKHR && setPImageSubresources( ImageSubresourceLayers const * pImageSubresources_ ) && + VULKAN_HPP_NOEXCEPT + { + pImageSubresources = pImageSubresources_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyMemoryToImageIndirectInfoKHR & + setImageSubresources( ArrayProxyNoTemporaries const & imageSubresources_ ) VULKAN_HPP_NOEXCEPT + { + copyCount = static_cast( imageSubresources_.size() ); + pImageSubresources = imageSubresources_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyMemoryToImageIndirectInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryToImageIndirectInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryToImageIndirectInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyMemoryToImageIndirectInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcCopyFlags, copyCount, copyAddressRange, dstImage, dstImageLayout, pImageSubresources ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyMemoryToImageIndirectInfoKHR const & ) const = default; +#else + bool operator==( CopyMemoryToImageIndirectInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcCopyFlags == rhs.srcCopyFlags ) && ( copyCount == rhs.copyCount ) && + ( copyAddressRange == rhs.copyAddressRange ) && ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && + ( pImageSubresources == rhs.pImageSubresources ); +# endif + } + + bool operator!=( CopyMemoryToImageIndirectInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyMemoryToImageIndirectInfoKHR; + void const * pNext = {}; + AddressCopyFlagsKHR srcCopyFlags = {}; + uint32_t copyCount = {}; + StridedDeviceAddressRangeKHR copyAddressRange = {}; + Image dstImage = {}; + ImageLayout dstImageLayout = ImageLayout::eUndefined; + ImageSubresourceLayers const * pImageSubresources = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyMemoryToImageIndirectInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = CopyMemoryToImageIndirectInfoKHR; + }; + + // wrapper struct for struct VkMemoryToImageCopy, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryToImageCopy.html + struct MemoryToImageCopy + { + using NativeType = VkMemoryToImageCopy; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryToImageCopy; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryToImageCopy( void const * pHostPointer_ = {}, + uint32_t memoryRowLength_ = {}, + uint32_t memoryImageHeight_ = {}, + ImageSubresourceLayers imageSubresource_ = {}, + Offset3D imageOffset_ = {}, + Extent3D imageExtent_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pHostPointer{ pHostPointer_ } + , memoryRowLength{ memoryRowLength_ } + , memoryImageHeight{ memoryImageHeight_ } + , imageSubresource{ imageSubresource_ } + , imageOffset{ imageOffset_ } + , imageExtent{ imageExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryToImageCopy( MemoryToImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryToImageCopy( VkMemoryToImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryToImageCopy( *reinterpret_cast( &rhs ) ) {} + + MemoryToImageCopy & operator=( MemoryToImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryToImageCopy & operator=( VkMemoryToImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setPHostPointer( void const * pHostPointer_ ) & VULKAN_HPP_NOEXCEPT + { + pHostPointer = pHostPointer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy && setPHostPointer( void const * pHostPointer_ ) && VULKAN_HPP_NOEXCEPT + { + pHostPointer = pHostPointer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setMemoryRowLength( uint32_t memoryRowLength_ ) & VULKAN_HPP_NOEXCEPT + { + memoryRowLength = memoryRowLength_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy && setMemoryRowLength( uint32_t memoryRowLength_ ) && VULKAN_HPP_NOEXCEPT + { + memoryRowLength = memoryRowLength_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setMemoryImageHeight( uint32_t memoryImageHeight_ ) & VULKAN_HPP_NOEXCEPT + { + memoryImageHeight = memoryImageHeight_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy && setMemoryImageHeight( uint32_t memoryImageHeight_ ) && VULKAN_HPP_NOEXCEPT + { + memoryImageHeight = memoryImageHeight_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy && setImageSubresource( ImageSubresourceLayers const & imageSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setImageOffset( Offset3D const & imageOffset_ ) & VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy && setImageOffset( Offset3D const & imageOffset_ ) && VULKAN_HPP_NOEXCEPT + { + imageOffset = imageOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy & setImageExtent( Extent3D const & imageExtent_ ) & VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryToImageCopy && setImageExtent( Extent3D const & imageExtent_ ) && VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryToImageCopy const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryToImageCopy &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryToImageCopy const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryToImageCopy *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pHostPointer, memoryRowLength, memoryImageHeight, imageSubresource, imageOffset, imageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryToImageCopy const & ) const = default; +#else + bool operator==( MemoryToImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pHostPointer == rhs.pHostPointer ) && ( memoryRowLength == rhs.memoryRowLength ) && + ( memoryImageHeight == rhs.memoryImageHeight ) && ( imageSubresource == rhs.imageSubresource ) && ( imageOffset == rhs.imageOffset ) && + ( imageExtent == rhs.imageExtent ); +# endif + } + + bool operator!=( MemoryToImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryToImageCopy; + void const * pNext = {}; + void const * pHostPointer = {}; + uint32_t memoryRowLength = {}; + uint32_t memoryImageHeight = {}; + ImageSubresourceLayers imageSubresource = {}; + Offset3D imageOffset = {}; + Extent3D imageExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryToImageCopy; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryToImageCopy; + }; + + using MemoryToImageCopyEXT = MemoryToImageCopy; + + // wrapper struct for struct VkCopyMemoryToImageInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyMemoryToImageInfo.html + struct CopyMemoryToImageInfo + { + using NativeType = VkCopyMemoryToImageInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyMemoryToImageInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyMemoryToImageInfo( HostImageCopyFlags flags_ = {}, + Image dstImage_ = {}, + ImageLayout dstImageLayout_ = ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + MemoryToImageCopy const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , dstImage{ dstImage_ } + , dstImageLayout{ dstImageLayout_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyMemoryToImageInfo( CopyMemoryToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMemoryToImageInfo( VkCopyMemoryToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyMemoryToImageInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyMemoryToImageInfo( HostImageCopyFlags flags_, + Image dstImage_, + ImageLayout dstImageLayout_, + ArrayProxyNoTemporaries const & regions_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyMemoryToImageInfo & operator=( CopyMemoryToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyMemoryToImageInfo & operator=( VkCopyMemoryToImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setFlags( HostImageCopyFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo && setFlags( HostImageCopyFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setDstImage( Image dstImage_ ) & VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo && setDstImage( Image dstImage_ ) && VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setDstImageLayout( ImageLayout dstImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo && setDstImageLayout( ImageLayout dstImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo & setPRegions( MemoryToImageCopy const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToImageInfo && setPRegions( MemoryToImageCopy const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyMemoryToImageInfo & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyMemoryToImageInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryToImageInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryToImageInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyMemoryToImageInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, dstImage, dstImageLayout, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyMemoryToImageInfo const & ) const = default; +#else + bool operator==( CopyMemoryToImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dstImage == rhs.dstImage ) && + ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyMemoryToImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyMemoryToImageInfo; + void const * pNext = {}; + HostImageCopyFlags flags = {}; + Image dstImage = {}; + ImageLayout dstImageLayout = ImageLayout::eUndefined; + uint32_t regionCount = {}; + MemoryToImageCopy const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyMemoryToImageInfo; + }; +#endif + + template <> + struct CppType + { + using Type = CopyMemoryToImageInfo; + }; + + using CopyMemoryToImageInfoEXT = CopyMemoryToImageInfo; + + // wrapper struct for struct VkCopyMemoryToMicromapInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyMemoryToMicromapInfoEXT.html + struct CopyMemoryToMicromapInfoEXT + { + using NativeType = VkCopyMemoryToMicromapInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyMemoryToMicromapInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT( DeviceOrHostAddressConstKHR src_ = {}, + MicromapEXT dst_ = {}, + CopyMicromapModeEXT mode_ = CopyMicromapModeEXT::eClone, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , src{ src_ } + , dst{ dst_ } + , mode{ mode_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT( CopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMemoryToMicromapInfoEXT( VkCopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyMemoryToMicromapInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + CopyMemoryToMicromapInfoEXT & operator=( CopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyMemoryToMicromapInfoEXT & operator=( VkCopyMemoryToMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setSrc( DeviceOrHostAddressConstKHR const & src_ ) & VULKAN_HPP_NOEXCEPT + { + src = src_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT && setSrc( DeviceOrHostAddressConstKHR const & src_ ) && VULKAN_HPP_NOEXCEPT + { + src = src_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setDst( MicromapEXT dst_ ) & VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT && setDst( MicromapEXT dst_ ) && VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT & setMode( CopyMicromapModeEXT mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMemoryToMicromapInfoEXT && setMode( CopyMicromapModeEXT mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyMemoryToMicromapInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryToMicromapInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMemoryToMicromapInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyMemoryToMicromapInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, src, dst, mode ); + } +#endif + + public: + StructureType sType = StructureType::eCopyMemoryToMicromapInfoEXT; + void const * pNext = {}; + DeviceOrHostAddressConstKHR src = {}; + MicromapEXT dst = {}; + CopyMicromapModeEXT mode = CopyMicromapModeEXT::eClone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyMemoryToMicromapInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = CopyMemoryToMicromapInfoEXT; + }; + + // wrapper struct for struct VkCopyMicromapInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyMicromapInfoEXT.html + struct CopyMicromapInfoEXT + { + using NativeType = VkCopyMicromapInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyMicromapInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyMicromapInfoEXT( MicromapEXT src_ = {}, + MicromapEXT dst_ = {}, + CopyMicromapModeEXT mode_ = CopyMicromapModeEXT::eClone, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , src{ src_ } + , dst{ dst_ } + , mode{ mode_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyMicromapInfoEXT( CopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMicromapInfoEXT( VkCopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : CopyMicromapInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + CopyMicromapInfoEXT & operator=( CopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyMicromapInfoEXT & operator=( VkCopyMicromapInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setSrc( MicromapEXT src_ ) & VULKAN_HPP_NOEXCEPT + { + src = src_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT && setSrc( MicromapEXT src_ ) && VULKAN_HPP_NOEXCEPT + { + src = src_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setDst( MicromapEXT dst_ ) & VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT && setDst( MicromapEXT dst_ ) && VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT & setMode( CopyMicromapModeEXT mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapInfoEXT && setMode( CopyMicromapModeEXT mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyMicromapInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMicromapInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMicromapInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyMicromapInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, src, dst, mode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyMicromapInfoEXT const & ) const = default; +#else + bool operator==( CopyMicromapInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( src == rhs.src ) && ( dst == rhs.dst ) && ( mode == rhs.mode ); +# endif + } + + bool operator!=( CopyMicromapInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyMicromapInfoEXT; + void const * pNext = {}; + MicromapEXT src = {}; + MicromapEXT dst = {}; + CopyMicromapModeEXT mode = CopyMicromapModeEXT::eClone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyMicromapInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = CopyMicromapInfoEXT; + }; + + // wrapper struct for struct VkCopyMicromapToMemoryInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyMicromapToMemoryInfoEXT.html + struct CopyMicromapToMemoryInfoEXT + { + using NativeType = VkCopyMicromapToMemoryInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyMicromapToMemoryInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT( MicromapEXT src_ = {}, + DeviceOrHostAddressKHR dst_ = {}, + CopyMicromapModeEXT mode_ = CopyMicromapModeEXT::eClone, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , src{ src_ } + , dst{ dst_ } + , mode{ mode_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT( CopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyMicromapToMemoryInfoEXT( VkCopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : CopyMicromapToMemoryInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + CopyMicromapToMemoryInfoEXT & operator=( CopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyMicromapToMemoryInfoEXT & operator=( VkCopyMicromapToMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setSrc( MicromapEXT src_ ) & VULKAN_HPP_NOEXCEPT + { + src = src_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT && setSrc( MicromapEXT src_ ) && VULKAN_HPP_NOEXCEPT + { + src = src_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setDst( DeviceOrHostAddressKHR const & dst_ ) & VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT && setDst( DeviceOrHostAddressKHR const & dst_ ) && VULKAN_HPP_NOEXCEPT + { + dst = dst_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT & setMode( CopyMicromapModeEXT mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyMicromapToMemoryInfoEXT && setMode( CopyMicromapModeEXT mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyMicromapToMemoryInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMicromapToMemoryInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyMicromapToMemoryInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyMicromapToMemoryInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, src, dst, mode ); + } +#endif + + public: + StructureType sType = StructureType::eCopyMicromapToMemoryInfoEXT; + void const * pNext = {}; + MicromapEXT src = {}; + DeviceOrHostAddressKHR dst = {}; + CopyMicromapModeEXT mode = CopyMicromapModeEXT::eClone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyMicromapToMemoryInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = CopyMicromapToMemoryInfoEXT; + }; + + // wrapper struct for struct VkTensorCopyARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorCopyARM.html + struct TensorCopyARM + { + using NativeType = VkTensorCopyARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTensorCopyARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TensorCopyARM( uint32_t dimensionCount_ = {}, + uint64_t const * pSrcOffset_ = {}, + uint64_t const * pDstOffset_ = {}, + uint64_t const * pExtent_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dimensionCount{ dimensionCount_ } + , pSrcOffset{ pSrcOffset_ } + , pDstOffset{ pDstOffset_ } + , pExtent{ pExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR TensorCopyARM( TensorCopyARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TensorCopyARM( VkTensorCopyARM const & rhs ) VULKAN_HPP_NOEXCEPT : TensorCopyARM( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TensorCopyARM( ArrayProxyNoTemporaries const & srcOffset_, + ArrayProxyNoTemporaries const & dstOffset_ = {}, + ArrayProxyNoTemporaries const & extent_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , dimensionCount( static_cast( srcOffset_.size() ) ) + , pSrcOffset( srcOffset_.data() ) + , pDstOffset( dstOffset_.data() ) + , pExtent( extent_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( srcOffset_.empty() || dstOffset_.empty() || ( srcOffset_.size() == dstOffset_.size() ) ); + VULKAN_HPP_ASSERT( srcOffset_.empty() || extent_.empty() || ( srcOffset_.size() == extent_.size() ) ); + VULKAN_HPP_ASSERT( dstOffset_.empty() || extent_.empty() || ( dstOffset_.size() == extent_.size() ) ); +# else + if ( !srcOffset_.empty() && !dstOffset_.empty() && ( srcOffset_.size() != dstOffset_.size() ) ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::TensorCopyARM::TensorCopyARM: !srcOffset_.empty() && !dstOffset_.empty() && ( srcOffset_.size() != dstOffset_.size() )" ); + } + if ( !srcOffset_.empty() && !extent_.empty() && ( srcOffset_.size() != extent_.size() ) ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::TensorCopyARM::TensorCopyARM: !srcOffset_.empty() && !extent_.empty() && ( srcOffset_.size() != extent_.size() )" ); + } + if ( !dstOffset_.empty() && !extent_.empty() && ( dstOffset_.size() != extent_.size() ) ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::TensorCopyARM::TensorCopyARM: !dstOffset_.empty() && !extent_.empty() && ( dstOffset_.size() != extent_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + TensorCopyARM & operator=( TensorCopyARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TensorCopyARM & operator=( VkTensorCopyARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TensorCopyARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCopyARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorCopyARM & setDimensionCount( uint32_t dimensionCount_ ) & VULKAN_HPP_NOEXCEPT + { + dimensionCount = dimensionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCopyARM && setDimensionCount( uint32_t dimensionCount_ ) && VULKAN_HPP_NOEXCEPT + { + dimensionCount = dimensionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorCopyARM & setPSrcOffset( uint64_t const * pSrcOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pSrcOffset = pSrcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCopyARM && setPSrcOffset( uint64_t const * pSrcOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pSrcOffset = pSrcOffset_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TensorCopyARM & setSrcOffset( ArrayProxyNoTemporaries const & srcOffset_ ) VULKAN_HPP_NOEXCEPT + { + dimensionCount = static_cast( srcOffset_.size() ); + pSrcOffset = srcOffset_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 TensorCopyARM & setPDstOffset( uint64_t const * pDstOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pDstOffset = pDstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCopyARM && setPDstOffset( uint64_t const * pDstOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pDstOffset = pDstOffset_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TensorCopyARM & setDstOffset( ArrayProxyNoTemporaries const & dstOffset_ ) VULKAN_HPP_NOEXCEPT + { + dimensionCount = static_cast( dstOffset_.size() ); + pDstOffset = dstOffset_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 TensorCopyARM & setPExtent( uint64_t const * pExtent_ ) & VULKAN_HPP_NOEXCEPT + { + pExtent = pExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCopyARM && setPExtent( uint64_t const * pExtent_ ) && VULKAN_HPP_NOEXCEPT + { + pExtent = pExtent_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TensorCopyARM & setExtent( ArrayProxyNoTemporaries const & extent_ ) VULKAN_HPP_NOEXCEPT + { + dimensionCount = static_cast( extent_.size() ); + pExtent = extent_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTensorCopyARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorCopyARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorCopyARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTensorCopyARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dimensionCount, pSrcOffset, pDstOffset, pExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TensorCopyARM const & ) const = default; +#else + bool operator==( TensorCopyARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dimensionCount == rhs.dimensionCount ) && ( pSrcOffset == rhs.pSrcOffset ) && + ( pDstOffset == rhs.pDstOffset ) && ( pExtent == rhs.pExtent ); +# endif + } + + bool operator!=( TensorCopyARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTensorCopyARM; + void const * pNext = {}; + uint32_t dimensionCount = {}; + uint64_t const * pSrcOffset = {}; + uint64_t const * pDstOffset = {}; + uint64_t const * pExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TensorCopyARM; + }; +#endif + + template <> + struct CppType + { + using Type = TensorCopyARM; + }; + + // wrapper struct for struct VkCopyTensorInfoARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCopyTensorInfoARM.html + struct CopyTensorInfoARM + { + using NativeType = VkCopyTensorInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyTensorInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CopyTensorInfoARM( TensorARM srcTensor_ = {}, + TensorARM dstTensor_ = {}, + uint32_t regionCount_ = {}, + TensorCopyARM const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcTensor{ srcTensor_ } + , dstTensor{ dstTensor_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR CopyTensorInfoARM( CopyTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CopyTensorInfoARM( VkCopyTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT : CopyTensorInfoARM( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyTensorInfoARM( TensorARM srcTensor_, + TensorARM dstTensor_, + ArrayProxyNoTemporaries const & regions_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), srcTensor( srcTensor_ ), dstTensor( dstTensor_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CopyTensorInfoARM & operator=( CopyTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CopyTensorInfoARM & operator=( VkCopyTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CopyTensorInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyTensorInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyTensorInfoARM & setSrcTensor( TensorARM srcTensor_ ) & VULKAN_HPP_NOEXCEPT + { + srcTensor = srcTensor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyTensorInfoARM && setSrcTensor( TensorARM srcTensor_ ) && VULKAN_HPP_NOEXCEPT + { + srcTensor = srcTensor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyTensorInfoARM & setDstTensor( TensorARM dstTensor_ ) & VULKAN_HPP_NOEXCEPT + { + dstTensor = dstTensor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyTensorInfoARM && setDstTensor( TensorARM dstTensor_ ) && VULKAN_HPP_NOEXCEPT + { + dstTensor = dstTensor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyTensorInfoARM & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyTensorInfoARM && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CopyTensorInfoARM & setPRegions( TensorCopyARM const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CopyTensorInfoARM && setPRegions( TensorCopyARM const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CopyTensorInfoARM & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCopyTensorInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyTensorInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCopyTensorInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCopyTensorInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcTensor, dstTensor, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CopyTensorInfoARM const & ) const = default; +#else + bool operator==( CopyTensorInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcTensor == rhs.srcTensor ) && ( dstTensor == rhs.dstTensor ) && + ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( CopyTensorInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCopyTensorInfoARM; + void const * pNext = {}; + TensorARM srcTensor = {}; + TensorARM dstTensor = {}; + uint32_t regionCount = {}; + TensorCopyARM const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CopyTensorInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = CopyTensorInfoARM; + }; + + // wrapper struct for struct VkCuFunctionCreateInfoNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuFunctionCreateInfoNVX.html + struct CuFunctionCreateInfoNVX + { + using NativeType = VkCuFunctionCreateInfoNVX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCuFunctionCreateInfoNVX; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CuFunctionCreateInfoNVX( CuModuleNVX module_ = {}, char const * pName_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , module{ module_ } + , pName{ pName_ } + { + } + + VULKAN_HPP_CONSTEXPR CuFunctionCreateInfoNVX( CuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CuFunctionCreateInfoNVX( VkCuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : CuFunctionCreateInfoNVX( *reinterpret_cast( &rhs ) ) + { + } + + CuFunctionCreateInfoNVX & operator=( CuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CuFunctionCreateInfoNVX & operator=( VkCuFunctionCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setModule( CuModuleNVX module_ ) & VULKAN_HPP_NOEXCEPT + { + module = module_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX && setModule( CuModuleNVX module_ ) && VULKAN_HPP_NOEXCEPT + { + module = module_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX & setPName( char const * pName_ ) & VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuFunctionCreateInfoNVX && setPName( char const * pName_ ) && VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCuFunctionCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCuFunctionCreateInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCuFunctionCreateInfoNVX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCuFunctionCreateInfoNVX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, module, pName ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = module <=> rhs.module; cmp != 0 ) + return cmp; + if ( pName != rhs.pName ) + if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( module == rhs.module ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ); + } + + bool operator!=( CuFunctionCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eCuFunctionCreateInfoNVX; + void const * pNext = {}; + CuModuleNVX module = {}; + char const * pName = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CuFunctionCreateInfoNVX; + }; +#endif + + template <> + struct CppType + { + using Type = CuFunctionCreateInfoNVX; + }; + + // wrapper struct for struct VkCuLaunchInfoNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuLaunchInfoNVX.html + struct CuLaunchInfoNVX + { + using NativeType = VkCuLaunchInfoNVX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCuLaunchInfoNVX; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CuLaunchInfoNVX( CuFunctionNVX function_ = {}, + uint32_t gridDimX_ = {}, + uint32_t gridDimY_ = {}, + uint32_t gridDimZ_ = {}, + uint32_t blockDimX_ = {}, + uint32_t blockDimY_ = {}, + uint32_t blockDimZ_ = {}, + uint32_t sharedMemBytes_ = {}, + size_t paramCount_ = {}, + void const * const * pParams_ = {}, + size_t extraCount_ = {}, + void const * const * pExtras_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , function{ function_ } + , gridDimX{ gridDimX_ } + , gridDimY{ gridDimY_ } + , gridDimZ{ gridDimZ_ } + , blockDimX{ blockDimX_ } + , blockDimY{ blockDimY_ } + , blockDimZ{ blockDimZ_ } + , sharedMemBytes{ sharedMemBytes_ } + , paramCount{ paramCount_ } + , pParams{ pParams_ } + , extraCount{ extraCount_ } + , pExtras{ pExtras_ } + { + } + + VULKAN_HPP_CONSTEXPR CuLaunchInfoNVX( CuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CuLaunchInfoNVX( VkCuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT : CuLaunchInfoNVX( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CuLaunchInfoNVX( CuFunctionNVX function_, + uint32_t gridDimX_, + uint32_t gridDimY_, + uint32_t gridDimZ_, + uint32_t blockDimX_, + uint32_t blockDimY_, + uint32_t blockDimZ_, + uint32_t sharedMemBytes_, + ArrayProxyNoTemporaries const & params_, + ArrayProxyNoTemporaries const & extras_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , function( function_ ) + , gridDimX( gridDimX_ ) + , gridDimY( gridDimY_ ) + , gridDimZ( gridDimZ_ ) + , blockDimX( blockDimX_ ) + , blockDimY( blockDimY_ ) + , blockDimZ( blockDimZ_ ) + , sharedMemBytes( sharedMemBytes_ ) + , paramCount( params_.size() ) + , pParams( params_.data() ) + , extraCount( extras_.size() ) + , pExtras( extras_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CuLaunchInfoNVX & operator=( CuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CuLaunchInfoNVX & operator=( VkCuLaunchInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setFunction( CuFunctionNVX function_ ) & VULKAN_HPP_NOEXCEPT + { + function = function_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setFunction( CuFunctionNVX function_ ) && VULKAN_HPP_NOEXCEPT + { + function = function_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimX( uint32_t gridDimX_ ) & VULKAN_HPP_NOEXCEPT + { + gridDimX = gridDimX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setGridDimX( uint32_t gridDimX_ ) && VULKAN_HPP_NOEXCEPT + { + gridDimX = gridDimX_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimY( uint32_t gridDimY_ ) & VULKAN_HPP_NOEXCEPT + { + gridDimY = gridDimY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setGridDimY( uint32_t gridDimY_ ) && VULKAN_HPP_NOEXCEPT + { + gridDimY = gridDimY_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setGridDimZ( uint32_t gridDimZ_ ) & VULKAN_HPP_NOEXCEPT + { + gridDimZ = gridDimZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setGridDimZ( uint32_t gridDimZ_ ) && VULKAN_HPP_NOEXCEPT + { + gridDimZ = gridDimZ_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimX( uint32_t blockDimX_ ) & VULKAN_HPP_NOEXCEPT + { + blockDimX = blockDimX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setBlockDimX( uint32_t blockDimX_ ) && VULKAN_HPP_NOEXCEPT + { + blockDimX = blockDimX_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimY( uint32_t blockDimY_ ) & VULKAN_HPP_NOEXCEPT + { + blockDimY = blockDimY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setBlockDimY( uint32_t blockDimY_ ) && VULKAN_HPP_NOEXCEPT + { + blockDimY = blockDimY_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setBlockDimZ( uint32_t blockDimZ_ ) & VULKAN_HPP_NOEXCEPT + { + blockDimZ = blockDimZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setBlockDimZ( uint32_t blockDimZ_ ) && VULKAN_HPP_NOEXCEPT + { + blockDimZ = blockDimZ_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setSharedMemBytes( uint32_t sharedMemBytes_ ) & VULKAN_HPP_NOEXCEPT + { + sharedMemBytes = sharedMemBytes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setSharedMemBytes( uint32_t sharedMemBytes_ ) && VULKAN_HPP_NOEXCEPT + { + sharedMemBytes = sharedMemBytes_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setParamCount( size_t paramCount_ ) & VULKAN_HPP_NOEXCEPT + { + paramCount = paramCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setParamCount( size_t paramCount_ ) && VULKAN_HPP_NOEXCEPT + { + paramCount = paramCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPParams( void const * const * pParams_ ) & VULKAN_HPP_NOEXCEPT + { + pParams = pParams_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setPParams( void const * const * pParams_ ) && VULKAN_HPP_NOEXCEPT + { + pParams = pParams_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CuLaunchInfoNVX & setParams( ArrayProxyNoTemporaries const & params_ ) VULKAN_HPP_NOEXCEPT + { + paramCount = params_.size(); + pParams = params_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setExtraCount( size_t extraCount_ ) & VULKAN_HPP_NOEXCEPT + { + extraCount = extraCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setExtraCount( size_t extraCount_ ) && VULKAN_HPP_NOEXCEPT + { + extraCount = extraCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX & setPExtras( void const * const * pExtras_ ) & VULKAN_HPP_NOEXCEPT + { + pExtras = pExtras_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuLaunchInfoNVX && setPExtras( void const * const * pExtras_ ) && VULKAN_HPP_NOEXCEPT + { + pExtras = pExtras_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CuLaunchInfoNVX & setExtras( ArrayProxyNoTemporaries const & extras_ ) VULKAN_HPP_NOEXCEPT + { + extraCount = extras_.size(); + pExtras = extras_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCuLaunchInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCuLaunchInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCuLaunchInfoNVX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCuLaunchInfoNVX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, function, gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY, blockDimZ, sharedMemBytes, paramCount, pParams, extraCount, pExtras ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CuLaunchInfoNVX const & ) const = default; +#else + bool operator==( CuLaunchInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( function == rhs.function ) && ( gridDimX == rhs.gridDimX ) && ( gridDimY == rhs.gridDimY ) && + ( gridDimZ == rhs.gridDimZ ) && ( blockDimX == rhs.blockDimX ) && ( blockDimY == rhs.blockDimY ) && ( blockDimZ == rhs.blockDimZ ) && + ( sharedMemBytes == rhs.sharedMemBytes ) && ( paramCount == rhs.paramCount ) && ( pParams == rhs.pParams ) && ( extraCount == rhs.extraCount ) && + ( pExtras == rhs.pExtras ); +# endif + } + + bool operator!=( CuLaunchInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCuLaunchInfoNVX; + void const * pNext = {}; + CuFunctionNVX function = {}; + uint32_t gridDimX = {}; + uint32_t gridDimY = {}; + uint32_t gridDimZ = {}; + uint32_t blockDimX = {}; + uint32_t blockDimY = {}; + uint32_t blockDimZ = {}; + uint32_t sharedMemBytes = {}; + size_t paramCount = {}; + void const * const * pParams = {}; + size_t extraCount = {}; + void const * const * pExtras = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CuLaunchInfoNVX; + }; +#endif + + template <> + struct CppType + { + using Type = CuLaunchInfoNVX; + }; + + // wrapper struct for struct VkCuModuleCreateInfoNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuModuleCreateInfoNVX.html + struct CuModuleCreateInfoNVX + { + using NativeType = VkCuModuleCreateInfoNVX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCuModuleCreateInfoNVX; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CuModuleCreateInfoNVX( size_t dataSize_ = {}, void const * pData_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dataSize{ dataSize_ } + , pData{ pData_ } + { + } + + VULKAN_HPP_CONSTEXPR CuModuleCreateInfoNVX( CuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CuModuleCreateInfoNVX( VkCuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : CuModuleCreateInfoNVX( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + CuModuleCreateInfoNVX( ArrayProxyNoTemporaries const & data_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), dataSize( data_.size() * sizeof( T ) ), pData( data_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CuModuleCreateInfoNVX & operator=( CuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CuModuleCreateInfoNVX & operator=( VkCuModuleCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setDataSize( size_t dataSize_ ) & VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX && setDataSize( size_t dataSize_ ) && VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX & setPData( void const * pData_ ) & VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuModuleCreateInfoNVX && setPData( void const * pData_ ) && VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + CuModuleCreateInfoNVX & setData( ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = data_.size() * sizeof( T ); + pData = data_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCuModuleCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCuModuleCreateInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCuModuleCreateInfoNVX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCuModuleCreateInfoNVX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dataSize, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CuModuleCreateInfoNVX const & ) const = default; +#else + bool operator==( CuModuleCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( CuModuleCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCuModuleCreateInfoNVX; + void const * pNext = {}; + size_t dataSize = {}; + void const * pData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CuModuleCreateInfoNVX; + }; +#endif + + template <> + struct CppType + { + using Type = CuModuleCreateInfoNVX; + }; + + // wrapper struct for struct VkCuModuleTexturingModeCreateInfoNVX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkCuModuleTexturingModeCreateInfoNVX.html + struct CuModuleTexturingModeCreateInfoNVX + { + using NativeType = VkCuModuleTexturingModeCreateInfoNVX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCuModuleTexturingModeCreateInfoNVX; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CuModuleTexturingModeCreateInfoNVX( Bool32 use64bitTexturing_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , use64bitTexturing{ use64bitTexturing_ } + { + } + + VULKAN_HPP_CONSTEXPR CuModuleTexturingModeCreateInfoNVX( CuModuleTexturingModeCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CuModuleTexturingModeCreateInfoNVX( VkCuModuleTexturingModeCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : CuModuleTexturingModeCreateInfoNVX( *reinterpret_cast( &rhs ) ) + { + } + + CuModuleTexturingModeCreateInfoNVX & operator=( CuModuleTexturingModeCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CuModuleTexturingModeCreateInfoNVX & operator=( VkCuModuleTexturingModeCreateInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CuModuleTexturingModeCreateInfoNVX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuModuleTexturingModeCreateInfoNVX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CuModuleTexturingModeCreateInfoNVX & setUse64bitTexturing( Bool32 use64bitTexturing_ ) & VULKAN_HPP_NOEXCEPT + { + use64bitTexturing = use64bitTexturing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CuModuleTexturingModeCreateInfoNVX && setUse64bitTexturing( Bool32 use64bitTexturing_ ) && VULKAN_HPP_NOEXCEPT + { + use64bitTexturing = use64bitTexturing_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCuModuleTexturingModeCreateInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCuModuleTexturingModeCreateInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCuModuleTexturingModeCreateInfoNVX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCuModuleTexturingModeCreateInfoNVX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, use64bitTexturing ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CuModuleTexturingModeCreateInfoNVX const & ) const = default; +#else + bool operator==( CuModuleTexturingModeCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( use64bitTexturing == rhs.use64bitTexturing ); +# endif + } + + bool operator!=( CuModuleTexturingModeCreateInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCuModuleTexturingModeCreateInfoNVX; + void const * pNext = {}; + Bool32 use64bitTexturing = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CuModuleTexturingModeCreateInfoNVX; + }; +#endif + + template <> + struct CppType + { + using Type = CuModuleTexturingModeCreateInfoNVX; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkCudaFunctionCreateInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaFunctionCreateInfoNV.html + struct CudaFunctionCreateInfoNV + { + using NativeType = VkCudaFunctionCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCudaFunctionCreateInfoNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CudaFunctionCreateInfoNV( CudaModuleNV module_ = {}, char const * pName_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , module{ module_ } + , pName{ pName_ } + { + } + + VULKAN_HPP_CONSTEXPR CudaFunctionCreateInfoNV( CudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CudaFunctionCreateInfoNV( VkCudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CudaFunctionCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + CudaFunctionCreateInfoNV & operator=( CudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CudaFunctionCreateInfoNV & operator=( VkCudaFunctionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setModule( CudaModuleNV module_ ) & VULKAN_HPP_NOEXCEPT + { + module = module_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV && setModule( CudaModuleNV module_ ) && VULKAN_HPP_NOEXCEPT + { + module = module_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV & setPName( char const * pName_ ) & VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaFunctionCreateInfoNV && setPName( char const * pName_ ) && VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCudaFunctionCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCudaFunctionCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCudaFunctionCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCudaFunctionCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, module, pName ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = module <=> rhs.module; cmp != 0 ) + return cmp; + if ( pName != rhs.pName ) + if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( module == rhs.module ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ); + } + + bool operator!=( CudaFunctionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eCudaFunctionCreateInfoNV; + void const * pNext = {}; + CudaModuleNV module = {}; + char const * pName = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CudaFunctionCreateInfoNV; + }; +# endif + + template <> + struct CppType + { + using Type = CudaFunctionCreateInfoNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkCudaLaunchInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaLaunchInfoNV.html + struct CudaLaunchInfoNV + { + using NativeType = VkCudaLaunchInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCudaLaunchInfoNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CudaLaunchInfoNV( CudaFunctionNV function_ = {}, + uint32_t gridDimX_ = {}, + uint32_t gridDimY_ = {}, + uint32_t gridDimZ_ = {}, + uint32_t blockDimX_ = {}, + uint32_t blockDimY_ = {}, + uint32_t blockDimZ_ = {}, + uint32_t sharedMemBytes_ = {}, + size_t paramCount_ = {}, + void const * const * pParams_ = {}, + size_t extraCount_ = {}, + void const * const * pExtras_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , function{ function_ } + , gridDimX{ gridDimX_ } + , gridDimY{ gridDimY_ } + , gridDimZ{ gridDimZ_ } + , blockDimX{ blockDimX_ } + , blockDimY{ blockDimY_ } + , blockDimZ{ blockDimZ_ } + , sharedMemBytes{ sharedMemBytes_ } + , paramCount{ paramCount_ } + , pParams{ pParams_ } + , extraCount{ extraCount_ } + , pExtras{ pExtras_ } + { + } + + VULKAN_HPP_CONSTEXPR CudaLaunchInfoNV( CudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CudaLaunchInfoNV( VkCudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT : CudaLaunchInfoNV( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CudaLaunchInfoNV( CudaFunctionNV function_, + uint32_t gridDimX_, + uint32_t gridDimY_, + uint32_t gridDimZ_, + uint32_t blockDimX_, + uint32_t blockDimY_, + uint32_t blockDimZ_, + uint32_t sharedMemBytes_, + ArrayProxyNoTemporaries const & params_, + ArrayProxyNoTemporaries const & extras_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , function( function_ ) + , gridDimX( gridDimX_ ) + , gridDimY( gridDimY_ ) + , gridDimZ( gridDimZ_ ) + , blockDimX( blockDimX_ ) + , blockDimY( blockDimY_ ) + , blockDimZ( blockDimZ_ ) + , sharedMemBytes( sharedMemBytes_ ) + , paramCount( params_.size() ) + , pParams( params_.data() ) + , extraCount( extras_.size() ) + , pExtras( extras_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CudaLaunchInfoNV & operator=( CudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CudaLaunchInfoNV & operator=( VkCudaLaunchInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setFunction( CudaFunctionNV function_ ) & VULKAN_HPP_NOEXCEPT + { + function = function_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setFunction( CudaFunctionNV function_ ) && VULKAN_HPP_NOEXCEPT + { + function = function_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimX( uint32_t gridDimX_ ) & VULKAN_HPP_NOEXCEPT + { + gridDimX = gridDimX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setGridDimX( uint32_t gridDimX_ ) && VULKAN_HPP_NOEXCEPT + { + gridDimX = gridDimX_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimY( uint32_t gridDimY_ ) & VULKAN_HPP_NOEXCEPT + { + gridDimY = gridDimY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setGridDimY( uint32_t gridDimY_ ) && VULKAN_HPP_NOEXCEPT + { + gridDimY = gridDimY_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setGridDimZ( uint32_t gridDimZ_ ) & VULKAN_HPP_NOEXCEPT + { + gridDimZ = gridDimZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setGridDimZ( uint32_t gridDimZ_ ) && VULKAN_HPP_NOEXCEPT + { + gridDimZ = gridDimZ_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimX( uint32_t blockDimX_ ) & VULKAN_HPP_NOEXCEPT + { + blockDimX = blockDimX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setBlockDimX( uint32_t blockDimX_ ) && VULKAN_HPP_NOEXCEPT + { + blockDimX = blockDimX_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimY( uint32_t blockDimY_ ) & VULKAN_HPP_NOEXCEPT + { + blockDimY = blockDimY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setBlockDimY( uint32_t blockDimY_ ) && VULKAN_HPP_NOEXCEPT + { + blockDimY = blockDimY_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setBlockDimZ( uint32_t blockDimZ_ ) & VULKAN_HPP_NOEXCEPT + { + blockDimZ = blockDimZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setBlockDimZ( uint32_t blockDimZ_ ) && VULKAN_HPP_NOEXCEPT + { + blockDimZ = blockDimZ_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setSharedMemBytes( uint32_t sharedMemBytes_ ) & VULKAN_HPP_NOEXCEPT + { + sharedMemBytes = sharedMemBytes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setSharedMemBytes( uint32_t sharedMemBytes_ ) && VULKAN_HPP_NOEXCEPT + { + sharedMemBytes = sharedMemBytes_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setParamCount( size_t paramCount_ ) & VULKAN_HPP_NOEXCEPT + { + paramCount = paramCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setParamCount( size_t paramCount_ ) && VULKAN_HPP_NOEXCEPT + { + paramCount = paramCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPParams( void const * const * pParams_ ) & VULKAN_HPP_NOEXCEPT + { + pParams = pParams_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setPParams( void const * const * pParams_ ) && VULKAN_HPP_NOEXCEPT + { + pParams = pParams_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CudaLaunchInfoNV & setParams( ArrayProxyNoTemporaries const & params_ ) VULKAN_HPP_NOEXCEPT + { + paramCount = params_.size(); + pParams = params_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setExtraCount( size_t extraCount_ ) & VULKAN_HPP_NOEXCEPT + { + extraCount = extraCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setExtraCount( size_t extraCount_ ) && VULKAN_HPP_NOEXCEPT + { + extraCount = extraCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV & setPExtras( void const * const * pExtras_ ) & VULKAN_HPP_NOEXCEPT + { + pExtras = pExtras_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaLaunchInfoNV && setPExtras( void const * const * pExtras_ ) && VULKAN_HPP_NOEXCEPT + { + pExtras = pExtras_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CudaLaunchInfoNV & setExtras( ArrayProxyNoTemporaries const & extras_ ) VULKAN_HPP_NOEXCEPT + { + extraCount = extras_.size(); + pExtras = extras_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCudaLaunchInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCudaLaunchInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCudaLaunchInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCudaLaunchInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, function, gridDimX, gridDimY, gridDimZ, blockDimX, blockDimY, blockDimZ, sharedMemBytes, paramCount, pParams, extraCount, pExtras ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CudaLaunchInfoNV const & ) const = default; +# else + bool operator==( CudaLaunchInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( function == rhs.function ) && ( gridDimX == rhs.gridDimX ) && ( gridDimY == rhs.gridDimY ) && + ( gridDimZ == rhs.gridDimZ ) && ( blockDimX == rhs.blockDimX ) && ( blockDimY == rhs.blockDimY ) && ( blockDimZ == rhs.blockDimZ ) && + ( sharedMemBytes == rhs.sharedMemBytes ) && ( paramCount == rhs.paramCount ) && ( pParams == rhs.pParams ) && ( extraCount == rhs.extraCount ) && + ( pExtras == rhs.pExtras ); +# endif + } + + bool operator!=( CudaLaunchInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eCudaLaunchInfoNV; + void const * pNext = {}; + CudaFunctionNV function = {}; + uint32_t gridDimX = {}; + uint32_t gridDimY = {}; + uint32_t gridDimZ = {}; + uint32_t blockDimX = {}; + uint32_t blockDimY = {}; + uint32_t blockDimZ = {}; + uint32_t sharedMemBytes = {}; + size_t paramCount = {}; + void const * const * pParams = {}; + size_t extraCount = {}; + void const * const * pExtras = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CudaLaunchInfoNV; + }; +# endif + + template <> + struct CppType + { + using Type = CudaLaunchInfoNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkCudaModuleCreateInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCudaModuleCreateInfoNV.html + struct CudaModuleCreateInfoNV + { + using NativeType = VkCudaModuleCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCudaModuleCreateInfoNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CudaModuleCreateInfoNV( size_t dataSize_ = {}, void const * pData_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dataSize{ dataSize_ } + , pData{ pData_ } + { + } + + VULKAN_HPP_CONSTEXPR CudaModuleCreateInfoNV( CudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CudaModuleCreateInfoNV( VkCudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : CudaModuleCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + CudaModuleCreateInfoNV( ArrayProxyNoTemporaries const & data_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), dataSize( data_.size() * sizeof( T ) ), pData( data_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CudaModuleCreateInfoNV & operator=( CudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CudaModuleCreateInfoNV & operator=( VkCudaModuleCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setDataSize( size_t dataSize_ ) & VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV && setDataSize( size_t dataSize_ ) && VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV & setPData( void const * pData_ ) & VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CudaModuleCreateInfoNV && setPData( void const * pData_ ) && VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + CudaModuleCreateInfoNV & setData( ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = data_.size() * sizeof( T ); + pData = data_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCudaModuleCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCudaModuleCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCudaModuleCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCudaModuleCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dataSize, pData ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CudaModuleCreateInfoNV const & ) const = default; +# else + bool operator==( CudaModuleCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( CudaModuleCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eCudaModuleCreateInfoNV; + void const * pNext = {}; + size_t dataSize = {}; + void const * pData = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CudaModuleCreateInfoNV; + }; +# endif + + template <> + struct CppType + { + using Type = CudaModuleCreateInfoNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkCustomResolveCreateInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkCustomResolveCreateInfoEXT.html + struct CustomResolveCreateInfoEXT + { + using NativeType = VkCustomResolveCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCustomResolveCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR CustomResolveCreateInfoEXT( Bool32 customResolve_ = {}, + uint32_t colorAttachmentCount_ = {}, + Format const * pColorAttachmentFormats_ = {}, + Format depthAttachmentFormat_ = Format::eUndefined, + Format stencilAttachmentFormat_ = Format::eUndefined, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , customResolve{ customResolve_ } + , colorAttachmentCount{ colorAttachmentCount_ } + , pColorAttachmentFormats{ pColorAttachmentFormats_ } + , depthAttachmentFormat{ depthAttachmentFormat_ } + , stencilAttachmentFormat{ stencilAttachmentFormat_ } + { + } + + VULKAN_HPP_CONSTEXPR CustomResolveCreateInfoEXT( CustomResolveCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + CustomResolveCreateInfoEXT( VkCustomResolveCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : CustomResolveCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CustomResolveCreateInfoEXT( Bool32 customResolve_, + ArrayProxyNoTemporaries const & colorAttachmentFormats_, + Format depthAttachmentFormat_ = Format::eUndefined, + Format stencilAttachmentFormat_ = Format::eUndefined, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , customResolve( customResolve_ ) + , colorAttachmentCount( static_cast( colorAttachmentFormats_.size() ) ) + , pColorAttachmentFormats( colorAttachmentFormats_.data() ) + , depthAttachmentFormat( depthAttachmentFormat_ ) + , stencilAttachmentFormat( stencilAttachmentFormat_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + CustomResolveCreateInfoEXT & operator=( CustomResolveCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + CustomResolveCreateInfoEXT & operator=( VkCustomResolveCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT & setCustomResolve( Bool32 customResolve_ ) & VULKAN_HPP_NOEXCEPT + { + customResolve = customResolve_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT && setCustomResolve( Bool32 customResolve_ ) && VULKAN_HPP_NOEXCEPT + { + customResolve = customResolve_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT && setColorAttachmentCount( uint32_t colorAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT & setPColorAttachmentFormats( Format const * pColorAttachmentFormats_ ) & VULKAN_HPP_NOEXCEPT + { + pColorAttachmentFormats = pColorAttachmentFormats_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT && setPColorAttachmentFormats( Format const * pColorAttachmentFormats_ ) && VULKAN_HPP_NOEXCEPT + { + pColorAttachmentFormats = pColorAttachmentFormats_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + CustomResolveCreateInfoEXT & setColorAttachmentFormats( ArrayProxyNoTemporaries const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachmentFormats_.size() ); + pColorAttachmentFormats = colorAttachmentFormats_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT & setDepthAttachmentFormat( Format depthAttachmentFormat_ ) & VULKAN_HPP_NOEXCEPT + { + depthAttachmentFormat = depthAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT && setDepthAttachmentFormat( Format depthAttachmentFormat_ ) && VULKAN_HPP_NOEXCEPT + { + depthAttachmentFormat = depthAttachmentFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT & setStencilAttachmentFormat( Format stencilAttachmentFormat_ ) & VULKAN_HPP_NOEXCEPT + { + stencilAttachmentFormat = stencilAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 CustomResolveCreateInfoEXT && setStencilAttachmentFormat( Format stencilAttachmentFormat_ ) && VULKAN_HPP_NOEXCEPT + { + stencilAttachmentFormat = stencilAttachmentFormat_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkCustomResolveCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCustomResolveCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkCustomResolveCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkCustomResolveCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, customResolve, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( CustomResolveCreateInfoEXT const & ) const = default; +#else + bool operator==( CustomResolveCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( customResolve == rhs.customResolve ) && + ( colorAttachmentCount == rhs.colorAttachmentCount ) && ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) && + ( depthAttachmentFormat == rhs.depthAttachmentFormat ) && ( stencilAttachmentFormat == rhs.stencilAttachmentFormat ); +# endif + } + + bool operator!=( CustomResolveCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eCustomResolveCreateInfoEXT; + void const * pNext = {}; + Bool32 customResolve = {}; + uint32_t colorAttachmentCount = {}; + Format const * pColorAttachmentFormats = {}; + Format depthAttachmentFormat = Format::eUndefined; + Format stencilAttachmentFormat = Format::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = CustomResolveCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = CustomResolveCreateInfoEXT; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkD3D12FenceSubmitInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkD3D12FenceSubmitInfoKHR.html + struct D3D12FenceSubmitInfoKHR + { + using NativeType = VkD3D12FenceSubmitInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eD3D12FenceSubmitInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = {}, + uint64_t const * pWaitSemaphoreValues_ = {}, + uint32_t signalSemaphoreValuesCount_ = {}, + uint64_t const * pSignalSemaphoreValues_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , waitSemaphoreValuesCount{ waitSemaphoreValuesCount_ } + , pWaitSemaphoreValues{ pWaitSemaphoreValues_ } + , signalSemaphoreValuesCount{ signalSemaphoreValuesCount_ } + , pSignalSemaphoreValues{ pSignalSemaphoreValues_ } + { + } + + VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : D3D12FenceSubmitInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + D3D12FenceSubmitInfoKHR( ArrayProxyNoTemporaries const & waitSemaphoreValues_, + ArrayProxyNoTemporaries const & signalSemaphoreValues_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , waitSemaphoreValuesCount( static_cast( waitSemaphoreValues_.size() ) ) + , pWaitSemaphoreValues( waitSemaphoreValues_.data() ) + , signalSemaphoreValuesCount( static_cast( signalSemaphoreValues_.size() ) ) + , pSignalSemaphoreValues( signalSemaphoreValues_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + D3D12FenceSubmitInfoKHR & operator=( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + D3D12FenceSubmitInfoKHR & operator=( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ ) & VULKAN_HPP_NOEXCEPT + { + waitSemaphoreValuesCount = waitSemaphoreValuesCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR && setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ ) && VULKAN_HPP_NOEXCEPT + { + waitSemaphoreValuesCount = waitSemaphoreValuesCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPWaitSemaphoreValues( uint64_t const * pWaitSemaphoreValues_ ) & VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreValues = pWaitSemaphoreValues_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR && setPWaitSemaphoreValues( uint64_t const * pWaitSemaphoreValues_ ) && VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreValues = pWaitSemaphoreValues_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + D3D12FenceSubmitInfoKHR & setWaitSemaphoreValues( ArrayProxyNoTemporaries const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreValuesCount = static_cast( waitSemaphoreValues_.size() ); + pWaitSemaphoreValues = waitSemaphoreValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ ) & VULKAN_HPP_NOEXCEPT + { + signalSemaphoreValuesCount = signalSemaphoreValuesCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR && setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ ) && VULKAN_HPP_NOEXCEPT + { + signalSemaphoreValuesCount = signalSemaphoreValuesCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & setPSignalSemaphoreValues( uint64_t const * pSignalSemaphoreValues_ ) & VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreValues = pSignalSemaphoreValues_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR && setPSignalSemaphoreValues( uint64_t const * pSignalSemaphoreValues_ ) && VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreValues = pSignalSemaphoreValues_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + D3D12FenceSubmitInfoKHR & setSignalSemaphoreValues( ArrayProxyNoTemporaries const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreValuesCount = static_cast( signalSemaphoreValues_.size() ); + pSignalSemaphoreValues = signalSemaphoreValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkD3D12FenceSubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkD3D12FenceSubmitInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkD3D12FenceSubmitInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkD3D12FenceSubmitInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, waitSemaphoreValuesCount, pWaitSemaphoreValues, signalSemaphoreValuesCount, pSignalSemaphoreValues ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( D3D12FenceSubmitInfoKHR const & ) const = default; +# else + bool operator==( D3D12FenceSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount ) && + ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount ) && + ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues ); +# endif + } + + bool operator!=( D3D12FenceSubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eD3D12FenceSubmitInfoKHR; + void const * pNext = {}; + uint32_t waitSemaphoreValuesCount = {}; + uint64_t const * pWaitSemaphoreValues = {}; + uint32_t signalSemaphoreValuesCount = {}; + uint64_t const * pSignalSemaphoreValues = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = D3D12FenceSubmitInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = D3D12FenceSubmitInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + // wrapper struct for struct VkPhysicalDeviceDataGraphOperationSupportARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphOperationSupportARM.html + struct PhysicalDeviceDataGraphOperationSupportARM + { + using NativeType = VkPhysicalDeviceDataGraphOperationSupportARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphOperationSupportARM( + PhysicalDeviceDataGraphOperationTypeARM operationType_ = PhysicalDeviceDataGraphOperationTypeARM::eSpirvExtendedInstructionSet, + std::array const & name_ = {}, + uint32_t version_ = {} ) VULKAN_HPP_NOEXCEPT + : operationType{ operationType_ } + , name{ name_ } + , version{ version_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphOperationSupportARM( PhysicalDeviceDataGraphOperationSupportARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDataGraphOperationSupportARM( VkPhysicalDeviceDataGraphOperationSupportARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDataGraphOperationSupportARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceDataGraphOperationSupportARM( PhysicalDeviceDataGraphOperationTypeARM operationType_, std::string const & name_, uint32_t version_ = {} ) + : operationType( operationType_ ), version( version_ ) + { + VULKAN_HPP_ASSERT( name_.size() < VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM ); +# if defined( _WIN32 ) + strncpy_s( name, VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM, name_.data(), name_.size() ); +# else + strncpy( name, name_.data(), std::min( VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM, name_.size() ) ); +# endif + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PhysicalDeviceDataGraphOperationSupportARM & operator=( PhysicalDeviceDataGraphOperationSupportARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDataGraphOperationSupportARM & operator=( VkPhysicalDeviceDataGraphOperationSupportARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphOperationSupportARM & setOperationType( PhysicalDeviceDataGraphOperationTypeARM operationType_ ) & + VULKAN_HPP_NOEXCEPT + { + operationType = operationType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphOperationSupportARM && setOperationType( PhysicalDeviceDataGraphOperationTypeARM operationType_ ) && + VULKAN_HPP_NOEXCEPT + { + operationType = operationType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphOperationSupportARM & + setName( std::array name_ ) & + VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphOperationSupportARM && + setName( std::array name_ ) && + VULKAN_HPP_NOEXCEPT + { + name = name_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceDataGraphOperationSupportARM & setName( std::string const & name_ ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( name_.size() < VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM ); +# if defined( _WIN32 ) + strncpy_s( name, VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM, name_.data(), name_.size() ); +# else + strncpy( name, name_.data(), std::min( VK_MAX_PHYSICAL_DEVICE_DATA_GRAPH_OPERATION_SET_NAME_SIZE_ARM, name_.size() ) ); +# endif + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphOperationSupportARM & setVersion( uint32_t version_ ) & VULKAN_HPP_NOEXCEPT + { + version = version_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphOperationSupportARM && setVersion( uint32_t version_ ) && VULKAN_HPP_NOEXCEPT + { + version = version_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDataGraphOperationSupportARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphOperationSupportARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphOperationSupportARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphOperationSupportARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( operationType, name, version ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PhysicalDeviceDataGraphOperationSupportARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = operationType <=> rhs.operationType; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = version <=> rhs.version; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PhysicalDeviceDataGraphOperationSupportARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( operationType == rhs.operationType ) && ( strcmp( name, rhs.name ) == 0 ) && ( version == rhs.version ); + } + + bool operator!=( PhysicalDeviceDataGraphOperationSupportARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + PhysicalDeviceDataGraphOperationTypeARM operationType = PhysicalDeviceDataGraphOperationTypeARM::eSpirvExtendedInstructionSet; + ArrayWrapper1D name = {}; + uint32_t version = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDataGraphOperationSupportARM; + }; +#endif + + // wrapper struct for struct VkDataGraphPipelineBuiltinModelCreateInfoQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineBuiltinModelCreateInfoQCOM.html + struct DataGraphPipelineBuiltinModelCreateInfoQCOM + { + using NativeType = VkDataGraphPipelineBuiltinModelCreateInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineBuiltinModelCreateInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineBuiltinModelCreateInfoQCOM( PhysicalDeviceDataGraphOperationSupportARM const * pOperation_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pOperation{ pOperation_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + DataGraphPipelineBuiltinModelCreateInfoQCOM( DataGraphPipelineBuiltinModelCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineBuiltinModelCreateInfoQCOM( VkDataGraphPipelineBuiltinModelCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineBuiltinModelCreateInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineBuiltinModelCreateInfoQCOM & operator=( DataGraphPipelineBuiltinModelCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineBuiltinModelCreateInfoQCOM & operator=( VkDataGraphPipelineBuiltinModelCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineBuiltinModelCreateInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineBuiltinModelCreateInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineBuiltinModelCreateInfoQCOM & setPOperation( PhysicalDeviceDataGraphOperationSupportARM const * pOperation_ ) & + VULKAN_HPP_NOEXCEPT + { + pOperation = pOperation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineBuiltinModelCreateInfoQCOM && setPOperation( PhysicalDeviceDataGraphOperationSupportARM const * pOperation_ ) && + VULKAN_HPP_NOEXCEPT + { + pOperation = pOperation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineBuiltinModelCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineBuiltinModelCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineBuiltinModelCreateInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineBuiltinModelCreateInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pOperation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineBuiltinModelCreateInfoQCOM const & ) const = default; +#else + bool operator==( DataGraphPipelineBuiltinModelCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pOperation == rhs.pOperation ); +# endif + } + + bool operator!=( DataGraphPipelineBuiltinModelCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineBuiltinModelCreateInfoQCOM; + void const * pNext = {}; + PhysicalDeviceDataGraphOperationSupportARM const * pOperation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineBuiltinModelCreateInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineBuiltinModelCreateInfoQCOM; + }; + + // wrapper struct for struct VkDataGraphPipelineCompilerControlCreateInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineCompilerControlCreateInfoARM.html + struct DataGraphPipelineCompilerControlCreateInfoARM + { + using NativeType = VkDataGraphPipelineCompilerControlCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineCompilerControlCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineCompilerControlCreateInfoARM( char const * pVendorOptions_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pVendorOptions{ pVendorOptions_ } + { + } + + VULKAN_HPP_CONSTEXPR + DataGraphPipelineCompilerControlCreateInfoARM( DataGraphPipelineCompilerControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineCompilerControlCreateInfoARM( VkDataGraphPipelineCompilerControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineCompilerControlCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineCompilerControlCreateInfoARM & operator=( DataGraphPipelineCompilerControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineCompilerControlCreateInfoARM & operator=( VkDataGraphPipelineCompilerControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCompilerControlCreateInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCompilerControlCreateInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCompilerControlCreateInfoARM & setPVendorOptions( char const * pVendorOptions_ ) & VULKAN_HPP_NOEXCEPT + { + pVendorOptions = pVendorOptions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCompilerControlCreateInfoARM && setPVendorOptions( char const * pVendorOptions_ ) && VULKAN_HPP_NOEXCEPT + { + pVendorOptions = pVendorOptions_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineCompilerControlCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineCompilerControlCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineCompilerControlCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineCompilerControlCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pVendorOptions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DataGraphPipelineCompilerControlCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( pVendorOptions != rhs.pVendorOptions ) + if ( auto cmp = strcmp( pVendorOptions, rhs.pVendorOptions ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DataGraphPipelineCompilerControlCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( ( pVendorOptions == rhs.pVendorOptions ) || ( strcmp( pVendorOptions, rhs.pVendorOptions ) == 0 ) ); + } + + bool operator!=( DataGraphPipelineCompilerControlCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDataGraphPipelineCompilerControlCreateInfoARM; + void const * pNext = {}; + char const * pVendorOptions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineCompilerControlCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineCompilerControlCreateInfoARM; + }; + + // wrapper struct for struct VkDataGraphPipelineConstantARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantARM.html + struct DataGraphPipelineConstantARM + { + using NativeType = VkDataGraphPipelineConstantARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineConstantARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineConstantARM( uint32_t id_ = {}, void const * pConstantData_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , id{ id_ } + , pConstantData{ pConstantData_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphPipelineConstantARM( DataGraphPipelineConstantARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineConstantARM( VkDataGraphPipelineConstantARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineConstantARM( *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineConstantARM & operator=( DataGraphPipelineConstantARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineConstantARM & operator=( VkDataGraphPipelineConstantARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantARM & setId( uint32_t id_ ) & VULKAN_HPP_NOEXCEPT + { + id = id_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantARM && setId( uint32_t id_ ) && VULKAN_HPP_NOEXCEPT + { + id = id_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantARM & setPConstantData( void const * pConstantData_ ) & VULKAN_HPP_NOEXCEPT + { + pConstantData = pConstantData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantARM && setPConstantData( void const * pConstantData_ ) && VULKAN_HPP_NOEXCEPT + { + pConstantData = pConstantData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineConstantARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineConstantARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineConstantARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineConstantARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, id, pConstantData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineConstantARM const & ) const = default; +#else + bool operator==( DataGraphPipelineConstantARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( id == rhs.id ) && ( pConstantData == rhs.pConstantData ); +# endif + } + + bool operator!=( DataGraphPipelineConstantARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineConstantARM; + void const * pNext = {}; + uint32_t id = {}; + void const * pConstantData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineConstantARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineConstantARM; + }; + + // wrapper struct for struct VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM.html + struct DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM + { + using NativeType = VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM( uint32_t dimension_ = {}, + uint32_t zeroCount_ = {}, + uint32_t groupSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dimension{ dimension_ } + , zeroCount{ zeroCount_ } + , groupSize{ groupSize_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM( + DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM( VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM const & rhs ) + VULKAN_HPP_NOEXCEPT + : DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM( + *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM & + operator=( DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM & + operator=( VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM & setDimension( uint32_t dimension_ ) & VULKAN_HPP_NOEXCEPT + { + dimension = dimension_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM && setDimension( uint32_t dimension_ ) && VULKAN_HPP_NOEXCEPT + { + dimension = dimension_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM & setZeroCount( uint32_t zeroCount_ ) & VULKAN_HPP_NOEXCEPT + { + zeroCount = zeroCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM && setZeroCount( uint32_t zeroCount_ ) && VULKAN_HPP_NOEXCEPT + { + zeroCount = zeroCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM & setGroupSize( uint32_t groupSize_ ) & VULKAN_HPP_NOEXCEPT + { + groupSize = groupSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM && setGroupSize( uint32_t groupSize_ ) && VULKAN_HPP_NOEXCEPT + { + groupSize = groupSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dimension, zeroCount, groupSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM const & ) const = default; +#else + bool operator==( DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dimension == rhs.dimension ) && ( zeroCount == rhs.zeroCount ) && + ( groupSize == rhs.groupSize ); +# endif + } + + bool operator!=( DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM; + void const * pNext = {}; + uint32_t dimension = {}; + uint32_t zeroCount = {}; + uint32_t groupSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM; + }; + + // wrapper struct for struct VkDataGraphPipelineResourceInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineResourceInfoARM.html + struct DataGraphPipelineResourceInfoARM + { + using NativeType = VkDataGraphPipelineResourceInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineResourceInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineResourceInfoARM( uint32_t descriptorSet_ = {}, + uint32_t binding_ = {}, + uint32_t arrayElement_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorSet{ descriptorSet_ } + , binding{ binding_ } + , arrayElement{ arrayElement_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphPipelineResourceInfoARM( DataGraphPipelineResourceInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineResourceInfoARM( VkDataGraphPipelineResourceInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineResourceInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineResourceInfoARM & operator=( DataGraphPipelineResourceInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineResourceInfoARM & operator=( VkDataGraphPipelineResourceInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineResourceInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineResourceInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineResourceInfoARM & setDescriptorSet( uint32_t descriptorSet_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorSet = descriptorSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineResourceInfoARM && setDescriptorSet( uint32_t descriptorSet_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorSet = descriptorSet_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineResourceInfoARM & setBinding( uint32_t binding_ ) & VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineResourceInfoARM && setBinding( uint32_t binding_ ) && VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineResourceInfoARM & setArrayElement( uint32_t arrayElement_ ) & VULKAN_HPP_NOEXCEPT + { + arrayElement = arrayElement_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineResourceInfoARM && setArrayElement( uint32_t arrayElement_ ) && VULKAN_HPP_NOEXCEPT + { + arrayElement = arrayElement_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineResourceInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineResourceInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineResourceInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineResourceInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorSet, binding, arrayElement ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineResourceInfoARM const & ) const = default; +#else + bool operator==( DataGraphPipelineResourceInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSet == rhs.descriptorSet ) && ( binding == rhs.binding ) && + ( arrayElement == rhs.arrayElement ); +# endif + } + + bool operator!=( DataGraphPipelineResourceInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineResourceInfoARM; + void const * pNext = {}; + uint32_t descriptorSet = {}; + uint32_t binding = {}; + uint32_t arrayElement = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineResourceInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineResourceInfoARM; + }; + + // wrapper struct for struct VkDataGraphPipelineCreateInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineCreateInfoARM.html + struct DataGraphPipelineCreateInfoARM + { + using NativeType = VkDataGraphPipelineCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineCreateInfoARM( PipelineCreateFlags2KHR flags_ = {}, + PipelineLayout layout_ = {}, + uint32_t resourceInfoCount_ = {}, + DataGraphPipelineResourceInfoARM const * pResourceInfos_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , layout{ layout_ } + , resourceInfoCount{ resourceInfoCount_ } + , pResourceInfos{ pResourceInfos_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphPipelineCreateInfoARM( DataGraphPipelineCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineCreateInfoARM( VkDataGraphPipelineCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DataGraphPipelineCreateInfoARM( PipelineCreateFlags2KHR flags_, + PipelineLayout layout_, + ArrayProxyNoTemporaries const & resourceInfos_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , layout( layout_ ) + , resourceInfoCount( static_cast( resourceInfos_.size() ) ) + , pResourceInfos( resourceInfos_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DataGraphPipelineCreateInfoARM & operator=( DataGraphPipelineCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineCreateInfoARM & operator=( VkDataGraphPipelineCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCreateInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCreateInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCreateInfoARM & setFlags( PipelineCreateFlags2KHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCreateInfoARM && setFlags( PipelineCreateFlags2KHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCreateInfoARM & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCreateInfoARM && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCreateInfoARM & setResourceInfoCount( uint32_t resourceInfoCount_ ) & VULKAN_HPP_NOEXCEPT + { + resourceInfoCount = resourceInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCreateInfoARM && setResourceInfoCount( uint32_t resourceInfoCount_ ) && VULKAN_HPP_NOEXCEPT + { + resourceInfoCount = resourceInfoCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCreateInfoARM & setPResourceInfos( DataGraphPipelineResourceInfoARM const * pResourceInfos_ ) & VULKAN_HPP_NOEXCEPT + { + pResourceInfos = pResourceInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineCreateInfoARM && setPResourceInfos( DataGraphPipelineResourceInfoARM const * pResourceInfos_ ) && + VULKAN_HPP_NOEXCEPT + { + pResourceInfos = pResourceInfos_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DataGraphPipelineCreateInfoARM & + setResourceInfos( ArrayProxyNoTemporaries const & resourceInfos_ ) VULKAN_HPP_NOEXCEPT + { + resourceInfoCount = static_cast( resourceInfos_.size() ); + pResourceInfos = resourceInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, layout, resourceInfoCount, pResourceInfos ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineCreateInfoARM const & ) const = default; +#else + bool operator==( DataGraphPipelineCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( layout == rhs.layout ) && + ( resourceInfoCount == rhs.resourceInfoCount ) && ( pResourceInfos == rhs.pResourceInfos ); +# endif + } + + bool operator!=( DataGraphPipelineCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineCreateInfoARM; + void const * pNext = {}; + PipelineCreateFlags2KHR flags = {}; + PipelineLayout layout = {}; + uint32_t resourceInfoCount = {}; + DataGraphPipelineResourceInfoARM const * pResourceInfos = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineCreateInfoARM; + }; + + // wrapper struct for struct VkDataGraphPipelineDispatchInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineDispatchInfoARM.html + struct DataGraphPipelineDispatchInfoARM + { + using NativeType = VkDataGraphPipelineDispatchInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineDispatchInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineDispatchInfoARM( DataGraphPipelineDispatchFlagsARM flags_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphPipelineDispatchInfoARM( DataGraphPipelineDispatchInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineDispatchInfoARM( VkDataGraphPipelineDispatchInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineDispatchInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineDispatchInfoARM & operator=( DataGraphPipelineDispatchInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineDispatchInfoARM & operator=( VkDataGraphPipelineDispatchInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineDispatchInfoARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineDispatchInfoARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineDispatchInfoARM & setFlags( DataGraphPipelineDispatchFlagsARM flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineDispatchInfoARM && setFlags( DataGraphPipelineDispatchFlagsARM flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineDispatchInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineDispatchInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineDispatchInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineDispatchInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineDispatchInfoARM const & ) const = default; +#else + bool operator==( DataGraphPipelineDispatchInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( DataGraphPipelineDispatchInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineDispatchInfoARM; + void * pNext = {}; + DataGraphPipelineDispatchFlagsARM flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineDispatchInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineDispatchInfoARM; + }; + + // wrapper struct for struct VkDataGraphPipelineIdentifierCreateInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineIdentifierCreateInfoARM.html + struct DataGraphPipelineIdentifierCreateInfoARM + { + using NativeType = VkDataGraphPipelineIdentifierCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineIdentifierCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineIdentifierCreateInfoARM( uint32_t identifierSize_ = {}, + uint8_t const * pIdentifier_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , identifierSize{ identifierSize_ } + , pIdentifier{ pIdentifier_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphPipelineIdentifierCreateInfoARM( DataGraphPipelineIdentifierCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineIdentifierCreateInfoARM( VkDataGraphPipelineIdentifierCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineIdentifierCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DataGraphPipelineIdentifierCreateInfoARM( ArrayProxyNoTemporaries const & identifier_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), identifierSize( static_cast( identifier_.size() ) ), pIdentifier( identifier_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DataGraphPipelineIdentifierCreateInfoARM & operator=( DataGraphPipelineIdentifierCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineIdentifierCreateInfoARM & operator=( VkDataGraphPipelineIdentifierCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineIdentifierCreateInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineIdentifierCreateInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineIdentifierCreateInfoARM & setIdentifierSize( uint32_t identifierSize_ ) & VULKAN_HPP_NOEXCEPT + { + identifierSize = identifierSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineIdentifierCreateInfoARM && setIdentifierSize( uint32_t identifierSize_ ) && VULKAN_HPP_NOEXCEPT + { + identifierSize = identifierSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineIdentifierCreateInfoARM & setPIdentifier( uint8_t const * pIdentifier_ ) & VULKAN_HPP_NOEXCEPT + { + pIdentifier = pIdentifier_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineIdentifierCreateInfoARM && setPIdentifier( uint8_t const * pIdentifier_ ) && VULKAN_HPP_NOEXCEPT + { + pIdentifier = pIdentifier_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DataGraphPipelineIdentifierCreateInfoARM & setIdentifier( ArrayProxyNoTemporaries const & identifier_ ) VULKAN_HPP_NOEXCEPT + { + identifierSize = static_cast( identifier_.size() ); + pIdentifier = identifier_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineIdentifierCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineIdentifierCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineIdentifierCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineIdentifierCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, identifierSize, pIdentifier ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineIdentifierCreateInfoARM const & ) const = default; +#else + bool operator==( DataGraphPipelineIdentifierCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( identifierSize == rhs.identifierSize ) && ( pIdentifier == rhs.pIdentifier ); +# endif + } + + bool operator!=( DataGraphPipelineIdentifierCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineIdentifierCreateInfoARM; + void const * pNext = {}; + uint32_t identifierSize = {}; + uint8_t const * pIdentifier = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineIdentifierCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineIdentifierCreateInfoARM; + }; + + // wrapper struct for struct VkDataGraphPipelineInfoARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineInfoARM.html + struct DataGraphPipelineInfoARM + { + using NativeType = VkDataGraphPipelineInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineInfoARM( Pipeline dataGraphPipeline_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dataGraphPipeline{ dataGraphPipeline_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphPipelineInfoARM( DataGraphPipelineInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineInfoARM( VkDataGraphPipelineInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineInfoARM & operator=( DataGraphPipelineInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineInfoARM & operator=( VkDataGraphPipelineInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineInfoARM & setDataGraphPipeline( Pipeline dataGraphPipeline_ ) & VULKAN_HPP_NOEXCEPT + { + dataGraphPipeline = dataGraphPipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineInfoARM && setDataGraphPipeline( Pipeline dataGraphPipeline_ ) && VULKAN_HPP_NOEXCEPT + { + dataGraphPipeline = dataGraphPipeline_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dataGraphPipeline ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineInfoARM const & ) const = default; +#else + bool operator==( DataGraphPipelineInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataGraphPipeline == rhs.dataGraphPipeline ); +# endif + } + + bool operator!=( DataGraphPipelineInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineInfoARM; + void const * pNext = {}; + Pipeline dataGraphPipeline = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineInfoARM; + }; + + // wrapper struct for struct VkDataGraphPipelinePropertyQueryResultARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelinePropertyQueryResultARM.html + struct DataGraphPipelinePropertyQueryResultARM + { + using NativeType = VkDataGraphPipelinePropertyQueryResultARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelinePropertyQueryResultARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelinePropertyQueryResultARM( DataGraphPipelinePropertyARM property_ = DataGraphPipelinePropertyARM::eCreationLog, + Bool32 isText_ = {}, + size_t dataSize_ = {}, + void * pData_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , property{ property_ } + , isText{ isText_ } + , dataSize{ dataSize_ } + , pData{ pData_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphPipelinePropertyQueryResultARM( DataGraphPipelinePropertyQueryResultARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelinePropertyQueryResultARM( VkDataGraphPipelinePropertyQueryResultARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelinePropertyQueryResultARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + DataGraphPipelinePropertyQueryResultARM( DataGraphPipelinePropertyARM property_, + Bool32 isText_, + ArrayProxyNoTemporaries const & data_, + void * pNext_ = nullptr ) + : pNext( pNext_ ), property( property_ ), isText( isText_ ), dataSize( data_.size() * sizeof( T ) ), pData( data_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DataGraphPipelinePropertyQueryResultARM & operator=( DataGraphPipelinePropertyQueryResultARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelinePropertyQueryResultARM & operator=( VkDataGraphPipelinePropertyQueryResultARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelinePropertyQueryResultARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelinePropertyQueryResultARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelinePropertyQueryResultARM & setProperty( DataGraphPipelinePropertyARM property_ ) & VULKAN_HPP_NOEXCEPT + { + property = property_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelinePropertyQueryResultARM && setProperty( DataGraphPipelinePropertyARM property_ ) && VULKAN_HPP_NOEXCEPT + { + property = property_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelinePropertyQueryResultARM & setIsText( Bool32 isText_ ) & VULKAN_HPP_NOEXCEPT + { + isText = isText_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelinePropertyQueryResultARM && setIsText( Bool32 isText_ ) && VULKAN_HPP_NOEXCEPT + { + isText = isText_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelinePropertyQueryResultARM & setDataSize( size_t dataSize_ ) & VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelinePropertyQueryResultARM && setDataSize( size_t dataSize_ ) && VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelinePropertyQueryResultARM & setPData( void * pData_ ) & VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelinePropertyQueryResultARM && setPData( void * pData_ ) && VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + DataGraphPipelinePropertyQueryResultARM & setData( ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = data_.size() * sizeof( T ); + pData = data_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelinePropertyQueryResultARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelinePropertyQueryResultARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelinePropertyQueryResultARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelinePropertyQueryResultARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, property, isText, dataSize, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelinePropertyQueryResultARM const & ) const = default; +#else + bool operator==( DataGraphPipelinePropertyQueryResultARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( property == rhs.property ) && ( isText == rhs.isText ) && ( dataSize == rhs.dataSize ) && + ( pData == rhs.pData ); +# endif + } + + bool operator!=( DataGraphPipelinePropertyQueryResultARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelinePropertyQueryResultARM; + void * pNext = {}; + DataGraphPipelinePropertyARM property = DataGraphPipelinePropertyARM::eCreationLog; + Bool32 isText = {}; + size_t dataSize = {}; + void * pData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelinePropertyQueryResultARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelinePropertyQueryResultARM; + }; + + // wrapper struct for struct VkDataGraphPipelineSessionBindPointRequirementARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementARM.html + struct DataGraphPipelineSessionBindPointRequirementARM + { + using NativeType = VkDataGraphPipelineSessionBindPointRequirementARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineSessionBindPointRequirementARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineSessionBindPointRequirementARM( + DataGraphPipelineSessionBindPointARM bindPoint_ = DataGraphPipelineSessionBindPointARM::eTransient, + DataGraphPipelineSessionBindPointTypeARM bindPointType_ = DataGraphPipelineSessionBindPointTypeARM::eMemory, + uint32_t numObjects_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , bindPoint{ bindPoint_ } + , bindPointType{ bindPointType_ } + , numObjects{ numObjects_ } + { + } + + VULKAN_HPP_CONSTEXPR + DataGraphPipelineSessionBindPointRequirementARM( DataGraphPipelineSessionBindPointRequirementARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineSessionBindPointRequirementARM( VkDataGraphPipelineSessionBindPointRequirementARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineSessionBindPointRequirementARM( *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineSessionBindPointRequirementARM & operator=( DataGraphPipelineSessionBindPointRequirementARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineSessionBindPointRequirementARM & operator=( VkDataGraphPipelineSessionBindPointRequirementARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDataGraphPipelineSessionBindPointRequirementARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionBindPointRequirementARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionBindPointRequirementARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionBindPointRequirementARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, bindPoint, bindPointType, numObjects ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineSessionBindPointRequirementARM const & ) const = default; +#else + bool operator==( DataGraphPipelineSessionBindPointRequirementARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bindPoint == rhs.bindPoint ) && ( bindPointType == rhs.bindPointType ) && + ( numObjects == rhs.numObjects ); +# endif + } + + bool operator!=( DataGraphPipelineSessionBindPointRequirementARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineSessionBindPointRequirementARM; + void * pNext = {}; + DataGraphPipelineSessionBindPointARM bindPoint = DataGraphPipelineSessionBindPointARM::eTransient; + DataGraphPipelineSessionBindPointTypeARM bindPointType = DataGraphPipelineSessionBindPointTypeARM::eMemory; + uint32_t numObjects = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineSessionBindPointRequirementARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineSessionBindPointRequirementARM; + }; + + // wrapper struct for struct VkDataGraphPipelineSessionBindPointRequirementsInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionBindPointRequirementsInfoARM.html + struct DataGraphPipelineSessionBindPointRequirementsInfoARM + { + using NativeType = VkDataGraphPipelineSessionBindPointRequirementsInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineSessionBindPointRequirementsInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineSessionBindPointRequirementsInfoARM( DataGraphPipelineSessionARM session_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , session{ session_ } + { + } + + VULKAN_HPP_CONSTEXPR + DataGraphPipelineSessionBindPointRequirementsInfoARM( DataGraphPipelineSessionBindPointRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineSessionBindPointRequirementsInfoARM( VkDataGraphPipelineSessionBindPointRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineSessionBindPointRequirementsInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineSessionBindPointRequirementsInfoARM & + operator=( DataGraphPipelineSessionBindPointRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineSessionBindPointRequirementsInfoARM & operator=( VkDataGraphPipelineSessionBindPointRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionBindPointRequirementsInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionBindPointRequirementsInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionBindPointRequirementsInfoARM & setSession( DataGraphPipelineSessionARM session_ ) & VULKAN_HPP_NOEXCEPT + { + session = session_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionBindPointRequirementsInfoARM && setSession( DataGraphPipelineSessionARM session_ ) && VULKAN_HPP_NOEXCEPT + { + session = session_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineSessionBindPointRequirementsInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionBindPointRequirementsInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionBindPointRequirementsInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionBindPointRequirementsInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, session ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineSessionBindPointRequirementsInfoARM const & ) const = default; +#else + bool operator==( DataGraphPipelineSessionBindPointRequirementsInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( session == rhs.session ); +# endif + } + + bool operator!=( DataGraphPipelineSessionBindPointRequirementsInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineSessionBindPointRequirementsInfoARM; + void const * pNext = {}; + DataGraphPipelineSessionARM session = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineSessionBindPointRequirementsInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineSessionBindPointRequirementsInfoARM; + }; + + // wrapper struct for struct VkDataGraphPipelineSessionCreateInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionCreateInfoARM.html + struct DataGraphPipelineSessionCreateInfoARM + { + using NativeType = VkDataGraphPipelineSessionCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineSessionCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineSessionCreateInfoARM( DataGraphPipelineSessionCreateFlagsARM flags_ = {}, + Pipeline dataGraphPipeline_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , dataGraphPipeline{ dataGraphPipeline_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphPipelineSessionCreateInfoARM( DataGraphPipelineSessionCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineSessionCreateInfoARM( VkDataGraphPipelineSessionCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineSessionCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineSessionCreateInfoARM & operator=( DataGraphPipelineSessionCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineSessionCreateInfoARM & operator=( VkDataGraphPipelineSessionCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionCreateInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionCreateInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionCreateInfoARM & setFlags( DataGraphPipelineSessionCreateFlagsARM flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionCreateInfoARM && setFlags( DataGraphPipelineSessionCreateFlagsARM flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionCreateInfoARM & setDataGraphPipeline( Pipeline dataGraphPipeline_ ) & VULKAN_HPP_NOEXCEPT + { + dataGraphPipeline = dataGraphPipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionCreateInfoARM && setDataGraphPipeline( Pipeline dataGraphPipeline_ ) && VULKAN_HPP_NOEXCEPT + { + dataGraphPipeline = dataGraphPipeline_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineSessionCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, dataGraphPipeline ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineSessionCreateInfoARM const & ) const = default; +#else + bool operator==( DataGraphPipelineSessionCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dataGraphPipeline == rhs.dataGraphPipeline ); +# endif + } + + bool operator!=( DataGraphPipelineSessionCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineSessionCreateInfoARM; + void const * pNext = {}; + DataGraphPipelineSessionCreateFlagsARM flags = {}; + Pipeline dataGraphPipeline = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineSessionCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineSessionCreateInfoARM; + }; + + // wrapper struct for struct VkDataGraphPipelineSessionMemoryRequirementsInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineSessionMemoryRequirementsInfoARM.html + struct DataGraphPipelineSessionMemoryRequirementsInfoARM + { + using NativeType = VkDataGraphPipelineSessionMemoryRequirementsInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineSessionMemoryRequirementsInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DataGraphPipelineSessionMemoryRequirementsInfoARM( DataGraphPipelineSessionARM session_ = {}, + DataGraphPipelineSessionBindPointARM bindPoint_ = DataGraphPipelineSessionBindPointARM::eTransient, + uint32_t objectIndex_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , session{ session_ } + , bindPoint{ bindPoint_ } + , objectIndex{ objectIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR + DataGraphPipelineSessionMemoryRequirementsInfoARM( DataGraphPipelineSessionMemoryRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineSessionMemoryRequirementsInfoARM( VkDataGraphPipelineSessionMemoryRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineSessionMemoryRequirementsInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + DataGraphPipelineSessionMemoryRequirementsInfoARM & + operator=( DataGraphPipelineSessionMemoryRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineSessionMemoryRequirementsInfoARM & operator=( VkDataGraphPipelineSessionMemoryRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionMemoryRequirementsInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionMemoryRequirementsInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionMemoryRequirementsInfoARM & setSession( DataGraphPipelineSessionARM session_ ) & VULKAN_HPP_NOEXCEPT + { + session = session_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionMemoryRequirementsInfoARM && setSession( DataGraphPipelineSessionARM session_ ) && VULKAN_HPP_NOEXCEPT + { + session = session_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionMemoryRequirementsInfoARM & setBindPoint( DataGraphPipelineSessionBindPointARM bindPoint_ ) & + VULKAN_HPP_NOEXCEPT + { + bindPoint = bindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionMemoryRequirementsInfoARM && setBindPoint( DataGraphPipelineSessionBindPointARM bindPoint_ ) && + VULKAN_HPP_NOEXCEPT + { + bindPoint = bindPoint_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionMemoryRequirementsInfoARM & setObjectIndex( uint32_t objectIndex_ ) & VULKAN_HPP_NOEXCEPT + { + objectIndex = objectIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineSessionMemoryRequirementsInfoARM && setObjectIndex( uint32_t objectIndex_ ) && VULKAN_HPP_NOEXCEPT + { + objectIndex = objectIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineSessionMemoryRequirementsInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionMemoryRequirementsInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionMemoryRequirementsInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineSessionMemoryRequirementsInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, session, bindPoint, objectIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphPipelineSessionMemoryRequirementsInfoARM const & ) const = default; +#else + bool operator==( DataGraphPipelineSessionMemoryRequirementsInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( session == rhs.session ) && ( bindPoint == rhs.bindPoint ) && + ( objectIndex == rhs.objectIndex ); +# endif + } + + bool operator!=( DataGraphPipelineSessionMemoryRequirementsInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphPipelineSessionMemoryRequirementsInfoARM; + void const * pNext = {}; + DataGraphPipelineSessionARM session = {}; + DataGraphPipelineSessionBindPointARM bindPoint = DataGraphPipelineSessionBindPointARM::eTransient; + uint32_t objectIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineSessionMemoryRequirementsInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineSessionMemoryRequirementsInfoARM; + }; + + // wrapper struct for struct VkDataGraphPipelineShaderModuleCreateInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphPipelineShaderModuleCreateInfoARM.html + struct DataGraphPipelineShaderModuleCreateInfoARM + { + using NativeType = VkDataGraphPipelineShaderModuleCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphPipelineShaderModuleCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphPipelineShaderModuleCreateInfoARM( ShaderModule module_ = {}, + char const * pName_ = {}, + SpecializationInfo const * pSpecializationInfo_ = {}, + uint32_t constantCount_ = {}, + DataGraphPipelineConstantARM const * pConstants_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , module{ module_ } + , pName{ pName_ } + , pSpecializationInfo{ pSpecializationInfo_ } + , constantCount{ constantCount_ } + , pConstants{ pConstants_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphPipelineShaderModuleCreateInfoARM( DataGraphPipelineShaderModuleCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphPipelineShaderModuleCreateInfoARM( VkDataGraphPipelineShaderModuleCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphPipelineShaderModuleCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DataGraphPipelineShaderModuleCreateInfoARM( ShaderModule module_, + char const * pName_, + SpecializationInfo const * pSpecializationInfo_, + ArrayProxyNoTemporaries const & constants_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , module( module_ ) + , pName( pName_ ) + , pSpecializationInfo( pSpecializationInfo_ ) + , constantCount( static_cast( constants_.size() ) ) + , pConstants( constants_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DataGraphPipelineShaderModuleCreateInfoARM & operator=( DataGraphPipelineShaderModuleCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphPipelineShaderModuleCreateInfoARM & operator=( VkDataGraphPipelineShaderModuleCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM & setModule( ShaderModule module_ ) & VULKAN_HPP_NOEXCEPT + { + module = module_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM && setModule( ShaderModule module_ ) && VULKAN_HPP_NOEXCEPT + { + module = module_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM & setPName( char const * pName_ ) & VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM && setPName( char const * pName_ ) && VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM & setPSpecializationInfo( SpecializationInfo const * pSpecializationInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pSpecializationInfo = pSpecializationInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM && setPSpecializationInfo( SpecializationInfo const * pSpecializationInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pSpecializationInfo = pSpecializationInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM & setConstantCount( uint32_t constantCount_ ) & VULKAN_HPP_NOEXCEPT + { + constantCount = constantCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM && setConstantCount( uint32_t constantCount_ ) && VULKAN_HPP_NOEXCEPT + { + constantCount = constantCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM & setPConstants( DataGraphPipelineConstantARM const * pConstants_ ) & VULKAN_HPP_NOEXCEPT + { + pConstants = pConstants_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphPipelineShaderModuleCreateInfoARM && setPConstants( DataGraphPipelineConstantARM const * pConstants_ ) && + VULKAN_HPP_NOEXCEPT + { + pConstants = pConstants_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DataGraphPipelineShaderModuleCreateInfoARM & + setConstants( ArrayProxyNoTemporaries const & constants_ ) VULKAN_HPP_NOEXCEPT + { + constantCount = static_cast( constants_.size() ); + pConstants = constants_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphPipelineShaderModuleCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineShaderModuleCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphPipelineShaderModuleCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphPipelineShaderModuleCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, module, pName, pSpecializationInfo, constantCount, pConstants ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DataGraphPipelineShaderModuleCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = module <=> rhs.module; cmp != 0 ) + return cmp; + if ( pName != rhs.pName ) + if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = pSpecializationInfo <=> rhs.pSpecializationInfo; cmp != 0 ) + return cmp; + if ( auto cmp = constantCount <=> rhs.constantCount; cmp != 0 ) + return cmp; + if ( auto cmp = pConstants <=> rhs.pConstants; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DataGraphPipelineShaderModuleCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( module == rhs.module ) && + ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && ( pSpecializationInfo == rhs.pSpecializationInfo ) && + ( constantCount == rhs.constantCount ) && ( pConstants == rhs.pConstants ); + } + + bool operator!=( DataGraphPipelineShaderModuleCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDataGraphPipelineShaderModuleCreateInfoARM; + void const * pNext = {}; + ShaderModule module = {}; + char const * pName = {}; + SpecializationInfo const * pSpecializationInfo = {}; + uint32_t constantCount = {}; + DataGraphPipelineConstantARM const * pConstants = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphPipelineShaderModuleCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphPipelineShaderModuleCreateInfoARM; + }; + + // wrapper struct for struct VkPhysicalDeviceDataGraphProcessingEngineARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphProcessingEngineARM.html + struct PhysicalDeviceDataGraphProcessingEngineARM + { + using NativeType = VkPhysicalDeviceDataGraphProcessingEngineARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDataGraphProcessingEngineARM( + PhysicalDeviceDataGraphProcessingEngineTypeARM type_ = PhysicalDeviceDataGraphProcessingEngineTypeARM::eDefault, + Bool32 isForeign_ = {} ) VULKAN_HPP_NOEXCEPT + : type{ type_ } + , isForeign{ isForeign_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDataGraphProcessingEngineARM( PhysicalDeviceDataGraphProcessingEngineARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDataGraphProcessingEngineARM( VkPhysicalDeviceDataGraphProcessingEngineARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDataGraphProcessingEngineARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDataGraphProcessingEngineARM & operator=( PhysicalDeviceDataGraphProcessingEngineARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDataGraphProcessingEngineARM & operator=( VkPhysicalDeviceDataGraphProcessingEngineARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphProcessingEngineARM & setType( PhysicalDeviceDataGraphProcessingEngineTypeARM type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphProcessingEngineARM && setType( PhysicalDeviceDataGraphProcessingEngineTypeARM type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphProcessingEngineARM & setIsForeign( Bool32 isForeign_ ) & VULKAN_HPP_NOEXCEPT + { + isForeign = isForeign_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphProcessingEngineARM && setIsForeign( Bool32 isForeign_ ) && VULKAN_HPP_NOEXCEPT + { + isForeign = isForeign_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDataGraphProcessingEngineARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphProcessingEngineARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphProcessingEngineARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphProcessingEngineARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( type, isForeign ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDataGraphProcessingEngineARM const & ) const = default; +#else + bool operator==( PhysicalDeviceDataGraphProcessingEngineARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( type == rhs.type ) && ( isForeign == rhs.isForeign ); +# endif + } + + bool operator!=( PhysicalDeviceDataGraphProcessingEngineARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + PhysicalDeviceDataGraphProcessingEngineTypeARM type = PhysicalDeviceDataGraphProcessingEngineTypeARM::eDefault; + Bool32 isForeign = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDataGraphProcessingEngineARM; + }; +#endif + + // wrapper struct for struct VkDataGraphProcessingEngineCreateInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDataGraphProcessingEngineCreateInfoARM.html + struct DataGraphProcessingEngineCreateInfoARM + { + using NativeType = VkDataGraphProcessingEngineCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDataGraphProcessingEngineCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DataGraphProcessingEngineCreateInfoARM( uint32_t processingEngineCount_ = {}, + PhysicalDeviceDataGraphProcessingEngineARM * pProcessingEngines_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , processingEngineCount{ processingEngineCount_ } + , pProcessingEngines{ pProcessingEngines_ } + { + } + + VULKAN_HPP_CONSTEXPR DataGraphProcessingEngineCreateInfoARM( DataGraphProcessingEngineCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DataGraphProcessingEngineCreateInfoARM( VkDataGraphProcessingEngineCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DataGraphProcessingEngineCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DataGraphProcessingEngineCreateInfoARM( ArrayProxyNoTemporaries const & processingEngines_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), processingEngineCount( static_cast( processingEngines_.size() ) ), pProcessingEngines( processingEngines_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DataGraphProcessingEngineCreateInfoARM & operator=( DataGraphProcessingEngineCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DataGraphProcessingEngineCreateInfoARM & operator=( VkDataGraphProcessingEngineCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DataGraphProcessingEngineCreateInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphProcessingEngineCreateInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphProcessingEngineCreateInfoARM & setProcessingEngineCount( uint32_t processingEngineCount_ ) & VULKAN_HPP_NOEXCEPT + { + processingEngineCount = processingEngineCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphProcessingEngineCreateInfoARM && setProcessingEngineCount( uint32_t processingEngineCount_ ) && VULKAN_HPP_NOEXCEPT + { + processingEngineCount = processingEngineCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphProcessingEngineCreateInfoARM & setPProcessingEngines( PhysicalDeviceDataGraphProcessingEngineARM * pProcessingEngines_ ) & + VULKAN_HPP_NOEXCEPT + { + pProcessingEngines = pProcessingEngines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DataGraphProcessingEngineCreateInfoARM && + setPProcessingEngines( PhysicalDeviceDataGraphProcessingEngineARM * pProcessingEngines_ ) && + VULKAN_HPP_NOEXCEPT + { + pProcessingEngines = pProcessingEngines_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DataGraphProcessingEngineCreateInfoARM & + setProcessingEngines( ArrayProxyNoTemporaries const & processingEngines_ ) VULKAN_HPP_NOEXCEPT + { + processingEngineCount = static_cast( processingEngines_.size() ); + pProcessingEngines = processingEngines_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDataGraphProcessingEngineCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphProcessingEngineCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDataGraphProcessingEngineCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDataGraphProcessingEngineCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, processingEngineCount, pProcessingEngines ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DataGraphProcessingEngineCreateInfoARM const & ) const = default; +#else + bool operator==( DataGraphProcessingEngineCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( processingEngineCount == rhs.processingEngineCount ) && + ( pProcessingEngines == rhs.pProcessingEngines ); +# endif + } + + bool operator!=( DataGraphProcessingEngineCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDataGraphProcessingEngineCreateInfoARM; + void const * pNext = {}; + uint32_t processingEngineCount = {}; + PhysicalDeviceDataGraphProcessingEngineARM * pProcessingEngines = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DataGraphProcessingEngineCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DataGraphProcessingEngineCreateInfoARM; + }; + + // wrapper struct for struct VkDebugMarkerMarkerInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugMarkerMarkerInfoEXT.html + struct DebugMarkerMarkerInfoEXT + { + using NativeType = VkDebugMarkerMarkerInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugMarkerMarkerInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + DebugMarkerMarkerInfoEXT( char const * pMarkerName_ = {}, std::array const & color_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pMarkerName{ pMarkerName_ } + , color{ color_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugMarkerMarkerInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + DebugMarkerMarkerInfoEXT & operator=( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DebugMarkerMarkerInfoEXT & operator=( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setPMarkerName( char const * pMarkerName_ ) & VULKAN_HPP_NOEXCEPT + { + pMarkerName = pMarkerName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT && setPMarkerName( char const * pMarkerName_ ) && VULKAN_HPP_NOEXCEPT + { + pMarkerName = pMarkerName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & setColor( std::array color_ ) & VULKAN_HPP_NOEXCEPT + { + color = color_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT && setColor( std::array color_ ) && VULKAN_HPP_NOEXCEPT + { + color = color_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDebugMarkerMarkerInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugMarkerMarkerInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugMarkerMarkerInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDebugMarkerMarkerInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pMarkerName, color ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::partial_ordering operator<=>( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( pMarkerName != rhs.pMarkerName ) + if ( auto cmp = strcmp( pMarkerName, rhs.pMarkerName ); cmp != 0 ) + return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater; + if ( auto cmp = color <=> rhs.color; cmp != 0 ) + return cmp; + + return std::partial_ordering::equivalent; + } +#endif + + bool operator==( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ( pMarkerName == rhs.pMarkerName ) || ( strcmp( pMarkerName, rhs.pMarkerName ) == 0 ) ) && + ( color == rhs.color ); + } + + bool operator!=( DebugMarkerMarkerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDebugMarkerMarkerInfoEXT; + void const * pNext = {}; + char const * pMarkerName = {}; + ArrayWrapper1D color = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DebugMarkerMarkerInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DebugMarkerMarkerInfoEXT; + }; + + // wrapper struct for struct VkDebugMarkerObjectNameInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugMarkerObjectNameInfoEXT.html + struct DebugMarkerObjectNameInfoEXT + { + using NativeType = VkDebugMarkerObjectNameInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugMarkerObjectNameInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, + uint64_t object_ = {}, + char const * pObjectName_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , objectType{ objectType_ } + , object{ object_ } + , pObjectName{ pObjectName_ } + { + } + + VULKAN_HPP_CONSTEXPR DebugMarkerObjectNameInfoEXT( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugMarkerObjectNameInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + DebugMarkerObjectNameInfoEXT & operator=( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DebugMarkerObjectNameInfoEXT & operator=( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setObjectType( DebugReportObjectTypeEXT objectType_ ) & VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT && setObjectType( DebugReportObjectTypeEXT objectType_ ) && VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setObject( uint64_t object_ ) & VULKAN_HPP_NOEXCEPT + { + object = object_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT && setObject( uint64_t object_ ) && VULKAN_HPP_NOEXCEPT + { + object = object_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & setPObjectName( char const * pObjectName_ ) & VULKAN_HPP_NOEXCEPT + { + pObjectName = pObjectName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT && setPObjectName( char const * pObjectName_ ) && VULKAN_HPP_NOEXCEPT + { + pObjectName = pObjectName_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDebugMarkerObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugMarkerObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugMarkerObjectNameInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDebugMarkerObjectNameInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, objectType, object, pObjectName ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = objectType <=> rhs.objectType; cmp != 0 ) + return cmp; + if ( auto cmp = object <=> rhs.object; cmp != 0 ) + return cmp; + if ( pObjectName != rhs.pObjectName ) + if ( auto cmp = strcmp( pObjectName, rhs.pObjectName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( object == rhs.object ) && + ( ( pObjectName == rhs.pObjectName ) || ( strcmp( pObjectName, rhs.pObjectName ) == 0 ) ); + } + + bool operator!=( DebugMarkerObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDebugMarkerObjectNameInfoEXT; + void const * pNext = {}; + DebugReportObjectTypeEXT objectType = DebugReportObjectTypeEXT::eUnknown; + uint64_t object = {}; + char const * pObjectName = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DebugMarkerObjectNameInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DebugMarkerObjectNameInfoEXT; + }; + + // wrapper struct for struct VkDebugMarkerObjectTagInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugMarkerObjectTagInfoEXT.html + struct DebugMarkerObjectTagInfoEXT + { + using NativeType = VkDebugMarkerObjectTagInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugMarkerObjectTagInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, + uint64_t object_ = {}, + uint64_t tagName_ = {}, + size_t tagSize_ = {}, + void const * pTag_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , objectType{ objectType_ } + , object{ object_ } + , tagName{ tagName_ } + , tagSize{ tagSize_ } + , pTag{ pTag_ } + { + } + + VULKAN_HPP_CONSTEXPR DebugMarkerObjectTagInfoEXT( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugMarkerObjectTagInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + DebugMarkerObjectTagInfoEXT( + DebugReportObjectTypeEXT objectType_, uint64_t object_, uint64_t tagName_, ArrayProxyNoTemporaries const & tag_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), objectType( objectType_ ), object( object_ ), tagName( tagName_ ), tagSize( tag_.size() * sizeof( T ) ), pTag( tag_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DebugMarkerObjectTagInfoEXT & operator=( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DebugMarkerObjectTagInfoEXT & operator=( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setObjectType( DebugReportObjectTypeEXT objectType_ ) & VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT && setObjectType( DebugReportObjectTypeEXT objectType_ ) && VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setObject( uint64_t object_ ) & VULKAN_HPP_NOEXCEPT + { + object = object_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT && setObject( uint64_t object_ ) && VULKAN_HPP_NOEXCEPT + { + object = object_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setTagName( uint64_t tagName_ ) & VULKAN_HPP_NOEXCEPT + { + tagName = tagName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT && setTagName( uint64_t tagName_ ) && VULKAN_HPP_NOEXCEPT + { + tagName = tagName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setTagSize( size_t tagSize_ ) & VULKAN_HPP_NOEXCEPT + { + tagSize = tagSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT && setTagSize( size_t tagSize_ ) && VULKAN_HPP_NOEXCEPT + { + tagSize = tagSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & setPTag( void const * pTag_ ) & VULKAN_HPP_NOEXCEPT + { + pTag = pTag_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT && setPTag( void const * pTag_ ) && VULKAN_HPP_NOEXCEPT + { + pTag = pTag_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + DebugMarkerObjectTagInfoEXT & setTag( ArrayProxyNoTemporaries const & tag_ ) VULKAN_HPP_NOEXCEPT + { + tagSize = tag_.size() * sizeof( T ); + pTag = tag_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDebugMarkerObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugMarkerObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugMarkerObjectTagInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDebugMarkerObjectTagInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, objectType, object, tagName, tagSize, pTag ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DebugMarkerObjectTagInfoEXT const & ) const = default; +#else + bool operator==( DebugMarkerObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( object == rhs.object ) && ( tagName == rhs.tagName ) && + ( tagSize == rhs.tagSize ) && ( pTag == rhs.pTag ); +# endif + } + + bool operator!=( DebugMarkerObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDebugMarkerObjectTagInfoEXT; + void const * pNext = {}; + DebugReportObjectTypeEXT objectType = DebugReportObjectTypeEXT::eUnknown; + uint64_t object = {}; + uint64_t tagName = {}; + size_t tagSize = {}; + void const * pTag = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DebugMarkerObjectTagInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DebugMarkerObjectTagInfoEXT; + }; + + typedef Bool32( VKAPI_PTR * PFN_DebugReportCallbackEXT )( DebugReportFlagsEXT flags, + DebugReportObjectTypeEXT objectType, + uint64_t object, + size_t location, + int32_t messageCode, + char const * pLayerPrefix, + char const * pMessage, + void * pUserData ); + + // wrapper struct for struct VkDebugReportCallbackCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugReportCallbackCreateInfoEXT.html + struct DebugReportCallbackCreateInfoEXT + { + using NativeType = VkDebugReportCallbackCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugReportCallbackCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = {}, + PFN_DebugReportCallbackEXT pfnCallback_ = {}, + void * pUserData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pfnCallback{ pfnCallback_ } + , pUserData{ pUserData_ } + { + } + + VULKAN_HPP_CONSTEXPR DebugReportCallbackCreateInfoEXT( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugReportCallbackCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic push +# if defined( __clang__ ) +# pragma clang diagnostic ignored "-Wunknown-warning-option" +# endif +# pragma GCC diagnostic ignored "-Wcast-function-type" +# endif + VULKAN_HPP_DEPRECATED( "This constructor is deprecated. Use the one taking function pointer types from the vk-namespace instead." ) + + DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_, + PFN_vkDebugReportCallbackEXT pfnCallback_, + void * pUserData_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : DebugReportCallbackCreateInfoEXT( flags_, reinterpret_cast( pfnCallback_ ), pUserData_, pNext_ ) + { + } +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic pop +# endif + + DebugReportCallbackCreateInfoEXT & operator=( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DebugReportCallbackCreateInfoEXT & operator=( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setFlags( DebugReportFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT && setFlags( DebugReportFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPfnCallback( PFN_DebugReportCallbackEXT pfnCallback_ ) & VULKAN_HPP_NOEXCEPT + { + pfnCallback = pfnCallback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT && setPfnCallback( PFN_DebugReportCallbackEXT pfnCallback_ ) && VULKAN_HPP_NOEXCEPT + { + pfnCallback = pfnCallback_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & setPUserData( void * pUserData_ ) & VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT && setPUserData( void * pUserData_ ) && VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return std::move( *this ); + } + +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic push +# if defined( __clang__ ) +# pragma clang diagnostic ignored "-Wunknown-warning-option" +# endif +# pragma GCC diagnostic ignored "-Wcast-function-type" +# endif + VULKAN_HPP_DEPRECATED( "This setter is deprecated. Use the one taking a function pointer type from the vk-namespace instead." ) + + DebugReportCallbackCreateInfoEXT & setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ ) VULKAN_HPP_NOEXCEPT + { + return setPfnCallback( reinterpret_cast( pfnCallback_ ) ); + } +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic pop +# endif +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDebugReportCallbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugReportCallbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugReportCallbackCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDebugReportCallbackCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pfnCallback, pUserData ); + } +#endif + + bool operator==( DebugReportCallbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +#if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +#else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pfnCallback == rhs.pfnCallback ) && ( pUserData == rhs.pUserData ); +#endif + } + + bool operator!=( DebugReportCallbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDebugReportCallbackCreateInfoEXT; + void const * pNext = {}; + DebugReportFlagsEXT flags = {}; + PFN_DebugReportCallbackEXT pfnCallback = {}; + void * pUserData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DebugReportCallbackCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DebugReportCallbackCreateInfoEXT; + }; + + // wrapper struct for struct VkDebugUtilsLabelEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsLabelEXT.html + struct DebugUtilsLabelEXT + { + using NativeType = VkDebugUtilsLabelEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsLabelEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + DebugUtilsLabelEXT( char const * pLabelName_ = {}, std::array const & color_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pLabelName{ pLabelName_ } + , color{ color_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsLabelEXT( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DebugUtilsLabelEXT( *reinterpret_cast( &rhs ) ) {} + + DebugUtilsLabelEXT & operator=( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DebugUtilsLabelEXT & operator=( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setPLabelName( char const * pLabelName_ ) & VULKAN_HPP_NOEXCEPT + { + pLabelName = pLabelName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT && setPLabelName( char const * pLabelName_ ) && VULKAN_HPP_NOEXCEPT + { + pLabelName = pLabelName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & setColor( std::array color_ ) & VULKAN_HPP_NOEXCEPT + { + color = color_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT && setColor( std::array color_ ) && VULKAN_HPP_NOEXCEPT + { + color = color_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDebugUtilsLabelEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugUtilsLabelEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugUtilsLabelEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDebugUtilsLabelEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pLabelName, color ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::partial_ordering operator<=>( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( pLabelName != rhs.pLabelName ) + if ( auto cmp = strcmp( pLabelName, rhs.pLabelName ); cmp != 0 ) + return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater; + if ( auto cmp = color <=> rhs.color; cmp != 0 ) + return cmp; + + return std::partial_ordering::equivalent; + } +#endif + + bool operator==( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ( pLabelName == rhs.pLabelName ) || ( strcmp( pLabelName, rhs.pLabelName ) == 0 ) ) && + ( color == rhs.color ); + } + + bool operator!=( DebugUtilsLabelEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDebugUtilsLabelEXT; + void const * pNext = {}; + char const * pLabelName = {}; + ArrayWrapper1D color = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DebugUtilsLabelEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DebugUtilsLabelEXT; + }; + + // wrapper struct for struct VkDebugUtilsObjectNameInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsObjectNameInfoEXT.html + struct DebugUtilsObjectNameInfoEXT + { + using NativeType = VkDebugUtilsObjectNameInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsObjectNameInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT( ObjectType objectType_ = ObjectType::eUnknown, + uint64_t objectHandle_ = {}, + char const * pObjectName_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , objectType{ objectType_ } + , objectHandle{ objectHandle_ } + , pObjectName{ pObjectName_ } + { + } + + VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsObjectNameInfoEXT( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugUtilsObjectNameInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + DebugUtilsObjectNameInfoEXT & operator=( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DebugUtilsObjectNameInfoEXT & operator=( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setObjectType( ObjectType objectType_ ) & VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT && setObjectType( ObjectType objectType_ ) && VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setObjectHandle( uint64_t objectHandle_ ) & VULKAN_HPP_NOEXCEPT + { + objectHandle = objectHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT && setObjectHandle( uint64_t objectHandle_ ) && VULKAN_HPP_NOEXCEPT + { + objectHandle = objectHandle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & setPObjectName( char const * pObjectName_ ) & VULKAN_HPP_NOEXCEPT + { + pObjectName = pObjectName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT && setPObjectName( char const * pObjectName_ ) && VULKAN_HPP_NOEXCEPT + { + pObjectName = pObjectName_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDebugUtilsObjectNameInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugUtilsObjectNameInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugUtilsObjectNameInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDebugUtilsObjectNameInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, objectType, objectHandle, pObjectName ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = objectType <=> rhs.objectType; cmp != 0 ) + return cmp; + if ( auto cmp = objectHandle <=> rhs.objectHandle; cmp != 0 ) + return cmp; + if ( pObjectName != rhs.pObjectName ) + if ( auto cmp = strcmp( pObjectName, rhs.pObjectName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( objectHandle == rhs.objectHandle ) && + ( ( pObjectName == rhs.pObjectName ) || ( strcmp( pObjectName, rhs.pObjectName ) == 0 ) ); + } + + bool operator!=( DebugUtilsObjectNameInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDebugUtilsObjectNameInfoEXT; + void const * pNext = {}; + ObjectType objectType = ObjectType::eUnknown; + uint64_t objectHandle = {}; + char const * pObjectName = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DebugUtilsObjectNameInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DebugUtilsObjectNameInfoEXT; + }; + + // wrapper struct for struct VkDebugUtilsMessengerCallbackDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCallbackDataEXT.html + struct DebugUtilsMessengerCallbackDataEXT + { + using NativeType = VkDebugUtilsMessengerCallbackDataEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsMessengerCallbackDataEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataFlagsEXT flags_ = {}, + char const * pMessageIdName_ = {}, + int32_t messageIdNumber_ = {}, + char const * pMessage_ = {}, + uint32_t queueLabelCount_ = {}, + DebugUtilsLabelEXT const * pQueueLabels_ = {}, + uint32_t cmdBufLabelCount_ = {}, + DebugUtilsLabelEXT const * pCmdBufLabels_ = {}, + uint32_t objectCount_ = {}, + DebugUtilsObjectNameInfoEXT const * pObjects_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pMessageIdName{ pMessageIdName_ } + , messageIdNumber{ messageIdNumber_ } + , pMessage{ pMessage_ } + , queueLabelCount{ queueLabelCount_ } + , pQueueLabels{ pQueueLabels_ } + , cmdBufLabelCount{ cmdBufLabelCount_ } + , pCmdBufLabels{ pCmdBufLabels_ } + , objectCount{ objectCount_ } + , pObjects{ pObjects_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsMessengerCallbackDataEXT( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugUtilsMessengerCallbackDataEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DebugUtilsMessengerCallbackDataEXT( DebugUtilsMessengerCallbackDataFlagsEXT flags_, + char const * pMessageIdName_, + int32_t messageIdNumber_, + char const * pMessage_, + ArrayProxyNoTemporaries const & queueLabels_, + ArrayProxyNoTemporaries const & cmdBufLabels_ = {}, + ArrayProxyNoTemporaries const & objects_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , pMessageIdName( pMessageIdName_ ) + , messageIdNumber( messageIdNumber_ ) + , pMessage( pMessage_ ) + , queueLabelCount( static_cast( queueLabels_.size() ) ) + , pQueueLabels( queueLabels_.data() ) + , cmdBufLabelCount( static_cast( cmdBufLabels_.size() ) ) + , pCmdBufLabels( cmdBufLabels_.data() ) + , objectCount( static_cast( objects_.size() ) ) + , pObjects( objects_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DebugUtilsMessengerCallbackDataEXT & operator=( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DebugUtilsMessengerCallbackDataEXT & operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setFlags( DebugUtilsMessengerCallbackDataFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setFlags( DebugUtilsMessengerCallbackDataFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPMessageIdName( char const * pMessageIdName_ ) & VULKAN_HPP_NOEXCEPT + { + pMessageIdName = pMessageIdName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setPMessageIdName( char const * pMessageIdName_ ) && VULKAN_HPP_NOEXCEPT + { + pMessageIdName = pMessageIdName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setMessageIdNumber( int32_t messageIdNumber_ ) & VULKAN_HPP_NOEXCEPT + { + messageIdNumber = messageIdNumber_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setMessageIdNumber( int32_t messageIdNumber_ ) && VULKAN_HPP_NOEXCEPT + { + messageIdNumber = messageIdNumber_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPMessage( char const * pMessage_ ) & VULKAN_HPP_NOEXCEPT + { + pMessage = pMessage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setPMessage( char const * pMessage_ ) && VULKAN_HPP_NOEXCEPT + { + pMessage = pMessage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setQueueLabelCount( uint32_t queueLabelCount_ ) & VULKAN_HPP_NOEXCEPT + { + queueLabelCount = queueLabelCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setQueueLabelCount( uint32_t queueLabelCount_ ) && VULKAN_HPP_NOEXCEPT + { + queueLabelCount = queueLabelCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPQueueLabels( DebugUtilsLabelEXT const * pQueueLabels_ ) & VULKAN_HPP_NOEXCEPT + { + pQueueLabels = pQueueLabels_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setPQueueLabels( DebugUtilsLabelEXT const * pQueueLabels_ ) && VULKAN_HPP_NOEXCEPT + { + pQueueLabels = pQueueLabels_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DebugUtilsMessengerCallbackDataEXT & setQueueLabels( ArrayProxyNoTemporaries const & queueLabels_ ) VULKAN_HPP_NOEXCEPT + { + queueLabelCount = static_cast( queueLabels_.size() ); + pQueueLabels = queueLabels_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setCmdBufLabelCount( uint32_t cmdBufLabelCount_ ) & VULKAN_HPP_NOEXCEPT + { + cmdBufLabelCount = cmdBufLabelCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setCmdBufLabelCount( uint32_t cmdBufLabelCount_ ) && VULKAN_HPP_NOEXCEPT + { + cmdBufLabelCount = cmdBufLabelCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPCmdBufLabels( DebugUtilsLabelEXT const * pCmdBufLabels_ ) & VULKAN_HPP_NOEXCEPT + { + pCmdBufLabels = pCmdBufLabels_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setPCmdBufLabels( DebugUtilsLabelEXT const * pCmdBufLabels_ ) && VULKAN_HPP_NOEXCEPT + { + pCmdBufLabels = pCmdBufLabels_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DebugUtilsMessengerCallbackDataEXT & setCmdBufLabels( ArrayProxyNoTemporaries const & cmdBufLabels_ ) VULKAN_HPP_NOEXCEPT + { + cmdBufLabelCount = static_cast( cmdBufLabels_.size() ); + pCmdBufLabels = cmdBufLabels_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setObjectCount( uint32_t objectCount_ ) & VULKAN_HPP_NOEXCEPT + { + objectCount = objectCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setObjectCount( uint32_t objectCount_ ) && VULKAN_HPP_NOEXCEPT + { + objectCount = objectCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & setPObjects( DebugUtilsObjectNameInfoEXT const * pObjects_ ) & VULKAN_HPP_NOEXCEPT + { + pObjects = pObjects_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT && setPObjects( DebugUtilsObjectNameInfoEXT const * pObjects_ ) && VULKAN_HPP_NOEXCEPT + { + pObjects = pObjects_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DebugUtilsMessengerCallbackDataEXT & setObjects( ArrayProxyNoTemporaries const & objects_ ) VULKAN_HPP_NOEXCEPT + { + objectCount = static_cast( objects_.size() ); + pObjects = objects_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDebugUtilsMessengerCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugUtilsMessengerCallbackDataEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugUtilsMessengerCallbackDataEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDebugUtilsMessengerCallbackDataEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, flags, pMessageIdName, messageIdNumber, pMessage, queueLabelCount, pQueueLabels, cmdBufLabelCount, pCmdBufLabels, objectCount, pObjects ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( pMessageIdName != rhs.pMessageIdName ) + if ( auto cmp = strcmp( pMessageIdName, rhs.pMessageIdName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = messageIdNumber <=> rhs.messageIdNumber; cmp != 0 ) + return cmp; + if ( pMessage != rhs.pMessage ) + if ( auto cmp = strcmp( pMessage, rhs.pMessage ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = queueLabelCount <=> rhs.queueLabelCount; cmp != 0 ) + return cmp; + if ( auto cmp = pQueueLabels <=> rhs.pQueueLabels; cmp != 0 ) + return cmp; + if ( auto cmp = cmdBufLabelCount <=> rhs.cmdBufLabelCount; cmp != 0 ) + return cmp; + if ( auto cmp = pCmdBufLabels <=> rhs.pCmdBufLabels; cmp != 0 ) + return cmp; + if ( auto cmp = objectCount <=> rhs.objectCount; cmp != 0 ) + return cmp; + if ( auto cmp = pObjects <=> rhs.pObjects; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( ( pMessageIdName == rhs.pMessageIdName ) || ( strcmp( pMessageIdName, rhs.pMessageIdName ) == 0 ) ) && + ( messageIdNumber == rhs.messageIdNumber ) && ( ( pMessage == rhs.pMessage ) || ( strcmp( pMessage, rhs.pMessage ) == 0 ) ) && + ( queueLabelCount == rhs.queueLabelCount ) && ( pQueueLabels == rhs.pQueueLabels ) && ( cmdBufLabelCount == rhs.cmdBufLabelCount ) && + ( pCmdBufLabels == rhs.pCmdBufLabels ) && ( objectCount == rhs.objectCount ) && ( pObjects == rhs.pObjects ); + } + + bool operator!=( DebugUtilsMessengerCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDebugUtilsMessengerCallbackDataEXT; + void const * pNext = {}; + DebugUtilsMessengerCallbackDataFlagsEXT flags = {}; + char const * pMessageIdName = {}; + int32_t messageIdNumber = {}; + char const * pMessage = {}; + uint32_t queueLabelCount = {}; + DebugUtilsLabelEXT const * pQueueLabels = {}; + uint32_t cmdBufLabelCount = {}; + DebugUtilsLabelEXT const * pCmdBufLabels = {}; + uint32_t objectCount = {}; + DebugUtilsObjectNameInfoEXT const * pObjects = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DebugUtilsMessengerCallbackDataEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DebugUtilsMessengerCallbackDataEXT; + }; + + typedef Bool32( VKAPI_PTR * PFN_DebugUtilsMessengerCallbackEXT )( DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, + DebugUtilsMessageTypeFlagsEXT messageTypes, + DebugUtilsMessengerCallbackDataEXT const * pCallbackData, + void * pUserData ); + + // wrapper struct for struct VkDebugUtilsMessengerCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsMessengerCreateInfoEXT.html + struct DebugUtilsMessengerCreateInfoEXT + { + using NativeType = VkDebugUtilsMessengerCreateInfoEXT; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsMessengerCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateFlagsEXT flags_ = {}, + DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = {}, + DebugUtilsMessageTypeFlagsEXT messageType_ = {}, + PFN_DebugUtilsMessengerCallbackEXT pfnUserCallback_ = {}, + void * pUserData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , messageSeverity{ messageSeverity_ } + , messageType{ messageType_ } + , pfnUserCallback{ pfnUserCallback_ } + , pUserData{ pUserData_ } + { + } + + VULKAN_HPP_CONSTEXPR DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsMessengerCreateInfoEXT( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugUtilsMessengerCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic push +# if defined( __clang__ ) +# pragma clang diagnostic ignored "-Wunknown-warning-option" +# endif +# pragma GCC diagnostic ignored "-Wcast-function-type" +# endif + VULKAN_HPP_DEPRECATED( "This constructor is deprecated. Use the one taking function pointer types from the vk-namespace instead." ) + + DebugUtilsMessengerCreateInfoEXT( DebugUtilsMessengerCreateFlagsEXT flags_, + DebugUtilsMessageSeverityFlagsEXT messageSeverity_, + DebugUtilsMessageTypeFlagsEXT messageType_, + PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_, + void * pUserData_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : DebugUtilsMessengerCreateInfoEXT( + flags_, messageSeverity_, messageType_, reinterpret_cast( pfnUserCallback_ ), pUserData_, pNext_ ) + { + } +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic pop +# endif + + DebugUtilsMessengerCreateInfoEXT & operator=( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DebugUtilsMessengerCreateInfoEXT & operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setFlags( DebugUtilsMessengerCreateFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT && setFlags( DebugUtilsMessengerCreateFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setMessageSeverity( DebugUtilsMessageSeverityFlagsEXT messageSeverity_ ) & VULKAN_HPP_NOEXCEPT + { + messageSeverity = messageSeverity_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT && setMessageSeverity( DebugUtilsMessageSeverityFlagsEXT messageSeverity_ ) && VULKAN_HPP_NOEXCEPT + { + messageSeverity = messageSeverity_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setMessageType( DebugUtilsMessageTypeFlagsEXT messageType_ ) & VULKAN_HPP_NOEXCEPT + { + messageType = messageType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT && setMessageType( DebugUtilsMessageTypeFlagsEXT messageType_ ) && VULKAN_HPP_NOEXCEPT + { + messageType = messageType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPfnUserCallback( PFN_DebugUtilsMessengerCallbackEXT pfnUserCallback_ ) & VULKAN_HPP_NOEXCEPT + { + pfnUserCallback = pfnUserCallback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT && setPfnUserCallback( PFN_DebugUtilsMessengerCallbackEXT pfnUserCallback_ ) && VULKAN_HPP_NOEXCEPT + { + pfnUserCallback = pfnUserCallback_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & setPUserData( void * pUserData_ ) & VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT && setPUserData( void * pUserData_ ) && VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return std::move( *this ); + } + +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic push +# if defined( __clang__ ) +# pragma clang diagnostic ignored "-Wunknown-warning-option" +# endif +# pragma GCC diagnostic ignored "-Wcast-function-type" +# endif + VULKAN_HPP_DEPRECATED( "This setter is deprecated. Use the one taking a function pointer type from the vk-namespace instead." ) + + DebugUtilsMessengerCreateInfoEXT & setPfnUserCallback( PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT + { + return setPfnUserCallback( reinterpret_cast( pfnUserCallback_ ) ); + } +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic pop +# endif +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDebugUtilsMessengerCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugUtilsMessengerCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugUtilsMessengerCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDebugUtilsMessengerCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, messageSeverity, messageType, pfnUserCallback, pUserData ); + } +#endif + + bool operator==( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +#if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +#else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( messageSeverity == rhs.messageSeverity ) && + ( messageType == rhs.messageType ) && ( pfnUserCallback == rhs.pfnUserCallback ) && ( pUserData == rhs.pUserData ); +#endif + } + + bool operator!=( DebugUtilsMessengerCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDebugUtilsMessengerCreateInfoEXT; + void const * pNext = {}; + DebugUtilsMessengerCreateFlagsEXT flags = {}; + DebugUtilsMessageSeverityFlagsEXT messageSeverity = {}; + DebugUtilsMessageTypeFlagsEXT messageType = {}; + PFN_DebugUtilsMessengerCallbackEXT pfnUserCallback = {}; + void * pUserData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DebugUtilsMessengerCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DebugUtilsMessengerCreateInfoEXT; + }; + + // wrapper struct for struct VkDebugUtilsObjectTagInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDebugUtilsObjectTagInfoEXT.html + struct DebugUtilsObjectTagInfoEXT + { + using NativeType = VkDebugUtilsObjectTagInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsObjectTagInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT( ObjectType objectType_ = ObjectType::eUnknown, + uint64_t objectHandle_ = {}, + uint64_t tagName_ = {}, + size_t tagSize_ = {}, + void const * pTag_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , objectType{ objectType_ } + , objectHandle{ objectHandle_ } + , tagName{ tagName_ } + , tagSize{ tagSize_ } + , pTag{ pTag_ } + { + } + + VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DebugUtilsObjectTagInfoEXT( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DebugUtilsObjectTagInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + DebugUtilsObjectTagInfoEXT( + ObjectType objectType_, uint64_t objectHandle_, uint64_t tagName_, ArrayProxyNoTemporaries const & tag_, void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , objectType( objectType_ ) + , objectHandle( objectHandle_ ) + , tagName( tagName_ ) + , tagSize( tag_.size() * sizeof( T ) ) + , pTag( tag_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DebugUtilsObjectTagInfoEXT & operator=( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DebugUtilsObjectTagInfoEXT & operator=( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setObjectType( ObjectType objectType_ ) & VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT && setObjectType( ObjectType objectType_ ) && VULKAN_HPP_NOEXCEPT + { + objectType = objectType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setObjectHandle( uint64_t objectHandle_ ) & VULKAN_HPP_NOEXCEPT + { + objectHandle = objectHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT && setObjectHandle( uint64_t objectHandle_ ) && VULKAN_HPP_NOEXCEPT + { + objectHandle = objectHandle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagName( uint64_t tagName_ ) & VULKAN_HPP_NOEXCEPT + { + tagName = tagName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT && setTagName( uint64_t tagName_ ) && VULKAN_HPP_NOEXCEPT + { + tagName = tagName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setTagSize( size_t tagSize_ ) & VULKAN_HPP_NOEXCEPT + { + tagSize = tagSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT && setTagSize( size_t tagSize_ ) && VULKAN_HPP_NOEXCEPT + { + tagSize = tagSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & setPTag( void const * pTag_ ) & VULKAN_HPP_NOEXCEPT + { + pTag = pTag_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT && setPTag( void const * pTag_ ) && VULKAN_HPP_NOEXCEPT + { + pTag = pTag_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + DebugUtilsObjectTagInfoEXT & setTag( ArrayProxyNoTemporaries const & tag_ ) VULKAN_HPP_NOEXCEPT + { + tagSize = tag_.size() * sizeof( T ); + pTag = tag_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDebugUtilsObjectTagInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugUtilsObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDebugUtilsObjectTagInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDebugUtilsObjectTagInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, objectType, objectHandle, tagName, tagSize, pTag ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DebugUtilsObjectTagInfoEXT const & ) const = default; +#else + bool operator==( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( objectType == rhs.objectType ) && ( objectHandle == rhs.objectHandle ) && + ( tagName == rhs.tagName ) && ( tagSize == rhs.tagSize ) && ( pTag == rhs.pTag ); +# endif + } + + bool operator!=( DebugUtilsObjectTagInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDebugUtilsObjectTagInfoEXT; + void const * pNext = {}; + ObjectType objectType = ObjectType::eUnknown; + uint64_t objectHandle = {}; + uint64_t tagName = {}; + size_t tagSize = {}; + void const * pTag = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DebugUtilsObjectTagInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DebugUtilsObjectTagInfoEXT; + }; + + // wrapper struct for struct VkDecompressMemoryRegionEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDecompressMemoryRegionEXT.html + struct DecompressMemoryRegionEXT + { + using NativeType = VkDecompressMemoryRegionEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DecompressMemoryRegionEXT( DeviceAddress srcAddress_ = {}, + DeviceAddress dstAddress_ = {}, + DeviceSize compressedSize_ = {}, + DeviceSize decompressedSize_ = {} ) VULKAN_HPP_NOEXCEPT + : srcAddress{ srcAddress_ } + , dstAddress{ dstAddress_ } + , compressedSize{ compressedSize_ } + , decompressedSize{ decompressedSize_ } + { + } + + VULKAN_HPP_CONSTEXPR DecompressMemoryRegionEXT( DecompressMemoryRegionEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DecompressMemoryRegionEXT( VkDecompressMemoryRegionEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DecompressMemoryRegionEXT( *reinterpret_cast( &rhs ) ) + { + } + + DecompressMemoryRegionEXT & operator=( DecompressMemoryRegionEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DecompressMemoryRegionEXT & operator=( VkDecompressMemoryRegionEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionEXT & setSrcAddress( DeviceAddress srcAddress_ ) & VULKAN_HPP_NOEXCEPT + { + srcAddress = srcAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionEXT && setSrcAddress( DeviceAddress srcAddress_ ) && VULKAN_HPP_NOEXCEPT + { + srcAddress = srcAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionEXT & setDstAddress( DeviceAddress dstAddress_ ) & VULKAN_HPP_NOEXCEPT + { + dstAddress = dstAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionEXT && setDstAddress( DeviceAddress dstAddress_ ) && VULKAN_HPP_NOEXCEPT + { + dstAddress = dstAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionEXT & setCompressedSize( DeviceSize compressedSize_ ) & VULKAN_HPP_NOEXCEPT + { + compressedSize = compressedSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionEXT && setCompressedSize( DeviceSize compressedSize_ ) && VULKAN_HPP_NOEXCEPT + { + compressedSize = compressedSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionEXT & setDecompressedSize( DeviceSize decompressedSize_ ) & VULKAN_HPP_NOEXCEPT + { + decompressedSize = decompressedSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionEXT && setDecompressedSize( DeviceSize decompressedSize_ ) && VULKAN_HPP_NOEXCEPT + { + decompressedSize = decompressedSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDecompressMemoryRegionEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDecompressMemoryRegionEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDecompressMemoryRegionEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDecompressMemoryRegionEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcAddress, dstAddress, compressedSize, decompressedSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DecompressMemoryRegionEXT const & ) const = default; +#else + bool operator==( DecompressMemoryRegionEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcAddress == rhs.srcAddress ) && ( dstAddress == rhs.dstAddress ) && ( compressedSize == rhs.compressedSize ) && + ( decompressedSize == rhs.decompressedSize ); +# endif + } + + bool operator!=( DecompressMemoryRegionEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress srcAddress = {}; + DeviceAddress dstAddress = {}; + DeviceSize compressedSize = {}; + DeviceSize decompressedSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DecompressMemoryRegionEXT; + }; +#endif + + // wrapper struct for struct VkDecompressMemoryInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDecompressMemoryInfoEXT.html + struct DecompressMemoryInfoEXT + { + using NativeType = VkDecompressMemoryInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDecompressMemoryInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DecompressMemoryInfoEXT( MemoryDecompressionMethodFlagsEXT decompressionMethod_ = {}, + uint32_t regionCount_ = {}, + DecompressMemoryRegionEXT const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , decompressionMethod{ decompressionMethod_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR DecompressMemoryInfoEXT( DecompressMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DecompressMemoryInfoEXT( VkDecompressMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DecompressMemoryInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DecompressMemoryInfoEXT( MemoryDecompressionMethodFlagsEXT decompressionMethod_, + ArrayProxyNoTemporaries const & regions_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), decompressionMethod( decompressionMethod_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DecompressMemoryInfoEXT & operator=( DecompressMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DecompressMemoryInfoEXT & operator=( VkDecompressMemoryInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryInfoEXT & setDecompressionMethod( MemoryDecompressionMethodFlagsEXT decompressionMethod_ ) & VULKAN_HPP_NOEXCEPT + { + decompressionMethod = decompressionMethod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryInfoEXT && setDecompressionMethod( MemoryDecompressionMethodFlagsEXT decompressionMethod_ ) && VULKAN_HPP_NOEXCEPT + { + decompressionMethod = decompressionMethod_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryInfoEXT & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryInfoEXT && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryInfoEXT & setPRegions( DecompressMemoryRegionEXT const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryInfoEXT && setPRegions( DecompressMemoryRegionEXT const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DecompressMemoryInfoEXT & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDecompressMemoryInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDecompressMemoryInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDecompressMemoryInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDecompressMemoryInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, decompressionMethod, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DecompressMemoryInfoEXT const & ) const = default; +#else + bool operator==( DecompressMemoryInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decompressionMethod == rhs.decompressionMethod ) && ( regionCount == rhs.regionCount ) && + ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( DecompressMemoryInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDecompressMemoryInfoEXT; + void const * pNext = {}; + MemoryDecompressionMethodFlagsEXT decompressionMethod = {}; + uint32_t regionCount = {}; + DecompressMemoryRegionEXT const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DecompressMemoryInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DecompressMemoryInfoEXT; + }; + + // wrapper struct for struct VkDecompressMemoryRegionNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDecompressMemoryRegionNV.html + struct DecompressMemoryRegionNV + { + using NativeType = VkDecompressMemoryRegionNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DecompressMemoryRegionNV( DeviceAddress srcAddress_ = {}, + DeviceAddress dstAddress_ = {}, + DeviceSize compressedSize_ = {}, + DeviceSize decompressedSize_ = {}, + MemoryDecompressionMethodFlagsNV decompressionMethod_ = {} ) VULKAN_HPP_NOEXCEPT + : srcAddress{ srcAddress_ } + , dstAddress{ dstAddress_ } + , compressedSize{ compressedSize_ } + , decompressedSize{ decompressedSize_ } + , decompressionMethod{ decompressionMethod_ } + { + } + + VULKAN_HPP_CONSTEXPR DecompressMemoryRegionNV( DecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DecompressMemoryRegionNV( VkDecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DecompressMemoryRegionNV( *reinterpret_cast( &rhs ) ) + { + } + + DecompressMemoryRegionNV & operator=( DecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DecompressMemoryRegionNV & operator=( VkDecompressMemoryRegionNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setSrcAddress( DeviceAddress srcAddress_ ) & VULKAN_HPP_NOEXCEPT + { + srcAddress = srcAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV && setSrcAddress( DeviceAddress srcAddress_ ) && VULKAN_HPP_NOEXCEPT + { + srcAddress = srcAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setDstAddress( DeviceAddress dstAddress_ ) & VULKAN_HPP_NOEXCEPT + { + dstAddress = dstAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV && setDstAddress( DeviceAddress dstAddress_ ) && VULKAN_HPP_NOEXCEPT + { + dstAddress = dstAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setCompressedSize( DeviceSize compressedSize_ ) & VULKAN_HPP_NOEXCEPT + { + compressedSize = compressedSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV && setCompressedSize( DeviceSize compressedSize_ ) && VULKAN_HPP_NOEXCEPT + { + compressedSize = compressedSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setDecompressedSize( DeviceSize decompressedSize_ ) & VULKAN_HPP_NOEXCEPT + { + decompressedSize = decompressedSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV && setDecompressedSize( DeviceSize decompressedSize_ ) && VULKAN_HPP_NOEXCEPT + { + decompressedSize = decompressedSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV & setDecompressionMethod( MemoryDecompressionMethodFlagsNV decompressionMethod_ ) & VULKAN_HPP_NOEXCEPT + { + decompressionMethod = decompressionMethod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DecompressMemoryRegionNV && setDecompressionMethod( MemoryDecompressionMethodFlagsNV decompressionMethod_ ) && VULKAN_HPP_NOEXCEPT + { + decompressionMethod = decompressionMethod_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDecompressMemoryRegionNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDecompressMemoryRegionNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDecompressMemoryRegionNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDecompressMemoryRegionNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcAddress, dstAddress, compressedSize, decompressedSize, decompressionMethod ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DecompressMemoryRegionNV const & ) const = default; +#else + bool operator==( DecompressMemoryRegionNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcAddress == rhs.srcAddress ) && ( dstAddress == rhs.dstAddress ) && ( compressedSize == rhs.compressedSize ) && + ( decompressedSize == rhs.decompressedSize ) && ( decompressionMethod == rhs.decompressionMethod ); +# endif + } + + bool operator!=( DecompressMemoryRegionNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress srcAddress = {}; + DeviceAddress dstAddress = {}; + DeviceSize compressedSize = {}; + DeviceSize decompressedSize = {}; + MemoryDecompressionMethodFlagsNV decompressionMethod = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DecompressMemoryRegionNV; + }; +#endif + + // wrapper struct for struct VkDedicatedAllocationBufferCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDedicatedAllocationBufferCreateInfoNV.html + struct DedicatedAllocationBufferCreateInfoNV + { + using NativeType = VkDedicatedAllocationBufferCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDedicatedAllocationBufferCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dedicatedAllocation{ dedicatedAllocation_ } + { + } + + VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DedicatedAllocationBufferCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + DedicatedAllocationBufferCreateInfoNV & operator=( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DedicatedAllocationBufferCreateInfoNV & operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV & setDedicatedAllocation( Bool32 dedicatedAllocation_ ) & VULKAN_HPP_NOEXCEPT + { + dedicatedAllocation = dedicatedAllocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV && setDedicatedAllocation( Bool32 dedicatedAllocation_ ) && VULKAN_HPP_NOEXCEPT + { + dedicatedAllocation = dedicatedAllocation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDedicatedAllocationBufferCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDedicatedAllocationBufferCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDedicatedAllocationBufferCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDedicatedAllocationBufferCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dedicatedAllocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DedicatedAllocationBufferCreateInfoNV const & ) const = default; +#else + bool operator==( DedicatedAllocationBufferCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocation == rhs.dedicatedAllocation ); +# endif + } + + bool operator!=( DedicatedAllocationBufferCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDedicatedAllocationBufferCreateInfoNV; + void const * pNext = {}; + Bool32 dedicatedAllocation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DedicatedAllocationBufferCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = DedicatedAllocationBufferCreateInfoNV; + }; + + // wrapper struct for struct VkDedicatedAllocationImageCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDedicatedAllocationImageCreateInfoNV.html + struct DedicatedAllocationImageCreateInfoNV + { + using NativeType = VkDedicatedAllocationImageCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDedicatedAllocationImageCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dedicatedAllocation{ dedicatedAllocation_ } + { + } + + VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DedicatedAllocationImageCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + DedicatedAllocationImageCreateInfoNV & operator=( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DedicatedAllocationImageCreateInfoNV & operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV & setDedicatedAllocation( Bool32 dedicatedAllocation_ ) & VULKAN_HPP_NOEXCEPT + { + dedicatedAllocation = dedicatedAllocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV && setDedicatedAllocation( Bool32 dedicatedAllocation_ ) && VULKAN_HPP_NOEXCEPT + { + dedicatedAllocation = dedicatedAllocation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDedicatedAllocationImageCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDedicatedAllocationImageCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDedicatedAllocationImageCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDedicatedAllocationImageCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dedicatedAllocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DedicatedAllocationImageCreateInfoNV const & ) const = default; +#else + bool operator==( DedicatedAllocationImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocation == rhs.dedicatedAllocation ); +# endif + } + + bool operator!=( DedicatedAllocationImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDedicatedAllocationImageCreateInfoNV; + void const * pNext = {}; + Bool32 dedicatedAllocation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DedicatedAllocationImageCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = DedicatedAllocationImageCreateInfoNV; + }; + + // wrapper struct for struct VkDedicatedAllocationMemoryAllocateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDedicatedAllocationMemoryAllocateInfoNV.html + struct DedicatedAllocationMemoryAllocateInfoNV + { + using NativeType = VkDedicatedAllocationMemoryAllocateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DedicatedAllocationMemoryAllocateInfoNV( Image image_ = {}, Buffer buffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image{ image_ } + , buffer{ buffer_ } + { + } + + VULKAN_HPP_CONSTEXPR DedicatedAllocationMemoryAllocateInfoNV( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DedicatedAllocationMemoryAllocateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + DedicatedAllocationMemoryAllocateInfoNV & operator=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DedicatedAllocationMemoryAllocateInfoNV & operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDedicatedAllocationMemoryAllocateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDedicatedAllocationMemoryAllocateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDedicatedAllocationMemoryAllocateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDedicatedAllocationMemoryAllocateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image, buffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DedicatedAllocationMemoryAllocateInfoNV const & ) const = default; +#else + bool operator==( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV; + void const * pNext = {}; + Image image = {}; + Buffer buffer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DedicatedAllocationMemoryAllocateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = DedicatedAllocationMemoryAllocateInfoNV; + }; + + // wrapper struct for struct VkMemoryBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryBarrier2.html + struct MemoryBarrier2 + { + using NativeType = VkMemoryBarrier2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryBarrier2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryBarrier2( PipelineStageFlags2 srcStageMask_ = {}, + AccessFlags2 srcAccessMask_ = {}, + PipelineStageFlags2 dstStageMask_ = {}, + AccessFlags2 dstAccessMask_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcStageMask{ srcStageMask_ } + , srcAccessMask{ srcAccessMask_ } + , dstStageMask{ dstStageMask_ } + , dstAccessMask{ dstAccessMask_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryBarrier2( MemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryBarrier2( VkMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryBarrier2( *reinterpret_cast( &rhs ) ) {} + + MemoryBarrier2 & operator=( MemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryBarrier2 & operator=( VkMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setSrcStageMask( PipelineStageFlags2 srcStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 && setSrcStageMask( PipelineStageFlags2 srcStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setSrcAccessMask( AccessFlags2 srcAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 && setSrcAccessMask( AccessFlags2 srcAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setDstStageMask( PipelineStageFlags2 dstStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 && setDstStageMask( PipelineStageFlags2 dstStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 & setDstAccessMask( AccessFlags2 dstAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2 && setDstAccessMask( AccessFlags2 dstAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryBarrier2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryBarrier2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryBarrier2 const & ) const = default; +#else + bool operator==( MemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) && + ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask ); +# endif + } + + bool operator!=( MemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryBarrier2; + void const * pNext = {}; + PipelineStageFlags2 srcStageMask = {}; + AccessFlags2 srcAccessMask = {}; + PipelineStageFlags2 dstStageMask = {}; + AccessFlags2 dstAccessMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryBarrier2; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryBarrier2; + }; + + using MemoryBarrier2KHR = MemoryBarrier2; + + // wrapper struct for struct VkImageSubresourceRange, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageSubresourceRange.html + struct ImageSubresourceRange + { + using NativeType = VkImageSubresourceRange; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageSubresourceRange( ImageAspectFlags aspectMask_ = {}, + uint32_t baseMipLevel_ = {}, + uint32_t levelCount_ = {}, + uint32_t baseArrayLayer_ = {}, + uint32_t layerCount_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectMask{ aspectMask_ } + , baseMipLevel{ baseMipLevel_ } + , levelCount{ levelCount_ } + , baseArrayLayer{ baseArrayLayer_ } + , layerCount{ layerCount_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageSubresourceRange( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSubresourceRange( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageSubresourceRange( *reinterpret_cast( &rhs ) ) + { + } + + ImageSubresourceRange & operator=( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageSubresourceRange & operator=( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setAspectMask( ImageAspectFlags aspectMask_ ) & VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange && setAspectMask( ImageAspectFlags aspectMask_ ) && VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseMipLevel( uint32_t baseMipLevel_ ) & VULKAN_HPP_NOEXCEPT + { + baseMipLevel = baseMipLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange && setBaseMipLevel( uint32_t baseMipLevel_ ) && VULKAN_HPP_NOEXCEPT + { + baseMipLevel = baseMipLevel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLevelCount( uint32_t levelCount_ ) & VULKAN_HPP_NOEXCEPT + { + levelCount = levelCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange && setLevelCount( uint32_t levelCount_ ) && VULKAN_HPP_NOEXCEPT + { + levelCount = levelCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setBaseArrayLayer( uint32_t baseArrayLayer_ ) & VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange && setBaseArrayLayer( uint32_t baseArrayLayer_ ) && VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & setLayerCount( uint32_t layerCount_ ) & VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange && setLayerCount( uint32_t layerCount_ ) && VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageSubresourceRange const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSubresourceRange &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSubresourceRange const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageSubresourceRange *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( aspectMask, baseMipLevel, levelCount, baseArrayLayer, layerCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSubresourceRange const & ) const = default; +#else + bool operator==( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( aspectMask == rhs.aspectMask ) && ( baseMipLevel == rhs.baseMipLevel ) && ( levelCount == rhs.levelCount ) && + ( baseArrayLayer == rhs.baseArrayLayer ) && ( layerCount == rhs.layerCount ); +# endif + } + + bool operator!=( ImageSubresourceRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ImageAspectFlags aspectMask = {}; + uint32_t baseMipLevel = {}; + uint32_t levelCount = {}; + uint32_t baseArrayLayer = {}; + uint32_t layerCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageSubresourceRange; + }; +#endif + + // wrapper struct for struct VkImageMemoryBarrier2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageMemoryBarrier2.html + struct ImageMemoryBarrier2 + { + using NativeType = VkImageMemoryBarrier2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryBarrier2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2( PipelineStageFlags2 srcStageMask_ = {}, + AccessFlags2 srcAccessMask_ = {}, + PipelineStageFlags2 dstStageMask_ = {}, + AccessFlags2 dstAccessMask_ = {}, + ImageLayout oldLayout_ = ImageLayout::eUndefined, + ImageLayout newLayout_ = ImageLayout::eUndefined, + uint32_t srcQueueFamilyIndex_ = {}, + uint32_t dstQueueFamilyIndex_ = {}, + Image image_ = {}, + ImageSubresourceRange subresourceRange_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcStageMask{ srcStageMask_ } + , srcAccessMask{ srcAccessMask_ } + , dstStageMask{ dstStageMask_ } + , dstAccessMask{ dstAccessMask_ } + , oldLayout{ oldLayout_ } + , newLayout{ newLayout_ } + , srcQueueFamilyIndex{ srcQueueFamilyIndex_ } + , dstQueueFamilyIndex{ dstQueueFamilyIndex_ } + , image{ image_ } + , subresourceRange{ subresourceRange_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2( ImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageMemoryBarrier2( VkImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageMemoryBarrier2( *reinterpret_cast( &rhs ) ) + { + } + + ImageMemoryBarrier2 & operator=( ImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageMemoryBarrier2 & operator=( VkImageMemoryBarrier2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcStageMask( PipelineStageFlags2 srcStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setSrcStageMask( PipelineStageFlags2 srcStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcAccessMask( AccessFlags2 srcAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setSrcAccessMask( AccessFlags2 srcAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstStageMask( PipelineStageFlags2 dstStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setDstStageMask( PipelineStageFlags2 dstStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstAccessMask( AccessFlags2 dstAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setDstAccessMask( AccessFlags2 dstAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setOldLayout( ImageLayout oldLayout_ ) & VULKAN_HPP_NOEXCEPT + { + oldLayout = oldLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setOldLayout( ImageLayout oldLayout_ ) && VULKAN_HPP_NOEXCEPT + { + oldLayout = oldLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setNewLayout( ImageLayout newLayout_ ) & VULKAN_HPP_NOEXCEPT + { + newLayout = newLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setNewLayout( ImageLayout newLayout_ ) && VULKAN_HPP_NOEXCEPT + { + newLayout = newLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 & setSubresourceRange( ImageSubresourceRange const & subresourceRange_ ) & VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2 && setSubresourceRange( ImageSubresourceRange const & subresourceRange_ ) && VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageMemoryBarrier2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageMemoryBarrier2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageMemoryBarrier2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageMemoryBarrier2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + srcStageMask, + srcAccessMask, + dstStageMask, + dstAccessMask, + oldLayout, + newLayout, + srcQueueFamilyIndex, + dstQueueFamilyIndex, + image, + subresourceRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageMemoryBarrier2 const & ) const = default; +#else + bool operator==( ImageMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) && + ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask ) && ( oldLayout == rhs.oldLayout ) && + ( newLayout == rhs.newLayout ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && + ( image == rhs.image ) && ( subresourceRange == rhs.subresourceRange ); +# endif + } + + bool operator!=( ImageMemoryBarrier2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageMemoryBarrier2; + void const * pNext = {}; + PipelineStageFlags2 srcStageMask = {}; + AccessFlags2 srcAccessMask = {}; + PipelineStageFlags2 dstStageMask = {}; + AccessFlags2 dstAccessMask = {}; + ImageLayout oldLayout = ImageLayout::eUndefined; + ImageLayout newLayout = ImageLayout::eUndefined; + uint32_t srcQueueFamilyIndex = {}; + uint32_t dstQueueFamilyIndex = {}; + Image image = {}; + ImageSubresourceRange subresourceRange = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageMemoryBarrier2; + }; +#endif + + template <> + struct CppType + { + using Type = ImageMemoryBarrier2; + }; + + using ImageMemoryBarrier2KHR = ImageMemoryBarrier2; + + // wrapper struct for struct VkDependencyInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDependencyInfo.html + struct DependencyInfo + { + using NativeType = VkDependencyInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDependencyInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DependencyInfo( DependencyFlags dependencyFlags_ = {}, + uint32_t memoryBarrierCount_ = {}, + MemoryBarrier2 const * pMemoryBarriers_ = {}, + uint32_t bufferMemoryBarrierCount_ = {}, + BufferMemoryBarrier2 const * pBufferMemoryBarriers_ = {}, + uint32_t imageMemoryBarrierCount_ = {}, + ImageMemoryBarrier2 const * pImageMemoryBarriers_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dependencyFlags{ dependencyFlags_ } + , memoryBarrierCount{ memoryBarrierCount_ } + , pMemoryBarriers{ pMemoryBarriers_ } + , bufferMemoryBarrierCount{ bufferMemoryBarrierCount_ } + , pBufferMemoryBarriers{ pBufferMemoryBarriers_ } + , imageMemoryBarrierCount{ imageMemoryBarrierCount_ } + , pImageMemoryBarriers{ pImageMemoryBarriers_ } + { + } + + VULKAN_HPP_CONSTEXPR DependencyInfo( DependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DependencyInfo( VkDependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT : DependencyInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DependencyInfo( DependencyFlags dependencyFlags_, + ArrayProxyNoTemporaries const & memoryBarriers_, + ArrayProxyNoTemporaries const & bufferMemoryBarriers_ = {}, + ArrayProxyNoTemporaries const & imageMemoryBarriers_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , dependencyFlags( dependencyFlags_ ) + , memoryBarrierCount( static_cast( memoryBarriers_.size() ) ) + , pMemoryBarriers( memoryBarriers_.data() ) + , bufferMemoryBarrierCount( static_cast( bufferMemoryBarriers_.size() ) ) + , pBufferMemoryBarriers( bufferMemoryBarriers_.data() ) + , imageMemoryBarrierCount( static_cast( imageMemoryBarriers_.size() ) ) + , pImageMemoryBarriers( imageMemoryBarriers_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DependencyInfo & operator=( DependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DependencyInfo & operator=( VkDependencyInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setDependencyFlags( DependencyFlags dependencyFlags_ ) & VULKAN_HPP_NOEXCEPT + { + dependencyFlags = dependencyFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo && setDependencyFlags( DependencyFlags dependencyFlags_ ) && VULKAN_HPP_NOEXCEPT + { + dependencyFlags = dependencyFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setMemoryBarrierCount( uint32_t memoryBarrierCount_ ) & VULKAN_HPP_NOEXCEPT + { + memoryBarrierCount = memoryBarrierCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo && setMemoryBarrierCount( uint32_t memoryBarrierCount_ ) && VULKAN_HPP_NOEXCEPT + { + memoryBarrierCount = memoryBarrierCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPMemoryBarriers( MemoryBarrier2 const * pMemoryBarriers_ ) & VULKAN_HPP_NOEXCEPT + { + pMemoryBarriers = pMemoryBarriers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo && setPMemoryBarriers( MemoryBarrier2 const * pMemoryBarriers_ ) && VULKAN_HPP_NOEXCEPT + { + pMemoryBarriers = pMemoryBarriers_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DependencyInfo & setMemoryBarriers( ArrayProxyNoTemporaries const & memoryBarriers_ ) VULKAN_HPP_NOEXCEPT + { + memoryBarrierCount = static_cast( memoryBarriers_.size() ); + pMemoryBarriers = memoryBarriers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setBufferMemoryBarrierCount( uint32_t bufferMemoryBarrierCount_ ) & VULKAN_HPP_NOEXCEPT + { + bufferMemoryBarrierCount = bufferMemoryBarrierCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo && setBufferMemoryBarrierCount( uint32_t bufferMemoryBarrierCount_ ) && VULKAN_HPP_NOEXCEPT + { + bufferMemoryBarrierCount = bufferMemoryBarrierCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPBufferMemoryBarriers( BufferMemoryBarrier2 const * pBufferMemoryBarriers_ ) & VULKAN_HPP_NOEXCEPT + { + pBufferMemoryBarriers = pBufferMemoryBarriers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo && setPBufferMemoryBarriers( BufferMemoryBarrier2 const * pBufferMemoryBarriers_ ) && VULKAN_HPP_NOEXCEPT + { + pBufferMemoryBarriers = pBufferMemoryBarriers_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DependencyInfo & setBufferMemoryBarriers( ArrayProxyNoTemporaries const & bufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT + { + bufferMemoryBarrierCount = static_cast( bufferMemoryBarriers_.size() ); + pBufferMemoryBarriers = bufferMemoryBarriers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setImageMemoryBarrierCount( uint32_t imageMemoryBarrierCount_ ) & VULKAN_HPP_NOEXCEPT + { + imageMemoryBarrierCount = imageMemoryBarrierCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo && setImageMemoryBarrierCount( uint32_t imageMemoryBarrierCount_ ) && VULKAN_HPP_NOEXCEPT + { + imageMemoryBarrierCount = imageMemoryBarrierCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo & setPImageMemoryBarriers( ImageMemoryBarrier2 const * pImageMemoryBarriers_ ) & VULKAN_HPP_NOEXCEPT + { + pImageMemoryBarriers = pImageMemoryBarriers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DependencyInfo && setPImageMemoryBarriers( ImageMemoryBarrier2 const * pImageMemoryBarriers_ ) && VULKAN_HPP_NOEXCEPT + { + pImageMemoryBarriers = pImageMemoryBarriers_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DependencyInfo & setImageMemoryBarriers( ArrayProxyNoTemporaries const & imageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT + { + imageMemoryBarrierCount = static_cast( imageMemoryBarriers_.size() ); + pImageMemoryBarriers = imageMemoryBarriers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDependencyInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDependencyInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDependencyInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDependencyInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + dependencyFlags, + memoryBarrierCount, + pMemoryBarriers, + bufferMemoryBarrierCount, + pBufferMemoryBarriers, + imageMemoryBarrierCount, + pImageMemoryBarriers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DependencyInfo const & ) const = default; +#else + bool operator==( DependencyInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dependencyFlags == rhs.dependencyFlags ) && + ( memoryBarrierCount == rhs.memoryBarrierCount ) && ( pMemoryBarriers == rhs.pMemoryBarriers ) && + ( bufferMemoryBarrierCount == rhs.bufferMemoryBarrierCount ) && ( pBufferMemoryBarriers == rhs.pBufferMemoryBarriers ) && + ( imageMemoryBarrierCount == rhs.imageMemoryBarrierCount ) && ( pImageMemoryBarriers == rhs.pImageMemoryBarriers ); +# endif + } + + bool operator!=( DependencyInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDependencyInfo; + void const * pNext = {}; + DependencyFlags dependencyFlags = {}; + uint32_t memoryBarrierCount = {}; + MemoryBarrier2 const * pMemoryBarriers = {}; + uint32_t bufferMemoryBarrierCount = {}; + BufferMemoryBarrier2 const * pBufferMemoryBarriers = {}; + uint32_t imageMemoryBarrierCount = {}; + ImageMemoryBarrier2 const * pImageMemoryBarriers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DependencyInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DependencyInfo; + }; + + using DependencyInfoKHR = DependencyInfo; + + // wrapper struct for struct VkDepthBiasInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDepthBiasInfoEXT.html + struct DepthBiasInfoEXT + { + using NativeType = VkDepthBiasInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDepthBiasInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DepthBiasInfoEXT( float depthBiasConstantFactor_ = {}, + float depthBiasClamp_ = {}, + float depthBiasSlopeFactor_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthBiasConstantFactor{ depthBiasConstantFactor_ } + , depthBiasClamp{ depthBiasClamp_ } + , depthBiasSlopeFactor{ depthBiasSlopeFactor_ } + { + } + + VULKAN_HPP_CONSTEXPR DepthBiasInfoEXT( DepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DepthBiasInfoEXT( VkDepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DepthBiasInfoEXT( *reinterpret_cast( &rhs ) ) {} + + DepthBiasInfoEXT & operator=( DepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DepthBiasInfoEXT & operator=( VkDepthBiasInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasConstantFactor = depthBiasConstantFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT && setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasConstantFactor = depthBiasConstantFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setDepthBiasClamp( float depthBiasClamp_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasClamp = depthBiasClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT && setDepthBiasClamp( float depthBiasClamp_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasClamp = depthBiasClamp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT & setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasSlopeFactor = depthBiasSlopeFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasInfoEXT && setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasSlopeFactor = depthBiasSlopeFactor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDepthBiasInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDepthBiasInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDepthBiasInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDepthBiasInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DepthBiasInfoEXT const & ) const = default; +#else + bool operator==( DepthBiasInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor ) && + ( depthBiasClamp == rhs.depthBiasClamp ) && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor ); +# endif + } + + bool operator!=( DepthBiasInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDepthBiasInfoEXT; + void const * pNext = {}; + float depthBiasConstantFactor = {}; + float depthBiasClamp = {}; + float depthBiasSlopeFactor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DepthBiasInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DepthBiasInfoEXT; + }; + + // wrapper struct for struct VkDepthBiasRepresentationInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDepthBiasRepresentationInfoEXT.html + struct DepthBiasRepresentationInfoEXT + { + using NativeType = VkDepthBiasRepresentationInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDepthBiasRepresentationInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DepthBiasRepresentationInfoEXT( DepthBiasRepresentationEXT depthBiasRepresentation_ = DepthBiasRepresentationEXT::eLeastRepresentableValueFormat, + Bool32 depthBiasExact_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthBiasRepresentation{ depthBiasRepresentation_ } + , depthBiasExact{ depthBiasExact_ } + { + } + + VULKAN_HPP_CONSTEXPR DepthBiasRepresentationInfoEXT( DepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DepthBiasRepresentationInfoEXT( VkDepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DepthBiasRepresentationInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + DepthBiasRepresentationInfoEXT & operator=( DepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DepthBiasRepresentationInfoEXT & operator=( VkDepthBiasRepresentationInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT & setDepthBiasRepresentation( DepthBiasRepresentationEXT depthBiasRepresentation_ ) & + VULKAN_HPP_NOEXCEPT + { + depthBiasRepresentation = depthBiasRepresentation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT && setDepthBiasRepresentation( DepthBiasRepresentationEXT depthBiasRepresentation_ ) && + VULKAN_HPP_NOEXCEPT + { + depthBiasRepresentation = depthBiasRepresentation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT & setDepthBiasExact( Bool32 depthBiasExact_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasExact = depthBiasExact_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DepthBiasRepresentationInfoEXT && setDepthBiasExact( Bool32 depthBiasExact_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasExact = depthBiasExact_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDepthBiasRepresentationInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDepthBiasRepresentationInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDepthBiasRepresentationInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDepthBiasRepresentationInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthBiasRepresentation, depthBiasExact ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DepthBiasRepresentationInfoEXT const & ) const = default; +#else + bool operator==( DepthBiasRepresentationInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthBiasRepresentation == rhs.depthBiasRepresentation ) && + ( depthBiasExact == rhs.depthBiasExact ); +# endif + } + + bool operator!=( DepthBiasRepresentationInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDepthBiasRepresentationInfoEXT; + void const * pNext = {}; + DepthBiasRepresentationEXT depthBiasRepresentation = DepthBiasRepresentationEXT::eLeastRepresentableValueFormat; + Bool32 depthBiasExact = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DepthBiasRepresentationInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DepthBiasRepresentationInfoEXT; + }; + + // wrapper struct for struct VkDepthClampRangeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDepthClampRangeEXT.html + struct DepthClampRangeEXT + { + using NativeType = VkDepthClampRangeEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DepthClampRangeEXT( float minDepthClamp_ = {}, float maxDepthClamp_ = {} ) VULKAN_HPP_NOEXCEPT + : minDepthClamp{ minDepthClamp_ } + , maxDepthClamp{ maxDepthClamp_ } + { + } + + VULKAN_HPP_CONSTEXPR DepthClampRangeEXT( DepthClampRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DepthClampRangeEXT( VkDepthClampRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DepthClampRangeEXT( *reinterpret_cast( &rhs ) ) {} + + DepthClampRangeEXT & operator=( DepthClampRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DepthClampRangeEXT & operator=( VkDepthClampRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DepthClampRangeEXT & setMinDepthClamp( float minDepthClamp_ ) & VULKAN_HPP_NOEXCEPT + { + minDepthClamp = minDepthClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DepthClampRangeEXT && setMinDepthClamp( float minDepthClamp_ ) && VULKAN_HPP_NOEXCEPT + { + minDepthClamp = minDepthClamp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DepthClampRangeEXT & setMaxDepthClamp( float maxDepthClamp_ ) & VULKAN_HPP_NOEXCEPT + { + maxDepthClamp = maxDepthClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DepthClampRangeEXT && setMaxDepthClamp( float maxDepthClamp_ ) && VULKAN_HPP_NOEXCEPT + { + maxDepthClamp = maxDepthClamp_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDepthClampRangeEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDepthClampRangeEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDepthClampRangeEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDepthClampRangeEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( minDepthClamp, maxDepthClamp ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DepthClampRangeEXT const & ) const = default; +#else + bool operator==( DepthClampRangeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( minDepthClamp == rhs.minDepthClamp ) && ( maxDepthClamp == rhs.maxDepthClamp ); +# endif + } + + bool operator!=( DepthClampRangeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float minDepthClamp = {}; + float maxDepthClamp = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DepthClampRangeEXT; + }; +#endif + + // wrapper struct for struct VkDescriptorAddressInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorAddressInfoEXT.html + struct DescriptorAddressInfoEXT + { + using NativeType = VkDescriptorAddressInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorAddressInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorAddressInfoEXT( DeviceAddress address_ = {}, + DeviceSize range_ = {}, + Format format_ = Format::eUndefined, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , address{ address_ } + , range{ range_ } + , format{ format_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorAddressInfoEXT( DescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorAddressInfoEXT( VkDescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorAddressInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorAddressInfoEXT & operator=( DescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorAddressInfoEXT & operator=( VkDescriptorAddressInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setAddress( DeviceAddress address_ ) & VULKAN_HPP_NOEXCEPT + { + address = address_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT && setAddress( DeviceAddress address_ ) && VULKAN_HPP_NOEXCEPT + { + address = address_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setRange( DeviceSize range_ ) & VULKAN_HPP_NOEXCEPT + { + range = range_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT && setRange( DeviceSize range_ ) && VULKAN_HPP_NOEXCEPT + { + range = range_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorAddressInfoEXT && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorAddressInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorAddressInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorAddressInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorAddressInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, address, range, format ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorAddressInfoEXT const & ) const = default; +#else + bool operator==( DescriptorAddressInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( address == rhs.address ) && ( range == rhs.range ) && ( format == rhs.format ); +# endif + } + + bool operator!=( DescriptorAddressInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorAddressInfoEXT; + void * pNext = {}; + DeviceAddress address = {}; + DeviceSize range = {}; + Format format = Format::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorAddressInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorAddressInfoEXT; + }; + + // wrapper struct for struct VkDescriptorBufferBindingInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorBufferBindingInfoEXT.html + struct DescriptorBufferBindingInfoEXT + { + using NativeType = VkDescriptorBufferBindingInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorBufferBindingInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DescriptorBufferBindingInfoEXT( DeviceAddress address_ = {}, BufferUsageFlags usage_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , address{ address_ } + , usage{ usage_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorBufferBindingInfoEXT( DescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorBufferBindingInfoEXT( VkDescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorBufferBindingInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorBufferBindingInfoEXT & operator=( DescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorBufferBindingInfoEXT & operator=( VkDescriptorBufferBindingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT & setAddress( DeviceAddress address_ ) & VULKAN_HPP_NOEXCEPT + { + address = address_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT && setAddress( DeviceAddress address_ ) && VULKAN_HPP_NOEXCEPT + { + address = address_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT & setUsage( BufferUsageFlags usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingInfoEXT && setUsage( BufferUsageFlags usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorBufferBindingInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorBufferBindingInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorBufferBindingInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorBufferBindingInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, address, usage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorBufferBindingInfoEXT const & ) const = default; +#else + bool operator==( DescriptorBufferBindingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( address == rhs.address ) && ( usage == rhs.usage ); +# endif + } + + bool operator!=( DescriptorBufferBindingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorBufferBindingInfoEXT; + void const * pNext = {}; + DeviceAddress address = {}; + BufferUsageFlags usage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorBufferBindingInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorBufferBindingInfoEXT; + }; + + // wrapper struct for struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorBufferBindingPushDescriptorBufferHandleEXT.html + struct DescriptorBufferBindingPushDescriptorBufferHandleEXT + { + using NativeType = VkDescriptorBufferBindingPushDescriptorBufferHandleEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorBufferBindingPushDescriptorBufferHandleEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorBufferBindingPushDescriptorBufferHandleEXT( Buffer buffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , buffer{ buffer_ } + { + } + + VULKAN_HPP_CONSTEXPR + DescriptorBufferBindingPushDescriptorBufferHandleEXT( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorBufferBindingPushDescriptorBufferHandleEXT( VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorBufferBindingPushDescriptorBufferHandleEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorBufferBindingPushDescriptorBufferHandleEXT & + operator=( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorBufferBindingPushDescriptorBufferHandleEXT & operator=( VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingPushDescriptorBufferHandleEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingPushDescriptorBufferHandleEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingPushDescriptorBufferHandleEXT & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferBindingPushDescriptorBufferHandleEXT && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorBufferBindingPushDescriptorBufferHandleEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & ) const = default; +#else + bool operator==( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( DescriptorBufferBindingPushDescriptorBufferHandleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorBufferBindingPushDescriptorBufferHandleEXT; + void const * pNext = {}; + Buffer buffer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorBufferBindingPushDescriptorBufferHandleEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorBufferBindingPushDescriptorBufferHandleEXT; + }; + + // wrapper struct for struct VkDescriptorBufferInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorBufferInfo.html + struct DescriptorBufferInfo + { + using NativeType = VkDescriptorBufferInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( Buffer buffer_ = {}, DeviceSize offset_ = {}, DeviceSize range_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer{ buffer_ } + , offset{ offset_ } + , range{ range_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorBufferInfo( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorBufferInfo( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorBufferInfo & operator=( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorBufferInfo & operator=( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & setRange( DeviceSize range_ ) & VULKAN_HPP_NOEXCEPT + { + range = range_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo && setRange( DeviceSize range_ ) && VULKAN_HPP_NOEXCEPT + { + range = range_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorBufferInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorBufferInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorBufferInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorBufferInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( buffer, offset, range ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorBufferInfo const & ) const = default; +#else + bool operator==( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && ( range == rhs.range ); +# endif + } + + bool operator!=( DescriptorBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Buffer buffer = {}; + DeviceSize offset = {}; + DeviceSize range = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorBufferInfo; + }; +#endif + + // wrapper struct for struct VkDescriptorImageInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorImageInfo.html + struct DescriptorImageInfo + { + using NativeType = VkDescriptorImageInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DescriptorImageInfo( Sampler sampler_ = {}, ImageView imageView_ = {}, ImageLayout imageLayout_ = ImageLayout::eUndefined ) VULKAN_HPP_NOEXCEPT + : sampler{ sampler_ } + , imageView{ imageView_ } + , imageLayout{ imageLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorImageInfo( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorImageInfo( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT : DescriptorImageInfo( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorImageInfo & operator=( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorImageInfo & operator=( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setSampler( Sampler sampler_ ) & VULKAN_HPP_NOEXCEPT + { + sampler = sampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo && setSampler( Sampler sampler_ ) && VULKAN_HPP_NOEXCEPT + { + sampler = sampler_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setImageView( ImageView imageView_ ) & VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo && setImageView( ImageView imageView_ ) && VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & setImageLayout( ImageLayout imageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo && setImageLayout( ImageLayout imageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorImageInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorImageInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorImageInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorImageInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sampler, imageView, imageLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorImageInfo const & ) const = default; +#else + bool operator==( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sampler == rhs.sampler ) && ( imageView == rhs.imageView ) && ( imageLayout == rhs.imageLayout ); +# endif + } + + bool operator!=( DescriptorImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Sampler sampler = {}; + ImageView imageView = {}; + ImageLayout imageLayout = ImageLayout::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorImageInfo; + }; +#endif + + union DescriptorDataEXT + { + using NativeType = VkDescriptorDataEXT; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( Sampler const * pSampler_ = {} ) : pSampler( pSampler_ ) {} + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( DescriptorImageInfo const * pDescriptorImageInfo_ ) : pCombinedImageSampler( pDescriptorImageInfo_ ) {} + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( DescriptorAddressInfoEXT const * pDescriptorAddressInfoEXT_ ) : pUniformTexelBuffer( pDescriptorAddressInfoEXT_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT( DeviceAddress accelerationStructure_ ) : accelerationStructure( accelerationStructure_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPSampler( Sampler const * pSampler_ ) & VULKAN_HPP_NOEXCEPT + { + pSampler = pSampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT && setPSampler( Sampler const * pSampler_ ) && VULKAN_HPP_NOEXCEPT + { + pSampler = pSampler_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPCombinedImageSampler( DescriptorImageInfo const * pCombinedImageSampler_ ) & VULKAN_HPP_NOEXCEPT + { + pCombinedImageSampler = pCombinedImageSampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT && setPCombinedImageSampler( DescriptorImageInfo const * pCombinedImageSampler_ ) && VULKAN_HPP_NOEXCEPT + { + pCombinedImageSampler = pCombinedImageSampler_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPInputAttachmentImage( DescriptorImageInfo const * pInputAttachmentImage_ ) & VULKAN_HPP_NOEXCEPT + { + pInputAttachmentImage = pInputAttachmentImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT && setPInputAttachmentImage( DescriptorImageInfo const * pInputAttachmentImage_ ) && VULKAN_HPP_NOEXCEPT + { + pInputAttachmentImage = pInputAttachmentImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPSampledImage( DescriptorImageInfo const * pSampledImage_ ) & VULKAN_HPP_NOEXCEPT + { + pSampledImage = pSampledImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT && setPSampledImage( DescriptorImageInfo const * pSampledImage_ ) && VULKAN_HPP_NOEXCEPT + { + pSampledImage = pSampledImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPStorageImage( DescriptorImageInfo const * pStorageImage_ ) & VULKAN_HPP_NOEXCEPT + { + pStorageImage = pStorageImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT && setPStorageImage( DescriptorImageInfo const * pStorageImage_ ) && VULKAN_HPP_NOEXCEPT + { + pStorageImage = pStorageImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPUniformTexelBuffer( DescriptorAddressInfoEXT const * pUniformTexelBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + pUniformTexelBuffer = pUniformTexelBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT && setPUniformTexelBuffer( DescriptorAddressInfoEXT const * pUniformTexelBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + pUniformTexelBuffer = pUniformTexelBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPStorageTexelBuffer( DescriptorAddressInfoEXT const * pStorageTexelBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + pStorageTexelBuffer = pStorageTexelBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT && setPStorageTexelBuffer( DescriptorAddressInfoEXT const * pStorageTexelBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + pStorageTexelBuffer = pStorageTexelBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPUniformBuffer( DescriptorAddressInfoEXT const * pUniformBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + pUniformBuffer = pUniformBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT && setPUniformBuffer( DescriptorAddressInfoEXT const * pUniformBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + pUniformBuffer = pUniformBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setPStorageBuffer( DescriptorAddressInfoEXT const * pStorageBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + pStorageBuffer = pStorageBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT && setPStorageBuffer( DescriptorAddressInfoEXT const * pStorageBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + pStorageBuffer = pStorageBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT & setAccelerationStructure( DeviceAddress accelerationStructure_ ) & VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorDataEXT && setAccelerationStructure( DeviceAddress accelerationStructure_ ) && VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorDataEXT const &() const + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorDataEXT &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + Sampler const * pSampler; + DescriptorImageInfo const * pCombinedImageSampler; + DescriptorImageInfo const * pInputAttachmentImage; + DescriptorImageInfo const * pSampledImage; + DescriptorImageInfo const * pStorageImage; + DescriptorAddressInfoEXT const * pUniformTexelBuffer; + DescriptorAddressInfoEXT const * pStorageTexelBuffer; + DescriptorAddressInfoEXT const * pUniformBuffer; + DescriptorAddressInfoEXT const * pStorageBuffer; + DeviceAddress accelerationStructure; +#else + VkSampler const * pSampler; + VkDescriptorImageInfo const * pCombinedImageSampler; + VkDescriptorImageInfo const * pInputAttachmentImage; + VkDescriptorImageInfo const * pSampledImage; + VkDescriptorImageInfo const * pStorageImage; + VkDescriptorAddressInfoEXT const * pUniformTexelBuffer; + VkDescriptorAddressInfoEXT const * pStorageTexelBuffer; + VkDescriptorAddressInfoEXT const * pUniformBuffer; + VkDescriptorAddressInfoEXT const * pStorageBuffer; + VkDeviceAddress accelerationStructure; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorDataEXT; + }; +#endif + + // wrapper struct for struct VkDescriptorGetInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorGetInfoEXT.html + struct DescriptorGetInfoEXT + { + using NativeType = VkDescriptorGetInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorGetInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + DescriptorGetInfoEXT( DescriptorType type_ = DescriptorType::eSampler, DescriptorDataEXT data_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , data{ data_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT( DescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorGetInfoEXT( VkDescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorGetInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorGetInfoEXT & operator=( DescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorGetInfoEXT & operator=( VkDescriptorGetInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT & setType( DescriptorType type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT && setType( DescriptorType type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT & setData( DescriptorDataEXT const & data_ ) & VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorGetInfoEXT && setData( DescriptorDataEXT const & data_ ) && VULKAN_HPP_NOEXCEPT + { + data = data_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorGetInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorGetInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorGetInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorGetInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, data ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorGetInfoEXT; + void const * pNext = {}; + DescriptorType type = DescriptorType::eSampler; + DescriptorDataEXT data = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorGetInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorGetInfoEXT; + }; + + // wrapper struct for struct VkDescriptorGetTensorInfoARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorGetTensorInfoARM.html + struct DescriptorGetTensorInfoARM + { + using NativeType = VkDescriptorGetTensorInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorGetTensorInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorGetTensorInfoARM( TensorViewARM tensorView_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensorView{ tensorView_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorGetTensorInfoARM( DescriptorGetTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorGetTensorInfoARM( VkDescriptorGetTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorGetTensorInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorGetTensorInfoARM & operator=( DescriptorGetTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorGetTensorInfoARM & operator=( VkDescriptorGetTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorGetTensorInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorGetTensorInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorGetTensorInfoARM & setTensorView( TensorViewARM tensorView_ ) & VULKAN_HPP_NOEXCEPT + { + tensorView = tensorView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorGetTensorInfoARM && setTensorView( TensorViewARM tensorView_ ) && VULKAN_HPP_NOEXCEPT + { + tensorView = tensorView_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorGetTensorInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorGetTensorInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorGetTensorInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorGetTensorInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensorView ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorGetTensorInfoARM const & ) const = default; +#else + bool operator==( DescriptorGetTensorInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensorView == rhs.tensorView ); +# endif + } + + bool operator!=( DescriptorGetTensorInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorGetTensorInfoARM; + void const * pNext = {}; + TensorViewARM tensorView = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorGetTensorInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorGetTensorInfoARM; + }; + + // wrapper struct for struct VkSamplerCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerCreateInfo.html + struct SamplerCreateInfo + { + using NativeType = VkSamplerCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerCreateInfo( SamplerCreateFlags flags_ = {}, + Filter magFilter_ = Filter::eNearest, + Filter minFilter_ = Filter::eNearest, + SamplerMipmapMode mipmapMode_ = SamplerMipmapMode::eNearest, + SamplerAddressMode addressModeU_ = SamplerAddressMode::eRepeat, + SamplerAddressMode addressModeV_ = SamplerAddressMode::eRepeat, + SamplerAddressMode addressModeW_ = SamplerAddressMode::eRepeat, + float mipLodBias_ = {}, + Bool32 anisotropyEnable_ = {}, + float maxAnisotropy_ = {}, + Bool32 compareEnable_ = {}, + CompareOp compareOp_ = CompareOp::eNever, + float minLod_ = {}, + float maxLod_ = {}, + BorderColor borderColor_ = BorderColor::eFloatTransparentBlack, + Bool32 unnormalizedCoordinates_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , magFilter{ magFilter_ } + , minFilter{ minFilter_ } + , mipmapMode{ mipmapMode_ } + , addressModeU{ addressModeU_ } + , addressModeV{ addressModeV_ } + , addressModeW{ addressModeW_ } + , mipLodBias{ mipLodBias_ } + , anisotropyEnable{ anisotropyEnable_ } + , maxAnisotropy{ maxAnisotropy_ } + , compareEnable{ compareEnable_ } + , compareOp{ compareOp_ } + , minLod{ minLod_ } + , maxLod{ maxLod_ } + , borderColor{ borderColor_ } + , unnormalizedCoordinates{ unnormalizedCoordinates_ } + { + } + + VULKAN_HPP_CONSTEXPR SamplerCreateInfo( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerCreateInfo( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SamplerCreateInfo( *reinterpret_cast( &rhs ) ) {} + + SamplerCreateInfo & operator=( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerCreateInfo & operator=( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setFlags( SamplerCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setFlags( SamplerCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMagFilter( Filter magFilter_ ) & VULKAN_HPP_NOEXCEPT + { + magFilter = magFilter_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setMagFilter( Filter magFilter_ ) && VULKAN_HPP_NOEXCEPT + { + magFilter = magFilter_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMinFilter( Filter minFilter_ ) & VULKAN_HPP_NOEXCEPT + { + minFilter = minFilter_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setMinFilter( Filter minFilter_ ) && VULKAN_HPP_NOEXCEPT + { + minFilter = minFilter_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMipmapMode( SamplerMipmapMode mipmapMode_ ) & VULKAN_HPP_NOEXCEPT + { + mipmapMode = mipmapMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setMipmapMode( SamplerMipmapMode mipmapMode_ ) && VULKAN_HPP_NOEXCEPT + { + mipmapMode = mipmapMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeU( SamplerAddressMode addressModeU_ ) & VULKAN_HPP_NOEXCEPT + { + addressModeU = addressModeU_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setAddressModeU( SamplerAddressMode addressModeU_ ) && VULKAN_HPP_NOEXCEPT + { + addressModeU = addressModeU_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeV( SamplerAddressMode addressModeV_ ) & VULKAN_HPP_NOEXCEPT + { + addressModeV = addressModeV_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setAddressModeV( SamplerAddressMode addressModeV_ ) && VULKAN_HPP_NOEXCEPT + { + addressModeV = addressModeV_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAddressModeW( SamplerAddressMode addressModeW_ ) & VULKAN_HPP_NOEXCEPT + { + addressModeW = addressModeW_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setAddressModeW( SamplerAddressMode addressModeW_ ) && VULKAN_HPP_NOEXCEPT + { + addressModeW = addressModeW_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMipLodBias( float mipLodBias_ ) & VULKAN_HPP_NOEXCEPT + { + mipLodBias = mipLodBias_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setMipLodBias( float mipLodBias_ ) && VULKAN_HPP_NOEXCEPT + { + mipLodBias = mipLodBias_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setAnisotropyEnable( Bool32 anisotropyEnable_ ) & VULKAN_HPP_NOEXCEPT + { + anisotropyEnable = anisotropyEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setAnisotropyEnable( Bool32 anisotropyEnable_ ) && VULKAN_HPP_NOEXCEPT + { + anisotropyEnable = anisotropyEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxAnisotropy( float maxAnisotropy_ ) & VULKAN_HPP_NOEXCEPT + { + maxAnisotropy = maxAnisotropy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setMaxAnisotropy( float maxAnisotropy_ ) && VULKAN_HPP_NOEXCEPT + { + maxAnisotropy = maxAnisotropy_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setCompareEnable( Bool32 compareEnable_ ) & VULKAN_HPP_NOEXCEPT + { + compareEnable = compareEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setCompareEnable( Bool32 compareEnable_ ) && VULKAN_HPP_NOEXCEPT + { + compareEnable = compareEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setCompareOp( CompareOp compareOp_ ) & VULKAN_HPP_NOEXCEPT + { + compareOp = compareOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setCompareOp( CompareOp compareOp_ ) && VULKAN_HPP_NOEXCEPT + { + compareOp = compareOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMinLod( float minLod_ ) & VULKAN_HPP_NOEXCEPT + { + minLod = minLod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setMinLod( float minLod_ ) && VULKAN_HPP_NOEXCEPT + { + minLod = minLod_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setMaxLod( float maxLod_ ) & VULKAN_HPP_NOEXCEPT + { + maxLod = maxLod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setMaxLod( float maxLod_ ) && VULKAN_HPP_NOEXCEPT + { + maxLod = maxLod_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setBorderColor( BorderColor borderColor_ ) & VULKAN_HPP_NOEXCEPT + { + borderColor = borderColor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setBorderColor( BorderColor borderColor_ ) && VULKAN_HPP_NOEXCEPT + { + borderColor = borderColor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ ) & VULKAN_HPP_NOEXCEPT + { + unnormalizedCoordinates = unnormalizedCoordinates_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo && setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ ) && VULKAN_HPP_NOEXCEPT + { + unnormalizedCoordinates = unnormalizedCoordinates_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + magFilter, + minFilter, + mipmapMode, + addressModeU, + addressModeV, + addressModeW, + mipLodBias, + anisotropyEnable, + maxAnisotropy, + compareEnable, + compareOp, + minLod, + maxLod, + borderColor, + unnormalizedCoordinates ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerCreateInfo const & ) const = default; +#else + bool operator==( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( magFilter == rhs.magFilter ) && ( minFilter == rhs.minFilter ) && + ( mipmapMode == rhs.mipmapMode ) && ( addressModeU == rhs.addressModeU ) && ( addressModeV == rhs.addressModeV ) && + ( addressModeW == rhs.addressModeW ) && ( mipLodBias == rhs.mipLodBias ) && ( anisotropyEnable == rhs.anisotropyEnable ) && + ( maxAnisotropy == rhs.maxAnisotropy ) && ( compareEnable == rhs.compareEnable ) && ( compareOp == rhs.compareOp ) && ( minLod == rhs.minLod ) && + ( maxLod == rhs.maxLod ) && ( borderColor == rhs.borderColor ) && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates ); +# endif + } + + bool operator!=( SamplerCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerCreateInfo; + void const * pNext = {}; + SamplerCreateFlags flags = {}; + Filter magFilter = Filter::eNearest; + Filter minFilter = Filter::eNearest; + SamplerMipmapMode mipmapMode = SamplerMipmapMode::eNearest; + SamplerAddressMode addressModeU = SamplerAddressMode::eRepeat; + SamplerAddressMode addressModeV = SamplerAddressMode::eRepeat; + SamplerAddressMode addressModeW = SamplerAddressMode::eRepeat; + float mipLodBias = {}; + Bool32 anisotropyEnable = {}; + float maxAnisotropy = {}; + Bool32 compareEnable = {}; + CompareOp compareOp = CompareOp::eNever; + float minLod = {}; + float maxLod = {}; + BorderColor borderColor = BorderColor::eFloatTransparentBlack; + Bool32 unnormalizedCoordinates = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerCreateInfo; + }; + + // wrapper struct for struct VkDescriptorMappingSourceConstantOffsetEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorMappingSourceConstantOffsetEXT.html + struct DescriptorMappingSourceConstantOffsetEXT + { + using NativeType = VkDescriptorMappingSourceConstantOffsetEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceConstantOffsetEXT( uint32_t heapOffset_ = {}, + uint32_t heapArrayStride_ = {}, + SamplerCreateInfo const * pEmbeddedSampler_ = {}, + uint32_t samplerHeapOffset_ = {}, + uint32_t samplerHeapArrayStride_ = {} ) VULKAN_HPP_NOEXCEPT + : heapOffset{ heapOffset_ } + , heapArrayStride{ heapArrayStride_ } + , pEmbeddedSampler{ pEmbeddedSampler_ } + , samplerHeapOffset{ samplerHeapOffset_ } + , samplerHeapArrayStride{ samplerHeapArrayStride_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceConstantOffsetEXT( DescriptorMappingSourceConstantOffsetEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorMappingSourceConstantOffsetEXT( VkDescriptorMappingSourceConstantOffsetEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorMappingSourceConstantOffsetEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorMappingSourceConstantOffsetEXT & operator=( DescriptorMappingSourceConstantOffsetEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorMappingSourceConstantOffsetEXT & operator=( VkDescriptorMappingSourceConstantOffsetEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceConstantOffsetEXT & setHeapOffset( uint32_t heapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceConstantOffsetEXT && setHeapOffset( uint32_t heapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceConstantOffsetEXT & setHeapArrayStride( uint32_t heapArrayStride_ ) & VULKAN_HPP_NOEXCEPT + { + heapArrayStride = heapArrayStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceConstantOffsetEXT && setHeapArrayStride( uint32_t heapArrayStride_ ) && VULKAN_HPP_NOEXCEPT + { + heapArrayStride = heapArrayStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceConstantOffsetEXT & setPEmbeddedSampler( SamplerCreateInfo const * pEmbeddedSampler_ ) & VULKAN_HPP_NOEXCEPT + { + pEmbeddedSampler = pEmbeddedSampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceConstantOffsetEXT && setPEmbeddedSampler( SamplerCreateInfo const * pEmbeddedSampler_ ) && + VULKAN_HPP_NOEXCEPT + { + pEmbeddedSampler = pEmbeddedSampler_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceConstantOffsetEXT & setSamplerHeapOffset( uint32_t samplerHeapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapOffset = samplerHeapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceConstantOffsetEXT && setSamplerHeapOffset( uint32_t samplerHeapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapOffset = samplerHeapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceConstantOffsetEXT & setSamplerHeapArrayStride( uint32_t samplerHeapArrayStride_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapArrayStride = samplerHeapArrayStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceConstantOffsetEXT && setSamplerHeapArrayStride( uint32_t samplerHeapArrayStride_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapArrayStride = samplerHeapArrayStride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorMappingSourceConstantOffsetEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceConstantOffsetEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceConstantOffsetEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceConstantOffsetEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( heapOffset, heapArrayStride, pEmbeddedSampler, samplerHeapOffset, samplerHeapArrayStride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorMappingSourceConstantOffsetEXT const & ) const = default; +#else + bool operator==( DescriptorMappingSourceConstantOffsetEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( heapOffset == rhs.heapOffset ) && ( heapArrayStride == rhs.heapArrayStride ) && ( pEmbeddedSampler == rhs.pEmbeddedSampler ) && + ( samplerHeapOffset == rhs.samplerHeapOffset ) && ( samplerHeapArrayStride == rhs.samplerHeapArrayStride ); +# endif + } + + bool operator!=( DescriptorMappingSourceConstantOffsetEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t heapOffset = {}; + uint32_t heapArrayStride = {}; + SamplerCreateInfo const * pEmbeddedSampler = {}; + uint32_t samplerHeapOffset = {}; + uint32_t samplerHeapArrayStride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorMappingSourceConstantOffsetEXT; + }; +#endif + + // wrapper struct for struct VkDescriptorMappingSourcePushIndexEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorMappingSourcePushIndexEXT.html + struct DescriptorMappingSourcePushIndexEXT + { + using NativeType = VkDescriptorMappingSourcePushIndexEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorMappingSourcePushIndexEXT( uint32_t heapOffset_ = {}, + uint32_t pushOffset_ = {}, + uint32_t heapIndexStride_ = {}, + uint32_t heapArrayStride_ = {}, + SamplerCreateInfo const * pEmbeddedSampler_ = {}, + Bool32 useCombinedImageSamplerIndex_ = {}, + uint32_t samplerHeapOffset_ = {}, + uint32_t samplerPushOffset_ = {}, + uint32_t samplerHeapIndexStride_ = {}, + uint32_t samplerHeapArrayStride_ = {} ) VULKAN_HPP_NOEXCEPT + : heapOffset{ heapOffset_ } + , pushOffset{ pushOffset_ } + , heapIndexStride{ heapIndexStride_ } + , heapArrayStride{ heapArrayStride_ } + , pEmbeddedSampler{ pEmbeddedSampler_ } + , useCombinedImageSamplerIndex{ useCombinedImageSamplerIndex_ } + , samplerHeapOffset{ samplerHeapOffset_ } + , samplerPushOffset{ samplerPushOffset_ } + , samplerHeapIndexStride{ samplerHeapIndexStride_ } + , samplerHeapArrayStride{ samplerHeapArrayStride_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorMappingSourcePushIndexEXT( DescriptorMappingSourcePushIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorMappingSourcePushIndexEXT( VkDescriptorMappingSourcePushIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorMappingSourcePushIndexEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorMappingSourcePushIndexEXT & operator=( DescriptorMappingSourcePushIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorMappingSourcePushIndexEXT & operator=( VkDescriptorMappingSourcePushIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT & setHeapOffset( uint32_t heapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT && setHeapOffset( uint32_t heapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT & setPushOffset( uint32_t pushOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pushOffset = pushOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT && setPushOffset( uint32_t pushOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pushOffset = pushOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT & setHeapIndexStride( uint32_t heapIndexStride_ ) & VULKAN_HPP_NOEXCEPT + { + heapIndexStride = heapIndexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT && setHeapIndexStride( uint32_t heapIndexStride_ ) && VULKAN_HPP_NOEXCEPT + { + heapIndexStride = heapIndexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT & setHeapArrayStride( uint32_t heapArrayStride_ ) & VULKAN_HPP_NOEXCEPT + { + heapArrayStride = heapArrayStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT && setHeapArrayStride( uint32_t heapArrayStride_ ) && VULKAN_HPP_NOEXCEPT + { + heapArrayStride = heapArrayStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT & setPEmbeddedSampler( SamplerCreateInfo const * pEmbeddedSampler_ ) & VULKAN_HPP_NOEXCEPT + { + pEmbeddedSampler = pEmbeddedSampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT && setPEmbeddedSampler( SamplerCreateInfo const * pEmbeddedSampler_ ) && VULKAN_HPP_NOEXCEPT + { + pEmbeddedSampler = pEmbeddedSampler_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT & setUseCombinedImageSamplerIndex( Bool32 useCombinedImageSamplerIndex_ ) & VULKAN_HPP_NOEXCEPT + { + useCombinedImageSamplerIndex = useCombinedImageSamplerIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT && setUseCombinedImageSamplerIndex( Bool32 useCombinedImageSamplerIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + useCombinedImageSamplerIndex = useCombinedImageSamplerIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT & setSamplerHeapOffset( uint32_t samplerHeapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapOffset = samplerHeapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT && setSamplerHeapOffset( uint32_t samplerHeapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapOffset = samplerHeapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT & setSamplerPushOffset( uint32_t samplerPushOffset_ ) & VULKAN_HPP_NOEXCEPT + { + samplerPushOffset = samplerPushOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT && setSamplerPushOffset( uint32_t samplerPushOffset_ ) && VULKAN_HPP_NOEXCEPT + { + samplerPushOffset = samplerPushOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT & setSamplerHeapIndexStride( uint32_t samplerHeapIndexStride_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapIndexStride = samplerHeapIndexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT && setSamplerHeapIndexStride( uint32_t samplerHeapIndexStride_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapIndexStride = samplerHeapIndexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT & setSamplerHeapArrayStride( uint32_t samplerHeapArrayStride_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapArrayStride = samplerHeapArrayStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourcePushIndexEXT && setSamplerHeapArrayStride( uint32_t samplerHeapArrayStride_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapArrayStride = samplerHeapArrayStride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorMappingSourcePushIndexEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourcePushIndexEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourcePushIndexEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourcePushIndexEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( heapOffset, + pushOffset, + heapIndexStride, + heapArrayStride, + pEmbeddedSampler, + useCombinedImageSamplerIndex, + samplerHeapOffset, + samplerPushOffset, + samplerHeapIndexStride, + samplerHeapArrayStride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorMappingSourcePushIndexEXT const & ) const = default; +#else + bool operator==( DescriptorMappingSourcePushIndexEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( heapOffset == rhs.heapOffset ) && ( pushOffset == rhs.pushOffset ) && ( heapIndexStride == rhs.heapIndexStride ) && + ( heapArrayStride == rhs.heapArrayStride ) && ( pEmbeddedSampler == rhs.pEmbeddedSampler ) && + ( useCombinedImageSamplerIndex == rhs.useCombinedImageSamplerIndex ) && ( samplerHeapOffset == rhs.samplerHeapOffset ) && + ( samplerPushOffset == rhs.samplerPushOffset ) && ( samplerHeapIndexStride == rhs.samplerHeapIndexStride ) && + ( samplerHeapArrayStride == rhs.samplerHeapArrayStride ); +# endif + } + + bool operator!=( DescriptorMappingSourcePushIndexEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t heapOffset = {}; + uint32_t pushOffset = {}; + uint32_t heapIndexStride = {}; + uint32_t heapArrayStride = {}; + SamplerCreateInfo const * pEmbeddedSampler = {}; + Bool32 useCombinedImageSamplerIndex = {}; + uint32_t samplerHeapOffset = {}; + uint32_t samplerPushOffset = {}; + uint32_t samplerHeapIndexStride = {}; + uint32_t samplerHeapArrayStride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorMappingSourcePushIndexEXT; + }; +#endif + + // wrapper struct for struct VkDescriptorMappingSourceIndirectIndexEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorMappingSourceIndirectIndexEXT.html + struct DescriptorMappingSourceIndirectIndexEXT + { + using NativeType = VkDescriptorMappingSourceIndirectIndexEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceIndirectIndexEXT( uint32_t heapOffset_ = {}, + uint32_t pushOffset_ = {}, + uint32_t addressOffset_ = {}, + uint32_t heapIndexStride_ = {}, + uint32_t heapArrayStride_ = {}, + SamplerCreateInfo const * pEmbeddedSampler_ = {}, + Bool32 useCombinedImageSamplerIndex_ = {}, + uint32_t samplerHeapOffset_ = {}, + uint32_t samplerPushOffset_ = {}, + uint32_t samplerAddressOffset_ = {}, + uint32_t samplerHeapIndexStride_ = {}, + uint32_t samplerHeapArrayStride_ = {} ) VULKAN_HPP_NOEXCEPT + : heapOffset{ heapOffset_ } + , pushOffset{ pushOffset_ } + , addressOffset{ addressOffset_ } + , heapIndexStride{ heapIndexStride_ } + , heapArrayStride{ heapArrayStride_ } + , pEmbeddedSampler{ pEmbeddedSampler_ } + , useCombinedImageSamplerIndex{ useCombinedImageSamplerIndex_ } + , samplerHeapOffset{ samplerHeapOffset_ } + , samplerPushOffset{ samplerPushOffset_ } + , samplerAddressOffset{ samplerAddressOffset_ } + , samplerHeapIndexStride{ samplerHeapIndexStride_ } + , samplerHeapArrayStride{ samplerHeapArrayStride_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceIndirectIndexEXT( DescriptorMappingSourceIndirectIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorMappingSourceIndirectIndexEXT( VkDescriptorMappingSourceIndirectIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorMappingSourceIndirectIndexEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorMappingSourceIndirectIndexEXT & operator=( DescriptorMappingSourceIndirectIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorMappingSourceIndirectIndexEXT & operator=( VkDescriptorMappingSourceIndirectIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setHeapOffset( uint32_t heapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setHeapOffset( uint32_t heapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setPushOffset( uint32_t pushOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pushOffset = pushOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setPushOffset( uint32_t pushOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pushOffset = pushOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setAddressOffset( uint32_t addressOffset_ ) & VULKAN_HPP_NOEXCEPT + { + addressOffset = addressOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setAddressOffset( uint32_t addressOffset_ ) && VULKAN_HPP_NOEXCEPT + { + addressOffset = addressOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setHeapIndexStride( uint32_t heapIndexStride_ ) & VULKAN_HPP_NOEXCEPT + { + heapIndexStride = heapIndexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setHeapIndexStride( uint32_t heapIndexStride_ ) && VULKAN_HPP_NOEXCEPT + { + heapIndexStride = heapIndexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setHeapArrayStride( uint32_t heapArrayStride_ ) & VULKAN_HPP_NOEXCEPT + { + heapArrayStride = heapArrayStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setHeapArrayStride( uint32_t heapArrayStride_ ) && VULKAN_HPP_NOEXCEPT + { + heapArrayStride = heapArrayStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setPEmbeddedSampler( SamplerCreateInfo const * pEmbeddedSampler_ ) & VULKAN_HPP_NOEXCEPT + { + pEmbeddedSampler = pEmbeddedSampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setPEmbeddedSampler( SamplerCreateInfo const * pEmbeddedSampler_ ) && VULKAN_HPP_NOEXCEPT + { + pEmbeddedSampler = pEmbeddedSampler_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setUseCombinedImageSamplerIndex( Bool32 useCombinedImageSamplerIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + useCombinedImageSamplerIndex = useCombinedImageSamplerIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setUseCombinedImageSamplerIndex( Bool32 useCombinedImageSamplerIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + useCombinedImageSamplerIndex = useCombinedImageSamplerIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setSamplerHeapOffset( uint32_t samplerHeapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapOffset = samplerHeapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setSamplerHeapOffset( uint32_t samplerHeapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapOffset = samplerHeapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setSamplerPushOffset( uint32_t samplerPushOffset_ ) & VULKAN_HPP_NOEXCEPT + { + samplerPushOffset = samplerPushOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setSamplerPushOffset( uint32_t samplerPushOffset_ ) && VULKAN_HPP_NOEXCEPT + { + samplerPushOffset = samplerPushOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setSamplerAddressOffset( uint32_t samplerAddressOffset_ ) & VULKAN_HPP_NOEXCEPT + { + samplerAddressOffset = samplerAddressOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setSamplerAddressOffset( uint32_t samplerAddressOffset_ ) && VULKAN_HPP_NOEXCEPT + { + samplerAddressOffset = samplerAddressOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setSamplerHeapIndexStride( uint32_t samplerHeapIndexStride_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapIndexStride = samplerHeapIndexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setSamplerHeapIndexStride( uint32_t samplerHeapIndexStride_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapIndexStride = samplerHeapIndexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT & setSamplerHeapArrayStride( uint32_t samplerHeapArrayStride_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapArrayStride = samplerHeapArrayStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexEXT && setSamplerHeapArrayStride( uint32_t samplerHeapArrayStride_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapArrayStride = samplerHeapArrayStride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorMappingSourceIndirectIndexEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceIndirectIndexEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceIndirectIndexEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceIndirectIndexEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( heapOffset, + pushOffset, + addressOffset, + heapIndexStride, + heapArrayStride, + pEmbeddedSampler, + useCombinedImageSamplerIndex, + samplerHeapOffset, + samplerPushOffset, + samplerAddressOffset, + samplerHeapIndexStride, + samplerHeapArrayStride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorMappingSourceIndirectIndexEXT const & ) const = default; +#else + bool operator==( DescriptorMappingSourceIndirectIndexEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( heapOffset == rhs.heapOffset ) && ( pushOffset == rhs.pushOffset ) && ( addressOffset == rhs.addressOffset ) && + ( heapIndexStride == rhs.heapIndexStride ) && ( heapArrayStride == rhs.heapArrayStride ) && ( pEmbeddedSampler == rhs.pEmbeddedSampler ) && + ( useCombinedImageSamplerIndex == rhs.useCombinedImageSamplerIndex ) && ( samplerHeapOffset == rhs.samplerHeapOffset ) && + ( samplerPushOffset == rhs.samplerPushOffset ) && ( samplerAddressOffset == rhs.samplerAddressOffset ) && + ( samplerHeapIndexStride == rhs.samplerHeapIndexStride ) && ( samplerHeapArrayStride == rhs.samplerHeapArrayStride ); +# endif + } + + bool operator!=( DescriptorMappingSourceIndirectIndexEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t heapOffset = {}; + uint32_t pushOffset = {}; + uint32_t addressOffset = {}; + uint32_t heapIndexStride = {}; + uint32_t heapArrayStride = {}; + SamplerCreateInfo const * pEmbeddedSampler = {}; + Bool32 useCombinedImageSamplerIndex = {}; + uint32_t samplerHeapOffset = {}; + uint32_t samplerPushOffset = {}; + uint32_t samplerAddressOffset = {}; + uint32_t samplerHeapIndexStride = {}; + uint32_t samplerHeapArrayStride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorMappingSourceIndirectIndexEXT; + }; +#endif + + // wrapper struct for struct VkDescriptorMappingSourceIndirectIndexArrayEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorMappingSourceIndirectIndexArrayEXT.html + struct DescriptorMappingSourceIndirectIndexArrayEXT + { + using NativeType = VkDescriptorMappingSourceIndirectIndexArrayEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceIndirectIndexArrayEXT( uint32_t heapOffset_ = {}, + uint32_t pushOffset_ = {}, + uint32_t addressOffset_ = {}, + uint32_t heapIndexStride_ = {}, + SamplerCreateInfo const * pEmbeddedSampler_ = {}, + Bool32 useCombinedImageSamplerIndex_ = {}, + uint32_t samplerHeapOffset_ = {}, + uint32_t samplerPushOffset_ = {}, + uint32_t samplerAddressOffset_ = {}, + uint32_t samplerHeapIndexStride_ = {} ) VULKAN_HPP_NOEXCEPT + : heapOffset{ heapOffset_ } + , pushOffset{ pushOffset_ } + , addressOffset{ addressOffset_ } + , heapIndexStride{ heapIndexStride_ } + , pEmbeddedSampler{ pEmbeddedSampler_ } + , useCombinedImageSamplerIndex{ useCombinedImageSamplerIndex_ } + , samplerHeapOffset{ samplerHeapOffset_ } + , samplerPushOffset{ samplerPushOffset_ } + , samplerAddressOffset{ samplerAddressOffset_ } + , samplerHeapIndexStride{ samplerHeapIndexStride_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceIndirectIndexArrayEXT( DescriptorMappingSourceIndirectIndexArrayEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorMappingSourceIndirectIndexArrayEXT( VkDescriptorMappingSourceIndirectIndexArrayEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorMappingSourceIndirectIndexArrayEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorMappingSourceIndirectIndexArrayEXT & operator=( DescriptorMappingSourceIndirectIndexArrayEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorMappingSourceIndirectIndexArrayEXT & operator=( VkDescriptorMappingSourceIndirectIndexArrayEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT & setHeapOffset( uint32_t heapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT && setHeapOffset( uint32_t heapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT & setPushOffset( uint32_t pushOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pushOffset = pushOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT && setPushOffset( uint32_t pushOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pushOffset = pushOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT & setAddressOffset( uint32_t addressOffset_ ) & VULKAN_HPP_NOEXCEPT + { + addressOffset = addressOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT && setAddressOffset( uint32_t addressOffset_ ) && VULKAN_HPP_NOEXCEPT + { + addressOffset = addressOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT & setHeapIndexStride( uint32_t heapIndexStride_ ) & VULKAN_HPP_NOEXCEPT + { + heapIndexStride = heapIndexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT && setHeapIndexStride( uint32_t heapIndexStride_ ) && VULKAN_HPP_NOEXCEPT + { + heapIndexStride = heapIndexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT & setPEmbeddedSampler( SamplerCreateInfo const * pEmbeddedSampler_ ) & + VULKAN_HPP_NOEXCEPT + { + pEmbeddedSampler = pEmbeddedSampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT && setPEmbeddedSampler( SamplerCreateInfo const * pEmbeddedSampler_ ) && + VULKAN_HPP_NOEXCEPT + { + pEmbeddedSampler = pEmbeddedSampler_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT & setUseCombinedImageSamplerIndex( Bool32 useCombinedImageSamplerIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + useCombinedImageSamplerIndex = useCombinedImageSamplerIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT && setUseCombinedImageSamplerIndex( Bool32 useCombinedImageSamplerIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + useCombinedImageSamplerIndex = useCombinedImageSamplerIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT & setSamplerHeapOffset( uint32_t samplerHeapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapOffset = samplerHeapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT && setSamplerHeapOffset( uint32_t samplerHeapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapOffset = samplerHeapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT & setSamplerPushOffset( uint32_t samplerPushOffset_ ) & VULKAN_HPP_NOEXCEPT + { + samplerPushOffset = samplerPushOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT && setSamplerPushOffset( uint32_t samplerPushOffset_ ) && VULKAN_HPP_NOEXCEPT + { + samplerPushOffset = samplerPushOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT & setSamplerAddressOffset( uint32_t samplerAddressOffset_ ) & VULKAN_HPP_NOEXCEPT + { + samplerAddressOffset = samplerAddressOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT && setSamplerAddressOffset( uint32_t samplerAddressOffset_ ) && VULKAN_HPP_NOEXCEPT + { + samplerAddressOffset = samplerAddressOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT & setSamplerHeapIndexStride( uint32_t samplerHeapIndexStride_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapIndexStride = samplerHeapIndexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectIndexArrayEXT && setSamplerHeapIndexStride( uint32_t samplerHeapIndexStride_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapIndexStride = samplerHeapIndexStride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorMappingSourceIndirectIndexArrayEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceIndirectIndexArrayEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceIndirectIndexArrayEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceIndirectIndexArrayEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( heapOffset, + pushOffset, + addressOffset, + heapIndexStride, + pEmbeddedSampler, + useCombinedImageSamplerIndex, + samplerHeapOffset, + samplerPushOffset, + samplerAddressOffset, + samplerHeapIndexStride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorMappingSourceIndirectIndexArrayEXT const & ) const = default; +#else + bool operator==( DescriptorMappingSourceIndirectIndexArrayEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( heapOffset == rhs.heapOffset ) && ( pushOffset == rhs.pushOffset ) && ( addressOffset == rhs.addressOffset ) && + ( heapIndexStride == rhs.heapIndexStride ) && ( pEmbeddedSampler == rhs.pEmbeddedSampler ) && + ( useCombinedImageSamplerIndex == rhs.useCombinedImageSamplerIndex ) && ( samplerHeapOffset == rhs.samplerHeapOffset ) && + ( samplerPushOffset == rhs.samplerPushOffset ) && ( samplerAddressOffset == rhs.samplerAddressOffset ) && + ( samplerHeapIndexStride == rhs.samplerHeapIndexStride ); +# endif + } + + bool operator!=( DescriptorMappingSourceIndirectIndexArrayEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t heapOffset = {}; + uint32_t pushOffset = {}; + uint32_t addressOffset = {}; + uint32_t heapIndexStride = {}; + SamplerCreateInfo const * pEmbeddedSampler = {}; + Bool32 useCombinedImageSamplerIndex = {}; + uint32_t samplerHeapOffset = {}; + uint32_t samplerPushOffset = {}; + uint32_t samplerAddressOffset = {}; + uint32_t samplerHeapIndexStride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorMappingSourceIndirectIndexArrayEXT; + }; +#endif + + // wrapper struct for struct VkDescriptorMappingSourceHeapDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorMappingSourceHeapDataEXT.html + struct DescriptorMappingSourceHeapDataEXT + { + using NativeType = VkDescriptorMappingSourceHeapDataEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceHeapDataEXT( uint32_t heapOffset_ = {}, uint32_t pushOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : heapOffset{ heapOffset_ } + , pushOffset{ pushOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceHeapDataEXT( DescriptorMappingSourceHeapDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorMappingSourceHeapDataEXT( VkDescriptorMappingSourceHeapDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorMappingSourceHeapDataEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorMappingSourceHeapDataEXT & operator=( DescriptorMappingSourceHeapDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorMappingSourceHeapDataEXT & operator=( VkDescriptorMappingSourceHeapDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceHeapDataEXT & setHeapOffset( uint32_t heapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceHeapDataEXT && setHeapOffset( uint32_t heapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceHeapDataEXT & setPushOffset( uint32_t pushOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pushOffset = pushOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceHeapDataEXT && setPushOffset( uint32_t pushOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pushOffset = pushOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorMappingSourceHeapDataEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceHeapDataEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceHeapDataEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceHeapDataEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( heapOffset, pushOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorMappingSourceHeapDataEXT const & ) const = default; +#else + bool operator==( DescriptorMappingSourceHeapDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( heapOffset == rhs.heapOffset ) && ( pushOffset == rhs.pushOffset ); +# endif + } + + bool operator!=( DescriptorMappingSourceHeapDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t heapOffset = {}; + uint32_t pushOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorMappingSourceHeapDataEXT; + }; +#endif + + // wrapper struct for struct VkDescriptorMappingSourceIndirectAddressEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorMappingSourceIndirectAddressEXT.html + struct DescriptorMappingSourceIndirectAddressEXT + { + using NativeType = VkDescriptorMappingSourceIndirectAddressEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceIndirectAddressEXT( uint32_t pushOffset_ = {}, uint32_t addressOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : pushOffset{ pushOffset_ } + , addressOffset{ addressOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceIndirectAddressEXT( DescriptorMappingSourceIndirectAddressEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorMappingSourceIndirectAddressEXT( VkDescriptorMappingSourceIndirectAddressEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorMappingSourceIndirectAddressEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorMappingSourceIndirectAddressEXT & operator=( DescriptorMappingSourceIndirectAddressEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorMappingSourceIndirectAddressEXT & operator=( VkDescriptorMappingSourceIndirectAddressEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectAddressEXT & setPushOffset( uint32_t pushOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pushOffset = pushOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectAddressEXT && setPushOffset( uint32_t pushOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pushOffset = pushOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectAddressEXT & setAddressOffset( uint32_t addressOffset_ ) & VULKAN_HPP_NOEXCEPT + { + addressOffset = addressOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceIndirectAddressEXT && setAddressOffset( uint32_t addressOffset_ ) && VULKAN_HPP_NOEXCEPT + { + addressOffset = addressOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorMappingSourceIndirectAddressEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceIndirectAddressEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceIndirectAddressEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceIndirectAddressEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( pushOffset, addressOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorMappingSourceIndirectAddressEXT const & ) const = default; +#else + bool operator==( DescriptorMappingSourceIndirectAddressEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( pushOffset == rhs.pushOffset ) && ( addressOffset == rhs.addressOffset ); +# endif + } + + bool operator!=( DescriptorMappingSourceIndirectAddressEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t pushOffset = {}; + uint32_t addressOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorMappingSourceIndirectAddressEXT; + }; +#endif + + // wrapper struct for struct VkDescriptorMappingSourceShaderRecordIndexEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorMappingSourceShaderRecordIndexEXT.html + struct DescriptorMappingSourceShaderRecordIndexEXT + { + using NativeType = VkDescriptorMappingSourceShaderRecordIndexEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceShaderRecordIndexEXT( uint32_t heapOffset_ = {}, + uint32_t shaderRecordOffset_ = {}, + uint32_t heapIndexStride_ = {}, + uint32_t heapArrayStride_ = {}, + SamplerCreateInfo const * pEmbeddedSampler_ = {}, + Bool32 useCombinedImageSamplerIndex_ = {}, + uint32_t samplerHeapOffset_ = {}, + uint32_t samplerShaderRecordOffset_ = {}, + uint32_t samplerHeapIndexStride_ = {}, + uint32_t samplerHeapArrayStride_ = {} ) VULKAN_HPP_NOEXCEPT + : heapOffset{ heapOffset_ } + , shaderRecordOffset{ shaderRecordOffset_ } + , heapIndexStride{ heapIndexStride_ } + , heapArrayStride{ heapArrayStride_ } + , pEmbeddedSampler{ pEmbeddedSampler_ } + , useCombinedImageSamplerIndex{ useCombinedImageSamplerIndex_ } + , samplerHeapOffset{ samplerHeapOffset_ } + , samplerShaderRecordOffset{ samplerShaderRecordOffset_ } + , samplerHeapIndexStride{ samplerHeapIndexStride_ } + , samplerHeapArrayStride{ samplerHeapArrayStride_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorMappingSourceShaderRecordIndexEXT( DescriptorMappingSourceShaderRecordIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorMappingSourceShaderRecordIndexEXT( VkDescriptorMappingSourceShaderRecordIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorMappingSourceShaderRecordIndexEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorMappingSourceShaderRecordIndexEXT & operator=( DescriptorMappingSourceShaderRecordIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorMappingSourceShaderRecordIndexEXT & operator=( VkDescriptorMappingSourceShaderRecordIndexEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT & setHeapOffset( uint32_t heapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT && setHeapOffset( uint32_t heapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + heapOffset = heapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT & setShaderRecordOffset( uint32_t shaderRecordOffset_ ) & VULKAN_HPP_NOEXCEPT + { + shaderRecordOffset = shaderRecordOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT && setShaderRecordOffset( uint32_t shaderRecordOffset_ ) && VULKAN_HPP_NOEXCEPT + { + shaderRecordOffset = shaderRecordOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT & setHeapIndexStride( uint32_t heapIndexStride_ ) & VULKAN_HPP_NOEXCEPT + { + heapIndexStride = heapIndexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT && setHeapIndexStride( uint32_t heapIndexStride_ ) && VULKAN_HPP_NOEXCEPT + { + heapIndexStride = heapIndexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT & setHeapArrayStride( uint32_t heapArrayStride_ ) & VULKAN_HPP_NOEXCEPT + { + heapArrayStride = heapArrayStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT && setHeapArrayStride( uint32_t heapArrayStride_ ) && VULKAN_HPP_NOEXCEPT + { + heapArrayStride = heapArrayStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT & setPEmbeddedSampler( SamplerCreateInfo const * pEmbeddedSampler_ ) & + VULKAN_HPP_NOEXCEPT + { + pEmbeddedSampler = pEmbeddedSampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT && setPEmbeddedSampler( SamplerCreateInfo const * pEmbeddedSampler_ ) && + VULKAN_HPP_NOEXCEPT + { + pEmbeddedSampler = pEmbeddedSampler_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT & setUseCombinedImageSamplerIndex( Bool32 useCombinedImageSamplerIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + useCombinedImageSamplerIndex = useCombinedImageSamplerIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT && setUseCombinedImageSamplerIndex( Bool32 useCombinedImageSamplerIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + useCombinedImageSamplerIndex = useCombinedImageSamplerIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT & setSamplerHeapOffset( uint32_t samplerHeapOffset_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapOffset = samplerHeapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT && setSamplerHeapOffset( uint32_t samplerHeapOffset_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapOffset = samplerHeapOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT & setSamplerShaderRecordOffset( uint32_t samplerShaderRecordOffset_ ) & + VULKAN_HPP_NOEXCEPT + { + samplerShaderRecordOffset = samplerShaderRecordOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT && setSamplerShaderRecordOffset( uint32_t samplerShaderRecordOffset_ ) && + VULKAN_HPP_NOEXCEPT + { + samplerShaderRecordOffset = samplerShaderRecordOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT & setSamplerHeapIndexStride( uint32_t samplerHeapIndexStride_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapIndexStride = samplerHeapIndexStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT && setSamplerHeapIndexStride( uint32_t samplerHeapIndexStride_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapIndexStride = samplerHeapIndexStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT & setSamplerHeapArrayStride( uint32_t samplerHeapArrayStride_ ) & VULKAN_HPP_NOEXCEPT + { + samplerHeapArrayStride = samplerHeapArrayStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceShaderRecordIndexEXT && setSamplerHeapArrayStride( uint32_t samplerHeapArrayStride_ ) && VULKAN_HPP_NOEXCEPT + { + samplerHeapArrayStride = samplerHeapArrayStride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorMappingSourceShaderRecordIndexEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceShaderRecordIndexEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceShaderRecordIndexEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceShaderRecordIndexEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( heapOffset, + shaderRecordOffset, + heapIndexStride, + heapArrayStride, + pEmbeddedSampler, + useCombinedImageSamplerIndex, + samplerHeapOffset, + samplerShaderRecordOffset, + samplerHeapIndexStride, + samplerHeapArrayStride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorMappingSourceShaderRecordIndexEXT const & ) const = default; +#else + bool operator==( DescriptorMappingSourceShaderRecordIndexEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( heapOffset == rhs.heapOffset ) && ( shaderRecordOffset == rhs.shaderRecordOffset ) && ( heapIndexStride == rhs.heapIndexStride ) && + ( heapArrayStride == rhs.heapArrayStride ) && ( pEmbeddedSampler == rhs.pEmbeddedSampler ) && + ( useCombinedImageSamplerIndex == rhs.useCombinedImageSamplerIndex ) && ( samplerHeapOffset == rhs.samplerHeapOffset ) && + ( samplerShaderRecordOffset == rhs.samplerShaderRecordOffset ) && ( samplerHeapIndexStride == rhs.samplerHeapIndexStride ) && + ( samplerHeapArrayStride == rhs.samplerHeapArrayStride ); +# endif + } + + bool operator!=( DescriptorMappingSourceShaderRecordIndexEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t heapOffset = {}; + uint32_t shaderRecordOffset = {}; + uint32_t heapIndexStride = {}; + uint32_t heapArrayStride = {}; + SamplerCreateInfo const * pEmbeddedSampler = {}; + Bool32 useCombinedImageSamplerIndex = {}; + uint32_t samplerHeapOffset = {}; + uint32_t samplerShaderRecordOffset = {}; + uint32_t samplerHeapIndexStride = {}; + uint32_t samplerHeapArrayStride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorMappingSourceShaderRecordIndexEXT; + }; +#endif + + union DescriptorMappingSourceDataEXT + { + using NativeType = VkDescriptorMappingSourceDataEXT; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT( DescriptorMappingSourceConstantOffsetEXT constantOffset_ = {} ) : constantOffset( constantOffset_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT( DescriptorMappingSourcePushIndexEXT pushIndex_ ) : pushIndex( pushIndex_ ) {} + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT( DescriptorMappingSourceIndirectIndexEXT indirectIndex_ ) : indirectIndex( indirectIndex_ ) {} + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT( DescriptorMappingSourceIndirectIndexArrayEXT indirectIndexArray_ ) + : indirectIndexArray( indirectIndexArray_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT( DescriptorMappingSourceHeapDataEXT heapData_ ) : heapData( heapData_ ) {} + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT( uint32_t uint32_t_ ) : pushDataOffset( uint32_t_ ) {} + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT( DescriptorMappingSourceIndirectAddressEXT indirectAddress_ ) : indirectAddress( indirectAddress_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT( DescriptorMappingSourceShaderRecordIndexEXT shaderRecordIndex_ ) + : shaderRecordIndex( shaderRecordIndex_ ) + { + } +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setConstantOffset( DescriptorMappingSourceConstantOffsetEXT const & constantOffset_ ) & + VULKAN_HPP_NOEXCEPT + { + constantOffset = constantOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && setConstantOffset( DescriptorMappingSourceConstantOffsetEXT const & constantOffset_ ) && + VULKAN_HPP_NOEXCEPT + { + constantOffset = constantOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setPushIndex( DescriptorMappingSourcePushIndexEXT const & pushIndex_ ) & VULKAN_HPP_NOEXCEPT + { + pushIndex = pushIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && setPushIndex( DescriptorMappingSourcePushIndexEXT const & pushIndex_ ) && VULKAN_HPP_NOEXCEPT + { + pushIndex = pushIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setIndirectIndex( DescriptorMappingSourceIndirectIndexEXT const & indirectIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + indirectIndex = indirectIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && setIndirectIndex( DescriptorMappingSourceIndirectIndexEXT const & indirectIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + indirectIndex = indirectIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setIndirectIndexArray( DescriptorMappingSourceIndirectIndexArrayEXT const & indirectIndexArray_ ) & + VULKAN_HPP_NOEXCEPT + { + indirectIndexArray = indirectIndexArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && + setIndirectIndexArray( DescriptorMappingSourceIndirectIndexArrayEXT const & indirectIndexArray_ ) && + VULKAN_HPP_NOEXCEPT + { + indirectIndexArray = indirectIndexArray_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setHeapData( DescriptorMappingSourceHeapDataEXT const & heapData_ ) & VULKAN_HPP_NOEXCEPT + { + heapData = heapData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && setHeapData( DescriptorMappingSourceHeapDataEXT const & heapData_ ) && VULKAN_HPP_NOEXCEPT + { + heapData = heapData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setPushDataOffset( uint32_t pushDataOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pushDataOffset = pushDataOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && setPushDataOffset( uint32_t pushDataOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pushDataOffset = pushDataOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setPushAddressOffset( uint32_t pushAddressOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pushAddressOffset = pushAddressOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && setPushAddressOffset( uint32_t pushAddressOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pushAddressOffset = pushAddressOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setIndirectAddress( DescriptorMappingSourceIndirectAddressEXT const & indirectAddress_ ) & + VULKAN_HPP_NOEXCEPT + { + indirectAddress = indirectAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && setIndirectAddress( DescriptorMappingSourceIndirectAddressEXT const & indirectAddress_ ) && + VULKAN_HPP_NOEXCEPT + { + indirectAddress = indirectAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setShaderRecordIndex( DescriptorMappingSourceShaderRecordIndexEXT const & shaderRecordIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderRecordIndex = shaderRecordIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && setShaderRecordIndex( DescriptorMappingSourceShaderRecordIndexEXT const & shaderRecordIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderRecordIndex = shaderRecordIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setShaderRecordDataOffset( uint32_t shaderRecordDataOffset_ ) & VULKAN_HPP_NOEXCEPT + { + shaderRecordDataOffset = shaderRecordDataOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && setShaderRecordDataOffset( uint32_t shaderRecordDataOffset_ ) && VULKAN_HPP_NOEXCEPT + { + shaderRecordDataOffset = shaderRecordDataOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT & setShaderRecordAddressOffset( uint32_t shaderRecordAddressOffset_ ) & VULKAN_HPP_NOEXCEPT + { + shaderRecordAddressOffset = shaderRecordAddressOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorMappingSourceDataEXT && setShaderRecordAddressOffset( uint32_t shaderRecordAddressOffset_ ) && VULKAN_HPP_NOEXCEPT + { + shaderRecordAddressOffset = shaderRecordAddressOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorMappingSourceDataEXT const &() const + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorMappingSourceDataEXT &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + DescriptorMappingSourceConstantOffsetEXT constantOffset; + DescriptorMappingSourcePushIndexEXT pushIndex; + DescriptorMappingSourceIndirectIndexEXT indirectIndex; + DescriptorMappingSourceIndirectIndexArrayEXT indirectIndexArray; + DescriptorMappingSourceHeapDataEXT heapData; + uint32_t pushDataOffset; + uint32_t pushAddressOffset; + DescriptorMappingSourceIndirectAddressEXT indirectAddress; + DescriptorMappingSourceShaderRecordIndexEXT shaderRecordIndex; + uint32_t shaderRecordDataOffset; + uint32_t shaderRecordAddressOffset; +#else + VkDescriptorMappingSourceConstantOffsetEXT constantOffset; + VkDescriptorMappingSourcePushIndexEXT pushIndex; + VkDescriptorMappingSourceIndirectIndexEXT indirectIndex; + VkDescriptorMappingSourceIndirectIndexArrayEXT indirectIndexArray; + VkDescriptorMappingSourceHeapDataEXT heapData; + uint32_t pushDataOffset; + uint32_t pushAddressOffset; + VkDescriptorMappingSourceIndirectAddressEXT indirectAddress; + VkDescriptorMappingSourceShaderRecordIndexEXT shaderRecordIndex; + uint32_t shaderRecordDataOffset; + uint32_t shaderRecordAddressOffset; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorMappingSourceDataEXT; + }; +#endif + + // wrapper struct for struct VkDescriptorPoolSize, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPoolSize.html + struct DescriptorPoolSize + { + using NativeType = VkDescriptorPoolSize; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = {} ) VULKAN_HPP_NOEXCEPT + : type{ type_ } + , descriptorCount{ descriptorCount_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorPoolSize( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorPoolSize( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT : DescriptorPoolSize( *reinterpret_cast( &rhs ) ) {} + + DescriptorPoolSize & operator=( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorPoolSize & operator=( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & setType( DescriptorType type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize && setType( DescriptorType type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & setDescriptorCount( uint32_t descriptorCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize && setDescriptorCount( uint32_t descriptorCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorPoolSize const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorPoolSize &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorPoolSize const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorPoolSize *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( type, descriptorCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorPoolSize const & ) const = default; +#else + bool operator==( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( type == rhs.type ) && ( descriptorCount == rhs.descriptorCount ); +# endif + } + + bool operator!=( DescriptorPoolSize const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DescriptorType type = DescriptorType::eSampler; + uint32_t descriptorCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorPoolSize; + }; +#endif + + // wrapper struct for struct VkDescriptorPoolCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPoolCreateInfo.html + struct DescriptorPoolCreateInfo + { + using NativeType = VkDescriptorPoolCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorPoolCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = {}, + uint32_t maxSets_ = {}, + uint32_t poolSizeCount_ = {}, + DescriptorPoolSize const * pPoolSizes_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , maxSets{ maxSets_ } + , poolSizeCount{ poolSizeCount_ } + , pPoolSizes{ pPoolSizes_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorPoolCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_, + uint32_t maxSets_, + ArrayProxyNoTemporaries const & poolSizes_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), flags( flags_ ), maxSets( maxSets_ ), poolSizeCount( static_cast( poolSizes_.size() ) ), pPoolSizes( poolSizes_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DescriptorPoolCreateInfo & operator=( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorPoolCreateInfo & operator=( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setFlags( DescriptorPoolCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo && setFlags( DescriptorPoolCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setMaxSets( uint32_t maxSets_ ) & VULKAN_HPP_NOEXCEPT + { + maxSets = maxSets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo && setMaxSets( uint32_t maxSets_ ) && VULKAN_HPP_NOEXCEPT + { + maxSets = maxSets_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPoolSizeCount( uint32_t poolSizeCount_ ) & VULKAN_HPP_NOEXCEPT + { + poolSizeCount = poolSizeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo && setPoolSizeCount( uint32_t poolSizeCount_ ) && VULKAN_HPP_NOEXCEPT + { + poolSizeCount = poolSizeCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & setPPoolSizes( DescriptorPoolSize const * pPoolSizes_ ) & VULKAN_HPP_NOEXCEPT + { + pPoolSizes = pPoolSizes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo && setPPoolSizes( DescriptorPoolSize const * pPoolSizes_ ) && VULKAN_HPP_NOEXCEPT + { + pPoolSizes = pPoolSizes_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorPoolCreateInfo & setPoolSizes( ArrayProxyNoTemporaries const & poolSizes_ ) VULKAN_HPP_NOEXCEPT + { + poolSizeCount = static_cast( poolSizes_.size() ); + pPoolSizes = poolSizes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorPoolCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorPoolCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorPoolCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, maxSets, poolSizeCount, pPoolSizes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorPoolCreateInfo const & ) const = default; +#else + bool operator==( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( maxSets == rhs.maxSets ) && + ( poolSizeCount == rhs.poolSizeCount ) && ( pPoolSizes == rhs.pPoolSizes ); +# endif + } + + bool operator!=( DescriptorPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorPoolCreateInfo; + void const * pNext = {}; + DescriptorPoolCreateFlags flags = {}; + uint32_t maxSets = {}; + uint32_t poolSizeCount = {}; + DescriptorPoolSize const * pPoolSizes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorPoolCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorPoolCreateInfo; + }; + + // wrapper struct for struct VkDescriptorPoolInlineUniformBlockCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorPoolInlineUniformBlockCreateInfo.html + struct DescriptorPoolInlineUniformBlockCreateInfo + { + using NativeType = VkDescriptorPoolInlineUniformBlockCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfo( uint32_t maxInlineUniformBlockBindings_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxInlineUniformBlockBindings{ maxInlineUniformBlockBindings_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfo( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorPoolInlineUniformBlockCreateInfo( VkDescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorPoolInlineUniformBlockCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorPoolInlineUniformBlockCreateInfo & operator=( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorPoolInlineUniformBlockCreateInfo & operator=( VkDescriptorPoolInlineUniformBlockCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo & setMaxInlineUniformBlockBindings( uint32_t maxInlineUniformBlockBindings_ ) & + VULKAN_HPP_NOEXCEPT + { + maxInlineUniformBlockBindings = maxInlineUniformBlockBindings_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfo && setMaxInlineUniformBlockBindings( uint32_t maxInlineUniformBlockBindings_ ) && + VULKAN_HPP_NOEXCEPT + { + maxInlineUniformBlockBindings = maxInlineUniformBlockBindings_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorPoolInlineUniformBlockCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorPoolInlineUniformBlockCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorPoolInlineUniformBlockCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorPoolInlineUniformBlockCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxInlineUniformBlockBindings ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorPoolInlineUniformBlockCreateInfo const & ) const = default; +#else + bool operator==( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxInlineUniformBlockBindings == rhs.maxInlineUniformBlockBindings ); +# endif + } + + bool operator!=( DescriptorPoolInlineUniformBlockCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfo; + void const * pNext = {}; + uint32_t maxInlineUniformBlockBindings = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorPoolInlineUniformBlockCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorPoolInlineUniformBlockCreateInfo; + }; + + using DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo; + + // wrapper struct for struct VkDescriptorSetAllocateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetAllocateInfo.html + struct DescriptorSetAllocateInfo + { + using NativeType = VkDescriptorSetAllocateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetAllocateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = {}, + uint32_t descriptorSetCount_ = {}, + DescriptorSetLayout const * pSetLayouts_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorPool{ descriptorPool_ } + , descriptorSetCount{ descriptorSetCount_ } + , pSetLayouts{ pSetLayouts_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetAllocateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetAllocateInfo( DescriptorPool descriptorPool_, + ArrayProxyNoTemporaries const & setLayouts_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), descriptorPool( descriptorPool_ ), descriptorSetCount( static_cast( setLayouts_.size() ) ), pSetLayouts( setLayouts_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DescriptorSetAllocateInfo & operator=( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorSetAllocateInfo & operator=( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setDescriptorPool( DescriptorPool descriptorPool_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorPool = descriptorPool_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo && setDescriptorPool( DescriptorPool descriptorPool_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorPool = descriptorPool_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = descriptorSetCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo && setDescriptorSetCount( uint32_t descriptorSetCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = descriptorSetCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & setPSetLayouts( DescriptorSetLayout const * pSetLayouts_ ) & VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo && setPSetLayouts( DescriptorSetLayout const * pSetLayouts_ ) && VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetAllocateInfo & setSetLayouts( ArrayProxyNoTemporaries const & setLayouts_ ) VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = static_cast( setLayouts_.size() ); + pSetLayouts = setLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorSetAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetAllocateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorSetAllocateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorPool, descriptorSetCount, pSetLayouts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetAllocateInfo const & ) const = default; +#else + bool operator==( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorPool == rhs.descriptorPool ) && ( descriptorSetCount == rhs.descriptorSetCount ) && + ( pSetLayouts == rhs.pSetLayouts ); +# endif + } + + bool operator!=( DescriptorSetAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorSetAllocateInfo; + void const * pNext = {}; + DescriptorPool descriptorPool = {}; + uint32_t descriptorSetCount = {}; + DescriptorSetLayout const * pSetLayouts = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorSetAllocateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorSetAllocateInfo; + }; + + // wrapper struct for struct VkDescriptorSetAndBindingMappingEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetAndBindingMappingEXT.html + struct DescriptorSetAndBindingMappingEXT + { + using NativeType = VkDescriptorSetAndBindingMappingEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetAndBindingMappingEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT( uint32_t descriptorSet_ = {}, + uint32_t firstBinding_ = {}, + uint32_t bindingCount_ = {}, + SpirvResourceTypeFlagsEXT resourceMask_ = {}, + DescriptorMappingSourceEXT source_ = DescriptorMappingSourceEXT::eHeapWithConstantOffset, + DescriptorMappingSourceDataEXT sourceData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorSet{ descriptorSet_ } + , firstBinding{ firstBinding_ } + , bindingCount{ bindingCount_ } + , resourceMask{ resourceMask_ } + , source{ source_ } + , sourceData{ sourceData_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT( DescriptorSetAndBindingMappingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetAndBindingMappingEXT( VkDescriptorSetAndBindingMappingEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetAndBindingMappingEXT( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorSetAndBindingMappingEXT & operator=( DescriptorSetAndBindingMappingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorSetAndBindingMappingEXT & operator=( VkDescriptorSetAndBindingMappingEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT & setDescriptorSet( uint32_t descriptorSet_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorSet = descriptorSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT && setDescriptorSet( uint32_t descriptorSet_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorSet = descriptorSet_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT & setFirstBinding( uint32_t firstBinding_ ) & VULKAN_HPP_NOEXCEPT + { + firstBinding = firstBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT && setFirstBinding( uint32_t firstBinding_ ) && VULKAN_HPP_NOEXCEPT + { + firstBinding = firstBinding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT & setBindingCount( uint32_t bindingCount_ ) & VULKAN_HPP_NOEXCEPT + { + bindingCount = bindingCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT && setBindingCount( uint32_t bindingCount_ ) && VULKAN_HPP_NOEXCEPT + { + bindingCount = bindingCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT & setResourceMask( SpirvResourceTypeFlagsEXT resourceMask_ ) & VULKAN_HPP_NOEXCEPT + { + resourceMask = resourceMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT && setResourceMask( SpirvResourceTypeFlagsEXT resourceMask_ ) && VULKAN_HPP_NOEXCEPT + { + resourceMask = resourceMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT & setSource( DescriptorMappingSourceEXT source_ ) & VULKAN_HPP_NOEXCEPT + { + source = source_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT && setSource( DescriptorMappingSourceEXT source_ ) && VULKAN_HPP_NOEXCEPT + { + source = source_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT & setSourceData( DescriptorMappingSourceDataEXT const & sourceData_ ) & VULKAN_HPP_NOEXCEPT + { + sourceData = sourceData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetAndBindingMappingEXT && setSourceData( DescriptorMappingSourceDataEXT const & sourceData_ ) && VULKAN_HPP_NOEXCEPT + { + sourceData = sourceData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorSetAndBindingMappingEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetAndBindingMappingEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetAndBindingMappingEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorSetAndBindingMappingEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorSet, firstBinding, bindingCount, resourceMask, source, sourceData ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorSetAndBindingMappingEXT; + void const * pNext = {}; + uint32_t descriptorSet = {}; + uint32_t firstBinding = {}; + uint32_t bindingCount = {}; + SpirvResourceTypeFlagsEXT resourceMask = {}; + DescriptorMappingSourceEXT source = DescriptorMappingSourceEXT::eHeapWithConstantOffset; + DescriptorMappingSourceDataEXT sourceData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorSetAndBindingMappingEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorSetAndBindingMappingEXT; + }; + + // wrapper struct for struct VkDescriptorSetBindingReferenceVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetBindingReferenceVALVE.html + struct DescriptorSetBindingReferenceVALVE + { + using NativeType = VkDescriptorSetBindingReferenceVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetBindingReferenceVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetBindingReferenceVALVE( DescriptorSetLayout descriptorSetLayout_ = {}, + uint32_t binding_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorSetLayout{ descriptorSetLayout_ } + , binding{ binding_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorSetBindingReferenceVALVE( DescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetBindingReferenceVALVE( VkDescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetBindingReferenceVALVE( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorSetBindingReferenceVALVE & operator=( DescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorSetBindingReferenceVALVE & operator=( VkDescriptorSetBindingReferenceVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE & setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorSetLayout = descriptorSetLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE && setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorSetLayout = descriptorSetLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE & setBinding( uint32_t binding_ ) & VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetBindingReferenceVALVE && setBinding( uint32_t binding_ ) && VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorSetBindingReferenceVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetBindingReferenceVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetBindingReferenceVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorSetBindingReferenceVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorSetLayout, binding ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetBindingReferenceVALVE const & ) const = default; +#else + bool operator==( DescriptorSetBindingReferenceVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSetLayout == rhs.descriptorSetLayout ) && ( binding == rhs.binding ); +# endif + } + + bool operator!=( DescriptorSetBindingReferenceVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorSetBindingReferenceVALVE; + void const * pNext = {}; + DescriptorSetLayout descriptorSetLayout = {}; + uint32_t binding = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorSetBindingReferenceVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorSetBindingReferenceVALVE; + }; + + // wrapper struct for struct VkDescriptorSetLayoutBinding, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBinding.html + struct DescriptorSetLayoutBinding + { + using NativeType = VkDescriptorSetLayoutBinding; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding( uint32_t binding_ = {}, + DescriptorType descriptorType_ = DescriptorType::eSampler, + uint32_t descriptorCount_ = {}, + ShaderStageFlags stageFlags_ = {}, + Sampler const * pImmutableSamplers_ = {} ) VULKAN_HPP_NOEXCEPT + : binding{ binding_ } + , descriptorType{ descriptorType_ } + , descriptorCount{ descriptorCount_ } + , stageFlags{ stageFlags_ } + , pImmutableSamplers{ pImmutableSamplers_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetLayoutBinding( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutBinding( uint32_t binding_, + DescriptorType descriptorType_, + ShaderStageFlags stageFlags_, + ArrayProxyNoTemporaries const & immutableSamplers_ ) + : binding( binding_ ) + , descriptorType( descriptorType_ ) + , descriptorCount( static_cast( immutableSamplers_.size() ) ) + , stageFlags( stageFlags_ ) + , pImmutableSamplers( immutableSamplers_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DescriptorSetLayoutBinding & operator=( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorSetLayoutBinding & operator=( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setBinding( uint32_t binding_ ) & VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding && setBinding( uint32_t binding_ ) && VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setDescriptorType( DescriptorType descriptorType_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding && setDescriptorType( DescriptorType descriptorType_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setDescriptorCount( uint32_t descriptorCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding && setDescriptorCount( uint32_t descriptorCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setStageFlags( ShaderStageFlags stageFlags_ ) & VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding && setStageFlags( ShaderStageFlags stageFlags_ ) && VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & setPImmutableSamplers( Sampler const * pImmutableSamplers_ ) & VULKAN_HPP_NOEXCEPT + { + pImmutableSamplers = pImmutableSamplers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding && setPImmutableSamplers( Sampler const * pImmutableSamplers_ ) && VULKAN_HPP_NOEXCEPT + { + pImmutableSamplers = pImmutableSamplers_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutBinding & setImmutableSamplers( ArrayProxyNoTemporaries const & immutableSamplers_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = static_cast( immutableSamplers_.size() ); + pImmutableSamplers = immutableSamplers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorSetLayoutBinding const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutBinding &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutBinding const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutBinding *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( binding, descriptorType, descriptorCount, stageFlags, pImmutableSamplers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetLayoutBinding const & ) const = default; +#else + bool operator==( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( binding == rhs.binding ) && ( descriptorType == rhs.descriptorType ) && ( descriptorCount == rhs.descriptorCount ) && + ( stageFlags == rhs.stageFlags ) && ( pImmutableSamplers == rhs.pImmutableSamplers ); +# endif + } + + bool operator!=( DescriptorSetLayoutBinding const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t binding = {}; + DescriptorType descriptorType = DescriptorType::eSampler; + uint32_t descriptorCount = {}; + ShaderStageFlags stageFlags = {}; + Sampler const * pImmutableSamplers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorSetLayoutBinding; + }; +#endif + + // wrapper struct for struct VkDescriptorSetLayoutBindingFlagsCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayoutBindingFlagsCreateInfo.html + struct DescriptorSetLayoutBindingFlagsCreateInfo + { + using NativeType = VkDescriptorSetLayoutBindingFlagsCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo( uint32_t bindingCount_ = {}, + DescriptorBindingFlags const * pBindingFlags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , bindingCount{ bindingCount_ } + , pBindingFlags{ pBindingFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutBindingFlagsCreateInfo( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetLayoutBindingFlagsCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutBindingFlagsCreateInfo( ArrayProxyNoTemporaries const & bindingFlags_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), bindingCount( static_cast( bindingFlags_.size() ) ), pBindingFlags( bindingFlags_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DescriptorSetLayoutBindingFlagsCreateInfo & operator=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorSetLayoutBindingFlagsCreateInfo & operator=( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & setBindingCount( uint32_t bindingCount_ ) & VULKAN_HPP_NOEXCEPT + { + bindingCount = bindingCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo && setBindingCount( uint32_t bindingCount_ ) && VULKAN_HPP_NOEXCEPT + { + bindingCount = bindingCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & setPBindingFlags( DescriptorBindingFlags const * pBindingFlags_ ) & VULKAN_HPP_NOEXCEPT + { + pBindingFlags = pBindingFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo && setPBindingFlags( DescriptorBindingFlags const * pBindingFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + pBindingFlags = pBindingFlags_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutBindingFlagsCreateInfo & + setBindingFlags( ArrayProxyNoTemporaries const & bindingFlags_ ) VULKAN_HPP_NOEXCEPT + { + bindingCount = static_cast( bindingFlags_.size() ); + pBindingFlags = bindingFlags_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorSetLayoutBindingFlagsCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutBindingFlagsCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutBindingFlagsCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutBindingFlagsCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, bindingCount, pBindingFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetLayoutBindingFlagsCreateInfo const & ) const = default; +#else + bool operator==( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bindingCount == rhs.bindingCount ) && ( pBindingFlags == rhs.pBindingFlags ); +# endif + } + + bool operator!=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo; + void const * pNext = {}; + uint32_t bindingCount = {}; + DescriptorBindingFlags const * pBindingFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorSetLayoutBindingFlagsCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorSetLayoutBindingFlagsCreateInfo; + }; + + using DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo; + + // wrapper struct for struct VkDescriptorSetLayoutCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayoutCreateInfo.html + struct DescriptorSetLayoutCreateInfo + { + using NativeType = VkDescriptorSetLayoutCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = {}, + uint32_t bindingCount_ = {}, + DescriptorSetLayoutBinding const * pBindings_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , bindingCount{ bindingCount_ } + , pBindings{ pBindings_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetLayoutCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_, + ArrayProxyNoTemporaries const & bindings_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), flags( flags_ ), bindingCount( static_cast( bindings_.size() ) ), pBindings( bindings_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DescriptorSetLayoutCreateInfo & operator=( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorSetLayoutCreateInfo & operator=( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setFlags( DescriptorSetLayoutCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo && setFlags( DescriptorSetLayoutCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setBindingCount( uint32_t bindingCount_ ) & VULKAN_HPP_NOEXCEPT + { + bindingCount = bindingCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo && setBindingCount( uint32_t bindingCount_ ) && VULKAN_HPP_NOEXCEPT + { + bindingCount = bindingCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & setPBindings( DescriptorSetLayoutBinding const * pBindings_ ) & VULKAN_HPP_NOEXCEPT + { + pBindings = pBindings_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo && setPBindings( DescriptorSetLayoutBinding const * pBindings_ ) && VULKAN_HPP_NOEXCEPT + { + pBindings = pBindings_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetLayoutCreateInfo & setBindings( ArrayProxyNoTemporaries const & bindings_ ) VULKAN_HPP_NOEXCEPT + { + bindingCount = static_cast( bindings_.size() ); + pBindings = bindings_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorSetLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, bindingCount, pBindings ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetLayoutCreateInfo const & ) const = default; +#else + bool operator==( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( bindingCount == rhs.bindingCount ) && + ( pBindings == rhs.pBindings ); +# endif + } + + bool operator!=( DescriptorSetLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorSetLayoutCreateInfo; + void const * pNext = {}; + DescriptorSetLayoutCreateFlags flags = {}; + uint32_t bindingCount = {}; + DescriptorSetLayoutBinding const * pBindings = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorSetLayoutCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorSetLayoutCreateInfo; + }; + + // wrapper struct for struct VkDescriptorSetLayoutHostMappingInfoVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayoutHostMappingInfoVALVE.html + struct DescriptorSetLayoutHostMappingInfoVALVE + { + using NativeType = VkDescriptorSetLayoutHostMappingInfoVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutHostMappingInfoVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DescriptorSetLayoutHostMappingInfoVALVE( size_t descriptorOffset_ = {}, uint32_t descriptorSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorOffset{ descriptorOffset_ } + , descriptorSize{ descriptorSize_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutHostMappingInfoVALVE( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutHostMappingInfoVALVE( VkDescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetLayoutHostMappingInfoVALVE( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorSetLayoutHostMappingInfoVALVE & operator=( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorSetLayoutHostMappingInfoVALVE & operator=( VkDescriptorSetLayoutHostMappingInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE & setDescriptorOffset( size_t descriptorOffset_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorOffset = descriptorOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE && setDescriptorOffset( size_t descriptorOffset_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorOffset = descriptorOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE & setDescriptorSize( uint32_t descriptorSize_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorSize = descriptorSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutHostMappingInfoVALVE && setDescriptorSize( uint32_t descriptorSize_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorSize = descriptorSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorSetLayoutHostMappingInfoVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutHostMappingInfoVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutHostMappingInfoVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutHostMappingInfoVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorOffset, descriptorSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetLayoutHostMappingInfoVALVE const & ) const = default; +#else + bool operator==( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorOffset == rhs.descriptorOffset ) && ( descriptorSize == rhs.descriptorSize ); +# endif + } + + bool operator!=( DescriptorSetLayoutHostMappingInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorSetLayoutHostMappingInfoVALVE; + void * pNext = {}; + size_t descriptorOffset = {}; + uint32_t descriptorSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorSetLayoutHostMappingInfoVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorSetLayoutHostMappingInfoVALVE; + }; + + // wrapper struct for struct VkDescriptorSetLayoutSupport, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetLayoutSupport.html + struct DescriptorSetLayoutSupport + { + using NativeType = VkDescriptorSetLayoutSupport; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutSupport; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( Bool32 supported_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , supported{ supported_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetLayoutSupport( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorSetLayoutSupport & operator=( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorSetLayoutSupport & operator=( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDescriptorSetLayoutSupport const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutSupport &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutSupport const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorSetLayoutSupport *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supported ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetLayoutSupport const & ) const = default; +#else + bool operator==( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supported == rhs.supported ); +# endif + } + + bool operator!=( DescriptorSetLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorSetLayoutSupport; + void * pNext = {}; + Bool32 supported = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorSetLayoutSupport; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorSetLayoutSupport; + }; + + using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport; + + // wrapper struct for struct VkDescriptorSetVariableDescriptorCountAllocateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountAllocateInfo.html + struct DescriptorSetVariableDescriptorCountAllocateInfo + { + using NativeType = VkDescriptorSetVariableDescriptorCountAllocateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountAllocateInfo( uint32_t descriptorSetCount_ = {}, + uint32_t const * pDescriptorCounts_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorSetCount{ descriptorSetCount_ } + , pDescriptorCounts{ pDescriptorCounts_ } + { + } + + VULKAN_HPP_CONSTEXPR + DescriptorSetVariableDescriptorCountAllocateInfo( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetVariableDescriptorCountAllocateInfo( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetVariableDescriptorCountAllocateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetVariableDescriptorCountAllocateInfo( ArrayProxyNoTemporaries const & descriptorCounts_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), descriptorSetCount( static_cast( descriptorCounts_.size() ) ), pDescriptorCounts( descriptorCounts_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DescriptorSetVariableDescriptorCountAllocateInfo & operator=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorSetVariableDescriptorCountAllocateInfo & operator=( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = descriptorSetCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo && setDescriptorSetCount( uint32_t descriptorSetCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = descriptorSetCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & setPDescriptorCounts( uint32_t const * pDescriptorCounts_ ) & VULKAN_HPP_NOEXCEPT + { + pDescriptorCounts = pDescriptorCounts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo && setPDescriptorCounts( uint32_t const * pDescriptorCounts_ ) && + VULKAN_HPP_NOEXCEPT + { + pDescriptorCounts = pDescriptorCounts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorSetVariableDescriptorCountAllocateInfo & + setDescriptorCounts( ArrayProxyNoTemporaries const & descriptorCounts_ ) VULKAN_HPP_NOEXCEPT + { + descriptorSetCount = static_cast( descriptorCounts_.size() ); + pDescriptorCounts = descriptorCounts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorSetVariableDescriptorCountAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetVariableDescriptorCountAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetVariableDescriptorCountAllocateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorSetVariableDescriptorCountAllocateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorSetCount, pDescriptorCounts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetVariableDescriptorCountAllocateInfo const & ) const = default; +#else + bool operator==( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSetCount == rhs.descriptorSetCount ) && + ( pDescriptorCounts == rhs.pDescriptorCounts ); +# endif + } + + bool operator!=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo; + void const * pNext = {}; + uint32_t descriptorSetCount = {}; + uint32_t const * pDescriptorCounts = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorSetVariableDescriptorCountAllocateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorSetVariableDescriptorCountAllocateInfo; + }; + + using DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo; + + // wrapper struct for struct VkDescriptorSetVariableDescriptorCountLayoutSupport, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorSetVariableDescriptorCountLayoutSupport.html + struct DescriptorSetVariableDescriptorCountLayoutSupport + { + using NativeType = VkDescriptorSetVariableDescriptorCountLayoutSupport; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountLayoutSupport( uint32_t maxVariableDescriptorCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxVariableDescriptorCount{ maxVariableDescriptorCount_ } + { + } + + VULKAN_HPP_CONSTEXPR + DescriptorSetVariableDescriptorCountLayoutSupport( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorSetVariableDescriptorCountLayoutSupport( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorSetVariableDescriptorCountLayoutSupport( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorSetVariableDescriptorCountLayoutSupport & + operator=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorSetVariableDescriptorCountLayoutSupport & operator=( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDescriptorSetVariableDescriptorCountLayoutSupport const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetVariableDescriptorCountLayoutSupport &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorSetVariableDescriptorCountLayoutSupport const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorSetVariableDescriptorCountLayoutSupport *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxVariableDescriptorCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorSetVariableDescriptorCountLayoutSupport const & ) const = default; +#else + bool operator==( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVariableDescriptorCount == rhs.maxVariableDescriptorCount ); +# endif + } + + bool operator!=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport; + void * pNext = {}; + uint32_t maxVariableDescriptorCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorSetVariableDescriptorCountLayoutSupport; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorSetVariableDescriptorCountLayoutSupport; + }; + + using DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport; + + // wrapper struct for struct VkDescriptorUpdateTemplateEntry, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateEntry.html + struct DescriptorUpdateTemplateEntry + { + using NativeType = VkDescriptorUpdateTemplateEntry; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateEntry( uint32_t dstBinding_ = {}, + uint32_t dstArrayElement_ = {}, + uint32_t descriptorCount_ = {}, + DescriptorType descriptorType_ = DescriptorType::eSampler, + size_t offset_ = {}, + size_t stride_ = {} ) VULKAN_HPP_NOEXCEPT + : dstBinding{ dstBinding_ } + , dstArrayElement{ dstArrayElement_ } + , descriptorCount{ descriptorCount_ } + , descriptorType{ descriptorType_ } + , offset{ offset_ } + , stride{ stride_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateEntry( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorUpdateTemplateEntry( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorUpdateTemplateEntry( *reinterpret_cast( &rhs ) ) + { + } + + DescriptorUpdateTemplateEntry & operator=( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorUpdateTemplateEntry & operator=( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDstBinding( uint32_t dstBinding_ ) & VULKAN_HPP_NOEXCEPT + { + dstBinding = dstBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry && setDstBinding( uint32_t dstBinding_ ) && VULKAN_HPP_NOEXCEPT + { + dstBinding = dstBinding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDstArrayElement( uint32_t dstArrayElement_ ) & VULKAN_HPP_NOEXCEPT + { + dstArrayElement = dstArrayElement_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry && setDstArrayElement( uint32_t dstArrayElement_ ) && VULKAN_HPP_NOEXCEPT + { + dstArrayElement = dstArrayElement_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDescriptorCount( uint32_t descriptorCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry && setDescriptorCount( uint32_t descriptorCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setDescriptorType( DescriptorType descriptorType_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry && setDescriptorType( DescriptorType descriptorType_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setOffset( size_t offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry && setOffset( size_t offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & setStride( size_t stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry && setStride( size_t stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorUpdateTemplateEntry const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorUpdateTemplateEntry &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorUpdateTemplateEntry const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorUpdateTemplateEntry *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( dstBinding, dstArrayElement, descriptorCount, descriptorType, offset, stride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorUpdateTemplateEntry const & ) const = default; +#else + bool operator==( DescriptorUpdateTemplateEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( dstBinding == rhs.dstBinding ) && ( dstArrayElement == rhs.dstArrayElement ) && ( descriptorCount == rhs.descriptorCount ) && + ( descriptorType == rhs.descriptorType ) && ( offset == rhs.offset ) && ( stride == rhs.stride ); +# endif + } + + bool operator!=( DescriptorUpdateTemplateEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t dstBinding = {}; + uint32_t dstArrayElement = {}; + uint32_t descriptorCount = {}; + DescriptorType descriptorType = DescriptorType::eSampler; + size_t offset = {}; + size_t stride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorUpdateTemplateEntry; + }; +#endif + using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry; + + // wrapper struct for struct VkDescriptorUpdateTemplateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDescriptorUpdateTemplateCreateInfo.html + struct DescriptorUpdateTemplateCreateInfo + { + using NativeType = VkDescriptorUpdateTemplateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorUpdateTemplateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo( DescriptorUpdateTemplateCreateFlags flags_ = {}, + uint32_t descriptorUpdateEntryCount_ = {}, + DescriptorUpdateTemplateEntry const * pDescriptorUpdateEntries_ = {}, + DescriptorUpdateTemplateType templateType_ = DescriptorUpdateTemplateType::eDescriptorSet, + DescriptorSetLayout descriptorSetLayout_ = {}, + PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, + PipelineLayout pipelineLayout_ = {}, + uint32_t set_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , descriptorUpdateEntryCount{ descriptorUpdateEntryCount_ } + , pDescriptorUpdateEntries{ pDescriptorUpdateEntries_ } + , templateType{ templateType_ } + , descriptorSetLayout{ descriptorSetLayout_ } + , pipelineBindPoint{ pipelineBindPoint_ } + , pipelineLayout{ pipelineLayout_ } + , set{ set_ } + { + } + + VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DescriptorUpdateTemplateCreateInfo( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DescriptorUpdateTemplateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorUpdateTemplateCreateInfo( DescriptorUpdateTemplateCreateFlags flags_, + ArrayProxyNoTemporaries const & descriptorUpdateEntries_, + DescriptorUpdateTemplateType templateType_ = DescriptorUpdateTemplateType::eDescriptorSet, + DescriptorSetLayout descriptorSetLayout_ = {}, + PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, + PipelineLayout pipelineLayout_ = {}, + uint32_t set_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , descriptorUpdateEntryCount( static_cast( descriptorUpdateEntries_.size() ) ) + , pDescriptorUpdateEntries( descriptorUpdateEntries_.data() ) + , templateType( templateType_ ) + , descriptorSetLayout( descriptorSetLayout_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , pipelineLayout( pipelineLayout_ ) + , set( set_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DescriptorUpdateTemplateCreateInfo & operator=( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DescriptorUpdateTemplateCreateInfo & operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setFlags( DescriptorUpdateTemplateCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo && setFlags( DescriptorUpdateTemplateCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorUpdateEntryCount = descriptorUpdateEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo && setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorUpdateEntryCount = descriptorUpdateEntryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & + setPDescriptorUpdateEntries( DescriptorUpdateTemplateEntry const * pDescriptorUpdateEntries_ ) & + VULKAN_HPP_NOEXCEPT + { + pDescriptorUpdateEntries = pDescriptorUpdateEntries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo && + setPDescriptorUpdateEntries( DescriptorUpdateTemplateEntry const * pDescriptorUpdateEntries_ ) && + VULKAN_HPP_NOEXCEPT + { + pDescriptorUpdateEntries = pDescriptorUpdateEntries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DescriptorUpdateTemplateCreateInfo & + setDescriptorUpdateEntries( ArrayProxyNoTemporaries const & descriptorUpdateEntries_ ) VULKAN_HPP_NOEXCEPT + { + descriptorUpdateEntryCount = static_cast( descriptorUpdateEntries_.size() ); + pDescriptorUpdateEntries = descriptorUpdateEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setTemplateType( DescriptorUpdateTemplateType templateType_ ) & VULKAN_HPP_NOEXCEPT + { + templateType = templateType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo && setTemplateType( DescriptorUpdateTemplateType templateType_ ) && VULKAN_HPP_NOEXCEPT + { + templateType = templateType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorSetLayout = descriptorSetLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo && setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorSetLayout = descriptorSetLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo && setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setPipelineLayout( PipelineLayout pipelineLayout_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineLayout = pipelineLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo && setPipelineLayout( PipelineLayout pipelineLayout_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineLayout = pipelineLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & setSet( uint32_t set_ ) & VULKAN_HPP_NOEXCEPT + { + set = set_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo && setSet( uint32_t set_ ) && VULKAN_HPP_NOEXCEPT + { + set = set_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDescriptorUpdateTemplateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorUpdateTemplateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDescriptorUpdateTemplateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDescriptorUpdateTemplateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, flags, descriptorUpdateEntryCount, pDescriptorUpdateEntries, templateType, descriptorSetLayout, pipelineBindPoint, pipelineLayout, set ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DescriptorUpdateTemplateCreateInfo const & ) const = default; +#else + bool operator==( DescriptorUpdateTemplateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount ) && + ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries ) && ( templateType == rhs.templateType ) && + ( descriptorSetLayout == rhs.descriptorSetLayout ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipelineLayout == rhs.pipelineLayout ) && + ( set == rhs.set ); +# endif + } + + bool operator!=( DescriptorUpdateTemplateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDescriptorUpdateTemplateCreateInfo; + void const * pNext = {}; + DescriptorUpdateTemplateCreateFlags flags = {}; + uint32_t descriptorUpdateEntryCount = {}; + DescriptorUpdateTemplateEntry const * pDescriptorUpdateEntries = {}; + DescriptorUpdateTemplateType templateType = DescriptorUpdateTemplateType::eDescriptorSet; + DescriptorSetLayout descriptorSetLayout = {}; + PipelineBindPoint pipelineBindPoint = PipelineBindPoint::eGraphics; + PipelineLayout pipelineLayout = {}; + uint32_t set = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DescriptorUpdateTemplateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DescriptorUpdateTemplateCreateInfo; + }; + + using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo; + + // wrapper struct for struct VkDeviceAddressBindingCallbackDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceAddressBindingCallbackDataEXT.html + struct DeviceAddressBindingCallbackDataEXT + { + using NativeType = VkDeviceAddressBindingCallbackDataEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceAddressBindingCallbackDataEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceAddressBindingCallbackDataEXT( DeviceAddressBindingFlagsEXT flags_ = {}, + DeviceAddress baseAddress_ = {}, + DeviceSize size_ = {}, + DeviceAddressBindingTypeEXT bindingType_ = DeviceAddressBindingTypeEXT::eBind, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , baseAddress{ baseAddress_ } + , size{ size_ } + , bindingType{ bindingType_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceAddressBindingCallbackDataEXT( DeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceAddressBindingCallbackDataEXT( VkDeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceAddressBindingCallbackDataEXT( *reinterpret_cast( &rhs ) ) + { + } + + DeviceAddressBindingCallbackDataEXT & operator=( DeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceAddressBindingCallbackDataEXT & operator=( VkDeviceAddressBindingCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setFlags( DeviceAddressBindingFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT && setFlags( DeviceAddressBindingFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setBaseAddress( DeviceAddress baseAddress_ ) & VULKAN_HPP_NOEXCEPT + { + baseAddress = baseAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT && setBaseAddress( DeviceAddress baseAddress_ ) && VULKAN_HPP_NOEXCEPT + { + baseAddress = baseAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT & setBindingType( DeviceAddressBindingTypeEXT bindingType_ ) & VULKAN_HPP_NOEXCEPT + { + bindingType = bindingType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceAddressBindingCallbackDataEXT && setBindingType( DeviceAddressBindingTypeEXT bindingType_ ) && VULKAN_HPP_NOEXCEPT + { + bindingType = bindingType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceAddressBindingCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceAddressBindingCallbackDataEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceAddressBindingCallbackDataEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceAddressBindingCallbackDataEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, baseAddress, size, bindingType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceAddressBindingCallbackDataEXT const & ) const = default; +#else + bool operator==( DeviceAddressBindingCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( baseAddress == rhs.baseAddress ) && ( size == rhs.size ) && + ( bindingType == rhs.bindingType ); +# endif + } + + bool operator!=( DeviceAddressBindingCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceAddressBindingCallbackDataEXT; + void * pNext = {}; + DeviceAddressBindingFlagsEXT flags = {}; + DeviceAddress baseAddress = {}; + DeviceSize size = {}; + DeviceAddressBindingTypeEXT bindingType = DeviceAddressBindingTypeEXT::eBind; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceAddressBindingCallbackDataEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceAddressBindingCallbackDataEXT; + }; + + // wrapper struct for struct VkDeviceBufferMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceBufferMemoryRequirements.html + struct DeviceBufferMemoryRequirements + { + using NativeType = VkDeviceBufferMemoryRequirements; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceBufferMemoryRequirements; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceBufferMemoryRequirements( BufferCreateInfo const * pCreateInfo_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pCreateInfo{ pCreateInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceBufferMemoryRequirements( DeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceBufferMemoryRequirements( VkDeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceBufferMemoryRequirements( *reinterpret_cast( &rhs ) ) + { + } + + DeviceBufferMemoryRequirements & operator=( DeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceBufferMemoryRequirements & operator=( VkDeviceBufferMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements & setPCreateInfo( BufferCreateInfo const * pCreateInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pCreateInfo = pCreateInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceBufferMemoryRequirements && setPCreateInfo( BufferCreateInfo const * pCreateInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pCreateInfo = pCreateInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceBufferMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceBufferMemoryRequirements &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceBufferMemoryRequirements const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceBufferMemoryRequirements *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pCreateInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceBufferMemoryRequirements const & ) const = default; +#else + bool operator==( DeviceBufferMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo ); +# endif + } + + bool operator!=( DeviceBufferMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceBufferMemoryRequirements; + void const * pNext = {}; + BufferCreateInfo const * pCreateInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceBufferMemoryRequirements; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceBufferMemoryRequirements; + }; + + using DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements; + + // wrapper struct for struct VkDeviceQueueCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceQueueCreateInfo.html + struct DeviceQueueCreateInfo + { + using NativeType = VkDeviceQueueCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = {}, + uint32_t queueFamilyIndex_ = {}, + uint32_t queueCount_ = {}, + float const * pQueuePriorities_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , queueFamilyIndex{ queueFamilyIndex_ } + , queueCount{ queueCount_ } + , pQueuePriorities{ pQueuePriorities_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceQueueCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_, + uint32_t queueFamilyIndex_, + ArrayProxyNoTemporaries const & queuePriorities_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , queueFamilyIndex( queueFamilyIndex_ ) + , queueCount( static_cast( queuePriorities_.size() ) ) + , pQueuePriorities( queuePriorities_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DeviceQueueCreateInfo & operator=( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceQueueCreateInfo & operator=( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setFlags( DeviceQueueCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo && setFlags( DeviceQueueCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo && setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setQueueCount( uint32_t queueCount_ ) & VULKAN_HPP_NOEXCEPT + { + queueCount = queueCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo && setQueueCount( uint32_t queueCount_ ) && VULKAN_HPP_NOEXCEPT + { + queueCount = queueCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & setPQueuePriorities( float const * pQueuePriorities_ ) & VULKAN_HPP_NOEXCEPT + { + pQueuePriorities = pQueuePriorities_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo && setPQueuePriorities( float const * pQueuePriorities_ ) && VULKAN_HPP_NOEXCEPT + { + pQueuePriorities = pQueuePriorities_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceQueueCreateInfo & setQueuePriorities( ArrayProxyNoTemporaries const & queuePriorities_ ) VULKAN_HPP_NOEXCEPT + { + queueCount = static_cast( queuePriorities_.size() ); + pQueuePriorities = queuePriorities_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceQueueCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceQueueCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceQueueCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceQueueCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, queueFamilyIndex, queueCount, pQueuePriorities ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceQueueCreateInfo const & ) const = default; +#else + bool operator==( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) && + ( queueCount == rhs.queueCount ) && ( pQueuePriorities == rhs.pQueuePriorities ); +# endif + } + + bool operator!=( DeviceQueueCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceQueueCreateInfo; + void const * pNext = {}; + DeviceQueueCreateFlags flags = {}; + uint32_t queueFamilyIndex = {}; + uint32_t queueCount = {}; + float const * pQueuePriorities = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceQueueCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceQueueCreateInfo; + }; + + // wrapper struct for struct VkPhysicalDeviceFeatures, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures.html + struct PhysicalDeviceFeatures + { + using NativeType = VkPhysicalDeviceFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures( Bool32 robustBufferAccess_ = {}, + Bool32 fullDrawIndexUint32_ = {}, + Bool32 imageCubeArray_ = {}, + Bool32 independentBlend_ = {}, + Bool32 geometryShader_ = {}, + Bool32 tessellationShader_ = {}, + Bool32 sampleRateShading_ = {}, + Bool32 dualSrcBlend_ = {}, + Bool32 logicOp_ = {}, + Bool32 multiDrawIndirect_ = {}, + Bool32 drawIndirectFirstInstance_ = {}, + Bool32 depthClamp_ = {}, + Bool32 depthBiasClamp_ = {}, + Bool32 fillModeNonSolid_ = {}, + Bool32 depthBounds_ = {}, + Bool32 wideLines_ = {}, + Bool32 largePoints_ = {}, + Bool32 alphaToOne_ = {}, + Bool32 multiViewport_ = {}, + Bool32 samplerAnisotropy_ = {}, + Bool32 textureCompressionETC2_ = {}, + Bool32 textureCompressionASTC_LDR_ = {}, + Bool32 textureCompressionBC_ = {}, + Bool32 occlusionQueryPrecise_ = {}, + Bool32 pipelineStatisticsQuery_ = {}, + Bool32 vertexPipelineStoresAndAtomics_ = {}, + Bool32 fragmentStoresAndAtomics_ = {}, + Bool32 shaderTessellationAndGeometryPointSize_ = {}, + Bool32 shaderImageGatherExtended_ = {}, + Bool32 shaderStorageImageExtendedFormats_ = {}, + Bool32 shaderStorageImageMultisample_ = {}, + Bool32 shaderStorageImageReadWithoutFormat_ = {}, + Bool32 shaderStorageImageWriteWithoutFormat_ = {}, + Bool32 shaderUniformBufferArrayDynamicIndexing_ = {}, + Bool32 shaderSampledImageArrayDynamicIndexing_ = {}, + Bool32 shaderStorageBufferArrayDynamicIndexing_ = {}, + Bool32 shaderStorageImageArrayDynamicIndexing_ = {}, + Bool32 shaderClipDistance_ = {}, + Bool32 shaderCullDistance_ = {}, + Bool32 shaderFloat64_ = {}, + Bool32 shaderInt64_ = {}, + Bool32 shaderInt16_ = {}, + Bool32 shaderResourceResidency_ = {}, + Bool32 shaderResourceMinLod_ = {}, + Bool32 sparseBinding_ = {}, + Bool32 sparseResidencyBuffer_ = {}, + Bool32 sparseResidencyImage2D_ = {}, + Bool32 sparseResidencyImage3D_ = {}, + Bool32 sparseResidency2Samples_ = {}, + Bool32 sparseResidency4Samples_ = {}, + Bool32 sparseResidency8Samples_ = {}, + Bool32 sparseResidency16Samples_ = {}, + Bool32 sparseResidencyAliased_ = {}, + Bool32 variableMultisampleRate_ = {}, + Bool32 inheritedQueries_ = {} ) VULKAN_HPP_NOEXCEPT + : robustBufferAccess{ robustBufferAccess_ } + , fullDrawIndexUint32{ fullDrawIndexUint32_ } + , imageCubeArray{ imageCubeArray_ } + , independentBlend{ independentBlend_ } + , geometryShader{ geometryShader_ } + , tessellationShader{ tessellationShader_ } + , sampleRateShading{ sampleRateShading_ } + , dualSrcBlend{ dualSrcBlend_ } + , logicOp{ logicOp_ } + , multiDrawIndirect{ multiDrawIndirect_ } + , drawIndirectFirstInstance{ drawIndirectFirstInstance_ } + , depthClamp{ depthClamp_ } + , depthBiasClamp{ depthBiasClamp_ } + , fillModeNonSolid{ fillModeNonSolid_ } + , depthBounds{ depthBounds_ } + , wideLines{ wideLines_ } + , largePoints{ largePoints_ } + , alphaToOne{ alphaToOne_ } + , multiViewport{ multiViewport_ } + , samplerAnisotropy{ samplerAnisotropy_ } + , textureCompressionETC2{ textureCompressionETC2_ } + , textureCompressionASTC_LDR{ textureCompressionASTC_LDR_ } + , textureCompressionBC{ textureCompressionBC_ } + , occlusionQueryPrecise{ occlusionQueryPrecise_ } + , pipelineStatisticsQuery{ pipelineStatisticsQuery_ } + , vertexPipelineStoresAndAtomics{ vertexPipelineStoresAndAtomics_ } + , fragmentStoresAndAtomics{ fragmentStoresAndAtomics_ } + , shaderTessellationAndGeometryPointSize{ shaderTessellationAndGeometryPointSize_ } + , shaderImageGatherExtended{ shaderImageGatherExtended_ } + , shaderStorageImageExtendedFormats{ shaderStorageImageExtendedFormats_ } + , shaderStorageImageMultisample{ shaderStorageImageMultisample_ } + , shaderStorageImageReadWithoutFormat{ shaderStorageImageReadWithoutFormat_ } + , shaderStorageImageWriteWithoutFormat{ shaderStorageImageWriteWithoutFormat_ } + , shaderUniformBufferArrayDynamicIndexing{ shaderUniformBufferArrayDynamicIndexing_ } + , shaderSampledImageArrayDynamicIndexing{ shaderSampledImageArrayDynamicIndexing_ } + , shaderStorageBufferArrayDynamicIndexing{ shaderStorageBufferArrayDynamicIndexing_ } + , shaderStorageImageArrayDynamicIndexing{ shaderStorageImageArrayDynamicIndexing_ } + , shaderClipDistance{ shaderClipDistance_ } + , shaderCullDistance{ shaderCullDistance_ } + , shaderFloat64{ shaderFloat64_ } + , shaderInt64{ shaderInt64_ } + , shaderInt16{ shaderInt16_ } + , shaderResourceResidency{ shaderResourceResidency_ } + , shaderResourceMinLod{ shaderResourceMinLod_ } + , sparseBinding{ sparseBinding_ } + , sparseResidencyBuffer{ sparseResidencyBuffer_ } + , sparseResidencyImage2D{ sparseResidencyImage2D_ } + , sparseResidencyImage3D{ sparseResidencyImage3D_ } + , sparseResidency2Samples{ sparseResidency2Samples_ } + , sparseResidency4Samples{ sparseResidency4Samples_ } + , sparseResidency8Samples{ sparseResidency8Samples_ } + , sparseResidency16Samples{ sparseResidency16Samples_ } + , sparseResidencyAliased{ sparseResidencyAliased_ } + , variableMultisampleRate{ variableMultisampleRate_ } + , inheritedQueries{ inheritedQueries_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFeatures & operator=( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFeatures & operator=( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setRobustBufferAccess( Bool32 robustBufferAccess_ ) & VULKAN_HPP_NOEXCEPT + { + robustBufferAccess = robustBufferAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setRobustBufferAccess( Bool32 robustBufferAccess_ ) && VULKAN_HPP_NOEXCEPT + { + robustBufferAccess = robustBufferAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ ) & VULKAN_HPP_NOEXCEPT + { + fullDrawIndexUint32 = fullDrawIndexUint32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ ) && VULKAN_HPP_NOEXCEPT + { + fullDrawIndexUint32 = fullDrawIndexUint32_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setImageCubeArray( Bool32 imageCubeArray_ ) & VULKAN_HPP_NOEXCEPT + { + imageCubeArray = imageCubeArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setImageCubeArray( Bool32 imageCubeArray_ ) && VULKAN_HPP_NOEXCEPT + { + imageCubeArray = imageCubeArray_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setIndependentBlend( Bool32 independentBlend_ ) & VULKAN_HPP_NOEXCEPT + { + independentBlend = independentBlend_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setIndependentBlend( Bool32 independentBlend_ ) && VULKAN_HPP_NOEXCEPT + { + independentBlend = independentBlend_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setGeometryShader( Bool32 geometryShader_ ) & VULKAN_HPP_NOEXCEPT + { + geometryShader = geometryShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setGeometryShader( Bool32 geometryShader_ ) && VULKAN_HPP_NOEXCEPT + { + geometryShader = geometryShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTessellationShader( Bool32 tessellationShader_ ) & VULKAN_HPP_NOEXCEPT + { + tessellationShader = tessellationShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setTessellationShader( Bool32 tessellationShader_ ) && VULKAN_HPP_NOEXCEPT + { + tessellationShader = tessellationShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSampleRateShading( Bool32 sampleRateShading_ ) & VULKAN_HPP_NOEXCEPT + { + sampleRateShading = sampleRateShading_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSampleRateShading( Bool32 sampleRateShading_ ) && VULKAN_HPP_NOEXCEPT + { + sampleRateShading = sampleRateShading_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDualSrcBlend( Bool32 dualSrcBlend_ ) & VULKAN_HPP_NOEXCEPT + { + dualSrcBlend = dualSrcBlend_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setDualSrcBlend( Bool32 dualSrcBlend_ ) && VULKAN_HPP_NOEXCEPT + { + dualSrcBlend = dualSrcBlend_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setLogicOp( Bool32 logicOp_ ) & VULKAN_HPP_NOEXCEPT + { + logicOp = logicOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setLogicOp( Bool32 logicOp_ ) && VULKAN_HPP_NOEXCEPT + { + logicOp = logicOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setMultiDrawIndirect( Bool32 multiDrawIndirect_ ) & VULKAN_HPP_NOEXCEPT + { + multiDrawIndirect = multiDrawIndirect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setMultiDrawIndirect( Bool32 multiDrawIndirect_ ) && VULKAN_HPP_NOEXCEPT + { + multiDrawIndirect = multiDrawIndirect_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ ) & VULKAN_HPP_NOEXCEPT + { + drawIndirectFirstInstance = drawIndirectFirstInstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ ) && VULKAN_HPP_NOEXCEPT + { + drawIndirectFirstInstance = drawIndirectFirstInstance_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthClamp( Bool32 depthClamp_ ) & VULKAN_HPP_NOEXCEPT + { + depthClamp = depthClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setDepthClamp( Bool32 depthClamp_ ) && VULKAN_HPP_NOEXCEPT + { + depthClamp = depthClamp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthBiasClamp( Bool32 depthBiasClamp_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasClamp = depthBiasClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setDepthBiasClamp( Bool32 depthBiasClamp_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasClamp = depthBiasClamp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFillModeNonSolid( Bool32 fillModeNonSolid_ ) & VULKAN_HPP_NOEXCEPT + { + fillModeNonSolid = fillModeNonSolid_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setFillModeNonSolid( Bool32 fillModeNonSolid_ ) && VULKAN_HPP_NOEXCEPT + { + fillModeNonSolid = fillModeNonSolid_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setDepthBounds( Bool32 depthBounds_ ) & VULKAN_HPP_NOEXCEPT + { + depthBounds = depthBounds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setDepthBounds( Bool32 depthBounds_ ) && VULKAN_HPP_NOEXCEPT + { + depthBounds = depthBounds_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setWideLines( Bool32 wideLines_ ) & VULKAN_HPP_NOEXCEPT + { + wideLines = wideLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setWideLines( Bool32 wideLines_ ) && VULKAN_HPP_NOEXCEPT + { + wideLines = wideLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setLargePoints( Bool32 largePoints_ ) & VULKAN_HPP_NOEXCEPT + { + largePoints = largePoints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setLargePoints( Bool32 largePoints_ ) && VULKAN_HPP_NOEXCEPT + { + largePoints = largePoints_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setAlphaToOne( Bool32 alphaToOne_ ) & VULKAN_HPP_NOEXCEPT + { + alphaToOne = alphaToOne_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setAlphaToOne( Bool32 alphaToOne_ ) && VULKAN_HPP_NOEXCEPT + { + alphaToOne = alphaToOne_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setMultiViewport( Bool32 multiViewport_ ) & VULKAN_HPP_NOEXCEPT + { + multiViewport = multiViewport_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setMultiViewport( Bool32 multiViewport_ ) && VULKAN_HPP_NOEXCEPT + { + multiViewport = multiViewport_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSamplerAnisotropy( Bool32 samplerAnisotropy_ ) & VULKAN_HPP_NOEXCEPT + { + samplerAnisotropy = samplerAnisotropy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSamplerAnisotropy( Bool32 samplerAnisotropy_ ) && VULKAN_HPP_NOEXCEPT + { + samplerAnisotropy = samplerAnisotropy_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTextureCompressionETC2( Bool32 textureCompressionETC2_ ) & VULKAN_HPP_NOEXCEPT + { + textureCompressionETC2 = textureCompressionETC2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setTextureCompressionETC2( Bool32 textureCompressionETC2_ ) && VULKAN_HPP_NOEXCEPT + { + textureCompressionETC2 = textureCompressionETC2_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ ) & VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_LDR = textureCompressionASTC_LDR_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ ) && VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_LDR = textureCompressionASTC_LDR_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setTextureCompressionBC( Bool32 textureCompressionBC_ ) & VULKAN_HPP_NOEXCEPT + { + textureCompressionBC = textureCompressionBC_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setTextureCompressionBC( Bool32 textureCompressionBC_ ) && VULKAN_HPP_NOEXCEPT + { + textureCompressionBC = textureCompressionBC_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ ) & VULKAN_HPP_NOEXCEPT + { + occlusionQueryPrecise = occlusionQueryPrecise_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ ) && VULKAN_HPP_NOEXCEPT + { + occlusionQueryPrecise = occlusionQueryPrecise_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineStatisticsQuery = pipelineStatisticsQuery_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineStatisticsQuery = pipelineStatisticsQuery_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ ) & VULKAN_HPP_NOEXCEPT + { + vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ ) && VULKAN_HPP_NOEXCEPT + { + vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ ) & VULKAN_HPP_NOEXCEPT + { + fragmentStoresAndAtomics = fragmentStoresAndAtomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ ) && VULKAN_HPP_NOEXCEPT + { + fragmentStoresAndAtomics = fragmentStoresAndAtomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ ) & VULKAN_HPP_NOEXCEPT + { + shaderImageGatherExtended = shaderImageGatherExtended_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ ) && VULKAN_HPP_NOEXCEPT + { + shaderImageGatherExtended = shaderImageGatherExtended_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ ) & VULKAN_HPP_NOEXCEPT + { + shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ ) && VULKAN_HPP_NOEXCEPT + { + shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ ) & VULKAN_HPP_NOEXCEPT + { + shaderStorageImageMultisample = shaderStorageImageMultisample_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ ) && VULKAN_HPP_NOEXCEPT + { + shaderStorageImageMultisample = shaderStorageImageMultisample_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ ) & VULKAN_HPP_NOEXCEPT + { + shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderClipDistance( Bool32 shaderClipDistance_ ) & VULKAN_HPP_NOEXCEPT + { + shaderClipDistance = shaderClipDistance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderClipDistance( Bool32 shaderClipDistance_ ) && VULKAN_HPP_NOEXCEPT + { + shaderClipDistance = shaderClipDistance_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderCullDistance( Bool32 shaderCullDistance_ ) & VULKAN_HPP_NOEXCEPT + { + shaderCullDistance = shaderCullDistance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderCullDistance( Bool32 shaderCullDistance_ ) && VULKAN_HPP_NOEXCEPT + { + shaderCullDistance = shaderCullDistance_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderFloat64( Bool32 shaderFloat64_ ) & VULKAN_HPP_NOEXCEPT + { + shaderFloat64 = shaderFloat64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderFloat64( Bool32 shaderFloat64_ ) && VULKAN_HPP_NOEXCEPT + { + shaderFloat64 = shaderFloat64_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderInt64( Bool32 shaderInt64_ ) & VULKAN_HPP_NOEXCEPT + { + shaderInt64 = shaderInt64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderInt64( Bool32 shaderInt64_ ) && VULKAN_HPP_NOEXCEPT + { + shaderInt64 = shaderInt64_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderInt16( Bool32 shaderInt16_ ) & VULKAN_HPP_NOEXCEPT + { + shaderInt16 = shaderInt16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderInt16( Bool32 shaderInt16_ ) && VULKAN_HPP_NOEXCEPT + { + shaderInt16 = shaderInt16_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderResourceResidency( Bool32 shaderResourceResidency_ ) & VULKAN_HPP_NOEXCEPT + { + shaderResourceResidency = shaderResourceResidency_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderResourceResidency( Bool32 shaderResourceResidency_ ) && VULKAN_HPP_NOEXCEPT + { + shaderResourceResidency = shaderResourceResidency_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setShaderResourceMinLod( Bool32 shaderResourceMinLod_ ) & VULKAN_HPP_NOEXCEPT + { + shaderResourceMinLod = shaderResourceMinLod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setShaderResourceMinLod( Bool32 shaderResourceMinLod_ ) && VULKAN_HPP_NOEXCEPT + { + shaderResourceMinLod = shaderResourceMinLod_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseBinding( Bool32 sparseBinding_ ) & VULKAN_HPP_NOEXCEPT + { + sparseBinding = sparseBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSparseBinding( Bool32 sparseBinding_ ) && VULKAN_HPP_NOEXCEPT + { + sparseBinding = sparseBinding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + sparseResidencyBuffer = sparseResidencyBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + sparseResidencyBuffer = sparseResidencyBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ ) & VULKAN_HPP_NOEXCEPT + { + sparseResidencyImage2D = sparseResidencyImage2D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ ) && VULKAN_HPP_NOEXCEPT + { + sparseResidencyImage2D = sparseResidencyImage2D_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ ) & VULKAN_HPP_NOEXCEPT + { + sparseResidencyImage3D = sparseResidencyImage3D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ ) && VULKAN_HPP_NOEXCEPT + { + sparseResidencyImage3D = sparseResidencyImage3D_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency2Samples( Bool32 sparseResidency2Samples_ ) & VULKAN_HPP_NOEXCEPT + { + sparseResidency2Samples = sparseResidency2Samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSparseResidency2Samples( Bool32 sparseResidency2Samples_ ) && VULKAN_HPP_NOEXCEPT + { + sparseResidency2Samples = sparseResidency2Samples_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency4Samples( Bool32 sparseResidency4Samples_ ) & VULKAN_HPP_NOEXCEPT + { + sparseResidency4Samples = sparseResidency4Samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSparseResidency4Samples( Bool32 sparseResidency4Samples_ ) && VULKAN_HPP_NOEXCEPT + { + sparseResidency4Samples = sparseResidency4Samples_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency8Samples( Bool32 sparseResidency8Samples_ ) & VULKAN_HPP_NOEXCEPT + { + sparseResidency8Samples = sparseResidency8Samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSparseResidency8Samples( Bool32 sparseResidency8Samples_ ) && VULKAN_HPP_NOEXCEPT + { + sparseResidency8Samples = sparseResidency8Samples_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidency16Samples( Bool32 sparseResidency16Samples_ ) & VULKAN_HPP_NOEXCEPT + { + sparseResidency16Samples = sparseResidency16Samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSparseResidency16Samples( Bool32 sparseResidency16Samples_ ) && VULKAN_HPP_NOEXCEPT + { + sparseResidency16Samples = sparseResidency16Samples_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setSparseResidencyAliased( Bool32 sparseResidencyAliased_ ) & VULKAN_HPP_NOEXCEPT + { + sparseResidencyAliased = sparseResidencyAliased_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setSparseResidencyAliased( Bool32 sparseResidencyAliased_ ) && VULKAN_HPP_NOEXCEPT + { + sparseResidencyAliased = sparseResidencyAliased_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setVariableMultisampleRate( Bool32 variableMultisampleRate_ ) & VULKAN_HPP_NOEXCEPT + { + variableMultisampleRate = variableMultisampleRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setVariableMultisampleRate( Bool32 variableMultisampleRate_ ) && VULKAN_HPP_NOEXCEPT + { + variableMultisampleRate = variableMultisampleRate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & setInheritedQueries( Bool32 inheritedQueries_ ) & VULKAN_HPP_NOEXCEPT + { + inheritedQueries = inheritedQueries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures && setInheritedQueries( Bool32 inheritedQueries_ ) && VULKAN_HPP_NOEXCEPT + { + inheritedQueries = inheritedQueries_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( robustBufferAccess, + fullDrawIndexUint32, + imageCubeArray, + independentBlend, + geometryShader, + tessellationShader, + sampleRateShading, + dualSrcBlend, + logicOp, + multiDrawIndirect, + drawIndirectFirstInstance, + depthClamp, + depthBiasClamp, + fillModeNonSolid, + depthBounds, + wideLines, + largePoints, + alphaToOne, + multiViewport, + samplerAnisotropy, + textureCompressionETC2, + textureCompressionASTC_LDR, + textureCompressionBC, + occlusionQueryPrecise, + pipelineStatisticsQuery, + vertexPipelineStoresAndAtomics, + fragmentStoresAndAtomics, + shaderTessellationAndGeometryPointSize, + shaderImageGatherExtended, + shaderStorageImageExtendedFormats, + shaderStorageImageMultisample, + shaderStorageImageReadWithoutFormat, + shaderStorageImageWriteWithoutFormat, + shaderUniformBufferArrayDynamicIndexing, + shaderSampledImageArrayDynamicIndexing, + shaderStorageBufferArrayDynamicIndexing, + shaderStorageImageArrayDynamicIndexing, + shaderClipDistance, + shaderCullDistance, + shaderFloat64, + shaderInt64, + shaderInt16, + shaderResourceResidency, + shaderResourceMinLod, + sparseBinding, + sparseResidencyBuffer, + sparseResidencyImage2D, + sparseResidencyImage3D, + sparseResidency2Samples, + sparseResidency4Samples, + sparseResidency8Samples, + sparseResidency16Samples, + sparseResidencyAliased, + variableMultisampleRate, + inheritedQueries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( robustBufferAccess == rhs.robustBufferAccess ) && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 ) && + ( imageCubeArray == rhs.imageCubeArray ) && ( independentBlend == rhs.independentBlend ) && ( geometryShader == rhs.geometryShader ) && + ( tessellationShader == rhs.tessellationShader ) && ( sampleRateShading == rhs.sampleRateShading ) && ( dualSrcBlend == rhs.dualSrcBlend ) && + ( logicOp == rhs.logicOp ) && ( multiDrawIndirect == rhs.multiDrawIndirect ) && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance ) && + ( depthClamp == rhs.depthClamp ) && ( depthBiasClamp == rhs.depthBiasClamp ) && ( fillModeNonSolid == rhs.fillModeNonSolid ) && + ( depthBounds == rhs.depthBounds ) && ( wideLines == rhs.wideLines ) && ( largePoints == rhs.largePoints ) && ( alphaToOne == rhs.alphaToOne ) && + ( multiViewport == rhs.multiViewport ) && ( samplerAnisotropy == rhs.samplerAnisotropy ) && + ( textureCompressionETC2 == rhs.textureCompressionETC2 ) && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR ) && + ( textureCompressionBC == rhs.textureCompressionBC ) && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise ) && + ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery ) && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics ) && + ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics ) && + ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize ) && + ( shaderImageGatherExtended == rhs.shaderImageGatherExtended ) && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats ) && + ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample ) && + ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat ) && + ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat ) && + ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing ) && + ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing ) && + ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing ) && + ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing ) && ( shaderClipDistance == rhs.shaderClipDistance ) && + ( shaderCullDistance == rhs.shaderCullDistance ) && ( shaderFloat64 == rhs.shaderFloat64 ) && ( shaderInt64 == rhs.shaderInt64 ) && + ( shaderInt16 == rhs.shaderInt16 ) && ( shaderResourceResidency == rhs.shaderResourceResidency ) && + ( shaderResourceMinLod == rhs.shaderResourceMinLod ) && ( sparseBinding == rhs.sparseBinding ) && + ( sparseResidencyBuffer == rhs.sparseResidencyBuffer ) && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D ) && + ( sparseResidencyImage3D == rhs.sparseResidencyImage3D ) && ( sparseResidency2Samples == rhs.sparseResidency2Samples ) && + ( sparseResidency4Samples == rhs.sparseResidency4Samples ) && ( sparseResidency8Samples == rhs.sparseResidency8Samples ) && + ( sparseResidency16Samples == rhs.sparseResidency16Samples ) && ( sparseResidencyAliased == rhs.sparseResidencyAliased ) && + ( variableMultisampleRate == rhs.variableMultisampleRate ) && ( inheritedQueries == rhs.inheritedQueries ); +# endif + } + + bool operator!=( PhysicalDeviceFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Bool32 robustBufferAccess = {}; + Bool32 fullDrawIndexUint32 = {}; + Bool32 imageCubeArray = {}; + Bool32 independentBlend = {}; + Bool32 geometryShader = {}; + Bool32 tessellationShader = {}; + Bool32 sampleRateShading = {}; + Bool32 dualSrcBlend = {}; + Bool32 logicOp = {}; + Bool32 multiDrawIndirect = {}; + Bool32 drawIndirectFirstInstance = {}; + Bool32 depthClamp = {}; + Bool32 depthBiasClamp = {}; + Bool32 fillModeNonSolid = {}; + Bool32 depthBounds = {}; + Bool32 wideLines = {}; + Bool32 largePoints = {}; + Bool32 alphaToOne = {}; + Bool32 multiViewport = {}; + Bool32 samplerAnisotropy = {}; + Bool32 textureCompressionETC2 = {}; + Bool32 textureCompressionASTC_LDR = {}; + Bool32 textureCompressionBC = {}; + Bool32 occlusionQueryPrecise = {}; + Bool32 pipelineStatisticsQuery = {}; + Bool32 vertexPipelineStoresAndAtomics = {}; + Bool32 fragmentStoresAndAtomics = {}; + Bool32 shaderTessellationAndGeometryPointSize = {}; + Bool32 shaderImageGatherExtended = {}; + Bool32 shaderStorageImageExtendedFormats = {}; + Bool32 shaderStorageImageMultisample = {}; + Bool32 shaderStorageImageReadWithoutFormat = {}; + Bool32 shaderStorageImageWriteWithoutFormat = {}; + Bool32 shaderUniformBufferArrayDynamicIndexing = {}; + Bool32 shaderSampledImageArrayDynamicIndexing = {}; + Bool32 shaderStorageBufferArrayDynamicIndexing = {}; + Bool32 shaderStorageImageArrayDynamicIndexing = {}; + Bool32 shaderClipDistance = {}; + Bool32 shaderCullDistance = {}; + Bool32 shaderFloat64 = {}; + Bool32 shaderInt64 = {}; + Bool32 shaderInt16 = {}; + Bool32 shaderResourceResidency = {}; + Bool32 shaderResourceMinLod = {}; + Bool32 sparseBinding = {}; + Bool32 sparseResidencyBuffer = {}; + Bool32 sparseResidencyImage2D = {}; + Bool32 sparseResidencyImage3D = {}; + Bool32 sparseResidency2Samples = {}; + Bool32 sparseResidency4Samples = {}; + Bool32 sparseResidency8Samples = {}; + Bool32 sparseResidency16Samples = {}; + Bool32 sparseResidencyAliased = {}; + Bool32 variableMultisampleRate = {}; + Bool32 inheritedQueries = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFeatures; + }; +#endif + + // wrapper struct for struct VkDeviceCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceCreateInfo.html + struct DeviceCreateInfo + { + using NativeType = VkDeviceCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + +# if defined( _MSC_VER ) +# pragma warning( push ) +# pragma warning( disable : 4996 ) // 'function': was declared deprecated +# elif defined( __clang__ ) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wdeprecated-declarations" +# elif defined( __GNUC__ ) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +# else +// unknown compiler... just ignore the warnings for yourselves ;) +# endif + + VULKAN_HPP_CONSTEXPR_17 DeviceCreateInfo( DeviceCreateFlags flags_ = {}, + uint32_t queueCreateInfoCount_ = {}, + DeviceQueueCreateInfo const * pQueueCreateInfos_ = {}, + uint32_t enabledLayerCount_ = {}, + char const * const * ppEnabledLayerNames_ = {}, + uint32_t enabledExtensionCount_ = {}, + char const * const * ppEnabledExtensionNames_ = {}, + PhysicalDeviceFeatures const * pEnabledFeatures_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , queueCreateInfoCount{ queueCreateInfoCount_ } + , pQueueCreateInfos{ pQueueCreateInfos_ } + , enabledLayerCount{ enabledLayerCount_ } + , ppEnabledLayerNames{ ppEnabledLayerNames_ } + , enabledExtensionCount{ enabledExtensionCount_ } + , ppEnabledExtensionNames{ ppEnabledExtensionNames_ } + , pEnabledFeatures{ pEnabledFeatures_ } + { + } + + VULKAN_HPP_CONSTEXPR_17 DeviceCreateInfo( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceCreateInfo( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceCreateInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceCreateInfo( DeviceCreateFlags flags_, + ArrayProxyNoTemporaries const & queueCreateInfos_, + uint32_t enabledLayerCount_ = {}, + char const * const * ppEnabledLayerNames_ = {}, + ArrayProxyNoTemporaries const & pEnabledExtensionNames_ = {}, + PhysicalDeviceFeatures const * pEnabledFeatures_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , queueCreateInfoCount( static_cast( queueCreateInfos_.size() ) ) + , pQueueCreateInfos( queueCreateInfos_.data() ) + , enabledLayerCount( enabledLayerCount_ ) + , ppEnabledLayerNames( ppEnabledLayerNames_ ) + , enabledExtensionCount( static_cast( pEnabledExtensionNames_.size() ) ) + , ppEnabledExtensionNames( pEnabledExtensionNames_.data() ) + , pEnabledFeatures( pEnabledFeatures_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DeviceCreateInfo & operator=( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + +# if defined( _MSC_VER ) +# pragma warning( pop ) +# elif defined( __clang__ ) +# pragma clang diagnostic pop +# elif defined( __GNUC__ ) +# pragma GCC diagnostic pop +# else +// unknown compiler... just ignore the warnings for yourselves ;) +# endif + +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceCreateInfo & operator=( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + pNext = rhs.pNext; + flags = static_cast( rhs.flags ); + queueCreateInfoCount = rhs.queueCreateInfoCount; + pQueueCreateInfos = reinterpret_cast( rhs.pQueueCreateInfos ); + enabledExtensionCount = rhs.enabledExtensionCount; + ppEnabledExtensionNames = rhs.ppEnabledExtensionNames; + pEnabledFeatures = reinterpret_cast( rhs.pEnabledFeatures ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setFlags( DeviceCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo && setFlags( DeviceCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ ) & VULKAN_HPP_NOEXCEPT + { + queueCreateInfoCount = queueCreateInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo && setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ ) && VULKAN_HPP_NOEXCEPT + { + queueCreateInfoCount = queueCreateInfoCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPQueueCreateInfos( DeviceQueueCreateInfo const * pQueueCreateInfos_ ) & VULKAN_HPP_NOEXCEPT + { + pQueueCreateInfos = pQueueCreateInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo && setPQueueCreateInfos( DeviceQueueCreateInfo const * pQueueCreateInfos_ ) && VULKAN_HPP_NOEXCEPT + { + pQueueCreateInfos = pQueueCreateInfos_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceCreateInfo & setQueueCreateInfos( ArrayProxyNoTemporaries const & queueCreateInfos_ ) VULKAN_HPP_NOEXCEPT + { + queueCreateInfoCount = static_cast( queueCreateInfos_.size() ); + pQueueCreateInfos = queueCreateInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_DEPRECATED( "unused" ) VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) & VULKAN_HPP_NOEXCEPT + { + detail::ignore( enabledLayerCount_ ); + return *this; + } + + VULKAN_HPP_DEPRECATED( "unused" ) VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo && setEnabledLayerCount( uint32_t enabledLayerCount_ ) && VULKAN_HPP_NOEXCEPT + { + detail::ignore( enabledLayerCount_ ); + return std::move( *this ); + } + + VULKAN_HPP_DEPRECATED( "unused" ) + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPpEnabledLayerNames( char const * const * ppEnabledLayerNames_ ) & VULKAN_HPP_NOEXCEPT + { + detail::ignore( ppEnabledLayerNames_ ); + return *this; + } + + VULKAN_HPP_DEPRECATED( "unused" ) + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo && setPpEnabledLayerNames( char const * const * ppEnabledLayerNames_ ) && VULKAN_HPP_NOEXCEPT + { + detail::ignore( ppEnabledLayerNames_ ); + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) & VULKAN_HPP_NOEXCEPT + { + enabledExtensionCount = enabledExtensionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo && setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) && VULKAN_HPP_NOEXCEPT + { + enabledExtensionCount = enabledExtensionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPpEnabledExtensionNames( char const * const * ppEnabledExtensionNames_ ) & VULKAN_HPP_NOEXCEPT + { + ppEnabledExtensionNames = ppEnabledExtensionNames_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo && setPpEnabledExtensionNames( char const * const * ppEnabledExtensionNames_ ) && VULKAN_HPP_NOEXCEPT + { + ppEnabledExtensionNames = ppEnabledExtensionNames_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceCreateInfo & setPEnabledExtensionNames( ArrayProxyNoTemporaries const & pEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT + { + enabledExtensionCount = static_cast( pEnabledExtensionNames_.size() ); + ppEnabledExtensionNames = pEnabledExtensionNames_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & setPEnabledFeatures( PhysicalDeviceFeatures const * pEnabledFeatures_ ) & VULKAN_HPP_NOEXCEPT + { + pEnabledFeatures = pEnabledFeatures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo && setPEnabledFeatures( PhysicalDeviceFeatures const * pEnabledFeatures_ ) && VULKAN_HPP_NOEXCEPT + { + pEnabledFeatures = pEnabledFeatures_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, queueCreateInfoCount, pQueueCreateInfos, enabledExtensionCount, ppEnabledExtensionNames, pEnabledFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = queueCreateInfoCount <=> rhs.queueCreateInfoCount; cmp != 0 ) + return cmp; + if ( auto cmp = pQueueCreateInfos <=> rhs.pQueueCreateInfos; cmp != 0 ) + return cmp; + if ( auto cmp = enabledExtensionCount <=> rhs.enabledExtensionCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < enabledExtensionCount; ++i ) + { + if ( ppEnabledExtensionNames[i] != rhs.ppEnabledExtensionNames[i] ) + if ( auto cmp = strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ); cmp != 0 ) + return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater; + } + if ( auto cmp = pEnabledFeatures <=> rhs.pEnabledFeatures; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueCreateInfoCount == rhs.queueCreateInfoCount ) && + ( pQueueCreateInfos == rhs.pQueueCreateInfos ) && ( enabledExtensionCount == rhs.enabledExtensionCount ) && + std::equal( ppEnabledExtensionNames, + ppEnabledExtensionNames + enabledExtensionCount, + rhs.ppEnabledExtensionNames, + []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } ) && + ( pEnabledFeatures == rhs.pEnabledFeatures ); + } + + bool operator!=( DeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDeviceCreateInfo; + void const * pNext = {}; + DeviceCreateFlags flags = {}; + uint32_t queueCreateInfoCount = {}; + DeviceQueueCreateInfo const * pQueueCreateInfos = {}; + VULKAN_HPP_DEPRECATED( "unused" ) uint32_t enabledLayerCount = {}; + VULKAN_HPP_DEPRECATED( "unused" ) char const * const * ppEnabledLayerNames = {}; + uint32_t enabledExtensionCount = {}; + char const * const * ppEnabledExtensionNames = {}; + PhysicalDeviceFeatures const * pEnabledFeatures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceCreateInfo; + }; + + // wrapper struct for struct VkDeviceMemoryReportCallbackDataEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemoryReportCallbackDataEXT.html + struct DeviceMemoryReportCallbackDataEXT + { + using NativeType = VkDeviceMemoryReportCallbackDataEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceMemoryReportCallbackDataEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceMemoryReportCallbackDataEXT( DeviceMemoryReportFlagsEXT flags_ = {}, + DeviceMemoryReportEventTypeEXT type_ = DeviceMemoryReportEventTypeEXT::eAllocate, + uint64_t memoryObjectId_ = {}, + DeviceSize size_ = {}, + ObjectType objectType_ = ObjectType::eUnknown, + uint64_t objectHandle_ = {}, + uint32_t heapIndex_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , type{ type_ } + , memoryObjectId{ memoryObjectId_ } + , size{ size_ } + , objectType{ objectType_ } + , objectHandle{ objectHandle_ } + , heapIndex{ heapIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceMemoryReportCallbackDataEXT( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryReportCallbackDataEXT( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceMemoryReportCallbackDataEXT( *reinterpret_cast( &rhs ) ) + { + } + + DeviceMemoryReportCallbackDataEXT & operator=( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceMemoryReportCallbackDataEXT & operator=( VkDeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDeviceMemoryReportCallbackDataEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceMemoryReportCallbackDataEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceMemoryReportCallbackDataEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceMemoryReportCallbackDataEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, type, memoryObjectId, size, objectType, objectHandle, heapIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceMemoryReportCallbackDataEXT const & ) const = default; +#else + bool operator==( DeviceMemoryReportCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( type == rhs.type ) && ( memoryObjectId == rhs.memoryObjectId ) && + ( size == rhs.size ) && ( objectType == rhs.objectType ) && ( objectHandle == rhs.objectHandle ) && ( heapIndex == rhs.heapIndex ); +# endif + } + + bool operator!=( DeviceMemoryReportCallbackDataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceMemoryReportCallbackDataEXT; + void * pNext = {}; + DeviceMemoryReportFlagsEXT flags = {}; + DeviceMemoryReportEventTypeEXT type = DeviceMemoryReportEventTypeEXT::eAllocate; + uint64_t memoryObjectId = {}; + DeviceSize size = {}; + ObjectType objectType = ObjectType::eUnknown; + uint64_t objectHandle = {}; + uint32_t heapIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceMemoryReportCallbackDataEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceMemoryReportCallbackDataEXT; + }; + + typedef void( VKAPI_PTR * PFN_DeviceMemoryReportCallbackEXT )( DeviceMemoryReportCallbackDataEXT const * pCallbackData, void * pUserData ); + + // wrapper struct for struct VkDeviceDeviceMemoryReportCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceDeviceMemoryReportCreateInfoEXT.html + struct DeviceDeviceMemoryReportCreateInfoEXT + { + using NativeType = VkDeviceDeviceMemoryReportCreateInfoEXT; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceDeviceMemoryReportCreateInfoEXT( DeviceMemoryReportFlagsEXT flags_ = {}, + PFN_DeviceMemoryReportCallbackEXT pfnUserCallback_ = {}, + void * pUserData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pfnUserCallback{ pfnUserCallback_ } + , pUserData{ pUserData_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceDeviceMemoryReportCreateInfoEXT( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceDeviceMemoryReportCreateInfoEXT( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceDeviceMemoryReportCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic push +# if defined( __clang__ ) +# pragma clang diagnostic ignored "-Wunknown-warning-option" +# endif +# pragma GCC diagnostic ignored "-Wcast-function-type" +# endif + VULKAN_HPP_DEPRECATED( "This constructor is deprecated. Use the one taking function pointer types from the vk-namespace instead." ) + + DeviceDeviceMemoryReportCreateInfoEXT( DeviceMemoryReportFlagsEXT flags_, + PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback_, + void * pUserData_ = {}, + const void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : DeviceDeviceMemoryReportCreateInfoEXT( flags_, reinterpret_cast( pfnUserCallback_ ), pUserData_, pNext_ ) + { + } +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic pop +# endif + + DeviceDeviceMemoryReportCreateInfoEXT & operator=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceDeviceMemoryReportCreateInfoEXT & operator=( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setFlags( DeviceMemoryReportFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT && setFlags( DeviceMemoryReportFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setPfnUserCallback( PFN_DeviceMemoryReportCallbackEXT pfnUserCallback_ ) & + VULKAN_HPP_NOEXCEPT + { + pfnUserCallback = pfnUserCallback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT && setPfnUserCallback( PFN_DeviceMemoryReportCallbackEXT pfnUserCallback_ ) && + VULKAN_HPP_NOEXCEPT + { + pfnUserCallback = pfnUserCallback_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & setPUserData( void * pUserData_ ) & VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT && setPUserData( void * pUserData_ ) && VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return std::move( *this ); + } + +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic push +# if defined( __clang__ ) +# pragma clang diagnostic ignored "-Wunknown-warning-option" +# endif +# pragma GCC diagnostic ignored "-Wcast-function-type" +# endif + VULKAN_HPP_DEPRECATED( "This setter is deprecated. Use the one taking a function pointer type from the vk-namespace instead." ) + + DeviceDeviceMemoryReportCreateInfoEXT & setPfnUserCallback( PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT + { + return setPfnUserCallback( reinterpret_cast( pfnUserCallback_ ) ); + } +# if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic pop +# endif +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceDeviceMemoryReportCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceDeviceMemoryReportCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceDeviceMemoryReportCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceDeviceMemoryReportCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pfnUserCallback, pUserData ); + } +#endif + + bool operator==( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +#if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +#else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pfnUserCallback == rhs.pfnUserCallback ) && + ( pUserData == rhs.pUserData ); +#endif + } + + bool operator!=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT; + void const * pNext = {}; + DeviceMemoryReportFlagsEXT flags = {}; + PFN_DeviceMemoryReportCallbackEXT pfnUserCallback = {}; + void * pUserData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceDeviceMemoryReportCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceDeviceMemoryReportCreateInfoEXT; + }; + + // wrapper struct for struct VkDeviceDiagnosticsConfigCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceDiagnosticsConfigCreateInfoNV.html + struct DeviceDiagnosticsConfigCreateInfoNV + { + using NativeType = VkDeviceDiagnosticsConfigCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceDiagnosticsConfigCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( DeviceDiagnosticsConfigFlagsNV flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceDiagnosticsConfigCreateInfoNV( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceDiagnosticsConfigCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + DeviceDiagnosticsConfigCreateInfoNV & operator=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceDiagnosticsConfigCreateInfoNV & operator=( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & setFlags( DeviceDiagnosticsConfigFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV && setFlags( DeviceDiagnosticsConfigFlagsNV flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceDiagnosticsConfigCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceDiagnosticsConfigCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceDiagnosticsConfigCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceDiagnosticsConfigCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceDiagnosticsConfigCreateInfoNV const & ) const = default; +#else + bool operator==( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceDiagnosticsConfigCreateInfoNV; + void const * pNext = {}; + DeviceDiagnosticsConfigFlagsNV flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceDiagnosticsConfigCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceDiagnosticsConfigCreateInfoNV; + }; + + // wrapper struct for struct VkDeviceEventInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceEventInfoEXT.html + struct DeviceEventInfoEXT + { + using NativeType = VkDeviceEventInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceEventInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceEvent{ deviceEvent_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceEventInfoEXT( *reinterpret_cast( &rhs ) ) {} + + DeviceEventInfoEXT & operator=( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceEventInfoEXT & operator=( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & setDeviceEvent( DeviceEventTypeEXT deviceEvent_ ) & VULKAN_HPP_NOEXCEPT + { + deviceEvent = deviceEvent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT && setDeviceEvent( DeviceEventTypeEXT deviceEvent_ ) && VULKAN_HPP_NOEXCEPT + { + deviceEvent = deviceEvent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceEventInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceEventInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceEventInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceEvent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceEventInfoEXT const & ) const = default; +#else + bool operator==( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceEvent == rhs.deviceEvent ); +# endif + } + + bool operator!=( DeviceEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceEventInfoEXT; + void const * pNext = {}; + DeviceEventTypeEXT deviceEvent = DeviceEventTypeEXT::eDisplayHotplug; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceEventInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceEventInfoEXT; + }; + + // wrapper struct for struct VkDeviceFaultAddressInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultAddressInfoKHR.html + struct DeviceFaultAddressInfoKHR + { + using NativeType = VkDeviceFaultAddressInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceFaultAddressInfoKHR( DeviceFaultAddressTypeKHR addressType_ = DeviceFaultAddressTypeKHR::eNone, + DeviceAddress reportedAddress_ = {}, + DeviceSize addressPrecision_ = {} ) VULKAN_HPP_NOEXCEPT + : addressType{ addressType_ } + , reportedAddress{ reportedAddress_ } + , addressPrecision{ addressPrecision_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceFaultAddressInfoKHR( DeviceFaultAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceFaultAddressInfoKHR( VkDeviceFaultAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceFaultAddressInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DeviceFaultAddressInfoKHR & operator=( DeviceFaultAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceFaultAddressInfoKHR & operator=( VkDeviceFaultAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDeviceFaultAddressInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultAddressInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultAddressInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceFaultAddressInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( addressType, reportedAddress, addressPrecision ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceFaultAddressInfoKHR const & ) const = default; +#else + bool operator==( DeviceFaultAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( addressType == rhs.addressType ) && ( reportedAddress == rhs.reportedAddress ) && ( addressPrecision == rhs.addressPrecision ); +# endif + } + + bool operator!=( DeviceFaultAddressInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceFaultAddressTypeKHR addressType = DeviceFaultAddressTypeKHR::eNone; + DeviceAddress reportedAddress = {}; + DeviceSize addressPrecision = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceFaultAddressInfoKHR; + }; +#endif + using DeviceFaultAddressInfoEXT = DeviceFaultAddressInfoKHR; + + // wrapper struct for struct VkDeviceFaultCountsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultCountsEXT.html + struct DeviceFaultCountsEXT + { + using NativeType = VkDeviceFaultCountsEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceFaultCountsEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceFaultCountsEXT( uint32_t addressInfoCount_ = {}, + uint32_t vendorInfoCount_ = {}, + DeviceSize vendorBinarySize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , addressInfoCount{ addressInfoCount_ } + , vendorInfoCount{ vendorInfoCount_ } + , vendorBinarySize{ vendorBinarySize_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceFaultCountsEXT( DeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceFaultCountsEXT( VkDeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceFaultCountsEXT( *reinterpret_cast( &rhs ) ) + { + } + + DeviceFaultCountsEXT & operator=( DeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceFaultCountsEXT & operator=( VkDeviceFaultCountsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setAddressInfoCount( uint32_t addressInfoCount_ ) & VULKAN_HPP_NOEXCEPT + { + addressInfoCount = addressInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT && setAddressInfoCount( uint32_t addressInfoCount_ ) && VULKAN_HPP_NOEXCEPT + { + addressInfoCount = addressInfoCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setVendorInfoCount( uint32_t vendorInfoCount_ ) & VULKAN_HPP_NOEXCEPT + { + vendorInfoCount = vendorInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT && setVendorInfoCount( uint32_t vendorInfoCount_ ) && VULKAN_HPP_NOEXCEPT + { + vendorInfoCount = vendorInfoCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT & setVendorBinarySize( DeviceSize vendorBinarySize_ ) & VULKAN_HPP_NOEXCEPT + { + vendorBinarySize = vendorBinarySize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultCountsEXT && setVendorBinarySize( DeviceSize vendorBinarySize_ ) && VULKAN_HPP_NOEXCEPT + { + vendorBinarySize = vendorBinarySize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceFaultCountsEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultCountsEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultCountsEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceFaultCountsEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, addressInfoCount, vendorInfoCount, vendorBinarySize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceFaultCountsEXT const & ) const = default; +#else + bool operator==( DeviceFaultCountsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( addressInfoCount == rhs.addressInfoCount ) && ( vendorInfoCount == rhs.vendorInfoCount ) && + ( vendorBinarySize == rhs.vendorBinarySize ); +# endif + } + + bool operator!=( DeviceFaultCountsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceFaultCountsEXT; + void * pNext = {}; + uint32_t addressInfoCount = {}; + uint32_t vendorInfoCount = {}; + DeviceSize vendorBinarySize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceFaultCountsEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceFaultCountsEXT; + }; + + // wrapper struct for struct VkDeviceFaultDebugInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultDebugInfoKHR.html + struct DeviceFaultDebugInfoKHR + { + using NativeType = VkDeviceFaultDebugInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceFaultDebugInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceFaultDebugInfoKHR( uint32_t vendorBinarySize_ = {}, void * pVendorBinaryData_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vendorBinarySize{ vendorBinarySize_ } + , pVendorBinaryData{ pVendorBinaryData_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceFaultDebugInfoKHR( DeviceFaultDebugInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceFaultDebugInfoKHR( VkDeviceFaultDebugInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceFaultDebugInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DeviceFaultDebugInfoKHR & operator=( DeviceFaultDebugInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceFaultDebugInfoKHR & operator=( VkDeviceFaultDebugInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDeviceFaultDebugInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultDebugInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultDebugInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceFaultDebugInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vendorBinarySize, pVendorBinaryData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceFaultDebugInfoKHR const & ) const = default; +#else + bool operator==( DeviceFaultDebugInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vendorBinarySize == rhs.vendorBinarySize ) && ( pVendorBinaryData == rhs.pVendorBinaryData ); +# endif + } + + bool operator!=( DeviceFaultDebugInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceFaultDebugInfoKHR; + void * pNext = {}; + uint32_t vendorBinarySize = {}; + void * pVendorBinaryData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceFaultDebugInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceFaultDebugInfoKHR; + }; + + // wrapper struct for struct VkDeviceFaultVendorInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultVendorInfoKHR.html + struct DeviceFaultVendorInfoKHR + { + using NativeType = VkDeviceFaultVendorInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoKHR( std::array const & description_ = {}, + uint64_t vendorFaultCode_ = {}, + uint64_t vendorFaultData_ = {} ) VULKAN_HPP_NOEXCEPT + : description{ description_ } + , vendorFaultCode{ vendorFaultCode_ } + , vendorFaultData{ vendorFaultData_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorInfoKHR( DeviceFaultVendorInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceFaultVendorInfoKHR( VkDeviceFaultVendorInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceFaultVendorInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DeviceFaultVendorInfoKHR & operator=( DeviceFaultVendorInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceFaultVendorInfoKHR & operator=( VkDeviceFaultVendorInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDeviceFaultVendorInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultVendorInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultVendorInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceFaultVendorInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, uint64_t const &, uint64_t const &> reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( description, vendorFaultCode, vendorFaultData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DeviceFaultVendorInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = vendorFaultCode <=> rhs.vendorFaultCode; cmp != 0 ) + return cmp; + if ( auto cmp = vendorFaultData <=> rhs.vendorFaultData; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DeviceFaultVendorInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( strcmp( description, rhs.description ) == 0 ) && ( vendorFaultCode == rhs.vendorFaultCode ) && ( vendorFaultData == rhs.vendorFaultData ); + } + + bool operator!=( DeviceFaultVendorInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + ArrayWrapper1D description = {}; + uint64_t vendorFaultCode = {}; + uint64_t vendorFaultData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceFaultVendorInfoKHR; + }; +#endif + using DeviceFaultVendorInfoEXT = DeviceFaultVendorInfoKHR; + + // wrapper struct for struct VkDeviceFaultInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultInfoEXT.html + struct DeviceFaultInfoEXT + { + using NativeType = VkDeviceFaultInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceFaultInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DeviceFaultInfoEXT( std::array const & description_ = {}, + DeviceFaultAddressInfoKHR * pAddressInfos_ = {}, + DeviceFaultVendorInfoKHR * pVendorInfos_ = {}, + void * pVendorBinaryData_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , description{ description_ } + , pAddressInfos{ pAddressInfos_ } + , pVendorInfos{ pVendorInfos_ } + , pVendorBinaryData{ pVendorBinaryData_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultInfoEXT( DeviceFaultInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceFaultInfoEXT( VkDeviceFaultInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceFaultInfoEXT( *reinterpret_cast( &rhs ) ) {} + + DeviceFaultInfoEXT & operator=( DeviceFaultInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceFaultInfoEXT & operator=( VkDeviceFaultInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDeviceFaultInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceFaultInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + DeviceFaultAddressInfoKHR * const &, + DeviceFaultVendorInfoKHR * const &, + void * const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, description, pAddressInfos, pVendorInfos, pVendorBinaryData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DeviceFaultInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = pAddressInfos <=> rhs.pAddressInfos; cmp != 0 ) + return cmp; + if ( auto cmp = pVendorInfos <=> rhs.pVendorInfos; cmp != 0 ) + return cmp; + if ( auto cmp = pVendorBinaryData <=> rhs.pVendorBinaryData; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DeviceFaultInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( strcmp( description, rhs.description ) == 0 ) && ( pAddressInfos == rhs.pAddressInfos ) && + ( pVendorInfos == rhs.pVendorInfos ) && ( pVendorBinaryData == rhs.pVendorBinaryData ); + } + + bool operator!=( DeviceFaultInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDeviceFaultInfoEXT; + void * pNext = {}; + ArrayWrapper1D description = {}; + DeviceFaultAddressInfoKHR * pAddressInfos = {}; + DeviceFaultVendorInfoKHR * pVendorInfos = {}; + void * pVendorBinaryData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceFaultInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceFaultInfoEXT; + }; + + // wrapper struct for struct VkDeviceFaultInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultInfoKHR.html + struct DeviceFaultInfoKHR + { + using NativeType = VkDeviceFaultInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceFaultInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DeviceFaultInfoKHR( DeviceFaultFlagsKHR flags_ = {}, + uint64_t groupId_ = {}, + std::array const & description_ = {}, + DeviceFaultAddressInfoKHR faultAddressInfo_ = {}, + DeviceFaultAddressInfoKHR instructionAddressInfo_ = {}, + DeviceFaultVendorInfoKHR vendorInfo_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , groupId{ groupId_ } + , description{ description_ } + , faultAddressInfo{ faultAddressInfo_ } + , instructionAddressInfo{ instructionAddressInfo_ } + , vendorInfo{ vendorInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultInfoKHR( DeviceFaultInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceFaultInfoKHR( VkDeviceFaultInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceFaultInfoKHR( *reinterpret_cast( &rhs ) ) {} + + DeviceFaultInfoKHR & operator=( DeviceFaultInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceFaultInfoKHR & operator=( VkDeviceFaultInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDeviceFaultInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceFaultInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + DeviceFaultAddressInfoKHR const &, + DeviceFaultAddressInfoKHR const &, + DeviceFaultVendorInfoKHR const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, groupId, description, faultAddressInfo, instructionAddressInfo, vendorInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DeviceFaultInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = groupId <=> rhs.groupId; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = faultAddressInfo <=> rhs.faultAddressInfo; cmp != 0 ) + return cmp; + if ( auto cmp = instructionAddressInfo <=> rhs.instructionAddressInfo; cmp != 0 ) + return cmp; + if ( auto cmp = vendorInfo <=> rhs.vendorInfo; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DeviceFaultInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( groupId == rhs.groupId ) && + ( strcmp( description, rhs.description ) == 0 ) && ( faultAddressInfo == rhs.faultAddressInfo ) && + ( instructionAddressInfo == rhs.instructionAddressInfo ) && ( vendorInfo == rhs.vendorInfo ); + } + + bool operator!=( DeviceFaultInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDeviceFaultInfoKHR; + void * pNext = {}; + DeviceFaultFlagsKHR flags = {}; + uint64_t groupId = {}; + ArrayWrapper1D description = {}; + DeviceFaultAddressInfoKHR faultAddressInfo = {}; + DeviceFaultAddressInfoKHR instructionAddressInfo = {}; + DeviceFaultVendorInfoKHR vendorInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceFaultInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceFaultInfoKHR; + }; + + // wrapper struct for struct VkDeviceFaultShaderAbortMessageInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultShaderAbortMessageInfoKHR.html + struct DeviceFaultShaderAbortMessageInfoKHR + { + using NativeType = VkDeviceFaultShaderAbortMessageInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceFaultShaderAbortMessageInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DeviceFaultShaderAbortMessageInfoKHR( uint64_t messageDataSize_ = {}, void * pMessageData_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , messageDataSize{ messageDataSize_ } + , pMessageData{ pMessageData_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceFaultShaderAbortMessageInfoKHR( DeviceFaultShaderAbortMessageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceFaultShaderAbortMessageInfoKHR( VkDeviceFaultShaderAbortMessageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceFaultShaderAbortMessageInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DeviceFaultShaderAbortMessageInfoKHR & operator=( DeviceFaultShaderAbortMessageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceFaultShaderAbortMessageInfoKHR & operator=( VkDeviceFaultShaderAbortMessageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDeviceFaultShaderAbortMessageInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultShaderAbortMessageInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultShaderAbortMessageInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceFaultShaderAbortMessageInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, messageDataSize, pMessageData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceFaultShaderAbortMessageInfoKHR const & ) const = default; +#else + bool operator==( DeviceFaultShaderAbortMessageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( messageDataSize == rhs.messageDataSize ) && ( pMessageData == rhs.pMessageData ); +# endif + } + + bool operator!=( DeviceFaultShaderAbortMessageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceFaultShaderAbortMessageInfoKHR; + void * pNext = {}; + uint64_t messageDataSize = {}; + void * pMessageData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceFaultShaderAbortMessageInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceFaultShaderAbortMessageInfoKHR; + }; + + // wrapper struct for struct VkDeviceFaultVendorBinaryHeaderVersionOneKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceFaultVendorBinaryHeaderVersionOneKHR.html + struct DeviceFaultVendorBinaryHeaderVersionOneKHR + { + using NativeType = VkDeviceFaultVendorBinaryHeaderVersionOneKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + DeviceFaultVendorBinaryHeaderVersionOneKHR( uint32_t headerSize_ = {}, + DeviceFaultVendorBinaryHeaderVersionKHR headerVersion_ = DeviceFaultVendorBinaryHeaderVersionKHR::eOne, + uint32_t vendorID_ = {}, + uint32_t deviceID_ = {}, + uint32_t driverVersion_ = {}, + std::array const & pipelineCacheUUID_ = {}, + uint32_t applicationNameOffset_ = {}, + uint32_t applicationVersion_ = {}, + uint32_t engineNameOffset_ = {}, + uint32_t engineVersion_ = {}, + uint32_t apiVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : headerSize{ headerSize_ } + , headerVersion{ headerVersion_ } + , vendorID{ vendorID_ } + , deviceID{ deviceID_ } + , driverVersion{ driverVersion_ } + , pipelineCacheUUID{ pipelineCacheUUID_ } + , applicationNameOffset{ applicationNameOffset_ } + , applicationVersion{ applicationVersion_ } + , engineNameOffset{ engineNameOffset_ } + , engineVersion{ engineVersion_ } + , apiVersion{ apiVersion_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR( DeviceFaultVendorBinaryHeaderVersionOneKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceFaultVendorBinaryHeaderVersionOneKHR( VkDeviceFaultVendorBinaryHeaderVersionOneKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceFaultVendorBinaryHeaderVersionOneKHR( *reinterpret_cast( &rhs ) ) + { + } + + DeviceFaultVendorBinaryHeaderVersionOneKHR & operator=( DeviceFaultVendorBinaryHeaderVersionOneKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceFaultVendorBinaryHeaderVersionOneKHR & operator=( VkDeviceFaultVendorBinaryHeaderVersionOneKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setHeaderSize( uint32_t headerSize_ ) & VULKAN_HPP_NOEXCEPT + { + headerSize = headerSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setHeaderSize( uint32_t headerSize_ ) && VULKAN_HPP_NOEXCEPT + { + headerSize = headerSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setHeaderVersion( DeviceFaultVendorBinaryHeaderVersionKHR headerVersion_ ) & + VULKAN_HPP_NOEXCEPT + { + headerVersion = headerVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setHeaderVersion( DeviceFaultVendorBinaryHeaderVersionKHR headerVersion_ ) && + VULKAN_HPP_NOEXCEPT + { + headerVersion = headerVersion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setVendorID( uint32_t vendorID_ ) & VULKAN_HPP_NOEXCEPT + { + vendorID = vendorID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setVendorID( uint32_t vendorID_ ) && VULKAN_HPP_NOEXCEPT + { + vendorID = vendorID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setDeviceID( uint32_t deviceID_ ) & VULKAN_HPP_NOEXCEPT + { + deviceID = deviceID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setDeviceID( uint32_t deviceID_ ) && VULKAN_HPP_NOEXCEPT + { + deviceID = deviceID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setDriverVersion( uint32_t driverVersion_ ) & VULKAN_HPP_NOEXCEPT + { + driverVersion = driverVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setDriverVersion( uint32_t driverVersion_ ) && VULKAN_HPP_NOEXCEPT + { + driverVersion = driverVersion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setPipelineCacheUUID( std::array pipelineCacheUUID_ ) & + VULKAN_HPP_NOEXCEPT + { + pipelineCacheUUID = pipelineCacheUUID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setPipelineCacheUUID( std::array pipelineCacheUUID_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelineCacheUUID = pipelineCacheUUID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setApplicationNameOffset( uint32_t applicationNameOffset_ ) & VULKAN_HPP_NOEXCEPT + { + applicationNameOffset = applicationNameOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setApplicationNameOffset( uint32_t applicationNameOffset_ ) && VULKAN_HPP_NOEXCEPT + { + applicationNameOffset = applicationNameOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setApplicationVersion( uint32_t applicationVersion_ ) & VULKAN_HPP_NOEXCEPT + { + applicationVersion = applicationVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setApplicationVersion( uint32_t applicationVersion_ ) && VULKAN_HPP_NOEXCEPT + { + applicationVersion = applicationVersion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setEngineNameOffset( uint32_t engineNameOffset_ ) & VULKAN_HPP_NOEXCEPT + { + engineNameOffset = engineNameOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setEngineNameOffset( uint32_t engineNameOffset_ ) && VULKAN_HPP_NOEXCEPT + { + engineNameOffset = engineNameOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setEngineVersion( uint32_t engineVersion_ ) & VULKAN_HPP_NOEXCEPT + { + engineVersion = engineVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setEngineVersion( uint32_t engineVersion_ ) && VULKAN_HPP_NOEXCEPT + { + engineVersion = engineVersion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR & setApiVersion( uint32_t apiVersion_ ) & VULKAN_HPP_NOEXCEPT + { + apiVersion = apiVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceFaultVendorBinaryHeaderVersionOneKHR && setApiVersion( uint32_t apiVersion_ ) && VULKAN_HPP_NOEXCEPT + { + apiVersion = apiVersion_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceFaultVendorBinaryHeaderVersionOneKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultVendorBinaryHeaderVersionOneKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceFaultVendorBinaryHeaderVersionOneKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceFaultVendorBinaryHeaderVersionOneKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( headerSize, + headerVersion, + vendorID, + deviceID, + driverVersion, + pipelineCacheUUID, + applicationNameOffset, + applicationVersion, + engineNameOffset, + engineVersion, + apiVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceFaultVendorBinaryHeaderVersionOneKHR const & ) const = default; +#else + bool operator==( DeviceFaultVendorBinaryHeaderVersionOneKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( headerSize == rhs.headerSize ) && ( headerVersion == rhs.headerVersion ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) && + ( driverVersion == rhs.driverVersion ) && ( pipelineCacheUUID == rhs.pipelineCacheUUID ) && + ( applicationNameOffset == rhs.applicationNameOffset ) && ( applicationVersion == rhs.applicationVersion ) && + ( engineNameOffset == rhs.engineNameOffset ) && ( engineVersion == rhs.engineVersion ) && ( apiVersion == rhs.apiVersion ); +# endif + } + + bool operator!=( DeviceFaultVendorBinaryHeaderVersionOneKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t headerSize = {}; + DeviceFaultVendorBinaryHeaderVersionKHR headerVersion = DeviceFaultVendorBinaryHeaderVersionKHR::eOne; + uint32_t vendorID = {}; + uint32_t deviceID = {}; + uint32_t driverVersion = {}; + ArrayWrapper1D pipelineCacheUUID = {}; + uint32_t applicationNameOffset = {}; + uint32_t applicationVersion = {}; + uint32_t engineNameOffset = {}; + uint32_t engineVersion = {}; + uint32_t apiVersion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceFaultVendorBinaryHeaderVersionOneKHR; + }; +#endif + using DeviceFaultVendorBinaryHeaderVersionOneEXT = DeviceFaultVendorBinaryHeaderVersionOneKHR; + + // wrapper struct for struct VkDeviceGroupBindSparseInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupBindSparseInfo.html + struct DeviceGroupBindSparseInfo + { + using NativeType = VkDeviceGroupBindSparseInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupBindSparseInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DeviceGroupBindSparseInfo( uint32_t resourceDeviceIndex_ = {}, uint32_t memoryDeviceIndex_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , resourceDeviceIndex{ resourceDeviceIndex_ } + , memoryDeviceIndex{ memoryDeviceIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceGroupBindSparseInfo( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupBindSparseInfo( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupBindSparseInfo( *reinterpret_cast( &rhs ) ) + { + } + + DeviceGroupBindSparseInfo & operator=( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceGroupBindSparseInfo & operator=( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setResourceDeviceIndex( uint32_t resourceDeviceIndex_ ) & VULKAN_HPP_NOEXCEPT + { + resourceDeviceIndex = resourceDeviceIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo && setResourceDeviceIndex( uint32_t resourceDeviceIndex_ ) && VULKAN_HPP_NOEXCEPT + { + resourceDeviceIndex = resourceDeviceIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ ) & VULKAN_HPP_NOEXCEPT + { + memoryDeviceIndex = memoryDeviceIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo && setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ ) && VULKAN_HPP_NOEXCEPT + { + memoryDeviceIndex = memoryDeviceIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceGroupBindSparseInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupBindSparseInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupBindSparseInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceGroupBindSparseInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, resourceDeviceIndex, memoryDeviceIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupBindSparseInfo const & ) const = default; +#else + bool operator==( DeviceGroupBindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( resourceDeviceIndex == rhs.resourceDeviceIndex ) && + ( memoryDeviceIndex == rhs.memoryDeviceIndex ); +# endif + } + + bool operator!=( DeviceGroupBindSparseInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceGroupBindSparseInfo; + void const * pNext = {}; + uint32_t resourceDeviceIndex = {}; + uint32_t memoryDeviceIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceGroupBindSparseInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceGroupBindSparseInfo; + }; + + using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo; + + // wrapper struct for struct VkDeviceGroupCommandBufferBeginInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupCommandBufferBeginInfo.html + struct DeviceGroupCommandBufferBeginInfo + { + using NativeType = VkDeviceGroupCommandBufferBeginInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupCommandBufferBeginInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( uint32_t deviceMask_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceMask{ deviceMask_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupCommandBufferBeginInfo( *reinterpret_cast( &rhs ) ) + { + } + + DeviceGroupCommandBufferBeginInfo & operator=( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceGroupCommandBufferBeginInfo & operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & setDeviceMask( uint32_t deviceMask_ ) & VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo && setDeviceMask( uint32_t deviceMask_ ) && VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceGroupCommandBufferBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupCommandBufferBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupCommandBufferBeginInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceGroupCommandBufferBeginInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupCommandBufferBeginInfo const & ) const = default; +#else + bool operator==( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMask == rhs.deviceMask ); +# endif + } + + bool operator!=( DeviceGroupCommandBufferBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceGroupCommandBufferBeginInfo; + void const * pNext = {}; + uint32_t deviceMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceGroupCommandBufferBeginInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceGroupCommandBufferBeginInfo; + }; + + using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo; + + // wrapper struct for struct VkDeviceGroupDeviceCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupDeviceCreateInfo.html + struct DeviceGroupDeviceCreateInfo + { + using NativeType = VkDeviceGroupDeviceCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupDeviceCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo( uint32_t physicalDeviceCount_ = {}, + PhysicalDevice const * pPhysicalDevices_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , physicalDeviceCount{ physicalDeviceCount_ } + , pPhysicalDevices{ pPhysicalDevices_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupDeviceCreateInfo( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupDeviceCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupDeviceCreateInfo( ArrayProxyNoTemporaries const & physicalDevices_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), physicalDeviceCount( static_cast( physicalDevices_.size() ) ), pPhysicalDevices( physicalDevices_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DeviceGroupDeviceCreateInfo & operator=( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceGroupDeviceCreateInfo & operator=( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPhysicalDeviceCount( uint32_t physicalDeviceCount_ ) & VULKAN_HPP_NOEXCEPT + { + physicalDeviceCount = physicalDeviceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo && setPhysicalDeviceCount( uint32_t physicalDeviceCount_ ) && VULKAN_HPP_NOEXCEPT + { + physicalDeviceCount = physicalDeviceCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & setPPhysicalDevices( PhysicalDevice const * pPhysicalDevices_ ) & VULKAN_HPP_NOEXCEPT + { + pPhysicalDevices = pPhysicalDevices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo && setPPhysicalDevices( PhysicalDevice const * pPhysicalDevices_ ) && VULKAN_HPP_NOEXCEPT + { + pPhysicalDevices = pPhysicalDevices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupDeviceCreateInfo & setPhysicalDevices( ArrayProxyNoTemporaries const & physicalDevices_ ) VULKAN_HPP_NOEXCEPT + { + physicalDeviceCount = static_cast( physicalDevices_.size() ); + pPhysicalDevices = physicalDevices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceGroupDeviceCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupDeviceCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceGroupDeviceCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, physicalDeviceCount, pPhysicalDevices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupDeviceCreateInfo const & ) const = default; +#else + bool operator==( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( physicalDeviceCount == rhs.physicalDeviceCount ) && + ( pPhysicalDevices == rhs.pPhysicalDevices ); +# endif + } + + bool operator!=( DeviceGroupDeviceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceGroupDeviceCreateInfo; + void const * pNext = {}; + uint32_t physicalDeviceCount = {}; + PhysicalDevice const * pPhysicalDevices = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceGroupDeviceCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceGroupDeviceCreateInfo; + }; + + using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo; + + // wrapper struct for struct VkDeviceGroupPresentCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupPresentCapabilitiesKHR.html + struct DeviceGroupPresentCapabilitiesKHR + { + using NativeType = VkDeviceGroupPresentCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupPresentCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR( std::array const & presentMask_ = {}, + DeviceGroupPresentModeFlagsKHR modes_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentMask{ presentMask_ } + , modes{ modes_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupPresentCapabilitiesKHR( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupPresentCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + DeviceGroupPresentCapabilitiesKHR & operator=( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceGroupPresentCapabilitiesKHR & operator=( VkDeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDeviceGroupPresentCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupPresentCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupPresentCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceGroupPresentCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, DeviceGroupPresentModeFlagsKHR const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentMask, modes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupPresentCapabilitiesKHR const & ) const = default; +#else + bool operator==( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentMask == rhs.presentMask ) && ( modes == rhs.modes ); +# endif + } + + bool operator!=( DeviceGroupPresentCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHR; + void * pNext = {}; + ArrayWrapper1D presentMask = {}; + DeviceGroupPresentModeFlagsKHR modes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceGroupPresentCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceGroupPresentCapabilitiesKHR; + }; + + // wrapper struct for struct VkDeviceGroupPresentInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupPresentInfoKHR.html + struct DeviceGroupPresentInfoKHR + { + using NativeType = VkDeviceGroupPresentInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupPresentInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupPresentInfoKHR( uint32_t swapchainCount_ = {}, + uint32_t const * pDeviceMasks_ = {}, + DeviceGroupPresentModeFlagBitsKHR mode_ = DeviceGroupPresentModeFlagBitsKHR::eLocal, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchainCount{ swapchainCount_ } + , pDeviceMasks{ pDeviceMasks_ } + , mode{ mode_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceGroupPresentInfoKHR( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupPresentInfoKHR( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupPresentInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupPresentInfoKHR( ArrayProxyNoTemporaries const & deviceMasks_, + DeviceGroupPresentModeFlagBitsKHR mode_ = DeviceGroupPresentModeFlagBitsKHR::eLocal, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), swapchainCount( static_cast( deviceMasks_.size() ) ), pDeviceMasks( deviceMasks_.data() ), mode( mode_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DeviceGroupPresentInfoKHR & operator=( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceGroupPresentInfoKHR & operator=( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) & VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR && setSwapchainCount( uint32_t swapchainCount_ ) && VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setPDeviceMasks( uint32_t const * pDeviceMasks_ ) & VULKAN_HPP_NOEXCEPT + { + pDeviceMasks = pDeviceMasks_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR && setPDeviceMasks( uint32_t const * pDeviceMasks_ ) && VULKAN_HPP_NOEXCEPT + { + pDeviceMasks = pDeviceMasks_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupPresentInfoKHR & setDeviceMasks( ArrayProxyNoTemporaries const & deviceMasks_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( deviceMasks_.size() ); + pDeviceMasks = deviceMasks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & setMode( DeviceGroupPresentModeFlagBitsKHR mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR && setMode( DeviceGroupPresentModeFlagBitsKHR mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceGroupPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupPresentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupPresentInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceGroupPresentInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pDeviceMasks, mode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupPresentInfoKHR const & ) const = default; +#else + bool operator==( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pDeviceMasks == rhs.pDeviceMasks ) && + ( mode == rhs.mode ); +# endif + } + + bool operator!=( DeviceGroupPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceGroupPresentInfoKHR; + void const * pNext = {}; + uint32_t swapchainCount = {}; + uint32_t const * pDeviceMasks = {}; + DeviceGroupPresentModeFlagBitsKHR mode = DeviceGroupPresentModeFlagBitsKHR::eLocal; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceGroupPresentInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceGroupPresentInfoKHR; + }; + + // wrapper struct for struct VkDeviceGroupRenderPassBeginInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupRenderPassBeginInfo.html + struct DeviceGroupRenderPassBeginInfo + { + using NativeType = VkDeviceGroupRenderPassBeginInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupRenderPassBeginInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo( uint32_t deviceMask_ = {}, + uint32_t deviceRenderAreaCount_ = {}, + Rect2D const * pDeviceRenderAreas_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceMask{ deviceMask_ } + , deviceRenderAreaCount{ deviceRenderAreaCount_ } + , pDeviceRenderAreas{ pDeviceRenderAreas_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupRenderPassBeginInfo( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupRenderPassBeginInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupRenderPassBeginInfo( uint32_t deviceMask_, ArrayProxyNoTemporaries const & deviceRenderAreas_, void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , deviceMask( deviceMask_ ) + , deviceRenderAreaCount( static_cast( deviceRenderAreas_.size() ) ) + , pDeviceRenderAreas( deviceRenderAreas_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DeviceGroupRenderPassBeginInfo & operator=( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceGroupRenderPassBeginInfo & operator=( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setDeviceMask( uint32_t deviceMask_ ) & VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo && setDeviceMask( uint32_t deviceMask_ ) && VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ ) & VULKAN_HPP_NOEXCEPT + { + deviceRenderAreaCount = deviceRenderAreaCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo && setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ ) && VULKAN_HPP_NOEXCEPT + { + deviceRenderAreaCount = deviceRenderAreaCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & setPDeviceRenderAreas( Rect2D const * pDeviceRenderAreas_ ) & VULKAN_HPP_NOEXCEPT + { + pDeviceRenderAreas = pDeviceRenderAreas_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo && setPDeviceRenderAreas( Rect2D const * pDeviceRenderAreas_ ) && VULKAN_HPP_NOEXCEPT + { + pDeviceRenderAreas = pDeviceRenderAreas_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupRenderPassBeginInfo & setDeviceRenderAreas( ArrayProxyNoTemporaries const & deviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT + { + deviceRenderAreaCount = static_cast( deviceRenderAreas_.size() ); + pDeviceRenderAreas = deviceRenderAreas_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceGroupRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupRenderPassBeginInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceGroupRenderPassBeginInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceMask, deviceRenderAreaCount, pDeviceRenderAreas ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupRenderPassBeginInfo const & ) const = default; +#else + bool operator==( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMask == rhs.deviceMask ) && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount ) && + ( pDeviceRenderAreas == rhs.pDeviceRenderAreas ); +# endif + } + + bool operator!=( DeviceGroupRenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceGroupRenderPassBeginInfo; + void const * pNext = {}; + uint32_t deviceMask = {}; + uint32_t deviceRenderAreaCount = {}; + Rect2D const * pDeviceRenderAreas = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceGroupRenderPassBeginInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceGroupRenderPassBeginInfo; + }; + + using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo; + + // wrapper struct for struct VkDeviceGroupSubmitInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupSubmitInfo.html + struct DeviceGroupSubmitInfo + { + using NativeType = VkDeviceGroupSubmitInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupSubmitInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo( uint32_t waitSemaphoreCount_ = {}, + uint32_t const * pWaitSemaphoreDeviceIndices_ = {}, + uint32_t commandBufferCount_ = {}, + uint32_t const * pCommandBufferDeviceMasks_ = {}, + uint32_t signalSemaphoreCount_ = {}, + uint32_t const * pSignalSemaphoreDeviceIndices_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , waitSemaphoreCount{ waitSemaphoreCount_ } + , pWaitSemaphoreDeviceIndices{ pWaitSemaphoreDeviceIndices_ } + , commandBufferCount{ commandBufferCount_ } + , pCommandBufferDeviceMasks{ pCommandBufferDeviceMasks_ } + , signalSemaphoreCount{ signalSemaphoreCount_ } + , pSignalSemaphoreDeviceIndices{ pSignalSemaphoreDeviceIndices_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupSubmitInfo( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupSubmitInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupSubmitInfo( ArrayProxyNoTemporaries const & waitSemaphoreDeviceIndices_, + ArrayProxyNoTemporaries const & commandBufferDeviceMasks_ = {}, + ArrayProxyNoTemporaries const & signalSemaphoreDeviceIndices_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , waitSemaphoreCount( static_cast( waitSemaphoreDeviceIndices_.size() ) ) + , pWaitSemaphoreDeviceIndices( waitSemaphoreDeviceIndices_.data() ) + , commandBufferCount( static_cast( commandBufferDeviceMasks_.size() ) ) + , pCommandBufferDeviceMasks( commandBufferDeviceMasks_.data() ) + , signalSemaphoreCount( static_cast( signalSemaphoreDeviceIndices_.size() ) ) + , pSignalSemaphoreDeviceIndices( signalSemaphoreDeviceIndices_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DeviceGroupSubmitInfo & operator=( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceGroupSubmitInfo & operator=( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) & VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo && setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) && VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPWaitSemaphoreDeviceIndices( uint32_t const * pWaitSemaphoreDeviceIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo && setPWaitSemaphoreDeviceIndices( uint32_t const * pWaitSemaphoreDeviceIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupSubmitInfo & setWaitSemaphoreDeviceIndices( ArrayProxyNoTemporaries const & waitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = static_cast( waitSemaphoreDeviceIndices_.size() ); + pWaitSemaphoreDeviceIndices = waitSemaphoreDeviceIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) & VULKAN_HPP_NOEXCEPT + { + commandBufferCount = commandBufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo && setCommandBufferCount( uint32_t commandBufferCount_ ) && VULKAN_HPP_NOEXCEPT + { + commandBufferCount = commandBufferCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPCommandBufferDeviceMasks( uint32_t const * pCommandBufferDeviceMasks_ ) & VULKAN_HPP_NOEXCEPT + { + pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo && setPCommandBufferDeviceMasks( uint32_t const * pCommandBufferDeviceMasks_ ) && VULKAN_HPP_NOEXCEPT + { + pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupSubmitInfo & setCommandBufferDeviceMasks( ArrayProxyNoTemporaries const & commandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT + { + commandBufferCount = static_cast( commandBufferDeviceMasks_.size() ); + pCommandBufferDeviceMasks = commandBufferDeviceMasks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) & VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = signalSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo && setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) && VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = signalSemaphoreCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & setPSignalSemaphoreDeviceIndices( uint32_t const * pSignalSemaphoreDeviceIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo && setPSignalSemaphoreDeviceIndices( uint32_t const * pSignalSemaphoreDeviceIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DeviceGroupSubmitInfo & setSignalSemaphoreDeviceIndices( ArrayProxyNoTemporaries const & signalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = static_cast( signalSemaphoreDeviceIndices_.size() ); + pSignalSemaphoreDeviceIndices = signalSemaphoreDeviceIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceGroupSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupSubmitInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceGroupSubmitInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + waitSemaphoreCount, + pWaitSemaphoreDeviceIndices, + commandBufferCount, + pCommandBufferDeviceMasks, + signalSemaphoreCount, + pSignalSemaphoreDeviceIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupSubmitInfo const & ) const = default; +#else + bool operator==( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) && + ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices ) && ( commandBufferCount == rhs.commandBufferCount ) && + ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks ) && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) && + ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices ); +# endif + } + + bool operator!=( DeviceGroupSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceGroupSubmitInfo; + void const * pNext = {}; + uint32_t waitSemaphoreCount = {}; + uint32_t const * pWaitSemaphoreDeviceIndices = {}; + uint32_t commandBufferCount = {}; + uint32_t const * pCommandBufferDeviceMasks = {}; + uint32_t signalSemaphoreCount = {}; + uint32_t const * pSignalSemaphoreDeviceIndices = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceGroupSubmitInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceGroupSubmitInfo; + }; + + using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo; + + // wrapper struct for struct VkDeviceGroupSwapchainCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceGroupSwapchainCreateInfoKHR.html + struct DeviceGroupSwapchainCreateInfoKHR + { + using NativeType = VkDeviceGroupSwapchainCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupSwapchainCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR( DeviceGroupPresentModeFlagsKHR modes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , modes{ modes_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceGroupSwapchainCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DeviceGroupSwapchainCreateInfoKHR & operator=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceGroupSwapchainCreateInfoKHR & operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & setModes( DeviceGroupPresentModeFlagsKHR modes_ ) & VULKAN_HPP_NOEXCEPT + { + modes = modes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR && setModes( DeviceGroupPresentModeFlagsKHR modes_ ) && VULKAN_HPP_NOEXCEPT + { + modes = modes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceGroupSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceGroupSwapchainCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceGroupSwapchainCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, modes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceGroupSwapchainCreateInfoKHR const & ) const = default; +#else + bool operator==( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( modes == rhs.modes ); +# endif + } + + bool operator!=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR; + void const * pNext = {}; + DeviceGroupPresentModeFlagsKHR modes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceGroupSwapchainCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceGroupSwapchainCreateInfoKHR; + }; + + // wrapper struct for struct VkImageCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCreateInfo.html + struct ImageCreateInfo + { + using NativeType = VkImageCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageCreateInfo( ImageCreateFlags flags_ = {}, + ImageType imageType_ = ImageType::e1D, + Format format_ = Format::eUndefined, + Extent3D extent_ = {}, + uint32_t mipLevels_ = {}, + uint32_t arrayLayers_ = {}, + SampleCountFlagBits samples_ = SampleCountFlagBits::e1, + ImageTiling tiling_ = ImageTiling::eOptimal, + ImageUsageFlags usage_ = {}, + SharingMode sharingMode_ = SharingMode::eExclusive, + uint32_t queueFamilyIndexCount_ = {}, + uint32_t const * pQueueFamilyIndices_ = {}, + ImageLayout initialLayout_ = ImageLayout::eUndefined, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , imageType{ imageType_ } + , format{ format_ } + , extent{ extent_ } + , mipLevels{ mipLevels_ } + , arrayLayers{ arrayLayers_ } + , samples{ samples_ } + , tiling{ tiling_ } + , usage{ usage_ } + , sharingMode{ sharingMode_ } + , queueFamilyIndexCount{ queueFamilyIndexCount_ } + , pQueueFamilyIndices{ pQueueFamilyIndices_ } + , initialLayout{ initialLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageCreateInfo( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCreateInfo( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCreateInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageCreateInfo( ImageCreateFlags flags_, + ImageType imageType_, + Format format_, + Extent3D extent_, + uint32_t mipLevels_, + uint32_t arrayLayers_, + SampleCountFlagBits samples_, + ImageTiling tiling_, + ImageUsageFlags usage_, + SharingMode sharingMode_, + ArrayProxyNoTemporaries const & queueFamilyIndices_, + ImageLayout initialLayout_ = ImageLayout::eUndefined, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , imageType( imageType_ ) + , format( format_ ) + , extent( extent_ ) + , mipLevels( mipLevels_ ) + , arrayLayers( arrayLayers_ ) + , samples( samples_ ) + , tiling( tiling_ ) + , usage( usage_ ) + , sharingMode( sharingMode_ ) + , queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ) + , pQueueFamilyIndices( queueFamilyIndices_.data() ) + , initialLayout( initialLayout_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ImageCreateInfo & operator=( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageCreateInfo & operator=( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setFlags( ImageCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setFlags( ImageCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setImageType( ImageType imageType_ ) & VULKAN_HPP_NOEXCEPT + { + imageType = imageType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setImageType( ImageType imageType_ ) && VULKAN_HPP_NOEXCEPT + { + imageType = imageType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setExtent( Extent3D const & extent_ ) & VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setExtent( Extent3D const & extent_ ) && VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setMipLevels( uint32_t mipLevels_ ) & VULKAN_HPP_NOEXCEPT + { + mipLevels = mipLevels_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setMipLevels( uint32_t mipLevels_ ) && VULKAN_HPP_NOEXCEPT + { + mipLevels = mipLevels_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setArrayLayers( uint32_t arrayLayers_ ) & VULKAN_HPP_NOEXCEPT + { + arrayLayers = arrayLayers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setArrayLayers( uint32_t arrayLayers_ ) && VULKAN_HPP_NOEXCEPT + { + arrayLayers = arrayLayers_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setSamples( SampleCountFlagBits samples_ ) & VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setSamples( SampleCountFlagBits samples_ ) && VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setTiling( ImageTiling tiling_ ) & VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setTiling( ImageTiling tiling_ ) && VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setUsage( ImageUsageFlags usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setUsage( ImageUsageFlags usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setSharingMode( SharingMode sharingMode_ ) & VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setSharingMode( SharingMode sharingMode_ ) && VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setPQueueFamilyIndices( uint32_t const * pQueueFamilyIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setPQueueFamilyIndices( uint32_t const * pQueueFamilyIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageCreateInfo & setQueueFamilyIndices( ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); + pQueueFamilyIndices = queueFamilyIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & setInitialLayout( ImageLayout initialLayout_ ) & VULKAN_HPP_NOEXCEPT + { + initialLayout = initialLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo && setInitialLayout( ImageLayout initialLayout_ ) && VULKAN_HPP_NOEXCEPT + { + initialLayout = initialLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + imageType, + format, + extent, + mipLevels, + arrayLayers, + samples, + tiling, + usage, + sharingMode, + queueFamilyIndexCount, + pQueueFamilyIndices, + initialLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageCreateInfo const & ) const = default; +#else + bool operator==( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( imageType == rhs.imageType ) && ( format == rhs.format ) && + ( extent == rhs.extent ) && ( mipLevels == rhs.mipLevels ) && ( arrayLayers == rhs.arrayLayers ) && ( samples == rhs.samples ) && + ( tiling == rhs.tiling ) && ( usage == rhs.usage ) && ( sharingMode == rhs.sharingMode ) && + ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ) && + ( initialLayout == rhs.initialLayout ); +# endif + } + + bool operator!=( ImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageCreateInfo; + void const * pNext = {}; + ImageCreateFlags flags = {}; + ImageType imageType = ImageType::e1D; + Format format = Format::eUndefined; + Extent3D extent = {}; + uint32_t mipLevels = {}; + uint32_t arrayLayers = {}; + SampleCountFlagBits samples = SampleCountFlagBits::e1; + ImageTiling tiling = ImageTiling::eOptimal; + ImageUsageFlags usage = {}; + SharingMode sharingMode = SharingMode::eExclusive; + uint32_t queueFamilyIndexCount = {}; + uint32_t const * pQueueFamilyIndices = {}; + ImageLayout initialLayout = ImageLayout::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ImageCreateInfo; + }; + + // wrapper struct for struct VkDeviceImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceImageMemoryRequirements.html + struct DeviceImageMemoryRequirements + { + using NativeType = VkDeviceImageMemoryRequirements; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceImageMemoryRequirements; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceImageMemoryRequirements( ImageCreateInfo const * pCreateInfo_ = {}, + ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pCreateInfo{ pCreateInfo_ } + , planeAspect{ planeAspect_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceImageMemoryRequirements( DeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceImageMemoryRequirements( VkDeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceImageMemoryRequirements( *reinterpret_cast( &rhs ) ) + { + } + + DeviceImageMemoryRequirements & operator=( DeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceImageMemoryRequirements & operator=( VkDeviceImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPCreateInfo( ImageCreateInfo const * pCreateInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pCreateInfo = pCreateInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements && setPCreateInfo( ImageCreateInfo const * pCreateInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pCreateInfo = pCreateInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements & setPlaneAspect( ImageAspectFlagBits planeAspect_ ) & VULKAN_HPP_NOEXCEPT + { + planeAspect = planeAspect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageMemoryRequirements && setPlaneAspect( ImageAspectFlagBits planeAspect_ ) && VULKAN_HPP_NOEXCEPT + { + planeAspect = planeAspect_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceImageMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceImageMemoryRequirements &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceImageMemoryRequirements const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceImageMemoryRequirements *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pCreateInfo, planeAspect ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceImageMemoryRequirements const & ) const = default; +#else + bool operator==( DeviceImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo ) && ( planeAspect == rhs.planeAspect ); +# endif + } + + bool operator!=( DeviceImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceImageMemoryRequirements; + void const * pNext = {}; + ImageCreateInfo const * pCreateInfo = {}; + ImageAspectFlagBits planeAspect = ImageAspectFlagBits::eColor; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceImageMemoryRequirements; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceImageMemoryRequirements; + }; + + using DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements; + + // wrapper struct for struct VkImageSubresource2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageSubresource2.html + struct ImageSubresource2 + { + using NativeType = VkImageSubresource2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageSubresource2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageSubresource2( ImageSubresource imageSubresource_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageSubresource{ imageSubresource_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageSubresource2( ImageSubresource2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSubresource2( VkImageSubresource2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageSubresource2( *reinterpret_cast( &rhs ) ) {} + + ImageSubresource2 & operator=( ImageSubresource2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageSubresource2 & operator=( VkImageSubresource2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSubresource2 & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresource2 && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresource2 & setImageSubresource( ImageSubresource const & imageSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSubresource2 && setImageSubresource( ImageSubresource const & imageSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + imageSubresource = imageSubresource_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageSubresource2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSubresource2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSubresource2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageSubresource2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageSubresource ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSubresource2 const & ) const = default; +#else + bool operator==( ImageSubresource2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageSubresource == rhs.imageSubresource ); +# endif + } + + bool operator!=( ImageSubresource2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageSubresource2; + void * pNext = {}; + ImageSubresource imageSubresource = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageSubresource2; + }; +#endif + + template <> + struct CppType + { + using Type = ImageSubresource2; + }; + + using ImageSubresource2EXT = ImageSubresource2; + using ImageSubresource2KHR = ImageSubresource2; + + // wrapper struct for struct VkDeviceImageSubresourceInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceImageSubresourceInfo.html + struct DeviceImageSubresourceInfo + { + using NativeType = VkDeviceImageSubresourceInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceImageSubresourceInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceImageSubresourceInfo( ImageCreateInfo const * pCreateInfo_ = {}, + ImageSubresource2 const * pSubresource_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pCreateInfo{ pCreateInfo_ } + , pSubresource{ pSubresource_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceImageSubresourceInfo( DeviceImageSubresourceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceImageSubresourceInfo( VkDeviceImageSubresourceInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceImageSubresourceInfo( *reinterpret_cast( &rhs ) ) + { + } + + DeviceImageSubresourceInfo & operator=( DeviceImageSubresourceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceImageSubresourceInfo & operator=( VkDeviceImageSubresourceInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfo & setPCreateInfo( ImageCreateInfo const * pCreateInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pCreateInfo = pCreateInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfo && setPCreateInfo( ImageCreateInfo const * pCreateInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pCreateInfo = pCreateInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfo & setPSubresource( ImageSubresource2 const * pSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + pSubresource = pSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceImageSubresourceInfo && setPSubresource( ImageSubresource2 const * pSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + pSubresource = pSubresource_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceImageSubresourceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceImageSubresourceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceImageSubresourceInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceImageSubresourceInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pCreateInfo, pSubresource ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceImageSubresourceInfo const & ) const = default; +#else + bool operator==( DeviceImageSubresourceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo ) && ( pSubresource == rhs.pSubresource ); +# endif + } + + bool operator!=( DeviceImageSubresourceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceImageSubresourceInfo; + void const * pNext = {}; + ImageCreateInfo const * pCreateInfo = {}; + ImageSubresource2 const * pSubresource = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceImageSubresourceInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceImageSubresourceInfo; + }; + + using DeviceImageSubresourceInfoKHR = DeviceImageSubresourceInfo; + + // wrapper struct for struct VkDeviceMemoryOpaqueCaptureAddressInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemoryOpaqueCaptureAddressInfo.html + struct DeviceMemoryOpaqueCaptureAddressInfo + { + using NativeType = VkDeviceMemoryOpaqueCaptureAddressInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( DeviceMemory memory_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryOpaqueCaptureAddressInfo( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceMemoryOpaqueCaptureAddressInfo( *reinterpret_cast( &rhs ) ) + { + } + + DeviceMemoryOpaqueCaptureAddressInfo & operator=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceMemoryOpaqueCaptureAddressInfo & operator=( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceMemoryOpaqueCaptureAddressInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceMemoryOpaqueCaptureAddressInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceMemoryOpaqueCaptureAddressInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceMemoryOpaqueCaptureAddressInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceMemoryOpaqueCaptureAddressInfo const & ) const = default; +#else + bool operator==( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ); +# endif + } + + bool operator!=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo; + void const * pNext = {}; + DeviceMemory memory = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceMemoryOpaqueCaptureAddressInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceMemoryOpaqueCaptureAddressInfo; + }; + + using DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo; + + // wrapper struct for struct VkDeviceMemoryOverallocationCreateInfoAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceMemoryOverallocationCreateInfoAMD.html + struct DeviceMemoryOverallocationCreateInfoAMD + { + using NativeType = VkDeviceMemoryOverallocationCreateInfoAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceMemoryOverallocationCreateInfoAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DeviceMemoryOverallocationCreateInfoAMD( MemoryOverallocationBehaviorAMD overallocationBehavior_ = MemoryOverallocationBehaviorAMD::eDefault, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , overallocationBehavior{ overallocationBehavior_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceMemoryOverallocationCreateInfoAMD( *reinterpret_cast( &rhs ) ) + { + } + + DeviceMemoryOverallocationCreateInfoAMD & operator=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceMemoryOverallocationCreateInfoAMD & operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD & setOverallocationBehavior( MemoryOverallocationBehaviorAMD overallocationBehavior_ ) & + VULKAN_HPP_NOEXCEPT + { + overallocationBehavior = overallocationBehavior_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD && setOverallocationBehavior( MemoryOverallocationBehaviorAMD overallocationBehavior_ ) && + VULKAN_HPP_NOEXCEPT + { + overallocationBehavior = overallocationBehavior_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceMemoryOverallocationCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceMemoryOverallocationCreateInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceMemoryOverallocationCreateInfoAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceMemoryOverallocationCreateInfoAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, overallocationBehavior ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceMemoryOverallocationCreateInfoAMD const & ) const = default; +#else + bool operator==( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( overallocationBehavior == rhs.overallocationBehavior ); +# endif + } + + bool operator!=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceMemoryOverallocationCreateInfoAMD; + void const * pNext = {}; + MemoryOverallocationBehaviorAMD overallocationBehavior = MemoryOverallocationBehaviorAMD::eDefault; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceMemoryOverallocationCreateInfoAMD; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceMemoryOverallocationCreateInfoAMD; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + union DeviceOrHostAddressConstAMDX + { + using NativeType = VkDeviceOrHostAddressConstAMDX; +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX( DeviceAddress deviceAddress_ = {} ) : deviceAddress( deviceAddress_ ) {} + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX( void const * hostAddress_ ) : hostAddress( hostAddress_ ) {} +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX & setDeviceAddress( DeviceAddress deviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX && setDeviceAddress( DeviceAddress deviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX & setHostAddress( void const * hostAddress_ ) & VULKAN_HPP_NOEXCEPT + { + hostAddress = hostAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceOrHostAddressConstAMDX && setHostAddress( void const * hostAddress_ ) && VULKAN_HPP_NOEXCEPT + { + hostAddress = hostAddress_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceOrHostAddressConstAMDX const &() const + { + return *reinterpret_cast( this ); + } + + operator VkDeviceOrHostAddressConstAMDX &() + { + return *reinterpret_cast( this ); + } + +# ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + DeviceAddress deviceAddress; + void const * hostAddress; +# else + VkDeviceAddress deviceAddress; + void const * hostAddress; +# endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceOrHostAddressConstAMDX; + }; +# endif +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkDevicePipelineBinaryInternalCacheControlKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDevicePipelineBinaryInternalCacheControlKHR.html + struct DevicePipelineBinaryInternalCacheControlKHR + { + using NativeType = VkDevicePipelineBinaryInternalCacheControlKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDevicePipelineBinaryInternalCacheControlKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DevicePipelineBinaryInternalCacheControlKHR( Bool32 disableInternalCache_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , disableInternalCache{ disableInternalCache_ } + { + } + + VULKAN_HPP_CONSTEXPR DevicePipelineBinaryInternalCacheControlKHR( DevicePipelineBinaryInternalCacheControlKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DevicePipelineBinaryInternalCacheControlKHR( VkDevicePipelineBinaryInternalCacheControlKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DevicePipelineBinaryInternalCacheControlKHR( *reinterpret_cast( &rhs ) ) + { + } + + DevicePipelineBinaryInternalCacheControlKHR & operator=( DevicePipelineBinaryInternalCacheControlKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DevicePipelineBinaryInternalCacheControlKHR & operator=( VkDevicePipelineBinaryInternalCacheControlKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DevicePipelineBinaryInternalCacheControlKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DevicePipelineBinaryInternalCacheControlKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DevicePipelineBinaryInternalCacheControlKHR & setDisableInternalCache( Bool32 disableInternalCache_ ) & VULKAN_HPP_NOEXCEPT + { + disableInternalCache = disableInternalCache_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DevicePipelineBinaryInternalCacheControlKHR && setDisableInternalCache( Bool32 disableInternalCache_ ) && VULKAN_HPP_NOEXCEPT + { + disableInternalCache = disableInternalCache_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDevicePipelineBinaryInternalCacheControlKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDevicePipelineBinaryInternalCacheControlKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDevicePipelineBinaryInternalCacheControlKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDevicePipelineBinaryInternalCacheControlKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, disableInternalCache ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DevicePipelineBinaryInternalCacheControlKHR const & ) const = default; +#else + bool operator==( DevicePipelineBinaryInternalCacheControlKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( disableInternalCache == rhs.disableInternalCache ); +# endif + } + + bool operator!=( DevicePipelineBinaryInternalCacheControlKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDevicePipelineBinaryInternalCacheControlKHR; + void const * pNext = {}; + Bool32 disableInternalCache = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DevicePipelineBinaryInternalCacheControlKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DevicePipelineBinaryInternalCacheControlKHR; + }; + + // wrapper struct for struct VkDevicePrivateDataCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDevicePrivateDataCreateInfo.html + struct DevicePrivateDataCreateInfo + { + using NativeType = VkDevicePrivateDataCreateInfo; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDevicePrivateDataCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfo( uint32_t privateDataSlotRequestCount_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , privateDataSlotRequestCount{ privateDataSlotRequestCount_ } + { + } + + VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfo( DevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DevicePrivateDataCreateInfo( VkDevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DevicePrivateDataCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + DevicePrivateDataCreateInfo & operator=( DevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DevicePrivateDataCreateInfo & operator=( VkDevicePrivateDataCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo & setPrivateDataSlotRequestCount( uint32_t privateDataSlotRequestCount_ ) & VULKAN_HPP_NOEXCEPT + { + privateDataSlotRequestCount = privateDataSlotRequestCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfo && setPrivateDataSlotRequestCount( uint32_t privateDataSlotRequestCount_ ) && VULKAN_HPP_NOEXCEPT + { + privateDataSlotRequestCount = privateDataSlotRequestCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDevicePrivateDataCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDevicePrivateDataCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDevicePrivateDataCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDevicePrivateDataCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, privateDataSlotRequestCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DevicePrivateDataCreateInfo const & ) const = default; +#else + bool operator==( DevicePrivateDataCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( privateDataSlotRequestCount == rhs.privateDataSlotRequestCount ); +# endif + } + + bool operator!=( DevicePrivateDataCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDevicePrivateDataCreateInfo; + void const * pNext = {}; + uint32_t privateDataSlotRequestCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DevicePrivateDataCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DevicePrivateDataCreateInfo; + }; + + using DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo; + + // wrapper struct for struct VkDeviceQueueGlobalPriorityCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceQueueGlobalPriorityCreateInfo.html + struct DeviceQueueGlobalPriorityCreateInfo + { + using NativeType = VkDeviceQueueGlobalPriorityCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueGlobalPriorityCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceQueueGlobalPriorityCreateInfo( QueueGlobalPriority globalPriority_ = QueueGlobalPriority::eLow, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , globalPriority{ globalPriority_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceQueueGlobalPriorityCreateInfo( DeviceQueueGlobalPriorityCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueGlobalPriorityCreateInfo( VkDeviceQueueGlobalPriorityCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceQueueGlobalPriorityCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + DeviceQueueGlobalPriorityCreateInfo & operator=( DeviceQueueGlobalPriorityCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceQueueGlobalPriorityCreateInfo & operator=( VkDeviceQueueGlobalPriorityCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfo & setGlobalPriority( QueueGlobalPriority globalPriority_ ) & VULKAN_HPP_NOEXCEPT + { + globalPriority = globalPriority_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfo && setGlobalPriority( QueueGlobalPriority globalPriority_ ) && VULKAN_HPP_NOEXCEPT + { + globalPriority = globalPriority_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceQueueGlobalPriorityCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceQueueGlobalPriorityCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceQueueGlobalPriorityCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceQueueGlobalPriorityCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, globalPriority ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceQueueGlobalPriorityCreateInfo const & ) const = default; +#else + bool operator==( DeviceQueueGlobalPriorityCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( globalPriority == rhs.globalPriority ); +# endif + } + + bool operator!=( DeviceQueueGlobalPriorityCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceQueueGlobalPriorityCreateInfo; + void const * pNext = {}; + QueueGlobalPriority globalPriority = QueueGlobalPriority::eLow; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceQueueGlobalPriorityCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceQueueGlobalPriorityCreateInfo; + }; + + using DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfo; + using DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfo; + + // wrapper struct for struct VkDeviceQueueInfo2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceQueueInfo2.html + struct DeviceQueueInfo2 + { + using NativeType = VkDeviceQueueInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( DeviceQueueCreateFlags flags_ = {}, + uint32_t queueFamilyIndex_ = {}, + uint32_t queueIndex_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , queueFamilyIndex{ queueFamilyIndex_ } + , queueIndex{ queueIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceQueueInfo2( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueInfo2( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : DeviceQueueInfo2( *reinterpret_cast( &rhs ) ) {} + + DeviceQueueInfo2 & operator=( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceQueueInfo2 & operator=( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setFlags( DeviceQueueCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 && setFlags( DeviceQueueCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 && setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & setQueueIndex( uint32_t queueIndex_ ) & VULKAN_HPP_NOEXCEPT + { + queueIndex = queueIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 && setQueueIndex( uint32_t queueIndex_ ) && VULKAN_HPP_NOEXCEPT + { + queueIndex = queueIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceQueueInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceQueueInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceQueueInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceQueueInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, queueFamilyIndex, queueIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceQueueInfo2 const & ) const = default; +#else + bool operator==( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) && + ( queueIndex == rhs.queueIndex ); +# endif + } + + bool operator!=( DeviceQueueInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceQueueInfo2; + void const * pNext = {}; + DeviceQueueCreateFlags flags = {}; + uint32_t queueFamilyIndex = {}; + uint32_t queueIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceQueueInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceQueueInfo2; + }; + + // wrapper struct for struct VkDeviceQueueShaderCoreControlCreateInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceQueueShaderCoreControlCreateInfoARM.html + struct DeviceQueueShaderCoreControlCreateInfoARM + { + using NativeType = VkDeviceQueueShaderCoreControlCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueShaderCoreControlCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceQueueShaderCoreControlCreateInfoARM( uint32_t shaderCoreCount_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderCoreCount{ shaderCoreCount_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceQueueShaderCoreControlCreateInfoARM( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceQueueShaderCoreControlCreateInfoARM( VkDeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceQueueShaderCoreControlCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + DeviceQueueShaderCoreControlCreateInfoARM & operator=( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceQueueShaderCoreControlCreateInfoARM & operator=( VkDeviceQueueShaderCoreControlCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceQueueShaderCoreControlCreateInfoARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueShaderCoreControlCreateInfoARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueShaderCoreControlCreateInfoARM & setShaderCoreCount( uint32_t shaderCoreCount_ ) & VULKAN_HPP_NOEXCEPT + { + shaderCoreCount = shaderCoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceQueueShaderCoreControlCreateInfoARM && setShaderCoreCount( uint32_t shaderCoreCount_ ) && VULKAN_HPP_NOEXCEPT + { + shaderCoreCount = shaderCoreCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceQueueShaderCoreControlCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceQueueShaderCoreControlCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceQueueShaderCoreControlCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceQueueShaderCoreControlCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderCoreCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceQueueShaderCoreControlCreateInfoARM const & ) const = default; +#else + bool operator==( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreCount == rhs.shaderCoreCount ); +# endif + } + + bool operator!=( DeviceQueueShaderCoreControlCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceQueueShaderCoreControlCreateInfoARM; + void * pNext = {}; + uint32_t shaderCoreCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceQueueShaderCoreControlCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceQueueShaderCoreControlCreateInfoARM; + }; + + // wrapper struct for struct VkTensorDescriptionARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorDescriptionARM.html + struct TensorDescriptionARM + { + using NativeType = VkTensorDescriptionARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTensorDescriptionARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TensorDescriptionARM( TensorTilingARM tiling_ = TensorTilingARM::eOptimal, + Format format_ = Format::eUndefined, + uint32_t dimensionCount_ = {}, + int64_t const * pDimensions_ = {}, + int64_t const * pStrides_ = {}, + TensorUsageFlagsARM usage_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tiling{ tiling_ } + , format{ format_ } + , dimensionCount{ dimensionCount_ } + , pDimensions{ pDimensions_ } + , pStrides{ pStrides_ } + , usage{ usage_ } + { + } + + VULKAN_HPP_CONSTEXPR TensorDescriptionARM( TensorDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TensorDescriptionARM( VkTensorDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT + : TensorDescriptionARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TensorDescriptionARM( TensorTilingARM tiling_, + Format format_, + ArrayProxyNoTemporaries const & dimensions_, + ArrayProxyNoTemporaries const & strides_ = {}, + TensorUsageFlagsARM usage_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , tiling( tiling_ ) + , format( format_ ) + , dimensionCount( static_cast( dimensions_.size() ) ) + , pDimensions( dimensions_.data() ) + , pStrides( strides_.data() ) + , usage( usage_ ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( strides_.empty() || ( dimensions_.size() == strides_.size() ) ); +# else + if ( !strides_.empty() && ( dimensions_.size() != strides_.size() ) ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::TensorDescriptionARM::TensorDescriptionARM: !strides_.empty() && ( dimensions_.size() != strides_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + TensorDescriptionARM & operator=( TensorDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TensorDescriptionARM & operator=( VkTensorDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM & setTiling( TensorTilingARM tiling_ ) & VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM && setTiling( TensorTilingARM tiling_ ) && VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM & setDimensionCount( uint32_t dimensionCount_ ) & VULKAN_HPP_NOEXCEPT + { + dimensionCount = dimensionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM && setDimensionCount( uint32_t dimensionCount_ ) && VULKAN_HPP_NOEXCEPT + { + dimensionCount = dimensionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM & setPDimensions( int64_t const * pDimensions_ ) & VULKAN_HPP_NOEXCEPT + { + pDimensions = pDimensions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM && setPDimensions( int64_t const * pDimensions_ ) && VULKAN_HPP_NOEXCEPT + { + pDimensions = pDimensions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TensorDescriptionARM & setDimensions( ArrayProxyNoTemporaries const & dimensions_ ) VULKAN_HPP_NOEXCEPT + { + dimensionCount = static_cast( dimensions_.size() ); + pDimensions = dimensions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM & setPStrides( int64_t const * pStrides_ ) & VULKAN_HPP_NOEXCEPT + { + pStrides = pStrides_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM && setPStrides( int64_t const * pStrides_ ) && VULKAN_HPP_NOEXCEPT + { + pStrides = pStrides_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TensorDescriptionARM & setStrides( ArrayProxyNoTemporaries const & strides_ ) VULKAN_HPP_NOEXCEPT + { + dimensionCount = static_cast( strides_.size() ); + pStrides = strides_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM & setUsage( TensorUsageFlagsARM usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorDescriptionARM && setUsage( TensorUsageFlagsARM usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTensorDescriptionARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorDescriptionARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorDescriptionARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTensorDescriptionARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tiling, format, dimensionCount, pDimensions, pStrides, usage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TensorDescriptionARM const & ) const = default; +#else + bool operator==( TensorDescriptionARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tiling == rhs.tiling ) && ( format == rhs.format ) && + ( dimensionCount == rhs.dimensionCount ) && ( pDimensions == rhs.pDimensions ) && ( pStrides == rhs.pStrides ) && ( usage == rhs.usage ); +# endif + } + + bool operator!=( TensorDescriptionARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTensorDescriptionARM; + void const * pNext = {}; + TensorTilingARM tiling = TensorTilingARM::eOptimal; + Format format = Format::eUndefined; + uint32_t dimensionCount = {}; + int64_t const * pDimensions = {}; + int64_t const * pStrides = {}; + TensorUsageFlagsARM usage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TensorDescriptionARM; + }; +#endif + + template <> + struct CppType + { + using Type = TensorDescriptionARM; + }; + + // wrapper struct for struct VkTensorCreateInfoARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorCreateInfoARM.html + struct TensorCreateInfoARM + { + using NativeType = VkTensorCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTensorCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TensorCreateInfoARM( TensorCreateFlagsARM flags_ = {}, + TensorDescriptionARM const * pDescription_ = {}, + SharingMode sharingMode_ = SharingMode::eExclusive, + uint32_t queueFamilyIndexCount_ = {}, + uint32_t const * pQueueFamilyIndices_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pDescription{ pDescription_ } + , sharingMode{ sharingMode_ } + , queueFamilyIndexCount{ queueFamilyIndexCount_ } + , pQueueFamilyIndices{ pQueueFamilyIndices_ } + { + } + + VULKAN_HPP_CONSTEXPR TensorCreateInfoARM( TensorCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TensorCreateInfoARM( VkTensorCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT : TensorCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TensorCreateInfoARM( TensorCreateFlagsARM flags_, + TensorDescriptionARM const * pDescription_, + SharingMode sharingMode_, + ArrayProxyNoTemporaries const & queueFamilyIndices_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , pDescription( pDescription_ ) + , sharingMode( sharingMode_ ) + , queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ) + , pQueueFamilyIndices( queueFamilyIndices_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + TensorCreateInfoARM & operator=( TensorCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TensorCreateInfoARM & operator=( VkTensorCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM & setFlags( TensorCreateFlagsARM flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM && setFlags( TensorCreateFlagsARM flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM & setPDescription( TensorDescriptionARM const * pDescription_ ) & VULKAN_HPP_NOEXCEPT + { + pDescription = pDescription_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM && setPDescription( TensorDescriptionARM const * pDescription_ ) && VULKAN_HPP_NOEXCEPT + { + pDescription = pDescription_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM & setSharingMode( SharingMode sharingMode_ ) & VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM && setSharingMode( SharingMode sharingMode_ ) && VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM && setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM & setPQueueFamilyIndices( uint32_t const * pQueueFamilyIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCreateInfoARM && setPQueueFamilyIndices( uint32_t const * pQueueFamilyIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TensorCreateInfoARM & setQueueFamilyIndices( ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); + pQueueFamilyIndices = queueFamilyIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTensorCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTensorCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pDescription, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TensorCreateInfoARM const & ) const = default; +#else + bool operator==( TensorCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pDescription == rhs.pDescription ) && + ( sharingMode == rhs.sharingMode ) && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ); +# endif + } + + bool operator!=( TensorCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTensorCreateInfoARM; + void const * pNext = {}; + TensorCreateFlagsARM flags = {}; + TensorDescriptionARM const * pDescription = {}; + SharingMode sharingMode = SharingMode::eExclusive; + uint32_t queueFamilyIndexCount = {}; + uint32_t const * pQueueFamilyIndices = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TensorCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = TensorCreateInfoARM; + }; + + // wrapper struct for struct VkDeviceTensorMemoryRequirementsARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDeviceTensorMemoryRequirementsARM.html + struct DeviceTensorMemoryRequirementsARM + { + using NativeType = VkDeviceTensorMemoryRequirementsARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceTensorMemoryRequirementsARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DeviceTensorMemoryRequirementsARM( TensorCreateInfoARM const * pCreateInfo_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pCreateInfo{ pCreateInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR DeviceTensorMemoryRequirementsARM( DeviceTensorMemoryRequirementsARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DeviceTensorMemoryRequirementsARM( VkDeviceTensorMemoryRequirementsARM const & rhs ) VULKAN_HPP_NOEXCEPT + : DeviceTensorMemoryRequirementsARM( *reinterpret_cast( &rhs ) ) + { + } + + DeviceTensorMemoryRequirementsARM & operator=( DeviceTensorMemoryRequirementsARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DeviceTensorMemoryRequirementsARM & operator=( VkDeviceTensorMemoryRequirementsARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DeviceTensorMemoryRequirementsARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceTensorMemoryRequirementsARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DeviceTensorMemoryRequirementsARM & setPCreateInfo( TensorCreateInfoARM const * pCreateInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pCreateInfo = pCreateInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DeviceTensorMemoryRequirementsARM && setPCreateInfo( TensorCreateInfoARM const * pCreateInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pCreateInfo = pCreateInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDeviceTensorMemoryRequirementsARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceTensorMemoryRequirementsARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDeviceTensorMemoryRequirementsARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDeviceTensorMemoryRequirementsARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pCreateInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DeviceTensorMemoryRequirementsARM const & ) const = default; +#else + bool operator==( DeviceTensorMemoryRequirementsARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pCreateInfo == rhs.pCreateInfo ); +# endif + } + + bool operator!=( DeviceTensorMemoryRequirementsARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDeviceTensorMemoryRequirementsARM; + void const * pNext = {}; + TensorCreateInfoARM const * pCreateInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DeviceTensorMemoryRequirementsARM; + }; +#endif + + template <> + struct CppType + { + using Type = DeviceTensorMemoryRequirementsARM; + }; + + typedef PFN_vkVoidFunction( VKAPI_PTR * PFN_GetInstanceProcAddrLUNARG )( Instance instance, char const * pName ); + + // wrapper struct for struct VkDirectDriverLoadingInfoLUNARG, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDirectDriverLoadingInfoLUNARG.html + struct DirectDriverLoadingInfoLUNARG + { + using NativeType = VkDirectDriverLoadingInfoLUNARG; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDirectDriverLoadingInfoLUNARG; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DirectDriverLoadingInfoLUNARG( DirectDriverLoadingFlagsLUNARG flags_ = {}, + PFN_GetInstanceProcAddrLUNARG pfnGetInstanceProcAddr_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pfnGetInstanceProcAddr{ pfnGetInstanceProcAddr_ } + { + } + + VULKAN_HPP_CONSTEXPR DirectDriverLoadingInfoLUNARG( DirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DirectDriverLoadingInfoLUNARG( VkDirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT + : DirectDriverLoadingInfoLUNARG( *reinterpret_cast( &rhs ) ) + { + } + + DirectDriverLoadingInfoLUNARG & operator=( DirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DirectDriverLoadingInfoLUNARG & operator=( VkDirectDriverLoadingInfoLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG & setFlags( DirectDriverLoadingFlagsLUNARG flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG && setFlags( DirectDriverLoadingFlagsLUNARG flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG & setPfnGetInstanceProcAddr( PFN_GetInstanceProcAddrLUNARG pfnGetInstanceProcAddr_ ) & + VULKAN_HPP_NOEXCEPT + { + pfnGetInstanceProcAddr = pfnGetInstanceProcAddr_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingInfoLUNARG && setPfnGetInstanceProcAddr( PFN_GetInstanceProcAddrLUNARG pfnGetInstanceProcAddr_ ) && + VULKAN_HPP_NOEXCEPT + { + pfnGetInstanceProcAddr = pfnGetInstanceProcAddr_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDirectDriverLoadingInfoLUNARG const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDirectDriverLoadingInfoLUNARG &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDirectDriverLoadingInfoLUNARG const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDirectDriverLoadingInfoLUNARG *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pfnGetInstanceProcAddr ); + } +#endif + + bool operator==( DirectDriverLoadingInfoLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT + { +#if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +#else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pfnGetInstanceProcAddr == rhs.pfnGetInstanceProcAddr ); +#endif + } + + bool operator!=( DirectDriverLoadingInfoLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDirectDriverLoadingInfoLUNARG; + void * pNext = {}; + DirectDriverLoadingFlagsLUNARG flags = {}; + PFN_GetInstanceProcAddrLUNARG pfnGetInstanceProcAddr = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DirectDriverLoadingInfoLUNARG; + }; +#endif + + template <> + struct CppType + { + using Type = DirectDriverLoadingInfoLUNARG; + }; + + // wrapper struct for struct VkDirectDriverLoadingListLUNARG, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDirectDriverLoadingListLUNARG.html + struct DirectDriverLoadingListLUNARG + { + using NativeType = VkDirectDriverLoadingListLUNARG; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDirectDriverLoadingListLUNARG; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DirectDriverLoadingListLUNARG( DirectDriverLoadingModeLUNARG mode_ = DirectDriverLoadingModeLUNARG::eExclusive, + uint32_t driverCount_ = {}, + DirectDriverLoadingInfoLUNARG const * pDrivers_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , mode{ mode_ } + , driverCount{ driverCount_ } + , pDrivers{ pDrivers_ } + { + } + + VULKAN_HPP_CONSTEXPR DirectDriverLoadingListLUNARG( DirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DirectDriverLoadingListLUNARG( VkDirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT + : DirectDriverLoadingListLUNARG( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DirectDriverLoadingListLUNARG( DirectDriverLoadingModeLUNARG mode_, + ArrayProxyNoTemporaries const & drivers_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), mode( mode_ ), driverCount( static_cast( drivers_.size() ) ), pDrivers( drivers_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + DirectDriverLoadingListLUNARG & operator=( DirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DirectDriverLoadingListLUNARG & operator=( VkDirectDriverLoadingListLUNARG const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG & setMode( DirectDriverLoadingModeLUNARG mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG && setMode( DirectDriverLoadingModeLUNARG mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG & setDriverCount( uint32_t driverCount_ ) & VULKAN_HPP_NOEXCEPT + { + driverCount = driverCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG && setDriverCount( uint32_t driverCount_ ) && VULKAN_HPP_NOEXCEPT + { + driverCount = driverCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG & setPDrivers( DirectDriverLoadingInfoLUNARG const * pDrivers_ ) & VULKAN_HPP_NOEXCEPT + { + pDrivers = pDrivers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectDriverLoadingListLUNARG && setPDrivers( DirectDriverLoadingInfoLUNARG const * pDrivers_ ) && VULKAN_HPP_NOEXCEPT + { + pDrivers = pDrivers_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + DirectDriverLoadingListLUNARG & setDrivers( ArrayProxyNoTemporaries const & drivers_ ) VULKAN_HPP_NOEXCEPT + { + driverCount = static_cast( drivers_.size() ); + pDrivers = drivers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDirectDriverLoadingListLUNARG const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDirectDriverLoadingListLUNARG &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDirectDriverLoadingListLUNARG const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDirectDriverLoadingListLUNARG *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mode, driverCount, pDrivers ); + } +#endif + + bool operator==( DirectDriverLoadingListLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT + { +#if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +#else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mode == rhs.mode ) && ( driverCount == rhs.driverCount ) && ( pDrivers == rhs.pDrivers ); +#endif + } + + bool operator!=( DirectDriverLoadingListLUNARG const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eDirectDriverLoadingListLUNARG; + void const * pNext = {}; + DirectDriverLoadingModeLUNARG mode = DirectDriverLoadingModeLUNARG::eExclusive; + uint32_t driverCount = {}; + DirectDriverLoadingInfoLUNARG const * pDrivers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DirectDriverLoadingListLUNARG; + }; +#endif + + template <> + struct CppType + { + using Type = DirectDriverLoadingListLUNARG; + }; + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + // wrapper struct for struct VkDirectFBSurfaceCreateInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDirectFBSurfaceCreateInfoEXT.html + struct DirectFBSurfaceCreateInfoEXT + { + using NativeType = VkDirectFBSurfaceCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDirectfbSurfaceCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DirectFBSurfaceCreateInfoEXT( DirectFBSurfaceCreateFlagsEXT flags_ = {}, + IDirectFB * dfb_ = {}, + IDirectFBSurface * surface_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , dfb{ dfb_ } + , surface{ surface_ } + { + } + + VULKAN_HPP_CONSTEXPR DirectFBSurfaceCreateInfoEXT( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DirectFBSurfaceCreateInfoEXT( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DirectFBSurfaceCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + DirectFBSurfaceCreateInfoEXT & operator=( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DirectFBSurfaceCreateInfoEXT & operator=( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setFlags( DirectFBSurfaceCreateFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT && setFlags( DirectFBSurfaceCreateFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setDfb( IDirectFB * dfb_ ) & VULKAN_HPP_NOEXCEPT + { + dfb = dfb_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT && setDfb( IDirectFB * dfb_ ) && VULKAN_HPP_NOEXCEPT + { + dfb = dfb_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & setSurface( IDirectFBSurface * surface_ ) & VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT && setSurface( IDirectFBSurface * surface_ ) && VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDirectFBSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDirectFBSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDirectFBSurfaceCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDirectFBSurfaceCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, dfb, surface ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DirectFBSurfaceCreateInfoEXT const & ) const = default; +# else + bool operator==( DirectFBSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dfb == rhs.dfb ) && ( surface == rhs.surface ); +# endif + } + + bool operator!=( DirectFBSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eDirectfbSurfaceCreateInfoEXT; + void const * pNext = {}; + DirectFBSurfaceCreateFlagsEXT flags = {}; + IDirectFB * dfb = {}; + IDirectFBSurface * surface = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DirectFBSurfaceCreateInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = DirectFBSurfaceCreateInfoEXT; + }; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkDispatchGraphCountInfoAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDispatchGraphCountInfoAMDX.html + struct DispatchGraphCountInfoAMDX + { + using NativeType = VkDispatchGraphCountInfoAMDX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + DispatchGraphCountInfoAMDX( uint32_t count_ = {}, DeviceOrHostAddressConstAMDX infos_ = {}, uint64_t stride_ = {} ) VULKAN_HPP_NOEXCEPT + : count{ count_ } + , infos{ infos_ } + , stride{ stride_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX( DispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DispatchGraphCountInfoAMDX( VkDispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + : DispatchGraphCountInfoAMDX( *reinterpret_cast( &rhs ) ) + { + } + + DispatchGraphCountInfoAMDX & operator=( DispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DispatchGraphCountInfoAMDX & operator=( VkDispatchGraphCountInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX & setCount( uint32_t count_ ) & VULKAN_HPP_NOEXCEPT + { + count = count_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX && setCount( uint32_t count_ ) && VULKAN_HPP_NOEXCEPT + { + count = count_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX & setInfos( DeviceOrHostAddressConstAMDX const & infos_ ) & VULKAN_HPP_NOEXCEPT + { + infos = infos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX && setInfos( DeviceOrHostAddressConstAMDX const & infos_ ) && VULKAN_HPP_NOEXCEPT + { + infos = infos_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX & setStride( uint64_t stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphCountInfoAMDX && setStride( uint64_t stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDispatchGraphCountInfoAMDX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDispatchGraphCountInfoAMDX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDispatchGraphCountInfoAMDX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDispatchGraphCountInfoAMDX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( count, infos, stride ); + } +# endif + + public: + uint32_t count = {}; + DeviceOrHostAddressConstAMDX infos = {}; + uint64_t stride = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DispatchGraphCountInfoAMDX; + }; +# endif +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkDispatchGraphInfoAMDX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDispatchGraphInfoAMDX.html + struct DispatchGraphInfoAMDX + { + using NativeType = VkDispatchGraphInfoAMDX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX( uint32_t nodeIndex_ = {}, + uint32_t payloadCount_ = {}, + DeviceOrHostAddressConstAMDX payloads_ = {}, + uint64_t payloadStride_ = {} ) VULKAN_HPP_NOEXCEPT + : nodeIndex{ nodeIndex_ } + , payloadCount{ payloadCount_ } + , payloads{ payloads_ } + , payloadStride{ payloadStride_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX( DispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DispatchGraphInfoAMDX( VkDispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + : DispatchGraphInfoAMDX( *reinterpret_cast( &rhs ) ) + { + } + + DispatchGraphInfoAMDX & operator=( DispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DispatchGraphInfoAMDX & operator=( VkDispatchGraphInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setNodeIndex( uint32_t nodeIndex_ ) & VULKAN_HPP_NOEXCEPT + { + nodeIndex = nodeIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX && setNodeIndex( uint32_t nodeIndex_ ) && VULKAN_HPP_NOEXCEPT + { + nodeIndex = nodeIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setPayloadCount( uint32_t payloadCount_ ) & VULKAN_HPP_NOEXCEPT + { + payloadCount = payloadCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX && setPayloadCount( uint32_t payloadCount_ ) && VULKAN_HPP_NOEXCEPT + { + payloadCount = payloadCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setPayloads( DeviceOrHostAddressConstAMDX const & payloads_ ) & VULKAN_HPP_NOEXCEPT + { + payloads = payloads_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX && setPayloads( DeviceOrHostAddressConstAMDX const & payloads_ ) && VULKAN_HPP_NOEXCEPT + { + payloads = payloads_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX & setPayloadStride( uint64_t payloadStride_ ) & VULKAN_HPP_NOEXCEPT + { + payloadStride = payloadStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchGraphInfoAMDX && setPayloadStride( uint64_t payloadStride_ ) && VULKAN_HPP_NOEXCEPT + { + payloadStride = payloadStride_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDispatchGraphInfoAMDX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDispatchGraphInfoAMDX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDispatchGraphInfoAMDX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDispatchGraphInfoAMDX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( nodeIndex, payloadCount, payloads, payloadStride ); + } +# endif + + public: + uint32_t nodeIndex = {}; + uint32_t payloadCount = {}; + DeviceOrHostAddressConstAMDX payloads = {}; + uint64_t payloadStride = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DispatchGraphInfoAMDX; + }; +# endif +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkDispatchIndirect2InfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDispatchIndirect2InfoKHR.html + struct DispatchIndirect2InfoKHR + { + using NativeType = VkDispatchIndirect2InfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDispatchIndirect2InfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DispatchIndirect2InfoKHR( DeviceAddressRangeKHR addressRange_ = {}, + AddressCommandFlagsKHR addressFlags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , addressRange{ addressRange_ } + , addressFlags{ addressFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR DispatchIndirect2InfoKHR( DispatchIndirect2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DispatchIndirect2InfoKHR( VkDispatchIndirect2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DispatchIndirect2InfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DispatchIndirect2InfoKHR & operator=( DispatchIndirect2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DispatchIndirect2InfoKHR & operator=( VkDispatchIndirect2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DispatchIndirect2InfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirect2InfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirect2InfoKHR & setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirect2InfoKHR && setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirect2InfoKHR & setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirect2InfoKHR && setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDispatchIndirect2InfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDispatchIndirect2InfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDispatchIndirect2InfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDispatchIndirect2InfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, addressRange, addressFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DispatchIndirect2InfoKHR const & ) const = default; +#else + bool operator==( DispatchIndirect2InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( addressRange == rhs.addressRange ) && ( addressFlags == rhs.addressFlags ); +# endif + } + + bool operator!=( DispatchIndirect2InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDispatchIndirect2InfoKHR; + void const * pNext = {}; + DeviceAddressRangeKHR addressRange = {}; + AddressCommandFlagsKHR addressFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DispatchIndirect2InfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DispatchIndirect2InfoKHR; + }; + + // wrapper struct for struct VkDispatchIndirectCommand, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDispatchIndirectCommand.html + struct DispatchIndirectCommand + { + using NativeType = VkDispatchIndirectCommand; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DispatchIndirectCommand( uint32_t x_ = {}, uint32_t y_ = {}, uint32_t z_ = {} ) VULKAN_HPP_NOEXCEPT + : x{ x_ } + , y{ y_ } + , z{ z_ } + { + } + + VULKAN_HPP_CONSTEXPR DispatchIndirectCommand( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + : DispatchIndirectCommand( *reinterpret_cast( &rhs ) ) + { + } + + DispatchIndirectCommand & operator=( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DispatchIndirectCommand & operator=( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setX( uint32_t x_ ) & VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand && setX( uint32_t x_ ) && VULKAN_HPP_NOEXCEPT + { + x = x_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setY( uint32_t y_ ) & VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand && setY( uint32_t y_ ) && VULKAN_HPP_NOEXCEPT + { + y = y_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & setZ( uint32_t z_ ) & VULKAN_HPP_NOEXCEPT + { + z = z_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand && setZ( uint32_t z_ ) && VULKAN_HPP_NOEXCEPT + { + z = z_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDispatchIndirectCommand const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDispatchIndirectCommand &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDispatchIndirectCommand const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDispatchIndirectCommand *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y, z ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DispatchIndirectCommand const & ) const = default; +#else + bool operator==( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z ); +# endif + } + + bool operator!=( DispatchIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t x = {}; + uint32_t y = {}; + uint32_t z = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DispatchIndirectCommand; + }; +#endif + + // wrapper struct for struct VkDispatchTileInfoQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDispatchTileInfoQCOM.html + struct DispatchTileInfoQCOM + { + using NativeType = VkDispatchTileInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDispatchTileInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DispatchTileInfoQCOM( void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {} + + VULKAN_HPP_CONSTEXPR DispatchTileInfoQCOM( DispatchTileInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DispatchTileInfoQCOM( VkDispatchTileInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : DispatchTileInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + DispatchTileInfoQCOM & operator=( DispatchTileInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DispatchTileInfoQCOM & operator=( VkDispatchTileInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DispatchTileInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DispatchTileInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDispatchTileInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDispatchTileInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDispatchTileInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDispatchTileInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DispatchTileInfoQCOM const & ) const = default; +#else + bool operator==( DispatchTileInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( DispatchTileInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDispatchTileInfoQCOM; + void const * pNext = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DispatchTileInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = DispatchTileInfoQCOM; + }; + + // wrapper struct for struct VkDisplayEventInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayEventInfoEXT.html + struct DisplayEventInfoEXT + { + using NativeType = VkDisplayEventInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayEventInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , displayEvent{ displayEvent_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DisplayEventInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + DisplayEventInfoEXT & operator=( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayEventInfoEXT & operator=( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & setDisplayEvent( DisplayEventTypeEXT displayEvent_ ) & VULKAN_HPP_NOEXCEPT + { + displayEvent = displayEvent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT && setDisplayEvent( DisplayEventTypeEXT displayEvent_ ) && VULKAN_HPP_NOEXCEPT + { + displayEvent = displayEvent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDisplayEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayEventInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayEventInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayEventInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, displayEvent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayEventInfoEXT const & ) const = default; +#else + bool operator==( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayEvent == rhs.displayEvent ); +# endif + } + + bool operator!=( DisplayEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayEventInfoEXT; + void const * pNext = {}; + DisplayEventTypeEXT displayEvent = DisplayEventTypeEXT::eFirstPixelOut; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayEventInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayEventInfoEXT; + }; + + // wrapper struct for struct VkDisplayModeParametersKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayModeParametersKHR.html + struct DisplayModeParametersKHR + { + using NativeType = VkDisplayModeParametersKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( Extent2D visibleRegion_ = {}, uint32_t refreshRate_ = {} ) VULKAN_HPP_NOEXCEPT + : visibleRegion{ visibleRegion_ } + , refreshRate{ refreshRate_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayModeParametersKHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayModeParametersKHR & operator=( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayModeParametersKHR & operator=( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & setVisibleRegion( Extent2D const & visibleRegion_ ) & VULKAN_HPP_NOEXCEPT + { + visibleRegion = visibleRegion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR && setVisibleRegion( Extent2D const & visibleRegion_ ) && VULKAN_HPP_NOEXCEPT + { + visibleRegion = visibleRegion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & setRefreshRate( uint32_t refreshRate_ ) & VULKAN_HPP_NOEXCEPT + { + refreshRate = refreshRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR && setRefreshRate( uint32_t refreshRate_ ) && VULKAN_HPP_NOEXCEPT + { + refreshRate = refreshRate_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDisplayModeParametersKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayModeParametersKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayModeParametersKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayModeParametersKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( visibleRegion, refreshRate ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayModeParametersKHR const & ) const = default; +#else + bool operator==( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( visibleRegion == rhs.visibleRegion ) && ( refreshRate == rhs.refreshRate ); +# endif + } + + bool operator!=( DisplayModeParametersKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Extent2D visibleRegion = {}; + uint32_t refreshRate = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayModeParametersKHR; + }; +#endif + + // wrapper struct for struct VkDisplayModeCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayModeCreateInfoKHR.html + struct DisplayModeCreateInfoKHR + { + using NativeType = VkDisplayModeCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayModeCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = {}, + DisplayModeParametersKHR parameters_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , parameters{ parameters_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayModeCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayModeCreateInfoKHR & operator=( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayModeCreateInfoKHR & operator=( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setFlags( DisplayModeCreateFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR && setFlags( DisplayModeCreateFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & setParameters( DisplayModeParametersKHR const & parameters_ ) & VULKAN_HPP_NOEXCEPT + { + parameters = parameters_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR && setParameters( DisplayModeParametersKHR const & parameters_ ) && VULKAN_HPP_NOEXCEPT + { + parameters = parameters_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDisplayModeCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayModeCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayModeCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayModeCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, parameters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayModeCreateInfoKHR const & ) const = default; +#else + bool operator==( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( parameters == rhs.parameters ); +# endif + } + + bool operator!=( DisplayModeCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayModeCreateInfoKHR; + void const * pNext = {}; + DisplayModeCreateFlagsKHR flags = {}; + DisplayModeParametersKHR parameters = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayModeCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayModeCreateInfoKHR; + }; + + // wrapper struct for struct VkDisplayModePropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayModePropertiesKHR.html + struct DisplayModePropertiesKHR + { + using NativeType = VkDisplayModePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR( DisplayModeKHR displayMode_ = {}, DisplayModeParametersKHR parameters_ = {} ) VULKAN_HPP_NOEXCEPT + : displayMode{ displayMode_ } + , parameters{ parameters_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModePropertiesKHR( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayModePropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayModePropertiesKHR & operator=( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayModePropertiesKHR & operator=( VkDisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDisplayModePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayModePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayModePropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayModePropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( displayMode, parameters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayModePropertiesKHR const & ) const = default; +#else + bool operator==( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( displayMode == rhs.displayMode ) && ( parameters == rhs.parameters ); +# endif + } + + bool operator!=( DisplayModePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DisplayModeKHR displayMode = {}; + DisplayModeParametersKHR parameters = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayModePropertiesKHR; + }; +#endif + + // wrapper struct for struct VkDisplayModeProperties2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayModeProperties2KHR.html + struct DisplayModeProperties2KHR + { + using NativeType = VkDisplayModeProperties2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayModeProperties2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR( DisplayModePropertiesKHR displayModeProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , displayModeProperties{ displayModeProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModeProperties2KHR( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayModeProperties2KHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayModeProperties2KHR & operator=( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayModeProperties2KHR & operator=( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDisplayModeProperties2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayModeProperties2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayModeProperties2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayModeProperties2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, displayModeProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayModeProperties2KHR const & ) const = default; +#else + bool operator==( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayModeProperties == rhs.displayModeProperties ); +# endif + } + + bool operator!=( DisplayModeProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayModeProperties2KHR; + void * pNext = {}; + DisplayModePropertiesKHR displayModeProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayModeProperties2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayModeProperties2KHR; + }; + + // wrapper struct for struct VkDisplayModeStereoPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayModeStereoPropertiesNV.html + struct DisplayModeStereoPropertiesNV + { + using NativeType = VkDisplayModeStereoPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayModeStereoPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayModeStereoPropertiesNV( Bool32 hdmi3DSupported_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , hdmi3DSupported{ hdmi3DSupported_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayModeStereoPropertiesNV( DisplayModeStereoPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayModeStereoPropertiesNV( VkDisplayModeStereoPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayModeStereoPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + DisplayModeStereoPropertiesNV & operator=( DisplayModeStereoPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayModeStereoPropertiesNV & operator=( VkDisplayModeStereoPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDisplayModeStereoPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayModeStereoPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayModeStereoPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayModeStereoPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hdmi3DSupported ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayModeStereoPropertiesNV const & ) const = default; +#else + bool operator==( DisplayModeStereoPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hdmi3DSupported == rhs.hdmi3DSupported ); +# endif + } + + bool operator!=( DisplayModeStereoPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayModeStereoPropertiesNV; + void * pNext = {}; + Bool32 hdmi3DSupported = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayModeStereoPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayModeStereoPropertiesNV; + }; + + // wrapper struct for struct VkDisplayNativeHdrSurfaceCapabilitiesAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayNativeHdrSurfaceCapabilitiesAMD.html + struct DisplayNativeHdrSurfaceCapabilitiesAMD + { + using NativeType = VkDisplayNativeHdrSurfaceCapabilitiesAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( Bool32 localDimmingSupport_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , localDimmingSupport{ localDimmingSupport_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayNativeHdrSurfaceCapabilitiesAMD( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayNativeHdrSurfaceCapabilitiesAMD( *reinterpret_cast( &rhs ) ) + { + } + + DisplayNativeHdrSurfaceCapabilitiesAMD & operator=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayNativeHdrSurfaceCapabilitiesAMD & operator=( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayNativeHdrSurfaceCapabilitiesAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayNativeHdrSurfaceCapabilitiesAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayNativeHdrSurfaceCapabilitiesAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, localDimmingSupport ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayNativeHdrSurfaceCapabilitiesAMD const & ) const = default; +#else + bool operator==( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( localDimmingSupport == rhs.localDimmingSupport ); +# endif + } + + bool operator!=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD; + void * pNext = {}; + Bool32 localDimmingSupport = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayNativeHdrSurfaceCapabilitiesAMD; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayNativeHdrSurfaceCapabilitiesAMD; + }; + + // wrapper struct for struct VkDisplayPlaneCapabilitiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilitiesKHR.html + struct DisplayPlaneCapabilitiesKHR + { + using NativeType = VkDisplayPlaneCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilitiesKHR( DisplayPlaneAlphaFlagsKHR supportedAlpha_ = {}, + Offset2D minSrcPosition_ = {}, + Offset2D maxSrcPosition_ = {}, + Extent2D minSrcExtent_ = {}, + Extent2D maxSrcExtent_ = {}, + Offset2D minDstPosition_ = {}, + Offset2D maxDstPosition_ = {}, + Extent2D minDstExtent_ = {}, + Extent2D maxDstExtent_ = {} ) VULKAN_HPP_NOEXCEPT + : supportedAlpha{ supportedAlpha_ } + , minSrcPosition{ minSrcPosition_ } + , maxSrcPosition{ maxSrcPosition_ } + , minSrcExtent{ minSrcExtent_ } + , maxSrcExtent{ maxSrcExtent_ } + , minDstPosition{ minDstPosition_ } + , maxDstPosition{ maxDstPosition_ } + , minDstExtent{ minDstExtent_ } + , maxDstExtent{ maxDstExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilitiesKHR( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneCapabilitiesKHR( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPlaneCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayPlaneCapabilitiesKHR & operator=( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayPlaneCapabilitiesKHR & operator=( VkDisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDisplayPlaneCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPlaneCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPlaneCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayPlaneCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( supportedAlpha, minSrcPosition, maxSrcPosition, minSrcExtent, maxSrcExtent, minDstPosition, maxDstPosition, minDstExtent, maxDstExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPlaneCapabilitiesKHR const & ) const = default; +#else + bool operator==( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( supportedAlpha == rhs.supportedAlpha ) && ( minSrcPosition == rhs.minSrcPosition ) && ( maxSrcPosition == rhs.maxSrcPosition ) && + ( minSrcExtent == rhs.minSrcExtent ) && ( maxSrcExtent == rhs.maxSrcExtent ) && ( minDstPosition == rhs.minDstPosition ) && + ( maxDstPosition == rhs.maxDstPosition ) && ( minDstExtent == rhs.minDstExtent ) && ( maxDstExtent == rhs.maxDstExtent ); +# endif + } + + bool operator!=( DisplayPlaneCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DisplayPlaneAlphaFlagsKHR supportedAlpha = {}; + Offset2D minSrcPosition = {}; + Offset2D maxSrcPosition = {}; + Extent2D minSrcExtent = {}; + Extent2D maxSrcExtent = {}; + Offset2D minDstPosition = {}; + Offset2D maxDstPosition = {}; + Extent2D minDstExtent = {}; + Extent2D maxDstExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayPlaneCapabilitiesKHR; + }; +#endif + + // wrapper struct for struct VkDisplayPlaneCapabilities2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPlaneCapabilities2KHR.html + struct DisplayPlaneCapabilities2KHR + { + using NativeType = VkDisplayPlaneCapabilities2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneCapabilities2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR( DisplayPlaneCapabilitiesKHR capabilities_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , capabilities{ capabilities_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPlaneCapabilities2KHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayPlaneCapabilities2KHR & operator=( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayPlaneCapabilities2KHR & operator=( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDisplayPlaneCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPlaneCapabilities2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPlaneCapabilities2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayPlaneCapabilities2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, capabilities ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPlaneCapabilities2KHR const & ) const = default; +#else + bool operator==( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( capabilities == rhs.capabilities ); +# endif + } + + bool operator!=( DisplayPlaneCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayPlaneCapabilities2KHR; + void * pNext = {}; + DisplayPlaneCapabilitiesKHR capabilities = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayPlaneCapabilities2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayPlaneCapabilities2KHR; + }; + + // wrapper struct for struct VkDisplayPlaneInfo2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPlaneInfo2KHR.html + struct DisplayPlaneInfo2KHR + { + using NativeType = VkDisplayPlaneInfo2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneInfo2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR( DisplayModeKHR mode_ = {}, uint32_t planeIndex_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , mode{ mode_ } + , planeIndex{ planeIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneInfo2KHR( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPlaneInfo2KHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayPlaneInfo2KHR & operator=( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayPlaneInfo2KHR & operator=( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setMode( DisplayModeKHR mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR && setMode( DisplayModeKHR mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & setPlaneIndex( uint32_t planeIndex_ ) & VULKAN_HPP_NOEXCEPT + { + planeIndex = planeIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR && setPlaneIndex( uint32_t planeIndex_ ) && VULKAN_HPP_NOEXCEPT + { + planeIndex = planeIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDisplayPlaneInfo2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPlaneInfo2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPlaneInfo2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayPlaneInfo2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mode, planeIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPlaneInfo2KHR const & ) const = default; +#else + bool operator==( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mode == rhs.mode ) && ( planeIndex == rhs.planeIndex ); +# endif + } + + bool operator!=( DisplayPlaneInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayPlaneInfo2KHR; + void const * pNext = {}; + DisplayModeKHR mode = {}; + uint32_t planeIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayPlaneInfo2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayPlaneInfo2KHR; + }; + + // wrapper struct for struct VkDisplayPlanePropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPlanePropertiesKHR.html + struct DisplayPlanePropertiesKHR + { + using NativeType = VkDisplayPlanePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR( DisplayKHR currentDisplay_ = {}, uint32_t currentStackIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : currentDisplay{ currentDisplay_ } + , currentStackIndex{ currentStackIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlanePropertiesKHR( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPlanePropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayPlanePropertiesKHR & operator=( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayPlanePropertiesKHR & operator=( VkDisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDisplayPlanePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPlanePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPlanePropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayPlanePropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( currentDisplay, currentStackIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPlanePropertiesKHR const & ) const = default; +#else + bool operator==( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( currentDisplay == rhs.currentDisplay ) && ( currentStackIndex == rhs.currentStackIndex ); +# endif + } + + bool operator!=( DisplayPlanePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DisplayKHR currentDisplay = {}; + uint32_t currentStackIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayPlanePropertiesKHR; + }; +#endif + + // wrapper struct for struct VkDisplayPlaneProperties2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPlaneProperties2KHR.html + struct DisplayPlaneProperties2KHR + { + using NativeType = VkDisplayPlaneProperties2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneProperties2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR( DisplayPlanePropertiesKHR displayPlaneProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , displayPlaneProperties{ displayPlaneProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPlaneProperties2KHR( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPlaneProperties2KHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayPlaneProperties2KHR & operator=( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayPlaneProperties2KHR & operator=( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDisplayPlaneProperties2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPlaneProperties2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPlaneProperties2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayPlaneProperties2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, displayPlaneProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPlaneProperties2KHR const & ) const = default; +#else + bool operator==( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayPlaneProperties == rhs.displayPlaneProperties ); +# endif + } + + bool operator!=( DisplayPlaneProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayPlaneProperties2KHR; + void * pNext = {}; + DisplayPlanePropertiesKHR displayPlaneProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayPlaneProperties2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayPlaneProperties2KHR; + }; + + // wrapper struct for struct VkDisplayPowerInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPowerInfoEXT.html + struct DisplayPowerInfoEXT + { + using NativeType = VkDisplayPowerInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPowerInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , powerState{ powerState_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : DisplayPowerInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + DisplayPowerInfoEXT & operator=( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayPowerInfoEXT & operator=( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & setPowerState( DisplayPowerStateEXT powerState_ ) & VULKAN_HPP_NOEXCEPT + { + powerState = powerState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT && setPowerState( DisplayPowerStateEXT powerState_ ) && VULKAN_HPP_NOEXCEPT + { + powerState = powerState_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDisplayPowerInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPowerInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPowerInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayPowerInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, powerState ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPowerInfoEXT const & ) const = default; +#else + bool operator==( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( powerState == rhs.powerState ); +# endif + } + + bool operator!=( DisplayPowerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayPowerInfoEXT; + void const * pNext = {}; + DisplayPowerStateEXT powerState = DisplayPowerStateEXT::eOff; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayPowerInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayPowerInfoEXT; + }; + + // wrapper struct for struct VkDisplayPresentInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPresentInfoKHR.html + struct DisplayPresentInfoKHR + { + using NativeType = VkDisplayPresentInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPresentInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DisplayPresentInfoKHR( Rect2D srcRect_ = {}, Rect2D dstRect_ = {}, Bool32 persistent_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcRect{ srcRect_ } + , dstRect{ dstRect_ } + , persistent{ persistent_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPresentInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayPresentInfoKHR & operator=( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayPresentInfoKHR & operator=( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setSrcRect( Rect2D const & srcRect_ ) & VULKAN_HPP_NOEXCEPT + { + srcRect = srcRect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR && setSrcRect( Rect2D const & srcRect_ ) && VULKAN_HPP_NOEXCEPT + { + srcRect = srcRect_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setDstRect( Rect2D const & dstRect_ ) & VULKAN_HPP_NOEXCEPT + { + dstRect = dstRect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR && setDstRect( Rect2D const & dstRect_ ) && VULKAN_HPP_NOEXCEPT + { + dstRect = dstRect_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & setPersistent( Bool32 persistent_ ) & VULKAN_HPP_NOEXCEPT + { + persistent = persistent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR && setPersistent( Bool32 persistent_ ) && VULKAN_HPP_NOEXCEPT + { + persistent = persistent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDisplayPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPresentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPresentInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayPresentInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcRect, dstRect, persistent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayPresentInfoKHR const & ) const = default; +#else + bool operator==( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcRect == rhs.srcRect ) && ( dstRect == rhs.dstRect ) && ( persistent == rhs.persistent ); +# endif + } + + bool operator!=( DisplayPresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayPresentInfoKHR; + void const * pNext = {}; + Rect2D srcRect = {}; + Rect2D dstRect = {}; + Bool32 persistent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayPresentInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayPresentInfoKHR; + }; + + // wrapper struct for struct VkDisplayPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayPropertiesKHR.html + struct DisplayPropertiesKHR + { + using NativeType = VkDisplayPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR( DisplayKHR display_ = {}, + char const * displayName_ = {}, + Extent2D physicalDimensions_ = {}, + Extent2D physicalResolution_ = {}, + SurfaceTransformFlagsKHR supportedTransforms_ = {}, + Bool32 planeReorderPossible_ = {}, + Bool32 persistentContent_ = {} ) VULKAN_HPP_NOEXCEPT + : display{ display_ } + , displayName{ displayName_ } + , physicalDimensions{ physicalDimensions_ } + , physicalResolution{ physicalResolution_ } + , supportedTransforms{ supportedTransforms_ } + , planeReorderPossible{ planeReorderPossible_ } + , persistentContent{ persistentContent_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayPropertiesKHR( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayPropertiesKHR & operator=( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayPropertiesKHR & operator=( VkDisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDisplayPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( display, displayName, physicalDimensions, physicalResolution, supportedTransforms, planeReorderPossible, persistentContent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = display <=> rhs.display; cmp != 0 ) + return cmp; + if ( displayName != rhs.displayName ) + if ( auto cmp = strcmp( displayName, rhs.displayName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = physicalDimensions <=> rhs.physicalDimensions; cmp != 0 ) + return cmp; + if ( auto cmp = physicalResolution <=> rhs.physicalResolution; cmp != 0 ) + return cmp; + if ( auto cmp = supportedTransforms <=> rhs.supportedTransforms; cmp != 0 ) + return cmp; + if ( auto cmp = planeReorderPossible <=> rhs.planeReorderPossible; cmp != 0 ) + return cmp; + if ( auto cmp = persistentContent <=> rhs.persistentContent; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( display == rhs.display ) && ( ( displayName == rhs.displayName ) || ( strcmp( displayName, rhs.displayName ) == 0 ) ) && + ( physicalDimensions == rhs.physicalDimensions ) && ( physicalResolution == rhs.physicalResolution ) && + ( supportedTransforms == rhs.supportedTransforms ) && ( planeReorderPossible == rhs.planeReorderPossible ) && + ( persistentContent == rhs.persistentContent ); + } + + bool operator!=( DisplayPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + DisplayKHR display = {}; + char const * displayName = {}; + Extent2D physicalDimensions = {}; + Extent2D physicalResolution = {}; + SurfaceTransformFlagsKHR supportedTransforms = {}; + Bool32 planeReorderPossible = {}; + Bool32 persistentContent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayPropertiesKHR; + }; +#endif + + // wrapper struct for struct VkDisplayProperties2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplayProperties2KHR.html + struct DisplayProperties2KHR + { + using NativeType = VkDisplayProperties2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayProperties2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( DisplayPropertiesKHR displayProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , displayProperties{ displayProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplayProperties2KHR( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplayProperties2KHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplayProperties2KHR & operator=( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplayProperties2KHR & operator=( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDisplayProperties2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayProperties2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplayProperties2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplayProperties2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, displayProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplayProperties2KHR const & ) const = default; +#else + bool operator==( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayProperties == rhs.displayProperties ); +# endif + } + + bool operator!=( DisplayProperties2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplayProperties2KHR; + void * pNext = {}; + DisplayPropertiesKHR displayProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplayProperties2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = DisplayProperties2KHR; + }; + + // wrapper struct for struct VkDisplaySurfaceCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplaySurfaceCreateInfoKHR.html + struct DisplaySurfaceCreateInfoKHR + { + using NativeType = VkDisplaySurfaceCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplaySurfaceCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateFlagsKHR flags_ = {}, + DisplayModeKHR displayMode_ = {}, + uint32_t planeIndex_ = {}, + uint32_t planeStackIndex_ = {}, + SurfaceTransformFlagBitsKHR transform_ = SurfaceTransformFlagBitsKHR::eIdentity, + float globalAlpha_ = {}, + DisplayPlaneAlphaFlagBitsKHR alphaMode_ = DisplayPlaneAlphaFlagBitsKHR::eOpaque, + Extent2D imageExtent_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , displayMode{ displayMode_ } + , planeIndex{ planeIndex_ } + , planeStackIndex{ planeStackIndex_ } + , transform{ transform_ } + , globalAlpha{ globalAlpha_ } + , alphaMode{ alphaMode_ } + , imageExtent{ imageExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplaySurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DisplaySurfaceCreateInfoKHR & operator=( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplaySurfaceCreateInfoKHR & operator=( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setFlags( DisplaySurfaceCreateFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR && setFlags( DisplaySurfaceCreateFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setDisplayMode( DisplayModeKHR displayMode_ ) & VULKAN_HPP_NOEXCEPT + { + displayMode = displayMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR && setDisplayMode( DisplayModeKHR displayMode_ ) && VULKAN_HPP_NOEXCEPT + { + displayMode = displayMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPlaneIndex( uint32_t planeIndex_ ) & VULKAN_HPP_NOEXCEPT + { + planeIndex = planeIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR && setPlaneIndex( uint32_t planeIndex_ ) && VULKAN_HPP_NOEXCEPT + { + planeIndex = planeIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setPlaneStackIndex( uint32_t planeStackIndex_ ) & VULKAN_HPP_NOEXCEPT + { + planeStackIndex = planeStackIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR && setPlaneStackIndex( uint32_t planeStackIndex_ ) && VULKAN_HPP_NOEXCEPT + { + planeStackIndex = planeStackIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setTransform( SurfaceTransformFlagBitsKHR transform_ ) & VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR && setTransform( SurfaceTransformFlagBitsKHR transform_ ) && VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setGlobalAlpha( float globalAlpha_ ) & VULKAN_HPP_NOEXCEPT + { + globalAlpha = globalAlpha_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR && setGlobalAlpha( float globalAlpha_ ) && VULKAN_HPP_NOEXCEPT + { + globalAlpha = globalAlpha_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ ) & VULKAN_HPP_NOEXCEPT + { + alphaMode = alphaMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR && setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ ) && VULKAN_HPP_NOEXCEPT + { + alphaMode = alphaMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & setImageExtent( Extent2D const & imageExtent_ ) & VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR && setImageExtent( Extent2D const & imageExtent_ ) && VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDisplaySurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplaySurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplaySurfaceCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplaySurfaceCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, displayMode, planeIndex, planeStackIndex, transform, globalAlpha, alphaMode, imageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplaySurfaceCreateInfoKHR const & ) const = default; +#else + bool operator==( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( displayMode == rhs.displayMode ) && + ( planeIndex == rhs.planeIndex ) && ( planeStackIndex == rhs.planeStackIndex ) && ( transform == rhs.transform ) && + ( globalAlpha == rhs.globalAlpha ) && ( alphaMode == rhs.alphaMode ) && ( imageExtent == rhs.imageExtent ); +# endif + } + + bool operator!=( DisplaySurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplaySurfaceCreateInfoKHR; + void const * pNext = {}; + DisplaySurfaceCreateFlagsKHR flags = {}; + DisplayModeKHR displayMode = {}; + uint32_t planeIndex = {}; + uint32_t planeStackIndex = {}; + SurfaceTransformFlagBitsKHR transform = SurfaceTransformFlagBitsKHR::eIdentity; + float globalAlpha = {}; + DisplayPlaneAlphaFlagBitsKHR alphaMode = DisplayPlaneAlphaFlagBitsKHR::eOpaque; + Extent2D imageExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplaySurfaceCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DisplaySurfaceCreateInfoKHR; + }; + + // wrapper struct for struct VkDisplaySurfaceStereoCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDisplaySurfaceStereoCreateInfoNV.html + struct DisplaySurfaceStereoCreateInfoNV + { + using NativeType = VkDisplaySurfaceStereoCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplaySurfaceStereoCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DisplaySurfaceStereoCreateInfoNV( DisplaySurfaceStereoTypeNV stereoType_ = DisplaySurfaceStereoTypeNV::eNone, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stereoType{ stereoType_ } + { + } + + VULKAN_HPP_CONSTEXPR DisplaySurfaceStereoCreateInfoNV( DisplaySurfaceStereoCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DisplaySurfaceStereoCreateInfoNV( VkDisplaySurfaceStereoCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DisplaySurfaceStereoCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + DisplaySurfaceStereoCreateInfoNV & operator=( DisplaySurfaceStereoCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DisplaySurfaceStereoCreateInfoNV & operator=( VkDisplaySurfaceStereoCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceStereoCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceStereoCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceStereoCreateInfoNV & setStereoType( DisplaySurfaceStereoTypeNV stereoType_ ) & VULKAN_HPP_NOEXCEPT + { + stereoType = stereoType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceStereoCreateInfoNV && setStereoType( DisplaySurfaceStereoTypeNV stereoType_ ) && VULKAN_HPP_NOEXCEPT + { + stereoType = stereoType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDisplaySurfaceStereoCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplaySurfaceStereoCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDisplaySurfaceStereoCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDisplaySurfaceStereoCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stereoType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DisplaySurfaceStereoCreateInfoNV const & ) const = default; +#else + bool operator==( DisplaySurfaceStereoCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stereoType == rhs.stereoType ); +# endif + } + + bool operator!=( DisplaySurfaceStereoCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDisplaySurfaceStereoCreateInfoNV; + void const * pNext = {}; + DisplaySurfaceStereoTypeNV stereoType = DisplaySurfaceStereoTypeNV::eNone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DisplaySurfaceStereoCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = DisplaySurfaceStereoCreateInfoNV; + }; + + // wrapper struct for struct VkDrawIndexedIndirectCommand, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrawIndexedIndirectCommand.html + struct DrawIndexedIndirectCommand + { + using NativeType = VkDrawIndexedIndirectCommand; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand( uint32_t indexCount_ = {}, + uint32_t instanceCount_ = {}, + uint32_t firstIndex_ = {}, + int32_t vertexOffset_ = {}, + uint32_t firstInstance_ = {} ) VULKAN_HPP_NOEXCEPT + : indexCount{ indexCount_ } + , instanceCount{ instanceCount_ } + , firstIndex{ firstIndex_ } + , vertexOffset{ vertexOffset_ } + , firstInstance{ firstInstance_ } + { + } + + VULKAN_HPP_CONSTEXPR DrawIndexedIndirectCommand( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + : DrawIndexedIndirectCommand( *reinterpret_cast( &rhs ) ) + { + } + + DrawIndexedIndirectCommand & operator=( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrawIndexedIndirectCommand & operator=( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setIndexCount( uint32_t indexCount_ ) & VULKAN_HPP_NOEXCEPT + { + indexCount = indexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand && setIndexCount( uint32_t indexCount_ ) && VULKAN_HPP_NOEXCEPT + { + indexCount = indexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) & VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand && setInstanceCount( uint32_t instanceCount_ ) && VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstIndex( uint32_t firstIndex_ ) & VULKAN_HPP_NOEXCEPT + { + firstIndex = firstIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand && setFirstIndex( uint32_t firstIndex_ ) && VULKAN_HPP_NOEXCEPT + { + firstIndex = firstIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setVertexOffset( int32_t vertexOffset_ ) & VULKAN_HPP_NOEXCEPT + { + vertexOffset = vertexOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand && setVertexOffset( int32_t vertexOffset_ ) && VULKAN_HPP_NOEXCEPT + { + vertexOffset = vertexOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) & VULKAN_HPP_NOEXCEPT + { + firstInstance = firstInstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand && setFirstInstance( uint32_t firstInstance_ ) && VULKAN_HPP_NOEXCEPT + { + firstInstance = firstInstance_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDrawIndexedIndirectCommand const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawIndexedIndirectCommand &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawIndexedIndirectCommand const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrawIndexedIndirectCommand *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawIndexedIndirectCommand const & ) const = default; +#else + bool operator==( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( indexCount == rhs.indexCount ) && ( instanceCount == rhs.instanceCount ) && ( firstIndex == rhs.firstIndex ) && + ( vertexOffset == rhs.vertexOffset ) && ( firstInstance == rhs.firstInstance ); +# endif + } + + bool operator!=( DrawIndexedIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t indexCount = {}; + uint32_t instanceCount = {}; + uint32_t firstIndex = {}; + int32_t vertexOffset = {}; + uint32_t firstInstance = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrawIndexedIndirectCommand; + }; +#endif + + // wrapper struct for struct VkDrawIndirect2InfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrawIndirect2InfoKHR.html + struct DrawIndirect2InfoKHR + { + using NativeType = VkDrawIndirect2InfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDrawIndirect2InfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrawIndirect2InfoKHR( StridedDeviceAddressRangeKHR addressRange_ = {}, + AddressCommandFlagsKHR addressFlags_ = {}, + uint32_t drawCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , addressRange{ addressRange_ } + , addressFlags{ addressFlags_ } + , drawCount{ drawCount_ } + { + } + + VULKAN_HPP_CONSTEXPR DrawIndirect2InfoKHR( DrawIndirect2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawIndirect2InfoKHR( VkDrawIndirect2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DrawIndirect2InfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DrawIndirect2InfoKHR & operator=( DrawIndirect2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrawIndirect2InfoKHR & operator=( VkDrawIndirect2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawIndirect2InfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirect2InfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirect2InfoKHR & setAddressRange( StridedDeviceAddressRangeKHR const & addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirect2InfoKHR && setAddressRange( StridedDeviceAddressRangeKHR const & addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirect2InfoKHR & setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirect2InfoKHR && setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirect2InfoKHR & setDrawCount( uint32_t drawCount_ ) & VULKAN_HPP_NOEXCEPT + { + drawCount = drawCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirect2InfoKHR && setDrawCount( uint32_t drawCount_ ) && VULKAN_HPP_NOEXCEPT + { + drawCount = drawCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDrawIndirect2InfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawIndirect2InfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawIndirect2InfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrawIndirect2InfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, addressRange, addressFlags, drawCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawIndirect2InfoKHR const & ) const = default; +#else + bool operator==( DrawIndirect2InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( addressRange == rhs.addressRange ) && ( addressFlags == rhs.addressFlags ) && + ( drawCount == rhs.drawCount ); +# endif + } + + bool operator!=( DrawIndirect2InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDrawIndirect2InfoKHR; + void const * pNext = {}; + StridedDeviceAddressRangeKHR addressRange = {}; + AddressCommandFlagsKHR addressFlags = {}; + uint32_t drawCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrawIndirect2InfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DrawIndirect2InfoKHR; + }; + + // wrapper struct for struct VkDrawIndirectCommand, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrawIndirectCommand.html + struct DrawIndirectCommand + { + using NativeType = VkDrawIndirectCommand; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrawIndirectCommand( uint32_t vertexCount_ = {}, + uint32_t instanceCount_ = {}, + uint32_t firstVertex_ = {}, + uint32_t firstInstance_ = {} ) VULKAN_HPP_NOEXCEPT + : vertexCount{ vertexCount_ } + , instanceCount{ instanceCount_ } + , firstVertex{ firstVertex_ } + , firstInstance{ firstInstance_ } + { + } + + VULKAN_HPP_CONSTEXPR DrawIndirectCommand( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawIndirectCommand( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT : DrawIndirectCommand( *reinterpret_cast( &rhs ) ) + { + } + + DrawIndirectCommand & operator=( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrawIndirectCommand & operator=( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setVertexCount( uint32_t vertexCount_ ) & VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand && setVertexCount( uint32_t vertexCount_ ) && VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) & VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand && setInstanceCount( uint32_t instanceCount_ ) && VULKAN_HPP_NOEXCEPT + { + instanceCount = instanceCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstVertex( uint32_t firstVertex_ ) & VULKAN_HPP_NOEXCEPT + { + firstVertex = firstVertex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand && setFirstVertex( uint32_t firstVertex_ ) && VULKAN_HPP_NOEXCEPT + { + firstVertex = firstVertex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) & VULKAN_HPP_NOEXCEPT + { + firstInstance = firstInstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand && setFirstInstance( uint32_t firstInstance_ ) && VULKAN_HPP_NOEXCEPT + { + firstInstance = firstInstance_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDrawIndirectCommand const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawIndirectCommand &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawIndirectCommand const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrawIndirectCommand *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( vertexCount, instanceCount, firstVertex, firstInstance ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawIndirectCommand const & ) const = default; +#else + bool operator==( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( vertexCount == rhs.vertexCount ) && ( instanceCount == rhs.instanceCount ) && ( firstVertex == rhs.firstVertex ) && + ( firstInstance == rhs.firstInstance ); +# endif + } + + bool operator!=( DrawIndirectCommand const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t vertexCount = {}; + uint32_t instanceCount = {}; + uint32_t firstVertex = {}; + uint32_t firstInstance = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrawIndirectCommand; + }; +#endif + + // wrapper struct for struct VkDrawIndirectCount2InfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrawIndirectCount2InfoKHR.html + struct DrawIndirectCount2InfoKHR + { + using NativeType = VkDrawIndirectCount2InfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDrawIndirectCount2InfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrawIndirectCount2InfoKHR( StridedDeviceAddressRangeKHR addressRange_ = {}, + AddressCommandFlagsKHR addressFlags_ = {}, + DeviceAddressRangeKHR countAddressRange_ = {}, + AddressCommandFlagsKHR countAddressFlags_ = {}, + uint32_t maxDrawCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , addressRange{ addressRange_ } + , addressFlags{ addressFlags_ } + , countAddressRange{ countAddressRange_ } + , countAddressFlags{ countAddressFlags_ } + , maxDrawCount{ maxDrawCount_ } + { + } + + VULKAN_HPP_CONSTEXPR DrawIndirectCount2InfoKHR( DrawIndirectCount2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawIndirectCount2InfoKHR( VkDrawIndirectCount2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : DrawIndirectCount2InfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + DrawIndirectCount2InfoKHR & operator=( DrawIndirectCount2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrawIndirectCount2InfoKHR & operator=( VkDrawIndirectCount2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR & setAddressRange( StridedDeviceAddressRangeKHR const & addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR && setAddressRange( StridedDeviceAddressRangeKHR const & addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR & setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR && setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR & setCountAddressRange( DeviceAddressRangeKHR const & countAddressRange_ ) & VULKAN_HPP_NOEXCEPT + { + countAddressRange = countAddressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR && setCountAddressRange( DeviceAddressRangeKHR const & countAddressRange_ ) && VULKAN_HPP_NOEXCEPT + { + countAddressRange = countAddressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR & setCountAddressFlags( AddressCommandFlagsKHR countAddressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + countAddressFlags = countAddressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR && setCountAddressFlags( AddressCommandFlagsKHR countAddressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + countAddressFlags = countAddressFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR & setMaxDrawCount( uint32_t maxDrawCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxDrawCount = maxDrawCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCount2InfoKHR && setMaxDrawCount( uint32_t maxDrawCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxDrawCount = maxDrawCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDrawIndirectCount2InfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawIndirectCount2InfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawIndirectCount2InfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrawIndirectCount2InfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, addressRange, addressFlags, countAddressRange, countAddressFlags, maxDrawCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawIndirectCount2InfoKHR const & ) const = default; +#else + bool operator==( DrawIndirectCount2InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( addressRange == rhs.addressRange ) && ( addressFlags == rhs.addressFlags ) && + ( countAddressRange == rhs.countAddressRange ) && ( countAddressFlags == rhs.countAddressFlags ) && ( maxDrawCount == rhs.maxDrawCount ); +# endif + } + + bool operator!=( DrawIndirectCount2InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDrawIndirectCount2InfoKHR; + void const * pNext = {}; + StridedDeviceAddressRangeKHR addressRange = {}; + AddressCommandFlagsKHR addressFlags = {}; + DeviceAddressRangeKHR countAddressRange = {}; + AddressCommandFlagsKHR countAddressFlags = {}; + uint32_t maxDrawCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrawIndirectCount2InfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = DrawIndirectCount2InfoKHR; + }; + + // wrapper struct for struct VkDrawIndirectCountIndirectCommandEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrawIndirectCountIndirectCommandEXT.html + struct DrawIndirectCountIndirectCommandEXT + { + using NativeType = VkDrawIndirectCountIndirectCommandEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DrawIndirectCountIndirectCommandEXT( DeviceAddress bufferAddress_ = {}, uint32_t stride_ = {}, uint32_t commandCount_ = {} ) VULKAN_HPP_NOEXCEPT + : bufferAddress{ bufferAddress_ } + , stride{ stride_ } + , commandCount{ commandCount_ } + { + } + + VULKAN_HPP_CONSTEXPR DrawIndirectCountIndirectCommandEXT( DrawIndirectCountIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawIndirectCountIndirectCommandEXT( VkDrawIndirectCountIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrawIndirectCountIndirectCommandEXT( *reinterpret_cast( &rhs ) ) + { + } + + DrawIndirectCountIndirectCommandEXT & operator=( DrawIndirectCountIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrawIndirectCountIndirectCommandEXT & operator=( VkDrawIndirectCountIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCountIndirectCommandEXT & setBufferAddress( DeviceAddress bufferAddress_ ) & VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCountIndirectCommandEXT && setBufferAddress( DeviceAddress bufferAddress_ ) && VULKAN_HPP_NOEXCEPT + { + bufferAddress = bufferAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCountIndirectCommandEXT & setStride( uint32_t stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCountIndirectCommandEXT && setStride( uint32_t stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCountIndirectCommandEXT & setCommandCount( uint32_t commandCount_ ) & VULKAN_HPP_NOEXCEPT + { + commandCount = commandCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawIndirectCountIndirectCommandEXT && setCommandCount( uint32_t commandCount_ ) && VULKAN_HPP_NOEXCEPT + { + commandCount = commandCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDrawIndirectCountIndirectCommandEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawIndirectCountIndirectCommandEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawIndirectCountIndirectCommandEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrawIndirectCountIndirectCommandEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( bufferAddress, stride, commandCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawIndirectCountIndirectCommandEXT const & ) const = default; +#else + bool operator==( DrawIndirectCountIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( bufferAddress == rhs.bufferAddress ) && ( stride == rhs.stride ) && ( commandCount == rhs.commandCount ); +# endif + } + + bool operator!=( DrawIndirectCountIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress bufferAddress = {}; + uint32_t stride = {}; + uint32_t commandCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrawIndirectCountIndirectCommandEXT; + }; +#endif + + // wrapper struct for struct VkDrawMeshTasksIndirectCommandEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandEXT.html + struct DrawMeshTasksIndirectCommandEXT + { + using NativeType = VkDrawMeshTasksIndirectCommandEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + DrawMeshTasksIndirectCommandEXT( uint32_t groupCountX_ = {}, uint32_t groupCountY_ = {}, uint32_t groupCountZ_ = {} ) VULKAN_HPP_NOEXCEPT + : groupCountX{ groupCountX_ } + , groupCountY{ groupCountY_ } + , groupCountZ{ groupCountZ_ } + { + } + + VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandEXT( DrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawMeshTasksIndirectCommandEXT( VkDrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrawMeshTasksIndirectCommandEXT( *reinterpret_cast( &rhs ) ) + { + } + + DrawMeshTasksIndirectCommandEXT & operator=( DrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrawMeshTasksIndirectCommandEXT & operator=( VkDrawMeshTasksIndirectCommandEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT & setGroupCountX( uint32_t groupCountX_ ) & VULKAN_HPP_NOEXCEPT + { + groupCountX = groupCountX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT && setGroupCountX( uint32_t groupCountX_ ) && VULKAN_HPP_NOEXCEPT + { + groupCountX = groupCountX_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT & setGroupCountY( uint32_t groupCountY_ ) & VULKAN_HPP_NOEXCEPT + { + groupCountY = groupCountY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT && setGroupCountY( uint32_t groupCountY_ ) && VULKAN_HPP_NOEXCEPT + { + groupCountY = groupCountY_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT & setGroupCountZ( uint32_t groupCountZ_ ) & VULKAN_HPP_NOEXCEPT + { + groupCountZ = groupCountZ_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandEXT && setGroupCountZ( uint32_t groupCountZ_ ) && VULKAN_HPP_NOEXCEPT + { + groupCountZ = groupCountZ_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDrawMeshTasksIndirectCommandEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawMeshTasksIndirectCommandEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawMeshTasksIndirectCommandEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrawMeshTasksIndirectCommandEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( groupCountX, groupCountY, groupCountZ ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawMeshTasksIndirectCommandEXT const & ) const = default; +#else + bool operator==( DrawMeshTasksIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( groupCountX == rhs.groupCountX ) && ( groupCountY == rhs.groupCountY ) && ( groupCountZ == rhs.groupCountZ ); +# endif + } + + bool operator!=( DrawMeshTasksIndirectCommandEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t groupCountX = {}; + uint32_t groupCountY = {}; + uint32_t groupCountZ = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrawMeshTasksIndirectCommandEXT; + }; +#endif + + // wrapper struct for struct VkDrawMeshTasksIndirectCommandNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrawMeshTasksIndirectCommandNV.html + struct DrawMeshTasksIndirectCommandNV + { + using NativeType = VkDrawMeshTasksIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandNV( uint32_t taskCount_ = {}, uint32_t firstTask_ = {} ) VULKAN_HPP_NOEXCEPT + : taskCount{ taskCount_ } + , firstTask{ firstTask_ } + { + } + + VULKAN_HPP_CONSTEXPR DrawMeshTasksIndirectCommandNV( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrawMeshTasksIndirectCommandNV( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : DrawMeshTasksIndirectCommandNV( *reinterpret_cast( &rhs ) ) + { + } + + DrawMeshTasksIndirectCommandNV & operator=( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrawMeshTasksIndirectCommandNV & operator=( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & setTaskCount( uint32_t taskCount_ ) & VULKAN_HPP_NOEXCEPT + { + taskCount = taskCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV && setTaskCount( uint32_t taskCount_ ) && VULKAN_HPP_NOEXCEPT + { + taskCount = taskCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & setFirstTask( uint32_t firstTask_ ) & VULKAN_HPP_NOEXCEPT + { + firstTask = firstTask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV && setFirstTask( uint32_t firstTask_ ) && VULKAN_HPP_NOEXCEPT + { + firstTask = firstTask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkDrawMeshTasksIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawMeshTasksIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrawMeshTasksIndirectCommandNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrawMeshTasksIndirectCommandNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( taskCount, firstTask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrawMeshTasksIndirectCommandNV const & ) const = default; +#else + bool operator==( DrawMeshTasksIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( taskCount == rhs.taskCount ) && ( firstTask == rhs.firstTask ); +# endif + } + + bool operator!=( DrawMeshTasksIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t taskCount = {}; + uint32_t firstTask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrawMeshTasksIndirectCommandNV; + }; +#endif + + // wrapper struct for struct VkDrmFormatModifierProperties2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrmFormatModifierProperties2EXT.html + struct DrmFormatModifierProperties2EXT + { + using NativeType = VkDrmFormatModifierProperties2EXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrmFormatModifierProperties2EXT( uint64_t drmFormatModifier_ = {}, + uint32_t drmFormatModifierPlaneCount_ = {}, + FormatFeatureFlags2 drmFormatModifierTilingFeatures_ = {} ) VULKAN_HPP_NOEXCEPT + : drmFormatModifier{ drmFormatModifier_ } + , drmFormatModifierPlaneCount{ drmFormatModifierPlaneCount_ } + , drmFormatModifierTilingFeatures{ drmFormatModifierTilingFeatures_ } + { + } + + VULKAN_HPP_CONSTEXPR DrmFormatModifierProperties2EXT( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierProperties2EXT( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrmFormatModifierProperties2EXT( *reinterpret_cast( &rhs ) ) + { + } + + DrmFormatModifierProperties2EXT & operator=( DrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrmFormatModifierProperties2EXT & operator=( VkDrmFormatModifierProperties2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDrmFormatModifierProperties2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrmFormatModifierProperties2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrmFormatModifierProperties2EXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrmFormatModifierProperties2EXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrmFormatModifierProperties2EXT const & ) const = default; +#else + bool operator==( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( drmFormatModifier == rhs.drmFormatModifier ) && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) && + ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures ); +# endif + } + + bool operator!=( DrmFormatModifierProperties2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint64_t drmFormatModifier = {}; + uint32_t drmFormatModifierPlaneCount = {}; + FormatFeatureFlags2 drmFormatModifierTilingFeatures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrmFormatModifierProperties2EXT; + }; +#endif + + // wrapper struct for struct VkDrmFormatModifierPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesEXT.html + struct DrmFormatModifierPropertiesEXT + { + using NativeType = VkDrmFormatModifierPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT( uint64_t drmFormatModifier_ = {}, + uint32_t drmFormatModifierPlaneCount_ = {}, + FormatFeatureFlags drmFormatModifierTilingFeatures_ = {} ) VULKAN_HPP_NOEXCEPT + : drmFormatModifier{ drmFormatModifier_ } + , drmFormatModifierPlaneCount{ drmFormatModifierPlaneCount_ } + , drmFormatModifierTilingFeatures{ drmFormatModifierTilingFeatures_ } + { + } + + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierPropertiesEXT( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrmFormatModifierPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + DrmFormatModifierPropertiesEXT & operator=( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrmFormatModifierPropertiesEXT & operator=( VkDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrmFormatModifierPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrmFormatModifierPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( drmFormatModifier, drmFormatModifierPlaneCount, drmFormatModifierTilingFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrmFormatModifierPropertiesEXT const & ) const = default; +#else + bool operator==( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( drmFormatModifier == rhs.drmFormatModifier ) && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) && + ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures ); +# endif + } + + bool operator!=( DrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint64_t drmFormatModifier = {}; + uint32_t drmFormatModifierPlaneCount = {}; + FormatFeatureFlags drmFormatModifierTilingFeatures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrmFormatModifierPropertiesEXT; + }; +#endif + + // wrapper struct for struct VkDrmFormatModifierPropertiesList2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesList2EXT.html + struct DrmFormatModifierPropertiesList2EXT + { + using NativeType = VkDrmFormatModifierPropertiesList2EXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDrmFormatModifierPropertiesList2EXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT( uint32_t drmFormatModifierCount_ = {}, + DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , drmFormatModifierCount{ drmFormatModifierCount_ } + , pDrmFormatModifierProperties{ pDrmFormatModifierProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesList2EXT( DrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierPropertiesList2EXT( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrmFormatModifierPropertiesList2EXT( *reinterpret_cast( &rhs ) ) + { + } + + DrmFormatModifierPropertiesList2EXT & operator=( DrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrmFormatModifierPropertiesList2EXT & operator=( VkDrmFormatModifierPropertiesList2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDrmFormatModifierPropertiesList2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrmFormatModifierPropertiesList2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrmFormatModifierPropertiesList2EXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrmFormatModifierPropertiesList2EXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrmFormatModifierPropertiesList2EXT const & ) const = default; +#else + bool operator==( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) && + ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties ); +# endif + } + + bool operator!=( DrmFormatModifierPropertiesList2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDrmFormatModifierPropertiesList2EXT; + void * pNext = {}; + uint32_t drmFormatModifierCount = {}; + DrmFormatModifierProperties2EXT * pDrmFormatModifierProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrmFormatModifierPropertiesList2EXT; + }; +#endif + + template <> + struct CppType + { + using Type = DrmFormatModifierPropertiesList2EXT; + }; + + // wrapper struct for struct VkDrmFormatModifierPropertiesListEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkDrmFormatModifierPropertiesListEXT.html + struct DrmFormatModifierPropertiesListEXT + { + using NativeType = VkDrmFormatModifierPropertiesListEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDrmFormatModifierPropertiesListEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( uint32_t drmFormatModifierCount_ = {}, + DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , drmFormatModifierCount{ drmFormatModifierCount_ } + , pDrmFormatModifierProperties{ pDrmFormatModifierProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + DrmFormatModifierPropertiesListEXT( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : DrmFormatModifierPropertiesListEXT( *reinterpret_cast( &rhs ) ) + { + } + + DrmFormatModifierPropertiesListEXT & operator=( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + DrmFormatModifierPropertiesListEXT & operator=( VkDrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkDrmFormatModifierPropertiesListEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrmFormatModifierPropertiesListEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkDrmFormatModifierPropertiesListEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkDrmFormatModifierPropertiesListEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifierProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( DrmFormatModifierPropertiesListEXT const & ) const = default; +#else + bool operator==( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) && + ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties ); +# endif + } + + bool operator!=( DrmFormatModifierPropertiesListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eDrmFormatModifierPropertiesListEXT; + void * pNext = {}; + uint32_t drmFormatModifierCount = {}; + DrmFormatModifierPropertiesEXT * pDrmFormatModifierProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = DrmFormatModifierPropertiesListEXT; + }; +#endif + + template <> + struct CppType + { + using Type = DrmFormatModifierPropertiesListEXT; + }; + + // wrapper struct for struct VkEventCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkEventCreateInfo.html + struct EventCreateInfo + { + using NativeType = VkEventCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eEventCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR EventCreateInfo( EventCreateFlags flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR EventCreateInfo( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + EventCreateInfo( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : EventCreateInfo( *reinterpret_cast( &rhs ) ) {} + + EventCreateInfo & operator=( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + EventCreateInfo & operator=( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 EventCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & setFlags( EventCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 EventCreateInfo && setFlags( EventCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkEventCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkEventCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkEventCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkEventCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( EventCreateInfo const & ) const = default; +#else + bool operator==( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( EventCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eEventCreateInfo; + void const * pNext = {}; + EventCreateFlags flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = EventCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = EventCreateInfo; + }; + + // wrapper struct for struct VkPipelineLibraryCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineLibraryCreateInfoKHR.html + struct PipelineLibraryCreateInfoKHR + { + using NativeType = VkPipelineLibraryCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineLibraryCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PipelineLibraryCreateInfoKHR( uint32_t libraryCount_ = {}, Pipeline const * pLibraries_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , libraryCount{ libraryCount_ } + , pLibraries{ pLibraries_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineLibraryCreateInfoKHR( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineLibraryCreateInfoKHR( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineLibraryCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineLibraryCreateInfoKHR( ArrayProxyNoTemporaries const & libraries_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), libraryCount( static_cast( libraries_.size() ) ), pLibraries( libraries_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineLibraryCreateInfoKHR & operator=( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineLibraryCreateInfoKHR & operator=( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setLibraryCount( uint32_t libraryCount_ ) & VULKAN_HPP_NOEXCEPT + { + libraryCount = libraryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR && setLibraryCount( uint32_t libraryCount_ ) && VULKAN_HPP_NOEXCEPT + { + libraryCount = libraryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & setPLibraries( Pipeline const * pLibraries_ ) & VULKAN_HPP_NOEXCEPT + { + pLibraries = pLibraries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR && setPLibraries( Pipeline const * pLibraries_ ) && VULKAN_HPP_NOEXCEPT + { + pLibraries = pLibraries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineLibraryCreateInfoKHR & setLibraries( ArrayProxyNoTemporaries const & libraries_ ) VULKAN_HPP_NOEXCEPT + { + libraryCount = static_cast( libraries_.size() ); + pLibraries = libraries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineLibraryCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineLibraryCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineLibraryCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineLibraryCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, libraryCount, pLibraries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineLibraryCreateInfoKHR const & ) const = default; +#else + bool operator==( PipelineLibraryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( libraryCount == rhs.libraryCount ) && ( pLibraries == rhs.pLibraries ); +# endif + } + + bool operator!=( PipelineLibraryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineLibraryCreateInfoKHR; + void const * pNext = {}; + uint32_t libraryCount = {}; + Pipeline const * pLibraries = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineLibraryCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineLibraryCreateInfoKHR; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkExecutionGraphPipelineCreateInfoAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExecutionGraphPipelineCreateInfoAMDX.html + struct ExecutionGraphPipelineCreateInfoAMDX + { + using NativeType = VkExecutionGraphPipelineCreateInfoAMDX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExecutionGraphPipelineCreateInfoAMDX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineCreateInfoAMDX( PipelineCreateFlags flags_ = {}, + uint32_t stageCount_ = {}, + PipelineShaderStageCreateInfo const * pStages_ = {}, + PipelineLibraryCreateInfoKHR const * pLibraryInfo_ = {}, + PipelineLayout layout_ = {}, + Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , stageCount{ stageCount_ } + , pStages{ pStages_ } + , pLibraryInfo{ pLibraryInfo_ } + , layout{ layout_ } + , basePipelineHandle{ basePipelineHandle_ } + , basePipelineIndex{ basePipelineIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineCreateInfoAMDX( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExecutionGraphPipelineCreateInfoAMDX( VkExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + : ExecutionGraphPipelineCreateInfoAMDX( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ExecutionGraphPipelineCreateInfoAMDX( PipelineCreateFlags flags_, + ArrayProxyNoTemporaries const & stages_, + PipelineLibraryCreateInfoKHR const * pLibraryInfo_ = {}, + PipelineLayout layout_ = {}, + Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , stageCount( static_cast( stages_.size() ) ) + , pStages( stages_.data() ) + , pLibraryInfo( pLibraryInfo_ ) + , layout( layout_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ExecutionGraphPipelineCreateInfoAMDX & operator=( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExecutionGraphPipelineCreateInfoAMDX & operator=( VkExecutionGraphPipelineCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setFlags( PipelineCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX && setFlags( PipelineCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setStageCount( uint32_t stageCount_ ) & VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX && setStageCount( uint32_t stageCount_ ) && VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setPStages( PipelineShaderStageCreateInfo const * pStages_ ) & VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX && setPStages( PipelineShaderStageCreateInfo const * pStages_ ) && VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ExecutionGraphPipelineCreateInfoAMDX & setStages( ArrayProxyNoTemporaries const & stages_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = static_cast( stages_.size() ); + pStages = stages_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setPLibraryInfo( PipelineLibraryCreateInfoKHR const * pLibraryInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pLibraryInfo = pLibraryInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX && setPLibraryInfo( PipelineLibraryCreateInfoKHR const * pLibraryInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pLibraryInfo = pLibraryInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setBasePipelineHandle( Pipeline basePipelineHandle_ ) & VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX && setBasePipelineHandle( Pipeline basePipelineHandle_ ) && VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX & setBasePipelineIndex( int32_t basePipelineIndex_ ) & VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineCreateInfoAMDX && setBasePipelineIndex( int32_t basePipelineIndex_ ) && VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExecutionGraphPipelineCreateInfoAMDX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExecutionGraphPipelineCreateInfoAMDX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExecutionGraphPipelineCreateInfoAMDX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExecutionGraphPipelineCreateInfoAMDX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, stageCount, pStages, pLibraryInfo, layout, basePipelineHandle, basePipelineIndex ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExecutionGraphPipelineCreateInfoAMDX const & ) const = default; +# else + bool operator==( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) && + ( pLibraryInfo == rhs.pLibraryInfo ) && ( layout == rhs.layout ) && ( basePipelineHandle == rhs.basePipelineHandle ) && + ( basePipelineIndex == rhs.basePipelineIndex ); +# endif + } + + bool operator!=( ExecutionGraphPipelineCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExecutionGraphPipelineCreateInfoAMDX; + void const * pNext = {}; + PipelineCreateFlags flags = {}; + uint32_t stageCount = {}; + PipelineShaderStageCreateInfo const * pStages = {}; + PipelineLibraryCreateInfoKHR const * pLibraryInfo = {}; + PipelineLayout layout = {}; + Pipeline basePipelineHandle = {}; + int32_t basePipelineIndex = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExecutionGraphPipelineCreateInfoAMDX; + }; +# endif + + template <> + struct CppType + { + using Type = ExecutionGraphPipelineCreateInfoAMDX; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkExecutionGraphPipelineScratchSizeAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExecutionGraphPipelineScratchSizeAMDX.html + struct ExecutionGraphPipelineScratchSizeAMDX + { + using NativeType = VkExecutionGraphPipelineScratchSizeAMDX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExecutionGraphPipelineScratchSizeAMDX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineScratchSizeAMDX( DeviceSize minSize_ = {}, + DeviceSize maxSize_ = {}, + DeviceSize sizeGranularity_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minSize{ minSize_ } + , maxSize{ maxSize_ } + , sizeGranularity{ sizeGranularity_ } + { + } + + VULKAN_HPP_CONSTEXPR ExecutionGraphPipelineScratchSizeAMDX( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExecutionGraphPipelineScratchSizeAMDX( VkExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + : ExecutionGraphPipelineScratchSizeAMDX( *reinterpret_cast( &rhs ) ) + { + } + + ExecutionGraphPipelineScratchSizeAMDX & operator=( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExecutionGraphPipelineScratchSizeAMDX & operator=( VkExecutionGraphPipelineScratchSizeAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX & setMinSize( DeviceSize minSize_ ) & VULKAN_HPP_NOEXCEPT + { + minSize = minSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX && setMinSize( DeviceSize minSize_ ) && VULKAN_HPP_NOEXCEPT + { + minSize = minSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX & setMaxSize( DeviceSize maxSize_ ) & VULKAN_HPP_NOEXCEPT + { + maxSize = maxSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX && setMaxSize( DeviceSize maxSize_ ) && VULKAN_HPP_NOEXCEPT + { + maxSize = maxSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX & setSizeGranularity( DeviceSize sizeGranularity_ ) & VULKAN_HPP_NOEXCEPT + { + sizeGranularity = sizeGranularity_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExecutionGraphPipelineScratchSizeAMDX && setSizeGranularity( DeviceSize sizeGranularity_ ) && VULKAN_HPP_NOEXCEPT + { + sizeGranularity = sizeGranularity_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExecutionGraphPipelineScratchSizeAMDX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExecutionGraphPipelineScratchSizeAMDX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExecutionGraphPipelineScratchSizeAMDX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExecutionGraphPipelineScratchSizeAMDX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minSize, maxSize, sizeGranularity ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExecutionGraphPipelineScratchSizeAMDX const & ) const = default; +# else + bool operator==( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minSize == rhs.minSize ) && ( maxSize == rhs.maxSize ) && + ( sizeGranularity == rhs.sizeGranularity ); +# endif + } + + bool operator!=( ExecutionGraphPipelineScratchSizeAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExecutionGraphPipelineScratchSizeAMDX; + void * pNext = {}; + DeviceSize minSize = {}; + DeviceSize maxSize = {}; + DeviceSize sizeGranularity = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExecutionGraphPipelineScratchSizeAMDX; + }; +# endif + + template <> + struct CppType + { + using Type = ExecutionGraphPipelineScratchSizeAMDX; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkExportFenceCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportFenceCreateInfo.html + struct ExportFenceCreateInfo + { + using NativeType = VkExportFenceCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportFenceCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( ExternalFenceHandleTypeFlags handleTypes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleTypes{ handleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportFenceCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + ExportFenceCreateInfo & operator=( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportFenceCreateInfo & operator=( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & setHandleTypes( ExternalFenceHandleTypeFlags handleTypes_ ) & VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo && setHandleTypes( ExternalFenceHandleTypeFlags handleTypes_ ) && VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportFenceCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportFenceCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportFenceCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportFenceCreateInfo const & ) const = default; +#else + bool operator==( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExportFenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExportFenceCreateInfo; + void const * pNext = {}; + ExternalFenceHandleTypeFlags handleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportFenceCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ExportFenceCreateInfo; + }; + + using ExportFenceCreateInfoKHR = ExportFenceCreateInfo; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkExportFenceWin32HandleInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportFenceWin32HandleInfoKHR.html + struct ExportFenceWin32HandleInfoKHR + { + using NativeType = VkExportFenceWin32HandleInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportFenceWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportFenceWin32HandleInfoKHR( SECURITY_ATTRIBUTES const * pAttributes_ = {}, + DWORD dwAccess_ = {}, + LPCWSTR name_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pAttributes{ pAttributes_ } + , dwAccess{ dwAccess_ } + , name{ name_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportFenceWin32HandleInfoKHR( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportFenceWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ExportFenceWin32HandleInfoKHR & operator=( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportFenceWin32HandleInfoKHR & operator=( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setPAttributes( SECURITY_ATTRIBUTES const * pAttributes_ ) & VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR && setPAttributes( SECURITY_ATTRIBUTES const * pAttributes_ ) && VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) & VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR && setDwAccess( DWORD dwAccess_ ) && VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) & VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR && setName( LPCWSTR name_ ) && VULKAN_HPP_NOEXCEPT + { + name = name_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportFenceWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportFenceWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportFenceWin32HandleInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportFenceWin32HandleInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pAttributes, dwAccess, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportFenceWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ExportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ExportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportFenceWin32HandleInfoKHR; + void const * pNext = {}; + SECURITY_ATTRIBUTES const * pAttributes = {}; + DWORD dwAccess = {}; + LPCWSTR name = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportFenceWin32HandleInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = ExportFenceWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + // wrapper struct for struct VkExportMemoryAllocateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfo.html + struct ExportMemoryAllocateInfo + { + using NativeType = VkExportMemoryAllocateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryAllocateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( ExternalMemoryHandleTypeFlags handleTypes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleTypes{ handleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMemoryAllocateInfo( *reinterpret_cast( &rhs ) ) + { + } + + ExportMemoryAllocateInfo & operator=( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMemoryAllocateInfo & operator=( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ ) & VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo && setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ ) && VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMemoryAllocateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMemoryAllocateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMemoryAllocateInfo const & ) const = default; +#else + bool operator==( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExportMemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExportMemoryAllocateInfo; + void const * pNext = {}; + ExternalMemoryHandleTypeFlags handleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMemoryAllocateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ExportMemoryAllocateInfo; + }; + + using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo; + + // wrapper struct for struct VkExportMemoryAllocateInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMemoryAllocateInfoNV.html + struct ExportMemoryAllocateInfoNV + { + using NativeType = VkExportMemoryAllocateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryAllocateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleTypes{ handleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMemoryAllocateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ExportMemoryAllocateInfoNV & operator=( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMemoryAllocateInfoNV & operator=( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV & setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ ) & VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV && setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ ) && VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMemoryAllocateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMemoryAllocateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMemoryAllocateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMemoryAllocateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMemoryAllocateInfoNV const & ) const = default; +#else + bool operator==( ExportMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExportMemoryAllocateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExportMemoryAllocateInfoNV; + void const * pNext = {}; + ExternalMemoryHandleTypeFlagsNV handleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMemoryAllocateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = ExportMemoryAllocateInfoNV; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkExportMemoryWin32HandleInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoKHR.html + struct ExportMemoryWin32HandleInfoKHR + { + using NativeType = VkExportMemoryWin32HandleInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoKHR( SECURITY_ATTRIBUTES const * pAttributes_ = {}, + DWORD dwAccess_ = {}, + LPCWSTR name_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pAttributes{ pAttributes_ } + , dwAccess{ dwAccess_ } + , name{ name_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoKHR( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMemoryWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ExportMemoryWin32HandleInfoKHR & operator=( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMemoryWin32HandleInfoKHR & operator=( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setPAttributes( SECURITY_ATTRIBUTES const * pAttributes_ ) & VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR && setPAttributes( SECURITY_ATTRIBUTES const * pAttributes_ ) && VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) & VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR && setDwAccess( DWORD dwAccess_ ) && VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) & VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR && setName( LPCWSTR name_ ) && VULKAN_HPP_NOEXCEPT + { + name = name_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMemoryWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMemoryWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMemoryWin32HandleInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMemoryWin32HandleInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pAttributes, dwAccess, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMemoryWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ExportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ExportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportMemoryWin32HandleInfoKHR; + void const * pNext = {}; + SECURITY_ATTRIBUTES const * pAttributes = {}; + DWORD dwAccess = {}; + LPCWSTR name = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMemoryWin32HandleInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = ExportMemoryWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkExportMemoryWin32HandleInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMemoryWin32HandleInfoNV.html + struct ExportMemoryWin32HandleInfoNV + { + using NativeType = VkExportMemoryWin32HandleInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryWin32HandleInfoNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ExportMemoryWin32HandleInfoNV( SECURITY_ATTRIBUTES const * pAttributes_ = {}, DWORD dwAccess_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pAttributes{ pAttributes_ } + , dwAccess{ dwAccess_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoNV( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMemoryWin32HandleInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ExportMemoryWin32HandleInfoNV & operator=( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMemoryWin32HandleInfoNV & operator=( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setPAttributes( SECURITY_ATTRIBUTES const * pAttributes_ ) & VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV && setPAttributes( SECURITY_ATTRIBUTES const * pAttributes_ ) && VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & setDwAccess( DWORD dwAccess_ ) & VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV && setDwAccess( DWORD dwAccess_ ) && VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMemoryWin32HandleInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMemoryWin32HandleInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMemoryWin32HandleInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMemoryWin32HandleInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pAttributes, dwAccess ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMemoryWin32HandleInfoNV const & ) const = default; +# else + bool operator==( ExportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess ); +# endif + } + + bool operator!=( ExportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportMemoryWin32HandleInfoNV; + void const * pNext = {}; + SECURITY_ATTRIBUTES const * pAttributes = {}; + DWORD dwAccess = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMemoryWin32HandleInfoNV; + }; +# endif + + template <> + struct CppType + { + using Type = ExportMemoryWin32HandleInfoNV; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkExportMetalBufferInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalBufferInfoEXT.html + struct ExportMetalBufferInfoEXT + { + using NativeType = VkExportMetalBufferInfoEXT; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMetalBufferInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMetalBufferInfoEXT( DeviceMemory memory_ = {}, MTLBuffer_id mtlBuffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + , mtlBuffer{ mtlBuffer_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMetalBufferInfoEXT( ExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMetalBufferInfoEXT( VkExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMetalBufferInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ExportMetalBufferInfoEXT & operator=( ExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMetalBufferInfoEXT & operator=( VkExportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT & setMtlBuffer( MTLBuffer_id mtlBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + mtlBuffer = mtlBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalBufferInfoEXT && setMtlBuffer( MTLBuffer_id mtlBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + mtlBuffer = mtlBuffer_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMetalBufferInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalBufferInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalBufferInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMetalBufferInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, mtlBuffer ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMetalBufferInfoEXT const & ) const = default; +# else + bool operator==( ExportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( mtlBuffer == rhs.mtlBuffer ); +# endif + } + + bool operator!=( ExportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportMetalBufferInfoEXT; + void const * pNext = {}; + DeviceMemory memory = {}; + MTLBuffer_id mtlBuffer = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMetalBufferInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ExportMetalBufferInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkExportMetalCommandQueueInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalCommandQueueInfoEXT.html + struct ExportMetalCommandQueueInfoEXT + { + using NativeType = VkExportMetalCommandQueueInfoEXT; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMetalCommandQueueInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ExportMetalCommandQueueInfoEXT( Queue queue_ = {}, MTLCommandQueue_id mtlCommandQueue_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , queue{ queue_ } + , mtlCommandQueue{ mtlCommandQueue_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMetalCommandQueueInfoEXT( ExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMetalCommandQueueInfoEXT( VkExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMetalCommandQueueInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ExportMetalCommandQueueInfoEXT & operator=( ExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMetalCommandQueueInfoEXT & operator=( VkExportMetalCommandQueueInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT & setQueue( Queue queue_ ) & VULKAN_HPP_NOEXCEPT + { + queue = queue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT && setQueue( Queue queue_ ) && VULKAN_HPP_NOEXCEPT + { + queue = queue_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT & setMtlCommandQueue( MTLCommandQueue_id mtlCommandQueue_ ) & VULKAN_HPP_NOEXCEPT + { + mtlCommandQueue = mtlCommandQueue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalCommandQueueInfoEXT && setMtlCommandQueue( MTLCommandQueue_id mtlCommandQueue_ ) && VULKAN_HPP_NOEXCEPT + { + mtlCommandQueue = mtlCommandQueue_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMetalCommandQueueInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalCommandQueueInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalCommandQueueInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMetalCommandQueueInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, queue, mtlCommandQueue ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMetalCommandQueueInfoEXT const & ) const = default; +# else + bool operator==( ExportMetalCommandQueueInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queue == rhs.queue ) && ( mtlCommandQueue == rhs.mtlCommandQueue ); +# endif + } + + bool operator!=( ExportMetalCommandQueueInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportMetalCommandQueueInfoEXT; + void const * pNext = {}; + Queue queue = {}; + MTLCommandQueue_id mtlCommandQueue = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMetalCommandQueueInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ExportMetalCommandQueueInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkExportMetalDeviceInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalDeviceInfoEXT.html + struct ExportMetalDeviceInfoEXT + { + using NativeType = VkExportMetalDeviceInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMetalDeviceInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMetalDeviceInfoEXT( MTLDevice_id mtlDevice_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , mtlDevice{ mtlDevice_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMetalDeviceInfoEXT( ExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMetalDeviceInfoEXT( VkExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMetalDeviceInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ExportMetalDeviceInfoEXT & operator=( ExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMetalDeviceInfoEXT & operator=( VkExportMetalDeviceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMetalDeviceInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalDeviceInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalDeviceInfoEXT & setMtlDevice( MTLDevice_id mtlDevice_ ) & VULKAN_HPP_NOEXCEPT + { + mtlDevice = mtlDevice_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalDeviceInfoEXT && setMtlDevice( MTLDevice_id mtlDevice_ ) && VULKAN_HPP_NOEXCEPT + { + mtlDevice = mtlDevice_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMetalDeviceInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalDeviceInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalDeviceInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMetalDeviceInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mtlDevice ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMetalDeviceInfoEXT const & ) const = default; +# else + bool operator==( ExportMetalDeviceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mtlDevice == rhs.mtlDevice ); +# endif + } + + bool operator!=( ExportMetalDeviceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportMetalDeviceInfoEXT; + void const * pNext = {}; + MTLDevice_id mtlDevice = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMetalDeviceInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ExportMetalDeviceInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkExportMetalIOSurfaceInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalIOSurfaceInfoEXT.html + struct ExportMetalIOSurfaceInfoEXT + { + using NativeType = VkExportMetalIOSurfaceInfoEXT; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMetalIoSurfaceInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMetalIOSurfaceInfoEXT( Image image_ = {}, IOSurfaceRef ioSurface_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image{ image_ } + , ioSurface{ ioSurface_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMetalIOSurfaceInfoEXT( ExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMetalIOSurfaceInfoEXT( VkExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMetalIOSurfaceInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ExportMetalIOSurfaceInfoEXT & operator=( ExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMetalIOSurfaceInfoEXT & operator=( VkExportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT & setIoSurface( IOSurfaceRef ioSurface_ ) & VULKAN_HPP_NOEXCEPT + { + ioSurface = ioSurface_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalIOSurfaceInfoEXT && setIoSurface( IOSurfaceRef ioSurface_ ) && VULKAN_HPP_NOEXCEPT + { + ioSurface = ioSurface_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMetalIOSurfaceInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalIOSurfaceInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalIOSurfaceInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMetalIOSurfaceInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image, ioSurface ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMetalIOSurfaceInfoEXT const & ) const = default; +# else + bool operator==( ExportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( ioSurface == rhs.ioSurface ); +# endif + } + + bool operator!=( ExportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportMetalIoSurfaceInfoEXT; + void const * pNext = {}; + Image image = {}; + IOSurfaceRef ioSurface = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMetalIOSurfaceInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ExportMetalIOSurfaceInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkExportMetalObjectCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalObjectCreateInfoEXT.html + struct ExportMetalObjectCreateInfoEXT + { + using NativeType = VkExportMetalObjectCreateInfoEXT; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMetalObjectCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMetalObjectCreateInfoEXT( ExportMetalObjectTypeFlagBitsEXT exportObjectType_ = ExportMetalObjectTypeFlagBitsEXT::eMetalDevice, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , exportObjectType{ exportObjectType_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMetalObjectCreateInfoEXT( ExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMetalObjectCreateInfoEXT( VkExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMetalObjectCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ExportMetalObjectCreateInfoEXT & operator=( ExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMetalObjectCreateInfoEXT & operator=( VkExportMetalObjectCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectCreateInfoEXT & setExportObjectType( ExportMetalObjectTypeFlagBitsEXT exportObjectType_ ) & VULKAN_HPP_NOEXCEPT + { + exportObjectType = exportObjectType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectCreateInfoEXT && setExportObjectType( ExportMetalObjectTypeFlagBitsEXT exportObjectType_ ) && VULKAN_HPP_NOEXCEPT + { + exportObjectType = exportObjectType_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMetalObjectCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalObjectCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalObjectCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMetalObjectCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, exportObjectType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMetalObjectCreateInfoEXT const & ) const = default; +# else + bool operator==( ExportMetalObjectCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exportObjectType == rhs.exportObjectType ); +# endif + } + + bool operator!=( ExportMetalObjectCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportMetalObjectCreateInfoEXT; + void const * pNext = {}; + ExportMetalObjectTypeFlagBitsEXT exportObjectType = ExportMetalObjectTypeFlagBitsEXT::eMetalDevice; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMetalObjectCreateInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ExportMetalObjectCreateInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkExportMetalObjectsInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalObjectsInfoEXT.html + struct ExportMetalObjectsInfoEXT + { + using NativeType = VkExportMetalObjectsInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMetalObjectsInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMetalObjectsInfoEXT( void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {} + + VULKAN_HPP_CONSTEXPR ExportMetalObjectsInfoEXT( ExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMetalObjectsInfoEXT( VkExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMetalObjectsInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ExportMetalObjectsInfoEXT & operator=( ExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMetalObjectsInfoEXT & operator=( VkExportMetalObjectsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectsInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalObjectsInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMetalObjectsInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalObjectsInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalObjectsInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMetalObjectsInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMetalObjectsInfoEXT const & ) const = default; +# else + bool operator==( ExportMetalObjectsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( ExportMetalObjectsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportMetalObjectsInfoEXT; + void const * pNext = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMetalObjectsInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ExportMetalObjectsInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkExportMetalSharedEventInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalSharedEventInfoEXT.html + struct ExportMetalSharedEventInfoEXT + { + using NativeType = VkExportMetalSharedEventInfoEXT; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMetalSharedEventInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMetalSharedEventInfoEXT( Semaphore semaphore_ = {}, + Event event_ = {}, + MTLSharedEvent_id mtlSharedEvent_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , semaphore{ semaphore_ } + , event{ event_ } + , mtlSharedEvent{ mtlSharedEvent_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMetalSharedEventInfoEXT( ExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMetalSharedEventInfoEXT( VkExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMetalSharedEventInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ExportMetalSharedEventInfoEXT & operator=( ExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMetalSharedEventInfoEXT & operator=( VkExportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setSemaphore( Semaphore semaphore_ ) & VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT && setSemaphore( Semaphore semaphore_ ) && VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setEvent( Event event_ ) & VULKAN_HPP_NOEXCEPT + { + event = event_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT && setEvent( Event event_ ) && VULKAN_HPP_NOEXCEPT + { + event = event_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT & setMtlSharedEvent( MTLSharedEvent_id mtlSharedEvent_ ) & VULKAN_HPP_NOEXCEPT + { + mtlSharedEvent = mtlSharedEvent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalSharedEventInfoEXT && setMtlSharedEvent( MTLSharedEvent_id mtlSharedEvent_ ) && VULKAN_HPP_NOEXCEPT + { + mtlSharedEvent = mtlSharedEvent_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMetalSharedEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalSharedEventInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalSharedEventInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMetalSharedEventInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, event, mtlSharedEvent ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMetalSharedEventInfoEXT const & ) const = default; +# else + bool operator==( ExportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( event == rhs.event ) && + ( mtlSharedEvent == rhs.mtlSharedEvent ); +# endif + } + + bool operator!=( ExportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportMetalSharedEventInfoEXT; + void const * pNext = {}; + Semaphore semaphore = {}; + Event event = {}; + MTLSharedEvent_id mtlSharedEvent = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMetalSharedEventInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ExportMetalSharedEventInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkExportMetalTextureInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportMetalTextureInfoEXT.html + struct ExportMetalTextureInfoEXT + { + using NativeType = VkExportMetalTextureInfoEXT; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMetalTextureInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportMetalTextureInfoEXT( Image image_ = {}, + ImageView imageView_ = {}, + BufferView bufferView_ = {}, + ImageAspectFlagBits plane_ = ImageAspectFlagBits::eColor, + MTLTexture_id mtlTexture_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image{ image_ } + , imageView{ imageView_ } + , bufferView{ bufferView_ } + , plane{ plane_ } + , mtlTexture{ mtlTexture_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportMetalTextureInfoEXT( ExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportMetalTextureInfoEXT( VkExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportMetalTextureInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ExportMetalTextureInfoEXT & operator=( ExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportMetalTextureInfoEXT & operator=( VkExportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setImageView( ImageView imageView_ ) & VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT && setImageView( ImageView imageView_ ) && VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setBufferView( BufferView bufferView_ ) & VULKAN_HPP_NOEXCEPT + { + bufferView = bufferView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT && setBufferView( BufferView bufferView_ ) && VULKAN_HPP_NOEXCEPT + { + bufferView = bufferView_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setPlane( ImageAspectFlagBits plane_ ) & VULKAN_HPP_NOEXCEPT + { + plane = plane_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT && setPlane( ImageAspectFlagBits plane_ ) && VULKAN_HPP_NOEXCEPT + { + plane = plane_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT & setMtlTexture( MTLTexture_id mtlTexture_ ) & VULKAN_HPP_NOEXCEPT + { + mtlTexture = mtlTexture_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportMetalTextureInfoEXT && setMtlTexture( MTLTexture_id mtlTexture_ ) && VULKAN_HPP_NOEXCEPT + { + mtlTexture = mtlTexture_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportMetalTextureInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalTextureInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportMetalTextureInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportMetalTextureInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image, imageView, bufferView, plane, mtlTexture ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportMetalTextureInfoEXT const & ) const = default; +# else + bool operator==( ExportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( imageView == rhs.imageView ) && ( bufferView == rhs.bufferView ) && + ( plane == rhs.plane ) && ( mtlTexture == rhs.mtlTexture ); +# endif + } + + bool operator!=( ExportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportMetalTextureInfoEXT; + void const * pNext = {}; + Image image = {}; + ImageView imageView = {}; + BufferView bufferView = {}; + ImageAspectFlagBits plane = ImageAspectFlagBits::eColor; + MTLTexture_id mtlTexture = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportMetalTextureInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ExportMetalTextureInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + // wrapper struct for struct VkExportSemaphoreCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportSemaphoreCreateInfo.html + struct ExportSemaphoreCreateInfo + { + using NativeType = VkExportSemaphoreCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportSemaphoreCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo( ExternalSemaphoreHandleTypeFlags handleTypes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleTypes{ handleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportSemaphoreCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + ExportSemaphoreCreateInfo & operator=( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportSemaphoreCreateInfo & operator=( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & setHandleTypes( ExternalSemaphoreHandleTypeFlags handleTypes_ ) & VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo && setHandleTypes( ExternalSemaphoreHandleTypeFlags handleTypes_ ) && VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportSemaphoreCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportSemaphoreCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportSemaphoreCreateInfo const & ) const = default; +#else + bool operator==( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExportSemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExportSemaphoreCreateInfo; + void const * pNext = {}; + ExternalSemaphoreHandleTypeFlags handleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportSemaphoreCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ExportSemaphoreCreateInfo; + }; + + using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkExportSemaphoreWin32HandleInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExportSemaphoreWin32HandleInfoKHR.html + struct ExportSemaphoreWin32HandleInfoKHR + { + using NativeType = VkExportSemaphoreWin32HandleInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportSemaphoreWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExportSemaphoreWin32HandleInfoKHR( SECURITY_ATTRIBUTES const * pAttributes_ = {}, + DWORD dwAccess_ = {}, + LPCWSTR name_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pAttributes{ pAttributes_ } + , dwAccess{ dwAccess_ } + , name{ name_ } + { + } + + VULKAN_HPP_CONSTEXPR ExportSemaphoreWin32HandleInfoKHR( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ExportSemaphoreWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ExportSemaphoreWin32HandleInfoKHR & operator=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExportSemaphoreWin32HandleInfoKHR & operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setPAttributes( SECURITY_ATTRIBUTES const * pAttributes_ ) & VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR && setPAttributes( SECURITY_ATTRIBUTES const * pAttributes_ ) && VULKAN_HPP_NOEXCEPT + { + pAttributes = pAttributes_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) & VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR && setDwAccess( DWORD dwAccess_ ) && VULKAN_HPP_NOEXCEPT + { + dwAccess = dwAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) & VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR && setName( LPCWSTR name_ ) && VULKAN_HPP_NOEXCEPT + { + name = name_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExportSemaphoreWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportSemaphoreWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExportSemaphoreWin32HandleInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExportSemaphoreWin32HandleInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pAttributes, dwAccess, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExportSemaphoreWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ExportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pAttributes == rhs.pAttributes ) && ( dwAccess == rhs.dwAccess ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExportSemaphoreWin32HandleInfoKHR; + void const * pNext = {}; + SECURITY_ATTRIBUTES const * pAttributes = {}; + DWORD dwAccess = {}; + LPCWSTR name = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExportSemaphoreWin32HandleInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = ExportSemaphoreWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + // wrapper struct for struct VkExtensionProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExtensionProperties.html + struct ExtensionProperties + { + using NativeType = VkExtensionProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 ExtensionProperties( std::array const & extensionName_ = {}, + uint32_t specVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : extensionName{ extensionName_ } + , specVersion{ specVersion_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ExtensionProperties( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExtensionProperties( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT : ExtensionProperties( *reinterpret_cast( &rhs ) ) + { + } + + ExtensionProperties & operator=( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExtensionProperties & operator=( VkExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkExtensionProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExtensionProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExtensionProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExtensionProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, uint32_t const &> reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( extensionName, specVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = strcmp( extensionName, rhs.extensionName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = specVersion <=> rhs.specVersion; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( strcmp( extensionName, rhs.extensionName ) == 0 ) && ( specVersion == rhs.specVersion ); + } + + bool operator!=( ExtensionProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + ArrayWrapper1D extensionName = {}; + uint32_t specVersion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExtensionProperties; + }; +#endif + + // wrapper struct for struct VkExternalMemoryProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryProperties.html + struct ExternalMemoryProperties + { + using NativeType = VkExternalMemoryProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( ExternalMemoryFeatureFlags externalMemoryFeatures_ = {}, + ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes_ = {}, + ExternalMemoryHandleTypeFlags compatibleHandleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : externalMemoryFeatures{ externalMemoryFeatures_ } + , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ } + , compatibleHandleTypes{ compatibleHandleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalMemoryProperties( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryProperties( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalMemoryProperties( *reinterpret_cast( &rhs ) ) + { + } + + ExternalMemoryProperties & operator=( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalMemoryProperties & operator=( VkExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkExternalMemoryProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalMemoryProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalMemoryProperties const & ) const = default; +#else + bool operator==( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( externalMemoryFeatures == rhs.externalMemoryFeatures ) && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) && + ( compatibleHandleTypes == rhs.compatibleHandleTypes ); +# endif + } + + bool operator!=( ExternalMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ExternalMemoryFeatureFlags externalMemoryFeatures = {}; + ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes = {}; + ExternalMemoryHandleTypeFlags compatibleHandleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalMemoryProperties; + }; +#endif + using ExternalMemoryPropertiesKHR = ExternalMemoryProperties; + + // wrapper struct for struct VkExternalBufferProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalBufferProperties.html + struct ExternalBufferProperties + { + using NativeType = VkExternalBufferProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalBufferProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalBufferProperties( ExternalMemoryProperties externalMemoryProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , externalMemoryProperties{ externalMemoryProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalBufferProperties( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalBufferProperties( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalBufferProperties( *reinterpret_cast( &rhs ) ) + { + } + + ExternalBufferProperties & operator=( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalBufferProperties & operator=( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkExternalBufferProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalBufferProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalBufferProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalBufferProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalMemoryProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalBufferProperties const & ) const = default; +#else + bool operator==( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryProperties == rhs.externalMemoryProperties ); +# endif + } + + bool operator!=( ExternalBufferProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalBufferProperties; + void * pNext = {}; + ExternalMemoryProperties externalMemoryProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalBufferProperties; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalBufferProperties; + }; + + using ExternalBufferPropertiesKHR = ExternalBufferProperties; + + // wrapper struct for struct VkExternalComputeQueueCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalComputeQueueCreateInfoNV.html + struct ExternalComputeQueueCreateInfoNV + { + using NativeType = VkExternalComputeQueueCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalComputeQueueCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalComputeQueueCreateInfoNV( Queue preferredQueue_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , preferredQueue{ preferredQueue_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalComputeQueueCreateInfoNV( ExternalComputeQueueCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalComputeQueueCreateInfoNV( VkExternalComputeQueueCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalComputeQueueCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ExternalComputeQueueCreateInfoNV & operator=( ExternalComputeQueueCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalComputeQueueCreateInfoNV & operator=( VkExternalComputeQueueCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueCreateInfoNV & setPreferredQueue( Queue preferredQueue_ ) & VULKAN_HPP_NOEXCEPT + { + preferredQueue = preferredQueue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueCreateInfoNV && setPreferredQueue( Queue preferredQueue_ ) && VULKAN_HPP_NOEXCEPT + { + preferredQueue = preferredQueue_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalComputeQueueCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalComputeQueueCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalComputeQueueCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalComputeQueueCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, preferredQueue ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalComputeQueueCreateInfoNV const & ) const = default; +#else + bool operator==( ExternalComputeQueueCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredQueue == rhs.preferredQueue ); +# endif + } + + bool operator!=( ExternalComputeQueueCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalComputeQueueCreateInfoNV; + void const * pNext = {}; + Queue preferredQueue = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalComputeQueueCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalComputeQueueCreateInfoNV; + }; + + // wrapper struct for struct VkExternalComputeQueueDataParamsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalComputeQueueDataParamsNV.html + struct ExternalComputeQueueDataParamsNV + { + using NativeType = VkExternalComputeQueueDataParamsNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalComputeQueueDataParamsNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalComputeQueueDataParamsNV( uint32_t deviceIndex_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceIndex{ deviceIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalComputeQueueDataParamsNV( ExternalComputeQueueDataParamsNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalComputeQueueDataParamsNV( VkExternalComputeQueueDataParamsNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalComputeQueueDataParamsNV( *reinterpret_cast( &rhs ) ) + { + } + + ExternalComputeQueueDataParamsNV & operator=( ExternalComputeQueueDataParamsNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalComputeQueueDataParamsNV & operator=( VkExternalComputeQueueDataParamsNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueDataParamsNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueDataParamsNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueDataParamsNV & setDeviceIndex( uint32_t deviceIndex_ ) & VULKAN_HPP_NOEXCEPT + { + deviceIndex = deviceIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueDataParamsNV && setDeviceIndex( uint32_t deviceIndex_ ) && VULKAN_HPP_NOEXCEPT + { + deviceIndex = deviceIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalComputeQueueDataParamsNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalComputeQueueDataParamsNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalComputeQueueDataParamsNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalComputeQueueDataParamsNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalComputeQueueDataParamsNV const & ) const = default; +#else + bool operator==( ExternalComputeQueueDataParamsNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceIndex == rhs.deviceIndex ); +# endif + } + + bool operator!=( ExternalComputeQueueDataParamsNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalComputeQueueDataParamsNV; + void const * pNext = {}; + uint32_t deviceIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalComputeQueueDataParamsNV; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalComputeQueueDataParamsNV; + }; + + // wrapper struct for struct VkExternalComputeQueueDeviceCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalComputeQueueDeviceCreateInfoNV.html + struct ExternalComputeQueueDeviceCreateInfoNV + { + using NativeType = VkExternalComputeQueueDeviceCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalComputeQueueDeviceCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalComputeQueueDeviceCreateInfoNV( uint32_t reservedExternalQueues_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , reservedExternalQueues{ reservedExternalQueues_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalComputeQueueDeviceCreateInfoNV( ExternalComputeQueueDeviceCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalComputeQueueDeviceCreateInfoNV( VkExternalComputeQueueDeviceCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalComputeQueueDeviceCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ExternalComputeQueueDeviceCreateInfoNV & operator=( ExternalComputeQueueDeviceCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalComputeQueueDeviceCreateInfoNV & operator=( VkExternalComputeQueueDeviceCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueDeviceCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueDeviceCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueDeviceCreateInfoNV & setReservedExternalQueues( uint32_t reservedExternalQueues_ ) & VULKAN_HPP_NOEXCEPT + { + reservedExternalQueues = reservedExternalQueues_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalComputeQueueDeviceCreateInfoNV && setReservedExternalQueues( uint32_t reservedExternalQueues_ ) && VULKAN_HPP_NOEXCEPT + { + reservedExternalQueues = reservedExternalQueues_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalComputeQueueDeviceCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalComputeQueueDeviceCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalComputeQueueDeviceCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalComputeQueueDeviceCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, reservedExternalQueues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalComputeQueueDeviceCreateInfoNV const & ) const = default; +#else + bool operator==( ExternalComputeQueueDeviceCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( reservedExternalQueues == rhs.reservedExternalQueues ); +# endif + } + + bool operator!=( ExternalComputeQueueDeviceCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalComputeQueueDeviceCreateInfoNV; + void const * pNext = {}; + uint32_t reservedExternalQueues = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalComputeQueueDeviceCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalComputeQueueDeviceCreateInfoNV; + }; + + // wrapper struct for struct VkExternalFenceProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalFenceProperties.html + struct ExternalFenceProperties + { + using NativeType = VkExternalFenceProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalFenceProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalFenceProperties( ExternalFenceHandleTypeFlags exportFromImportedHandleTypes_ = {}, + ExternalFenceHandleTypeFlags compatibleHandleTypes_ = {}, + ExternalFenceFeatureFlags externalFenceFeatures_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ } + , compatibleHandleTypes{ compatibleHandleTypes_ } + , externalFenceFeatures{ externalFenceFeatures_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalFenceProperties( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalFenceProperties( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalFenceProperties( *reinterpret_cast( &rhs ) ) + { + } + + ExternalFenceProperties & operator=( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalFenceProperties & operator=( VkExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkExternalFenceProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalFenceProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalFenceProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalFenceProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalFenceFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalFenceProperties const & ) const = default; +#else + bool operator==( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) && + ( compatibleHandleTypes == rhs.compatibleHandleTypes ) && ( externalFenceFeatures == rhs.externalFenceFeatures ); +# endif + } + + bool operator!=( ExternalFenceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalFenceProperties; + void * pNext = {}; + ExternalFenceHandleTypeFlags exportFromImportedHandleTypes = {}; + ExternalFenceHandleTypeFlags compatibleHandleTypes = {}; + ExternalFenceFeatureFlags externalFenceFeatures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalFenceProperties; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalFenceProperties; + }; + + using ExternalFencePropertiesKHR = ExternalFenceProperties; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkExternalFormatANDROID, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalFormatANDROID.html + struct ExternalFormatANDROID + { + using NativeType = VkExternalFormatANDROID; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalFormatANDROID; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( uint64_t externalFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , externalFormat{ externalFormat_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalFormatANDROID( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalFormatANDROID( *reinterpret_cast( &rhs ) ) + { + } + + ExternalFormatANDROID & operator=( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalFormatANDROID & operator=( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & setExternalFormat( uint64_t externalFormat_ ) & VULKAN_HPP_NOEXCEPT + { + externalFormat = externalFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID && setExternalFormat( uint64_t externalFormat_ ) && VULKAN_HPP_NOEXCEPT + { + externalFormat = externalFormat_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalFormatANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalFormatANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalFormatANDROID const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalFormatANDROID *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalFormat ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalFormatANDROID const & ) const = default; +# else + bool operator==( ExternalFormatANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormat == rhs.externalFormat ); +# endif + } + + bool operator!=( ExternalFormatANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExternalFormatANDROID; + void * pNext = {}; + uint64_t externalFormat = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalFormatANDROID; + }; +# endif + + template <> + struct CppType + { + using Type = ExternalFormatANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_OHOS ) + // wrapper struct for struct VkExternalFormatOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalFormatOHOS.html + struct ExternalFormatOHOS + { + using NativeType = VkExternalFormatOHOS; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalFormatOHOS; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalFormatOHOS( uint64_t externalFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , externalFormat{ externalFormat_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalFormatOHOS( ExternalFormatOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalFormatOHOS( VkExternalFormatOHOS const & rhs ) VULKAN_HPP_NOEXCEPT : ExternalFormatOHOS( *reinterpret_cast( &rhs ) ) {} + + ExternalFormatOHOS & operator=( ExternalFormatOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalFormatOHOS & operator=( VkExternalFormatOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalFormatOHOS & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalFormatOHOS && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalFormatOHOS & setExternalFormat( uint64_t externalFormat_ ) & VULKAN_HPP_NOEXCEPT + { + externalFormat = externalFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalFormatOHOS && setExternalFormat( uint64_t externalFormat_ ) && VULKAN_HPP_NOEXCEPT + { + externalFormat = externalFormat_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalFormatOHOS const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalFormatOHOS &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalFormatOHOS const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalFormatOHOS *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalFormat ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalFormatOHOS const & ) const = default; +# else + bool operator==( ExternalFormatOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormat == rhs.externalFormat ); +# endif + } + + bool operator!=( ExternalFormatOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExternalFormatOHOS; + void * pNext = {}; + uint64_t externalFormat = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalFormatOHOS; + }; +# endif + + template <> + struct CppType + { + using Type = ExternalFormatOHOS; + }; +#endif /*VK_USE_PLATFORM_OHOS*/ + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + // wrapper struct for struct VkExternalFormatQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalFormatQNX.html + struct ExternalFormatQNX + { + using NativeType = VkExternalFormatQNX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalFormatQNX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalFormatQNX( uint64_t externalFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , externalFormat{ externalFormat_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalFormatQNX( ExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalFormatQNX( VkExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT : ExternalFormatQNX( *reinterpret_cast( &rhs ) ) {} + + ExternalFormatQNX & operator=( ExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalFormatQNX & operator=( VkExternalFormatQNX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalFormatQNX & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalFormatQNX && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalFormatQNX & setExternalFormat( uint64_t externalFormat_ ) & VULKAN_HPP_NOEXCEPT + { + externalFormat = externalFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalFormatQNX && setExternalFormat( uint64_t externalFormat_ ) && VULKAN_HPP_NOEXCEPT + { + externalFormat = externalFormat_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalFormatQNX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalFormatQNX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalFormatQNX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalFormatQNX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalFormat ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalFormatQNX const & ) const = default; +# else + bool operator==( ExternalFormatQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormat == rhs.externalFormat ); +# endif + } + + bool operator!=( ExternalFormatQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eExternalFormatQNX; + void * pNext = {}; + uint64_t externalFormat = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalFormatQNX; + }; +# endif + + template <> + struct CppType + { + using Type = ExternalFormatQNX; + }; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + // wrapper struct for struct VkExternalImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalImageFormatProperties.html + struct ExternalImageFormatProperties + { + using NativeType = VkExternalImageFormatProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalImageFormatProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties( ExternalMemoryProperties externalMemoryProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , externalMemoryProperties{ externalMemoryProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalImageFormatProperties( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalImageFormatProperties( *reinterpret_cast( &rhs ) ) + { + } + + ExternalImageFormatProperties & operator=( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalImageFormatProperties & operator=( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkExternalImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalImageFormatProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalImageFormatProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalImageFormatProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalMemoryProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalImageFormatProperties const & ) const = default; +#else + bool operator==( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryProperties == rhs.externalMemoryProperties ); +# endif + } + + bool operator!=( ExternalImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalImageFormatProperties; + void * pNext = {}; + ExternalMemoryProperties externalMemoryProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalImageFormatProperties; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalImageFormatProperties; + }; + + using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties; + + // wrapper struct for struct VkImageFormatProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageFormatProperties.html + struct ImageFormatProperties + { + using NativeType = VkImageFormatProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageFormatProperties( Extent3D maxExtent_ = {}, + uint32_t maxMipLevels_ = {}, + uint32_t maxArrayLayers_ = {}, + SampleCountFlags sampleCounts_ = {}, + DeviceSize maxResourceSize_ = {} ) VULKAN_HPP_NOEXCEPT + : maxExtent{ maxExtent_ } + , maxMipLevels{ maxMipLevels_ } + , maxArrayLayers{ maxArrayLayers_ } + , sampleCounts{ sampleCounts_ } + , maxResourceSize{ maxResourceSize_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageFormatProperties( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatProperties( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageFormatProperties( *reinterpret_cast( &rhs ) ) + { + } + + ImageFormatProperties & operator=( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageFormatProperties & operator=( VkImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageFormatProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageFormatProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageFormatProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( maxExtent, maxMipLevels, maxArrayLayers, sampleCounts, maxResourceSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageFormatProperties const & ) const = default; +#else + bool operator==( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( maxExtent == rhs.maxExtent ) && ( maxMipLevels == rhs.maxMipLevels ) && ( maxArrayLayers == rhs.maxArrayLayers ) && + ( sampleCounts == rhs.sampleCounts ) && ( maxResourceSize == rhs.maxResourceSize ); +# endif + } + + bool operator!=( ImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Extent3D maxExtent = {}; + uint32_t maxMipLevels = {}; + uint32_t maxArrayLayers = {}; + SampleCountFlags sampleCounts = {}; + DeviceSize maxResourceSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageFormatProperties; + }; +#endif + + // wrapper struct for struct VkExternalImageFormatPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalImageFormatPropertiesNV.html + struct ExternalImageFormatPropertiesNV + { + using NativeType = VkExternalImageFormatPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalImageFormatPropertiesNV( ImageFormatProperties imageFormatProperties_ = {}, + ExternalMemoryFeatureFlagsNV externalMemoryFeatures_ = {}, + ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes_ = {}, + ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : imageFormatProperties{ imageFormatProperties_ } + , externalMemoryFeatures{ externalMemoryFeatures_ } + , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ } + , compatibleHandleTypes{ compatibleHandleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalImageFormatPropertiesNV( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalImageFormatPropertiesNV( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalImageFormatPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + ExternalImageFormatPropertiesNV & operator=( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalImageFormatPropertiesNV & operator=( VkExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkExternalImageFormatPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalImageFormatPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalImageFormatPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalImageFormatPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( imageFormatProperties, externalMemoryFeatures, exportFromImportedHandleTypes, compatibleHandleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalImageFormatPropertiesNV const & ) const = default; +#else + bool operator==( ExternalImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( imageFormatProperties == rhs.imageFormatProperties ) && ( externalMemoryFeatures == rhs.externalMemoryFeatures ) && + ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) && ( compatibleHandleTypes == rhs.compatibleHandleTypes ); +# endif + } + + bool operator!=( ExternalImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ImageFormatProperties imageFormatProperties = {}; + ExternalMemoryFeatureFlagsNV externalMemoryFeatures = {}; + ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes = {}; + ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalImageFormatPropertiesNV; + }; +#endif + + // wrapper struct for struct VkExternalMemoryAcquireUnmodifiedEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryAcquireUnmodifiedEXT.html + struct ExternalMemoryAcquireUnmodifiedEXT + { + using NativeType = VkExternalMemoryAcquireUnmodifiedEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryAcquireUnmodifiedEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalMemoryAcquireUnmodifiedEXT( Bool32 acquireUnmodifiedMemory_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , acquireUnmodifiedMemory{ acquireUnmodifiedMemory_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalMemoryAcquireUnmodifiedEXT( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryAcquireUnmodifiedEXT( VkExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalMemoryAcquireUnmodifiedEXT( *reinterpret_cast( &rhs ) ) + { + } + + ExternalMemoryAcquireUnmodifiedEXT & operator=( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalMemoryAcquireUnmodifiedEXT & operator=( VkExternalMemoryAcquireUnmodifiedEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryAcquireUnmodifiedEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryAcquireUnmodifiedEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryAcquireUnmodifiedEXT & setAcquireUnmodifiedMemory( Bool32 acquireUnmodifiedMemory_ ) & VULKAN_HPP_NOEXCEPT + { + acquireUnmodifiedMemory = acquireUnmodifiedMemory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryAcquireUnmodifiedEXT && setAcquireUnmodifiedMemory( Bool32 acquireUnmodifiedMemory_ ) && VULKAN_HPP_NOEXCEPT + { + acquireUnmodifiedMemory = acquireUnmodifiedMemory_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalMemoryAcquireUnmodifiedEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryAcquireUnmodifiedEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryAcquireUnmodifiedEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalMemoryAcquireUnmodifiedEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, acquireUnmodifiedMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalMemoryAcquireUnmodifiedEXT const & ) const = default; +#else + bool operator==( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireUnmodifiedMemory == rhs.acquireUnmodifiedMemory ); +# endif + } + + bool operator!=( ExternalMemoryAcquireUnmodifiedEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalMemoryAcquireUnmodifiedEXT; + void const * pNext = {}; + Bool32 acquireUnmodifiedMemory = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalMemoryAcquireUnmodifiedEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalMemoryAcquireUnmodifiedEXT; + }; + + // wrapper struct for struct VkExternalMemoryBufferCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryBufferCreateInfo.html + struct ExternalMemoryBufferCreateInfo + { + using NativeType = VkExternalMemoryBufferCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryBufferCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo( ExternalMemoryHandleTypeFlags handleTypes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleTypes{ handleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalMemoryBufferCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + ExternalMemoryBufferCreateInfo & operator=( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalMemoryBufferCreateInfo & operator=( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ ) & VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo && setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ ) && VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalMemoryBufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryBufferCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryBufferCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalMemoryBufferCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalMemoryBufferCreateInfo const & ) const = default; +#else + bool operator==( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExternalMemoryBufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalMemoryBufferCreateInfo; + void const * pNext = {}; + ExternalMemoryHandleTypeFlags handleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalMemoryBufferCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalMemoryBufferCreateInfo; + }; + + using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo; + + // wrapper struct for struct VkExternalMemoryImageCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfo.html + struct ExternalMemoryImageCreateInfo + { + using NativeType = VkExternalMemoryImageCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryImageCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo( ExternalMemoryHandleTypeFlags handleTypes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleTypes{ handleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalMemoryImageCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + ExternalMemoryImageCreateInfo & operator=( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalMemoryImageCreateInfo & operator=( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ ) & VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo && setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ ) && VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalMemoryImageCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryImageCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryImageCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalMemoryImageCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalMemoryImageCreateInfo const & ) const = default; +#else + bool operator==( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExternalMemoryImageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalMemoryImageCreateInfo; + void const * pNext = {}; + ExternalMemoryHandleTypeFlags handleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalMemoryImageCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalMemoryImageCreateInfo; + }; + + using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo; + + // wrapper struct for struct VkExternalMemoryImageCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryImageCreateInfoNV.html + struct ExternalMemoryImageCreateInfoNV + { + using NativeType = VkExternalMemoryImageCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryImageCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleTypes{ handleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalMemoryImageCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ExternalMemoryImageCreateInfoNV & operator=( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalMemoryImageCreateInfoNV & operator=( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV & setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ ) & VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV && setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ ) && VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalMemoryImageCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryImageCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryImageCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalMemoryImageCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalMemoryImageCreateInfoNV const & ) const = default; +#else + bool operator==( ExternalMemoryImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExternalMemoryImageCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalMemoryImageCreateInfoNV; + void const * pNext = {}; + ExternalMemoryHandleTypeFlagsNV handleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalMemoryImageCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalMemoryImageCreateInfoNV; + }; + + // wrapper struct for struct VkExternalMemoryTensorCreateInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalMemoryTensorCreateInfoARM.html + struct ExternalMemoryTensorCreateInfoARM + { + using NativeType = VkExternalMemoryTensorCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryTensorCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalMemoryTensorCreateInfoARM( ExternalMemoryHandleTypeFlags handleTypes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleTypes{ handleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalMemoryTensorCreateInfoARM( ExternalMemoryTensorCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalMemoryTensorCreateInfoARM( VkExternalMemoryTensorCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalMemoryTensorCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + ExternalMemoryTensorCreateInfoARM & operator=( ExternalMemoryTensorCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalMemoryTensorCreateInfoARM & operator=( VkExternalMemoryTensorCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryTensorCreateInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryTensorCreateInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryTensorCreateInfoARM & setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ ) & VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalMemoryTensorCreateInfoARM && setHandleTypes( ExternalMemoryHandleTypeFlags handleTypes_ ) && VULKAN_HPP_NOEXCEPT + { + handleTypes = handleTypes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalMemoryTensorCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryTensorCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalMemoryTensorCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalMemoryTensorCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalMemoryTensorCreateInfoARM const & ) const = default; +#else + bool operator==( ExternalMemoryTensorCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleTypes == rhs.handleTypes ); +# endif + } + + bool operator!=( ExternalMemoryTensorCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalMemoryTensorCreateInfoARM; + void const * pNext = {}; + ExternalMemoryHandleTypeFlags handleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalMemoryTensorCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalMemoryTensorCreateInfoARM; + }; + + // wrapper struct for struct VkExternalSemaphoreProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalSemaphoreProperties.html + struct ExternalSemaphoreProperties + { + using NativeType = VkExternalSemaphoreProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalSemaphoreProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties( ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes_ = {}, + ExternalSemaphoreHandleTypeFlags compatibleHandleTypes_ = {}, + ExternalSemaphoreFeatureFlags externalSemaphoreFeatures_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , exportFromImportedHandleTypes{ exportFromImportedHandleTypes_ } + , compatibleHandleTypes{ compatibleHandleTypes_ } + , externalSemaphoreFeatures{ externalSemaphoreFeatures_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalSemaphoreProperties( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalSemaphoreProperties( *reinterpret_cast( &rhs ) ) + { + } + + ExternalSemaphoreProperties & operator=( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalSemaphoreProperties & operator=( VkExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkExternalSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalSemaphoreProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalSemaphoreProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalSemaphoreProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, exportFromImportedHandleTypes, compatibleHandleTypes, externalSemaphoreFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalSemaphoreProperties const & ) const = default; +#else + bool operator==( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) && + ( compatibleHandleTypes == rhs.compatibleHandleTypes ) && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures ); +# endif + } + + bool operator!=( ExternalSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalSemaphoreProperties; + void * pNext = {}; + ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes = {}; + ExternalSemaphoreHandleTypeFlags compatibleHandleTypes = {}; + ExternalSemaphoreFeatureFlags externalSemaphoreFeatures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalSemaphoreProperties; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalSemaphoreProperties; + }; + + using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties; + + // wrapper struct for struct VkExternalTensorPropertiesARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkExternalTensorPropertiesARM.html + struct ExternalTensorPropertiesARM + { + using NativeType = VkExternalTensorPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalTensorPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ExternalTensorPropertiesARM( ExternalMemoryProperties externalMemoryProperties_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , externalMemoryProperties{ externalMemoryProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR ExternalTensorPropertiesARM( ExternalTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ExternalTensorPropertiesARM( VkExternalTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : ExternalTensorPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + ExternalTensorPropertiesARM & operator=( ExternalTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ExternalTensorPropertiesARM & operator=( VkExternalTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ExternalTensorPropertiesARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalTensorPropertiesARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ExternalTensorPropertiesARM & setExternalMemoryProperties( ExternalMemoryProperties const & externalMemoryProperties_ ) & + VULKAN_HPP_NOEXCEPT + { + externalMemoryProperties = externalMemoryProperties_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ExternalTensorPropertiesARM && setExternalMemoryProperties( ExternalMemoryProperties const & externalMemoryProperties_ ) && + VULKAN_HPP_NOEXCEPT + { + externalMemoryProperties = externalMemoryProperties_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkExternalTensorPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalTensorPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkExternalTensorPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkExternalTensorPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalMemoryProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ExternalTensorPropertiesARM const & ) const = default; +#else + bool operator==( ExternalTensorPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryProperties == rhs.externalMemoryProperties ); +# endif + } + + bool operator!=( ExternalTensorPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eExternalTensorPropertiesARM; + void const * pNext = {}; + ExternalMemoryProperties externalMemoryProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ExternalTensorPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = ExternalTensorPropertiesARM; + }; + + // wrapper struct for struct VkFenceCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFenceCreateInfo.html + struct FenceCreateInfo + { + using NativeType = VkFenceCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FenceCreateInfo( FenceCreateFlags flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR FenceCreateInfo( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FenceCreateInfo( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : FenceCreateInfo( *reinterpret_cast( &rhs ) ) {} + + FenceCreateInfo & operator=( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FenceCreateInfo & operator=( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & setFlags( FenceCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo && setFlags( FenceCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkFenceCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFenceCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFenceCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFenceCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FenceCreateInfo const & ) const = default; +#else + bool operator==( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( FenceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFenceCreateInfo; + void const * pNext = {}; + FenceCreateFlags flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FenceCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = FenceCreateInfo; + }; + + // wrapper struct for struct VkFenceGetFdInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFenceGetFdInfoKHR.html + struct FenceGetFdInfoKHR + { + using NativeType = VkFenceGetFdInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceGetFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FenceGetFdInfoKHR( Fence fence_ = {}, + ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fence{ fence_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR FenceGetFdInfoKHR( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : FenceGetFdInfoKHR( *reinterpret_cast( &rhs ) ) {} + + FenceGetFdInfoKHR & operator=( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FenceGetFdInfoKHR & operator=( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setFence( Fence fence_ ) & VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR && setFence( Fence fence_ ) && VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & setHandleType( ExternalFenceHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR && setHandleType( ExternalFenceHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkFenceGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFenceGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFenceGetFdInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFenceGetFdInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fence, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FenceGetFdInfoKHR const & ) const = default; +#else + bool operator==( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( FenceGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFenceGetFdInfoKHR; + void const * pNext = {}; + Fence fence = {}; + ExternalFenceHandleTypeFlagBits handleType = ExternalFenceHandleTypeFlagBits::eOpaqueFd; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FenceGetFdInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = FenceGetFdInfoKHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkFenceGetWin32HandleInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFenceGetWin32HandleInfoKHR.html + struct FenceGetWin32HandleInfoKHR + { + using NativeType = VkFenceGetWin32HandleInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceGetWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FenceGetWin32HandleInfoKHR( Fence fence_ = {}, + ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fence{ fence_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR FenceGetWin32HandleInfoKHR( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : FenceGetWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + FenceGetWin32HandleInfoKHR & operator=( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FenceGetWin32HandleInfoKHR & operator=( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setFence( Fence fence_ ) & VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR && setFence( Fence fence_ ) && VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & setHandleType( ExternalFenceHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR && setHandleType( ExternalFenceHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkFenceGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFenceGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFenceGetWin32HandleInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFenceGetWin32HandleInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fence, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FenceGetWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( FenceGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( FenceGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eFenceGetWin32HandleInfoKHR; + void const * pNext = {}; + Fence fence = {}; + ExternalFenceHandleTypeFlagBits handleType = ExternalFenceHandleTypeFlagBits::eOpaqueFd; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FenceGetWin32HandleInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = FenceGetWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + // wrapper struct for struct VkFilterCubicImageViewImageFormatPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkFilterCubicImageViewImageFormatPropertiesEXT.html + struct FilterCubicImageViewImageFormatPropertiesEXT + { + using NativeType = VkFilterCubicImageViewImageFormatPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + FilterCubicImageViewImageFormatPropertiesEXT( Bool32 filterCubic_ = {}, Bool32 filterCubicMinmax_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , filterCubic{ filterCubic_ } + , filterCubicMinmax{ filterCubicMinmax_ } + { + } + + VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FilterCubicImageViewImageFormatPropertiesEXT( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : FilterCubicImageViewImageFormatPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + FilterCubicImageViewImageFormatPropertiesEXT & operator=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FilterCubicImageViewImageFormatPropertiesEXT & operator=( VkFilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkFilterCubicImageViewImageFormatPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFilterCubicImageViewImageFormatPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFilterCubicImageViewImageFormatPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFilterCubicImageViewImageFormatPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, filterCubic, filterCubicMinmax ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FilterCubicImageViewImageFormatPropertiesEXT const & ) const = default; +#else + bool operator==( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( filterCubic == rhs.filterCubic ) && ( filterCubicMinmax == rhs.filterCubicMinmax ); +# endif + } + + bool operator!=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT; + void * pNext = {}; + Bool32 filterCubic = {}; + Bool32 filterCubicMinmax = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FilterCubicImageViewImageFormatPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = FilterCubicImageViewImageFormatPropertiesEXT; + }; + + // wrapper struct for struct VkFormatProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFormatProperties.html + struct FormatProperties + { + using NativeType = VkFormatProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FormatProperties( FormatFeatureFlags linearTilingFeatures_ = {}, + FormatFeatureFlags optimalTilingFeatures_ = {}, + FormatFeatureFlags bufferFeatures_ = {} ) VULKAN_HPP_NOEXCEPT + : linearTilingFeatures{ linearTilingFeatures_ } + , optimalTilingFeatures{ optimalTilingFeatures_ } + , bufferFeatures{ bufferFeatures_ } + { + } + + VULKAN_HPP_CONSTEXPR FormatProperties( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FormatProperties( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT : FormatProperties( *reinterpret_cast( &rhs ) ) {} + + FormatProperties & operator=( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FormatProperties & operator=( VkFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkFormatProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFormatProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFormatProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFormatProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( linearTilingFeatures, optimalTilingFeatures, bufferFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FormatProperties const & ) const = default; +#else + bool operator==( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( linearTilingFeatures == rhs.linearTilingFeatures ) && ( optimalTilingFeatures == rhs.optimalTilingFeatures ) && + ( bufferFeatures == rhs.bufferFeatures ); +# endif + } + + bool operator!=( FormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + FormatFeatureFlags linearTilingFeatures = {}; + FormatFeatureFlags optimalTilingFeatures = {}; + FormatFeatureFlags bufferFeatures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FormatProperties; + }; +#endif + + // wrapper struct for struct VkFormatProperties2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFormatProperties2.html + struct FormatProperties2 + { + using NativeType = VkFormatProperties2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFormatProperties2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FormatProperties2( FormatProperties formatProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , formatProperties{ formatProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR FormatProperties2( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FormatProperties2( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT : FormatProperties2( *reinterpret_cast( &rhs ) ) {} + + FormatProperties2 & operator=( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FormatProperties2 & operator=( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFormatProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFormatProperties2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFormatProperties2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, formatProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FormatProperties2 const & ) const = default; +#else + bool operator==( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatProperties == rhs.formatProperties ); +# endif + } + + bool operator!=( FormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFormatProperties2; + void * pNext = {}; + FormatProperties formatProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FormatProperties2; + }; +#endif + + template <> + struct CppType + { + using Type = FormatProperties2; + }; + + using FormatProperties2KHR = FormatProperties2; + + // wrapper struct for struct VkFormatProperties3, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFormatProperties3.html + struct FormatProperties3 + { + using NativeType = VkFormatProperties3; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFormatProperties3; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FormatProperties3( FormatFeatureFlags2 linearTilingFeatures_ = {}, + FormatFeatureFlags2 optimalTilingFeatures_ = {}, + FormatFeatureFlags2 bufferFeatures_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , linearTilingFeatures{ linearTilingFeatures_ } + , optimalTilingFeatures{ optimalTilingFeatures_ } + , bufferFeatures{ bufferFeatures_ } + { + } + + VULKAN_HPP_CONSTEXPR FormatProperties3( FormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FormatProperties3( VkFormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT : FormatProperties3( *reinterpret_cast( &rhs ) ) {} + + FormatProperties3 & operator=( FormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FormatProperties3 & operator=( VkFormatProperties3 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkFormatProperties3 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFormatProperties3 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFormatProperties3 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFormatProperties3 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, linearTilingFeatures, optimalTilingFeatures, bufferFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FormatProperties3 const & ) const = default; +#else + bool operator==( FormatProperties3 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( linearTilingFeatures == rhs.linearTilingFeatures ) && + ( optimalTilingFeatures == rhs.optimalTilingFeatures ) && ( bufferFeatures == rhs.bufferFeatures ); +# endif + } + + bool operator!=( FormatProperties3 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFormatProperties3; + void * pNext = {}; + FormatFeatureFlags2 linearTilingFeatures = {}; + FormatFeatureFlags2 optimalTilingFeatures = {}; + FormatFeatureFlags2 bufferFeatures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FormatProperties3; + }; +#endif + + template <> + struct CppType + { + using Type = FormatProperties3; + }; + + using FormatProperties3KHR = FormatProperties3; + + // wrapper struct for struct VkFragmentShadingRateAttachmentInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkFragmentShadingRateAttachmentInfoKHR.html + struct FragmentShadingRateAttachmentInfoKHR + { + using NativeType = VkFragmentShadingRateAttachmentInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFragmentShadingRateAttachmentInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( AttachmentReference2 const * pFragmentShadingRateAttachment_ = {}, + Extent2D shadingRateAttachmentTexelSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pFragmentShadingRateAttachment{ pFragmentShadingRateAttachment_ } + , shadingRateAttachmentTexelSize{ shadingRateAttachmentTexelSize_ } + { + } + + VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FragmentShadingRateAttachmentInfoKHR( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : FragmentShadingRateAttachmentInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + FragmentShadingRateAttachmentInfoKHR & operator=( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FragmentShadingRateAttachmentInfoKHR & operator=( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & + setPFragmentShadingRateAttachment( AttachmentReference2 const * pFragmentShadingRateAttachment_ ) & + VULKAN_HPP_NOEXCEPT + { + pFragmentShadingRateAttachment = pFragmentShadingRateAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR && + setPFragmentShadingRateAttachment( AttachmentReference2 const * pFragmentShadingRateAttachment_ ) && + VULKAN_HPP_NOEXCEPT + { + pFragmentShadingRateAttachment = pFragmentShadingRateAttachment_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & setShadingRateAttachmentTexelSize( Extent2D const & shadingRateAttachmentTexelSize_ ) & + VULKAN_HPP_NOEXCEPT + { + shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR && setShadingRateAttachmentTexelSize( Extent2D const & shadingRateAttachmentTexelSize_ ) && + VULKAN_HPP_NOEXCEPT + { + shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFragmentShadingRateAttachmentInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFragmentShadingRateAttachmentInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pFragmentShadingRateAttachment, shadingRateAttachmentTexelSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FragmentShadingRateAttachmentInfoKHR const & ) const = default; +#else + bool operator==( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pFragmentShadingRateAttachment == rhs.pFragmentShadingRateAttachment ) && + ( shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize ); +# endif + } + + bool operator!=( FragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFragmentShadingRateAttachmentInfoKHR; + void const * pNext = {}; + AttachmentReference2 const * pFragmentShadingRateAttachment = {}; + Extent2D shadingRateAttachmentTexelSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FragmentShadingRateAttachmentInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = FragmentShadingRateAttachmentInfoKHR; + }; + + // wrapper struct for struct VkFrameBoundaryEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFrameBoundaryEXT.html + struct FrameBoundaryEXT + { + using NativeType = VkFrameBoundaryEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFrameBoundaryEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FrameBoundaryEXT( FrameBoundaryFlagsEXT flags_ = {}, + uint64_t frameID_ = {}, + uint32_t imageCount_ = {}, + Image const * pImages_ = {}, + uint32_t bufferCount_ = {}, + Buffer const * pBuffers_ = {}, + uint64_t tagName_ = {}, + size_t tagSize_ = {}, + void const * pTag_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , frameID{ frameID_ } + , imageCount{ imageCount_ } + , pImages{ pImages_ } + , bufferCount{ bufferCount_ } + , pBuffers{ pBuffers_ } + , tagName{ tagName_ } + , tagSize{ tagSize_ } + , pTag{ pTag_ } + { + } + + VULKAN_HPP_CONSTEXPR FrameBoundaryEXT( FrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FrameBoundaryEXT( VkFrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT : FrameBoundaryEXT( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + FrameBoundaryEXT( FrameBoundaryFlagsEXT flags_, + uint64_t frameID_, + ArrayProxyNoTemporaries const & images_, + ArrayProxyNoTemporaries const & buffers_ = {}, + uint64_t tagName_ = {}, + ArrayProxyNoTemporaries const & tag_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , frameID( frameID_ ) + , imageCount( static_cast( images_.size() ) ) + , pImages( images_.data() ) + , bufferCount( static_cast( buffers_.size() ) ) + , pBuffers( buffers_.data() ) + , tagName( tagName_ ) + , tagSize( tag_.size() * sizeof( T ) ) + , pTag( tag_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + FrameBoundaryEXT & operator=( FrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FrameBoundaryEXT & operator=( VkFrameBoundaryEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setFlags( FrameBoundaryFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT && setFlags( FrameBoundaryFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setFrameID( uint64_t frameID_ ) & VULKAN_HPP_NOEXCEPT + { + frameID = frameID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT && setFrameID( uint64_t frameID_ ) && VULKAN_HPP_NOEXCEPT + { + frameID = frameID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setImageCount( uint32_t imageCount_ ) & VULKAN_HPP_NOEXCEPT + { + imageCount = imageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT && setImageCount( uint32_t imageCount_ ) && VULKAN_HPP_NOEXCEPT + { + imageCount = imageCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPImages( Image const * pImages_ ) & VULKAN_HPP_NOEXCEPT + { + pImages = pImages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT && setPImages( Image const * pImages_ ) && VULKAN_HPP_NOEXCEPT + { + pImages = pImages_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FrameBoundaryEXT & setImages( ArrayProxyNoTemporaries const & images_ ) VULKAN_HPP_NOEXCEPT + { + imageCount = static_cast( images_.size() ); + pImages = images_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setBufferCount( uint32_t bufferCount_ ) & VULKAN_HPP_NOEXCEPT + { + bufferCount = bufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT && setBufferCount( uint32_t bufferCount_ ) && VULKAN_HPP_NOEXCEPT + { + bufferCount = bufferCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPBuffers( Buffer const * pBuffers_ ) & VULKAN_HPP_NOEXCEPT + { + pBuffers = pBuffers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT && setPBuffers( Buffer const * pBuffers_ ) && VULKAN_HPP_NOEXCEPT + { + pBuffers = pBuffers_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FrameBoundaryEXT & setBuffers( ArrayProxyNoTemporaries const & buffers_ ) VULKAN_HPP_NOEXCEPT + { + bufferCount = static_cast( buffers_.size() ); + pBuffers = buffers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setTagName( uint64_t tagName_ ) & VULKAN_HPP_NOEXCEPT + { + tagName = tagName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT && setTagName( uint64_t tagName_ ) && VULKAN_HPP_NOEXCEPT + { + tagName = tagName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setTagSize( size_t tagSize_ ) & VULKAN_HPP_NOEXCEPT + { + tagSize = tagSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT && setTagSize( size_t tagSize_ ) && VULKAN_HPP_NOEXCEPT + { + tagSize = tagSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT & setPTag( void const * pTag_ ) & VULKAN_HPP_NOEXCEPT + { + pTag = pTag_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryEXT && setPTag( void const * pTag_ ) && VULKAN_HPP_NOEXCEPT + { + pTag = pTag_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + FrameBoundaryEXT & setTag( ArrayProxyNoTemporaries const & tag_ ) VULKAN_HPP_NOEXCEPT + { + tagSize = tag_.size() * sizeof( T ); + pTag = tag_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkFrameBoundaryEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFrameBoundaryEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFrameBoundaryEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFrameBoundaryEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, frameID, imageCount, pImages, bufferCount, pBuffers, tagName, tagSize, pTag ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FrameBoundaryEXT const & ) const = default; +#else + bool operator==( FrameBoundaryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( frameID == rhs.frameID ) && ( imageCount == rhs.imageCount ) && + ( pImages == rhs.pImages ) && ( bufferCount == rhs.bufferCount ) && ( pBuffers == rhs.pBuffers ) && ( tagName == rhs.tagName ) && + ( tagSize == rhs.tagSize ) && ( pTag == rhs.pTag ); +# endif + } + + bool operator!=( FrameBoundaryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFrameBoundaryEXT; + void const * pNext = {}; + FrameBoundaryFlagsEXT flags = {}; + uint64_t frameID = {}; + uint32_t imageCount = {}; + Image const * pImages = {}; + uint32_t bufferCount = {}; + Buffer const * pBuffers = {}; + uint64_t tagName = {}; + size_t tagSize = {}; + void const * pTag = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FrameBoundaryEXT; + }; +#endif + + template <> + struct CppType + { + using Type = FrameBoundaryEXT; + }; + + // wrapper struct for struct VkFrameBoundaryTensorsARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFrameBoundaryTensorsARM.html + struct FrameBoundaryTensorsARM + { + using NativeType = VkFrameBoundaryTensorsARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFrameBoundaryTensorsARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + FrameBoundaryTensorsARM( uint32_t tensorCount_ = {}, TensorARM const * pTensors_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensorCount{ tensorCount_ } + , pTensors{ pTensors_ } + { + } + + VULKAN_HPP_CONSTEXPR FrameBoundaryTensorsARM( FrameBoundaryTensorsARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FrameBoundaryTensorsARM( VkFrameBoundaryTensorsARM const & rhs ) VULKAN_HPP_NOEXCEPT + : FrameBoundaryTensorsARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FrameBoundaryTensorsARM( ArrayProxyNoTemporaries const & tensors_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), tensorCount( static_cast( tensors_.size() ) ), pTensors( tensors_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + FrameBoundaryTensorsARM & operator=( FrameBoundaryTensorsARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FrameBoundaryTensorsARM & operator=( VkFrameBoundaryTensorsARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryTensorsARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryTensorsARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryTensorsARM & setTensorCount( uint32_t tensorCount_ ) & VULKAN_HPP_NOEXCEPT + { + tensorCount = tensorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryTensorsARM && setTensorCount( uint32_t tensorCount_ ) && VULKAN_HPP_NOEXCEPT + { + tensorCount = tensorCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryTensorsARM & setPTensors( TensorARM const * pTensors_ ) & VULKAN_HPP_NOEXCEPT + { + pTensors = pTensors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FrameBoundaryTensorsARM && setPTensors( TensorARM const * pTensors_ ) && VULKAN_HPP_NOEXCEPT + { + pTensors = pTensors_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FrameBoundaryTensorsARM & setTensors( ArrayProxyNoTemporaries const & tensors_ ) VULKAN_HPP_NOEXCEPT + { + tensorCount = static_cast( tensors_.size() ); + pTensors = tensors_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkFrameBoundaryTensorsARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFrameBoundaryTensorsARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFrameBoundaryTensorsARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFrameBoundaryTensorsARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensorCount, pTensors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FrameBoundaryTensorsARM const & ) const = default; +#else + bool operator==( FrameBoundaryTensorsARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensorCount == rhs.tensorCount ) && ( pTensors == rhs.pTensors ); +# endif + } + + bool operator!=( FrameBoundaryTensorsARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFrameBoundaryTensorsARM; + void const * pNext = {}; + uint32_t tensorCount = {}; + TensorARM const * pTensors = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FrameBoundaryTensorsARM; + }; +#endif + + template <> + struct CppType + { + using Type = FrameBoundaryTensorsARM; + }; + + // wrapper struct for struct VkFramebufferAttachmentImageInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebufferAttachmentImageInfo.html + struct FramebufferAttachmentImageInfo + { + using NativeType = VkFramebufferAttachmentImageInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferAttachmentImageInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FramebufferAttachmentImageInfo( ImageCreateFlags flags_ = {}, + ImageUsageFlags usage_ = {}, + uint32_t width_ = {}, + uint32_t height_ = {}, + uint32_t layerCount_ = {}, + uint32_t viewFormatCount_ = {}, + Format const * pViewFormats_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , usage{ usage_ } + , width{ width_ } + , height{ height_ } + , layerCount{ layerCount_ } + , viewFormatCount{ viewFormatCount_ } + , pViewFormats{ pViewFormats_ } + { + } + + VULKAN_HPP_CONSTEXPR FramebufferAttachmentImageInfo( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferAttachmentImageInfo( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : FramebufferAttachmentImageInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferAttachmentImageInfo( ImageCreateFlags flags_, + ImageUsageFlags usage_, + uint32_t width_, + uint32_t height_, + uint32_t layerCount_, + ArrayProxyNoTemporaries const & viewFormats_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , usage( usage_ ) + , width( width_ ) + , height( height_ ) + , layerCount( layerCount_ ) + , viewFormatCount( static_cast( viewFormats_.size() ) ) + , pViewFormats( viewFormats_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + FramebufferAttachmentImageInfo & operator=( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FramebufferAttachmentImageInfo & operator=( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setFlags( ImageCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo && setFlags( ImageCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setUsage( ImageUsageFlags usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo && setUsage( ImageUsageFlags usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setWidth( uint32_t width_ ) & VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo && setWidth( uint32_t width_ ) && VULKAN_HPP_NOEXCEPT + { + width = width_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setHeight( uint32_t height_ ) & VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo && setHeight( uint32_t height_ ) && VULKAN_HPP_NOEXCEPT + { + height = height_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setLayerCount( uint32_t layerCount_ ) & VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo && setLayerCount( uint32_t layerCount_ ) && VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setViewFormatCount( uint32_t viewFormatCount_ ) & VULKAN_HPP_NOEXCEPT + { + viewFormatCount = viewFormatCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo && setViewFormatCount( uint32_t viewFormatCount_ ) && VULKAN_HPP_NOEXCEPT + { + viewFormatCount = viewFormatCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & setPViewFormats( Format const * pViewFormats_ ) & VULKAN_HPP_NOEXCEPT + { + pViewFormats = pViewFormats_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo && setPViewFormats( Format const * pViewFormats_ ) && VULKAN_HPP_NOEXCEPT + { + pViewFormats = pViewFormats_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferAttachmentImageInfo & setViewFormats( ArrayProxyNoTemporaries const & viewFormats_ ) VULKAN_HPP_NOEXCEPT + { + viewFormatCount = static_cast( viewFormats_.size() ); + pViewFormats = viewFormats_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkFramebufferAttachmentImageInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFramebufferAttachmentImageInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFramebufferAttachmentImageInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFramebufferAttachmentImageInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, usage, width, height, layerCount, viewFormatCount, pViewFormats ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FramebufferAttachmentImageInfo const & ) const = default; +#else + bool operator==( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( usage == rhs.usage ) && ( width == rhs.width ) && + ( height == rhs.height ) && ( layerCount == rhs.layerCount ) && ( viewFormatCount == rhs.viewFormatCount ) && ( pViewFormats == rhs.pViewFormats ); +# endif + } + + bool operator!=( FramebufferAttachmentImageInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFramebufferAttachmentImageInfo; + void const * pNext = {}; + ImageCreateFlags flags = {}; + ImageUsageFlags usage = {}; + uint32_t width = {}; + uint32_t height = {}; + uint32_t layerCount = {}; + uint32_t viewFormatCount = {}; + Format const * pViewFormats = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FramebufferAttachmentImageInfo; + }; +#endif + + template <> + struct CppType + { + using Type = FramebufferAttachmentImageInfo; + }; + + using FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo; + + // wrapper struct for struct VkFramebufferAttachmentsCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebufferAttachmentsCreateInfo.html + struct FramebufferAttachmentsCreateInfo + { + using NativeType = VkFramebufferAttachmentsCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferAttachmentsCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo( uint32_t attachmentImageInfoCount_ = {}, + FramebufferAttachmentImageInfo const * pAttachmentImageInfos_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , attachmentImageInfoCount{ attachmentImageInfoCount_ } + , pAttachmentImageInfos{ pAttachmentImageInfos_ } + { + } + + VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferAttachmentsCreateInfo( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : FramebufferAttachmentsCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferAttachmentsCreateInfo( ArrayProxyNoTemporaries const & attachmentImageInfos_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , attachmentImageInfoCount( static_cast( attachmentImageInfos_.size() ) ) + , pAttachmentImageInfos( attachmentImageInfos_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + FramebufferAttachmentsCreateInfo & operator=( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FramebufferAttachmentsCreateInfo & operator=( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setAttachmentImageInfoCount( uint32_t attachmentImageInfoCount_ ) & VULKAN_HPP_NOEXCEPT + { + attachmentImageInfoCount = attachmentImageInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo && setAttachmentImageInfoCount( uint32_t attachmentImageInfoCount_ ) && VULKAN_HPP_NOEXCEPT + { + attachmentImageInfoCount = attachmentImageInfoCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & setPAttachmentImageInfos( FramebufferAttachmentImageInfo const * pAttachmentImageInfos_ ) & + VULKAN_HPP_NOEXCEPT + { + pAttachmentImageInfos = pAttachmentImageInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo && setPAttachmentImageInfos( FramebufferAttachmentImageInfo const * pAttachmentImageInfos_ ) && + VULKAN_HPP_NOEXCEPT + { + pAttachmentImageInfos = pAttachmentImageInfos_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferAttachmentsCreateInfo & + setAttachmentImageInfos( ArrayProxyNoTemporaries const & attachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT + { + attachmentImageInfoCount = static_cast( attachmentImageInfos_.size() ); + pAttachmentImageInfos = attachmentImageInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkFramebufferAttachmentsCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFramebufferAttachmentsCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFramebufferAttachmentsCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFramebufferAttachmentsCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, attachmentImageInfoCount, pAttachmentImageInfos ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FramebufferAttachmentsCreateInfo const & ) const = default; +#else + bool operator==( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentImageInfoCount == rhs.attachmentImageInfoCount ) && + ( pAttachmentImageInfos == rhs.pAttachmentImageInfos ); +# endif + } + + bool operator!=( FramebufferAttachmentsCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFramebufferAttachmentsCreateInfo; + void const * pNext = {}; + uint32_t attachmentImageInfoCount = {}; + FramebufferAttachmentImageInfo const * pAttachmentImageInfos = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FramebufferAttachmentsCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = FramebufferAttachmentsCreateInfo; + }; + + using FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo; + + // wrapper struct for struct VkFramebufferCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebufferCreateInfo.html + struct FramebufferCreateInfo + { + using NativeType = VkFramebufferCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( FramebufferCreateFlags flags_ = {}, + RenderPass renderPass_ = {}, + uint32_t attachmentCount_ = {}, + ImageView const * pAttachments_ = {}, + uint32_t width_ = {}, + uint32_t height_ = {}, + uint32_t layers_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , renderPass{ renderPass_ } + , attachmentCount{ attachmentCount_ } + , pAttachments{ pAttachments_ } + , width{ width_ } + , height{ height_ } + , layers{ layers_ } + { + } + + VULKAN_HPP_CONSTEXPR FramebufferCreateInfo( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : FramebufferCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferCreateInfo( FramebufferCreateFlags flags_, + RenderPass renderPass_, + ArrayProxyNoTemporaries const & attachments_, + uint32_t width_ = {}, + uint32_t height_ = {}, + uint32_t layers_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , renderPass( renderPass_ ) + , attachmentCount( static_cast( attachments_.size() ) ) + , pAttachments( attachments_.data() ) + , width( width_ ) + , height( height_ ) + , layers( layers_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + FramebufferCreateInfo & operator=( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FramebufferCreateInfo & operator=( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setFlags( FramebufferCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo && setFlags( FramebufferCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setRenderPass( RenderPass renderPass_ ) & VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo && setRenderPass( RenderPass renderPass_ ) && VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo && setAttachmentCount( uint32_t attachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setPAttachments( ImageView const * pAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo && setPAttachments( ImageView const * pAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + FramebufferCreateInfo & setAttachments( ArrayProxyNoTemporaries const & attachments_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( attachments_.size() ); + pAttachments = attachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setWidth( uint32_t width_ ) & VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo && setWidth( uint32_t width_ ) && VULKAN_HPP_NOEXCEPT + { + width = width_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setHeight( uint32_t height_ ) & VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo && setHeight( uint32_t height_ ) && VULKAN_HPP_NOEXCEPT + { + height = height_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & setLayers( uint32_t layers_ ) & VULKAN_HPP_NOEXCEPT + { + layers = layers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo && setLayers( uint32_t layers_ ) && VULKAN_HPP_NOEXCEPT + { + layers = layers_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkFramebufferCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFramebufferCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFramebufferCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFramebufferCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, renderPass, attachmentCount, pAttachments, width, height, layers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FramebufferCreateInfo const & ) const = default; +#else + bool operator==( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( renderPass == rhs.renderPass ) && + ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments ) && ( width == rhs.width ) && ( height == rhs.height ) && + ( layers == rhs.layers ); +# endif + } + + bool operator!=( FramebufferCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFramebufferCreateInfo; + void const * pNext = {}; + FramebufferCreateFlags flags = {}; + RenderPass renderPass = {}; + uint32_t attachmentCount = {}; + ImageView const * pAttachments = {}; + uint32_t width = {}; + uint32_t height = {}; + uint32_t layers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FramebufferCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = FramebufferCreateInfo; + }; + + // wrapper struct for struct VkFramebufferMixedSamplesCombinationNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkFramebufferMixedSamplesCombinationNV.html + struct FramebufferMixedSamplesCombinationNV + { + using NativeType = VkFramebufferMixedSamplesCombinationNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferMixedSamplesCombinationNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV( CoverageReductionModeNV coverageReductionMode_ = CoverageReductionModeNV::eMerge, + SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, + SampleCountFlags depthStencilSamples_ = {}, + SampleCountFlags colorSamples_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , coverageReductionMode{ coverageReductionMode_ } + , rasterizationSamples{ rasterizationSamples_ } + , depthStencilSamples{ depthStencilSamples_ } + , colorSamples{ colorSamples_ } + { + } + + VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + FramebufferMixedSamplesCombinationNV( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT + : FramebufferMixedSamplesCombinationNV( *reinterpret_cast( &rhs ) ) + { + } + + FramebufferMixedSamplesCombinationNV & operator=( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + FramebufferMixedSamplesCombinationNV & operator=( VkFramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkFramebufferMixedSamplesCombinationNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFramebufferMixedSamplesCombinationNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkFramebufferMixedSamplesCombinationNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkFramebufferMixedSamplesCombinationNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, coverageReductionMode, rasterizationSamples, depthStencilSamples, colorSamples ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( FramebufferMixedSamplesCombinationNV const & ) const = default; +#else + bool operator==( FramebufferMixedSamplesCombinationNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( coverageReductionMode == rhs.coverageReductionMode ) && + ( rasterizationSamples == rhs.rasterizationSamples ) && ( depthStencilSamples == rhs.depthStencilSamples ) && ( colorSamples == rhs.colorSamples ); +# endif + } + + bool operator!=( FramebufferMixedSamplesCombinationNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eFramebufferMixedSamplesCombinationNV; + void * pNext = {}; + CoverageReductionModeNV coverageReductionMode = CoverageReductionModeNV::eMerge; + SampleCountFlagBits rasterizationSamples = SampleCountFlagBits::e1; + SampleCountFlags depthStencilSamples = {}; + SampleCountFlags colorSamples = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = FramebufferMixedSamplesCombinationNV; + }; +#endif + + template <> + struct CppType + { + using Type = FramebufferMixedSamplesCombinationNV; + }; + + // wrapper struct for struct VkGeneratedCommandsInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoEXT.html + struct GeneratedCommandsInfoEXT + { + using NativeType = VkGeneratedCommandsInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoEXT( ShaderStageFlags shaderStages_ = {}, + IndirectExecutionSetEXT indirectExecutionSet_ = {}, + IndirectCommandsLayoutEXT indirectCommandsLayout_ = {}, + DeviceAddress indirectAddress_ = {}, + DeviceSize indirectAddressSize_ = {}, + DeviceAddress preprocessAddress_ = {}, + DeviceSize preprocessSize_ = {}, + uint32_t maxSequenceCount_ = {}, + DeviceAddress sequenceCountAddress_ = {}, + uint32_t maxDrawCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderStages{ shaderStages_ } + , indirectExecutionSet{ indirectExecutionSet_ } + , indirectCommandsLayout{ indirectCommandsLayout_ } + , indirectAddress{ indirectAddress_ } + , indirectAddressSize{ indirectAddressSize_ } + , preprocessAddress{ preprocessAddress_ } + , preprocessSize{ preprocessSize_ } + , maxSequenceCount{ maxSequenceCount_ } + , sequenceCountAddress{ sequenceCountAddress_ } + , maxDrawCount{ maxDrawCount_ } + { + } + + VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoEXT( GeneratedCommandsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsInfoEXT( VkGeneratedCommandsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + GeneratedCommandsInfoEXT & operator=( GeneratedCommandsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GeneratedCommandsInfoEXT & operator=( VkGeneratedCommandsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setShaderStages( ShaderStageFlags shaderStages_ ) & VULKAN_HPP_NOEXCEPT + { + shaderStages = shaderStages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setShaderStages( ShaderStageFlags shaderStages_ ) && VULKAN_HPP_NOEXCEPT + { + shaderStages = shaderStages_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setIndirectExecutionSet( IndirectExecutionSetEXT indirectExecutionSet_ ) & VULKAN_HPP_NOEXCEPT + { + indirectExecutionSet = indirectExecutionSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setIndirectExecutionSet( IndirectExecutionSetEXT indirectExecutionSet_ ) && VULKAN_HPP_NOEXCEPT + { + indirectExecutionSet = indirectExecutionSet_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setIndirectCommandsLayout( IndirectCommandsLayoutEXT indirectCommandsLayout_ ) & VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setIndirectCommandsLayout( IndirectCommandsLayoutEXT indirectCommandsLayout_ ) && VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setIndirectAddress( DeviceAddress indirectAddress_ ) & VULKAN_HPP_NOEXCEPT + { + indirectAddress = indirectAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setIndirectAddress( DeviceAddress indirectAddress_ ) && VULKAN_HPP_NOEXCEPT + { + indirectAddress = indirectAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setIndirectAddressSize( DeviceSize indirectAddressSize_ ) & VULKAN_HPP_NOEXCEPT + { + indirectAddressSize = indirectAddressSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setIndirectAddressSize( DeviceSize indirectAddressSize_ ) && VULKAN_HPP_NOEXCEPT + { + indirectAddressSize = indirectAddressSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setPreprocessAddress( DeviceAddress preprocessAddress_ ) & VULKAN_HPP_NOEXCEPT + { + preprocessAddress = preprocessAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setPreprocessAddress( DeviceAddress preprocessAddress_ ) && VULKAN_HPP_NOEXCEPT + { + preprocessAddress = preprocessAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setPreprocessSize( DeviceSize preprocessSize_ ) & VULKAN_HPP_NOEXCEPT + { + preprocessSize = preprocessSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setPreprocessSize( DeviceSize preprocessSize_ ) && VULKAN_HPP_NOEXCEPT + { + preprocessSize = preprocessSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setMaxSequenceCount( uint32_t maxSequenceCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxSequenceCount = maxSequenceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setMaxSequenceCount( uint32_t maxSequenceCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxSequenceCount = maxSequenceCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setSequenceCountAddress( DeviceAddress sequenceCountAddress_ ) & VULKAN_HPP_NOEXCEPT + { + sequenceCountAddress = sequenceCountAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setSequenceCountAddress( DeviceAddress sequenceCountAddress_ ) && VULKAN_HPP_NOEXCEPT + { + sequenceCountAddress = sequenceCountAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT & setMaxDrawCount( uint32_t maxDrawCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxDrawCount = maxDrawCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoEXT && setMaxDrawCount( uint32_t maxDrawCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxDrawCount = maxDrawCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGeneratedCommandsInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGeneratedCommandsInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderStages, + indirectExecutionSet, + indirectCommandsLayout, + indirectAddress, + indirectAddressSize, + preprocessAddress, + preprocessSize, + maxSequenceCount, + sequenceCountAddress, + maxDrawCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsInfoEXT const & ) const = default; +#else + bool operator==( GeneratedCommandsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderStages == rhs.shaderStages ) && ( indirectExecutionSet == rhs.indirectExecutionSet ) && + ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && ( indirectAddress == rhs.indirectAddress ) && + ( indirectAddressSize == rhs.indirectAddressSize ) && ( preprocessAddress == rhs.preprocessAddress ) && ( preprocessSize == rhs.preprocessSize ) && + ( maxSequenceCount == rhs.maxSequenceCount ) && ( sequenceCountAddress == rhs.sequenceCountAddress ) && ( maxDrawCount == rhs.maxDrawCount ); +# endif + } + + bool operator!=( GeneratedCommandsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGeneratedCommandsInfoEXT; + void const * pNext = {}; + ShaderStageFlags shaderStages = {}; + IndirectExecutionSetEXT indirectExecutionSet = {}; + IndirectCommandsLayoutEXT indirectCommandsLayout = {}; + DeviceAddress indirectAddress = {}; + DeviceSize indirectAddressSize = {}; + DeviceAddress preprocessAddress = {}; + DeviceSize preprocessSize = {}; + uint32_t maxSequenceCount = {}; + DeviceAddress sequenceCountAddress = {}; + uint32_t maxDrawCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GeneratedCommandsInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = GeneratedCommandsInfoEXT; + }; + + // wrapper struct for struct VkIndirectCommandsStreamNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsStreamNV.html + struct IndirectCommandsStreamNV + { + using NativeType = VkIndirectCommandsStreamNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( Buffer buffer_ = {}, DeviceSize offset_ = {} ) VULKAN_HPP_NOEXCEPT + : buffer{ buffer_ } + , offset{ offset_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsStreamNV( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsStreamNV( *reinterpret_cast( &rhs ) ) + { + } + + IndirectCommandsStreamNV & operator=( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectCommandsStreamNV & operator=( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsStreamNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsStreamNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsStreamNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectCommandsStreamNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( buffer, offset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsStreamNV const & ) const = default; +#else + bool operator==( IndirectCommandsStreamNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( buffer == rhs.buffer ) && ( offset == rhs.offset ); +# endif + } + + bool operator!=( IndirectCommandsStreamNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Buffer buffer = {}; + DeviceSize offset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsStreamNV; + }; +#endif + + // wrapper struct for struct VkGeneratedCommandsInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeneratedCommandsInfoNV.html + struct GeneratedCommandsInfoNV + { + using NativeType = VkGeneratedCommandsInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoNV( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, + Pipeline pipeline_ = {}, + IndirectCommandsLayoutNV indirectCommandsLayout_ = {}, + uint32_t streamCount_ = {}, + IndirectCommandsStreamNV const * pStreams_ = {}, + uint32_t sequencesCount_ = {}, + Buffer preprocessBuffer_ = {}, + DeviceSize preprocessOffset_ = {}, + DeviceSize preprocessSize_ = {}, + Buffer sequencesCountBuffer_ = {}, + DeviceSize sequencesCountOffset_ = {}, + Buffer sequencesIndexBuffer_ = {}, + DeviceSize sequencesIndexOffset_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineBindPoint{ pipelineBindPoint_ } + , pipeline{ pipeline_ } + , indirectCommandsLayout{ indirectCommandsLayout_ } + , streamCount{ streamCount_ } + , pStreams{ pStreams_ } + , sequencesCount{ sequencesCount_ } + , preprocessBuffer{ preprocessBuffer_ } + , preprocessOffset{ preprocessOffset_ } + , preprocessSize{ preprocessSize_ } + , sequencesCountBuffer{ sequencesCountBuffer_ } + , sequencesCountOffset{ sequencesCountOffset_ } + , sequencesIndexBuffer{ sequencesIndexBuffer_ } + , sequencesIndexOffset{ sequencesIndexOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoNV( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsInfoNV( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GeneratedCommandsInfoNV( PipelineBindPoint pipelineBindPoint_, + Pipeline pipeline_, + IndirectCommandsLayoutNV indirectCommandsLayout_, + ArrayProxyNoTemporaries const & streams_, + uint32_t sequencesCount_ = {}, + Buffer preprocessBuffer_ = {}, + DeviceSize preprocessOffset_ = {}, + DeviceSize preprocessSize_ = {}, + Buffer sequencesCountBuffer_ = {}, + DeviceSize sequencesCountOffset_ = {}, + Buffer sequencesIndexBuffer_ = {}, + DeviceSize sequencesIndexOffset_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , pipeline( pipeline_ ) + , indirectCommandsLayout( indirectCommandsLayout_ ) + , streamCount( static_cast( streams_.size() ) ) + , pStreams( streams_.data() ) + , sequencesCount( sequencesCount_ ) + , preprocessBuffer( preprocessBuffer_ ) + , preprocessOffset( preprocessOffset_ ) + , preprocessSize( preprocessSize_ ) + , sequencesCountBuffer( sequencesCountBuffer_ ) + , sequencesCountOffset( sequencesCountOffset_ ) + , sequencesIndexBuffer( sequencesIndexBuffer_ ) + , sequencesIndexOffset( sequencesIndexOffset_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + GeneratedCommandsInfoNV & operator=( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GeneratedCommandsInfoNV & operator=( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPipeline( Pipeline pipeline_ ) & VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setPipeline( Pipeline pipeline_ ) && VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setIndirectCommandsLayout( IndirectCommandsLayoutNV indirectCommandsLayout_ ) & VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setIndirectCommandsLayout( IndirectCommandsLayoutNV indirectCommandsLayout_ ) && VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setStreamCount( uint32_t streamCount_ ) & VULKAN_HPP_NOEXCEPT + { + streamCount = streamCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setStreamCount( uint32_t streamCount_ ) && VULKAN_HPP_NOEXCEPT + { + streamCount = streamCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPStreams( IndirectCommandsStreamNV const * pStreams_ ) & VULKAN_HPP_NOEXCEPT + { + pStreams = pStreams_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setPStreams( IndirectCommandsStreamNV const * pStreams_ ) && VULKAN_HPP_NOEXCEPT + { + pStreams = pStreams_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GeneratedCommandsInfoNV & setStreams( ArrayProxyNoTemporaries const & streams_ ) VULKAN_HPP_NOEXCEPT + { + streamCount = static_cast( streams_.size() ); + pStreams = streams_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCount( uint32_t sequencesCount_ ) & VULKAN_HPP_NOEXCEPT + { + sequencesCount = sequencesCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setSequencesCount( uint32_t sequencesCount_ ) && VULKAN_HPP_NOEXCEPT + { + sequencesCount = sequencesCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPreprocessBuffer( Buffer preprocessBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + preprocessBuffer = preprocessBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setPreprocessBuffer( Buffer preprocessBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + preprocessBuffer = preprocessBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPreprocessOffset( DeviceSize preprocessOffset_ ) & VULKAN_HPP_NOEXCEPT + { + preprocessOffset = preprocessOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setPreprocessOffset( DeviceSize preprocessOffset_ ) && VULKAN_HPP_NOEXCEPT + { + preprocessOffset = preprocessOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setPreprocessSize( DeviceSize preprocessSize_ ) & VULKAN_HPP_NOEXCEPT + { + preprocessSize = preprocessSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setPreprocessSize( DeviceSize preprocessSize_ ) && VULKAN_HPP_NOEXCEPT + { + preprocessSize = preprocessSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCountBuffer( Buffer sequencesCountBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + sequencesCountBuffer = sequencesCountBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setSequencesCountBuffer( Buffer sequencesCountBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + sequencesCountBuffer = sequencesCountBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesCountOffset( DeviceSize sequencesCountOffset_ ) & VULKAN_HPP_NOEXCEPT + { + sequencesCountOffset = sequencesCountOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setSequencesCountOffset( DeviceSize sequencesCountOffset_ ) && VULKAN_HPP_NOEXCEPT + { + sequencesCountOffset = sequencesCountOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + sequencesIndexBuffer = sequencesIndexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + sequencesIndexBuffer = sequencesIndexBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ ) & VULKAN_HPP_NOEXCEPT + { + sequencesIndexOffset = sequencesIndexOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV && setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ ) && VULKAN_HPP_NOEXCEPT + { + sequencesIndexOffset = sequencesIndexOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGeneratedCommandsInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGeneratedCommandsInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + pipelineBindPoint, + pipeline, + indirectCommandsLayout, + streamCount, + pStreams, + sequencesCount, + preprocessBuffer, + preprocessOffset, + preprocessSize, + sequencesCountBuffer, + sequencesCountOffset, + sequencesIndexBuffer, + sequencesIndexOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsInfoNV const & ) const = default; +#else + bool operator==( GeneratedCommandsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipeline == rhs.pipeline ) && + ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && ( streamCount == rhs.streamCount ) && ( pStreams == rhs.pStreams ) && + ( sequencesCount == rhs.sequencesCount ) && ( preprocessBuffer == rhs.preprocessBuffer ) && ( preprocessOffset == rhs.preprocessOffset ) && + ( preprocessSize == rhs.preprocessSize ) && ( sequencesCountBuffer == rhs.sequencesCountBuffer ) && + ( sequencesCountOffset == rhs.sequencesCountOffset ) && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer ) && + ( sequencesIndexOffset == rhs.sequencesIndexOffset ); +# endif + } + + bool operator!=( GeneratedCommandsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGeneratedCommandsInfoNV; + void const * pNext = {}; + PipelineBindPoint pipelineBindPoint = PipelineBindPoint::eGraphics; + Pipeline pipeline = {}; + IndirectCommandsLayoutNV indirectCommandsLayout = {}; + uint32_t streamCount = {}; + IndirectCommandsStreamNV const * pStreams = {}; + uint32_t sequencesCount = {}; + Buffer preprocessBuffer = {}; + DeviceSize preprocessOffset = {}; + DeviceSize preprocessSize = {}; + Buffer sequencesCountBuffer = {}; + DeviceSize sequencesCountOffset = {}; + Buffer sequencesIndexBuffer = {}; + DeviceSize sequencesIndexOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GeneratedCommandsInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = GeneratedCommandsInfoNV; + }; + + // wrapper struct for struct VkGeneratedCommandsMemoryRequirementsInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoEXT.html + struct GeneratedCommandsMemoryRequirementsInfoEXT + { + using NativeType = VkGeneratedCommandsMemoryRequirementsInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsMemoryRequirementsInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoEXT( IndirectExecutionSetEXT indirectExecutionSet_ = {}, + IndirectCommandsLayoutEXT indirectCommandsLayout_ = {}, + uint32_t maxSequenceCount_ = {}, + uint32_t maxDrawCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , indirectExecutionSet{ indirectExecutionSet_ } + , indirectCommandsLayout{ indirectCommandsLayout_ } + , maxSequenceCount{ maxSequenceCount_ } + , maxDrawCount{ maxDrawCount_ } + { + } + + VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoEXT( GeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsMemoryRequirementsInfoEXT( VkGeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsMemoryRequirementsInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + GeneratedCommandsMemoryRequirementsInfoEXT & operator=( GeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GeneratedCommandsMemoryRequirementsInfoEXT & operator=( VkGeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT & setIndirectExecutionSet( IndirectExecutionSetEXT indirectExecutionSet_ ) & + VULKAN_HPP_NOEXCEPT + { + indirectExecutionSet = indirectExecutionSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT && setIndirectExecutionSet( IndirectExecutionSetEXT indirectExecutionSet_ ) && + VULKAN_HPP_NOEXCEPT + { + indirectExecutionSet = indirectExecutionSet_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT & setIndirectCommandsLayout( IndirectCommandsLayoutEXT indirectCommandsLayout_ ) & + VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT && setIndirectCommandsLayout( IndirectCommandsLayoutEXT indirectCommandsLayout_ ) && + VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT & setMaxSequenceCount( uint32_t maxSequenceCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxSequenceCount = maxSequenceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT && setMaxSequenceCount( uint32_t maxSequenceCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxSequenceCount = maxSequenceCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT & setMaxDrawCount( uint32_t maxDrawCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxDrawCount = maxDrawCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoEXT && setMaxDrawCount( uint32_t maxDrawCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxDrawCount = maxDrawCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGeneratedCommandsMemoryRequirementsInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsMemoryRequirementsInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsMemoryRequirementsInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGeneratedCommandsMemoryRequirementsInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, indirectExecutionSet, indirectCommandsLayout, maxSequenceCount, maxDrawCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsMemoryRequirementsInfoEXT const & ) const = default; +#else + bool operator==( GeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( indirectExecutionSet == rhs.indirectExecutionSet ) && + ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && ( maxSequenceCount == rhs.maxSequenceCount ) && ( maxDrawCount == rhs.maxDrawCount ); +# endif + } + + bool operator!=( GeneratedCommandsMemoryRequirementsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGeneratedCommandsMemoryRequirementsInfoEXT; + void const * pNext = {}; + IndirectExecutionSetEXT indirectExecutionSet = {}; + IndirectCommandsLayoutEXT indirectCommandsLayout = {}; + uint32_t maxSequenceCount = {}; + uint32_t maxDrawCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GeneratedCommandsMemoryRequirementsInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = GeneratedCommandsMemoryRequirementsInfoEXT; + }; + + // wrapper struct for struct VkGeneratedCommandsMemoryRequirementsInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeneratedCommandsMemoryRequirementsInfoNV.html + struct GeneratedCommandsMemoryRequirementsInfoNV + { + using NativeType = VkGeneratedCommandsMemoryRequirementsInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, + Pipeline pipeline_ = {}, + IndirectCommandsLayoutNV indirectCommandsLayout_ = {}, + uint32_t maxSequencesCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineBindPoint{ pipelineBindPoint_ } + , pipeline{ pipeline_ } + , indirectCommandsLayout{ indirectCommandsLayout_ } + , maxSequencesCount{ maxSequencesCount_ } + { + } + + VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsMemoryRequirementsInfoNV( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsMemoryRequirementsInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + GeneratedCommandsMemoryRequirementsInfoNV & operator=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GeneratedCommandsMemoryRequirementsInfoNV & operator=( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV && setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setPipeline( Pipeline pipeline_ ) & VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV && setPipeline( Pipeline pipeline_ ) && VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setIndirectCommandsLayout( IndirectCommandsLayoutNV indirectCommandsLayout_ ) & + VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV && setIndirectCommandsLayout( IndirectCommandsLayoutNV indirectCommandsLayout_ ) && + VULKAN_HPP_NOEXCEPT + { + indirectCommandsLayout = indirectCommandsLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & setMaxSequencesCount( uint32_t maxSequencesCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxSequencesCount = maxSequencesCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV && setMaxSequencesCount( uint32_t maxSequencesCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxSequencesCount = maxSequencesCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGeneratedCommandsMemoryRequirementsInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsMemoryRequirementsInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsMemoryRequirementsInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGeneratedCommandsMemoryRequirementsInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineBindPoint, pipeline, indirectCommandsLayout, maxSequencesCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsMemoryRequirementsInfoNV const & ) const = default; +#else + bool operator==( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipeline == rhs.pipeline ) && + ( indirectCommandsLayout == rhs.indirectCommandsLayout ) && ( maxSequencesCount == rhs.maxSequencesCount ); +# endif + } + + bool operator!=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV; + void const * pNext = {}; + PipelineBindPoint pipelineBindPoint = PipelineBindPoint::eGraphics; + Pipeline pipeline = {}; + IndirectCommandsLayoutNV indirectCommandsLayout = {}; + uint32_t maxSequencesCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GeneratedCommandsMemoryRequirementsInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = GeneratedCommandsMemoryRequirementsInfoNV; + }; + + // wrapper struct for struct VkGeneratedCommandsPipelineInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeneratedCommandsPipelineInfoEXT.html + struct GeneratedCommandsPipelineInfoEXT + { + using NativeType = VkGeneratedCommandsPipelineInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsPipelineInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GeneratedCommandsPipelineInfoEXT( Pipeline pipeline_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipeline{ pipeline_ } + { + } + + VULKAN_HPP_CONSTEXPR GeneratedCommandsPipelineInfoEXT( GeneratedCommandsPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsPipelineInfoEXT( VkGeneratedCommandsPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsPipelineInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + GeneratedCommandsPipelineInfoEXT & operator=( GeneratedCommandsPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GeneratedCommandsPipelineInfoEXT & operator=( VkGeneratedCommandsPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsPipelineInfoEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsPipelineInfoEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsPipelineInfoEXT & setPipeline( Pipeline pipeline_ ) & VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsPipelineInfoEXT && setPipeline( Pipeline pipeline_ ) && VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGeneratedCommandsPipelineInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsPipelineInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsPipelineInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGeneratedCommandsPipelineInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipeline ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsPipelineInfoEXT const & ) const = default; +#else + bool operator==( GeneratedCommandsPipelineInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline ); +# endif + } + + bool operator!=( GeneratedCommandsPipelineInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGeneratedCommandsPipelineInfoEXT; + void * pNext = {}; + Pipeline pipeline = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GeneratedCommandsPipelineInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = GeneratedCommandsPipelineInfoEXT; + }; + + // wrapper struct for struct VkGeneratedCommandsShaderInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkGeneratedCommandsShaderInfoEXT.html + struct GeneratedCommandsShaderInfoEXT + { + using NativeType = VkGeneratedCommandsShaderInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsShaderInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + GeneratedCommandsShaderInfoEXT( uint32_t shaderCount_ = {}, ShaderEXT const * pShaders_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderCount{ shaderCount_ } + , pShaders{ pShaders_ } + { + } + + VULKAN_HPP_CONSTEXPR GeneratedCommandsShaderInfoEXT( GeneratedCommandsShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GeneratedCommandsShaderInfoEXT( VkGeneratedCommandsShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : GeneratedCommandsShaderInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GeneratedCommandsShaderInfoEXT( ArrayProxyNoTemporaries const & shaders_, void * pNext_ = nullptr ) + : pNext( pNext_ ), shaderCount( static_cast( shaders_.size() ) ), pShaders( shaders_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + GeneratedCommandsShaderInfoEXT & operator=( GeneratedCommandsShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GeneratedCommandsShaderInfoEXT & operator=( VkGeneratedCommandsShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsShaderInfoEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsShaderInfoEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsShaderInfoEXT & setShaderCount( uint32_t shaderCount_ ) & VULKAN_HPP_NOEXCEPT + { + shaderCount = shaderCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsShaderInfoEXT && setShaderCount( uint32_t shaderCount_ ) && VULKAN_HPP_NOEXCEPT + { + shaderCount = shaderCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsShaderInfoEXT & setPShaders( ShaderEXT const * pShaders_ ) & VULKAN_HPP_NOEXCEPT + { + pShaders = pShaders_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsShaderInfoEXT && setPShaders( ShaderEXT const * pShaders_ ) && VULKAN_HPP_NOEXCEPT + { + pShaders = pShaders_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GeneratedCommandsShaderInfoEXT & setShaders( ArrayProxyNoTemporaries const & shaders_ ) VULKAN_HPP_NOEXCEPT + { + shaderCount = static_cast( shaders_.size() ); + pShaders = shaders_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGeneratedCommandsShaderInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsShaderInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGeneratedCommandsShaderInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGeneratedCommandsShaderInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderCount, pShaders ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GeneratedCommandsShaderInfoEXT const & ) const = default; +#else + bool operator==( GeneratedCommandsShaderInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCount == rhs.shaderCount ) && ( pShaders == rhs.pShaders ); +# endif + } + + bool operator!=( GeneratedCommandsShaderInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGeneratedCommandsShaderInfoEXT; + void * pNext = {}; + uint32_t shaderCount = {}; + ShaderEXT const * pShaders = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GeneratedCommandsShaderInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = GeneratedCommandsShaderInfoEXT; + }; + + // wrapper struct for struct VkLatencyTimingsFrameReportNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLatencyTimingsFrameReportNV.html + struct LatencyTimingsFrameReportNV + { + using NativeType = VkLatencyTimingsFrameReportNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eLatencyTimingsFrameReportNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR LatencyTimingsFrameReportNV( uint64_t presentID_ = {}, + uint64_t inputSampleTimeUs_ = {}, + uint64_t simStartTimeUs_ = {}, + uint64_t simEndTimeUs_ = {}, + uint64_t renderSubmitStartTimeUs_ = {}, + uint64_t renderSubmitEndTimeUs_ = {}, + uint64_t presentStartTimeUs_ = {}, + uint64_t presentEndTimeUs_ = {}, + uint64_t driverStartTimeUs_ = {}, + uint64_t driverEndTimeUs_ = {}, + uint64_t osRenderQueueStartTimeUs_ = {}, + uint64_t osRenderQueueEndTimeUs_ = {}, + uint64_t gpuRenderStartTimeUs_ = {}, + uint64_t gpuRenderEndTimeUs_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentID{ presentID_ } + , inputSampleTimeUs{ inputSampleTimeUs_ } + , simStartTimeUs{ simStartTimeUs_ } + , simEndTimeUs{ simEndTimeUs_ } + , renderSubmitStartTimeUs{ renderSubmitStartTimeUs_ } + , renderSubmitEndTimeUs{ renderSubmitEndTimeUs_ } + , presentStartTimeUs{ presentStartTimeUs_ } + , presentEndTimeUs{ presentEndTimeUs_ } + , driverStartTimeUs{ driverStartTimeUs_ } + , driverEndTimeUs{ driverEndTimeUs_ } + , osRenderQueueStartTimeUs{ osRenderQueueStartTimeUs_ } + , osRenderQueueEndTimeUs{ osRenderQueueEndTimeUs_ } + , gpuRenderStartTimeUs{ gpuRenderStartTimeUs_ } + , gpuRenderEndTimeUs{ gpuRenderEndTimeUs_ } + { + } + + VULKAN_HPP_CONSTEXPR LatencyTimingsFrameReportNV( LatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + LatencyTimingsFrameReportNV( VkLatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT + : LatencyTimingsFrameReportNV( *reinterpret_cast( &rhs ) ) + { + } + + LatencyTimingsFrameReportNV & operator=( LatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + LatencyTimingsFrameReportNV & operator=( VkLatencyTimingsFrameReportNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkLatencyTimingsFrameReportNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLatencyTimingsFrameReportNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLatencyTimingsFrameReportNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkLatencyTimingsFrameReportNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + presentID, + inputSampleTimeUs, + simStartTimeUs, + simEndTimeUs, + renderSubmitStartTimeUs, + renderSubmitEndTimeUs, + presentStartTimeUs, + presentEndTimeUs, + driverStartTimeUs, + driverEndTimeUs, + osRenderQueueStartTimeUs, + osRenderQueueEndTimeUs, + gpuRenderStartTimeUs, + gpuRenderEndTimeUs ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( LatencyTimingsFrameReportNV const & ) const = default; +#else + bool operator==( LatencyTimingsFrameReportNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentID == rhs.presentID ) && ( inputSampleTimeUs == rhs.inputSampleTimeUs ) && + ( simStartTimeUs == rhs.simStartTimeUs ) && ( simEndTimeUs == rhs.simEndTimeUs ) && ( renderSubmitStartTimeUs == rhs.renderSubmitStartTimeUs ) && + ( renderSubmitEndTimeUs == rhs.renderSubmitEndTimeUs ) && ( presentStartTimeUs == rhs.presentStartTimeUs ) && + ( presentEndTimeUs == rhs.presentEndTimeUs ) && ( driverStartTimeUs == rhs.driverStartTimeUs ) && ( driverEndTimeUs == rhs.driverEndTimeUs ) && + ( osRenderQueueStartTimeUs == rhs.osRenderQueueStartTimeUs ) && ( osRenderQueueEndTimeUs == rhs.osRenderQueueEndTimeUs ) && + ( gpuRenderStartTimeUs == rhs.gpuRenderStartTimeUs ) && ( gpuRenderEndTimeUs == rhs.gpuRenderEndTimeUs ); +# endif + } + + bool operator!=( LatencyTimingsFrameReportNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eLatencyTimingsFrameReportNV; + void * pNext = {}; + uint64_t presentID = {}; + uint64_t inputSampleTimeUs = {}; + uint64_t simStartTimeUs = {}; + uint64_t simEndTimeUs = {}; + uint64_t renderSubmitStartTimeUs = {}; + uint64_t renderSubmitEndTimeUs = {}; + uint64_t presentStartTimeUs = {}; + uint64_t presentEndTimeUs = {}; + uint64_t driverStartTimeUs = {}; + uint64_t driverEndTimeUs = {}; + uint64_t osRenderQueueStartTimeUs = {}; + uint64_t osRenderQueueEndTimeUs = {}; + uint64_t gpuRenderStartTimeUs = {}; + uint64_t gpuRenderEndTimeUs = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = LatencyTimingsFrameReportNV; + }; +#endif + + template <> + struct CppType + { + using Type = LatencyTimingsFrameReportNV; + }; + + // wrapper struct for struct VkGetLatencyMarkerInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGetLatencyMarkerInfoNV.html + struct GetLatencyMarkerInfoNV + { + using NativeType = VkGetLatencyMarkerInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGetLatencyMarkerInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + GetLatencyMarkerInfoNV( uint32_t timingCount_ = {}, LatencyTimingsFrameReportNV * pTimings_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , timingCount{ timingCount_ } + , pTimings{ pTimings_ } + { + } + + VULKAN_HPP_CONSTEXPR GetLatencyMarkerInfoNV( GetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GetLatencyMarkerInfoNV( VkGetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GetLatencyMarkerInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GetLatencyMarkerInfoNV( ArrayProxyNoTemporaries const & timings_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), timingCount( static_cast( timings_.size() ) ), pTimings( timings_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + GetLatencyMarkerInfoNV & operator=( GetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GetLatencyMarkerInfoNV & operator=( VkGetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV & setTimingCount( uint32_t timingCount_ ) & VULKAN_HPP_NOEXCEPT + { + timingCount = timingCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV && setTimingCount( uint32_t timingCount_ ) && VULKAN_HPP_NOEXCEPT + { + timingCount = timingCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV & setPTimings( LatencyTimingsFrameReportNV * pTimings_ ) & VULKAN_HPP_NOEXCEPT + { + pTimings = pTimings_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GetLatencyMarkerInfoNV && setPTimings( LatencyTimingsFrameReportNV * pTimings_ ) && VULKAN_HPP_NOEXCEPT + { + pTimings = pTimings_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GetLatencyMarkerInfoNV & setTimings( ArrayProxyNoTemporaries const & timings_ ) VULKAN_HPP_NOEXCEPT + { + timingCount = static_cast( timings_.size() ); + pTimings = timings_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGetLatencyMarkerInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGetLatencyMarkerInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGetLatencyMarkerInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGetLatencyMarkerInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, timingCount, pTimings ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GetLatencyMarkerInfoNV const & ) const = default; +#else + bool operator==( GetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timingCount == rhs.timingCount ) && ( pTimings == rhs.pTimings ); +# endif + } + + bool operator!=( GetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGetLatencyMarkerInfoNV; + void const * pNext = {}; + uint32_t timingCount = {}; + LatencyTimingsFrameReportNV * pTimings = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GetLatencyMarkerInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = GetLatencyMarkerInfoNV; + }; + + // wrapper struct for struct VkVertexInputBindingDescription, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVertexInputBindingDescription.html + struct VertexInputBindingDescription + { + using NativeType = VkVertexInputBindingDescription; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VertexInputBindingDescription( uint32_t binding_ = {}, uint32_t stride_ = {}, VertexInputRate inputRate_ = VertexInputRate::eVertex ) VULKAN_HPP_NOEXCEPT + : binding{ binding_ } + , stride{ stride_ } + , inputRate{ inputRate_ } + { + } + + VULKAN_HPP_CONSTEXPR VertexInputBindingDescription( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT + : VertexInputBindingDescription( *reinterpret_cast( &rhs ) ) + { + } + + VertexInputBindingDescription & operator=( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VertexInputBindingDescription & operator=( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setBinding( uint32_t binding_ ) & VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription && setBinding( uint32_t binding_ ) && VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setStride( uint32_t stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription && setStride( uint32_t stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & setInputRate( VertexInputRate inputRate_ ) & VULKAN_HPP_NOEXCEPT + { + inputRate = inputRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription && setInputRate( VertexInputRate inputRate_ ) && VULKAN_HPP_NOEXCEPT + { + inputRate = inputRate_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVertexInputBindingDescription const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVertexInputBindingDescription &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVertexInputBindingDescription const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVertexInputBindingDescription *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( binding, stride, inputRate ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VertexInputBindingDescription const & ) const = default; +#else + bool operator==( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( binding == rhs.binding ) && ( stride == rhs.stride ) && ( inputRate == rhs.inputRate ); +# endif + } + + bool operator!=( VertexInputBindingDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t binding = {}; + uint32_t stride = {}; + VertexInputRate inputRate = VertexInputRate::eVertex; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VertexInputBindingDescription; + }; +#endif + + // wrapper struct for struct VkVertexInputAttributeDescription, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription.html + struct VertexInputAttributeDescription + { + using NativeType = VkVertexInputAttributeDescription; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription( uint32_t location_ = {}, + uint32_t binding_ = {}, + Format format_ = Format::eUndefined, + uint32_t offset_ = {} ) VULKAN_HPP_NOEXCEPT + : location{ location_ } + , binding{ binding_ } + , format{ format_ } + , offset{ offset_ } + { + } + + VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT + : VertexInputAttributeDescription( *reinterpret_cast( &rhs ) ) + { + } + + VertexInputAttributeDescription & operator=( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VertexInputAttributeDescription & operator=( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setLocation( uint32_t location_ ) & VULKAN_HPP_NOEXCEPT + { + location = location_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription && setLocation( uint32_t location_ ) && VULKAN_HPP_NOEXCEPT + { + location = location_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setBinding( uint32_t binding_ ) & VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription && setBinding( uint32_t binding_ ) && VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & setOffset( uint32_t offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription && setOffset( uint32_t offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVertexInputAttributeDescription const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVertexInputAttributeDescription &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVertexInputAttributeDescription const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVertexInputAttributeDescription *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( location, binding, format, offset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VertexInputAttributeDescription const & ) const = default; +#else + bool operator==( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( location == rhs.location ) && ( binding == rhs.binding ) && ( format == rhs.format ) && ( offset == rhs.offset ); +# endif + } + + bool operator!=( VertexInputAttributeDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t location = {}; + uint32_t binding = {}; + Format format = Format::eUndefined; + uint32_t offset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VertexInputAttributeDescription; + }; +#endif + + // wrapper struct for struct VkPipelineVertexInputStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineVertexInputStateCreateInfo.html + struct PipelineVertexInputStateCreateInfo + { + using NativeType = VkPipelineVertexInputStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineVertexInputStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = {}, + uint32_t vertexBindingDescriptionCount_ = {}, + VertexInputBindingDescription const * pVertexBindingDescriptions_ = {}, + uint32_t vertexAttributeDescriptionCount_ = {}, + VertexInputAttributeDescription const * pVertexAttributeDescriptions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , vertexBindingDescriptionCount{ vertexBindingDescriptionCount_ } + , pVertexBindingDescriptions{ pVertexBindingDescriptions_ } + , vertexAttributeDescriptionCount{ vertexAttributeDescriptionCount_ } + , pVertexAttributeDescriptions{ pVertexAttributeDescriptions_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineVertexInputStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_, + ArrayProxyNoTemporaries const & vertexBindingDescriptions_, + ArrayProxyNoTemporaries const & vertexAttributeDescriptions_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , vertexBindingDescriptionCount( static_cast( vertexBindingDescriptions_.size() ) ) + , pVertexBindingDescriptions( vertexBindingDescriptions_.data() ) + , vertexAttributeDescriptionCount( static_cast( vertexAttributeDescriptions_.size() ) ) + , pVertexAttributeDescriptions( vertexAttributeDescriptions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineVertexInputStateCreateInfo & operator=( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineVertexInputStateCreateInfo & operator=( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setFlags( PipelineVertexInputStateCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo && setFlags( PipelineVertexInputStateCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexBindingDescriptionCount = vertexBindingDescriptionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo && setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexBindingDescriptionCount = vertexBindingDescriptionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & + setPVertexBindingDescriptions( VertexInputBindingDescription const * pVertexBindingDescriptions_ ) & + VULKAN_HPP_NOEXCEPT + { + pVertexBindingDescriptions = pVertexBindingDescriptions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo && + setPVertexBindingDescriptions( VertexInputBindingDescription const * pVertexBindingDescriptions_ ) && + VULKAN_HPP_NOEXCEPT + { + pVertexBindingDescriptions = pVertexBindingDescriptions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineVertexInputStateCreateInfo & + setVertexBindingDescriptions( ArrayProxyNoTemporaries const & vertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT + { + vertexBindingDescriptionCount = static_cast( vertexBindingDescriptions_.size() ); + pVertexBindingDescriptions = vertexBindingDescriptions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo && setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & + setPVertexAttributeDescriptions( VertexInputAttributeDescription const * pVertexAttributeDescriptions_ ) & + VULKAN_HPP_NOEXCEPT + { + pVertexAttributeDescriptions = pVertexAttributeDescriptions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo && + setPVertexAttributeDescriptions( VertexInputAttributeDescription const * pVertexAttributeDescriptions_ ) && + VULKAN_HPP_NOEXCEPT + { + pVertexAttributeDescriptions = pVertexAttributeDescriptions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineVertexInputStateCreateInfo & + setVertexAttributeDescriptions( ArrayProxyNoTemporaries const & vertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT + { + vertexAttributeDescriptionCount = static_cast( vertexAttributeDescriptions_.size() ); + pVertexAttributeDescriptions = vertexAttributeDescriptions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineVertexInputStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineVertexInputStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineVertexInputStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineVertexInputStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, flags, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineVertexInputStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount ) && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions ) && + ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount ) && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions ); +# endif + } + + bool operator!=( PipelineVertexInputStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo; + void const * pNext = {}; + PipelineVertexInputStateCreateFlags flags = {}; + uint32_t vertexBindingDescriptionCount = {}; + VertexInputBindingDescription const * pVertexBindingDescriptions = {}; + uint32_t vertexAttributeDescriptionCount = {}; + VertexInputAttributeDescription const * pVertexAttributeDescriptions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineVertexInputStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineVertexInputStateCreateInfo; + }; + + // wrapper struct for struct VkPipelineInputAssemblyStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineInputAssemblyStateCreateInfo.html + struct PipelineInputAssemblyStateCreateInfo + { + using NativeType = VkPipelineInputAssemblyStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineInputAssemblyStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = {}, + PrimitiveTopology topology_ = PrimitiveTopology::ePointList, + Bool32 primitiveRestartEnable_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , topology{ topology_ } + , primitiveRestartEnable{ primitiveRestartEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineInputAssemblyStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineInputAssemblyStateCreateInfo & operator=( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineInputAssemblyStateCreateInfo & operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setFlags( PipelineInputAssemblyStateCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo && setFlags( PipelineInputAssemblyStateCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setTopology( PrimitiveTopology topology_ ) & VULKAN_HPP_NOEXCEPT + { + topology = topology_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo && setTopology( PrimitiveTopology topology_ ) && VULKAN_HPP_NOEXCEPT + { + topology = topology_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ ) & VULKAN_HPP_NOEXCEPT + { + primitiveRestartEnable = primitiveRestartEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo && setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ ) && VULKAN_HPP_NOEXCEPT + { + primitiveRestartEnable = primitiveRestartEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineInputAssemblyStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineInputAssemblyStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineInputAssemblyStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineInputAssemblyStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, topology, primitiveRestartEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineInputAssemblyStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( topology == rhs.topology ) && + ( primitiveRestartEnable == rhs.primitiveRestartEnable ); +# endif + } + + bool operator!=( PipelineInputAssemblyStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo; + void const * pNext = {}; + PipelineInputAssemblyStateCreateFlags flags = {}; + PrimitiveTopology topology = PrimitiveTopology::ePointList; + Bool32 primitiveRestartEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineInputAssemblyStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineInputAssemblyStateCreateInfo; + }; + + // wrapper struct for struct VkPipelineTessellationStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineTessellationStateCreateInfo.html + struct PipelineTessellationStateCreateInfo + { + using NativeType = VkPipelineTessellationStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineTessellationStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = {}, + uint32_t patchControlPoints_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , patchControlPoints{ patchControlPoints_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineTessellationStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineTessellationStateCreateInfo & operator=( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineTessellationStateCreateInfo & operator=( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setFlags( PipelineTessellationStateCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo && setFlags( PipelineTessellationStateCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & setPatchControlPoints( uint32_t patchControlPoints_ ) & VULKAN_HPP_NOEXCEPT + { + patchControlPoints = patchControlPoints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo && setPatchControlPoints( uint32_t patchControlPoints_ ) && VULKAN_HPP_NOEXCEPT + { + patchControlPoints = patchControlPoints_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineTessellationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineTessellationStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineTessellationStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineTessellationStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, patchControlPoints ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineTessellationStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( patchControlPoints == rhs.patchControlPoints ); +# endif + } + + bool operator!=( PipelineTessellationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineTessellationStateCreateInfo; + void const * pNext = {}; + PipelineTessellationStateCreateFlags flags = {}; + uint32_t patchControlPoints = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineTessellationStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineTessellationStateCreateInfo; + }; + + // wrapper struct for struct VkPipelineViewportStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineViewportStateCreateInfo.html + struct PipelineViewportStateCreateInfo + { + using NativeType = VkPipelineViewportStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = {}, + uint32_t viewportCount_ = {}, + Viewport const * pViewports_ = {}, + uint32_t scissorCount_ = {}, + Rect2D const * pScissors_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , viewportCount{ viewportCount_ } + , pViewports{ pViewports_ } + , scissorCount{ scissorCount_ } + , pScissors{ pScissors_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineViewportStateCreateInfo( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_, + ArrayProxyNoTemporaries const & viewports_, + ArrayProxyNoTemporaries const & scissors_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , viewportCount( static_cast( viewports_.size() ) ) + , pViewports( viewports_.data() ) + , scissorCount( static_cast( scissors_.size() ) ) + , pScissors( scissors_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineViewportStateCreateInfo & operator=( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineViewportStateCreateInfo & operator=( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setFlags( PipelineViewportStateCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo && setFlags( PipelineViewportStateCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setViewportCount( uint32_t viewportCount_ ) & VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo && setViewportCount( uint32_t viewportCount_ ) && VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPViewports( Viewport const * pViewports_ ) & VULKAN_HPP_NOEXCEPT + { + pViewports = pViewports_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo && setPViewports( Viewport const * pViewports_ ) && VULKAN_HPP_NOEXCEPT + { + pViewports = pViewports_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportStateCreateInfo & setViewports( ArrayProxyNoTemporaries const & viewports_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = static_cast( viewports_.size() ); + pViewports = viewports_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setScissorCount( uint32_t scissorCount_ ) & VULKAN_HPP_NOEXCEPT + { + scissorCount = scissorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo && setScissorCount( uint32_t scissorCount_ ) && VULKAN_HPP_NOEXCEPT + { + scissorCount = scissorCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & setPScissors( Rect2D const * pScissors_ ) & VULKAN_HPP_NOEXCEPT + { + pScissors = pScissors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo && setPScissors( Rect2D const * pScissors_ ) && VULKAN_HPP_NOEXCEPT + { + pScissors = pScissors_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportStateCreateInfo & setScissors( ArrayProxyNoTemporaries const & scissors_ ) VULKAN_HPP_NOEXCEPT + { + scissorCount = static_cast( scissors_.size() ); + pScissors = scissors_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineViewportStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineViewportStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, viewportCount, pViewports, scissorCount, pScissors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( viewportCount == rhs.viewportCount ) && + ( pViewports == rhs.pViewports ) && ( scissorCount == rhs.scissorCount ) && ( pScissors == rhs.pScissors ); +# endif + } + + bool operator!=( PipelineViewportStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineViewportStateCreateInfo; + void const * pNext = {}; + PipelineViewportStateCreateFlags flags = {}; + uint32_t viewportCount = {}; + Viewport const * pViewports = {}; + uint32_t scissorCount = {}; + Rect2D const * pScissors = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineViewportStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineViewportStateCreateInfo; + }; + + // wrapper struct for struct VkPipelineRasterizationStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationStateCreateInfo.html + struct PipelineRasterizationStateCreateInfo + { + using NativeType = VkPipelineRasterizationStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateFlags flags_ = {}, + Bool32 depthClampEnable_ = {}, + Bool32 rasterizerDiscardEnable_ = {}, + PolygonMode polygonMode_ = PolygonMode::eFill, + CullModeFlags cullMode_ = {}, + FrontFace frontFace_ = FrontFace::eCounterClockwise, + Bool32 depthBiasEnable_ = {}, + float depthBiasConstantFactor_ = {}, + float depthBiasClamp_ = {}, + float depthBiasSlopeFactor_ = {}, + float lineWidth_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , depthClampEnable{ depthClampEnable_ } + , rasterizerDiscardEnable{ rasterizerDiscardEnable_ } + , polygonMode{ polygonMode_ } + , cullMode{ cullMode_ } + , frontFace{ frontFace_ } + , depthBiasEnable{ depthBiasEnable_ } + , depthBiasConstantFactor{ depthBiasConstantFactor_ } + , depthBiasClamp{ depthBiasClamp_ } + , depthBiasSlopeFactor{ depthBiasSlopeFactor_ } + , lineWidth{ lineWidth_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRasterizationStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineRasterizationStateCreateInfo & operator=( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineRasterizationStateCreateInfo & operator=( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setFlags( PipelineRasterizationStateCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setFlags( PipelineRasterizationStateCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthClampEnable( Bool32 depthClampEnable_ ) & VULKAN_HPP_NOEXCEPT + { + depthClampEnable = depthClampEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setDepthClampEnable( Bool32 depthClampEnable_ ) && VULKAN_HPP_NOEXCEPT + { + depthClampEnable = depthClampEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ ) & VULKAN_HPP_NOEXCEPT + { + rasterizerDiscardEnable = rasterizerDiscardEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ ) && VULKAN_HPP_NOEXCEPT + { + rasterizerDiscardEnable = rasterizerDiscardEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setPolygonMode( PolygonMode polygonMode_ ) & VULKAN_HPP_NOEXCEPT + { + polygonMode = polygonMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setPolygonMode( PolygonMode polygonMode_ ) && VULKAN_HPP_NOEXCEPT + { + polygonMode = polygonMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setCullMode( CullModeFlags cullMode_ ) & VULKAN_HPP_NOEXCEPT + { + cullMode = cullMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setCullMode( CullModeFlags cullMode_ ) && VULKAN_HPP_NOEXCEPT + { + cullMode = cullMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setFrontFace( FrontFace frontFace_ ) & VULKAN_HPP_NOEXCEPT + { + frontFace = frontFace_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setFrontFace( FrontFace frontFace_ ) && VULKAN_HPP_NOEXCEPT + { + frontFace = frontFace_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasEnable( Bool32 depthBiasEnable_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasEnable = depthBiasEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setDepthBiasEnable( Bool32 depthBiasEnable_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasEnable = depthBiasEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasConstantFactor = depthBiasConstantFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasConstantFactor = depthBiasConstantFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasClamp( float depthBiasClamp_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasClamp = depthBiasClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setDepthBiasClamp( float depthBiasClamp_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasClamp = depthBiasClamp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasSlopeFactor = depthBiasSlopeFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasSlopeFactor = depthBiasSlopeFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & setLineWidth( float lineWidth_ ) & VULKAN_HPP_NOEXCEPT + { + lineWidth = lineWidth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo && setLineWidth( float lineWidth_ ) && VULKAN_HPP_NOEXCEPT + { + lineWidth = lineWidth_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineRasterizationStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineRasterizationStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + depthClampEnable, + rasterizerDiscardEnable, + polygonMode, + cullMode, + frontFace, + depthBiasEnable, + depthBiasConstantFactor, + depthBiasClamp, + depthBiasSlopeFactor, + lineWidth ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( depthClampEnable == rhs.depthClampEnable ) && + ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable ) && ( polygonMode == rhs.polygonMode ) && ( cullMode == rhs.cullMode ) && + ( frontFace == rhs.frontFace ) && ( depthBiasEnable == rhs.depthBiasEnable ) && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor ) && + ( depthBiasClamp == rhs.depthBiasClamp ) && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor ) && ( lineWidth == rhs.lineWidth ); +# endif + } + + bool operator!=( PipelineRasterizationStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo; + void const * pNext = {}; + PipelineRasterizationStateCreateFlags flags = {}; + Bool32 depthClampEnable = {}; + Bool32 rasterizerDiscardEnable = {}; + PolygonMode polygonMode = PolygonMode::eFill; + CullModeFlags cullMode = {}; + FrontFace frontFace = FrontFace::eCounterClockwise; + Bool32 depthBiasEnable = {}; + float depthBiasConstantFactor = {}; + float depthBiasClamp = {}; + float depthBiasSlopeFactor = {}; + float lineWidth = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineRasterizationStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineRasterizationStateCreateInfo; + }; + + // wrapper struct for struct VkPipelineMultisampleStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineMultisampleStateCreateInfo.html + struct PipelineMultisampleStateCreateInfo + { + using NativeType = VkPipelineMultisampleStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineMultisampleStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = {}, + SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, + Bool32 sampleShadingEnable_ = {}, + float minSampleShading_ = {}, + SampleMask const * pSampleMask_ = {}, + Bool32 alphaToCoverageEnable_ = {}, + Bool32 alphaToOneEnable_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , rasterizationSamples{ rasterizationSamples_ } + , sampleShadingEnable{ sampleShadingEnable_ } + , minSampleShading{ minSampleShading_ } + , pSampleMask{ pSampleMask_ } + , alphaToCoverageEnable{ alphaToCoverageEnable_ } + , alphaToOneEnable{ alphaToOneEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineMultisampleStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineMultisampleStateCreateInfo & operator=( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineMultisampleStateCreateInfo & operator=( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setFlags( PipelineMultisampleStateCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo && setFlags( PipelineMultisampleStateCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ ) & VULKAN_HPP_NOEXCEPT + { + rasterizationSamples = rasterizationSamples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo && setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ ) && VULKAN_HPP_NOEXCEPT + { + rasterizationSamples = rasterizationSamples_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setSampleShadingEnable( Bool32 sampleShadingEnable_ ) & VULKAN_HPP_NOEXCEPT + { + sampleShadingEnable = sampleShadingEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo && setSampleShadingEnable( Bool32 sampleShadingEnable_ ) && VULKAN_HPP_NOEXCEPT + { + sampleShadingEnable = sampleShadingEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setMinSampleShading( float minSampleShading_ ) & VULKAN_HPP_NOEXCEPT + { + minSampleShading = minSampleShading_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo && setMinSampleShading( float minSampleShading_ ) && VULKAN_HPP_NOEXCEPT + { + minSampleShading = minSampleShading_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setPSampleMask( SampleMask const * pSampleMask_ ) & VULKAN_HPP_NOEXCEPT + { + pSampleMask = pSampleMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo && setPSampleMask( SampleMask const * pSampleMask_ ) && VULKAN_HPP_NOEXCEPT + { + pSampleMask = pSampleMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ ) & VULKAN_HPP_NOEXCEPT + { + alphaToCoverageEnable = alphaToCoverageEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo && setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ ) && VULKAN_HPP_NOEXCEPT + { + alphaToCoverageEnable = alphaToCoverageEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & setAlphaToOneEnable( Bool32 alphaToOneEnable_ ) & VULKAN_HPP_NOEXCEPT + { + alphaToOneEnable = alphaToOneEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo && setAlphaToOneEnable( Bool32 alphaToOneEnable_ ) && VULKAN_HPP_NOEXCEPT + { + alphaToOneEnable = alphaToOneEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineMultisampleStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineMultisampleStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineMultisampleStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineMultisampleStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, rasterizationSamples, sampleShadingEnable, minSampleShading, pSampleMask, alphaToCoverageEnable, alphaToOneEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineMultisampleStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rasterizationSamples == rhs.rasterizationSamples ) && + ( sampleShadingEnable == rhs.sampleShadingEnable ) && ( minSampleShading == rhs.minSampleShading ) && ( pSampleMask == rhs.pSampleMask ) && + ( alphaToCoverageEnable == rhs.alphaToCoverageEnable ) && ( alphaToOneEnable == rhs.alphaToOneEnable ); +# endif + } + + bool operator!=( PipelineMultisampleStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo; + void const * pNext = {}; + PipelineMultisampleStateCreateFlags flags = {}; + SampleCountFlagBits rasterizationSamples = SampleCountFlagBits::e1; + Bool32 sampleShadingEnable = {}; + float minSampleShading = {}; + SampleMask const * pSampleMask = {}; + Bool32 alphaToCoverageEnable = {}; + Bool32 alphaToOneEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineMultisampleStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineMultisampleStateCreateInfo; + }; + + // wrapper struct for struct VkStencilOpState, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkStencilOpState.html + struct StencilOpState + { + using NativeType = VkStencilOpState; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR StencilOpState( StencilOp failOp_ = StencilOp::eKeep, + StencilOp passOp_ = StencilOp::eKeep, + StencilOp depthFailOp_ = StencilOp::eKeep, + CompareOp compareOp_ = CompareOp::eNever, + uint32_t compareMask_ = {}, + uint32_t writeMask_ = {}, + uint32_t reference_ = {} ) VULKAN_HPP_NOEXCEPT + : failOp{ failOp_ } + , passOp{ passOp_ } + , depthFailOp{ depthFailOp_ } + , compareOp{ compareOp_ } + , compareMask{ compareMask_ } + , writeMask{ writeMask_ } + , reference{ reference_ } + { + } + + VULKAN_HPP_CONSTEXPR StencilOpState( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + StencilOpState( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT : StencilOpState( *reinterpret_cast( &rhs ) ) {} + + StencilOpState & operator=( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + StencilOpState & operator=( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setFailOp( StencilOp failOp_ ) & VULKAN_HPP_NOEXCEPT + { + failOp = failOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState && setFailOp( StencilOp failOp_ ) && VULKAN_HPP_NOEXCEPT + { + failOp = failOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setPassOp( StencilOp passOp_ ) & VULKAN_HPP_NOEXCEPT + { + passOp = passOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState && setPassOp( StencilOp passOp_ ) && VULKAN_HPP_NOEXCEPT + { + passOp = passOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setDepthFailOp( StencilOp depthFailOp_ ) & VULKAN_HPP_NOEXCEPT + { + depthFailOp = depthFailOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState && setDepthFailOp( StencilOp depthFailOp_ ) && VULKAN_HPP_NOEXCEPT + { + depthFailOp = depthFailOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setCompareOp( CompareOp compareOp_ ) & VULKAN_HPP_NOEXCEPT + { + compareOp = compareOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState && setCompareOp( CompareOp compareOp_ ) && VULKAN_HPP_NOEXCEPT + { + compareOp = compareOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setCompareMask( uint32_t compareMask_ ) & VULKAN_HPP_NOEXCEPT + { + compareMask = compareMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState && setCompareMask( uint32_t compareMask_ ) && VULKAN_HPP_NOEXCEPT + { + compareMask = compareMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setWriteMask( uint32_t writeMask_ ) & VULKAN_HPP_NOEXCEPT + { + writeMask = writeMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState && setWriteMask( uint32_t writeMask_ ) && VULKAN_HPP_NOEXCEPT + { + writeMask = writeMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState & setReference( uint32_t reference_ ) & VULKAN_HPP_NOEXCEPT + { + reference = reference_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StencilOpState && setReference( uint32_t reference_ ) && VULKAN_HPP_NOEXCEPT + { + reference = reference_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkStencilOpState const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkStencilOpState &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkStencilOpState const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkStencilOpState *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( failOp, passOp, depthFailOp, compareOp, compareMask, writeMask, reference ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( StencilOpState const & ) const = default; +#else + bool operator==( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( failOp == rhs.failOp ) && ( passOp == rhs.passOp ) && ( depthFailOp == rhs.depthFailOp ) && ( compareOp == rhs.compareOp ) && + ( compareMask == rhs.compareMask ) && ( writeMask == rhs.writeMask ) && ( reference == rhs.reference ); +# endif + } + + bool operator!=( StencilOpState const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StencilOp failOp = StencilOp::eKeep; + StencilOp passOp = StencilOp::eKeep; + StencilOp depthFailOp = StencilOp::eKeep; + CompareOp compareOp = CompareOp::eNever; + uint32_t compareMask = {}; + uint32_t writeMask = {}; + uint32_t reference = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = StencilOpState; + }; +#endif + + // wrapper struct for struct VkPipelineDepthStencilStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineDepthStencilStateCreateInfo.html + struct PipelineDepthStencilStateCreateInfo + { + using NativeType = VkPipelineDepthStencilStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineDepthStencilStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateFlags flags_ = {}, + Bool32 depthTestEnable_ = {}, + Bool32 depthWriteEnable_ = {}, + CompareOp depthCompareOp_ = CompareOp::eNever, + Bool32 depthBoundsTestEnable_ = {}, + Bool32 stencilTestEnable_ = {}, + StencilOpState front_ = {}, + StencilOpState back_ = {}, + float minDepthBounds_ = {}, + float maxDepthBounds_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , depthTestEnable{ depthTestEnable_ } + , depthWriteEnable{ depthWriteEnable_ } + , depthCompareOp{ depthCompareOp_ } + , depthBoundsTestEnable{ depthBoundsTestEnable_ } + , stencilTestEnable{ stencilTestEnable_ } + , front{ front_ } + , back{ back_ } + , minDepthBounds{ minDepthBounds_ } + , maxDepthBounds{ maxDepthBounds_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineDepthStencilStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineDepthStencilStateCreateInfo & operator=( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineDepthStencilStateCreateInfo & operator=( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setFlags( PipelineDepthStencilStateCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setFlags( PipelineDepthStencilStateCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthTestEnable( Bool32 depthTestEnable_ ) & VULKAN_HPP_NOEXCEPT + { + depthTestEnable = depthTestEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setDepthTestEnable( Bool32 depthTestEnable_ ) && VULKAN_HPP_NOEXCEPT + { + depthTestEnable = depthTestEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthWriteEnable( Bool32 depthWriteEnable_ ) & VULKAN_HPP_NOEXCEPT + { + depthWriteEnable = depthWriteEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setDepthWriteEnable( Bool32 depthWriteEnable_ ) && VULKAN_HPP_NOEXCEPT + { + depthWriteEnable = depthWriteEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthCompareOp( CompareOp depthCompareOp_ ) & VULKAN_HPP_NOEXCEPT + { + depthCompareOp = depthCompareOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setDepthCompareOp( CompareOp depthCompareOp_ ) && VULKAN_HPP_NOEXCEPT + { + depthCompareOp = depthCompareOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ ) & VULKAN_HPP_NOEXCEPT + { + depthBoundsTestEnable = depthBoundsTestEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ ) && VULKAN_HPP_NOEXCEPT + { + depthBoundsTestEnable = depthBoundsTestEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setStencilTestEnable( Bool32 stencilTestEnable_ ) & VULKAN_HPP_NOEXCEPT + { + stencilTestEnable = stencilTestEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setStencilTestEnable( Bool32 stencilTestEnable_ ) && VULKAN_HPP_NOEXCEPT + { + stencilTestEnable = stencilTestEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setFront( StencilOpState const & front_ ) & VULKAN_HPP_NOEXCEPT + { + front = front_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setFront( StencilOpState const & front_ ) && VULKAN_HPP_NOEXCEPT + { + front = front_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setBack( StencilOpState const & back_ ) & VULKAN_HPP_NOEXCEPT + { + back = back_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setBack( StencilOpState const & back_ ) && VULKAN_HPP_NOEXCEPT + { + back = back_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setMinDepthBounds( float minDepthBounds_ ) & VULKAN_HPP_NOEXCEPT + { + minDepthBounds = minDepthBounds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setMinDepthBounds( float minDepthBounds_ ) && VULKAN_HPP_NOEXCEPT + { + minDepthBounds = minDepthBounds_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & setMaxDepthBounds( float maxDepthBounds_ ) & VULKAN_HPP_NOEXCEPT + { + maxDepthBounds = maxDepthBounds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo && setMaxDepthBounds( float maxDepthBounds_ ) && VULKAN_HPP_NOEXCEPT + { + maxDepthBounds = maxDepthBounds_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineDepthStencilStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineDepthStencilStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineDepthStencilStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineDepthStencilStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + depthTestEnable, + depthWriteEnable, + depthCompareOp, + depthBoundsTestEnable, + stencilTestEnable, + front, + back, + minDepthBounds, + maxDepthBounds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineDepthStencilStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( depthTestEnable == rhs.depthTestEnable ) && + ( depthWriteEnable == rhs.depthWriteEnable ) && ( depthCompareOp == rhs.depthCompareOp ) && + ( depthBoundsTestEnable == rhs.depthBoundsTestEnable ) && ( stencilTestEnable == rhs.stencilTestEnable ) && ( front == rhs.front ) && + ( back == rhs.back ) && ( minDepthBounds == rhs.minDepthBounds ) && ( maxDepthBounds == rhs.maxDepthBounds ); +# endif + } + + bool operator!=( PipelineDepthStencilStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo; + void const * pNext = {}; + PipelineDepthStencilStateCreateFlags flags = {}; + Bool32 depthTestEnable = {}; + Bool32 depthWriteEnable = {}; + CompareOp depthCompareOp = CompareOp::eNever; + Bool32 depthBoundsTestEnable = {}; + Bool32 stencilTestEnable = {}; + StencilOpState front = {}; + StencilOpState back = {}; + float minDepthBounds = {}; + float maxDepthBounds = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineDepthStencilStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineDepthStencilStateCreateInfo; + }; + + // wrapper struct for struct VkPipelineColorBlendAttachmentState, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineColorBlendAttachmentState.html + struct PipelineColorBlendAttachmentState + { + using NativeType = VkPipelineColorBlendAttachmentState; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState( Bool32 blendEnable_ = {}, + BlendFactor srcColorBlendFactor_ = BlendFactor::eZero, + BlendFactor dstColorBlendFactor_ = BlendFactor::eZero, + BlendOp colorBlendOp_ = BlendOp::eAdd, + BlendFactor srcAlphaBlendFactor_ = BlendFactor::eZero, + BlendFactor dstAlphaBlendFactor_ = BlendFactor::eZero, + BlendOp alphaBlendOp_ = BlendOp::eAdd, + ColorComponentFlags colorWriteMask_ = {} ) VULKAN_HPP_NOEXCEPT + : blendEnable{ blendEnable_ } + , srcColorBlendFactor{ srcColorBlendFactor_ } + , dstColorBlendFactor{ dstColorBlendFactor_ } + , colorBlendOp{ colorBlendOp_ } + , srcAlphaBlendFactor{ srcAlphaBlendFactor_ } + , dstAlphaBlendFactor{ dstAlphaBlendFactor_ } + , alphaBlendOp{ alphaBlendOp_ } + , colorWriteMask{ colorWriteMask_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineColorBlendAttachmentState( *reinterpret_cast( &rhs ) ) + { + } + + PipelineColorBlendAttachmentState & operator=( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineColorBlendAttachmentState & operator=( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setBlendEnable( Bool32 blendEnable_ ) & VULKAN_HPP_NOEXCEPT + { + blendEnable = blendEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState && setBlendEnable( Bool32 blendEnable_ ) && VULKAN_HPP_NOEXCEPT + { + blendEnable = blendEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ ) & VULKAN_HPP_NOEXCEPT + { + srcColorBlendFactor = srcColorBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState && setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ ) && VULKAN_HPP_NOEXCEPT + { + srcColorBlendFactor = srcColorBlendFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ ) & VULKAN_HPP_NOEXCEPT + { + dstColorBlendFactor = dstColorBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState && setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ ) && VULKAN_HPP_NOEXCEPT + { + dstColorBlendFactor = dstColorBlendFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setColorBlendOp( BlendOp colorBlendOp_ ) & VULKAN_HPP_NOEXCEPT + { + colorBlendOp = colorBlendOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState && setColorBlendOp( BlendOp colorBlendOp_ ) && VULKAN_HPP_NOEXCEPT + { + colorBlendOp = colorBlendOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ ) & VULKAN_HPP_NOEXCEPT + { + srcAlphaBlendFactor = srcAlphaBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState && setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ ) && VULKAN_HPP_NOEXCEPT + { + srcAlphaBlendFactor = srcAlphaBlendFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ ) & VULKAN_HPP_NOEXCEPT + { + dstAlphaBlendFactor = dstAlphaBlendFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState && setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ ) && VULKAN_HPP_NOEXCEPT + { + dstAlphaBlendFactor = dstAlphaBlendFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setAlphaBlendOp( BlendOp alphaBlendOp_ ) & VULKAN_HPP_NOEXCEPT + { + alphaBlendOp = alphaBlendOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState && setAlphaBlendOp( BlendOp alphaBlendOp_ ) && VULKAN_HPP_NOEXCEPT + { + alphaBlendOp = alphaBlendOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & setColorWriteMask( ColorComponentFlags colorWriteMask_ ) & VULKAN_HPP_NOEXCEPT + { + colorWriteMask = colorWriteMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState && setColorWriteMask( ColorComponentFlags colorWriteMask_ ) && VULKAN_HPP_NOEXCEPT + { + colorWriteMask = colorWriteMask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineColorBlendAttachmentState const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineColorBlendAttachmentState &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineColorBlendAttachmentState const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineColorBlendAttachmentState *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + blendEnable, srcColorBlendFactor, dstColorBlendFactor, colorBlendOp, srcAlphaBlendFactor, dstAlphaBlendFactor, alphaBlendOp, colorWriteMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineColorBlendAttachmentState const & ) const = default; +#else + bool operator==( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( blendEnable == rhs.blendEnable ) && ( srcColorBlendFactor == rhs.srcColorBlendFactor ) && ( dstColorBlendFactor == rhs.dstColorBlendFactor ) && + ( colorBlendOp == rhs.colorBlendOp ) && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor ) && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor ) && + ( alphaBlendOp == rhs.alphaBlendOp ) && ( colorWriteMask == rhs.colorWriteMask ); +# endif + } + + bool operator!=( PipelineColorBlendAttachmentState const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Bool32 blendEnable = {}; + BlendFactor srcColorBlendFactor = BlendFactor::eZero; + BlendFactor dstColorBlendFactor = BlendFactor::eZero; + BlendOp colorBlendOp = BlendOp::eAdd; + BlendFactor srcAlphaBlendFactor = BlendFactor::eZero; + BlendFactor dstAlphaBlendFactor = BlendFactor::eZero; + BlendOp alphaBlendOp = BlendOp::eAdd; + ColorComponentFlags colorWriteMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineColorBlendAttachmentState; + }; +#endif + + // wrapper struct for struct VkPipelineColorBlendStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineColorBlendStateCreateInfo.html + struct PipelineColorBlendStateCreateInfo + { + using NativeType = VkPipelineColorBlendStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineColorBlendStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateFlags flags_ = {}, + Bool32 logicOpEnable_ = {}, + LogicOp logicOp_ = LogicOp::eClear, + uint32_t attachmentCount_ = {}, + PipelineColorBlendAttachmentState const * pAttachments_ = {}, + std::array const & blendConstants_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , logicOpEnable{ logicOpEnable_ } + , logicOp{ logicOp_ } + , attachmentCount{ attachmentCount_ } + , pAttachments{ pAttachments_ } + , blendConstants{ blendConstants_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineColorBlendStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateFlags flags_, + Bool32 logicOpEnable_, + LogicOp logicOp_, + ArrayProxyNoTemporaries const & attachments_, + std::array const & blendConstants_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , logicOpEnable( logicOpEnable_ ) + , logicOp( logicOp_ ) + , attachmentCount( static_cast( attachments_.size() ) ) + , pAttachments( attachments_.data() ) + , blendConstants( blendConstants_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineColorBlendStateCreateInfo & operator=( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineColorBlendStateCreateInfo & operator=( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setFlags( PipelineColorBlendStateCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo && setFlags( PipelineColorBlendStateCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setLogicOpEnable( Bool32 logicOpEnable_ ) & VULKAN_HPP_NOEXCEPT + { + logicOpEnable = logicOpEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo && setLogicOpEnable( Bool32 logicOpEnable_ ) && VULKAN_HPP_NOEXCEPT + { + logicOpEnable = logicOpEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setLogicOp( LogicOp logicOp_ ) & VULKAN_HPP_NOEXCEPT + { + logicOp = logicOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo && setLogicOp( LogicOp logicOp_ ) && VULKAN_HPP_NOEXCEPT + { + logicOp = logicOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo && setAttachmentCount( uint32_t attachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setPAttachments( PipelineColorBlendAttachmentState const * pAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo && setPAttachments( PipelineColorBlendAttachmentState const * pAttachments_ ) && + VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineColorBlendStateCreateInfo & + setAttachments( ArrayProxyNoTemporaries const & attachments_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( attachments_.size() ); + pAttachments = attachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & setBlendConstants( std::array blendConstants_ ) & VULKAN_HPP_NOEXCEPT + { + blendConstants = blendConstants_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo && setBlendConstants( std::array blendConstants_ ) && VULKAN_HPP_NOEXCEPT + { + blendConstants = blendConstants_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineColorBlendStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineColorBlendStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineColorBlendStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineColorBlendStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, logicOpEnable, logicOp, attachmentCount, pAttachments, blendConstants ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineColorBlendStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( logicOpEnable == rhs.logicOpEnable ) && + ( logicOp == rhs.logicOp ) && ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments ) && + ( blendConstants == rhs.blendConstants ); +# endif + } + + bool operator!=( PipelineColorBlendStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineColorBlendStateCreateInfo; + void const * pNext = {}; + PipelineColorBlendStateCreateFlags flags = {}; + Bool32 logicOpEnable = {}; + LogicOp logicOp = LogicOp::eClear; + uint32_t attachmentCount = {}; + PipelineColorBlendAttachmentState const * pAttachments = {}; + ArrayWrapper1D blendConstants = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineColorBlendStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineColorBlendStateCreateInfo; + }; + + // wrapper struct for struct VkPipelineDynamicStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineDynamicStateCreateInfo.html + struct PipelineDynamicStateCreateInfo + { + using NativeType = VkPipelineDynamicStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineDynamicStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = {}, + uint32_t dynamicStateCount_ = {}, + DynamicState const * pDynamicStates_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , dynamicStateCount{ dynamicStateCount_ } + , pDynamicStates{ pDynamicStates_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineDynamicStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_, + ArrayProxyNoTemporaries const & dynamicStates_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), flags( flags_ ), dynamicStateCount( static_cast( dynamicStates_.size() ) ), pDynamicStates( dynamicStates_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineDynamicStateCreateInfo & operator=( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineDynamicStateCreateInfo & operator=( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setFlags( PipelineDynamicStateCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo && setFlags( PipelineDynamicStateCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setDynamicStateCount( uint32_t dynamicStateCount_ ) & VULKAN_HPP_NOEXCEPT + { + dynamicStateCount = dynamicStateCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo && setDynamicStateCount( uint32_t dynamicStateCount_ ) && VULKAN_HPP_NOEXCEPT + { + dynamicStateCount = dynamicStateCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & setPDynamicStates( DynamicState const * pDynamicStates_ ) & VULKAN_HPP_NOEXCEPT + { + pDynamicStates = pDynamicStates_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo && setPDynamicStates( DynamicState const * pDynamicStates_ ) && VULKAN_HPP_NOEXCEPT + { + pDynamicStates = pDynamicStates_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineDynamicStateCreateInfo & setDynamicStates( ArrayProxyNoTemporaries const & dynamicStates_ ) VULKAN_HPP_NOEXCEPT + { + dynamicStateCount = static_cast( dynamicStates_.size() ); + pDynamicStates = dynamicStates_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineDynamicStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineDynamicStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineDynamicStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineDynamicStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, dynamicStateCount, pDynamicStates ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineDynamicStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dynamicStateCount == rhs.dynamicStateCount ) && + ( pDynamicStates == rhs.pDynamicStates ); +# endif + } + + bool operator!=( PipelineDynamicStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineDynamicStateCreateInfo; + void const * pNext = {}; + PipelineDynamicStateCreateFlags flags = {}; + uint32_t dynamicStateCount = {}; + DynamicState const * pDynamicStates = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineDynamicStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineDynamicStateCreateInfo; + }; + + // wrapper struct for struct VkGraphicsPipelineCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkGraphicsPipelineCreateInfo.html + struct GraphicsPipelineCreateInfo + { + using NativeType = VkGraphicsPipelineCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGraphicsPipelineCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo( PipelineCreateFlags flags_ = {}, + uint32_t stageCount_ = {}, + PipelineShaderStageCreateInfo const * pStages_ = {}, + PipelineVertexInputStateCreateInfo const * pVertexInputState_ = {}, + PipelineInputAssemblyStateCreateInfo const * pInputAssemblyState_ = {}, + PipelineTessellationStateCreateInfo const * pTessellationState_ = {}, + PipelineViewportStateCreateInfo const * pViewportState_ = {}, + PipelineRasterizationStateCreateInfo const * pRasterizationState_ = {}, + PipelineMultisampleStateCreateInfo const * pMultisampleState_ = {}, + PipelineDepthStencilStateCreateInfo const * pDepthStencilState_ = {}, + PipelineColorBlendStateCreateInfo const * pColorBlendState_ = {}, + PipelineDynamicStateCreateInfo const * pDynamicState_ = {}, + PipelineLayout layout_ = {}, + RenderPass renderPass_ = {}, + uint32_t subpass_ = {}, + Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , stageCount{ stageCount_ } + , pStages{ pStages_ } + , pVertexInputState{ pVertexInputState_ } + , pInputAssemblyState{ pInputAssemblyState_ } + , pTessellationState{ pTessellationState_ } + , pViewportState{ pViewportState_ } + , pRasterizationState{ pRasterizationState_ } + , pMultisampleState{ pMultisampleState_ } + , pDepthStencilState{ pDepthStencilState_ } + , pColorBlendState{ pColorBlendState_ } + , pDynamicState{ pDynamicState_ } + , layout{ layout_ } + , renderPass{ renderPass_ } + , subpass{ subpass_ } + , basePipelineHandle{ basePipelineHandle_ } + , basePipelineIndex{ basePipelineIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : GraphicsPipelineCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsPipelineCreateInfo( PipelineCreateFlags flags_, + ArrayProxyNoTemporaries const & stages_, + PipelineVertexInputStateCreateInfo const * pVertexInputState_ = {}, + PipelineInputAssemblyStateCreateInfo const * pInputAssemblyState_ = {}, + PipelineTessellationStateCreateInfo const * pTessellationState_ = {}, + PipelineViewportStateCreateInfo const * pViewportState_ = {}, + PipelineRasterizationStateCreateInfo const * pRasterizationState_ = {}, + PipelineMultisampleStateCreateInfo const * pMultisampleState_ = {}, + PipelineDepthStencilStateCreateInfo const * pDepthStencilState_ = {}, + PipelineColorBlendStateCreateInfo const * pColorBlendState_ = {}, + PipelineDynamicStateCreateInfo const * pDynamicState_ = {}, + PipelineLayout layout_ = {}, + RenderPass renderPass_ = {}, + uint32_t subpass_ = {}, + Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , stageCount( static_cast( stages_.size() ) ) + , pStages( stages_.data() ) + , pVertexInputState( pVertexInputState_ ) + , pInputAssemblyState( pInputAssemblyState_ ) + , pTessellationState( pTessellationState_ ) + , pViewportState( pViewportState_ ) + , pRasterizationState( pRasterizationState_ ) + , pMultisampleState( pMultisampleState_ ) + , pDepthStencilState( pDepthStencilState_ ) + , pColorBlendState( pColorBlendState_ ) + , pDynamicState( pDynamicState_ ) + , layout( layout_ ) + , renderPass( renderPass_ ) + , subpass( subpass_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + GraphicsPipelineCreateInfo & operator=( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GraphicsPipelineCreateInfo & operator=( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setFlags( PipelineCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setFlags( PipelineCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setStageCount( uint32_t stageCount_ ) & VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setStageCount( uint32_t stageCount_ ) && VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPStages( PipelineShaderStageCreateInfo const * pStages_ ) & VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPStages( PipelineShaderStageCreateInfo const * pStages_ ) && VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsPipelineCreateInfo & setStages( ArrayProxyNoTemporaries const & stages_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = static_cast( stages_.size() ); + pStages = stages_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPVertexInputState( PipelineVertexInputStateCreateInfo const * pVertexInputState_ ) & + VULKAN_HPP_NOEXCEPT + { + pVertexInputState = pVertexInputState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPVertexInputState( PipelineVertexInputStateCreateInfo const * pVertexInputState_ ) && + VULKAN_HPP_NOEXCEPT + { + pVertexInputState = pVertexInputState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPInputAssemblyState( PipelineInputAssemblyStateCreateInfo const * pInputAssemblyState_ ) & + VULKAN_HPP_NOEXCEPT + { + pInputAssemblyState = pInputAssemblyState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPInputAssemblyState( PipelineInputAssemblyStateCreateInfo const * pInputAssemblyState_ ) && + VULKAN_HPP_NOEXCEPT + { + pInputAssemblyState = pInputAssemblyState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPTessellationState( PipelineTessellationStateCreateInfo const * pTessellationState_ ) & + VULKAN_HPP_NOEXCEPT + { + pTessellationState = pTessellationState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPTessellationState( PipelineTessellationStateCreateInfo const * pTessellationState_ ) && + VULKAN_HPP_NOEXCEPT + { + pTessellationState = pTessellationState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPViewportState( PipelineViewportStateCreateInfo const * pViewportState_ ) & VULKAN_HPP_NOEXCEPT + { + pViewportState = pViewportState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPViewportState( PipelineViewportStateCreateInfo const * pViewportState_ ) && VULKAN_HPP_NOEXCEPT + { + pViewportState = pViewportState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPRasterizationState( PipelineRasterizationStateCreateInfo const * pRasterizationState_ ) & + VULKAN_HPP_NOEXCEPT + { + pRasterizationState = pRasterizationState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPRasterizationState( PipelineRasterizationStateCreateInfo const * pRasterizationState_ ) && + VULKAN_HPP_NOEXCEPT + { + pRasterizationState = pRasterizationState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPMultisampleState( PipelineMultisampleStateCreateInfo const * pMultisampleState_ ) & + VULKAN_HPP_NOEXCEPT + { + pMultisampleState = pMultisampleState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPMultisampleState( PipelineMultisampleStateCreateInfo const * pMultisampleState_ ) && + VULKAN_HPP_NOEXCEPT + { + pMultisampleState = pMultisampleState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPDepthStencilState( PipelineDepthStencilStateCreateInfo const * pDepthStencilState_ ) & + VULKAN_HPP_NOEXCEPT + { + pDepthStencilState = pDepthStencilState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPDepthStencilState( PipelineDepthStencilStateCreateInfo const * pDepthStencilState_ ) && + VULKAN_HPP_NOEXCEPT + { + pDepthStencilState = pDepthStencilState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPColorBlendState( PipelineColorBlendStateCreateInfo const * pColorBlendState_ ) & + VULKAN_HPP_NOEXCEPT + { + pColorBlendState = pColorBlendState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPColorBlendState( PipelineColorBlendStateCreateInfo const * pColorBlendState_ ) && + VULKAN_HPP_NOEXCEPT + { + pColorBlendState = pColorBlendState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setPDynamicState( PipelineDynamicStateCreateInfo const * pDynamicState_ ) & VULKAN_HPP_NOEXCEPT + { + pDynamicState = pDynamicState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setPDynamicState( PipelineDynamicStateCreateInfo const * pDynamicState_ ) && VULKAN_HPP_NOEXCEPT + { + pDynamicState = pDynamicState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setRenderPass( RenderPass renderPass_ ) & VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setRenderPass( RenderPass renderPass_ ) && VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setSubpass( uint32_t subpass_ ) & VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setSubpass( uint32_t subpass_ ) && VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setBasePipelineHandle( Pipeline basePipelineHandle_ ) & VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setBasePipelineHandle( Pipeline basePipelineHandle_ ) && VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) & VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo && setBasePipelineIndex( int32_t basePipelineIndex_ ) && VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGraphicsPipelineCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGraphicsPipelineCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGraphicsPipelineCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGraphicsPipelineCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + stageCount, + pStages, + pVertexInputState, + pInputAssemblyState, + pTessellationState, + pViewportState, + pRasterizationState, + pMultisampleState, + pDepthStencilState, + pColorBlendState, + pDynamicState, + layout, + renderPass, + subpass, + basePipelineHandle, + basePipelineIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GraphicsPipelineCreateInfo const & ) const = default; +#else + bool operator==( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) && + ( pVertexInputState == rhs.pVertexInputState ) && ( pInputAssemblyState == rhs.pInputAssemblyState ) && + ( pTessellationState == rhs.pTessellationState ) && ( pViewportState == rhs.pViewportState ) && + ( pRasterizationState == rhs.pRasterizationState ) && ( pMultisampleState == rhs.pMultisampleState ) && + ( pDepthStencilState == rhs.pDepthStencilState ) && ( pColorBlendState == rhs.pColorBlendState ) && ( pDynamicState == rhs.pDynamicState ) && + ( layout == rhs.layout ) && ( renderPass == rhs.renderPass ) && ( subpass == rhs.subpass ) && ( basePipelineHandle == rhs.basePipelineHandle ) && + ( basePipelineIndex == rhs.basePipelineIndex ); +# endif + } + + bool operator!=( GraphicsPipelineCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGraphicsPipelineCreateInfo; + void const * pNext = {}; + PipelineCreateFlags flags = {}; + uint32_t stageCount = {}; + PipelineShaderStageCreateInfo const * pStages = {}; + PipelineVertexInputStateCreateInfo const * pVertexInputState = {}; + PipelineInputAssemblyStateCreateInfo const * pInputAssemblyState = {}; + PipelineTessellationStateCreateInfo const * pTessellationState = {}; + PipelineViewportStateCreateInfo const * pViewportState = {}; + PipelineRasterizationStateCreateInfo const * pRasterizationState = {}; + PipelineMultisampleStateCreateInfo const * pMultisampleState = {}; + PipelineDepthStencilStateCreateInfo const * pDepthStencilState = {}; + PipelineColorBlendStateCreateInfo const * pColorBlendState = {}; + PipelineDynamicStateCreateInfo const * pDynamicState = {}; + PipelineLayout layout = {}; + RenderPass renderPass = {}; + uint32_t subpass = {}; + Pipeline basePipelineHandle = {}; + int32_t basePipelineIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GraphicsPipelineCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = GraphicsPipelineCreateInfo; + }; + + // wrapper struct for struct VkGraphicsPipelineLibraryCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkGraphicsPipelineLibraryCreateInfoEXT.html + struct GraphicsPipelineLibraryCreateInfoEXT + { + using NativeType = VkGraphicsPipelineLibraryCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGraphicsPipelineLibraryCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GraphicsPipelineLibraryCreateInfoEXT( GraphicsPipelineLibraryFlagsEXT flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR GraphicsPipelineLibraryCreateInfoEXT( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GraphicsPipelineLibraryCreateInfoEXT( VkGraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : GraphicsPipelineLibraryCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + GraphicsPipelineLibraryCreateInfoEXT & operator=( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GraphicsPipelineLibraryCreateInfoEXT & operator=( VkGraphicsPipelineLibraryCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineLibraryCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineLibraryCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineLibraryCreateInfoEXT & setFlags( GraphicsPipelineLibraryFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineLibraryCreateInfoEXT && setFlags( GraphicsPipelineLibraryFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGraphicsPipelineLibraryCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGraphicsPipelineLibraryCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGraphicsPipelineLibraryCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGraphicsPipelineLibraryCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GraphicsPipelineLibraryCreateInfoEXT const & ) const = default; +#else + bool operator==( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( GraphicsPipelineLibraryCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGraphicsPipelineLibraryCreateInfoEXT; + void const * pNext = {}; + GraphicsPipelineLibraryFlagsEXT flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GraphicsPipelineLibraryCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = GraphicsPipelineLibraryCreateInfoEXT; + }; + + // wrapper struct for struct VkGraphicsShaderGroupCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkGraphicsShaderGroupCreateInfoNV.html + struct GraphicsShaderGroupCreateInfoNV + { + using NativeType = VkGraphicsShaderGroupCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGraphicsShaderGroupCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GraphicsShaderGroupCreateInfoNV( uint32_t stageCount_ = {}, + PipelineShaderStageCreateInfo const * pStages_ = {}, + PipelineVertexInputStateCreateInfo const * pVertexInputState_ = {}, + PipelineTessellationStateCreateInfo const * pTessellationState_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stageCount{ stageCount_ } + , pStages{ pStages_ } + , pVertexInputState{ pVertexInputState_ } + , pTessellationState{ pTessellationState_ } + { + } + + VULKAN_HPP_CONSTEXPR GraphicsShaderGroupCreateInfoNV( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GraphicsShaderGroupCreateInfoNV( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GraphicsShaderGroupCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsShaderGroupCreateInfoNV( ArrayProxyNoTemporaries const & stages_, + PipelineVertexInputStateCreateInfo const * pVertexInputState_ = {}, + PipelineTessellationStateCreateInfo const * pTessellationState_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , stageCount( static_cast( stages_.size() ) ) + , pStages( stages_.data() ) + , pVertexInputState( pVertexInputState_ ) + , pTessellationState( pTessellationState_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + GraphicsShaderGroupCreateInfoNV & operator=( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GraphicsShaderGroupCreateInfoNV & operator=( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setStageCount( uint32_t stageCount_ ) & VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV && setStageCount( uint32_t stageCount_ ) && VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPStages( PipelineShaderStageCreateInfo const * pStages_ ) & VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV && setPStages( PipelineShaderStageCreateInfo const * pStages_ ) && VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsShaderGroupCreateInfoNV & setStages( ArrayProxyNoTemporaries const & stages_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = static_cast( stages_.size() ); + pStages = stages_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPVertexInputState( PipelineVertexInputStateCreateInfo const * pVertexInputState_ ) & + VULKAN_HPP_NOEXCEPT + { + pVertexInputState = pVertexInputState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV && setPVertexInputState( PipelineVertexInputStateCreateInfo const * pVertexInputState_ ) && + VULKAN_HPP_NOEXCEPT + { + pVertexInputState = pVertexInputState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & setPTessellationState( PipelineTessellationStateCreateInfo const * pTessellationState_ ) & + VULKAN_HPP_NOEXCEPT + { + pTessellationState = pTessellationState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV && setPTessellationState( PipelineTessellationStateCreateInfo const * pTessellationState_ ) && + VULKAN_HPP_NOEXCEPT + { + pTessellationState = pTessellationState_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGraphicsShaderGroupCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGraphicsShaderGroupCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGraphicsShaderGroupCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGraphicsShaderGroupCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stageCount, pStages, pVertexInputState, pTessellationState ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GraphicsShaderGroupCreateInfoNV const & ) const = default; +#else + bool operator==( GraphicsShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) && + ( pVertexInputState == rhs.pVertexInputState ) && ( pTessellationState == rhs.pTessellationState ); +# endif + } + + bool operator!=( GraphicsShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGraphicsShaderGroupCreateInfoNV; + void const * pNext = {}; + uint32_t stageCount = {}; + PipelineShaderStageCreateInfo const * pStages = {}; + PipelineVertexInputStateCreateInfo const * pVertexInputState = {}; + PipelineTessellationStateCreateInfo const * pTessellationState = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GraphicsShaderGroupCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = GraphicsShaderGroupCreateInfoNV; + }; + + // wrapper struct for struct VkGraphicsPipelineShaderGroupsCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkGraphicsPipelineShaderGroupsCreateInfoNV.html + struct GraphicsPipelineShaderGroupsCreateInfoNV + { + using NativeType = VkGraphicsPipelineShaderGroupsCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV( uint32_t groupCount_ = {}, + GraphicsShaderGroupCreateInfoNV const * pGroups_ = {}, + uint32_t pipelineCount_ = {}, + Pipeline const * pPipelines_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , groupCount{ groupCount_ } + , pGroups{ pGroups_ } + , pipelineCount{ pipelineCount_ } + , pPipelines{ pPipelines_ } + { + } + + VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + GraphicsPipelineShaderGroupsCreateInfoNV( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : GraphicsPipelineShaderGroupsCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsPipelineShaderGroupsCreateInfoNV( ArrayProxyNoTemporaries const & groups_, + ArrayProxyNoTemporaries const & pipelines_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , groupCount( static_cast( groups_.size() ) ) + , pGroups( groups_.data() ) + , pipelineCount( static_cast( pipelines_.size() ) ) + , pPipelines( pipelines_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + GraphicsPipelineShaderGroupsCreateInfoNV & operator=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + GraphicsPipelineShaderGroupsCreateInfoNV & operator=( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setGroupCount( uint32_t groupCount_ ) & VULKAN_HPP_NOEXCEPT + { + groupCount = groupCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV && setGroupCount( uint32_t groupCount_ ) && VULKAN_HPP_NOEXCEPT + { + groupCount = groupCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setPGroups( GraphicsShaderGroupCreateInfoNV const * pGroups_ ) & VULKAN_HPP_NOEXCEPT + { + pGroups = pGroups_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV && setPGroups( GraphicsShaderGroupCreateInfoNV const * pGroups_ ) && VULKAN_HPP_NOEXCEPT + { + pGroups = pGroups_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsPipelineShaderGroupsCreateInfoNV & setGroups( ArrayProxyNoTemporaries const & groups_ ) VULKAN_HPP_NOEXCEPT + { + groupCount = static_cast( groups_.size() ); + pGroups = groups_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setPipelineCount( uint32_t pipelineCount_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineCount = pipelineCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV && setPipelineCount( uint32_t pipelineCount_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineCount = pipelineCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & setPPipelines( Pipeline const * pPipelines_ ) & VULKAN_HPP_NOEXCEPT + { + pPipelines = pPipelines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV && setPPipelines( Pipeline const * pPipelines_ ) && VULKAN_HPP_NOEXCEPT + { + pPipelines = pPipelines_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + GraphicsPipelineShaderGroupsCreateInfoNV & setPipelines( ArrayProxyNoTemporaries const & pipelines_ ) VULKAN_HPP_NOEXCEPT + { + pipelineCount = static_cast( pipelines_.size() ); + pPipelines = pipelines_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkGraphicsPipelineShaderGroupsCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGraphicsPipelineShaderGroupsCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkGraphicsPipelineShaderGroupsCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkGraphicsPipelineShaderGroupsCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, groupCount, pGroups, pipelineCount, pPipelines ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( GraphicsPipelineShaderGroupsCreateInfoNV const & ) const = default; +#else + bool operator==( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( groupCount == rhs.groupCount ) && ( pGroups == rhs.pGroups ) && + ( pipelineCount == rhs.pipelineCount ) && ( pPipelines == rhs.pPipelines ); +# endif + } + + bool operator!=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV; + void const * pNext = {}; + uint32_t groupCount = {}; + GraphicsShaderGroupCreateInfoNV const * pGroups = {}; + uint32_t pipelineCount = {}; + Pipeline const * pPipelines = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = GraphicsPipelineShaderGroupsCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = GraphicsPipelineShaderGroupsCreateInfoNV; + }; + + // wrapper struct for struct VkXYColorEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkXYColorEXT.html + struct XYColorEXT + { + using NativeType = VkXYColorEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR XYColorEXT( float x_ = {}, float y_ = {} ) VULKAN_HPP_NOEXCEPT + : x{ x_ } + , y{ y_ } + { + } + + VULKAN_HPP_CONSTEXPR XYColorEXT( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + XYColorEXT( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT : XYColorEXT( *reinterpret_cast( &rhs ) ) {} + + XYColorEXT & operator=( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + XYColorEXT & operator=( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setX( float x_ ) & VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XYColorEXT && setX( float x_ ) && VULKAN_HPP_NOEXCEPT + { + x = x_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 XYColorEXT & setY( float y_ ) & VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XYColorEXT && setY( float y_ ) && VULKAN_HPP_NOEXCEPT + { + y = y_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkXYColorEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkXYColorEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkXYColorEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkXYColorEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( XYColorEXT const & ) const = default; +#else + bool operator==( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ); +# endif + } + + bool operator!=( XYColorEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float x = {}; + float y = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = XYColorEXT; + }; +#endif + + // wrapper struct for struct VkHdrMetadataEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkHdrMetadataEXT.html + struct HdrMetadataEXT + { + using NativeType = VkHdrMetadataEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHdrMetadataEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR HdrMetadataEXT( XYColorEXT displayPrimaryRed_ = {}, + XYColorEXT displayPrimaryGreen_ = {}, + XYColorEXT displayPrimaryBlue_ = {}, + XYColorEXT whitePoint_ = {}, + float maxLuminance_ = {}, + float minLuminance_ = {}, + float maxContentLightLevel_ = {}, + float maxFrameAverageLightLevel_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , displayPrimaryRed{ displayPrimaryRed_ } + , displayPrimaryGreen{ displayPrimaryGreen_ } + , displayPrimaryBlue{ displayPrimaryBlue_ } + , whitePoint{ whitePoint_ } + , maxLuminance{ maxLuminance_ } + , minLuminance{ minLuminance_ } + , maxContentLightLevel{ maxContentLightLevel_ } + , maxFrameAverageLightLevel{ maxFrameAverageLightLevel_ } + { + } + + VULKAN_HPP_CONSTEXPR HdrMetadataEXT( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HdrMetadataEXT( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT : HdrMetadataEXT( *reinterpret_cast( &rhs ) ) {} + + HdrMetadataEXT & operator=( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + HdrMetadataEXT & operator=( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryRed( XYColorEXT const & displayPrimaryRed_ ) & VULKAN_HPP_NOEXCEPT + { + displayPrimaryRed = displayPrimaryRed_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT && setDisplayPrimaryRed( XYColorEXT const & displayPrimaryRed_ ) && VULKAN_HPP_NOEXCEPT + { + displayPrimaryRed = displayPrimaryRed_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryGreen( XYColorEXT const & displayPrimaryGreen_ ) & VULKAN_HPP_NOEXCEPT + { + displayPrimaryGreen = displayPrimaryGreen_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT && setDisplayPrimaryGreen( XYColorEXT const & displayPrimaryGreen_ ) && VULKAN_HPP_NOEXCEPT + { + displayPrimaryGreen = displayPrimaryGreen_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setDisplayPrimaryBlue( XYColorEXT const & displayPrimaryBlue_ ) & VULKAN_HPP_NOEXCEPT + { + displayPrimaryBlue = displayPrimaryBlue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT && setDisplayPrimaryBlue( XYColorEXT const & displayPrimaryBlue_ ) && VULKAN_HPP_NOEXCEPT + { + displayPrimaryBlue = displayPrimaryBlue_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setWhitePoint( XYColorEXT const & whitePoint_ ) & VULKAN_HPP_NOEXCEPT + { + whitePoint = whitePoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT && setWhitePoint( XYColorEXT const & whitePoint_ ) && VULKAN_HPP_NOEXCEPT + { + whitePoint = whitePoint_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxLuminance( float maxLuminance_ ) & VULKAN_HPP_NOEXCEPT + { + maxLuminance = maxLuminance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT && setMaxLuminance( float maxLuminance_ ) && VULKAN_HPP_NOEXCEPT + { + maxLuminance = maxLuminance_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMinLuminance( float minLuminance_ ) & VULKAN_HPP_NOEXCEPT + { + minLuminance = minLuminance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT && setMinLuminance( float minLuminance_ ) && VULKAN_HPP_NOEXCEPT + { + minLuminance = minLuminance_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxContentLightLevel( float maxContentLightLevel_ ) & VULKAN_HPP_NOEXCEPT + { + maxContentLightLevel = maxContentLightLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT && setMaxContentLightLevel( float maxContentLightLevel_ ) && VULKAN_HPP_NOEXCEPT + { + maxContentLightLevel = maxContentLightLevel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ ) & VULKAN_HPP_NOEXCEPT + { + maxFrameAverageLightLevel = maxFrameAverageLightLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT && setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ ) && VULKAN_HPP_NOEXCEPT + { + maxFrameAverageLightLevel = maxFrameAverageLightLevel_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkHdrMetadataEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHdrMetadataEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHdrMetadataEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkHdrMetadataEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + displayPrimaryRed, + displayPrimaryGreen, + displayPrimaryBlue, + whitePoint, + maxLuminance, + minLuminance, + maxContentLightLevel, + maxFrameAverageLightLevel ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( HdrMetadataEXT const & ) const = default; +#else + bool operator==( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displayPrimaryRed == rhs.displayPrimaryRed ) && + ( displayPrimaryGreen == rhs.displayPrimaryGreen ) && ( displayPrimaryBlue == rhs.displayPrimaryBlue ) && ( whitePoint == rhs.whitePoint ) && + ( maxLuminance == rhs.maxLuminance ) && ( minLuminance == rhs.minLuminance ) && ( maxContentLightLevel == rhs.maxContentLightLevel ) && + ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel ); +# endif + } + + bool operator!=( HdrMetadataEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eHdrMetadataEXT; + void const * pNext = {}; + XYColorEXT displayPrimaryRed = {}; + XYColorEXT displayPrimaryGreen = {}; + XYColorEXT displayPrimaryBlue = {}; + XYColorEXT whitePoint = {}; + float maxLuminance = {}; + float minLuminance = {}; + float maxContentLightLevel = {}; + float maxFrameAverageLightLevel = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = HdrMetadataEXT; + }; +#endif + + template <> + struct CppType + { + using Type = HdrMetadataEXT; + }; + + // wrapper struct for struct VkHdrVividDynamicMetadataHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkHdrVividDynamicMetadataHUAWEI.html + struct HdrVividDynamicMetadataHUAWEI + { + using NativeType = VkHdrVividDynamicMetadataHUAWEI; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHdrVividDynamicMetadataHUAWEI; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + HdrVividDynamicMetadataHUAWEI( size_t dynamicMetadataSize_ = {}, void const * pDynamicMetadata_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dynamicMetadataSize{ dynamicMetadataSize_ } + , pDynamicMetadata{ pDynamicMetadata_ } + { + } + + VULKAN_HPP_CONSTEXPR HdrVividDynamicMetadataHUAWEI( HdrVividDynamicMetadataHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HdrVividDynamicMetadataHUAWEI( VkHdrVividDynamicMetadataHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + : HdrVividDynamicMetadataHUAWEI( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + HdrVividDynamicMetadataHUAWEI( ArrayProxyNoTemporaries const & dynamicMetadata_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), dynamicMetadataSize( dynamicMetadata_.size() * sizeof( T ) ), pDynamicMetadata( dynamicMetadata_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + HdrVividDynamicMetadataHUAWEI & operator=( HdrVividDynamicMetadataHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + HdrVividDynamicMetadataHUAWEI & operator=( VkHdrVividDynamicMetadataHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 HdrVividDynamicMetadataHUAWEI & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrVividDynamicMetadataHUAWEI && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HdrVividDynamicMetadataHUAWEI & setDynamicMetadataSize( size_t dynamicMetadataSize_ ) & VULKAN_HPP_NOEXCEPT + { + dynamicMetadataSize = dynamicMetadataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrVividDynamicMetadataHUAWEI && setDynamicMetadataSize( size_t dynamicMetadataSize_ ) && VULKAN_HPP_NOEXCEPT + { + dynamicMetadataSize = dynamicMetadataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HdrVividDynamicMetadataHUAWEI & setPDynamicMetadata( void const * pDynamicMetadata_ ) & VULKAN_HPP_NOEXCEPT + { + pDynamicMetadata = pDynamicMetadata_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HdrVividDynamicMetadataHUAWEI && setPDynamicMetadata( void const * pDynamicMetadata_ ) && VULKAN_HPP_NOEXCEPT + { + pDynamicMetadata = pDynamicMetadata_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + HdrVividDynamicMetadataHUAWEI & setDynamicMetadata( ArrayProxyNoTemporaries const & dynamicMetadata_ ) VULKAN_HPP_NOEXCEPT + { + dynamicMetadataSize = dynamicMetadata_.size() * sizeof( T ); + pDynamicMetadata = dynamicMetadata_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkHdrVividDynamicMetadataHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHdrVividDynamicMetadataHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHdrVividDynamicMetadataHUAWEI const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkHdrVividDynamicMetadataHUAWEI *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dynamicMetadataSize, pDynamicMetadata ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( HdrVividDynamicMetadataHUAWEI const & ) const = default; +#else + bool operator==( HdrVividDynamicMetadataHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicMetadataSize == rhs.dynamicMetadataSize ) && + ( pDynamicMetadata == rhs.pDynamicMetadata ); +# endif + } + + bool operator!=( HdrVividDynamicMetadataHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eHdrVividDynamicMetadataHUAWEI; + void const * pNext = {}; + size_t dynamicMetadataSize = {}; + void const * pDynamicMetadata = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = HdrVividDynamicMetadataHUAWEI; + }; +#endif + + template <> + struct CppType + { + using Type = HdrVividDynamicMetadataHUAWEI; + }; + + // wrapper struct for struct VkHeadlessSurfaceCreateInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkHeadlessSurfaceCreateInfoEXT.html + struct HeadlessSurfaceCreateInfoEXT + { + using NativeType = VkHeadlessSurfaceCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHeadlessSurfaceCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( HeadlessSurfaceCreateFlagsEXT flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : HeadlessSurfaceCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + HeadlessSurfaceCreateInfoEXT & operator=( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + HeadlessSurfaceCreateInfoEXT & operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & setFlags( HeadlessSurfaceCreateFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT && setFlags( HeadlessSurfaceCreateFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkHeadlessSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHeadlessSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHeadlessSurfaceCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkHeadlessSurfaceCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( HeadlessSurfaceCreateInfoEXT const & ) const = default; +#else + bool operator==( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( HeadlessSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eHeadlessSurfaceCreateInfoEXT; + void const * pNext = {}; + HeadlessSurfaceCreateFlagsEXT flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = HeadlessSurfaceCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = HeadlessSurfaceCreateInfoEXT; + }; + + // wrapper struct for struct VkHostAddressRangeConstEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkHostAddressRangeConstEXT.html + struct HostAddressRangeConstEXT + { + using NativeType = VkHostAddressRangeConstEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR HostAddressRangeConstEXT( void const * address_ = {}, size_t size_ = {} ) VULKAN_HPP_NOEXCEPT + : address{ address_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR HostAddressRangeConstEXT( HostAddressRangeConstEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HostAddressRangeConstEXT( VkHostAddressRangeConstEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : HostAddressRangeConstEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + HostAddressRangeConstEXT( ArrayProxyNoTemporaries const & address_ ) : address( address_.data() ), size( address_.size() * sizeof( T ) ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + HostAddressRangeConstEXT & operator=( HostAddressRangeConstEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + HostAddressRangeConstEXT & operator=( VkHostAddressRangeConstEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 HostAddressRangeConstEXT & setAddress( void const * address_ ) & VULKAN_HPP_NOEXCEPT + { + address = address_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HostAddressRangeConstEXT && setAddress( void const * address_ ) && VULKAN_HPP_NOEXCEPT + { + address = address_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + HostAddressRangeConstEXT & setAddress( ArrayProxyNoTemporaries const & address_ ) VULKAN_HPP_NOEXCEPT + { + size = address_.size() * sizeof( T ); + address = address_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 HostAddressRangeConstEXT & setSize( size_t size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HostAddressRangeConstEXT && setSize( size_t size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkHostAddressRangeConstEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHostAddressRangeConstEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHostAddressRangeConstEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkHostAddressRangeConstEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( address, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( HostAddressRangeConstEXT const & ) const = default; +#else + bool operator==( HostAddressRangeConstEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( address == rhs.address ) && ( size == rhs.size ); +# endif + } + + bool operator!=( HostAddressRangeConstEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + void const * address = {}; + size_t size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = HostAddressRangeConstEXT; + }; +#endif + + // wrapper struct for struct VkHostAddressRangeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkHostAddressRangeEXT.html + struct HostAddressRangeEXT + { + using NativeType = VkHostAddressRangeEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR HostAddressRangeEXT( void * address_ = {}, size_t size_ = {} ) VULKAN_HPP_NOEXCEPT + : address{ address_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR HostAddressRangeEXT( HostAddressRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HostAddressRangeEXT( VkHostAddressRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT : HostAddressRangeEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + HostAddressRangeEXT( ArrayProxyNoTemporaries const & address_ ) : address( address_.data() ), size( address_.size() * sizeof( T ) ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + HostAddressRangeEXT & operator=( HostAddressRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + HostAddressRangeEXT & operator=( VkHostAddressRangeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 HostAddressRangeEXT & setAddress( void * address_ ) & VULKAN_HPP_NOEXCEPT + { + address = address_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HostAddressRangeEXT && setAddress( void * address_ ) && VULKAN_HPP_NOEXCEPT + { + address = address_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + HostAddressRangeEXT & setAddress( ArrayProxyNoTemporaries const & address_ ) VULKAN_HPP_NOEXCEPT + { + size = address_.size() * sizeof( T ); + address = address_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 HostAddressRangeEXT & setSize( size_t size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HostAddressRangeEXT && setSize( size_t size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkHostAddressRangeEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHostAddressRangeEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHostAddressRangeEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkHostAddressRangeEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( address, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( HostAddressRangeEXT const & ) const = default; +#else + bool operator==( HostAddressRangeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( address == rhs.address ) && ( size == rhs.size ); +# endif + } + + bool operator!=( HostAddressRangeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + void * address = {}; + size_t size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = HostAddressRangeEXT; + }; +#endif + + // wrapper struct for struct VkHostImageCopyDevicePerformanceQuery, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkHostImageCopyDevicePerformanceQuery.html + struct HostImageCopyDevicePerformanceQuery + { + using NativeType = VkHostImageCopyDevicePerformanceQuery; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHostImageCopyDevicePerformanceQuery; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + HostImageCopyDevicePerformanceQuery( Bool32 optimalDeviceAccess_ = {}, Bool32 identicalMemoryLayout_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , optimalDeviceAccess{ optimalDeviceAccess_ } + , identicalMemoryLayout{ identicalMemoryLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR HostImageCopyDevicePerformanceQuery( HostImageCopyDevicePerformanceQuery const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HostImageCopyDevicePerformanceQuery( VkHostImageCopyDevicePerformanceQuery const & rhs ) VULKAN_HPP_NOEXCEPT + : HostImageCopyDevicePerformanceQuery( *reinterpret_cast( &rhs ) ) + { + } + + HostImageCopyDevicePerformanceQuery & operator=( HostImageCopyDevicePerformanceQuery const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + HostImageCopyDevicePerformanceQuery & operator=( VkHostImageCopyDevicePerformanceQuery const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkHostImageCopyDevicePerformanceQuery const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHostImageCopyDevicePerformanceQuery &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHostImageCopyDevicePerformanceQuery const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkHostImageCopyDevicePerformanceQuery *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, optimalDeviceAccess, identicalMemoryLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( HostImageCopyDevicePerformanceQuery const & ) const = default; +#else + bool operator==( HostImageCopyDevicePerformanceQuery const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( optimalDeviceAccess == rhs.optimalDeviceAccess ) && + ( identicalMemoryLayout == rhs.identicalMemoryLayout ); +# endif + } + + bool operator!=( HostImageCopyDevicePerformanceQuery const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eHostImageCopyDevicePerformanceQuery; + void * pNext = {}; + Bool32 optimalDeviceAccess = {}; + Bool32 identicalMemoryLayout = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = HostImageCopyDevicePerformanceQuery; + }; +#endif + + template <> + struct CppType + { + using Type = HostImageCopyDevicePerformanceQuery; + }; + + using HostImageCopyDevicePerformanceQueryEXT = HostImageCopyDevicePerformanceQuery; + + // wrapper struct for struct VkHostImageLayoutTransitionInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkHostImageLayoutTransitionInfo.html + struct HostImageLayoutTransitionInfo + { + using NativeType = VkHostImageLayoutTransitionInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHostImageLayoutTransitionInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR HostImageLayoutTransitionInfo( Image image_ = {}, + ImageLayout oldLayout_ = ImageLayout::eUndefined, + ImageLayout newLayout_ = ImageLayout::eUndefined, + ImageSubresourceRange subresourceRange_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image{ image_ } + , oldLayout{ oldLayout_ } + , newLayout{ newLayout_ } + , subresourceRange{ subresourceRange_ } + { + } + + VULKAN_HPP_CONSTEXPR HostImageLayoutTransitionInfo( HostImageLayoutTransitionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + HostImageLayoutTransitionInfo( VkHostImageLayoutTransitionInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : HostImageLayoutTransitionInfo( *reinterpret_cast( &rhs ) ) + { + } + + HostImageLayoutTransitionInfo & operator=( HostImageLayoutTransitionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + HostImageLayoutTransitionInfo & operator=( VkHostImageLayoutTransitionInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo & setOldLayout( ImageLayout oldLayout_ ) & VULKAN_HPP_NOEXCEPT + { + oldLayout = oldLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo && setOldLayout( ImageLayout oldLayout_ ) && VULKAN_HPP_NOEXCEPT + { + oldLayout = oldLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo & setNewLayout( ImageLayout newLayout_ ) & VULKAN_HPP_NOEXCEPT + { + newLayout = newLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo && setNewLayout( ImageLayout newLayout_ ) && VULKAN_HPP_NOEXCEPT + { + newLayout = newLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo & setSubresourceRange( ImageSubresourceRange const & subresourceRange_ ) & VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 HostImageLayoutTransitionInfo && setSubresourceRange( ImageSubresourceRange const & subresourceRange_ ) && VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkHostImageLayoutTransitionInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHostImageLayoutTransitionInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkHostImageLayoutTransitionInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkHostImageLayoutTransitionInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image, oldLayout, newLayout, subresourceRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( HostImageLayoutTransitionInfo const & ) const = default; +#else + bool operator==( HostImageLayoutTransitionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( oldLayout == rhs.oldLayout ) && ( newLayout == rhs.newLayout ) && + ( subresourceRange == rhs.subresourceRange ); +# endif + } + + bool operator!=( HostImageLayoutTransitionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eHostImageLayoutTransitionInfo; + void const * pNext = {}; + Image image = {}; + ImageLayout oldLayout = ImageLayout::eUndefined; + ImageLayout newLayout = ImageLayout::eUndefined; + ImageSubresourceRange subresourceRange = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = HostImageLayoutTransitionInfo; + }; +#endif + + template <> + struct CppType + { + using Type = HostImageLayoutTransitionInfo; + }; + + using HostImageLayoutTransitionInfoEXT = HostImageLayoutTransitionInfo; + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + // wrapper struct for struct VkIOSSurfaceCreateInfoMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkIOSSurfaceCreateInfoMVK.html + struct IOSSurfaceCreateInfoMVK + { + using NativeType = VkIOSSurfaceCreateInfoMVK; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIosSurfaceCreateInfoMVK; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = {}, void const * pView_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pView{ pView_ } + { + } + + VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT + : IOSSurfaceCreateInfoMVK( *reinterpret_cast( &rhs ) ) + { + } + + IOSSurfaceCreateInfoMVK & operator=( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IOSSurfaceCreateInfoMVK & operator=( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setFlags( IOSSurfaceCreateFlagsMVK flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK && setFlags( IOSSurfaceCreateFlagsMVK flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & setPView( void const * pView_ ) & VULKAN_HPP_NOEXCEPT + { + pView = pView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK && setPView( void const * pView_ ) && VULKAN_HPP_NOEXCEPT + { + pView = pView_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIOSSurfaceCreateInfoMVK const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIOSSurfaceCreateInfoMVK &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIOSSurfaceCreateInfoMVK const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIOSSurfaceCreateInfoMVK *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pView ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IOSSurfaceCreateInfoMVK const & ) const = default; +# else + bool operator==( IOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pView == rhs.pView ); +# endif + } + + bool operator!=( IOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eIosSurfaceCreateInfoMVK; + void const * pNext = {}; + IOSSurfaceCreateFlagsMVK flags = {}; + void const * pView = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IOSSurfaceCreateInfoMVK; + }; +# endif + + template <> + struct CppType + { + using Type = IOSSurfaceCreateInfoMVK; + }; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + + // wrapper struct for struct VkImageAlignmentControlCreateInfoMESA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageAlignmentControlCreateInfoMESA.html + struct ImageAlignmentControlCreateInfoMESA + { + using NativeType = VkImageAlignmentControlCreateInfoMESA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageAlignmentControlCreateInfoMESA; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageAlignmentControlCreateInfoMESA( uint32_t maximumRequestedAlignment_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maximumRequestedAlignment{ maximumRequestedAlignment_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageAlignmentControlCreateInfoMESA( ImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageAlignmentControlCreateInfoMESA( VkImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageAlignmentControlCreateInfoMESA( *reinterpret_cast( &rhs ) ) + { + } + + ImageAlignmentControlCreateInfoMESA & operator=( ImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageAlignmentControlCreateInfoMESA & operator=( VkImageAlignmentControlCreateInfoMESA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageAlignmentControlCreateInfoMESA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageAlignmentControlCreateInfoMESA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageAlignmentControlCreateInfoMESA & setMaximumRequestedAlignment( uint32_t maximumRequestedAlignment_ ) & VULKAN_HPP_NOEXCEPT + { + maximumRequestedAlignment = maximumRequestedAlignment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageAlignmentControlCreateInfoMESA && setMaximumRequestedAlignment( uint32_t maximumRequestedAlignment_ ) && VULKAN_HPP_NOEXCEPT + { + maximumRequestedAlignment = maximumRequestedAlignment_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageAlignmentControlCreateInfoMESA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageAlignmentControlCreateInfoMESA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageAlignmentControlCreateInfoMESA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageAlignmentControlCreateInfoMESA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maximumRequestedAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageAlignmentControlCreateInfoMESA const & ) const = default; +#else + bool operator==( ImageAlignmentControlCreateInfoMESA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maximumRequestedAlignment == rhs.maximumRequestedAlignment ); +# endif + } + + bool operator!=( ImageAlignmentControlCreateInfoMESA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageAlignmentControlCreateInfoMESA; + void const * pNext = {}; + uint32_t maximumRequestedAlignment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageAlignmentControlCreateInfoMESA; + }; +#endif + + template <> + struct CppType + { + using Type = ImageAlignmentControlCreateInfoMESA; + }; + + // wrapper struct for struct VkImageBlit, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageBlit.html + struct ImageBlit + { + using NativeType = VkImageBlit; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 ImageBlit( ImageSubresourceLayers srcSubresource_ = {}, + std::array const & srcOffsets_ = {}, + ImageSubresourceLayers dstSubresource_ = {}, + std::array const & dstOffsets_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubresource{ srcSubresource_ } + , srcOffsets{ srcOffsets_ } + , dstSubresource{ dstSubresource_ } + , dstOffsets{ dstOffsets_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageBlit( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT : ImageBlit( *reinterpret_cast( &rhs ) ) {} + + ImageBlit & operator=( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageBlit & operator=( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageBlit & setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit && setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit & setSrcOffsets( std::array const & srcOffsets_ ) & VULKAN_HPP_NOEXCEPT + { + srcOffsets = srcOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit && setSrcOffsets( std::array const & srcOffsets_ ) && VULKAN_HPP_NOEXCEPT + { + srcOffsets = srcOffsets_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit & setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit && setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit & setDstOffsets( std::array const & dstOffsets_ ) & VULKAN_HPP_NOEXCEPT + { + dstOffsets = dstOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageBlit && setDstOffsets( std::array const & dstOffsets_ ) && VULKAN_HPP_NOEXCEPT + { + dstOffsets = dstOffsets_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageBlit const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageBlit &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageBlit const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageBlit *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, ImageSubresourceLayers const &, ArrayWrapper1D const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcSubresource, srcOffsets, dstSubresource, dstOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageBlit const & ) const = default; +#else + bool operator==( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcSubresource == rhs.srcSubresource ) && ( srcOffsets == rhs.srcOffsets ) && ( dstSubresource == rhs.dstSubresource ) && + ( dstOffsets == rhs.dstOffsets ); +# endif + } + + bool operator!=( ImageBlit const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ImageSubresourceLayers srcSubresource = {}; + ArrayWrapper1D srcOffsets = {}; + ImageSubresourceLayers dstSubresource = {}; + ArrayWrapper1D dstOffsets = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageBlit; + }; +#endif + + // wrapper struct for struct VkImageCaptureDescriptorDataInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCaptureDescriptorDataInfoEXT.html + struct ImageCaptureDescriptorDataInfoEXT + { + using NativeType = VkImageCaptureDescriptorDataInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCaptureDescriptorDataInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageCaptureDescriptorDataInfoEXT( Image image_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image{ image_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageCaptureDescriptorDataInfoEXT( ImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCaptureDescriptorDataInfoEXT( VkImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageCaptureDescriptorDataInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImageCaptureDescriptorDataInfoEXT & operator=( ImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageCaptureDescriptorDataInfoEXT & operator=( VkImageCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageCaptureDescriptorDataInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCaptureDescriptorDataInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCaptureDescriptorDataInfoEXT & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCaptureDescriptorDataInfoEXT && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCaptureDescriptorDataInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageCaptureDescriptorDataInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageCaptureDescriptorDataInfoEXT const & ) const = default; +#else + bool operator==( ImageCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ); +# endif + } + + bool operator!=( ImageCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageCaptureDescriptorDataInfoEXT; + void const * pNext = {}; + Image image = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageCaptureDescriptorDataInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageCaptureDescriptorDataInfoEXT; + }; + + // wrapper struct for struct VkImageCompressionControlEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCompressionControlEXT.html + struct ImageCompressionControlEXT + { + using NativeType = VkImageCompressionControlEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCompressionControlEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageCompressionControlEXT( ImageCompressionFlagsEXT flags_ = {}, + uint32_t compressionControlPlaneCount_ = {}, + ImageCompressionFixedRateFlagsEXT * pFixedRateFlags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , compressionControlPlaneCount{ compressionControlPlaneCount_ } + , pFixedRateFlags{ pFixedRateFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageCompressionControlEXT( ImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCompressionControlEXT( VkImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageCompressionControlEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageCompressionControlEXT( ImageCompressionFlagsEXT flags_, + ArrayProxyNoTemporaries const & fixedRateFlags_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , compressionControlPlaneCount( static_cast( fixedRateFlags_.size() ) ) + , pFixedRateFlags( fixedRateFlags_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ImageCompressionControlEXT & operator=( ImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageCompressionControlEXT & operator=( VkImageCompressionControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT & setFlags( ImageCompressionFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT && setFlags( ImageCompressionFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT & setCompressionControlPlaneCount( uint32_t compressionControlPlaneCount_ ) & VULKAN_HPP_NOEXCEPT + { + compressionControlPlaneCount = compressionControlPlaneCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT && setCompressionControlPlaneCount( uint32_t compressionControlPlaneCount_ ) && VULKAN_HPP_NOEXCEPT + { + compressionControlPlaneCount = compressionControlPlaneCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT & setPFixedRateFlags( ImageCompressionFixedRateFlagsEXT * pFixedRateFlags_ ) & VULKAN_HPP_NOEXCEPT + { + pFixedRateFlags = pFixedRateFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCompressionControlEXT && setPFixedRateFlags( ImageCompressionFixedRateFlagsEXT * pFixedRateFlags_ ) && VULKAN_HPP_NOEXCEPT + { + pFixedRateFlags = pFixedRateFlags_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageCompressionControlEXT & setFixedRateFlags( ArrayProxyNoTemporaries const & fixedRateFlags_ ) VULKAN_HPP_NOEXCEPT + { + compressionControlPlaneCount = static_cast( fixedRateFlags_.size() ); + pFixedRateFlags = fixedRateFlags_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageCompressionControlEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCompressionControlEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCompressionControlEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageCompressionControlEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, compressionControlPlaneCount, pFixedRateFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageCompressionControlEXT const & ) const = default; +#else + bool operator==( ImageCompressionControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( compressionControlPlaneCount == rhs.compressionControlPlaneCount ) && ( pFixedRateFlags == rhs.pFixedRateFlags ); +# endif + } + + bool operator!=( ImageCompressionControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageCompressionControlEXT; + void const * pNext = {}; + ImageCompressionFlagsEXT flags = {}; + uint32_t compressionControlPlaneCount = {}; + ImageCompressionFixedRateFlagsEXT * pFixedRateFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageCompressionControlEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageCompressionControlEXT; + }; + + // wrapper struct for struct VkImageCompressionPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCompressionPropertiesEXT.html + struct ImageCompressionPropertiesEXT + { + using NativeType = VkImageCompressionPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCompressionPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageCompressionPropertiesEXT( ImageCompressionFlagsEXT imageCompressionFlags_ = {}, + ImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageCompressionFlags{ imageCompressionFlags_ } + , imageCompressionFixedRateFlags{ imageCompressionFixedRateFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageCompressionPropertiesEXT( ImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCompressionPropertiesEXT( VkImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageCompressionPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImageCompressionPropertiesEXT & operator=( ImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageCompressionPropertiesEXT & operator=( VkImageCompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkImageCompressionPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCompressionPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCompressionPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageCompressionPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageCompressionFlags, imageCompressionFixedRateFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageCompressionPropertiesEXT const & ) const = default; +#else + bool operator==( ImageCompressionPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCompressionFlags == rhs.imageCompressionFlags ) && + ( imageCompressionFixedRateFlags == rhs.imageCompressionFixedRateFlags ); +# endif + } + + bool operator!=( ImageCompressionPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageCompressionPropertiesEXT; + void * pNext = {}; + ImageCompressionFlagsEXT imageCompressionFlags = {}; + ImageCompressionFixedRateFlagsEXT imageCompressionFixedRateFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageCompressionPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageCompressionPropertiesEXT; + }; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkImageFormatConstraintsInfoFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageFormatConstraintsInfoFUCHSIA.html + struct ImageFormatConstraintsInfoFUCHSIA + { + using NativeType = VkImageFormatConstraintsInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageFormatConstraintsInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageFormatConstraintsInfoFUCHSIA( ImageCreateInfo imageCreateInfo_ = {}, + FormatFeatureFlags requiredFormatFeatures_ = {}, + ImageFormatConstraintsFlagsFUCHSIA flags_ = {}, + uint64_t sysmemPixelFormat_ = {}, + uint32_t colorSpaceCount_ = {}, + SysmemColorSpaceFUCHSIA const * pColorSpaces_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageCreateInfo{ imageCreateInfo_ } + , requiredFormatFeatures{ requiredFormatFeatures_ } + , flags{ flags_ } + , sysmemPixelFormat{ sysmemPixelFormat_ } + , colorSpaceCount{ colorSpaceCount_ } + , pColorSpaces{ pColorSpaces_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageFormatConstraintsInfoFUCHSIA( ImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatConstraintsInfoFUCHSIA( VkImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageFormatConstraintsInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageFormatConstraintsInfoFUCHSIA( ImageCreateInfo imageCreateInfo_, + FormatFeatureFlags requiredFormatFeatures_, + ImageFormatConstraintsFlagsFUCHSIA flags_, + uint64_t sysmemPixelFormat_, + ArrayProxyNoTemporaries const & colorSpaces_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , imageCreateInfo( imageCreateInfo_ ) + , requiredFormatFeatures( requiredFormatFeatures_ ) + , flags( flags_ ) + , sysmemPixelFormat( sysmemPixelFormat_ ) + , colorSpaceCount( static_cast( colorSpaces_.size() ) ) + , pColorSpaces( colorSpaces_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ImageFormatConstraintsInfoFUCHSIA & operator=( ImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageFormatConstraintsInfoFUCHSIA & operator=( VkImageFormatConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setImageCreateInfo( ImageCreateInfo const & imageCreateInfo_ ) & VULKAN_HPP_NOEXCEPT + { + imageCreateInfo = imageCreateInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA && setImageCreateInfo( ImageCreateInfo const & imageCreateInfo_ ) && VULKAN_HPP_NOEXCEPT + { + imageCreateInfo = imageCreateInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setRequiredFormatFeatures( FormatFeatureFlags requiredFormatFeatures_ ) & VULKAN_HPP_NOEXCEPT + { + requiredFormatFeatures = requiredFormatFeatures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA && setRequiredFormatFeatures( FormatFeatureFlags requiredFormatFeatures_ ) && VULKAN_HPP_NOEXCEPT + { + requiredFormatFeatures = requiredFormatFeatures_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setFlags( ImageFormatConstraintsFlagsFUCHSIA flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA && setFlags( ImageFormatConstraintsFlagsFUCHSIA flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setSysmemPixelFormat( uint64_t sysmemPixelFormat_ ) & VULKAN_HPP_NOEXCEPT + { + sysmemPixelFormat = sysmemPixelFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA && setSysmemPixelFormat( uint64_t sysmemPixelFormat_ ) && VULKAN_HPP_NOEXCEPT + { + sysmemPixelFormat = sysmemPixelFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setColorSpaceCount( uint32_t colorSpaceCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorSpaceCount = colorSpaceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA && setColorSpaceCount( uint32_t colorSpaceCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorSpaceCount = colorSpaceCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA & setPColorSpaces( SysmemColorSpaceFUCHSIA const * pColorSpaces_ ) & VULKAN_HPP_NOEXCEPT + { + pColorSpaces = pColorSpaces_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatConstraintsInfoFUCHSIA && setPColorSpaces( SysmemColorSpaceFUCHSIA const * pColorSpaces_ ) && VULKAN_HPP_NOEXCEPT + { + pColorSpaces = pColorSpaces_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageFormatConstraintsInfoFUCHSIA & setColorSpaces( ArrayProxyNoTemporaries const & colorSpaces_ ) VULKAN_HPP_NOEXCEPT + { + colorSpaceCount = static_cast( colorSpaces_.size() ); + pColorSpaces = colorSpaces_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageFormatConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageFormatConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageFormatConstraintsInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageFormatConstraintsInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageCreateInfo, requiredFormatFeatures, flags, sysmemPixelFormat, colorSpaceCount, pColorSpaces ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageFormatConstraintsInfoFUCHSIA const & ) const = default; +# else + bool operator==( ImageFormatConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCreateInfo == rhs.imageCreateInfo ) && + ( requiredFormatFeatures == rhs.requiredFormatFeatures ) && ( flags == rhs.flags ) && ( sysmemPixelFormat == rhs.sysmemPixelFormat ) && + ( colorSpaceCount == rhs.colorSpaceCount ) && ( pColorSpaces == rhs.pColorSpaces ); +# endif + } + + bool operator!=( ImageFormatConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImageFormatConstraintsInfoFUCHSIA; + void const * pNext = {}; + ImageCreateInfo imageCreateInfo = {}; + FormatFeatureFlags requiredFormatFeatures = {}; + ImageFormatConstraintsFlagsFUCHSIA flags = {}; + uint64_t sysmemPixelFormat = {}; + uint32_t colorSpaceCount = {}; + SysmemColorSpaceFUCHSIA const * pColorSpaces = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageFormatConstraintsInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = ImageFormatConstraintsInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkImageConstraintsInfoFUCHSIA, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageConstraintsInfoFUCHSIA.html + struct ImageConstraintsInfoFUCHSIA + { + using NativeType = VkImageConstraintsInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageConstraintsInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFUCHSIA( uint32_t formatConstraintsCount_ = {}, + ImageFormatConstraintsInfoFUCHSIA const * pFormatConstraints_ = {}, + BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints_ = {}, + ImageConstraintsInfoFlagsFUCHSIA flags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , formatConstraintsCount{ formatConstraintsCount_ } + , pFormatConstraints{ pFormatConstraints_ } + , bufferCollectionConstraints{ bufferCollectionConstraints_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageConstraintsInfoFUCHSIA( ImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageConstraintsInfoFUCHSIA( VkImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageConstraintsInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageConstraintsInfoFUCHSIA( ArrayProxyNoTemporaries const & formatConstraints_, + BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints_ = {}, + ImageConstraintsInfoFlagsFUCHSIA flags_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , formatConstraintsCount( static_cast( formatConstraints_.size() ) ) + , pFormatConstraints( formatConstraints_.data() ) + , bufferCollectionConstraints( bufferCollectionConstraints_ ) + , flags( flags_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ImageConstraintsInfoFUCHSIA & operator=( ImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageConstraintsInfoFUCHSIA & operator=( VkImageConstraintsInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setFormatConstraintsCount( uint32_t formatConstraintsCount_ ) & VULKAN_HPP_NOEXCEPT + { + formatConstraintsCount = formatConstraintsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA && setFormatConstraintsCount( uint32_t formatConstraintsCount_ ) && VULKAN_HPP_NOEXCEPT + { + formatConstraintsCount = formatConstraintsCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setPFormatConstraints( ImageFormatConstraintsInfoFUCHSIA const * pFormatConstraints_ ) & + VULKAN_HPP_NOEXCEPT + { + pFormatConstraints = pFormatConstraints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA && setPFormatConstraints( ImageFormatConstraintsInfoFUCHSIA const * pFormatConstraints_ ) && + VULKAN_HPP_NOEXCEPT + { + pFormatConstraints = pFormatConstraints_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageConstraintsInfoFUCHSIA & + setFormatConstraints( ArrayProxyNoTemporaries const & formatConstraints_ ) VULKAN_HPP_NOEXCEPT + { + formatConstraintsCount = static_cast( formatConstraints_.size() ); + pFormatConstraints = formatConstraints_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & + setBufferCollectionConstraints( BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ ) & + VULKAN_HPP_NOEXCEPT + { + bufferCollectionConstraints = bufferCollectionConstraints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA && + setBufferCollectionConstraints( BufferCollectionConstraintsInfoFUCHSIA const & bufferCollectionConstraints_ ) && + VULKAN_HPP_NOEXCEPT + { + bufferCollectionConstraints = bufferCollectionConstraints_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA & setFlags( ImageConstraintsInfoFlagsFUCHSIA flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageConstraintsInfoFUCHSIA && setFlags( ImageConstraintsInfoFlagsFUCHSIA flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageConstraintsInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageConstraintsInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageConstraintsInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageConstraintsInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, formatConstraintsCount, pFormatConstraints, bufferCollectionConstraints, flags ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageConstraintsInfoFUCHSIA const & ) const = default; +# else + bool operator==( ImageConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatConstraintsCount == rhs.formatConstraintsCount ) && + ( pFormatConstraints == rhs.pFormatConstraints ) && ( bufferCollectionConstraints == rhs.bufferCollectionConstraints ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( ImageConstraintsInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImageConstraintsInfoFUCHSIA; + void const * pNext = {}; + uint32_t formatConstraintsCount = {}; + ImageFormatConstraintsInfoFUCHSIA const * pFormatConstraints = {}; + BufferCollectionConstraintsInfoFUCHSIA bufferCollectionConstraints = {}; + ImageConstraintsInfoFlagsFUCHSIA flags = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageConstraintsInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = ImageConstraintsInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + // wrapper struct for struct VkImageCopy, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageCopy.html + struct ImageCopy + { + using NativeType = VkImageCopy; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageCopy( ImageSubresourceLayers srcSubresource_ = {}, + Offset3D srcOffset_ = {}, + ImageSubresourceLayers dstSubresource_ = {}, + Offset3D dstOffset_ = {}, + Extent3D extent_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubresource{ srcSubresource_ } + , srcOffset{ srcOffset_ } + , dstSubresource{ dstSubresource_ } + , dstOffset{ dstOffset_ } + , extent{ extent_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageCopy( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageCopy( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT : ImageCopy( *reinterpret_cast( &rhs ) ) {} + + ImageCopy & operator=( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageCopy & operator=( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageCopy & setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy && setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy & setSrcOffset( Offset3D const & srcOffset_ ) & VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy && setSrcOffset( Offset3D const & srcOffset_ ) && VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy & setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy && setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy & setDstOffset( Offset3D const & dstOffset_ ) & VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy && setDstOffset( Offset3D const & dstOffset_ ) && VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy & setExtent( Extent3D const & extent_ ) & VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageCopy && setExtent( Extent3D const & extent_ ) && VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageCopy const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCopy &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageCopy const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageCopy *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageCopy const & ) const = default; +#else + bool operator==( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) && ( dstSubresource == rhs.dstSubresource ) && + ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent ); +# endif + } + + bool operator!=( ImageCopy const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ImageSubresourceLayers srcSubresource = {}; + Offset3D srcOffset = {}; + ImageSubresourceLayers dstSubresource = {}; + Offset3D dstOffset = {}; + Extent3D extent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageCopy; + }; +#endif + + // wrapper struct for struct VkImageViewCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewCreateInfo.html + struct ImageViewCreateInfo + { + using NativeType = VkImageViewCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewCreateInfo( ImageViewCreateFlags flags_ = {}, + Image image_ = {}, + ImageViewType viewType_ = ImageViewType::e1D, + Format format_ = Format::eUndefined, + ComponentMapping components_ = {}, + ImageSubresourceRange subresourceRange_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , image{ image_ } + , viewType{ viewType_ } + , format{ format_ } + , components{ components_ } + , subresourceRange{ subresourceRange_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageViewCreateInfo( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewCreateInfo( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ImageViewCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + ImageViewCreateInfo & operator=( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageViewCreateInfo & operator=( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setFlags( ImageViewCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo && setFlags( ImageViewCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setViewType( ImageViewType viewType_ ) & VULKAN_HPP_NOEXCEPT + { + viewType = viewType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo && setViewType( ImageViewType viewType_ ) && VULKAN_HPP_NOEXCEPT + { + viewType = viewType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setComponents( ComponentMapping const & components_ ) & VULKAN_HPP_NOEXCEPT + { + components = components_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo && setComponents( ComponentMapping const & components_ ) && VULKAN_HPP_NOEXCEPT + { + components = components_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & setSubresourceRange( ImageSubresourceRange const & subresourceRange_ ) & VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo && setSubresourceRange( ImageSubresourceRange const & subresourceRange_ ) && VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageViewCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageViewCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, image, viewType, format, components, subresourceRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewCreateInfo const & ) const = default; +#else + bool operator==( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( image == rhs.image ) && ( viewType == rhs.viewType ) && + ( format == rhs.format ) && ( components == rhs.components ) && ( subresourceRange == rhs.subresourceRange ); +# endif + } + + bool operator!=( ImageViewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageViewCreateInfo; + void const * pNext = {}; + ImageViewCreateFlags flags = {}; + Image image = {}; + ImageViewType viewType = ImageViewType::e1D; + Format format = Format::eUndefined; + ComponentMapping components = {}; + ImageSubresourceRange subresourceRange = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageViewCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ImageViewCreateInfo; + }; + + // wrapper struct for struct VkImageDescriptorInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageDescriptorInfoEXT.html + struct ImageDescriptorInfoEXT + { + using NativeType = VkImageDescriptorInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageDescriptorInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageDescriptorInfoEXT( ImageViewCreateInfo const * pView_ = {}, + ImageLayout layout_ = ImageLayout::eUndefined, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pView{ pView_ } + , layout{ layout_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageDescriptorInfoEXT( ImageDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageDescriptorInfoEXT( VkImageDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageDescriptorInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImageDescriptorInfoEXT & operator=( ImageDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageDescriptorInfoEXT & operator=( VkImageDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageDescriptorInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDescriptorInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageDescriptorInfoEXT & setPView( ImageViewCreateInfo const * pView_ ) & VULKAN_HPP_NOEXCEPT + { + pView = pView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDescriptorInfoEXT && setPView( ImageViewCreateInfo const * pView_ ) && VULKAN_HPP_NOEXCEPT + { + pView = pView_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageDescriptorInfoEXT & setLayout( ImageLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDescriptorInfoEXT && setLayout( ImageLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageDescriptorInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageDescriptorInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageDescriptorInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageDescriptorInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pView, layout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageDescriptorInfoEXT const & ) const = default; +#else + bool operator==( ImageDescriptorInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pView == rhs.pView ) && ( layout == rhs.layout ); +# endif + } + + bool operator!=( ImageDescriptorInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageDescriptorInfoEXT; + void const * pNext = {}; + ImageViewCreateInfo const * pView = {}; + ImageLayout layout = ImageLayout::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageDescriptorInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageDescriptorInfoEXT; + }; + + // wrapper struct for struct VkSubresourceLayout, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubresourceLayout.html + struct SubresourceLayout + { + using NativeType = VkSubresourceLayout; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubresourceLayout( + DeviceSize offset_ = {}, DeviceSize size_ = {}, DeviceSize rowPitch_ = {}, DeviceSize arrayPitch_ = {}, DeviceSize depthPitch_ = {} ) VULKAN_HPP_NOEXCEPT + : offset{ offset_ } + , size{ size_ } + , rowPitch{ rowPitch_ } + , arrayPitch{ arrayPitch_ } + , depthPitch{ depthPitch_ } + { + } + + VULKAN_HPP_CONSTEXPR SubresourceLayout( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubresourceLayout( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT : SubresourceLayout( *reinterpret_cast( &rhs ) ) {} + + SubresourceLayout & operator=( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubresourceLayout & operator=( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubresourceLayout && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubresourceLayout && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setRowPitch( DeviceSize rowPitch_ ) & VULKAN_HPP_NOEXCEPT + { + rowPitch = rowPitch_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubresourceLayout && setRowPitch( DeviceSize rowPitch_ ) && VULKAN_HPP_NOEXCEPT + { + rowPitch = rowPitch_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setArrayPitch( DeviceSize arrayPitch_ ) & VULKAN_HPP_NOEXCEPT + { + arrayPitch = arrayPitch_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubresourceLayout && setArrayPitch( DeviceSize arrayPitch_ ) && VULKAN_HPP_NOEXCEPT + { + arrayPitch = arrayPitch_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & setDepthPitch( DeviceSize depthPitch_ ) & VULKAN_HPP_NOEXCEPT + { + depthPitch = depthPitch_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubresourceLayout && setDepthPitch( DeviceSize depthPitch_ ) && VULKAN_HPP_NOEXCEPT + { + depthPitch = depthPitch_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubresourceLayout const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubresourceLayout &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubresourceLayout const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubresourceLayout *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( offset, size, rowPitch, arrayPitch, depthPitch ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubresourceLayout const & ) const = default; +#else + bool operator==( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( offset == rhs.offset ) && ( size == rhs.size ) && ( rowPitch == rhs.rowPitch ) && ( arrayPitch == rhs.arrayPitch ) && + ( depthPitch == rhs.depthPitch ); +# endif + } + + bool operator!=( SubresourceLayout const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceSize offset = {}; + DeviceSize size = {}; + DeviceSize rowPitch = {}; + DeviceSize arrayPitch = {}; + DeviceSize depthPitch = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubresourceLayout; + }; +#endif + + // wrapper struct for struct VkImageDrmFormatModifierExplicitCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageDrmFormatModifierExplicitCreateInfoEXT.html + struct ImageDrmFormatModifierExplicitCreateInfoEXT + { + using NativeType = VkImageDrmFormatModifierExplicitCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT( uint64_t drmFormatModifier_ = {}, + uint32_t drmFormatModifierPlaneCount_ = {}, + SubresourceLayout const * pPlaneLayouts_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , drmFormatModifier{ drmFormatModifier_ } + , drmFormatModifierPlaneCount{ drmFormatModifierPlaneCount_ } + , pPlaneLayouts{ pPlaneLayouts_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageDrmFormatModifierExplicitCreateInfoEXT( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageDrmFormatModifierExplicitCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageDrmFormatModifierExplicitCreateInfoEXT( uint64_t drmFormatModifier_, + ArrayProxyNoTemporaries const & planeLayouts_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , drmFormatModifier( drmFormatModifier_ ) + , drmFormatModifierPlaneCount( static_cast( planeLayouts_.size() ) ) + , pPlaneLayouts( planeLayouts_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) & VULKAN_HPP_NOEXCEPT + { + drmFormatModifier = drmFormatModifier_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT && setDrmFormatModifier( uint64_t drmFormatModifier_ ) && VULKAN_HPP_NOEXCEPT + { + drmFormatModifier = drmFormatModifier_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setDrmFormatModifierPlaneCount( uint32_t drmFormatModifierPlaneCount_ ) & + VULKAN_HPP_NOEXCEPT + { + drmFormatModifierPlaneCount = drmFormatModifierPlaneCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT && setDrmFormatModifierPlaneCount( uint32_t drmFormatModifierPlaneCount_ ) && + VULKAN_HPP_NOEXCEPT + { + drmFormatModifierPlaneCount = drmFormatModifierPlaneCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & setPPlaneLayouts( SubresourceLayout const * pPlaneLayouts_ ) & VULKAN_HPP_NOEXCEPT + { + pPlaneLayouts = pPlaneLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT && setPPlaneLayouts( SubresourceLayout const * pPlaneLayouts_ ) && VULKAN_HPP_NOEXCEPT + { + pPlaneLayouts = pPlaneLayouts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageDrmFormatModifierExplicitCreateInfoEXT & setPlaneLayouts( ArrayProxyNoTemporaries const & planeLayouts_ ) VULKAN_HPP_NOEXCEPT + { + drmFormatModifierPlaneCount = static_cast( planeLayouts_.size() ); + pPlaneLayouts = planeLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageDrmFormatModifierExplicitCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageDrmFormatModifierExplicitCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageDrmFormatModifierExplicitCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageDrmFormatModifierExplicitCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifier, drmFormatModifierPlaneCount, pPlaneLayouts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageDrmFormatModifierExplicitCreateInfoEXT const & ) const = default; +#else + bool operator==( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier ) && + ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) && ( pPlaneLayouts == rhs.pPlaneLayouts ); +# endif + } + + bool operator!=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT; + void const * pNext = {}; + uint64_t drmFormatModifier = {}; + uint32_t drmFormatModifierPlaneCount = {}; + SubresourceLayout const * pPlaneLayouts = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageDrmFormatModifierExplicitCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageDrmFormatModifierExplicitCreateInfoEXT; + }; + + // wrapper struct for struct VkImageDrmFormatModifierListCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageDrmFormatModifierListCreateInfoEXT.html + struct ImageDrmFormatModifierListCreateInfoEXT + { + using NativeType = VkImageDrmFormatModifierListCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageDrmFormatModifierListCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT( uint32_t drmFormatModifierCount_ = {}, + uint64_t const * pDrmFormatModifiers_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , drmFormatModifierCount{ drmFormatModifierCount_ } + , pDrmFormatModifiers{ pDrmFormatModifiers_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageDrmFormatModifierListCreateInfoEXT( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageDrmFormatModifierListCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageDrmFormatModifierListCreateInfoEXT( ArrayProxyNoTemporaries const & drmFormatModifiers_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), drmFormatModifierCount( static_cast( drmFormatModifiers_.size() ) ), pDrmFormatModifiers( drmFormatModifiers_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ImageDrmFormatModifierListCreateInfoEXT & operator=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageDrmFormatModifierListCreateInfoEXT & operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ ) & VULKAN_HPP_NOEXCEPT + { + drmFormatModifierCount = drmFormatModifierCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT && setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ ) && VULKAN_HPP_NOEXCEPT + { + drmFormatModifierCount = drmFormatModifierCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & setPDrmFormatModifiers( uint64_t const * pDrmFormatModifiers_ ) & VULKAN_HPP_NOEXCEPT + { + pDrmFormatModifiers = pDrmFormatModifiers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT && setPDrmFormatModifiers( uint64_t const * pDrmFormatModifiers_ ) && VULKAN_HPP_NOEXCEPT + { + pDrmFormatModifiers = pDrmFormatModifiers_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifiers( ArrayProxyNoTemporaries const & drmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT + { + drmFormatModifierCount = static_cast( drmFormatModifiers_.size() ); + pDrmFormatModifiers = drmFormatModifiers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageDrmFormatModifierListCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageDrmFormatModifierListCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageDrmFormatModifierListCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageDrmFormatModifierListCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifierCount, pDrmFormatModifiers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageDrmFormatModifierListCreateInfoEXT const & ) const = default; +#else + bool operator==( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) && + ( pDrmFormatModifiers == rhs.pDrmFormatModifiers ); +# endif + } + + bool operator!=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageDrmFormatModifierListCreateInfoEXT; + void const * pNext = {}; + uint32_t drmFormatModifierCount = {}; + uint64_t const * pDrmFormatModifiers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageDrmFormatModifierListCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageDrmFormatModifierListCreateInfoEXT; + }; + + // wrapper struct for struct VkImageDrmFormatModifierPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageDrmFormatModifierPropertiesEXT.html + struct ImageDrmFormatModifierPropertiesEXT + { + using NativeType = VkImageDrmFormatModifierPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageDrmFormatModifierPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( uint64_t drmFormatModifier_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , drmFormatModifier{ drmFormatModifier_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageDrmFormatModifierPropertiesEXT( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageDrmFormatModifierPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImageDrmFormatModifierPropertiesEXT & operator=( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageDrmFormatModifierPropertiesEXT & operator=( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkImageDrmFormatModifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageDrmFormatModifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageDrmFormatModifierPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageDrmFormatModifierPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifier ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageDrmFormatModifierPropertiesEXT const & ) const = default; +#else + bool operator==( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier ); +# endif + } + + bool operator!=( ImageDrmFormatModifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageDrmFormatModifierPropertiesEXT; + void * pNext = {}; + uint64_t drmFormatModifier = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageDrmFormatModifierPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageDrmFormatModifierPropertiesEXT; + }; + + // wrapper struct for struct VkImageFormatListCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageFormatListCreateInfo.html + struct ImageFormatListCreateInfo + { + using NativeType = VkImageFormatListCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageFormatListCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageFormatListCreateInfo( uint32_t viewFormatCount_ = {}, Format const * pViewFormats_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , viewFormatCount{ viewFormatCount_ } + , pViewFormats{ pViewFormats_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageFormatListCreateInfo( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatListCreateInfo( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageFormatListCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageFormatListCreateInfo( ArrayProxyNoTemporaries const & viewFormats_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), viewFormatCount( static_cast( viewFormats_.size() ) ), pViewFormats( viewFormats_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ImageFormatListCreateInfo & operator=( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageFormatListCreateInfo & operator=( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setViewFormatCount( uint32_t viewFormatCount_ ) & VULKAN_HPP_NOEXCEPT + { + viewFormatCount = viewFormatCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo && setViewFormatCount( uint32_t viewFormatCount_ ) && VULKAN_HPP_NOEXCEPT + { + viewFormatCount = viewFormatCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & setPViewFormats( Format const * pViewFormats_ ) & VULKAN_HPP_NOEXCEPT + { + pViewFormats = pViewFormats_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo && setPViewFormats( Format const * pViewFormats_ ) && VULKAN_HPP_NOEXCEPT + { + pViewFormats = pViewFormats_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ImageFormatListCreateInfo & setViewFormats( ArrayProxyNoTemporaries const & viewFormats_ ) VULKAN_HPP_NOEXCEPT + { + viewFormatCount = static_cast( viewFormats_.size() ); + pViewFormats = viewFormats_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageFormatListCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageFormatListCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageFormatListCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageFormatListCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, viewFormatCount, pViewFormats ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageFormatListCreateInfo const & ) const = default; +#else + bool operator==( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewFormatCount == rhs.viewFormatCount ) && ( pViewFormats == rhs.pViewFormats ); +# endif + } + + bool operator!=( ImageFormatListCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageFormatListCreateInfo; + void const * pNext = {}; + uint32_t viewFormatCount = {}; + Format const * pViewFormats = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageFormatListCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ImageFormatListCreateInfo; + }; + + using ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo; + + // wrapper struct for struct VkImageFormatProperties2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageFormatProperties2.html + struct ImageFormatProperties2 + { + using NativeType = VkImageFormatProperties2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageFormatProperties2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageFormatProperties2( ImageFormatProperties imageFormatProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageFormatProperties{ imageFormatProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageFormatProperties2( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageFormatProperties2( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageFormatProperties2( *reinterpret_cast( &rhs ) ) + { + } + + ImageFormatProperties2 & operator=( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageFormatProperties2 & operator=( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageFormatProperties2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageFormatProperties2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageFormatProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageFormatProperties2 const & ) const = default; +#else + bool operator==( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageFormatProperties == rhs.imageFormatProperties ); +# endif + } + + bool operator!=( ImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageFormatProperties2; + void * pNext = {}; + ImageFormatProperties imageFormatProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageFormatProperties2; + }; +#endif + + template <> + struct CppType + { + using Type = ImageFormatProperties2; + }; + + using ImageFormatProperties2KHR = ImageFormatProperties2; + + // wrapper struct for struct VkImageMemoryBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageMemoryBarrier.html + struct ImageMemoryBarrier + { + using NativeType = VkImageMemoryBarrier; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryBarrier; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageMemoryBarrier( AccessFlags srcAccessMask_ = {}, + AccessFlags dstAccessMask_ = {}, + ImageLayout oldLayout_ = ImageLayout::eUndefined, + ImageLayout newLayout_ = ImageLayout::eUndefined, + uint32_t srcQueueFamilyIndex_ = {}, + uint32_t dstQueueFamilyIndex_ = {}, + Image image_ = {}, + ImageSubresourceRange subresourceRange_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcAccessMask{ srcAccessMask_ } + , dstAccessMask{ dstAccessMask_ } + , oldLayout{ oldLayout_ } + , newLayout{ newLayout_ } + , srcQueueFamilyIndex{ srcQueueFamilyIndex_ } + , dstQueueFamilyIndex{ dstQueueFamilyIndex_ } + , image{ image_ } + , subresourceRange{ subresourceRange_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageMemoryBarrier( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageMemoryBarrier( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT : ImageMemoryBarrier( *reinterpret_cast( &rhs ) ) {} + + ImageMemoryBarrier & operator=( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageMemoryBarrier & operator=( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setSrcAccessMask( AccessFlags srcAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier && setSrcAccessMask( AccessFlags srcAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setDstAccessMask( AccessFlags dstAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier && setDstAccessMask( AccessFlags dstAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setOldLayout( ImageLayout oldLayout_ ) & VULKAN_HPP_NOEXCEPT + { + oldLayout = oldLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier && setOldLayout( ImageLayout oldLayout_ ) && VULKAN_HPP_NOEXCEPT + { + oldLayout = oldLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setNewLayout( ImageLayout newLayout_ ) & VULKAN_HPP_NOEXCEPT + { + newLayout = newLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier && setNewLayout( ImageLayout newLayout_ ) && VULKAN_HPP_NOEXCEPT + { + newLayout = newLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier && setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier && setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & setSubresourceRange( ImageSubresourceRange const & subresourceRange_ ) & VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier && setSubresourceRange( ImageSubresourceRange const & subresourceRange_ ) && VULKAN_HPP_NOEXCEPT + { + subresourceRange = subresourceRange_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageMemoryBarrier &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageMemoryBarrier const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageMemoryBarrier *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcAccessMask, dstAccessMask, oldLayout, newLayout, srcQueueFamilyIndex, dstQueueFamilyIndex, image, subresourceRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageMemoryBarrier const & ) const = default; +#else + bool operator==( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ) && + ( oldLayout == rhs.oldLayout ) && ( newLayout == rhs.newLayout ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && + ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( image == rhs.image ) && ( subresourceRange == rhs.subresourceRange ); +# endif + } + + bool operator!=( ImageMemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageMemoryBarrier; + void const * pNext = {}; + AccessFlags srcAccessMask = {}; + AccessFlags dstAccessMask = {}; + ImageLayout oldLayout = ImageLayout::eUndefined; + ImageLayout newLayout = ImageLayout::eUndefined; + uint32_t srcQueueFamilyIndex = {}; + uint32_t dstQueueFamilyIndex = {}; + Image image = {}; + ImageSubresourceRange subresourceRange = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageMemoryBarrier; + }; +#endif + + template <> + struct CppType + { + using Type = ImageMemoryBarrier; + }; + + // wrapper struct for struct VkImageMemoryRequirementsInfo2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageMemoryRequirementsInfo2.html + struct ImageMemoryRequirementsInfo2 + { + using NativeType = VkImageMemoryRequirementsInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryRequirementsInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( Image image_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image{ image_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageMemoryRequirementsInfo2( *reinterpret_cast( &rhs ) ) + { + } + + ImageMemoryRequirementsInfo2 & operator=( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageMemoryRequirementsInfo2 & operator=( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageMemoryRequirementsInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageMemoryRequirementsInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageMemoryRequirementsInfo2 const & ) const = default; +#else + bool operator==( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ); +# endif + } + + bool operator!=( ImageMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageMemoryRequirementsInfo2; + void const * pNext = {}; + Image image = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageMemoryRequirementsInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = ImageMemoryRequirementsInfo2; + }; + + using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2; + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkImagePipeSurfaceCreateInfoFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImagePipeSurfaceCreateInfoFUCHSIA.html + struct ImagePipeSurfaceCreateInfoFUCHSIA + { + using NativeType = VkImagePipeSurfaceCreateInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImagePipeSurfaceCreateInfoFUCHSIA( ImagePipeSurfaceCreateFlagsFUCHSIA flags_ = {}, + zx_handle_t imagePipeHandle_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , imagePipeHandle{ imagePipeHandle_ } + { + } + + VULKAN_HPP_CONSTEXPR ImagePipeSurfaceCreateInfoFUCHSIA( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImagePipeSurfaceCreateInfoFUCHSIA( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImagePipeSurfaceCreateInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + ImagePipeSurfaceCreateInfoFUCHSIA & operator=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImagePipeSurfaceCreateInfoFUCHSIA & operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setFlags( ImagePipeSurfaceCreateFlagsFUCHSIA flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA && setFlags( ImagePipeSurfaceCreateFlagsFUCHSIA flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & setImagePipeHandle( zx_handle_t imagePipeHandle_ ) & VULKAN_HPP_NOEXCEPT + { + imagePipeHandle = imagePipeHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA && setImagePipeHandle( zx_handle_t imagePipeHandle_ ) && VULKAN_HPP_NOEXCEPT + { + imagePipeHandle = imagePipeHandle_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImagePipeSurfaceCreateInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImagePipeSurfaceCreateInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImagePipeSurfaceCreateInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImagePipeSurfaceCreateInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, imagePipeHandle ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &imagePipeHandle, &rhs.imagePipeHandle, sizeof( zx_handle_t ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( memcmp( &imagePipeHandle, &rhs.imagePipeHandle, sizeof( zx_handle_t ) ) == 0 ); + } + + bool operator!=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA; + void const * pNext = {}; + ImagePipeSurfaceCreateFlagsFUCHSIA flags = {}; + zx_handle_t imagePipeHandle = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImagePipeSurfaceCreateInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = ImagePipeSurfaceCreateInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + // wrapper struct for struct VkImagePlaneMemoryRequirementsInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImagePlaneMemoryRequirementsInfo.html + struct ImagePlaneMemoryRequirementsInfo + { + using NativeType = VkImagePlaneMemoryRequirementsInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImagePlaneMemoryRequirementsInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImagePlaneMemoryRequirementsInfo( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , planeAspect{ planeAspect_ } + { + } + + VULKAN_HPP_CONSTEXPR ImagePlaneMemoryRequirementsInfo( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ImagePlaneMemoryRequirementsInfo( *reinterpret_cast( &rhs ) ) + { + } + + ImagePlaneMemoryRequirementsInfo & operator=( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImagePlaneMemoryRequirementsInfo & operator=( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & setPlaneAspect( ImageAspectFlagBits planeAspect_ ) & VULKAN_HPP_NOEXCEPT + { + planeAspect = planeAspect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo && setPlaneAspect( ImageAspectFlagBits planeAspect_ ) && VULKAN_HPP_NOEXCEPT + { + planeAspect = planeAspect_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImagePlaneMemoryRequirementsInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImagePlaneMemoryRequirementsInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImagePlaneMemoryRequirementsInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImagePlaneMemoryRequirementsInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, planeAspect ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImagePlaneMemoryRequirementsInfo const & ) const = default; +#else + bool operator==( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( planeAspect == rhs.planeAspect ); +# endif + } + + bool operator!=( ImagePlaneMemoryRequirementsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImagePlaneMemoryRequirementsInfo; + void const * pNext = {}; + ImageAspectFlagBits planeAspect = ImageAspectFlagBits::eColor; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImagePlaneMemoryRequirementsInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ImagePlaneMemoryRequirementsInfo; + }; + + using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo; + + // wrapper struct for struct VkImageResolve, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageResolve.html + struct ImageResolve + { + using NativeType = VkImageResolve; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageResolve( ImageSubresourceLayers srcSubresource_ = {}, + Offset3D srcOffset_ = {}, + ImageSubresourceLayers dstSubresource_ = {}, + Offset3D dstOffset_ = {}, + Extent3D extent_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubresource{ srcSubresource_ } + , srcOffset{ srcOffset_ } + , dstSubresource{ dstSubresource_ } + , dstOffset{ dstOffset_ } + , extent{ extent_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageResolve( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageResolve( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT : ImageResolve( *reinterpret_cast( &rhs ) ) {} + + ImageResolve & operator=( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageResolve & operator=( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageResolve & setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve && setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve & setSrcOffset( Offset3D const & srcOffset_ ) & VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve && setSrcOffset( Offset3D const & srcOffset_ ) && VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve & setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve && setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve & setDstOffset( Offset3D const & dstOffset_ ) & VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve && setDstOffset( Offset3D const & dstOffset_ ) && VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve & setExtent( Extent3D const & extent_ ) & VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve && setExtent( Extent3D const & extent_ ) && VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageResolve const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageResolve &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageResolve const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageResolve *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcSubresource, srcOffset, dstSubresource, dstOffset, extent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageResolve const & ) const = default; +#else + bool operator==( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) && ( dstSubresource == rhs.dstSubresource ) && + ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent ); +# endif + } + + bool operator!=( ImageResolve const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ImageSubresourceLayers srcSubresource = {}; + Offset3D srcOffset = {}; + ImageSubresourceLayers dstSubresource = {}; + Offset3D dstOffset = {}; + Extent3D extent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageResolve; + }; +#endif + + // wrapper struct for struct VkImageResolve2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageResolve2.html + struct ImageResolve2 + { + using NativeType = VkImageResolve2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageResolve2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageResolve2( ImageSubresourceLayers srcSubresource_ = {}, + Offset3D srcOffset_ = {}, + ImageSubresourceLayers dstSubresource_ = {}, + Offset3D dstOffset_ = {}, + Extent3D extent_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcSubresource{ srcSubresource_ } + , srcOffset{ srcOffset_ } + , dstSubresource{ dstSubresource_ } + , dstOffset{ dstOffset_ } + , extent{ extent_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageResolve2( ImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageResolve2( VkImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT : ImageResolve2( *reinterpret_cast( &rhs ) ) {} + + ImageResolve2 & operator=( ImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageResolve2 & operator=( VkImageResolve2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 && setSrcSubresource( ImageSubresourceLayers const & srcSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + srcSubresource = srcSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setSrcOffset( Offset3D const & srcOffset_ ) & VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 && setSrcOffset( Offset3D const & srcOffset_ ) && VULKAN_HPP_NOEXCEPT + { + srcOffset = srcOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) & VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 && setDstSubresource( ImageSubresourceLayers const & dstSubresource_ ) && VULKAN_HPP_NOEXCEPT + { + dstSubresource = dstSubresource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setDstOffset( Offset3D const & dstOffset_ ) & VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 && setDstOffset( Offset3D const & dstOffset_ ) && VULKAN_HPP_NOEXCEPT + { + dstOffset = dstOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 & setExtent( Extent3D const & extent_ ) & VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageResolve2 && setExtent( Extent3D const & extent_ ) && VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageResolve2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageResolve2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageResolve2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageResolve2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcSubresource, srcOffset, dstSubresource, dstOffset, extent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageResolve2 const & ) const = default; +#else + bool operator==( ImageResolve2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubresource == rhs.srcSubresource ) && ( srcOffset == rhs.srcOffset ) && + ( dstSubresource == rhs.dstSubresource ) && ( dstOffset == rhs.dstOffset ) && ( extent == rhs.extent ); +# endif + } + + bool operator!=( ImageResolve2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageResolve2; + void const * pNext = {}; + ImageSubresourceLayers srcSubresource = {}; + Offset3D srcOffset = {}; + ImageSubresourceLayers dstSubresource = {}; + Offset3D dstOffset = {}; + Extent3D extent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageResolve2; + }; +#endif + + template <> + struct CppType + { + using Type = ImageResolve2; + }; + + using ImageResolve2KHR = ImageResolve2; + + // wrapper struct for struct VkImageSparseMemoryRequirementsInfo2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageSparseMemoryRequirementsInfo2.html + struct ImageSparseMemoryRequirementsInfo2 + { + using NativeType = VkImageSparseMemoryRequirementsInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageSparseMemoryRequirementsInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2( Image image_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image{ image_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageSparseMemoryRequirementsInfo2( *reinterpret_cast( &rhs ) ) + { + } + + ImageSparseMemoryRequirementsInfo2 & operator=( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageSparseMemoryRequirementsInfo2 & operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageSparseMemoryRequirementsInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSparseMemoryRequirementsInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSparseMemoryRequirementsInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageSparseMemoryRequirementsInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSparseMemoryRequirementsInfo2 const & ) const = default; +#else + bool operator==( ImageSparseMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ); +# endif + } + + bool operator!=( ImageSparseMemoryRequirementsInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2; + void const * pNext = {}; + Image image = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageSparseMemoryRequirementsInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = ImageSparseMemoryRequirementsInfo2; + }; + + using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2; + + // wrapper struct for struct VkImageStencilUsageCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageStencilUsageCreateInfo.html + struct ImageStencilUsageCreateInfo + { + using NativeType = VkImageStencilUsageCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageStencilUsageCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo( ImageUsageFlags stencilUsage_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stencilUsage{ stencilUsage_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageStencilUsageCreateInfo( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageStencilUsageCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + ImageStencilUsageCreateInfo & operator=( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageStencilUsageCreateInfo & operator=( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & setStencilUsage( ImageUsageFlags stencilUsage_ ) & VULKAN_HPP_NOEXCEPT + { + stencilUsage = stencilUsage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo && setStencilUsage( ImageUsageFlags stencilUsage_ ) && VULKAN_HPP_NOEXCEPT + { + stencilUsage = stencilUsage_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageStencilUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageStencilUsageCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageStencilUsageCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageStencilUsageCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stencilUsage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageStencilUsageCreateInfo const & ) const = default; +#else + bool operator==( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stencilUsage == rhs.stencilUsage ); +# endif + } + + bool operator!=( ImageStencilUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageStencilUsageCreateInfo; + void const * pNext = {}; + ImageUsageFlags stencilUsage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageStencilUsageCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ImageStencilUsageCreateInfo; + }; + + using ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo; + + // wrapper struct for struct VkImageSwapchainCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageSwapchainCreateInfoKHR.html + struct ImageSwapchainCreateInfoKHR + { + using NativeType = VkImageSwapchainCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageSwapchainCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR( SwapchainKHR swapchain_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchain{ swapchain_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageSwapchainCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ImageSwapchainCreateInfoKHR & operator=( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageSwapchainCreateInfoKHR & operator=( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & setSwapchain( SwapchainKHR swapchain_ ) & VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR && setSwapchain( SwapchainKHR swapchain_ ) && VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageSwapchainCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageSwapchainCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchain ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageSwapchainCreateInfoKHR const & ) const = default; +#else + bool operator==( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ); +# endif + } + + bool operator!=( ImageSwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageSwapchainCreateInfoKHR; + void const * pNext = {}; + SwapchainKHR swapchain = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageSwapchainCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = ImageSwapchainCreateInfoKHR; + }; + + // wrapper struct for struct VkImageViewASTCDecodeModeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewASTCDecodeModeEXT.html + struct ImageViewASTCDecodeModeEXT + { + using NativeType = VkImageViewASTCDecodeModeEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewAstcDecodeModeEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT( Format decodeMode_ = Format::eUndefined, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , decodeMode{ decodeMode_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewASTCDecodeModeEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImageViewASTCDecodeModeEXT & operator=( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageViewASTCDecodeModeEXT & operator=( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & setDecodeMode( Format decodeMode_ ) & VULKAN_HPP_NOEXCEPT + { + decodeMode = decodeMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT && setDecodeMode( Format decodeMode_ ) && VULKAN_HPP_NOEXCEPT + { + decodeMode = decodeMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageViewASTCDecodeModeEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewASTCDecodeModeEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewASTCDecodeModeEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageViewASTCDecodeModeEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, decodeMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewASTCDecodeModeEXT const & ) const = default; +#else + bool operator==( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decodeMode == rhs.decodeMode ); +# endif + } + + bool operator!=( ImageViewASTCDecodeModeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageViewAstcDecodeModeEXT; + void const * pNext = {}; + Format decodeMode = Format::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageViewASTCDecodeModeEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageViewASTCDecodeModeEXT; + }; + + // wrapper struct for struct VkImageViewAddressPropertiesNVX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewAddressPropertiesNVX.html + struct ImageViewAddressPropertiesNVX + { + using NativeType = VkImageViewAddressPropertiesNVX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewAddressPropertiesNVX; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewAddressPropertiesNVX( DeviceAddress deviceAddress_ = {}, DeviceSize size_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceAddress{ deviceAddress_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageViewAddressPropertiesNVX( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewAddressPropertiesNVX( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewAddressPropertiesNVX( *reinterpret_cast( &rhs ) ) + { + } + + ImageViewAddressPropertiesNVX & operator=( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageViewAddressPropertiesNVX & operator=( VkImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkImageViewAddressPropertiesNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewAddressPropertiesNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewAddressPropertiesNVX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageViewAddressPropertiesNVX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceAddress, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewAddressPropertiesNVX const & ) const = default; +#else + bool operator==( ImageViewAddressPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddress == rhs.deviceAddress ) && ( size == rhs.size ); +# endif + } + + bool operator!=( ImageViewAddressPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageViewAddressPropertiesNVX; + void * pNext = {}; + DeviceAddress deviceAddress = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageViewAddressPropertiesNVX; + }; +#endif + + template <> + struct CppType + { + using Type = ImageViewAddressPropertiesNVX; + }; + + // wrapper struct for struct VkImageViewCaptureDescriptorDataInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewCaptureDescriptorDataInfoEXT.html + struct ImageViewCaptureDescriptorDataInfoEXT + { + using NativeType = VkImageViewCaptureDescriptorDataInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewCaptureDescriptorDataInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewCaptureDescriptorDataInfoEXT( ImageView imageView_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageView{ imageView_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageViewCaptureDescriptorDataInfoEXT( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewCaptureDescriptorDataInfoEXT( VkImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewCaptureDescriptorDataInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImageViewCaptureDescriptorDataInfoEXT & operator=( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageViewCaptureDescriptorDataInfoEXT & operator=( VkImageViewCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewCaptureDescriptorDataInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCaptureDescriptorDataInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCaptureDescriptorDataInfoEXT & setImageView( ImageView imageView_ ) & VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewCaptureDescriptorDataInfoEXT && setImageView( ImageView imageView_ ) && VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageViewCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewCaptureDescriptorDataInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageViewCaptureDescriptorDataInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageView ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewCaptureDescriptorDataInfoEXT const & ) const = default; +#else + bool operator==( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ); +# endif + } + + bool operator!=( ImageViewCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageViewCaptureDescriptorDataInfoEXT; + void const * pNext = {}; + ImageView imageView = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageViewCaptureDescriptorDataInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageViewCaptureDescriptorDataInfoEXT; + }; + + // wrapper struct for struct VkImageViewHandleInfoNVX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewHandleInfoNVX.html + struct ImageViewHandleInfoNVX + { + using NativeType = VkImageViewHandleInfoNVX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewHandleInfoNVX; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX( ImageView imageView_ = {}, + DescriptorType descriptorType_ = DescriptorType::eSampler, + Sampler sampler_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageView{ imageView_ } + , descriptorType{ descriptorType_ } + , sampler{ sampler_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewHandleInfoNVX( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewHandleInfoNVX( *reinterpret_cast( &rhs ) ) + { + } + + ImageViewHandleInfoNVX & operator=( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageViewHandleInfoNVX & operator=( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setImageView( ImageView imageView_ ) & VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX && setImageView( ImageView imageView_ ) && VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setDescriptorType( DescriptorType descriptorType_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX && setDescriptorType( DescriptorType descriptorType_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & setSampler( Sampler sampler_ ) & VULKAN_HPP_NOEXCEPT + { + sampler = sampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX && setSampler( Sampler sampler_ ) && VULKAN_HPP_NOEXCEPT + { + sampler = sampler_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageViewHandleInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewHandleInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewHandleInfoNVX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageViewHandleInfoNVX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageView, descriptorType, sampler ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewHandleInfoNVX const & ) const = default; +#else + bool operator==( ImageViewHandleInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && ( descriptorType == rhs.descriptorType ) && + ( sampler == rhs.sampler ); +# endif + } + + bool operator!=( ImageViewHandleInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageViewHandleInfoNVX; + void const * pNext = {}; + ImageView imageView = {}; + DescriptorType descriptorType = DescriptorType::eSampler; + Sampler sampler = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageViewHandleInfoNVX; + }; +#endif + + template <> + struct CppType + { + using Type = ImageViewHandleInfoNVX; + }; + + // wrapper struct for struct VkImageViewMinLodCreateInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewMinLodCreateInfoEXT.html + struct ImageViewMinLodCreateInfoEXT + { + using NativeType = VkImageViewMinLodCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewMinLodCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewMinLodCreateInfoEXT( float minLod_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minLod{ minLod_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageViewMinLodCreateInfoEXT( ImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewMinLodCreateInfoEXT( VkImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewMinLodCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImageViewMinLodCreateInfoEXT & operator=( ImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageViewMinLodCreateInfoEXT & operator=( VkImageViewMinLodCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT & setMinLod( float minLod_ ) & VULKAN_HPP_NOEXCEPT + { + minLod = minLod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewMinLodCreateInfoEXT && setMinLod( float minLod_ ) && VULKAN_HPP_NOEXCEPT + { + minLod = minLod_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageViewMinLodCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewMinLodCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewMinLodCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageViewMinLodCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minLod ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewMinLodCreateInfoEXT const & ) const = default; +#else + bool operator==( ImageViewMinLodCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minLod == rhs.minLod ); +# endif + } + + bool operator!=( ImageViewMinLodCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageViewMinLodCreateInfoEXT; + void const * pNext = {}; + float minLod = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageViewMinLodCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageViewMinLodCreateInfoEXT; + }; + + // wrapper struct for struct VkImageViewSampleWeightCreateInfoQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewSampleWeightCreateInfoQCOM.html + struct ImageViewSampleWeightCreateInfoQCOM + { + using NativeType = VkImageViewSampleWeightCreateInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewSampleWeightCreateInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewSampleWeightCreateInfoQCOM( Offset2D filterCenter_ = {}, + Extent2D filterSize_ = {}, + uint32_t numPhases_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , filterCenter{ filterCenter_ } + , filterSize{ filterSize_ } + , numPhases{ numPhases_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageViewSampleWeightCreateInfoQCOM( ImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewSampleWeightCreateInfoQCOM( VkImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewSampleWeightCreateInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + ImageViewSampleWeightCreateInfoQCOM & operator=( ImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageViewSampleWeightCreateInfoQCOM & operator=( VkImageViewSampleWeightCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setFilterCenter( Offset2D const & filterCenter_ ) & VULKAN_HPP_NOEXCEPT + { + filterCenter = filterCenter_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM && setFilterCenter( Offset2D const & filterCenter_ ) && VULKAN_HPP_NOEXCEPT + { + filterCenter = filterCenter_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setFilterSize( Extent2D const & filterSize_ ) & VULKAN_HPP_NOEXCEPT + { + filterSize = filterSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM && setFilterSize( Extent2D const & filterSize_ ) && VULKAN_HPP_NOEXCEPT + { + filterSize = filterSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM & setNumPhases( uint32_t numPhases_ ) & VULKAN_HPP_NOEXCEPT + { + numPhases = numPhases_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSampleWeightCreateInfoQCOM && setNumPhases( uint32_t numPhases_ ) && VULKAN_HPP_NOEXCEPT + { + numPhases = numPhases_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageViewSampleWeightCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewSampleWeightCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewSampleWeightCreateInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageViewSampleWeightCreateInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, filterCenter, filterSize, numPhases ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewSampleWeightCreateInfoQCOM const & ) const = default; +#else + bool operator==( ImageViewSampleWeightCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( filterCenter == rhs.filterCenter ) && ( filterSize == rhs.filterSize ) && + ( numPhases == rhs.numPhases ); +# endif + } + + bool operator!=( ImageViewSampleWeightCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageViewSampleWeightCreateInfoQCOM; + void const * pNext = {}; + Offset2D filterCenter = {}; + Extent2D filterSize = {}; + uint32_t numPhases = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageViewSampleWeightCreateInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = ImageViewSampleWeightCreateInfoQCOM; + }; + + // wrapper struct for struct VkImageViewSlicedCreateInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewSlicedCreateInfoEXT.html + struct ImageViewSlicedCreateInfoEXT + { + using NativeType = VkImageViewSlicedCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewSlicedCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImageViewSlicedCreateInfoEXT( uint32_t sliceOffset_ = {}, uint32_t sliceCount_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , sliceOffset{ sliceOffset_ } + , sliceCount{ sliceCount_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageViewSlicedCreateInfoEXT( ImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewSlicedCreateInfoEXT( VkImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewSlicedCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImageViewSlicedCreateInfoEXT & operator=( ImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageViewSlicedCreateInfoEXT & operator=( VkImageViewSlicedCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT & setSliceOffset( uint32_t sliceOffset_ ) & VULKAN_HPP_NOEXCEPT + { + sliceOffset = sliceOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT && setSliceOffset( uint32_t sliceOffset_ ) && VULKAN_HPP_NOEXCEPT + { + sliceOffset = sliceOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT & setSliceCount( uint32_t sliceCount_ ) & VULKAN_HPP_NOEXCEPT + { + sliceCount = sliceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewSlicedCreateInfoEXT && setSliceCount( uint32_t sliceCount_ ) && VULKAN_HPP_NOEXCEPT + { + sliceCount = sliceCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageViewSlicedCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewSlicedCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewSlicedCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageViewSlicedCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sliceOffset, sliceCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewSlicedCreateInfoEXT const & ) const = default; +#else + bool operator==( ImageViewSlicedCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sliceOffset == rhs.sliceOffset ) && ( sliceCount == rhs.sliceCount ); +# endif + } + + bool operator!=( ImageViewSlicedCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageViewSlicedCreateInfoEXT; + void const * pNext = {}; + uint32_t sliceOffset = {}; + uint32_t sliceCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageViewSlicedCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImageViewSlicedCreateInfoEXT; + }; + + // wrapper struct for struct VkImageViewUsageCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImageViewUsageCreateInfo.html + struct ImageViewUsageCreateInfo + { + using NativeType = VkImageViewUsageCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewUsageCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( ImageUsageFlags usage_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , usage{ usage_ } + { + } + + VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ImageViewUsageCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + ImageViewUsageCreateInfo & operator=( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImageViewUsageCreateInfo & operator=( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & setUsage( ImageUsageFlags usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo && setUsage( ImageUsageFlags usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImageViewUsageCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewUsageCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImageViewUsageCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImageViewUsageCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, usage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImageViewUsageCreateInfo const & ) const = default; +#else + bool operator==( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( usage == rhs.usage ); +# endif + } + + bool operator!=( ImageViewUsageCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImageViewUsageCreateInfo; + void const * pNext = {}; + ImageUsageFlags usage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImageViewUsageCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ImageViewUsageCreateInfo; + }; + + using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkImportAndroidHardwareBufferInfoANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportAndroidHardwareBufferInfoANDROID.html + struct ImportAndroidHardwareBufferInfoANDROID + { + using NativeType = VkImportAndroidHardwareBufferInfoANDROID; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportAndroidHardwareBufferInfoANDROID; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID( struct AHardwareBuffer * buffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , buffer{ buffer_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportAndroidHardwareBufferInfoANDROID( *reinterpret_cast( &rhs ) ) + { + } + + ImportAndroidHardwareBufferInfoANDROID & operator=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportAndroidHardwareBufferInfoANDROID & operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & setBuffer( struct AHardwareBuffer * buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID && setBuffer( struct AHardwareBuffer * buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportAndroidHardwareBufferInfoANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportAndroidHardwareBufferInfoANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportAndroidHardwareBufferInfoANDROID const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportAndroidHardwareBufferInfoANDROID *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportAndroidHardwareBufferInfoANDROID const & ) const = default; +# else + bool operator==( ImportAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportAndroidHardwareBufferInfoANDROID; + void const * pNext = {}; + struct AHardwareBuffer * buffer = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportAndroidHardwareBufferInfoANDROID; + }; +# endif + + template <> + struct CppType + { + using Type = ImportAndroidHardwareBufferInfoANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + // wrapper struct for struct VkImportFenceFdInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportFenceFdInfoKHR.html + struct ImportFenceFdInfoKHR + { + using NativeType = VkImportFenceFdInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportFenceFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR( Fence fence_ = {}, + FenceImportFlags flags_ = {}, + ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd, + int fd_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fence{ fence_ } + , flags{ flags_ } + , handleType{ handleType_ } + , fd{ fd_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportFenceFdInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ImportFenceFdInfoKHR & operator=( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportFenceFdInfoKHR & operator=( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFence( Fence fence_ ) & VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR && setFence( Fence fence_ ) && VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFlags( FenceImportFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR && setFlags( FenceImportFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setHandleType( ExternalFenceHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR && setHandleType( ExternalFenceHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & setFd( int fd_ ) & VULKAN_HPP_NOEXCEPT + { + fd = fd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR && setFd( int fd_ ) && VULKAN_HPP_NOEXCEPT + { + fd = fd_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportFenceFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportFenceFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportFenceFdInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportFenceFdInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fence, flags, handleType, fd ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportFenceFdInfoKHR const & ) const = default; +#else + bool operator==( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) && + ( fd == rhs.fd ); +# endif + } + + bool operator!=( ImportFenceFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImportFenceFdInfoKHR; + void const * pNext = {}; + Fence fence = {}; + FenceImportFlags flags = {}; + ExternalFenceHandleTypeFlagBits handleType = ExternalFenceHandleTypeFlagBits::eOpaqueFd; + int fd = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportFenceFdInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = ImportFenceFdInfoKHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkImportFenceWin32HandleInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportFenceWin32HandleInfoKHR.html + struct ImportFenceWin32HandleInfoKHR + { + using NativeType = VkImportFenceWin32HandleInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportFenceWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportFenceWin32HandleInfoKHR( Fence fence_ = {}, + FenceImportFlags flags_ = {}, + ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd, + HANDLE handle_ = {}, + LPCWSTR name_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fence{ fence_ } + , flags{ flags_ } + , handleType{ handleType_ } + , handle{ handle_ } + , name{ name_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportFenceWin32HandleInfoKHR( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportFenceWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ImportFenceWin32HandleInfoKHR & operator=( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportFenceWin32HandleInfoKHR & operator=( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setFence( Fence fence_ ) & VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR && setFence( Fence fence_ ) && VULKAN_HPP_NOEXCEPT + { + fence = fence_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setFlags( FenceImportFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR && setFlags( FenceImportFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setHandleType( ExternalFenceHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR && setHandleType( ExternalFenceHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setHandle( HANDLE handle_ ) & VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR && setHandle( HANDLE handle_ ) && VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) & VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR && setName( LPCWSTR name_ ) && VULKAN_HPP_NOEXCEPT + { + name = name_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportFenceWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportFenceWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportFenceWin32HandleInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportFenceWin32HandleInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fence, flags, handleType, handle, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportFenceWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ImportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fence == rhs.fence ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) && + ( handle == rhs.handle ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ImportFenceWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportFenceWin32HandleInfoKHR; + void const * pNext = {}; + Fence fence = {}; + FenceImportFlags flags = {}; + ExternalFenceHandleTypeFlagBits handleType = ExternalFenceHandleTypeFlagBits::eOpaqueFd; + HANDLE handle = {}; + LPCWSTR name = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportFenceWin32HandleInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = ImportFenceWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkImportMemoryBufferCollectionFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMemoryBufferCollectionFUCHSIA.html + struct ImportMemoryBufferCollectionFUCHSIA + { + using NativeType = VkImportMemoryBufferCollectionFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryBufferCollectionFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportMemoryBufferCollectionFUCHSIA( BufferCollectionFUCHSIA collection_ = {}, uint32_t index_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , collection{ collection_ } + , index{ index_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMemoryBufferCollectionFUCHSIA( ImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryBufferCollectionFUCHSIA( VkImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryBufferCollectionFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + ImportMemoryBufferCollectionFUCHSIA & operator=( ImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMemoryBufferCollectionFUCHSIA & operator=( VkImportMemoryBufferCollectionFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setCollection( BufferCollectionFUCHSIA collection_ ) & VULKAN_HPP_NOEXCEPT + { + collection = collection_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA && setCollection( BufferCollectionFUCHSIA collection_ ) && VULKAN_HPP_NOEXCEPT + { + collection = collection_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA & setIndex( uint32_t index_ ) & VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryBufferCollectionFUCHSIA && setIndex( uint32_t index_ ) && VULKAN_HPP_NOEXCEPT + { + index = index_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMemoryBufferCollectionFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryBufferCollectionFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryBufferCollectionFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMemoryBufferCollectionFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, collection, index ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryBufferCollectionFUCHSIA const & ) const = default; +# else + bool operator==( ImportMemoryBufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( collection == rhs.collection ) && ( index == rhs.index ); +# endif + } + + bool operator!=( ImportMemoryBufferCollectionFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportMemoryBufferCollectionFUCHSIA; + void const * pNext = {}; + BufferCollectionFUCHSIA collection = {}; + uint32_t index = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMemoryBufferCollectionFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = ImportMemoryBufferCollectionFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + // wrapper struct for struct VkImportMemoryFdInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMemoryFdInfoKHR.html + struct ImportMemoryFdInfoKHR + { + using NativeType = VkImportMemoryFdInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + int fd_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleType{ handleType_ } + , fd{ fd_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryFdInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ImportMemoryFdInfoKHR & operator=( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMemoryFdInfoKHR & operator=( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & setFd( int fd_ ) & VULKAN_HPP_NOEXCEPT + { + fd = fd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR && setFd( int fd_ ) && VULKAN_HPP_NOEXCEPT + { + fd = fd_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMemoryFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryFdInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMemoryFdInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, fd ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryFdInfoKHR const & ) const = default; +#else + bool operator==( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( fd == rhs.fd ); +# endif + } + + bool operator!=( ImportMemoryFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImportMemoryFdInfoKHR; + void const * pNext = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + int fd = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMemoryFdInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = ImportMemoryFdInfoKHR; + }; + + // wrapper struct for struct VkImportMemoryHostPointerInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMemoryHostPointerInfoEXT.html + struct ImportMemoryHostPointerInfoEXT + { + using NativeType = VkImportMemoryHostPointerInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryHostPointerInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportMemoryHostPointerInfoEXT( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void * pHostPointer_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleType{ handleType_ } + , pHostPointer{ pHostPointer_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMemoryHostPointerInfoEXT( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryHostPointerInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImportMemoryHostPointerInfoEXT & operator=( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMemoryHostPointerInfoEXT & operator=( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & setPHostPointer( void * pHostPointer_ ) & VULKAN_HPP_NOEXCEPT + { + pHostPointer = pHostPointer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT && setPHostPointer( void * pHostPointer_ ) && VULKAN_HPP_NOEXCEPT + { + pHostPointer = pHostPointer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMemoryHostPointerInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryHostPointerInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryHostPointerInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMemoryHostPointerInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, pHostPointer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryHostPointerInfoEXT const & ) const = default; +#else + bool operator==( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( pHostPointer == rhs.pHostPointer ); +# endif + } + + bool operator!=( ImportMemoryHostPointerInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImportMemoryHostPointerInfoEXT; + void const * pNext = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + void * pHostPointer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMemoryHostPointerInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ImportMemoryHostPointerInfoEXT; + }; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkImportMemoryMetalHandleInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMemoryMetalHandleInfoEXT.html + struct ImportMemoryMetalHandleInfoEXT + { + using NativeType = VkImportMemoryMetalHandleInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryMetalHandleInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportMemoryMetalHandleInfoEXT( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void * handle_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleType{ handleType_ } + , handle{ handle_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMemoryMetalHandleInfoEXT( ImportMemoryMetalHandleInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryMetalHandleInfoEXT( VkImportMemoryMetalHandleInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryMetalHandleInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImportMemoryMetalHandleInfoEXT & operator=( ImportMemoryMetalHandleInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMemoryMetalHandleInfoEXT & operator=( VkImportMemoryMetalHandleInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryMetalHandleInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryMetalHandleInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryMetalHandleInfoEXT & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryMetalHandleInfoEXT && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryMetalHandleInfoEXT & setHandle( void * handle_ ) & VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryMetalHandleInfoEXT && setHandle( void * handle_ ) && VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMemoryMetalHandleInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryMetalHandleInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryMetalHandleInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMemoryMetalHandleInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, handle ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryMetalHandleInfoEXT const & ) const = default; +# else + bool operator==( ImportMemoryMetalHandleInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( handle == rhs.handle ); +# endif + } + + bool operator!=( ImportMemoryMetalHandleInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportMemoryMetalHandleInfoEXT; + void const * pNext = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + void * handle = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMemoryMetalHandleInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ImportMemoryMetalHandleInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkImportMemoryWin32HandleInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoKHR.html + struct ImportMemoryWin32HandleInfoKHR + { + using NativeType = VkImportMemoryWin32HandleInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + HANDLE handle_ = {}, + LPCWSTR name_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleType{ handleType_ } + , handle{ handle_ } + , name{ name_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoKHR( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ImportMemoryWin32HandleInfoKHR & operator=( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMemoryWin32HandleInfoKHR & operator=( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setHandle( HANDLE handle_ ) & VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR && setHandle( HANDLE handle_ ) && VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) & VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR && setName( LPCWSTR name_ ) && VULKAN_HPP_NOEXCEPT + { + name = name_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMemoryWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryWin32HandleInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMemoryWin32HandleInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, handle, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ImportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( handle == rhs.handle ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ImportMemoryWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportMemoryWin32HandleInfoKHR; + void const * pNext = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + HANDLE handle = {}; + LPCWSTR name = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMemoryWin32HandleInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = ImportMemoryWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkImportMemoryWin32HandleInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMemoryWin32HandleInfoNV.html + struct ImportMemoryWin32HandleInfoNV + { + using NativeType = VkImportMemoryWin32HandleInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryWin32HandleInfoNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = {}, HANDLE handle_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleType{ handleType_ } + , handle{ handle_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoNV( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryWin32HandleInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + ImportMemoryWin32HandleInfoNV & operator=( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMemoryWin32HandleInfoNV & operator=( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV && setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & setHandle( HANDLE handle_ ) & VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV && setHandle( HANDLE handle_ ) && VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMemoryWin32HandleInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryWin32HandleInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryWin32HandleInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMemoryWin32HandleInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, handle ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMemoryWin32HandleInfoNV const & ) const = default; +# else + bool operator==( ImportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && ( handle == rhs.handle ); +# endif + } + + bool operator!=( ImportMemoryWin32HandleInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportMemoryWin32HandleInfoNV; + void const * pNext = {}; + ExternalMemoryHandleTypeFlagsNV handleType = {}; + HANDLE handle = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMemoryWin32HandleInfoNV; + }; +# endif + + template <> + struct CppType + { + using Type = ImportMemoryWin32HandleInfoNV; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkImportMemoryZirconHandleInfoFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMemoryZirconHandleInfoFUCHSIA.html + struct ImportMemoryZirconHandleInfoFUCHSIA + { + using NativeType = VkImportMemoryZirconHandleInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryZirconHandleInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportMemoryZirconHandleInfoFUCHSIA( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + zx_handle_t handle_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleType{ handleType_ } + , handle{ handle_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMemoryZirconHandleInfoFUCHSIA( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMemoryZirconHandleInfoFUCHSIA( VkImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMemoryZirconHandleInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + ImportMemoryZirconHandleInfoFUCHSIA & operator=( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMemoryZirconHandleInfoFUCHSIA & operator=( VkImportMemoryZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA & setHandle( zx_handle_t handle_ ) & VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMemoryZirconHandleInfoFUCHSIA && setHandle( zx_handle_t handle_ ) && VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMemoryZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMemoryZirconHandleInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMemoryZirconHandleInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType, handle ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = handleType <=> rhs.handleType; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &handle, &rhs.handle, sizeof( zx_handle_t ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ) && + ( memcmp( &handle, &rhs.handle, sizeof( zx_handle_t ) ) == 0 ); + } + + bool operator!=( ImportMemoryZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eImportMemoryZirconHandleInfoFUCHSIA; + void const * pNext = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + zx_handle_t handle = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMemoryZirconHandleInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = ImportMemoryZirconHandleInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkImportMetalBufferInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMetalBufferInfoEXT.html + struct ImportMetalBufferInfoEXT + { + using NativeType = VkImportMetalBufferInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMetalBufferInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportMetalBufferInfoEXT( MTLBuffer_id mtlBuffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , mtlBuffer{ mtlBuffer_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMetalBufferInfoEXT( ImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMetalBufferInfoEXT( VkImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMetalBufferInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImportMetalBufferInfoEXT & operator=( ImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMetalBufferInfoEXT & operator=( VkImportMetalBufferInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMetalBufferInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalBufferInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalBufferInfoEXT & setMtlBuffer( MTLBuffer_id mtlBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + mtlBuffer = mtlBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalBufferInfoEXT && setMtlBuffer( MTLBuffer_id mtlBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + mtlBuffer = mtlBuffer_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMetalBufferInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMetalBufferInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMetalBufferInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMetalBufferInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mtlBuffer ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMetalBufferInfoEXT const & ) const = default; +# else + bool operator==( ImportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mtlBuffer == rhs.mtlBuffer ); +# endif + } + + bool operator!=( ImportMetalBufferInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportMetalBufferInfoEXT; + void const * pNext = {}; + MTLBuffer_id mtlBuffer = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMetalBufferInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ImportMetalBufferInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkImportMetalIOSurfaceInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMetalIOSurfaceInfoEXT.html + struct ImportMetalIOSurfaceInfoEXT + { + using NativeType = VkImportMetalIOSurfaceInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMetalIoSurfaceInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportMetalIOSurfaceInfoEXT( IOSurfaceRef ioSurface_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , ioSurface{ ioSurface_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMetalIOSurfaceInfoEXT( ImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMetalIOSurfaceInfoEXT( VkImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMetalIOSurfaceInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImportMetalIOSurfaceInfoEXT & operator=( ImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMetalIOSurfaceInfoEXT & operator=( VkImportMetalIOSurfaceInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMetalIOSurfaceInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalIOSurfaceInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalIOSurfaceInfoEXT & setIoSurface( IOSurfaceRef ioSurface_ ) & VULKAN_HPP_NOEXCEPT + { + ioSurface = ioSurface_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalIOSurfaceInfoEXT && setIoSurface( IOSurfaceRef ioSurface_ ) && VULKAN_HPP_NOEXCEPT + { + ioSurface = ioSurface_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMetalIOSurfaceInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMetalIOSurfaceInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMetalIOSurfaceInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMetalIOSurfaceInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, ioSurface ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMetalIOSurfaceInfoEXT const & ) const = default; +# else + bool operator==( ImportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ioSurface == rhs.ioSurface ); +# endif + } + + bool operator!=( ImportMetalIOSurfaceInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportMetalIoSurfaceInfoEXT; + void const * pNext = {}; + IOSurfaceRef ioSurface = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMetalIOSurfaceInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ImportMetalIOSurfaceInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkImportMetalSharedEventInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMetalSharedEventInfoEXT.html + struct ImportMetalSharedEventInfoEXT + { + using NativeType = VkImportMetalSharedEventInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMetalSharedEventInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportMetalSharedEventInfoEXT( MTLSharedEvent_id mtlSharedEvent_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , mtlSharedEvent{ mtlSharedEvent_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMetalSharedEventInfoEXT( ImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMetalSharedEventInfoEXT( VkImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMetalSharedEventInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImportMetalSharedEventInfoEXT & operator=( ImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMetalSharedEventInfoEXT & operator=( VkImportMetalSharedEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMetalSharedEventInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalSharedEventInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalSharedEventInfoEXT & setMtlSharedEvent( MTLSharedEvent_id mtlSharedEvent_ ) & VULKAN_HPP_NOEXCEPT + { + mtlSharedEvent = mtlSharedEvent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalSharedEventInfoEXT && setMtlSharedEvent( MTLSharedEvent_id mtlSharedEvent_ ) && VULKAN_HPP_NOEXCEPT + { + mtlSharedEvent = mtlSharedEvent_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMetalSharedEventInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMetalSharedEventInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMetalSharedEventInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMetalSharedEventInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mtlSharedEvent ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMetalSharedEventInfoEXT const & ) const = default; +# else + bool operator==( ImportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mtlSharedEvent == rhs.mtlSharedEvent ); +# endif + } + + bool operator!=( ImportMetalSharedEventInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportMetalSharedEventInfoEXT; + void const * pNext = {}; + MTLSharedEvent_id mtlSharedEvent = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMetalSharedEventInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ImportMetalSharedEventInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkImportMetalTextureInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportMetalTextureInfoEXT.html + struct ImportMetalTextureInfoEXT + { + using NativeType = VkImportMetalTextureInfoEXT; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMetalTextureInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportMetalTextureInfoEXT( ImageAspectFlagBits plane_ = ImageAspectFlagBits::eColor, + MTLTexture_id mtlTexture_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , plane{ plane_ } + , mtlTexture{ mtlTexture_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportMetalTextureInfoEXT( ImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportMetalTextureInfoEXT( VkImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportMetalTextureInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ImportMetalTextureInfoEXT & operator=( ImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportMetalTextureInfoEXT & operator=( VkImportMetalTextureInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT & setPlane( ImageAspectFlagBits plane_ ) & VULKAN_HPP_NOEXCEPT + { + plane = plane_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT && setPlane( ImageAspectFlagBits plane_ ) && VULKAN_HPP_NOEXCEPT + { + plane = plane_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT & setMtlTexture( MTLTexture_id mtlTexture_ ) & VULKAN_HPP_NOEXCEPT + { + mtlTexture = mtlTexture_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportMetalTextureInfoEXT && setMtlTexture( MTLTexture_id mtlTexture_ ) && VULKAN_HPP_NOEXCEPT + { + mtlTexture = mtlTexture_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportMetalTextureInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMetalTextureInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportMetalTextureInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportMetalTextureInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, plane, mtlTexture ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportMetalTextureInfoEXT const & ) const = default; +# else + bool operator==( ImportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( plane == rhs.plane ) && ( mtlTexture == rhs.mtlTexture ); +# endif + } + + bool operator!=( ImportMetalTextureInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportMetalTextureInfoEXT; + void const * pNext = {}; + ImageAspectFlagBits plane = ImageAspectFlagBits::eColor; + MTLTexture_id mtlTexture = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportMetalTextureInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = ImportMetalTextureInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_OHOS ) + // wrapper struct for struct VkImportNativeBufferInfoOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportNativeBufferInfoOHOS.html + struct ImportNativeBufferInfoOHOS + { + using NativeType = VkImportNativeBufferInfoOHOS; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportNativeBufferInfoOHOS; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportNativeBufferInfoOHOS( struct OH_NativeBuffer * buffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , buffer{ buffer_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportNativeBufferInfoOHOS( ImportNativeBufferInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportNativeBufferInfoOHOS( VkImportNativeBufferInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportNativeBufferInfoOHOS( *reinterpret_cast( &rhs ) ) + { + } + + ImportNativeBufferInfoOHOS & operator=( ImportNativeBufferInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportNativeBufferInfoOHOS & operator=( VkImportNativeBufferInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportNativeBufferInfoOHOS & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportNativeBufferInfoOHOS && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportNativeBufferInfoOHOS & setBuffer( struct OH_NativeBuffer * buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportNativeBufferInfoOHOS && setBuffer( struct OH_NativeBuffer * buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportNativeBufferInfoOHOS const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportNativeBufferInfoOHOS &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportNativeBufferInfoOHOS const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportNativeBufferInfoOHOS *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportNativeBufferInfoOHOS const & ) const = default; +# else + bool operator==( ImportNativeBufferInfoOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( ImportNativeBufferInfoOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportNativeBufferInfoOHOS; + void const * pNext = {}; + struct OH_NativeBuffer * buffer = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportNativeBufferInfoOHOS; + }; +# endif + + template <> + struct CppType + { + using Type = ImportNativeBufferInfoOHOS; + }; +#endif /*VK_USE_PLATFORM_OHOS*/ + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + // wrapper struct for struct VkImportScreenBufferInfoQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportScreenBufferInfoQNX.html + struct ImportScreenBufferInfoQNX + { + using NativeType = VkImportScreenBufferInfoQNX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportScreenBufferInfoQNX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportScreenBufferInfoQNX( struct _screen_buffer * buffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , buffer{ buffer_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportScreenBufferInfoQNX( ImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportScreenBufferInfoQNX( VkImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportScreenBufferInfoQNX( *reinterpret_cast( &rhs ) ) + { + } + + ImportScreenBufferInfoQNX & operator=( ImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportScreenBufferInfoQNX & operator=( VkImportScreenBufferInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportScreenBufferInfoQNX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportScreenBufferInfoQNX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportScreenBufferInfoQNX & setBuffer( struct _screen_buffer * buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportScreenBufferInfoQNX && setBuffer( struct _screen_buffer * buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportScreenBufferInfoQNX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportScreenBufferInfoQNX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportScreenBufferInfoQNX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportScreenBufferInfoQNX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, buffer ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportScreenBufferInfoQNX const & ) const = default; +# else + bool operator==( ImportScreenBufferInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( ImportScreenBufferInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportScreenBufferInfoQNX; + void const * pNext = {}; + struct _screen_buffer * buffer = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportScreenBufferInfoQNX; + }; +# endif + + template <> + struct CppType + { + using Type = ImportScreenBufferInfoQNX; + }; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + // wrapper struct for struct VkImportSemaphoreFdInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportSemaphoreFdInfoKHR.html + struct ImportSemaphoreFdInfoKHR + { + using NativeType = VkImportSemaphoreFdInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportSemaphoreFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = {}, + SemaphoreImportFlags flags_ = {}, + ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, + int fd_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , semaphore{ semaphore_ } + , flags{ flags_ } + , handleType{ handleType_ } + , fd{ fd_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportSemaphoreFdInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ImportSemaphoreFdInfoKHR & operator=( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportSemaphoreFdInfoKHR & operator=( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setSemaphore( Semaphore semaphore_ ) & VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR && setSemaphore( Semaphore semaphore_ ) && VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setFlags( SemaphoreImportFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR && setFlags( SemaphoreImportFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR && setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & setFd( int fd_ ) & VULKAN_HPP_NOEXCEPT + { + fd = fd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR && setFd( int fd_ ) && VULKAN_HPP_NOEXCEPT + { + fd = fd_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportSemaphoreFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportSemaphoreFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportSemaphoreFdInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportSemaphoreFdInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, flags, handleType, fd ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportSemaphoreFdInfoKHR const & ) const = default; +#else + bool operator==( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) && + ( fd == rhs.fd ); +# endif + } + + bool operator!=( ImportSemaphoreFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eImportSemaphoreFdInfoKHR; + void const * pNext = {}; + Semaphore semaphore = {}; + SemaphoreImportFlags flags = {}; + ExternalSemaphoreHandleTypeFlagBits handleType = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + int fd = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportSemaphoreFdInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = ImportSemaphoreFdInfoKHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkImportSemaphoreWin32HandleInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportSemaphoreWin32HandleInfoKHR.html + struct ImportSemaphoreWin32HandleInfoKHR + { + using NativeType = VkImportSemaphoreWin32HandleInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportSemaphoreWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = {}, + SemaphoreImportFlags flags_ = {}, + ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, + HANDLE handle_ = {}, + LPCWSTR name_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , semaphore{ semaphore_ } + , flags{ flags_ } + , handleType{ handleType_ } + , handle{ handle_ } + , name{ name_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportSemaphoreWin32HandleInfoKHR( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportSemaphoreWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ImportSemaphoreWin32HandleInfoKHR & operator=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportSemaphoreWin32HandleInfoKHR & operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setSemaphore( Semaphore semaphore_ ) & VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR && setSemaphore( Semaphore semaphore_ ) && VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setFlags( SemaphoreImportFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR && setFlags( SemaphoreImportFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR && setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setHandle( HANDLE handle_ ) & VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR && setHandle( HANDLE handle_ ) && VULKAN_HPP_NOEXCEPT + { + handle = handle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) & VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR && setName( LPCWSTR name_ ) && VULKAN_HPP_NOEXCEPT + { + name = name_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportSemaphoreWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportSemaphoreWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportSemaphoreWin32HandleInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportSemaphoreWin32HandleInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, flags, handleType, handle, name ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ImportSemaphoreWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( ImportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) && + ( handle == rhs.handle ) && ( name == rhs.name ); +# endif + } + + bool operator!=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eImportSemaphoreWin32HandleInfoKHR; + void const * pNext = {}; + Semaphore semaphore = {}; + SemaphoreImportFlags flags = {}; + ExternalSemaphoreHandleTypeFlagBits handleType = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + HANDLE handle = {}; + LPCWSTR name = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportSemaphoreWin32HandleInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = ImportSemaphoreWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkImportSemaphoreZirconHandleInfoFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkImportSemaphoreZirconHandleInfoFUCHSIA.html + struct ImportSemaphoreZirconHandleInfoFUCHSIA + { + using NativeType = VkImportSemaphoreZirconHandleInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ImportSemaphoreZirconHandleInfoFUCHSIA( Semaphore semaphore_ = {}, + SemaphoreImportFlags flags_ = {}, + ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, + zx_handle_t zirconHandle_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , semaphore{ semaphore_ } + , flags{ flags_ } + , handleType{ handleType_ } + , zirconHandle{ zirconHandle_ } + { + } + + VULKAN_HPP_CONSTEXPR ImportSemaphoreZirconHandleInfoFUCHSIA( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ImportSemaphoreZirconHandleInfoFUCHSIA( VkImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : ImportSemaphoreZirconHandleInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + ImportSemaphoreZirconHandleInfoFUCHSIA & operator=( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ImportSemaphoreZirconHandleInfoFUCHSIA & operator=( VkImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setSemaphore( Semaphore semaphore_ ) & VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA && setSemaphore( Semaphore semaphore_ ) && VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setFlags( SemaphoreImportFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA && setFlags( SemaphoreImportFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA && setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA & setZirconHandle( zx_handle_t zirconHandle_ ) & VULKAN_HPP_NOEXCEPT + { + zirconHandle = zirconHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreZirconHandleInfoFUCHSIA && setZirconHandle( zx_handle_t zirconHandle_ ) && VULKAN_HPP_NOEXCEPT + { + zirconHandle = zirconHandle_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkImportSemaphoreZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportSemaphoreZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkImportSemaphoreZirconHandleInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkImportSemaphoreZirconHandleInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, flags, handleType, zirconHandle ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = semaphore <=> rhs.semaphore; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = handleType <=> rhs.handleType; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &zirconHandle, &rhs.zirconHandle, sizeof( zx_handle_t ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( flags == rhs.flags ) && ( handleType == rhs.handleType ) && + ( memcmp( &zirconHandle, &rhs.zirconHandle, sizeof( zx_handle_t ) ) == 0 ); + } + + bool operator!=( ImportSemaphoreZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA; + void const * pNext = {}; + Semaphore semaphore = {}; + SemaphoreImportFlags flags = {}; + ExternalSemaphoreHandleTypeFlagBits handleType = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + zx_handle_t zirconHandle = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ImportSemaphoreZirconHandleInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = ImportSemaphoreZirconHandleInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + // wrapper struct for struct VkIndirectCommandsExecutionSetTokenEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsExecutionSetTokenEXT.html + struct IndirectCommandsExecutionSetTokenEXT + { + using NativeType = VkIndirectCommandsExecutionSetTokenEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsExecutionSetTokenEXT( IndirectExecutionSetInfoTypeEXT type_ = IndirectExecutionSetInfoTypeEXT::ePipelines, + ShaderStageFlags shaderStages_ = {} ) VULKAN_HPP_NOEXCEPT + : type{ type_ } + , shaderStages{ shaderStages_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsExecutionSetTokenEXT( IndirectCommandsExecutionSetTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsExecutionSetTokenEXT( VkIndirectCommandsExecutionSetTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsExecutionSetTokenEXT( *reinterpret_cast( &rhs ) ) + { + } + + IndirectCommandsExecutionSetTokenEXT & operator=( IndirectCommandsExecutionSetTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectCommandsExecutionSetTokenEXT & operator=( VkIndirectCommandsExecutionSetTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsExecutionSetTokenEXT & setType( IndirectExecutionSetInfoTypeEXT type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsExecutionSetTokenEXT && setType( IndirectExecutionSetInfoTypeEXT type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsExecutionSetTokenEXT & setShaderStages( ShaderStageFlags shaderStages_ ) & VULKAN_HPP_NOEXCEPT + { + shaderStages = shaderStages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsExecutionSetTokenEXT && setShaderStages( ShaderStageFlags shaderStages_ ) && VULKAN_HPP_NOEXCEPT + { + shaderStages = shaderStages_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsExecutionSetTokenEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsExecutionSetTokenEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsExecutionSetTokenEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectCommandsExecutionSetTokenEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( type, shaderStages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsExecutionSetTokenEXT const & ) const = default; +#else + bool operator==( IndirectCommandsExecutionSetTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( type == rhs.type ) && ( shaderStages == rhs.shaderStages ); +# endif + } + + bool operator!=( IndirectCommandsExecutionSetTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + IndirectExecutionSetInfoTypeEXT type = IndirectExecutionSetInfoTypeEXT::ePipelines; + ShaderStageFlags shaderStages = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsExecutionSetTokenEXT; + }; +#endif + + // wrapper struct for struct VkIndirectCommandsIndexBufferTokenEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsIndexBufferTokenEXT.html + struct IndirectCommandsIndexBufferTokenEXT + { + using NativeType = VkIndirectCommandsIndexBufferTokenEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsIndexBufferTokenEXT( + IndirectCommandsInputModeFlagBitsEXT mode_ = IndirectCommandsInputModeFlagBitsEXT::eVulkanIndexBuffer ) VULKAN_HPP_NOEXCEPT : mode{ mode_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsIndexBufferTokenEXT( IndirectCommandsIndexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsIndexBufferTokenEXT( VkIndirectCommandsIndexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsIndexBufferTokenEXT( *reinterpret_cast( &rhs ) ) + { + } + + IndirectCommandsIndexBufferTokenEXT & operator=( IndirectCommandsIndexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectCommandsIndexBufferTokenEXT & operator=( VkIndirectCommandsIndexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsIndexBufferTokenEXT & setMode( IndirectCommandsInputModeFlagBitsEXT mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsIndexBufferTokenEXT && setMode( IndirectCommandsInputModeFlagBitsEXT mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsIndexBufferTokenEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsIndexBufferTokenEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsIndexBufferTokenEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectCommandsIndexBufferTokenEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( mode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsIndexBufferTokenEXT const & ) const = default; +#else + bool operator==( IndirectCommandsIndexBufferTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( mode == rhs.mode ); +# endif + } + + bool operator!=( IndirectCommandsIndexBufferTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + IndirectCommandsInputModeFlagBitsEXT mode = IndirectCommandsInputModeFlagBitsEXT::eVulkanIndexBuffer; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsIndexBufferTokenEXT; + }; +#endif + + // wrapper struct for struct VkPushConstantRange, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPushConstantRange.html + struct PushConstantRange + { + using NativeType = VkPushConstantRange; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PushConstantRange( ShaderStageFlags stageFlags_ = {}, uint32_t offset_ = {}, uint32_t size_ = {} ) VULKAN_HPP_NOEXCEPT + : stageFlags{ stageFlags_ } + , offset{ offset_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR PushConstantRange( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PushConstantRange( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT : PushConstantRange( *reinterpret_cast( &rhs ) ) {} + + PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PushConstantRange & operator=( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setStageFlags( ShaderStageFlags stageFlags_ ) & VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantRange && setStageFlags( ShaderStageFlags stageFlags_ ) && VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setOffset( uint32_t offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantRange && setOffset( uint32_t offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantRange & setSize( uint32_t size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantRange && setSize( uint32_t size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPushConstantRange const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushConstantRange &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushConstantRange const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPushConstantRange *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( stageFlags, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PushConstantRange const & ) const = default; +#else + bool operator==( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( stageFlags == rhs.stageFlags ) && ( offset == rhs.offset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( PushConstantRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ShaderStageFlags stageFlags = {}; + uint32_t offset = {}; + uint32_t size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PushConstantRange; + }; +#endif + + // wrapper struct for struct VkIndirectCommandsPushConstantTokenEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsPushConstantTokenEXT.html + struct IndirectCommandsPushConstantTokenEXT + { + using NativeType = VkIndirectCommandsPushConstantTokenEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsPushConstantTokenEXT( PushConstantRange updateRange_ = {} ) VULKAN_HPP_NOEXCEPT : updateRange{ updateRange_ } {} + + VULKAN_HPP_CONSTEXPR IndirectCommandsPushConstantTokenEXT( IndirectCommandsPushConstantTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsPushConstantTokenEXT( VkIndirectCommandsPushConstantTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsPushConstantTokenEXT( *reinterpret_cast( &rhs ) ) + { + } + + IndirectCommandsPushConstantTokenEXT & operator=( IndirectCommandsPushConstantTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectCommandsPushConstantTokenEXT & operator=( VkIndirectCommandsPushConstantTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsPushConstantTokenEXT & setUpdateRange( PushConstantRange const & updateRange_ ) & VULKAN_HPP_NOEXCEPT + { + updateRange = updateRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsPushConstantTokenEXT && setUpdateRange( PushConstantRange const & updateRange_ ) && VULKAN_HPP_NOEXCEPT + { + updateRange = updateRange_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsPushConstantTokenEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsPushConstantTokenEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsPushConstantTokenEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectCommandsPushConstantTokenEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( updateRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsPushConstantTokenEXT const & ) const = default; +#else + bool operator==( IndirectCommandsPushConstantTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( updateRange == rhs.updateRange ); +# endif + } + + bool operator!=( IndirectCommandsPushConstantTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + PushConstantRange updateRange = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsPushConstantTokenEXT; + }; +#endif + + // wrapper struct for struct VkIndirectCommandsVertexBufferTokenEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsVertexBufferTokenEXT.html + struct IndirectCommandsVertexBufferTokenEXT + { + using NativeType = VkIndirectCommandsVertexBufferTokenEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsVertexBufferTokenEXT( uint32_t vertexBindingUnit_ = {} ) VULKAN_HPP_NOEXCEPT : vertexBindingUnit{ vertexBindingUnit_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsVertexBufferTokenEXT( IndirectCommandsVertexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsVertexBufferTokenEXT( VkIndirectCommandsVertexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsVertexBufferTokenEXT( *reinterpret_cast( &rhs ) ) + { + } + + IndirectCommandsVertexBufferTokenEXT & operator=( IndirectCommandsVertexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectCommandsVertexBufferTokenEXT & operator=( VkIndirectCommandsVertexBufferTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsVertexBufferTokenEXT & setVertexBindingUnit( uint32_t vertexBindingUnit_ ) & VULKAN_HPP_NOEXCEPT + { + vertexBindingUnit = vertexBindingUnit_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsVertexBufferTokenEXT && setVertexBindingUnit( uint32_t vertexBindingUnit_ ) && VULKAN_HPP_NOEXCEPT + { + vertexBindingUnit = vertexBindingUnit_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsVertexBufferTokenEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsVertexBufferTokenEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsVertexBufferTokenEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectCommandsVertexBufferTokenEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( vertexBindingUnit ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsVertexBufferTokenEXT const & ) const = default; +#else + bool operator==( IndirectCommandsVertexBufferTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( vertexBindingUnit == rhs.vertexBindingUnit ); +# endif + } + + bool operator!=( IndirectCommandsVertexBufferTokenEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t vertexBindingUnit = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsVertexBufferTokenEXT; + }; +#endif + + union IndirectCommandsTokenDataEXT + { + using NativeType = VkIndirectCommandsTokenDataEXT; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT( IndirectCommandsPushConstantTokenEXT const * pPushConstant_ = {} ) : pPushConstant( pPushConstant_ ) + { + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT( IndirectCommandsVertexBufferTokenEXT const * pVertexBuffer_ ) : pVertexBuffer( pVertexBuffer_ ) {} + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT( IndirectCommandsIndexBufferTokenEXT const * pIndexBuffer_ ) : pIndexBuffer( pIndexBuffer_ ) {} + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT( IndirectCommandsExecutionSetTokenEXT const * pExecutionSet_ ) : pExecutionSet( pExecutionSet_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT & setPPushConstant( IndirectCommandsPushConstantTokenEXT const * pPushConstant_ ) & VULKAN_HPP_NOEXCEPT + { + pPushConstant = pPushConstant_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT && setPPushConstant( IndirectCommandsPushConstantTokenEXT const * pPushConstant_ ) && + VULKAN_HPP_NOEXCEPT + { + pPushConstant = pPushConstant_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT & setPVertexBuffer( IndirectCommandsVertexBufferTokenEXT const * pVertexBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + pVertexBuffer = pVertexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT && setPVertexBuffer( IndirectCommandsVertexBufferTokenEXT const * pVertexBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + pVertexBuffer = pVertexBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT & setPIndexBuffer( IndirectCommandsIndexBufferTokenEXT const * pIndexBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + pIndexBuffer = pIndexBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT && setPIndexBuffer( IndirectCommandsIndexBufferTokenEXT const * pIndexBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + pIndexBuffer = pIndexBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT & setPExecutionSet( IndirectCommandsExecutionSetTokenEXT const * pExecutionSet_ ) & VULKAN_HPP_NOEXCEPT + { + pExecutionSet = pExecutionSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsTokenDataEXT && setPExecutionSet( IndirectCommandsExecutionSetTokenEXT const * pExecutionSet_ ) && + VULKAN_HPP_NOEXCEPT + { + pExecutionSet = pExecutionSet_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsTokenDataEXT const &() const + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsTokenDataEXT &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + IndirectCommandsPushConstantTokenEXT const * pPushConstant; + IndirectCommandsVertexBufferTokenEXT const * pVertexBuffer; + IndirectCommandsIndexBufferTokenEXT const * pIndexBuffer; + IndirectCommandsExecutionSetTokenEXT const * pExecutionSet; +#else + VkIndirectCommandsPushConstantTokenEXT const * pPushConstant; + VkIndirectCommandsVertexBufferTokenEXT const * pVertexBuffer; + VkIndirectCommandsIndexBufferTokenEXT const * pIndexBuffer; + VkIndirectCommandsExecutionSetTokenEXT const * pExecutionSet; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsTokenDataEXT; + }; +#endif + + // wrapper struct for struct VkIndirectCommandsLayoutTokenEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenEXT.html + struct IndirectCommandsLayoutTokenEXT + { + using NativeType = VkIndirectCommandsLayoutTokenEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectCommandsLayoutTokenEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT( IndirectCommandsTokenTypeEXT type_ = IndirectCommandsTokenTypeEXT::eExecutionSet, + IndirectCommandsTokenDataEXT data_ = {}, + uint32_t offset_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , data{ data_ } + , offset{ offset_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT( IndirectCommandsLayoutTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutTokenEXT( VkIndirectCommandsLayoutTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsLayoutTokenEXT( *reinterpret_cast( &rhs ) ) + { + } + + IndirectCommandsLayoutTokenEXT & operator=( IndirectCommandsLayoutTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectCommandsLayoutTokenEXT & operator=( VkIndirectCommandsLayoutTokenEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT & setType( IndirectCommandsTokenTypeEXT type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT && setType( IndirectCommandsTokenTypeEXT type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT & setData( IndirectCommandsTokenDataEXT const & data_ ) & VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT && setData( IndirectCommandsTokenDataEXT const & data_ ) && VULKAN_HPP_NOEXCEPT + { + data = data_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT & setOffset( uint32_t offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenEXT && setOffset( uint32_t offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsLayoutTokenEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutTokenEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutTokenEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutTokenEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, data, offset ); + } +#endif + + public: + StructureType sType = StructureType::eIndirectCommandsLayoutTokenEXT; + void const * pNext = {}; + IndirectCommandsTokenTypeEXT type = IndirectCommandsTokenTypeEXT::eExecutionSet; + IndirectCommandsTokenDataEXT data = {}; + uint32_t offset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsLayoutTokenEXT; + }; +#endif + + template <> + struct CppType + { + using Type = IndirectCommandsLayoutTokenEXT; + }; + + // wrapper struct for struct VkIndirectCommandsLayoutCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoEXT.html + struct IndirectCommandsLayoutCreateInfoEXT + { + using NativeType = VkIndirectCommandsLayoutCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectCommandsLayoutCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoEXT( IndirectCommandsLayoutUsageFlagsEXT flags_ = {}, + ShaderStageFlags shaderStages_ = {}, + uint32_t indirectStride_ = {}, + PipelineLayout pipelineLayout_ = {}, + uint32_t tokenCount_ = {}, + IndirectCommandsLayoutTokenEXT const * pTokens_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , shaderStages{ shaderStages_ } + , indirectStride{ indirectStride_ } + , pipelineLayout{ pipelineLayout_ } + , tokenCount{ tokenCount_ } + , pTokens{ pTokens_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoEXT( IndirectCommandsLayoutCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutCreateInfoEXT( VkIndirectCommandsLayoutCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsLayoutCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutCreateInfoEXT( IndirectCommandsLayoutUsageFlagsEXT flags_, + ShaderStageFlags shaderStages_, + uint32_t indirectStride_, + PipelineLayout pipelineLayout_, + ArrayProxyNoTemporaries const & tokens_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , shaderStages( shaderStages_ ) + , indirectStride( indirectStride_ ) + , pipelineLayout( pipelineLayout_ ) + , tokenCount( static_cast( tokens_.size() ) ) + , pTokens( tokens_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + IndirectCommandsLayoutCreateInfoEXT & operator=( IndirectCommandsLayoutCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectCommandsLayoutCreateInfoEXT & operator=( VkIndirectCommandsLayoutCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setFlags( IndirectCommandsLayoutUsageFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT && setFlags( IndirectCommandsLayoutUsageFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setShaderStages( ShaderStageFlags shaderStages_ ) & VULKAN_HPP_NOEXCEPT + { + shaderStages = shaderStages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT && setShaderStages( ShaderStageFlags shaderStages_ ) && VULKAN_HPP_NOEXCEPT + { + shaderStages = shaderStages_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setIndirectStride( uint32_t indirectStride_ ) & VULKAN_HPP_NOEXCEPT + { + indirectStride = indirectStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT && setIndirectStride( uint32_t indirectStride_ ) && VULKAN_HPP_NOEXCEPT + { + indirectStride = indirectStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setPipelineLayout( PipelineLayout pipelineLayout_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineLayout = pipelineLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT && setPipelineLayout( PipelineLayout pipelineLayout_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineLayout = pipelineLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setTokenCount( uint32_t tokenCount_ ) & VULKAN_HPP_NOEXCEPT + { + tokenCount = tokenCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT && setTokenCount( uint32_t tokenCount_ ) && VULKAN_HPP_NOEXCEPT + { + tokenCount = tokenCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT & setPTokens( IndirectCommandsLayoutTokenEXT const * pTokens_ ) & VULKAN_HPP_NOEXCEPT + { + pTokens = pTokens_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoEXT && setPTokens( IndirectCommandsLayoutTokenEXT const * pTokens_ ) && VULKAN_HPP_NOEXCEPT + { + pTokens = pTokens_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutCreateInfoEXT & setTokens( ArrayProxyNoTemporaries const & tokens_ ) VULKAN_HPP_NOEXCEPT + { + tokenCount = static_cast( tokens_.size() ); + pTokens = tokens_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsLayoutCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, shaderStages, indirectStride, pipelineLayout, tokenCount, pTokens ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsLayoutCreateInfoEXT const & ) const = default; +#else + bool operator==( IndirectCommandsLayoutCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( shaderStages == rhs.shaderStages ) && + ( indirectStride == rhs.indirectStride ) && ( pipelineLayout == rhs.pipelineLayout ) && ( tokenCount == rhs.tokenCount ) && + ( pTokens == rhs.pTokens ); +# endif + } + + bool operator!=( IndirectCommandsLayoutCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoEXT; + void const * pNext = {}; + IndirectCommandsLayoutUsageFlagsEXT flags = {}; + ShaderStageFlags shaderStages = {}; + uint32_t indirectStride = {}; + PipelineLayout pipelineLayout = {}; + uint32_t tokenCount = {}; + IndirectCommandsLayoutTokenEXT const * pTokens = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsLayoutCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = IndirectCommandsLayoutCreateInfoEXT; + }; + + // wrapper struct for struct VkIndirectCommandsLayoutTokenNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutTokenNV.html + struct IndirectCommandsLayoutTokenNV + { + using NativeType = VkIndirectCommandsLayoutTokenNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectCommandsLayoutTokenNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutTokenNV( IndirectCommandsTokenTypeNV tokenType_ = IndirectCommandsTokenTypeNV::eShaderGroup, + uint32_t stream_ = {}, + uint32_t offset_ = {}, + uint32_t vertexBindingUnit_ = {}, + Bool32 vertexDynamicStride_ = {}, + PipelineLayout pushconstantPipelineLayout_ = {}, + ShaderStageFlags pushconstantShaderStageFlags_ = {}, + uint32_t pushconstantOffset_ = {}, + uint32_t pushconstantSize_ = {}, + IndirectStateFlagsNV indirectStateFlags_ = {}, + uint32_t indexTypeCount_ = {}, + IndexType const * pIndexTypes_ = {}, + uint32_t const * pIndexTypeValues_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tokenType{ tokenType_ } + , stream{ stream_ } + , offset{ offset_ } + , vertexBindingUnit{ vertexBindingUnit_ } + , vertexDynamicStride{ vertexDynamicStride_ } + , pushconstantPipelineLayout{ pushconstantPipelineLayout_ } + , pushconstantShaderStageFlags{ pushconstantShaderStageFlags_ } + , pushconstantOffset{ pushconstantOffset_ } + , pushconstantSize{ pushconstantSize_ } + , indirectStateFlags{ indirectStateFlags_ } + , indexTypeCount{ indexTypeCount_ } + , pIndexTypes{ pIndexTypes_ } + , pIndexTypeValues{ pIndexTypeValues_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutTokenNV( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutTokenNV( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsLayoutTokenNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutTokenNV( IndirectCommandsTokenTypeNV tokenType_, + uint32_t stream_, + uint32_t offset_, + uint32_t vertexBindingUnit_, + Bool32 vertexDynamicStride_, + PipelineLayout pushconstantPipelineLayout_, + ShaderStageFlags pushconstantShaderStageFlags_, + uint32_t pushconstantOffset_, + uint32_t pushconstantSize_, + IndirectStateFlagsNV indirectStateFlags_, + ArrayProxyNoTemporaries const & indexTypes_, + ArrayProxyNoTemporaries const & indexTypeValues_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , tokenType( tokenType_ ) + , stream( stream_ ) + , offset( offset_ ) + , vertexBindingUnit( vertexBindingUnit_ ) + , vertexDynamicStride( vertexDynamicStride_ ) + , pushconstantPipelineLayout( pushconstantPipelineLayout_ ) + , pushconstantShaderStageFlags( pushconstantShaderStageFlags_ ) + , pushconstantOffset( pushconstantOffset_ ) + , pushconstantSize( pushconstantSize_ ) + , indirectStateFlags( indirectStateFlags_ ) + , indexTypeCount( static_cast( indexTypes_.size() ) ) + , pIndexTypes( indexTypes_.data() ) + , pIndexTypeValues( indexTypeValues_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( indexTypes_.size() == indexTypeValues_.size() ); +# else + if ( indexTypes_.size() != indexTypeValues_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::IndirectCommandsLayoutTokenNV::IndirectCommandsLayoutTokenNV: indexTypes_.size() != indexTypeValues_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + IndirectCommandsLayoutTokenNV & operator=( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectCommandsLayoutTokenNV & operator=( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setTokenType( IndirectCommandsTokenTypeNV tokenType_ ) & VULKAN_HPP_NOEXCEPT + { + tokenType = tokenType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setTokenType( IndirectCommandsTokenTypeNV tokenType_ ) && VULKAN_HPP_NOEXCEPT + { + tokenType = tokenType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setStream( uint32_t stream_ ) & VULKAN_HPP_NOEXCEPT + { + stream = stream_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setStream( uint32_t stream_ ) && VULKAN_HPP_NOEXCEPT + { + stream = stream_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setOffset( uint32_t offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setOffset( uint32_t offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setVertexBindingUnit( uint32_t vertexBindingUnit_ ) & VULKAN_HPP_NOEXCEPT + { + vertexBindingUnit = vertexBindingUnit_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setVertexBindingUnit( uint32_t vertexBindingUnit_ ) && VULKAN_HPP_NOEXCEPT + { + vertexBindingUnit = vertexBindingUnit_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setVertexDynamicStride( Bool32 vertexDynamicStride_ ) & VULKAN_HPP_NOEXCEPT + { + vertexDynamicStride = vertexDynamicStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setVertexDynamicStride( Bool32 vertexDynamicStride_ ) && VULKAN_HPP_NOEXCEPT + { + vertexDynamicStride = vertexDynamicStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantPipelineLayout( PipelineLayout pushconstantPipelineLayout_ ) & VULKAN_HPP_NOEXCEPT + { + pushconstantPipelineLayout = pushconstantPipelineLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setPushconstantPipelineLayout( PipelineLayout pushconstantPipelineLayout_ ) && VULKAN_HPP_NOEXCEPT + { + pushconstantPipelineLayout = pushconstantPipelineLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantShaderStageFlags( ShaderStageFlags pushconstantShaderStageFlags_ ) & + VULKAN_HPP_NOEXCEPT + { + pushconstantShaderStageFlags = pushconstantShaderStageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setPushconstantShaderStageFlags( ShaderStageFlags pushconstantShaderStageFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + pushconstantShaderStageFlags = pushconstantShaderStageFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantOffset( uint32_t pushconstantOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pushconstantOffset = pushconstantOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setPushconstantOffset( uint32_t pushconstantOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pushconstantOffset = pushconstantOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPushconstantSize( uint32_t pushconstantSize_ ) & VULKAN_HPP_NOEXCEPT + { + pushconstantSize = pushconstantSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setPushconstantSize( uint32_t pushconstantSize_ ) && VULKAN_HPP_NOEXCEPT + { + pushconstantSize = pushconstantSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setIndirectStateFlags( IndirectStateFlagsNV indirectStateFlags_ ) & VULKAN_HPP_NOEXCEPT + { + indirectStateFlags = indirectStateFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setIndirectStateFlags( IndirectStateFlagsNV indirectStateFlags_ ) && VULKAN_HPP_NOEXCEPT + { + indirectStateFlags = indirectStateFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setIndexTypeCount( uint32_t indexTypeCount_ ) & VULKAN_HPP_NOEXCEPT + { + indexTypeCount = indexTypeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setIndexTypeCount( uint32_t indexTypeCount_ ) && VULKAN_HPP_NOEXCEPT + { + indexTypeCount = indexTypeCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPIndexTypes( IndexType const * pIndexTypes_ ) & VULKAN_HPP_NOEXCEPT + { + pIndexTypes = pIndexTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setPIndexTypes( IndexType const * pIndexTypes_ ) && VULKAN_HPP_NOEXCEPT + { + pIndexTypes = pIndexTypes_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutTokenNV & setIndexTypes( ArrayProxyNoTemporaries const & indexTypes_ ) VULKAN_HPP_NOEXCEPT + { + indexTypeCount = static_cast( indexTypes_.size() ); + pIndexTypes = indexTypes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & setPIndexTypeValues( uint32_t const * pIndexTypeValues_ ) & VULKAN_HPP_NOEXCEPT + { + pIndexTypeValues = pIndexTypeValues_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV && setPIndexTypeValues( uint32_t const * pIndexTypeValues_ ) && VULKAN_HPP_NOEXCEPT + { + pIndexTypeValues = pIndexTypeValues_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutTokenNV & setIndexTypeValues( ArrayProxyNoTemporaries const & indexTypeValues_ ) VULKAN_HPP_NOEXCEPT + { + indexTypeCount = static_cast( indexTypeValues_.size() ); + pIndexTypeValues = indexTypeValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsLayoutTokenNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutTokenNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutTokenNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutTokenNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + tokenType, + stream, + offset, + vertexBindingUnit, + vertexDynamicStride, + pushconstantPipelineLayout, + pushconstantShaderStageFlags, + pushconstantOffset, + pushconstantSize, + indirectStateFlags, + indexTypeCount, + pIndexTypes, + pIndexTypeValues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsLayoutTokenNV const & ) const = default; +#else + bool operator==( IndirectCommandsLayoutTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tokenType == rhs.tokenType ) && ( stream == rhs.stream ) && ( offset == rhs.offset ) && + ( vertexBindingUnit == rhs.vertexBindingUnit ) && ( vertexDynamicStride == rhs.vertexDynamicStride ) && + ( pushconstantPipelineLayout == rhs.pushconstantPipelineLayout ) && ( pushconstantShaderStageFlags == rhs.pushconstantShaderStageFlags ) && + ( pushconstantOffset == rhs.pushconstantOffset ) && ( pushconstantSize == rhs.pushconstantSize ) && + ( indirectStateFlags == rhs.indirectStateFlags ) && ( indexTypeCount == rhs.indexTypeCount ) && ( pIndexTypes == rhs.pIndexTypes ) && + ( pIndexTypeValues == rhs.pIndexTypeValues ); +# endif + } + + bool operator!=( IndirectCommandsLayoutTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eIndirectCommandsLayoutTokenNV; + void const * pNext = {}; + IndirectCommandsTokenTypeNV tokenType = IndirectCommandsTokenTypeNV::eShaderGroup; + uint32_t stream = {}; + uint32_t offset = {}; + uint32_t vertexBindingUnit = {}; + Bool32 vertexDynamicStride = {}; + PipelineLayout pushconstantPipelineLayout = {}; + ShaderStageFlags pushconstantShaderStageFlags = {}; + uint32_t pushconstantOffset = {}; + uint32_t pushconstantSize = {}; + IndirectStateFlagsNV indirectStateFlags = {}; + uint32_t indexTypeCount = {}; + IndexType const * pIndexTypes = {}; + uint32_t const * pIndexTypeValues = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsLayoutTokenNV; + }; +#endif + + template <> + struct CppType + { + using Type = IndirectCommandsLayoutTokenNV; + }; + + // wrapper struct for struct VkIndirectCommandsLayoutCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutCreateInfoNV.html + struct IndirectCommandsLayoutCreateInfoNV + { + using NativeType = VkIndirectCommandsLayoutCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectCommandsLayoutCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoNV( IndirectCommandsLayoutUsageFlagsNV flags_ = {}, + PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, + uint32_t tokenCount_ = {}, + IndirectCommandsLayoutTokenNV const * pTokens_ = {}, + uint32_t streamCount_ = {}, + uint32_t const * pStreamStrides_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pipelineBindPoint{ pipelineBindPoint_ } + , tokenCount{ tokenCount_ } + , pTokens{ pTokens_ } + , streamCount{ streamCount_ } + , pStreamStrides{ pStreamStrides_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoNV( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutCreateInfoNV( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsLayoutCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutCreateInfoNV( IndirectCommandsLayoutUsageFlagsNV flags_, + PipelineBindPoint pipelineBindPoint_, + ArrayProxyNoTemporaries const & tokens_, + ArrayProxyNoTemporaries const & streamStrides_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , tokenCount( static_cast( tokens_.size() ) ) + , pTokens( tokens_.data() ) + , streamCount( static_cast( streamStrides_.size() ) ) + , pStreamStrides( streamStrides_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + IndirectCommandsLayoutCreateInfoNV & operator=( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectCommandsLayoutCreateInfoNV & operator=( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setFlags( IndirectCommandsLayoutUsageFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV && setFlags( IndirectCommandsLayoutUsageFlagsNV flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV && setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setTokenCount( uint32_t tokenCount_ ) & VULKAN_HPP_NOEXCEPT + { + tokenCount = tokenCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV && setTokenCount( uint32_t tokenCount_ ) && VULKAN_HPP_NOEXCEPT + { + tokenCount = tokenCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setPTokens( IndirectCommandsLayoutTokenNV const * pTokens_ ) & VULKAN_HPP_NOEXCEPT + { + pTokens = pTokens_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV && setPTokens( IndirectCommandsLayoutTokenNV const * pTokens_ ) && VULKAN_HPP_NOEXCEPT + { + pTokens = pTokens_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutCreateInfoNV & setTokens( ArrayProxyNoTemporaries const & tokens_ ) VULKAN_HPP_NOEXCEPT + { + tokenCount = static_cast( tokens_.size() ); + pTokens = tokens_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setStreamCount( uint32_t streamCount_ ) & VULKAN_HPP_NOEXCEPT + { + streamCount = streamCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV && setStreamCount( uint32_t streamCount_ ) && VULKAN_HPP_NOEXCEPT + { + streamCount = streamCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & setPStreamStrides( uint32_t const * pStreamStrides_ ) & VULKAN_HPP_NOEXCEPT + { + pStreamStrides = pStreamStrides_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV && setPStreamStrides( uint32_t const * pStreamStrides_ ) && VULKAN_HPP_NOEXCEPT + { + pStreamStrides = pStreamStrides_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectCommandsLayoutCreateInfoNV & setStreamStrides( ArrayProxyNoTemporaries const & streamStrides_ ) VULKAN_HPP_NOEXCEPT + { + streamCount = static_cast( streamStrides_.size() ); + pStreamStrides = streamStrides_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsLayoutCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pipelineBindPoint, tokenCount, pTokens, streamCount, pStreamStrides ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsLayoutCreateInfoNV const & ) const = default; +#else + bool operator==( IndirectCommandsLayoutCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && + ( tokenCount == rhs.tokenCount ) && ( pTokens == rhs.pTokens ) && ( streamCount == rhs.streamCount ) && ( pStreamStrides == rhs.pStreamStrides ); +# endif + } + + bool operator!=( IndirectCommandsLayoutCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoNV; + void const * pNext = {}; + IndirectCommandsLayoutUsageFlagsNV flags = {}; + PipelineBindPoint pipelineBindPoint = PipelineBindPoint::eGraphics; + uint32_t tokenCount = {}; + IndirectCommandsLayoutTokenNV const * pTokens = {}; + uint32_t streamCount = {}; + uint32_t const * pStreamStrides = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsLayoutCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = IndirectCommandsLayoutCreateInfoNV; + }; + + // wrapper struct for struct VkIndirectCommandsLayoutPushDataTokenNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectCommandsLayoutPushDataTokenNV.html + struct IndirectCommandsLayoutPushDataTokenNV + { + using NativeType = VkIndirectCommandsLayoutPushDataTokenNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectCommandsLayoutPushDataTokenNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + IndirectCommandsLayoutPushDataTokenNV( uint32_t pushDataOffset_ = {}, uint32_t pushDataSize_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pushDataOffset{ pushDataOffset_ } + , pushDataSize{ pushDataSize_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutPushDataTokenNV( IndirectCommandsLayoutPushDataTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectCommandsLayoutPushDataTokenNV( VkIndirectCommandsLayoutPushDataTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectCommandsLayoutPushDataTokenNV( *reinterpret_cast( &rhs ) ) + { + } + + IndirectCommandsLayoutPushDataTokenNV & operator=( IndirectCommandsLayoutPushDataTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectCommandsLayoutPushDataTokenNV & operator=( VkIndirectCommandsLayoutPushDataTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutPushDataTokenNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutPushDataTokenNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutPushDataTokenNV & setPushDataOffset( uint32_t pushDataOffset_ ) & VULKAN_HPP_NOEXCEPT + { + pushDataOffset = pushDataOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutPushDataTokenNV && setPushDataOffset( uint32_t pushDataOffset_ ) && VULKAN_HPP_NOEXCEPT + { + pushDataOffset = pushDataOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutPushDataTokenNV & setPushDataSize( uint32_t pushDataSize_ ) & VULKAN_HPP_NOEXCEPT + { + pushDataSize = pushDataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutPushDataTokenNV && setPushDataSize( uint32_t pushDataSize_ ) && VULKAN_HPP_NOEXCEPT + { + pushDataSize = pushDataSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectCommandsLayoutPushDataTokenNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutPushDataTokenNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutPushDataTokenNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectCommandsLayoutPushDataTokenNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pushDataOffset, pushDataSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectCommandsLayoutPushDataTokenNV const & ) const = default; +#else + bool operator==( IndirectCommandsLayoutPushDataTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pushDataOffset == rhs.pushDataOffset ) && ( pushDataSize == rhs.pushDataSize ); +# endif + } + + bool operator!=( IndirectCommandsLayoutPushDataTokenNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eIndirectCommandsLayoutPushDataTokenNV; + void const * pNext = {}; + uint32_t pushDataOffset = {}; + uint32_t pushDataSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectCommandsLayoutPushDataTokenNV; + }; +#endif + + template <> + struct CppType + { + using Type = IndirectCommandsLayoutPushDataTokenNV; + }; + + // wrapper struct for struct VkIndirectExecutionSetPipelineInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectExecutionSetPipelineInfoEXT.html + struct IndirectExecutionSetPipelineInfoEXT + { + using NativeType = VkIndirectExecutionSetPipelineInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectExecutionSetPipelineInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + IndirectExecutionSetPipelineInfoEXT( Pipeline initialPipeline_ = {}, uint32_t maxPipelineCount_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , initialPipeline{ initialPipeline_ } + , maxPipelineCount{ maxPipelineCount_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectExecutionSetPipelineInfoEXT( IndirectExecutionSetPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectExecutionSetPipelineInfoEXT( VkIndirectExecutionSetPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectExecutionSetPipelineInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + IndirectExecutionSetPipelineInfoEXT & operator=( IndirectExecutionSetPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectExecutionSetPipelineInfoEXT & operator=( VkIndirectExecutionSetPipelineInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetPipelineInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetPipelineInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetPipelineInfoEXT & setInitialPipeline( Pipeline initialPipeline_ ) & VULKAN_HPP_NOEXCEPT + { + initialPipeline = initialPipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetPipelineInfoEXT && setInitialPipeline( Pipeline initialPipeline_ ) && VULKAN_HPP_NOEXCEPT + { + initialPipeline = initialPipeline_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetPipelineInfoEXT & setMaxPipelineCount( uint32_t maxPipelineCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxPipelineCount = maxPipelineCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetPipelineInfoEXT && setMaxPipelineCount( uint32_t maxPipelineCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxPipelineCount = maxPipelineCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectExecutionSetPipelineInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetPipelineInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetPipelineInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetPipelineInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, initialPipeline, maxPipelineCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectExecutionSetPipelineInfoEXT const & ) const = default; +#else + bool operator==( IndirectExecutionSetPipelineInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( initialPipeline == rhs.initialPipeline ) && ( maxPipelineCount == rhs.maxPipelineCount ); +# endif + } + + bool operator!=( IndirectExecutionSetPipelineInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eIndirectExecutionSetPipelineInfoEXT; + void const * pNext = {}; + Pipeline initialPipeline = {}; + uint32_t maxPipelineCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectExecutionSetPipelineInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = IndirectExecutionSetPipelineInfoEXT; + }; + + // wrapper struct for struct VkIndirectExecutionSetShaderLayoutInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderLayoutInfoEXT.html + struct IndirectExecutionSetShaderLayoutInfoEXT + { + using NativeType = VkIndirectExecutionSetShaderLayoutInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectExecutionSetShaderLayoutInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectExecutionSetShaderLayoutInfoEXT( uint32_t setLayoutCount_ = {}, + DescriptorSetLayout const * pSetLayouts_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , setLayoutCount{ setLayoutCount_ } + , pSetLayouts{ pSetLayouts_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectExecutionSetShaderLayoutInfoEXT( IndirectExecutionSetShaderLayoutInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectExecutionSetShaderLayoutInfoEXT( VkIndirectExecutionSetShaderLayoutInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectExecutionSetShaderLayoutInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderLayoutInfoEXT( ArrayProxyNoTemporaries const & setLayouts_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), setLayoutCount( static_cast( setLayouts_.size() ) ), pSetLayouts( setLayouts_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + IndirectExecutionSetShaderLayoutInfoEXT & operator=( IndirectExecutionSetShaderLayoutInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectExecutionSetShaderLayoutInfoEXT & operator=( VkIndirectExecutionSetShaderLayoutInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderLayoutInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderLayoutInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderLayoutInfoEXT & setSetLayoutCount( uint32_t setLayoutCount_ ) & VULKAN_HPP_NOEXCEPT + { + setLayoutCount = setLayoutCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderLayoutInfoEXT && setSetLayoutCount( uint32_t setLayoutCount_ ) && VULKAN_HPP_NOEXCEPT + { + setLayoutCount = setLayoutCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderLayoutInfoEXT & setPSetLayouts( DescriptorSetLayout const * pSetLayouts_ ) & VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderLayoutInfoEXT && setPSetLayouts( DescriptorSetLayout const * pSetLayouts_ ) && VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderLayoutInfoEXT & setSetLayouts( ArrayProxyNoTemporaries const & setLayouts_ ) VULKAN_HPP_NOEXCEPT + { + setLayoutCount = static_cast( setLayouts_.size() ); + pSetLayouts = setLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectExecutionSetShaderLayoutInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetShaderLayoutInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetShaderLayoutInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetShaderLayoutInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, setLayoutCount, pSetLayouts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectExecutionSetShaderLayoutInfoEXT const & ) const = default; +#else + bool operator==( IndirectExecutionSetShaderLayoutInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( setLayoutCount == rhs.setLayoutCount ) && ( pSetLayouts == rhs.pSetLayouts ); +# endif + } + + bool operator!=( IndirectExecutionSetShaderLayoutInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eIndirectExecutionSetShaderLayoutInfoEXT; + void const * pNext = {}; + uint32_t setLayoutCount = {}; + DescriptorSetLayout const * pSetLayouts = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectExecutionSetShaderLayoutInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = IndirectExecutionSetShaderLayoutInfoEXT; + }; + + // wrapper struct for struct VkIndirectExecutionSetShaderInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectExecutionSetShaderInfoEXT.html + struct IndirectExecutionSetShaderInfoEXT + { + using NativeType = VkIndirectExecutionSetShaderInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectExecutionSetShaderInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR IndirectExecutionSetShaderInfoEXT( uint32_t shaderCount_ = {}, + ShaderEXT const * pInitialShaders_ = {}, + IndirectExecutionSetShaderLayoutInfoEXT const * pSetLayoutInfos_ = {}, + uint32_t maxShaderCount_ = {}, + uint32_t pushConstantRangeCount_ = {}, + PushConstantRange const * pPushConstantRanges_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderCount{ shaderCount_ } + , pInitialShaders{ pInitialShaders_ } + , pSetLayoutInfos{ pSetLayoutInfos_ } + , maxShaderCount{ maxShaderCount_ } + , pushConstantRangeCount{ pushConstantRangeCount_ } + , pPushConstantRanges{ pPushConstantRanges_ } + { + } + + VULKAN_HPP_CONSTEXPR IndirectExecutionSetShaderInfoEXT( IndirectExecutionSetShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectExecutionSetShaderInfoEXT( VkIndirectExecutionSetShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectExecutionSetShaderInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderInfoEXT( ArrayProxyNoTemporaries const & initialShaders_, + ArrayProxyNoTemporaries const & setLayoutInfos_ = {}, + uint32_t maxShaderCount_ = {}, + ArrayProxyNoTemporaries const & pushConstantRanges_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , shaderCount( static_cast( initialShaders_.size() ) ) + , pInitialShaders( initialShaders_.data() ) + , pSetLayoutInfos( setLayoutInfos_.data() ) + , maxShaderCount( maxShaderCount_ ) + , pushConstantRangeCount( static_cast( pushConstantRanges_.size() ) ) + , pPushConstantRanges( pushConstantRanges_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( setLayoutInfos_.empty() || ( initialShaders_.size() == setLayoutInfos_.size() ) ); +# else + if ( !setLayoutInfos_.empty() && ( initialShaders_.size() != setLayoutInfos_.size() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::IndirectExecutionSetShaderInfoEXT::IndirectExecutionSetShaderInfoEXT: !setLayoutInfos_.empty() && ( initialShaders_.size() != setLayoutInfos_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + IndirectExecutionSetShaderInfoEXT & operator=( IndirectExecutionSetShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectExecutionSetShaderInfoEXT & operator=( VkIndirectExecutionSetShaderInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setShaderCount( uint32_t shaderCount_ ) & VULKAN_HPP_NOEXCEPT + { + shaderCount = shaderCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT && setShaderCount( uint32_t shaderCount_ ) && VULKAN_HPP_NOEXCEPT + { + shaderCount = shaderCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setPInitialShaders( ShaderEXT const * pInitialShaders_ ) & VULKAN_HPP_NOEXCEPT + { + pInitialShaders = pInitialShaders_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT && setPInitialShaders( ShaderEXT const * pInitialShaders_ ) && VULKAN_HPP_NOEXCEPT + { + pInitialShaders = pInitialShaders_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderInfoEXT & setInitialShaders( ArrayProxyNoTemporaries const & initialShaders_ ) VULKAN_HPP_NOEXCEPT + { + shaderCount = static_cast( initialShaders_.size() ); + pInitialShaders = initialShaders_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setPSetLayoutInfos( IndirectExecutionSetShaderLayoutInfoEXT const * pSetLayoutInfos_ ) & + VULKAN_HPP_NOEXCEPT + { + pSetLayoutInfos = pSetLayoutInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT && setPSetLayoutInfos( IndirectExecutionSetShaderLayoutInfoEXT const * pSetLayoutInfos_ ) && + VULKAN_HPP_NOEXCEPT + { + pSetLayoutInfos = pSetLayoutInfos_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderInfoEXT & + setSetLayoutInfos( ArrayProxyNoTemporaries const & setLayoutInfos_ ) VULKAN_HPP_NOEXCEPT + { + shaderCount = static_cast( setLayoutInfos_.size() ); + pSetLayoutInfos = setLayoutInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setMaxShaderCount( uint32_t maxShaderCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxShaderCount = maxShaderCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT && setMaxShaderCount( uint32_t maxShaderCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxShaderCount = maxShaderCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) & VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = pushConstantRangeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT && setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) && VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = pushConstantRangeCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT & setPPushConstantRanges( PushConstantRange const * pPushConstantRanges_ ) & VULKAN_HPP_NOEXCEPT + { + pPushConstantRanges = pPushConstantRanges_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetShaderInfoEXT && setPPushConstantRanges( PushConstantRange const * pPushConstantRanges_ ) && VULKAN_HPP_NOEXCEPT + { + pPushConstantRanges = pPushConstantRanges_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + IndirectExecutionSetShaderInfoEXT & + setPushConstantRanges( ArrayProxyNoTemporaries const & pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = static_cast( pushConstantRanges_.size() ); + pPushConstantRanges = pushConstantRanges_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectExecutionSetShaderInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetShaderInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetShaderInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetShaderInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderCount, pInitialShaders, pSetLayoutInfos, maxShaderCount, pushConstantRangeCount, pPushConstantRanges ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( IndirectExecutionSetShaderInfoEXT const & ) const = default; +#else + bool operator==( IndirectExecutionSetShaderInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCount == rhs.shaderCount ) && ( pInitialShaders == rhs.pInitialShaders ) && + ( pSetLayoutInfos == rhs.pSetLayoutInfos ) && ( maxShaderCount == rhs.maxShaderCount ) && + ( pushConstantRangeCount == rhs.pushConstantRangeCount ) && ( pPushConstantRanges == rhs.pPushConstantRanges ); +# endif + } + + bool operator!=( IndirectExecutionSetShaderInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eIndirectExecutionSetShaderInfoEXT; + void const * pNext = {}; + uint32_t shaderCount = {}; + ShaderEXT const * pInitialShaders = {}; + IndirectExecutionSetShaderLayoutInfoEXT const * pSetLayoutInfos = {}; + uint32_t maxShaderCount = {}; + uint32_t pushConstantRangeCount = {}; + PushConstantRange const * pPushConstantRanges = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectExecutionSetShaderInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = IndirectExecutionSetShaderInfoEXT; + }; + + union IndirectExecutionSetInfoEXT + { + using NativeType = VkIndirectExecutionSetInfoEXT; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetInfoEXT( IndirectExecutionSetPipelineInfoEXT const * pPipelineInfo_ = {} ) : pPipelineInfo( pPipelineInfo_ ) {} + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetInfoEXT( IndirectExecutionSetShaderInfoEXT const * pShaderInfo_ ) : pShaderInfo( pShaderInfo_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetInfoEXT & setPPipelineInfo( IndirectExecutionSetPipelineInfoEXT const * pPipelineInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pPipelineInfo = pPipelineInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetInfoEXT && setPPipelineInfo( IndirectExecutionSetPipelineInfoEXT const * pPipelineInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pPipelineInfo = pPipelineInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetInfoEXT & setPShaderInfo( IndirectExecutionSetShaderInfoEXT const * pShaderInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pShaderInfo = pShaderInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetInfoEXT && setPShaderInfo( IndirectExecutionSetShaderInfoEXT const * pShaderInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pShaderInfo = pShaderInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectExecutionSetInfoEXT const &() const + { + return *reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetInfoEXT &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + IndirectExecutionSetPipelineInfoEXT const * pPipelineInfo; + IndirectExecutionSetShaderInfoEXT const * pShaderInfo; +#else + VkIndirectExecutionSetPipelineInfoEXT const * pPipelineInfo; + VkIndirectExecutionSetShaderInfoEXT const * pShaderInfo; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectExecutionSetInfoEXT; + }; +#endif + + // wrapper struct for struct VkIndirectExecutionSetCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkIndirectExecutionSetCreateInfoEXT.html + struct IndirectExecutionSetCreateInfoEXT + { + using NativeType = VkIndirectExecutionSetCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectExecutionSetCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT( IndirectExecutionSetInfoTypeEXT type_ = IndirectExecutionSetInfoTypeEXT::ePipelines, + IndirectExecutionSetInfoEXT info_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , info{ info_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT( IndirectExecutionSetCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + IndirectExecutionSetCreateInfoEXT( VkIndirectExecutionSetCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : IndirectExecutionSetCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + IndirectExecutionSetCreateInfoEXT & operator=( IndirectExecutionSetCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + IndirectExecutionSetCreateInfoEXT & operator=( VkIndirectExecutionSetCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT & setType( IndirectExecutionSetInfoTypeEXT type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT && setType( IndirectExecutionSetInfoTypeEXT type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT & setInfo( IndirectExecutionSetInfoEXT const & info_ ) & VULKAN_HPP_NOEXCEPT + { + info = info_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 IndirectExecutionSetCreateInfoEXT && setInfo( IndirectExecutionSetInfoEXT const & info_ ) && VULKAN_HPP_NOEXCEPT + { + info = info_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkIndirectExecutionSetCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkIndirectExecutionSetCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, info ); + } +#endif + + public: + StructureType sType = StructureType::eIndirectExecutionSetCreateInfoEXT; + void const * pNext = {}; + IndirectExecutionSetInfoTypeEXT type = IndirectExecutionSetInfoTypeEXT::ePipelines; + IndirectExecutionSetInfoEXT info = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = IndirectExecutionSetCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = IndirectExecutionSetCreateInfoEXT; + }; + + // wrapper struct for struct VkInitializePerformanceApiInfoINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkInitializePerformanceApiInfoINTEL.html + struct InitializePerformanceApiInfoINTEL + { + using NativeType = VkInitializePerformanceApiInfoINTEL; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eInitializePerformanceApiInfoINTEL; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL( void * pUserData_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pUserData{ pUserData_ } + { + } + + VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + InitializePerformanceApiInfoINTEL( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : InitializePerformanceApiInfoINTEL( *reinterpret_cast( &rhs ) ) + { + } + + InitializePerformanceApiInfoINTEL & operator=( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + InitializePerformanceApiInfoINTEL & operator=( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & setPUserData( void * pUserData_ ) & VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL && setPUserData( void * pUserData_ ) && VULKAN_HPP_NOEXCEPT + { + pUserData = pUserData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkInitializePerformanceApiInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkInitializePerformanceApiInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkInitializePerformanceApiInfoINTEL const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkInitializePerformanceApiInfoINTEL *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pUserData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( InitializePerformanceApiInfoINTEL const & ) const = default; +#else + bool operator==( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pUserData == rhs.pUserData ); +# endif + } + + bool operator!=( InitializePerformanceApiInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eInitializePerformanceApiInfoINTEL; + void const * pNext = {}; + void * pUserData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = InitializePerformanceApiInfoINTEL; + }; +#endif + + template <> + struct CppType + { + using Type = InitializePerformanceApiInfoINTEL; + }; + + // wrapper struct for struct VkInputAttachmentAspectReference, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkInputAttachmentAspectReference.html + struct InputAttachmentAspectReference + { + using NativeType = VkInputAttachmentAspectReference; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + InputAttachmentAspectReference( uint32_t subpass_ = {}, uint32_t inputAttachmentIndex_ = {}, ImageAspectFlags aspectMask_ = {} ) VULKAN_HPP_NOEXCEPT + : subpass{ subpass_ } + , inputAttachmentIndex{ inputAttachmentIndex_ } + , aspectMask{ aspectMask_ } + { + } + + VULKAN_HPP_CONSTEXPR InputAttachmentAspectReference( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + InputAttachmentAspectReference( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT + : InputAttachmentAspectReference( *reinterpret_cast( &rhs ) ) + { + } + + InputAttachmentAspectReference & operator=( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + InputAttachmentAspectReference & operator=( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setSubpass( uint32_t subpass_ ) & VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference && setSubpass( uint32_t subpass_ ) && VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setInputAttachmentIndex( uint32_t inputAttachmentIndex_ ) & VULKAN_HPP_NOEXCEPT + { + inputAttachmentIndex = inputAttachmentIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference && setInputAttachmentIndex( uint32_t inputAttachmentIndex_ ) && VULKAN_HPP_NOEXCEPT + { + inputAttachmentIndex = inputAttachmentIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & setAspectMask( ImageAspectFlags aspectMask_ ) & VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference && setAspectMask( ImageAspectFlags aspectMask_ ) && VULKAN_HPP_NOEXCEPT + { + aspectMask = aspectMask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkInputAttachmentAspectReference const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkInputAttachmentAspectReference &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkInputAttachmentAspectReference const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkInputAttachmentAspectReference *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( subpass, inputAttachmentIndex, aspectMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( InputAttachmentAspectReference const & ) const = default; +#else + bool operator==( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( subpass == rhs.subpass ) && ( inputAttachmentIndex == rhs.inputAttachmentIndex ) && ( aspectMask == rhs.aspectMask ); +# endif + } + + bool operator!=( InputAttachmentAspectReference const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t subpass = {}; + uint32_t inputAttachmentIndex = {}; + ImageAspectFlags aspectMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = InputAttachmentAspectReference; + }; +#endif + using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference; + + // wrapper struct for struct VkInstanceCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkInstanceCreateInfo.html + struct InstanceCreateInfo + { + using NativeType = VkInstanceCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eInstanceCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR InstanceCreateInfo( InstanceCreateFlags flags_ = {}, + ApplicationInfo const * pApplicationInfo_ = {}, + uint32_t enabledLayerCount_ = {}, + char const * const * ppEnabledLayerNames_ = {}, + uint32_t enabledExtensionCount_ = {}, + char const * const * ppEnabledExtensionNames_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pApplicationInfo{ pApplicationInfo_ } + , enabledLayerCount{ enabledLayerCount_ } + , ppEnabledLayerNames{ ppEnabledLayerNames_ } + , enabledExtensionCount{ enabledExtensionCount_ } + , ppEnabledExtensionNames{ ppEnabledExtensionNames_ } + { + } + + VULKAN_HPP_CONSTEXPR InstanceCreateInfo( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + InstanceCreateInfo( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : InstanceCreateInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + InstanceCreateInfo( InstanceCreateFlags flags_, + ApplicationInfo const * pApplicationInfo_, + ArrayProxyNoTemporaries const & pEnabledLayerNames_, + ArrayProxyNoTemporaries const & pEnabledExtensionNames_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , pApplicationInfo( pApplicationInfo_ ) + , enabledLayerCount( static_cast( pEnabledLayerNames_.size() ) ) + , ppEnabledLayerNames( pEnabledLayerNames_.data() ) + , enabledExtensionCount( static_cast( pEnabledExtensionNames_.size() ) ) + , ppEnabledExtensionNames( pEnabledExtensionNames_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + InstanceCreateInfo & operator=( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + InstanceCreateInfo & operator=( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setFlags( InstanceCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo && setFlags( InstanceCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPApplicationInfo( ApplicationInfo const * pApplicationInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pApplicationInfo = pApplicationInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo && setPApplicationInfo( ApplicationInfo const * pApplicationInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pApplicationInfo = pApplicationInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) & VULKAN_HPP_NOEXCEPT + { + enabledLayerCount = enabledLayerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo && setEnabledLayerCount( uint32_t enabledLayerCount_ ) && VULKAN_HPP_NOEXCEPT + { + enabledLayerCount = enabledLayerCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPpEnabledLayerNames( char const * const * ppEnabledLayerNames_ ) & VULKAN_HPP_NOEXCEPT + { + ppEnabledLayerNames = ppEnabledLayerNames_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo && setPpEnabledLayerNames( char const * const * ppEnabledLayerNames_ ) && VULKAN_HPP_NOEXCEPT + { + ppEnabledLayerNames = ppEnabledLayerNames_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + InstanceCreateInfo & setPEnabledLayerNames( ArrayProxyNoTemporaries const & pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT + { + enabledLayerCount = static_cast( pEnabledLayerNames_.size() ); + ppEnabledLayerNames = pEnabledLayerNames_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) & VULKAN_HPP_NOEXCEPT + { + enabledExtensionCount = enabledExtensionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo && setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) && VULKAN_HPP_NOEXCEPT + { + enabledExtensionCount = enabledExtensionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & setPpEnabledExtensionNames( char const * const * ppEnabledExtensionNames_ ) & VULKAN_HPP_NOEXCEPT + { + ppEnabledExtensionNames = ppEnabledExtensionNames_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo && setPpEnabledExtensionNames( char const * const * ppEnabledExtensionNames_ ) && VULKAN_HPP_NOEXCEPT + { + ppEnabledExtensionNames = ppEnabledExtensionNames_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + InstanceCreateInfo & setPEnabledExtensionNames( ArrayProxyNoTemporaries const & pEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT + { + enabledExtensionCount = static_cast( pEnabledExtensionNames_.size() ); + ppEnabledExtensionNames = pEnabledExtensionNames_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkInstanceCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkInstanceCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkInstanceCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkInstanceCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pApplicationInfo, enabledLayerCount, ppEnabledLayerNames, enabledExtensionCount, ppEnabledExtensionNames ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = pApplicationInfo <=> rhs.pApplicationInfo; cmp != 0 ) + return cmp; + if ( auto cmp = enabledLayerCount <=> rhs.enabledLayerCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < enabledLayerCount; ++i ) + { + if ( ppEnabledLayerNames[i] != rhs.ppEnabledLayerNames[i] ) + if ( auto cmp = strcmp( ppEnabledLayerNames[i], rhs.ppEnabledLayerNames[i] ); cmp != 0 ) + return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater; + } + if ( auto cmp = enabledExtensionCount <=> rhs.enabledExtensionCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < enabledExtensionCount; ++i ) + { + if ( ppEnabledExtensionNames[i] != rhs.ppEnabledExtensionNames[i] ) + if ( auto cmp = strcmp( ppEnabledExtensionNames[i], rhs.ppEnabledExtensionNames[i] ); cmp != 0 ) + return cmp < 0 ? std::strong_ordering::less : std::strong_ordering::greater; + } + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pApplicationInfo == rhs.pApplicationInfo ) && + ( enabledLayerCount == rhs.enabledLayerCount ) && + std::equal( ppEnabledLayerNames, + ppEnabledLayerNames + enabledLayerCount, + rhs.ppEnabledLayerNames, + []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } ) && + ( enabledExtensionCount == rhs.enabledExtensionCount ) && + std::equal( ppEnabledExtensionNames, + ppEnabledExtensionNames + enabledExtensionCount, + rhs.ppEnabledExtensionNames, + []( char const * left, char const * right ) { return ( left == right ) || ( strcmp( left, right ) == 0 ); } ); + } + + bool operator!=( InstanceCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eInstanceCreateInfo; + void const * pNext = {}; + InstanceCreateFlags flags = {}; + ApplicationInfo const * pApplicationInfo = {}; + uint32_t enabledLayerCount = {}; + char const * const * ppEnabledLayerNames = {}; + uint32_t enabledExtensionCount = {}; + char const * const * ppEnabledExtensionNames = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = InstanceCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = InstanceCreateInfo; + }; + + // wrapper struct for struct VkLatencySleepInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLatencySleepInfoNV.html + struct LatencySleepInfoNV + { + using NativeType = VkLatencySleepInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eLatencySleepInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR LatencySleepInfoNV( Semaphore signalSemaphore_ = {}, uint64_t value_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , signalSemaphore{ signalSemaphore_ } + , value{ value_ } + { + } + + VULKAN_HPP_CONSTEXPR LatencySleepInfoNV( LatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + LatencySleepInfoNV( VkLatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT : LatencySleepInfoNV( *reinterpret_cast( &rhs ) ) {} + + LatencySleepInfoNV & operator=( LatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + LatencySleepInfoNV & operator=( VkLatencySleepInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV & setSignalSemaphore( Semaphore signalSemaphore_ ) & VULKAN_HPP_NOEXCEPT + { + signalSemaphore = signalSemaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV && setSignalSemaphore( Semaphore signalSemaphore_ ) && VULKAN_HPP_NOEXCEPT + { + signalSemaphore = signalSemaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV & setValue( uint64_t value_ ) & VULKAN_HPP_NOEXCEPT + { + value = value_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepInfoNV && setValue( uint64_t value_ ) && VULKAN_HPP_NOEXCEPT + { + value = value_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkLatencySleepInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLatencySleepInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLatencySleepInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkLatencySleepInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, signalSemaphore, value ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( LatencySleepInfoNV const & ) const = default; +#else + bool operator==( LatencySleepInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( signalSemaphore == rhs.signalSemaphore ) && ( value == rhs.value ); +# endif + } + + bool operator!=( LatencySleepInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eLatencySleepInfoNV; + void const * pNext = {}; + Semaphore signalSemaphore = {}; + uint64_t value = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = LatencySleepInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = LatencySleepInfoNV; + }; + + // wrapper struct for struct VkLatencySleepModeInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLatencySleepModeInfoNV.html + struct LatencySleepModeInfoNV + { + using NativeType = VkLatencySleepModeInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eLatencySleepModeInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR LatencySleepModeInfoNV( Bool32 lowLatencyMode_ = {}, + Bool32 lowLatencyBoost_ = {}, + uint32_t minimumIntervalUs_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , lowLatencyMode{ lowLatencyMode_ } + , lowLatencyBoost{ lowLatencyBoost_ } + , minimumIntervalUs{ minimumIntervalUs_ } + { + } + + VULKAN_HPP_CONSTEXPR LatencySleepModeInfoNV( LatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + LatencySleepModeInfoNV( VkLatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : LatencySleepModeInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + LatencySleepModeInfoNV & operator=( LatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + LatencySleepModeInfoNV & operator=( VkLatencySleepModeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setLowLatencyMode( Bool32 lowLatencyMode_ ) & VULKAN_HPP_NOEXCEPT + { + lowLatencyMode = lowLatencyMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV && setLowLatencyMode( Bool32 lowLatencyMode_ ) && VULKAN_HPP_NOEXCEPT + { + lowLatencyMode = lowLatencyMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setLowLatencyBoost( Bool32 lowLatencyBoost_ ) & VULKAN_HPP_NOEXCEPT + { + lowLatencyBoost = lowLatencyBoost_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV && setLowLatencyBoost( Bool32 lowLatencyBoost_ ) && VULKAN_HPP_NOEXCEPT + { + lowLatencyBoost = lowLatencyBoost_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV & setMinimumIntervalUs( uint32_t minimumIntervalUs_ ) & VULKAN_HPP_NOEXCEPT + { + minimumIntervalUs = minimumIntervalUs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySleepModeInfoNV && setMinimumIntervalUs( uint32_t minimumIntervalUs_ ) && VULKAN_HPP_NOEXCEPT + { + minimumIntervalUs = minimumIntervalUs_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkLatencySleepModeInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLatencySleepModeInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLatencySleepModeInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkLatencySleepModeInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, lowLatencyMode, lowLatencyBoost, minimumIntervalUs ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( LatencySleepModeInfoNV const & ) const = default; +#else + bool operator==( LatencySleepModeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lowLatencyMode == rhs.lowLatencyMode ) && ( lowLatencyBoost == rhs.lowLatencyBoost ) && + ( minimumIntervalUs == rhs.minimumIntervalUs ); +# endif + } + + bool operator!=( LatencySleepModeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eLatencySleepModeInfoNV; + void const * pNext = {}; + Bool32 lowLatencyMode = {}; + Bool32 lowLatencyBoost = {}; + uint32_t minimumIntervalUs = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = LatencySleepModeInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = LatencySleepModeInfoNV; + }; + + // wrapper struct for struct VkLatencySubmissionPresentIdNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLatencySubmissionPresentIdNV.html + struct LatencySubmissionPresentIdNV + { + using NativeType = VkLatencySubmissionPresentIdNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eLatencySubmissionPresentIdNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR LatencySubmissionPresentIdNV( uint64_t presentID_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentID{ presentID_ } + { + } + + VULKAN_HPP_CONSTEXPR LatencySubmissionPresentIdNV( LatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + LatencySubmissionPresentIdNV( VkLatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT + : LatencySubmissionPresentIdNV( *reinterpret_cast( &rhs ) ) + { + } + + LatencySubmissionPresentIdNV & operator=( LatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + LatencySubmissionPresentIdNV & operator=( VkLatencySubmissionPresentIdNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 LatencySubmissionPresentIdNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySubmissionPresentIdNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LatencySubmissionPresentIdNV & setPresentID( uint64_t presentID_ ) & VULKAN_HPP_NOEXCEPT + { + presentID = presentID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySubmissionPresentIdNV && setPresentID( uint64_t presentID_ ) && VULKAN_HPP_NOEXCEPT + { + presentID = presentID_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkLatencySubmissionPresentIdNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLatencySubmissionPresentIdNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLatencySubmissionPresentIdNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkLatencySubmissionPresentIdNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentID ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( LatencySubmissionPresentIdNV const & ) const = default; +#else + bool operator==( LatencySubmissionPresentIdNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentID == rhs.presentID ); +# endif + } + + bool operator!=( LatencySubmissionPresentIdNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eLatencySubmissionPresentIdNV; + void const * pNext = {}; + uint64_t presentID = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = LatencySubmissionPresentIdNV; + }; +#endif + + template <> + struct CppType + { + using Type = LatencySubmissionPresentIdNV; + }; + + // wrapper struct for struct VkLatencySurfaceCapabilitiesNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLatencySurfaceCapabilitiesNV.html + struct LatencySurfaceCapabilitiesNV + { + using NativeType = VkLatencySurfaceCapabilitiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eLatencySurfaceCapabilitiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + LatencySurfaceCapabilitiesNV( uint32_t presentModeCount_ = {}, PresentModeKHR * pPresentModes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentModeCount{ presentModeCount_ } + , pPresentModes{ pPresentModes_ } + { + } + + VULKAN_HPP_CONSTEXPR LatencySurfaceCapabilitiesNV( LatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + LatencySurfaceCapabilitiesNV( VkLatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : LatencySurfaceCapabilitiesNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + LatencySurfaceCapabilitiesNV( ArrayProxyNoTemporaries const & presentModes_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), presentModeCount( static_cast( presentModes_.size() ) ), pPresentModes( presentModes_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + LatencySurfaceCapabilitiesNV & operator=( LatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + LatencySurfaceCapabilitiesNV & operator=( VkLatencySurfaceCapabilitiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV & setPresentModeCount( uint32_t presentModeCount_ ) & VULKAN_HPP_NOEXCEPT + { + presentModeCount = presentModeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV && setPresentModeCount( uint32_t presentModeCount_ ) && VULKAN_HPP_NOEXCEPT + { + presentModeCount = presentModeCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV & setPPresentModes( PresentModeKHR * pPresentModes_ ) & VULKAN_HPP_NOEXCEPT + { + pPresentModes = pPresentModes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LatencySurfaceCapabilitiesNV && setPPresentModes( PresentModeKHR * pPresentModes_ ) && VULKAN_HPP_NOEXCEPT + { + pPresentModes = pPresentModes_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + LatencySurfaceCapabilitiesNV & setPresentModes( ArrayProxyNoTemporaries const & presentModes_ ) VULKAN_HPP_NOEXCEPT + { + presentModeCount = static_cast( presentModes_.size() ); + pPresentModes = presentModes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkLatencySurfaceCapabilitiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLatencySurfaceCapabilitiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLatencySurfaceCapabilitiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkLatencySurfaceCapabilitiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentModeCount, pPresentModes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( LatencySurfaceCapabilitiesNV const & ) const = default; +#else + bool operator==( LatencySurfaceCapabilitiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentModeCount == rhs.presentModeCount ) && ( pPresentModes == rhs.pPresentModes ); +# endif + } + + bool operator!=( LatencySurfaceCapabilitiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eLatencySurfaceCapabilitiesNV; + void const * pNext = {}; + uint32_t presentModeCount = {}; + PresentModeKHR * pPresentModes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = LatencySurfaceCapabilitiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = LatencySurfaceCapabilitiesNV; + }; + + // wrapper struct for struct VkLayerProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLayerProperties.html + struct LayerProperties + { + using NativeType = VkLayerProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 LayerProperties( std::array const & layerName_ = {}, + uint32_t specVersion_ = {}, + uint32_t implementationVersion_ = {}, + std::array const & description_ = {} ) VULKAN_HPP_NOEXCEPT + : layerName{ layerName_ } + , specVersion{ specVersion_ } + , implementationVersion{ implementationVersion_ } + , description{ description_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 LayerProperties( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + LayerProperties( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT : LayerProperties( *reinterpret_cast( &rhs ) ) {} + + LayerProperties & operator=( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + LayerProperties & operator=( VkLayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkLayerProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLayerProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLayerProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkLayerProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple const &, uint32_t const &, uint32_t const &, ArrayWrapper1D const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( layerName, specVersion, implementationVersion, description ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = strcmp( layerName, rhs.layerName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = specVersion <=> rhs.specVersion; cmp != 0 ) + return cmp; + if ( auto cmp = implementationVersion <=> rhs.implementationVersion; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( strcmp( layerName, rhs.layerName ) == 0 ) && ( specVersion == rhs.specVersion ) && ( implementationVersion == rhs.implementationVersion ) && + ( strcmp( description, rhs.description ) == 0 ); + } + + bool operator!=( LayerProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + ArrayWrapper1D layerName = {}; + uint32_t specVersion = {}; + uint32_t implementationVersion = {}; + ArrayWrapper1D description = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = LayerProperties; + }; +#endif + + // wrapper struct for struct VkLayerSettingEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLayerSettingEXT.html + struct LayerSettingEXT + { + using NativeType = VkLayerSettingEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR LayerSettingEXT( char const * pLayerName_ = {}, + char const * pSettingName_ = {}, + LayerSettingTypeEXT type_ = LayerSettingTypeEXT::eBool32, + uint32_t valueCount_ = {}, + void const * pValues_ = {} ) VULKAN_HPP_NOEXCEPT + : pLayerName{ pLayerName_ } + , pSettingName{ pSettingName_ } + , type{ type_ } + , valueCount{ valueCount_ } + , pValues{ pValues_ } + { + } + + VULKAN_HPP_CONSTEXPR LayerSettingEXT( LayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + LayerSettingEXT( VkLayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT : LayerSettingEXT( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + // NOTE: you need to provide the type because Bool32 and uint32_t are indistinguishable! + LayerSettingEXT( char const * pLayerName_, char const * pSettingName_, LayerSettingTypeEXT type_, ArrayProxyNoTemporaries const & values_ ) + : pLayerName( pLayerName_ ) + , pSettingName( pSettingName_ ) + , type( type_ ) + , valueCount( static_cast( values_.size() ) ) + , pValues( values_.data() ) + { + VULKAN_HPP_ASSERT( isSameType( type ) ); + } + + LayerSettingEXT( char const * pLayerName_, char const * pSettingName_, LayerSettingTypeEXT type_, ArrayProxyNoTemporaries const & values_ ) + : pLayerName( pLayerName_ ) + , pSettingName( pSettingName_ ) + , type( type_ ) + , valueCount( static_cast( values_.size() ) ) + , pValues( values_.data() ) + { + VULKAN_HPP_ASSERT( isSameType( type ) ); + } + + LayerSettingEXT( char const * pLayerName_, char const * pSettingName_, LayerSettingTypeEXT type_, ArrayProxyNoTemporaries const & values_ ) + : pLayerName( pLayerName_ ) + , pSettingName( pSettingName_ ) + , type( type_ ) + , valueCount( static_cast( values_.size() ) ) + , pValues( values_.data() ) + { + VULKAN_HPP_ASSERT( isSameType( type ) ); + } + + LayerSettingEXT( char const * pLayerName_, char const * pSettingName_, LayerSettingTypeEXT type_, ArrayProxyNoTemporaries const & values_ ) + : pLayerName( pLayerName_ ) + , pSettingName( pSettingName_ ) + , type( type_ ) + , valueCount( static_cast( values_.size() ) ) + , pValues( values_.data() ) + { + VULKAN_HPP_ASSERT( isSameType( type ) ); + } + + LayerSettingEXT( char const * pLayerName_, char const * pSettingName_, LayerSettingTypeEXT type_, ArrayProxyNoTemporaries const & values_ ) + : pLayerName( pLayerName_ ) + , pSettingName( pSettingName_ ) + , type( type_ ) + , valueCount( static_cast( values_.size() ) ) + , pValues( values_.data() ) + { + VULKAN_HPP_ASSERT( isSameType( type ) ); + } + + LayerSettingEXT( char const * pLayerName_, char const * pSettingName_, LayerSettingTypeEXT type_, ArrayProxyNoTemporaries const & values_ ) + : pLayerName( pLayerName_ ) + , pSettingName( pSettingName_ ) + , type( type_ ) + , valueCount( static_cast( values_.size() ) ) + , pValues( values_.data() ) + { + VULKAN_HPP_ASSERT( isSameType( type ) ); + } + + LayerSettingEXT( char const * pLayerName_, char const * pSettingName_, LayerSettingTypeEXT type_, ArrayProxyNoTemporaries const & values_ ) + : pLayerName( pLayerName_ ) + , pSettingName( pSettingName_ ) + , type( type_ ) + , valueCount( static_cast( values_.size() ) ) + , pValues( values_.data() ) + { + VULKAN_HPP_ASSERT( isSameType( type ) ); + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + LayerSettingEXT & operator=( LayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + LayerSettingEXT & operator=( VkLayerSettingEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setPLayerName( char const * pLayerName_ ) & VULKAN_HPP_NOEXCEPT + { + pLayerName = pLayerName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT && setPLayerName( char const * pLayerName_ ) && VULKAN_HPP_NOEXCEPT + { + pLayerName = pLayerName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setPSettingName( char const * pSettingName_ ) & VULKAN_HPP_NOEXCEPT + { + pSettingName = pSettingName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT && setPSettingName( char const * pSettingName_ ) && VULKAN_HPP_NOEXCEPT + { + pSettingName = pSettingName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setType( LayerSettingTypeEXT type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT && setType( LayerSettingTypeEXT type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT & setValueCount( uint32_t valueCount_ ) & VULKAN_HPP_NOEXCEPT + { + valueCount = valueCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingEXT && setValueCount( uint32_t valueCount_ ) && VULKAN_HPP_NOEXCEPT + { + valueCount = valueCount_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + LayerSettingEXT & setValues( ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT + { + valueCount = static_cast( values_.size() ); + pValues = values_.data(); + return *this; + } + + LayerSettingEXT & setValues( ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT + { + valueCount = static_cast( values_.size() ); + pValues = values_.data(); + return *this; + } + + LayerSettingEXT & setValues( ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT + { + valueCount = static_cast( values_.size() ); + pValues = values_.data(); + return *this; + } + + LayerSettingEXT & setValues( ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT + { + valueCount = static_cast( values_.size() ); + pValues = values_.data(); + return *this; + } + + LayerSettingEXT & setValues( ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT + { + valueCount = static_cast( values_.size() ); + pValues = values_.data(); + return *this; + } + + LayerSettingEXT & setValues( ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT + { + valueCount = static_cast( values_.size() ); + pValues = values_.data(); + return *this; + } + + LayerSettingEXT & setValues( ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT + { + valueCount = static_cast( values_.size() ); + pValues = values_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkLayerSettingEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLayerSettingEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLayerSettingEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkLayerSettingEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( pLayerName, pSettingName, type, valueCount, pValues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( pLayerName != rhs.pLayerName ) + if ( auto cmp = strcmp( pLayerName, rhs.pLayerName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( pSettingName != rhs.pSettingName ) + if ( auto cmp = strcmp( pSettingName, rhs.pSettingName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = type <=> rhs.type; cmp != 0 ) + return cmp; + if ( auto cmp = valueCount <=> rhs.valueCount; cmp != 0 ) + return cmp; + if ( auto cmp = pValues <=> rhs.pValues; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( ( pLayerName == rhs.pLayerName ) || ( strcmp( pLayerName, rhs.pLayerName ) == 0 ) ) && + ( ( pSettingName == rhs.pSettingName ) || ( strcmp( pSettingName, rhs.pSettingName ) == 0 ) ) && ( type == rhs.type ) && + ( valueCount == rhs.valueCount ) && ( pValues == rhs.pValues ); + } + + bool operator!=( LayerSettingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + char const * pLayerName = {}; + char const * pSettingName = {}; + LayerSettingTypeEXT type = LayerSettingTypeEXT::eBool32; + uint32_t valueCount = {}; + void const * pValues = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = LayerSettingEXT; + }; +#endif + + // wrapper struct for struct VkLayerSettingsCreateInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkLayerSettingsCreateInfoEXT.html + struct LayerSettingsCreateInfoEXT + { + using NativeType = VkLayerSettingsCreateInfoEXT; + + static bool const allowDuplicate = true; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eLayerSettingsCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + LayerSettingsCreateInfoEXT( uint32_t settingCount_ = {}, LayerSettingEXT const * pSettings_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , settingCount{ settingCount_ } + , pSettings{ pSettings_ } + { + } + + VULKAN_HPP_CONSTEXPR LayerSettingsCreateInfoEXT( LayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + LayerSettingsCreateInfoEXT( VkLayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : LayerSettingsCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + LayerSettingsCreateInfoEXT( ArrayProxyNoTemporaries const & settings_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), settingCount( static_cast( settings_.size() ) ), pSettings( settings_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + LayerSettingsCreateInfoEXT & operator=( LayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + LayerSettingsCreateInfoEXT & operator=( VkLayerSettingsCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setSettingCount( uint32_t settingCount_ ) & VULKAN_HPP_NOEXCEPT + { + settingCount = settingCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT && setSettingCount( uint32_t settingCount_ ) && VULKAN_HPP_NOEXCEPT + { + settingCount = settingCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT & setPSettings( LayerSettingEXT const * pSettings_ ) & VULKAN_HPP_NOEXCEPT + { + pSettings = pSettings_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 LayerSettingsCreateInfoEXT && setPSettings( LayerSettingEXT const * pSettings_ ) && VULKAN_HPP_NOEXCEPT + { + pSettings = pSettings_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + LayerSettingsCreateInfoEXT & setSettings( ArrayProxyNoTemporaries const & settings_ ) VULKAN_HPP_NOEXCEPT + { + settingCount = static_cast( settings_.size() ); + pSettings = settings_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkLayerSettingsCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLayerSettingsCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkLayerSettingsCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkLayerSettingsCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, settingCount, pSettings ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( LayerSettingsCreateInfoEXT const & ) const = default; +#else + bool operator==( LayerSettingsCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( settingCount == rhs.settingCount ) && ( pSettings == rhs.pSettings ); +# endif + } + + bool operator!=( LayerSettingsCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eLayerSettingsCreateInfoEXT; + void const * pNext = {}; + uint32_t settingCount = {}; + LayerSettingEXT const * pSettings = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = LayerSettingsCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = LayerSettingsCreateInfoEXT; + }; + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + // wrapper struct for struct VkMacOSSurfaceCreateInfoMVK, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMacOSSurfaceCreateInfoMVK.html + struct MacOSSurfaceCreateInfoMVK + { + using NativeType = VkMacOSSurfaceCreateInfoMVK; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMacosSurfaceCreateInfoMVK; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = {}, void const * pView_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pView{ pView_ } + { + } + + VULKAN_HPP_CONSTEXPR MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT + : MacOSSurfaceCreateInfoMVK( *reinterpret_cast( &rhs ) ) + { + } + + MacOSSurfaceCreateInfoMVK & operator=( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MacOSSurfaceCreateInfoMVK & operator=( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setFlags( MacOSSurfaceCreateFlagsMVK flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK && setFlags( MacOSSurfaceCreateFlagsMVK flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & setPView( void const * pView_ ) & VULKAN_HPP_NOEXCEPT + { + pView = pView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK && setPView( void const * pView_ ) && VULKAN_HPP_NOEXCEPT + { + pView = pView_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMacOSSurfaceCreateInfoMVK const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMacOSSurfaceCreateInfoMVK &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMacOSSurfaceCreateInfoMVK const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMacOSSurfaceCreateInfoMVK *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pView ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MacOSSurfaceCreateInfoMVK const & ) const = default; +# else + bool operator==( MacOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pView == rhs.pView ); +# endif + } + + bool operator!=( MacOSSurfaceCreateInfoMVK const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eMacosSurfaceCreateInfoMVK; + void const * pNext = {}; + MacOSSurfaceCreateFlagsMVK flags = {}; + void const * pView = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MacOSSurfaceCreateInfoMVK; + }; +# endif + + template <> + struct CppType + { + using Type = MacOSSurfaceCreateInfoMVK; + }; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + // wrapper struct for struct VkMappedMemoryRange, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMappedMemoryRange.html + struct MappedMemoryRange + { + using NativeType = VkMappedMemoryRange; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMappedMemoryRange; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MappedMemoryRange( DeviceMemory memory_ = {}, DeviceSize offset_ = {}, DeviceSize size_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + , offset{ offset_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR MappedMemoryRange( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MappedMemoryRange( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT : MappedMemoryRange( *reinterpret_cast( &rhs ) ) {} + + MappedMemoryRange & operator=( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MappedMemoryRange & operator=( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMappedMemoryRange const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMappedMemoryRange &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMappedMemoryRange const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMappedMemoryRange *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MappedMemoryRange const & ) const = default; +#else + bool operator==( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( offset == rhs.offset ) && ( size == rhs.size ); +# endif + } + + bool operator!=( MappedMemoryRange const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMappedMemoryRange; + void const * pNext = {}; + DeviceMemory memory = {}; + DeviceSize offset = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MappedMemoryRange; + }; +#endif + + template <> + struct CppType + { + using Type = MappedMemoryRange; + }; + + // wrapper struct for struct VkMemoryAllocateFlagsInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryAllocateFlagsInfo.html + struct MemoryAllocateFlagsInfo + { + using NativeType = VkMemoryAllocateFlagsInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryAllocateFlagsInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MemoryAllocateFlagsInfo( MemoryAllocateFlags flags_ = {}, uint32_t deviceMask_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , deviceMask{ deviceMask_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryAllocateFlagsInfo( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryAllocateFlagsInfo( *reinterpret_cast( &rhs ) ) + { + } + + MemoryAllocateFlagsInfo & operator=( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryAllocateFlagsInfo & operator=( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setFlags( MemoryAllocateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo && setFlags( MemoryAllocateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & setDeviceMask( uint32_t deviceMask_ ) & VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo && setDeviceMask( uint32_t deviceMask_ ) && VULKAN_HPP_NOEXCEPT + { + deviceMask = deviceMask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryAllocateFlagsInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryAllocateFlagsInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryAllocateFlagsInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryAllocateFlagsInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, deviceMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryAllocateFlagsInfo const & ) const = default; +#else + bool operator==( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( deviceMask == rhs.deviceMask ); +# endif + } + + bool operator!=( MemoryAllocateFlagsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryAllocateFlagsInfo; + void const * pNext = {}; + MemoryAllocateFlags flags = {}; + uint32_t deviceMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryAllocateFlagsInfo; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryAllocateFlagsInfo; + }; + + using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo; + + // wrapper struct for struct VkMemoryAllocateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryAllocateInfo.html + struct MemoryAllocateInfo + { + using NativeType = VkMemoryAllocateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryAllocateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MemoryAllocateInfo( DeviceSize allocationSize_ = {}, uint32_t memoryTypeIndex_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , allocationSize{ allocationSize_ } + , memoryTypeIndex{ memoryTypeIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryAllocateInfo( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryAllocateInfo( *reinterpret_cast( &rhs ) ) {} + + MemoryAllocateInfo & operator=( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryAllocateInfo & operator=( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setAllocationSize( DeviceSize allocationSize_ ) & VULKAN_HPP_NOEXCEPT + { + allocationSize = allocationSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo && setAllocationSize( DeviceSize allocationSize_ ) && VULKAN_HPP_NOEXCEPT + { + allocationSize = allocationSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & setMemoryTypeIndex( uint32_t memoryTypeIndex_ ) & VULKAN_HPP_NOEXCEPT + { + memoryTypeIndex = memoryTypeIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo && setMemoryTypeIndex( uint32_t memoryTypeIndex_ ) && VULKAN_HPP_NOEXCEPT + { + memoryTypeIndex = memoryTypeIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryAllocateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryAllocateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, allocationSize, memoryTypeIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryAllocateInfo const & ) const = default; +#else + bool operator==( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && ( memoryTypeIndex == rhs.memoryTypeIndex ); +# endif + } + + bool operator!=( MemoryAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryAllocateInfo; + void const * pNext = {}; + DeviceSize allocationSize = {}; + uint32_t memoryTypeIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryAllocateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryAllocateInfo; + }; + + // wrapper struct for struct VkMemoryBarrier, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryBarrier.html + struct MemoryBarrier + { + using NativeType = VkMemoryBarrier; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryBarrier; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryBarrier( AccessFlags srcAccessMask_ = {}, AccessFlags dstAccessMask_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcAccessMask{ srcAccessMask_ } + , dstAccessMask{ dstAccessMask_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryBarrier( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryBarrier( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryBarrier( *reinterpret_cast( &rhs ) ) {} + + MemoryBarrier & operator=( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryBarrier & operator=( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setSrcAccessMask( AccessFlags srcAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier && setSrcAccessMask( AccessFlags srcAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & setDstAccessMask( AccessFlags dstAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrier && setDstAccessMask( AccessFlags dstAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryBarrier const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryBarrier &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryBarrier const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryBarrier *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcAccessMask, dstAccessMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryBarrier const & ) const = default; +#else + bool operator==( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ); +# endif + } + + bool operator!=( MemoryBarrier const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryBarrier; + void const * pNext = {}; + AccessFlags srcAccessMask = {}; + AccessFlags dstAccessMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryBarrier; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryBarrier; + }; + + // wrapper struct for struct VkMemoryBarrierAccessFlags3KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryBarrierAccessFlags3KHR.html + struct MemoryBarrierAccessFlags3KHR + { + using NativeType = VkMemoryBarrierAccessFlags3KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryBarrierAccessFlags3KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryBarrierAccessFlags3KHR( AccessFlags3KHR srcAccessMask3_ = {}, + AccessFlags3KHR dstAccessMask3_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcAccessMask3{ srcAccessMask3_ } + , dstAccessMask3{ dstAccessMask3_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryBarrierAccessFlags3KHR( MemoryBarrierAccessFlags3KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryBarrierAccessFlags3KHR( VkMemoryBarrierAccessFlags3KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryBarrierAccessFlags3KHR( *reinterpret_cast( &rhs ) ) + { + } + + MemoryBarrierAccessFlags3KHR & operator=( MemoryBarrierAccessFlags3KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryBarrierAccessFlags3KHR & operator=( VkMemoryBarrierAccessFlags3KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryBarrierAccessFlags3KHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrierAccessFlags3KHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrierAccessFlags3KHR & setSrcAccessMask3( AccessFlags3KHR srcAccessMask3_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask3 = srcAccessMask3_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrierAccessFlags3KHR && setSrcAccessMask3( AccessFlags3KHR srcAccessMask3_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask3 = srcAccessMask3_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrierAccessFlags3KHR & setDstAccessMask3( AccessFlags3KHR dstAccessMask3_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask3 = dstAccessMask3_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryBarrierAccessFlags3KHR && setDstAccessMask3( AccessFlags3KHR dstAccessMask3_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask3 = dstAccessMask3_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryBarrierAccessFlags3KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryBarrierAccessFlags3KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryBarrierAccessFlags3KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryBarrierAccessFlags3KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcAccessMask3, dstAccessMask3 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryBarrierAccessFlags3KHR const & ) const = default; +#else + bool operator==( MemoryBarrierAccessFlags3KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcAccessMask3 == rhs.srcAccessMask3 ) && ( dstAccessMask3 == rhs.dstAccessMask3 ); +# endif + } + + bool operator!=( MemoryBarrierAccessFlags3KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryBarrierAccessFlags3KHR; + void const * pNext = {}; + AccessFlags3KHR srcAccessMask3 = {}; + AccessFlags3KHR dstAccessMask3 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryBarrierAccessFlags3KHR; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryBarrierAccessFlags3KHR; + }; + + // wrapper struct for struct VkMemoryDedicatedAllocateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfo.html + struct MemoryDedicatedAllocateInfo + { + using NativeType = VkMemoryDedicatedAllocateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryDedicatedAllocateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo( Image image_ = {}, Buffer buffer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image{ image_ } + , buffer{ buffer_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryDedicatedAllocateInfo( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryDedicatedAllocateInfo( *reinterpret_cast( &rhs ) ) + { + } + + MemoryDedicatedAllocateInfo & operator=( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryDedicatedAllocateInfo & operator=( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setImage( Image image_ ) & VULKAN_HPP_NOEXCEPT + { + image = image_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo && setImage( Image image_ ) && VULKAN_HPP_NOEXCEPT + { + image = image_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryDedicatedAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryDedicatedAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryDedicatedAllocateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryDedicatedAllocateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image, buffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryDedicatedAllocateInfo const & ) const = default; +#else + bool operator==( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image == rhs.image ) && ( buffer == rhs.buffer ); +# endif + } + + bool operator!=( MemoryDedicatedAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryDedicatedAllocateInfo; + void const * pNext = {}; + Image image = {}; + Buffer buffer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryDedicatedAllocateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryDedicatedAllocateInfo; + }; + + using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo; + + // wrapper struct for struct VkMemoryDedicatedAllocateInfoTensorARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryDedicatedAllocateInfoTensorARM.html + struct MemoryDedicatedAllocateInfoTensorARM + { + using NativeType = VkMemoryDedicatedAllocateInfoTensorARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryDedicatedAllocateInfoTensorARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfoTensorARM( TensorARM tensor_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensor{ tensor_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfoTensorARM( MemoryDedicatedAllocateInfoTensorARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryDedicatedAllocateInfoTensorARM( VkMemoryDedicatedAllocateInfoTensorARM const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryDedicatedAllocateInfoTensorARM( *reinterpret_cast( &rhs ) ) + { + } + + MemoryDedicatedAllocateInfoTensorARM & operator=( MemoryDedicatedAllocateInfoTensorARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryDedicatedAllocateInfoTensorARM & operator=( VkMemoryDedicatedAllocateInfoTensorARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfoTensorARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfoTensorARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfoTensorARM & setTensor( TensorARM tensor_ ) & VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfoTensorARM && setTensor( TensorARM tensor_ ) && VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryDedicatedAllocateInfoTensorARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryDedicatedAllocateInfoTensorARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryDedicatedAllocateInfoTensorARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryDedicatedAllocateInfoTensorARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryDedicatedAllocateInfoTensorARM const & ) const = default; +#else + bool operator==( MemoryDedicatedAllocateInfoTensorARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensor == rhs.tensor ); +# endif + } + + bool operator!=( MemoryDedicatedAllocateInfoTensorARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryDedicatedAllocateInfoTensorARM; + void const * pNext = {}; + TensorARM tensor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryDedicatedAllocateInfoTensorARM; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryDedicatedAllocateInfoTensorARM; + }; + + // wrapper struct for struct VkMemoryDedicatedRequirements, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryDedicatedRequirements.html + struct MemoryDedicatedRequirements + { + using NativeType = VkMemoryDedicatedRequirements; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryDedicatedRequirements; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryDedicatedRequirements( Bool32 prefersDedicatedAllocation_ = {}, + Bool32 requiresDedicatedAllocation_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , prefersDedicatedAllocation{ prefersDedicatedAllocation_ } + , requiresDedicatedAllocation{ requiresDedicatedAllocation_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryDedicatedRequirements( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryDedicatedRequirements( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryDedicatedRequirements( *reinterpret_cast( &rhs ) ) + { + } + + MemoryDedicatedRequirements & operator=( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryDedicatedRequirements & operator=( VkMemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMemoryDedicatedRequirements const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryDedicatedRequirements &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryDedicatedRequirements const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryDedicatedRequirements *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, prefersDedicatedAllocation, requiresDedicatedAllocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryDedicatedRequirements const & ) const = default; +#else + bool operator==( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation ) && + ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation ); +# endif + } + + bool operator!=( MemoryDedicatedRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryDedicatedRequirements; + void * pNext = {}; + Bool32 prefersDedicatedAllocation = {}; + Bool32 requiresDedicatedAllocation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryDedicatedRequirements; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryDedicatedRequirements; + }; + + using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements; + + // wrapper struct for struct VkMemoryFdPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryFdPropertiesKHR.html + struct MemoryFdPropertiesKHR + { + using NativeType = VkMemoryFdPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryFdPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryTypeBits{ memoryTypeBits_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryFdPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + MemoryFdPropertiesKHR & operator=( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryFdPropertiesKHR & operator=( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMemoryFdPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryFdPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryFdPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryFdPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryTypeBits ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryFdPropertiesKHR const & ) const = default; +#else + bool operator==( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryFdPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryFdPropertiesKHR; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryFdPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryFdPropertiesKHR; + }; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkMemoryGetAndroidHardwareBufferInfoANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryGetAndroidHardwareBufferInfoANDROID.html + struct MemoryGetAndroidHardwareBufferInfoANDROID + { + using NativeType = VkMemoryGetAndroidHardwareBufferInfoANDROID; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID( DeviceMemory memory_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryGetAndroidHardwareBufferInfoANDROID( *reinterpret_cast( &rhs ) ) + { + } + + MemoryGetAndroidHardwareBufferInfoANDROID & operator=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryGetAndroidHardwareBufferInfoANDROID & operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryGetAndroidHardwareBufferInfoANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetAndroidHardwareBufferInfoANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetAndroidHardwareBufferInfoANDROID const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryGetAndroidHardwareBufferInfoANDROID *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetAndroidHardwareBufferInfoANDROID const & ) const = default; +# else + bool operator==( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ); +# endif + } + + bool operator!=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID; + void const * pNext = {}; + DeviceMemory memory = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryGetAndroidHardwareBufferInfoANDROID; + }; +# endif + + template <> + struct CppType + { + using Type = MemoryGetAndroidHardwareBufferInfoANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + // wrapper struct for struct VkMemoryGetFdInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryGetFdInfoKHR.html + struct MemoryGetFdInfoKHR + { + using NativeType = VkMemoryGetFdInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR( DeviceMemory memory_ = {}, + ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryGetFdInfoKHR( *reinterpret_cast( &rhs ) ) {} + + MemoryGetFdInfoKHR & operator=( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryGetFdInfoKHR & operator=( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetFdInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryGetFdInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetFdInfoKHR const & ) const = default; +#else + bool operator==( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( MemoryGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryGetFdInfoKHR; + void const * pNext = {}; + DeviceMemory memory = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryGetFdInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryGetFdInfoKHR; + }; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkMemoryGetMetalHandleInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryGetMetalHandleInfoEXT.html + struct MemoryGetMetalHandleInfoEXT + { + using NativeType = VkMemoryGetMetalHandleInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetMetalHandleInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryGetMetalHandleInfoEXT( DeviceMemory memory_ = {}, + ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryGetMetalHandleInfoEXT( MemoryGetMetalHandleInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetMetalHandleInfoEXT( VkMemoryGetMetalHandleInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryGetMetalHandleInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + MemoryGetMetalHandleInfoEXT & operator=( MemoryGetMetalHandleInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryGetMetalHandleInfoEXT & operator=( VkMemoryGetMetalHandleInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetMetalHandleInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetMetalHandleInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetMetalHandleInfoEXT & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetMetalHandleInfoEXT && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetMetalHandleInfoEXT & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetMetalHandleInfoEXT && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryGetMetalHandleInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetMetalHandleInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetMetalHandleInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryGetMetalHandleInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetMetalHandleInfoEXT const & ) const = default; +# else + bool operator==( MemoryGetMetalHandleInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( MemoryGetMetalHandleInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eMemoryGetMetalHandleInfoEXT; + void const * pNext = {}; + DeviceMemory memory = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryGetMetalHandleInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = MemoryGetMetalHandleInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + +#if defined( VK_USE_PLATFORM_OHOS ) + // wrapper struct for struct VkMemoryGetNativeBufferInfoOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryGetNativeBufferInfoOHOS.html + struct MemoryGetNativeBufferInfoOHOS + { + using NativeType = VkMemoryGetNativeBufferInfoOHOS; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetNativeBufferInfoOHOS; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryGetNativeBufferInfoOHOS( DeviceMemory memory_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryGetNativeBufferInfoOHOS( MemoryGetNativeBufferInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetNativeBufferInfoOHOS( VkMemoryGetNativeBufferInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryGetNativeBufferInfoOHOS( *reinterpret_cast( &rhs ) ) + { + } + + MemoryGetNativeBufferInfoOHOS & operator=( MemoryGetNativeBufferInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryGetNativeBufferInfoOHOS & operator=( VkMemoryGetNativeBufferInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetNativeBufferInfoOHOS & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetNativeBufferInfoOHOS && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetNativeBufferInfoOHOS & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetNativeBufferInfoOHOS && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryGetNativeBufferInfoOHOS const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetNativeBufferInfoOHOS &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetNativeBufferInfoOHOS const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryGetNativeBufferInfoOHOS *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetNativeBufferInfoOHOS const & ) const = default; +# else + bool operator==( MemoryGetNativeBufferInfoOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ); +# endif + } + + bool operator!=( MemoryGetNativeBufferInfoOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eMemoryGetNativeBufferInfoOHOS; + void const * pNext = {}; + DeviceMemory memory = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryGetNativeBufferInfoOHOS; + }; +# endif + + template <> + struct CppType + { + using Type = MemoryGetNativeBufferInfoOHOS; + }; +#endif /*VK_USE_PLATFORM_OHOS*/ + + // wrapper struct for struct VkMemoryGetRemoteAddressInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryGetRemoteAddressInfoNV.html + struct MemoryGetRemoteAddressInfoNV + { + using NativeType = VkMemoryGetRemoteAddressInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetRemoteAddressInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryGetRemoteAddressInfoNV( DeviceMemory memory_ = {}, + ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryGetRemoteAddressInfoNV( MemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetRemoteAddressInfoNV( VkMemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryGetRemoteAddressInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + MemoryGetRemoteAddressInfoNV & operator=( MemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryGetRemoteAddressInfoNV & operator=( VkMemoryGetRemoteAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetRemoteAddressInfoNV && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryGetRemoteAddressInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetRemoteAddressInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetRemoteAddressInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryGetRemoteAddressInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetRemoteAddressInfoNV const & ) const = default; +#else + bool operator==( MemoryGetRemoteAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( MemoryGetRemoteAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryGetRemoteAddressInfoNV; + void const * pNext = {}; + DeviceMemory memory = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryGetRemoteAddressInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryGetRemoteAddressInfoNV; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkMemoryGetWin32HandleInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryGetWin32HandleInfoKHR.html + struct MemoryGetWin32HandleInfoKHR + { + using NativeType = VkMemoryGetWin32HandleInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = {}, + ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryGetWin32HandleInfoKHR( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryGetWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + MemoryGetWin32HandleInfoKHR & operator=( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryGetWin32HandleInfoKHR & operator=( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetWin32HandleInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryGetWin32HandleInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( MemoryGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( MemoryGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eMemoryGetWin32HandleInfoKHR; + void const * pNext = {}; + DeviceMemory memory = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryGetWin32HandleInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = MemoryGetWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkMemoryGetZirconHandleInfoFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryGetZirconHandleInfoFUCHSIA.html + struct MemoryGetZirconHandleInfoFUCHSIA + { + using NativeType = VkMemoryGetZirconHandleInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetZirconHandleInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryGetZirconHandleInfoFUCHSIA( DeviceMemory memory_ = {}, + ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryGetZirconHandleInfoFUCHSIA( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryGetZirconHandleInfoFUCHSIA( VkMemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryGetZirconHandleInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + MemoryGetZirconHandleInfoFUCHSIA & operator=( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryGetZirconHandleInfoFUCHSIA & operator=( VkMemoryGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryGetZirconHandleInfoFUCHSIA && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryGetZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryGetZirconHandleInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryGetZirconHandleInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryGetZirconHandleInfoFUCHSIA const & ) const = default; +# else + bool operator==( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( MemoryGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eMemoryGetZirconHandleInfoFUCHSIA; + void const * pNext = {}; + DeviceMemory memory = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryGetZirconHandleInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = MemoryGetZirconHandleInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + // wrapper struct for struct VkMemoryHeap, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryHeap.html + struct MemoryHeap + { + using NativeType = VkMemoryHeap; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryHeap( DeviceSize size_ = {}, MemoryHeapFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : size{ size_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryHeap( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryHeap( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryHeap( *reinterpret_cast( &rhs ) ) {} + + MemoryHeap & operator=( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryHeap & operator=( VkMemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMemoryHeap const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryHeap &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryHeap const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryHeap *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( size, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryHeap const & ) const = default; +#else + bool operator==( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( size == rhs.size ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( MemoryHeap const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceSize size = {}; + MemoryHeapFlags flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryHeap; + }; +#endif + + // wrapper struct for struct VkMemoryHostPointerPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryHostPointerPropertiesEXT.html + struct MemoryHostPointerPropertiesEXT + { + using NativeType = VkMemoryHostPointerPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryHostPointerPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryTypeBits{ memoryTypeBits_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryHostPointerPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + MemoryHostPointerPropertiesEXT & operator=( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryHostPointerPropertiesEXT & operator=( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMemoryHostPointerPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryHostPointerPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryHostPointerPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryHostPointerPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryTypeBits ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryHostPointerPropertiesEXT const & ) const = default; +#else + bool operator==( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryHostPointerPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryHostPointerPropertiesEXT; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryHostPointerPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryHostPointerPropertiesEXT; + }; + + // wrapper struct for struct VkMemoryMapInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryMapInfo.html + struct MemoryMapInfo + { + using NativeType = VkMemoryMapInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryMapInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryMapInfo( + MemoryMapFlags flags_ = {}, DeviceMemory memory_ = {}, DeviceSize offset_ = {}, DeviceSize size_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , memory{ memory_ } + , offset{ offset_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryMapInfo( MemoryMapInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryMapInfo( VkMemoryMapInfo const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryMapInfo( *reinterpret_cast( &rhs ) ) {} + + MemoryMapInfo & operator=( MemoryMapInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryMapInfo & operator=( VkMemoryMapInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo & setFlags( MemoryMapFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo && setFlags( MemoryMapFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapInfo && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryMapInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryMapInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryMapInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryMapInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, memory, offset, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryMapInfo const & ) const = default; +#else + bool operator==( MemoryMapInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( memory == rhs.memory ) && ( offset == rhs.offset ) && + ( size == rhs.size ); +# endif + } + + bool operator!=( MemoryMapInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryMapInfo; + void const * pNext = {}; + MemoryMapFlags flags = {}; + DeviceMemory memory = {}; + DeviceSize offset = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryMapInfo; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryMapInfo; + }; + + using MemoryMapInfoKHR = MemoryMapInfo; + + // wrapper struct for struct VkMemoryMapPlacedInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryMapPlacedInfoEXT.html + struct MemoryMapPlacedInfoEXT + { + using NativeType = VkMemoryMapPlacedInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryMapPlacedInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryMapPlacedInfoEXT( void * pPlacedAddress_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pPlacedAddress{ pPlacedAddress_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryMapPlacedInfoEXT( MemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryMapPlacedInfoEXT( VkMemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryMapPlacedInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + MemoryMapPlacedInfoEXT & operator=( MemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryMapPlacedInfoEXT & operator=( VkMemoryMapPlacedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryMapPlacedInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapPlacedInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapPlacedInfoEXT & setPPlacedAddress( void * pPlacedAddress_ ) & VULKAN_HPP_NOEXCEPT + { + pPlacedAddress = pPlacedAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMapPlacedInfoEXT && setPPlacedAddress( void * pPlacedAddress_ ) && VULKAN_HPP_NOEXCEPT + { + pPlacedAddress = pPlacedAddress_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryMapPlacedInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryMapPlacedInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryMapPlacedInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryMapPlacedInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pPlacedAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryMapPlacedInfoEXT const & ) const = default; +#else + bool operator==( MemoryMapPlacedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pPlacedAddress == rhs.pPlacedAddress ); +# endif + } + + bool operator!=( MemoryMapPlacedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryMapPlacedInfoEXT; + void const * pNext = {}; + void * pPlacedAddress = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryMapPlacedInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryMapPlacedInfoEXT; + }; + + // wrapper struct for struct VkMemoryMarkerInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryMarkerInfoAMD.html + struct MemoryMarkerInfoAMD + { + using NativeType = VkMemoryMarkerInfoAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryMarkerInfoAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryMarkerInfoAMD( PipelineStageFlags2KHR stage_ = {}, + DeviceAddressRangeKHR dstRange_ = {}, + AddressCommandFlagsKHR dstFlags_ = {}, + uint32_t marker_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stage{ stage_ } + , dstRange{ dstRange_ } + , dstFlags{ dstFlags_ } + , marker{ marker_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryMarkerInfoAMD( MemoryMarkerInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryMarkerInfoAMD( VkMemoryMarkerInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryMarkerInfoAMD( *reinterpret_cast( &rhs ) ) + { + } + + MemoryMarkerInfoAMD & operator=( MemoryMarkerInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryMarkerInfoAMD & operator=( VkMemoryMarkerInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryMarkerInfoAMD & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMarkerInfoAMD && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMarkerInfoAMD & setStage( PipelineStageFlags2KHR stage_ ) & VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMarkerInfoAMD && setStage( PipelineStageFlags2KHR stage_ ) && VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMarkerInfoAMD & setDstRange( DeviceAddressRangeKHR const & dstRange_ ) & VULKAN_HPP_NOEXCEPT + { + dstRange = dstRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMarkerInfoAMD && setDstRange( DeviceAddressRangeKHR const & dstRange_ ) && VULKAN_HPP_NOEXCEPT + { + dstRange = dstRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMarkerInfoAMD & setDstFlags( AddressCommandFlagsKHR dstFlags_ ) & VULKAN_HPP_NOEXCEPT + { + dstFlags = dstFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMarkerInfoAMD && setDstFlags( AddressCommandFlagsKHR dstFlags_ ) && VULKAN_HPP_NOEXCEPT + { + dstFlags = dstFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMarkerInfoAMD & setMarker( uint32_t marker_ ) & VULKAN_HPP_NOEXCEPT + { + marker = marker_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryMarkerInfoAMD && setMarker( uint32_t marker_ ) && VULKAN_HPP_NOEXCEPT + { + marker = marker_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryMarkerInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryMarkerInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryMarkerInfoAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryMarkerInfoAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stage, dstRange, dstFlags, marker ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryMarkerInfoAMD const & ) const = default; +#else + bool operator==( MemoryMarkerInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stage == rhs.stage ) && ( dstRange == rhs.dstRange ) && ( dstFlags == rhs.dstFlags ) && + ( marker == rhs.marker ); +# endif + } + + bool operator!=( MemoryMarkerInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryMarkerInfoAMD; + void const * pNext = {}; + PipelineStageFlags2KHR stage = {}; + DeviceAddressRangeKHR dstRange = {}; + AddressCommandFlagsKHR dstFlags = {}; + uint32_t marker = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryMarkerInfoAMD; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryMarkerInfoAMD; + }; + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkMemoryMetalHandlePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryMetalHandlePropertiesEXT.html + struct MemoryMetalHandlePropertiesEXT + { + using NativeType = VkMemoryMetalHandlePropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryMetalHandlePropertiesEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryMetalHandlePropertiesEXT( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryTypeBits{ memoryTypeBits_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryMetalHandlePropertiesEXT( MemoryMetalHandlePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryMetalHandlePropertiesEXT( VkMemoryMetalHandlePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryMetalHandlePropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + MemoryMetalHandlePropertiesEXT & operator=( MemoryMetalHandlePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryMetalHandlePropertiesEXT & operator=( VkMemoryMetalHandlePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMemoryMetalHandlePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryMetalHandlePropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryMetalHandlePropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryMetalHandlePropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryTypeBits ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryMetalHandlePropertiesEXT const & ) const = default; +# else + bool operator==( MemoryMetalHandlePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryMetalHandlePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eMemoryMetalHandlePropertiesEXT; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryMetalHandlePropertiesEXT; + }; +# endif + + template <> + struct CppType + { + using Type = MemoryMetalHandlePropertiesEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + // wrapper struct for struct VkMemoryOpaqueCaptureAddressAllocateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryOpaqueCaptureAddressAllocateInfo.html + struct MemoryOpaqueCaptureAddressAllocateInfo + { + using NativeType = VkMemoryOpaqueCaptureAddressAllocateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( uint64_t opaqueCaptureAddress_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , opaqueCaptureAddress{ opaqueCaptureAddress_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryOpaqueCaptureAddressAllocateInfo( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryOpaqueCaptureAddressAllocateInfo( *reinterpret_cast( &rhs ) ) + { + } + + MemoryOpaqueCaptureAddressAllocateInfo & operator=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryOpaqueCaptureAddressAllocateInfo & operator=( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) & VULKAN_HPP_NOEXCEPT + { + opaqueCaptureAddress = opaqueCaptureAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo && setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) && VULKAN_HPP_NOEXCEPT + { + opaqueCaptureAddress = opaqueCaptureAddress_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryOpaqueCaptureAddressAllocateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryOpaqueCaptureAddressAllocateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryOpaqueCaptureAddressAllocateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryOpaqueCaptureAddressAllocateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, opaqueCaptureAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryOpaqueCaptureAddressAllocateInfo const & ) const = default; +#else + bool operator==( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress ); +# endif + } + + bool operator!=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo; + void const * pNext = {}; + uint64_t opaqueCaptureAddress = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryOpaqueCaptureAddressAllocateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryOpaqueCaptureAddressAllocateInfo; + }; + + using MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo; + + // wrapper struct for struct VkMemoryPriorityAllocateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryPriorityAllocateInfoEXT.html + struct MemoryPriorityAllocateInfoEXT + { + using NativeType = VkMemoryPriorityAllocateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryPriorityAllocateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT( float priority_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , priority{ priority_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryPriorityAllocateInfoEXT( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryPriorityAllocateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + MemoryPriorityAllocateInfoEXT & operator=( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryPriorityAllocateInfoEXT & operator=( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & setPriority( float priority_ ) & VULKAN_HPP_NOEXCEPT + { + priority = priority_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT && setPriority( float priority_ ) && VULKAN_HPP_NOEXCEPT + { + priority = priority_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryPriorityAllocateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryPriorityAllocateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryPriorityAllocateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryPriorityAllocateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, priority ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryPriorityAllocateInfoEXT const & ) const = default; +#else + bool operator==( MemoryPriorityAllocateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( priority == rhs.priority ); +# endif + } + + bool operator!=( MemoryPriorityAllocateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryPriorityAllocateInfoEXT; + void const * pNext = {}; + float priority = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryPriorityAllocateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryPriorityAllocateInfoEXT; + }; + + // wrapper struct for struct VkMemoryRangeBarrierKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryRangeBarrierKHR.html + struct MemoryRangeBarrierKHR + { + using NativeType = VkMemoryRangeBarrierKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryRangeBarrierKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryRangeBarrierKHR( PipelineStageFlags2 srcStageMask_ = {}, + AccessFlags2 srcAccessMask_ = {}, + PipelineStageFlags2 dstStageMask_ = {}, + AccessFlags2 dstAccessMask_ = {}, + uint32_t srcQueueFamilyIndex_ = {}, + uint32_t dstQueueFamilyIndex_ = {}, + DeviceAddressRangeKHR addressRange_ = {}, + AddressCommandFlagsKHR addressFlags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcStageMask{ srcStageMask_ } + , srcAccessMask{ srcAccessMask_ } + , dstStageMask{ dstStageMask_ } + , dstAccessMask{ dstAccessMask_ } + , srcQueueFamilyIndex{ srcQueueFamilyIndex_ } + , dstQueueFamilyIndex{ dstQueueFamilyIndex_ } + , addressRange{ addressRange_ } + , addressFlags{ addressFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryRangeBarrierKHR( MemoryRangeBarrierKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryRangeBarrierKHR( VkMemoryRangeBarrierKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryRangeBarrierKHR( *reinterpret_cast( &rhs ) ) + { + } + + MemoryRangeBarrierKHR & operator=( MemoryRangeBarrierKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryRangeBarrierKHR & operator=( VkMemoryRangeBarrierKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR & setSrcStageMask( PipelineStageFlags2 srcStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR && setSrcStageMask( PipelineStageFlags2 srcStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR & setSrcAccessMask( AccessFlags2 srcAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR && setSrcAccessMask( AccessFlags2 srcAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR & setDstStageMask( PipelineStageFlags2 dstStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR && setDstStageMask( PipelineStageFlags2 dstStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR & setDstAccessMask( AccessFlags2 dstAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR && setDstAccessMask( AccessFlags2 dstAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR && setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR && setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR & setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR && setAddressRange( DeviceAddressRangeKHR const & addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR & setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) & VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarrierKHR && setAddressFlags( AddressCommandFlagsKHR addressFlags_ ) && VULKAN_HPP_NOEXCEPT + { + addressFlags = addressFlags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryRangeBarrierKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryRangeBarrierKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryRangeBarrierKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryRangeBarrierKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, addressRange, addressFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryRangeBarrierKHR const & ) const = default; +#else + bool operator==( MemoryRangeBarrierKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) && + ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && + ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( addressRange == rhs.addressRange ) && ( addressFlags == rhs.addressFlags ); +# endif + } + + bool operator!=( MemoryRangeBarrierKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryRangeBarrierKHR; + void const * pNext = {}; + PipelineStageFlags2 srcStageMask = {}; + AccessFlags2 srcAccessMask = {}; + PipelineStageFlags2 dstStageMask = {}; + AccessFlags2 dstAccessMask = {}; + uint32_t srcQueueFamilyIndex = {}; + uint32_t dstQueueFamilyIndex = {}; + DeviceAddressRangeKHR addressRange = {}; + AddressCommandFlagsKHR addressFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryRangeBarrierKHR; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryRangeBarrierKHR; + }; + + // wrapper struct for struct VkMemoryRangeBarriersInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryRangeBarriersInfoKHR.html + struct MemoryRangeBarriersInfoKHR + { + using NativeType = VkMemoryRangeBarriersInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryRangeBarriersInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryRangeBarriersInfoKHR( uint32_t memoryRangeBarrierCount_ = {}, + MemoryRangeBarrierKHR const * pMemoryRangeBarriers_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryRangeBarrierCount{ memoryRangeBarrierCount_ } + , pMemoryRangeBarriers{ pMemoryRangeBarriers_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryRangeBarriersInfoKHR( MemoryRangeBarriersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryRangeBarriersInfoKHR( VkMemoryRangeBarriersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryRangeBarriersInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MemoryRangeBarriersInfoKHR( ArrayProxyNoTemporaries const & memoryRangeBarriers_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), memoryRangeBarrierCount( static_cast( memoryRangeBarriers_.size() ) ), pMemoryRangeBarriers( memoryRangeBarriers_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + MemoryRangeBarriersInfoKHR & operator=( MemoryRangeBarriersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryRangeBarriersInfoKHR & operator=( VkMemoryRangeBarriersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarriersInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarriersInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarriersInfoKHR & setMemoryRangeBarrierCount( uint32_t memoryRangeBarrierCount_ ) & VULKAN_HPP_NOEXCEPT + { + memoryRangeBarrierCount = memoryRangeBarrierCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarriersInfoKHR && setMemoryRangeBarrierCount( uint32_t memoryRangeBarrierCount_ ) && VULKAN_HPP_NOEXCEPT + { + memoryRangeBarrierCount = memoryRangeBarrierCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarriersInfoKHR & setPMemoryRangeBarriers( MemoryRangeBarrierKHR const * pMemoryRangeBarriers_ ) & VULKAN_HPP_NOEXCEPT + { + pMemoryRangeBarriers = pMemoryRangeBarriers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryRangeBarriersInfoKHR && setPMemoryRangeBarriers( MemoryRangeBarrierKHR const * pMemoryRangeBarriers_ ) && VULKAN_HPP_NOEXCEPT + { + pMemoryRangeBarriers = pMemoryRangeBarriers_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MemoryRangeBarriersInfoKHR & setMemoryRangeBarriers( ArrayProxyNoTemporaries const & memoryRangeBarriers_ ) VULKAN_HPP_NOEXCEPT + { + memoryRangeBarrierCount = static_cast( memoryRangeBarriers_.size() ); + pMemoryRangeBarriers = memoryRangeBarriers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryRangeBarriersInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryRangeBarriersInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryRangeBarriersInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryRangeBarriersInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryRangeBarrierCount, pMemoryRangeBarriers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryRangeBarriersInfoKHR const & ) const = default; +#else + bool operator==( MemoryRangeBarriersInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryRangeBarrierCount == rhs.memoryRangeBarrierCount ) && + ( pMemoryRangeBarriers == rhs.pMemoryRangeBarriers ); +# endif + } + + bool operator!=( MemoryRangeBarriersInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryRangeBarriersInfoKHR; + void const * pNext = {}; + uint32_t memoryRangeBarrierCount = {}; + MemoryRangeBarrierKHR const * pMemoryRangeBarriers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryRangeBarriersInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryRangeBarriersInfoKHR; + }; + + // wrapper struct for struct VkMemoryRequirements, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryRequirements.html + struct MemoryRequirements + { + using NativeType = VkMemoryRequirements; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryRequirements( DeviceSize size_ = {}, DeviceSize alignment_ = {}, uint32_t memoryTypeBits_ = {} ) VULKAN_HPP_NOEXCEPT + : size{ size_ } + , alignment{ alignment_ } + , memoryTypeBits{ memoryTypeBits_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryRequirements( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryRequirements( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryRequirements( *reinterpret_cast( &rhs ) ) {} + + MemoryRequirements & operator=( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryRequirements & operator=( VkMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryRequirements &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryRequirements const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryRequirements *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( size, alignment, memoryTypeBits ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryRequirements const & ) const = default; +#else + bool operator==( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( size == rhs.size ) && ( alignment == rhs.alignment ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceSize size = {}; + DeviceSize alignment = {}; + uint32_t memoryTypeBits = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryRequirements; + }; +#endif + + // wrapper struct for struct VkMemoryRequirements2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryRequirements2.html + struct MemoryRequirements2 + { + using NativeType = VkMemoryRequirements2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryRequirements2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryRequirements2( MemoryRequirements memoryRequirements_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryRequirements{ memoryRequirements_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryRequirements2( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryRequirements2( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryRequirements2( *reinterpret_cast( &rhs ) ) + { + } + + MemoryRequirements2 & operator=( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryRequirements2 & operator=( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryRequirements2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryRequirements2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryRequirements ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryRequirements2 const & ) const = default; +#else + bool operator==( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryRequirements == rhs.memoryRequirements ); +# endif + } + + bool operator!=( MemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryRequirements2; + void * pNext = {}; + MemoryRequirements memoryRequirements = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryRequirements2; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryRequirements2; + }; + + using MemoryRequirements2KHR = MemoryRequirements2; + + // wrapper struct for struct VkMemoryType, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryType.html + struct MemoryType + { + using NativeType = VkMemoryType; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryType( MemoryPropertyFlags propertyFlags_ = {}, uint32_t heapIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : propertyFlags{ propertyFlags_ } + , heapIndex{ heapIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryType( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryType( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryType( *reinterpret_cast( &rhs ) ) {} + + MemoryType & operator=( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryType & operator=( VkMemoryType const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMemoryType const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryType &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryType const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryType *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( propertyFlags, heapIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryType const & ) const = default; +#else + bool operator==( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( propertyFlags == rhs.propertyFlags ) && ( heapIndex == rhs.heapIndex ); +# endif + } + + bool operator!=( MemoryType const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + MemoryPropertyFlags propertyFlags = {}; + uint32_t heapIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryType; + }; +#endif + + // wrapper struct for struct VkMemoryUnmapInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryUnmapInfo.html + struct MemoryUnmapInfo + { + using NativeType = VkMemoryUnmapInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryUnmapInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryUnmapInfo( MemoryUnmapFlags flags_ = {}, DeviceMemory memory_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , memory{ memory_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryUnmapInfo( MemoryUnmapInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryUnmapInfo( VkMemoryUnmapInfo const & rhs ) VULKAN_HPP_NOEXCEPT : MemoryUnmapInfo( *reinterpret_cast( &rhs ) ) {} + + MemoryUnmapInfo & operator=( MemoryUnmapInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryUnmapInfo & operator=( VkMemoryUnmapInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfo & setFlags( MemoryUnmapFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfo && setFlags( MemoryUnmapFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfo & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MemoryUnmapInfo && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMemoryUnmapInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryUnmapInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryUnmapInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryUnmapInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, memory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryUnmapInfo const & ) const = default; +#else + bool operator==( MemoryUnmapInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( memory == rhs.memory ); +# endif + } + + bool operator!=( MemoryUnmapInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMemoryUnmapInfo; + void const * pNext = {}; + MemoryUnmapFlags flags = {}; + DeviceMemory memory = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryUnmapInfo; + }; +#endif + + template <> + struct CppType + { + using Type = MemoryUnmapInfo; + }; + + using MemoryUnmapInfoKHR = MemoryUnmapInfo; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkMemoryWin32HandlePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryWin32HandlePropertiesKHR.html + struct MemoryWin32HandlePropertiesKHR + { + using NativeType = VkMemoryWin32HandlePropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryWin32HandlePropertiesKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryTypeBits{ memoryTypeBits_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryWin32HandlePropertiesKHR( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryWin32HandlePropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + MemoryWin32HandlePropertiesKHR & operator=( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryWin32HandlePropertiesKHR & operator=( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMemoryWin32HandlePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryWin32HandlePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryWin32HandlePropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryWin32HandlePropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryTypeBits ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryWin32HandlePropertiesKHR const & ) const = default; +# else + bool operator==( MemoryWin32HandlePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryWin32HandlePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eMemoryWin32HandlePropertiesKHR; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryWin32HandlePropertiesKHR; + }; +# endif + + template <> + struct CppType + { + using Type = MemoryWin32HandlePropertiesKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkMemoryZirconHandlePropertiesFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMemoryZirconHandlePropertiesFUCHSIA.html + struct MemoryZirconHandlePropertiesFUCHSIA + { + using NativeType = VkMemoryZirconHandlePropertiesFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryZirconHandlePropertiesFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MemoryZirconHandlePropertiesFUCHSIA( uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryTypeBits{ memoryTypeBits_ } + { + } + + VULKAN_HPP_CONSTEXPR MemoryZirconHandlePropertiesFUCHSIA( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MemoryZirconHandlePropertiesFUCHSIA( VkMemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : MemoryZirconHandlePropertiesFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + MemoryZirconHandlePropertiesFUCHSIA & operator=( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MemoryZirconHandlePropertiesFUCHSIA & operator=( VkMemoryZirconHandlePropertiesFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMemoryZirconHandlePropertiesFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryZirconHandlePropertiesFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMemoryZirconHandlePropertiesFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMemoryZirconHandlePropertiesFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryTypeBits ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MemoryZirconHandlePropertiesFUCHSIA const & ) const = default; +# else + bool operator==( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( MemoryZirconHandlePropertiesFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eMemoryZirconHandlePropertiesFUCHSIA; + void * pNext = {}; + uint32_t memoryTypeBits = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MemoryZirconHandlePropertiesFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = MemoryZirconHandlePropertiesFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + // wrapper struct for struct VkMetalSurfaceCreateInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMetalSurfaceCreateInfoEXT.html + struct MetalSurfaceCreateInfoEXT + { + using NativeType = VkMetalSurfaceCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMetalSurfaceCreateInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + MetalSurfaceCreateInfoEXT( MetalSurfaceCreateFlagsEXT flags_ = {}, CAMetalLayer const * pLayer_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pLayer{ pLayer_ } + { + } + + VULKAN_HPP_CONSTEXPR MetalSurfaceCreateInfoEXT( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MetalSurfaceCreateInfoEXT( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MetalSurfaceCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + MetalSurfaceCreateInfoEXT & operator=( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MetalSurfaceCreateInfoEXT & operator=( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setFlags( MetalSurfaceCreateFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT && setFlags( MetalSurfaceCreateFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & setPLayer( CAMetalLayer const * pLayer_ ) & VULKAN_HPP_NOEXCEPT + { + pLayer = pLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT && setPLayer( CAMetalLayer const * pLayer_ ) && VULKAN_HPP_NOEXCEPT + { + pLayer = pLayer_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMetalSurfaceCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMetalSurfaceCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMetalSurfaceCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMetalSurfaceCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pLayer ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MetalSurfaceCreateInfoEXT const & ) const = default; +# else + bool operator==( MetalSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pLayer == rhs.pLayer ); +# endif + } + + bool operator!=( MetalSurfaceCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eMetalSurfaceCreateInfoEXT; + void const * pNext = {}; + MetalSurfaceCreateFlagsEXT flags = {}; + CAMetalLayer const * pLayer = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MetalSurfaceCreateInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = MetalSurfaceCreateInfoEXT; + }; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + // wrapper struct for struct VkMicromapBuildInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapBuildInfoEXT.html + struct MicromapBuildInfoEXT + { + using NativeType = VkMicromapBuildInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMicromapBuildInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT( MicromapTypeEXT type_ = MicromapTypeEXT::eOpacityMicromap, + BuildMicromapFlagsEXT flags_ = {}, + BuildMicromapModeEXT mode_ = BuildMicromapModeEXT::eBuild, + MicromapEXT dstMicromap_ = {}, + uint32_t usageCountsCount_ = {}, + MicromapUsageEXT const * pUsageCounts_ = {}, + MicromapUsageEXT const * const * ppUsageCounts_ = {}, + DeviceOrHostAddressConstKHR data_ = {}, + DeviceOrHostAddressKHR scratchData_ = {}, + DeviceOrHostAddressConstKHR triangleArray_ = {}, + DeviceSize triangleArrayStride_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , flags{ flags_ } + , mode{ mode_ } + , dstMicromap{ dstMicromap_ } + , usageCountsCount{ usageCountsCount_ } + , pUsageCounts{ pUsageCounts_ } + , ppUsageCounts{ ppUsageCounts_ } + , data{ data_ } + , scratchData{ scratchData_ } + , triangleArray{ triangleArray_ } + , triangleArrayStride{ triangleArrayStride_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT( MicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MicromapBuildInfoEXT( VkMicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MicromapBuildInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MicromapBuildInfoEXT( MicromapTypeEXT type_, + BuildMicromapFlagsEXT flags_, + BuildMicromapModeEXT mode_, + MicromapEXT dstMicromap_, + ArrayProxyNoTemporaries const & usageCounts_, + ArrayProxyNoTemporaries const & pUsageCounts_ = {}, + DeviceOrHostAddressConstKHR data_ = {}, + DeviceOrHostAddressKHR scratchData_ = {}, + DeviceOrHostAddressConstKHR triangleArray_ = {}, + DeviceSize triangleArrayStride_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , type( type_ ) + , flags( flags_ ) + , mode( mode_ ) + , dstMicromap( dstMicromap_ ) + , usageCountsCount( static_cast( !usageCounts_.empty() ? usageCounts_.size() : pUsageCounts_.size() ) ) + , pUsageCounts( usageCounts_.data() ) + , ppUsageCounts( pUsageCounts_.data() ) + , data( data_ ) + , scratchData( scratchData_ ) + , triangleArray( triangleArray_ ) + , triangleArrayStride( triangleArrayStride_ ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( ( !usageCounts_.empty() + !pUsageCounts_.empty() ) <= 1 ); +# else + if ( 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() ) ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::MicromapBuildInfoEXT::MicromapBuildInfoEXT: 1 < ( !usageCounts_.empty() + !pUsageCounts_.empty() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + MicromapBuildInfoEXT & operator=( MicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MicromapBuildInfoEXT & operator=( VkMicromapBuildInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setType( MicromapTypeEXT type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setType( MicromapTypeEXT type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setFlags( BuildMicromapFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setFlags( BuildMicromapFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setMode( BuildMicromapModeEXT mode_ ) & VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setMode( BuildMicromapModeEXT mode_ ) && VULKAN_HPP_NOEXCEPT + { + mode = mode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setDstMicromap( MicromapEXT dstMicromap_ ) & VULKAN_HPP_NOEXCEPT + { + dstMicromap = dstMicromap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setDstMicromap( MicromapEXT dstMicromap_ ) && VULKAN_HPP_NOEXCEPT + { + dstMicromap = dstMicromap_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setUsageCountsCount( uint32_t usageCountsCount_ ) & VULKAN_HPP_NOEXCEPT + { + usageCountsCount = usageCountsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setUsageCountsCount( uint32_t usageCountsCount_ ) && VULKAN_HPP_NOEXCEPT + { + usageCountsCount = usageCountsCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setPUsageCounts( MicromapUsageEXT const * pUsageCounts_ ) & VULKAN_HPP_NOEXCEPT + { + pUsageCounts = pUsageCounts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setPUsageCounts( MicromapUsageEXT const * pUsageCounts_ ) && VULKAN_HPP_NOEXCEPT + { + pUsageCounts = pUsageCounts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MicromapBuildInfoEXT & setUsageCounts( ArrayProxyNoTemporaries const & usageCounts_ ) VULKAN_HPP_NOEXCEPT + { + usageCountsCount = static_cast( usageCounts_.size() ); + pUsageCounts = usageCounts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setPpUsageCounts( MicromapUsageEXT const * const * ppUsageCounts_ ) & VULKAN_HPP_NOEXCEPT + { + ppUsageCounts = ppUsageCounts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setPpUsageCounts( MicromapUsageEXT const * const * ppUsageCounts_ ) && VULKAN_HPP_NOEXCEPT + { + ppUsageCounts = ppUsageCounts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MicromapBuildInfoEXT & setPUsageCounts( ArrayProxyNoTemporaries const & pUsageCounts_ ) VULKAN_HPP_NOEXCEPT + { + usageCountsCount = static_cast( pUsageCounts_.size() ); + ppUsageCounts = pUsageCounts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setData( DeviceOrHostAddressConstKHR const & data_ ) & VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setData( DeviceOrHostAddressConstKHR const & data_ ) && VULKAN_HPP_NOEXCEPT + { + data = data_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setScratchData( DeviceOrHostAddressKHR const & scratchData_ ) & VULKAN_HPP_NOEXCEPT + { + scratchData = scratchData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setScratchData( DeviceOrHostAddressKHR const & scratchData_ ) && VULKAN_HPP_NOEXCEPT + { + scratchData = scratchData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setTriangleArray( DeviceOrHostAddressConstKHR const & triangleArray_ ) & VULKAN_HPP_NOEXCEPT + { + triangleArray = triangleArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setTriangleArray( DeviceOrHostAddressConstKHR const & triangleArray_ ) && VULKAN_HPP_NOEXCEPT + { + triangleArray = triangleArray_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT & setTriangleArrayStride( DeviceSize triangleArrayStride_ ) & VULKAN_HPP_NOEXCEPT + { + triangleArrayStride = triangleArrayStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildInfoEXT && setTriangleArrayStride( DeviceSize triangleArrayStride_ ) && VULKAN_HPP_NOEXCEPT + { + triangleArrayStride = triangleArrayStride_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMicromapBuildInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapBuildInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapBuildInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMicromapBuildInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, type, flags, mode, dstMicromap, usageCountsCount, pUsageCounts, ppUsageCounts, data, scratchData, triangleArray, triangleArrayStride ); + } +#endif + + public: + StructureType sType = StructureType::eMicromapBuildInfoEXT; + void const * pNext = {}; + MicromapTypeEXT type = MicromapTypeEXT::eOpacityMicromap; + BuildMicromapFlagsEXT flags = {}; + BuildMicromapModeEXT mode = BuildMicromapModeEXT::eBuild; + MicromapEXT dstMicromap = {}; + uint32_t usageCountsCount = {}; + MicromapUsageEXT const * pUsageCounts = {}; + MicromapUsageEXT const * const * ppUsageCounts = {}; + DeviceOrHostAddressConstKHR data = {}; + DeviceOrHostAddressKHR scratchData = {}; + DeviceOrHostAddressConstKHR triangleArray = {}; + DeviceSize triangleArrayStride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MicromapBuildInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = MicromapBuildInfoEXT; + }; + + // wrapper struct for struct VkMicromapBuildSizesInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapBuildSizesInfoEXT.html + struct MicromapBuildSizesInfoEXT + { + using NativeType = VkMicromapBuildSizesInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMicromapBuildSizesInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MicromapBuildSizesInfoEXT( DeviceSize micromapSize_ = {}, + DeviceSize buildScratchSize_ = {}, + Bool32 discardable_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , micromapSize{ micromapSize_ } + , buildScratchSize{ buildScratchSize_ } + , discardable{ discardable_ } + { + } + + VULKAN_HPP_CONSTEXPR MicromapBuildSizesInfoEXT( MicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MicromapBuildSizesInfoEXT( VkMicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MicromapBuildSizesInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + MicromapBuildSizesInfoEXT & operator=( MicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MicromapBuildSizesInfoEXT & operator=( VkMicromapBuildSizesInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setMicromapSize( DeviceSize micromapSize_ ) & VULKAN_HPP_NOEXCEPT + { + micromapSize = micromapSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT && setMicromapSize( DeviceSize micromapSize_ ) && VULKAN_HPP_NOEXCEPT + { + micromapSize = micromapSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setBuildScratchSize( DeviceSize buildScratchSize_ ) & VULKAN_HPP_NOEXCEPT + { + buildScratchSize = buildScratchSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT && setBuildScratchSize( DeviceSize buildScratchSize_ ) && VULKAN_HPP_NOEXCEPT + { + buildScratchSize = buildScratchSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT & setDiscardable( Bool32 discardable_ ) & VULKAN_HPP_NOEXCEPT + { + discardable = discardable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapBuildSizesInfoEXT && setDiscardable( Bool32 discardable_ ) && VULKAN_HPP_NOEXCEPT + { + discardable = discardable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMicromapBuildSizesInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapBuildSizesInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapBuildSizesInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMicromapBuildSizesInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, micromapSize, buildScratchSize, discardable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MicromapBuildSizesInfoEXT const & ) const = default; +#else + bool operator==( MicromapBuildSizesInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( micromapSize == rhs.micromapSize ) && ( buildScratchSize == rhs.buildScratchSize ) && + ( discardable == rhs.discardable ); +# endif + } + + bool operator!=( MicromapBuildSizesInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMicromapBuildSizesInfoEXT; + void const * pNext = {}; + DeviceSize micromapSize = {}; + DeviceSize buildScratchSize = {}; + Bool32 discardable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MicromapBuildSizesInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = MicromapBuildSizesInfoEXT; + }; + + // wrapper struct for struct VkMicromapCreateInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapCreateInfoEXT.html + struct MicromapCreateInfoEXT + { + using NativeType = VkMicromapCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMicromapCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MicromapCreateInfoEXT( MicromapCreateFlagsEXT createFlags_ = {}, + Buffer buffer_ = {}, + DeviceSize offset_ = {}, + DeviceSize size_ = {}, + MicromapTypeEXT type_ = MicromapTypeEXT::eOpacityMicromap, + DeviceAddress deviceAddress_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , createFlags{ createFlags_ } + , buffer{ buffer_ } + , offset{ offset_ } + , size{ size_ } + , type{ type_ } + , deviceAddress{ deviceAddress_ } + { + } + + VULKAN_HPP_CONSTEXPR MicromapCreateInfoEXT( MicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MicromapCreateInfoEXT( VkMicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MicromapCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + MicromapCreateInfoEXT & operator=( MicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MicromapCreateInfoEXT & operator=( VkMicromapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setCreateFlags( MicromapCreateFlagsEXT createFlags_ ) & VULKAN_HPP_NOEXCEPT + { + createFlags = createFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT && setCreateFlags( MicromapCreateFlagsEXT createFlags_ ) && VULKAN_HPP_NOEXCEPT + { + createFlags = createFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setBuffer( Buffer buffer_ ) & VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT && setBuffer( Buffer buffer_ ) && VULKAN_HPP_NOEXCEPT + { + buffer = buffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setOffset( DeviceSize offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT && setOffset( DeviceSize offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setType( MicromapTypeEXT type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT && setType( MicromapTypeEXT type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT & setDeviceAddress( DeviceAddress deviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapCreateInfoEXT && setDeviceAddress( DeviceAddress deviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + deviceAddress = deviceAddress_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMicromapCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMicromapCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, createFlags, buffer, offset, size, type, deviceAddress ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MicromapCreateInfoEXT const & ) const = default; +#else + bool operator==( MicromapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( createFlags == rhs.createFlags ) && ( buffer == rhs.buffer ) && ( offset == rhs.offset ) && + ( size == rhs.size ) && ( type == rhs.type ) && ( deviceAddress == rhs.deviceAddress ); +# endif + } + + bool operator!=( MicromapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMicromapCreateInfoEXT; + void const * pNext = {}; + MicromapCreateFlagsEXT createFlags = {}; + Buffer buffer = {}; + DeviceSize offset = {}; + DeviceSize size = {}; + MicromapTypeEXT type = MicromapTypeEXT::eOpacityMicromap; + DeviceAddress deviceAddress = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MicromapCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = MicromapCreateInfoEXT; + }; + + // wrapper struct for struct VkMicromapTriangleEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapTriangleEXT.html + struct MicromapTriangleEXT + { + using NativeType = VkMicromapTriangleEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MicromapTriangleEXT( uint32_t dataOffset_ = {}, uint16_t subdivisionLevel_ = {}, uint16_t format_ = {} ) VULKAN_HPP_NOEXCEPT + : dataOffset{ dataOffset_ } + , subdivisionLevel{ subdivisionLevel_ } + , format{ format_ } + { + } + + VULKAN_HPP_CONSTEXPR MicromapTriangleEXT( MicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MicromapTriangleEXT( VkMicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT : MicromapTriangleEXT( *reinterpret_cast( &rhs ) ) + { + } + + MicromapTriangleEXT & operator=( MicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MicromapTriangleEXT & operator=( VkMicromapTriangleEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT & setDataOffset( uint32_t dataOffset_ ) & VULKAN_HPP_NOEXCEPT + { + dataOffset = dataOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT && setDataOffset( uint32_t dataOffset_ ) && VULKAN_HPP_NOEXCEPT + { + dataOffset = dataOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT & setSubdivisionLevel( uint16_t subdivisionLevel_ ) & VULKAN_HPP_NOEXCEPT + { + subdivisionLevel = subdivisionLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT && setSubdivisionLevel( uint16_t subdivisionLevel_ ) && VULKAN_HPP_NOEXCEPT + { + subdivisionLevel = subdivisionLevel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT & setFormat( uint16_t format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapTriangleEXT && setFormat( uint16_t format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMicromapTriangleEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapTriangleEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapTriangleEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMicromapTriangleEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( dataOffset, subdivisionLevel, format ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MicromapTriangleEXT const & ) const = default; +#else + bool operator==( MicromapTriangleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( dataOffset == rhs.dataOffset ) && ( subdivisionLevel == rhs.subdivisionLevel ) && ( format == rhs.format ); +# endif + } + + bool operator!=( MicromapTriangleEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t dataOffset = {}; + uint16_t subdivisionLevel = {}; + uint16_t format = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MicromapTriangleEXT; + }; +#endif + + // wrapper struct for struct VkMicromapVersionInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMicromapVersionInfoEXT.html + struct MicromapVersionInfoEXT + { + using NativeType = VkMicromapVersionInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMicromapVersionInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MicromapVersionInfoEXT( uint8_t const * pVersionData_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pVersionData{ pVersionData_ } + { + } + + VULKAN_HPP_CONSTEXPR MicromapVersionInfoEXT( MicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MicromapVersionInfoEXT( VkMicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MicromapVersionInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + MicromapVersionInfoEXT & operator=( MicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MicromapVersionInfoEXT & operator=( VkMicromapVersionInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MicromapVersionInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapVersionInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MicromapVersionInfoEXT & setPVersionData( uint8_t const * pVersionData_ ) & VULKAN_HPP_NOEXCEPT + { + pVersionData = pVersionData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MicromapVersionInfoEXT && setPVersionData( uint8_t const * pVersionData_ ) && VULKAN_HPP_NOEXCEPT + { + pVersionData = pVersionData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMicromapVersionInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapVersionInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMicromapVersionInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMicromapVersionInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pVersionData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MicromapVersionInfoEXT const & ) const = default; +#else + bool operator==( MicromapVersionInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pVersionData == rhs.pVersionData ); +# endif + } + + bool operator!=( MicromapVersionInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMicromapVersionInfoEXT; + void const * pNext = {}; + uint8_t const * pVersionData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MicromapVersionInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = MicromapVersionInfoEXT; + }; + + // wrapper struct for struct VkMultiDrawIndexedInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMultiDrawIndexedInfoEXT.html + struct MultiDrawIndexedInfoEXT + { + using NativeType = VkMultiDrawIndexedInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MultiDrawIndexedInfoEXT( uint32_t firstIndex_ = {}, uint32_t indexCount_ = {}, int32_t vertexOffset_ = {} ) VULKAN_HPP_NOEXCEPT + : firstIndex{ firstIndex_ } + , indexCount{ indexCount_ } + , vertexOffset{ vertexOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR MultiDrawIndexedInfoEXT( MultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultiDrawIndexedInfoEXT( VkMultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MultiDrawIndexedInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + MultiDrawIndexedInfoEXT & operator=( MultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MultiDrawIndexedInfoEXT & operator=( VkMultiDrawIndexedInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setFirstIndex( uint32_t firstIndex_ ) & VULKAN_HPP_NOEXCEPT + { + firstIndex = firstIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT && setFirstIndex( uint32_t firstIndex_ ) && VULKAN_HPP_NOEXCEPT + { + firstIndex = firstIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setIndexCount( uint32_t indexCount_ ) & VULKAN_HPP_NOEXCEPT + { + indexCount = indexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT && setIndexCount( uint32_t indexCount_ ) && VULKAN_HPP_NOEXCEPT + { + indexCount = indexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT & setVertexOffset( int32_t vertexOffset_ ) & VULKAN_HPP_NOEXCEPT + { + vertexOffset = vertexOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawIndexedInfoEXT && setVertexOffset( int32_t vertexOffset_ ) && VULKAN_HPP_NOEXCEPT + { + vertexOffset = vertexOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMultiDrawIndexedInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultiDrawIndexedInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultiDrawIndexedInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMultiDrawIndexedInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( firstIndex, indexCount, vertexOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MultiDrawIndexedInfoEXT const & ) const = default; +#else + bool operator==( MultiDrawIndexedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( firstIndex == rhs.firstIndex ) && ( indexCount == rhs.indexCount ) && ( vertexOffset == rhs.vertexOffset ); +# endif + } + + bool operator!=( MultiDrawIndexedInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t firstIndex = {}; + uint32_t indexCount = {}; + int32_t vertexOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MultiDrawIndexedInfoEXT; + }; +#endif + + // wrapper struct for struct VkMultiDrawInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMultiDrawInfoEXT.html + struct MultiDrawInfoEXT + { + using NativeType = VkMultiDrawInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MultiDrawInfoEXT( uint32_t firstVertex_ = {}, uint32_t vertexCount_ = {} ) VULKAN_HPP_NOEXCEPT + : firstVertex{ firstVertex_ } + , vertexCount{ vertexCount_ } + { + } + + VULKAN_HPP_CONSTEXPR MultiDrawInfoEXT( MultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultiDrawInfoEXT( VkMultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : MultiDrawInfoEXT( *reinterpret_cast( &rhs ) ) {} + + MultiDrawInfoEXT & operator=( MultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MultiDrawInfoEXT & operator=( VkMultiDrawInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT & setFirstVertex( uint32_t firstVertex_ ) & VULKAN_HPP_NOEXCEPT + { + firstVertex = firstVertex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT && setFirstVertex( uint32_t firstVertex_ ) && VULKAN_HPP_NOEXCEPT + { + firstVertex = firstVertex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT & setVertexCount( uint32_t vertexCount_ ) & VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiDrawInfoEXT && setVertexCount( uint32_t vertexCount_ ) && VULKAN_HPP_NOEXCEPT + { + vertexCount = vertexCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMultiDrawInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultiDrawInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultiDrawInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMultiDrawInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( firstVertex, vertexCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MultiDrawInfoEXT const & ) const = default; +#else + bool operator==( MultiDrawInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( firstVertex == rhs.firstVertex ) && ( vertexCount == rhs.vertexCount ); +# endif + } + + bool operator!=( MultiDrawInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t firstVertex = {}; + uint32_t vertexCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MultiDrawInfoEXT; + }; +#endif + + // wrapper struct for struct VkMultisamplePropertiesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMultisamplePropertiesEXT.html + struct MultisamplePropertiesEXT + { + using NativeType = VkMultisamplePropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMultisamplePropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( Extent2D maxSampleLocationGridSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxSampleLocationGridSize{ maxSampleLocationGridSize_ } + { + } + + VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultisamplePropertiesEXT( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MultisamplePropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + MultisamplePropertiesEXT & operator=( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MultisamplePropertiesEXT & operator=( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkMultisamplePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultisamplePropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultisamplePropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMultisamplePropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxSampleLocationGridSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MultisamplePropertiesEXT const & ) const = default; +#else + bool operator==( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize ); +# endif + } + + bool operator!=( MultisamplePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMultisamplePropertiesEXT; + void * pNext = {}; + Extent2D maxSampleLocationGridSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MultisamplePropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = MultisamplePropertiesEXT; + }; + + // wrapper struct for struct VkMultisampledRenderToSingleSampledInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMultisampledRenderToSingleSampledInfoEXT.html + struct MultisampledRenderToSingleSampledInfoEXT + { + using NativeType = VkMultisampledRenderToSingleSampledInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMultisampledRenderToSingleSampledInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MultisampledRenderToSingleSampledInfoEXT( Bool32 multisampledRenderToSingleSampledEnable_ = {}, + SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , multisampledRenderToSingleSampledEnable{ multisampledRenderToSingleSampledEnable_ } + , rasterizationSamples{ rasterizationSamples_ } + { + } + + VULKAN_HPP_CONSTEXPR MultisampledRenderToSingleSampledInfoEXT( MultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultisampledRenderToSingleSampledInfoEXT( VkMultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MultisampledRenderToSingleSampledInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + MultisampledRenderToSingleSampledInfoEXT & operator=( MultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MultisampledRenderToSingleSampledInfoEXT & operator=( VkMultisampledRenderToSingleSampledInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT & + setMultisampledRenderToSingleSampledEnable( Bool32 multisampledRenderToSingleSampledEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + multisampledRenderToSingleSampledEnable = multisampledRenderToSingleSampledEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT && + setMultisampledRenderToSingleSampledEnable( Bool32 multisampledRenderToSingleSampledEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + multisampledRenderToSingleSampledEnable = multisampledRenderToSingleSampledEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT & setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ ) & + VULKAN_HPP_NOEXCEPT + { + rasterizationSamples = rasterizationSamples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultisampledRenderToSingleSampledInfoEXT && setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ ) && + VULKAN_HPP_NOEXCEPT + { + rasterizationSamples = rasterizationSamples_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMultisampledRenderToSingleSampledInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultisampledRenderToSingleSampledInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultisampledRenderToSingleSampledInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMultisampledRenderToSingleSampledInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, multisampledRenderToSingleSampledEnable, rasterizationSamples ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MultisampledRenderToSingleSampledInfoEXT const & ) const = default; +#else + bool operator==( MultisampledRenderToSingleSampledInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multisampledRenderToSingleSampledEnable == rhs.multisampledRenderToSingleSampledEnable ) && + ( rasterizationSamples == rhs.rasterizationSamples ); +# endif + } + + bool operator!=( MultisampledRenderToSingleSampledInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMultisampledRenderToSingleSampledInfoEXT; + void const * pNext = {}; + Bool32 multisampledRenderToSingleSampledEnable = {}; + SampleCountFlagBits rasterizationSamples = SampleCountFlagBits::e1; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MultisampledRenderToSingleSampledInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = MultisampledRenderToSingleSampledInfoEXT; + }; + + // wrapper struct for struct VkMultiviewPerViewAttributesInfoNVX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMultiviewPerViewAttributesInfoNVX.html + struct MultiviewPerViewAttributesInfoNVX + { + using NativeType = VkMultiviewPerViewAttributesInfoNVX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMultiviewPerViewAttributesInfoNVX; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MultiviewPerViewAttributesInfoNVX( Bool32 perViewAttributes_ = {}, + Bool32 perViewAttributesPositionXOnly_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , perViewAttributes{ perViewAttributes_ } + , perViewAttributesPositionXOnly{ perViewAttributesPositionXOnly_ } + { + } + + VULKAN_HPP_CONSTEXPR MultiviewPerViewAttributesInfoNVX( MultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultiviewPerViewAttributesInfoNVX( VkMultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : MultiviewPerViewAttributesInfoNVX( *reinterpret_cast( &rhs ) ) + { + } + + MultiviewPerViewAttributesInfoNVX & operator=( MultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MultiviewPerViewAttributesInfoNVX & operator=( VkMultiviewPerViewAttributesInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPerViewAttributes( Bool32 perViewAttributes_ ) & VULKAN_HPP_NOEXCEPT + { + perViewAttributes = perViewAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX && setPerViewAttributes( Bool32 perViewAttributes_ ) && VULKAN_HPP_NOEXCEPT + { + perViewAttributes = perViewAttributes_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX & setPerViewAttributesPositionXOnly( Bool32 perViewAttributesPositionXOnly_ ) & + VULKAN_HPP_NOEXCEPT + { + perViewAttributesPositionXOnly = perViewAttributesPositionXOnly_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewAttributesInfoNVX && setPerViewAttributesPositionXOnly( Bool32 perViewAttributesPositionXOnly_ ) && + VULKAN_HPP_NOEXCEPT + { + perViewAttributesPositionXOnly = perViewAttributesPositionXOnly_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMultiviewPerViewAttributesInfoNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultiviewPerViewAttributesInfoNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultiviewPerViewAttributesInfoNVX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMultiviewPerViewAttributesInfoNVX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, perViewAttributes, perViewAttributesPositionXOnly ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MultiviewPerViewAttributesInfoNVX const & ) const = default; +#else + bool operator==( MultiviewPerViewAttributesInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perViewAttributes == rhs.perViewAttributes ) && + ( perViewAttributesPositionXOnly == rhs.perViewAttributesPositionXOnly ); +# endif + } + + bool operator!=( MultiviewPerViewAttributesInfoNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMultiviewPerViewAttributesInfoNVX; + void const * pNext = {}; + Bool32 perViewAttributes = {}; + Bool32 perViewAttributesPositionXOnly = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MultiviewPerViewAttributesInfoNVX; + }; +#endif + + template <> + struct CppType + { + using Type = MultiviewPerViewAttributesInfoNVX; + }; + + // wrapper struct for struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM.html + struct MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM + { + using NativeType = VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( uint32_t perViewRenderAreaCount_ = {}, + Rect2D const * pPerViewRenderAreas_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , perViewRenderAreaCount{ perViewRenderAreaCount_ } + , pPerViewRenderAreas{ pPerViewRenderAreas_ } + { + } + + VULKAN_HPP_CONSTEXPR + MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM( ArrayProxyNoTemporaries const & perViewRenderAreas_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), perViewRenderAreaCount( static_cast( perViewRenderAreas_.size() ) ), pPerViewRenderAreas( perViewRenderAreas_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM & + operator=( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM & operator=( VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM & setPerViewRenderAreaCount( uint32_t perViewRenderAreaCount_ ) & + VULKAN_HPP_NOEXCEPT + { + perViewRenderAreaCount = perViewRenderAreaCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM && setPerViewRenderAreaCount( uint32_t perViewRenderAreaCount_ ) && + VULKAN_HPP_NOEXCEPT + { + perViewRenderAreaCount = perViewRenderAreaCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM & setPPerViewRenderAreas( Rect2D const * pPerViewRenderAreas_ ) & + VULKAN_HPP_NOEXCEPT + { + pPerViewRenderAreas = pPerViewRenderAreas_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM && setPPerViewRenderAreas( Rect2D const * pPerViewRenderAreas_ ) && + VULKAN_HPP_NOEXCEPT + { + pPerViewRenderAreas = pPerViewRenderAreas_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM & + setPerViewRenderAreas( ArrayProxyNoTemporaries const & perViewRenderAreas_ ) VULKAN_HPP_NOEXCEPT + { + perViewRenderAreaCount = static_cast( perViewRenderAreas_.size() ); + pPerViewRenderAreas = perViewRenderAreas_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, perViewRenderAreaCount, pPerViewRenderAreas ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & ) const = default; +#else + bool operator==( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perViewRenderAreaCount == rhs.perViewRenderAreaCount ) && + ( pPerViewRenderAreas == rhs.pPerViewRenderAreas ); +# endif + } + + bool operator!=( MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM; + void const * pNext = {}; + uint32_t perViewRenderAreaCount = {}; + Rect2D const * pPerViewRenderAreas = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM; + }; + + // wrapper struct for struct VkMutableDescriptorTypeListEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkMutableDescriptorTypeListEXT.html + struct MutableDescriptorTypeListEXT + { + using NativeType = VkMutableDescriptorTypeListEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListEXT( uint32_t descriptorTypeCount_ = {}, DescriptorType const * pDescriptorTypes_ = {} ) VULKAN_HPP_NOEXCEPT + : descriptorTypeCount{ descriptorTypeCount_ } + , pDescriptorTypes{ pDescriptorTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListEXT( MutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MutableDescriptorTypeListEXT( VkMutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MutableDescriptorTypeListEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MutableDescriptorTypeListEXT( ArrayProxyNoTemporaries const & descriptorTypes_ ) + : descriptorTypeCount( static_cast( descriptorTypes_.size() ) ), pDescriptorTypes( descriptorTypes_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + MutableDescriptorTypeListEXT & operator=( MutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MutableDescriptorTypeListEXT & operator=( VkMutableDescriptorTypeListEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListEXT & setDescriptorTypeCount( uint32_t descriptorTypeCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorTypeCount = descriptorTypeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListEXT && setDescriptorTypeCount( uint32_t descriptorTypeCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorTypeCount = descriptorTypeCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListEXT & setPDescriptorTypes( DescriptorType const * pDescriptorTypes_ ) & VULKAN_HPP_NOEXCEPT + { + pDescriptorTypes = pDescriptorTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListEXT && setPDescriptorTypes( DescriptorType const * pDescriptorTypes_ ) && VULKAN_HPP_NOEXCEPT + { + pDescriptorTypes = pDescriptorTypes_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MutableDescriptorTypeListEXT & setDescriptorTypes( ArrayProxyNoTemporaries const & descriptorTypes_ ) VULKAN_HPP_NOEXCEPT + { + descriptorTypeCount = static_cast( descriptorTypes_.size() ); + pDescriptorTypes = descriptorTypes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMutableDescriptorTypeListEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMutableDescriptorTypeListEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMutableDescriptorTypeListEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMutableDescriptorTypeListEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( descriptorTypeCount, pDescriptorTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MutableDescriptorTypeListEXT const & ) const = default; +#else + bool operator==( MutableDescriptorTypeListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( descriptorTypeCount == rhs.descriptorTypeCount ) && ( pDescriptorTypes == rhs.pDescriptorTypes ); +# endif + } + + bool operator!=( MutableDescriptorTypeListEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t descriptorTypeCount = {}; + DescriptorType const * pDescriptorTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MutableDescriptorTypeListEXT; + }; +#endif + using MutableDescriptorTypeListVALVE = MutableDescriptorTypeListEXT; + + // wrapper struct for struct VkMutableDescriptorTypeCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkMutableDescriptorTypeCreateInfoEXT.html + struct MutableDescriptorTypeCreateInfoEXT + { + using NativeType = VkMutableDescriptorTypeCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMutableDescriptorTypeCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoEXT( uint32_t mutableDescriptorTypeListCount_ = {}, + MutableDescriptorTypeListEXT const * pMutableDescriptorTypeLists_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , mutableDescriptorTypeListCount{ mutableDescriptorTypeListCount_ } + , pMutableDescriptorTypeLists{ pMutableDescriptorTypeLists_ } + { + } + + VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoEXT( MutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + MutableDescriptorTypeCreateInfoEXT( VkMutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : MutableDescriptorTypeCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MutableDescriptorTypeCreateInfoEXT( ArrayProxyNoTemporaries const & mutableDescriptorTypeLists_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , mutableDescriptorTypeListCount( static_cast( mutableDescriptorTypeLists_.size() ) ) + , pMutableDescriptorTypeLists( mutableDescriptorTypeLists_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + MutableDescriptorTypeCreateInfoEXT & operator=( MutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + MutableDescriptorTypeCreateInfoEXT & operator=( VkMutableDescriptorTypeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT & setMutableDescriptorTypeListCount( uint32_t mutableDescriptorTypeListCount_ ) & + VULKAN_HPP_NOEXCEPT + { + mutableDescriptorTypeListCount = mutableDescriptorTypeListCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT && setMutableDescriptorTypeListCount( uint32_t mutableDescriptorTypeListCount_ ) && + VULKAN_HPP_NOEXCEPT + { + mutableDescriptorTypeListCount = mutableDescriptorTypeListCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT & + setPMutableDescriptorTypeLists( MutableDescriptorTypeListEXT const * pMutableDescriptorTypeLists_ ) & + VULKAN_HPP_NOEXCEPT + { + pMutableDescriptorTypeLists = pMutableDescriptorTypeLists_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoEXT && + setPMutableDescriptorTypeLists( MutableDescriptorTypeListEXT const * pMutableDescriptorTypeLists_ ) && + VULKAN_HPP_NOEXCEPT + { + pMutableDescriptorTypeLists = pMutableDescriptorTypeLists_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + MutableDescriptorTypeCreateInfoEXT & + setMutableDescriptorTypeLists( ArrayProxyNoTemporaries const & mutableDescriptorTypeLists_ ) VULKAN_HPP_NOEXCEPT + { + mutableDescriptorTypeListCount = static_cast( mutableDescriptorTypeLists_.size() ); + pMutableDescriptorTypeLists = mutableDescriptorTypeLists_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkMutableDescriptorTypeCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMutableDescriptorTypeCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkMutableDescriptorTypeCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkMutableDescriptorTypeCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mutableDescriptorTypeListCount, pMutableDescriptorTypeLists ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( MutableDescriptorTypeCreateInfoEXT const & ) const = default; +#else + bool operator==( MutableDescriptorTypeCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mutableDescriptorTypeListCount == rhs.mutableDescriptorTypeListCount ) && + ( pMutableDescriptorTypeLists == rhs.pMutableDescriptorTypeLists ); +# endif + } + + bool operator!=( MutableDescriptorTypeCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eMutableDescriptorTypeCreateInfoEXT; + void const * pNext = {}; + uint32_t mutableDescriptorTypeListCount = {}; + MutableDescriptorTypeListEXT const * pMutableDescriptorTypeLists = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = MutableDescriptorTypeCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = MutableDescriptorTypeCreateInfoEXT; + }; + + using MutableDescriptorTypeCreateInfoVALVE = MutableDescriptorTypeCreateInfoEXT; + +#if defined( VK_USE_PLATFORM_OHOS ) + // wrapper struct for struct VkNativeBufferFormatPropertiesOHOS, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkNativeBufferFormatPropertiesOHOS.html + struct NativeBufferFormatPropertiesOHOS + { + using NativeType = VkNativeBufferFormatPropertiesOHOS; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eNativeBufferFormatPropertiesOHOS; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR NativeBufferFormatPropertiesOHOS( Format format_ = Format::eUndefined, + uint64_t externalFormat_ = {}, + FormatFeatureFlags formatFeatures_ = {}, + ComponentMapping samplerYcbcrConversionComponents_ = {}, + SamplerYcbcrModelConversion suggestedYcbcrModel_ = SamplerYcbcrModelConversion::eRgbIdentity, + SamplerYcbcrRange suggestedYcbcrRange_ = SamplerYcbcrRange::eItuFull, + ChromaLocation suggestedXChromaOffset_ = ChromaLocation::eCositedEven, + ChromaLocation suggestedYChromaOffset_ = ChromaLocation::eCositedEven, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , format{ format_ } + , externalFormat{ externalFormat_ } + , formatFeatures{ formatFeatures_ } + , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ } + , suggestedYcbcrModel{ suggestedYcbcrModel_ } + , suggestedYcbcrRange{ suggestedYcbcrRange_ } + , suggestedXChromaOffset{ suggestedXChromaOffset_ } + , suggestedYChromaOffset{ suggestedYChromaOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR NativeBufferFormatPropertiesOHOS( NativeBufferFormatPropertiesOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + NativeBufferFormatPropertiesOHOS( VkNativeBufferFormatPropertiesOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + : NativeBufferFormatPropertiesOHOS( *reinterpret_cast( &rhs ) ) + { + } + + NativeBufferFormatPropertiesOHOS & operator=( NativeBufferFormatPropertiesOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + NativeBufferFormatPropertiesOHOS & operator=( VkNativeBufferFormatPropertiesOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkNativeBufferFormatPropertiesOHOS const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkNativeBufferFormatPropertiesOHOS &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkNativeBufferFormatPropertiesOHOS const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkNativeBufferFormatPropertiesOHOS *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + format, + externalFormat, + formatFeatures, + samplerYcbcrConversionComponents, + suggestedYcbcrModel, + suggestedYcbcrRange, + suggestedXChromaOffset, + suggestedYChromaOffset ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( NativeBufferFormatPropertiesOHOS const & ) const = default; +# else + bool operator==( NativeBufferFormatPropertiesOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( externalFormat == rhs.externalFormat ) && + ( formatFeatures == rhs.formatFeatures ) && ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) && + ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) && + ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && ( suggestedYChromaOffset == rhs.suggestedYChromaOffset ); +# endif + } + + bool operator!=( NativeBufferFormatPropertiesOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eNativeBufferFormatPropertiesOHOS; + void * pNext = {}; + Format format = Format::eUndefined; + uint64_t externalFormat = {}; + FormatFeatureFlags formatFeatures = {}; + ComponentMapping samplerYcbcrConversionComponents = {}; + SamplerYcbcrModelConversion suggestedYcbcrModel = SamplerYcbcrModelConversion::eRgbIdentity; + SamplerYcbcrRange suggestedYcbcrRange = SamplerYcbcrRange::eItuFull; + ChromaLocation suggestedXChromaOffset = ChromaLocation::eCositedEven; + ChromaLocation suggestedYChromaOffset = ChromaLocation::eCositedEven; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = NativeBufferFormatPropertiesOHOS; + }; +# endif + + template <> + struct CppType + { + using Type = NativeBufferFormatPropertiesOHOS; + }; +#endif /*VK_USE_PLATFORM_OHOS*/ + +#if defined( VK_USE_PLATFORM_OHOS ) + // wrapper struct for struct VkNativeBufferPropertiesOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkNativeBufferPropertiesOHOS.html + struct NativeBufferPropertiesOHOS + { + using NativeType = VkNativeBufferPropertiesOHOS; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eNativeBufferPropertiesOHOS; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + NativeBufferPropertiesOHOS( DeviceSize allocationSize_ = {}, uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , allocationSize{ allocationSize_ } + , memoryTypeBits{ memoryTypeBits_ } + { + } + + VULKAN_HPP_CONSTEXPR NativeBufferPropertiesOHOS( NativeBufferPropertiesOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + NativeBufferPropertiesOHOS( VkNativeBufferPropertiesOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + : NativeBufferPropertiesOHOS( *reinterpret_cast( &rhs ) ) + { + } + + NativeBufferPropertiesOHOS & operator=( NativeBufferPropertiesOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + NativeBufferPropertiesOHOS & operator=( VkNativeBufferPropertiesOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkNativeBufferPropertiesOHOS const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkNativeBufferPropertiesOHOS &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkNativeBufferPropertiesOHOS const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkNativeBufferPropertiesOHOS *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, allocationSize, memoryTypeBits ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( NativeBufferPropertiesOHOS const & ) const = default; +# else + bool operator==( NativeBufferPropertiesOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( NativeBufferPropertiesOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eNativeBufferPropertiesOHOS; + void * pNext = {}; + DeviceSize allocationSize = {}; + uint32_t memoryTypeBits = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = NativeBufferPropertiesOHOS; + }; +# endif + + template <> + struct CppType + { + using Type = NativeBufferPropertiesOHOS; + }; +#endif /*VK_USE_PLATFORM_OHOS*/ + +#if defined( VK_USE_PLATFORM_OHOS ) + // wrapper struct for struct VkNativeBufferUsageOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkNativeBufferUsageOHOS.html + struct NativeBufferUsageOHOS + { + using NativeType = VkNativeBufferUsageOHOS; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eNativeBufferUsageOHOS; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR NativeBufferUsageOHOS( uint64_t OHOSNativeBufferUsage_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , OHOSNativeBufferUsage{ OHOSNativeBufferUsage_ } + { + } + + VULKAN_HPP_CONSTEXPR NativeBufferUsageOHOS( NativeBufferUsageOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + NativeBufferUsageOHOS( VkNativeBufferUsageOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + : NativeBufferUsageOHOS( *reinterpret_cast( &rhs ) ) + { + } + + NativeBufferUsageOHOS & operator=( NativeBufferUsageOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + NativeBufferUsageOHOS & operator=( VkNativeBufferUsageOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkNativeBufferUsageOHOS const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkNativeBufferUsageOHOS &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkNativeBufferUsageOHOS const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkNativeBufferUsageOHOS *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, OHOSNativeBufferUsage ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( NativeBufferUsageOHOS const & ) const = default; +# else + bool operator==( NativeBufferUsageOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( OHOSNativeBufferUsage == rhs.OHOSNativeBufferUsage ); +# endif + } + + bool operator!=( NativeBufferUsageOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eNativeBufferUsageOHOS; + void * pNext = {}; + uint64_t OHOSNativeBufferUsage = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = NativeBufferUsageOHOS; + }; +# endif + + template <> + struct CppType + { + using Type = NativeBufferUsageOHOS; + }; +#endif /*VK_USE_PLATFORM_OHOS*/ + + // wrapper struct for struct VkOpaqueCaptureDataCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpaqueCaptureDataCreateInfoEXT.html + struct OpaqueCaptureDataCreateInfoEXT + { + using NativeType = VkOpaqueCaptureDataCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eOpaqueCaptureDataCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR OpaqueCaptureDataCreateInfoEXT( HostAddressRangeConstEXT const * pData_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pData{ pData_ } + { + } + + VULKAN_HPP_CONSTEXPR OpaqueCaptureDataCreateInfoEXT( OpaqueCaptureDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + OpaqueCaptureDataCreateInfoEXT( VkOpaqueCaptureDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : OpaqueCaptureDataCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + OpaqueCaptureDataCreateInfoEXT & operator=( OpaqueCaptureDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + OpaqueCaptureDataCreateInfoEXT & operator=( VkOpaqueCaptureDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDataCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDataCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDataCreateInfoEXT & setPData( HostAddressRangeConstEXT const * pData_ ) & VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDataCreateInfoEXT && setPData( HostAddressRangeConstEXT const * pData_ ) && VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkOpaqueCaptureDataCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpaqueCaptureDataCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpaqueCaptureDataCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkOpaqueCaptureDataCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( OpaqueCaptureDataCreateInfoEXT const & ) const = default; +#else + bool operator==( OpaqueCaptureDataCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( OpaqueCaptureDataCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eOpaqueCaptureDataCreateInfoEXT; + void const * pNext = {}; + HostAddressRangeConstEXT const * pData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = OpaqueCaptureDataCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = OpaqueCaptureDataCreateInfoEXT; + }; + + // wrapper struct for struct VkOpaqueCaptureDescriptorDataCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpaqueCaptureDescriptorDataCreateInfoEXT.html + struct OpaqueCaptureDescriptorDataCreateInfoEXT + { + using NativeType = VkOpaqueCaptureDescriptorDataCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eOpaqueCaptureDescriptorDataCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR OpaqueCaptureDescriptorDataCreateInfoEXT( void const * opaqueCaptureDescriptorData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , opaqueCaptureDescriptorData{ opaqueCaptureDescriptorData_ } + { + } + + VULKAN_HPP_CONSTEXPR OpaqueCaptureDescriptorDataCreateInfoEXT( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + OpaqueCaptureDescriptorDataCreateInfoEXT( VkOpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : OpaqueCaptureDescriptorDataCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + OpaqueCaptureDescriptorDataCreateInfoEXT & operator=( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + OpaqueCaptureDescriptorDataCreateInfoEXT & operator=( VkOpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDescriptorDataCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDescriptorDataCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDescriptorDataCreateInfoEXT & setOpaqueCaptureDescriptorData( void const * opaqueCaptureDescriptorData_ ) & + VULKAN_HPP_NOEXCEPT + { + opaqueCaptureDescriptorData = opaqueCaptureDescriptorData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpaqueCaptureDescriptorDataCreateInfoEXT && setOpaqueCaptureDescriptorData( void const * opaqueCaptureDescriptorData_ ) && + VULKAN_HPP_NOEXCEPT + { + opaqueCaptureDescriptorData = opaqueCaptureDescriptorData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkOpaqueCaptureDescriptorDataCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpaqueCaptureDescriptorDataCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpaqueCaptureDescriptorDataCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkOpaqueCaptureDescriptorDataCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, opaqueCaptureDescriptorData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( OpaqueCaptureDescriptorDataCreateInfoEXT const & ) const = default; +#else + bool operator==( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opaqueCaptureDescriptorData == rhs.opaqueCaptureDescriptorData ); +# endif + } + + bool operator!=( OpaqueCaptureDescriptorDataCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eOpaqueCaptureDescriptorDataCreateInfoEXT; + void const * pNext = {}; + void const * opaqueCaptureDescriptorData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = OpaqueCaptureDescriptorDataCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = OpaqueCaptureDescriptorDataCreateInfoEXT; + }; + + // wrapper struct for struct VkOpticalFlowExecuteInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowExecuteInfoNV.html + struct OpticalFlowExecuteInfoNV + { + using NativeType = VkOpticalFlowExecuteInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eOpticalFlowExecuteInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR OpticalFlowExecuteInfoNV( OpticalFlowExecuteFlagsNV flags_ = {}, + uint32_t regionCount_ = {}, + Rect2D const * pRegions_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR OpticalFlowExecuteInfoNV( OpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + OpticalFlowExecuteInfoNV( VkOpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : OpticalFlowExecuteInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + OpticalFlowExecuteInfoNV( OpticalFlowExecuteFlagsNV flags_, ArrayProxyNoTemporaries const & regions_, void * pNext_ = nullptr ) + : pNext( pNext_ ), flags( flags_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + OpticalFlowExecuteInfoNV & operator=( OpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + OpticalFlowExecuteInfoNV & operator=( VkOpticalFlowExecuteInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setFlags( OpticalFlowExecuteFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV && setFlags( OpticalFlowExecuteFlagsNV flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV & setPRegions( Rect2D const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowExecuteInfoNV && setPRegions( Rect2D const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + OpticalFlowExecuteInfoNV & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkOpticalFlowExecuteInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpticalFlowExecuteInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpticalFlowExecuteInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkOpticalFlowExecuteInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( OpticalFlowExecuteInfoNV const & ) const = default; +#else + bool operator==( OpticalFlowExecuteInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( OpticalFlowExecuteInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eOpticalFlowExecuteInfoNV; + void * pNext = {}; + OpticalFlowExecuteFlagsNV flags = {}; + uint32_t regionCount = {}; + Rect2D const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = OpticalFlowExecuteInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = OpticalFlowExecuteInfoNV; + }; + + // wrapper struct for struct VkOpticalFlowImageFormatInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatInfoNV.html + struct OpticalFlowImageFormatInfoNV + { + using NativeType = VkOpticalFlowImageFormatInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eOpticalFlowImageFormatInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatInfoNV( OpticalFlowUsageFlagsNV usage_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , usage{ usage_ } + { + } + + VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatInfoNV( OpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + OpticalFlowImageFormatInfoNV( VkOpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : OpticalFlowImageFormatInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + OpticalFlowImageFormatInfoNV & operator=( OpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + OpticalFlowImageFormatInfoNV & operator=( VkOpticalFlowImageFormatInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 OpticalFlowImageFormatInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowImageFormatInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowImageFormatInfoNV & setUsage( OpticalFlowUsageFlagsNV usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowImageFormatInfoNV && setUsage( OpticalFlowUsageFlagsNV usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkOpticalFlowImageFormatInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpticalFlowImageFormatInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpticalFlowImageFormatInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkOpticalFlowImageFormatInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, usage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( OpticalFlowImageFormatInfoNV const & ) const = default; +#else + bool operator==( OpticalFlowImageFormatInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( usage == rhs.usage ); +# endif + } + + bool operator!=( OpticalFlowImageFormatInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eOpticalFlowImageFormatInfoNV; + void const * pNext = {}; + OpticalFlowUsageFlagsNV usage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = OpticalFlowImageFormatInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = OpticalFlowImageFormatInfoNV; + }; + + // wrapper struct for struct VkOpticalFlowImageFormatPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowImageFormatPropertiesNV.html + struct OpticalFlowImageFormatPropertiesNV + { + using NativeType = VkOpticalFlowImageFormatPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eOpticalFlowImageFormatPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatPropertiesNV( Format format_ = Format::eUndefined, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , format{ format_ } + { + } + + VULKAN_HPP_CONSTEXPR OpticalFlowImageFormatPropertiesNV( OpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + OpticalFlowImageFormatPropertiesNV( VkOpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : OpticalFlowImageFormatPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + OpticalFlowImageFormatPropertiesNV & operator=( OpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + OpticalFlowImageFormatPropertiesNV & operator=( VkOpticalFlowImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkOpticalFlowImageFormatPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpticalFlowImageFormatPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpticalFlowImageFormatPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkOpticalFlowImageFormatPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, format ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( OpticalFlowImageFormatPropertiesNV const & ) const = default; +#else + bool operator==( OpticalFlowImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ); +# endif + } + + bool operator!=( OpticalFlowImageFormatPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eOpticalFlowImageFormatPropertiesNV; + void * pNext = {}; + Format format = Format::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = OpticalFlowImageFormatPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = OpticalFlowImageFormatPropertiesNV; + }; + + // wrapper struct for struct VkOpticalFlowSessionCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreateInfoNV.html + struct OpticalFlowSessionCreateInfoNV + { + using NativeType = VkOpticalFlowSessionCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eOpticalFlowSessionCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreateInfoNV( uint32_t width_ = {}, + uint32_t height_ = {}, + Format imageFormat_ = Format::eUndefined, + Format flowVectorFormat_ = Format::eUndefined, + Format costFormat_ = Format::eUndefined, + OpticalFlowGridSizeFlagsNV outputGridSize_ = {}, + OpticalFlowGridSizeFlagsNV hintGridSize_ = {}, + OpticalFlowPerformanceLevelNV performanceLevel_ = OpticalFlowPerformanceLevelNV::eUnknown, + OpticalFlowSessionCreateFlagsNV flags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , width{ width_ } + , height{ height_ } + , imageFormat{ imageFormat_ } + , flowVectorFormat{ flowVectorFormat_ } + , costFormat{ costFormat_ } + , outputGridSize{ outputGridSize_ } + , hintGridSize{ hintGridSize_ } + , performanceLevel{ performanceLevel_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreateInfoNV( OpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + OpticalFlowSessionCreateInfoNV( VkOpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : OpticalFlowSessionCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + OpticalFlowSessionCreateInfoNV & operator=( OpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + OpticalFlowSessionCreateInfoNV & operator=( VkOpticalFlowSessionCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setWidth( uint32_t width_ ) & VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV && setWidth( uint32_t width_ ) && VULKAN_HPP_NOEXCEPT + { + width = width_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setHeight( uint32_t height_ ) & VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV && setHeight( uint32_t height_ ) && VULKAN_HPP_NOEXCEPT + { + height = height_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setImageFormat( Format imageFormat_ ) & VULKAN_HPP_NOEXCEPT + { + imageFormat = imageFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV && setImageFormat( Format imageFormat_ ) && VULKAN_HPP_NOEXCEPT + { + imageFormat = imageFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setFlowVectorFormat( Format flowVectorFormat_ ) & VULKAN_HPP_NOEXCEPT + { + flowVectorFormat = flowVectorFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV && setFlowVectorFormat( Format flowVectorFormat_ ) && VULKAN_HPP_NOEXCEPT + { + flowVectorFormat = flowVectorFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setCostFormat( Format costFormat_ ) & VULKAN_HPP_NOEXCEPT + { + costFormat = costFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV && setCostFormat( Format costFormat_ ) && VULKAN_HPP_NOEXCEPT + { + costFormat = costFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setOutputGridSize( OpticalFlowGridSizeFlagsNV outputGridSize_ ) & VULKAN_HPP_NOEXCEPT + { + outputGridSize = outputGridSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV && setOutputGridSize( OpticalFlowGridSizeFlagsNV outputGridSize_ ) && VULKAN_HPP_NOEXCEPT + { + outputGridSize = outputGridSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setHintGridSize( OpticalFlowGridSizeFlagsNV hintGridSize_ ) & VULKAN_HPP_NOEXCEPT + { + hintGridSize = hintGridSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV && setHintGridSize( OpticalFlowGridSizeFlagsNV hintGridSize_ ) && VULKAN_HPP_NOEXCEPT + { + hintGridSize = hintGridSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setPerformanceLevel( OpticalFlowPerformanceLevelNV performanceLevel_ ) & VULKAN_HPP_NOEXCEPT + { + performanceLevel = performanceLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV && setPerformanceLevel( OpticalFlowPerformanceLevelNV performanceLevel_ ) && VULKAN_HPP_NOEXCEPT + { + performanceLevel = performanceLevel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV & setFlags( OpticalFlowSessionCreateFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreateInfoNV && setFlags( OpticalFlowSessionCreateFlagsNV flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkOpticalFlowSessionCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpticalFlowSessionCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpticalFlowSessionCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkOpticalFlowSessionCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, width, height, imageFormat, flowVectorFormat, costFormat, outputGridSize, hintGridSize, performanceLevel, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( OpticalFlowSessionCreateInfoNV const & ) const = default; +#else + bool operator==( OpticalFlowSessionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( width == rhs.width ) && ( height == rhs.height ) && ( imageFormat == rhs.imageFormat ) && + ( flowVectorFormat == rhs.flowVectorFormat ) && ( costFormat == rhs.costFormat ) && ( outputGridSize == rhs.outputGridSize ) && + ( hintGridSize == rhs.hintGridSize ) && ( performanceLevel == rhs.performanceLevel ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( OpticalFlowSessionCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eOpticalFlowSessionCreateInfoNV; + void * pNext = {}; + uint32_t width = {}; + uint32_t height = {}; + Format imageFormat = Format::eUndefined; + Format flowVectorFormat = Format::eUndefined; + Format costFormat = Format::eUndefined; + OpticalFlowGridSizeFlagsNV outputGridSize = {}; + OpticalFlowGridSizeFlagsNV hintGridSize = {}; + OpticalFlowPerformanceLevelNV performanceLevel = OpticalFlowPerformanceLevelNV::eUnknown; + OpticalFlowSessionCreateFlagsNV flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = OpticalFlowSessionCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = OpticalFlowSessionCreateInfoNV; + }; + + // wrapper struct for struct VkOpticalFlowSessionCreatePrivateDataInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkOpticalFlowSessionCreatePrivateDataInfoNV.html + struct OpticalFlowSessionCreatePrivateDataInfoNV + { + using NativeType = VkOpticalFlowSessionCreatePrivateDataInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eOpticalFlowSessionCreatePrivateDataInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreatePrivateDataInfoNV( uint32_t id_ = {}, + uint32_t size_ = {}, + void const * pPrivateData_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , id{ id_ } + , size{ size_ } + , pPrivateData{ pPrivateData_ } + { + } + + VULKAN_HPP_CONSTEXPR OpticalFlowSessionCreatePrivateDataInfoNV( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + OpticalFlowSessionCreatePrivateDataInfoNV( VkOpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : OpticalFlowSessionCreatePrivateDataInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + OpticalFlowSessionCreatePrivateDataInfoNV & operator=( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + OpticalFlowSessionCreatePrivateDataInfoNV & operator=( VkOpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setId( uint32_t id_ ) & VULKAN_HPP_NOEXCEPT + { + id = id_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV && setId( uint32_t id_ ) && VULKAN_HPP_NOEXCEPT + { + id = id_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setSize( uint32_t size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV && setSize( uint32_t size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV & setPPrivateData( void const * pPrivateData_ ) & VULKAN_HPP_NOEXCEPT + { + pPrivateData = pPrivateData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OpticalFlowSessionCreatePrivateDataInfoNV && setPPrivateData( void const * pPrivateData_ ) && VULKAN_HPP_NOEXCEPT + { + pPrivateData = pPrivateData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkOpticalFlowSessionCreatePrivateDataInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpticalFlowSessionCreatePrivateDataInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOpticalFlowSessionCreatePrivateDataInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkOpticalFlowSessionCreatePrivateDataInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, id, size, pPrivateData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( OpticalFlowSessionCreatePrivateDataInfoNV const & ) const = default; +#else + bool operator==( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( id == rhs.id ) && ( size == rhs.size ) && ( pPrivateData == rhs.pPrivateData ); +# endif + } + + bool operator!=( OpticalFlowSessionCreatePrivateDataInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eOpticalFlowSessionCreatePrivateDataInfoNV; + void * pNext = {}; + uint32_t id = {}; + uint32_t size = {}; + void const * pPrivateData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = OpticalFlowSessionCreatePrivateDataInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = OpticalFlowSessionCreatePrivateDataInfoNV; + }; + + // wrapper struct for struct VkOutOfBandQueueTypeInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkOutOfBandQueueTypeInfoNV.html + struct OutOfBandQueueTypeInfoNV + { + using NativeType = VkOutOfBandQueueTypeInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eOutOfBandQueueTypeInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR OutOfBandQueueTypeInfoNV( OutOfBandQueueTypeNV queueType_ = OutOfBandQueueTypeNV::eRender, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , queueType{ queueType_ } + { + } + + VULKAN_HPP_CONSTEXPR OutOfBandQueueTypeInfoNV( OutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + OutOfBandQueueTypeInfoNV( VkOutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : OutOfBandQueueTypeInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + OutOfBandQueueTypeInfoNV & operator=( OutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + OutOfBandQueueTypeInfoNV & operator=( VkOutOfBandQueueTypeInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 OutOfBandQueueTypeInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OutOfBandQueueTypeInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 OutOfBandQueueTypeInfoNV & setQueueType( OutOfBandQueueTypeNV queueType_ ) & VULKAN_HPP_NOEXCEPT + { + queueType = queueType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 OutOfBandQueueTypeInfoNV && setQueueType( OutOfBandQueueTypeNV queueType_ ) && VULKAN_HPP_NOEXCEPT + { + queueType = queueType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkOutOfBandQueueTypeInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOutOfBandQueueTypeInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkOutOfBandQueueTypeInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkOutOfBandQueueTypeInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, queueType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( OutOfBandQueueTypeInfoNV const & ) const = default; +#else + bool operator==( OutOfBandQueueTypeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueType == rhs.queueType ); +# endif + } + + bool operator!=( OutOfBandQueueTypeInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eOutOfBandQueueTypeInfoNV; + void const * pNext = {}; + OutOfBandQueueTypeNV queueType = OutOfBandQueueTypeNV::eRender; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = OutOfBandQueueTypeInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = OutOfBandQueueTypeInfoNV; + }; + + // wrapper struct for struct VkPartitionedAccelerationStructureFlagsNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureFlagsNV.html + struct PartitionedAccelerationStructureFlagsNV + { + using NativeType = VkPartitionedAccelerationStructureFlagsNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePartitionedAccelerationStructureFlagsNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PartitionedAccelerationStructureFlagsNV( Bool32 enablePartitionTranslation_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , enablePartitionTranslation{ enablePartitionTranslation_ } + { + } + + VULKAN_HPP_CONSTEXPR PartitionedAccelerationStructureFlagsNV( PartitionedAccelerationStructureFlagsNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PartitionedAccelerationStructureFlagsNV( VkPartitionedAccelerationStructureFlagsNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PartitionedAccelerationStructureFlagsNV( *reinterpret_cast( &rhs ) ) + { + } + + PartitionedAccelerationStructureFlagsNV & operator=( PartitionedAccelerationStructureFlagsNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PartitionedAccelerationStructureFlagsNV & operator=( VkPartitionedAccelerationStructureFlagsNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureFlagsNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureFlagsNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureFlagsNV & setEnablePartitionTranslation( Bool32 enablePartitionTranslation_ ) & VULKAN_HPP_NOEXCEPT + { + enablePartitionTranslation = enablePartitionTranslation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureFlagsNV && setEnablePartitionTranslation( Bool32 enablePartitionTranslation_ ) && + VULKAN_HPP_NOEXCEPT + { + enablePartitionTranslation = enablePartitionTranslation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPartitionedAccelerationStructureFlagsNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureFlagsNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureFlagsNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureFlagsNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, enablePartitionTranslation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PartitionedAccelerationStructureFlagsNV const & ) const = default; +#else + bool operator==( PartitionedAccelerationStructureFlagsNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( enablePartitionTranslation == rhs.enablePartitionTranslation ); +# endif + } + + bool operator!=( PartitionedAccelerationStructureFlagsNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePartitionedAccelerationStructureFlagsNV; + void * pNext = {}; + Bool32 enablePartitionTranslation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PartitionedAccelerationStructureFlagsNV; + }; +#endif + + template <> + struct CppType + { + using Type = PartitionedAccelerationStructureFlagsNV; + }; + + // wrapper struct for struct VkPartitionedAccelerationStructureUpdateInstanceDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureUpdateInstanceDataNV.html + struct PartitionedAccelerationStructureUpdateInstanceDataNV + { + using NativeType = VkPartitionedAccelerationStructureUpdateInstanceDataNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PartitionedAccelerationStructureUpdateInstanceDataNV( uint32_t instanceIndex_ = {}, + uint32_t instanceContributionToHitGroupIndex_ = {}, + DeviceAddress accelerationStructure_ = {} ) VULKAN_HPP_NOEXCEPT + : instanceIndex{ instanceIndex_ } + , instanceContributionToHitGroupIndex{ instanceContributionToHitGroupIndex_ } + , accelerationStructure{ accelerationStructure_ } + { + } + + VULKAN_HPP_CONSTEXPR + PartitionedAccelerationStructureUpdateInstanceDataNV( PartitionedAccelerationStructureUpdateInstanceDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PartitionedAccelerationStructureUpdateInstanceDataNV( VkPartitionedAccelerationStructureUpdateInstanceDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PartitionedAccelerationStructureUpdateInstanceDataNV( *reinterpret_cast( &rhs ) ) + { + } + + PartitionedAccelerationStructureUpdateInstanceDataNV & + operator=( PartitionedAccelerationStructureUpdateInstanceDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PartitionedAccelerationStructureUpdateInstanceDataNV & operator=( VkPartitionedAccelerationStructureUpdateInstanceDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureUpdateInstanceDataNV & setInstanceIndex( uint32_t instanceIndex_ ) & VULKAN_HPP_NOEXCEPT + { + instanceIndex = instanceIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureUpdateInstanceDataNV && setInstanceIndex( uint32_t instanceIndex_ ) && VULKAN_HPP_NOEXCEPT + { + instanceIndex = instanceIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureUpdateInstanceDataNV & + setInstanceContributionToHitGroupIndex( uint32_t instanceContributionToHitGroupIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + instanceContributionToHitGroupIndex = instanceContributionToHitGroupIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureUpdateInstanceDataNV && + setInstanceContributionToHitGroupIndex( uint32_t instanceContributionToHitGroupIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + instanceContributionToHitGroupIndex = instanceContributionToHitGroupIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureUpdateInstanceDataNV & setAccelerationStructure( DeviceAddress accelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureUpdateInstanceDataNV && setAccelerationStructure( DeviceAddress accelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPartitionedAccelerationStructureUpdateInstanceDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureUpdateInstanceDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureUpdateInstanceDataNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureUpdateInstanceDataNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( instanceIndex, instanceContributionToHitGroupIndex, accelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PartitionedAccelerationStructureUpdateInstanceDataNV const & ) const = default; +#else + bool operator==( PartitionedAccelerationStructureUpdateInstanceDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( instanceIndex == rhs.instanceIndex ) && ( instanceContributionToHitGroupIndex == rhs.instanceContributionToHitGroupIndex ) && + ( accelerationStructure == rhs.accelerationStructure ); +# endif + } + + bool operator!=( PartitionedAccelerationStructureUpdateInstanceDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t instanceIndex = {}; + uint32_t instanceContributionToHitGroupIndex = {}; + DeviceAddress accelerationStructure = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PartitionedAccelerationStructureUpdateInstanceDataNV; + }; +#endif + + // wrapper struct for struct VkPartitionedAccelerationStructureWriteInstanceDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWriteInstanceDataNV.html + struct PartitionedAccelerationStructureWriteInstanceDataNV + { + using NativeType = VkPartitionedAccelerationStructureWriteInstanceDataNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV( TransformMatrixKHR transform_ = {}, + std::array const & explicitAABB_ = {}, + uint32_t instanceID_ = {}, + uint32_t instanceMask_ = {}, + uint32_t instanceContributionToHitGroupIndex_ = {}, + PartitionedAccelerationStructureInstanceFlagsNV instanceFlags_ = {}, + uint32_t instanceIndex_ = {}, + uint32_t partitionIndex_ = {}, + DeviceAddress accelerationStructure_ = {} ) VULKAN_HPP_NOEXCEPT + : transform{ transform_ } + , explicitAABB{ explicitAABB_ } + , instanceID{ instanceID_ } + , instanceMask{ instanceMask_ } + , instanceContributionToHitGroupIndex{ instanceContributionToHitGroupIndex_ } + , instanceFlags{ instanceFlags_ } + , instanceIndex{ instanceIndex_ } + , partitionIndex{ partitionIndex_ } + , accelerationStructure{ accelerationStructure_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + PartitionedAccelerationStructureWriteInstanceDataNV( PartitionedAccelerationStructureWriteInstanceDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PartitionedAccelerationStructureWriteInstanceDataNV( VkPartitionedAccelerationStructureWriteInstanceDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PartitionedAccelerationStructureWriteInstanceDataNV( *reinterpret_cast( &rhs ) ) + { + } + + PartitionedAccelerationStructureWriteInstanceDataNV & + operator=( PartitionedAccelerationStructureWriteInstanceDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PartitionedAccelerationStructureWriteInstanceDataNV & operator=( VkPartitionedAccelerationStructureWriteInstanceDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV & setTransform( TransformMatrixKHR const & transform_ ) & VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV && setTransform( TransformMatrixKHR const & transform_ ) && VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV & setExplicitAABB( std::array explicitAABB_ ) & VULKAN_HPP_NOEXCEPT + { + explicitAABB = explicitAABB_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV && setExplicitAABB( std::array explicitAABB_ ) && VULKAN_HPP_NOEXCEPT + { + explicitAABB = explicitAABB_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV & setInstanceID( uint32_t instanceID_ ) & VULKAN_HPP_NOEXCEPT + { + instanceID = instanceID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV && setInstanceID( uint32_t instanceID_ ) && VULKAN_HPP_NOEXCEPT + { + instanceID = instanceID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV & setInstanceMask( uint32_t instanceMask_ ) & VULKAN_HPP_NOEXCEPT + { + instanceMask = instanceMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV && setInstanceMask( uint32_t instanceMask_ ) && VULKAN_HPP_NOEXCEPT + { + instanceMask = instanceMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV & + setInstanceContributionToHitGroupIndex( uint32_t instanceContributionToHitGroupIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + instanceContributionToHitGroupIndex = instanceContributionToHitGroupIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV && + setInstanceContributionToHitGroupIndex( uint32_t instanceContributionToHitGroupIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + instanceContributionToHitGroupIndex = instanceContributionToHitGroupIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV & + setInstanceFlags( PartitionedAccelerationStructureInstanceFlagsNV instanceFlags_ ) & + VULKAN_HPP_NOEXCEPT + { + instanceFlags = instanceFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV && + setInstanceFlags( PartitionedAccelerationStructureInstanceFlagsNV instanceFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + instanceFlags = instanceFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV & setInstanceIndex( uint32_t instanceIndex_ ) & VULKAN_HPP_NOEXCEPT + { + instanceIndex = instanceIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV && setInstanceIndex( uint32_t instanceIndex_ ) && VULKAN_HPP_NOEXCEPT + { + instanceIndex = instanceIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV & setPartitionIndex( uint32_t partitionIndex_ ) & VULKAN_HPP_NOEXCEPT + { + partitionIndex = partitionIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV && setPartitionIndex( uint32_t partitionIndex_ ) && VULKAN_HPP_NOEXCEPT + { + partitionIndex = partitionIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV & setAccelerationStructure( DeviceAddress accelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWriteInstanceDataNV && setAccelerationStructure( DeviceAddress accelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPartitionedAccelerationStructureWriteInstanceDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureWriteInstanceDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureWriteInstanceDataNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureWriteInstanceDataNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + PartitionedAccelerationStructureInstanceFlagsNV const &, + uint32_t const &, + uint32_t const &, + DeviceAddress const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( transform, + explicitAABB, + instanceID, + instanceMask, + instanceContributionToHitGroupIndex, + instanceFlags, + instanceIndex, + partitionIndex, + accelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PartitionedAccelerationStructureWriteInstanceDataNV const & ) const = default; +#else + bool operator==( PartitionedAccelerationStructureWriteInstanceDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( transform == rhs.transform ) && ( explicitAABB == rhs.explicitAABB ) && ( instanceID == rhs.instanceID ) && + ( instanceMask == rhs.instanceMask ) && ( instanceContributionToHitGroupIndex == rhs.instanceContributionToHitGroupIndex ) && + ( instanceFlags == rhs.instanceFlags ) && ( instanceIndex == rhs.instanceIndex ) && ( partitionIndex == rhs.partitionIndex ) && + ( accelerationStructure == rhs.accelerationStructure ); +# endif + } + + bool operator!=( PartitionedAccelerationStructureWriteInstanceDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + TransformMatrixKHR transform = {}; + ArrayWrapper1D explicitAABB = {}; + uint32_t instanceID = {}; + uint32_t instanceMask = {}; + uint32_t instanceContributionToHitGroupIndex = {}; + PartitionedAccelerationStructureInstanceFlagsNV instanceFlags = {}; + uint32_t instanceIndex = {}; + uint32_t partitionIndex = {}; + DeviceAddress accelerationStructure = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PartitionedAccelerationStructureWriteInstanceDataNV; + }; +#endif + + // wrapper struct for struct VkPartitionedAccelerationStructureWritePartitionTranslationDataNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPartitionedAccelerationStructureWritePartitionTranslationDataNV.html + struct PartitionedAccelerationStructureWritePartitionTranslationDataNV + { + using NativeType = VkPartitionedAccelerationStructureWritePartitionTranslationDataNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + PartitionedAccelerationStructureWritePartitionTranslationDataNV( uint32_t partitionIndex_ = {}, + std::array const & partitionTranslation_ = {} ) VULKAN_HPP_NOEXCEPT + : partitionIndex{ partitionIndex_ } + , partitionTranslation{ partitionTranslation_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWritePartitionTranslationDataNV( + PartitionedAccelerationStructureWritePartitionTranslationDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PartitionedAccelerationStructureWritePartitionTranslationDataNV( VkPartitionedAccelerationStructureWritePartitionTranslationDataNV const & rhs ) + VULKAN_HPP_NOEXCEPT + : PartitionedAccelerationStructureWritePartitionTranslationDataNV( + *reinterpret_cast( &rhs ) ) + { + } + + PartitionedAccelerationStructureWritePartitionTranslationDataNV & + operator=( PartitionedAccelerationStructureWritePartitionTranslationDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PartitionedAccelerationStructureWritePartitionTranslationDataNV & + operator=( VkPartitionedAccelerationStructureWritePartitionTranslationDataNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWritePartitionTranslationDataNV & setPartitionIndex( uint32_t partitionIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + partitionIndex = partitionIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWritePartitionTranslationDataNV && setPartitionIndex( uint32_t partitionIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + partitionIndex = partitionIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWritePartitionTranslationDataNV & + setPartitionTranslation( std::array partitionTranslation_ ) & + VULKAN_HPP_NOEXCEPT + { + partitionTranslation = partitionTranslation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PartitionedAccelerationStructureWritePartitionTranslationDataNV && + setPartitionTranslation( std::array partitionTranslation_ ) && + VULKAN_HPP_NOEXCEPT + { + partitionTranslation = partitionTranslation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPartitionedAccelerationStructureWritePartitionTranslationDataNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureWritePartitionTranslationDataNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureWritePartitionTranslationDataNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPartitionedAccelerationStructureWritePartitionTranslationDataNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( partitionIndex, partitionTranslation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PartitionedAccelerationStructureWritePartitionTranslationDataNV const & ) const = default; +#else + bool operator==( PartitionedAccelerationStructureWritePartitionTranslationDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( partitionIndex == rhs.partitionIndex ) && ( partitionTranslation == rhs.partitionTranslation ); +# endif + } + + bool operator!=( PartitionedAccelerationStructureWritePartitionTranslationDataNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t partitionIndex = {}; + ArrayWrapper1D partitionTranslation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PartitionedAccelerationStructureWritePartitionTranslationDataNV; + }; +#endif + + // wrapper struct for struct VkPresentStageTimeEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentStageTimeEXT.html + struct PresentStageTimeEXT + { + using NativeType = VkPresentStageTimeEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentStageTimeEXT( PresentStageFlagsEXT stage_ = {}, uint64_t time_ = {} ) VULKAN_HPP_NOEXCEPT + : stage{ stage_ } + , time{ time_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentStageTimeEXT( PresentStageTimeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentStageTimeEXT( VkPresentStageTimeEXT const & rhs ) VULKAN_HPP_NOEXCEPT : PresentStageTimeEXT( *reinterpret_cast( &rhs ) ) + { + } + + PresentStageTimeEXT & operator=( PresentStageTimeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentStageTimeEXT & operator=( VkPresentStageTimeEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPresentStageTimeEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentStageTimeEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentStageTimeEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentStageTimeEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( stage, time ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentStageTimeEXT const & ) const = default; +#else + bool operator==( PresentStageTimeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( stage == rhs.stage ) && ( time == rhs.time ); +# endif + } + + bool operator!=( PresentStageTimeEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + PresentStageFlagsEXT stage = {}; + uint64_t time = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentStageTimeEXT; + }; +#endif + + // wrapper struct for struct VkPastPresentationTimingEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPastPresentationTimingEXT.html + struct PastPresentationTimingEXT + { + using NativeType = VkPastPresentationTimingEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePastPresentationTimingEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PastPresentationTimingEXT( uint64_t presentId_ = {}, + uint64_t targetTime_ = {}, + uint32_t presentStageCount_ = {}, + PresentStageTimeEXT * pPresentStages_ = {}, + TimeDomainKHR timeDomain_ = TimeDomainKHR::eDevice, + uint64_t timeDomainId_ = {}, + Bool32 reportComplete_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentId{ presentId_ } + , targetTime{ targetTime_ } + , presentStageCount{ presentStageCount_ } + , pPresentStages{ pPresentStages_ } + , timeDomain{ timeDomain_ } + , timeDomainId{ timeDomainId_ } + , reportComplete{ reportComplete_ } + { + } + + VULKAN_HPP_CONSTEXPR PastPresentationTimingEXT( PastPresentationTimingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PastPresentationTimingEXT( VkPastPresentationTimingEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PastPresentationTimingEXT( *reinterpret_cast( &rhs ) ) + { + } + + PastPresentationTimingEXT & operator=( PastPresentationTimingEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PastPresentationTimingEXT & operator=( VkPastPresentationTimingEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPastPresentationTimingEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPastPresentationTimingEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPastPresentationTimingEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPastPresentationTimingEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentId, targetTime, presentStageCount, pPresentStages, timeDomain, timeDomainId, reportComplete ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PastPresentationTimingEXT const & ) const = default; +#else + bool operator==( PastPresentationTimingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentId == rhs.presentId ) && ( targetTime == rhs.targetTime ) && + ( presentStageCount == rhs.presentStageCount ) && ( pPresentStages == rhs.pPresentStages ) && ( timeDomain == rhs.timeDomain ) && + ( timeDomainId == rhs.timeDomainId ) && ( reportComplete == rhs.reportComplete ); +# endif + } + + bool operator!=( PastPresentationTimingEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePastPresentationTimingEXT; + void * pNext = {}; + uint64_t presentId = {}; + uint64_t targetTime = {}; + uint32_t presentStageCount = {}; + PresentStageTimeEXT * pPresentStages = {}; + TimeDomainKHR timeDomain = TimeDomainKHR::eDevice; + uint64_t timeDomainId = {}; + Bool32 reportComplete = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PastPresentationTimingEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PastPresentationTimingEXT; + }; + + // wrapper struct for struct VkPastPresentationTimingGOOGLE, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPastPresentationTimingGOOGLE.html + struct PastPresentationTimingGOOGLE + { + using NativeType = VkPastPresentationTimingGOOGLE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PastPresentationTimingGOOGLE( uint32_t presentID_ = {}, + uint64_t desiredPresentTime_ = {}, + uint64_t actualPresentTime_ = {}, + uint64_t earliestPresentTime_ = {}, + uint64_t presentMargin_ = {} ) VULKAN_HPP_NOEXCEPT + : presentID{ presentID_ } + , desiredPresentTime{ desiredPresentTime_ } + , actualPresentTime{ actualPresentTime_ } + , earliestPresentTime{ earliestPresentTime_ } + , presentMargin{ presentMargin_ } + { + } + + VULKAN_HPP_CONSTEXPR PastPresentationTimingGOOGLE( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + : PastPresentationTimingGOOGLE( *reinterpret_cast( &rhs ) ) + { + } + + PastPresentationTimingGOOGLE & operator=( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PastPresentationTimingGOOGLE & operator=( VkPastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPastPresentationTimingGOOGLE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPastPresentationTimingGOOGLE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPastPresentationTimingGOOGLE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPastPresentationTimingGOOGLE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( presentID, desiredPresentTime, actualPresentTime, earliestPresentTime, presentMargin ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PastPresentationTimingGOOGLE const & ) const = default; +#else + bool operator==( PastPresentationTimingGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( presentID == rhs.presentID ) && ( desiredPresentTime == rhs.desiredPresentTime ) && ( actualPresentTime == rhs.actualPresentTime ) && + ( earliestPresentTime == rhs.earliestPresentTime ) && ( presentMargin == rhs.presentMargin ); +# endif + } + + bool operator!=( PastPresentationTimingGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t presentID = {}; + uint64_t desiredPresentTime = {}; + uint64_t actualPresentTime = {}; + uint64_t earliestPresentTime = {}; + uint64_t presentMargin = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PastPresentationTimingGOOGLE; + }; +#endif + + // wrapper struct for struct VkPastPresentationTimingInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPastPresentationTimingInfoEXT.html + struct PastPresentationTimingInfoEXT + { + using NativeType = VkPastPresentationTimingInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePastPresentationTimingInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PastPresentationTimingInfoEXT( PastPresentationTimingFlagsEXT flags_ = {}, + SwapchainKHR swapchain_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , swapchain{ swapchain_ } + { + } + + VULKAN_HPP_CONSTEXPR PastPresentationTimingInfoEXT( PastPresentationTimingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PastPresentationTimingInfoEXT( VkPastPresentationTimingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PastPresentationTimingInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PastPresentationTimingInfoEXT & operator=( PastPresentationTimingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PastPresentationTimingInfoEXT & operator=( VkPastPresentationTimingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PastPresentationTimingInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PastPresentationTimingInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PastPresentationTimingInfoEXT & setFlags( PastPresentationTimingFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PastPresentationTimingInfoEXT && setFlags( PastPresentationTimingFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PastPresentationTimingInfoEXT & setSwapchain( SwapchainKHR swapchain_ ) & VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PastPresentationTimingInfoEXT && setSwapchain( SwapchainKHR swapchain_ ) && VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPastPresentationTimingInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPastPresentationTimingInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPastPresentationTimingInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPastPresentationTimingInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, swapchain ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PastPresentationTimingInfoEXT const & ) const = default; +#else + bool operator==( PastPresentationTimingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( swapchain == rhs.swapchain ); +# endif + } + + bool operator!=( PastPresentationTimingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePastPresentationTimingInfoEXT; + void const * pNext = {}; + PastPresentationTimingFlagsEXT flags = {}; + SwapchainKHR swapchain = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PastPresentationTimingInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PastPresentationTimingInfoEXT; + }; + + // wrapper struct for struct VkPastPresentationTimingPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPastPresentationTimingPropertiesEXT.html + struct PastPresentationTimingPropertiesEXT + { + using NativeType = VkPastPresentationTimingPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePastPresentationTimingPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PastPresentationTimingPropertiesEXT( uint64_t timingPropertiesCounter_ = {}, + uint64_t timeDomainsCounter_ = {}, + uint32_t presentationTimingCount_ = {}, + PastPresentationTimingEXT * pPresentationTimings_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , timingPropertiesCounter{ timingPropertiesCounter_ } + , timeDomainsCounter{ timeDomainsCounter_ } + , presentationTimingCount{ presentationTimingCount_ } + , pPresentationTimings{ pPresentationTimings_ } + { + } + + VULKAN_HPP_CONSTEXPR PastPresentationTimingPropertiesEXT( PastPresentationTimingPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PastPresentationTimingPropertiesEXT( VkPastPresentationTimingPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PastPresentationTimingPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PastPresentationTimingPropertiesEXT & operator=( PastPresentationTimingPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PastPresentationTimingPropertiesEXT & operator=( VkPastPresentationTimingPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPastPresentationTimingPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPastPresentationTimingPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPastPresentationTimingPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPastPresentationTimingPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, timingPropertiesCounter, timeDomainsCounter, presentationTimingCount, pPresentationTimings ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PastPresentationTimingPropertiesEXT const & ) const = default; +#else + bool operator==( PastPresentationTimingPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timingPropertiesCounter == rhs.timingPropertiesCounter ) && + ( timeDomainsCounter == rhs.timeDomainsCounter ) && ( presentationTimingCount == rhs.presentationTimingCount ) && + ( pPresentationTimings == rhs.pPresentationTimings ); +# endif + } + + bool operator!=( PastPresentationTimingPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePastPresentationTimingPropertiesEXT; + void * pNext = {}; + uint64_t timingPropertiesCounter = {}; + uint64_t timeDomainsCounter = {}; + uint32_t presentationTimingCount = {}; + PastPresentationTimingEXT * pPresentationTimings = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PastPresentationTimingPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PastPresentationTimingPropertiesEXT; + }; + + // wrapper struct for struct VkPerTileBeginInfoQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerTileBeginInfoQCOM.html + struct PerTileBeginInfoQCOM + { + using NativeType = VkPerTileBeginInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerTileBeginInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerTileBeginInfoQCOM( void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {} + + VULKAN_HPP_CONSTEXPR PerTileBeginInfoQCOM( PerTileBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerTileBeginInfoQCOM( VkPerTileBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PerTileBeginInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PerTileBeginInfoQCOM & operator=( PerTileBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerTileBeginInfoQCOM & operator=( VkPerTileBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerTileBeginInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerTileBeginInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPerTileBeginInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerTileBeginInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerTileBeginInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerTileBeginInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerTileBeginInfoQCOM const & ) const = default; +#else + bool operator==( PerTileBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( PerTileBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePerTileBeginInfoQCOM; + void const * pNext = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerTileBeginInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PerTileBeginInfoQCOM; + }; + + // wrapper struct for struct VkPerTileEndInfoQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerTileEndInfoQCOM.html + struct PerTileEndInfoQCOM + { + using NativeType = VkPerTileEndInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerTileEndInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerTileEndInfoQCOM( void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {} + + VULKAN_HPP_CONSTEXPR PerTileEndInfoQCOM( PerTileEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerTileEndInfoQCOM( VkPerTileEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT : PerTileEndInfoQCOM( *reinterpret_cast( &rhs ) ) {} + + PerTileEndInfoQCOM & operator=( PerTileEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerTileEndInfoQCOM & operator=( VkPerTileEndInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerTileEndInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerTileEndInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPerTileEndInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerTileEndInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerTileEndInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerTileEndInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerTileEndInfoQCOM const & ) const = default; +#else + bool operator==( PerTileEndInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( PerTileEndInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePerTileEndInfoQCOM; + void const * pNext = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerTileEndInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PerTileEndInfoQCOM; + }; + + // wrapper struct for struct VkPerformanceConfigurationAcquireInfoINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceConfigurationAcquireInfoINTEL.html + struct PerformanceConfigurationAcquireInfoINTEL + { + using NativeType = VkPerformanceConfigurationAcquireInfoINTEL; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceConfigurationAcquireInfoINTEL; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL( + PerformanceConfigurationTypeINTEL type_ = PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + { + } + + VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceConfigurationAcquireInfoINTEL( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceConfigurationAcquireInfoINTEL( *reinterpret_cast( &rhs ) ) + { + } + + PerformanceConfigurationAcquireInfoINTEL & operator=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerformanceConfigurationAcquireInfoINTEL & operator=( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL & setType( PerformanceConfigurationTypeINTEL type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL && setType( PerformanceConfigurationTypeINTEL type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPerformanceConfigurationAcquireInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceConfigurationAcquireInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceConfigurationAcquireInfoINTEL const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerformanceConfigurationAcquireInfoINTEL *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceConfigurationAcquireInfoINTEL const & ) const = default; +#else + bool operator==( PerformanceConfigurationAcquireInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ); +# endif + } + + bool operator!=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePerformanceConfigurationAcquireInfoINTEL; + void const * pNext = {}; + PerformanceConfigurationTypeINTEL type = PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceConfigurationAcquireInfoINTEL; + }; +#endif + + template <> + struct CppType + { + using Type = PerformanceConfigurationAcquireInfoINTEL; + }; + + // wrapper struct for struct VkPerformanceCounterARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterARM.html + struct PerformanceCounterARM + { + using NativeType = VkPerformanceCounterARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerformanceCounterARM( uint32_t counterID_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , counterID{ counterID_ } + { + } + + VULKAN_HPP_CONSTEXPR PerformanceCounterARM( PerformanceCounterARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceCounterARM( VkPerformanceCounterARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceCounterARM( *reinterpret_cast( &rhs ) ) + { + } + + PerformanceCounterARM & operator=( PerformanceCounterARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerformanceCounterARM & operator=( VkPerformanceCounterARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPerformanceCounterARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceCounterARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceCounterARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerformanceCounterARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, counterID ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceCounterARM const & ) const = default; +#else + bool operator==( PerformanceCounterARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( counterID == rhs.counterID ); +# endif + } + + bool operator!=( PerformanceCounterARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePerformanceCounterARM; + void * pNext = {}; + uint32_t counterID = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceCounterARM; + }; +#endif + + template <> + struct CppType + { + using Type = PerformanceCounterARM; + }; + + // wrapper struct for struct VkPerformanceCounterDescriptionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionARM.html + struct PerformanceCounterDescriptionARM + { + using NativeType = VkPerformanceCounterDescriptionARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterDescriptionARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionARM( PerformanceCounterDescriptionFlagsARM flags_ = {}, + std::array const & name_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , name{ name_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionARM( PerformanceCounterDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceCounterDescriptionARM( VkPerformanceCounterDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceCounterDescriptionARM( *reinterpret_cast( &rhs ) ) + { + } + + PerformanceCounterDescriptionARM & operator=( PerformanceCounterDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerformanceCounterDescriptionARM & operator=( VkPerformanceCounterDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPerformanceCounterDescriptionARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceCounterDescriptionARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceCounterDescriptionARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerformanceCounterDescriptionARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, name ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PerformanceCounterDescriptionARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PerformanceCounterDescriptionARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( strcmp( name, rhs.name ) == 0 ); + } + + bool operator!=( PerformanceCounterDescriptionARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePerformanceCounterDescriptionARM; + void * pNext = {}; + PerformanceCounterDescriptionFlagsARM flags = {}; + ArrayWrapper1D name = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceCounterDescriptionARM; + }; +#endif + + template <> + struct CppType + { + using Type = PerformanceCounterDescriptionARM; + }; + + // wrapper struct for struct VkPerformanceCounterDescriptionKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterDescriptionKHR.html + struct PerformanceCounterDescriptionKHR + { + using NativeType = VkPerformanceCounterDescriptionKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterDescriptionKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR( PerformanceCounterDescriptionFlagsKHR flags_ = {}, + std::array const & name_ = {}, + std::array const & category_ = {}, + std::array const & description_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , name{ name_ } + , category{ category_ } + , description{ description_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceCounterDescriptionKHR( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceCounterDescriptionKHR( *reinterpret_cast( &rhs ) ) + { + } + + PerformanceCounterDescriptionKHR & operator=( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerformanceCounterDescriptionKHR & operator=( VkPerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPerformanceCounterDescriptionKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceCounterDescriptionKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceCounterDescriptionKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerformanceCounterDescriptionKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + ArrayWrapper1D const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, name, category, description ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = strcmp( category, rhs.category ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( strcmp( name, rhs.name ) == 0 ) && + ( strcmp( category, rhs.category ) == 0 ) && ( strcmp( description, rhs.description ) == 0 ); + } + + bool operator!=( PerformanceCounterDescriptionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePerformanceCounterDescriptionKHR; + void * pNext = {}; + PerformanceCounterDescriptionFlagsKHR flags = {}; + ArrayWrapper1D name = {}; + ArrayWrapper1D category = {}; + ArrayWrapper1D description = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceCounterDescriptionKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PerformanceCounterDescriptionKHR; + }; + + // wrapper struct for struct VkPerformanceCounterKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceCounterKHR.html + struct PerformanceCounterKHR + { + using NativeType = VkPerformanceCounterKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR( PerformanceCounterUnitKHR unit_ = PerformanceCounterUnitKHR::eGeneric, + PerformanceCounterScopeKHR scope_ = PerformanceCounterScopeKHR::eCommandBuffer, + PerformanceCounterStorageKHR storage_ = PerformanceCounterStorageKHR::eInt32, + std::array const & uuid_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , unit{ unit_ } + , scope{ scope_ } + , storage{ storage_ } + , uuid{ uuid_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceCounterKHR( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceCounterKHR( *reinterpret_cast( &rhs ) ) + { + } + + PerformanceCounterKHR & operator=( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerformanceCounterKHR & operator=( VkPerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPerformanceCounterKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceCounterKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceCounterKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerformanceCounterKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, unit, scope, storage, uuid ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceCounterKHR const & ) const = default; +#else + bool operator==( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( unit == rhs.unit ) && ( scope == rhs.scope ) && ( storage == rhs.storage ) && + ( uuid == rhs.uuid ); +# endif + } + + bool operator!=( PerformanceCounterKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePerformanceCounterKHR; + void * pNext = {}; + PerformanceCounterUnitKHR unit = PerformanceCounterUnitKHR::eGeneric; + PerformanceCounterScopeKHR scope = PerformanceCounterScopeKHR::eCommandBuffer; + PerformanceCounterStorageKHR storage = PerformanceCounterStorageKHR::eInt32; + ArrayWrapper1D uuid = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceCounterKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PerformanceCounterKHR; + }; + + union PerformanceCounterResultKHR + { + using NativeType = VkPerformanceCounterResultKHR; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int32_t int32_ = {} ) : int32( int32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( int64_t int64_ ) : int64( int64_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint32_t uint32_ ) : uint32( uint32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( uint64_t uint64_ ) : uint64( uint64_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( float float32_ ) : float32( float32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR( double float64_ ) : float64( float64_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt32( int32_t int32_ ) & VULKAN_HPP_NOEXCEPT + { + int32 = int32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR && setInt32( int32_t int32_ ) && VULKAN_HPP_NOEXCEPT + { + int32 = int32_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setInt64( int64_t int64_ ) & VULKAN_HPP_NOEXCEPT + { + int64 = int64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR && setInt64( int64_t int64_ ) && VULKAN_HPP_NOEXCEPT + { + int64 = int64_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint32( uint32_t uint32_ ) & VULKAN_HPP_NOEXCEPT + { + uint32 = uint32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR && setUint32( uint32_t uint32_ ) && VULKAN_HPP_NOEXCEPT + { + uint32 = uint32_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setUint64( uint64_t uint64_ ) & VULKAN_HPP_NOEXCEPT + { + uint64 = uint64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR && setUint64( uint64_t uint64_ ) && VULKAN_HPP_NOEXCEPT + { + uint64 = uint64_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat32( float float32_ ) & VULKAN_HPP_NOEXCEPT + { + float32 = float32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR && setFloat32( float float32_ ) && VULKAN_HPP_NOEXCEPT + { + float32 = float32_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR & setFloat64( double float64_ ) & VULKAN_HPP_NOEXCEPT + { + float64 = float64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceCounterResultKHR && setFloat64( double float64_ ) && VULKAN_HPP_NOEXCEPT + { + float64 = float64_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPerformanceCounterResultKHR const &() const + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceCounterResultKHR &() + { + return *reinterpret_cast( this ); + } + + int32_t int32; + int64_t int64; + uint32_t uint32; + uint64_t uint64; + float float32; + double float64; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceCounterResultKHR; + }; +#endif + + // wrapper struct for struct VkPerformanceMarkerInfoINTEL, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceMarkerInfoINTEL.html + struct PerformanceMarkerInfoINTEL + { + using NativeType = VkPerformanceMarkerInfoINTEL; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceMarkerInfoINTEL; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL( uint64_t marker_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , marker{ marker_ } + { + } + + VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceMarkerInfoINTEL( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceMarkerInfoINTEL( *reinterpret_cast( &rhs ) ) + { + } + + PerformanceMarkerInfoINTEL & operator=( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerformanceMarkerInfoINTEL & operator=( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & setMarker( uint64_t marker_ ) & VULKAN_HPP_NOEXCEPT + { + marker = marker_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL && setMarker( uint64_t marker_ ) && VULKAN_HPP_NOEXCEPT + { + marker = marker_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPerformanceMarkerInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceMarkerInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceMarkerInfoINTEL const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerformanceMarkerInfoINTEL *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, marker ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceMarkerInfoINTEL const & ) const = default; +#else + bool operator==( PerformanceMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( marker == rhs.marker ); +# endif + } + + bool operator!=( PerformanceMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePerformanceMarkerInfoINTEL; + void const * pNext = {}; + uint64_t marker = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceMarkerInfoINTEL; + }; +#endif + + template <> + struct CppType + { + using Type = PerformanceMarkerInfoINTEL; + }; + + // wrapper struct for struct VkPerformanceOverrideInfoINTEL, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceOverrideInfoINTEL.html + struct PerformanceOverrideInfoINTEL + { + using NativeType = VkPerformanceOverrideInfoINTEL; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceOverrideInfoINTEL; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerformanceOverrideInfoINTEL( PerformanceOverrideTypeINTEL type_ = PerformanceOverrideTypeINTEL::eNullHardware, + Bool32 enable_ = {}, + uint64_t parameter_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , enable{ enable_ } + , parameter{ parameter_ } + { + } + + VULKAN_HPP_CONSTEXPR PerformanceOverrideInfoINTEL( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceOverrideInfoINTEL( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceOverrideInfoINTEL( *reinterpret_cast( &rhs ) ) + { + } + + PerformanceOverrideInfoINTEL & operator=( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerformanceOverrideInfoINTEL & operator=( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setType( PerformanceOverrideTypeINTEL type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL && setType( PerformanceOverrideTypeINTEL type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setEnable( Bool32 enable_ ) & VULKAN_HPP_NOEXCEPT + { + enable = enable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL && setEnable( Bool32 enable_ ) && VULKAN_HPP_NOEXCEPT + { + enable = enable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & setParameter( uint64_t parameter_ ) & VULKAN_HPP_NOEXCEPT + { + parameter = parameter_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL && setParameter( uint64_t parameter_ ) && VULKAN_HPP_NOEXCEPT + { + parameter = parameter_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPerformanceOverrideInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceOverrideInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceOverrideInfoINTEL const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerformanceOverrideInfoINTEL *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, enable, parameter ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceOverrideInfoINTEL const & ) const = default; +#else + bool operator==( PerformanceOverrideInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( enable == rhs.enable ) && ( parameter == rhs.parameter ); +# endif + } + + bool operator!=( PerformanceOverrideInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePerformanceOverrideInfoINTEL; + void const * pNext = {}; + PerformanceOverrideTypeINTEL type = PerformanceOverrideTypeINTEL::eNullHardware; + Bool32 enable = {}; + uint64_t parameter = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceOverrideInfoINTEL; + }; +#endif + + template <> + struct CppType + { + using Type = PerformanceOverrideInfoINTEL; + }; + + // wrapper struct for struct VkPerformanceQuerySubmitInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceQuerySubmitInfoKHR.html + struct PerformanceQuerySubmitInfoKHR + { + using NativeType = VkPerformanceQuerySubmitInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceQuerySubmitInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( uint32_t counterPassIndex_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , counterPassIndex{ counterPassIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceQuerySubmitInfoKHR( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceQuerySubmitInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + PerformanceQuerySubmitInfoKHR & operator=( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerformanceQuerySubmitInfoKHR & operator=( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & setCounterPassIndex( uint32_t counterPassIndex_ ) & VULKAN_HPP_NOEXCEPT + { + counterPassIndex = counterPassIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR && setCounterPassIndex( uint32_t counterPassIndex_ ) && VULKAN_HPP_NOEXCEPT + { + counterPassIndex = counterPassIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPerformanceQuerySubmitInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceQuerySubmitInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceQuerySubmitInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerformanceQuerySubmitInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, counterPassIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceQuerySubmitInfoKHR const & ) const = default; +#else + bool operator==( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( counterPassIndex == rhs.counterPassIndex ); +# endif + } + + bool operator!=( PerformanceQuerySubmitInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePerformanceQuerySubmitInfoKHR; + void const * pNext = {}; + uint32_t counterPassIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceQuerySubmitInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PerformanceQuerySubmitInfoKHR; + }; + + // wrapper struct for struct VkPerformanceStreamMarkerInfoINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceStreamMarkerInfoINTEL.html + struct PerformanceStreamMarkerInfoINTEL + { + using NativeType = VkPerformanceStreamMarkerInfoINTEL; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceStreamMarkerInfoINTEL; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL( uint32_t marker_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , marker{ marker_ } + { + } + + VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceStreamMarkerInfoINTEL( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceStreamMarkerInfoINTEL( *reinterpret_cast( &rhs ) ) + { + } + + PerformanceStreamMarkerInfoINTEL & operator=( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerformanceStreamMarkerInfoINTEL & operator=( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & setMarker( uint32_t marker_ ) & VULKAN_HPP_NOEXCEPT + { + marker = marker_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL && setMarker( uint32_t marker_ ) && VULKAN_HPP_NOEXCEPT + { + marker = marker_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPerformanceStreamMarkerInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceStreamMarkerInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceStreamMarkerInfoINTEL const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerformanceStreamMarkerInfoINTEL *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, marker ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PerformanceStreamMarkerInfoINTEL const & ) const = default; +#else + bool operator==( PerformanceStreamMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( marker == rhs.marker ); +# endif + } + + bool operator!=( PerformanceStreamMarkerInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePerformanceStreamMarkerInfoINTEL; + void const * pNext = {}; + uint32_t marker = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceStreamMarkerInfoINTEL; + }; +#endif + + template <> + struct CppType + { + using Type = PerformanceStreamMarkerInfoINTEL; + }; + + union PerformanceValueDataINTEL + { + using NativeType = VkPerformanceValueDataINTEL; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( uint32_t value32_ = {} ) : value32( value32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( uint64_t value64_ ) : value64( value64_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( float valueFloat_ ) : valueFloat( valueFloat_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL( char const * valueString_ ) : valueString( valueString_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValue32( uint32_t value32_ ) & VULKAN_HPP_NOEXCEPT + { + value32 = value32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL && setValue32( uint32_t value32_ ) && VULKAN_HPP_NOEXCEPT + { + value32 = value32_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValue64( uint64_t value64_ ) & VULKAN_HPP_NOEXCEPT + { + value64 = value64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL && setValue64( uint64_t value64_ ) && VULKAN_HPP_NOEXCEPT + { + value64 = value64_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueFloat( float valueFloat_ ) & VULKAN_HPP_NOEXCEPT + { + valueFloat = valueFloat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL && setValueFloat( float valueFloat_ ) && VULKAN_HPP_NOEXCEPT + { + valueFloat = valueFloat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueBool( Bool32 valueBool_ ) & VULKAN_HPP_NOEXCEPT + { + valueBool = valueBool_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL && setValueBool( Bool32 valueBool_ ) && VULKAN_HPP_NOEXCEPT + { + valueBool = valueBool_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL & setValueString( char const * valueString_ ) & VULKAN_HPP_NOEXCEPT + { + valueString = valueString_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueDataINTEL && setValueString( char const * valueString_ ) && VULKAN_HPP_NOEXCEPT + { + valueString = valueString_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPerformanceValueDataINTEL const &() const + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceValueDataINTEL &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + uint32_t value32; + uint64_t value64; + float valueFloat; + Bool32 valueBool; + char const * valueString; +#else + uint32_t value32; + uint64_t value64; + float valueFloat; + VkBool32 valueBool; + char const * valueString; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceValueDataINTEL; + }; +#endif + + // wrapper struct for struct VkPerformanceValueINTEL, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPerformanceValueINTEL.html + struct PerformanceValueINTEL + { + using NativeType = VkPerformanceValueINTEL; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL( PerformanceValueTypeINTEL type_ = PerformanceValueTypeINTEL::eUint32, + PerformanceValueDataINTEL data_ = {} ) VULKAN_HPP_NOEXCEPT + : type{ type_ } + , data{ data_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PerformanceValueINTEL( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PerformanceValueINTEL( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PerformanceValueINTEL( *reinterpret_cast( &rhs ) ) + { + } + + PerformanceValueINTEL & operator=( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PerformanceValueINTEL & operator=( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPerformanceValueINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceValueINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPerformanceValueINTEL const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPerformanceValueINTEL *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( type, data ); + } +#endif + + public: + PerformanceValueTypeINTEL type = PerformanceValueTypeINTEL::eUint32; + PerformanceValueDataINTEL data = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PerformanceValueINTEL; + }; +#endif + + // wrapper struct for struct VkPhysicalDevice16BitStorageFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevice16BitStorageFeatures.html + struct PhysicalDevice16BitStorageFeatures + { + using NativeType = VkPhysicalDevice16BitStorageFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevice16BitStorageFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures( Bool32 storageBuffer16BitAccess_ = {}, + Bool32 uniformAndStorageBuffer16BitAccess_ = {}, + Bool32 storagePushConstant16_ = {}, + Bool32 storageInputOutput16_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , storageBuffer16BitAccess{ storageBuffer16BitAccess_ } + , uniformAndStorageBuffer16BitAccess{ uniformAndStorageBuffer16BitAccess_ } + , storagePushConstant16{ storagePushConstant16_ } + , storageInputOutput16{ storageInputOutput16_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevice16BitStorageFeatures( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevice16BitStorageFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevice16BitStorageFeatures & operator=( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevice16BitStorageFeatures & operator=( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ ) & VULKAN_HPP_NOEXCEPT + { + storageBuffer16BitAccess = storageBuffer16BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures && setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ ) && VULKAN_HPP_NOEXCEPT + { + storageBuffer16BitAccess = storageBuffer16BitAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures && setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setStoragePushConstant16( Bool32 storagePushConstant16_ ) & VULKAN_HPP_NOEXCEPT + { + storagePushConstant16 = storagePushConstant16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures && setStoragePushConstant16( Bool32 storagePushConstant16_ ) && VULKAN_HPP_NOEXCEPT + { + storagePushConstant16 = storagePushConstant16_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & setStorageInputOutput16( Bool32 storageInputOutput16_ ) & VULKAN_HPP_NOEXCEPT + { + storageInputOutput16 = storageInputOutput16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures && setStorageInputOutput16( Bool32 storageInputOutput16_ ) && VULKAN_HPP_NOEXCEPT + { + storageInputOutput16 = storageInputOutput16_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevice16BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevice16BitStorageFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevice16BitStorageFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevice16BitStorageFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, storageBuffer16BitAccess, uniformAndStorageBuffer16BitAccess, storagePushConstant16, storageInputOutput16 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevice16BitStorageFeatures const & ) const = default; +#else + bool operator==( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess ) && + ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess ) && ( storagePushConstant16 == rhs.storagePushConstant16 ) && + ( storageInputOutput16 == rhs.storageInputOutput16 ); +# endif + } + + bool operator!=( PhysicalDevice16BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevice16BitStorageFeatures; + void * pNext = {}; + Bool32 storageBuffer16BitAccess = {}; + Bool32 uniformAndStorageBuffer16BitAccess = {}; + Bool32 storagePushConstant16 = {}; + Bool32 storageInputOutput16 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevice16BitStorageFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevice16BitStorageFeatures; + }; + + using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures; + + // wrapper struct for struct VkPhysicalDevice4444FormatsFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevice4444FormatsFeaturesEXT.html + struct PhysicalDevice4444FormatsFeaturesEXT + { + using NativeType = VkPhysicalDevice4444FormatsFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevice4444FormatsFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDevice4444FormatsFeaturesEXT( Bool32 formatA4R4G4B4_ = {}, Bool32 formatA4B4G4R4_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , formatA4R4G4B4{ formatA4R4G4B4_ } + , formatA4B4G4R4{ formatA4B4G4R4_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevice4444FormatsFeaturesEXT( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevice4444FormatsFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevice4444FormatsFeaturesEXT & operator=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevice4444FormatsFeaturesEXT & operator=( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setFormatA4R4G4B4( Bool32 formatA4R4G4B4_ ) & VULKAN_HPP_NOEXCEPT + { + formatA4R4G4B4 = formatA4R4G4B4_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT && setFormatA4R4G4B4( Bool32 formatA4R4G4B4_ ) && VULKAN_HPP_NOEXCEPT + { + formatA4R4G4B4 = formatA4R4G4B4_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & setFormatA4B4G4R4( Bool32 formatA4B4G4R4_ ) & VULKAN_HPP_NOEXCEPT + { + formatA4B4G4R4 = formatA4B4G4R4_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT && setFormatA4B4G4R4( Bool32 formatA4B4G4R4_ ) && VULKAN_HPP_NOEXCEPT + { + formatA4B4G4R4 = formatA4B4G4R4_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevice4444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevice4444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevice4444FormatsFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevice4444FormatsFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, formatA4R4G4B4, formatA4B4G4R4 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevice4444FormatsFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatA4R4G4B4 == rhs.formatA4R4G4B4 ) && ( formatA4B4G4R4 == rhs.formatA4B4G4R4 ); +# endif + } + + bool operator!=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevice4444FormatsFeaturesEXT; + void * pNext = {}; + Bool32 formatA4R4G4B4 = {}; + Bool32 formatA4B4G4R4 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevice4444FormatsFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevice4444FormatsFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDevice8BitStorageFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevice8BitStorageFeatures.html + struct PhysicalDevice8BitStorageFeatures + { + using NativeType = VkPhysicalDevice8BitStorageFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevice8BitStorageFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevice8BitStorageFeatures( Bool32 storageBuffer8BitAccess_ = {}, + Bool32 uniformAndStorageBuffer8BitAccess_ = {}, + Bool32 storagePushConstant8_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , storageBuffer8BitAccess{ storageBuffer8BitAccess_ } + , uniformAndStorageBuffer8BitAccess{ uniformAndStorageBuffer8BitAccess_ } + , storagePushConstant8{ storagePushConstant8_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevice8BitStorageFeatures( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevice8BitStorageFeatures( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevice8BitStorageFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevice8BitStorageFeatures & operator=( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevice8BitStorageFeatures & operator=( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setStorageBuffer8BitAccess( Bool32 storageBuffer8BitAccess_ ) & VULKAN_HPP_NOEXCEPT + { + storageBuffer8BitAccess = storageBuffer8BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures && setStorageBuffer8BitAccess( Bool32 storageBuffer8BitAccess_ ) && VULKAN_HPP_NOEXCEPT + { + storageBuffer8BitAccess = storageBuffer8BitAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setUniformAndStorageBuffer8BitAccess( Bool32 uniformAndStorageBuffer8BitAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures && setUniformAndStorageBuffer8BitAccess( Bool32 uniformAndStorageBuffer8BitAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & setStoragePushConstant8( Bool32 storagePushConstant8_ ) & VULKAN_HPP_NOEXCEPT + { + storagePushConstant8 = storagePushConstant8_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures && setStoragePushConstant8( Bool32 storagePushConstant8_ ) && VULKAN_HPP_NOEXCEPT + { + storagePushConstant8 = storagePushConstant8_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevice8BitStorageFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevice8BitStorageFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevice8BitStorageFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevice8BitStorageFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, storageBuffer8BitAccess, uniformAndStorageBuffer8BitAccess, storagePushConstant8 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevice8BitStorageFeatures const & ) const = default; +#else + bool operator==( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess ) && + ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess ) && ( storagePushConstant8 == rhs.storagePushConstant8 ); +# endif + } + + bool operator!=( PhysicalDevice8BitStorageFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevice8BitStorageFeatures; + void * pNext = {}; + Bool32 storageBuffer8BitAccess = {}; + Bool32 uniformAndStorageBuffer8BitAccess = {}; + Bool32 storagePushConstant8 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevice8BitStorageFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevice8BitStorageFeatures; + }; + + using PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures; + + // wrapper struct for struct VkPhysicalDeviceASTCDecodeFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceASTCDecodeFeaturesEXT.html + struct PhysicalDeviceASTCDecodeFeaturesEXT + { + using NativeType = VkPhysicalDeviceASTCDecodeFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( Bool32 decodeModeSharedExponent_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , decodeModeSharedExponent{ decodeModeSharedExponent_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceASTCDecodeFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceASTCDecodeFeaturesEXT & operator=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceASTCDecodeFeaturesEXT & operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & setDecodeModeSharedExponent( Bool32 decodeModeSharedExponent_ ) & VULKAN_HPP_NOEXCEPT + { + decodeModeSharedExponent = decodeModeSharedExponent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT && setDecodeModeSharedExponent( Bool32 decodeModeSharedExponent_ ) && VULKAN_HPP_NOEXCEPT + { + decodeModeSharedExponent = decodeModeSharedExponent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceASTCDecodeFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceASTCDecodeFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceASTCDecodeFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceASTCDecodeFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, decodeModeSharedExponent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceASTCDecodeFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decodeModeSharedExponent == rhs.decodeModeSharedExponent ); +# endif + } + + bool operator!=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT; + void * pNext = {}; + Bool32 decodeModeSharedExponent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceASTCDecodeFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceASTCDecodeFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceAccelerationStructureFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructureFeaturesKHR.html + struct PhysicalDeviceAccelerationStructureFeaturesKHR + { + using NativeType = VkPhysicalDeviceAccelerationStructureFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructureFeaturesKHR( Bool32 accelerationStructure_ = {}, + Bool32 accelerationStructureCaptureReplay_ = {}, + Bool32 accelerationStructureIndirectBuild_ = {}, + Bool32 accelerationStructureHostCommands_ = {}, + Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , accelerationStructure{ accelerationStructure_ } + , accelerationStructureCaptureReplay{ accelerationStructureCaptureReplay_ } + , accelerationStructureIndirectBuild{ accelerationStructureIndirectBuild_ } + , accelerationStructureHostCommands{ accelerationStructureHostCommands_ } + , descriptorBindingAccelerationStructureUpdateAfterBind{ descriptorBindingAccelerationStructureUpdateAfterBind_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceAccelerationStructureFeaturesKHR( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAccelerationStructureFeaturesKHR( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceAccelerationStructureFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructure( Bool32 accelerationStructure_ ) & VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR && setAccelerationStructure( Bool32 accelerationStructure_ ) && VULKAN_HPP_NOEXCEPT + { + accelerationStructure = accelerationStructure_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & + setAccelerationStructureCaptureReplay( Bool32 accelerationStructureCaptureReplay_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructureCaptureReplay = accelerationStructureCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR && + setAccelerationStructureCaptureReplay( Bool32 accelerationStructureCaptureReplay_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructureCaptureReplay = accelerationStructureCaptureReplay_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & + setAccelerationStructureIndirectBuild( Bool32 accelerationStructureIndirectBuild_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructureIndirectBuild = accelerationStructureIndirectBuild_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR && + setAccelerationStructureIndirectBuild( Bool32 accelerationStructureIndirectBuild_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructureIndirectBuild = accelerationStructureIndirectBuild_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructureHostCommands( Bool32 accelerationStructureHostCommands_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructureHostCommands = accelerationStructureHostCommands_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR && + setAccelerationStructureHostCommands( Bool32 accelerationStructureHostCommands_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructureHostCommands = accelerationStructureHostCommands_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & + setDescriptorBindingAccelerationStructureUpdateAfterBind( Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingAccelerationStructureUpdateAfterBind = descriptorBindingAccelerationStructureUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR && + setDescriptorBindingAccelerationStructureUpdateAfterBind( Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingAccelerationStructureUpdateAfterBind = descriptorBindingAccelerationStructureUpdateAfterBind_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceAccelerationStructureFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAccelerationStructureFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAccelerationStructureFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAccelerationStructureFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + accelerationStructure, + accelerationStructureCaptureReplay, + accelerationStructureIndirectBuild, + accelerationStructureHostCommands, + descriptorBindingAccelerationStructureUpdateAfterBind ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceAccelerationStructureFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructure == rhs.accelerationStructure ) && + ( accelerationStructureCaptureReplay == rhs.accelerationStructureCaptureReplay ) && + ( accelerationStructureIndirectBuild == rhs.accelerationStructureIndirectBuild ) && + ( accelerationStructureHostCommands == rhs.accelerationStructureHostCommands ) && + ( descriptorBindingAccelerationStructureUpdateAfterBind == rhs.descriptorBindingAccelerationStructureUpdateAfterBind ); +# endif + } + + bool operator!=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR; + void * pNext = {}; + Bool32 accelerationStructure = {}; + Bool32 accelerationStructureCaptureReplay = {}; + Bool32 accelerationStructureIndirectBuild = {}; + Bool32 accelerationStructureHostCommands = {}; + Bool32 descriptorBindingAccelerationStructureUpdateAfterBind = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceAccelerationStructureFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceAccelerationStructureFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceAccelerationStructurePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceAccelerationStructurePropertiesKHR.html + struct PhysicalDeviceAccelerationStructurePropertiesKHR + { + using NativeType = VkPhysicalDeviceAccelerationStructurePropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructurePropertiesKHR( uint64_t maxGeometryCount_ = {}, + uint64_t maxInstanceCount_ = {}, + uint64_t maxPrimitiveCount_ = {}, + uint32_t maxPerStageDescriptorAccelerationStructures_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures_ = {}, + uint32_t maxDescriptorSetAccelerationStructures_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures_ = {}, + uint32_t minAccelerationStructureScratchOffsetAlignment_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxGeometryCount{ maxGeometryCount_ } + , maxInstanceCount{ maxInstanceCount_ } + , maxPrimitiveCount{ maxPrimitiveCount_ } + , maxPerStageDescriptorAccelerationStructures{ maxPerStageDescriptorAccelerationStructures_ } + , maxPerStageDescriptorUpdateAfterBindAccelerationStructures{ maxPerStageDescriptorUpdateAfterBindAccelerationStructures_ } + , maxDescriptorSetAccelerationStructures{ maxDescriptorSetAccelerationStructures_ } + , maxDescriptorSetUpdateAfterBindAccelerationStructures{ maxDescriptorSetUpdateAfterBindAccelerationStructures_ } + , minAccelerationStructureScratchOffsetAlignment{ minAccelerationStructureScratchOffsetAlignment_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceAccelerationStructurePropertiesKHR( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAccelerationStructurePropertiesKHR( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceAccelerationStructurePropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceAccelerationStructurePropertiesKHR & operator=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceAccelerationStructurePropertiesKHR & operator=( VkPhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceAccelerationStructurePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAccelerationStructurePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAccelerationStructurePropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAccelerationStructurePropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxGeometryCount, + maxInstanceCount, + maxPrimitiveCount, + maxPerStageDescriptorAccelerationStructures, + maxPerStageDescriptorUpdateAfterBindAccelerationStructures, + maxDescriptorSetAccelerationStructures, + maxDescriptorSetUpdateAfterBindAccelerationStructures, + minAccelerationStructureScratchOffsetAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceAccelerationStructurePropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxGeometryCount == rhs.maxGeometryCount ) && ( maxInstanceCount == rhs.maxInstanceCount ) && + ( maxPrimitiveCount == rhs.maxPrimitiveCount ) && + ( maxPerStageDescriptorAccelerationStructures == rhs.maxPerStageDescriptorAccelerationStructures ) && + ( maxPerStageDescriptorUpdateAfterBindAccelerationStructures == rhs.maxPerStageDescriptorUpdateAfterBindAccelerationStructures ) && + ( maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures ) && + ( maxDescriptorSetUpdateAfterBindAccelerationStructures == rhs.maxDescriptorSetUpdateAfterBindAccelerationStructures ) && + ( minAccelerationStructureScratchOffsetAlignment == rhs.minAccelerationStructureScratchOffsetAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR; + void * pNext = {}; + uint64_t maxGeometryCount = {}; + uint64_t maxInstanceCount = {}; + uint64_t maxPrimitiveCount = {}; + uint32_t maxPerStageDescriptorAccelerationStructures = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindAccelerationStructures = {}; + uint32_t maxDescriptorSetAccelerationStructures = {}; + uint32_t maxDescriptorSetUpdateAfterBindAccelerationStructures = {}; + uint32_t minAccelerationStructureScratchOffsetAlignment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceAccelerationStructurePropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceAccelerationStructurePropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceAddressBindingReportFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceAddressBindingReportFeaturesEXT.html + struct PhysicalDeviceAddressBindingReportFeaturesEXT + { + using NativeType = VkPhysicalDeviceAddressBindingReportFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAddressBindingReportFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceAddressBindingReportFeaturesEXT( Bool32 reportAddressBinding_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , reportAddressBinding{ reportAddressBinding_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceAddressBindingReportFeaturesEXT( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAddressBindingReportFeaturesEXT( VkPhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceAddressBindingReportFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceAddressBindingReportFeaturesEXT & operator=( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceAddressBindingReportFeaturesEXT & operator=( VkPhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAddressBindingReportFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAddressBindingReportFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAddressBindingReportFeaturesEXT & setReportAddressBinding( Bool32 reportAddressBinding_ ) & VULKAN_HPP_NOEXCEPT + { + reportAddressBinding = reportAddressBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAddressBindingReportFeaturesEXT && setReportAddressBinding( Bool32 reportAddressBinding_ ) && VULKAN_HPP_NOEXCEPT + { + reportAddressBinding = reportAddressBinding_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceAddressBindingReportFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAddressBindingReportFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAddressBindingReportFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAddressBindingReportFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, reportAddressBinding ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceAddressBindingReportFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( reportAddressBinding == rhs.reportAddressBinding ); +# endif + } + + bool operator!=( PhysicalDeviceAddressBindingReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceAddressBindingReportFeaturesEXT; + void * pNext = {}; + Bool32 reportAddressBinding = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceAddressBindingReportFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceAddressBindingReportFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceAmigoProfilingFeaturesSEC, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceAmigoProfilingFeaturesSEC.html + struct PhysicalDeviceAmigoProfilingFeaturesSEC + { + using NativeType = VkPhysicalDeviceAmigoProfilingFeaturesSEC; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAmigoProfilingFeaturesSEC; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceAmigoProfilingFeaturesSEC( Bool32 amigoProfiling_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , amigoProfiling{ amigoProfiling_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceAmigoProfilingFeaturesSEC( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAmigoProfilingFeaturesSEC( VkPhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceAmigoProfilingFeaturesSEC( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceAmigoProfilingFeaturesSEC & operator=( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceAmigoProfilingFeaturesSEC & operator=( VkPhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAmigoProfilingFeaturesSEC & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAmigoProfilingFeaturesSEC && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAmigoProfilingFeaturesSEC & setAmigoProfiling( Bool32 amigoProfiling_ ) & VULKAN_HPP_NOEXCEPT + { + amigoProfiling = amigoProfiling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAmigoProfilingFeaturesSEC && setAmigoProfiling( Bool32 amigoProfiling_ ) && VULKAN_HPP_NOEXCEPT + { + amigoProfiling = amigoProfiling_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceAmigoProfilingFeaturesSEC const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAmigoProfilingFeaturesSEC &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAmigoProfilingFeaturesSEC const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAmigoProfilingFeaturesSEC *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, amigoProfiling ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceAmigoProfilingFeaturesSEC const & ) const = default; +#else + bool operator==( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( amigoProfiling == rhs.amigoProfiling ); +# endif + } + + bool operator!=( PhysicalDeviceAmigoProfilingFeaturesSEC const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceAmigoProfilingFeaturesSEC; + void * pNext = {}; + Bool32 amigoProfiling = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceAmigoProfilingFeaturesSEC; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceAmigoProfilingFeaturesSEC; + }; + + // wrapper struct for struct VkPhysicalDeviceAntiLagFeaturesAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceAntiLagFeaturesAMD.html + struct PhysicalDeviceAntiLagFeaturesAMD + { + using NativeType = VkPhysicalDeviceAntiLagFeaturesAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAntiLagFeaturesAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceAntiLagFeaturesAMD( Bool32 antiLag_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , antiLag{ antiLag_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceAntiLagFeaturesAMD( PhysicalDeviceAntiLagFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAntiLagFeaturesAMD( VkPhysicalDeviceAntiLagFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceAntiLagFeaturesAMD( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceAntiLagFeaturesAMD & operator=( PhysicalDeviceAntiLagFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceAntiLagFeaturesAMD & operator=( VkPhysicalDeviceAntiLagFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAntiLagFeaturesAMD & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAntiLagFeaturesAMD && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAntiLagFeaturesAMD & setAntiLag( Bool32 antiLag_ ) & VULKAN_HPP_NOEXCEPT + { + antiLag = antiLag_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAntiLagFeaturesAMD && setAntiLag( Bool32 antiLag_ ) && VULKAN_HPP_NOEXCEPT + { + antiLag = antiLag_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceAntiLagFeaturesAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAntiLagFeaturesAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAntiLagFeaturesAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAntiLagFeaturesAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, antiLag ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceAntiLagFeaturesAMD const & ) const = default; +#else + bool operator==( PhysicalDeviceAntiLagFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( antiLag == rhs.antiLag ); +# endif + } + + bool operator!=( PhysicalDeviceAntiLagFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceAntiLagFeaturesAMD; + void * pNext = {}; + Bool32 antiLag = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceAntiLagFeaturesAMD; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceAntiLagFeaturesAMD; + }; + + // wrapper struct for struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.html + struct PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT + { + using NativeType = VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( Bool32 attachmentFeedbackLoopDynamicState_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , attachmentFeedbackLoopDynamicState{ attachmentFeedbackLoopDynamicState_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( + *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT & + operator=( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT & + operator=( VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT & + setAttachmentFeedbackLoopDynamicState( Bool32 attachmentFeedbackLoopDynamicState_ ) & + VULKAN_HPP_NOEXCEPT + { + attachmentFeedbackLoopDynamicState = attachmentFeedbackLoopDynamicState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT && + setAttachmentFeedbackLoopDynamicState( Bool32 attachmentFeedbackLoopDynamicState_ ) && + VULKAN_HPP_NOEXCEPT + { + attachmentFeedbackLoopDynamicState = attachmentFeedbackLoopDynamicState_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, attachmentFeedbackLoopDynamicState ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentFeedbackLoopDynamicState == rhs.attachmentFeedbackLoopDynamicState ); +# endif + } + + bool operator!=( PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; + void * pNext = {}; + Bool32 attachmentFeedbackLoopDynamicState = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.html + struct PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT + { + using NativeType = VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( Bool32 attachmentFeedbackLoopLayout_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , attachmentFeedbackLoopLayout{ attachmentFeedbackLoopLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT & + operator=( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT & operator=( VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT & setAttachmentFeedbackLoopLayout( Bool32 attachmentFeedbackLoopLayout_ ) & + VULKAN_HPP_NOEXCEPT + { + attachmentFeedbackLoopLayout = attachmentFeedbackLoopLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT && setAttachmentFeedbackLoopLayout( Bool32 attachmentFeedbackLoopLayout_ ) && + VULKAN_HPP_NOEXCEPT + { + attachmentFeedbackLoopLayout = attachmentFeedbackLoopLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, attachmentFeedbackLoopLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentFeedbackLoopLayout == rhs.attachmentFeedbackLoopLayout ); +# endif + } + + bool operator!=( PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; + void * pNext = {}; + Bool32 attachmentFeedbackLoopLayout = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT.html + struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT + { + using NativeType = VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , advancedBlendCoherentOperations{ advancedBlendCoherentOperations_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceBlendOperationAdvancedFeaturesEXT( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceBlendOperationAdvancedFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ ) & + VULKAN_HPP_NOEXCEPT + { + advancedBlendCoherentOperations = advancedBlendCoherentOperations_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT && setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ ) && + VULKAN_HPP_NOEXCEPT + { + advancedBlendCoherentOperations = advancedBlendCoherentOperations_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, advancedBlendCoherentOperations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations ); +# endif + } + + bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT; + void * pNext = {}; + Bool32 advancedBlendCoherentOperations = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceBlendOperationAdvancedFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceBlendOperationAdvancedFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT.html + struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT + { + using NativeType = VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT( uint32_t advancedBlendMaxColorAttachments_ = {}, + Bool32 advancedBlendIndependentBlend_ = {}, + Bool32 advancedBlendNonPremultipliedSrcColor_ = {}, + Bool32 advancedBlendNonPremultipliedDstColor_ = {}, + Bool32 advancedBlendCorrelatedOverlap_ = {}, + Bool32 advancedBlendAllOperations_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , advancedBlendMaxColorAttachments{ advancedBlendMaxColorAttachments_ } + , advancedBlendIndependentBlend{ advancedBlendIndependentBlend_ } + , advancedBlendNonPremultipliedSrcColor{ advancedBlendNonPremultipliedSrcColor_ } + , advancedBlendNonPremultipliedDstColor{ advancedBlendNonPremultipliedDstColor_ } + , advancedBlendCorrelatedOverlap{ advancedBlendCorrelatedOverlap_ } + , advancedBlendAllOperations{ advancedBlendAllOperations_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceBlendOperationAdvancedPropertiesEXT( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBlendOperationAdvancedPropertiesEXT( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceBlendOperationAdvancedPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceBlendOperationAdvancedPropertiesEXT & + operator=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceBlendOperationAdvancedPropertiesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + advancedBlendMaxColorAttachments, + advancedBlendIndependentBlend, + advancedBlendNonPremultipliedSrcColor, + advancedBlendNonPremultipliedDstColor, + advancedBlendCorrelatedOverlap, + advancedBlendAllOperations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments ) && + ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend ) && + ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor ) && + ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor ) && + ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap ) && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations ); +# endif + } + + bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT; + void * pNext = {}; + uint32_t advancedBlendMaxColorAttachments = {}; + Bool32 advancedBlendIndependentBlend = {}; + Bool32 advancedBlendNonPremultipliedSrcColor = {}; + Bool32 advancedBlendNonPremultipliedDstColor = {}; + Bool32 advancedBlendCorrelatedOverlap = {}; + Bool32 advancedBlendAllOperations = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceBlendOperationAdvancedPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceBlendOperationAdvancedPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceBorderColorSwizzleFeaturesEXT.html + struct PhysicalDeviceBorderColorSwizzleFeaturesEXT + { + using NativeType = VkPhysicalDeviceBorderColorSwizzleFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceBorderColorSwizzleFeaturesEXT( Bool32 borderColorSwizzle_ = {}, + Bool32 borderColorSwizzleFromImage_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , borderColorSwizzle{ borderColorSwizzle_ } + , borderColorSwizzleFromImage{ borderColorSwizzleFromImage_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceBorderColorSwizzleFeaturesEXT( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBorderColorSwizzleFeaturesEXT( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceBorderColorSwizzleFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceBorderColorSwizzleFeaturesEXT & operator=( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceBorderColorSwizzleFeaturesEXT & operator=( VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT & setBorderColorSwizzle( Bool32 borderColorSwizzle_ ) & VULKAN_HPP_NOEXCEPT + { + borderColorSwizzle = borderColorSwizzle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT && setBorderColorSwizzle( Bool32 borderColorSwizzle_ ) && VULKAN_HPP_NOEXCEPT + { + borderColorSwizzle = borderColorSwizzle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT & setBorderColorSwizzleFromImage( Bool32 borderColorSwizzleFromImage_ ) & + VULKAN_HPP_NOEXCEPT + { + borderColorSwizzleFromImage = borderColorSwizzleFromImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBorderColorSwizzleFeaturesEXT && setBorderColorSwizzleFromImage( Bool32 borderColorSwizzleFromImage_ ) && + VULKAN_HPP_NOEXCEPT + { + borderColorSwizzleFromImage = borderColorSwizzleFromImage_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, borderColorSwizzle, borderColorSwizzleFromImage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( borderColorSwizzle == rhs.borderColorSwizzle ) && + ( borderColorSwizzleFromImage == rhs.borderColorSwizzleFromImage ); +# endif + } + + bool operator!=( PhysicalDeviceBorderColorSwizzleFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT; + void * pNext = {}; + Bool32 borderColorSwizzle = {}; + Bool32 borderColorSwizzleFromImage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceBorderColorSwizzleFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceBorderColorSwizzleFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceBufferDeviceAddressFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeatures.html + struct PhysicalDeviceBufferDeviceAddressFeatures + { + using NativeType = VkPhysicalDeviceBufferDeviceAddressFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures( Bool32 bufferDeviceAddress_ = {}, + Bool32 bufferDeviceAddressCaptureReplay_ = {}, + Bool32 bufferDeviceAddressMultiDevice_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , bufferDeviceAddress{ bufferDeviceAddress_ } + , bufferDeviceAddressCaptureReplay{ bufferDeviceAddressCaptureReplay_ } + , bufferDeviceAddressMultiDevice{ bufferDeviceAddressMultiDevice_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBufferDeviceAddressFeatures( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceBufferDeviceAddressFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceBufferDeviceAddressFeatures & operator=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceBufferDeviceAddressFeatures & operator=( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddress( Bool32 bufferDeviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddress = bufferDeviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures && setBufferDeviceAddress( Bool32 bufferDeviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddress = bufferDeviceAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddressCaptureReplay( Bool32 bufferDeviceAddressCaptureReplay_ ) & + VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures && setBufferDeviceAddressCaptureReplay( Bool32 bufferDeviceAddressCaptureReplay_ ) && + VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddressMultiDevice( Bool32 bufferDeviceAddressMultiDevice_ ) & + VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures && setBufferDeviceAddressMultiDevice( Bool32 bufferDeviceAddressMultiDevice_ ) && + VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceBufferDeviceAddressFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBufferDeviceAddressFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBufferDeviceAddressFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBufferDeviceAddressFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceBufferDeviceAddressFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) && + ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) && + ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ); +# endif + } + + bool operator!=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures; + void * pNext = {}; + Bool32 bufferDeviceAddress = {}; + Bool32 bufferDeviceAddressCaptureReplay = {}; + Bool32 bufferDeviceAddressMultiDevice = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceBufferDeviceAddressFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceBufferDeviceAddressFeatures; + }; + + using PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures; + + // wrapper struct for struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceBufferDeviceAddressFeaturesEXT.html + struct PhysicalDeviceBufferDeviceAddressFeaturesEXT + { + using NativeType = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT( Bool32 bufferDeviceAddress_ = {}, + Bool32 bufferDeviceAddressCaptureReplay_ = {}, + Bool32 bufferDeviceAddressMultiDevice_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , bufferDeviceAddress{ bufferDeviceAddress_ } + , bufferDeviceAddressCaptureReplay{ bufferDeviceAddressCaptureReplay_ } + , bufferDeviceAddressMultiDevice{ bufferDeviceAddressMultiDevice_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceBufferDeviceAddressFeaturesEXT( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceBufferDeviceAddressFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddress( Bool32 bufferDeviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddress = bufferDeviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT && setBufferDeviceAddress( Bool32 bufferDeviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddress = bufferDeviceAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddressCaptureReplay( Bool32 bufferDeviceAddressCaptureReplay_ ) & + VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT && setBufferDeviceAddressCaptureReplay( Bool32 bufferDeviceAddressCaptureReplay_ ) && + VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddressMultiDevice( Bool32 bufferDeviceAddressMultiDevice_ ) & + VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT && setBufferDeviceAddressMultiDevice( Bool32 bufferDeviceAddressMultiDevice_ ) && + VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, bufferDeviceAddress, bufferDeviceAddressCaptureReplay, bufferDeviceAddressMultiDevice ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) && + ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) && + ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ); +# endif + } + + bool operator!=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT; + void * pNext = {}; + Bool32 bufferDeviceAddress = {}; + Bool32 bufferDeviceAddressCaptureReplay = {}; + Bool32 bufferDeviceAddressMultiDevice = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceBufferDeviceAddressFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceBufferDeviceAddressFeaturesEXT; + }; + + using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT; + + // wrapper struct for struct VkPhysicalDeviceClusterAccelerationStructureFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructureFeaturesNV.html + struct PhysicalDeviceClusterAccelerationStructureFeaturesNV + { + using NativeType = VkPhysicalDeviceClusterAccelerationStructureFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceClusterAccelerationStructureFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceClusterAccelerationStructureFeaturesNV( Bool32 clusterAccelerationStructure_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , clusterAccelerationStructure{ clusterAccelerationStructure_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceClusterAccelerationStructureFeaturesNV( PhysicalDeviceClusterAccelerationStructureFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceClusterAccelerationStructureFeaturesNV( VkPhysicalDeviceClusterAccelerationStructureFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceClusterAccelerationStructureFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceClusterAccelerationStructureFeaturesNV & + operator=( PhysicalDeviceClusterAccelerationStructureFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceClusterAccelerationStructureFeaturesNV & operator=( VkPhysicalDeviceClusterAccelerationStructureFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterAccelerationStructureFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterAccelerationStructureFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterAccelerationStructureFeaturesNV & setClusterAccelerationStructure( Bool32 clusterAccelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + clusterAccelerationStructure = clusterAccelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterAccelerationStructureFeaturesNV && setClusterAccelerationStructure( Bool32 clusterAccelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + clusterAccelerationStructure = clusterAccelerationStructure_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceClusterAccelerationStructureFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterAccelerationStructureFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterAccelerationStructureFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterAccelerationStructureFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, clusterAccelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceClusterAccelerationStructureFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceClusterAccelerationStructureFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( clusterAccelerationStructure == rhs.clusterAccelerationStructure ); +# endif + } + + bool operator!=( PhysicalDeviceClusterAccelerationStructureFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceClusterAccelerationStructureFeaturesNV; + void * pNext = {}; + Bool32 clusterAccelerationStructure = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceClusterAccelerationStructureFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceClusterAccelerationStructureFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceClusterAccelerationStructurePropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterAccelerationStructurePropertiesNV.html + struct PhysicalDeviceClusterAccelerationStructurePropertiesNV + { + using NativeType = VkPhysicalDeviceClusterAccelerationStructurePropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceClusterAccelerationStructurePropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceClusterAccelerationStructurePropertiesNV( uint32_t maxVerticesPerCluster_ = {}, + uint32_t maxTrianglesPerCluster_ = {}, + uint32_t clusterScratchByteAlignment_ = {}, + uint32_t clusterByteAlignment_ = {}, + uint32_t clusterTemplateByteAlignment_ = {}, + uint32_t clusterBottomLevelByteAlignment_ = {}, + uint32_t clusterTemplateBoundsByteAlignment_ = {}, + uint32_t maxClusterGeometryIndex_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxVerticesPerCluster{ maxVerticesPerCluster_ } + , maxTrianglesPerCluster{ maxTrianglesPerCluster_ } + , clusterScratchByteAlignment{ clusterScratchByteAlignment_ } + , clusterByteAlignment{ clusterByteAlignment_ } + , clusterTemplateByteAlignment{ clusterTemplateByteAlignment_ } + , clusterBottomLevelByteAlignment{ clusterBottomLevelByteAlignment_ } + , clusterTemplateBoundsByteAlignment{ clusterTemplateBoundsByteAlignment_ } + , maxClusterGeometryIndex{ maxClusterGeometryIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceClusterAccelerationStructurePropertiesNV( PhysicalDeviceClusterAccelerationStructurePropertiesNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceClusterAccelerationStructurePropertiesNV( VkPhysicalDeviceClusterAccelerationStructurePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceClusterAccelerationStructurePropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceClusterAccelerationStructurePropertiesNV & + operator=( PhysicalDeviceClusterAccelerationStructurePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceClusterAccelerationStructurePropertiesNV & + operator=( VkPhysicalDeviceClusterAccelerationStructurePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceClusterAccelerationStructurePropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterAccelerationStructurePropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterAccelerationStructurePropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterAccelerationStructurePropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxVerticesPerCluster, + maxTrianglesPerCluster, + clusterScratchByteAlignment, + clusterByteAlignment, + clusterTemplateByteAlignment, + clusterBottomLevelByteAlignment, + clusterTemplateBoundsByteAlignment, + maxClusterGeometryIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceClusterAccelerationStructurePropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceClusterAccelerationStructurePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVerticesPerCluster == rhs.maxVerticesPerCluster ) && + ( maxTrianglesPerCluster == rhs.maxTrianglesPerCluster ) && ( clusterScratchByteAlignment == rhs.clusterScratchByteAlignment ) && + ( clusterByteAlignment == rhs.clusterByteAlignment ) && ( clusterTemplateByteAlignment == rhs.clusterTemplateByteAlignment ) && + ( clusterBottomLevelByteAlignment == rhs.clusterBottomLevelByteAlignment ) && + ( clusterTemplateBoundsByteAlignment == rhs.clusterTemplateBoundsByteAlignment ) && ( maxClusterGeometryIndex == rhs.maxClusterGeometryIndex ); +# endif + } + + bool operator!=( PhysicalDeviceClusterAccelerationStructurePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceClusterAccelerationStructurePropertiesNV; + void * pNext = {}; + uint32_t maxVerticesPerCluster = {}; + uint32_t maxTrianglesPerCluster = {}; + uint32_t clusterScratchByteAlignment = {}; + uint32_t clusterByteAlignment = {}; + uint32_t clusterTemplateByteAlignment = {}; + uint32_t clusterBottomLevelByteAlignment = {}; + uint32_t clusterTemplateBoundsByteAlignment = {}; + uint32_t maxClusterGeometryIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceClusterAccelerationStructurePropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceClusterAccelerationStructurePropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI.html + struct PhysicalDeviceClusterCullingShaderFeaturesHUAWEI + { + using NativeType = VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( Bool32 clustercullingShader_ = {}, + Bool32 multiviewClusterCullingShader_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , clustercullingShader{ clustercullingShader_ } + , multiviewClusterCullingShader{ multiviewClusterCullingShader_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceClusterCullingShaderFeaturesHUAWEI( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & operator=( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & operator=( VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & setClustercullingShader( Bool32 clustercullingShader_ ) & VULKAN_HPP_NOEXCEPT + { + clustercullingShader = clustercullingShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI && setClustercullingShader( Bool32 clustercullingShader_ ) && VULKAN_HPP_NOEXCEPT + { + clustercullingShader = clustercullingShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI & setMultiviewClusterCullingShader( Bool32 multiviewClusterCullingShader_ ) & + VULKAN_HPP_NOEXCEPT + { + multiviewClusterCullingShader = multiviewClusterCullingShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderFeaturesHUAWEI && setMultiviewClusterCullingShader( Bool32 multiviewClusterCullingShader_ ) && + VULKAN_HPP_NOEXCEPT + { + multiviewClusterCullingShader = multiviewClusterCullingShader_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, clustercullingShader, multiviewClusterCullingShader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & ) const = default; +#else + bool operator==( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( clustercullingShader == rhs.clustercullingShader ) && + ( multiviewClusterCullingShader == rhs.multiviewClusterCullingShader ); +# endif + } + + bool operator!=( PhysicalDeviceClusterCullingShaderFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI; + void * pNext = {}; + Bool32 clustercullingShader = {}; + Bool32 multiviewClusterCullingShader = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceClusterCullingShaderFeaturesHUAWEI; + }; + + // wrapper struct for struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI.html + struct PhysicalDeviceClusterCullingShaderPropertiesHUAWEI + { + using NativeType = VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( std::array const & maxWorkGroupCount_ = {}, + std::array const & maxWorkGroupSize_ = {}, + uint32_t maxOutputClusterCount_ = {}, + DeviceSize indirectBufferOffsetAlignment_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxWorkGroupCount{ maxWorkGroupCount_ } + , maxWorkGroupSize{ maxWorkGroupSize_ } + , maxOutputClusterCount{ maxOutputClusterCount_ } + , indirectBufferOffsetAlignment{ indirectBufferOffsetAlignment_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceClusterCullingShaderPropertiesHUAWEI( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceClusterCullingShaderPropertiesHUAWEI & + operator=( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceClusterCullingShaderPropertiesHUAWEI & operator=( VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + uint32_t const &, + DeviceSize const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxWorkGroupCount, maxWorkGroupSize, maxOutputClusterCount, indirectBufferOffsetAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & ) const = default; +#else + bool operator==( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxWorkGroupCount == rhs.maxWorkGroupCount ) && + ( maxWorkGroupSize == rhs.maxWorkGroupSize ) && ( maxOutputClusterCount == rhs.maxOutputClusterCount ) && + ( indirectBufferOffsetAlignment == rhs.indirectBufferOffsetAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceClusterCullingShaderPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI; + void * pNext = {}; + ArrayWrapper1D maxWorkGroupCount = {}; + ArrayWrapper1D maxWorkGroupSize = {}; + uint32_t maxOutputClusterCount = {}; + DeviceSize indirectBufferOffsetAlignment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceClusterCullingShaderPropertiesHUAWEI; + }; + + // wrapper struct for struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI.html + struct PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI + { + using NativeType = VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( Bool32 clusterShadingRate_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , clusterShadingRate{ clusterShadingRate_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI & + operator=( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI & operator=( VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI & setClusterShadingRate( Bool32 clusterShadingRate_ ) & VULKAN_HPP_NOEXCEPT + { + clusterShadingRate = clusterShadingRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI && setClusterShadingRate( Bool32 clusterShadingRate_ ) && VULKAN_HPP_NOEXCEPT + { + clusterShadingRate = clusterShadingRate_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, clusterShadingRate ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & ) const = default; +#else + bool operator==( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( clusterShadingRate == rhs.clusterShadingRate ); +# endif + } + + bool operator!=( PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI; + void * pNext = {}; + Bool32 clusterShadingRate = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI; + }; + + // wrapper struct for struct VkPhysicalDeviceCoherentMemoryFeaturesAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCoherentMemoryFeaturesAMD.html + struct PhysicalDeviceCoherentMemoryFeaturesAMD + { + using NativeType = VkPhysicalDeviceCoherentMemoryFeaturesAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( Bool32 deviceCoherentMemory_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceCoherentMemory{ deviceCoherentMemory_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCoherentMemoryFeaturesAMD( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD & setDeviceCoherentMemory( Bool32 deviceCoherentMemory_ ) & VULKAN_HPP_NOEXCEPT + { + deviceCoherentMemory = deviceCoherentMemory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD && setDeviceCoherentMemory( Bool32 deviceCoherentMemory_ ) && VULKAN_HPP_NOEXCEPT + { + deviceCoherentMemory = deviceCoherentMemory_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCoherentMemoryFeaturesAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCoherentMemoryFeaturesAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCoherentMemoryFeaturesAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceCoherentMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCoherentMemoryFeaturesAMD const & ) const = default; +#else + bool operator==( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceCoherentMemory == rhs.deviceCoherentMemory ); +# endif + } + + bool operator!=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD; + void * pNext = {}; + Bool32 deviceCoherentMemory = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCoherentMemoryFeaturesAMD; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCoherentMemoryFeaturesAMD; + }; + + // wrapper struct for struct VkPhysicalDeviceColorWriteEnableFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceColorWriteEnableFeaturesEXT.html + struct PhysicalDeviceColorWriteEnableFeaturesEXT + { + using NativeType = VkPhysicalDeviceColorWriteEnableFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT( Bool32 colorWriteEnable_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , colorWriteEnable{ colorWriteEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceColorWriteEnableFeaturesEXT( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceColorWriteEnableFeaturesEXT( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceColorWriteEnableFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceColorWriteEnableFeaturesEXT & operator=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceColorWriteEnableFeaturesEXT & operator=( VkPhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT & setColorWriteEnable( Bool32 colorWriteEnable_ ) & VULKAN_HPP_NOEXCEPT + { + colorWriteEnable = colorWriteEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceColorWriteEnableFeaturesEXT && setColorWriteEnable( Bool32 colorWriteEnable_ ) && VULKAN_HPP_NOEXCEPT + { + colorWriteEnable = colorWriteEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceColorWriteEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceColorWriteEnableFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceColorWriteEnableFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, colorWriteEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceColorWriteEnableFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorWriteEnable == rhs.colorWriteEnable ); +# endif + } + + bool operator!=( PhysicalDeviceColorWriteEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT; + void * pNext = {}; + Bool32 colorWriteEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceColorWriteEnableFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceColorWriteEnableFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceCommandBufferInheritanceFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCommandBufferInheritanceFeaturesNV.html + struct PhysicalDeviceCommandBufferInheritanceFeaturesNV + { + using NativeType = VkPhysicalDeviceCommandBufferInheritanceFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCommandBufferInheritanceFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCommandBufferInheritanceFeaturesNV( Bool32 commandBufferInheritance_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , commandBufferInheritance{ commandBufferInheritance_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceCommandBufferInheritanceFeaturesNV( PhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCommandBufferInheritanceFeaturesNV( VkPhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCommandBufferInheritanceFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCommandBufferInheritanceFeaturesNV & operator=( PhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCommandBufferInheritanceFeaturesNV & operator=( VkPhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCommandBufferInheritanceFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCommandBufferInheritanceFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCommandBufferInheritanceFeaturesNV & setCommandBufferInheritance( Bool32 commandBufferInheritance_ ) & + VULKAN_HPP_NOEXCEPT + { + commandBufferInheritance = commandBufferInheritance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCommandBufferInheritanceFeaturesNV && setCommandBufferInheritance( Bool32 commandBufferInheritance_ ) && + VULKAN_HPP_NOEXCEPT + { + commandBufferInheritance = commandBufferInheritance_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCommandBufferInheritanceFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCommandBufferInheritanceFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCommandBufferInheritanceFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCommandBufferInheritanceFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, commandBufferInheritance ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCommandBufferInheritanceFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( commandBufferInheritance == rhs.commandBufferInheritance ); +# endif + } + + bool operator!=( PhysicalDeviceCommandBufferInheritanceFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCommandBufferInheritanceFeaturesNV; + void * pNext = {}; + Bool32 commandBufferInheritance = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCommandBufferInheritanceFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCommandBufferInheritanceFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV.html + struct PhysicalDeviceComputeOccupancyPriorityFeaturesNV + { + using NativeType = VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceComputeOccupancyPriorityFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeOccupancyPriorityFeaturesNV( Bool32 computeOccupancyPriority_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , computeOccupancyPriority{ computeOccupancyPriority_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceComputeOccupancyPriorityFeaturesNV( PhysicalDeviceComputeOccupancyPriorityFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceComputeOccupancyPriorityFeaturesNV( VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceComputeOccupancyPriorityFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceComputeOccupancyPriorityFeaturesNV & operator=( PhysicalDeviceComputeOccupancyPriorityFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceComputeOccupancyPriorityFeaturesNV & operator=( VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeOccupancyPriorityFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeOccupancyPriorityFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeOccupancyPriorityFeaturesNV & setComputeOccupancyPriority( Bool32 computeOccupancyPriority_ ) & + VULKAN_HPP_NOEXCEPT + { + computeOccupancyPriority = computeOccupancyPriority_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeOccupancyPriorityFeaturesNV && setComputeOccupancyPriority( Bool32 computeOccupancyPriority_ ) && + VULKAN_HPP_NOEXCEPT + { + computeOccupancyPriority = computeOccupancyPriority_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceComputeOccupancyPriorityFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, computeOccupancyPriority ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceComputeOccupancyPriorityFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceComputeOccupancyPriorityFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( computeOccupancyPriority == rhs.computeOccupancyPriority ); +# endif + } + + bool operator!=( PhysicalDeviceComputeOccupancyPriorityFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceComputeOccupancyPriorityFeaturesNV; + void * pNext = {}; + Bool32 computeOccupancyPriority = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceComputeOccupancyPriorityFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceComputeOccupancyPriorityFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR.html + struct PhysicalDeviceComputeShaderDerivativesFeaturesKHR + { + using NativeType = VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesFeaturesKHR( Bool32 computeDerivativeGroupQuads_ = {}, + Bool32 computeDerivativeGroupLinear_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , computeDerivativeGroupQuads{ computeDerivativeGroupQuads_ } + , computeDerivativeGroupLinear{ computeDerivativeGroupLinear_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceComputeShaderDerivativesFeaturesKHR( PhysicalDeviceComputeShaderDerivativesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceComputeShaderDerivativesFeaturesKHR( VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceComputeShaderDerivativesFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceComputeShaderDerivativesFeaturesKHR & + operator=( PhysicalDeviceComputeShaderDerivativesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceComputeShaderDerivativesFeaturesKHR & operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesKHR & setComputeDerivativeGroupQuads( Bool32 computeDerivativeGroupQuads_ ) & + VULKAN_HPP_NOEXCEPT + { + computeDerivativeGroupQuads = computeDerivativeGroupQuads_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesKHR && setComputeDerivativeGroupQuads( Bool32 computeDerivativeGroupQuads_ ) && + VULKAN_HPP_NOEXCEPT + { + computeDerivativeGroupQuads = computeDerivativeGroupQuads_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesKHR & setComputeDerivativeGroupLinear( Bool32 computeDerivativeGroupLinear_ ) & + VULKAN_HPP_NOEXCEPT + { + computeDerivativeGroupLinear = computeDerivativeGroupLinear_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesKHR && setComputeDerivativeGroupLinear( Bool32 computeDerivativeGroupLinear_ ) && + VULKAN_HPP_NOEXCEPT + { + computeDerivativeGroupLinear = computeDerivativeGroupLinear_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, computeDerivativeGroupQuads, computeDerivativeGroupLinear ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceComputeShaderDerivativesFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceComputeShaderDerivativesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( computeDerivativeGroupQuads == rhs.computeDerivativeGroupQuads ) && + ( computeDerivativeGroupLinear == rhs.computeDerivativeGroupLinear ); +# endif + } + + bool operator!=( PhysicalDeviceComputeShaderDerivativesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesKHR; + void * pNext = {}; + Bool32 computeDerivativeGroupQuads = {}; + Bool32 computeDerivativeGroupLinear = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceComputeShaderDerivativesFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceComputeShaderDerivativesFeaturesKHR; + }; + + using PhysicalDeviceComputeShaderDerivativesFeaturesNV = PhysicalDeviceComputeShaderDerivativesFeaturesKHR; + + // wrapper struct for struct VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR.html + struct PhysicalDeviceComputeShaderDerivativesPropertiesKHR + { + using NativeType = VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceComputeShaderDerivativesPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesPropertiesKHR( Bool32 meshAndTaskShaderDerivatives_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , meshAndTaskShaderDerivatives{ meshAndTaskShaderDerivatives_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceComputeShaderDerivativesPropertiesKHR( PhysicalDeviceComputeShaderDerivativesPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceComputeShaderDerivativesPropertiesKHR( VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceComputeShaderDerivativesPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceComputeShaderDerivativesPropertiesKHR & + operator=( PhysicalDeviceComputeShaderDerivativesPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceComputeShaderDerivativesPropertiesKHR & operator=( VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, meshAndTaskShaderDerivatives ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceComputeShaderDerivativesPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceComputeShaderDerivativesPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( meshAndTaskShaderDerivatives == rhs.meshAndTaskShaderDerivatives ); +# endif + } + + bool operator!=( PhysicalDeviceComputeShaderDerivativesPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceComputeShaderDerivativesPropertiesKHR; + void * pNext = {}; + Bool32 meshAndTaskShaderDerivatives = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceComputeShaderDerivativesPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceComputeShaderDerivativesPropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceConditionalRenderingFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceConditionalRenderingFeaturesEXT.html + struct PhysicalDeviceConditionalRenderingFeaturesEXT + { + using NativeType = VkPhysicalDeviceConditionalRenderingFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceConditionalRenderingFeaturesEXT( Bool32 conditionalRendering_ = {}, + Bool32 inheritedConditionalRendering_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , conditionalRendering{ conditionalRendering_ } + , inheritedConditionalRendering{ inheritedConditionalRendering_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceConditionalRenderingFeaturesEXT( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceConditionalRenderingFeaturesEXT( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceConditionalRenderingFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & setConditionalRendering( Bool32 conditionalRendering_ ) & VULKAN_HPP_NOEXCEPT + { + conditionalRendering = conditionalRendering_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT && setConditionalRendering( Bool32 conditionalRendering_ ) && VULKAN_HPP_NOEXCEPT + { + conditionalRendering = conditionalRendering_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & setInheritedConditionalRendering( Bool32 inheritedConditionalRendering_ ) & + VULKAN_HPP_NOEXCEPT + { + inheritedConditionalRendering = inheritedConditionalRendering_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT && setInheritedConditionalRendering( Bool32 inheritedConditionalRendering_ ) && + VULKAN_HPP_NOEXCEPT + { + inheritedConditionalRendering = inheritedConditionalRendering_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceConditionalRenderingFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceConditionalRenderingFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceConditionalRenderingFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, conditionalRendering, inheritedConditionalRendering ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceConditionalRenderingFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conditionalRendering == rhs.conditionalRendering ) && + ( inheritedConditionalRendering == rhs.inheritedConditionalRendering ); +# endif + } + + bool operator!=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT; + void * pNext = {}; + Bool32 conditionalRendering = {}; + Bool32 inheritedConditionalRendering = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceConditionalRenderingFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceConditionalRenderingFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceConservativeRasterizationPropertiesEXT.html + struct PhysicalDeviceConservativeRasterizationPropertiesEXT + { + using NativeType = VkPhysicalDeviceConservativeRasterizationPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT( float primitiveOverestimationSize_ = {}, + float maxExtraPrimitiveOverestimationSize_ = {}, + float extraPrimitiveOverestimationSizeGranularity_ = {}, + Bool32 primitiveUnderestimation_ = {}, + Bool32 conservativePointAndLineRasterization_ = {}, + Bool32 degenerateTrianglesRasterized_ = {}, + Bool32 degenerateLinesRasterized_ = {}, + Bool32 fullyCoveredFragmentShaderInputVariable_ = {}, + Bool32 conservativeRasterizationPostDepthCoverage_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , primitiveOverestimationSize{ primitiveOverestimationSize_ } + , maxExtraPrimitiveOverestimationSize{ maxExtraPrimitiveOverestimationSize_ } + , extraPrimitiveOverestimationSizeGranularity{ extraPrimitiveOverestimationSizeGranularity_ } + , primitiveUnderestimation{ primitiveUnderestimation_ } + , conservativePointAndLineRasterization{ conservativePointAndLineRasterization_ } + , degenerateTrianglesRasterized{ degenerateTrianglesRasterized_ } + , degenerateLinesRasterized{ degenerateLinesRasterized_ } + , fullyCoveredFragmentShaderInputVariable{ fullyCoveredFragmentShaderInputVariable_ } + , conservativeRasterizationPostDepthCoverage{ conservativeRasterizationPostDepthCoverage_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceConservativeRasterizationPropertiesEXT( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceConservativeRasterizationPropertiesEXT( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceConservativeRasterizationPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceConservativeRasterizationPropertiesEXT & + operator=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceConservativeRasterizationPropertiesEXT & operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceConservativeRasterizationPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + primitiveOverestimationSize, + maxExtraPrimitiveOverestimationSize, + extraPrimitiveOverestimationSizeGranularity, + primitiveUnderestimation, + conservativePointAndLineRasterization, + degenerateTrianglesRasterized, + degenerateLinesRasterized, + fullyCoveredFragmentShaderInputVariable, + conservativeRasterizationPostDepthCoverage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceConservativeRasterizationPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( primitiveOverestimationSize == rhs.primitiveOverestimationSize ) && + ( maxExtraPrimitiveOverestimationSize == rhs.maxExtraPrimitiveOverestimationSize ) && + ( extraPrimitiveOverestimationSizeGranularity == rhs.extraPrimitiveOverestimationSizeGranularity ) && + ( primitiveUnderestimation == rhs.primitiveUnderestimation ) && + ( conservativePointAndLineRasterization == rhs.conservativePointAndLineRasterization ) && + ( degenerateTrianglesRasterized == rhs.degenerateTrianglesRasterized ) && ( degenerateLinesRasterized == rhs.degenerateLinesRasterized ) && + ( fullyCoveredFragmentShaderInputVariable == rhs.fullyCoveredFragmentShaderInputVariable ) && + ( conservativeRasterizationPostDepthCoverage == rhs.conservativeRasterizationPostDepthCoverage ); +# endif + } + + bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT; + void * pNext = {}; + float primitiveOverestimationSize = {}; + float maxExtraPrimitiveOverestimationSize = {}; + float extraPrimitiveOverestimationSizeGranularity = {}; + Bool32 primitiveUnderestimation = {}; + Bool32 conservativePointAndLineRasterization = {}; + Bool32 degenerateTrianglesRasterized = {}; + Bool32 degenerateLinesRasterized = {}; + Bool32 fullyCoveredFragmentShaderInputVariable = {}; + Bool32 conservativeRasterizationPostDepthCoverage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceConservativeRasterizationPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceConservativeRasterizationPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceCooperativeMatrix2FeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2FeaturesNV.html + struct PhysicalDeviceCooperativeMatrix2FeaturesNV + { + using NativeType = VkPhysicalDeviceCooperativeMatrix2FeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeMatrix2FeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrix2FeaturesNV( Bool32 cooperativeMatrixWorkgroupScope_ = {}, + Bool32 cooperativeMatrixFlexibleDimensions_ = {}, + Bool32 cooperativeMatrixReductions_ = {}, + Bool32 cooperativeMatrixConversions_ = {}, + Bool32 cooperativeMatrixPerElementOperations_ = {}, + Bool32 cooperativeMatrixTensorAddressing_ = {}, + Bool32 cooperativeMatrixBlockLoads_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cooperativeMatrixWorkgroupScope{ cooperativeMatrixWorkgroupScope_ } + , cooperativeMatrixFlexibleDimensions{ cooperativeMatrixFlexibleDimensions_ } + , cooperativeMatrixReductions{ cooperativeMatrixReductions_ } + , cooperativeMatrixConversions{ cooperativeMatrixConversions_ } + , cooperativeMatrixPerElementOperations{ cooperativeMatrixPerElementOperations_ } + , cooperativeMatrixTensorAddressing{ cooperativeMatrixTensorAddressing_ } + , cooperativeMatrixBlockLoads{ cooperativeMatrixBlockLoads_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrix2FeaturesNV( PhysicalDeviceCooperativeMatrix2FeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrix2FeaturesNV( VkPhysicalDeviceCooperativeMatrix2FeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeMatrix2FeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCooperativeMatrix2FeaturesNV & operator=( PhysicalDeviceCooperativeMatrix2FeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeMatrix2FeaturesNV & operator=( VkPhysicalDeviceCooperativeMatrix2FeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV & setCooperativeMatrixWorkgroupScope( Bool32 cooperativeMatrixWorkgroupScope_ ) & + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixWorkgroupScope = cooperativeMatrixWorkgroupScope_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV && setCooperativeMatrixWorkgroupScope( Bool32 cooperativeMatrixWorkgroupScope_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixWorkgroupScope = cooperativeMatrixWorkgroupScope_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV & setCooperativeMatrixFlexibleDimensions( Bool32 cooperativeMatrixFlexibleDimensions_ ) & + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixFlexibleDimensions = cooperativeMatrixFlexibleDimensions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV && + setCooperativeMatrixFlexibleDimensions( Bool32 cooperativeMatrixFlexibleDimensions_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixFlexibleDimensions = cooperativeMatrixFlexibleDimensions_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV & setCooperativeMatrixReductions( Bool32 cooperativeMatrixReductions_ ) & + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixReductions = cooperativeMatrixReductions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV && setCooperativeMatrixReductions( Bool32 cooperativeMatrixReductions_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixReductions = cooperativeMatrixReductions_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV & setCooperativeMatrixConversions( Bool32 cooperativeMatrixConversions_ ) & + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixConversions = cooperativeMatrixConversions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV && setCooperativeMatrixConversions( Bool32 cooperativeMatrixConversions_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixConversions = cooperativeMatrixConversions_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV & + setCooperativeMatrixPerElementOperations( Bool32 cooperativeMatrixPerElementOperations_ ) & + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixPerElementOperations = cooperativeMatrixPerElementOperations_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV && + setCooperativeMatrixPerElementOperations( Bool32 cooperativeMatrixPerElementOperations_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixPerElementOperations = cooperativeMatrixPerElementOperations_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV & setCooperativeMatrixTensorAddressing( Bool32 cooperativeMatrixTensorAddressing_ ) & + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixTensorAddressing = cooperativeMatrixTensorAddressing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV && setCooperativeMatrixTensorAddressing( Bool32 cooperativeMatrixTensorAddressing_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixTensorAddressing = cooperativeMatrixTensorAddressing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV & setCooperativeMatrixBlockLoads( Bool32 cooperativeMatrixBlockLoads_ ) & + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixBlockLoads = cooperativeMatrixBlockLoads_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrix2FeaturesNV && setCooperativeMatrixBlockLoads( Bool32 cooperativeMatrixBlockLoads_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixBlockLoads = cooperativeMatrixBlockLoads_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCooperativeMatrix2FeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrix2FeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrix2FeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrix2FeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + cooperativeMatrixWorkgroupScope, + cooperativeMatrixFlexibleDimensions, + cooperativeMatrixReductions, + cooperativeMatrixConversions, + cooperativeMatrixPerElementOperations, + cooperativeMatrixTensorAddressing, + cooperativeMatrixBlockLoads ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeMatrix2FeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeMatrix2FeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrixWorkgroupScope == rhs.cooperativeMatrixWorkgroupScope ) && + ( cooperativeMatrixFlexibleDimensions == rhs.cooperativeMatrixFlexibleDimensions ) && + ( cooperativeMatrixReductions == rhs.cooperativeMatrixReductions ) && ( cooperativeMatrixConversions == rhs.cooperativeMatrixConversions ) && + ( cooperativeMatrixPerElementOperations == rhs.cooperativeMatrixPerElementOperations ) && + ( cooperativeMatrixTensorAddressing == rhs.cooperativeMatrixTensorAddressing ) && + ( cooperativeMatrixBlockLoads == rhs.cooperativeMatrixBlockLoads ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeMatrix2FeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrix2FeaturesNV; + void * pNext = {}; + Bool32 cooperativeMatrixWorkgroupScope = {}; + Bool32 cooperativeMatrixFlexibleDimensions = {}; + Bool32 cooperativeMatrixReductions = {}; + Bool32 cooperativeMatrixConversions = {}; + Bool32 cooperativeMatrixPerElementOperations = {}; + Bool32 cooperativeMatrixTensorAddressing = {}; + Bool32 cooperativeMatrixBlockLoads = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrix2FeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrix2FeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceCooperativeMatrix2PropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrix2PropertiesNV.html + struct PhysicalDeviceCooperativeMatrix2PropertiesNV + { + using NativeType = VkPhysicalDeviceCooperativeMatrix2PropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeMatrix2PropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrix2PropertiesNV( uint32_t cooperativeMatrixWorkgroupScopeMaxWorkgroupSize_ = {}, + uint32_t cooperativeMatrixFlexibleDimensionsMaxDimension_ = {}, + uint32_t cooperativeMatrixWorkgroupScopeReservedSharedMemory_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cooperativeMatrixWorkgroupScopeMaxWorkgroupSize{ cooperativeMatrixWorkgroupScopeMaxWorkgroupSize_ } + , cooperativeMatrixFlexibleDimensionsMaxDimension{ cooperativeMatrixFlexibleDimensionsMaxDimension_ } + , cooperativeMatrixWorkgroupScopeReservedSharedMemory{ cooperativeMatrixWorkgroupScopeReservedSharedMemory_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrix2PropertiesNV( PhysicalDeviceCooperativeMatrix2PropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrix2PropertiesNV( VkPhysicalDeviceCooperativeMatrix2PropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeMatrix2PropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCooperativeMatrix2PropertiesNV & operator=( PhysicalDeviceCooperativeMatrix2PropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeMatrix2PropertiesNV & operator=( VkPhysicalDeviceCooperativeMatrix2PropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceCooperativeMatrix2PropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrix2PropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrix2PropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrix2PropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + cooperativeMatrixWorkgroupScopeMaxWorkgroupSize, + cooperativeMatrixFlexibleDimensionsMaxDimension, + cooperativeMatrixWorkgroupScopeReservedSharedMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeMatrix2PropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeMatrix2PropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( cooperativeMatrixWorkgroupScopeMaxWorkgroupSize == rhs.cooperativeMatrixWorkgroupScopeMaxWorkgroupSize ) && + ( cooperativeMatrixFlexibleDimensionsMaxDimension == rhs.cooperativeMatrixFlexibleDimensionsMaxDimension ) && + ( cooperativeMatrixWorkgroupScopeReservedSharedMemory == rhs.cooperativeMatrixWorkgroupScopeReservedSharedMemory ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeMatrix2PropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrix2PropertiesNV; + void * pNext = {}; + uint32_t cooperativeMatrixWorkgroupScopeMaxWorkgroupSize = {}; + uint32_t cooperativeMatrixFlexibleDimensionsMaxDimension = {}; + uint32_t cooperativeMatrixWorkgroupScopeReservedSharedMemory = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrix2PropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrix2PropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM.html + struct PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM + { + using NativeType = VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeMatrixConversionFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM( Bool32 cooperativeMatrixConversion_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cooperativeMatrixConversion{ cooperativeMatrixConversion_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM( PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM( VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM & + operator=( PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM & operator=( VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM & setCooperativeMatrixConversion( Bool32 cooperativeMatrixConversion_ ) & + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixConversion = cooperativeMatrixConversion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM && setCooperativeMatrixConversion( Bool32 cooperativeMatrixConversion_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixConversion = cooperativeMatrixConversion_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixConversionFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cooperativeMatrixConversion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrixConversion == rhs.cooperativeMatrixConversion ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixConversionFeaturesQCOM; + void * pNext = {}; + Bool32 cooperativeMatrixConversion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesKHR.html + struct PhysicalDeviceCooperativeMatrixFeaturesKHR + { + using NativeType = VkPhysicalDeviceCooperativeMatrixFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesKHR( Bool32 cooperativeMatrix_ = {}, + Bool32 cooperativeMatrixRobustBufferAccess_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cooperativeMatrix{ cooperativeMatrix_ } + , cooperativeMatrixRobustBufferAccess{ cooperativeMatrixRobustBufferAccess_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesKHR( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrixFeaturesKHR( VkPhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeMatrixFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCooperativeMatrixFeaturesKHR & operator=( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeMatrixFeaturesKHR & operator=( VkPhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR & setCooperativeMatrix( Bool32 cooperativeMatrix_ ) & VULKAN_HPP_NOEXCEPT + { + cooperativeMatrix = cooperativeMatrix_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR && setCooperativeMatrix( Bool32 cooperativeMatrix_ ) && VULKAN_HPP_NOEXCEPT + { + cooperativeMatrix = cooperativeMatrix_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR & setCooperativeMatrixRobustBufferAccess( Bool32 cooperativeMatrixRobustBufferAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesKHR && + setCooperativeMatrixRobustBufferAccess( Bool32 cooperativeMatrixRobustBufferAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cooperativeMatrix, cooperativeMatrixRobustBufferAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeMatrixFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrix == rhs.cooperativeMatrix ) && + ( cooperativeMatrixRobustBufferAccess == rhs.cooperativeMatrixRobustBufferAccess ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeMatrixFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesKHR; + void * pNext = {}; + Bool32 cooperativeMatrix = {}; + Bool32 cooperativeMatrixRobustBufferAccess = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceCooperativeMatrixFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixFeaturesNV.html + struct PhysicalDeviceCooperativeMatrixFeaturesNV + { + using NativeType = VkPhysicalDeviceCooperativeMatrixFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV( Bool32 cooperativeMatrix_ = {}, + Bool32 cooperativeMatrixRobustBufferAccess_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cooperativeMatrix{ cooperativeMatrix_ } + , cooperativeMatrixRobustBufferAccess{ cooperativeMatrixRobustBufferAccess_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrixFeaturesNV( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeMatrixFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & setCooperativeMatrix( Bool32 cooperativeMatrix_ ) & VULKAN_HPP_NOEXCEPT + { + cooperativeMatrix = cooperativeMatrix_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV && setCooperativeMatrix( Bool32 cooperativeMatrix_ ) && VULKAN_HPP_NOEXCEPT + { + cooperativeMatrix = cooperativeMatrix_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & setCooperativeMatrixRobustBufferAccess( Bool32 cooperativeMatrixRobustBufferAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV && + setCooperativeMatrixRobustBufferAccess( Bool32 cooperativeMatrixRobustBufferAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCooperativeMatrixFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cooperativeMatrix, cooperativeMatrixRobustBufferAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeMatrixFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrix == rhs.cooperativeMatrix ) && + ( cooperativeMatrixRobustBufferAccess == rhs.cooperativeMatrixRobustBufferAccess ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV; + void * pNext = {}; + Bool32 cooperativeMatrix = {}; + Bool32 cooperativeMatrixRobustBufferAccess = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesKHR.html + struct PhysicalDeviceCooperativeMatrixPropertiesKHR + { + using NativeType = VkPhysicalDeviceCooperativeMatrixPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesKHR( ShaderStageFlags cooperativeMatrixSupportedStages_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cooperativeMatrixSupportedStages{ cooperativeMatrixSupportedStages_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesKHR( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrixPropertiesKHR( VkPhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeMatrixPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCooperativeMatrixPropertiesKHR & operator=( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeMatrixPropertiesKHR & operator=( VkPhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cooperativeMatrixSupportedStages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeMatrixPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrixSupportedStages == rhs.cooperativeMatrixSupportedStages ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeMatrixPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesKHR; + void * pNext = {}; + ShaderStageFlags cooperativeMatrixSupportedStages = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixPropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceCooperativeMatrixPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeMatrixPropertiesNV.html + struct PhysicalDeviceCooperativeMatrixPropertiesNV + { + using NativeType = VkPhysicalDeviceCooperativeMatrixPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV( ShaderStageFlags cooperativeMatrixSupportedStages_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cooperativeMatrixSupportedStages{ cooperativeMatrixSupportedStages_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeMatrixPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCooperativeMatrixPropertiesNV & operator=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeMatrixPropertiesNV & operator=( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeMatrixPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cooperativeMatrixSupportedStages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeMatrixPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeMatrixSupportedStages == rhs.cooperativeMatrixSupportedStages ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV; + void * pNext = {}; + ShaderStageFlags cooperativeMatrixSupportedStages = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeMatrixPropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceCooperativeVectorFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorFeaturesNV.html + struct PhysicalDeviceCooperativeVectorFeaturesNV + { + using NativeType = VkPhysicalDeviceCooperativeVectorFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeVectorFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeVectorFeaturesNV( Bool32 cooperativeVector_ = {}, + Bool32 cooperativeVectorTraining_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cooperativeVector{ cooperativeVector_ } + , cooperativeVectorTraining{ cooperativeVectorTraining_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeVectorFeaturesNV( PhysicalDeviceCooperativeVectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeVectorFeaturesNV( VkPhysicalDeviceCooperativeVectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeVectorFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCooperativeVectorFeaturesNV & operator=( PhysicalDeviceCooperativeVectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeVectorFeaturesNV & operator=( VkPhysicalDeviceCooperativeVectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeVectorFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeVectorFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeVectorFeaturesNV & setCooperativeVector( Bool32 cooperativeVector_ ) & VULKAN_HPP_NOEXCEPT + { + cooperativeVector = cooperativeVector_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeVectorFeaturesNV && setCooperativeVector( Bool32 cooperativeVector_ ) && VULKAN_HPP_NOEXCEPT + { + cooperativeVector = cooperativeVector_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeVectorFeaturesNV & setCooperativeVectorTraining( Bool32 cooperativeVectorTraining_ ) & VULKAN_HPP_NOEXCEPT + { + cooperativeVectorTraining = cooperativeVectorTraining_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeVectorFeaturesNV && setCooperativeVectorTraining( Bool32 cooperativeVectorTraining_ ) && + VULKAN_HPP_NOEXCEPT + { + cooperativeVectorTraining = cooperativeVectorTraining_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCooperativeVectorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeVectorFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeVectorFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeVectorFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cooperativeVector, cooperativeVectorTraining ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeVectorFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeVectorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeVector == rhs.cooperativeVector ) && + ( cooperativeVectorTraining == rhs.cooperativeVectorTraining ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeVectorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCooperativeVectorFeaturesNV; + void * pNext = {}; + Bool32 cooperativeVector = {}; + Bool32 cooperativeVectorTraining = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeVectorFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeVectorFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceCooperativeVectorPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCooperativeVectorPropertiesNV.html + struct PhysicalDeviceCooperativeVectorPropertiesNV + { + using NativeType = VkPhysicalDeviceCooperativeVectorPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeVectorPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeVectorPropertiesNV( ShaderStageFlags cooperativeVectorSupportedStages_ = {}, + Bool32 cooperativeVectorTrainingFloat16Accumulation_ = {}, + Bool32 cooperativeVectorTrainingFloat32Accumulation_ = {}, + uint32_t maxCooperativeVectorComponents_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cooperativeVectorSupportedStages{ cooperativeVectorSupportedStages_ } + , cooperativeVectorTrainingFloat16Accumulation{ cooperativeVectorTrainingFloat16Accumulation_ } + , cooperativeVectorTrainingFloat32Accumulation{ cooperativeVectorTrainingFloat32Accumulation_ } + , maxCooperativeVectorComponents{ maxCooperativeVectorComponents_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeVectorPropertiesNV( PhysicalDeviceCooperativeVectorPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCooperativeVectorPropertiesNV( VkPhysicalDeviceCooperativeVectorPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCooperativeVectorPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCooperativeVectorPropertiesNV & operator=( PhysicalDeviceCooperativeVectorPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCooperativeVectorPropertiesNV & operator=( VkPhysicalDeviceCooperativeVectorPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceCooperativeVectorPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeVectorPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeVectorPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCooperativeVectorPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + cooperativeVectorSupportedStages, + cooperativeVectorTrainingFloat16Accumulation, + cooperativeVectorTrainingFloat32Accumulation, + maxCooperativeVectorComponents ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCooperativeVectorPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCooperativeVectorPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cooperativeVectorSupportedStages == rhs.cooperativeVectorSupportedStages ) && + ( cooperativeVectorTrainingFloat16Accumulation == rhs.cooperativeVectorTrainingFloat16Accumulation ) && + ( cooperativeVectorTrainingFloat32Accumulation == rhs.cooperativeVectorTrainingFloat32Accumulation ) && + ( maxCooperativeVectorComponents == rhs.maxCooperativeVectorComponents ); +# endif + } + + bool operator!=( PhysicalDeviceCooperativeVectorPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCooperativeVectorPropertiesNV; + void * pNext = {}; + ShaderStageFlags cooperativeVectorSupportedStages = {}; + Bool32 cooperativeVectorTrainingFloat16Accumulation = {}; + Bool32 cooperativeVectorTrainingFloat32Accumulation = {}; + uint32_t maxCooperativeVectorComponents = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeVectorPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCooperativeVectorPropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR.html + struct PhysicalDeviceCopyMemoryIndirectFeaturesKHR + { + using NativeType = VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectFeaturesKHR( Bool32 indirectMemoryCopy_ = {}, + Bool32 indirectMemoryToImageCopy_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , indirectMemoryCopy{ indirectMemoryCopy_ } + , indirectMemoryToImageCopy{ indirectMemoryToImageCopy_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectFeaturesKHR( PhysicalDeviceCopyMemoryIndirectFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCopyMemoryIndirectFeaturesKHR( VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCopyMemoryIndirectFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCopyMemoryIndirectFeaturesKHR & operator=( PhysicalDeviceCopyMemoryIndirectFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCopyMemoryIndirectFeaturesKHR & operator=( VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesKHR & setIndirectMemoryCopy( Bool32 indirectMemoryCopy_ ) & VULKAN_HPP_NOEXCEPT + { + indirectMemoryCopy = indirectMemoryCopy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesKHR && setIndirectMemoryCopy( Bool32 indirectMemoryCopy_ ) && VULKAN_HPP_NOEXCEPT + { + indirectMemoryCopy = indirectMemoryCopy_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesKHR & setIndirectMemoryToImageCopy( Bool32 indirectMemoryToImageCopy_ ) & + VULKAN_HPP_NOEXCEPT + { + indirectMemoryToImageCopy = indirectMemoryToImageCopy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesKHR && setIndirectMemoryToImageCopy( Bool32 indirectMemoryToImageCopy_ ) && + VULKAN_HPP_NOEXCEPT + { + indirectMemoryToImageCopy = indirectMemoryToImageCopy_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, indirectMemoryCopy, indirectMemoryToImageCopy ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCopyMemoryIndirectFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceCopyMemoryIndirectFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( indirectMemoryCopy == rhs.indirectMemoryCopy ) && + ( indirectMemoryToImageCopy == rhs.indirectMemoryToImageCopy ); +# endif + } + + bool operator!=( PhysicalDeviceCopyMemoryIndirectFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesKHR; + void * pNext = {}; + Bool32 indirectMemoryCopy = {}; + Bool32 indirectMemoryToImageCopy = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCopyMemoryIndirectFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCopyMemoryIndirectFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectFeaturesNV.html + struct PhysicalDeviceCopyMemoryIndirectFeaturesNV + { + using NativeType = VkPhysicalDeviceCopyMemoryIndirectFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectFeaturesNV( Bool32 indirectCopy_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , indirectCopy{ indirectCopy_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectFeaturesNV( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCopyMemoryIndirectFeaturesNV( VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCopyMemoryIndirectFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCopyMemoryIndirectFeaturesNV & operator=( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCopyMemoryIndirectFeaturesNV & operator=( VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesNV & setIndirectCopy( Bool32 indirectCopy_ ) & VULKAN_HPP_NOEXCEPT + { + indirectCopy = indirectCopy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCopyMemoryIndirectFeaturesNV && setIndirectCopy( Bool32 indirectCopy_ ) && VULKAN_HPP_NOEXCEPT + { + indirectCopy = indirectCopy_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCopyMemoryIndirectFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, indirectCopy ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( indirectCopy == rhs.indirectCopy ); +# endif + } + + bool operator!=( PhysicalDeviceCopyMemoryIndirectFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesNV; + void * pNext = {}; + Bool32 indirectCopy = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCopyMemoryIndirectFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCopyMemoryIndirectFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR.html + struct PhysicalDeviceCopyMemoryIndirectPropertiesKHR + { + using NativeType = VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCopyMemoryIndirectPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCopyMemoryIndirectPropertiesKHR( QueueFlags supportedQueues_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , supportedQueues{ supportedQueues_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceCopyMemoryIndirectPropertiesKHR( PhysicalDeviceCopyMemoryIndirectPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCopyMemoryIndirectPropertiesKHR( VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCopyMemoryIndirectPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCopyMemoryIndirectPropertiesKHR & operator=( PhysicalDeviceCopyMemoryIndirectPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCopyMemoryIndirectPropertiesKHR & operator=( VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supportedQueues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCopyMemoryIndirectPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceCopyMemoryIndirectPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedQueues == rhs.supportedQueues ); +# endif + } + + bool operator!=( PhysicalDeviceCopyMemoryIndirectPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCopyMemoryIndirectPropertiesKHR; + void * pNext = {}; + QueueFlags supportedQueues = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCopyMemoryIndirectPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCopyMemoryIndirectPropertiesKHR; + }; + + using PhysicalDeviceCopyMemoryIndirectPropertiesNV = PhysicalDeviceCopyMemoryIndirectPropertiesKHR; + + // wrapper struct for struct VkPhysicalDeviceCornerSampledImageFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCornerSampledImageFeaturesNV.html + struct PhysicalDeviceCornerSampledImageFeaturesNV + { + using NativeType = VkPhysicalDeviceCornerSampledImageFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV( Bool32 cornerSampledImage_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cornerSampledImage{ cornerSampledImage_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCornerSampledImageFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCornerSampledImageFeaturesNV & operator=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCornerSampledImageFeaturesNV & operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV & setCornerSampledImage( Bool32 cornerSampledImage_ ) & VULKAN_HPP_NOEXCEPT + { + cornerSampledImage = cornerSampledImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV && setCornerSampledImage( Bool32 cornerSampledImage_ ) && VULKAN_HPP_NOEXCEPT + { + cornerSampledImage = cornerSampledImage_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCornerSampledImageFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCornerSampledImageFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCornerSampledImageFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCornerSampledImageFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cornerSampledImage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCornerSampledImageFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cornerSampledImage == rhs.cornerSampledImage ); +# endif + } + + bool operator!=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV; + void * pNext = {}; + Bool32 cornerSampledImage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCornerSampledImageFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCornerSampledImageFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceCoverageReductionModeFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCoverageReductionModeFeaturesNV.html + struct PhysicalDeviceCoverageReductionModeFeaturesNV + { + using NativeType = VkPhysicalDeviceCoverageReductionModeFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCoverageReductionModeFeaturesNV( Bool32 coverageReductionMode_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , coverageReductionMode{ coverageReductionMode_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceCoverageReductionModeFeaturesNV( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCoverageReductionModeFeaturesNV( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCoverageReductionModeFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV & setCoverageReductionMode( Bool32 coverageReductionMode_ ) & VULKAN_HPP_NOEXCEPT + { + coverageReductionMode = coverageReductionMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV && setCoverageReductionMode( Bool32 coverageReductionMode_ ) && VULKAN_HPP_NOEXCEPT + { + coverageReductionMode = coverageReductionMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCoverageReductionModeFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCoverageReductionModeFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCoverageReductionModeFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCoverageReductionModeFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, coverageReductionMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCoverageReductionModeFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( coverageReductionMode == rhs.coverageReductionMode ); +# endif + } + + bool operator!=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV; + void * pNext = {}; + Bool32 coverageReductionMode = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCoverageReductionModeFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCoverageReductionModeFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceCubicClampFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicClampFeaturesQCOM.html + struct PhysicalDeviceCubicClampFeaturesQCOM + { + using NativeType = VkPhysicalDeviceCubicClampFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCubicClampFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicClampFeaturesQCOM( Bool32 cubicRangeClamp_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cubicRangeClamp{ cubicRangeClamp_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicClampFeaturesQCOM( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCubicClampFeaturesQCOM( VkPhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCubicClampFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCubicClampFeaturesQCOM & operator=( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCubicClampFeaturesQCOM & operator=( VkPhysicalDeviceCubicClampFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicClampFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicClampFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicClampFeaturesQCOM & setCubicRangeClamp( Bool32 cubicRangeClamp_ ) & VULKAN_HPP_NOEXCEPT + { + cubicRangeClamp = cubicRangeClamp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicClampFeaturesQCOM && setCubicRangeClamp( Bool32 cubicRangeClamp_ ) && VULKAN_HPP_NOEXCEPT + { + cubicRangeClamp = cubicRangeClamp_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCubicClampFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCubicClampFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCubicClampFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCubicClampFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cubicRangeClamp ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCubicClampFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cubicRangeClamp == rhs.cubicRangeClamp ); +# endif + } + + bool operator!=( PhysicalDeviceCubicClampFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCubicClampFeaturesQCOM; + void * pNext = {}; + Bool32 cubicRangeClamp = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCubicClampFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCubicClampFeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceCubicWeightsFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCubicWeightsFeaturesQCOM.html + struct PhysicalDeviceCubicWeightsFeaturesQCOM + { + using NativeType = VkPhysicalDeviceCubicWeightsFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCubicWeightsFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicWeightsFeaturesQCOM( Bool32 selectableCubicWeights_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , selectableCubicWeights{ selectableCubicWeights_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCubicWeightsFeaturesQCOM( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCubicWeightsFeaturesQCOM( VkPhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCubicWeightsFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCubicWeightsFeaturesQCOM & operator=( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCubicWeightsFeaturesQCOM & operator=( VkPhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicWeightsFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicWeightsFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicWeightsFeaturesQCOM & setSelectableCubicWeights( Bool32 selectableCubicWeights_ ) & VULKAN_HPP_NOEXCEPT + { + selectableCubicWeights = selectableCubicWeights_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCubicWeightsFeaturesQCOM && setSelectableCubicWeights( Bool32 selectableCubicWeights_ ) && VULKAN_HPP_NOEXCEPT + { + selectableCubicWeights = selectableCubicWeights_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCubicWeightsFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCubicWeightsFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCubicWeightsFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCubicWeightsFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, selectableCubicWeights ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCubicWeightsFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( selectableCubicWeights == rhs.selectableCubicWeights ); +# endif + } + + bool operator!=( PhysicalDeviceCubicWeightsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCubicWeightsFeaturesQCOM; + void * pNext = {}; + Bool32 selectableCubicWeights = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCubicWeightsFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCubicWeightsFeaturesQCOM; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkPhysicalDeviceCudaKernelLaunchFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchFeaturesNV.html + struct PhysicalDeviceCudaKernelLaunchFeaturesNV + { + using NativeType = VkPhysicalDeviceCudaKernelLaunchFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchFeaturesNV( Bool32 cudaKernelLaunchFeatures_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cudaKernelLaunchFeatures{ cudaKernelLaunchFeatures_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchFeaturesNV( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCudaKernelLaunchFeaturesNV( VkPhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCudaKernelLaunchFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCudaKernelLaunchFeaturesNV & operator=( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCudaKernelLaunchFeaturesNV & operator=( VkPhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCudaKernelLaunchFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCudaKernelLaunchFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCudaKernelLaunchFeaturesNV & setCudaKernelLaunchFeatures( Bool32 cudaKernelLaunchFeatures_ ) & VULKAN_HPP_NOEXCEPT + { + cudaKernelLaunchFeatures = cudaKernelLaunchFeatures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCudaKernelLaunchFeaturesNV && setCudaKernelLaunchFeatures( Bool32 cudaKernelLaunchFeatures_ ) && VULKAN_HPP_NOEXCEPT + { + cudaKernelLaunchFeatures = cudaKernelLaunchFeatures_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCudaKernelLaunchFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cudaKernelLaunchFeatures ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCudaKernelLaunchFeaturesNV const & ) const = default; +# else + bool operator==( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cudaKernelLaunchFeatures == rhs.cudaKernelLaunchFeatures ); +# endif + } + + bool operator!=( PhysicalDeviceCudaKernelLaunchFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV; + void * pNext = {}; + Bool32 cudaKernelLaunchFeatures = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCudaKernelLaunchFeaturesNV; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCudaKernelLaunchFeaturesNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkPhysicalDeviceCudaKernelLaunchPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCudaKernelLaunchPropertiesNV.html + struct PhysicalDeviceCudaKernelLaunchPropertiesNV + { + using NativeType = VkPhysicalDeviceCudaKernelLaunchPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchPropertiesNV( uint32_t computeCapabilityMinor_ = {}, + uint32_t computeCapabilityMajor_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , computeCapabilityMinor{ computeCapabilityMinor_ } + , computeCapabilityMajor{ computeCapabilityMajor_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCudaKernelLaunchPropertiesNV( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCudaKernelLaunchPropertiesNV( VkPhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCudaKernelLaunchPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCudaKernelLaunchPropertiesNV & operator=( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCudaKernelLaunchPropertiesNV & operator=( VkPhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCudaKernelLaunchPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, computeCapabilityMinor, computeCapabilityMajor ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCudaKernelLaunchPropertiesNV const & ) const = default; +# else + bool operator==( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( computeCapabilityMinor == rhs.computeCapabilityMinor ) && + ( computeCapabilityMajor == rhs.computeCapabilityMajor ); +# endif + } + + bool operator!=( PhysicalDeviceCudaKernelLaunchPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV; + void * pNext = {}; + uint32_t computeCapabilityMinor = {}; + uint32_t computeCapabilityMajor = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCudaKernelLaunchPropertiesNV; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCudaKernelLaunchPropertiesNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkPhysicalDeviceCustomBorderColorFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorFeaturesEXT.html + struct PhysicalDeviceCustomBorderColorFeaturesEXT + { + using NativeType = VkPhysicalDeviceCustomBorderColorFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT( Bool32 customBorderColors_ = {}, + Bool32 customBorderColorWithoutFormat_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , customBorderColors{ customBorderColors_ } + , customBorderColorWithoutFormat{ customBorderColorWithoutFormat_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCustomBorderColorFeaturesEXT( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCustomBorderColorFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setCustomBorderColors( Bool32 customBorderColors_ ) & VULKAN_HPP_NOEXCEPT + { + customBorderColors = customBorderColors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT && setCustomBorderColors( Bool32 customBorderColors_ ) && VULKAN_HPP_NOEXCEPT + { + customBorderColors = customBorderColors_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & setCustomBorderColorWithoutFormat( Bool32 customBorderColorWithoutFormat_ ) & + VULKAN_HPP_NOEXCEPT + { + customBorderColorWithoutFormat = customBorderColorWithoutFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT && setCustomBorderColorWithoutFormat( Bool32 customBorderColorWithoutFormat_ ) && + VULKAN_HPP_NOEXCEPT + { + customBorderColorWithoutFormat = customBorderColorWithoutFormat_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCustomBorderColorFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCustomBorderColorFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCustomBorderColorFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, customBorderColors, customBorderColorWithoutFormat ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCustomBorderColorFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( customBorderColors == rhs.customBorderColors ) && + ( customBorderColorWithoutFormat == rhs.customBorderColorWithoutFormat ); +# endif + } + + bool operator!=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT; + void * pNext = {}; + Bool32 customBorderColors = {}; + Bool32 customBorderColorWithoutFormat = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCustomBorderColorFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCustomBorderColorFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceCustomBorderColorPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomBorderColorPropertiesEXT.html + struct PhysicalDeviceCustomBorderColorPropertiesEXT + { + using NativeType = VkPhysicalDeviceCustomBorderColorPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT( uint32_t maxCustomBorderColorSamplers_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxCustomBorderColorSamplers{ maxCustomBorderColorSamplers_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCustomBorderColorPropertiesEXT( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCustomBorderColorPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCustomBorderColorPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCustomBorderColorPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCustomBorderColorPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxCustomBorderColorSamplers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCustomBorderColorPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxCustomBorderColorSamplers == rhs.maxCustomBorderColorSamplers ); +# endif + } + + bool operator!=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT; + void * pNext = {}; + uint32_t maxCustomBorderColorSamplers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCustomBorderColorPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCustomBorderColorPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceCustomResolveFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceCustomResolveFeaturesEXT.html + struct PhysicalDeviceCustomResolveFeaturesEXT + { + using NativeType = VkPhysicalDeviceCustomResolveFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCustomResolveFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomResolveFeaturesEXT( Bool32 customResolve_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , customResolve{ customResolve_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomResolveFeaturesEXT( PhysicalDeviceCustomResolveFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceCustomResolveFeaturesEXT( VkPhysicalDeviceCustomResolveFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceCustomResolveFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceCustomResolveFeaturesEXT & operator=( PhysicalDeviceCustomResolveFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceCustomResolveFeaturesEXT & operator=( VkPhysicalDeviceCustomResolveFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomResolveFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomResolveFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomResolveFeaturesEXT & setCustomResolve( Bool32 customResolve_ ) & VULKAN_HPP_NOEXCEPT + { + customResolve = customResolve_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomResolveFeaturesEXT && setCustomResolve( Bool32 customResolve_ ) && VULKAN_HPP_NOEXCEPT + { + customResolve = customResolve_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceCustomResolveFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCustomResolveFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCustomResolveFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceCustomResolveFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, customResolve ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceCustomResolveFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceCustomResolveFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( customResolve == rhs.customResolve ); +# endif + } + + bool operator!=( PhysicalDeviceCustomResolveFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceCustomResolveFeaturesEXT; + void * pNext = {}; + Bool32 customResolve = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceCustomResolveFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceCustomResolveFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDataGraphFeaturesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphFeaturesARM.html + struct PhysicalDeviceDataGraphFeaturesARM + { + using NativeType = VkPhysicalDeviceDataGraphFeaturesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDataGraphFeaturesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDataGraphFeaturesARM( Bool32 dataGraph_ = {}, + Bool32 dataGraphUpdateAfterBind_ = {}, + Bool32 dataGraphSpecializationConstants_ = {}, + Bool32 dataGraphDescriptorBuffer_ = {}, + Bool32 dataGraphShaderModule_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dataGraph{ dataGraph_ } + , dataGraphUpdateAfterBind{ dataGraphUpdateAfterBind_ } + , dataGraphSpecializationConstants{ dataGraphSpecializationConstants_ } + , dataGraphDescriptorBuffer{ dataGraphDescriptorBuffer_ } + , dataGraphShaderModule{ dataGraphShaderModule_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDataGraphFeaturesARM( PhysicalDeviceDataGraphFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDataGraphFeaturesARM( VkPhysicalDeviceDataGraphFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDataGraphFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDataGraphFeaturesARM & operator=( PhysicalDeviceDataGraphFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDataGraphFeaturesARM & operator=( VkPhysicalDeviceDataGraphFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM & setDataGraph( Bool32 dataGraph_ ) & VULKAN_HPP_NOEXCEPT + { + dataGraph = dataGraph_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM && setDataGraph( Bool32 dataGraph_ ) && VULKAN_HPP_NOEXCEPT + { + dataGraph = dataGraph_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM & setDataGraphUpdateAfterBind( Bool32 dataGraphUpdateAfterBind_ ) & VULKAN_HPP_NOEXCEPT + { + dataGraphUpdateAfterBind = dataGraphUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM && setDataGraphUpdateAfterBind( Bool32 dataGraphUpdateAfterBind_ ) && VULKAN_HPP_NOEXCEPT + { + dataGraphUpdateAfterBind = dataGraphUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM & setDataGraphSpecializationConstants( Bool32 dataGraphSpecializationConstants_ ) & + VULKAN_HPP_NOEXCEPT + { + dataGraphSpecializationConstants = dataGraphSpecializationConstants_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM && setDataGraphSpecializationConstants( Bool32 dataGraphSpecializationConstants_ ) && + VULKAN_HPP_NOEXCEPT + { + dataGraphSpecializationConstants = dataGraphSpecializationConstants_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM & setDataGraphDescriptorBuffer( Bool32 dataGraphDescriptorBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + dataGraphDescriptorBuffer = dataGraphDescriptorBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM && setDataGraphDescriptorBuffer( Bool32 dataGraphDescriptorBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + dataGraphDescriptorBuffer = dataGraphDescriptorBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM & setDataGraphShaderModule( Bool32 dataGraphShaderModule_ ) & VULKAN_HPP_NOEXCEPT + { + dataGraphShaderModule = dataGraphShaderModule_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphFeaturesARM && setDataGraphShaderModule( Bool32 dataGraphShaderModule_ ) && VULKAN_HPP_NOEXCEPT + { + dataGraphShaderModule = dataGraphShaderModule_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDataGraphFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphFeaturesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphFeaturesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dataGraph, dataGraphUpdateAfterBind, dataGraphSpecializationConstants, dataGraphDescriptorBuffer, dataGraphShaderModule ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDataGraphFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceDataGraphFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataGraph == rhs.dataGraph ) && + ( dataGraphUpdateAfterBind == rhs.dataGraphUpdateAfterBind ) && ( dataGraphSpecializationConstants == rhs.dataGraphSpecializationConstants ) && + ( dataGraphDescriptorBuffer == rhs.dataGraphDescriptorBuffer ) && ( dataGraphShaderModule == rhs.dataGraphShaderModule ); +# endif + } + + bool operator!=( PhysicalDeviceDataGraphFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDataGraphFeaturesARM; + void * pNext = {}; + Bool32 dataGraph = {}; + Bool32 dataGraphUpdateAfterBind = {}; + Bool32 dataGraphSpecializationConstants = {}; + Bool32 dataGraphDescriptorBuffer = {}; + Bool32 dataGraphShaderModule = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDataGraphFeaturesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDataGraphFeaturesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceDataGraphModelFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDataGraphModelFeaturesQCOM.html + struct PhysicalDeviceDataGraphModelFeaturesQCOM + { + using NativeType = VkPhysicalDeviceDataGraphModelFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDataGraphModelFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDataGraphModelFeaturesQCOM( Bool32 dataGraphModel_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dataGraphModel{ dataGraphModel_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDataGraphModelFeaturesQCOM( PhysicalDeviceDataGraphModelFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDataGraphModelFeaturesQCOM( VkPhysicalDeviceDataGraphModelFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDataGraphModelFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDataGraphModelFeaturesQCOM & operator=( PhysicalDeviceDataGraphModelFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDataGraphModelFeaturesQCOM & operator=( VkPhysicalDeviceDataGraphModelFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphModelFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphModelFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphModelFeaturesQCOM & setDataGraphModel( Bool32 dataGraphModel_ ) & VULKAN_HPP_NOEXCEPT + { + dataGraphModel = dataGraphModel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDataGraphModelFeaturesQCOM && setDataGraphModel( Bool32 dataGraphModel_ ) && VULKAN_HPP_NOEXCEPT + { + dataGraphModel = dataGraphModel_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDataGraphModelFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphModelFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphModelFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDataGraphModelFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dataGraphModel ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDataGraphModelFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceDataGraphModelFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataGraphModel == rhs.dataGraphModel ); +# endif + } + + bool operator!=( PhysicalDeviceDataGraphModelFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDataGraphModelFeaturesQCOM; + void * pNext = {}; + Bool32 dataGraphModel = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDataGraphModelFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDataGraphModelFeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV.html + struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + { + using NativeType = VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( Bool32 dedicatedAllocationImageAliasing_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dedicatedAllocationImageAliasing{ dedicatedAllocationImageAliasing_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & + operator=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & + operator=( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & + setDedicatedAllocationImageAliasing( Bool32 dedicatedAllocationImageAliasing_ ) & + VULKAN_HPP_NOEXCEPT + { + dedicatedAllocationImageAliasing = dedicatedAllocationImageAliasing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV && + setDedicatedAllocationImageAliasing( Bool32 dedicatedAllocationImageAliasing_ ) && + VULKAN_HPP_NOEXCEPT + { + dedicatedAllocationImageAliasing = dedicatedAllocationImageAliasing_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dedicatedAllocationImageAliasing ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dedicatedAllocationImageAliasing == rhs.dedicatedAllocationImageAliasing ); +# endif + } + + bool operator!=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + void * pNext = {}; + Bool32 dedicatedAllocationImageAliasing = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX.html + struct PhysicalDeviceDenseGeometryFormatFeaturesAMDX + { + using NativeType = VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDenseGeometryFormatFeaturesAMDX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDenseGeometryFormatFeaturesAMDX( Bool32 denseGeometryFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , denseGeometryFormat{ denseGeometryFormat_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDenseGeometryFormatFeaturesAMDX( PhysicalDeviceDenseGeometryFormatFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDenseGeometryFormatFeaturesAMDX( VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDenseGeometryFormatFeaturesAMDX( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDenseGeometryFormatFeaturesAMDX & operator=( PhysicalDeviceDenseGeometryFormatFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDenseGeometryFormatFeaturesAMDX & operator=( VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDenseGeometryFormatFeaturesAMDX & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDenseGeometryFormatFeaturesAMDX && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDenseGeometryFormatFeaturesAMDX & setDenseGeometryFormat( Bool32 denseGeometryFormat_ ) & VULKAN_HPP_NOEXCEPT + { + denseGeometryFormat = denseGeometryFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDenseGeometryFormatFeaturesAMDX && setDenseGeometryFormat( Bool32 denseGeometryFormat_ ) && VULKAN_HPP_NOEXCEPT + { + denseGeometryFormat = denseGeometryFormat_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDenseGeometryFormatFeaturesAMDX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, denseGeometryFormat ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDenseGeometryFormatFeaturesAMDX const & ) const = default; +# else + bool operator==( PhysicalDeviceDenseGeometryFormatFeaturesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( denseGeometryFormat == rhs.denseGeometryFormat ); +# endif + } + + bool operator!=( PhysicalDeviceDenseGeometryFormatFeaturesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDenseGeometryFormatFeaturesAMDX; + void * pNext = {}; + Bool32 denseGeometryFormat = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDenseGeometryFormatFeaturesAMDX; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDenseGeometryFormatFeaturesAMDX; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkPhysicalDeviceDepthBiasControlFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthBiasControlFeaturesEXT.html + struct PhysicalDeviceDepthBiasControlFeaturesEXT + { + using NativeType = VkPhysicalDeviceDepthBiasControlFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthBiasControlFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthBiasControlFeaturesEXT( Bool32 depthBiasControl_ = {}, + Bool32 leastRepresentableValueForceUnormRepresentation_ = {}, + Bool32 floatRepresentation_ = {}, + Bool32 depthBiasExact_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthBiasControl{ depthBiasControl_ } + , leastRepresentableValueForceUnormRepresentation{ leastRepresentableValueForceUnormRepresentation_ } + , floatRepresentation{ floatRepresentation_ } + , depthBiasExact{ depthBiasExact_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthBiasControlFeaturesEXT( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthBiasControlFeaturesEXT( VkPhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDepthBiasControlFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDepthBiasControlFeaturesEXT & operator=( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDepthBiasControlFeaturesEXT & operator=( VkPhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT & setDepthBiasControl( Bool32 depthBiasControl_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasControl = depthBiasControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT && setDepthBiasControl( Bool32 depthBiasControl_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasControl = depthBiasControl_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT & + setLeastRepresentableValueForceUnormRepresentation( Bool32 leastRepresentableValueForceUnormRepresentation_ ) & + VULKAN_HPP_NOEXCEPT + { + leastRepresentableValueForceUnormRepresentation = leastRepresentableValueForceUnormRepresentation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT && + setLeastRepresentableValueForceUnormRepresentation( Bool32 leastRepresentableValueForceUnormRepresentation_ ) && + VULKAN_HPP_NOEXCEPT + { + leastRepresentableValueForceUnormRepresentation = leastRepresentableValueForceUnormRepresentation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT & setFloatRepresentation( Bool32 floatRepresentation_ ) & VULKAN_HPP_NOEXCEPT + { + floatRepresentation = floatRepresentation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT && setFloatRepresentation( Bool32 floatRepresentation_ ) && VULKAN_HPP_NOEXCEPT + { + floatRepresentation = floatRepresentation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT & setDepthBiasExact( Bool32 depthBiasExact_ ) & VULKAN_HPP_NOEXCEPT + { + depthBiasExact = depthBiasExact_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthBiasControlFeaturesEXT && setDepthBiasExact( Bool32 depthBiasExact_ ) && VULKAN_HPP_NOEXCEPT + { + depthBiasExact = depthBiasExact_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDepthBiasControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthBiasControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthBiasControlFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthBiasControlFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthBiasControl, leastRepresentableValueForceUnormRepresentation, floatRepresentation, depthBiasExact ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDepthBiasControlFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthBiasControl == rhs.depthBiasControl ) && + ( leastRepresentableValueForceUnormRepresentation == rhs.leastRepresentableValueForceUnormRepresentation ) && + ( floatRepresentation == rhs.floatRepresentation ) && ( depthBiasExact == rhs.depthBiasExact ); +# endif + } + + bool operator!=( PhysicalDeviceDepthBiasControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDepthBiasControlFeaturesEXT; + void * pNext = {}; + Bool32 depthBiasControl = {}; + Bool32 leastRepresentableValueForceUnormRepresentation = {}; + Bool32 floatRepresentation = {}; + Bool32 depthBiasExact = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDepthBiasControlFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDepthBiasControlFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDepthClampControlFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampControlFeaturesEXT.html + struct PhysicalDeviceDepthClampControlFeaturesEXT + { + using NativeType = VkPhysicalDeviceDepthClampControlFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthClampControlFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClampControlFeaturesEXT( Bool32 depthClampControl_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthClampControl{ depthClampControl_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClampControlFeaturesEXT( PhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthClampControlFeaturesEXT( VkPhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDepthClampControlFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDepthClampControlFeaturesEXT & operator=( PhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDepthClampControlFeaturesEXT & operator=( VkPhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampControlFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampControlFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampControlFeaturesEXT & setDepthClampControl( Bool32 depthClampControl_ ) & VULKAN_HPP_NOEXCEPT + { + depthClampControl = depthClampControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampControlFeaturesEXT && setDepthClampControl( Bool32 depthClampControl_ ) && VULKAN_HPP_NOEXCEPT + { + depthClampControl = depthClampControl_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDepthClampControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClampControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClampControlFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClampControlFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthClampControl ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDepthClampControlFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClampControl == rhs.depthClampControl ); +# endif + } + + bool operator!=( PhysicalDeviceDepthClampControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDepthClampControlFeaturesEXT; + void * pNext = {}; + Bool32 depthClampControl = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDepthClampControlFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDepthClampControlFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDepthClampZeroOneFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClampZeroOneFeaturesKHR.html + struct PhysicalDeviceDepthClampZeroOneFeaturesKHR + { + using NativeType = VkPhysicalDeviceDepthClampZeroOneFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthClampZeroOneFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClampZeroOneFeaturesKHR( Bool32 depthClampZeroOne_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthClampZeroOne{ depthClampZeroOne_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClampZeroOneFeaturesKHR( PhysicalDeviceDepthClampZeroOneFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthClampZeroOneFeaturesKHR( VkPhysicalDeviceDepthClampZeroOneFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDepthClampZeroOneFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDepthClampZeroOneFeaturesKHR & operator=( PhysicalDeviceDepthClampZeroOneFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDepthClampZeroOneFeaturesKHR & operator=( VkPhysicalDeviceDepthClampZeroOneFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampZeroOneFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampZeroOneFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampZeroOneFeaturesKHR & setDepthClampZeroOne( Bool32 depthClampZeroOne_ ) & VULKAN_HPP_NOEXCEPT + { + depthClampZeroOne = depthClampZeroOne_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClampZeroOneFeaturesKHR && setDepthClampZeroOne( Bool32 depthClampZeroOne_ ) && VULKAN_HPP_NOEXCEPT + { + depthClampZeroOne = depthClampZeroOne_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDepthClampZeroOneFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClampZeroOneFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClampZeroOneFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClampZeroOneFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthClampZeroOne ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDepthClampZeroOneFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceDepthClampZeroOneFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClampZeroOne == rhs.depthClampZeroOne ); +# endif + } + + bool operator!=( PhysicalDeviceDepthClampZeroOneFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDepthClampZeroOneFeaturesKHR; + void * pNext = {}; + Bool32 depthClampZeroOne = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDepthClampZeroOneFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDepthClampZeroOneFeaturesKHR; + }; + + using PhysicalDeviceDepthClampZeroOneFeaturesEXT = PhysicalDeviceDepthClampZeroOneFeaturesKHR; + + // wrapper struct for struct VkPhysicalDeviceDepthClipControlFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipControlFeaturesEXT.html + struct PhysicalDeviceDepthClipControlFeaturesEXT + { + using NativeType = VkPhysicalDeviceDepthClipControlFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipControlFeaturesEXT( Bool32 depthClipControl_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthClipControl{ depthClipControl_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipControlFeaturesEXT( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthClipControlFeaturesEXT( VkPhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDepthClipControlFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDepthClipControlFeaturesEXT & operator=( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDepthClipControlFeaturesEXT & operator=( VkPhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT & setDepthClipControl( Bool32 depthClipControl_ ) & VULKAN_HPP_NOEXCEPT + { + depthClipControl = depthClipControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipControlFeaturesEXT && setDepthClipControl( Bool32 depthClipControl_ ) && VULKAN_HPP_NOEXCEPT + { + depthClipControl = depthClipControl_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDepthClipControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClipControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClipControlFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClipControlFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthClipControl ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDepthClipControlFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClipControl == rhs.depthClipControl ); +# endif + } + + bool operator!=( PhysicalDeviceDepthClipControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT; + void * pNext = {}; + Bool32 depthClipControl = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDepthClipControlFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDepthClipControlFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDepthClipEnableFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthClipEnableFeaturesEXT.html + struct PhysicalDeviceDepthClipEnableFeaturesEXT + { + using NativeType = VkPhysicalDeviceDepthClipEnableFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT( Bool32 depthClipEnable_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthClipEnable{ depthClipEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDepthClipEnableFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & setDepthClipEnable( Bool32 depthClipEnable_ ) & VULKAN_HPP_NOEXCEPT + { + depthClipEnable = depthClipEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT && setDepthClipEnable( Bool32 depthClipEnable_ ) && VULKAN_HPP_NOEXCEPT + { + depthClipEnable = depthClipEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClipEnableFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClipEnableFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthClipEnableFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthClipEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDepthClipEnableFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClipEnable == rhs.depthClipEnable ); +# endif + } + + bool operator!=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT; + void * pNext = {}; + Bool32 depthClipEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDepthClipEnableFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDepthClipEnableFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDepthStencilResolveProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDepthStencilResolveProperties.html + struct PhysicalDeviceDepthStencilResolveProperties + { + using NativeType = VkPhysicalDeviceDepthStencilResolveProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthStencilResolveProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties( ResolveModeFlags supportedDepthResolveModes_ = {}, + ResolveModeFlags supportedStencilResolveModes_ = {}, + Bool32 independentResolveNone_ = {}, + Bool32 independentResolve_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , supportedDepthResolveModes{ supportedDepthResolveModes_ } + , supportedStencilResolveModes{ supportedStencilResolveModes_ } + , independentResolveNone{ independentResolveNone_ } + , independentResolve{ independentResolve_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDepthStencilResolveProperties( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDepthStencilResolveProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDepthStencilResolveProperties & operator=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDepthStencilResolveProperties & operator=( VkPhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDepthStencilResolveProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthStencilResolveProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthStencilResolveProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDepthStencilResolveProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supportedDepthResolveModes, supportedStencilResolveModes, independentResolveNone, independentResolve ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDepthStencilResolveProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedDepthResolveModes == rhs.supportedDepthResolveModes ) && + ( supportedStencilResolveModes == rhs.supportedStencilResolveModes ) && ( independentResolveNone == rhs.independentResolveNone ) && + ( independentResolve == rhs.independentResolve ); +# endif + } + + bool operator!=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDepthStencilResolveProperties; + void * pNext = {}; + ResolveModeFlags supportedDepthResolveModes = {}; + ResolveModeFlags supportedStencilResolveModes = {}; + Bool32 independentResolveNone = {}; + Bool32 independentResolve = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDepthStencilResolveProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDepthStencilResolveProperties; + }; + + using PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties; + + // wrapper struct for struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.html + struct PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT + { + using NativeType = VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorBufferDensityMapPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( size_t combinedImageSamplerDensityMapDescriptorSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , combinedImageSamplerDensityMapDescriptorSize{ combinedImageSamplerDensityMapDescriptorSize_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT & + operator=( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT & operator=( VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, combinedImageSamplerDensityMapDescriptorSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( combinedImageSamplerDensityMapDescriptorSize == rhs.combinedImageSamplerDensityMapDescriptorSize ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorBufferDensityMapPropertiesEXT; + void * pNext = {}; + size_t combinedImageSamplerDensityMapDescriptorSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDescriptorBufferFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferFeaturesEXT.html + struct PhysicalDeviceDescriptorBufferFeaturesEXT + { + using NativeType = VkPhysicalDeviceDescriptorBufferFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorBufferFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferFeaturesEXT( Bool32 descriptorBuffer_ = {}, + Bool32 descriptorBufferCaptureReplay_ = {}, + Bool32 descriptorBufferImageLayoutIgnored_ = {}, + Bool32 descriptorBufferPushDescriptors_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorBuffer{ descriptorBuffer_ } + , descriptorBufferCaptureReplay{ descriptorBufferCaptureReplay_ } + , descriptorBufferImageLayoutIgnored{ descriptorBufferImageLayoutIgnored_ } + , descriptorBufferPushDescriptors{ descriptorBufferPushDescriptors_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferFeaturesEXT( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorBufferFeaturesEXT( VkPhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorBufferFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorBufferFeaturesEXT & operator=( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorBufferFeaturesEXT & operator=( VkPhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT & setDescriptorBuffer( Bool32 descriptorBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorBuffer = descriptorBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT && setDescriptorBuffer( Bool32 descriptorBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorBuffer = descriptorBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT & setDescriptorBufferCaptureReplay( Bool32 descriptorBufferCaptureReplay_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBufferCaptureReplay = descriptorBufferCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT && setDescriptorBufferCaptureReplay( Bool32 descriptorBufferCaptureReplay_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBufferCaptureReplay = descriptorBufferCaptureReplay_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT & setDescriptorBufferImageLayoutIgnored( Bool32 descriptorBufferImageLayoutIgnored_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBufferImageLayoutIgnored = descriptorBufferImageLayoutIgnored_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT && setDescriptorBufferImageLayoutIgnored( Bool32 descriptorBufferImageLayoutIgnored_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBufferImageLayoutIgnored = descriptorBufferImageLayoutIgnored_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT & setDescriptorBufferPushDescriptors( Bool32 descriptorBufferPushDescriptors_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBufferPushDescriptors = descriptorBufferPushDescriptors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferFeaturesEXT && setDescriptorBufferPushDescriptors( Bool32 descriptorBufferPushDescriptors_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBufferPushDescriptors = descriptorBufferPushDescriptors_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDescriptorBufferFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorBuffer, descriptorBufferCaptureReplay, descriptorBufferImageLayoutIgnored, descriptorBufferPushDescriptors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorBufferFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorBuffer == rhs.descriptorBuffer ) && + ( descriptorBufferCaptureReplay == rhs.descriptorBufferCaptureReplay ) && + ( descriptorBufferImageLayoutIgnored == rhs.descriptorBufferImageLayoutIgnored ) && + ( descriptorBufferPushDescriptors == rhs.descriptorBufferPushDescriptors ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorBufferFeaturesEXT; + void * pNext = {}; + Bool32 descriptorBuffer = {}; + Bool32 descriptorBufferCaptureReplay = {}; + Bool32 descriptorBufferImageLayoutIgnored = {}; + Bool32 descriptorBufferPushDescriptors = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorBufferFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorBufferFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDescriptorBufferPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferPropertiesEXT.html + struct PhysicalDeviceDescriptorBufferPropertiesEXT + { + using NativeType = VkPhysicalDeviceDescriptorBufferPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorBufferPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferPropertiesEXT( Bool32 combinedImageSamplerDescriptorSingleArray_ = {}, + Bool32 bufferlessPushDescriptors_ = {}, + Bool32 allowSamplerImageViewPostSubmitCreation_ = {}, + DeviceSize descriptorBufferOffsetAlignment_ = {}, + uint32_t maxDescriptorBufferBindings_ = {}, + uint32_t maxResourceDescriptorBufferBindings_ = {}, + uint32_t maxSamplerDescriptorBufferBindings_ = {}, + uint32_t maxEmbeddedImmutableSamplerBindings_ = {}, + uint32_t maxEmbeddedImmutableSamplers_ = {}, + size_t bufferCaptureReplayDescriptorDataSize_ = {}, + size_t imageCaptureReplayDescriptorDataSize_ = {}, + size_t imageViewCaptureReplayDescriptorDataSize_ = {}, + size_t samplerCaptureReplayDescriptorDataSize_ = {}, + size_t accelerationStructureCaptureReplayDescriptorDataSize_ = {}, + size_t samplerDescriptorSize_ = {}, + size_t combinedImageSamplerDescriptorSize_ = {}, + size_t sampledImageDescriptorSize_ = {}, + size_t storageImageDescriptorSize_ = {}, + size_t uniformTexelBufferDescriptorSize_ = {}, + size_t robustUniformTexelBufferDescriptorSize_ = {}, + size_t storageTexelBufferDescriptorSize_ = {}, + size_t robustStorageTexelBufferDescriptorSize_ = {}, + size_t uniformBufferDescriptorSize_ = {}, + size_t robustUniformBufferDescriptorSize_ = {}, + size_t storageBufferDescriptorSize_ = {}, + size_t robustStorageBufferDescriptorSize_ = {}, + size_t inputAttachmentDescriptorSize_ = {}, + size_t accelerationStructureDescriptorSize_ = {}, + DeviceSize maxSamplerDescriptorBufferRange_ = {}, + DeviceSize maxResourceDescriptorBufferRange_ = {}, + DeviceSize samplerDescriptorBufferAddressSpaceSize_ = {}, + DeviceSize resourceDescriptorBufferAddressSpaceSize_ = {}, + DeviceSize descriptorBufferAddressSpaceSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , combinedImageSamplerDescriptorSingleArray{ combinedImageSamplerDescriptorSingleArray_ } + , bufferlessPushDescriptors{ bufferlessPushDescriptors_ } + , allowSamplerImageViewPostSubmitCreation{ allowSamplerImageViewPostSubmitCreation_ } + , descriptorBufferOffsetAlignment{ descriptorBufferOffsetAlignment_ } + , maxDescriptorBufferBindings{ maxDescriptorBufferBindings_ } + , maxResourceDescriptorBufferBindings{ maxResourceDescriptorBufferBindings_ } + , maxSamplerDescriptorBufferBindings{ maxSamplerDescriptorBufferBindings_ } + , maxEmbeddedImmutableSamplerBindings{ maxEmbeddedImmutableSamplerBindings_ } + , maxEmbeddedImmutableSamplers{ maxEmbeddedImmutableSamplers_ } + , bufferCaptureReplayDescriptorDataSize{ bufferCaptureReplayDescriptorDataSize_ } + , imageCaptureReplayDescriptorDataSize{ imageCaptureReplayDescriptorDataSize_ } + , imageViewCaptureReplayDescriptorDataSize{ imageViewCaptureReplayDescriptorDataSize_ } + , samplerCaptureReplayDescriptorDataSize{ samplerCaptureReplayDescriptorDataSize_ } + , accelerationStructureCaptureReplayDescriptorDataSize{ accelerationStructureCaptureReplayDescriptorDataSize_ } + , samplerDescriptorSize{ samplerDescriptorSize_ } + , combinedImageSamplerDescriptorSize{ combinedImageSamplerDescriptorSize_ } + , sampledImageDescriptorSize{ sampledImageDescriptorSize_ } + , storageImageDescriptorSize{ storageImageDescriptorSize_ } + , uniformTexelBufferDescriptorSize{ uniformTexelBufferDescriptorSize_ } + , robustUniformTexelBufferDescriptorSize{ robustUniformTexelBufferDescriptorSize_ } + , storageTexelBufferDescriptorSize{ storageTexelBufferDescriptorSize_ } + , robustStorageTexelBufferDescriptorSize{ robustStorageTexelBufferDescriptorSize_ } + , uniformBufferDescriptorSize{ uniformBufferDescriptorSize_ } + , robustUniformBufferDescriptorSize{ robustUniformBufferDescriptorSize_ } + , storageBufferDescriptorSize{ storageBufferDescriptorSize_ } + , robustStorageBufferDescriptorSize{ robustStorageBufferDescriptorSize_ } + , inputAttachmentDescriptorSize{ inputAttachmentDescriptorSize_ } + , accelerationStructureDescriptorSize{ accelerationStructureDescriptorSize_ } + , maxSamplerDescriptorBufferRange{ maxSamplerDescriptorBufferRange_ } + , maxResourceDescriptorBufferRange{ maxResourceDescriptorBufferRange_ } + , samplerDescriptorBufferAddressSpaceSize{ samplerDescriptorBufferAddressSpaceSize_ } + , resourceDescriptorBufferAddressSpaceSize{ resourceDescriptorBufferAddressSpaceSize_ } + , descriptorBufferAddressSpaceSize{ descriptorBufferAddressSpaceSize_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferPropertiesEXT( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorBufferPropertiesEXT( VkPhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorBufferPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorBufferPropertiesEXT & operator=( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorBufferPropertiesEXT & operator=( VkPhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDescriptorBufferPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + combinedImageSamplerDescriptorSingleArray, + bufferlessPushDescriptors, + allowSamplerImageViewPostSubmitCreation, + descriptorBufferOffsetAlignment, + maxDescriptorBufferBindings, + maxResourceDescriptorBufferBindings, + maxSamplerDescriptorBufferBindings, + maxEmbeddedImmutableSamplerBindings, + maxEmbeddedImmutableSamplers, + bufferCaptureReplayDescriptorDataSize, + imageCaptureReplayDescriptorDataSize, + imageViewCaptureReplayDescriptorDataSize, + samplerCaptureReplayDescriptorDataSize, + accelerationStructureCaptureReplayDescriptorDataSize, + samplerDescriptorSize, + combinedImageSamplerDescriptorSize, + sampledImageDescriptorSize, + storageImageDescriptorSize, + uniformTexelBufferDescriptorSize, + robustUniformTexelBufferDescriptorSize, + storageTexelBufferDescriptorSize, + robustStorageTexelBufferDescriptorSize, + uniformBufferDescriptorSize, + robustUniformBufferDescriptorSize, + storageBufferDescriptorSize, + robustStorageBufferDescriptorSize, + inputAttachmentDescriptorSize, + accelerationStructureDescriptorSize, + maxSamplerDescriptorBufferRange, + maxResourceDescriptorBufferRange, + samplerDescriptorBufferAddressSpaceSize, + resourceDescriptorBufferAddressSpaceSize, + descriptorBufferAddressSpaceSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorBufferPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( combinedImageSamplerDescriptorSingleArray == rhs.combinedImageSamplerDescriptorSingleArray ) && + ( bufferlessPushDescriptors == rhs.bufferlessPushDescriptors ) && + ( allowSamplerImageViewPostSubmitCreation == rhs.allowSamplerImageViewPostSubmitCreation ) && + ( descriptorBufferOffsetAlignment == rhs.descriptorBufferOffsetAlignment ) && ( maxDescriptorBufferBindings == rhs.maxDescriptorBufferBindings ) && + ( maxResourceDescriptorBufferBindings == rhs.maxResourceDescriptorBufferBindings ) && + ( maxSamplerDescriptorBufferBindings == rhs.maxSamplerDescriptorBufferBindings ) && + ( maxEmbeddedImmutableSamplerBindings == rhs.maxEmbeddedImmutableSamplerBindings ) && + ( maxEmbeddedImmutableSamplers == rhs.maxEmbeddedImmutableSamplers ) && + ( bufferCaptureReplayDescriptorDataSize == rhs.bufferCaptureReplayDescriptorDataSize ) && + ( imageCaptureReplayDescriptorDataSize == rhs.imageCaptureReplayDescriptorDataSize ) && + ( imageViewCaptureReplayDescriptorDataSize == rhs.imageViewCaptureReplayDescriptorDataSize ) && + ( samplerCaptureReplayDescriptorDataSize == rhs.samplerCaptureReplayDescriptorDataSize ) && + ( accelerationStructureCaptureReplayDescriptorDataSize == rhs.accelerationStructureCaptureReplayDescriptorDataSize ) && + ( samplerDescriptorSize == rhs.samplerDescriptorSize ) && ( combinedImageSamplerDescriptorSize == rhs.combinedImageSamplerDescriptorSize ) && + ( sampledImageDescriptorSize == rhs.sampledImageDescriptorSize ) && ( storageImageDescriptorSize == rhs.storageImageDescriptorSize ) && + ( uniformTexelBufferDescriptorSize == rhs.uniformTexelBufferDescriptorSize ) && + ( robustUniformTexelBufferDescriptorSize == rhs.robustUniformTexelBufferDescriptorSize ) && + ( storageTexelBufferDescriptorSize == rhs.storageTexelBufferDescriptorSize ) && + ( robustStorageTexelBufferDescriptorSize == rhs.robustStorageTexelBufferDescriptorSize ) && + ( uniformBufferDescriptorSize == rhs.uniformBufferDescriptorSize ) && + ( robustUniformBufferDescriptorSize == rhs.robustUniformBufferDescriptorSize ) && + ( storageBufferDescriptorSize == rhs.storageBufferDescriptorSize ) && + ( robustStorageBufferDescriptorSize == rhs.robustStorageBufferDescriptorSize ) && + ( inputAttachmentDescriptorSize == rhs.inputAttachmentDescriptorSize ) && + ( accelerationStructureDescriptorSize == rhs.accelerationStructureDescriptorSize ) && + ( maxSamplerDescriptorBufferRange == rhs.maxSamplerDescriptorBufferRange ) && + ( maxResourceDescriptorBufferRange == rhs.maxResourceDescriptorBufferRange ) && + ( samplerDescriptorBufferAddressSpaceSize == rhs.samplerDescriptorBufferAddressSpaceSize ) && + ( resourceDescriptorBufferAddressSpaceSize == rhs.resourceDescriptorBufferAddressSpaceSize ) && + ( descriptorBufferAddressSpaceSize == rhs.descriptorBufferAddressSpaceSize ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorBufferPropertiesEXT; + void * pNext = {}; + Bool32 combinedImageSamplerDescriptorSingleArray = {}; + Bool32 bufferlessPushDescriptors = {}; + Bool32 allowSamplerImageViewPostSubmitCreation = {}; + DeviceSize descriptorBufferOffsetAlignment = {}; + uint32_t maxDescriptorBufferBindings = {}; + uint32_t maxResourceDescriptorBufferBindings = {}; + uint32_t maxSamplerDescriptorBufferBindings = {}; + uint32_t maxEmbeddedImmutableSamplerBindings = {}; + uint32_t maxEmbeddedImmutableSamplers = {}; + size_t bufferCaptureReplayDescriptorDataSize = {}; + size_t imageCaptureReplayDescriptorDataSize = {}; + size_t imageViewCaptureReplayDescriptorDataSize = {}; + size_t samplerCaptureReplayDescriptorDataSize = {}; + size_t accelerationStructureCaptureReplayDescriptorDataSize = {}; + size_t samplerDescriptorSize = {}; + size_t combinedImageSamplerDescriptorSize = {}; + size_t sampledImageDescriptorSize = {}; + size_t storageImageDescriptorSize = {}; + size_t uniformTexelBufferDescriptorSize = {}; + size_t robustUniformTexelBufferDescriptorSize = {}; + size_t storageTexelBufferDescriptorSize = {}; + size_t robustStorageTexelBufferDescriptorSize = {}; + size_t uniformBufferDescriptorSize = {}; + size_t robustUniformBufferDescriptorSize = {}; + size_t storageBufferDescriptorSize = {}; + size_t robustStorageBufferDescriptorSize = {}; + size_t inputAttachmentDescriptorSize = {}; + size_t accelerationStructureDescriptorSize = {}; + DeviceSize maxSamplerDescriptorBufferRange = {}; + DeviceSize maxResourceDescriptorBufferRange = {}; + DeviceSize samplerDescriptorBufferAddressSpaceSize = {}; + DeviceSize resourceDescriptorBufferAddressSpaceSize = {}; + DeviceSize descriptorBufferAddressSpaceSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorBufferPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorBufferPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDescriptorBufferTensorFeaturesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorFeaturesARM.html + struct PhysicalDeviceDescriptorBufferTensorFeaturesARM + { + using NativeType = VkPhysicalDeviceDescriptorBufferTensorFeaturesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorBufferTensorFeaturesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferTensorFeaturesARM( Bool32 descriptorBufferTensorDescriptors_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorBufferTensorDescriptors{ descriptorBufferTensorDescriptors_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDescriptorBufferTensorFeaturesARM( PhysicalDeviceDescriptorBufferTensorFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorBufferTensorFeaturesARM( VkPhysicalDeviceDescriptorBufferTensorFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorBufferTensorFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorBufferTensorFeaturesARM & operator=( PhysicalDeviceDescriptorBufferTensorFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorBufferTensorFeaturesARM & operator=( VkPhysicalDeviceDescriptorBufferTensorFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorFeaturesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorFeaturesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorFeaturesARM & + setDescriptorBufferTensorDescriptors( Bool32 descriptorBufferTensorDescriptors_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBufferTensorDescriptors = descriptorBufferTensorDescriptors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorFeaturesARM && + setDescriptorBufferTensorDescriptors( Bool32 descriptorBufferTensorDescriptors_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBufferTensorDescriptors = descriptorBufferTensorDescriptors_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDescriptorBufferTensorFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferTensorFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferTensorFeaturesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferTensorFeaturesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorBufferTensorDescriptors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorBufferTensorFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorBufferTensorFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorBufferTensorDescriptors == rhs.descriptorBufferTensorDescriptors ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorBufferTensorFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorBufferTensorFeaturesARM; + void * pNext = {}; + Bool32 descriptorBufferTensorDescriptors = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorBufferTensorFeaturesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorBufferTensorFeaturesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceDescriptorBufferTensorPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorBufferTensorPropertiesARM.html + struct PhysicalDeviceDescriptorBufferTensorPropertiesARM + { + using NativeType = VkPhysicalDeviceDescriptorBufferTensorPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorBufferTensorPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorBufferTensorPropertiesARM( size_t tensorCaptureReplayDescriptorDataSize_ = {}, + size_t tensorViewCaptureReplayDescriptorDataSize_ = {}, + size_t tensorDescriptorSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensorCaptureReplayDescriptorDataSize{ tensorCaptureReplayDescriptorDataSize_ } + , tensorViewCaptureReplayDescriptorDataSize{ tensorViewCaptureReplayDescriptorDataSize_ } + , tensorDescriptorSize{ tensorDescriptorSize_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDescriptorBufferTensorPropertiesARM( PhysicalDeviceDescriptorBufferTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorBufferTensorPropertiesARM( VkPhysicalDeviceDescriptorBufferTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorBufferTensorPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorBufferTensorPropertiesARM & + operator=( PhysicalDeviceDescriptorBufferTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorBufferTensorPropertiesARM & operator=( VkPhysicalDeviceDescriptorBufferTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorPropertiesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorPropertiesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorPropertiesARM & + setTensorCaptureReplayDescriptorDataSize( size_t tensorCaptureReplayDescriptorDataSize_ ) & + VULKAN_HPP_NOEXCEPT + { + tensorCaptureReplayDescriptorDataSize = tensorCaptureReplayDescriptorDataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorPropertiesARM && + setTensorCaptureReplayDescriptorDataSize( size_t tensorCaptureReplayDescriptorDataSize_ ) && + VULKAN_HPP_NOEXCEPT + { + tensorCaptureReplayDescriptorDataSize = tensorCaptureReplayDescriptorDataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorPropertiesARM & + setTensorViewCaptureReplayDescriptorDataSize( size_t tensorViewCaptureReplayDescriptorDataSize_ ) & + VULKAN_HPP_NOEXCEPT + { + tensorViewCaptureReplayDescriptorDataSize = tensorViewCaptureReplayDescriptorDataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorPropertiesARM && + setTensorViewCaptureReplayDescriptorDataSize( size_t tensorViewCaptureReplayDescriptorDataSize_ ) && + VULKAN_HPP_NOEXCEPT + { + tensorViewCaptureReplayDescriptorDataSize = tensorViewCaptureReplayDescriptorDataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorPropertiesARM & setTensorDescriptorSize( size_t tensorDescriptorSize_ ) & VULKAN_HPP_NOEXCEPT + { + tensorDescriptorSize = tensorDescriptorSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorBufferTensorPropertiesARM && setTensorDescriptorSize( size_t tensorDescriptorSize_ ) && VULKAN_HPP_NOEXCEPT + { + tensorDescriptorSize = tensorDescriptorSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDescriptorBufferTensorPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferTensorPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferTensorPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorBufferTensorPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensorCaptureReplayDescriptorDataSize, tensorViewCaptureReplayDescriptorDataSize, tensorDescriptorSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorBufferTensorPropertiesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorBufferTensorPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensorCaptureReplayDescriptorDataSize == rhs.tensorCaptureReplayDescriptorDataSize ) && + ( tensorViewCaptureReplayDescriptorDataSize == rhs.tensorViewCaptureReplayDescriptorDataSize ) && + ( tensorDescriptorSize == rhs.tensorDescriptorSize ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorBufferTensorPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorBufferTensorPropertiesARM; + void * pNext = {}; + size_t tensorCaptureReplayDescriptorDataSize = {}; + size_t tensorViewCaptureReplayDescriptorDataSize = {}; + size_t tensorDescriptorSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorBufferTensorPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorBufferTensorPropertiesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceDescriptorHeapFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorHeapFeaturesEXT.html + struct PhysicalDeviceDescriptorHeapFeaturesEXT + { + using NativeType = VkPhysicalDeviceDescriptorHeapFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorHeapFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorHeapFeaturesEXT( Bool32 descriptorHeap_ = {}, + Bool32 descriptorHeapCaptureReplay_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorHeap{ descriptorHeap_ } + , descriptorHeapCaptureReplay{ descriptorHeapCaptureReplay_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorHeapFeaturesEXT( PhysicalDeviceDescriptorHeapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorHeapFeaturesEXT( VkPhysicalDeviceDescriptorHeapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorHeapFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorHeapFeaturesEXT & operator=( PhysicalDeviceDescriptorHeapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorHeapFeaturesEXT & operator=( VkPhysicalDeviceDescriptorHeapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorHeapFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorHeapFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorHeapFeaturesEXT & setDescriptorHeap( Bool32 descriptorHeap_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorHeap = descriptorHeap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorHeapFeaturesEXT && setDescriptorHeap( Bool32 descriptorHeap_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorHeap = descriptorHeap_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorHeapFeaturesEXT & setDescriptorHeapCaptureReplay( Bool32 descriptorHeapCaptureReplay_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorHeapCaptureReplay = descriptorHeapCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorHeapFeaturesEXT && setDescriptorHeapCaptureReplay( Bool32 descriptorHeapCaptureReplay_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorHeapCaptureReplay = descriptorHeapCaptureReplay_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDescriptorHeapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorHeapFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorHeapFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorHeapFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorHeap, descriptorHeapCaptureReplay ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorHeapFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorHeapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorHeap == rhs.descriptorHeap ) && + ( descriptorHeapCaptureReplay == rhs.descriptorHeapCaptureReplay ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorHeapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorHeapFeaturesEXT; + void * pNext = {}; + Bool32 descriptorHeap = {}; + Bool32 descriptorHeapCaptureReplay = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorHeapFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorHeapFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDescriptorHeapPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorHeapPropertiesEXT.html + struct PhysicalDeviceDescriptorHeapPropertiesEXT + { + using NativeType = VkPhysicalDeviceDescriptorHeapPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorHeapPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorHeapPropertiesEXT( DeviceSize samplerHeapAlignment_ = {}, + DeviceSize resourceHeapAlignment_ = {}, + DeviceSize maxSamplerHeapSize_ = {}, + DeviceSize maxResourceHeapSize_ = {}, + DeviceSize minSamplerHeapReservedRange_ = {}, + DeviceSize minSamplerHeapReservedRangeWithEmbedded_ = {}, + DeviceSize minResourceHeapReservedRange_ = {}, + DeviceSize samplerDescriptorSize_ = {}, + DeviceSize imageDescriptorSize_ = {}, + DeviceSize bufferDescriptorSize_ = {}, + DeviceSize samplerDescriptorAlignment_ = {}, + DeviceSize imageDescriptorAlignment_ = {}, + DeviceSize bufferDescriptorAlignment_ = {}, + DeviceSize maxPushDataSize_ = {}, + size_t imageCaptureReplayOpaqueDataSize_ = {}, + uint32_t maxDescriptorHeapEmbeddedSamplers_ = {}, + uint32_t samplerYcbcrConversionCount_ = {}, + Bool32 sparseDescriptorHeaps_ = {}, + Bool32 protectedDescriptorHeaps_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , samplerHeapAlignment{ samplerHeapAlignment_ } + , resourceHeapAlignment{ resourceHeapAlignment_ } + , maxSamplerHeapSize{ maxSamplerHeapSize_ } + , maxResourceHeapSize{ maxResourceHeapSize_ } + , minSamplerHeapReservedRange{ minSamplerHeapReservedRange_ } + , minSamplerHeapReservedRangeWithEmbedded{ minSamplerHeapReservedRangeWithEmbedded_ } + , minResourceHeapReservedRange{ minResourceHeapReservedRange_ } + , samplerDescriptorSize{ samplerDescriptorSize_ } + , imageDescriptorSize{ imageDescriptorSize_ } + , bufferDescriptorSize{ bufferDescriptorSize_ } + , samplerDescriptorAlignment{ samplerDescriptorAlignment_ } + , imageDescriptorAlignment{ imageDescriptorAlignment_ } + , bufferDescriptorAlignment{ bufferDescriptorAlignment_ } + , maxPushDataSize{ maxPushDataSize_ } + , imageCaptureReplayOpaqueDataSize{ imageCaptureReplayOpaqueDataSize_ } + , maxDescriptorHeapEmbeddedSamplers{ maxDescriptorHeapEmbeddedSamplers_ } + , samplerYcbcrConversionCount{ samplerYcbcrConversionCount_ } + , sparseDescriptorHeaps{ sparseDescriptorHeaps_ } + , protectedDescriptorHeaps{ protectedDescriptorHeaps_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorHeapPropertiesEXT( PhysicalDeviceDescriptorHeapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorHeapPropertiesEXT( VkPhysicalDeviceDescriptorHeapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorHeapPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorHeapPropertiesEXT & operator=( PhysicalDeviceDescriptorHeapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorHeapPropertiesEXT & operator=( VkPhysicalDeviceDescriptorHeapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDescriptorHeapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorHeapPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorHeapPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorHeapPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + samplerHeapAlignment, + resourceHeapAlignment, + maxSamplerHeapSize, + maxResourceHeapSize, + minSamplerHeapReservedRange, + minSamplerHeapReservedRangeWithEmbedded, + minResourceHeapReservedRange, + samplerDescriptorSize, + imageDescriptorSize, + bufferDescriptorSize, + samplerDescriptorAlignment, + imageDescriptorAlignment, + bufferDescriptorAlignment, + maxPushDataSize, + imageCaptureReplayOpaqueDataSize, + maxDescriptorHeapEmbeddedSamplers, + samplerYcbcrConversionCount, + sparseDescriptorHeaps, + protectedDescriptorHeaps ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorHeapPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorHeapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( samplerHeapAlignment == rhs.samplerHeapAlignment ) && + ( resourceHeapAlignment == rhs.resourceHeapAlignment ) && ( maxSamplerHeapSize == rhs.maxSamplerHeapSize ) && + ( maxResourceHeapSize == rhs.maxResourceHeapSize ) && ( minSamplerHeapReservedRange == rhs.minSamplerHeapReservedRange ) && + ( minSamplerHeapReservedRangeWithEmbedded == rhs.minSamplerHeapReservedRangeWithEmbedded ) && + ( minResourceHeapReservedRange == rhs.minResourceHeapReservedRange ) && ( samplerDescriptorSize == rhs.samplerDescriptorSize ) && + ( imageDescriptorSize == rhs.imageDescriptorSize ) && ( bufferDescriptorSize == rhs.bufferDescriptorSize ) && + ( samplerDescriptorAlignment == rhs.samplerDescriptorAlignment ) && ( imageDescriptorAlignment == rhs.imageDescriptorAlignment ) && + ( bufferDescriptorAlignment == rhs.bufferDescriptorAlignment ) && ( maxPushDataSize == rhs.maxPushDataSize ) && + ( imageCaptureReplayOpaqueDataSize == rhs.imageCaptureReplayOpaqueDataSize ) && + ( maxDescriptorHeapEmbeddedSamplers == rhs.maxDescriptorHeapEmbeddedSamplers ) && + ( samplerYcbcrConversionCount == rhs.samplerYcbcrConversionCount ) && ( sparseDescriptorHeaps == rhs.sparseDescriptorHeaps ) && + ( protectedDescriptorHeaps == rhs.protectedDescriptorHeaps ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorHeapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorHeapPropertiesEXT; + void * pNext = {}; + DeviceSize samplerHeapAlignment = {}; + DeviceSize resourceHeapAlignment = {}; + DeviceSize maxSamplerHeapSize = {}; + DeviceSize maxResourceHeapSize = {}; + DeviceSize minSamplerHeapReservedRange = {}; + DeviceSize minSamplerHeapReservedRangeWithEmbedded = {}; + DeviceSize minResourceHeapReservedRange = {}; + DeviceSize samplerDescriptorSize = {}; + DeviceSize imageDescriptorSize = {}; + DeviceSize bufferDescriptorSize = {}; + DeviceSize samplerDescriptorAlignment = {}; + DeviceSize imageDescriptorAlignment = {}; + DeviceSize bufferDescriptorAlignment = {}; + DeviceSize maxPushDataSize = {}; + size_t imageCaptureReplayOpaqueDataSize = {}; + uint32_t maxDescriptorHeapEmbeddedSamplers = {}; + uint32_t samplerYcbcrConversionCount = {}; + Bool32 sparseDescriptorHeaps = {}; + Bool32 protectedDescriptorHeaps = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorHeapPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorHeapPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDescriptorHeapTensorPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorHeapTensorPropertiesARM.html + struct PhysicalDeviceDescriptorHeapTensorPropertiesARM + { + using NativeType = VkPhysicalDeviceDescriptorHeapTensorPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorHeapTensorPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorHeapTensorPropertiesARM( DeviceSize tensorDescriptorSize_ = {}, + DeviceSize tensorDescriptorAlignment_ = {}, + size_t tensorCaptureReplayOpaqueDataSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensorDescriptorSize{ tensorDescriptorSize_ } + , tensorDescriptorAlignment{ tensorDescriptorAlignment_ } + , tensorCaptureReplayOpaqueDataSize{ tensorCaptureReplayOpaqueDataSize_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDescriptorHeapTensorPropertiesARM( PhysicalDeviceDescriptorHeapTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorHeapTensorPropertiesARM( VkPhysicalDeviceDescriptorHeapTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorHeapTensorPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorHeapTensorPropertiesARM & operator=( PhysicalDeviceDescriptorHeapTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorHeapTensorPropertiesARM & operator=( VkPhysicalDeviceDescriptorHeapTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDescriptorHeapTensorPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorHeapTensorPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorHeapTensorPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorHeapTensorPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensorDescriptorSize, tensorDescriptorAlignment, tensorCaptureReplayOpaqueDataSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorHeapTensorPropertiesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorHeapTensorPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensorDescriptorSize == rhs.tensorDescriptorSize ) && + ( tensorDescriptorAlignment == rhs.tensorDescriptorAlignment ) && ( tensorCaptureReplayOpaqueDataSize == rhs.tensorCaptureReplayOpaqueDataSize ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorHeapTensorPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorHeapTensorPropertiesARM; + void * pNext = {}; + DeviceSize tensorDescriptorSize = {}; + DeviceSize tensorDescriptorAlignment = {}; + size_t tensorCaptureReplayOpaqueDataSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorHeapTensorPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorHeapTensorPropertiesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceDescriptorIndexingFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingFeatures.html + struct PhysicalDeviceDescriptorIndexingFeatures + { + using NativeType = VkPhysicalDeviceDescriptorIndexingFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorIndexingFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures( Bool32 shaderInputAttachmentArrayDynamicIndexing_ = {}, + Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = {}, + Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = {}, + Bool32 shaderUniformBufferArrayNonUniformIndexing_ = {}, + Bool32 shaderSampledImageArrayNonUniformIndexing_ = {}, + Bool32 shaderStorageBufferArrayNonUniformIndexing_ = {}, + Bool32 shaderStorageImageArrayNonUniformIndexing_ = {}, + Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = {}, + Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = {}, + Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = {}, + Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = {}, + Bool32 descriptorBindingSampledImageUpdateAfterBind_ = {}, + Bool32 descriptorBindingStorageImageUpdateAfterBind_ = {}, + Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = {}, + Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {}, + Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {}, + Bool32 descriptorBindingUpdateUnusedWhilePending_ = {}, + Bool32 descriptorBindingPartiallyBound_ = {}, + Bool32 descriptorBindingVariableDescriptorCount_ = {}, + Bool32 runtimeDescriptorArray_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderInputAttachmentArrayDynamicIndexing{ shaderInputAttachmentArrayDynamicIndexing_ } + , shaderUniformTexelBufferArrayDynamicIndexing{ shaderUniformTexelBufferArrayDynamicIndexing_ } + , shaderStorageTexelBufferArrayDynamicIndexing{ shaderStorageTexelBufferArrayDynamicIndexing_ } + , shaderUniformBufferArrayNonUniformIndexing{ shaderUniformBufferArrayNonUniformIndexing_ } + , shaderSampledImageArrayNonUniformIndexing{ shaderSampledImageArrayNonUniformIndexing_ } + , shaderStorageBufferArrayNonUniformIndexing{ shaderStorageBufferArrayNonUniformIndexing_ } + , shaderStorageImageArrayNonUniformIndexing{ shaderStorageImageArrayNonUniformIndexing_ } + , shaderInputAttachmentArrayNonUniformIndexing{ shaderInputAttachmentArrayNonUniformIndexing_ } + , shaderUniformTexelBufferArrayNonUniformIndexing{ shaderUniformTexelBufferArrayNonUniformIndexing_ } + , shaderStorageTexelBufferArrayNonUniformIndexing{ shaderStorageTexelBufferArrayNonUniformIndexing_ } + , descriptorBindingUniformBufferUpdateAfterBind{ descriptorBindingUniformBufferUpdateAfterBind_ } + , descriptorBindingSampledImageUpdateAfterBind{ descriptorBindingSampledImageUpdateAfterBind_ } + , descriptorBindingStorageImageUpdateAfterBind{ descriptorBindingStorageImageUpdateAfterBind_ } + , descriptorBindingStorageBufferUpdateAfterBind{ descriptorBindingStorageBufferUpdateAfterBind_ } + , descriptorBindingUniformTexelBufferUpdateAfterBind{ descriptorBindingUniformTexelBufferUpdateAfterBind_ } + , descriptorBindingStorageTexelBufferUpdateAfterBind{ descriptorBindingStorageTexelBufferUpdateAfterBind_ } + , descriptorBindingUpdateUnusedWhilePending{ descriptorBindingUpdateUnusedWhilePending_ } + , descriptorBindingPartiallyBound{ descriptorBindingPartiallyBound_ } + , descriptorBindingVariableDescriptorCount{ descriptorBindingVariableDescriptorCount_ } + , runtimeDescriptorArray{ runtimeDescriptorArray_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorIndexingFeatures( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorIndexingFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorIndexingFeatures & operator=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorIndexingFeatures & operator=( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderInputAttachmentArrayDynamicIndexing( Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setShaderInputAttachmentArrayDynamicIndexing( Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderUniformTexelBufferArrayDynamicIndexing( Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setShaderUniformTexelBufferArrayDynamicIndexing( Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderStorageTexelBufferArrayDynamicIndexing( Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setShaderStorageTexelBufferArrayDynamicIndexing( Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderUniformBufferArrayNonUniformIndexing( Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setShaderUniformBufferArrayNonUniformIndexing( Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderSampledImageArrayNonUniformIndexing( Bool32 shaderSampledImageArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setShaderSampledImageArrayNonUniformIndexing( Bool32 shaderSampledImageArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderStorageBufferArrayNonUniformIndexing( Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setShaderStorageBufferArrayNonUniformIndexing( Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderStorageImageArrayNonUniformIndexing( Bool32 shaderStorageImageArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setShaderStorageImageArrayNonUniformIndexing( Bool32 shaderStorageImageArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderInputAttachmentArrayNonUniformIndexing( Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setShaderInputAttachmentArrayNonUniformIndexing( Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderUniformTexelBufferArrayNonUniformIndexing( Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setShaderUniformTexelBufferArrayNonUniformIndexing( Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setShaderStorageTexelBufferArrayNonUniformIndexing( Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setShaderStorageTexelBufferArrayNonUniformIndexing( Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setDescriptorBindingUniformBufferUpdateAfterBind( Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setDescriptorBindingUniformBufferUpdateAfterBind( Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setDescriptorBindingSampledImageUpdateAfterBind( Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setDescriptorBindingSampledImageUpdateAfterBind( Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setDescriptorBindingStorageImageUpdateAfterBind( Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setDescriptorBindingStorageImageUpdateAfterBind( Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setDescriptorBindingStorageBufferUpdateAfterBind( Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setDescriptorBindingStorageBufferUpdateAfterBind( Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setDescriptorBindingUniformTexelBufferUpdateAfterBind( Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setDescriptorBindingUniformTexelBufferUpdateAfterBind( Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setDescriptorBindingStorageTexelBufferUpdateAfterBind( Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setDescriptorBindingStorageTexelBufferUpdateAfterBind( Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setDescriptorBindingUpdateUnusedWhilePending( Bool32 descriptorBindingUpdateUnusedWhilePending_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setDescriptorBindingUpdateUnusedWhilePending( Bool32 descriptorBindingUpdateUnusedWhilePending_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingPartiallyBound( Bool32 descriptorBindingPartiallyBound_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && setDescriptorBindingPartiallyBound( Bool32 descriptorBindingPartiallyBound_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & + setDescriptorBindingVariableDescriptorCount( Bool32 descriptorBindingVariableDescriptorCount_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && + setDescriptorBindingVariableDescriptorCount( Bool32 descriptorBindingVariableDescriptorCount_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & setRuntimeDescriptorArray( Bool32 runtimeDescriptorArray_ ) & VULKAN_HPP_NOEXCEPT + { + runtimeDescriptorArray = runtimeDescriptorArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures && setRuntimeDescriptorArray( Bool32 runtimeDescriptorArray_ ) && VULKAN_HPP_NOEXCEPT + { + runtimeDescriptorArray = runtimeDescriptorArray_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDescriptorIndexingFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorIndexingFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorIndexingFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorIndexingFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderInputAttachmentArrayDynamicIndexing, + shaderUniformTexelBufferArrayDynamicIndexing, + shaderStorageTexelBufferArrayDynamicIndexing, + shaderUniformBufferArrayNonUniformIndexing, + shaderSampledImageArrayNonUniformIndexing, + shaderStorageBufferArrayNonUniformIndexing, + shaderStorageImageArrayNonUniformIndexing, + shaderInputAttachmentArrayNonUniformIndexing, + shaderUniformTexelBufferArrayNonUniformIndexing, + shaderStorageTexelBufferArrayNonUniformIndexing, + descriptorBindingUniformBufferUpdateAfterBind, + descriptorBindingSampledImageUpdateAfterBind, + descriptorBindingStorageImageUpdateAfterBind, + descriptorBindingStorageBufferUpdateAfterBind, + descriptorBindingUniformTexelBufferUpdateAfterBind, + descriptorBindingStorageTexelBufferUpdateAfterBind, + descriptorBindingUpdateUnusedWhilePending, + descriptorBindingPartiallyBound, + descriptorBindingVariableDescriptorCount, + runtimeDescriptorArray ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorIndexingFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing ) && + ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing ) && + ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing ) && + ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing ) && + ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing ) && + ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing ) && + ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing ) && + ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing ) && + ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing ) && + ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing ) && + ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind ) && + ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind ) && + ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind ) && + ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind ) && + ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind ) && + ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind ) && + ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending ) && + ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound ) && + ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount ) && + ( runtimeDescriptorArray == rhs.runtimeDescriptorArray ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingFeatures; + void * pNext = {}; + Bool32 shaderInputAttachmentArrayDynamicIndexing = {}; + Bool32 shaderUniformTexelBufferArrayDynamicIndexing = {}; + Bool32 shaderStorageTexelBufferArrayDynamicIndexing = {}; + Bool32 shaderUniformBufferArrayNonUniformIndexing = {}; + Bool32 shaderSampledImageArrayNonUniformIndexing = {}; + Bool32 shaderStorageBufferArrayNonUniformIndexing = {}; + Bool32 shaderStorageImageArrayNonUniformIndexing = {}; + Bool32 shaderInputAttachmentArrayNonUniformIndexing = {}; + Bool32 shaderUniformTexelBufferArrayNonUniformIndexing = {}; + Bool32 shaderStorageTexelBufferArrayNonUniformIndexing = {}; + Bool32 descriptorBindingUniformBufferUpdateAfterBind = {}; + Bool32 descriptorBindingSampledImageUpdateAfterBind = {}; + Bool32 descriptorBindingStorageImageUpdateAfterBind = {}; + Bool32 descriptorBindingStorageBufferUpdateAfterBind = {}; + Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind = {}; + Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind = {}; + Bool32 descriptorBindingUpdateUnusedWhilePending = {}; + Bool32 descriptorBindingPartiallyBound = {}; + Bool32 descriptorBindingVariableDescriptorCount = {}; + Bool32 runtimeDescriptorArray = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorIndexingFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorIndexingFeatures; + }; + + using PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures; + + // wrapper struct for struct VkPhysicalDeviceDescriptorIndexingProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorIndexingProperties.html + struct PhysicalDeviceDescriptorIndexingProperties + { + using NativeType = VkPhysicalDeviceDescriptorIndexingProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorIndexingProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties( uint32_t maxUpdateAfterBindDescriptorsInAllPools_ = {}, + Bool32 shaderUniformBufferArrayNonUniformIndexingNative_ = {}, + Bool32 shaderSampledImageArrayNonUniformIndexingNative_ = {}, + Bool32 shaderStorageBufferArrayNonUniformIndexingNative_ = {}, + Bool32 shaderStorageImageArrayNonUniformIndexingNative_ = {}, + Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_ = {}, + Bool32 robustBufferAccessUpdateAfterBind_ = {}, + Bool32 quadDivergentImplicitLod_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {}, + uint32_t maxPerStageUpdateAfterBindResources_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindSamplers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindSampledImages_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageImages_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxUpdateAfterBindDescriptorsInAllPools{ maxUpdateAfterBindDescriptorsInAllPools_ } + , shaderUniformBufferArrayNonUniformIndexingNative{ shaderUniformBufferArrayNonUniformIndexingNative_ } + , shaderSampledImageArrayNonUniformIndexingNative{ shaderSampledImageArrayNonUniformIndexingNative_ } + , shaderStorageBufferArrayNonUniformIndexingNative{ shaderStorageBufferArrayNonUniformIndexingNative_ } + , shaderStorageImageArrayNonUniformIndexingNative{ shaderStorageImageArrayNonUniformIndexingNative_ } + , shaderInputAttachmentArrayNonUniformIndexingNative{ shaderInputAttachmentArrayNonUniformIndexingNative_ } + , robustBufferAccessUpdateAfterBind{ robustBufferAccessUpdateAfterBind_ } + , quadDivergentImplicitLod{ quadDivergentImplicitLod_ } + , maxPerStageDescriptorUpdateAfterBindSamplers{ maxPerStageDescriptorUpdateAfterBindSamplers_ } + , maxPerStageDescriptorUpdateAfterBindUniformBuffers{ maxPerStageDescriptorUpdateAfterBindUniformBuffers_ } + , maxPerStageDescriptorUpdateAfterBindStorageBuffers{ maxPerStageDescriptorUpdateAfterBindStorageBuffers_ } + , maxPerStageDescriptorUpdateAfterBindSampledImages{ maxPerStageDescriptorUpdateAfterBindSampledImages_ } + , maxPerStageDescriptorUpdateAfterBindStorageImages{ maxPerStageDescriptorUpdateAfterBindStorageImages_ } + , maxPerStageDescriptorUpdateAfterBindInputAttachments{ maxPerStageDescriptorUpdateAfterBindInputAttachments_ } + , maxPerStageUpdateAfterBindResources{ maxPerStageUpdateAfterBindResources_ } + , maxDescriptorSetUpdateAfterBindSamplers{ maxDescriptorSetUpdateAfterBindSamplers_ } + , maxDescriptorSetUpdateAfterBindUniformBuffers{ maxDescriptorSetUpdateAfterBindUniformBuffers_ } + , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic{ maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ } + , maxDescriptorSetUpdateAfterBindStorageBuffers{ maxDescriptorSetUpdateAfterBindStorageBuffers_ } + , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic{ maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ } + , maxDescriptorSetUpdateAfterBindSampledImages{ maxDescriptorSetUpdateAfterBindSampledImages_ } + , maxDescriptorSetUpdateAfterBindStorageImages{ maxDescriptorSetUpdateAfterBindStorageImages_ } + , maxDescriptorSetUpdateAfterBindInputAttachments{ maxDescriptorSetUpdateAfterBindInputAttachments_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorIndexingProperties( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorIndexingProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorIndexingProperties & operator=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorIndexingProperties & operator=( VkPhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDescriptorIndexingProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorIndexingProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorIndexingProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorIndexingProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxUpdateAfterBindDescriptorsInAllPools, + shaderUniformBufferArrayNonUniformIndexingNative, + shaderSampledImageArrayNonUniformIndexingNative, + shaderStorageBufferArrayNonUniformIndexingNative, + shaderStorageImageArrayNonUniformIndexingNative, + shaderInputAttachmentArrayNonUniformIndexingNative, + robustBufferAccessUpdateAfterBind, + quadDivergentImplicitLod, + maxPerStageDescriptorUpdateAfterBindSamplers, + maxPerStageDescriptorUpdateAfterBindUniformBuffers, + maxPerStageDescriptorUpdateAfterBindStorageBuffers, + maxPerStageDescriptorUpdateAfterBindSampledImages, + maxPerStageDescriptorUpdateAfterBindStorageImages, + maxPerStageDescriptorUpdateAfterBindInputAttachments, + maxPerStageUpdateAfterBindResources, + maxDescriptorSetUpdateAfterBindSamplers, + maxDescriptorSetUpdateAfterBindUniformBuffers, + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic, + maxDescriptorSetUpdateAfterBindStorageBuffers, + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic, + maxDescriptorSetUpdateAfterBindSampledImages, + maxDescriptorSetUpdateAfterBindStorageImages, + maxDescriptorSetUpdateAfterBindInputAttachments ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorIndexingProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools ) && + ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative ) && + ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative ) && + ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative ) && + ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative ) && + ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative ) && + ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind ) && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod ) && + ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers ) && + ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers ) && + ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers ) && + ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages ) && + ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages ) && + ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments ) && + ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources ) && + ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers ) && + ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers ) && + ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers ) && + ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages ) && + ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages ) && + ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingProperties; + void * pNext = {}; + uint32_t maxUpdateAfterBindDescriptorsInAllPools = {}; + Bool32 shaderUniformBufferArrayNonUniformIndexingNative = {}; + Bool32 shaderSampledImageArrayNonUniformIndexingNative = {}; + Bool32 shaderStorageBufferArrayNonUniformIndexingNative = {}; + Bool32 shaderStorageImageArrayNonUniformIndexingNative = {}; + Bool32 shaderInputAttachmentArrayNonUniformIndexingNative = {}; + Bool32 robustBufferAccessUpdateAfterBind = {}; + Bool32 quadDivergentImplicitLod = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments = {}; + uint32_t maxPerStageUpdateAfterBindResources = {}; + uint32_t maxDescriptorSetUpdateAfterBindSamplers = {}; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers = {}; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages = {}; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorIndexingProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorIndexingProperties; + }; + + using PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties; + + // wrapper struct for struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV.html + struct PhysicalDeviceDescriptorPoolOverallocationFeaturesNV + { + using NativeType = VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorPoolOverallocationFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( Bool32 descriptorPoolOverallocation_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorPoolOverallocation{ descriptorPoolOverallocation_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorPoolOverallocationFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorPoolOverallocationFeaturesNV & + operator=( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorPoolOverallocationFeaturesNV & operator=( VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorPoolOverallocationFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorPoolOverallocationFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorPoolOverallocationFeaturesNV & setDescriptorPoolOverallocation( Bool32 descriptorPoolOverallocation_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorPoolOverallocation = descriptorPoolOverallocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorPoolOverallocationFeaturesNV && setDescriptorPoolOverallocation( Bool32 descriptorPoolOverallocation_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorPoolOverallocation = descriptorPoolOverallocation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorPoolOverallocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorPoolOverallocation == rhs.descriptorPoolOverallocation ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorPoolOverallocationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorPoolOverallocationFeaturesNV; + void * pNext = {}; + Bool32 descriptorPoolOverallocation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorPoolOverallocationFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorPoolOverallocationFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE.html + struct PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE + { + using NativeType = VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( Bool32 descriptorSetHostMapping_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorSetHostMapping{ descriptorSetHostMapping_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE & + operator=( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE & operator=( VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE & setDescriptorSetHostMapping( Bool32 descriptorSetHostMapping_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorSetHostMapping = descriptorSetHostMapping_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE && setDescriptorSetHostMapping( Bool32 descriptorSetHostMapping_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorSetHostMapping = descriptorSetHostMapping_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorSetHostMapping ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & ) const = default; +#else + bool operator==( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorSetHostMapping == rhs.descriptorSetHostMapping ); +# endif + } + + bool operator!=( PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE; + void * pNext = {}; + Bool32 descriptorSetHostMapping = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE; + }; + + // wrapper struct for struct VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR.html + struct PhysicalDeviceDeviceAddressCommandsFeaturesKHR + { + using NativeType = VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceAddressCommandsFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceAddressCommandsFeaturesKHR( Bool32 deviceAddressCommands_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceAddressCommands{ deviceAddressCommands_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDeviceAddressCommandsFeaturesKHR( PhysicalDeviceDeviceAddressCommandsFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceAddressCommandsFeaturesKHR( VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceAddressCommandsFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDeviceAddressCommandsFeaturesKHR & operator=( PhysicalDeviceDeviceAddressCommandsFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDeviceAddressCommandsFeaturesKHR & operator=( VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceAddressCommandsFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceAddressCommandsFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceAddressCommandsFeaturesKHR & setDeviceAddressCommands( Bool32 deviceAddressCommands_ ) & VULKAN_HPP_NOEXCEPT + { + deviceAddressCommands = deviceAddressCommands_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceAddressCommandsFeaturesKHR && setDeviceAddressCommands( Bool32 deviceAddressCommands_ ) && VULKAN_HPP_NOEXCEPT + { + deviceAddressCommands = deviceAddressCommands_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceAddressCommands ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceAddressCommandsFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceAddressCommandsFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceAddressCommands == rhs.deviceAddressCommands ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceAddressCommandsFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDeviceAddressCommandsFeaturesKHR; + void * pNext = {}; + Bool32 deviceAddressCommands = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceAddressCommandsFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceAddressCommandsFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV.html + struct PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV + { + using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( Bool32 deviceGeneratedCompute_ = {}, + Bool32 deviceGeneratedComputePipelines_ = {}, + Bool32 deviceGeneratedComputeCaptureReplay_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceGeneratedCompute{ deviceGeneratedCompute_ } + , deviceGeneratedComputePipelines{ deviceGeneratedComputePipelines_ } + , deviceGeneratedComputeCaptureReplay{ deviceGeneratedComputeCaptureReplay_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV & + operator=( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV & + operator=( VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV & setDeviceGeneratedCompute( Bool32 deviceGeneratedCompute_ ) & + VULKAN_HPP_NOEXCEPT + { + deviceGeneratedCompute = deviceGeneratedCompute_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV && setDeviceGeneratedCompute( Bool32 deviceGeneratedCompute_ ) && + VULKAN_HPP_NOEXCEPT + { + deviceGeneratedCompute = deviceGeneratedCompute_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV & + setDeviceGeneratedComputePipelines( Bool32 deviceGeneratedComputePipelines_ ) & + VULKAN_HPP_NOEXCEPT + { + deviceGeneratedComputePipelines = deviceGeneratedComputePipelines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV && + setDeviceGeneratedComputePipelines( Bool32 deviceGeneratedComputePipelines_ ) && + VULKAN_HPP_NOEXCEPT + { + deviceGeneratedComputePipelines = deviceGeneratedComputePipelines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV & + setDeviceGeneratedComputeCaptureReplay( Bool32 deviceGeneratedComputeCaptureReplay_ ) & + VULKAN_HPP_NOEXCEPT + { + deviceGeneratedComputeCaptureReplay = deviceGeneratedComputeCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV && + setDeviceGeneratedComputeCaptureReplay( Bool32 deviceGeneratedComputeCaptureReplay_ ) && + VULKAN_HPP_NOEXCEPT + { + deviceGeneratedComputeCaptureReplay = deviceGeneratedComputeCaptureReplay_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceGeneratedCompute, deviceGeneratedComputePipelines, deviceGeneratedComputeCaptureReplay ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceGeneratedCompute == rhs.deviceGeneratedCompute ) && + ( deviceGeneratedComputePipelines == rhs.deviceGeneratedComputePipelines ) && + ( deviceGeneratedComputeCaptureReplay == rhs.deviceGeneratedComputeCaptureReplay ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV; + void * pNext = {}; + Bool32 deviceGeneratedCompute = {}; + Bool32 deviceGeneratedComputePipelines = {}; + Bool32 deviceGeneratedComputeCaptureReplay = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.html + struct PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT + { + using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT( Bool32 deviceGeneratedCommands_ = {}, + Bool32 dynamicGeneratedPipelineLayout_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceGeneratedCommands{ deviceGeneratedCommands_ } + , dynamicGeneratedPipelineLayout{ dynamicGeneratedPipelineLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT( PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT & operator=( PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT & operator=( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT & setDeviceGeneratedCommands( Bool32 deviceGeneratedCommands_ ) & + VULKAN_HPP_NOEXCEPT + { + deviceGeneratedCommands = deviceGeneratedCommands_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT && setDeviceGeneratedCommands( Bool32 deviceGeneratedCommands_ ) && + VULKAN_HPP_NOEXCEPT + { + deviceGeneratedCommands = deviceGeneratedCommands_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT & setDynamicGeneratedPipelineLayout( Bool32 dynamicGeneratedPipelineLayout_ ) & + VULKAN_HPP_NOEXCEPT + { + dynamicGeneratedPipelineLayout = dynamicGeneratedPipelineLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT && setDynamicGeneratedPipelineLayout( Bool32 dynamicGeneratedPipelineLayout_ ) && + VULKAN_HPP_NOEXCEPT + { + dynamicGeneratedPipelineLayout = dynamicGeneratedPipelineLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceGeneratedCommands, dynamicGeneratedPipelineLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceGeneratedCommands == rhs.deviceGeneratedCommands ) && + ( dynamicGeneratedPipelineLayout == rhs.dynamicGeneratedPipelineLayout ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + void * pNext = {}; + Bool32 deviceGeneratedCommands = {}; + Bool32 dynamicGeneratedPipelineLayout = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV.html + struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV + { + using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( Bool32 deviceGeneratedCommands_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceGeneratedCommands{ deviceGeneratedCommands_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & setDeviceGeneratedCommands( Bool32 deviceGeneratedCommands_ ) & + VULKAN_HPP_NOEXCEPT + { + deviceGeneratedCommands = deviceGeneratedCommands_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV && setDeviceGeneratedCommands( Bool32 deviceGeneratedCommands_ ) && + VULKAN_HPP_NOEXCEPT + { + deviceGeneratedCommands = deviceGeneratedCommands_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceGeneratedCommands ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceGeneratedCommands == rhs.deviceGeneratedCommands ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + void * pNext = {}; + Bool32 deviceGeneratedCommands = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.html + struct PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT + { + using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT( uint32_t maxIndirectPipelineCount_ = {}, + uint32_t maxIndirectShaderObjectCount_ = {}, + uint32_t maxIndirectSequenceCount_ = {}, + uint32_t maxIndirectCommandsTokenCount_ = {}, + uint32_t maxIndirectCommandsTokenOffset_ = {}, + uint32_t maxIndirectCommandsIndirectStride_ = {}, + IndirectCommandsInputModeFlagsEXT supportedIndirectCommandsInputModes_ = {}, + ShaderStageFlags supportedIndirectCommandsShaderStages_ = {}, + ShaderStageFlags supportedIndirectCommandsShaderStagesPipelineBinding_ = {}, + ShaderStageFlags supportedIndirectCommandsShaderStagesShaderBinding_ = {}, + Bool32 deviceGeneratedCommandsTransformFeedback_ = {}, + Bool32 deviceGeneratedCommandsMultiDrawIndirectCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxIndirectPipelineCount{ maxIndirectPipelineCount_ } + , maxIndirectShaderObjectCount{ maxIndirectShaderObjectCount_ } + , maxIndirectSequenceCount{ maxIndirectSequenceCount_ } + , maxIndirectCommandsTokenCount{ maxIndirectCommandsTokenCount_ } + , maxIndirectCommandsTokenOffset{ maxIndirectCommandsTokenOffset_ } + , maxIndirectCommandsIndirectStride{ maxIndirectCommandsIndirectStride_ } + , supportedIndirectCommandsInputModes{ supportedIndirectCommandsInputModes_ } + , supportedIndirectCommandsShaderStages{ supportedIndirectCommandsShaderStages_ } + , supportedIndirectCommandsShaderStagesPipelineBinding{ supportedIndirectCommandsShaderStagesPipelineBinding_ } + , supportedIndirectCommandsShaderStagesShaderBinding{ supportedIndirectCommandsShaderStagesShaderBinding_ } + , deviceGeneratedCommandsTransformFeedback{ deviceGeneratedCommandsTransformFeedback_ } + , deviceGeneratedCommandsMultiDrawIndirectCount{ deviceGeneratedCommandsMultiDrawIndirectCount_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT( PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT & + operator=( PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT & operator=( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxIndirectPipelineCount, + maxIndirectShaderObjectCount, + maxIndirectSequenceCount, + maxIndirectCommandsTokenCount, + maxIndirectCommandsTokenOffset, + maxIndirectCommandsIndirectStride, + supportedIndirectCommandsInputModes, + supportedIndirectCommandsShaderStages, + supportedIndirectCommandsShaderStagesPipelineBinding, + supportedIndirectCommandsShaderStagesShaderBinding, + deviceGeneratedCommandsTransformFeedback, + deviceGeneratedCommandsMultiDrawIndirectCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxIndirectPipelineCount == rhs.maxIndirectPipelineCount ) && + ( maxIndirectShaderObjectCount == rhs.maxIndirectShaderObjectCount ) && ( maxIndirectSequenceCount == rhs.maxIndirectSequenceCount ) && + ( maxIndirectCommandsTokenCount == rhs.maxIndirectCommandsTokenCount ) && + ( maxIndirectCommandsTokenOffset == rhs.maxIndirectCommandsTokenOffset ) && + ( maxIndirectCommandsIndirectStride == rhs.maxIndirectCommandsIndirectStride ) && + ( supportedIndirectCommandsInputModes == rhs.supportedIndirectCommandsInputModes ) && + ( supportedIndirectCommandsShaderStages == rhs.supportedIndirectCommandsShaderStages ) && + ( supportedIndirectCommandsShaderStagesPipelineBinding == rhs.supportedIndirectCommandsShaderStagesPipelineBinding ) && + ( supportedIndirectCommandsShaderStagesShaderBinding == rhs.supportedIndirectCommandsShaderStagesShaderBinding ) && + ( deviceGeneratedCommandsTransformFeedback == rhs.deviceGeneratedCommandsTransformFeedback ) && + ( deviceGeneratedCommandsMultiDrawIndirectCount == rhs.deviceGeneratedCommandsMultiDrawIndirectCount ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + void * pNext = {}; + uint32_t maxIndirectPipelineCount = {}; + uint32_t maxIndirectShaderObjectCount = {}; + uint32_t maxIndirectSequenceCount = {}; + uint32_t maxIndirectCommandsTokenCount = {}; + uint32_t maxIndirectCommandsTokenOffset = {}; + uint32_t maxIndirectCommandsIndirectStride = {}; + IndirectCommandsInputModeFlagsEXT supportedIndirectCommandsInputModes = {}; + ShaderStageFlags supportedIndirectCommandsShaderStages = {}; + ShaderStageFlags supportedIndirectCommandsShaderStagesPipelineBinding = {}; + ShaderStageFlags supportedIndirectCommandsShaderStagesShaderBinding = {}; + Bool32 deviceGeneratedCommandsTransformFeedback = {}; + Bool32 deviceGeneratedCommandsMultiDrawIndirectCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV.html + struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV + { + using NativeType = VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( uint32_t maxGraphicsShaderGroupCount_ = {}, + uint32_t maxIndirectSequenceCount_ = {}, + uint32_t maxIndirectCommandsTokenCount_ = {}, + uint32_t maxIndirectCommandsStreamCount_ = {}, + uint32_t maxIndirectCommandsTokenOffset_ = {}, + uint32_t maxIndirectCommandsStreamStride_ = {}, + uint32_t minSequencesCountBufferOffsetAlignment_ = {}, + uint32_t minSequencesIndexBufferOffsetAlignment_ = {}, + uint32_t minIndirectCommandsBufferOffsetAlignment_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxGraphicsShaderGroupCount{ maxGraphicsShaderGroupCount_ } + , maxIndirectSequenceCount{ maxIndirectSequenceCount_ } + , maxIndirectCommandsTokenCount{ maxIndirectCommandsTokenCount_ } + , maxIndirectCommandsStreamCount{ maxIndirectCommandsStreamCount_ } + , maxIndirectCommandsTokenOffset{ maxIndirectCommandsTokenOffset_ } + , maxIndirectCommandsStreamStride{ maxIndirectCommandsStreamStride_ } + , minSequencesCountBufferOffsetAlignment{ minSequencesCountBufferOffsetAlignment_ } + , minSequencesIndexBufferOffsetAlignment{ minSequencesIndexBufferOffsetAlignment_ } + , minIndirectCommandsBufferOffsetAlignment{ minIndirectCommandsBufferOffsetAlignment_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceGeneratedCommandsPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDeviceGeneratedCommandsPropertiesNV & + operator=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDeviceGeneratedCommandsPropertiesNV & operator=( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxGraphicsShaderGroupCount, + maxIndirectSequenceCount, + maxIndirectCommandsTokenCount, + maxIndirectCommandsStreamCount, + maxIndirectCommandsTokenOffset, + maxIndirectCommandsStreamStride, + minSequencesCountBufferOffsetAlignment, + minSequencesIndexBufferOffsetAlignment, + minIndirectCommandsBufferOffsetAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxGraphicsShaderGroupCount == rhs.maxGraphicsShaderGroupCount ) && + ( maxIndirectSequenceCount == rhs.maxIndirectSequenceCount ) && ( maxIndirectCommandsTokenCount == rhs.maxIndirectCommandsTokenCount ) && + ( maxIndirectCommandsStreamCount == rhs.maxIndirectCommandsStreamCount ) && + ( maxIndirectCommandsTokenOffset == rhs.maxIndirectCommandsTokenOffset ) && + ( maxIndirectCommandsStreamStride == rhs.maxIndirectCommandsStreamStride ) && + ( minSequencesCountBufferOffsetAlignment == rhs.minSequencesCountBufferOffsetAlignment ) && + ( minSequencesIndexBufferOffsetAlignment == rhs.minSequencesIndexBufferOffsetAlignment ) && + ( minIndirectCommandsBufferOffsetAlignment == rhs.minIndirectCommandsBufferOffsetAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + void * pNext = {}; + uint32_t maxGraphicsShaderGroupCount = {}; + uint32_t maxIndirectSequenceCount = {}; + uint32_t maxIndirectCommandsTokenCount = {}; + uint32_t maxIndirectCommandsStreamCount = {}; + uint32_t maxIndirectCommandsTokenOffset = {}; + uint32_t maxIndirectCommandsStreamStride = {}; + uint32_t minSequencesCountBufferOffsetAlignment = {}; + uint32_t minSequencesIndexBufferOffsetAlignment = {}; + uint32_t minIndirectCommandsBufferOffsetAlignment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDeviceMemoryReportFeaturesEXT.html + struct PhysicalDeviceDeviceMemoryReportFeaturesEXT + { + using NativeType = VkPhysicalDeviceDeviceMemoryReportFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT( Bool32 deviceMemoryReport_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceMemoryReport{ deviceMemoryReport_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDeviceMemoryReportFeaturesEXT( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDeviceMemoryReportFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT & setDeviceMemoryReport( Bool32 deviceMemoryReport_ ) & VULKAN_HPP_NOEXCEPT + { + deviceMemoryReport = deviceMemoryReport_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT && setDeviceMemoryReport( Bool32 deviceMemoryReport_ ) && VULKAN_HPP_NOEXCEPT + { + deviceMemoryReport = deviceMemoryReport_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDeviceMemoryReportFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceMemoryReport ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceMemoryReport == rhs.deviceMemoryReport ); +# endif + } + + bool operator!=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT; + void * pNext = {}; + Bool32 deviceMemoryReport = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceMemoryReportFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDeviceMemoryReportFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDiagnosticsConfigFeaturesNV.html + struct PhysicalDeviceDiagnosticsConfigFeaturesNV + { + using NativeType = VkPhysicalDeviceDiagnosticsConfigFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV( Bool32 diagnosticsConfig_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , diagnosticsConfig{ diagnosticsConfig_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDiagnosticsConfigFeaturesNV( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDiagnosticsConfigFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV & setDiagnosticsConfig( Bool32 diagnosticsConfig_ ) & VULKAN_HPP_NOEXCEPT + { + diagnosticsConfig = diagnosticsConfig_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV && setDiagnosticsConfig( Bool32 diagnosticsConfig_ ) && VULKAN_HPP_NOEXCEPT + { + diagnosticsConfig = diagnosticsConfig_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDiagnosticsConfigFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, diagnosticsConfig ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDiagnosticsConfigFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( diagnosticsConfig == rhs.diagnosticsConfig ); +# endif + } + + bool operator!=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV; + void * pNext = {}; + Bool32 diagnosticsConfig = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDiagnosticsConfigFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDiagnosticsConfigFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceDiscardRectanglePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDiscardRectanglePropertiesEXT.html + struct PhysicalDeviceDiscardRectanglePropertiesEXT + { + using NativeType = VkPhysicalDeviceDiscardRectanglePropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxDiscardRectangles{ maxDiscardRectangles_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDiscardRectanglePropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDiscardRectanglePropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDiscardRectanglePropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDiscardRectanglePropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxDiscardRectangles ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDiscardRectanglePropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDiscardRectangles == rhs.maxDiscardRectangles ); +# endif + } + + bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT; + void * pNext = {}; + uint32_t maxDiscardRectangles = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDiscardRectanglePropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDiscardRectanglePropertiesEXT; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkPhysicalDeviceDisplacementMicromapFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapFeaturesNV.html + struct PhysicalDeviceDisplacementMicromapFeaturesNV + { + using NativeType = VkPhysicalDeviceDisplacementMicromapFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDisplacementMicromapFeaturesNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDisplacementMicromapFeaturesNV( Bool32 displacementMicromap_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , displacementMicromap{ displacementMicromap_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDisplacementMicromapFeaturesNV( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDisplacementMicromapFeaturesNV( VkPhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDisplacementMicromapFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDisplacementMicromapFeaturesNV & operator=( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDisplacementMicromapFeaturesNV & operator=( VkPhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDisplacementMicromapFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDisplacementMicromapFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDisplacementMicromapFeaturesNV & setDisplacementMicromap( Bool32 displacementMicromap_ ) & VULKAN_HPP_NOEXCEPT + { + displacementMicromap = displacementMicromap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDisplacementMicromapFeaturesNV && setDisplacementMicromap( Bool32 displacementMicromap_ ) && VULKAN_HPP_NOEXCEPT + { + displacementMicromap = displacementMicromap_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDisplacementMicromapFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDisplacementMicromapFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDisplacementMicromapFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDisplacementMicromapFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, displacementMicromap ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDisplacementMicromapFeaturesNV const & ) const = default; +# else + bool operator==( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( displacementMicromap == rhs.displacementMicromap ); +# endif + } + + bool operator!=( PhysicalDeviceDisplacementMicromapFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDisplacementMicromapFeaturesNV; + void * pNext = {}; + Bool32 displacementMicromap = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDisplacementMicromapFeaturesNV; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDisplacementMicromapFeaturesNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkPhysicalDeviceDisplacementMicromapPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDisplacementMicromapPropertiesNV.html + struct PhysicalDeviceDisplacementMicromapPropertiesNV + { + using NativeType = VkPhysicalDeviceDisplacementMicromapPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDisplacementMicromapPropertiesNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDisplacementMicromapPropertiesNV( uint32_t maxDisplacementMicromapSubdivisionLevel_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxDisplacementMicromapSubdivisionLevel{ maxDisplacementMicromapSubdivisionLevel_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDisplacementMicromapPropertiesNV( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDisplacementMicromapPropertiesNV( VkPhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDisplacementMicromapPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDisplacementMicromapPropertiesNV & operator=( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDisplacementMicromapPropertiesNV & operator=( VkPhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDisplacementMicromapPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDisplacementMicromapPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDisplacementMicromapPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDisplacementMicromapPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxDisplacementMicromapSubdivisionLevel ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDisplacementMicromapPropertiesNV const & ) const = default; +# else + bool operator==( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDisplacementMicromapSubdivisionLevel == rhs.maxDisplacementMicromapSubdivisionLevel ); +# endif + } + + bool operator!=( PhysicalDeviceDisplacementMicromapPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDisplacementMicromapPropertiesNV; + void * pNext = {}; + uint32_t maxDisplacementMicromapSubdivisionLevel = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDisplacementMicromapPropertiesNV; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDisplacementMicromapPropertiesNV; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkPhysicalDeviceDriverProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDriverProperties.html + struct PhysicalDeviceDriverProperties + { + using NativeType = VkPhysicalDeviceDriverProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDriverProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties( DriverId driverID_ = DriverId::eAmdProprietary, + std::array const & driverName_ = {}, + std::array const & driverInfo_ = {}, + ConformanceVersion conformanceVersion_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , driverID{ driverID_ } + , driverName{ driverName_ } + , driverInfo{ driverInfo_ } + , conformanceVersion{ conformanceVersion_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDriverProperties( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDriverProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDriverProperties & operator=( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDriverProperties & operator=( VkPhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDriverProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDriverProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDriverProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDriverProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + ConformanceVersion const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, driverID, driverName, driverInfo, conformanceVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = driverID <=> rhs.driverID; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( driverName, rhs.driverName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = strcmp( driverInfo, rhs.driverInfo ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = conformanceVersion <=> rhs.conformanceVersion; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( driverID == rhs.driverID ) && ( strcmp( driverName, rhs.driverName ) == 0 ) && + ( strcmp( driverInfo, rhs.driverInfo ) == 0 ) && ( conformanceVersion == rhs.conformanceVersion ); + } + + bool operator!=( PhysicalDeviceDriverProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePhysicalDeviceDriverProperties; + void * pNext = {}; + DriverId driverID = DriverId::eAmdProprietary; + ArrayWrapper1D driverName = {}; + ArrayWrapper1D driverInfo = {}; + ConformanceVersion conformanceVersion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDriverProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDriverProperties; + }; + + using PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties; + + // wrapper struct for struct VkPhysicalDeviceDrmPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDrmPropertiesEXT.html + struct PhysicalDeviceDrmPropertiesEXT + { + using NativeType = VkPhysicalDeviceDrmPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDrmPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDrmPropertiesEXT( Bool32 hasPrimary_ = {}, + Bool32 hasRender_ = {}, + int64_t primaryMajor_ = {}, + int64_t primaryMinor_ = {}, + int64_t renderMajor_ = {}, + int64_t renderMinor_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , hasPrimary{ hasPrimary_ } + , hasRender{ hasRender_ } + , primaryMajor{ primaryMajor_ } + , primaryMinor{ primaryMinor_ } + , renderMajor{ renderMajor_ } + , renderMinor{ renderMinor_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDrmPropertiesEXT( PhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDrmPropertiesEXT( VkPhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDrmPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDrmPropertiesEXT & operator=( PhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDrmPropertiesEXT & operator=( VkPhysicalDeviceDrmPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceDrmPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDrmPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDrmPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDrmPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hasPrimary, hasRender, primaryMajor, primaryMinor, renderMajor, renderMinor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDrmPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDrmPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasPrimary == rhs.hasPrimary ) && ( hasRender == rhs.hasRender ) && + ( primaryMajor == rhs.primaryMajor ) && ( primaryMinor == rhs.primaryMinor ) && ( renderMajor == rhs.renderMajor ) && + ( renderMinor == rhs.renderMinor ); +# endif + } + + bool operator!=( PhysicalDeviceDrmPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDrmPropertiesEXT; + void * pNext = {}; + Bool32 hasPrimary = {}; + Bool32 hasRender = {}; + int64_t primaryMajor = {}; + int64_t primaryMinor = {}; + int64_t renderMajor = {}; + int64_t renderMinor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDrmPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDrmPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceDynamicRenderingFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingFeatures.html + struct PhysicalDeviceDynamicRenderingFeatures + { + using NativeType = VkPhysicalDeviceDynamicRenderingFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDynamicRenderingFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeatures( Bool32 dynamicRendering_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dynamicRendering{ dynamicRendering_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingFeatures( PhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDynamicRenderingFeatures( VkPhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDynamicRenderingFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDynamicRenderingFeatures & operator=( PhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDynamicRenderingFeatures & operator=( VkPhysicalDeviceDynamicRenderingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures & setDynamicRendering( Bool32 dynamicRendering_ ) & VULKAN_HPP_NOEXCEPT + { + dynamicRendering = dynamicRendering_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingFeatures && setDynamicRendering( Bool32 dynamicRendering_ ) && VULKAN_HPP_NOEXCEPT + { + dynamicRendering = dynamicRendering_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDynamicRenderingFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDynamicRenderingFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDynamicRenderingFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDynamicRenderingFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dynamicRendering ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDynamicRenderingFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceDynamicRenderingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicRendering == rhs.dynamicRendering ); +# endif + } + + bool operator!=( PhysicalDeviceDynamicRenderingFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDynamicRenderingFeatures; + void * pNext = {}; + Bool32 dynamicRendering = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDynamicRenderingFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDynamicRenderingFeatures; + }; + + using PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures; + + // wrapper struct for struct VkPhysicalDeviceDynamicRenderingLocalReadFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingLocalReadFeatures.html + struct PhysicalDeviceDynamicRenderingLocalReadFeatures + { + using NativeType = VkPhysicalDeviceDynamicRenderingLocalReadFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDynamicRenderingLocalReadFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingLocalReadFeatures( Bool32 dynamicRenderingLocalRead_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dynamicRenderingLocalRead{ dynamicRenderingLocalRead_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceDynamicRenderingLocalReadFeatures( PhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDynamicRenderingLocalReadFeatures( VkPhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDynamicRenderingLocalReadFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDynamicRenderingLocalReadFeatures & operator=( PhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDynamicRenderingLocalReadFeatures & operator=( VkPhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingLocalReadFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingLocalReadFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingLocalReadFeatures & setDynamicRenderingLocalRead( Bool32 dynamicRenderingLocalRead_ ) & + VULKAN_HPP_NOEXCEPT + { + dynamicRenderingLocalRead = dynamicRenderingLocalRead_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingLocalReadFeatures && setDynamicRenderingLocalRead( Bool32 dynamicRenderingLocalRead_ ) && + VULKAN_HPP_NOEXCEPT + { + dynamicRenderingLocalRead = dynamicRenderingLocalRead_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDynamicRenderingLocalReadFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDynamicRenderingLocalReadFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDynamicRenderingLocalReadFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDynamicRenderingLocalReadFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dynamicRenderingLocalRead ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDynamicRenderingLocalReadFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicRenderingLocalRead == rhs.dynamicRenderingLocalRead ); +# endif + } + + bool operator!=( PhysicalDeviceDynamicRenderingLocalReadFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDynamicRenderingLocalReadFeatures; + void * pNext = {}; + Bool32 dynamicRenderingLocalRead = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDynamicRenderingLocalReadFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDynamicRenderingLocalReadFeatures; + }; + + using PhysicalDeviceDynamicRenderingLocalReadFeaturesKHR = PhysicalDeviceDynamicRenderingLocalReadFeatures; + + // wrapper struct for struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.html + struct PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT + { + using NativeType = VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( Bool32 dynamicRenderingUnusedAttachments_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dynamicRenderingUnusedAttachments{ dynamicRenderingUnusedAttachments_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( + *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT & + operator=( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT & + operator=( VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT & + setDynamicRenderingUnusedAttachments( Bool32 dynamicRenderingUnusedAttachments_ ) & + VULKAN_HPP_NOEXCEPT + { + dynamicRenderingUnusedAttachments = dynamicRenderingUnusedAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT && + setDynamicRenderingUnusedAttachments( Bool32 dynamicRenderingUnusedAttachments_ ) && + VULKAN_HPP_NOEXCEPT + { + dynamicRenderingUnusedAttachments = dynamicRenderingUnusedAttachments_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dynamicRenderingUnusedAttachments ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicRenderingUnusedAttachments == rhs.dynamicRenderingUnusedAttachments ); +# endif + } + + bool operator!=( PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; + void * pNext = {}; + Bool32 dynamicRenderingUnusedAttachments = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceExclusiveScissorFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExclusiveScissorFeaturesNV.html + struct PhysicalDeviceExclusiveScissorFeaturesNV + { + using NativeType = VkPhysicalDeviceExclusiveScissorFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( Bool32 exclusiveScissor_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , exclusiveScissor{ exclusiveScissor_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExclusiveScissorFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExclusiveScissorFeaturesNV & operator=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExclusiveScissorFeaturesNV & operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & setExclusiveScissor( Bool32 exclusiveScissor_ ) & VULKAN_HPP_NOEXCEPT + { + exclusiveScissor = exclusiveScissor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV && setExclusiveScissor( Bool32 exclusiveScissor_ ) && VULKAN_HPP_NOEXCEPT + { + exclusiveScissor = exclusiveScissor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExclusiveScissorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExclusiveScissorFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExclusiveScissorFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExclusiveScissorFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, exclusiveScissor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExclusiveScissorFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exclusiveScissor == rhs.exclusiveScissor ); +# endif + } + + bool operator!=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV; + void * pNext = {}; + Bool32 exclusiveScissor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExclusiveScissorFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExclusiveScissorFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState2FeaturesEXT.html + struct PhysicalDeviceExtendedDynamicState2FeaturesEXT + { + using NativeType = VkPhysicalDeviceExtendedDynamicState2FeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState2FeaturesEXT( Bool32 extendedDynamicState2_ = {}, + Bool32 extendedDynamicState2LogicOp_ = {}, + Bool32 extendedDynamicState2PatchControlPoints_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , extendedDynamicState2{ extendedDynamicState2_ } + , extendedDynamicState2LogicOp{ extendedDynamicState2LogicOp_ } + , extendedDynamicState2PatchControlPoints{ extendedDynamicState2PatchControlPoints_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExtendedDynamicState2FeaturesEXT( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExtendedDynamicState2FeaturesEXT( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExtendedDynamicState2FeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExtendedDynamicState2FeaturesEXT & operator=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExtendedDynamicState2FeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setExtendedDynamicState2( Bool32 extendedDynamicState2_ ) & VULKAN_HPP_NOEXCEPT + { + extendedDynamicState2 = extendedDynamicState2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT && setExtendedDynamicState2( Bool32 extendedDynamicState2_ ) && VULKAN_HPP_NOEXCEPT + { + extendedDynamicState2 = extendedDynamicState2_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & setExtendedDynamicState2LogicOp( Bool32 extendedDynamicState2LogicOp_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState2LogicOp = extendedDynamicState2LogicOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT && setExtendedDynamicState2LogicOp( Bool32 extendedDynamicState2LogicOp_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState2LogicOp = extendedDynamicState2LogicOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT & + setExtendedDynamicState2PatchControlPoints( Bool32 extendedDynamicState2PatchControlPoints_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState2PatchControlPoints = extendedDynamicState2PatchControlPoints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState2FeaturesEXT && + setExtendedDynamicState2PatchControlPoints( Bool32 extendedDynamicState2PatchControlPoints_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState2PatchControlPoints = extendedDynamicState2PatchControlPoints_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, extendedDynamicState2, extendedDynamicState2LogicOp, extendedDynamicState2PatchControlPoints ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedDynamicState2 == rhs.extendedDynamicState2 ) && + ( extendedDynamicState2LogicOp == rhs.extendedDynamicState2LogicOp ) && + ( extendedDynamicState2PatchControlPoints == rhs.extendedDynamicState2PatchControlPoints ); +# endif + } + + bool operator!=( PhysicalDeviceExtendedDynamicState2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT; + void * pNext = {}; + Bool32 extendedDynamicState2 = {}; + Bool32 extendedDynamicState2LogicOp = {}; + Bool32 extendedDynamicState2PatchControlPoints = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedDynamicState2FeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedDynamicState2FeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3FeaturesEXT.html + struct PhysicalDeviceExtendedDynamicState3FeaturesEXT + { + using NativeType = VkPhysicalDeviceExtendedDynamicState3FeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExtendedDynamicState3FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState3FeaturesEXT( Bool32 extendedDynamicState3TessellationDomainOrigin_ = {}, + Bool32 extendedDynamicState3DepthClampEnable_ = {}, + Bool32 extendedDynamicState3PolygonMode_ = {}, + Bool32 extendedDynamicState3RasterizationSamples_ = {}, + Bool32 extendedDynamicState3SampleMask_ = {}, + Bool32 extendedDynamicState3AlphaToCoverageEnable_ = {}, + Bool32 extendedDynamicState3AlphaToOneEnable_ = {}, + Bool32 extendedDynamicState3LogicOpEnable_ = {}, + Bool32 extendedDynamicState3ColorBlendEnable_ = {}, + Bool32 extendedDynamicState3ColorBlendEquation_ = {}, + Bool32 extendedDynamicState3ColorWriteMask_ = {}, + Bool32 extendedDynamicState3RasterizationStream_ = {}, + Bool32 extendedDynamicState3ConservativeRasterizationMode_ = {}, + Bool32 extendedDynamicState3ExtraPrimitiveOverestimationSize_ = {}, + Bool32 extendedDynamicState3DepthClipEnable_ = {}, + Bool32 extendedDynamicState3SampleLocationsEnable_ = {}, + Bool32 extendedDynamicState3ColorBlendAdvanced_ = {}, + Bool32 extendedDynamicState3ProvokingVertexMode_ = {}, + Bool32 extendedDynamicState3LineRasterizationMode_ = {}, + Bool32 extendedDynamicState3LineStippleEnable_ = {}, + Bool32 extendedDynamicState3DepthClipNegativeOneToOne_ = {}, + Bool32 extendedDynamicState3ViewportWScalingEnable_ = {}, + Bool32 extendedDynamicState3ViewportSwizzle_ = {}, + Bool32 extendedDynamicState3CoverageToColorEnable_ = {}, + Bool32 extendedDynamicState3CoverageToColorLocation_ = {}, + Bool32 extendedDynamicState3CoverageModulationMode_ = {}, + Bool32 extendedDynamicState3CoverageModulationTableEnable_ = {}, + Bool32 extendedDynamicState3CoverageModulationTable_ = {}, + Bool32 extendedDynamicState3CoverageReductionMode_ = {}, + Bool32 extendedDynamicState3RepresentativeFragmentTestEnable_ = {}, + Bool32 extendedDynamicState3ShadingRateImageEnable_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , extendedDynamicState3TessellationDomainOrigin{ extendedDynamicState3TessellationDomainOrigin_ } + , extendedDynamicState3DepthClampEnable{ extendedDynamicState3DepthClampEnable_ } + , extendedDynamicState3PolygonMode{ extendedDynamicState3PolygonMode_ } + , extendedDynamicState3RasterizationSamples{ extendedDynamicState3RasterizationSamples_ } + , extendedDynamicState3SampleMask{ extendedDynamicState3SampleMask_ } + , extendedDynamicState3AlphaToCoverageEnable{ extendedDynamicState3AlphaToCoverageEnable_ } + , extendedDynamicState3AlphaToOneEnable{ extendedDynamicState3AlphaToOneEnable_ } + , extendedDynamicState3LogicOpEnable{ extendedDynamicState3LogicOpEnable_ } + , extendedDynamicState3ColorBlendEnable{ extendedDynamicState3ColorBlendEnable_ } + , extendedDynamicState3ColorBlendEquation{ extendedDynamicState3ColorBlendEquation_ } + , extendedDynamicState3ColorWriteMask{ extendedDynamicState3ColorWriteMask_ } + , extendedDynamicState3RasterizationStream{ extendedDynamicState3RasterizationStream_ } + , extendedDynamicState3ConservativeRasterizationMode{ extendedDynamicState3ConservativeRasterizationMode_ } + , extendedDynamicState3ExtraPrimitiveOverestimationSize{ extendedDynamicState3ExtraPrimitiveOverestimationSize_ } + , extendedDynamicState3DepthClipEnable{ extendedDynamicState3DepthClipEnable_ } + , extendedDynamicState3SampleLocationsEnable{ extendedDynamicState3SampleLocationsEnable_ } + , extendedDynamicState3ColorBlendAdvanced{ extendedDynamicState3ColorBlendAdvanced_ } + , extendedDynamicState3ProvokingVertexMode{ extendedDynamicState3ProvokingVertexMode_ } + , extendedDynamicState3LineRasterizationMode{ extendedDynamicState3LineRasterizationMode_ } + , extendedDynamicState3LineStippleEnable{ extendedDynamicState3LineStippleEnable_ } + , extendedDynamicState3DepthClipNegativeOneToOne{ extendedDynamicState3DepthClipNegativeOneToOne_ } + , extendedDynamicState3ViewportWScalingEnable{ extendedDynamicState3ViewportWScalingEnable_ } + , extendedDynamicState3ViewportSwizzle{ extendedDynamicState3ViewportSwizzle_ } + , extendedDynamicState3CoverageToColorEnable{ extendedDynamicState3CoverageToColorEnable_ } + , extendedDynamicState3CoverageToColorLocation{ extendedDynamicState3CoverageToColorLocation_ } + , extendedDynamicState3CoverageModulationMode{ extendedDynamicState3CoverageModulationMode_ } + , extendedDynamicState3CoverageModulationTableEnable{ extendedDynamicState3CoverageModulationTableEnable_ } + , extendedDynamicState3CoverageModulationTable{ extendedDynamicState3CoverageModulationTable_ } + , extendedDynamicState3CoverageReductionMode{ extendedDynamicState3CoverageReductionMode_ } + , extendedDynamicState3RepresentativeFragmentTestEnable{ extendedDynamicState3RepresentativeFragmentTestEnable_ } + , extendedDynamicState3ShadingRateImageEnable{ extendedDynamicState3ShadingRateImageEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExtendedDynamicState3FeaturesEXT( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExtendedDynamicState3FeaturesEXT( VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExtendedDynamicState3FeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExtendedDynamicState3FeaturesEXT & operator=( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExtendedDynamicState3FeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3TessellationDomainOrigin( Bool32 extendedDynamicState3TessellationDomainOrigin_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3TessellationDomainOrigin = extendedDynamicState3TessellationDomainOrigin_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3TessellationDomainOrigin( Bool32 extendedDynamicState3TessellationDomainOrigin_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3TessellationDomainOrigin = extendedDynamicState3TessellationDomainOrigin_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3DepthClampEnable( Bool32 extendedDynamicState3DepthClampEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3DepthClampEnable = extendedDynamicState3DepthClampEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3DepthClampEnable( Bool32 extendedDynamicState3DepthClampEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3DepthClampEnable = extendedDynamicState3DepthClampEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setExtendedDynamicState3PolygonMode( Bool32 extendedDynamicState3PolygonMode_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3PolygonMode = extendedDynamicState3PolygonMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && setExtendedDynamicState3PolygonMode( Bool32 extendedDynamicState3PolygonMode_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3PolygonMode = extendedDynamicState3PolygonMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3RasterizationSamples( Bool32 extendedDynamicState3RasterizationSamples_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3RasterizationSamples = extendedDynamicState3RasterizationSamples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3RasterizationSamples( Bool32 extendedDynamicState3RasterizationSamples_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3RasterizationSamples = extendedDynamicState3RasterizationSamples_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & setExtendedDynamicState3SampleMask( Bool32 extendedDynamicState3SampleMask_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3SampleMask = extendedDynamicState3SampleMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && setExtendedDynamicState3SampleMask( Bool32 extendedDynamicState3SampleMask_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3SampleMask = extendedDynamicState3SampleMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3AlphaToCoverageEnable( Bool32 extendedDynamicState3AlphaToCoverageEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3AlphaToCoverageEnable = extendedDynamicState3AlphaToCoverageEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3AlphaToCoverageEnable( Bool32 extendedDynamicState3AlphaToCoverageEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3AlphaToCoverageEnable = extendedDynamicState3AlphaToCoverageEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3AlphaToOneEnable( Bool32 extendedDynamicState3AlphaToOneEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3AlphaToOneEnable = extendedDynamicState3AlphaToOneEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3AlphaToOneEnable( Bool32 extendedDynamicState3AlphaToOneEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3AlphaToOneEnable = extendedDynamicState3AlphaToOneEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3LogicOpEnable( Bool32 extendedDynamicState3LogicOpEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3LogicOpEnable = extendedDynamicState3LogicOpEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3LogicOpEnable( Bool32 extendedDynamicState3LogicOpEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3LogicOpEnable = extendedDynamicState3LogicOpEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3ColorBlendEnable( Bool32 extendedDynamicState3ColorBlendEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ColorBlendEnable = extendedDynamicState3ColorBlendEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3ColorBlendEnable( Bool32 extendedDynamicState3ColorBlendEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ColorBlendEnable = extendedDynamicState3ColorBlendEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3ColorBlendEquation( Bool32 extendedDynamicState3ColorBlendEquation_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ColorBlendEquation = extendedDynamicState3ColorBlendEquation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3ColorBlendEquation( Bool32 extendedDynamicState3ColorBlendEquation_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ColorBlendEquation = extendedDynamicState3ColorBlendEquation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3ColorWriteMask( Bool32 extendedDynamicState3ColorWriteMask_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ColorWriteMask = extendedDynamicState3ColorWriteMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3ColorWriteMask( Bool32 extendedDynamicState3ColorWriteMask_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ColorWriteMask = extendedDynamicState3ColorWriteMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3RasterizationStream( Bool32 extendedDynamicState3RasterizationStream_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3RasterizationStream = extendedDynamicState3RasterizationStream_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3RasterizationStream( Bool32 extendedDynamicState3RasterizationStream_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3RasterizationStream = extendedDynamicState3RasterizationStream_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3ConservativeRasterizationMode( Bool32 extendedDynamicState3ConservativeRasterizationMode_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ConservativeRasterizationMode = extendedDynamicState3ConservativeRasterizationMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3ConservativeRasterizationMode( Bool32 extendedDynamicState3ConservativeRasterizationMode_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ConservativeRasterizationMode = extendedDynamicState3ConservativeRasterizationMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3ExtraPrimitiveOverestimationSize( Bool32 extendedDynamicState3ExtraPrimitiveOverestimationSize_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ExtraPrimitiveOverestimationSize = extendedDynamicState3ExtraPrimitiveOverestimationSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3ExtraPrimitiveOverestimationSize( Bool32 extendedDynamicState3ExtraPrimitiveOverestimationSize_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ExtraPrimitiveOverestimationSize = extendedDynamicState3ExtraPrimitiveOverestimationSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3DepthClipEnable( Bool32 extendedDynamicState3DepthClipEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3DepthClipEnable = extendedDynamicState3DepthClipEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3DepthClipEnable( Bool32 extendedDynamicState3DepthClipEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3DepthClipEnable = extendedDynamicState3DepthClipEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3SampleLocationsEnable( Bool32 extendedDynamicState3SampleLocationsEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3SampleLocationsEnable = extendedDynamicState3SampleLocationsEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3SampleLocationsEnable( Bool32 extendedDynamicState3SampleLocationsEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3SampleLocationsEnable = extendedDynamicState3SampleLocationsEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3ColorBlendAdvanced( Bool32 extendedDynamicState3ColorBlendAdvanced_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ColorBlendAdvanced = extendedDynamicState3ColorBlendAdvanced_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3ColorBlendAdvanced( Bool32 extendedDynamicState3ColorBlendAdvanced_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ColorBlendAdvanced = extendedDynamicState3ColorBlendAdvanced_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3ProvokingVertexMode( Bool32 extendedDynamicState3ProvokingVertexMode_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ProvokingVertexMode = extendedDynamicState3ProvokingVertexMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3ProvokingVertexMode( Bool32 extendedDynamicState3ProvokingVertexMode_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ProvokingVertexMode = extendedDynamicState3ProvokingVertexMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3LineRasterizationMode( Bool32 extendedDynamicState3LineRasterizationMode_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3LineRasterizationMode = extendedDynamicState3LineRasterizationMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3LineRasterizationMode( Bool32 extendedDynamicState3LineRasterizationMode_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3LineRasterizationMode = extendedDynamicState3LineRasterizationMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3LineStippleEnable( Bool32 extendedDynamicState3LineStippleEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3LineStippleEnable = extendedDynamicState3LineStippleEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3LineStippleEnable( Bool32 extendedDynamicState3LineStippleEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3LineStippleEnable = extendedDynamicState3LineStippleEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3DepthClipNegativeOneToOne( Bool32 extendedDynamicState3DepthClipNegativeOneToOne_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3DepthClipNegativeOneToOne = extendedDynamicState3DepthClipNegativeOneToOne_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3DepthClipNegativeOneToOne( Bool32 extendedDynamicState3DepthClipNegativeOneToOne_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3DepthClipNegativeOneToOne = extendedDynamicState3DepthClipNegativeOneToOne_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3ViewportWScalingEnable( Bool32 extendedDynamicState3ViewportWScalingEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ViewportWScalingEnable = extendedDynamicState3ViewportWScalingEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3ViewportWScalingEnable( Bool32 extendedDynamicState3ViewportWScalingEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ViewportWScalingEnable = extendedDynamicState3ViewportWScalingEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3ViewportSwizzle( Bool32 extendedDynamicState3ViewportSwizzle_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ViewportSwizzle = extendedDynamicState3ViewportSwizzle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3ViewportSwizzle( Bool32 extendedDynamicState3ViewportSwizzle_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ViewportSwizzle = extendedDynamicState3ViewportSwizzle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3CoverageToColorEnable( Bool32 extendedDynamicState3CoverageToColorEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageToColorEnable = extendedDynamicState3CoverageToColorEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3CoverageToColorEnable( Bool32 extendedDynamicState3CoverageToColorEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageToColorEnable = extendedDynamicState3CoverageToColorEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3CoverageToColorLocation( Bool32 extendedDynamicState3CoverageToColorLocation_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageToColorLocation = extendedDynamicState3CoverageToColorLocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3CoverageToColorLocation( Bool32 extendedDynamicState3CoverageToColorLocation_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageToColorLocation = extendedDynamicState3CoverageToColorLocation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3CoverageModulationMode( Bool32 extendedDynamicState3CoverageModulationMode_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageModulationMode = extendedDynamicState3CoverageModulationMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3CoverageModulationMode( Bool32 extendedDynamicState3CoverageModulationMode_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageModulationMode = extendedDynamicState3CoverageModulationMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3CoverageModulationTableEnable( Bool32 extendedDynamicState3CoverageModulationTableEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageModulationTableEnable = extendedDynamicState3CoverageModulationTableEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3CoverageModulationTableEnable( Bool32 extendedDynamicState3CoverageModulationTableEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageModulationTableEnable = extendedDynamicState3CoverageModulationTableEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3CoverageModulationTable( Bool32 extendedDynamicState3CoverageModulationTable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageModulationTable = extendedDynamicState3CoverageModulationTable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3CoverageModulationTable( Bool32 extendedDynamicState3CoverageModulationTable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageModulationTable = extendedDynamicState3CoverageModulationTable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3CoverageReductionMode( Bool32 extendedDynamicState3CoverageReductionMode_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageReductionMode = extendedDynamicState3CoverageReductionMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3CoverageReductionMode( Bool32 extendedDynamicState3CoverageReductionMode_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3CoverageReductionMode = extendedDynamicState3CoverageReductionMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3RepresentativeFragmentTestEnable( Bool32 extendedDynamicState3RepresentativeFragmentTestEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3RepresentativeFragmentTestEnable = extendedDynamicState3RepresentativeFragmentTestEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3RepresentativeFragmentTestEnable( Bool32 extendedDynamicState3RepresentativeFragmentTestEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3RepresentativeFragmentTestEnable = extendedDynamicState3RepresentativeFragmentTestEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT & + setExtendedDynamicState3ShadingRateImageEnable( Bool32 extendedDynamicState3ShadingRateImageEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ShadingRateImageEnable = extendedDynamicState3ShadingRateImageEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicState3FeaturesEXT && + setExtendedDynamicState3ShadingRateImageEnable( Bool32 extendedDynamicState3ShadingRateImageEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedDynamicState3ShadingRateImageEnable = extendedDynamicState3ShadingRateImageEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + extendedDynamicState3TessellationDomainOrigin, + extendedDynamicState3DepthClampEnable, + extendedDynamicState3PolygonMode, + extendedDynamicState3RasterizationSamples, + extendedDynamicState3SampleMask, + extendedDynamicState3AlphaToCoverageEnable, + extendedDynamicState3AlphaToOneEnable, + extendedDynamicState3LogicOpEnable, + extendedDynamicState3ColorBlendEnable, + extendedDynamicState3ColorBlendEquation, + extendedDynamicState3ColorWriteMask, + extendedDynamicState3RasterizationStream, + extendedDynamicState3ConservativeRasterizationMode, + extendedDynamicState3ExtraPrimitiveOverestimationSize, + extendedDynamicState3DepthClipEnable, + extendedDynamicState3SampleLocationsEnable, + extendedDynamicState3ColorBlendAdvanced, + extendedDynamicState3ProvokingVertexMode, + extendedDynamicState3LineRasterizationMode, + extendedDynamicState3LineStippleEnable, + extendedDynamicState3DepthClipNegativeOneToOne, + extendedDynamicState3ViewportWScalingEnable, + extendedDynamicState3ViewportSwizzle, + extendedDynamicState3CoverageToColorEnable, + extendedDynamicState3CoverageToColorLocation, + extendedDynamicState3CoverageModulationMode, + extendedDynamicState3CoverageModulationTableEnable, + extendedDynamicState3CoverageModulationTable, + extendedDynamicState3CoverageReductionMode, + extendedDynamicState3RepresentativeFragmentTestEnable, + extendedDynamicState3ShadingRateImageEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( extendedDynamicState3TessellationDomainOrigin == rhs.extendedDynamicState3TessellationDomainOrigin ) && + ( extendedDynamicState3DepthClampEnable == rhs.extendedDynamicState3DepthClampEnable ) && + ( extendedDynamicState3PolygonMode == rhs.extendedDynamicState3PolygonMode ) && + ( extendedDynamicState3RasterizationSamples == rhs.extendedDynamicState3RasterizationSamples ) && + ( extendedDynamicState3SampleMask == rhs.extendedDynamicState3SampleMask ) && + ( extendedDynamicState3AlphaToCoverageEnable == rhs.extendedDynamicState3AlphaToCoverageEnable ) && + ( extendedDynamicState3AlphaToOneEnable == rhs.extendedDynamicState3AlphaToOneEnable ) && + ( extendedDynamicState3LogicOpEnable == rhs.extendedDynamicState3LogicOpEnable ) && + ( extendedDynamicState3ColorBlendEnable == rhs.extendedDynamicState3ColorBlendEnable ) && + ( extendedDynamicState3ColorBlendEquation == rhs.extendedDynamicState3ColorBlendEquation ) && + ( extendedDynamicState3ColorWriteMask == rhs.extendedDynamicState3ColorWriteMask ) && + ( extendedDynamicState3RasterizationStream == rhs.extendedDynamicState3RasterizationStream ) && + ( extendedDynamicState3ConservativeRasterizationMode == rhs.extendedDynamicState3ConservativeRasterizationMode ) && + ( extendedDynamicState3ExtraPrimitiveOverestimationSize == rhs.extendedDynamicState3ExtraPrimitiveOverestimationSize ) && + ( extendedDynamicState3DepthClipEnable == rhs.extendedDynamicState3DepthClipEnable ) && + ( extendedDynamicState3SampleLocationsEnable == rhs.extendedDynamicState3SampleLocationsEnable ) && + ( extendedDynamicState3ColorBlendAdvanced == rhs.extendedDynamicState3ColorBlendAdvanced ) && + ( extendedDynamicState3ProvokingVertexMode == rhs.extendedDynamicState3ProvokingVertexMode ) && + ( extendedDynamicState3LineRasterizationMode == rhs.extendedDynamicState3LineRasterizationMode ) && + ( extendedDynamicState3LineStippleEnable == rhs.extendedDynamicState3LineStippleEnable ) && + ( extendedDynamicState3DepthClipNegativeOneToOne == rhs.extendedDynamicState3DepthClipNegativeOneToOne ) && + ( extendedDynamicState3ViewportWScalingEnable == rhs.extendedDynamicState3ViewportWScalingEnable ) && + ( extendedDynamicState3ViewportSwizzle == rhs.extendedDynamicState3ViewportSwizzle ) && + ( extendedDynamicState3CoverageToColorEnable == rhs.extendedDynamicState3CoverageToColorEnable ) && + ( extendedDynamicState3CoverageToColorLocation == rhs.extendedDynamicState3CoverageToColorLocation ) && + ( extendedDynamicState3CoverageModulationMode == rhs.extendedDynamicState3CoverageModulationMode ) && + ( extendedDynamicState3CoverageModulationTableEnable == rhs.extendedDynamicState3CoverageModulationTableEnable ) && + ( extendedDynamicState3CoverageModulationTable == rhs.extendedDynamicState3CoverageModulationTable ) && + ( extendedDynamicState3CoverageReductionMode == rhs.extendedDynamicState3CoverageReductionMode ) && + ( extendedDynamicState3RepresentativeFragmentTestEnable == rhs.extendedDynamicState3RepresentativeFragmentTestEnable ) && + ( extendedDynamicState3ShadingRateImageEnable == rhs.extendedDynamicState3ShadingRateImageEnable ); +# endif + } + + bool operator!=( PhysicalDeviceExtendedDynamicState3FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicState3FeaturesEXT; + void * pNext = {}; + Bool32 extendedDynamicState3TessellationDomainOrigin = {}; + Bool32 extendedDynamicState3DepthClampEnable = {}; + Bool32 extendedDynamicState3PolygonMode = {}; + Bool32 extendedDynamicState3RasterizationSamples = {}; + Bool32 extendedDynamicState3SampleMask = {}; + Bool32 extendedDynamicState3AlphaToCoverageEnable = {}; + Bool32 extendedDynamicState3AlphaToOneEnable = {}; + Bool32 extendedDynamicState3LogicOpEnable = {}; + Bool32 extendedDynamicState3ColorBlendEnable = {}; + Bool32 extendedDynamicState3ColorBlendEquation = {}; + Bool32 extendedDynamicState3ColorWriteMask = {}; + Bool32 extendedDynamicState3RasterizationStream = {}; + Bool32 extendedDynamicState3ConservativeRasterizationMode = {}; + Bool32 extendedDynamicState3ExtraPrimitiveOverestimationSize = {}; + Bool32 extendedDynamicState3DepthClipEnable = {}; + Bool32 extendedDynamicState3SampleLocationsEnable = {}; + Bool32 extendedDynamicState3ColorBlendAdvanced = {}; + Bool32 extendedDynamicState3ProvokingVertexMode = {}; + Bool32 extendedDynamicState3LineRasterizationMode = {}; + Bool32 extendedDynamicState3LineStippleEnable = {}; + Bool32 extendedDynamicState3DepthClipNegativeOneToOne = {}; + Bool32 extendedDynamicState3ViewportWScalingEnable = {}; + Bool32 extendedDynamicState3ViewportSwizzle = {}; + Bool32 extendedDynamicState3CoverageToColorEnable = {}; + Bool32 extendedDynamicState3CoverageToColorLocation = {}; + Bool32 extendedDynamicState3CoverageModulationMode = {}; + Bool32 extendedDynamicState3CoverageModulationTableEnable = {}; + Bool32 extendedDynamicState3CoverageModulationTable = {}; + Bool32 extendedDynamicState3CoverageReductionMode = {}; + Bool32 extendedDynamicState3RepresentativeFragmentTestEnable = {}; + Bool32 extendedDynamicState3ShadingRateImageEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedDynamicState3FeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedDynamicState3FeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicState3PropertiesEXT.html + struct PhysicalDeviceExtendedDynamicState3PropertiesEXT + { + using NativeType = VkPhysicalDeviceExtendedDynamicState3PropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExtendedDynamicState3PropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicState3PropertiesEXT( Bool32 dynamicPrimitiveTopologyUnrestricted_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dynamicPrimitiveTopologyUnrestricted{ dynamicPrimitiveTopologyUnrestricted_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExtendedDynamicState3PropertiesEXT( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExtendedDynamicState3PropertiesEXT( VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExtendedDynamicState3PropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExtendedDynamicState3PropertiesEXT & operator=( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExtendedDynamicState3PropertiesEXT & operator=( VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dynamicPrimitiveTopologyUnrestricted ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dynamicPrimitiveTopologyUnrestricted == rhs.dynamicPrimitiveTopologyUnrestricted ); +# endif + } + + bool operator!=( PhysicalDeviceExtendedDynamicState3PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicState3PropertiesEXT; + void * pNext = {}; + Bool32 dynamicPrimitiveTopologyUnrestricted = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedDynamicState3PropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedDynamicState3PropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedDynamicStateFeaturesEXT.html + struct PhysicalDeviceExtendedDynamicStateFeaturesEXT + { + using NativeType = VkPhysicalDeviceExtendedDynamicStateFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT( Bool32 extendedDynamicState_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , extendedDynamicState{ extendedDynamicState_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExtendedDynamicStateFeaturesEXT( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExtendedDynamicStateFeaturesEXT( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExtendedDynamicStateFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT & setExtendedDynamicState( Bool32 extendedDynamicState_ ) & VULKAN_HPP_NOEXCEPT + { + extendedDynamicState = extendedDynamicState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT && setExtendedDynamicState( Bool32 extendedDynamicState_ ) && VULKAN_HPP_NOEXCEPT + { + extendedDynamicState = extendedDynamicState_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, extendedDynamicState ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedDynamicState == rhs.extendedDynamicState ); +# endif + } + + bool operator!=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT; + void * pNext = {}; + Bool32 extendedDynamicState = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedDynamicStateFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedDynamicStateFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV.html + struct PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV + { + using NativeType = VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExtendedSparseAddressSpaceFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( Bool32 extendedSparseAddressSpace_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , extendedSparseAddressSpace{ extendedSparseAddressSpace_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV & + operator=( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV & operator=( VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV & setExtendedSparseAddressSpace( Bool32 extendedSparseAddressSpace_ ) & + VULKAN_HPP_NOEXCEPT + { + extendedSparseAddressSpace = extendedSparseAddressSpace_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV && setExtendedSparseAddressSpace( Bool32 extendedSparseAddressSpace_ ) && + VULKAN_HPP_NOEXCEPT + { + extendedSparseAddressSpace = extendedSparseAddressSpace_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, extendedSparseAddressSpace ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedSparseAddressSpace == rhs.extendedSparseAddressSpace ); +# endif + } + + bool operator!=( PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExtendedSparseAddressSpaceFeaturesNV; + void * pNext = {}; + Bool32 extendedSparseAddressSpace = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV.html + struct PhysicalDeviceExtendedSparseAddressSpacePropertiesNV + { + using NativeType = VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( DeviceSize extendedSparseAddressSpaceSize_ = {}, + ImageUsageFlags extendedSparseImageUsageFlags_ = {}, + BufferUsageFlags extendedSparseBufferUsageFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , extendedSparseAddressSpaceSize{ extendedSparseAddressSpaceSize_ } + , extendedSparseImageUsageFlags{ extendedSparseImageUsageFlags_ } + , extendedSparseBufferUsageFlags{ extendedSparseBufferUsageFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExtendedSparseAddressSpacePropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExtendedSparseAddressSpacePropertiesNV & + operator=( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExtendedSparseAddressSpacePropertiesNV & operator=( VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, extendedSparseAddressSpaceSize, extendedSparseImageUsageFlags, extendedSparseBufferUsageFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( extendedSparseAddressSpaceSize == rhs.extendedSparseAddressSpaceSize ) && + ( extendedSparseImageUsageFlags == rhs.extendedSparseImageUsageFlags ) && ( extendedSparseBufferUsageFlags == rhs.extendedSparseBufferUsageFlags ); +# endif + } + + bool operator!=( PhysicalDeviceExtendedSparseAddressSpacePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV; + void * pNext = {}; + DeviceSize extendedSparseAddressSpaceSize = {}; + ImageUsageFlags extendedSparseImageUsageFlags = {}; + BufferUsageFlags extendedSparseBufferUsageFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedSparseAddressSpacePropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExtendedSparseAddressSpacePropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceExternalBufferInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalBufferInfo.html + struct PhysicalDeviceExternalBufferInfo + { + using NativeType = VkPhysicalDeviceExternalBufferInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalBufferInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo( BufferCreateFlags flags_ = {}, + BufferUsageFlags usage_ = {}, + ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , usage{ usage_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalBufferInfo( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalBufferInfo( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalBufferInfo & operator=( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalBufferInfo & operator=( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setFlags( BufferCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo && setFlags( BufferCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setUsage( BufferUsageFlags usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo && setUsage( BufferUsageFlags usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExternalBufferInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalBufferInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalBufferInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalBufferInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, usage, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalBufferInfo const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( usage == rhs.usage ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( PhysicalDeviceExternalBufferInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalBufferInfo; + void const * pNext = {}; + BufferCreateFlags flags = {}; + BufferUsageFlags usage = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalBufferInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalBufferInfo; + }; + + using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo; + + // wrapper struct for struct VkPhysicalDeviceExternalComputeQueuePropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalComputeQueuePropertiesNV.html + struct PhysicalDeviceExternalComputeQueuePropertiesNV + { + using NativeType = VkPhysicalDeviceExternalComputeQueuePropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalComputeQueuePropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalComputeQueuePropertiesNV( uint32_t externalDataSize_ = {}, + uint32_t maxExternalQueues_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , externalDataSize{ externalDataSize_ } + , maxExternalQueues{ maxExternalQueues_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExternalComputeQueuePropertiesNV( PhysicalDeviceExternalComputeQueuePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalComputeQueuePropertiesNV( VkPhysicalDeviceExternalComputeQueuePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalComputeQueuePropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalComputeQueuePropertiesNV & operator=( PhysicalDeviceExternalComputeQueuePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalComputeQueuePropertiesNV & operator=( VkPhysicalDeviceExternalComputeQueuePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceExternalComputeQueuePropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalComputeQueuePropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalComputeQueuePropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalComputeQueuePropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalDataSize, maxExternalQueues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalComputeQueuePropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalComputeQueuePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalDataSize == rhs.externalDataSize ) && ( maxExternalQueues == rhs.maxExternalQueues ); +# endif + } + + bool operator!=( PhysicalDeviceExternalComputeQueuePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalComputeQueuePropertiesNV; + void * pNext = {}; + uint32_t externalDataSize = {}; + uint32_t maxExternalQueues = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalComputeQueuePropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalComputeQueuePropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceExternalFenceInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFenceInfo.html + struct PhysicalDeviceExternalFenceInfo + { + using NativeType = VkPhysicalDeviceExternalFenceInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalFenceInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo( ExternalFenceHandleTypeFlagBits handleType_ = ExternalFenceHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalFenceInfo( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalFenceInfo & operator=( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalFenceInfo & operator=( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & setHandleType( ExternalFenceHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo && setHandleType( ExternalFenceHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExternalFenceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalFenceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalFenceInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalFenceInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalFenceInfo const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( PhysicalDeviceExternalFenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalFenceInfo; + void const * pNext = {}; + ExternalFenceHandleTypeFlagBits handleType = ExternalFenceHandleTypeFlagBits::eOpaqueFd; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalFenceInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalFenceInfo; + }; + + using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo; + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkPhysicalDeviceExternalFormatResolveFeaturesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolveFeaturesANDROID.html + struct PhysicalDeviceExternalFormatResolveFeaturesANDROID + { + using NativeType = VkPhysicalDeviceExternalFormatResolveFeaturesANDROID; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalFormatResolveFeaturesANDROID; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFormatResolveFeaturesANDROID( Bool32 externalFormatResolve_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , externalFormatResolve{ externalFormatResolve_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExternalFormatResolveFeaturesANDROID( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalFormatResolveFeaturesANDROID( VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalFormatResolveFeaturesANDROID( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalFormatResolveFeaturesANDROID & + operator=( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalFormatResolveFeaturesANDROID & operator=( VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFormatResolveFeaturesANDROID & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFormatResolveFeaturesANDROID && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFormatResolveFeaturesANDROID & setExternalFormatResolve( Bool32 externalFormatResolve_ ) & VULKAN_HPP_NOEXCEPT + { + externalFormatResolve = externalFormatResolve_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFormatResolveFeaturesANDROID && setExternalFormatResolve( Bool32 externalFormatResolve_ ) && + VULKAN_HPP_NOEXCEPT + { + externalFormatResolve = externalFormatResolve_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalFormatResolveFeaturesANDROID *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalFormatResolve ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & ) const = default; +# else + bool operator==( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalFormatResolve == rhs.externalFormatResolve ); +# endif + } + + bool operator!=( PhysicalDeviceExternalFormatResolveFeaturesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalFormatResolveFeaturesANDROID; + void * pNext = {}; + Bool32 externalFormatResolve = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalFormatResolveFeaturesANDROID; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalFormatResolveFeaturesANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + // wrapper struct for struct VkPhysicalDeviceExternalFormatResolvePropertiesANDROID, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalFormatResolvePropertiesANDROID.html + struct PhysicalDeviceExternalFormatResolvePropertiesANDROID + { + using NativeType = VkPhysicalDeviceExternalFormatResolvePropertiesANDROID; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalFormatResolvePropertiesANDROID; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExternalFormatResolvePropertiesANDROID( Bool32 nullColorAttachmentWithExternalFormatResolve_ = {}, + ChromaLocation externalFormatResolveChromaOffsetX_ = ChromaLocation::eCositedEven, + ChromaLocation externalFormatResolveChromaOffsetY_ = ChromaLocation::eCositedEven, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , nullColorAttachmentWithExternalFormatResolve{ nullColorAttachmentWithExternalFormatResolve_ } + , externalFormatResolveChromaOffsetX{ externalFormatResolveChromaOffsetX_ } + , externalFormatResolveChromaOffsetY{ externalFormatResolveChromaOffsetY_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExternalFormatResolvePropertiesANDROID( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalFormatResolvePropertiesANDROID( VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalFormatResolvePropertiesANDROID( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalFormatResolvePropertiesANDROID & + operator=( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalFormatResolvePropertiesANDROID & operator=( VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalFormatResolvePropertiesANDROID *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, nullColorAttachmentWithExternalFormatResolve, externalFormatResolveChromaOffsetX, externalFormatResolveChromaOffsetY ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & ) const = default; +# else + bool operator==( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( nullColorAttachmentWithExternalFormatResolve == rhs.nullColorAttachmentWithExternalFormatResolve ) && + ( externalFormatResolveChromaOffsetX == rhs.externalFormatResolveChromaOffsetX ) && + ( externalFormatResolveChromaOffsetY == rhs.externalFormatResolveChromaOffsetY ); +# endif + } + + bool operator!=( PhysicalDeviceExternalFormatResolvePropertiesANDROID const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalFormatResolvePropertiesANDROID; + void * pNext = {}; + Bool32 nullColorAttachmentWithExternalFormatResolve = {}; + ChromaLocation externalFormatResolveChromaOffsetX = ChromaLocation::eCositedEven; + ChromaLocation externalFormatResolveChromaOffsetY = ChromaLocation::eCositedEven; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalFormatResolvePropertiesANDROID; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalFormatResolvePropertiesANDROID; + }; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + + // wrapper struct for struct VkPhysicalDeviceExternalImageFormatInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalImageFormatInfo.html + struct PhysicalDeviceExternalImageFormatInfo + { + using NativeType = VkPhysicalDeviceExternalImageFormatInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalImageFormatInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo( ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalImageFormatInfo( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalImageFormatInfo & operator=( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalImageFormatInfo & operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExternalImageFormatInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalImageFormatInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalImageFormatInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalImageFormatInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalImageFormatInfo const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( PhysicalDeviceExternalImageFormatInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfo; + void const * pNext = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalImageFormatInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalImageFormatInfo; + }; + + using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo; + + // wrapper struct for struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryHostPropertiesEXT.html + struct PhysicalDeviceExternalMemoryHostPropertiesEXT + { + using NativeType = VkPhysicalDeviceExternalMemoryHostPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT( DeviceSize minImportedHostPointerAlignment_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minImportedHostPointerAlignment{ minImportedHostPointerAlignment_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExternalMemoryHostPropertiesEXT( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalMemoryHostPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalMemoryHostPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minImportedHostPointerAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalMemoryHostPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT; + void * pNext = {}; + DeviceSize minImportedHostPointerAlignment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalMemoryHostPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalMemoryHostPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryRDMAFeaturesNV.html + struct PhysicalDeviceExternalMemoryRDMAFeaturesNV + { + using NativeType = VkPhysicalDeviceExternalMemoryRDMAFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryRDMAFeaturesNV( Bool32 externalMemoryRDMA_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , externalMemoryRDMA{ externalMemoryRDMA_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryRDMAFeaturesNV( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalMemoryRDMAFeaturesNV( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalMemoryRDMAFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalMemoryRDMAFeaturesNV & operator=( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalMemoryRDMAFeaturesNV & operator=( VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV & setExternalMemoryRDMA( Bool32 externalMemoryRDMA_ ) & VULKAN_HPP_NOEXCEPT + { + externalMemoryRDMA = externalMemoryRDMA_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryRDMAFeaturesNV && setExternalMemoryRDMA( Bool32 externalMemoryRDMA_ ) && VULKAN_HPP_NOEXCEPT + { + externalMemoryRDMA = externalMemoryRDMA_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalMemoryRDMAFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, externalMemoryRDMA ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( externalMemoryRDMA == rhs.externalMemoryRDMA ); +# endif + } + + bool operator!=( PhysicalDeviceExternalMemoryRDMAFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV; + void * pNext = {}; + Bool32 externalMemoryRDMA = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalMemoryRDMAFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalMemoryRDMAFeaturesNV; + }; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + // wrapper struct for struct VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX.html + struct PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX + { + using NativeType = VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( Bool32 screenBufferImport_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , screenBufferImport{ screenBufferImport_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & + operator=( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & operator=( VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX & setScreenBufferImport( Bool32 screenBufferImport_ ) & VULKAN_HPP_NOEXCEPT + { + screenBufferImport = screenBufferImport_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX && setScreenBufferImport( Bool32 screenBufferImport_ ) && VULKAN_HPP_NOEXCEPT + { + screenBufferImport = screenBufferImport_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, screenBufferImport ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & ) const = default; +# else + bool operator==( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( screenBufferImport == rhs.screenBufferImport ); +# endif + } + + bool operator!=( PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX; + void * pNext = {}; + Bool32 screenBufferImport = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX; + }; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + // wrapper struct for struct VkPhysicalDeviceExternalSemaphoreInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalSemaphoreInfo.html + struct PhysicalDeviceExternalSemaphoreInfo + { + using NativeType = VkPhysicalDeviceExternalSemaphoreInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalSemaphoreInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo( ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalSemaphoreInfo( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalSemaphoreInfo & operator=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalSemaphoreInfo & operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo && setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExternalSemaphoreInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalSemaphoreInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalSemaphoreInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalSemaphoreInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalSemaphoreInfo const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfo; + void const * pNext = {}; + ExternalSemaphoreHandleTypeFlagBits handleType = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalSemaphoreInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalSemaphoreInfo; + }; + + using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo; + + // wrapper struct for struct VkPhysicalDeviceExternalTensorInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceExternalTensorInfoARM.html + struct PhysicalDeviceExternalTensorInfoARM + { + using NativeType = VkPhysicalDeviceExternalTensorInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalTensorInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalTensorInfoARM( TensorCreateFlagsARM flags_ = {}, + TensorDescriptionARM const * pDescription_ = {}, + ExternalMemoryHandleTypeFlagBits handleType_ = ExternalMemoryHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pDescription{ pDescription_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalTensorInfoARM( PhysicalDeviceExternalTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceExternalTensorInfoARM( VkPhysicalDeviceExternalTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceExternalTensorInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceExternalTensorInfoARM & operator=( PhysicalDeviceExternalTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceExternalTensorInfoARM & operator=( VkPhysicalDeviceExternalTensorInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalTensorInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalTensorInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalTensorInfoARM & setFlags( TensorCreateFlagsARM flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalTensorInfoARM && setFlags( TensorCreateFlagsARM flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalTensorInfoARM & setPDescription( TensorDescriptionARM const * pDescription_ ) & VULKAN_HPP_NOEXCEPT + { + pDescription = pDescription_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalTensorInfoARM && setPDescription( TensorDescriptionARM const * pDescription_ ) && VULKAN_HPP_NOEXCEPT + { + pDescription = pDescription_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalTensorInfoARM & setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalTensorInfoARM && setHandleType( ExternalMemoryHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceExternalTensorInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalTensorInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalTensorInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceExternalTensorInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, pDescription, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceExternalTensorInfoARM const & ) const = default; +#else + bool operator==( PhysicalDeviceExternalTensorInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pDescription == rhs.pDescription ) && + ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( PhysicalDeviceExternalTensorInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceExternalTensorInfoARM; + void const * pNext = {}; + TensorCreateFlagsARM flags = {}; + TensorDescriptionARM const * pDescription = {}; + ExternalMemoryHandleTypeFlagBits handleType = ExternalMemoryHandleTypeFlagBits::eOpaqueFd; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceExternalTensorInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceExternalTensorInfoARM; + }; + + // wrapper struct for struct VkPhysicalDeviceFaultFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFaultFeaturesEXT.html + struct PhysicalDeviceFaultFeaturesEXT + { + using NativeType = VkPhysicalDeviceFaultFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFaultFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFaultFeaturesEXT( Bool32 deviceFault_ = {}, Bool32 deviceFaultVendorBinary_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceFault{ deviceFault_ } + , deviceFaultVendorBinary{ deviceFaultVendorBinary_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFaultFeaturesEXT( PhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFaultFeaturesEXT( VkPhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFaultFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFaultFeaturesEXT & operator=( PhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFaultFeaturesEXT & operator=( VkPhysicalDeviceFaultFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT & setDeviceFault( Bool32 deviceFault_ ) & VULKAN_HPP_NOEXCEPT + { + deviceFault = deviceFault_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT && setDeviceFault( Bool32 deviceFault_ ) && VULKAN_HPP_NOEXCEPT + { + deviceFault = deviceFault_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT & setDeviceFaultVendorBinary( Bool32 deviceFaultVendorBinary_ ) & VULKAN_HPP_NOEXCEPT + { + deviceFaultVendorBinary = deviceFaultVendorBinary_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesEXT && setDeviceFaultVendorBinary( Bool32 deviceFaultVendorBinary_ ) && VULKAN_HPP_NOEXCEPT + { + deviceFaultVendorBinary = deviceFaultVendorBinary_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFaultFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFaultFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFaultFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFaultFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceFault, deviceFaultVendorBinary ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFaultFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFaultFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceFault == rhs.deviceFault ) && + ( deviceFaultVendorBinary == rhs.deviceFaultVendorBinary ); +# endif + } + + bool operator!=( PhysicalDeviceFaultFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFaultFeaturesEXT; + void * pNext = {}; + Bool32 deviceFault = {}; + Bool32 deviceFaultVendorBinary = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFaultFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFaultFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceFaultFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFaultFeaturesKHR.html + struct PhysicalDeviceFaultFeaturesKHR + { + using NativeType = VkPhysicalDeviceFaultFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFaultFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFaultFeaturesKHR( Bool32 deviceFault_ = {}, + Bool32 deviceFaultVendorBinary_ = {}, + Bool32 deviceFaultReportMasked_ = {}, + Bool32 deviceFaultDeviceLostOnMasked_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceFault{ deviceFault_ } + , deviceFaultVendorBinary{ deviceFaultVendorBinary_ } + , deviceFaultReportMasked{ deviceFaultReportMasked_ } + , deviceFaultDeviceLostOnMasked{ deviceFaultDeviceLostOnMasked_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFaultFeaturesKHR( PhysicalDeviceFaultFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFaultFeaturesKHR( VkPhysicalDeviceFaultFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFaultFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFaultFeaturesKHR & operator=( PhysicalDeviceFaultFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFaultFeaturesKHR & operator=( VkPhysicalDeviceFaultFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesKHR & setDeviceFault( Bool32 deviceFault_ ) & VULKAN_HPP_NOEXCEPT + { + deviceFault = deviceFault_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesKHR && setDeviceFault( Bool32 deviceFault_ ) && VULKAN_HPP_NOEXCEPT + { + deviceFault = deviceFault_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesKHR & setDeviceFaultVendorBinary( Bool32 deviceFaultVendorBinary_ ) & VULKAN_HPP_NOEXCEPT + { + deviceFaultVendorBinary = deviceFaultVendorBinary_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesKHR && setDeviceFaultVendorBinary( Bool32 deviceFaultVendorBinary_ ) && VULKAN_HPP_NOEXCEPT + { + deviceFaultVendorBinary = deviceFaultVendorBinary_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesKHR & setDeviceFaultReportMasked( Bool32 deviceFaultReportMasked_ ) & VULKAN_HPP_NOEXCEPT + { + deviceFaultReportMasked = deviceFaultReportMasked_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesKHR && setDeviceFaultReportMasked( Bool32 deviceFaultReportMasked_ ) && VULKAN_HPP_NOEXCEPT + { + deviceFaultReportMasked = deviceFaultReportMasked_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesKHR & setDeviceFaultDeviceLostOnMasked( Bool32 deviceFaultDeviceLostOnMasked_ ) & VULKAN_HPP_NOEXCEPT + { + deviceFaultDeviceLostOnMasked = deviceFaultDeviceLostOnMasked_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFaultFeaturesKHR && setDeviceFaultDeviceLostOnMasked( Bool32 deviceFaultDeviceLostOnMasked_ ) && VULKAN_HPP_NOEXCEPT + { + deviceFaultDeviceLostOnMasked = deviceFaultDeviceLostOnMasked_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFaultFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFaultFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFaultFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFaultFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceFault, deviceFaultVendorBinary, deviceFaultReportMasked, deviceFaultDeviceLostOnMasked ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFaultFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceFaultFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceFault == rhs.deviceFault ) && + ( deviceFaultVendorBinary == rhs.deviceFaultVendorBinary ) && ( deviceFaultReportMasked == rhs.deviceFaultReportMasked ) && + ( deviceFaultDeviceLostOnMasked == rhs.deviceFaultDeviceLostOnMasked ); +# endif + } + + bool operator!=( PhysicalDeviceFaultFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFaultFeaturesKHR; + void * pNext = {}; + Bool32 deviceFault = {}; + Bool32 deviceFaultVendorBinary = {}; + Bool32 deviceFaultReportMasked = {}; + Bool32 deviceFaultDeviceLostOnMasked = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFaultFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFaultFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceFaultPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFaultPropertiesKHR.html + struct PhysicalDeviceFaultPropertiesKHR + { + using NativeType = VkPhysicalDeviceFaultPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFaultPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFaultPropertiesKHR( uint32_t maxDeviceFaultCount_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxDeviceFaultCount{ maxDeviceFaultCount_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFaultPropertiesKHR( PhysicalDeviceFaultPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFaultPropertiesKHR( VkPhysicalDeviceFaultPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFaultPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFaultPropertiesKHR & operator=( PhysicalDeviceFaultPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFaultPropertiesKHR & operator=( VkPhysicalDeviceFaultPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceFaultPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFaultPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFaultPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFaultPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxDeviceFaultCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFaultPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceFaultPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDeviceFaultCount == rhs.maxDeviceFaultCount ); +# endif + } + + bool operator!=( PhysicalDeviceFaultPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFaultPropertiesKHR; + void * pNext = {}; + uint32_t maxDeviceFaultCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFaultPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFaultPropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceFeatures2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFeatures2.html + struct PhysicalDeviceFeatures2 + { + using NativeType = VkPhysicalDeviceFeatures2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFeatures2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( PhysicalDeviceFeatures features_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , features{ features_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFeatures2( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFeatures2 & operator=( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFeatures2 & operator=( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & setFeatures( PhysicalDeviceFeatures const & features_ ) & VULKAN_HPP_NOEXCEPT + { + features = features_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 && setFeatures( PhysicalDeviceFeatures const & features_ ) && VULKAN_HPP_NOEXCEPT + { + features = features_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFeatures2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFeatures2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFeatures2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFeatures2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, features ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFeatures2 const & ) const = default; +#else + bool operator==( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( features == rhs.features ); +# endif + } + + bool operator!=( PhysicalDeviceFeatures2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFeatures2; + void * pNext = {}; + PhysicalDeviceFeatures features = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFeatures2; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFeatures2; + }; + + using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2; + + // wrapper struct for struct VkPhysicalDeviceFloatControlsProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFloatControlsProperties.html + struct PhysicalDeviceFloatControlsProperties + { + using NativeType = VkPhysicalDeviceFloatControlsProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFloatControlsProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFloatControlsProperties( ShaderFloatControlsIndependence denormBehaviorIndependence_ = ShaderFloatControlsIndependence::e32BitOnly, + ShaderFloatControlsIndependence roundingModeIndependence_ = ShaderFloatControlsIndependence::e32BitOnly, + Bool32 shaderSignedZeroInfNanPreserveFloat16_ = {}, + Bool32 shaderSignedZeroInfNanPreserveFloat32_ = {}, + Bool32 shaderSignedZeroInfNanPreserveFloat64_ = {}, + Bool32 shaderDenormPreserveFloat16_ = {}, + Bool32 shaderDenormPreserveFloat32_ = {}, + Bool32 shaderDenormPreserveFloat64_ = {}, + Bool32 shaderDenormFlushToZeroFloat16_ = {}, + Bool32 shaderDenormFlushToZeroFloat32_ = {}, + Bool32 shaderDenormFlushToZeroFloat64_ = {}, + Bool32 shaderRoundingModeRTEFloat16_ = {}, + Bool32 shaderRoundingModeRTEFloat32_ = {}, + Bool32 shaderRoundingModeRTEFloat64_ = {}, + Bool32 shaderRoundingModeRTZFloat16_ = {}, + Bool32 shaderRoundingModeRTZFloat32_ = {}, + Bool32 shaderRoundingModeRTZFloat64_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , denormBehaviorIndependence{ denormBehaviorIndependence_ } + , roundingModeIndependence{ roundingModeIndependence_ } + , shaderSignedZeroInfNanPreserveFloat16{ shaderSignedZeroInfNanPreserveFloat16_ } + , shaderSignedZeroInfNanPreserveFloat32{ shaderSignedZeroInfNanPreserveFloat32_ } + , shaderSignedZeroInfNanPreserveFloat64{ shaderSignedZeroInfNanPreserveFloat64_ } + , shaderDenormPreserveFloat16{ shaderDenormPreserveFloat16_ } + , shaderDenormPreserveFloat32{ shaderDenormPreserveFloat32_ } + , shaderDenormPreserveFloat64{ shaderDenormPreserveFloat64_ } + , shaderDenormFlushToZeroFloat16{ shaderDenormFlushToZeroFloat16_ } + , shaderDenormFlushToZeroFloat32{ shaderDenormFlushToZeroFloat32_ } + , shaderDenormFlushToZeroFloat64{ shaderDenormFlushToZeroFloat64_ } + , shaderRoundingModeRTEFloat16{ shaderRoundingModeRTEFloat16_ } + , shaderRoundingModeRTEFloat32{ shaderRoundingModeRTEFloat32_ } + , shaderRoundingModeRTEFloat64{ shaderRoundingModeRTEFloat64_ } + , shaderRoundingModeRTZFloat16{ shaderRoundingModeRTZFloat16_ } + , shaderRoundingModeRTZFloat32{ shaderRoundingModeRTZFloat32_ } + , shaderRoundingModeRTZFloat64{ shaderRoundingModeRTZFloat64_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFloatControlsProperties( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFloatControlsProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFloatControlsProperties & operator=( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFloatControlsProperties & operator=( VkPhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceFloatControlsProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFloatControlsProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFloatControlsProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFloatControlsProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + denormBehaviorIndependence, + roundingModeIndependence, + shaderSignedZeroInfNanPreserveFloat16, + shaderSignedZeroInfNanPreserveFloat32, + shaderSignedZeroInfNanPreserveFloat64, + shaderDenormPreserveFloat16, + shaderDenormPreserveFloat32, + shaderDenormPreserveFloat64, + shaderDenormFlushToZeroFloat16, + shaderDenormFlushToZeroFloat32, + shaderDenormFlushToZeroFloat64, + shaderRoundingModeRTEFloat16, + shaderRoundingModeRTEFloat32, + shaderRoundingModeRTEFloat64, + shaderRoundingModeRTZFloat16, + shaderRoundingModeRTZFloat32, + shaderRoundingModeRTZFloat64 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFloatControlsProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( denormBehaviorIndependence == rhs.denormBehaviorIndependence ) && + ( roundingModeIndependence == rhs.roundingModeIndependence ) && + ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 ) && + ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 ) && + ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 ) && + ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 ) && ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 ) && + ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 ) && ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 ) && + ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 ) && + ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 ) && ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 ) && + ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 ) && ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 ) && + ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 ) && ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 ) && + ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 ); +# endif + } + + bool operator!=( PhysicalDeviceFloatControlsProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFloatControlsProperties; + void * pNext = {}; + ShaderFloatControlsIndependence denormBehaviorIndependence = ShaderFloatControlsIndependence::e32BitOnly; + ShaderFloatControlsIndependence roundingModeIndependence = ShaderFloatControlsIndependence::e32BitOnly; + Bool32 shaderSignedZeroInfNanPreserveFloat16 = {}; + Bool32 shaderSignedZeroInfNanPreserveFloat32 = {}; + Bool32 shaderSignedZeroInfNanPreserveFloat64 = {}; + Bool32 shaderDenormPreserveFloat16 = {}; + Bool32 shaderDenormPreserveFloat32 = {}; + Bool32 shaderDenormPreserveFloat64 = {}; + Bool32 shaderDenormFlushToZeroFloat16 = {}; + Bool32 shaderDenormFlushToZeroFloat32 = {}; + Bool32 shaderDenormFlushToZeroFloat64 = {}; + Bool32 shaderRoundingModeRTEFloat16 = {}; + Bool32 shaderRoundingModeRTEFloat32 = {}; + Bool32 shaderRoundingModeRTEFloat64 = {}; + Bool32 shaderRoundingModeRTZFloat16 = {}; + Bool32 shaderRoundingModeRTZFloat32 = {}; + Bool32 shaderRoundingModeRTZFloat64 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFloatControlsProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFloatControlsProperties; + }; + + using PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties; + + // wrapper struct for struct VkPhysicalDeviceFormatPackFeaturesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFormatPackFeaturesARM.html + struct PhysicalDeviceFormatPackFeaturesARM + { + using NativeType = VkPhysicalDeviceFormatPackFeaturesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFormatPackFeaturesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFormatPackFeaturesARM( Bool32 formatPack_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , formatPack{ formatPack_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFormatPackFeaturesARM( PhysicalDeviceFormatPackFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFormatPackFeaturesARM( VkPhysicalDeviceFormatPackFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFormatPackFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFormatPackFeaturesARM & operator=( PhysicalDeviceFormatPackFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFormatPackFeaturesARM & operator=( VkPhysicalDeviceFormatPackFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFormatPackFeaturesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFormatPackFeaturesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFormatPackFeaturesARM & setFormatPack( Bool32 formatPack_ ) & VULKAN_HPP_NOEXCEPT + { + formatPack = formatPack_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFormatPackFeaturesARM && setFormatPack( Bool32 formatPack_ ) && VULKAN_HPP_NOEXCEPT + { + formatPack = formatPack_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFormatPackFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFormatPackFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFormatPackFeaturesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFormatPackFeaturesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, formatPack ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFormatPackFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceFormatPackFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatPack == rhs.formatPack ); +# endif + } + + bool operator!=( PhysicalDeviceFormatPackFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFormatPackFeaturesARM; + void * pNext = {}; + Bool32 formatPack = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFormatPackFeaturesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFormatPackFeaturesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2FeaturesEXT.html + struct PhysicalDeviceFragmentDensityMap2FeaturesEXT + { + using NativeType = VkPhysicalDeviceFragmentDensityMap2FeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT( Bool32 fragmentDensityMapDeferred_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentDensityMapDeferred{ fragmentDensityMapDeferred_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMap2FeaturesEXT( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMap2FeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT & setFragmentDensityMapDeferred( Bool32 fragmentDensityMapDeferred_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapDeferred = fragmentDensityMapDeferred_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT && setFragmentDensityMapDeferred( Bool32 fragmentDensityMapDeferred_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapDeferred = fragmentDensityMapDeferred_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityMapDeferred ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMapDeferred == rhs.fragmentDensityMapDeferred ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT; + void * pNext = {}; + Bool32 fragmentDensityMapDeferred = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMap2FeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMap2FeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMap2PropertiesEXT.html + struct PhysicalDeviceFragmentDensityMap2PropertiesEXT + { + using NativeType = VkPhysicalDeviceFragmentDensityMap2PropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2PropertiesEXT( Bool32 subsampledLoads_ = {}, + Bool32 subsampledCoarseReconstructionEarlyAccess_ = {}, + uint32_t maxSubsampledArrayLayers_ = {}, + uint32_t maxDescriptorSetSubsampledSamplers_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , subsampledLoads{ subsampledLoads_ } + , subsampledCoarseReconstructionEarlyAccess{ subsampledCoarseReconstructionEarlyAccess_ } + , maxSubsampledArrayLayers{ maxSubsampledArrayLayers_ } + , maxDescriptorSetSubsampledSamplers{ maxDescriptorSetSubsampledSamplers_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentDensityMap2PropertiesEXT( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMap2PropertiesEXT( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMap2PropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentDensityMap2PropertiesEXT & operator=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMap2PropertiesEXT & operator=( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subsampledLoads, subsampledCoarseReconstructionEarlyAccess, maxSubsampledArrayLayers, maxDescriptorSetSubsampledSamplers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subsampledLoads == rhs.subsampledLoads ) && + ( subsampledCoarseReconstructionEarlyAccess == rhs.subsampledCoarseReconstructionEarlyAccess ) && + ( maxSubsampledArrayLayers == rhs.maxSubsampledArrayLayers ) && ( maxDescriptorSetSubsampledSamplers == rhs.maxDescriptorSetSubsampledSamplers ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT; + void * pNext = {}; + Bool32 subsampledLoads = {}; + Bool32 subsampledCoarseReconstructionEarlyAccess = {}; + uint32_t maxSubsampledArrayLayers = {}; + uint32_t maxDescriptorSetSubsampledSamplers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMap2PropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMap2PropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapFeaturesEXT.html + struct PhysicalDeviceFragmentDensityMapFeaturesEXT + { + using NativeType = VkPhysicalDeviceFragmentDensityMapFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT( Bool32 fragmentDensityMap_ = {}, + Bool32 fragmentDensityMapDynamic_ = {}, + Bool32 fragmentDensityMapNonSubsampledImages_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentDensityMap{ fragmentDensityMap_ } + , fragmentDensityMapDynamic{ fragmentDensityMapDynamic_ } + , fragmentDensityMapNonSubsampledImages{ fragmentDensityMapNonSubsampledImages_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapFeaturesEXT( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMapFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & setFragmentDensityMap( Bool32 fragmentDensityMap_ ) & VULKAN_HPP_NOEXCEPT + { + fragmentDensityMap = fragmentDensityMap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT && setFragmentDensityMap( Bool32 fragmentDensityMap_ ) && VULKAN_HPP_NOEXCEPT + { + fragmentDensityMap = fragmentDensityMap_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & setFragmentDensityMapDynamic( Bool32 fragmentDensityMapDynamic_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapDynamic = fragmentDensityMapDynamic_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT && setFragmentDensityMapDynamic( Bool32 fragmentDensityMapDynamic_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapDynamic = fragmentDensityMapDynamic_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & + setFragmentDensityMapNonSubsampledImages( Bool32 fragmentDensityMapNonSubsampledImages_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapNonSubsampledImages = fragmentDensityMapNonSubsampledImages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT && + setFragmentDensityMapNonSubsampledImages( Bool32 fragmentDensityMapNonSubsampledImages_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapNonSubsampledImages = fragmentDensityMapNonSubsampledImages_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityMap, fragmentDensityMapDynamic, fragmentDensityMapNonSubsampledImages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMapFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMap == rhs.fragmentDensityMap ) && + ( fragmentDensityMapDynamic == rhs.fragmentDensityMapDynamic ) && + ( fragmentDensityMapNonSubsampledImages == rhs.fragmentDensityMapNonSubsampledImages ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT; + void * pNext = {}; + Bool32 fragmentDensityMap = {}; + Bool32 fragmentDensityMapDynamic = {}; + Bool32 fragmentDensityMapNonSubsampledImages = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE.html + struct PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE + { + using NativeType = VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE( Bool32 fragmentDensityMapLayered_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentDensityMapLayered{ fragmentDensityMapLayered_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE( PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE( VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE & + operator=( PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE & operator=( VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE & setFragmentDensityMapLayered( Bool32 fragmentDensityMapLayered_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapLayered = fragmentDensityMapLayered_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE && setFragmentDensityMapLayered( Bool32 fragmentDensityMapLayered_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapLayered = fragmentDensityMapLayered_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityMapLayered ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMapLayered == rhs.fragmentDensityMapLayered ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE; + void * pNext = {}; + Bool32 fragmentDensityMapLayered = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE.html + struct PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE + { + using NativeType = VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE( uint32_t maxFragmentDensityMapLayers_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxFragmentDensityMapLayers{ maxFragmentDensityMapLayers_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE( PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE( VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE & + operator=( PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE & + operator=( VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxFragmentDensityMapLayers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxFragmentDensityMapLayers == rhs.maxFragmentDensityMapLayers ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE; + void * pNext = {}; + uint32_t maxFragmentDensityMapLayers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT.html + struct PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT + { + using NativeType = VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT( Bool32 fragmentDensityMapOffset_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentDensityMapOffset{ fragmentDensityMapOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT( PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT & + operator=( PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT & setFragmentDensityMapOffset( Bool32 fragmentDensityMapOffset_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapOffset = fragmentDensityMapOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT && setFragmentDensityMapOffset( Bool32 fragmentDensityMapOffset_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapOffset = fragmentDensityMapOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityMapOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMapOffset == rhs.fragmentDensityMapOffset ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesEXT; + void * pNext = {}; + Bool32 fragmentDensityMapOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT; + }; + + using PhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM = PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT; + + // wrapper struct for struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.html + struct PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT + { + using NativeType = VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT( Extent2D fragmentDensityOffsetGranularity_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentDensityOffsetGranularity{ fragmentDensityOffsetGranularity_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT( PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT & + operator=( PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT & operator=( VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityOffsetGranularity ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityOffsetGranularity == rhs.fragmentDensityOffsetGranularity ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesEXT; + void * pNext = {}; + Extent2D fragmentDensityOffsetGranularity = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT; + }; + + using PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT; + + // wrapper struct for struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentDensityMapPropertiesEXT.html + struct PhysicalDeviceFragmentDensityMapPropertiesEXT + { + using NativeType = VkPhysicalDeviceFragmentDensityMapPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapPropertiesEXT( Extent2D minFragmentDensityTexelSize_ = {}, + Extent2D maxFragmentDensityTexelSize_ = {}, + Bool32 fragmentDensityInvocations_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minFragmentDensityTexelSize{ minFragmentDensityTexelSize_ } + , maxFragmentDensityTexelSize{ maxFragmentDensityTexelSize_ } + , fragmentDensityInvocations{ fragmentDensityInvocations_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentDensityMapPropertiesEXT( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentDensityMapPropertiesEXT( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentDensityMapPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentDensityMapPropertiesEXT & operator=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentDensityMapPropertiesEXT & operator=( VkPhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentDensityMapPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minFragmentDensityTexelSize, maxFragmentDensityTexelSize, fragmentDensityInvocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentDensityMapPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minFragmentDensityTexelSize == rhs.minFragmentDensityTexelSize ) && + ( maxFragmentDensityTexelSize == rhs.maxFragmentDensityTexelSize ) && ( fragmentDensityInvocations == rhs.fragmentDensityInvocations ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT; + void * pNext = {}; + Extent2D minFragmentDensityTexelSize = {}; + Extent2D maxFragmentDensityTexelSize = {}; + Bool32 fragmentDensityInvocations = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentDensityMapPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR.html + struct PhysicalDeviceFragmentShaderBarycentricFeaturesKHR + { + using NativeType = VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( Bool32 fragmentShaderBarycentric_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentShaderBarycentric{ fragmentShaderBarycentric_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShaderBarycentricFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentShaderBarycentricFeaturesKHR & + operator=( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShaderBarycentricFeaturesKHR & operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR & setFragmentShaderBarycentric( Bool32 fragmentShaderBarycentric_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentShaderBarycentric = fragmentShaderBarycentric_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesKHR && setFragmentShaderBarycentric( Bool32 fragmentShaderBarycentric_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentShaderBarycentric = fragmentShaderBarycentric_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentShaderBarycentric ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentShaderBarycentric == rhs.fragmentShaderBarycentric ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShaderBarycentricFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + void * pNext = {}; + Bool32 fragmentShaderBarycentric = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + }; + + using PhysicalDeviceFragmentShaderBarycentricFeaturesNV = PhysicalDeviceFragmentShaderBarycentricFeaturesKHR; + + // wrapper struct for struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR.html + struct PhysicalDeviceFragmentShaderBarycentricPropertiesKHR + { + using NativeType = VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShaderBarycentricPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( Bool32 triStripVertexOrderIndependentOfProvokingVertex_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , triStripVertexOrderIndependentOfProvokingVertex{ triStripVertexOrderIndependentOfProvokingVertex_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShaderBarycentricPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentShaderBarycentricPropertiesKHR & + operator=( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShaderBarycentricPropertiesKHR & operator=( VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, triStripVertexOrderIndependentOfProvokingVertex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( triStripVertexOrderIndependentOfProvokingVertex == rhs.triStripVertexOrderIndependentOfProvokingVertex ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShaderBarycentricPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentShaderBarycentricPropertiesKHR; + void * pNext = {}; + Bool32 triStripVertexOrderIndependentOfProvokingVertex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShaderBarycentricPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShaderBarycentricPropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT.html + struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT + { + using NativeType = VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT( Bool32 fragmentShaderSampleInterlock_ = {}, + Bool32 fragmentShaderPixelInterlock_ = {}, + Bool32 fragmentShaderShadingRateInterlock_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentShaderSampleInterlock{ fragmentShaderSampleInterlock_ } + , fragmentShaderPixelInterlock{ fragmentShaderPixelInterlock_ } + , fragmentShaderShadingRateInterlock{ fragmentShaderShadingRateInterlock_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentShaderInterlockFeaturesEXT( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShaderInterlockFeaturesEXT( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShaderInterlockFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderSampleInterlock( Bool32 fragmentShaderSampleInterlock_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentShaderSampleInterlock = fragmentShaderSampleInterlock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT && setFragmentShaderSampleInterlock( Bool32 fragmentShaderSampleInterlock_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentShaderSampleInterlock = fragmentShaderSampleInterlock_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderPixelInterlock( Bool32 fragmentShaderPixelInterlock_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentShaderPixelInterlock = fragmentShaderPixelInterlock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT && setFragmentShaderPixelInterlock( Bool32 fragmentShaderPixelInterlock_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentShaderPixelInterlock = fragmentShaderPixelInterlock_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & + setFragmentShaderShadingRateInterlock( Bool32 fragmentShaderShadingRateInterlock_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentShaderShadingRateInterlock = fragmentShaderShadingRateInterlock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT && + setFragmentShaderShadingRateInterlock( Bool32 fragmentShaderShadingRateInterlock_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentShaderShadingRateInterlock = fragmentShaderShadingRateInterlock_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentShaderSampleInterlock, fragmentShaderPixelInterlock, fragmentShaderShadingRateInterlock ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentShaderSampleInterlock == rhs.fragmentShaderSampleInterlock ) && + ( fragmentShaderPixelInterlock == rhs.fragmentShaderPixelInterlock ) && + ( fragmentShaderShadingRateInterlock == rhs.fragmentShaderShadingRateInterlock ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT; + void * pNext = {}; + Bool32 fragmentShaderSampleInterlock = {}; + Bool32 fragmentShaderPixelInterlock = {}; + Bool32 fragmentShaderShadingRateInterlock = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShaderInterlockFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShaderInterlockFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV.html + struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV + { + using NativeType = VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( Bool32 fragmentShadingRateEnums_ = {}, + Bool32 supersampleFragmentShadingRates_ = {}, + Bool32 noInvocationFragmentShadingRates_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentShadingRateEnums{ fragmentShadingRateEnums_ } + , supersampleFragmentShadingRates{ supersampleFragmentShadingRates_ } + , noInvocationFragmentShadingRates{ noInvocationFragmentShadingRates_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShadingRateEnumsFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setFragmentShadingRateEnums( Bool32 fragmentShadingRateEnums_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentShadingRateEnums = fragmentShadingRateEnums_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV && setFragmentShadingRateEnums( Bool32 fragmentShadingRateEnums_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentShadingRateEnums = fragmentShadingRateEnums_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setSupersampleFragmentShadingRates( Bool32 supersampleFragmentShadingRates_ ) & + VULKAN_HPP_NOEXCEPT + { + supersampleFragmentShadingRates = supersampleFragmentShadingRates_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV && setSupersampleFragmentShadingRates( Bool32 supersampleFragmentShadingRates_ ) && + VULKAN_HPP_NOEXCEPT + { + supersampleFragmentShadingRates = supersampleFragmentShadingRates_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setNoInvocationFragmentShadingRates( Bool32 noInvocationFragmentShadingRates_ ) & + VULKAN_HPP_NOEXCEPT + { + noInvocationFragmentShadingRates = noInvocationFragmentShadingRates_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV && + setNoInvocationFragmentShadingRates( Bool32 noInvocationFragmentShadingRates_ ) && + VULKAN_HPP_NOEXCEPT + { + noInvocationFragmentShadingRates = noInvocationFragmentShadingRates_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentShadingRateEnums, supersampleFragmentShadingRates, noInvocationFragmentShadingRates ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentShadingRateEnums == rhs.fragmentShadingRateEnums ) && + ( supersampleFragmentShadingRates == rhs.supersampleFragmentShadingRates ) && + ( noInvocationFragmentShadingRates == rhs.noInvocationFragmentShadingRates ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + void * pNext = {}; + Bool32 fragmentShadingRateEnums = {}; + Bool32 supersampleFragmentShadingRates = {}; + Bool32 noInvocationFragmentShadingRates = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateEnumsFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV.html + struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV + { + using NativeType = VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( SampleCountFlagBits maxFragmentShadingRateInvocationCount_ = SampleCountFlagBits::e1, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxFragmentShadingRateInvocationCount{ maxFragmentShadingRateInvocationCount_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & + operator=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & operator=( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxFragmentShadingRateInvocationCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxFragmentShadingRateInvocationCount == rhs.maxFragmentShadingRateInvocationCount ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + void * pNext = {}; + SampleCountFlagBits maxFragmentShadingRateInvocationCount = SampleCountFlagBits::e1; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateFeaturesKHR.html + struct PhysicalDeviceFragmentShadingRateFeaturesKHR + { + using NativeType = VkPhysicalDeviceFragmentShadingRateFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR( Bool32 pipelineFragmentShadingRate_ = {}, + Bool32 primitiveFragmentShadingRate_ = {}, + Bool32 attachmentFragmentShadingRate_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineFragmentShadingRate{ pipelineFragmentShadingRate_ } + , primitiveFragmentShadingRate{ primitiveFragmentShadingRate_ } + , attachmentFragmentShadingRate{ attachmentFragmentShadingRate_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateFeaturesKHR( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShadingRateFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setPipelineFragmentShadingRate( Bool32 pipelineFragmentShadingRate_ ) & + VULKAN_HPP_NOEXCEPT + { + pipelineFragmentShadingRate = pipelineFragmentShadingRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR && setPipelineFragmentShadingRate( Bool32 pipelineFragmentShadingRate_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelineFragmentShadingRate = pipelineFragmentShadingRate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setPrimitiveFragmentShadingRate( Bool32 primitiveFragmentShadingRate_ ) & + VULKAN_HPP_NOEXCEPT + { + primitiveFragmentShadingRate = primitiveFragmentShadingRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR && setPrimitiveFragmentShadingRate( Bool32 primitiveFragmentShadingRate_ ) && + VULKAN_HPP_NOEXCEPT + { + primitiveFragmentShadingRate = primitiveFragmentShadingRate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & setAttachmentFragmentShadingRate( Bool32 attachmentFragmentShadingRate_ ) & + VULKAN_HPP_NOEXCEPT + { + attachmentFragmentShadingRate = attachmentFragmentShadingRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR && setAttachmentFragmentShadingRate( Bool32 attachmentFragmentShadingRate_ ) && + VULKAN_HPP_NOEXCEPT + { + attachmentFragmentShadingRate = attachmentFragmentShadingRate_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineFragmentShadingRate, primitiveFragmentShadingRate, attachmentFragmentShadingRate ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShadingRateFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineFragmentShadingRate == rhs.pipelineFragmentShadingRate ) && + ( primitiveFragmentShadingRate == rhs.primitiveFragmentShadingRate ) && ( attachmentFragmentShadingRate == rhs.attachmentFragmentShadingRate ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR; + void * pNext = {}; + Bool32 pipelineFragmentShadingRate = {}; + Bool32 primitiveFragmentShadingRate = {}; + Bool32 attachmentFragmentShadingRate = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentShadingRateKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRateKHR.html + struct PhysicalDeviceFragmentShadingRateKHR + { + using NativeType = VkPhysicalDeviceFragmentShadingRateKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRateKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentShadingRateKHR( SampleCountFlags sampleCounts_ = {}, Extent2D fragmentSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , sampleCounts{ sampleCounts_ } + , fragmentSize{ fragmentSize_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRateKHR( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShadingRateKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentShadingRateKHR & operator=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShadingRateKHR & operator=( VkPhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceFragmentShadingRateKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRateKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sampleCounts, fragmentSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShadingRateKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleCounts == rhs.sampleCounts ) && ( fragmentSize == rhs.fragmentSize ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateKHR; + void * pNext = {}; + SampleCountFlags sampleCounts = {}; + Extent2D fragmentSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRateKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFragmentShadingRatePropertiesKHR.html + struct PhysicalDeviceFragmentShadingRatePropertiesKHR + { + using NativeType = VkPhysicalDeviceFragmentShadingRatePropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentShadingRatePropertiesKHR( Extent2D minFragmentShadingRateAttachmentTexelSize_ = {}, + Extent2D maxFragmentShadingRateAttachmentTexelSize_ = {}, + uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ = {}, + Bool32 primitiveFragmentShadingRateWithMultipleViewports_ = {}, + Bool32 layeredShadingRateAttachments_ = {}, + Bool32 fragmentShadingRateNonTrivialCombinerOps_ = {}, + Extent2D maxFragmentSize_ = {}, + uint32_t maxFragmentSizeAspectRatio_ = {}, + uint32_t maxFragmentShadingRateCoverageSamples_ = {}, + SampleCountFlagBits maxFragmentShadingRateRasterizationSamples_ = SampleCountFlagBits::e1, + Bool32 fragmentShadingRateWithShaderDepthStencilWrites_ = {}, + Bool32 fragmentShadingRateWithSampleMask_ = {}, + Bool32 fragmentShadingRateWithShaderSampleMask_ = {}, + Bool32 fragmentShadingRateWithConservativeRasterization_ = {}, + Bool32 fragmentShadingRateWithFragmentShaderInterlock_ = {}, + Bool32 fragmentShadingRateWithCustomSampleLocations_ = {}, + Bool32 fragmentShadingRateStrictMultiplyCombiner_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minFragmentShadingRateAttachmentTexelSize{ minFragmentShadingRateAttachmentTexelSize_ } + , maxFragmentShadingRateAttachmentTexelSize{ maxFragmentShadingRateAttachmentTexelSize_ } + , maxFragmentShadingRateAttachmentTexelSizeAspectRatio{ maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ } + , primitiveFragmentShadingRateWithMultipleViewports{ primitiveFragmentShadingRateWithMultipleViewports_ } + , layeredShadingRateAttachments{ layeredShadingRateAttachments_ } + , fragmentShadingRateNonTrivialCombinerOps{ fragmentShadingRateNonTrivialCombinerOps_ } + , maxFragmentSize{ maxFragmentSize_ } + , maxFragmentSizeAspectRatio{ maxFragmentSizeAspectRatio_ } + , maxFragmentShadingRateCoverageSamples{ maxFragmentShadingRateCoverageSamples_ } + , maxFragmentShadingRateRasterizationSamples{ maxFragmentShadingRateRasterizationSamples_ } + , fragmentShadingRateWithShaderDepthStencilWrites{ fragmentShadingRateWithShaderDepthStencilWrites_ } + , fragmentShadingRateWithSampleMask{ fragmentShadingRateWithSampleMask_ } + , fragmentShadingRateWithShaderSampleMask{ fragmentShadingRateWithShaderSampleMask_ } + , fragmentShadingRateWithConservativeRasterization{ fragmentShadingRateWithConservativeRasterization_ } + , fragmentShadingRateWithFragmentShaderInterlock{ fragmentShadingRateWithFragmentShaderInterlock_ } + , fragmentShadingRateWithCustomSampleLocations{ fragmentShadingRateWithCustomSampleLocations_ } + , fragmentShadingRateStrictMultiplyCombiner{ fragmentShadingRateStrictMultiplyCombiner_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceFragmentShadingRatePropertiesKHR( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFragmentShadingRatePropertiesKHR( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFragmentShadingRatePropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( VkPhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFragmentShadingRatePropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + minFragmentShadingRateAttachmentTexelSize, + maxFragmentShadingRateAttachmentTexelSize, + maxFragmentShadingRateAttachmentTexelSizeAspectRatio, + primitiveFragmentShadingRateWithMultipleViewports, + layeredShadingRateAttachments, + fragmentShadingRateNonTrivialCombinerOps, + maxFragmentSize, + maxFragmentSizeAspectRatio, + maxFragmentShadingRateCoverageSamples, + maxFragmentShadingRateRasterizationSamples, + fragmentShadingRateWithShaderDepthStencilWrites, + fragmentShadingRateWithSampleMask, + fragmentShadingRateWithShaderSampleMask, + fragmentShadingRateWithConservativeRasterization, + fragmentShadingRateWithFragmentShaderInterlock, + fragmentShadingRateWithCustomSampleLocations, + fragmentShadingRateStrictMultiplyCombiner ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFragmentShadingRatePropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( minFragmentShadingRateAttachmentTexelSize == rhs.minFragmentShadingRateAttachmentTexelSize ) && + ( maxFragmentShadingRateAttachmentTexelSize == rhs.maxFragmentShadingRateAttachmentTexelSize ) && + ( maxFragmentShadingRateAttachmentTexelSizeAspectRatio == rhs.maxFragmentShadingRateAttachmentTexelSizeAspectRatio ) && + ( primitiveFragmentShadingRateWithMultipleViewports == rhs.primitiveFragmentShadingRateWithMultipleViewports ) && + ( layeredShadingRateAttachments == rhs.layeredShadingRateAttachments ) && + ( fragmentShadingRateNonTrivialCombinerOps == rhs.fragmentShadingRateNonTrivialCombinerOps ) && ( maxFragmentSize == rhs.maxFragmentSize ) && + ( maxFragmentSizeAspectRatio == rhs.maxFragmentSizeAspectRatio ) && + ( maxFragmentShadingRateCoverageSamples == rhs.maxFragmentShadingRateCoverageSamples ) && + ( maxFragmentShadingRateRasterizationSamples == rhs.maxFragmentShadingRateRasterizationSamples ) && + ( fragmentShadingRateWithShaderDepthStencilWrites == rhs.fragmentShadingRateWithShaderDepthStencilWrites ) && + ( fragmentShadingRateWithSampleMask == rhs.fragmentShadingRateWithSampleMask ) && + ( fragmentShadingRateWithShaderSampleMask == rhs.fragmentShadingRateWithShaderSampleMask ) && + ( fragmentShadingRateWithConservativeRasterization == rhs.fragmentShadingRateWithConservativeRasterization ) && + ( fragmentShadingRateWithFragmentShaderInterlock == rhs.fragmentShadingRateWithFragmentShaderInterlock ) && + ( fragmentShadingRateWithCustomSampleLocations == rhs.fragmentShadingRateWithCustomSampleLocations ) && + ( fragmentShadingRateStrictMultiplyCombiner == rhs.fragmentShadingRateStrictMultiplyCombiner ); +# endif + } + + bool operator!=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR; + void * pNext = {}; + Extent2D minFragmentShadingRateAttachmentTexelSize = {}; + Extent2D maxFragmentShadingRateAttachmentTexelSize = {}; + uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio = {}; + Bool32 primitiveFragmentShadingRateWithMultipleViewports = {}; + Bool32 layeredShadingRateAttachments = {}; + Bool32 fragmentShadingRateNonTrivialCombinerOps = {}; + Extent2D maxFragmentSize = {}; + uint32_t maxFragmentSizeAspectRatio = {}; + uint32_t maxFragmentShadingRateCoverageSamples = {}; + SampleCountFlagBits maxFragmentShadingRateRasterizationSamples = SampleCountFlagBits::e1; + Bool32 fragmentShadingRateWithShaderDepthStencilWrites = {}; + Bool32 fragmentShadingRateWithSampleMask = {}; + Bool32 fragmentShadingRateWithShaderSampleMask = {}; + Bool32 fragmentShadingRateWithConservativeRasterization = {}; + Bool32 fragmentShadingRateWithFragmentShaderInterlock = {}; + Bool32 fragmentShadingRateWithCustomSampleLocations = {}; + Bool32 fragmentShadingRateStrictMultiplyCombiner = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRatePropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFragmentShadingRatePropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceFrameBoundaryFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceFrameBoundaryFeaturesEXT.html + struct PhysicalDeviceFrameBoundaryFeaturesEXT + { + using NativeType = VkPhysicalDeviceFrameBoundaryFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFrameBoundaryFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceFrameBoundaryFeaturesEXT( Bool32 frameBoundary_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , frameBoundary{ frameBoundary_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceFrameBoundaryFeaturesEXT( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceFrameBoundaryFeaturesEXT( VkPhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceFrameBoundaryFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceFrameBoundaryFeaturesEXT & operator=( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceFrameBoundaryFeaturesEXT & operator=( VkPhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFrameBoundaryFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFrameBoundaryFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFrameBoundaryFeaturesEXT & setFrameBoundary( Bool32 frameBoundary_ ) & VULKAN_HPP_NOEXCEPT + { + frameBoundary = frameBoundary_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFrameBoundaryFeaturesEXT && setFrameBoundary( Bool32 frameBoundary_ ) && VULKAN_HPP_NOEXCEPT + { + frameBoundary = frameBoundary_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceFrameBoundaryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFrameBoundaryFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFrameBoundaryFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceFrameBoundaryFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, frameBoundary ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceFrameBoundaryFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( frameBoundary == rhs.frameBoundary ); +# endif + } + + bool operator!=( PhysicalDeviceFrameBoundaryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceFrameBoundaryFeaturesEXT; + void * pNext = {}; + Bool32 frameBoundary = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceFrameBoundaryFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceFrameBoundaryFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceGlobalPriorityQueryFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceGlobalPriorityQueryFeatures.html + struct PhysicalDeviceGlobalPriorityQueryFeatures + { + using NativeType = VkPhysicalDeviceGlobalPriorityQueryFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceGlobalPriorityQueryFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceGlobalPriorityQueryFeatures( Bool32 globalPriorityQuery_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , globalPriorityQuery{ globalPriorityQuery_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceGlobalPriorityQueryFeatures( PhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceGlobalPriorityQueryFeatures( VkPhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceGlobalPriorityQueryFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceGlobalPriorityQueryFeatures & operator=( PhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceGlobalPriorityQueryFeatures & operator=( VkPhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeatures & setGlobalPriorityQuery( Bool32 globalPriorityQuery_ ) & VULKAN_HPP_NOEXCEPT + { + globalPriorityQuery = globalPriorityQuery_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGlobalPriorityQueryFeatures && setGlobalPriorityQuery( Bool32 globalPriorityQuery_ ) && VULKAN_HPP_NOEXCEPT + { + globalPriorityQuery = globalPriorityQuery_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceGlobalPriorityQueryFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGlobalPriorityQueryFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGlobalPriorityQueryFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGlobalPriorityQueryFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, globalPriorityQuery ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceGlobalPriorityQueryFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( globalPriorityQuery == rhs.globalPriorityQuery ); +# endif + } + + bool operator!=( PhysicalDeviceGlobalPriorityQueryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceGlobalPriorityQueryFeatures; + void * pNext = {}; + Bool32 globalPriorityQuery = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceGlobalPriorityQueryFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceGlobalPriorityQueryFeatures; + }; + + using PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeatures; + using PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeatures; + + // wrapper struct for struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.html + struct PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT + { + using NativeType = VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceGraphicsPipelineLibraryFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( Bool32 graphicsPipelineLibrary_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , graphicsPipelineLibrary{ graphicsPipelineLibrary_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT & operator=( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT & operator=( VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT & setGraphicsPipelineLibrary( Bool32 graphicsPipelineLibrary_ ) & + VULKAN_HPP_NOEXCEPT + { + graphicsPipelineLibrary = graphicsPipelineLibrary_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT && setGraphicsPipelineLibrary( Bool32 graphicsPipelineLibrary_ ) && + VULKAN_HPP_NOEXCEPT + { + graphicsPipelineLibrary = graphicsPipelineLibrary_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, graphicsPipelineLibrary ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( graphicsPipelineLibrary == rhs.graphicsPipelineLibrary ); +# endif + } + + bool operator!=( PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceGraphicsPipelineLibraryFeaturesEXT; + void * pNext = {}; + Bool32 graphicsPipelineLibrary = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.html + struct PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT + { + using NativeType = VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceGraphicsPipelineLibraryPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( Bool32 graphicsPipelineLibraryFastLinking_ = {}, + Bool32 graphicsPipelineLibraryIndependentInterpolationDecoration_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , graphicsPipelineLibraryFastLinking{ graphicsPipelineLibraryFastLinking_ } + , graphicsPipelineLibraryIndependentInterpolationDecoration{ graphicsPipelineLibraryIndependentInterpolationDecoration_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT & + operator=( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT & operator=( VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, graphicsPipelineLibraryFastLinking, graphicsPipelineLibraryIndependentInterpolationDecoration ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( graphicsPipelineLibraryFastLinking == rhs.graphicsPipelineLibraryFastLinking ) && + ( graphicsPipelineLibraryIndependentInterpolationDecoration == rhs.graphicsPipelineLibraryIndependentInterpolationDecoration ); +# endif + } + + bool operator!=( PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceGraphicsPipelineLibraryPropertiesEXT; + void * pNext = {}; + Bool32 graphicsPipelineLibraryFastLinking = {}; + Bool32 graphicsPipelineLibraryIndependentInterpolationDecoration = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceGroupProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceGroupProperties.html + struct PhysicalDeviceGroupProperties + { + using NativeType = VkPhysicalDeviceGroupProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceGroupProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties( uint32_t physicalDeviceCount_ = {}, + std::array const & physicalDevices_ = {}, + Bool32 subsetAllocation_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , physicalDeviceCount{ physicalDeviceCount_ } + , physicalDevices{ physicalDevices_ } + , subsetAllocation{ subsetAllocation_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceGroupProperties( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceGroupProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceGroupProperties & operator=( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceGroupProperties & operator=( VkPhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceGroupProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGroupProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGroupProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceGroupProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, Bool32 const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, physicalDeviceCount, physicalDevices, subsetAllocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = physicalDeviceCount <=> rhs.physicalDeviceCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < physicalDeviceCount; ++i ) + { + if ( auto cmp = physicalDevices[i] <=> rhs.physicalDevices[i]; cmp != 0 ) + return cmp; + } + if ( auto cmp = subsetAllocation <=> rhs.subsetAllocation; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( physicalDeviceCount == rhs.physicalDeviceCount ) && + ( memcmp( physicalDevices, rhs.physicalDevices, physicalDeviceCount * sizeof( PhysicalDevice ) ) == 0 ) && + ( subsetAllocation == rhs.subsetAllocation ); + } + + bool operator!=( PhysicalDeviceGroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePhysicalDeviceGroupProperties; + void * pNext = {}; + uint32_t physicalDeviceCount = {}; + ArrayWrapper1D physicalDevices = {}; + Bool32 subsetAllocation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceGroupProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceGroupProperties; + }; + + using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties; + + // wrapper struct for struct VkPhysicalDeviceHdrVividFeaturesHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceHdrVividFeaturesHUAWEI.html + struct PhysicalDeviceHdrVividFeaturesHUAWEI + { + using NativeType = VkPhysicalDeviceHdrVividFeaturesHUAWEI; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceHdrVividFeaturesHUAWEI; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceHdrVividFeaturesHUAWEI( Bool32 hdrVivid_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , hdrVivid{ hdrVivid_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceHdrVividFeaturesHUAWEI( PhysicalDeviceHdrVividFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceHdrVividFeaturesHUAWEI( VkPhysicalDeviceHdrVividFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceHdrVividFeaturesHUAWEI( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceHdrVividFeaturesHUAWEI & operator=( PhysicalDeviceHdrVividFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceHdrVividFeaturesHUAWEI & operator=( VkPhysicalDeviceHdrVividFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHdrVividFeaturesHUAWEI & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHdrVividFeaturesHUAWEI && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHdrVividFeaturesHUAWEI & setHdrVivid( Bool32 hdrVivid_ ) & VULKAN_HPP_NOEXCEPT + { + hdrVivid = hdrVivid_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHdrVividFeaturesHUAWEI && setHdrVivid( Bool32 hdrVivid_ ) && VULKAN_HPP_NOEXCEPT + { + hdrVivid = hdrVivid_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceHdrVividFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHdrVividFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHdrVividFeaturesHUAWEI const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHdrVividFeaturesHUAWEI *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hdrVivid ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceHdrVividFeaturesHUAWEI const & ) const = default; +#else + bool operator==( PhysicalDeviceHdrVividFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hdrVivid == rhs.hdrVivid ); +# endif + } + + bool operator!=( PhysicalDeviceHdrVividFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceHdrVividFeaturesHUAWEI; + void * pNext = {}; + Bool32 hdrVivid = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceHdrVividFeaturesHUAWEI; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceHdrVividFeaturesHUAWEI; + }; + + // wrapper struct for struct VkPhysicalDeviceHostImageCopyFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyFeatures.html + struct PhysicalDeviceHostImageCopyFeatures + { + using NativeType = VkPhysicalDeviceHostImageCopyFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceHostImageCopyFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceHostImageCopyFeatures( Bool32 hostImageCopy_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , hostImageCopy{ hostImageCopy_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceHostImageCopyFeatures( PhysicalDeviceHostImageCopyFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceHostImageCopyFeatures( VkPhysicalDeviceHostImageCopyFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceHostImageCopyFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceHostImageCopyFeatures & operator=( PhysicalDeviceHostImageCopyFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceHostImageCopyFeatures & operator=( VkPhysicalDeviceHostImageCopyFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyFeatures & setHostImageCopy( Bool32 hostImageCopy_ ) & VULKAN_HPP_NOEXCEPT + { + hostImageCopy = hostImageCopy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyFeatures && setHostImageCopy( Bool32 hostImageCopy_ ) && VULKAN_HPP_NOEXCEPT + { + hostImageCopy = hostImageCopy_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceHostImageCopyFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHostImageCopyFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHostImageCopyFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHostImageCopyFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hostImageCopy ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceHostImageCopyFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceHostImageCopyFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hostImageCopy == rhs.hostImageCopy ); +# endif + } + + bool operator!=( PhysicalDeviceHostImageCopyFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceHostImageCopyFeatures; + void * pNext = {}; + Bool32 hostImageCopy = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceHostImageCopyFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceHostImageCopyFeatures; + }; + + using PhysicalDeviceHostImageCopyFeaturesEXT = PhysicalDeviceHostImageCopyFeatures; + + // wrapper struct for struct VkPhysicalDeviceHostImageCopyProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceHostImageCopyProperties.html + struct PhysicalDeviceHostImageCopyProperties + { + using NativeType = VkPhysicalDeviceHostImageCopyProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceHostImageCopyProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties( uint32_t copySrcLayoutCount_ = {}, + ImageLayout * pCopySrcLayouts_ = {}, + uint32_t copyDstLayoutCount_ = {}, + ImageLayout * pCopyDstLayouts_ = {}, + std::array const & optimalTilingLayoutUUID_ = {}, + Bool32 identicalMemoryTypeRequirements_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , copySrcLayoutCount{ copySrcLayoutCount_ } + , pCopySrcLayouts{ pCopySrcLayouts_ } + , copyDstLayoutCount{ copyDstLayoutCount_ } + , pCopyDstLayouts{ pCopyDstLayouts_ } + , optimalTilingLayoutUUID{ optimalTilingLayoutUUID_ } + , identicalMemoryTypeRequirements{ identicalMemoryTypeRequirements_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties( PhysicalDeviceHostImageCopyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceHostImageCopyProperties( VkPhysicalDeviceHostImageCopyProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceHostImageCopyProperties( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceHostImageCopyProperties( ArrayProxyNoTemporaries const & copySrcLayouts_, + ArrayProxyNoTemporaries const & copyDstLayouts_ = {}, + std::array const & optimalTilingLayoutUUID_ = {}, + Bool32 identicalMemoryTypeRequirements_ = {}, + void * pNext_ = nullptr ) + : pNext( pNext_ ) + , copySrcLayoutCount( static_cast( copySrcLayouts_.size() ) ) + , pCopySrcLayouts( copySrcLayouts_.data() ) + , copyDstLayoutCount( static_cast( copyDstLayouts_.size() ) ) + , pCopyDstLayouts( copyDstLayouts_.data() ) + , optimalTilingLayoutUUID( optimalTilingLayoutUUID_ ) + , identicalMemoryTypeRequirements( identicalMemoryTypeRequirements_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PhysicalDeviceHostImageCopyProperties & operator=( PhysicalDeviceHostImageCopyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceHostImageCopyProperties & operator=( VkPhysicalDeviceHostImageCopyProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties & setCopySrcLayoutCount( uint32_t copySrcLayoutCount_ ) & VULKAN_HPP_NOEXCEPT + { + copySrcLayoutCount = copySrcLayoutCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties && setCopySrcLayoutCount( uint32_t copySrcLayoutCount_ ) && VULKAN_HPP_NOEXCEPT + { + copySrcLayoutCount = copySrcLayoutCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties & setPCopySrcLayouts( ImageLayout * pCopySrcLayouts_ ) & VULKAN_HPP_NOEXCEPT + { + pCopySrcLayouts = pCopySrcLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties && setPCopySrcLayouts( ImageLayout * pCopySrcLayouts_ ) && VULKAN_HPP_NOEXCEPT + { + pCopySrcLayouts = pCopySrcLayouts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceHostImageCopyProperties & setCopySrcLayouts( ArrayProxyNoTemporaries const & copySrcLayouts_ ) VULKAN_HPP_NOEXCEPT + { + copySrcLayoutCount = static_cast( copySrcLayouts_.size() ); + pCopySrcLayouts = copySrcLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties & setCopyDstLayoutCount( uint32_t copyDstLayoutCount_ ) & VULKAN_HPP_NOEXCEPT + { + copyDstLayoutCount = copyDstLayoutCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties && setCopyDstLayoutCount( uint32_t copyDstLayoutCount_ ) && VULKAN_HPP_NOEXCEPT + { + copyDstLayoutCount = copyDstLayoutCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties & setPCopyDstLayouts( ImageLayout * pCopyDstLayouts_ ) & VULKAN_HPP_NOEXCEPT + { + pCopyDstLayouts = pCopyDstLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties && setPCopyDstLayouts( ImageLayout * pCopyDstLayouts_ ) && VULKAN_HPP_NOEXCEPT + { + pCopyDstLayouts = pCopyDstLayouts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceHostImageCopyProperties & setCopyDstLayouts( ArrayProxyNoTemporaries const & copyDstLayouts_ ) VULKAN_HPP_NOEXCEPT + { + copyDstLayoutCount = static_cast( copyDstLayouts_.size() ); + pCopyDstLayouts = copyDstLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties & setOptimalTilingLayoutUUID( std::array optimalTilingLayoutUUID_ ) & + VULKAN_HPP_NOEXCEPT + { + optimalTilingLayoutUUID = optimalTilingLayoutUUID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties && setOptimalTilingLayoutUUID( std::array optimalTilingLayoutUUID_ ) && + VULKAN_HPP_NOEXCEPT + { + optimalTilingLayoutUUID = optimalTilingLayoutUUID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties & setIdenticalMemoryTypeRequirements( Bool32 identicalMemoryTypeRequirements_ ) & + VULKAN_HPP_NOEXCEPT + { + identicalMemoryTypeRequirements = identicalMemoryTypeRequirements_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostImageCopyProperties && setIdenticalMemoryTypeRequirements( Bool32 identicalMemoryTypeRequirements_ ) && + VULKAN_HPP_NOEXCEPT + { + identicalMemoryTypeRequirements = identicalMemoryTypeRequirements_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceHostImageCopyProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHostImageCopyProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHostImageCopyProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHostImageCopyProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + Bool32 const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, copySrcLayoutCount, pCopySrcLayouts, copyDstLayoutCount, pCopyDstLayouts, optimalTilingLayoutUUID, identicalMemoryTypeRequirements ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceHostImageCopyProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceHostImageCopyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( copySrcLayoutCount == rhs.copySrcLayoutCount ) && + ( pCopySrcLayouts == rhs.pCopySrcLayouts ) && ( copyDstLayoutCount == rhs.copyDstLayoutCount ) && ( pCopyDstLayouts == rhs.pCopyDstLayouts ) && + ( optimalTilingLayoutUUID == rhs.optimalTilingLayoutUUID ) && ( identicalMemoryTypeRequirements == rhs.identicalMemoryTypeRequirements ); +# endif + } + + bool operator!=( PhysicalDeviceHostImageCopyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceHostImageCopyProperties; + void * pNext = {}; + uint32_t copySrcLayoutCount = {}; + ImageLayout * pCopySrcLayouts = {}; + uint32_t copyDstLayoutCount = {}; + ImageLayout * pCopyDstLayouts = {}; + ArrayWrapper1D optimalTilingLayoutUUID = {}; + Bool32 identicalMemoryTypeRequirements = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceHostImageCopyProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceHostImageCopyProperties; + }; + + using PhysicalDeviceHostImageCopyPropertiesEXT = PhysicalDeviceHostImageCopyProperties; + + // wrapper struct for struct VkPhysicalDeviceHostQueryResetFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceHostQueryResetFeatures.html + struct PhysicalDeviceHostQueryResetFeatures + { + using NativeType = VkPhysicalDeviceHostQueryResetFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceHostQueryResetFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( Bool32 hostQueryReset_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , hostQueryReset{ hostQueryReset_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceHostQueryResetFeatures( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceHostQueryResetFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceHostQueryResetFeatures & operator=( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceHostQueryResetFeatures & operator=( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & setHostQueryReset( Bool32 hostQueryReset_ ) & VULKAN_HPP_NOEXCEPT + { + hostQueryReset = hostQueryReset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures && setHostQueryReset( Bool32 hostQueryReset_ ) && VULKAN_HPP_NOEXCEPT + { + hostQueryReset = hostQueryReset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceHostQueryResetFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHostQueryResetFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHostQueryResetFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceHostQueryResetFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hostQueryReset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceHostQueryResetFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hostQueryReset == rhs.hostQueryReset ); +# endif + } + + bool operator!=( PhysicalDeviceHostQueryResetFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceHostQueryResetFeatures; + void * pNext = {}; + Bool32 hostQueryReset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceHostQueryResetFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceHostQueryResetFeatures; + }; + + using PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures; + + // wrapper struct for struct VkPhysicalDeviceIDProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceIDProperties.html + struct PhysicalDeviceIDProperties + { + using NativeType = VkPhysicalDeviceIDProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceIdProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties( std::array const & deviceUUID_ = {}, + std::array const & driverUUID_ = {}, + std::array const & deviceLUID_ = {}, + uint32_t deviceNodeMask_ = {}, + Bool32 deviceLUIDValid_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceUUID{ deviceUUID_ } + , driverUUID{ driverUUID_ } + , deviceLUID{ deviceLUID_ } + , deviceNodeMask{ deviceNodeMask_ } + , deviceLUIDValid{ deviceLUIDValid_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceIDProperties( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceIDProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceIDProperties & operator=( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceIDProperties & operator=( VkPhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceIDProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceIDProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceIDProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceIDProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + ArrayWrapper1D const &, + uint32_t const &, + Bool32 const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, deviceUUID, driverUUID, deviceLUID, deviceNodeMask, deviceLUIDValid ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceIDProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceUUID == rhs.deviceUUID ) && ( driverUUID == rhs.driverUUID ) && + ( deviceLUID == rhs.deviceLUID ) && ( deviceNodeMask == rhs.deviceNodeMask ) && ( deviceLUIDValid == rhs.deviceLUIDValid ); +# endif + } + + bool operator!=( PhysicalDeviceIDProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceIdProperties; + void * pNext = {}; + ArrayWrapper1D deviceUUID = {}; + ArrayWrapper1D driverUUID = {}; + ArrayWrapper1D deviceLUID = {}; + uint32_t deviceNodeMask = {}; + Bool32 deviceLUIDValid = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceIDProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceIDProperties; + }; + + using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties; + + // wrapper struct for struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImage2DViewOf3DFeaturesEXT.html + struct PhysicalDeviceImage2DViewOf3DFeaturesEXT + { + using NativeType = VkPhysicalDeviceImage2DViewOf3DFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImage2DViewOf3DFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceImage2DViewOf3DFeaturesEXT( Bool32 image2DViewOf3D_ = {}, Bool32 sampler2DViewOf3D_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image2DViewOf3D{ image2DViewOf3D_ } + , sampler2DViewOf3D{ sampler2DViewOf3D_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImage2DViewOf3DFeaturesEXT( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImage2DViewOf3DFeaturesEXT( VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImage2DViewOf3DFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImage2DViewOf3DFeaturesEXT & operator=( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImage2DViewOf3DFeaturesEXT & operator=( VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT & setImage2DViewOf3D( Bool32 image2DViewOf3D_ ) & VULKAN_HPP_NOEXCEPT + { + image2DViewOf3D = image2DViewOf3D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT && setImage2DViewOf3D( Bool32 image2DViewOf3D_ ) && VULKAN_HPP_NOEXCEPT + { + image2DViewOf3D = image2DViewOf3D_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT & setSampler2DViewOf3D( Bool32 sampler2DViewOf3D_ ) & VULKAN_HPP_NOEXCEPT + { + sampler2DViewOf3D = sampler2DViewOf3D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImage2DViewOf3DFeaturesEXT && setSampler2DViewOf3D( Bool32 sampler2DViewOf3D_ ) && VULKAN_HPP_NOEXCEPT + { + sampler2DViewOf3D = sampler2DViewOf3D_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image2DViewOf3D, sampler2DViewOf3D ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image2DViewOf3D == rhs.image2DViewOf3D ) && ( sampler2DViewOf3D == rhs.sampler2DViewOf3D ); +# endif + } + + bool operator!=( PhysicalDeviceImage2DViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImage2DViewOf3DFeaturesEXT; + void * pNext = {}; + Bool32 image2DViewOf3D = {}; + Bool32 sampler2DViewOf3D = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImage2DViewOf3DFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImage2DViewOf3DFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceImageAlignmentControlFeaturesMESA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlFeaturesMESA.html + struct PhysicalDeviceImageAlignmentControlFeaturesMESA + { + using NativeType = VkPhysicalDeviceImageAlignmentControlFeaturesMESA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageAlignmentControlFeaturesMESA; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageAlignmentControlFeaturesMESA( Bool32 imageAlignmentControl_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageAlignmentControl{ imageAlignmentControl_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceImageAlignmentControlFeaturesMESA( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageAlignmentControlFeaturesMESA( VkPhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageAlignmentControlFeaturesMESA( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageAlignmentControlFeaturesMESA & operator=( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageAlignmentControlFeaturesMESA & operator=( VkPhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlFeaturesMESA & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlFeaturesMESA && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlFeaturesMESA & setImageAlignmentControl( Bool32 imageAlignmentControl_ ) & VULKAN_HPP_NOEXCEPT + { + imageAlignmentControl = imageAlignmentControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageAlignmentControlFeaturesMESA && setImageAlignmentControl( Bool32 imageAlignmentControl_ ) && VULKAN_HPP_NOEXCEPT + { + imageAlignmentControl = imageAlignmentControl_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageAlignmentControlFeaturesMESA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageAlignmentControl ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageAlignmentControlFeaturesMESA const & ) const = default; +#else + bool operator==( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageAlignmentControl == rhs.imageAlignmentControl ); +# endif + } + + bool operator!=( PhysicalDeviceImageAlignmentControlFeaturesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageAlignmentControlFeaturesMESA; + void * pNext = {}; + Bool32 imageAlignmentControl = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageAlignmentControlFeaturesMESA; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageAlignmentControlFeaturesMESA; + }; + + // wrapper struct for struct VkPhysicalDeviceImageAlignmentControlPropertiesMESA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageAlignmentControlPropertiesMESA.html + struct PhysicalDeviceImageAlignmentControlPropertiesMESA + { + using NativeType = VkPhysicalDeviceImageAlignmentControlPropertiesMESA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageAlignmentControlPropertiesMESA; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageAlignmentControlPropertiesMESA( uint32_t supportedImageAlignmentMask_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , supportedImageAlignmentMask{ supportedImageAlignmentMask_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceImageAlignmentControlPropertiesMESA( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageAlignmentControlPropertiesMESA( VkPhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageAlignmentControlPropertiesMESA( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageAlignmentControlPropertiesMESA & + operator=( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageAlignmentControlPropertiesMESA & operator=( VkPhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageAlignmentControlPropertiesMESA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supportedImageAlignmentMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageAlignmentControlPropertiesMESA const & ) const = default; +#else + bool operator==( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedImageAlignmentMask == rhs.supportedImageAlignmentMask ); +# endif + } + + bool operator!=( PhysicalDeviceImageAlignmentControlPropertiesMESA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageAlignmentControlPropertiesMESA; + void * pNext = {}; + uint32_t supportedImageAlignmentMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageAlignmentControlPropertiesMESA; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageAlignmentControlPropertiesMESA; + }; + + // wrapper struct for struct VkPhysicalDeviceImageCompressionControlFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlFeaturesEXT.html + struct PhysicalDeviceImageCompressionControlFeaturesEXT + { + using NativeType = VkPhysicalDeviceImageCompressionControlFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageCompressionControlFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageCompressionControlFeaturesEXT( Bool32 imageCompressionControl_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageCompressionControl{ imageCompressionControl_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceImageCompressionControlFeaturesEXT( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageCompressionControlFeaturesEXT( VkPhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageCompressionControlFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageCompressionControlFeaturesEXT & operator=( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageCompressionControlFeaturesEXT & operator=( VkPhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlFeaturesEXT & setImageCompressionControl( Bool32 imageCompressionControl_ ) & + VULKAN_HPP_NOEXCEPT + { + imageCompressionControl = imageCompressionControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlFeaturesEXT && setImageCompressionControl( Bool32 imageCompressionControl_ ) && + VULKAN_HPP_NOEXCEPT + { + imageCompressionControl = imageCompressionControl_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageCompressionControlFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageCompressionControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageCompressionControlFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageCompressionControlFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageCompressionControl ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageCompressionControlFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCompressionControl == rhs.imageCompressionControl ); +# endif + } + + bool operator!=( PhysicalDeviceImageCompressionControlFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageCompressionControlFeaturesEXT; + void * pNext = {}; + Bool32 imageCompressionControl = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageCompressionControlFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageCompressionControlFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.html + struct PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT + { + using NativeType = VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageCompressionControlSwapchainFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( Bool32 imageCompressionControlSwapchain_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageCompressionControlSwapchain{ imageCompressionControlSwapchain_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( + *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT & + operator=( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT & + operator=( VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT & + setImageCompressionControlSwapchain( Bool32 imageCompressionControlSwapchain_ ) & + VULKAN_HPP_NOEXCEPT + { + imageCompressionControlSwapchain = imageCompressionControlSwapchain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT && + setImageCompressionControlSwapchain( Bool32 imageCompressionControlSwapchain_ ) && + VULKAN_HPP_NOEXCEPT + { + imageCompressionControlSwapchain = imageCompressionControlSwapchain_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageCompressionControlSwapchain ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageCompressionControlSwapchain == rhs.imageCompressionControlSwapchain ); +# endif + } + + bool operator!=( PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageCompressionControlSwapchainFeaturesEXT; + void * pNext = {}; + Bool32 imageCompressionControlSwapchain = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageDrmFormatModifierInfoEXT.html + struct PhysicalDeviceImageDrmFormatModifierInfoEXT + { + using NativeType = VkPhysicalDeviceImageDrmFormatModifierInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t drmFormatModifier_ = {}, + SharingMode sharingMode_ = SharingMode::eExclusive, + uint32_t queueFamilyIndexCount_ = {}, + uint32_t const * pQueueFamilyIndices_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , drmFormatModifier{ drmFormatModifier_ } + , sharingMode{ sharingMode_ } + , queueFamilyIndexCount{ queueFamilyIndexCount_ } + , pQueueFamilyIndices{ pQueueFamilyIndices_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageDrmFormatModifierInfoEXT( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageDrmFormatModifierInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceImageDrmFormatModifierInfoEXT( uint64_t drmFormatModifier_, + SharingMode sharingMode_, + ArrayProxyNoTemporaries const & queueFamilyIndices_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , drmFormatModifier( drmFormatModifier_ ) + , sharingMode( sharingMode_ ) + , queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ) + , pQueueFamilyIndices( queueFamilyIndices_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) & VULKAN_HPP_NOEXCEPT + { + drmFormatModifier = drmFormatModifier_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT && setDrmFormatModifier( uint64_t drmFormatModifier_ ) && VULKAN_HPP_NOEXCEPT + { + drmFormatModifier = drmFormatModifier_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setSharingMode( SharingMode sharingMode_ ) & VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT && setSharingMode( SharingMode sharingMode_ ) && VULKAN_HPP_NOEXCEPT + { + sharingMode = sharingMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT && setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & setPQueueFamilyIndices( uint32_t const * pQueueFamilyIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT && setPQueueFamilyIndices( uint32_t const * pQueueFamilyIndices_ ) && + VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceImageDrmFormatModifierInfoEXT & + setQueueFamilyIndices( ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); + pQueueFamilyIndices = queueFamilyIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, drmFormatModifier, sharingMode, queueFamilyIndexCount, pQueueFamilyIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageDrmFormatModifierInfoEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( drmFormatModifier == rhs.drmFormatModifier ) && ( sharingMode == rhs.sharingMode ) && + ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ); +# endif + } + + bool operator!=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT; + void const * pNext = {}; + uint64_t drmFormatModifier = {}; + SharingMode sharingMode = SharingMode::eExclusive; + uint32_t queueFamilyIndexCount = {}; + uint32_t const * pQueueFamilyIndices = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageDrmFormatModifierInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageDrmFormatModifierInfoEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceImageFormatInfo2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageFormatInfo2.html + struct PhysicalDeviceImageFormatInfo2 + { + using NativeType = VkPhysicalDeviceImageFormatInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageFormatInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2( Format format_ = Format::eUndefined, + ImageType type_ = ImageType::e1D, + ImageTiling tiling_ = ImageTiling::eOptimal, + ImageUsageFlags usage_ = {}, + ImageCreateFlags flags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , format{ format_ } + , type{ type_ } + , tiling{ tiling_ } + , usage{ usage_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageFormatInfo2( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageFormatInfo2( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageFormatInfo2 & operator=( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageFormatInfo2 & operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setType( ImageType type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 && setType( ImageType type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setTiling( ImageTiling tiling_ ) & VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 && setTiling( ImageTiling tiling_ ) && VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setUsage( ImageUsageFlags usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 && setUsage( ImageUsageFlags usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & setFlags( ImageCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 && setFlags( ImageCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageFormatInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageFormatInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, format, type, tiling, usage, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageFormatInfo2 const & ) const = default; +#else + bool operator==( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( type == rhs.type ) && ( tiling == rhs.tiling ) && + ( usage == rhs.usage ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( PhysicalDeviceImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageFormatInfo2; + void const * pNext = {}; + Format format = Format::eUndefined; + ImageType type = ImageType::e1D; + ImageTiling tiling = ImageTiling::eOptimal; + ImageUsageFlags usage = {}; + ImageCreateFlags flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageFormatInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageFormatInfo2; + }; + + using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2; + + // wrapper struct for struct VkPhysicalDeviceImageProcessing2FeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2FeaturesQCOM.html + struct PhysicalDeviceImageProcessing2FeaturesQCOM + { + using NativeType = VkPhysicalDeviceImageProcessing2FeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageProcessing2FeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2FeaturesQCOM( Bool32 textureBlockMatch2_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , textureBlockMatch2{ textureBlockMatch2_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2FeaturesQCOM( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageProcessing2FeaturesQCOM( VkPhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageProcessing2FeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageProcessing2FeaturesQCOM & operator=( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageProcessing2FeaturesQCOM & operator=( VkPhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessing2FeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessing2FeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessing2FeaturesQCOM & setTextureBlockMatch2( Bool32 textureBlockMatch2_ ) & VULKAN_HPP_NOEXCEPT + { + textureBlockMatch2 = textureBlockMatch2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessing2FeaturesQCOM && setTextureBlockMatch2( Bool32 textureBlockMatch2_ ) && VULKAN_HPP_NOEXCEPT + { + textureBlockMatch2 = textureBlockMatch2_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageProcessing2FeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessing2FeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessing2FeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessing2FeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, textureBlockMatch2 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageProcessing2FeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( textureBlockMatch2 == rhs.textureBlockMatch2 ); +# endif + } + + bool operator!=( PhysicalDeviceImageProcessing2FeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageProcessing2FeaturesQCOM; + void * pNext = {}; + Bool32 textureBlockMatch2 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageProcessing2FeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageProcessing2FeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceImageProcessing2PropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessing2PropertiesQCOM.html + struct PhysicalDeviceImageProcessing2PropertiesQCOM + { + using NativeType = VkPhysicalDeviceImageProcessing2PropertiesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageProcessing2PropertiesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2PropertiesQCOM( Extent2D maxBlockMatchWindow_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxBlockMatchWindow{ maxBlockMatchWindow_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessing2PropertiesQCOM( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageProcessing2PropertiesQCOM( VkPhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageProcessing2PropertiesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageProcessing2PropertiesQCOM & operator=( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageProcessing2PropertiesQCOM & operator=( VkPhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceImageProcessing2PropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessing2PropertiesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessing2PropertiesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessing2PropertiesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxBlockMatchWindow ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageProcessing2PropertiesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxBlockMatchWindow == rhs.maxBlockMatchWindow ); +# endif + } + + bool operator!=( PhysicalDeviceImageProcessing2PropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageProcessing2PropertiesQCOM; + void * pNext = {}; + Extent2D maxBlockMatchWindow = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageProcessing2PropertiesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageProcessing2PropertiesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceImageProcessingFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingFeaturesQCOM.html + struct PhysicalDeviceImageProcessingFeaturesQCOM + { + using NativeType = VkPhysicalDeviceImageProcessingFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageProcessingFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingFeaturesQCOM( Bool32 textureSampleWeighted_ = {}, + Bool32 textureBoxFilter_ = {}, + Bool32 textureBlockMatch_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , textureSampleWeighted{ textureSampleWeighted_ } + , textureBoxFilter{ textureBoxFilter_ } + , textureBlockMatch{ textureBlockMatch_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingFeaturesQCOM( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageProcessingFeaturesQCOM( VkPhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageProcessingFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageProcessingFeaturesQCOM & operator=( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageProcessingFeaturesQCOM & operator=( VkPhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM & setTextureSampleWeighted( Bool32 textureSampleWeighted_ ) & VULKAN_HPP_NOEXCEPT + { + textureSampleWeighted = textureSampleWeighted_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM && setTextureSampleWeighted( Bool32 textureSampleWeighted_ ) && VULKAN_HPP_NOEXCEPT + { + textureSampleWeighted = textureSampleWeighted_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM & setTextureBoxFilter( Bool32 textureBoxFilter_ ) & VULKAN_HPP_NOEXCEPT + { + textureBoxFilter = textureBoxFilter_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM && setTextureBoxFilter( Bool32 textureBoxFilter_ ) && VULKAN_HPP_NOEXCEPT + { + textureBoxFilter = textureBoxFilter_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM & setTextureBlockMatch( Bool32 textureBlockMatch_ ) & VULKAN_HPP_NOEXCEPT + { + textureBlockMatch = textureBlockMatch_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageProcessingFeaturesQCOM && setTextureBlockMatch( Bool32 textureBlockMatch_ ) && VULKAN_HPP_NOEXCEPT + { + textureBlockMatch = textureBlockMatch_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageProcessingFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessingFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessingFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessingFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, textureSampleWeighted, textureBoxFilter, textureBlockMatch ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageProcessingFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( textureSampleWeighted == rhs.textureSampleWeighted ) && + ( textureBoxFilter == rhs.textureBoxFilter ) && ( textureBlockMatch == rhs.textureBlockMatch ); +# endif + } + + bool operator!=( PhysicalDeviceImageProcessingFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageProcessingFeaturesQCOM; + void * pNext = {}; + Bool32 textureSampleWeighted = {}; + Bool32 textureBoxFilter = {}; + Bool32 textureBlockMatch = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageProcessingFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageProcessingFeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceImageProcessingPropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageProcessingPropertiesQCOM.html + struct PhysicalDeviceImageProcessingPropertiesQCOM + { + using NativeType = VkPhysicalDeviceImageProcessingPropertiesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageProcessingPropertiesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingPropertiesQCOM( uint32_t maxWeightFilterPhases_ = {}, + Extent2D maxWeightFilterDimension_ = {}, + Extent2D maxBlockMatchRegion_ = {}, + Extent2D maxBoxFilterBlockSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxWeightFilterPhases{ maxWeightFilterPhases_ } + , maxWeightFilterDimension{ maxWeightFilterDimension_ } + , maxBlockMatchRegion{ maxBlockMatchRegion_ } + , maxBoxFilterBlockSize{ maxBoxFilterBlockSize_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageProcessingPropertiesQCOM( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageProcessingPropertiesQCOM( VkPhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageProcessingPropertiesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageProcessingPropertiesQCOM & operator=( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageProcessingPropertiesQCOM & operator=( VkPhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceImageProcessingPropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessingPropertiesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessingPropertiesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageProcessingPropertiesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxWeightFilterPhases, maxWeightFilterDimension, maxBlockMatchRegion, maxBoxFilterBlockSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageProcessingPropertiesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxWeightFilterPhases == rhs.maxWeightFilterPhases ) && + ( maxWeightFilterDimension == rhs.maxWeightFilterDimension ) && ( maxBlockMatchRegion == rhs.maxBlockMatchRegion ) && + ( maxBoxFilterBlockSize == rhs.maxBoxFilterBlockSize ); +# endif + } + + bool operator!=( PhysicalDeviceImageProcessingPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageProcessingPropertiesQCOM; + void * pNext = {}; + uint32_t maxWeightFilterPhases = {}; + Extent2D maxWeightFilterDimension = {}; + Extent2D maxBlockMatchRegion = {}; + Extent2D maxBoxFilterBlockSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageProcessingPropertiesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageProcessingPropertiesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceImageRobustnessFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageRobustnessFeatures.html + struct PhysicalDeviceImageRobustnessFeatures + { + using NativeType = VkPhysicalDeviceImageRobustnessFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageRobustnessFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeatures( Bool32 robustImageAccess_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , robustImageAccess{ robustImageAccess_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeatures( PhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageRobustnessFeatures( VkPhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageRobustnessFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageRobustnessFeatures & operator=( PhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageRobustnessFeatures & operator=( VkPhysicalDeviceImageRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures & setRobustImageAccess( Bool32 robustImageAccess_ ) & VULKAN_HPP_NOEXCEPT + { + robustImageAccess = robustImageAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeatures && setRobustImageAccess( Bool32 robustImageAccess_ ) && VULKAN_HPP_NOEXCEPT + { + robustImageAccess = robustImageAccess_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageRobustnessFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageRobustnessFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageRobustnessFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageRobustnessFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, robustImageAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageRobustnessFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceImageRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustImageAccess == rhs.robustImageAccess ); +# endif + } + + bool operator!=( PhysicalDeviceImageRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageRobustnessFeatures; + void * pNext = {}; + Bool32 robustImageAccess = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageRobustnessFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageRobustnessFeatures; + }; + + using PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures; + + // wrapper struct for struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT.html + struct PhysicalDeviceImageSlicedViewOf3DFeaturesEXT + { + using NativeType = VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( Bool32 imageSlicedViewOf3D_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageSlicedViewOf3D{ imageSlicedViewOf3D_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageSlicedViewOf3DFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageSlicedViewOf3DFeaturesEXT & operator=( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageSlicedViewOf3DFeaturesEXT & operator=( VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageSlicedViewOf3DFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageSlicedViewOf3DFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageSlicedViewOf3DFeaturesEXT & setImageSlicedViewOf3D( Bool32 imageSlicedViewOf3D_ ) & VULKAN_HPP_NOEXCEPT + { + imageSlicedViewOf3D = imageSlicedViewOf3D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageSlicedViewOf3DFeaturesEXT && setImageSlicedViewOf3D( Bool32 imageSlicedViewOf3D_ ) && VULKAN_HPP_NOEXCEPT + { + imageSlicedViewOf3D = imageSlicedViewOf3D_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageSlicedViewOf3D ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageSlicedViewOf3D == rhs.imageSlicedViewOf3D ); +# endif + } + + bool operator!=( PhysicalDeviceImageSlicedViewOf3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT; + void * pNext = {}; + Bool32 imageSlicedViewOf3D = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageSlicedViewOf3DFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageSlicedViewOf3DFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceImageViewImageFormatInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewImageFormatInfoEXT.html + struct PhysicalDeviceImageViewImageFormatInfoEXT + { + using NativeType = VkPhysicalDeviceImageViewImageFormatInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT( ImageViewType imageViewType_ = ImageViewType::e1D, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageViewType{ imageViewType_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageViewImageFormatInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageViewImageFormatInfoEXT & operator=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageViewImageFormatInfoEXT & operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & setImageViewType( ImageViewType imageViewType_ ) & VULKAN_HPP_NOEXCEPT + { + imageViewType = imageViewType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT && setImageViewType( ImageViewType imageViewType_ ) && VULKAN_HPP_NOEXCEPT + { + imageViewType = imageViewType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageViewImageFormatInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageViewImageFormatInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageViewImageFormatInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageViewImageFormatInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageViewType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageViewImageFormatInfoEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageViewType == rhs.imageViewType ); +# endif + } + + bool operator!=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT; + void * pNext = {}; + ImageViewType imageViewType = ImageViewType::e1D; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageViewImageFormatInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageViewImageFormatInfoEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceImageViewMinLodFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImageViewMinLodFeaturesEXT.html + struct PhysicalDeviceImageViewMinLodFeaturesEXT + { + using NativeType = VkPhysicalDeviceImageViewMinLodFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewMinLodFeaturesEXT( Bool32 minLod_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minLod{ minLod_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewMinLodFeaturesEXT( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImageViewMinLodFeaturesEXT( VkPhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImageViewMinLodFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImageViewMinLodFeaturesEXT & operator=( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImageViewMinLodFeaturesEXT & operator=( VkPhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT & setMinLod( Bool32 minLod_ ) & VULKAN_HPP_NOEXCEPT + { + minLod = minLod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewMinLodFeaturesEXT && setMinLod( Bool32 minLod_ ) && VULKAN_HPP_NOEXCEPT + { + minLod = minLod_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImageViewMinLodFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageViewMinLodFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageViewMinLodFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImageViewMinLodFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minLod ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImageViewMinLodFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minLod == rhs.minLod ); +# endif + } + + bool operator!=( PhysicalDeviceImageViewMinLodFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT; + void * pNext = {}; + Bool32 minLod = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImageViewMinLodFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImageViewMinLodFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceImagelessFramebufferFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceImagelessFramebufferFeatures.html + struct PhysicalDeviceImagelessFramebufferFeatures + { + using NativeType = VkPhysicalDeviceImagelessFramebufferFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImagelessFramebufferFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( Bool32 imagelessFramebuffer_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imagelessFramebuffer{ imagelessFramebuffer_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceImagelessFramebufferFeatures( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceImagelessFramebufferFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceImagelessFramebufferFeatures & operator=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceImagelessFramebufferFeatures & operator=( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & setImagelessFramebuffer( Bool32 imagelessFramebuffer_ ) & VULKAN_HPP_NOEXCEPT + { + imagelessFramebuffer = imagelessFramebuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures && setImagelessFramebuffer( Bool32 imagelessFramebuffer_ ) && VULKAN_HPP_NOEXCEPT + { + imagelessFramebuffer = imagelessFramebuffer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceImagelessFramebufferFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImagelessFramebufferFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImagelessFramebufferFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceImagelessFramebufferFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imagelessFramebuffer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceImagelessFramebufferFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imagelessFramebuffer == rhs.imagelessFramebuffer ); +# endif + } + + bool operator!=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceImagelessFramebufferFeatures; + void * pNext = {}; + Bool32 imagelessFramebuffer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceImagelessFramebufferFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceImagelessFramebufferFeatures; + }; + + using PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures; + + // wrapper struct for struct VkPhysicalDeviceIndexTypeUint8Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceIndexTypeUint8Features.html + struct PhysicalDeviceIndexTypeUint8Features + { + using NativeType = VkPhysicalDeviceIndexTypeUint8Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceIndexTypeUint8Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8Features( Bool32 indexTypeUint8_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , indexTypeUint8{ indexTypeUint8_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8Features( PhysicalDeviceIndexTypeUint8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceIndexTypeUint8Features( VkPhysicalDeviceIndexTypeUint8Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceIndexTypeUint8Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceIndexTypeUint8Features & operator=( PhysicalDeviceIndexTypeUint8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceIndexTypeUint8Features & operator=( VkPhysicalDeviceIndexTypeUint8Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8Features & setIndexTypeUint8( Bool32 indexTypeUint8_ ) & VULKAN_HPP_NOEXCEPT + { + indexTypeUint8 = indexTypeUint8_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8Features && setIndexTypeUint8( Bool32 indexTypeUint8_ ) && VULKAN_HPP_NOEXCEPT + { + indexTypeUint8 = indexTypeUint8_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceIndexTypeUint8Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceIndexTypeUint8Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceIndexTypeUint8Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceIndexTypeUint8Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, indexTypeUint8 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceIndexTypeUint8Features const & ) const = default; +#else + bool operator==( PhysicalDeviceIndexTypeUint8Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( indexTypeUint8 == rhs.indexTypeUint8 ); +# endif + } + + bool operator!=( PhysicalDeviceIndexTypeUint8Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceIndexTypeUint8Features; + void * pNext = {}; + Bool32 indexTypeUint8 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceIndexTypeUint8Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceIndexTypeUint8Features; + }; + + using PhysicalDeviceIndexTypeUint8FeaturesEXT = PhysicalDeviceIndexTypeUint8Features; + using PhysicalDeviceIndexTypeUint8FeaturesKHR = PhysicalDeviceIndexTypeUint8Features; + + // wrapper struct for struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceInheritedViewportScissorFeaturesNV.html + struct PhysicalDeviceInheritedViewportScissorFeaturesNV + { + using NativeType = VkPhysicalDeviceInheritedViewportScissorFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceInheritedViewportScissorFeaturesNV( Bool32 inheritedViewportScissor2D_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , inheritedViewportScissor2D{ inheritedViewportScissor2D_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceInheritedViewportScissorFeaturesNV( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInheritedViewportScissorFeaturesNV( VkPhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceInheritedViewportScissorFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceInheritedViewportScissorFeaturesNV & operator=( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceInheritedViewportScissorFeaturesNV & operator=( VkPhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV & setInheritedViewportScissor2D( Bool32 inheritedViewportScissor2D_ ) & + VULKAN_HPP_NOEXCEPT + { + inheritedViewportScissor2D = inheritedViewportScissor2D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInheritedViewportScissorFeaturesNV && setInheritedViewportScissor2D( Bool32 inheritedViewportScissor2D_ ) && + VULKAN_HPP_NOEXCEPT + { + inheritedViewportScissor2D = inheritedViewportScissor2D_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInheritedViewportScissorFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, inheritedViewportScissor2D ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceInheritedViewportScissorFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( inheritedViewportScissor2D == rhs.inheritedViewportScissor2D ); +# endif + } + + bool operator!=( PhysicalDeviceInheritedViewportScissorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV; + void * pNext = {}; + Bool32 inheritedViewportScissor2D = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceInheritedViewportScissorFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceInheritedViewportScissorFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceInlineUniformBlockFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockFeatures.html + struct PhysicalDeviceInlineUniformBlockFeatures + { + using NativeType = VkPhysicalDeviceInlineUniformBlockFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceInlineUniformBlockFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeatures( Bool32 inlineUniformBlock_ = {}, + Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , inlineUniformBlock{ inlineUniformBlock_ } + , descriptorBindingInlineUniformBlockUpdateAfterBind{ descriptorBindingInlineUniformBlockUpdateAfterBind_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeatures( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInlineUniformBlockFeatures( VkPhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceInlineUniformBlockFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceInlineUniformBlockFeatures & operator=( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceInlineUniformBlockFeatures & operator=( VkPhysicalDeviceInlineUniformBlockFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & setInlineUniformBlock( Bool32 inlineUniformBlock_ ) & VULKAN_HPP_NOEXCEPT + { + inlineUniformBlock = inlineUniformBlock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures && setInlineUniformBlock( Bool32 inlineUniformBlock_ ) && VULKAN_HPP_NOEXCEPT + { + inlineUniformBlock = inlineUniformBlock_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures & + setDescriptorBindingInlineUniformBlockUpdateAfterBind( Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeatures && + setDescriptorBindingInlineUniformBlockUpdateAfterBind( Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceInlineUniformBlockFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInlineUniformBlockFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInlineUniformBlockFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInlineUniformBlockFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, inlineUniformBlock, descriptorBindingInlineUniformBlockUpdateAfterBind ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceInlineUniformBlockFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( inlineUniformBlock == rhs.inlineUniformBlock ) && + ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind ); +# endif + } + + bool operator!=( PhysicalDeviceInlineUniformBlockFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockFeatures; + void * pNext = {}; + Bool32 inlineUniformBlock = {}; + Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceInlineUniformBlockFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceInlineUniformBlockFeatures; + }; + + using PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures; + + // wrapper struct for struct VkPhysicalDeviceInlineUniformBlockProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceInlineUniformBlockProperties.html + struct PhysicalDeviceInlineUniformBlockProperties + { + using NativeType = VkPhysicalDeviceInlineUniformBlockProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceInlineUniformBlockProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockProperties( uint32_t maxInlineUniformBlockSize_ = {}, + uint32_t maxPerStageDescriptorInlineUniformBlocks_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = {}, + uint32_t maxDescriptorSetInlineUniformBlocks_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxInlineUniformBlockSize{ maxInlineUniformBlockSize_ } + , maxPerStageDescriptorInlineUniformBlocks{ maxPerStageDescriptorInlineUniformBlocks_ } + , maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks{ maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ } + , maxDescriptorSetInlineUniformBlocks{ maxDescriptorSetInlineUniformBlocks_ } + , maxDescriptorSetUpdateAfterBindInlineUniformBlocks{ maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockProperties( PhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInlineUniformBlockProperties( VkPhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceInlineUniformBlockProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceInlineUniformBlockProperties & operator=( PhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceInlineUniformBlockProperties & operator=( VkPhysicalDeviceInlineUniformBlockProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceInlineUniformBlockProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInlineUniformBlockProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInlineUniformBlockProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInlineUniformBlockProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxInlineUniformBlockSize, + maxPerStageDescriptorInlineUniformBlocks, + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks, + maxDescriptorSetInlineUniformBlocks, + maxDescriptorSetUpdateAfterBindInlineUniformBlocks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceInlineUniformBlockProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceInlineUniformBlockProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize ) && + ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks ) && + ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ) && + ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks ) && + ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ); +# endif + } + + bool operator!=( PhysicalDeviceInlineUniformBlockProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockProperties; + void * pNext = {}; + uint32_t maxInlineUniformBlockSize = {}; + uint32_t maxPerStageDescriptorInlineUniformBlocks = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = {}; + uint32_t maxDescriptorSetInlineUniformBlocks = {}; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceInlineUniformBlockProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceInlineUniformBlockProperties; + }; + + using PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties; + + // wrapper struct for struct VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR.html + struct PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR + { + using NativeType = VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceInternallySynchronizedQueuesFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR( Bool32 internallySynchronizedQueues_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , internallySynchronizedQueues{ internallySynchronizedQueues_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR( PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR( VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR & + operator=( PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR & operator=( VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR & setInternallySynchronizedQueues( Bool32 internallySynchronizedQueues_ ) & + VULKAN_HPP_NOEXCEPT + { + internallySynchronizedQueues = internallySynchronizedQueues_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR && setInternallySynchronizedQueues( Bool32 internallySynchronizedQueues_ ) && + VULKAN_HPP_NOEXCEPT + { + internallySynchronizedQueues = internallySynchronizedQueues_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, internallySynchronizedQueues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( internallySynchronizedQueues == rhs.internallySynchronizedQueues ); +# endif + } + + bool operator!=( PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceInternallySynchronizedQueuesFeaturesKHR; + void * pNext = {}; + Bool32 internallySynchronizedQueues = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceInvocationMaskFeaturesHUAWEI.html + struct PhysicalDeviceInvocationMaskFeaturesHUAWEI + { + using NativeType = VkPhysicalDeviceInvocationMaskFeaturesHUAWEI; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceInvocationMaskFeaturesHUAWEI( Bool32 invocationMask_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , invocationMask{ invocationMask_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceInvocationMaskFeaturesHUAWEI( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceInvocationMaskFeaturesHUAWEI( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceInvocationMaskFeaturesHUAWEI( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceInvocationMaskFeaturesHUAWEI & operator=( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceInvocationMaskFeaturesHUAWEI & operator=( VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI & setInvocationMask( Bool32 invocationMask_ ) & VULKAN_HPP_NOEXCEPT + { + invocationMask = invocationMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInvocationMaskFeaturesHUAWEI && setInvocationMask( Bool32 invocationMask_ ) && VULKAN_HPP_NOEXCEPT + { + invocationMask = invocationMask_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceInvocationMaskFeaturesHUAWEI *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, invocationMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & ) const = default; +#else + bool operator==( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( invocationMask == rhs.invocationMask ); +# endif + } + + bool operator!=( PhysicalDeviceInvocationMaskFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI; + void * pNext = {}; + Bool32 invocationMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceInvocationMaskFeaturesHUAWEI; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceInvocationMaskFeaturesHUAWEI; + }; + + // wrapper struct for struct VkPhysicalDeviceLayeredApiPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesKHR.html + struct PhysicalDeviceLayeredApiPropertiesKHR + { + using NativeType = VkPhysicalDeviceLayeredApiPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLayeredApiPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesKHR( uint32_t vendorID_ = {}, + uint32_t deviceID_ = {}, + PhysicalDeviceLayeredApiKHR layeredAPI_ = PhysicalDeviceLayeredApiKHR::eVulkan, + std::array const & deviceName_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vendorID{ vendorID_ } + , deviceID{ deviceID_ } + , layeredAPI{ layeredAPI_ } + , deviceName{ deviceName_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesKHR( PhysicalDeviceLayeredApiPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLayeredApiPropertiesKHR( VkPhysicalDeviceLayeredApiPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLayeredApiPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceLayeredApiPropertiesKHR & operator=( PhysicalDeviceLayeredApiPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLayeredApiPropertiesKHR & operator=( VkPhysicalDeviceLayeredApiPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceLayeredApiPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredApiPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredApiPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredApiPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vendorID, deviceID, layeredAPI, deviceName ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLayeredApiPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceLayeredApiPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) && + ( layeredAPI == rhs.layeredAPI ) && ( deviceName == rhs.deviceName ); +# endif + } + + bool operator!=( PhysicalDeviceLayeredApiPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceLayeredApiPropertiesKHR; + void * pNext = {}; + uint32_t vendorID = {}; + uint32_t deviceID = {}; + PhysicalDeviceLayeredApiKHR layeredAPI = PhysicalDeviceLayeredApiKHR::eVulkan; + ArrayWrapper1D deviceName = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLayeredApiPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceLayeredApiPropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceLayeredApiPropertiesListKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiPropertiesListKHR.html + struct PhysicalDeviceLayeredApiPropertiesListKHR + { + using NativeType = VkPhysicalDeviceLayeredApiPropertiesListKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLayeredApiPropertiesListKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR( uint32_t layeredApiCount_ = {}, + PhysicalDeviceLayeredApiPropertiesKHR * pLayeredApis_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , layeredApiCount{ layeredApiCount_ } + , pLayeredApis{ pLayeredApis_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR( PhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLayeredApiPropertiesListKHR( VkPhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLayeredApiPropertiesListKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceLayeredApiPropertiesListKHR( ArrayProxyNoTemporaries const & layeredApis_, void * pNext_ = nullptr ) + : pNext( pNext_ ), layeredApiCount( static_cast( layeredApis_.size() ) ), pLayeredApis( layeredApis_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PhysicalDeviceLayeredApiPropertiesListKHR & operator=( PhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLayeredApiPropertiesListKHR & operator=( VkPhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR & setLayeredApiCount( uint32_t layeredApiCount_ ) & VULKAN_HPP_NOEXCEPT + { + layeredApiCount = layeredApiCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR && setLayeredApiCount( uint32_t layeredApiCount_ ) && VULKAN_HPP_NOEXCEPT + { + layeredApiCount = layeredApiCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR & setPLayeredApis( PhysicalDeviceLayeredApiPropertiesKHR * pLayeredApis_ ) & + VULKAN_HPP_NOEXCEPT + { + pLayeredApis = pLayeredApis_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiPropertiesListKHR && setPLayeredApis( PhysicalDeviceLayeredApiPropertiesKHR * pLayeredApis_ ) && + VULKAN_HPP_NOEXCEPT + { + pLayeredApis = pLayeredApis_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PhysicalDeviceLayeredApiPropertiesListKHR & + setLayeredApis( ArrayProxyNoTemporaries const & layeredApis_ ) VULKAN_HPP_NOEXCEPT + { + layeredApiCount = static_cast( layeredApis_.size() ); + pLayeredApis = layeredApis_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceLayeredApiPropertiesListKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredApiPropertiesListKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredApiPropertiesListKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredApiPropertiesListKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, layeredApiCount, pLayeredApis ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLayeredApiPropertiesListKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( layeredApiCount == rhs.layeredApiCount ) && ( pLayeredApis == rhs.pLayeredApis ); +# endif + } + + bool operator!=( PhysicalDeviceLayeredApiPropertiesListKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceLayeredApiPropertiesListKHR; + void * pNext = {}; + uint32_t layeredApiCount = {}; + PhysicalDeviceLayeredApiPropertiesKHR * pLayeredApis = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLayeredApiPropertiesListKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceLayeredApiPropertiesListKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceLimits, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLimits.html + struct PhysicalDeviceLimits + { + using NativeType = VkPhysicalDeviceLimits; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits( uint32_t maxImageDimension1D_ = {}, + uint32_t maxImageDimension2D_ = {}, + uint32_t maxImageDimension3D_ = {}, + uint32_t maxImageDimensionCube_ = {}, + uint32_t maxImageArrayLayers_ = {}, + uint32_t maxTexelBufferElements_ = {}, + uint32_t maxUniformBufferRange_ = {}, + uint32_t maxStorageBufferRange_ = {}, + uint32_t maxPushConstantsSize_ = {}, + uint32_t maxMemoryAllocationCount_ = {}, + uint32_t maxSamplerAllocationCount_ = {}, + DeviceSize bufferImageGranularity_ = {}, + DeviceSize sparseAddressSpaceSize_ = {}, + uint32_t maxBoundDescriptorSets_ = {}, + uint32_t maxPerStageDescriptorSamplers_ = {}, + uint32_t maxPerStageDescriptorUniformBuffers_ = {}, + uint32_t maxPerStageDescriptorStorageBuffers_ = {}, + uint32_t maxPerStageDescriptorSampledImages_ = {}, + uint32_t maxPerStageDescriptorStorageImages_ = {}, + uint32_t maxPerStageDescriptorInputAttachments_ = {}, + uint32_t maxPerStageResources_ = {}, + uint32_t maxDescriptorSetSamplers_ = {}, + uint32_t maxDescriptorSetUniformBuffers_ = {}, + uint32_t maxDescriptorSetUniformBuffersDynamic_ = {}, + uint32_t maxDescriptorSetStorageBuffers_ = {}, + uint32_t maxDescriptorSetStorageBuffersDynamic_ = {}, + uint32_t maxDescriptorSetSampledImages_ = {}, + uint32_t maxDescriptorSetStorageImages_ = {}, + uint32_t maxDescriptorSetInputAttachments_ = {}, + uint32_t maxVertexInputAttributes_ = {}, + uint32_t maxVertexInputBindings_ = {}, + uint32_t maxVertexInputAttributeOffset_ = {}, + uint32_t maxVertexInputBindingStride_ = {}, + uint32_t maxVertexOutputComponents_ = {}, + uint32_t maxTessellationGenerationLevel_ = {}, + uint32_t maxTessellationPatchSize_ = {}, + uint32_t maxTessellationControlPerVertexInputComponents_ = {}, + uint32_t maxTessellationControlPerVertexOutputComponents_ = {}, + uint32_t maxTessellationControlPerPatchOutputComponents_ = {}, + uint32_t maxTessellationControlTotalOutputComponents_ = {}, + uint32_t maxTessellationEvaluationInputComponents_ = {}, + uint32_t maxTessellationEvaluationOutputComponents_ = {}, + uint32_t maxGeometryShaderInvocations_ = {}, + uint32_t maxGeometryInputComponents_ = {}, + uint32_t maxGeometryOutputComponents_ = {}, + uint32_t maxGeometryOutputVertices_ = {}, + uint32_t maxGeometryTotalOutputComponents_ = {}, + uint32_t maxFragmentInputComponents_ = {}, + uint32_t maxFragmentOutputAttachments_ = {}, + uint32_t maxFragmentDualSrcAttachments_ = {}, + uint32_t maxFragmentCombinedOutputResources_ = {}, + uint32_t maxComputeSharedMemorySize_ = {}, + std::array const & maxComputeWorkGroupCount_ = {}, + uint32_t maxComputeWorkGroupInvocations_ = {}, + std::array const & maxComputeWorkGroupSize_ = {}, + uint32_t subPixelPrecisionBits_ = {}, + uint32_t subTexelPrecisionBits_ = {}, + uint32_t mipmapPrecisionBits_ = {}, + uint32_t maxDrawIndexedIndexValue_ = {}, + uint32_t maxDrawIndirectCount_ = {}, + float maxSamplerLodBias_ = {}, + float maxSamplerAnisotropy_ = {}, + uint32_t maxViewports_ = {}, + std::array const & maxViewportDimensions_ = {}, + std::array const & viewportBoundsRange_ = {}, + uint32_t viewportSubPixelBits_ = {}, + size_t minMemoryMapAlignment_ = {}, + DeviceSize minTexelBufferOffsetAlignment_ = {}, + DeviceSize minUniformBufferOffsetAlignment_ = {}, + DeviceSize minStorageBufferOffsetAlignment_ = {}, + int32_t minTexelOffset_ = {}, + uint32_t maxTexelOffset_ = {}, + int32_t minTexelGatherOffset_ = {}, + uint32_t maxTexelGatherOffset_ = {}, + float minInterpolationOffset_ = {}, + float maxInterpolationOffset_ = {}, + uint32_t subPixelInterpolationOffsetBits_ = {}, + uint32_t maxFramebufferWidth_ = {}, + uint32_t maxFramebufferHeight_ = {}, + uint32_t maxFramebufferLayers_ = {}, + SampleCountFlags framebufferColorSampleCounts_ = {}, + SampleCountFlags framebufferDepthSampleCounts_ = {}, + SampleCountFlags framebufferStencilSampleCounts_ = {}, + SampleCountFlags framebufferNoAttachmentsSampleCounts_ = {}, + uint32_t maxColorAttachments_ = {}, + SampleCountFlags sampledImageColorSampleCounts_ = {}, + SampleCountFlags sampledImageIntegerSampleCounts_ = {}, + SampleCountFlags sampledImageDepthSampleCounts_ = {}, + SampleCountFlags sampledImageStencilSampleCounts_ = {}, + SampleCountFlags storageImageSampleCounts_ = {}, + uint32_t maxSampleMaskWords_ = {}, + Bool32 timestampComputeAndGraphics_ = {}, + float timestampPeriod_ = {}, + uint32_t maxClipDistances_ = {}, + uint32_t maxCullDistances_ = {}, + uint32_t maxCombinedClipAndCullDistances_ = {}, + uint32_t discreteQueuePriorities_ = {}, + std::array const & pointSizeRange_ = {}, + std::array const & lineWidthRange_ = {}, + float pointSizeGranularity_ = {}, + float lineWidthGranularity_ = {}, + Bool32 strictLines_ = {}, + Bool32 standardSampleLocations_ = {}, + DeviceSize optimalBufferCopyOffsetAlignment_ = {}, + DeviceSize optimalBufferCopyRowPitchAlignment_ = {}, + DeviceSize nonCoherentAtomSize_ = {} ) VULKAN_HPP_NOEXCEPT + : maxImageDimension1D{ maxImageDimension1D_ } + , maxImageDimension2D{ maxImageDimension2D_ } + , maxImageDimension3D{ maxImageDimension3D_ } + , maxImageDimensionCube{ maxImageDimensionCube_ } + , maxImageArrayLayers{ maxImageArrayLayers_ } + , maxTexelBufferElements{ maxTexelBufferElements_ } + , maxUniformBufferRange{ maxUniformBufferRange_ } + , maxStorageBufferRange{ maxStorageBufferRange_ } + , maxPushConstantsSize{ maxPushConstantsSize_ } + , maxMemoryAllocationCount{ maxMemoryAllocationCount_ } + , maxSamplerAllocationCount{ maxSamplerAllocationCount_ } + , bufferImageGranularity{ bufferImageGranularity_ } + , sparseAddressSpaceSize{ sparseAddressSpaceSize_ } + , maxBoundDescriptorSets{ maxBoundDescriptorSets_ } + , maxPerStageDescriptorSamplers{ maxPerStageDescriptorSamplers_ } + , maxPerStageDescriptorUniformBuffers{ maxPerStageDescriptorUniformBuffers_ } + , maxPerStageDescriptorStorageBuffers{ maxPerStageDescriptorStorageBuffers_ } + , maxPerStageDescriptorSampledImages{ maxPerStageDescriptorSampledImages_ } + , maxPerStageDescriptorStorageImages{ maxPerStageDescriptorStorageImages_ } + , maxPerStageDescriptorInputAttachments{ maxPerStageDescriptorInputAttachments_ } + , maxPerStageResources{ maxPerStageResources_ } + , maxDescriptorSetSamplers{ maxDescriptorSetSamplers_ } + , maxDescriptorSetUniformBuffers{ maxDescriptorSetUniformBuffers_ } + , maxDescriptorSetUniformBuffersDynamic{ maxDescriptorSetUniformBuffersDynamic_ } + , maxDescriptorSetStorageBuffers{ maxDescriptorSetStorageBuffers_ } + , maxDescriptorSetStorageBuffersDynamic{ maxDescriptorSetStorageBuffersDynamic_ } + , maxDescriptorSetSampledImages{ maxDescriptorSetSampledImages_ } + , maxDescriptorSetStorageImages{ maxDescriptorSetStorageImages_ } + , maxDescriptorSetInputAttachments{ maxDescriptorSetInputAttachments_ } + , maxVertexInputAttributes{ maxVertexInputAttributes_ } + , maxVertexInputBindings{ maxVertexInputBindings_ } + , maxVertexInputAttributeOffset{ maxVertexInputAttributeOffset_ } + , maxVertexInputBindingStride{ maxVertexInputBindingStride_ } + , maxVertexOutputComponents{ maxVertexOutputComponents_ } + , maxTessellationGenerationLevel{ maxTessellationGenerationLevel_ } + , maxTessellationPatchSize{ maxTessellationPatchSize_ } + , maxTessellationControlPerVertexInputComponents{ maxTessellationControlPerVertexInputComponents_ } + , maxTessellationControlPerVertexOutputComponents{ maxTessellationControlPerVertexOutputComponents_ } + , maxTessellationControlPerPatchOutputComponents{ maxTessellationControlPerPatchOutputComponents_ } + , maxTessellationControlTotalOutputComponents{ maxTessellationControlTotalOutputComponents_ } + , maxTessellationEvaluationInputComponents{ maxTessellationEvaluationInputComponents_ } + , maxTessellationEvaluationOutputComponents{ maxTessellationEvaluationOutputComponents_ } + , maxGeometryShaderInvocations{ maxGeometryShaderInvocations_ } + , maxGeometryInputComponents{ maxGeometryInputComponents_ } + , maxGeometryOutputComponents{ maxGeometryOutputComponents_ } + , maxGeometryOutputVertices{ maxGeometryOutputVertices_ } + , maxGeometryTotalOutputComponents{ maxGeometryTotalOutputComponents_ } + , maxFragmentInputComponents{ maxFragmentInputComponents_ } + , maxFragmentOutputAttachments{ maxFragmentOutputAttachments_ } + , maxFragmentDualSrcAttachments{ maxFragmentDualSrcAttachments_ } + , maxFragmentCombinedOutputResources{ maxFragmentCombinedOutputResources_ } + , maxComputeSharedMemorySize{ maxComputeSharedMemorySize_ } + , maxComputeWorkGroupCount{ maxComputeWorkGroupCount_ } + , maxComputeWorkGroupInvocations{ maxComputeWorkGroupInvocations_ } + , maxComputeWorkGroupSize{ maxComputeWorkGroupSize_ } + , subPixelPrecisionBits{ subPixelPrecisionBits_ } + , subTexelPrecisionBits{ subTexelPrecisionBits_ } + , mipmapPrecisionBits{ mipmapPrecisionBits_ } + , maxDrawIndexedIndexValue{ maxDrawIndexedIndexValue_ } + , maxDrawIndirectCount{ maxDrawIndirectCount_ } + , maxSamplerLodBias{ maxSamplerLodBias_ } + , maxSamplerAnisotropy{ maxSamplerAnisotropy_ } + , maxViewports{ maxViewports_ } + , maxViewportDimensions{ maxViewportDimensions_ } + , viewportBoundsRange{ viewportBoundsRange_ } + , viewportSubPixelBits{ viewportSubPixelBits_ } + , minMemoryMapAlignment{ minMemoryMapAlignment_ } + , minTexelBufferOffsetAlignment{ minTexelBufferOffsetAlignment_ } + , minUniformBufferOffsetAlignment{ minUniformBufferOffsetAlignment_ } + , minStorageBufferOffsetAlignment{ minStorageBufferOffsetAlignment_ } + , minTexelOffset{ minTexelOffset_ } + , maxTexelOffset{ maxTexelOffset_ } + , minTexelGatherOffset{ minTexelGatherOffset_ } + , maxTexelGatherOffset{ maxTexelGatherOffset_ } + , minInterpolationOffset{ minInterpolationOffset_ } + , maxInterpolationOffset{ maxInterpolationOffset_ } + , subPixelInterpolationOffsetBits{ subPixelInterpolationOffsetBits_ } + , maxFramebufferWidth{ maxFramebufferWidth_ } + , maxFramebufferHeight{ maxFramebufferHeight_ } + , maxFramebufferLayers{ maxFramebufferLayers_ } + , framebufferColorSampleCounts{ framebufferColorSampleCounts_ } + , framebufferDepthSampleCounts{ framebufferDepthSampleCounts_ } + , framebufferStencilSampleCounts{ framebufferStencilSampleCounts_ } + , framebufferNoAttachmentsSampleCounts{ framebufferNoAttachmentsSampleCounts_ } + , maxColorAttachments{ maxColorAttachments_ } + , sampledImageColorSampleCounts{ sampledImageColorSampleCounts_ } + , sampledImageIntegerSampleCounts{ sampledImageIntegerSampleCounts_ } + , sampledImageDepthSampleCounts{ sampledImageDepthSampleCounts_ } + , sampledImageStencilSampleCounts{ sampledImageStencilSampleCounts_ } + , storageImageSampleCounts{ storageImageSampleCounts_ } + , maxSampleMaskWords{ maxSampleMaskWords_ } + , timestampComputeAndGraphics{ timestampComputeAndGraphics_ } + , timestampPeriod{ timestampPeriod_ } + , maxClipDistances{ maxClipDistances_ } + , maxCullDistances{ maxCullDistances_ } + , maxCombinedClipAndCullDistances{ maxCombinedClipAndCullDistances_ } + , discreteQueuePriorities{ discreteQueuePriorities_ } + , pointSizeRange{ pointSizeRange_ } + , lineWidthRange{ lineWidthRange_ } + , pointSizeGranularity{ pointSizeGranularity_ } + , lineWidthGranularity{ lineWidthGranularity_ } + , strictLines{ strictLines_ } + , standardSampleLocations{ standardSampleLocations_ } + , optimalBufferCopyOffsetAlignment{ optimalBufferCopyOffsetAlignment_ } + , optimalBufferCopyRowPitchAlignment{ optimalBufferCopyRowPitchAlignment_ } + , nonCoherentAtomSize{ nonCoherentAtomSize_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLimits( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLimits( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceLimits & operator=( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLimits & operator=( VkPhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceLimits const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLimits &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLimits const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLimits *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &, + ArrayWrapper1D const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + float const &, + float const &, + uint32_t const &, + ArrayWrapper1D const &, + ArrayWrapper1D const &, + uint32_t const &, + size_t const &, + DeviceSize const &, + DeviceSize const &, + DeviceSize const &, + int32_t const &, + uint32_t const &, + int32_t const &, + uint32_t const &, + float const &, + float const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + SampleCountFlags const &, + SampleCountFlags const &, + SampleCountFlags const &, + SampleCountFlags const &, + uint32_t const &, + SampleCountFlags const &, + SampleCountFlags const &, + SampleCountFlags const &, + SampleCountFlags const &, + SampleCountFlags const &, + uint32_t const &, + Bool32 const &, + float const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + ArrayWrapper1D const &, + ArrayWrapper1D const &, + float const &, + float const &, + Bool32 const &, + Bool32 const &, + DeviceSize const &, + DeviceSize const &, + DeviceSize const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( maxImageDimension1D, + maxImageDimension2D, + maxImageDimension3D, + maxImageDimensionCube, + maxImageArrayLayers, + maxTexelBufferElements, + maxUniformBufferRange, + maxStorageBufferRange, + maxPushConstantsSize, + maxMemoryAllocationCount, + maxSamplerAllocationCount, + bufferImageGranularity, + sparseAddressSpaceSize, + maxBoundDescriptorSets, + maxPerStageDescriptorSamplers, + maxPerStageDescriptorUniformBuffers, + maxPerStageDescriptorStorageBuffers, + maxPerStageDescriptorSampledImages, + maxPerStageDescriptorStorageImages, + maxPerStageDescriptorInputAttachments, + maxPerStageResources, + maxDescriptorSetSamplers, + maxDescriptorSetUniformBuffers, + maxDescriptorSetUniformBuffersDynamic, + maxDescriptorSetStorageBuffers, + maxDescriptorSetStorageBuffersDynamic, + maxDescriptorSetSampledImages, + maxDescriptorSetStorageImages, + maxDescriptorSetInputAttachments, + maxVertexInputAttributes, + maxVertexInputBindings, + maxVertexInputAttributeOffset, + maxVertexInputBindingStride, + maxVertexOutputComponents, + maxTessellationGenerationLevel, + maxTessellationPatchSize, + maxTessellationControlPerVertexInputComponents, + maxTessellationControlPerVertexOutputComponents, + maxTessellationControlPerPatchOutputComponents, + maxTessellationControlTotalOutputComponents, + maxTessellationEvaluationInputComponents, + maxTessellationEvaluationOutputComponents, + maxGeometryShaderInvocations, + maxGeometryInputComponents, + maxGeometryOutputComponents, + maxGeometryOutputVertices, + maxGeometryTotalOutputComponents, + maxFragmentInputComponents, + maxFragmentOutputAttachments, + maxFragmentDualSrcAttachments, + maxFragmentCombinedOutputResources, + maxComputeSharedMemorySize, + maxComputeWorkGroupCount, + maxComputeWorkGroupInvocations, + maxComputeWorkGroupSize, + subPixelPrecisionBits, + subTexelPrecisionBits, + mipmapPrecisionBits, + maxDrawIndexedIndexValue, + maxDrawIndirectCount, + maxSamplerLodBias, + maxSamplerAnisotropy, + maxViewports, + maxViewportDimensions, + viewportBoundsRange, + viewportSubPixelBits, + minMemoryMapAlignment, + minTexelBufferOffsetAlignment, + minUniformBufferOffsetAlignment, + minStorageBufferOffsetAlignment, + minTexelOffset, + maxTexelOffset, + minTexelGatherOffset, + maxTexelGatherOffset, + minInterpolationOffset, + maxInterpolationOffset, + subPixelInterpolationOffsetBits, + maxFramebufferWidth, + maxFramebufferHeight, + maxFramebufferLayers, + framebufferColorSampleCounts, + framebufferDepthSampleCounts, + framebufferStencilSampleCounts, + framebufferNoAttachmentsSampleCounts, + maxColorAttachments, + sampledImageColorSampleCounts, + sampledImageIntegerSampleCounts, + sampledImageDepthSampleCounts, + sampledImageStencilSampleCounts, + storageImageSampleCounts, + maxSampleMaskWords, + timestampComputeAndGraphics, + timestampPeriod, + maxClipDistances, + maxCullDistances, + maxCombinedClipAndCullDistances, + discreteQueuePriorities, + pointSizeRange, + lineWidthRange, + pointSizeGranularity, + lineWidthGranularity, + strictLines, + standardSampleLocations, + optimalBufferCopyOffsetAlignment, + optimalBufferCopyRowPitchAlignment, + nonCoherentAtomSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLimits const & ) const = default; +#else + bool operator==( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( maxImageDimension1D == rhs.maxImageDimension1D ) && ( maxImageDimension2D == rhs.maxImageDimension2D ) && + ( maxImageDimension3D == rhs.maxImageDimension3D ) && ( maxImageDimensionCube == rhs.maxImageDimensionCube ) && + ( maxImageArrayLayers == rhs.maxImageArrayLayers ) && ( maxTexelBufferElements == rhs.maxTexelBufferElements ) && + ( maxUniformBufferRange == rhs.maxUniformBufferRange ) && ( maxStorageBufferRange == rhs.maxStorageBufferRange ) && + ( maxPushConstantsSize == rhs.maxPushConstantsSize ) && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount ) && + ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount ) && ( bufferImageGranularity == rhs.bufferImageGranularity ) && + ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize ) && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets ) && + ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers ) && + ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers ) && + ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers ) && + ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages ) && + ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages ) && + ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments ) && ( maxPerStageResources == rhs.maxPerStageResources ) && + ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers ) && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers ) && + ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic ) && + ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers ) && + ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic ) && + ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages ) && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages ) && + ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments ) && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes ) && + ( maxVertexInputBindings == rhs.maxVertexInputBindings ) && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset ) && + ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride ) && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents ) && + ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel ) && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize ) && + ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents ) && + ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents ) && + ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents ) && + ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents ) && + ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents ) && + ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents ) && + ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations ) && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents ) && + ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents ) && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices ) && + ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents ) && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents ) && + ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments ) && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments ) && + ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources ) && + ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize ) && ( maxComputeWorkGroupCount == rhs.maxComputeWorkGroupCount ) && + ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations ) && ( maxComputeWorkGroupSize == rhs.maxComputeWorkGroupSize ) && + ( subPixelPrecisionBits == rhs.subPixelPrecisionBits ) && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits ) && + ( mipmapPrecisionBits == rhs.mipmapPrecisionBits ) && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue ) && + ( maxDrawIndirectCount == rhs.maxDrawIndirectCount ) && ( maxSamplerLodBias == rhs.maxSamplerLodBias ) && + ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy ) && ( maxViewports == rhs.maxViewports ) && + ( maxViewportDimensions == rhs.maxViewportDimensions ) && ( viewportBoundsRange == rhs.viewportBoundsRange ) && + ( viewportSubPixelBits == rhs.viewportSubPixelBits ) && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment ) && + ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment ) && + ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment ) && + ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment ) && ( minTexelOffset == rhs.minTexelOffset ) && + ( maxTexelOffset == rhs.maxTexelOffset ) && ( minTexelGatherOffset == rhs.minTexelGatherOffset ) && + ( maxTexelGatherOffset == rhs.maxTexelGatherOffset ) && ( minInterpolationOffset == rhs.minInterpolationOffset ) && + ( maxInterpolationOffset == rhs.maxInterpolationOffset ) && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits ) && + ( maxFramebufferWidth == rhs.maxFramebufferWidth ) && ( maxFramebufferHeight == rhs.maxFramebufferHeight ) && + ( maxFramebufferLayers == rhs.maxFramebufferLayers ) && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts ) && + ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts ) && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts ) && + ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts ) && ( maxColorAttachments == rhs.maxColorAttachments ) && + ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts ) && + ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts ) && + ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts ) && + ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts ) && ( storageImageSampleCounts == rhs.storageImageSampleCounts ) && + ( maxSampleMaskWords == rhs.maxSampleMaskWords ) && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics ) && + ( timestampPeriod == rhs.timestampPeriod ) && ( maxClipDistances == rhs.maxClipDistances ) && ( maxCullDistances == rhs.maxCullDistances ) && + ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances ) && ( discreteQueuePriorities == rhs.discreteQueuePriorities ) && + ( pointSizeRange == rhs.pointSizeRange ) && ( lineWidthRange == rhs.lineWidthRange ) && ( pointSizeGranularity == rhs.pointSizeGranularity ) && + ( lineWidthGranularity == rhs.lineWidthGranularity ) && ( strictLines == rhs.strictLines ) && + ( standardSampleLocations == rhs.standardSampleLocations ) && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment ) && + ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment ) && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize ); +# endif + } + + bool operator!=( PhysicalDeviceLimits const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t maxImageDimension1D = {}; + uint32_t maxImageDimension2D = {}; + uint32_t maxImageDimension3D = {}; + uint32_t maxImageDimensionCube = {}; + uint32_t maxImageArrayLayers = {}; + uint32_t maxTexelBufferElements = {}; + uint32_t maxUniformBufferRange = {}; + uint32_t maxStorageBufferRange = {}; + uint32_t maxPushConstantsSize = {}; + uint32_t maxMemoryAllocationCount = {}; + uint32_t maxSamplerAllocationCount = {}; + DeviceSize bufferImageGranularity = {}; + DeviceSize sparseAddressSpaceSize = {}; + uint32_t maxBoundDescriptorSets = {}; + uint32_t maxPerStageDescriptorSamplers = {}; + uint32_t maxPerStageDescriptorUniformBuffers = {}; + uint32_t maxPerStageDescriptorStorageBuffers = {}; + uint32_t maxPerStageDescriptorSampledImages = {}; + uint32_t maxPerStageDescriptorStorageImages = {}; + uint32_t maxPerStageDescriptorInputAttachments = {}; + uint32_t maxPerStageResources = {}; + uint32_t maxDescriptorSetSamplers = {}; + uint32_t maxDescriptorSetUniformBuffers = {}; + uint32_t maxDescriptorSetUniformBuffersDynamic = {}; + uint32_t maxDescriptorSetStorageBuffers = {}; + uint32_t maxDescriptorSetStorageBuffersDynamic = {}; + uint32_t maxDescriptorSetSampledImages = {}; + uint32_t maxDescriptorSetStorageImages = {}; + uint32_t maxDescriptorSetInputAttachments = {}; + uint32_t maxVertexInputAttributes = {}; + uint32_t maxVertexInputBindings = {}; + uint32_t maxVertexInputAttributeOffset = {}; + uint32_t maxVertexInputBindingStride = {}; + uint32_t maxVertexOutputComponents = {}; + uint32_t maxTessellationGenerationLevel = {}; + uint32_t maxTessellationPatchSize = {}; + uint32_t maxTessellationControlPerVertexInputComponents = {}; + uint32_t maxTessellationControlPerVertexOutputComponents = {}; + uint32_t maxTessellationControlPerPatchOutputComponents = {}; + uint32_t maxTessellationControlTotalOutputComponents = {}; + uint32_t maxTessellationEvaluationInputComponents = {}; + uint32_t maxTessellationEvaluationOutputComponents = {}; + uint32_t maxGeometryShaderInvocations = {}; + uint32_t maxGeometryInputComponents = {}; + uint32_t maxGeometryOutputComponents = {}; + uint32_t maxGeometryOutputVertices = {}; + uint32_t maxGeometryTotalOutputComponents = {}; + uint32_t maxFragmentInputComponents = {}; + uint32_t maxFragmentOutputAttachments = {}; + uint32_t maxFragmentDualSrcAttachments = {}; + uint32_t maxFragmentCombinedOutputResources = {}; + uint32_t maxComputeSharedMemorySize = {}; + ArrayWrapper1D maxComputeWorkGroupCount = {}; + uint32_t maxComputeWorkGroupInvocations = {}; + ArrayWrapper1D maxComputeWorkGroupSize = {}; + uint32_t subPixelPrecisionBits = {}; + uint32_t subTexelPrecisionBits = {}; + uint32_t mipmapPrecisionBits = {}; + uint32_t maxDrawIndexedIndexValue = {}; + uint32_t maxDrawIndirectCount = {}; + float maxSamplerLodBias = {}; + float maxSamplerAnisotropy = {}; + uint32_t maxViewports = {}; + ArrayWrapper1D maxViewportDimensions = {}; + ArrayWrapper1D viewportBoundsRange = {}; + uint32_t viewportSubPixelBits = {}; + size_t minMemoryMapAlignment = {}; + DeviceSize minTexelBufferOffsetAlignment = {}; + DeviceSize minUniformBufferOffsetAlignment = {}; + DeviceSize minStorageBufferOffsetAlignment = {}; + int32_t minTexelOffset = {}; + uint32_t maxTexelOffset = {}; + int32_t minTexelGatherOffset = {}; + uint32_t maxTexelGatherOffset = {}; + float minInterpolationOffset = {}; + float maxInterpolationOffset = {}; + uint32_t subPixelInterpolationOffsetBits = {}; + uint32_t maxFramebufferWidth = {}; + uint32_t maxFramebufferHeight = {}; + uint32_t maxFramebufferLayers = {}; + SampleCountFlags framebufferColorSampleCounts = {}; + SampleCountFlags framebufferDepthSampleCounts = {}; + SampleCountFlags framebufferStencilSampleCounts = {}; + SampleCountFlags framebufferNoAttachmentsSampleCounts = {}; + uint32_t maxColorAttachments = {}; + SampleCountFlags sampledImageColorSampleCounts = {}; + SampleCountFlags sampledImageIntegerSampleCounts = {}; + SampleCountFlags sampledImageDepthSampleCounts = {}; + SampleCountFlags sampledImageStencilSampleCounts = {}; + SampleCountFlags storageImageSampleCounts = {}; + uint32_t maxSampleMaskWords = {}; + Bool32 timestampComputeAndGraphics = {}; + float timestampPeriod = {}; + uint32_t maxClipDistances = {}; + uint32_t maxCullDistances = {}; + uint32_t maxCombinedClipAndCullDistances = {}; + uint32_t discreteQueuePriorities = {}; + ArrayWrapper1D pointSizeRange = {}; + ArrayWrapper1D lineWidthRange = {}; + float pointSizeGranularity = {}; + float lineWidthGranularity = {}; + Bool32 strictLines = {}; + Bool32 standardSampleLocations = {}; + DeviceSize optimalBufferCopyOffsetAlignment = {}; + DeviceSize optimalBufferCopyRowPitchAlignment = {}; + DeviceSize nonCoherentAtomSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLimits; + }; +#endif + + // wrapper struct for struct VkPhysicalDeviceSparseProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseProperties.html + struct PhysicalDeviceSparseProperties + { + using NativeType = VkPhysicalDeviceSparseProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties( Bool32 residencyStandard2DBlockShape_ = {}, + Bool32 residencyStandard2DMultisampleBlockShape_ = {}, + Bool32 residencyStandard3DBlockShape_ = {}, + Bool32 residencyAlignedMipSize_ = {}, + Bool32 residencyNonResidentStrict_ = {} ) VULKAN_HPP_NOEXCEPT + : residencyStandard2DBlockShape{ residencyStandard2DBlockShape_ } + , residencyStandard2DMultisampleBlockShape{ residencyStandard2DMultisampleBlockShape_ } + , residencyStandard3DBlockShape{ residencyStandard3DBlockShape_ } + , residencyAlignedMipSize{ residencyAlignedMipSize_ } + , residencyNonResidentStrict{ residencyNonResidentStrict_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSparseProperties( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSparseProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSparseProperties & operator=( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSparseProperties & operator=( VkPhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceSparseProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSparseProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSparseProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSparseProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( residencyStandard2DBlockShape, + residencyStandard2DMultisampleBlockShape, + residencyStandard3DBlockShape, + residencyAlignedMipSize, + residencyNonResidentStrict ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSparseProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape ) && + ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape ) && + ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape ) && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize ) && + ( residencyNonResidentStrict == rhs.residencyNonResidentStrict ); +# endif + } + + bool operator!=( PhysicalDeviceSparseProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Bool32 residencyStandard2DBlockShape = {}; + Bool32 residencyStandard2DMultisampleBlockShape = {}; + Bool32 residencyStandard3DBlockShape = {}; + Bool32 residencyAlignedMipSize = {}; + Bool32 residencyNonResidentStrict = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSparseProperties; + }; +#endif + + // wrapper struct for struct VkPhysicalDeviceProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties.html + struct PhysicalDeviceProperties + { + using NativeType = VkPhysicalDeviceProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties( uint32_t apiVersion_ = {}, + uint32_t driverVersion_ = {}, + uint32_t vendorID_ = {}, + uint32_t deviceID_ = {}, + PhysicalDeviceType deviceType_ = PhysicalDeviceType::eOther, + std::array const & deviceName_ = {}, + std::array const & pipelineCacheUUID_ = {}, + PhysicalDeviceLimits limits_ = {}, + PhysicalDeviceSparseProperties sparseProperties_ = {} ) VULKAN_HPP_NOEXCEPT + : apiVersion{ apiVersion_ } + , driverVersion{ driverVersion_ } + , vendorID{ vendorID_ } + , deviceID{ deviceID_ } + , deviceType{ deviceType_ } + , deviceName{ deviceName_ } + , pipelineCacheUUID{ pipelineCacheUUID_ } + , limits{ limits_ } + , sparseProperties{ sparseProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProperties( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceProperties & operator=( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceProperties & operator=( VkPhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + PhysicalDeviceLimits const &, + PhysicalDeviceSparseProperties const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( apiVersion, driverVersion, vendorID, deviceID, deviceType, deviceName, pipelineCacheUUID, limits, sparseProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::partial_ordering operator<=>( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = apiVersion <=> rhs.apiVersion; cmp != 0 ) + return cmp; + if ( auto cmp = driverVersion <=> rhs.driverVersion; cmp != 0 ) + return cmp; + if ( auto cmp = vendorID <=> rhs.vendorID; cmp != 0 ) + return cmp; + if ( auto cmp = deviceID <=> rhs.deviceID; cmp != 0 ) + return cmp; + if ( auto cmp = deviceType <=> rhs.deviceType; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( deviceName, rhs.deviceName ); cmp != 0 ) + return ( cmp < 0 ) ? std::partial_ordering::less : std::partial_ordering::greater; + if ( auto cmp = pipelineCacheUUID <=> rhs.pipelineCacheUUID; cmp != 0 ) + return cmp; + if ( auto cmp = limits <=> rhs.limits; cmp != 0 ) + return cmp; + if ( auto cmp = sparseProperties <=> rhs.sparseProperties; cmp != 0 ) + return cmp; + + return std::partial_ordering::equivalent; + } +#endif + + bool operator==( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( apiVersion == rhs.apiVersion ) && ( driverVersion == rhs.driverVersion ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) && + ( deviceType == rhs.deviceType ) && ( strcmp( deviceName, rhs.deviceName ) == 0 ) && ( pipelineCacheUUID == rhs.pipelineCacheUUID ) && + ( limits == rhs.limits ) && ( sparseProperties == rhs.sparseProperties ); + } + + bool operator!=( PhysicalDeviceProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t apiVersion = {}; + uint32_t driverVersion = {}; + uint32_t vendorID = {}; + uint32_t deviceID = {}; + PhysicalDeviceType deviceType = PhysicalDeviceType::eOther; + ArrayWrapper1D deviceName = {}; + ArrayWrapper1D pipelineCacheUUID = {}; + PhysicalDeviceLimits limits = {}; + PhysicalDeviceSparseProperties sparseProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceProperties; + }; +#endif + + // wrapper struct for struct VkPhysicalDeviceProperties2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceProperties2.html + struct PhysicalDeviceProperties2 + { + using NativeType = VkPhysicalDeviceProperties2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProperties2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2( PhysicalDeviceProperties properties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , properties{ properties_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProperties2( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProperties2( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceProperties2 & operator=( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceProperties2 & operator=( VkPhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProperties2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProperties2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, properties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProperties2 const & ) const = default; +#else + bool operator==( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( properties == rhs.properties ); +# endif + } + + bool operator!=( PhysicalDeviceProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceProperties2; + void * pNext = {}; + PhysicalDeviceProperties properties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceProperties2; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceProperties2; + }; + + using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2; + + // wrapper struct for struct VkPhysicalDeviceLayeredApiVulkanPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredApiVulkanPropertiesKHR.html + struct PhysicalDeviceLayeredApiVulkanPropertiesKHR + { + using NativeType = VkPhysicalDeviceLayeredApiVulkanPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLayeredApiVulkanPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLayeredApiVulkanPropertiesKHR( PhysicalDeviceProperties2 properties_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , properties{ properties_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceLayeredApiVulkanPropertiesKHR( PhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLayeredApiVulkanPropertiesKHR( VkPhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLayeredApiVulkanPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceLayeredApiVulkanPropertiesKHR & operator=( PhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLayeredApiVulkanPropertiesKHR & operator=( VkPhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceLayeredApiVulkanPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredApiVulkanPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredApiVulkanPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredApiVulkanPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, properties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLayeredApiVulkanPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( properties == rhs.properties ); +# endif + } + + bool operator!=( PhysicalDeviceLayeredApiVulkanPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceLayeredApiVulkanPropertiesKHR; + void * pNext = {}; + PhysicalDeviceProperties2 properties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLayeredApiVulkanPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceLayeredApiVulkanPropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceLayeredDriverPropertiesMSFT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLayeredDriverPropertiesMSFT.html + struct PhysicalDeviceLayeredDriverPropertiesMSFT + { + using NativeType = VkPhysicalDeviceLayeredDriverPropertiesMSFT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLayeredDriverPropertiesMSFT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceLayeredDriverPropertiesMSFT( LayeredDriverUnderlyingApiMSFT underlyingAPI_ = LayeredDriverUnderlyingApiMSFT::eNone, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , underlyingAPI{ underlyingAPI_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceLayeredDriverPropertiesMSFT( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLayeredDriverPropertiesMSFT( VkPhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLayeredDriverPropertiesMSFT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceLayeredDriverPropertiesMSFT & operator=( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLayeredDriverPropertiesMSFT & operator=( VkPhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceLayeredDriverPropertiesMSFT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredDriverPropertiesMSFT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredDriverPropertiesMSFT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLayeredDriverPropertiesMSFT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, underlyingAPI ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLayeredDriverPropertiesMSFT const & ) const = default; +#else + bool operator==( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( underlyingAPI == rhs.underlyingAPI ); +# endif + } + + bool operator!=( PhysicalDeviceLayeredDriverPropertiesMSFT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceLayeredDriverPropertiesMSFT; + void * pNext = {}; + LayeredDriverUnderlyingApiMSFT underlyingAPI = LayeredDriverUnderlyingApiMSFT::eNone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLayeredDriverPropertiesMSFT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceLayeredDriverPropertiesMSFT; + }; + + // wrapper struct for struct VkPhysicalDeviceLegacyDitheringFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyDitheringFeaturesEXT.html + struct PhysicalDeviceLegacyDitheringFeaturesEXT + { + using NativeType = VkPhysicalDeviceLegacyDitheringFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLegacyDitheringFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyDitheringFeaturesEXT( Bool32 legacyDithering_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , legacyDithering{ legacyDithering_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyDitheringFeaturesEXT( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLegacyDitheringFeaturesEXT( VkPhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLegacyDitheringFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceLegacyDitheringFeaturesEXT & operator=( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLegacyDitheringFeaturesEXT & operator=( VkPhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyDitheringFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyDitheringFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyDitheringFeaturesEXT & setLegacyDithering( Bool32 legacyDithering_ ) & VULKAN_HPP_NOEXCEPT + { + legacyDithering = legacyDithering_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyDitheringFeaturesEXT && setLegacyDithering( Bool32 legacyDithering_ ) && VULKAN_HPP_NOEXCEPT + { + legacyDithering = legacyDithering_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceLegacyDitheringFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLegacyDitheringFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLegacyDitheringFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLegacyDitheringFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, legacyDithering ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLegacyDitheringFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( legacyDithering == rhs.legacyDithering ); +# endif + } + + bool operator!=( PhysicalDeviceLegacyDitheringFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceLegacyDitheringFeaturesEXT; + void * pNext = {}; + Bool32 legacyDithering = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLegacyDitheringFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceLegacyDitheringFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT.html + struct PhysicalDeviceLegacyVertexAttributesFeaturesEXT + { + using NativeType = VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLegacyVertexAttributesFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyVertexAttributesFeaturesEXT( Bool32 legacyVertexAttributes_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , legacyVertexAttributes{ legacyVertexAttributes_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceLegacyVertexAttributesFeaturesEXT( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLegacyVertexAttributesFeaturesEXT( VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLegacyVertexAttributesFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceLegacyVertexAttributesFeaturesEXT & operator=( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLegacyVertexAttributesFeaturesEXT & operator=( VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesFeaturesEXT & setLegacyVertexAttributes( Bool32 legacyVertexAttributes_ ) & VULKAN_HPP_NOEXCEPT + { + legacyVertexAttributes = legacyVertexAttributes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLegacyVertexAttributesFeaturesEXT && setLegacyVertexAttributes( Bool32 legacyVertexAttributes_ ) && + VULKAN_HPP_NOEXCEPT + { + legacyVertexAttributes = legacyVertexAttributes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, legacyVertexAttributes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( legacyVertexAttributes == rhs.legacyVertexAttributes ); +# endif + } + + bool operator!=( PhysicalDeviceLegacyVertexAttributesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceLegacyVertexAttributesFeaturesEXT; + void * pNext = {}; + Bool32 legacyVertexAttributes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLegacyVertexAttributesFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceLegacyVertexAttributesFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT.html + struct PhysicalDeviceLegacyVertexAttributesPropertiesEXT + { + using NativeType = VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLegacyVertexAttributesPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceLegacyVertexAttributesPropertiesEXT( Bool32 nativeUnalignedPerformance_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , nativeUnalignedPerformance{ nativeUnalignedPerformance_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceLegacyVertexAttributesPropertiesEXT( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLegacyVertexAttributesPropertiesEXT( VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLegacyVertexAttributesPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceLegacyVertexAttributesPropertiesEXT & + operator=( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLegacyVertexAttributesPropertiesEXT & operator=( VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, nativeUnalignedPerformance ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( nativeUnalignedPerformance == rhs.nativeUnalignedPerformance ); +# endif + } + + bool operator!=( PhysicalDeviceLegacyVertexAttributesPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceLegacyVertexAttributesPropertiesEXT; + void * pNext = {}; + Bool32 nativeUnalignedPerformance = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLegacyVertexAttributesPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceLegacyVertexAttributesPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceLineRasterizationFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationFeatures.html + struct PhysicalDeviceLineRasterizationFeatures + { + using NativeType = VkPhysicalDeviceLineRasterizationFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLineRasterizationFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeatures( Bool32 rectangularLines_ = {}, + Bool32 bresenhamLines_ = {}, + Bool32 smoothLines_ = {}, + Bool32 stippledRectangularLines_ = {}, + Bool32 stippledBresenhamLines_ = {}, + Bool32 stippledSmoothLines_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rectangularLines{ rectangularLines_ } + , bresenhamLines{ bresenhamLines_ } + , smoothLines{ smoothLines_ } + , stippledRectangularLines{ stippledRectangularLines_ } + , stippledBresenhamLines{ stippledBresenhamLines_ } + , stippledSmoothLines{ stippledSmoothLines_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeatures( PhysicalDeviceLineRasterizationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLineRasterizationFeatures( VkPhysicalDeviceLineRasterizationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLineRasterizationFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceLineRasterizationFeatures & operator=( PhysicalDeviceLineRasterizationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLineRasterizationFeatures & operator=( VkPhysicalDeviceLineRasterizationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setRectangularLines( Bool32 rectangularLines_ ) & VULKAN_HPP_NOEXCEPT + { + rectangularLines = rectangularLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures && setRectangularLines( Bool32 rectangularLines_ ) && VULKAN_HPP_NOEXCEPT + { + rectangularLines = rectangularLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setBresenhamLines( Bool32 bresenhamLines_ ) & VULKAN_HPP_NOEXCEPT + { + bresenhamLines = bresenhamLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures && setBresenhamLines( Bool32 bresenhamLines_ ) && VULKAN_HPP_NOEXCEPT + { + bresenhamLines = bresenhamLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setSmoothLines( Bool32 smoothLines_ ) & VULKAN_HPP_NOEXCEPT + { + smoothLines = smoothLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures && setSmoothLines( Bool32 smoothLines_ ) && VULKAN_HPP_NOEXCEPT + { + smoothLines = smoothLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setStippledRectangularLines( Bool32 stippledRectangularLines_ ) & VULKAN_HPP_NOEXCEPT + { + stippledRectangularLines = stippledRectangularLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures && setStippledRectangularLines( Bool32 stippledRectangularLines_ ) && VULKAN_HPP_NOEXCEPT + { + stippledRectangularLines = stippledRectangularLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setStippledBresenhamLines( Bool32 stippledBresenhamLines_ ) & VULKAN_HPP_NOEXCEPT + { + stippledBresenhamLines = stippledBresenhamLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures && setStippledBresenhamLines( Bool32 stippledBresenhamLines_ ) && VULKAN_HPP_NOEXCEPT + { + stippledBresenhamLines = stippledBresenhamLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures & setStippledSmoothLines( Bool32 stippledSmoothLines_ ) & VULKAN_HPP_NOEXCEPT + { + stippledSmoothLines = stippledSmoothLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeatures && setStippledSmoothLines( Bool32 stippledSmoothLines_ ) && VULKAN_HPP_NOEXCEPT + { + stippledSmoothLines = stippledSmoothLines_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceLineRasterizationFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLineRasterizationFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLineRasterizationFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLineRasterizationFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rectangularLines, bresenhamLines, smoothLines, stippledRectangularLines, stippledBresenhamLines, stippledSmoothLines ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLineRasterizationFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceLineRasterizationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rectangularLines == rhs.rectangularLines ) && ( bresenhamLines == rhs.bresenhamLines ) && + ( smoothLines == rhs.smoothLines ) && ( stippledRectangularLines == rhs.stippledRectangularLines ) && + ( stippledBresenhamLines == rhs.stippledBresenhamLines ) && ( stippledSmoothLines == rhs.stippledSmoothLines ); +# endif + } + + bool operator!=( PhysicalDeviceLineRasterizationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceLineRasterizationFeatures; + void * pNext = {}; + Bool32 rectangularLines = {}; + Bool32 bresenhamLines = {}; + Bool32 smoothLines = {}; + Bool32 stippledRectangularLines = {}; + Bool32 stippledBresenhamLines = {}; + Bool32 stippledSmoothLines = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLineRasterizationFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceLineRasterizationFeatures; + }; + + using PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeatures; + using PhysicalDeviceLineRasterizationFeaturesKHR = PhysicalDeviceLineRasterizationFeatures; + + // wrapper struct for struct VkPhysicalDeviceLineRasterizationProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLineRasterizationProperties.html + struct PhysicalDeviceLineRasterizationProperties + { + using NativeType = VkPhysicalDeviceLineRasterizationProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLineRasterizationProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationProperties( uint32_t lineSubPixelPrecisionBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , lineSubPixelPrecisionBits{ lineSubPixelPrecisionBits_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationProperties( PhysicalDeviceLineRasterizationProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLineRasterizationProperties( VkPhysicalDeviceLineRasterizationProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLineRasterizationProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceLineRasterizationProperties & operator=( PhysicalDeviceLineRasterizationProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLineRasterizationProperties & operator=( VkPhysicalDeviceLineRasterizationProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceLineRasterizationProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLineRasterizationProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLineRasterizationProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLineRasterizationProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, lineSubPixelPrecisionBits ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLineRasterizationProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceLineRasterizationProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lineSubPixelPrecisionBits == rhs.lineSubPixelPrecisionBits ); +# endif + } + + bool operator!=( PhysicalDeviceLineRasterizationProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceLineRasterizationProperties; + void * pNext = {}; + uint32_t lineSubPixelPrecisionBits = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLineRasterizationProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceLineRasterizationProperties; + }; + + using PhysicalDeviceLineRasterizationPropertiesEXT = PhysicalDeviceLineRasterizationProperties; + using PhysicalDeviceLineRasterizationPropertiesKHR = PhysicalDeviceLineRasterizationProperties; + + // wrapper struct for struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceLinearColorAttachmentFeaturesNV.html + struct PhysicalDeviceLinearColorAttachmentFeaturesNV + { + using NativeType = VkPhysicalDeviceLinearColorAttachmentFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceLinearColorAttachmentFeaturesNV( Bool32 linearColorAttachment_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , linearColorAttachment{ linearColorAttachment_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceLinearColorAttachmentFeaturesNV( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceLinearColorAttachmentFeaturesNV( VkPhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceLinearColorAttachmentFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceLinearColorAttachmentFeaturesNV & operator=( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceLinearColorAttachmentFeaturesNV & operator=( VkPhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV & setLinearColorAttachment( Bool32 linearColorAttachment_ ) & VULKAN_HPP_NOEXCEPT + { + linearColorAttachment = linearColorAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLinearColorAttachmentFeaturesNV && setLinearColorAttachment( Bool32 linearColorAttachment_ ) && VULKAN_HPP_NOEXCEPT + { + linearColorAttachment = linearColorAttachment_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceLinearColorAttachmentFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, linearColorAttachment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceLinearColorAttachmentFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( linearColorAttachment == rhs.linearColorAttachment ); +# endif + } + + bool operator!=( PhysicalDeviceLinearColorAttachmentFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV; + void * pNext = {}; + Bool32 linearColorAttachment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceLinearColorAttachmentFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceLinearColorAttachmentFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceMaintenance10FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance10FeaturesKHR.html + struct PhysicalDeviceMaintenance10FeaturesKHR + { + using NativeType = VkPhysicalDeviceMaintenance10FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance10FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance10FeaturesKHR( Bool32 maintenance10_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maintenance10{ maintenance10_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance10FeaturesKHR( PhysicalDeviceMaintenance10FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance10FeaturesKHR( VkPhysicalDeviceMaintenance10FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance10FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance10FeaturesKHR & operator=( PhysicalDeviceMaintenance10FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance10FeaturesKHR & operator=( VkPhysicalDeviceMaintenance10FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance10FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance10FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance10FeaturesKHR & setMaintenance10( Bool32 maintenance10_ ) & VULKAN_HPP_NOEXCEPT + { + maintenance10 = maintenance10_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance10FeaturesKHR && setMaintenance10( Bool32 maintenance10_ ) && VULKAN_HPP_NOEXCEPT + { + maintenance10 = maintenance10_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMaintenance10FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance10FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance10FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance10FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maintenance10 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance10FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance10FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance10 == rhs.maintenance10 ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance10FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance10FeaturesKHR; + void * pNext = {}; + Bool32 maintenance10 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance10FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance10FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceMaintenance10PropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance10PropertiesKHR.html + struct PhysicalDeviceMaintenance10PropertiesKHR + { + using NativeType = VkPhysicalDeviceMaintenance10PropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance10PropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance10PropertiesKHR( Bool32 rgba4OpaqueBlackSwizzled_ = {}, + Bool32 resolveSrgbFormatAppliesTransferFunction_ = {}, + Bool32 resolveSrgbFormatSupportsTransferFunctionControl_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rgba4OpaqueBlackSwizzled{ rgba4OpaqueBlackSwizzled_ } + , resolveSrgbFormatAppliesTransferFunction{ resolveSrgbFormatAppliesTransferFunction_ } + , resolveSrgbFormatSupportsTransferFunctionControl{ resolveSrgbFormatSupportsTransferFunctionControl_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance10PropertiesKHR( PhysicalDeviceMaintenance10PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance10PropertiesKHR( VkPhysicalDeviceMaintenance10PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance10PropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance10PropertiesKHR & operator=( PhysicalDeviceMaintenance10PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance10PropertiesKHR & operator=( VkPhysicalDeviceMaintenance10PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMaintenance10PropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance10PropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance10PropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance10PropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rgba4OpaqueBlackSwizzled, resolveSrgbFormatAppliesTransferFunction, resolveSrgbFormatSupportsTransferFunctionControl ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance10PropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance10PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rgba4OpaqueBlackSwizzled == rhs.rgba4OpaqueBlackSwizzled ) && + ( resolveSrgbFormatAppliesTransferFunction == rhs.resolveSrgbFormatAppliesTransferFunction ) && + ( resolveSrgbFormatSupportsTransferFunctionControl == rhs.resolveSrgbFormatSupportsTransferFunctionControl ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance10PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance10PropertiesKHR; + void * pNext = {}; + Bool32 rgba4OpaqueBlackSwizzled = {}; + Bool32 resolveSrgbFormatAppliesTransferFunction = {}; + Bool32 resolveSrgbFormatSupportsTransferFunctionControl = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance10PropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance10PropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceMaintenance3Properties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance3Properties.html + struct PhysicalDeviceMaintenance3Properties + { + using NativeType = VkPhysicalDeviceMaintenance3Properties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance3Properties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( uint32_t maxPerSetDescriptors_ = {}, + DeviceSize maxMemoryAllocationSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxPerSetDescriptors{ maxPerSetDescriptors_ } + , maxMemoryAllocationSize{ maxMemoryAllocationSize_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance3Properties( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance3Properties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance3Properties & operator=( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance3Properties & operator=( VkPhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMaintenance3Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance3Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance3Properties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance3Properties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxPerSetDescriptors, maxMemoryAllocationSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance3Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors ) && + ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance3Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance3Properties; + void * pNext = {}; + uint32_t maxPerSetDescriptors = {}; + DeviceSize maxMemoryAllocationSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance3Properties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance3Properties; + }; + + using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties; + + // wrapper struct for struct VkPhysicalDeviceMaintenance4Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Features.html + struct PhysicalDeviceMaintenance4Features + { + using NativeType = VkPhysicalDeviceMaintenance4Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance4Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Features( Bool32 maintenance4_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maintenance4{ maintenance4_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Features( PhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance4Features( VkPhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance4Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance4Features & operator=( PhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance4Features & operator=( VkPhysicalDeviceMaintenance4Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features & setMaintenance4( Bool32 maintenance4_ ) & VULKAN_HPP_NOEXCEPT + { + maintenance4 = maintenance4_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance4Features && setMaintenance4( Bool32 maintenance4_ ) && VULKAN_HPP_NOEXCEPT + { + maintenance4 = maintenance4_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMaintenance4Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance4Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance4Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance4Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maintenance4 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance4Features const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance4Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance4 == rhs.maintenance4 ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance4Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance4Features; + void * pNext = {}; + Bool32 maintenance4 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance4Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance4Features; + }; + + using PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features; + + // wrapper struct for struct VkPhysicalDeviceMaintenance4Properties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance4Properties.html + struct PhysicalDeviceMaintenance4Properties + { + using NativeType = VkPhysicalDeviceMaintenance4Properties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance4Properties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Properties( DeviceSize maxBufferSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxBufferSize{ maxBufferSize_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance4Properties( PhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance4Properties( VkPhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance4Properties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance4Properties & operator=( PhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance4Properties & operator=( VkPhysicalDeviceMaintenance4Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMaintenance4Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance4Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance4Properties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance4Properties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxBufferSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance4Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance4Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxBufferSize == rhs.maxBufferSize ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance4Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance4Properties; + void * pNext = {}; + DeviceSize maxBufferSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance4Properties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance4Properties; + }; + + using PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties; + + // wrapper struct for struct VkPhysicalDeviceMaintenance5Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Features.html + struct PhysicalDeviceMaintenance5Features + { + using NativeType = VkPhysicalDeviceMaintenance5Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance5Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5Features( Bool32 maintenance5_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maintenance5{ maintenance5_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5Features( PhysicalDeviceMaintenance5Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance5Features( VkPhysicalDeviceMaintenance5Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance5Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance5Features & operator=( PhysicalDeviceMaintenance5Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance5Features & operator=( VkPhysicalDeviceMaintenance5Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance5Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance5Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance5Features & setMaintenance5( Bool32 maintenance5_ ) & VULKAN_HPP_NOEXCEPT + { + maintenance5 = maintenance5_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance5Features && setMaintenance5( Bool32 maintenance5_ ) && VULKAN_HPP_NOEXCEPT + { + maintenance5 = maintenance5_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMaintenance5Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance5Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance5Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance5Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maintenance5 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance5Features const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance5Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance5 == rhs.maintenance5 ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance5Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance5Features; + void * pNext = {}; + Bool32 maintenance5 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance5Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance5Features; + }; + + using PhysicalDeviceMaintenance5FeaturesKHR = PhysicalDeviceMaintenance5Features; + + // wrapper struct for struct VkPhysicalDeviceMaintenance5Properties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance5Properties.html + struct PhysicalDeviceMaintenance5Properties + { + using NativeType = VkPhysicalDeviceMaintenance5Properties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance5Properties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5Properties( Bool32 earlyFragmentMultisampleCoverageAfterSampleCounting_ = {}, + Bool32 earlyFragmentSampleMaskTestBeforeSampleCounting_ = {}, + Bool32 depthStencilSwizzleOneSupport_ = {}, + Bool32 polygonModePointSize_ = {}, + Bool32 nonStrictSinglePixelWideLinesUseParallelogram_ = {}, + Bool32 nonStrictWideLinesUseParallelogram_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , earlyFragmentMultisampleCoverageAfterSampleCounting{ earlyFragmentMultisampleCoverageAfterSampleCounting_ } + , earlyFragmentSampleMaskTestBeforeSampleCounting{ earlyFragmentSampleMaskTestBeforeSampleCounting_ } + , depthStencilSwizzleOneSupport{ depthStencilSwizzleOneSupport_ } + , polygonModePointSize{ polygonModePointSize_ } + , nonStrictSinglePixelWideLinesUseParallelogram{ nonStrictSinglePixelWideLinesUseParallelogram_ } + , nonStrictWideLinesUseParallelogram{ nonStrictWideLinesUseParallelogram_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance5Properties( PhysicalDeviceMaintenance5Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance5Properties( VkPhysicalDeviceMaintenance5Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance5Properties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance5Properties & operator=( PhysicalDeviceMaintenance5Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance5Properties & operator=( VkPhysicalDeviceMaintenance5Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMaintenance5Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance5Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance5Properties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance5Properties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + earlyFragmentMultisampleCoverageAfterSampleCounting, + earlyFragmentSampleMaskTestBeforeSampleCounting, + depthStencilSwizzleOneSupport, + polygonModePointSize, + nonStrictSinglePixelWideLinesUseParallelogram, + nonStrictWideLinesUseParallelogram ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance5Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance5Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( earlyFragmentMultisampleCoverageAfterSampleCounting == rhs.earlyFragmentMultisampleCoverageAfterSampleCounting ) && + ( earlyFragmentSampleMaskTestBeforeSampleCounting == rhs.earlyFragmentSampleMaskTestBeforeSampleCounting ) && + ( depthStencilSwizzleOneSupport == rhs.depthStencilSwizzleOneSupport ) && ( polygonModePointSize == rhs.polygonModePointSize ) && + ( nonStrictSinglePixelWideLinesUseParallelogram == rhs.nonStrictSinglePixelWideLinesUseParallelogram ) && + ( nonStrictWideLinesUseParallelogram == rhs.nonStrictWideLinesUseParallelogram ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance5Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance5Properties; + void * pNext = {}; + Bool32 earlyFragmentMultisampleCoverageAfterSampleCounting = {}; + Bool32 earlyFragmentSampleMaskTestBeforeSampleCounting = {}; + Bool32 depthStencilSwizzleOneSupport = {}; + Bool32 polygonModePointSize = {}; + Bool32 nonStrictSinglePixelWideLinesUseParallelogram = {}; + Bool32 nonStrictWideLinesUseParallelogram = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance5Properties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance5Properties; + }; + + using PhysicalDeviceMaintenance5PropertiesKHR = PhysicalDeviceMaintenance5Properties; + + // wrapper struct for struct VkPhysicalDeviceMaintenance6Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Features.html + struct PhysicalDeviceMaintenance6Features + { + using NativeType = VkPhysicalDeviceMaintenance6Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance6Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6Features( Bool32 maintenance6_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maintenance6{ maintenance6_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6Features( PhysicalDeviceMaintenance6Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance6Features( VkPhysicalDeviceMaintenance6Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance6Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance6Features & operator=( PhysicalDeviceMaintenance6Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance6Features & operator=( VkPhysicalDeviceMaintenance6Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance6Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance6Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance6Features & setMaintenance6( Bool32 maintenance6_ ) & VULKAN_HPP_NOEXCEPT + { + maintenance6 = maintenance6_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance6Features && setMaintenance6( Bool32 maintenance6_ ) && VULKAN_HPP_NOEXCEPT + { + maintenance6 = maintenance6_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMaintenance6Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance6Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance6Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance6Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maintenance6 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance6Features const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance6Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance6 == rhs.maintenance6 ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance6Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance6Features; + void * pNext = {}; + Bool32 maintenance6 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance6Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance6Features; + }; + + using PhysicalDeviceMaintenance6FeaturesKHR = PhysicalDeviceMaintenance6Features; + + // wrapper struct for struct VkPhysicalDeviceMaintenance6Properties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance6Properties.html + struct PhysicalDeviceMaintenance6Properties + { + using NativeType = VkPhysicalDeviceMaintenance6Properties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance6Properties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6Properties( Bool32 blockTexelViewCompatibleMultipleLayers_ = {}, + uint32_t maxCombinedImageSamplerDescriptorCount_ = {}, + Bool32 fragmentShadingRateClampCombinerInputs_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , blockTexelViewCompatibleMultipleLayers{ blockTexelViewCompatibleMultipleLayers_ } + , maxCombinedImageSamplerDescriptorCount{ maxCombinedImageSamplerDescriptorCount_ } + , fragmentShadingRateClampCombinerInputs{ fragmentShadingRateClampCombinerInputs_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance6Properties( PhysicalDeviceMaintenance6Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance6Properties( VkPhysicalDeviceMaintenance6Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance6Properties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance6Properties & operator=( PhysicalDeviceMaintenance6Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance6Properties & operator=( VkPhysicalDeviceMaintenance6Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMaintenance6Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance6Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance6Properties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance6Properties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, blockTexelViewCompatibleMultipleLayers, maxCombinedImageSamplerDescriptorCount, fragmentShadingRateClampCombinerInputs ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance6Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance6Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( blockTexelViewCompatibleMultipleLayers == rhs.blockTexelViewCompatibleMultipleLayers ) && + ( maxCombinedImageSamplerDescriptorCount == rhs.maxCombinedImageSamplerDescriptorCount ) && + ( fragmentShadingRateClampCombinerInputs == rhs.fragmentShadingRateClampCombinerInputs ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance6Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance6Properties; + void * pNext = {}; + Bool32 blockTexelViewCompatibleMultipleLayers = {}; + uint32_t maxCombinedImageSamplerDescriptorCount = {}; + Bool32 fragmentShadingRateClampCombinerInputs = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance6Properties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance6Properties; + }; + + using PhysicalDeviceMaintenance6PropertiesKHR = PhysicalDeviceMaintenance6Properties; + + // wrapper struct for struct VkPhysicalDeviceMaintenance7FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7FeaturesKHR.html + struct PhysicalDeviceMaintenance7FeaturesKHR + { + using NativeType = VkPhysicalDeviceMaintenance7FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance7FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance7FeaturesKHR( Bool32 maintenance7_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maintenance7{ maintenance7_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance7FeaturesKHR( PhysicalDeviceMaintenance7FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance7FeaturesKHR( VkPhysicalDeviceMaintenance7FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance7FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance7FeaturesKHR & operator=( PhysicalDeviceMaintenance7FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance7FeaturesKHR & operator=( VkPhysicalDeviceMaintenance7FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance7FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance7FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance7FeaturesKHR & setMaintenance7( Bool32 maintenance7_ ) & VULKAN_HPP_NOEXCEPT + { + maintenance7 = maintenance7_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance7FeaturesKHR && setMaintenance7( Bool32 maintenance7_ ) && VULKAN_HPP_NOEXCEPT + { + maintenance7 = maintenance7_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMaintenance7FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance7FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance7FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance7FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maintenance7 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance7FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance7FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance7 == rhs.maintenance7 ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance7FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance7FeaturesKHR; + void * pNext = {}; + Bool32 maintenance7 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance7FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance7FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceMaintenance7PropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance7PropertiesKHR.html + struct PhysicalDeviceMaintenance7PropertiesKHR + { + using NativeType = VkPhysicalDeviceMaintenance7PropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance7PropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance7PropertiesKHR( Bool32 robustFragmentShadingRateAttachmentAccess_ = {}, + Bool32 separateDepthStencilAttachmentAccess_ = {}, + uint32_t maxDescriptorSetTotalUniformBuffersDynamic_ = {}, + uint32_t maxDescriptorSetTotalStorageBuffersDynamic_ = {}, + uint32_t maxDescriptorSetTotalBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindTotalBuffersDynamic_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , robustFragmentShadingRateAttachmentAccess{ robustFragmentShadingRateAttachmentAccess_ } + , separateDepthStencilAttachmentAccess{ separateDepthStencilAttachmentAccess_ } + , maxDescriptorSetTotalUniformBuffersDynamic{ maxDescriptorSetTotalUniformBuffersDynamic_ } + , maxDescriptorSetTotalStorageBuffersDynamic{ maxDescriptorSetTotalStorageBuffersDynamic_ } + , maxDescriptorSetTotalBuffersDynamic{ maxDescriptorSetTotalBuffersDynamic_ } + , maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic{ maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic_ } + , maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic{ maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic_ } + , maxDescriptorSetUpdateAfterBindTotalBuffersDynamic{ maxDescriptorSetUpdateAfterBindTotalBuffersDynamic_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance7PropertiesKHR( PhysicalDeviceMaintenance7PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance7PropertiesKHR( VkPhysicalDeviceMaintenance7PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance7PropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance7PropertiesKHR & operator=( PhysicalDeviceMaintenance7PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance7PropertiesKHR & operator=( VkPhysicalDeviceMaintenance7PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMaintenance7PropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance7PropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance7PropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance7PropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + robustFragmentShadingRateAttachmentAccess, + separateDepthStencilAttachmentAccess, + maxDescriptorSetTotalUniformBuffersDynamic, + maxDescriptorSetTotalStorageBuffersDynamic, + maxDescriptorSetTotalBuffersDynamic, + maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic, + maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic, + maxDescriptorSetUpdateAfterBindTotalBuffersDynamic ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance7PropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance7PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( robustFragmentShadingRateAttachmentAccess == rhs.robustFragmentShadingRateAttachmentAccess ) && + ( separateDepthStencilAttachmentAccess == rhs.separateDepthStencilAttachmentAccess ) && + ( maxDescriptorSetTotalUniformBuffersDynamic == rhs.maxDescriptorSetTotalUniformBuffersDynamic ) && + ( maxDescriptorSetTotalStorageBuffersDynamic == rhs.maxDescriptorSetTotalStorageBuffersDynamic ) && + ( maxDescriptorSetTotalBuffersDynamic == rhs.maxDescriptorSetTotalBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindTotalBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindTotalBuffersDynamic ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance7PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance7PropertiesKHR; + void * pNext = {}; + Bool32 robustFragmentShadingRateAttachmentAccess = {}; + Bool32 separateDepthStencilAttachmentAccess = {}; + uint32_t maxDescriptorSetTotalUniformBuffersDynamic = {}; + uint32_t maxDescriptorSetTotalStorageBuffersDynamic = {}; + uint32_t maxDescriptorSetTotalBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindTotalBuffersDynamic = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance7PropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance7PropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceMaintenance8FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance8FeaturesKHR.html + struct PhysicalDeviceMaintenance8FeaturesKHR + { + using NativeType = VkPhysicalDeviceMaintenance8FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance8FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance8FeaturesKHR( Bool32 maintenance8_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maintenance8{ maintenance8_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance8FeaturesKHR( PhysicalDeviceMaintenance8FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance8FeaturesKHR( VkPhysicalDeviceMaintenance8FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance8FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance8FeaturesKHR & operator=( PhysicalDeviceMaintenance8FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance8FeaturesKHR & operator=( VkPhysicalDeviceMaintenance8FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance8FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance8FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance8FeaturesKHR & setMaintenance8( Bool32 maintenance8_ ) & VULKAN_HPP_NOEXCEPT + { + maintenance8 = maintenance8_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance8FeaturesKHR && setMaintenance8( Bool32 maintenance8_ ) && VULKAN_HPP_NOEXCEPT + { + maintenance8 = maintenance8_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMaintenance8FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance8FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance8FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance8FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maintenance8 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance8FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance8FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance8 == rhs.maintenance8 ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance8FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance8FeaturesKHR; + void * pNext = {}; + Bool32 maintenance8 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance8FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance8FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceMaintenance9FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9FeaturesKHR.html + struct PhysicalDeviceMaintenance9FeaturesKHR + { + using NativeType = VkPhysicalDeviceMaintenance9FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance9FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance9FeaturesKHR( Bool32 maintenance9_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maintenance9{ maintenance9_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance9FeaturesKHR( PhysicalDeviceMaintenance9FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance9FeaturesKHR( VkPhysicalDeviceMaintenance9FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance9FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance9FeaturesKHR & operator=( PhysicalDeviceMaintenance9FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance9FeaturesKHR & operator=( VkPhysicalDeviceMaintenance9FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance9FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance9FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance9FeaturesKHR & setMaintenance9( Bool32 maintenance9_ ) & VULKAN_HPP_NOEXCEPT + { + maintenance9 = maintenance9_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance9FeaturesKHR && setMaintenance9( Bool32 maintenance9_ ) && VULKAN_HPP_NOEXCEPT + { + maintenance9 = maintenance9_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMaintenance9FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance9FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance9FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance9FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maintenance9 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance9FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance9FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maintenance9 == rhs.maintenance9 ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance9FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance9FeaturesKHR; + void * pNext = {}; + Bool32 maintenance9 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance9FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance9FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceMaintenance9PropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMaintenance9PropertiesKHR.html + struct PhysicalDeviceMaintenance9PropertiesKHR + { + using NativeType = VkPhysicalDeviceMaintenance9PropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance9PropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMaintenance9PropertiesKHR( Bool32 image2DViewOf3DSparse_ = {}, + DefaultVertexAttributeValueKHR defaultVertexAttributeValue_ = DefaultVertexAttributeValueKHR::eZeroZeroZeroZero, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , image2DViewOf3DSparse{ image2DViewOf3DSparse_ } + , defaultVertexAttributeValue{ defaultVertexAttributeValue_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance9PropertiesKHR( PhysicalDeviceMaintenance9PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMaintenance9PropertiesKHR( VkPhysicalDeviceMaintenance9PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMaintenance9PropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMaintenance9PropertiesKHR & operator=( PhysicalDeviceMaintenance9PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMaintenance9PropertiesKHR & operator=( VkPhysicalDeviceMaintenance9PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMaintenance9PropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance9PropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance9PropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMaintenance9PropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, image2DViewOf3DSparse, defaultVertexAttributeValue ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMaintenance9PropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceMaintenance9PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( image2DViewOf3DSparse == rhs.image2DViewOf3DSparse ) && + ( defaultVertexAttributeValue == rhs.defaultVertexAttributeValue ); +# endif + } + + bool operator!=( PhysicalDeviceMaintenance9PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMaintenance9PropertiesKHR; + void * pNext = {}; + Bool32 image2DViewOf3DSparse = {}; + DefaultVertexAttributeValueKHR defaultVertexAttributeValue = DefaultVertexAttributeValueKHR::eZeroZeroZeroZero; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance9PropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMaintenance9PropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceMapMemoryPlacedFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedFeaturesEXT.html + struct PhysicalDeviceMapMemoryPlacedFeaturesEXT + { + using NativeType = VkPhysicalDeviceMapMemoryPlacedFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMapMemoryPlacedFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedFeaturesEXT( Bool32 memoryMapPlaced_ = {}, + Bool32 memoryMapRangePlaced_ = {}, + Bool32 memoryUnmapReserve_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryMapPlaced{ memoryMapPlaced_ } + , memoryMapRangePlaced{ memoryMapRangePlaced_ } + , memoryUnmapReserve{ memoryUnmapReserve_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedFeaturesEXT( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMapMemoryPlacedFeaturesEXT( VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMapMemoryPlacedFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMapMemoryPlacedFeaturesEXT & operator=( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMapMemoryPlacedFeaturesEXT & operator=( VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT & setMemoryMapPlaced( Bool32 memoryMapPlaced_ ) & VULKAN_HPP_NOEXCEPT + { + memoryMapPlaced = memoryMapPlaced_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT && setMemoryMapPlaced( Bool32 memoryMapPlaced_ ) && VULKAN_HPP_NOEXCEPT + { + memoryMapPlaced = memoryMapPlaced_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT & setMemoryMapRangePlaced( Bool32 memoryMapRangePlaced_ ) & VULKAN_HPP_NOEXCEPT + { + memoryMapRangePlaced = memoryMapRangePlaced_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT && setMemoryMapRangePlaced( Bool32 memoryMapRangePlaced_ ) && VULKAN_HPP_NOEXCEPT + { + memoryMapRangePlaced = memoryMapRangePlaced_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT & setMemoryUnmapReserve( Bool32 memoryUnmapReserve_ ) & VULKAN_HPP_NOEXCEPT + { + memoryUnmapReserve = memoryUnmapReserve_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMapMemoryPlacedFeaturesEXT && setMemoryUnmapReserve( Bool32 memoryUnmapReserve_ ) && VULKAN_HPP_NOEXCEPT + { + memoryUnmapReserve = memoryUnmapReserve_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMapMemoryPlacedFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryMapPlaced, memoryMapRangePlaced, memoryUnmapReserve ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryMapPlaced == rhs.memoryMapPlaced ) && + ( memoryMapRangePlaced == rhs.memoryMapRangePlaced ) && ( memoryUnmapReserve == rhs.memoryUnmapReserve ); +# endif + } + + bool operator!=( PhysicalDeviceMapMemoryPlacedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMapMemoryPlacedFeaturesEXT; + void * pNext = {}; + Bool32 memoryMapPlaced = {}; + Bool32 memoryMapRangePlaced = {}; + Bool32 memoryUnmapReserve = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMapMemoryPlacedFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMapMemoryPlacedFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceMapMemoryPlacedPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMapMemoryPlacedPropertiesEXT.html + struct PhysicalDeviceMapMemoryPlacedPropertiesEXT + { + using NativeType = VkPhysicalDeviceMapMemoryPlacedPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMapMemoryPlacedPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedPropertiesEXT( DeviceSize minPlacedMemoryMapAlignment_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minPlacedMemoryMapAlignment{ minPlacedMemoryMapAlignment_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMapMemoryPlacedPropertiesEXT( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMapMemoryPlacedPropertiesEXT( VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMapMemoryPlacedPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMapMemoryPlacedPropertiesEXT & operator=( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMapMemoryPlacedPropertiesEXT & operator=( VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minPlacedMemoryMapAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minPlacedMemoryMapAlignment == rhs.minPlacedMemoryMapAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceMapMemoryPlacedPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMapMemoryPlacedPropertiesEXT; + void * pNext = {}; + DeviceSize minPlacedMemoryMapAlignment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMapMemoryPlacedPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMapMemoryPlacedPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceMemoryBudgetPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryBudgetPropertiesEXT.html + struct PhysicalDeviceMemoryBudgetPropertiesEXT + { + using NativeType = VkPhysicalDeviceMemoryBudgetPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT( std::array const & heapBudget_ = {}, + std::array const & heapUsage_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , heapBudget{ heapBudget_ } + , heapUsage{ heapUsage_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryBudgetPropertiesEXT( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMemoryBudgetPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( VkPhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryBudgetPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryBudgetPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryBudgetPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, heapBudget, heapUsage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMemoryBudgetPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( heapBudget == rhs.heapBudget ) && ( heapUsage == rhs.heapUsage ); +# endif + } + + bool operator!=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT; + void * pNext = {}; + ArrayWrapper1D heapBudget = {}; + ArrayWrapper1D heapUsage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryBudgetPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryBudgetPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceMemoryDecompressionFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionFeaturesEXT.html + struct PhysicalDeviceMemoryDecompressionFeaturesEXT + { + using NativeType = VkPhysicalDeviceMemoryDecompressionFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryDecompressionFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryDecompressionFeaturesEXT( Bool32 memoryDecompression_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryDecompression{ memoryDecompression_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryDecompressionFeaturesEXT( PhysicalDeviceMemoryDecompressionFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryDecompressionFeaturesEXT( VkPhysicalDeviceMemoryDecompressionFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMemoryDecompressionFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMemoryDecompressionFeaturesEXT & operator=( PhysicalDeviceMemoryDecompressionFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMemoryDecompressionFeaturesEXT & operator=( VkPhysicalDeviceMemoryDecompressionFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryDecompressionFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryDecompressionFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryDecompressionFeaturesEXT & setMemoryDecompression( Bool32 memoryDecompression_ ) & VULKAN_HPP_NOEXCEPT + { + memoryDecompression = memoryDecompression_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryDecompressionFeaturesEXT && setMemoryDecompression( Bool32 memoryDecompression_ ) && VULKAN_HPP_NOEXCEPT + { + memoryDecompression = memoryDecompression_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMemoryDecompressionFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryDecompressionFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryDecompressionFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryDecompressionFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryDecompression ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMemoryDecompressionFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMemoryDecompressionFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryDecompression == rhs.memoryDecompression ); +# endif + } + + bool operator!=( PhysicalDeviceMemoryDecompressionFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMemoryDecompressionFeaturesEXT; + void * pNext = {}; + Bool32 memoryDecompression = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryDecompressionFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryDecompressionFeaturesEXT; + }; + + using PhysicalDeviceMemoryDecompressionFeaturesNV = PhysicalDeviceMemoryDecompressionFeaturesEXT; + + // wrapper struct for struct VkPhysicalDeviceMemoryDecompressionPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryDecompressionPropertiesEXT.html + struct PhysicalDeviceMemoryDecompressionPropertiesEXT + { + using NativeType = VkPhysicalDeviceMemoryDecompressionPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryDecompressionPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryDecompressionPropertiesEXT( MemoryDecompressionMethodFlagsEXT decompressionMethods_ = {}, + uint64_t maxDecompressionIndirectCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , decompressionMethods{ decompressionMethods_ } + , maxDecompressionIndirectCount{ maxDecompressionIndirectCount_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMemoryDecompressionPropertiesEXT( PhysicalDeviceMemoryDecompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryDecompressionPropertiesEXT( VkPhysicalDeviceMemoryDecompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMemoryDecompressionPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMemoryDecompressionPropertiesEXT & operator=( PhysicalDeviceMemoryDecompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMemoryDecompressionPropertiesEXT & operator=( VkPhysicalDeviceMemoryDecompressionPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMemoryDecompressionPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryDecompressionPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryDecompressionPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryDecompressionPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, decompressionMethods, maxDecompressionIndirectCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMemoryDecompressionPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMemoryDecompressionPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( decompressionMethods == rhs.decompressionMethods ) && + ( maxDecompressionIndirectCount == rhs.maxDecompressionIndirectCount ); +# endif + } + + bool operator!=( PhysicalDeviceMemoryDecompressionPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMemoryDecompressionPropertiesEXT; + void * pNext = {}; + MemoryDecompressionMethodFlagsEXT decompressionMethods = {}; + uint64_t maxDecompressionIndirectCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryDecompressionPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryDecompressionPropertiesEXT; + }; + + using PhysicalDeviceMemoryDecompressionPropertiesNV = PhysicalDeviceMemoryDecompressionPropertiesEXT; + + // wrapper struct for struct VkPhysicalDeviceMemoryPriorityFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryPriorityFeaturesEXT.html + struct PhysicalDeviceMemoryPriorityFeaturesEXT + { + using NativeType = VkPhysicalDeviceMemoryPriorityFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT( Bool32 memoryPriority_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryPriority{ memoryPriority_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryPriorityFeaturesEXT( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMemoryPriorityFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & setMemoryPriority( Bool32 memoryPriority_ ) & VULKAN_HPP_NOEXCEPT + { + memoryPriority = memoryPriority_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT && setMemoryPriority( Bool32 memoryPriority_ ) && VULKAN_HPP_NOEXCEPT + { + memoryPriority = memoryPriority_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMemoryPriorityFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryPriorityFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryPriorityFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryPriorityFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryPriority ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMemoryPriorityFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryPriority == rhs.memoryPriority ); +# endif + } + + bool operator!=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT; + void * pNext = {}; + Bool32 memoryPriority = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryPriorityFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryPriorityFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceMemoryProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties.html + struct PhysicalDeviceMemoryProperties + { + using NativeType = VkPhysicalDeviceMemoryProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties( uint32_t memoryTypeCount_ = {}, + std::array const & memoryTypes_ = {}, + uint32_t memoryHeapCount_ = {}, + std::array const & memoryHeaps_ = {} ) VULKAN_HPP_NOEXCEPT + : memoryTypeCount{ memoryTypeCount_ } + , memoryTypes{ memoryTypes_ } + , memoryHeapCount{ memoryHeapCount_ } + , memoryHeaps{ memoryHeaps_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryProperties( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMemoryProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMemoryProperties & operator=( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMemoryProperties & operator=( VkPhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMemoryProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &, + ArrayWrapper1D const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( memoryTypeCount, memoryTypes, memoryHeapCount, memoryHeaps ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = memoryTypeCount <=> rhs.memoryTypeCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < memoryTypeCount; ++i ) + { + if ( auto cmp = memoryTypes[i] <=> rhs.memoryTypes[i]; cmp != 0 ) + return cmp; + } + if ( auto cmp = memoryHeapCount <=> rhs.memoryHeapCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < memoryHeapCount; ++i ) + { + if ( auto cmp = memoryHeaps[i] <=> rhs.memoryHeaps[i]; cmp != 0 ) + return cmp; + } + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( memoryTypeCount == rhs.memoryTypeCount ) && ( memcmp( memoryTypes, rhs.memoryTypes, memoryTypeCount * sizeof( MemoryType ) ) == 0 ) && + ( memoryHeapCount == rhs.memoryHeapCount ) && ( memcmp( memoryHeaps, rhs.memoryHeaps, memoryHeapCount * sizeof( MemoryHeap ) ) == 0 ); + } + + bool operator!=( PhysicalDeviceMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t memoryTypeCount = {}; + ArrayWrapper1D memoryTypes = {}; + uint32_t memoryHeapCount = {}; + ArrayWrapper1D memoryHeaps = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryProperties; + }; +#endif + + // wrapper struct for struct VkPhysicalDeviceMemoryProperties2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMemoryProperties2.html + struct PhysicalDeviceMemoryProperties2 + { + using NativeType = VkPhysicalDeviceMemoryProperties2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryProperties2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2( PhysicalDeviceMemoryProperties memoryProperties_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryProperties{ memoryProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMemoryProperties2( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMemoryProperties2( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMemoryProperties2 & operator=( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMemoryProperties2 & operator=( VkPhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMemoryProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryProperties2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMemoryProperties2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMemoryProperties2 const & ) const = default; +#else + bool operator==( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryProperties == rhs.memoryProperties ); +# endif + } + + bool operator!=( PhysicalDeviceMemoryProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMemoryProperties2; + void * pNext = {}; + PhysicalDeviceMemoryProperties memoryProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryProperties2; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMemoryProperties2; + }; + + using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2; + + // wrapper struct for struct VkPhysicalDeviceMeshShaderFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesEXT.html + struct PhysicalDeviceMeshShaderFeaturesEXT + { + using NativeType = VkPhysicalDeviceMeshShaderFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMeshShaderFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesEXT( Bool32 taskShader_ = {}, + Bool32 meshShader_ = {}, + Bool32 multiviewMeshShader_ = {}, + Bool32 primitiveFragmentShadingRateMeshShader_ = {}, + Bool32 meshShaderQueries_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , taskShader{ taskShader_ } + , meshShader{ meshShader_ } + , multiviewMeshShader{ multiviewMeshShader_ } + , primitiveFragmentShadingRateMeshShader{ primitiveFragmentShadingRateMeshShader_ } + , meshShaderQueries{ meshShaderQueries_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesEXT( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMeshShaderFeaturesEXT( VkPhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMeshShaderFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMeshShaderFeaturesEXT & operator=( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMeshShaderFeaturesEXT & operator=( VkPhysicalDeviceMeshShaderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setTaskShader( Bool32 taskShader_ ) & VULKAN_HPP_NOEXCEPT + { + taskShader = taskShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT && setTaskShader( Bool32 taskShader_ ) && VULKAN_HPP_NOEXCEPT + { + taskShader = taskShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setMeshShader( Bool32 meshShader_ ) & VULKAN_HPP_NOEXCEPT + { + meshShader = meshShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT && setMeshShader( Bool32 meshShader_ ) && VULKAN_HPP_NOEXCEPT + { + meshShader = meshShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setMultiviewMeshShader( Bool32 multiviewMeshShader_ ) & VULKAN_HPP_NOEXCEPT + { + multiviewMeshShader = multiviewMeshShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT && setMultiviewMeshShader( Bool32 multiviewMeshShader_ ) && VULKAN_HPP_NOEXCEPT + { + multiviewMeshShader = multiviewMeshShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setPrimitiveFragmentShadingRateMeshShader( Bool32 primitiveFragmentShadingRateMeshShader_ ) & + VULKAN_HPP_NOEXCEPT + { + primitiveFragmentShadingRateMeshShader = primitiveFragmentShadingRateMeshShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT && + setPrimitiveFragmentShadingRateMeshShader( Bool32 primitiveFragmentShadingRateMeshShader_ ) && + VULKAN_HPP_NOEXCEPT + { + primitiveFragmentShadingRateMeshShader = primitiveFragmentShadingRateMeshShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT & setMeshShaderQueries( Bool32 meshShaderQueries_ ) & VULKAN_HPP_NOEXCEPT + { + meshShaderQueries = meshShaderQueries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesEXT && setMeshShaderQueries( Bool32 meshShaderQueries_ ) && VULKAN_HPP_NOEXCEPT + { + meshShaderQueries = meshShaderQueries_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMeshShaderFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, taskShader, meshShader, multiviewMeshShader, primitiveFragmentShadingRateMeshShader, meshShaderQueries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMeshShaderFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( taskShader == rhs.taskShader ) && ( meshShader == rhs.meshShader ) && + ( multiviewMeshShader == rhs.multiviewMeshShader ) && ( primitiveFragmentShadingRateMeshShader == rhs.primitiveFragmentShadingRateMeshShader ) && + ( meshShaderQueries == rhs.meshShaderQueries ); +# endif + } + + bool operator!=( PhysicalDeviceMeshShaderFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMeshShaderFeaturesEXT; + void * pNext = {}; + Bool32 taskShader = {}; + Bool32 meshShader = {}; + Bool32 multiviewMeshShader = {}; + Bool32 primitiveFragmentShadingRateMeshShader = {}; + Bool32 meshShaderQueries = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMeshShaderFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMeshShaderFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceMeshShaderFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderFeaturesNV.html + struct PhysicalDeviceMeshShaderFeaturesNV + { + using NativeType = VkPhysicalDeviceMeshShaderFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMeshShaderFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesNV( Bool32 taskShader_ = {}, Bool32 meshShader_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , taskShader{ taskShader_ } + , meshShader{ meshShader_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesNV( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMeshShaderFeaturesNV( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMeshShaderFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMeshShaderFeaturesNV & operator=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMeshShaderFeaturesNV & operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setTaskShader( Bool32 taskShader_ ) & VULKAN_HPP_NOEXCEPT + { + taskShader = taskShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV && setTaskShader( Bool32 taskShader_ ) && VULKAN_HPP_NOEXCEPT + { + taskShader = taskShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & setMeshShader( Bool32 meshShader_ ) & VULKAN_HPP_NOEXCEPT + { + meshShader = meshShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV && setMeshShader( Bool32 meshShader_ ) && VULKAN_HPP_NOEXCEPT + { + meshShader = meshShader_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMeshShaderFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, taskShader, meshShader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMeshShaderFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( taskShader == rhs.taskShader ) && ( meshShader == rhs.meshShader ); +# endif + } + + bool operator!=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMeshShaderFeaturesNV; + void * pNext = {}; + Bool32 taskShader = {}; + Bool32 meshShader = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMeshShaderFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMeshShaderFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceMeshShaderPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesEXT.html + struct PhysicalDeviceMeshShaderPropertiesEXT + { + using NativeType = VkPhysicalDeviceMeshShaderPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMeshShaderPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesEXT( uint32_t maxTaskWorkGroupTotalCount_ = {}, + std::array const & maxTaskWorkGroupCount_ = {}, + uint32_t maxTaskWorkGroupInvocations_ = {}, + std::array const & maxTaskWorkGroupSize_ = {}, + uint32_t maxTaskPayloadSize_ = {}, + uint32_t maxTaskSharedMemorySize_ = {}, + uint32_t maxTaskPayloadAndSharedMemorySize_ = {}, + uint32_t maxMeshWorkGroupTotalCount_ = {}, + std::array const & maxMeshWorkGroupCount_ = {}, + uint32_t maxMeshWorkGroupInvocations_ = {}, + std::array const & maxMeshWorkGroupSize_ = {}, + uint32_t maxMeshSharedMemorySize_ = {}, + uint32_t maxMeshPayloadAndSharedMemorySize_ = {}, + uint32_t maxMeshOutputMemorySize_ = {}, + uint32_t maxMeshPayloadAndOutputMemorySize_ = {}, + uint32_t maxMeshOutputComponents_ = {}, + uint32_t maxMeshOutputVertices_ = {}, + uint32_t maxMeshOutputPrimitives_ = {}, + uint32_t maxMeshOutputLayers_ = {}, + uint32_t maxMeshMultiviewViewCount_ = {}, + uint32_t meshOutputPerVertexGranularity_ = {}, + uint32_t meshOutputPerPrimitiveGranularity_ = {}, + uint32_t maxPreferredTaskWorkGroupInvocations_ = {}, + uint32_t maxPreferredMeshWorkGroupInvocations_ = {}, + Bool32 prefersLocalInvocationVertexOutput_ = {}, + Bool32 prefersLocalInvocationPrimitiveOutput_ = {}, + Bool32 prefersCompactVertexOutput_ = {}, + Bool32 prefersCompactPrimitiveOutput_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxTaskWorkGroupTotalCount{ maxTaskWorkGroupTotalCount_ } + , maxTaskWorkGroupCount{ maxTaskWorkGroupCount_ } + , maxTaskWorkGroupInvocations{ maxTaskWorkGroupInvocations_ } + , maxTaskWorkGroupSize{ maxTaskWorkGroupSize_ } + , maxTaskPayloadSize{ maxTaskPayloadSize_ } + , maxTaskSharedMemorySize{ maxTaskSharedMemorySize_ } + , maxTaskPayloadAndSharedMemorySize{ maxTaskPayloadAndSharedMemorySize_ } + , maxMeshWorkGroupTotalCount{ maxMeshWorkGroupTotalCount_ } + , maxMeshWorkGroupCount{ maxMeshWorkGroupCount_ } + , maxMeshWorkGroupInvocations{ maxMeshWorkGroupInvocations_ } + , maxMeshWorkGroupSize{ maxMeshWorkGroupSize_ } + , maxMeshSharedMemorySize{ maxMeshSharedMemorySize_ } + , maxMeshPayloadAndSharedMemorySize{ maxMeshPayloadAndSharedMemorySize_ } + , maxMeshOutputMemorySize{ maxMeshOutputMemorySize_ } + , maxMeshPayloadAndOutputMemorySize{ maxMeshPayloadAndOutputMemorySize_ } + , maxMeshOutputComponents{ maxMeshOutputComponents_ } + , maxMeshOutputVertices{ maxMeshOutputVertices_ } + , maxMeshOutputPrimitives{ maxMeshOutputPrimitives_ } + , maxMeshOutputLayers{ maxMeshOutputLayers_ } + , maxMeshMultiviewViewCount{ maxMeshMultiviewViewCount_ } + , meshOutputPerVertexGranularity{ meshOutputPerVertexGranularity_ } + , meshOutputPerPrimitiveGranularity{ meshOutputPerPrimitiveGranularity_ } + , maxPreferredTaskWorkGroupInvocations{ maxPreferredTaskWorkGroupInvocations_ } + , maxPreferredMeshWorkGroupInvocations{ maxPreferredMeshWorkGroupInvocations_ } + , prefersLocalInvocationVertexOutput{ prefersLocalInvocationVertexOutput_ } + , prefersLocalInvocationPrimitiveOutput{ prefersLocalInvocationPrimitiveOutput_ } + , prefersCompactVertexOutput{ prefersCompactVertexOutput_ } + , prefersCompactPrimitiveOutput{ prefersCompactPrimitiveOutput_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesEXT( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMeshShaderPropertiesEXT( VkPhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMeshShaderPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMeshShaderPropertiesEXT & operator=( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMeshShaderPropertiesEXT & operator=( VkPhysicalDeviceMeshShaderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMeshShaderPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &, + ArrayWrapper1D const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + ArrayWrapper1D const &, + uint32_t const &, + ArrayWrapper1D const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxTaskWorkGroupTotalCount, + maxTaskWorkGroupCount, + maxTaskWorkGroupInvocations, + maxTaskWorkGroupSize, + maxTaskPayloadSize, + maxTaskSharedMemorySize, + maxTaskPayloadAndSharedMemorySize, + maxMeshWorkGroupTotalCount, + maxMeshWorkGroupCount, + maxMeshWorkGroupInvocations, + maxMeshWorkGroupSize, + maxMeshSharedMemorySize, + maxMeshPayloadAndSharedMemorySize, + maxMeshOutputMemorySize, + maxMeshPayloadAndOutputMemorySize, + maxMeshOutputComponents, + maxMeshOutputVertices, + maxMeshOutputPrimitives, + maxMeshOutputLayers, + maxMeshMultiviewViewCount, + meshOutputPerVertexGranularity, + meshOutputPerPrimitiveGranularity, + maxPreferredTaskWorkGroupInvocations, + maxPreferredMeshWorkGroupInvocations, + prefersLocalInvocationVertexOutput, + prefersLocalInvocationPrimitiveOutput, + prefersCompactVertexOutput, + prefersCompactPrimitiveOutput ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMeshShaderPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTaskWorkGroupTotalCount == rhs.maxTaskWorkGroupTotalCount ) && + ( maxTaskWorkGroupCount == rhs.maxTaskWorkGroupCount ) && ( maxTaskWorkGroupInvocations == rhs.maxTaskWorkGroupInvocations ) && + ( maxTaskWorkGroupSize == rhs.maxTaskWorkGroupSize ) && ( maxTaskPayloadSize == rhs.maxTaskPayloadSize ) && + ( maxTaskSharedMemorySize == rhs.maxTaskSharedMemorySize ) && ( maxTaskPayloadAndSharedMemorySize == rhs.maxTaskPayloadAndSharedMemorySize ) && + ( maxMeshWorkGroupTotalCount == rhs.maxMeshWorkGroupTotalCount ) && ( maxMeshWorkGroupCount == rhs.maxMeshWorkGroupCount ) && + ( maxMeshWorkGroupInvocations == rhs.maxMeshWorkGroupInvocations ) && ( maxMeshWorkGroupSize == rhs.maxMeshWorkGroupSize ) && + ( maxMeshSharedMemorySize == rhs.maxMeshSharedMemorySize ) && ( maxMeshPayloadAndSharedMemorySize == rhs.maxMeshPayloadAndSharedMemorySize ) && + ( maxMeshOutputMemorySize == rhs.maxMeshOutputMemorySize ) && ( maxMeshPayloadAndOutputMemorySize == rhs.maxMeshPayloadAndOutputMemorySize ) && + ( maxMeshOutputComponents == rhs.maxMeshOutputComponents ) && ( maxMeshOutputVertices == rhs.maxMeshOutputVertices ) && + ( maxMeshOutputPrimitives == rhs.maxMeshOutputPrimitives ) && ( maxMeshOutputLayers == rhs.maxMeshOutputLayers ) && + ( maxMeshMultiviewViewCount == rhs.maxMeshMultiviewViewCount ) && ( meshOutputPerVertexGranularity == rhs.meshOutputPerVertexGranularity ) && + ( meshOutputPerPrimitiveGranularity == rhs.meshOutputPerPrimitiveGranularity ) && + ( maxPreferredTaskWorkGroupInvocations == rhs.maxPreferredTaskWorkGroupInvocations ) && + ( maxPreferredMeshWorkGroupInvocations == rhs.maxPreferredMeshWorkGroupInvocations ) && + ( prefersLocalInvocationVertexOutput == rhs.prefersLocalInvocationVertexOutput ) && + ( prefersLocalInvocationPrimitiveOutput == rhs.prefersLocalInvocationPrimitiveOutput ) && + ( prefersCompactVertexOutput == rhs.prefersCompactVertexOutput ) && ( prefersCompactPrimitiveOutput == rhs.prefersCompactPrimitiveOutput ); +# endif + } + + bool operator!=( PhysicalDeviceMeshShaderPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMeshShaderPropertiesEXT; + void * pNext = {}; + uint32_t maxTaskWorkGroupTotalCount = {}; + ArrayWrapper1D maxTaskWorkGroupCount = {}; + uint32_t maxTaskWorkGroupInvocations = {}; + ArrayWrapper1D maxTaskWorkGroupSize = {}; + uint32_t maxTaskPayloadSize = {}; + uint32_t maxTaskSharedMemorySize = {}; + uint32_t maxTaskPayloadAndSharedMemorySize = {}; + uint32_t maxMeshWorkGroupTotalCount = {}; + ArrayWrapper1D maxMeshWorkGroupCount = {}; + uint32_t maxMeshWorkGroupInvocations = {}; + ArrayWrapper1D maxMeshWorkGroupSize = {}; + uint32_t maxMeshSharedMemorySize = {}; + uint32_t maxMeshPayloadAndSharedMemorySize = {}; + uint32_t maxMeshOutputMemorySize = {}; + uint32_t maxMeshPayloadAndOutputMemorySize = {}; + uint32_t maxMeshOutputComponents = {}; + uint32_t maxMeshOutputVertices = {}; + uint32_t maxMeshOutputPrimitives = {}; + uint32_t maxMeshOutputLayers = {}; + uint32_t maxMeshMultiviewViewCount = {}; + uint32_t meshOutputPerVertexGranularity = {}; + uint32_t meshOutputPerPrimitiveGranularity = {}; + uint32_t maxPreferredTaskWorkGroupInvocations = {}; + uint32_t maxPreferredMeshWorkGroupInvocations = {}; + Bool32 prefersLocalInvocationVertexOutput = {}; + Bool32 prefersLocalInvocationPrimitiveOutput = {}; + Bool32 prefersCompactVertexOutput = {}; + Bool32 prefersCompactPrimitiveOutput = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMeshShaderPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMeshShaderPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceMeshShaderPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMeshShaderPropertiesNV.html + struct PhysicalDeviceMeshShaderPropertiesNV + { + using NativeType = VkPhysicalDeviceMeshShaderPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMeshShaderPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV( uint32_t maxDrawMeshTasksCount_ = {}, + uint32_t maxTaskWorkGroupInvocations_ = {}, + std::array const & maxTaskWorkGroupSize_ = {}, + uint32_t maxTaskTotalMemorySize_ = {}, + uint32_t maxTaskOutputCount_ = {}, + uint32_t maxMeshWorkGroupInvocations_ = {}, + std::array const & maxMeshWorkGroupSize_ = {}, + uint32_t maxMeshTotalMemorySize_ = {}, + uint32_t maxMeshOutputVertices_ = {}, + uint32_t maxMeshOutputPrimitives_ = {}, + uint32_t maxMeshMultiviewViewCount_ = {}, + uint32_t meshOutputPerVertexGranularity_ = {}, + uint32_t meshOutputPerPrimitiveGranularity_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxDrawMeshTasksCount{ maxDrawMeshTasksCount_ } + , maxTaskWorkGroupInvocations{ maxTaskWorkGroupInvocations_ } + , maxTaskWorkGroupSize{ maxTaskWorkGroupSize_ } + , maxTaskTotalMemorySize{ maxTaskTotalMemorySize_ } + , maxTaskOutputCount{ maxTaskOutputCount_ } + , maxMeshWorkGroupInvocations{ maxMeshWorkGroupInvocations_ } + , maxMeshWorkGroupSize{ maxMeshWorkGroupSize_ } + , maxMeshTotalMemorySize{ maxMeshTotalMemorySize_ } + , maxMeshOutputVertices{ maxMeshOutputVertices_ } + , maxMeshOutputPrimitives{ maxMeshOutputPrimitives_ } + , maxMeshMultiviewViewCount{ maxMeshMultiviewViewCount_ } + , meshOutputPerVertexGranularity{ meshOutputPerVertexGranularity_ } + , meshOutputPerPrimitiveGranularity{ meshOutputPerPrimitiveGranularity_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMeshShaderPropertiesNV( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMeshShaderPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMeshShaderPropertiesNV & operator=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMeshShaderPropertiesNV & operator=( VkPhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMeshShaderPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMeshShaderPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + ArrayWrapper1D const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxDrawMeshTasksCount, + maxTaskWorkGroupInvocations, + maxTaskWorkGroupSize, + maxTaskTotalMemorySize, + maxTaskOutputCount, + maxMeshWorkGroupInvocations, + maxMeshWorkGroupSize, + maxMeshTotalMemorySize, + maxMeshOutputVertices, + maxMeshOutputPrimitives, + maxMeshMultiviewViewCount, + meshOutputPerVertexGranularity, + meshOutputPerPrimitiveGranularity ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMeshShaderPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxDrawMeshTasksCount == rhs.maxDrawMeshTasksCount ) && + ( maxTaskWorkGroupInvocations == rhs.maxTaskWorkGroupInvocations ) && ( maxTaskWorkGroupSize == rhs.maxTaskWorkGroupSize ) && + ( maxTaskTotalMemorySize == rhs.maxTaskTotalMemorySize ) && ( maxTaskOutputCount == rhs.maxTaskOutputCount ) && + ( maxMeshWorkGroupInvocations == rhs.maxMeshWorkGroupInvocations ) && ( maxMeshWorkGroupSize == rhs.maxMeshWorkGroupSize ) && + ( maxMeshTotalMemorySize == rhs.maxMeshTotalMemorySize ) && ( maxMeshOutputVertices == rhs.maxMeshOutputVertices ) && + ( maxMeshOutputPrimitives == rhs.maxMeshOutputPrimitives ) && ( maxMeshMultiviewViewCount == rhs.maxMeshMultiviewViewCount ) && + ( meshOutputPerVertexGranularity == rhs.meshOutputPerVertexGranularity ) && + ( meshOutputPerPrimitiveGranularity == rhs.meshOutputPerPrimitiveGranularity ); +# endif + } + + bool operator!=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMeshShaderPropertiesNV; + void * pNext = {}; + uint32_t maxDrawMeshTasksCount = {}; + uint32_t maxTaskWorkGroupInvocations = {}; + ArrayWrapper1D maxTaskWorkGroupSize = {}; + uint32_t maxTaskTotalMemorySize = {}; + uint32_t maxTaskOutputCount = {}; + uint32_t maxMeshWorkGroupInvocations = {}; + ArrayWrapper1D maxMeshWorkGroupSize = {}; + uint32_t maxMeshTotalMemorySize = {}; + uint32_t maxMeshOutputVertices = {}; + uint32_t maxMeshOutputPrimitives = {}; + uint32_t maxMeshMultiviewViewCount = {}; + uint32_t meshOutputPerVertexGranularity = {}; + uint32_t meshOutputPerPrimitiveGranularity = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMeshShaderPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMeshShaderPropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceMultiDrawFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawFeaturesEXT.html + struct PhysicalDeviceMultiDrawFeaturesEXT + { + using NativeType = VkPhysicalDeviceMultiDrawFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiDrawFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawFeaturesEXT( Bool32 multiDraw_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , multiDraw{ multiDraw_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawFeaturesEXT( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiDrawFeaturesEXT( VkPhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiDrawFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMultiDrawFeaturesEXT & operator=( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMultiDrawFeaturesEXT & operator=( VkPhysicalDeviceMultiDrawFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT & setMultiDraw( Bool32 multiDraw_ ) & VULKAN_HPP_NOEXCEPT + { + multiDraw = multiDraw_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiDrawFeaturesEXT && setMultiDraw( Bool32 multiDraw_ ) && VULKAN_HPP_NOEXCEPT + { + multiDraw = multiDraw_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMultiDrawFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiDrawFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiDrawFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiDrawFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, multiDraw ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiDrawFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiDraw == rhs.multiDraw ); +# endif + } + + bool operator!=( PhysicalDeviceMultiDrawFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMultiDrawFeaturesEXT; + void * pNext = {}; + Bool32 multiDraw = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMultiDrawFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiDrawFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceMultiDrawPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiDrawPropertiesEXT.html + struct PhysicalDeviceMultiDrawPropertiesEXT + { + using NativeType = VkPhysicalDeviceMultiDrawPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiDrawPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawPropertiesEXT( uint32_t maxMultiDrawCount_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxMultiDrawCount{ maxMultiDrawCount_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiDrawPropertiesEXT( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiDrawPropertiesEXT( VkPhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiDrawPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMultiDrawPropertiesEXT & operator=( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMultiDrawPropertiesEXT & operator=( VkPhysicalDeviceMultiDrawPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMultiDrawPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiDrawPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiDrawPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiDrawPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxMultiDrawCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiDrawPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxMultiDrawCount == rhs.maxMultiDrawCount ); +# endif + } + + bool operator!=( PhysicalDeviceMultiDrawPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMultiDrawPropertiesEXT; + void * pNext = {}; + uint32_t maxMultiDrawCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMultiDrawPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiDrawPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.html + struct PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT + { + using NativeType = VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT( Bool32 multisampledRenderToSingleSampled_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , multisampledRenderToSingleSampled{ multisampledRenderToSingleSampled_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT( VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT( + *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT & + operator=( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT & + operator=( VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT & + setMultisampledRenderToSingleSampled( Bool32 multisampledRenderToSingleSampled_ ) & + VULKAN_HPP_NOEXCEPT + { + multisampledRenderToSingleSampled = multisampledRenderToSingleSampled_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT && + setMultisampledRenderToSingleSampled( Bool32 multisampledRenderToSingleSampled_ ) && + VULKAN_HPP_NOEXCEPT + { + multisampledRenderToSingleSampled = multisampledRenderToSingleSampled_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, multisampledRenderToSingleSampled ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multisampledRenderToSingleSampled == rhs.multisampledRenderToSingleSampled ); +# endif + } + + bool operator!=( PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; + void * pNext = {}; + Bool32 multisampledRenderToSingleSampled = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceMultiviewFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewFeatures.html + struct PhysicalDeviceMultiviewFeatures + { + using NativeType = VkPhysicalDeviceMultiviewFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures( Bool32 multiview_ = {}, + Bool32 multiviewGeometryShader_ = {}, + Bool32 multiviewTessellationShader_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , multiview{ multiview_ } + , multiviewGeometryShader{ multiviewGeometryShader_ } + , multiviewTessellationShader{ multiviewTessellationShader_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewFeatures( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiviewFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMultiviewFeatures & operator=( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMultiviewFeatures & operator=( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setMultiview( Bool32 multiview_ ) & VULKAN_HPP_NOEXCEPT + { + multiview = multiview_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures && setMultiview( Bool32 multiview_ ) && VULKAN_HPP_NOEXCEPT + { + multiview = multiview_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ ) & VULKAN_HPP_NOEXCEPT + { + multiviewGeometryShader = multiviewGeometryShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures && setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ ) && VULKAN_HPP_NOEXCEPT + { + multiviewGeometryShader = multiviewGeometryShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ ) & VULKAN_HPP_NOEXCEPT + { + multiviewTessellationShader = multiviewTessellationShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures && setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ ) && VULKAN_HPP_NOEXCEPT + { + multiviewTessellationShader = multiviewTessellationShader_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMultiviewFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, multiview, multiviewGeometryShader, multiviewTessellationShader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiviewFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiview == rhs.multiview ) && ( multiviewGeometryShader == rhs.multiviewGeometryShader ) && + ( multiviewTessellationShader == rhs.multiviewTessellationShader ); +# endif + } + + bool operator!=( PhysicalDeviceMultiviewFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMultiviewFeatures; + void * pNext = {}; + Bool32 multiview = {}; + Bool32 multiviewGeometryShader = {}; + Bool32 multiviewTessellationShader = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewFeatures; + }; + + using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures; + + // wrapper struct for struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX.html + struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + { + using NativeType = VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( Bool32 perViewPositionAllComponents_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , perViewPositionAllComponents{ perViewPositionAllComponents_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX & + operator=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX & operator=( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, perViewPositionAllComponents ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents ); +# endif + } + + bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + void * pNext = {}; + Bool32 perViewPositionAllComponents = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; + }; + + // wrapper struct for struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM.html + struct PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM + { + using NativeType = VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( Bool32 multiviewPerViewRenderAreas_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , multiviewPerViewRenderAreas{ multiviewPerViewRenderAreas_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM & + operator=( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM & operator=( VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM & setMultiviewPerViewRenderAreas( Bool32 multiviewPerViewRenderAreas_ ) & + VULKAN_HPP_NOEXCEPT + { + multiviewPerViewRenderAreas = multiviewPerViewRenderAreas_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM && setMultiviewPerViewRenderAreas( Bool32 multiviewPerViewRenderAreas_ ) && + VULKAN_HPP_NOEXCEPT + { + multiviewPerViewRenderAreas = multiviewPerViewRenderAreas_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, multiviewPerViewRenderAreas ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiviewPerViewRenderAreas == rhs.multiviewPerViewRenderAreas ); +# endif + } + + bool operator!=( PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM; + void * pNext = {}; + Bool32 multiviewPerViewRenderAreas = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM.html + struct PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM + { + using NativeType = VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( Bool32 multiviewPerViewViewports_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , multiviewPerViewViewports{ multiviewPerViewViewports_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM & + operator=( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM & operator=( VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM & setMultiviewPerViewViewports( Bool32 multiviewPerViewViewports_ ) & + VULKAN_HPP_NOEXCEPT + { + multiviewPerViewViewports = multiviewPerViewViewports_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM && setMultiviewPerViewViewports( Bool32 multiviewPerViewViewports_ ) && + VULKAN_HPP_NOEXCEPT + { + multiviewPerViewViewports = multiviewPerViewViewports_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, multiviewPerViewViewports ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( multiviewPerViewViewports == rhs.multiviewPerViewViewports ); +# endif + } + + bool operator!=( PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM; + void * pNext = {}; + Bool32 multiviewPerViewViewports = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceMultiviewProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMultiviewProperties.html + struct PhysicalDeviceMultiviewProperties + { + using NativeType = VkPhysicalDeviceMultiviewProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewProperties( uint32_t maxMultiviewViewCount_ = {}, + uint32_t maxMultiviewInstanceIndex_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxMultiviewViewCount{ maxMultiviewViewCount_ } + , maxMultiviewInstanceIndex{ maxMultiviewInstanceIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewProperties( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMultiviewProperties( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMultiviewProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMultiviewProperties & operator=( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMultiviewProperties & operator=( VkPhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceMultiviewProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMultiviewProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxMultiviewViewCount, maxMultiviewInstanceIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMultiviewProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount ) && + ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex ); +# endif + } + + bool operator!=( PhysicalDeviceMultiviewProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMultiviewProperties; + void * pNext = {}; + uint32_t maxMultiviewViewCount = {}; + uint32_t maxMultiviewInstanceIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMultiviewProperties; + }; + + using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties; + + // wrapper struct for struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT.html + struct PhysicalDeviceMutableDescriptorTypeFeaturesEXT + { + using NativeType = VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceMutableDescriptorTypeFeaturesEXT( Bool32 mutableDescriptorType_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , mutableDescriptorType{ mutableDescriptorType_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceMutableDescriptorTypeFeaturesEXT( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceMutableDescriptorTypeFeaturesEXT( VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceMutableDescriptorTypeFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceMutableDescriptorTypeFeaturesEXT & operator=( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceMutableDescriptorTypeFeaturesEXT & operator=( VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesEXT & setMutableDescriptorType( Bool32 mutableDescriptorType_ ) & VULKAN_HPP_NOEXCEPT + { + mutableDescriptorType = mutableDescriptorType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesEXT && setMutableDescriptorType( Bool32 mutableDescriptorType_ ) && VULKAN_HPP_NOEXCEPT + { + mutableDescriptorType = mutableDescriptorType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mutableDescriptorType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mutableDescriptorType == rhs.mutableDescriptorType ); +# endif + } + + bool operator!=( PhysicalDeviceMutableDescriptorTypeFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesEXT; + void * pNext = {}; + Bool32 mutableDescriptorType = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceMutableDescriptorTypeFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceMutableDescriptorTypeFeaturesEXT; + }; + + using PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = PhysicalDeviceMutableDescriptorTypeFeaturesEXT; + + // wrapper struct for struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferFeaturesEXT.html + struct PhysicalDeviceNestedCommandBufferFeaturesEXT + { + using NativeType = VkPhysicalDeviceNestedCommandBufferFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceNestedCommandBufferFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceNestedCommandBufferFeaturesEXT( Bool32 nestedCommandBuffer_ = {}, + Bool32 nestedCommandBufferRendering_ = {}, + Bool32 nestedCommandBufferSimultaneousUse_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , nestedCommandBuffer{ nestedCommandBuffer_ } + , nestedCommandBufferRendering{ nestedCommandBufferRendering_ } + , nestedCommandBufferSimultaneousUse{ nestedCommandBufferSimultaneousUse_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceNestedCommandBufferFeaturesEXT( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceNestedCommandBufferFeaturesEXT( VkPhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceNestedCommandBufferFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceNestedCommandBufferFeaturesEXT & operator=( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceNestedCommandBufferFeaturesEXT & operator=( VkPhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT & setNestedCommandBuffer( Bool32 nestedCommandBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + nestedCommandBuffer = nestedCommandBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT && setNestedCommandBuffer( Bool32 nestedCommandBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + nestedCommandBuffer = nestedCommandBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT & setNestedCommandBufferRendering( Bool32 nestedCommandBufferRendering_ ) & + VULKAN_HPP_NOEXCEPT + { + nestedCommandBufferRendering = nestedCommandBufferRendering_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT && setNestedCommandBufferRendering( Bool32 nestedCommandBufferRendering_ ) && + VULKAN_HPP_NOEXCEPT + { + nestedCommandBufferRendering = nestedCommandBufferRendering_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT & setNestedCommandBufferSimultaneousUse( Bool32 nestedCommandBufferSimultaneousUse_ ) & + VULKAN_HPP_NOEXCEPT + { + nestedCommandBufferSimultaneousUse = nestedCommandBufferSimultaneousUse_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNestedCommandBufferFeaturesEXT && + setNestedCommandBufferSimultaneousUse( Bool32 nestedCommandBufferSimultaneousUse_ ) && + VULKAN_HPP_NOEXCEPT + { + nestedCommandBufferSimultaneousUse = nestedCommandBufferSimultaneousUse_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceNestedCommandBufferFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, nestedCommandBuffer, nestedCommandBufferRendering, nestedCommandBufferSimultaneousUse ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceNestedCommandBufferFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( nestedCommandBuffer == rhs.nestedCommandBuffer ) && + ( nestedCommandBufferRendering == rhs.nestedCommandBufferRendering ) && + ( nestedCommandBufferSimultaneousUse == rhs.nestedCommandBufferSimultaneousUse ); +# endif + } + + bool operator!=( PhysicalDeviceNestedCommandBufferFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceNestedCommandBufferFeaturesEXT; + void * pNext = {}; + Bool32 nestedCommandBuffer = {}; + Bool32 nestedCommandBufferRendering = {}; + Bool32 nestedCommandBufferSimultaneousUse = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceNestedCommandBufferFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceNestedCommandBufferFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceNestedCommandBufferPropertiesEXT.html + struct PhysicalDeviceNestedCommandBufferPropertiesEXT + { + using NativeType = VkPhysicalDeviceNestedCommandBufferPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceNestedCommandBufferPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceNestedCommandBufferPropertiesEXT( uint32_t maxCommandBufferNestingLevel_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxCommandBufferNestingLevel{ maxCommandBufferNestingLevel_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceNestedCommandBufferPropertiesEXT( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceNestedCommandBufferPropertiesEXT( VkPhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceNestedCommandBufferPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceNestedCommandBufferPropertiesEXT & operator=( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceNestedCommandBufferPropertiesEXT & operator=( VkPhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceNestedCommandBufferPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxCommandBufferNestingLevel ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceNestedCommandBufferPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxCommandBufferNestingLevel == rhs.maxCommandBufferNestingLevel ); +# endif + } + + bool operator!=( PhysicalDeviceNestedCommandBufferPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceNestedCommandBufferPropertiesEXT; + void * pNext = {}; + uint32_t maxCommandBufferNestingLevel = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceNestedCommandBufferPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceNestedCommandBufferPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT.html + struct PhysicalDeviceNonSeamlessCubeMapFeaturesEXT + { + using NativeType = VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( Bool32 nonSeamlessCubeMap_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , nonSeamlessCubeMap{ nonSeamlessCubeMap_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceNonSeamlessCubeMapFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceNonSeamlessCubeMapFeaturesEXT & operator=( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceNonSeamlessCubeMapFeaturesEXT & operator=( VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNonSeamlessCubeMapFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNonSeamlessCubeMapFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNonSeamlessCubeMapFeaturesEXT & setNonSeamlessCubeMap( Bool32 nonSeamlessCubeMap_ ) & VULKAN_HPP_NOEXCEPT + { + nonSeamlessCubeMap = nonSeamlessCubeMap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceNonSeamlessCubeMapFeaturesEXT && setNonSeamlessCubeMap( Bool32 nonSeamlessCubeMap_ ) && VULKAN_HPP_NOEXCEPT + { + nonSeamlessCubeMap = nonSeamlessCubeMap_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, nonSeamlessCubeMap ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( nonSeamlessCubeMap == rhs.nonSeamlessCubeMap ); +# endif + } + + bool operator!=( PhysicalDeviceNonSeamlessCubeMapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT; + void * pNext = {}; + Bool32 nonSeamlessCubeMap = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceNonSeamlessCubeMapFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceNonSeamlessCubeMapFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceOpacityMicromapFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapFeaturesEXT.html + struct PhysicalDeviceOpacityMicromapFeaturesEXT + { + using NativeType = VkPhysicalDeviceOpacityMicromapFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceOpacityMicromapFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapFeaturesEXT( Bool32 micromap_ = {}, + Bool32 micromapCaptureReplay_ = {}, + Bool32 micromapHostCommands_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , micromap{ micromap_ } + , micromapCaptureReplay{ micromapCaptureReplay_ } + , micromapHostCommands{ micromapHostCommands_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapFeaturesEXT( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceOpacityMicromapFeaturesEXT( VkPhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceOpacityMicromapFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceOpacityMicromapFeaturesEXT & operator=( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceOpacityMicromapFeaturesEXT & operator=( VkPhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT & setMicromap( Bool32 micromap_ ) & VULKAN_HPP_NOEXCEPT + { + micromap = micromap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT && setMicromap( Bool32 micromap_ ) && VULKAN_HPP_NOEXCEPT + { + micromap = micromap_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT & setMicromapCaptureReplay( Bool32 micromapCaptureReplay_ ) & VULKAN_HPP_NOEXCEPT + { + micromapCaptureReplay = micromapCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT && setMicromapCaptureReplay( Bool32 micromapCaptureReplay_ ) && VULKAN_HPP_NOEXCEPT + { + micromapCaptureReplay = micromapCaptureReplay_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT & setMicromapHostCommands( Bool32 micromapHostCommands_ ) & VULKAN_HPP_NOEXCEPT + { + micromapHostCommands = micromapHostCommands_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpacityMicromapFeaturesEXT && setMicromapHostCommands( Bool32 micromapHostCommands_ ) && VULKAN_HPP_NOEXCEPT + { + micromapHostCommands = micromapHostCommands_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceOpacityMicromapFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpacityMicromapFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpacityMicromapFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpacityMicromapFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, micromap, micromapCaptureReplay, micromapHostCommands ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceOpacityMicromapFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( micromap == rhs.micromap ) && ( micromapCaptureReplay == rhs.micromapCaptureReplay ) && + ( micromapHostCommands == rhs.micromapHostCommands ); +# endif + } + + bool operator!=( PhysicalDeviceOpacityMicromapFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceOpacityMicromapFeaturesEXT; + void * pNext = {}; + Bool32 micromap = {}; + Bool32 micromapCaptureReplay = {}; + Bool32 micromapHostCommands = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceOpacityMicromapFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceOpacityMicromapFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceOpacityMicromapPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceOpacityMicromapPropertiesEXT.html + struct PhysicalDeviceOpacityMicromapPropertiesEXT + { + using NativeType = VkPhysicalDeviceOpacityMicromapPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceOpacityMicromapPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapPropertiesEXT( uint32_t maxOpacity2StateSubdivisionLevel_ = {}, + uint32_t maxOpacity4StateSubdivisionLevel_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxOpacity2StateSubdivisionLevel{ maxOpacity2StateSubdivisionLevel_ } + , maxOpacity4StateSubdivisionLevel{ maxOpacity4StateSubdivisionLevel_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceOpacityMicromapPropertiesEXT( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceOpacityMicromapPropertiesEXT( VkPhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceOpacityMicromapPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceOpacityMicromapPropertiesEXT & operator=( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceOpacityMicromapPropertiesEXT & operator=( VkPhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceOpacityMicromapPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpacityMicromapPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpacityMicromapPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpacityMicromapPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxOpacity2StateSubdivisionLevel, maxOpacity4StateSubdivisionLevel ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceOpacityMicromapPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxOpacity2StateSubdivisionLevel == rhs.maxOpacity2StateSubdivisionLevel ) && + ( maxOpacity4StateSubdivisionLevel == rhs.maxOpacity4StateSubdivisionLevel ); +# endif + } + + bool operator!=( PhysicalDeviceOpacityMicromapPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceOpacityMicromapPropertiesEXT; + void * pNext = {}; + uint32_t maxOpacity2StateSubdivisionLevel = {}; + uint32_t maxOpacity4StateSubdivisionLevel = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceOpacityMicromapPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceOpacityMicromapPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceOpticalFlowFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowFeaturesNV.html + struct PhysicalDeviceOpticalFlowFeaturesNV + { + using NativeType = VkPhysicalDeviceOpticalFlowFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceOpticalFlowFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowFeaturesNV( Bool32 opticalFlow_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , opticalFlow{ opticalFlow_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowFeaturesNV( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceOpticalFlowFeaturesNV( VkPhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceOpticalFlowFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceOpticalFlowFeaturesNV & operator=( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceOpticalFlowFeaturesNV & operator=( VkPhysicalDeviceOpticalFlowFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpticalFlowFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpticalFlowFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpticalFlowFeaturesNV & setOpticalFlow( Bool32 opticalFlow_ ) & VULKAN_HPP_NOEXCEPT + { + opticalFlow = opticalFlow_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceOpticalFlowFeaturesNV && setOpticalFlow( Bool32 opticalFlow_ ) && VULKAN_HPP_NOEXCEPT + { + opticalFlow = opticalFlow_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceOpticalFlowFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpticalFlowFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpticalFlowFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpticalFlowFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, opticalFlow ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceOpticalFlowFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( opticalFlow == rhs.opticalFlow ); +# endif + } + + bool operator!=( PhysicalDeviceOpticalFlowFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceOpticalFlowFeaturesNV; + void * pNext = {}; + Bool32 opticalFlow = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceOpticalFlowFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceOpticalFlowFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceOpticalFlowPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceOpticalFlowPropertiesNV.html + struct PhysicalDeviceOpticalFlowPropertiesNV + { + using NativeType = VkPhysicalDeviceOpticalFlowPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceOpticalFlowPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowPropertiesNV( OpticalFlowGridSizeFlagsNV supportedOutputGridSizes_ = {}, + OpticalFlowGridSizeFlagsNV supportedHintGridSizes_ = {}, + Bool32 hintSupported_ = {}, + Bool32 costSupported_ = {}, + Bool32 bidirectionalFlowSupported_ = {}, + Bool32 globalFlowSupported_ = {}, + uint32_t minWidth_ = {}, + uint32_t minHeight_ = {}, + uint32_t maxWidth_ = {}, + uint32_t maxHeight_ = {}, + uint32_t maxNumRegionsOfInterest_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , supportedOutputGridSizes{ supportedOutputGridSizes_ } + , supportedHintGridSizes{ supportedHintGridSizes_ } + , hintSupported{ hintSupported_ } + , costSupported{ costSupported_ } + , bidirectionalFlowSupported{ bidirectionalFlowSupported_ } + , globalFlowSupported{ globalFlowSupported_ } + , minWidth{ minWidth_ } + , minHeight{ minHeight_ } + , maxWidth{ maxWidth_ } + , maxHeight{ maxHeight_ } + , maxNumRegionsOfInterest{ maxNumRegionsOfInterest_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceOpticalFlowPropertiesNV( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceOpticalFlowPropertiesNV( VkPhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceOpticalFlowPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceOpticalFlowPropertiesNV & operator=( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceOpticalFlowPropertiesNV & operator=( VkPhysicalDeviceOpticalFlowPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceOpticalFlowPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpticalFlowPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpticalFlowPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceOpticalFlowPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + supportedOutputGridSizes, + supportedHintGridSizes, + hintSupported, + costSupported, + bidirectionalFlowSupported, + globalFlowSupported, + minWidth, + minHeight, + maxWidth, + maxHeight, + maxNumRegionsOfInterest ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceOpticalFlowPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedOutputGridSizes == rhs.supportedOutputGridSizes ) && + ( supportedHintGridSizes == rhs.supportedHintGridSizes ) && ( hintSupported == rhs.hintSupported ) && ( costSupported == rhs.costSupported ) && + ( bidirectionalFlowSupported == rhs.bidirectionalFlowSupported ) && ( globalFlowSupported == rhs.globalFlowSupported ) && + ( minWidth == rhs.minWidth ) && ( minHeight == rhs.minHeight ) && ( maxWidth == rhs.maxWidth ) && ( maxHeight == rhs.maxHeight ) && + ( maxNumRegionsOfInterest == rhs.maxNumRegionsOfInterest ); +# endif + } + + bool operator!=( PhysicalDeviceOpticalFlowPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceOpticalFlowPropertiesNV; + void * pNext = {}; + OpticalFlowGridSizeFlagsNV supportedOutputGridSizes = {}; + OpticalFlowGridSizeFlagsNV supportedHintGridSizes = {}; + Bool32 hintSupported = {}; + Bool32 costSupported = {}; + Bool32 bidirectionalFlowSupported = {}; + Bool32 globalFlowSupported = {}; + uint32_t minWidth = {}; + uint32_t minHeight = {}; + uint32_t maxWidth = {}; + uint32_t maxHeight = {}; + uint32_t maxNumRegionsOfInterest = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceOpticalFlowPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceOpticalFlowPropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDevicePCIBusInfoPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePCIBusInfoPropertiesEXT.html + struct PhysicalDevicePCIBusInfoPropertiesEXT + { + using NativeType = VkPhysicalDevicePCIBusInfoPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT( + uint32_t pciDomain_ = {}, uint32_t pciBus_ = {}, uint32_t pciDevice_ = {}, uint32_t pciFunction_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pciDomain{ pciDomain_ } + , pciBus{ pciBus_ } + , pciDevice{ pciDevice_ } + , pciFunction{ pciFunction_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePCIBusInfoPropertiesEXT( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePCIBusInfoPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePCIBusInfoPropertiesEXT & operator=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePCIBusInfoPropertiesEXT & operator=( VkPhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDevicePCIBusInfoPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePCIBusInfoPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePCIBusInfoPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePCIBusInfoPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pciDomain, pciBus, pciDevice, pciFunction ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePCIBusInfoPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pciDomain == rhs.pciDomain ) && ( pciBus == rhs.pciBus ) && ( pciDevice == rhs.pciDevice ) && + ( pciFunction == rhs.pciFunction ); +# endif + } + + bool operator!=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT; + void * pNext = {}; + uint32_t pciDomain = {}; + uint32_t pciBus = {}; + uint32_t pciDevice = {}; + uint32_t pciFunction = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePCIBusInfoPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePCIBusInfoPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.html + struct PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT + { + using NativeType = VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( Bool32 pageableDeviceLocalMemory_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pageableDeviceLocalMemory{ pageableDeviceLocalMemory_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & + operator=( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & operator=( VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT & setPageableDeviceLocalMemory( Bool32 pageableDeviceLocalMemory_ ) & + VULKAN_HPP_NOEXCEPT + { + pageableDeviceLocalMemory = pageableDeviceLocalMemory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT && setPageableDeviceLocalMemory( Bool32 pageableDeviceLocalMemory_ ) && + VULKAN_HPP_NOEXCEPT + { + pageableDeviceLocalMemory = pageableDeviceLocalMemory_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pageableDeviceLocalMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pageableDeviceLocalMemory == rhs.pageableDeviceLocalMemory ); +# endif + } + + bool operator!=( PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + void * pNext = {}; + Bool32 pageableDeviceLocalMemory = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV.html + struct PhysicalDevicePartitionedAccelerationStructureFeaturesNV + { + using NativeType = VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePartitionedAccelerationStructureFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePartitionedAccelerationStructureFeaturesNV( Bool32 partitionedAccelerationStructure_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , partitionedAccelerationStructure{ partitionedAccelerationStructure_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePartitionedAccelerationStructureFeaturesNV( PhysicalDevicePartitionedAccelerationStructureFeaturesNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePartitionedAccelerationStructureFeaturesNV( VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePartitionedAccelerationStructureFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePartitionedAccelerationStructureFeaturesNV & + operator=( PhysicalDevicePartitionedAccelerationStructureFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePartitionedAccelerationStructureFeaturesNV & + operator=( VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePartitionedAccelerationStructureFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePartitionedAccelerationStructureFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePartitionedAccelerationStructureFeaturesNV & + setPartitionedAccelerationStructure( Bool32 partitionedAccelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + partitionedAccelerationStructure = partitionedAccelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePartitionedAccelerationStructureFeaturesNV && + setPartitionedAccelerationStructure( Bool32 partitionedAccelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + partitionedAccelerationStructure = partitionedAccelerationStructure_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePartitionedAccelerationStructureFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, partitionedAccelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePartitionedAccelerationStructureFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDevicePartitionedAccelerationStructureFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( partitionedAccelerationStructure == rhs.partitionedAccelerationStructure ); +# endif + } + + bool operator!=( PhysicalDevicePartitionedAccelerationStructureFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePartitionedAccelerationStructureFeaturesNV; + void * pNext = {}; + Bool32 partitionedAccelerationStructure = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePartitionedAccelerationStructureFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePartitionedAccelerationStructureFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV.html + struct PhysicalDevicePartitionedAccelerationStructurePropertiesNV + { + using NativeType = VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePartitionedAccelerationStructurePropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePartitionedAccelerationStructurePropertiesNV( uint32_t maxPartitionCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxPartitionCount{ maxPartitionCount_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePartitionedAccelerationStructurePropertiesNV( PhysicalDevicePartitionedAccelerationStructurePropertiesNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePartitionedAccelerationStructurePropertiesNV( VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePartitionedAccelerationStructurePropertiesNV( + *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePartitionedAccelerationStructurePropertiesNV & + operator=( PhysicalDevicePartitionedAccelerationStructurePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePartitionedAccelerationStructurePropertiesNV & + operator=( VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePartitionedAccelerationStructurePropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxPartitionCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePartitionedAccelerationStructurePropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDevicePartitionedAccelerationStructurePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPartitionCount == rhs.maxPartitionCount ); +# endif + } + + bool operator!=( PhysicalDevicePartitionedAccelerationStructurePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePartitionedAccelerationStructurePropertiesNV; + void * pNext = {}; + uint32_t maxPartitionCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePartitionedAccelerationStructurePropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePartitionedAccelerationStructurePropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePerStageDescriptorSetFeaturesNV.html + struct PhysicalDevicePerStageDescriptorSetFeaturesNV + { + using NativeType = VkPhysicalDevicePerStageDescriptorSetFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePerStageDescriptorSetFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePerStageDescriptorSetFeaturesNV( Bool32 perStageDescriptorSet_ = {}, + Bool32 dynamicPipelineLayout_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , perStageDescriptorSet{ perStageDescriptorSet_ } + , dynamicPipelineLayout{ dynamicPipelineLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePerStageDescriptorSetFeaturesNV( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePerStageDescriptorSetFeaturesNV( VkPhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePerStageDescriptorSetFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePerStageDescriptorSetFeaturesNV & operator=( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePerStageDescriptorSetFeaturesNV & operator=( VkPhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV & setPerStageDescriptorSet( Bool32 perStageDescriptorSet_ ) & VULKAN_HPP_NOEXCEPT + { + perStageDescriptorSet = perStageDescriptorSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV && setPerStageDescriptorSet( Bool32 perStageDescriptorSet_ ) && VULKAN_HPP_NOEXCEPT + { + perStageDescriptorSet = perStageDescriptorSet_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV & setDynamicPipelineLayout( Bool32 dynamicPipelineLayout_ ) & VULKAN_HPP_NOEXCEPT + { + dynamicPipelineLayout = dynamicPipelineLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerStageDescriptorSetFeaturesNV && setDynamicPipelineLayout( Bool32 dynamicPipelineLayout_ ) && VULKAN_HPP_NOEXCEPT + { + dynamicPipelineLayout = dynamicPipelineLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerStageDescriptorSetFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, perStageDescriptorSet, dynamicPipelineLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePerStageDescriptorSetFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( perStageDescriptorSet == rhs.perStageDescriptorSet ) && + ( dynamicPipelineLayout == rhs.dynamicPipelineLayout ); +# endif + } + + bool operator!=( PhysicalDevicePerStageDescriptorSetFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePerStageDescriptorSetFeaturesNV; + void * pNext = {}; + Bool32 perStageDescriptorSet = {}; + Bool32 dynamicPipelineLayout = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePerStageDescriptorSetFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePerStageDescriptorSetFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDevicePerformanceCountersByRegionFeaturesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceCountersByRegionFeaturesARM.html + struct PhysicalDevicePerformanceCountersByRegionFeaturesARM + { + using NativeType = VkPhysicalDevicePerformanceCountersByRegionFeaturesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePerformanceCountersByRegionFeaturesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceCountersByRegionFeaturesARM( Bool32 performanceCountersByRegion_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , performanceCountersByRegion{ performanceCountersByRegion_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePerformanceCountersByRegionFeaturesARM( PhysicalDevicePerformanceCountersByRegionFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePerformanceCountersByRegionFeaturesARM( VkPhysicalDevicePerformanceCountersByRegionFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePerformanceCountersByRegionFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePerformanceCountersByRegionFeaturesARM & + operator=( PhysicalDevicePerformanceCountersByRegionFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePerformanceCountersByRegionFeaturesARM & operator=( VkPhysicalDevicePerformanceCountersByRegionFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceCountersByRegionFeaturesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceCountersByRegionFeaturesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceCountersByRegionFeaturesARM & setPerformanceCountersByRegion( Bool32 performanceCountersByRegion_ ) & + VULKAN_HPP_NOEXCEPT + { + performanceCountersByRegion = performanceCountersByRegion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceCountersByRegionFeaturesARM && setPerformanceCountersByRegion( Bool32 performanceCountersByRegion_ ) && + VULKAN_HPP_NOEXCEPT + { + performanceCountersByRegion = performanceCountersByRegion_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePerformanceCountersByRegionFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceCountersByRegionFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceCountersByRegionFeaturesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceCountersByRegionFeaturesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, performanceCountersByRegion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePerformanceCountersByRegionFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDevicePerformanceCountersByRegionFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( performanceCountersByRegion == rhs.performanceCountersByRegion ); +# endif + } + + bool operator!=( PhysicalDevicePerformanceCountersByRegionFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePerformanceCountersByRegionFeaturesARM; + void * pNext = {}; + Bool32 performanceCountersByRegion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePerformanceCountersByRegionFeaturesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePerformanceCountersByRegionFeaturesARM; + }; + + // wrapper struct for struct VkPhysicalDevicePerformanceCountersByRegionPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceCountersByRegionPropertiesARM.html + struct PhysicalDevicePerformanceCountersByRegionPropertiesARM + { + using NativeType = VkPhysicalDevicePerformanceCountersByRegionPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePerformanceCountersByRegionPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceCountersByRegionPropertiesARM( uint32_t maxPerRegionPerformanceCounters_ = {}, + Extent2D performanceCounterRegionSize_ = {}, + uint32_t rowStrideAlignment_ = {}, + uint32_t regionAlignment_ = {}, + Bool32 identityTransformOrder_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxPerRegionPerformanceCounters{ maxPerRegionPerformanceCounters_ } + , performanceCounterRegionSize{ performanceCounterRegionSize_ } + , rowStrideAlignment{ rowStrideAlignment_ } + , regionAlignment{ regionAlignment_ } + , identityTransformOrder{ identityTransformOrder_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceCountersByRegionPropertiesARM( PhysicalDevicePerformanceCountersByRegionPropertiesARM const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePerformanceCountersByRegionPropertiesARM( VkPhysicalDevicePerformanceCountersByRegionPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePerformanceCountersByRegionPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePerformanceCountersByRegionPropertiesARM & + operator=( PhysicalDevicePerformanceCountersByRegionPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePerformanceCountersByRegionPropertiesARM & + operator=( VkPhysicalDevicePerformanceCountersByRegionPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDevicePerformanceCountersByRegionPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceCountersByRegionPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceCountersByRegionPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceCountersByRegionPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, maxPerRegionPerformanceCounters, performanceCounterRegionSize, rowStrideAlignment, regionAlignment, identityTransformOrder ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePerformanceCountersByRegionPropertiesARM const & ) const = default; +#else + bool operator==( PhysicalDevicePerformanceCountersByRegionPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPerRegionPerformanceCounters == rhs.maxPerRegionPerformanceCounters ) && + ( performanceCounterRegionSize == rhs.performanceCounterRegionSize ) && ( rowStrideAlignment == rhs.rowStrideAlignment ) && + ( regionAlignment == rhs.regionAlignment ) && ( identityTransformOrder == rhs.identityTransformOrder ); +# endif + } + + bool operator!=( PhysicalDevicePerformanceCountersByRegionPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePerformanceCountersByRegionPropertiesARM; + void * pNext = {}; + uint32_t maxPerRegionPerformanceCounters = {}; + Extent2D performanceCounterRegionSize = {}; + uint32_t rowStrideAlignment = {}; + uint32_t regionAlignment = {}; + Bool32 identityTransformOrder = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePerformanceCountersByRegionPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePerformanceCountersByRegionPropertiesARM; + }; + + // wrapper struct for struct VkPhysicalDevicePerformanceQueryFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryFeaturesKHR.html + struct PhysicalDevicePerformanceQueryFeaturesKHR + { + using NativeType = VkPhysicalDevicePerformanceQueryFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR( Bool32 performanceCounterQueryPools_ = {}, + Bool32 performanceCounterMultipleQueryPools_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , performanceCounterQueryPools{ performanceCounterQueryPools_ } + , performanceCounterMultipleQueryPools{ performanceCounterMultipleQueryPools_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePerformanceQueryFeaturesKHR( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePerformanceQueryFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePerformanceQueryFeaturesKHR & operator=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePerformanceQueryFeaturesKHR & operator=( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & setPerformanceCounterQueryPools( Bool32 performanceCounterQueryPools_ ) & + VULKAN_HPP_NOEXCEPT + { + performanceCounterQueryPools = performanceCounterQueryPools_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR && setPerformanceCounterQueryPools( Bool32 performanceCounterQueryPools_ ) && + VULKAN_HPP_NOEXCEPT + { + performanceCounterQueryPools = performanceCounterQueryPools_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & + setPerformanceCounterMultipleQueryPools( Bool32 performanceCounterMultipleQueryPools_ ) & + VULKAN_HPP_NOEXCEPT + { + performanceCounterMultipleQueryPools = performanceCounterMultipleQueryPools_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR && + setPerformanceCounterMultipleQueryPools( Bool32 performanceCounterMultipleQueryPools_ ) && + VULKAN_HPP_NOEXCEPT + { + performanceCounterMultipleQueryPools = performanceCounterMultipleQueryPools_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePerformanceQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceQueryFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceQueryFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, performanceCounterQueryPools, performanceCounterMultipleQueryPools ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePerformanceQueryFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( performanceCounterQueryPools == rhs.performanceCounterQueryPools ) && + ( performanceCounterMultipleQueryPools == rhs.performanceCounterMultipleQueryPools ); +# endif + } + + bool operator!=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR; + void * pNext = {}; + Bool32 performanceCounterQueryPools = {}; + Bool32 performanceCounterMultipleQueryPools = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePerformanceQueryFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePerformanceQueryFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDevicePerformanceQueryPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePerformanceQueryPropertiesKHR.html + struct PhysicalDevicePerformanceQueryPropertiesKHR + { + using NativeType = VkPhysicalDevicePerformanceQueryPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( Bool32 allowCommandBufferQueryCopies_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , allowCommandBufferQueryCopies{ allowCommandBufferQueryCopies_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePerformanceQueryPropertiesKHR( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePerformanceQueryPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePerformanceQueryPropertiesKHR & operator=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePerformanceQueryPropertiesKHR & operator=( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDevicePerformanceQueryPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceQueryPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceQueryPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePerformanceQueryPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, allowCommandBufferQueryCopies ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePerformanceQueryPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allowCommandBufferQueryCopies == rhs.allowCommandBufferQueryCopies ); +# endif + } + + bool operator!=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR; + void * pNext = {}; + Bool32 allowCommandBufferQueryCopies = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePerformanceQueryPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePerformanceQueryPropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDevicePipelineBinaryFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryFeaturesKHR.html + struct PhysicalDevicePipelineBinaryFeaturesKHR + { + using NativeType = VkPhysicalDevicePipelineBinaryFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineBinaryFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineBinaryFeaturesKHR( Bool32 pipelineBinaries_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineBinaries{ pipelineBinaries_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineBinaryFeaturesKHR( PhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineBinaryFeaturesKHR( VkPhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineBinaryFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelineBinaryFeaturesKHR & operator=( PhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelineBinaryFeaturesKHR & operator=( VkPhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryFeaturesKHR & setPipelineBinaries( Bool32 pipelineBinaries_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineBinaries = pipelineBinaries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineBinaryFeaturesKHR && setPipelineBinaries( Bool32 pipelineBinaries_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineBinaries = pipelineBinaries_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePipelineBinaryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineBinaryFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineBinaryFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineBinaryFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineBinaries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineBinaryFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBinaries == rhs.pipelineBinaries ); +# endif + } + + bool operator!=( PhysicalDevicePipelineBinaryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelineBinaryFeaturesKHR; + void * pNext = {}; + Bool32 pipelineBinaries = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelineBinaryFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineBinaryFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDevicePipelineBinaryPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineBinaryPropertiesKHR.html + struct PhysicalDevicePipelineBinaryPropertiesKHR + { + using NativeType = VkPhysicalDevicePipelineBinaryPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineBinaryPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineBinaryPropertiesKHR( Bool32 pipelineBinaryInternalCache_ = {}, + Bool32 pipelineBinaryInternalCacheControl_ = {}, + Bool32 pipelineBinaryPrefersInternalCache_ = {}, + Bool32 pipelineBinaryPrecompiledInternalCache_ = {}, + Bool32 pipelineBinaryCompressedData_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineBinaryInternalCache{ pipelineBinaryInternalCache_ } + , pipelineBinaryInternalCacheControl{ pipelineBinaryInternalCacheControl_ } + , pipelineBinaryPrefersInternalCache{ pipelineBinaryPrefersInternalCache_ } + , pipelineBinaryPrecompiledInternalCache{ pipelineBinaryPrecompiledInternalCache_ } + , pipelineBinaryCompressedData{ pipelineBinaryCompressedData_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineBinaryPropertiesKHR( PhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineBinaryPropertiesKHR( VkPhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineBinaryPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelineBinaryPropertiesKHR & operator=( PhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelineBinaryPropertiesKHR & operator=( VkPhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDevicePipelineBinaryPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineBinaryPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineBinaryPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineBinaryPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + pipelineBinaryInternalCache, + pipelineBinaryInternalCacheControl, + pipelineBinaryPrefersInternalCache, + pipelineBinaryPrecompiledInternalCache, + pipelineBinaryCompressedData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineBinaryPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBinaryInternalCache == rhs.pipelineBinaryInternalCache ) && + ( pipelineBinaryInternalCacheControl == rhs.pipelineBinaryInternalCacheControl ) && + ( pipelineBinaryPrefersInternalCache == rhs.pipelineBinaryPrefersInternalCache ) && + ( pipelineBinaryPrecompiledInternalCache == rhs.pipelineBinaryPrecompiledInternalCache ) && + ( pipelineBinaryCompressedData == rhs.pipelineBinaryCompressedData ); +# endif + } + + bool operator!=( PhysicalDevicePipelineBinaryPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelineBinaryPropertiesKHR; + void * pNext = {}; + Bool32 pipelineBinaryInternalCache = {}; + Bool32 pipelineBinaryInternalCacheControl = {}; + Bool32 pipelineBinaryPrefersInternalCache = {}; + Bool32 pipelineBinaryPrecompiledInternalCache = {}; + Bool32 pipelineBinaryCompressedData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelineBinaryPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineBinaryPropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC.html + struct PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC + { + using NativeType = VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineCacheIncrementalModeFeaturesSEC; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC( Bool32 pipelineCacheIncrementalMode_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineCacheIncrementalMode{ pipelineCacheIncrementalMode_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC( PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC( VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC & + operator=( PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC & operator=( VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC & setPipelineCacheIncrementalMode( Bool32 pipelineCacheIncrementalMode_ ) & + VULKAN_HPP_NOEXCEPT + { + pipelineCacheIncrementalMode = pipelineCacheIncrementalMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC && setPipelineCacheIncrementalMode( Bool32 pipelineCacheIncrementalMode_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelineCacheIncrementalMode = pipelineCacheIncrementalMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineCacheIncrementalModeFeaturesSEC *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineCacheIncrementalMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineCacheIncrementalMode == rhs.pipelineCacheIncrementalMode ); +# endif + } + + bool operator!=( PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelineCacheIncrementalModeFeaturesSEC; + void * pNext = {}; + Bool32 pipelineCacheIncrementalMode = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC; + }; + + // wrapper struct for struct VkPhysicalDevicePipelineCreationCacheControlFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineCreationCacheControlFeatures.html + struct PhysicalDevicePipelineCreationCacheControlFeatures + { + using NativeType = VkPhysicalDevicePipelineCreationCacheControlFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeatures( Bool32 pipelineCreationCacheControl_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineCreationCacheControl{ pipelineCreationCacheControl_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePipelineCreationCacheControlFeatures( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineCreationCacheControlFeatures( VkPhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineCreationCacheControlFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelineCreationCacheControlFeatures & + operator=( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelineCreationCacheControlFeatures & operator=( VkPhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures & setPipelineCreationCacheControl( Bool32 pipelineCreationCacheControl_ ) & + VULKAN_HPP_NOEXCEPT + { + pipelineCreationCacheControl = pipelineCreationCacheControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeatures && setPipelineCreationCacheControl( Bool32 pipelineCreationCacheControl_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelineCreationCacheControl = pipelineCreationCacheControl_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePipelineCreationCacheControlFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineCreationCacheControlFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineCreationCacheControlFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineCreationCacheControlFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineCreationCacheControl ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineCreationCacheControlFeatures const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl ); +# endif + } + + bool operator!=( PhysicalDevicePipelineCreationCacheControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures; + void * pNext = {}; + Bool32 pipelineCreationCacheControl = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelineCreationCacheControlFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineCreationCacheControlFeatures; + }; + + using PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeatures; + + // wrapper struct for struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR.html + struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR + { + using NativeType = VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( Bool32 pipelineExecutableInfo_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineExecutableInfo{ pipelineExecutableInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & + operator=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & operator=( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & setPipelineExecutableInfo( Bool32 pipelineExecutableInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pipelineExecutableInfo = pipelineExecutableInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR && setPipelineExecutableInfo( Bool32 pipelineExecutableInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelineExecutableInfo = pipelineExecutableInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineExecutableInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineExecutableInfo == rhs.pipelineExecutableInfo ); +# endif + } + + bool operator!=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + void * pNext = {}; + Bool32 pipelineExecutableInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.html + struct PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT + { + using NativeType = VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( Bool32 pipelineLibraryGroupHandles_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineLibraryGroupHandles{ pipelineLibraryGroupHandles_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT & + operator=( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT & operator=( VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT & setPipelineLibraryGroupHandles( Bool32 pipelineLibraryGroupHandles_ ) & + VULKAN_HPP_NOEXCEPT + { + pipelineLibraryGroupHandles = pipelineLibraryGroupHandles_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT && setPipelineLibraryGroupHandles( Bool32 pipelineLibraryGroupHandles_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelineLibraryGroupHandles = pipelineLibraryGroupHandles_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineLibraryGroupHandles ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineLibraryGroupHandles == rhs.pipelineLibraryGroupHandles ); +# endif + } + + bool operator!=( PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT; + void * pNext = {}; + Bool32 pipelineLibraryGroupHandles = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDevicePipelineOpacityMicromapFeaturesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineOpacityMicromapFeaturesARM.html + struct PhysicalDevicePipelineOpacityMicromapFeaturesARM + { + using NativeType = VkPhysicalDevicePipelineOpacityMicromapFeaturesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineOpacityMicromapFeaturesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineOpacityMicromapFeaturesARM( Bool32 pipelineOpacityMicromap_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineOpacityMicromap{ pipelineOpacityMicromap_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePipelineOpacityMicromapFeaturesARM( PhysicalDevicePipelineOpacityMicromapFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineOpacityMicromapFeaturesARM( VkPhysicalDevicePipelineOpacityMicromapFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineOpacityMicromapFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelineOpacityMicromapFeaturesARM & operator=( PhysicalDevicePipelineOpacityMicromapFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelineOpacityMicromapFeaturesARM & operator=( VkPhysicalDevicePipelineOpacityMicromapFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineOpacityMicromapFeaturesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineOpacityMicromapFeaturesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineOpacityMicromapFeaturesARM & setPipelineOpacityMicromap( Bool32 pipelineOpacityMicromap_ ) & + VULKAN_HPP_NOEXCEPT + { + pipelineOpacityMicromap = pipelineOpacityMicromap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineOpacityMicromapFeaturesARM && setPipelineOpacityMicromap( Bool32 pipelineOpacityMicromap_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelineOpacityMicromap = pipelineOpacityMicromap_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePipelineOpacityMicromapFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineOpacityMicromapFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineOpacityMicromapFeaturesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineOpacityMicromapFeaturesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineOpacityMicromap ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineOpacityMicromapFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineOpacityMicromapFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineOpacityMicromap == rhs.pipelineOpacityMicromap ); +# endif + } + + bool operator!=( PhysicalDevicePipelineOpacityMicromapFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelineOpacityMicromapFeaturesARM; + void * pNext = {}; + Bool32 pipelineOpacityMicromap = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelineOpacityMicromapFeaturesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineOpacityMicromapFeaturesARM; + }; + + // wrapper struct for struct VkPhysicalDevicePipelinePropertiesFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelinePropertiesFeaturesEXT.html + struct PhysicalDevicePipelinePropertiesFeaturesEXT + { + using NativeType = VkPhysicalDevicePipelinePropertiesFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelinePropertiesFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelinePropertiesFeaturesEXT( Bool32 pipelinePropertiesIdentifier_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelinePropertiesIdentifier{ pipelinePropertiesIdentifier_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelinePropertiesFeaturesEXT( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelinePropertiesFeaturesEXT( VkPhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelinePropertiesFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelinePropertiesFeaturesEXT & operator=( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelinePropertiesFeaturesEXT & operator=( VkPhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelinePropertiesFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelinePropertiesFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelinePropertiesFeaturesEXT & setPipelinePropertiesIdentifier( Bool32 pipelinePropertiesIdentifier_ ) & + VULKAN_HPP_NOEXCEPT + { + pipelinePropertiesIdentifier = pipelinePropertiesIdentifier_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelinePropertiesFeaturesEXT && setPipelinePropertiesIdentifier( Bool32 pipelinePropertiesIdentifier_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelinePropertiesIdentifier = pipelinePropertiesIdentifier_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePipelinePropertiesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelinePropertiesFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelinePropertiesFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelinePropertiesFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelinePropertiesIdentifier ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelinePropertiesFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelinePropertiesIdentifier == rhs.pipelinePropertiesIdentifier ); +# endif + } + + bool operator!=( PhysicalDevicePipelinePropertiesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelinePropertiesFeaturesEXT; + void * pNext = {}; + Bool32 pipelinePropertiesIdentifier = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelinePropertiesFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelinePropertiesFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDevicePipelineProtectedAccessFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineProtectedAccessFeatures.html + struct PhysicalDevicePipelineProtectedAccessFeatures + { + using NativeType = VkPhysicalDevicePipelineProtectedAccessFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineProtectedAccessFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineProtectedAccessFeatures( Bool32 pipelineProtectedAccess_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineProtectedAccess{ pipelineProtectedAccess_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePipelineProtectedAccessFeatures( PhysicalDevicePipelineProtectedAccessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineProtectedAccessFeatures( VkPhysicalDevicePipelineProtectedAccessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineProtectedAccessFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelineProtectedAccessFeatures & operator=( PhysicalDevicePipelineProtectedAccessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelineProtectedAccessFeatures & operator=( VkPhysicalDevicePipelineProtectedAccessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineProtectedAccessFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineProtectedAccessFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineProtectedAccessFeatures & setPipelineProtectedAccess( Bool32 pipelineProtectedAccess_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineProtectedAccess = pipelineProtectedAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineProtectedAccessFeatures && setPipelineProtectedAccess( Bool32 pipelineProtectedAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelineProtectedAccess = pipelineProtectedAccess_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePipelineProtectedAccessFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineProtectedAccessFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineProtectedAccessFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineProtectedAccessFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineProtectedAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineProtectedAccessFeatures const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineProtectedAccessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineProtectedAccess == rhs.pipelineProtectedAccess ); +# endif + } + + bool operator!=( PhysicalDevicePipelineProtectedAccessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelineProtectedAccessFeatures; + void * pNext = {}; + Bool32 pipelineProtectedAccess = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelineProtectedAccessFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineProtectedAccessFeatures; + }; + + using PhysicalDevicePipelineProtectedAccessFeaturesEXT = PhysicalDevicePipelineProtectedAccessFeatures; + + // wrapper struct for struct VkPhysicalDevicePipelineRobustnessFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessFeatures.html + struct PhysicalDevicePipelineRobustnessFeatures + { + using NativeType = VkPhysicalDevicePipelineRobustnessFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineRobustnessFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineRobustnessFeatures( Bool32 pipelineRobustness_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineRobustness{ pipelineRobustness_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineRobustnessFeatures( PhysicalDevicePipelineRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineRobustnessFeatures( VkPhysicalDevicePipelineRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineRobustnessFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelineRobustnessFeatures & operator=( PhysicalDevicePipelineRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelineRobustnessFeatures & operator=( VkPhysicalDevicePipelineRobustnessFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineRobustnessFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineRobustnessFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineRobustnessFeatures & setPipelineRobustness( Bool32 pipelineRobustness_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineRobustness = pipelineRobustness_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineRobustnessFeatures && setPipelineRobustness( Bool32 pipelineRobustness_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineRobustness = pipelineRobustness_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePipelineRobustnessFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineRobustnessFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineRobustnessFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineRobustnessFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineRobustness ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineRobustnessFeatures const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineRobustness == rhs.pipelineRobustness ); +# endif + } + + bool operator!=( PhysicalDevicePipelineRobustnessFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelineRobustnessFeatures; + void * pNext = {}; + Bool32 pipelineRobustness = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelineRobustnessFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineRobustnessFeatures; + }; + + using PhysicalDevicePipelineRobustnessFeaturesEXT = PhysicalDevicePipelineRobustnessFeatures; + + // wrapper struct for struct VkPhysicalDevicePipelineRobustnessProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePipelineRobustnessProperties.html + struct PhysicalDevicePipelineRobustnessProperties + { + using NativeType = VkPhysicalDevicePipelineRobustnessProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineRobustnessProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineRobustnessProperties( + PipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers_ = PipelineRobustnessBufferBehavior::eDeviceDefault, + PipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers_ = PipelineRobustnessBufferBehavior::eDeviceDefault, + PipelineRobustnessBufferBehavior defaultRobustnessVertexInputs_ = PipelineRobustnessBufferBehavior::eDeviceDefault, + PipelineRobustnessImageBehavior defaultRobustnessImages_ = PipelineRobustnessImageBehavior::eDeviceDefault, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , defaultRobustnessStorageBuffers{ defaultRobustnessStorageBuffers_ } + , defaultRobustnessUniformBuffers{ defaultRobustnessUniformBuffers_ } + , defaultRobustnessVertexInputs{ defaultRobustnessVertexInputs_ } + , defaultRobustnessImages{ defaultRobustnessImages_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineRobustnessProperties( PhysicalDevicePipelineRobustnessProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePipelineRobustnessProperties( VkPhysicalDevicePipelineRobustnessProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePipelineRobustnessProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePipelineRobustnessProperties & operator=( PhysicalDevicePipelineRobustnessProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePipelineRobustnessProperties & operator=( VkPhysicalDevicePipelineRobustnessProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDevicePipelineRobustnessProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineRobustnessProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineRobustnessProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePipelineRobustnessProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, defaultRobustnessStorageBuffers, defaultRobustnessUniformBuffers, defaultRobustnessVertexInputs, defaultRobustnessImages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePipelineRobustnessProperties const & ) const = default; +#else + bool operator==( PhysicalDevicePipelineRobustnessProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( defaultRobustnessStorageBuffers == rhs.defaultRobustnessStorageBuffers ) && + ( defaultRobustnessUniformBuffers == rhs.defaultRobustnessUniformBuffers ) && + ( defaultRobustnessVertexInputs == rhs.defaultRobustnessVertexInputs ) && ( defaultRobustnessImages == rhs.defaultRobustnessImages ); +# endif + } + + bool operator!=( PhysicalDevicePipelineRobustnessProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePipelineRobustnessProperties; + void * pNext = {}; + PipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers = PipelineRobustnessBufferBehavior::eDeviceDefault; + PipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers = PipelineRobustnessBufferBehavior::eDeviceDefault; + PipelineRobustnessBufferBehavior defaultRobustnessVertexInputs = PipelineRobustnessBufferBehavior::eDeviceDefault; + PipelineRobustnessImageBehavior defaultRobustnessImages = PipelineRobustnessImageBehavior::eDeviceDefault; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePipelineRobustnessProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePipelineRobustnessProperties; + }; + + using PhysicalDevicePipelineRobustnessPropertiesEXT = PhysicalDevicePipelineRobustnessProperties; + + // wrapper struct for struct VkPhysicalDevicePointClippingProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePointClippingProperties.html + struct PhysicalDevicePointClippingProperties + { + using NativeType = VkPhysicalDevicePointClippingProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePointClippingProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties( PointClippingBehavior pointClippingBehavior_ = PointClippingBehavior::eAllClipPlanes, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pointClippingBehavior{ pointClippingBehavior_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePointClippingProperties( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePointClippingProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePointClippingProperties & operator=( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePointClippingProperties & operator=( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDevicePointClippingProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePointClippingProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePointClippingProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePointClippingProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pointClippingBehavior ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePointClippingProperties const & ) const = default; +#else + bool operator==( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pointClippingBehavior == rhs.pointClippingBehavior ); +# endif + } + + bool operator!=( PhysicalDevicePointClippingProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePointClippingProperties; + void * pNext = {}; + PointClippingBehavior pointClippingBehavior = PointClippingBehavior::eAllClipPlanes; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePointClippingProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePointClippingProperties; + }; + + using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkPhysicalDevicePortabilitySubsetFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetFeaturesKHR.html + struct PhysicalDevicePortabilitySubsetFeaturesKHR + { + using NativeType = VkPhysicalDevicePortabilitySubsetFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR( Bool32 constantAlphaColorBlendFactors_ = {}, + Bool32 events_ = {}, + Bool32 imageViewFormatReinterpretation_ = {}, + Bool32 imageViewFormatSwizzle_ = {}, + Bool32 imageView2DOn3DImage_ = {}, + Bool32 multisampleArrayImage_ = {}, + Bool32 mutableComparisonSamplers_ = {}, + Bool32 pointPolygons_ = {}, + Bool32 samplerMipLodBias_ = {}, + Bool32 separateStencilMaskRef_ = {}, + Bool32 shaderSampleRateInterpolationFunctions_ = {}, + Bool32 tessellationIsolines_ = {}, + Bool32 tessellationPointMode_ = {}, + Bool32 triangleFans_ = {}, + Bool32 vertexAttributeAccessBeyondStride_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , constantAlphaColorBlendFactors{ constantAlphaColorBlendFactors_ } + , events{ events_ } + , imageViewFormatReinterpretation{ imageViewFormatReinterpretation_ } + , imageViewFormatSwizzle{ imageViewFormatSwizzle_ } + , imageView2DOn3DImage{ imageView2DOn3DImage_ } + , multisampleArrayImage{ multisampleArrayImage_ } + , mutableComparisonSamplers{ mutableComparisonSamplers_ } + , pointPolygons{ pointPolygons_ } + , samplerMipLodBias{ samplerMipLodBias_ } + , separateStencilMaskRef{ separateStencilMaskRef_ } + , shaderSampleRateInterpolationFunctions{ shaderSampleRateInterpolationFunctions_ } + , tessellationIsolines{ tessellationIsolines_ } + , tessellationPointMode{ tessellationPointMode_ } + , triangleFans{ triangleFans_ } + , vertexAttributeAccessBeyondStride{ vertexAttributeAccessBeyondStride_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePortabilitySubsetFeaturesKHR( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePortabilitySubsetFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setConstantAlphaColorBlendFactors( Bool32 constantAlphaColorBlendFactors_ ) & + VULKAN_HPP_NOEXCEPT + { + constantAlphaColorBlendFactors = constantAlphaColorBlendFactors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setConstantAlphaColorBlendFactors( Bool32 constantAlphaColorBlendFactors_ ) && + VULKAN_HPP_NOEXCEPT + { + constantAlphaColorBlendFactors = constantAlphaColorBlendFactors_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setEvents( Bool32 events_ ) & VULKAN_HPP_NOEXCEPT + { + events = events_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setEvents( Bool32 events_ ) && VULKAN_HPP_NOEXCEPT + { + events = events_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setImageViewFormatReinterpretation( Bool32 imageViewFormatReinterpretation_ ) & + VULKAN_HPP_NOEXCEPT + { + imageViewFormatReinterpretation = imageViewFormatReinterpretation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setImageViewFormatReinterpretation( Bool32 imageViewFormatReinterpretation_ ) && + VULKAN_HPP_NOEXCEPT + { + imageViewFormatReinterpretation = imageViewFormatReinterpretation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setImageViewFormatSwizzle( Bool32 imageViewFormatSwizzle_ ) & VULKAN_HPP_NOEXCEPT + { + imageViewFormatSwizzle = imageViewFormatSwizzle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setImageViewFormatSwizzle( Bool32 imageViewFormatSwizzle_ ) && VULKAN_HPP_NOEXCEPT + { + imageViewFormatSwizzle = imageViewFormatSwizzle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setImageView2DOn3DImage( Bool32 imageView2DOn3DImage_ ) & VULKAN_HPP_NOEXCEPT + { + imageView2DOn3DImage = imageView2DOn3DImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setImageView2DOn3DImage( Bool32 imageView2DOn3DImage_ ) && VULKAN_HPP_NOEXCEPT + { + imageView2DOn3DImage = imageView2DOn3DImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setMultisampleArrayImage( Bool32 multisampleArrayImage_ ) & VULKAN_HPP_NOEXCEPT + { + multisampleArrayImage = multisampleArrayImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setMultisampleArrayImage( Bool32 multisampleArrayImage_ ) && VULKAN_HPP_NOEXCEPT + { + multisampleArrayImage = multisampleArrayImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setMutableComparisonSamplers( Bool32 mutableComparisonSamplers_ ) & VULKAN_HPP_NOEXCEPT + { + mutableComparisonSamplers = mutableComparisonSamplers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setMutableComparisonSamplers( Bool32 mutableComparisonSamplers_ ) && + VULKAN_HPP_NOEXCEPT + { + mutableComparisonSamplers = mutableComparisonSamplers_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setPointPolygons( Bool32 pointPolygons_ ) & VULKAN_HPP_NOEXCEPT + { + pointPolygons = pointPolygons_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setPointPolygons( Bool32 pointPolygons_ ) && VULKAN_HPP_NOEXCEPT + { + pointPolygons = pointPolygons_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setSamplerMipLodBias( Bool32 samplerMipLodBias_ ) & VULKAN_HPP_NOEXCEPT + { + samplerMipLodBias = samplerMipLodBias_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setSamplerMipLodBias( Bool32 samplerMipLodBias_ ) && VULKAN_HPP_NOEXCEPT + { + samplerMipLodBias = samplerMipLodBias_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setSeparateStencilMaskRef( Bool32 separateStencilMaskRef_ ) & VULKAN_HPP_NOEXCEPT + { + separateStencilMaskRef = separateStencilMaskRef_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setSeparateStencilMaskRef( Bool32 separateStencilMaskRef_ ) && VULKAN_HPP_NOEXCEPT + { + separateStencilMaskRef = separateStencilMaskRef_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & + setShaderSampleRateInterpolationFunctions( Bool32 shaderSampleRateInterpolationFunctions_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSampleRateInterpolationFunctions = shaderSampleRateInterpolationFunctions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && + setShaderSampleRateInterpolationFunctions( Bool32 shaderSampleRateInterpolationFunctions_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSampleRateInterpolationFunctions = shaderSampleRateInterpolationFunctions_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setTessellationIsolines( Bool32 tessellationIsolines_ ) & VULKAN_HPP_NOEXCEPT + { + tessellationIsolines = tessellationIsolines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setTessellationIsolines( Bool32 tessellationIsolines_ ) && VULKAN_HPP_NOEXCEPT + { + tessellationIsolines = tessellationIsolines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setTessellationPointMode( Bool32 tessellationPointMode_ ) & VULKAN_HPP_NOEXCEPT + { + tessellationPointMode = tessellationPointMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setTessellationPointMode( Bool32 tessellationPointMode_ ) && VULKAN_HPP_NOEXCEPT + { + tessellationPointMode = tessellationPointMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setTriangleFans( Bool32 triangleFans_ ) & VULKAN_HPP_NOEXCEPT + { + triangleFans = triangleFans_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setTriangleFans( Bool32 triangleFans_ ) && VULKAN_HPP_NOEXCEPT + { + triangleFans = triangleFans_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & setVertexAttributeAccessBeyondStride( Bool32 vertexAttributeAccessBeyondStride_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexAttributeAccessBeyondStride = vertexAttributeAccessBeyondStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR && setVertexAttributeAccessBeyondStride( Bool32 vertexAttributeAccessBeyondStride_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexAttributeAccessBeyondStride = vertexAttributeAccessBeyondStride_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePortabilitySubsetFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePortabilitySubsetFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePortabilitySubsetFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePortabilitySubsetFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + constantAlphaColorBlendFactors, + events, + imageViewFormatReinterpretation, + imageViewFormatSwizzle, + imageView2DOn3DImage, + multisampleArrayImage, + mutableComparisonSamplers, + pointPolygons, + samplerMipLodBias, + separateStencilMaskRef, + shaderSampleRateInterpolationFunctions, + tessellationIsolines, + tessellationPointMode, + triangleFans, + vertexAttributeAccessBeyondStride ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePortabilitySubsetFeaturesKHR const & ) const = default; +# else + bool operator==( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( constantAlphaColorBlendFactors == rhs.constantAlphaColorBlendFactors ) && + ( events == rhs.events ) && ( imageViewFormatReinterpretation == rhs.imageViewFormatReinterpretation ) && + ( imageViewFormatSwizzle == rhs.imageViewFormatSwizzle ) && ( imageView2DOn3DImage == rhs.imageView2DOn3DImage ) && + ( multisampleArrayImage == rhs.multisampleArrayImage ) && ( mutableComparisonSamplers == rhs.mutableComparisonSamplers ) && + ( pointPolygons == rhs.pointPolygons ) && ( samplerMipLodBias == rhs.samplerMipLodBias ) && + ( separateStencilMaskRef == rhs.separateStencilMaskRef ) && + ( shaderSampleRateInterpolationFunctions == rhs.shaderSampleRateInterpolationFunctions ) && ( tessellationIsolines == rhs.tessellationIsolines ) && + ( tessellationPointMode == rhs.tessellationPointMode ) && ( triangleFans == rhs.triangleFans ) && + ( vertexAttributeAccessBeyondStride == rhs.vertexAttributeAccessBeyondStride ); +# endif + } + + bool operator!=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR; + void * pNext = {}; + Bool32 constantAlphaColorBlendFactors = {}; + Bool32 events = {}; + Bool32 imageViewFormatReinterpretation = {}; + Bool32 imageViewFormatSwizzle = {}; + Bool32 imageView2DOn3DImage = {}; + Bool32 multisampleArrayImage = {}; + Bool32 mutableComparisonSamplers = {}; + Bool32 pointPolygons = {}; + Bool32 samplerMipLodBias = {}; + Bool32 separateStencilMaskRef = {}; + Bool32 shaderSampleRateInterpolationFunctions = {}; + Bool32 tessellationIsolines = {}; + Bool32 tessellationPointMode = {}; + Bool32 triangleFans = {}; + Bool32 vertexAttributeAccessBeyondStride = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePortabilitySubsetFeaturesKHR; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDevicePortabilitySubsetFeaturesKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkPhysicalDevicePortabilitySubsetPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePortabilitySubsetPropertiesKHR.html + struct PhysicalDevicePortabilitySubsetPropertiesKHR + { + using NativeType = VkPhysicalDevicePortabilitySubsetPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR( uint32_t minVertexInputBindingStrideAlignment_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minVertexInputBindingStrideAlignment{ minVertexInputBindingStrideAlignment_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePortabilitySubsetPropertiesKHR( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePortabilitySubsetPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDevicePortabilitySubsetPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePortabilitySubsetPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePortabilitySubsetPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePortabilitySubsetPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minVertexInputBindingStrideAlignment ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePortabilitySubsetPropertiesKHR const & ) const = default; +# else + bool operator==( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minVertexInputBindingStrideAlignment == rhs.minVertexInputBindingStrideAlignment ); +# endif + } + + bool operator!=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR; + void * pNext = {}; + uint32_t minVertexInputBindingStrideAlignment = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePortabilitySubsetPropertiesKHR; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDevicePortabilitySubsetPropertiesKHR; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkPhysicalDevicePresentBarrierFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePresentBarrierFeaturesNV.html + struct PhysicalDevicePresentBarrierFeaturesNV + { + using NativeType = VkPhysicalDevicePresentBarrierFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePresentBarrierFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentBarrierFeaturesNV( Bool32 presentBarrier_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentBarrier{ presentBarrier_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentBarrierFeaturesNV( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentBarrierFeaturesNV( VkPhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePresentBarrierFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePresentBarrierFeaturesNV & operator=( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePresentBarrierFeaturesNV & operator=( VkPhysicalDevicePresentBarrierFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentBarrierFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentBarrierFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentBarrierFeaturesNV & setPresentBarrier( Bool32 presentBarrier_ ) & VULKAN_HPP_NOEXCEPT + { + presentBarrier = presentBarrier_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentBarrierFeaturesNV && setPresentBarrier( Bool32 presentBarrier_ ) && VULKAN_HPP_NOEXCEPT + { + presentBarrier = presentBarrier_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePresentBarrierFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentBarrierFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentBarrierFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentBarrierFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentBarrier ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePresentBarrierFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentBarrier == rhs.presentBarrier ); +# endif + } + + bool operator!=( PhysicalDevicePresentBarrierFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePresentBarrierFeaturesNV; + void * pNext = {}; + Bool32 presentBarrier = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePresentBarrierFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePresentBarrierFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDevicePresentId2FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePresentId2FeaturesKHR.html + struct PhysicalDevicePresentId2FeaturesKHR + { + using NativeType = VkPhysicalDevicePresentId2FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePresentId2FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentId2FeaturesKHR( Bool32 presentId2_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentId2{ presentId2_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentId2FeaturesKHR( PhysicalDevicePresentId2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentId2FeaturesKHR( VkPhysicalDevicePresentId2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePresentId2FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePresentId2FeaturesKHR & operator=( PhysicalDevicePresentId2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePresentId2FeaturesKHR & operator=( VkPhysicalDevicePresentId2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentId2FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentId2FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentId2FeaturesKHR & setPresentId2( Bool32 presentId2_ ) & VULKAN_HPP_NOEXCEPT + { + presentId2 = presentId2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentId2FeaturesKHR && setPresentId2( Bool32 presentId2_ ) && VULKAN_HPP_NOEXCEPT + { + presentId2 = presentId2_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePresentId2FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentId2FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentId2FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentId2FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentId2 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePresentId2FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePresentId2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentId2 == rhs.presentId2 ); +# endif + } + + bool operator!=( PhysicalDevicePresentId2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePresentId2FeaturesKHR; + void * pNext = {}; + Bool32 presentId2 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePresentId2FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePresentId2FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDevicePresentIdFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePresentIdFeaturesKHR.html + struct PhysicalDevicePresentIdFeaturesKHR + { + using NativeType = VkPhysicalDevicePresentIdFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePresentIdFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentIdFeaturesKHR( Bool32 presentId_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentId{ presentId_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentIdFeaturesKHR( PhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentIdFeaturesKHR( VkPhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePresentIdFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePresentIdFeaturesKHR & operator=( PhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePresentIdFeaturesKHR & operator=( VkPhysicalDevicePresentIdFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR & setPresentId( Bool32 presentId_ ) & VULKAN_HPP_NOEXCEPT + { + presentId = presentId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentIdFeaturesKHR && setPresentId( Bool32 presentId_ ) && VULKAN_HPP_NOEXCEPT + { + presentId = presentId_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePresentIdFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentIdFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentIdFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentIdFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentId ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePresentIdFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePresentIdFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentId == rhs.presentId ); +# endif + } + + bool operator!=( PhysicalDevicePresentIdFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePresentIdFeaturesKHR; + void * pNext = {}; + Bool32 presentId = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePresentIdFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePresentIdFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDevicePresentMeteringFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePresentMeteringFeaturesNV.html + struct PhysicalDevicePresentMeteringFeaturesNV + { + using NativeType = VkPhysicalDevicePresentMeteringFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePresentMeteringFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentMeteringFeaturesNV( Bool32 presentMetering_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentMetering{ presentMetering_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentMeteringFeaturesNV( PhysicalDevicePresentMeteringFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentMeteringFeaturesNV( VkPhysicalDevicePresentMeteringFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePresentMeteringFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePresentMeteringFeaturesNV & operator=( PhysicalDevicePresentMeteringFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePresentMeteringFeaturesNV & operator=( VkPhysicalDevicePresentMeteringFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentMeteringFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentMeteringFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentMeteringFeaturesNV & setPresentMetering( Bool32 presentMetering_ ) & VULKAN_HPP_NOEXCEPT + { + presentMetering = presentMetering_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentMeteringFeaturesNV && setPresentMetering( Bool32 presentMetering_ ) && VULKAN_HPP_NOEXCEPT + { + presentMetering = presentMetering_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePresentMeteringFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentMeteringFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentMeteringFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentMeteringFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentMetering ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePresentMeteringFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDevicePresentMeteringFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentMetering == rhs.presentMetering ); +# endif + } + + bool operator!=( PhysicalDevicePresentMeteringFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePresentMeteringFeaturesNV; + void * pNext = {}; + Bool32 presentMetering = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePresentMeteringFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePresentMeteringFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR.html + struct PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR + { + using NativeType = VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePresentModeFifoLatestReadyFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR( Bool32 presentModeFifoLatestReady_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentModeFifoLatestReady{ presentModeFifoLatestReady_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR( PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR( VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR & + operator=( PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR & operator=( VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR & setPresentModeFifoLatestReady( Bool32 presentModeFifoLatestReady_ ) & + VULKAN_HPP_NOEXCEPT + { + presentModeFifoLatestReady = presentModeFifoLatestReady_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR && setPresentModeFifoLatestReady( Bool32 presentModeFifoLatestReady_ ) && + VULKAN_HPP_NOEXCEPT + { + presentModeFifoLatestReady = presentModeFifoLatestReady_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentModeFifoLatestReady ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentModeFifoLatestReady == rhs.presentModeFifoLatestReady ); +# endif + } + + bool operator!=( PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePresentModeFifoLatestReadyFeaturesKHR; + void * pNext = {}; + Bool32 presentModeFifoLatestReady = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR; + }; + + using PhysicalDevicePresentModeFifoLatestReadyFeaturesEXT = PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR; + + // wrapper struct for struct VkPhysicalDevicePresentTimingFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePresentTimingFeaturesEXT.html + struct PhysicalDevicePresentTimingFeaturesEXT + { + using NativeType = VkPhysicalDevicePresentTimingFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePresentTimingFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentTimingFeaturesEXT( Bool32 presentTiming_ = {}, + Bool32 presentAtAbsoluteTime_ = {}, + Bool32 presentAtRelativeTime_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentTiming{ presentTiming_ } + , presentAtAbsoluteTime{ presentAtAbsoluteTime_ } + , presentAtRelativeTime{ presentAtRelativeTime_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentTimingFeaturesEXT( PhysicalDevicePresentTimingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentTimingFeaturesEXT( VkPhysicalDevicePresentTimingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePresentTimingFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePresentTimingFeaturesEXT & operator=( PhysicalDevicePresentTimingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePresentTimingFeaturesEXT & operator=( VkPhysicalDevicePresentTimingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentTimingFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentTimingFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentTimingFeaturesEXT & setPresentTiming( Bool32 presentTiming_ ) & VULKAN_HPP_NOEXCEPT + { + presentTiming = presentTiming_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentTimingFeaturesEXT && setPresentTiming( Bool32 presentTiming_ ) && VULKAN_HPP_NOEXCEPT + { + presentTiming = presentTiming_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentTimingFeaturesEXT & setPresentAtAbsoluteTime( Bool32 presentAtAbsoluteTime_ ) & VULKAN_HPP_NOEXCEPT + { + presentAtAbsoluteTime = presentAtAbsoluteTime_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentTimingFeaturesEXT && setPresentAtAbsoluteTime( Bool32 presentAtAbsoluteTime_ ) && VULKAN_HPP_NOEXCEPT + { + presentAtAbsoluteTime = presentAtAbsoluteTime_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentTimingFeaturesEXT & setPresentAtRelativeTime( Bool32 presentAtRelativeTime_ ) & VULKAN_HPP_NOEXCEPT + { + presentAtRelativeTime = presentAtRelativeTime_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentTimingFeaturesEXT && setPresentAtRelativeTime( Bool32 presentAtRelativeTime_ ) && VULKAN_HPP_NOEXCEPT + { + presentAtRelativeTime = presentAtRelativeTime_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePresentTimingFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentTimingFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentTimingFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentTimingFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentTiming, presentAtAbsoluteTime, presentAtRelativeTime ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePresentTimingFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDevicePresentTimingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentTiming == rhs.presentTiming ) && + ( presentAtAbsoluteTime == rhs.presentAtAbsoluteTime ) && ( presentAtRelativeTime == rhs.presentAtRelativeTime ); +# endif + } + + bool operator!=( PhysicalDevicePresentTimingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePresentTimingFeaturesEXT; + void * pNext = {}; + Bool32 presentTiming = {}; + Bool32 presentAtAbsoluteTime = {}; + Bool32 presentAtRelativeTime = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePresentTimingFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePresentTimingFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDevicePresentWait2FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWait2FeaturesKHR.html + struct PhysicalDevicePresentWait2FeaturesKHR + { + using NativeType = VkPhysicalDevicePresentWait2FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePresentWait2FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentWait2FeaturesKHR( Bool32 presentWait2_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentWait2{ presentWait2_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentWait2FeaturesKHR( PhysicalDevicePresentWait2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentWait2FeaturesKHR( VkPhysicalDevicePresentWait2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePresentWait2FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePresentWait2FeaturesKHR & operator=( PhysicalDevicePresentWait2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePresentWait2FeaturesKHR & operator=( VkPhysicalDevicePresentWait2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWait2FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWait2FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWait2FeaturesKHR & setPresentWait2( Bool32 presentWait2_ ) & VULKAN_HPP_NOEXCEPT + { + presentWait2 = presentWait2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWait2FeaturesKHR && setPresentWait2( Bool32 presentWait2_ ) && VULKAN_HPP_NOEXCEPT + { + presentWait2 = presentWait2_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePresentWait2FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentWait2FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentWait2FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentWait2FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentWait2 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePresentWait2FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePresentWait2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentWait2 == rhs.presentWait2 ); +# endif + } + + bool operator!=( PhysicalDevicePresentWait2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePresentWait2FeaturesKHR; + void * pNext = {}; + Bool32 presentWait2 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePresentWait2FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePresentWait2FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDevicePresentWaitFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePresentWaitFeaturesKHR.html + struct PhysicalDevicePresentWaitFeaturesKHR + { + using NativeType = VkPhysicalDevicePresentWaitFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePresentWaitFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentWaitFeaturesKHR( Bool32 presentWait_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentWait{ presentWait_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePresentWaitFeaturesKHR( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePresentWaitFeaturesKHR( VkPhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePresentWaitFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePresentWaitFeaturesKHR & operator=( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePresentWaitFeaturesKHR & operator=( VkPhysicalDevicePresentWaitFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR & setPresentWait( Bool32 presentWait_ ) & VULKAN_HPP_NOEXCEPT + { + presentWait = presentWait_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePresentWaitFeaturesKHR && setPresentWait( Bool32 presentWait_ ) && VULKAN_HPP_NOEXCEPT + { + presentWait = presentWait_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePresentWaitFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentWaitFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentWaitFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePresentWaitFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentWait ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePresentWaitFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentWait == rhs.presentWait ); +# endif + } + + bool operator!=( PhysicalDevicePresentWaitFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePresentWaitFeaturesKHR; + void * pNext = {}; + Bool32 presentWait = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePresentWaitFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePresentWaitFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.html + struct PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT + { + using NativeType = VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( Bool32 primitiveTopologyListRestart_ = {}, + Bool32 primitiveTopologyPatchListRestart_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , primitiveTopologyListRestart{ primitiveTopologyListRestart_ } + , primitiveTopologyPatchListRestart{ primitiveTopologyPatchListRestart_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & + operator=( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & operator=( VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & setPrimitiveTopologyListRestart( Bool32 primitiveTopologyListRestart_ ) & + VULKAN_HPP_NOEXCEPT + { + primitiveTopologyListRestart = primitiveTopologyListRestart_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT && setPrimitiveTopologyListRestart( Bool32 primitiveTopologyListRestart_ ) && + VULKAN_HPP_NOEXCEPT + { + primitiveTopologyListRestart = primitiveTopologyListRestart_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT & + setPrimitiveTopologyPatchListRestart( Bool32 primitiveTopologyPatchListRestart_ ) & + VULKAN_HPP_NOEXCEPT + { + primitiveTopologyPatchListRestart = primitiveTopologyPatchListRestart_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT && + setPrimitiveTopologyPatchListRestart( Bool32 primitiveTopologyPatchListRestart_ ) && + VULKAN_HPP_NOEXCEPT + { + primitiveTopologyPatchListRestart = primitiveTopologyPatchListRestart_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, primitiveTopologyListRestart, primitiveTopologyPatchListRestart ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( primitiveTopologyListRestart == rhs.primitiveTopologyListRestart ) && + ( primitiveTopologyPatchListRestart == rhs.primitiveTopologyPatchListRestart ); +# endif + } + + bool operator!=( PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + void * pNext = {}; + Bool32 primitiveTopologyListRestart = {}; + Bool32 primitiveTopologyPatchListRestart = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.html + struct PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT + { + using NativeType = VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePrimitivesGeneratedQueryFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( Bool32 primitivesGeneratedQuery_ = {}, + Bool32 primitivesGeneratedQueryWithRasterizerDiscard_ = {}, + Bool32 primitivesGeneratedQueryWithNonZeroStreams_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , primitivesGeneratedQuery{ primitivesGeneratedQuery_ } + , primitivesGeneratedQueryWithRasterizerDiscard{ primitivesGeneratedQueryWithRasterizerDiscard_ } + , primitivesGeneratedQueryWithNonZeroStreams{ primitivesGeneratedQueryWithNonZeroStreams_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT & + operator=( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT & operator=( VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT & setPrimitivesGeneratedQuery( Bool32 primitivesGeneratedQuery_ ) & + VULKAN_HPP_NOEXCEPT + { + primitivesGeneratedQuery = primitivesGeneratedQuery_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT && setPrimitivesGeneratedQuery( Bool32 primitivesGeneratedQuery_ ) && + VULKAN_HPP_NOEXCEPT + { + primitivesGeneratedQuery = primitivesGeneratedQuery_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT & + setPrimitivesGeneratedQueryWithRasterizerDiscard( Bool32 primitivesGeneratedQueryWithRasterizerDiscard_ ) & + VULKAN_HPP_NOEXCEPT + { + primitivesGeneratedQueryWithRasterizerDiscard = primitivesGeneratedQueryWithRasterizerDiscard_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT && + setPrimitivesGeneratedQueryWithRasterizerDiscard( Bool32 primitivesGeneratedQueryWithRasterizerDiscard_ ) && + VULKAN_HPP_NOEXCEPT + { + primitivesGeneratedQueryWithRasterizerDiscard = primitivesGeneratedQueryWithRasterizerDiscard_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT & + setPrimitivesGeneratedQueryWithNonZeroStreams( Bool32 primitivesGeneratedQueryWithNonZeroStreams_ ) & + VULKAN_HPP_NOEXCEPT + { + primitivesGeneratedQueryWithNonZeroStreams = primitivesGeneratedQueryWithNonZeroStreams_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT && + setPrimitivesGeneratedQueryWithNonZeroStreams( Bool32 primitivesGeneratedQueryWithNonZeroStreams_ ) && + VULKAN_HPP_NOEXCEPT + { + primitivesGeneratedQueryWithNonZeroStreams = primitivesGeneratedQueryWithNonZeroStreams_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, primitivesGeneratedQuery, primitivesGeneratedQueryWithRasterizerDiscard, primitivesGeneratedQueryWithNonZeroStreams ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( primitivesGeneratedQuery == rhs.primitivesGeneratedQuery ) && + ( primitivesGeneratedQueryWithRasterizerDiscard == rhs.primitivesGeneratedQueryWithRasterizerDiscard ) && + ( primitivesGeneratedQueryWithNonZeroStreams == rhs.primitivesGeneratedQueryWithNonZeroStreams ); +# endif + } + + bool operator!=( PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePrimitivesGeneratedQueryFeaturesEXT; + void * pNext = {}; + Bool32 primitivesGeneratedQuery = {}; + Bool32 primitivesGeneratedQueryWithRasterizerDiscard = {}; + Bool32 primitivesGeneratedQueryWithNonZeroStreams = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDevicePrivateDataFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePrivateDataFeatures.html + struct PhysicalDevicePrivateDataFeatures + { + using NativeType = VkPhysicalDevicePrivateDataFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePrivateDataFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeatures( Bool32 privateData_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , privateData{ privateData_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeatures( PhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePrivateDataFeatures( VkPhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePrivateDataFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePrivateDataFeatures & operator=( PhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePrivateDataFeatures & operator=( VkPhysicalDevicePrivateDataFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures & setPrivateData( Bool32 privateData_ ) & VULKAN_HPP_NOEXCEPT + { + privateData = privateData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeatures && setPrivateData( Bool32 privateData_ ) && VULKAN_HPP_NOEXCEPT + { + privateData = privateData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePrivateDataFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePrivateDataFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePrivateDataFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePrivateDataFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, privateData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePrivateDataFeatures const & ) const = default; +#else + bool operator==( PhysicalDevicePrivateDataFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( privateData == rhs.privateData ); +# endif + } + + bool operator!=( PhysicalDevicePrivateDataFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePrivateDataFeatures; + void * pNext = {}; + Bool32 privateData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePrivateDataFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePrivateDataFeatures; + }; + + using PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures; + + // wrapper struct for struct VkPhysicalDeviceProtectedMemoryFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryFeatures.html + struct PhysicalDeviceProtectedMemoryFeatures + { + using NativeType = VkPhysicalDeviceProtectedMemoryFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProtectedMemoryFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( Bool32 protectedMemory_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , protectedMemory{ protectedMemory_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProtectedMemoryFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceProtectedMemoryFeatures & operator=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceProtectedMemoryFeatures & operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & setProtectedMemory( Bool32 protectedMemory_ ) & VULKAN_HPP_NOEXCEPT + { + protectedMemory = protectedMemory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures && setProtectedMemory( Bool32 protectedMemory_ ) && VULKAN_HPP_NOEXCEPT + { + protectedMemory = protectedMemory_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceProtectedMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProtectedMemoryFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProtectedMemoryFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProtectedMemoryFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, protectedMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProtectedMemoryFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedMemory == rhs.protectedMemory ); +# endif + } + + bool operator!=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryFeatures; + void * pNext = {}; + Bool32 protectedMemory = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceProtectedMemoryFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceProtectedMemoryFeatures; + }; + + // wrapper struct for struct VkPhysicalDeviceProtectedMemoryProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceProtectedMemoryProperties.html + struct PhysicalDeviceProtectedMemoryProperties + { + using NativeType = VkPhysicalDeviceProtectedMemoryProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProtectedMemoryProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( Bool32 protectedNoFault_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , protectedNoFault{ protectedNoFault_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProtectedMemoryProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceProtectedMemoryProperties & operator=( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceProtectedMemoryProperties & operator=( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceProtectedMemoryProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProtectedMemoryProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProtectedMemoryProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProtectedMemoryProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, protectedNoFault ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProtectedMemoryProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedNoFault == rhs.protectedNoFault ); +# endif + } + + bool operator!=( PhysicalDeviceProtectedMemoryProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryProperties; + void * pNext = {}; + Bool32 protectedNoFault = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceProtectedMemoryProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceProtectedMemoryProperties; + }; + + // wrapper struct for struct VkPhysicalDeviceProvokingVertexFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexFeaturesEXT.html + struct PhysicalDeviceProvokingVertexFeaturesEXT + { + using NativeType = VkPhysicalDeviceProvokingVertexFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexFeaturesEXT( Bool32 provokingVertexLast_ = {}, + Bool32 transformFeedbackPreservesProvokingVertex_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , provokingVertexLast{ provokingVertexLast_ } + , transformFeedbackPreservesProvokingVertex{ transformFeedbackPreservesProvokingVertex_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexFeaturesEXT( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProvokingVertexFeaturesEXT( VkPhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProvokingVertexFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceProvokingVertexFeaturesEXT & operator=( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceProvokingVertexFeaturesEXT & operator=( VkPhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT & setProvokingVertexLast( Bool32 provokingVertexLast_ ) & VULKAN_HPP_NOEXCEPT + { + provokingVertexLast = provokingVertexLast_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT && setProvokingVertexLast( Bool32 provokingVertexLast_ ) && VULKAN_HPP_NOEXCEPT + { + provokingVertexLast = provokingVertexLast_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT & + setTransformFeedbackPreservesProvokingVertex( Bool32 transformFeedbackPreservesProvokingVertex_ ) & + VULKAN_HPP_NOEXCEPT + { + transformFeedbackPreservesProvokingVertex = transformFeedbackPreservesProvokingVertex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProvokingVertexFeaturesEXT && + setTransformFeedbackPreservesProvokingVertex( Bool32 transformFeedbackPreservesProvokingVertex_ ) && + VULKAN_HPP_NOEXCEPT + { + transformFeedbackPreservesProvokingVertex = transformFeedbackPreservesProvokingVertex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceProvokingVertexFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProvokingVertexFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProvokingVertexFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProvokingVertexFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, provokingVertexLast, transformFeedbackPreservesProvokingVertex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProvokingVertexFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexLast == rhs.provokingVertexLast ) && + ( transformFeedbackPreservesProvokingVertex == rhs.transformFeedbackPreservesProvokingVertex ); +# endif + } + + bool operator!=( PhysicalDeviceProvokingVertexFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT; + void * pNext = {}; + Bool32 provokingVertexLast = {}; + Bool32 transformFeedbackPreservesProvokingVertex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceProvokingVertexFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceProvokingVertexFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceProvokingVertexPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceProvokingVertexPropertiesEXT.html + struct PhysicalDeviceProvokingVertexPropertiesEXT + { + using NativeType = VkPhysicalDeviceProvokingVertexPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexPropertiesEXT( Bool32 provokingVertexModePerPipeline_ = {}, + Bool32 transformFeedbackPreservesTriangleFanProvokingVertex_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , provokingVertexModePerPipeline{ provokingVertexModePerPipeline_ } + , transformFeedbackPreservesTriangleFanProvokingVertex{ transformFeedbackPreservesTriangleFanProvokingVertex_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceProvokingVertexPropertiesEXT( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceProvokingVertexPropertiesEXT( VkPhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceProvokingVertexPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceProvokingVertexPropertiesEXT & operator=( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceProvokingVertexPropertiesEXT & operator=( VkPhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceProvokingVertexPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProvokingVertexPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProvokingVertexPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceProvokingVertexPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, provokingVertexModePerPipeline, transformFeedbackPreservesTriangleFanProvokingVertex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceProvokingVertexPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexModePerPipeline == rhs.provokingVertexModePerPipeline ) && + ( transformFeedbackPreservesTriangleFanProvokingVertex == rhs.transformFeedbackPreservesTriangleFanProvokingVertex ); +# endif + } + + bool operator!=( PhysicalDeviceProvokingVertexPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT; + void * pNext = {}; + Bool32 provokingVertexModePerPipeline = {}; + Bool32 transformFeedbackPreservesTriangleFanProvokingVertex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceProvokingVertexPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceProvokingVertexPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDevicePushConstantBankFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePushConstantBankFeaturesNV.html + struct PhysicalDevicePushConstantBankFeaturesNV + { + using NativeType = VkPhysicalDevicePushConstantBankFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePushConstantBankFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePushConstantBankFeaturesNV( Bool32 pushConstantBank_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pushConstantBank{ pushConstantBank_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePushConstantBankFeaturesNV( PhysicalDevicePushConstantBankFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePushConstantBankFeaturesNV( VkPhysicalDevicePushConstantBankFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePushConstantBankFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePushConstantBankFeaturesNV & operator=( PhysicalDevicePushConstantBankFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePushConstantBankFeaturesNV & operator=( VkPhysicalDevicePushConstantBankFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePushConstantBankFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePushConstantBankFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePushConstantBankFeaturesNV & setPushConstantBank( Bool32 pushConstantBank_ ) & VULKAN_HPP_NOEXCEPT + { + pushConstantBank = pushConstantBank_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePushConstantBankFeaturesNV && setPushConstantBank( Bool32 pushConstantBank_ ) && VULKAN_HPP_NOEXCEPT + { + pushConstantBank = pushConstantBank_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDevicePushConstantBankFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePushConstantBankFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePushConstantBankFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePushConstantBankFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pushConstantBank ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePushConstantBankFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDevicePushConstantBankFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pushConstantBank == rhs.pushConstantBank ); +# endif + } + + bool operator!=( PhysicalDevicePushConstantBankFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePushConstantBankFeaturesNV; + void * pNext = {}; + Bool32 pushConstantBank = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePushConstantBankFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePushConstantBankFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDevicePushConstantBankPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePushConstantBankPropertiesNV.html + struct PhysicalDevicePushConstantBankPropertiesNV + { + using NativeType = VkPhysicalDevicePushConstantBankPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePushConstantBankPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePushConstantBankPropertiesNV( uint32_t maxGraphicsPushConstantBanks_ = {}, + uint32_t maxComputePushConstantBanks_ = {}, + uint32_t maxGraphicsPushDataBanks_ = {}, + uint32_t maxComputePushDataBanks_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxGraphicsPushConstantBanks{ maxGraphicsPushConstantBanks_ } + , maxComputePushConstantBanks{ maxComputePushConstantBanks_ } + , maxGraphicsPushDataBanks{ maxGraphicsPushDataBanks_ } + , maxComputePushDataBanks{ maxComputePushDataBanks_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePushConstantBankPropertiesNV( PhysicalDevicePushConstantBankPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePushConstantBankPropertiesNV( VkPhysicalDevicePushConstantBankPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePushConstantBankPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePushConstantBankPropertiesNV & operator=( PhysicalDevicePushConstantBankPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePushConstantBankPropertiesNV & operator=( VkPhysicalDevicePushConstantBankPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDevicePushConstantBankPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePushConstantBankPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePushConstantBankPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePushConstantBankPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxGraphicsPushConstantBanks, maxComputePushConstantBanks, maxGraphicsPushDataBanks, maxComputePushDataBanks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePushConstantBankPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDevicePushConstantBankPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxGraphicsPushConstantBanks == rhs.maxGraphicsPushConstantBanks ) && + ( maxComputePushConstantBanks == rhs.maxComputePushConstantBanks ) && ( maxGraphicsPushDataBanks == rhs.maxGraphicsPushDataBanks ) && + ( maxComputePushDataBanks == rhs.maxComputePushDataBanks ); +# endif + } + + bool operator!=( PhysicalDevicePushConstantBankPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePushConstantBankPropertiesNV; + void * pNext = {}; + uint32_t maxGraphicsPushConstantBanks = {}; + uint32_t maxComputePushConstantBanks = {}; + uint32_t maxGraphicsPushDataBanks = {}; + uint32_t maxComputePushDataBanks = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePushConstantBankPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePushConstantBankPropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDevicePushDescriptorProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDevicePushDescriptorProperties.html + struct PhysicalDevicePushDescriptorProperties + { + using NativeType = VkPhysicalDevicePushDescriptorProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePushDescriptorProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorProperties( uint32_t maxPushDescriptors_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxPushDescriptors{ maxPushDescriptors_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorProperties( PhysicalDevicePushDescriptorProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDevicePushDescriptorProperties( VkPhysicalDevicePushDescriptorProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDevicePushDescriptorProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDevicePushDescriptorProperties & operator=( PhysicalDevicePushDescriptorProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDevicePushDescriptorProperties & operator=( VkPhysicalDevicePushDescriptorProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDevicePushDescriptorProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePushDescriptorProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDevicePushDescriptorProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDevicePushDescriptorProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxPushDescriptors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDevicePushDescriptorProperties const & ) const = default; +#else + bool operator==( PhysicalDevicePushDescriptorProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPushDescriptors == rhs.maxPushDescriptors ); +# endif + } + + bool operator!=( PhysicalDevicePushDescriptorProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDevicePushDescriptorProperties; + void * pNext = {}; + uint32_t maxPushDescriptors = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDevicePushDescriptorProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDevicePushDescriptorProperties; + }; + + using PhysicalDevicePushDescriptorPropertiesKHR = PhysicalDevicePushDescriptorProperties; + + // wrapper struct for struct VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM.html + struct PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM + { + using NativeType = VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM( + uint32_t queueFamilyIndex_ = {}, + PhysicalDeviceDataGraphProcessingEngineTypeARM engineType_ = PhysicalDeviceDataGraphProcessingEngineTypeARM::eDefault, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , queueFamilyIndex{ queueFamilyIndex_ } + , engineType{ engineType_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM( PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM( VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM( + *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM & + operator=( PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM & + operator=( VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM && setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM & + setEngineType( PhysicalDeviceDataGraphProcessingEngineTypeARM engineType_ ) & + VULKAN_HPP_NOEXCEPT + { + engineType = engineType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM && + setEngineType( PhysicalDeviceDataGraphProcessingEngineTypeARM engineType_ ) && + VULKAN_HPP_NOEXCEPT + { + engineType = engineType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, queueFamilyIndex, engineType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & ) const = default; +#else + bool operator==( PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) && ( engineType == rhs.engineType ); +# endif + } + + bool operator!=( PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM; + void const * pNext = {}; + uint32_t queueFamilyIndex = {}; + PhysicalDeviceDataGraphProcessingEngineTypeARM engineType = PhysicalDeviceDataGraphProcessingEngineTypeARM::eDefault; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM; + }; + + // wrapper struct for struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT.html + struct PhysicalDeviceRGBA10X6FormatsFeaturesEXT + { + using NativeType = VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRGBA10X6FormatsFeaturesEXT( Bool32 formatRgba10x6WithoutYCbCrSampler_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , formatRgba10x6WithoutYCbCrSampler{ formatRgba10x6WithoutYCbCrSampler_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRGBA10X6FormatsFeaturesEXT( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRGBA10X6FormatsFeaturesEXT( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRGBA10X6FormatsFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRGBA10X6FormatsFeaturesEXT & operator=( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRGBA10X6FormatsFeaturesEXT & operator=( VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT & setFormatRgba10x6WithoutYCbCrSampler( Bool32 formatRgba10x6WithoutYCbCrSampler_ ) & + VULKAN_HPP_NOEXCEPT + { + formatRgba10x6WithoutYCbCrSampler = formatRgba10x6WithoutYCbCrSampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRGBA10X6FormatsFeaturesEXT && setFormatRgba10x6WithoutYCbCrSampler( Bool32 formatRgba10x6WithoutYCbCrSampler_ ) && + VULKAN_HPP_NOEXCEPT + { + formatRgba10x6WithoutYCbCrSampler = formatRgba10x6WithoutYCbCrSampler_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, formatRgba10x6WithoutYCbCrSampler ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( formatRgba10x6WithoutYCbCrSampler == rhs.formatRgba10x6WithoutYCbCrSampler ); +# endif + } + + bool operator!=( PhysicalDeviceRGBA10X6FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT; + void * pNext = {}; + Bool32 formatRgba10x6WithoutYCbCrSampler = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRGBA10X6FormatsFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRGBA10X6FormatsFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.html + struct PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT + { + using NativeType = VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( Bool32 rasterizationOrderColorAttachmentAccess_ = {}, + Bool32 rasterizationOrderDepthAttachmentAccess_ = {}, + Bool32 rasterizationOrderStencilAttachmentAccess_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rasterizationOrderColorAttachmentAccess{ rasterizationOrderColorAttachmentAccess_ } + , rasterizationOrderDepthAttachmentAccess{ rasterizationOrderDepthAttachmentAccess_ } + , rasterizationOrderStencilAttachmentAccess{ rasterizationOrderStencilAttachmentAccess_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( + *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT & + operator=( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT & + operator=( VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT & + setRasterizationOrderColorAttachmentAccess( Bool32 rasterizationOrderColorAttachmentAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + rasterizationOrderColorAttachmentAccess = rasterizationOrderColorAttachmentAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT && + setRasterizationOrderColorAttachmentAccess( Bool32 rasterizationOrderColorAttachmentAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + rasterizationOrderColorAttachmentAccess = rasterizationOrderColorAttachmentAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT & + setRasterizationOrderDepthAttachmentAccess( Bool32 rasterizationOrderDepthAttachmentAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + rasterizationOrderDepthAttachmentAccess = rasterizationOrderDepthAttachmentAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT && + setRasterizationOrderDepthAttachmentAccess( Bool32 rasterizationOrderDepthAttachmentAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + rasterizationOrderDepthAttachmentAccess = rasterizationOrderDepthAttachmentAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT & + setRasterizationOrderStencilAttachmentAccess( Bool32 rasterizationOrderStencilAttachmentAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + rasterizationOrderStencilAttachmentAccess = rasterizationOrderStencilAttachmentAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT && + setRasterizationOrderStencilAttachmentAccess( Bool32 rasterizationOrderStencilAttachmentAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + rasterizationOrderStencilAttachmentAccess = rasterizationOrderStencilAttachmentAccess_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, rasterizationOrderColorAttachmentAccess, rasterizationOrderDepthAttachmentAccess, rasterizationOrderStencilAttachmentAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rasterizationOrderColorAttachmentAccess == rhs.rasterizationOrderColorAttachmentAccess ) && + ( rasterizationOrderDepthAttachmentAccess == rhs.rasterizationOrderDepthAttachmentAccess ) && + ( rasterizationOrderStencilAttachmentAccess == rhs.rasterizationOrderStencilAttachmentAccess ); +# endif + } + + bool operator!=( PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT; + void * pNext = {}; + Bool32 rasterizationOrderColorAttachmentAccess = {}; + Bool32 rasterizationOrderDepthAttachmentAccess = {}; + Bool32 rasterizationOrderStencilAttachmentAccess = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT; + }; + + using PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT; + + // wrapper struct for struct VkPhysicalDeviceRawAccessChainsFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRawAccessChainsFeaturesNV.html + struct PhysicalDeviceRawAccessChainsFeaturesNV + { + using NativeType = VkPhysicalDeviceRawAccessChainsFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRawAccessChainsFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRawAccessChainsFeaturesNV( Bool32 shaderRawAccessChains_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderRawAccessChains{ shaderRawAccessChains_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRawAccessChainsFeaturesNV( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRawAccessChainsFeaturesNV( VkPhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRawAccessChainsFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRawAccessChainsFeaturesNV & operator=( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRawAccessChainsFeaturesNV & operator=( VkPhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRawAccessChainsFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRawAccessChainsFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRawAccessChainsFeaturesNV & setShaderRawAccessChains( Bool32 shaderRawAccessChains_ ) & VULKAN_HPP_NOEXCEPT + { + shaderRawAccessChains = shaderRawAccessChains_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRawAccessChainsFeaturesNV && setShaderRawAccessChains( Bool32 shaderRawAccessChains_ ) && VULKAN_HPP_NOEXCEPT + { + shaderRawAccessChains = shaderRawAccessChains_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRawAccessChainsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRawAccessChainsFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRawAccessChainsFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRawAccessChainsFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderRawAccessChains ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRawAccessChainsFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderRawAccessChains == rhs.shaderRawAccessChains ); +# endif + } + + bool operator!=( PhysicalDeviceRawAccessChainsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRawAccessChainsFeaturesNV; + void * pNext = {}; + Bool32 shaderRawAccessChains = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRawAccessChainsFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRawAccessChainsFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceRayQueryFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayQueryFeaturesKHR.html + struct PhysicalDeviceRayQueryFeaturesKHR + { + using NativeType = VkPhysicalDeviceRayQueryFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayQueryFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayQueryFeaturesKHR( Bool32 rayQuery_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rayQuery{ rayQuery_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayQueryFeaturesKHR( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayQueryFeaturesKHR( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayQueryFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayQueryFeaturesKHR & operator=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayQueryFeaturesKHR & operator=( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & setRayQuery( Bool32 rayQuery_ ) & VULKAN_HPP_NOEXCEPT + { + rayQuery = rayQuery_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR && setRayQuery( Bool32 rayQuery_ ) && VULKAN_HPP_NOEXCEPT + { + rayQuery = rayQuery_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRayQueryFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayQueryFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayQueryFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayQueryFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayQuery ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayQueryFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayQuery == rhs.rayQuery ); +# endif + } + + bool operator!=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayQueryFeaturesKHR; + void * pNext = {}; + Bool32 rayQuery = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayQueryFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayQueryFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT.html + struct PhysicalDeviceRayTracingInvocationReorderFeaturesEXT + { + using NativeType = VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingInvocationReorderFeaturesEXT( Bool32 rayTracingInvocationReorder_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rayTracingInvocationReorder{ rayTracingInvocationReorder_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayTracingInvocationReorderFeaturesEXT( PhysicalDeviceRayTracingInvocationReorderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingInvocationReorderFeaturesEXT( VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingInvocationReorderFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingInvocationReorderFeaturesEXT & + operator=( PhysicalDeviceRayTracingInvocationReorderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingInvocationReorderFeaturesEXT & operator=( VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesEXT & setRayTracingInvocationReorder( Bool32 rayTracingInvocationReorder_ ) & + VULKAN_HPP_NOEXCEPT + { + rayTracingInvocationReorder = rayTracingInvocationReorder_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesEXT && setRayTracingInvocationReorder( Bool32 rayTracingInvocationReorder_ ) && + VULKAN_HPP_NOEXCEPT + { + rayTracingInvocationReorder = rayTracingInvocationReorder_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayTracingInvocationReorder ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingInvocationReorderFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingInvocationReorderFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingInvocationReorder == rhs.rayTracingInvocationReorder ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingInvocationReorderFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesEXT; + void * pNext = {}; + Bool32 rayTracingInvocationReorder = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingInvocationReorderFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingInvocationReorderFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV.html + struct PhysicalDeviceRayTracingInvocationReorderFeaturesNV + { + using NativeType = VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingInvocationReorderFeaturesNV( Bool32 rayTracingInvocationReorder_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rayTracingInvocationReorder{ rayTracingInvocationReorder_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayTracingInvocationReorderFeaturesNV( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingInvocationReorderFeaturesNV( VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingInvocationReorderFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingInvocationReorderFeaturesNV & + operator=( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingInvocationReorderFeaturesNV & operator=( VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesNV & setRayTracingInvocationReorder( Bool32 rayTracingInvocationReorder_ ) & + VULKAN_HPP_NOEXCEPT + { + rayTracingInvocationReorder = rayTracingInvocationReorder_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingInvocationReorderFeaturesNV && setRayTracingInvocationReorder( Bool32 rayTracingInvocationReorder_ ) && + VULKAN_HPP_NOEXCEPT + { + rayTracingInvocationReorder = rayTracingInvocationReorder_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayTracingInvocationReorder ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingInvocationReorder == rhs.rayTracingInvocationReorder ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingInvocationReorderFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesNV; + void * pNext = {}; + Bool32 rayTracingInvocationReorder = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingInvocationReorderFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingInvocationReorderFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT.html + struct PhysicalDeviceRayTracingInvocationReorderPropertiesEXT + { + using NativeType = VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingInvocationReorderPropertiesEXT( + RayTracingInvocationReorderModeEXT rayTracingInvocationReorderReorderingHint_ = RayTracingInvocationReorderModeEXT::eNone, + uint32_t maxShaderBindingTableRecordIndex_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rayTracingInvocationReorderReorderingHint{ rayTracingInvocationReorderReorderingHint_ } + , maxShaderBindingTableRecordIndex{ maxShaderBindingTableRecordIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingInvocationReorderPropertiesEXT( PhysicalDeviceRayTracingInvocationReorderPropertiesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingInvocationReorderPropertiesEXT( VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingInvocationReorderPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingInvocationReorderPropertiesEXT & + operator=( PhysicalDeviceRayTracingInvocationReorderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingInvocationReorderPropertiesEXT & + operator=( VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayTracingInvocationReorderReorderingHint, maxShaderBindingTableRecordIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingInvocationReorderPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingInvocationReorderPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( rayTracingInvocationReorderReorderingHint == rhs.rayTracingInvocationReorderReorderingHint ) && + ( maxShaderBindingTableRecordIndex == rhs.maxShaderBindingTableRecordIndex ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingInvocationReorderPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesEXT; + void * pNext = {}; + RayTracingInvocationReorderModeEXT rayTracingInvocationReorderReorderingHint = RayTracingInvocationReorderModeEXT::eNone; + uint32_t maxShaderBindingTableRecordIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingInvocationReorderPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingInvocationReorderPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV.html + struct PhysicalDeviceRayTracingInvocationReorderPropertiesNV + { + using NativeType = VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingInvocationReorderPropertiesNV( + RayTracingInvocationReorderModeEXT rayTracingInvocationReorderReorderingHint_ = RayTracingInvocationReorderModeEXT::eNone, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rayTracingInvocationReorderReorderingHint{ rayTracingInvocationReorderReorderingHint_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayTracingInvocationReorderPropertiesNV( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingInvocationReorderPropertiesNV( VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingInvocationReorderPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingInvocationReorderPropertiesNV & + operator=( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingInvocationReorderPropertiesNV & operator=( VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayTracingInvocationReorderReorderingHint ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingInvocationReorderReorderingHint == rhs.rayTracingInvocationReorderReorderingHint ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingInvocationReorderPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesNV; + void * pNext = {}; + RayTracingInvocationReorderModeEXT rayTracingInvocationReorderReorderingHint = RayTracingInvocationReorderModeEXT::eNone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingInvocationReorderPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingInvocationReorderPropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV.html + struct PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV + { + using NativeType = VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV( Bool32 spheres_ = {}, Bool32 linearSweptSpheres_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , spheres{ spheres_ } + , linearSweptSpheres{ linearSweptSpheres_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV( PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV( VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV & + operator=( PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV & operator=( VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV & setSpheres( Bool32 spheres_ ) & VULKAN_HPP_NOEXCEPT + { + spheres = spheres_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV && setSpheres( Bool32 spheres_ ) && VULKAN_HPP_NOEXCEPT + { + spheres = spheres_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV & setLinearSweptSpheres( Bool32 linearSweptSpheres_ ) & VULKAN_HPP_NOEXCEPT + { + linearSweptSpheres = linearSweptSpheres_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV && setLinearSweptSpheres( Bool32 linearSweptSpheres_ ) && VULKAN_HPP_NOEXCEPT + { + linearSweptSpheres = linearSweptSpheres_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, spheres, linearSweptSpheres ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( spheres == rhs.spheres ) && ( linearSweptSpheres == rhs.linearSweptSpheres ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV; + void * pNext = {}; + Bool32 spheres = {}; + Bool32 linearSweptSpheres = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR.html + struct PhysicalDeviceRayTracingMaintenance1FeaturesKHR + { + using NativeType = VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingMaintenance1FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMaintenance1FeaturesKHR( Bool32 rayTracingMaintenance1_ = {}, + Bool32 rayTracingPipelineTraceRaysIndirect2_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rayTracingMaintenance1{ rayTracingMaintenance1_ } + , rayTracingPipelineTraceRaysIndirect2{ rayTracingPipelineTraceRaysIndirect2_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayTracingMaintenance1FeaturesKHR( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingMaintenance1FeaturesKHR( VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingMaintenance1FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingMaintenance1FeaturesKHR & operator=( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingMaintenance1FeaturesKHR & operator=( VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR & setRayTracingMaintenance1( Bool32 rayTracingMaintenance1_ ) & VULKAN_HPP_NOEXCEPT + { + rayTracingMaintenance1 = rayTracingMaintenance1_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR && setRayTracingMaintenance1( Bool32 rayTracingMaintenance1_ ) && + VULKAN_HPP_NOEXCEPT + { + rayTracingMaintenance1 = rayTracingMaintenance1_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR & + setRayTracingPipelineTraceRaysIndirect2( Bool32 rayTracingPipelineTraceRaysIndirect2_ ) & + VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineTraceRaysIndirect2 = rayTracingPipelineTraceRaysIndirect2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMaintenance1FeaturesKHR && + setRayTracingPipelineTraceRaysIndirect2( Bool32 rayTracingPipelineTraceRaysIndirect2_ ) && + VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineTraceRaysIndirect2 = rayTracingPipelineTraceRaysIndirect2_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayTracingMaintenance1, rayTracingPipelineTraceRaysIndirect2 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingMaintenance1 == rhs.rayTracingMaintenance1 ) && + ( rayTracingPipelineTraceRaysIndirect2 == rhs.rayTracingPipelineTraceRaysIndirect2 ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingMaintenance1FeaturesKHR; + void * pNext = {}; + Bool32 rayTracingMaintenance1 = {}; + Bool32 rayTracingPipelineTraceRaysIndirect2 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingMaintenance1FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingMaintenance1FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingMotionBlurFeaturesNV.html + struct PhysicalDeviceRayTracingMotionBlurFeaturesNV + { + using NativeType = VkPhysicalDeviceRayTracingMotionBlurFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMotionBlurFeaturesNV( Bool32 rayTracingMotionBlur_ = {}, + Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rayTracingMotionBlur{ rayTracingMotionBlur_ } + , rayTracingMotionBlurPipelineTraceRaysIndirect{ rayTracingMotionBlurPipelineTraceRaysIndirect_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingMotionBlurFeaturesNV( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingMotionBlurFeaturesNV( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingMotionBlurFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingMotionBlurFeaturesNV & operator=( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingMotionBlurFeaturesNV & operator=( VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV & setRayTracingMotionBlur( Bool32 rayTracingMotionBlur_ ) & VULKAN_HPP_NOEXCEPT + { + rayTracingMotionBlur = rayTracingMotionBlur_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV && setRayTracingMotionBlur( Bool32 rayTracingMotionBlur_ ) && VULKAN_HPP_NOEXCEPT + { + rayTracingMotionBlur = rayTracingMotionBlur_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV & + setRayTracingMotionBlurPipelineTraceRaysIndirect( Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ ) & + VULKAN_HPP_NOEXCEPT + { + rayTracingMotionBlurPipelineTraceRaysIndirect = rayTracingMotionBlurPipelineTraceRaysIndirect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingMotionBlurFeaturesNV && + setRayTracingMotionBlurPipelineTraceRaysIndirect( Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect_ ) && + VULKAN_HPP_NOEXCEPT + { + rayTracingMotionBlurPipelineTraceRaysIndirect = rayTracingMotionBlurPipelineTraceRaysIndirect_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingMotionBlurFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayTracingMotionBlur, rayTracingMotionBlurPipelineTraceRaysIndirect ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingMotionBlur == rhs.rayTracingMotionBlur ) && + ( rayTracingMotionBlurPipelineTraceRaysIndirect == rhs.rayTracingMotionBlurPipelineTraceRaysIndirect ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingMotionBlurFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV; + void * pNext = {}; + Bool32 rayTracingMotionBlur = {}; + Bool32 rayTracingMotionBlurPipelineTraceRaysIndirect = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingMotionBlurFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingMotionBlurFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelineFeaturesKHR.html + struct PhysicalDeviceRayTracingPipelineFeaturesKHR + { + using NativeType = VkPhysicalDeviceRayTracingPipelineFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR( Bool32 rayTracingPipeline_ = {}, + Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_ = {}, + Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ = {}, + Bool32 rayTracingPipelineTraceRaysIndirect_ = {}, + Bool32 rayTraversalPrimitiveCulling_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rayTracingPipeline{ rayTracingPipeline_ } + , rayTracingPipelineShaderGroupHandleCaptureReplay{ rayTracingPipelineShaderGroupHandleCaptureReplay_ } + , rayTracingPipelineShaderGroupHandleCaptureReplayMixed{ rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ } + , rayTracingPipelineTraceRaysIndirect{ rayTracingPipelineTraceRaysIndirect_ } + , rayTraversalPrimitiveCulling{ rayTraversalPrimitiveCulling_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingPipelineFeaturesKHR( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingPipelineFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTracingPipeline( Bool32 rayTracingPipeline_ ) & VULKAN_HPP_NOEXCEPT + { + rayTracingPipeline = rayTracingPipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR && setRayTracingPipeline( Bool32 rayTracingPipeline_ ) && VULKAN_HPP_NOEXCEPT + { + rayTracingPipeline = rayTracingPipeline_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & + setRayTracingPipelineShaderGroupHandleCaptureReplay( Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_ ) & + VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineShaderGroupHandleCaptureReplay = rayTracingPipelineShaderGroupHandleCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR && + setRayTracingPipelineShaderGroupHandleCaptureReplay( Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_ ) && + VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineShaderGroupHandleCaptureReplay = rayTracingPipelineShaderGroupHandleCaptureReplay_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & + setRayTracingPipelineShaderGroupHandleCaptureReplayMixed( Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ ) & + VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineShaderGroupHandleCaptureReplayMixed = rayTracingPipelineShaderGroupHandleCaptureReplayMixed_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR && + setRayTracingPipelineShaderGroupHandleCaptureReplayMixed( Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ ) && + VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineShaderGroupHandleCaptureReplayMixed = rayTracingPipelineShaderGroupHandleCaptureReplayMixed_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & + setRayTracingPipelineTraceRaysIndirect( Bool32 rayTracingPipelineTraceRaysIndirect_ ) & + VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineTraceRaysIndirect = rayTracingPipelineTraceRaysIndirect_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR && + setRayTracingPipelineTraceRaysIndirect( Bool32 rayTracingPipelineTraceRaysIndirect_ ) && + VULKAN_HPP_NOEXCEPT + { + rayTracingPipelineTraceRaysIndirect = rayTracingPipelineTraceRaysIndirect_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTraversalPrimitiveCulling( Bool32 rayTraversalPrimitiveCulling_ ) & + VULKAN_HPP_NOEXCEPT + { + rayTraversalPrimitiveCulling = rayTraversalPrimitiveCulling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR && setRayTraversalPrimitiveCulling( Bool32 rayTraversalPrimitiveCulling_ ) && + VULKAN_HPP_NOEXCEPT + { + rayTraversalPrimitiveCulling = rayTraversalPrimitiveCulling_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPipelineFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + rayTracingPipeline, + rayTracingPipelineShaderGroupHandleCaptureReplay, + rayTracingPipelineShaderGroupHandleCaptureReplayMixed, + rayTracingPipelineTraceRaysIndirect, + rayTraversalPrimitiveCulling ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingPipelineFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingPipeline == rhs.rayTracingPipeline ) && + ( rayTracingPipelineShaderGroupHandleCaptureReplay == rhs.rayTracingPipelineShaderGroupHandleCaptureReplay ) && + ( rayTracingPipelineShaderGroupHandleCaptureReplayMixed == rhs.rayTracingPipelineShaderGroupHandleCaptureReplayMixed ) && + ( rayTracingPipelineTraceRaysIndirect == rhs.rayTracingPipelineTraceRaysIndirect ) && + ( rayTraversalPrimitiveCulling == rhs.rayTraversalPrimitiveCulling ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR; + void * pNext = {}; + Bool32 rayTracingPipeline = {}; + Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay = {}; + Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed = {}; + Bool32 rayTracingPipelineTraceRaysIndirect = {}; + Bool32 rayTraversalPrimitiveCulling = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPipelineFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPipelineFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPipelinePropertiesKHR.html + struct PhysicalDeviceRayTracingPipelinePropertiesKHR + { + using NativeType = VkPhysicalDeviceRayTracingPipelinePropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelinePropertiesKHR( uint32_t shaderGroupHandleSize_ = {}, + uint32_t maxRayRecursionDepth_ = {}, + uint32_t maxShaderGroupStride_ = {}, + uint32_t shaderGroupBaseAlignment_ = {}, + uint32_t shaderGroupHandleCaptureReplaySize_ = {}, + uint32_t maxRayDispatchInvocationCount_ = {}, + uint32_t shaderGroupHandleAlignment_ = {}, + uint32_t maxRayHitAttributeSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderGroupHandleSize{ shaderGroupHandleSize_ } + , maxRayRecursionDepth{ maxRayRecursionDepth_ } + , maxShaderGroupStride{ maxShaderGroupStride_ } + , shaderGroupBaseAlignment{ shaderGroupBaseAlignment_ } + , shaderGroupHandleCaptureReplaySize{ shaderGroupHandleCaptureReplaySize_ } + , maxRayDispatchInvocationCount{ maxRayDispatchInvocationCount_ } + , shaderGroupHandleAlignment{ shaderGroupHandleAlignment_ } + , maxRayHitAttributeSize{ maxRayHitAttributeSize_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayTracingPipelinePropertiesKHR( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingPipelinePropertiesKHR( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingPipelinePropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingPipelinePropertiesKHR & operator=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingPipelinePropertiesKHR & operator=( VkPhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPipelinePropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderGroupHandleSize, + maxRayRecursionDepth, + maxShaderGroupStride, + shaderGroupBaseAlignment, + shaderGroupHandleCaptureReplaySize, + maxRayDispatchInvocationCount, + shaderGroupHandleAlignment, + maxRayHitAttributeSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingPipelinePropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderGroupHandleSize == rhs.shaderGroupHandleSize ) && + ( maxRayRecursionDepth == rhs.maxRayRecursionDepth ) && ( maxShaderGroupStride == rhs.maxShaderGroupStride ) && + ( shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment ) && ( shaderGroupHandleCaptureReplaySize == rhs.shaderGroupHandleCaptureReplaySize ) && + ( maxRayDispatchInvocationCount == rhs.maxRayDispatchInvocationCount ) && ( shaderGroupHandleAlignment == rhs.shaderGroupHandleAlignment ) && + ( maxRayHitAttributeSize == rhs.maxRayHitAttributeSize ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR; + void * pNext = {}; + uint32_t shaderGroupHandleSize = {}; + uint32_t maxRayRecursionDepth = {}; + uint32_t maxShaderGroupStride = {}; + uint32_t shaderGroupBaseAlignment = {}; + uint32_t shaderGroupHandleCaptureReplaySize = {}; + uint32_t maxRayDispatchInvocationCount = {}; + uint32_t shaderGroupHandleAlignment = {}; + uint32_t maxRayHitAttributeSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPipelinePropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPipelinePropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR.html + struct PhysicalDeviceRayTracingPositionFetchFeaturesKHR + { + using NativeType = VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingPositionFetchFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPositionFetchFeaturesKHR( Bool32 rayTracingPositionFetch_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rayTracingPositionFetch{ rayTracingPositionFetch_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRayTracingPositionFetchFeaturesKHR( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingPositionFetchFeaturesKHR( VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingPositionFetchFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingPositionFetchFeaturesKHR & operator=( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingPositionFetchFeaturesKHR & operator=( VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPositionFetchFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPositionFetchFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPositionFetchFeaturesKHR & setRayTracingPositionFetch( Bool32 rayTracingPositionFetch_ ) & + VULKAN_HPP_NOEXCEPT + { + rayTracingPositionFetch = rayTracingPositionFetch_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPositionFetchFeaturesKHR && setRayTracingPositionFetch( Bool32 rayTracingPositionFetch_ ) && + VULKAN_HPP_NOEXCEPT + { + rayTracingPositionFetch = rayTracingPositionFetch_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayTracingPositionFetch ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingPositionFetch == rhs.rayTracingPositionFetch ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingPositionFetchFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingPositionFetchFeaturesKHR; + void * pNext = {}; + Bool32 rayTracingPositionFetch = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPositionFetchFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPositionFetchFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingPropertiesNV.html + struct PhysicalDeviceRayTracingPropertiesNV + { + using NativeType = VkPhysicalDeviceRayTracingPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPropertiesNV( uint32_t shaderGroupHandleSize_ = {}, + uint32_t maxRecursionDepth_ = {}, + uint32_t maxShaderGroupStride_ = {}, + uint32_t shaderGroupBaseAlignment_ = {}, + uint64_t maxGeometryCount_ = {}, + uint64_t maxInstanceCount_ = {}, + uint64_t maxTriangleCount_ = {}, + uint32_t maxDescriptorSetAccelerationStructures_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderGroupHandleSize{ shaderGroupHandleSize_ } + , maxRecursionDepth{ maxRecursionDepth_ } + , maxShaderGroupStride{ maxShaderGroupStride_ } + , shaderGroupBaseAlignment{ shaderGroupBaseAlignment_ } + , maxGeometryCount{ maxGeometryCount_ } + , maxInstanceCount{ maxInstanceCount_ } + , maxTriangleCount{ maxTriangleCount_ } + , maxDescriptorSetAccelerationStructures{ maxDescriptorSetAccelerationStructures_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPropertiesNV( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingPropertiesNV( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingPropertiesNV & operator=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingPropertiesNV & operator=( VkPhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceRayTracingPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderGroupHandleSize, + maxRecursionDepth, + maxShaderGroupStride, + shaderGroupBaseAlignment, + maxGeometryCount, + maxInstanceCount, + maxTriangleCount, + maxDescriptorSetAccelerationStructures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderGroupHandleSize == rhs.shaderGroupHandleSize ) && + ( maxRecursionDepth == rhs.maxRecursionDepth ) && ( maxShaderGroupStride == rhs.maxShaderGroupStride ) && + ( shaderGroupBaseAlignment == rhs.shaderGroupBaseAlignment ) && ( maxGeometryCount == rhs.maxGeometryCount ) && + ( maxInstanceCount == rhs.maxInstanceCount ) && ( maxTriangleCount == rhs.maxTriangleCount ) && + ( maxDescriptorSetAccelerationStructures == rhs.maxDescriptorSetAccelerationStructures ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingPropertiesNV; + void * pNext = {}; + uint32_t shaderGroupHandleSize = {}; + uint32_t maxRecursionDepth = {}; + uint32_t maxShaderGroupStride = {}; + uint32_t shaderGroupBaseAlignment = {}; + uint64_t maxGeometryCount = {}; + uint64_t maxInstanceCount = {}; + uint64_t maxTriangleCount = {}; + uint32_t maxDescriptorSetAccelerationStructures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingPropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceRayTracingValidationFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRayTracingValidationFeaturesNV.html + struct PhysicalDeviceRayTracingValidationFeaturesNV + { + using NativeType = VkPhysicalDeviceRayTracingValidationFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingValidationFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingValidationFeaturesNV( Bool32 rayTracingValidation_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rayTracingValidation{ rayTracingValidation_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingValidationFeaturesNV( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRayTracingValidationFeaturesNV( VkPhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRayTracingValidationFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRayTracingValidationFeaturesNV & operator=( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRayTracingValidationFeaturesNV & operator=( VkPhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingValidationFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingValidationFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingValidationFeaturesNV & setRayTracingValidation( Bool32 rayTracingValidation_ ) & VULKAN_HPP_NOEXCEPT + { + rayTracingValidation = rayTracingValidation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingValidationFeaturesNV && setRayTracingValidation( Bool32 rayTracingValidation_ ) && VULKAN_HPP_NOEXCEPT + { + rayTracingValidation = rayTracingValidation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRayTracingValidationFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingValidationFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingValidationFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRayTracingValidationFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rayTracingValidation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRayTracingValidationFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rayTracingValidation == rhs.rayTracingValidation ); +# endif + } + + bool operator!=( PhysicalDeviceRayTracingValidationFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRayTracingValidationFeaturesNV; + void * pNext = {}; + Bool32 rayTracingValidation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingValidationFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRayTracingValidationFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG.html + struct PhysicalDeviceRelaxedLineRasterizationFeaturesIMG + { + using NativeType = VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRelaxedLineRasterizationFeaturesIMG; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( Bool32 relaxedLineRasterization_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , relaxedLineRasterization{ relaxedLineRasterization_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRelaxedLineRasterizationFeaturesIMG( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRelaxedLineRasterizationFeaturesIMG & + operator=( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRelaxedLineRasterizationFeaturesIMG & operator=( VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRelaxedLineRasterizationFeaturesIMG & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRelaxedLineRasterizationFeaturesIMG && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRelaxedLineRasterizationFeaturesIMG & setRelaxedLineRasterization( Bool32 relaxedLineRasterization_ ) & + VULKAN_HPP_NOEXCEPT + { + relaxedLineRasterization = relaxedLineRasterization_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRelaxedLineRasterizationFeaturesIMG && setRelaxedLineRasterization( Bool32 relaxedLineRasterization_ ) && + VULKAN_HPP_NOEXCEPT + { + relaxedLineRasterization = relaxedLineRasterization_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, relaxedLineRasterization ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & ) const = default; +#else + bool operator==( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( relaxedLineRasterization == rhs.relaxedLineRasterization ); +# endif + } + + bool operator!=( PhysicalDeviceRelaxedLineRasterizationFeaturesIMG const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRelaxedLineRasterizationFeaturesIMG; + void * pNext = {}; + Bool32 relaxedLineRasterization = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRelaxedLineRasterizationFeaturesIMG; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRelaxedLineRasterizationFeaturesIMG; + }; + + // wrapper struct for struct VkPhysicalDeviceRenderPassStripedFeaturesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedFeaturesARM.html + struct PhysicalDeviceRenderPassStripedFeaturesARM + { + using NativeType = VkPhysicalDeviceRenderPassStripedFeaturesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedFeaturesARM( Bool32 renderPassStriped_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , renderPassStriped{ renderPassStriped_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedFeaturesARM( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRenderPassStripedFeaturesARM( VkPhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRenderPassStripedFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRenderPassStripedFeaturesARM & operator=( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRenderPassStripedFeaturesARM & operator=( VkPhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRenderPassStripedFeaturesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRenderPassStripedFeaturesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRenderPassStripedFeaturesARM & setRenderPassStriped( Bool32 renderPassStriped_ ) & VULKAN_HPP_NOEXCEPT + { + renderPassStriped = renderPassStriped_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRenderPassStripedFeaturesARM && setRenderPassStriped( Bool32 renderPassStriped_ ) && VULKAN_HPP_NOEXCEPT + { + renderPassStriped = renderPassStriped_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRenderPassStripedFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRenderPassStripedFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRenderPassStripedFeaturesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRenderPassStripedFeaturesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, renderPassStriped ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRenderPassStripedFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPassStriped == rhs.renderPassStriped ); +# endif + } + + bool operator!=( PhysicalDeviceRenderPassStripedFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM; + void * pNext = {}; + Bool32 renderPassStriped = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRenderPassStripedFeaturesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRenderPassStripedFeaturesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceRenderPassStripedPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRenderPassStripedPropertiesARM.html + struct PhysicalDeviceRenderPassStripedPropertiesARM + { + using NativeType = VkPhysicalDeviceRenderPassStripedPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedPropertiesARM( Extent2D renderPassStripeGranularity_ = {}, + uint32_t maxRenderPassStripes_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , renderPassStripeGranularity{ renderPassStripeGranularity_ } + , maxRenderPassStripes{ maxRenderPassStripes_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRenderPassStripedPropertiesARM( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRenderPassStripedPropertiesARM( VkPhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRenderPassStripedPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRenderPassStripedPropertiesARM & operator=( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRenderPassStripedPropertiesARM & operator=( VkPhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceRenderPassStripedPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRenderPassStripedPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRenderPassStripedPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRenderPassStripedPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, renderPassStripeGranularity, maxRenderPassStripes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRenderPassStripedPropertiesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPassStripeGranularity == rhs.renderPassStripeGranularity ) && + ( maxRenderPassStripes == rhs.maxRenderPassStripes ); +# endif + } + + bool operator!=( PhysicalDeviceRenderPassStripedPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM; + void * pNext = {}; + Extent2D renderPassStripeGranularity = {}; + uint32_t maxRenderPassStripes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRenderPassStripedPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRenderPassStripedPropertiesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV.html + struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV + { + using NativeType = VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRepresentativeFragmentTestFeaturesNV( Bool32 representativeFragmentTest_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , representativeFragmentTest{ representativeFragmentTest_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceRepresentativeFragmentTestFeaturesNV( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRepresentativeFragmentTestFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRepresentativeFragmentTestFeaturesNV & + operator=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRepresentativeFragmentTestFeaturesNV & operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV & setRepresentativeFragmentTest( Bool32 representativeFragmentTest_ ) & + VULKAN_HPP_NOEXCEPT + { + representativeFragmentTest = representativeFragmentTest_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV && setRepresentativeFragmentTest( Bool32 representativeFragmentTest_ ) && + VULKAN_HPP_NOEXCEPT + { + representativeFragmentTest = representativeFragmentTest_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, representativeFragmentTest ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( representativeFragmentTest == rhs.representativeFragmentTest ); +# endif + } + + bool operator!=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV; + void * pNext = {}; + Bool32 representativeFragmentTest = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRepresentativeFragmentTestFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRepresentativeFragmentTestFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceRobustness2FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2FeaturesKHR.html + struct PhysicalDeviceRobustness2FeaturesKHR + { + using NativeType = VkPhysicalDeviceRobustness2FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRobustness2FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesKHR( Bool32 robustBufferAccess2_ = {}, + Bool32 robustImageAccess2_ = {}, + Bool32 nullDescriptor_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , robustBufferAccess2{ robustBufferAccess2_ } + , robustImageAccess2{ robustImageAccess2_ } + , nullDescriptor{ nullDescriptor_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesKHR( PhysicalDeviceRobustness2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRobustness2FeaturesKHR( VkPhysicalDeviceRobustness2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRobustness2FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRobustness2FeaturesKHR & operator=( PhysicalDeviceRobustness2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRobustness2FeaturesKHR & operator=( VkPhysicalDeviceRobustness2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesKHR & setRobustBufferAccess2( Bool32 robustBufferAccess2_ ) & VULKAN_HPP_NOEXCEPT + { + robustBufferAccess2 = robustBufferAccess2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesKHR && setRobustBufferAccess2( Bool32 robustBufferAccess2_ ) && VULKAN_HPP_NOEXCEPT + { + robustBufferAccess2 = robustBufferAccess2_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesKHR & setRobustImageAccess2( Bool32 robustImageAccess2_ ) & VULKAN_HPP_NOEXCEPT + { + robustImageAccess2 = robustImageAccess2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesKHR && setRobustImageAccess2( Bool32 robustImageAccess2_ ) && VULKAN_HPP_NOEXCEPT + { + robustImageAccess2 = robustImageAccess2_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesKHR & setNullDescriptor( Bool32 nullDescriptor_ ) & VULKAN_HPP_NOEXCEPT + { + nullDescriptor = nullDescriptor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesKHR && setNullDescriptor( Bool32 nullDescriptor_ ) && VULKAN_HPP_NOEXCEPT + { + nullDescriptor = nullDescriptor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceRobustness2FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRobustness2FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRobustness2FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRobustness2FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, robustBufferAccess2, robustImageAccess2, nullDescriptor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRobustness2FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceRobustness2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustBufferAccess2 == rhs.robustBufferAccess2 ) && + ( robustImageAccess2 == rhs.robustImageAccess2 ) && ( nullDescriptor == rhs.nullDescriptor ); +# endif + } + + bool operator!=( PhysicalDeviceRobustness2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRobustness2FeaturesKHR; + void * pNext = {}; + Bool32 robustBufferAccess2 = {}; + Bool32 robustImageAccess2 = {}; + Bool32 nullDescriptor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRobustness2FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRobustness2FeaturesKHR; + }; + + using PhysicalDeviceRobustness2FeaturesEXT = PhysicalDeviceRobustness2FeaturesKHR; + + // wrapper struct for struct VkPhysicalDeviceRobustness2PropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceRobustness2PropertiesKHR.html + struct PhysicalDeviceRobustness2PropertiesKHR + { + using NativeType = VkPhysicalDeviceRobustness2PropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRobustness2PropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesKHR( DeviceSize robustStorageBufferAccessSizeAlignment_ = {}, + DeviceSize robustUniformBufferAccessSizeAlignment_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , robustStorageBufferAccessSizeAlignment{ robustStorageBufferAccessSizeAlignment_ } + , robustUniformBufferAccessSizeAlignment{ robustUniformBufferAccessSizeAlignment_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesKHR( PhysicalDeviceRobustness2PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceRobustness2PropertiesKHR( VkPhysicalDeviceRobustness2PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceRobustness2PropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceRobustness2PropertiesKHR & operator=( PhysicalDeviceRobustness2PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceRobustness2PropertiesKHR & operator=( VkPhysicalDeviceRobustness2PropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceRobustness2PropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRobustness2PropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRobustness2PropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceRobustness2PropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, robustStorageBufferAccessSizeAlignment, robustUniformBufferAccessSizeAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceRobustness2PropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceRobustness2PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustStorageBufferAccessSizeAlignment == rhs.robustStorageBufferAccessSizeAlignment ) && + ( robustUniformBufferAccessSizeAlignment == rhs.robustUniformBufferAccessSizeAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceRobustness2PropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceRobustness2PropertiesKHR; + void * pNext = {}; + DeviceSize robustStorageBufferAccessSizeAlignment = {}; + DeviceSize robustUniformBufferAccessSizeAlignment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceRobustness2PropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceRobustness2PropertiesKHR; + }; + + using PhysicalDeviceRobustness2PropertiesEXT = PhysicalDeviceRobustness2PropertiesKHR; + + // wrapper struct for struct VkPhysicalDeviceSampleLocationsPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSampleLocationsPropertiesEXT.html + struct PhysicalDeviceSampleLocationsPropertiesEXT + { + using NativeType = VkPhysicalDeviceSampleLocationsPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT( SampleCountFlags sampleLocationSampleCounts_ = {}, + Extent2D maxSampleLocationGridSize_ = {}, + std::array const & sampleLocationCoordinateRange_ = {}, + uint32_t sampleLocationSubPixelBits_ = {}, + Bool32 variableSampleLocations_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , sampleLocationSampleCounts{ sampleLocationSampleCounts_ } + , maxSampleLocationGridSize{ maxSampleLocationGridSize_ } + , sampleLocationCoordinateRange{ sampleLocationCoordinateRange_ } + , sampleLocationSubPixelBits{ sampleLocationSubPixelBits_ } + , variableSampleLocations{ variableSampleLocations_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSampleLocationsPropertiesEXT( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSampleLocationsPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSampleLocationsPropertiesEXT & operator=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSampleLocationsPropertiesEXT & operator=( VkPhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceSampleLocationsPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSampleLocationsPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSampleLocationsPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSampleLocationsPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &, + Bool32 const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + sampleLocationSampleCounts, + maxSampleLocationGridSize, + sampleLocationCoordinateRange, + sampleLocationSubPixelBits, + variableSampleLocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSampleLocationsPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts ) && + ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize ) && ( sampleLocationCoordinateRange == rhs.sampleLocationCoordinateRange ) && + ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits ) && ( variableSampleLocations == rhs.variableSampleLocations ); +# endif + } + + bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT; + void * pNext = {}; + SampleCountFlags sampleLocationSampleCounts = {}; + Extent2D maxSampleLocationGridSize = {}; + ArrayWrapper1D sampleLocationCoordinateRange = {}; + uint32_t sampleLocationSubPixelBits = {}; + Bool32 variableSampleLocations = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSampleLocationsPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSampleLocationsPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceSamplerFilterMinmaxProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerFilterMinmaxProperties.html + struct PhysicalDeviceSamplerFilterMinmaxProperties + { + using NativeType = VkPhysicalDeviceSamplerFilterMinmaxProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties( Bool32 filterMinmaxSingleComponentFormats_ = {}, + Bool32 filterMinmaxImageComponentMapping_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , filterMinmaxSingleComponentFormats{ filterMinmaxSingleComponentFormats_ } + , filterMinmaxImageComponentMapping{ filterMinmaxImageComponentMapping_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSamplerFilterMinmaxProperties( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSamplerFilterMinmaxProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSamplerFilterMinmaxProperties & operator=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSamplerFilterMinmaxProperties & operator=( VkPhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceSamplerFilterMinmaxProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSamplerFilterMinmaxProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSamplerFilterMinmaxProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSamplerFilterMinmaxProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, filterMinmaxSingleComponentFormats, filterMinmaxImageComponentMapping ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSamplerFilterMinmaxProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats ) && + ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping ); +# endif + } + + bool operator!=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties; + void * pNext = {}; + Bool32 filterMinmaxSingleComponentFormats = {}; + Bool32 filterMinmaxImageComponentMapping = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSamplerFilterMinmaxProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSamplerFilterMinmaxProperties; + }; + + using PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties; + + // wrapper struct for struct VkPhysicalDeviceSamplerYcbcrConversionFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSamplerYcbcrConversionFeatures.html + struct PhysicalDeviceSamplerYcbcrConversionFeatures + { + using NativeType = VkPhysicalDeviceSamplerYcbcrConversionFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( Bool32 samplerYcbcrConversion_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , samplerYcbcrConversion{ samplerYcbcrConversion_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSamplerYcbcrConversionFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ ) & VULKAN_HPP_NOEXCEPT + { + samplerYcbcrConversion = samplerYcbcrConversion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures && setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ ) && VULKAN_HPP_NOEXCEPT + { + samplerYcbcrConversion = samplerYcbcrConversion_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSamplerYcbcrConversionFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSamplerYcbcrConversionFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSamplerYcbcrConversionFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, samplerYcbcrConversion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSamplerYcbcrConversionFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion ); +# endif + } + + bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures; + void * pNext = {}; + Bool32 samplerYcbcrConversion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSamplerYcbcrConversionFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSamplerYcbcrConversionFeatures; + }; + + using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures; + + // wrapper struct for struct VkPhysicalDeviceScalarBlockLayoutFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceScalarBlockLayoutFeatures.html + struct PhysicalDeviceScalarBlockLayoutFeatures + { + using NativeType = VkPhysicalDeviceScalarBlockLayoutFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( Bool32 scalarBlockLayout_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , scalarBlockLayout{ scalarBlockLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceScalarBlockLayoutFeatures( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceScalarBlockLayoutFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceScalarBlockLayoutFeatures & operator=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceScalarBlockLayoutFeatures & operator=( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & setScalarBlockLayout( Bool32 scalarBlockLayout_ ) & VULKAN_HPP_NOEXCEPT + { + scalarBlockLayout = scalarBlockLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures && setScalarBlockLayout( Bool32 scalarBlockLayout_ ) && VULKAN_HPP_NOEXCEPT + { + scalarBlockLayout = scalarBlockLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceScalarBlockLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceScalarBlockLayoutFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceScalarBlockLayoutFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceScalarBlockLayoutFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, scalarBlockLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceScalarBlockLayoutFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( scalarBlockLayout == rhs.scalarBlockLayout ); +# endif + } + + bool operator!=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures; + void * pNext = {}; + Bool32 scalarBlockLayout = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceScalarBlockLayoutFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceScalarBlockLayoutFeatures; + }; + + using PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures; + + // wrapper struct for struct VkPhysicalDeviceSchedulingControlsFeaturesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsFeaturesARM.html + struct PhysicalDeviceSchedulingControlsFeaturesARM + { + using NativeType = VkPhysicalDeviceSchedulingControlsFeaturesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSchedulingControlsFeaturesARM( Bool32 schedulingControls_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , schedulingControls{ schedulingControls_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSchedulingControlsFeaturesARM( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSchedulingControlsFeaturesARM( VkPhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSchedulingControlsFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSchedulingControlsFeaturesARM & operator=( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSchedulingControlsFeaturesARM & operator=( VkPhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsFeaturesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsFeaturesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsFeaturesARM & setSchedulingControls( Bool32 schedulingControls_ ) & VULKAN_HPP_NOEXCEPT + { + schedulingControls = schedulingControls_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSchedulingControlsFeaturesARM && setSchedulingControls( Bool32 schedulingControls_ ) && VULKAN_HPP_NOEXCEPT + { + schedulingControls = schedulingControls_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceSchedulingControlsFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSchedulingControlsFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSchedulingControlsFeaturesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSchedulingControlsFeaturesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, schedulingControls ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSchedulingControlsFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( schedulingControls == rhs.schedulingControls ); +# endif + } + + bool operator!=( PhysicalDeviceSchedulingControlsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM; + void * pNext = {}; + Bool32 schedulingControls = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSchedulingControlsFeaturesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSchedulingControlsFeaturesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceSchedulingControlsPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSchedulingControlsPropertiesARM.html + struct PhysicalDeviceSchedulingControlsPropertiesARM + { + using NativeType = VkPhysicalDeviceSchedulingControlsPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSchedulingControlsPropertiesARM( PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , schedulingControlsFlags{ schedulingControlsFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSchedulingControlsPropertiesARM( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSchedulingControlsPropertiesARM( VkPhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSchedulingControlsPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSchedulingControlsPropertiesARM & operator=( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSchedulingControlsPropertiesARM & operator=( VkPhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceSchedulingControlsPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSchedulingControlsPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSchedulingControlsPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSchedulingControlsPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, schedulingControlsFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSchedulingControlsPropertiesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( schedulingControlsFlags == rhs.schedulingControlsFlags ); +# endif + } + + bool operator!=( PhysicalDeviceSchedulingControlsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM; + void * pNext = {}; + PhysicalDeviceSchedulingControlsFlagsARM schedulingControlsFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSchedulingControlsPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSchedulingControlsPropertiesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures.html + struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures + { + using NativeType = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures( Bool32 separateDepthStencilLayouts_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , separateDepthStencilLayouts{ separateDepthStencilLayouts_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSeparateDepthStencilLayoutsFeatures( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSeparateDepthStencilLayoutsFeatures( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSeparateDepthStencilLayoutsFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSeparateDepthStencilLayoutsFeatures & + operator=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSeparateDepthStencilLayoutsFeatures & operator=( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures & setSeparateDepthStencilLayouts( Bool32 separateDepthStencilLayouts_ ) & + VULKAN_HPP_NOEXCEPT + { + separateDepthStencilLayouts = separateDepthStencilLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures && setSeparateDepthStencilLayouts( Bool32 separateDepthStencilLayouts_ ) && + VULKAN_HPP_NOEXCEPT + { + separateDepthStencilLayouts = separateDepthStencilLayouts_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, separateDepthStencilLayouts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts ); +# endif + } + + bool operator!=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures; + void * pNext = {}; + Bool32 separateDepthStencilLayouts = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSeparateDepthStencilLayoutsFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSeparateDepthStencilLayoutsFeatures; + }; + + using PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures; + + // wrapper struct for struct VkPhysicalDeviceShader64BitIndexingFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShader64BitIndexingFeaturesEXT.html + struct PhysicalDeviceShader64BitIndexingFeaturesEXT + { + using NativeType = VkPhysicalDeviceShader64BitIndexingFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShader64BitIndexingFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShader64BitIndexingFeaturesEXT( Bool32 shader64BitIndexing_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shader64BitIndexing{ shader64BitIndexing_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShader64BitIndexingFeaturesEXT( PhysicalDeviceShader64BitIndexingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShader64BitIndexingFeaturesEXT( VkPhysicalDeviceShader64BitIndexingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShader64BitIndexingFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShader64BitIndexingFeaturesEXT & operator=( PhysicalDeviceShader64BitIndexingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShader64BitIndexingFeaturesEXT & operator=( VkPhysicalDeviceShader64BitIndexingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShader64BitIndexingFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShader64BitIndexingFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShader64BitIndexingFeaturesEXT & setShader64BitIndexing( Bool32 shader64BitIndexing_ ) & VULKAN_HPP_NOEXCEPT + { + shader64BitIndexing = shader64BitIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShader64BitIndexingFeaturesEXT && setShader64BitIndexing( Bool32 shader64BitIndexing_ ) && VULKAN_HPP_NOEXCEPT + { + shader64BitIndexing = shader64BitIndexing_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShader64BitIndexingFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShader64BitIndexingFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShader64BitIndexingFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShader64BitIndexingFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shader64BitIndexing ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShader64BitIndexingFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShader64BitIndexingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shader64BitIndexing == rhs.shader64BitIndexing ); +# endif + } + + bool operator!=( PhysicalDeviceShader64BitIndexingFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShader64BitIndexingFeaturesEXT; + void * pNext = {}; + Bool32 shader64BitIndexing = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShader64BitIndexingFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShader64BitIndexingFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderAbortFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAbortFeaturesKHR.html + struct PhysicalDeviceShaderAbortFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderAbortFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderAbortFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAbortFeaturesKHR( Bool32 shaderAbort_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderAbort{ shaderAbort_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAbortFeaturesKHR( PhysicalDeviceShaderAbortFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAbortFeaturesKHR( VkPhysicalDeviceShaderAbortFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderAbortFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderAbortFeaturesKHR & operator=( PhysicalDeviceShaderAbortFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderAbortFeaturesKHR & operator=( VkPhysicalDeviceShaderAbortFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAbortFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAbortFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAbortFeaturesKHR & setShaderAbort( Bool32 shaderAbort_ ) & VULKAN_HPP_NOEXCEPT + { + shaderAbort = shaderAbort_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAbortFeaturesKHR && setShaderAbort( Bool32 shaderAbort_ ) && VULKAN_HPP_NOEXCEPT + { + shaderAbort = shaderAbort_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderAbortFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAbortFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAbortFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAbortFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderAbort ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderAbortFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderAbortFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderAbort == rhs.shaderAbort ); +# endif + } + + bool operator!=( PhysicalDeviceShaderAbortFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderAbortFeaturesKHR; + void * pNext = {}; + Bool32 shaderAbort = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAbortFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAbortFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderAbortPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAbortPropertiesKHR.html + struct PhysicalDeviceShaderAbortPropertiesKHR + { + using NativeType = VkPhysicalDeviceShaderAbortPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderAbortPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAbortPropertiesKHR( uint64_t maxShaderAbortMessageSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxShaderAbortMessageSize{ maxShaderAbortMessageSize_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAbortPropertiesKHR( PhysicalDeviceShaderAbortPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAbortPropertiesKHR( VkPhysicalDeviceShaderAbortPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderAbortPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderAbortPropertiesKHR & operator=( PhysicalDeviceShaderAbortPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderAbortPropertiesKHR & operator=( VkPhysicalDeviceShaderAbortPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAbortPropertiesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAbortPropertiesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAbortPropertiesKHR & setMaxShaderAbortMessageSize( uint64_t maxShaderAbortMessageSize_ ) & VULKAN_HPP_NOEXCEPT + { + maxShaderAbortMessageSize = maxShaderAbortMessageSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAbortPropertiesKHR && setMaxShaderAbortMessageSize( uint64_t maxShaderAbortMessageSize_ ) && VULKAN_HPP_NOEXCEPT + { + maxShaderAbortMessageSize = maxShaderAbortMessageSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderAbortPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAbortPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAbortPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAbortPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxShaderAbortMessageSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderAbortPropertiesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderAbortPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxShaderAbortMessageSize == rhs.maxShaderAbortMessageSize ); +# endif + } + + bool operator!=( PhysicalDeviceShaderAbortPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderAbortPropertiesKHR; + void * pNext = {}; + uint64_t maxShaderAbortMessageSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAbortPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAbortPropertiesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV.html + struct PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV + { + using NativeType = VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( Bool32 shaderFloat16VectorAtomics_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderFloat16VectorAtomics{ shaderFloat16VectorAtomics_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV & + operator=( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV & operator=( VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV & setShaderFloat16VectorAtomics( Bool32 shaderFloat16VectorAtomics_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderFloat16VectorAtomics = shaderFloat16VectorAtomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV && setShaderFloat16VectorAtomics( Bool32 shaderFloat16VectorAtomics_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderFloat16VectorAtomics = shaderFloat16VectorAtomics_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicFloat16VectorFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderFloat16VectorAtomics ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloat16VectorAtomics == rhs.shaderFloat16VectorAtomics ); +# endif + } + + bool operator!=( PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV; + void * pNext = {}; + Bool32 shaderFloat16VectorAtomics = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT.html + struct PhysicalDeviceShaderAtomicFloat2FeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat2FeaturesEXT( Bool32 shaderBufferFloat16Atomics_ = {}, + Bool32 shaderBufferFloat16AtomicAdd_ = {}, + Bool32 shaderBufferFloat16AtomicMinMax_ = {}, + Bool32 shaderBufferFloat32AtomicMinMax_ = {}, + Bool32 shaderBufferFloat64AtomicMinMax_ = {}, + Bool32 shaderSharedFloat16Atomics_ = {}, + Bool32 shaderSharedFloat16AtomicAdd_ = {}, + Bool32 shaderSharedFloat16AtomicMinMax_ = {}, + Bool32 shaderSharedFloat32AtomicMinMax_ = {}, + Bool32 shaderSharedFloat64AtomicMinMax_ = {}, + Bool32 shaderImageFloat32AtomicMinMax_ = {}, + Bool32 sparseImageFloat32AtomicMinMax_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderBufferFloat16Atomics{ shaderBufferFloat16Atomics_ } + , shaderBufferFloat16AtomicAdd{ shaderBufferFloat16AtomicAdd_ } + , shaderBufferFloat16AtomicMinMax{ shaderBufferFloat16AtomicMinMax_ } + , shaderBufferFloat32AtomicMinMax{ shaderBufferFloat32AtomicMinMax_ } + , shaderBufferFloat64AtomicMinMax{ shaderBufferFloat64AtomicMinMax_ } + , shaderSharedFloat16Atomics{ shaderSharedFloat16Atomics_ } + , shaderSharedFloat16AtomicAdd{ shaderSharedFloat16AtomicAdd_ } + , shaderSharedFloat16AtomicMinMax{ shaderSharedFloat16AtomicMinMax_ } + , shaderSharedFloat32AtomicMinMax{ shaderSharedFloat32AtomicMinMax_ } + , shaderSharedFloat64AtomicMinMax{ shaderSharedFloat64AtomicMinMax_ } + , shaderImageFloat32AtomicMinMax{ shaderImageFloat32AtomicMinMax_ } + , sparseImageFloat32AtomicMinMax{ sparseImageFloat32AtomicMinMax_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloat2FeaturesEXT( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAtomicFloat2FeaturesEXT( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderAtomicFloat2FeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderAtomicFloat2FeaturesEXT & operator=( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderAtomicFloat2FeaturesEXT & operator=( VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat16Atomics( Bool32 shaderBufferFloat16Atomics_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat16Atomics = shaderBufferFloat16Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderBufferFloat16Atomics( Bool32 shaderBufferFloat16Atomics_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat16Atomics = shaderBufferFloat16Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat16AtomicAdd( Bool32 shaderBufferFloat16AtomicAdd_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat16AtomicAdd = shaderBufferFloat16AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderBufferFloat16AtomicAdd( Bool32 shaderBufferFloat16AtomicAdd_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat16AtomicAdd = shaderBufferFloat16AtomicAdd_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat16AtomicMinMax( Bool32 shaderBufferFloat16AtomicMinMax_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat16AtomicMinMax = shaderBufferFloat16AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderBufferFloat16AtomicMinMax( Bool32 shaderBufferFloat16AtomicMinMax_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat16AtomicMinMax = shaderBufferFloat16AtomicMinMax_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat32AtomicMinMax( Bool32 shaderBufferFloat32AtomicMinMax_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat32AtomicMinMax = shaderBufferFloat32AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderBufferFloat32AtomicMinMax( Bool32 shaderBufferFloat32AtomicMinMax_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat32AtomicMinMax = shaderBufferFloat32AtomicMinMax_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderBufferFloat64AtomicMinMax( Bool32 shaderBufferFloat64AtomicMinMax_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat64AtomicMinMax = shaderBufferFloat64AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderBufferFloat64AtomicMinMax( Bool32 shaderBufferFloat64AtomicMinMax_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat64AtomicMinMax = shaderBufferFloat64AtomicMinMax_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat16Atomics( Bool32 shaderSharedFloat16Atomics_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat16Atomics = shaderSharedFloat16Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderSharedFloat16Atomics( Bool32 shaderSharedFloat16Atomics_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat16Atomics = shaderSharedFloat16Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat16AtomicAdd( Bool32 shaderSharedFloat16AtomicAdd_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat16AtomicAdd = shaderSharedFloat16AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderSharedFloat16AtomicAdd( Bool32 shaderSharedFloat16AtomicAdd_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat16AtomicAdd = shaderSharedFloat16AtomicAdd_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat16AtomicMinMax( Bool32 shaderSharedFloat16AtomicMinMax_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat16AtomicMinMax = shaderSharedFloat16AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderSharedFloat16AtomicMinMax( Bool32 shaderSharedFloat16AtomicMinMax_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat16AtomicMinMax = shaderSharedFloat16AtomicMinMax_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat32AtomicMinMax( Bool32 shaderSharedFloat32AtomicMinMax_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat32AtomicMinMax = shaderSharedFloat32AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderSharedFloat32AtomicMinMax( Bool32 shaderSharedFloat32AtomicMinMax_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat32AtomicMinMax = shaderSharedFloat32AtomicMinMax_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderSharedFloat64AtomicMinMax( Bool32 shaderSharedFloat64AtomicMinMax_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat64AtomicMinMax = shaderSharedFloat64AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderSharedFloat64AtomicMinMax( Bool32 shaderSharedFloat64AtomicMinMax_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat64AtomicMinMax = shaderSharedFloat64AtomicMinMax_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setShaderImageFloat32AtomicMinMax( Bool32 shaderImageFloat32AtomicMinMax_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderImageFloat32AtomicMinMax = shaderImageFloat32AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setShaderImageFloat32AtomicMinMax( Bool32 shaderImageFloat32AtomicMinMax_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderImageFloat32AtomicMinMax = shaderImageFloat32AtomicMinMax_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT & setSparseImageFloat32AtomicMinMax( Bool32 sparseImageFloat32AtomicMinMax_ ) & + VULKAN_HPP_NOEXCEPT + { + sparseImageFloat32AtomicMinMax = sparseImageFloat32AtomicMinMax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloat2FeaturesEXT && setSparseImageFloat32AtomicMinMax( Bool32 sparseImageFloat32AtomicMinMax_ ) && + VULKAN_HPP_NOEXCEPT + { + sparseImageFloat32AtomicMinMax = sparseImageFloat32AtomicMinMax_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderBufferFloat16Atomics, + shaderBufferFloat16AtomicAdd, + shaderBufferFloat16AtomicMinMax, + shaderBufferFloat32AtomicMinMax, + shaderBufferFloat64AtomicMinMax, + shaderSharedFloat16Atomics, + shaderSharedFloat16AtomicAdd, + shaderSharedFloat16AtomicMinMax, + shaderSharedFloat32AtomicMinMax, + shaderSharedFloat64AtomicMinMax, + shaderImageFloat32AtomicMinMax, + sparseImageFloat32AtomicMinMax ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBufferFloat16Atomics == rhs.shaderBufferFloat16Atomics ) && + ( shaderBufferFloat16AtomicAdd == rhs.shaderBufferFloat16AtomicAdd ) && + ( shaderBufferFloat16AtomicMinMax == rhs.shaderBufferFloat16AtomicMinMax ) && + ( shaderBufferFloat32AtomicMinMax == rhs.shaderBufferFloat32AtomicMinMax ) && + ( shaderBufferFloat64AtomicMinMax == rhs.shaderBufferFloat64AtomicMinMax ) && ( shaderSharedFloat16Atomics == rhs.shaderSharedFloat16Atomics ) && + ( shaderSharedFloat16AtomicAdd == rhs.shaderSharedFloat16AtomicAdd ) && + ( shaderSharedFloat16AtomicMinMax == rhs.shaderSharedFloat16AtomicMinMax ) && + ( shaderSharedFloat32AtomicMinMax == rhs.shaderSharedFloat32AtomicMinMax ) && + ( shaderSharedFloat64AtomicMinMax == rhs.shaderSharedFloat64AtomicMinMax ) && + ( shaderImageFloat32AtomicMinMax == rhs.shaderImageFloat32AtomicMinMax ) && + ( sparseImageFloat32AtomicMinMax == rhs.sparseImageFloat32AtomicMinMax ); +# endif + } + + bool operator!=( PhysicalDeviceShaderAtomicFloat2FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT; + void * pNext = {}; + Bool32 shaderBufferFloat16Atomics = {}; + Bool32 shaderBufferFloat16AtomicAdd = {}; + Bool32 shaderBufferFloat16AtomicMinMax = {}; + Bool32 shaderBufferFloat32AtomicMinMax = {}; + Bool32 shaderBufferFloat64AtomicMinMax = {}; + Bool32 shaderSharedFloat16Atomics = {}; + Bool32 shaderSharedFloat16AtomicAdd = {}; + Bool32 shaderSharedFloat16AtomicMinMax = {}; + Bool32 shaderSharedFloat32AtomicMinMax = {}; + Bool32 shaderSharedFloat64AtomicMinMax = {}; + Bool32 shaderImageFloat32AtomicMinMax = {}; + Bool32 sparseImageFloat32AtomicMinMax = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicFloat2FeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicFloat2FeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicFloatFeaturesEXT.html + struct PhysicalDeviceShaderAtomicFloatFeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderAtomicFloatFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT( Bool32 shaderBufferFloat32Atomics_ = {}, + Bool32 shaderBufferFloat32AtomicAdd_ = {}, + Bool32 shaderBufferFloat64Atomics_ = {}, + Bool32 shaderBufferFloat64AtomicAdd_ = {}, + Bool32 shaderSharedFloat32Atomics_ = {}, + Bool32 shaderSharedFloat32AtomicAdd_ = {}, + Bool32 shaderSharedFloat64Atomics_ = {}, + Bool32 shaderSharedFloat64AtomicAdd_ = {}, + Bool32 shaderImageFloat32Atomics_ = {}, + Bool32 shaderImageFloat32AtomicAdd_ = {}, + Bool32 sparseImageFloat32Atomics_ = {}, + Bool32 sparseImageFloat32AtomicAdd_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderBufferFloat32Atomics{ shaderBufferFloat32Atomics_ } + , shaderBufferFloat32AtomicAdd{ shaderBufferFloat32AtomicAdd_ } + , shaderBufferFloat64Atomics{ shaderBufferFloat64Atomics_ } + , shaderBufferFloat64AtomicAdd{ shaderBufferFloat64AtomicAdd_ } + , shaderSharedFloat32Atomics{ shaderSharedFloat32Atomics_ } + , shaderSharedFloat32AtomicAdd{ shaderSharedFloat32AtomicAdd_ } + , shaderSharedFloat64Atomics{ shaderSharedFloat64Atomics_ } + , shaderSharedFloat64AtomicAdd{ shaderSharedFloat64AtomicAdd_ } + , shaderImageFloat32Atomics{ shaderImageFloat32Atomics_ } + , shaderImageFloat32AtomicAdd{ shaderImageFloat32AtomicAdd_ } + , sparseImageFloat32Atomics{ sparseImageFloat32Atomics_ } + , sparseImageFloat32AtomicAdd{ sparseImageFloat32AtomicAdd_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAtomicFloatFeaturesEXT( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderAtomicFloatFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat32Atomics( Bool32 shaderBufferFloat32Atomics_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat32Atomics = shaderBufferFloat32Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setShaderBufferFloat32Atomics( Bool32 shaderBufferFloat32Atomics_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat32Atomics = shaderBufferFloat32Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat32AtomicAdd( Bool32 shaderBufferFloat32AtomicAdd_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat32AtomicAdd = shaderBufferFloat32AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setShaderBufferFloat32AtomicAdd( Bool32 shaderBufferFloat32AtomicAdd_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat32AtomicAdd = shaderBufferFloat32AtomicAdd_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat64Atomics( Bool32 shaderBufferFloat64Atomics_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat64Atomics = shaderBufferFloat64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setShaderBufferFloat64Atomics( Bool32 shaderBufferFloat64Atomics_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat64Atomics = shaderBufferFloat64Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat64AtomicAdd( Bool32 shaderBufferFloat64AtomicAdd_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat64AtomicAdd = shaderBufferFloat64AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setShaderBufferFloat64AtomicAdd( Bool32 shaderBufferFloat64AtomicAdd_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderBufferFloat64AtomicAdd = shaderBufferFloat64AtomicAdd_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat32Atomics( Bool32 shaderSharedFloat32Atomics_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat32Atomics = shaderSharedFloat32Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setShaderSharedFloat32Atomics( Bool32 shaderSharedFloat32Atomics_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat32Atomics = shaderSharedFloat32Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat32AtomicAdd( Bool32 shaderSharedFloat32AtomicAdd_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat32AtomicAdd = shaderSharedFloat32AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setShaderSharedFloat32AtomicAdd( Bool32 shaderSharedFloat32AtomicAdd_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat32AtomicAdd = shaderSharedFloat32AtomicAdd_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat64Atomics( Bool32 shaderSharedFloat64Atomics_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat64Atomics = shaderSharedFloat64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setShaderSharedFloat64Atomics( Bool32 shaderSharedFloat64Atomics_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat64Atomics = shaderSharedFloat64Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat64AtomicAdd( Bool32 shaderSharedFloat64AtomicAdd_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat64AtomicAdd = shaderSharedFloat64AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setShaderSharedFloat64AtomicAdd( Bool32 shaderSharedFloat64AtomicAdd_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSharedFloat64AtomicAdd = shaderSharedFloat64AtomicAdd_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderImageFloat32Atomics( Bool32 shaderImageFloat32Atomics_ ) & VULKAN_HPP_NOEXCEPT + { + shaderImageFloat32Atomics = shaderImageFloat32Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setShaderImageFloat32Atomics( Bool32 shaderImageFloat32Atomics_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderImageFloat32Atomics = shaderImageFloat32Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderImageFloat32AtomicAdd( Bool32 shaderImageFloat32AtomicAdd_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderImageFloat32AtomicAdd = shaderImageFloat32AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setShaderImageFloat32AtomicAdd( Bool32 shaderImageFloat32AtomicAdd_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderImageFloat32AtomicAdd = shaderImageFloat32AtomicAdd_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setSparseImageFloat32Atomics( Bool32 sparseImageFloat32Atomics_ ) & VULKAN_HPP_NOEXCEPT + { + sparseImageFloat32Atomics = sparseImageFloat32Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setSparseImageFloat32Atomics( Bool32 sparseImageFloat32Atomics_ ) && + VULKAN_HPP_NOEXCEPT + { + sparseImageFloat32Atomics = sparseImageFloat32Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & setSparseImageFloat32AtomicAdd( Bool32 sparseImageFloat32AtomicAdd_ ) & + VULKAN_HPP_NOEXCEPT + { + sparseImageFloat32AtomicAdd = sparseImageFloat32AtomicAdd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT && setSparseImageFloat32AtomicAdd( Bool32 sparseImageFloat32AtomicAdd_ ) && + VULKAN_HPP_NOEXCEPT + { + sparseImageFloat32AtomicAdd = sparseImageFloat32AtomicAdd_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderBufferFloat32Atomics, + shaderBufferFloat32AtomicAdd, + shaderBufferFloat64Atomics, + shaderBufferFloat64AtomicAdd, + shaderSharedFloat32Atomics, + shaderSharedFloat32AtomicAdd, + shaderSharedFloat64Atomics, + shaderSharedFloat64AtomicAdd, + shaderImageFloat32Atomics, + shaderImageFloat32AtomicAdd, + sparseImageFloat32Atomics, + sparseImageFloat32AtomicAdd ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBufferFloat32Atomics == rhs.shaderBufferFloat32Atomics ) && + ( shaderBufferFloat32AtomicAdd == rhs.shaderBufferFloat32AtomicAdd ) && ( shaderBufferFloat64Atomics == rhs.shaderBufferFloat64Atomics ) && + ( shaderBufferFloat64AtomicAdd == rhs.shaderBufferFloat64AtomicAdd ) && ( shaderSharedFloat32Atomics == rhs.shaderSharedFloat32Atomics ) && + ( shaderSharedFloat32AtomicAdd == rhs.shaderSharedFloat32AtomicAdd ) && ( shaderSharedFloat64Atomics == rhs.shaderSharedFloat64Atomics ) && + ( shaderSharedFloat64AtomicAdd == rhs.shaderSharedFloat64AtomicAdd ) && ( shaderImageFloat32Atomics == rhs.shaderImageFloat32Atomics ) && + ( shaderImageFloat32AtomicAdd == rhs.shaderImageFloat32AtomicAdd ) && ( sparseImageFloat32Atomics == rhs.sparseImageFloat32Atomics ) && + ( sparseImageFloat32AtomicAdd == rhs.sparseImageFloat32AtomicAdd ); +# endif + } + + bool operator!=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT; + void * pNext = {}; + Bool32 shaderBufferFloat32Atomics = {}; + Bool32 shaderBufferFloat32AtomicAdd = {}; + Bool32 shaderBufferFloat64Atomics = {}; + Bool32 shaderBufferFloat64AtomicAdd = {}; + Bool32 shaderSharedFloat32Atomics = {}; + Bool32 shaderSharedFloat32AtomicAdd = {}; + Bool32 shaderSharedFloat64Atomics = {}; + Bool32 shaderSharedFloat64AtomicAdd = {}; + Bool32 shaderImageFloat32Atomics = {}; + Bool32 shaderImageFloat32AtomicAdd = {}; + Bool32 sparseImageFloat32Atomics = {}; + Bool32 sparseImageFloat32AtomicAdd = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicFloatFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicFloatFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderAtomicInt64Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderAtomicInt64Features.html + struct PhysicalDeviceShaderAtomicInt64Features + { + using NativeType = VkPhysicalDeviceShaderAtomicInt64Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderAtomicInt64Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( Bool32 shaderBufferInt64Atomics_ = {}, + Bool32 shaderSharedInt64Atomics_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderBufferInt64Atomics{ shaderBufferInt64Atomics_ } + , shaderSharedInt64Atomics{ shaderSharedInt64Atomics_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderAtomicInt64Features( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderAtomicInt64Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderAtomicInt64Features & operator=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderAtomicInt64Features & operator=( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & setShaderBufferInt64Atomics( Bool32 shaderBufferInt64Atomics_ ) & VULKAN_HPP_NOEXCEPT + { + shaderBufferInt64Atomics = shaderBufferInt64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features && setShaderBufferInt64Atomics( Bool32 shaderBufferInt64Atomics_ ) && VULKAN_HPP_NOEXCEPT + { + shaderBufferInt64Atomics = shaderBufferInt64Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & setShaderSharedInt64Atomics( Bool32 shaderSharedInt64Atomics_ ) & VULKAN_HPP_NOEXCEPT + { + shaderSharedInt64Atomics = shaderSharedInt64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features && setShaderSharedInt64Atomics( Bool32 shaderSharedInt64Atomics_ ) && VULKAN_HPP_NOEXCEPT + { + shaderSharedInt64Atomics = shaderSharedInt64Atomics_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderAtomicInt64Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicInt64Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicInt64Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderAtomicInt64Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderBufferInt64Atomics, shaderSharedInt64Atomics ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderAtomicInt64Features const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics ) && + ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics ); +# endif + } + + bool operator!=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderAtomicInt64Features; + void * pNext = {}; + Bool32 shaderBufferInt64Atomics = {}; + Bool32 shaderSharedInt64Atomics = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicInt64Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderAtomicInt64Features; + }; + + using PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features; + + // wrapper struct for struct VkPhysicalDeviceShaderBfloat16FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderBfloat16FeaturesKHR.html + struct PhysicalDeviceShaderBfloat16FeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderBfloat16FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderBfloat16FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderBfloat16FeaturesKHR( Bool32 shaderBFloat16Type_ = {}, + Bool32 shaderBFloat16DotProduct_ = {}, + Bool32 shaderBFloat16CooperativeMatrix_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderBFloat16Type{ shaderBFloat16Type_ } + , shaderBFloat16DotProduct{ shaderBFloat16DotProduct_ } + , shaderBFloat16CooperativeMatrix{ shaderBFloat16CooperativeMatrix_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderBfloat16FeaturesKHR( PhysicalDeviceShaderBfloat16FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderBfloat16FeaturesKHR( VkPhysicalDeviceShaderBfloat16FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderBfloat16FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderBfloat16FeaturesKHR & operator=( PhysicalDeviceShaderBfloat16FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderBfloat16FeaturesKHR & operator=( VkPhysicalDeviceShaderBfloat16FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderBfloat16FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderBfloat16FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderBfloat16FeaturesKHR & setShaderBFloat16Type( Bool32 shaderBFloat16Type_ ) & VULKAN_HPP_NOEXCEPT + { + shaderBFloat16Type = shaderBFloat16Type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderBfloat16FeaturesKHR && setShaderBFloat16Type( Bool32 shaderBFloat16Type_ ) && VULKAN_HPP_NOEXCEPT + { + shaderBFloat16Type = shaderBFloat16Type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderBfloat16FeaturesKHR & setShaderBFloat16DotProduct( Bool32 shaderBFloat16DotProduct_ ) & VULKAN_HPP_NOEXCEPT + { + shaderBFloat16DotProduct = shaderBFloat16DotProduct_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderBfloat16FeaturesKHR && setShaderBFloat16DotProduct( Bool32 shaderBFloat16DotProduct_ ) && VULKAN_HPP_NOEXCEPT + { + shaderBFloat16DotProduct = shaderBFloat16DotProduct_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderBfloat16FeaturesKHR & setShaderBFloat16CooperativeMatrix( Bool32 shaderBFloat16CooperativeMatrix_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderBFloat16CooperativeMatrix = shaderBFloat16CooperativeMatrix_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderBfloat16FeaturesKHR && setShaderBFloat16CooperativeMatrix( Bool32 shaderBFloat16CooperativeMatrix_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderBFloat16CooperativeMatrix = shaderBFloat16CooperativeMatrix_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderBfloat16FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderBfloat16FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderBfloat16FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderBfloat16FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderBFloat16Type, shaderBFloat16DotProduct, shaderBFloat16CooperativeMatrix ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderBfloat16FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderBfloat16FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBFloat16Type == rhs.shaderBFloat16Type ) && + ( shaderBFloat16DotProduct == rhs.shaderBFloat16DotProduct ) && ( shaderBFloat16CooperativeMatrix == rhs.shaderBFloat16CooperativeMatrix ); +# endif + } + + bool operator!=( PhysicalDeviceShaderBfloat16FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderBfloat16FeaturesKHR; + void * pNext = {}; + Bool32 shaderBFloat16Type = {}; + Bool32 shaderBFloat16DotProduct = {}; + Bool32 shaderBFloat16CooperativeMatrix = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderBfloat16FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderBfloat16FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderClockFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderClockFeaturesKHR.html + struct PhysicalDeviceShaderClockFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderClockFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderClockFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderClockFeaturesKHR( Bool32 shaderSubgroupClock_ = {}, Bool32 shaderDeviceClock_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderSubgroupClock{ shaderSubgroupClock_ } + , shaderDeviceClock{ shaderDeviceClock_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderClockFeaturesKHR( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderClockFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderClockFeaturesKHR & operator=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderClockFeaturesKHR & operator=( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setShaderSubgroupClock( Bool32 shaderSubgroupClock_ ) & VULKAN_HPP_NOEXCEPT + { + shaderSubgroupClock = shaderSubgroupClock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR && setShaderSubgroupClock( Bool32 shaderSubgroupClock_ ) && VULKAN_HPP_NOEXCEPT + { + shaderSubgroupClock = shaderSubgroupClock_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & setShaderDeviceClock( Bool32 shaderDeviceClock_ ) & VULKAN_HPP_NOEXCEPT + { + shaderDeviceClock = shaderDeviceClock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR && setShaderDeviceClock( Bool32 shaderDeviceClock_ ) && VULKAN_HPP_NOEXCEPT + { + shaderDeviceClock = shaderDeviceClock_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderClockFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderClockFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderClockFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderClockFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSubgroupClock, shaderDeviceClock ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderClockFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupClock == rhs.shaderSubgroupClock ) && + ( shaderDeviceClock == rhs.shaderDeviceClock ); +# endif + } + + bool operator!=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderClockFeaturesKHR; + void * pNext = {}; + Bool32 shaderSubgroupClock = {}; + Bool32 shaderDeviceClock = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderClockFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderClockFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderConstantDataFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderConstantDataFeaturesKHR.html + struct PhysicalDeviceShaderConstantDataFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderConstantDataFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderConstantDataFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderConstantDataFeaturesKHR( Bool32 shaderConstantData_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderConstantData{ shaderConstantData_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderConstantDataFeaturesKHR( PhysicalDeviceShaderConstantDataFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderConstantDataFeaturesKHR( VkPhysicalDeviceShaderConstantDataFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderConstantDataFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderConstantDataFeaturesKHR & operator=( PhysicalDeviceShaderConstantDataFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderConstantDataFeaturesKHR & operator=( VkPhysicalDeviceShaderConstantDataFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderConstantDataFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderConstantDataFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderConstantDataFeaturesKHR & setShaderConstantData( Bool32 shaderConstantData_ ) & VULKAN_HPP_NOEXCEPT + { + shaderConstantData = shaderConstantData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderConstantDataFeaturesKHR && setShaderConstantData( Bool32 shaderConstantData_ ) && VULKAN_HPP_NOEXCEPT + { + shaderConstantData = shaderConstantData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderConstantDataFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderConstantDataFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderConstantDataFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderConstantDataFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderConstantData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderConstantDataFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderConstantDataFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderConstantData == rhs.shaderConstantData ); +# endif + } + + bool operator!=( PhysicalDeviceShaderConstantDataFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderConstantDataFeaturesKHR; + void * pNext = {}; + Bool32 shaderConstantData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderConstantDataFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderConstantDataFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM.html + struct PhysicalDeviceShaderCoreBuiltinsFeaturesARM + { + using NativeType = VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderCoreBuiltinsFeaturesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreBuiltinsFeaturesARM( Bool32 shaderCoreBuiltins_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderCoreBuiltins{ shaderCoreBuiltins_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreBuiltinsFeaturesARM( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderCoreBuiltinsFeaturesARM( VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderCoreBuiltinsFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderCoreBuiltinsFeaturesARM & operator=( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderCoreBuiltinsFeaturesARM & operator=( VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCoreBuiltinsFeaturesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCoreBuiltinsFeaturesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCoreBuiltinsFeaturesARM & setShaderCoreBuiltins( Bool32 shaderCoreBuiltins_ ) & VULKAN_HPP_NOEXCEPT + { + shaderCoreBuiltins = shaderCoreBuiltins_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCoreBuiltinsFeaturesARM && setShaderCoreBuiltins( Bool32 shaderCoreBuiltins_ ) && VULKAN_HPP_NOEXCEPT + { + shaderCoreBuiltins = shaderCoreBuiltins_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderCoreBuiltins ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreBuiltins == rhs.shaderCoreBuiltins ); +# endif + } + + bool operator!=( PhysicalDeviceShaderCoreBuiltinsFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderCoreBuiltinsFeaturesARM; + void * pNext = {}; + Bool32 shaderCoreBuiltins = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCoreBuiltinsFeaturesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCoreBuiltinsFeaturesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM.html + struct PhysicalDeviceShaderCoreBuiltinsPropertiesARM + { + using NativeType = VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderCoreBuiltinsPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreBuiltinsPropertiesARM( uint64_t shaderCoreMask_ = {}, + uint32_t shaderCoreCount_ = {}, + uint32_t shaderWarpsPerCore_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderCoreMask{ shaderCoreMask_ } + , shaderCoreCount{ shaderCoreCount_ } + , shaderWarpsPerCore{ shaderWarpsPerCore_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderCoreBuiltinsPropertiesARM( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderCoreBuiltinsPropertiesARM( VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderCoreBuiltinsPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderCoreBuiltinsPropertiesARM & operator=( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderCoreBuiltinsPropertiesARM & operator=( VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderCoreMask, shaderCoreCount, shaderWarpsPerCore ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreMask == rhs.shaderCoreMask ) && ( shaderCoreCount == rhs.shaderCoreCount ) && + ( shaderWarpsPerCore == rhs.shaderWarpsPerCore ); +# endif + } + + bool operator!=( PhysicalDeviceShaderCoreBuiltinsPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderCoreBuiltinsPropertiesARM; + void * pNext = {}; + uint64_t shaderCoreMask = {}; + uint32_t shaderCoreCount = {}; + uint32_t shaderWarpsPerCore = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCoreBuiltinsPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCoreBuiltinsPropertiesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderCoreProperties2AMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCoreProperties2AMD.html + struct PhysicalDeviceShaderCoreProperties2AMD + { + using NativeType = VkPhysicalDeviceShaderCoreProperties2AMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderCoreProperties2AMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD( ShaderCorePropertiesFlagsAMD shaderCoreFeatures_ = {}, + uint32_t activeComputeUnitCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderCoreFeatures{ shaderCoreFeatures_ } + , activeComputeUnitCount{ activeComputeUnitCount_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderCoreProperties2AMD( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderCoreProperties2AMD( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderCoreProperties2AMD & operator=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderCoreProperties2AMD & operator=( VkPhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderCoreProperties2AMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCoreProperties2AMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCoreProperties2AMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCoreProperties2AMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderCoreFeatures, activeComputeUnitCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderCoreProperties2AMD const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderCoreFeatures == rhs.shaderCoreFeatures ) && + ( activeComputeUnitCount == rhs.activeComputeUnitCount ); +# endif + } + + bool operator!=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderCoreProperties2AMD; + void * pNext = {}; + ShaderCorePropertiesFlagsAMD shaderCoreFeatures = {}; + uint32_t activeComputeUnitCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCoreProperties2AMD; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCoreProperties2AMD; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderCorePropertiesAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesAMD.html + struct PhysicalDeviceShaderCorePropertiesAMD + { + using NativeType = VkPhysicalDeviceShaderCorePropertiesAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderCorePropertiesAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesAMD( uint32_t shaderEngineCount_ = {}, + uint32_t shaderArraysPerEngineCount_ = {}, + uint32_t computeUnitsPerShaderArray_ = {}, + uint32_t simdPerComputeUnit_ = {}, + uint32_t wavefrontsPerSimd_ = {}, + uint32_t wavefrontSize_ = {}, + uint32_t sgprsPerSimd_ = {}, + uint32_t minSgprAllocation_ = {}, + uint32_t maxSgprAllocation_ = {}, + uint32_t sgprAllocationGranularity_ = {}, + uint32_t vgprsPerSimd_ = {}, + uint32_t minVgprAllocation_ = {}, + uint32_t maxVgprAllocation_ = {}, + uint32_t vgprAllocationGranularity_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderEngineCount{ shaderEngineCount_ } + , shaderArraysPerEngineCount{ shaderArraysPerEngineCount_ } + , computeUnitsPerShaderArray{ computeUnitsPerShaderArray_ } + , simdPerComputeUnit{ simdPerComputeUnit_ } + , wavefrontsPerSimd{ wavefrontsPerSimd_ } + , wavefrontSize{ wavefrontSize_ } + , sgprsPerSimd{ sgprsPerSimd_ } + , minSgprAllocation{ minSgprAllocation_ } + , maxSgprAllocation{ maxSgprAllocation_ } + , sgprAllocationGranularity{ sgprAllocationGranularity_ } + , vgprsPerSimd{ vgprsPerSimd_ } + , minVgprAllocation{ minVgprAllocation_ } + , maxVgprAllocation{ maxVgprAllocation_ } + , vgprAllocationGranularity{ vgprAllocationGranularity_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesAMD( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderCorePropertiesAMD( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderCorePropertiesAMD( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderCorePropertiesAMD & operator=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderCorePropertiesAMD & operator=( VkPhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderCorePropertiesAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCorePropertiesAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCorePropertiesAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCorePropertiesAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderEngineCount, + shaderArraysPerEngineCount, + computeUnitsPerShaderArray, + simdPerComputeUnit, + wavefrontsPerSimd, + wavefrontSize, + sgprsPerSimd, + minSgprAllocation, + maxSgprAllocation, + sgprAllocationGranularity, + vgprsPerSimd, + minVgprAllocation, + maxVgprAllocation, + vgprAllocationGranularity ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderCorePropertiesAMD const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderEngineCount == rhs.shaderEngineCount ) && + ( shaderArraysPerEngineCount == rhs.shaderArraysPerEngineCount ) && ( computeUnitsPerShaderArray == rhs.computeUnitsPerShaderArray ) && + ( simdPerComputeUnit == rhs.simdPerComputeUnit ) && ( wavefrontsPerSimd == rhs.wavefrontsPerSimd ) && ( wavefrontSize == rhs.wavefrontSize ) && + ( sgprsPerSimd == rhs.sgprsPerSimd ) && ( minSgprAllocation == rhs.minSgprAllocation ) && ( maxSgprAllocation == rhs.maxSgprAllocation ) && + ( sgprAllocationGranularity == rhs.sgprAllocationGranularity ) && ( vgprsPerSimd == rhs.vgprsPerSimd ) && + ( minVgprAllocation == rhs.minVgprAllocation ) && ( maxVgprAllocation == rhs.maxVgprAllocation ) && + ( vgprAllocationGranularity == rhs.vgprAllocationGranularity ); +# endif + } + + bool operator!=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderCorePropertiesAMD; + void * pNext = {}; + uint32_t shaderEngineCount = {}; + uint32_t shaderArraysPerEngineCount = {}; + uint32_t computeUnitsPerShaderArray = {}; + uint32_t simdPerComputeUnit = {}; + uint32_t wavefrontsPerSimd = {}; + uint32_t wavefrontSize = {}; + uint32_t sgprsPerSimd = {}; + uint32_t minSgprAllocation = {}; + uint32_t maxSgprAllocation = {}; + uint32_t sgprAllocationGranularity = {}; + uint32_t vgprsPerSimd = {}; + uint32_t minVgprAllocation = {}; + uint32_t maxVgprAllocation = {}; + uint32_t vgprAllocationGranularity = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCorePropertiesAMD; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCorePropertiesAMD; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderCorePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderCorePropertiesARM.html + struct PhysicalDeviceShaderCorePropertiesARM + { + using NativeType = VkPhysicalDeviceShaderCorePropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderCorePropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesARM( uint32_t pixelRate_ = {}, + uint32_t texelRate_ = {}, + uint32_t fmaRate_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pixelRate{ pixelRate_ } + , texelRate{ texelRate_ } + , fmaRate{ fmaRate_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCorePropertiesARM( PhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderCorePropertiesARM( VkPhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderCorePropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderCorePropertiesARM & operator=( PhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderCorePropertiesARM & operator=( VkPhysicalDeviceShaderCorePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderCorePropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCorePropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCorePropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderCorePropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pixelRate, texelRate, fmaRate ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderCorePropertiesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderCorePropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pixelRate == rhs.pixelRate ) && ( texelRate == rhs.texelRate ) && ( fmaRate == rhs.fmaRate ); +# endif + } + + bool operator!=( PhysicalDeviceShaderCorePropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderCorePropertiesARM; + void * pNext = {}; + uint32_t pixelRate = {}; + uint32_t texelRate = {}; + uint32_t fmaRate = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCorePropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderCorePropertiesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures.html + struct PhysicalDeviceShaderDemoteToHelperInvocationFeatures + { + using NativeType = VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeatures( Bool32 shaderDemoteToHelperInvocation_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderDemoteToHelperInvocation{ shaderDemoteToHelperInvocation_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderDemoteToHelperInvocationFeatures( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderDemoteToHelperInvocationFeatures( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderDemoteToHelperInvocationFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderDemoteToHelperInvocationFeatures & + operator=( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderDemoteToHelperInvocationFeatures & operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures & setShaderDemoteToHelperInvocation( Bool32 shaderDemoteToHelperInvocation_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeatures && + setShaderDemoteToHelperInvocation( Bool32 shaderDemoteToHelperInvocation_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderDemoteToHelperInvocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation ); +# endif + } + + bool operator!=( PhysicalDeviceShaderDemoteToHelperInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures; + void * pNext = {}; + Bool32 shaderDemoteToHelperInvocation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderDemoteToHelperInvocationFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderDemoteToHelperInvocationFeatures; + }; + + using PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeatures; + + // wrapper struct for struct VkPhysicalDeviceShaderDrawParametersFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderDrawParametersFeatures.html + struct PhysicalDeviceShaderDrawParametersFeatures + { + using NativeType = VkPhysicalDeviceShaderDrawParametersFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( Bool32 shaderDrawParameters_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderDrawParameters{ shaderDrawParameters_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderDrawParametersFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderDrawParametersFeatures & operator=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderDrawParametersFeatures & operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & setShaderDrawParameters( Bool32 shaderDrawParameters_ ) & VULKAN_HPP_NOEXCEPT + { + shaderDrawParameters = shaderDrawParameters_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures && setShaderDrawParameters( Bool32 shaderDrawParameters_ ) && VULKAN_HPP_NOEXCEPT + { + shaderDrawParameters = shaderDrawParameters_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderDrawParametersFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderDrawParametersFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderDrawParametersFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderDrawParametersFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderDrawParameters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderDrawParametersFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderDrawParameters == rhs.shaderDrawParameters ); +# endif + } + + bool operator!=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures; + void * pNext = {}; + Bool32 shaderDrawParameters = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderDrawParametersFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderDrawParametersFeatures; + }; + + using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures; + + // wrapper struct for struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD.html + struct PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD + { + using NativeType = VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( Bool32 shaderEarlyAndLateFragmentTests_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderEarlyAndLateFragmentTests{ shaderEarlyAndLateFragmentTests_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD & + operator=( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD & + operator=( VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD & + setShaderEarlyAndLateFragmentTests( Bool32 shaderEarlyAndLateFragmentTests_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderEarlyAndLateFragmentTests = shaderEarlyAndLateFragmentTests_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD && + setShaderEarlyAndLateFragmentTests( Bool32 shaderEarlyAndLateFragmentTests_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderEarlyAndLateFragmentTests = shaderEarlyAndLateFragmentTests_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderEarlyAndLateFragmentTests ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderEarlyAndLateFragmentTests == rhs.shaderEarlyAndLateFragmentTests ); +# endif + } + + bool operator!=( PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; + void * pNext = {}; + Bool32 shaderEarlyAndLateFragmentTests = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkPhysicalDeviceShaderEnqueueFeaturesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueueFeaturesAMDX.html + struct PhysicalDeviceShaderEnqueueFeaturesAMDX + { + using NativeType = VkPhysicalDeviceShaderEnqueueFeaturesAMDX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderEnqueueFeaturesAMDX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderEnqueueFeaturesAMDX( Bool32 shaderEnqueue_ = {}, Bool32 shaderMeshEnqueue_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderEnqueue{ shaderEnqueue_ } + , shaderMeshEnqueue{ shaderMeshEnqueue_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderEnqueueFeaturesAMDX( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderEnqueueFeaturesAMDX( VkPhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderEnqueueFeaturesAMDX( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderEnqueueFeaturesAMDX & operator=( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderEnqueueFeaturesAMDX & operator=( VkPhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueueFeaturesAMDX & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueueFeaturesAMDX && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueueFeaturesAMDX & setShaderEnqueue( Bool32 shaderEnqueue_ ) & VULKAN_HPP_NOEXCEPT + { + shaderEnqueue = shaderEnqueue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueueFeaturesAMDX && setShaderEnqueue( Bool32 shaderEnqueue_ ) && VULKAN_HPP_NOEXCEPT + { + shaderEnqueue = shaderEnqueue_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueueFeaturesAMDX & setShaderMeshEnqueue( Bool32 shaderMeshEnqueue_ ) & VULKAN_HPP_NOEXCEPT + { + shaderMeshEnqueue = shaderMeshEnqueue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueueFeaturesAMDX && setShaderMeshEnqueue( Bool32 shaderMeshEnqueue_ ) && VULKAN_HPP_NOEXCEPT + { + shaderMeshEnqueue = shaderMeshEnqueue_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderEnqueueFeaturesAMDX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderEnqueue, shaderMeshEnqueue ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderEnqueueFeaturesAMDX const & ) const = default; +# else + bool operator==( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderEnqueue == rhs.shaderEnqueue ) && ( shaderMeshEnqueue == rhs.shaderMeshEnqueue ); +# endif + } + + bool operator!=( PhysicalDeviceShaderEnqueueFeaturesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderEnqueueFeaturesAMDX; + void * pNext = {}; + Bool32 shaderEnqueue = {}; + Bool32 shaderMeshEnqueue = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderEnqueueFeaturesAMDX; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderEnqueueFeaturesAMDX; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkPhysicalDeviceShaderEnqueuePropertiesAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderEnqueuePropertiesAMDX.html + struct PhysicalDeviceShaderEnqueuePropertiesAMDX + { + using NativeType = VkPhysicalDeviceShaderEnqueuePropertiesAMDX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderEnqueuePropertiesAMDX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX( uint32_t maxExecutionGraphDepth_ = {}, + uint32_t maxExecutionGraphShaderOutputNodes_ = {}, + uint32_t maxExecutionGraphShaderPayloadSize_ = {}, + uint32_t maxExecutionGraphShaderPayloadCount_ = {}, + uint32_t executionGraphDispatchAddressAlignment_ = {}, + std::array const & maxExecutionGraphWorkgroupCount_ = {}, + uint32_t maxExecutionGraphWorkgroups_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxExecutionGraphDepth{ maxExecutionGraphDepth_ } + , maxExecutionGraphShaderOutputNodes{ maxExecutionGraphShaderOutputNodes_ } + , maxExecutionGraphShaderPayloadSize{ maxExecutionGraphShaderPayloadSize_ } + , maxExecutionGraphShaderPayloadCount{ maxExecutionGraphShaderPayloadCount_ } + , executionGraphDispatchAddressAlignment{ executionGraphDispatchAddressAlignment_ } + , maxExecutionGraphWorkgroupCount{ maxExecutionGraphWorkgroupCount_ } + , maxExecutionGraphWorkgroups{ maxExecutionGraphWorkgroups_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderEnqueuePropertiesAMDX( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderEnqueuePropertiesAMDX( VkPhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderEnqueuePropertiesAMDX( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderEnqueuePropertiesAMDX & operator=( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderEnqueuePropertiesAMDX & operator=( VkPhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderEnqueuePropertiesAMDX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxExecutionGraphDepth, + maxExecutionGraphShaderOutputNodes, + maxExecutionGraphShaderPayloadSize, + maxExecutionGraphShaderPayloadCount, + executionGraphDispatchAddressAlignment, + maxExecutionGraphWorkgroupCount, + maxExecutionGraphWorkgroups ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderEnqueuePropertiesAMDX const & ) const = default; +# else + bool operator==( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxExecutionGraphDepth == rhs.maxExecutionGraphDepth ) && + ( maxExecutionGraphShaderOutputNodes == rhs.maxExecutionGraphShaderOutputNodes ) && + ( maxExecutionGraphShaderPayloadSize == rhs.maxExecutionGraphShaderPayloadSize ) && + ( maxExecutionGraphShaderPayloadCount == rhs.maxExecutionGraphShaderPayloadCount ) && + ( executionGraphDispatchAddressAlignment == rhs.executionGraphDispatchAddressAlignment ) && + ( maxExecutionGraphWorkgroupCount == rhs.maxExecutionGraphWorkgroupCount ) && ( maxExecutionGraphWorkgroups == rhs.maxExecutionGraphWorkgroups ); +# endif + } + + bool operator!=( PhysicalDeviceShaderEnqueuePropertiesAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderEnqueuePropertiesAMDX; + void * pNext = {}; + uint32_t maxExecutionGraphDepth = {}; + uint32_t maxExecutionGraphShaderOutputNodes = {}; + uint32_t maxExecutionGraphShaderPayloadSize = {}; + uint32_t maxExecutionGraphShaderPayloadCount = {}; + uint32_t executionGraphDispatchAddressAlignment = {}; + ArrayWrapper1D maxExecutionGraphWorkgroupCount = {}; + uint32_t maxExecutionGraphWorkgroups = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderEnqueuePropertiesAMDX; + }; +# endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderEnqueuePropertiesAMDX; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkPhysicalDeviceShaderExpectAssumeFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderExpectAssumeFeatures.html + struct PhysicalDeviceShaderExpectAssumeFeatures + { + using NativeType = VkPhysicalDeviceShaderExpectAssumeFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderExpectAssumeFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderExpectAssumeFeatures( Bool32 shaderExpectAssume_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderExpectAssume{ shaderExpectAssume_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderExpectAssumeFeatures( PhysicalDeviceShaderExpectAssumeFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderExpectAssumeFeatures( VkPhysicalDeviceShaderExpectAssumeFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderExpectAssumeFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderExpectAssumeFeatures & operator=( PhysicalDeviceShaderExpectAssumeFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderExpectAssumeFeatures & operator=( VkPhysicalDeviceShaderExpectAssumeFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderExpectAssumeFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderExpectAssumeFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderExpectAssumeFeatures & setShaderExpectAssume( Bool32 shaderExpectAssume_ ) & VULKAN_HPP_NOEXCEPT + { + shaderExpectAssume = shaderExpectAssume_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderExpectAssumeFeatures && setShaderExpectAssume( Bool32 shaderExpectAssume_ ) && VULKAN_HPP_NOEXCEPT + { + shaderExpectAssume = shaderExpectAssume_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderExpectAssumeFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderExpectAssumeFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderExpectAssumeFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderExpectAssumeFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderExpectAssume ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderExpectAssumeFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderExpectAssumeFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderExpectAssume == rhs.shaderExpectAssume ); +# endif + } + + bool operator!=( PhysicalDeviceShaderExpectAssumeFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderExpectAssumeFeatures; + void * pNext = {}; + Bool32 shaderExpectAssume = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderExpectAssumeFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderExpectAssumeFeatures; + }; + + using PhysicalDeviceShaderExpectAssumeFeaturesKHR = PhysicalDeviceShaderExpectAssumeFeatures; + + // wrapper struct for struct VkPhysicalDeviceShaderFloat16Int8Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat16Int8Features.html + struct PhysicalDeviceShaderFloat16Int8Features + { + using NativeType = VkPhysicalDeviceShaderFloat16Int8Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderFloat16Int8Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderFloat16Int8Features( Bool32 shaderFloat16_ = {}, Bool32 shaderInt8_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderFloat16{ shaderFloat16_ } + , shaderInt8{ shaderInt8_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderFloat16Int8Features( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderFloat16Int8Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderFloat16Int8Features & operator=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderFloat16Int8Features & operator=( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setShaderFloat16( Bool32 shaderFloat16_ ) & VULKAN_HPP_NOEXCEPT + { + shaderFloat16 = shaderFloat16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features && setShaderFloat16( Bool32 shaderFloat16_ ) && VULKAN_HPP_NOEXCEPT + { + shaderFloat16 = shaderFloat16_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & setShaderInt8( Bool32 shaderInt8_ ) & VULKAN_HPP_NOEXCEPT + { + shaderInt8 = shaderInt8_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features && setShaderInt8( Bool32 shaderInt8_ ) && VULKAN_HPP_NOEXCEPT + { + shaderInt8 = shaderInt8_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderFloat16Int8Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFloat16Int8Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFloat16Int8Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFloat16Int8Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderFloat16, shaderInt8 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderFloat16Int8Features const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloat16 == rhs.shaderFloat16 ) && ( shaderInt8 == rhs.shaderInt8 ); +# endif + } + + bool operator!=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderFloat16Int8Features; + void * pNext = {}; + Bool32 shaderFloat16 = {}; + Bool32 shaderInt8 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderFloat16Int8Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderFloat16Int8Features; + }; + + using PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features; + using PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features; + + // wrapper struct for struct VkPhysicalDeviceShaderFloat8FeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloat8FeaturesEXT.html + struct PhysicalDeviceShaderFloat8FeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderFloat8FeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderFloat8FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat8FeaturesEXT( Bool32 shaderFloat8_ = {}, + Bool32 shaderFloat8CooperativeMatrix_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderFloat8{ shaderFloat8_ } + , shaderFloat8CooperativeMatrix{ shaderFloat8CooperativeMatrix_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat8FeaturesEXT( PhysicalDeviceShaderFloat8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderFloat8FeaturesEXT( VkPhysicalDeviceShaderFloat8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderFloat8FeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderFloat8FeaturesEXT & operator=( PhysicalDeviceShaderFloat8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderFloat8FeaturesEXT & operator=( VkPhysicalDeviceShaderFloat8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat8FeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat8FeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat8FeaturesEXT & setShaderFloat8( Bool32 shaderFloat8_ ) & VULKAN_HPP_NOEXCEPT + { + shaderFloat8 = shaderFloat8_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat8FeaturesEXT && setShaderFloat8( Bool32 shaderFloat8_ ) && VULKAN_HPP_NOEXCEPT + { + shaderFloat8 = shaderFloat8_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat8FeaturesEXT & setShaderFloat8CooperativeMatrix( Bool32 shaderFloat8CooperativeMatrix_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderFloat8CooperativeMatrix = shaderFloat8CooperativeMatrix_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat8FeaturesEXT && setShaderFloat8CooperativeMatrix( Bool32 shaderFloat8CooperativeMatrix_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderFloat8CooperativeMatrix = shaderFloat8CooperativeMatrix_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderFloat8FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFloat8FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFloat8FeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFloat8FeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderFloat8, shaderFloat8CooperativeMatrix ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderFloat8FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderFloat8FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloat8 == rhs.shaderFloat8 ) && + ( shaderFloat8CooperativeMatrix == rhs.shaderFloat8CooperativeMatrix ); +# endif + } + + bool operator!=( PhysicalDeviceShaderFloat8FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderFloat8FeaturesEXT; + void * pNext = {}; + Bool32 shaderFloat8 = {}; + Bool32 shaderFloat8CooperativeMatrix = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderFloat8FeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderFloat8FeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderFloatControls2Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFloatControls2Features.html + struct PhysicalDeviceShaderFloatControls2Features + { + using NativeType = VkPhysicalDeviceShaderFloatControls2Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderFloatControls2Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloatControls2Features( Bool32 shaderFloatControls2_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderFloatControls2{ shaderFloatControls2_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloatControls2Features( PhysicalDeviceShaderFloatControls2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderFloatControls2Features( VkPhysicalDeviceShaderFloatControls2Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderFloatControls2Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderFloatControls2Features & operator=( PhysicalDeviceShaderFloatControls2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderFloatControls2Features & operator=( VkPhysicalDeviceShaderFloatControls2Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloatControls2Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloatControls2Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloatControls2Features & setShaderFloatControls2( Bool32 shaderFloatControls2_ ) & VULKAN_HPP_NOEXCEPT + { + shaderFloatControls2 = shaderFloatControls2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloatControls2Features && setShaderFloatControls2( Bool32 shaderFloatControls2_ ) && VULKAN_HPP_NOEXCEPT + { + shaderFloatControls2 = shaderFloatControls2_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderFloatControls2Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFloatControls2Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFloatControls2Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFloatControls2Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderFloatControls2 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderFloatControls2Features const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderFloatControls2Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFloatControls2 == rhs.shaderFloatControls2 ); +# endif + } + + bool operator!=( PhysicalDeviceShaderFloatControls2Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderFloatControls2Features; + void * pNext = {}; + Bool32 shaderFloatControls2 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderFloatControls2Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderFloatControls2Features; + }; + + using PhysicalDeviceShaderFloatControls2FeaturesKHR = PhysicalDeviceShaderFloatControls2Features; + + // wrapper struct for struct VkPhysicalDeviceShaderFmaFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderFmaFeaturesKHR.html + struct PhysicalDeviceShaderFmaFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderFmaFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderFmaFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFmaFeaturesKHR( Bool32 shaderFmaFloat16_ = {}, + Bool32 shaderFmaFloat32_ = {}, + Bool32 shaderFmaFloat64_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderFmaFloat16{ shaderFmaFloat16_ } + , shaderFmaFloat32{ shaderFmaFloat32_ } + , shaderFmaFloat64{ shaderFmaFloat64_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFmaFeaturesKHR( PhysicalDeviceShaderFmaFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderFmaFeaturesKHR( VkPhysicalDeviceShaderFmaFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderFmaFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderFmaFeaturesKHR & operator=( PhysicalDeviceShaderFmaFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderFmaFeaturesKHR & operator=( VkPhysicalDeviceShaderFmaFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFmaFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFmaFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFmaFeaturesKHR & setShaderFmaFloat16( Bool32 shaderFmaFloat16_ ) & VULKAN_HPP_NOEXCEPT + { + shaderFmaFloat16 = shaderFmaFloat16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFmaFeaturesKHR && setShaderFmaFloat16( Bool32 shaderFmaFloat16_ ) && VULKAN_HPP_NOEXCEPT + { + shaderFmaFloat16 = shaderFmaFloat16_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFmaFeaturesKHR & setShaderFmaFloat32( Bool32 shaderFmaFloat32_ ) & VULKAN_HPP_NOEXCEPT + { + shaderFmaFloat32 = shaderFmaFloat32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFmaFeaturesKHR && setShaderFmaFloat32( Bool32 shaderFmaFloat32_ ) && VULKAN_HPP_NOEXCEPT + { + shaderFmaFloat32 = shaderFmaFloat32_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFmaFeaturesKHR & setShaderFmaFloat64( Bool32 shaderFmaFloat64_ ) & VULKAN_HPP_NOEXCEPT + { + shaderFmaFloat64 = shaderFmaFloat64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFmaFeaturesKHR && setShaderFmaFloat64( Bool32 shaderFmaFloat64_ ) && VULKAN_HPP_NOEXCEPT + { + shaderFmaFloat64 = shaderFmaFloat64_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderFmaFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFmaFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFmaFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderFmaFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderFmaFloat16, shaderFmaFloat32, shaderFmaFloat64 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderFmaFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderFmaFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderFmaFloat16 == rhs.shaderFmaFloat16 ) && ( shaderFmaFloat32 == rhs.shaderFmaFloat32 ) && + ( shaderFmaFloat64 == rhs.shaderFmaFloat64 ); +# endif + } + + bool operator!=( PhysicalDeviceShaderFmaFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderFmaFeaturesKHR; + void * pNext = {}; + Bool32 shaderFmaFloat16 = {}; + Bool32 shaderFmaFloat32 = {}; + Bool32 shaderFmaFloat64 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderFmaFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderFmaFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT.html + struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( Bool32 shaderImageInt64Atomics_ = {}, + Bool32 sparseImageInt64Atomics_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderImageInt64Atomics{ shaderImageInt64Atomics_ } + , sparseImageInt64Atomics{ sparseImageInt64Atomics_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderImageAtomicInt64FeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setShaderImageInt64Atomics( Bool32 shaderImageInt64Atomics_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderImageInt64Atomics = shaderImageInt64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT && setShaderImageInt64Atomics( Bool32 shaderImageInt64Atomics_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderImageInt64Atomics = shaderImageInt64Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setSparseImageInt64Atomics( Bool32 sparseImageInt64Atomics_ ) & + VULKAN_HPP_NOEXCEPT + { + sparseImageInt64Atomics = sparseImageInt64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT && setSparseImageInt64Atomics( Bool32 sparseImageInt64Atomics_ ) && + VULKAN_HPP_NOEXCEPT + { + sparseImageInt64Atomics = sparseImageInt64Atomics_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderImageInt64Atomics, sparseImageInt64Atomics ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderImageInt64Atomics == rhs.shaderImageInt64Atomics ) && + ( sparseImageInt64Atomics == rhs.sparseImageInt64Atomics ); +# endif + } + + bool operator!=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + void * pNext = {}; + Bool32 shaderImageInt64Atomics = {}; + Bool32 sparseImageInt64Atomics = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderImageFootprintFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderImageFootprintFeaturesNV.html + struct PhysicalDeviceShaderImageFootprintFeaturesNV + { + using NativeType = VkPhysicalDeviceShaderImageFootprintFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV( Bool32 imageFootprint_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageFootprint{ imageFootprint_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderImageFootprintFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & setImageFootprint( Bool32 imageFootprint_ ) & VULKAN_HPP_NOEXCEPT + { + imageFootprint = imageFootprint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV && setImageFootprint( Bool32 imageFootprint_ ) && VULKAN_HPP_NOEXCEPT + { + imageFootprint = imageFootprint_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderImageFootprintFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderImageFootprintFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderImageFootprintFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageFootprint ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderImageFootprintFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageFootprint == rhs.imageFootprint ); +# endif + } + + bool operator!=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV; + void * pNext = {}; + Bool32 imageFootprint = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderImageFootprintFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderImageFootprintFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderInstrumentationFeaturesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderInstrumentationFeaturesARM.html + struct PhysicalDeviceShaderInstrumentationFeaturesARM + { + using NativeType = VkPhysicalDeviceShaderInstrumentationFeaturesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderInstrumentationFeaturesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderInstrumentationFeaturesARM( Bool32 shaderInstrumentation_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderInstrumentation{ shaderInstrumentation_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderInstrumentationFeaturesARM( PhysicalDeviceShaderInstrumentationFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderInstrumentationFeaturesARM( VkPhysicalDeviceShaderInstrumentationFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderInstrumentationFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderInstrumentationFeaturesARM & operator=( PhysicalDeviceShaderInstrumentationFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderInstrumentationFeaturesARM & operator=( VkPhysicalDeviceShaderInstrumentationFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderInstrumentationFeaturesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderInstrumentationFeaturesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderInstrumentationFeaturesARM & setShaderInstrumentation( Bool32 shaderInstrumentation_ ) & VULKAN_HPP_NOEXCEPT + { + shaderInstrumentation = shaderInstrumentation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderInstrumentationFeaturesARM && setShaderInstrumentation( Bool32 shaderInstrumentation_ ) && VULKAN_HPP_NOEXCEPT + { + shaderInstrumentation = shaderInstrumentation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderInstrumentationFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderInstrumentationFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderInstrumentationFeaturesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderInstrumentationFeaturesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderInstrumentation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderInstrumentationFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderInstrumentationFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderInstrumentation == rhs.shaderInstrumentation ); +# endif + } + + bool operator!=( PhysicalDeviceShaderInstrumentationFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderInstrumentationFeaturesARM; + void * pNext = {}; + Bool32 shaderInstrumentation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderInstrumentationFeaturesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderInstrumentationFeaturesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderInstrumentationPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderInstrumentationPropertiesARM.html + struct PhysicalDeviceShaderInstrumentationPropertiesARM + { + using NativeType = VkPhysicalDeviceShaderInstrumentationPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderInstrumentationPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderInstrumentationPropertiesARM( uint32_t numMetrics_ = {}, + Bool32 perBasicBlockGranularity_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , numMetrics{ numMetrics_ } + , perBasicBlockGranularity{ perBasicBlockGranularity_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderInstrumentationPropertiesARM( PhysicalDeviceShaderInstrumentationPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderInstrumentationPropertiesARM( VkPhysicalDeviceShaderInstrumentationPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderInstrumentationPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderInstrumentationPropertiesARM & operator=( PhysicalDeviceShaderInstrumentationPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderInstrumentationPropertiesARM & operator=( VkPhysicalDeviceShaderInstrumentationPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderInstrumentationPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderInstrumentationPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderInstrumentationPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderInstrumentationPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, numMetrics, perBasicBlockGranularity ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderInstrumentationPropertiesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderInstrumentationPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( numMetrics == rhs.numMetrics ) && + ( perBasicBlockGranularity == rhs.perBasicBlockGranularity ); +# endif + } + + bool operator!=( PhysicalDeviceShaderInstrumentationPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderInstrumentationPropertiesARM; + void * pNext = {}; + uint32_t numMetrics = {}; + Bool32 perBasicBlockGranularity = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderInstrumentationPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderInstrumentationPropertiesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderIntegerDotProductFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductFeatures.html + struct PhysicalDeviceShaderIntegerDotProductFeatures + { + using NativeType = VkPhysicalDeviceShaderIntegerDotProductFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerDotProductFeatures( Bool32 shaderIntegerDotProduct_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderIntegerDotProduct{ shaderIntegerDotProduct_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderIntegerDotProductFeatures( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderIntegerDotProductFeatures( VkPhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderIntegerDotProductFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderIntegerDotProductFeatures & operator=( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderIntegerDotProductFeatures & operator=( VkPhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures & setShaderIntegerDotProduct( Bool32 shaderIntegerDotProduct_ ) & VULKAN_HPP_NOEXCEPT + { + shaderIntegerDotProduct = shaderIntegerDotProduct_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerDotProductFeatures && setShaderIntegerDotProduct( Bool32 shaderIntegerDotProduct_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderIntegerDotProduct = shaderIntegerDotProduct_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderIntegerDotProductFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderIntegerDotProductFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderIntegerDotProductFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderIntegerDotProductFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderIntegerDotProduct ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderIntegerDotProductFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderIntegerDotProduct == rhs.shaderIntegerDotProduct ); +# endif + } + + bool operator!=( PhysicalDeviceShaderIntegerDotProductFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures; + void * pNext = {}; + Bool32 shaderIntegerDotProduct = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderIntegerDotProductFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderIntegerDotProductFeatures; + }; + + using PhysicalDeviceShaderIntegerDotProductFeaturesKHR = PhysicalDeviceShaderIntegerDotProductFeatures; + + // wrapper struct for struct VkPhysicalDeviceShaderIntegerDotProductProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerDotProductProperties.html + struct PhysicalDeviceShaderIntegerDotProductProperties + { + using NativeType = VkPhysicalDeviceShaderIntegerDotProductProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderIntegerDotProductProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderIntegerDotProductProperties( Bool32 integerDotProduct8BitUnsignedAccelerated_ = {}, + Bool32 integerDotProduct8BitSignedAccelerated_ = {}, + Bool32 integerDotProduct8BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_ = {}, + Bool32 integerDotProduct4x8BitPackedSignedAccelerated_ = {}, + Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_ = {}, + Bool32 integerDotProduct16BitUnsignedAccelerated_ = {}, + Bool32 integerDotProduct16BitSignedAccelerated_ = {}, + Bool32 integerDotProduct16BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProduct32BitUnsignedAccelerated_ = {}, + Bool32 integerDotProduct32BitSignedAccelerated_ = {}, + Bool32 integerDotProduct32BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProduct64BitUnsignedAccelerated_ = {}, + Bool32 integerDotProduct64BitSignedAccelerated_ = {}, + Bool32 integerDotProduct64BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , integerDotProduct8BitUnsignedAccelerated{ integerDotProduct8BitUnsignedAccelerated_ } + , integerDotProduct8BitSignedAccelerated{ integerDotProduct8BitSignedAccelerated_ } + , integerDotProduct8BitMixedSignednessAccelerated{ integerDotProduct8BitMixedSignednessAccelerated_ } + , integerDotProduct4x8BitPackedUnsignedAccelerated{ integerDotProduct4x8BitPackedUnsignedAccelerated_ } + , integerDotProduct4x8BitPackedSignedAccelerated{ integerDotProduct4x8BitPackedSignedAccelerated_ } + , integerDotProduct4x8BitPackedMixedSignednessAccelerated{ integerDotProduct4x8BitPackedMixedSignednessAccelerated_ } + , integerDotProduct16BitUnsignedAccelerated{ integerDotProduct16BitUnsignedAccelerated_ } + , integerDotProduct16BitSignedAccelerated{ integerDotProduct16BitSignedAccelerated_ } + , integerDotProduct16BitMixedSignednessAccelerated{ integerDotProduct16BitMixedSignednessAccelerated_ } + , integerDotProduct32BitUnsignedAccelerated{ integerDotProduct32BitUnsignedAccelerated_ } + , integerDotProduct32BitSignedAccelerated{ integerDotProduct32BitSignedAccelerated_ } + , integerDotProduct32BitMixedSignednessAccelerated{ integerDotProduct32BitMixedSignednessAccelerated_ } + , integerDotProduct64BitUnsignedAccelerated{ integerDotProduct64BitUnsignedAccelerated_ } + , integerDotProduct64BitSignedAccelerated{ integerDotProduct64BitSignedAccelerated_ } + , integerDotProduct64BitMixedSignednessAccelerated{ integerDotProduct64BitMixedSignednessAccelerated_ } + , integerDotProductAccumulatingSaturating8BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ } + , integerDotProductAccumulatingSaturating8BitSignedAccelerated{ integerDotProductAccumulatingSaturating8BitSignedAccelerated_ } + , integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ } + , integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ } + , integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ } + , integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ } + , integerDotProductAccumulatingSaturating16BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ } + , integerDotProductAccumulatingSaturating16BitSignedAccelerated{ integerDotProductAccumulatingSaturating16BitSignedAccelerated_ } + , integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ } + , integerDotProductAccumulatingSaturating32BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ } + , integerDotProductAccumulatingSaturating32BitSignedAccelerated{ integerDotProductAccumulatingSaturating32BitSignedAccelerated_ } + , integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ } + , integerDotProductAccumulatingSaturating64BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ } + , integerDotProductAccumulatingSaturating64BitSignedAccelerated{ integerDotProductAccumulatingSaturating64BitSignedAccelerated_ } + , integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderIntegerDotProductProperties( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderIntegerDotProductProperties( VkPhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderIntegerDotProductProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderIntegerDotProductProperties & operator=( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderIntegerDotProductProperties & operator=( VkPhysicalDeviceShaderIntegerDotProductProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderIntegerDotProductProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderIntegerDotProductProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderIntegerDotProductProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderIntegerDotProductProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + integerDotProduct8BitUnsignedAccelerated, + integerDotProduct8BitSignedAccelerated, + integerDotProduct8BitMixedSignednessAccelerated, + integerDotProduct4x8BitPackedUnsignedAccelerated, + integerDotProduct4x8BitPackedSignedAccelerated, + integerDotProduct4x8BitPackedMixedSignednessAccelerated, + integerDotProduct16BitUnsignedAccelerated, + integerDotProduct16BitSignedAccelerated, + integerDotProduct16BitMixedSignednessAccelerated, + integerDotProduct32BitUnsignedAccelerated, + integerDotProduct32BitSignedAccelerated, + integerDotProduct32BitMixedSignednessAccelerated, + integerDotProduct64BitUnsignedAccelerated, + integerDotProduct64BitSignedAccelerated, + integerDotProduct64BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating8BitSignedAccelerated, + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating16BitSignedAccelerated, + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating32BitSignedAccelerated, + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating64BitSignedAccelerated, + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderIntegerDotProductProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated ) && + ( integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated ) && + ( integerDotProduct8BitMixedSignednessAccelerated == rhs.integerDotProduct8BitMixedSignednessAccelerated ) && + ( integerDotProduct4x8BitPackedUnsignedAccelerated == rhs.integerDotProduct4x8BitPackedUnsignedAccelerated ) && + ( integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated ) && + ( integerDotProduct4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated ) && + ( integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated ) && + ( integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated ) && + ( integerDotProduct16BitMixedSignednessAccelerated == rhs.integerDotProduct16BitMixedSignednessAccelerated ) && + ( integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated ) && + ( integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated ) && + ( integerDotProduct32BitMixedSignednessAccelerated == rhs.integerDotProduct32BitMixedSignednessAccelerated ) && + ( integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated ) && + ( integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated ) && + ( integerDotProduct64BitMixedSignednessAccelerated == rhs.integerDotProduct64BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ); +# endif + } + + bool operator!=( PhysicalDeviceShaderIntegerDotProductProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderIntegerDotProductProperties; + void * pNext = {}; + Bool32 integerDotProduct8BitUnsignedAccelerated = {}; + Bool32 integerDotProduct8BitSignedAccelerated = {}; + Bool32 integerDotProduct8BitMixedSignednessAccelerated = {}; + Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated = {}; + Bool32 integerDotProduct4x8BitPackedSignedAccelerated = {}; + Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated = {}; + Bool32 integerDotProduct16BitUnsignedAccelerated = {}; + Bool32 integerDotProduct16BitSignedAccelerated = {}; + Bool32 integerDotProduct16BitMixedSignednessAccelerated = {}; + Bool32 integerDotProduct32BitUnsignedAccelerated = {}; + Bool32 integerDotProduct32BitSignedAccelerated = {}; + Bool32 integerDotProduct32BitMixedSignednessAccelerated = {}; + Bool32 integerDotProduct64BitUnsignedAccelerated = {}; + Bool32 integerDotProduct64BitSignedAccelerated = {}; + Bool32 integerDotProduct64BitMixedSignednessAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderIntegerDotProductProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderIntegerDotProductProperties; + }; + + using PhysicalDeviceShaderIntegerDotProductPropertiesKHR = PhysicalDeviceShaderIntegerDotProductProperties; + + // wrapper struct for struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL.html + struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + { + using NativeType = VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( Bool32 shaderIntegerFunctions2_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderIntegerFunctions2{ shaderIntegerFunctions2_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & + operator=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & operator=( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & setShaderIntegerFunctions2( Bool32 shaderIntegerFunctions2_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderIntegerFunctions2 = shaderIntegerFunctions2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL && setShaderIntegerFunctions2( Bool32 shaderIntegerFunctions2_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderIntegerFunctions2 = shaderIntegerFunctions2_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderIntegerFunctions2 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderIntegerFunctions2 == rhs.shaderIntegerFunctions2 ); +# endif + } + + bool operator!=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + void * pNext = {}; + Bool32 shaderIntegerFunctions2 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderLongVectorFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderLongVectorFeaturesEXT.html + struct PhysicalDeviceShaderLongVectorFeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderLongVectorFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderLongVectorFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderLongVectorFeaturesEXT( Bool32 longVector_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , longVector{ longVector_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderLongVectorFeaturesEXT( PhysicalDeviceShaderLongVectorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderLongVectorFeaturesEXT( VkPhysicalDeviceShaderLongVectorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderLongVectorFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderLongVectorFeaturesEXT & operator=( PhysicalDeviceShaderLongVectorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderLongVectorFeaturesEXT & operator=( VkPhysicalDeviceShaderLongVectorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderLongVectorFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderLongVectorFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderLongVectorFeaturesEXT & setLongVector( Bool32 longVector_ ) & VULKAN_HPP_NOEXCEPT + { + longVector = longVector_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderLongVectorFeaturesEXT && setLongVector( Bool32 longVector_ ) && VULKAN_HPP_NOEXCEPT + { + longVector = longVector_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderLongVectorFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderLongVectorFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderLongVectorFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderLongVectorFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, longVector ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderLongVectorFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderLongVectorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( longVector == rhs.longVector ); +# endif + } + + bool operator!=( PhysicalDeviceShaderLongVectorFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderLongVectorFeaturesEXT; + void * pNext = {}; + Bool32 longVector = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderLongVectorFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderLongVectorFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderLongVectorPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderLongVectorPropertiesEXT.html + struct PhysicalDeviceShaderLongVectorPropertiesEXT + { + using NativeType = VkPhysicalDeviceShaderLongVectorPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderLongVectorPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderLongVectorPropertiesEXT( uint32_t maxVectorComponents_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxVectorComponents{ maxVectorComponents_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderLongVectorPropertiesEXT( PhysicalDeviceShaderLongVectorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderLongVectorPropertiesEXT( VkPhysicalDeviceShaderLongVectorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderLongVectorPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderLongVectorPropertiesEXT & operator=( PhysicalDeviceShaderLongVectorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderLongVectorPropertiesEXT & operator=( VkPhysicalDeviceShaderLongVectorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderLongVectorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderLongVectorPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderLongVectorPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderLongVectorPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxVectorComponents ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderLongVectorPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderLongVectorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVectorComponents == rhs.maxVectorComponents ); +# endif + } + + bool operator!=( PhysicalDeviceShaderLongVectorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderLongVectorPropertiesEXT; + void * pNext = {}; + uint32_t maxVectorComponents = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderLongVectorPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderLongVectorPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR.html + struct PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderMaximalReconvergenceFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( Bool32 shaderMaximalReconvergence_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderMaximalReconvergence{ shaderMaximalReconvergence_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR & + operator=( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR & operator=( VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR & setShaderMaximalReconvergence( Bool32 shaderMaximalReconvergence_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderMaximalReconvergence = shaderMaximalReconvergence_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR && setShaderMaximalReconvergence( Bool32 shaderMaximalReconvergence_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderMaximalReconvergence = shaderMaximalReconvergence_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderMaximalReconvergence ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderMaximalReconvergence == rhs.shaderMaximalReconvergence ); +# endif + } + + bool operator!=( PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderMaximalReconvergenceFeaturesKHR; + void * pNext = {}; + Bool32 shaderMaximalReconvergence = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE.html + struct PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE + { + using NativeType = VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE( Bool32 shaderMixedFloatDotProductFloat16AccFloat32_ = {}, + Bool32 shaderMixedFloatDotProductFloat16AccFloat16_ = {}, + Bool32 shaderMixedFloatDotProductBFloat16Acc_ = {}, + Bool32 shaderMixedFloatDotProductFloat8AccFloat32_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderMixedFloatDotProductFloat16AccFloat32{ shaderMixedFloatDotProductFloat16AccFloat32_ } + , shaderMixedFloatDotProductFloat16AccFloat16{ shaderMixedFloatDotProductFloat16AccFloat16_ } + , shaderMixedFloatDotProductBFloat16Acc{ shaderMixedFloatDotProductBFloat16Acc_ } + , shaderMixedFloatDotProductFloat8AccFloat32{ shaderMixedFloatDotProductFloat8AccFloat32_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE( PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE( VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE & + operator=( PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE & operator=( VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE & + setShaderMixedFloatDotProductFloat16AccFloat32( Bool32 shaderMixedFloatDotProductFloat16AccFloat32_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderMixedFloatDotProductFloat16AccFloat32 = shaderMixedFloatDotProductFloat16AccFloat32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE && + setShaderMixedFloatDotProductFloat16AccFloat32( Bool32 shaderMixedFloatDotProductFloat16AccFloat32_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderMixedFloatDotProductFloat16AccFloat32 = shaderMixedFloatDotProductFloat16AccFloat32_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE & + setShaderMixedFloatDotProductFloat16AccFloat16( Bool32 shaderMixedFloatDotProductFloat16AccFloat16_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderMixedFloatDotProductFloat16AccFloat16 = shaderMixedFloatDotProductFloat16AccFloat16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE && + setShaderMixedFloatDotProductFloat16AccFloat16( Bool32 shaderMixedFloatDotProductFloat16AccFloat16_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderMixedFloatDotProductFloat16AccFloat16 = shaderMixedFloatDotProductFloat16AccFloat16_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE & + setShaderMixedFloatDotProductBFloat16Acc( Bool32 shaderMixedFloatDotProductBFloat16Acc_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderMixedFloatDotProductBFloat16Acc = shaderMixedFloatDotProductBFloat16Acc_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE && + setShaderMixedFloatDotProductBFloat16Acc( Bool32 shaderMixedFloatDotProductBFloat16Acc_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderMixedFloatDotProductBFloat16Acc = shaderMixedFloatDotProductBFloat16Acc_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE & + setShaderMixedFloatDotProductFloat8AccFloat32( Bool32 shaderMixedFloatDotProductFloat8AccFloat32_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderMixedFloatDotProductFloat8AccFloat32 = shaderMixedFloatDotProductFloat8AccFloat32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE && + setShaderMixedFloatDotProductFloat8AccFloat32( Bool32 shaderMixedFloatDotProductFloat8AccFloat32_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderMixedFloatDotProductFloat8AccFloat32 = shaderMixedFloatDotProductFloat8AccFloat32_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + shaderMixedFloatDotProductFloat16AccFloat32, + shaderMixedFloatDotProductFloat16AccFloat16, + shaderMixedFloatDotProductBFloat16Acc, + shaderMixedFloatDotProductFloat8AccFloat32 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && + ( shaderMixedFloatDotProductFloat16AccFloat32 == rhs.shaderMixedFloatDotProductFloat16AccFloat32 ) && + ( shaderMixedFloatDotProductFloat16AccFloat16 == rhs.shaderMixedFloatDotProductFloat16AccFloat16 ) && + ( shaderMixedFloatDotProductBFloat16Acc == rhs.shaderMixedFloatDotProductBFloat16Acc ) && + ( shaderMixedFloatDotProductFloat8AccFloat32 == rhs.shaderMixedFloatDotProductFloat8AccFloat32 ); +# endif + } + + bool operator!=( PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE; + void * pNext = {}; + Bool32 shaderMixedFloatDotProductFloat16AccFloat32 = {}; + Bool32 shaderMixedFloatDotProductFloat16AccFloat16 = {}; + Bool32 shaderMixedFloatDotProductBFloat16Acc = {}; + Bool32 shaderMixedFloatDotProductFloat8AccFloat32 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT.html + struct PhysicalDeviceShaderModuleIdentifierFeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderModuleIdentifierFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderModuleIdentifierFeaturesEXT( Bool32 shaderModuleIdentifier_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderModuleIdentifier{ shaderModuleIdentifier_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderModuleIdentifierFeaturesEXT( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderModuleIdentifierFeaturesEXT( VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderModuleIdentifierFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderModuleIdentifierFeaturesEXT & operator=( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderModuleIdentifierFeaturesEXT & operator=( VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderModuleIdentifierFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderModuleIdentifierFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderModuleIdentifierFeaturesEXT & setShaderModuleIdentifier( Bool32 shaderModuleIdentifier_ ) & VULKAN_HPP_NOEXCEPT + { + shaderModuleIdentifier = shaderModuleIdentifier_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderModuleIdentifierFeaturesEXT && setShaderModuleIdentifier( Bool32 shaderModuleIdentifier_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderModuleIdentifier = shaderModuleIdentifier_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderModuleIdentifier ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderModuleIdentifier == rhs.shaderModuleIdentifier ); +# endif + } + + bool operator!=( PhysicalDeviceShaderModuleIdentifierFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderModuleIdentifierFeaturesEXT; + void * pNext = {}; + Bool32 shaderModuleIdentifier = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderModuleIdentifierFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderModuleIdentifierFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT.html + struct PhysicalDeviceShaderModuleIdentifierPropertiesEXT + { + using NativeType = VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderModuleIdentifierPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceShaderModuleIdentifierPropertiesEXT( std::array const & shaderModuleIdentifierAlgorithmUUID_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderModuleIdentifierAlgorithmUUID{ shaderModuleIdentifierAlgorithmUUID_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceShaderModuleIdentifierPropertiesEXT( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderModuleIdentifierPropertiesEXT( VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderModuleIdentifierPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderModuleIdentifierPropertiesEXT & + operator=( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderModuleIdentifierPropertiesEXT & operator=( VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderModuleIdentifierAlgorithmUUID ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderModuleIdentifierAlgorithmUUID == rhs.shaderModuleIdentifierAlgorithmUUID ); +# endif + } + + bool operator!=( PhysicalDeviceShaderModuleIdentifierPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderModuleIdentifierPropertiesEXT; + void * pNext = {}; + ArrayWrapper1D shaderModuleIdentifierAlgorithmUUID = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderModuleIdentifierPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderModuleIdentifierPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderObjectFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectFeaturesEXT.html + struct PhysicalDeviceShaderObjectFeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderObjectFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderObjectFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderObjectFeaturesEXT( Bool32 shaderObject_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderObject{ shaderObject_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderObjectFeaturesEXT( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderObjectFeaturesEXT( VkPhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderObjectFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderObjectFeaturesEXT & operator=( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderObjectFeaturesEXT & operator=( VkPhysicalDeviceShaderObjectFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectFeaturesEXT & setShaderObject( Bool32 shaderObject_ ) & VULKAN_HPP_NOEXCEPT + { + shaderObject = shaderObject_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectFeaturesEXT && setShaderObject( Bool32 shaderObject_ ) && VULKAN_HPP_NOEXCEPT + { + shaderObject = shaderObject_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderObjectFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderObjectFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderObjectFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderObjectFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderObject ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderObjectFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderObject == rhs.shaderObject ); +# endif + } + + bool operator!=( PhysicalDeviceShaderObjectFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderObjectFeaturesEXT; + void * pNext = {}; + Bool32 shaderObject = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderObjectFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderObjectFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderObjectPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderObjectPropertiesEXT.html + struct PhysicalDeviceShaderObjectPropertiesEXT + { + using NativeType = VkPhysicalDeviceShaderObjectPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderObjectPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectPropertiesEXT( std::array const & shaderBinaryUUID_ = {}, + uint32_t shaderBinaryVersion_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderBinaryUUID{ shaderBinaryUUID_ } + , shaderBinaryVersion{ shaderBinaryVersion_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderObjectPropertiesEXT( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderObjectPropertiesEXT( VkPhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderObjectPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderObjectPropertiesEXT & operator=( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderObjectPropertiesEXT & operator=( VkPhysicalDeviceShaderObjectPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderObjectPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderObjectPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderObjectPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderObjectPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, uint32_t const &> reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderBinaryUUID, shaderBinaryVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderObjectPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderBinaryUUID == rhs.shaderBinaryUUID ) && + ( shaderBinaryVersion == rhs.shaderBinaryVersion ); +# endif + } + + bool operator!=( PhysicalDeviceShaderObjectPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderObjectPropertiesEXT; + void * pNext = {}; + ArrayWrapper1D shaderBinaryUUID = {}; + uint32_t shaderBinaryVersion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderObjectPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderObjectPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderQuadControlFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderQuadControlFeaturesKHR.html + struct PhysicalDeviceShaderQuadControlFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderQuadControlFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderQuadControlFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderQuadControlFeaturesKHR( Bool32 shaderQuadControl_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderQuadControl{ shaderQuadControl_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderQuadControlFeaturesKHR( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderQuadControlFeaturesKHR( VkPhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderQuadControlFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderQuadControlFeaturesKHR & operator=( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderQuadControlFeaturesKHR & operator=( VkPhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderQuadControlFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderQuadControlFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderQuadControlFeaturesKHR & setShaderQuadControl( Bool32 shaderQuadControl_ ) & VULKAN_HPP_NOEXCEPT + { + shaderQuadControl = shaderQuadControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderQuadControlFeaturesKHR && setShaderQuadControl( Bool32 shaderQuadControl_ ) && VULKAN_HPP_NOEXCEPT + { + shaderQuadControl = shaderQuadControl_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderQuadControlFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderQuadControlFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderQuadControlFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderQuadControlFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderQuadControl ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderQuadControlFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderQuadControl == rhs.shaderQuadControl ); +# endif + } + + bool operator!=( PhysicalDeviceShaderQuadControlFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderQuadControlFeaturesKHR; + void * pNext = {}; + Bool32 shaderQuadControl = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderQuadControlFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderQuadControlFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.html + struct PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR( Bool32 shaderRelaxedExtendedInstruction_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderRelaxedExtendedInstruction{ shaderRelaxedExtendedInstruction_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR( PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR( VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR( + *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR & + operator=( PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR & + operator=( VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR & + setShaderRelaxedExtendedInstruction( Bool32 shaderRelaxedExtendedInstruction_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderRelaxedExtendedInstruction = shaderRelaxedExtendedInstruction_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR && + setShaderRelaxedExtendedInstruction( Bool32 shaderRelaxedExtendedInstruction_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderRelaxedExtendedInstruction = shaderRelaxedExtendedInstruction_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderRelaxedExtendedInstruction ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderRelaxedExtendedInstruction == rhs.shaderRelaxedExtendedInstruction ); +# endif + } + + bool operator!=( PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR; + void * pNext = {}; + Bool32 shaderRelaxedExtendedInstruction = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT.html + struct PhysicalDeviceShaderReplicatedCompositesFeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( Bool32 shaderReplicatedComposites_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderReplicatedComposites{ shaderReplicatedComposites_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderReplicatedCompositesFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderReplicatedCompositesFeaturesEXT & + operator=( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderReplicatedCompositesFeaturesEXT & operator=( VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderReplicatedCompositesFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderReplicatedCompositesFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderReplicatedCompositesFeaturesEXT & setShaderReplicatedComposites( Bool32 shaderReplicatedComposites_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderReplicatedComposites = shaderReplicatedComposites_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderReplicatedCompositesFeaturesEXT && setShaderReplicatedComposites( Bool32 shaderReplicatedComposites_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderReplicatedComposites = shaderReplicatedComposites_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderReplicatedComposites ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderReplicatedComposites == rhs.shaderReplicatedComposites ); +# endif + } + + bool operator!=( PhysicalDeviceShaderReplicatedCompositesFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT; + void * pNext = {}; + Bool32 shaderReplicatedComposites = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderReplicatedCompositesFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderReplicatedCompositesFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.html + struct PhysicalDeviceShaderSMBuiltinsFeaturesNV + { + using NativeType = VkPhysicalDeviceShaderSMBuiltinsFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( Bool32 shaderSMBuiltins_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderSMBuiltins{ shaderSMBuiltins_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSMBuiltinsFeaturesNV( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderSMBuiltinsFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & setShaderSMBuiltins( Bool32 shaderSMBuiltins_ ) & VULKAN_HPP_NOEXCEPT + { + shaderSMBuiltins = shaderSMBuiltins_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV && setShaderSMBuiltins( Bool32 shaderSMBuiltins_ ) && VULKAN_HPP_NOEXCEPT + { + shaderSMBuiltins = shaderSMBuiltins_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSMBuiltinsFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSMBuiltins ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSMBuiltins == rhs.shaderSMBuiltins ); +# endif + } + + bool operator!=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV; + void * pNext = {}; + Bool32 shaderSMBuiltins = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSMBuiltinsFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSMBuiltinsFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSMBuiltinsPropertiesNV.html + struct PhysicalDeviceShaderSMBuiltinsPropertiesNV + { + using NativeType = VkPhysicalDeviceShaderSMBuiltinsPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderSMBuiltinsPropertiesNV( uint32_t shaderSMCount_ = {}, uint32_t shaderWarpsPerSM_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderSMCount{ shaderSMCount_ } + , shaderWarpsPerSM{ shaderWarpsPerSM_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsPropertiesNV( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSMBuiltinsPropertiesNV( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderSMBuiltinsPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderSMBuiltinsPropertiesNV & operator=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderSMBuiltinsPropertiesNV & operator=( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSMBuiltinsPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSMCount, shaderWarpsPerSM ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSMCount == rhs.shaderSMCount ) && ( shaderWarpsPerSM == rhs.shaderWarpsPerSM ); +# endif + } + + bool operator!=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV; + void * pNext = {}; + uint32_t shaderSMCount = {}; + uint32_t shaderWarpsPerSM = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSMBuiltinsPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSMBuiltinsPropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures.html + struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures + { + using NativeType = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures( Bool32 shaderSubgroupExtendedTypes_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderSubgroupExtendedTypes{ shaderSubgroupExtendedTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderSubgroupExtendedTypesFeatures( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSubgroupExtendedTypesFeatures( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderSubgroupExtendedTypesFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderSubgroupExtendedTypesFeatures & + operator=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderSubgroupExtendedTypesFeatures & operator=( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures & setShaderSubgroupExtendedTypes( Bool32 shaderSubgroupExtendedTypes_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures && setShaderSubgroupExtendedTypes( Bool32 shaderSubgroupExtendedTypes_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSubgroupExtendedTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes ); +# endif + } + + bool operator!=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures; + void * pNext = {}; + Bool32 shaderSubgroupExtendedTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSubgroupExtendedTypesFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSubgroupExtendedTypesFeatures; + }; + + using PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures; + + // wrapper struct for struct VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT.html + struct PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderSubgroupPartitionedFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT( Bool32 shaderSubgroupPartitioned_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderSubgroupPartitioned{ shaderSubgroupPartitioned_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT( PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT( VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT & + operator=( PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT & operator=( VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT & setShaderSubgroupPartitioned( Bool32 shaderSubgroupPartitioned_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSubgroupPartitioned = shaderSubgroupPartitioned_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT && setShaderSubgroupPartitioned( Bool32 shaderSubgroupPartitioned_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSubgroupPartitioned = shaderSubgroupPartitioned_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSubgroupPartitioned ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupPartitioned == rhs.shaderSubgroupPartitioned ); +# endif + } + + bool operator!=( PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupPartitionedFeaturesEXT; + void * pNext = {}; + Bool32 shaderSubgroupPartitioned = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderSubgroupRotateFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupRotateFeatures.html + struct PhysicalDeviceShaderSubgroupRotateFeatures + { + using NativeType = VkPhysicalDeviceShaderSubgroupRotateFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderSubgroupRotateFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupRotateFeatures( Bool32 shaderSubgroupRotate_ = {}, + Bool32 shaderSubgroupRotateClustered_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderSubgroupRotate{ shaderSubgroupRotate_ } + , shaderSubgroupRotateClustered{ shaderSubgroupRotateClustered_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupRotateFeatures( PhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSubgroupRotateFeatures( VkPhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderSubgroupRotateFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderSubgroupRotateFeatures & operator=( PhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderSubgroupRotateFeatures & operator=( VkPhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeatures & setShaderSubgroupRotate( Bool32 shaderSubgroupRotate_ ) & VULKAN_HPP_NOEXCEPT + { + shaderSubgroupRotate = shaderSubgroupRotate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeatures && setShaderSubgroupRotate( Bool32 shaderSubgroupRotate_ ) && VULKAN_HPP_NOEXCEPT + { + shaderSubgroupRotate = shaderSubgroupRotate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeatures & setShaderSubgroupRotateClustered( Bool32 shaderSubgroupRotateClustered_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSubgroupRotateClustered = shaderSubgroupRotateClustered_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupRotateFeatures && setShaderSubgroupRotateClustered( Bool32 shaderSubgroupRotateClustered_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSubgroupRotateClustered = shaderSubgroupRotateClustered_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderSubgroupRotateFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupRotateFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupRotateFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupRotateFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSubgroupRotate, shaderSubgroupRotateClustered ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderSubgroupRotateFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupRotate == rhs.shaderSubgroupRotate ) && + ( shaderSubgroupRotateClustered == rhs.shaderSubgroupRotateClustered ); +# endif + } + + bool operator!=( PhysicalDeviceShaderSubgroupRotateFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupRotateFeatures; + void * pNext = {}; + Bool32 shaderSubgroupRotate = {}; + Bool32 shaderSubgroupRotateClustered = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSubgroupRotateFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSubgroupRotateFeatures; + }; + + using PhysicalDeviceShaderSubgroupRotateFeaturesKHR = PhysicalDeviceShaderSubgroupRotateFeatures; + + // wrapper struct for struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.html + struct PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( Bool32 shaderSubgroupUniformControlFlow_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderSubgroupUniformControlFlow{ shaderSubgroupUniformControlFlow_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( + *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR & + operator=( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR & + operator=( VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR & + setShaderSubgroupUniformControlFlow( Bool32 shaderSubgroupUniformControlFlow_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSubgroupUniformControlFlow = shaderSubgroupUniformControlFlow_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR && + setShaderSubgroupUniformControlFlow( Bool32 shaderSubgroupUniformControlFlow_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSubgroupUniformControlFlow = shaderSubgroupUniformControlFlow_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderSubgroupUniformControlFlow ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderSubgroupUniformControlFlow == rhs.shaderSubgroupUniformControlFlow ); +# endif + } + + bool operator!=( PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + void * pNext = {}; + Bool32 shaderSubgroupUniformControlFlow = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderTerminateInvocationFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTerminateInvocationFeatures.html + struct PhysicalDeviceShaderTerminateInvocationFeatures + { + using NativeType = VkPhysicalDeviceShaderTerminateInvocationFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeatures( Bool32 shaderTerminateInvocation_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderTerminateInvocation{ shaderTerminateInvocation_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderTerminateInvocationFeatures( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderTerminateInvocationFeatures( VkPhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderTerminateInvocationFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderTerminateInvocationFeatures & operator=( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderTerminateInvocationFeatures & operator=( VkPhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures & setShaderTerminateInvocation( Bool32 shaderTerminateInvocation_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderTerminateInvocation = shaderTerminateInvocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeatures && setShaderTerminateInvocation( Bool32 shaderTerminateInvocation_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderTerminateInvocation = shaderTerminateInvocation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderTerminateInvocationFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderTerminateInvocationFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderTerminateInvocationFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderTerminateInvocationFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderTerminateInvocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderTerminateInvocationFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderTerminateInvocation == rhs.shaderTerminateInvocation ); +# endif + } + + bool operator!=( PhysicalDeviceShaderTerminateInvocationFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures; + void * pNext = {}; + Bool32 shaderTerminateInvocation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderTerminateInvocationFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderTerminateInvocationFeatures; + }; + + using PhysicalDeviceShaderTerminateInvocationFeaturesKHR = PhysicalDeviceShaderTerminateInvocationFeatures; + + // wrapper struct for struct VkPhysicalDeviceShaderTileImageFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImageFeaturesEXT.html + struct PhysicalDeviceShaderTileImageFeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderTileImageFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderTileImageFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImageFeaturesEXT( Bool32 shaderTileImageColorReadAccess_ = {}, + Bool32 shaderTileImageDepthReadAccess_ = {}, + Bool32 shaderTileImageStencilReadAccess_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderTileImageColorReadAccess{ shaderTileImageColorReadAccess_ } + , shaderTileImageDepthReadAccess{ shaderTileImageDepthReadAccess_ } + , shaderTileImageStencilReadAccess{ shaderTileImageStencilReadAccess_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImageFeaturesEXT( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderTileImageFeaturesEXT( VkPhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderTileImageFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderTileImageFeaturesEXT & operator=( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderTileImageFeaturesEXT & operator=( VkPhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT & setShaderTileImageColorReadAccess( Bool32 shaderTileImageColorReadAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderTileImageColorReadAccess = shaderTileImageColorReadAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT && setShaderTileImageColorReadAccess( Bool32 shaderTileImageColorReadAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderTileImageColorReadAccess = shaderTileImageColorReadAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT & setShaderTileImageDepthReadAccess( Bool32 shaderTileImageDepthReadAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderTileImageDepthReadAccess = shaderTileImageDepthReadAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT && setShaderTileImageDepthReadAccess( Bool32 shaderTileImageDepthReadAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderTileImageDepthReadAccess = shaderTileImageDepthReadAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT & setShaderTileImageStencilReadAccess( Bool32 shaderTileImageStencilReadAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderTileImageStencilReadAccess = shaderTileImageStencilReadAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTileImageFeaturesEXT && setShaderTileImageStencilReadAccess( Bool32 shaderTileImageStencilReadAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderTileImageStencilReadAccess = shaderTileImageStencilReadAccess_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderTileImageFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderTileImageFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderTileImageFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderTileImageFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderTileImageColorReadAccess, shaderTileImageDepthReadAccess, shaderTileImageStencilReadAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderTileImageFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderTileImageColorReadAccess == rhs.shaderTileImageColorReadAccess ) && + ( shaderTileImageDepthReadAccess == rhs.shaderTileImageDepthReadAccess ) && + ( shaderTileImageStencilReadAccess == rhs.shaderTileImageStencilReadAccess ); +# endif + } + + bool operator!=( PhysicalDeviceShaderTileImageFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderTileImageFeaturesEXT; + void * pNext = {}; + Bool32 shaderTileImageColorReadAccess = {}; + Bool32 shaderTileImageDepthReadAccess = {}; + Bool32 shaderTileImageStencilReadAccess = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderTileImageFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderTileImageFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderTileImagePropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderTileImagePropertiesEXT.html + struct PhysicalDeviceShaderTileImagePropertiesEXT + { + using NativeType = VkPhysicalDeviceShaderTileImagePropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderTileImagePropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImagePropertiesEXT( Bool32 shaderTileImageCoherentReadAccelerated_ = {}, + Bool32 shaderTileImageReadSampleFromPixelRateInvocation_ = {}, + Bool32 shaderTileImageReadFromHelperInvocation_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderTileImageCoherentReadAccelerated{ shaderTileImageCoherentReadAccelerated_ } + , shaderTileImageReadSampleFromPixelRateInvocation{ shaderTileImageReadSampleFromPixelRateInvocation_ } + , shaderTileImageReadFromHelperInvocation{ shaderTileImageReadFromHelperInvocation_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTileImagePropertiesEXT( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderTileImagePropertiesEXT( VkPhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderTileImagePropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderTileImagePropertiesEXT & operator=( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderTileImagePropertiesEXT & operator=( VkPhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShaderTileImagePropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderTileImagePropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderTileImagePropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderTileImagePropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, shaderTileImageCoherentReadAccelerated, shaderTileImageReadSampleFromPixelRateInvocation, shaderTileImageReadFromHelperInvocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderTileImagePropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderTileImageCoherentReadAccelerated == rhs.shaderTileImageCoherentReadAccelerated ) && + ( shaderTileImageReadSampleFromPixelRateInvocation == rhs.shaderTileImageReadSampleFromPixelRateInvocation ) && + ( shaderTileImageReadFromHelperInvocation == rhs.shaderTileImageReadFromHelperInvocation ); +# endif + } + + bool operator!=( PhysicalDeviceShaderTileImagePropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderTileImagePropertiesEXT; + void * pNext = {}; + Bool32 shaderTileImageCoherentReadAccelerated = {}; + Bool32 shaderTileImageReadSampleFromPixelRateInvocation = {}; + Bool32 shaderTileImageReadFromHelperInvocation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderTileImagePropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderTileImagePropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT.html + struct PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT + { + using NativeType = VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT( Bool32 shaderUniformBufferUnsizedArray_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderUniformBufferUnsizedArray{ shaderUniformBufferUnsizedArray_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT( PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT( VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT & + operator=( PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT & + operator=( VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT & + setShaderUniformBufferUnsizedArray( Bool32 shaderUniformBufferUnsizedArray_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferUnsizedArray = shaderUniformBufferUnsizedArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT && + setShaderUniformBufferUnsizedArray( Bool32 shaderUniformBufferUnsizedArray_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferUnsizedArray = shaderUniformBufferUnsizedArray_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderUniformBufferUnsizedArray ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderUniformBufferUnsizedArray == rhs.shaderUniformBufferUnsizedArray ); +# endif + } + + bool operator!=( PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT; + void * pNext = {}; + Bool32 shaderUniformBufferUnsizedArray = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceShaderUntypedPointersFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShaderUntypedPointersFeaturesKHR.html + struct PhysicalDeviceShaderUntypedPointersFeaturesKHR + { + using NativeType = VkPhysicalDeviceShaderUntypedPointersFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderUntypedPointersFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderUntypedPointersFeaturesKHR( Bool32 shaderUntypedPointers_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderUntypedPointers{ shaderUntypedPointers_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceShaderUntypedPointersFeaturesKHR( PhysicalDeviceShaderUntypedPointersFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShaderUntypedPointersFeaturesKHR( VkPhysicalDeviceShaderUntypedPointersFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShaderUntypedPointersFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShaderUntypedPointersFeaturesKHR & operator=( PhysicalDeviceShaderUntypedPointersFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShaderUntypedPointersFeaturesKHR & operator=( VkPhysicalDeviceShaderUntypedPointersFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderUntypedPointersFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderUntypedPointersFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderUntypedPointersFeaturesKHR & setShaderUntypedPointers( Bool32 shaderUntypedPointers_ ) & VULKAN_HPP_NOEXCEPT + { + shaderUntypedPointers = shaderUntypedPointers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderUntypedPointersFeaturesKHR && setShaderUntypedPointers( Bool32 shaderUntypedPointers_ ) && VULKAN_HPP_NOEXCEPT + { + shaderUntypedPointers = shaderUntypedPointers_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShaderUntypedPointersFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderUntypedPointersFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderUntypedPointersFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShaderUntypedPointersFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderUntypedPointers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShaderUntypedPointersFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceShaderUntypedPointersFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderUntypedPointers == rhs.shaderUntypedPointers ); +# endif + } + + bool operator!=( PhysicalDeviceShaderUntypedPointersFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShaderUntypedPointersFeaturesKHR; + void * pNext = {}; + Bool32 shaderUntypedPointers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShaderUntypedPointersFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShaderUntypedPointersFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceShadingRateImageFeaturesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html + struct PhysicalDeviceShadingRateImageFeaturesNV + { + using NativeType = VkPhysicalDeviceShadingRateImageFeaturesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV( Bool32 shadingRateImage_ = {}, + Bool32 shadingRateCoarseSampleOrder_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shadingRateImage{ shadingRateImage_ } + , shadingRateCoarseSampleOrder{ shadingRateCoarseSampleOrder_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShadingRateImageFeaturesNV( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShadingRateImageFeaturesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShadingRateImageFeaturesNV & operator=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShadingRateImageFeaturesNV & operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & setShadingRateImage( Bool32 shadingRateImage_ ) & VULKAN_HPP_NOEXCEPT + { + shadingRateImage = shadingRateImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV && setShadingRateImage( Bool32 shadingRateImage_ ) && VULKAN_HPP_NOEXCEPT + { + shadingRateImage = shadingRateImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & setShadingRateCoarseSampleOrder( Bool32 shadingRateCoarseSampleOrder_ ) & + VULKAN_HPP_NOEXCEPT + { + shadingRateCoarseSampleOrder = shadingRateCoarseSampleOrder_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV && setShadingRateCoarseSampleOrder( Bool32 shadingRateCoarseSampleOrder_ ) && + VULKAN_HPP_NOEXCEPT + { + shadingRateCoarseSampleOrder = shadingRateCoarseSampleOrder_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceShadingRateImageFeaturesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShadingRateImageFeaturesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShadingRateImageFeaturesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShadingRateImageFeaturesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shadingRateImage, shadingRateCoarseSampleOrder ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShadingRateImageFeaturesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateImage == rhs.shadingRateImage ) && + ( shadingRateCoarseSampleOrder == rhs.shadingRateCoarseSampleOrder ); +# endif + } + + bool operator!=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV; + void * pNext = {}; + Bool32 shadingRateImage = {}; + Bool32 shadingRateCoarseSampleOrder = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShadingRateImageFeaturesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShadingRateImageFeaturesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceShadingRateImagePropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html + struct PhysicalDeviceShadingRateImagePropertiesNV + { + using NativeType = VkPhysicalDeviceShadingRateImagePropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImagePropertiesNV( Extent2D shadingRateTexelSize_ = {}, + uint32_t shadingRatePaletteSize_ = {}, + uint32_t shadingRateMaxCoarseSamples_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shadingRateTexelSize{ shadingRateTexelSize_ } + , shadingRatePaletteSize{ shadingRatePaletteSize_ } + , shadingRateMaxCoarseSamples{ shadingRateMaxCoarseSamples_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImagePropertiesNV( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceShadingRateImagePropertiesNV( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceShadingRateImagePropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceShadingRateImagePropertiesNV & operator=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceShadingRateImagePropertiesNV & operator=( VkPhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceShadingRateImagePropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShadingRateImagePropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShadingRateImagePropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceShadingRateImagePropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shadingRateTexelSize, shadingRatePaletteSize, shadingRateMaxCoarseSamples ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceShadingRateImagePropertiesNV const & ) const = default; +#else + bool operator==( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateTexelSize == rhs.shadingRateTexelSize ) && + ( shadingRatePaletteSize == rhs.shadingRatePaletteSize ) && ( shadingRateMaxCoarseSamples == rhs.shadingRateMaxCoarseSamples ); +# endif + } + + bool operator!=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV; + void * pNext = {}; + Extent2D shadingRateTexelSize = {}; + uint32_t shadingRatePaletteSize = {}; + uint32_t shadingRateMaxCoarseSamples = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceShadingRateImagePropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceShadingRateImagePropertiesNV; + }; + + // wrapper struct for struct VkPhysicalDeviceSparseImageFormatInfo2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSparseImageFormatInfo2.html + struct PhysicalDeviceSparseImageFormatInfo2 + { + using NativeType = VkPhysicalDeviceSparseImageFormatInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSparseImageFormatInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseImageFormatInfo2( Format format_ = Format::eUndefined, + ImageType type_ = ImageType::e1D, + SampleCountFlagBits samples_ = SampleCountFlagBits::e1, + ImageUsageFlags usage_ = {}, + ImageTiling tiling_ = ImageTiling::eOptimal, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , format{ format_ } + , type{ type_ } + , samples{ samples_ } + , usage{ usage_ } + , tiling{ tiling_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseImageFormatInfo2( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSparseImageFormatInfo2( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSparseImageFormatInfo2( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSparseImageFormatInfo2 & operator=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSparseImageFormatInfo2 & operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setType( ImageType type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 && setType( ImageType type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setSamples( SampleCountFlagBits samples_ ) & VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 && setSamples( SampleCountFlagBits samples_ ) && VULKAN_HPP_NOEXCEPT + { + samples = samples_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setUsage( ImageUsageFlags usage_ ) & VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 && setUsage( ImageUsageFlags usage_ ) && VULKAN_HPP_NOEXCEPT + { + usage = usage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & setTiling( ImageTiling tiling_ ) & VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 && setTiling( ImageTiling tiling_ ) && VULKAN_HPP_NOEXCEPT + { + tiling = tiling_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceSparseImageFormatInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSparseImageFormatInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSparseImageFormatInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSparseImageFormatInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, format, type, samples, usage, tiling ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSparseImageFormatInfo2 const & ) const = default; +#else + bool operator==( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( type == rhs.type ) && ( samples == rhs.samples ) && + ( usage == rhs.usage ) && ( tiling == rhs.tiling ); +# endif + } + + bool operator!=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSparseImageFormatInfo2; + void const * pNext = {}; + Format format = Format::eUndefined; + ImageType type = ImageType::e1D; + SampleCountFlagBits samples = SampleCountFlagBits::e1; + ImageUsageFlags usage = {}; + ImageTiling tiling = ImageTiling::eOptimal; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSparseImageFormatInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSparseImageFormatInfo2; + }; + + using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2; + + // wrapper struct for struct VkPhysicalDeviceSubgroupProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupProperties.html + struct PhysicalDeviceSubgroupProperties + { + using NativeType = VkPhysicalDeviceSubgroupProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties( uint32_t subgroupSize_ = {}, + ShaderStageFlags supportedStages_ = {}, + SubgroupFeatureFlags supportedOperations_ = {}, + Bool32 quadOperationsInAllStages_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , subgroupSize{ subgroupSize_ } + , supportedStages{ supportedStages_ } + , supportedOperations{ supportedOperations_ } + , quadOperationsInAllStages{ quadOperationsInAllStages_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubgroupProperties( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubgroupProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSubgroupProperties & operator=( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSubgroupProperties & operator=( VkPhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceSubgroupProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubgroupProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubgroupProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubgroupProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subgroupSize, supportedStages, supportedOperations, quadOperationsInAllStages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubgroupProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subgroupSize == rhs.subgroupSize ) && ( supportedStages == rhs.supportedStages ) && + ( supportedOperations == rhs.supportedOperations ) && ( quadOperationsInAllStages == rhs.quadOperationsInAllStages ); +# endif + } + + bool operator!=( PhysicalDeviceSubgroupProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSubgroupProperties; + void * pNext = {}; + uint32_t subgroupSize = {}; + ShaderStageFlags supportedStages = {}; + SubgroupFeatureFlags supportedOperations = {}; + Bool32 quadOperationsInAllStages = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSubgroupProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSubgroupProperties; + }; + + // wrapper struct for struct VkPhysicalDeviceSubgroupSizeControlFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlFeatures.html + struct PhysicalDeviceSubgroupSizeControlFeatures + { + using NativeType = VkPhysicalDeviceSubgroupSizeControlFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupSizeControlFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeatures( Bool32 subgroupSizeControl_ = {}, + Bool32 computeFullSubgroups_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , subgroupSizeControl{ subgroupSizeControl_ } + , computeFullSubgroups{ computeFullSubgroups_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeatures( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubgroupSizeControlFeatures( VkPhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubgroupSizeControlFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSubgroupSizeControlFeatures & operator=( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSubgroupSizeControlFeatures & operator=( VkPhysicalDeviceSubgroupSizeControlFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & setSubgroupSizeControl( Bool32 subgroupSizeControl_ ) & VULKAN_HPP_NOEXCEPT + { + subgroupSizeControl = subgroupSizeControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures && setSubgroupSizeControl( Bool32 subgroupSizeControl_ ) && VULKAN_HPP_NOEXCEPT + { + subgroupSizeControl = subgroupSizeControl_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures & setComputeFullSubgroups( Bool32 computeFullSubgroups_ ) & VULKAN_HPP_NOEXCEPT + { + computeFullSubgroups = computeFullSubgroups_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeatures && setComputeFullSubgroups( Bool32 computeFullSubgroups_ ) && VULKAN_HPP_NOEXCEPT + { + computeFullSubgroups = computeFullSubgroups_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceSubgroupSizeControlFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubgroupSizeControlFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubgroupSizeControlFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubgroupSizeControlFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subgroupSizeControl, computeFullSubgroups ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubgroupSizeControlFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subgroupSizeControl == rhs.subgroupSizeControl ) && + ( computeFullSubgroups == rhs.computeFullSubgroups ); +# endif + } + + bool operator!=( PhysicalDeviceSubgroupSizeControlFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlFeatures; + void * pNext = {}; + Bool32 subgroupSizeControl = {}; + Bool32 computeFullSubgroups = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSubgroupSizeControlFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSubgroupSizeControlFeatures; + }; + + using PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures; + + // wrapper struct for struct VkPhysicalDeviceSubgroupSizeControlProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSubgroupSizeControlProperties.html + struct PhysicalDeviceSubgroupSizeControlProperties + { + using NativeType = VkPhysicalDeviceSubgroupSizeControlProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupSizeControlProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlProperties( uint32_t minSubgroupSize_ = {}, + uint32_t maxSubgroupSize_ = {}, + uint32_t maxComputeWorkgroupSubgroups_ = {}, + ShaderStageFlags requiredSubgroupSizeStages_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minSubgroupSize{ minSubgroupSize_ } + , maxSubgroupSize{ maxSubgroupSize_ } + , maxComputeWorkgroupSubgroups{ maxComputeWorkgroupSubgroups_ } + , requiredSubgroupSizeStages{ requiredSubgroupSizeStages_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlProperties( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubgroupSizeControlProperties( VkPhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubgroupSizeControlProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSubgroupSizeControlProperties & operator=( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSubgroupSizeControlProperties & operator=( VkPhysicalDeviceSubgroupSizeControlProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceSubgroupSizeControlProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubgroupSizeControlProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubgroupSizeControlProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubgroupSizeControlProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minSubgroupSize, maxSubgroupSize, maxComputeWorkgroupSubgroups, requiredSubgroupSizeStages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubgroupSizeControlProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minSubgroupSize == rhs.minSubgroupSize ) && ( maxSubgroupSize == rhs.maxSubgroupSize ) && + ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups ) && ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages ); +# endif + } + + bool operator!=( PhysicalDeviceSubgroupSizeControlProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlProperties; + void * pNext = {}; + uint32_t minSubgroupSize = {}; + uint32_t maxSubgroupSize = {}; + uint32_t maxComputeWorkgroupSubgroups = {}; + ShaderStageFlags requiredSubgroupSizeStages = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSubgroupSizeControlProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSubgroupSizeControlProperties; + }; + + using PhysicalDeviceSubgroupSizeControlPropertiesEXT = PhysicalDeviceSubgroupSizeControlProperties; + + // wrapper struct for struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT.html + struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT + { + using NativeType = VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubpassMergeFeedbackFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( Bool32 subpassMergeFeedback_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , subpassMergeFeedback{ subpassMergeFeedback_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubpassMergeFeedbackFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSubpassMergeFeedbackFeaturesEXT & operator=( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSubpassMergeFeedbackFeaturesEXT & operator=( VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassMergeFeedbackFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassMergeFeedbackFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassMergeFeedbackFeaturesEXT & setSubpassMergeFeedback( Bool32 subpassMergeFeedback_ ) & VULKAN_HPP_NOEXCEPT + { + subpassMergeFeedback = subpassMergeFeedback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassMergeFeedbackFeaturesEXT && setSubpassMergeFeedback( Bool32 subpassMergeFeedback_ ) && VULKAN_HPP_NOEXCEPT + { + subpassMergeFeedback = subpassMergeFeedback_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subpassMergeFeedback ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassMergeFeedback == rhs.subpassMergeFeedback ); +# endif + } + + bool operator!=( PhysicalDeviceSubpassMergeFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSubpassMergeFeedbackFeaturesEXT; + void * pNext = {}; + Bool32 subpassMergeFeedback = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSubpassMergeFeedbackFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSubpassMergeFeedbackFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingFeaturesHUAWEI.html + struct PhysicalDeviceSubpassShadingFeaturesHUAWEI + { + using NativeType = VkPhysicalDeviceSubpassShadingFeaturesHUAWEI; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingFeaturesHUAWEI( Bool32 subpassShading_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , subpassShading{ subpassShading_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingFeaturesHUAWEI( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubpassShadingFeaturesHUAWEI( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubpassShadingFeaturesHUAWEI( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSubpassShadingFeaturesHUAWEI & operator=( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSubpassShadingFeaturesHUAWEI & operator=( VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI & setSubpassShading( Bool32 subpassShading_ ) & VULKAN_HPP_NOEXCEPT + { + subpassShading = subpassShading_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubpassShadingFeaturesHUAWEI && setSubpassShading( Bool32 subpassShading_ ) && VULKAN_HPP_NOEXCEPT + { + subpassShading = subpassShading_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubpassShadingFeaturesHUAWEI *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subpassShading ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & ) const = default; +#else + bool operator==( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassShading == rhs.subpassShading ); +# endif + } + + bool operator!=( PhysicalDeviceSubpassShadingFeaturesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI; + void * pNext = {}; + Bool32 subpassShading = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSubpassShadingFeaturesHUAWEI; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSubpassShadingFeaturesHUAWEI; + }; + + // wrapper struct for struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSubpassShadingPropertiesHUAWEI.html + struct PhysicalDeviceSubpassShadingPropertiesHUAWEI + { + using NativeType = VkPhysicalDeviceSubpassShadingPropertiesHUAWEI; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingPropertiesHUAWEI( uint32_t maxSubpassShadingWorkgroupSizeAspectRatio_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxSubpassShadingWorkgroupSizeAspectRatio{ maxSubpassShadingWorkgroupSizeAspectRatio_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSubpassShadingPropertiesHUAWEI( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSubpassShadingPropertiesHUAWEI( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSubpassShadingPropertiesHUAWEI( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSubpassShadingPropertiesHUAWEI & operator=( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSubpassShadingPropertiesHUAWEI & operator=( VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSubpassShadingPropertiesHUAWEI *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxSubpassShadingWorkgroupSizeAspectRatio ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & ) const = default; +#else + bool operator==( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxSubpassShadingWorkgroupSizeAspectRatio == rhs.maxSubpassShadingWorkgroupSizeAspectRatio ); +# endif + } + + bool operator!=( PhysicalDeviceSubpassShadingPropertiesHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI; + void * pNext = {}; + uint32_t maxSubpassShadingWorkgroupSizeAspectRatio = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSubpassShadingPropertiesHUAWEI; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSubpassShadingPropertiesHUAWEI; + }; + + // wrapper struct for struct VkPhysicalDeviceSurfaceInfo2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSurfaceInfo2KHR.html + struct PhysicalDeviceSurfaceInfo2KHR + { + using NativeType = VkPhysicalDeviceSurfaceInfo2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSurfaceInfo2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , surface{ surface_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSurfaceInfo2KHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSurfaceInfo2KHR & operator=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSurfaceInfo2KHR & operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & setSurface( SurfaceKHR surface_ ) & VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR && setSurface( SurfaceKHR surface_ ) && VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceSurfaceInfo2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSurfaceInfo2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSurfaceInfo2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSurfaceInfo2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, surface ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSurfaceInfo2KHR const & ) const = default; +#else + bool operator==( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surface == rhs.surface ); +# endif + } + + bool operator!=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSurfaceInfo2KHR; + void const * pNext = {}; + SurfaceKHR surface = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSurfaceInfo2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSurfaceInfo2KHR; + }; + + // wrapper struct for struct VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR.html + struct PhysicalDeviceSwapchainMaintenance1FeaturesKHR + { + using NativeType = VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSwapchainMaintenance1FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSwapchainMaintenance1FeaturesKHR( Bool32 swapchainMaintenance1_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchainMaintenance1{ swapchainMaintenance1_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceSwapchainMaintenance1FeaturesKHR( PhysicalDeviceSwapchainMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSwapchainMaintenance1FeaturesKHR( VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSwapchainMaintenance1FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSwapchainMaintenance1FeaturesKHR & operator=( PhysicalDeviceSwapchainMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSwapchainMaintenance1FeaturesKHR & operator=( VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSwapchainMaintenance1FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSwapchainMaintenance1FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSwapchainMaintenance1FeaturesKHR & setSwapchainMaintenance1( Bool32 swapchainMaintenance1_ ) & VULKAN_HPP_NOEXCEPT + { + swapchainMaintenance1 = swapchainMaintenance1_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSwapchainMaintenance1FeaturesKHR && setSwapchainMaintenance1( Bool32 swapchainMaintenance1_ ) && VULKAN_HPP_NOEXCEPT + { + swapchainMaintenance1 = swapchainMaintenance1_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainMaintenance1 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSwapchainMaintenance1FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceSwapchainMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainMaintenance1 == rhs.swapchainMaintenance1 ); +# endif + } + + bool operator!=( PhysicalDeviceSwapchainMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSwapchainMaintenance1FeaturesKHR; + void * pNext = {}; + Bool32 swapchainMaintenance1 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSwapchainMaintenance1FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSwapchainMaintenance1FeaturesKHR; + }; + + using PhysicalDeviceSwapchainMaintenance1FeaturesEXT = PhysicalDeviceSwapchainMaintenance1FeaturesKHR; + + // wrapper struct for struct VkPhysicalDeviceSynchronization2Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceSynchronization2Features.html + struct PhysicalDeviceSynchronization2Features + { + using NativeType = VkPhysicalDeviceSynchronization2Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSynchronization2Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2Features( Bool32 synchronization2_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , synchronization2{ synchronization2_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2Features( PhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceSynchronization2Features( VkPhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceSynchronization2Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceSynchronization2Features & operator=( PhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceSynchronization2Features & operator=( VkPhysicalDeviceSynchronization2Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features & setSynchronization2( Bool32 synchronization2_ ) & VULKAN_HPP_NOEXCEPT + { + synchronization2 = synchronization2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2Features && setSynchronization2( Bool32 synchronization2_ ) && VULKAN_HPP_NOEXCEPT + { + synchronization2 = synchronization2_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceSynchronization2Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSynchronization2Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSynchronization2Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceSynchronization2Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, synchronization2 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceSynchronization2Features const & ) const = default; +#else + bool operator==( PhysicalDeviceSynchronization2Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( synchronization2 == rhs.synchronization2 ); +# endif + } + + bool operator!=( PhysicalDeviceSynchronization2Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceSynchronization2Features; + void * pNext = {}; + Bool32 synchronization2 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceSynchronization2Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceSynchronization2Features; + }; + + using PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features; + + // wrapper struct for struct VkPhysicalDeviceTensorFeaturesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorFeaturesARM.html + struct PhysicalDeviceTensorFeaturesARM + { + using NativeType = VkPhysicalDeviceTensorFeaturesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTensorFeaturesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTensorFeaturesARM( Bool32 tensorNonPacked_ = {}, + Bool32 shaderTensorAccess_ = {}, + Bool32 shaderStorageTensorArrayDynamicIndexing_ = {}, + Bool32 shaderStorageTensorArrayNonUniformIndexing_ = {}, + Bool32 descriptorBindingStorageTensorUpdateAfterBind_ = {}, + Bool32 tensors_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensorNonPacked{ tensorNonPacked_ } + , shaderTensorAccess{ shaderTensorAccess_ } + , shaderStorageTensorArrayDynamicIndexing{ shaderStorageTensorArrayDynamicIndexing_ } + , shaderStorageTensorArrayNonUniformIndexing{ shaderStorageTensorArrayNonUniformIndexing_ } + , descriptorBindingStorageTensorUpdateAfterBind{ descriptorBindingStorageTensorUpdateAfterBind_ } + , tensors{ tensors_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTensorFeaturesARM( PhysicalDeviceTensorFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTensorFeaturesARM( VkPhysicalDeviceTensorFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTensorFeaturesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTensorFeaturesARM & operator=( PhysicalDeviceTensorFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTensorFeaturesARM & operator=( VkPhysicalDeviceTensorFeaturesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM & setTensorNonPacked( Bool32 tensorNonPacked_ ) & VULKAN_HPP_NOEXCEPT + { + tensorNonPacked = tensorNonPacked_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM && setTensorNonPacked( Bool32 tensorNonPacked_ ) && VULKAN_HPP_NOEXCEPT + { + tensorNonPacked = tensorNonPacked_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM & setShaderTensorAccess( Bool32 shaderTensorAccess_ ) & VULKAN_HPP_NOEXCEPT + { + shaderTensorAccess = shaderTensorAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM && setShaderTensorAccess( Bool32 shaderTensorAccess_ ) && VULKAN_HPP_NOEXCEPT + { + shaderTensorAccess = shaderTensorAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM & setShaderStorageTensorArrayDynamicIndexing( Bool32 shaderStorageTensorArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageTensorArrayDynamicIndexing = shaderStorageTensorArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM && setShaderStorageTensorArrayDynamicIndexing( Bool32 shaderStorageTensorArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageTensorArrayDynamicIndexing = shaderStorageTensorArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM & + setShaderStorageTensorArrayNonUniformIndexing( Bool32 shaderStorageTensorArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageTensorArrayNonUniformIndexing = shaderStorageTensorArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM && + setShaderStorageTensorArrayNonUniformIndexing( Bool32 shaderStorageTensorArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageTensorArrayNonUniformIndexing = shaderStorageTensorArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM & + setDescriptorBindingStorageTensorUpdateAfterBind( Bool32 descriptorBindingStorageTensorUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageTensorUpdateAfterBind = descriptorBindingStorageTensorUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM && + setDescriptorBindingStorageTensorUpdateAfterBind( Bool32 descriptorBindingStorageTensorUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageTensorUpdateAfterBind = descriptorBindingStorageTensorUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM & setTensors( Bool32 tensors_ ) & VULKAN_HPP_NOEXCEPT + { + tensors = tensors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTensorFeaturesARM && setTensors( Bool32 tensors_ ) && VULKAN_HPP_NOEXCEPT + { + tensors = tensors_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceTensorFeaturesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTensorFeaturesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTensorFeaturesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTensorFeaturesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + tensorNonPacked, + shaderTensorAccess, + shaderStorageTensorArrayDynamicIndexing, + shaderStorageTensorArrayNonUniformIndexing, + descriptorBindingStorageTensorUpdateAfterBind, + tensors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTensorFeaturesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceTensorFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensorNonPacked == rhs.tensorNonPacked ) && + ( shaderTensorAccess == rhs.shaderTensorAccess ) && ( shaderStorageTensorArrayDynamicIndexing == rhs.shaderStorageTensorArrayDynamicIndexing ) && + ( shaderStorageTensorArrayNonUniformIndexing == rhs.shaderStorageTensorArrayNonUniformIndexing ) && + ( descriptorBindingStorageTensorUpdateAfterBind == rhs.descriptorBindingStorageTensorUpdateAfterBind ) && ( tensors == rhs.tensors ); +# endif + } + + bool operator!=( PhysicalDeviceTensorFeaturesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTensorFeaturesARM; + void * pNext = {}; + Bool32 tensorNonPacked = {}; + Bool32 shaderTensorAccess = {}; + Bool32 shaderStorageTensorArrayDynamicIndexing = {}; + Bool32 shaderStorageTensorArrayNonUniformIndexing = {}; + Bool32 descriptorBindingStorageTensorUpdateAfterBind = {}; + Bool32 tensors = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTensorFeaturesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTensorFeaturesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceTensorPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTensorPropertiesARM.html + struct PhysicalDeviceTensorPropertiesARM + { + using NativeType = VkPhysicalDeviceTensorPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTensorPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTensorPropertiesARM( uint32_t maxTensorDimensionCount_ = {}, + uint64_t maxTensorElements_ = {}, + uint64_t maxPerDimensionTensorElements_ = {}, + int64_t maxTensorStride_ = {}, + uint64_t maxTensorSize_ = {}, + uint32_t maxTensorShaderAccessArrayLength_ = {}, + uint32_t maxTensorShaderAccessSize_ = {}, + uint32_t maxDescriptorSetStorageTensors_ = {}, + uint32_t maxPerStageDescriptorSetStorageTensors_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageTensors_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindStorageTensors_ = {}, + Bool32 shaderStorageTensorArrayNonUniformIndexingNative_ = {}, + ShaderStageFlags shaderTensorSupportedStages_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxTensorDimensionCount{ maxTensorDimensionCount_ } + , maxTensorElements{ maxTensorElements_ } + , maxPerDimensionTensorElements{ maxPerDimensionTensorElements_ } + , maxTensorStride{ maxTensorStride_ } + , maxTensorSize{ maxTensorSize_ } + , maxTensorShaderAccessArrayLength{ maxTensorShaderAccessArrayLength_ } + , maxTensorShaderAccessSize{ maxTensorShaderAccessSize_ } + , maxDescriptorSetStorageTensors{ maxDescriptorSetStorageTensors_ } + , maxPerStageDescriptorSetStorageTensors{ maxPerStageDescriptorSetStorageTensors_ } + , maxDescriptorSetUpdateAfterBindStorageTensors{ maxDescriptorSetUpdateAfterBindStorageTensors_ } + , maxPerStageDescriptorUpdateAfterBindStorageTensors{ maxPerStageDescriptorUpdateAfterBindStorageTensors_ } + , shaderStorageTensorArrayNonUniformIndexingNative{ shaderStorageTensorArrayNonUniformIndexingNative_ } + , shaderTensorSupportedStages{ shaderTensorSupportedStages_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTensorPropertiesARM( PhysicalDeviceTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTensorPropertiesARM( VkPhysicalDeviceTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTensorPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTensorPropertiesARM & operator=( PhysicalDeviceTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTensorPropertiesARM & operator=( VkPhysicalDeviceTensorPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceTensorPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTensorPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTensorPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTensorPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxTensorDimensionCount, + maxTensorElements, + maxPerDimensionTensorElements, + maxTensorStride, + maxTensorSize, + maxTensorShaderAccessArrayLength, + maxTensorShaderAccessSize, + maxDescriptorSetStorageTensors, + maxPerStageDescriptorSetStorageTensors, + maxDescriptorSetUpdateAfterBindStorageTensors, + maxPerStageDescriptorUpdateAfterBindStorageTensors, + shaderStorageTensorArrayNonUniformIndexingNative, + shaderTensorSupportedStages ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTensorPropertiesARM const & ) const = default; +#else + bool operator==( PhysicalDeviceTensorPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTensorDimensionCount == rhs.maxTensorDimensionCount ) && + ( maxTensorElements == rhs.maxTensorElements ) && ( maxPerDimensionTensorElements == rhs.maxPerDimensionTensorElements ) && + ( maxTensorStride == rhs.maxTensorStride ) && ( maxTensorSize == rhs.maxTensorSize ) && + ( maxTensorShaderAccessArrayLength == rhs.maxTensorShaderAccessArrayLength ) && ( maxTensorShaderAccessSize == rhs.maxTensorShaderAccessSize ) && + ( maxDescriptorSetStorageTensors == rhs.maxDescriptorSetStorageTensors ) && + ( maxPerStageDescriptorSetStorageTensors == rhs.maxPerStageDescriptorSetStorageTensors ) && + ( maxDescriptorSetUpdateAfterBindStorageTensors == rhs.maxDescriptorSetUpdateAfterBindStorageTensors ) && + ( maxPerStageDescriptorUpdateAfterBindStorageTensors == rhs.maxPerStageDescriptorUpdateAfterBindStorageTensors ) && + ( shaderStorageTensorArrayNonUniformIndexingNative == rhs.shaderStorageTensorArrayNonUniformIndexingNative ) && + ( shaderTensorSupportedStages == rhs.shaderTensorSupportedStages ); +# endif + } + + bool operator!=( PhysicalDeviceTensorPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTensorPropertiesARM; + void * pNext = {}; + uint32_t maxTensorDimensionCount = {}; + uint64_t maxTensorElements = {}; + uint64_t maxPerDimensionTensorElements = {}; + int64_t maxTensorStride = {}; + uint64_t maxTensorSize = {}; + uint32_t maxTensorShaderAccessArrayLength = {}; + uint32_t maxTensorShaderAccessSize = {}; + uint32_t maxDescriptorSetStorageTensors = {}; + uint32_t maxPerStageDescriptorSetStorageTensors = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageTensors = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageTensors = {}; + Bool32 shaderStorageTensorArrayNonUniformIndexingNative = {}; + ShaderStageFlags shaderTensorSupportedStages = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTensorPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTensorPropertiesARM; + }; + + // wrapper struct for struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT.html + struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT + { + using NativeType = VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT( Bool32 texelBufferAlignment_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , texelBufferAlignment{ texelBufferAlignment_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceTexelBufferAlignmentFeaturesEXT( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTexelBufferAlignmentFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setTexelBufferAlignment( Bool32 texelBufferAlignment_ ) & VULKAN_HPP_NOEXCEPT + { + texelBufferAlignment = texelBufferAlignment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT && setTexelBufferAlignment( Bool32 texelBufferAlignment_ ) && VULKAN_HPP_NOEXCEPT + { + texelBufferAlignment = texelBufferAlignment_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, texelBufferAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( texelBufferAlignment == rhs.texelBufferAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT; + void * pNext = {}; + Bool32 texelBufferAlignment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTexelBufferAlignmentFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTexelBufferAlignmentFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceTexelBufferAlignmentProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTexelBufferAlignmentProperties.html + struct PhysicalDeviceTexelBufferAlignmentProperties + { + using NativeType = VkPhysicalDeviceTexelBufferAlignmentProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTexelBufferAlignmentProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentProperties( DeviceSize storageTexelBufferOffsetAlignmentBytes_ = {}, + Bool32 storageTexelBufferOffsetSingleTexelAlignment_ = {}, + DeviceSize uniformTexelBufferOffsetAlignmentBytes_ = {}, + Bool32 uniformTexelBufferOffsetSingleTexelAlignment_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , storageTexelBufferOffsetAlignmentBytes{ storageTexelBufferOffsetAlignmentBytes_ } + , storageTexelBufferOffsetSingleTexelAlignment{ storageTexelBufferOffsetSingleTexelAlignment_ } + , uniformTexelBufferOffsetAlignmentBytes{ uniformTexelBufferOffsetAlignmentBytes_ } + , uniformTexelBufferOffsetSingleTexelAlignment{ uniformTexelBufferOffsetSingleTexelAlignment_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentProperties( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTexelBufferAlignmentProperties( VkPhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTexelBufferAlignmentProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTexelBufferAlignmentProperties & operator=( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTexelBufferAlignmentProperties & operator=( VkPhysicalDeviceTexelBufferAlignmentProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceTexelBufferAlignmentProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTexelBufferAlignmentProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTexelBufferAlignmentProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTexelBufferAlignmentProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + storageTexelBufferOffsetAlignmentBytes, + storageTexelBufferOffsetSingleTexelAlignment, + uniformTexelBufferOffsetAlignmentBytes, + uniformTexelBufferOffsetSingleTexelAlignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTexelBufferAlignmentProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes ) && + ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment ) && + ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes ) && + ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment ); +# endif + } + + bool operator!=( PhysicalDeviceTexelBufferAlignmentProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentProperties; + void * pNext = {}; + DeviceSize storageTexelBufferOffsetAlignmentBytes = {}; + Bool32 storageTexelBufferOffsetSingleTexelAlignment = {}; + DeviceSize uniformTexelBufferOffsetAlignmentBytes = {}; + Bool32 uniformTexelBufferOffsetSingleTexelAlignment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTexelBufferAlignmentProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTexelBufferAlignmentProperties; + }; + + using PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentProperties; + + // wrapper struct for struct VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT.html + struct PhysicalDeviceTextureCompressionASTC3DFeaturesEXT + { + using NativeType = VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTextureCompressionAstc3DFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTC3DFeaturesEXT( Bool32 textureCompressionASTC_3D_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , textureCompressionASTC_3D{ textureCompressionASTC_3D_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceTextureCompressionASTC3DFeaturesEXT( PhysicalDeviceTextureCompressionASTC3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTextureCompressionASTC3DFeaturesEXT( VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTextureCompressionASTC3DFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTextureCompressionASTC3DFeaturesEXT & + operator=( PhysicalDeviceTextureCompressionASTC3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTextureCompressionASTC3DFeaturesEXT & operator=( VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTC3DFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTC3DFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTC3DFeaturesEXT & setTextureCompressionASTC_3D( Bool32 textureCompressionASTC_3D_ ) & + VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_3D = textureCompressionASTC_3D_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTC3DFeaturesEXT && setTextureCompressionASTC_3D( Bool32 textureCompressionASTC_3D_ ) && + VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_3D = textureCompressionASTC_3D_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, textureCompressionASTC_3D ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTextureCompressionASTC3DFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceTextureCompressionASTC3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( textureCompressionASTC_3D == rhs.textureCompressionASTC_3D ); +# endif + } + + bool operator!=( PhysicalDeviceTextureCompressionASTC3DFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTextureCompressionAstc3DFeaturesEXT; + void * pNext = {}; + Bool32 textureCompressionASTC_3D = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTextureCompressionASTC3DFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTextureCompressionASTC3DFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTextureCompressionASTCHDRFeatures.html + struct PhysicalDeviceTextureCompressionASTCHDRFeatures + { + using NativeType = VkPhysicalDeviceTextureCompressionASTCHDRFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeatures( Bool32 textureCompressionASTC_HDR_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , textureCompressionASTC_HDR{ textureCompressionASTC_HDR_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceTextureCompressionASTCHDRFeatures( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTextureCompressionASTCHDRFeatures( VkPhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTextureCompressionASTCHDRFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTextureCompressionASTCHDRFeatures & operator=( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTextureCompressionASTCHDRFeatures & operator=( VkPhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures & setTextureCompressionASTC_HDR( Bool32 textureCompressionASTC_HDR_ ) & + VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_HDR = textureCompressionASTC_HDR_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeatures && setTextureCompressionASTC_HDR( Bool32 textureCompressionASTC_HDR_ ) && + VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_HDR = textureCompressionASTC_HDR_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTextureCompressionASTCHDRFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, textureCompressionASTC_HDR ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTextureCompressionASTCHDRFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR ); +# endif + } + + bool operator!=( PhysicalDeviceTextureCompressionASTCHDRFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures; + void * pNext = {}; + Bool32 textureCompressionASTC_HDR = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTextureCompressionASTCHDRFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTextureCompressionASTCHDRFeatures; + }; + + using PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeatures; + + // wrapper struct for struct VkPhysicalDeviceTileMemoryHeapFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapFeaturesQCOM.html + struct PhysicalDeviceTileMemoryHeapFeaturesQCOM + { + using NativeType = VkPhysicalDeviceTileMemoryHeapFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTileMemoryHeapFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTileMemoryHeapFeaturesQCOM( Bool32 tileMemoryHeap_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tileMemoryHeap{ tileMemoryHeap_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTileMemoryHeapFeaturesQCOM( PhysicalDeviceTileMemoryHeapFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTileMemoryHeapFeaturesQCOM( VkPhysicalDeviceTileMemoryHeapFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTileMemoryHeapFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTileMemoryHeapFeaturesQCOM & operator=( PhysicalDeviceTileMemoryHeapFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTileMemoryHeapFeaturesQCOM & operator=( VkPhysicalDeviceTileMemoryHeapFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileMemoryHeapFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileMemoryHeapFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileMemoryHeapFeaturesQCOM & setTileMemoryHeap( Bool32 tileMemoryHeap_ ) & VULKAN_HPP_NOEXCEPT + { + tileMemoryHeap = tileMemoryHeap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileMemoryHeapFeaturesQCOM && setTileMemoryHeap( Bool32 tileMemoryHeap_ ) && VULKAN_HPP_NOEXCEPT + { + tileMemoryHeap = tileMemoryHeap_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceTileMemoryHeapFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileMemoryHeapFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileMemoryHeapFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileMemoryHeapFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tileMemoryHeap ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTileMemoryHeapFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceTileMemoryHeapFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tileMemoryHeap == rhs.tileMemoryHeap ); +# endif + } + + bool operator!=( PhysicalDeviceTileMemoryHeapFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTileMemoryHeapFeaturesQCOM; + void * pNext = {}; + Bool32 tileMemoryHeap = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTileMemoryHeapFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTileMemoryHeapFeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceTileMemoryHeapPropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTileMemoryHeapPropertiesQCOM.html + struct PhysicalDeviceTileMemoryHeapPropertiesQCOM + { + using NativeType = VkPhysicalDeviceTileMemoryHeapPropertiesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTileMemoryHeapPropertiesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTileMemoryHeapPropertiesQCOM( Bool32 queueSubmitBoundary_ = {}, + Bool32 tileBufferTransfers_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , queueSubmitBoundary{ queueSubmitBoundary_ } + , tileBufferTransfers{ tileBufferTransfers_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTileMemoryHeapPropertiesQCOM( PhysicalDeviceTileMemoryHeapPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTileMemoryHeapPropertiesQCOM( VkPhysicalDeviceTileMemoryHeapPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTileMemoryHeapPropertiesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTileMemoryHeapPropertiesQCOM & operator=( PhysicalDeviceTileMemoryHeapPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTileMemoryHeapPropertiesQCOM & operator=( VkPhysicalDeviceTileMemoryHeapPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileMemoryHeapPropertiesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileMemoryHeapPropertiesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileMemoryHeapPropertiesQCOM & setQueueSubmitBoundary( Bool32 queueSubmitBoundary_ ) & VULKAN_HPP_NOEXCEPT + { + queueSubmitBoundary = queueSubmitBoundary_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileMemoryHeapPropertiesQCOM && setQueueSubmitBoundary( Bool32 queueSubmitBoundary_ ) && VULKAN_HPP_NOEXCEPT + { + queueSubmitBoundary = queueSubmitBoundary_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileMemoryHeapPropertiesQCOM & setTileBufferTransfers( Bool32 tileBufferTransfers_ ) & VULKAN_HPP_NOEXCEPT + { + tileBufferTransfers = tileBufferTransfers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileMemoryHeapPropertiesQCOM && setTileBufferTransfers( Bool32 tileBufferTransfers_ ) && VULKAN_HPP_NOEXCEPT + { + tileBufferTransfers = tileBufferTransfers_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceTileMemoryHeapPropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileMemoryHeapPropertiesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileMemoryHeapPropertiesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileMemoryHeapPropertiesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, queueSubmitBoundary, tileBufferTransfers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTileMemoryHeapPropertiesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceTileMemoryHeapPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueSubmitBoundary == rhs.queueSubmitBoundary ) && + ( tileBufferTransfers == rhs.tileBufferTransfers ); +# endif + } + + bool operator!=( PhysicalDeviceTileMemoryHeapPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTileMemoryHeapPropertiesQCOM; + void * pNext = {}; + Bool32 queueSubmitBoundary = {}; + Bool32 tileBufferTransfers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTileMemoryHeapPropertiesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTileMemoryHeapPropertiesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceTilePropertiesFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTilePropertiesFeaturesQCOM.html + struct PhysicalDeviceTilePropertiesFeaturesQCOM + { + using NativeType = VkPhysicalDeviceTilePropertiesFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTilePropertiesFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTilePropertiesFeaturesQCOM( Bool32 tileProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tileProperties{ tileProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTilePropertiesFeaturesQCOM( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTilePropertiesFeaturesQCOM( VkPhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTilePropertiesFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTilePropertiesFeaturesQCOM & operator=( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTilePropertiesFeaturesQCOM & operator=( VkPhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTilePropertiesFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTilePropertiesFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTilePropertiesFeaturesQCOM & setTileProperties( Bool32 tileProperties_ ) & VULKAN_HPP_NOEXCEPT + { + tileProperties = tileProperties_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTilePropertiesFeaturesQCOM && setTileProperties( Bool32 tileProperties_ ) && VULKAN_HPP_NOEXCEPT + { + tileProperties = tileProperties_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceTilePropertiesFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTilePropertiesFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTilePropertiesFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTilePropertiesFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tileProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTilePropertiesFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tileProperties == rhs.tileProperties ); +# endif + } + + bool operator!=( PhysicalDeviceTilePropertiesFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTilePropertiesFeaturesQCOM; + void * pNext = {}; + Bool32 tileProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTilePropertiesFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTilePropertiesFeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceTileShadingFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingFeaturesQCOM.html + struct PhysicalDeviceTileShadingFeaturesQCOM + { + using NativeType = VkPhysicalDeviceTileShadingFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTileShadingFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTileShadingFeaturesQCOM( Bool32 tileShading_ = {}, + Bool32 tileShadingFragmentStage_ = {}, + Bool32 tileShadingColorAttachments_ = {}, + Bool32 tileShadingDepthAttachments_ = {}, + Bool32 tileShadingStencilAttachments_ = {}, + Bool32 tileShadingInputAttachments_ = {}, + Bool32 tileShadingSampledAttachments_ = {}, + Bool32 tileShadingPerTileDraw_ = {}, + Bool32 tileShadingPerTileDispatch_ = {}, + Bool32 tileShadingDispatchTile_ = {}, + Bool32 tileShadingApron_ = {}, + Bool32 tileShadingAnisotropicApron_ = {}, + Bool32 tileShadingAtomicOps_ = {}, + Bool32 tileShadingImageProcessing_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tileShading{ tileShading_ } + , tileShadingFragmentStage{ tileShadingFragmentStage_ } + , tileShadingColorAttachments{ tileShadingColorAttachments_ } + , tileShadingDepthAttachments{ tileShadingDepthAttachments_ } + , tileShadingStencilAttachments{ tileShadingStencilAttachments_ } + , tileShadingInputAttachments{ tileShadingInputAttachments_ } + , tileShadingSampledAttachments{ tileShadingSampledAttachments_ } + , tileShadingPerTileDraw{ tileShadingPerTileDraw_ } + , tileShadingPerTileDispatch{ tileShadingPerTileDispatch_ } + , tileShadingDispatchTile{ tileShadingDispatchTile_ } + , tileShadingApron{ tileShadingApron_ } + , tileShadingAnisotropicApron{ tileShadingAnisotropicApron_ } + , tileShadingAtomicOps{ tileShadingAtomicOps_ } + , tileShadingImageProcessing{ tileShadingImageProcessing_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTileShadingFeaturesQCOM( PhysicalDeviceTileShadingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTileShadingFeaturesQCOM( VkPhysicalDeviceTileShadingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTileShadingFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTileShadingFeaturesQCOM & operator=( PhysicalDeviceTileShadingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTileShadingFeaturesQCOM & operator=( VkPhysicalDeviceTileShadingFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShading( Bool32 tileShading_ ) & VULKAN_HPP_NOEXCEPT + { + tileShading = tileShading_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShading( Bool32 tileShading_ ) && VULKAN_HPP_NOEXCEPT + { + tileShading = tileShading_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingFragmentStage( Bool32 tileShadingFragmentStage_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingFragmentStage = tileShadingFragmentStage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingFragmentStage( Bool32 tileShadingFragmentStage_ ) && VULKAN_HPP_NOEXCEPT + { + tileShadingFragmentStage = tileShadingFragmentStage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingColorAttachments( Bool32 tileShadingColorAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingColorAttachments = tileShadingColorAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingColorAttachments( Bool32 tileShadingColorAttachments_ ) && + VULKAN_HPP_NOEXCEPT + { + tileShadingColorAttachments = tileShadingColorAttachments_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingDepthAttachments( Bool32 tileShadingDepthAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingDepthAttachments = tileShadingDepthAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingDepthAttachments( Bool32 tileShadingDepthAttachments_ ) && + VULKAN_HPP_NOEXCEPT + { + tileShadingDepthAttachments = tileShadingDepthAttachments_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingStencilAttachments( Bool32 tileShadingStencilAttachments_ ) & + VULKAN_HPP_NOEXCEPT + { + tileShadingStencilAttachments = tileShadingStencilAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingStencilAttachments( Bool32 tileShadingStencilAttachments_ ) && + VULKAN_HPP_NOEXCEPT + { + tileShadingStencilAttachments = tileShadingStencilAttachments_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingInputAttachments( Bool32 tileShadingInputAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingInputAttachments = tileShadingInputAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingInputAttachments( Bool32 tileShadingInputAttachments_ ) && + VULKAN_HPP_NOEXCEPT + { + tileShadingInputAttachments = tileShadingInputAttachments_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingSampledAttachments( Bool32 tileShadingSampledAttachments_ ) & + VULKAN_HPP_NOEXCEPT + { + tileShadingSampledAttachments = tileShadingSampledAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingSampledAttachments( Bool32 tileShadingSampledAttachments_ ) && + VULKAN_HPP_NOEXCEPT + { + tileShadingSampledAttachments = tileShadingSampledAttachments_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingPerTileDraw( Bool32 tileShadingPerTileDraw_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingPerTileDraw = tileShadingPerTileDraw_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingPerTileDraw( Bool32 tileShadingPerTileDraw_ ) && VULKAN_HPP_NOEXCEPT + { + tileShadingPerTileDraw = tileShadingPerTileDraw_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingPerTileDispatch( Bool32 tileShadingPerTileDispatch_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingPerTileDispatch = tileShadingPerTileDispatch_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingPerTileDispatch( Bool32 tileShadingPerTileDispatch_ ) && VULKAN_HPP_NOEXCEPT + { + tileShadingPerTileDispatch = tileShadingPerTileDispatch_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingDispatchTile( Bool32 tileShadingDispatchTile_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingDispatchTile = tileShadingDispatchTile_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingDispatchTile( Bool32 tileShadingDispatchTile_ ) && VULKAN_HPP_NOEXCEPT + { + tileShadingDispatchTile = tileShadingDispatchTile_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingApron( Bool32 tileShadingApron_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingApron = tileShadingApron_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingApron( Bool32 tileShadingApron_ ) && VULKAN_HPP_NOEXCEPT + { + tileShadingApron = tileShadingApron_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingAnisotropicApron( Bool32 tileShadingAnisotropicApron_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingAnisotropicApron = tileShadingAnisotropicApron_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingAnisotropicApron( Bool32 tileShadingAnisotropicApron_ ) && + VULKAN_HPP_NOEXCEPT + { + tileShadingAnisotropicApron = tileShadingAnisotropicApron_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingAtomicOps( Bool32 tileShadingAtomicOps_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingAtomicOps = tileShadingAtomicOps_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingAtomicOps( Bool32 tileShadingAtomicOps_ ) && VULKAN_HPP_NOEXCEPT + { + tileShadingAtomicOps = tileShadingAtomicOps_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM & setTileShadingImageProcessing( Bool32 tileShadingImageProcessing_ ) & VULKAN_HPP_NOEXCEPT + { + tileShadingImageProcessing = tileShadingImageProcessing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTileShadingFeaturesQCOM && setTileShadingImageProcessing( Bool32 tileShadingImageProcessing_ ) && VULKAN_HPP_NOEXCEPT + { + tileShadingImageProcessing = tileShadingImageProcessing_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceTileShadingFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileShadingFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileShadingFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileShadingFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + tileShading, + tileShadingFragmentStage, + tileShadingColorAttachments, + tileShadingDepthAttachments, + tileShadingStencilAttachments, + tileShadingInputAttachments, + tileShadingSampledAttachments, + tileShadingPerTileDraw, + tileShadingPerTileDispatch, + tileShadingDispatchTile, + tileShadingApron, + tileShadingAnisotropicApron, + tileShadingAtomicOps, + tileShadingImageProcessing ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTileShadingFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceTileShadingFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tileShading == rhs.tileShading ) && + ( tileShadingFragmentStage == rhs.tileShadingFragmentStage ) && ( tileShadingColorAttachments == rhs.tileShadingColorAttachments ) && + ( tileShadingDepthAttachments == rhs.tileShadingDepthAttachments ) && ( tileShadingStencilAttachments == rhs.tileShadingStencilAttachments ) && + ( tileShadingInputAttachments == rhs.tileShadingInputAttachments ) && ( tileShadingSampledAttachments == rhs.tileShadingSampledAttachments ) && + ( tileShadingPerTileDraw == rhs.tileShadingPerTileDraw ) && ( tileShadingPerTileDispatch == rhs.tileShadingPerTileDispatch ) && + ( tileShadingDispatchTile == rhs.tileShadingDispatchTile ) && ( tileShadingApron == rhs.tileShadingApron ) && + ( tileShadingAnisotropicApron == rhs.tileShadingAnisotropicApron ) && ( tileShadingAtomicOps == rhs.tileShadingAtomicOps ) && + ( tileShadingImageProcessing == rhs.tileShadingImageProcessing ); +# endif + } + + bool operator!=( PhysicalDeviceTileShadingFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTileShadingFeaturesQCOM; + void * pNext = {}; + Bool32 tileShading = {}; + Bool32 tileShadingFragmentStage = {}; + Bool32 tileShadingColorAttachments = {}; + Bool32 tileShadingDepthAttachments = {}; + Bool32 tileShadingStencilAttachments = {}; + Bool32 tileShadingInputAttachments = {}; + Bool32 tileShadingSampledAttachments = {}; + Bool32 tileShadingPerTileDraw = {}; + Bool32 tileShadingPerTileDispatch = {}; + Bool32 tileShadingDispatchTile = {}; + Bool32 tileShadingApron = {}; + Bool32 tileShadingAnisotropicApron = {}; + Bool32 tileShadingAtomicOps = {}; + Bool32 tileShadingImageProcessing = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTileShadingFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTileShadingFeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceTileShadingPropertiesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTileShadingPropertiesQCOM.html + struct PhysicalDeviceTileShadingPropertiesQCOM + { + using NativeType = VkPhysicalDeviceTileShadingPropertiesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTileShadingPropertiesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTileShadingPropertiesQCOM( uint32_t maxApronSize_ = {}, + Bool32 preferNonCoherent_ = {}, + Extent2D tileGranularity_ = {}, + Extent2D maxTileShadingRate_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxApronSize{ maxApronSize_ } + , preferNonCoherent{ preferNonCoherent_ } + , tileGranularity{ tileGranularity_ } + , maxTileShadingRate{ maxTileShadingRate_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTileShadingPropertiesQCOM( PhysicalDeviceTileShadingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTileShadingPropertiesQCOM( VkPhysicalDeviceTileShadingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTileShadingPropertiesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTileShadingPropertiesQCOM & operator=( PhysicalDeviceTileShadingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTileShadingPropertiesQCOM & operator=( VkPhysicalDeviceTileShadingPropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceTileShadingPropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileShadingPropertiesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileShadingPropertiesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTileShadingPropertiesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxApronSize, preferNonCoherent, tileGranularity, maxTileShadingRate ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTileShadingPropertiesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceTileShadingPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxApronSize == rhs.maxApronSize ) && ( preferNonCoherent == rhs.preferNonCoherent ) && + ( tileGranularity == rhs.tileGranularity ) && ( maxTileShadingRate == rhs.maxTileShadingRate ); +# endif + } + + bool operator!=( PhysicalDeviceTileShadingPropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTileShadingPropertiesQCOM; + void * pNext = {}; + uint32_t maxApronSize = {}; + Bool32 preferNonCoherent = {}; + Extent2D tileGranularity = {}; + Extent2D maxTileShadingRate = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTileShadingPropertiesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTileShadingPropertiesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceTimelineSemaphoreFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreFeatures.html + struct PhysicalDeviceTimelineSemaphoreFeatures + { + using NativeType = VkPhysicalDeviceTimelineSemaphoreFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( Bool32 timelineSemaphore_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , timelineSemaphore{ timelineSemaphore_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTimelineSemaphoreFeatures( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTimelineSemaphoreFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTimelineSemaphoreFeatures & operator=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTimelineSemaphoreFeatures & operator=( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & setTimelineSemaphore( Bool32 timelineSemaphore_ ) & VULKAN_HPP_NOEXCEPT + { + timelineSemaphore = timelineSemaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures && setTimelineSemaphore( Bool32 timelineSemaphore_ ) && VULKAN_HPP_NOEXCEPT + { + timelineSemaphore = timelineSemaphore_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceTimelineSemaphoreFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTimelineSemaphoreFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTimelineSemaphoreFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTimelineSemaphoreFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, timelineSemaphore ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTimelineSemaphoreFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timelineSemaphore == rhs.timelineSemaphore ); +# endif + } + + bool operator!=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures; + void * pNext = {}; + Bool32 timelineSemaphore = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTimelineSemaphoreFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTimelineSemaphoreFeatures; + }; + + using PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures; + + // wrapper struct for struct VkPhysicalDeviceTimelineSemaphoreProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTimelineSemaphoreProperties.html + struct PhysicalDeviceTimelineSemaphoreProperties + { + using NativeType = VkPhysicalDeviceTimelineSemaphoreProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTimelineSemaphoreProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( uint64_t maxTimelineSemaphoreValueDifference_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxTimelineSemaphoreValueDifference{ maxTimelineSemaphoreValueDifference_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTimelineSemaphoreProperties( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTimelineSemaphoreProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTimelineSemaphoreProperties & operator=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTimelineSemaphoreProperties & operator=( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceTimelineSemaphoreProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTimelineSemaphoreProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTimelineSemaphoreProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTimelineSemaphoreProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxTimelineSemaphoreValueDifference ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTimelineSemaphoreProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference ); +# endif + } + + bool operator!=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreProperties; + void * pNext = {}; + uint64_t maxTimelineSemaphoreValueDifference = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTimelineSemaphoreProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTimelineSemaphoreProperties; + }; + + using PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties; + + // wrapper struct for struct VkPhysicalDeviceToolProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceToolProperties.html + struct PhysicalDeviceToolProperties + { + using NativeType = VkPhysicalDeviceToolProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceToolProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolProperties( std::array const & name_ = {}, + std::array const & version_ = {}, + ToolPurposeFlags purposes_ = {}, + std::array const & description_ = {}, + std::array const & layer_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , name{ name_ } + , version{ version_ } + , purposes{ purposes_ } + , description{ description_ } + , layer{ layer_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolProperties( PhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceToolProperties( VkPhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceToolProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceToolProperties & operator=( PhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceToolProperties & operator=( VkPhysicalDeviceToolProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceToolProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceToolProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceToolProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceToolProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + ToolPurposeFlags const &, + ArrayWrapper1D const &, + ArrayWrapper1D const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, name, version, purposes, description, layer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = strcmp( version, rhs.version ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = purposes <=> rhs.purposes; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = strcmp( layer, rhs.layer ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( strcmp( name, rhs.name ) == 0 ) && ( strcmp( version, rhs.version ) == 0 ) && + ( purposes == rhs.purposes ) && ( strcmp( description, rhs.description ) == 0 ) && ( strcmp( layer, rhs.layer ) == 0 ); + } + + bool operator!=( PhysicalDeviceToolProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePhysicalDeviceToolProperties; + void * pNext = {}; + ArrayWrapper1D name = {}; + ArrayWrapper1D version = {}; + ToolPurposeFlags purposes = {}; + ArrayWrapper1D description = {}; + ArrayWrapper1D layer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceToolProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceToolProperties; + }; + + using PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties; + + // wrapper struct for struct VkPhysicalDeviceTransformFeedbackFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackFeaturesEXT.html + struct PhysicalDeviceTransformFeedbackFeaturesEXT + { + using NativeType = VkPhysicalDeviceTransformFeedbackFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PhysicalDeviceTransformFeedbackFeaturesEXT( Bool32 transformFeedback_ = {}, Bool32 geometryStreams_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , transformFeedback{ transformFeedback_ } + , geometryStreams{ geometryStreams_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTransformFeedbackFeaturesEXT( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTransformFeedbackFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & setTransformFeedback( Bool32 transformFeedback_ ) & VULKAN_HPP_NOEXCEPT + { + transformFeedback = transformFeedback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT && setTransformFeedback( Bool32 transformFeedback_ ) && VULKAN_HPP_NOEXCEPT + { + transformFeedback = transformFeedback_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & setGeometryStreams( Bool32 geometryStreams_ ) & VULKAN_HPP_NOEXCEPT + { + geometryStreams = geometryStreams_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT && setGeometryStreams( Bool32 geometryStreams_ ) && VULKAN_HPP_NOEXCEPT + { + geometryStreams = geometryStreams_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTransformFeedbackFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTransformFeedbackFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTransformFeedbackFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, transformFeedback, geometryStreams ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTransformFeedbackFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transformFeedback == rhs.transformFeedback ) && ( geometryStreams == rhs.geometryStreams ); +# endif + } + + bool operator!=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT; + void * pNext = {}; + Bool32 transformFeedback = {}; + Bool32 geometryStreams = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTransformFeedbackFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTransformFeedbackFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceTransformFeedbackPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceTransformFeedbackPropertiesEXT.html + struct PhysicalDeviceTransformFeedbackPropertiesEXT + { + using NativeType = VkPhysicalDeviceTransformFeedbackPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT( uint32_t maxTransformFeedbackStreams_ = {}, + uint32_t maxTransformFeedbackBuffers_ = {}, + DeviceSize maxTransformFeedbackBufferSize_ = {}, + uint32_t maxTransformFeedbackStreamDataSize_ = {}, + uint32_t maxTransformFeedbackBufferDataSize_ = {}, + uint32_t maxTransformFeedbackBufferDataStride_ = {}, + Bool32 transformFeedbackQueries_ = {}, + Bool32 transformFeedbackStreamsLinesTriangles_ = {}, + Bool32 transformFeedbackRasterizationStreamSelect_ = {}, + Bool32 transformFeedbackDraw_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxTransformFeedbackStreams{ maxTransformFeedbackStreams_ } + , maxTransformFeedbackBuffers{ maxTransformFeedbackBuffers_ } + , maxTransformFeedbackBufferSize{ maxTransformFeedbackBufferSize_ } + , maxTransformFeedbackStreamDataSize{ maxTransformFeedbackStreamDataSize_ } + , maxTransformFeedbackBufferDataSize{ maxTransformFeedbackBufferDataSize_ } + , maxTransformFeedbackBufferDataStride{ maxTransformFeedbackBufferDataStride_ } + , transformFeedbackQueries{ transformFeedbackQueries_ } + , transformFeedbackStreamsLinesTriangles{ transformFeedbackStreamsLinesTriangles_ } + , transformFeedbackRasterizationStreamSelect{ transformFeedbackRasterizationStreamSelect_ } + , transformFeedbackDraw{ transformFeedbackDraw_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceTransformFeedbackPropertiesEXT( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceTransformFeedbackPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceTransformFeedbackPropertiesEXT & operator=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceTransformFeedbackPropertiesEXT & operator=( VkPhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTransformFeedbackPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTransformFeedbackPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceTransformFeedbackPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + maxTransformFeedbackStreams, + maxTransformFeedbackBuffers, + maxTransformFeedbackBufferSize, + maxTransformFeedbackStreamDataSize, + maxTransformFeedbackBufferDataSize, + maxTransformFeedbackBufferDataStride, + transformFeedbackQueries, + transformFeedbackStreamsLinesTriangles, + transformFeedbackRasterizationStreamSelect, + transformFeedbackDraw ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceTransformFeedbackPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxTransformFeedbackStreams == rhs.maxTransformFeedbackStreams ) && + ( maxTransformFeedbackBuffers == rhs.maxTransformFeedbackBuffers ) && ( maxTransformFeedbackBufferSize == rhs.maxTransformFeedbackBufferSize ) && + ( maxTransformFeedbackStreamDataSize == rhs.maxTransformFeedbackStreamDataSize ) && + ( maxTransformFeedbackBufferDataSize == rhs.maxTransformFeedbackBufferDataSize ) && + ( maxTransformFeedbackBufferDataStride == rhs.maxTransformFeedbackBufferDataStride ) && + ( transformFeedbackQueries == rhs.transformFeedbackQueries ) && + ( transformFeedbackStreamsLinesTriangles == rhs.transformFeedbackStreamsLinesTriangles ) && + ( transformFeedbackRasterizationStreamSelect == rhs.transformFeedbackRasterizationStreamSelect ) && + ( transformFeedbackDraw == rhs.transformFeedbackDraw ); +# endif + } + + bool operator!=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT; + void * pNext = {}; + uint32_t maxTransformFeedbackStreams = {}; + uint32_t maxTransformFeedbackBuffers = {}; + DeviceSize maxTransformFeedbackBufferSize = {}; + uint32_t maxTransformFeedbackStreamDataSize = {}; + uint32_t maxTransformFeedbackBufferDataSize = {}; + uint32_t maxTransformFeedbackBufferDataStride = {}; + Bool32 transformFeedbackQueries = {}; + Bool32 transformFeedbackStreamsLinesTriangles = {}; + Bool32 transformFeedbackRasterizationStreamSelect = {}; + Bool32 transformFeedbackDraw = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceTransformFeedbackPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceTransformFeedbackPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR.html + struct PhysicalDeviceUnifiedImageLayoutsFeaturesKHR + { + using NativeType = VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceUnifiedImageLayoutsFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceUnifiedImageLayoutsFeaturesKHR( Bool32 unifiedImageLayouts_ = {}, + Bool32 unifiedImageLayoutsVideo_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , unifiedImageLayouts{ unifiedImageLayouts_ } + , unifiedImageLayoutsVideo{ unifiedImageLayoutsVideo_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceUnifiedImageLayoutsFeaturesKHR( PhysicalDeviceUnifiedImageLayoutsFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceUnifiedImageLayoutsFeaturesKHR( VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceUnifiedImageLayoutsFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceUnifiedImageLayoutsFeaturesKHR & operator=( PhysicalDeviceUnifiedImageLayoutsFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceUnifiedImageLayoutsFeaturesKHR & operator=( VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUnifiedImageLayoutsFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUnifiedImageLayoutsFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUnifiedImageLayoutsFeaturesKHR & setUnifiedImageLayouts( Bool32 unifiedImageLayouts_ ) & VULKAN_HPP_NOEXCEPT + { + unifiedImageLayouts = unifiedImageLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUnifiedImageLayoutsFeaturesKHR && setUnifiedImageLayouts( Bool32 unifiedImageLayouts_ ) && VULKAN_HPP_NOEXCEPT + { + unifiedImageLayouts = unifiedImageLayouts_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUnifiedImageLayoutsFeaturesKHR & setUnifiedImageLayoutsVideo( Bool32 unifiedImageLayoutsVideo_ ) & VULKAN_HPP_NOEXCEPT + { + unifiedImageLayoutsVideo = unifiedImageLayoutsVideo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUnifiedImageLayoutsFeaturesKHR && setUnifiedImageLayoutsVideo( Bool32 unifiedImageLayoutsVideo_ ) && + VULKAN_HPP_NOEXCEPT + { + unifiedImageLayoutsVideo = unifiedImageLayoutsVideo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, unifiedImageLayouts, unifiedImageLayoutsVideo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceUnifiedImageLayoutsFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceUnifiedImageLayoutsFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( unifiedImageLayouts == rhs.unifiedImageLayouts ) && + ( unifiedImageLayoutsVideo == rhs.unifiedImageLayoutsVideo ); +# endif + } + + bool operator!=( PhysicalDeviceUnifiedImageLayoutsFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceUnifiedImageLayoutsFeaturesKHR; + void * pNext = {}; + Bool32 unifiedImageLayouts = {}; + Bool32 unifiedImageLayoutsVideo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceUnifiedImageLayoutsFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceUnifiedImageLayoutsFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceUniformBufferStandardLayoutFeatures.html + struct PhysicalDeviceUniformBufferStandardLayoutFeatures + { + using NativeType = VkPhysicalDeviceUniformBufferStandardLayoutFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures( Bool32 uniformBufferStandardLayout_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , uniformBufferStandardLayout{ uniformBufferStandardLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceUniformBufferStandardLayoutFeatures( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceUniformBufferStandardLayoutFeatures( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceUniformBufferStandardLayoutFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceUniformBufferStandardLayoutFeatures & + operator=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceUniformBufferStandardLayoutFeatures & operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures & setUniformBufferStandardLayout( Bool32 uniformBufferStandardLayout_ ) & + VULKAN_HPP_NOEXCEPT + { + uniformBufferStandardLayout = uniformBufferStandardLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures && setUniformBufferStandardLayout( Bool32 uniformBufferStandardLayout_ ) && + VULKAN_HPP_NOEXCEPT + { + uniformBufferStandardLayout = uniformBufferStandardLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceUniformBufferStandardLayoutFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, uniformBufferStandardLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceUniformBufferStandardLayoutFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout ); +# endif + } + + bool operator!=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures; + void * pNext = {}; + Bool32 uniformBufferStandardLayout = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceUniformBufferStandardLayoutFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceUniformBufferStandardLayoutFeatures; + }; + + using PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures; + + // wrapper struct for struct VkPhysicalDeviceVariablePointersFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVariablePointersFeatures.html + struct PhysicalDeviceVariablePointersFeatures + { + using NativeType = VkPhysicalDeviceVariablePointersFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVariablePointersFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures( Bool32 variablePointersStorageBuffer_ = {}, + Bool32 variablePointers_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , variablePointersStorageBuffer{ variablePointersStorageBuffer_ } + , variablePointers{ variablePointers_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVariablePointersFeatures( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVariablePointersFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVariablePointersFeatures & operator=( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVariablePointersFeatures & operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ ) & + VULKAN_HPP_NOEXCEPT + { + variablePointersStorageBuffer = variablePointersStorageBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures && setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ ) && + VULKAN_HPP_NOEXCEPT + { + variablePointersStorageBuffer = variablePointersStorageBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & setVariablePointers( Bool32 variablePointers_ ) & VULKAN_HPP_NOEXCEPT + { + variablePointers = variablePointers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures && setVariablePointers( Bool32 variablePointers_ ) && VULKAN_HPP_NOEXCEPT + { + variablePointers = variablePointers_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVariablePointersFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVariablePointersFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVariablePointersFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVariablePointersFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, variablePointersStorageBuffer, variablePointers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVariablePointersFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer ) && + ( variablePointers == rhs.variablePointers ); +# endif + } + + bool operator!=( PhysicalDeviceVariablePointersFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVariablePointersFeatures; + void * pNext = {}; + Bool32 variablePointersStorageBuffer = {}; + Bool32 variablePointers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVariablePointersFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVariablePointersFeatures; + }; + + using PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures; + using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures; + using PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures; + + // wrapper struct for struct VkPhysicalDeviceVertexAttributeDivisorFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorFeatures.html + struct PhysicalDeviceVertexAttributeDivisorFeatures + { + using NativeType = VkPhysicalDeviceVertexAttributeDivisorFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeatures( Bool32 vertexAttributeInstanceRateDivisor_ = {}, + Bool32 vertexAttributeInstanceRateZeroDivisor_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vertexAttributeInstanceRateDivisor{ vertexAttributeInstanceRateDivisor_ } + , vertexAttributeInstanceRateZeroDivisor{ vertexAttributeInstanceRateZeroDivisor_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeatures( PhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexAttributeDivisorFeatures( VkPhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVertexAttributeDivisorFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVertexAttributeDivisorFeatures & operator=( PhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVertexAttributeDivisorFeatures & operator=( VkPhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeatures & setVertexAttributeInstanceRateDivisor( Bool32 vertexAttributeInstanceRateDivisor_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeatures && + setVertexAttributeInstanceRateDivisor( Bool32 vertexAttributeInstanceRateDivisor_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeatures & + setVertexAttributeInstanceRateZeroDivisor( Bool32 vertexAttributeInstanceRateZeroDivisor_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeatures && + setVertexAttributeInstanceRateZeroDivisor( Bool32 vertexAttributeInstanceRateZeroDivisor_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVertexAttributeDivisorFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeDivisorFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeDivisorFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeDivisorFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexAttributeInstanceRateDivisor, vertexAttributeInstanceRateZeroDivisor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVertexAttributeDivisorFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor ) && + ( vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor ); +# endif + } + + bool operator!=( PhysicalDeviceVertexAttributeDivisorFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeatures; + void * pNext = {}; + Bool32 vertexAttributeInstanceRateDivisor = {}; + Bool32 vertexAttributeInstanceRateZeroDivisor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVertexAttributeDivisorFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVertexAttributeDivisorFeatures; + }; + + using PhysicalDeviceVertexAttributeDivisorFeaturesEXT = PhysicalDeviceVertexAttributeDivisorFeatures; + using PhysicalDeviceVertexAttributeDivisorFeaturesKHR = PhysicalDeviceVertexAttributeDivisorFeatures; + + // wrapper struct for struct VkPhysicalDeviceVertexAttributeDivisorProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorProperties.html + struct PhysicalDeviceVertexAttributeDivisorProperties + { + using NativeType = VkPhysicalDeviceVertexAttributeDivisorProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVertexAttributeDivisorProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorProperties( uint32_t maxVertexAttribDivisor_ = {}, + Bool32 supportsNonZeroFirstInstance_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxVertexAttribDivisor{ maxVertexAttribDivisor_ } + , supportsNonZeroFirstInstance{ supportsNonZeroFirstInstance_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVertexAttributeDivisorProperties( PhysicalDeviceVertexAttributeDivisorProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexAttributeDivisorProperties( VkPhysicalDeviceVertexAttributeDivisorProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVertexAttributeDivisorProperties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVertexAttributeDivisorProperties & operator=( PhysicalDeviceVertexAttributeDivisorProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVertexAttributeDivisorProperties & operator=( VkPhysicalDeviceVertexAttributeDivisorProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceVertexAttributeDivisorProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeDivisorProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeDivisorProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeDivisorProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxVertexAttribDivisor, supportsNonZeroFirstInstance ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVertexAttributeDivisorProperties const & ) const = default; +#else + bool operator==( PhysicalDeviceVertexAttributeDivisorProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor ) && + ( supportsNonZeroFirstInstance == rhs.supportsNonZeroFirstInstance ); +# endif + } + + bool operator!=( PhysicalDeviceVertexAttributeDivisorProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorProperties; + void * pNext = {}; + uint32_t maxVertexAttribDivisor = {}; + Bool32 supportsNonZeroFirstInstance = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVertexAttributeDivisorProperties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVertexAttributeDivisorProperties; + }; + + using PhysicalDeviceVertexAttributeDivisorPropertiesKHR = PhysicalDeviceVertexAttributeDivisorProperties; + + // wrapper struct for struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT.html + struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT + { + using NativeType = VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesEXT( uint32_t maxVertexAttribDivisor_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxVertexAttribDivisor{ maxVertexAttribDivisor_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVertexAttributeDivisorPropertiesEXT( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVertexAttributeDivisorPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVertexAttributeDivisorPropertiesEXT & + operator=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVertexAttributeDivisorPropertiesEXT & operator=( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxVertexAttribDivisor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor ); +# endif + } + + bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT; + void * pNext = {}; + uint32_t maxVertexAttribDivisor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVertexAttributeDivisorPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVertexAttributeDivisorPropertiesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT.html + struct PhysicalDeviceVertexAttributeRobustnessFeaturesEXT + { + using NativeType = VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVertexAttributeRobustnessFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeRobustnessFeaturesEXT( Bool32 vertexAttributeRobustness_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vertexAttributeRobustness{ vertexAttributeRobustness_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVertexAttributeRobustnessFeaturesEXT( PhysicalDeviceVertexAttributeRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexAttributeRobustnessFeaturesEXT( VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVertexAttributeRobustnessFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVertexAttributeRobustnessFeaturesEXT & + operator=( PhysicalDeviceVertexAttributeRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVertexAttributeRobustnessFeaturesEXT & operator=( VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeRobustnessFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeRobustnessFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeRobustnessFeaturesEXT & setVertexAttributeRobustness( Bool32 vertexAttributeRobustness_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexAttributeRobustness = vertexAttributeRobustness_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeRobustnessFeaturesEXT && setVertexAttributeRobustness( Bool32 vertexAttributeRobustness_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexAttributeRobustness = vertexAttributeRobustness_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexAttributeRobustness ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVertexAttributeRobustnessFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceVertexAttributeRobustnessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexAttributeRobustness == rhs.vertexAttributeRobustness ); +# endif + } + + bool operator!=( PhysicalDeviceVertexAttributeRobustnessFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVertexAttributeRobustnessFeaturesEXT; + void * pNext = {}; + Bool32 vertexAttributeRobustness = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVertexAttributeRobustnessFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVertexAttributeRobustnessFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT.html + struct PhysicalDeviceVertexInputDynamicStateFeaturesEXT + { + using NativeType = VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexInputDynamicStateFeaturesEXT( Bool32 vertexInputDynamicState_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vertexInputDynamicState{ vertexInputDynamicState_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVertexInputDynamicStateFeaturesEXT( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVertexInputDynamicStateFeaturesEXT( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVertexInputDynamicStateFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVertexInputDynamicStateFeaturesEXT & operator=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVertexInputDynamicStateFeaturesEXT & operator=( VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT & setVertexInputDynamicState( Bool32 vertexInputDynamicState_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexInputDynamicState = vertexInputDynamicState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexInputDynamicStateFeaturesEXT && setVertexInputDynamicState( Bool32 vertexInputDynamicState_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexInputDynamicState = vertexInputDynamicState_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexInputDynamicState ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexInputDynamicState == rhs.vertexInputDynamicState ); +# endif + } + + bool operator!=( PhysicalDeviceVertexInputDynamicStateFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT; + void * pNext = {}; + Bool32 vertexInputDynamicState = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVertexInputDynamicStateFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVertexInputDynamicStateFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceVideoDecodeVP9FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoDecodeVP9FeaturesKHR.html + struct PhysicalDeviceVideoDecodeVP9FeaturesKHR + { + using NativeType = VkPhysicalDeviceVideoDecodeVP9FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoDecodeVp9FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoDecodeVP9FeaturesKHR( Bool32 videoDecodeVP9_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoDecodeVP9{ videoDecodeVP9_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoDecodeVP9FeaturesKHR( PhysicalDeviceVideoDecodeVP9FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoDecodeVP9FeaturesKHR( VkPhysicalDeviceVideoDecodeVP9FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVideoDecodeVP9FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVideoDecodeVP9FeaturesKHR & operator=( PhysicalDeviceVideoDecodeVP9FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVideoDecodeVP9FeaturesKHR & operator=( VkPhysicalDeviceVideoDecodeVP9FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoDecodeVP9FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoDecodeVP9FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoDecodeVP9FeaturesKHR & setVideoDecodeVP9( Bool32 videoDecodeVP9_ ) & VULKAN_HPP_NOEXCEPT + { + videoDecodeVP9 = videoDecodeVP9_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoDecodeVP9FeaturesKHR && setVideoDecodeVP9( Bool32 videoDecodeVP9_ ) && VULKAN_HPP_NOEXCEPT + { + videoDecodeVP9 = videoDecodeVP9_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVideoDecodeVP9FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoDecodeVP9FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoDecodeVP9FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoDecodeVP9FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoDecodeVP9 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVideoDecodeVP9FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceVideoDecodeVP9FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoDecodeVP9 == rhs.videoDecodeVP9 ); +# endif + } + + bool operator!=( PhysicalDeviceVideoDecodeVP9FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVideoDecodeVp9FeaturesKHR; + void * pNext = {}; + Bool32 videoDecodeVP9 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVideoDecodeVP9FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVideoDecodeVP9FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceVideoEncodeAV1FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeAV1FeaturesKHR.html + struct PhysicalDeviceVideoEncodeAV1FeaturesKHR + { + using NativeType = VkPhysicalDeviceVideoEncodeAV1FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoEncodeAv1FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeAV1FeaturesKHR( Bool32 videoEncodeAV1_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoEncodeAV1{ videoEncodeAV1_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeAV1FeaturesKHR( PhysicalDeviceVideoEncodeAV1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoEncodeAV1FeaturesKHR( VkPhysicalDeviceVideoEncodeAV1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVideoEncodeAV1FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVideoEncodeAV1FeaturesKHR & operator=( PhysicalDeviceVideoEncodeAV1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVideoEncodeAV1FeaturesKHR & operator=( VkPhysicalDeviceVideoEncodeAV1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeAV1FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeAV1FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeAV1FeaturesKHR & setVideoEncodeAV1( Bool32 videoEncodeAV1_ ) & VULKAN_HPP_NOEXCEPT + { + videoEncodeAV1 = videoEncodeAV1_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeAV1FeaturesKHR && setVideoEncodeAV1( Bool32 videoEncodeAV1_ ) && VULKAN_HPP_NOEXCEPT + { + videoEncodeAV1 = videoEncodeAV1_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVideoEncodeAV1FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeAV1FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeAV1FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeAV1FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoEncodeAV1 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVideoEncodeAV1FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceVideoEncodeAV1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoEncodeAV1 == rhs.videoEncodeAV1 ); +# endif + } + + bool operator!=( PhysicalDeviceVideoEncodeAV1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVideoEncodeAv1FeaturesKHR; + void * pNext = {}; + Bool32 videoEncodeAV1 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVideoEncodeAV1FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVideoEncodeAV1FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR.html + struct PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR + { + using NativeType = VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR( Bool32 videoEncodeIntraRefresh_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoEncodeIntraRefresh{ videoEncodeIntraRefresh_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR( PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR( VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR & operator=( PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR & operator=( VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR & setVideoEncodeIntraRefresh( Bool32 videoEncodeIntraRefresh_ ) & + VULKAN_HPP_NOEXCEPT + { + videoEncodeIntraRefresh = videoEncodeIntraRefresh_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR && setVideoEncodeIntraRefresh( Bool32 videoEncodeIntraRefresh_ ) && + VULKAN_HPP_NOEXCEPT + { + videoEncodeIntraRefresh = videoEncodeIntraRefresh_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoEncodeIntraRefresh ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoEncodeIntraRefresh == rhs.videoEncodeIntraRefresh ); +# endif + } + + bool operator!=( PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR; + void * pNext = {}; + Bool32 videoEncodeIntraRefresh = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR; + }; + + // wrapper struct for struct VkVideoProfileInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoProfileInfoKHR.html + struct VideoProfileInfoKHR + { + using NativeType = VkVideoProfileInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoProfileInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoProfileInfoKHR( VideoCodecOperationFlagBitsKHR videoCodecOperation_ = VideoCodecOperationFlagBitsKHR::eNone, + VideoChromaSubsamplingFlagsKHR chromaSubsampling_ = {}, + VideoComponentBitDepthFlagsKHR lumaBitDepth_ = {}, + VideoComponentBitDepthFlagsKHR chromaBitDepth_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoCodecOperation{ videoCodecOperation_ } + , chromaSubsampling{ chromaSubsampling_ } + , lumaBitDepth{ lumaBitDepth_ } + , chromaBitDepth{ chromaBitDepth_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoProfileInfoKHR( VideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoProfileInfoKHR( VkVideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : VideoProfileInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoProfileInfoKHR & operator=( VideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoProfileInfoKHR & operator=( VkVideoProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setVideoCodecOperation( VideoCodecOperationFlagBitsKHR videoCodecOperation_ ) & VULKAN_HPP_NOEXCEPT + { + videoCodecOperation = videoCodecOperation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR && setVideoCodecOperation( VideoCodecOperationFlagBitsKHR videoCodecOperation_ ) && VULKAN_HPP_NOEXCEPT + { + videoCodecOperation = videoCodecOperation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setChromaSubsampling( VideoChromaSubsamplingFlagsKHR chromaSubsampling_ ) & VULKAN_HPP_NOEXCEPT + { + chromaSubsampling = chromaSubsampling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR && setChromaSubsampling( VideoChromaSubsamplingFlagsKHR chromaSubsampling_ ) && VULKAN_HPP_NOEXCEPT + { + chromaSubsampling = chromaSubsampling_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setLumaBitDepth( VideoComponentBitDepthFlagsKHR lumaBitDepth_ ) & VULKAN_HPP_NOEXCEPT + { + lumaBitDepth = lumaBitDepth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR && setLumaBitDepth( VideoComponentBitDepthFlagsKHR lumaBitDepth_ ) && VULKAN_HPP_NOEXCEPT + { + lumaBitDepth = lumaBitDepth_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR & setChromaBitDepth( VideoComponentBitDepthFlagsKHR chromaBitDepth_ ) & VULKAN_HPP_NOEXCEPT + { + chromaBitDepth = chromaBitDepth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileInfoKHR && setChromaBitDepth( VideoComponentBitDepthFlagsKHR chromaBitDepth_ ) && VULKAN_HPP_NOEXCEPT + { + chromaBitDepth = chromaBitDepth_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoProfileInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoProfileInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoProfileInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoCodecOperation, chromaSubsampling, lumaBitDepth, chromaBitDepth ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoProfileInfoKHR const & ) const = default; +#else + bool operator==( VideoProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoCodecOperation == rhs.videoCodecOperation ) && + ( chromaSubsampling == rhs.chromaSubsampling ) && ( lumaBitDepth == rhs.lumaBitDepth ) && ( chromaBitDepth == rhs.chromaBitDepth ); +# endif + } + + bool operator!=( VideoProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoProfileInfoKHR; + void const * pNext = {}; + VideoCodecOperationFlagBitsKHR videoCodecOperation = VideoCodecOperationFlagBitsKHR::eNone; + VideoChromaSubsamplingFlagsKHR chromaSubsampling = {}; + VideoComponentBitDepthFlagsKHR lumaBitDepth = {}; + VideoComponentBitDepthFlagsKHR chromaBitDepth = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoProfileInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoProfileInfoKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR.html + struct PhysicalDeviceVideoEncodeQualityLevelInfoKHR + { + using NativeType = VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoEncodeQualityLevelInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeQualityLevelInfoKHR( VideoProfileInfoKHR const * pVideoProfile_ = {}, + uint32_t qualityLevel_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pVideoProfile{ pVideoProfile_ } + , qualityLevel{ qualityLevel_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeQualityLevelInfoKHR( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoEncodeQualityLevelInfoKHR( VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVideoEncodeQualityLevelInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVideoEncodeQualityLevelInfoKHR & operator=( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVideoEncodeQualityLevelInfoKHR & operator=( VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR & setPVideoProfile( VideoProfileInfoKHR const * pVideoProfile_ ) & VULKAN_HPP_NOEXCEPT + { + pVideoProfile = pVideoProfile_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR && setPVideoProfile( VideoProfileInfoKHR const * pVideoProfile_ ) && + VULKAN_HPP_NOEXCEPT + { + pVideoProfile = pVideoProfile_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR & setQualityLevel( uint32_t qualityLevel_ ) & VULKAN_HPP_NOEXCEPT + { + qualityLevel = qualityLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQualityLevelInfoKHR && setQualityLevel( uint32_t qualityLevel_ ) && VULKAN_HPP_NOEXCEPT + { + qualityLevel = qualityLevel_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pVideoProfile, qualityLevel ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pVideoProfile == rhs.pVideoProfile ) && ( qualityLevel == rhs.qualityLevel ); +# endif + } + + bool operator!=( PhysicalDeviceVideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVideoEncodeQualityLevelInfoKHR; + void const * pNext = {}; + VideoProfileInfoKHR const * pVideoProfile = {}; + uint32_t qualityLevel = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVideoEncodeQualityLevelInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVideoEncodeQualityLevelInfoKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.html + struct PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR + { + using NativeType = VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR( Bool32 videoEncodeQuantizationMap_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoEncodeQuantizationMap{ videoEncodeQuantizationMap_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR( PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR( VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR & + operator=( PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR & operator=( VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR & setVideoEncodeQuantizationMap( Bool32 videoEncodeQuantizationMap_ ) & + VULKAN_HPP_NOEXCEPT + { + videoEncodeQuantizationMap = videoEncodeQuantizationMap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR && setVideoEncodeQuantizationMap( Bool32 videoEncodeQuantizationMap_ ) && + VULKAN_HPP_NOEXCEPT + { + videoEncodeQuantizationMap = videoEncodeQuantizationMap_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoEncodeQuantizationMap ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoEncodeQuantizationMap == rhs.videoEncodeQuantizationMap ); +# endif + } + + bool operator!=( PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR; + void * pNext = {}; + Bool32 videoEncodeQuantizationMap = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE.html + struct PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE + { + using NativeType = VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE( Bool32 videoEncodeRgbConversion_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoEncodeRgbConversion{ videoEncodeRgbConversion_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE( PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE( VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE & + operator=( PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE & operator=( VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE & setVideoEncodeRgbConversion( Bool32 videoEncodeRgbConversion_ ) & + VULKAN_HPP_NOEXCEPT + { + videoEncodeRgbConversion = videoEncodeRgbConversion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE && setVideoEncodeRgbConversion( Bool32 videoEncodeRgbConversion_ ) && + VULKAN_HPP_NOEXCEPT + { + videoEncodeRgbConversion = videoEncodeRgbConversion_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoEncodeRgbConversion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE const & ) const = default; +#else + bool operator==( PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoEncodeRgbConversion == rhs.videoEncodeRgbConversion ); +# endif + } + + bool operator!=( PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE; + void * pNext = {}; + Bool32 videoEncodeRgbConversion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE; + }; + + // wrapper struct for struct VkPhysicalDeviceVideoFormatInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoFormatInfoKHR.html + struct PhysicalDeviceVideoFormatInfoKHR + { + using NativeType = VkPhysicalDeviceVideoFormatInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoFormatInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoFormatInfoKHR( ImageUsageFlags imageUsage_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageUsage{ imageUsage_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoFormatInfoKHR( PhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoFormatInfoKHR( VkPhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVideoFormatInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVideoFormatInfoKHR & operator=( PhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVideoFormatInfoKHR & operator=( VkPhysicalDeviceVideoFormatInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoFormatInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoFormatInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoFormatInfoKHR & setImageUsage( ImageUsageFlags imageUsage_ ) & VULKAN_HPP_NOEXCEPT + { + imageUsage = imageUsage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoFormatInfoKHR && setImageUsage( ImageUsageFlags imageUsage_ ) && VULKAN_HPP_NOEXCEPT + { + imageUsage = imageUsage_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVideoFormatInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoFormatInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoFormatInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoFormatInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageUsage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVideoFormatInfoKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceVideoFormatInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageUsage == rhs.imageUsage ); +# endif + } + + bool operator!=( PhysicalDeviceVideoFormatInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVideoFormatInfoKHR; + void const * pNext = {}; + ImageUsageFlags imageUsage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVideoFormatInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVideoFormatInfoKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance1FeaturesKHR.html + struct PhysicalDeviceVideoMaintenance1FeaturesKHR + { + using NativeType = VkPhysicalDeviceVideoMaintenance1FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoMaintenance1FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoMaintenance1FeaturesKHR( Bool32 videoMaintenance1_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoMaintenance1{ videoMaintenance1_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoMaintenance1FeaturesKHR( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoMaintenance1FeaturesKHR( VkPhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVideoMaintenance1FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVideoMaintenance1FeaturesKHR & operator=( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVideoMaintenance1FeaturesKHR & operator=( VkPhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance1FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance1FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance1FeaturesKHR & setVideoMaintenance1( Bool32 videoMaintenance1_ ) & VULKAN_HPP_NOEXCEPT + { + videoMaintenance1 = videoMaintenance1_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance1FeaturesKHR && setVideoMaintenance1( Bool32 videoMaintenance1_ ) && VULKAN_HPP_NOEXCEPT + { + videoMaintenance1 = videoMaintenance1_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoMaintenance1FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoMaintenance1 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVideoMaintenance1FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoMaintenance1 == rhs.videoMaintenance1 ); +# endif + } + + bool operator!=( PhysicalDeviceVideoMaintenance1FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVideoMaintenance1FeaturesKHR; + void * pNext = {}; + Bool32 videoMaintenance1 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVideoMaintenance1FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVideoMaintenance1FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceVideoMaintenance2FeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVideoMaintenance2FeaturesKHR.html + struct PhysicalDeviceVideoMaintenance2FeaturesKHR + { + using NativeType = VkPhysicalDeviceVideoMaintenance2FeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVideoMaintenance2FeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoMaintenance2FeaturesKHR( Bool32 videoMaintenance2_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoMaintenance2{ videoMaintenance2_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVideoMaintenance2FeaturesKHR( PhysicalDeviceVideoMaintenance2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVideoMaintenance2FeaturesKHR( VkPhysicalDeviceVideoMaintenance2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVideoMaintenance2FeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVideoMaintenance2FeaturesKHR & operator=( PhysicalDeviceVideoMaintenance2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVideoMaintenance2FeaturesKHR & operator=( VkPhysicalDeviceVideoMaintenance2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance2FeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance2FeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance2FeaturesKHR & setVideoMaintenance2( Bool32 videoMaintenance2_ ) & VULKAN_HPP_NOEXCEPT + { + videoMaintenance2 = videoMaintenance2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVideoMaintenance2FeaturesKHR && setVideoMaintenance2( Bool32 videoMaintenance2_ ) && VULKAN_HPP_NOEXCEPT + { + videoMaintenance2 = videoMaintenance2_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVideoMaintenance2FeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoMaintenance2FeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoMaintenance2FeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVideoMaintenance2FeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoMaintenance2 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVideoMaintenance2FeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceVideoMaintenance2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoMaintenance2 == rhs.videoMaintenance2 ); +# endif + } + + bool operator!=( PhysicalDeviceVideoMaintenance2FeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVideoMaintenance2FeaturesKHR; + void * pNext = {}; + Bool32 videoMaintenance2 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVideoMaintenance2FeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVideoMaintenance2FeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceVulkan11Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Features.html + struct PhysicalDeviceVulkan11Features + { + using NativeType = VkPhysicalDeviceVulkan11Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan11Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan11Features( Bool32 storageBuffer16BitAccess_ = {}, + Bool32 uniformAndStorageBuffer16BitAccess_ = {}, + Bool32 storagePushConstant16_ = {}, + Bool32 storageInputOutput16_ = {}, + Bool32 multiview_ = {}, + Bool32 multiviewGeometryShader_ = {}, + Bool32 multiviewTessellationShader_ = {}, + Bool32 variablePointersStorageBuffer_ = {}, + Bool32 variablePointers_ = {}, + Bool32 protectedMemory_ = {}, + Bool32 samplerYcbcrConversion_ = {}, + Bool32 shaderDrawParameters_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , storageBuffer16BitAccess{ storageBuffer16BitAccess_ } + , uniformAndStorageBuffer16BitAccess{ uniformAndStorageBuffer16BitAccess_ } + , storagePushConstant16{ storagePushConstant16_ } + , storageInputOutput16{ storageInputOutput16_ } + , multiview{ multiview_ } + , multiviewGeometryShader{ multiviewGeometryShader_ } + , multiviewTessellationShader{ multiviewTessellationShader_ } + , variablePointersStorageBuffer{ variablePointersStorageBuffer_ } + , variablePointers{ variablePointers_ } + , protectedMemory{ protectedMemory_ } + , samplerYcbcrConversion{ samplerYcbcrConversion_ } + , shaderDrawParameters{ shaderDrawParameters_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan11Features( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan11Features( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan11Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVulkan11Features & operator=( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVulkan11Features & operator=( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ ) & VULKAN_HPP_NOEXCEPT + { + storageBuffer16BitAccess = storageBuffer16BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ ) && VULKAN_HPP_NOEXCEPT + { + storageBuffer16BitAccess = storageBuffer16BitAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setStoragePushConstant16( Bool32 storagePushConstant16_ ) & VULKAN_HPP_NOEXCEPT + { + storagePushConstant16 = storagePushConstant16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setStoragePushConstant16( Bool32 storagePushConstant16_ ) && VULKAN_HPP_NOEXCEPT + { + storagePushConstant16 = storagePushConstant16_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setStorageInputOutput16( Bool32 storageInputOutput16_ ) & VULKAN_HPP_NOEXCEPT + { + storageInputOutput16 = storageInputOutput16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setStorageInputOutput16( Bool32 storageInputOutput16_ ) && VULKAN_HPP_NOEXCEPT + { + storageInputOutput16 = storageInputOutput16_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setMultiview( Bool32 multiview_ ) & VULKAN_HPP_NOEXCEPT + { + multiview = multiview_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setMultiview( Bool32 multiview_ ) && VULKAN_HPP_NOEXCEPT + { + multiview = multiview_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ ) & VULKAN_HPP_NOEXCEPT + { + multiviewGeometryShader = multiviewGeometryShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ ) && VULKAN_HPP_NOEXCEPT + { + multiviewGeometryShader = multiviewGeometryShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ ) & VULKAN_HPP_NOEXCEPT + { + multiviewTessellationShader = multiviewTessellationShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ ) && VULKAN_HPP_NOEXCEPT + { + multiviewTessellationShader = multiviewTessellationShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + variablePointersStorageBuffer = variablePointersStorageBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + variablePointersStorageBuffer = variablePointersStorageBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setVariablePointers( Bool32 variablePointers_ ) & VULKAN_HPP_NOEXCEPT + { + variablePointers = variablePointers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setVariablePointers( Bool32 variablePointers_ ) && VULKAN_HPP_NOEXCEPT + { + variablePointers = variablePointers_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setProtectedMemory( Bool32 protectedMemory_ ) & VULKAN_HPP_NOEXCEPT + { + protectedMemory = protectedMemory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setProtectedMemory( Bool32 protectedMemory_ ) && VULKAN_HPP_NOEXCEPT + { + protectedMemory = protectedMemory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ ) & VULKAN_HPP_NOEXCEPT + { + samplerYcbcrConversion = samplerYcbcrConversion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ ) && VULKAN_HPP_NOEXCEPT + { + samplerYcbcrConversion = samplerYcbcrConversion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & setShaderDrawParameters( Bool32 shaderDrawParameters_ ) & VULKAN_HPP_NOEXCEPT + { + shaderDrawParameters = shaderDrawParameters_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features && setShaderDrawParameters( Bool32 shaderDrawParameters_ ) && VULKAN_HPP_NOEXCEPT + { + shaderDrawParameters = shaderDrawParameters_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVulkan11Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan11Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan11Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan11Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + storageBuffer16BitAccess, + uniformAndStorageBuffer16BitAccess, + storagePushConstant16, + storageInputOutput16, + multiview, + multiviewGeometryShader, + multiviewTessellationShader, + variablePointersStorageBuffer, + variablePointers, + protectedMemory, + samplerYcbcrConversion, + shaderDrawParameters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan11Features const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess ) && + ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess ) && ( storagePushConstant16 == rhs.storagePushConstant16 ) && + ( storageInputOutput16 == rhs.storageInputOutput16 ) && ( multiview == rhs.multiview ) && + ( multiviewGeometryShader == rhs.multiviewGeometryShader ) && ( multiviewTessellationShader == rhs.multiviewTessellationShader ) && + ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer ) && ( variablePointers == rhs.variablePointers ) && + ( protectedMemory == rhs.protectedMemory ) && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion ) && + ( shaderDrawParameters == rhs.shaderDrawParameters ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan11Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVulkan11Features; + void * pNext = {}; + Bool32 storageBuffer16BitAccess = {}; + Bool32 uniformAndStorageBuffer16BitAccess = {}; + Bool32 storagePushConstant16 = {}; + Bool32 storageInputOutput16 = {}; + Bool32 multiview = {}; + Bool32 multiviewGeometryShader = {}; + Bool32 multiviewTessellationShader = {}; + Bool32 variablePointersStorageBuffer = {}; + Bool32 variablePointers = {}; + Bool32 protectedMemory = {}; + Bool32 samplerYcbcrConversion = {}; + Bool32 shaderDrawParameters = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan11Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan11Features; + }; + + // wrapper struct for struct VkPhysicalDeviceVulkan11Properties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan11Properties.html + struct PhysicalDeviceVulkan11Properties + { + using NativeType = VkPhysicalDeviceVulkan11Properties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan11Properties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties( std::array const & deviceUUID_ = {}, + std::array const & driverUUID_ = {}, + std::array const & deviceLUID_ = {}, + uint32_t deviceNodeMask_ = {}, + Bool32 deviceLUIDValid_ = {}, + uint32_t subgroupSize_ = {}, + ShaderStageFlags subgroupSupportedStages_ = {}, + SubgroupFeatureFlags subgroupSupportedOperations_ = {}, + Bool32 subgroupQuadOperationsInAllStages_ = {}, + PointClippingBehavior pointClippingBehavior_ = PointClippingBehavior::eAllClipPlanes, + uint32_t maxMultiviewViewCount_ = {}, + uint32_t maxMultiviewInstanceIndex_ = {}, + Bool32 protectedNoFault_ = {}, + uint32_t maxPerSetDescriptors_ = {}, + DeviceSize maxMemoryAllocationSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , deviceUUID{ deviceUUID_ } + , driverUUID{ driverUUID_ } + , deviceLUID{ deviceLUID_ } + , deviceNodeMask{ deviceNodeMask_ } + , deviceLUIDValid{ deviceLUIDValid_ } + , subgroupSize{ subgroupSize_ } + , subgroupSupportedStages{ subgroupSupportedStages_ } + , subgroupSupportedOperations{ subgroupSupportedOperations_ } + , subgroupQuadOperationsInAllStages{ subgroupQuadOperationsInAllStages_ } + , pointClippingBehavior{ pointClippingBehavior_ } + , maxMultiviewViewCount{ maxMultiviewViewCount_ } + , maxMultiviewInstanceIndex{ maxMultiviewInstanceIndex_ } + , protectedNoFault{ protectedNoFault_ } + , maxPerSetDescriptors{ maxPerSetDescriptors_ } + , maxMemoryAllocationSize{ maxMemoryAllocationSize_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan11Properties( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan11Properties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVulkan11Properties & operator=( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVulkan11Properties & operator=( VkPhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceVulkan11Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan11Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan11Properties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan11Properties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + ArrayWrapper1D const &, + uint32_t const &, + Bool32 const &, + uint32_t const &, + ShaderStageFlags const &, + SubgroupFeatureFlags const &, + Bool32 const &, + PointClippingBehavior const &, + uint32_t const &, + uint32_t const &, + Bool32 const &, + uint32_t const &, + DeviceSize const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + deviceUUID, + driverUUID, + deviceLUID, + deviceNodeMask, + deviceLUIDValid, + subgroupSize, + subgroupSupportedStages, + subgroupSupportedOperations, + subgroupQuadOperationsInAllStages, + pointClippingBehavior, + maxMultiviewViewCount, + maxMultiviewInstanceIndex, + protectedNoFault, + maxPerSetDescriptors, + maxMemoryAllocationSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan11Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( deviceUUID == rhs.deviceUUID ) && ( driverUUID == rhs.driverUUID ) && + ( deviceLUID == rhs.deviceLUID ) && ( deviceNodeMask == rhs.deviceNodeMask ) && ( deviceLUIDValid == rhs.deviceLUIDValid ) && + ( subgroupSize == rhs.subgroupSize ) && ( subgroupSupportedStages == rhs.subgroupSupportedStages ) && + ( subgroupSupportedOperations == rhs.subgroupSupportedOperations ) && + ( subgroupQuadOperationsInAllStages == rhs.subgroupQuadOperationsInAllStages ) && ( pointClippingBehavior == rhs.pointClippingBehavior ) && + ( maxMultiviewViewCount == rhs.maxMultiviewViewCount ) && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex ) && + ( protectedNoFault == rhs.protectedNoFault ) && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors ) && + ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan11Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVulkan11Properties; + void * pNext = {}; + ArrayWrapper1D deviceUUID = {}; + ArrayWrapper1D driverUUID = {}; + ArrayWrapper1D deviceLUID = {}; + uint32_t deviceNodeMask = {}; + Bool32 deviceLUIDValid = {}; + uint32_t subgroupSize = {}; + ShaderStageFlags subgroupSupportedStages = {}; + SubgroupFeatureFlags subgroupSupportedOperations = {}; + Bool32 subgroupQuadOperationsInAllStages = {}; + PointClippingBehavior pointClippingBehavior = PointClippingBehavior::eAllClipPlanes; + uint32_t maxMultiviewViewCount = {}; + uint32_t maxMultiviewInstanceIndex = {}; + Bool32 protectedNoFault = {}; + uint32_t maxPerSetDescriptors = {}; + DeviceSize maxMemoryAllocationSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan11Properties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan11Properties; + }; + + // wrapper struct for struct VkPhysicalDeviceVulkan12Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Features.html + struct PhysicalDeviceVulkan12Features + { + using NativeType = VkPhysicalDeviceVulkan12Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan12Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features( Bool32 samplerMirrorClampToEdge_ = {}, + Bool32 drawIndirectCount_ = {}, + Bool32 storageBuffer8BitAccess_ = {}, + Bool32 uniformAndStorageBuffer8BitAccess_ = {}, + Bool32 storagePushConstant8_ = {}, + Bool32 shaderBufferInt64Atomics_ = {}, + Bool32 shaderSharedInt64Atomics_ = {}, + Bool32 shaderFloat16_ = {}, + Bool32 shaderInt8_ = {}, + Bool32 descriptorIndexing_ = {}, + Bool32 shaderInputAttachmentArrayDynamicIndexing_ = {}, + Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = {}, + Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = {}, + Bool32 shaderUniformBufferArrayNonUniformIndexing_ = {}, + Bool32 shaderSampledImageArrayNonUniformIndexing_ = {}, + Bool32 shaderStorageBufferArrayNonUniformIndexing_ = {}, + Bool32 shaderStorageImageArrayNonUniformIndexing_ = {}, + Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = {}, + Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = {}, + Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = {}, + Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = {}, + Bool32 descriptorBindingSampledImageUpdateAfterBind_ = {}, + Bool32 descriptorBindingStorageImageUpdateAfterBind_ = {}, + Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = {}, + Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {}, + Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {}, + Bool32 descriptorBindingUpdateUnusedWhilePending_ = {}, + Bool32 descriptorBindingPartiallyBound_ = {}, + Bool32 descriptorBindingVariableDescriptorCount_ = {}, + Bool32 runtimeDescriptorArray_ = {}, + Bool32 samplerFilterMinmax_ = {}, + Bool32 scalarBlockLayout_ = {}, + Bool32 imagelessFramebuffer_ = {}, + Bool32 uniformBufferStandardLayout_ = {}, + Bool32 shaderSubgroupExtendedTypes_ = {}, + Bool32 separateDepthStencilLayouts_ = {}, + Bool32 hostQueryReset_ = {}, + Bool32 timelineSemaphore_ = {}, + Bool32 bufferDeviceAddress_ = {}, + Bool32 bufferDeviceAddressCaptureReplay_ = {}, + Bool32 bufferDeviceAddressMultiDevice_ = {}, + Bool32 vulkanMemoryModel_ = {}, + Bool32 vulkanMemoryModelDeviceScope_ = {}, + Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {}, + Bool32 shaderOutputViewportIndex_ = {}, + Bool32 shaderOutputLayer_ = {}, + Bool32 subgroupBroadcastDynamicId_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , samplerMirrorClampToEdge{ samplerMirrorClampToEdge_ } + , drawIndirectCount{ drawIndirectCount_ } + , storageBuffer8BitAccess{ storageBuffer8BitAccess_ } + , uniformAndStorageBuffer8BitAccess{ uniformAndStorageBuffer8BitAccess_ } + , storagePushConstant8{ storagePushConstant8_ } + , shaderBufferInt64Atomics{ shaderBufferInt64Atomics_ } + , shaderSharedInt64Atomics{ shaderSharedInt64Atomics_ } + , shaderFloat16{ shaderFloat16_ } + , shaderInt8{ shaderInt8_ } + , descriptorIndexing{ descriptorIndexing_ } + , shaderInputAttachmentArrayDynamicIndexing{ shaderInputAttachmentArrayDynamicIndexing_ } + , shaderUniformTexelBufferArrayDynamicIndexing{ shaderUniformTexelBufferArrayDynamicIndexing_ } + , shaderStorageTexelBufferArrayDynamicIndexing{ shaderStorageTexelBufferArrayDynamicIndexing_ } + , shaderUniformBufferArrayNonUniformIndexing{ shaderUniformBufferArrayNonUniformIndexing_ } + , shaderSampledImageArrayNonUniformIndexing{ shaderSampledImageArrayNonUniformIndexing_ } + , shaderStorageBufferArrayNonUniformIndexing{ shaderStorageBufferArrayNonUniformIndexing_ } + , shaderStorageImageArrayNonUniformIndexing{ shaderStorageImageArrayNonUniformIndexing_ } + , shaderInputAttachmentArrayNonUniformIndexing{ shaderInputAttachmentArrayNonUniformIndexing_ } + , shaderUniformTexelBufferArrayNonUniformIndexing{ shaderUniformTexelBufferArrayNonUniformIndexing_ } + , shaderStorageTexelBufferArrayNonUniformIndexing{ shaderStorageTexelBufferArrayNonUniformIndexing_ } + , descriptorBindingUniformBufferUpdateAfterBind{ descriptorBindingUniformBufferUpdateAfterBind_ } + , descriptorBindingSampledImageUpdateAfterBind{ descriptorBindingSampledImageUpdateAfterBind_ } + , descriptorBindingStorageImageUpdateAfterBind{ descriptorBindingStorageImageUpdateAfterBind_ } + , descriptorBindingStorageBufferUpdateAfterBind{ descriptorBindingStorageBufferUpdateAfterBind_ } + , descriptorBindingUniformTexelBufferUpdateAfterBind{ descriptorBindingUniformTexelBufferUpdateAfterBind_ } + , descriptorBindingStorageTexelBufferUpdateAfterBind{ descriptorBindingStorageTexelBufferUpdateAfterBind_ } + , descriptorBindingUpdateUnusedWhilePending{ descriptorBindingUpdateUnusedWhilePending_ } + , descriptorBindingPartiallyBound{ descriptorBindingPartiallyBound_ } + , descriptorBindingVariableDescriptorCount{ descriptorBindingVariableDescriptorCount_ } + , runtimeDescriptorArray{ runtimeDescriptorArray_ } + , samplerFilterMinmax{ samplerFilterMinmax_ } + , scalarBlockLayout{ scalarBlockLayout_ } + , imagelessFramebuffer{ imagelessFramebuffer_ } + , uniformBufferStandardLayout{ uniformBufferStandardLayout_ } + , shaderSubgroupExtendedTypes{ shaderSubgroupExtendedTypes_ } + , separateDepthStencilLayouts{ separateDepthStencilLayouts_ } + , hostQueryReset{ hostQueryReset_ } + , timelineSemaphore{ timelineSemaphore_ } + , bufferDeviceAddress{ bufferDeviceAddress_ } + , bufferDeviceAddressCaptureReplay{ bufferDeviceAddressCaptureReplay_ } + , bufferDeviceAddressMultiDevice{ bufferDeviceAddressMultiDevice_ } + , vulkanMemoryModel{ vulkanMemoryModel_ } + , vulkanMemoryModelDeviceScope{ vulkanMemoryModelDeviceScope_ } + , vulkanMemoryModelAvailabilityVisibilityChains{ vulkanMemoryModelAvailabilityVisibilityChains_ } + , shaderOutputViewportIndex{ shaderOutputViewportIndex_ } + , shaderOutputLayer{ shaderOutputLayer_ } + , subgroupBroadcastDynamicId{ subgroupBroadcastDynamicId_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan12Features( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan12Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVulkan12Features & operator=( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVulkan12Features & operator=( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setSamplerMirrorClampToEdge( Bool32 samplerMirrorClampToEdge_ ) & VULKAN_HPP_NOEXCEPT + { + samplerMirrorClampToEdge = samplerMirrorClampToEdge_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setSamplerMirrorClampToEdge( Bool32 samplerMirrorClampToEdge_ ) && VULKAN_HPP_NOEXCEPT + { + samplerMirrorClampToEdge = samplerMirrorClampToEdge_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDrawIndirectCount( Bool32 drawIndirectCount_ ) & VULKAN_HPP_NOEXCEPT + { + drawIndirectCount = drawIndirectCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setDrawIndirectCount( Bool32 drawIndirectCount_ ) && VULKAN_HPP_NOEXCEPT + { + drawIndirectCount = drawIndirectCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setStorageBuffer8BitAccess( Bool32 storageBuffer8BitAccess_ ) & VULKAN_HPP_NOEXCEPT + { + storageBuffer8BitAccess = storageBuffer8BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setStorageBuffer8BitAccess( Bool32 storageBuffer8BitAccess_ ) && VULKAN_HPP_NOEXCEPT + { + storageBuffer8BitAccess = storageBuffer8BitAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setUniformAndStorageBuffer8BitAccess( Bool32 uniformAndStorageBuffer8BitAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setUniformAndStorageBuffer8BitAccess( Bool32 uniformAndStorageBuffer8BitAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setStoragePushConstant8( Bool32 storagePushConstant8_ ) & VULKAN_HPP_NOEXCEPT + { + storagePushConstant8 = storagePushConstant8_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setStoragePushConstant8( Bool32 storagePushConstant8_ ) && VULKAN_HPP_NOEXCEPT + { + storagePushConstant8 = storagePushConstant8_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderBufferInt64Atomics( Bool32 shaderBufferInt64Atomics_ ) & VULKAN_HPP_NOEXCEPT + { + shaderBufferInt64Atomics = shaderBufferInt64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setShaderBufferInt64Atomics( Bool32 shaderBufferInt64Atomics_ ) && VULKAN_HPP_NOEXCEPT + { + shaderBufferInt64Atomics = shaderBufferInt64Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderSharedInt64Atomics( Bool32 shaderSharedInt64Atomics_ ) & VULKAN_HPP_NOEXCEPT + { + shaderSharedInt64Atomics = shaderSharedInt64Atomics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setShaderSharedInt64Atomics( Bool32 shaderSharedInt64Atomics_ ) && VULKAN_HPP_NOEXCEPT + { + shaderSharedInt64Atomics = shaderSharedInt64Atomics_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderFloat16( Bool32 shaderFloat16_ ) & VULKAN_HPP_NOEXCEPT + { + shaderFloat16 = shaderFloat16_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setShaderFloat16( Bool32 shaderFloat16_ ) && VULKAN_HPP_NOEXCEPT + { + shaderFloat16 = shaderFloat16_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInt8( Bool32 shaderInt8_ ) & VULKAN_HPP_NOEXCEPT + { + shaderInt8 = shaderInt8_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setShaderInt8( Bool32 shaderInt8_ ) && VULKAN_HPP_NOEXCEPT + { + shaderInt8 = shaderInt8_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorIndexing( Bool32 descriptorIndexing_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorIndexing = descriptorIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setDescriptorIndexing( Bool32 descriptorIndexing_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorIndexing = descriptorIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderInputAttachmentArrayDynamicIndexing( Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setShaderInputAttachmentArrayDynamicIndexing( Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderUniformTexelBufferArrayDynamicIndexing( Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setShaderUniformTexelBufferArrayDynamicIndexing( Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderStorageTexelBufferArrayDynamicIndexing( Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setShaderStorageTexelBufferArrayDynamicIndexing( Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderUniformBufferArrayNonUniformIndexing( Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setShaderUniformBufferArrayNonUniformIndexing( Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderSampledImageArrayNonUniformIndexing( Bool32 shaderSampledImageArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setShaderSampledImageArrayNonUniformIndexing( Bool32 shaderSampledImageArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderStorageBufferArrayNonUniformIndexing( Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setShaderStorageBufferArrayNonUniformIndexing( Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderStorageImageArrayNonUniformIndexing( Bool32 shaderStorageImageArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setShaderStorageImageArrayNonUniformIndexing( Bool32 shaderStorageImageArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderInputAttachmentArrayNonUniformIndexing( Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setShaderInputAttachmentArrayNonUniformIndexing( Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderUniformTexelBufferArrayNonUniformIndexing( Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setShaderUniformTexelBufferArrayNonUniformIndexing( Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setShaderStorageTexelBufferArrayNonUniformIndexing( Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setShaderStorageTexelBufferArrayNonUniformIndexing( Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setDescriptorBindingUniformBufferUpdateAfterBind( Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setDescriptorBindingUniformBufferUpdateAfterBind( Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setDescriptorBindingSampledImageUpdateAfterBind( Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setDescriptorBindingSampledImageUpdateAfterBind( Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setDescriptorBindingStorageImageUpdateAfterBind( Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setDescriptorBindingStorageImageUpdateAfterBind( Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setDescriptorBindingStorageBufferUpdateAfterBind( Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setDescriptorBindingStorageBufferUpdateAfterBind( Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setDescriptorBindingUniformTexelBufferUpdateAfterBind( Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setDescriptorBindingUniformTexelBufferUpdateAfterBind( Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setDescriptorBindingStorageTexelBufferUpdateAfterBind( Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setDescriptorBindingStorageTexelBufferUpdateAfterBind( Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingUpdateUnusedWhilePending( Bool32 descriptorBindingUpdateUnusedWhilePending_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setDescriptorBindingUpdateUnusedWhilePending( Bool32 descriptorBindingUpdateUnusedWhilePending_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingPartiallyBound( Bool32 descriptorBindingPartiallyBound_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setDescriptorBindingPartiallyBound( Bool32 descriptorBindingPartiallyBound_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setDescriptorBindingVariableDescriptorCount( Bool32 descriptorBindingVariableDescriptorCount_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setDescriptorBindingVariableDescriptorCount( Bool32 descriptorBindingVariableDescriptorCount_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setRuntimeDescriptorArray( Bool32 runtimeDescriptorArray_ ) & VULKAN_HPP_NOEXCEPT + { + runtimeDescriptorArray = runtimeDescriptorArray_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setRuntimeDescriptorArray( Bool32 runtimeDescriptorArray_ ) && VULKAN_HPP_NOEXCEPT + { + runtimeDescriptorArray = runtimeDescriptorArray_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setSamplerFilterMinmax( Bool32 samplerFilterMinmax_ ) & VULKAN_HPP_NOEXCEPT + { + samplerFilterMinmax = samplerFilterMinmax_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setSamplerFilterMinmax( Bool32 samplerFilterMinmax_ ) && VULKAN_HPP_NOEXCEPT + { + samplerFilterMinmax = samplerFilterMinmax_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setScalarBlockLayout( Bool32 scalarBlockLayout_ ) & VULKAN_HPP_NOEXCEPT + { + scalarBlockLayout = scalarBlockLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setScalarBlockLayout( Bool32 scalarBlockLayout_ ) && VULKAN_HPP_NOEXCEPT + { + scalarBlockLayout = scalarBlockLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setImagelessFramebuffer( Bool32 imagelessFramebuffer_ ) & VULKAN_HPP_NOEXCEPT + { + imagelessFramebuffer = imagelessFramebuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setImagelessFramebuffer( Bool32 imagelessFramebuffer_ ) && VULKAN_HPP_NOEXCEPT + { + imagelessFramebuffer = imagelessFramebuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setUniformBufferStandardLayout( Bool32 uniformBufferStandardLayout_ ) & VULKAN_HPP_NOEXCEPT + { + uniformBufferStandardLayout = uniformBufferStandardLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setUniformBufferStandardLayout( Bool32 uniformBufferStandardLayout_ ) && VULKAN_HPP_NOEXCEPT + { + uniformBufferStandardLayout = uniformBufferStandardLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderSubgroupExtendedTypes( Bool32 shaderSubgroupExtendedTypes_ ) & VULKAN_HPP_NOEXCEPT + { + shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setShaderSubgroupExtendedTypes( Bool32 shaderSubgroupExtendedTypes_ ) && VULKAN_HPP_NOEXCEPT + { + shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setSeparateDepthStencilLayouts( Bool32 separateDepthStencilLayouts_ ) & VULKAN_HPP_NOEXCEPT + { + separateDepthStencilLayouts = separateDepthStencilLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setSeparateDepthStencilLayouts( Bool32 separateDepthStencilLayouts_ ) && VULKAN_HPP_NOEXCEPT + { + separateDepthStencilLayouts = separateDepthStencilLayouts_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setHostQueryReset( Bool32 hostQueryReset_ ) & VULKAN_HPP_NOEXCEPT + { + hostQueryReset = hostQueryReset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setHostQueryReset( Bool32 hostQueryReset_ ) && VULKAN_HPP_NOEXCEPT + { + hostQueryReset = hostQueryReset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setTimelineSemaphore( Bool32 timelineSemaphore_ ) & VULKAN_HPP_NOEXCEPT + { + timelineSemaphore = timelineSemaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setTimelineSemaphore( Bool32 timelineSemaphore_ ) && VULKAN_HPP_NOEXCEPT + { + timelineSemaphore = timelineSemaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddress( Bool32 bufferDeviceAddress_ ) & VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddress = bufferDeviceAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setBufferDeviceAddress( Bool32 bufferDeviceAddress_ ) && VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddress = bufferDeviceAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddressCaptureReplay( Bool32 bufferDeviceAddressCaptureReplay_ ) & + VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setBufferDeviceAddressCaptureReplay( Bool32 bufferDeviceAddressCaptureReplay_ ) && + VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setBufferDeviceAddressMultiDevice( Bool32 bufferDeviceAddressMultiDevice_ ) & VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setBufferDeviceAddressMultiDevice( Bool32 bufferDeviceAddressMultiDevice_ ) && VULKAN_HPP_NOEXCEPT + { + bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setVulkanMemoryModel( Bool32 vulkanMemoryModel_ ) & VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModel = vulkanMemoryModel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setVulkanMemoryModel( Bool32 vulkanMemoryModel_ ) && VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModel = vulkanMemoryModel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setVulkanMemoryModelDeviceScope( Bool32 vulkanMemoryModelDeviceScope_ ) & VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setVulkanMemoryModelDeviceScope( Bool32 vulkanMemoryModelDeviceScope_ ) && VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & + setVulkanMemoryModelAvailabilityVisibilityChains( Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) & + VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && + setVulkanMemoryModelAvailabilityVisibilityChains( Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) && + VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderOutputViewportIndex( Bool32 shaderOutputViewportIndex_ ) & VULKAN_HPP_NOEXCEPT + { + shaderOutputViewportIndex = shaderOutputViewportIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setShaderOutputViewportIndex( Bool32 shaderOutputViewportIndex_ ) && VULKAN_HPP_NOEXCEPT + { + shaderOutputViewportIndex = shaderOutputViewportIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setShaderOutputLayer( Bool32 shaderOutputLayer_ ) & VULKAN_HPP_NOEXCEPT + { + shaderOutputLayer = shaderOutputLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setShaderOutputLayer( Bool32 shaderOutputLayer_ ) && VULKAN_HPP_NOEXCEPT + { + shaderOutputLayer = shaderOutputLayer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & setSubgroupBroadcastDynamicId( Bool32 subgroupBroadcastDynamicId_ ) & VULKAN_HPP_NOEXCEPT + { + subgroupBroadcastDynamicId = subgroupBroadcastDynamicId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features && setSubgroupBroadcastDynamicId( Bool32 subgroupBroadcastDynamicId_ ) && VULKAN_HPP_NOEXCEPT + { + subgroupBroadcastDynamicId = subgroupBroadcastDynamicId_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVulkan12Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan12Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan12Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan12Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + samplerMirrorClampToEdge, + drawIndirectCount, + storageBuffer8BitAccess, + uniformAndStorageBuffer8BitAccess, + storagePushConstant8, + shaderBufferInt64Atomics, + shaderSharedInt64Atomics, + shaderFloat16, + shaderInt8, + descriptorIndexing, + shaderInputAttachmentArrayDynamicIndexing, + shaderUniformTexelBufferArrayDynamicIndexing, + shaderStorageTexelBufferArrayDynamicIndexing, + shaderUniformBufferArrayNonUniformIndexing, + shaderSampledImageArrayNonUniformIndexing, + shaderStorageBufferArrayNonUniformIndexing, + shaderStorageImageArrayNonUniformIndexing, + shaderInputAttachmentArrayNonUniformIndexing, + shaderUniformTexelBufferArrayNonUniformIndexing, + shaderStorageTexelBufferArrayNonUniformIndexing, + descriptorBindingUniformBufferUpdateAfterBind, + descriptorBindingSampledImageUpdateAfterBind, + descriptorBindingStorageImageUpdateAfterBind, + descriptorBindingStorageBufferUpdateAfterBind, + descriptorBindingUniformTexelBufferUpdateAfterBind, + descriptorBindingStorageTexelBufferUpdateAfterBind, + descriptorBindingUpdateUnusedWhilePending, + descriptorBindingPartiallyBound, + descriptorBindingVariableDescriptorCount, + runtimeDescriptorArray, + samplerFilterMinmax, + scalarBlockLayout, + imagelessFramebuffer, + uniformBufferStandardLayout, + shaderSubgroupExtendedTypes, + separateDepthStencilLayouts, + hostQueryReset, + timelineSemaphore, + bufferDeviceAddress, + bufferDeviceAddressCaptureReplay, + bufferDeviceAddressMultiDevice, + vulkanMemoryModel, + vulkanMemoryModelDeviceScope, + vulkanMemoryModelAvailabilityVisibilityChains, + shaderOutputViewportIndex, + shaderOutputLayer, + subgroupBroadcastDynamicId ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan12Features const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( samplerMirrorClampToEdge == rhs.samplerMirrorClampToEdge ) && + ( drawIndirectCount == rhs.drawIndirectCount ) && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess ) && + ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess ) && ( storagePushConstant8 == rhs.storagePushConstant8 ) && + ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics ) && ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics ) && + ( shaderFloat16 == rhs.shaderFloat16 ) && ( shaderInt8 == rhs.shaderInt8 ) && ( descriptorIndexing == rhs.descriptorIndexing ) && + ( shaderInputAttachmentArrayDynamicIndexing == rhs.shaderInputAttachmentArrayDynamicIndexing ) && + ( shaderUniformTexelBufferArrayDynamicIndexing == rhs.shaderUniformTexelBufferArrayDynamicIndexing ) && + ( shaderStorageTexelBufferArrayDynamicIndexing == rhs.shaderStorageTexelBufferArrayDynamicIndexing ) && + ( shaderUniformBufferArrayNonUniformIndexing == rhs.shaderUniformBufferArrayNonUniformIndexing ) && + ( shaderSampledImageArrayNonUniformIndexing == rhs.shaderSampledImageArrayNonUniformIndexing ) && + ( shaderStorageBufferArrayNonUniformIndexing == rhs.shaderStorageBufferArrayNonUniformIndexing ) && + ( shaderStorageImageArrayNonUniformIndexing == rhs.shaderStorageImageArrayNonUniformIndexing ) && + ( shaderInputAttachmentArrayNonUniformIndexing == rhs.shaderInputAttachmentArrayNonUniformIndexing ) && + ( shaderUniformTexelBufferArrayNonUniformIndexing == rhs.shaderUniformTexelBufferArrayNonUniformIndexing ) && + ( shaderStorageTexelBufferArrayNonUniformIndexing == rhs.shaderStorageTexelBufferArrayNonUniformIndexing ) && + ( descriptorBindingUniformBufferUpdateAfterBind == rhs.descriptorBindingUniformBufferUpdateAfterBind ) && + ( descriptorBindingSampledImageUpdateAfterBind == rhs.descriptorBindingSampledImageUpdateAfterBind ) && + ( descriptorBindingStorageImageUpdateAfterBind == rhs.descriptorBindingStorageImageUpdateAfterBind ) && + ( descriptorBindingStorageBufferUpdateAfterBind == rhs.descriptorBindingStorageBufferUpdateAfterBind ) && + ( descriptorBindingUniformTexelBufferUpdateAfterBind == rhs.descriptorBindingUniformTexelBufferUpdateAfterBind ) && + ( descriptorBindingStorageTexelBufferUpdateAfterBind == rhs.descriptorBindingStorageTexelBufferUpdateAfterBind ) && + ( descriptorBindingUpdateUnusedWhilePending == rhs.descriptorBindingUpdateUnusedWhilePending ) && + ( descriptorBindingPartiallyBound == rhs.descriptorBindingPartiallyBound ) && + ( descriptorBindingVariableDescriptorCount == rhs.descriptorBindingVariableDescriptorCount ) && + ( runtimeDescriptorArray == rhs.runtimeDescriptorArray ) && ( samplerFilterMinmax == rhs.samplerFilterMinmax ) && + ( scalarBlockLayout == rhs.scalarBlockLayout ) && ( imagelessFramebuffer == rhs.imagelessFramebuffer ) && + ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout ) && ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes ) && + ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts ) && ( hostQueryReset == rhs.hostQueryReset ) && + ( timelineSemaphore == rhs.timelineSemaphore ) && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) && + ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) && + ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ) && ( vulkanMemoryModel == rhs.vulkanMemoryModel ) && + ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope ) && + ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains ) && + ( shaderOutputViewportIndex == rhs.shaderOutputViewportIndex ) && ( shaderOutputLayer == rhs.shaderOutputLayer ) && + ( subgroupBroadcastDynamicId == rhs.subgroupBroadcastDynamicId ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan12Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVulkan12Features; + void * pNext = {}; + Bool32 samplerMirrorClampToEdge = {}; + Bool32 drawIndirectCount = {}; + Bool32 storageBuffer8BitAccess = {}; + Bool32 uniformAndStorageBuffer8BitAccess = {}; + Bool32 storagePushConstant8 = {}; + Bool32 shaderBufferInt64Atomics = {}; + Bool32 shaderSharedInt64Atomics = {}; + Bool32 shaderFloat16 = {}; + Bool32 shaderInt8 = {}; + Bool32 descriptorIndexing = {}; + Bool32 shaderInputAttachmentArrayDynamicIndexing = {}; + Bool32 shaderUniformTexelBufferArrayDynamicIndexing = {}; + Bool32 shaderStorageTexelBufferArrayDynamicIndexing = {}; + Bool32 shaderUniformBufferArrayNonUniformIndexing = {}; + Bool32 shaderSampledImageArrayNonUniformIndexing = {}; + Bool32 shaderStorageBufferArrayNonUniformIndexing = {}; + Bool32 shaderStorageImageArrayNonUniformIndexing = {}; + Bool32 shaderInputAttachmentArrayNonUniformIndexing = {}; + Bool32 shaderUniformTexelBufferArrayNonUniformIndexing = {}; + Bool32 shaderStorageTexelBufferArrayNonUniformIndexing = {}; + Bool32 descriptorBindingUniformBufferUpdateAfterBind = {}; + Bool32 descriptorBindingSampledImageUpdateAfterBind = {}; + Bool32 descriptorBindingStorageImageUpdateAfterBind = {}; + Bool32 descriptorBindingStorageBufferUpdateAfterBind = {}; + Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind = {}; + Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind = {}; + Bool32 descriptorBindingUpdateUnusedWhilePending = {}; + Bool32 descriptorBindingPartiallyBound = {}; + Bool32 descriptorBindingVariableDescriptorCount = {}; + Bool32 runtimeDescriptorArray = {}; + Bool32 samplerFilterMinmax = {}; + Bool32 scalarBlockLayout = {}; + Bool32 imagelessFramebuffer = {}; + Bool32 uniformBufferStandardLayout = {}; + Bool32 shaderSubgroupExtendedTypes = {}; + Bool32 separateDepthStencilLayouts = {}; + Bool32 hostQueryReset = {}; + Bool32 timelineSemaphore = {}; + Bool32 bufferDeviceAddress = {}; + Bool32 bufferDeviceAddressCaptureReplay = {}; + Bool32 bufferDeviceAddressMultiDevice = {}; + Bool32 vulkanMemoryModel = {}; + Bool32 vulkanMemoryModelDeviceScope = {}; + Bool32 vulkanMemoryModelAvailabilityVisibilityChains = {}; + Bool32 shaderOutputViewportIndex = {}; + Bool32 shaderOutputLayer = {}; + Bool32 subgroupBroadcastDynamicId = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan12Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan12Features; + }; + + // wrapper struct for struct VkPhysicalDeviceVulkan12Properties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan12Properties.html + struct PhysicalDeviceVulkan12Properties + { + using NativeType = VkPhysicalDeviceVulkan12Properties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan12Properties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceVulkan12Properties( DriverId driverID_ = DriverId::eAmdProprietary, + std::array const & driverName_ = {}, + std::array const & driverInfo_ = {}, + ConformanceVersion conformanceVersion_ = {}, + ShaderFloatControlsIndependence denormBehaviorIndependence_ = ShaderFloatControlsIndependence::e32BitOnly, + ShaderFloatControlsIndependence roundingModeIndependence_ = ShaderFloatControlsIndependence::e32BitOnly, + Bool32 shaderSignedZeroInfNanPreserveFloat16_ = {}, + Bool32 shaderSignedZeroInfNanPreserveFloat32_ = {}, + Bool32 shaderSignedZeroInfNanPreserveFloat64_ = {}, + Bool32 shaderDenormPreserveFloat16_ = {}, + Bool32 shaderDenormPreserveFloat32_ = {}, + Bool32 shaderDenormPreserveFloat64_ = {}, + Bool32 shaderDenormFlushToZeroFloat16_ = {}, + Bool32 shaderDenormFlushToZeroFloat32_ = {}, + Bool32 shaderDenormFlushToZeroFloat64_ = {}, + Bool32 shaderRoundingModeRTEFloat16_ = {}, + Bool32 shaderRoundingModeRTEFloat32_ = {}, + Bool32 shaderRoundingModeRTEFloat64_ = {}, + Bool32 shaderRoundingModeRTZFloat16_ = {}, + Bool32 shaderRoundingModeRTZFloat32_ = {}, + Bool32 shaderRoundingModeRTZFloat64_ = {}, + uint32_t maxUpdateAfterBindDescriptorsInAllPools_ = {}, + Bool32 shaderUniformBufferArrayNonUniformIndexingNative_ = {}, + Bool32 shaderSampledImageArrayNonUniformIndexingNative_ = {}, + Bool32 shaderStorageBufferArrayNonUniformIndexingNative_ = {}, + Bool32 shaderStorageImageArrayNonUniformIndexingNative_ = {}, + Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_ = {}, + Bool32 robustBufferAccessUpdateAfterBind_ = {}, + Bool32 quadDivergentImplicitLod_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments_ = {}, + uint32_t maxPerStageUpdateAfterBindResources_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindSamplers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindSampledImages_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindStorageImages_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments_ = {}, + ResolveModeFlags supportedDepthResolveModes_ = {}, + ResolveModeFlags supportedStencilResolveModes_ = {}, + Bool32 independentResolveNone_ = {}, + Bool32 independentResolve_ = {}, + Bool32 filterMinmaxSingleComponentFormats_ = {}, + Bool32 filterMinmaxImageComponentMapping_ = {}, + uint64_t maxTimelineSemaphoreValueDifference_ = {}, + SampleCountFlags framebufferIntegerColorSampleCounts_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , driverID{ driverID_ } + , driverName{ driverName_ } + , driverInfo{ driverInfo_ } + , conformanceVersion{ conformanceVersion_ } + , denormBehaviorIndependence{ denormBehaviorIndependence_ } + , roundingModeIndependence{ roundingModeIndependence_ } + , shaderSignedZeroInfNanPreserveFloat16{ shaderSignedZeroInfNanPreserveFloat16_ } + , shaderSignedZeroInfNanPreserveFloat32{ shaderSignedZeroInfNanPreserveFloat32_ } + , shaderSignedZeroInfNanPreserveFloat64{ shaderSignedZeroInfNanPreserveFloat64_ } + , shaderDenormPreserveFloat16{ shaderDenormPreserveFloat16_ } + , shaderDenormPreserveFloat32{ shaderDenormPreserveFloat32_ } + , shaderDenormPreserveFloat64{ shaderDenormPreserveFloat64_ } + , shaderDenormFlushToZeroFloat16{ shaderDenormFlushToZeroFloat16_ } + , shaderDenormFlushToZeroFloat32{ shaderDenormFlushToZeroFloat32_ } + , shaderDenormFlushToZeroFloat64{ shaderDenormFlushToZeroFloat64_ } + , shaderRoundingModeRTEFloat16{ shaderRoundingModeRTEFloat16_ } + , shaderRoundingModeRTEFloat32{ shaderRoundingModeRTEFloat32_ } + , shaderRoundingModeRTEFloat64{ shaderRoundingModeRTEFloat64_ } + , shaderRoundingModeRTZFloat16{ shaderRoundingModeRTZFloat16_ } + , shaderRoundingModeRTZFloat32{ shaderRoundingModeRTZFloat32_ } + , shaderRoundingModeRTZFloat64{ shaderRoundingModeRTZFloat64_ } + , maxUpdateAfterBindDescriptorsInAllPools{ maxUpdateAfterBindDescriptorsInAllPools_ } + , shaderUniformBufferArrayNonUniformIndexingNative{ shaderUniformBufferArrayNonUniformIndexingNative_ } + , shaderSampledImageArrayNonUniformIndexingNative{ shaderSampledImageArrayNonUniformIndexingNative_ } + , shaderStorageBufferArrayNonUniformIndexingNative{ shaderStorageBufferArrayNonUniformIndexingNative_ } + , shaderStorageImageArrayNonUniformIndexingNative{ shaderStorageImageArrayNonUniformIndexingNative_ } + , shaderInputAttachmentArrayNonUniformIndexingNative{ shaderInputAttachmentArrayNonUniformIndexingNative_ } + , robustBufferAccessUpdateAfterBind{ robustBufferAccessUpdateAfterBind_ } + , quadDivergentImplicitLod{ quadDivergentImplicitLod_ } + , maxPerStageDescriptorUpdateAfterBindSamplers{ maxPerStageDescriptorUpdateAfterBindSamplers_ } + , maxPerStageDescriptorUpdateAfterBindUniformBuffers{ maxPerStageDescriptorUpdateAfterBindUniformBuffers_ } + , maxPerStageDescriptorUpdateAfterBindStorageBuffers{ maxPerStageDescriptorUpdateAfterBindStorageBuffers_ } + , maxPerStageDescriptorUpdateAfterBindSampledImages{ maxPerStageDescriptorUpdateAfterBindSampledImages_ } + , maxPerStageDescriptorUpdateAfterBindStorageImages{ maxPerStageDescriptorUpdateAfterBindStorageImages_ } + , maxPerStageDescriptorUpdateAfterBindInputAttachments{ maxPerStageDescriptorUpdateAfterBindInputAttachments_ } + , maxPerStageUpdateAfterBindResources{ maxPerStageUpdateAfterBindResources_ } + , maxDescriptorSetUpdateAfterBindSamplers{ maxDescriptorSetUpdateAfterBindSamplers_ } + , maxDescriptorSetUpdateAfterBindUniformBuffers{ maxDescriptorSetUpdateAfterBindUniformBuffers_ } + , maxDescriptorSetUpdateAfterBindUniformBuffersDynamic{ maxDescriptorSetUpdateAfterBindUniformBuffersDynamic_ } + , maxDescriptorSetUpdateAfterBindStorageBuffers{ maxDescriptorSetUpdateAfterBindStorageBuffers_ } + , maxDescriptorSetUpdateAfterBindStorageBuffersDynamic{ maxDescriptorSetUpdateAfterBindStorageBuffersDynamic_ } + , maxDescriptorSetUpdateAfterBindSampledImages{ maxDescriptorSetUpdateAfterBindSampledImages_ } + , maxDescriptorSetUpdateAfterBindStorageImages{ maxDescriptorSetUpdateAfterBindStorageImages_ } + , maxDescriptorSetUpdateAfterBindInputAttachments{ maxDescriptorSetUpdateAfterBindInputAttachments_ } + , supportedDepthResolveModes{ supportedDepthResolveModes_ } + , supportedStencilResolveModes{ supportedStencilResolveModes_ } + , independentResolveNone{ independentResolveNone_ } + , independentResolve{ independentResolve_ } + , filterMinmaxSingleComponentFormats{ filterMinmaxSingleComponentFormats_ } + , filterMinmaxImageComponentMapping{ filterMinmaxImageComponentMapping_ } + , maxTimelineSemaphoreValueDifference{ maxTimelineSemaphoreValueDifference_ } + , framebufferIntegerColorSampleCounts{ framebufferIntegerColorSampleCounts_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan12Properties( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan12Properties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVulkan12Properties & operator=( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVulkan12Properties & operator=( VkPhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceVulkan12Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan12Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan12Properties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan12Properties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + ConformanceVersion const &, + ShaderFloatControlsIndependence const &, + ShaderFloatControlsIndependence const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + uint32_t const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + uint32_t const &, + ResolveModeFlags const &, + ResolveModeFlags const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + Bool32 const &, + uint64_t const &, + SampleCountFlags const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + driverID, + driverName, + driverInfo, + conformanceVersion, + denormBehaviorIndependence, + roundingModeIndependence, + shaderSignedZeroInfNanPreserveFloat16, + shaderSignedZeroInfNanPreserveFloat32, + shaderSignedZeroInfNanPreserveFloat64, + shaderDenormPreserveFloat16, + shaderDenormPreserveFloat32, + shaderDenormPreserveFloat64, + shaderDenormFlushToZeroFloat16, + shaderDenormFlushToZeroFloat32, + shaderDenormFlushToZeroFloat64, + shaderRoundingModeRTEFloat16, + shaderRoundingModeRTEFloat32, + shaderRoundingModeRTEFloat64, + shaderRoundingModeRTZFloat16, + shaderRoundingModeRTZFloat32, + shaderRoundingModeRTZFloat64, + maxUpdateAfterBindDescriptorsInAllPools, + shaderUniformBufferArrayNonUniformIndexingNative, + shaderSampledImageArrayNonUniformIndexingNative, + shaderStorageBufferArrayNonUniformIndexingNative, + shaderStorageImageArrayNonUniformIndexingNative, + shaderInputAttachmentArrayNonUniformIndexingNative, + robustBufferAccessUpdateAfterBind, + quadDivergentImplicitLod, + maxPerStageDescriptorUpdateAfterBindSamplers, + maxPerStageDescriptorUpdateAfterBindUniformBuffers, + maxPerStageDescriptorUpdateAfterBindStorageBuffers, + maxPerStageDescriptorUpdateAfterBindSampledImages, + maxPerStageDescriptorUpdateAfterBindStorageImages, + maxPerStageDescriptorUpdateAfterBindInputAttachments, + maxPerStageUpdateAfterBindResources, + maxDescriptorSetUpdateAfterBindSamplers, + maxDescriptorSetUpdateAfterBindUniformBuffers, + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic, + maxDescriptorSetUpdateAfterBindStorageBuffers, + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic, + maxDescriptorSetUpdateAfterBindSampledImages, + maxDescriptorSetUpdateAfterBindStorageImages, + maxDescriptorSetUpdateAfterBindInputAttachments, + supportedDepthResolveModes, + supportedStencilResolveModes, + independentResolveNone, + independentResolve, + filterMinmaxSingleComponentFormats, + filterMinmaxImageComponentMapping, + maxTimelineSemaphoreValueDifference, + framebufferIntegerColorSampleCounts ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = driverID <=> rhs.driverID; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( driverName, rhs.driverName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = strcmp( driverInfo, rhs.driverInfo ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = conformanceVersion <=> rhs.conformanceVersion; cmp != 0 ) + return cmp; + if ( auto cmp = denormBehaviorIndependence <=> rhs.denormBehaviorIndependence; cmp != 0 ) + return cmp; + if ( auto cmp = roundingModeIndependence <=> rhs.roundingModeIndependence; cmp != 0 ) + return cmp; + if ( auto cmp = shaderSignedZeroInfNanPreserveFloat16 <=> rhs.shaderSignedZeroInfNanPreserveFloat16; cmp != 0 ) + return cmp; + if ( auto cmp = shaderSignedZeroInfNanPreserveFloat32 <=> rhs.shaderSignedZeroInfNanPreserveFloat32; cmp != 0 ) + return cmp; + if ( auto cmp = shaderSignedZeroInfNanPreserveFloat64 <=> rhs.shaderSignedZeroInfNanPreserveFloat64; cmp != 0 ) + return cmp; + if ( auto cmp = shaderDenormPreserveFloat16 <=> rhs.shaderDenormPreserveFloat16; cmp != 0 ) + return cmp; + if ( auto cmp = shaderDenormPreserveFloat32 <=> rhs.shaderDenormPreserveFloat32; cmp != 0 ) + return cmp; + if ( auto cmp = shaderDenormPreserveFloat64 <=> rhs.shaderDenormPreserveFloat64; cmp != 0 ) + return cmp; + if ( auto cmp = shaderDenormFlushToZeroFloat16 <=> rhs.shaderDenormFlushToZeroFloat16; cmp != 0 ) + return cmp; + if ( auto cmp = shaderDenormFlushToZeroFloat32 <=> rhs.shaderDenormFlushToZeroFloat32; cmp != 0 ) + return cmp; + if ( auto cmp = shaderDenormFlushToZeroFloat64 <=> rhs.shaderDenormFlushToZeroFloat64; cmp != 0 ) + return cmp; + if ( auto cmp = shaderRoundingModeRTEFloat16 <=> rhs.shaderRoundingModeRTEFloat16; cmp != 0 ) + return cmp; + if ( auto cmp = shaderRoundingModeRTEFloat32 <=> rhs.shaderRoundingModeRTEFloat32; cmp != 0 ) + return cmp; + if ( auto cmp = shaderRoundingModeRTEFloat64 <=> rhs.shaderRoundingModeRTEFloat64; cmp != 0 ) + return cmp; + if ( auto cmp = shaderRoundingModeRTZFloat16 <=> rhs.shaderRoundingModeRTZFloat16; cmp != 0 ) + return cmp; + if ( auto cmp = shaderRoundingModeRTZFloat32 <=> rhs.shaderRoundingModeRTZFloat32; cmp != 0 ) + return cmp; + if ( auto cmp = shaderRoundingModeRTZFloat64 <=> rhs.shaderRoundingModeRTZFloat64; cmp != 0 ) + return cmp; + if ( auto cmp = maxUpdateAfterBindDescriptorsInAllPools <=> rhs.maxUpdateAfterBindDescriptorsInAllPools; cmp != 0 ) + return cmp; + if ( auto cmp = shaderUniformBufferArrayNonUniformIndexingNative <=> rhs.shaderUniformBufferArrayNonUniformIndexingNative; cmp != 0 ) + return cmp; + if ( auto cmp = shaderSampledImageArrayNonUniformIndexingNative <=> rhs.shaderSampledImageArrayNonUniformIndexingNative; cmp != 0 ) + return cmp; + if ( auto cmp = shaderStorageBufferArrayNonUniformIndexingNative <=> rhs.shaderStorageBufferArrayNonUniformIndexingNative; cmp != 0 ) + return cmp; + if ( auto cmp = shaderStorageImageArrayNonUniformIndexingNative <=> rhs.shaderStorageImageArrayNonUniformIndexingNative; cmp != 0 ) + return cmp; + if ( auto cmp = shaderInputAttachmentArrayNonUniformIndexingNative <=> rhs.shaderInputAttachmentArrayNonUniformIndexingNative; cmp != 0 ) + return cmp; + if ( auto cmp = robustBufferAccessUpdateAfterBind <=> rhs.robustBufferAccessUpdateAfterBind; cmp != 0 ) + return cmp; + if ( auto cmp = quadDivergentImplicitLod <=> rhs.quadDivergentImplicitLod; cmp != 0 ) + return cmp; + if ( auto cmp = maxPerStageDescriptorUpdateAfterBindSamplers <=> rhs.maxPerStageDescriptorUpdateAfterBindSamplers; cmp != 0 ) + return cmp; + if ( auto cmp = maxPerStageDescriptorUpdateAfterBindUniformBuffers <=> rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers; cmp != 0 ) + return cmp; + if ( auto cmp = maxPerStageDescriptorUpdateAfterBindStorageBuffers <=> rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers; cmp != 0 ) + return cmp; + if ( auto cmp = maxPerStageDescriptorUpdateAfterBindSampledImages <=> rhs.maxPerStageDescriptorUpdateAfterBindSampledImages; cmp != 0 ) + return cmp; + if ( auto cmp = maxPerStageDescriptorUpdateAfterBindStorageImages <=> rhs.maxPerStageDescriptorUpdateAfterBindStorageImages; cmp != 0 ) + return cmp; + if ( auto cmp = maxPerStageDescriptorUpdateAfterBindInputAttachments <=> rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments; cmp != 0 ) + return cmp; + if ( auto cmp = maxPerStageUpdateAfterBindResources <=> rhs.maxPerStageUpdateAfterBindResources; cmp != 0 ) + return cmp; + if ( auto cmp = maxDescriptorSetUpdateAfterBindSamplers <=> rhs.maxDescriptorSetUpdateAfterBindSamplers; cmp != 0 ) + return cmp; + if ( auto cmp = maxDescriptorSetUpdateAfterBindUniformBuffers <=> rhs.maxDescriptorSetUpdateAfterBindUniformBuffers; cmp != 0 ) + return cmp; + if ( auto cmp = maxDescriptorSetUpdateAfterBindUniformBuffersDynamic <=> rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic; cmp != 0 ) + return cmp; + if ( auto cmp = maxDescriptorSetUpdateAfterBindStorageBuffers <=> rhs.maxDescriptorSetUpdateAfterBindStorageBuffers; cmp != 0 ) + return cmp; + if ( auto cmp = maxDescriptorSetUpdateAfterBindStorageBuffersDynamic <=> rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic; cmp != 0 ) + return cmp; + if ( auto cmp = maxDescriptorSetUpdateAfterBindSampledImages <=> rhs.maxDescriptorSetUpdateAfterBindSampledImages; cmp != 0 ) + return cmp; + if ( auto cmp = maxDescriptorSetUpdateAfterBindStorageImages <=> rhs.maxDescriptorSetUpdateAfterBindStorageImages; cmp != 0 ) + return cmp; + if ( auto cmp = maxDescriptorSetUpdateAfterBindInputAttachments <=> rhs.maxDescriptorSetUpdateAfterBindInputAttachments; cmp != 0 ) + return cmp; + if ( auto cmp = supportedDepthResolveModes <=> rhs.supportedDepthResolveModes; cmp != 0 ) + return cmp; + if ( auto cmp = supportedStencilResolveModes <=> rhs.supportedStencilResolveModes; cmp != 0 ) + return cmp; + if ( auto cmp = independentResolveNone <=> rhs.independentResolveNone; cmp != 0 ) + return cmp; + if ( auto cmp = independentResolve <=> rhs.independentResolve; cmp != 0 ) + return cmp; + if ( auto cmp = filterMinmaxSingleComponentFormats <=> rhs.filterMinmaxSingleComponentFormats; cmp != 0 ) + return cmp; + if ( auto cmp = filterMinmaxImageComponentMapping <=> rhs.filterMinmaxImageComponentMapping; cmp != 0 ) + return cmp; + if ( auto cmp = maxTimelineSemaphoreValueDifference <=> rhs.maxTimelineSemaphoreValueDifference; cmp != 0 ) + return cmp; + if ( auto cmp = framebufferIntegerColorSampleCounts <=> rhs.framebufferIntegerColorSampleCounts; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( driverID == rhs.driverID ) && ( strcmp( driverName, rhs.driverName ) == 0 ) && + ( strcmp( driverInfo, rhs.driverInfo ) == 0 ) && ( conformanceVersion == rhs.conformanceVersion ) && + ( denormBehaviorIndependence == rhs.denormBehaviorIndependence ) && ( roundingModeIndependence == rhs.roundingModeIndependence ) && + ( shaderSignedZeroInfNanPreserveFloat16 == rhs.shaderSignedZeroInfNanPreserveFloat16 ) && + ( shaderSignedZeroInfNanPreserveFloat32 == rhs.shaderSignedZeroInfNanPreserveFloat32 ) && + ( shaderSignedZeroInfNanPreserveFloat64 == rhs.shaderSignedZeroInfNanPreserveFloat64 ) && + ( shaderDenormPreserveFloat16 == rhs.shaderDenormPreserveFloat16 ) && ( shaderDenormPreserveFloat32 == rhs.shaderDenormPreserveFloat32 ) && + ( shaderDenormPreserveFloat64 == rhs.shaderDenormPreserveFloat64 ) && ( shaderDenormFlushToZeroFloat16 == rhs.shaderDenormFlushToZeroFloat16 ) && + ( shaderDenormFlushToZeroFloat32 == rhs.shaderDenormFlushToZeroFloat32 ) && + ( shaderDenormFlushToZeroFloat64 == rhs.shaderDenormFlushToZeroFloat64 ) && ( shaderRoundingModeRTEFloat16 == rhs.shaderRoundingModeRTEFloat16 ) && + ( shaderRoundingModeRTEFloat32 == rhs.shaderRoundingModeRTEFloat32 ) && ( shaderRoundingModeRTEFloat64 == rhs.shaderRoundingModeRTEFloat64 ) && + ( shaderRoundingModeRTZFloat16 == rhs.shaderRoundingModeRTZFloat16 ) && ( shaderRoundingModeRTZFloat32 == rhs.shaderRoundingModeRTZFloat32 ) && + ( shaderRoundingModeRTZFloat64 == rhs.shaderRoundingModeRTZFloat64 ) && + ( maxUpdateAfterBindDescriptorsInAllPools == rhs.maxUpdateAfterBindDescriptorsInAllPools ) && + ( shaderUniformBufferArrayNonUniformIndexingNative == rhs.shaderUniformBufferArrayNonUniformIndexingNative ) && + ( shaderSampledImageArrayNonUniformIndexingNative == rhs.shaderSampledImageArrayNonUniformIndexingNative ) && + ( shaderStorageBufferArrayNonUniformIndexingNative == rhs.shaderStorageBufferArrayNonUniformIndexingNative ) && + ( shaderStorageImageArrayNonUniformIndexingNative == rhs.shaderStorageImageArrayNonUniformIndexingNative ) && + ( shaderInputAttachmentArrayNonUniformIndexingNative == rhs.shaderInputAttachmentArrayNonUniformIndexingNative ) && + ( robustBufferAccessUpdateAfterBind == rhs.robustBufferAccessUpdateAfterBind ) && ( quadDivergentImplicitLod == rhs.quadDivergentImplicitLod ) && + ( maxPerStageDescriptorUpdateAfterBindSamplers == rhs.maxPerStageDescriptorUpdateAfterBindSamplers ) && + ( maxPerStageDescriptorUpdateAfterBindUniformBuffers == rhs.maxPerStageDescriptorUpdateAfterBindUniformBuffers ) && + ( maxPerStageDescriptorUpdateAfterBindStorageBuffers == rhs.maxPerStageDescriptorUpdateAfterBindStorageBuffers ) && + ( maxPerStageDescriptorUpdateAfterBindSampledImages == rhs.maxPerStageDescriptorUpdateAfterBindSampledImages ) && + ( maxPerStageDescriptorUpdateAfterBindStorageImages == rhs.maxPerStageDescriptorUpdateAfterBindStorageImages ) && + ( maxPerStageDescriptorUpdateAfterBindInputAttachments == rhs.maxPerStageDescriptorUpdateAfterBindInputAttachments ) && + ( maxPerStageUpdateAfterBindResources == rhs.maxPerStageUpdateAfterBindResources ) && + ( maxDescriptorSetUpdateAfterBindSamplers == rhs.maxDescriptorSetUpdateAfterBindSamplers ) && + ( maxDescriptorSetUpdateAfterBindUniformBuffers == rhs.maxDescriptorSetUpdateAfterBindUniformBuffers ) && + ( maxDescriptorSetUpdateAfterBindUniformBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindStorageBuffers == rhs.maxDescriptorSetUpdateAfterBindStorageBuffers ) && + ( maxDescriptorSetUpdateAfterBindStorageBuffersDynamic == rhs.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic ) && + ( maxDescriptorSetUpdateAfterBindSampledImages == rhs.maxDescriptorSetUpdateAfterBindSampledImages ) && + ( maxDescriptorSetUpdateAfterBindStorageImages == rhs.maxDescriptorSetUpdateAfterBindStorageImages ) && + ( maxDescriptorSetUpdateAfterBindInputAttachments == rhs.maxDescriptorSetUpdateAfterBindInputAttachments ) && + ( supportedDepthResolveModes == rhs.supportedDepthResolveModes ) && ( supportedStencilResolveModes == rhs.supportedStencilResolveModes ) && + ( independentResolveNone == rhs.independentResolveNone ) && ( independentResolve == rhs.independentResolve ) && + ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats ) && + ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping ) && + ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference ) && + ( framebufferIntegerColorSampleCounts == rhs.framebufferIntegerColorSampleCounts ); + } + + bool operator!=( PhysicalDeviceVulkan12Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePhysicalDeviceVulkan12Properties; + void * pNext = {}; + DriverId driverID = DriverId::eAmdProprietary; + ArrayWrapper1D driverName = {}; + ArrayWrapper1D driverInfo = {}; + ConformanceVersion conformanceVersion = {}; + ShaderFloatControlsIndependence denormBehaviorIndependence = ShaderFloatControlsIndependence::e32BitOnly; + ShaderFloatControlsIndependence roundingModeIndependence = ShaderFloatControlsIndependence::e32BitOnly; + Bool32 shaderSignedZeroInfNanPreserveFloat16 = {}; + Bool32 shaderSignedZeroInfNanPreserveFloat32 = {}; + Bool32 shaderSignedZeroInfNanPreserveFloat64 = {}; + Bool32 shaderDenormPreserveFloat16 = {}; + Bool32 shaderDenormPreserveFloat32 = {}; + Bool32 shaderDenormPreserveFloat64 = {}; + Bool32 shaderDenormFlushToZeroFloat16 = {}; + Bool32 shaderDenormFlushToZeroFloat32 = {}; + Bool32 shaderDenormFlushToZeroFloat64 = {}; + Bool32 shaderRoundingModeRTEFloat16 = {}; + Bool32 shaderRoundingModeRTEFloat32 = {}; + Bool32 shaderRoundingModeRTEFloat64 = {}; + Bool32 shaderRoundingModeRTZFloat16 = {}; + Bool32 shaderRoundingModeRTZFloat32 = {}; + Bool32 shaderRoundingModeRTZFloat64 = {}; + uint32_t maxUpdateAfterBindDescriptorsInAllPools = {}; + Bool32 shaderUniformBufferArrayNonUniformIndexingNative = {}; + Bool32 shaderSampledImageArrayNonUniformIndexingNative = {}; + Bool32 shaderStorageBufferArrayNonUniformIndexingNative = {}; + Bool32 shaderStorageImageArrayNonUniformIndexingNative = {}; + Bool32 shaderInputAttachmentArrayNonUniformIndexingNative = {}; + Bool32 robustBufferAccessUpdateAfterBind = {}; + Bool32 quadDivergentImplicitLod = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindSamplers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindUniformBuffers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageBuffers = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindSampledImages = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindStorageImages = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindInputAttachments = {}; + uint32_t maxPerStageUpdateAfterBindResources = {}; + uint32_t maxDescriptorSetUpdateAfterBindSamplers = {}; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffers = {}; + uint32_t maxDescriptorSetUpdateAfterBindUniformBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffers = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageBuffersDynamic = {}; + uint32_t maxDescriptorSetUpdateAfterBindSampledImages = {}; + uint32_t maxDescriptorSetUpdateAfterBindStorageImages = {}; + uint32_t maxDescriptorSetUpdateAfterBindInputAttachments = {}; + ResolveModeFlags supportedDepthResolveModes = {}; + ResolveModeFlags supportedStencilResolveModes = {}; + Bool32 independentResolveNone = {}; + Bool32 independentResolve = {}; + Bool32 filterMinmaxSingleComponentFormats = {}; + Bool32 filterMinmaxImageComponentMapping = {}; + uint64_t maxTimelineSemaphoreValueDifference = {}; + SampleCountFlags framebufferIntegerColorSampleCounts = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan12Properties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan12Properties; + }; + + // wrapper struct for struct VkPhysicalDeviceVulkan13Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Features.html + struct PhysicalDeviceVulkan13Features + { + using NativeType = VkPhysicalDeviceVulkan13Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan13Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Features( Bool32 robustImageAccess_ = {}, + Bool32 inlineUniformBlock_ = {}, + Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {}, + Bool32 pipelineCreationCacheControl_ = {}, + Bool32 privateData_ = {}, + Bool32 shaderDemoteToHelperInvocation_ = {}, + Bool32 shaderTerminateInvocation_ = {}, + Bool32 subgroupSizeControl_ = {}, + Bool32 computeFullSubgroups_ = {}, + Bool32 synchronization2_ = {}, + Bool32 textureCompressionASTC_HDR_ = {}, + Bool32 shaderZeroInitializeWorkgroupMemory_ = {}, + Bool32 dynamicRendering_ = {}, + Bool32 shaderIntegerDotProduct_ = {}, + Bool32 maintenance4_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , robustImageAccess{ robustImageAccess_ } + , inlineUniformBlock{ inlineUniformBlock_ } + , descriptorBindingInlineUniformBlockUpdateAfterBind{ descriptorBindingInlineUniformBlockUpdateAfterBind_ } + , pipelineCreationCacheControl{ pipelineCreationCacheControl_ } + , privateData{ privateData_ } + , shaderDemoteToHelperInvocation{ shaderDemoteToHelperInvocation_ } + , shaderTerminateInvocation{ shaderTerminateInvocation_ } + , subgroupSizeControl{ subgroupSizeControl_ } + , computeFullSubgroups{ computeFullSubgroups_ } + , synchronization2{ synchronization2_ } + , textureCompressionASTC_HDR{ textureCompressionASTC_HDR_ } + , shaderZeroInitializeWorkgroupMemory{ shaderZeroInitializeWorkgroupMemory_ } + , dynamicRendering{ dynamicRendering_ } + , shaderIntegerDotProduct{ shaderIntegerDotProduct_ } + , maintenance4{ maintenance4_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Features( PhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan13Features( VkPhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan13Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVulkan13Features & operator=( PhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVulkan13Features & operator=( VkPhysicalDeviceVulkan13Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setRobustImageAccess( Bool32 robustImageAccess_ ) & VULKAN_HPP_NOEXCEPT + { + robustImageAccess = robustImageAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setRobustImageAccess( Bool32 robustImageAccess_ ) && VULKAN_HPP_NOEXCEPT + { + robustImageAccess = robustImageAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setInlineUniformBlock( Bool32 inlineUniformBlock_ ) & VULKAN_HPP_NOEXCEPT + { + inlineUniformBlock = inlineUniformBlock_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setInlineUniformBlock( Bool32 inlineUniformBlock_ ) && VULKAN_HPP_NOEXCEPT + { + inlineUniformBlock = inlineUniformBlock_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & + setDescriptorBindingInlineUniformBlockUpdateAfterBind( Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && + setDescriptorBindingInlineUniformBlockUpdateAfterBind( Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPipelineCreationCacheControl( Bool32 pipelineCreationCacheControl_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineCreationCacheControl = pipelineCreationCacheControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setPipelineCreationCacheControl( Bool32 pipelineCreationCacheControl_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineCreationCacheControl = pipelineCreationCacheControl_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setPrivateData( Bool32 privateData_ ) & VULKAN_HPP_NOEXCEPT + { + privateData = privateData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setPrivateData( Bool32 privateData_ ) && VULKAN_HPP_NOEXCEPT + { + privateData = privateData_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setShaderDemoteToHelperInvocation( Bool32 shaderDemoteToHelperInvocation_ ) & VULKAN_HPP_NOEXCEPT + { + shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setShaderDemoteToHelperInvocation( Bool32 shaderDemoteToHelperInvocation_ ) && VULKAN_HPP_NOEXCEPT + { + shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setShaderTerminateInvocation( Bool32 shaderTerminateInvocation_ ) & VULKAN_HPP_NOEXCEPT + { + shaderTerminateInvocation = shaderTerminateInvocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setShaderTerminateInvocation( Bool32 shaderTerminateInvocation_ ) && VULKAN_HPP_NOEXCEPT + { + shaderTerminateInvocation = shaderTerminateInvocation_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setSubgroupSizeControl( Bool32 subgroupSizeControl_ ) & VULKAN_HPP_NOEXCEPT + { + subgroupSizeControl = subgroupSizeControl_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setSubgroupSizeControl( Bool32 subgroupSizeControl_ ) && VULKAN_HPP_NOEXCEPT + { + subgroupSizeControl = subgroupSizeControl_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setComputeFullSubgroups( Bool32 computeFullSubgroups_ ) & VULKAN_HPP_NOEXCEPT + { + computeFullSubgroups = computeFullSubgroups_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setComputeFullSubgroups( Bool32 computeFullSubgroups_ ) && VULKAN_HPP_NOEXCEPT + { + computeFullSubgroups = computeFullSubgroups_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setSynchronization2( Bool32 synchronization2_ ) & VULKAN_HPP_NOEXCEPT + { + synchronization2 = synchronization2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setSynchronization2( Bool32 synchronization2_ ) && VULKAN_HPP_NOEXCEPT + { + synchronization2 = synchronization2_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setTextureCompressionASTC_HDR( Bool32 textureCompressionASTC_HDR_ ) & VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_HDR = textureCompressionASTC_HDR_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setTextureCompressionASTC_HDR( Bool32 textureCompressionASTC_HDR_ ) && VULKAN_HPP_NOEXCEPT + { + textureCompressionASTC_HDR = textureCompressionASTC_HDR_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setShaderZeroInitializeWorkgroupMemory( Bool32 shaderZeroInitializeWorkgroupMemory_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setShaderZeroInitializeWorkgroupMemory( Bool32 shaderZeroInitializeWorkgroupMemory_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setDynamicRendering( Bool32 dynamicRendering_ ) & VULKAN_HPP_NOEXCEPT + { + dynamicRendering = dynamicRendering_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setDynamicRendering( Bool32 dynamicRendering_ ) && VULKAN_HPP_NOEXCEPT + { + dynamicRendering = dynamicRendering_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setShaderIntegerDotProduct( Bool32 shaderIntegerDotProduct_ ) & VULKAN_HPP_NOEXCEPT + { + shaderIntegerDotProduct = shaderIntegerDotProduct_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setShaderIntegerDotProduct( Bool32 shaderIntegerDotProduct_ ) && VULKAN_HPP_NOEXCEPT + { + shaderIntegerDotProduct = shaderIntegerDotProduct_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features & setMaintenance4( Bool32 maintenance4_ ) & VULKAN_HPP_NOEXCEPT + { + maintenance4 = maintenance4_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan13Features && setMaintenance4( Bool32 maintenance4_ ) && VULKAN_HPP_NOEXCEPT + { + maintenance4 = maintenance4_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVulkan13Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan13Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan13Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan13Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + robustImageAccess, + inlineUniformBlock, + descriptorBindingInlineUniformBlockUpdateAfterBind, + pipelineCreationCacheControl, + privateData, + shaderDemoteToHelperInvocation, + shaderTerminateInvocation, + subgroupSizeControl, + computeFullSubgroups, + synchronization2, + textureCompressionASTC_HDR, + shaderZeroInitializeWorkgroupMemory, + dynamicRendering, + shaderIntegerDotProduct, + maintenance4 ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan13Features const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan13Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( robustImageAccess == rhs.robustImageAccess ) && + ( inlineUniformBlock == rhs.inlineUniformBlock ) && + ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind ) && + ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl ) && ( privateData == rhs.privateData ) && + ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation ) && ( shaderTerminateInvocation == rhs.shaderTerminateInvocation ) && + ( subgroupSizeControl == rhs.subgroupSizeControl ) && ( computeFullSubgroups == rhs.computeFullSubgroups ) && + ( synchronization2 == rhs.synchronization2 ) && ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR ) && + ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory ) && ( dynamicRendering == rhs.dynamicRendering ) && + ( shaderIntegerDotProduct == rhs.shaderIntegerDotProduct ) && ( maintenance4 == rhs.maintenance4 ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan13Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVulkan13Features; + void * pNext = {}; + Bool32 robustImageAccess = {}; + Bool32 inlineUniformBlock = {}; + Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind = {}; + Bool32 pipelineCreationCacheControl = {}; + Bool32 privateData = {}; + Bool32 shaderDemoteToHelperInvocation = {}; + Bool32 shaderTerminateInvocation = {}; + Bool32 subgroupSizeControl = {}; + Bool32 computeFullSubgroups = {}; + Bool32 synchronization2 = {}; + Bool32 textureCompressionASTC_HDR = {}; + Bool32 shaderZeroInitializeWorkgroupMemory = {}; + Bool32 dynamicRendering = {}; + Bool32 shaderIntegerDotProduct = {}; + Bool32 maintenance4 = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan13Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan13Features; + }; + + // wrapper struct for struct VkPhysicalDeviceVulkan13Properties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan13Properties.html + struct PhysicalDeviceVulkan13Properties + { + using NativeType = VkPhysicalDeviceVulkan13Properties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan13Properties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Properties( uint32_t minSubgroupSize_ = {}, + uint32_t maxSubgroupSize_ = {}, + uint32_t maxComputeWorkgroupSubgroups_ = {}, + ShaderStageFlags requiredSubgroupSizeStages_ = {}, + uint32_t maxInlineUniformBlockSize_ = {}, + uint32_t maxPerStageDescriptorInlineUniformBlocks_ = {}, + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = {}, + uint32_t maxDescriptorSetInlineUniformBlocks_ = {}, + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ = {}, + uint32_t maxInlineUniformTotalSize_ = {}, + Bool32 integerDotProduct8BitUnsignedAccelerated_ = {}, + Bool32 integerDotProduct8BitSignedAccelerated_ = {}, + Bool32 integerDotProduct8BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated_ = {}, + Bool32 integerDotProduct4x8BitPackedSignedAccelerated_ = {}, + Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated_ = {}, + Bool32 integerDotProduct16BitUnsignedAccelerated_ = {}, + Bool32 integerDotProduct16BitSignedAccelerated_ = {}, + Bool32 integerDotProduct16BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProduct32BitUnsignedAccelerated_ = {}, + Bool32 integerDotProduct32BitSignedAccelerated_ = {}, + Bool32 integerDotProduct32BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProduct64BitUnsignedAccelerated_ = {}, + Bool32 integerDotProduct64BitSignedAccelerated_ = {}, + Bool32 integerDotProduct64BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated_ = {}, + Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ = {}, + DeviceSize storageTexelBufferOffsetAlignmentBytes_ = {}, + Bool32 storageTexelBufferOffsetSingleTexelAlignment_ = {}, + DeviceSize uniformTexelBufferOffsetAlignmentBytes_ = {}, + Bool32 uniformTexelBufferOffsetSingleTexelAlignment_ = {}, + DeviceSize maxBufferSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minSubgroupSize{ minSubgroupSize_ } + , maxSubgroupSize{ maxSubgroupSize_ } + , maxComputeWorkgroupSubgroups{ maxComputeWorkgroupSubgroups_ } + , requiredSubgroupSizeStages{ requiredSubgroupSizeStages_ } + , maxInlineUniformBlockSize{ maxInlineUniformBlockSize_ } + , maxPerStageDescriptorInlineUniformBlocks{ maxPerStageDescriptorInlineUniformBlocks_ } + , maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks{ maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ } + , maxDescriptorSetInlineUniformBlocks{ maxDescriptorSetInlineUniformBlocks_ } + , maxDescriptorSetUpdateAfterBindInlineUniformBlocks{ maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ } + , maxInlineUniformTotalSize{ maxInlineUniformTotalSize_ } + , integerDotProduct8BitUnsignedAccelerated{ integerDotProduct8BitUnsignedAccelerated_ } + , integerDotProduct8BitSignedAccelerated{ integerDotProduct8BitSignedAccelerated_ } + , integerDotProduct8BitMixedSignednessAccelerated{ integerDotProduct8BitMixedSignednessAccelerated_ } + , integerDotProduct4x8BitPackedUnsignedAccelerated{ integerDotProduct4x8BitPackedUnsignedAccelerated_ } + , integerDotProduct4x8BitPackedSignedAccelerated{ integerDotProduct4x8BitPackedSignedAccelerated_ } + , integerDotProduct4x8BitPackedMixedSignednessAccelerated{ integerDotProduct4x8BitPackedMixedSignednessAccelerated_ } + , integerDotProduct16BitUnsignedAccelerated{ integerDotProduct16BitUnsignedAccelerated_ } + , integerDotProduct16BitSignedAccelerated{ integerDotProduct16BitSignedAccelerated_ } + , integerDotProduct16BitMixedSignednessAccelerated{ integerDotProduct16BitMixedSignednessAccelerated_ } + , integerDotProduct32BitUnsignedAccelerated{ integerDotProduct32BitUnsignedAccelerated_ } + , integerDotProduct32BitSignedAccelerated{ integerDotProduct32BitSignedAccelerated_ } + , integerDotProduct32BitMixedSignednessAccelerated{ integerDotProduct32BitMixedSignednessAccelerated_ } + , integerDotProduct64BitUnsignedAccelerated{ integerDotProduct64BitUnsignedAccelerated_ } + , integerDotProduct64BitSignedAccelerated{ integerDotProduct64BitSignedAccelerated_ } + , integerDotProduct64BitMixedSignednessAccelerated{ integerDotProduct64BitMixedSignednessAccelerated_ } + , integerDotProductAccumulatingSaturating8BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating8BitUnsignedAccelerated_ } + , integerDotProductAccumulatingSaturating8BitSignedAccelerated{ integerDotProductAccumulatingSaturating8BitSignedAccelerated_ } + , integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated_ } + , integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated_ } + , integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated_ } + , integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated_ } + , integerDotProductAccumulatingSaturating16BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating16BitUnsignedAccelerated_ } + , integerDotProductAccumulatingSaturating16BitSignedAccelerated{ integerDotProductAccumulatingSaturating16BitSignedAccelerated_ } + , integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated_ } + , integerDotProductAccumulatingSaturating32BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating32BitUnsignedAccelerated_ } + , integerDotProductAccumulatingSaturating32BitSignedAccelerated{ integerDotProductAccumulatingSaturating32BitSignedAccelerated_ } + , integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated_ } + , integerDotProductAccumulatingSaturating64BitUnsignedAccelerated{ integerDotProductAccumulatingSaturating64BitUnsignedAccelerated_ } + , integerDotProductAccumulatingSaturating64BitSignedAccelerated{ integerDotProductAccumulatingSaturating64BitSignedAccelerated_ } + , integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated{ integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated_ } + , storageTexelBufferOffsetAlignmentBytes{ storageTexelBufferOffsetAlignmentBytes_ } + , storageTexelBufferOffsetSingleTexelAlignment{ storageTexelBufferOffsetSingleTexelAlignment_ } + , uniformTexelBufferOffsetAlignmentBytes{ uniformTexelBufferOffsetAlignmentBytes_ } + , uniformTexelBufferOffsetSingleTexelAlignment{ uniformTexelBufferOffsetSingleTexelAlignment_ } + , maxBufferSize{ maxBufferSize_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan13Properties( PhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan13Properties( VkPhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan13Properties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVulkan13Properties & operator=( PhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVulkan13Properties & operator=( VkPhysicalDeviceVulkan13Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceVulkan13Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan13Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan13Properties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan13Properties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + minSubgroupSize, + maxSubgroupSize, + maxComputeWorkgroupSubgroups, + requiredSubgroupSizeStages, + maxInlineUniformBlockSize, + maxPerStageDescriptorInlineUniformBlocks, + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks, + maxDescriptorSetInlineUniformBlocks, + maxDescriptorSetUpdateAfterBindInlineUniformBlocks, + maxInlineUniformTotalSize, + integerDotProduct8BitUnsignedAccelerated, + integerDotProduct8BitSignedAccelerated, + integerDotProduct8BitMixedSignednessAccelerated, + integerDotProduct4x8BitPackedUnsignedAccelerated, + integerDotProduct4x8BitPackedSignedAccelerated, + integerDotProduct4x8BitPackedMixedSignednessAccelerated, + integerDotProduct16BitUnsignedAccelerated, + integerDotProduct16BitSignedAccelerated, + integerDotProduct16BitMixedSignednessAccelerated, + integerDotProduct32BitUnsignedAccelerated, + integerDotProduct32BitSignedAccelerated, + integerDotProduct32BitMixedSignednessAccelerated, + integerDotProduct64BitUnsignedAccelerated, + integerDotProduct64BitSignedAccelerated, + integerDotProduct64BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating8BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating8BitSignedAccelerated, + integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated, + integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating16BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating16BitSignedAccelerated, + integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating32BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating32BitSignedAccelerated, + integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated, + integerDotProductAccumulatingSaturating64BitUnsignedAccelerated, + integerDotProductAccumulatingSaturating64BitSignedAccelerated, + integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated, + storageTexelBufferOffsetAlignmentBytes, + storageTexelBufferOffsetSingleTexelAlignment, + uniformTexelBufferOffsetAlignmentBytes, + uniformTexelBufferOffsetSingleTexelAlignment, + maxBufferSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan13Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan13Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minSubgroupSize == rhs.minSubgroupSize ) && ( maxSubgroupSize == rhs.maxSubgroupSize ) && + ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups ) && ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages ) && + ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize ) && + ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks ) && + ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ) && + ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks ) && + ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ) && + ( maxInlineUniformTotalSize == rhs.maxInlineUniformTotalSize ) && + ( integerDotProduct8BitUnsignedAccelerated == rhs.integerDotProduct8BitUnsignedAccelerated ) && + ( integerDotProduct8BitSignedAccelerated == rhs.integerDotProduct8BitSignedAccelerated ) && + ( integerDotProduct8BitMixedSignednessAccelerated == rhs.integerDotProduct8BitMixedSignednessAccelerated ) && + ( integerDotProduct4x8BitPackedUnsignedAccelerated == rhs.integerDotProduct4x8BitPackedUnsignedAccelerated ) && + ( integerDotProduct4x8BitPackedSignedAccelerated == rhs.integerDotProduct4x8BitPackedSignedAccelerated ) && + ( integerDotProduct4x8BitPackedMixedSignednessAccelerated == rhs.integerDotProduct4x8BitPackedMixedSignednessAccelerated ) && + ( integerDotProduct16BitUnsignedAccelerated == rhs.integerDotProduct16BitUnsignedAccelerated ) && + ( integerDotProduct16BitSignedAccelerated == rhs.integerDotProduct16BitSignedAccelerated ) && + ( integerDotProduct16BitMixedSignednessAccelerated == rhs.integerDotProduct16BitMixedSignednessAccelerated ) && + ( integerDotProduct32BitUnsignedAccelerated == rhs.integerDotProduct32BitUnsignedAccelerated ) && + ( integerDotProduct32BitSignedAccelerated == rhs.integerDotProduct32BitSignedAccelerated ) && + ( integerDotProduct32BitMixedSignednessAccelerated == rhs.integerDotProduct32BitMixedSignednessAccelerated ) && + ( integerDotProduct64BitUnsignedAccelerated == rhs.integerDotProduct64BitUnsignedAccelerated ) && + ( integerDotProduct64BitSignedAccelerated == rhs.integerDotProduct64BitSignedAccelerated ) && + ( integerDotProduct64BitMixedSignednessAccelerated == rhs.integerDotProduct64BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating8BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating16BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating32BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitUnsignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitSignedAccelerated == rhs.integerDotProductAccumulatingSaturating64BitSignedAccelerated ) && + ( integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated == + rhs.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated ) && + ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes ) && + ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment ) && + ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes ) && + ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment ) && ( maxBufferSize == rhs.maxBufferSize ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan13Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVulkan13Properties; + void * pNext = {}; + uint32_t minSubgroupSize = {}; + uint32_t maxSubgroupSize = {}; + uint32_t maxComputeWorkgroupSubgroups = {}; + ShaderStageFlags requiredSubgroupSizeStages = {}; + uint32_t maxInlineUniformBlockSize = {}; + uint32_t maxPerStageDescriptorInlineUniformBlocks = {}; + uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = {}; + uint32_t maxDescriptorSetInlineUniformBlocks = {}; + uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks = {}; + uint32_t maxInlineUniformTotalSize = {}; + Bool32 integerDotProduct8BitUnsignedAccelerated = {}; + Bool32 integerDotProduct8BitSignedAccelerated = {}; + Bool32 integerDotProduct8BitMixedSignednessAccelerated = {}; + Bool32 integerDotProduct4x8BitPackedUnsignedAccelerated = {}; + Bool32 integerDotProduct4x8BitPackedSignedAccelerated = {}; + Bool32 integerDotProduct4x8BitPackedMixedSignednessAccelerated = {}; + Bool32 integerDotProduct16BitUnsignedAccelerated = {}; + Bool32 integerDotProduct16BitSignedAccelerated = {}; + Bool32 integerDotProduct16BitMixedSignednessAccelerated = {}; + Bool32 integerDotProduct32BitUnsignedAccelerated = {}; + Bool32 integerDotProduct32BitSignedAccelerated = {}; + Bool32 integerDotProduct32BitMixedSignednessAccelerated = {}; + Bool32 integerDotProduct64BitUnsignedAccelerated = {}; + Bool32 integerDotProduct64BitSignedAccelerated = {}; + Bool32 integerDotProduct64BitMixedSignednessAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating8BitUnsignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating8BitSignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating16BitUnsignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating16BitSignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating32BitUnsignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating32BitSignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating64BitUnsignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating64BitSignedAccelerated = {}; + Bool32 integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated = {}; + DeviceSize storageTexelBufferOffsetAlignmentBytes = {}; + Bool32 storageTexelBufferOffsetSingleTexelAlignment = {}; + DeviceSize uniformTexelBufferOffsetAlignmentBytes = {}; + Bool32 uniformTexelBufferOffsetSingleTexelAlignment = {}; + DeviceSize maxBufferSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan13Properties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan13Properties; + }; + + // wrapper struct for struct VkPhysicalDeviceVulkan14Features, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Features.html + struct PhysicalDeviceVulkan14Features + { + using NativeType = VkPhysicalDeviceVulkan14Features; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan14Features; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan14Features( Bool32 globalPriorityQuery_ = {}, + Bool32 shaderSubgroupRotate_ = {}, + Bool32 shaderSubgroupRotateClustered_ = {}, + Bool32 shaderFloatControls2_ = {}, + Bool32 shaderExpectAssume_ = {}, + Bool32 rectangularLines_ = {}, + Bool32 bresenhamLines_ = {}, + Bool32 smoothLines_ = {}, + Bool32 stippledRectangularLines_ = {}, + Bool32 stippledBresenhamLines_ = {}, + Bool32 stippledSmoothLines_ = {}, + Bool32 vertexAttributeInstanceRateDivisor_ = {}, + Bool32 vertexAttributeInstanceRateZeroDivisor_ = {}, + Bool32 indexTypeUint8_ = {}, + Bool32 dynamicRenderingLocalRead_ = {}, + Bool32 maintenance5_ = {}, + Bool32 maintenance6_ = {}, + Bool32 pipelineProtectedAccess_ = {}, + Bool32 pipelineRobustness_ = {}, + Bool32 hostImageCopy_ = {}, + Bool32 pushDescriptor_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , globalPriorityQuery{ globalPriorityQuery_ } + , shaderSubgroupRotate{ shaderSubgroupRotate_ } + , shaderSubgroupRotateClustered{ shaderSubgroupRotateClustered_ } + , shaderFloatControls2{ shaderFloatControls2_ } + , shaderExpectAssume{ shaderExpectAssume_ } + , rectangularLines{ rectangularLines_ } + , bresenhamLines{ bresenhamLines_ } + , smoothLines{ smoothLines_ } + , stippledRectangularLines{ stippledRectangularLines_ } + , stippledBresenhamLines{ stippledBresenhamLines_ } + , stippledSmoothLines{ stippledSmoothLines_ } + , vertexAttributeInstanceRateDivisor{ vertexAttributeInstanceRateDivisor_ } + , vertexAttributeInstanceRateZeroDivisor{ vertexAttributeInstanceRateZeroDivisor_ } + , indexTypeUint8{ indexTypeUint8_ } + , dynamicRenderingLocalRead{ dynamicRenderingLocalRead_ } + , maintenance5{ maintenance5_ } + , maintenance6{ maintenance6_ } + , pipelineProtectedAccess{ pipelineProtectedAccess_ } + , pipelineRobustness{ pipelineRobustness_ } + , hostImageCopy{ hostImageCopy_ } + , pushDescriptor{ pushDescriptor_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan14Features( PhysicalDeviceVulkan14Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan14Features( VkPhysicalDeviceVulkan14Features const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan14Features( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVulkan14Features & operator=( PhysicalDeviceVulkan14Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVulkan14Features & operator=( VkPhysicalDeviceVulkan14Features const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setGlobalPriorityQuery( Bool32 globalPriorityQuery_ ) & VULKAN_HPP_NOEXCEPT + { + globalPriorityQuery = globalPriorityQuery_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setGlobalPriorityQuery( Bool32 globalPriorityQuery_ ) && VULKAN_HPP_NOEXCEPT + { + globalPriorityQuery = globalPriorityQuery_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setShaderSubgroupRotate( Bool32 shaderSubgroupRotate_ ) & VULKAN_HPP_NOEXCEPT + { + shaderSubgroupRotate = shaderSubgroupRotate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setShaderSubgroupRotate( Bool32 shaderSubgroupRotate_ ) && VULKAN_HPP_NOEXCEPT + { + shaderSubgroupRotate = shaderSubgroupRotate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setShaderSubgroupRotateClustered( Bool32 shaderSubgroupRotateClustered_ ) & VULKAN_HPP_NOEXCEPT + { + shaderSubgroupRotateClustered = shaderSubgroupRotateClustered_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setShaderSubgroupRotateClustered( Bool32 shaderSubgroupRotateClustered_ ) && VULKAN_HPP_NOEXCEPT + { + shaderSubgroupRotateClustered = shaderSubgroupRotateClustered_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setShaderFloatControls2( Bool32 shaderFloatControls2_ ) & VULKAN_HPP_NOEXCEPT + { + shaderFloatControls2 = shaderFloatControls2_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setShaderFloatControls2( Bool32 shaderFloatControls2_ ) && VULKAN_HPP_NOEXCEPT + { + shaderFloatControls2 = shaderFloatControls2_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setShaderExpectAssume( Bool32 shaderExpectAssume_ ) & VULKAN_HPP_NOEXCEPT + { + shaderExpectAssume = shaderExpectAssume_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setShaderExpectAssume( Bool32 shaderExpectAssume_ ) && VULKAN_HPP_NOEXCEPT + { + shaderExpectAssume = shaderExpectAssume_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setRectangularLines( Bool32 rectangularLines_ ) & VULKAN_HPP_NOEXCEPT + { + rectangularLines = rectangularLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setRectangularLines( Bool32 rectangularLines_ ) && VULKAN_HPP_NOEXCEPT + { + rectangularLines = rectangularLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setBresenhamLines( Bool32 bresenhamLines_ ) & VULKAN_HPP_NOEXCEPT + { + bresenhamLines = bresenhamLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setBresenhamLines( Bool32 bresenhamLines_ ) && VULKAN_HPP_NOEXCEPT + { + bresenhamLines = bresenhamLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setSmoothLines( Bool32 smoothLines_ ) & VULKAN_HPP_NOEXCEPT + { + smoothLines = smoothLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setSmoothLines( Bool32 smoothLines_ ) && VULKAN_HPP_NOEXCEPT + { + smoothLines = smoothLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setStippledRectangularLines( Bool32 stippledRectangularLines_ ) & VULKAN_HPP_NOEXCEPT + { + stippledRectangularLines = stippledRectangularLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setStippledRectangularLines( Bool32 stippledRectangularLines_ ) && VULKAN_HPP_NOEXCEPT + { + stippledRectangularLines = stippledRectangularLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setStippledBresenhamLines( Bool32 stippledBresenhamLines_ ) & VULKAN_HPP_NOEXCEPT + { + stippledBresenhamLines = stippledBresenhamLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setStippledBresenhamLines( Bool32 stippledBresenhamLines_ ) && VULKAN_HPP_NOEXCEPT + { + stippledBresenhamLines = stippledBresenhamLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setStippledSmoothLines( Bool32 stippledSmoothLines_ ) & VULKAN_HPP_NOEXCEPT + { + stippledSmoothLines = stippledSmoothLines_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setStippledSmoothLines( Bool32 stippledSmoothLines_ ) && VULKAN_HPP_NOEXCEPT + { + stippledSmoothLines = stippledSmoothLines_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setVertexAttributeInstanceRateDivisor( Bool32 vertexAttributeInstanceRateDivisor_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setVertexAttributeInstanceRateDivisor( Bool32 vertexAttributeInstanceRateDivisor_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setVertexAttributeInstanceRateZeroDivisor( Bool32 vertexAttributeInstanceRateZeroDivisor_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setVertexAttributeInstanceRateZeroDivisor( Bool32 vertexAttributeInstanceRateZeroDivisor_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setIndexTypeUint8( Bool32 indexTypeUint8_ ) & VULKAN_HPP_NOEXCEPT + { + indexTypeUint8 = indexTypeUint8_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setIndexTypeUint8( Bool32 indexTypeUint8_ ) && VULKAN_HPP_NOEXCEPT + { + indexTypeUint8 = indexTypeUint8_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setDynamicRenderingLocalRead( Bool32 dynamicRenderingLocalRead_ ) & VULKAN_HPP_NOEXCEPT + { + dynamicRenderingLocalRead = dynamicRenderingLocalRead_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setDynamicRenderingLocalRead( Bool32 dynamicRenderingLocalRead_ ) && VULKAN_HPP_NOEXCEPT + { + dynamicRenderingLocalRead = dynamicRenderingLocalRead_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setMaintenance5( Bool32 maintenance5_ ) & VULKAN_HPP_NOEXCEPT + { + maintenance5 = maintenance5_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setMaintenance5( Bool32 maintenance5_ ) && VULKAN_HPP_NOEXCEPT + { + maintenance5 = maintenance5_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setMaintenance6( Bool32 maintenance6_ ) & VULKAN_HPP_NOEXCEPT + { + maintenance6 = maintenance6_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setMaintenance6( Bool32 maintenance6_ ) && VULKAN_HPP_NOEXCEPT + { + maintenance6 = maintenance6_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setPipelineProtectedAccess( Bool32 pipelineProtectedAccess_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineProtectedAccess = pipelineProtectedAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setPipelineProtectedAccess( Bool32 pipelineProtectedAccess_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineProtectedAccess = pipelineProtectedAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setPipelineRobustness( Bool32 pipelineRobustness_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineRobustness = pipelineRobustness_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setPipelineRobustness( Bool32 pipelineRobustness_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineRobustness = pipelineRobustness_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setHostImageCopy( Bool32 hostImageCopy_ ) & VULKAN_HPP_NOEXCEPT + { + hostImageCopy = hostImageCopy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setHostImageCopy( Bool32 hostImageCopy_ ) && VULKAN_HPP_NOEXCEPT + { + hostImageCopy = hostImageCopy_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features & setPushDescriptor( Bool32 pushDescriptor_ ) & VULKAN_HPP_NOEXCEPT + { + pushDescriptor = pushDescriptor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Features && setPushDescriptor( Bool32 pushDescriptor_ ) && VULKAN_HPP_NOEXCEPT + { + pushDescriptor = pushDescriptor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVulkan14Features const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan14Features &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan14Features const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan14Features *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + globalPriorityQuery, + shaderSubgroupRotate, + shaderSubgroupRotateClustered, + shaderFloatControls2, + shaderExpectAssume, + rectangularLines, + bresenhamLines, + smoothLines, + stippledRectangularLines, + stippledBresenhamLines, + stippledSmoothLines, + vertexAttributeInstanceRateDivisor, + vertexAttributeInstanceRateZeroDivisor, + indexTypeUint8, + dynamicRenderingLocalRead, + maintenance5, + maintenance6, + pipelineProtectedAccess, + pipelineRobustness, + hostImageCopy, + pushDescriptor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan14Features const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan14Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( globalPriorityQuery == rhs.globalPriorityQuery ) && + ( shaderSubgroupRotate == rhs.shaderSubgroupRotate ) && ( shaderSubgroupRotateClustered == rhs.shaderSubgroupRotateClustered ) && + ( shaderFloatControls2 == rhs.shaderFloatControls2 ) && ( shaderExpectAssume == rhs.shaderExpectAssume ) && + ( rectangularLines == rhs.rectangularLines ) && ( bresenhamLines == rhs.bresenhamLines ) && ( smoothLines == rhs.smoothLines ) && + ( stippledRectangularLines == rhs.stippledRectangularLines ) && ( stippledBresenhamLines == rhs.stippledBresenhamLines ) && + ( stippledSmoothLines == rhs.stippledSmoothLines ) && ( vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor ) && + ( vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor ) && ( indexTypeUint8 == rhs.indexTypeUint8 ) && + ( dynamicRenderingLocalRead == rhs.dynamicRenderingLocalRead ) && ( maintenance5 == rhs.maintenance5 ) && ( maintenance6 == rhs.maintenance6 ) && + ( pipelineProtectedAccess == rhs.pipelineProtectedAccess ) && ( pipelineRobustness == rhs.pipelineRobustness ) && + ( hostImageCopy == rhs.hostImageCopy ) && ( pushDescriptor == rhs.pushDescriptor ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan14Features const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVulkan14Features; + void * pNext = {}; + Bool32 globalPriorityQuery = {}; + Bool32 shaderSubgroupRotate = {}; + Bool32 shaderSubgroupRotateClustered = {}; + Bool32 shaderFloatControls2 = {}; + Bool32 shaderExpectAssume = {}; + Bool32 rectangularLines = {}; + Bool32 bresenhamLines = {}; + Bool32 smoothLines = {}; + Bool32 stippledRectangularLines = {}; + Bool32 stippledBresenhamLines = {}; + Bool32 stippledSmoothLines = {}; + Bool32 vertexAttributeInstanceRateDivisor = {}; + Bool32 vertexAttributeInstanceRateZeroDivisor = {}; + Bool32 indexTypeUint8 = {}; + Bool32 dynamicRenderingLocalRead = {}; + Bool32 maintenance5 = {}; + Bool32 maintenance6 = {}; + Bool32 pipelineProtectedAccess = {}; + Bool32 pipelineRobustness = {}; + Bool32 hostImageCopy = {}; + Bool32 pushDescriptor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan14Features; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan14Features; + }; + + // wrapper struct for struct VkPhysicalDeviceVulkan14Properties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkan14Properties.html + struct PhysicalDeviceVulkan14Properties + { + using NativeType = VkPhysicalDeviceVulkan14Properties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan14Properties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + PhysicalDeviceVulkan14Properties( uint32_t lineSubPixelPrecisionBits_ = {}, + uint32_t maxVertexAttribDivisor_ = {}, + Bool32 supportsNonZeroFirstInstance_ = {}, + uint32_t maxPushDescriptors_ = {}, + Bool32 dynamicRenderingLocalReadDepthStencilAttachments_ = {}, + Bool32 dynamicRenderingLocalReadMultisampledAttachments_ = {}, + Bool32 earlyFragmentMultisampleCoverageAfterSampleCounting_ = {}, + Bool32 earlyFragmentSampleMaskTestBeforeSampleCounting_ = {}, + Bool32 depthStencilSwizzleOneSupport_ = {}, + Bool32 polygonModePointSize_ = {}, + Bool32 nonStrictSinglePixelWideLinesUseParallelogram_ = {}, + Bool32 nonStrictWideLinesUseParallelogram_ = {}, + Bool32 blockTexelViewCompatibleMultipleLayers_ = {}, + uint32_t maxCombinedImageSamplerDescriptorCount_ = {}, + Bool32 fragmentShadingRateClampCombinerInputs_ = {}, + PipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers_ = PipelineRobustnessBufferBehavior::eDeviceDefault, + PipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers_ = PipelineRobustnessBufferBehavior::eDeviceDefault, + PipelineRobustnessBufferBehavior defaultRobustnessVertexInputs_ = PipelineRobustnessBufferBehavior::eDeviceDefault, + PipelineRobustnessImageBehavior defaultRobustnessImages_ = PipelineRobustnessImageBehavior::eDeviceDefault, + uint32_t copySrcLayoutCount_ = {}, + ImageLayout * pCopySrcLayouts_ = {}, + uint32_t copyDstLayoutCount_ = {}, + ImageLayout * pCopyDstLayouts_ = {}, + std::array const & optimalTilingLayoutUUID_ = {}, + Bool32 identicalMemoryTypeRequirements_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , lineSubPixelPrecisionBits{ lineSubPixelPrecisionBits_ } + , maxVertexAttribDivisor{ maxVertexAttribDivisor_ } + , supportsNonZeroFirstInstance{ supportsNonZeroFirstInstance_ } + , maxPushDescriptors{ maxPushDescriptors_ } + , dynamicRenderingLocalReadDepthStencilAttachments{ dynamicRenderingLocalReadDepthStencilAttachments_ } + , dynamicRenderingLocalReadMultisampledAttachments{ dynamicRenderingLocalReadMultisampledAttachments_ } + , earlyFragmentMultisampleCoverageAfterSampleCounting{ earlyFragmentMultisampleCoverageAfterSampleCounting_ } + , earlyFragmentSampleMaskTestBeforeSampleCounting{ earlyFragmentSampleMaskTestBeforeSampleCounting_ } + , depthStencilSwizzleOneSupport{ depthStencilSwizzleOneSupport_ } + , polygonModePointSize{ polygonModePointSize_ } + , nonStrictSinglePixelWideLinesUseParallelogram{ nonStrictSinglePixelWideLinesUseParallelogram_ } + , nonStrictWideLinesUseParallelogram{ nonStrictWideLinesUseParallelogram_ } + , blockTexelViewCompatibleMultipleLayers{ blockTexelViewCompatibleMultipleLayers_ } + , maxCombinedImageSamplerDescriptorCount{ maxCombinedImageSamplerDescriptorCount_ } + , fragmentShadingRateClampCombinerInputs{ fragmentShadingRateClampCombinerInputs_ } + , defaultRobustnessStorageBuffers{ defaultRobustnessStorageBuffers_ } + , defaultRobustnessUniformBuffers{ defaultRobustnessUniformBuffers_ } + , defaultRobustnessVertexInputs{ defaultRobustnessVertexInputs_ } + , defaultRobustnessImages{ defaultRobustnessImages_ } + , copySrcLayoutCount{ copySrcLayoutCount_ } + , pCopySrcLayouts{ pCopySrcLayouts_ } + , copyDstLayoutCount{ copyDstLayoutCount_ } + , pCopyDstLayouts{ pCopyDstLayouts_ } + , optimalTilingLayoutUUID{ optimalTilingLayoutUUID_ } + , identicalMemoryTypeRequirements{ identicalMemoryTypeRequirements_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan14Properties( PhysicalDeviceVulkan14Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkan14Properties( VkPhysicalDeviceVulkan14Properties const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkan14Properties( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVulkan14Properties & operator=( PhysicalDeviceVulkan14Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVulkan14Properties & operator=( VkPhysicalDeviceVulkan14Properties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPhysicalDeviceVulkan14Properties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan14Properties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan14Properties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkan14Properties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + Bool32 const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + lineSubPixelPrecisionBits, + maxVertexAttribDivisor, + supportsNonZeroFirstInstance, + maxPushDescriptors, + dynamicRenderingLocalReadDepthStencilAttachments, + dynamicRenderingLocalReadMultisampledAttachments, + earlyFragmentMultisampleCoverageAfterSampleCounting, + earlyFragmentSampleMaskTestBeforeSampleCounting, + depthStencilSwizzleOneSupport, + polygonModePointSize, + nonStrictSinglePixelWideLinesUseParallelogram, + nonStrictWideLinesUseParallelogram, + blockTexelViewCompatibleMultipleLayers, + maxCombinedImageSamplerDescriptorCount, + fragmentShadingRateClampCombinerInputs, + defaultRobustnessStorageBuffers, + defaultRobustnessUniformBuffers, + defaultRobustnessVertexInputs, + defaultRobustnessImages, + copySrcLayoutCount, + pCopySrcLayouts, + copyDstLayoutCount, + pCopyDstLayouts, + optimalTilingLayoutUUID, + identicalMemoryTypeRequirements ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkan14Properties const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkan14Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lineSubPixelPrecisionBits == rhs.lineSubPixelPrecisionBits ) && + ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor ) && ( supportsNonZeroFirstInstance == rhs.supportsNonZeroFirstInstance ) && + ( maxPushDescriptors == rhs.maxPushDescriptors ) && + ( dynamicRenderingLocalReadDepthStencilAttachments == rhs.dynamicRenderingLocalReadDepthStencilAttachments ) && + ( dynamicRenderingLocalReadMultisampledAttachments == rhs.dynamicRenderingLocalReadMultisampledAttachments ) && + ( earlyFragmentMultisampleCoverageAfterSampleCounting == rhs.earlyFragmentMultisampleCoverageAfterSampleCounting ) && + ( earlyFragmentSampleMaskTestBeforeSampleCounting == rhs.earlyFragmentSampleMaskTestBeforeSampleCounting ) && + ( depthStencilSwizzleOneSupport == rhs.depthStencilSwizzleOneSupport ) && ( polygonModePointSize == rhs.polygonModePointSize ) && + ( nonStrictSinglePixelWideLinesUseParallelogram == rhs.nonStrictSinglePixelWideLinesUseParallelogram ) && + ( nonStrictWideLinesUseParallelogram == rhs.nonStrictWideLinesUseParallelogram ) && + ( blockTexelViewCompatibleMultipleLayers == rhs.blockTexelViewCompatibleMultipleLayers ) && + ( maxCombinedImageSamplerDescriptorCount == rhs.maxCombinedImageSamplerDescriptorCount ) && + ( fragmentShadingRateClampCombinerInputs == rhs.fragmentShadingRateClampCombinerInputs ) && + ( defaultRobustnessStorageBuffers == rhs.defaultRobustnessStorageBuffers ) && + ( defaultRobustnessUniformBuffers == rhs.defaultRobustnessUniformBuffers ) && + ( defaultRobustnessVertexInputs == rhs.defaultRobustnessVertexInputs ) && ( defaultRobustnessImages == rhs.defaultRobustnessImages ) && + ( copySrcLayoutCount == rhs.copySrcLayoutCount ) && ( pCopySrcLayouts == rhs.pCopySrcLayouts ) && + ( copyDstLayoutCount == rhs.copyDstLayoutCount ) && ( pCopyDstLayouts == rhs.pCopyDstLayouts ) && + ( optimalTilingLayoutUUID == rhs.optimalTilingLayoutUUID ) && ( identicalMemoryTypeRequirements == rhs.identicalMemoryTypeRequirements ); +# endif + } + + bool operator!=( PhysicalDeviceVulkan14Properties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVulkan14Properties; + void * pNext = {}; + uint32_t lineSubPixelPrecisionBits = {}; + uint32_t maxVertexAttribDivisor = {}; + Bool32 supportsNonZeroFirstInstance = {}; + uint32_t maxPushDescriptors = {}; + Bool32 dynamicRenderingLocalReadDepthStencilAttachments = {}; + Bool32 dynamicRenderingLocalReadMultisampledAttachments = {}; + Bool32 earlyFragmentMultisampleCoverageAfterSampleCounting = {}; + Bool32 earlyFragmentSampleMaskTestBeforeSampleCounting = {}; + Bool32 depthStencilSwizzleOneSupport = {}; + Bool32 polygonModePointSize = {}; + Bool32 nonStrictSinglePixelWideLinesUseParallelogram = {}; + Bool32 nonStrictWideLinesUseParallelogram = {}; + Bool32 blockTexelViewCompatibleMultipleLayers = {}; + uint32_t maxCombinedImageSamplerDescriptorCount = {}; + Bool32 fragmentShadingRateClampCombinerInputs = {}; + PipelineRobustnessBufferBehavior defaultRobustnessStorageBuffers = PipelineRobustnessBufferBehavior::eDeviceDefault; + PipelineRobustnessBufferBehavior defaultRobustnessUniformBuffers = PipelineRobustnessBufferBehavior::eDeviceDefault; + PipelineRobustnessBufferBehavior defaultRobustnessVertexInputs = PipelineRobustnessBufferBehavior::eDeviceDefault; + PipelineRobustnessImageBehavior defaultRobustnessImages = PipelineRobustnessImageBehavior::eDeviceDefault; + uint32_t copySrcLayoutCount = {}; + ImageLayout * pCopySrcLayouts = {}; + uint32_t copyDstLayoutCount = {}; + ImageLayout * pCopyDstLayouts = {}; + ArrayWrapper1D optimalTilingLayoutUUID = {}; + Bool32 identicalMemoryTypeRequirements = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan14Properties; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkan14Properties; + }; + + // wrapper struct for struct VkPhysicalDeviceVulkanMemoryModelFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceVulkanMemoryModelFeatures.html + struct PhysicalDeviceVulkanMemoryModelFeatures + { + using NativeType = VkPhysicalDeviceVulkanMemoryModelFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( Bool32 vulkanMemoryModel_ = {}, + Bool32 vulkanMemoryModelDeviceScope_ = {}, + Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vulkanMemoryModel{ vulkanMemoryModel_ } + , vulkanMemoryModelDeviceScope{ vulkanMemoryModelDeviceScope_ } + , vulkanMemoryModelAvailabilityVisibilityChains{ vulkanMemoryModelAvailabilityVisibilityChains_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceVulkanMemoryModelFeatures( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceVulkanMemoryModelFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceVulkanMemoryModelFeatures & operator=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceVulkanMemoryModelFeatures & operator=( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setVulkanMemoryModel( Bool32 vulkanMemoryModel_ ) & VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModel = vulkanMemoryModel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures && setVulkanMemoryModel( Bool32 vulkanMemoryModel_ ) && VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModel = vulkanMemoryModel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & setVulkanMemoryModelDeviceScope( Bool32 vulkanMemoryModelDeviceScope_ ) & + VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures && setVulkanMemoryModelDeviceScope( Bool32 vulkanMemoryModelDeviceScope_ ) && + VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & + setVulkanMemoryModelAvailabilityVisibilityChains( Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) & + VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures && + setVulkanMemoryModelAvailabilityVisibilityChains( Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) && + VULKAN_HPP_NOEXCEPT + { + vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceVulkanMemoryModelFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkanMemoryModelFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkanMemoryModelFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceVulkanMemoryModelFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vulkanMemoryModel, vulkanMemoryModelDeviceScope, vulkanMemoryModelAvailabilityVisibilityChains ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceVulkanMemoryModelFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vulkanMemoryModel == rhs.vulkanMemoryModel ) && + ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope ) && + ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains ); +# endif + } + + bool operator!=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures; + void * pNext = {}; + Bool32 vulkanMemoryModel = {}; + Bool32 vulkanMemoryModelDeviceScope = {}; + Bool32 vulkanMemoryModelAvailabilityVisibilityChains = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceVulkanMemoryModelFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceVulkanMemoryModelFeatures; + }; + + using PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures; + + // wrapper struct for struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.html + struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR + { + using NativeType = VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( Bool32 workgroupMemoryExplicitLayout_ = {}, + Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ = {}, + Bool32 workgroupMemoryExplicitLayout8BitAccess_ = {}, + Bool32 workgroupMemoryExplicitLayout16BitAccess_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , workgroupMemoryExplicitLayout{ workgroupMemoryExplicitLayout_ } + , workgroupMemoryExplicitLayoutScalarBlockLayout{ workgroupMemoryExplicitLayoutScalarBlockLayout_ } + , workgroupMemoryExplicitLayout8BitAccess{ workgroupMemoryExplicitLayout8BitAccess_ } + , workgroupMemoryExplicitLayout16BitAccess{ workgroupMemoryExplicitLayout16BitAccess_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + operator=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + operator=( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setWorkgroupMemoryExplicitLayout( Bool32 workgroupMemoryExplicitLayout_ ) & + VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayout = workgroupMemoryExplicitLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR && + setWorkgroupMemoryExplicitLayout( Bool32 workgroupMemoryExplicitLayout_ ) && + VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayout = workgroupMemoryExplicitLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + setWorkgroupMemoryExplicitLayoutScalarBlockLayout( Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ ) & + VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayoutScalarBlockLayout = workgroupMemoryExplicitLayoutScalarBlockLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR && + setWorkgroupMemoryExplicitLayoutScalarBlockLayout( Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ ) && + VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayoutScalarBlockLayout = workgroupMemoryExplicitLayoutScalarBlockLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + setWorkgroupMemoryExplicitLayout8BitAccess( Bool32 workgroupMemoryExplicitLayout8BitAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayout8BitAccess = workgroupMemoryExplicitLayout8BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR && + setWorkgroupMemoryExplicitLayout8BitAccess( Bool32 workgroupMemoryExplicitLayout8BitAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayout8BitAccess = workgroupMemoryExplicitLayout8BitAccess_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & + setWorkgroupMemoryExplicitLayout16BitAccess( Bool32 workgroupMemoryExplicitLayout16BitAccess_ ) & + VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayout16BitAccess = workgroupMemoryExplicitLayout16BitAccess_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR && + setWorkgroupMemoryExplicitLayout16BitAccess( Bool32 workgroupMemoryExplicitLayout16BitAccess_ ) && + VULKAN_HPP_NOEXCEPT + { + workgroupMemoryExplicitLayout16BitAccess = workgroupMemoryExplicitLayout16BitAccess_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + workgroupMemoryExplicitLayout, + workgroupMemoryExplicitLayoutScalarBlockLayout, + workgroupMemoryExplicitLayout8BitAccess, + workgroupMemoryExplicitLayout16BitAccess ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & ) const = default; +#else + bool operator==( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( workgroupMemoryExplicitLayout == rhs.workgroupMemoryExplicitLayout ) && + ( workgroupMemoryExplicitLayoutScalarBlockLayout == rhs.workgroupMemoryExplicitLayoutScalarBlockLayout ) && + ( workgroupMemoryExplicitLayout8BitAccess == rhs.workgroupMemoryExplicitLayout8BitAccess ) && + ( workgroupMemoryExplicitLayout16BitAccess == rhs.workgroupMemoryExplicitLayout16BitAccess ); +# endif + } + + bool operator!=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + void * pNext = {}; + Bool32 workgroupMemoryExplicitLayout = {}; + Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout = {}; + Bool32 workgroupMemoryExplicitLayout8BitAccess = {}; + Bool32 workgroupMemoryExplicitLayout16BitAccess = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; + }; + + // wrapper struct for struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.html + struct PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT + { + using NativeType = VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( Bool32 ycbcr2plane444Formats_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , ycbcr2plane444Formats{ ycbcr2plane444Formats_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & operator=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & operator=( VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT & setYcbcr2plane444Formats( Bool32 ycbcr2plane444Formats_ ) & VULKAN_HPP_NOEXCEPT + { + ycbcr2plane444Formats = ycbcr2plane444Formats_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT && setYcbcr2plane444Formats( Bool32 ycbcr2plane444Formats_ ) && VULKAN_HPP_NOEXCEPT + { + ycbcr2plane444Formats = ycbcr2plane444Formats_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, ycbcr2plane444Formats ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcr2plane444Formats == rhs.ycbcr2plane444Formats ); +# endif + } + + bool operator!=( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + void * pNext = {}; + Bool32 ycbcr2plane444Formats = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrDegammaFeaturesQCOM.html + struct PhysicalDeviceYcbcrDegammaFeaturesQCOM + { + using NativeType = VkPhysicalDeviceYcbcrDegammaFeaturesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceYcbcrDegammaFeaturesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrDegammaFeaturesQCOM( Bool32 ycbcrDegamma_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , ycbcrDegamma{ ycbcrDegamma_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrDegammaFeaturesQCOM( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceYcbcrDegammaFeaturesQCOM( VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceYcbcrDegammaFeaturesQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceYcbcrDegammaFeaturesQCOM & operator=( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceYcbcrDegammaFeaturesQCOM & operator=( VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrDegammaFeaturesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrDegammaFeaturesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrDegammaFeaturesQCOM & setYcbcrDegamma( Bool32 ycbcrDegamma_ ) & VULKAN_HPP_NOEXCEPT + { + ycbcrDegamma = ycbcrDegamma_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrDegammaFeaturesQCOM && setYcbcrDegamma( Bool32 ycbcrDegamma_ ) && VULKAN_HPP_NOEXCEPT + { + ycbcrDegamma = ycbcrDegamma_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceYcbcrDegammaFeaturesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, ycbcrDegamma ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & ) const = default; +#else + bool operator==( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcrDegamma == rhs.ycbcrDegamma ); +# endif + } + + bool operator!=( PhysicalDeviceYcbcrDegammaFeaturesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceYcbcrDegammaFeaturesQCOM; + void * pNext = {}; + Bool32 ycbcrDegamma = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceYcbcrDegammaFeaturesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceYcbcrDegammaFeaturesQCOM; + }; + + // wrapper struct for struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceYcbcrImageArraysFeaturesEXT.html + struct PhysicalDeviceYcbcrImageArraysFeaturesEXT + { + using NativeType = VkPhysicalDeviceYcbcrImageArraysFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( Bool32 ycbcrImageArrays_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , ycbcrImageArrays{ ycbcrImageArrays_ } + { + } + + VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceYcbcrImageArraysFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & setYcbcrImageArrays( Bool32 ycbcrImageArrays_ ) & VULKAN_HPP_NOEXCEPT + { + ycbcrImageArrays = ycbcrImageArrays_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT && setYcbcrImageArrays( Bool32 ycbcrImageArrays_ ) && VULKAN_HPP_NOEXCEPT + { + ycbcrImageArrays = ycbcrImageArrays_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, ycbcrImageArrays ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ycbcrImageArrays == rhs.ycbcrImageArrays ); +# endif + } + + bool operator!=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT; + void * pNext = {}; + Bool32 ycbcrImageArrays = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceYcbcrImageArraysFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceYcbcrImageArraysFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.html + struct PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT + { + using NativeType = VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT( Bool32 zeroInitializeDeviceMemory_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , zeroInitializeDeviceMemory{ zeroInitializeDeviceMemory_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT( PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT( VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT & + operator=( PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT & operator=( VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT & setZeroInitializeDeviceMemory( Bool32 zeroInitializeDeviceMemory_ ) & + VULKAN_HPP_NOEXCEPT + { + zeroInitializeDeviceMemory = zeroInitializeDeviceMemory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT && setZeroInitializeDeviceMemory( Bool32 zeroInitializeDeviceMemory_ ) && + VULKAN_HPP_NOEXCEPT + { + zeroInitializeDeviceMemory = zeroInitializeDeviceMemory_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, zeroInitializeDeviceMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT const & ) const = default; +#else + bool operator==( PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( zeroInitializeDeviceMemory == rhs.zeroInitializeDeviceMemory ); +# endif + } + + bool operator!=( PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT; + void * pNext = {}; + Bool32 zeroInitializeDeviceMemory = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT; + }; + + // wrapper struct for struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.html + struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures + { + using NativeType = VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( Bool32 shaderZeroInitializeWorkgroupMemory_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shaderZeroInitializeWorkgroupMemory{ shaderZeroInitializeWorkgroupMemory_ } + { + } + + VULKAN_HPP_CONSTEXPR + PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + : PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures( *reinterpret_cast( &rhs ) ) + { + } + + PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & + operator=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & operator=( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures & + setShaderZeroInitializeWorkgroupMemory( Bool32 shaderZeroInitializeWorkgroupMemory_ ) & + VULKAN_HPP_NOEXCEPT + { + shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures && + setShaderZeroInitializeWorkgroupMemory( Bool32 shaderZeroInitializeWorkgroupMemory_ ) && + VULKAN_HPP_NOEXCEPT + { + shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shaderZeroInitializeWorkgroupMemory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & ) const = default; +#else + bool operator==( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory ); +# endif + } + + bool operator!=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + void * pNext = {}; + Bool32 shaderZeroInitializeWorkgroupMemory = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + }; +#endif + + template <> + struct CppType + { + using Type = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + }; + + using PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures; + + // wrapper struct for struct VkPipelineBinaryKeyKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryKeyKHR.html + struct PipelineBinaryKeyKHR + { + using NativeType = VkPipelineBinaryKeyKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineBinaryKeyKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR( uint32_t keySize_ = {}, + std::array const & key_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , keySize{ keySize_ } + , key{ key_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR( PipelineBinaryKeyKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineBinaryKeyKHR( VkPipelineBinaryKeyKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineBinaryKeyKHR( *reinterpret_cast( &rhs ) ) + { + } + + PipelineBinaryKeyKHR & operator=( PipelineBinaryKeyKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineBinaryKeyKHR & operator=( VkPipelineBinaryKeyKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR & setKeySize( uint32_t keySize_ ) & VULKAN_HPP_NOEXCEPT + { + keySize = keySize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR && setKeySize( uint32_t keySize_ ) && VULKAN_HPP_NOEXCEPT + { + keySize = keySize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR & setKey( std::array key_ ) & VULKAN_HPP_NOEXCEPT + { + key = key_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeyKHR && setKey( std::array key_ ) && VULKAN_HPP_NOEXCEPT + { + key = key_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineBinaryKeyKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryKeyKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryKeyKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineBinaryKeyKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, keySize, key ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineBinaryKeyKHR const & ) const = default; +#else + bool operator==( PipelineBinaryKeyKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( keySize == rhs.keySize ) && ( key == rhs.key ); +# endif + } + + bool operator!=( PipelineBinaryKeyKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineBinaryKeyKHR; + void * pNext = {}; + uint32_t keySize = {}; + ArrayWrapper1D key = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineBinaryKeyKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineBinaryKeyKHR; + }; + + // wrapper struct for struct VkPipelineBinaryDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryDataKHR.html + struct PipelineBinaryDataKHR + { + using NativeType = VkPipelineBinaryDataKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineBinaryDataKHR( size_t dataSize_ = {}, void * pData_ = {} ) VULKAN_HPP_NOEXCEPT + : dataSize{ dataSize_ } + , pData{ pData_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineBinaryDataKHR( PipelineBinaryDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineBinaryDataKHR( VkPipelineBinaryDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineBinaryDataKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + PipelineBinaryDataKHR( ArrayProxyNoTemporaries const & data_ ) : dataSize( data_.size() * sizeof( T ) ), pData( data_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineBinaryDataKHR & operator=( PipelineBinaryDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineBinaryDataKHR & operator=( VkPipelineBinaryDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataKHR & setDataSize( size_t dataSize_ ) & VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataKHR && setDataSize( size_t dataSize_ ) && VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataKHR & setPData( void * pData_ ) & VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataKHR && setPData( void * pData_ ) && VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + PipelineBinaryDataKHR & setData( ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = data_.size() * sizeof( T ); + pData = data_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineBinaryDataKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryDataKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryDataKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineBinaryDataKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( dataSize, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineBinaryDataKHR const & ) const = default; +#else + bool operator==( PipelineBinaryDataKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( dataSize == rhs.dataSize ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( PipelineBinaryDataKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + size_t dataSize = {}; + void * pData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineBinaryDataKHR; + }; +#endif + + // wrapper struct for struct VkPipelineBinaryKeysAndDataKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryKeysAndDataKHR.html + struct PipelineBinaryKeysAndDataKHR + { + using NativeType = VkPipelineBinaryKeysAndDataKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR( uint32_t binaryCount_ = {}, + PipelineBinaryKeyKHR const * pPipelineBinaryKeys_ = {}, + PipelineBinaryDataKHR const * pPipelineBinaryData_ = {} ) VULKAN_HPP_NOEXCEPT + : binaryCount{ binaryCount_ } + , pPipelineBinaryKeys{ pPipelineBinaryKeys_ } + , pPipelineBinaryData{ pPipelineBinaryData_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR( PipelineBinaryKeysAndDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineBinaryKeysAndDataKHR( VkPipelineBinaryKeysAndDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineBinaryKeysAndDataKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineBinaryKeysAndDataKHR( ArrayProxyNoTemporaries const & pipelineBinaryKeys_, + ArrayProxyNoTemporaries const & pipelineBinaryData_ = {} ) + : binaryCount( static_cast( pipelineBinaryKeys_.size() ) ) + , pPipelineBinaryKeys( pipelineBinaryKeys_.data() ) + , pPipelineBinaryData( pipelineBinaryData_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( pipelineBinaryKeys_.size() == pipelineBinaryData_.size() ); +# else + if ( pipelineBinaryKeys_.size() != pipelineBinaryData_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::PipelineBinaryKeysAndDataKHR::PipelineBinaryKeysAndDataKHR: pipelineBinaryKeys_.size() != pipelineBinaryData_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineBinaryKeysAndDataKHR & operator=( PipelineBinaryKeysAndDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineBinaryKeysAndDataKHR & operator=( VkPipelineBinaryKeysAndDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR & setBinaryCount( uint32_t binaryCount_ ) & VULKAN_HPP_NOEXCEPT + { + binaryCount = binaryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR && setBinaryCount( uint32_t binaryCount_ ) && VULKAN_HPP_NOEXCEPT + { + binaryCount = binaryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR & setPPipelineBinaryKeys( PipelineBinaryKeyKHR const * pPipelineBinaryKeys_ ) & VULKAN_HPP_NOEXCEPT + { + pPipelineBinaryKeys = pPipelineBinaryKeys_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR && setPPipelineBinaryKeys( PipelineBinaryKeyKHR const * pPipelineBinaryKeys_ ) && VULKAN_HPP_NOEXCEPT + { + pPipelineBinaryKeys = pPipelineBinaryKeys_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineBinaryKeysAndDataKHR & setPipelineBinaryKeys( ArrayProxyNoTemporaries const & pipelineBinaryKeys_ ) VULKAN_HPP_NOEXCEPT + { + binaryCount = static_cast( pipelineBinaryKeys_.size() ); + pPipelineBinaryKeys = pipelineBinaryKeys_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR & setPPipelineBinaryData( PipelineBinaryDataKHR const * pPipelineBinaryData_ ) & VULKAN_HPP_NOEXCEPT + { + pPipelineBinaryData = pPipelineBinaryData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryKeysAndDataKHR && setPPipelineBinaryData( PipelineBinaryDataKHR const * pPipelineBinaryData_ ) && VULKAN_HPP_NOEXCEPT + { + pPipelineBinaryData = pPipelineBinaryData_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineBinaryKeysAndDataKHR & setPipelineBinaryData( ArrayProxyNoTemporaries const & pipelineBinaryData_ ) VULKAN_HPP_NOEXCEPT + { + binaryCount = static_cast( pipelineBinaryData_.size() ); + pPipelineBinaryData = pipelineBinaryData_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineBinaryKeysAndDataKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryKeysAndDataKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryKeysAndDataKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineBinaryKeysAndDataKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( binaryCount, pPipelineBinaryKeys, pPipelineBinaryData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineBinaryKeysAndDataKHR const & ) const = default; +#else + bool operator==( PipelineBinaryKeysAndDataKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( binaryCount == rhs.binaryCount ) && ( pPipelineBinaryKeys == rhs.pPipelineBinaryKeys ) && ( pPipelineBinaryData == rhs.pPipelineBinaryData ); +# endif + } + + bool operator!=( PipelineBinaryKeysAndDataKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t binaryCount = {}; + PipelineBinaryKeyKHR const * pPipelineBinaryKeys = {}; + PipelineBinaryDataKHR const * pPipelineBinaryData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineBinaryKeysAndDataKHR; + }; +#endif + + // wrapper struct for struct VkPipelineCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreateInfoKHR.html + struct PipelineCreateInfoKHR + { + using NativeType = VkPipelineCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCreateInfoKHR( void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {} + + VULKAN_HPP_CONSTEXPR PipelineCreateInfoKHR( PipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCreateInfoKHR( VkPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + PipelineCreateInfoKHR & operator=( PipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCreateInfoKHR & operator=( VkPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCreateInfoKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreateInfoKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCreateInfoKHR const & ) const = default; +#else + bool operator==( PipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( PipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineCreateInfoKHR; + void * pNext = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineCreateInfoKHR; + }; + + // wrapper struct for struct VkPipelineBinaryCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryCreateInfoKHR.html + struct PipelineBinaryCreateInfoKHR + { + using NativeType = VkPipelineBinaryCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineBinaryCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR( PipelineBinaryKeysAndDataKHR const * pKeysAndDataInfo_ = {}, + Pipeline pipeline_ = {}, + PipelineCreateInfoKHR const * pPipelineCreateInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pKeysAndDataInfo{ pKeysAndDataInfo_ } + , pipeline{ pipeline_ } + , pPipelineCreateInfo{ pPipelineCreateInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR( PipelineBinaryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineBinaryCreateInfoKHR( VkPipelineBinaryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineBinaryCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + PipelineBinaryCreateInfoKHR & operator=( PipelineBinaryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineBinaryCreateInfoKHR & operator=( VkPipelineBinaryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR & setPKeysAndDataInfo( PipelineBinaryKeysAndDataKHR const * pKeysAndDataInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pKeysAndDataInfo = pKeysAndDataInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR && setPKeysAndDataInfo( PipelineBinaryKeysAndDataKHR const * pKeysAndDataInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pKeysAndDataInfo = pKeysAndDataInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR & setPipeline( Pipeline pipeline_ ) & VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR && setPipeline( Pipeline pipeline_ ) && VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR & setPPipelineCreateInfo( PipelineCreateInfoKHR const * pPipelineCreateInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pPipelineCreateInfo = pPipelineCreateInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryCreateInfoKHR && setPPipelineCreateInfo( PipelineCreateInfoKHR const * pPipelineCreateInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pPipelineCreateInfo = pPipelineCreateInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineBinaryCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineBinaryCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pKeysAndDataInfo, pipeline, pPipelineCreateInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineBinaryCreateInfoKHR const & ) const = default; +#else + bool operator==( PipelineBinaryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pKeysAndDataInfo == rhs.pKeysAndDataInfo ) && ( pipeline == rhs.pipeline ) && + ( pPipelineCreateInfo == rhs.pPipelineCreateInfo ); +# endif + } + + bool operator!=( PipelineBinaryCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineBinaryCreateInfoKHR; + void const * pNext = {}; + PipelineBinaryKeysAndDataKHR const * pKeysAndDataInfo = {}; + Pipeline pipeline = {}; + PipelineCreateInfoKHR const * pPipelineCreateInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineBinaryCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineBinaryCreateInfoKHR; + }; + + // wrapper struct for struct VkPipelineBinaryDataInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryDataInfoKHR.html + struct PipelineBinaryDataInfoKHR + { + using NativeType = VkPipelineBinaryDataInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineBinaryDataInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineBinaryDataInfoKHR( PipelineBinaryKHR pipelineBinary_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineBinary{ pipelineBinary_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineBinaryDataInfoKHR( PipelineBinaryDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineBinaryDataInfoKHR( VkPipelineBinaryDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineBinaryDataInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + PipelineBinaryDataInfoKHR & operator=( PipelineBinaryDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineBinaryDataInfoKHR & operator=( VkPipelineBinaryDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataInfoKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataInfoKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataInfoKHR & setPipelineBinary( PipelineBinaryKHR pipelineBinary_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineBinary = pipelineBinary_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryDataInfoKHR && setPipelineBinary( PipelineBinaryKHR pipelineBinary_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineBinary = pipelineBinary_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineBinaryDataInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryDataInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryDataInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineBinaryDataInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineBinary ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineBinaryDataInfoKHR const & ) const = default; +#else + bool operator==( PipelineBinaryDataInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBinary == rhs.pipelineBinary ); +# endif + } + + bool operator!=( PipelineBinaryDataInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineBinaryDataInfoKHR; + void * pNext = {}; + PipelineBinaryKHR pipelineBinary = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineBinaryDataInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineBinaryDataInfoKHR; + }; + + // wrapper struct for struct VkPipelineBinaryHandlesInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryHandlesInfoKHR.html + struct PipelineBinaryHandlesInfoKHR + { + using NativeType = VkPipelineBinaryHandlesInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineBinaryHandlesInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineBinaryHandlesInfoKHR( uint32_t pipelineBinaryCount_ = {}, + PipelineBinaryKHR * pPipelineBinaries_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineBinaryCount{ pipelineBinaryCount_ } + , pPipelineBinaries{ pPipelineBinaries_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineBinaryHandlesInfoKHR( PipelineBinaryHandlesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineBinaryHandlesInfoKHR( VkPipelineBinaryHandlesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineBinaryHandlesInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineBinaryHandlesInfoKHR( ArrayProxyNoTemporaries const & pipelineBinaries_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), pipelineBinaryCount( static_cast( pipelineBinaries_.size() ) ), pPipelineBinaries( pipelineBinaries_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineBinaryHandlesInfoKHR & operator=( PipelineBinaryHandlesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineBinaryHandlesInfoKHR & operator=( VkPipelineBinaryHandlesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryHandlesInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryHandlesInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryHandlesInfoKHR & setPipelineBinaryCount( uint32_t pipelineBinaryCount_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineBinaryCount = pipelineBinaryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryHandlesInfoKHR && setPipelineBinaryCount( uint32_t pipelineBinaryCount_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineBinaryCount = pipelineBinaryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryHandlesInfoKHR & setPPipelineBinaries( PipelineBinaryKHR * pPipelineBinaries_ ) & VULKAN_HPP_NOEXCEPT + { + pPipelineBinaries = pPipelineBinaries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryHandlesInfoKHR && setPPipelineBinaries( PipelineBinaryKHR * pPipelineBinaries_ ) && VULKAN_HPP_NOEXCEPT + { + pPipelineBinaries = pPipelineBinaries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineBinaryHandlesInfoKHR & setPipelineBinaries( ArrayProxyNoTemporaries const & pipelineBinaries_ ) VULKAN_HPP_NOEXCEPT + { + pipelineBinaryCount = static_cast( pipelineBinaries_.size() ); + pPipelineBinaries = pipelineBinaries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineBinaryHandlesInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryHandlesInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryHandlesInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineBinaryHandlesInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineBinaryCount, pPipelineBinaries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineBinaryHandlesInfoKHR const & ) const = default; +#else + bool operator==( PipelineBinaryHandlesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBinaryCount == rhs.pipelineBinaryCount ) && + ( pPipelineBinaries == rhs.pPipelineBinaries ); +# endif + } + + bool operator!=( PipelineBinaryHandlesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineBinaryHandlesInfoKHR; + void const * pNext = {}; + uint32_t pipelineBinaryCount = {}; + PipelineBinaryKHR * pPipelineBinaries = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineBinaryHandlesInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineBinaryHandlesInfoKHR; + }; + + // wrapper struct for struct VkPipelineBinaryInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineBinaryInfoKHR.html + struct PipelineBinaryInfoKHR + { + using NativeType = VkPipelineBinaryInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineBinaryInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PipelineBinaryInfoKHR( uint32_t binaryCount_ = {}, PipelineBinaryKHR const * pPipelineBinaries_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , binaryCount{ binaryCount_ } + , pPipelineBinaries{ pPipelineBinaries_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineBinaryInfoKHR( PipelineBinaryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineBinaryInfoKHR( VkPipelineBinaryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineBinaryInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineBinaryInfoKHR( ArrayProxyNoTemporaries const & pipelineBinaries_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), binaryCount( static_cast( pipelineBinaries_.size() ) ), pPipelineBinaries( pipelineBinaries_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineBinaryInfoKHR & operator=( PipelineBinaryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineBinaryInfoKHR & operator=( VkPipelineBinaryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryInfoKHR & setBinaryCount( uint32_t binaryCount_ ) & VULKAN_HPP_NOEXCEPT + { + binaryCount = binaryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryInfoKHR && setBinaryCount( uint32_t binaryCount_ ) && VULKAN_HPP_NOEXCEPT + { + binaryCount = binaryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryInfoKHR & setPPipelineBinaries( PipelineBinaryKHR const * pPipelineBinaries_ ) & VULKAN_HPP_NOEXCEPT + { + pPipelineBinaries = pPipelineBinaries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineBinaryInfoKHR && setPPipelineBinaries( PipelineBinaryKHR const * pPipelineBinaries_ ) && VULKAN_HPP_NOEXCEPT + { + pPipelineBinaries = pPipelineBinaries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineBinaryInfoKHR & setPipelineBinaries( ArrayProxyNoTemporaries const & pipelineBinaries_ ) VULKAN_HPP_NOEXCEPT + { + binaryCount = static_cast( pipelineBinaries_.size() ); + pPipelineBinaries = pipelineBinaries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineBinaryInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineBinaryInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineBinaryInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, binaryCount, pPipelineBinaries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineBinaryInfoKHR const & ) const = default; +#else + bool operator==( PipelineBinaryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( binaryCount == rhs.binaryCount ) && ( pPipelineBinaries == rhs.pPipelineBinaries ); +# endif + } + + bool operator!=( PipelineBinaryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineBinaryInfoKHR; + void const * pNext = {}; + uint32_t binaryCount = {}; + PipelineBinaryKHR const * pPipelineBinaries = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineBinaryInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineBinaryInfoKHR; + }; + + // wrapper struct for struct VkPipelineCacheCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCacheCreateInfo.html + struct PipelineCacheCreateInfo + { + using NativeType = VkPipelineCacheCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCacheCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = {}, + size_t initialDataSize_ = {}, + void const * pInitialData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , initialDataSize{ initialDataSize_ } + , pInitialData{ pInitialData_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCacheCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_, ArrayProxyNoTemporaries const & initialData_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), flags( flags_ ), initialDataSize( initialData_.size() * sizeof( T ) ), pInitialData( initialData_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineCacheCreateInfo & operator=( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCacheCreateInfo & operator=( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setFlags( PipelineCacheCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo && setFlags( PipelineCacheCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setInitialDataSize( size_t initialDataSize_ ) & VULKAN_HPP_NOEXCEPT + { + initialDataSize = initialDataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo && setInitialDataSize( size_t initialDataSize_ ) && VULKAN_HPP_NOEXCEPT + { + initialDataSize = initialDataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & setPInitialData( void const * pInitialData_ ) & VULKAN_HPP_NOEXCEPT + { + pInitialData = pInitialData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo && setPInitialData( void const * pInitialData_ ) && VULKAN_HPP_NOEXCEPT + { + pInitialData = pInitialData_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + PipelineCacheCreateInfo & setInitialData( ArrayProxyNoTemporaries const & initialData_ ) VULKAN_HPP_NOEXCEPT + { + initialDataSize = initialData_.size() * sizeof( T ); + pInitialData = initialData_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineCacheCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCacheCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCacheCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCacheCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, initialDataSize, pInitialData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCacheCreateInfo const & ) const = default; +#else + bool operator==( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( initialDataSize == rhs.initialDataSize ) && + ( pInitialData == rhs.pInitialData ); +# endif + } + + bool operator!=( PipelineCacheCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineCacheCreateInfo; + void const * pNext = {}; + PipelineCacheCreateFlags flags = {}; + size_t initialDataSize = {}; + void const * pInitialData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCacheCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineCacheCreateInfo; + }; + + // wrapper struct for struct VkPipelineCacheHeaderVersionDataGraphQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionDataGraphQCOM.html + struct PipelineCacheHeaderVersionDataGraphQCOM + { + using NativeType = VkPipelineCacheHeaderVersionDataGraphQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM( + uint32_t headerSize_ = {}, + PipelineCacheHeaderVersion headerVersion_ = PipelineCacheHeaderVersion::eOne, + DataGraphModelCacheTypeQCOM cacheType_ = DataGraphModelCacheTypeQCOM::eGenericBinary, + uint32_t cacheVersion_ = {}, + std::array const & toolchainVersion_ = {} ) VULKAN_HPP_NOEXCEPT + : headerSize{ headerSize_ } + , headerVersion{ headerVersion_ } + , cacheType{ cacheType_ } + , cacheVersion{ cacheVersion_ } + , toolchainVersion{ toolchainVersion_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM( PipelineCacheHeaderVersionDataGraphQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCacheHeaderVersionDataGraphQCOM( VkPipelineCacheHeaderVersionDataGraphQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCacheHeaderVersionDataGraphQCOM( *reinterpret_cast( &rhs ) ) + { + } + + PipelineCacheHeaderVersionDataGraphQCOM & operator=( PipelineCacheHeaderVersionDataGraphQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCacheHeaderVersionDataGraphQCOM & operator=( VkPipelineCacheHeaderVersionDataGraphQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM & setHeaderSize( uint32_t headerSize_ ) & VULKAN_HPP_NOEXCEPT + { + headerSize = headerSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM && setHeaderSize( uint32_t headerSize_ ) && VULKAN_HPP_NOEXCEPT + { + headerSize = headerSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM & setHeaderVersion( PipelineCacheHeaderVersion headerVersion_ ) & VULKAN_HPP_NOEXCEPT + { + headerVersion = headerVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM && setHeaderVersion( PipelineCacheHeaderVersion headerVersion_ ) && VULKAN_HPP_NOEXCEPT + { + headerVersion = headerVersion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM & setCacheType( DataGraphModelCacheTypeQCOM cacheType_ ) & VULKAN_HPP_NOEXCEPT + { + cacheType = cacheType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM && setCacheType( DataGraphModelCacheTypeQCOM cacheType_ ) && VULKAN_HPP_NOEXCEPT + { + cacheType = cacheType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM & setCacheVersion( uint32_t cacheVersion_ ) & VULKAN_HPP_NOEXCEPT + { + cacheVersion = cacheVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM && setCacheVersion( uint32_t cacheVersion_ ) && VULKAN_HPP_NOEXCEPT + { + cacheVersion = cacheVersion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM & + setToolchainVersion( std::array toolchainVersion_ ) & + VULKAN_HPP_NOEXCEPT + { + toolchainVersion = toolchainVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionDataGraphQCOM && + setToolchainVersion( std::array toolchainVersion_ ) && + VULKAN_HPP_NOEXCEPT + { + toolchainVersion = toolchainVersion_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineCacheHeaderVersionDataGraphQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCacheHeaderVersionDataGraphQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCacheHeaderVersionDataGraphQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCacheHeaderVersionDataGraphQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( headerSize, headerVersion, cacheType, cacheVersion, toolchainVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCacheHeaderVersionDataGraphQCOM const & ) const = default; +#else + bool operator==( PipelineCacheHeaderVersionDataGraphQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( headerSize == rhs.headerSize ) && ( headerVersion == rhs.headerVersion ) && ( cacheType == rhs.cacheType ) && + ( cacheVersion == rhs.cacheVersion ) && ( toolchainVersion == rhs.toolchainVersion ); +# endif + } + + bool operator!=( PipelineCacheHeaderVersionDataGraphQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t headerSize = {}; + PipelineCacheHeaderVersion headerVersion = PipelineCacheHeaderVersion::eOne; + DataGraphModelCacheTypeQCOM cacheType = DataGraphModelCacheTypeQCOM::eGenericBinary; + uint32_t cacheVersion = {}; + ArrayWrapper1D toolchainVersion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCacheHeaderVersionDataGraphQCOM; + }; +#endif + + // wrapper struct for struct VkPipelineCacheHeaderVersionOne, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCacheHeaderVersionOne.html + struct PipelineCacheHeaderVersionOne + { + using NativeType = VkPipelineCacheHeaderVersionOne; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne( uint32_t headerSize_ = {}, + PipelineCacheHeaderVersion headerVersion_ = PipelineCacheHeaderVersion::eOne, + uint32_t vendorID_ = {}, + uint32_t deviceID_ = {}, + std::array const & pipelineCacheUUID_ = {} ) VULKAN_HPP_NOEXCEPT + : headerSize{ headerSize_ } + , headerVersion{ headerVersion_ } + , vendorID{ vendorID_ } + , deviceID{ deviceID_ } + , pipelineCacheUUID{ pipelineCacheUUID_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCacheHeaderVersionOne( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCacheHeaderVersionOne( *reinterpret_cast( &rhs ) ) + { + } + + PipelineCacheHeaderVersionOne & operator=( PipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCacheHeaderVersionOne & operator=( VkPipelineCacheHeaderVersionOne const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setHeaderSize( uint32_t headerSize_ ) & VULKAN_HPP_NOEXCEPT + { + headerSize = headerSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne && setHeaderSize( uint32_t headerSize_ ) && VULKAN_HPP_NOEXCEPT + { + headerSize = headerSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setHeaderVersion( PipelineCacheHeaderVersion headerVersion_ ) & VULKAN_HPP_NOEXCEPT + { + headerVersion = headerVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne && setHeaderVersion( PipelineCacheHeaderVersion headerVersion_ ) && VULKAN_HPP_NOEXCEPT + { + headerVersion = headerVersion_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setVendorID( uint32_t vendorID_ ) & VULKAN_HPP_NOEXCEPT + { + vendorID = vendorID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne && setVendorID( uint32_t vendorID_ ) && VULKAN_HPP_NOEXCEPT + { + vendorID = vendorID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setDeviceID( uint32_t deviceID_ ) & VULKAN_HPP_NOEXCEPT + { + deviceID = deviceID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne && setDeviceID( uint32_t deviceID_ ) && VULKAN_HPP_NOEXCEPT + { + deviceID = deviceID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne & setPipelineCacheUUID( std::array pipelineCacheUUID_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineCacheUUID = pipelineCacheUUID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCacheHeaderVersionOne && setPipelineCacheUUID( std::array pipelineCacheUUID_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineCacheUUID = pipelineCacheUUID_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineCacheHeaderVersionOne const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCacheHeaderVersionOne &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCacheHeaderVersionOne const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCacheHeaderVersionOne *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( headerSize, headerVersion, vendorID, deviceID, pipelineCacheUUID ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCacheHeaderVersionOne const & ) const = default; +#else + bool operator==( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( headerSize == rhs.headerSize ) && ( headerVersion == rhs.headerVersion ) && ( vendorID == rhs.vendorID ) && ( deviceID == rhs.deviceID ) && + ( pipelineCacheUUID == rhs.pipelineCacheUUID ); +# endif + } + + bool operator!=( PipelineCacheHeaderVersionOne const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t headerSize = {}; + PipelineCacheHeaderVersion headerVersion = PipelineCacheHeaderVersion::eOne; + uint32_t vendorID = {}; + uint32_t deviceID = {}; + ArrayWrapper1D pipelineCacheUUID = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCacheHeaderVersionOne; + }; +#endif + + // wrapper struct for struct VkPipelineColorBlendAdvancedStateCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineColorBlendAdvancedStateCreateInfoEXT.html + struct PipelineColorBlendAdvancedStateCreateInfoEXT + { + using NativeType = VkPipelineColorBlendAdvancedStateCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = {}, + Bool32 dstPremultiplied_ = {}, + BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcPremultiplied{ srcPremultiplied_ } + , dstPremultiplied{ dstPremultiplied_ } + , blendOverlap{ blendOverlap_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineColorBlendAdvancedStateCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & setSrcPremultiplied( Bool32 srcPremultiplied_ ) & VULKAN_HPP_NOEXCEPT + { + srcPremultiplied = srcPremultiplied_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT && setSrcPremultiplied( Bool32 srcPremultiplied_ ) && VULKAN_HPP_NOEXCEPT + { + srcPremultiplied = srcPremultiplied_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & setDstPremultiplied( Bool32 dstPremultiplied_ ) & VULKAN_HPP_NOEXCEPT + { + dstPremultiplied = dstPremultiplied_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT && setDstPremultiplied( Bool32 dstPremultiplied_ ) && VULKAN_HPP_NOEXCEPT + { + dstPremultiplied = dstPremultiplied_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & setBlendOverlap( BlendOverlapEXT blendOverlap_ ) & VULKAN_HPP_NOEXCEPT + { + blendOverlap = blendOverlap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT && setBlendOverlap( BlendOverlapEXT blendOverlap_ ) && VULKAN_HPP_NOEXCEPT + { + blendOverlap = blendOverlap_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineColorBlendAdvancedStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineColorBlendAdvancedStateCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineColorBlendAdvancedStateCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcPremultiplied, dstPremultiplied, blendOverlap ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineColorBlendAdvancedStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcPremultiplied == rhs.srcPremultiplied ) && ( dstPremultiplied == rhs.dstPremultiplied ) && + ( blendOverlap == rhs.blendOverlap ); +# endif + } + + bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT; + void const * pNext = {}; + Bool32 srcPremultiplied = {}; + Bool32 dstPremultiplied = {}; + BlendOverlapEXT blendOverlap = BlendOverlapEXT::eUncorrelated; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineColorBlendAdvancedStateCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineColorBlendAdvancedStateCreateInfoEXT; + }; + + // wrapper struct for struct VkPipelineColorWriteCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineColorWriteCreateInfoEXT.html + struct PipelineColorWriteCreateInfoEXT + { + using NativeType = VkPipelineColorWriteCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineColorWriteCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineColorWriteCreateInfoEXT( uint32_t attachmentCount_ = {}, + Bool32 const * pColorWriteEnables_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , attachmentCount{ attachmentCount_ } + , pColorWriteEnables{ pColorWriteEnables_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineColorWriteCreateInfoEXT( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineColorWriteCreateInfoEXT( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineColorWriteCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineColorWriteCreateInfoEXT( ArrayProxyNoTemporaries const & colorWriteEnables_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), attachmentCount( static_cast( colorWriteEnables_.size() ) ), pColorWriteEnables( colorWriteEnables_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineColorWriteCreateInfoEXT & operator=( PipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineColorWriteCreateInfoEXT & operator=( VkPipelineColorWriteCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setAttachmentCount( uint32_t attachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT && setAttachmentCount( uint32_t attachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT & setPColorWriteEnables( Bool32 const * pColorWriteEnables_ ) & VULKAN_HPP_NOEXCEPT + { + pColorWriteEnables = pColorWriteEnables_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineColorWriteCreateInfoEXT && setPColorWriteEnables( Bool32 const * pColorWriteEnables_ ) && VULKAN_HPP_NOEXCEPT + { + pColorWriteEnables = pColorWriteEnables_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineColorWriteCreateInfoEXT & setColorWriteEnables( ArrayProxyNoTemporaries const & colorWriteEnables_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( colorWriteEnables_.size() ); + pColorWriteEnables = colorWriteEnables_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineColorWriteCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineColorWriteCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineColorWriteCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineColorWriteCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, attachmentCount, pColorWriteEnables ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineColorWriteCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentCount == rhs.attachmentCount ) && ( pColorWriteEnables == rhs.pColorWriteEnables ); +# endif + } + + bool operator!=( PipelineColorWriteCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineColorWriteCreateInfoEXT; + void const * pNext = {}; + uint32_t attachmentCount = {}; + Bool32 const * pColorWriteEnables = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineColorWriteCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineColorWriteCreateInfoEXT; + }; + + // wrapper struct for struct VkPipelineCompilerControlCreateInfoAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCompilerControlCreateInfoAMD.html + struct PipelineCompilerControlCreateInfoAMD + { + using NativeType = VkPipelineCompilerControlCreateInfoAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCompilerControlCreateInfoAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( PipelineCompilerControlFlagsAMD compilerControlFlags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , compilerControlFlags{ compilerControlFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCompilerControlCreateInfoAMD( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCompilerControlCreateInfoAMD( *reinterpret_cast( &rhs ) ) + { + } + + PipelineCompilerControlCreateInfoAMD & operator=( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCompilerControlCreateInfoAMD & operator=( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD & setCompilerControlFlags( PipelineCompilerControlFlagsAMD compilerControlFlags_ ) & + VULKAN_HPP_NOEXCEPT + { + compilerControlFlags = compilerControlFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD && setCompilerControlFlags( PipelineCompilerControlFlagsAMD compilerControlFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + compilerControlFlags = compilerControlFlags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineCompilerControlCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCompilerControlCreateInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCompilerControlCreateInfoAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCompilerControlCreateInfoAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, compilerControlFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCompilerControlCreateInfoAMD const & ) const = default; +#else + bool operator==( PipelineCompilerControlCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( compilerControlFlags == rhs.compilerControlFlags ); +# endif + } + + bool operator!=( PipelineCompilerControlCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineCompilerControlCreateInfoAMD; + void const * pNext = {}; + PipelineCompilerControlFlagsAMD compilerControlFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCompilerControlCreateInfoAMD; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineCompilerControlCreateInfoAMD; + }; + + // wrapper struct for struct VkPipelineCoverageModulationStateCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCoverageModulationStateCreateInfoNV.html + struct PipelineCoverageModulationStateCreateInfoNV + { + using NativeType = VkPipelineCoverageModulationStateCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCoverageModulationStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = {}, + CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone, + Bool32 coverageModulationTableEnable_ = {}, + uint32_t coverageModulationTableCount_ = {}, + float const * pCoverageModulationTable_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , coverageModulationMode{ coverageModulationMode_ } + , coverageModulationTableEnable{ coverageModulationTableEnable_ } + , coverageModulationTableCount{ coverageModulationTableCount_ } + , pCoverageModulationTable{ pCoverageModulationTable_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCoverageModulationStateCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_, + CoverageModulationModeNV coverageModulationMode_, + Bool32 coverageModulationTableEnable_, + ArrayProxyNoTemporaries const & coverageModulationTable_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , coverageModulationMode( coverageModulationMode_ ) + , coverageModulationTableEnable( coverageModulationTableEnable_ ) + , coverageModulationTableCount( static_cast( coverageModulationTable_.size() ) ) + , pCoverageModulationTable( coverageModulationTable_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineCoverageModulationStateCreateInfoNV & operator=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCoverageModulationStateCreateInfoNV & operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV && setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ ) && + VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ ) & + VULKAN_HPP_NOEXCEPT + { + coverageModulationMode = coverageModulationMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV && setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ ) && + VULKAN_HPP_NOEXCEPT + { + coverageModulationMode = coverageModulationMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + coverageModulationTableEnable = coverageModulationTableEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV && setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + coverageModulationTableEnable = coverageModulationTableEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ ) & + VULKAN_HPP_NOEXCEPT + { + coverageModulationTableCount = coverageModulationTableCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV && setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ ) && + VULKAN_HPP_NOEXCEPT + { + coverageModulationTableCount = coverageModulationTableCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & setPCoverageModulationTable( float const * pCoverageModulationTable_ ) & + VULKAN_HPP_NOEXCEPT + { + pCoverageModulationTable = pCoverageModulationTable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV && setPCoverageModulationTable( float const * pCoverageModulationTable_ ) && + VULKAN_HPP_NOEXCEPT + { + pCoverageModulationTable = pCoverageModulationTable_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineCoverageModulationStateCreateInfoNV & + setCoverageModulationTable( ArrayProxyNoTemporaries const & coverageModulationTable_ ) VULKAN_HPP_NOEXCEPT + { + coverageModulationTableCount = static_cast( coverageModulationTable_.size() ); + pCoverageModulationTable = coverageModulationTable_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineCoverageModulationStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCoverageModulationStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCoverageModulationStateCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCoverageModulationStateCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, coverageModulationMode, coverageModulationTableEnable, coverageModulationTableCount, pCoverageModulationTable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCoverageModulationStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineCoverageModulationStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( coverageModulationMode == rhs.coverageModulationMode ) && + ( coverageModulationTableEnable == rhs.coverageModulationTableEnable ) && ( coverageModulationTableCount == rhs.coverageModulationTableCount ) && + ( pCoverageModulationTable == rhs.pCoverageModulationTable ); +# endif + } + + bool operator!=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineCoverageModulationStateCreateInfoNV; + void const * pNext = {}; + PipelineCoverageModulationStateCreateFlagsNV flags = {}; + CoverageModulationModeNV coverageModulationMode = CoverageModulationModeNV::eNone; + Bool32 coverageModulationTableEnable = {}; + uint32_t coverageModulationTableCount = {}; + float const * pCoverageModulationTable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCoverageModulationStateCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineCoverageModulationStateCreateInfoNV; + }; + + // wrapper struct for struct VkPipelineCoverageReductionStateCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCoverageReductionStateCreateInfoNV.html + struct PipelineCoverageReductionStateCreateInfoNV + { + using NativeType = VkPipelineCoverageReductionStateCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCoverageReductionStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV( PipelineCoverageReductionStateCreateFlagsNV flags_ = {}, + CoverageReductionModeNV coverageReductionMode_ = CoverageReductionModeNV::eMerge, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , coverageReductionMode{ coverageReductionMode_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCoverageReductionStateCreateInfoNV( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCoverageReductionStateCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + PipelineCoverageReductionStateCreateInfoNV & operator=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCoverageReductionStateCreateInfoNV & operator=( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & setFlags( PipelineCoverageReductionStateCreateFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV && setFlags( PipelineCoverageReductionStateCreateFlagsNV flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & setCoverageReductionMode( CoverageReductionModeNV coverageReductionMode_ ) & + VULKAN_HPP_NOEXCEPT + { + coverageReductionMode = coverageReductionMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV && setCoverageReductionMode( CoverageReductionModeNV coverageReductionMode_ ) && + VULKAN_HPP_NOEXCEPT + { + coverageReductionMode = coverageReductionMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineCoverageReductionStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCoverageReductionStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCoverageReductionStateCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCoverageReductionStateCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, coverageReductionMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCoverageReductionStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineCoverageReductionStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( coverageReductionMode == rhs.coverageReductionMode ); +# endif + } + + bool operator!=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineCoverageReductionStateCreateInfoNV; + void const * pNext = {}; + PipelineCoverageReductionStateCreateFlagsNV flags = {}; + CoverageReductionModeNV coverageReductionMode = CoverageReductionModeNV::eMerge; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCoverageReductionStateCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineCoverageReductionStateCreateInfoNV; + }; + + // wrapper struct for struct VkPipelineCoverageToColorStateCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCoverageToColorStateCreateInfoNV.html + struct PipelineCoverageToColorStateCreateInfoNV + { + using NativeType = VkPipelineCoverageToColorStateCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCoverageToColorStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = {}, + Bool32 coverageToColorEnable_ = {}, + uint32_t coverageToColorLocation_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , coverageToColorEnable{ coverageToColorEnable_ } + , coverageToColorLocation{ coverageToColorLocation_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCoverageToColorStateCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + PipelineCoverageToColorStateCreateInfoNV & operator=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCoverageToColorStateCreateInfoNV & operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV && setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & setCoverageToColorEnable( Bool32 coverageToColorEnable_ ) & VULKAN_HPP_NOEXCEPT + { + coverageToColorEnable = coverageToColorEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV && setCoverageToColorEnable( Bool32 coverageToColorEnable_ ) && VULKAN_HPP_NOEXCEPT + { + coverageToColorEnable = coverageToColorEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & setCoverageToColorLocation( uint32_t coverageToColorLocation_ ) & VULKAN_HPP_NOEXCEPT + { + coverageToColorLocation = coverageToColorLocation_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV && setCoverageToColorLocation( uint32_t coverageToColorLocation_ ) && VULKAN_HPP_NOEXCEPT + { + coverageToColorLocation = coverageToColorLocation_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineCoverageToColorStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCoverageToColorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCoverageToColorStateCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCoverageToColorStateCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, coverageToColorEnable, coverageToColorLocation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCoverageToColorStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineCoverageToColorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( coverageToColorEnable == rhs.coverageToColorEnable ) && + ( coverageToColorLocation == rhs.coverageToColorLocation ); +# endif + } + + bool operator!=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineCoverageToColorStateCreateInfoNV; + void const * pNext = {}; + PipelineCoverageToColorStateCreateFlagsNV flags = {}; + Bool32 coverageToColorEnable = {}; + uint32_t coverageToColorLocation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCoverageToColorStateCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineCoverageToColorStateCreateInfoNV; + }; + + // wrapper struct for struct VkPipelineCreateFlags2CreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreateFlags2CreateInfo.html + struct PipelineCreateFlags2CreateInfo + { + using NativeType = VkPipelineCreateFlags2CreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCreateFlags2CreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCreateFlags2CreateInfo( PipelineCreateFlags2 flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineCreateFlags2CreateInfo( PipelineCreateFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCreateFlags2CreateInfo( VkPipelineCreateFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCreateFlags2CreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineCreateFlags2CreateInfo & operator=( PipelineCreateFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCreateFlags2CreateInfo & operator=( VkPipelineCreateFlags2CreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCreateFlags2CreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreateFlags2CreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreateFlags2CreateInfo & setFlags( PipelineCreateFlags2 flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreateFlags2CreateInfo && setFlags( PipelineCreateFlags2 flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineCreateFlags2CreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCreateFlags2CreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCreateFlags2CreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCreateFlags2CreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCreateFlags2CreateInfo const & ) const = default; +#else + bool operator==( PipelineCreateFlags2CreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( PipelineCreateFlags2CreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineCreateFlags2CreateInfo; + void const * pNext = {}; + PipelineCreateFlags2 flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCreateFlags2CreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineCreateFlags2CreateInfo; + }; + + using PipelineCreateFlags2CreateInfoKHR = PipelineCreateFlags2CreateInfo; + + // wrapper struct for struct VkPipelineCreationFeedback, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreationFeedback.html + struct PipelineCreationFeedback + { + using NativeType = VkPipelineCreationFeedback; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCreationFeedback( PipelineCreationFeedbackFlags flags_ = {}, uint64_t duration_ = {} ) VULKAN_HPP_NOEXCEPT + : flags{ flags_ } + , duration{ duration_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineCreationFeedback( PipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCreationFeedback( VkPipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCreationFeedback( *reinterpret_cast( &rhs ) ) + { + } + + PipelineCreationFeedback & operator=( PipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCreationFeedback & operator=( VkPipelineCreationFeedback const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPipelineCreationFeedback const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCreationFeedback &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCreationFeedback const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCreationFeedback *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( flags, duration ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCreationFeedback const & ) const = default; +#else + bool operator==( PipelineCreationFeedback const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( flags == rhs.flags ) && ( duration == rhs.duration ); +# endif + } + + bool operator!=( PipelineCreationFeedback const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + PipelineCreationFeedbackFlags flags = {}; + uint64_t duration = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCreationFeedback; + }; +#endif + using PipelineCreationFeedbackEXT = PipelineCreationFeedback; + + // wrapper struct for struct VkPipelineCreationFeedbackCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineCreationFeedbackCreateInfo.html + struct PipelineCreationFeedbackCreateInfo + { + using NativeType = VkPipelineCreationFeedbackCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCreationFeedbackCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfo( PipelineCreationFeedback * pPipelineCreationFeedback_ = {}, + uint32_t pipelineStageCreationFeedbackCount_ = {}, + PipelineCreationFeedback * pPipelineStageCreationFeedbacks_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pPipelineCreationFeedback{ pPipelineCreationFeedback_ } + , pipelineStageCreationFeedbackCount{ pipelineStageCreationFeedbackCount_ } + , pPipelineStageCreationFeedbacks{ pPipelineStageCreationFeedbacks_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfo( PipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineCreationFeedbackCreateInfo( VkPipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineCreationFeedbackCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineCreationFeedbackCreateInfo( PipelineCreationFeedback * pPipelineCreationFeedback_, + ArrayProxyNoTemporaries const & pipelineStageCreationFeedbacks_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , pPipelineCreationFeedback( pPipelineCreationFeedback_ ) + , pipelineStageCreationFeedbackCount( static_cast( pipelineStageCreationFeedbacks_.size() ) ) + , pPipelineStageCreationFeedbacks( pipelineStageCreationFeedbacks_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineCreationFeedbackCreateInfo & operator=( PipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineCreationFeedbackCreateInfo & operator=( VkPipelineCreationFeedbackCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPPipelineCreationFeedback( PipelineCreationFeedback * pPipelineCreationFeedback_ ) & + VULKAN_HPP_NOEXCEPT + { + pPipelineCreationFeedback = pPipelineCreationFeedback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo && setPPipelineCreationFeedback( PipelineCreationFeedback * pPipelineCreationFeedback_ ) && + VULKAN_HPP_NOEXCEPT + { + pPipelineCreationFeedback = pPipelineCreationFeedback_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & setPipelineStageCreationFeedbackCount( uint32_t pipelineStageCreationFeedbackCount_ ) & + VULKAN_HPP_NOEXCEPT + { + pipelineStageCreationFeedbackCount = pipelineStageCreationFeedbackCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo && setPipelineStageCreationFeedbackCount( uint32_t pipelineStageCreationFeedbackCount_ ) && + VULKAN_HPP_NOEXCEPT + { + pipelineStageCreationFeedbackCount = pipelineStageCreationFeedbackCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo & + setPPipelineStageCreationFeedbacks( PipelineCreationFeedback * pPipelineStageCreationFeedbacks_ ) & + VULKAN_HPP_NOEXCEPT + { + pPipelineStageCreationFeedbacks = pPipelineStageCreationFeedbacks_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfo && + setPPipelineStageCreationFeedbacks( PipelineCreationFeedback * pPipelineStageCreationFeedbacks_ ) && + VULKAN_HPP_NOEXCEPT + { + pPipelineStageCreationFeedbacks = pPipelineStageCreationFeedbacks_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineCreationFeedbackCreateInfo & + setPipelineStageCreationFeedbacks( ArrayProxyNoTemporaries const & pipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT + { + pipelineStageCreationFeedbackCount = static_cast( pipelineStageCreationFeedbacks_.size() ); + pPipelineStageCreationFeedbacks = pipelineStageCreationFeedbacks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineCreationFeedbackCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCreationFeedbackCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineCreationFeedbackCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineCreationFeedbackCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pPipelineCreationFeedback, pipelineStageCreationFeedbackCount, pPipelineStageCreationFeedbacks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineCreationFeedbackCreateInfo const & ) const = default; +#else + bool operator==( PipelineCreationFeedbackCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pPipelineCreationFeedback == rhs.pPipelineCreationFeedback ) && + ( pipelineStageCreationFeedbackCount == rhs.pipelineStageCreationFeedbackCount ) && + ( pPipelineStageCreationFeedbacks == rhs.pPipelineStageCreationFeedbacks ); +# endif + } + + bool operator!=( PipelineCreationFeedbackCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineCreationFeedbackCreateInfo; + void const * pNext = {}; + PipelineCreationFeedback * pPipelineCreationFeedback = {}; + uint32_t pipelineStageCreationFeedbackCount = {}; + PipelineCreationFeedback * pPipelineStageCreationFeedbacks = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineCreationFeedbackCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineCreationFeedbackCreateInfo; + }; + + using PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo; + + // wrapper struct for struct VkPipelineDiscardRectangleStateCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineDiscardRectangleStateCreateInfoEXT.html + struct PipelineDiscardRectangleStateCreateInfoEXT + { + using NativeType = VkPipelineDiscardRectangleStateCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = {}, + DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, + uint32_t discardRectangleCount_ = {}, + Rect2D const * pDiscardRectangles_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , discardRectangleMode{ discardRectangleMode_ } + , discardRectangleCount{ discardRectangleCount_ } + , pDiscardRectangles{ pDiscardRectangles_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineDiscardRectangleStateCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_, + DiscardRectangleModeEXT discardRectangleMode_, + ArrayProxyNoTemporaries const & discardRectangles_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , discardRectangleMode( discardRectangleMode_ ) + , discardRectangleCount( static_cast( discardRectangles_.size() ) ) + , pDiscardRectangles( discardRectangles_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineDiscardRectangleStateCreateInfoEXT & operator=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineDiscardRectangleStateCreateInfoEXT & operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT && setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ ) & + VULKAN_HPP_NOEXCEPT + { + discardRectangleMode = discardRectangleMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT && setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ ) && + VULKAN_HPP_NOEXCEPT + { + discardRectangleMode = discardRectangleMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangleCount( uint32_t discardRectangleCount_ ) & VULKAN_HPP_NOEXCEPT + { + discardRectangleCount = discardRectangleCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT && setDiscardRectangleCount( uint32_t discardRectangleCount_ ) && VULKAN_HPP_NOEXCEPT + { + discardRectangleCount = discardRectangleCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & setPDiscardRectangles( Rect2D const * pDiscardRectangles_ ) & VULKAN_HPP_NOEXCEPT + { + pDiscardRectangles = pDiscardRectangles_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT && setPDiscardRectangles( Rect2D const * pDiscardRectangles_ ) && VULKAN_HPP_NOEXCEPT + { + pDiscardRectangles = pDiscardRectangles_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangles( ArrayProxyNoTemporaries const & discardRectangles_ ) VULKAN_HPP_NOEXCEPT + { + discardRectangleCount = static_cast( discardRectangles_.size() ); + pDiscardRectangles = discardRectangles_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineDiscardRectangleStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineDiscardRectangleStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineDiscardRectangleStateCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineDiscardRectangleStateCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, discardRectangleMode, discardRectangleCount, pDiscardRectangles ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineDiscardRectangleStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( discardRectangleMode == rhs.discardRectangleMode ) && + ( discardRectangleCount == rhs.discardRectangleCount ) && ( pDiscardRectangles == rhs.pDiscardRectangles ); +# endif + } + + bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT; + void const * pNext = {}; + PipelineDiscardRectangleStateCreateFlagsEXT flags = {}; + DiscardRectangleModeEXT discardRectangleMode = DiscardRectangleModeEXT::eInclusive; + uint32_t discardRectangleCount = {}; + Rect2D const * pDiscardRectangles = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineDiscardRectangleStateCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineDiscardRectangleStateCreateInfoEXT; + }; + + // wrapper struct for struct VkPipelineExecutableInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineExecutableInfoKHR.html + struct PipelineExecutableInfoKHR + { + using NativeType = VkPipelineExecutableInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutableInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineExecutableInfoKHR( Pipeline pipeline_ = {}, uint32_t executableIndex_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipeline{ pipeline_ } + , executableIndex{ executableIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineExecutableInfoKHR( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutableInfoKHR( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineExecutableInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + PipelineExecutableInfoKHR & operator=( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineExecutableInfoKHR & operator=( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setPipeline( Pipeline pipeline_ ) & VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR && setPipeline( Pipeline pipeline_ ) && VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & setExecutableIndex( uint32_t executableIndex_ ) & VULKAN_HPP_NOEXCEPT + { + executableIndex = executableIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR && setExecutableIndex( uint32_t executableIndex_ ) && VULKAN_HPP_NOEXCEPT + { + executableIndex = executableIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineExecutableInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineExecutableInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineExecutableInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineExecutableInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipeline, executableIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineExecutableInfoKHR const & ) const = default; +#else + bool operator==( PipelineExecutableInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline ) && ( executableIndex == rhs.executableIndex ); +# endif + } + + bool operator!=( PipelineExecutableInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineExecutableInfoKHR; + void const * pNext = {}; + Pipeline pipeline = {}; + uint32_t executableIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineExecutableInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineExecutableInfoKHR; + }; + + // wrapper struct for struct VkPipelineExecutableInternalRepresentationKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineExecutableInternalRepresentationKHR.html + struct PipelineExecutableInternalRepresentationKHR + { + using NativeType = VkPipelineExecutableInternalRepresentationKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutableInternalRepresentationKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInternalRepresentationKHR( std::array const & name_ = {}, + std::array const & description_ = {}, + Bool32 isText_ = {}, + size_t dataSize_ = {}, + void * pData_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , name{ name_ } + , description{ description_ } + , isText{ isText_ } + , dataSize{ dataSize_ } + , pData{ pData_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + PipelineExecutableInternalRepresentationKHR( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutableInternalRepresentationKHR( VkPipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineExecutableInternalRepresentationKHR( *reinterpret_cast( &rhs ) ) + { + } + + PipelineExecutableInternalRepresentationKHR & operator=( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineExecutableInternalRepresentationKHR & operator=( VkPipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPipelineExecutableInternalRepresentationKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineExecutableInternalRepresentationKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineExecutableInternalRepresentationKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineExecutableInternalRepresentationKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + Bool32 const &, + size_t const &, + void * const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, name, description, isText, dataSize, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = isText <=> rhs.isText; cmp != 0 ) + return cmp; + if ( auto cmp = dataSize <=> rhs.dataSize; cmp != 0 ) + return cmp; + if ( auto cmp = pData <=> rhs.pData; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( strcmp( name, rhs.name ) == 0 ) && ( strcmp( description, rhs.description ) == 0 ) && + ( isText == rhs.isText ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData ); + } + + bool operator!=( PipelineExecutableInternalRepresentationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePipelineExecutableInternalRepresentationKHR; + void * pNext = {}; + ArrayWrapper1D name = {}; + ArrayWrapper1D description = {}; + Bool32 isText = {}; + size_t dataSize = {}; + void * pData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineExecutableInternalRepresentationKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineExecutableInternalRepresentationKHR; + }; + + // wrapper struct for struct VkPipelineExecutablePropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineExecutablePropertiesKHR.html + struct PipelineExecutablePropertiesKHR + { + using NativeType = VkPipelineExecutablePropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutablePropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineExecutablePropertiesKHR( ShaderStageFlags stages_ = {}, + std::array const & name_ = {}, + std::array const & description_ = {}, + uint32_t subgroupSize_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stages{ stages_ } + , name{ name_ } + , description{ description_ } + , subgroupSize{ subgroupSize_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutablePropertiesKHR( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutablePropertiesKHR( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineExecutablePropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + PipelineExecutablePropertiesKHR & operator=( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineExecutablePropertiesKHR & operator=( VkPipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPipelineExecutablePropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineExecutablePropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineExecutablePropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineExecutablePropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + uint32_t const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stages, name, description, subgroupSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = stages <=> rhs.stages; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = subgroupSize <=> rhs.subgroupSize; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stages == rhs.stages ) && ( strcmp( name, rhs.name ) == 0 ) && + ( strcmp( description, rhs.description ) == 0 ) && ( subgroupSize == rhs.subgroupSize ); + } + + bool operator!=( PipelineExecutablePropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePipelineExecutablePropertiesKHR; + void * pNext = {}; + ShaderStageFlags stages = {}; + ArrayWrapper1D name = {}; + ArrayWrapper1D description = {}; + uint32_t subgroupSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineExecutablePropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineExecutablePropertiesKHR; + }; + + union PipelineExecutableStatisticValueKHR + { + using NativeType = VkPipelineExecutableStatisticValueKHR; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( Bool32 b32_ = {} ) : b32( b32_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( int64_t i64_ ) : i64( i64_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( uint64_t u64_ ) : u64( u64_ ) {} + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR( double f64_ ) : f64( f64_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setB32( Bool32 b32_ ) & VULKAN_HPP_NOEXCEPT + { + b32 = b32_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR && setB32( Bool32 b32_ ) && VULKAN_HPP_NOEXCEPT + { + b32 = b32_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setI64( int64_t i64_ ) & VULKAN_HPP_NOEXCEPT + { + i64 = i64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR && setI64( int64_t i64_ ) && VULKAN_HPP_NOEXCEPT + { + i64 = i64_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setU64( uint64_t u64_ ) & VULKAN_HPP_NOEXCEPT + { + u64 = u64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR && setU64( uint64_t u64_ ) && VULKAN_HPP_NOEXCEPT + { + u64 = u64_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR & setF64( double f64_ ) & VULKAN_HPP_NOEXCEPT + { + f64 = f64_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticValueKHR && setF64( double f64_ ) && VULKAN_HPP_NOEXCEPT + { + f64 = f64_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineExecutableStatisticValueKHR const &() const + { + return *reinterpret_cast( this ); + } + + operator VkPipelineExecutableStatisticValueKHR &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + Bool32 b32; + int64_t i64; + uint64_t u64; + double f64; +#else + VkBool32 b32; + int64_t i64; + uint64_t u64; + double f64; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineExecutableStatisticValueKHR; + }; +#endif + + // wrapper struct for struct VkPipelineExecutableStatisticKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineExecutableStatisticKHR.html + struct PipelineExecutableStatisticKHR + { + using NativeType = VkPipelineExecutableStatisticKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutableStatisticKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticKHR( std::array const & name_ = {}, + std::array const & description_ = {}, + PipelineExecutableStatisticFormatKHR format_ = PipelineExecutableStatisticFormatKHR::eBool32, + PipelineExecutableStatisticValueKHR value_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , name{ name_ } + , description{ description_ } + , format{ format_ } + , value{ value_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PipelineExecutableStatisticKHR( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineExecutableStatisticKHR( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineExecutableStatisticKHR( *reinterpret_cast( &rhs ) ) + { + } + + PipelineExecutableStatisticKHR & operator=( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineExecutableStatisticKHR & operator=( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPipelineExecutableStatisticKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineExecutableStatisticKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineExecutableStatisticKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineExecutableStatisticKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + ArrayWrapper1D const &, + PipelineExecutableStatisticFormatKHR const &, + PipelineExecutableStatisticValueKHR const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, name, description, format, value ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineExecutableStatisticKHR; + void * pNext = {}; + ArrayWrapper1D name = {}; + ArrayWrapper1D description = {}; + PipelineExecutableStatisticFormatKHR format = PipelineExecutableStatisticFormatKHR::eBool32; + PipelineExecutableStatisticValueKHR value = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineExecutableStatisticKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineExecutableStatisticKHR; + }; + + // wrapper struct for struct VkPipelineFragmentDensityMapLayeredCreateInfoVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineFragmentDensityMapLayeredCreateInfoVALVE.html + struct PipelineFragmentDensityMapLayeredCreateInfoVALVE + { + using NativeType = VkPipelineFragmentDensityMapLayeredCreateInfoVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineFragmentDensityMapLayeredCreateInfoVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineFragmentDensityMapLayeredCreateInfoVALVE( uint32_t maxFragmentDensityMapLayers_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxFragmentDensityMapLayers{ maxFragmentDensityMapLayers_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineFragmentDensityMapLayeredCreateInfoVALVE( PipelineFragmentDensityMapLayeredCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineFragmentDensityMapLayeredCreateInfoVALVE( VkPipelineFragmentDensityMapLayeredCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineFragmentDensityMapLayeredCreateInfoVALVE( *reinterpret_cast( &rhs ) ) + { + } + + PipelineFragmentDensityMapLayeredCreateInfoVALVE & operator=( PipelineFragmentDensityMapLayeredCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineFragmentDensityMapLayeredCreateInfoVALVE & operator=( VkPipelineFragmentDensityMapLayeredCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentDensityMapLayeredCreateInfoVALVE & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentDensityMapLayeredCreateInfoVALVE && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentDensityMapLayeredCreateInfoVALVE & setMaxFragmentDensityMapLayers( uint32_t maxFragmentDensityMapLayers_ ) & + VULKAN_HPP_NOEXCEPT + { + maxFragmentDensityMapLayers = maxFragmentDensityMapLayers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentDensityMapLayeredCreateInfoVALVE && setMaxFragmentDensityMapLayers( uint32_t maxFragmentDensityMapLayers_ ) && + VULKAN_HPP_NOEXCEPT + { + maxFragmentDensityMapLayers = maxFragmentDensityMapLayers_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineFragmentDensityMapLayeredCreateInfoVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineFragmentDensityMapLayeredCreateInfoVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineFragmentDensityMapLayeredCreateInfoVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineFragmentDensityMapLayeredCreateInfoVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxFragmentDensityMapLayers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineFragmentDensityMapLayeredCreateInfoVALVE const & ) const = default; +#else + bool operator==( PipelineFragmentDensityMapLayeredCreateInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxFragmentDensityMapLayers == rhs.maxFragmentDensityMapLayers ); +# endif + } + + bool operator!=( PipelineFragmentDensityMapLayeredCreateInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineFragmentDensityMapLayeredCreateInfoVALVE; + void const * pNext = {}; + uint32_t maxFragmentDensityMapLayers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineFragmentDensityMapLayeredCreateInfoVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineFragmentDensityMapLayeredCreateInfoVALVE; + }; + + // wrapper struct for struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateEnumStateCreateInfoNV.html + struct PipelineFragmentShadingRateEnumStateCreateInfoNV + { + using NativeType = VkPipelineFragmentShadingRateEnumStateCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV( + FragmentShadingRateTypeNV shadingRateType_ = FragmentShadingRateTypeNV::eFragmentSize, + FragmentShadingRateNV shadingRate_ = FragmentShadingRateNV::e1InvocationPerPixel, + std::array const & combinerOps_ = { { FragmentShadingRateCombinerOpKHR::eKeep, + FragmentShadingRateCombinerOpKHR::eKeep } }, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shadingRateType{ shadingRateType_ } + , shadingRate{ shadingRate_ } + , combinerOps{ combinerOps_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + PipelineFragmentShadingRateEnumStateCreateInfoNV( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineFragmentShadingRateEnumStateCreateInfoNV( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineFragmentShadingRateEnumStateCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & setShadingRateType( FragmentShadingRateTypeNV shadingRateType_ ) & + VULKAN_HPP_NOEXCEPT + { + shadingRateType = shadingRateType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV && setShadingRateType( FragmentShadingRateTypeNV shadingRateType_ ) && + VULKAN_HPP_NOEXCEPT + { + shadingRateType = shadingRateType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & setShadingRate( FragmentShadingRateNV shadingRate_ ) & VULKAN_HPP_NOEXCEPT + { + shadingRate = shadingRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV && setShadingRate( FragmentShadingRateNV shadingRate_ ) && VULKAN_HPP_NOEXCEPT + { + shadingRate = shadingRate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & setCombinerOps( std::array combinerOps_ ) & + VULKAN_HPP_NOEXCEPT + { + combinerOps = combinerOps_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV && + setCombinerOps( std::array combinerOps_ ) && + VULKAN_HPP_NOEXCEPT + { + combinerOps = combinerOps_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineFragmentShadingRateEnumStateCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shadingRateType, shadingRate, combinerOps ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineFragmentShadingRateEnumStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateType == rhs.shadingRateType ) && ( shadingRate == rhs.shadingRate ) && + ( combinerOps == rhs.combinerOps ); +# endif + } + + bool operator!=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV; + void const * pNext = {}; + FragmentShadingRateTypeNV shadingRateType = FragmentShadingRateTypeNV::eFragmentSize; + FragmentShadingRateNV shadingRate = FragmentShadingRateNV::e1InvocationPerPixel; + ArrayWrapper1D combinerOps = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineFragmentShadingRateEnumStateCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineFragmentShadingRateEnumStateCreateInfoNV; + }; + + // wrapper struct for struct VkPipelineFragmentShadingRateStateCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineFragmentShadingRateStateCreateInfoKHR.html + struct PipelineFragmentShadingRateStateCreateInfoKHR + { + using NativeType = VkPipelineFragmentShadingRateStateCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR( + Extent2D fragmentSize_ = {}, + std::array const & combinerOps_ = { { FragmentShadingRateCombinerOpKHR::eKeep, + FragmentShadingRateCombinerOpKHR::eKeep } }, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentSize{ fragmentSize_ } + , combinerOps{ combinerOps_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 + PipelineFragmentShadingRateStateCreateInfoKHR( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineFragmentShadingRateStateCreateInfoKHR( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineFragmentShadingRateStateCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + PipelineFragmentShadingRateStateCreateInfoKHR & operator=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineFragmentShadingRateStateCreateInfoKHR & operator=( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & setFragmentSize( Extent2D const & fragmentSize_ ) & VULKAN_HPP_NOEXCEPT + { + fragmentSize = fragmentSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR && setFragmentSize( Extent2D const & fragmentSize_ ) && VULKAN_HPP_NOEXCEPT + { + fragmentSize = fragmentSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & setCombinerOps( std::array combinerOps_ ) & + VULKAN_HPP_NOEXCEPT + { + combinerOps = combinerOps_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR && setCombinerOps( std::array combinerOps_ ) && + VULKAN_HPP_NOEXCEPT + { + combinerOps = combinerOps_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineFragmentShadingRateStateCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineFragmentShadingRateStateCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineFragmentShadingRateStateCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineFragmentShadingRateStateCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentSize, combinerOps ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineFragmentShadingRateStateCreateInfoKHR const & ) const = default; +#else + bool operator==( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentSize == rhs.fragmentSize ) && ( combinerOps == rhs.combinerOps ); +# endif + } + + bool operator!=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR; + void const * pNext = {}; + Extent2D fragmentSize = {}; + ArrayWrapper1D combinerOps = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineFragmentShadingRateStateCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineFragmentShadingRateStateCreateInfoKHR; + }; + + // wrapper struct for struct VkPipelineIndirectDeviceAddressInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineIndirectDeviceAddressInfoNV.html + struct PipelineIndirectDeviceAddressInfoNV + { + using NativeType = VkPipelineIndirectDeviceAddressInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineIndirectDeviceAddressInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineIndirectDeviceAddressInfoNV( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, + Pipeline pipeline_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineBindPoint{ pipelineBindPoint_ } + , pipeline{ pipeline_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineIndirectDeviceAddressInfoNV( PipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineIndirectDeviceAddressInfoNV( VkPipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineIndirectDeviceAddressInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + PipelineIndirectDeviceAddressInfoNV & operator=( PipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineIndirectDeviceAddressInfoNV & operator=( VkPipelineIndirectDeviceAddressInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV & setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV && setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV & setPipeline( Pipeline pipeline_ ) & VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineIndirectDeviceAddressInfoNV && setPipeline( Pipeline pipeline_ ) && VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineIndirectDeviceAddressInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineIndirectDeviceAddressInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineIndirectDeviceAddressInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineIndirectDeviceAddressInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineBindPoint, pipeline ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineIndirectDeviceAddressInfoNV const & ) const = default; +#else + bool operator==( PipelineIndirectDeviceAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( pipeline == rhs.pipeline ); +# endif + } + + bool operator!=( PipelineIndirectDeviceAddressInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineIndirectDeviceAddressInfoNV; + void const * pNext = {}; + PipelineBindPoint pipelineBindPoint = PipelineBindPoint::eGraphics; + Pipeline pipeline = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineIndirectDeviceAddressInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineIndirectDeviceAddressInfoNV; + }; + + // wrapper struct for struct VkPipelineInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineInfoKHR.html + struct PipelineInfoKHR + { + using NativeType = VkPipelineInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineInfoKHR( Pipeline pipeline_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipeline{ pipeline_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineInfoKHR( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineInfoKHR( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PipelineInfoKHR( *reinterpret_cast( &rhs ) ) {} + + PipelineInfoKHR & operator=( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineInfoKHR & operator=( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & setPipeline( Pipeline pipeline_ ) & VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR && setPipeline( Pipeline pipeline_ ) && VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipeline ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineInfoKHR const & ) const = default; +#else + bool operator==( PipelineInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline ); +# endif + } + + bool operator!=( PipelineInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineInfoKHR; + void const * pNext = {}; + Pipeline pipeline = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineInfoKHR; + }; + + using PipelineInfoEXT = PipelineInfoKHR; + + // wrapper struct for struct VkPipelineLayoutCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineLayoutCreateInfo.html + struct PipelineLayoutCreateInfo + { + using NativeType = VkPipelineLayoutCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineLayoutCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = {}, + uint32_t setLayoutCount_ = {}, + DescriptorSetLayout const * pSetLayouts_ = {}, + uint32_t pushConstantRangeCount_ = {}, + PushConstantRange const * pPushConstantRanges_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , setLayoutCount{ setLayoutCount_ } + , pSetLayouts{ pSetLayouts_ } + , pushConstantRangeCount{ pushConstantRangeCount_ } + , pPushConstantRanges{ pPushConstantRanges_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineLayoutCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_, + ArrayProxyNoTemporaries const & setLayouts_, + ArrayProxyNoTemporaries const & pushConstantRanges_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , setLayoutCount( static_cast( setLayouts_.size() ) ) + , pSetLayouts( setLayouts_.data() ) + , pushConstantRangeCount( static_cast( pushConstantRanges_.size() ) ) + , pPushConstantRanges( pushConstantRanges_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineLayoutCreateInfo & operator=( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineLayoutCreateInfo & operator=( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setFlags( PipelineLayoutCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo && setFlags( PipelineLayoutCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setSetLayoutCount( uint32_t setLayoutCount_ ) & VULKAN_HPP_NOEXCEPT + { + setLayoutCount = setLayoutCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo && setSetLayoutCount( uint32_t setLayoutCount_ ) && VULKAN_HPP_NOEXCEPT + { + setLayoutCount = setLayoutCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPSetLayouts( DescriptorSetLayout const * pSetLayouts_ ) & VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo && setPSetLayouts( DescriptorSetLayout const * pSetLayouts_ ) && VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineLayoutCreateInfo & setSetLayouts( ArrayProxyNoTemporaries const & setLayouts_ ) VULKAN_HPP_NOEXCEPT + { + setLayoutCount = static_cast( setLayouts_.size() ); + pSetLayouts = setLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) & VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = pushConstantRangeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo && setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) && VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = pushConstantRangeCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & setPPushConstantRanges( PushConstantRange const * pPushConstantRanges_ ) & VULKAN_HPP_NOEXCEPT + { + pPushConstantRanges = pPushConstantRanges_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo && setPPushConstantRanges( PushConstantRange const * pPushConstantRanges_ ) && VULKAN_HPP_NOEXCEPT + { + pPushConstantRanges = pPushConstantRanges_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineLayoutCreateInfo & setPushConstantRanges( ArrayProxyNoTemporaries const & pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = static_cast( pushConstantRanges_.size() ); + pPushConstantRanges = pushConstantRanges_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineLayoutCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineLayoutCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineLayoutCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, setLayoutCount, pSetLayouts, pushConstantRangeCount, pPushConstantRanges ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineLayoutCreateInfo const & ) const = default; +#else + bool operator==( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( setLayoutCount == rhs.setLayoutCount ) && + ( pSetLayouts == rhs.pSetLayouts ) && ( pushConstantRangeCount == rhs.pushConstantRangeCount ) && + ( pPushConstantRanges == rhs.pPushConstantRanges ); +# endif + } + + bool operator!=( PipelineLayoutCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineLayoutCreateInfo; + void const * pNext = {}; + PipelineLayoutCreateFlags flags = {}; + uint32_t setLayoutCount = {}; + DescriptorSetLayout const * pSetLayouts = {}; + uint32_t pushConstantRangeCount = {}; + PushConstantRange const * pPushConstantRanges = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineLayoutCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineLayoutCreateInfo; + }; + + // wrapper struct for struct VkPipelinePropertiesIdentifierEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelinePropertiesIdentifierEXT.html + struct PipelinePropertiesIdentifierEXT + { + using NativeType = VkPipelinePropertiesIdentifierEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelinePropertiesIdentifierEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 PipelinePropertiesIdentifierEXT( std::array const & pipelineIdentifier_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipelineIdentifier{ pipelineIdentifier_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 PipelinePropertiesIdentifierEXT( PipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelinePropertiesIdentifierEXT( VkPipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelinePropertiesIdentifierEXT( *reinterpret_cast( &rhs ) ) + { + } + + PipelinePropertiesIdentifierEXT & operator=( PipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelinePropertiesIdentifierEXT & operator=( VkPipelinePropertiesIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPipelinePropertiesIdentifierEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelinePropertiesIdentifierEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelinePropertiesIdentifierEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelinePropertiesIdentifierEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipelineIdentifier ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelinePropertiesIdentifierEXT const & ) const = default; +#else + bool operator==( PipelinePropertiesIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipelineIdentifier == rhs.pipelineIdentifier ); +# endif + } + + bool operator!=( PipelinePropertiesIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelinePropertiesIdentifierEXT; + void * pNext = {}; + ArrayWrapper1D pipelineIdentifier = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelinePropertiesIdentifierEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelinePropertiesIdentifierEXT; + }; + + // wrapper struct for struct VkPipelineRasterizationConservativeStateCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationConservativeStateCreateInfoEXT.html + struct PipelineRasterizationConservativeStateCreateInfoEXT + { + using NativeType = VkPipelineRasterizationConservativeStateCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT( + PipelineRasterizationConservativeStateCreateFlagsEXT flags_ = {}, + ConservativeRasterizationModeEXT conservativeRasterizationMode_ = ConservativeRasterizationModeEXT::eDisabled, + float extraPrimitiveOverestimationSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , conservativeRasterizationMode{ conservativeRasterizationMode_ } + , extraPrimitiveOverestimationSize{ extraPrimitiveOverestimationSize_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineRasterizationConservativeStateCreateInfoEXT( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRasterizationConservativeStateCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PipelineRasterizationConservativeStateCreateInfoEXT & + operator=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineRasterizationConservativeStateCreateInfoEXT & operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & setFlags( PipelineRasterizationConservativeStateCreateFlagsEXT flags_ ) & + VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT && setFlags( PipelineRasterizationConservativeStateCreateFlagsEXT flags_ ) && + VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & + setConservativeRasterizationMode( ConservativeRasterizationModeEXT conservativeRasterizationMode_ ) & + VULKAN_HPP_NOEXCEPT + { + conservativeRasterizationMode = conservativeRasterizationMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT && + setConservativeRasterizationMode( ConservativeRasterizationModeEXT conservativeRasterizationMode_ ) && + VULKAN_HPP_NOEXCEPT + { + conservativeRasterizationMode = conservativeRasterizationMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & + setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ ) & + VULKAN_HPP_NOEXCEPT + { + extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT && + setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ ) && + VULKAN_HPP_NOEXCEPT + { + extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineRasterizationConservativeStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationConservativeStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationConservativeStateCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineRasterizationConservativeStateCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, conservativeRasterizationMode, extraPrimitiveOverestimationSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationConservativeStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( conservativeRasterizationMode == rhs.conservativeRasterizationMode ) && + ( extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize ); +# endif + } + + bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT; + void const * pNext = {}; + PipelineRasterizationConservativeStateCreateFlagsEXT flags = {}; + ConservativeRasterizationModeEXT conservativeRasterizationMode = ConservativeRasterizationModeEXT::eDisabled; + float extraPrimitiveOverestimationSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineRasterizationConservativeStateCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineRasterizationConservativeStateCreateInfoEXT; + }; + + // wrapper struct for struct VkPipelineRasterizationDepthClipStateCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationDepthClipStateCreateInfoEXT.html + struct PipelineRasterizationDepthClipStateCreateInfoEXT + { + using NativeType = VkPipelineRasterizationDepthClipStateCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT( PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ = {}, + Bool32 depthClipEnable_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , depthClipEnable{ depthClipEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineRasterizationDepthClipStateCreateInfoEXT( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationDepthClipStateCreateInfoEXT( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRasterizationDepthClipStateCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & setFlags( PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ ) & + VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT && setFlags( PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ ) && + VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & setDepthClipEnable( Bool32 depthClipEnable_ ) & VULKAN_HPP_NOEXCEPT + { + depthClipEnable = depthClipEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT && setDepthClipEnable( Bool32 depthClipEnable_ ) && VULKAN_HPP_NOEXCEPT + { + depthClipEnable = depthClipEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationDepthClipStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationDepthClipStateCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineRasterizationDepthClipStateCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, depthClipEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationDepthClipStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( depthClipEnable == rhs.depthClipEnable ); +# endif + } + + bool operator!=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT; + void const * pNext = {}; + PipelineRasterizationDepthClipStateCreateFlagsEXT flags = {}; + Bool32 depthClipEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineRasterizationDepthClipStateCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineRasterizationDepthClipStateCreateInfoEXT; + }; + + // wrapper struct for struct VkPipelineRasterizationLineStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationLineStateCreateInfo.html + struct PipelineRasterizationLineStateCreateInfo + { + using NativeType = VkPipelineRasterizationLineStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationLineStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfo( LineRasterizationMode lineRasterizationMode_ = LineRasterizationMode::eDefault, + Bool32 stippledLineEnable_ = {}, + uint32_t lineStippleFactor_ = {}, + uint16_t lineStipplePattern_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , lineRasterizationMode{ lineRasterizationMode_ } + , stippledLineEnable{ stippledLineEnable_ } + , lineStippleFactor{ lineStippleFactor_ } + , lineStipplePattern{ lineStipplePattern_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfo( PipelineRasterizationLineStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationLineStateCreateInfo( VkPipelineRasterizationLineStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRasterizationLineStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineRasterizationLineStateCreateInfo & operator=( PipelineRasterizationLineStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineRasterizationLineStateCreateInfo & operator=( VkPipelineRasterizationLineStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo & setLineRasterizationMode( LineRasterizationMode lineRasterizationMode_ ) & + VULKAN_HPP_NOEXCEPT + { + lineRasterizationMode = lineRasterizationMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo && setLineRasterizationMode( LineRasterizationMode lineRasterizationMode_ ) && + VULKAN_HPP_NOEXCEPT + { + lineRasterizationMode = lineRasterizationMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo & setStippledLineEnable( Bool32 stippledLineEnable_ ) & VULKAN_HPP_NOEXCEPT + { + stippledLineEnable = stippledLineEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo && setStippledLineEnable( Bool32 stippledLineEnable_ ) && VULKAN_HPP_NOEXCEPT + { + stippledLineEnable = stippledLineEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo & setLineStippleFactor( uint32_t lineStippleFactor_ ) & VULKAN_HPP_NOEXCEPT + { + lineStippleFactor = lineStippleFactor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo && setLineStippleFactor( uint32_t lineStippleFactor_ ) && VULKAN_HPP_NOEXCEPT + { + lineStippleFactor = lineStippleFactor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo & setLineStipplePattern( uint16_t lineStipplePattern_ ) & VULKAN_HPP_NOEXCEPT + { + lineStipplePattern = lineStipplePattern_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfo && setLineStipplePattern( uint16_t lineStipplePattern_ ) && VULKAN_HPP_NOEXCEPT + { + lineStipplePattern = lineStipplePattern_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineRasterizationLineStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationLineStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationLineStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineRasterizationLineStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, lineRasterizationMode, stippledLineEnable, lineStippleFactor, lineStipplePattern ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationLineStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineRasterizationLineStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( lineRasterizationMode == rhs.lineRasterizationMode ) && + ( stippledLineEnable == rhs.stippledLineEnable ) && ( lineStippleFactor == rhs.lineStippleFactor ) && + ( lineStipplePattern == rhs.lineStipplePattern ); +# endif + } + + bool operator!=( PipelineRasterizationLineStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineRasterizationLineStateCreateInfo; + void const * pNext = {}; + LineRasterizationMode lineRasterizationMode = LineRasterizationMode::eDefault; + Bool32 stippledLineEnable = {}; + uint32_t lineStippleFactor = {}; + uint16_t lineStipplePattern = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineRasterizationLineStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineRasterizationLineStateCreateInfo; + }; + + using PipelineRasterizationLineStateCreateInfoEXT = PipelineRasterizationLineStateCreateInfo; + using PipelineRasterizationLineStateCreateInfoKHR = PipelineRasterizationLineStateCreateInfo; + + // wrapper struct for struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationProvokingVertexStateCreateInfoEXT.html + struct PipelineRasterizationProvokingVertexStateCreateInfoEXT + { + using NativeType = VkPipelineRasterizationProvokingVertexStateCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PipelineRasterizationProvokingVertexStateCreateInfoEXT( ProvokingVertexModeEXT provokingVertexMode_ = ProvokingVertexModeEXT::eFirstVertex, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , provokingVertexMode{ provokingVertexMode_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineRasterizationProvokingVertexStateCreateInfoEXT( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationProvokingVertexStateCreateInfoEXT( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRasterizationProvokingVertexStateCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PipelineRasterizationProvokingVertexStateCreateInfoEXT & + operator=( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineRasterizationProvokingVertexStateCreateInfoEXT & + operator=( VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT & setProvokingVertexMode( ProvokingVertexModeEXT provokingVertexMode_ ) & + VULKAN_HPP_NOEXCEPT + { + provokingVertexMode = provokingVertexMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationProvokingVertexStateCreateInfoEXT && setProvokingVertexMode( ProvokingVertexModeEXT provokingVertexMode_ ) && + VULKAN_HPP_NOEXCEPT + { + provokingVertexMode = provokingVertexMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineRasterizationProvokingVertexStateCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, provokingVertexMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( provokingVertexMode == rhs.provokingVertexMode ); +# endif + } + + bool operator!=( PipelineRasterizationProvokingVertexStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT; + void const * pNext = {}; + ProvokingVertexModeEXT provokingVertexMode = ProvokingVertexModeEXT::eFirstVertex; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineRasterizationProvokingVertexStateCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineRasterizationProvokingVertexStateCreateInfoEXT; + }; + + // wrapper struct for struct VkPipelineRasterizationStateRasterizationOrderAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationStateRasterizationOrderAMD.html + struct PipelineRasterizationStateRasterizationOrderAMD + { + using NativeType = VkPipelineRasterizationStateRasterizationOrderAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rasterizationOrder{ rasterizationOrder_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineRasterizationStateRasterizationOrderAMD( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRasterizationStateRasterizationOrderAMD( *reinterpret_cast( &rhs ) ) + { + } + + PipelineRasterizationStateRasterizationOrderAMD & operator=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineRasterizationStateRasterizationOrderAMD & operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD & setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ ) & + VULKAN_HPP_NOEXCEPT + { + rasterizationOrder = rasterizationOrder_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD && setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ ) && + VULKAN_HPP_NOEXCEPT + { + rasterizationOrder = rasterizationOrder_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineRasterizationStateRasterizationOrderAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationStateRasterizationOrderAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationStateRasterizationOrderAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineRasterizationStateRasterizationOrderAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rasterizationOrder ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationStateRasterizationOrderAMD const & ) const = default; +#else + bool operator==( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rasterizationOrder == rhs.rasterizationOrder ); +# endif + } + + bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD; + void const * pNext = {}; + RasterizationOrderAMD rasterizationOrder = RasterizationOrderAMD::eStrict; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineRasterizationStateRasterizationOrderAMD; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineRasterizationStateRasterizationOrderAMD; + }; + + // wrapper struct for struct VkPipelineRasterizationStateStreamCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRasterizationStateStreamCreateInfoEXT.html + struct PipelineRasterizationStateStreamCreateInfoEXT + { + using NativeType = VkPipelineRasterizationStateStreamCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRasterizationStateStreamCreateInfoEXT( PipelineRasterizationStateStreamCreateFlagsEXT flags_ = {}, + uint32_t rasterizationStream_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , rasterizationStream{ rasterizationStream_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineRasterizationStateStreamCreateInfoEXT( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRasterizationStateStreamCreateInfoEXT( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRasterizationStateStreamCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PipelineRasterizationStateStreamCreateInfoEXT & operator=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineRasterizationStateStreamCreateInfoEXT & operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & setFlags( PipelineRasterizationStateStreamCreateFlagsEXT flags_ ) & + VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT && setFlags( PipelineRasterizationStateStreamCreateFlagsEXT flags_ ) && + VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & setRasterizationStream( uint32_t rasterizationStream_ ) & VULKAN_HPP_NOEXCEPT + { + rasterizationStream = rasterizationStream_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT && setRasterizationStream( uint32_t rasterizationStream_ ) && VULKAN_HPP_NOEXCEPT + { + rasterizationStream = rasterizationStream_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineRasterizationStateStreamCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationStateStreamCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRasterizationStateStreamCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineRasterizationStateStreamCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, rasterizationStream ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRasterizationStateStreamCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rasterizationStream == rhs.rasterizationStream ); +# endif + } + + bool operator!=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT; + void const * pNext = {}; + PipelineRasterizationStateStreamCreateFlagsEXT flags = {}; + uint32_t rasterizationStream = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineRasterizationStateStreamCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineRasterizationStateStreamCreateInfoEXT; + }; + + // wrapper struct for struct VkPipelineRenderingCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRenderingCreateInfo.html + struct PipelineRenderingCreateInfo + { + using NativeType = VkPipelineRenderingCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRenderingCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRenderingCreateInfo( uint32_t viewMask_ = {}, + uint32_t colorAttachmentCount_ = {}, + Format const * pColorAttachmentFormats_ = {}, + Format depthAttachmentFormat_ = Format::eUndefined, + Format stencilAttachmentFormat_ = Format::eUndefined, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , viewMask{ viewMask_ } + , colorAttachmentCount{ colorAttachmentCount_ } + , pColorAttachmentFormats{ pColorAttachmentFormats_ } + , depthAttachmentFormat{ depthAttachmentFormat_ } + , stencilAttachmentFormat{ stencilAttachmentFormat_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineRenderingCreateInfo( PipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRenderingCreateInfo( VkPipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRenderingCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineRenderingCreateInfo( uint32_t viewMask_, + ArrayProxyNoTemporaries const & colorAttachmentFormats_, + Format depthAttachmentFormat_ = Format::eUndefined, + Format stencilAttachmentFormat_ = Format::eUndefined, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , viewMask( viewMask_ ) + , colorAttachmentCount( static_cast( colorAttachmentFormats_.size() ) ) + , pColorAttachmentFormats( colorAttachmentFormats_.data() ) + , depthAttachmentFormat( depthAttachmentFormat_ ) + , stencilAttachmentFormat( stencilAttachmentFormat_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineRenderingCreateInfo & operator=( PipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineRenderingCreateInfo & operator=( VkPipelineRenderingCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setViewMask( uint32_t viewMask_ ) & VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo && setViewMask( uint32_t viewMask_ ) && VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo && setColorAttachmentCount( uint32_t colorAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setPColorAttachmentFormats( Format const * pColorAttachmentFormats_ ) & VULKAN_HPP_NOEXCEPT + { + pColorAttachmentFormats = pColorAttachmentFormats_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo && setPColorAttachmentFormats( Format const * pColorAttachmentFormats_ ) && VULKAN_HPP_NOEXCEPT + { + pColorAttachmentFormats = pColorAttachmentFormats_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineRenderingCreateInfo & setColorAttachmentFormats( ArrayProxyNoTemporaries const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachmentFormats_.size() ); + pColorAttachmentFormats = colorAttachmentFormats_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setDepthAttachmentFormat( Format depthAttachmentFormat_ ) & VULKAN_HPP_NOEXCEPT + { + depthAttachmentFormat = depthAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo && setDepthAttachmentFormat( Format depthAttachmentFormat_ ) && VULKAN_HPP_NOEXCEPT + { + depthAttachmentFormat = depthAttachmentFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo & setStencilAttachmentFormat( Format stencilAttachmentFormat_ ) & VULKAN_HPP_NOEXCEPT + { + stencilAttachmentFormat = stencilAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRenderingCreateInfo && setStencilAttachmentFormat( Format stencilAttachmentFormat_ ) && VULKAN_HPP_NOEXCEPT + { + stencilAttachmentFormat = stencilAttachmentFormat_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineRenderingCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRenderingCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRenderingCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineRenderingCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRenderingCreateInfo const & ) const = default; +#else + bool operator==( PipelineRenderingCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewMask == rhs.viewMask ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) && + ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) && ( depthAttachmentFormat == rhs.depthAttachmentFormat ) && + ( stencilAttachmentFormat == rhs.stencilAttachmentFormat ); +# endif + } + + bool operator!=( PipelineRenderingCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineRenderingCreateInfo; + void const * pNext = {}; + uint32_t viewMask = {}; + uint32_t colorAttachmentCount = {}; + Format const * pColorAttachmentFormats = {}; + Format depthAttachmentFormat = Format::eUndefined; + Format stencilAttachmentFormat = Format::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineRenderingCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineRenderingCreateInfo; + }; + + using PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo; + + // wrapper struct for struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRepresentativeFragmentTestStateCreateInfoNV.html + struct PipelineRepresentativeFragmentTestStateCreateInfoNV + { + using NativeType = VkPipelineRepresentativeFragmentTestStateCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRepresentativeFragmentTestStateCreateInfoNV( Bool32 representativeFragmentTestEnable_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , representativeFragmentTestEnable{ representativeFragmentTestEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineRepresentativeFragmentTestStateCreateInfoNV( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRepresentativeFragmentTestStateCreateInfoNV( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRepresentativeFragmentTestStateCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + PipelineRepresentativeFragmentTestStateCreateInfoNV & + operator=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineRepresentativeFragmentTestStateCreateInfoNV & operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV & + setRepresentativeFragmentTestEnable( Bool32 representativeFragmentTestEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + representativeFragmentTestEnable = representativeFragmentTestEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV && + setRepresentativeFragmentTestEnable( Bool32 representativeFragmentTestEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + representativeFragmentTestEnable = representativeFragmentTestEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineRepresentativeFragmentTestStateCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, representativeFragmentTestEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRepresentativeFragmentTestStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( representativeFragmentTestEnable == rhs.representativeFragmentTestEnable ); +# endif + } + + bool operator!=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV; + void const * pNext = {}; + Bool32 representativeFragmentTestEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineRepresentativeFragmentTestStateCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineRepresentativeFragmentTestStateCreateInfoNV; + }; + + // wrapper struct for struct VkPipelineRobustnessCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineRobustnessCreateInfo.html + struct PipelineRobustnessCreateInfo + { + using NativeType = VkPipelineRobustnessCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRobustnessCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineRobustnessCreateInfo( PipelineRobustnessBufferBehavior storageBuffers_ = PipelineRobustnessBufferBehavior::eDeviceDefault, + PipelineRobustnessBufferBehavior uniformBuffers_ = PipelineRobustnessBufferBehavior::eDeviceDefault, + PipelineRobustnessBufferBehavior vertexInputs_ = PipelineRobustnessBufferBehavior::eDeviceDefault, + PipelineRobustnessImageBehavior images_ = PipelineRobustnessImageBehavior::eDeviceDefault, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , storageBuffers{ storageBuffers_ } + , uniformBuffers{ uniformBuffers_ } + , vertexInputs{ vertexInputs_ } + , images{ images_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineRobustnessCreateInfo( PipelineRobustnessCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineRobustnessCreateInfo( VkPipelineRobustnessCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineRobustnessCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineRobustnessCreateInfo & operator=( PipelineRobustnessCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineRobustnessCreateInfo & operator=( VkPipelineRobustnessCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo & setStorageBuffers( PipelineRobustnessBufferBehavior storageBuffers_ ) & VULKAN_HPP_NOEXCEPT + { + storageBuffers = storageBuffers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo && setStorageBuffers( PipelineRobustnessBufferBehavior storageBuffers_ ) && VULKAN_HPP_NOEXCEPT + { + storageBuffers = storageBuffers_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo & setUniformBuffers( PipelineRobustnessBufferBehavior uniformBuffers_ ) & VULKAN_HPP_NOEXCEPT + { + uniformBuffers = uniformBuffers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo && setUniformBuffers( PipelineRobustnessBufferBehavior uniformBuffers_ ) && VULKAN_HPP_NOEXCEPT + { + uniformBuffers = uniformBuffers_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo & setVertexInputs( PipelineRobustnessBufferBehavior vertexInputs_ ) & VULKAN_HPP_NOEXCEPT + { + vertexInputs = vertexInputs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo && setVertexInputs( PipelineRobustnessBufferBehavior vertexInputs_ ) && VULKAN_HPP_NOEXCEPT + { + vertexInputs = vertexInputs_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo & setImages( PipelineRobustnessImageBehavior images_ ) & VULKAN_HPP_NOEXCEPT + { + images = images_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineRobustnessCreateInfo && setImages( PipelineRobustnessImageBehavior images_ ) && VULKAN_HPP_NOEXCEPT + { + images = images_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineRobustnessCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRobustnessCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineRobustnessCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineRobustnessCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, storageBuffers, uniformBuffers, vertexInputs, images ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineRobustnessCreateInfo const & ) const = default; +#else + bool operator==( PipelineRobustnessCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( storageBuffers == rhs.storageBuffers ) && ( uniformBuffers == rhs.uniformBuffers ) && + ( vertexInputs == rhs.vertexInputs ) && ( images == rhs.images ); +# endif + } + + bool operator!=( PipelineRobustnessCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineRobustnessCreateInfo; + void const * pNext = {}; + PipelineRobustnessBufferBehavior storageBuffers = PipelineRobustnessBufferBehavior::eDeviceDefault; + PipelineRobustnessBufferBehavior uniformBuffers = PipelineRobustnessBufferBehavior::eDeviceDefault; + PipelineRobustnessBufferBehavior vertexInputs = PipelineRobustnessBufferBehavior::eDeviceDefault; + PipelineRobustnessImageBehavior images = PipelineRobustnessImageBehavior::eDeviceDefault; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineRobustnessCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineRobustnessCreateInfo; + }; + + using PipelineRobustnessCreateInfoEXT = PipelineRobustnessCreateInfo; + + // wrapper struct for struct VkPipelineSampleLocationsStateCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineSampleLocationsStateCreateInfoEXT.html + struct PipelineSampleLocationsStateCreateInfoEXT + { + using NativeType = VkPipelineSampleLocationsStateCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT( Bool32 sampleLocationsEnable_ = {}, + SampleLocationsInfoEXT sampleLocationsInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , sampleLocationsEnable{ sampleLocationsEnable_ } + , sampleLocationsInfo{ sampleLocationsInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineSampleLocationsStateCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PipelineSampleLocationsStateCreateInfoEXT & operator=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineSampleLocationsStateCreateInfoEXT & operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & setSampleLocationsEnable( Bool32 sampleLocationsEnable_ ) & VULKAN_HPP_NOEXCEPT + { + sampleLocationsEnable = sampleLocationsEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT && setSampleLocationsEnable( Bool32 sampleLocationsEnable_ ) && VULKAN_HPP_NOEXCEPT + { + sampleLocationsEnable = sampleLocationsEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & setSampleLocationsInfo( SampleLocationsInfoEXT const & sampleLocationsInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + sampleLocationsInfo = sampleLocationsInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT && setSampleLocationsInfo( SampleLocationsInfoEXT const & sampleLocationsInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + sampleLocationsInfo = sampleLocationsInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineSampleLocationsStateCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineSampleLocationsStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineSampleLocationsStateCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineSampleLocationsStateCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sampleLocationsEnable, sampleLocationsInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineSampleLocationsStateCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleLocationsEnable == rhs.sampleLocationsEnable ) && + ( sampleLocationsInfo == rhs.sampleLocationsInfo ); +# endif + } + + bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT; + void const * pNext = {}; + Bool32 sampleLocationsEnable = {}; + SampleLocationsInfoEXT sampleLocationsInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineSampleLocationsStateCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineSampleLocationsStateCreateInfoEXT; + }; + + // wrapper struct for struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineShaderStageModuleIdentifierCreateInfoEXT.html + struct PipelineShaderStageModuleIdentifierCreateInfoEXT + { + using NativeType = VkPipelineShaderStageModuleIdentifierCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineShaderStageModuleIdentifierCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineShaderStageModuleIdentifierCreateInfoEXT( uint32_t identifierSize_ = {}, + uint8_t const * pIdentifier_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , identifierSize{ identifierSize_ } + , pIdentifier{ pIdentifier_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineShaderStageModuleIdentifierCreateInfoEXT( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineShaderStageModuleIdentifierCreateInfoEXT( VkPipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineShaderStageModuleIdentifierCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineShaderStageModuleIdentifierCreateInfoEXT( ArrayProxyNoTemporaries const & identifier_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), identifierSize( static_cast( identifier_.size() ) ), pIdentifier( identifier_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineShaderStageModuleIdentifierCreateInfoEXT & operator=( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineShaderStageModuleIdentifierCreateInfoEXT & operator=( VkPipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT & setIdentifierSize( uint32_t identifierSize_ ) & VULKAN_HPP_NOEXCEPT + { + identifierSize = identifierSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT && setIdentifierSize( uint32_t identifierSize_ ) && VULKAN_HPP_NOEXCEPT + { + identifierSize = identifierSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT & setPIdentifier( uint8_t const * pIdentifier_ ) & VULKAN_HPP_NOEXCEPT + { + pIdentifier = pIdentifier_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageModuleIdentifierCreateInfoEXT && setPIdentifier( uint8_t const * pIdentifier_ ) && VULKAN_HPP_NOEXCEPT + { + pIdentifier = pIdentifier_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineShaderStageModuleIdentifierCreateInfoEXT & setIdentifier( ArrayProxyNoTemporaries const & identifier_ ) VULKAN_HPP_NOEXCEPT + { + identifierSize = static_cast( identifier_.size() ); + pIdentifier = identifier_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineShaderStageModuleIdentifierCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, identifierSize, pIdentifier ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineShaderStageModuleIdentifierCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( identifierSize == rhs.identifierSize ) && ( pIdentifier == rhs.pIdentifier ); +# endif + } + + bool operator!=( PipelineShaderStageModuleIdentifierCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineShaderStageModuleIdentifierCreateInfoEXT; + void const * pNext = {}; + uint32_t identifierSize = {}; + uint8_t const * pIdentifier = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineShaderStageModuleIdentifierCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineShaderStageModuleIdentifierCreateInfoEXT; + }; + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + // wrapper struct for struct VkPipelineShaderStageNodeCreateInfoAMDX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineShaderStageNodeCreateInfoAMDX.html + struct PipelineShaderStageNodeCreateInfoAMDX + { + using NativeType = VkPipelineShaderStageNodeCreateInfoAMDX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineShaderStageNodeCreateInfoAMDX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PipelineShaderStageNodeCreateInfoAMDX( char const * pName_ = {}, uint32_t index_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pName{ pName_ } + , index{ index_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineShaderStageNodeCreateInfoAMDX( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineShaderStageNodeCreateInfoAMDX( VkPipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineShaderStageNodeCreateInfoAMDX( *reinterpret_cast( &rhs ) ) + { + } + + PipelineShaderStageNodeCreateInfoAMDX & operator=( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineShaderStageNodeCreateInfoAMDX & operator=( VkPipelineShaderStageNodeCreateInfoAMDX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX & setPName( char const * pName_ ) & VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX && setPName( char const * pName_ ) && VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX & setIndex( uint32_t index_ ) & VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageNodeCreateInfoAMDX && setIndex( uint32_t index_ ) && VULKAN_HPP_NOEXCEPT + { + index = index_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineShaderStageNodeCreateInfoAMDX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineShaderStageNodeCreateInfoAMDX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineShaderStageNodeCreateInfoAMDX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineShaderStageNodeCreateInfoAMDX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pName, index ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( pName != rhs.pName ) + if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = index <=> rhs.index; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && ( index == rhs.index ); + } + + bool operator!=( PipelineShaderStageNodeCreateInfoAMDX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePipelineShaderStageNodeCreateInfoAMDX; + void const * pNext = {}; + char const * pName = {}; + uint32_t index = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineShaderStageNodeCreateInfoAMDX; + }; +# endif + + template <> + struct CppType + { + using Type = PipelineShaderStageNodeCreateInfoAMDX; + }; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + // wrapper struct for struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineShaderStageRequiredSubgroupSizeCreateInfo.html + struct PipelineShaderStageRequiredSubgroupSizeCreateInfo + { + using NativeType = VkPipelineShaderStageRequiredSubgroupSizeCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineShaderStageRequiredSubgroupSizeCreateInfo( uint32_t requiredSubgroupSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , requiredSubgroupSize{ requiredSubgroupSize_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineShaderStageRequiredSubgroupSizeCreateInfo( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineShaderStageRequiredSubgroupSizeCreateInfo( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineShaderStageRequiredSubgroupSizeCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineShaderStageRequiredSubgroupSizeCreateInfo & + operator=( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineShaderStageRequiredSubgroupSizeCreateInfo & operator=( VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageRequiredSubgroupSizeCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageRequiredSubgroupSizeCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageRequiredSubgroupSizeCreateInfo & setRequiredSubgroupSize( uint32_t requiredSubgroupSize_ ) & VULKAN_HPP_NOEXCEPT + { + requiredSubgroupSize = requiredSubgroupSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageRequiredSubgroupSizeCreateInfo && setRequiredSubgroupSize( uint32_t requiredSubgroupSize_ ) && + VULKAN_HPP_NOEXCEPT + { + requiredSubgroupSize = requiredSubgroupSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, requiredSubgroupSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & ) const = default; +#else + bool operator==( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( requiredSubgroupSize == rhs.requiredSubgroupSize ); +# endif + } + + bool operator!=( PipelineShaderStageRequiredSubgroupSizeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo; + void const * pNext = {}; + uint32_t requiredSubgroupSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineShaderStageRequiredSubgroupSizeCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineShaderStageRequiredSubgroupSizeCreateInfo; + }; + + using PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo; + using ShaderRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo; + + // wrapper struct for struct VkPipelineTessellationDomainOriginStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineTessellationDomainOriginStateCreateInfo.html + struct PipelineTessellationDomainOriginStateCreateInfo + { + using NativeType = VkPipelineTessellationDomainOriginStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo( TessellationDomainOrigin domainOrigin_ = TessellationDomainOrigin::eUpperLeft, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , domainOrigin{ domainOrigin_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineTessellationDomainOriginStateCreateInfo( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineTessellationDomainOriginStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PipelineTessellationDomainOriginStateCreateInfo & operator=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineTessellationDomainOriginStateCreateInfo & operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo & setDomainOrigin( TessellationDomainOrigin domainOrigin_ ) & VULKAN_HPP_NOEXCEPT + { + domainOrigin = domainOrigin_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo && setDomainOrigin( TessellationDomainOrigin domainOrigin_ ) && VULKAN_HPP_NOEXCEPT + { + domainOrigin = domainOrigin_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineTessellationDomainOriginStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineTessellationDomainOriginStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineTessellationDomainOriginStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineTessellationDomainOriginStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, domainOrigin ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineTessellationDomainOriginStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( domainOrigin == rhs.domainOrigin ); +# endif + } + + bool operator!=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo; + void const * pNext = {}; + TessellationDomainOrigin domainOrigin = TessellationDomainOrigin::eUpperLeft; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineTessellationDomainOriginStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineTessellationDomainOriginStateCreateInfo; + }; + + using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo; + + // wrapper struct for struct VkVertexInputBindingDivisorDescription, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVertexInputBindingDivisorDescription.html + struct VertexInputBindingDivisorDescription + { + using NativeType = VkVertexInputBindingDivisorDescription; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescription( uint32_t binding_ = {}, uint32_t divisor_ = {} ) VULKAN_HPP_NOEXCEPT + : binding{ binding_ } + , divisor{ divisor_ } + { + } + + VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescription( VertexInputBindingDivisorDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputBindingDivisorDescription( VkVertexInputBindingDivisorDescription const & rhs ) VULKAN_HPP_NOEXCEPT + : VertexInputBindingDivisorDescription( *reinterpret_cast( &rhs ) ) + { + } + + VertexInputBindingDivisorDescription & operator=( VertexInputBindingDivisorDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VertexInputBindingDivisorDescription & operator=( VkVertexInputBindingDivisorDescription const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescription & setBinding( uint32_t binding_ ) & VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescription && setBinding( uint32_t binding_ ) && VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescription & setDivisor( uint32_t divisor_ ) & VULKAN_HPP_NOEXCEPT + { + divisor = divisor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescription && setDivisor( uint32_t divisor_ ) && VULKAN_HPP_NOEXCEPT + { + divisor = divisor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVertexInputBindingDivisorDescription const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVertexInputBindingDivisorDescription &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVertexInputBindingDivisorDescription const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVertexInputBindingDivisorDescription *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( binding, divisor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VertexInputBindingDivisorDescription const & ) const = default; +#else + bool operator==( VertexInputBindingDivisorDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( binding == rhs.binding ) && ( divisor == rhs.divisor ); +# endif + } + + bool operator!=( VertexInputBindingDivisorDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t binding = {}; + uint32_t divisor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VertexInputBindingDivisorDescription; + }; +#endif + using VertexInputBindingDivisorDescriptionEXT = VertexInputBindingDivisorDescription; + using VertexInputBindingDivisorDescriptionKHR = VertexInputBindingDivisorDescription; + + // wrapper struct for struct VkPipelineVertexInputDivisorStateCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineVertexInputDivisorStateCreateInfo.html + struct PipelineVertexInputDivisorStateCreateInfo + { + using NativeType = VkPipelineVertexInputDivisorStateCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineVertexInputDivisorStateCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfo( uint32_t vertexBindingDivisorCount_ = {}, + VertexInputBindingDivisorDescription const * pVertexBindingDivisors_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , vertexBindingDivisorCount{ vertexBindingDivisorCount_ } + , pVertexBindingDivisors{ pVertexBindingDivisors_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfo( PipelineVertexInputDivisorStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineVertexInputDivisorStateCreateInfo( VkPipelineVertexInputDivisorStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineVertexInputDivisorStateCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineVertexInputDivisorStateCreateInfo( ArrayProxyNoTemporaries const & vertexBindingDivisors_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , vertexBindingDivisorCount( static_cast( vertexBindingDivisors_.size() ) ) + , pVertexBindingDivisors( vertexBindingDivisors_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineVertexInputDivisorStateCreateInfo & operator=( PipelineVertexInputDivisorStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineVertexInputDivisorStateCreateInfo & operator=( VkPipelineVertexInputDivisorStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfo & setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ ) & + VULKAN_HPP_NOEXCEPT + { + vertexBindingDivisorCount = vertexBindingDivisorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfo && setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ ) && + VULKAN_HPP_NOEXCEPT + { + vertexBindingDivisorCount = vertexBindingDivisorCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfo & + setPVertexBindingDivisors( VertexInputBindingDivisorDescription const * pVertexBindingDivisors_ ) & + VULKAN_HPP_NOEXCEPT + { + pVertexBindingDivisors = pVertexBindingDivisors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfo && + setPVertexBindingDivisors( VertexInputBindingDivisorDescription const * pVertexBindingDivisors_ ) && + VULKAN_HPP_NOEXCEPT + { + pVertexBindingDivisors = pVertexBindingDivisors_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineVertexInputDivisorStateCreateInfo & + setVertexBindingDivisors( ArrayProxyNoTemporaries const & vertexBindingDivisors_ ) VULKAN_HPP_NOEXCEPT + { + vertexBindingDivisorCount = static_cast( vertexBindingDivisors_.size() ); + pVertexBindingDivisors = vertexBindingDivisors_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineVertexInputDivisorStateCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineVertexInputDivisorStateCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineVertexInputDivisorStateCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineVertexInputDivisorStateCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, vertexBindingDivisorCount, pVertexBindingDivisors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineVertexInputDivisorStateCreateInfo const & ) const = default; +#else + bool operator==( PipelineVertexInputDivisorStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( vertexBindingDivisorCount == rhs.vertexBindingDivisorCount ) && + ( pVertexBindingDivisors == rhs.pVertexBindingDivisors ); +# endif + } + + bool operator!=( PipelineVertexInputDivisorStateCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineVertexInputDivisorStateCreateInfo; + void const * pNext = {}; + uint32_t vertexBindingDivisorCount = {}; + VertexInputBindingDivisorDescription const * pVertexBindingDivisors = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineVertexInputDivisorStateCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineVertexInputDivisorStateCreateInfo; + }; + + using PipelineVertexInputDivisorStateCreateInfoEXT = PipelineVertexInputDivisorStateCreateInfo; + using PipelineVertexInputDivisorStateCreateInfoKHR = PipelineVertexInputDivisorStateCreateInfo; + + // wrapper struct for struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html + struct PipelineViewportCoarseSampleOrderStateCreateInfoNV + { + using NativeType = VkPipelineViewportCoarseSampleOrderStateCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportCoarseSampleOrderStateCreateInfoNV( CoarseSampleOrderTypeNV sampleOrderType_ = CoarseSampleOrderTypeNV::eDefault, + uint32_t customSampleOrderCount_ = {}, + CoarseSampleOrderCustomNV const * pCustomSampleOrders_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , sampleOrderType{ sampleOrderType_ } + , customSampleOrderCount{ customSampleOrderCount_ } + , pCustomSampleOrders{ pCustomSampleOrders_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineViewportCoarseSampleOrderStateCreateInfoNV( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportCoarseSampleOrderStateCreateInfoNV( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportCoarseSampleOrderStateCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportCoarseSampleOrderStateCreateInfoNV( CoarseSampleOrderTypeNV sampleOrderType_, + ArrayProxyNoTemporaries const & customSampleOrders_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , sampleOrderType( sampleOrderType_ ) + , customSampleOrderCount( static_cast( customSampleOrders_.size() ) ) + , pCustomSampleOrders( customSampleOrders_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineViewportCoarseSampleOrderStateCreateInfoNV & + operator=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineViewportCoarseSampleOrderStateCreateInfoNV & operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & setSampleOrderType( CoarseSampleOrderTypeNV sampleOrderType_ ) & + VULKAN_HPP_NOEXCEPT + { + sampleOrderType = sampleOrderType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV && setSampleOrderType( CoarseSampleOrderTypeNV sampleOrderType_ ) && + VULKAN_HPP_NOEXCEPT + { + sampleOrderType = sampleOrderType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & setCustomSampleOrderCount( uint32_t customSampleOrderCount_ ) & + VULKAN_HPP_NOEXCEPT + { + customSampleOrderCount = customSampleOrderCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV && setCustomSampleOrderCount( uint32_t customSampleOrderCount_ ) && + VULKAN_HPP_NOEXCEPT + { + customSampleOrderCount = customSampleOrderCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & + setPCustomSampleOrders( CoarseSampleOrderCustomNV const * pCustomSampleOrders_ ) & + VULKAN_HPP_NOEXCEPT + { + pCustomSampleOrders = pCustomSampleOrders_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV && + setPCustomSampleOrders( CoarseSampleOrderCustomNV const * pCustomSampleOrders_ ) && + VULKAN_HPP_NOEXCEPT + { + pCustomSampleOrders = pCustomSampleOrders_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportCoarseSampleOrderStateCreateInfoNV & + setCustomSampleOrders( ArrayProxyNoTemporaries const & customSampleOrders_ ) VULKAN_HPP_NOEXCEPT + { + customSampleOrderCount = static_cast( customSampleOrders_.size() ); + pCustomSampleOrders = customSampleOrders_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sampleOrderType, customSampleOrderCount, pCustomSampleOrders ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampleOrderType == rhs.sampleOrderType ) && + ( customSampleOrderCount == rhs.customSampleOrderCount ) && ( pCustomSampleOrders == rhs.pCustomSampleOrders ); +# endif + } + + bool operator!=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV; + void const * pNext = {}; + CoarseSampleOrderTypeNV sampleOrderType = CoarseSampleOrderTypeNV::eDefault; + uint32_t customSampleOrderCount = {}; + CoarseSampleOrderCustomNV const * pCustomSampleOrders = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineViewportCoarseSampleOrderStateCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineViewportCoarseSampleOrderStateCreateInfoNV; + }; + + // wrapper struct for struct VkPipelineViewportDepthClampControlCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineViewportDepthClampControlCreateInfoEXT.html + struct PipelineViewportDepthClampControlCreateInfoEXT + { + using NativeType = VkPipelineViewportDepthClampControlCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportDepthClampControlCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportDepthClampControlCreateInfoEXT( DepthClampModeEXT depthClampMode_ = DepthClampModeEXT::eViewportRange, + DepthClampRangeEXT const * pDepthClampRange_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthClampMode{ depthClampMode_ } + , pDepthClampRange{ pDepthClampRange_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineViewportDepthClampControlCreateInfoEXT( PipelineViewportDepthClampControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportDepthClampControlCreateInfoEXT( VkPipelineViewportDepthClampControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportDepthClampControlCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PipelineViewportDepthClampControlCreateInfoEXT & operator=( PipelineViewportDepthClampControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineViewportDepthClampControlCreateInfoEXT & operator=( VkPipelineViewportDepthClampControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClampControlCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClampControlCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClampControlCreateInfoEXT & setDepthClampMode( DepthClampModeEXT depthClampMode_ ) & VULKAN_HPP_NOEXCEPT + { + depthClampMode = depthClampMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClampControlCreateInfoEXT && setDepthClampMode( DepthClampModeEXT depthClampMode_ ) && VULKAN_HPP_NOEXCEPT + { + depthClampMode = depthClampMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClampControlCreateInfoEXT & setPDepthClampRange( DepthClampRangeEXT const * pDepthClampRange_ ) & + VULKAN_HPP_NOEXCEPT + { + pDepthClampRange = pDepthClampRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClampControlCreateInfoEXT && setPDepthClampRange( DepthClampRangeEXT const * pDepthClampRange_ ) && + VULKAN_HPP_NOEXCEPT + { + pDepthClampRange = pDepthClampRange_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineViewportDepthClampControlCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportDepthClampControlCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportDepthClampControlCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineViewportDepthClampControlCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthClampMode, pDepthClampRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportDepthClampControlCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineViewportDepthClampControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthClampMode == rhs.depthClampMode ) && ( pDepthClampRange == rhs.pDepthClampRange ); +# endif + } + + bool operator!=( PipelineViewportDepthClampControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineViewportDepthClampControlCreateInfoEXT; + void const * pNext = {}; + DepthClampModeEXT depthClampMode = DepthClampModeEXT::eViewportRange; + DepthClampRangeEXT const * pDepthClampRange = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineViewportDepthClampControlCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineViewportDepthClampControlCreateInfoEXT; + }; + + // wrapper struct for struct VkPipelineViewportDepthClipControlCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineViewportDepthClipControlCreateInfoEXT.html + struct PipelineViewportDepthClipControlCreateInfoEXT + { + using NativeType = VkPipelineViewportDepthClipControlCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportDepthClipControlCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportDepthClipControlCreateInfoEXT( Bool32 negativeOneToOne_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , negativeOneToOne{ negativeOneToOne_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineViewportDepthClipControlCreateInfoEXT( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportDepthClipControlCreateInfoEXT( VkPipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportDepthClipControlCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PipelineViewportDepthClipControlCreateInfoEXT & operator=( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineViewportDepthClipControlCreateInfoEXT & operator=( VkPipelineViewportDepthClipControlCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT & setNegativeOneToOne( Bool32 negativeOneToOne_ ) & VULKAN_HPP_NOEXCEPT + { + negativeOneToOne = negativeOneToOne_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportDepthClipControlCreateInfoEXT && setNegativeOneToOne( Bool32 negativeOneToOne_ ) && VULKAN_HPP_NOEXCEPT + { + negativeOneToOne = negativeOneToOne_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineViewportDepthClipControlCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportDepthClipControlCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportDepthClipControlCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineViewportDepthClipControlCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, negativeOneToOne ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportDepthClipControlCreateInfoEXT const & ) const = default; +#else + bool operator==( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( negativeOneToOne == rhs.negativeOneToOne ); +# endif + } + + bool operator!=( PipelineViewportDepthClipControlCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineViewportDepthClipControlCreateInfoEXT; + void const * pNext = {}; + Bool32 negativeOneToOne = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineViewportDepthClipControlCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineViewportDepthClipControlCreateInfoEXT; + }; + + // wrapper struct for struct VkPipelineViewportExclusiveScissorStateCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineViewportExclusiveScissorStateCreateInfoNV.html + struct PipelineViewportExclusiveScissorStateCreateInfoNV + { + using NativeType = VkPipelineViewportExclusiveScissorStateCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportExclusiveScissorStateCreateInfoNV( uint32_t exclusiveScissorCount_ = {}, + Rect2D const * pExclusiveScissors_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , exclusiveScissorCount{ exclusiveScissorCount_ } + , pExclusiveScissors{ pExclusiveScissors_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineViewportExclusiveScissorStateCreateInfoNV( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportExclusiveScissorStateCreateInfoNV( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportExclusiveScissorStateCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportExclusiveScissorStateCreateInfoNV( ArrayProxyNoTemporaries const & exclusiveScissors_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), exclusiveScissorCount( static_cast( exclusiveScissors_.size() ) ), pExclusiveScissors( exclusiveScissors_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineViewportExclusiveScissorStateCreateInfoNV & + operator=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineViewportExclusiveScissorStateCreateInfoNV & operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & setExclusiveScissorCount( uint32_t exclusiveScissorCount_ ) & + VULKAN_HPP_NOEXCEPT + { + exclusiveScissorCount = exclusiveScissorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV && setExclusiveScissorCount( uint32_t exclusiveScissorCount_ ) && + VULKAN_HPP_NOEXCEPT + { + exclusiveScissorCount = exclusiveScissorCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & setPExclusiveScissors( Rect2D const * pExclusiveScissors_ ) & + VULKAN_HPP_NOEXCEPT + { + pExclusiveScissors = pExclusiveScissors_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV && setPExclusiveScissors( Rect2D const * pExclusiveScissors_ ) && + VULKAN_HPP_NOEXCEPT + { + pExclusiveScissors = pExclusiveScissors_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportExclusiveScissorStateCreateInfoNV & + setExclusiveScissors( ArrayProxyNoTemporaries const & exclusiveScissors_ ) VULKAN_HPP_NOEXCEPT + { + exclusiveScissorCount = static_cast( exclusiveScissors_.size() ); + pExclusiveScissors = exclusiveScissors_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportExclusiveScissorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineViewportExclusiveScissorStateCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, exclusiveScissorCount, pExclusiveScissors ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportExclusiveScissorStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( exclusiveScissorCount == rhs.exclusiveScissorCount ) && + ( pExclusiveScissors == rhs.pExclusiveScissors ); +# endif + } + + bool operator!=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV; + void const * pNext = {}; + uint32_t exclusiveScissorCount = {}; + Rect2D const * pExclusiveScissors = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineViewportExclusiveScissorStateCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineViewportExclusiveScissorStateCreateInfoNV; + }; + + // wrapper struct for struct VkShadingRatePaletteNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShadingRatePaletteNV.html + struct ShadingRatePaletteNV + { + using NativeType = VkShadingRatePaletteNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV( uint32_t shadingRatePaletteEntryCount_ = {}, + ShadingRatePaletteEntryNV const * pShadingRatePaletteEntries_ = {} ) VULKAN_HPP_NOEXCEPT + : shadingRatePaletteEntryCount{ shadingRatePaletteEntryCount_ } + , pShadingRatePaletteEntries{ pShadingRatePaletteEntries_ } + { + } + + VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShadingRatePaletteNV( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT + : ShadingRatePaletteNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShadingRatePaletteNV( ArrayProxyNoTemporaries const & shadingRatePaletteEntries_ ) + : shadingRatePaletteEntryCount( static_cast( shadingRatePaletteEntries_.size() ) ) + , pShadingRatePaletteEntries( shadingRatePaletteEntries_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ShadingRatePaletteNV & operator=( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShadingRatePaletteNV & operator=( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV & setShadingRatePaletteEntryCount( uint32_t shadingRatePaletteEntryCount_ ) & VULKAN_HPP_NOEXCEPT + { + shadingRatePaletteEntryCount = shadingRatePaletteEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV && setShadingRatePaletteEntryCount( uint32_t shadingRatePaletteEntryCount_ ) && VULKAN_HPP_NOEXCEPT + { + shadingRatePaletteEntryCount = shadingRatePaletteEntryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV & setPShadingRatePaletteEntries( ShadingRatePaletteEntryNV const * pShadingRatePaletteEntries_ ) & + VULKAN_HPP_NOEXCEPT + { + pShadingRatePaletteEntries = pShadingRatePaletteEntries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV && setPShadingRatePaletteEntries( ShadingRatePaletteEntryNV const * pShadingRatePaletteEntries_ ) && + VULKAN_HPP_NOEXCEPT + { + pShadingRatePaletteEntries = pShadingRatePaletteEntries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShadingRatePaletteNV & + setShadingRatePaletteEntries( ArrayProxyNoTemporaries const & shadingRatePaletteEntries_ ) VULKAN_HPP_NOEXCEPT + { + shadingRatePaletteEntryCount = static_cast( shadingRatePaletteEntries_.size() ); + pShadingRatePaletteEntries = shadingRatePaletteEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkShadingRatePaletteNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShadingRatePaletteNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShadingRatePaletteNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShadingRatePaletteNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( shadingRatePaletteEntryCount, pShadingRatePaletteEntries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShadingRatePaletteNV const & ) const = default; +#else + bool operator==( ShadingRatePaletteNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( shadingRatePaletteEntryCount == rhs.shadingRatePaletteEntryCount ) && ( pShadingRatePaletteEntries == rhs.pShadingRatePaletteEntries ); +# endif + } + + bool operator!=( ShadingRatePaletteNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t shadingRatePaletteEntryCount = {}; + ShadingRatePaletteEntryNV const * pShadingRatePaletteEntries = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShadingRatePaletteNV; + }; +#endif + + // wrapper struct for struct VkPipelineViewportShadingRateImageStateCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html + struct PipelineViewportShadingRateImageStateCreateInfoNV + { + using NativeType = VkPipelineViewportShadingRateImageStateCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportShadingRateImageStateCreateInfoNV( Bool32 shadingRateImageEnable_ = {}, + uint32_t viewportCount_ = {}, + ShadingRatePaletteNV const * pShadingRatePalettes_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , shadingRateImageEnable{ shadingRateImageEnable_ } + , viewportCount{ viewportCount_ } + , pShadingRatePalettes{ pShadingRatePalettes_ } + { + } + + VULKAN_HPP_CONSTEXPR + PipelineViewportShadingRateImageStateCreateInfoNV( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportShadingRateImageStateCreateInfoNV( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportShadingRateImageStateCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportShadingRateImageStateCreateInfoNV( Bool32 shadingRateImageEnable_, + ArrayProxyNoTemporaries const & shadingRatePalettes_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , shadingRateImageEnable( shadingRateImageEnable_ ) + , viewportCount( static_cast( shadingRatePalettes_.size() ) ) + , pShadingRatePalettes( shadingRatePalettes_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineViewportShadingRateImageStateCreateInfoNV & + operator=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineViewportShadingRateImageStateCreateInfoNV & operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & setShadingRateImageEnable( Bool32 shadingRateImageEnable_ ) & + VULKAN_HPP_NOEXCEPT + { + shadingRateImageEnable = shadingRateImageEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV && setShadingRateImageEnable( Bool32 shadingRateImageEnable_ ) && + VULKAN_HPP_NOEXCEPT + { + shadingRateImageEnable = shadingRateImageEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) & VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV && setViewportCount( uint32_t viewportCount_ ) && VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & setPShadingRatePalettes( ShadingRatePaletteNV const * pShadingRatePalettes_ ) & + VULKAN_HPP_NOEXCEPT + { + pShadingRatePalettes = pShadingRatePalettes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV && + setPShadingRatePalettes( ShadingRatePaletteNV const * pShadingRatePalettes_ ) && + VULKAN_HPP_NOEXCEPT + { + pShadingRatePalettes = pShadingRatePalettes_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportShadingRateImageStateCreateInfoNV & + setShadingRatePalettes( ArrayProxyNoTemporaries const & shadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = static_cast( shadingRatePalettes_.size() ); + pShadingRatePalettes = shadingRatePalettes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineViewportShadingRateImageStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportShadingRateImageStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportShadingRateImageStateCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineViewportShadingRateImageStateCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, shadingRateImageEnable, viewportCount, pShadingRatePalettes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportShadingRateImageStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( shadingRateImageEnable == rhs.shadingRateImageEnable ) && + ( viewportCount == rhs.viewportCount ) && ( pShadingRatePalettes == rhs.pShadingRatePalettes ); +# endif + } + + bool operator!=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV; + void const * pNext = {}; + Bool32 shadingRateImageEnable = {}; + uint32_t viewportCount = {}; + ShadingRatePaletteNV const * pShadingRatePalettes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineViewportShadingRateImageStateCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineViewportShadingRateImageStateCreateInfoNV; + }; + + // wrapper struct for struct VkViewportSwizzleNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkViewportSwizzleNV.html + struct ViewportSwizzleNV + { + using NativeType = VkViewportSwizzleNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, + ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, + ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, + ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX ) VULKAN_HPP_NOEXCEPT + : x{ x_ } + , y{ y_ } + , z{ z_ } + , w{ w_ } + { + } + + VULKAN_HPP_CONSTEXPR ViewportSwizzleNV( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ViewportSwizzleNV( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT : ViewportSwizzleNV( *reinterpret_cast( &rhs ) ) {} + + ViewportSwizzleNV & operator=( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ViewportSwizzleNV & operator=( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setX( ViewportCoordinateSwizzleNV x_ ) & VULKAN_HPP_NOEXCEPT + { + x = x_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV && setX( ViewportCoordinateSwizzleNV x_ ) && VULKAN_HPP_NOEXCEPT + { + x = x_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setY( ViewportCoordinateSwizzleNV y_ ) & VULKAN_HPP_NOEXCEPT + { + y = y_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV && setY( ViewportCoordinateSwizzleNV y_ ) && VULKAN_HPP_NOEXCEPT + { + y = y_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setZ( ViewportCoordinateSwizzleNV z_ ) & VULKAN_HPP_NOEXCEPT + { + z = z_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV && setZ( ViewportCoordinateSwizzleNV z_ ) && VULKAN_HPP_NOEXCEPT + { + z = z_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & setW( ViewportCoordinateSwizzleNV w_ ) & VULKAN_HPP_NOEXCEPT + { + w = w_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV && setW( ViewportCoordinateSwizzleNV w_ ) && VULKAN_HPP_NOEXCEPT + { + w = w_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkViewportSwizzleNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkViewportSwizzleNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkViewportSwizzleNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkViewportSwizzleNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( x, y, z, w ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ViewportSwizzleNV const & ) const = default; +#else + bool operator==( ViewportSwizzleNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( x == rhs.x ) && ( y == rhs.y ) && ( z == rhs.z ) && ( w == rhs.w ); +# endif + } + + bool operator!=( ViewportSwizzleNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ViewportCoordinateSwizzleNV x = ViewportCoordinateSwizzleNV::ePositiveX; + ViewportCoordinateSwizzleNV y = ViewportCoordinateSwizzleNV::ePositiveX; + ViewportCoordinateSwizzleNV z = ViewportCoordinateSwizzleNV::ePositiveX; + ViewportCoordinateSwizzleNV w = ViewportCoordinateSwizzleNV::ePositiveX; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ViewportSwizzleNV; + }; +#endif + + // wrapper struct for struct VkPipelineViewportSwizzleStateCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineViewportSwizzleStateCreateInfoNV.html + struct PipelineViewportSwizzleStateCreateInfoNV + { + using NativeType = VkPipelineViewportSwizzleStateCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = {}, + uint32_t viewportCount_ = {}, + ViewportSwizzleNV const * pViewportSwizzles_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , viewportCount{ viewportCount_ } + , pViewportSwizzles{ pViewportSwizzles_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportSwizzleStateCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_, + ArrayProxyNoTemporaries const & viewportSwizzles_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), flags( flags_ ), viewportCount( static_cast( viewportSwizzles_.size() ) ), pViewportSwizzles( viewportSwizzles_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineViewportSwizzleStateCreateInfoNV & operator=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineViewportSwizzleStateCreateInfoNV & operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV && setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) & VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV && setViewportCount( uint32_t viewportCount_ ) && VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & setPViewportSwizzles( ViewportSwizzleNV const * pViewportSwizzles_ ) & + VULKAN_HPP_NOEXCEPT + { + pViewportSwizzles = pViewportSwizzles_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV && setPViewportSwizzles( ViewportSwizzleNV const * pViewportSwizzles_ ) && + VULKAN_HPP_NOEXCEPT + { + pViewportSwizzles = pViewportSwizzles_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportSwizzleStateCreateInfoNV & + setViewportSwizzles( ArrayProxyNoTemporaries const & viewportSwizzles_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = static_cast( viewportSwizzles_.size() ); + pViewportSwizzles = viewportSwizzles_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineViewportSwizzleStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportSwizzleStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportSwizzleStateCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineViewportSwizzleStateCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, viewportCount, pViewportSwizzles ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportSwizzleStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( viewportCount == rhs.viewportCount ) && + ( pViewportSwizzles == rhs.pViewportSwizzles ); +# endif + } + + bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV; + void const * pNext = {}; + PipelineViewportSwizzleStateCreateFlagsNV flags = {}; + uint32_t viewportCount = {}; + ViewportSwizzleNV const * pViewportSwizzles = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineViewportSwizzleStateCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineViewportSwizzleStateCreateInfoNV; + }; + + // wrapper struct for struct VkViewportWScalingNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkViewportWScalingNV.html + struct ViewportWScalingNV + { + using NativeType = VkViewportWScalingNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ViewportWScalingNV( float xcoeff_ = {}, float ycoeff_ = {} ) VULKAN_HPP_NOEXCEPT + : xcoeff{ xcoeff_ } + , ycoeff{ ycoeff_ } + { + } + + VULKAN_HPP_CONSTEXPR ViewportWScalingNV( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ViewportWScalingNV( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT : ViewportWScalingNV( *reinterpret_cast( &rhs ) ) {} + + ViewportWScalingNV & operator=( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ViewportWScalingNV & operator=( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & setXcoeff( float xcoeff_ ) & VULKAN_HPP_NOEXCEPT + { + xcoeff = xcoeff_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV && setXcoeff( float xcoeff_ ) && VULKAN_HPP_NOEXCEPT + { + xcoeff = xcoeff_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & setYcoeff( float ycoeff_ ) & VULKAN_HPP_NOEXCEPT + { + ycoeff = ycoeff_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV && setYcoeff( float ycoeff_ ) && VULKAN_HPP_NOEXCEPT + { + ycoeff = ycoeff_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkViewportWScalingNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkViewportWScalingNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkViewportWScalingNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkViewportWScalingNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( xcoeff, ycoeff ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ViewportWScalingNV const & ) const = default; +#else + bool operator==( ViewportWScalingNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( xcoeff == rhs.xcoeff ) && ( ycoeff == rhs.ycoeff ); +# endif + } + + bool operator!=( ViewportWScalingNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + float xcoeff = {}; + float ycoeff = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ViewportWScalingNV; + }; +#endif + + // wrapper struct for struct VkPipelineViewportWScalingStateCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPipelineViewportWScalingStateCreateInfoNV.html + struct PipelineViewportWScalingStateCreateInfoNV + { + using NativeType = VkPipelineViewportWScalingStateCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportWScalingStateCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = {}, + uint32_t viewportCount_ = {}, + ViewportWScalingNV const * pViewportWScalings_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , viewportWScalingEnable{ viewportWScalingEnable_ } + , viewportCount{ viewportCount_ } + , pViewportWScalings{ pViewportWScalings_ } + { + } + + VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PipelineViewportWScalingStateCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_, + ArrayProxyNoTemporaries const & viewportWScalings_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , viewportWScalingEnable( viewportWScalingEnable_ ) + , viewportCount( static_cast( viewportWScalings_.size() ) ) + , pViewportWScalings( viewportWScalings_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PipelineViewportWScalingStateCreateInfoNV & operator=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PipelineViewportWScalingStateCreateInfoNV & operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & setViewportWScalingEnable( Bool32 viewportWScalingEnable_ ) & VULKAN_HPP_NOEXCEPT + { + viewportWScalingEnable = viewportWScalingEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV && setViewportWScalingEnable( Bool32 viewportWScalingEnable_ ) && VULKAN_HPP_NOEXCEPT + { + viewportWScalingEnable = viewportWScalingEnable_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) & VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV && setViewportCount( uint32_t viewportCount_ ) && VULKAN_HPP_NOEXCEPT + { + viewportCount = viewportCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & setPViewportWScalings( ViewportWScalingNV const * pViewportWScalings_ ) & + VULKAN_HPP_NOEXCEPT + { + pViewportWScalings = pViewportWScalings_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV && setPViewportWScalings( ViewportWScalingNV const * pViewportWScalings_ ) && + VULKAN_HPP_NOEXCEPT + { + pViewportWScalings = pViewportWScalings_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PipelineViewportWScalingStateCreateInfoNV & + setViewportWScalings( ArrayProxyNoTemporaries const & viewportWScalings_ ) VULKAN_HPP_NOEXCEPT + { + viewportCount = static_cast( viewportWScalings_.size() ); + pViewportWScalings = viewportWScalings_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPipelineViewportWScalingStateCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportWScalingStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPipelineViewportWScalingStateCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPipelineViewportWScalingStateCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, viewportWScalingEnable, viewportCount, pViewportWScalings ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PipelineViewportWScalingStateCreateInfoNV const & ) const = default; +#else + bool operator==( PipelineViewportWScalingStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewportWScalingEnable == rhs.viewportWScalingEnable ) && + ( viewportCount == rhs.viewportCount ) && ( pViewportWScalings == rhs.pViewportWScalings ); +# endif + } + + bool operator!=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePipelineViewportWScalingStateCreateInfoNV; + void const * pNext = {}; + Bool32 viewportWScalingEnable = {}; + uint32_t viewportCount = {}; + ViewportWScalingNV const * pViewportWScalings = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PipelineViewportWScalingStateCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PipelineViewportWScalingStateCreateInfoNV; + }; + +#if defined( VK_USE_PLATFORM_GGP ) + // wrapper struct for struct VkPresentFrameTokenGGP, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentFrameTokenGGP.html + struct PresentFrameTokenGGP + { + using NativeType = VkPresentFrameTokenGGP; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentFrameTokenGGP; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( GgpFrameToken frameToken_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , frameToken{ frameToken_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentFrameTokenGGP( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentFrameTokenGGP( *reinterpret_cast( &rhs ) ) + { + } + + PresentFrameTokenGGP & operator=( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentFrameTokenGGP & operator=( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & setFrameToken( GgpFrameToken frameToken_ ) & VULKAN_HPP_NOEXCEPT + { + frameToken = frameToken_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP && setFrameToken( GgpFrameToken frameToken_ ) && VULKAN_HPP_NOEXCEPT + { + frameToken = frameToken_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentFrameTokenGGP const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentFrameTokenGGP &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentFrameTokenGGP const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentFrameTokenGGP *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, frameToken ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &frameToken, &rhs.frameToken, sizeof( GgpFrameToken ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &frameToken, &rhs.frameToken, sizeof( GgpFrameToken ) ) == 0 ); + } + + bool operator!=( PresentFrameTokenGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::ePresentFrameTokenGGP; + void const * pNext = {}; + GgpFrameToken frameToken = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentFrameTokenGGP; + }; +# endif + + template <> + struct CppType + { + using Type = PresentFrameTokenGGP; + }; +#endif /*VK_USE_PLATFORM_GGP*/ + + // wrapper struct for struct VkPresentId2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentId2KHR.html + struct PresentId2KHR + { + using NativeType = VkPresentId2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentId2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentId2KHR( uint32_t swapchainCount_ = {}, uint64_t const * pPresentIds_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchainCount{ swapchainCount_ } + , pPresentIds{ pPresentIds_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentId2KHR( PresentId2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentId2KHR( VkPresentId2KHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentId2KHR( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentId2KHR( ArrayProxyNoTemporaries const & presentIds_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), swapchainCount( static_cast( presentIds_.size() ) ), pPresentIds( presentIds_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PresentId2KHR & operator=( PresentId2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentId2KHR & operator=( VkPresentId2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentId2KHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentId2KHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentId2KHR & setSwapchainCount( uint32_t swapchainCount_ ) & VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentId2KHR && setSwapchainCount( uint32_t swapchainCount_ ) && VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentId2KHR & setPPresentIds( uint64_t const * pPresentIds_ ) & VULKAN_HPP_NOEXCEPT + { + pPresentIds = pPresentIds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentId2KHR && setPPresentIds( uint64_t const * pPresentIds_ ) && VULKAN_HPP_NOEXCEPT + { + pPresentIds = pPresentIds_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentId2KHR & setPresentIds( ArrayProxyNoTemporaries const & presentIds_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( presentIds_.size() ); + pPresentIds = presentIds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentId2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentId2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentId2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentId2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pPresentIds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentId2KHR const & ) const = default; +#else + bool operator==( PresentId2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pPresentIds == rhs.pPresentIds ); +# endif + } + + bool operator!=( PresentId2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePresentId2KHR; + void const * pNext = {}; + uint32_t swapchainCount = {}; + uint64_t const * pPresentIds = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentId2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = PresentId2KHR; + }; + + // wrapper struct for struct VkPresentIdKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentIdKHR.html + struct PresentIdKHR + { + using NativeType = VkPresentIdKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentIdKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentIdKHR( uint32_t swapchainCount_ = {}, uint64_t const * pPresentIds_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchainCount{ swapchainCount_ } + , pPresentIds{ pPresentIds_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentIdKHR( PresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentIdKHR( VkPresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentIdKHR( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentIdKHR( ArrayProxyNoTemporaries const & presentIds_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), swapchainCount( static_cast( presentIds_.size() ) ), pPresentIds( presentIds_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PresentIdKHR & operator=( PresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentIdKHR & operator=( VkPresentIdKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentIdKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setSwapchainCount( uint32_t swapchainCount_ ) & VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentIdKHR && setSwapchainCount( uint32_t swapchainCount_ ) && VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentIdKHR & setPPresentIds( uint64_t const * pPresentIds_ ) & VULKAN_HPP_NOEXCEPT + { + pPresentIds = pPresentIds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentIdKHR && setPPresentIds( uint64_t const * pPresentIds_ ) && VULKAN_HPP_NOEXCEPT + { + pPresentIds = pPresentIds_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentIdKHR & setPresentIds( ArrayProxyNoTemporaries const & presentIds_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( presentIds_.size() ); + pPresentIds = presentIds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentIdKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentIdKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentIdKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentIdKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pPresentIds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentIdKHR const & ) const = default; +#else + bool operator==( PresentIdKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pPresentIds == rhs.pPresentIds ); +# endif + } + + bool operator!=( PresentIdKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePresentIdKHR; + void const * pNext = {}; + uint32_t swapchainCount = {}; + uint64_t const * pPresentIds = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentIdKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PresentIdKHR; + }; + + // wrapper struct for struct VkPresentInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentInfoKHR.html + struct PresentInfoKHR + { + using NativeType = VkPresentInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentInfoKHR( uint32_t waitSemaphoreCount_ = {}, + Semaphore const * pWaitSemaphores_ = {}, + uint32_t swapchainCount_ = {}, + SwapchainKHR const * pSwapchains_ = {}, + uint32_t const * pImageIndices_ = {}, + Result * pResults_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , waitSemaphoreCount{ waitSemaphoreCount_ } + , pWaitSemaphores{ pWaitSemaphores_ } + , swapchainCount{ swapchainCount_ } + , pSwapchains{ pSwapchains_ } + , pImageIndices{ pImageIndices_ } + , pResults{ pResults_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentInfoKHR( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentInfoKHR( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentInfoKHR( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentInfoKHR( ArrayProxyNoTemporaries const & waitSemaphores_, + ArrayProxyNoTemporaries const & swapchains_ = {}, + ArrayProxyNoTemporaries const & imageIndices_ = {}, + ArrayProxyNoTemporaries const & results_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , waitSemaphoreCount( static_cast( waitSemaphores_.size() ) ) + , pWaitSemaphores( waitSemaphores_.data() ) + , swapchainCount( static_cast( swapchains_.size() ) ) + , pSwapchains( swapchains_.data() ) + , pImageIndices( imageIndices_.data() ) + , pResults( results_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( swapchains_.size() == imageIndices_.size() ); + VULKAN_HPP_ASSERT( results_.empty() || ( swapchains_.size() == results_.size() ) ); + VULKAN_HPP_ASSERT( results_.empty() || ( imageIndices_.size() == results_.size() ) ); +# else + if ( swapchains_.size() != imageIndices_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::PresentInfoKHR::PresentInfoKHR: swapchains_.size() != imageIndices_.size()" ); + } + if ( !results_.empty() && ( swapchains_.size() != results_.size() ) ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( swapchains_.size() != results_.size() )" ); + } + if ( !results_.empty() && ( imageIndices_.size() != results_.size() ) ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::PresentInfoKHR::PresentInfoKHR: !results_.empty() && ( imageIndices_.size() != results_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PresentInfoKHR & operator=( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentInfoKHR & operator=( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) & VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR && setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) && VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPWaitSemaphores( Semaphore const * pWaitSemaphores_ ) & VULKAN_HPP_NOEXCEPT + { + pWaitSemaphores = pWaitSemaphores_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR && setPWaitSemaphores( Semaphore const * pWaitSemaphores_ ) && VULKAN_HPP_NOEXCEPT + { + pWaitSemaphores = pWaitSemaphores_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentInfoKHR & setWaitSemaphores( ArrayProxyNoTemporaries const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = static_cast( waitSemaphores_.size() ); + pWaitSemaphores = waitSemaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) & VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR && setSwapchainCount( uint32_t swapchainCount_ ) && VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPSwapchains( SwapchainKHR const * pSwapchains_ ) & VULKAN_HPP_NOEXCEPT + { + pSwapchains = pSwapchains_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR && setPSwapchains( SwapchainKHR const * pSwapchains_ ) && VULKAN_HPP_NOEXCEPT + { + pSwapchains = pSwapchains_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentInfoKHR & setSwapchains( ArrayProxyNoTemporaries const & swapchains_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( swapchains_.size() ); + pSwapchains = swapchains_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPImageIndices( uint32_t const * pImageIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pImageIndices = pImageIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR && setPImageIndices( uint32_t const * pImageIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pImageIndices = pImageIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentInfoKHR & setImageIndices( ArrayProxyNoTemporaries const & imageIndices_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( imageIndices_.size() ); + pImageIndices = imageIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & setPResults( Result * pResults_ ) & VULKAN_HPP_NOEXCEPT + { + pResults = pResults_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR && setPResults( Result * pResults_ ) && VULKAN_HPP_NOEXCEPT + { + pResults = pResults_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentInfoKHR & setResults( ArrayProxyNoTemporaries const & results_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( results_.size() ); + pResults = results_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, waitSemaphoreCount, pWaitSemaphores, swapchainCount, pSwapchains, pImageIndices, pResults ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentInfoKHR const & ) const = default; +#else + bool operator==( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) && + ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( swapchainCount == rhs.swapchainCount ) && ( pSwapchains == rhs.pSwapchains ) && + ( pImageIndices == rhs.pImageIndices ) && ( pResults == rhs.pResults ); +# endif + } + + bool operator!=( PresentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePresentInfoKHR; + void const * pNext = {}; + uint32_t waitSemaphoreCount = {}; + Semaphore const * pWaitSemaphores = {}; + uint32_t swapchainCount = {}; + SwapchainKHR const * pSwapchains = {}; + uint32_t const * pImageIndices = {}; + Result * pResults = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PresentInfoKHR; + }; + + // wrapper struct for struct VkRectLayerKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRectLayerKHR.html + struct RectLayerKHR + { + using NativeType = VkRectLayerKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RectLayerKHR( Offset2D offset_ = {}, Extent2D extent_ = {}, uint32_t layer_ = {} ) VULKAN_HPP_NOEXCEPT + : offset{ offset_ } + , extent{ extent_ } + , layer{ layer_ } + { + } + + VULKAN_HPP_CONSTEXPR RectLayerKHR( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RectLayerKHR( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT : RectLayerKHR( *reinterpret_cast( &rhs ) ) {} + + explicit RectLayerKHR( Rect2D const & rect2D, uint32_t layer_ = {} ) : offset( rect2D.offset ), extent( rect2D.extent ), layer( layer_ ) {} + + RectLayerKHR & operator=( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RectLayerKHR & operator=( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setOffset( Offset2D const & offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RectLayerKHR && setOffset( Offset2D const & offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setExtent( Extent2D const & extent_ ) & VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RectLayerKHR && setExtent( Extent2D const & extent_ ) && VULKAN_HPP_NOEXCEPT + { + extent = extent_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & setLayer( uint32_t layer_ ) & VULKAN_HPP_NOEXCEPT + { + layer = layer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RectLayerKHR && setLayer( uint32_t layer_ ) && VULKAN_HPP_NOEXCEPT + { + layer = layer_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRectLayerKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRectLayerKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRectLayerKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRectLayerKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( offset, extent, layer ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RectLayerKHR const & ) const = default; +#else + bool operator==( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( offset == rhs.offset ) && ( extent == rhs.extent ) && ( layer == rhs.layer ); +# endif + } + + bool operator!=( RectLayerKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Offset2D offset = {}; + Extent2D extent = {}; + uint32_t layer = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RectLayerKHR; + }; +#endif + + // wrapper struct for struct VkPresentRegionKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentRegionKHR.html + struct PresentRegionKHR + { + using NativeType = VkPresentRegionKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentRegionKHR( uint32_t rectangleCount_ = {}, RectLayerKHR const * pRectangles_ = {} ) VULKAN_HPP_NOEXCEPT + : rectangleCount{ rectangleCount_ } + , pRectangles{ pRectangles_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentRegionKHR( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentRegionKHR( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentRegionKHR( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentRegionKHR( ArrayProxyNoTemporaries const & rectangles_ ) + : rectangleCount( static_cast( rectangles_.size() ) ), pRectangles( rectangles_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PresentRegionKHR & operator=( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentRegionKHR & operator=( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & setRectangleCount( uint32_t rectangleCount_ ) & VULKAN_HPP_NOEXCEPT + { + rectangleCount = rectangleCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR && setRectangleCount( uint32_t rectangleCount_ ) && VULKAN_HPP_NOEXCEPT + { + rectangleCount = rectangleCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & setPRectangles( RectLayerKHR const * pRectangles_ ) & VULKAN_HPP_NOEXCEPT + { + pRectangles = pRectangles_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR && setPRectangles( RectLayerKHR const * pRectangles_ ) && VULKAN_HPP_NOEXCEPT + { + pRectangles = pRectangles_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentRegionKHR & setRectangles( ArrayProxyNoTemporaries const & rectangles_ ) VULKAN_HPP_NOEXCEPT + { + rectangleCount = static_cast( rectangles_.size() ); + pRectangles = rectangles_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentRegionKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentRegionKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentRegionKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentRegionKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( rectangleCount, pRectangles ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentRegionKHR const & ) const = default; +#else + bool operator==( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( rectangleCount == rhs.rectangleCount ) && ( pRectangles == rhs.pRectangles ); +# endif + } + + bool operator!=( PresentRegionKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t rectangleCount = {}; + RectLayerKHR const * pRectangles = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentRegionKHR; + }; +#endif + + // wrapper struct for struct VkPresentRegionsKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentRegionsKHR.html + struct PresentRegionsKHR + { + using NativeType = VkPresentRegionsKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentRegionsKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PresentRegionsKHR( uint32_t swapchainCount_ = {}, PresentRegionKHR const * pRegions_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchainCount{ swapchainCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentRegionsKHR( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentRegionsKHR( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentRegionsKHR( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentRegionsKHR( ArrayProxyNoTemporaries const & regions_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), swapchainCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PresentRegionsKHR & operator=( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentRegionsKHR & operator=( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setSwapchainCount( uint32_t swapchainCount_ ) & VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR && setSwapchainCount( uint32_t swapchainCount_ ) && VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & setPRegions( PresentRegionKHR const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR && setPRegions( PresentRegionKHR const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentRegionsKHR & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentRegionsKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentRegionsKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentRegionsKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentRegionsKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentRegionsKHR const & ) const = default; +#else + bool operator==( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( PresentRegionsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePresentRegionsKHR; + void const * pNext = {}; + uint32_t swapchainCount = {}; + PresentRegionKHR const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentRegionsKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PresentRegionsKHR; + }; + + // wrapper struct for struct VkPresentTimeGOOGLE, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentTimeGOOGLE.html + struct PresentTimeGOOGLE + { + using NativeType = VkPresentTimeGOOGLE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( uint32_t presentID_ = {}, uint64_t desiredPresentTime_ = {} ) VULKAN_HPP_NOEXCEPT + : presentID{ presentID_ } + , desiredPresentTime{ desiredPresentTime_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentTimeGOOGLE( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT : PresentTimeGOOGLE( *reinterpret_cast( &rhs ) ) {} + + PresentTimeGOOGLE & operator=( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentTimeGOOGLE & operator=( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & setPresentID( uint32_t presentID_ ) & VULKAN_HPP_NOEXCEPT + { + presentID = presentID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE && setPresentID( uint32_t presentID_ ) && VULKAN_HPP_NOEXCEPT + { + presentID = presentID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & setDesiredPresentTime( uint64_t desiredPresentTime_ ) & VULKAN_HPP_NOEXCEPT + { + desiredPresentTime = desiredPresentTime_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE && setDesiredPresentTime( uint64_t desiredPresentTime_ ) && VULKAN_HPP_NOEXCEPT + { + desiredPresentTime = desiredPresentTime_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentTimeGOOGLE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentTimeGOOGLE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentTimeGOOGLE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentTimeGOOGLE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( presentID, desiredPresentTime ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentTimeGOOGLE const & ) const = default; +#else + bool operator==( PresentTimeGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( presentID == rhs.presentID ) && ( desiredPresentTime == rhs.desiredPresentTime ); +# endif + } + + bool operator!=( PresentTimeGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t presentID = {}; + uint64_t desiredPresentTime = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentTimeGOOGLE; + }; +#endif + + // wrapper struct for struct VkPresentTimesInfoGOOGLE, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentTimesInfoGOOGLE.html + struct PresentTimesInfoGOOGLE + { + using NativeType = VkPresentTimesInfoGOOGLE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentTimesInfoGOOGLE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = {}, PresentTimeGOOGLE const * pTimes_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchainCount{ swapchainCount_ } + , pTimes{ pTimes_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentTimesInfoGOOGLE( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentTimesInfoGOOGLE( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentTimesInfoGOOGLE( ArrayProxyNoTemporaries const & times_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), swapchainCount( static_cast( times_.size() ) ), pTimes( times_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PresentTimesInfoGOOGLE & operator=( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentTimesInfoGOOGLE & operator=( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setSwapchainCount( uint32_t swapchainCount_ ) & VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE && setSwapchainCount( uint32_t swapchainCount_ ) && VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & setPTimes( PresentTimeGOOGLE const * pTimes_ ) & VULKAN_HPP_NOEXCEPT + { + pTimes = pTimes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE && setPTimes( PresentTimeGOOGLE const * pTimes_ ) && VULKAN_HPP_NOEXCEPT + { + pTimes = pTimes_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentTimesInfoGOOGLE & setTimes( ArrayProxyNoTemporaries const & times_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( times_.size() ); + pTimes = times_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentTimesInfoGOOGLE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentTimesInfoGOOGLE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentTimesInfoGOOGLE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentTimesInfoGOOGLE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pTimes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentTimesInfoGOOGLE const & ) const = default; +#else + bool operator==( PresentTimesInfoGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pTimes == rhs.pTimes ); +# endif + } + + bool operator!=( PresentTimesInfoGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePresentTimesInfoGOOGLE; + void const * pNext = {}; + uint32_t swapchainCount = {}; + PresentTimeGOOGLE const * pTimes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentTimesInfoGOOGLE; + }; +#endif + + template <> + struct CppType + { + using Type = PresentTimesInfoGOOGLE; + }; + + // wrapper struct for struct VkPresentTimingInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentTimingInfoEXT.html + struct PresentTimingInfoEXT + { + using NativeType = VkPresentTimingInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentTimingInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentTimingInfoEXT( PresentTimingInfoFlagsEXT flags_ = {}, + uint64_t targetTime_ = {}, + uint64_t timeDomainId_ = {}, + PresentStageFlagsEXT presentStageQueries_ = {}, + PresentStageFlagsEXT targetTimeDomainPresentStage_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , targetTime{ targetTime_ } + , timeDomainId{ timeDomainId_ } + , presentStageQueries{ presentStageQueries_ } + , targetTimeDomainPresentStage{ targetTimeDomainPresentStage_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentTimingInfoEXT( PresentTimingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentTimingInfoEXT( VkPresentTimingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentTimingInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + PresentTimingInfoEXT & operator=( PresentTimingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentTimingInfoEXT & operator=( VkPresentTimingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT & setFlags( PresentTimingInfoFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT && setFlags( PresentTimingInfoFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT & setTargetTime( uint64_t targetTime_ ) & VULKAN_HPP_NOEXCEPT + { + targetTime = targetTime_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT && setTargetTime( uint64_t targetTime_ ) && VULKAN_HPP_NOEXCEPT + { + targetTime = targetTime_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT & setTimeDomainId( uint64_t timeDomainId_ ) & VULKAN_HPP_NOEXCEPT + { + timeDomainId = timeDomainId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT && setTimeDomainId( uint64_t timeDomainId_ ) && VULKAN_HPP_NOEXCEPT + { + timeDomainId = timeDomainId_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT & setPresentStageQueries( PresentStageFlagsEXT presentStageQueries_ ) & VULKAN_HPP_NOEXCEPT + { + presentStageQueries = presentStageQueries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT && setPresentStageQueries( PresentStageFlagsEXT presentStageQueries_ ) && VULKAN_HPP_NOEXCEPT + { + presentStageQueries = presentStageQueries_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT & setTargetTimeDomainPresentStage( PresentStageFlagsEXT targetTimeDomainPresentStage_ ) & VULKAN_HPP_NOEXCEPT + { + targetTimeDomainPresentStage = targetTimeDomainPresentStage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingInfoEXT && setTargetTimeDomainPresentStage( PresentStageFlagsEXT targetTimeDomainPresentStage_ ) && VULKAN_HPP_NOEXCEPT + { + targetTimeDomainPresentStage = targetTimeDomainPresentStage_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentTimingInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentTimingInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentTimingInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentTimingInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, targetTime, timeDomainId, presentStageQueries, targetTimeDomainPresentStage ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentTimingInfoEXT const & ) const = default; +#else + bool operator==( PresentTimingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( targetTime == rhs.targetTime ) && + ( timeDomainId == rhs.timeDomainId ) && ( presentStageQueries == rhs.presentStageQueries ) && + ( targetTimeDomainPresentStage == rhs.targetTimeDomainPresentStage ); +# endif + } + + bool operator!=( PresentTimingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePresentTimingInfoEXT; + void const * pNext = {}; + PresentTimingInfoFlagsEXT flags = {}; + uint64_t targetTime = {}; + uint64_t timeDomainId = {}; + PresentStageFlagsEXT presentStageQueries = {}; + PresentStageFlagsEXT targetTimeDomainPresentStage = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentTimingInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PresentTimingInfoEXT; + }; + + // wrapper struct for struct VkPresentTimingSurfaceCapabilitiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentTimingSurfaceCapabilitiesEXT.html + struct PresentTimingSurfaceCapabilitiesEXT + { + using NativeType = VkPresentTimingSurfaceCapabilitiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentTimingSurfaceCapabilitiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentTimingSurfaceCapabilitiesEXT( Bool32 presentTimingSupported_ = {}, + Bool32 presentAtAbsoluteTimeSupported_ = {}, + Bool32 presentAtRelativeTimeSupported_ = {}, + PresentStageFlagsEXT presentStageQueries_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentTimingSupported{ presentTimingSupported_ } + , presentAtAbsoluteTimeSupported{ presentAtAbsoluteTimeSupported_ } + , presentAtRelativeTimeSupported{ presentAtRelativeTimeSupported_ } + , presentStageQueries{ presentStageQueries_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentTimingSurfaceCapabilitiesEXT( PresentTimingSurfaceCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentTimingSurfaceCapabilitiesEXT( VkPresentTimingSurfaceCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentTimingSurfaceCapabilitiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + PresentTimingSurfaceCapabilitiesEXT & operator=( PresentTimingSurfaceCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentTimingSurfaceCapabilitiesEXT & operator=( VkPresentTimingSurfaceCapabilitiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkPresentTimingSurfaceCapabilitiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentTimingSurfaceCapabilitiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentTimingSurfaceCapabilitiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentTimingSurfaceCapabilitiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentTimingSupported, presentAtAbsoluteTimeSupported, presentAtRelativeTimeSupported, presentStageQueries ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentTimingSurfaceCapabilitiesEXT const & ) const = default; +#else + bool operator==( PresentTimingSurfaceCapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentTimingSupported == rhs.presentTimingSupported ) && + ( presentAtAbsoluteTimeSupported == rhs.presentAtAbsoluteTimeSupported ) && + ( presentAtRelativeTimeSupported == rhs.presentAtRelativeTimeSupported ) && ( presentStageQueries == rhs.presentStageQueries ); +# endif + } + + bool operator!=( PresentTimingSurfaceCapabilitiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePresentTimingSurfaceCapabilitiesEXT; + void * pNext = {}; + Bool32 presentTimingSupported = {}; + Bool32 presentAtAbsoluteTimeSupported = {}; + Bool32 presentAtRelativeTimeSupported = {}; + PresentStageFlagsEXT presentStageQueries = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentTimingSurfaceCapabilitiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PresentTimingSurfaceCapabilitiesEXT; + }; + + // wrapper struct for struct VkPresentTimingsInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentTimingsInfoEXT.html + struct PresentTimingsInfoEXT + { + using NativeType = VkPresentTimingsInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentTimingsInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + PresentTimingsInfoEXT( uint32_t swapchainCount_ = {}, PresentTimingInfoEXT const * pTimingInfos_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchainCount{ swapchainCount_ } + , pTimingInfos{ pTimingInfos_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentTimingsInfoEXT( PresentTimingsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentTimingsInfoEXT( VkPresentTimingsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : PresentTimingsInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentTimingsInfoEXT( ArrayProxyNoTemporaries const & timingInfos_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), swapchainCount( static_cast( timingInfos_.size() ) ), pTimingInfos( timingInfos_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PresentTimingsInfoEXT & operator=( PresentTimingsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentTimingsInfoEXT & operator=( VkPresentTimingsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentTimingsInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingsInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingsInfoEXT & setSwapchainCount( uint32_t swapchainCount_ ) & VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingsInfoEXT && setSwapchainCount( uint32_t swapchainCount_ ) && VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingsInfoEXT & setPTimingInfos( PresentTimingInfoEXT const * pTimingInfos_ ) & VULKAN_HPP_NOEXCEPT + { + pTimingInfos = pTimingInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentTimingsInfoEXT && setPTimingInfos( PresentTimingInfoEXT const * pTimingInfos_ ) && VULKAN_HPP_NOEXCEPT + { + pTimingInfos = pTimingInfos_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PresentTimingsInfoEXT & setTimingInfos( ArrayProxyNoTemporaries const & timingInfos_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( timingInfos_.size() ); + pTimingInfos = timingInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentTimingsInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentTimingsInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentTimingsInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentTimingsInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pTimingInfos ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentTimingsInfoEXT const & ) const = default; +#else + bool operator==( PresentTimingsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pTimingInfos == rhs.pTimingInfos ); +# endif + } + + bool operator!=( PresentTimingsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePresentTimingsInfoEXT; + void const * pNext = {}; + uint32_t swapchainCount = {}; + PresentTimingInfoEXT const * pTimingInfos = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentTimingsInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PresentTimingsInfoEXT; + }; + + // wrapper struct for struct VkPresentWait2InfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPresentWait2InfoKHR.html + struct PresentWait2InfoKHR + { + using NativeType = VkPresentWait2InfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentWait2InfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PresentWait2InfoKHR( uint64_t presentId_ = {}, uint64_t timeout_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentId{ presentId_ } + , timeout{ timeout_ } + { + } + + VULKAN_HPP_CONSTEXPR PresentWait2InfoKHR( PresentWait2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PresentWait2InfoKHR( VkPresentWait2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : PresentWait2InfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + PresentWait2InfoKHR & operator=( PresentWait2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PresentWait2InfoKHR & operator=( VkPresentWait2InfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PresentWait2InfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentWait2InfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentWait2InfoKHR & setPresentId( uint64_t presentId_ ) & VULKAN_HPP_NOEXCEPT + { + presentId = presentId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentWait2InfoKHR && setPresentId( uint64_t presentId_ ) && VULKAN_HPP_NOEXCEPT + { + presentId = presentId_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PresentWait2InfoKHR & setTimeout( uint64_t timeout_ ) & VULKAN_HPP_NOEXCEPT + { + timeout = timeout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PresentWait2InfoKHR && setTimeout( uint64_t timeout_ ) && VULKAN_HPP_NOEXCEPT + { + timeout = timeout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPresentWait2InfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentWait2InfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPresentWait2InfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPresentWait2InfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentId, timeout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PresentWait2InfoKHR const & ) const = default; +#else + bool operator==( PresentWait2InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentId == rhs.presentId ) && ( timeout == rhs.timeout ); +# endif + } + + bool operator!=( PresentWait2InfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePresentWait2InfoKHR; + void const * pNext = {}; + uint64_t presentId = {}; + uint64_t timeout = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PresentWait2InfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = PresentWait2InfoKHR; + }; + + // wrapper struct for struct VkPrivateDataSlotCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPrivateDataSlotCreateInfo.html + struct PrivateDataSlotCreateInfo + { + using NativeType = VkPrivateDataSlotCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePrivateDataSlotCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfo( PrivateDataSlotCreateFlags flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfo( PrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PrivateDataSlotCreateInfo( VkPrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PrivateDataSlotCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PrivateDataSlotCreateInfo & operator=( PrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PrivateDataSlotCreateInfo & operator=( VkPrivateDataSlotCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo & setFlags( PrivateDataSlotCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfo && setFlags( PrivateDataSlotCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPrivateDataSlotCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPrivateDataSlotCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPrivateDataSlotCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPrivateDataSlotCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PrivateDataSlotCreateInfo const & ) const = default; +#else + bool operator==( PrivateDataSlotCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( PrivateDataSlotCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePrivateDataSlotCreateInfo; + void const * pNext = {}; + PrivateDataSlotCreateFlags flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PrivateDataSlotCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PrivateDataSlotCreateInfo; + }; + + using PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo; + + // wrapper struct for struct VkProtectedSubmitInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkProtectedSubmitInfo.html + struct ProtectedSubmitInfo + { + using NativeType = VkProtectedSubmitInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eProtectedSubmitInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( Bool32 protectedSubmit_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , protectedSubmit{ protectedSubmit_ } + { + } + + VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : ProtectedSubmitInfo( *reinterpret_cast( &rhs ) ) + { + } + + ProtectedSubmitInfo & operator=( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ProtectedSubmitInfo & operator=( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & setProtectedSubmit( Bool32 protectedSubmit_ ) & VULKAN_HPP_NOEXCEPT + { + protectedSubmit = protectedSubmit_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo && setProtectedSubmit( Bool32 protectedSubmit_ ) && VULKAN_HPP_NOEXCEPT + { + protectedSubmit = protectedSubmit_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkProtectedSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkProtectedSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkProtectedSubmitInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkProtectedSubmitInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, protectedSubmit ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ProtectedSubmitInfo const & ) const = default; +#else + bool operator==( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( protectedSubmit == rhs.protectedSubmit ); +# endif + } + + bool operator!=( ProtectedSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eProtectedSubmitInfo; + void const * pNext = {}; + Bool32 protectedSubmit = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ProtectedSubmitInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ProtectedSubmitInfo; + }; + + // wrapper struct for struct VkPushConstantBankInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPushConstantBankInfoNV.html + struct PushConstantBankInfoNV + { + using NativeType = VkPushConstantBankInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePushConstantBankInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PushConstantBankInfoNV( uint32_t bank_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , bank{ bank_ } + { + } + + VULKAN_HPP_CONSTEXPR PushConstantBankInfoNV( PushConstantBankInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PushConstantBankInfoNV( VkPushConstantBankInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : PushConstantBankInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + PushConstantBankInfoNV & operator=( PushConstantBankInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PushConstantBankInfoNV & operator=( VkPushConstantBankInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PushConstantBankInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantBankInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantBankInfoNV & setBank( uint32_t bank_ ) & VULKAN_HPP_NOEXCEPT + { + bank = bank_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantBankInfoNV && setBank( uint32_t bank_ ) && VULKAN_HPP_NOEXCEPT + { + bank = bank_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPushConstantBankInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushConstantBankInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushConstantBankInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPushConstantBankInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, bank ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PushConstantBankInfoNV const & ) const = default; +#else + bool operator==( PushConstantBankInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( bank == rhs.bank ); +# endif + } + + bool operator!=( PushConstantBankInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePushConstantBankInfoNV; + void const * pNext = {}; + uint32_t bank = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PushConstantBankInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = PushConstantBankInfoNV; + }; + + // wrapper struct for struct VkPushConstantsInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPushConstantsInfo.html + struct PushConstantsInfo + { + using NativeType = VkPushConstantsInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePushConstantsInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PushConstantsInfo( PipelineLayout layout_ = {}, + ShaderStageFlags stageFlags_ = {}, + uint32_t offset_ = {}, + uint32_t size_ = {}, + void const * pValues_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , layout{ layout_ } + , stageFlags{ stageFlags_ } + , offset{ offset_ } + , size{ size_ } + , pValues{ pValues_ } + { + } + + VULKAN_HPP_CONSTEXPR PushConstantsInfo( PushConstantsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PushConstantsInfo( VkPushConstantsInfo const & rhs ) VULKAN_HPP_NOEXCEPT : PushConstantsInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + PushConstantsInfo( + PipelineLayout layout_, ShaderStageFlags stageFlags_, uint32_t offset_, ArrayProxyNoTemporaries const & values_, void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , layout( layout_ ) + , stageFlags( stageFlags_ ) + , offset( offset_ ) + , size( static_cast( values_.size() * sizeof( T ) ) ) + , pValues( values_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PushConstantsInfo & operator=( PushConstantsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PushConstantsInfo & operator=( VkPushConstantsInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setStageFlags( ShaderStageFlags stageFlags_ ) & VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo && setStageFlags( ShaderStageFlags stageFlags_ ) && VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setOffset( uint32_t offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo && setOffset( uint32_t offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setSize( uint32_t size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo && setSize( uint32_t size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo & setPValues( void const * pValues_ ) & VULKAN_HPP_NOEXCEPT + { + pValues = pValues_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushConstantsInfo && setPValues( void const * pValues_ ) && VULKAN_HPP_NOEXCEPT + { + pValues = pValues_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + PushConstantsInfo & setValues( ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT + { + size = static_cast( values_.size() * sizeof( T ) ); + pValues = values_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPushConstantsInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushConstantsInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushConstantsInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPushConstantsInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, layout, stageFlags, offset, size, pValues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PushConstantsInfo const & ) const = default; +#else + bool operator==( PushConstantsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( layout == rhs.layout ) && ( stageFlags == rhs.stageFlags ) && ( offset == rhs.offset ) && + ( size == rhs.size ) && ( pValues == rhs.pValues ); +# endif + } + + bool operator!=( PushConstantsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePushConstantsInfo; + void const * pNext = {}; + PipelineLayout layout = {}; + ShaderStageFlags stageFlags = {}; + uint32_t offset = {}; + uint32_t size = {}; + void const * pValues = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PushConstantsInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PushConstantsInfo; + }; + + using PushConstantsInfoKHR = PushConstantsInfo; + + // wrapper struct for struct VkPushDataInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPushDataInfoEXT.html + struct PushDataInfoEXT + { + using NativeType = VkPushDataInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePushDataInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PushDataInfoEXT( uint32_t offset_ = {}, HostAddressRangeConstEXT data_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , offset{ offset_ } + , data{ data_ } + { + } + + VULKAN_HPP_CONSTEXPR PushDataInfoEXT( PushDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PushDataInfoEXT( VkPushDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : PushDataInfoEXT( *reinterpret_cast( &rhs ) ) {} + + PushDataInfoEXT & operator=( PushDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PushDataInfoEXT & operator=( VkPushDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PushDataInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDataInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDataInfoEXT & setOffset( uint32_t offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDataInfoEXT && setOffset( uint32_t offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDataInfoEXT & setData( HostAddressRangeConstEXT const & data_ ) & VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDataInfoEXT && setData( HostAddressRangeConstEXT const & data_ ) && VULKAN_HPP_NOEXCEPT + { + data = data_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPushDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushDataInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushDataInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPushDataInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, offset, data ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PushDataInfoEXT const & ) const = default; +#else + bool operator==( PushDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( offset == rhs.offset ) && ( data == rhs.data ); +# endif + } + + bool operator!=( PushDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePushDataInfoEXT; + void const * pNext = {}; + uint32_t offset = {}; + HostAddressRangeConstEXT data = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PushDataInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = PushDataInfoEXT; + }; + + // wrapper struct for struct VkWriteDescriptorSet, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkWriteDescriptorSet.html + struct WriteDescriptorSet + { + using NativeType = VkWriteDescriptorSet; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSet; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteDescriptorSet( DescriptorSet dstSet_ = {}, + uint32_t dstBinding_ = {}, + uint32_t dstArrayElement_ = {}, + uint32_t descriptorCount_ = {}, + DescriptorType descriptorType_ = DescriptorType::eSampler, + DescriptorImageInfo const * pImageInfo_ = {}, + DescriptorBufferInfo const * pBufferInfo_ = {}, + BufferView const * pTexelBufferView_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dstSet{ dstSet_ } + , dstBinding{ dstBinding_ } + , dstArrayElement{ dstArrayElement_ } + , descriptorCount{ descriptorCount_ } + , descriptorType{ descriptorType_ } + , pImageInfo{ pImageInfo_ } + , pBufferInfo{ pBufferInfo_ } + , pTexelBufferView{ pTexelBufferView_ } + { + } + + VULKAN_HPP_CONSTEXPR WriteDescriptorSet( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSet( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT : WriteDescriptorSet( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSet( DescriptorSet dstSet_, + uint32_t dstBinding_, + uint32_t dstArrayElement_, + DescriptorType descriptorType_, + ArrayProxyNoTemporaries const & imageInfo_, + ArrayProxyNoTemporaries const & bufferInfo_ = {}, + ArrayProxyNoTemporaries const & texelBufferView_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , dstSet( dstSet_ ) + , dstBinding( dstBinding_ ) + , dstArrayElement( dstArrayElement_ ) + , descriptorCount( static_cast( !imageInfo_.empty() ? imageInfo_.size() + : !bufferInfo_.empty() ? bufferInfo_.size() + : texelBufferView_.size() ) ) + , descriptorType( descriptorType_ ) + , pImageInfo( imageInfo_.data() ) + , pBufferInfo( bufferInfo_.data() ) + , pTexelBufferView( texelBufferView_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) <= 1 ); +# else + if ( 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::WriteDescriptorSet::WriteDescriptorSet: 1 < ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + WriteDescriptorSet & operator=( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + WriteDescriptorSet & operator=( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstSet( DescriptorSet dstSet_ ) & VULKAN_HPP_NOEXCEPT + { + dstSet = dstSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet && setDstSet( DescriptorSet dstSet_ ) && VULKAN_HPP_NOEXCEPT + { + dstSet = dstSet_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstBinding( uint32_t dstBinding_ ) & VULKAN_HPP_NOEXCEPT + { + dstBinding = dstBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet && setDstBinding( uint32_t dstBinding_ ) && VULKAN_HPP_NOEXCEPT + { + dstBinding = dstBinding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) & VULKAN_HPP_NOEXCEPT + { + dstArrayElement = dstArrayElement_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet && setDstArrayElement( uint32_t dstArrayElement_ ) && VULKAN_HPP_NOEXCEPT + { + dstArrayElement = dstArrayElement_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet && setDescriptorCount( uint32_t descriptorCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorCount = descriptorCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setDescriptorType( DescriptorType descriptorType_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet && setDescriptorType( DescriptorType descriptorType_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorType = descriptorType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPImageInfo( DescriptorImageInfo const * pImageInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pImageInfo = pImageInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet && setPImageInfo( DescriptorImageInfo const * pImageInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pImageInfo = pImageInfo_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSet & setImageInfo( ArrayProxyNoTemporaries const & imageInfo_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = static_cast( imageInfo_.size() ); + pImageInfo = imageInfo_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPBufferInfo( DescriptorBufferInfo const * pBufferInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pBufferInfo = pBufferInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet && setPBufferInfo( DescriptorBufferInfo const * pBufferInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pBufferInfo = pBufferInfo_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSet & setBufferInfo( ArrayProxyNoTemporaries const & bufferInfo_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = static_cast( bufferInfo_.size() ); + pBufferInfo = bufferInfo_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & setPTexelBufferView( BufferView const * pTexelBufferView_ ) & VULKAN_HPP_NOEXCEPT + { + pTexelBufferView = pTexelBufferView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet && setPTexelBufferView( BufferView const * pTexelBufferView_ ) && VULKAN_HPP_NOEXCEPT + { + pTexelBufferView = pTexelBufferView_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSet & setTexelBufferView( ArrayProxyNoTemporaries const & texelBufferView_ ) VULKAN_HPP_NOEXCEPT + { + descriptorCount = static_cast( texelBufferView_.size() ); + pTexelBufferView = texelBufferView_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWriteDescriptorSet const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSet &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSet const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWriteDescriptorSet *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dstSet, dstBinding, dstArrayElement, descriptorCount, descriptorType, pImageInfo, pBufferInfo, pTexelBufferView ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteDescriptorSet const & ) const = default; +#else + bool operator==( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dstSet == rhs.dstSet ) && ( dstBinding == rhs.dstBinding ) && + ( dstArrayElement == rhs.dstArrayElement ) && ( descriptorCount == rhs.descriptorCount ) && ( descriptorType == rhs.descriptorType ) && + ( pImageInfo == rhs.pImageInfo ) && ( pBufferInfo == rhs.pBufferInfo ) && ( pTexelBufferView == rhs.pTexelBufferView ); +# endif + } + + bool operator!=( WriteDescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eWriteDescriptorSet; + void const * pNext = {}; + DescriptorSet dstSet = {}; + uint32_t dstBinding = {}; + uint32_t dstArrayElement = {}; + uint32_t descriptorCount = {}; + DescriptorType descriptorType = DescriptorType::eSampler; + DescriptorImageInfo const * pImageInfo = {}; + DescriptorBufferInfo const * pBufferInfo = {}; + BufferView const * pTexelBufferView = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = WriteDescriptorSet; + }; +#endif + + template <> + struct CppType + { + using Type = WriteDescriptorSet; + }; + + // wrapper struct for struct VkPushDescriptorSetInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkPushDescriptorSetInfo.html + struct PushDescriptorSetInfo + { + using NativeType = VkPushDescriptorSetInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePushDescriptorSetInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PushDescriptorSetInfo( ShaderStageFlags stageFlags_ = {}, + PipelineLayout layout_ = {}, + uint32_t set_ = {}, + uint32_t descriptorWriteCount_ = {}, + WriteDescriptorSet const * pDescriptorWrites_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stageFlags{ stageFlags_ } + , layout{ layout_ } + , set{ set_ } + , descriptorWriteCount{ descriptorWriteCount_ } + , pDescriptorWrites{ pDescriptorWrites_ } + { + } + + VULKAN_HPP_CONSTEXPR PushDescriptorSetInfo( PushDescriptorSetInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PushDescriptorSetInfo( VkPushDescriptorSetInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PushDescriptorSetInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PushDescriptorSetInfo( ShaderStageFlags stageFlags_, + PipelineLayout layout_, + uint32_t set_, + ArrayProxyNoTemporaries const & descriptorWrites_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , stageFlags( stageFlags_ ) + , layout( layout_ ) + , set( set_ ) + , descriptorWriteCount( static_cast( descriptorWrites_.size() ) ) + , pDescriptorWrites( descriptorWrites_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + PushDescriptorSetInfo & operator=( PushDescriptorSetInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PushDescriptorSetInfo & operator=( VkPushDescriptorSetInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setStageFlags( ShaderStageFlags stageFlags_ ) & VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo && setStageFlags( ShaderStageFlags stageFlags_ ) && VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setSet( uint32_t set_ ) & VULKAN_HPP_NOEXCEPT + { + set = set_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo && setSet( uint32_t set_ ) && VULKAN_HPP_NOEXCEPT + { + set = set_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setDescriptorWriteCount( uint32_t descriptorWriteCount_ ) & VULKAN_HPP_NOEXCEPT + { + descriptorWriteCount = descriptorWriteCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo && setDescriptorWriteCount( uint32_t descriptorWriteCount_ ) && VULKAN_HPP_NOEXCEPT + { + descriptorWriteCount = descriptorWriteCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo & setPDescriptorWrites( WriteDescriptorSet const * pDescriptorWrites_ ) & VULKAN_HPP_NOEXCEPT + { + pDescriptorWrites = pDescriptorWrites_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetInfo && setPDescriptorWrites( WriteDescriptorSet const * pDescriptorWrites_ ) && VULKAN_HPP_NOEXCEPT + { + pDescriptorWrites = pDescriptorWrites_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + PushDescriptorSetInfo & setDescriptorWrites( ArrayProxyNoTemporaries const & descriptorWrites_ ) VULKAN_HPP_NOEXCEPT + { + descriptorWriteCount = static_cast( descriptorWrites_.size() ); + pDescriptorWrites = descriptorWrites_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPushDescriptorSetInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushDescriptorSetInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushDescriptorSetInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPushDescriptorSetInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stageFlags, layout, set, descriptorWriteCount, pDescriptorWrites ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PushDescriptorSetInfo const & ) const = default; +#else + bool operator==( PushDescriptorSetInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( set == rhs.set ) && + ( descriptorWriteCount == rhs.descriptorWriteCount ) && ( pDescriptorWrites == rhs.pDescriptorWrites ); +# endif + } + + bool operator!=( PushDescriptorSetInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePushDescriptorSetInfo; + void const * pNext = {}; + ShaderStageFlags stageFlags = {}; + PipelineLayout layout = {}; + uint32_t set = {}; + uint32_t descriptorWriteCount = {}; + WriteDescriptorSet const * pDescriptorWrites = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PushDescriptorSetInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PushDescriptorSetInfo; + }; + + using PushDescriptorSetInfoKHR = PushDescriptorSetInfo; + + // wrapper struct for struct VkPushDescriptorSetWithTemplateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkPushDescriptorSetWithTemplateInfo.html + struct PushDescriptorSetWithTemplateInfo + { + using NativeType = VkPushDescriptorSetWithTemplateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePushDescriptorSetWithTemplateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR PushDescriptorSetWithTemplateInfo( DescriptorUpdateTemplate descriptorUpdateTemplate_ = {}, + PipelineLayout layout_ = {}, + uint32_t set_ = {}, + void const * pData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , descriptorUpdateTemplate{ descriptorUpdateTemplate_ } + , layout{ layout_ } + , set{ set_ } + , pData{ pData_ } + { + } + + VULKAN_HPP_CONSTEXPR PushDescriptorSetWithTemplateInfo( PushDescriptorSetWithTemplateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + PushDescriptorSetWithTemplateInfo( VkPushDescriptorSetWithTemplateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : PushDescriptorSetWithTemplateInfo( *reinterpret_cast( &rhs ) ) + { + } + + PushDescriptorSetWithTemplateInfo & operator=( PushDescriptorSetWithTemplateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + PushDescriptorSetWithTemplateInfo & operator=( VkPushDescriptorSetWithTemplateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo & setDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate_ ) & + VULKAN_HPP_NOEXCEPT + { + descriptorUpdateTemplate = descriptorUpdateTemplate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo && setDescriptorUpdateTemplate( DescriptorUpdateTemplate descriptorUpdateTemplate_ ) && + VULKAN_HPP_NOEXCEPT + { + descriptorUpdateTemplate = descriptorUpdateTemplate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo & setSet( uint32_t set_ ) & VULKAN_HPP_NOEXCEPT + { + set = set_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo && setSet( uint32_t set_ ) && VULKAN_HPP_NOEXCEPT + { + set = set_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo & setPData( void const * pData_ ) & VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 PushDescriptorSetWithTemplateInfo && setPData( void const * pData_ ) && VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkPushDescriptorSetWithTemplateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushDescriptorSetWithTemplateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkPushDescriptorSetWithTemplateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkPushDescriptorSetWithTemplateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, descriptorUpdateTemplate, layout, set, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( PushDescriptorSetWithTemplateInfo const & ) const = default; +#else + bool operator==( PushDescriptorSetWithTemplateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( descriptorUpdateTemplate == rhs.descriptorUpdateTemplate ) && ( layout == rhs.layout ) && + ( set == rhs.set ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( PushDescriptorSetWithTemplateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::ePushDescriptorSetWithTemplateInfo; + void const * pNext = {}; + DescriptorUpdateTemplate descriptorUpdateTemplate = {}; + PipelineLayout layout = {}; + uint32_t set = {}; + void const * pData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = PushDescriptorSetWithTemplateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = PushDescriptorSetWithTemplateInfo; + }; + + using PushDescriptorSetWithTemplateInfoKHR = PushDescriptorSetWithTemplateInfo; + + // wrapper struct for struct VkQueryLowLatencySupportNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryLowLatencySupportNV.html + struct QueryLowLatencySupportNV + { + using NativeType = VkQueryLowLatencySupportNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryLowLatencySupportNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueryLowLatencySupportNV( void * pQueriedLowLatencyData_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pQueriedLowLatencyData{ pQueriedLowLatencyData_ } + { + } + + VULKAN_HPP_CONSTEXPR QueryLowLatencySupportNV( QueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryLowLatencySupportNV( VkQueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT + : QueryLowLatencySupportNV( *reinterpret_cast( &rhs ) ) + { + } + + QueryLowLatencySupportNV & operator=( QueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueryLowLatencySupportNV & operator=( VkQueryLowLatencySupportNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 QueryLowLatencySupportNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryLowLatencySupportNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 QueryLowLatencySupportNV & setPQueriedLowLatencyData( void * pQueriedLowLatencyData_ ) & VULKAN_HPP_NOEXCEPT + { + pQueriedLowLatencyData = pQueriedLowLatencyData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryLowLatencySupportNV && setPQueriedLowLatencyData( void * pQueriedLowLatencyData_ ) && VULKAN_HPP_NOEXCEPT + { + pQueriedLowLatencyData = pQueriedLowLatencyData_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkQueryLowLatencySupportNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueryLowLatencySupportNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueryLowLatencySupportNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueryLowLatencySupportNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pQueriedLowLatencyData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueryLowLatencySupportNV const & ) const = default; +#else + bool operator==( QueryLowLatencySupportNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pQueriedLowLatencyData == rhs.pQueriedLowLatencyData ); +# endif + } + + bool operator!=( QueryLowLatencySupportNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueryLowLatencySupportNV; + void const * pNext = {}; + void * pQueriedLowLatencyData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueryLowLatencySupportNV; + }; +#endif + + template <> + struct CppType + { + using Type = QueryLowLatencySupportNV; + }; + + // wrapper struct for struct VkQueryPoolCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPoolCreateInfo.html + struct QueryPoolCreateInfo + { + using NativeType = VkQueryPoolCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryPoolCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = {}, + QueryType queryType_ = QueryType::eOcclusion, + uint32_t queryCount_ = {}, + QueryPipelineStatisticFlags pipelineStatistics_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , queryType{ queryType_ } + , queryCount{ queryCount_ } + , pipelineStatistics{ pipelineStatistics_ } + { + } + + VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : QueryPoolCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + QueryPoolCreateInfo & operator=( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueryPoolCreateInfo & operator=( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setFlags( QueryPoolCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo && setFlags( QueryPoolCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setQueryType( QueryType queryType_ ) & VULKAN_HPP_NOEXCEPT + { + queryType = queryType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo && setQueryType( QueryType queryType_ ) && VULKAN_HPP_NOEXCEPT + { + queryType = queryType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setQueryCount( uint32_t queryCount_ ) & VULKAN_HPP_NOEXCEPT + { + queryCount = queryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo && setQueryCount( uint32_t queryCount_ ) && VULKAN_HPP_NOEXCEPT + { + queryCount = queryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineStatistics = pipelineStatistics_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo && setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineStatistics = pipelineStatistics_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkQueryPoolCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueryPoolCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueryPoolCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueryPoolCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, queryType, queryCount, pipelineStatistics ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueryPoolCreateInfo const & ) const = default; +#else + bool operator==( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( queryType == rhs.queryType ) && ( queryCount == rhs.queryCount ) && + ( pipelineStatistics == rhs.pipelineStatistics ); +# endif + } + + bool operator!=( QueryPoolCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueryPoolCreateInfo; + void const * pNext = {}; + QueryPoolCreateFlags flags = {}; + QueryType queryType = QueryType::eOcclusion; + uint32_t queryCount = {}; + QueryPipelineStatisticFlags pipelineStatistics = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueryPoolCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = QueryPoolCreateInfo; + }; + + // wrapper struct for struct VkQueryPoolPerformanceCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPoolPerformanceCreateInfoKHR.html + struct QueryPoolPerformanceCreateInfoKHR + { + using NativeType = VkQueryPoolPerformanceCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryPoolPerformanceCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR( uint32_t queueFamilyIndex_ = {}, + uint32_t counterIndexCount_ = {}, + uint32_t const * pCounterIndices_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , queueFamilyIndex{ queueFamilyIndex_ } + , counterIndexCount{ counterIndexCount_ } + , pCounterIndices{ pCounterIndices_ } + { + } + + VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryPoolPerformanceCreateInfoKHR( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : QueryPoolPerformanceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + QueryPoolPerformanceCreateInfoKHR( uint32_t queueFamilyIndex_, + ArrayProxyNoTemporaries const & counterIndices_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , queueFamilyIndex( queueFamilyIndex_ ) + , counterIndexCount( static_cast( counterIndices_.size() ) ) + , pCounterIndices( counterIndices_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + QueryPoolPerformanceCreateInfoKHR & operator=( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueryPoolPerformanceCreateInfoKHR & operator=( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR && setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setCounterIndexCount( uint32_t counterIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + counterIndexCount = counterIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR && setCounterIndexCount( uint32_t counterIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + counterIndexCount = counterIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & setPCounterIndices( uint32_t const * pCounterIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pCounterIndices = pCounterIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR && setPCounterIndices( uint32_t const * pCounterIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pCounterIndices = pCounterIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + QueryPoolPerformanceCreateInfoKHR & setCounterIndices( ArrayProxyNoTemporaries const & counterIndices_ ) VULKAN_HPP_NOEXCEPT + { + counterIndexCount = static_cast( counterIndices_.size() ); + pCounterIndices = counterIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkQueryPoolPerformanceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueryPoolPerformanceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueryPoolPerformanceCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueryPoolPerformanceCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, queueFamilyIndex, counterIndexCount, pCounterIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueryPoolPerformanceCreateInfoKHR const & ) const = default; +#else + bool operator==( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) && + ( counterIndexCount == rhs.counterIndexCount ) && ( pCounterIndices == rhs.pCounterIndices ); +# endif + } + + bool operator!=( QueryPoolPerformanceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueryPoolPerformanceCreateInfoKHR; + void const * pNext = {}; + uint32_t queueFamilyIndex = {}; + uint32_t counterIndexCount = {}; + uint32_t const * pCounterIndices = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueryPoolPerformanceCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = QueryPoolPerformanceCreateInfoKHR; + }; + + // wrapper struct for struct VkQueryPoolPerformanceQueryCreateInfoINTEL, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPoolPerformanceQueryCreateInfoINTEL.html + struct QueryPoolPerformanceQueryCreateInfoINTEL + { + using NativeType = VkQueryPoolPerformanceQueryCreateInfoINTEL; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + QueryPoolPerformanceQueryCreateInfoINTEL( QueryPoolSamplingModeINTEL performanceCountersSampling_ = QueryPoolSamplingModeINTEL::eManual, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , performanceCountersSampling{ performanceCountersSampling_ } + { + } + + VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryPoolPerformanceQueryCreateInfoINTEL( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + : QueryPoolPerformanceQueryCreateInfoINTEL( *reinterpret_cast( &rhs ) ) + { + } + + QueryPoolPerformanceQueryCreateInfoINTEL & operator=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueryPoolPerformanceQueryCreateInfoINTEL & operator=( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL & + setPerformanceCountersSampling( QueryPoolSamplingModeINTEL performanceCountersSampling_ ) & + VULKAN_HPP_NOEXCEPT + { + performanceCountersSampling = performanceCountersSampling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL && + setPerformanceCountersSampling( QueryPoolSamplingModeINTEL performanceCountersSampling_ ) && + VULKAN_HPP_NOEXCEPT + { + performanceCountersSampling = performanceCountersSampling_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkQueryPoolPerformanceQueryCreateInfoINTEL const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueryPoolPerformanceQueryCreateInfoINTEL &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueryPoolPerformanceQueryCreateInfoINTEL const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueryPoolPerformanceQueryCreateInfoINTEL *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, performanceCountersSampling ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueryPoolPerformanceQueryCreateInfoINTEL const & ) const = default; +#else + bool operator==( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( performanceCountersSampling == rhs.performanceCountersSampling ); +# endif + } + + bool operator!=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL; + void const * pNext = {}; + QueryPoolSamplingModeINTEL performanceCountersSampling = QueryPoolSamplingModeINTEL::eManual; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueryPoolPerformanceQueryCreateInfoINTEL; + }; +#endif + + template <> + struct CppType + { + using Type = QueryPoolPerformanceQueryCreateInfoINTEL; + }; + + using QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL; + + // wrapper struct for struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueryPoolVideoEncodeFeedbackCreateInfoKHR.html + struct QueryPoolVideoEncodeFeedbackCreateInfoKHR + { + using NativeType = VkQueryPoolVideoEncodeFeedbackCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryPoolVideoEncodeFeedbackCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueryPoolVideoEncodeFeedbackCreateInfoKHR( VideoEncodeFeedbackFlagsKHR encodeFeedbackFlags_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , encodeFeedbackFlags{ encodeFeedbackFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR QueryPoolVideoEncodeFeedbackCreateInfoKHR( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueryPoolVideoEncodeFeedbackCreateInfoKHR( VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : QueryPoolVideoEncodeFeedbackCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + QueryPoolVideoEncodeFeedbackCreateInfoKHR & operator=( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueryPoolVideoEncodeFeedbackCreateInfoKHR & operator=( VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 QueryPoolVideoEncodeFeedbackCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolVideoEncodeFeedbackCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolVideoEncodeFeedbackCreateInfoKHR & setEncodeFeedbackFlags( VideoEncodeFeedbackFlagsKHR encodeFeedbackFlags_ ) & + VULKAN_HPP_NOEXCEPT + { + encodeFeedbackFlags = encodeFeedbackFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 QueryPoolVideoEncodeFeedbackCreateInfoKHR && setEncodeFeedbackFlags( VideoEncodeFeedbackFlagsKHR encodeFeedbackFlags_ ) && + VULKAN_HPP_NOEXCEPT + { + encodeFeedbackFlags = encodeFeedbackFlags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueryPoolVideoEncodeFeedbackCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, encodeFeedbackFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & ) const = default; +#else + bool operator==( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( encodeFeedbackFlags == rhs.encodeFeedbackFlags ); +# endif + } + + bool operator!=( QueryPoolVideoEncodeFeedbackCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueryPoolVideoEncodeFeedbackCreateInfoKHR; + void const * pNext = {}; + VideoEncodeFeedbackFlagsKHR encodeFeedbackFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueryPoolVideoEncodeFeedbackCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = QueryPoolVideoEncodeFeedbackCreateInfoKHR; + }; + + // wrapper struct for struct VkQueueFamilyCheckpointProperties2NV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointProperties2NV.html + struct QueueFamilyCheckpointProperties2NV + { + using NativeType = VkQueueFamilyCheckpointProperties2NV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyCheckpointProperties2NV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( PipelineStageFlags2 checkpointExecutionStageMask_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , checkpointExecutionStageMask{ checkpointExecutionStageMask_ } + { + } + + VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyCheckpointProperties2NV( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyCheckpointProperties2NV( *reinterpret_cast( &rhs ) ) + { + } + + QueueFamilyCheckpointProperties2NV & operator=( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueueFamilyCheckpointProperties2NV & operator=( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkQueueFamilyCheckpointProperties2NV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyCheckpointProperties2NV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyCheckpointProperties2NV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueueFamilyCheckpointProperties2NV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, checkpointExecutionStageMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyCheckpointProperties2NV const & ) const = default; +#else + bool operator==( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask ); +# endif + } + + bool operator!=( QueueFamilyCheckpointProperties2NV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueueFamilyCheckpointProperties2NV; + void * pNext = {}; + PipelineStageFlags2 checkpointExecutionStageMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueueFamilyCheckpointProperties2NV; + }; +#endif + + template <> + struct CppType + { + using Type = QueueFamilyCheckpointProperties2NV; + }; + + // wrapper struct for struct VkQueueFamilyCheckpointPropertiesNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFamilyCheckpointPropertiesNV.html + struct QueueFamilyCheckpointPropertiesNV + { + using NativeType = VkQueueFamilyCheckpointPropertiesNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyCheckpointPropertiesNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV( PipelineStageFlags checkpointExecutionStageMask_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , checkpointExecutionStageMask{ checkpointExecutionStageMask_ } + { + } + + VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyCheckpointPropertiesNV( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyCheckpointPropertiesNV( *reinterpret_cast( &rhs ) ) + { + } + + QueueFamilyCheckpointPropertiesNV & operator=( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueueFamilyCheckpointPropertiesNV & operator=( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkQueueFamilyCheckpointPropertiesNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyCheckpointPropertiesNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyCheckpointPropertiesNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueueFamilyCheckpointPropertiesNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, checkpointExecutionStageMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyCheckpointPropertiesNV const & ) const = default; +#else + bool operator==( QueueFamilyCheckpointPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask ); +# endif + } + + bool operator!=( QueueFamilyCheckpointPropertiesNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueueFamilyCheckpointPropertiesNV; + void * pNext = {}; + PipelineStageFlags checkpointExecutionStageMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueueFamilyCheckpointPropertiesNV; + }; +#endif + + template <> + struct CppType + { + using Type = QueueFamilyCheckpointPropertiesNV; + }; + + // wrapper struct for struct VkQueueFamilyDataGraphProcessingEnginePropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphProcessingEnginePropertiesARM.html + struct QueueFamilyDataGraphProcessingEnginePropertiesARM + { + using NativeType = VkQueueFamilyDataGraphProcessingEnginePropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyDataGraphProcessingEnginePropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyDataGraphProcessingEnginePropertiesARM( ExternalSemaphoreHandleTypeFlags foreignSemaphoreHandleTypes_ = {}, + ExternalMemoryHandleTypeFlags foreignMemoryHandleTypes_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , foreignSemaphoreHandleTypes{ foreignSemaphoreHandleTypes_ } + , foreignMemoryHandleTypes{ foreignMemoryHandleTypes_ } + { + } + + VULKAN_HPP_CONSTEXPR + QueueFamilyDataGraphProcessingEnginePropertiesARM( QueueFamilyDataGraphProcessingEnginePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyDataGraphProcessingEnginePropertiesARM( VkQueueFamilyDataGraphProcessingEnginePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyDataGraphProcessingEnginePropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + QueueFamilyDataGraphProcessingEnginePropertiesARM & + operator=( QueueFamilyDataGraphProcessingEnginePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueueFamilyDataGraphProcessingEnginePropertiesARM & operator=( VkQueueFamilyDataGraphProcessingEnginePropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkQueueFamilyDataGraphProcessingEnginePropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyDataGraphProcessingEnginePropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyDataGraphProcessingEnginePropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueueFamilyDataGraphProcessingEnginePropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, foreignSemaphoreHandleTypes, foreignMemoryHandleTypes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyDataGraphProcessingEnginePropertiesARM const & ) const = default; +#else + bool operator==( QueueFamilyDataGraphProcessingEnginePropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( foreignSemaphoreHandleTypes == rhs.foreignSemaphoreHandleTypes ) && + ( foreignMemoryHandleTypes == rhs.foreignMemoryHandleTypes ); +# endif + } + + bool operator!=( QueueFamilyDataGraphProcessingEnginePropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueueFamilyDataGraphProcessingEnginePropertiesARM; + void * pNext = {}; + ExternalSemaphoreHandleTypeFlags foreignSemaphoreHandleTypes = {}; + ExternalMemoryHandleTypeFlags foreignMemoryHandleTypes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueueFamilyDataGraphProcessingEnginePropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = QueueFamilyDataGraphProcessingEnginePropertiesARM; + }; + + // wrapper struct for struct VkQueueFamilyDataGraphPropertiesARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFamilyDataGraphPropertiesARM.html + struct QueueFamilyDataGraphPropertiesARM + { + using NativeType = VkQueueFamilyDataGraphPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyDataGraphPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 QueueFamilyDataGraphPropertiesARM( PhysicalDeviceDataGraphProcessingEngineARM engine_ = {}, + PhysicalDeviceDataGraphOperationSupportARM operation_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , engine{ engine_ } + , operation{ operation_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 QueueFamilyDataGraphPropertiesARM( QueueFamilyDataGraphPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyDataGraphPropertiesARM( VkQueueFamilyDataGraphPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyDataGraphPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + QueueFamilyDataGraphPropertiesARM & operator=( QueueFamilyDataGraphPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueueFamilyDataGraphPropertiesARM & operator=( VkQueueFamilyDataGraphPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkQueueFamilyDataGraphPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyDataGraphPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyDataGraphPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueueFamilyDataGraphPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, engine, operation ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyDataGraphPropertiesARM const & ) const = default; +#else + bool operator==( QueueFamilyDataGraphPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( engine == rhs.engine ) && ( operation == rhs.operation ); +# endif + } + + bool operator!=( QueueFamilyDataGraphPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueueFamilyDataGraphPropertiesARM; + void * pNext = {}; + PhysicalDeviceDataGraphProcessingEngineARM engine = {}; + PhysicalDeviceDataGraphOperationSupportARM operation = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueueFamilyDataGraphPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = QueueFamilyDataGraphPropertiesARM; + }; + + // wrapper struct for struct VkQueueFamilyGlobalPriorityProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFamilyGlobalPriorityProperties.html + struct QueueFamilyGlobalPriorityProperties + { + using NativeType = VkQueueFamilyGlobalPriorityProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyGlobalPriorityProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 + QueueFamilyGlobalPriorityProperties( uint32_t priorityCount_ = {}, + std::array const & priorities_ = { { QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow, + QueueGlobalPriority::eLow } }, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , priorityCount{ priorityCount_ } + , priorities{ priorities_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 QueueFamilyGlobalPriorityProperties( QueueFamilyGlobalPriorityProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyGlobalPriorityProperties( VkQueueFamilyGlobalPriorityProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyGlobalPriorityProperties( *reinterpret_cast( &rhs ) ) + { + } + + QueueFamilyGlobalPriorityProperties & operator=( QueueFamilyGlobalPriorityProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueueFamilyGlobalPriorityProperties & operator=( VkQueueFamilyGlobalPriorityProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkQueueFamilyGlobalPriorityProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyGlobalPriorityProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyGlobalPriorityProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueueFamilyGlobalPriorityProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, priorityCount, priorities ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( QueueFamilyGlobalPriorityProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = priorityCount <=> rhs.priorityCount; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < priorityCount; ++i ) + { + if ( auto cmp = priorities[i] <=> rhs.priorities[i]; cmp != 0 ) + return cmp; + } + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( QueueFamilyGlobalPriorityProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( priorityCount == rhs.priorityCount ) && + ( memcmp( priorities, rhs.priorities, priorityCount * sizeof( QueueGlobalPriority ) ) == 0 ); + } + + bool operator!=( QueueFamilyGlobalPriorityProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eQueueFamilyGlobalPriorityProperties; + void * pNext = {}; + uint32_t priorityCount = {}; + ArrayWrapper1D priorities = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueueFamilyGlobalPriorityProperties; + }; +#endif + + template <> + struct CppType + { + using Type = QueueFamilyGlobalPriorityProperties; + }; + + using QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityProperties; + using QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityProperties; + + // wrapper struct for struct VkQueueFamilyOwnershipTransferPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFamilyOwnershipTransferPropertiesKHR.html + struct QueueFamilyOwnershipTransferPropertiesKHR + { + using NativeType = VkQueueFamilyOwnershipTransferPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyOwnershipTransferPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyOwnershipTransferPropertiesKHR( uint32_t optimalImageTransferToQueueFamilies_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , optimalImageTransferToQueueFamilies{ optimalImageTransferToQueueFamilies_ } + { + } + + VULKAN_HPP_CONSTEXPR QueueFamilyOwnershipTransferPropertiesKHR( QueueFamilyOwnershipTransferPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyOwnershipTransferPropertiesKHR( VkQueueFamilyOwnershipTransferPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyOwnershipTransferPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + QueueFamilyOwnershipTransferPropertiesKHR & operator=( QueueFamilyOwnershipTransferPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueueFamilyOwnershipTransferPropertiesKHR & operator=( VkQueueFamilyOwnershipTransferPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkQueueFamilyOwnershipTransferPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyOwnershipTransferPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyOwnershipTransferPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueueFamilyOwnershipTransferPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, optimalImageTransferToQueueFamilies ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyOwnershipTransferPropertiesKHR const & ) const = default; +#else + bool operator==( QueueFamilyOwnershipTransferPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( optimalImageTransferToQueueFamilies == rhs.optimalImageTransferToQueueFamilies ); +# endif + } + + bool operator!=( QueueFamilyOwnershipTransferPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueueFamilyOwnershipTransferPropertiesKHR; + void * pNext = {}; + uint32_t optimalImageTransferToQueueFamilies = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueueFamilyOwnershipTransferPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = QueueFamilyOwnershipTransferPropertiesKHR; + }; + + // wrapper struct for struct VkQueueFamilyProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFamilyProperties.html + struct QueueFamilyProperties + { + using NativeType = VkQueueFamilyProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyProperties( QueueFlags queueFlags_ = {}, + uint32_t queueCount_ = {}, + uint32_t timestampValidBits_ = {}, + Extent3D minImageTransferGranularity_ = {} ) VULKAN_HPP_NOEXCEPT + : queueFlags{ queueFlags_ } + , queueCount{ queueCount_ } + , timestampValidBits{ timestampValidBits_ } + , minImageTransferGranularity{ minImageTransferGranularity_ } + { + } + + VULKAN_HPP_CONSTEXPR QueueFamilyProperties( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyProperties( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyProperties( *reinterpret_cast( &rhs ) ) + { + } + + QueueFamilyProperties & operator=( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueueFamilyProperties & operator=( VkQueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkQueueFamilyProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueueFamilyProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( queueFlags, queueCount, timestampValidBits, minImageTransferGranularity ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyProperties const & ) const = default; +#else + bool operator==( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( queueFlags == rhs.queueFlags ) && ( queueCount == rhs.queueCount ) && ( timestampValidBits == rhs.timestampValidBits ) && + ( minImageTransferGranularity == rhs.minImageTransferGranularity ); +# endif + } + + bool operator!=( QueueFamilyProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + QueueFlags queueFlags = {}; + uint32_t queueCount = {}; + uint32_t timestampValidBits = {}; + Extent3D minImageTransferGranularity = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueueFamilyProperties; + }; +#endif + + // wrapper struct for struct VkQueueFamilyProperties2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFamilyProperties2.html + struct QueueFamilyProperties2 + { + using NativeType = VkQueueFamilyProperties2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyProperties2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( QueueFamilyProperties queueFamilyProperties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , queueFamilyProperties{ queueFamilyProperties_ } + { + } + + VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyProperties2( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyProperties2( *reinterpret_cast( &rhs ) ) + { + } + + QueueFamilyProperties2 & operator=( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueueFamilyProperties2 & operator=( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkQueueFamilyProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyProperties2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueueFamilyProperties2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, queueFamilyProperties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyProperties2 const & ) const = default; +#else + bool operator==( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyProperties == rhs.queueFamilyProperties ); +# endif + } + + bool operator!=( QueueFamilyProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueueFamilyProperties2; + void * pNext = {}; + QueueFamilyProperties queueFamilyProperties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueueFamilyProperties2; + }; +#endif + + template <> + struct CppType + { + using Type = QueueFamilyProperties2; + }; + + using QueueFamilyProperties2KHR = QueueFamilyProperties2; + + // wrapper struct for struct VkQueueFamilyQueryResultStatusPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFamilyQueryResultStatusPropertiesKHR.html + struct QueueFamilyQueryResultStatusPropertiesKHR + { + using NativeType = VkQueueFamilyQueryResultStatusPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyQueryResultStatusPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyQueryResultStatusPropertiesKHR( Bool32 queryResultStatusSupport_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , queryResultStatusSupport{ queryResultStatusSupport_ } + { + } + + VULKAN_HPP_CONSTEXPR QueueFamilyQueryResultStatusPropertiesKHR( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyQueryResultStatusPropertiesKHR( VkQueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyQueryResultStatusPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + QueueFamilyQueryResultStatusPropertiesKHR & operator=( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueueFamilyQueryResultStatusPropertiesKHR & operator=( VkQueueFamilyQueryResultStatusPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkQueueFamilyQueryResultStatusPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyQueryResultStatusPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyQueryResultStatusPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueueFamilyQueryResultStatusPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, queryResultStatusSupport ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyQueryResultStatusPropertiesKHR const & ) const = default; +#else + bool operator==( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queryResultStatusSupport == rhs.queryResultStatusSupport ); +# endif + } + + bool operator!=( QueueFamilyQueryResultStatusPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueueFamilyQueryResultStatusPropertiesKHR; + void * pNext = {}; + Bool32 queryResultStatusSupport = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueueFamilyQueryResultStatusPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = QueueFamilyQueryResultStatusPropertiesKHR; + }; + + // wrapper struct for struct VkQueueFamilyVideoPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkQueueFamilyVideoPropertiesKHR.html + struct QueueFamilyVideoPropertiesKHR + { + using NativeType = VkQueueFamilyVideoPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyVideoPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR QueueFamilyVideoPropertiesKHR( VideoCodecOperationFlagsKHR videoCodecOperations_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoCodecOperations{ videoCodecOperations_ } + { + } + + VULKAN_HPP_CONSTEXPR QueueFamilyVideoPropertiesKHR( QueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + QueueFamilyVideoPropertiesKHR( VkQueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : QueueFamilyVideoPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + QueueFamilyVideoPropertiesKHR & operator=( QueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + QueueFamilyVideoPropertiesKHR & operator=( VkQueueFamilyVideoPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkQueueFamilyVideoPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyVideoPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkQueueFamilyVideoPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkQueueFamilyVideoPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoCodecOperations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( QueueFamilyVideoPropertiesKHR const & ) const = default; +#else + bool operator==( QueueFamilyVideoPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoCodecOperations == rhs.videoCodecOperations ); +# endif + } + + bool operator!=( QueueFamilyVideoPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eQueueFamilyVideoPropertiesKHR; + void * pNext = {}; + VideoCodecOperationFlagsKHR videoCodecOperations = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = QueueFamilyVideoPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = QueueFamilyVideoPropertiesKHR; + }; + + // wrapper struct for struct VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV.html + struct RayTracingPipelineClusterAccelerationStructureCreateInfoNV + { + using NativeType = VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingPipelineClusterAccelerationStructureCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RayTracingPipelineClusterAccelerationStructureCreateInfoNV( Bool32 allowClusterAccelerationStructure_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , allowClusterAccelerationStructure{ allowClusterAccelerationStructure_ } + { + } + + VULKAN_HPP_CONSTEXPR RayTracingPipelineClusterAccelerationStructureCreateInfoNV( RayTracingPipelineClusterAccelerationStructureCreateInfoNV const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + RayTracingPipelineClusterAccelerationStructureCreateInfoNV( VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : RayTracingPipelineClusterAccelerationStructureCreateInfoNV( + *reinterpret_cast( &rhs ) ) + { + } + + RayTracingPipelineClusterAccelerationStructureCreateInfoNV & + operator=( RayTracingPipelineClusterAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RayTracingPipelineClusterAccelerationStructureCreateInfoNV & + operator=( VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineClusterAccelerationStructureCreateInfoNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineClusterAccelerationStructureCreateInfoNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineClusterAccelerationStructureCreateInfoNV & + setAllowClusterAccelerationStructure( Bool32 allowClusterAccelerationStructure_ ) & + VULKAN_HPP_NOEXCEPT + { + allowClusterAccelerationStructure = allowClusterAccelerationStructure_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineClusterAccelerationStructureCreateInfoNV && + setAllowClusterAccelerationStructure( Bool32 allowClusterAccelerationStructure_ ) && + VULKAN_HPP_NOEXCEPT + { + allowClusterAccelerationStructure = allowClusterAccelerationStructure_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRayTracingPipelineClusterAccelerationStructureCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, allowClusterAccelerationStructure ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingPipelineClusterAccelerationStructureCreateInfoNV const & ) const = default; +#else + bool operator==( RayTracingPipelineClusterAccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allowClusterAccelerationStructure == rhs.allowClusterAccelerationStructure ); +# endif + } + + bool operator!=( RayTracingPipelineClusterAccelerationStructureCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRayTracingPipelineClusterAccelerationStructureCreateInfoNV; + void * pNext = {}; + Bool32 allowClusterAccelerationStructure = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RayTracingPipelineClusterAccelerationStructureCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = RayTracingPipelineClusterAccelerationStructureCreateInfoNV; + }; + + // wrapper struct for struct VkRayTracingShaderGroupCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoKHR.html + struct RayTracingShaderGroupCreateInfoKHR + { + using NativeType = VkRayTracingShaderGroupCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingShaderGroupCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoKHR( RayTracingShaderGroupTypeKHR type_ = RayTracingShaderGroupTypeKHR::eGeneral, + uint32_t generalShader_ = ShaderUnusedKHR, + uint32_t closestHitShader_ = ShaderUnusedKHR, + uint32_t anyHitShader_ = ShaderUnusedKHR, + uint32_t intersectionShader_ = ShaderUnusedKHR, + void const * pShaderGroupCaptureReplayHandle_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , generalShader{ generalShader_ } + , closestHitShader{ closestHitShader_ } + , anyHitShader{ anyHitShader_ } + , intersectionShader{ intersectionShader_ } + , pShaderGroupCaptureReplayHandle{ pShaderGroupCaptureReplayHandle_ } + { + } + + VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoKHR( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingShaderGroupCreateInfoKHR( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : RayTracingShaderGroupCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + RayTracingShaderGroupCreateInfoKHR & operator=( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RayTracingShaderGroupCreateInfoKHR & operator=( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setType( RayTracingShaderGroupTypeKHR type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR && setType( RayTracingShaderGroupTypeKHR type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setGeneralShader( uint32_t generalShader_ ) & VULKAN_HPP_NOEXCEPT + { + generalShader = generalShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR && setGeneralShader( uint32_t generalShader_ ) && VULKAN_HPP_NOEXCEPT + { + generalShader = generalShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setClosestHitShader( uint32_t closestHitShader_ ) & VULKAN_HPP_NOEXCEPT + { + closestHitShader = closestHitShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR && setClosestHitShader( uint32_t closestHitShader_ ) && VULKAN_HPP_NOEXCEPT + { + closestHitShader = closestHitShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setAnyHitShader( uint32_t anyHitShader_ ) & VULKAN_HPP_NOEXCEPT + { + anyHitShader = anyHitShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR && setAnyHitShader( uint32_t anyHitShader_ ) && VULKAN_HPP_NOEXCEPT + { + anyHitShader = anyHitShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setIntersectionShader( uint32_t intersectionShader_ ) & VULKAN_HPP_NOEXCEPT + { + intersectionShader = intersectionShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR && setIntersectionShader( uint32_t intersectionShader_ ) && VULKAN_HPP_NOEXCEPT + { + intersectionShader = intersectionShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & setPShaderGroupCaptureReplayHandle( void const * pShaderGroupCaptureReplayHandle_ ) & + VULKAN_HPP_NOEXCEPT + { + pShaderGroupCaptureReplayHandle = pShaderGroupCaptureReplayHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR && setPShaderGroupCaptureReplayHandle( void const * pShaderGroupCaptureReplayHandle_ ) && + VULKAN_HPP_NOEXCEPT + { + pShaderGroupCaptureReplayHandle = pShaderGroupCaptureReplayHandle_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRayTracingShaderGroupCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingShaderGroupCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingShaderGroupCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRayTracingShaderGroupCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, generalShader, closestHitShader, anyHitShader, intersectionShader, pShaderGroupCaptureReplayHandle ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingShaderGroupCreateInfoKHR const & ) const = default; +#else + bool operator==( RayTracingShaderGroupCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( generalShader == rhs.generalShader ) && + ( closestHitShader == rhs.closestHitShader ) && ( anyHitShader == rhs.anyHitShader ) && ( intersectionShader == rhs.intersectionShader ) && + ( pShaderGroupCaptureReplayHandle == rhs.pShaderGroupCaptureReplayHandle ); +# endif + } + + bool operator!=( RayTracingShaderGroupCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoKHR; + void const * pNext = {}; + RayTracingShaderGroupTypeKHR type = RayTracingShaderGroupTypeKHR::eGeneral; + uint32_t generalShader = ShaderUnusedKHR; + uint32_t closestHitShader = ShaderUnusedKHR; + uint32_t anyHitShader = ShaderUnusedKHR; + uint32_t intersectionShader = ShaderUnusedKHR; + void const * pShaderGroupCaptureReplayHandle = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RayTracingShaderGroupCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = RayTracingShaderGroupCreateInfoKHR; + }; + + // wrapper struct for struct VkRayTracingPipelineInterfaceCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRayTracingPipelineInterfaceCreateInfoKHR.html + struct RayTracingPipelineInterfaceCreateInfoKHR + { + using NativeType = VkRayTracingPipelineInterfaceCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RayTracingPipelineInterfaceCreateInfoKHR( uint32_t maxPipelineRayPayloadSize_ = {}, + uint32_t maxPipelineRayHitAttributeSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxPipelineRayPayloadSize{ maxPipelineRayPayloadSize_ } + , maxPipelineRayHitAttributeSize{ maxPipelineRayHitAttributeSize_ } + { + } + + VULKAN_HPP_CONSTEXPR RayTracingPipelineInterfaceCreateInfoKHR( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingPipelineInterfaceCreateInfoKHR( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : RayTracingPipelineInterfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + RayTracingPipelineInterfaceCreateInfoKHR & operator=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RayTracingPipelineInterfaceCreateInfoKHR & operator=( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & setMaxPipelineRayPayloadSize( uint32_t maxPipelineRayPayloadSize_ ) & VULKAN_HPP_NOEXCEPT + { + maxPipelineRayPayloadSize = maxPipelineRayPayloadSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR && setMaxPipelineRayPayloadSize( uint32_t maxPipelineRayPayloadSize_ ) && + VULKAN_HPP_NOEXCEPT + { + maxPipelineRayPayloadSize = maxPipelineRayPayloadSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & setMaxPipelineRayHitAttributeSize( uint32_t maxPipelineRayHitAttributeSize_ ) & + VULKAN_HPP_NOEXCEPT + { + maxPipelineRayHitAttributeSize = maxPipelineRayHitAttributeSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR && setMaxPipelineRayHitAttributeSize( uint32_t maxPipelineRayHitAttributeSize_ ) && + VULKAN_HPP_NOEXCEPT + { + maxPipelineRayHitAttributeSize = maxPipelineRayHitAttributeSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRayTracingPipelineInterfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingPipelineInterfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingPipelineInterfaceCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRayTracingPipelineInterfaceCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxPipelineRayPayloadSize, maxPipelineRayHitAttributeSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingPipelineInterfaceCreateInfoKHR const & ) const = default; +#else + bool operator==( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxPipelineRayPayloadSize == rhs.maxPipelineRayPayloadSize ) && + ( maxPipelineRayHitAttributeSize == rhs.maxPipelineRayHitAttributeSize ); +# endif + } + + bool operator!=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR; + void const * pNext = {}; + uint32_t maxPipelineRayPayloadSize = {}; + uint32_t maxPipelineRayHitAttributeSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RayTracingPipelineInterfaceCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = RayTracingPipelineInterfaceCreateInfoKHR; + }; + + // wrapper struct for struct VkRayTracingPipelineCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoKHR.html + struct RayTracingPipelineCreateInfoKHR + { + using NativeType = VkRayTracingPipelineCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingPipelineCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoKHR( PipelineCreateFlags flags_ = {}, + uint32_t stageCount_ = {}, + PipelineShaderStageCreateInfo const * pStages_ = {}, + uint32_t groupCount_ = {}, + RayTracingShaderGroupCreateInfoKHR const * pGroups_ = {}, + uint32_t maxPipelineRayRecursionDepth_ = {}, + PipelineLibraryCreateInfoKHR const * pLibraryInfo_ = {}, + RayTracingPipelineInterfaceCreateInfoKHR const * pLibraryInterface_ = {}, + PipelineDynamicStateCreateInfo const * pDynamicState_ = {}, + PipelineLayout layout_ = {}, + Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , stageCount{ stageCount_ } + , pStages{ pStages_ } + , groupCount{ groupCount_ } + , pGroups{ pGroups_ } + , maxPipelineRayRecursionDepth{ maxPipelineRayRecursionDepth_ } + , pLibraryInfo{ pLibraryInfo_ } + , pLibraryInterface{ pLibraryInterface_ } + , pDynamicState{ pDynamicState_ } + , layout{ layout_ } + , basePipelineHandle{ basePipelineHandle_ } + , basePipelineIndex{ basePipelineIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoKHR( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingPipelineCreateInfoKHR( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : RayTracingPipelineCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoKHR( PipelineCreateFlags flags_, + ArrayProxyNoTemporaries const & stages_, + ArrayProxyNoTemporaries const & groups_ = {}, + uint32_t maxPipelineRayRecursionDepth_ = {}, + PipelineLibraryCreateInfoKHR const * pLibraryInfo_ = {}, + RayTracingPipelineInterfaceCreateInfoKHR const * pLibraryInterface_ = {}, + PipelineDynamicStateCreateInfo const * pDynamicState_ = {}, + PipelineLayout layout_ = {}, + Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , stageCount( static_cast( stages_.size() ) ) + , pStages( stages_.data() ) + , groupCount( static_cast( groups_.size() ) ) + , pGroups( groups_.data() ) + , maxPipelineRayRecursionDepth( maxPipelineRayRecursionDepth_ ) + , pLibraryInfo( pLibraryInfo_ ) + , pLibraryInterface( pLibraryInterface_ ) + , pDynamicState( pDynamicState_ ) + , layout( layout_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RayTracingPipelineCreateInfoKHR & operator=( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RayTracingPipelineCreateInfoKHR & operator=( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setFlags( PipelineCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setFlags( PipelineCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setStageCount( uint32_t stageCount_ ) & VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setStageCount( uint32_t stageCount_ ) && VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPStages( PipelineShaderStageCreateInfo const * pStages_ ) & VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setPStages( PipelineShaderStageCreateInfo const * pStages_ ) && VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoKHR & setStages( ArrayProxyNoTemporaries const & stages_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = static_cast( stages_.size() ); + pStages = stages_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setGroupCount( uint32_t groupCount_ ) & VULKAN_HPP_NOEXCEPT + { + groupCount = groupCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setGroupCount( uint32_t groupCount_ ) && VULKAN_HPP_NOEXCEPT + { + groupCount = groupCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPGroups( RayTracingShaderGroupCreateInfoKHR const * pGroups_ ) & VULKAN_HPP_NOEXCEPT + { + pGroups = pGroups_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setPGroups( RayTracingShaderGroupCreateInfoKHR const * pGroups_ ) && VULKAN_HPP_NOEXCEPT + { + pGroups = pGroups_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoKHR & setGroups( ArrayProxyNoTemporaries const & groups_ ) VULKAN_HPP_NOEXCEPT + { + groupCount = static_cast( groups_.size() ); + pGroups = groups_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setMaxPipelineRayRecursionDepth( uint32_t maxPipelineRayRecursionDepth_ ) & VULKAN_HPP_NOEXCEPT + { + maxPipelineRayRecursionDepth = maxPipelineRayRecursionDepth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setMaxPipelineRayRecursionDepth( uint32_t maxPipelineRayRecursionDepth_ ) && VULKAN_HPP_NOEXCEPT + { + maxPipelineRayRecursionDepth = maxPipelineRayRecursionDepth_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPLibraryInfo( PipelineLibraryCreateInfoKHR const * pLibraryInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pLibraryInfo = pLibraryInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setPLibraryInfo( PipelineLibraryCreateInfoKHR const * pLibraryInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pLibraryInfo = pLibraryInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPLibraryInterface( RayTracingPipelineInterfaceCreateInfoKHR const * pLibraryInterface_ ) & + VULKAN_HPP_NOEXCEPT + { + pLibraryInterface = pLibraryInterface_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setPLibraryInterface( RayTracingPipelineInterfaceCreateInfoKHR const * pLibraryInterface_ ) && + VULKAN_HPP_NOEXCEPT + { + pLibraryInterface = pLibraryInterface_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setPDynamicState( PipelineDynamicStateCreateInfo const * pDynamicState_ ) & VULKAN_HPP_NOEXCEPT + { + pDynamicState = pDynamicState_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setPDynamicState( PipelineDynamicStateCreateInfo const * pDynamicState_ ) && VULKAN_HPP_NOEXCEPT + { + pDynamicState = pDynamicState_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setBasePipelineHandle( Pipeline basePipelineHandle_ ) & VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setBasePipelineHandle( Pipeline basePipelineHandle_ ) && VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & setBasePipelineIndex( int32_t basePipelineIndex_ ) & VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR && setBasePipelineIndex( int32_t basePipelineIndex_ ) && VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRayTracingPipelineCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingPipelineCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingPipelineCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRayTracingPipelineCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + stageCount, + pStages, + groupCount, + pGroups, + maxPipelineRayRecursionDepth, + pLibraryInfo, + pLibraryInterface, + pDynamicState, + layout, + basePipelineHandle, + basePipelineIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingPipelineCreateInfoKHR const & ) const = default; +#else + bool operator==( RayTracingPipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) && + ( groupCount == rhs.groupCount ) && ( pGroups == rhs.pGroups ) && ( maxPipelineRayRecursionDepth == rhs.maxPipelineRayRecursionDepth ) && + ( pLibraryInfo == rhs.pLibraryInfo ) && ( pLibraryInterface == rhs.pLibraryInterface ) && ( pDynamicState == rhs.pDynamicState ) && + ( layout == rhs.layout ) && ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex ); +# endif + } + + bool operator!=( RayTracingPipelineCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRayTracingPipelineCreateInfoKHR; + void const * pNext = {}; + PipelineCreateFlags flags = {}; + uint32_t stageCount = {}; + PipelineShaderStageCreateInfo const * pStages = {}; + uint32_t groupCount = {}; + RayTracingShaderGroupCreateInfoKHR const * pGroups = {}; + uint32_t maxPipelineRayRecursionDepth = {}; + PipelineLibraryCreateInfoKHR const * pLibraryInfo = {}; + RayTracingPipelineInterfaceCreateInfoKHR const * pLibraryInterface = {}; + PipelineDynamicStateCreateInfo const * pDynamicState = {}; + PipelineLayout layout = {}; + Pipeline basePipelineHandle = {}; + int32_t basePipelineIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RayTracingPipelineCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = RayTracingPipelineCreateInfoKHR; + }; + + // wrapper struct for struct VkRayTracingShaderGroupCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRayTracingShaderGroupCreateInfoNV.html + struct RayTracingShaderGroupCreateInfoNV + { + using NativeType = VkRayTracingShaderGroupCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingShaderGroupCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoNV( RayTracingShaderGroupTypeKHR type_ = RayTracingShaderGroupTypeKHR::eGeneral, + uint32_t generalShader_ = ShaderUnusedNV, + uint32_t closestHitShader_ = ShaderUnusedNV, + uint32_t anyHitShader_ = ShaderUnusedNV, + uint32_t intersectionShader_ = ShaderUnusedNV, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , generalShader{ generalShader_ } + , closestHitShader{ closestHitShader_ } + , anyHitShader{ anyHitShader_ } + , intersectionShader{ intersectionShader_ } + { + } + + VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoNV( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingShaderGroupCreateInfoNV( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : RayTracingShaderGroupCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + RayTracingShaderGroupCreateInfoNV & operator=( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RayTracingShaderGroupCreateInfoNV & operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setType( RayTracingShaderGroupTypeKHR type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV && setType( RayTracingShaderGroupTypeKHR type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setGeneralShader( uint32_t generalShader_ ) & VULKAN_HPP_NOEXCEPT + { + generalShader = generalShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV && setGeneralShader( uint32_t generalShader_ ) && VULKAN_HPP_NOEXCEPT + { + generalShader = generalShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setClosestHitShader( uint32_t closestHitShader_ ) & VULKAN_HPP_NOEXCEPT + { + closestHitShader = closestHitShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV && setClosestHitShader( uint32_t closestHitShader_ ) && VULKAN_HPP_NOEXCEPT + { + closestHitShader = closestHitShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setAnyHitShader( uint32_t anyHitShader_ ) & VULKAN_HPP_NOEXCEPT + { + anyHitShader = anyHitShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV && setAnyHitShader( uint32_t anyHitShader_ ) && VULKAN_HPP_NOEXCEPT + { + anyHitShader = anyHitShader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & setIntersectionShader( uint32_t intersectionShader_ ) & VULKAN_HPP_NOEXCEPT + { + intersectionShader = intersectionShader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV && setIntersectionShader( uint32_t intersectionShader_ ) && VULKAN_HPP_NOEXCEPT + { + intersectionShader = intersectionShader_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRayTracingShaderGroupCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingShaderGroupCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingShaderGroupCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRayTracingShaderGroupCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, generalShader, closestHitShader, anyHitShader, intersectionShader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingShaderGroupCreateInfoNV const & ) const = default; +#else + bool operator==( RayTracingShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( type == rhs.type ) && ( generalShader == rhs.generalShader ) && + ( closestHitShader == rhs.closestHitShader ) && ( anyHitShader == rhs.anyHitShader ) && ( intersectionShader == rhs.intersectionShader ); +# endif + } + + bool operator!=( RayTracingShaderGroupCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoNV; + void const * pNext = {}; + RayTracingShaderGroupTypeKHR type = RayTracingShaderGroupTypeKHR::eGeneral; + uint32_t generalShader = ShaderUnusedNV; + uint32_t closestHitShader = ShaderUnusedNV; + uint32_t anyHitShader = ShaderUnusedNV; + uint32_t intersectionShader = ShaderUnusedNV; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RayTracingShaderGroupCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = RayTracingShaderGroupCreateInfoNV; + }; + + // wrapper struct for struct VkRayTracingPipelineCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRayTracingPipelineCreateInfoNV.html + struct RayTracingPipelineCreateInfoNV + { + using NativeType = VkRayTracingPipelineCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingPipelineCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoNV( PipelineCreateFlags flags_ = {}, + uint32_t stageCount_ = {}, + PipelineShaderStageCreateInfo const * pStages_ = {}, + uint32_t groupCount_ = {}, + RayTracingShaderGroupCreateInfoNV const * pGroups_ = {}, + uint32_t maxRecursionDepth_ = {}, + PipelineLayout layout_ = {}, + Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , stageCount{ stageCount_ } + , pStages{ pStages_ } + , groupCount{ groupCount_ } + , pGroups{ pGroups_ } + , maxRecursionDepth{ maxRecursionDepth_ } + , layout{ layout_ } + , basePipelineHandle{ basePipelineHandle_ } + , basePipelineIndex{ basePipelineIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoNV( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RayTracingPipelineCreateInfoNV( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : RayTracingPipelineCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoNV( PipelineCreateFlags flags_, + ArrayProxyNoTemporaries const & stages_, + ArrayProxyNoTemporaries const & groups_ = {}, + uint32_t maxRecursionDepth_ = {}, + PipelineLayout layout_ = {}, + Pipeline basePipelineHandle_ = {}, + int32_t basePipelineIndex_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , stageCount( static_cast( stages_.size() ) ) + , pStages( stages_.data() ) + , groupCount( static_cast( groups_.size() ) ) + , pGroups( groups_.data() ) + , maxRecursionDepth( maxRecursionDepth_ ) + , layout( layout_ ) + , basePipelineHandle( basePipelineHandle_ ) + , basePipelineIndex( basePipelineIndex_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RayTracingPipelineCreateInfoNV & operator=( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RayTracingPipelineCreateInfoNV & operator=( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setFlags( PipelineCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV && setFlags( PipelineCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setStageCount( uint32_t stageCount_ ) & VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV && setStageCount( uint32_t stageCount_ ) && VULKAN_HPP_NOEXCEPT + { + stageCount = stageCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setPStages( PipelineShaderStageCreateInfo const * pStages_ ) & VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV && setPStages( PipelineShaderStageCreateInfo const * pStages_ ) && VULKAN_HPP_NOEXCEPT + { + pStages = pStages_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoNV & setStages( ArrayProxyNoTemporaries const & stages_ ) VULKAN_HPP_NOEXCEPT + { + stageCount = static_cast( stages_.size() ); + pStages = stages_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setGroupCount( uint32_t groupCount_ ) & VULKAN_HPP_NOEXCEPT + { + groupCount = groupCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV && setGroupCount( uint32_t groupCount_ ) && VULKAN_HPP_NOEXCEPT + { + groupCount = groupCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setPGroups( RayTracingShaderGroupCreateInfoNV const * pGroups_ ) & VULKAN_HPP_NOEXCEPT + { + pGroups = pGroups_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV && setPGroups( RayTracingShaderGroupCreateInfoNV const * pGroups_ ) && VULKAN_HPP_NOEXCEPT + { + pGroups = pGroups_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RayTracingPipelineCreateInfoNV & setGroups( ArrayProxyNoTemporaries const & groups_ ) VULKAN_HPP_NOEXCEPT + { + groupCount = static_cast( groups_.size() ); + pGroups = groups_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setMaxRecursionDepth( uint32_t maxRecursionDepth_ ) & VULKAN_HPP_NOEXCEPT + { + maxRecursionDepth = maxRecursionDepth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV && setMaxRecursionDepth( uint32_t maxRecursionDepth_ ) && VULKAN_HPP_NOEXCEPT + { + maxRecursionDepth = maxRecursionDepth_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setBasePipelineHandle( Pipeline basePipelineHandle_ ) & VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV && setBasePipelineHandle( Pipeline basePipelineHandle_ ) && VULKAN_HPP_NOEXCEPT + { + basePipelineHandle = basePipelineHandle_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & setBasePipelineIndex( int32_t basePipelineIndex_ ) & VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV && setBasePipelineIndex( int32_t basePipelineIndex_ ) && VULKAN_HPP_NOEXCEPT + { + basePipelineIndex = basePipelineIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRayTracingPipelineCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingPipelineCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRayTracingPipelineCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRayTracingPipelineCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, stageCount, pStages, groupCount, pGroups, maxRecursionDepth, layout, basePipelineHandle, basePipelineIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RayTracingPipelineCreateInfoNV const & ) const = default; +#else + bool operator==( RayTracingPipelineCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stageCount == rhs.stageCount ) && ( pStages == rhs.pStages ) && + ( groupCount == rhs.groupCount ) && ( pGroups == rhs.pGroups ) && ( maxRecursionDepth == rhs.maxRecursionDepth ) && ( layout == rhs.layout ) && + ( basePipelineHandle == rhs.basePipelineHandle ) && ( basePipelineIndex == rhs.basePipelineIndex ); +# endif + } + + bool operator!=( RayTracingPipelineCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRayTracingPipelineCreateInfoNV; + void const * pNext = {}; + PipelineCreateFlags flags = {}; + uint32_t stageCount = {}; + PipelineShaderStageCreateInfo const * pStages = {}; + uint32_t groupCount = {}; + RayTracingShaderGroupCreateInfoNV const * pGroups = {}; + uint32_t maxRecursionDepth = {}; + PipelineLayout layout = {}; + Pipeline basePipelineHandle = {}; + int32_t basePipelineIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RayTracingPipelineCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = RayTracingPipelineCreateInfoNV; + }; + + // wrapper struct for struct VkRefreshCycleDurationGOOGLE, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRefreshCycleDurationGOOGLE.html + struct RefreshCycleDurationGOOGLE + { + using NativeType = VkRefreshCycleDurationGOOGLE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = {} ) VULKAN_HPP_NOEXCEPT : refreshDuration{ refreshDuration_ } {} + + VULKAN_HPP_CONSTEXPR RefreshCycleDurationGOOGLE( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + : RefreshCycleDurationGOOGLE( *reinterpret_cast( &rhs ) ) + { + } + + RefreshCycleDurationGOOGLE & operator=( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RefreshCycleDurationGOOGLE & operator=( VkRefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkRefreshCycleDurationGOOGLE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRefreshCycleDurationGOOGLE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRefreshCycleDurationGOOGLE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRefreshCycleDurationGOOGLE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( refreshDuration ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RefreshCycleDurationGOOGLE const & ) const = default; +#else + bool operator==( RefreshCycleDurationGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( refreshDuration == rhs.refreshDuration ); +# endif + } + + bool operator!=( RefreshCycleDurationGOOGLE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint64_t refreshDuration = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RefreshCycleDurationGOOGLE; + }; +#endif + + // wrapper struct for struct VkReleaseCapturedPipelineDataInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkReleaseCapturedPipelineDataInfoKHR.html + struct ReleaseCapturedPipelineDataInfoKHR + { + using NativeType = VkReleaseCapturedPipelineDataInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eReleaseCapturedPipelineDataInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ReleaseCapturedPipelineDataInfoKHR( Pipeline pipeline_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pipeline{ pipeline_ } + { + } + + VULKAN_HPP_CONSTEXPR ReleaseCapturedPipelineDataInfoKHR( ReleaseCapturedPipelineDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ReleaseCapturedPipelineDataInfoKHR( VkReleaseCapturedPipelineDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ReleaseCapturedPipelineDataInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ReleaseCapturedPipelineDataInfoKHR & operator=( ReleaseCapturedPipelineDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ReleaseCapturedPipelineDataInfoKHR & operator=( VkReleaseCapturedPipelineDataInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ReleaseCapturedPipelineDataInfoKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ReleaseCapturedPipelineDataInfoKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ReleaseCapturedPipelineDataInfoKHR & setPipeline( Pipeline pipeline_ ) & VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ReleaseCapturedPipelineDataInfoKHR && setPipeline( Pipeline pipeline_ ) && VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkReleaseCapturedPipelineDataInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkReleaseCapturedPipelineDataInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkReleaseCapturedPipelineDataInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkReleaseCapturedPipelineDataInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pipeline ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ReleaseCapturedPipelineDataInfoKHR const & ) const = default; +#else + bool operator==( ReleaseCapturedPipelineDataInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pipeline == rhs.pipeline ); +# endif + } + + bool operator!=( ReleaseCapturedPipelineDataInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eReleaseCapturedPipelineDataInfoKHR; + void * pNext = {}; + Pipeline pipeline = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ReleaseCapturedPipelineDataInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = ReleaseCapturedPipelineDataInfoKHR; + }; + + // wrapper struct for struct VkReleaseSwapchainImagesInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkReleaseSwapchainImagesInfoKHR.html + struct ReleaseSwapchainImagesInfoKHR + { + using NativeType = VkReleaseSwapchainImagesInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eReleaseSwapchainImagesInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ReleaseSwapchainImagesInfoKHR( SwapchainKHR swapchain_ = {}, + uint32_t imageIndexCount_ = {}, + uint32_t const * pImageIndices_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchain{ swapchain_ } + , imageIndexCount{ imageIndexCount_ } + , pImageIndices{ pImageIndices_ } + { + } + + VULKAN_HPP_CONSTEXPR ReleaseSwapchainImagesInfoKHR( ReleaseSwapchainImagesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ReleaseSwapchainImagesInfoKHR( VkReleaseSwapchainImagesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ReleaseSwapchainImagesInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ReleaseSwapchainImagesInfoKHR( SwapchainKHR swapchain_, ArrayProxyNoTemporaries const & imageIndices_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), swapchain( swapchain_ ), imageIndexCount( static_cast( imageIndices_.size() ) ), pImageIndices( imageIndices_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ReleaseSwapchainImagesInfoKHR & operator=( ReleaseSwapchainImagesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ReleaseSwapchainImagesInfoKHR & operator=( VkReleaseSwapchainImagesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoKHR & setSwapchain( SwapchainKHR swapchain_ ) & VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoKHR && setSwapchain( SwapchainKHR swapchain_ ) && VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoKHR & setImageIndexCount( uint32_t imageIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + imageIndexCount = imageIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoKHR && setImageIndexCount( uint32_t imageIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + imageIndexCount = imageIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoKHR & setPImageIndices( uint32_t const * pImageIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pImageIndices = pImageIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ReleaseSwapchainImagesInfoKHR && setPImageIndices( uint32_t const * pImageIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pImageIndices = pImageIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ReleaseSwapchainImagesInfoKHR & setImageIndices( ArrayProxyNoTemporaries const & imageIndices_ ) VULKAN_HPP_NOEXCEPT + { + imageIndexCount = static_cast( imageIndices_.size() ); + pImageIndices = imageIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkReleaseSwapchainImagesInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkReleaseSwapchainImagesInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkReleaseSwapchainImagesInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkReleaseSwapchainImagesInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchain, imageIndexCount, pImageIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ReleaseSwapchainImagesInfoKHR const & ) const = default; +#else + bool operator==( ReleaseSwapchainImagesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && ( imageIndexCount == rhs.imageIndexCount ) && + ( pImageIndices == rhs.pImageIndices ); +# endif + } + + bool operator!=( ReleaseSwapchainImagesInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eReleaseSwapchainImagesInfoKHR; + void const * pNext = {}; + SwapchainKHR swapchain = {}; + uint32_t imageIndexCount = {}; + uint32_t const * pImageIndices = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ReleaseSwapchainImagesInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = ReleaseSwapchainImagesInfoKHR; + }; + + using ReleaseSwapchainImagesInfoEXT = ReleaseSwapchainImagesInfoKHR; + + // wrapper struct for struct VkRenderPassAttachmentBeginInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassAttachmentBeginInfo.html + struct RenderPassAttachmentBeginInfo + { + using NativeType = VkRenderPassAttachmentBeginInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassAttachmentBeginInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + RenderPassAttachmentBeginInfo( uint32_t attachmentCount_ = {}, ImageView const * pAttachments_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , attachmentCount{ attachmentCount_ } + , pAttachments{ pAttachments_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassAttachmentBeginInfo( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassAttachmentBeginInfo( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassAttachmentBeginInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassAttachmentBeginInfo( ArrayProxyNoTemporaries const & attachments_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), attachmentCount( static_cast( attachments_.size() ) ), pAttachments( attachments_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassAttachmentBeginInfo & operator=( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassAttachmentBeginInfo & operator=( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setAttachmentCount( uint32_t attachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo && setAttachmentCount( uint32_t attachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & setPAttachments( ImageView const * pAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo && setPAttachments( ImageView const * pAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassAttachmentBeginInfo & setAttachments( ArrayProxyNoTemporaries const & attachments_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( attachments_.size() ); + pAttachments = attachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassAttachmentBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassAttachmentBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassAttachmentBeginInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassAttachmentBeginInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, attachmentCount, pAttachments ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassAttachmentBeginInfo const & ) const = default; +#else + bool operator==( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentCount == rhs.attachmentCount ) && ( pAttachments == rhs.pAttachments ); +# endif + } + + bool operator!=( RenderPassAttachmentBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassAttachmentBeginInfo; + void const * pNext = {}; + uint32_t attachmentCount = {}; + ImageView const * pAttachments = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassAttachmentBeginInfo; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassAttachmentBeginInfo; + }; + + using RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo; + + // wrapper struct for struct VkRenderPassBeginInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassBeginInfo.html + struct RenderPassBeginInfo + { + using NativeType = VkRenderPassBeginInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassBeginInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo( RenderPass renderPass_ = {}, + Framebuffer framebuffer_ = {}, + Rect2D renderArea_ = {}, + uint32_t clearValueCount_ = {}, + ClearValue const * pClearValues_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , renderPass{ renderPass_ } + , framebuffer{ framebuffer_ } + , renderArea{ renderArea_ } + , clearValueCount{ clearValueCount_ } + , pClearValues{ pClearValues_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT : RenderPassBeginInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassBeginInfo( RenderPass renderPass_, + Framebuffer framebuffer_, + Rect2D renderArea_, + ArrayProxyNoTemporaries const & clearValues_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , renderPass( renderPass_ ) + , framebuffer( framebuffer_ ) + , renderArea( renderArea_ ) + , clearValueCount( static_cast( clearValues_.size() ) ) + , pClearValues( clearValues_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassBeginInfo & operator=( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassBeginInfo & operator=( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setRenderPass( RenderPass renderPass_ ) & VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo && setRenderPass( RenderPass renderPass_ ) && VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setFramebuffer( Framebuffer framebuffer_ ) & VULKAN_HPP_NOEXCEPT + { + framebuffer = framebuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo && setFramebuffer( Framebuffer framebuffer_ ) && VULKAN_HPP_NOEXCEPT + { + framebuffer = framebuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setRenderArea( Rect2D const & renderArea_ ) & VULKAN_HPP_NOEXCEPT + { + renderArea = renderArea_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo && setRenderArea( Rect2D const & renderArea_ ) && VULKAN_HPP_NOEXCEPT + { + renderArea = renderArea_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setClearValueCount( uint32_t clearValueCount_ ) & VULKAN_HPP_NOEXCEPT + { + clearValueCount = clearValueCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo && setClearValueCount( uint32_t clearValueCount_ ) && VULKAN_HPP_NOEXCEPT + { + clearValueCount = clearValueCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & setPClearValues( ClearValue const * pClearValues_ ) & VULKAN_HPP_NOEXCEPT + { + pClearValues = pClearValues_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo && setPClearValues( ClearValue const * pClearValues_ ) && VULKAN_HPP_NOEXCEPT + { + pClearValues = pClearValues_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassBeginInfo & setClearValues( ArrayProxyNoTemporaries const & clearValues_ ) VULKAN_HPP_NOEXCEPT + { + clearValueCount = static_cast( clearValues_.size() ); + pClearValues = clearValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassBeginInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassBeginInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, renderPass, framebuffer, renderArea, clearValueCount, pClearValues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassBeginInfo const & ) const = default; +#else + bool operator==( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && ( framebuffer == rhs.framebuffer ) && + ( renderArea == rhs.renderArea ) && ( clearValueCount == rhs.clearValueCount ) && ( pClearValues == rhs.pClearValues ); +# endif + } + + bool operator!=( RenderPassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassBeginInfo; + void const * pNext = {}; + RenderPass renderPass = {}; + Framebuffer framebuffer = {}; + Rect2D renderArea = {}; + uint32_t clearValueCount = {}; + ClearValue const * pClearValues = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassBeginInfo; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassBeginInfo; + }; + + // wrapper struct for struct VkSubpassDescription, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassDescription.html + struct SubpassDescription + { + using NativeType = VkSubpassDescription; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassDescription( SubpassDescriptionFlags flags_ = {}, + PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, + uint32_t inputAttachmentCount_ = {}, + AttachmentReference const * pInputAttachments_ = {}, + uint32_t colorAttachmentCount_ = {}, + AttachmentReference const * pColorAttachments_ = {}, + AttachmentReference const * pResolveAttachments_ = {}, + AttachmentReference const * pDepthStencilAttachment_ = {}, + uint32_t preserveAttachmentCount_ = {}, + uint32_t const * pPreserveAttachments_ = {} ) VULKAN_HPP_NOEXCEPT + : flags{ flags_ } + , pipelineBindPoint{ pipelineBindPoint_ } + , inputAttachmentCount{ inputAttachmentCount_ } + , pInputAttachments{ pInputAttachments_ } + , colorAttachmentCount{ colorAttachmentCount_ } + , pColorAttachments{ pColorAttachments_ } + , pResolveAttachments{ pResolveAttachments_ } + , pDepthStencilAttachment{ pDepthStencilAttachment_ } + , preserveAttachmentCount{ preserveAttachmentCount_ } + , pPreserveAttachments{ pPreserveAttachments_ } + { + } + + VULKAN_HPP_CONSTEXPR SubpassDescription( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDescription( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDescription( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription( SubpassDescriptionFlags flags_, + PipelineBindPoint pipelineBindPoint_, + ArrayProxyNoTemporaries const & inputAttachments_, + ArrayProxyNoTemporaries const & colorAttachments_ = {}, + ArrayProxyNoTemporaries const & resolveAttachments_ = {}, + AttachmentReference const * pDepthStencilAttachment_ = {}, + ArrayProxyNoTemporaries const & preserveAttachments_ = {} ) + : flags( flags_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , inputAttachmentCount( static_cast( inputAttachments_.size() ) ) + , pInputAttachments( inputAttachments_.data() ) + , colorAttachmentCount( static_cast( colorAttachments_.size() ) ) + , pColorAttachments( colorAttachments_.data() ) + , pResolveAttachments( resolveAttachments_.data() ) + , pDepthStencilAttachment( pDepthStencilAttachment_ ) + , preserveAttachmentCount( static_cast( preserveAttachments_.size() ) ) + , pPreserveAttachments( preserveAttachments_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) ); +# else + if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::SubpassDescription::SubpassDescription: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SubpassDescription & operator=( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubpassDescription & operator=( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setFlags( SubpassDescriptionFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription && setFlags( SubpassDescriptionFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription && setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + inputAttachmentCount = inputAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription && setInputAttachmentCount( uint32_t inputAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + inputAttachmentCount = inputAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPInputAttachments( AttachmentReference const * pInputAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pInputAttachments = pInputAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription && setPInputAttachments( AttachmentReference const * pInputAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pInputAttachments = pInputAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription & setInputAttachments( ArrayProxyNoTemporaries const & inputAttachments_ ) VULKAN_HPP_NOEXCEPT + { + inputAttachmentCount = static_cast( inputAttachments_.size() ); + pInputAttachments = inputAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription && setColorAttachmentCount( uint32_t colorAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPColorAttachments( AttachmentReference const * pColorAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pColorAttachments = pColorAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription && setPColorAttachments( AttachmentReference const * pColorAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pColorAttachments = pColorAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription & setColorAttachments( ArrayProxyNoTemporaries const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachments_.size() ); + pColorAttachments = colorAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPResolveAttachments( AttachmentReference const * pResolveAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pResolveAttachments = pResolveAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription && setPResolveAttachments( AttachmentReference const * pResolveAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pResolveAttachments = pResolveAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription & setResolveAttachments( ArrayProxyNoTemporaries const & resolveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( resolveAttachments_.size() ); + pResolveAttachments = resolveAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPDepthStencilAttachment( AttachmentReference const * pDepthStencilAttachment_ ) & VULKAN_HPP_NOEXCEPT + { + pDepthStencilAttachment = pDepthStencilAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription && setPDepthStencilAttachment( AttachmentReference const * pDepthStencilAttachment_ ) && VULKAN_HPP_NOEXCEPT + { + pDepthStencilAttachment = pDepthStencilAttachment_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + preserveAttachmentCount = preserveAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription && setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + preserveAttachmentCount = preserveAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription & setPPreserveAttachments( uint32_t const * pPreserveAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pPreserveAttachments = pPreserveAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription && setPPreserveAttachments( uint32_t const * pPreserveAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pPreserveAttachments = pPreserveAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription & setPreserveAttachments( ArrayProxyNoTemporaries const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + preserveAttachmentCount = static_cast( preserveAttachments_.size() ); + pPreserveAttachments = preserveAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubpassDescription const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassDescription &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassDescription const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubpassDescription *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( flags, + pipelineBindPoint, + inputAttachmentCount, + pInputAttachments, + colorAttachmentCount, + pColorAttachments, + pResolveAttachments, + pDepthStencilAttachment, + preserveAttachmentCount, + pPreserveAttachments ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassDescription const & ) const = default; +#else + bool operator==( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( flags == rhs.flags ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && ( inputAttachmentCount == rhs.inputAttachmentCount ) && + ( pInputAttachments == rhs.pInputAttachments ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) && + ( pColorAttachments == rhs.pColorAttachments ) && ( pResolveAttachments == rhs.pResolveAttachments ) && + ( pDepthStencilAttachment == rhs.pDepthStencilAttachment ) && ( preserveAttachmentCount == rhs.preserveAttachmentCount ) && + ( pPreserveAttachments == rhs.pPreserveAttachments ); +# endif + } + + bool operator!=( SubpassDescription const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + SubpassDescriptionFlags flags = {}; + PipelineBindPoint pipelineBindPoint = PipelineBindPoint::eGraphics; + uint32_t inputAttachmentCount = {}; + AttachmentReference const * pInputAttachments = {}; + uint32_t colorAttachmentCount = {}; + AttachmentReference const * pColorAttachments = {}; + AttachmentReference const * pResolveAttachments = {}; + AttachmentReference const * pDepthStencilAttachment = {}; + uint32_t preserveAttachmentCount = {}; + uint32_t const * pPreserveAttachments = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubpassDescription; + }; +#endif + + // wrapper struct for struct VkSubpassDependency, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassDependency.html + struct SubpassDependency + { + using NativeType = VkSubpassDependency; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassDependency( uint32_t srcSubpass_ = {}, + uint32_t dstSubpass_ = {}, + PipelineStageFlags srcStageMask_ = {}, + PipelineStageFlags dstStageMask_ = {}, + AccessFlags srcAccessMask_ = {}, + AccessFlags dstAccessMask_ = {}, + DependencyFlags dependencyFlags_ = {} ) VULKAN_HPP_NOEXCEPT + : srcSubpass{ srcSubpass_ } + , dstSubpass{ dstSubpass_ } + , srcStageMask{ srcStageMask_ } + , dstStageMask{ dstStageMask_ } + , srcAccessMask{ srcAccessMask_ } + , dstAccessMask{ dstAccessMask_ } + , dependencyFlags{ dependencyFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR SubpassDependency( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDependency( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDependency( *reinterpret_cast( &rhs ) ) {} + + SubpassDependency & operator=( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubpassDependency & operator=( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcSubpass( uint32_t srcSubpass_ ) & VULKAN_HPP_NOEXCEPT + { + srcSubpass = srcSubpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency && setSrcSubpass( uint32_t srcSubpass_ ) && VULKAN_HPP_NOEXCEPT + { + srcSubpass = srcSubpass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstSubpass( uint32_t dstSubpass_ ) & VULKAN_HPP_NOEXCEPT + { + dstSubpass = dstSubpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency && setDstSubpass( uint32_t dstSubpass_ ) && VULKAN_HPP_NOEXCEPT + { + dstSubpass = dstSubpass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcStageMask( PipelineStageFlags srcStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency && setSrcStageMask( PipelineStageFlags srcStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstStageMask( PipelineStageFlags dstStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency && setDstStageMask( PipelineStageFlags dstStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setSrcAccessMask( AccessFlags srcAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency && setSrcAccessMask( AccessFlags srcAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDstAccessMask( AccessFlags dstAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency && setDstAccessMask( AccessFlags dstAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency & setDependencyFlags( DependencyFlags dependencyFlags_ ) & VULKAN_HPP_NOEXCEPT + { + dependencyFlags = dependencyFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency && setDependencyFlags( DependencyFlags dependencyFlags_ ) && VULKAN_HPP_NOEXCEPT + { + dependencyFlags = dependencyFlags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubpassDependency const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassDependency &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassDependency const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubpassDependency *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( srcSubpass, dstSubpass, srcStageMask, dstStageMask, srcAccessMask, dstAccessMask, dependencyFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassDependency const & ) const = default; +#else + bool operator==( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( srcSubpass == rhs.srcSubpass ) && ( dstSubpass == rhs.dstSubpass ) && ( srcStageMask == rhs.srcStageMask ) && + ( dstStageMask == rhs.dstStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) && ( dstAccessMask == rhs.dstAccessMask ) && + ( dependencyFlags == rhs.dependencyFlags ); +# endif + } + + bool operator!=( SubpassDependency const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t srcSubpass = {}; + uint32_t dstSubpass = {}; + PipelineStageFlags srcStageMask = {}; + PipelineStageFlags dstStageMask = {}; + AccessFlags srcAccessMask = {}; + AccessFlags dstAccessMask = {}; + DependencyFlags dependencyFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubpassDependency; + }; +#endif + + // wrapper struct for struct VkRenderPassCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassCreateInfo.html + struct RenderPassCreateInfo + { + using NativeType = VkRenderPassCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassCreateInfo( RenderPassCreateFlags flags_ = {}, + uint32_t attachmentCount_ = {}, + AttachmentDescription const * pAttachments_ = {}, + uint32_t subpassCount_ = {}, + SubpassDescription const * pSubpasses_ = {}, + uint32_t dependencyCount_ = {}, + SubpassDependency const * pDependencies_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , attachmentCount{ attachmentCount_ } + , pAttachments{ pAttachments_ } + , subpassCount{ subpassCount_ } + , pSubpasses{ pSubpasses_ } + , dependencyCount{ dependencyCount_ } + , pDependencies{ pDependencies_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassCreateInfo( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo( RenderPassCreateFlags flags_, + ArrayProxyNoTemporaries const & attachments_, + ArrayProxyNoTemporaries const & subpasses_ = {}, + ArrayProxyNoTemporaries const & dependencies_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , attachmentCount( static_cast( attachments_.size() ) ) + , pAttachments( attachments_.data() ) + , subpassCount( static_cast( subpasses_.size() ) ) + , pSubpasses( subpasses_.data() ) + , dependencyCount( static_cast( dependencies_.size() ) ) + , pDependencies( dependencies_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassCreateInfo & operator=( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassCreateInfo & operator=( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setFlags( RenderPassCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo && setFlags( RenderPassCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo && setAttachmentCount( uint32_t attachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPAttachments( AttachmentDescription const * pAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo && setPAttachments( AttachmentDescription const * pAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo & setAttachments( ArrayProxyNoTemporaries const & attachments_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( attachments_.size() ); + pAttachments = attachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setSubpassCount( uint32_t subpassCount_ ) & VULKAN_HPP_NOEXCEPT + { + subpassCount = subpassCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo && setSubpassCount( uint32_t subpassCount_ ) && VULKAN_HPP_NOEXCEPT + { + subpassCount = subpassCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPSubpasses( SubpassDescription const * pSubpasses_ ) & VULKAN_HPP_NOEXCEPT + { + pSubpasses = pSubpasses_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo && setPSubpasses( SubpassDescription const * pSubpasses_ ) && VULKAN_HPP_NOEXCEPT + { + pSubpasses = pSubpasses_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo & setSubpasses( ArrayProxyNoTemporaries const & subpasses_ ) VULKAN_HPP_NOEXCEPT + { + subpassCount = static_cast( subpasses_.size() ); + pSubpasses = subpasses_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) & VULKAN_HPP_NOEXCEPT + { + dependencyCount = dependencyCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo && setDependencyCount( uint32_t dependencyCount_ ) && VULKAN_HPP_NOEXCEPT + { + dependencyCount = dependencyCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & setPDependencies( SubpassDependency const * pDependencies_ ) & VULKAN_HPP_NOEXCEPT + { + pDependencies = pDependencies_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo && setPDependencies( SubpassDependency const * pDependencies_ ) && VULKAN_HPP_NOEXCEPT + { + pDependencies = pDependencies_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo & setDependencies( ArrayProxyNoTemporaries const & dependencies_ ) VULKAN_HPP_NOEXCEPT + { + dependencyCount = static_cast( dependencies_.size() ); + pDependencies = dependencies_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, attachmentCount, pAttachments, subpassCount, pSubpasses, dependencyCount, pDependencies ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassCreateInfo const & ) const = default; +#else + bool operator==( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( attachmentCount == rhs.attachmentCount ) && + ( pAttachments == rhs.pAttachments ) && ( subpassCount == rhs.subpassCount ) && ( pSubpasses == rhs.pSubpasses ) && + ( dependencyCount == rhs.dependencyCount ) && ( pDependencies == rhs.pDependencies ); +# endif + } + + bool operator!=( RenderPassCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassCreateInfo; + void const * pNext = {}; + RenderPassCreateFlags flags = {}; + uint32_t attachmentCount = {}; + AttachmentDescription const * pAttachments = {}; + uint32_t subpassCount = {}; + SubpassDescription const * pSubpasses = {}; + uint32_t dependencyCount = {}; + SubpassDependency const * pDependencies = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassCreateInfo; + }; + + // wrapper struct for struct VkSubpassDescription2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassDescription2.html + struct SubpassDescription2 + { + using NativeType = VkSubpassDescription2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDescription2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassDescription2( SubpassDescriptionFlags flags_ = {}, + PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, + uint32_t viewMask_ = {}, + uint32_t inputAttachmentCount_ = {}, + AttachmentReference2 const * pInputAttachments_ = {}, + uint32_t colorAttachmentCount_ = {}, + AttachmentReference2 const * pColorAttachments_ = {}, + AttachmentReference2 const * pResolveAttachments_ = {}, + AttachmentReference2 const * pDepthStencilAttachment_ = {}, + uint32_t preserveAttachmentCount_ = {}, + uint32_t const * pPreserveAttachments_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , pipelineBindPoint{ pipelineBindPoint_ } + , viewMask{ viewMask_ } + , inputAttachmentCount{ inputAttachmentCount_ } + , pInputAttachments{ pInputAttachments_ } + , colorAttachmentCount{ colorAttachmentCount_ } + , pColorAttachments{ pColorAttachments_ } + , pResolveAttachments{ pResolveAttachments_ } + , pDepthStencilAttachment{ pDepthStencilAttachment_ } + , preserveAttachmentCount{ preserveAttachmentCount_ } + , pPreserveAttachments{ pPreserveAttachments_ } + { + } + + VULKAN_HPP_CONSTEXPR SubpassDescription2( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDescription2( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDescription2( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription2( SubpassDescriptionFlags flags_, + PipelineBindPoint pipelineBindPoint_, + uint32_t viewMask_, + ArrayProxyNoTemporaries const & inputAttachments_, + ArrayProxyNoTemporaries const & colorAttachments_ = {}, + ArrayProxyNoTemporaries const & resolveAttachments_ = {}, + AttachmentReference2 const * pDepthStencilAttachment_ = {}, + ArrayProxyNoTemporaries const & preserveAttachments_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , pipelineBindPoint( pipelineBindPoint_ ) + , viewMask( viewMask_ ) + , inputAttachmentCount( static_cast( inputAttachments_.size() ) ) + , pInputAttachments( inputAttachments_.data() ) + , colorAttachmentCount( static_cast( colorAttachments_.size() ) ) + , pColorAttachments( colorAttachments_.data() ) + , pResolveAttachments( resolveAttachments_.data() ) + , pDepthStencilAttachment( pDepthStencilAttachment_ ) + , preserveAttachmentCount( static_cast( preserveAttachments_.size() ) ) + , pPreserveAttachments( preserveAttachments_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( resolveAttachments_.empty() || ( colorAttachments_.size() == resolveAttachments_.size() ) ); +# else + if ( !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() ) ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::SubpassDescription2::SubpassDescription2: !resolveAttachments_.empty() && ( colorAttachments_.size() != resolveAttachments_.size() )" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SubpassDescription2 & operator=( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubpassDescription2 & operator=( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setFlags( SubpassDescriptionFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setFlags( SubpassDescriptionFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) & VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ ) && VULKAN_HPP_NOEXCEPT + { + pipelineBindPoint = pipelineBindPoint_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setViewMask( uint32_t viewMask_ ) & VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setViewMask( uint32_t viewMask_ ) && VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + inputAttachmentCount = inputAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setInputAttachmentCount( uint32_t inputAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + inputAttachmentCount = inputAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPInputAttachments( AttachmentReference2 const * pInputAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pInputAttachments = pInputAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setPInputAttachments( AttachmentReference2 const * pInputAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pInputAttachments = pInputAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription2 & setInputAttachments( ArrayProxyNoTemporaries const & inputAttachments_ ) VULKAN_HPP_NOEXCEPT + { + inputAttachmentCount = static_cast( inputAttachments_.size() ); + pInputAttachments = inputAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setColorAttachmentCount( uint32_t colorAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPColorAttachments( AttachmentReference2 const * pColorAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pColorAttachments = pColorAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setPColorAttachments( AttachmentReference2 const * pColorAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pColorAttachments = pColorAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription2 & setColorAttachments( ArrayProxyNoTemporaries const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachments_.size() ); + pColorAttachments = colorAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPResolveAttachments( AttachmentReference2 const * pResolveAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pResolveAttachments = pResolveAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setPResolveAttachments( AttachmentReference2 const * pResolveAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pResolveAttachments = pResolveAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription2 & setResolveAttachments( ArrayProxyNoTemporaries const & resolveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( resolveAttachments_.size() ); + pResolveAttachments = resolveAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPDepthStencilAttachment( AttachmentReference2 const * pDepthStencilAttachment_ ) & VULKAN_HPP_NOEXCEPT + { + pDepthStencilAttachment = pDepthStencilAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setPDepthStencilAttachment( AttachmentReference2 const * pDepthStencilAttachment_ ) && VULKAN_HPP_NOEXCEPT + { + pDepthStencilAttachment = pDepthStencilAttachment_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + preserveAttachmentCount = preserveAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + preserveAttachmentCount = preserveAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & setPPreserveAttachments( uint32_t const * pPreserveAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pPreserveAttachments = pPreserveAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 && setPPreserveAttachments( uint32_t const * pPreserveAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pPreserveAttachments = pPreserveAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubpassDescription2 & setPreserveAttachments( ArrayProxyNoTemporaries const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT + { + preserveAttachmentCount = static_cast( preserveAttachments_.size() ); + pPreserveAttachments = preserveAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubpassDescription2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassDescription2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassDescription2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubpassDescription2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + pipelineBindPoint, + viewMask, + inputAttachmentCount, + pInputAttachments, + colorAttachmentCount, + pColorAttachments, + pResolveAttachments, + pDepthStencilAttachment, + preserveAttachmentCount, + pPreserveAttachments ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassDescription2 const & ) const = default; +#else + bool operator==( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( pipelineBindPoint == rhs.pipelineBindPoint ) && + ( viewMask == rhs.viewMask ) && ( inputAttachmentCount == rhs.inputAttachmentCount ) && ( pInputAttachments == rhs.pInputAttachments ) && + ( colorAttachmentCount == rhs.colorAttachmentCount ) && ( pColorAttachments == rhs.pColorAttachments ) && + ( pResolveAttachments == rhs.pResolveAttachments ) && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment ) && + ( preserveAttachmentCount == rhs.preserveAttachmentCount ) && ( pPreserveAttachments == rhs.pPreserveAttachments ); +# endif + } + + bool operator!=( SubpassDescription2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubpassDescription2; + void const * pNext = {}; + SubpassDescriptionFlags flags = {}; + PipelineBindPoint pipelineBindPoint = PipelineBindPoint::eGraphics; + uint32_t viewMask = {}; + uint32_t inputAttachmentCount = {}; + AttachmentReference2 const * pInputAttachments = {}; + uint32_t colorAttachmentCount = {}; + AttachmentReference2 const * pColorAttachments = {}; + AttachmentReference2 const * pResolveAttachments = {}; + AttachmentReference2 const * pDepthStencilAttachment = {}; + uint32_t preserveAttachmentCount = {}; + uint32_t const * pPreserveAttachments = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubpassDescription2; + }; +#endif + + template <> + struct CppType + { + using Type = SubpassDescription2; + }; + + using SubpassDescription2KHR = SubpassDescription2; + + // wrapper struct for struct VkSubpassDependency2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassDependency2.html + struct SubpassDependency2 + { + using NativeType = VkSubpassDependency2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDependency2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassDependency2( uint32_t srcSubpass_ = {}, + uint32_t dstSubpass_ = {}, + PipelineStageFlags srcStageMask_ = {}, + PipelineStageFlags dstStageMask_ = {}, + AccessFlags srcAccessMask_ = {}, + AccessFlags dstAccessMask_ = {}, + DependencyFlags dependencyFlags_ = {}, + int32_t viewOffset_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcSubpass{ srcSubpass_ } + , dstSubpass{ dstSubpass_ } + , srcStageMask{ srcStageMask_ } + , dstStageMask{ dstStageMask_ } + , srcAccessMask{ srcAccessMask_ } + , dstAccessMask{ dstAccessMask_ } + , dependencyFlags{ dependencyFlags_ } + , viewOffset{ viewOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR SubpassDependency2( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDependency2( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassDependency2( *reinterpret_cast( &rhs ) ) {} + + SubpassDependency2 & operator=( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubpassDependency2 & operator=( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcSubpass( uint32_t srcSubpass_ ) & VULKAN_HPP_NOEXCEPT + { + srcSubpass = srcSubpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 && setSrcSubpass( uint32_t srcSubpass_ ) && VULKAN_HPP_NOEXCEPT + { + srcSubpass = srcSubpass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstSubpass( uint32_t dstSubpass_ ) & VULKAN_HPP_NOEXCEPT + { + dstSubpass = dstSubpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 && setDstSubpass( uint32_t dstSubpass_ ) && VULKAN_HPP_NOEXCEPT + { + dstSubpass = dstSubpass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcStageMask( PipelineStageFlags srcStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 && setSrcStageMask( PipelineStageFlags srcStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstStageMask( PipelineStageFlags dstStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 && setDstStageMask( PipelineStageFlags dstStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setSrcAccessMask( AccessFlags srcAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 && setSrcAccessMask( AccessFlags srcAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDstAccessMask( AccessFlags dstAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 && setDstAccessMask( AccessFlags dstAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setDependencyFlags( DependencyFlags dependencyFlags_ ) & VULKAN_HPP_NOEXCEPT + { + dependencyFlags = dependencyFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 && setDependencyFlags( DependencyFlags dependencyFlags_ ) && VULKAN_HPP_NOEXCEPT + { + dependencyFlags = dependencyFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & setViewOffset( int32_t viewOffset_ ) & VULKAN_HPP_NOEXCEPT + { + viewOffset = viewOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 && setViewOffset( int32_t viewOffset_ ) && VULKAN_HPP_NOEXCEPT + { + viewOffset = viewOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubpassDependency2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassDependency2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassDependency2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubpassDependency2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcSubpass, dstSubpass, srcStageMask, dstStageMask, srcAccessMask, dstAccessMask, dependencyFlags, viewOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassDependency2 const & ) const = default; +#else + bool operator==( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcSubpass == rhs.srcSubpass ) && ( dstSubpass == rhs.dstSubpass ) && + ( srcStageMask == rhs.srcStageMask ) && ( dstStageMask == rhs.dstStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) && + ( dstAccessMask == rhs.dstAccessMask ) && ( dependencyFlags == rhs.dependencyFlags ) && ( viewOffset == rhs.viewOffset ); +# endif + } + + bool operator!=( SubpassDependency2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubpassDependency2; + void const * pNext = {}; + uint32_t srcSubpass = {}; + uint32_t dstSubpass = {}; + PipelineStageFlags srcStageMask = {}; + PipelineStageFlags dstStageMask = {}; + AccessFlags srcAccessMask = {}; + AccessFlags dstAccessMask = {}; + DependencyFlags dependencyFlags = {}; + int32_t viewOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubpassDependency2; + }; +#endif + + template <> + struct CppType + { + using Type = SubpassDependency2; + }; + + using SubpassDependency2KHR = SubpassDependency2; + + // wrapper struct for struct VkRenderPassCreateInfo2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassCreateInfo2.html + struct RenderPassCreateInfo2 + { + using NativeType = VkRenderPassCreateInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassCreateInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( RenderPassCreateFlags flags_ = {}, + uint32_t attachmentCount_ = {}, + AttachmentDescription2 const * pAttachments_ = {}, + uint32_t subpassCount_ = {}, + SubpassDescription2 const * pSubpasses_ = {}, + uint32_t dependencyCount_ = {}, + SubpassDependency2 const * pDependencies_ = {}, + uint32_t correlatedViewMaskCount_ = {}, + uint32_t const * pCorrelatedViewMasks_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , attachmentCount{ attachmentCount_ } + , pAttachments{ pAttachments_ } + , subpassCount{ subpassCount_ } + , pSubpasses{ pSubpasses_ } + , dependencyCount{ dependencyCount_ } + , pDependencies{ pDependencies_ } + , correlatedViewMaskCount{ correlatedViewMaskCount_ } + , pCorrelatedViewMasks{ pCorrelatedViewMasks_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassCreateInfo2( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassCreateInfo2( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo2( RenderPassCreateFlags flags_, + ArrayProxyNoTemporaries const & attachments_, + ArrayProxyNoTemporaries const & subpasses_ = {}, + ArrayProxyNoTemporaries const & dependencies_ = {}, + ArrayProxyNoTemporaries const & correlatedViewMasks_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , attachmentCount( static_cast( attachments_.size() ) ) + , pAttachments( attachments_.data() ) + , subpassCount( static_cast( subpasses_.size() ) ) + , pSubpasses( subpasses_.data() ) + , dependencyCount( static_cast( dependencies_.size() ) ) + , pDependencies( dependencies_.data() ) + , correlatedViewMaskCount( static_cast( correlatedViewMasks_.size() ) ) + , pCorrelatedViewMasks( correlatedViewMasks_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassCreateInfo2 & operator=( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassCreateInfo2 & operator=( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setFlags( RenderPassCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 && setFlags( RenderPassCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setAttachmentCount( uint32_t attachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 && setAttachmentCount( uint32_t attachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + attachmentCount = attachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPAttachments( AttachmentDescription2 const * pAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 && setPAttachments( AttachmentDescription2 const * pAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pAttachments = pAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo2 & setAttachments( ArrayProxyNoTemporaries const & attachments_ ) VULKAN_HPP_NOEXCEPT + { + attachmentCount = static_cast( attachments_.size() ); + pAttachments = attachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setSubpassCount( uint32_t subpassCount_ ) & VULKAN_HPP_NOEXCEPT + { + subpassCount = subpassCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 && setSubpassCount( uint32_t subpassCount_ ) && VULKAN_HPP_NOEXCEPT + { + subpassCount = subpassCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPSubpasses( SubpassDescription2 const * pSubpasses_ ) & VULKAN_HPP_NOEXCEPT + { + pSubpasses = pSubpasses_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 && setPSubpasses( SubpassDescription2 const * pSubpasses_ ) && VULKAN_HPP_NOEXCEPT + { + pSubpasses = pSubpasses_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo2 & setSubpasses( ArrayProxyNoTemporaries const & subpasses_ ) VULKAN_HPP_NOEXCEPT + { + subpassCount = static_cast( subpasses_.size() ); + pSubpasses = subpasses_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setDependencyCount( uint32_t dependencyCount_ ) & VULKAN_HPP_NOEXCEPT + { + dependencyCount = dependencyCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 && setDependencyCount( uint32_t dependencyCount_ ) && VULKAN_HPP_NOEXCEPT + { + dependencyCount = dependencyCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPDependencies( SubpassDependency2 const * pDependencies_ ) & VULKAN_HPP_NOEXCEPT + { + pDependencies = pDependencies_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 && setPDependencies( SubpassDependency2 const * pDependencies_ ) && VULKAN_HPP_NOEXCEPT + { + pDependencies = pDependencies_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo2 & setDependencies( ArrayProxyNoTemporaries const & dependencies_ ) VULKAN_HPP_NOEXCEPT + { + dependencyCount = static_cast( dependencies_.size() ); + pDependencies = dependencies_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ ) & VULKAN_HPP_NOEXCEPT + { + correlatedViewMaskCount = correlatedViewMaskCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 && setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ ) && VULKAN_HPP_NOEXCEPT + { + correlatedViewMaskCount = correlatedViewMaskCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & setPCorrelatedViewMasks( uint32_t const * pCorrelatedViewMasks_ ) & VULKAN_HPP_NOEXCEPT + { + pCorrelatedViewMasks = pCorrelatedViewMasks_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 && setPCorrelatedViewMasks( uint32_t const * pCorrelatedViewMasks_ ) && VULKAN_HPP_NOEXCEPT + { + pCorrelatedViewMasks = pCorrelatedViewMasks_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassCreateInfo2 & setCorrelatedViewMasks( ArrayProxyNoTemporaries const & correlatedViewMasks_ ) VULKAN_HPP_NOEXCEPT + { + correlatedViewMaskCount = static_cast( correlatedViewMasks_.size() ); + pCorrelatedViewMasks = correlatedViewMasks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassCreateInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassCreateInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassCreateInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassCreateInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + attachmentCount, + pAttachments, + subpassCount, + pSubpasses, + dependencyCount, + pDependencies, + correlatedViewMaskCount, + pCorrelatedViewMasks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassCreateInfo2 const & ) const = default; +#else + bool operator==( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( attachmentCount == rhs.attachmentCount ) && + ( pAttachments == rhs.pAttachments ) && ( subpassCount == rhs.subpassCount ) && ( pSubpasses == rhs.pSubpasses ) && + ( dependencyCount == rhs.dependencyCount ) && ( pDependencies == rhs.pDependencies ) && + ( correlatedViewMaskCount == rhs.correlatedViewMaskCount ) && ( pCorrelatedViewMasks == rhs.pCorrelatedViewMasks ); +# endif + } + + bool operator!=( RenderPassCreateInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassCreateInfo2; + void const * pNext = {}; + RenderPassCreateFlags flags = {}; + uint32_t attachmentCount = {}; + AttachmentDescription2 const * pAttachments = {}; + uint32_t subpassCount = {}; + SubpassDescription2 const * pSubpasses = {}; + uint32_t dependencyCount = {}; + SubpassDependency2 const * pDependencies = {}; + uint32_t correlatedViewMaskCount = {}; + uint32_t const * pCorrelatedViewMasks = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassCreateInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassCreateInfo2; + }; + + using RenderPassCreateInfo2KHR = RenderPassCreateInfo2; + + // wrapper struct for struct VkRenderPassCreationControlEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassCreationControlEXT.html + struct RenderPassCreationControlEXT + { + using NativeType = VkRenderPassCreationControlEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassCreationControlEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassCreationControlEXT( Bool32 disallowMerging_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , disallowMerging{ disallowMerging_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassCreationControlEXT( RenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassCreationControlEXT( VkRenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassCreationControlEXT( *reinterpret_cast( &rhs ) ) + { + } + + RenderPassCreationControlEXT & operator=( RenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassCreationControlEXT & operator=( VkRenderPassCreationControlEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassCreationControlEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreationControlEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreationControlEXT & setDisallowMerging( Bool32 disallowMerging_ ) & VULKAN_HPP_NOEXCEPT + { + disallowMerging = disallowMerging_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreationControlEXT && setDisallowMerging( Bool32 disallowMerging_ ) && VULKAN_HPP_NOEXCEPT + { + disallowMerging = disallowMerging_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassCreationControlEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassCreationControlEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassCreationControlEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassCreationControlEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, disallowMerging ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassCreationControlEXT const & ) const = default; +#else + bool operator==( RenderPassCreationControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( disallowMerging == rhs.disallowMerging ); +# endif + } + + bool operator!=( RenderPassCreationControlEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassCreationControlEXT; + void const * pNext = {}; + Bool32 disallowMerging = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassCreationControlEXT; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassCreationControlEXT; + }; + + // wrapper struct for struct VkRenderPassCreationFeedbackInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackInfoEXT.html + struct RenderPassCreationFeedbackInfoEXT + { + using NativeType = VkRenderPassCreationFeedbackInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackInfoEXT( uint32_t postMergeSubpassCount_ = {} ) VULKAN_HPP_NOEXCEPT + : postMergeSubpassCount{ postMergeSubpassCount_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackInfoEXT( RenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassCreationFeedbackInfoEXT( VkRenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassCreationFeedbackInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + RenderPassCreationFeedbackInfoEXT & operator=( RenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassCreationFeedbackInfoEXT & operator=( VkRenderPassCreationFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkRenderPassCreationFeedbackInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassCreationFeedbackInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassCreationFeedbackInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassCreationFeedbackInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( postMergeSubpassCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassCreationFeedbackInfoEXT const & ) const = default; +#else + bool operator==( RenderPassCreationFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( postMergeSubpassCount == rhs.postMergeSubpassCount ); +# endif + } + + bool operator!=( RenderPassCreationFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t postMergeSubpassCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassCreationFeedbackInfoEXT; + }; +#endif + + // wrapper struct for struct VkRenderPassCreationFeedbackCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassCreationFeedbackCreateInfoEXT.html + struct RenderPassCreationFeedbackCreateInfoEXT + { + using NativeType = VkRenderPassCreationFeedbackCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassCreationFeedbackCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackCreateInfoEXT( RenderPassCreationFeedbackInfoEXT * pRenderPassFeedback_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pRenderPassFeedback{ pRenderPassFeedback_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassCreationFeedbackCreateInfoEXT( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassCreationFeedbackCreateInfoEXT( VkRenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassCreationFeedbackCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + RenderPassCreationFeedbackCreateInfoEXT & operator=( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassCreationFeedbackCreateInfoEXT & operator=( VkRenderPassCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassCreationFeedbackCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreationFeedbackCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreationFeedbackCreateInfoEXT & setPRenderPassFeedback( RenderPassCreationFeedbackInfoEXT * pRenderPassFeedback_ ) & + VULKAN_HPP_NOEXCEPT + { + pRenderPassFeedback = pRenderPassFeedback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassCreationFeedbackCreateInfoEXT && setPRenderPassFeedback( RenderPassCreationFeedbackInfoEXT * pRenderPassFeedback_ ) && + VULKAN_HPP_NOEXCEPT + { + pRenderPassFeedback = pRenderPassFeedback_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassCreationFeedbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassCreationFeedbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassCreationFeedbackCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassCreationFeedbackCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pRenderPassFeedback ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassCreationFeedbackCreateInfoEXT const & ) const = default; +#else + bool operator==( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pRenderPassFeedback == rhs.pRenderPassFeedback ); +# endif + } + + bool operator!=( RenderPassCreationFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassCreationFeedbackCreateInfoEXT; + void const * pNext = {}; + RenderPassCreationFeedbackInfoEXT * pRenderPassFeedback = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassCreationFeedbackCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassCreationFeedbackCreateInfoEXT; + }; + + // wrapper struct for struct VkRenderPassFragmentDensityMapCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapCreateInfoEXT.html + struct RenderPassFragmentDensityMapCreateInfoEXT + { + using NativeType = VkRenderPassFragmentDensityMapCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT( AttachmentReference fragmentDensityMapAttachment_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentDensityMapAttachment{ fragmentDensityMapAttachment_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassFragmentDensityMapCreateInfoEXT( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassFragmentDensityMapCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + RenderPassFragmentDensityMapCreateInfoEXT & operator=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassFragmentDensityMapCreateInfoEXT & operator=( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT & + setFragmentDensityMapAttachment( AttachmentReference const & fragmentDensityMapAttachment_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapAttachment = fragmentDensityMapAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT && + setFragmentDensityMapAttachment( AttachmentReference const & fragmentDensityMapAttachment_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentDensityMapAttachment = fragmentDensityMapAttachment_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassFragmentDensityMapCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassFragmentDensityMapCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassFragmentDensityMapCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassFragmentDensityMapCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityMapAttachment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassFragmentDensityMapCreateInfoEXT const & ) const = default; +#else + bool operator==( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityMapAttachment == rhs.fragmentDensityMapAttachment ); +# endif + } + + bool operator!=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT; + void const * pNext = {}; + AttachmentReference fragmentDensityMapAttachment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassFragmentDensityMapCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassFragmentDensityMapCreateInfoEXT; + }; + + // wrapper struct for struct VkRenderPassFragmentDensityMapOffsetEndInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassFragmentDensityMapOffsetEndInfoEXT.html + struct RenderPassFragmentDensityMapOffsetEndInfoEXT + { + using NativeType = VkRenderPassFragmentDensityMapOffsetEndInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassFragmentDensityMapOffsetEndInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapOffsetEndInfoEXT( uint32_t fragmentDensityOffsetCount_ = {}, + Offset2D const * pFragmentDensityOffsets_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fragmentDensityOffsetCount{ fragmentDensityOffsetCount_ } + , pFragmentDensityOffsets{ pFragmentDensityOffsets_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapOffsetEndInfoEXT( RenderPassFragmentDensityMapOffsetEndInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassFragmentDensityMapOffsetEndInfoEXT( VkRenderPassFragmentDensityMapOffsetEndInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassFragmentDensityMapOffsetEndInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassFragmentDensityMapOffsetEndInfoEXT( ArrayProxyNoTemporaries const & fragmentDensityOffsets_, void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , fragmentDensityOffsetCount( static_cast( fragmentDensityOffsets_.size() ) ) + , pFragmentDensityOffsets( fragmentDensityOffsets_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassFragmentDensityMapOffsetEndInfoEXT & operator=( RenderPassFragmentDensityMapOffsetEndInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassFragmentDensityMapOffsetEndInfoEXT & operator=( VkRenderPassFragmentDensityMapOffsetEndInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapOffsetEndInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapOffsetEndInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapOffsetEndInfoEXT & setFragmentDensityOffsetCount( uint32_t fragmentDensityOffsetCount_ ) & + VULKAN_HPP_NOEXCEPT + { + fragmentDensityOffsetCount = fragmentDensityOffsetCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapOffsetEndInfoEXT && setFragmentDensityOffsetCount( uint32_t fragmentDensityOffsetCount_ ) && + VULKAN_HPP_NOEXCEPT + { + fragmentDensityOffsetCount = fragmentDensityOffsetCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapOffsetEndInfoEXT & setPFragmentDensityOffsets( Offset2D const * pFragmentDensityOffsets_ ) & + VULKAN_HPP_NOEXCEPT + { + pFragmentDensityOffsets = pFragmentDensityOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapOffsetEndInfoEXT && setPFragmentDensityOffsets( Offset2D const * pFragmentDensityOffsets_ ) && + VULKAN_HPP_NOEXCEPT + { + pFragmentDensityOffsets = pFragmentDensityOffsets_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassFragmentDensityMapOffsetEndInfoEXT & + setFragmentDensityOffsets( ArrayProxyNoTemporaries const & fragmentDensityOffsets_ ) VULKAN_HPP_NOEXCEPT + { + fragmentDensityOffsetCount = static_cast( fragmentDensityOffsets_.size() ); + pFragmentDensityOffsets = fragmentDensityOffsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassFragmentDensityMapOffsetEndInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassFragmentDensityMapOffsetEndInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassFragmentDensityMapOffsetEndInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassFragmentDensityMapOffsetEndInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fragmentDensityOffsetCount, pFragmentDensityOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassFragmentDensityMapOffsetEndInfoEXT const & ) const = default; +#else + bool operator==( RenderPassFragmentDensityMapOffsetEndInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fragmentDensityOffsetCount == rhs.fragmentDensityOffsetCount ) && + ( pFragmentDensityOffsets == rhs.pFragmentDensityOffsets ); +# endif + } + + bool operator!=( RenderPassFragmentDensityMapOffsetEndInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassFragmentDensityMapOffsetEndInfoEXT; + void const * pNext = {}; + uint32_t fragmentDensityOffsetCount = {}; + Offset2D const * pFragmentDensityOffsets = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassFragmentDensityMapOffsetEndInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassFragmentDensityMapOffsetEndInfoEXT; + }; + + using SubpassFragmentDensityMapOffsetEndInfoQCOM = RenderPassFragmentDensityMapOffsetEndInfoEXT; + + // wrapper struct for struct VkRenderPassInputAttachmentAspectCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassInputAttachmentAspectCreateInfo.html + struct RenderPassInputAttachmentAspectCreateInfo + { + using NativeType = VkRenderPassInputAttachmentAspectCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassInputAttachmentAspectCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo( uint32_t aspectReferenceCount_ = {}, + InputAttachmentAspectReference const * pAspectReferences_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , aspectReferenceCount{ aspectReferenceCount_ } + , pAspectReferences{ pAspectReferences_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassInputAttachmentAspectCreateInfo( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassInputAttachmentAspectCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassInputAttachmentAspectCreateInfo( ArrayProxyNoTemporaries const & aspectReferences_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), aspectReferenceCount( static_cast( aspectReferences_.size() ) ), pAspectReferences( aspectReferences_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassInputAttachmentAspectCreateInfo & operator=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassInputAttachmentAspectCreateInfo & operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setAspectReferenceCount( uint32_t aspectReferenceCount_ ) & VULKAN_HPP_NOEXCEPT + { + aspectReferenceCount = aspectReferenceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo && setAspectReferenceCount( uint32_t aspectReferenceCount_ ) && VULKAN_HPP_NOEXCEPT + { + aspectReferenceCount = aspectReferenceCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & setPAspectReferences( InputAttachmentAspectReference const * pAspectReferences_ ) & + VULKAN_HPP_NOEXCEPT + { + pAspectReferences = pAspectReferences_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo && setPAspectReferences( InputAttachmentAspectReference const * pAspectReferences_ ) && + VULKAN_HPP_NOEXCEPT + { + pAspectReferences = pAspectReferences_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassInputAttachmentAspectCreateInfo & + setAspectReferences( ArrayProxyNoTemporaries const & aspectReferences_ ) VULKAN_HPP_NOEXCEPT + { + aspectReferenceCount = static_cast( aspectReferences_.size() ); + pAspectReferences = aspectReferences_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassInputAttachmentAspectCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassInputAttachmentAspectCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassInputAttachmentAspectCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassInputAttachmentAspectCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, aspectReferenceCount, pAspectReferences ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassInputAttachmentAspectCreateInfo const & ) const = default; +#else + bool operator==( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( aspectReferenceCount == rhs.aspectReferenceCount ) && + ( pAspectReferences == rhs.pAspectReferences ); +# endif + } + + bool operator!=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfo; + void const * pNext = {}; + uint32_t aspectReferenceCount = {}; + InputAttachmentAspectReference const * pAspectReferences = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassInputAttachmentAspectCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassInputAttachmentAspectCreateInfo; + }; + + using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo; + + // wrapper struct for struct VkRenderPassMultiviewCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassMultiviewCreateInfo.html + struct RenderPassMultiviewCreateInfo + { + using NativeType = VkRenderPassMultiviewCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassMultiviewCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo( uint32_t subpassCount_ = {}, + uint32_t const * pViewMasks_ = {}, + uint32_t dependencyCount_ = {}, + int32_t const * pViewOffsets_ = {}, + uint32_t correlationMaskCount_ = {}, + uint32_t const * pCorrelationMasks_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , subpassCount{ subpassCount_ } + , pViewMasks{ pViewMasks_ } + , dependencyCount{ dependencyCount_ } + , pViewOffsets{ pViewOffsets_ } + , correlationMaskCount{ correlationMaskCount_ } + , pCorrelationMasks{ pCorrelationMasks_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassMultiviewCreateInfo( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassMultiviewCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassMultiviewCreateInfo( ArrayProxyNoTemporaries const & viewMasks_, + ArrayProxyNoTemporaries const & viewOffsets_ = {}, + ArrayProxyNoTemporaries const & correlationMasks_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , subpassCount( static_cast( viewMasks_.size() ) ) + , pViewMasks( viewMasks_.data() ) + , dependencyCount( static_cast( viewOffsets_.size() ) ) + , pViewOffsets( viewOffsets_.data() ) + , correlationMaskCount( static_cast( correlationMasks_.size() ) ) + , pCorrelationMasks( correlationMasks_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassMultiviewCreateInfo & operator=( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassMultiviewCreateInfo & operator=( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setSubpassCount( uint32_t subpassCount_ ) & VULKAN_HPP_NOEXCEPT + { + subpassCount = subpassCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo && setSubpassCount( uint32_t subpassCount_ ) && VULKAN_HPP_NOEXCEPT + { + subpassCount = subpassCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPViewMasks( uint32_t const * pViewMasks_ ) & VULKAN_HPP_NOEXCEPT + { + pViewMasks = pViewMasks_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo && setPViewMasks( uint32_t const * pViewMasks_ ) && VULKAN_HPP_NOEXCEPT + { + pViewMasks = pViewMasks_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassMultiviewCreateInfo & setViewMasks( ArrayProxyNoTemporaries const & viewMasks_ ) VULKAN_HPP_NOEXCEPT + { + subpassCount = static_cast( viewMasks_.size() ); + pViewMasks = viewMasks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) & VULKAN_HPP_NOEXCEPT + { + dependencyCount = dependencyCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo && setDependencyCount( uint32_t dependencyCount_ ) && VULKAN_HPP_NOEXCEPT + { + dependencyCount = dependencyCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPViewOffsets( int32_t const * pViewOffsets_ ) & VULKAN_HPP_NOEXCEPT + { + pViewOffsets = pViewOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo && setPViewOffsets( int32_t const * pViewOffsets_ ) && VULKAN_HPP_NOEXCEPT + { + pViewOffsets = pViewOffsets_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassMultiviewCreateInfo & setViewOffsets( ArrayProxyNoTemporaries const & viewOffsets_ ) VULKAN_HPP_NOEXCEPT + { + dependencyCount = static_cast( viewOffsets_.size() ); + pViewOffsets = viewOffsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setCorrelationMaskCount( uint32_t correlationMaskCount_ ) & VULKAN_HPP_NOEXCEPT + { + correlationMaskCount = correlationMaskCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo && setCorrelationMaskCount( uint32_t correlationMaskCount_ ) && VULKAN_HPP_NOEXCEPT + { + correlationMaskCount = correlationMaskCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & setPCorrelationMasks( uint32_t const * pCorrelationMasks_ ) & VULKAN_HPP_NOEXCEPT + { + pCorrelationMasks = pCorrelationMasks_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo && setPCorrelationMasks( uint32_t const * pCorrelationMasks_ ) && VULKAN_HPP_NOEXCEPT + { + pCorrelationMasks = pCorrelationMasks_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassMultiviewCreateInfo & setCorrelationMasks( ArrayProxyNoTemporaries const & correlationMasks_ ) VULKAN_HPP_NOEXCEPT + { + correlationMaskCount = static_cast( correlationMasks_.size() ); + pCorrelationMasks = correlationMasks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassMultiviewCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassMultiviewCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassMultiviewCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassMultiviewCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subpassCount, pViewMasks, dependencyCount, pViewOffsets, correlationMaskCount, pCorrelationMasks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassMultiviewCreateInfo const & ) const = default; +#else + bool operator==( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subpassCount == rhs.subpassCount ) && ( pViewMasks == rhs.pViewMasks ) && + ( dependencyCount == rhs.dependencyCount ) && ( pViewOffsets == rhs.pViewOffsets ) && ( correlationMaskCount == rhs.correlationMaskCount ) && + ( pCorrelationMasks == rhs.pCorrelationMasks ); +# endif + } + + bool operator!=( RenderPassMultiviewCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassMultiviewCreateInfo; + void const * pNext = {}; + uint32_t subpassCount = {}; + uint32_t const * pViewMasks = {}; + uint32_t dependencyCount = {}; + int32_t const * pViewOffsets = {}; + uint32_t correlationMaskCount = {}; + uint32_t const * pCorrelationMasks = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassMultiviewCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassMultiviewCreateInfo; + }; + + using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo; + + // wrapper struct for struct VkRenderPassPerformanceCountersByRegionBeginInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassPerformanceCountersByRegionBeginInfoARM.html + struct RenderPassPerformanceCountersByRegionBeginInfoARM + { + using NativeType = VkRenderPassPerformanceCountersByRegionBeginInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassPerformanceCountersByRegionBeginInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassPerformanceCountersByRegionBeginInfoARM( uint32_t counterAddressCount_ = {}, + DeviceAddress const * pCounterAddresses_ = {}, + Bool32 serializeRegions_ = {}, + uint32_t counterIndexCount_ = {}, + uint32_t * pCounterIndices_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , counterAddressCount{ counterAddressCount_ } + , pCounterAddresses{ pCounterAddresses_ } + , serializeRegions{ serializeRegions_ } + , counterIndexCount{ counterIndexCount_ } + , pCounterIndices{ pCounterIndices_ } + { + } + + VULKAN_HPP_CONSTEXPR + RenderPassPerformanceCountersByRegionBeginInfoARM( RenderPassPerformanceCountersByRegionBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassPerformanceCountersByRegionBeginInfoARM( VkRenderPassPerformanceCountersByRegionBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassPerformanceCountersByRegionBeginInfoARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassPerformanceCountersByRegionBeginInfoARM( ArrayProxyNoTemporaries const & counterAddresses_, + Bool32 serializeRegions_ = {}, + ArrayProxyNoTemporaries const & counterIndices_ = {}, + void * pNext_ = nullptr ) + : pNext( pNext_ ) + , counterAddressCount( static_cast( counterAddresses_.size() ) ) + , pCounterAddresses( counterAddresses_.data() ) + , serializeRegions( serializeRegions_ ) + , counterIndexCount( static_cast( counterIndices_.size() ) ) + , pCounterIndices( counterIndices_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassPerformanceCountersByRegionBeginInfoARM & + operator=( RenderPassPerformanceCountersByRegionBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassPerformanceCountersByRegionBeginInfoARM & operator=( VkRenderPassPerformanceCountersByRegionBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM & setCounterAddressCount( uint32_t counterAddressCount_ ) & VULKAN_HPP_NOEXCEPT + { + counterAddressCount = counterAddressCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM && setCounterAddressCount( uint32_t counterAddressCount_ ) && VULKAN_HPP_NOEXCEPT + { + counterAddressCount = counterAddressCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM & setPCounterAddresses( DeviceAddress const * pCounterAddresses_ ) & + VULKAN_HPP_NOEXCEPT + { + pCounterAddresses = pCounterAddresses_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM && setPCounterAddresses( DeviceAddress const * pCounterAddresses_ ) && + VULKAN_HPP_NOEXCEPT + { + pCounterAddresses = pCounterAddresses_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassPerformanceCountersByRegionBeginInfoARM & + setCounterAddresses( ArrayProxyNoTemporaries const & counterAddresses_ ) VULKAN_HPP_NOEXCEPT + { + counterAddressCount = static_cast( counterAddresses_.size() ); + pCounterAddresses = counterAddresses_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM & setSerializeRegions( Bool32 serializeRegions_ ) & VULKAN_HPP_NOEXCEPT + { + serializeRegions = serializeRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM && setSerializeRegions( Bool32 serializeRegions_ ) && VULKAN_HPP_NOEXCEPT + { + serializeRegions = serializeRegions_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM & setCounterIndexCount( uint32_t counterIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + counterIndexCount = counterIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM && setCounterIndexCount( uint32_t counterIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + counterIndexCount = counterIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM & setPCounterIndices( uint32_t * pCounterIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pCounterIndices = pCounterIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassPerformanceCountersByRegionBeginInfoARM && setPCounterIndices( uint32_t * pCounterIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pCounterIndices = pCounterIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassPerformanceCountersByRegionBeginInfoARM & setCounterIndices( ArrayProxyNoTemporaries const & counterIndices_ ) VULKAN_HPP_NOEXCEPT + { + counterIndexCount = static_cast( counterIndices_.size() ); + pCounterIndices = counterIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassPerformanceCountersByRegionBeginInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassPerformanceCountersByRegionBeginInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassPerformanceCountersByRegionBeginInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassPerformanceCountersByRegionBeginInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, counterAddressCount, pCounterAddresses, serializeRegions, counterIndexCount, pCounterIndices ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassPerformanceCountersByRegionBeginInfoARM const & ) const = default; +#else + bool operator==( RenderPassPerformanceCountersByRegionBeginInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( counterAddressCount == rhs.counterAddressCount ) && + ( pCounterAddresses == rhs.pCounterAddresses ) && ( serializeRegions == rhs.serializeRegions ) && ( counterIndexCount == rhs.counterIndexCount ) && + ( pCounterIndices == rhs.pCounterIndices ); +# endif + } + + bool operator!=( RenderPassPerformanceCountersByRegionBeginInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassPerformanceCountersByRegionBeginInfoARM; + void * pNext = {}; + uint32_t counterAddressCount = {}; + DeviceAddress const * pCounterAddresses = {}; + Bool32 serializeRegions = {}; + uint32_t counterIndexCount = {}; + uint32_t * pCounterIndices = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassPerformanceCountersByRegionBeginInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassPerformanceCountersByRegionBeginInfoARM; + }; + + // wrapper struct for struct VkSubpassSampleLocationsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassSampleLocationsEXT.html + struct SubpassSampleLocationsEXT + { + using NativeType = VkSubpassSampleLocationsEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT( uint32_t subpassIndex_ = {}, SampleLocationsInfoEXT sampleLocationsInfo_ = {} ) VULKAN_HPP_NOEXCEPT + : subpassIndex{ subpassIndex_ } + , sampleLocationsInfo{ sampleLocationsInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassSampleLocationsEXT( *reinterpret_cast( &rhs ) ) + { + } + + SubpassSampleLocationsEXT & operator=( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubpassSampleLocationsEXT & operator=( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & setSubpassIndex( uint32_t subpassIndex_ ) & VULKAN_HPP_NOEXCEPT + { + subpassIndex = subpassIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT && setSubpassIndex( uint32_t subpassIndex_ ) && VULKAN_HPP_NOEXCEPT + { + subpassIndex = subpassIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & setSampleLocationsInfo( SampleLocationsInfoEXT const & sampleLocationsInfo_ ) & VULKAN_HPP_NOEXCEPT + { + sampleLocationsInfo = sampleLocationsInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT && setSampleLocationsInfo( SampleLocationsInfoEXT const & sampleLocationsInfo_ ) && VULKAN_HPP_NOEXCEPT + { + sampleLocationsInfo = sampleLocationsInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubpassSampleLocationsEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassSampleLocationsEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassSampleLocationsEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubpassSampleLocationsEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( subpassIndex, sampleLocationsInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassSampleLocationsEXT const & ) const = default; +#else + bool operator==( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( subpassIndex == rhs.subpassIndex ) && ( sampleLocationsInfo == rhs.sampleLocationsInfo ); +# endif + } + + bool operator!=( SubpassSampleLocationsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t subpassIndex = {}; + SampleLocationsInfoEXT sampleLocationsInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubpassSampleLocationsEXT; + }; +#endif + + // wrapper struct for struct VkRenderPassSampleLocationsBeginInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassSampleLocationsBeginInfoEXT.html + struct RenderPassSampleLocationsBeginInfoEXT + { + using NativeType = VkRenderPassSampleLocationsBeginInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassSampleLocationsBeginInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = {}, + AttachmentSampleLocationsEXT const * pAttachmentInitialSampleLocations_ = {}, + uint32_t postSubpassSampleLocationsCount_ = {}, + SubpassSampleLocationsEXT const * pPostSubpassSampleLocations_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , attachmentInitialSampleLocationsCount{ attachmentInitialSampleLocationsCount_ } + , pAttachmentInitialSampleLocations{ pAttachmentInitialSampleLocations_ } + , postSubpassSampleLocationsCount{ postSubpassSampleLocationsCount_ } + , pPostSubpassSampleLocations{ pPostSubpassSampleLocations_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassSampleLocationsBeginInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassSampleLocationsBeginInfoEXT( ArrayProxyNoTemporaries const & attachmentInitialSampleLocations_, + ArrayProxyNoTemporaries const & postSubpassSampleLocations_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , attachmentInitialSampleLocationsCount( static_cast( attachmentInitialSampleLocations_.size() ) ) + , pAttachmentInitialSampleLocations( attachmentInitialSampleLocations_.data() ) + , postSubpassSampleLocationsCount( static_cast( postSubpassSampleLocations_.size() ) ) + , pPostSubpassSampleLocations( postSubpassSampleLocations_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassSampleLocationsBeginInfoEXT & operator=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassSampleLocationsBeginInfoEXT & operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & + setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ ) & + VULKAN_HPP_NOEXCEPT + { + attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT && + setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ ) && + VULKAN_HPP_NOEXCEPT + { + attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & + setPAttachmentInitialSampleLocations( AttachmentSampleLocationsEXT const * pAttachmentInitialSampleLocations_ ) & + VULKAN_HPP_NOEXCEPT + { + pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT && + setPAttachmentInitialSampleLocations( AttachmentSampleLocationsEXT const * pAttachmentInitialSampleLocations_ ) && + VULKAN_HPP_NOEXCEPT + { + pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassSampleLocationsBeginInfoEXT & setAttachmentInitialSampleLocations( + ArrayProxyNoTemporaries const & attachmentInitialSampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + attachmentInitialSampleLocationsCount = static_cast( attachmentInitialSampleLocations_.size() ); + pAttachmentInitialSampleLocations = attachmentInitialSampleLocations_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ ) & + VULKAN_HPP_NOEXCEPT + { + postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT && setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ ) && + VULKAN_HPP_NOEXCEPT + { + postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & + setPPostSubpassSampleLocations( SubpassSampleLocationsEXT const * pPostSubpassSampleLocations_ ) & + VULKAN_HPP_NOEXCEPT + { + pPostSubpassSampleLocations = pPostSubpassSampleLocations_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT && + setPPostSubpassSampleLocations( SubpassSampleLocationsEXT const * pPostSubpassSampleLocations_ ) && + VULKAN_HPP_NOEXCEPT + { + pPostSubpassSampleLocations = pPostSubpassSampleLocations_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassSampleLocationsBeginInfoEXT & + setPostSubpassSampleLocations( ArrayProxyNoTemporaries const & postSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT + { + postSubpassSampleLocationsCount = static_cast( postSubpassSampleLocations_.size() ); + pPostSubpassSampleLocations = postSubpassSampleLocations_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassSampleLocationsBeginInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassSampleLocationsBeginInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassSampleLocationsBeginInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassSampleLocationsBeginInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, attachmentInitialSampleLocationsCount, pAttachmentInitialSampleLocations, postSubpassSampleLocationsCount, pPostSubpassSampleLocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassSampleLocationsBeginInfoEXT const & ) const = default; +#else + bool operator==( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount ) && + ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations ) && + ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount ) && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations ); +# endif + } + + bool operator!=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT; + void const * pNext = {}; + uint32_t attachmentInitialSampleLocationsCount = {}; + AttachmentSampleLocationsEXT const * pAttachmentInitialSampleLocations = {}; + uint32_t postSubpassSampleLocationsCount = {}; + SubpassSampleLocationsEXT const * pPostSubpassSampleLocations = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassSampleLocationsBeginInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassSampleLocationsBeginInfoEXT; + }; + + // wrapper struct for struct VkRenderPassStripeInfoARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassStripeInfoARM.html + struct RenderPassStripeInfoARM + { + using NativeType = VkRenderPassStripeInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassStripeInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassStripeInfoARM( Rect2D stripeArea_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stripeArea{ stripeArea_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassStripeInfoARM( RenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassStripeInfoARM( VkRenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassStripeInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + RenderPassStripeInfoARM & operator=( RenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassStripeInfoARM & operator=( VkRenderPassStripeInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeInfoARM & setStripeArea( Rect2D const & stripeArea_ ) & VULKAN_HPP_NOEXCEPT + { + stripeArea = stripeArea_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeInfoARM && setStripeArea( Rect2D const & stripeArea_ ) && VULKAN_HPP_NOEXCEPT + { + stripeArea = stripeArea_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassStripeInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassStripeInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassStripeInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassStripeInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stripeArea ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassStripeInfoARM const & ) const = default; +#else + bool operator==( RenderPassStripeInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeArea == rhs.stripeArea ); +# endif + } + + bool operator!=( RenderPassStripeInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassStripeInfoARM; + void const * pNext = {}; + Rect2D stripeArea = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassStripeInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassStripeInfoARM; + }; + + // wrapper struct for struct VkRenderPassStripeBeginInfoARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassStripeBeginInfoARM.html + struct RenderPassStripeBeginInfoARM + { + using NativeType = VkRenderPassStripeBeginInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassStripeBeginInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassStripeBeginInfoARM( uint32_t stripeInfoCount_ = {}, + RenderPassStripeInfoARM const * pStripeInfos_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stripeInfoCount{ stripeInfoCount_ } + , pStripeInfos{ pStripeInfos_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassStripeBeginInfoARM( RenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassStripeBeginInfoARM( VkRenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassStripeBeginInfoARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassStripeBeginInfoARM( ArrayProxyNoTemporaries const & stripeInfos_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), stripeInfoCount( static_cast( stripeInfos_.size() ) ), pStripeInfos( stripeInfos_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassStripeBeginInfoARM & operator=( RenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassStripeBeginInfoARM & operator=( VkRenderPassStripeBeginInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM & setStripeInfoCount( uint32_t stripeInfoCount_ ) & VULKAN_HPP_NOEXCEPT + { + stripeInfoCount = stripeInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM && setStripeInfoCount( uint32_t stripeInfoCount_ ) && VULKAN_HPP_NOEXCEPT + { + stripeInfoCount = stripeInfoCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM & setPStripeInfos( RenderPassStripeInfoARM const * pStripeInfos_ ) & VULKAN_HPP_NOEXCEPT + { + pStripeInfos = pStripeInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeBeginInfoARM && setPStripeInfos( RenderPassStripeInfoARM const * pStripeInfos_ ) && VULKAN_HPP_NOEXCEPT + { + pStripeInfos = pStripeInfos_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassStripeBeginInfoARM & setStripeInfos( ArrayProxyNoTemporaries const & stripeInfos_ ) VULKAN_HPP_NOEXCEPT + { + stripeInfoCount = static_cast( stripeInfos_.size() ); + pStripeInfos = stripeInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassStripeBeginInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassStripeBeginInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassStripeBeginInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassStripeBeginInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stripeInfoCount, pStripeInfos ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassStripeBeginInfoARM const & ) const = default; +#else + bool operator==( RenderPassStripeBeginInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeInfoCount == rhs.stripeInfoCount ) && ( pStripeInfos == rhs.pStripeInfos ); +# endif + } + + bool operator!=( RenderPassStripeBeginInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassStripeBeginInfoARM; + void const * pNext = {}; + uint32_t stripeInfoCount = {}; + RenderPassStripeInfoARM const * pStripeInfos = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassStripeBeginInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassStripeBeginInfoARM; + }; + + // wrapper struct for struct VkSemaphoreSubmitInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreSubmitInfo.html + struct SemaphoreSubmitInfo + { + using NativeType = VkSemaphoreSubmitInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSubmitInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( Semaphore semaphore_ = {}, + uint64_t value_ = {}, + PipelineStageFlags2 stageMask_ = {}, + uint32_t deviceIndex_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , semaphore{ semaphore_ } + , value{ value_ } + , stageMask{ stageMask_ } + , deviceIndex{ deviceIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfo( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreSubmitInfo( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreSubmitInfo( *reinterpret_cast( &rhs ) ) + { + } + + SemaphoreSubmitInfo & operator=( SemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SemaphoreSubmitInfo & operator=( VkSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setSemaphore( Semaphore semaphore_ ) & VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo && setSemaphore( Semaphore semaphore_ ) && VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setValue( uint64_t value_ ) & VULKAN_HPP_NOEXCEPT + { + value = value_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo && setValue( uint64_t value_ ) && VULKAN_HPP_NOEXCEPT + { + value = value_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setStageMask( PipelineStageFlags2 stageMask_ ) & VULKAN_HPP_NOEXCEPT + { + stageMask = stageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo && setStageMask( PipelineStageFlags2 stageMask_ ) && VULKAN_HPP_NOEXCEPT + { + stageMask = stageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo & setDeviceIndex( uint32_t deviceIndex_ ) & VULKAN_HPP_NOEXCEPT + { + deviceIndex = deviceIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfo && setDeviceIndex( uint32_t deviceIndex_ ) && VULKAN_HPP_NOEXCEPT + { + deviceIndex = deviceIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreSubmitInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSemaphoreSubmitInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, value, stageMask, deviceIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreSubmitInfo const & ) const = default; +#else + bool operator==( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( value == rhs.value ) && ( stageMask == rhs.stageMask ) && + ( deviceIndex == rhs.deviceIndex ); +# endif + } + + bool operator!=( SemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSemaphoreSubmitInfo; + void const * pNext = {}; + Semaphore semaphore = {}; + uint64_t value = {}; + PipelineStageFlags2 stageMask = {}; + uint32_t deviceIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SemaphoreSubmitInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SemaphoreSubmitInfo; + }; + + using SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo; + + // wrapper struct for struct VkRenderPassStripeSubmitInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassStripeSubmitInfoARM.html + struct RenderPassStripeSubmitInfoARM + { + using NativeType = VkRenderPassStripeSubmitInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassStripeSubmitInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassStripeSubmitInfoARM( uint32_t stripeSemaphoreInfoCount_ = {}, + SemaphoreSubmitInfo const * pStripeSemaphoreInfos_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stripeSemaphoreInfoCount{ stripeSemaphoreInfoCount_ } + , pStripeSemaphoreInfos{ pStripeSemaphoreInfos_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassStripeSubmitInfoARM( RenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassStripeSubmitInfoARM( VkRenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassStripeSubmitInfoARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassStripeSubmitInfoARM( ArrayProxyNoTemporaries const & stripeSemaphoreInfos_, void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , stripeSemaphoreInfoCount( static_cast( stripeSemaphoreInfos_.size() ) ) + , pStripeSemaphoreInfos( stripeSemaphoreInfos_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderPassStripeSubmitInfoARM & operator=( RenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassStripeSubmitInfoARM & operator=( VkRenderPassStripeSubmitInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM & setStripeSemaphoreInfoCount( uint32_t stripeSemaphoreInfoCount_ ) & VULKAN_HPP_NOEXCEPT + { + stripeSemaphoreInfoCount = stripeSemaphoreInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM && setStripeSemaphoreInfoCount( uint32_t stripeSemaphoreInfoCount_ ) && VULKAN_HPP_NOEXCEPT + { + stripeSemaphoreInfoCount = stripeSemaphoreInfoCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM & setPStripeSemaphoreInfos( SemaphoreSubmitInfo const * pStripeSemaphoreInfos_ ) & VULKAN_HPP_NOEXCEPT + { + pStripeSemaphoreInfos = pStripeSemaphoreInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassStripeSubmitInfoARM && setPStripeSemaphoreInfos( SemaphoreSubmitInfo const * pStripeSemaphoreInfos_ ) && + VULKAN_HPP_NOEXCEPT + { + pStripeSemaphoreInfos = pStripeSemaphoreInfos_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderPassStripeSubmitInfoARM & + setStripeSemaphoreInfos( ArrayProxyNoTemporaries const & stripeSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT + { + stripeSemaphoreInfoCount = static_cast( stripeSemaphoreInfos_.size() ); + pStripeSemaphoreInfos = stripeSemaphoreInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassStripeSubmitInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassStripeSubmitInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassStripeSubmitInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassStripeSubmitInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stripeSemaphoreInfoCount, pStripeSemaphoreInfos ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassStripeSubmitInfoARM const & ) const = default; +#else + bool operator==( RenderPassStripeSubmitInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stripeSemaphoreInfoCount == rhs.stripeSemaphoreInfoCount ) && + ( pStripeSemaphoreInfos == rhs.pStripeSemaphoreInfos ); +# endif + } + + bool operator!=( RenderPassStripeSubmitInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassStripeSubmitInfoARM; + void const * pNext = {}; + uint32_t stripeSemaphoreInfoCount = {}; + SemaphoreSubmitInfo const * pStripeSemaphoreInfos = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassStripeSubmitInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassStripeSubmitInfoARM; + }; + + // wrapper struct for struct VkRenderPassSubpassFeedbackInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackInfoEXT.html + struct RenderPassSubpassFeedbackInfoEXT + { + using NativeType = VkRenderPassSubpassFeedbackInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackInfoEXT( SubpassMergeStatusEXT subpassMergeStatus_ = SubpassMergeStatusEXT::eMerged, + std::array const & description_ = {}, + uint32_t postMergeIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : subpassMergeStatus{ subpassMergeStatus_ } + , description{ description_ } + , postMergeIndex{ postMergeIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackInfoEXT( RenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassSubpassFeedbackInfoEXT( VkRenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassSubpassFeedbackInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + RenderPassSubpassFeedbackInfoEXT & operator=( RenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassSubpassFeedbackInfoEXT & operator=( VkRenderPassSubpassFeedbackInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkRenderPassSubpassFeedbackInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassSubpassFeedbackInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassSubpassFeedbackInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassSubpassFeedbackInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, uint32_t const &> reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( subpassMergeStatus, description, postMergeIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( RenderPassSubpassFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = subpassMergeStatus <=> rhs.subpassMergeStatus; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = postMergeIndex <=> rhs.postMergeIndex; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( RenderPassSubpassFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( subpassMergeStatus == rhs.subpassMergeStatus ) && ( strcmp( description, rhs.description ) == 0 ) && ( postMergeIndex == rhs.postMergeIndex ); + } + + bool operator!=( RenderPassSubpassFeedbackInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + SubpassMergeStatusEXT subpassMergeStatus = SubpassMergeStatusEXT::eMerged; + ArrayWrapper1D description = {}; + uint32_t postMergeIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassSubpassFeedbackInfoEXT; + }; +#endif + + // wrapper struct for struct VkRenderPassSubpassFeedbackCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassSubpassFeedbackCreateInfoEXT.html + struct RenderPassSubpassFeedbackCreateInfoEXT + { + using NativeType = VkRenderPassSubpassFeedbackCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassSubpassFeedbackCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT( RenderPassSubpassFeedbackInfoEXT * pSubpassFeedback_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pSubpassFeedback{ pSubpassFeedback_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassSubpassFeedbackCreateInfoEXT( VkRenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassSubpassFeedbackCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + RenderPassSubpassFeedbackCreateInfoEXT & operator=( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassSubpassFeedbackCreateInfoEXT & operator=( VkRenderPassSubpassFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT & setPSubpassFeedback( RenderPassSubpassFeedbackInfoEXT * pSubpassFeedback_ ) & + VULKAN_HPP_NOEXCEPT + { + pSubpassFeedback = pSubpassFeedback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassSubpassFeedbackCreateInfoEXT && setPSubpassFeedback( RenderPassSubpassFeedbackInfoEXT * pSubpassFeedback_ ) && + VULKAN_HPP_NOEXCEPT + { + pSubpassFeedback = pSubpassFeedback_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassSubpassFeedbackCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassSubpassFeedbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassSubpassFeedbackCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassSubpassFeedbackCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pSubpassFeedback ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassSubpassFeedbackCreateInfoEXT const & ) const = default; +#else + bool operator==( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pSubpassFeedback == rhs.pSubpassFeedback ); +# endif + } + + bool operator!=( RenderPassSubpassFeedbackCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassSubpassFeedbackCreateInfoEXT; + void const * pNext = {}; + RenderPassSubpassFeedbackInfoEXT * pSubpassFeedback = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassSubpassFeedbackCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassSubpassFeedbackCreateInfoEXT; + }; + + // wrapper struct for struct VkRenderPassTileShadingCreateInfoQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassTileShadingCreateInfoQCOM.html + struct RenderPassTileShadingCreateInfoQCOM + { + using NativeType = VkRenderPassTileShadingCreateInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassTileShadingCreateInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassTileShadingCreateInfoQCOM( TileShadingRenderPassFlagsQCOM flags_ = {}, + Extent2D tileApronSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , tileApronSize{ tileApronSize_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassTileShadingCreateInfoQCOM( RenderPassTileShadingCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassTileShadingCreateInfoQCOM( VkRenderPassTileShadingCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassTileShadingCreateInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + RenderPassTileShadingCreateInfoQCOM & operator=( RenderPassTileShadingCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassTileShadingCreateInfoQCOM & operator=( VkRenderPassTileShadingCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassTileShadingCreateInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassTileShadingCreateInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassTileShadingCreateInfoQCOM & setFlags( TileShadingRenderPassFlagsQCOM flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassTileShadingCreateInfoQCOM && setFlags( TileShadingRenderPassFlagsQCOM flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassTileShadingCreateInfoQCOM & setTileApronSize( Extent2D const & tileApronSize_ ) & VULKAN_HPP_NOEXCEPT + { + tileApronSize = tileApronSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassTileShadingCreateInfoQCOM && setTileApronSize( Extent2D const & tileApronSize_ ) && VULKAN_HPP_NOEXCEPT + { + tileApronSize = tileApronSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassTileShadingCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassTileShadingCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassTileShadingCreateInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassTileShadingCreateInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, tileApronSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassTileShadingCreateInfoQCOM const & ) const = default; +#else + bool operator==( RenderPassTileShadingCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( tileApronSize == rhs.tileApronSize ); +# endif + } + + bool operator!=( RenderPassTileShadingCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassTileShadingCreateInfoQCOM; + void const * pNext = {}; + TileShadingRenderPassFlagsQCOM flags = {}; + Extent2D tileApronSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassTileShadingCreateInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassTileShadingCreateInfoQCOM; + }; + + // wrapper struct for struct VkRenderPassTransformBeginInfoQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderPassTransformBeginInfoQCOM.html + struct RenderPassTransformBeginInfoQCOM + { + using NativeType = VkRenderPassTransformBeginInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassTransformBeginInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM( SurfaceTransformFlagBitsKHR transform_ = SurfaceTransformFlagBitsKHR::eIdentity, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , transform{ transform_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderPassTransformBeginInfoQCOM( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderPassTransformBeginInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + RenderPassTransformBeginInfoQCOM & operator=( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderPassTransformBeginInfoQCOM & operator=( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & setTransform( SurfaceTransformFlagBitsKHR transform_ ) & VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM && setTransform( SurfaceTransformFlagBitsKHR transform_ ) && VULKAN_HPP_NOEXCEPT + { + transform = transform_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderPassTransformBeginInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassTransformBeginInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderPassTransformBeginInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderPassTransformBeginInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, transform ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderPassTransformBeginInfoQCOM const & ) const = default; +#else + bool operator==( RenderPassTransformBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( transform == rhs.transform ); +# endif + } + + bool operator!=( RenderPassTransformBeginInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderPassTransformBeginInfoQCOM; + void const * pNext = {}; + SurfaceTransformFlagBitsKHR transform = SurfaceTransformFlagBitsKHR::eIdentity; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderPassTransformBeginInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = RenderPassTransformBeginInfoQCOM; + }; + + // wrapper struct for struct VkRenderingAreaInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingAreaInfo.html + struct RenderingAreaInfo + { + using NativeType = VkRenderingAreaInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingAreaInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderingAreaInfo( uint32_t viewMask_ = {}, + uint32_t colorAttachmentCount_ = {}, + Format const * pColorAttachmentFormats_ = {}, + Format depthAttachmentFormat_ = Format::eUndefined, + Format stencilAttachmentFormat_ = Format::eUndefined, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , viewMask{ viewMask_ } + , colorAttachmentCount{ colorAttachmentCount_ } + , pColorAttachmentFormats{ pColorAttachmentFormats_ } + , depthAttachmentFormat{ depthAttachmentFormat_ } + , stencilAttachmentFormat{ stencilAttachmentFormat_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderingAreaInfo( RenderingAreaInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingAreaInfo( VkRenderingAreaInfo const & rhs ) VULKAN_HPP_NOEXCEPT : RenderingAreaInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderingAreaInfo( uint32_t viewMask_, + ArrayProxyNoTemporaries const & colorAttachmentFormats_, + Format depthAttachmentFormat_ = Format::eUndefined, + Format stencilAttachmentFormat_ = Format::eUndefined, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , viewMask( viewMask_ ) + , colorAttachmentCount( static_cast( colorAttachmentFormats_.size() ) ) + , pColorAttachmentFormats( colorAttachmentFormats_.data() ) + , depthAttachmentFormat( depthAttachmentFormat_ ) + , stencilAttachmentFormat( stencilAttachmentFormat_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderingAreaInfo & operator=( RenderingAreaInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderingAreaInfo & operator=( VkRenderingAreaInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setViewMask( uint32_t viewMask_ ) & VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo && setViewMask( uint32_t viewMask_ ) && VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo && setColorAttachmentCount( uint32_t colorAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setPColorAttachmentFormats( Format const * pColorAttachmentFormats_ ) & VULKAN_HPP_NOEXCEPT + { + pColorAttachmentFormats = pColorAttachmentFormats_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo && setPColorAttachmentFormats( Format const * pColorAttachmentFormats_ ) && VULKAN_HPP_NOEXCEPT + { + pColorAttachmentFormats = pColorAttachmentFormats_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderingAreaInfo & setColorAttachmentFormats( ArrayProxyNoTemporaries const & colorAttachmentFormats_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachmentFormats_.size() ); + pColorAttachmentFormats = colorAttachmentFormats_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setDepthAttachmentFormat( Format depthAttachmentFormat_ ) & VULKAN_HPP_NOEXCEPT + { + depthAttachmentFormat = depthAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo && setDepthAttachmentFormat( Format depthAttachmentFormat_ ) && VULKAN_HPP_NOEXCEPT + { + depthAttachmentFormat = depthAttachmentFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo & setStencilAttachmentFormat( Format stencilAttachmentFormat_ ) & VULKAN_HPP_NOEXCEPT + { + stencilAttachmentFormat = stencilAttachmentFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAreaInfo && setStencilAttachmentFormat( Format stencilAttachmentFormat_ ) && VULKAN_HPP_NOEXCEPT + { + stencilAttachmentFormat = stencilAttachmentFormat_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderingAreaInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingAreaInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingAreaInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderingAreaInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, viewMask, colorAttachmentCount, pColorAttachmentFormats, depthAttachmentFormat, stencilAttachmentFormat ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingAreaInfo const & ) const = default; +#else + bool operator==( RenderingAreaInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( viewMask == rhs.viewMask ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) && + ( pColorAttachmentFormats == rhs.pColorAttachmentFormats ) && ( depthAttachmentFormat == rhs.depthAttachmentFormat ) && + ( stencilAttachmentFormat == rhs.stencilAttachmentFormat ); +# endif + } + + bool operator!=( RenderingAreaInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderingAreaInfo; + void const * pNext = {}; + uint32_t viewMask = {}; + uint32_t colorAttachmentCount = {}; + Format const * pColorAttachmentFormats = {}; + Format depthAttachmentFormat = Format::eUndefined; + Format stencilAttachmentFormat = Format::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderingAreaInfo; + }; +#endif + + template <> + struct CppType + { + using Type = RenderingAreaInfo; + }; + + using RenderingAreaInfoKHR = RenderingAreaInfo; + + // wrapper struct for struct VkRenderingAttachmentFlagsInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingAttachmentFlagsInfoKHR.html + struct RenderingAttachmentFlagsInfoKHR + { + using NativeType = VkRenderingAttachmentFlagsInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingAttachmentFlagsInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderingAttachmentFlagsInfoKHR( RenderingAttachmentFlagsKHR flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderingAttachmentFlagsInfoKHR( RenderingAttachmentFlagsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingAttachmentFlagsInfoKHR( VkRenderingAttachmentFlagsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderingAttachmentFlagsInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + RenderingAttachmentFlagsInfoKHR & operator=( RenderingAttachmentFlagsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderingAttachmentFlagsInfoKHR & operator=( VkRenderingAttachmentFlagsInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentFlagsInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentFlagsInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentFlagsInfoKHR & setFlags( RenderingAttachmentFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentFlagsInfoKHR && setFlags( RenderingAttachmentFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderingAttachmentFlagsInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingAttachmentFlagsInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingAttachmentFlagsInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderingAttachmentFlagsInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingAttachmentFlagsInfoKHR const & ) const = default; +#else + bool operator==( RenderingAttachmentFlagsInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( RenderingAttachmentFlagsInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderingAttachmentFlagsInfoKHR; + void const * pNext = {}; + RenderingAttachmentFlagsKHR flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderingAttachmentFlagsInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = RenderingAttachmentFlagsInfoKHR; + }; + + // wrapper struct for struct VkRenderingAttachmentInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingAttachmentInfo.html + struct RenderingAttachmentInfo + { + using NativeType = VkRenderingAttachmentInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingAttachmentInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo( ImageView imageView_ = {}, + ImageLayout imageLayout_ = ImageLayout::eUndefined, + ResolveModeFlagBits resolveMode_ = ResolveModeFlagBits::eNone, + ImageView resolveImageView_ = {}, + ImageLayout resolveImageLayout_ = ImageLayout::eUndefined, + AttachmentLoadOp loadOp_ = AttachmentLoadOp::eLoad, + AttachmentStoreOp storeOp_ = AttachmentStoreOp::eStore, + ClearValue clearValue_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageView{ imageView_ } + , imageLayout{ imageLayout_ } + , resolveMode{ resolveMode_ } + , resolveImageView{ resolveImageView_ } + , resolveImageLayout{ resolveImageLayout_ } + , loadOp{ loadOp_ } + , storeOp{ storeOp_ } + , clearValue{ clearValue_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo( RenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingAttachmentInfo( VkRenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderingAttachmentInfo( *reinterpret_cast( &rhs ) ) + { + } + + RenderingAttachmentInfo & operator=( RenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderingAttachmentInfo & operator=( VkRenderingAttachmentInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setImageView( ImageView imageView_ ) & VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo && setImageView( ImageView imageView_ ) && VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setImageLayout( ImageLayout imageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo && setImageLayout( ImageLayout imageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveMode( ResolveModeFlagBits resolveMode_ ) & VULKAN_HPP_NOEXCEPT + { + resolveMode = resolveMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo && setResolveMode( ResolveModeFlagBits resolveMode_ ) && VULKAN_HPP_NOEXCEPT + { + resolveMode = resolveMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveImageView( ImageView resolveImageView_ ) & VULKAN_HPP_NOEXCEPT + { + resolveImageView = resolveImageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo && setResolveImageView( ImageView resolveImageView_ ) && VULKAN_HPP_NOEXCEPT + { + resolveImageView = resolveImageView_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setResolveImageLayout( ImageLayout resolveImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + resolveImageLayout = resolveImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo && setResolveImageLayout( ImageLayout resolveImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + resolveImageLayout = resolveImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setLoadOp( AttachmentLoadOp loadOp_ ) & VULKAN_HPP_NOEXCEPT + { + loadOp = loadOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo && setLoadOp( AttachmentLoadOp loadOp_ ) && VULKAN_HPP_NOEXCEPT + { + loadOp = loadOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setStoreOp( AttachmentStoreOp storeOp_ ) & VULKAN_HPP_NOEXCEPT + { + storeOp = storeOp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo && setStoreOp( AttachmentStoreOp storeOp_ ) && VULKAN_HPP_NOEXCEPT + { + storeOp = storeOp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo & setClearValue( ClearValue const & clearValue_ ) & VULKAN_HPP_NOEXCEPT + { + clearValue = clearValue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentInfo && setClearValue( ClearValue const & clearValue_ ) && VULKAN_HPP_NOEXCEPT + { + clearValue = clearValue_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderingAttachmentInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingAttachmentInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingAttachmentInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderingAttachmentInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageView, imageLayout, resolveMode, resolveImageView, resolveImageLayout, loadOp, storeOp, clearValue ); + } +#endif + + public: + StructureType sType = StructureType::eRenderingAttachmentInfo; + void const * pNext = {}; + ImageView imageView = {}; + ImageLayout imageLayout = ImageLayout::eUndefined; + ResolveModeFlagBits resolveMode = ResolveModeFlagBits::eNone; + ImageView resolveImageView = {}; + ImageLayout resolveImageLayout = ImageLayout::eUndefined; + AttachmentLoadOp loadOp = AttachmentLoadOp::eLoad; + AttachmentStoreOp storeOp = AttachmentStoreOp::eStore; + ClearValue clearValue = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderingAttachmentInfo; + }; +#endif + + template <> + struct CppType + { + using Type = RenderingAttachmentInfo; + }; + + using RenderingAttachmentInfoKHR = RenderingAttachmentInfo; + + // wrapper struct for struct VkRenderingAttachmentLocationInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingAttachmentLocationInfo.html + struct RenderingAttachmentLocationInfo + { + using NativeType = VkRenderingAttachmentLocationInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingAttachmentLocationInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderingAttachmentLocationInfo( uint32_t colorAttachmentCount_ = {}, + uint32_t const * pColorAttachmentLocations_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , colorAttachmentCount{ colorAttachmentCount_ } + , pColorAttachmentLocations{ pColorAttachmentLocations_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderingAttachmentLocationInfo( RenderingAttachmentLocationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingAttachmentLocationInfo( VkRenderingAttachmentLocationInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderingAttachmentLocationInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderingAttachmentLocationInfo( ArrayProxyNoTemporaries const & colorAttachmentLocations_, void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , colorAttachmentCount( static_cast( colorAttachmentLocations_.size() ) ) + , pColorAttachmentLocations( colorAttachmentLocations_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderingAttachmentLocationInfo & operator=( RenderingAttachmentLocationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderingAttachmentLocationInfo & operator=( VkRenderingAttachmentLocationInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfo && setColorAttachmentCount( uint32_t colorAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfo & setPColorAttachmentLocations( uint32_t const * pColorAttachmentLocations_ ) & VULKAN_HPP_NOEXCEPT + { + pColorAttachmentLocations = pColorAttachmentLocations_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingAttachmentLocationInfo && setPColorAttachmentLocations( uint32_t const * pColorAttachmentLocations_ ) && + VULKAN_HPP_NOEXCEPT + { + pColorAttachmentLocations = pColorAttachmentLocations_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderingAttachmentLocationInfo & + setColorAttachmentLocations( ArrayProxyNoTemporaries const & colorAttachmentLocations_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachmentLocations_.size() ); + pColorAttachmentLocations = colorAttachmentLocations_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderingAttachmentLocationInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingAttachmentLocationInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingAttachmentLocationInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderingAttachmentLocationInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentLocations ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingAttachmentLocationInfo const & ) const = default; +#else + bool operator==( RenderingAttachmentLocationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) && + ( pColorAttachmentLocations == rhs.pColorAttachmentLocations ); +# endif + } + + bool operator!=( RenderingAttachmentLocationInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderingAttachmentLocationInfo; + void const * pNext = {}; + uint32_t colorAttachmentCount = {}; + uint32_t const * pColorAttachmentLocations = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderingAttachmentLocationInfo; + }; +#endif + + template <> + struct CppType + { + using Type = RenderingAttachmentLocationInfo; + }; + + using RenderingAttachmentLocationInfoKHR = RenderingAttachmentLocationInfo; + + // wrapper struct for struct VkRenderingEndInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingEndInfoKHR.html + struct RenderingEndInfoKHR + { + using NativeType = VkRenderingEndInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingEndInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderingEndInfoKHR( void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {} + + VULKAN_HPP_CONSTEXPR RenderingEndInfoKHR( RenderingEndInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingEndInfoKHR( VkRenderingEndInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : RenderingEndInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + RenderingEndInfoKHR & operator=( RenderingEndInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderingEndInfoKHR & operator=( VkRenderingEndInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingEndInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingEndInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderingEndInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingEndInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingEndInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderingEndInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingEndInfoKHR const & ) const = default; +#else + bool operator==( RenderingEndInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( RenderingEndInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderingEndInfoKHR; + void const * pNext = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderingEndInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = RenderingEndInfoKHR; + }; + + using RenderingEndInfoEXT = RenderingEndInfoKHR; + + // wrapper struct for struct VkRenderingFragmentDensityMapAttachmentInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingFragmentDensityMapAttachmentInfoEXT.html + struct RenderingFragmentDensityMapAttachmentInfoEXT + { + using NativeType = VkRenderingFragmentDensityMapAttachmentInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderingFragmentDensityMapAttachmentInfoEXT( ImageView imageView_ = {}, + ImageLayout imageLayout_ = ImageLayout::eUndefined, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageView{ imageView_ } + , imageLayout{ imageLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderingFragmentDensityMapAttachmentInfoEXT( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingFragmentDensityMapAttachmentInfoEXT( VkRenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderingFragmentDensityMapAttachmentInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + RenderingFragmentDensityMapAttachmentInfoEXT & operator=( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderingFragmentDensityMapAttachmentInfoEXT & operator=( VkRenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & setImageView( ImageView imageView_ ) & VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT && setImageView( ImageView imageView_ ) && VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT & setImageLayout( ImageLayout imageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentDensityMapAttachmentInfoEXT && setImageLayout( ImageLayout imageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderingFragmentDensityMapAttachmentInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingFragmentDensityMapAttachmentInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingFragmentDensityMapAttachmentInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderingFragmentDensityMapAttachmentInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageView, imageLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingFragmentDensityMapAttachmentInfoEXT const & ) const = default; +#else + bool operator==( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && ( imageLayout == rhs.imageLayout ); +# endif + } + + bool operator!=( RenderingFragmentDensityMapAttachmentInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT; + void const * pNext = {}; + ImageView imageView = {}; + ImageLayout imageLayout = ImageLayout::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderingFragmentDensityMapAttachmentInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = RenderingFragmentDensityMapAttachmentInfoEXT; + }; + + // wrapper struct for struct VkRenderingFragmentShadingRateAttachmentInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingFragmentShadingRateAttachmentInfoKHR.html + struct RenderingFragmentShadingRateAttachmentInfoKHR + { + using NativeType = VkRenderingFragmentShadingRateAttachmentInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderingFragmentShadingRateAttachmentInfoKHR( ImageView imageView_ = {}, + ImageLayout imageLayout_ = ImageLayout::eUndefined, + Extent2D shadingRateAttachmentTexelSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , imageView{ imageView_ } + , imageLayout{ imageLayout_ } + , shadingRateAttachmentTexelSize{ shadingRateAttachmentTexelSize_ } + { + } + + VULKAN_HPP_CONSTEXPR + RenderingFragmentShadingRateAttachmentInfoKHR( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingFragmentShadingRateAttachmentInfoKHR( VkRenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderingFragmentShadingRateAttachmentInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + RenderingFragmentShadingRateAttachmentInfoKHR & operator=( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderingFragmentShadingRateAttachmentInfoKHR & operator=( VkRenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setImageView( ImageView imageView_ ) & VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR && setImageView( ImageView imageView_ ) && VULKAN_HPP_NOEXCEPT + { + imageView = imageView_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & setImageLayout( ImageLayout imageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR && setImageLayout( ImageLayout imageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + imageLayout = imageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR & + setShadingRateAttachmentTexelSize( Extent2D const & shadingRateAttachmentTexelSize_ ) & + VULKAN_HPP_NOEXCEPT + { + shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingFragmentShadingRateAttachmentInfoKHR && + setShadingRateAttachmentTexelSize( Extent2D const & shadingRateAttachmentTexelSize_ ) && + VULKAN_HPP_NOEXCEPT + { + shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderingFragmentShadingRateAttachmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingFragmentShadingRateAttachmentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingFragmentShadingRateAttachmentInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderingFragmentShadingRateAttachmentInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, imageView, imageLayout, shadingRateAttachmentTexelSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingFragmentShadingRateAttachmentInfoKHR const & ) const = default; +#else + bool operator==( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( imageView == rhs.imageView ) && ( imageLayout == rhs.imageLayout ) && + ( shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize ); +# endif + } + + bool operator!=( RenderingFragmentShadingRateAttachmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR; + void const * pNext = {}; + ImageView imageView = {}; + ImageLayout imageLayout = ImageLayout::eUndefined; + Extent2D shadingRateAttachmentTexelSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderingFragmentShadingRateAttachmentInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = RenderingFragmentShadingRateAttachmentInfoKHR; + }; + + // wrapper struct for struct VkRenderingInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingInfo.html + struct RenderingInfo + { + using NativeType = VkRenderingInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 RenderingInfo( RenderingFlags flags_ = {}, + Rect2D renderArea_ = {}, + uint32_t layerCount_ = {}, + uint32_t viewMask_ = {}, + uint32_t colorAttachmentCount_ = {}, + RenderingAttachmentInfo const * pColorAttachments_ = {}, + RenderingAttachmentInfo const * pDepthAttachment_ = {}, + RenderingAttachmentInfo const * pStencilAttachment_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , renderArea{ renderArea_ } + , layerCount{ layerCount_ } + , viewMask{ viewMask_ } + , colorAttachmentCount{ colorAttachmentCount_ } + , pColorAttachments{ pColorAttachments_ } + , pDepthAttachment{ pDepthAttachment_ } + , pStencilAttachment{ pStencilAttachment_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo( RenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingInfo( VkRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT : RenderingInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderingInfo( RenderingFlags flags_, + Rect2D renderArea_, + uint32_t layerCount_, + uint32_t viewMask_, + ArrayProxyNoTemporaries const & colorAttachments_, + RenderingAttachmentInfo const * pDepthAttachment_ = {}, + RenderingAttachmentInfo const * pStencilAttachment_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , renderArea( renderArea_ ) + , layerCount( layerCount_ ) + , viewMask( viewMask_ ) + , colorAttachmentCount( static_cast( colorAttachments_.size() ) ) + , pColorAttachments( colorAttachments_.data() ) + , pDepthAttachment( pDepthAttachment_ ) + , pStencilAttachment( pStencilAttachment_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderingInfo & operator=( RenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderingInfo & operator=( VkRenderingInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setFlags( RenderingFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo && setFlags( RenderingFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setRenderArea( Rect2D const & renderArea_ ) & VULKAN_HPP_NOEXCEPT + { + renderArea = renderArea_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo && setRenderArea( Rect2D const & renderArea_ ) && VULKAN_HPP_NOEXCEPT + { + renderArea = renderArea_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setLayerCount( uint32_t layerCount_ ) & VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo && setLayerCount( uint32_t layerCount_ ) && VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setViewMask( uint32_t viewMask_ ) & VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo && setViewMask( uint32_t viewMask_ ) && VULKAN_HPP_NOEXCEPT + { + viewMask = viewMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo && setColorAttachmentCount( uint32_t colorAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPColorAttachments( RenderingAttachmentInfo const * pColorAttachments_ ) & VULKAN_HPP_NOEXCEPT + { + pColorAttachments = pColorAttachments_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo && setPColorAttachments( RenderingAttachmentInfo const * pColorAttachments_ ) && VULKAN_HPP_NOEXCEPT + { + pColorAttachments = pColorAttachments_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderingInfo & setColorAttachments( ArrayProxyNoTemporaries const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachments_.size() ); + pColorAttachments = colorAttachments_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPDepthAttachment( RenderingAttachmentInfo const * pDepthAttachment_ ) & VULKAN_HPP_NOEXCEPT + { + pDepthAttachment = pDepthAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo && setPDepthAttachment( RenderingAttachmentInfo const * pDepthAttachment_ ) && VULKAN_HPP_NOEXCEPT + { + pDepthAttachment = pDepthAttachment_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo & setPStencilAttachment( RenderingAttachmentInfo const * pStencilAttachment_ ) & VULKAN_HPP_NOEXCEPT + { + pStencilAttachment = pStencilAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInfo && setPStencilAttachment( RenderingAttachmentInfo const * pStencilAttachment_ ) && VULKAN_HPP_NOEXCEPT + { + pStencilAttachment = pStencilAttachment_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderingInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderingInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, renderArea, layerCount, viewMask, colorAttachmentCount, pColorAttachments, pDepthAttachment, pStencilAttachment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingInfo const & ) const = default; +#else + bool operator==( RenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( renderArea == rhs.renderArea ) && + ( layerCount == rhs.layerCount ) && ( viewMask == rhs.viewMask ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) && + ( pColorAttachments == rhs.pColorAttachments ) && ( pDepthAttachment == rhs.pDepthAttachment ) && ( pStencilAttachment == rhs.pStencilAttachment ); +# endif + } + + bool operator!=( RenderingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderingInfo; + void const * pNext = {}; + RenderingFlags flags = {}; + Rect2D renderArea = {}; + uint32_t layerCount = {}; + uint32_t viewMask = {}; + uint32_t colorAttachmentCount = {}; + RenderingAttachmentInfo const * pColorAttachments = {}; + RenderingAttachmentInfo const * pDepthAttachment = {}; + RenderingAttachmentInfo const * pStencilAttachment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderingInfo; + }; +#endif + + template <> + struct CppType + { + using Type = RenderingInfo; + }; + + using RenderingInfoKHR = RenderingInfo; + + // wrapper struct for struct VkRenderingInputAttachmentIndexInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkRenderingInputAttachmentIndexInfo.html + struct RenderingInputAttachmentIndexInfo + { + using NativeType = VkRenderingInputAttachmentIndexInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderingInputAttachmentIndexInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR RenderingInputAttachmentIndexInfo( uint32_t colorAttachmentCount_ = {}, + uint32_t const * pColorAttachmentInputIndices_ = {}, + uint32_t const * pDepthInputAttachmentIndex_ = {}, + uint32_t const * pStencilInputAttachmentIndex_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , colorAttachmentCount{ colorAttachmentCount_ } + , pColorAttachmentInputIndices{ pColorAttachmentInputIndices_ } + , pDepthInputAttachmentIndex{ pDepthInputAttachmentIndex_ } + , pStencilInputAttachmentIndex{ pStencilInputAttachmentIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR RenderingInputAttachmentIndexInfo( RenderingInputAttachmentIndexInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + RenderingInputAttachmentIndexInfo( VkRenderingInputAttachmentIndexInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : RenderingInputAttachmentIndexInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderingInputAttachmentIndexInfo( ArrayProxyNoTemporaries const & colorAttachmentInputIndices_, + uint32_t const * pDepthInputAttachmentIndex_ = {}, + uint32_t const * pStencilInputAttachmentIndex_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , colorAttachmentCount( static_cast( colorAttachmentInputIndices_.size() ) ) + , pColorAttachmentInputIndices( colorAttachmentInputIndices_.data() ) + , pDepthInputAttachmentIndex( pDepthInputAttachmentIndex_ ) + , pStencilInputAttachmentIndex( pStencilInputAttachmentIndex_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + RenderingInputAttachmentIndexInfo & operator=( RenderingInputAttachmentIndexInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + RenderingInputAttachmentIndexInfo & operator=( VkRenderingInputAttachmentIndexInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo && setColorAttachmentCount( uint32_t colorAttachmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = colorAttachmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo & setPColorAttachmentInputIndices( uint32_t const * pColorAttachmentInputIndices_ ) & + VULKAN_HPP_NOEXCEPT + { + pColorAttachmentInputIndices = pColorAttachmentInputIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo && setPColorAttachmentInputIndices( uint32_t const * pColorAttachmentInputIndices_ ) && + VULKAN_HPP_NOEXCEPT + { + pColorAttachmentInputIndices = pColorAttachmentInputIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + RenderingInputAttachmentIndexInfo & + setColorAttachmentInputIndices( ArrayProxyNoTemporaries const & colorAttachmentInputIndices_ ) VULKAN_HPP_NOEXCEPT + { + colorAttachmentCount = static_cast( colorAttachmentInputIndices_.size() ); + pColorAttachmentInputIndices = colorAttachmentInputIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo & setPDepthInputAttachmentIndex( uint32_t const * pDepthInputAttachmentIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + pDepthInputAttachmentIndex = pDepthInputAttachmentIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo && setPDepthInputAttachmentIndex( uint32_t const * pDepthInputAttachmentIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + pDepthInputAttachmentIndex = pDepthInputAttachmentIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo & setPStencilInputAttachmentIndex( uint32_t const * pStencilInputAttachmentIndex_ ) & + VULKAN_HPP_NOEXCEPT + { + pStencilInputAttachmentIndex = pStencilInputAttachmentIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 RenderingInputAttachmentIndexInfo && setPStencilInputAttachmentIndex( uint32_t const * pStencilInputAttachmentIndex_ ) && + VULKAN_HPP_NOEXCEPT + { + pStencilInputAttachmentIndex = pStencilInputAttachmentIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkRenderingInputAttachmentIndexInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingInputAttachmentIndexInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkRenderingInputAttachmentIndexInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkRenderingInputAttachmentIndexInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, colorAttachmentCount, pColorAttachmentInputIndices, pDepthInputAttachmentIndex, pStencilInputAttachmentIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( RenderingInputAttachmentIndexInfo const & ) const = default; +#else + bool operator==( RenderingInputAttachmentIndexInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( colorAttachmentCount == rhs.colorAttachmentCount ) && + ( pColorAttachmentInputIndices == rhs.pColorAttachmentInputIndices ) && ( pDepthInputAttachmentIndex == rhs.pDepthInputAttachmentIndex ) && + ( pStencilInputAttachmentIndex == rhs.pStencilInputAttachmentIndex ); +# endif + } + + bool operator!=( RenderingInputAttachmentIndexInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eRenderingInputAttachmentIndexInfo; + void const * pNext = {}; + uint32_t colorAttachmentCount = {}; + uint32_t const * pColorAttachmentInputIndices = {}; + uint32_t const * pDepthInputAttachmentIndex = {}; + uint32_t const * pStencilInputAttachmentIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = RenderingInputAttachmentIndexInfo; + }; +#endif + + template <> + struct CppType + { + using Type = RenderingInputAttachmentIndexInfo; + }; + + using RenderingInputAttachmentIndexInfoKHR = RenderingInputAttachmentIndexInfo; + + // wrapper struct for struct VkResolveImageInfo2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkResolveImageInfo2.html + struct ResolveImageInfo2 + { + using NativeType = VkResolveImageInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eResolveImageInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ResolveImageInfo2( Image srcImage_ = {}, + ImageLayout srcImageLayout_ = ImageLayout::eUndefined, + Image dstImage_ = {}, + ImageLayout dstImageLayout_ = ImageLayout::eUndefined, + uint32_t regionCount_ = {}, + ImageResolve2 const * pRegions_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcImage{ srcImage_ } + , srcImageLayout{ srcImageLayout_ } + , dstImage{ dstImage_ } + , dstImageLayout{ dstImageLayout_ } + , regionCount{ regionCount_ } + , pRegions{ pRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR ResolveImageInfo2( ResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ResolveImageInfo2( VkResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : ResolveImageInfo2( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ResolveImageInfo2( Image srcImage_, + ImageLayout srcImageLayout_, + Image dstImage_, + ImageLayout dstImageLayout_, + ArrayProxyNoTemporaries const & regions_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , srcImage( srcImage_ ) + , srcImageLayout( srcImageLayout_ ) + , dstImage( dstImage_ ) + , dstImageLayout( dstImageLayout_ ) + , regionCount( static_cast( regions_.size() ) ) + , pRegions( regions_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ResolveImageInfo2 & operator=( ResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ResolveImageInfo2 & operator=( VkResolveImageInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setSrcImage( Image srcImage_ ) & VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 && setSrcImage( Image srcImage_ ) && VULKAN_HPP_NOEXCEPT + { + srcImage = srcImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setSrcImageLayout( ImageLayout srcImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 && setSrcImageLayout( ImageLayout srcImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + srcImageLayout = srcImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setDstImage( Image dstImage_ ) & VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 && setDstImage( Image dstImage_ ) && VULKAN_HPP_NOEXCEPT + { + dstImage = dstImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setDstImageLayout( ImageLayout dstImageLayout_ ) & VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 && setDstImageLayout( ImageLayout dstImageLayout_ ) && VULKAN_HPP_NOEXCEPT + { + dstImageLayout = dstImageLayout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setRegionCount( uint32_t regionCount_ ) & VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 && setRegionCount( uint32_t regionCount_ ) && VULKAN_HPP_NOEXCEPT + { + regionCount = regionCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 & setPRegions( ImageResolve2 const * pRegions_ ) & VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2 && setPRegions( ImageResolve2 const * pRegions_ ) && VULKAN_HPP_NOEXCEPT + { + pRegions = pRegions_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ResolveImageInfo2 & setRegions( ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT + { + regionCount = static_cast( regions_.size() ); + pRegions = regions_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkResolveImageInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkResolveImageInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkResolveImageInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkResolveImageInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ResolveImageInfo2 const & ) const = default; +#else + bool operator==( ResolveImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcImage == rhs.srcImage ) && ( srcImageLayout == rhs.srcImageLayout ) && + ( dstImage == rhs.dstImage ) && ( dstImageLayout == rhs.dstImageLayout ) && ( regionCount == rhs.regionCount ) && ( pRegions == rhs.pRegions ); +# endif + } + + bool operator!=( ResolveImageInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eResolveImageInfo2; + void const * pNext = {}; + Image srcImage = {}; + ImageLayout srcImageLayout = ImageLayout::eUndefined; + Image dstImage = {}; + ImageLayout dstImageLayout = ImageLayout::eUndefined; + uint32_t regionCount = {}; + ImageResolve2 const * pRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ResolveImageInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = ResolveImageInfo2; + }; + + using ResolveImageInfo2KHR = ResolveImageInfo2; + + // wrapper struct for struct VkResolveImageModeInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkResolveImageModeInfoKHR.html + struct ResolveImageModeInfoKHR + { + using NativeType = VkResolveImageModeInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eResolveImageModeInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ResolveImageModeInfoKHR( ResolveImageFlagsKHR flags_ = {}, + ResolveModeFlagBits resolveMode_ = ResolveModeFlagBits::eNone, + ResolveModeFlagBits stencilResolveMode_ = ResolveModeFlagBits::eNone, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , resolveMode{ resolveMode_ } + , stencilResolveMode{ stencilResolveMode_ } + { + } + + VULKAN_HPP_CONSTEXPR ResolveImageModeInfoKHR( ResolveImageModeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ResolveImageModeInfoKHR( VkResolveImageModeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : ResolveImageModeInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + ResolveImageModeInfoKHR & operator=( ResolveImageModeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ResolveImageModeInfoKHR & operator=( VkResolveImageModeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ResolveImageModeInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageModeInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageModeInfoKHR & setFlags( ResolveImageFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageModeInfoKHR && setFlags( ResolveImageFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageModeInfoKHR & setResolveMode( ResolveModeFlagBits resolveMode_ ) & VULKAN_HPP_NOEXCEPT + { + resolveMode = resolveMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageModeInfoKHR && setResolveMode( ResolveModeFlagBits resolveMode_ ) && VULKAN_HPP_NOEXCEPT + { + resolveMode = resolveMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageModeInfoKHR & setStencilResolveMode( ResolveModeFlagBits stencilResolveMode_ ) & VULKAN_HPP_NOEXCEPT + { + stencilResolveMode = stencilResolveMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResolveImageModeInfoKHR && setStencilResolveMode( ResolveModeFlagBits stencilResolveMode_ ) && VULKAN_HPP_NOEXCEPT + { + stencilResolveMode = stencilResolveMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkResolveImageModeInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkResolveImageModeInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkResolveImageModeInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkResolveImageModeInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, resolveMode, stencilResolveMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ResolveImageModeInfoKHR const & ) const = default; +#else + bool operator==( ResolveImageModeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( resolveMode == rhs.resolveMode ) && + ( stencilResolveMode == rhs.stencilResolveMode ); +# endif + } + + bool operator!=( ResolveImageModeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eResolveImageModeInfoKHR; + void const * pNext = {}; + ResolveImageFlagsKHR flags = {}; + ResolveModeFlagBits resolveMode = ResolveModeFlagBits::eNone; + ResolveModeFlagBits stencilResolveMode = ResolveModeFlagBits::eNone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ResolveImageModeInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = ResolveImageModeInfoKHR; + }; + + // wrapper struct for struct VkTexelBufferDescriptorInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTexelBufferDescriptorInfoEXT.html + struct TexelBufferDescriptorInfoEXT + { + using NativeType = VkTexelBufferDescriptorInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTexelBufferDescriptorInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TexelBufferDescriptorInfoEXT( Format format_ = Format::eUndefined, + DeviceAddressRangeEXT addressRange_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , format{ format_ } + , addressRange{ addressRange_ } + { + } + + VULKAN_HPP_CONSTEXPR TexelBufferDescriptorInfoEXT( TexelBufferDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TexelBufferDescriptorInfoEXT( VkTexelBufferDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : TexelBufferDescriptorInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + TexelBufferDescriptorInfoEXT & operator=( TexelBufferDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TexelBufferDescriptorInfoEXT & operator=( VkTexelBufferDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TexelBufferDescriptorInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TexelBufferDescriptorInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TexelBufferDescriptorInfoEXT & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TexelBufferDescriptorInfoEXT && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TexelBufferDescriptorInfoEXT & setAddressRange( DeviceAddressRangeEXT addressRange_ ) & VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TexelBufferDescriptorInfoEXT && setAddressRange( DeviceAddressRangeEXT addressRange_ ) && VULKAN_HPP_NOEXCEPT + { + addressRange = addressRange_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTexelBufferDescriptorInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTexelBufferDescriptorInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTexelBufferDescriptorInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTexelBufferDescriptorInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, format, addressRange ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TexelBufferDescriptorInfoEXT const & ) const = default; +#else + bool operator==( TexelBufferDescriptorInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( addressRange == rhs.addressRange ); +# endif + } + + bool operator!=( TexelBufferDescriptorInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTexelBufferDescriptorInfoEXT; + void const * pNext = {}; + Format format = Format::eUndefined; + DeviceAddressRangeEXT addressRange = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TexelBufferDescriptorInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = TexelBufferDescriptorInfoEXT; + }; + + // wrapper struct for struct VkTensorViewCreateInfoARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorViewCreateInfoARM.html + struct TensorViewCreateInfoARM + { + using NativeType = VkTensorViewCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTensorViewCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TensorViewCreateInfoARM( TensorViewCreateFlagsARM flags_ = {}, + TensorARM tensor_ = {}, + Format format_ = Format::eUndefined, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , tensor{ tensor_ } + , format{ format_ } + { + } + + VULKAN_HPP_CONSTEXPR TensorViewCreateInfoARM( TensorViewCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TensorViewCreateInfoARM( VkTensorViewCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : TensorViewCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + TensorViewCreateInfoARM & operator=( TensorViewCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TensorViewCreateInfoARM & operator=( VkTensorViewCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TensorViewCreateInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorViewCreateInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorViewCreateInfoARM & setFlags( TensorViewCreateFlagsARM flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorViewCreateInfoARM && setFlags( TensorViewCreateFlagsARM flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorViewCreateInfoARM & setTensor( TensorARM tensor_ ) & VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorViewCreateInfoARM && setTensor( TensorARM tensor_ ) && VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorViewCreateInfoARM & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorViewCreateInfoARM && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTensorViewCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorViewCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorViewCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTensorViewCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, tensor, format ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TensorViewCreateInfoARM const & ) const = default; +#else + bool operator==( TensorViewCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( tensor == rhs.tensor ) && ( format == rhs.format ); +# endif + } + + bool operator!=( TensorViewCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTensorViewCreateInfoARM; + void const * pNext = {}; + TensorViewCreateFlagsARM flags = {}; + TensorARM tensor = {}; + Format format = Format::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TensorViewCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = TensorViewCreateInfoARM; + }; + + union ResourceDescriptorDataEXT + { + using NativeType = VkResourceDescriptorDataEXT; +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_UNION_CONSTRUCTORS ) + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT( ImageDescriptorInfoEXT const * pImage_ = {} ) : pImage( pImage_ ) {} + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT( TexelBufferDescriptorInfoEXT const * pTexelBuffer_ ) : pTexelBuffer( pTexelBuffer_ ) {} + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT( DeviceAddressRangeEXT const * pAddressRange_ ) : pAddressRange( pAddressRange_ ) {} + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT( TensorViewCreateInfoARM const * pTensorARM_ ) : pTensorARM( pTensorARM_ ) {} +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_UNION_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT & setPImage( ImageDescriptorInfoEXT const * pImage_ ) & VULKAN_HPP_NOEXCEPT + { + pImage = pImage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT && setPImage( ImageDescriptorInfoEXT const * pImage_ ) && VULKAN_HPP_NOEXCEPT + { + pImage = pImage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT & setPTexelBuffer( TexelBufferDescriptorInfoEXT const * pTexelBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + pTexelBuffer = pTexelBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT && setPTexelBuffer( TexelBufferDescriptorInfoEXT const * pTexelBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + pTexelBuffer = pTexelBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT & setPAddressRange( DeviceAddressRangeEXT const * pAddressRange_ ) & VULKAN_HPP_NOEXCEPT + { + pAddressRange = pAddressRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT && setPAddressRange( DeviceAddressRangeEXT const * pAddressRange_ ) && VULKAN_HPP_NOEXCEPT + { + pAddressRange = pAddressRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT & setPTensorARM( TensorViewCreateInfoARM const * pTensorARM_ ) & VULKAN_HPP_NOEXCEPT + { + pTensorARM = pTensorARM_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorDataEXT && setPTensorARM( TensorViewCreateInfoARM const * pTensorARM_ ) && VULKAN_HPP_NOEXCEPT + { + pTensorARM = pTensorARM_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkResourceDescriptorDataEXT const &() const + { + return *reinterpret_cast( this ); + } + + operator VkResourceDescriptorDataEXT &() + { + return *reinterpret_cast( this ); + } + +#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS + ImageDescriptorInfoEXT const * pImage; + TexelBufferDescriptorInfoEXT const * pTexelBuffer; + DeviceAddressRangeEXT const * pAddressRange; + TensorViewCreateInfoARM const * pTensorARM; +#else + VkImageDescriptorInfoEXT const * pImage; + VkTexelBufferDescriptorInfoEXT const * pTexelBuffer; + VkDeviceAddressRangeEXT const * pAddressRange; + VkTensorViewCreateInfoARM const * pTensorARM; +#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ResourceDescriptorDataEXT; + }; +#endif + + // wrapper struct for struct VkResourceDescriptorInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkResourceDescriptorInfoEXT.html + struct ResourceDescriptorInfoEXT + { + using NativeType = VkResourceDescriptorInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eResourceDescriptorInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorInfoEXT( DescriptorType type_ = DescriptorType::eSampler, + ResourceDescriptorDataEXT data_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , type{ type_ } + , data{ data_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorInfoEXT( ResourceDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ResourceDescriptorInfoEXT( VkResourceDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ResourceDescriptorInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ResourceDescriptorInfoEXT & operator=( ResourceDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ResourceDescriptorInfoEXT & operator=( VkResourceDescriptorInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorInfoEXT & setType( DescriptorType type_ ) & VULKAN_HPP_NOEXCEPT + { + type = type_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorInfoEXT && setType( DescriptorType type_ ) && VULKAN_HPP_NOEXCEPT + { + type = type_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorInfoEXT & setData( ResourceDescriptorDataEXT const & data_ ) & VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ResourceDescriptorInfoEXT && setData( ResourceDescriptorDataEXT const & data_ ) && VULKAN_HPP_NOEXCEPT + { + data = data_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkResourceDescriptorInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkResourceDescriptorInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkResourceDescriptorInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkResourceDescriptorInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, type, data ); + } +#endif + + public: + StructureType sType = StructureType::eResourceDescriptorInfoEXT; + void const * pNext = {}; + DescriptorType type = DescriptorType::eSampler; + ResourceDescriptorDataEXT data = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ResourceDescriptorInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ResourceDescriptorInfoEXT; + }; + + // wrapper struct for struct VkSamplerBlockMatchWindowCreateInfoQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerBlockMatchWindowCreateInfoQCOM.html + struct SamplerBlockMatchWindowCreateInfoQCOM + { + using NativeType = VkSamplerBlockMatchWindowCreateInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerBlockMatchWindowCreateInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerBlockMatchWindowCreateInfoQCOM( Extent2D windowExtent_ = {}, + BlockMatchWindowCompareModeQCOM windowCompareMode_ = BlockMatchWindowCompareModeQCOM::eMin, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , windowExtent{ windowExtent_ } + , windowCompareMode{ windowCompareMode_ } + { + } + + VULKAN_HPP_CONSTEXPR SamplerBlockMatchWindowCreateInfoQCOM( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerBlockMatchWindowCreateInfoQCOM( VkSamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerBlockMatchWindowCreateInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + SamplerBlockMatchWindowCreateInfoQCOM & operator=( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerBlockMatchWindowCreateInfoQCOM & operator=( VkSamplerBlockMatchWindowCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM & setWindowExtent( Extent2D const & windowExtent_ ) & VULKAN_HPP_NOEXCEPT + { + windowExtent = windowExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM && setWindowExtent( Extent2D const & windowExtent_ ) && VULKAN_HPP_NOEXCEPT + { + windowExtent = windowExtent_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM & setWindowCompareMode( BlockMatchWindowCompareModeQCOM windowCompareMode_ ) & + VULKAN_HPP_NOEXCEPT + { + windowCompareMode = windowCompareMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBlockMatchWindowCreateInfoQCOM && setWindowCompareMode( BlockMatchWindowCompareModeQCOM windowCompareMode_ ) && + VULKAN_HPP_NOEXCEPT + { + windowCompareMode = windowCompareMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerBlockMatchWindowCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerBlockMatchWindowCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerBlockMatchWindowCreateInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerBlockMatchWindowCreateInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, windowExtent, windowCompareMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerBlockMatchWindowCreateInfoQCOM const & ) const = default; +#else + bool operator==( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( windowExtent == rhs.windowExtent ) && ( windowCompareMode == rhs.windowCompareMode ); +# endif + } + + bool operator!=( SamplerBlockMatchWindowCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerBlockMatchWindowCreateInfoQCOM; + void const * pNext = {}; + Extent2D windowExtent = {}; + BlockMatchWindowCompareModeQCOM windowCompareMode = BlockMatchWindowCompareModeQCOM::eMin; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerBlockMatchWindowCreateInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerBlockMatchWindowCreateInfoQCOM; + }; + + // wrapper struct for struct VkSamplerBorderColorComponentMappingCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerBorderColorComponentMappingCreateInfoEXT.html + struct SamplerBorderColorComponentMappingCreateInfoEXT + { + using NativeType = VkSamplerBorderColorComponentMappingCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SamplerBorderColorComponentMappingCreateInfoEXT( ComponentMapping components_ = {}, Bool32 srgb_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , components{ components_ } + , srgb{ srgb_ } + { + } + + VULKAN_HPP_CONSTEXPR + SamplerBorderColorComponentMappingCreateInfoEXT( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerBorderColorComponentMappingCreateInfoEXT( VkSamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerBorderColorComponentMappingCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + SamplerBorderColorComponentMappingCreateInfoEXT & operator=( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerBorderColorComponentMappingCreateInfoEXT & operator=( VkSamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT & setComponents( ComponentMapping const & components_ ) & VULKAN_HPP_NOEXCEPT + { + components = components_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT && setComponents( ComponentMapping const & components_ ) && VULKAN_HPP_NOEXCEPT + { + components = components_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT & setSrgb( Bool32 srgb_ ) & VULKAN_HPP_NOEXCEPT + { + srgb = srgb_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerBorderColorComponentMappingCreateInfoEXT && setSrgb( Bool32 srgb_ ) && VULKAN_HPP_NOEXCEPT + { + srgb = srgb_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerBorderColorComponentMappingCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerBorderColorComponentMappingCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerBorderColorComponentMappingCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerBorderColorComponentMappingCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, components, srgb ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerBorderColorComponentMappingCreateInfoEXT const & ) const = default; +#else + bool operator==( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( components == rhs.components ) && ( srgb == rhs.srgb ); +# endif + } + + bool operator!=( SamplerBorderColorComponentMappingCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT; + void const * pNext = {}; + ComponentMapping components = {}; + Bool32 srgb = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerBorderColorComponentMappingCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerBorderColorComponentMappingCreateInfoEXT; + }; + + // wrapper struct for struct VkSamplerCaptureDescriptorDataInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerCaptureDescriptorDataInfoEXT.html + struct SamplerCaptureDescriptorDataInfoEXT + { + using NativeType = VkSamplerCaptureDescriptorDataInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerCaptureDescriptorDataInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerCaptureDescriptorDataInfoEXT( Sampler sampler_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , sampler{ sampler_ } + { + } + + VULKAN_HPP_CONSTEXPR SamplerCaptureDescriptorDataInfoEXT( SamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerCaptureDescriptorDataInfoEXT( VkSamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerCaptureDescriptorDataInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + SamplerCaptureDescriptorDataInfoEXT & operator=( SamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerCaptureDescriptorDataInfoEXT & operator=( VkSamplerCaptureDescriptorDataInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerCaptureDescriptorDataInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCaptureDescriptorDataInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCaptureDescriptorDataInfoEXT & setSampler( Sampler sampler_ ) & VULKAN_HPP_NOEXCEPT + { + sampler = sampler_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCaptureDescriptorDataInfoEXT && setSampler( Sampler sampler_ ) && VULKAN_HPP_NOEXCEPT + { + sampler = sampler_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerCaptureDescriptorDataInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerCaptureDescriptorDataInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerCaptureDescriptorDataInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerCaptureDescriptorDataInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sampler ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerCaptureDescriptorDataInfoEXT const & ) const = default; +#else + bool operator==( SamplerCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sampler == rhs.sampler ); +# endif + } + + bool operator!=( SamplerCaptureDescriptorDataInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerCaptureDescriptorDataInfoEXT; + void const * pNext = {}; + Sampler sampler = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerCaptureDescriptorDataInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerCaptureDescriptorDataInfoEXT; + }; + + // wrapper struct for struct VkSamplerCubicWeightsCreateInfoQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerCubicWeightsCreateInfoQCOM.html + struct SamplerCubicWeightsCreateInfoQCOM + { + using NativeType = VkSamplerCubicWeightsCreateInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerCubicWeightsCreateInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerCubicWeightsCreateInfoQCOM( CubicFilterWeightsQCOM cubicWeights_ = CubicFilterWeightsQCOM::eCatmullRom, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , cubicWeights{ cubicWeights_ } + { + } + + VULKAN_HPP_CONSTEXPR SamplerCubicWeightsCreateInfoQCOM( SamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerCubicWeightsCreateInfoQCOM( VkSamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerCubicWeightsCreateInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + SamplerCubicWeightsCreateInfoQCOM & operator=( SamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerCubicWeightsCreateInfoQCOM & operator=( VkSamplerCubicWeightsCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerCubicWeightsCreateInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCubicWeightsCreateInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCubicWeightsCreateInfoQCOM & setCubicWeights( CubicFilterWeightsQCOM cubicWeights_ ) & VULKAN_HPP_NOEXCEPT + { + cubicWeights = cubicWeights_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCubicWeightsCreateInfoQCOM && setCubicWeights( CubicFilterWeightsQCOM cubicWeights_ ) && VULKAN_HPP_NOEXCEPT + { + cubicWeights = cubicWeights_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerCubicWeightsCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerCubicWeightsCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerCubicWeightsCreateInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerCubicWeightsCreateInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, cubicWeights ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerCubicWeightsCreateInfoQCOM const & ) const = default; +#else + bool operator==( SamplerCubicWeightsCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( cubicWeights == rhs.cubicWeights ); +# endif + } + + bool operator!=( SamplerCubicWeightsCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerCubicWeightsCreateInfoQCOM; + void const * pNext = {}; + CubicFilterWeightsQCOM cubicWeights = CubicFilterWeightsQCOM::eCatmullRom; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerCubicWeightsCreateInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerCubicWeightsCreateInfoQCOM; + }; + + // wrapper struct for struct VkSamplerCustomBorderColorCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerCustomBorderColorCreateInfoEXT.html + struct SamplerCustomBorderColorCreateInfoEXT + { + using NativeType = VkSamplerCustomBorderColorCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerCustomBorderColorCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT( ClearColorValue customBorderColor_ = {}, + Format format_ = Format::eUndefined, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , customBorderColor{ customBorderColor_ } + , format{ format_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerCustomBorderColorCreateInfoEXT( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerCustomBorderColorCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + SamplerCustomBorderColorCreateInfoEXT & operator=( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerCustomBorderColorCreateInfoEXT & operator=( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setCustomBorderColor( ClearColorValue const & customBorderColor_ ) & VULKAN_HPP_NOEXCEPT + { + customBorderColor = customBorderColor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT && setCustomBorderColor( ClearColorValue const & customBorderColor_ ) && VULKAN_HPP_NOEXCEPT + { + customBorderColor = customBorderColor_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorCreateInfoEXT && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerCustomBorderColorCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerCustomBorderColorCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerCustomBorderColorCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerCustomBorderColorCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, customBorderColor, format ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerCustomBorderColorCreateInfoEXT; + void const * pNext = {}; + ClearColorValue customBorderColor = {}; + Format format = Format::eUndefined; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerCustomBorderColorCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerCustomBorderColorCreateInfoEXT; + }; + + // wrapper struct for struct VkSamplerCustomBorderColorIndexCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerCustomBorderColorIndexCreateInfoEXT.html + struct SamplerCustomBorderColorIndexCreateInfoEXT + { + using NativeType = VkSamplerCustomBorderColorIndexCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerCustomBorderColorIndexCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerCustomBorderColorIndexCreateInfoEXT( uint32_t index_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , index{ index_ } + { + } + + VULKAN_HPP_CONSTEXPR SamplerCustomBorderColorIndexCreateInfoEXT( SamplerCustomBorderColorIndexCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerCustomBorderColorIndexCreateInfoEXT( VkSamplerCustomBorderColorIndexCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerCustomBorderColorIndexCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + SamplerCustomBorderColorIndexCreateInfoEXT & operator=( SamplerCustomBorderColorIndexCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerCustomBorderColorIndexCreateInfoEXT & operator=( VkSamplerCustomBorderColorIndexCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorIndexCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorIndexCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorIndexCreateInfoEXT & setIndex( uint32_t index_ ) & VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerCustomBorderColorIndexCreateInfoEXT && setIndex( uint32_t index_ ) && VULKAN_HPP_NOEXCEPT + { + index = index_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerCustomBorderColorIndexCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerCustomBorderColorIndexCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerCustomBorderColorIndexCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerCustomBorderColorIndexCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, index ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerCustomBorderColorIndexCreateInfoEXT const & ) const = default; +#else + bool operator==( SamplerCustomBorderColorIndexCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( index == rhs.index ); +# endif + } + + bool operator!=( SamplerCustomBorderColorIndexCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerCustomBorderColorIndexCreateInfoEXT; + void const * pNext = {}; + uint32_t index = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerCustomBorderColorIndexCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerCustomBorderColorIndexCreateInfoEXT; + }; + + // wrapper struct for struct VkSamplerReductionModeCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerReductionModeCreateInfo.html + struct SamplerReductionModeCreateInfo + { + using NativeType = VkSamplerReductionModeCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerReductionModeCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo( SamplerReductionMode reductionMode_ = SamplerReductionMode::eWeightedAverage, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , reductionMode{ reductionMode_ } + { + } + + VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerReductionModeCreateInfo( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerReductionModeCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + SamplerReductionModeCreateInfo & operator=( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerReductionModeCreateInfo & operator=( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & setReductionMode( SamplerReductionMode reductionMode_ ) & VULKAN_HPP_NOEXCEPT + { + reductionMode = reductionMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo && setReductionMode( SamplerReductionMode reductionMode_ ) && VULKAN_HPP_NOEXCEPT + { + reductionMode = reductionMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerReductionModeCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerReductionModeCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerReductionModeCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerReductionModeCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, reductionMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerReductionModeCreateInfo const & ) const = default; +#else + bool operator==( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( reductionMode == rhs.reductionMode ); +# endif + } + + bool operator!=( SamplerReductionModeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerReductionModeCreateInfo; + void const * pNext = {}; + SamplerReductionMode reductionMode = SamplerReductionMode::eWeightedAverage; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerReductionModeCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerReductionModeCreateInfo; + }; + + using SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo; + + // wrapper struct for struct VkSamplerYcbcrConversionCreateInfo, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionCreateInfo.html + struct SamplerYcbcrConversionCreateInfo + { + using NativeType = VkSamplerYcbcrConversionCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo( Format format_ = Format::eUndefined, + SamplerYcbcrModelConversion ycbcrModel_ = SamplerYcbcrModelConversion::eRgbIdentity, + SamplerYcbcrRange ycbcrRange_ = SamplerYcbcrRange::eItuFull, + ComponentMapping components_ = {}, + ChromaLocation xChromaOffset_ = ChromaLocation::eCositedEven, + ChromaLocation yChromaOffset_ = ChromaLocation::eCositedEven, + Filter chromaFilter_ = Filter::eNearest, + Bool32 forceExplicitReconstruction_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , format{ format_ } + , ycbcrModel{ ycbcrModel_ } + , ycbcrRange{ ycbcrRange_ } + , components{ components_ } + , xChromaOffset{ xChromaOffset_ } + , yChromaOffset{ yChromaOffset_ } + , chromaFilter{ chromaFilter_ } + , forceExplicitReconstruction{ forceExplicitReconstruction_ } + { + } + + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerYcbcrConversionCreateInfo( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerYcbcrConversionCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + SamplerYcbcrConversionCreateInfo & operator=( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerYcbcrConversionCreateInfo & operator=( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setYcbcrModel( SamplerYcbcrModelConversion ycbcrModel_ ) & VULKAN_HPP_NOEXCEPT + { + ycbcrModel = ycbcrModel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo && setYcbcrModel( SamplerYcbcrModelConversion ycbcrModel_ ) && VULKAN_HPP_NOEXCEPT + { + ycbcrModel = ycbcrModel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setYcbcrRange( SamplerYcbcrRange ycbcrRange_ ) & VULKAN_HPP_NOEXCEPT + { + ycbcrRange = ycbcrRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo && setYcbcrRange( SamplerYcbcrRange ycbcrRange_ ) && VULKAN_HPP_NOEXCEPT + { + ycbcrRange = ycbcrRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setComponents( ComponentMapping const & components_ ) & VULKAN_HPP_NOEXCEPT + { + components = components_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo && setComponents( ComponentMapping const & components_ ) && VULKAN_HPP_NOEXCEPT + { + components = components_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setXChromaOffset( ChromaLocation xChromaOffset_ ) & VULKAN_HPP_NOEXCEPT + { + xChromaOffset = xChromaOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo && setXChromaOffset( ChromaLocation xChromaOffset_ ) && VULKAN_HPP_NOEXCEPT + { + xChromaOffset = xChromaOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setYChromaOffset( ChromaLocation yChromaOffset_ ) & VULKAN_HPP_NOEXCEPT + { + yChromaOffset = yChromaOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo && setYChromaOffset( ChromaLocation yChromaOffset_ ) && VULKAN_HPP_NOEXCEPT + { + yChromaOffset = yChromaOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setChromaFilter( Filter chromaFilter_ ) & VULKAN_HPP_NOEXCEPT + { + chromaFilter = chromaFilter_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo && setChromaFilter( Filter chromaFilter_ ) && VULKAN_HPP_NOEXCEPT + { + chromaFilter = chromaFilter_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & setForceExplicitReconstruction( Bool32 forceExplicitReconstruction_ ) & VULKAN_HPP_NOEXCEPT + { + forceExplicitReconstruction = forceExplicitReconstruction_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo && setForceExplicitReconstruction( Bool32 forceExplicitReconstruction_ ) && VULKAN_HPP_NOEXCEPT + { + forceExplicitReconstruction = forceExplicitReconstruction_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerYcbcrConversionCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, format, ycbcrModel, ycbcrRange, components, xChromaOffset, yChromaOffset, chromaFilter, forceExplicitReconstruction ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerYcbcrConversionCreateInfo const & ) const = default; +#else + bool operator==( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( ycbcrModel == rhs.ycbcrModel ) && + ( ycbcrRange == rhs.ycbcrRange ) && ( components == rhs.components ) && ( xChromaOffset == rhs.xChromaOffset ) && + ( yChromaOffset == rhs.yChromaOffset ) && ( chromaFilter == rhs.chromaFilter ) && + ( forceExplicitReconstruction == rhs.forceExplicitReconstruction ); +# endif + } + + bool operator!=( SamplerYcbcrConversionCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerYcbcrConversionCreateInfo; + void const * pNext = {}; + Format format = Format::eUndefined; + SamplerYcbcrModelConversion ycbcrModel = SamplerYcbcrModelConversion::eRgbIdentity; + SamplerYcbcrRange ycbcrRange = SamplerYcbcrRange::eItuFull; + ComponentMapping components = {}; + ChromaLocation xChromaOffset = ChromaLocation::eCositedEven; + ChromaLocation yChromaOffset = ChromaLocation::eCositedEven; + Filter chromaFilter = Filter::eNearest; + Bool32 forceExplicitReconstruction = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerYcbcrConversionCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerYcbcrConversionCreateInfo; + }; + + using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo; + + // wrapper struct for struct VkSamplerYcbcrConversionImageFormatProperties, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionImageFormatProperties.html + struct SamplerYcbcrConversionImageFormatProperties + { + using NativeType = VkSamplerYcbcrConversionImageFormatProperties; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionImageFormatProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( uint32_t combinedImageSamplerDescriptorCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , combinedImageSamplerDescriptorCount{ combinedImageSamplerDescriptorCount_ } + { + } + + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerYcbcrConversionImageFormatProperties( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerYcbcrConversionImageFormatProperties( *reinterpret_cast( &rhs ) ) + { + } + + SamplerYcbcrConversionImageFormatProperties & operator=( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerYcbcrConversionImageFormatProperties & operator=( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSamplerYcbcrConversionImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionImageFormatProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionImageFormatProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionImageFormatProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, combinedImageSamplerDescriptorCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerYcbcrConversionImageFormatProperties const & ) const = default; +#else + bool operator==( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount ); +# endif + } + + bool operator!=( SamplerYcbcrConversionImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatProperties; + void * pNext = {}; + uint32_t combinedImageSamplerDescriptorCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerYcbcrConversionImageFormatProperties; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerYcbcrConversionImageFormatProperties; + }; + + using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties; + + // wrapper struct for struct VkSamplerYcbcrConversionInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionInfo.html + struct SamplerYcbcrConversionInfo + { + using NativeType = VkSamplerYcbcrConversionInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo( SamplerYcbcrConversion conversion_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , conversion{ conversion_ } + { + } + + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerYcbcrConversionInfo( *reinterpret_cast( &rhs ) ) + { + } + + SamplerYcbcrConversionInfo & operator=( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerYcbcrConversionInfo & operator=( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & setConversion( SamplerYcbcrConversion conversion_ ) & VULKAN_HPP_NOEXCEPT + { + conversion = conversion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo && setConversion( SamplerYcbcrConversion conversion_ ) && VULKAN_HPP_NOEXCEPT + { + conversion = conversion_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerYcbcrConversionInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, conversion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerYcbcrConversionInfo const & ) const = default; +#else + bool operator==( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( conversion == rhs.conversion ); +# endif + } + + bool operator!=( SamplerYcbcrConversionInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerYcbcrConversionInfo; + void const * pNext = {}; + SamplerYcbcrConversion conversion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerYcbcrConversionInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerYcbcrConversionInfo; + }; + + using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo; + + // wrapper struct for struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM.html + struct SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM + { + using NativeType = VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( Bool32 enableYDegamma_ = {}, + Bool32 enableCbCrDegamma_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , enableYDegamma{ enableYDegamma_ } + , enableCbCrDegamma{ enableCbCrDegamma_ } + { + } + + VULKAN_HPP_CONSTEXPR + SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & operator=( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & operator=( VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & setEnableYDegamma( Bool32 enableYDegamma_ ) & VULKAN_HPP_NOEXCEPT + { + enableYDegamma = enableYDegamma_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM && setEnableYDegamma( Bool32 enableYDegamma_ ) && VULKAN_HPP_NOEXCEPT + { + enableYDegamma = enableYDegamma_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM & setEnableCbCrDegamma( Bool32 enableCbCrDegamma_ ) & VULKAN_HPP_NOEXCEPT + { + enableCbCrDegamma = enableCbCrDegamma_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM && setEnableCbCrDegamma( Bool32 enableCbCrDegamma_ ) && VULKAN_HPP_NOEXCEPT + { + enableCbCrDegamma = enableCbCrDegamma_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, enableYDegamma, enableCbCrDegamma ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & ) const = default; +#else + bool operator==( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( enableYDegamma == rhs.enableYDegamma ) && ( enableCbCrDegamma == rhs.enableCbCrDegamma ); +# endif + } + + bool operator!=( SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM; + void * pNext = {}; + Bool32 enableYDegamma = {}; + Bool32 enableCbCrDegamma = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM; + }; + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + // wrapper struct for struct VkScreenBufferFormatPropertiesQNX, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkScreenBufferFormatPropertiesQNX.html + struct ScreenBufferFormatPropertiesQNX + { + using NativeType = VkScreenBufferFormatPropertiesQNX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eScreenBufferFormatPropertiesQNX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ScreenBufferFormatPropertiesQNX( Format format_ = Format::eUndefined, + uint64_t externalFormat_ = {}, + uint64_t screenUsage_ = {}, + FormatFeatureFlags formatFeatures_ = {}, + ComponentMapping samplerYcbcrConversionComponents_ = {}, + SamplerYcbcrModelConversion suggestedYcbcrModel_ = SamplerYcbcrModelConversion::eRgbIdentity, + SamplerYcbcrRange suggestedYcbcrRange_ = SamplerYcbcrRange::eItuFull, + ChromaLocation suggestedXChromaOffset_ = ChromaLocation::eCositedEven, + ChromaLocation suggestedYChromaOffset_ = ChromaLocation::eCositedEven, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , format{ format_ } + , externalFormat{ externalFormat_ } + , screenUsage{ screenUsage_ } + , formatFeatures{ formatFeatures_ } + , samplerYcbcrConversionComponents{ samplerYcbcrConversionComponents_ } + , suggestedYcbcrModel{ suggestedYcbcrModel_ } + , suggestedYcbcrRange{ suggestedYcbcrRange_ } + , suggestedXChromaOffset{ suggestedXChromaOffset_ } + , suggestedYChromaOffset{ suggestedYChromaOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR ScreenBufferFormatPropertiesQNX( ScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ScreenBufferFormatPropertiesQNX( VkScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT + : ScreenBufferFormatPropertiesQNX( *reinterpret_cast( &rhs ) ) + { + } + + ScreenBufferFormatPropertiesQNX & operator=( ScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ScreenBufferFormatPropertiesQNX & operator=( VkScreenBufferFormatPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkScreenBufferFormatPropertiesQNX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkScreenBufferFormatPropertiesQNX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkScreenBufferFormatPropertiesQNX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkScreenBufferFormatPropertiesQNX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + format, + externalFormat, + screenUsage, + formatFeatures, + samplerYcbcrConversionComponents, + suggestedYcbcrModel, + suggestedYcbcrRange, + suggestedXChromaOffset, + suggestedYChromaOffset ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ScreenBufferFormatPropertiesQNX const & ) const = default; +# else + bool operator==( ScreenBufferFormatPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( externalFormat == rhs.externalFormat ) && + ( screenUsage == rhs.screenUsage ) && ( formatFeatures == rhs.formatFeatures ) && + ( samplerYcbcrConversionComponents == rhs.samplerYcbcrConversionComponents ) && ( suggestedYcbcrModel == rhs.suggestedYcbcrModel ) && + ( suggestedYcbcrRange == rhs.suggestedYcbcrRange ) && ( suggestedXChromaOffset == rhs.suggestedXChromaOffset ) && + ( suggestedYChromaOffset == rhs.suggestedYChromaOffset ); +# endif + } + + bool operator!=( ScreenBufferFormatPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eScreenBufferFormatPropertiesQNX; + void * pNext = {}; + Format format = Format::eUndefined; + uint64_t externalFormat = {}; + uint64_t screenUsage = {}; + FormatFeatureFlags formatFeatures = {}; + ComponentMapping samplerYcbcrConversionComponents = {}; + SamplerYcbcrModelConversion suggestedYcbcrModel = SamplerYcbcrModelConversion::eRgbIdentity; + SamplerYcbcrRange suggestedYcbcrRange = SamplerYcbcrRange::eItuFull; + ChromaLocation suggestedXChromaOffset = ChromaLocation::eCositedEven; + ChromaLocation suggestedYChromaOffset = ChromaLocation::eCositedEven; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ScreenBufferFormatPropertiesQNX; + }; +# endif + + template <> + struct CppType + { + using Type = ScreenBufferFormatPropertiesQNX; + }; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + // wrapper struct for struct VkScreenBufferPropertiesQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkScreenBufferPropertiesQNX.html + struct ScreenBufferPropertiesQNX + { + using NativeType = VkScreenBufferPropertiesQNX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eScreenBufferPropertiesQNX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + ScreenBufferPropertiesQNX( DeviceSize allocationSize_ = {}, uint32_t memoryTypeBits_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , allocationSize{ allocationSize_ } + , memoryTypeBits{ memoryTypeBits_ } + { + } + + VULKAN_HPP_CONSTEXPR ScreenBufferPropertiesQNX( ScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ScreenBufferPropertiesQNX( VkScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT + : ScreenBufferPropertiesQNX( *reinterpret_cast( &rhs ) ) + { + } + + ScreenBufferPropertiesQNX & operator=( ScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ScreenBufferPropertiesQNX & operator=( VkScreenBufferPropertiesQNX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkScreenBufferPropertiesQNX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkScreenBufferPropertiesQNX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkScreenBufferPropertiesQNX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkScreenBufferPropertiesQNX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, allocationSize, memoryTypeBits ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ScreenBufferPropertiesQNX const & ) const = default; +# else + bool operator==( ScreenBufferPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( allocationSize == rhs.allocationSize ) && ( memoryTypeBits == rhs.memoryTypeBits ); +# endif + } + + bool operator!=( ScreenBufferPropertiesQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eScreenBufferPropertiesQNX; + void * pNext = {}; + DeviceSize allocationSize = {}; + uint32_t memoryTypeBits = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ScreenBufferPropertiesQNX; + }; +# endif + + template <> + struct CppType + { + using Type = ScreenBufferPropertiesQNX; + }; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + // wrapper struct for struct VkScreenSurfaceCreateInfoQNX, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkScreenSurfaceCreateInfoQNX.html + struct ScreenSurfaceCreateInfoQNX + { + using NativeType = VkScreenSurfaceCreateInfoQNX; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eScreenSurfaceCreateInfoQNX; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ScreenSurfaceCreateInfoQNX( ScreenSurfaceCreateFlagsQNX flags_ = {}, + struct _screen_context * context_ = {}, + struct _screen_window * window_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , context{ context_ } + , window{ window_ } + { + } + + VULKAN_HPP_CONSTEXPR ScreenSurfaceCreateInfoQNX( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ScreenSurfaceCreateInfoQNX( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT + : ScreenSurfaceCreateInfoQNX( *reinterpret_cast( &rhs ) ) + { + } + + ScreenSurfaceCreateInfoQNX & operator=( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ScreenSurfaceCreateInfoQNX & operator=( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setFlags( ScreenSurfaceCreateFlagsQNX flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX && setFlags( ScreenSurfaceCreateFlagsQNX flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setContext( struct _screen_context * context_ ) & VULKAN_HPP_NOEXCEPT + { + context = context_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX && setContext( struct _screen_context * context_ ) && VULKAN_HPP_NOEXCEPT + { + context = context_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & setWindow( struct _screen_window * window_ ) & VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX && setWindow( struct _screen_window * window_ ) && VULKAN_HPP_NOEXCEPT + { + window = window_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkScreenSurfaceCreateInfoQNX const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkScreenSurfaceCreateInfoQNX &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkScreenSurfaceCreateInfoQNX const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkScreenSurfaceCreateInfoQNX *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, context, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ScreenSurfaceCreateInfoQNX const & ) const = default; +# else + bool operator==( ScreenSurfaceCreateInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( context == rhs.context ) && ( window == rhs.window ); +# endif + } + + bool operator!=( ScreenSurfaceCreateInfoQNX const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eScreenSurfaceCreateInfoQNX; + void const * pNext = {}; + ScreenSurfaceCreateFlagsQNX flags = {}; + struct _screen_context * context = {}; + struct _screen_window * window = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ScreenSurfaceCreateInfoQNX; + }; +# endif + + template <> + struct CppType + { + using Type = ScreenSurfaceCreateInfoQNX; + }; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + // wrapper struct for struct VkSemaphoreCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreCreateInfo.html + struct SemaphoreCreateInfo + { + using NativeType = VkSemaphoreCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + SemaphoreCreateInfo & operator=( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SemaphoreCreateInfo & operator=( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & setFlags( SemaphoreCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo && setFlags( SemaphoreCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSemaphoreCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSemaphoreCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreCreateInfo const & ) const = default; +#else + bool operator==( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( SemaphoreCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSemaphoreCreateInfo; + void const * pNext = {}; + SemaphoreCreateFlags flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SemaphoreCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SemaphoreCreateInfo; + }; + + // wrapper struct for struct VkSemaphoreGetFdInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreGetFdInfoKHR.html + struct SemaphoreGetFdInfoKHR + { + using NativeType = VkSemaphoreGetFdInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreGetFdInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR( Semaphore semaphore_ = {}, + ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , semaphore{ semaphore_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreGetFdInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + SemaphoreGetFdInfoKHR & operator=( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SemaphoreGetFdInfoKHR & operator=( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setSemaphore( Semaphore semaphore_ ) & VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR && setSemaphore( Semaphore semaphore_ ) && VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR && setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSemaphoreGetFdInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreGetFdInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreGetFdInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSemaphoreGetFdInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, handleType ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreGetFdInfoKHR const & ) const = default; +#else + bool operator==( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( SemaphoreGetFdInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSemaphoreGetFdInfoKHR; + void const * pNext = {}; + Semaphore semaphore = {}; + ExternalSemaphoreHandleTypeFlagBits handleType = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SemaphoreGetFdInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SemaphoreGetFdInfoKHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkSemaphoreGetWin32HandleInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreGetWin32HandleInfoKHR.html + struct SemaphoreGetWin32HandleInfoKHR + { + using NativeType = VkSemaphoreGetWin32HandleInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreGetWin32HandleInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = {}, + ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , semaphore{ semaphore_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR SemaphoreGetWin32HandleInfoKHR( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreGetWin32HandleInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + SemaphoreGetWin32HandleInfoKHR & operator=( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SemaphoreGetWin32HandleInfoKHR & operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & setSemaphore( Semaphore semaphore_ ) & VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR && setSemaphore( Semaphore semaphore_ ) && VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR && setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSemaphoreGetWin32HandleInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreGetWin32HandleInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreGetWin32HandleInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSemaphoreGetWin32HandleInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreGetWin32HandleInfoKHR const & ) const = default; +# else + bool operator==( SemaphoreGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( SemaphoreGetWin32HandleInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eSemaphoreGetWin32HandleInfoKHR; + void const * pNext = {}; + Semaphore semaphore = {}; + ExternalSemaphoreHandleTypeFlagBits handleType = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SemaphoreGetWin32HandleInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = SemaphoreGetWin32HandleInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + // wrapper struct for struct VkSemaphoreGetZirconHandleInfoFUCHSIA, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreGetZirconHandleInfoFUCHSIA.html + struct SemaphoreGetZirconHandleInfoFUCHSIA + { + using NativeType = VkSemaphoreGetZirconHandleInfoFUCHSIA; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreGetZirconHandleInfoFUCHSIA( Semaphore semaphore_ = {}, + ExternalSemaphoreHandleTypeFlagBits handleType_ = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , semaphore{ semaphore_ } + , handleType{ handleType_ } + { + } + + VULKAN_HPP_CONSTEXPR SemaphoreGetZirconHandleInfoFUCHSIA( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreGetZirconHandleInfoFUCHSIA( VkSemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreGetZirconHandleInfoFUCHSIA( *reinterpret_cast( &rhs ) ) + { + } + + SemaphoreGetZirconHandleInfoFUCHSIA & operator=( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SemaphoreGetZirconHandleInfoFUCHSIA & operator=( VkSemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & setSemaphore( Semaphore semaphore_ ) & VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA && setSemaphore( Semaphore semaphore_ ) && VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA & setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) & VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreGetZirconHandleInfoFUCHSIA && setHandleType( ExternalSemaphoreHandleTypeFlagBits handleType_ ) && VULKAN_HPP_NOEXCEPT + { + handleType = handleType_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSemaphoreGetZirconHandleInfoFUCHSIA const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreGetZirconHandleInfoFUCHSIA &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreGetZirconHandleInfoFUCHSIA const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSemaphoreGetZirconHandleInfoFUCHSIA *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, handleType ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreGetZirconHandleInfoFUCHSIA const & ) const = default; +# else + bool operator==( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( handleType == rhs.handleType ); +# endif + } + + bool operator!=( SemaphoreGetZirconHandleInfoFUCHSIA const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA; + void const * pNext = {}; + Semaphore semaphore = {}; + ExternalSemaphoreHandleTypeFlagBits handleType = ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SemaphoreGetZirconHandleInfoFUCHSIA; + }; +# endif + + template <> + struct CppType + { + using Type = SemaphoreGetZirconHandleInfoFUCHSIA; + }; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + // wrapper struct for struct VkSemaphoreSignalInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreSignalInfo.html + struct SemaphoreSignalInfo + { + using NativeType = VkSemaphoreSignalInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSignalInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo( Semaphore semaphore_ = {}, uint64_t value_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , semaphore{ semaphore_ } + , value{ value_ } + { + } + + VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreSignalInfo( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreSignalInfo( *reinterpret_cast( &rhs ) ) + { + } + + SemaphoreSignalInfo & operator=( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SemaphoreSignalInfo & operator=( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setSemaphore( Semaphore semaphore_ ) & VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo && setSemaphore( Semaphore semaphore_ ) && VULKAN_HPP_NOEXCEPT + { + semaphore = semaphore_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & setValue( uint64_t value_ ) & VULKAN_HPP_NOEXCEPT + { + value = value_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo && setValue( uint64_t value_ ) && VULKAN_HPP_NOEXCEPT + { + value = value_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSemaphoreSignalInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreSignalInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreSignalInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSemaphoreSignalInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphore, value ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreSignalInfo const & ) const = default; +#else + bool operator==( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphore == rhs.semaphore ) && ( value == rhs.value ); +# endif + } + + bool operator!=( SemaphoreSignalInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSemaphoreSignalInfo; + void const * pNext = {}; + Semaphore semaphore = {}; + uint64_t value = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SemaphoreSignalInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SemaphoreSignalInfo; + }; + + using SemaphoreSignalInfoKHR = SemaphoreSignalInfo; + + // wrapper struct for struct VkSemaphoreTypeCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreTypeCreateInfo.html + struct SemaphoreTypeCreateInfo + { + using NativeType = VkSemaphoreTypeCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreTypeCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( SemaphoreType semaphoreType_ = SemaphoreType::eBinary, + uint64_t initialValue_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , semaphoreType{ semaphoreType_ } + , initialValue{ initialValue_ } + { + } + + VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreTypeCreateInfo( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : SemaphoreTypeCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + + SemaphoreTypeCreateInfo & operator=( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SemaphoreTypeCreateInfo & operator=( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setSemaphoreType( SemaphoreType semaphoreType_ ) & VULKAN_HPP_NOEXCEPT + { + semaphoreType = semaphoreType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo && setSemaphoreType( SemaphoreType semaphoreType_ ) && VULKAN_HPP_NOEXCEPT + { + semaphoreType = semaphoreType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & setInitialValue( uint64_t initialValue_ ) & VULKAN_HPP_NOEXCEPT + { + initialValue = initialValue_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo && setInitialValue( uint64_t initialValue_ ) && VULKAN_HPP_NOEXCEPT + { + initialValue = initialValue_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSemaphoreTypeCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreTypeCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreTypeCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSemaphoreTypeCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, semaphoreType, initialValue ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreTypeCreateInfo const & ) const = default; +#else + bool operator==( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( semaphoreType == rhs.semaphoreType ) && ( initialValue == rhs.initialValue ); +# endif + } + + bool operator!=( SemaphoreTypeCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSemaphoreTypeCreateInfo; + void const * pNext = {}; + SemaphoreType semaphoreType = SemaphoreType::eBinary; + uint64_t initialValue = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SemaphoreTypeCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SemaphoreTypeCreateInfo; + }; + + using SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo; + + // wrapper struct for struct VkSemaphoreWaitInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSemaphoreWaitInfo.html + struct SemaphoreWaitInfo + { + using NativeType = VkSemaphoreWaitInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreWaitInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( SemaphoreWaitFlags flags_ = {}, + uint32_t semaphoreCount_ = {}, + Semaphore const * pSemaphores_ = {}, + uint64_t const * pValues_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , semaphoreCount{ semaphoreCount_ } + , pSemaphores{ pSemaphores_ } + , pValues{ pValues_ } + { + } + + VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SemaphoreWaitInfo( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SemaphoreWaitInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SemaphoreWaitInfo( SemaphoreWaitFlags flags_, + ArrayProxyNoTemporaries const & semaphores_, + ArrayProxyNoTemporaries const & values_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , semaphoreCount( static_cast( semaphores_.size() ) ) + , pSemaphores( semaphores_.data() ) + , pValues( values_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( semaphores_.size() == values_.size() ); +# else + if ( semaphores_.size() != values_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::SemaphoreWaitInfo::SemaphoreWaitInfo: semaphores_.size() != values_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SemaphoreWaitInfo & operator=( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SemaphoreWaitInfo & operator=( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setFlags( SemaphoreWaitFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo && setFlags( SemaphoreWaitFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setSemaphoreCount( uint32_t semaphoreCount_ ) & VULKAN_HPP_NOEXCEPT + { + semaphoreCount = semaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo && setSemaphoreCount( uint32_t semaphoreCount_ ) && VULKAN_HPP_NOEXCEPT + { + semaphoreCount = semaphoreCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPSemaphores( Semaphore const * pSemaphores_ ) & VULKAN_HPP_NOEXCEPT + { + pSemaphores = pSemaphores_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo && setPSemaphores( Semaphore const * pSemaphores_ ) && VULKAN_HPP_NOEXCEPT + { + pSemaphores = pSemaphores_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SemaphoreWaitInfo & setSemaphores( ArrayProxyNoTemporaries const & semaphores_ ) VULKAN_HPP_NOEXCEPT + { + semaphoreCount = static_cast( semaphores_.size() ); + pSemaphores = semaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & setPValues( uint64_t const * pValues_ ) & VULKAN_HPP_NOEXCEPT + { + pValues = pValues_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo && setPValues( uint64_t const * pValues_ ) && VULKAN_HPP_NOEXCEPT + { + pValues = pValues_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SemaphoreWaitInfo & setValues( ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT + { + semaphoreCount = static_cast( values_.size() ); + pValues = values_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSemaphoreWaitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreWaitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSemaphoreWaitInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSemaphoreWaitInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, semaphoreCount, pSemaphores, pValues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SemaphoreWaitInfo const & ) const = default; +#else + bool operator==( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( semaphoreCount == rhs.semaphoreCount ) && + ( pSemaphores == rhs.pSemaphores ) && ( pValues == rhs.pValues ); +# endif + } + + bool operator!=( SemaphoreWaitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSemaphoreWaitInfo; + void const * pNext = {}; + SemaphoreWaitFlags flags = {}; + uint32_t semaphoreCount = {}; + Semaphore const * pSemaphores = {}; + uint64_t const * pValues = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SemaphoreWaitInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SemaphoreWaitInfo; + }; + + using SemaphoreWaitInfoKHR = SemaphoreWaitInfo; + + // wrapper struct for struct VkSetDescriptorBufferOffsetsInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSetDescriptorBufferOffsetsInfoEXT.html + struct SetDescriptorBufferOffsetsInfoEXT + { + using NativeType = VkSetDescriptorBufferOffsetsInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSetDescriptorBufferOffsetsInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SetDescriptorBufferOffsetsInfoEXT( ShaderStageFlags stageFlags_ = {}, + PipelineLayout layout_ = {}, + uint32_t firstSet_ = {}, + uint32_t setCount_ = {}, + uint32_t const * pBufferIndices_ = {}, + DeviceSize const * pOffsets_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stageFlags{ stageFlags_ } + , layout{ layout_ } + , firstSet{ firstSet_ } + , setCount{ setCount_ } + , pBufferIndices{ pBufferIndices_ } + , pOffsets{ pOffsets_ } + { + } + + VULKAN_HPP_CONSTEXPR SetDescriptorBufferOffsetsInfoEXT( SetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SetDescriptorBufferOffsetsInfoEXT( VkSetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SetDescriptorBufferOffsetsInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SetDescriptorBufferOffsetsInfoEXT( ShaderStageFlags stageFlags_, + PipelineLayout layout_, + uint32_t firstSet_, + ArrayProxyNoTemporaries const & bufferIndices_, + ArrayProxyNoTemporaries const & offsets_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , stageFlags( stageFlags_ ) + , layout( layout_ ) + , firstSet( firstSet_ ) + , setCount( static_cast( bufferIndices_.size() ) ) + , pBufferIndices( bufferIndices_.data() ) + , pOffsets( offsets_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( bufferIndices_.size() == offsets_.size() ); +# else + if ( bufferIndices_.size() != offsets_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::SetDescriptorBufferOffsetsInfoEXT::SetDescriptorBufferOffsetsInfoEXT: bufferIndices_.size() != offsets_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SetDescriptorBufferOffsetsInfoEXT & operator=( SetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SetDescriptorBufferOffsetsInfoEXT & operator=( VkSetDescriptorBufferOffsetsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setStageFlags( ShaderStageFlags stageFlags_ ) & VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT && setStageFlags( ShaderStageFlags stageFlags_ ) && VULKAN_HPP_NOEXCEPT + { + stageFlags = stageFlags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setLayout( PipelineLayout layout_ ) & VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT && setLayout( PipelineLayout layout_ ) && VULKAN_HPP_NOEXCEPT + { + layout = layout_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setFirstSet( uint32_t firstSet_ ) & VULKAN_HPP_NOEXCEPT + { + firstSet = firstSet_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT && setFirstSet( uint32_t firstSet_ ) && VULKAN_HPP_NOEXCEPT + { + firstSet = firstSet_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setSetCount( uint32_t setCount_ ) & VULKAN_HPP_NOEXCEPT + { + setCount = setCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT && setSetCount( uint32_t setCount_ ) && VULKAN_HPP_NOEXCEPT + { + setCount = setCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setPBufferIndices( uint32_t const * pBufferIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pBufferIndices = pBufferIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT && setPBufferIndices( uint32_t const * pBufferIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pBufferIndices = pBufferIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SetDescriptorBufferOffsetsInfoEXT & setBufferIndices( ArrayProxyNoTemporaries const & bufferIndices_ ) VULKAN_HPP_NOEXCEPT + { + setCount = static_cast( bufferIndices_.size() ); + pBufferIndices = bufferIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT & setPOffsets( DeviceSize const * pOffsets_ ) & VULKAN_HPP_NOEXCEPT + { + pOffsets = pOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetDescriptorBufferOffsetsInfoEXT && setPOffsets( DeviceSize const * pOffsets_ ) && VULKAN_HPP_NOEXCEPT + { + pOffsets = pOffsets_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SetDescriptorBufferOffsetsInfoEXT & setOffsets( ArrayProxyNoTemporaries const & offsets_ ) VULKAN_HPP_NOEXCEPT + { + setCount = static_cast( offsets_.size() ); + pOffsets = offsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSetDescriptorBufferOffsetsInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSetDescriptorBufferOffsetsInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSetDescriptorBufferOffsetsInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSetDescriptorBufferOffsetsInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stageFlags, layout, firstSet, setCount, pBufferIndices, pOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SetDescriptorBufferOffsetsInfoEXT const & ) const = default; +#else + bool operator==( SetDescriptorBufferOffsetsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stageFlags == rhs.stageFlags ) && ( layout == rhs.layout ) && ( firstSet == rhs.firstSet ) && + ( setCount == rhs.setCount ) && ( pBufferIndices == rhs.pBufferIndices ) && ( pOffsets == rhs.pOffsets ); +# endif + } + + bool operator!=( SetDescriptorBufferOffsetsInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSetDescriptorBufferOffsetsInfoEXT; + void const * pNext = {}; + ShaderStageFlags stageFlags = {}; + PipelineLayout layout = {}; + uint32_t firstSet = {}; + uint32_t setCount = {}; + uint32_t const * pBufferIndices = {}; + DeviceSize const * pOffsets = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SetDescriptorBufferOffsetsInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SetDescriptorBufferOffsetsInfoEXT; + }; + + // wrapper struct for struct VkSetLatencyMarkerInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSetLatencyMarkerInfoNV.html + struct SetLatencyMarkerInfoNV + { + using NativeType = VkSetLatencyMarkerInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSetLatencyMarkerInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SetLatencyMarkerInfoNV( uint64_t presentID_ = {}, + LatencyMarkerNV marker_ = LatencyMarkerNV::eSimulationStart, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentID{ presentID_ } + , marker{ marker_ } + { + } + + VULKAN_HPP_CONSTEXPR SetLatencyMarkerInfoNV( SetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SetLatencyMarkerInfoNV( VkSetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : SetLatencyMarkerInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + SetLatencyMarkerInfoNV & operator=( SetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SetLatencyMarkerInfoNV & operator=( VkSetLatencyMarkerInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV & setPresentID( uint64_t presentID_ ) & VULKAN_HPP_NOEXCEPT + { + presentID = presentID_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV && setPresentID( uint64_t presentID_ ) && VULKAN_HPP_NOEXCEPT + { + presentID = presentID_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV & setMarker( LatencyMarkerNV marker_ ) & VULKAN_HPP_NOEXCEPT + { + marker = marker_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetLatencyMarkerInfoNV && setMarker( LatencyMarkerNV marker_ ) && VULKAN_HPP_NOEXCEPT + { + marker = marker_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSetLatencyMarkerInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSetLatencyMarkerInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSetLatencyMarkerInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSetLatencyMarkerInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentID, marker ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SetLatencyMarkerInfoNV const & ) const = default; +#else + bool operator==( SetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentID == rhs.presentID ) && ( marker == rhs.marker ); +# endif + } + + bool operator!=( SetLatencyMarkerInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSetLatencyMarkerInfoNV; + void const * pNext = {}; + uint64_t presentID = {}; + LatencyMarkerNV marker = LatencyMarkerNV::eSimulationStart; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SetLatencyMarkerInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = SetLatencyMarkerInfoNV; + }; + + // wrapper struct for struct VkSetPresentConfigNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSetPresentConfigNV.html + struct SetPresentConfigNV + { + using NativeType = VkSetPresentConfigNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSetPresentConfigNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SetPresentConfigNV( uint32_t numFramesPerBatch_ = {}, uint32_t presentConfigFeedback_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , numFramesPerBatch{ numFramesPerBatch_ } + , presentConfigFeedback{ presentConfigFeedback_ } + { + } + + VULKAN_HPP_CONSTEXPR SetPresentConfigNV( SetPresentConfigNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SetPresentConfigNV( VkSetPresentConfigNV const & rhs ) VULKAN_HPP_NOEXCEPT : SetPresentConfigNV( *reinterpret_cast( &rhs ) ) {} + + SetPresentConfigNV & operator=( SetPresentConfigNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SetPresentConfigNV & operator=( VkSetPresentConfigNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SetPresentConfigNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetPresentConfigNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SetPresentConfigNV & setNumFramesPerBatch( uint32_t numFramesPerBatch_ ) & VULKAN_HPP_NOEXCEPT + { + numFramesPerBatch = numFramesPerBatch_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetPresentConfigNV && setNumFramesPerBatch( uint32_t numFramesPerBatch_ ) && VULKAN_HPP_NOEXCEPT + { + numFramesPerBatch = numFramesPerBatch_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SetPresentConfigNV & setPresentConfigFeedback( uint32_t presentConfigFeedback_ ) & VULKAN_HPP_NOEXCEPT + { + presentConfigFeedback = presentConfigFeedback_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetPresentConfigNV && setPresentConfigFeedback( uint32_t presentConfigFeedback_ ) && VULKAN_HPP_NOEXCEPT + { + presentConfigFeedback = presentConfigFeedback_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSetPresentConfigNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSetPresentConfigNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSetPresentConfigNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSetPresentConfigNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, numFramesPerBatch, presentConfigFeedback ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SetPresentConfigNV const & ) const = default; +#else + bool operator==( SetPresentConfigNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( numFramesPerBatch == rhs.numFramesPerBatch ) && + ( presentConfigFeedback == rhs.presentConfigFeedback ); +# endif + } + + bool operator!=( SetPresentConfigNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSetPresentConfigNV; + void const * pNext = {}; + uint32_t numFramesPerBatch = {}; + uint32_t presentConfigFeedback = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SetPresentConfigNV; + }; +#endif + + template <> + struct CppType + { + using Type = SetPresentConfigNV; + }; + + // wrapper struct for struct VkSetStateFlagsIndirectCommandNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSetStateFlagsIndirectCommandNV.html + struct SetStateFlagsIndirectCommandNV + { + using NativeType = VkSetStateFlagsIndirectCommandNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SetStateFlagsIndirectCommandNV( uint32_t data_ = {} ) VULKAN_HPP_NOEXCEPT : data{ data_ } {} + + VULKAN_HPP_CONSTEXPR SetStateFlagsIndirectCommandNV( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SetStateFlagsIndirectCommandNV( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + : SetStateFlagsIndirectCommandNV( *reinterpret_cast( &rhs ) ) + { + } + + SetStateFlagsIndirectCommandNV & operator=( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SetStateFlagsIndirectCommandNV & operator=( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SetStateFlagsIndirectCommandNV & setData( uint32_t data_ ) & VULKAN_HPP_NOEXCEPT + { + data = data_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SetStateFlagsIndirectCommandNV && setData( uint32_t data_ ) && VULKAN_HPP_NOEXCEPT + { + data = data_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSetStateFlagsIndirectCommandNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSetStateFlagsIndirectCommandNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSetStateFlagsIndirectCommandNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSetStateFlagsIndirectCommandNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( data ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SetStateFlagsIndirectCommandNV const & ) const = default; +#else + bool operator==( SetStateFlagsIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( data == rhs.data ); +# endif + } + + bool operator!=( SetStateFlagsIndirectCommandNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t data = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SetStateFlagsIndirectCommandNV; + }; +#endif + + // wrapper struct for struct VkShaderCreateInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderCreateInfoEXT.html + struct ShaderCreateInfoEXT + { + using NativeType = VkShaderCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eShaderCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShaderCreateInfoEXT( ShaderCreateFlagsEXT flags_ = {}, + ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, + ShaderStageFlags nextStage_ = {}, + ShaderCodeTypeEXT codeType_ = ShaderCodeTypeEXT::eBinary, + size_t codeSize_ = {}, + void const * pCode_ = {}, + char const * pName_ = {}, + uint32_t setLayoutCount_ = {}, + DescriptorSetLayout const * pSetLayouts_ = {}, + uint32_t pushConstantRangeCount_ = {}, + PushConstantRange const * pPushConstantRanges_ = {}, + SpecializationInfo const * pSpecializationInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , stage{ stage_ } + , nextStage{ nextStage_ } + , codeType{ codeType_ } + , codeSize{ codeSize_ } + , pCode{ pCode_ } + , pName{ pName_ } + , setLayoutCount{ setLayoutCount_ } + , pSetLayouts{ pSetLayouts_ } + , pushConstantRangeCount{ pushConstantRangeCount_ } + , pPushConstantRanges{ pPushConstantRanges_ } + , pSpecializationInfo{ pSpecializationInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR ShaderCreateInfoEXT( ShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderCreateInfoEXT( VkShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT : ShaderCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + ShaderCreateInfoEXT( ShaderCreateFlagsEXT flags_, + ShaderStageFlagBits stage_, + ShaderStageFlags nextStage_, + ShaderCodeTypeEXT codeType_, + ArrayProxyNoTemporaries const & code_, + char const * pName_ = {}, + ArrayProxyNoTemporaries const & setLayouts_ = {}, + ArrayProxyNoTemporaries const & pushConstantRanges_ = {}, + SpecializationInfo const * pSpecializationInfo_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , stage( stage_ ) + , nextStage( nextStage_ ) + , codeType( codeType_ ) + , codeSize( code_.size() * sizeof( T ) ) + , pCode( code_.data() ) + , pName( pName_ ) + , setLayoutCount( static_cast( setLayouts_.size() ) ) + , pSetLayouts( setLayouts_.data() ) + , pushConstantRangeCount( static_cast( pushConstantRanges_.size() ) ) + , pPushConstantRanges( pushConstantRanges_.data() ) + , pSpecializationInfo( pSpecializationInfo_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ShaderCreateInfoEXT & operator=( ShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShaderCreateInfoEXT & operator=( VkShaderCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setFlags( ShaderCreateFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setFlags( ShaderCreateFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setStage( ShaderStageFlagBits stage_ ) & VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setStage( ShaderStageFlagBits stage_ ) && VULKAN_HPP_NOEXCEPT + { + stage = stage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setNextStage( ShaderStageFlags nextStage_ ) & VULKAN_HPP_NOEXCEPT + { + nextStage = nextStage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setNextStage( ShaderStageFlags nextStage_ ) && VULKAN_HPP_NOEXCEPT + { + nextStage = nextStage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setCodeType( ShaderCodeTypeEXT codeType_ ) & VULKAN_HPP_NOEXCEPT + { + codeType = codeType_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setCodeType( ShaderCodeTypeEXT codeType_ ) && VULKAN_HPP_NOEXCEPT + { + codeType = codeType_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setCodeSize( size_t codeSize_ ) & VULKAN_HPP_NOEXCEPT + { + codeSize = codeSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setCodeSize( size_t codeSize_ ) && VULKAN_HPP_NOEXCEPT + { + codeSize = codeSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPCode( void const * pCode_ ) & VULKAN_HPP_NOEXCEPT + { + pCode = pCode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setPCode( void const * pCode_ ) && VULKAN_HPP_NOEXCEPT + { + pCode = pCode_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + ShaderCreateInfoEXT & setCode( ArrayProxyNoTemporaries const & code_ ) VULKAN_HPP_NOEXCEPT + { + codeSize = code_.size() * sizeof( T ); + pCode = code_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPName( char const * pName_ ) & VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setPName( char const * pName_ ) && VULKAN_HPP_NOEXCEPT + { + pName = pName_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setSetLayoutCount( uint32_t setLayoutCount_ ) & VULKAN_HPP_NOEXCEPT + { + setLayoutCount = setLayoutCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setSetLayoutCount( uint32_t setLayoutCount_ ) && VULKAN_HPP_NOEXCEPT + { + setLayoutCount = setLayoutCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPSetLayouts( DescriptorSetLayout const * pSetLayouts_ ) & VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setPSetLayouts( DescriptorSetLayout const * pSetLayouts_ ) && VULKAN_HPP_NOEXCEPT + { + pSetLayouts = pSetLayouts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderCreateInfoEXT & setSetLayouts( ArrayProxyNoTemporaries const & setLayouts_ ) VULKAN_HPP_NOEXCEPT + { + setLayoutCount = static_cast( setLayouts_.size() ); + pSetLayouts = setLayouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) & VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = pushConstantRangeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) && VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = pushConstantRangeCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPPushConstantRanges( PushConstantRange const * pPushConstantRanges_ ) & VULKAN_HPP_NOEXCEPT + { + pPushConstantRanges = pPushConstantRanges_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setPPushConstantRanges( PushConstantRange const * pPushConstantRanges_ ) && VULKAN_HPP_NOEXCEPT + { + pPushConstantRanges = pPushConstantRanges_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderCreateInfoEXT & setPushConstantRanges( ArrayProxyNoTemporaries const & pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT + { + pushConstantRangeCount = static_cast( pushConstantRanges_.size() ); + pPushConstantRanges = pushConstantRanges_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT & setPSpecializationInfo( SpecializationInfo const * pSpecializationInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pSpecializationInfo = pSpecializationInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderCreateInfoEXT && setPSpecializationInfo( SpecializationInfo const * pSpecializationInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pSpecializationInfo = pSpecializationInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkShaderCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShaderCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + stage, + nextStage, + codeType, + codeSize, + pCode, + pName, + setLayoutCount, + pSetLayouts, + pushConstantRangeCount, + pPushConstantRanges, + pSpecializationInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ShaderCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = stage <=> rhs.stage; cmp != 0 ) + return cmp; + if ( auto cmp = nextStage <=> rhs.nextStage; cmp != 0 ) + return cmp; + if ( auto cmp = codeType <=> rhs.codeType; cmp != 0 ) + return cmp; + if ( auto cmp = codeSize <=> rhs.codeSize; cmp != 0 ) + return cmp; + if ( auto cmp = pCode <=> rhs.pCode; cmp != 0 ) + return cmp; + if ( pName != rhs.pName ) + if ( auto cmp = strcmp( pName, rhs.pName ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = setLayoutCount <=> rhs.setLayoutCount; cmp != 0 ) + return cmp; + if ( auto cmp = pSetLayouts <=> rhs.pSetLayouts; cmp != 0 ) + return cmp; + if ( auto cmp = pushConstantRangeCount <=> rhs.pushConstantRangeCount; cmp != 0 ) + return cmp; + if ( auto cmp = pPushConstantRanges <=> rhs.pPushConstantRanges; cmp != 0 ) + return cmp; + if ( auto cmp = pSpecializationInfo <=> rhs.pSpecializationInfo; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( ShaderCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( stage == rhs.stage ) && ( nextStage == rhs.nextStage ) && + ( codeType == rhs.codeType ) && ( codeSize == rhs.codeSize ) && ( pCode == rhs.pCode ) && + ( ( pName == rhs.pName ) || ( strcmp( pName, rhs.pName ) == 0 ) ) && ( setLayoutCount == rhs.setLayoutCount ) && + ( pSetLayouts == rhs.pSetLayouts ) && ( pushConstantRangeCount == rhs.pushConstantRangeCount ) && + ( pPushConstantRanges == rhs.pPushConstantRanges ) && ( pSpecializationInfo == rhs.pSpecializationInfo ); + } + + bool operator!=( ShaderCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eShaderCreateInfoEXT; + void const * pNext = {}; + ShaderCreateFlagsEXT flags = {}; + ShaderStageFlagBits stage = ShaderStageFlagBits::eVertex; + ShaderStageFlags nextStage = {}; + ShaderCodeTypeEXT codeType = ShaderCodeTypeEXT::eBinary; + size_t codeSize = {}; + void const * pCode = {}; + char const * pName = {}; + uint32_t setLayoutCount = {}; + DescriptorSetLayout const * pSetLayouts = {}; + uint32_t pushConstantRangeCount = {}; + PushConstantRange const * pPushConstantRanges = {}; + SpecializationInfo const * pSpecializationInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShaderCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ShaderCreateInfoEXT; + }; + + // wrapper struct for struct VkShaderDescriptorSetAndBindingMappingInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderDescriptorSetAndBindingMappingInfoEXT.html + struct ShaderDescriptorSetAndBindingMappingInfoEXT + { + using NativeType = VkShaderDescriptorSetAndBindingMappingInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eShaderDescriptorSetAndBindingMappingInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShaderDescriptorSetAndBindingMappingInfoEXT( uint32_t mappingCount_ = {}, + DescriptorSetAndBindingMappingEXT const * pMappings_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , mappingCount{ mappingCount_ } + , pMappings{ pMappings_ } + { + } + + VULKAN_HPP_CONSTEXPR ShaderDescriptorSetAndBindingMappingInfoEXT( ShaderDescriptorSetAndBindingMappingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderDescriptorSetAndBindingMappingInfoEXT( VkShaderDescriptorSetAndBindingMappingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderDescriptorSetAndBindingMappingInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderDescriptorSetAndBindingMappingInfoEXT( ArrayProxyNoTemporaries const & mappings_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), mappingCount( static_cast( mappings_.size() ) ), pMappings( mappings_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ShaderDescriptorSetAndBindingMappingInfoEXT & operator=( ShaderDescriptorSetAndBindingMappingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShaderDescriptorSetAndBindingMappingInfoEXT & operator=( VkShaderDescriptorSetAndBindingMappingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShaderDescriptorSetAndBindingMappingInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderDescriptorSetAndBindingMappingInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderDescriptorSetAndBindingMappingInfoEXT & setMappingCount( uint32_t mappingCount_ ) & VULKAN_HPP_NOEXCEPT + { + mappingCount = mappingCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderDescriptorSetAndBindingMappingInfoEXT && setMappingCount( uint32_t mappingCount_ ) && VULKAN_HPP_NOEXCEPT + { + mappingCount = mappingCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderDescriptorSetAndBindingMappingInfoEXT & setPMappings( DescriptorSetAndBindingMappingEXT const * pMappings_ ) & + VULKAN_HPP_NOEXCEPT + { + pMappings = pMappings_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderDescriptorSetAndBindingMappingInfoEXT && setPMappings( DescriptorSetAndBindingMappingEXT const * pMappings_ ) && + VULKAN_HPP_NOEXCEPT + { + pMappings = pMappings_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderDescriptorSetAndBindingMappingInfoEXT & + setMappings( ArrayProxyNoTemporaries const & mappings_ ) VULKAN_HPP_NOEXCEPT + { + mappingCount = static_cast( mappings_.size() ); + pMappings = mappings_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkShaderDescriptorSetAndBindingMappingInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderDescriptorSetAndBindingMappingInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderDescriptorSetAndBindingMappingInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShaderDescriptorSetAndBindingMappingInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, mappingCount, pMappings ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderDescriptorSetAndBindingMappingInfoEXT const & ) const = default; +#else + bool operator==( ShaderDescriptorSetAndBindingMappingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( mappingCount == rhs.mappingCount ) && ( pMappings == rhs.pMappings ); +# endif + } + + bool operator!=( ShaderDescriptorSetAndBindingMappingInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eShaderDescriptorSetAndBindingMappingInfoEXT; + void const * pNext = {}; + uint32_t mappingCount = {}; + DescriptorSetAndBindingMappingEXT const * pMappings = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShaderDescriptorSetAndBindingMappingInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ShaderDescriptorSetAndBindingMappingInfoEXT; + }; + + // wrapper struct for struct VkShaderInstrumentationCreateInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderInstrumentationCreateInfoARM.html + struct ShaderInstrumentationCreateInfoARM + { + using NativeType = VkShaderInstrumentationCreateInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eShaderInstrumentationCreateInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShaderInstrumentationCreateInfoARM( void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {} + + VULKAN_HPP_CONSTEXPR ShaderInstrumentationCreateInfoARM( ShaderInstrumentationCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderInstrumentationCreateInfoARM( VkShaderInstrumentationCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderInstrumentationCreateInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + ShaderInstrumentationCreateInfoARM & operator=( ShaderInstrumentationCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShaderInstrumentationCreateInfoARM & operator=( VkShaderInstrumentationCreateInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationCreateInfoARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationCreateInfoARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkShaderInstrumentationCreateInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderInstrumentationCreateInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderInstrumentationCreateInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShaderInstrumentationCreateInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderInstrumentationCreateInfoARM const & ) const = default; +#else + bool operator==( ShaderInstrumentationCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( ShaderInstrumentationCreateInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eShaderInstrumentationCreateInfoARM; + void * pNext = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShaderInstrumentationCreateInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = ShaderInstrumentationCreateInfoARM; + }; + + // wrapper struct for struct VkShaderInstrumentationMetricDataHeaderARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderInstrumentationMetricDataHeaderARM.html + struct ShaderInstrumentationMetricDataHeaderARM + { + using NativeType = VkShaderInstrumentationMetricDataHeaderARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShaderInstrumentationMetricDataHeaderARM( uint32_t resultIndex_ = {}, + uint32_t resultSubIndex_ = {}, + ShaderStageFlags stages_ = {}, + uint32_t basicBlockIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : resultIndex{ resultIndex_ } + , resultSubIndex{ resultSubIndex_ } + , stages{ stages_ } + , basicBlockIndex{ basicBlockIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR ShaderInstrumentationMetricDataHeaderARM( ShaderInstrumentationMetricDataHeaderARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderInstrumentationMetricDataHeaderARM( VkShaderInstrumentationMetricDataHeaderARM const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderInstrumentationMetricDataHeaderARM( *reinterpret_cast( &rhs ) ) + { + } + + ShaderInstrumentationMetricDataHeaderARM & operator=( ShaderInstrumentationMetricDataHeaderARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShaderInstrumentationMetricDataHeaderARM & operator=( VkShaderInstrumentationMetricDataHeaderARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDataHeaderARM & setResultIndex( uint32_t resultIndex_ ) & VULKAN_HPP_NOEXCEPT + { + resultIndex = resultIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDataHeaderARM && setResultIndex( uint32_t resultIndex_ ) && VULKAN_HPP_NOEXCEPT + { + resultIndex = resultIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDataHeaderARM & setResultSubIndex( uint32_t resultSubIndex_ ) & VULKAN_HPP_NOEXCEPT + { + resultSubIndex = resultSubIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDataHeaderARM && setResultSubIndex( uint32_t resultSubIndex_ ) && VULKAN_HPP_NOEXCEPT + { + resultSubIndex = resultSubIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDataHeaderARM & setStages( ShaderStageFlags stages_ ) & VULKAN_HPP_NOEXCEPT + { + stages = stages_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDataHeaderARM && setStages( ShaderStageFlags stages_ ) && VULKAN_HPP_NOEXCEPT + { + stages = stages_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDataHeaderARM & setBasicBlockIndex( uint32_t basicBlockIndex_ ) & VULKAN_HPP_NOEXCEPT + { + basicBlockIndex = basicBlockIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDataHeaderARM && setBasicBlockIndex( uint32_t basicBlockIndex_ ) && VULKAN_HPP_NOEXCEPT + { + basicBlockIndex = basicBlockIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkShaderInstrumentationMetricDataHeaderARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderInstrumentationMetricDataHeaderARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderInstrumentationMetricDataHeaderARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShaderInstrumentationMetricDataHeaderARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( resultIndex, resultSubIndex, stages, basicBlockIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderInstrumentationMetricDataHeaderARM const & ) const = default; +#else + bool operator==( ShaderInstrumentationMetricDataHeaderARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( resultIndex == rhs.resultIndex ) && ( resultSubIndex == rhs.resultSubIndex ) && ( stages == rhs.stages ) && + ( basicBlockIndex == rhs.basicBlockIndex ); +# endif + } + + bool operator!=( ShaderInstrumentationMetricDataHeaderARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t resultIndex = {}; + uint32_t resultSubIndex = {}; + ShaderStageFlags stages = {}; + uint32_t basicBlockIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShaderInstrumentationMetricDataHeaderARM; + }; +#endif + + // wrapper struct for struct VkShaderInstrumentationMetricDescriptionARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderInstrumentationMetricDescriptionARM.html + struct ShaderInstrumentationMetricDescriptionARM + { + using NativeType = VkShaderInstrumentationMetricDescriptionARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eShaderInstrumentationMetricDescriptionARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDescriptionARM( std::array const & name_ = {}, + std::array const & description_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , name{ name_ } + , description{ description_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDescriptionARM( ShaderInstrumentationMetricDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderInstrumentationMetricDescriptionARM( VkShaderInstrumentationMetricDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderInstrumentationMetricDescriptionARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderInstrumentationMetricDescriptionARM( std::string const & name_, std::string const & description_ = {}, void * pNext_ = nullptr ) : pNext( pNext_ ) + { + VULKAN_HPP_ASSERT( name_.size() < VK_MAX_DESCRIPTION_SIZE ); +# if defined( _WIN32 ) + strncpy_s( name, VK_MAX_DESCRIPTION_SIZE, name_.data(), name_.size() ); +# else + strncpy( name, name_.data(), std::min( VK_MAX_DESCRIPTION_SIZE, name_.size() ) ); +# endif + + VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE ); +# if defined( _WIN32 ) + strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() ); +# else + strncpy( description, description_.data(), std::min( VK_MAX_DESCRIPTION_SIZE, description_.size() ) ); +# endif + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ShaderInstrumentationMetricDescriptionARM & operator=( ShaderInstrumentationMetricDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShaderInstrumentationMetricDescriptionARM & operator=( VkShaderInstrumentationMetricDescriptionARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDescriptionARM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDescriptionARM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDescriptionARM & setName( std::array name_ ) & VULKAN_HPP_NOEXCEPT + { + name = name_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDescriptionARM && setName( std::array name_ ) && VULKAN_HPP_NOEXCEPT + { + name = name_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderInstrumentationMetricDescriptionARM & setName( std::string const & name_ ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( name_.size() < VK_MAX_DESCRIPTION_SIZE ); +# if defined( _WIN32 ) + strncpy_s( name, VK_MAX_DESCRIPTION_SIZE, name_.data(), name_.size() ); +# else + strncpy( name, name_.data(), std::min( VK_MAX_DESCRIPTION_SIZE, name_.size() ) ); +# endif + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDescriptionARM & setDescription( std::array description_ ) & + VULKAN_HPP_NOEXCEPT + { + description = description_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderInstrumentationMetricDescriptionARM && setDescription( std::array description_ ) && + VULKAN_HPP_NOEXCEPT + { + description = description_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderInstrumentationMetricDescriptionARM & setDescription( std::string const & description_ ) VULKAN_HPP_NOEXCEPT + { + VULKAN_HPP_ASSERT( description_.size() < VK_MAX_DESCRIPTION_SIZE ); +# if defined( _WIN32 ) + strncpy_s( description, VK_MAX_DESCRIPTION_SIZE, description_.data(), description_.size() ); +# else + strncpy( description, description_.data(), std::min( VK_MAX_DESCRIPTION_SIZE, description_.size() ) ); +# endif + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkShaderInstrumentationMetricDescriptionARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderInstrumentationMetricDescriptionARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderInstrumentationMetricDescriptionARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShaderInstrumentationMetricDescriptionARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple const &, ArrayWrapper1D const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, name, description ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ShaderInstrumentationMetricDescriptionARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = strcmp( name, rhs.name ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = strcmp( description, rhs.description ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( ShaderInstrumentationMetricDescriptionARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( strcmp( name, rhs.name ) == 0 ) && ( strcmp( description, rhs.description ) == 0 ); + } + + bool operator!=( ShaderInstrumentationMetricDescriptionARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eShaderInstrumentationMetricDescriptionARM; + void * pNext = {}; + ArrayWrapper1D name = {}; + ArrayWrapper1D description = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShaderInstrumentationMetricDescriptionARM; + }; +#endif + + template <> + struct CppType + { + using Type = ShaderInstrumentationMetricDescriptionARM; + }; + + // wrapper struct for struct VkShaderModuleCreateInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderModuleCreateInfo.html + struct ShaderModuleCreateInfo + { + using NativeType = VkShaderModuleCreateInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eShaderModuleCreateInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = {}, + size_t codeSize_ = {}, + uint32_t const * pCode_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , codeSize{ codeSize_ } + , pCode{ pCode_ } + { + } + + VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderModuleCreateInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_, ArrayProxyNoTemporaries const & code_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), flags( flags_ ), codeSize( code_.size() * 4 ), pCode( code_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ShaderModuleCreateInfo & operator=( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShaderModuleCreateInfo & operator=( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setFlags( ShaderModuleCreateFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo && setFlags( ShaderModuleCreateFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setCodeSize( size_t codeSize_ ) & VULKAN_HPP_NOEXCEPT + { + codeSize = codeSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo && setCodeSize( size_t codeSize_ ) && VULKAN_HPP_NOEXCEPT + { + codeSize = codeSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & setPCode( uint32_t const * pCode_ ) & VULKAN_HPP_NOEXCEPT + { + pCode = pCode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo && setPCode( uint32_t const * pCode_ ) && VULKAN_HPP_NOEXCEPT + { + pCode = pCode_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ShaderModuleCreateInfo & setCode( ArrayProxyNoTemporaries const & code_ ) VULKAN_HPP_NOEXCEPT + { + codeSize = code_.size() * 4; + pCode = code_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkShaderModuleCreateInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderModuleCreateInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderModuleCreateInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShaderModuleCreateInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, codeSize, pCode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderModuleCreateInfo const & ) const = default; +#else + bool operator==( ShaderModuleCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( codeSize == rhs.codeSize ) && ( pCode == rhs.pCode ); +# endif + } + + bool operator!=( ShaderModuleCreateInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eShaderModuleCreateInfo; + void const * pNext = {}; + ShaderModuleCreateFlags flags = {}; + size_t codeSize = {}; + uint32_t const * pCode = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShaderModuleCreateInfo; + }; +#endif + + template <> + struct CppType + { + using Type = ShaderModuleCreateInfo; + }; + + // wrapper struct for struct VkShaderModuleIdentifierEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderModuleIdentifierEXT.html + struct ShaderModuleIdentifierEXT + { + using NativeType = VkShaderModuleIdentifierEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eShaderModuleIdentifierEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 ShaderModuleIdentifierEXT( uint32_t identifierSize_ = {}, + std::array const & identifier_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , identifierSize{ identifierSize_ } + , identifier{ identifier_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleIdentifierEXT( ShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderModuleIdentifierEXT( VkShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderModuleIdentifierEXT( *reinterpret_cast( &rhs ) ) + { + } + + ShaderModuleIdentifierEXT & operator=( ShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShaderModuleIdentifierEXT & operator=( VkShaderModuleIdentifierEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkShaderModuleIdentifierEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderModuleIdentifierEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderModuleIdentifierEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShaderModuleIdentifierEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, identifierSize, identifier ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( ShaderModuleIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = identifierSize <=> rhs.identifierSize; cmp != 0 ) + return cmp; + for ( size_t i = 0; i < identifierSize; ++i ) + { + if ( auto cmp = identifier[i] <=> rhs.identifier[i]; cmp != 0 ) + return cmp; + } + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( ShaderModuleIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( identifierSize == rhs.identifierSize ) && + ( memcmp( identifier, rhs.identifier, identifierSize * sizeof( uint8_t ) ) == 0 ); + } + + bool operator!=( ShaderModuleIdentifierEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eShaderModuleIdentifierEXT; + void * pNext = {}; + uint32_t identifierSize = {}; + ArrayWrapper1D identifier = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShaderModuleIdentifierEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ShaderModuleIdentifierEXT; + }; + + // wrapper struct for struct VkShaderModuleValidationCacheCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderModuleValidationCacheCreateInfoEXT.html + struct ShaderModuleValidationCacheCreateInfoEXT + { + using NativeType = VkShaderModuleValidationCacheCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eShaderModuleValidationCacheCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT( ValidationCacheEXT validationCache_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , validationCache{ validationCache_ } + { + } + + VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderModuleValidationCacheCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + ShaderModuleValidationCacheCreateInfoEXT & operator=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShaderModuleValidationCacheCreateInfoEXT & operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT & setValidationCache( ValidationCacheEXT validationCache_ ) & VULKAN_HPP_NOEXCEPT + { + validationCache = validationCache_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT && setValidationCache( ValidationCacheEXT validationCache_ ) && VULKAN_HPP_NOEXCEPT + { + validationCache = validationCache_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkShaderModuleValidationCacheCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderModuleValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderModuleValidationCacheCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShaderModuleValidationCacheCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, validationCache ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderModuleValidationCacheCreateInfoEXT const & ) const = default; +#else + bool operator==( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( validationCache == rhs.validationCache ); +# endif + } + + bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eShaderModuleValidationCacheCreateInfoEXT; + void const * pNext = {}; + ValidationCacheEXT validationCache = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShaderModuleValidationCacheCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ShaderModuleValidationCacheCreateInfoEXT; + }; + + // wrapper struct for struct VkShaderResourceUsageAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderResourceUsageAMD.html + struct ShaderResourceUsageAMD + { + using NativeType = VkShaderResourceUsageAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( uint32_t numUsedVgprs_ = {}, + uint32_t numUsedSgprs_ = {}, + uint32_t ldsSizePerLocalWorkGroup_ = {}, + size_t ldsUsageSizeInBytes_ = {}, + size_t scratchMemUsageInBytes_ = {} ) VULKAN_HPP_NOEXCEPT + : numUsedVgprs{ numUsedVgprs_ } + , numUsedSgprs{ numUsedSgprs_ } + , ldsSizePerLocalWorkGroup{ ldsSizePerLocalWorkGroup_ } + , ldsUsageSizeInBytes{ ldsUsageSizeInBytes_ } + , scratchMemUsageInBytes{ scratchMemUsageInBytes_ } + { + } + + VULKAN_HPP_CONSTEXPR ShaderResourceUsageAMD( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderResourceUsageAMD( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderResourceUsageAMD( *reinterpret_cast( &rhs ) ) + { + } + + ShaderResourceUsageAMD & operator=( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShaderResourceUsageAMD & operator=( VkShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkShaderResourceUsageAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderResourceUsageAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderResourceUsageAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShaderResourceUsageAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( numUsedVgprs, numUsedSgprs, ldsSizePerLocalWorkGroup, ldsUsageSizeInBytes, scratchMemUsageInBytes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderResourceUsageAMD const & ) const = default; +#else + bool operator==( ShaderResourceUsageAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( numUsedVgprs == rhs.numUsedVgprs ) && ( numUsedSgprs == rhs.numUsedSgprs ) && ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup ) && + ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes ) && ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes ); +# endif + } + + bool operator!=( ShaderResourceUsageAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t numUsedVgprs = {}; + uint32_t numUsedSgprs = {}; + uint32_t ldsSizePerLocalWorkGroup = {}; + size_t ldsUsageSizeInBytes = {}; + size_t scratchMemUsageInBytes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShaderResourceUsageAMD; + }; +#endif + + // wrapper struct for struct VkShaderStatisticsInfoAMD, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkShaderStatisticsInfoAMD.html + struct ShaderStatisticsInfoAMD + { + using NativeType = VkShaderStatisticsInfoAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 ShaderStatisticsInfoAMD( ShaderStageFlags shaderStageMask_ = {}, + ShaderResourceUsageAMD resourceUsage_ = {}, + uint32_t numPhysicalVgprs_ = {}, + uint32_t numPhysicalSgprs_ = {}, + uint32_t numAvailableVgprs_ = {}, + uint32_t numAvailableSgprs_ = {}, + std::array const & computeWorkGroupSize_ = {} ) VULKAN_HPP_NOEXCEPT + : shaderStageMask{ shaderStageMask_ } + , resourceUsage{ resourceUsage_ } + , numPhysicalVgprs{ numPhysicalVgprs_ } + , numPhysicalSgprs{ numPhysicalSgprs_ } + , numAvailableVgprs{ numAvailableVgprs_ } + , numAvailableSgprs{ numAvailableSgprs_ } + , computeWorkGroupSize{ computeWorkGroupSize_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 ShaderStatisticsInfoAMD( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ShaderStatisticsInfoAMD( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : ShaderStatisticsInfoAMD( *reinterpret_cast( &rhs ) ) + { + } + + ShaderStatisticsInfoAMD & operator=( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ShaderStatisticsInfoAMD & operator=( VkShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkShaderStatisticsInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderStatisticsInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkShaderStatisticsInfoAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkShaderStatisticsInfoAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( shaderStageMask, resourceUsage, numPhysicalVgprs, numPhysicalSgprs, numAvailableVgprs, numAvailableSgprs, computeWorkGroupSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ShaderStatisticsInfoAMD const & ) const = default; +#else + bool operator==( ShaderStatisticsInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( shaderStageMask == rhs.shaderStageMask ) && ( resourceUsage == rhs.resourceUsage ) && ( numPhysicalVgprs == rhs.numPhysicalVgprs ) && + ( numPhysicalSgprs == rhs.numPhysicalSgprs ) && ( numAvailableVgprs == rhs.numAvailableVgprs ) && ( numAvailableSgprs == rhs.numAvailableSgprs ) && + ( computeWorkGroupSize == rhs.computeWorkGroupSize ); +# endif + } + + bool operator!=( ShaderStatisticsInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ShaderStageFlags shaderStageMask = {}; + ShaderResourceUsageAMD resourceUsage = {}; + uint32_t numPhysicalVgprs = {}; + uint32_t numPhysicalSgprs = {}; + uint32_t numAvailableVgprs = {}; + uint32_t numAvailableSgprs = {}; + ArrayWrapper1D computeWorkGroupSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ShaderStatisticsInfoAMD; + }; +#endif + + // wrapper struct for struct VkSharedPresentSurfaceCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSharedPresentSurfaceCapabilitiesKHR.html + struct SharedPresentSurfaceCapabilitiesKHR + { + using NativeType = VkSharedPresentSurfaceCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSharedPresentSurfaceCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( ImageUsageFlags sharedPresentSupportedUsageFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , sharedPresentSupportedUsageFlags{ sharedPresentSupportedUsageFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SharedPresentSurfaceCapabilitiesKHR( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SharedPresentSurfaceCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + SharedPresentSurfaceCapabilitiesKHR & operator=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SharedPresentSurfaceCapabilitiesKHR & operator=( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSharedPresentSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSharedPresentSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSharedPresentSurfaceCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSharedPresentSurfaceCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, sharedPresentSupportedUsageFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SharedPresentSurfaceCapabilitiesKHR const & ) const = default; +#else + bool operator==( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags ); +# endif + } + + bool operator!=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR; + void * pNext = {}; + ImageUsageFlags sharedPresentSupportedUsageFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SharedPresentSurfaceCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SharedPresentSurfaceCapabilitiesKHR; + }; + + // wrapper struct for struct VkSparseImageFormatProperties, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseImageFormatProperties.html + struct SparseImageFormatProperties + { + using NativeType = VkSparseImageFormatProperties; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SparseImageFormatProperties( ImageAspectFlags aspectMask_ = {}, Extent3D imageGranularity_ = {}, SparseImageFormatFlags flags_ = {} ) VULKAN_HPP_NOEXCEPT + : aspectMask{ aspectMask_ } + , imageGranularity{ imageGranularity_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR SparseImageFormatProperties( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageFormatProperties( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageFormatProperties( *reinterpret_cast( &rhs ) ) + { + } + + SparseImageFormatProperties & operator=( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SparseImageFormatProperties & operator=( VkSparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSparseImageFormatProperties const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageFormatProperties &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageFormatProperties const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSparseImageFormatProperties *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( aspectMask, imageGranularity, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageFormatProperties const & ) const = default; +#else + bool operator==( SparseImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( aspectMask == rhs.aspectMask ) && ( imageGranularity == rhs.imageGranularity ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( SparseImageFormatProperties const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + ImageAspectFlags aspectMask = {}; + Extent3D imageGranularity = {}; + SparseImageFormatFlags flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SparseImageFormatProperties; + }; +#endif + + // wrapper struct for struct VkSparseImageFormatProperties2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseImageFormatProperties2.html + struct SparseImageFormatProperties2 + { + using NativeType = VkSparseImageFormatProperties2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSparseImageFormatProperties2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2( SparseImageFormatProperties properties_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , properties{ properties_ } + { + } + + VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageFormatProperties2( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageFormatProperties2( *reinterpret_cast( &rhs ) ) + { + } + + SparseImageFormatProperties2 & operator=( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SparseImageFormatProperties2 & operator=( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSparseImageFormatProperties2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageFormatProperties2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageFormatProperties2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSparseImageFormatProperties2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, properties ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageFormatProperties2 const & ) const = default; +#else + bool operator==( SparseImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( properties == rhs.properties ); +# endif + } + + bool operator!=( SparseImageFormatProperties2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSparseImageFormatProperties2; + void * pNext = {}; + SparseImageFormatProperties properties = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SparseImageFormatProperties2; + }; +#endif + + template <> + struct CppType + { + using Type = SparseImageFormatProperties2; + }; + + using SparseImageFormatProperties2KHR = SparseImageFormatProperties2; + + // wrapper struct for struct VkSparseImageMemoryRequirements, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements.html + struct SparseImageMemoryRequirements + { + using NativeType = VkSparseImageMemoryRequirements; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements( SparseImageFormatProperties formatProperties_ = {}, + uint32_t imageMipTailFirstLod_ = {}, + DeviceSize imageMipTailSize_ = {}, + DeviceSize imageMipTailOffset_ = {}, + DeviceSize imageMipTailStride_ = {} ) VULKAN_HPP_NOEXCEPT + : formatProperties{ formatProperties_ } + , imageMipTailFirstLod{ imageMipTailFirstLod_ } + , imageMipTailSize{ imageMipTailSize_ } + , imageMipTailOffset{ imageMipTailOffset_ } + , imageMipTailStride{ imageMipTailStride_ } + { + } + + VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryRequirements( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageMemoryRequirements( *reinterpret_cast( &rhs ) ) + { + } + + SparseImageMemoryRequirements & operator=( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SparseImageMemoryRequirements & operator=( VkSparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSparseImageMemoryRequirements const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageMemoryRequirements &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageMemoryRequirements const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSparseImageMemoryRequirements *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( formatProperties, imageMipTailFirstLod, imageMipTailSize, imageMipTailOffset, imageMipTailStride ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageMemoryRequirements const & ) const = default; +#else + bool operator==( SparseImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( formatProperties == rhs.formatProperties ) && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod ) && + ( imageMipTailSize == rhs.imageMipTailSize ) && ( imageMipTailOffset == rhs.imageMipTailOffset ) && + ( imageMipTailStride == rhs.imageMipTailStride ); +# endif + } + + bool operator!=( SparseImageMemoryRequirements const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + SparseImageFormatProperties formatProperties = {}; + uint32_t imageMipTailFirstLod = {}; + DeviceSize imageMipTailSize = {}; + DeviceSize imageMipTailOffset = {}; + DeviceSize imageMipTailStride = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SparseImageMemoryRequirements; + }; +#endif + + // wrapper struct for struct VkSparseImageMemoryRequirements2, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSparseImageMemoryRequirements2.html + struct SparseImageMemoryRequirements2 + { + using NativeType = VkSparseImageMemoryRequirements2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSparseImageMemoryRequirements2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2( SparseImageMemoryRequirements memoryRequirements_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryRequirements{ memoryRequirements_ } + { + } + + VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SparseImageMemoryRequirements2( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT + : SparseImageMemoryRequirements2( *reinterpret_cast( &rhs ) ) + { + } + + SparseImageMemoryRequirements2 & operator=( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SparseImageMemoryRequirements2 & operator=( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSparseImageMemoryRequirements2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageMemoryRequirements2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSparseImageMemoryRequirements2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSparseImageMemoryRequirements2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryRequirements ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SparseImageMemoryRequirements2 const & ) const = default; +#else + bool operator==( SparseImageMemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryRequirements == rhs.memoryRequirements ); +# endif + } + + bool operator!=( SparseImageMemoryRequirements2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSparseImageMemoryRequirements2; + void * pNext = {}; + SparseImageMemoryRequirements memoryRequirements = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SparseImageMemoryRequirements2; + }; +#endif + + template <> + struct CppType + { + using Type = SparseImageMemoryRequirements2; + }; + + using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2; + +#if defined( VK_USE_PLATFORM_GGP ) + // wrapper struct for struct VkStreamDescriptorSurfaceCreateInfoGGP, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkStreamDescriptorSurfaceCreateInfoGGP.html + struct StreamDescriptorSurfaceCreateInfoGGP + { + using NativeType = VkStreamDescriptorSurfaceCreateInfoGGP; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eStreamDescriptorSurfaceCreateInfoGGP; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR StreamDescriptorSurfaceCreateInfoGGP( StreamDescriptorSurfaceCreateFlagsGGP flags_ = {}, + GgpStreamDescriptor streamDescriptor_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , streamDescriptor{ streamDescriptor_ } + { + } + + VULKAN_HPP_CONSTEXPR StreamDescriptorSurfaceCreateInfoGGP( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + StreamDescriptorSurfaceCreateInfoGGP( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT + : StreamDescriptorSurfaceCreateInfoGGP( *reinterpret_cast( &rhs ) ) + { + } + + StreamDescriptorSurfaceCreateInfoGGP & operator=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + StreamDescriptorSurfaceCreateInfoGGP & operator=( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & setFlags( StreamDescriptorSurfaceCreateFlagsGGP flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP && setFlags( StreamDescriptorSurfaceCreateFlagsGGP flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & setStreamDescriptor( GgpStreamDescriptor streamDescriptor_ ) & VULKAN_HPP_NOEXCEPT + { + streamDescriptor = streamDescriptor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP && setStreamDescriptor( GgpStreamDescriptor streamDescriptor_ ) && VULKAN_HPP_NOEXCEPT + { + streamDescriptor = streamDescriptor_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkStreamDescriptorSurfaceCreateInfoGGP const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkStreamDescriptorSurfaceCreateInfoGGP &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkStreamDescriptorSurfaceCreateInfoGGP const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkStreamDescriptorSurfaceCreateInfoGGP *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, streamDescriptor ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &streamDescriptor, &rhs.streamDescriptor, sizeof( GgpStreamDescriptor ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( memcmp( &streamDescriptor, &rhs.streamDescriptor, sizeof( GgpStreamDescriptor ) ) == 0 ); + } + + bool operator!=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eStreamDescriptorSurfaceCreateInfoGGP; + void const * pNext = {}; + StreamDescriptorSurfaceCreateFlagsGGP flags = {}; + GgpStreamDescriptor streamDescriptor = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = StreamDescriptorSurfaceCreateInfoGGP; + }; +# endif + + template <> + struct CppType + { + using Type = StreamDescriptorSurfaceCreateInfoGGP; + }; +#endif /*VK_USE_PLATFORM_GGP*/ + + // wrapper struct for struct VkSubmitInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubmitInfo.html + struct SubmitInfo + { + using NativeType = VkSubmitInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubmitInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubmitInfo( uint32_t waitSemaphoreCount_ = {}, + Semaphore const * pWaitSemaphores_ = {}, + PipelineStageFlags const * pWaitDstStageMask_ = {}, + uint32_t commandBufferCount_ = {}, + CommandBuffer const * pCommandBuffers_ = {}, + uint32_t signalSemaphoreCount_ = {}, + Semaphore const * pSignalSemaphores_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , waitSemaphoreCount{ waitSemaphoreCount_ } + , pWaitSemaphores{ pWaitSemaphores_ } + , pWaitDstStageMask{ pWaitDstStageMask_ } + , commandBufferCount{ commandBufferCount_ } + , pCommandBuffers{ pCommandBuffers_ } + , signalSemaphoreCount{ signalSemaphoreCount_ } + , pSignalSemaphores{ pSignalSemaphores_ } + { + } + + VULKAN_HPP_CONSTEXPR SubmitInfo( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubmitInfo( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SubmitInfo( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo( ArrayProxyNoTemporaries const & waitSemaphores_, + ArrayProxyNoTemporaries const & waitDstStageMask_ = {}, + ArrayProxyNoTemporaries const & commandBuffers_ = {}, + ArrayProxyNoTemporaries const & signalSemaphores_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , waitSemaphoreCount( static_cast( waitSemaphores_.size() ) ) + , pWaitSemaphores( waitSemaphores_.data() ) + , pWaitDstStageMask( waitDstStageMask_.data() ) + , commandBufferCount( static_cast( commandBuffers_.size() ) ) + , pCommandBuffers( commandBuffers_.data() ) + , signalSemaphoreCount( static_cast( signalSemaphores_.size() ) ) + , pSignalSemaphores( signalSemaphores_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( waitSemaphores_.size() == waitDstStageMask_.size() ); +# else + if ( waitSemaphores_.size() != waitDstStageMask_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::SubmitInfo::SubmitInfo: waitSemaphores_.size() != waitDstStageMask_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SubmitInfo & operator=( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubmitInfo & operator=( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) & VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo && setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) && VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = waitSemaphoreCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPWaitSemaphores( Semaphore const * pWaitSemaphores_ ) & VULKAN_HPP_NOEXCEPT + { + pWaitSemaphores = pWaitSemaphores_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo && setPWaitSemaphores( Semaphore const * pWaitSemaphores_ ) && VULKAN_HPP_NOEXCEPT + { + pWaitSemaphores = pWaitSemaphores_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo & setWaitSemaphores( ArrayProxyNoTemporaries const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = static_cast( waitSemaphores_.size() ); + pWaitSemaphores = waitSemaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPWaitDstStageMask( PipelineStageFlags const * pWaitDstStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + pWaitDstStageMask = pWaitDstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo && setPWaitDstStageMask( PipelineStageFlags const * pWaitDstStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + pWaitDstStageMask = pWaitDstStageMask_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo & setWaitDstStageMask( ArrayProxyNoTemporaries const & waitDstStageMask_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreCount = static_cast( waitDstStageMask_.size() ); + pWaitDstStageMask = waitDstStageMask_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) & VULKAN_HPP_NOEXCEPT + { + commandBufferCount = commandBufferCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo && setCommandBufferCount( uint32_t commandBufferCount_ ) && VULKAN_HPP_NOEXCEPT + { + commandBufferCount = commandBufferCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPCommandBuffers( CommandBuffer const * pCommandBuffers_ ) & VULKAN_HPP_NOEXCEPT + { + pCommandBuffers = pCommandBuffers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo && setPCommandBuffers( CommandBuffer const * pCommandBuffers_ ) && VULKAN_HPP_NOEXCEPT + { + pCommandBuffers = pCommandBuffers_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo & setCommandBuffers( ArrayProxyNoTemporaries const & commandBuffers_ ) VULKAN_HPP_NOEXCEPT + { + commandBufferCount = static_cast( commandBuffers_.size() ); + pCommandBuffers = commandBuffers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) & VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = signalSemaphoreCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo && setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) && VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = signalSemaphoreCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo & setPSignalSemaphores( Semaphore const * pSignalSemaphores_ ) & VULKAN_HPP_NOEXCEPT + { + pSignalSemaphores = pSignalSemaphores_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo && setPSignalSemaphores( Semaphore const * pSignalSemaphores_ ) && VULKAN_HPP_NOEXCEPT + { + pSignalSemaphores = pSignalSemaphores_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo & setSignalSemaphores( ArrayProxyNoTemporaries const & signalSemaphores_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreCount = static_cast( signalSemaphores_.size() ); + pSignalSemaphores = signalSemaphores_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubmitInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubmitInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, waitSemaphoreCount, pWaitSemaphores, pWaitDstStageMask, commandBufferCount, pCommandBuffers, signalSemaphoreCount, pSignalSemaphores ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubmitInfo const & ) const = default; +#else + bool operator==( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreCount == rhs.waitSemaphoreCount ) && + ( pWaitSemaphores == rhs.pWaitSemaphores ) && ( pWaitDstStageMask == rhs.pWaitDstStageMask ) && ( commandBufferCount == rhs.commandBufferCount ) && + ( pCommandBuffers == rhs.pCommandBuffers ) && ( signalSemaphoreCount == rhs.signalSemaphoreCount ) && + ( pSignalSemaphores == rhs.pSignalSemaphores ); +# endif + } + + bool operator!=( SubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubmitInfo; + void const * pNext = {}; + uint32_t waitSemaphoreCount = {}; + Semaphore const * pWaitSemaphores = {}; + PipelineStageFlags const * pWaitDstStageMask = {}; + uint32_t commandBufferCount = {}; + CommandBuffer const * pCommandBuffers = {}; + uint32_t signalSemaphoreCount = {}; + Semaphore const * pSignalSemaphores = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubmitInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SubmitInfo; + }; + + // wrapper struct for struct VkSubmitInfo2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubmitInfo2.html + struct SubmitInfo2 + { + using NativeType = VkSubmitInfo2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubmitInfo2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubmitInfo2( SubmitFlags flags_ = {}, + uint32_t waitSemaphoreInfoCount_ = {}, + SemaphoreSubmitInfo const * pWaitSemaphoreInfos_ = {}, + uint32_t commandBufferInfoCount_ = {}, + CommandBufferSubmitInfo const * pCommandBufferInfos_ = {}, + uint32_t signalSemaphoreInfoCount_ = {}, + SemaphoreSubmitInfo const * pSignalSemaphoreInfos_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , waitSemaphoreInfoCount{ waitSemaphoreInfoCount_ } + , pWaitSemaphoreInfos{ pWaitSemaphoreInfos_ } + , commandBufferInfoCount{ commandBufferInfoCount_ } + , pCommandBufferInfos{ pCommandBufferInfos_ } + , signalSemaphoreInfoCount{ signalSemaphoreInfoCount_ } + , pSignalSemaphoreInfos{ pSignalSemaphoreInfos_ } + { + } + + VULKAN_HPP_CONSTEXPR SubmitInfo2( SubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubmitInfo2( VkSubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubmitInfo2( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo2( SubmitFlags flags_, + ArrayProxyNoTemporaries const & waitSemaphoreInfos_, + ArrayProxyNoTemporaries const & commandBufferInfos_ = {}, + ArrayProxyNoTemporaries const & signalSemaphoreInfos_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , waitSemaphoreInfoCount( static_cast( waitSemaphoreInfos_.size() ) ) + , pWaitSemaphoreInfos( waitSemaphoreInfos_.data() ) + , commandBufferInfoCount( static_cast( commandBufferInfos_.size() ) ) + , pCommandBufferInfos( commandBufferInfos_.data() ) + , signalSemaphoreInfoCount( static_cast( signalSemaphoreInfos_.size() ) ) + , pSignalSemaphoreInfos( signalSemaphoreInfos_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SubmitInfo2 & operator=( SubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubmitInfo2 & operator=( VkSubmitInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setFlags( SubmitFlags flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 && setFlags( SubmitFlags flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setWaitSemaphoreInfoCount( uint32_t waitSemaphoreInfoCount_ ) & VULKAN_HPP_NOEXCEPT + { + waitSemaphoreInfoCount = waitSemaphoreInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 && setWaitSemaphoreInfoCount( uint32_t waitSemaphoreInfoCount_ ) && VULKAN_HPP_NOEXCEPT + { + waitSemaphoreInfoCount = waitSemaphoreInfoCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPWaitSemaphoreInfos( SemaphoreSubmitInfo const * pWaitSemaphoreInfos_ ) & VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreInfos = pWaitSemaphoreInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 && setPWaitSemaphoreInfos( SemaphoreSubmitInfo const * pWaitSemaphoreInfos_ ) && VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreInfos = pWaitSemaphoreInfos_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo2 & setWaitSemaphoreInfos( ArrayProxyNoTemporaries const & waitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreInfoCount = static_cast( waitSemaphoreInfos_.size() ); + pWaitSemaphoreInfos = waitSemaphoreInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setCommandBufferInfoCount( uint32_t commandBufferInfoCount_ ) & VULKAN_HPP_NOEXCEPT + { + commandBufferInfoCount = commandBufferInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 && setCommandBufferInfoCount( uint32_t commandBufferInfoCount_ ) && VULKAN_HPP_NOEXCEPT + { + commandBufferInfoCount = commandBufferInfoCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPCommandBufferInfos( CommandBufferSubmitInfo const * pCommandBufferInfos_ ) & VULKAN_HPP_NOEXCEPT + { + pCommandBufferInfos = pCommandBufferInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 && setPCommandBufferInfos( CommandBufferSubmitInfo const * pCommandBufferInfos_ ) && VULKAN_HPP_NOEXCEPT + { + pCommandBufferInfos = pCommandBufferInfos_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo2 & setCommandBufferInfos( ArrayProxyNoTemporaries const & commandBufferInfos_ ) VULKAN_HPP_NOEXCEPT + { + commandBufferInfoCount = static_cast( commandBufferInfos_.size() ); + pCommandBufferInfos = commandBufferInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setSignalSemaphoreInfoCount( uint32_t signalSemaphoreInfoCount_ ) & VULKAN_HPP_NOEXCEPT + { + signalSemaphoreInfoCount = signalSemaphoreInfoCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 && setSignalSemaphoreInfoCount( uint32_t signalSemaphoreInfoCount_ ) && VULKAN_HPP_NOEXCEPT + { + signalSemaphoreInfoCount = signalSemaphoreInfoCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 & setPSignalSemaphoreInfos( SemaphoreSubmitInfo const * pSignalSemaphoreInfos_ ) & VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreInfos = pSignalSemaphoreInfos_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubmitInfo2 && setPSignalSemaphoreInfos( SemaphoreSubmitInfo const * pSignalSemaphoreInfos_ ) && VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreInfos = pSignalSemaphoreInfos_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SubmitInfo2 & setSignalSemaphoreInfos( ArrayProxyNoTemporaries const & signalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreInfoCount = static_cast( signalSemaphoreInfos_.size() ); + pSignalSemaphoreInfos = signalSemaphoreInfos_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubmitInfo2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubmitInfo2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubmitInfo2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubmitInfo2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + waitSemaphoreInfoCount, + pWaitSemaphoreInfos, + commandBufferInfoCount, + pCommandBufferInfos, + signalSemaphoreInfoCount, + pSignalSemaphoreInfos ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubmitInfo2 const & ) const = default; +#else + bool operator==( SubmitInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( waitSemaphoreInfoCount == rhs.waitSemaphoreInfoCount ) && + ( pWaitSemaphoreInfos == rhs.pWaitSemaphoreInfos ) && ( commandBufferInfoCount == rhs.commandBufferInfoCount ) && + ( pCommandBufferInfos == rhs.pCommandBufferInfos ) && ( signalSemaphoreInfoCount == rhs.signalSemaphoreInfoCount ) && + ( pSignalSemaphoreInfos == rhs.pSignalSemaphoreInfos ); +# endif + } + + bool operator!=( SubmitInfo2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubmitInfo2; + void const * pNext = {}; + SubmitFlags flags = {}; + uint32_t waitSemaphoreInfoCount = {}; + SemaphoreSubmitInfo const * pWaitSemaphoreInfos = {}; + uint32_t commandBufferInfoCount = {}; + CommandBufferSubmitInfo const * pCommandBufferInfos = {}; + uint32_t signalSemaphoreInfoCount = {}; + SemaphoreSubmitInfo const * pSignalSemaphoreInfos = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubmitInfo2; + }; +#endif + + template <> + struct CppType + { + using Type = SubmitInfo2; + }; + + using SubmitInfo2KHR = SubmitInfo2; + + // wrapper struct for struct VkSubpassBeginInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassBeginInfo.html + struct SubpassBeginInfo + { + using NativeType = VkSubpassBeginInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassBeginInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassBeginInfo( SubpassContents contents_ = SubpassContents::eInline, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , contents{ contents_ } + { + } + + VULKAN_HPP_CONSTEXPR SubpassBeginInfo( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassBeginInfo( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassBeginInfo( *reinterpret_cast( &rhs ) ) {} + + SubpassBeginInfo & operator=( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubpassBeginInfo & operator=( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & setContents( SubpassContents contents_ ) & VULKAN_HPP_NOEXCEPT + { + contents = contents_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo && setContents( SubpassContents contents_ ) && VULKAN_HPP_NOEXCEPT + { + contents = contents_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubpassBeginInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassBeginInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassBeginInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubpassBeginInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, contents ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassBeginInfo const & ) const = default; +#else + bool operator==( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( contents == rhs.contents ); +# endif + } + + bool operator!=( SubpassBeginInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubpassBeginInfo; + void const * pNext = {}; + SubpassContents contents = SubpassContents::eInline; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubpassBeginInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SubpassBeginInfo; + }; + + using SubpassBeginInfoKHR = SubpassBeginInfo; + + // wrapper struct for struct VkSubpassDescriptionDepthStencilResolve, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassDescriptionDepthStencilResolve.html + struct SubpassDescriptionDepthStencilResolve + { + using NativeType = VkSubpassDescriptionDepthStencilResolve; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDescriptionDepthStencilResolve; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve( ResolveModeFlagBits depthResolveMode_ = ResolveModeFlagBits::eNone, + ResolveModeFlagBits stencilResolveMode_ = ResolveModeFlagBits::eNone, + AttachmentReference2 const * pDepthStencilResolveAttachment_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , depthResolveMode{ depthResolveMode_ } + , stencilResolveMode{ stencilResolveMode_ } + , pDepthStencilResolveAttachment{ pDepthStencilResolveAttachment_ } + { + } + + VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassDescriptionDepthStencilResolve( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassDescriptionDepthStencilResolve( *reinterpret_cast( &rhs ) ) + { + } + + SubpassDescriptionDepthStencilResolve & operator=( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubpassDescriptionDepthStencilResolve & operator=( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setDepthResolveMode( ResolveModeFlagBits depthResolveMode_ ) & VULKAN_HPP_NOEXCEPT + { + depthResolveMode = depthResolveMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve && setDepthResolveMode( ResolveModeFlagBits depthResolveMode_ ) && VULKAN_HPP_NOEXCEPT + { + depthResolveMode = depthResolveMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & setStencilResolveMode( ResolveModeFlagBits stencilResolveMode_ ) & VULKAN_HPP_NOEXCEPT + { + stencilResolveMode = stencilResolveMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve && setStencilResolveMode( ResolveModeFlagBits stencilResolveMode_ ) && VULKAN_HPP_NOEXCEPT + { + stencilResolveMode = stencilResolveMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & + setPDepthStencilResolveAttachment( AttachmentReference2 const * pDepthStencilResolveAttachment_ ) & + VULKAN_HPP_NOEXCEPT + { + pDepthStencilResolveAttachment = pDepthStencilResolveAttachment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve && + setPDepthStencilResolveAttachment( AttachmentReference2 const * pDepthStencilResolveAttachment_ ) && + VULKAN_HPP_NOEXCEPT + { + pDepthStencilResolveAttachment = pDepthStencilResolveAttachment_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubpassDescriptionDepthStencilResolve const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassDescriptionDepthStencilResolve &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassDescriptionDepthStencilResolve const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubpassDescriptionDepthStencilResolve *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, depthResolveMode, stencilResolveMode, pDepthStencilResolveAttachment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassDescriptionDepthStencilResolve const & ) const = default; +#else + bool operator==( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( depthResolveMode == rhs.depthResolveMode ) && + ( stencilResolveMode == rhs.stencilResolveMode ) && ( pDepthStencilResolveAttachment == rhs.pDepthStencilResolveAttachment ); +# endif + } + + bool operator!=( SubpassDescriptionDepthStencilResolve const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubpassDescriptionDepthStencilResolve; + void const * pNext = {}; + ResolveModeFlagBits depthResolveMode = ResolveModeFlagBits::eNone; + ResolveModeFlagBits stencilResolveMode = ResolveModeFlagBits::eNone; + AttachmentReference2 const * pDepthStencilResolveAttachment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubpassDescriptionDepthStencilResolve; + }; +#endif + + template <> + struct CppType + { + using Type = SubpassDescriptionDepthStencilResolve; + }; + + using SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve; + + // wrapper struct for struct VkSubpassEndInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassEndInfo.html + struct SubpassEndInfo + { + using NativeType = VkSubpassEndInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassEndInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassEndInfo( void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT : pNext{ pNext_ } {} + + VULKAN_HPP_CONSTEXPR SubpassEndInfo( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassEndInfo( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT : SubpassEndInfo( *reinterpret_cast( &rhs ) ) {} + + SubpassEndInfo & operator=( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubpassEndInfo & operator=( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassEndInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassEndInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubpassEndInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassEndInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassEndInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubpassEndInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassEndInfo const & ) const = default; +#else + bool operator==( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ); +# endif + } + + bool operator!=( SubpassEndInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubpassEndInfo; + void const * pNext = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubpassEndInfo; + }; +#endif + + template <> + struct CppType + { + using Type = SubpassEndInfo; + }; + + using SubpassEndInfoKHR = SubpassEndInfo; + + // wrapper struct for struct VkSubpassResolvePerformanceQueryEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassResolvePerformanceQueryEXT.html + struct SubpassResolvePerformanceQueryEXT + { + using NativeType = VkSubpassResolvePerformanceQueryEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassResolvePerformanceQueryEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubpassResolvePerformanceQueryEXT( Bool32 optimal_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , optimal{ optimal_ } + { + } + + VULKAN_HPP_CONSTEXPR SubpassResolvePerformanceQueryEXT( SubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassResolvePerformanceQueryEXT( VkSubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassResolvePerformanceQueryEXT( *reinterpret_cast( &rhs ) ) + { + } + + SubpassResolvePerformanceQueryEXT & operator=( SubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubpassResolvePerformanceQueryEXT & operator=( VkSubpassResolvePerformanceQueryEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSubpassResolvePerformanceQueryEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassResolvePerformanceQueryEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassResolvePerformanceQueryEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubpassResolvePerformanceQueryEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, optimal ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassResolvePerformanceQueryEXT const & ) const = default; +#else + bool operator==( SubpassResolvePerformanceQueryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( optimal == rhs.optimal ); +# endif + } + + bool operator!=( SubpassResolvePerformanceQueryEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubpassResolvePerformanceQueryEXT; + void * pNext = {}; + Bool32 optimal = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubpassResolvePerformanceQueryEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SubpassResolvePerformanceQueryEXT; + }; + + // wrapper struct for struct VkSubpassShadingPipelineCreateInfoHUAWEI, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubpassShadingPipelineCreateInfoHUAWEI.html + struct SubpassShadingPipelineCreateInfoHUAWEI + { + using NativeType = VkSubpassShadingPipelineCreateInfoHUAWEI; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassShadingPipelineCreateInfoHUAWEI; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SubpassShadingPipelineCreateInfoHUAWEI( RenderPass renderPass_ = {}, uint32_t subpass_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , renderPass{ renderPass_ } + , subpass{ subpass_ } + { + } + + VULKAN_HPP_CONSTEXPR SubpassShadingPipelineCreateInfoHUAWEI( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubpassShadingPipelineCreateInfoHUAWEI( VkSubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + : SubpassShadingPipelineCreateInfoHUAWEI( *reinterpret_cast( &rhs ) ) + { + } + + SubpassShadingPipelineCreateInfoHUAWEI & operator=( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubpassShadingPipelineCreateInfoHUAWEI & operator=( VkSubpassShadingPipelineCreateInfoHUAWEI const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI & setRenderPass( RenderPass renderPass_ ) & VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI && setRenderPass( RenderPass renderPass_ ) && VULKAN_HPP_NOEXCEPT + { + renderPass = renderPass_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI & setSubpass( uint32_t subpass_ ) & VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubpassShadingPipelineCreateInfoHUAWEI && setSubpass( uint32_t subpass_ ) && VULKAN_HPP_NOEXCEPT + { + subpass = subpass_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubpassShadingPipelineCreateInfoHUAWEI const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassShadingPipelineCreateInfoHUAWEI &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubpassShadingPipelineCreateInfoHUAWEI const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubpassShadingPipelineCreateInfoHUAWEI *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, renderPass, subpass ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubpassShadingPipelineCreateInfoHUAWEI const & ) const = default; +#else + bool operator==( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( renderPass == rhs.renderPass ) && ( subpass == rhs.subpass ); +# endif + } + + bool operator!=( SubpassShadingPipelineCreateInfoHUAWEI const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubpassShadingPipelineCreateInfoHUAWEI; + void * pNext = {}; + RenderPass renderPass = {}; + uint32_t subpass = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubpassShadingPipelineCreateInfoHUAWEI; + }; +#endif + + template <> + struct CppType + { + using Type = SubpassShadingPipelineCreateInfoHUAWEI; + }; + + // wrapper struct for struct VkSubresourceHostMemcpySize, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubresourceHostMemcpySize.html + struct SubresourceHostMemcpySize + { + using NativeType = VkSubresourceHostMemcpySize; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubresourceHostMemcpySize; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubresourceHostMemcpySize( DeviceSize size_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR SubresourceHostMemcpySize( SubresourceHostMemcpySize const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubresourceHostMemcpySize( VkSubresourceHostMemcpySize const & rhs ) VULKAN_HPP_NOEXCEPT + : SubresourceHostMemcpySize( *reinterpret_cast( &rhs ) ) + { + } + + SubresourceHostMemcpySize & operator=( SubresourceHostMemcpySize const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubresourceHostMemcpySize & operator=( VkSubresourceHostMemcpySize const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSubresourceHostMemcpySize const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubresourceHostMemcpySize &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubresourceHostMemcpySize const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubresourceHostMemcpySize *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubresourceHostMemcpySize const & ) const = default; +#else + bool operator==( SubresourceHostMemcpySize const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( size == rhs.size ); +# endif + } + + bool operator!=( SubresourceHostMemcpySize const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubresourceHostMemcpySize; + void * pNext = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubresourceHostMemcpySize; + }; +#endif + + template <> + struct CppType + { + using Type = SubresourceHostMemcpySize; + }; + + using SubresourceHostMemcpySizeEXT = SubresourceHostMemcpySize; + + // wrapper struct for struct VkSubresourceLayout2, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubresourceLayout2.html + struct SubresourceLayout2 + { + using NativeType = VkSubresourceLayout2; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubresourceLayout2; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubresourceLayout2( SubresourceLayout subresourceLayout_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , subresourceLayout{ subresourceLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR SubresourceLayout2( SubresourceLayout2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubresourceLayout2( VkSubresourceLayout2 const & rhs ) VULKAN_HPP_NOEXCEPT : SubresourceLayout2( *reinterpret_cast( &rhs ) ) {} + + SubresourceLayout2 & operator=( SubresourceLayout2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubresourceLayout2 & operator=( VkSubresourceLayout2 const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSubresourceLayout2 const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubresourceLayout2 &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubresourceLayout2 const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubresourceLayout2 *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subresourceLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubresourceLayout2 const & ) const = default; +#else + bool operator==( SubresourceLayout2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subresourceLayout == rhs.subresourceLayout ); +# endif + } + + bool operator!=( SubresourceLayout2 const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubresourceLayout2; + void * pNext = {}; + SubresourceLayout subresourceLayout = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubresourceLayout2; + }; +#endif + + template <> + struct CppType + { + using Type = SubresourceLayout2; + }; + + using SubresourceLayout2EXT = SubresourceLayout2; + using SubresourceLayout2KHR = SubresourceLayout2; + + // wrapper struct for struct VkSubsampledImageFormatPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSubsampledImageFormatPropertiesEXT.html + struct SubsampledImageFormatPropertiesEXT + { + using NativeType = VkSubsampledImageFormatPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubsampledImageFormatPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SubsampledImageFormatPropertiesEXT( uint32_t subsampledImageDescriptorCount_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , subsampledImageDescriptorCount{ subsampledImageDescriptorCount_ } + { + } + + VULKAN_HPP_CONSTEXPR SubsampledImageFormatPropertiesEXT( SubsampledImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SubsampledImageFormatPropertiesEXT( VkSubsampledImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SubsampledImageFormatPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + SubsampledImageFormatPropertiesEXT & operator=( SubsampledImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SubsampledImageFormatPropertiesEXT & operator=( VkSubsampledImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SubsampledImageFormatPropertiesEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubsampledImageFormatPropertiesEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SubsampledImageFormatPropertiesEXT & setSubsampledImageDescriptorCount( uint32_t subsampledImageDescriptorCount_ ) & + VULKAN_HPP_NOEXCEPT + { + subsampledImageDescriptorCount = subsampledImageDescriptorCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SubsampledImageFormatPropertiesEXT && setSubsampledImageDescriptorCount( uint32_t subsampledImageDescriptorCount_ ) && + VULKAN_HPP_NOEXCEPT + { + subsampledImageDescriptorCount = subsampledImageDescriptorCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSubsampledImageFormatPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubsampledImageFormatPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSubsampledImageFormatPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSubsampledImageFormatPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, subsampledImageDescriptorCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SubsampledImageFormatPropertiesEXT const & ) const = default; +#else + bool operator==( SubsampledImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( subsampledImageDescriptorCount == rhs.subsampledImageDescriptorCount ); +# endif + } + + bool operator!=( SubsampledImageFormatPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSubsampledImageFormatPropertiesEXT; + void const * pNext = {}; + uint32_t subsampledImageDescriptorCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SubsampledImageFormatPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SubsampledImageFormatPropertiesEXT; + }; + + // wrapper struct for struct VkSurfaceCapabilities2EXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCapabilities2EXT.html + struct SurfaceCapabilities2EXT + { + using NativeType = VkSurfaceCapabilities2EXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilities2EXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT( uint32_t minImageCount_ = {}, + uint32_t maxImageCount_ = {}, + Extent2D currentExtent_ = {}, + Extent2D minImageExtent_ = {}, + Extent2D maxImageExtent_ = {}, + uint32_t maxImageArrayLayers_ = {}, + SurfaceTransformFlagsKHR supportedTransforms_ = {}, + SurfaceTransformFlagBitsKHR currentTransform_ = SurfaceTransformFlagBitsKHR::eIdentity, + CompositeAlphaFlagsKHR supportedCompositeAlpha_ = {}, + ImageUsageFlags supportedUsageFlags_ = {}, + SurfaceCounterFlagsEXT supportedSurfaceCounters_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minImageCount{ minImageCount_ } + , maxImageCount{ maxImageCount_ } + , currentExtent{ currentExtent_ } + , minImageExtent{ minImageExtent_ } + , maxImageExtent{ maxImageExtent_ } + , maxImageArrayLayers{ maxImageArrayLayers_ } + , supportedTransforms{ supportedTransforms_ } + , currentTransform{ currentTransform_ } + , supportedCompositeAlpha{ supportedCompositeAlpha_ } + , supportedUsageFlags{ supportedUsageFlags_ } + , supportedSurfaceCounters{ supportedSurfaceCounters_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilities2EXT( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCapabilities2EXT( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceCapabilities2EXT & operator=( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceCapabilities2EXT & operator=( VkSurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSurfaceCapabilities2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilities2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilities2EXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceCapabilities2EXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + minImageCount, + maxImageCount, + currentExtent, + minImageExtent, + maxImageExtent, + maxImageArrayLayers, + supportedTransforms, + currentTransform, + supportedCompositeAlpha, + supportedUsageFlags, + supportedSurfaceCounters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilities2EXT const & ) const = default; +#else + bool operator==( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minImageCount == rhs.minImageCount ) && ( maxImageCount == rhs.maxImageCount ) && + ( currentExtent == rhs.currentExtent ) && ( minImageExtent == rhs.minImageExtent ) && ( maxImageExtent == rhs.maxImageExtent ) && + ( maxImageArrayLayers == rhs.maxImageArrayLayers ) && ( supportedTransforms == rhs.supportedTransforms ) && + ( currentTransform == rhs.currentTransform ) && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha ) && + ( supportedUsageFlags == rhs.supportedUsageFlags ) && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters ); +# endif + } + + bool operator!=( SurfaceCapabilities2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSurfaceCapabilities2EXT; + void * pNext = {}; + uint32_t minImageCount = {}; + uint32_t maxImageCount = {}; + Extent2D currentExtent = {}; + Extent2D minImageExtent = {}; + Extent2D maxImageExtent = {}; + uint32_t maxImageArrayLayers = {}; + SurfaceTransformFlagsKHR supportedTransforms = {}; + SurfaceTransformFlagBitsKHR currentTransform = SurfaceTransformFlagBitsKHR::eIdentity; + CompositeAlphaFlagsKHR supportedCompositeAlpha = {}; + ImageUsageFlags supportedUsageFlags = {}; + SurfaceCounterFlagsEXT supportedSurfaceCounters = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceCapabilities2EXT; + }; +#endif + + template <> + struct CppType + { + using Type = SurfaceCapabilities2EXT; + }; + + // wrapper struct for struct VkSurfaceCapabilitiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesKHR.html + struct SurfaceCapabilitiesKHR + { + using NativeType = VkSurfaceCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR( uint32_t minImageCount_ = {}, + uint32_t maxImageCount_ = {}, + Extent2D currentExtent_ = {}, + Extent2D minImageExtent_ = {}, + Extent2D maxImageExtent_ = {}, + uint32_t maxImageArrayLayers_ = {}, + SurfaceTransformFlagsKHR supportedTransforms_ = {}, + SurfaceTransformFlagBitsKHR currentTransform_ = SurfaceTransformFlagBitsKHR::eIdentity, + CompositeAlphaFlagsKHR supportedCompositeAlpha_ = {}, + ImageUsageFlags supportedUsageFlags_ = {} ) VULKAN_HPP_NOEXCEPT + : minImageCount{ minImageCount_ } + , maxImageCount{ maxImageCount_ } + , currentExtent{ currentExtent_ } + , minImageExtent{ minImageExtent_ } + , maxImageExtent{ maxImageExtent_ } + , maxImageArrayLayers{ maxImageArrayLayers_ } + , supportedTransforms{ supportedTransforms_ } + , currentTransform{ currentTransform_ } + , supportedCompositeAlpha{ supportedCompositeAlpha_ } + , supportedUsageFlags{ supportedUsageFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilitiesKHR( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceCapabilitiesKHR & operator=( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceCapabilitiesKHR & operator=( VkSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSurfaceCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( minImageCount, + maxImageCount, + currentExtent, + minImageExtent, + maxImageExtent, + maxImageArrayLayers, + supportedTransforms, + currentTransform, + supportedCompositeAlpha, + supportedUsageFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilitiesKHR const & ) const = default; +#else + bool operator==( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( minImageCount == rhs.minImageCount ) && ( maxImageCount == rhs.maxImageCount ) && ( currentExtent == rhs.currentExtent ) && + ( minImageExtent == rhs.minImageExtent ) && ( maxImageExtent == rhs.maxImageExtent ) && ( maxImageArrayLayers == rhs.maxImageArrayLayers ) && + ( supportedTransforms == rhs.supportedTransforms ) && ( currentTransform == rhs.currentTransform ) && + ( supportedCompositeAlpha == rhs.supportedCompositeAlpha ) && ( supportedUsageFlags == rhs.supportedUsageFlags ); +# endif + } + + bool operator!=( SurfaceCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t minImageCount = {}; + uint32_t maxImageCount = {}; + Extent2D currentExtent = {}; + Extent2D minImageExtent = {}; + Extent2D maxImageExtent = {}; + uint32_t maxImageArrayLayers = {}; + SurfaceTransformFlagsKHR supportedTransforms = {}; + SurfaceTransformFlagBitsKHR currentTransform = SurfaceTransformFlagBitsKHR::eIdentity; + CompositeAlphaFlagsKHR supportedCompositeAlpha = {}; + ImageUsageFlags supportedUsageFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceCapabilitiesKHR; + }; +#endif + + // wrapper struct for struct VkSurfaceCapabilities2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCapabilities2KHR.html + struct SurfaceCapabilities2KHR + { + using NativeType = VkSurfaceCapabilities2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilities2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( SurfaceCapabilitiesKHR surfaceCapabilities_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , surfaceCapabilities{ surfaceCapabilities_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilities2KHR( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCapabilities2KHR( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceCapabilities2KHR & operator=( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceCapabilities2KHR & operator=( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSurfaceCapabilities2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilities2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilities2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceCapabilities2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, surfaceCapabilities ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilities2KHR const & ) const = default; +#else + bool operator==( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceCapabilities == rhs.surfaceCapabilities ); +# endif + } + + bool operator!=( SurfaceCapabilities2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSurfaceCapabilities2KHR; + void * pNext = {}; + SurfaceCapabilitiesKHR surfaceCapabilities = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceCapabilities2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = SurfaceCapabilities2KHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkSurfaceCapabilitiesFullScreenExclusiveEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesFullScreenExclusiveEXT.html + struct SurfaceCapabilitiesFullScreenExclusiveEXT + { + using NativeType = VkSurfaceCapabilitiesFullScreenExclusiveEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT( Bool32 fullScreenExclusiveSupported_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fullScreenExclusiveSupported{ fullScreenExclusiveSupported_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilitiesFullScreenExclusiveEXT( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCapabilitiesFullScreenExclusiveEXT( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSurfaceCapabilitiesFullScreenExclusiveEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesFullScreenExclusiveEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesFullScreenExclusiveEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesFullScreenExclusiveEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fullScreenExclusiveSupported ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilitiesFullScreenExclusiveEXT const & ) const = default; +# else + bool operator==( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fullScreenExclusiveSupported == rhs.fullScreenExclusiveSupported ); +# endif + } + + bool operator!=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT; + void * pNext = {}; + Bool32 fullScreenExclusiveSupported = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceCapabilitiesFullScreenExclusiveEXT; + }; +# endif + + template <> + struct CppType + { + using Type = SurfaceCapabilitiesFullScreenExclusiveEXT; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + // wrapper struct for struct VkSurfaceCapabilitiesPresentBarrierNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentBarrierNV.html + struct SurfaceCapabilitiesPresentBarrierNV + { + using NativeType = VkSurfaceCapabilitiesPresentBarrierNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilitiesPresentBarrierNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesPresentBarrierNV( Bool32 presentBarrierSupported_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentBarrierSupported{ presentBarrierSupported_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesPresentBarrierNV( SurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilitiesPresentBarrierNV( VkSurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCapabilitiesPresentBarrierNV( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceCapabilitiesPresentBarrierNV & operator=( SurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceCapabilitiesPresentBarrierNV & operator=( VkSurfaceCapabilitiesPresentBarrierNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSurfaceCapabilitiesPresentBarrierNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesPresentBarrierNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesPresentBarrierNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesPresentBarrierNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentBarrierSupported ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilitiesPresentBarrierNV const & ) const = default; +#else + bool operator==( SurfaceCapabilitiesPresentBarrierNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentBarrierSupported == rhs.presentBarrierSupported ); +# endif + } + + bool operator!=( SurfaceCapabilitiesPresentBarrierNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSurfaceCapabilitiesPresentBarrierNV; + void * pNext = {}; + Bool32 presentBarrierSupported = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceCapabilitiesPresentBarrierNV; + }; +#endif + + template <> + struct CppType + { + using Type = SurfaceCapabilitiesPresentBarrierNV; + }; + + // wrapper struct for struct VkSurfaceCapabilitiesPresentId2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentId2KHR.html + struct SurfaceCapabilitiesPresentId2KHR + { + using NativeType = VkSurfaceCapabilitiesPresentId2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilitiesPresentId2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesPresentId2KHR( Bool32 presentId2Supported_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentId2Supported{ presentId2Supported_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesPresentId2KHR( SurfaceCapabilitiesPresentId2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilitiesPresentId2KHR( VkSurfaceCapabilitiesPresentId2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCapabilitiesPresentId2KHR( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceCapabilitiesPresentId2KHR & operator=( SurfaceCapabilitiesPresentId2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceCapabilitiesPresentId2KHR & operator=( VkSurfaceCapabilitiesPresentId2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesPresentId2KHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesPresentId2KHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesPresentId2KHR & setPresentId2Supported( Bool32 presentId2Supported_ ) & VULKAN_HPP_NOEXCEPT + { + presentId2Supported = presentId2Supported_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesPresentId2KHR && setPresentId2Supported( Bool32 presentId2Supported_ ) && VULKAN_HPP_NOEXCEPT + { + presentId2Supported = presentId2Supported_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSurfaceCapabilitiesPresentId2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesPresentId2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesPresentId2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesPresentId2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentId2Supported ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilitiesPresentId2KHR const & ) const = default; +#else + bool operator==( SurfaceCapabilitiesPresentId2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentId2Supported == rhs.presentId2Supported ); +# endif + } + + bool operator!=( SurfaceCapabilitiesPresentId2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSurfaceCapabilitiesPresentId2KHR; + void * pNext = {}; + Bool32 presentId2Supported = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceCapabilitiesPresentId2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = SurfaceCapabilitiesPresentId2KHR; + }; + + // wrapper struct for struct VkSurfaceCapabilitiesPresentWait2KHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCapabilitiesPresentWait2KHR.html + struct SurfaceCapabilitiesPresentWait2KHR + { + using NativeType = VkSurfaceCapabilitiesPresentWait2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilitiesPresentWait2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesPresentWait2KHR( Bool32 presentWait2Supported_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentWait2Supported{ presentWait2Supported_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesPresentWait2KHR( SurfaceCapabilitiesPresentWait2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCapabilitiesPresentWait2KHR( VkSurfaceCapabilitiesPresentWait2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCapabilitiesPresentWait2KHR( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceCapabilitiesPresentWait2KHR & operator=( SurfaceCapabilitiesPresentWait2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceCapabilitiesPresentWait2KHR & operator=( VkSurfaceCapabilitiesPresentWait2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesPresentWait2KHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesPresentWait2KHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesPresentWait2KHR & setPresentWait2Supported( Bool32 presentWait2Supported_ ) & VULKAN_HPP_NOEXCEPT + { + presentWait2Supported = presentWait2Supported_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesPresentWait2KHR && setPresentWait2Supported( Bool32 presentWait2Supported_ ) && VULKAN_HPP_NOEXCEPT + { + presentWait2Supported = presentWait2Supported_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSurfaceCapabilitiesPresentWait2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesPresentWait2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesPresentWait2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceCapabilitiesPresentWait2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentWait2Supported ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCapabilitiesPresentWait2KHR const & ) const = default; +#else + bool operator==( SurfaceCapabilitiesPresentWait2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentWait2Supported == rhs.presentWait2Supported ); +# endif + } + + bool operator!=( SurfaceCapabilitiesPresentWait2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSurfaceCapabilitiesPresentWait2KHR; + void * pNext = {}; + Bool32 presentWait2Supported = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceCapabilitiesPresentWait2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = SurfaceCapabilitiesPresentWait2KHR; + }; + +#if defined( VK_USE_PLATFORM_OHOS ) + // wrapper struct for struct VkSurfaceCreateInfoOHOS, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceCreateInfoOHOS.html + struct SurfaceCreateInfoOHOS + { + using NativeType = VkSurfaceCreateInfoOHOS; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCreateInfoOHOS; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SurfaceCreateInfoOHOS( SurfaceCreateFlagsOHOS flags_ = {}, OHNativeWindow * window_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , window{ window_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceCreateInfoOHOS( SurfaceCreateInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceCreateInfoOHOS( VkSurfaceCreateInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceCreateInfoOHOS( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceCreateInfoOHOS & operator=( SurfaceCreateInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceCreateInfoOHOS & operator=( VkSurfaceCreateInfoOHOS const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfaceCreateInfoOHOS & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCreateInfoOHOS && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCreateInfoOHOS & setFlags( SurfaceCreateFlagsOHOS flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCreateInfoOHOS && setFlags( SurfaceCreateFlagsOHOS flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCreateInfoOHOS & setWindow( OHNativeWindow * window_ ) & VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceCreateInfoOHOS && setWindow( OHNativeWindow * window_ ) && VULKAN_HPP_NOEXCEPT + { + window = window_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSurfaceCreateInfoOHOS const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCreateInfoOHOS &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceCreateInfoOHOS const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceCreateInfoOHOS *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceCreateInfoOHOS const & ) const = default; +# else + bool operator==( SurfaceCreateInfoOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( window == rhs.window ); +# endif + } + + bool operator!=( SurfaceCreateInfoOHOS const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eSurfaceCreateInfoOHOS; + void const * pNext = {}; + SurfaceCreateFlagsOHOS flags = {}; + OHNativeWindow * window = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceCreateInfoOHOS; + }; +# endif + + template <> + struct CppType + { + using Type = SurfaceCreateInfoOHOS; + }; +#endif /*VK_USE_PLATFORM_OHOS*/ + + // wrapper struct for struct VkSurfaceFormatKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceFormatKHR.html + struct SurfaceFormatKHR + { + using NativeType = VkSurfaceFormatKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceFormatKHR( Format format_ = Format::eUndefined, ColorSpaceKHR colorSpace_ = ColorSpaceKHR::eSrgbNonlinear ) VULKAN_HPP_NOEXCEPT + : format{ format_ } + , colorSpace{ colorSpace_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceFormatKHR( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFormatKHR( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT : SurfaceFormatKHR( *reinterpret_cast( &rhs ) ) {} + + SurfaceFormatKHR & operator=( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceFormatKHR & operator=( VkSurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSurfaceFormatKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceFormatKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceFormatKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceFormatKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( format, colorSpace ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceFormatKHR const & ) const = default; +#else + bool operator==( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( format == rhs.format ) && ( colorSpace == rhs.colorSpace ); +# endif + } + + bool operator!=( SurfaceFormatKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + Format format = Format::eUndefined; + ColorSpaceKHR colorSpace = ColorSpaceKHR::eSrgbNonlinear; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceFormatKHR; + }; +#endif + + // wrapper struct for struct VkSurfaceFormat2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceFormat2KHR.html + struct SurfaceFormat2KHR + { + using NativeType = VkSurfaceFormat2KHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceFormat2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( SurfaceFormatKHR surfaceFormat_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , surfaceFormat{ surfaceFormat_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFormat2KHR( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT : SurfaceFormat2KHR( *reinterpret_cast( &rhs ) ) {} + + SurfaceFormat2KHR & operator=( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceFormat2KHR & operator=( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSurfaceFormat2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceFormat2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceFormat2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceFormat2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, surfaceFormat ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceFormat2KHR const & ) const = default; +#else + bool operator==( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceFormat == rhs.surfaceFormat ); +# endif + } + + bool operator!=( SurfaceFormat2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSurfaceFormat2KHR; + void * pNext = {}; + SurfaceFormatKHR surfaceFormat = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceFormat2KHR; + }; +#endif + + template <> + struct CppType + { + using Type = SurfaceFormat2KHR; + }; + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkSurfaceFullScreenExclusiveInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveInfoEXT.html + struct SurfaceFullScreenExclusiveInfoEXT + { + using NativeType = VkSurfaceFullScreenExclusiveInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceFullScreenExclusiveInfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveInfoEXT( FullScreenExclusiveEXT fullScreenExclusive_ = FullScreenExclusiveEXT::eDefault, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , fullScreenExclusive{ fullScreenExclusive_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveInfoEXT( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFullScreenExclusiveInfoEXT( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceFullScreenExclusiveInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceFullScreenExclusiveInfoEXT & operator=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceFullScreenExclusiveInfoEXT & operator=( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT & setFullScreenExclusive( FullScreenExclusiveEXT fullScreenExclusive_ ) & VULKAN_HPP_NOEXCEPT + { + fullScreenExclusive = fullScreenExclusive_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT && setFullScreenExclusive( FullScreenExclusiveEXT fullScreenExclusive_ ) && VULKAN_HPP_NOEXCEPT + { + fullScreenExclusive = fullScreenExclusive_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSurfaceFullScreenExclusiveInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceFullScreenExclusiveInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceFullScreenExclusiveInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceFullScreenExclusiveInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, fullScreenExclusive ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceFullScreenExclusiveInfoEXT const & ) const = default; +# else + bool operator==( SurfaceFullScreenExclusiveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( fullScreenExclusive == rhs.fullScreenExclusive ); +# endif + } + + bool operator!=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eSurfaceFullScreenExclusiveInfoEXT; + void * pNext = {}; + FullScreenExclusiveEXT fullScreenExclusive = FullScreenExclusiveEXT::eDefault; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceFullScreenExclusiveInfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = SurfaceFullScreenExclusiveInfoEXT; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkSurfaceFullScreenExclusiveWin32InfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceFullScreenExclusiveWin32InfoEXT.html + struct SurfaceFullScreenExclusiveWin32InfoEXT + { + using NativeType = VkSurfaceFullScreenExclusiveWin32InfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( HMONITOR hmonitor_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , hmonitor{ hmonitor_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceFullScreenExclusiveWin32InfoEXT( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceFullScreenExclusiveWin32InfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceFullScreenExclusiveWin32InfoEXT & operator=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceFullScreenExclusiveWin32InfoEXT & operator=( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & setHmonitor( HMONITOR hmonitor_ ) & VULKAN_HPP_NOEXCEPT + { + hmonitor = hmonitor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT && setHmonitor( HMONITOR hmonitor_ ) && VULKAN_HPP_NOEXCEPT + { + hmonitor = hmonitor_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSurfaceFullScreenExclusiveWin32InfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceFullScreenExclusiveWin32InfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceFullScreenExclusiveWin32InfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceFullScreenExclusiveWin32InfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hmonitor ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceFullScreenExclusiveWin32InfoEXT const & ) const = default; +# else + bool operator==( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hmonitor == rhs.hmonitor ); +# endif + } + + bool operator!=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT; + void const * pNext = {}; + HMONITOR hmonitor = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceFullScreenExclusiveWin32InfoEXT; + }; +# endif + + template <> + struct CppType + { + using Type = SurfaceFullScreenExclusiveWin32InfoEXT; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + // wrapper struct for struct VkSurfacePresentModeCompatibilityKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfacePresentModeCompatibilityKHR.html + struct SurfacePresentModeCompatibilityKHR + { + using NativeType = VkSurfacePresentModeCompatibilityKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfacePresentModeCompatibilityKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SurfacePresentModeCompatibilityKHR( uint32_t presentModeCount_ = {}, PresentModeKHR * pPresentModes_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentModeCount{ presentModeCount_ } + , pPresentModes{ pPresentModes_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfacePresentModeCompatibilityKHR( SurfacePresentModeCompatibilityKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfacePresentModeCompatibilityKHR( VkSurfacePresentModeCompatibilityKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfacePresentModeCompatibilityKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SurfacePresentModeCompatibilityKHR( ArrayProxyNoTemporaries const & presentModes_, void * pNext_ = nullptr ) + : pNext( pNext_ ), presentModeCount( static_cast( presentModes_.size() ) ), pPresentModes( presentModes_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SurfacePresentModeCompatibilityKHR & operator=( SurfacePresentModeCompatibilityKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfacePresentModeCompatibilityKHR & operator=( VkSurfacePresentModeCompatibilityKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityKHR & setPresentModeCount( uint32_t presentModeCount_ ) & VULKAN_HPP_NOEXCEPT + { + presentModeCount = presentModeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityKHR && setPresentModeCount( uint32_t presentModeCount_ ) && VULKAN_HPP_NOEXCEPT + { + presentModeCount = presentModeCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityKHR & setPPresentModes( PresentModeKHR * pPresentModes_ ) & VULKAN_HPP_NOEXCEPT + { + pPresentModes = pPresentModes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeCompatibilityKHR && setPPresentModes( PresentModeKHR * pPresentModes_ ) && VULKAN_HPP_NOEXCEPT + { + pPresentModes = pPresentModes_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SurfacePresentModeCompatibilityKHR & setPresentModes( ArrayProxyNoTemporaries const & presentModes_ ) VULKAN_HPP_NOEXCEPT + { + presentModeCount = static_cast( presentModes_.size() ); + pPresentModes = presentModes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSurfacePresentModeCompatibilityKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfacePresentModeCompatibilityKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfacePresentModeCompatibilityKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfacePresentModeCompatibilityKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentModeCount, pPresentModes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfacePresentModeCompatibilityKHR const & ) const = default; +#else + bool operator==( SurfacePresentModeCompatibilityKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentModeCount == rhs.presentModeCount ) && ( pPresentModes == rhs.pPresentModes ); +# endif + } + + bool operator!=( SurfacePresentModeCompatibilityKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSurfacePresentModeCompatibilityKHR; + void * pNext = {}; + uint32_t presentModeCount = {}; + PresentModeKHR * pPresentModes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfacePresentModeCompatibilityKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SurfacePresentModeCompatibilityKHR; + }; + + using SurfacePresentModeCompatibilityEXT = SurfacePresentModeCompatibilityKHR; + + // wrapper struct for struct VkSurfacePresentModeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfacePresentModeKHR.html + struct SurfacePresentModeKHR + { + using NativeType = VkSurfacePresentModeKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfacePresentModeKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfacePresentModeKHR( PresentModeKHR presentMode_ = PresentModeKHR::eImmediate, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentMode{ presentMode_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfacePresentModeKHR( SurfacePresentModeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfacePresentModeKHR( VkSurfacePresentModeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfacePresentModeKHR( *reinterpret_cast( &rhs ) ) + { + } + + SurfacePresentModeKHR & operator=( SurfacePresentModeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfacePresentModeKHR & operator=( VkSurfacePresentModeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeKHR & setPresentMode( PresentModeKHR presentMode_ ) & VULKAN_HPP_NOEXCEPT + { + presentMode = presentMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentModeKHR && setPresentMode( PresentModeKHR presentMode_ ) && VULKAN_HPP_NOEXCEPT + { + presentMode = presentMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSurfacePresentModeKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfacePresentModeKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfacePresentModeKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfacePresentModeKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfacePresentModeKHR const & ) const = default; +#else + bool operator==( SurfacePresentModeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentMode == rhs.presentMode ); +# endif + } + + bool operator!=( SurfacePresentModeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSurfacePresentModeKHR; + void * pNext = {}; + PresentModeKHR presentMode = PresentModeKHR::eImmediate; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfacePresentModeKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SurfacePresentModeKHR; + }; + + using SurfacePresentModeEXT = SurfacePresentModeKHR; + + // wrapper struct for struct VkSurfacePresentScalingCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfacePresentScalingCapabilitiesKHR.html + struct SurfacePresentScalingCapabilitiesKHR + { + using NativeType = VkSurfacePresentScalingCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfacePresentScalingCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfacePresentScalingCapabilitiesKHR( PresentScalingFlagsKHR supportedPresentScaling_ = {}, + PresentGravityFlagsKHR supportedPresentGravityX_ = {}, + PresentGravityFlagsKHR supportedPresentGravityY_ = {}, + Extent2D minScaledImageExtent_ = {}, + Extent2D maxScaledImageExtent_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , supportedPresentScaling{ supportedPresentScaling_ } + , supportedPresentGravityX{ supportedPresentGravityX_ } + , supportedPresentGravityY{ supportedPresentGravityY_ } + , minScaledImageExtent{ minScaledImageExtent_ } + , maxScaledImageExtent{ maxScaledImageExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfacePresentScalingCapabilitiesKHR( SurfacePresentScalingCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfacePresentScalingCapabilitiesKHR( VkSurfacePresentScalingCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfacePresentScalingCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + SurfacePresentScalingCapabilitiesKHR & operator=( SurfacePresentScalingCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfacePresentScalingCapabilitiesKHR & operator=( VkSurfacePresentScalingCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR & setSupportedPresentScaling( PresentScalingFlagsKHR supportedPresentScaling_ ) & + VULKAN_HPP_NOEXCEPT + { + supportedPresentScaling = supportedPresentScaling_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR && setSupportedPresentScaling( PresentScalingFlagsKHR supportedPresentScaling_ ) && + VULKAN_HPP_NOEXCEPT + { + supportedPresentScaling = supportedPresentScaling_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR & setSupportedPresentGravityX( PresentGravityFlagsKHR supportedPresentGravityX_ ) & + VULKAN_HPP_NOEXCEPT + { + supportedPresentGravityX = supportedPresentGravityX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR && setSupportedPresentGravityX( PresentGravityFlagsKHR supportedPresentGravityX_ ) && + VULKAN_HPP_NOEXCEPT + { + supportedPresentGravityX = supportedPresentGravityX_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR & setSupportedPresentGravityY( PresentGravityFlagsKHR supportedPresentGravityY_ ) & + VULKAN_HPP_NOEXCEPT + { + supportedPresentGravityY = supportedPresentGravityY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR && setSupportedPresentGravityY( PresentGravityFlagsKHR supportedPresentGravityY_ ) && + VULKAN_HPP_NOEXCEPT + { + supportedPresentGravityY = supportedPresentGravityY_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR & setMinScaledImageExtent( Extent2D const & minScaledImageExtent_ ) & VULKAN_HPP_NOEXCEPT + { + minScaledImageExtent = minScaledImageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR && setMinScaledImageExtent( Extent2D const & minScaledImageExtent_ ) && VULKAN_HPP_NOEXCEPT + { + minScaledImageExtent = minScaledImageExtent_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR & setMaxScaledImageExtent( Extent2D const & maxScaledImageExtent_ ) & VULKAN_HPP_NOEXCEPT + { + maxScaledImageExtent = maxScaledImageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SurfacePresentScalingCapabilitiesKHR && setMaxScaledImageExtent( Extent2D const & maxScaledImageExtent_ ) && VULKAN_HPP_NOEXCEPT + { + maxScaledImageExtent = maxScaledImageExtent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSurfacePresentScalingCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfacePresentScalingCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfacePresentScalingCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfacePresentScalingCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supportedPresentScaling, supportedPresentGravityX, supportedPresentGravityY, minScaledImageExtent, maxScaledImageExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfacePresentScalingCapabilitiesKHR const & ) const = default; +#else + bool operator==( SurfacePresentScalingCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportedPresentScaling == rhs.supportedPresentScaling ) && + ( supportedPresentGravityX == rhs.supportedPresentGravityX ) && ( supportedPresentGravityY == rhs.supportedPresentGravityY ) && + ( minScaledImageExtent == rhs.minScaledImageExtent ) && ( maxScaledImageExtent == rhs.maxScaledImageExtent ); +# endif + } + + bool operator!=( SurfacePresentScalingCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSurfacePresentScalingCapabilitiesKHR; + void * pNext = {}; + PresentScalingFlagsKHR supportedPresentScaling = {}; + PresentGravityFlagsKHR supportedPresentGravityX = {}; + PresentGravityFlagsKHR supportedPresentGravityY = {}; + Extent2D minScaledImageExtent = {}; + Extent2D maxScaledImageExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfacePresentScalingCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SurfacePresentScalingCapabilitiesKHR; + }; + + using SurfacePresentScalingCapabilitiesEXT = SurfacePresentScalingCapabilitiesKHR; + + // wrapper struct for struct VkSurfaceProtectedCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSurfaceProtectedCapabilitiesKHR.html + struct SurfaceProtectedCapabilitiesKHR + { + using NativeType = VkSurfaceProtectedCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceProtectedCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SurfaceProtectedCapabilitiesKHR( Bool32 supportsProtected_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , supportsProtected{ supportsProtected_ } + { + } + + VULKAN_HPP_CONSTEXPR SurfaceProtectedCapabilitiesKHR( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SurfaceProtectedCapabilitiesKHR( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SurfaceProtectedCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + SurfaceProtectedCapabilitiesKHR & operator=( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SurfaceProtectedCapabilitiesKHR & operator=( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSurfaceProtectedCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceProtectedCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSurfaceProtectedCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSurfaceProtectedCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supportsProtected ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SurfaceProtectedCapabilitiesKHR const & ) const = default; +#else + bool operator==( SurfaceProtectedCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportsProtected == rhs.supportsProtected ); +# endif + } + + bool operator!=( SurfaceProtectedCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSurfaceProtectedCapabilitiesKHR; + void * pNext = {}; + Bool32 supportsProtected = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SurfaceProtectedCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SurfaceProtectedCapabilitiesKHR; + }; + + // wrapper struct for struct VkSwapchainCalibratedTimestampInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainCalibratedTimestampInfoEXT.html + struct SwapchainCalibratedTimestampInfoEXT + { + using NativeType = VkSwapchainCalibratedTimestampInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainCalibratedTimestampInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainCalibratedTimestampInfoEXT( SwapchainKHR swapchain_ = {}, + PresentStageFlagsEXT presentStage_ = {}, + uint64_t timeDomainId_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchain{ swapchain_ } + , presentStage{ presentStage_ } + , timeDomainId{ timeDomainId_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainCalibratedTimestampInfoEXT( SwapchainCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainCalibratedTimestampInfoEXT( VkSwapchainCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainCalibratedTimestampInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + SwapchainCalibratedTimestampInfoEXT & operator=( SwapchainCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainCalibratedTimestampInfoEXT & operator=( VkSwapchainCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainCalibratedTimestampInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCalibratedTimestampInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCalibratedTimestampInfoEXT & setSwapchain( SwapchainKHR swapchain_ ) & VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCalibratedTimestampInfoEXT && setSwapchain( SwapchainKHR swapchain_ ) && VULKAN_HPP_NOEXCEPT + { + swapchain = swapchain_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCalibratedTimestampInfoEXT & setPresentStage( PresentStageFlagsEXT presentStage_ ) & VULKAN_HPP_NOEXCEPT + { + presentStage = presentStage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCalibratedTimestampInfoEXT && setPresentStage( PresentStageFlagsEXT presentStage_ ) && VULKAN_HPP_NOEXCEPT + { + presentStage = presentStage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCalibratedTimestampInfoEXT & setTimeDomainId( uint64_t timeDomainId_ ) & VULKAN_HPP_NOEXCEPT + { + timeDomainId = timeDomainId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCalibratedTimestampInfoEXT && setTimeDomainId( uint64_t timeDomainId_ ) && VULKAN_HPP_NOEXCEPT + { + timeDomainId = timeDomainId_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSwapchainCalibratedTimestampInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainCalibratedTimestampInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainCalibratedTimestampInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainCalibratedTimestampInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchain, presentStage, timeDomainId ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainCalibratedTimestampInfoEXT const & ) const = default; +#else + bool operator==( SwapchainCalibratedTimestampInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchain == rhs.swapchain ) && ( presentStage == rhs.presentStage ) && + ( timeDomainId == rhs.timeDomainId ); +# endif + } + + bool operator!=( SwapchainCalibratedTimestampInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainCalibratedTimestampInfoEXT; + void const * pNext = {}; + SwapchainKHR swapchain = {}; + PresentStageFlagsEXT presentStage = {}; + uint64_t timeDomainId = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainCalibratedTimestampInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainCalibratedTimestampInfoEXT; + }; + + // wrapper struct for struct VkSwapchainCounterCreateInfoEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainCounterCreateInfoEXT.html + struct SwapchainCounterCreateInfoEXT + { + using NativeType = VkSwapchainCounterCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainCounterCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , surfaceCounters{ surfaceCounters_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainCounterCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + + SwapchainCounterCreateInfoEXT & operator=( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainCounterCreateInfoEXT & operator=( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ ) & VULKAN_HPP_NOEXCEPT + { + surfaceCounters = surfaceCounters_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT && setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ ) && VULKAN_HPP_NOEXCEPT + { + surfaceCounters = surfaceCounters_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSwapchainCounterCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainCounterCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainCounterCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainCounterCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, surfaceCounters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainCounterCreateInfoEXT const & ) const = default; +#else + bool operator==( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( surfaceCounters == rhs.surfaceCounters ); +# endif + } + + bool operator!=( SwapchainCounterCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainCounterCreateInfoEXT; + void const * pNext = {}; + SurfaceCounterFlagsEXT surfaceCounters = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainCounterCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainCounterCreateInfoEXT; + }; + + // wrapper struct for struct VkSwapchainCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainCreateInfoKHR.html + struct SwapchainCreateInfoKHR + { + using NativeType = VkSwapchainCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR( SwapchainCreateFlagsKHR flags_ = {}, + SurfaceKHR surface_ = {}, + uint32_t minImageCount_ = {}, + Format imageFormat_ = Format::eUndefined, + ColorSpaceKHR imageColorSpace_ = ColorSpaceKHR::eSrgbNonlinear, + Extent2D imageExtent_ = {}, + uint32_t imageArrayLayers_ = {}, + ImageUsageFlags imageUsage_ = {}, + SharingMode imageSharingMode_ = SharingMode::eExclusive, + uint32_t queueFamilyIndexCount_ = {}, + uint32_t const * pQueueFamilyIndices_ = {}, + SurfaceTransformFlagBitsKHR preTransform_ = SurfaceTransformFlagBitsKHR::eIdentity, + CompositeAlphaFlagBitsKHR compositeAlpha_ = CompositeAlphaFlagBitsKHR::eOpaque, + PresentModeKHR presentMode_ = PresentModeKHR::eImmediate, + Bool32 clipped_ = {}, + SwapchainKHR oldSwapchain_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , surface{ surface_ } + , minImageCount{ minImageCount_ } + , imageFormat{ imageFormat_ } + , imageColorSpace{ imageColorSpace_ } + , imageExtent{ imageExtent_ } + , imageArrayLayers{ imageArrayLayers_ } + , imageUsage{ imageUsage_ } + , imageSharingMode{ imageSharingMode_ } + , queueFamilyIndexCount{ queueFamilyIndexCount_ } + , pQueueFamilyIndices{ pQueueFamilyIndices_ } + , preTransform{ preTransform_ } + , compositeAlpha{ compositeAlpha_ } + , presentMode{ presentMode_ } + , clipped{ clipped_ } + , oldSwapchain{ oldSwapchain_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SwapchainCreateInfoKHR( SwapchainCreateFlagsKHR flags_, + SurfaceKHR surface_, + uint32_t minImageCount_, + Format imageFormat_, + ColorSpaceKHR imageColorSpace_, + Extent2D imageExtent_, + uint32_t imageArrayLayers_, + ImageUsageFlags imageUsage_, + SharingMode imageSharingMode_, + ArrayProxyNoTemporaries const & queueFamilyIndices_, + SurfaceTransformFlagBitsKHR preTransform_ = SurfaceTransformFlagBitsKHR::eIdentity, + CompositeAlphaFlagBitsKHR compositeAlpha_ = CompositeAlphaFlagBitsKHR::eOpaque, + PresentModeKHR presentMode_ = PresentModeKHR::eImmediate, + Bool32 clipped_ = {}, + SwapchainKHR oldSwapchain_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , surface( surface_ ) + , minImageCount( minImageCount_ ) + , imageFormat( imageFormat_ ) + , imageColorSpace( imageColorSpace_ ) + , imageExtent( imageExtent_ ) + , imageArrayLayers( imageArrayLayers_ ) + , imageUsage( imageUsage_ ) + , imageSharingMode( imageSharingMode_ ) + , queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ) + , pQueueFamilyIndices( queueFamilyIndices_.data() ) + , preTransform( preTransform_ ) + , compositeAlpha( compositeAlpha_ ) + , presentMode( presentMode_ ) + , clipped( clipped_ ) + , oldSwapchain( oldSwapchain_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SwapchainCreateInfoKHR & operator=( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainCreateInfoKHR & operator=( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setFlags( SwapchainCreateFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setFlags( SwapchainCreateFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setSurface( SurfaceKHR surface_ ) & VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setSurface( SurfaceKHR surface_ ) && VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setMinImageCount( uint32_t minImageCount_ ) & VULKAN_HPP_NOEXCEPT + { + minImageCount = minImageCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setMinImageCount( uint32_t minImageCount_ ) && VULKAN_HPP_NOEXCEPT + { + minImageCount = minImageCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageFormat( Format imageFormat_ ) & VULKAN_HPP_NOEXCEPT + { + imageFormat = imageFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setImageFormat( Format imageFormat_ ) && VULKAN_HPP_NOEXCEPT + { + imageFormat = imageFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageColorSpace( ColorSpaceKHR imageColorSpace_ ) & VULKAN_HPP_NOEXCEPT + { + imageColorSpace = imageColorSpace_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setImageColorSpace( ColorSpaceKHR imageColorSpace_ ) && VULKAN_HPP_NOEXCEPT + { + imageColorSpace = imageColorSpace_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageExtent( Extent2D const & imageExtent_ ) & VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setImageExtent( Extent2D const & imageExtent_ ) && VULKAN_HPP_NOEXCEPT + { + imageExtent = imageExtent_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageArrayLayers( uint32_t imageArrayLayers_ ) & VULKAN_HPP_NOEXCEPT + { + imageArrayLayers = imageArrayLayers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setImageArrayLayers( uint32_t imageArrayLayers_ ) && VULKAN_HPP_NOEXCEPT + { + imageArrayLayers = imageArrayLayers_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageUsage( ImageUsageFlags imageUsage_ ) & VULKAN_HPP_NOEXCEPT + { + imageUsage = imageUsage_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setImageUsage( ImageUsageFlags imageUsage_ ) && VULKAN_HPP_NOEXCEPT + { + imageUsage = imageUsage_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setImageSharingMode( SharingMode imageSharingMode_ ) & VULKAN_HPP_NOEXCEPT + { + imageSharingMode = imageSharingMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setImageSharingMode( SharingMode imageSharingMode_ ) && VULKAN_HPP_NOEXCEPT + { + imageSharingMode = imageSharingMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) && VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = queueFamilyIndexCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPQueueFamilyIndices( uint32_t const * pQueueFamilyIndices_ ) & VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setPQueueFamilyIndices( uint32_t const * pQueueFamilyIndices_ ) && VULKAN_HPP_NOEXCEPT + { + pQueueFamilyIndices = pQueueFamilyIndices_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SwapchainCreateInfoKHR & setQueueFamilyIndices( ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT + { + queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); + pQueueFamilyIndices = queueFamilyIndices_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ ) & VULKAN_HPP_NOEXCEPT + { + preTransform = preTransform_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ ) && VULKAN_HPP_NOEXCEPT + { + preTransform = preTransform_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ ) & VULKAN_HPP_NOEXCEPT + { + compositeAlpha = compositeAlpha_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ ) && VULKAN_HPP_NOEXCEPT + { + compositeAlpha = compositeAlpha_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setPresentMode( PresentModeKHR presentMode_ ) & VULKAN_HPP_NOEXCEPT + { + presentMode = presentMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setPresentMode( PresentModeKHR presentMode_ ) && VULKAN_HPP_NOEXCEPT + { + presentMode = presentMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setClipped( Bool32 clipped_ ) & VULKAN_HPP_NOEXCEPT + { + clipped = clipped_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setClipped( Bool32 clipped_ ) && VULKAN_HPP_NOEXCEPT + { + clipped = clipped_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & setOldSwapchain( SwapchainKHR oldSwapchain_ ) & VULKAN_HPP_NOEXCEPT + { + oldSwapchain = oldSwapchain_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR && setOldSwapchain( SwapchainKHR oldSwapchain_ ) && VULKAN_HPP_NOEXCEPT + { + oldSwapchain = oldSwapchain_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSwapchainCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + surface, + minImageCount, + imageFormat, + imageColorSpace, + imageExtent, + imageArrayLayers, + imageUsage, + imageSharingMode, + queueFamilyIndexCount, + pQueueFamilyIndices, + preTransform, + compositeAlpha, + presentMode, + clipped, + oldSwapchain ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainCreateInfoKHR const & ) const = default; +#else + bool operator==( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( surface == rhs.surface ) && + ( minImageCount == rhs.minImageCount ) && ( imageFormat == rhs.imageFormat ) && ( imageColorSpace == rhs.imageColorSpace ) && + ( imageExtent == rhs.imageExtent ) && ( imageArrayLayers == rhs.imageArrayLayers ) && ( imageUsage == rhs.imageUsage ) && + ( imageSharingMode == rhs.imageSharingMode ) && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) && + ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ) && ( preTransform == rhs.preTransform ) && ( compositeAlpha == rhs.compositeAlpha ) && + ( presentMode == rhs.presentMode ) && ( clipped == rhs.clipped ) && ( oldSwapchain == rhs.oldSwapchain ); +# endif + } + + bool operator!=( SwapchainCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainCreateInfoKHR; + void const * pNext = {}; + SwapchainCreateFlagsKHR flags = {}; + SurfaceKHR surface = {}; + uint32_t minImageCount = {}; + Format imageFormat = Format::eUndefined; + ColorSpaceKHR imageColorSpace = ColorSpaceKHR::eSrgbNonlinear; + Extent2D imageExtent = {}; + uint32_t imageArrayLayers = {}; + ImageUsageFlags imageUsage = {}; + SharingMode imageSharingMode = SharingMode::eExclusive; + uint32_t queueFamilyIndexCount = {}; + uint32_t const * pQueueFamilyIndices = {}; + SurfaceTransformFlagBitsKHR preTransform = SurfaceTransformFlagBitsKHR::eIdentity; + CompositeAlphaFlagBitsKHR compositeAlpha = CompositeAlphaFlagBitsKHR::eOpaque; + PresentModeKHR presentMode = PresentModeKHR::eImmediate; + Bool32 clipped = {}; + SwapchainKHR oldSwapchain = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainCreateInfoKHR; + }; + + // wrapper struct for struct VkSwapchainDisplayNativeHdrCreateInfoAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainDisplayNativeHdrCreateInfoAMD.html + struct SwapchainDisplayNativeHdrCreateInfoAMD + { + using NativeType = VkSwapchainDisplayNativeHdrCreateInfoAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( Bool32 localDimmingEnable_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , localDimmingEnable{ localDimmingEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainDisplayNativeHdrCreateInfoAMD( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainDisplayNativeHdrCreateInfoAMD( *reinterpret_cast( &rhs ) ) + { + } + + SwapchainDisplayNativeHdrCreateInfoAMD & operator=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainDisplayNativeHdrCreateInfoAMD & operator=( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD & setLocalDimmingEnable( Bool32 localDimmingEnable_ ) & VULKAN_HPP_NOEXCEPT + { + localDimmingEnable = localDimmingEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD && setLocalDimmingEnable( Bool32 localDimmingEnable_ ) && VULKAN_HPP_NOEXCEPT + { + localDimmingEnable = localDimmingEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSwapchainDisplayNativeHdrCreateInfoAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainDisplayNativeHdrCreateInfoAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainDisplayNativeHdrCreateInfoAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainDisplayNativeHdrCreateInfoAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, localDimmingEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainDisplayNativeHdrCreateInfoAMD const & ) const = default; +#else + bool operator==( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( localDimmingEnable == rhs.localDimmingEnable ); +# endif + } + + bool operator!=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD; + void const * pNext = {}; + Bool32 localDimmingEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainDisplayNativeHdrCreateInfoAMD; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainDisplayNativeHdrCreateInfoAMD; + }; + + // wrapper struct for struct VkSwapchainLatencyCreateInfoNV, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainLatencyCreateInfoNV.html + struct SwapchainLatencyCreateInfoNV + { + using NativeType = VkSwapchainLatencyCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainLatencyCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainLatencyCreateInfoNV( Bool32 latencyModeEnable_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , latencyModeEnable{ latencyModeEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainLatencyCreateInfoNV( SwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainLatencyCreateInfoNV( VkSwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainLatencyCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + SwapchainLatencyCreateInfoNV & operator=( SwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainLatencyCreateInfoNV & operator=( VkSwapchainLatencyCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainLatencyCreateInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainLatencyCreateInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainLatencyCreateInfoNV & setLatencyModeEnable( Bool32 latencyModeEnable_ ) & VULKAN_HPP_NOEXCEPT + { + latencyModeEnable = latencyModeEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainLatencyCreateInfoNV && setLatencyModeEnable( Bool32 latencyModeEnable_ ) && VULKAN_HPP_NOEXCEPT + { + latencyModeEnable = latencyModeEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSwapchainLatencyCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainLatencyCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainLatencyCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainLatencyCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, latencyModeEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainLatencyCreateInfoNV const & ) const = default; +#else + bool operator==( SwapchainLatencyCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( latencyModeEnable == rhs.latencyModeEnable ); +# endif + } + + bool operator!=( SwapchainLatencyCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainLatencyCreateInfoNV; + void const * pNext = {}; + Bool32 latencyModeEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainLatencyCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainLatencyCreateInfoNV; + }; + + // wrapper struct for struct VkSwapchainPresentBarrierCreateInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainPresentBarrierCreateInfoNV.html + struct SwapchainPresentBarrierCreateInfoNV + { + using NativeType = VkSwapchainPresentBarrierCreateInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainPresentBarrierCreateInfoNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainPresentBarrierCreateInfoNV( Bool32 presentBarrierEnable_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentBarrierEnable{ presentBarrierEnable_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainPresentBarrierCreateInfoNV( SwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainPresentBarrierCreateInfoNV( VkSwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainPresentBarrierCreateInfoNV( *reinterpret_cast( &rhs ) ) + { + } + + SwapchainPresentBarrierCreateInfoNV & operator=( SwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainPresentBarrierCreateInfoNV & operator=( VkSwapchainPresentBarrierCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentBarrierCreateInfoNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentBarrierCreateInfoNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentBarrierCreateInfoNV & setPresentBarrierEnable( Bool32 presentBarrierEnable_ ) & VULKAN_HPP_NOEXCEPT + { + presentBarrierEnable = presentBarrierEnable_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentBarrierCreateInfoNV && setPresentBarrierEnable( Bool32 presentBarrierEnable_ ) && VULKAN_HPP_NOEXCEPT + { + presentBarrierEnable = presentBarrierEnable_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSwapchainPresentBarrierCreateInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainPresentBarrierCreateInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainPresentBarrierCreateInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainPresentBarrierCreateInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentBarrierEnable ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainPresentBarrierCreateInfoNV const & ) const = default; +#else + bool operator==( SwapchainPresentBarrierCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentBarrierEnable == rhs.presentBarrierEnable ); +# endif + } + + bool operator!=( SwapchainPresentBarrierCreateInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainPresentBarrierCreateInfoNV; + void * pNext = {}; + Bool32 presentBarrierEnable = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainPresentBarrierCreateInfoNV; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainPresentBarrierCreateInfoNV; + }; + + // wrapper struct for struct VkSwapchainPresentFenceInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainPresentFenceInfoKHR.html + struct SwapchainPresentFenceInfoKHR + { + using NativeType = VkSwapchainPresentFenceInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainPresentFenceInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SwapchainPresentFenceInfoKHR( uint32_t swapchainCount_ = {}, Fence const * pFences_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchainCount{ swapchainCount_ } + , pFences{ pFences_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainPresentFenceInfoKHR( SwapchainPresentFenceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainPresentFenceInfoKHR( VkSwapchainPresentFenceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainPresentFenceInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SwapchainPresentFenceInfoKHR( ArrayProxyNoTemporaries const & fences_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), swapchainCount( static_cast( fences_.size() ) ), pFences( fences_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SwapchainPresentFenceInfoKHR & operator=( SwapchainPresentFenceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainPresentFenceInfoKHR & operator=( VkSwapchainPresentFenceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) & VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoKHR && setSwapchainCount( uint32_t swapchainCount_ ) && VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoKHR & setPFences( Fence const * pFences_ ) & VULKAN_HPP_NOEXCEPT + { + pFences = pFences_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentFenceInfoKHR && setPFences( Fence const * pFences_ ) && VULKAN_HPP_NOEXCEPT + { + pFences = pFences_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SwapchainPresentFenceInfoKHR & setFences( ArrayProxyNoTemporaries const & fences_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( fences_.size() ); + pFences = fences_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSwapchainPresentFenceInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainPresentFenceInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainPresentFenceInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainPresentFenceInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pFences ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainPresentFenceInfoKHR const & ) const = default; +#else + bool operator==( SwapchainPresentFenceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pFences == rhs.pFences ); +# endif + } + + bool operator!=( SwapchainPresentFenceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainPresentFenceInfoKHR; + void const * pNext = {}; + uint32_t swapchainCount = {}; + Fence const * pFences = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainPresentFenceInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainPresentFenceInfoKHR; + }; + + using SwapchainPresentFenceInfoEXT = SwapchainPresentFenceInfoKHR; + + // wrapper struct for struct VkSwapchainPresentModeInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainPresentModeInfoKHR.html + struct SwapchainPresentModeInfoKHR + { + using NativeType = VkSwapchainPresentModeInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainPresentModeInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainPresentModeInfoKHR( uint32_t swapchainCount_ = {}, + PresentModeKHR const * pPresentModes_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , swapchainCount{ swapchainCount_ } + , pPresentModes{ pPresentModes_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainPresentModeInfoKHR( SwapchainPresentModeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainPresentModeInfoKHR( VkSwapchainPresentModeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainPresentModeInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SwapchainPresentModeInfoKHR( ArrayProxyNoTemporaries const & presentModes_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), swapchainCount( static_cast( presentModes_.size() ) ), pPresentModes( presentModes_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SwapchainPresentModeInfoKHR & operator=( SwapchainPresentModeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainPresentModeInfoKHR & operator=( VkSwapchainPresentModeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) & VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoKHR && setSwapchainCount( uint32_t swapchainCount_ ) && VULKAN_HPP_NOEXCEPT + { + swapchainCount = swapchainCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoKHR & setPPresentModes( PresentModeKHR const * pPresentModes_ ) & VULKAN_HPP_NOEXCEPT + { + pPresentModes = pPresentModes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModeInfoKHR && setPPresentModes( PresentModeKHR const * pPresentModes_ ) && VULKAN_HPP_NOEXCEPT + { + pPresentModes = pPresentModes_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SwapchainPresentModeInfoKHR & setPresentModes( ArrayProxyNoTemporaries const & presentModes_ ) VULKAN_HPP_NOEXCEPT + { + swapchainCount = static_cast( presentModes_.size() ); + pPresentModes = presentModes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSwapchainPresentModeInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainPresentModeInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainPresentModeInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainPresentModeInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, swapchainCount, pPresentModes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainPresentModeInfoKHR const & ) const = default; +#else + bool operator==( SwapchainPresentModeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( swapchainCount == rhs.swapchainCount ) && ( pPresentModes == rhs.pPresentModes ); +# endif + } + + bool operator!=( SwapchainPresentModeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainPresentModeInfoKHR; + void const * pNext = {}; + uint32_t swapchainCount = {}; + PresentModeKHR const * pPresentModes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainPresentModeInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainPresentModeInfoKHR; + }; + + using SwapchainPresentModeInfoEXT = SwapchainPresentModeInfoKHR; + + // wrapper struct for struct VkSwapchainPresentModesCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainPresentModesCreateInfoKHR.html + struct SwapchainPresentModesCreateInfoKHR + { + using NativeType = VkSwapchainPresentModesCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainPresentModesCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainPresentModesCreateInfoKHR( uint32_t presentModeCount_ = {}, + PresentModeKHR const * pPresentModes_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , presentModeCount{ presentModeCount_ } + , pPresentModes{ pPresentModes_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainPresentModesCreateInfoKHR( SwapchainPresentModesCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainPresentModesCreateInfoKHR( VkSwapchainPresentModesCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainPresentModesCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SwapchainPresentModesCreateInfoKHR( ArrayProxyNoTemporaries const & presentModes_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), presentModeCount( static_cast( presentModes_.size() ) ), pPresentModes( presentModes_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + SwapchainPresentModesCreateInfoKHR & operator=( SwapchainPresentModesCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainPresentModesCreateInfoKHR & operator=( VkSwapchainPresentModesCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoKHR & setPresentModeCount( uint32_t presentModeCount_ ) & VULKAN_HPP_NOEXCEPT + { + presentModeCount = presentModeCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoKHR && setPresentModeCount( uint32_t presentModeCount_ ) && VULKAN_HPP_NOEXCEPT + { + presentModeCount = presentModeCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoKHR & setPPresentModes( PresentModeKHR const * pPresentModes_ ) & VULKAN_HPP_NOEXCEPT + { + pPresentModes = pPresentModes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentModesCreateInfoKHR && setPPresentModes( PresentModeKHR const * pPresentModes_ ) && VULKAN_HPP_NOEXCEPT + { + pPresentModes = pPresentModes_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + SwapchainPresentModesCreateInfoKHR & setPresentModes( ArrayProxyNoTemporaries const & presentModes_ ) VULKAN_HPP_NOEXCEPT + { + presentModeCount = static_cast( presentModes_.size() ); + pPresentModes = presentModes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSwapchainPresentModesCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainPresentModesCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainPresentModesCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainPresentModesCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, presentModeCount, pPresentModes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainPresentModesCreateInfoKHR const & ) const = default; +#else + bool operator==( SwapchainPresentModesCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( presentModeCount == rhs.presentModeCount ) && ( pPresentModes == rhs.pPresentModes ); +# endif + } + + bool operator!=( SwapchainPresentModesCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainPresentModesCreateInfoKHR; + void const * pNext = {}; + uint32_t presentModeCount = {}; + PresentModeKHR const * pPresentModes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainPresentModesCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainPresentModesCreateInfoKHR; + }; + + using SwapchainPresentModesCreateInfoEXT = SwapchainPresentModesCreateInfoKHR; + + // wrapper struct for struct VkSwapchainPresentScalingCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainPresentScalingCreateInfoKHR.html + struct SwapchainPresentScalingCreateInfoKHR + { + using NativeType = VkSwapchainPresentScalingCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainPresentScalingCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainPresentScalingCreateInfoKHR( PresentScalingFlagsKHR scalingBehavior_ = {}, + PresentGravityFlagsKHR presentGravityX_ = {}, + PresentGravityFlagsKHR presentGravityY_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , scalingBehavior{ scalingBehavior_ } + , presentGravityX{ presentGravityX_ } + , presentGravityY{ presentGravityY_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainPresentScalingCreateInfoKHR( SwapchainPresentScalingCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainPresentScalingCreateInfoKHR( VkSwapchainPresentScalingCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainPresentScalingCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + SwapchainPresentScalingCreateInfoKHR & operator=( SwapchainPresentScalingCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainPresentScalingCreateInfoKHR & operator=( VkSwapchainPresentScalingCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoKHR & setScalingBehavior( PresentScalingFlagsKHR scalingBehavior_ ) & VULKAN_HPP_NOEXCEPT + { + scalingBehavior = scalingBehavior_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoKHR && setScalingBehavior( PresentScalingFlagsKHR scalingBehavior_ ) && VULKAN_HPP_NOEXCEPT + { + scalingBehavior = scalingBehavior_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoKHR & setPresentGravityX( PresentGravityFlagsKHR presentGravityX_ ) & VULKAN_HPP_NOEXCEPT + { + presentGravityX = presentGravityX_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoKHR && setPresentGravityX( PresentGravityFlagsKHR presentGravityX_ ) && VULKAN_HPP_NOEXCEPT + { + presentGravityX = presentGravityX_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoKHR & setPresentGravityY( PresentGravityFlagsKHR presentGravityY_ ) & VULKAN_HPP_NOEXCEPT + { + presentGravityY = presentGravityY_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 SwapchainPresentScalingCreateInfoKHR && setPresentGravityY( PresentGravityFlagsKHR presentGravityY_ ) && VULKAN_HPP_NOEXCEPT + { + presentGravityY = presentGravityY_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkSwapchainPresentScalingCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainPresentScalingCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainPresentScalingCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainPresentScalingCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, scalingBehavior, presentGravityX, presentGravityY ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainPresentScalingCreateInfoKHR const & ) const = default; +#else + bool operator==( SwapchainPresentScalingCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( scalingBehavior == rhs.scalingBehavior ) && ( presentGravityX == rhs.presentGravityX ) && + ( presentGravityY == rhs.presentGravityY ); +# endif + } + + bool operator!=( SwapchainPresentScalingCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainPresentScalingCreateInfoKHR; + void const * pNext = {}; + PresentScalingFlagsKHR scalingBehavior = {}; + PresentGravityFlagsKHR presentGravityX = {}; + PresentGravityFlagsKHR presentGravityY = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainPresentScalingCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainPresentScalingCreateInfoKHR; + }; + + using SwapchainPresentScalingCreateInfoEXT = SwapchainPresentScalingCreateInfoKHR; + + // wrapper struct for struct VkSwapchainTimeDomainPropertiesEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainTimeDomainPropertiesEXT.html + struct SwapchainTimeDomainPropertiesEXT + { + using NativeType = VkSwapchainTimeDomainPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainTimeDomainPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR SwapchainTimeDomainPropertiesEXT( uint32_t timeDomainCount_ = {}, + TimeDomainKHR * pTimeDomains_ = {}, + uint64_t * pTimeDomainIds_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , timeDomainCount{ timeDomainCount_ } + , pTimeDomains{ pTimeDomains_ } + , pTimeDomainIds{ pTimeDomainIds_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainTimeDomainPropertiesEXT( SwapchainTimeDomainPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainTimeDomainPropertiesEXT( VkSwapchainTimeDomainPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainTimeDomainPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + SwapchainTimeDomainPropertiesEXT & operator=( SwapchainTimeDomainPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainTimeDomainPropertiesEXT & operator=( VkSwapchainTimeDomainPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSwapchainTimeDomainPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainTimeDomainPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainTimeDomainPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainTimeDomainPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, timeDomainCount, pTimeDomains, pTimeDomainIds ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainTimeDomainPropertiesEXT const & ) const = default; +#else + bool operator==( SwapchainTimeDomainPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( timeDomainCount == rhs.timeDomainCount ) && ( pTimeDomains == rhs.pTimeDomains ) && + ( pTimeDomainIds == rhs.pTimeDomainIds ); +# endif + } + + bool operator!=( SwapchainTimeDomainPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainTimeDomainPropertiesEXT; + void * pNext = {}; + uint32_t timeDomainCount = {}; + TimeDomainKHR * pTimeDomains = {}; + uint64_t * pTimeDomainIds = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainTimeDomainPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainTimeDomainPropertiesEXT; + }; + + // wrapper struct for struct VkSwapchainTimingPropertiesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkSwapchainTimingPropertiesEXT.html + struct SwapchainTimingPropertiesEXT + { + using NativeType = VkSwapchainTimingPropertiesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainTimingPropertiesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + SwapchainTimingPropertiesEXT( uint64_t refreshDuration_ = {}, uint64_t refreshInterval_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , refreshDuration{ refreshDuration_ } + , refreshInterval{ refreshInterval_ } + { + } + + VULKAN_HPP_CONSTEXPR SwapchainTimingPropertiesEXT( SwapchainTimingPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + SwapchainTimingPropertiesEXT( VkSwapchainTimingPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : SwapchainTimingPropertiesEXT( *reinterpret_cast( &rhs ) ) + { + } + + SwapchainTimingPropertiesEXT & operator=( SwapchainTimingPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + SwapchainTimingPropertiesEXT & operator=( VkSwapchainTimingPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkSwapchainTimingPropertiesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainTimingPropertiesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkSwapchainTimingPropertiesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkSwapchainTimingPropertiesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, refreshDuration, refreshInterval ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( SwapchainTimingPropertiesEXT const & ) const = default; +#else + bool operator==( SwapchainTimingPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( refreshDuration == rhs.refreshDuration ) && ( refreshInterval == rhs.refreshInterval ); +# endif + } + + bool operator!=( SwapchainTimingPropertiesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eSwapchainTimingPropertiesEXT; + void * pNext = {}; + uint64_t refreshDuration = {}; + uint64_t refreshInterval = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = SwapchainTimingPropertiesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = SwapchainTimingPropertiesEXT; + }; + + // wrapper struct for struct VkTensorCaptureDescriptorDataInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorCaptureDescriptorDataInfoARM.html + struct TensorCaptureDescriptorDataInfoARM + { + using NativeType = VkTensorCaptureDescriptorDataInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTensorCaptureDescriptorDataInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TensorCaptureDescriptorDataInfoARM( TensorARM tensor_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensor{ tensor_ } + { + } + + VULKAN_HPP_CONSTEXPR TensorCaptureDescriptorDataInfoARM( TensorCaptureDescriptorDataInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TensorCaptureDescriptorDataInfoARM( VkTensorCaptureDescriptorDataInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : TensorCaptureDescriptorDataInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + TensorCaptureDescriptorDataInfoARM & operator=( TensorCaptureDescriptorDataInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TensorCaptureDescriptorDataInfoARM & operator=( VkTensorCaptureDescriptorDataInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TensorCaptureDescriptorDataInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCaptureDescriptorDataInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorCaptureDescriptorDataInfoARM & setTensor( TensorARM tensor_ ) & VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorCaptureDescriptorDataInfoARM && setTensor( TensorARM tensor_ ) && VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTensorCaptureDescriptorDataInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorCaptureDescriptorDataInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorCaptureDescriptorDataInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTensorCaptureDescriptorDataInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TensorCaptureDescriptorDataInfoARM const & ) const = default; +#else + bool operator==( TensorCaptureDescriptorDataInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensor == rhs.tensor ); +# endif + } + + bool operator!=( TensorCaptureDescriptorDataInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTensorCaptureDescriptorDataInfoARM; + void const * pNext = {}; + TensorARM tensor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TensorCaptureDescriptorDataInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = TensorCaptureDescriptorDataInfoARM; + }; + + // wrapper struct for struct VkTensorMemoryBarrierARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorMemoryBarrierARM.html + struct TensorMemoryBarrierARM + { + using NativeType = VkTensorMemoryBarrierARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTensorMemoryBarrierARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TensorMemoryBarrierARM( PipelineStageFlags2 srcStageMask_ = {}, + AccessFlags2 srcAccessMask_ = {}, + PipelineStageFlags2 dstStageMask_ = {}, + AccessFlags2 dstAccessMask_ = {}, + uint32_t srcQueueFamilyIndex_ = {}, + uint32_t dstQueueFamilyIndex_ = {}, + TensorARM tensor_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , srcStageMask{ srcStageMask_ } + , srcAccessMask{ srcAccessMask_ } + , dstStageMask{ dstStageMask_ } + , dstAccessMask{ dstAccessMask_ } + , srcQueueFamilyIndex{ srcQueueFamilyIndex_ } + , dstQueueFamilyIndex{ dstQueueFamilyIndex_ } + , tensor{ tensor_ } + { + } + + VULKAN_HPP_CONSTEXPR TensorMemoryBarrierARM( TensorMemoryBarrierARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TensorMemoryBarrierARM( VkTensorMemoryBarrierARM const & rhs ) VULKAN_HPP_NOEXCEPT + : TensorMemoryBarrierARM( *reinterpret_cast( &rhs ) ) + { + } + + TensorMemoryBarrierARM & operator=( TensorMemoryBarrierARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TensorMemoryBarrierARM & operator=( VkTensorMemoryBarrierARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM & setSrcStageMask( PipelineStageFlags2 srcStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM && setSrcStageMask( PipelineStageFlags2 srcStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcStageMask = srcStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM & setSrcAccessMask( AccessFlags2 srcAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM && setSrcAccessMask( AccessFlags2 srcAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + srcAccessMask = srcAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM & setDstStageMask( PipelineStageFlags2 dstStageMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM && setDstStageMask( PipelineStageFlags2 dstStageMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstStageMask = dstStageMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM & setDstAccessMask( AccessFlags2 dstAccessMask_ ) & VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM && setDstAccessMask( AccessFlags2 dstAccessMask_ ) && VULKAN_HPP_NOEXCEPT + { + dstAccessMask = dstAccessMask_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM && setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + srcQueueFamilyIndex = srcQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM && setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + dstQueueFamilyIndex = dstQueueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM & setTensor( TensorARM tensor_ ) & VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryBarrierARM && setTensor( TensorARM tensor_ ) && VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTensorMemoryBarrierARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorMemoryBarrierARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorMemoryBarrierARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTensorMemoryBarrierARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, srcStageMask, srcAccessMask, dstStageMask, dstAccessMask, srcQueueFamilyIndex, dstQueueFamilyIndex, tensor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TensorMemoryBarrierARM const & ) const = default; +#else + bool operator==( TensorMemoryBarrierARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( srcStageMask == rhs.srcStageMask ) && ( srcAccessMask == rhs.srcAccessMask ) && + ( dstStageMask == rhs.dstStageMask ) && ( dstAccessMask == rhs.dstAccessMask ) && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex ) && + ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex ) && ( tensor == rhs.tensor ); +# endif + } + + bool operator!=( TensorMemoryBarrierARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTensorMemoryBarrierARM; + void const * pNext = {}; + PipelineStageFlags2 srcStageMask = {}; + AccessFlags2 srcAccessMask = {}; + PipelineStageFlags2 dstStageMask = {}; + AccessFlags2 dstAccessMask = {}; + uint32_t srcQueueFamilyIndex = {}; + uint32_t dstQueueFamilyIndex = {}; + TensorARM tensor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TensorMemoryBarrierARM; + }; +#endif + + template <> + struct CppType + { + using Type = TensorMemoryBarrierARM; + }; + + // wrapper struct for struct VkTensorDependencyInfoARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorDependencyInfoARM.html + struct TensorDependencyInfoARM + { + using NativeType = VkTensorDependencyInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTensorDependencyInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TensorDependencyInfoARM( uint32_t tensorMemoryBarrierCount_ = {}, + TensorMemoryBarrierARM const * pTensorMemoryBarriers_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensorMemoryBarrierCount{ tensorMemoryBarrierCount_ } + , pTensorMemoryBarriers{ pTensorMemoryBarriers_ } + { + } + + VULKAN_HPP_CONSTEXPR TensorDependencyInfoARM( TensorDependencyInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TensorDependencyInfoARM( VkTensorDependencyInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : TensorDependencyInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + TensorDependencyInfoARM & operator=( TensorDependencyInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TensorDependencyInfoARM & operator=( VkTensorDependencyInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TensorDependencyInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorDependencyInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorDependencyInfoARM & setTensorMemoryBarrierCount( uint32_t tensorMemoryBarrierCount_ ) & VULKAN_HPP_NOEXCEPT + { + tensorMemoryBarrierCount = tensorMemoryBarrierCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorDependencyInfoARM && setTensorMemoryBarrierCount( uint32_t tensorMemoryBarrierCount_ ) && VULKAN_HPP_NOEXCEPT + { + tensorMemoryBarrierCount = tensorMemoryBarrierCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorDependencyInfoARM & setPTensorMemoryBarriers( TensorMemoryBarrierARM const * pTensorMemoryBarriers_ ) & VULKAN_HPP_NOEXCEPT + { + pTensorMemoryBarriers = pTensorMemoryBarriers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorDependencyInfoARM && setPTensorMemoryBarriers( TensorMemoryBarrierARM const * pTensorMemoryBarriers_ ) && VULKAN_HPP_NOEXCEPT + { + pTensorMemoryBarriers = pTensorMemoryBarriers_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTensorDependencyInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorDependencyInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorDependencyInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTensorDependencyInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensorMemoryBarrierCount, pTensorMemoryBarriers ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TensorDependencyInfoARM const & ) const = default; +#else + bool operator==( TensorDependencyInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensorMemoryBarrierCount == rhs.tensorMemoryBarrierCount ) && + ( pTensorMemoryBarriers == rhs.pTensorMemoryBarriers ); +# endif + } + + bool operator!=( TensorDependencyInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTensorDependencyInfoARM; + void const * pNext = {}; + uint32_t tensorMemoryBarrierCount = {}; + TensorMemoryBarrierARM const * pTensorMemoryBarriers = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TensorDependencyInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = TensorDependencyInfoARM; + }; + + // wrapper struct for struct VkTensorFormatPropertiesARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorFormatPropertiesARM.html + struct TensorFormatPropertiesARM + { + using NativeType = VkTensorFormatPropertiesARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTensorFormatPropertiesARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TensorFormatPropertiesARM( FormatFeatureFlags2 optimalTilingTensorFeatures_ = {}, + FormatFeatureFlags2 linearTilingTensorFeatures_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , optimalTilingTensorFeatures{ optimalTilingTensorFeatures_ } + , linearTilingTensorFeatures{ linearTilingTensorFeatures_ } + { + } + + VULKAN_HPP_CONSTEXPR TensorFormatPropertiesARM( TensorFormatPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TensorFormatPropertiesARM( VkTensorFormatPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + : TensorFormatPropertiesARM( *reinterpret_cast( &rhs ) ) + { + } + + TensorFormatPropertiesARM & operator=( TensorFormatPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TensorFormatPropertiesARM & operator=( VkTensorFormatPropertiesARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkTensorFormatPropertiesARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorFormatPropertiesARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorFormatPropertiesARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTensorFormatPropertiesARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, optimalTilingTensorFeatures, linearTilingTensorFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TensorFormatPropertiesARM const & ) const = default; +#else + bool operator==( TensorFormatPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( optimalTilingTensorFeatures == rhs.optimalTilingTensorFeatures ) && + ( linearTilingTensorFeatures == rhs.linearTilingTensorFeatures ); +# endif + } + + bool operator!=( TensorFormatPropertiesARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTensorFormatPropertiesARM; + void * pNext = {}; + FormatFeatureFlags2 optimalTilingTensorFeatures = {}; + FormatFeatureFlags2 linearTilingTensorFeatures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TensorFormatPropertiesARM; + }; +#endif + + template <> + struct CppType + { + using Type = TensorFormatPropertiesARM; + }; + + // wrapper struct for struct VkTensorMemoryRequirementsInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorMemoryRequirementsInfoARM.html + struct TensorMemoryRequirementsInfoARM + { + using NativeType = VkTensorMemoryRequirementsInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTensorMemoryRequirementsInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TensorMemoryRequirementsInfoARM( TensorARM tensor_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensor{ tensor_ } + { + } + + VULKAN_HPP_CONSTEXPR TensorMemoryRequirementsInfoARM( TensorMemoryRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TensorMemoryRequirementsInfoARM( VkTensorMemoryRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : TensorMemoryRequirementsInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + TensorMemoryRequirementsInfoARM & operator=( TensorMemoryRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TensorMemoryRequirementsInfoARM & operator=( VkTensorMemoryRequirementsInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TensorMemoryRequirementsInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryRequirementsInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryRequirementsInfoARM & setTensor( TensorARM tensor_ ) & VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorMemoryRequirementsInfoARM && setTensor( TensorARM tensor_ ) && VULKAN_HPP_NOEXCEPT + { + tensor = tensor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTensorMemoryRequirementsInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorMemoryRequirementsInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorMemoryRequirementsInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTensorMemoryRequirementsInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TensorMemoryRequirementsInfoARM const & ) const = default; +#else + bool operator==( TensorMemoryRequirementsInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensor == rhs.tensor ); +# endif + } + + bool operator!=( TensorMemoryRequirementsInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTensorMemoryRequirementsInfoARM; + void const * pNext = {}; + TensorARM tensor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TensorMemoryRequirementsInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = TensorMemoryRequirementsInfoARM; + }; + + // wrapper struct for struct VkTensorViewCaptureDescriptorDataInfoARM, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkTensorViewCaptureDescriptorDataInfoARM.html + struct TensorViewCaptureDescriptorDataInfoARM + { + using NativeType = VkTensorViewCaptureDescriptorDataInfoARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTensorViewCaptureDescriptorDataInfoARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TensorViewCaptureDescriptorDataInfoARM( TensorViewARM tensorView_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensorView{ tensorView_ } + { + } + + VULKAN_HPP_CONSTEXPR TensorViewCaptureDescriptorDataInfoARM( TensorViewCaptureDescriptorDataInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TensorViewCaptureDescriptorDataInfoARM( VkTensorViewCaptureDescriptorDataInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + : TensorViewCaptureDescriptorDataInfoARM( *reinterpret_cast( &rhs ) ) + { + } + + TensorViewCaptureDescriptorDataInfoARM & operator=( TensorViewCaptureDescriptorDataInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TensorViewCaptureDescriptorDataInfoARM & operator=( VkTensorViewCaptureDescriptorDataInfoARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TensorViewCaptureDescriptorDataInfoARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorViewCaptureDescriptorDataInfoARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TensorViewCaptureDescriptorDataInfoARM & setTensorView( TensorViewARM tensorView_ ) & VULKAN_HPP_NOEXCEPT + { + tensorView = tensorView_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TensorViewCaptureDescriptorDataInfoARM && setTensorView( TensorViewARM tensorView_ ) && VULKAN_HPP_NOEXCEPT + { + tensorView = tensorView_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTensorViewCaptureDescriptorDataInfoARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorViewCaptureDescriptorDataInfoARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTensorViewCaptureDescriptorDataInfoARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTensorViewCaptureDescriptorDataInfoARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensorView ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TensorViewCaptureDescriptorDataInfoARM const & ) const = default; +#else + bool operator==( TensorViewCaptureDescriptorDataInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensorView == rhs.tensorView ); +# endif + } + + bool operator!=( TensorViewCaptureDescriptorDataInfoARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTensorViewCaptureDescriptorDataInfoARM; + void const * pNext = {}; + TensorViewARM tensorView = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TensorViewCaptureDescriptorDataInfoARM; + }; +#endif + + template <> + struct CppType + { + using Type = TensorViewCaptureDescriptorDataInfoARM; + }; + + // wrapper struct for struct VkTextureLODGatherFormatPropertiesAMD, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkTextureLODGatherFormatPropertiesAMD.html + struct TextureLODGatherFormatPropertiesAMD + { + using NativeType = VkTextureLODGatherFormatPropertiesAMD; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTextureLodGatherFormatPropertiesAMD; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( Bool32 supportsTextureGatherLODBiasAMD_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , supportsTextureGatherLODBiasAMD{ supportsTextureGatherLODBiasAMD_ } + { + } + + VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TextureLODGatherFormatPropertiesAMD( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + : TextureLODGatherFormatPropertiesAMD( *reinterpret_cast( &rhs ) ) + { + } + + TextureLODGatherFormatPropertiesAMD & operator=( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TextureLODGatherFormatPropertiesAMD & operator=( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkTextureLODGatherFormatPropertiesAMD const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTextureLODGatherFormatPropertiesAMD &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTextureLODGatherFormatPropertiesAMD const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTextureLODGatherFormatPropertiesAMD *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, supportsTextureGatherLODBiasAMD ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TextureLODGatherFormatPropertiesAMD const & ) const = default; +#else + bool operator==( TextureLODGatherFormatPropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD ); +# endif + } + + bool operator!=( TextureLODGatherFormatPropertiesAMD const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTextureLodGatherFormatPropertiesAMD; + void * pNext = {}; + Bool32 supportsTextureGatherLODBiasAMD = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TextureLODGatherFormatPropertiesAMD; + }; +#endif + + template <> + struct CppType + { + using Type = TextureLODGatherFormatPropertiesAMD; + }; + + // wrapper struct for struct VkTileMemoryBindInfoQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTileMemoryBindInfoQCOM.html + struct TileMemoryBindInfoQCOM + { + using NativeType = VkTileMemoryBindInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTileMemoryBindInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TileMemoryBindInfoQCOM( DeviceMemory memory_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memory{ memory_ } + { + } + + VULKAN_HPP_CONSTEXPR TileMemoryBindInfoQCOM( TileMemoryBindInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TileMemoryBindInfoQCOM( VkTileMemoryBindInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : TileMemoryBindInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + TileMemoryBindInfoQCOM & operator=( TileMemoryBindInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TileMemoryBindInfoQCOM & operator=( VkTileMemoryBindInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TileMemoryBindInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TileMemoryBindInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TileMemoryBindInfoQCOM & setMemory( DeviceMemory memory_ ) & VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TileMemoryBindInfoQCOM && setMemory( DeviceMemory memory_ ) && VULKAN_HPP_NOEXCEPT + { + memory = memory_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTileMemoryBindInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTileMemoryBindInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTileMemoryBindInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTileMemoryBindInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memory ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TileMemoryBindInfoQCOM const & ) const = default; +#else + bool operator==( TileMemoryBindInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memory == rhs.memory ); +# endif + } + + bool operator!=( TileMemoryBindInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTileMemoryBindInfoQCOM; + void const * pNext = {}; + DeviceMemory memory = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TileMemoryBindInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = TileMemoryBindInfoQCOM; + }; + + // wrapper struct for struct VkTileMemoryRequirementsQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTileMemoryRequirementsQCOM.html + struct TileMemoryRequirementsQCOM + { + using NativeType = VkTileMemoryRequirementsQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTileMemoryRequirementsQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TileMemoryRequirementsQCOM( DeviceSize size_ = {}, DeviceSize alignment_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , size{ size_ } + , alignment{ alignment_ } + { + } + + VULKAN_HPP_CONSTEXPR TileMemoryRequirementsQCOM( TileMemoryRequirementsQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TileMemoryRequirementsQCOM( VkTileMemoryRequirementsQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : TileMemoryRequirementsQCOM( *reinterpret_cast( &rhs ) ) + { + } + + TileMemoryRequirementsQCOM & operator=( TileMemoryRequirementsQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TileMemoryRequirementsQCOM & operator=( VkTileMemoryRequirementsQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TileMemoryRequirementsQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TileMemoryRequirementsQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TileMemoryRequirementsQCOM & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TileMemoryRequirementsQCOM && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TileMemoryRequirementsQCOM & setAlignment( DeviceSize alignment_ ) & VULKAN_HPP_NOEXCEPT + { + alignment = alignment_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TileMemoryRequirementsQCOM && setAlignment( DeviceSize alignment_ ) && VULKAN_HPP_NOEXCEPT + { + alignment = alignment_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTileMemoryRequirementsQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTileMemoryRequirementsQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTileMemoryRequirementsQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTileMemoryRequirementsQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, size, alignment ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TileMemoryRequirementsQCOM const & ) const = default; +#else + bool operator==( TileMemoryRequirementsQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( size == rhs.size ) && ( alignment == rhs.alignment ); +# endif + } + + bool operator!=( TileMemoryRequirementsQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTileMemoryRequirementsQCOM; + void * pNext = {}; + DeviceSize size = {}; + DeviceSize alignment = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TileMemoryRequirementsQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = TileMemoryRequirementsQCOM; + }; + + // wrapper struct for struct VkTileMemorySizeInfoQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTileMemorySizeInfoQCOM.html + struct TileMemorySizeInfoQCOM + { + using NativeType = VkTileMemorySizeInfoQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTileMemorySizeInfoQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TileMemorySizeInfoQCOM( DeviceSize size_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , size{ size_ } + { + } + + VULKAN_HPP_CONSTEXPR TileMemorySizeInfoQCOM( TileMemorySizeInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TileMemorySizeInfoQCOM( VkTileMemorySizeInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + : TileMemorySizeInfoQCOM( *reinterpret_cast( &rhs ) ) + { + } + + TileMemorySizeInfoQCOM & operator=( TileMemorySizeInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TileMemorySizeInfoQCOM & operator=( VkTileMemorySizeInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TileMemorySizeInfoQCOM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TileMemorySizeInfoQCOM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TileMemorySizeInfoQCOM & setSize( DeviceSize size_ ) & VULKAN_HPP_NOEXCEPT + { + size = size_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TileMemorySizeInfoQCOM && setSize( DeviceSize size_ ) && VULKAN_HPP_NOEXCEPT + { + size = size_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTileMemorySizeInfoQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTileMemorySizeInfoQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTileMemorySizeInfoQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTileMemorySizeInfoQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, size ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TileMemorySizeInfoQCOM const & ) const = default; +#else + bool operator==( TileMemorySizeInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( size == rhs.size ); +# endif + } + + bool operator!=( TileMemorySizeInfoQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTileMemorySizeInfoQCOM; + void const * pNext = {}; + DeviceSize size = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TileMemorySizeInfoQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = TileMemorySizeInfoQCOM; + }; + + // wrapper struct for struct VkTilePropertiesQCOM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTilePropertiesQCOM.html + struct TilePropertiesQCOM + { + using NativeType = VkTilePropertiesQCOM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTilePropertiesQCOM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + TilePropertiesQCOM( Extent3D tileSize_ = {}, Extent2D apronSize_ = {}, Offset2D origin_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tileSize{ tileSize_ } + , apronSize{ apronSize_ } + , origin{ origin_ } + { + } + + VULKAN_HPP_CONSTEXPR TilePropertiesQCOM( TilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TilePropertiesQCOM( VkTilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT : TilePropertiesQCOM( *reinterpret_cast( &rhs ) ) {} + + TilePropertiesQCOM & operator=( TilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TilePropertiesQCOM & operator=( VkTilePropertiesQCOM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setTileSize( Extent3D const & tileSize_ ) & VULKAN_HPP_NOEXCEPT + { + tileSize = tileSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM && setTileSize( Extent3D const & tileSize_ ) && VULKAN_HPP_NOEXCEPT + { + tileSize = tileSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setApronSize( Extent2D const & apronSize_ ) & VULKAN_HPP_NOEXCEPT + { + apronSize = apronSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM && setApronSize( Extent2D const & apronSize_ ) && VULKAN_HPP_NOEXCEPT + { + apronSize = apronSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM & setOrigin( Offset2D const & origin_ ) & VULKAN_HPP_NOEXCEPT + { + origin = origin_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TilePropertiesQCOM && setOrigin( Offset2D const & origin_ ) && VULKAN_HPP_NOEXCEPT + { + origin = origin_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTilePropertiesQCOM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTilePropertiesQCOM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTilePropertiesQCOM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTilePropertiesQCOM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tileSize, apronSize, origin ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TilePropertiesQCOM const & ) const = default; +#else + bool operator==( TilePropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tileSize == rhs.tileSize ) && ( apronSize == rhs.apronSize ) && ( origin == rhs.origin ); +# endif + } + + bool operator!=( TilePropertiesQCOM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTilePropertiesQCOM; + void * pNext = {}; + Extent3D tileSize = {}; + Extent2D apronSize = {}; + Offset2D origin = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TilePropertiesQCOM; + }; +#endif + + template <> + struct CppType + { + using Type = TilePropertiesQCOM; + }; + + // wrapper struct for struct VkTimelineSemaphoreSubmitInfo, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTimelineSemaphoreSubmitInfo.html + struct TimelineSemaphoreSubmitInfo + { + using NativeType = VkTimelineSemaphoreSubmitInfo; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTimelineSemaphoreSubmitInfo; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TimelineSemaphoreSubmitInfo( uint32_t waitSemaphoreValueCount_ = {}, + uint64_t const * pWaitSemaphoreValues_ = {}, + uint32_t signalSemaphoreValueCount_ = {}, + uint64_t const * pSignalSemaphoreValues_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , waitSemaphoreValueCount{ waitSemaphoreValueCount_ } + , pWaitSemaphoreValues{ pWaitSemaphoreValues_ } + , signalSemaphoreValueCount{ signalSemaphoreValueCount_ } + , pSignalSemaphoreValues{ pSignalSemaphoreValues_ } + { + } + + VULKAN_HPP_CONSTEXPR TimelineSemaphoreSubmitInfo( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TimelineSemaphoreSubmitInfo( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + : TimelineSemaphoreSubmitInfo( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TimelineSemaphoreSubmitInfo( ArrayProxyNoTemporaries const & waitSemaphoreValues_, + ArrayProxyNoTemporaries const & signalSemaphoreValues_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , waitSemaphoreValueCount( static_cast( waitSemaphoreValues_.size() ) ) + , pWaitSemaphoreValues( waitSemaphoreValues_.data() ) + , signalSemaphoreValueCount( static_cast( signalSemaphoreValues_.size() ) ) + , pSignalSemaphoreValues( signalSemaphoreValues_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + TimelineSemaphoreSubmitInfo & operator=( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TimelineSemaphoreSubmitInfo & operator=( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setWaitSemaphoreValueCount( uint32_t waitSemaphoreValueCount_ ) & VULKAN_HPP_NOEXCEPT + { + waitSemaphoreValueCount = waitSemaphoreValueCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo && setWaitSemaphoreValueCount( uint32_t waitSemaphoreValueCount_ ) && VULKAN_HPP_NOEXCEPT + { + waitSemaphoreValueCount = waitSemaphoreValueCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPWaitSemaphoreValues( uint64_t const * pWaitSemaphoreValues_ ) & VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreValues = pWaitSemaphoreValues_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo && setPWaitSemaphoreValues( uint64_t const * pWaitSemaphoreValues_ ) && VULKAN_HPP_NOEXCEPT + { + pWaitSemaphoreValues = pWaitSemaphoreValues_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TimelineSemaphoreSubmitInfo & setWaitSemaphoreValues( ArrayProxyNoTemporaries const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + waitSemaphoreValueCount = static_cast( waitSemaphoreValues_.size() ); + pWaitSemaphoreValues = waitSemaphoreValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setSignalSemaphoreValueCount( uint32_t signalSemaphoreValueCount_ ) & VULKAN_HPP_NOEXCEPT + { + signalSemaphoreValueCount = signalSemaphoreValueCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo && setSignalSemaphoreValueCount( uint32_t signalSemaphoreValueCount_ ) && VULKAN_HPP_NOEXCEPT + { + signalSemaphoreValueCount = signalSemaphoreValueCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & setPSignalSemaphoreValues( uint64_t const * pSignalSemaphoreValues_ ) & VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreValues = pSignalSemaphoreValues_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo && setPSignalSemaphoreValues( uint64_t const * pSignalSemaphoreValues_ ) && VULKAN_HPP_NOEXCEPT + { + pSignalSemaphoreValues = pSignalSemaphoreValues_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + TimelineSemaphoreSubmitInfo & setSignalSemaphoreValues( ArrayProxyNoTemporaries const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT + { + signalSemaphoreValueCount = static_cast( signalSemaphoreValues_.size() ); + pSignalSemaphoreValues = signalSemaphoreValues_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTimelineSemaphoreSubmitInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTimelineSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTimelineSemaphoreSubmitInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTimelineSemaphoreSubmitInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, waitSemaphoreValueCount, pWaitSemaphoreValues, signalSemaphoreValueCount, pSignalSemaphoreValues ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TimelineSemaphoreSubmitInfo const & ) const = default; +#else + bool operator==( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( waitSemaphoreValueCount == rhs.waitSemaphoreValueCount ) && + ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) && ( signalSemaphoreValueCount == rhs.signalSemaphoreValueCount ) && + ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues ); +# endif + } + + bool operator!=( TimelineSemaphoreSubmitInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eTimelineSemaphoreSubmitInfo; + void const * pNext = {}; + uint32_t waitSemaphoreValueCount = {}; + uint64_t const * pWaitSemaphoreValues = {}; + uint32_t signalSemaphoreValueCount = {}; + uint64_t const * pSignalSemaphoreValues = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TimelineSemaphoreSubmitInfo; + }; +#endif + + template <> + struct CppType + { + using Type = TimelineSemaphoreSubmitInfo; + }; + + using TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo; + + // wrapper struct for struct VkTraceRaysIndirectCommand2KHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommand2KHR.html + struct TraceRaysIndirectCommand2KHR + { + using NativeType = VkTraceRaysIndirectCommand2KHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommand2KHR( DeviceAddress raygenShaderRecordAddress_ = {}, + DeviceSize raygenShaderRecordSize_ = {}, + DeviceAddress missShaderBindingTableAddress_ = {}, + DeviceSize missShaderBindingTableSize_ = {}, + DeviceSize missShaderBindingTableStride_ = {}, + DeviceAddress hitShaderBindingTableAddress_ = {}, + DeviceSize hitShaderBindingTableSize_ = {}, + DeviceSize hitShaderBindingTableStride_ = {}, + DeviceAddress callableShaderBindingTableAddress_ = {}, + DeviceSize callableShaderBindingTableSize_ = {}, + DeviceSize callableShaderBindingTableStride_ = {}, + uint32_t width_ = {}, + uint32_t height_ = {}, + uint32_t depth_ = {} ) VULKAN_HPP_NOEXCEPT + : raygenShaderRecordAddress{ raygenShaderRecordAddress_ } + , raygenShaderRecordSize{ raygenShaderRecordSize_ } + , missShaderBindingTableAddress{ missShaderBindingTableAddress_ } + , missShaderBindingTableSize{ missShaderBindingTableSize_ } + , missShaderBindingTableStride{ missShaderBindingTableStride_ } + , hitShaderBindingTableAddress{ hitShaderBindingTableAddress_ } + , hitShaderBindingTableSize{ hitShaderBindingTableSize_ } + , hitShaderBindingTableStride{ hitShaderBindingTableStride_ } + , callableShaderBindingTableAddress{ callableShaderBindingTableAddress_ } + , callableShaderBindingTableSize{ callableShaderBindingTableSize_ } + , callableShaderBindingTableStride{ callableShaderBindingTableStride_ } + , width{ width_ } + , height{ height_ } + , depth{ depth_ } + { + } + + VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommand2KHR( TraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TraceRaysIndirectCommand2KHR( VkTraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + : TraceRaysIndirectCommand2KHR( *reinterpret_cast( &rhs ) ) + { + } + + TraceRaysIndirectCommand2KHR & operator=( TraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TraceRaysIndirectCommand2KHR & operator=( VkTraceRaysIndirectCommand2KHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setRaygenShaderRecordAddress( DeviceAddress raygenShaderRecordAddress_ ) & VULKAN_HPP_NOEXCEPT + { + raygenShaderRecordAddress = raygenShaderRecordAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setRaygenShaderRecordAddress( DeviceAddress raygenShaderRecordAddress_ ) && VULKAN_HPP_NOEXCEPT + { + raygenShaderRecordAddress = raygenShaderRecordAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setRaygenShaderRecordSize( DeviceSize raygenShaderRecordSize_ ) & VULKAN_HPP_NOEXCEPT + { + raygenShaderRecordSize = raygenShaderRecordSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setRaygenShaderRecordSize( DeviceSize raygenShaderRecordSize_ ) && VULKAN_HPP_NOEXCEPT + { + raygenShaderRecordSize = raygenShaderRecordSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setMissShaderBindingTableAddress( DeviceAddress missShaderBindingTableAddress_ ) & + VULKAN_HPP_NOEXCEPT + { + missShaderBindingTableAddress = missShaderBindingTableAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setMissShaderBindingTableAddress( DeviceAddress missShaderBindingTableAddress_ ) && + VULKAN_HPP_NOEXCEPT + { + missShaderBindingTableAddress = missShaderBindingTableAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setMissShaderBindingTableSize( DeviceSize missShaderBindingTableSize_ ) & VULKAN_HPP_NOEXCEPT + { + missShaderBindingTableSize = missShaderBindingTableSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setMissShaderBindingTableSize( DeviceSize missShaderBindingTableSize_ ) && VULKAN_HPP_NOEXCEPT + { + missShaderBindingTableSize = missShaderBindingTableSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setMissShaderBindingTableStride( DeviceSize missShaderBindingTableStride_ ) & VULKAN_HPP_NOEXCEPT + { + missShaderBindingTableStride = missShaderBindingTableStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setMissShaderBindingTableStride( DeviceSize missShaderBindingTableStride_ ) && VULKAN_HPP_NOEXCEPT + { + missShaderBindingTableStride = missShaderBindingTableStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setHitShaderBindingTableAddress( DeviceAddress hitShaderBindingTableAddress_ ) & VULKAN_HPP_NOEXCEPT + { + hitShaderBindingTableAddress = hitShaderBindingTableAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setHitShaderBindingTableAddress( DeviceAddress hitShaderBindingTableAddress_ ) && + VULKAN_HPP_NOEXCEPT + { + hitShaderBindingTableAddress = hitShaderBindingTableAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setHitShaderBindingTableSize( DeviceSize hitShaderBindingTableSize_ ) & VULKAN_HPP_NOEXCEPT + { + hitShaderBindingTableSize = hitShaderBindingTableSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setHitShaderBindingTableSize( DeviceSize hitShaderBindingTableSize_ ) && VULKAN_HPP_NOEXCEPT + { + hitShaderBindingTableSize = hitShaderBindingTableSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setHitShaderBindingTableStride( DeviceSize hitShaderBindingTableStride_ ) & VULKAN_HPP_NOEXCEPT + { + hitShaderBindingTableStride = hitShaderBindingTableStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setHitShaderBindingTableStride( DeviceSize hitShaderBindingTableStride_ ) && VULKAN_HPP_NOEXCEPT + { + hitShaderBindingTableStride = hitShaderBindingTableStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setCallableShaderBindingTableAddress( DeviceAddress callableShaderBindingTableAddress_ ) & + VULKAN_HPP_NOEXCEPT + { + callableShaderBindingTableAddress = callableShaderBindingTableAddress_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setCallableShaderBindingTableAddress( DeviceAddress callableShaderBindingTableAddress_ ) && + VULKAN_HPP_NOEXCEPT + { + callableShaderBindingTableAddress = callableShaderBindingTableAddress_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setCallableShaderBindingTableSize( DeviceSize callableShaderBindingTableSize_ ) & VULKAN_HPP_NOEXCEPT + { + callableShaderBindingTableSize = callableShaderBindingTableSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setCallableShaderBindingTableSize( DeviceSize callableShaderBindingTableSize_ ) && + VULKAN_HPP_NOEXCEPT + { + callableShaderBindingTableSize = callableShaderBindingTableSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setCallableShaderBindingTableStride( DeviceSize callableShaderBindingTableStride_ ) & + VULKAN_HPP_NOEXCEPT + { + callableShaderBindingTableStride = callableShaderBindingTableStride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setCallableShaderBindingTableStride( DeviceSize callableShaderBindingTableStride_ ) && + VULKAN_HPP_NOEXCEPT + { + callableShaderBindingTableStride = callableShaderBindingTableStride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setWidth( uint32_t width_ ) & VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setWidth( uint32_t width_ ) && VULKAN_HPP_NOEXCEPT + { + width = width_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setHeight( uint32_t height_ ) & VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setHeight( uint32_t height_ ) && VULKAN_HPP_NOEXCEPT + { + height = height_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR & setDepth( uint32_t depth_ ) & VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommand2KHR && setDepth( uint32_t depth_ ) && VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTraceRaysIndirectCommand2KHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTraceRaysIndirectCommand2KHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTraceRaysIndirectCommand2KHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTraceRaysIndirectCommand2KHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( raygenShaderRecordAddress, + raygenShaderRecordSize, + missShaderBindingTableAddress, + missShaderBindingTableSize, + missShaderBindingTableStride, + hitShaderBindingTableAddress, + hitShaderBindingTableSize, + hitShaderBindingTableStride, + callableShaderBindingTableAddress, + callableShaderBindingTableSize, + callableShaderBindingTableStride, + width, + height, + depth ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TraceRaysIndirectCommand2KHR const & ) const = default; +#else + bool operator==( TraceRaysIndirectCommand2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( raygenShaderRecordAddress == rhs.raygenShaderRecordAddress ) && ( raygenShaderRecordSize == rhs.raygenShaderRecordSize ) && + ( missShaderBindingTableAddress == rhs.missShaderBindingTableAddress ) && ( missShaderBindingTableSize == rhs.missShaderBindingTableSize ) && + ( missShaderBindingTableStride == rhs.missShaderBindingTableStride ) && ( hitShaderBindingTableAddress == rhs.hitShaderBindingTableAddress ) && + ( hitShaderBindingTableSize == rhs.hitShaderBindingTableSize ) && ( hitShaderBindingTableStride == rhs.hitShaderBindingTableStride ) && + ( callableShaderBindingTableAddress == rhs.callableShaderBindingTableAddress ) && + ( callableShaderBindingTableSize == rhs.callableShaderBindingTableSize ) && + ( callableShaderBindingTableStride == rhs.callableShaderBindingTableStride ) && ( width == rhs.width ) && ( height == rhs.height ) && + ( depth == rhs.depth ); +# endif + } + + bool operator!=( TraceRaysIndirectCommand2KHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + DeviceAddress raygenShaderRecordAddress = {}; + DeviceSize raygenShaderRecordSize = {}; + DeviceAddress missShaderBindingTableAddress = {}; + DeviceSize missShaderBindingTableSize = {}; + DeviceSize missShaderBindingTableStride = {}; + DeviceAddress hitShaderBindingTableAddress = {}; + DeviceSize hitShaderBindingTableSize = {}; + DeviceSize hitShaderBindingTableStride = {}; + DeviceAddress callableShaderBindingTableAddress = {}; + DeviceSize callableShaderBindingTableSize = {}; + DeviceSize callableShaderBindingTableStride = {}; + uint32_t width = {}; + uint32_t height = {}; + uint32_t depth = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TraceRaysIndirectCommand2KHR; + }; +#endif + + // wrapper struct for struct VkTraceRaysIndirectCommandKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkTraceRaysIndirectCommandKHR.html + struct TraceRaysIndirectCommandKHR + { + using NativeType = VkTraceRaysIndirectCommandKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommandKHR( uint32_t width_ = {}, uint32_t height_ = {}, uint32_t depth_ = {} ) VULKAN_HPP_NOEXCEPT + : width{ width_ } + , height{ height_ } + , depth{ depth_ } + { + } + + VULKAN_HPP_CONSTEXPR TraceRaysIndirectCommandKHR( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + TraceRaysIndirectCommandKHR( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : TraceRaysIndirectCommandKHR( *reinterpret_cast( &rhs ) ) + { + } + + explicit TraceRaysIndirectCommandKHR( Extent2D const & extent2D, uint32_t depth_ = {} ) + : width( extent2D.width ), height( extent2D.height ), depth( depth_ ) + { + } + + TraceRaysIndirectCommandKHR & operator=( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + TraceRaysIndirectCommandKHR & operator=( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setWidth( uint32_t width_ ) & VULKAN_HPP_NOEXCEPT + { + width = width_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR && setWidth( uint32_t width_ ) && VULKAN_HPP_NOEXCEPT + { + width = width_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setHeight( uint32_t height_ ) & VULKAN_HPP_NOEXCEPT + { + height = height_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR && setHeight( uint32_t height_ ) && VULKAN_HPP_NOEXCEPT + { + height = height_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & setDepth( uint32_t depth_ ) & VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR && setDepth( uint32_t depth_ ) && VULKAN_HPP_NOEXCEPT + { + depth = depth_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkTraceRaysIndirectCommandKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTraceRaysIndirectCommandKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkTraceRaysIndirectCommandKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkTraceRaysIndirectCommandKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( width, height, depth ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( TraceRaysIndirectCommandKHR const & ) const = default; +#else + bool operator==( TraceRaysIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( width == rhs.width ) && ( height == rhs.height ) && ( depth == rhs.depth ); +# endif + } + + bool operator!=( TraceRaysIndirectCommandKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t width = {}; + uint32_t height = {}; + uint32_t depth = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = TraceRaysIndirectCommandKHR; + }; +#endif + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + // wrapper struct for struct VkUbmSurfaceCreateInfoSEC, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkUbmSurfaceCreateInfoSEC.html + struct UbmSurfaceCreateInfoSEC + { + using NativeType = VkUbmSurfaceCreateInfoSEC; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eUbmSurfaceCreateInfoSEC; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR UbmSurfaceCreateInfoSEC( UbmSurfaceCreateFlagsSEC flags_ = {}, + struct ubm_device * device_ = {}, + struct ubm_surface * surface_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , device{ device_ } + , surface{ surface_ } + { + } + + VULKAN_HPP_CONSTEXPR UbmSurfaceCreateInfoSEC( UbmSurfaceCreateInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + UbmSurfaceCreateInfoSEC( VkUbmSurfaceCreateInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT + : UbmSurfaceCreateInfoSEC( *reinterpret_cast( &rhs ) ) + { + } + + UbmSurfaceCreateInfoSEC & operator=( UbmSurfaceCreateInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + UbmSurfaceCreateInfoSEC & operator=( VkUbmSurfaceCreateInfoSEC const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 UbmSurfaceCreateInfoSEC & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 UbmSurfaceCreateInfoSEC && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 UbmSurfaceCreateInfoSEC & setFlags( UbmSurfaceCreateFlagsSEC flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 UbmSurfaceCreateInfoSEC && setFlags( UbmSurfaceCreateFlagsSEC flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 UbmSurfaceCreateInfoSEC & setDevice( struct ubm_device * device_ ) & VULKAN_HPP_NOEXCEPT + { + device = device_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 UbmSurfaceCreateInfoSEC && setDevice( struct ubm_device * device_ ) && VULKAN_HPP_NOEXCEPT + { + device = device_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 UbmSurfaceCreateInfoSEC & setSurface( struct ubm_surface * surface_ ) & VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 UbmSurfaceCreateInfoSEC && setSurface( struct ubm_surface * surface_ ) && VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkUbmSurfaceCreateInfoSEC const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkUbmSurfaceCreateInfoSEC &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkUbmSurfaceCreateInfoSEC const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkUbmSurfaceCreateInfoSEC *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, device, surface ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( UbmSurfaceCreateInfoSEC const & ) const = default; +# else + bool operator==( UbmSurfaceCreateInfoSEC const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( device == rhs.device ) && ( surface == rhs.surface ); +# endif + } + + bool operator!=( UbmSurfaceCreateInfoSEC const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eUbmSurfaceCreateInfoSEC; + void const * pNext = {}; + UbmSurfaceCreateFlagsSEC flags = {}; + struct ubm_device * device = {}; + struct ubm_surface * surface = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = UbmSurfaceCreateInfoSEC; + }; +# endif + + template <> + struct CppType + { + using Type = UbmSurfaceCreateInfoSEC; + }; +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + + // wrapper struct for struct VkValidationCacheCreateInfoEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationCacheCreateInfoEXT.html + struct ValidationCacheCreateInfoEXT + { + using NativeType = VkValidationCacheCreateInfoEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eValidationCacheCreateInfoEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ValidationCacheCreateInfoEXT( ValidationCacheCreateFlagsEXT flags_ = {}, + size_t initialDataSize_ = {}, + void const * pInitialData_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , initialDataSize{ initialDataSize_ } + , pInitialData{ pInitialData_ } + { + } + + VULKAN_HPP_CONSTEXPR ValidationCacheCreateInfoEXT( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ValidationCacheCreateInfoEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + ValidationCacheCreateInfoEXT( ValidationCacheCreateFlagsEXT flags_, ArrayProxyNoTemporaries const & initialData_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), flags( flags_ ), initialDataSize( initialData_.size() * sizeof( T ) ), pInitialData( initialData_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ValidationCacheCreateInfoEXT & operator=( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ValidationCacheCreateInfoEXT & operator=( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setFlags( ValidationCacheCreateFlagsEXT flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT && setFlags( ValidationCacheCreateFlagsEXT flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setInitialDataSize( size_t initialDataSize_ ) & VULKAN_HPP_NOEXCEPT + { + initialDataSize = initialDataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT && setInitialDataSize( size_t initialDataSize_ ) && VULKAN_HPP_NOEXCEPT + { + initialDataSize = initialDataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & setPInitialData( void const * pInitialData_ ) & VULKAN_HPP_NOEXCEPT + { + pInitialData = pInitialData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT && setPInitialData( void const * pInitialData_ ) && VULKAN_HPP_NOEXCEPT + { + pInitialData = pInitialData_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + ValidationCacheCreateInfoEXT & setInitialData( ArrayProxyNoTemporaries const & initialData_ ) VULKAN_HPP_NOEXCEPT + { + initialDataSize = initialData_.size() * sizeof( T ); + pInitialData = initialData_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkValidationCacheCreateInfoEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkValidationCacheCreateInfoEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkValidationCacheCreateInfoEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, initialDataSize, pInitialData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ValidationCacheCreateInfoEXT const & ) const = default; +#else + bool operator==( ValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( initialDataSize == rhs.initialDataSize ) && + ( pInitialData == rhs.pInitialData ); +# endif + } + + bool operator!=( ValidationCacheCreateInfoEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eValidationCacheCreateInfoEXT; + void const * pNext = {}; + ValidationCacheCreateFlagsEXT flags = {}; + size_t initialDataSize = {}; + void const * pInitialData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ValidationCacheCreateInfoEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ValidationCacheCreateInfoEXT; + }; + + // wrapper struct for struct VkValidationFeaturesEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationFeaturesEXT.html + struct ValidationFeaturesEXT + { + using NativeType = VkValidationFeaturesEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eValidationFeaturesEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( uint32_t enabledValidationFeatureCount_ = {}, + ValidationFeatureEnableEXT const * pEnabledValidationFeatures_ = {}, + uint32_t disabledValidationFeatureCount_ = {}, + ValidationFeatureDisableEXT const * pDisabledValidationFeatures_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , enabledValidationFeatureCount{ enabledValidationFeatureCount_ } + , pEnabledValidationFeatures{ pEnabledValidationFeatures_ } + , disabledValidationFeatureCount{ disabledValidationFeatureCount_ } + , pDisabledValidationFeatures{ pDisabledValidationFeatures_ } + { + } + + VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ValidationFeaturesEXT( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : ValidationFeaturesEXT( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ValidationFeaturesEXT( ArrayProxyNoTemporaries const & enabledValidationFeatures_, + ArrayProxyNoTemporaries const & disabledValidationFeatures_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , enabledValidationFeatureCount( static_cast( enabledValidationFeatures_.size() ) ) + , pEnabledValidationFeatures( enabledValidationFeatures_.data() ) + , disabledValidationFeatureCount( static_cast( disabledValidationFeatures_.size() ) ) + , pDisabledValidationFeatures( disabledValidationFeatures_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ValidationFeaturesEXT & operator=( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ValidationFeaturesEXT & operator=( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setEnabledValidationFeatureCount( uint32_t enabledValidationFeatureCount_ ) & VULKAN_HPP_NOEXCEPT + { + enabledValidationFeatureCount = enabledValidationFeatureCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT && setEnabledValidationFeatureCount( uint32_t enabledValidationFeatureCount_ ) && VULKAN_HPP_NOEXCEPT + { + enabledValidationFeatureCount = enabledValidationFeatureCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPEnabledValidationFeatures( ValidationFeatureEnableEXT const * pEnabledValidationFeatures_ ) & + VULKAN_HPP_NOEXCEPT + { + pEnabledValidationFeatures = pEnabledValidationFeatures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT && setPEnabledValidationFeatures( ValidationFeatureEnableEXT const * pEnabledValidationFeatures_ ) && + VULKAN_HPP_NOEXCEPT + { + pEnabledValidationFeatures = pEnabledValidationFeatures_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ValidationFeaturesEXT & + setEnabledValidationFeatures( ArrayProxyNoTemporaries const & enabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT + { + enabledValidationFeatureCount = static_cast( enabledValidationFeatures_.size() ); + pEnabledValidationFeatures = enabledValidationFeatures_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setDisabledValidationFeatureCount( uint32_t disabledValidationFeatureCount_ ) & VULKAN_HPP_NOEXCEPT + { + disabledValidationFeatureCount = disabledValidationFeatureCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT && setDisabledValidationFeatureCount( uint32_t disabledValidationFeatureCount_ ) && VULKAN_HPP_NOEXCEPT + { + disabledValidationFeatureCount = disabledValidationFeatureCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & setPDisabledValidationFeatures( ValidationFeatureDisableEXT const * pDisabledValidationFeatures_ ) & + VULKAN_HPP_NOEXCEPT + { + pDisabledValidationFeatures = pDisabledValidationFeatures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT && setPDisabledValidationFeatures( ValidationFeatureDisableEXT const * pDisabledValidationFeatures_ ) && + VULKAN_HPP_NOEXCEPT + { + pDisabledValidationFeatures = pDisabledValidationFeatures_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ValidationFeaturesEXT & + setDisabledValidationFeatures( ArrayProxyNoTemporaries const & disabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT + { + disabledValidationFeatureCount = static_cast( disabledValidationFeatures_.size() ); + pDisabledValidationFeatures = disabledValidationFeatures_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkValidationFeaturesEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkValidationFeaturesEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkValidationFeaturesEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkValidationFeaturesEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, enabledValidationFeatureCount, pEnabledValidationFeatures, disabledValidationFeatureCount, pDisabledValidationFeatures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ValidationFeaturesEXT const & ) const = default; +#else + bool operator==( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( enabledValidationFeatureCount == rhs.enabledValidationFeatureCount ) && + ( pEnabledValidationFeatures == rhs.pEnabledValidationFeatures ) && ( disabledValidationFeatureCount == rhs.disabledValidationFeatureCount ) && + ( pDisabledValidationFeatures == rhs.pDisabledValidationFeatures ); +# endif + } + + bool operator!=( ValidationFeaturesEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eValidationFeaturesEXT; + void const * pNext = {}; + uint32_t enabledValidationFeatureCount = {}; + ValidationFeatureEnableEXT const * pEnabledValidationFeatures = {}; + uint32_t disabledValidationFeatureCount = {}; + ValidationFeatureDisableEXT const * pDisabledValidationFeatures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ValidationFeaturesEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ValidationFeaturesEXT; + }; + + // wrapper struct for struct VkValidationFlagsEXT, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkValidationFlagsEXT.html + struct ValidationFlagsEXT + { + using NativeType = VkValidationFlagsEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eValidationFlagsEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = {}, + ValidationCheckEXT const * pDisabledValidationChecks_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , disabledValidationCheckCount{ disabledValidationCheckCount_ } + , pDisabledValidationChecks{ pDisabledValidationChecks_ } + { + } + + VULKAN_HPP_CONSTEXPR ValidationFlagsEXT( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ValidationFlagsEXT( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT : ValidationFlagsEXT( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ValidationFlagsEXT( ArrayProxyNoTemporaries const & disabledValidationChecks_, void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , disabledValidationCheckCount( static_cast( disabledValidationChecks_.size() ) ) + , pDisabledValidationChecks( disabledValidationChecks_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + ValidationFlagsEXT & operator=( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ValidationFlagsEXT & operator=( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ ) & VULKAN_HPP_NOEXCEPT + { + disabledValidationCheckCount = disabledValidationCheckCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT && setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ ) && VULKAN_HPP_NOEXCEPT + { + disabledValidationCheckCount = disabledValidationCheckCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & setPDisabledValidationChecks( ValidationCheckEXT const * pDisabledValidationChecks_ ) & VULKAN_HPP_NOEXCEPT + { + pDisabledValidationChecks = pDisabledValidationChecks_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT && setPDisabledValidationChecks( ValidationCheckEXT const * pDisabledValidationChecks_ ) && VULKAN_HPP_NOEXCEPT + { + pDisabledValidationChecks = pDisabledValidationChecks_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + ValidationFlagsEXT & setDisabledValidationChecks( ArrayProxyNoTemporaries const & disabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT + { + disabledValidationCheckCount = static_cast( disabledValidationChecks_.size() ); + pDisabledValidationChecks = disabledValidationChecks_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkValidationFlagsEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkValidationFlagsEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkValidationFlagsEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkValidationFlagsEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, disabledValidationCheckCount, pDisabledValidationChecks ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ValidationFlagsEXT const & ) const = default; +#else + bool operator==( ValidationFlagsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount ) && + ( pDisabledValidationChecks == rhs.pDisabledValidationChecks ); +# endif + } + + bool operator!=( ValidationFlagsEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eValidationFlagsEXT; + void const * pNext = {}; + uint32_t disabledValidationCheckCount = {}; + ValidationCheckEXT const * pDisabledValidationChecks = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ValidationFlagsEXT; + }; +#endif + + template <> + struct CppType + { + using Type = ValidationFlagsEXT; + }; + + // wrapper struct for struct VkVertexInputAttributeDescription2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVertexInputAttributeDescription2EXT.html + struct VertexInputAttributeDescription2EXT + { + using NativeType = VkVertexInputAttributeDescription2EXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVertexInputAttributeDescription2EXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT( + uint32_t location_ = {}, uint32_t binding_ = {}, Format format_ = Format::eUndefined, uint32_t offset_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , location{ location_ } + , binding{ binding_ } + , format{ format_ } + , offset{ offset_ } + { + } + + VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription2EXT( VertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputAttributeDescription2EXT( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VertexInputAttributeDescription2EXT( *reinterpret_cast( &rhs ) ) + { + } + + VertexInputAttributeDescription2EXT & operator=( VertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VertexInputAttributeDescription2EXT & operator=( VkVertexInputAttributeDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setLocation( uint32_t location_ ) & VULKAN_HPP_NOEXCEPT + { + location = location_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT && setLocation( uint32_t location_ ) && VULKAN_HPP_NOEXCEPT + { + location = location_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setBinding( uint32_t binding_ ) & VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT && setBinding( uint32_t binding_ ) && VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setFormat( Format format_ ) & VULKAN_HPP_NOEXCEPT + { + format = format_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT && setFormat( Format format_ ) && VULKAN_HPP_NOEXCEPT + { + format = format_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT & setOffset( uint32_t offset_ ) & VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription2EXT && setOffset( uint32_t offset_ ) && VULKAN_HPP_NOEXCEPT + { + offset = offset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVertexInputAttributeDescription2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVertexInputAttributeDescription2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVertexInputAttributeDescription2EXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVertexInputAttributeDescription2EXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, location, binding, format, offset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VertexInputAttributeDescription2EXT const & ) const = default; +#else + bool operator==( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( location == rhs.location ) && ( binding == rhs.binding ) && ( format == rhs.format ) && + ( offset == rhs.offset ); +# endif + } + + bool operator!=( VertexInputAttributeDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVertexInputAttributeDescription2EXT; + void * pNext = {}; + uint32_t location = {}; + uint32_t binding = {}; + Format format = Format::eUndefined; + uint32_t offset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VertexInputAttributeDescription2EXT; + }; +#endif + + template <> + struct CppType + { + using Type = VertexInputAttributeDescription2EXT; + }; + + // wrapper struct for struct VkVertexInputBindingDescription2EXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVertexInputBindingDescription2EXT.html + struct VertexInputBindingDescription2EXT + { + using NativeType = VkVertexInputBindingDescription2EXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVertexInputBindingDescription2EXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VertexInputBindingDescription2EXT( uint32_t binding_ = {}, + uint32_t stride_ = {}, + VertexInputRate inputRate_ = VertexInputRate::eVertex, + uint32_t divisor_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , binding{ binding_ } + , stride{ stride_ } + , inputRate{ inputRate_ } + , divisor{ divisor_ } + { + } + + VULKAN_HPP_CONSTEXPR VertexInputBindingDescription2EXT( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VertexInputBindingDescription2EXT( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + : VertexInputBindingDescription2EXT( *reinterpret_cast( &rhs ) ) + { + } + + VertexInputBindingDescription2EXT & operator=( VertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VertexInputBindingDescription2EXT & operator=( VkVertexInputBindingDescription2EXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setBinding( uint32_t binding_ ) & VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT && setBinding( uint32_t binding_ ) && VULKAN_HPP_NOEXCEPT + { + binding = binding_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setStride( uint32_t stride_ ) & VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT && setStride( uint32_t stride_ ) && VULKAN_HPP_NOEXCEPT + { + stride = stride_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setInputRate( VertexInputRate inputRate_ ) & VULKAN_HPP_NOEXCEPT + { + inputRate = inputRate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT && setInputRate( VertexInputRate inputRate_ ) && VULKAN_HPP_NOEXCEPT + { + inputRate = inputRate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT & setDivisor( uint32_t divisor_ ) & VULKAN_HPP_NOEXCEPT + { + divisor = divisor_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription2EXT && setDivisor( uint32_t divisor_ ) && VULKAN_HPP_NOEXCEPT + { + divisor = divisor_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVertexInputBindingDescription2EXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVertexInputBindingDescription2EXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVertexInputBindingDescription2EXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVertexInputBindingDescription2EXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, binding, stride, inputRate, divisor ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VertexInputBindingDescription2EXT const & ) const = default; +#else + bool operator==( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( binding == rhs.binding ) && ( stride == rhs.stride ) && ( inputRate == rhs.inputRate ) && + ( divisor == rhs.divisor ); +# endif + } + + bool operator!=( VertexInputBindingDescription2EXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVertexInputBindingDescription2EXT; + void * pNext = {}; + uint32_t binding = {}; + uint32_t stride = {}; + VertexInputRate inputRate = VertexInputRate::eVertex; + uint32_t divisor = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VertexInputBindingDescription2EXT; + }; +#endif + + template <> + struct CppType + { + using Type = VertexInputBindingDescription2EXT; + }; + +#if defined( VK_USE_PLATFORM_VI_NN ) + // wrapper struct for struct VkViSurfaceCreateInfoNN, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkViSurfaceCreateInfoNN.html + struct ViSurfaceCreateInfoNN + { + using NativeType = VkViSurfaceCreateInfoNN; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eViSurfaceCreateInfoNN; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = {}, void * window_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , window{ window_ } + { + } + + VULKAN_HPP_CONSTEXPR ViSurfaceCreateInfoNN( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT + : ViSurfaceCreateInfoNN( *reinterpret_cast( &rhs ) ) + { + } + + ViSurfaceCreateInfoNN & operator=( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + ViSurfaceCreateInfoNN & operator=( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setFlags( ViSurfaceCreateFlagsNN flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN && setFlags( ViSurfaceCreateFlagsNN flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & setWindow( void * window_ ) & VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN && setWindow( void * window_ ) && VULKAN_HPP_NOEXCEPT + { + window = window_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkViSurfaceCreateInfoNN const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkViSurfaceCreateInfoNN &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkViSurfaceCreateInfoNN const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkViSurfaceCreateInfoNN *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( ViSurfaceCreateInfoNN const & ) const = default; +# else + bool operator==( ViSurfaceCreateInfoNN const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( window == rhs.window ); +# endif + } + + bool operator!=( ViSurfaceCreateInfoNN const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eViSurfaceCreateInfoNN; + void const * pNext = {}; + ViSurfaceCreateFlagsNN flags = {}; + void * window = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = ViSurfaceCreateInfoNN; + }; +# endif + + template <> + struct CppType + { + using Type = ViSurfaceCreateInfoNN; + }; +#endif /*VK_USE_PLATFORM_VI_NN*/ + + // wrapper struct for struct VkVideoPictureResourceInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoPictureResourceInfoKHR.html + struct VideoPictureResourceInfoKHR + { + using NativeType = VkVideoPictureResourceInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoPictureResourceInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoPictureResourceInfoKHR( Offset2D codedOffset_ = {}, + Extent2D codedExtent_ = {}, + uint32_t baseArrayLayer_ = {}, + ImageView imageViewBinding_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , codedOffset{ codedOffset_ } + , codedExtent{ codedExtent_ } + , baseArrayLayer{ baseArrayLayer_ } + , imageViewBinding{ imageViewBinding_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoPictureResourceInfoKHR( VideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoPictureResourceInfoKHR( VkVideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoPictureResourceInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoPictureResourceInfoKHR & operator=( VideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoPictureResourceInfoKHR & operator=( VkVideoPictureResourceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setCodedOffset( Offset2D const & codedOffset_ ) & VULKAN_HPP_NOEXCEPT + { + codedOffset = codedOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR && setCodedOffset( Offset2D const & codedOffset_ ) && VULKAN_HPP_NOEXCEPT + { + codedOffset = codedOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setCodedExtent( Extent2D const & codedExtent_ ) & VULKAN_HPP_NOEXCEPT + { + codedExtent = codedExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR && setCodedExtent( Extent2D const & codedExtent_ ) && VULKAN_HPP_NOEXCEPT + { + codedExtent = codedExtent_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setBaseArrayLayer( uint32_t baseArrayLayer_ ) & VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR && setBaseArrayLayer( uint32_t baseArrayLayer_ ) && VULKAN_HPP_NOEXCEPT + { + baseArrayLayer = baseArrayLayer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR & setImageViewBinding( ImageView imageViewBinding_ ) & VULKAN_HPP_NOEXCEPT + { + imageViewBinding = imageViewBinding_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoPictureResourceInfoKHR && setImageViewBinding( ImageView imageViewBinding_ ) && VULKAN_HPP_NOEXCEPT + { + imageViewBinding = imageViewBinding_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoPictureResourceInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoPictureResourceInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoPictureResourceInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoPictureResourceInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, codedOffset, codedExtent, baseArrayLayer, imageViewBinding ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoPictureResourceInfoKHR const & ) const = default; +#else + bool operator==( VideoPictureResourceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( codedOffset == rhs.codedOffset ) && ( codedExtent == rhs.codedExtent ) && + ( baseArrayLayer == rhs.baseArrayLayer ) && ( imageViewBinding == rhs.imageViewBinding ); +# endif + } + + bool operator!=( VideoPictureResourceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoPictureResourceInfoKHR; + void const * pNext = {}; + Offset2D codedOffset = {}; + Extent2D codedExtent = {}; + uint32_t baseArrayLayer = {}; + ImageView imageViewBinding = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoPictureResourceInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoPictureResourceInfoKHR; + }; + + // wrapper struct for struct VkVideoReferenceSlotInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoReferenceSlotInfoKHR.html + struct VideoReferenceSlotInfoKHR + { + using NativeType = VkVideoReferenceSlotInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoReferenceSlotInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoReferenceSlotInfoKHR( int32_t slotIndex_ = {}, + VideoPictureResourceInfoKHR const * pPictureResource_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , slotIndex{ slotIndex_ } + , pPictureResource{ pPictureResource_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoReferenceSlotInfoKHR( VideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoReferenceSlotInfoKHR( VkVideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoReferenceSlotInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoReferenceSlotInfoKHR & operator=( VideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoReferenceSlotInfoKHR & operator=( VkVideoReferenceSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR & setSlotIndex( int32_t slotIndex_ ) & VULKAN_HPP_NOEXCEPT + { + slotIndex = slotIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR && setSlotIndex( int32_t slotIndex_ ) && VULKAN_HPP_NOEXCEPT + { + slotIndex = slotIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR & setPPictureResource( VideoPictureResourceInfoKHR const * pPictureResource_ ) & VULKAN_HPP_NOEXCEPT + { + pPictureResource = pPictureResource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoReferenceSlotInfoKHR && setPPictureResource( VideoPictureResourceInfoKHR const * pPictureResource_ ) && VULKAN_HPP_NOEXCEPT + { + pPictureResource = pPictureResource_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoReferenceSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoReferenceSlotInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoReferenceSlotInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoReferenceSlotInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, slotIndex, pPictureResource ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoReferenceSlotInfoKHR const & ) const = default; +#else + bool operator==( VideoReferenceSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( slotIndex == rhs.slotIndex ) && ( pPictureResource == rhs.pPictureResource ); +# endif + } + + bool operator!=( VideoReferenceSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoReferenceSlotInfoKHR; + void const * pNext = {}; + int32_t slotIndex = {}; + VideoPictureResourceInfoKHR const * pPictureResource = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoReferenceSlotInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoReferenceSlotInfoKHR; + }; + + // wrapper struct for struct VkVideoBeginCodingInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoBeginCodingInfoKHR.html + struct VideoBeginCodingInfoKHR + { + using NativeType = VkVideoBeginCodingInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoBeginCodingInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoBeginCodingInfoKHR( VideoBeginCodingFlagsKHR flags_ = {}, + VideoSessionKHR videoSession_ = {}, + VideoSessionParametersKHR videoSessionParameters_ = {}, + uint32_t referenceSlotCount_ = {}, + VideoReferenceSlotInfoKHR const * pReferenceSlots_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , videoSession{ videoSession_ } + , videoSessionParameters{ videoSessionParameters_ } + , referenceSlotCount{ referenceSlotCount_ } + , pReferenceSlots{ pReferenceSlots_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoBeginCodingInfoKHR( VideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoBeginCodingInfoKHR( VkVideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoBeginCodingInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoBeginCodingInfoKHR( VideoBeginCodingFlagsKHR flags_, + VideoSessionKHR videoSession_, + VideoSessionParametersKHR videoSessionParameters_, + ArrayProxyNoTemporaries const & referenceSlots_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , videoSession( videoSession_ ) + , videoSessionParameters( videoSessionParameters_ ) + , referenceSlotCount( static_cast( referenceSlots_.size() ) ) + , pReferenceSlots( referenceSlots_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoBeginCodingInfoKHR & operator=( VideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoBeginCodingInfoKHR & operator=( VkVideoBeginCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setFlags( VideoBeginCodingFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR && setFlags( VideoBeginCodingFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setVideoSession( VideoSessionKHR videoSession_ ) & VULKAN_HPP_NOEXCEPT + { + videoSession = videoSession_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR && setVideoSession( VideoSessionKHR videoSession_ ) && VULKAN_HPP_NOEXCEPT + { + videoSession = videoSession_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setVideoSessionParameters( VideoSessionParametersKHR videoSessionParameters_ ) & VULKAN_HPP_NOEXCEPT + { + videoSessionParameters = videoSessionParameters_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR && setVideoSessionParameters( VideoSessionParametersKHR videoSessionParameters_ ) && VULKAN_HPP_NOEXCEPT + { + videoSessionParameters = videoSessionParameters_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setReferenceSlotCount( uint32_t referenceSlotCount_ ) & VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = referenceSlotCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR && setReferenceSlotCount( uint32_t referenceSlotCount_ ) && VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = referenceSlotCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR & setPReferenceSlots( VideoReferenceSlotInfoKHR const * pReferenceSlots_ ) & VULKAN_HPP_NOEXCEPT + { + pReferenceSlots = pReferenceSlots_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoBeginCodingInfoKHR && setPReferenceSlots( VideoReferenceSlotInfoKHR const * pReferenceSlots_ ) && VULKAN_HPP_NOEXCEPT + { + pReferenceSlots = pReferenceSlots_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoBeginCodingInfoKHR & setReferenceSlots( ArrayProxyNoTemporaries const & referenceSlots_ ) VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = static_cast( referenceSlots_.size() ); + pReferenceSlots = referenceSlots_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoBeginCodingInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoBeginCodingInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoBeginCodingInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoBeginCodingInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, videoSession, videoSessionParameters, referenceSlotCount, pReferenceSlots ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoBeginCodingInfoKHR const & ) const = default; +#else + bool operator==( VideoBeginCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( videoSession == rhs.videoSession ) && + ( videoSessionParameters == rhs.videoSessionParameters ) && ( referenceSlotCount == rhs.referenceSlotCount ) && + ( pReferenceSlots == rhs.pReferenceSlots ); +# endif + } + + bool operator!=( VideoBeginCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoBeginCodingInfoKHR; + void const * pNext = {}; + VideoBeginCodingFlagsKHR flags = {}; + VideoSessionKHR videoSession = {}; + VideoSessionParametersKHR videoSessionParameters = {}; + uint32_t referenceSlotCount = {}; + VideoReferenceSlotInfoKHR const * pReferenceSlots = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoBeginCodingInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoBeginCodingInfoKHR; + }; + + // wrapper struct for struct VkVideoCapabilitiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCapabilitiesKHR.html + struct VideoCapabilitiesKHR + { + using NativeType = VkVideoCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoCapabilitiesKHR( VideoCapabilityFlagsKHR flags_ = {}, + DeviceSize minBitstreamBufferOffsetAlignment_ = {}, + DeviceSize minBitstreamBufferSizeAlignment_ = {}, + Extent2D pictureAccessGranularity_ = {}, + Extent2D minCodedExtent_ = {}, + Extent2D maxCodedExtent_ = {}, + uint32_t maxDpbSlots_ = {}, + uint32_t maxActiveReferencePictures_ = {}, + ExtensionProperties stdHeaderVersion_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , minBitstreamBufferOffsetAlignment{ minBitstreamBufferOffsetAlignment_ } + , minBitstreamBufferSizeAlignment{ minBitstreamBufferSizeAlignment_ } + , pictureAccessGranularity{ pictureAccessGranularity_ } + , minCodedExtent{ minCodedExtent_ } + , maxCodedExtent{ maxCodedExtent_ } + , maxDpbSlots{ maxDpbSlots_ } + , maxActiveReferencePictures{ maxActiveReferencePictures_ } + , stdHeaderVersion{ stdHeaderVersion_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 VideoCapabilitiesKHR( VideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoCapabilitiesKHR( VkVideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoCapabilitiesKHR & operator=( VideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoCapabilitiesKHR & operator=( VkVideoCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + minBitstreamBufferOffsetAlignment, + minBitstreamBufferSizeAlignment, + pictureAccessGranularity, + minCodedExtent, + maxCodedExtent, + maxDpbSlots, + maxActiveReferencePictures, + stdHeaderVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoCapabilitiesKHR const & ) const = default; +#else + bool operator==( VideoCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( minBitstreamBufferOffsetAlignment == rhs.minBitstreamBufferOffsetAlignment ) && + ( minBitstreamBufferSizeAlignment == rhs.minBitstreamBufferSizeAlignment ) && ( pictureAccessGranularity == rhs.pictureAccessGranularity ) && + ( minCodedExtent == rhs.minCodedExtent ) && ( maxCodedExtent == rhs.maxCodedExtent ) && ( maxDpbSlots == rhs.maxDpbSlots ) && + ( maxActiveReferencePictures == rhs.maxActiveReferencePictures ) && ( stdHeaderVersion == rhs.stdHeaderVersion ); +# endif + } + + bool operator!=( VideoCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoCapabilitiesKHR; + void * pNext = {}; + VideoCapabilityFlagsKHR flags = {}; + DeviceSize minBitstreamBufferOffsetAlignment = {}; + DeviceSize minBitstreamBufferSizeAlignment = {}; + Extent2D pictureAccessGranularity = {}; + Extent2D minCodedExtent = {}; + Extent2D maxCodedExtent = {}; + uint32_t maxDpbSlots = {}; + uint32_t maxActiveReferencePictures = {}; + ExtensionProperties stdHeaderVersion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoCapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoCodingControlInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoCodingControlInfoKHR.html + struct VideoCodingControlInfoKHR + { + using NativeType = VkVideoCodingControlInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoCodingControlInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoCodingControlInfoKHR( VideoCodingControlFlagsKHR flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoCodingControlInfoKHR( VideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoCodingControlInfoKHR( VkVideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoCodingControlInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoCodingControlInfoKHR & operator=( VideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoCodingControlInfoKHR & operator=( VkVideoCodingControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR & setFlags( VideoCodingControlFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoCodingControlInfoKHR && setFlags( VideoCodingControlFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoCodingControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoCodingControlInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoCodingControlInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoCodingControlInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoCodingControlInfoKHR const & ) const = default; +#else + bool operator==( VideoCodingControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( VideoCodingControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoCodingControlInfoKHR; + void const * pNext = {}; + VideoCodingControlFlagsKHR flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoCodingControlInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoCodingControlInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeAV1CapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeAV1CapabilitiesKHR.html + struct VideoDecodeAV1CapabilitiesKHR + { + using NativeType = VkVideoDecodeAV1CapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeAv1CapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeAV1CapabilitiesKHR( StdVideoAV1Level maxLevel_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxLevel{ maxLevel_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeAV1CapabilitiesKHR( VideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeAV1CapabilitiesKHR( VkVideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeAV1CapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeAV1CapabilitiesKHR & operator=( VideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeAV1CapabilitiesKHR & operator=( VkVideoDecodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoDecodeAV1CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1CapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1CapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxLevel ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoDecodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoAV1Level ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoDecodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoAV1Level ) ) == 0 ); + } + + bool operator!=( VideoDecodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoDecodeAv1CapabilitiesKHR; + void * pNext = {}; + StdVideoAV1Level maxLevel = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeAV1CapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeAV1CapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoDecodeAV1DpbSlotInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html + struct VideoDecodeAV1DpbSlotInfoKHR + { + using NativeType = VkVideoDecodeAV1DpbSlotInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeAv1DpbSlotInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeAV1DpbSlotInfoKHR( StdVideoDecodeAV1ReferenceInfo const * pStdReferenceInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdReferenceInfo{ pStdReferenceInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeAV1DpbSlotInfoKHR( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeAV1DpbSlotInfoKHR( VkVideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeAV1DpbSlotInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeAV1DpbSlotInfoKHR & operator=( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeAV1DpbSlotInfoKHR & operator=( VkVideoDecodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1DpbSlotInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1DpbSlotInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1DpbSlotInfoKHR & setPStdReferenceInfo( StdVideoDecodeAV1ReferenceInfo const * pStdReferenceInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1DpbSlotInfoKHR && setPStdReferenceInfo( StdVideoDecodeAV1ReferenceInfo const * pStdReferenceInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeAV1DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1DpbSlotInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1DpbSlotInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdReferenceInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeAV1DpbSlotInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo ); +# endif + } + + bool operator!=( VideoDecodeAV1DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeAv1DpbSlotInfoKHR; + void const * pNext = {}; + StdVideoDecodeAV1ReferenceInfo const * pStdReferenceInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeAV1DpbSlotInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeAV1DpbSlotInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeAV1InlineSessionParametersInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeAV1InlineSessionParametersInfoKHR.html + struct VideoDecodeAV1InlineSessionParametersInfoKHR + { + using NativeType = VkVideoDecodeAV1InlineSessionParametersInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeAv1InlineSessionParametersInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeAV1InlineSessionParametersInfoKHR( StdVideoAV1SequenceHeader const * pStdSequenceHeader_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdSequenceHeader{ pStdSequenceHeader_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeAV1InlineSessionParametersInfoKHR( VideoDecodeAV1InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeAV1InlineSessionParametersInfoKHR( VkVideoDecodeAV1InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeAV1InlineSessionParametersInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeAV1InlineSessionParametersInfoKHR & operator=( VideoDecodeAV1InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeAV1InlineSessionParametersInfoKHR & operator=( VkVideoDecodeAV1InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1InlineSessionParametersInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1InlineSessionParametersInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1InlineSessionParametersInfoKHR & setPStdSequenceHeader( StdVideoAV1SequenceHeader const * pStdSequenceHeader_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdSequenceHeader = pStdSequenceHeader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1InlineSessionParametersInfoKHR && setPStdSequenceHeader( StdVideoAV1SequenceHeader const * pStdSequenceHeader_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSequenceHeader = pStdSequenceHeader_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeAV1InlineSessionParametersInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1InlineSessionParametersInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1InlineSessionParametersInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1InlineSessionParametersInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdSequenceHeader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeAV1InlineSessionParametersInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeAV1InlineSessionParametersInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdSequenceHeader == rhs.pStdSequenceHeader ); +# endif + } + + bool operator!=( VideoDecodeAV1InlineSessionParametersInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeAv1InlineSessionParametersInfoKHR; + void const * pNext = {}; + StdVideoAV1SequenceHeader const * pStdSequenceHeader = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeAV1InlineSessionParametersInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeAV1InlineSessionParametersInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeAV1PictureInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeAV1PictureInfoKHR.html + struct VideoDecodeAV1PictureInfoKHR + { + using NativeType = VkVideoDecodeAV1PictureInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeAv1PictureInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR( StdVideoDecodeAV1PictureInfo const * pStdPictureInfo_ = {}, + std::array const & referenceNameSlotIndices_ = {}, + uint32_t frameHeaderOffset_ = {}, + uint32_t tileCount_ = {}, + uint32_t const * pTileOffsets_ = {}, + uint32_t const * pTileSizes_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdPictureInfo{ pStdPictureInfo_ } + , referenceNameSlotIndices{ referenceNameSlotIndices_ } + , frameHeaderOffset{ frameHeaderOffset_ } + , tileCount{ tileCount_ } + , pTileOffsets{ pTileOffsets_ } + , pTileSizes{ pTileSizes_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR( VideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeAV1PictureInfoKHR( VkVideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeAV1PictureInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeAV1PictureInfoKHR( StdVideoDecodeAV1PictureInfo const * pStdPictureInfo_, + std::array const & referenceNameSlotIndices_, + uint32_t frameHeaderOffset_, + ArrayProxyNoTemporaries const & tileOffsets_, + ArrayProxyNoTemporaries const & tileSizes_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , pStdPictureInfo( pStdPictureInfo_ ) + , referenceNameSlotIndices( referenceNameSlotIndices_ ) + , frameHeaderOffset( frameHeaderOffset_ ) + , tileCount( static_cast( tileOffsets_.size() ) ) + , pTileOffsets( tileOffsets_.data() ) + , pTileSizes( tileSizes_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( tileOffsets_.size() == tileSizes_.size() ); +# else + if ( tileOffsets_.size() != tileSizes_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::VideoDecodeAV1PictureInfoKHR::VideoDecodeAV1PictureInfoKHR: tileOffsets_.size() != tileSizes_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoDecodeAV1PictureInfoKHR & operator=( VideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeAV1PictureInfoKHR & operator=( VkVideoDecodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPStdPictureInfo( StdVideoDecodeAV1PictureInfo const * pStdPictureInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR && setPStdPictureInfo( StdVideoDecodeAV1PictureInfo const * pStdPictureInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & + setReferenceNameSlotIndices( std::array referenceNameSlotIndices_ ) & + VULKAN_HPP_NOEXCEPT + { + referenceNameSlotIndices = referenceNameSlotIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR && + setReferenceNameSlotIndices( std::array referenceNameSlotIndices_ ) && + VULKAN_HPP_NOEXCEPT + { + referenceNameSlotIndices = referenceNameSlotIndices_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setFrameHeaderOffset( uint32_t frameHeaderOffset_ ) & VULKAN_HPP_NOEXCEPT + { + frameHeaderOffset = frameHeaderOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR && setFrameHeaderOffset( uint32_t frameHeaderOffset_ ) && VULKAN_HPP_NOEXCEPT + { + frameHeaderOffset = frameHeaderOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setTileCount( uint32_t tileCount_ ) & VULKAN_HPP_NOEXCEPT + { + tileCount = tileCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR && setTileCount( uint32_t tileCount_ ) && VULKAN_HPP_NOEXCEPT + { + tileCount = tileCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPTileOffsets( uint32_t const * pTileOffsets_ ) & VULKAN_HPP_NOEXCEPT + { + pTileOffsets = pTileOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR && setPTileOffsets( uint32_t const * pTileOffsets_ ) && VULKAN_HPP_NOEXCEPT + { + pTileOffsets = pTileOffsets_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeAV1PictureInfoKHR & setTileOffsets( ArrayProxyNoTemporaries const & tileOffsets_ ) VULKAN_HPP_NOEXCEPT + { + tileCount = static_cast( tileOffsets_.size() ); + pTileOffsets = tileOffsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR & setPTileSizes( uint32_t const * pTileSizes_ ) & VULKAN_HPP_NOEXCEPT + { + pTileSizes = pTileSizes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1PictureInfoKHR && setPTileSizes( uint32_t const * pTileSizes_ ) && VULKAN_HPP_NOEXCEPT + { + pTileSizes = pTileSizes_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeAV1PictureInfoKHR & setTileSizes( ArrayProxyNoTemporaries const & tileSizes_ ) VULKAN_HPP_NOEXCEPT + { + tileCount = static_cast( tileSizes_.size() ); + pTileSizes = tileSizes_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeAV1PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1PictureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1PictureInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1PictureInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &, + uint32_t const &, + uint32_t const * const &, + uint32_t const * const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdPictureInfo, referenceNameSlotIndices, frameHeaderOffset, tileCount, pTileOffsets, pTileSizes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeAV1PictureInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeAV1PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && + ( referenceNameSlotIndices == rhs.referenceNameSlotIndices ) && ( frameHeaderOffset == rhs.frameHeaderOffset ) && ( tileCount == rhs.tileCount ) && + ( pTileOffsets == rhs.pTileOffsets ) && ( pTileSizes == rhs.pTileSizes ); +# endif + } + + bool operator!=( VideoDecodeAV1PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeAv1PictureInfoKHR; + void const * pNext = {}; + StdVideoDecodeAV1PictureInfo const * pStdPictureInfo = {}; + ArrayWrapper1D referenceNameSlotIndices = {}; + uint32_t frameHeaderOffset = {}; + uint32_t tileCount = {}; + uint32_t const * pTileOffsets = {}; + uint32_t const * pTileSizes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeAV1PictureInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeAV1PictureInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeAV1ProfileInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeAV1ProfileInfoKHR.html + struct VideoDecodeAV1ProfileInfoKHR + { + using NativeType = VkVideoDecodeAV1ProfileInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeAv1ProfileInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoDecodeAV1ProfileInfoKHR( StdVideoAV1Profile stdProfile_ = {}, Bool32 filmGrainSupport_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdProfile{ stdProfile_ } + , filmGrainSupport{ filmGrainSupport_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeAV1ProfileInfoKHR( VideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeAV1ProfileInfoKHR( VkVideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeAV1ProfileInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeAV1ProfileInfoKHR & operator=( VideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeAV1ProfileInfoKHR & operator=( VkVideoDecodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR & setStdProfile( StdVideoAV1Profile stdProfile_ ) & VULKAN_HPP_NOEXCEPT + { + stdProfile = stdProfile_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR && setStdProfile( StdVideoAV1Profile stdProfile_ ) && VULKAN_HPP_NOEXCEPT + { + stdProfile = stdProfile_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR & setFilmGrainSupport( Bool32 filmGrainSupport_ ) & VULKAN_HPP_NOEXCEPT + { + filmGrainSupport = filmGrainSupport_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1ProfileInfoKHR && setFilmGrainSupport( Bool32 filmGrainSupport_ ) && VULKAN_HPP_NOEXCEPT + { + filmGrainSupport = filmGrainSupport_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeAV1ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1ProfileInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1ProfileInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfile, filmGrainSupport ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoDecodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfile, &rhs.stdProfile, sizeof( StdVideoAV1Profile ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = filmGrainSupport <=> rhs.filmGrainSupport; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoDecodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfile, &rhs.stdProfile, sizeof( StdVideoAV1Profile ) ) == 0 ) && + ( filmGrainSupport == rhs.filmGrainSupport ); + } + + bool operator!=( VideoDecodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoDecodeAv1ProfileInfoKHR; + void const * pNext = {}; + StdVideoAV1Profile stdProfile = {}; + Bool32 filmGrainSupport = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeAV1ProfileInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeAV1ProfileInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeAV1SessionParametersCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeAV1SessionParametersCreateInfoKHR.html + struct VideoDecodeAV1SessionParametersCreateInfoKHR + { + using NativeType = VkVideoDecodeAV1SessionParametersCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeAv1SessionParametersCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeAV1SessionParametersCreateInfoKHR( StdVideoAV1SequenceHeader const * pStdSequenceHeader_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdSequenceHeader{ pStdSequenceHeader_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeAV1SessionParametersCreateInfoKHR( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeAV1SessionParametersCreateInfoKHR( VkVideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeAV1SessionParametersCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeAV1SessionParametersCreateInfoKHR & operator=( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeAV1SessionParametersCreateInfoKHR & operator=( VkVideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1SessionParametersCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1SessionParametersCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1SessionParametersCreateInfoKHR & setPStdSequenceHeader( StdVideoAV1SequenceHeader const * pStdSequenceHeader_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdSequenceHeader = pStdSequenceHeader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeAV1SessionParametersCreateInfoKHR && setPStdSequenceHeader( StdVideoAV1SequenceHeader const * pStdSequenceHeader_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSequenceHeader = pStdSequenceHeader_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeAV1SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1SessionParametersCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeAV1SessionParametersCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdSequenceHeader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeAV1SessionParametersCreateInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdSequenceHeader == rhs.pStdSequenceHeader ); +# endif + } + + bool operator!=( VideoDecodeAV1SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeAv1SessionParametersCreateInfoKHR; + void const * pNext = {}; + StdVideoAV1SequenceHeader const * pStdSequenceHeader = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeAV1SessionParametersCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeAV1SessionParametersCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeCapabilitiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeCapabilitiesKHR.html + struct VideoDecodeCapabilitiesKHR + { + using NativeType = VkVideoDecodeCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeCapabilitiesKHR( VideoDecodeCapabilityFlagsKHR flags_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeCapabilitiesKHR( VideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeCapabilitiesKHR( VkVideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeCapabilitiesKHR & operator=( VideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeCapabilitiesKHR & operator=( VkVideoDecodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoDecodeCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeCapabilitiesKHR const & ) const = default; +#else + bool operator==( VideoDecodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( VideoDecodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeCapabilitiesKHR; + void * pNext = {}; + VideoDecodeCapabilityFlagsKHR flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeCapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoDecodeH264CapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH264CapabilitiesKHR.html + struct VideoDecodeH264CapabilitiesKHR + { + using NativeType = VkVideoDecodeH264CapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264CapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264CapabilitiesKHR( StdVideoH264LevelIdc maxLevelIdc_ = {}, + Offset2D fieldOffsetGranularity_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxLevelIdc{ maxLevelIdc_ } + , fieldOffsetGranularity{ fieldOffsetGranularity_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeH264CapabilitiesKHR( VideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264CapabilitiesKHR( VkVideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264CapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeH264CapabilitiesKHR & operator=( VideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH264CapabilitiesKHR & operator=( VkVideoDecodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoDecodeH264CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264CapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH264CapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxLevelIdc, fieldOffsetGranularity ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoDecodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = fieldOffsetGranularity <=> rhs.fieldOffsetGranularity; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoDecodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ) == 0 ) && + ( fieldOffsetGranularity == rhs.fieldOffsetGranularity ); + } + + bool operator!=( VideoDecodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoDecodeH264CapabilitiesKHR; + void * pNext = {}; + StdVideoH264LevelIdc maxLevelIdc = {}; + Offset2D fieldOffsetGranularity = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH264CapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH264CapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoDecodeH264DpbSlotInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH264DpbSlotInfoKHR.html + struct VideoDecodeH264DpbSlotInfoKHR + { + using NativeType = VkVideoDecodeH264DpbSlotInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264DpbSlotInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264DpbSlotInfoKHR( StdVideoDecodeH264ReferenceInfo const * pStdReferenceInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdReferenceInfo{ pStdReferenceInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeH264DpbSlotInfoKHR( VideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264DpbSlotInfoKHR( VkVideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264DpbSlotInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeH264DpbSlotInfoKHR & operator=( VideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH264DpbSlotInfoKHR & operator=( VkVideoDecodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoKHR & setPStdReferenceInfo( StdVideoDecodeH264ReferenceInfo const * pStdReferenceInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264DpbSlotInfoKHR && setPStdReferenceInfo( StdVideoDecodeH264ReferenceInfo const * pStdReferenceInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH264DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264DpbSlotInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH264DpbSlotInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdReferenceInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264DpbSlotInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo ); +# endif + } + + bool operator!=( VideoDecodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeH264DpbSlotInfoKHR; + void const * pNext = {}; + StdVideoDecodeH264ReferenceInfo const * pStdReferenceInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH264DpbSlotInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH264DpbSlotInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH264InlineSessionParametersInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH264InlineSessionParametersInfoKHR.html + struct VideoDecodeH264InlineSessionParametersInfoKHR + { + using NativeType = VkVideoDecodeH264InlineSessionParametersInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264InlineSessionParametersInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264InlineSessionParametersInfoKHR( StdVideoH264SequenceParameterSet const * pStdSPS_ = {}, + StdVideoH264PictureParameterSet const * pStdPPS_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdSPS{ pStdSPS_ } + , pStdPPS{ pStdPPS_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoDecodeH264InlineSessionParametersInfoKHR( VideoDecodeH264InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264InlineSessionParametersInfoKHR( VkVideoDecodeH264InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264InlineSessionParametersInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeH264InlineSessionParametersInfoKHR & operator=( VideoDecodeH264InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH264InlineSessionParametersInfoKHR & operator=( VkVideoDecodeH264InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264InlineSessionParametersInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264InlineSessionParametersInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264InlineSessionParametersInfoKHR & setPStdSPS( StdVideoH264SequenceParameterSet const * pStdSPS_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdSPS = pStdSPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264InlineSessionParametersInfoKHR && setPStdSPS( StdVideoH264SequenceParameterSet const * pStdSPS_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSPS = pStdSPS_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264InlineSessionParametersInfoKHR & setPStdPPS( StdVideoH264PictureParameterSet const * pStdPPS_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPPS = pStdPPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264InlineSessionParametersInfoKHR && setPStdPPS( StdVideoH264PictureParameterSet const * pStdPPS_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdPPS = pStdPPS_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH264InlineSessionParametersInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264InlineSessionParametersInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264InlineSessionParametersInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH264InlineSessionParametersInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdSPS, pStdPPS ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264InlineSessionParametersInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeH264InlineSessionParametersInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdSPS == rhs.pStdSPS ) && ( pStdPPS == rhs.pStdPPS ); +# endif + } + + bool operator!=( VideoDecodeH264InlineSessionParametersInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeH264InlineSessionParametersInfoKHR; + void const * pNext = {}; + StdVideoH264SequenceParameterSet const * pStdSPS = {}; + StdVideoH264PictureParameterSet const * pStdPPS = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH264InlineSessionParametersInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH264InlineSessionParametersInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH264PictureInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH264PictureInfoKHR.html + struct VideoDecodeH264PictureInfoKHR + { + using NativeType = VkVideoDecodeH264PictureInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264PictureInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureInfoKHR( StdVideoDecodeH264PictureInfo const * pStdPictureInfo_ = {}, + uint32_t sliceCount_ = {}, + uint32_t const * pSliceOffsets_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdPictureInfo{ pStdPictureInfo_ } + , sliceCount{ sliceCount_ } + , pSliceOffsets{ pSliceOffsets_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeH264PictureInfoKHR( VideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264PictureInfoKHR( VkVideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264PictureInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH264PictureInfoKHR( StdVideoDecodeH264PictureInfo const * pStdPictureInfo_, + ArrayProxyNoTemporaries const & sliceOffsets_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ), pStdPictureInfo( pStdPictureInfo_ ), sliceCount( static_cast( sliceOffsets_.size() ) ), pSliceOffsets( sliceOffsets_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoDecodeH264PictureInfoKHR & operator=( VideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH264PictureInfoKHR & operator=( VkVideoDecodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setPStdPictureInfo( StdVideoDecodeH264PictureInfo const * pStdPictureInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR && setPStdPictureInfo( StdVideoDecodeH264PictureInfo const * pStdPictureInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setSliceCount( uint32_t sliceCount_ ) & VULKAN_HPP_NOEXCEPT + { + sliceCount = sliceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR && setSliceCount( uint32_t sliceCount_ ) && VULKAN_HPP_NOEXCEPT + { + sliceCount = sliceCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR & setPSliceOffsets( uint32_t const * pSliceOffsets_ ) & VULKAN_HPP_NOEXCEPT + { + pSliceOffsets = pSliceOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264PictureInfoKHR && setPSliceOffsets( uint32_t const * pSliceOffsets_ ) && VULKAN_HPP_NOEXCEPT + { + pSliceOffsets = pSliceOffsets_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH264PictureInfoKHR & setSliceOffsets( ArrayProxyNoTemporaries const & sliceOffsets_ ) VULKAN_HPP_NOEXCEPT + { + sliceCount = static_cast( sliceOffsets_.size() ); + pSliceOffsets = sliceOffsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH264PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264PictureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264PictureInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH264PictureInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdPictureInfo, sliceCount, pSliceOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264PictureInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && ( sliceCount == rhs.sliceCount ) && + ( pSliceOffsets == rhs.pSliceOffsets ); +# endif + } + + bool operator!=( VideoDecodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeH264PictureInfoKHR; + void const * pNext = {}; + StdVideoDecodeH264PictureInfo const * pStdPictureInfo = {}; + uint32_t sliceCount = {}; + uint32_t const * pSliceOffsets = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH264PictureInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH264PictureInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH264ProfileInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH264ProfileInfoKHR.html + struct VideoDecodeH264ProfileInfoKHR + { + using NativeType = VkVideoDecodeH264ProfileInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264ProfileInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoDecodeH264ProfileInfoKHR( StdVideoH264ProfileIdc stdProfileIdc_ = {}, + VideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout_ = VideoDecodeH264PictureLayoutFlagBitsKHR::eProgressive, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdProfileIdc{ stdProfileIdc_ } + , pictureLayout{ pictureLayout_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeH264ProfileInfoKHR( VideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264ProfileInfoKHR( VkVideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264ProfileInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeH264ProfileInfoKHR & operator=( VideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH264ProfileInfoKHR & operator=( VkVideoDecodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR & setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) & VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR && setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) && VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR & setPictureLayout( VideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout_ ) & VULKAN_HPP_NOEXCEPT + { + pictureLayout = pictureLayout_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264ProfileInfoKHR && setPictureLayout( VideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout_ ) && VULKAN_HPP_NOEXCEPT + { + pictureLayout = pictureLayout_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH264ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264ProfileInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH264ProfileInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfileIdc, pictureLayout ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoDecodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = pictureLayout <=> rhs.pictureLayout; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoDecodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ) == 0 ) && + ( pictureLayout == rhs.pictureLayout ); + } + + bool operator!=( VideoDecodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoDecodeH264ProfileInfoKHR; + void const * pNext = {}; + StdVideoH264ProfileIdc stdProfileIdc = {}; + VideoDecodeH264PictureLayoutFlagBitsKHR pictureLayout = VideoDecodeH264PictureLayoutFlagBitsKHR::eProgressive; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH264ProfileInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH264ProfileInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH264SessionParametersAddInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersAddInfoKHR.html + struct VideoDecodeH264SessionParametersAddInfoKHR + { + using NativeType = VkVideoDecodeH264SessionParametersAddInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264SessionParametersAddInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersAddInfoKHR( uint32_t stdSPSCount_ = {}, + StdVideoH264SequenceParameterSet const * pStdSPSs_ = {}, + uint32_t stdPPSCount_ = {}, + StdVideoH264PictureParameterSet const * pStdPPSs_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdSPSCount{ stdSPSCount_ } + , pStdSPSs{ pStdSPSs_ } + , stdPPSCount{ stdPPSCount_ } + , pStdPPSs{ pStdPPSs_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersAddInfoKHR( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264SessionParametersAddInfoKHR( VkVideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264SessionParametersAddInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH264SessionParametersAddInfoKHR( ArrayProxyNoTemporaries const & stdSPSs_, + ArrayProxyNoTemporaries const & stdPPSs_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , stdSPSCount( static_cast( stdSPSs_.size() ) ) + , pStdSPSs( stdSPSs_.data() ) + , stdPPSCount( static_cast( stdPPSs_.size() ) ) + , pStdPPSs( stdPPSs_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoDecodeH264SessionParametersAddInfoKHR & operator=( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH264SessionParametersAddInfoKHR & operator=( VkVideoDecodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdSPSCount = stdSPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR && setStdSPSCount( uint32_t stdSPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdSPSCount = stdSPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setPStdSPSs( StdVideoH264SequenceParameterSet const * pStdSPSs_ ) & VULKAN_HPP_NOEXCEPT + { + pStdSPSs = pStdSPSs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR && setPStdSPSs( StdVideoH264SequenceParameterSet const * pStdSPSs_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSPSs = pStdSPSs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH264SessionParametersAddInfoKHR & + setStdSPSs( ArrayProxyNoTemporaries const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT + { + stdSPSCount = static_cast( stdSPSs_.size() ); + pStdSPSs = stdSPSs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdPPSCount = stdPPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR && setStdPPSCount( uint32_t stdPPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdPPSCount = stdPPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR & setPStdPPSs( StdVideoH264PictureParameterSet const * pStdPPSs_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPPSs = pStdPPSs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersAddInfoKHR && setPStdPPSs( StdVideoH264PictureParameterSet const * pStdPPSs_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdPPSs = pStdPPSs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH264SessionParametersAddInfoKHR & + setStdPPSs( ArrayProxyNoTemporaries const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT + { + stdPPSCount = static_cast( stdPPSs_.size() ); + pStdPPSs = stdPPSs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH264SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264SessionParametersAddInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH264SessionParametersAddInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264SessionParametersAddInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) && + ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs ); +# endif + } + + bool operator!=( VideoDecodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeH264SessionParametersAddInfoKHR; + void const * pNext = {}; + uint32_t stdSPSCount = {}; + StdVideoH264SequenceParameterSet const * pStdSPSs = {}; + uint32_t stdPPSCount = {}; + StdVideoH264PictureParameterSet const * pStdPPSs = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH264SessionParametersAddInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH264SessionParametersAddInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH264SessionParametersCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH264SessionParametersCreateInfoKHR.html + struct VideoDecodeH264SessionParametersCreateInfoKHR + { + using NativeType = VkVideoDecodeH264SessionParametersCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH264SessionParametersCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH264SessionParametersCreateInfoKHR( uint32_t maxStdSPSCount_ = {}, + uint32_t maxStdPPSCount_ = {}, + VideoDecodeH264SessionParametersAddInfoKHR const * pParametersAddInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxStdSPSCount{ maxStdSPSCount_ } + , maxStdPPSCount{ maxStdPPSCount_ } + , pParametersAddInfo{ pParametersAddInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoDecodeH264SessionParametersCreateInfoKHR( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH264SessionParametersCreateInfoKHR( VkVideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH264SessionParametersCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeH264SessionParametersCreateInfoKHR & operator=( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH264SessionParametersCreateInfoKHR & operator=( VkVideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxStdSPSCount = maxStdSPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR && setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxStdSPSCount = maxStdSPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxStdPPSCount = maxStdPPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR && setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxStdPPSCount = maxStdPPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR & + setPParametersAddInfo( VideoDecodeH264SessionParametersAddInfoKHR const * pParametersAddInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH264SessionParametersCreateInfoKHR && + setPParametersAddInfo( VideoDecodeH264SessionParametersAddInfoKHR const * pParametersAddInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH264SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH264SessionParametersCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH264SessionParametersCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH264SessionParametersCreateInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) && ( maxStdPPSCount == rhs.maxStdPPSCount ) && + ( pParametersAddInfo == rhs.pParametersAddInfo ); +# endif + } + + bool operator!=( VideoDecodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeH264SessionParametersCreateInfoKHR; + void const * pNext = {}; + uint32_t maxStdSPSCount = {}; + uint32_t maxStdPPSCount = {}; + VideoDecodeH264SessionParametersAddInfoKHR const * pParametersAddInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH264SessionParametersCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH264SessionParametersCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH265CapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH265CapabilitiesKHR.html + struct VideoDecodeH265CapabilitiesKHR + { + using NativeType = VkVideoDecodeH265CapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265CapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265CapabilitiesKHR( StdVideoH265LevelIdc maxLevelIdc_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxLevelIdc{ maxLevelIdc_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeH265CapabilitiesKHR( VideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265CapabilitiesKHR( VkVideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265CapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeH265CapabilitiesKHR & operator=( VideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH265CapabilitiesKHR & operator=( VkVideoDecodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoDecodeH265CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265CapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH265CapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxLevelIdc ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoDecodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoDecodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ) == 0 ); + } + + bool operator!=( VideoDecodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoDecodeH265CapabilitiesKHR; + void * pNext = {}; + StdVideoH265LevelIdc maxLevelIdc = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH265CapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH265CapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoDecodeH265DpbSlotInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH265DpbSlotInfoKHR.html + struct VideoDecodeH265DpbSlotInfoKHR + { + using NativeType = VkVideoDecodeH265DpbSlotInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265DpbSlotInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265DpbSlotInfoKHR( StdVideoDecodeH265ReferenceInfo const * pStdReferenceInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdReferenceInfo{ pStdReferenceInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeH265DpbSlotInfoKHR( VideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265DpbSlotInfoKHR( VkVideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265DpbSlotInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeH265DpbSlotInfoKHR & operator=( VideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH265DpbSlotInfoKHR & operator=( VkVideoDecodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoKHR & setPStdReferenceInfo( StdVideoDecodeH265ReferenceInfo const * pStdReferenceInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265DpbSlotInfoKHR && setPStdReferenceInfo( StdVideoDecodeH265ReferenceInfo const * pStdReferenceInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH265DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265DpbSlotInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH265DpbSlotInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdReferenceInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265DpbSlotInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo ); +# endif + } + + bool operator!=( VideoDecodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeH265DpbSlotInfoKHR; + void const * pNext = {}; + StdVideoDecodeH265ReferenceInfo const * pStdReferenceInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH265DpbSlotInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH265DpbSlotInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH265InlineSessionParametersInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH265InlineSessionParametersInfoKHR.html + struct VideoDecodeH265InlineSessionParametersInfoKHR + { + using NativeType = VkVideoDecodeH265InlineSessionParametersInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265InlineSessionParametersInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265InlineSessionParametersInfoKHR( StdVideoH265VideoParameterSet const * pStdVPS_ = {}, + StdVideoH265SequenceParameterSet const * pStdSPS_ = {}, + StdVideoH265PictureParameterSet const * pStdPPS_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdVPS{ pStdVPS_ } + , pStdSPS{ pStdSPS_ } + , pStdPPS{ pStdPPS_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoDecodeH265InlineSessionParametersInfoKHR( VideoDecodeH265InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265InlineSessionParametersInfoKHR( VkVideoDecodeH265InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265InlineSessionParametersInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeH265InlineSessionParametersInfoKHR & operator=( VideoDecodeH265InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH265InlineSessionParametersInfoKHR & operator=( VkVideoDecodeH265InlineSessionParametersInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265InlineSessionParametersInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265InlineSessionParametersInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265InlineSessionParametersInfoKHR & setPStdVPS( StdVideoH265VideoParameterSet const * pStdVPS_ ) & VULKAN_HPP_NOEXCEPT + { + pStdVPS = pStdVPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265InlineSessionParametersInfoKHR && setPStdVPS( StdVideoH265VideoParameterSet const * pStdVPS_ ) && VULKAN_HPP_NOEXCEPT + { + pStdVPS = pStdVPS_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265InlineSessionParametersInfoKHR & setPStdSPS( StdVideoH265SequenceParameterSet const * pStdSPS_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdSPS = pStdSPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265InlineSessionParametersInfoKHR && setPStdSPS( StdVideoH265SequenceParameterSet const * pStdSPS_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSPS = pStdSPS_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265InlineSessionParametersInfoKHR & setPStdPPS( StdVideoH265PictureParameterSet const * pStdPPS_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPPS = pStdPPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265InlineSessionParametersInfoKHR && setPStdPPS( StdVideoH265PictureParameterSet const * pStdPPS_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdPPS = pStdPPS_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH265InlineSessionParametersInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265InlineSessionParametersInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265InlineSessionParametersInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH265InlineSessionParametersInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdVPS, pStdSPS, pStdPPS ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265InlineSessionParametersInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeH265InlineSessionParametersInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdVPS == rhs.pStdVPS ) && ( pStdSPS == rhs.pStdSPS ) && ( pStdPPS == rhs.pStdPPS ); +# endif + } + + bool operator!=( VideoDecodeH265InlineSessionParametersInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeH265InlineSessionParametersInfoKHR; + void const * pNext = {}; + StdVideoH265VideoParameterSet const * pStdVPS = {}; + StdVideoH265SequenceParameterSet const * pStdSPS = {}; + StdVideoH265PictureParameterSet const * pStdPPS = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH265InlineSessionParametersInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH265InlineSessionParametersInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH265PictureInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH265PictureInfoKHR.html + struct VideoDecodeH265PictureInfoKHR + { + using NativeType = VkVideoDecodeH265PictureInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265PictureInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265PictureInfoKHR( StdVideoDecodeH265PictureInfo const * pStdPictureInfo_ = {}, + uint32_t sliceSegmentCount_ = {}, + uint32_t const * pSliceSegmentOffsets_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdPictureInfo{ pStdPictureInfo_ } + , sliceSegmentCount{ sliceSegmentCount_ } + , pSliceSegmentOffsets{ pSliceSegmentOffsets_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeH265PictureInfoKHR( VideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265PictureInfoKHR( VkVideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265PictureInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265PictureInfoKHR( StdVideoDecodeH265PictureInfo const * pStdPictureInfo_, + ArrayProxyNoTemporaries const & sliceSegmentOffsets_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , pStdPictureInfo( pStdPictureInfo_ ) + , sliceSegmentCount( static_cast( sliceSegmentOffsets_.size() ) ) + , pSliceSegmentOffsets( sliceSegmentOffsets_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoDecodeH265PictureInfoKHR & operator=( VideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH265PictureInfoKHR & operator=( VkVideoDecodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setPStdPictureInfo( StdVideoDecodeH265PictureInfo const * pStdPictureInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR && setPStdPictureInfo( StdVideoDecodeH265PictureInfo const * pStdPictureInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setSliceSegmentCount( uint32_t sliceSegmentCount_ ) & VULKAN_HPP_NOEXCEPT + { + sliceSegmentCount = sliceSegmentCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR && setSliceSegmentCount( uint32_t sliceSegmentCount_ ) && VULKAN_HPP_NOEXCEPT + { + sliceSegmentCount = sliceSegmentCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR & setPSliceSegmentOffsets( uint32_t const * pSliceSegmentOffsets_ ) & VULKAN_HPP_NOEXCEPT + { + pSliceSegmentOffsets = pSliceSegmentOffsets_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265PictureInfoKHR && setPSliceSegmentOffsets( uint32_t const * pSliceSegmentOffsets_ ) && VULKAN_HPP_NOEXCEPT + { + pSliceSegmentOffsets = pSliceSegmentOffsets_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265PictureInfoKHR & setSliceSegmentOffsets( ArrayProxyNoTemporaries const & sliceSegmentOffsets_ ) VULKAN_HPP_NOEXCEPT + { + sliceSegmentCount = static_cast( sliceSegmentOffsets_.size() ); + pSliceSegmentOffsets = sliceSegmentOffsets_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH265PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265PictureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265PictureInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH265PictureInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdPictureInfo, sliceSegmentCount, pSliceSegmentOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265PictureInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && ( sliceSegmentCount == rhs.sliceSegmentCount ) && + ( pSliceSegmentOffsets == rhs.pSliceSegmentOffsets ); +# endif + } + + bool operator!=( VideoDecodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeH265PictureInfoKHR; + void const * pNext = {}; + StdVideoDecodeH265PictureInfo const * pStdPictureInfo = {}; + uint32_t sliceSegmentCount = {}; + uint32_t const * pSliceSegmentOffsets = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH265PictureInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH265PictureInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH265ProfileInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH265ProfileInfoKHR.html + struct VideoDecodeH265ProfileInfoKHR + { + using NativeType = VkVideoDecodeH265ProfileInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265ProfileInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265ProfileInfoKHR( StdVideoH265ProfileIdc stdProfileIdc_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdProfileIdc{ stdProfileIdc_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeH265ProfileInfoKHR( VideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265ProfileInfoKHR( VkVideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265ProfileInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeH265ProfileInfoKHR & operator=( VideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH265ProfileInfoKHR & operator=( VkVideoDecodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileInfoKHR & setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) & VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265ProfileInfoKHR && setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) && VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH265ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265ProfileInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH265ProfileInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfileIdc ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoDecodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoDecodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ) == 0 ); + } + + bool operator!=( VideoDecodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoDecodeH265ProfileInfoKHR; + void const * pNext = {}; + StdVideoH265ProfileIdc stdProfileIdc = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH265ProfileInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH265ProfileInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH265SessionParametersAddInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersAddInfoKHR.html + struct VideoDecodeH265SessionParametersAddInfoKHR + { + using NativeType = VkVideoDecodeH265SessionParametersAddInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265SessionParametersAddInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersAddInfoKHR( uint32_t stdVPSCount_ = {}, + StdVideoH265VideoParameterSet const * pStdVPSs_ = {}, + uint32_t stdSPSCount_ = {}, + StdVideoH265SequenceParameterSet const * pStdSPSs_ = {}, + uint32_t stdPPSCount_ = {}, + StdVideoH265PictureParameterSet const * pStdPPSs_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdVPSCount{ stdVPSCount_ } + , pStdVPSs{ pStdVPSs_ } + , stdSPSCount{ stdSPSCount_ } + , pStdSPSs{ pStdSPSs_ } + , stdPPSCount{ stdPPSCount_ } + , pStdPPSs{ pStdPPSs_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersAddInfoKHR( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265SessionParametersAddInfoKHR( VkVideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265SessionParametersAddInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265SessionParametersAddInfoKHR( ArrayProxyNoTemporaries const & stdVPSs_, + ArrayProxyNoTemporaries const & stdSPSs_ = {}, + ArrayProxyNoTemporaries const & stdPPSs_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , stdVPSCount( static_cast( stdVPSs_.size() ) ) + , pStdVPSs( stdVPSs_.data() ) + , stdSPSCount( static_cast( stdSPSs_.size() ) ) + , pStdSPSs( stdSPSs_.data() ) + , stdPPSCount( static_cast( stdPPSs_.size() ) ) + , pStdPPSs( stdPPSs_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoDecodeH265SessionParametersAddInfoKHR & operator=( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH265SessionParametersAddInfoKHR & operator=( VkVideoDecodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setStdVPSCount( uint32_t stdVPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdVPSCount = stdVPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR && setStdVPSCount( uint32_t stdVPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdVPSCount = stdVPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPStdVPSs( StdVideoH265VideoParameterSet const * pStdVPSs_ ) & VULKAN_HPP_NOEXCEPT + { + pStdVPSs = pStdVPSs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR && setPStdVPSs( StdVideoH265VideoParameterSet const * pStdVPSs_ ) && VULKAN_HPP_NOEXCEPT + { + pStdVPSs = pStdVPSs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265SessionParametersAddInfoKHR & setStdVPSs( ArrayProxyNoTemporaries const & stdVPSs_ ) VULKAN_HPP_NOEXCEPT + { + stdVPSCount = static_cast( stdVPSs_.size() ); + pStdVPSs = stdVPSs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdSPSCount = stdSPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR && setStdSPSCount( uint32_t stdSPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdSPSCount = stdSPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPStdSPSs( StdVideoH265SequenceParameterSet const * pStdSPSs_ ) & VULKAN_HPP_NOEXCEPT + { + pStdSPSs = pStdSPSs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR && setPStdSPSs( StdVideoH265SequenceParameterSet const * pStdSPSs_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSPSs = pStdSPSs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265SessionParametersAddInfoKHR & + setStdSPSs( ArrayProxyNoTemporaries const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT + { + stdSPSCount = static_cast( stdSPSs_.size() ); + pStdSPSs = stdSPSs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdPPSCount = stdPPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR && setStdPPSCount( uint32_t stdPPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdPPSCount = stdPPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR & setPStdPPSs( StdVideoH265PictureParameterSet const * pStdPPSs_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPPSs = pStdPPSs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersAddInfoKHR && setPStdPPSs( StdVideoH265PictureParameterSet const * pStdPPSs_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdPPSs = pStdPPSs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeH265SessionParametersAddInfoKHR & + setStdPPSs( ArrayProxyNoTemporaries const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT + { + stdPPSCount = static_cast( stdPPSs_.size() ); + pStdPPSs = stdPPSs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH265SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265SessionParametersAddInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH265SessionParametersAddInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdVPSCount, pStdVPSs, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265SessionParametersAddInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdVPSCount == rhs.stdVPSCount ) && ( pStdVPSs == rhs.pStdVPSs ) && + ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) && ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs ); +# endif + } + + bool operator!=( VideoDecodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeH265SessionParametersAddInfoKHR; + void const * pNext = {}; + uint32_t stdVPSCount = {}; + StdVideoH265VideoParameterSet const * pStdVPSs = {}; + uint32_t stdSPSCount = {}; + StdVideoH265SequenceParameterSet const * pStdSPSs = {}; + uint32_t stdPPSCount = {}; + StdVideoH265PictureParameterSet const * pStdPPSs = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH265SessionParametersAddInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH265SessionParametersAddInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeH265SessionParametersCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeH265SessionParametersCreateInfoKHR.html + struct VideoDecodeH265SessionParametersCreateInfoKHR + { + using NativeType = VkVideoDecodeH265SessionParametersCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeH265SessionParametersCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeH265SessionParametersCreateInfoKHR( uint32_t maxStdVPSCount_ = {}, + uint32_t maxStdSPSCount_ = {}, + uint32_t maxStdPPSCount_ = {}, + VideoDecodeH265SessionParametersAddInfoKHR const * pParametersAddInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxStdVPSCount{ maxStdVPSCount_ } + , maxStdSPSCount{ maxStdSPSCount_ } + , maxStdPPSCount{ maxStdPPSCount_ } + , pParametersAddInfo{ pParametersAddInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoDecodeH265SessionParametersCreateInfoKHR( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeH265SessionParametersCreateInfoKHR( VkVideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeH265SessionParametersCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeH265SessionParametersCreateInfoKHR & operator=( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeH265SessionParametersCreateInfoKHR & operator=( VkVideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setMaxStdVPSCount( uint32_t maxStdVPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxStdVPSCount = maxStdVPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR && setMaxStdVPSCount( uint32_t maxStdVPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxStdVPSCount = maxStdVPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxStdSPSCount = maxStdSPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR && setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxStdSPSCount = maxStdSPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxStdPPSCount = maxStdPPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR && setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxStdPPSCount = maxStdPPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR & + setPParametersAddInfo( VideoDecodeH265SessionParametersAddInfoKHR const * pParametersAddInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeH265SessionParametersCreateInfoKHR && + setPParametersAddInfo( VideoDecodeH265SessionParametersAddInfoKHR const * pParametersAddInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeH265SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeH265SessionParametersCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeH265SessionParametersCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxStdVPSCount, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeH265SessionParametersCreateInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdVPSCount == rhs.maxStdVPSCount ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) && + ( maxStdPPSCount == rhs.maxStdPPSCount ) && ( pParametersAddInfo == rhs.pParametersAddInfo ); +# endif + } + + bool operator!=( VideoDecodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeH265SessionParametersCreateInfoKHR; + void const * pNext = {}; + uint32_t maxStdVPSCount = {}; + uint32_t maxStdSPSCount = {}; + uint32_t maxStdPPSCount = {}; + VideoDecodeH265SessionParametersAddInfoKHR const * pParametersAddInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeH265SessionParametersCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeH265SessionParametersCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeInfoKHR.html + struct VideoDecodeInfoKHR + { + using NativeType = VkVideoDecodeInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeInfoKHR( VideoDecodeFlagsKHR flags_ = {}, + Buffer srcBuffer_ = {}, + DeviceSize srcBufferOffset_ = {}, + DeviceSize srcBufferRange_ = {}, + VideoPictureResourceInfoKHR dstPictureResource_ = {}, + VideoReferenceSlotInfoKHR const * pSetupReferenceSlot_ = {}, + uint32_t referenceSlotCount_ = {}, + VideoReferenceSlotInfoKHR const * pReferenceSlots_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , srcBuffer{ srcBuffer_ } + , srcBufferOffset{ srcBufferOffset_ } + , srcBufferRange{ srcBufferRange_ } + , dstPictureResource{ dstPictureResource_ } + , pSetupReferenceSlot{ pSetupReferenceSlot_ } + , referenceSlotCount{ referenceSlotCount_ } + , pReferenceSlots{ pReferenceSlots_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeInfoKHR( VideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeInfoKHR( VkVideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : VideoDecodeInfoKHR( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeInfoKHR( VideoDecodeFlagsKHR flags_, + Buffer srcBuffer_, + DeviceSize srcBufferOffset_, + DeviceSize srcBufferRange_, + VideoPictureResourceInfoKHR dstPictureResource_, + VideoReferenceSlotInfoKHR const * pSetupReferenceSlot_, + ArrayProxyNoTemporaries const & referenceSlots_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , srcBuffer( srcBuffer_ ) + , srcBufferOffset( srcBufferOffset_ ) + , srcBufferRange( srcBufferRange_ ) + , dstPictureResource( dstPictureResource_ ) + , pSetupReferenceSlot( pSetupReferenceSlot_ ) + , referenceSlotCount( static_cast( referenceSlots_.size() ) ) + , pReferenceSlots( referenceSlots_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoDecodeInfoKHR & operator=( VideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeInfoKHR & operator=( VkVideoDecodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setFlags( VideoDecodeFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR && setFlags( VideoDecodeFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setSrcBuffer( Buffer srcBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + srcBuffer = srcBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR && setSrcBuffer( Buffer srcBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + srcBuffer = srcBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setSrcBufferOffset( DeviceSize srcBufferOffset_ ) & VULKAN_HPP_NOEXCEPT + { + srcBufferOffset = srcBufferOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR && setSrcBufferOffset( DeviceSize srcBufferOffset_ ) && VULKAN_HPP_NOEXCEPT + { + srcBufferOffset = srcBufferOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setSrcBufferRange( DeviceSize srcBufferRange_ ) & VULKAN_HPP_NOEXCEPT + { + srcBufferRange = srcBufferRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR && setSrcBufferRange( DeviceSize srcBufferRange_ ) && VULKAN_HPP_NOEXCEPT + { + srcBufferRange = srcBufferRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setDstPictureResource( VideoPictureResourceInfoKHR const & dstPictureResource_ ) & VULKAN_HPP_NOEXCEPT + { + dstPictureResource = dstPictureResource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR && setDstPictureResource( VideoPictureResourceInfoKHR const & dstPictureResource_ ) && VULKAN_HPP_NOEXCEPT + { + dstPictureResource = dstPictureResource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setPSetupReferenceSlot( VideoReferenceSlotInfoKHR const * pSetupReferenceSlot_ ) & VULKAN_HPP_NOEXCEPT + { + pSetupReferenceSlot = pSetupReferenceSlot_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR && setPSetupReferenceSlot( VideoReferenceSlotInfoKHR const * pSetupReferenceSlot_ ) && VULKAN_HPP_NOEXCEPT + { + pSetupReferenceSlot = pSetupReferenceSlot_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setReferenceSlotCount( uint32_t referenceSlotCount_ ) & VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = referenceSlotCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR && setReferenceSlotCount( uint32_t referenceSlotCount_ ) && VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = referenceSlotCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR & setPReferenceSlots( VideoReferenceSlotInfoKHR const * pReferenceSlots_ ) & VULKAN_HPP_NOEXCEPT + { + pReferenceSlots = pReferenceSlots_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeInfoKHR && setPReferenceSlots( VideoReferenceSlotInfoKHR const * pReferenceSlots_ ) && VULKAN_HPP_NOEXCEPT + { + pReferenceSlots = pReferenceSlots_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoDecodeInfoKHR & setReferenceSlots( ArrayProxyNoTemporaries const & referenceSlots_ ) VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = static_cast( referenceSlots_.size() ); + pReferenceSlots = referenceSlots_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( + sType, pNext, flags, srcBuffer, srcBufferOffset, srcBufferRange, dstPictureResource, pSetupReferenceSlot, referenceSlotCount, pReferenceSlots ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( srcBuffer == rhs.srcBuffer ) && + ( srcBufferOffset == rhs.srcBufferOffset ) && ( srcBufferRange == rhs.srcBufferRange ) && ( dstPictureResource == rhs.dstPictureResource ) && + ( pSetupReferenceSlot == rhs.pSetupReferenceSlot ) && ( referenceSlotCount == rhs.referenceSlotCount ) && + ( pReferenceSlots == rhs.pReferenceSlots ); +# endif + } + + bool operator!=( VideoDecodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeInfoKHR; + void const * pNext = {}; + VideoDecodeFlagsKHR flags = {}; + Buffer srcBuffer = {}; + DeviceSize srcBufferOffset = {}; + DeviceSize srcBufferRange = {}; + VideoPictureResourceInfoKHR dstPictureResource = {}; + VideoReferenceSlotInfoKHR const * pSetupReferenceSlot = {}; + uint32_t referenceSlotCount = {}; + VideoReferenceSlotInfoKHR const * pReferenceSlots = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeUsageInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeUsageInfoKHR.html + struct VideoDecodeUsageInfoKHR + { + using NativeType = VkVideoDecodeUsageInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeUsageInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeUsageInfoKHR( VideoDecodeUsageFlagsKHR videoUsageHints_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoUsageHints{ videoUsageHints_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeUsageInfoKHR( VideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeUsageInfoKHR( VkVideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeUsageInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeUsageInfoKHR & operator=( VideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeUsageInfoKHR & operator=( VkVideoDecodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeUsageInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeUsageInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeUsageInfoKHR & setVideoUsageHints( VideoDecodeUsageFlagsKHR videoUsageHints_ ) & VULKAN_HPP_NOEXCEPT + { + videoUsageHints = videoUsageHints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeUsageInfoKHR && setVideoUsageHints( VideoDecodeUsageFlagsKHR videoUsageHints_ ) && VULKAN_HPP_NOEXCEPT + { + videoUsageHints = videoUsageHints_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeUsageInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeUsageInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeUsageInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeUsageInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoUsageHints ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeUsageInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoUsageHints == rhs.videoUsageHints ); +# endif + } + + bool operator!=( VideoDecodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeUsageInfoKHR; + void const * pNext = {}; + VideoDecodeUsageFlagsKHR videoUsageHints = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeUsageInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeUsageInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeVP9CapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeVP9CapabilitiesKHR.html + struct VideoDecodeVP9CapabilitiesKHR + { + using NativeType = VkVideoDecodeVP9CapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeVp9CapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeVP9CapabilitiesKHR( StdVideoVP9Level maxLevel_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxLevel{ maxLevel_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeVP9CapabilitiesKHR( VideoDecodeVP9CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeVP9CapabilitiesKHR( VkVideoDecodeVP9CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeVP9CapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeVP9CapabilitiesKHR & operator=( VideoDecodeVP9CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeVP9CapabilitiesKHR & operator=( VkVideoDecodeVP9CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoDecodeVP9CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeVP9CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeVP9CapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeVP9CapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxLevel ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoDecodeVP9CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoVP9Level ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoDecodeVP9CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoVP9Level ) ) == 0 ); + } + + bool operator!=( VideoDecodeVP9CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoDecodeVp9CapabilitiesKHR; + void * pNext = {}; + StdVideoVP9Level maxLevel = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeVP9CapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeVP9CapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoDecodeVP9PictureInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeVP9PictureInfoKHR.html + struct VideoDecodeVP9PictureInfoKHR + { + using NativeType = VkVideoDecodeVP9PictureInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeVp9PictureInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR( StdVideoDecodeVP9PictureInfo const * pStdPictureInfo_ = {}, + std::array const & referenceNameSlotIndices_ = {}, + uint32_t uncompressedHeaderOffset_ = {}, + uint32_t compressedHeaderOffset_ = {}, + uint32_t tilesOffset_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdPictureInfo{ pStdPictureInfo_ } + , referenceNameSlotIndices{ referenceNameSlotIndices_ } + , uncompressedHeaderOffset{ uncompressedHeaderOffset_ } + , compressedHeaderOffset{ compressedHeaderOffset_ } + , tilesOffset{ tilesOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR( VideoDecodeVP9PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeVP9PictureInfoKHR( VkVideoDecodeVP9PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeVP9PictureInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeVP9PictureInfoKHR & operator=( VideoDecodeVP9PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeVP9PictureInfoKHR & operator=( VkVideoDecodeVP9PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR & setPStdPictureInfo( StdVideoDecodeVP9PictureInfo const * pStdPictureInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR && setPStdPictureInfo( StdVideoDecodeVP9PictureInfo const * pStdPictureInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR & + setReferenceNameSlotIndices( std::array referenceNameSlotIndices_ ) & + VULKAN_HPP_NOEXCEPT + { + referenceNameSlotIndices = referenceNameSlotIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR && + setReferenceNameSlotIndices( std::array referenceNameSlotIndices_ ) && + VULKAN_HPP_NOEXCEPT + { + referenceNameSlotIndices = referenceNameSlotIndices_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR & setUncompressedHeaderOffset( uint32_t uncompressedHeaderOffset_ ) & VULKAN_HPP_NOEXCEPT + { + uncompressedHeaderOffset = uncompressedHeaderOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR && setUncompressedHeaderOffset( uint32_t uncompressedHeaderOffset_ ) && VULKAN_HPP_NOEXCEPT + { + uncompressedHeaderOffset = uncompressedHeaderOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR & setCompressedHeaderOffset( uint32_t compressedHeaderOffset_ ) & VULKAN_HPP_NOEXCEPT + { + compressedHeaderOffset = compressedHeaderOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR && setCompressedHeaderOffset( uint32_t compressedHeaderOffset_ ) && VULKAN_HPP_NOEXCEPT + { + compressedHeaderOffset = compressedHeaderOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR & setTilesOffset( uint32_t tilesOffset_ ) & VULKAN_HPP_NOEXCEPT + { + tilesOffset = tilesOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9PictureInfoKHR && setTilesOffset( uint32_t tilesOffset_ ) && VULKAN_HPP_NOEXCEPT + { + tilesOffset = tilesOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeVP9PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeVP9PictureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeVP9PictureInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeVP9PictureInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + uint32_t const &, + uint32_t const &, + uint32_t const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdPictureInfo, referenceNameSlotIndices, uncompressedHeaderOffset, compressedHeaderOffset, tilesOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoDecodeVP9PictureInfoKHR const & ) const = default; +#else + bool operator==( VideoDecodeVP9PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && + ( referenceNameSlotIndices == rhs.referenceNameSlotIndices ) && ( uncompressedHeaderOffset == rhs.uncompressedHeaderOffset ) && + ( compressedHeaderOffset == rhs.compressedHeaderOffset ) && ( tilesOffset == rhs.tilesOffset ); +# endif + } + + bool operator!=( VideoDecodeVP9PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoDecodeVp9PictureInfoKHR; + void const * pNext = {}; + StdVideoDecodeVP9PictureInfo const * pStdPictureInfo = {}; + ArrayWrapper1D referenceNameSlotIndices = {}; + uint32_t uncompressedHeaderOffset = {}; + uint32_t compressedHeaderOffset = {}; + uint32_t tilesOffset = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeVP9PictureInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeVP9PictureInfoKHR; + }; + + // wrapper struct for struct VkVideoDecodeVP9ProfileInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoDecodeVP9ProfileInfoKHR.html + struct VideoDecodeVP9ProfileInfoKHR + { + using NativeType = VkVideoDecodeVP9ProfileInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoDecodeVp9ProfileInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoDecodeVP9ProfileInfoKHR( StdVideoVP9Profile stdProfile_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdProfile{ stdProfile_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoDecodeVP9ProfileInfoKHR( VideoDecodeVP9ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoDecodeVP9ProfileInfoKHR( VkVideoDecodeVP9ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoDecodeVP9ProfileInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoDecodeVP9ProfileInfoKHR & operator=( VideoDecodeVP9ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoDecodeVP9ProfileInfoKHR & operator=( VkVideoDecodeVP9ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9ProfileInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9ProfileInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9ProfileInfoKHR & setStdProfile( StdVideoVP9Profile stdProfile_ ) & VULKAN_HPP_NOEXCEPT + { + stdProfile = stdProfile_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoDecodeVP9ProfileInfoKHR && setStdProfile( StdVideoVP9Profile stdProfile_ ) && VULKAN_HPP_NOEXCEPT + { + stdProfile = stdProfile_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoDecodeVP9ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeVP9ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoDecodeVP9ProfileInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoDecodeVP9ProfileInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfile ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoDecodeVP9ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfile, &rhs.stdProfile, sizeof( StdVideoVP9Profile ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoDecodeVP9ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfile, &rhs.stdProfile, sizeof( StdVideoVP9Profile ) ) == 0 ); + } + + bool operator!=( VideoDecodeVP9ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoDecodeVp9ProfileInfoKHR; + void const * pNext = {}; + StdVideoVP9Profile stdProfile = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoDecodeVP9ProfileInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoDecodeVP9ProfileInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1CapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1CapabilitiesKHR.html + struct VideoEncodeAV1CapabilitiesKHR + { + using NativeType = VkVideoEncodeAV1CapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1CapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeAV1CapabilitiesKHR( VideoEncodeAV1CapabilityFlagsKHR flags_ = {}, + StdVideoAV1Level maxLevel_ = {}, + Extent2D codedPictureAlignment_ = {}, + Extent2D maxTiles_ = {}, + Extent2D minTileSize_ = {}, + Extent2D maxTileSize_ = {}, + VideoEncodeAV1SuperblockSizeFlagsKHR superblockSizes_ = {}, + uint32_t maxSingleReferenceCount_ = {}, + uint32_t singleReferenceNameMask_ = {}, + uint32_t maxUnidirectionalCompoundReferenceCount_ = {}, + uint32_t maxUnidirectionalCompoundGroup1ReferenceCount_ = {}, + uint32_t unidirectionalCompoundReferenceNameMask_ = {}, + uint32_t maxBidirectionalCompoundReferenceCount_ = {}, + uint32_t maxBidirectionalCompoundGroup1ReferenceCount_ = {}, + uint32_t maxBidirectionalCompoundGroup2ReferenceCount_ = {}, + uint32_t bidirectionalCompoundReferenceNameMask_ = {}, + uint32_t maxTemporalLayerCount_ = {}, + uint32_t maxSpatialLayerCount_ = {}, + uint32_t maxOperatingPoints_ = {}, + uint32_t minQIndex_ = {}, + uint32_t maxQIndex_ = {}, + Bool32 prefersGopRemainingFrames_ = {}, + Bool32 requiresGopRemainingFrames_ = {}, + VideoEncodeAV1StdFlagsKHR stdSyntaxFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , maxLevel{ maxLevel_ } + , codedPictureAlignment{ codedPictureAlignment_ } + , maxTiles{ maxTiles_ } + , minTileSize{ minTileSize_ } + , maxTileSize{ maxTileSize_ } + , superblockSizes{ superblockSizes_ } + , maxSingleReferenceCount{ maxSingleReferenceCount_ } + , singleReferenceNameMask{ singleReferenceNameMask_ } + , maxUnidirectionalCompoundReferenceCount{ maxUnidirectionalCompoundReferenceCount_ } + , maxUnidirectionalCompoundGroup1ReferenceCount{ maxUnidirectionalCompoundGroup1ReferenceCount_ } + , unidirectionalCompoundReferenceNameMask{ unidirectionalCompoundReferenceNameMask_ } + , maxBidirectionalCompoundReferenceCount{ maxBidirectionalCompoundReferenceCount_ } + , maxBidirectionalCompoundGroup1ReferenceCount{ maxBidirectionalCompoundGroup1ReferenceCount_ } + , maxBidirectionalCompoundGroup2ReferenceCount{ maxBidirectionalCompoundGroup2ReferenceCount_ } + , bidirectionalCompoundReferenceNameMask{ bidirectionalCompoundReferenceNameMask_ } + , maxTemporalLayerCount{ maxTemporalLayerCount_ } + , maxSpatialLayerCount{ maxSpatialLayerCount_ } + , maxOperatingPoints{ maxOperatingPoints_ } + , minQIndex{ minQIndex_ } + , maxQIndex{ maxQIndex_ } + , prefersGopRemainingFrames{ prefersGopRemainingFrames_ } + , requiresGopRemainingFrames{ requiresGopRemainingFrames_ } + , stdSyntaxFlags{ stdSyntaxFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1CapabilitiesKHR( VideoEncodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1CapabilitiesKHR( VkVideoEncodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1CapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1CapabilitiesKHR & operator=( VideoEncodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1CapabilitiesKHR & operator=( VkVideoEncodeAV1CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeAV1CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1CapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1CapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + maxLevel, + codedPictureAlignment, + maxTiles, + minTileSize, + maxTileSize, + superblockSizes, + maxSingleReferenceCount, + singleReferenceNameMask, + maxUnidirectionalCompoundReferenceCount, + maxUnidirectionalCompoundGroup1ReferenceCount, + unidirectionalCompoundReferenceNameMask, + maxBidirectionalCompoundReferenceCount, + maxBidirectionalCompoundGroup1ReferenceCount, + maxBidirectionalCompoundGroup2ReferenceCount, + bidirectionalCompoundReferenceNameMask, + maxTemporalLayerCount, + maxSpatialLayerCount, + maxOperatingPoints, + minQIndex, + maxQIndex, + prefersGopRemainingFrames, + requiresGopRemainingFrames, + stdSyntaxFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoAV1Level ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = codedPictureAlignment <=> rhs.codedPictureAlignment; cmp != 0 ) + return cmp; + if ( auto cmp = maxTiles <=> rhs.maxTiles; cmp != 0 ) + return cmp; + if ( auto cmp = minTileSize <=> rhs.minTileSize; cmp != 0 ) + return cmp; + if ( auto cmp = maxTileSize <=> rhs.maxTileSize; cmp != 0 ) + return cmp; + if ( auto cmp = superblockSizes <=> rhs.superblockSizes; cmp != 0 ) + return cmp; + if ( auto cmp = maxSingleReferenceCount <=> rhs.maxSingleReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = singleReferenceNameMask <=> rhs.singleReferenceNameMask; cmp != 0 ) + return cmp; + if ( auto cmp = maxUnidirectionalCompoundReferenceCount <=> rhs.maxUnidirectionalCompoundReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxUnidirectionalCompoundGroup1ReferenceCount <=> rhs.maxUnidirectionalCompoundGroup1ReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = unidirectionalCompoundReferenceNameMask <=> rhs.unidirectionalCompoundReferenceNameMask; cmp != 0 ) + return cmp; + if ( auto cmp = maxBidirectionalCompoundReferenceCount <=> rhs.maxBidirectionalCompoundReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxBidirectionalCompoundGroup1ReferenceCount <=> rhs.maxBidirectionalCompoundGroup1ReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxBidirectionalCompoundGroup2ReferenceCount <=> rhs.maxBidirectionalCompoundGroup2ReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = bidirectionalCompoundReferenceNameMask <=> rhs.bidirectionalCompoundReferenceNameMask; cmp != 0 ) + return cmp; + if ( auto cmp = maxTemporalLayerCount <=> rhs.maxTemporalLayerCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxSpatialLayerCount <=> rhs.maxSpatialLayerCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxOperatingPoints <=> rhs.maxOperatingPoints; cmp != 0 ) + return cmp; + if ( auto cmp = minQIndex <=> rhs.minQIndex; cmp != 0 ) + return cmp; + if ( auto cmp = maxQIndex <=> rhs.maxQIndex; cmp != 0 ) + return cmp; + if ( auto cmp = prefersGopRemainingFrames <=> rhs.prefersGopRemainingFrames; cmp != 0 ) + return cmp; + if ( auto cmp = requiresGopRemainingFrames <=> rhs.requiresGopRemainingFrames; cmp != 0 ) + return cmp; + if ( auto cmp = stdSyntaxFlags <=> rhs.stdSyntaxFlags; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoEncodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoAV1Level ) ) == 0 ) && ( codedPictureAlignment == rhs.codedPictureAlignment ) && + ( maxTiles == rhs.maxTiles ) && ( minTileSize == rhs.minTileSize ) && ( maxTileSize == rhs.maxTileSize ) && + ( superblockSizes == rhs.superblockSizes ) && ( maxSingleReferenceCount == rhs.maxSingleReferenceCount ) && + ( singleReferenceNameMask == rhs.singleReferenceNameMask ) && + ( maxUnidirectionalCompoundReferenceCount == rhs.maxUnidirectionalCompoundReferenceCount ) && + ( maxUnidirectionalCompoundGroup1ReferenceCount == rhs.maxUnidirectionalCompoundGroup1ReferenceCount ) && + ( unidirectionalCompoundReferenceNameMask == rhs.unidirectionalCompoundReferenceNameMask ) && + ( maxBidirectionalCompoundReferenceCount == rhs.maxBidirectionalCompoundReferenceCount ) && + ( maxBidirectionalCompoundGroup1ReferenceCount == rhs.maxBidirectionalCompoundGroup1ReferenceCount ) && + ( maxBidirectionalCompoundGroup2ReferenceCount == rhs.maxBidirectionalCompoundGroup2ReferenceCount ) && + ( bidirectionalCompoundReferenceNameMask == rhs.bidirectionalCompoundReferenceNameMask ) && + ( maxTemporalLayerCount == rhs.maxTemporalLayerCount ) && ( maxSpatialLayerCount == rhs.maxSpatialLayerCount ) && + ( maxOperatingPoints == rhs.maxOperatingPoints ) && ( minQIndex == rhs.minQIndex ) && ( maxQIndex == rhs.maxQIndex ) && + ( prefersGopRemainingFrames == rhs.prefersGopRemainingFrames ) && ( requiresGopRemainingFrames == rhs.requiresGopRemainingFrames ) && + ( stdSyntaxFlags == rhs.stdSyntaxFlags ); + } + + bool operator!=( VideoEncodeAV1CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoEncodeAv1CapabilitiesKHR; + void * pNext = {}; + VideoEncodeAV1CapabilityFlagsKHR flags = {}; + StdVideoAV1Level maxLevel = {}; + Extent2D codedPictureAlignment = {}; + Extent2D maxTiles = {}; + Extent2D minTileSize = {}; + Extent2D maxTileSize = {}; + VideoEncodeAV1SuperblockSizeFlagsKHR superblockSizes = {}; + uint32_t maxSingleReferenceCount = {}; + uint32_t singleReferenceNameMask = {}; + uint32_t maxUnidirectionalCompoundReferenceCount = {}; + uint32_t maxUnidirectionalCompoundGroup1ReferenceCount = {}; + uint32_t unidirectionalCompoundReferenceNameMask = {}; + uint32_t maxBidirectionalCompoundReferenceCount = {}; + uint32_t maxBidirectionalCompoundGroup1ReferenceCount = {}; + uint32_t maxBidirectionalCompoundGroup2ReferenceCount = {}; + uint32_t bidirectionalCompoundReferenceNameMask = {}; + uint32_t maxTemporalLayerCount = {}; + uint32_t maxSpatialLayerCount = {}; + uint32_t maxOperatingPoints = {}; + uint32_t minQIndex = {}; + uint32_t maxQIndex = {}; + Bool32 prefersGopRemainingFrames = {}; + Bool32 requiresGopRemainingFrames = {}; + VideoEncodeAV1StdFlagsKHR stdSyntaxFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1CapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1CapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1DpbSlotInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1DpbSlotInfoKHR.html + struct VideoEncodeAV1DpbSlotInfoKHR + { + using NativeType = VkVideoEncodeAV1DpbSlotInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1DpbSlotInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeAV1DpbSlotInfoKHR( StdVideoEncodeAV1ReferenceInfo const * pStdReferenceInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdReferenceInfo{ pStdReferenceInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1DpbSlotInfoKHR( VideoEncodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1DpbSlotInfoKHR( VkVideoEncodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1DpbSlotInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1DpbSlotInfoKHR & operator=( VideoEncodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1DpbSlotInfoKHR & operator=( VkVideoEncodeAV1DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1DpbSlotInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1DpbSlotInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1DpbSlotInfoKHR & setPStdReferenceInfo( StdVideoEncodeAV1ReferenceInfo const * pStdReferenceInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1DpbSlotInfoKHR && setPStdReferenceInfo( StdVideoEncodeAV1ReferenceInfo const * pStdReferenceInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeAV1DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1DpbSlotInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1DpbSlotInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdReferenceInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeAV1DpbSlotInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeAV1DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo ); +# endif + } + + bool operator!=( VideoEncodeAV1DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeAv1DpbSlotInfoKHR; + void const * pNext = {}; + StdVideoEncodeAV1ReferenceInfo const * pStdReferenceInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1DpbSlotInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1DpbSlotInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1FrameSizeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1FrameSizeKHR.html + struct VideoEncodeAV1FrameSizeKHR + { + using NativeType = VkVideoEncodeAV1FrameSizeKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeAV1FrameSizeKHR( uint32_t intraFrameSize_ = {}, uint32_t predictiveFrameSize_ = {}, uint32_t bipredictiveFrameSize_ = {} ) VULKAN_HPP_NOEXCEPT + : intraFrameSize{ intraFrameSize_ } + , predictiveFrameSize{ predictiveFrameSize_ } + , bipredictiveFrameSize{ bipredictiveFrameSize_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1FrameSizeKHR( VideoEncodeAV1FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1FrameSizeKHR( VkVideoEncodeAV1FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1FrameSizeKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1FrameSizeKHR & operator=( VideoEncodeAV1FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1FrameSizeKHR & operator=( VkVideoEncodeAV1FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1FrameSizeKHR & setIntraFrameSize( uint32_t intraFrameSize_ ) & VULKAN_HPP_NOEXCEPT + { + intraFrameSize = intraFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1FrameSizeKHR && setIntraFrameSize( uint32_t intraFrameSize_ ) && VULKAN_HPP_NOEXCEPT + { + intraFrameSize = intraFrameSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1FrameSizeKHR & setPredictiveFrameSize( uint32_t predictiveFrameSize_ ) & VULKAN_HPP_NOEXCEPT + { + predictiveFrameSize = predictiveFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1FrameSizeKHR && setPredictiveFrameSize( uint32_t predictiveFrameSize_ ) && VULKAN_HPP_NOEXCEPT + { + predictiveFrameSize = predictiveFrameSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1FrameSizeKHR & setBipredictiveFrameSize( uint32_t bipredictiveFrameSize_ ) & VULKAN_HPP_NOEXCEPT + { + bipredictiveFrameSize = bipredictiveFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1FrameSizeKHR && setBipredictiveFrameSize( uint32_t bipredictiveFrameSize_ ) && VULKAN_HPP_NOEXCEPT + { + bipredictiveFrameSize = bipredictiveFrameSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeAV1FrameSizeKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1FrameSizeKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1FrameSizeKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1FrameSizeKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( intraFrameSize, predictiveFrameSize, bipredictiveFrameSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeAV1FrameSizeKHR const & ) const = default; +#else + bool operator==( VideoEncodeAV1FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( intraFrameSize == rhs.intraFrameSize ) && ( predictiveFrameSize == rhs.predictiveFrameSize ) && + ( bipredictiveFrameSize == rhs.bipredictiveFrameSize ); +# endif + } + + bool operator!=( VideoEncodeAV1FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t intraFrameSize = {}; + uint32_t predictiveFrameSize = {}; + uint32_t bipredictiveFrameSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1FrameSizeKHR; + }; +#endif + + // wrapper struct for struct VkVideoEncodeAV1GopRemainingFrameInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1GopRemainingFrameInfoKHR.html + struct VideoEncodeAV1GopRemainingFrameInfoKHR + { + using NativeType = VkVideoEncodeAV1GopRemainingFrameInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1GopRemainingFrameInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeAV1GopRemainingFrameInfoKHR( Bool32 useGopRemainingFrames_ = {}, + uint32_t gopRemainingIntra_ = {}, + uint32_t gopRemainingPredictive_ = {}, + uint32_t gopRemainingBipredictive_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , useGopRemainingFrames{ useGopRemainingFrames_ } + , gopRemainingIntra{ gopRemainingIntra_ } + , gopRemainingPredictive{ gopRemainingPredictive_ } + , gopRemainingBipredictive{ gopRemainingBipredictive_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1GopRemainingFrameInfoKHR( VideoEncodeAV1GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1GopRemainingFrameInfoKHR( VkVideoEncodeAV1GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1GopRemainingFrameInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1GopRemainingFrameInfoKHR & operator=( VideoEncodeAV1GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1GopRemainingFrameInfoKHR & operator=( VkVideoEncodeAV1GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1GopRemainingFrameInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1GopRemainingFrameInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1GopRemainingFrameInfoKHR & setUseGopRemainingFrames( Bool32 useGopRemainingFrames_ ) & VULKAN_HPP_NOEXCEPT + { + useGopRemainingFrames = useGopRemainingFrames_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1GopRemainingFrameInfoKHR && setUseGopRemainingFrames( Bool32 useGopRemainingFrames_ ) && VULKAN_HPP_NOEXCEPT + { + useGopRemainingFrames = useGopRemainingFrames_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1GopRemainingFrameInfoKHR & setGopRemainingIntra( uint32_t gopRemainingIntra_ ) & VULKAN_HPP_NOEXCEPT + { + gopRemainingIntra = gopRemainingIntra_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1GopRemainingFrameInfoKHR && setGopRemainingIntra( uint32_t gopRemainingIntra_ ) && VULKAN_HPP_NOEXCEPT + { + gopRemainingIntra = gopRemainingIntra_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1GopRemainingFrameInfoKHR & setGopRemainingPredictive( uint32_t gopRemainingPredictive_ ) & VULKAN_HPP_NOEXCEPT + { + gopRemainingPredictive = gopRemainingPredictive_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1GopRemainingFrameInfoKHR && setGopRemainingPredictive( uint32_t gopRemainingPredictive_ ) && VULKAN_HPP_NOEXCEPT + { + gopRemainingPredictive = gopRemainingPredictive_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1GopRemainingFrameInfoKHR & setGopRemainingBipredictive( uint32_t gopRemainingBipredictive_ ) & VULKAN_HPP_NOEXCEPT + { + gopRemainingBipredictive = gopRemainingBipredictive_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1GopRemainingFrameInfoKHR && setGopRemainingBipredictive( uint32_t gopRemainingBipredictive_ ) && VULKAN_HPP_NOEXCEPT + { + gopRemainingBipredictive = gopRemainingBipredictive_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeAV1GopRemainingFrameInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1GopRemainingFrameInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1GopRemainingFrameInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1GopRemainingFrameInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, useGopRemainingFrames, gopRemainingIntra, gopRemainingPredictive, gopRemainingBipredictive ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeAV1GopRemainingFrameInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeAV1GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useGopRemainingFrames == rhs.useGopRemainingFrames ) && + ( gopRemainingIntra == rhs.gopRemainingIntra ) && ( gopRemainingPredictive == rhs.gopRemainingPredictive ) && + ( gopRemainingBipredictive == rhs.gopRemainingBipredictive ); +# endif + } + + bool operator!=( VideoEncodeAV1GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeAv1GopRemainingFrameInfoKHR; + void const * pNext = {}; + Bool32 useGopRemainingFrames = {}; + uint32_t gopRemainingIntra = {}; + uint32_t gopRemainingPredictive = {}; + uint32_t gopRemainingBipredictive = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1GopRemainingFrameInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1GopRemainingFrameInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1PictureInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1PictureInfoKHR.html + struct VideoEncodeAV1PictureInfoKHR + { + using NativeType = VkVideoEncodeAV1PictureInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1PictureInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR( VideoEncodeAV1PredictionModeKHR predictionMode_ = VideoEncodeAV1PredictionModeKHR::eIntraOnly, + VideoEncodeAV1RateControlGroupKHR rateControlGroup_ = VideoEncodeAV1RateControlGroupKHR::eIntra, + uint32_t constantQIndex_ = {}, + StdVideoEncodeAV1PictureInfo const * pStdPictureInfo_ = {}, + std::array const & referenceNameSlotIndices_ = {}, + Bool32 primaryReferenceCdfOnly_ = {}, + Bool32 generateObuExtensionHeader_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , predictionMode{ predictionMode_ } + , rateControlGroup{ rateControlGroup_ } + , constantQIndex{ constantQIndex_ } + , pStdPictureInfo{ pStdPictureInfo_ } + , referenceNameSlotIndices{ referenceNameSlotIndices_ } + , primaryReferenceCdfOnly{ primaryReferenceCdfOnly_ } + , generateObuExtensionHeader{ generateObuExtensionHeader_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR( VideoEncodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1PictureInfoKHR( VkVideoEncodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1PictureInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1PictureInfoKHR & operator=( VideoEncodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1PictureInfoKHR & operator=( VkVideoEncodeAV1PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR & setPredictionMode( VideoEncodeAV1PredictionModeKHR predictionMode_ ) & VULKAN_HPP_NOEXCEPT + { + predictionMode = predictionMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR && setPredictionMode( VideoEncodeAV1PredictionModeKHR predictionMode_ ) && VULKAN_HPP_NOEXCEPT + { + predictionMode = predictionMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR & setRateControlGroup( VideoEncodeAV1RateControlGroupKHR rateControlGroup_ ) & VULKAN_HPP_NOEXCEPT + { + rateControlGroup = rateControlGroup_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR && setRateControlGroup( VideoEncodeAV1RateControlGroupKHR rateControlGroup_ ) && VULKAN_HPP_NOEXCEPT + { + rateControlGroup = rateControlGroup_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR & setConstantQIndex( uint32_t constantQIndex_ ) & VULKAN_HPP_NOEXCEPT + { + constantQIndex = constantQIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR && setConstantQIndex( uint32_t constantQIndex_ ) && VULKAN_HPP_NOEXCEPT + { + constantQIndex = constantQIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR & setPStdPictureInfo( StdVideoEncodeAV1PictureInfo const * pStdPictureInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR && setPStdPictureInfo( StdVideoEncodeAV1PictureInfo const * pStdPictureInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR & + setReferenceNameSlotIndices( std::array referenceNameSlotIndices_ ) & + VULKAN_HPP_NOEXCEPT + { + referenceNameSlotIndices = referenceNameSlotIndices_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR && + setReferenceNameSlotIndices( std::array referenceNameSlotIndices_ ) && + VULKAN_HPP_NOEXCEPT + { + referenceNameSlotIndices = referenceNameSlotIndices_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR & setPrimaryReferenceCdfOnly( Bool32 primaryReferenceCdfOnly_ ) & VULKAN_HPP_NOEXCEPT + { + primaryReferenceCdfOnly = primaryReferenceCdfOnly_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR && setPrimaryReferenceCdfOnly( Bool32 primaryReferenceCdfOnly_ ) && VULKAN_HPP_NOEXCEPT + { + primaryReferenceCdfOnly = primaryReferenceCdfOnly_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR & setGenerateObuExtensionHeader( Bool32 generateObuExtensionHeader_ ) & VULKAN_HPP_NOEXCEPT + { + generateObuExtensionHeader = generateObuExtensionHeader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1PictureInfoKHR && setGenerateObuExtensionHeader( Bool32 generateObuExtensionHeader_ ) && VULKAN_HPP_NOEXCEPT + { + generateObuExtensionHeader = generateObuExtensionHeader_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeAV1PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1PictureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1PictureInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1PictureInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple const &, + Bool32 const &, + Bool32 const &> + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + predictionMode, + rateControlGroup, + constantQIndex, + pStdPictureInfo, + referenceNameSlotIndices, + primaryReferenceCdfOnly, + generateObuExtensionHeader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeAV1PictureInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeAV1PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( predictionMode == rhs.predictionMode ) && ( rateControlGroup == rhs.rateControlGroup ) && + ( constantQIndex == rhs.constantQIndex ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && + ( referenceNameSlotIndices == rhs.referenceNameSlotIndices ) && ( primaryReferenceCdfOnly == rhs.primaryReferenceCdfOnly ) && + ( generateObuExtensionHeader == rhs.generateObuExtensionHeader ); +# endif + } + + bool operator!=( VideoEncodeAV1PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeAv1PictureInfoKHR; + void const * pNext = {}; + VideoEncodeAV1PredictionModeKHR predictionMode = VideoEncodeAV1PredictionModeKHR::eIntraOnly; + VideoEncodeAV1RateControlGroupKHR rateControlGroup = VideoEncodeAV1RateControlGroupKHR::eIntra; + uint32_t constantQIndex = {}; + StdVideoEncodeAV1PictureInfo const * pStdPictureInfo = {}; + ArrayWrapper1D referenceNameSlotIndices = {}; + Bool32 primaryReferenceCdfOnly = {}; + Bool32 generateObuExtensionHeader = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1PictureInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1PictureInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1ProfileInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1ProfileInfoKHR.html + struct VideoEncodeAV1ProfileInfoKHR + { + using NativeType = VkVideoEncodeAV1ProfileInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1ProfileInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeAV1ProfileInfoKHR( StdVideoAV1Profile stdProfile_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdProfile{ stdProfile_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1ProfileInfoKHR( VideoEncodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1ProfileInfoKHR( VkVideoEncodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1ProfileInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1ProfileInfoKHR & operator=( VideoEncodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1ProfileInfoKHR & operator=( VkVideoEncodeAV1ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1ProfileInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1ProfileInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1ProfileInfoKHR & setStdProfile( StdVideoAV1Profile stdProfile_ ) & VULKAN_HPP_NOEXCEPT + { + stdProfile = stdProfile_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1ProfileInfoKHR && setStdProfile( StdVideoAV1Profile stdProfile_ ) && VULKAN_HPP_NOEXCEPT + { + stdProfile = stdProfile_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeAV1ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1ProfileInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1ProfileInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfile ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfile, &rhs.stdProfile, sizeof( StdVideoAV1Profile ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoEncodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfile, &rhs.stdProfile, sizeof( StdVideoAV1Profile ) ) == 0 ); + } + + bool operator!=( VideoEncodeAV1ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoEncodeAv1ProfileInfoKHR; + void const * pNext = {}; + StdVideoAV1Profile stdProfile = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1ProfileInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1ProfileInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1QIndexKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1QIndexKHR.html + struct VideoEncodeAV1QIndexKHR + { + using NativeType = VkVideoEncodeAV1QIndexKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeAV1QIndexKHR( uint32_t intraQIndex_ = {}, uint32_t predictiveQIndex_ = {}, uint32_t bipredictiveQIndex_ = {} ) VULKAN_HPP_NOEXCEPT + : intraQIndex{ intraQIndex_ } + , predictiveQIndex{ predictiveQIndex_ } + , bipredictiveQIndex{ bipredictiveQIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1QIndexKHR( VideoEncodeAV1QIndexKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1QIndexKHR( VkVideoEncodeAV1QIndexKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1QIndexKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1QIndexKHR & operator=( VideoEncodeAV1QIndexKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1QIndexKHR & operator=( VkVideoEncodeAV1QIndexKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1QIndexKHR & setIntraQIndex( uint32_t intraQIndex_ ) & VULKAN_HPP_NOEXCEPT + { + intraQIndex = intraQIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1QIndexKHR && setIntraQIndex( uint32_t intraQIndex_ ) && VULKAN_HPP_NOEXCEPT + { + intraQIndex = intraQIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1QIndexKHR & setPredictiveQIndex( uint32_t predictiveQIndex_ ) & VULKAN_HPP_NOEXCEPT + { + predictiveQIndex = predictiveQIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1QIndexKHR && setPredictiveQIndex( uint32_t predictiveQIndex_ ) && VULKAN_HPP_NOEXCEPT + { + predictiveQIndex = predictiveQIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1QIndexKHR & setBipredictiveQIndex( uint32_t bipredictiveQIndex_ ) & VULKAN_HPP_NOEXCEPT + { + bipredictiveQIndex = bipredictiveQIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1QIndexKHR && setBipredictiveQIndex( uint32_t bipredictiveQIndex_ ) && VULKAN_HPP_NOEXCEPT + { + bipredictiveQIndex = bipredictiveQIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeAV1QIndexKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1QIndexKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1QIndexKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1QIndexKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( intraQIndex, predictiveQIndex, bipredictiveQIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeAV1QIndexKHR const & ) const = default; +#else + bool operator==( VideoEncodeAV1QIndexKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( intraQIndex == rhs.intraQIndex ) && ( predictiveQIndex == rhs.predictiveQIndex ) && ( bipredictiveQIndex == rhs.bipredictiveQIndex ); +# endif + } + + bool operator!=( VideoEncodeAV1QIndexKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t intraQIndex = {}; + uint32_t predictiveQIndex = {}; + uint32_t bipredictiveQIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1QIndexKHR; + }; +#endif + + // wrapper struct for struct VkVideoEncodeAV1QualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1QualityLevelPropertiesKHR.html + struct VideoEncodeAV1QualityLevelPropertiesKHR + { + using NativeType = VkVideoEncodeAV1QualityLevelPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1QualityLevelPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeAV1QualityLevelPropertiesKHR( VideoEncodeAV1RateControlFlagsKHR preferredRateControlFlags_ = {}, + uint32_t preferredGopFrameCount_ = {}, + uint32_t preferredKeyFramePeriod_ = {}, + uint32_t preferredConsecutiveBipredictiveFrameCount_ = {}, + uint32_t preferredTemporalLayerCount_ = {}, + VideoEncodeAV1QIndexKHR preferredConstantQIndex_ = {}, + uint32_t preferredMaxSingleReferenceCount_ = {}, + uint32_t preferredSingleReferenceNameMask_ = {}, + uint32_t preferredMaxUnidirectionalCompoundReferenceCount_ = {}, + uint32_t preferredMaxUnidirectionalCompoundGroup1ReferenceCount_ = {}, + uint32_t preferredUnidirectionalCompoundReferenceNameMask_ = {}, + uint32_t preferredMaxBidirectionalCompoundReferenceCount_ = {}, + uint32_t preferredMaxBidirectionalCompoundGroup1ReferenceCount_ = {}, + uint32_t preferredMaxBidirectionalCompoundGroup2ReferenceCount_ = {}, + uint32_t preferredBidirectionalCompoundReferenceNameMask_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , preferredRateControlFlags{ preferredRateControlFlags_ } + , preferredGopFrameCount{ preferredGopFrameCount_ } + , preferredKeyFramePeriod{ preferredKeyFramePeriod_ } + , preferredConsecutiveBipredictiveFrameCount{ preferredConsecutiveBipredictiveFrameCount_ } + , preferredTemporalLayerCount{ preferredTemporalLayerCount_ } + , preferredConstantQIndex{ preferredConstantQIndex_ } + , preferredMaxSingleReferenceCount{ preferredMaxSingleReferenceCount_ } + , preferredSingleReferenceNameMask{ preferredSingleReferenceNameMask_ } + , preferredMaxUnidirectionalCompoundReferenceCount{ preferredMaxUnidirectionalCompoundReferenceCount_ } + , preferredMaxUnidirectionalCompoundGroup1ReferenceCount{ preferredMaxUnidirectionalCompoundGroup1ReferenceCount_ } + , preferredUnidirectionalCompoundReferenceNameMask{ preferredUnidirectionalCompoundReferenceNameMask_ } + , preferredMaxBidirectionalCompoundReferenceCount{ preferredMaxBidirectionalCompoundReferenceCount_ } + , preferredMaxBidirectionalCompoundGroup1ReferenceCount{ preferredMaxBidirectionalCompoundGroup1ReferenceCount_ } + , preferredMaxBidirectionalCompoundGroup2ReferenceCount{ preferredMaxBidirectionalCompoundGroup2ReferenceCount_ } + , preferredBidirectionalCompoundReferenceNameMask{ preferredBidirectionalCompoundReferenceNameMask_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1QualityLevelPropertiesKHR( VideoEncodeAV1QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1QualityLevelPropertiesKHR( VkVideoEncodeAV1QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1QualityLevelPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1QualityLevelPropertiesKHR & operator=( VideoEncodeAV1QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1QualityLevelPropertiesKHR & operator=( VkVideoEncodeAV1QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeAV1QualityLevelPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1QualityLevelPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1QualityLevelPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1QualityLevelPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + preferredRateControlFlags, + preferredGopFrameCount, + preferredKeyFramePeriod, + preferredConsecutiveBipredictiveFrameCount, + preferredTemporalLayerCount, + preferredConstantQIndex, + preferredMaxSingleReferenceCount, + preferredSingleReferenceNameMask, + preferredMaxUnidirectionalCompoundReferenceCount, + preferredMaxUnidirectionalCompoundGroup1ReferenceCount, + preferredUnidirectionalCompoundReferenceNameMask, + preferredMaxBidirectionalCompoundReferenceCount, + preferredMaxBidirectionalCompoundGroup1ReferenceCount, + preferredMaxBidirectionalCompoundGroup2ReferenceCount, + preferredBidirectionalCompoundReferenceNameMask ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeAV1QualityLevelPropertiesKHR const & ) const = default; +#else + bool operator==( VideoEncodeAV1QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredRateControlFlags == rhs.preferredRateControlFlags ) && + ( preferredGopFrameCount == rhs.preferredGopFrameCount ) && ( preferredKeyFramePeriod == rhs.preferredKeyFramePeriod ) && + ( preferredConsecutiveBipredictiveFrameCount == rhs.preferredConsecutiveBipredictiveFrameCount ) && + ( preferredTemporalLayerCount == rhs.preferredTemporalLayerCount ) && ( preferredConstantQIndex == rhs.preferredConstantQIndex ) && + ( preferredMaxSingleReferenceCount == rhs.preferredMaxSingleReferenceCount ) && + ( preferredSingleReferenceNameMask == rhs.preferredSingleReferenceNameMask ) && + ( preferredMaxUnidirectionalCompoundReferenceCount == rhs.preferredMaxUnidirectionalCompoundReferenceCount ) && + ( preferredMaxUnidirectionalCompoundGroup1ReferenceCount == rhs.preferredMaxUnidirectionalCompoundGroup1ReferenceCount ) && + ( preferredUnidirectionalCompoundReferenceNameMask == rhs.preferredUnidirectionalCompoundReferenceNameMask ) && + ( preferredMaxBidirectionalCompoundReferenceCount == rhs.preferredMaxBidirectionalCompoundReferenceCount ) && + ( preferredMaxBidirectionalCompoundGroup1ReferenceCount == rhs.preferredMaxBidirectionalCompoundGroup1ReferenceCount ) && + ( preferredMaxBidirectionalCompoundGroup2ReferenceCount == rhs.preferredMaxBidirectionalCompoundGroup2ReferenceCount ) && + ( preferredBidirectionalCompoundReferenceNameMask == rhs.preferredBidirectionalCompoundReferenceNameMask ); +# endif + } + + bool operator!=( VideoEncodeAV1QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeAv1QualityLevelPropertiesKHR; + void * pNext = {}; + VideoEncodeAV1RateControlFlagsKHR preferredRateControlFlags = {}; + uint32_t preferredGopFrameCount = {}; + uint32_t preferredKeyFramePeriod = {}; + uint32_t preferredConsecutiveBipredictiveFrameCount = {}; + uint32_t preferredTemporalLayerCount = {}; + VideoEncodeAV1QIndexKHR preferredConstantQIndex = {}; + uint32_t preferredMaxSingleReferenceCount = {}; + uint32_t preferredSingleReferenceNameMask = {}; + uint32_t preferredMaxUnidirectionalCompoundReferenceCount = {}; + uint32_t preferredMaxUnidirectionalCompoundGroup1ReferenceCount = {}; + uint32_t preferredUnidirectionalCompoundReferenceNameMask = {}; + uint32_t preferredMaxBidirectionalCompoundReferenceCount = {}; + uint32_t preferredMaxBidirectionalCompoundGroup1ReferenceCount = {}; + uint32_t preferredMaxBidirectionalCompoundGroup2ReferenceCount = {}; + uint32_t preferredBidirectionalCompoundReferenceNameMask = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1QualityLevelPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1QualityLevelPropertiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1QuantizationMapCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1QuantizationMapCapabilitiesKHR.html + struct VideoEncodeAV1QuantizationMapCapabilitiesKHR + { + using NativeType = VkVideoEncodeAV1QuantizationMapCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1QuantizationMapCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeAV1QuantizationMapCapabilitiesKHR( int32_t minQIndexDelta_ = {}, int32_t maxQIndexDelta_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minQIndexDelta{ minQIndexDelta_ } + , maxQIndexDelta{ maxQIndexDelta_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1QuantizationMapCapabilitiesKHR( VideoEncodeAV1QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1QuantizationMapCapabilitiesKHR( VkVideoEncodeAV1QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1QuantizationMapCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1QuantizationMapCapabilitiesKHR & operator=( VideoEncodeAV1QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1QuantizationMapCapabilitiesKHR & operator=( VkVideoEncodeAV1QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeAV1QuantizationMapCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1QuantizationMapCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1QuantizationMapCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1QuantizationMapCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minQIndexDelta, maxQIndexDelta ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeAV1QuantizationMapCapabilitiesKHR const & ) const = default; +#else + bool operator==( VideoEncodeAV1QuantizationMapCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minQIndexDelta == rhs.minQIndexDelta ) && ( maxQIndexDelta == rhs.maxQIndexDelta ); +# endif + } + + bool operator!=( VideoEncodeAV1QuantizationMapCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeAv1QuantizationMapCapabilitiesKHR; + void * pNext = {}; + int32_t minQIndexDelta = {}; + int32_t maxQIndexDelta = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1QuantizationMapCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1QuantizationMapCapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1RateControlInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlInfoKHR.html + struct VideoEncodeAV1RateControlInfoKHR + { + using NativeType = VkVideoEncodeAV1RateControlInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1RateControlInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeAV1RateControlInfoKHR( VideoEncodeAV1RateControlFlagsKHR flags_ = {}, + uint32_t gopFrameCount_ = {}, + uint32_t keyFramePeriod_ = {}, + uint32_t consecutiveBipredictiveFrameCount_ = {}, + uint32_t temporalLayerCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , gopFrameCount{ gopFrameCount_ } + , keyFramePeriod{ keyFramePeriod_ } + , consecutiveBipredictiveFrameCount{ consecutiveBipredictiveFrameCount_ } + , temporalLayerCount{ temporalLayerCount_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1RateControlInfoKHR( VideoEncodeAV1RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1RateControlInfoKHR( VkVideoEncodeAV1RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1RateControlInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1RateControlInfoKHR & operator=( VideoEncodeAV1RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1RateControlInfoKHR & operator=( VkVideoEncodeAV1RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR & setFlags( VideoEncodeAV1RateControlFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR && setFlags( VideoEncodeAV1RateControlFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR & setGopFrameCount( uint32_t gopFrameCount_ ) & VULKAN_HPP_NOEXCEPT + { + gopFrameCount = gopFrameCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR && setGopFrameCount( uint32_t gopFrameCount_ ) && VULKAN_HPP_NOEXCEPT + { + gopFrameCount = gopFrameCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR & setKeyFramePeriod( uint32_t keyFramePeriod_ ) & VULKAN_HPP_NOEXCEPT + { + keyFramePeriod = keyFramePeriod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR && setKeyFramePeriod( uint32_t keyFramePeriod_ ) && VULKAN_HPP_NOEXCEPT + { + keyFramePeriod = keyFramePeriod_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR & setConsecutiveBipredictiveFrameCount( uint32_t consecutiveBipredictiveFrameCount_ ) & + VULKAN_HPP_NOEXCEPT + { + consecutiveBipredictiveFrameCount = consecutiveBipredictiveFrameCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR && setConsecutiveBipredictiveFrameCount( uint32_t consecutiveBipredictiveFrameCount_ ) && + VULKAN_HPP_NOEXCEPT + { + consecutiveBipredictiveFrameCount = consecutiveBipredictiveFrameCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR & setTemporalLayerCount( uint32_t temporalLayerCount_ ) & VULKAN_HPP_NOEXCEPT + { + temporalLayerCount = temporalLayerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlInfoKHR && setTemporalLayerCount( uint32_t temporalLayerCount_ ) && VULKAN_HPP_NOEXCEPT + { + temporalLayerCount = temporalLayerCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeAV1RateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1RateControlInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1RateControlInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1RateControlInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, gopFrameCount, keyFramePeriod, consecutiveBipredictiveFrameCount, temporalLayerCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeAV1RateControlInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeAV1RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( gopFrameCount == rhs.gopFrameCount ) && + ( keyFramePeriod == rhs.keyFramePeriod ) && ( consecutiveBipredictiveFrameCount == rhs.consecutiveBipredictiveFrameCount ) && + ( temporalLayerCount == rhs.temporalLayerCount ); +# endif + } + + bool operator!=( VideoEncodeAV1RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeAv1RateControlInfoKHR; + void const * pNext = {}; + VideoEncodeAV1RateControlFlagsKHR flags = {}; + uint32_t gopFrameCount = {}; + uint32_t keyFramePeriod = {}; + uint32_t consecutiveBipredictiveFrameCount = {}; + uint32_t temporalLayerCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1RateControlInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1RateControlInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1RateControlLayerInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1RateControlLayerInfoKHR.html + struct VideoEncodeAV1RateControlLayerInfoKHR + { + using NativeType = VkVideoEncodeAV1RateControlLayerInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1RateControlLayerInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeAV1RateControlLayerInfoKHR( Bool32 useMinQIndex_ = {}, + VideoEncodeAV1QIndexKHR minQIndex_ = {}, + Bool32 useMaxQIndex_ = {}, + VideoEncodeAV1QIndexKHR maxQIndex_ = {}, + Bool32 useMaxFrameSize_ = {}, + VideoEncodeAV1FrameSizeKHR maxFrameSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , useMinQIndex{ useMinQIndex_ } + , minQIndex{ minQIndex_ } + , useMaxQIndex{ useMaxQIndex_ } + , maxQIndex{ maxQIndex_ } + , useMaxFrameSize{ useMaxFrameSize_ } + , maxFrameSize{ maxFrameSize_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1RateControlLayerInfoKHR( VideoEncodeAV1RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1RateControlLayerInfoKHR( VkVideoEncodeAV1RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1RateControlLayerInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1RateControlLayerInfoKHR & operator=( VideoEncodeAV1RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1RateControlLayerInfoKHR & operator=( VkVideoEncodeAV1RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR & setUseMinQIndex( Bool32 useMinQIndex_ ) & VULKAN_HPP_NOEXCEPT + { + useMinQIndex = useMinQIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR && setUseMinQIndex( Bool32 useMinQIndex_ ) && VULKAN_HPP_NOEXCEPT + { + useMinQIndex = useMinQIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR & setMinQIndex( VideoEncodeAV1QIndexKHR const & minQIndex_ ) & VULKAN_HPP_NOEXCEPT + { + minQIndex = minQIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR && setMinQIndex( VideoEncodeAV1QIndexKHR const & minQIndex_ ) && VULKAN_HPP_NOEXCEPT + { + minQIndex = minQIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR & setUseMaxQIndex( Bool32 useMaxQIndex_ ) & VULKAN_HPP_NOEXCEPT + { + useMaxQIndex = useMaxQIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR && setUseMaxQIndex( Bool32 useMaxQIndex_ ) && VULKAN_HPP_NOEXCEPT + { + useMaxQIndex = useMaxQIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR & setMaxQIndex( VideoEncodeAV1QIndexKHR const & maxQIndex_ ) & VULKAN_HPP_NOEXCEPT + { + maxQIndex = maxQIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR && setMaxQIndex( VideoEncodeAV1QIndexKHR const & maxQIndex_ ) && VULKAN_HPP_NOEXCEPT + { + maxQIndex = maxQIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR & setUseMaxFrameSize( Bool32 useMaxFrameSize_ ) & VULKAN_HPP_NOEXCEPT + { + useMaxFrameSize = useMaxFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR && setUseMaxFrameSize( Bool32 useMaxFrameSize_ ) && VULKAN_HPP_NOEXCEPT + { + useMaxFrameSize = useMaxFrameSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR & setMaxFrameSize( VideoEncodeAV1FrameSizeKHR const & maxFrameSize_ ) & VULKAN_HPP_NOEXCEPT + { + maxFrameSize = maxFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1RateControlLayerInfoKHR && setMaxFrameSize( VideoEncodeAV1FrameSizeKHR const & maxFrameSize_ ) && VULKAN_HPP_NOEXCEPT + { + maxFrameSize = maxFrameSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeAV1RateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1RateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1RateControlLayerInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1RateControlLayerInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, useMinQIndex, minQIndex, useMaxQIndex, maxQIndex, useMaxFrameSize, maxFrameSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeAV1RateControlLayerInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeAV1RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMinQIndex == rhs.useMinQIndex ) && ( minQIndex == rhs.minQIndex ) && + ( useMaxQIndex == rhs.useMaxQIndex ) && ( maxQIndex == rhs.maxQIndex ) && ( useMaxFrameSize == rhs.useMaxFrameSize ) && + ( maxFrameSize == rhs.maxFrameSize ); +# endif + } + + bool operator!=( VideoEncodeAV1RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeAv1RateControlLayerInfoKHR; + void const * pNext = {}; + Bool32 useMinQIndex = {}; + VideoEncodeAV1QIndexKHR minQIndex = {}; + Bool32 useMaxQIndex = {}; + VideoEncodeAV1QIndexKHR maxQIndex = {}; + Bool32 useMaxFrameSize = {}; + VideoEncodeAV1FrameSizeKHR maxFrameSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1RateControlLayerInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1RateControlLayerInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1SessionCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionCreateInfoKHR.html + struct VideoEncodeAV1SessionCreateInfoKHR + { + using NativeType = VkVideoEncodeAV1SessionCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1SessionCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeAV1SessionCreateInfoKHR( Bool32 useMaxLevel_ = {}, StdVideoAV1Level maxLevel_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , useMaxLevel{ useMaxLevel_ } + , maxLevel{ maxLevel_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1SessionCreateInfoKHR( VideoEncodeAV1SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1SessionCreateInfoKHR( VkVideoEncodeAV1SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1SessionCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeAV1SessionCreateInfoKHR & operator=( VideoEncodeAV1SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1SessionCreateInfoKHR & operator=( VkVideoEncodeAV1SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionCreateInfoKHR & setUseMaxLevel( Bool32 useMaxLevel_ ) & VULKAN_HPP_NOEXCEPT + { + useMaxLevel = useMaxLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionCreateInfoKHR && setUseMaxLevel( Bool32 useMaxLevel_ ) && VULKAN_HPP_NOEXCEPT + { + useMaxLevel = useMaxLevel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionCreateInfoKHR & setMaxLevel( StdVideoAV1Level maxLevel_ ) & VULKAN_HPP_NOEXCEPT + { + maxLevel = maxLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionCreateInfoKHR && setMaxLevel( StdVideoAV1Level maxLevel_ ) && VULKAN_HPP_NOEXCEPT + { + maxLevel = maxLevel_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeAV1SessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1SessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1SessionCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1SessionCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, useMaxLevel, maxLevel ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeAV1SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = useMaxLevel <=> rhs.useMaxLevel; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoAV1Level ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoEncodeAV1SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMaxLevel == rhs.useMaxLevel ) && + ( memcmp( &maxLevel, &rhs.maxLevel, sizeof( StdVideoAV1Level ) ) == 0 ); + } + + bool operator!=( VideoEncodeAV1SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoEncodeAv1SessionCreateInfoKHR; + void const * pNext = {}; + Bool32 useMaxLevel = {}; + StdVideoAV1Level maxLevel = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1SessionCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1SessionCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeAV1SessionParametersCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeAV1SessionParametersCreateInfoKHR.html + struct VideoEncodeAV1SessionParametersCreateInfoKHR + { + using NativeType = VkVideoEncodeAV1SessionParametersCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeAv1SessionParametersCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeAV1SessionParametersCreateInfoKHR( StdVideoAV1SequenceHeader const * pStdSequenceHeader_ = {}, + StdVideoEncodeAV1DecoderModelInfo const * pStdDecoderModelInfo_ = {}, + uint32_t stdOperatingPointCount_ = {}, + StdVideoEncodeAV1OperatingPointInfo const * pStdOperatingPoints_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdSequenceHeader{ pStdSequenceHeader_ } + , pStdDecoderModelInfo{ pStdDecoderModelInfo_ } + , stdOperatingPointCount{ stdOperatingPointCount_ } + , pStdOperatingPoints{ pStdOperatingPoints_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeAV1SessionParametersCreateInfoKHR( VideoEncodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeAV1SessionParametersCreateInfoKHR( VkVideoEncodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeAV1SessionParametersCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeAV1SessionParametersCreateInfoKHR( StdVideoAV1SequenceHeader const * pStdSequenceHeader_, + StdVideoEncodeAV1DecoderModelInfo const * pStdDecoderModelInfo_, + ArrayProxyNoTemporaries const & stdOperatingPoints_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , pStdSequenceHeader( pStdSequenceHeader_ ) + , pStdDecoderModelInfo( pStdDecoderModelInfo_ ) + , stdOperatingPointCount( static_cast( stdOperatingPoints_.size() ) ) + , pStdOperatingPoints( stdOperatingPoints_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoEncodeAV1SessionParametersCreateInfoKHR & operator=( VideoEncodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeAV1SessionParametersCreateInfoKHR & operator=( VkVideoEncodeAV1SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionParametersCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionParametersCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionParametersCreateInfoKHR & setPStdSequenceHeader( StdVideoAV1SequenceHeader const * pStdSequenceHeader_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdSequenceHeader = pStdSequenceHeader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionParametersCreateInfoKHR && setPStdSequenceHeader( StdVideoAV1SequenceHeader const * pStdSequenceHeader_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSequenceHeader = pStdSequenceHeader_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionParametersCreateInfoKHR & + setPStdDecoderModelInfo( StdVideoEncodeAV1DecoderModelInfo const * pStdDecoderModelInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdDecoderModelInfo = pStdDecoderModelInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionParametersCreateInfoKHR && + setPStdDecoderModelInfo( StdVideoEncodeAV1DecoderModelInfo const * pStdDecoderModelInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdDecoderModelInfo = pStdDecoderModelInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionParametersCreateInfoKHR & setStdOperatingPointCount( uint32_t stdOperatingPointCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdOperatingPointCount = stdOperatingPointCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionParametersCreateInfoKHR && setStdOperatingPointCount( uint32_t stdOperatingPointCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdOperatingPointCount = stdOperatingPointCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionParametersCreateInfoKHR & + setPStdOperatingPoints( StdVideoEncodeAV1OperatingPointInfo const * pStdOperatingPoints_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdOperatingPoints = pStdOperatingPoints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeAV1SessionParametersCreateInfoKHR && + setPStdOperatingPoints( StdVideoEncodeAV1OperatingPointInfo const * pStdOperatingPoints_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdOperatingPoints = pStdOperatingPoints_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeAV1SessionParametersCreateInfoKHR & + setStdOperatingPoints( ArrayProxyNoTemporaries const & stdOperatingPoints_ ) VULKAN_HPP_NOEXCEPT + { + stdOperatingPointCount = static_cast( stdOperatingPoints_.size() ); + pStdOperatingPoints = stdOperatingPoints_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeAV1SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1SessionParametersCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeAV1SessionParametersCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdSequenceHeader, pStdDecoderModelInfo, stdOperatingPointCount, pStdOperatingPoints ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeAV1SessionParametersCreateInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeAV1SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdSequenceHeader == rhs.pStdSequenceHeader ) && + ( pStdDecoderModelInfo == rhs.pStdDecoderModelInfo ) && ( stdOperatingPointCount == rhs.stdOperatingPointCount ) && + ( pStdOperatingPoints == rhs.pStdOperatingPoints ); +# endif + } + + bool operator!=( VideoEncodeAV1SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeAv1SessionParametersCreateInfoKHR; + void const * pNext = {}; + StdVideoAV1SequenceHeader const * pStdSequenceHeader = {}; + StdVideoEncodeAV1DecoderModelInfo const * pStdDecoderModelInfo = {}; + uint32_t stdOperatingPointCount = {}; + StdVideoEncodeAV1OperatingPointInfo const * pStdOperatingPoints = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeAV1SessionParametersCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeAV1SessionParametersCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeCapabilitiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeCapabilitiesKHR.html + struct VideoEncodeCapabilitiesKHR + { + using NativeType = VkVideoEncodeCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeCapabilitiesKHR( VideoEncodeCapabilityFlagsKHR flags_ = {}, + VideoEncodeRateControlModeFlagsKHR rateControlModes_ = {}, + uint32_t maxRateControlLayers_ = {}, + uint64_t maxBitrate_ = {}, + uint32_t maxQualityLevels_ = {}, + Extent2D encodeInputPictureGranularity_ = {}, + VideoEncodeFeedbackFlagsKHR supportedEncodeFeedbackFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , rateControlModes{ rateControlModes_ } + , maxRateControlLayers{ maxRateControlLayers_ } + , maxBitrate{ maxBitrate_ } + , maxQualityLevels{ maxQualityLevels_ } + , encodeInputPictureGranularity{ encodeInputPictureGranularity_ } + , supportedEncodeFeedbackFlags{ supportedEncodeFeedbackFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeCapabilitiesKHR( VideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeCapabilitiesKHR( VkVideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeCapabilitiesKHR & operator=( VideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeCapabilitiesKHR & operator=( VkVideoEncodeCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + rateControlModes, + maxRateControlLayers, + maxBitrate, + maxQualityLevels, + encodeInputPictureGranularity, + supportedEncodeFeedbackFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeCapabilitiesKHR const & ) const = default; +#else + bool operator==( VideoEncodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rateControlModes == rhs.rateControlModes ) && + ( maxRateControlLayers == rhs.maxRateControlLayers ) && ( maxBitrate == rhs.maxBitrate ) && ( maxQualityLevels == rhs.maxQualityLevels ) && + ( encodeInputPictureGranularity == rhs.encodeInputPictureGranularity ) && ( supportedEncodeFeedbackFlags == rhs.supportedEncodeFeedbackFlags ); +# endif + } + + bool operator!=( VideoEncodeCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeCapabilitiesKHR; + void * pNext = {}; + VideoEncodeCapabilityFlagsKHR flags = {}; + VideoEncodeRateControlModeFlagsKHR rateControlModes = {}; + uint32_t maxRateControlLayers = {}; + uint64_t maxBitrate = {}; + uint32_t maxQualityLevels = {}; + Extent2D encodeInputPictureGranularity = {}; + VideoEncodeFeedbackFlagsKHR supportedEncodeFeedbackFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeCapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264CapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264CapabilitiesKHR.html + struct VideoEncodeH264CapabilitiesKHR + { + using NativeType = VkVideoEncodeH264CapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264CapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264CapabilitiesKHR( VideoEncodeH264CapabilityFlagsKHR flags_ = {}, + StdVideoH264LevelIdc maxLevelIdc_ = {}, + uint32_t maxSliceCount_ = {}, + uint32_t maxPPictureL0ReferenceCount_ = {}, + uint32_t maxBPictureL0ReferenceCount_ = {}, + uint32_t maxL1ReferenceCount_ = {}, + uint32_t maxTemporalLayerCount_ = {}, + Bool32 expectDyadicTemporalLayerPattern_ = {}, + int32_t minQp_ = {}, + int32_t maxQp_ = {}, + Bool32 prefersGopRemainingFrames_ = {}, + Bool32 requiresGopRemainingFrames_ = {}, + VideoEncodeH264StdFlagsKHR stdSyntaxFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , maxLevelIdc{ maxLevelIdc_ } + , maxSliceCount{ maxSliceCount_ } + , maxPPictureL0ReferenceCount{ maxPPictureL0ReferenceCount_ } + , maxBPictureL0ReferenceCount{ maxBPictureL0ReferenceCount_ } + , maxL1ReferenceCount{ maxL1ReferenceCount_ } + , maxTemporalLayerCount{ maxTemporalLayerCount_ } + , expectDyadicTemporalLayerPattern{ expectDyadicTemporalLayerPattern_ } + , minQp{ minQp_ } + , maxQp{ maxQp_ } + , prefersGopRemainingFrames{ prefersGopRemainingFrames_ } + , requiresGopRemainingFrames{ requiresGopRemainingFrames_ } + , stdSyntaxFlags{ stdSyntaxFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264CapabilitiesKHR( VideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264CapabilitiesKHR( VkVideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264CapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264CapabilitiesKHR & operator=( VideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264CapabilitiesKHR & operator=( VkVideoEncodeH264CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeH264CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264CapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264CapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + maxLevelIdc, + maxSliceCount, + maxPPictureL0ReferenceCount, + maxBPictureL0ReferenceCount, + maxL1ReferenceCount, + maxTemporalLayerCount, + expectDyadicTemporalLayerPattern, + minQp, + maxQp, + prefersGopRemainingFrames, + requiresGopRemainingFrames, + stdSyntaxFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = maxSliceCount <=> rhs.maxSliceCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxPPictureL0ReferenceCount <=> rhs.maxPPictureL0ReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxBPictureL0ReferenceCount <=> rhs.maxBPictureL0ReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxL1ReferenceCount <=> rhs.maxL1ReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxTemporalLayerCount <=> rhs.maxTemporalLayerCount; cmp != 0 ) + return cmp; + if ( auto cmp = expectDyadicTemporalLayerPattern <=> rhs.expectDyadicTemporalLayerPattern; cmp != 0 ) + return cmp; + if ( auto cmp = minQp <=> rhs.minQp; cmp != 0 ) + return cmp; + if ( auto cmp = maxQp <=> rhs.maxQp; cmp != 0 ) + return cmp; + if ( auto cmp = prefersGopRemainingFrames <=> rhs.prefersGopRemainingFrames; cmp != 0 ) + return cmp; + if ( auto cmp = requiresGopRemainingFrames <=> rhs.requiresGopRemainingFrames; cmp != 0 ) + return cmp; + if ( auto cmp = stdSyntaxFlags <=> rhs.stdSyntaxFlags; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoEncodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ) == 0 ) && ( maxSliceCount == rhs.maxSliceCount ) && + ( maxPPictureL0ReferenceCount == rhs.maxPPictureL0ReferenceCount ) && ( maxBPictureL0ReferenceCount == rhs.maxBPictureL0ReferenceCount ) && + ( maxL1ReferenceCount == rhs.maxL1ReferenceCount ) && ( maxTemporalLayerCount == rhs.maxTemporalLayerCount ) && + ( expectDyadicTemporalLayerPattern == rhs.expectDyadicTemporalLayerPattern ) && ( minQp == rhs.minQp ) && ( maxQp == rhs.maxQp ) && + ( prefersGopRemainingFrames == rhs.prefersGopRemainingFrames ) && ( requiresGopRemainingFrames == rhs.requiresGopRemainingFrames ) && + ( stdSyntaxFlags == rhs.stdSyntaxFlags ); + } + + bool operator!=( VideoEncodeH264CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoEncodeH264CapabilitiesKHR; + void * pNext = {}; + VideoEncodeH264CapabilityFlagsKHR flags = {}; + StdVideoH264LevelIdc maxLevelIdc = {}; + uint32_t maxSliceCount = {}; + uint32_t maxPPictureL0ReferenceCount = {}; + uint32_t maxBPictureL0ReferenceCount = {}; + uint32_t maxL1ReferenceCount = {}; + uint32_t maxTemporalLayerCount = {}; + Bool32 expectDyadicTemporalLayerPattern = {}; + int32_t minQp = {}; + int32_t maxQp = {}; + Bool32 prefersGopRemainingFrames = {}; + Bool32 requiresGopRemainingFrames = {}; + VideoEncodeH264StdFlagsKHR stdSyntaxFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264CapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264CapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264DpbSlotInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264DpbSlotInfoKHR.html + struct VideoEncodeH264DpbSlotInfoKHR + { + using NativeType = VkVideoEncodeH264DpbSlotInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264DpbSlotInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264DpbSlotInfoKHR( StdVideoEncodeH264ReferenceInfo const * pStdReferenceInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdReferenceInfo{ pStdReferenceInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264DpbSlotInfoKHR( VideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264DpbSlotInfoKHR( VkVideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264DpbSlotInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264DpbSlotInfoKHR & operator=( VideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264DpbSlotInfoKHR & operator=( VkVideoEncodeH264DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoKHR & setPStdReferenceInfo( StdVideoEncodeH264ReferenceInfo const * pStdReferenceInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264DpbSlotInfoKHR && setPStdReferenceInfo( StdVideoEncodeH264ReferenceInfo const * pStdReferenceInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264DpbSlotInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264DpbSlotInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdReferenceInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264DpbSlotInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo ); +# endif + } + + bool operator!=( VideoEncodeH264DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264DpbSlotInfoKHR; + void const * pNext = {}; + StdVideoEncodeH264ReferenceInfo const * pStdReferenceInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264DpbSlotInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264DpbSlotInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264FrameSizeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264FrameSizeKHR.html + struct VideoEncodeH264FrameSizeKHR + { + using NativeType = VkVideoEncodeH264FrameSizeKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264FrameSizeKHR( uint32_t frameISize_ = {}, uint32_t framePSize_ = {}, uint32_t frameBSize_ = {} ) VULKAN_HPP_NOEXCEPT + : frameISize{ frameISize_ } + , framePSize{ framePSize_ } + , frameBSize{ frameBSize_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264FrameSizeKHR( VideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264FrameSizeKHR( VkVideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264FrameSizeKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264FrameSizeKHR & operator=( VideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264FrameSizeKHR & operator=( VkVideoEncodeH264FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR & setFrameISize( uint32_t frameISize_ ) & VULKAN_HPP_NOEXCEPT + { + frameISize = frameISize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR && setFrameISize( uint32_t frameISize_ ) && VULKAN_HPP_NOEXCEPT + { + frameISize = frameISize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR & setFramePSize( uint32_t framePSize_ ) & VULKAN_HPP_NOEXCEPT + { + framePSize = framePSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR && setFramePSize( uint32_t framePSize_ ) && VULKAN_HPP_NOEXCEPT + { + framePSize = framePSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR & setFrameBSize( uint32_t frameBSize_ ) & VULKAN_HPP_NOEXCEPT + { + frameBSize = frameBSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264FrameSizeKHR && setFrameBSize( uint32_t frameBSize_ ) && VULKAN_HPP_NOEXCEPT + { + frameBSize = frameBSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264FrameSizeKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264FrameSizeKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264FrameSizeKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264FrameSizeKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( frameISize, framePSize, frameBSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264FrameSizeKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( frameISize == rhs.frameISize ) && ( framePSize == rhs.framePSize ) && ( frameBSize == rhs.frameBSize ); +# endif + } + + bool operator!=( VideoEncodeH264FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t frameISize = {}; + uint32_t framePSize = {}; + uint32_t frameBSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264FrameSizeKHR; + }; +#endif + + // wrapper struct for struct VkVideoEncodeH264GopRemainingFrameInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264GopRemainingFrameInfoKHR.html + struct VideoEncodeH264GopRemainingFrameInfoKHR + { + using NativeType = VkVideoEncodeH264GopRemainingFrameInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264GopRemainingFrameInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264GopRemainingFrameInfoKHR( Bool32 useGopRemainingFrames_ = {}, + uint32_t gopRemainingI_ = {}, + uint32_t gopRemainingP_ = {}, + uint32_t gopRemainingB_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , useGopRemainingFrames{ useGopRemainingFrames_ } + , gopRemainingI{ gopRemainingI_ } + , gopRemainingP{ gopRemainingP_ } + , gopRemainingB{ gopRemainingB_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264GopRemainingFrameInfoKHR( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264GopRemainingFrameInfoKHR( VkVideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264GopRemainingFrameInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264GopRemainingFrameInfoKHR & operator=( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264GopRemainingFrameInfoKHR & operator=( VkVideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setUseGopRemainingFrames( Bool32 useGopRemainingFrames_ ) & VULKAN_HPP_NOEXCEPT + { + useGopRemainingFrames = useGopRemainingFrames_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR && setUseGopRemainingFrames( Bool32 useGopRemainingFrames_ ) && VULKAN_HPP_NOEXCEPT + { + useGopRemainingFrames = useGopRemainingFrames_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setGopRemainingI( uint32_t gopRemainingI_ ) & VULKAN_HPP_NOEXCEPT + { + gopRemainingI = gopRemainingI_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR && setGopRemainingI( uint32_t gopRemainingI_ ) && VULKAN_HPP_NOEXCEPT + { + gopRemainingI = gopRemainingI_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setGopRemainingP( uint32_t gopRemainingP_ ) & VULKAN_HPP_NOEXCEPT + { + gopRemainingP = gopRemainingP_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR && setGopRemainingP( uint32_t gopRemainingP_ ) && VULKAN_HPP_NOEXCEPT + { + gopRemainingP = gopRemainingP_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR & setGopRemainingB( uint32_t gopRemainingB_ ) & VULKAN_HPP_NOEXCEPT + { + gopRemainingB = gopRemainingB_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264GopRemainingFrameInfoKHR && setGopRemainingB( uint32_t gopRemainingB_ ) && VULKAN_HPP_NOEXCEPT + { + gopRemainingB = gopRemainingB_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264GopRemainingFrameInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264GopRemainingFrameInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264GopRemainingFrameInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264GopRemainingFrameInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, useGopRemainingFrames, gopRemainingI, gopRemainingP, gopRemainingB ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264GopRemainingFrameInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useGopRemainingFrames == rhs.useGopRemainingFrames ) && + ( gopRemainingI == rhs.gopRemainingI ) && ( gopRemainingP == rhs.gopRemainingP ) && ( gopRemainingB == rhs.gopRemainingB ); +# endif + } + + bool operator!=( VideoEncodeH264GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264GopRemainingFrameInfoKHR; + void const * pNext = {}; + Bool32 useGopRemainingFrames = {}; + uint32_t gopRemainingI = {}; + uint32_t gopRemainingP = {}; + uint32_t gopRemainingB = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264GopRemainingFrameInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264GopRemainingFrameInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264NaluSliceInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264NaluSliceInfoKHR.html + struct VideoEncodeH264NaluSliceInfoKHR + { + using NativeType = VkVideoEncodeH264NaluSliceInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264NaluSliceInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264NaluSliceInfoKHR( int32_t constantQp_ = {}, + StdVideoEncodeH264SliceHeader const * pStdSliceHeader_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , constantQp{ constantQp_ } + , pStdSliceHeader{ pStdSliceHeader_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264NaluSliceInfoKHR( VideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264NaluSliceInfoKHR( VkVideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264NaluSliceInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264NaluSliceInfoKHR & operator=( VideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264NaluSliceInfoKHR & operator=( VkVideoEncodeH264NaluSliceInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR & setConstantQp( int32_t constantQp_ ) & VULKAN_HPP_NOEXCEPT + { + constantQp = constantQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR && setConstantQp( int32_t constantQp_ ) && VULKAN_HPP_NOEXCEPT + { + constantQp = constantQp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR & setPStdSliceHeader( StdVideoEncodeH264SliceHeader const * pStdSliceHeader_ ) & VULKAN_HPP_NOEXCEPT + { + pStdSliceHeader = pStdSliceHeader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264NaluSliceInfoKHR && setPStdSliceHeader( StdVideoEncodeH264SliceHeader const * pStdSliceHeader_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSliceHeader = pStdSliceHeader_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264NaluSliceInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264NaluSliceInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264NaluSliceInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264NaluSliceInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, constantQp, pStdSliceHeader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264NaluSliceInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264NaluSliceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( constantQp == rhs.constantQp ) && ( pStdSliceHeader == rhs.pStdSliceHeader ); +# endif + } + + bool operator!=( VideoEncodeH264NaluSliceInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264NaluSliceInfoKHR; + void const * pNext = {}; + int32_t constantQp = {}; + StdVideoEncodeH264SliceHeader const * pStdSliceHeader = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264NaluSliceInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264NaluSliceInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264PictureInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264PictureInfoKHR.html + struct VideoEncodeH264PictureInfoKHR + { + using NativeType = VkVideoEncodeH264PictureInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264PictureInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264PictureInfoKHR( uint32_t naluSliceEntryCount_ = {}, + VideoEncodeH264NaluSliceInfoKHR const * pNaluSliceEntries_ = {}, + StdVideoEncodeH264PictureInfo const * pStdPictureInfo_ = {}, + Bool32 generatePrefixNalu_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , naluSliceEntryCount{ naluSliceEntryCount_ } + , pNaluSliceEntries{ pNaluSliceEntries_ } + , pStdPictureInfo{ pStdPictureInfo_ } + , generatePrefixNalu{ generatePrefixNalu_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264PictureInfoKHR( VideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264PictureInfoKHR( VkVideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264PictureInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264PictureInfoKHR( ArrayProxyNoTemporaries const & naluSliceEntries_, + StdVideoEncodeH264PictureInfo const * pStdPictureInfo_ = {}, + Bool32 generatePrefixNalu_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , naluSliceEntryCount( static_cast( naluSliceEntries_.size() ) ) + , pNaluSliceEntries( naluSliceEntries_.data() ) + , pStdPictureInfo( pStdPictureInfo_ ) + , generatePrefixNalu( generatePrefixNalu_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoEncodeH264PictureInfoKHR & operator=( VideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264PictureInfoKHR & operator=( VkVideoEncodeH264PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setNaluSliceEntryCount( uint32_t naluSliceEntryCount_ ) & VULKAN_HPP_NOEXCEPT + { + naluSliceEntryCount = naluSliceEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR && setNaluSliceEntryCount( uint32_t naluSliceEntryCount_ ) && VULKAN_HPP_NOEXCEPT + { + naluSliceEntryCount = naluSliceEntryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setPNaluSliceEntries( VideoEncodeH264NaluSliceInfoKHR const * pNaluSliceEntries_ ) & + VULKAN_HPP_NOEXCEPT + { + pNaluSliceEntries = pNaluSliceEntries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR && setPNaluSliceEntries( VideoEncodeH264NaluSliceInfoKHR const * pNaluSliceEntries_ ) && + VULKAN_HPP_NOEXCEPT + { + pNaluSliceEntries = pNaluSliceEntries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264PictureInfoKHR & + setNaluSliceEntries( ArrayProxyNoTemporaries const & naluSliceEntries_ ) VULKAN_HPP_NOEXCEPT + { + naluSliceEntryCount = static_cast( naluSliceEntries_.size() ); + pNaluSliceEntries = naluSliceEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setPStdPictureInfo( StdVideoEncodeH264PictureInfo const * pStdPictureInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR && setPStdPictureInfo( StdVideoEncodeH264PictureInfo const * pStdPictureInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR & setGeneratePrefixNalu( Bool32 generatePrefixNalu_ ) & VULKAN_HPP_NOEXCEPT + { + generatePrefixNalu = generatePrefixNalu_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264PictureInfoKHR && setGeneratePrefixNalu( Bool32 generatePrefixNalu_ ) && VULKAN_HPP_NOEXCEPT + { + generatePrefixNalu = generatePrefixNalu_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264PictureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264PictureInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264PictureInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, naluSliceEntryCount, pNaluSliceEntries, pStdPictureInfo, generatePrefixNalu ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264PictureInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( naluSliceEntryCount == rhs.naluSliceEntryCount ) && + ( pNaluSliceEntries == rhs.pNaluSliceEntries ) && ( pStdPictureInfo == rhs.pStdPictureInfo ) && ( generatePrefixNalu == rhs.generatePrefixNalu ); +# endif + } + + bool operator!=( VideoEncodeH264PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264PictureInfoKHR; + void const * pNext = {}; + uint32_t naluSliceEntryCount = {}; + VideoEncodeH264NaluSliceInfoKHR const * pNaluSliceEntries = {}; + StdVideoEncodeH264PictureInfo const * pStdPictureInfo = {}; + Bool32 generatePrefixNalu = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264PictureInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264PictureInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264ProfileInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264ProfileInfoKHR.html + struct VideoEncodeH264ProfileInfoKHR + { + using NativeType = VkVideoEncodeH264ProfileInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264ProfileInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264ProfileInfoKHR( StdVideoH264ProfileIdc stdProfileIdc_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdProfileIdc{ stdProfileIdc_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264ProfileInfoKHR( VideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264ProfileInfoKHR( VkVideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264ProfileInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264ProfileInfoKHR & operator=( VideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264ProfileInfoKHR & operator=( VkVideoEncodeH264ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileInfoKHR & setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) & VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264ProfileInfoKHR && setStdProfileIdc( StdVideoH264ProfileIdc stdProfileIdc_ ) && VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264ProfileInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264ProfileInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfileIdc ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoEncodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH264ProfileIdc ) ) == 0 ); + } + + bool operator!=( VideoEncodeH264ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoEncodeH264ProfileInfoKHR; + void const * pNext = {}; + StdVideoH264ProfileIdc stdProfileIdc = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264ProfileInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264ProfileInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264QpKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264QpKHR.html + struct VideoEncodeH264QpKHR + { + using NativeType = VkVideoEncodeH264QpKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264QpKHR( int32_t qpI_ = {}, int32_t qpP_ = {}, int32_t qpB_ = {} ) VULKAN_HPP_NOEXCEPT + : qpI{ qpI_ } + , qpP{ qpP_ } + , qpB{ qpB_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264QpKHR( VideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264QpKHR( VkVideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264QpKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264QpKHR & operator=( VideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264QpKHR & operator=( VkVideoEncodeH264QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR & setQpI( int32_t qpI_ ) & VULKAN_HPP_NOEXCEPT + { + qpI = qpI_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR && setQpI( int32_t qpI_ ) && VULKAN_HPP_NOEXCEPT + { + qpI = qpI_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR & setQpP( int32_t qpP_ ) & VULKAN_HPP_NOEXCEPT + { + qpP = qpP_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR && setQpP( int32_t qpP_ ) && VULKAN_HPP_NOEXCEPT + { + qpP = qpP_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR & setQpB( int32_t qpB_ ) & VULKAN_HPP_NOEXCEPT + { + qpB = qpB_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264QpKHR && setQpB( int32_t qpB_ ) && VULKAN_HPP_NOEXCEPT + { + qpB = qpB_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264QpKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264QpKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264QpKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264QpKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( qpI, qpP, qpB ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264QpKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( qpI == rhs.qpI ) && ( qpP == rhs.qpP ) && ( qpB == rhs.qpB ); +# endif + } + + bool operator!=( VideoEncodeH264QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + int32_t qpI = {}; + int32_t qpP = {}; + int32_t qpB = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264QpKHR; + }; +#endif + + // wrapper struct for struct VkVideoEncodeH264QualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264QualityLevelPropertiesKHR.html + struct VideoEncodeH264QualityLevelPropertiesKHR + { + using NativeType = VkVideoEncodeH264QualityLevelPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264QualityLevelPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264QualityLevelPropertiesKHR( VideoEncodeH264RateControlFlagsKHR preferredRateControlFlags_ = {}, + uint32_t preferredGopFrameCount_ = {}, + uint32_t preferredIdrPeriod_ = {}, + uint32_t preferredConsecutiveBFrameCount_ = {}, + uint32_t preferredTemporalLayerCount_ = {}, + VideoEncodeH264QpKHR preferredConstantQp_ = {}, + uint32_t preferredMaxL0ReferenceCount_ = {}, + uint32_t preferredMaxL1ReferenceCount_ = {}, + Bool32 preferredStdEntropyCodingModeFlag_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , preferredRateControlFlags{ preferredRateControlFlags_ } + , preferredGopFrameCount{ preferredGopFrameCount_ } + , preferredIdrPeriod{ preferredIdrPeriod_ } + , preferredConsecutiveBFrameCount{ preferredConsecutiveBFrameCount_ } + , preferredTemporalLayerCount{ preferredTemporalLayerCount_ } + , preferredConstantQp{ preferredConstantQp_ } + , preferredMaxL0ReferenceCount{ preferredMaxL0ReferenceCount_ } + , preferredMaxL1ReferenceCount{ preferredMaxL1ReferenceCount_ } + , preferredStdEntropyCodingModeFlag{ preferredStdEntropyCodingModeFlag_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264QualityLevelPropertiesKHR( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264QualityLevelPropertiesKHR( VkVideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264QualityLevelPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264QualityLevelPropertiesKHR & operator=( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264QualityLevelPropertiesKHR & operator=( VkVideoEncodeH264QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeH264QualityLevelPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264QualityLevelPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264QualityLevelPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264QualityLevelPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + preferredRateControlFlags, + preferredGopFrameCount, + preferredIdrPeriod, + preferredConsecutiveBFrameCount, + preferredTemporalLayerCount, + preferredConstantQp, + preferredMaxL0ReferenceCount, + preferredMaxL1ReferenceCount, + preferredStdEntropyCodingModeFlag ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264QualityLevelPropertiesKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredRateControlFlags == rhs.preferredRateControlFlags ) && + ( preferredGopFrameCount == rhs.preferredGopFrameCount ) && ( preferredIdrPeriod == rhs.preferredIdrPeriod ) && + ( preferredConsecutiveBFrameCount == rhs.preferredConsecutiveBFrameCount ) && ( preferredTemporalLayerCount == rhs.preferredTemporalLayerCount ) && + ( preferredConstantQp == rhs.preferredConstantQp ) && ( preferredMaxL0ReferenceCount == rhs.preferredMaxL0ReferenceCount ) && + ( preferredMaxL1ReferenceCount == rhs.preferredMaxL1ReferenceCount ) && + ( preferredStdEntropyCodingModeFlag == rhs.preferredStdEntropyCodingModeFlag ); +# endif + } + + bool operator!=( VideoEncodeH264QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264QualityLevelPropertiesKHR; + void * pNext = {}; + VideoEncodeH264RateControlFlagsKHR preferredRateControlFlags = {}; + uint32_t preferredGopFrameCount = {}; + uint32_t preferredIdrPeriod = {}; + uint32_t preferredConsecutiveBFrameCount = {}; + uint32_t preferredTemporalLayerCount = {}; + VideoEncodeH264QpKHR preferredConstantQp = {}; + uint32_t preferredMaxL0ReferenceCount = {}; + uint32_t preferredMaxL1ReferenceCount = {}; + Bool32 preferredStdEntropyCodingModeFlag = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264QualityLevelPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264QualityLevelPropertiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264QuantizationMapCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264QuantizationMapCapabilitiesKHR.html + struct VideoEncodeH264QuantizationMapCapabilitiesKHR + { + using NativeType = VkVideoEncodeH264QuantizationMapCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264QuantizationMapCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeH264QuantizationMapCapabilitiesKHR( int32_t minQpDelta_ = {}, int32_t maxQpDelta_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minQpDelta{ minQpDelta_ } + , maxQpDelta{ maxQpDelta_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoEncodeH264QuantizationMapCapabilitiesKHR( VideoEncodeH264QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264QuantizationMapCapabilitiesKHR( VkVideoEncodeH264QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264QuantizationMapCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264QuantizationMapCapabilitiesKHR & operator=( VideoEncodeH264QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264QuantizationMapCapabilitiesKHR & operator=( VkVideoEncodeH264QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeH264QuantizationMapCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264QuantizationMapCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264QuantizationMapCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264QuantizationMapCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minQpDelta, maxQpDelta ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264QuantizationMapCapabilitiesKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264QuantizationMapCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minQpDelta == rhs.minQpDelta ) && ( maxQpDelta == rhs.maxQpDelta ); +# endif + } + + bool operator!=( VideoEncodeH264QuantizationMapCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264QuantizationMapCapabilitiesKHR; + void * pNext = {}; + int32_t minQpDelta = {}; + int32_t maxQpDelta = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264QuantizationMapCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264QuantizationMapCapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264RateControlInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlInfoKHR.html + struct VideoEncodeH264RateControlInfoKHR + { + using NativeType = VkVideoEncodeH264RateControlInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264RateControlInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlInfoKHR( VideoEncodeH264RateControlFlagsKHR flags_ = {}, + uint32_t gopFrameCount_ = {}, + uint32_t idrPeriod_ = {}, + uint32_t consecutiveBFrameCount_ = {}, + uint32_t temporalLayerCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , gopFrameCount{ gopFrameCount_ } + , idrPeriod{ idrPeriod_ } + , consecutiveBFrameCount{ consecutiveBFrameCount_ } + , temporalLayerCount{ temporalLayerCount_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlInfoKHR( VideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264RateControlInfoKHR( VkVideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264RateControlInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264RateControlInfoKHR & operator=( VideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264RateControlInfoKHR & operator=( VkVideoEncodeH264RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setFlags( VideoEncodeH264RateControlFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR && setFlags( VideoEncodeH264RateControlFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setGopFrameCount( uint32_t gopFrameCount_ ) & VULKAN_HPP_NOEXCEPT + { + gopFrameCount = gopFrameCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR && setGopFrameCount( uint32_t gopFrameCount_ ) && VULKAN_HPP_NOEXCEPT + { + gopFrameCount = gopFrameCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setIdrPeriod( uint32_t idrPeriod_ ) & VULKAN_HPP_NOEXCEPT + { + idrPeriod = idrPeriod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR && setIdrPeriod( uint32_t idrPeriod_ ) && VULKAN_HPP_NOEXCEPT + { + idrPeriod = idrPeriod_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) & VULKAN_HPP_NOEXCEPT + { + consecutiveBFrameCount = consecutiveBFrameCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR && setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) && VULKAN_HPP_NOEXCEPT + { + consecutiveBFrameCount = consecutiveBFrameCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR & setTemporalLayerCount( uint32_t temporalLayerCount_ ) & VULKAN_HPP_NOEXCEPT + { + temporalLayerCount = temporalLayerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlInfoKHR && setTemporalLayerCount( uint32_t temporalLayerCount_ ) && VULKAN_HPP_NOEXCEPT + { + temporalLayerCount = temporalLayerCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264RateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264RateControlInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264RateControlInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264RateControlInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, gopFrameCount, idrPeriod, consecutiveBFrameCount, temporalLayerCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264RateControlInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( gopFrameCount == rhs.gopFrameCount ) && + ( idrPeriod == rhs.idrPeriod ) && ( consecutiveBFrameCount == rhs.consecutiveBFrameCount ) && ( temporalLayerCount == rhs.temporalLayerCount ); +# endif + } + + bool operator!=( VideoEncodeH264RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264RateControlInfoKHR; + void const * pNext = {}; + VideoEncodeH264RateControlFlagsKHR flags = {}; + uint32_t gopFrameCount = {}; + uint32_t idrPeriod = {}; + uint32_t consecutiveBFrameCount = {}; + uint32_t temporalLayerCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264RateControlInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264RateControlInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264RateControlLayerInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264RateControlLayerInfoKHR.html + struct VideoEncodeH264RateControlLayerInfoKHR + { + using NativeType = VkVideoEncodeH264RateControlLayerInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264RateControlLayerInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlLayerInfoKHR( Bool32 useMinQp_ = {}, + VideoEncodeH264QpKHR minQp_ = {}, + Bool32 useMaxQp_ = {}, + VideoEncodeH264QpKHR maxQp_ = {}, + Bool32 useMaxFrameSize_ = {}, + VideoEncodeH264FrameSizeKHR maxFrameSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , useMinQp{ useMinQp_ } + , minQp{ minQp_ } + , useMaxQp{ useMaxQp_ } + , maxQp{ maxQp_ } + , useMaxFrameSize{ useMaxFrameSize_ } + , maxFrameSize{ maxFrameSize_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264RateControlLayerInfoKHR( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264RateControlLayerInfoKHR( VkVideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264RateControlLayerInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264RateControlLayerInfoKHR & operator=( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264RateControlLayerInfoKHR & operator=( VkVideoEncodeH264RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setUseMinQp( Bool32 useMinQp_ ) & VULKAN_HPP_NOEXCEPT + { + useMinQp = useMinQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR && setUseMinQp( Bool32 useMinQp_ ) && VULKAN_HPP_NOEXCEPT + { + useMinQp = useMinQp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setMinQp( VideoEncodeH264QpKHR const & minQp_ ) & VULKAN_HPP_NOEXCEPT + { + minQp = minQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR && setMinQp( VideoEncodeH264QpKHR const & minQp_ ) && VULKAN_HPP_NOEXCEPT + { + minQp = minQp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setUseMaxQp( Bool32 useMaxQp_ ) & VULKAN_HPP_NOEXCEPT + { + useMaxQp = useMaxQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR && setUseMaxQp( Bool32 useMaxQp_ ) && VULKAN_HPP_NOEXCEPT + { + useMaxQp = useMaxQp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setMaxQp( VideoEncodeH264QpKHR const & maxQp_ ) & VULKAN_HPP_NOEXCEPT + { + maxQp = maxQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR && setMaxQp( VideoEncodeH264QpKHR const & maxQp_ ) && VULKAN_HPP_NOEXCEPT + { + maxQp = maxQp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setUseMaxFrameSize( Bool32 useMaxFrameSize_ ) & VULKAN_HPP_NOEXCEPT + { + useMaxFrameSize = useMaxFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR && setUseMaxFrameSize( Bool32 useMaxFrameSize_ ) && VULKAN_HPP_NOEXCEPT + { + useMaxFrameSize = useMaxFrameSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR & setMaxFrameSize( VideoEncodeH264FrameSizeKHR const & maxFrameSize_ ) & VULKAN_HPP_NOEXCEPT + { + maxFrameSize = maxFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264RateControlLayerInfoKHR && setMaxFrameSize( VideoEncodeH264FrameSizeKHR const & maxFrameSize_ ) && + VULKAN_HPP_NOEXCEPT + { + maxFrameSize = maxFrameSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264RateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264RateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264RateControlLayerInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264RateControlLayerInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, useMinQp, minQp, useMaxQp, maxQp, useMaxFrameSize, maxFrameSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264RateControlLayerInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMinQp == rhs.useMinQp ) && ( minQp == rhs.minQp ) && ( useMaxQp == rhs.useMaxQp ) && + ( maxQp == rhs.maxQp ) && ( useMaxFrameSize == rhs.useMaxFrameSize ) && ( maxFrameSize == rhs.maxFrameSize ); +# endif + } + + bool operator!=( VideoEncodeH264RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264RateControlLayerInfoKHR; + void const * pNext = {}; + Bool32 useMinQp = {}; + VideoEncodeH264QpKHR minQp = {}; + Bool32 useMaxQp = {}; + VideoEncodeH264QpKHR maxQp = {}; + Bool32 useMaxFrameSize = {}; + VideoEncodeH264FrameSizeKHR maxFrameSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264RateControlLayerInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264RateControlLayerInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264SessionCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionCreateInfoKHR.html + struct VideoEncodeH264SessionCreateInfoKHR + { + using NativeType = VkVideoEncodeH264SessionCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264SessionCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionCreateInfoKHR( Bool32 useMaxLevelIdc_ = {}, + StdVideoH264LevelIdc maxLevelIdc_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , useMaxLevelIdc{ useMaxLevelIdc_ } + , maxLevelIdc{ maxLevelIdc_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionCreateInfoKHR( VideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionCreateInfoKHR( VkVideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264SessionCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264SessionCreateInfoKHR & operator=( VideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264SessionCreateInfoKHR & operator=( VkVideoEncodeH264SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR & setUseMaxLevelIdc( Bool32 useMaxLevelIdc_ ) & VULKAN_HPP_NOEXCEPT + { + useMaxLevelIdc = useMaxLevelIdc_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR && setUseMaxLevelIdc( Bool32 useMaxLevelIdc_ ) && VULKAN_HPP_NOEXCEPT + { + useMaxLevelIdc = useMaxLevelIdc_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR & setMaxLevelIdc( StdVideoH264LevelIdc maxLevelIdc_ ) & VULKAN_HPP_NOEXCEPT + { + maxLevelIdc = maxLevelIdc_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionCreateInfoKHR && setMaxLevelIdc( StdVideoH264LevelIdc maxLevelIdc_ ) && VULKAN_HPP_NOEXCEPT + { + maxLevelIdc = maxLevelIdc_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264SessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, useMaxLevelIdc, maxLevelIdc ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeH264SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = useMaxLevelIdc <=> rhs.useMaxLevelIdc; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoEncodeH264SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMaxLevelIdc == rhs.useMaxLevelIdc ) && + ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH264LevelIdc ) ) == 0 ); + } + + bool operator!=( VideoEncodeH264SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoEncodeH264SessionCreateInfoKHR; + void const * pNext = {}; + Bool32 useMaxLevelIdc = {}; + StdVideoH264LevelIdc maxLevelIdc = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264SessionCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264SessionCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264SessionParametersAddInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersAddInfoKHR.html + struct VideoEncodeH264SessionParametersAddInfoKHR + { + using NativeType = VkVideoEncodeH264SessionParametersAddInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264SessionParametersAddInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersAddInfoKHR( uint32_t stdSPSCount_ = {}, + StdVideoH264SequenceParameterSet const * pStdSPSs_ = {}, + uint32_t stdPPSCount_ = {}, + StdVideoH264PictureParameterSet const * pStdPPSs_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdSPSCount{ stdSPSCount_ } + , pStdSPSs{ pStdSPSs_ } + , stdPPSCount{ stdPPSCount_ } + , pStdPPSs{ pStdPPSs_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersAddInfoKHR( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionParametersAddInfoKHR( VkVideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264SessionParametersAddInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264SessionParametersAddInfoKHR( ArrayProxyNoTemporaries const & stdSPSs_, + ArrayProxyNoTemporaries const & stdPPSs_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , stdSPSCount( static_cast( stdSPSs_.size() ) ) + , pStdSPSs( stdSPSs_.data() ) + , stdPPSCount( static_cast( stdPPSs_.size() ) ) + , pStdPPSs( stdPPSs_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoEncodeH264SessionParametersAddInfoKHR & operator=( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264SessionParametersAddInfoKHR & operator=( VkVideoEncodeH264SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdSPSCount = stdSPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR && setStdSPSCount( uint32_t stdSPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdSPSCount = stdSPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setPStdSPSs( StdVideoH264SequenceParameterSet const * pStdSPSs_ ) & VULKAN_HPP_NOEXCEPT + { + pStdSPSs = pStdSPSs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR && setPStdSPSs( StdVideoH264SequenceParameterSet const * pStdSPSs_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSPSs = pStdSPSs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264SessionParametersAddInfoKHR & + setStdSPSs( ArrayProxyNoTemporaries const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT + { + stdSPSCount = static_cast( stdSPSs_.size() ); + pStdSPSs = stdSPSs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdPPSCount = stdPPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR && setStdPPSCount( uint32_t stdPPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdPPSCount = stdPPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR & setPStdPPSs( StdVideoH264PictureParameterSet const * pStdPPSs_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPPSs = pStdPPSs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersAddInfoKHR && setPStdPPSs( StdVideoH264PictureParameterSet const * pStdPPSs_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdPPSs = pStdPPSs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH264SessionParametersAddInfoKHR & + setStdPPSs( ArrayProxyNoTemporaries const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT + { + stdPPSCount = static_cast( stdPPSs_.size() ); + pStdPPSs = stdPPSs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersAddInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersAddInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264SessionParametersAddInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) && + ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs ); +# endif + } + + bool operator!=( VideoEncodeH264SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264SessionParametersAddInfoKHR; + void const * pNext = {}; + uint32_t stdSPSCount = {}; + StdVideoH264SequenceParameterSet const * pStdSPSs = {}; + uint32_t stdPPSCount = {}; + StdVideoH264PictureParameterSet const * pStdPPSs = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264SessionParametersAddInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264SessionParametersAddInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264SessionParametersCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersCreateInfoKHR.html + struct VideoEncodeH264SessionParametersCreateInfoKHR + { + using NativeType = VkVideoEncodeH264SessionParametersCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264SessionParametersCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersCreateInfoKHR( uint32_t maxStdSPSCount_ = {}, + uint32_t maxStdPPSCount_ = {}, + VideoEncodeH264SessionParametersAddInfoKHR const * pParametersAddInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxStdSPSCount{ maxStdSPSCount_ } + , maxStdPPSCount{ maxStdPPSCount_ } + , pParametersAddInfo{ pParametersAddInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoEncodeH264SessionParametersCreateInfoKHR( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionParametersCreateInfoKHR( VkVideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264SessionParametersCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264SessionParametersCreateInfoKHR & operator=( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264SessionParametersCreateInfoKHR & operator=( VkVideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxStdSPSCount = maxStdSPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR && setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxStdSPSCount = maxStdSPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxStdPPSCount = maxStdPPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR && setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxStdPPSCount = maxStdPPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR & + setPParametersAddInfo( VideoEncodeH264SessionParametersAddInfoKHR const * pParametersAddInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersCreateInfoKHR && + setPParametersAddInfo( VideoEncodeH264SessionParametersAddInfoKHR const * pParametersAddInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264SessionParametersCreateInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) && ( maxStdPPSCount == rhs.maxStdPPSCount ) && + ( pParametersAddInfo == rhs.pParametersAddInfo ); +# endif + } + + bool operator!=( VideoEncodeH264SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264SessionParametersCreateInfoKHR; + void const * pNext = {}; + uint32_t maxStdSPSCount = {}; + uint32_t maxStdPPSCount = {}; + VideoEncodeH264SessionParametersAddInfoKHR const * pParametersAddInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264SessionParametersCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264SessionParametersCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersFeedbackInfoKHR.html + struct VideoEncodeH264SessionParametersFeedbackInfoKHR + { + using NativeType = VkVideoEncodeH264SessionParametersFeedbackInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264SessionParametersFeedbackInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersFeedbackInfoKHR( Bool32 hasStdSPSOverrides_ = {}, + Bool32 hasStdPPSOverrides_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , hasStdSPSOverrides{ hasStdSPSOverrides_ } + , hasStdPPSOverrides{ hasStdPPSOverrides_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoEncodeH264SessionParametersFeedbackInfoKHR( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionParametersFeedbackInfoKHR( VkVideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264SessionParametersFeedbackInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264SessionParametersFeedbackInfoKHR & operator=( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264SessionParametersFeedbackInfoKHR & operator=( VkVideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersFeedbackInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hasStdSPSOverrides, hasStdPPSOverrides ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264SessionParametersFeedbackInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasStdSPSOverrides == rhs.hasStdSPSOverrides ) && + ( hasStdPPSOverrides == rhs.hasStdPPSOverrides ); +# endif + } + + bool operator!=( VideoEncodeH264SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264SessionParametersFeedbackInfoKHR; + void * pNext = {}; + Bool32 hasStdSPSOverrides = {}; + Bool32 hasStdPPSOverrides = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264SessionParametersFeedbackInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264SessionParametersFeedbackInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH264SessionParametersGetInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH264SessionParametersGetInfoKHR.html + struct VideoEncodeH264SessionParametersGetInfoKHR + { + using NativeType = VkVideoEncodeH264SessionParametersGetInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH264SessionParametersGetInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersGetInfoKHR( + Bool32 writeStdSPS_ = {}, Bool32 writeStdPPS_ = {}, uint32_t stdSPSId_ = {}, uint32_t stdPPSId_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , writeStdSPS{ writeStdSPS_ } + , writeStdPPS{ writeStdPPS_ } + , stdSPSId{ stdSPSId_ } + , stdPPSId{ stdPPSId_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH264SessionParametersGetInfoKHR( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH264SessionParametersGetInfoKHR( VkVideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH264SessionParametersGetInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH264SessionParametersGetInfoKHR & operator=( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH264SessionParametersGetInfoKHR & operator=( VkVideoEncodeH264SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setWriteStdSPS( Bool32 writeStdSPS_ ) & VULKAN_HPP_NOEXCEPT + { + writeStdSPS = writeStdSPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR && setWriteStdSPS( Bool32 writeStdSPS_ ) && VULKAN_HPP_NOEXCEPT + { + writeStdSPS = writeStdSPS_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setWriteStdPPS( Bool32 writeStdPPS_ ) & VULKAN_HPP_NOEXCEPT + { + writeStdPPS = writeStdPPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR && setWriteStdPPS( Bool32 writeStdPPS_ ) && VULKAN_HPP_NOEXCEPT + { + writeStdPPS = writeStdPPS_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setStdSPSId( uint32_t stdSPSId_ ) & VULKAN_HPP_NOEXCEPT + { + stdSPSId = stdSPSId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR && setStdSPSId( uint32_t stdSPSId_ ) && VULKAN_HPP_NOEXCEPT + { + stdSPSId = stdSPSId_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR & setStdPPSId( uint32_t stdPPSId_ ) & VULKAN_HPP_NOEXCEPT + { + stdPPSId = stdPPSId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH264SessionParametersGetInfoKHR && setStdPPSId( uint32_t stdPPSId_ ) && VULKAN_HPP_NOEXCEPT + { + stdPPSId = stdPPSId_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH264SessionParametersGetInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersGetInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersGetInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH264SessionParametersGetInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, writeStdSPS, writeStdPPS, stdSPSId, stdPPSId ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH264SessionParametersGetInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( writeStdSPS == rhs.writeStdSPS ) && ( writeStdPPS == rhs.writeStdPPS ) && + ( stdSPSId == rhs.stdSPSId ) && ( stdPPSId == rhs.stdPPSId ); +# endif + } + + bool operator!=( VideoEncodeH264SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH264SessionParametersGetInfoKHR; + void const * pNext = {}; + Bool32 writeStdSPS = {}; + Bool32 writeStdPPS = {}; + uint32_t stdSPSId = {}; + uint32_t stdPPSId = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH264SessionParametersGetInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH264SessionParametersGetInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265CapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265CapabilitiesKHR.html + struct VideoEncodeH265CapabilitiesKHR + { + using NativeType = VkVideoEncodeH265CapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265CapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265CapabilitiesKHR( VideoEncodeH265CapabilityFlagsKHR flags_ = {}, + StdVideoH265LevelIdc maxLevelIdc_ = {}, + uint32_t maxSliceSegmentCount_ = {}, + Extent2D maxTiles_ = {}, + VideoEncodeH265CtbSizeFlagsKHR ctbSizes_ = {}, + VideoEncodeH265TransformBlockSizeFlagsKHR transformBlockSizes_ = {}, + uint32_t maxPPictureL0ReferenceCount_ = {}, + uint32_t maxBPictureL0ReferenceCount_ = {}, + uint32_t maxL1ReferenceCount_ = {}, + uint32_t maxSubLayerCount_ = {}, + Bool32 expectDyadicTemporalSubLayerPattern_ = {}, + int32_t minQp_ = {}, + int32_t maxQp_ = {}, + Bool32 prefersGopRemainingFrames_ = {}, + Bool32 requiresGopRemainingFrames_ = {}, + VideoEncodeH265StdFlagsKHR stdSyntaxFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , maxLevelIdc{ maxLevelIdc_ } + , maxSliceSegmentCount{ maxSliceSegmentCount_ } + , maxTiles{ maxTiles_ } + , ctbSizes{ ctbSizes_ } + , transformBlockSizes{ transformBlockSizes_ } + , maxPPictureL0ReferenceCount{ maxPPictureL0ReferenceCount_ } + , maxBPictureL0ReferenceCount{ maxBPictureL0ReferenceCount_ } + , maxL1ReferenceCount{ maxL1ReferenceCount_ } + , maxSubLayerCount{ maxSubLayerCount_ } + , expectDyadicTemporalSubLayerPattern{ expectDyadicTemporalSubLayerPattern_ } + , minQp{ minQp_ } + , maxQp{ maxQp_ } + , prefersGopRemainingFrames{ prefersGopRemainingFrames_ } + , requiresGopRemainingFrames{ requiresGopRemainingFrames_ } + , stdSyntaxFlags{ stdSyntaxFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265CapabilitiesKHR( VideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265CapabilitiesKHR( VkVideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265CapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265CapabilitiesKHR & operator=( VideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265CapabilitiesKHR & operator=( VkVideoEncodeH265CapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeH265CapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265CapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265CapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265CapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + maxLevelIdc, + maxSliceSegmentCount, + maxTiles, + ctbSizes, + transformBlockSizes, + maxPPictureL0ReferenceCount, + maxBPictureL0ReferenceCount, + maxL1ReferenceCount, + maxSubLayerCount, + expectDyadicTemporalSubLayerPattern, + minQp, + maxQp, + prefersGopRemainingFrames, + requiresGopRemainingFrames, + stdSyntaxFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + if ( auto cmp = maxSliceSegmentCount <=> rhs.maxSliceSegmentCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxTiles <=> rhs.maxTiles; cmp != 0 ) + return cmp; + if ( auto cmp = ctbSizes <=> rhs.ctbSizes; cmp != 0 ) + return cmp; + if ( auto cmp = transformBlockSizes <=> rhs.transformBlockSizes; cmp != 0 ) + return cmp; + if ( auto cmp = maxPPictureL0ReferenceCount <=> rhs.maxPPictureL0ReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxBPictureL0ReferenceCount <=> rhs.maxBPictureL0ReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxL1ReferenceCount <=> rhs.maxL1ReferenceCount; cmp != 0 ) + return cmp; + if ( auto cmp = maxSubLayerCount <=> rhs.maxSubLayerCount; cmp != 0 ) + return cmp; + if ( auto cmp = expectDyadicTemporalSubLayerPattern <=> rhs.expectDyadicTemporalSubLayerPattern; cmp != 0 ) + return cmp; + if ( auto cmp = minQp <=> rhs.minQp; cmp != 0 ) + return cmp; + if ( auto cmp = maxQp <=> rhs.maxQp; cmp != 0 ) + return cmp; + if ( auto cmp = prefersGopRemainingFrames <=> rhs.prefersGopRemainingFrames; cmp != 0 ) + return cmp; + if ( auto cmp = requiresGopRemainingFrames <=> rhs.requiresGopRemainingFrames; cmp != 0 ) + return cmp; + if ( auto cmp = stdSyntaxFlags <=> rhs.stdSyntaxFlags; cmp != 0 ) + return cmp; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoEncodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ) == 0 ) && ( maxSliceSegmentCount == rhs.maxSliceSegmentCount ) && + ( maxTiles == rhs.maxTiles ) && ( ctbSizes == rhs.ctbSizes ) && ( transformBlockSizes == rhs.transformBlockSizes ) && + ( maxPPictureL0ReferenceCount == rhs.maxPPictureL0ReferenceCount ) && ( maxBPictureL0ReferenceCount == rhs.maxBPictureL0ReferenceCount ) && + ( maxL1ReferenceCount == rhs.maxL1ReferenceCount ) && ( maxSubLayerCount == rhs.maxSubLayerCount ) && + ( expectDyadicTemporalSubLayerPattern == rhs.expectDyadicTemporalSubLayerPattern ) && ( minQp == rhs.minQp ) && ( maxQp == rhs.maxQp ) && + ( prefersGopRemainingFrames == rhs.prefersGopRemainingFrames ) && ( requiresGopRemainingFrames == rhs.requiresGopRemainingFrames ) && + ( stdSyntaxFlags == rhs.stdSyntaxFlags ); + } + + bool operator!=( VideoEncodeH265CapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoEncodeH265CapabilitiesKHR; + void * pNext = {}; + VideoEncodeH265CapabilityFlagsKHR flags = {}; + StdVideoH265LevelIdc maxLevelIdc = {}; + uint32_t maxSliceSegmentCount = {}; + Extent2D maxTiles = {}; + VideoEncodeH265CtbSizeFlagsKHR ctbSizes = {}; + VideoEncodeH265TransformBlockSizeFlagsKHR transformBlockSizes = {}; + uint32_t maxPPictureL0ReferenceCount = {}; + uint32_t maxBPictureL0ReferenceCount = {}; + uint32_t maxL1ReferenceCount = {}; + uint32_t maxSubLayerCount = {}; + Bool32 expectDyadicTemporalSubLayerPattern = {}; + int32_t minQp = {}; + int32_t maxQp = {}; + Bool32 prefersGopRemainingFrames = {}; + Bool32 requiresGopRemainingFrames = {}; + VideoEncodeH265StdFlagsKHR stdSyntaxFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265CapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265CapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265DpbSlotInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265DpbSlotInfoKHR.html + struct VideoEncodeH265DpbSlotInfoKHR + { + using NativeType = VkVideoEncodeH265DpbSlotInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265DpbSlotInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265DpbSlotInfoKHR( StdVideoEncodeH265ReferenceInfo const * pStdReferenceInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , pStdReferenceInfo{ pStdReferenceInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265DpbSlotInfoKHR( VideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265DpbSlotInfoKHR( VkVideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265DpbSlotInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265DpbSlotInfoKHR & operator=( VideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265DpbSlotInfoKHR & operator=( VkVideoEncodeH265DpbSlotInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoKHR & setPStdReferenceInfo( StdVideoEncodeH265ReferenceInfo const * pStdReferenceInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265DpbSlotInfoKHR && setPStdReferenceInfo( StdVideoEncodeH265ReferenceInfo const * pStdReferenceInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdReferenceInfo = pStdReferenceInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265DpbSlotInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265DpbSlotInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265DpbSlotInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265DpbSlotInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, pStdReferenceInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265DpbSlotInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( pStdReferenceInfo == rhs.pStdReferenceInfo ); +# endif + } + + bool operator!=( VideoEncodeH265DpbSlotInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265DpbSlotInfoKHR; + void const * pNext = {}; + StdVideoEncodeH265ReferenceInfo const * pStdReferenceInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265DpbSlotInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265DpbSlotInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265FrameSizeKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265FrameSizeKHR.html + struct VideoEncodeH265FrameSizeKHR + { + using NativeType = VkVideoEncodeH265FrameSizeKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265FrameSizeKHR( uint32_t frameISize_ = {}, uint32_t framePSize_ = {}, uint32_t frameBSize_ = {} ) VULKAN_HPP_NOEXCEPT + : frameISize{ frameISize_ } + , framePSize{ framePSize_ } + , frameBSize{ frameBSize_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265FrameSizeKHR( VideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265FrameSizeKHR( VkVideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265FrameSizeKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265FrameSizeKHR & operator=( VideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265FrameSizeKHR & operator=( VkVideoEncodeH265FrameSizeKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR & setFrameISize( uint32_t frameISize_ ) & VULKAN_HPP_NOEXCEPT + { + frameISize = frameISize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR && setFrameISize( uint32_t frameISize_ ) && VULKAN_HPP_NOEXCEPT + { + frameISize = frameISize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR & setFramePSize( uint32_t framePSize_ ) & VULKAN_HPP_NOEXCEPT + { + framePSize = framePSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR && setFramePSize( uint32_t framePSize_ ) && VULKAN_HPP_NOEXCEPT + { + framePSize = framePSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR & setFrameBSize( uint32_t frameBSize_ ) & VULKAN_HPP_NOEXCEPT + { + frameBSize = frameBSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265FrameSizeKHR && setFrameBSize( uint32_t frameBSize_ ) && VULKAN_HPP_NOEXCEPT + { + frameBSize = frameBSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265FrameSizeKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265FrameSizeKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265FrameSizeKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265FrameSizeKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( frameISize, framePSize, frameBSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265FrameSizeKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( frameISize == rhs.frameISize ) && ( framePSize == rhs.framePSize ) && ( frameBSize == rhs.frameBSize ); +# endif + } + + bool operator!=( VideoEncodeH265FrameSizeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + uint32_t frameISize = {}; + uint32_t framePSize = {}; + uint32_t frameBSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265FrameSizeKHR; + }; +#endif + + // wrapper struct for struct VkVideoEncodeH265GopRemainingFrameInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265GopRemainingFrameInfoKHR.html + struct VideoEncodeH265GopRemainingFrameInfoKHR + { + using NativeType = VkVideoEncodeH265GopRemainingFrameInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265GopRemainingFrameInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265GopRemainingFrameInfoKHR( Bool32 useGopRemainingFrames_ = {}, + uint32_t gopRemainingI_ = {}, + uint32_t gopRemainingP_ = {}, + uint32_t gopRemainingB_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , useGopRemainingFrames{ useGopRemainingFrames_ } + , gopRemainingI{ gopRemainingI_ } + , gopRemainingP{ gopRemainingP_ } + , gopRemainingB{ gopRemainingB_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265GopRemainingFrameInfoKHR( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265GopRemainingFrameInfoKHR( VkVideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265GopRemainingFrameInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265GopRemainingFrameInfoKHR & operator=( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265GopRemainingFrameInfoKHR & operator=( VkVideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setUseGopRemainingFrames( Bool32 useGopRemainingFrames_ ) & VULKAN_HPP_NOEXCEPT + { + useGopRemainingFrames = useGopRemainingFrames_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR && setUseGopRemainingFrames( Bool32 useGopRemainingFrames_ ) && VULKAN_HPP_NOEXCEPT + { + useGopRemainingFrames = useGopRemainingFrames_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setGopRemainingI( uint32_t gopRemainingI_ ) & VULKAN_HPP_NOEXCEPT + { + gopRemainingI = gopRemainingI_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR && setGopRemainingI( uint32_t gopRemainingI_ ) && VULKAN_HPP_NOEXCEPT + { + gopRemainingI = gopRemainingI_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setGopRemainingP( uint32_t gopRemainingP_ ) & VULKAN_HPP_NOEXCEPT + { + gopRemainingP = gopRemainingP_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR && setGopRemainingP( uint32_t gopRemainingP_ ) && VULKAN_HPP_NOEXCEPT + { + gopRemainingP = gopRemainingP_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR & setGopRemainingB( uint32_t gopRemainingB_ ) & VULKAN_HPP_NOEXCEPT + { + gopRemainingB = gopRemainingB_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265GopRemainingFrameInfoKHR && setGopRemainingB( uint32_t gopRemainingB_ ) && VULKAN_HPP_NOEXCEPT + { + gopRemainingB = gopRemainingB_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265GopRemainingFrameInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265GopRemainingFrameInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265GopRemainingFrameInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265GopRemainingFrameInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, useGopRemainingFrames, gopRemainingI, gopRemainingP, gopRemainingB ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265GopRemainingFrameInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useGopRemainingFrames == rhs.useGopRemainingFrames ) && + ( gopRemainingI == rhs.gopRemainingI ) && ( gopRemainingP == rhs.gopRemainingP ) && ( gopRemainingB == rhs.gopRemainingB ); +# endif + } + + bool operator!=( VideoEncodeH265GopRemainingFrameInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265GopRemainingFrameInfoKHR; + void const * pNext = {}; + Bool32 useGopRemainingFrames = {}; + uint32_t gopRemainingI = {}; + uint32_t gopRemainingP = {}; + uint32_t gopRemainingB = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265GopRemainingFrameInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265GopRemainingFrameInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265NaluSliceSegmentInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265NaluSliceSegmentInfoKHR.html + struct VideoEncodeH265NaluSliceSegmentInfoKHR + { + using NativeType = VkVideoEncodeH265NaluSliceSegmentInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265NaluSliceSegmentInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265NaluSliceSegmentInfoKHR( int32_t constantQp_ = {}, + StdVideoEncodeH265SliceSegmentHeader const * pStdSliceSegmentHeader_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , constantQp{ constantQp_ } + , pStdSliceSegmentHeader{ pStdSliceSegmentHeader_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265NaluSliceSegmentInfoKHR( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265NaluSliceSegmentInfoKHR( VkVideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265NaluSliceSegmentInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265NaluSliceSegmentInfoKHR & operator=( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265NaluSliceSegmentInfoKHR & operator=( VkVideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR & setConstantQp( int32_t constantQp_ ) & VULKAN_HPP_NOEXCEPT + { + constantQp = constantQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR && setConstantQp( int32_t constantQp_ ) && VULKAN_HPP_NOEXCEPT + { + constantQp = constantQp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR & + setPStdSliceSegmentHeader( StdVideoEncodeH265SliceSegmentHeader const * pStdSliceSegmentHeader_ ) & + VULKAN_HPP_NOEXCEPT + { + pStdSliceSegmentHeader = pStdSliceSegmentHeader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265NaluSliceSegmentInfoKHR && + setPStdSliceSegmentHeader( StdVideoEncodeH265SliceSegmentHeader const * pStdSliceSegmentHeader_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSliceSegmentHeader = pStdSliceSegmentHeader_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265NaluSliceSegmentInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265NaluSliceSegmentInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265NaluSliceSegmentInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265NaluSliceSegmentInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, constantQp, pStdSliceSegmentHeader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265NaluSliceSegmentInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( constantQp == rhs.constantQp ) && ( pStdSliceSegmentHeader == rhs.pStdSliceSegmentHeader ); +# endif + } + + bool operator!=( VideoEncodeH265NaluSliceSegmentInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265NaluSliceSegmentInfoKHR; + void const * pNext = {}; + int32_t constantQp = {}; + StdVideoEncodeH265SliceSegmentHeader const * pStdSliceSegmentHeader = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265NaluSliceSegmentInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265NaluSliceSegmentInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265PictureInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265PictureInfoKHR.html + struct VideoEncodeH265PictureInfoKHR + { + using NativeType = VkVideoEncodeH265PictureInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265PictureInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265PictureInfoKHR( uint32_t naluSliceSegmentEntryCount_ = {}, + VideoEncodeH265NaluSliceSegmentInfoKHR const * pNaluSliceSegmentEntries_ = {}, + StdVideoEncodeH265PictureInfo const * pStdPictureInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , naluSliceSegmentEntryCount{ naluSliceSegmentEntryCount_ } + , pNaluSliceSegmentEntries{ pNaluSliceSegmentEntries_ } + , pStdPictureInfo{ pStdPictureInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265PictureInfoKHR( VideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265PictureInfoKHR( VkVideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265PictureInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265PictureInfoKHR( ArrayProxyNoTemporaries const & naluSliceSegmentEntries_, + StdVideoEncodeH265PictureInfo const * pStdPictureInfo_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , naluSliceSegmentEntryCount( static_cast( naluSliceSegmentEntries_.size() ) ) + , pNaluSliceSegmentEntries( naluSliceSegmentEntries_.data() ) + , pStdPictureInfo( pStdPictureInfo_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoEncodeH265PictureInfoKHR & operator=( VideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265PictureInfoKHR & operator=( VkVideoEncodeH265PictureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR & setNaluSliceSegmentEntryCount( uint32_t naluSliceSegmentEntryCount_ ) & VULKAN_HPP_NOEXCEPT + { + naluSliceSegmentEntryCount = naluSliceSegmentEntryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR && setNaluSliceSegmentEntryCount( uint32_t naluSliceSegmentEntryCount_ ) && VULKAN_HPP_NOEXCEPT + { + naluSliceSegmentEntryCount = naluSliceSegmentEntryCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR & + setPNaluSliceSegmentEntries( VideoEncodeH265NaluSliceSegmentInfoKHR const * pNaluSliceSegmentEntries_ ) & + VULKAN_HPP_NOEXCEPT + { + pNaluSliceSegmentEntries = pNaluSliceSegmentEntries_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR && + setPNaluSliceSegmentEntries( VideoEncodeH265NaluSliceSegmentInfoKHR const * pNaluSliceSegmentEntries_ ) && + VULKAN_HPP_NOEXCEPT + { + pNaluSliceSegmentEntries = pNaluSliceSegmentEntries_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265PictureInfoKHR & + setNaluSliceSegmentEntries( ArrayProxyNoTemporaries const & naluSliceSegmentEntries_ ) VULKAN_HPP_NOEXCEPT + { + naluSliceSegmentEntryCount = static_cast( naluSliceSegmentEntries_.size() ); + pNaluSliceSegmentEntries = naluSliceSegmentEntries_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR & setPStdPictureInfo( StdVideoEncodeH265PictureInfo const * pStdPictureInfo_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265PictureInfoKHR && setPStdPictureInfo( StdVideoEncodeH265PictureInfo const * pStdPictureInfo_ ) && VULKAN_HPP_NOEXCEPT + { + pStdPictureInfo = pStdPictureInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265PictureInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265PictureInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265PictureInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265PictureInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, naluSliceSegmentEntryCount, pNaluSliceSegmentEntries, pStdPictureInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265PictureInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( naluSliceSegmentEntryCount == rhs.naluSliceSegmentEntryCount ) && + ( pNaluSliceSegmentEntries == rhs.pNaluSliceSegmentEntries ) && ( pStdPictureInfo == rhs.pStdPictureInfo ); +# endif + } + + bool operator!=( VideoEncodeH265PictureInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265PictureInfoKHR; + void const * pNext = {}; + uint32_t naluSliceSegmentEntryCount = {}; + VideoEncodeH265NaluSliceSegmentInfoKHR const * pNaluSliceSegmentEntries = {}; + StdVideoEncodeH265PictureInfo const * pStdPictureInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265PictureInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265PictureInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265ProfileInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265ProfileInfoKHR.html + struct VideoEncodeH265ProfileInfoKHR + { + using NativeType = VkVideoEncodeH265ProfileInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265ProfileInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265ProfileInfoKHR( StdVideoH265ProfileIdc stdProfileIdc_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdProfileIdc{ stdProfileIdc_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265ProfileInfoKHR( VideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265ProfileInfoKHR( VkVideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265ProfileInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265ProfileInfoKHR & operator=( VideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265ProfileInfoKHR & operator=( VkVideoEncodeH265ProfileInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileInfoKHR & setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) & VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265ProfileInfoKHR && setStdProfileIdc( StdVideoH265ProfileIdc stdProfileIdc_ ) && VULKAN_HPP_NOEXCEPT + { + stdProfileIdc = stdProfileIdc_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265ProfileInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265ProfileInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265ProfileInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265ProfileInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdProfileIdc ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoEncodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memcmp( &stdProfileIdc, &rhs.stdProfileIdc, sizeof( StdVideoH265ProfileIdc ) ) == 0 ); + } + + bool operator!=( VideoEncodeH265ProfileInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoEncodeH265ProfileInfoKHR; + void const * pNext = {}; + StdVideoH265ProfileIdc stdProfileIdc = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265ProfileInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265ProfileInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265QpKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265QpKHR.html + struct VideoEncodeH265QpKHR + { + using NativeType = VkVideoEncodeH265QpKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265QpKHR( int32_t qpI_ = {}, int32_t qpP_ = {}, int32_t qpB_ = {} ) VULKAN_HPP_NOEXCEPT + : qpI{ qpI_ } + , qpP{ qpP_ } + , qpB{ qpB_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265QpKHR( VideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265QpKHR( VkVideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265QpKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265QpKHR & operator=( VideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265QpKHR & operator=( VkVideoEncodeH265QpKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR & setQpI( int32_t qpI_ ) & VULKAN_HPP_NOEXCEPT + { + qpI = qpI_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR && setQpI( int32_t qpI_ ) && VULKAN_HPP_NOEXCEPT + { + qpI = qpI_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR & setQpP( int32_t qpP_ ) & VULKAN_HPP_NOEXCEPT + { + qpP = qpP_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR && setQpP( int32_t qpP_ ) && VULKAN_HPP_NOEXCEPT + { + qpP = qpP_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR & setQpB( int32_t qpB_ ) & VULKAN_HPP_NOEXCEPT + { + qpB = qpB_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265QpKHR && setQpB( int32_t qpB_ ) && VULKAN_HPP_NOEXCEPT + { + qpB = qpB_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265QpKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265QpKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265QpKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265QpKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( qpI, qpP, qpB ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265QpKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( qpI == rhs.qpI ) && ( qpP == rhs.qpP ) && ( qpB == rhs.qpB ); +# endif + } + + bool operator!=( VideoEncodeH265QpKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + int32_t qpI = {}; + int32_t qpP = {}; + int32_t qpB = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265QpKHR; + }; +#endif + + // wrapper struct for struct VkVideoEncodeH265QualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265QualityLevelPropertiesKHR.html + struct VideoEncodeH265QualityLevelPropertiesKHR + { + using NativeType = VkVideoEncodeH265QualityLevelPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265QualityLevelPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265QualityLevelPropertiesKHR( VideoEncodeH265RateControlFlagsKHR preferredRateControlFlags_ = {}, + uint32_t preferredGopFrameCount_ = {}, + uint32_t preferredIdrPeriod_ = {}, + uint32_t preferredConsecutiveBFrameCount_ = {}, + uint32_t preferredSubLayerCount_ = {}, + VideoEncodeH265QpKHR preferredConstantQp_ = {}, + uint32_t preferredMaxL0ReferenceCount_ = {}, + uint32_t preferredMaxL1ReferenceCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , preferredRateControlFlags{ preferredRateControlFlags_ } + , preferredGopFrameCount{ preferredGopFrameCount_ } + , preferredIdrPeriod{ preferredIdrPeriod_ } + , preferredConsecutiveBFrameCount{ preferredConsecutiveBFrameCount_ } + , preferredSubLayerCount{ preferredSubLayerCount_ } + , preferredConstantQp{ preferredConstantQp_ } + , preferredMaxL0ReferenceCount{ preferredMaxL0ReferenceCount_ } + , preferredMaxL1ReferenceCount{ preferredMaxL1ReferenceCount_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265QualityLevelPropertiesKHR( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265QualityLevelPropertiesKHR( VkVideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265QualityLevelPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265QualityLevelPropertiesKHR & operator=( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265QualityLevelPropertiesKHR & operator=( VkVideoEncodeH265QualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeH265QualityLevelPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265QualityLevelPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265QualityLevelPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265QualityLevelPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + preferredRateControlFlags, + preferredGopFrameCount, + preferredIdrPeriod, + preferredConsecutiveBFrameCount, + preferredSubLayerCount, + preferredConstantQp, + preferredMaxL0ReferenceCount, + preferredMaxL1ReferenceCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265QualityLevelPropertiesKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredRateControlFlags == rhs.preferredRateControlFlags ) && + ( preferredGopFrameCount == rhs.preferredGopFrameCount ) && ( preferredIdrPeriod == rhs.preferredIdrPeriod ) && + ( preferredConsecutiveBFrameCount == rhs.preferredConsecutiveBFrameCount ) && ( preferredSubLayerCount == rhs.preferredSubLayerCount ) && + ( preferredConstantQp == rhs.preferredConstantQp ) && ( preferredMaxL0ReferenceCount == rhs.preferredMaxL0ReferenceCount ) && + ( preferredMaxL1ReferenceCount == rhs.preferredMaxL1ReferenceCount ); +# endif + } + + bool operator!=( VideoEncodeH265QualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265QualityLevelPropertiesKHR; + void * pNext = {}; + VideoEncodeH265RateControlFlagsKHR preferredRateControlFlags = {}; + uint32_t preferredGopFrameCount = {}; + uint32_t preferredIdrPeriod = {}; + uint32_t preferredConsecutiveBFrameCount = {}; + uint32_t preferredSubLayerCount = {}; + VideoEncodeH265QpKHR preferredConstantQp = {}; + uint32_t preferredMaxL0ReferenceCount = {}; + uint32_t preferredMaxL1ReferenceCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265QualityLevelPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265QualityLevelPropertiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265QuantizationMapCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265QuantizationMapCapabilitiesKHR.html + struct VideoEncodeH265QuantizationMapCapabilitiesKHR + { + using NativeType = VkVideoEncodeH265QuantizationMapCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265QuantizationMapCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeH265QuantizationMapCapabilitiesKHR( int32_t minQpDelta_ = {}, int32_t maxQpDelta_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , minQpDelta{ minQpDelta_ } + , maxQpDelta{ maxQpDelta_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoEncodeH265QuantizationMapCapabilitiesKHR( VideoEncodeH265QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265QuantizationMapCapabilitiesKHR( VkVideoEncodeH265QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265QuantizationMapCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265QuantizationMapCapabilitiesKHR & operator=( VideoEncodeH265QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265QuantizationMapCapabilitiesKHR & operator=( VkVideoEncodeH265QuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeH265QuantizationMapCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265QuantizationMapCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265QuantizationMapCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265QuantizationMapCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, minQpDelta, maxQpDelta ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265QuantizationMapCapabilitiesKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265QuantizationMapCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( minQpDelta == rhs.minQpDelta ) && ( maxQpDelta == rhs.maxQpDelta ); +# endif + } + + bool operator!=( VideoEncodeH265QuantizationMapCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265QuantizationMapCapabilitiesKHR; + void * pNext = {}; + int32_t minQpDelta = {}; + int32_t maxQpDelta = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265QuantizationMapCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265QuantizationMapCapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265RateControlInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlInfoKHR.html + struct VideoEncodeH265RateControlInfoKHR + { + using NativeType = VkVideoEncodeH265RateControlInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265RateControlInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlInfoKHR( VideoEncodeH265RateControlFlagsKHR flags_ = {}, + uint32_t gopFrameCount_ = {}, + uint32_t idrPeriod_ = {}, + uint32_t consecutiveBFrameCount_ = {}, + uint32_t subLayerCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , gopFrameCount{ gopFrameCount_ } + , idrPeriod{ idrPeriod_ } + , consecutiveBFrameCount{ consecutiveBFrameCount_ } + , subLayerCount{ subLayerCount_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlInfoKHR( VideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265RateControlInfoKHR( VkVideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265RateControlInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265RateControlInfoKHR & operator=( VideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265RateControlInfoKHR & operator=( VkVideoEncodeH265RateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setFlags( VideoEncodeH265RateControlFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR && setFlags( VideoEncodeH265RateControlFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setGopFrameCount( uint32_t gopFrameCount_ ) & VULKAN_HPP_NOEXCEPT + { + gopFrameCount = gopFrameCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR && setGopFrameCount( uint32_t gopFrameCount_ ) && VULKAN_HPP_NOEXCEPT + { + gopFrameCount = gopFrameCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setIdrPeriod( uint32_t idrPeriod_ ) & VULKAN_HPP_NOEXCEPT + { + idrPeriod = idrPeriod_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR && setIdrPeriod( uint32_t idrPeriod_ ) && VULKAN_HPP_NOEXCEPT + { + idrPeriod = idrPeriod_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) & VULKAN_HPP_NOEXCEPT + { + consecutiveBFrameCount = consecutiveBFrameCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR && setConsecutiveBFrameCount( uint32_t consecutiveBFrameCount_ ) && VULKAN_HPP_NOEXCEPT + { + consecutiveBFrameCount = consecutiveBFrameCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR & setSubLayerCount( uint32_t subLayerCount_ ) & VULKAN_HPP_NOEXCEPT + { + subLayerCount = subLayerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlInfoKHR && setSubLayerCount( uint32_t subLayerCount_ ) && VULKAN_HPP_NOEXCEPT + { + subLayerCount = subLayerCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265RateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265RateControlInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265RateControlInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265RateControlInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, gopFrameCount, idrPeriod, consecutiveBFrameCount, subLayerCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265RateControlInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( gopFrameCount == rhs.gopFrameCount ) && + ( idrPeriod == rhs.idrPeriod ) && ( consecutiveBFrameCount == rhs.consecutiveBFrameCount ) && ( subLayerCount == rhs.subLayerCount ); +# endif + } + + bool operator!=( VideoEncodeH265RateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265RateControlInfoKHR; + void const * pNext = {}; + VideoEncodeH265RateControlFlagsKHR flags = {}; + uint32_t gopFrameCount = {}; + uint32_t idrPeriod = {}; + uint32_t consecutiveBFrameCount = {}; + uint32_t subLayerCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265RateControlInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265RateControlInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265RateControlLayerInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265RateControlLayerInfoKHR.html + struct VideoEncodeH265RateControlLayerInfoKHR + { + using NativeType = VkVideoEncodeH265RateControlLayerInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265RateControlLayerInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlLayerInfoKHR( Bool32 useMinQp_ = {}, + VideoEncodeH265QpKHR minQp_ = {}, + Bool32 useMaxQp_ = {}, + VideoEncodeH265QpKHR maxQp_ = {}, + Bool32 useMaxFrameSize_ = {}, + VideoEncodeH265FrameSizeKHR maxFrameSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , useMinQp{ useMinQp_ } + , minQp{ minQp_ } + , useMaxQp{ useMaxQp_ } + , maxQp{ maxQp_ } + , useMaxFrameSize{ useMaxFrameSize_ } + , maxFrameSize{ maxFrameSize_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265RateControlLayerInfoKHR( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265RateControlLayerInfoKHR( VkVideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265RateControlLayerInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265RateControlLayerInfoKHR & operator=( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265RateControlLayerInfoKHR & operator=( VkVideoEncodeH265RateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setUseMinQp( Bool32 useMinQp_ ) & VULKAN_HPP_NOEXCEPT + { + useMinQp = useMinQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR && setUseMinQp( Bool32 useMinQp_ ) && VULKAN_HPP_NOEXCEPT + { + useMinQp = useMinQp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setMinQp( VideoEncodeH265QpKHR const & minQp_ ) & VULKAN_HPP_NOEXCEPT + { + minQp = minQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR && setMinQp( VideoEncodeH265QpKHR const & minQp_ ) && VULKAN_HPP_NOEXCEPT + { + minQp = minQp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setUseMaxQp( Bool32 useMaxQp_ ) & VULKAN_HPP_NOEXCEPT + { + useMaxQp = useMaxQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR && setUseMaxQp( Bool32 useMaxQp_ ) && VULKAN_HPP_NOEXCEPT + { + useMaxQp = useMaxQp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setMaxQp( VideoEncodeH265QpKHR const & maxQp_ ) & VULKAN_HPP_NOEXCEPT + { + maxQp = maxQp_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR && setMaxQp( VideoEncodeH265QpKHR const & maxQp_ ) && VULKAN_HPP_NOEXCEPT + { + maxQp = maxQp_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setUseMaxFrameSize( Bool32 useMaxFrameSize_ ) & VULKAN_HPP_NOEXCEPT + { + useMaxFrameSize = useMaxFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR && setUseMaxFrameSize( Bool32 useMaxFrameSize_ ) && VULKAN_HPP_NOEXCEPT + { + useMaxFrameSize = useMaxFrameSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR & setMaxFrameSize( VideoEncodeH265FrameSizeKHR const & maxFrameSize_ ) & VULKAN_HPP_NOEXCEPT + { + maxFrameSize = maxFrameSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265RateControlLayerInfoKHR && setMaxFrameSize( VideoEncodeH265FrameSizeKHR const & maxFrameSize_ ) && + VULKAN_HPP_NOEXCEPT + { + maxFrameSize = maxFrameSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265RateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265RateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265RateControlLayerInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265RateControlLayerInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, useMinQp, minQp, useMaxQp, maxQp, useMaxFrameSize, maxFrameSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265RateControlLayerInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMinQp == rhs.useMinQp ) && ( minQp == rhs.minQp ) && ( useMaxQp == rhs.useMaxQp ) && + ( maxQp == rhs.maxQp ) && ( useMaxFrameSize == rhs.useMaxFrameSize ) && ( maxFrameSize == rhs.maxFrameSize ); +# endif + } + + bool operator!=( VideoEncodeH265RateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265RateControlLayerInfoKHR; + void const * pNext = {}; + Bool32 useMinQp = {}; + VideoEncodeH265QpKHR minQp = {}; + Bool32 useMaxQp = {}; + VideoEncodeH265QpKHR maxQp = {}; + Bool32 useMaxFrameSize = {}; + VideoEncodeH265FrameSizeKHR maxFrameSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265RateControlLayerInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265RateControlLayerInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265SessionCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionCreateInfoKHR.html + struct VideoEncodeH265SessionCreateInfoKHR + { + using NativeType = VkVideoEncodeH265SessionCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265SessionCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionCreateInfoKHR( Bool32 useMaxLevelIdc_ = {}, + StdVideoH265LevelIdc maxLevelIdc_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , useMaxLevelIdc{ useMaxLevelIdc_ } + , maxLevelIdc{ maxLevelIdc_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionCreateInfoKHR( VideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionCreateInfoKHR( VkVideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265SessionCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265SessionCreateInfoKHR & operator=( VideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265SessionCreateInfoKHR & operator=( VkVideoEncodeH265SessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR & setUseMaxLevelIdc( Bool32 useMaxLevelIdc_ ) & VULKAN_HPP_NOEXCEPT + { + useMaxLevelIdc = useMaxLevelIdc_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR && setUseMaxLevelIdc( Bool32 useMaxLevelIdc_ ) && VULKAN_HPP_NOEXCEPT + { + useMaxLevelIdc = useMaxLevelIdc_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR & setMaxLevelIdc( StdVideoH265LevelIdc maxLevelIdc_ ) & VULKAN_HPP_NOEXCEPT + { + maxLevelIdc = maxLevelIdc_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionCreateInfoKHR && setMaxLevelIdc( StdVideoH265LevelIdc maxLevelIdc_ ) && VULKAN_HPP_NOEXCEPT + { + maxLevelIdc = maxLevelIdc_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265SessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, useMaxLevelIdc, maxLevelIdc ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( VideoEncodeH265SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = useMaxLevelIdc <=> rhs.useMaxLevelIdc; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +#endif + + bool operator==( VideoEncodeH265SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( useMaxLevelIdc == rhs.useMaxLevelIdc ) && + ( memcmp( &maxLevelIdc, &rhs.maxLevelIdc, sizeof( StdVideoH265LevelIdc ) ) == 0 ); + } + + bool operator!=( VideoEncodeH265SessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eVideoEncodeH265SessionCreateInfoKHR; + void const * pNext = {}; + Bool32 useMaxLevelIdc = {}; + StdVideoH265LevelIdc maxLevelIdc = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265SessionCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265SessionCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265SessionParametersAddInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersAddInfoKHR.html + struct VideoEncodeH265SessionParametersAddInfoKHR + { + using NativeType = VkVideoEncodeH265SessionParametersAddInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265SessionParametersAddInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersAddInfoKHR( uint32_t stdVPSCount_ = {}, + StdVideoH265VideoParameterSet const * pStdVPSs_ = {}, + uint32_t stdSPSCount_ = {}, + StdVideoH265SequenceParameterSet const * pStdSPSs_ = {}, + uint32_t stdPPSCount_ = {}, + StdVideoH265PictureParameterSet const * pStdPPSs_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , stdVPSCount{ stdVPSCount_ } + , pStdVPSs{ pStdVPSs_ } + , stdSPSCount{ stdSPSCount_ } + , pStdSPSs{ pStdSPSs_ } + , stdPPSCount{ stdPPSCount_ } + , pStdPPSs{ pStdPPSs_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersAddInfoKHR( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionParametersAddInfoKHR( VkVideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265SessionParametersAddInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265SessionParametersAddInfoKHR( ArrayProxyNoTemporaries const & stdVPSs_, + ArrayProxyNoTemporaries const & stdSPSs_ = {}, + ArrayProxyNoTemporaries const & stdPPSs_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , stdVPSCount( static_cast( stdVPSs_.size() ) ) + , pStdVPSs( stdVPSs_.data() ) + , stdSPSCount( static_cast( stdSPSs_.size() ) ) + , pStdSPSs( stdSPSs_.data() ) + , stdPPSCount( static_cast( stdPPSs_.size() ) ) + , pStdPPSs( stdPPSs_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoEncodeH265SessionParametersAddInfoKHR & operator=( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265SessionParametersAddInfoKHR & operator=( VkVideoEncodeH265SessionParametersAddInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setStdVPSCount( uint32_t stdVPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdVPSCount = stdVPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR && setStdVPSCount( uint32_t stdVPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdVPSCount = stdVPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPStdVPSs( StdVideoH265VideoParameterSet const * pStdVPSs_ ) & VULKAN_HPP_NOEXCEPT + { + pStdVPSs = pStdVPSs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR && setPStdVPSs( StdVideoH265VideoParameterSet const * pStdVPSs_ ) && VULKAN_HPP_NOEXCEPT + { + pStdVPSs = pStdVPSs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265SessionParametersAddInfoKHR & setStdVPSs( ArrayProxyNoTemporaries const & stdVPSs_ ) VULKAN_HPP_NOEXCEPT + { + stdVPSCount = static_cast( stdVPSs_.size() ); + pStdVPSs = stdVPSs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setStdSPSCount( uint32_t stdSPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdSPSCount = stdSPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR && setStdSPSCount( uint32_t stdSPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdSPSCount = stdSPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPStdSPSs( StdVideoH265SequenceParameterSet const * pStdSPSs_ ) & VULKAN_HPP_NOEXCEPT + { + pStdSPSs = pStdSPSs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR && setPStdSPSs( StdVideoH265SequenceParameterSet const * pStdSPSs_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdSPSs = pStdSPSs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265SessionParametersAddInfoKHR & + setStdSPSs( ArrayProxyNoTemporaries const & stdSPSs_ ) VULKAN_HPP_NOEXCEPT + { + stdSPSCount = static_cast( stdSPSs_.size() ); + pStdSPSs = stdSPSs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setStdPPSCount( uint32_t stdPPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + stdPPSCount = stdPPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR && setStdPPSCount( uint32_t stdPPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + stdPPSCount = stdPPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR & setPStdPPSs( StdVideoH265PictureParameterSet const * pStdPPSs_ ) & VULKAN_HPP_NOEXCEPT + { + pStdPPSs = pStdPPSs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersAddInfoKHR && setPStdPPSs( StdVideoH265PictureParameterSet const * pStdPPSs_ ) && + VULKAN_HPP_NOEXCEPT + { + pStdPPSs = pStdPPSs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeH265SessionParametersAddInfoKHR & + setStdPPSs( ArrayProxyNoTemporaries const & stdPPSs_ ) VULKAN_HPP_NOEXCEPT + { + stdPPSCount = static_cast( stdPPSs_.size() ); + pStdPPSs = stdPPSs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265SessionParametersAddInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersAddInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersAddInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersAddInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, stdVPSCount, pStdVPSs, stdSPSCount, pStdSPSs, stdPPSCount, pStdPPSs ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265SessionParametersAddInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( stdVPSCount == rhs.stdVPSCount ) && ( pStdVPSs == rhs.pStdVPSs ) && + ( stdSPSCount == rhs.stdSPSCount ) && ( pStdSPSs == rhs.pStdSPSs ) && ( stdPPSCount == rhs.stdPPSCount ) && ( pStdPPSs == rhs.pStdPPSs ); +# endif + } + + bool operator!=( VideoEncodeH265SessionParametersAddInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265SessionParametersAddInfoKHR; + void const * pNext = {}; + uint32_t stdVPSCount = {}; + StdVideoH265VideoParameterSet const * pStdVPSs = {}; + uint32_t stdSPSCount = {}; + StdVideoH265SequenceParameterSet const * pStdSPSs = {}; + uint32_t stdPPSCount = {}; + StdVideoH265PictureParameterSet const * pStdPPSs = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265SessionParametersAddInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265SessionParametersAddInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265SessionParametersCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersCreateInfoKHR.html + struct VideoEncodeH265SessionParametersCreateInfoKHR + { + using NativeType = VkVideoEncodeH265SessionParametersCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265SessionParametersCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersCreateInfoKHR( uint32_t maxStdVPSCount_ = {}, + uint32_t maxStdSPSCount_ = {}, + uint32_t maxStdPPSCount_ = {}, + VideoEncodeH265SessionParametersAddInfoKHR const * pParametersAddInfo_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxStdVPSCount{ maxStdVPSCount_ } + , maxStdSPSCount{ maxStdSPSCount_ } + , maxStdPPSCount{ maxStdPPSCount_ } + , pParametersAddInfo{ pParametersAddInfo_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoEncodeH265SessionParametersCreateInfoKHR( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionParametersCreateInfoKHR( VkVideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265SessionParametersCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265SessionParametersCreateInfoKHR & operator=( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265SessionParametersCreateInfoKHR & operator=( VkVideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setMaxStdVPSCount( uint32_t maxStdVPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxStdVPSCount = maxStdVPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR && setMaxStdVPSCount( uint32_t maxStdVPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxStdVPSCount = maxStdVPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxStdSPSCount = maxStdSPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR && setMaxStdSPSCount( uint32_t maxStdSPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxStdSPSCount = maxStdSPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) & VULKAN_HPP_NOEXCEPT + { + maxStdPPSCount = maxStdPPSCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR && setMaxStdPPSCount( uint32_t maxStdPPSCount_ ) && VULKAN_HPP_NOEXCEPT + { + maxStdPPSCount = maxStdPPSCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR & + setPParametersAddInfo( VideoEncodeH265SessionParametersAddInfoKHR const * pParametersAddInfo_ ) & + VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersCreateInfoKHR && + setPParametersAddInfo( VideoEncodeH265SessionParametersAddInfoKHR const * pParametersAddInfo_ ) && + VULKAN_HPP_NOEXCEPT + { + pParametersAddInfo = pParametersAddInfo_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265SessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxStdVPSCount, maxStdSPSCount, maxStdPPSCount, pParametersAddInfo ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265SessionParametersCreateInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxStdVPSCount == rhs.maxStdVPSCount ) && ( maxStdSPSCount == rhs.maxStdSPSCount ) && + ( maxStdPPSCount == rhs.maxStdPPSCount ) && ( pParametersAddInfo == rhs.pParametersAddInfo ); +# endif + } + + bool operator!=( VideoEncodeH265SessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265SessionParametersCreateInfoKHR; + void const * pNext = {}; + uint32_t maxStdVPSCount = {}; + uint32_t maxStdSPSCount = {}; + uint32_t maxStdPPSCount = {}; + VideoEncodeH265SessionParametersAddInfoKHR const * pParametersAddInfo = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265SessionParametersCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265SessionParametersCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersFeedbackInfoKHR.html + struct VideoEncodeH265SessionParametersFeedbackInfoKHR + { + using NativeType = VkVideoEncodeH265SessionParametersFeedbackInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265SessionParametersFeedbackInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersFeedbackInfoKHR( Bool32 hasStdVPSOverrides_ = {}, + Bool32 hasStdSPSOverrides_ = {}, + Bool32 hasStdPPSOverrides_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , hasStdVPSOverrides{ hasStdVPSOverrides_ } + , hasStdSPSOverrides{ hasStdSPSOverrides_ } + , hasStdPPSOverrides{ hasStdPPSOverrides_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoEncodeH265SessionParametersFeedbackInfoKHR( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionParametersFeedbackInfoKHR( VkVideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265SessionParametersFeedbackInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265SessionParametersFeedbackInfoKHR & operator=( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265SessionParametersFeedbackInfoKHR & operator=( VkVideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersFeedbackInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hasStdVPSOverrides, hasStdSPSOverrides, hasStdPPSOverrides ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265SessionParametersFeedbackInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasStdVPSOverrides == rhs.hasStdVPSOverrides ) && + ( hasStdSPSOverrides == rhs.hasStdSPSOverrides ) && ( hasStdPPSOverrides == rhs.hasStdPPSOverrides ); +# endif + } + + bool operator!=( VideoEncodeH265SessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265SessionParametersFeedbackInfoKHR; + void * pNext = {}; + Bool32 hasStdVPSOverrides = {}; + Bool32 hasStdSPSOverrides = {}; + Bool32 hasStdPPSOverrides = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265SessionParametersFeedbackInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265SessionParametersFeedbackInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeH265SessionParametersGetInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeH265SessionParametersGetInfoKHR.html + struct VideoEncodeH265SessionParametersGetInfoKHR + { + using NativeType = VkVideoEncodeH265SessionParametersGetInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeH265SessionParametersGetInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersGetInfoKHR( Bool32 writeStdVPS_ = {}, + Bool32 writeStdSPS_ = {}, + Bool32 writeStdPPS_ = {}, + uint32_t stdVPSId_ = {}, + uint32_t stdSPSId_ = {}, + uint32_t stdPPSId_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , writeStdVPS{ writeStdVPS_ } + , writeStdSPS{ writeStdSPS_ } + , writeStdPPS{ writeStdPPS_ } + , stdVPSId{ stdVPSId_ } + , stdSPSId{ stdSPSId_ } + , stdPPSId{ stdPPSId_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeH265SessionParametersGetInfoKHR( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeH265SessionParametersGetInfoKHR( VkVideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeH265SessionParametersGetInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeH265SessionParametersGetInfoKHR & operator=( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeH265SessionParametersGetInfoKHR & operator=( VkVideoEncodeH265SessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setWriteStdVPS( Bool32 writeStdVPS_ ) & VULKAN_HPP_NOEXCEPT + { + writeStdVPS = writeStdVPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR && setWriteStdVPS( Bool32 writeStdVPS_ ) && VULKAN_HPP_NOEXCEPT + { + writeStdVPS = writeStdVPS_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setWriteStdSPS( Bool32 writeStdSPS_ ) & VULKAN_HPP_NOEXCEPT + { + writeStdSPS = writeStdSPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR && setWriteStdSPS( Bool32 writeStdSPS_ ) && VULKAN_HPP_NOEXCEPT + { + writeStdSPS = writeStdSPS_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setWriteStdPPS( Bool32 writeStdPPS_ ) & VULKAN_HPP_NOEXCEPT + { + writeStdPPS = writeStdPPS_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR && setWriteStdPPS( Bool32 writeStdPPS_ ) && VULKAN_HPP_NOEXCEPT + { + writeStdPPS = writeStdPPS_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setStdVPSId( uint32_t stdVPSId_ ) & VULKAN_HPP_NOEXCEPT + { + stdVPSId = stdVPSId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR && setStdVPSId( uint32_t stdVPSId_ ) && VULKAN_HPP_NOEXCEPT + { + stdVPSId = stdVPSId_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setStdSPSId( uint32_t stdSPSId_ ) & VULKAN_HPP_NOEXCEPT + { + stdSPSId = stdSPSId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR && setStdSPSId( uint32_t stdSPSId_ ) && VULKAN_HPP_NOEXCEPT + { + stdSPSId = stdSPSId_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR & setStdPPSId( uint32_t stdPPSId_ ) & VULKAN_HPP_NOEXCEPT + { + stdPPSId = stdPPSId_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeH265SessionParametersGetInfoKHR && setStdPPSId( uint32_t stdPPSId_ ) && VULKAN_HPP_NOEXCEPT + { + stdPPSId = stdPPSId_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeH265SessionParametersGetInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersGetInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersGetInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeH265SessionParametersGetInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, writeStdVPS, writeStdSPS, writeStdPPS, stdVPSId, stdSPSId, stdPPSId ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeH265SessionParametersGetInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( writeStdVPS == rhs.writeStdVPS ) && ( writeStdSPS == rhs.writeStdSPS ) && + ( writeStdPPS == rhs.writeStdPPS ) && ( stdVPSId == rhs.stdVPSId ) && ( stdSPSId == rhs.stdSPSId ) && ( stdPPSId == rhs.stdPPSId ); +# endif + } + + bool operator!=( VideoEncodeH265SessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeH265SessionParametersGetInfoKHR; + void const * pNext = {}; + Bool32 writeStdVPS = {}; + Bool32 writeStdSPS = {}; + Bool32 writeStdPPS = {}; + uint32_t stdVPSId = {}; + uint32_t stdSPSId = {}; + uint32_t stdPPSId = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeH265SessionParametersGetInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeH265SessionParametersGetInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeInfoKHR.html + struct VideoEncodeInfoKHR + { + using NativeType = VkVideoEncodeInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeInfoKHR( VideoEncodeFlagsKHR flags_ = {}, + Buffer dstBuffer_ = {}, + DeviceSize dstBufferOffset_ = {}, + DeviceSize dstBufferRange_ = {}, + VideoPictureResourceInfoKHR srcPictureResource_ = {}, + VideoReferenceSlotInfoKHR const * pSetupReferenceSlot_ = {}, + uint32_t referenceSlotCount_ = {}, + VideoReferenceSlotInfoKHR const * pReferenceSlots_ = {}, + uint32_t precedingExternallyEncodedBytes_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , dstBuffer{ dstBuffer_ } + , dstBufferOffset{ dstBufferOffset_ } + , dstBufferRange{ dstBufferRange_ } + , srcPictureResource{ srcPictureResource_ } + , pSetupReferenceSlot{ pSetupReferenceSlot_ } + , referenceSlotCount{ referenceSlotCount_ } + , pReferenceSlots{ pReferenceSlots_ } + , precedingExternallyEncodedBytes{ precedingExternallyEncodedBytes_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeInfoKHR( VideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeInfoKHR( VkVideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT : VideoEncodeInfoKHR( *reinterpret_cast( &rhs ) ) {} + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeInfoKHR( VideoEncodeFlagsKHR flags_, + Buffer dstBuffer_, + DeviceSize dstBufferOffset_, + DeviceSize dstBufferRange_, + VideoPictureResourceInfoKHR srcPictureResource_, + VideoReferenceSlotInfoKHR const * pSetupReferenceSlot_, + ArrayProxyNoTemporaries const & referenceSlots_, + uint32_t precedingExternallyEncodedBytes_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , dstBuffer( dstBuffer_ ) + , dstBufferOffset( dstBufferOffset_ ) + , dstBufferRange( dstBufferRange_ ) + , srcPictureResource( srcPictureResource_ ) + , pSetupReferenceSlot( pSetupReferenceSlot_ ) + , referenceSlotCount( static_cast( referenceSlots_.size() ) ) + , pReferenceSlots( referenceSlots_.data() ) + , precedingExternallyEncodedBytes( precedingExternallyEncodedBytes_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoEncodeInfoKHR & operator=( VideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeInfoKHR & operator=( VkVideoEncodeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setFlags( VideoEncodeFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR && setFlags( VideoEncodeFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setDstBuffer( Buffer dstBuffer_ ) & VULKAN_HPP_NOEXCEPT + { + dstBuffer = dstBuffer_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR && setDstBuffer( Buffer dstBuffer_ ) && VULKAN_HPP_NOEXCEPT + { + dstBuffer = dstBuffer_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setDstBufferOffset( DeviceSize dstBufferOffset_ ) & VULKAN_HPP_NOEXCEPT + { + dstBufferOffset = dstBufferOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR && setDstBufferOffset( DeviceSize dstBufferOffset_ ) && VULKAN_HPP_NOEXCEPT + { + dstBufferOffset = dstBufferOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setDstBufferRange( DeviceSize dstBufferRange_ ) & VULKAN_HPP_NOEXCEPT + { + dstBufferRange = dstBufferRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR && setDstBufferRange( DeviceSize dstBufferRange_ ) && VULKAN_HPP_NOEXCEPT + { + dstBufferRange = dstBufferRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setSrcPictureResource( VideoPictureResourceInfoKHR const & srcPictureResource_ ) & VULKAN_HPP_NOEXCEPT + { + srcPictureResource = srcPictureResource_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR && setSrcPictureResource( VideoPictureResourceInfoKHR const & srcPictureResource_ ) && VULKAN_HPP_NOEXCEPT + { + srcPictureResource = srcPictureResource_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPSetupReferenceSlot( VideoReferenceSlotInfoKHR const * pSetupReferenceSlot_ ) & VULKAN_HPP_NOEXCEPT + { + pSetupReferenceSlot = pSetupReferenceSlot_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR && setPSetupReferenceSlot( VideoReferenceSlotInfoKHR const * pSetupReferenceSlot_ ) && VULKAN_HPP_NOEXCEPT + { + pSetupReferenceSlot = pSetupReferenceSlot_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setReferenceSlotCount( uint32_t referenceSlotCount_ ) & VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = referenceSlotCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR && setReferenceSlotCount( uint32_t referenceSlotCount_ ) && VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = referenceSlotCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPReferenceSlots( VideoReferenceSlotInfoKHR const * pReferenceSlots_ ) & VULKAN_HPP_NOEXCEPT + { + pReferenceSlots = pReferenceSlots_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR && setPReferenceSlots( VideoReferenceSlotInfoKHR const * pReferenceSlots_ ) && VULKAN_HPP_NOEXCEPT + { + pReferenceSlots = pReferenceSlots_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeInfoKHR & setReferenceSlots( ArrayProxyNoTemporaries const & referenceSlots_ ) VULKAN_HPP_NOEXCEPT + { + referenceSlotCount = static_cast( referenceSlots_.size() ); + pReferenceSlots = referenceSlots_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR & setPrecedingExternallyEncodedBytes( uint32_t precedingExternallyEncodedBytes_ ) & VULKAN_HPP_NOEXCEPT + { + precedingExternallyEncodedBytes = precedingExternallyEncodedBytes_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeInfoKHR && setPrecedingExternallyEncodedBytes( uint32_t precedingExternallyEncodedBytes_ ) && VULKAN_HPP_NOEXCEPT + { + precedingExternallyEncodedBytes = precedingExternallyEncodedBytes_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + flags, + dstBuffer, + dstBufferOffset, + dstBufferRange, + srcPictureResource, + pSetupReferenceSlot, + referenceSlotCount, + pReferenceSlots, + precedingExternallyEncodedBytes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dstBuffer == rhs.dstBuffer ) && + ( dstBufferOffset == rhs.dstBufferOffset ) && ( dstBufferRange == rhs.dstBufferRange ) && ( srcPictureResource == rhs.srcPictureResource ) && + ( pSetupReferenceSlot == rhs.pSetupReferenceSlot ) && ( referenceSlotCount == rhs.referenceSlotCount ) && + ( pReferenceSlots == rhs.pReferenceSlots ) && ( precedingExternallyEncodedBytes == rhs.precedingExternallyEncodedBytes ); +# endif + } + + bool operator!=( VideoEncodeInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeInfoKHR; + void const * pNext = {}; + VideoEncodeFlagsKHR flags = {}; + Buffer dstBuffer = {}; + DeviceSize dstBufferOffset = {}; + DeviceSize dstBufferRange = {}; + VideoPictureResourceInfoKHR srcPictureResource = {}; + VideoReferenceSlotInfoKHR const * pSetupReferenceSlot = {}; + uint32_t referenceSlotCount = {}; + VideoReferenceSlotInfoKHR const * pReferenceSlots = {}; + uint32_t precedingExternallyEncodedBytes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeIntraRefreshCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshCapabilitiesKHR.html + struct VideoEncodeIntraRefreshCapabilitiesKHR + { + using NativeType = VkVideoEncodeIntraRefreshCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeIntraRefreshCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeIntraRefreshCapabilitiesKHR( VideoEncodeIntraRefreshModeFlagsKHR intraRefreshModes_ = {}, + uint32_t maxIntraRefreshCycleDuration_ = {}, + uint32_t maxIntraRefreshActiveReferencePictures_ = {}, + Bool32 partitionIndependentIntraRefreshRegions_ = {}, + Bool32 nonRectangularIntraRefreshRegions_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , intraRefreshModes{ intraRefreshModes_ } + , maxIntraRefreshCycleDuration{ maxIntraRefreshCycleDuration_ } + , maxIntraRefreshActiveReferencePictures{ maxIntraRefreshActiveReferencePictures_ } + , partitionIndependentIntraRefreshRegions{ partitionIndependentIntraRefreshRegions_ } + , nonRectangularIntraRefreshRegions{ nonRectangularIntraRefreshRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeIntraRefreshCapabilitiesKHR( VideoEncodeIntraRefreshCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeIntraRefreshCapabilitiesKHR( VkVideoEncodeIntraRefreshCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeIntraRefreshCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeIntraRefreshCapabilitiesKHR & operator=( VideoEncodeIntraRefreshCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeIntraRefreshCapabilitiesKHR & operator=( VkVideoEncodeIntraRefreshCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeIntraRefreshCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeIntraRefreshCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeIntraRefreshCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeIntraRefreshCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + intraRefreshModes, + maxIntraRefreshCycleDuration, + maxIntraRefreshActiveReferencePictures, + partitionIndependentIntraRefreshRegions, + nonRectangularIntraRefreshRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeIntraRefreshCapabilitiesKHR const & ) const = default; +#else + bool operator==( VideoEncodeIntraRefreshCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( intraRefreshModes == rhs.intraRefreshModes ) && + ( maxIntraRefreshCycleDuration == rhs.maxIntraRefreshCycleDuration ) && + ( maxIntraRefreshActiveReferencePictures == rhs.maxIntraRefreshActiveReferencePictures ) && + ( partitionIndependentIntraRefreshRegions == rhs.partitionIndependentIntraRefreshRegions ) && + ( nonRectangularIntraRefreshRegions == rhs.nonRectangularIntraRefreshRegions ); +# endif + } + + bool operator!=( VideoEncodeIntraRefreshCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeIntraRefreshCapabilitiesKHR; + void * pNext = {}; + VideoEncodeIntraRefreshModeFlagsKHR intraRefreshModes = {}; + uint32_t maxIntraRefreshCycleDuration = {}; + uint32_t maxIntraRefreshActiveReferencePictures = {}; + Bool32 partitionIndependentIntraRefreshRegions = {}; + Bool32 nonRectangularIntraRefreshRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeIntraRefreshCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeIntraRefreshCapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeIntraRefreshInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeIntraRefreshInfoKHR.html + struct VideoEncodeIntraRefreshInfoKHR + { + using NativeType = VkVideoEncodeIntraRefreshInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeIntraRefreshInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeIntraRefreshInfoKHR( uint32_t intraRefreshCycleDuration_ = {}, + uint32_t intraRefreshIndex_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , intraRefreshCycleDuration{ intraRefreshCycleDuration_ } + , intraRefreshIndex{ intraRefreshIndex_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeIntraRefreshInfoKHR( VideoEncodeIntraRefreshInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeIntraRefreshInfoKHR( VkVideoEncodeIntraRefreshInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeIntraRefreshInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeIntraRefreshInfoKHR & operator=( VideoEncodeIntraRefreshInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeIntraRefreshInfoKHR & operator=( VkVideoEncodeIntraRefreshInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeIntraRefreshInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeIntraRefreshInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeIntraRefreshInfoKHR & setIntraRefreshCycleDuration( uint32_t intraRefreshCycleDuration_ ) & VULKAN_HPP_NOEXCEPT + { + intraRefreshCycleDuration = intraRefreshCycleDuration_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeIntraRefreshInfoKHR && setIntraRefreshCycleDuration( uint32_t intraRefreshCycleDuration_ ) && VULKAN_HPP_NOEXCEPT + { + intraRefreshCycleDuration = intraRefreshCycleDuration_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeIntraRefreshInfoKHR & setIntraRefreshIndex( uint32_t intraRefreshIndex_ ) & VULKAN_HPP_NOEXCEPT + { + intraRefreshIndex = intraRefreshIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeIntraRefreshInfoKHR && setIntraRefreshIndex( uint32_t intraRefreshIndex_ ) && VULKAN_HPP_NOEXCEPT + { + intraRefreshIndex = intraRefreshIndex_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeIntraRefreshInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeIntraRefreshInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeIntraRefreshInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeIntraRefreshInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, intraRefreshCycleDuration, intraRefreshIndex ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeIntraRefreshInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeIntraRefreshInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( intraRefreshCycleDuration == rhs.intraRefreshCycleDuration ) && + ( intraRefreshIndex == rhs.intraRefreshIndex ); +# endif + } + + bool operator!=( VideoEncodeIntraRefreshInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeIntraRefreshInfoKHR; + void const * pNext = {}; + uint32_t intraRefreshCycleDuration = {}; + uint32_t intraRefreshIndex = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeIntraRefreshInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeIntraRefreshInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeProfileRgbConversionInfoVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeProfileRgbConversionInfoVALVE.html + struct VideoEncodeProfileRgbConversionInfoVALVE + { + using NativeType = VkVideoEncodeProfileRgbConversionInfoVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeProfileRgbConversionInfoVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeProfileRgbConversionInfoVALVE( Bool32 performEncodeRgbConversion_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , performEncodeRgbConversion{ performEncodeRgbConversion_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeProfileRgbConversionInfoVALVE( VideoEncodeProfileRgbConversionInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeProfileRgbConversionInfoVALVE( VkVideoEncodeProfileRgbConversionInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeProfileRgbConversionInfoVALVE( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeProfileRgbConversionInfoVALVE & operator=( VideoEncodeProfileRgbConversionInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeProfileRgbConversionInfoVALVE & operator=( VkVideoEncodeProfileRgbConversionInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeProfileRgbConversionInfoVALVE & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeProfileRgbConversionInfoVALVE && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeProfileRgbConversionInfoVALVE & setPerformEncodeRgbConversion( Bool32 performEncodeRgbConversion_ ) & VULKAN_HPP_NOEXCEPT + { + performEncodeRgbConversion = performEncodeRgbConversion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeProfileRgbConversionInfoVALVE && setPerformEncodeRgbConversion( Bool32 performEncodeRgbConversion_ ) && + VULKAN_HPP_NOEXCEPT + { + performEncodeRgbConversion = performEncodeRgbConversion_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeProfileRgbConversionInfoVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeProfileRgbConversionInfoVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeProfileRgbConversionInfoVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeProfileRgbConversionInfoVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, performEncodeRgbConversion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeProfileRgbConversionInfoVALVE const & ) const = default; +#else + bool operator==( VideoEncodeProfileRgbConversionInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( performEncodeRgbConversion == rhs.performEncodeRgbConversion ); +# endif + } + + bool operator!=( VideoEncodeProfileRgbConversionInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeProfileRgbConversionInfoVALVE; + void const * pNext = {}; + Bool32 performEncodeRgbConversion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeProfileRgbConversionInfoVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeProfileRgbConversionInfoVALVE; + }; + + // wrapper struct for struct VkVideoEncodeQualityLevelInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelInfoKHR.html + struct VideoEncodeQualityLevelInfoKHR + { + using NativeType = VkVideoEncodeQualityLevelInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeQualityLevelInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelInfoKHR( uint32_t qualityLevel_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , qualityLevel{ qualityLevel_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelInfoKHR( VideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeQualityLevelInfoKHR( VkVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeQualityLevelInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeQualityLevelInfoKHR & operator=( VideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeQualityLevelInfoKHR & operator=( VkVideoEncodeQualityLevelInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQualityLevelInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQualityLevelInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQualityLevelInfoKHR & setQualityLevel( uint32_t qualityLevel_ ) & VULKAN_HPP_NOEXCEPT + { + qualityLevel = qualityLevel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQualityLevelInfoKHR && setQualityLevel( uint32_t qualityLevel_ ) && VULKAN_HPP_NOEXCEPT + { + qualityLevel = qualityLevel_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeQualityLevelInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeQualityLevelInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeQualityLevelInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeQualityLevelInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, qualityLevel ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeQualityLevelInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( qualityLevel == rhs.qualityLevel ); +# endif + } + + bool operator!=( VideoEncodeQualityLevelInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeQualityLevelInfoKHR; + void const * pNext = {}; + uint32_t qualityLevel = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeQualityLevelInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeQualityLevelInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeQualityLevelPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeQualityLevelPropertiesKHR.html + struct VideoEncodeQualityLevelPropertiesKHR + { + using NativeType = VkVideoEncodeQualityLevelPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeQualityLevelPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeQualityLevelPropertiesKHR( VideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode_ = VideoEncodeRateControlModeFlagBitsKHR::eDefault, + uint32_t preferredRateControlLayerCount_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , preferredRateControlMode{ preferredRateControlMode_ } + , preferredRateControlLayerCount{ preferredRateControlLayerCount_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeQualityLevelPropertiesKHR( VideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeQualityLevelPropertiesKHR( VkVideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeQualityLevelPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeQualityLevelPropertiesKHR & operator=( VideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeQualityLevelPropertiesKHR & operator=( VkVideoEncodeQualityLevelPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeQualityLevelPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeQualityLevelPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeQualityLevelPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeQualityLevelPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, preferredRateControlMode, preferredRateControlLayerCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeQualityLevelPropertiesKHR const & ) const = default; +#else + bool operator==( VideoEncodeQualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( preferredRateControlMode == rhs.preferredRateControlMode ) && + ( preferredRateControlLayerCount == rhs.preferredRateControlLayerCount ); +# endif + } + + bool operator!=( VideoEncodeQualityLevelPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeQualityLevelPropertiesKHR; + void * pNext = {}; + VideoEncodeRateControlModeFlagBitsKHR preferredRateControlMode = VideoEncodeRateControlModeFlagBitsKHR::eDefault; + uint32_t preferredRateControlLayerCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeQualityLevelPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeQualityLevelPropertiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeQuantizationMapCapabilitiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapCapabilitiesKHR.html + struct VideoEncodeQuantizationMapCapabilitiesKHR + { + using NativeType = VkVideoEncodeQuantizationMapCapabilitiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeQuantizationMapCapabilitiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeQuantizationMapCapabilitiesKHR( Extent2D maxQuantizationMapExtent_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , maxQuantizationMapExtent{ maxQuantizationMapExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeQuantizationMapCapabilitiesKHR( VideoEncodeQuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeQuantizationMapCapabilitiesKHR( VkVideoEncodeQuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeQuantizationMapCapabilitiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeQuantizationMapCapabilitiesKHR & operator=( VideoEncodeQuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeQuantizationMapCapabilitiesKHR & operator=( VkVideoEncodeQuantizationMapCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeQuantizationMapCapabilitiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeQuantizationMapCapabilitiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeQuantizationMapCapabilitiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeQuantizationMapCapabilitiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, maxQuantizationMapExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeQuantizationMapCapabilitiesKHR const & ) const = default; +#else + bool operator==( VideoEncodeQuantizationMapCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( maxQuantizationMapExtent == rhs.maxQuantizationMapExtent ); +# endif + } + + bool operator!=( VideoEncodeQuantizationMapCapabilitiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeQuantizationMapCapabilitiesKHR; + void * pNext = {}; + Extent2D maxQuantizationMapExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeQuantizationMapCapabilitiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeQuantizationMapCapabilitiesKHR; + }; + + // wrapper struct for struct VkVideoEncodeQuantizationMapInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapInfoKHR.html + struct VideoEncodeQuantizationMapInfoKHR + { + using NativeType = VkVideoEncodeQuantizationMapInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeQuantizationMapInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeQuantizationMapInfoKHR( ImageView quantizationMap_ = {}, + Extent2D quantizationMapExtent_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , quantizationMap{ quantizationMap_ } + , quantizationMapExtent{ quantizationMapExtent_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeQuantizationMapInfoKHR( VideoEncodeQuantizationMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeQuantizationMapInfoKHR( VkVideoEncodeQuantizationMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeQuantizationMapInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeQuantizationMapInfoKHR & operator=( VideoEncodeQuantizationMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeQuantizationMapInfoKHR & operator=( VkVideoEncodeQuantizationMapInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQuantizationMapInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQuantizationMapInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQuantizationMapInfoKHR & setQuantizationMap( ImageView quantizationMap_ ) & VULKAN_HPP_NOEXCEPT + { + quantizationMap = quantizationMap_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQuantizationMapInfoKHR && setQuantizationMap( ImageView quantizationMap_ ) && VULKAN_HPP_NOEXCEPT + { + quantizationMap = quantizationMap_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQuantizationMapInfoKHR & setQuantizationMapExtent( Extent2D const & quantizationMapExtent_ ) & VULKAN_HPP_NOEXCEPT + { + quantizationMapExtent = quantizationMapExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQuantizationMapInfoKHR && setQuantizationMapExtent( Extent2D const & quantizationMapExtent_ ) && VULKAN_HPP_NOEXCEPT + { + quantizationMapExtent = quantizationMapExtent_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeQuantizationMapInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeQuantizationMapInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeQuantizationMapInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeQuantizationMapInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, quantizationMap, quantizationMapExtent ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeQuantizationMapInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeQuantizationMapInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( quantizationMap == rhs.quantizationMap ) && + ( quantizationMapExtent == rhs.quantizationMapExtent ); +# endif + } + + bool operator!=( VideoEncodeQuantizationMapInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeQuantizationMapInfoKHR; + void const * pNext = {}; + ImageView quantizationMap = {}; + Extent2D quantizationMapExtent = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeQuantizationMapInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeQuantizationMapInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR.html + struct VideoEncodeQuantizationMapSessionParametersCreateInfoKHR + { + using NativeType = VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeQuantizationMapSessionParametersCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeQuantizationMapSessionParametersCreateInfoKHR( Extent2D quantizationMapTexelSize_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , quantizationMapTexelSize{ quantizationMapTexelSize_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeQuantizationMapSessionParametersCreateInfoKHR( VideoEncodeQuantizationMapSessionParametersCreateInfoKHR const & rhs ) + VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeQuantizationMapSessionParametersCreateInfoKHR( VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeQuantizationMapSessionParametersCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeQuantizationMapSessionParametersCreateInfoKHR & + operator=( VideoEncodeQuantizationMapSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeQuantizationMapSessionParametersCreateInfoKHR & + operator=( VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQuantizationMapSessionParametersCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQuantizationMapSessionParametersCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQuantizationMapSessionParametersCreateInfoKHR & + setQuantizationMapTexelSize( Extent2D const & quantizationMapTexelSize_ ) & + VULKAN_HPP_NOEXCEPT + { + quantizationMapTexelSize = quantizationMapTexelSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeQuantizationMapSessionParametersCreateInfoKHR && + setQuantizationMapTexelSize( Extent2D const & quantizationMapTexelSize_ ) && + VULKAN_HPP_NOEXCEPT + { + quantizationMapTexelSize = quantizationMapTexelSize_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeQuantizationMapSessionParametersCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, quantizationMapTexelSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeQuantizationMapSessionParametersCreateInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeQuantizationMapSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( quantizationMapTexelSize == rhs.quantizationMapTexelSize ); +# endif + } + + bool operator!=( VideoEncodeQuantizationMapSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeQuantizationMapSessionParametersCreateInfoKHR; + void const * pNext = {}; + Extent2D quantizationMapTexelSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeQuantizationMapSessionParametersCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeQuantizationMapSessionParametersCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeRateControlLayerInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRateControlLayerInfoKHR.html + struct VideoEncodeRateControlLayerInfoKHR + { + using NativeType = VkVideoEncodeRateControlLayerInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeRateControlLayerInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeRateControlLayerInfoKHR( uint64_t averageBitrate_ = {}, + uint64_t maxBitrate_ = {}, + uint32_t frameRateNumerator_ = {}, + uint32_t frameRateDenominator_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , averageBitrate{ averageBitrate_ } + , maxBitrate{ maxBitrate_ } + , frameRateNumerator{ frameRateNumerator_ } + , frameRateDenominator{ frameRateDenominator_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeRateControlLayerInfoKHR( VideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeRateControlLayerInfoKHR( VkVideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeRateControlLayerInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeRateControlLayerInfoKHR & operator=( VideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeRateControlLayerInfoKHR & operator=( VkVideoEncodeRateControlLayerInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setAverageBitrate( uint64_t averageBitrate_ ) & VULKAN_HPP_NOEXCEPT + { + averageBitrate = averageBitrate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR && setAverageBitrate( uint64_t averageBitrate_ ) && VULKAN_HPP_NOEXCEPT + { + averageBitrate = averageBitrate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setMaxBitrate( uint64_t maxBitrate_ ) & VULKAN_HPP_NOEXCEPT + { + maxBitrate = maxBitrate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR && setMaxBitrate( uint64_t maxBitrate_ ) && VULKAN_HPP_NOEXCEPT + { + maxBitrate = maxBitrate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setFrameRateNumerator( uint32_t frameRateNumerator_ ) & VULKAN_HPP_NOEXCEPT + { + frameRateNumerator = frameRateNumerator_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR && setFrameRateNumerator( uint32_t frameRateNumerator_ ) && VULKAN_HPP_NOEXCEPT + { + frameRateNumerator = frameRateNumerator_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR & setFrameRateDenominator( uint32_t frameRateDenominator_ ) & VULKAN_HPP_NOEXCEPT + { + frameRateDenominator = frameRateDenominator_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlLayerInfoKHR && setFrameRateDenominator( uint32_t frameRateDenominator_ ) && VULKAN_HPP_NOEXCEPT + { + frameRateDenominator = frameRateDenominator_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeRateControlLayerInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeRateControlLayerInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeRateControlLayerInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeRateControlLayerInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, averageBitrate, maxBitrate, frameRateNumerator, frameRateDenominator ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeRateControlLayerInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeRateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( averageBitrate == rhs.averageBitrate ) && ( maxBitrate == rhs.maxBitrate ) && + ( frameRateNumerator == rhs.frameRateNumerator ) && ( frameRateDenominator == rhs.frameRateDenominator ); +# endif + } + + bool operator!=( VideoEncodeRateControlLayerInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeRateControlLayerInfoKHR; + void const * pNext = {}; + uint64_t averageBitrate = {}; + uint64_t maxBitrate = {}; + uint32_t frameRateNumerator = {}; + uint32_t frameRateDenominator = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeRateControlLayerInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeRateControlLayerInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeRateControlInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRateControlInfoKHR.html + struct VideoEncodeRateControlInfoKHR + { + using NativeType = VkVideoEncodeRateControlInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeRateControlInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeRateControlInfoKHR( VideoEncodeRateControlFlagsKHR flags_ = {}, + VideoEncodeRateControlModeFlagBitsKHR rateControlMode_ = VideoEncodeRateControlModeFlagBitsKHR::eDefault, + uint32_t layerCount_ = {}, + VideoEncodeRateControlLayerInfoKHR const * pLayers_ = {}, + uint32_t virtualBufferSizeInMs_ = {}, + uint32_t initialVirtualBufferSizeInMs_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , rateControlMode{ rateControlMode_ } + , layerCount{ layerCount_ } + , pLayers{ pLayers_ } + , virtualBufferSizeInMs{ virtualBufferSizeInMs_ } + , initialVirtualBufferSizeInMs{ initialVirtualBufferSizeInMs_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeRateControlInfoKHR( VideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeRateControlInfoKHR( VkVideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeRateControlInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeRateControlInfoKHR( VideoEncodeRateControlFlagsKHR flags_, + VideoEncodeRateControlModeFlagBitsKHR rateControlMode_, + ArrayProxyNoTemporaries const & layers_, + uint32_t virtualBufferSizeInMs_ = {}, + uint32_t initialVirtualBufferSizeInMs_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , flags( flags_ ) + , rateControlMode( rateControlMode_ ) + , layerCount( static_cast( layers_.size() ) ) + , pLayers( layers_.data() ) + , virtualBufferSizeInMs( virtualBufferSizeInMs_ ) + , initialVirtualBufferSizeInMs( initialVirtualBufferSizeInMs_ ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoEncodeRateControlInfoKHR & operator=( VideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeRateControlInfoKHR & operator=( VkVideoEncodeRateControlInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setFlags( VideoEncodeRateControlFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR && setFlags( VideoEncodeRateControlFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setRateControlMode( VideoEncodeRateControlModeFlagBitsKHR rateControlMode_ ) & VULKAN_HPP_NOEXCEPT + { + rateControlMode = rateControlMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR && setRateControlMode( VideoEncodeRateControlModeFlagBitsKHR rateControlMode_ ) && VULKAN_HPP_NOEXCEPT + { + rateControlMode = rateControlMode_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setLayerCount( uint32_t layerCount_ ) & VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR && setLayerCount( uint32_t layerCount_ ) && VULKAN_HPP_NOEXCEPT + { + layerCount = layerCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setPLayers( VideoEncodeRateControlLayerInfoKHR const * pLayers_ ) & VULKAN_HPP_NOEXCEPT + { + pLayers = pLayers_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR && setPLayers( VideoEncodeRateControlLayerInfoKHR const * pLayers_ ) && VULKAN_HPP_NOEXCEPT + { + pLayers = pLayers_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoEncodeRateControlInfoKHR & setLayers( ArrayProxyNoTemporaries const & layers_ ) VULKAN_HPP_NOEXCEPT + { + layerCount = static_cast( layers_.size() ); + pLayers = layers_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setVirtualBufferSizeInMs( uint32_t virtualBufferSizeInMs_ ) & VULKAN_HPP_NOEXCEPT + { + virtualBufferSizeInMs = virtualBufferSizeInMs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR && setVirtualBufferSizeInMs( uint32_t virtualBufferSizeInMs_ ) && VULKAN_HPP_NOEXCEPT + { + virtualBufferSizeInMs = virtualBufferSizeInMs_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR & setInitialVirtualBufferSizeInMs( uint32_t initialVirtualBufferSizeInMs_ ) & VULKAN_HPP_NOEXCEPT + { + initialVirtualBufferSizeInMs = initialVirtualBufferSizeInMs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeRateControlInfoKHR && setInitialVirtualBufferSizeInMs( uint32_t initialVirtualBufferSizeInMs_ ) && VULKAN_HPP_NOEXCEPT + { + initialVirtualBufferSizeInMs = initialVirtualBufferSizeInMs_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeRateControlInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeRateControlInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeRateControlInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeRateControlInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, rateControlMode, layerCount, pLayers, virtualBufferSizeInMs, initialVirtualBufferSizeInMs ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeRateControlInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeRateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( rateControlMode == rhs.rateControlMode ) && + ( layerCount == rhs.layerCount ) && ( pLayers == rhs.pLayers ) && ( virtualBufferSizeInMs == rhs.virtualBufferSizeInMs ) && + ( initialVirtualBufferSizeInMs == rhs.initialVirtualBufferSizeInMs ); +# endif + } + + bool operator!=( VideoEncodeRateControlInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeRateControlInfoKHR; + void const * pNext = {}; + VideoEncodeRateControlFlagsKHR flags = {}; + VideoEncodeRateControlModeFlagBitsKHR rateControlMode = VideoEncodeRateControlModeFlagBitsKHR::eDefault; + uint32_t layerCount = {}; + VideoEncodeRateControlLayerInfoKHR const * pLayers = {}; + uint32_t virtualBufferSizeInMs = {}; + uint32_t initialVirtualBufferSizeInMs = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeRateControlInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeRateControlInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeRgbConversionCapabilitiesVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeRgbConversionCapabilitiesVALVE.html + struct VideoEncodeRgbConversionCapabilitiesVALVE + { + using NativeType = VkVideoEncodeRgbConversionCapabilitiesVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeRgbConversionCapabilitiesVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeRgbConversionCapabilitiesVALVE( VideoEncodeRgbModelConversionFlagsVALVE rgbModels_ = {}, + VideoEncodeRgbRangeCompressionFlagsVALVE rgbRanges_ = {}, + VideoEncodeRgbChromaOffsetFlagsVALVE xChromaOffsets_ = {}, + VideoEncodeRgbChromaOffsetFlagsVALVE yChromaOffsets_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rgbModels{ rgbModels_ } + , rgbRanges{ rgbRanges_ } + , xChromaOffsets{ xChromaOffsets_ } + , yChromaOffsets{ yChromaOffsets_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeRgbConversionCapabilitiesVALVE( VideoEncodeRgbConversionCapabilitiesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeRgbConversionCapabilitiesVALVE( VkVideoEncodeRgbConversionCapabilitiesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeRgbConversionCapabilitiesVALVE( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeRgbConversionCapabilitiesVALVE & operator=( VideoEncodeRgbConversionCapabilitiesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeRgbConversionCapabilitiesVALVE & operator=( VkVideoEncodeRgbConversionCapabilitiesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeRgbConversionCapabilitiesVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeRgbConversionCapabilitiesVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeRgbConversionCapabilitiesVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeRgbConversionCapabilitiesVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rgbModels, rgbRanges, xChromaOffsets, yChromaOffsets ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeRgbConversionCapabilitiesVALVE const & ) const = default; +#else + bool operator==( VideoEncodeRgbConversionCapabilitiesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rgbModels == rhs.rgbModels ) && ( rgbRanges == rhs.rgbRanges ) && + ( xChromaOffsets == rhs.xChromaOffsets ) && ( yChromaOffsets == rhs.yChromaOffsets ); +# endif + } + + bool operator!=( VideoEncodeRgbConversionCapabilitiesVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeRgbConversionCapabilitiesVALVE; + void * pNext = {}; + VideoEncodeRgbModelConversionFlagsVALVE rgbModels = {}; + VideoEncodeRgbRangeCompressionFlagsVALVE rgbRanges = {}; + VideoEncodeRgbChromaOffsetFlagsVALVE xChromaOffsets = {}; + VideoEncodeRgbChromaOffsetFlagsVALVE yChromaOffsets = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeRgbConversionCapabilitiesVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeRgbConversionCapabilitiesVALVE; + }; + + // wrapper struct for struct VkVideoEncodeSessionIntraRefreshCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeSessionIntraRefreshCreateInfoKHR.html + struct VideoEncodeSessionIntraRefreshCreateInfoKHR + { + using NativeType = VkVideoEncodeSessionIntraRefreshCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeSessionIntraRefreshCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoEncodeSessionIntraRefreshCreateInfoKHR( VideoEncodeIntraRefreshModeFlagBitsKHR intraRefreshMode_ = VideoEncodeIntraRefreshModeFlagBitsKHR::eNone, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , intraRefreshMode{ intraRefreshMode_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeSessionIntraRefreshCreateInfoKHR( VideoEncodeSessionIntraRefreshCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeSessionIntraRefreshCreateInfoKHR( VkVideoEncodeSessionIntraRefreshCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeSessionIntraRefreshCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeSessionIntraRefreshCreateInfoKHR & operator=( VideoEncodeSessionIntraRefreshCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeSessionIntraRefreshCreateInfoKHR & operator=( VkVideoEncodeSessionIntraRefreshCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionIntraRefreshCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionIntraRefreshCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionIntraRefreshCreateInfoKHR & setIntraRefreshMode( VideoEncodeIntraRefreshModeFlagBitsKHR intraRefreshMode_ ) & + VULKAN_HPP_NOEXCEPT + { + intraRefreshMode = intraRefreshMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionIntraRefreshCreateInfoKHR && setIntraRefreshMode( VideoEncodeIntraRefreshModeFlagBitsKHR intraRefreshMode_ ) && + VULKAN_HPP_NOEXCEPT + { + intraRefreshMode = intraRefreshMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeSessionIntraRefreshCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionIntraRefreshCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionIntraRefreshCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionIntraRefreshCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, intraRefreshMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeSessionIntraRefreshCreateInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeSessionIntraRefreshCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( intraRefreshMode == rhs.intraRefreshMode ); +# endif + } + + bool operator!=( VideoEncodeSessionIntraRefreshCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeSessionIntraRefreshCreateInfoKHR; + void const * pNext = {}; + VideoEncodeIntraRefreshModeFlagBitsKHR intraRefreshMode = VideoEncodeIntraRefreshModeFlagBitsKHR::eNone; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeSessionIntraRefreshCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeSessionIntraRefreshCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeSessionParametersFeedbackInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersFeedbackInfoKHR.html + struct VideoEncodeSessionParametersFeedbackInfoKHR + { + using NativeType = VkVideoEncodeSessionParametersFeedbackInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeSessionParametersFeedbackInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersFeedbackInfoKHR( Bool32 hasOverrides_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , hasOverrides{ hasOverrides_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersFeedbackInfoKHR( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeSessionParametersFeedbackInfoKHR( VkVideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeSessionParametersFeedbackInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeSessionParametersFeedbackInfoKHR & operator=( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeSessionParametersFeedbackInfoKHR & operator=( VkVideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoEncodeSessionParametersFeedbackInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionParametersFeedbackInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionParametersFeedbackInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionParametersFeedbackInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, hasOverrides ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeSessionParametersFeedbackInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( hasOverrides == rhs.hasOverrides ); +# endif + } + + bool operator!=( VideoEncodeSessionParametersFeedbackInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeSessionParametersFeedbackInfoKHR; + void * pNext = {}; + Bool32 hasOverrides = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeSessionParametersFeedbackInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeSessionParametersFeedbackInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeSessionParametersGetInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeSessionParametersGetInfoKHR.html + struct VideoEncodeSessionParametersGetInfoKHR + { + using NativeType = VkVideoEncodeSessionParametersGetInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeSessionParametersGetInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersGetInfoKHR( VideoSessionParametersKHR videoSessionParameters_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoSessionParameters{ videoSessionParameters_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeSessionParametersGetInfoKHR( VideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeSessionParametersGetInfoKHR( VkVideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeSessionParametersGetInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeSessionParametersGetInfoKHR & operator=( VideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeSessionParametersGetInfoKHR & operator=( VkVideoEncodeSessionParametersGetInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionParametersGetInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionParametersGetInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionParametersGetInfoKHR & setVideoSessionParameters( VideoSessionParametersKHR videoSessionParameters_ ) & + VULKAN_HPP_NOEXCEPT + { + videoSessionParameters = videoSessionParameters_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionParametersGetInfoKHR && setVideoSessionParameters( VideoSessionParametersKHR videoSessionParameters_ ) && + VULKAN_HPP_NOEXCEPT + { + videoSessionParameters = videoSessionParameters_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeSessionParametersGetInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionParametersGetInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionParametersGetInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionParametersGetInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoSessionParameters ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeSessionParametersGetInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeSessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoSessionParameters == rhs.videoSessionParameters ); +# endif + } + + bool operator!=( VideoEncodeSessionParametersGetInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeSessionParametersGetInfoKHR; + void const * pNext = {}; + VideoSessionParametersKHR videoSessionParameters = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeSessionParametersGetInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeSessionParametersGetInfoKHR; + }; + + // wrapper struct for struct VkVideoEncodeSessionRgbConversionCreateInfoVALVE, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeSessionRgbConversionCreateInfoVALVE.html + struct VideoEncodeSessionRgbConversionCreateInfoVALVE + { + using NativeType = VkVideoEncodeSessionRgbConversionCreateInfoVALVE; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeSessionRgbConversionCreateInfoVALVE; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeSessionRgbConversionCreateInfoVALVE( + VideoEncodeRgbModelConversionFlagBitsVALVE rgbModel_ = VideoEncodeRgbModelConversionFlagBitsVALVE::eRgbIdentity, + VideoEncodeRgbRangeCompressionFlagBitsVALVE rgbRange_ = VideoEncodeRgbRangeCompressionFlagBitsVALVE::eFullRange, + VideoEncodeRgbChromaOffsetFlagBitsVALVE xChromaOffset_ = VideoEncodeRgbChromaOffsetFlagBitsVALVE::eCositedEven, + VideoEncodeRgbChromaOffsetFlagBitsVALVE yChromaOffset_ = VideoEncodeRgbChromaOffsetFlagBitsVALVE::eCositedEven, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , rgbModel{ rgbModel_ } + , rgbRange{ rgbRange_ } + , xChromaOffset{ xChromaOffset_ } + , yChromaOffset{ yChromaOffset_ } + { + } + + VULKAN_HPP_CONSTEXPR + VideoEncodeSessionRgbConversionCreateInfoVALVE( VideoEncodeSessionRgbConversionCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeSessionRgbConversionCreateInfoVALVE( VkVideoEncodeSessionRgbConversionCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeSessionRgbConversionCreateInfoVALVE( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeSessionRgbConversionCreateInfoVALVE & operator=( VideoEncodeSessionRgbConversionCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeSessionRgbConversionCreateInfoVALVE & operator=( VkVideoEncodeSessionRgbConversionCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionRgbConversionCreateInfoVALVE & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionRgbConversionCreateInfoVALVE && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionRgbConversionCreateInfoVALVE & setRgbModel( VideoEncodeRgbModelConversionFlagBitsVALVE rgbModel_ ) & + VULKAN_HPP_NOEXCEPT + { + rgbModel = rgbModel_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionRgbConversionCreateInfoVALVE && setRgbModel( VideoEncodeRgbModelConversionFlagBitsVALVE rgbModel_ ) && + VULKAN_HPP_NOEXCEPT + { + rgbModel = rgbModel_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionRgbConversionCreateInfoVALVE & setRgbRange( VideoEncodeRgbRangeCompressionFlagBitsVALVE rgbRange_ ) & + VULKAN_HPP_NOEXCEPT + { + rgbRange = rgbRange_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionRgbConversionCreateInfoVALVE && setRgbRange( VideoEncodeRgbRangeCompressionFlagBitsVALVE rgbRange_ ) && + VULKAN_HPP_NOEXCEPT + { + rgbRange = rgbRange_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionRgbConversionCreateInfoVALVE & setXChromaOffset( VideoEncodeRgbChromaOffsetFlagBitsVALVE xChromaOffset_ ) & + VULKAN_HPP_NOEXCEPT + { + xChromaOffset = xChromaOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionRgbConversionCreateInfoVALVE && setXChromaOffset( VideoEncodeRgbChromaOffsetFlagBitsVALVE xChromaOffset_ ) && + VULKAN_HPP_NOEXCEPT + { + xChromaOffset = xChromaOffset_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionRgbConversionCreateInfoVALVE & setYChromaOffset( VideoEncodeRgbChromaOffsetFlagBitsVALVE yChromaOffset_ ) & + VULKAN_HPP_NOEXCEPT + { + yChromaOffset = yChromaOffset_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeSessionRgbConversionCreateInfoVALVE && setYChromaOffset( VideoEncodeRgbChromaOffsetFlagBitsVALVE yChromaOffset_ ) && + VULKAN_HPP_NOEXCEPT + { + yChromaOffset = yChromaOffset_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeSessionRgbConversionCreateInfoVALVE const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionRgbConversionCreateInfoVALVE &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionRgbConversionCreateInfoVALVE const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeSessionRgbConversionCreateInfoVALVE *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, rgbModel, rgbRange, xChromaOffset, yChromaOffset ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeSessionRgbConversionCreateInfoVALVE const & ) const = default; +#else + bool operator==( VideoEncodeSessionRgbConversionCreateInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( rgbModel == rhs.rgbModel ) && ( rgbRange == rhs.rgbRange ) && + ( xChromaOffset == rhs.xChromaOffset ) && ( yChromaOffset == rhs.yChromaOffset ); +# endif + } + + bool operator!=( VideoEncodeSessionRgbConversionCreateInfoVALVE const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeSessionRgbConversionCreateInfoVALVE; + void const * pNext = {}; + VideoEncodeRgbModelConversionFlagBitsVALVE rgbModel = VideoEncodeRgbModelConversionFlagBitsVALVE::eRgbIdentity; + VideoEncodeRgbRangeCompressionFlagBitsVALVE rgbRange = VideoEncodeRgbRangeCompressionFlagBitsVALVE::eFullRange; + VideoEncodeRgbChromaOffsetFlagBitsVALVE xChromaOffset = VideoEncodeRgbChromaOffsetFlagBitsVALVE::eCositedEven; + VideoEncodeRgbChromaOffsetFlagBitsVALVE yChromaOffset = VideoEncodeRgbChromaOffsetFlagBitsVALVE::eCositedEven; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeSessionRgbConversionCreateInfoVALVE; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeSessionRgbConversionCreateInfoVALVE; + }; + + // wrapper struct for struct VkVideoEncodeUsageInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEncodeUsageInfoKHR.html + struct VideoEncodeUsageInfoKHR + { + using NativeType = VkVideoEncodeUsageInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEncodeUsageInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEncodeUsageInfoKHR( VideoEncodeUsageFlagsKHR videoUsageHints_ = {}, + VideoEncodeContentFlagsKHR videoContentHints_ = {}, + VideoEncodeTuningModeKHR tuningMode_ = VideoEncodeTuningModeKHR::eDefault, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , videoUsageHints{ videoUsageHints_ } + , videoContentHints{ videoContentHints_ } + , tuningMode{ tuningMode_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEncodeUsageInfoKHR( VideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEncodeUsageInfoKHR( VkVideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEncodeUsageInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEncodeUsageInfoKHR & operator=( VideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEncodeUsageInfoKHR & operator=( VkVideoEncodeUsageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR & setVideoUsageHints( VideoEncodeUsageFlagsKHR videoUsageHints_ ) & VULKAN_HPP_NOEXCEPT + { + videoUsageHints = videoUsageHints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR && setVideoUsageHints( VideoEncodeUsageFlagsKHR videoUsageHints_ ) && VULKAN_HPP_NOEXCEPT + { + videoUsageHints = videoUsageHints_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR & setVideoContentHints( VideoEncodeContentFlagsKHR videoContentHints_ ) & VULKAN_HPP_NOEXCEPT + { + videoContentHints = videoContentHints_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR && setVideoContentHints( VideoEncodeContentFlagsKHR videoContentHints_ ) && VULKAN_HPP_NOEXCEPT + { + videoContentHints = videoContentHints_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR & setTuningMode( VideoEncodeTuningModeKHR tuningMode_ ) & VULKAN_HPP_NOEXCEPT + { + tuningMode = tuningMode_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEncodeUsageInfoKHR && setTuningMode( VideoEncodeTuningModeKHR tuningMode_ ) && VULKAN_HPP_NOEXCEPT + { + tuningMode = tuningMode_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEncodeUsageInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeUsageInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEncodeUsageInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEncodeUsageInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std:: + tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, videoUsageHints, videoContentHints, tuningMode ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEncodeUsageInfoKHR const & ) const = default; +#else + bool operator==( VideoEncodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( videoUsageHints == rhs.videoUsageHints ) && ( videoContentHints == rhs.videoContentHints ) && + ( tuningMode == rhs.tuningMode ); +# endif + } + + bool operator!=( VideoEncodeUsageInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEncodeUsageInfoKHR; + void const * pNext = {}; + VideoEncodeUsageFlagsKHR videoUsageHints = {}; + VideoEncodeContentFlagsKHR videoContentHints = {}; + VideoEncodeTuningModeKHR tuningMode = VideoEncodeTuningModeKHR::eDefault; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEncodeUsageInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEncodeUsageInfoKHR; + }; + + // wrapper struct for struct VkVideoEndCodingInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoEndCodingInfoKHR.html + struct VideoEndCodingInfoKHR + { + using NativeType = VkVideoEndCodingInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoEndCodingInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoEndCodingInfoKHR( VideoEndCodingFlagsKHR flags_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoEndCodingInfoKHR( VideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoEndCodingInfoKHR( VkVideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoEndCodingInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoEndCodingInfoKHR & operator=( VideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoEndCodingInfoKHR & operator=( VkVideoEndCodingInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR & setFlags( VideoEndCodingFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoEndCodingInfoKHR && setFlags( VideoEndCodingFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoEndCodingInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEndCodingInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoEndCodingInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoEndCodingInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoEndCodingInfoKHR const & ) const = default; +#else + bool operator==( VideoEndCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ); +# endif + } + + bool operator!=( VideoEndCodingInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoEndCodingInfoKHR; + void const * pNext = {}; + VideoEndCodingFlagsKHR flags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoEndCodingInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoEndCodingInfoKHR; + }; + + // wrapper struct for struct VkVideoFormatAV1QuantizationMapPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoFormatAV1QuantizationMapPropertiesKHR.html + struct VideoFormatAV1QuantizationMapPropertiesKHR + { + using NativeType = VkVideoFormatAV1QuantizationMapPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoFormatAv1QuantizationMapPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoFormatAV1QuantizationMapPropertiesKHR( VideoEncodeAV1SuperblockSizeFlagsKHR compatibleSuperblockSizes_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , compatibleSuperblockSizes{ compatibleSuperblockSizes_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoFormatAV1QuantizationMapPropertiesKHR( VideoFormatAV1QuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoFormatAV1QuantizationMapPropertiesKHR( VkVideoFormatAV1QuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoFormatAV1QuantizationMapPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoFormatAV1QuantizationMapPropertiesKHR & operator=( VideoFormatAV1QuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoFormatAV1QuantizationMapPropertiesKHR & operator=( VkVideoFormatAV1QuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoFormatAV1QuantizationMapPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoFormatAV1QuantizationMapPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoFormatAV1QuantizationMapPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoFormatAV1QuantizationMapPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, compatibleSuperblockSizes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoFormatAV1QuantizationMapPropertiesKHR const & ) const = default; +#else + bool operator==( VideoFormatAV1QuantizationMapPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( compatibleSuperblockSizes == rhs.compatibleSuperblockSizes ); +# endif + } + + bool operator!=( VideoFormatAV1QuantizationMapPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoFormatAv1QuantizationMapPropertiesKHR; + void * pNext = {}; + VideoEncodeAV1SuperblockSizeFlagsKHR compatibleSuperblockSizes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoFormatAV1QuantizationMapPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoFormatAV1QuantizationMapPropertiesKHR; + }; + + // wrapper struct for struct VkVideoFormatH265QuantizationMapPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoFormatH265QuantizationMapPropertiesKHR.html + struct VideoFormatH265QuantizationMapPropertiesKHR + { + using NativeType = VkVideoFormatH265QuantizationMapPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoFormatH265QuantizationMapPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoFormatH265QuantizationMapPropertiesKHR( VideoEncodeH265CtbSizeFlagsKHR compatibleCtbSizes_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , compatibleCtbSizes{ compatibleCtbSizes_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoFormatH265QuantizationMapPropertiesKHR( VideoFormatH265QuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoFormatH265QuantizationMapPropertiesKHR( VkVideoFormatH265QuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoFormatH265QuantizationMapPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoFormatH265QuantizationMapPropertiesKHR & operator=( VideoFormatH265QuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoFormatH265QuantizationMapPropertiesKHR & operator=( VkVideoFormatH265QuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoFormatH265QuantizationMapPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoFormatH265QuantizationMapPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoFormatH265QuantizationMapPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoFormatH265QuantizationMapPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, compatibleCtbSizes ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoFormatH265QuantizationMapPropertiesKHR const & ) const = default; +#else + bool operator==( VideoFormatH265QuantizationMapPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( compatibleCtbSizes == rhs.compatibleCtbSizes ); +# endif + } + + bool operator!=( VideoFormatH265QuantizationMapPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoFormatH265QuantizationMapPropertiesKHR; + void * pNext = {}; + VideoEncodeH265CtbSizeFlagsKHR compatibleCtbSizes = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoFormatH265QuantizationMapPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoFormatH265QuantizationMapPropertiesKHR; + }; + + // wrapper struct for struct VkVideoFormatPropertiesKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoFormatPropertiesKHR.html + struct VideoFormatPropertiesKHR + { + using NativeType = VkVideoFormatPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoFormatPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoFormatPropertiesKHR( Format format_ = Format::eUndefined, + ComponentMapping componentMapping_ = {}, + ImageCreateFlags imageCreateFlags_ = {}, + ImageType imageType_ = ImageType::e1D, + ImageTiling imageTiling_ = ImageTiling::eOptimal, + ImageUsageFlags imageUsageFlags_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , format{ format_ } + , componentMapping{ componentMapping_ } + , imageCreateFlags{ imageCreateFlags_ } + , imageType{ imageType_ } + , imageTiling{ imageTiling_ } + , imageUsageFlags{ imageUsageFlags_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoFormatPropertiesKHR( VideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoFormatPropertiesKHR( VkVideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoFormatPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoFormatPropertiesKHR & operator=( VideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoFormatPropertiesKHR & operator=( VkVideoFormatPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoFormatPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoFormatPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoFormatPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoFormatPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, format, componentMapping, imageCreateFlags, imageType, imageTiling, imageUsageFlags ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoFormatPropertiesKHR const & ) const = default; +#else + bool operator==( VideoFormatPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( format == rhs.format ) && ( componentMapping == rhs.componentMapping ) && + ( imageCreateFlags == rhs.imageCreateFlags ) && ( imageType == rhs.imageType ) && ( imageTiling == rhs.imageTiling ) && + ( imageUsageFlags == rhs.imageUsageFlags ); +# endif + } + + bool operator!=( VideoFormatPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoFormatPropertiesKHR; + void * pNext = {}; + Format format = Format::eUndefined; + ComponentMapping componentMapping = {}; + ImageCreateFlags imageCreateFlags = {}; + ImageType imageType = ImageType::e1D; + ImageTiling imageTiling = ImageTiling::eOptimal; + ImageUsageFlags imageUsageFlags = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoFormatPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoFormatPropertiesKHR; + }; + + // wrapper struct for struct VkVideoFormatQuantizationMapPropertiesKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoFormatQuantizationMapPropertiesKHR.html + struct VideoFormatQuantizationMapPropertiesKHR + { + using NativeType = VkVideoFormatQuantizationMapPropertiesKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoFormatQuantizationMapPropertiesKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoFormatQuantizationMapPropertiesKHR( Extent2D quantizationMapTexelSize_ = {}, void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , quantizationMapTexelSize{ quantizationMapTexelSize_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoFormatQuantizationMapPropertiesKHR( VideoFormatQuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoFormatQuantizationMapPropertiesKHR( VkVideoFormatQuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoFormatQuantizationMapPropertiesKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoFormatQuantizationMapPropertiesKHR & operator=( VideoFormatQuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoFormatQuantizationMapPropertiesKHR & operator=( VkVideoFormatQuantizationMapPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoFormatQuantizationMapPropertiesKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoFormatQuantizationMapPropertiesKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoFormatQuantizationMapPropertiesKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoFormatQuantizationMapPropertiesKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, quantizationMapTexelSize ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoFormatQuantizationMapPropertiesKHR const & ) const = default; +#else + bool operator==( VideoFormatQuantizationMapPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( quantizationMapTexelSize == rhs.quantizationMapTexelSize ); +# endif + } + + bool operator!=( VideoFormatQuantizationMapPropertiesKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoFormatQuantizationMapPropertiesKHR; + void * pNext = {}; + Extent2D quantizationMapTexelSize = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoFormatQuantizationMapPropertiesKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoFormatQuantizationMapPropertiesKHR; + }; + + // wrapper struct for struct VkVideoInlineQueryInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoInlineQueryInfoKHR.html + struct VideoInlineQueryInfoKHR + { + using NativeType = VkVideoInlineQueryInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoInlineQueryInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoInlineQueryInfoKHR( QueryPool queryPool_ = {}, + uint32_t firstQuery_ = {}, + uint32_t queryCount_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , queryPool{ queryPool_ } + , firstQuery{ firstQuery_ } + , queryCount{ queryCount_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoInlineQueryInfoKHR( VideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoInlineQueryInfoKHR( VkVideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoInlineQueryInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoInlineQueryInfoKHR & operator=( VideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoInlineQueryInfoKHR & operator=( VkVideoInlineQueryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setQueryPool( QueryPool queryPool_ ) & VULKAN_HPP_NOEXCEPT + { + queryPool = queryPool_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR && setQueryPool( QueryPool queryPool_ ) && VULKAN_HPP_NOEXCEPT + { + queryPool = queryPool_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setFirstQuery( uint32_t firstQuery_ ) & VULKAN_HPP_NOEXCEPT + { + firstQuery = firstQuery_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR && setFirstQuery( uint32_t firstQuery_ ) && VULKAN_HPP_NOEXCEPT + { + firstQuery = firstQuery_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR & setQueryCount( uint32_t queryCount_ ) & VULKAN_HPP_NOEXCEPT + { + queryCount = queryCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoInlineQueryInfoKHR && setQueryCount( uint32_t queryCount_ ) && VULKAN_HPP_NOEXCEPT + { + queryCount = queryCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoInlineQueryInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoInlineQueryInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoInlineQueryInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoInlineQueryInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, queryPool, firstQuery, queryCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoInlineQueryInfoKHR const & ) const = default; +#else + bool operator==( VideoInlineQueryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queryPool == rhs.queryPool ) && ( firstQuery == rhs.firstQuery ) && + ( queryCount == rhs.queryCount ); +# endif + } + + bool operator!=( VideoInlineQueryInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoInlineQueryInfoKHR; + void const * pNext = {}; + QueryPool queryPool = {}; + uint32_t firstQuery = {}; + uint32_t queryCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoInlineQueryInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoInlineQueryInfoKHR; + }; + + // wrapper struct for struct VkVideoProfileListInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoProfileListInfoKHR.html + struct VideoProfileListInfoKHR + { + using NativeType = VkVideoProfileListInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoProfileListInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + VideoProfileListInfoKHR( uint32_t profileCount_ = {}, VideoProfileInfoKHR const * pProfiles_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , profileCount{ profileCount_ } + , pProfiles{ pProfiles_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoProfileListInfoKHR( VideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoProfileListInfoKHR( VkVideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoProfileListInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoProfileListInfoKHR( ArrayProxyNoTemporaries const & profiles_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), profileCount( static_cast( profiles_.size() ) ), pProfiles( profiles_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VideoProfileListInfoKHR & operator=( VideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoProfileListInfoKHR & operator=( VkVideoProfileListInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR & setProfileCount( uint32_t profileCount_ ) & VULKAN_HPP_NOEXCEPT + { + profileCount = profileCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR && setProfileCount( uint32_t profileCount_ ) && VULKAN_HPP_NOEXCEPT + { + profileCount = profileCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR & setPProfiles( VideoProfileInfoKHR const * pProfiles_ ) & VULKAN_HPP_NOEXCEPT + { + pProfiles = pProfiles_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoProfileListInfoKHR && setPProfiles( VideoProfileInfoKHR const * pProfiles_ ) && VULKAN_HPP_NOEXCEPT + { + pProfiles = pProfiles_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + VideoProfileListInfoKHR & setProfiles( ArrayProxyNoTemporaries const & profiles_ ) VULKAN_HPP_NOEXCEPT + { + profileCount = static_cast( profiles_.size() ); + pProfiles = profiles_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoProfileListInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoProfileListInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoProfileListInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoProfileListInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, profileCount, pProfiles ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoProfileListInfoKHR const & ) const = default; +#else + bool operator==( VideoProfileListInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( profileCount == rhs.profileCount ) && ( pProfiles == rhs.pProfiles ); +# endif + } + + bool operator!=( VideoProfileListInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoProfileListInfoKHR; + void const * pNext = {}; + uint32_t profileCount = {}; + VideoProfileInfoKHR const * pProfiles = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoProfileListInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoProfileListInfoKHR; + }; + + // wrapper struct for struct VkVideoReferenceIntraRefreshInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoReferenceIntraRefreshInfoKHR.html + struct VideoReferenceIntraRefreshInfoKHR + { + using NativeType = VkVideoReferenceIntraRefreshInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoReferenceIntraRefreshInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoReferenceIntraRefreshInfoKHR( uint32_t dirtyIntraRefreshRegions_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dirtyIntraRefreshRegions{ dirtyIntraRefreshRegions_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoReferenceIntraRefreshInfoKHR( VideoReferenceIntraRefreshInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoReferenceIntraRefreshInfoKHR( VkVideoReferenceIntraRefreshInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoReferenceIntraRefreshInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoReferenceIntraRefreshInfoKHR & operator=( VideoReferenceIntraRefreshInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoReferenceIntraRefreshInfoKHR & operator=( VkVideoReferenceIntraRefreshInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoReferenceIntraRefreshInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoReferenceIntraRefreshInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoReferenceIntraRefreshInfoKHR & setDirtyIntraRefreshRegions( uint32_t dirtyIntraRefreshRegions_ ) & VULKAN_HPP_NOEXCEPT + { + dirtyIntraRefreshRegions = dirtyIntraRefreshRegions_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoReferenceIntraRefreshInfoKHR && setDirtyIntraRefreshRegions( uint32_t dirtyIntraRefreshRegions_ ) && VULKAN_HPP_NOEXCEPT + { + dirtyIntraRefreshRegions = dirtyIntraRefreshRegions_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoReferenceIntraRefreshInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoReferenceIntraRefreshInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoReferenceIntraRefreshInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoReferenceIntraRefreshInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dirtyIntraRefreshRegions ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoReferenceIntraRefreshInfoKHR const & ) const = default; +#else + bool operator==( VideoReferenceIntraRefreshInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dirtyIntraRefreshRegions == rhs.dirtyIntraRefreshRegions ); +# endif + } + + bool operator!=( VideoReferenceIntraRefreshInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoReferenceIntraRefreshInfoKHR; + void const * pNext = {}; + uint32_t dirtyIntraRefreshRegions = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoReferenceIntraRefreshInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoReferenceIntraRefreshInfoKHR; + }; + + // wrapper struct for struct VkVideoSessionCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionCreateInfoKHR.html + struct VideoSessionCreateInfoKHR + { + using NativeType = VkVideoSessionCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoSessionCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR( uint32_t queueFamilyIndex_ = {}, + VideoSessionCreateFlagsKHR flags_ = {}, + VideoProfileInfoKHR const * pVideoProfile_ = {}, + Format pictureFormat_ = Format::eUndefined, + Extent2D maxCodedExtent_ = {}, + Format referencePictureFormat_ = Format::eUndefined, + uint32_t maxDpbSlots_ = {}, + uint32_t maxActiveReferencePictures_ = {}, + ExtensionProperties const * pStdHeaderVersion_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , queueFamilyIndex{ queueFamilyIndex_ } + , flags{ flags_ } + , pVideoProfile{ pVideoProfile_ } + , pictureFormat{ pictureFormat_ } + , maxCodedExtent{ maxCodedExtent_ } + , referencePictureFormat{ referencePictureFormat_ } + , maxDpbSlots{ maxDpbSlots_ } + , maxActiveReferencePictures{ maxActiveReferencePictures_ } + , pStdHeaderVersion{ pStdHeaderVersion_ } + { + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR( VideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoSessionCreateInfoKHR( VkVideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoSessionCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoSessionCreateInfoKHR & operator=( VideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoSessionCreateInfoKHR & operator=( VkVideoSessionCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) & VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR && setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) && VULKAN_HPP_NOEXCEPT + { + queueFamilyIndex = queueFamilyIndex_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setFlags( VideoSessionCreateFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR && setFlags( VideoSessionCreateFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPVideoProfile( VideoProfileInfoKHR const * pVideoProfile_ ) & VULKAN_HPP_NOEXCEPT + { + pVideoProfile = pVideoProfile_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR && setPVideoProfile( VideoProfileInfoKHR const * pVideoProfile_ ) && VULKAN_HPP_NOEXCEPT + { + pVideoProfile = pVideoProfile_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPictureFormat( Format pictureFormat_ ) & VULKAN_HPP_NOEXCEPT + { + pictureFormat = pictureFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR && setPictureFormat( Format pictureFormat_ ) && VULKAN_HPP_NOEXCEPT + { + pictureFormat = pictureFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setMaxCodedExtent( Extent2D const & maxCodedExtent_ ) & VULKAN_HPP_NOEXCEPT + { + maxCodedExtent = maxCodedExtent_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR && setMaxCodedExtent( Extent2D const & maxCodedExtent_ ) && VULKAN_HPP_NOEXCEPT + { + maxCodedExtent = maxCodedExtent_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setReferencePictureFormat( Format referencePictureFormat_ ) & VULKAN_HPP_NOEXCEPT + { + referencePictureFormat = referencePictureFormat_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR && setReferencePictureFormat( Format referencePictureFormat_ ) && VULKAN_HPP_NOEXCEPT + { + referencePictureFormat = referencePictureFormat_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setMaxDpbSlots( uint32_t maxDpbSlots_ ) & VULKAN_HPP_NOEXCEPT + { + maxDpbSlots = maxDpbSlots_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR && setMaxDpbSlots( uint32_t maxDpbSlots_ ) && VULKAN_HPP_NOEXCEPT + { + maxDpbSlots = maxDpbSlots_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setMaxActiveReferencePictures( uint32_t maxActiveReferencePictures_ ) & VULKAN_HPP_NOEXCEPT + { + maxActiveReferencePictures = maxActiveReferencePictures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR && setMaxActiveReferencePictures( uint32_t maxActiveReferencePictures_ ) && VULKAN_HPP_NOEXCEPT + { + maxActiveReferencePictures = maxActiveReferencePictures_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR & setPStdHeaderVersion( ExtensionProperties const * pStdHeaderVersion_ ) & VULKAN_HPP_NOEXCEPT + { + pStdHeaderVersion = pStdHeaderVersion_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionCreateInfoKHR && setPStdHeaderVersion( ExtensionProperties const * pStdHeaderVersion_ ) && VULKAN_HPP_NOEXCEPT + { + pStdHeaderVersion = pStdHeaderVersion_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoSessionCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoSessionCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoSessionCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoSessionCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, + pNext, + queueFamilyIndex, + flags, + pVideoProfile, + pictureFormat, + maxCodedExtent, + referencePictureFormat, + maxDpbSlots, + maxActiveReferencePictures, + pStdHeaderVersion ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoSessionCreateInfoKHR const & ) const = default; +#else + bool operator==( VideoSessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( queueFamilyIndex == rhs.queueFamilyIndex ) && ( flags == rhs.flags ) && + ( pVideoProfile == rhs.pVideoProfile ) && ( pictureFormat == rhs.pictureFormat ) && ( maxCodedExtent == rhs.maxCodedExtent ) && + ( referencePictureFormat == rhs.referencePictureFormat ) && ( maxDpbSlots == rhs.maxDpbSlots ) && + ( maxActiveReferencePictures == rhs.maxActiveReferencePictures ) && ( pStdHeaderVersion == rhs.pStdHeaderVersion ); +# endif + } + + bool operator!=( VideoSessionCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoSessionCreateInfoKHR; + void const * pNext = {}; + uint32_t queueFamilyIndex = {}; + VideoSessionCreateFlagsKHR flags = {}; + VideoProfileInfoKHR const * pVideoProfile = {}; + Format pictureFormat = Format::eUndefined; + Extent2D maxCodedExtent = {}; + Format referencePictureFormat = Format::eUndefined; + uint32_t maxDpbSlots = {}; + uint32_t maxActiveReferencePictures = {}; + ExtensionProperties const * pStdHeaderVersion = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoSessionCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoSessionCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoSessionMemoryRequirementsKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionMemoryRequirementsKHR.html + struct VideoSessionMemoryRequirementsKHR + { + using NativeType = VkVideoSessionMemoryRequirementsKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoSessionMemoryRequirementsKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoSessionMemoryRequirementsKHR( uint32_t memoryBindIndex_ = {}, + MemoryRequirements memoryRequirements_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , memoryBindIndex{ memoryBindIndex_ } + , memoryRequirements{ memoryRequirements_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoSessionMemoryRequirementsKHR( VideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoSessionMemoryRequirementsKHR( VkVideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoSessionMemoryRequirementsKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoSessionMemoryRequirementsKHR & operator=( VideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoSessionMemoryRequirementsKHR & operator=( VkVideoSessionMemoryRequirementsKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + + operator VkVideoSessionMemoryRequirementsKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoSessionMemoryRequirementsKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoSessionMemoryRequirementsKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoSessionMemoryRequirementsKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, memoryBindIndex, memoryRequirements ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoSessionMemoryRequirementsKHR const & ) const = default; +#else + bool operator==( VideoSessionMemoryRequirementsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( memoryBindIndex == rhs.memoryBindIndex ) && ( memoryRequirements == rhs.memoryRequirements ); +# endif + } + + bool operator!=( VideoSessionMemoryRequirementsKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoSessionMemoryRequirementsKHR; + void * pNext = {}; + uint32_t memoryBindIndex = {}; + MemoryRequirements memoryRequirements = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoSessionMemoryRequirementsKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoSessionMemoryRequirementsKHR; + }; + + // wrapper struct for struct VkVideoSessionParametersCreateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionParametersCreateInfoKHR.html + struct VideoSessionParametersCreateInfoKHR + { + using NativeType = VkVideoSessionParametersCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoSessionParametersCreateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoSessionParametersCreateInfoKHR( VideoSessionParametersCreateFlagsKHR flags_ = {}, + VideoSessionParametersKHR videoSessionParametersTemplate_ = {}, + VideoSessionKHR videoSession_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , videoSessionParametersTemplate{ videoSessionParametersTemplate_ } + , videoSession{ videoSession_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoSessionParametersCreateInfoKHR( VideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoSessionParametersCreateInfoKHR( VkVideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoSessionParametersCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoSessionParametersCreateInfoKHR & operator=( VideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoSessionParametersCreateInfoKHR & operator=( VkVideoSessionParametersCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setFlags( VideoSessionParametersCreateFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR && setFlags( VideoSessionParametersCreateFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & + setVideoSessionParametersTemplate( VideoSessionParametersKHR videoSessionParametersTemplate_ ) & + VULKAN_HPP_NOEXCEPT + { + videoSessionParametersTemplate = videoSessionParametersTemplate_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR && + setVideoSessionParametersTemplate( VideoSessionParametersKHR videoSessionParametersTemplate_ ) && + VULKAN_HPP_NOEXCEPT + { + videoSessionParametersTemplate = videoSessionParametersTemplate_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR & setVideoSession( VideoSessionKHR videoSession_ ) & VULKAN_HPP_NOEXCEPT + { + videoSession = videoSession_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersCreateInfoKHR && setVideoSession( VideoSessionKHR videoSession_ ) && VULKAN_HPP_NOEXCEPT + { + videoSession = videoSession_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoSessionParametersCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoSessionParametersCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoSessionParametersCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoSessionParametersCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, videoSessionParametersTemplate, videoSession ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoSessionParametersCreateInfoKHR const & ) const = default; +#else + bool operator==( VideoSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && + ( videoSessionParametersTemplate == rhs.videoSessionParametersTemplate ) && ( videoSession == rhs.videoSession ); +# endif + } + + bool operator!=( VideoSessionParametersCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoSessionParametersCreateInfoKHR; + void const * pNext = {}; + VideoSessionParametersCreateFlagsKHR flags = {}; + VideoSessionParametersKHR videoSessionParametersTemplate = {}; + VideoSessionKHR videoSession = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoSessionParametersCreateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoSessionParametersCreateInfoKHR; + }; + + // wrapper struct for struct VkVideoSessionParametersUpdateInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkVideoSessionParametersUpdateInfoKHR.html + struct VideoSessionParametersUpdateInfoKHR + { + using NativeType = VkVideoSessionParametersUpdateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eVideoSessionParametersUpdateInfoKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR VideoSessionParametersUpdateInfoKHR( uint32_t updateSequenceCount_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , updateSequenceCount{ updateSequenceCount_ } + { + } + + VULKAN_HPP_CONSTEXPR VideoSessionParametersUpdateInfoKHR( VideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + VideoSessionParametersUpdateInfoKHR( VkVideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : VideoSessionParametersUpdateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + VideoSessionParametersUpdateInfoKHR & operator=( VideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + VideoSessionParametersUpdateInfoKHR & operator=( VkVideoSessionParametersUpdateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR & setUpdateSequenceCount( uint32_t updateSequenceCount_ ) & VULKAN_HPP_NOEXCEPT + { + updateSequenceCount = updateSequenceCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 VideoSessionParametersUpdateInfoKHR && setUpdateSequenceCount( uint32_t updateSequenceCount_ ) && VULKAN_HPP_NOEXCEPT + { + updateSequenceCount = updateSequenceCount_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkVideoSessionParametersUpdateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoSessionParametersUpdateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkVideoSessionParametersUpdateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkVideoSessionParametersUpdateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, updateSequenceCount ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( VideoSessionParametersUpdateInfoKHR const & ) const = default; +#else + bool operator==( VideoSessionParametersUpdateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( updateSequenceCount == rhs.updateSequenceCount ); +# endif + } + + bool operator!=( VideoSessionParametersUpdateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eVideoSessionParametersUpdateInfoKHR; + void const * pNext = {}; + uint32_t updateSequenceCount = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = VideoSessionParametersUpdateInfoKHR; + }; +#endif + + template <> + struct CppType + { + using Type = VideoSessionParametersUpdateInfoKHR; + }; + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + // wrapper struct for struct VkWaylandSurfaceCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkWaylandSurfaceCreateInfoKHR.html + struct WaylandSurfaceCreateInfoKHR + { + using NativeType = VkWaylandSurfaceCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWaylandSurfaceCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = {}, + struct wl_display * display_ = {}, + struct wl_surface * surface_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , display{ display_ } + , surface{ surface_ } + { + } + + VULKAN_HPP_CONSTEXPR WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : WaylandSurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + WaylandSurfaceCreateInfoKHR & operator=( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + WaylandSurfaceCreateInfoKHR & operator=( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setFlags( WaylandSurfaceCreateFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR && setFlags( WaylandSurfaceCreateFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setDisplay( struct wl_display * display_ ) & VULKAN_HPP_NOEXCEPT + { + display = display_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR && setDisplay( struct wl_display * display_ ) && VULKAN_HPP_NOEXCEPT + { + display = display_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & setSurface( struct wl_surface * surface_ ) & VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR && setSurface( struct wl_surface * surface_ ) && VULKAN_HPP_NOEXCEPT + { + surface = surface_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWaylandSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWaylandSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWaylandSurfaceCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWaylandSurfaceCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, display, surface ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WaylandSurfaceCreateInfoKHR const & ) const = default; +# else + bool operator==( WaylandSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( display == rhs.display ) && ( surface == rhs.surface ); +# endif + } + + bool operator!=( WaylandSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eWaylandSurfaceCreateInfoKHR; + void const * pNext = {}; + WaylandSurfaceCreateFlagsKHR flags = {}; + struct wl_display * display = {}; + struct wl_surface * surface = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = WaylandSurfaceCreateInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = WaylandSurfaceCreateInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkWin32KeyedMutexAcquireReleaseInfoKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoKHR.html + struct Win32KeyedMutexAcquireReleaseInfoKHR + { + using NativeType = VkWin32KeyedMutexAcquireReleaseInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t acquireCount_ = {}, + DeviceMemory const * pAcquireSyncs_ = {}, + uint64_t const * pAcquireKeys_ = {}, + uint32_t const * pAcquireTimeouts_ = {}, + uint32_t releaseCount_ = {}, + DeviceMemory const * pReleaseSyncs_ = {}, + uint64_t const * pReleaseKeys_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , acquireCount{ acquireCount_ } + , pAcquireSyncs{ pAcquireSyncs_ } + , pAcquireKeys{ pAcquireKeys_ } + , pAcquireTimeouts{ pAcquireTimeouts_ } + , releaseCount{ releaseCount_ } + , pReleaseSyncs{ pReleaseSyncs_ } + , pReleaseKeys{ pReleaseKeys_ } + { + } + + VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoKHR( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : Win32KeyedMutexAcquireReleaseInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR( ArrayProxyNoTemporaries const & acquireSyncs_, + ArrayProxyNoTemporaries const & acquireKeys_ = {}, + ArrayProxyNoTemporaries const & acquireTimeouts_ = {}, + ArrayProxyNoTemporaries const & releaseSyncs_ = {}, + ArrayProxyNoTemporaries const & releaseKeys_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , acquireCount( static_cast( acquireSyncs_.size() ) ) + , pAcquireSyncs( acquireSyncs_.data() ) + , pAcquireKeys( acquireKeys_.data() ) + , pAcquireTimeouts( acquireTimeouts_.data() ) + , releaseCount( static_cast( releaseSyncs_.size() ) ) + , pReleaseSyncs( releaseSyncs_.data() ) + , pReleaseKeys( releaseKeys_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireKeys_.size() ); + VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireTimeouts_.size() ); + VULKAN_HPP_ASSERT( acquireKeys_.size() == acquireTimeouts_.size() ); +# else + if ( acquireSyncs_.size() != acquireKeys_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireSyncs_.size() != acquireKeys_.size()" ); + } + if ( acquireSyncs_.size() != acquireTimeouts_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireSyncs_.size() != acquireTimeouts_.size()" ); + } + if ( acquireKeys_.size() != acquireTimeouts_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: acquireKeys_.size() != acquireTimeouts_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( releaseSyncs_.size() == releaseKeys_.size() ); +# else + if ( releaseSyncs_.size() != releaseKeys_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoKHR::Win32KeyedMutexAcquireReleaseInfoKHR: releaseSyncs_.size() != releaseKeys_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + Win32KeyedMutexAcquireReleaseInfoKHR & operator=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + Win32KeyedMutexAcquireReleaseInfoKHR & operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireCount( uint32_t acquireCount_ ) & VULKAN_HPP_NOEXCEPT + { + acquireCount = acquireCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR && setAcquireCount( uint32_t acquireCount_ ) && VULKAN_HPP_NOEXCEPT + { + acquireCount = acquireCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireSyncs( DeviceMemory const * pAcquireSyncs_ ) & VULKAN_HPP_NOEXCEPT + { + pAcquireSyncs = pAcquireSyncs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR && setPAcquireSyncs( DeviceMemory const * pAcquireSyncs_ ) && VULKAN_HPP_NOEXCEPT + { + pAcquireSyncs = pAcquireSyncs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireSyncs( ArrayProxyNoTemporaries const & acquireSyncs_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireSyncs_.size() ); + pAcquireSyncs = acquireSyncs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireKeys( uint64_t const * pAcquireKeys_ ) & VULKAN_HPP_NOEXCEPT + { + pAcquireKeys = pAcquireKeys_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR && setPAcquireKeys( uint64_t const * pAcquireKeys_ ) && VULKAN_HPP_NOEXCEPT + { + pAcquireKeys = pAcquireKeys_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireKeys( ArrayProxyNoTemporaries const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireKeys_.size() ); + pAcquireKeys = acquireKeys_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireTimeouts( uint32_t const * pAcquireTimeouts_ ) & VULKAN_HPP_NOEXCEPT + { + pAcquireTimeouts = pAcquireTimeouts_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR && setPAcquireTimeouts( uint32_t const * pAcquireTimeouts_ ) && VULKAN_HPP_NOEXCEPT + { + pAcquireTimeouts = pAcquireTimeouts_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireTimeouts( ArrayProxyNoTemporaries const & acquireTimeouts_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireTimeouts_.size() ); + pAcquireTimeouts = acquireTimeouts_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseCount( uint32_t releaseCount_ ) & VULKAN_HPP_NOEXCEPT + { + releaseCount = releaseCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR && setReleaseCount( uint32_t releaseCount_ ) && VULKAN_HPP_NOEXCEPT + { + releaseCount = releaseCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPReleaseSyncs( DeviceMemory const * pReleaseSyncs_ ) & VULKAN_HPP_NOEXCEPT + { + pReleaseSyncs = pReleaseSyncs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR && setPReleaseSyncs( DeviceMemory const * pReleaseSyncs_ ) && VULKAN_HPP_NOEXCEPT + { + pReleaseSyncs = pReleaseSyncs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseSyncs( ArrayProxyNoTemporaries const & releaseSyncs_ ) VULKAN_HPP_NOEXCEPT + { + releaseCount = static_cast( releaseSyncs_.size() ); + pReleaseSyncs = releaseSyncs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & setPReleaseKeys( uint64_t const * pReleaseKeys_ ) & VULKAN_HPP_NOEXCEPT + { + pReleaseKeys = pReleaseKeys_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR && setPReleaseKeys( uint64_t const * pReleaseKeys_ ) && VULKAN_HPP_NOEXCEPT + { + pReleaseKeys = pReleaseKeys_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseKeys( ArrayProxyNoTemporaries const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT + { + releaseCount = static_cast( releaseKeys_.size() ); + pReleaseKeys = releaseKeys_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWin32KeyedMutexAcquireReleaseInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWin32KeyedMutexAcquireReleaseInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWin32KeyedMutexAcquireReleaseInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWin32KeyedMutexAcquireReleaseInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, acquireCount, pAcquireSyncs, pAcquireKeys, pAcquireTimeouts, releaseCount, pReleaseSyncs, pReleaseKeys ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Win32KeyedMutexAcquireReleaseInfoKHR const & ) const = default; +# else + bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireCount == rhs.acquireCount ) && ( pAcquireSyncs == rhs.pAcquireSyncs ) && + ( pAcquireKeys == rhs.pAcquireKeys ) && ( pAcquireTimeouts == rhs.pAcquireTimeouts ) && ( releaseCount == rhs.releaseCount ) && + ( pReleaseSyncs == rhs.pReleaseSyncs ) && ( pReleaseKeys == rhs.pReleaseKeys ); +# endif + } + + bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR; + void const * pNext = {}; + uint32_t acquireCount = {}; + DeviceMemory const * pAcquireSyncs = {}; + uint64_t const * pAcquireKeys = {}; + uint32_t const * pAcquireTimeouts = {}; + uint32_t releaseCount = {}; + DeviceMemory const * pReleaseSyncs = {}; + uint64_t const * pReleaseKeys = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = Win32KeyedMutexAcquireReleaseInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = Win32KeyedMutexAcquireReleaseInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkWin32KeyedMutexAcquireReleaseInfoNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkWin32KeyedMutexAcquireReleaseInfoNV.html + struct Win32KeyedMutexAcquireReleaseInfoNV + { + using NativeType = VkWin32KeyedMutexAcquireReleaseInfoNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoNV( uint32_t acquireCount_ = {}, + DeviceMemory const * pAcquireSyncs_ = {}, + uint64_t const * pAcquireKeys_ = {}, + uint32_t const * pAcquireTimeoutMilliseconds_ = {}, + uint32_t releaseCount_ = {}, + DeviceMemory const * pReleaseSyncs_ = {}, + uint64_t const * pReleaseKeys_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , acquireCount{ acquireCount_ } + , pAcquireSyncs{ pAcquireSyncs_ } + , pAcquireKeys{ pAcquireKeys_ } + , pAcquireTimeoutMilliseconds{ pAcquireTimeoutMilliseconds_ } + , releaseCount{ releaseCount_ } + , pReleaseSyncs{ pReleaseSyncs_ } + , pReleaseKeys{ pReleaseKeys_ } + { + } + + VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoNV( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + : Win32KeyedMutexAcquireReleaseInfoNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV( ArrayProxyNoTemporaries const & acquireSyncs_, + ArrayProxyNoTemporaries const & acquireKeys_ = {}, + ArrayProxyNoTemporaries const & acquireTimeoutMilliseconds_ = {}, + ArrayProxyNoTemporaries const & releaseSyncs_ = {}, + ArrayProxyNoTemporaries const & releaseKeys_ = {}, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , acquireCount( static_cast( acquireSyncs_.size() ) ) + , pAcquireSyncs( acquireSyncs_.data() ) + , pAcquireKeys( acquireKeys_.data() ) + , pAcquireTimeoutMilliseconds( acquireTimeoutMilliseconds_.data() ) + , releaseCount( static_cast( releaseSyncs_.size() ) ) + , pReleaseSyncs( releaseSyncs_.data() ) + , pReleaseKeys( releaseKeys_.data() ) + { +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireKeys_.size() ); + VULKAN_HPP_ASSERT( acquireSyncs_.size() == acquireTimeoutMilliseconds_.size() ); + VULKAN_HPP_ASSERT( acquireKeys_.size() == acquireTimeoutMilliseconds_.size() ); +# else + if ( acquireSyncs_.size() != acquireKeys_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireSyncs_.size() != acquireKeys_.size()" ); + } + if ( acquireSyncs_.size() != acquireTimeoutMilliseconds_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireSyncs_.size() != acquireTimeoutMilliseconds_.size()" ); + } + if ( acquireKeys_.size() != acquireTimeoutMilliseconds_.size() ) + { + throw LogicError( + VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: acquireKeys_.size() != acquireTimeoutMilliseconds_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + +# ifdef VULKAN_HPP_NO_EXCEPTIONS + VULKAN_HPP_ASSERT( releaseSyncs_.size() == releaseKeys_.size() ); +# else + if ( releaseSyncs_.size() != releaseKeys_.size() ) + { + throw LogicError( VULKAN_HPP_NAMESPACE_STRING + "::Win32KeyedMutexAcquireReleaseInfoNV::Win32KeyedMutexAcquireReleaseInfoNV: releaseSyncs_.size() != releaseKeys_.size()" ); + } +# endif /*VULKAN_HPP_NO_EXCEPTIONS*/ + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + Win32KeyedMutexAcquireReleaseInfoNV & operator=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + Win32KeyedMutexAcquireReleaseInfoNV & operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setAcquireCount( uint32_t acquireCount_ ) & VULKAN_HPP_NOEXCEPT + { + acquireCount = acquireCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV && setAcquireCount( uint32_t acquireCount_ ) && VULKAN_HPP_NOEXCEPT + { + acquireCount = acquireCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireSyncs( DeviceMemory const * pAcquireSyncs_ ) & VULKAN_HPP_NOEXCEPT + { + pAcquireSyncs = pAcquireSyncs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV && setPAcquireSyncs( DeviceMemory const * pAcquireSyncs_ ) && VULKAN_HPP_NOEXCEPT + { + pAcquireSyncs = pAcquireSyncs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV & setAcquireSyncs( ArrayProxyNoTemporaries const & acquireSyncs_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireSyncs_.size() ); + pAcquireSyncs = acquireSyncs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireKeys( uint64_t const * pAcquireKeys_ ) & VULKAN_HPP_NOEXCEPT + { + pAcquireKeys = pAcquireKeys_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV && setPAcquireKeys( uint64_t const * pAcquireKeys_ ) && VULKAN_HPP_NOEXCEPT + { + pAcquireKeys = pAcquireKeys_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV & setAcquireKeys( ArrayProxyNoTemporaries const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireKeys_.size() ); + pAcquireKeys = acquireKeys_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireTimeoutMilliseconds( uint32_t const * pAcquireTimeoutMilliseconds_ ) & + VULKAN_HPP_NOEXCEPT + { + pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV && setPAcquireTimeoutMilliseconds( uint32_t const * pAcquireTimeoutMilliseconds_ ) && + VULKAN_HPP_NOEXCEPT + { + pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV & + setAcquireTimeoutMilliseconds( ArrayProxyNoTemporaries const & acquireTimeoutMilliseconds_ ) VULKAN_HPP_NOEXCEPT + { + acquireCount = static_cast( acquireTimeoutMilliseconds_.size() ); + pAcquireTimeoutMilliseconds = acquireTimeoutMilliseconds_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setReleaseCount( uint32_t releaseCount_ ) & VULKAN_HPP_NOEXCEPT + { + releaseCount = releaseCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV && setReleaseCount( uint32_t releaseCount_ ) && VULKAN_HPP_NOEXCEPT + { + releaseCount = releaseCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPReleaseSyncs( DeviceMemory const * pReleaseSyncs_ ) & VULKAN_HPP_NOEXCEPT + { + pReleaseSyncs = pReleaseSyncs_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV && setPReleaseSyncs( DeviceMemory const * pReleaseSyncs_ ) && VULKAN_HPP_NOEXCEPT + { + pReleaseSyncs = pReleaseSyncs_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV & setReleaseSyncs( ArrayProxyNoTemporaries const & releaseSyncs_ ) VULKAN_HPP_NOEXCEPT + { + releaseCount = static_cast( releaseSyncs_.size() ); + pReleaseSyncs = releaseSyncs_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & setPReleaseKeys( uint64_t const * pReleaseKeys_ ) & VULKAN_HPP_NOEXCEPT + { + pReleaseKeys = pReleaseKeys_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV && setPReleaseKeys( uint64_t const * pReleaseKeys_ ) && VULKAN_HPP_NOEXCEPT + { + pReleaseKeys = pReleaseKeys_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + Win32KeyedMutexAcquireReleaseInfoNV & setReleaseKeys( ArrayProxyNoTemporaries const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT + { + releaseCount = static_cast( releaseKeys_.size() ); + pReleaseKeys = releaseKeys_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWin32KeyedMutexAcquireReleaseInfoNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWin32KeyedMutexAcquireReleaseInfoNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWin32KeyedMutexAcquireReleaseInfoNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWin32KeyedMutexAcquireReleaseInfoNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, acquireCount, pAcquireSyncs, pAcquireKeys, pAcquireTimeoutMilliseconds, releaseCount, pReleaseSyncs, pReleaseKeys ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Win32KeyedMutexAcquireReleaseInfoNV const & ) const = default; +# else + bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( acquireCount == rhs.acquireCount ) && ( pAcquireSyncs == rhs.pAcquireSyncs ) && + ( pAcquireKeys == rhs.pAcquireKeys ) && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds ) && + ( releaseCount == rhs.releaseCount ) && ( pReleaseSyncs == rhs.pReleaseSyncs ) && ( pReleaseKeys == rhs.pReleaseKeys ); +# endif + } + + bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV; + void const * pNext = {}; + uint32_t acquireCount = {}; + DeviceMemory const * pAcquireSyncs = {}; + uint64_t const * pAcquireKeys = {}; + uint32_t const * pAcquireTimeoutMilliseconds = {}; + uint32_t releaseCount = {}; + DeviceMemory const * pReleaseSyncs = {}; + uint64_t const * pReleaseKeys = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = Win32KeyedMutexAcquireReleaseInfoNV; + }; +# endif + + template <> + struct CppType + { + using Type = Win32KeyedMutexAcquireReleaseInfoNV; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + // wrapper struct for struct VkWin32SurfaceCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkWin32SurfaceCreateInfoKHR.html + struct Win32SurfaceCreateInfoKHR + { + using NativeType = VkWin32SurfaceCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWin32SurfaceCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = {}, + HINSTANCE hinstance_ = {}, + HWND hwnd_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , hinstance{ hinstance_ } + , hwnd{ hwnd_ } + { + } + + VULKAN_HPP_CONSTEXPR Win32SurfaceCreateInfoKHR( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : Win32SurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + Win32SurfaceCreateInfoKHR & operator=( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + Win32SurfaceCreateInfoKHR & operator=( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setFlags( Win32SurfaceCreateFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR && setFlags( Win32SurfaceCreateFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setHinstance( HINSTANCE hinstance_ ) & VULKAN_HPP_NOEXCEPT + { + hinstance = hinstance_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR && setHinstance( HINSTANCE hinstance_ ) && VULKAN_HPP_NOEXCEPT + { + hinstance = hinstance_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & setHwnd( HWND hwnd_ ) & VULKAN_HPP_NOEXCEPT + { + hwnd = hwnd_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR && setHwnd( HWND hwnd_ ) && VULKAN_HPP_NOEXCEPT + { + hwnd = hwnd_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWin32SurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWin32SurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWin32SurfaceCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWin32SurfaceCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, hinstance, hwnd ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( Win32SurfaceCreateInfoKHR const & ) const = default; +# else + bool operator==( Win32SurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( hinstance == rhs.hinstance ) && ( hwnd == rhs.hwnd ); +# endif + } + + bool operator!=( Win32SurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +# endif + + public: + StructureType sType = StructureType::eWin32SurfaceCreateInfoKHR; + void const * pNext = {}; + Win32SurfaceCreateFlagsKHR flags = {}; + HINSTANCE hinstance = {}; + HWND hwnd = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = Win32SurfaceCreateInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = Win32SurfaceCreateInfoKHR; + }; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + // wrapper struct for struct VkWriteDescriptorSetAccelerationStructureKHR, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureKHR.html + struct WriteDescriptorSetAccelerationStructureKHR + { + using NativeType = VkWriteDescriptorSetAccelerationStructureKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSetAccelerationStructureKHR; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR( uint32_t accelerationStructureCount_ = {}, + AccelerationStructureKHR const * pAccelerationStructures_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , accelerationStructureCount{ accelerationStructureCount_ } + , pAccelerationStructures{ pAccelerationStructures_ } + { + } + + VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetAccelerationStructureKHR( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteDescriptorSetAccelerationStructureKHR( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetAccelerationStructureKHR( ArrayProxyNoTemporaries const & accelerationStructures_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , accelerationStructureCount( static_cast( accelerationStructures_.size() ) ) + , pAccelerationStructures( accelerationStructures_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + WriteDescriptorSetAccelerationStructureKHR & operator=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + WriteDescriptorSetAccelerationStructureKHR & operator=( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = accelerationStructureCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR && setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = accelerationStructureCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & + setPAccelerationStructures( AccelerationStructureKHR const * pAccelerationStructures_ ) & + VULKAN_HPP_NOEXCEPT + { + pAccelerationStructures = pAccelerationStructures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR && + setPAccelerationStructures( AccelerationStructureKHR const * pAccelerationStructures_ ) && + VULKAN_HPP_NOEXCEPT + { + pAccelerationStructures = pAccelerationStructures_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetAccelerationStructureKHR & + setAccelerationStructures( ArrayProxyNoTemporaries const & accelerationStructures_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = static_cast( accelerationStructures_.size() ); + pAccelerationStructures = accelerationStructures_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWriteDescriptorSetAccelerationStructureKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetAccelerationStructureKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetAccelerationStructureKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetAccelerationStructureKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteDescriptorSetAccelerationStructureKHR const & ) const = default; +#else + bool operator==( WriteDescriptorSetAccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructureCount == rhs.accelerationStructureCount ) && + ( pAccelerationStructures == rhs.pAccelerationStructures ); +# endif + } + + bool operator!=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureKHR; + void const * pNext = {}; + uint32_t accelerationStructureCount = {}; + AccelerationStructureKHR const * pAccelerationStructures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = WriteDescriptorSetAccelerationStructureKHR; + }; +#endif + + template <> + struct CppType + { + using Type = WriteDescriptorSetAccelerationStructureKHR; + }; + + // wrapper struct for struct VkWriteDescriptorSetAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkWriteDescriptorSetAccelerationStructureNV.html + struct WriteDescriptorSetAccelerationStructureNV + { + using NativeType = VkWriteDescriptorSetAccelerationStructureNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSetAccelerationStructureNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV( uint32_t accelerationStructureCount_ = {}, + AccelerationStructureNV const * pAccelerationStructures_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , accelerationStructureCount{ accelerationStructureCount_ } + , pAccelerationStructures{ pAccelerationStructures_ } + { + } + + VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetAccelerationStructureNV( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteDescriptorSetAccelerationStructureNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetAccelerationStructureNV( ArrayProxyNoTemporaries const & accelerationStructures_, + void const * pNext_ = nullptr ) + : pNext( pNext_ ) + , accelerationStructureCount( static_cast( accelerationStructures_.size() ) ) + , pAccelerationStructures( accelerationStructures_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + WriteDescriptorSetAccelerationStructureNV & operator=( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + WriteDescriptorSetAccelerationStructureNV & operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = accelerationStructureCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV && setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = accelerationStructureCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & setPAccelerationStructures( AccelerationStructureNV const * pAccelerationStructures_ ) & + VULKAN_HPP_NOEXCEPT + { + pAccelerationStructures = pAccelerationStructures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV && + setPAccelerationStructures( AccelerationStructureNV const * pAccelerationStructures_ ) && + VULKAN_HPP_NOEXCEPT + { + pAccelerationStructures = pAccelerationStructures_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetAccelerationStructureNV & + setAccelerationStructures( ArrayProxyNoTemporaries const & accelerationStructures_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = static_cast( accelerationStructures_.size() ); + pAccelerationStructures = accelerationStructures_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWriteDescriptorSetAccelerationStructureNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetAccelerationStructureNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetAccelerationStructureNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetAccelerationStructureNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteDescriptorSetAccelerationStructureNV const & ) const = default; +#else + bool operator==( WriteDescriptorSetAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructureCount == rhs.accelerationStructureCount ) && + ( pAccelerationStructures == rhs.pAccelerationStructures ); +# endif + } + + bool operator!=( WriteDescriptorSetAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureNV; + void const * pNext = {}; + uint32_t accelerationStructureCount = {}; + AccelerationStructureNV const * pAccelerationStructures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = WriteDescriptorSetAccelerationStructureNV; + }; +#endif + + template <> + struct CppType + { + using Type = WriteDescriptorSetAccelerationStructureNV; + }; + + // wrapper struct for struct VkWriteDescriptorSetInlineUniformBlock, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkWriteDescriptorSetInlineUniformBlock.html + struct WriteDescriptorSetInlineUniformBlock + { + using NativeType = VkWriteDescriptorSetInlineUniformBlock; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSetInlineUniformBlock; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + WriteDescriptorSetInlineUniformBlock( uint32_t dataSize_ = {}, void const * pData_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , dataSize{ dataSize_ } + , pData{ pData_ } + { + } + + VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlock( WriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetInlineUniformBlock( VkWriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteDescriptorSetInlineUniformBlock( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + WriteDescriptorSetInlineUniformBlock( ArrayProxyNoTemporaries const & data_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), dataSize( static_cast( data_.size() * sizeof( T ) ) ), pData( data_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + WriteDescriptorSetInlineUniformBlock & operator=( WriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + WriteDescriptorSetInlineUniformBlock & operator=( VkWriteDescriptorSetInlineUniformBlock const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setDataSize( uint32_t dataSize_ ) & VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock && setDataSize( uint32_t dataSize_ ) && VULKAN_HPP_NOEXCEPT + { + dataSize = dataSize_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock & setPData( void const * pData_ ) & VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlock && setPData( void const * pData_ ) && VULKAN_HPP_NOEXCEPT + { + pData = pData_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + template + WriteDescriptorSetInlineUniformBlock & setData( ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT + { + dataSize = static_cast( data_.size() * sizeof( T ) ); + pData = data_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWriteDescriptorSetInlineUniformBlock const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetInlineUniformBlock &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetInlineUniformBlock const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetInlineUniformBlock *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, dataSize, pData ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteDescriptorSetInlineUniformBlock const & ) const = default; +#else + bool operator==( WriteDescriptorSetInlineUniformBlock const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( dataSize == rhs.dataSize ) && ( pData == rhs.pData ); +# endif + } + + bool operator!=( WriteDescriptorSetInlineUniformBlock const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eWriteDescriptorSetInlineUniformBlock; + void const * pNext = {}; + uint32_t dataSize = {}; + void const * pData = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = WriteDescriptorSetInlineUniformBlock; + }; +#endif + + template <> + struct CppType + { + using Type = WriteDescriptorSetInlineUniformBlock; + }; + + using WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock; + + // wrapper struct for struct VkWriteDescriptorSetPartitionedAccelerationStructureNV, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkWriteDescriptorSetPartitionedAccelerationStructureNV.html + struct WriteDescriptorSetPartitionedAccelerationStructureNV + { + using NativeType = VkWriteDescriptorSetPartitionedAccelerationStructureNV; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSetPartitionedAccelerationStructureNV; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteDescriptorSetPartitionedAccelerationStructureNV( uint32_t accelerationStructureCount_ = {}, + DeviceAddress const * pAccelerationStructures_ = {}, + void * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , accelerationStructureCount{ accelerationStructureCount_ } + , pAccelerationStructures{ pAccelerationStructures_ } + { + } + + VULKAN_HPP_CONSTEXPR + WriteDescriptorSetPartitionedAccelerationStructureNV( WriteDescriptorSetPartitionedAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetPartitionedAccelerationStructureNV( VkWriteDescriptorSetPartitionedAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteDescriptorSetPartitionedAccelerationStructureNV( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetPartitionedAccelerationStructureNV( ArrayProxyNoTemporaries const & accelerationStructures_, + void * pNext_ = nullptr ) + : pNext( pNext_ ) + , accelerationStructureCount( static_cast( accelerationStructures_.size() ) ) + , pAccelerationStructures( accelerationStructures_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + WriteDescriptorSetPartitionedAccelerationStructureNV & + operator=( WriteDescriptorSetPartitionedAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + WriteDescriptorSetPartitionedAccelerationStructureNV & operator=( VkWriteDescriptorSetPartitionedAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetPartitionedAccelerationStructureNV & setPNext( void * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetPartitionedAccelerationStructureNV && setPNext( void * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetPartitionedAccelerationStructureNV & setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) & + VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = accelerationStructureCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetPartitionedAccelerationStructureNV && setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) && + VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = accelerationStructureCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetPartitionedAccelerationStructureNV & + setPAccelerationStructures( DeviceAddress const * pAccelerationStructures_ ) & + VULKAN_HPP_NOEXCEPT + { + pAccelerationStructures = pAccelerationStructures_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetPartitionedAccelerationStructureNV && + setPAccelerationStructures( DeviceAddress const * pAccelerationStructures_ ) && + VULKAN_HPP_NOEXCEPT + { + pAccelerationStructures = pAccelerationStructures_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetPartitionedAccelerationStructureNV & + setAccelerationStructures( ArrayProxyNoTemporaries const & accelerationStructures_ ) VULKAN_HPP_NOEXCEPT + { + accelerationStructureCount = static_cast( accelerationStructures_.size() ); + pAccelerationStructures = accelerationStructures_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWriteDescriptorSetPartitionedAccelerationStructureNV const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetPartitionedAccelerationStructureNV &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetPartitionedAccelerationStructureNV const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetPartitionedAccelerationStructureNV *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, accelerationStructureCount, pAccelerationStructures ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteDescriptorSetPartitionedAccelerationStructureNV const & ) const = default; +#else + bool operator==( WriteDescriptorSetPartitionedAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( accelerationStructureCount == rhs.accelerationStructureCount ) && + ( pAccelerationStructures == rhs.pAccelerationStructures ); +# endif + } + + bool operator!=( WriteDescriptorSetPartitionedAccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eWriteDescriptorSetPartitionedAccelerationStructureNV; + void * pNext = {}; + uint32_t accelerationStructureCount = {}; + DeviceAddress const * pAccelerationStructures = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = WriteDescriptorSetPartitionedAccelerationStructureNV; + }; +#endif + + template <> + struct CppType + { + using Type = WriteDescriptorSetPartitionedAccelerationStructureNV; + }; + + // wrapper struct for struct VkWriteDescriptorSetTensorARM, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkWriteDescriptorSetTensorARM.html + struct WriteDescriptorSetTensorARM + { + using NativeType = VkWriteDescriptorSetTensorARM; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSetTensorARM; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + WriteDescriptorSetTensorARM( uint32_t tensorViewCount_ = {}, TensorViewARM const * pTensorViews_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , tensorViewCount{ tensorViewCount_ } + , pTensorViews{ pTensorViews_ } + { + } + + VULKAN_HPP_CONSTEXPR WriteDescriptorSetTensorARM( WriteDescriptorSetTensorARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteDescriptorSetTensorARM( VkWriteDescriptorSetTensorARM const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteDescriptorSetTensorARM( *reinterpret_cast( &rhs ) ) + { + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetTensorARM( ArrayProxyNoTemporaries const & tensorViews_, void const * pNext_ = nullptr ) + : pNext( pNext_ ), tensorViewCount( static_cast( tensorViews_.size() ) ), pTensorViews( tensorViews_.data() ) + { + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ + + WriteDescriptorSetTensorARM & operator=( WriteDescriptorSetTensorARM const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + WriteDescriptorSetTensorARM & operator=( VkWriteDescriptorSetTensorARM const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetTensorARM & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetTensorARM && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetTensorARM & setTensorViewCount( uint32_t tensorViewCount_ ) & VULKAN_HPP_NOEXCEPT + { + tensorViewCount = tensorViewCount_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetTensorARM && setTensorViewCount( uint32_t tensorViewCount_ ) && VULKAN_HPP_NOEXCEPT + { + tensorViewCount = tensorViewCount_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetTensorARM & setPTensorViews( TensorViewARM const * pTensorViews_ ) & VULKAN_HPP_NOEXCEPT + { + pTensorViews = pTensorViews_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetTensorARM && setPTensorViews( TensorViewARM const * pTensorViews_ ) && VULKAN_HPP_NOEXCEPT + { + pTensorViews = pTensorViews_; + return std::move( *this ); + } + +# if !defined( VULKAN_HPP_DISABLE_ENHANCED_MODE ) + WriteDescriptorSetTensorARM & setTensorViews( ArrayProxyNoTemporaries const & tensorViews_ ) VULKAN_HPP_NOEXCEPT + { + tensorViewCount = static_cast( tensorViews_.size() ); + pTensorViews = tensorViews_.data(); + return *this; + } +# endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWriteDescriptorSetTensorARM const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetTensorARM &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetTensorARM const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWriteDescriptorSetTensorARM *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, tensorViewCount, pTensorViews ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteDescriptorSetTensorARM const & ) const = default; +#else + bool operator==( WriteDescriptorSetTensorARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( tensorViewCount == rhs.tensorViewCount ) && ( pTensorViews == rhs.pTensorViews ); +# endif + } + + bool operator!=( WriteDescriptorSetTensorARM const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eWriteDescriptorSetTensorARM; + void const * pNext = {}; + uint32_t tensorViewCount = {}; + TensorViewARM const * pTensorViews = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = WriteDescriptorSetTensorARM; + }; +#endif + + template <> + struct CppType + { + using Type = WriteDescriptorSetTensorARM; + }; + + // wrapper struct for struct VkWriteIndirectExecutionSetPipelineEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetPipelineEXT.html + struct WriteIndirectExecutionSetPipelineEXT + { + using NativeType = VkWriteIndirectExecutionSetPipelineEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteIndirectExecutionSetPipelineEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR + WriteIndirectExecutionSetPipelineEXT( uint32_t index_ = {}, Pipeline pipeline_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , index{ index_ } + , pipeline{ pipeline_ } + { + } + + VULKAN_HPP_CONSTEXPR WriteIndirectExecutionSetPipelineEXT( WriteIndirectExecutionSetPipelineEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteIndirectExecutionSetPipelineEXT( VkWriteIndirectExecutionSetPipelineEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteIndirectExecutionSetPipelineEXT( *reinterpret_cast( &rhs ) ) + { + } + + WriteIndirectExecutionSetPipelineEXT & operator=( WriteIndirectExecutionSetPipelineEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + WriteIndirectExecutionSetPipelineEXT & operator=( VkWriteIndirectExecutionSetPipelineEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetPipelineEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetPipelineEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetPipelineEXT & setIndex( uint32_t index_ ) & VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetPipelineEXT && setIndex( uint32_t index_ ) && VULKAN_HPP_NOEXCEPT + { + index = index_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetPipelineEXT & setPipeline( Pipeline pipeline_ ) & VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetPipelineEXT && setPipeline( Pipeline pipeline_ ) && VULKAN_HPP_NOEXCEPT + { + pipeline = pipeline_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWriteIndirectExecutionSetPipelineEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteIndirectExecutionSetPipelineEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteIndirectExecutionSetPipelineEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWriteIndirectExecutionSetPipelineEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, index, pipeline ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteIndirectExecutionSetPipelineEXT const & ) const = default; +#else + bool operator==( WriteIndirectExecutionSetPipelineEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( index == rhs.index ) && ( pipeline == rhs.pipeline ); +# endif + } + + bool operator!=( WriteIndirectExecutionSetPipelineEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eWriteIndirectExecutionSetPipelineEXT; + void const * pNext = {}; + uint32_t index = {}; + Pipeline pipeline = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = WriteIndirectExecutionSetPipelineEXT; + }; +#endif + + template <> + struct CppType + { + using Type = WriteIndirectExecutionSetPipelineEXT; + }; + + // wrapper struct for struct VkWriteIndirectExecutionSetShaderEXT, see + // https://registry.khronos.org/vulkan/specs/latest/man/html/VkWriteIndirectExecutionSetShaderEXT.html + struct WriteIndirectExecutionSetShaderEXT + { + using NativeType = VkWriteIndirectExecutionSetShaderEXT; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteIndirectExecutionSetShaderEXT; + +#if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR WriteIndirectExecutionSetShaderEXT( uint32_t index_ = {}, ShaderEXT shader_ = {}, void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , index{ index_ } + , shader{ shader_ } + { + } + + VULKAN_HPP_CONSTEXPR WriteIndirectExecutionSetShaderEXT( WriteIndirectExecutionSetShaderEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + WriteIndirectExecutionSetShaderEXT( VkWriteIndirectExecutionSetShaderEXT const & rhs ) VULKAN_HPP_NOEXCEPT + : WriteIndirectExecutionSetShaderEXT( *reinterpret_cast( &rhs ) ) + { + } + + WriteIndirectExecutionSetShaderEXT & operator=( WriteIndirectExecutionSetShaderEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; +#endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + WriteIndirectExecutionSetShaderEXT & operator=( VkWriteIndirectExecutionSetShaderEXT const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +#if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetShaderEXT & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetShaderEXT && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetShaderEXT & setIndex( uint32_t index_ ) & VULKAN_HPP_NOEXCEPT + { + index = index_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetShaderEXT && setIndex( uint32_t index_ ) && VULKAN_HPP_NOEXCEPT + { + index = index_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetShaderEXT & setShader( ShaderEXT shader_ ) & VULKAN_HPP_NOEXCEPT + { + shader = shader_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 WriteIndirectExecutionSetShaderEXT && setShader( ShaderEXT shader_ ) && VULKAN_HPP_NOEXCEPT + { + shader = shader_; + return std::move( *this ); + } +#endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkWriteIndirectExecutionSetShaderEXT const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteIndirectExecutionSetShaderEXT &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkWriteIndirectExecutionSetShaderEXT const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkWriteIndirectExecutionSetShaderEXT *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +#if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, index, shader ); + } +#endif + +#if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + auto operator<=>( WriteIndirectExecutionSetShaderEXT const & ) const = default; +#else + bool operator==( WriteIndirectExecutionSetShaderEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { +# if defined( VULKAN_HPP_USE_REFLECT ) + return this->reflect() == rhs.reflect(); +# else + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( index == rhs.index ) && ( shader == rhs.shader ); +# endif + } + + bool operator!=( WriteIndirectExecutionSetShaderEXT const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } +#endif + + public: + StructureType sType = StructureType::eWriteIndirectExecutionSetShaderEXT; + void const * pNext = {}; + uint32_t index = {}; + ShaderEXT shader = {}; + }; + +#if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = WriteIndirectExecutionSetShaderEXT; + }; +#endif + + template <> + struct CppType + { + using Type = WriteIndirectExecutionSetShaderEXT; + }; + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + // wrapper struct for struct VkXcbSurfaceCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkXcbSurfaceCreateInfoKHR.html + struct XcbSurfaceCreateInfoKHR + { + using NativeType = VkXcbSurfaceCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eXcbSurfaceCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = {}, + xcb_connection_t * connection_ = {}, + xcb_window_t window_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , connection{ connection_ } + , window{ window_ } + { + } + + VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : XcbSurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + XcbSurfaceCreateInfoKHR & operator=( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + XcbSurfaceCreateInfoKHR & operator=( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setFlags( XcbSurfaceCreateFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR && setFlags( XcbSurfaceCreateFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setConnection( xcb_connection_t * connection_ ) & VULKAN_HPP_NOEXCEPT + { + connection = connection_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR && setConnection( xcb_connection_t * connection_ ) && VULKAN_HPP_NOEXCEPT + { + connection = connection_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & setWindow( xcb_window_t window_ ) & VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR && setWindow( xcb_window_t window_ ) && VULKAN_HPP_NOEXCEPT + { + window = window_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkXcbSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkXcbSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkXcbSurfaceCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkXcbSurfaceCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, connection, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = connection <=> rhs.connection; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &window, &rhs.window, sizeof( xcb_window_t ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( connection == rhs.connection ) && + ( memcmp( &window, &rhs.window, sizeof( xcb_window_t ) ) == 0 ); + } + + bool operator!=( XcbSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eXcbSurfaceCreateInfoKHR; + void const * pNext = {}; + XcbSurfaceCreateFlagsKHR flags = {}; + xcb_connection_t * connection = {}; + xcb_window_t window = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = XcbSurfaceCreateInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = XcbSurfaceCreateInfoKHR; + }; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + // wrapper struct for struct VkXlibSurfaceCreateInfoKHR, see https://registry.khronos.org/vulkan/specs/latest/man/html/VkXlibSurfaceCreateInfoKHR.html + struct XlibSurfaceCreateInfoKHR + { + using NativeType = VkXlibSurfaceCreateInfoKHR; + + static bool const allowDuplicate = false; + static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eXlibSurfaceCreateInfoKHR; + +# if !defined( VULKAN_HPP_NO_CONSTRUCTORS ) && !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) + VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = {}, + Display * dpy_ = {}, + Window window_ = {}, + void const * pNext_ = nullptr ) VULKAN_HPP_NOEXCEPT + : pNext{ pNext_ } + , flags{ flags_ } + , dpy{ dpy_ } + , window{ window_ } + { + } + + VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; + + XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + : XlibSurfaceCreateInfoKHR( *reinterpret_cast( &rhs ) ) + { + } + + XlibSurfaceCreateInfoKHR & operator=( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; +# endif /*VULKAN_HPP_NO_CONSTRUCTORS*/ + + XlibSurfaceCreateInfoKHR & operator=( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT + { + *this = *reinterpret_cast( &rhs ); + return *this; + } + +# if !defined( VULKAN_HPP_NO_SETTERS ) && !defined( VULKAN_HPP_NO_STRUCT_SETTERS ) + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setPNext( void const * pNext_ ) & VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR && setPNext( void const * pNext_ ) && VULKAN_HPP_NOEXCEPT + { + pNext = pNext_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setFlags( XlibSurfaceCreateFlagsKHR flags_ ) & VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR && setFlags( XlibSurfaceCreateFlagsKHR flags_ ) && VULKAN_HPP_NOEXCEPT + { + flags = flags_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setDpy( Display * dpy_ ) & VULKAN_HPP_NOEXCEPT + { + dpy = dpy_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR && setDpy( Display * dpy_ ) && VULKAN_HPP_NOEXCEPT + { + dpy = dpy_; + return std::move( *this ); + } + + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & setWindow( Window window_ ) & VULKAN_HPP_NOEXCEPT + { + window = window_; + return *this; + } + + VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR && setWindow( Window window_ ) && VULKAN_HPP_NOEXCEPT + { + window = window_; + return std::move( *this ); + } +# endif /*VULKAN_HPP_NO_SETTERS*/ + + operator VkXlibSurfaceCreateInfoKHR const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkXlibSurfaceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator VkXlibSurfaceCreateInfoKHR const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator VkXlibSurfaceCreateInfoKHR *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + +# if defined( VULKAN_HPP_USE_REFLECT ) + std::tuple + reflect() const VULKAN_HPP_NOEXCEPT + { + return std::tie( sType, pNext, flags, dpy, window ); + } +# endif + +# if defined( VULKAN_HPP_HAS_SPACESHIP_OPERATOR ) + std::strong_ordering operator<=>( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + if ( auto cmp = sType <=> rhs.sType; cmp != 0 ) + return cmp; + if ( auto cmp = pNext <=> rhs.pNext; cmp != 0 ) + return cmp; + if ( auto cmp = flags <=> rhs.flags; cmp != 0 ) + return cmp; + if ( auto cmp = dpy <=> rhs.dpy; cmp != 0 ) + return cmp; + if ( auto cmp = memcmp( &window, &rhs.window, sizeof( Window ) ); cmp != 0 ) + return ( cmp < 0 ) ? std::strong_ordering::less : std::strong_ordering::greater; + + return std::strong_ordering::equivalent; + } +# endif + + bool operator==( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sType == rhs.sType ) && ( pNext == rhs.pNext ) && ( flags == rhs.flags ) && ( dpy == rhs.dpy ) && + ( memcmp( &window, &rhs.window, sizeof( Window ) ) == 0 ); + } + + bool operator!=( XlibSurfaceCreateInfoKHR const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + StructureType sType = StructureType::eXlibSurfaceCreateInfoKHR; + void const * pNext = {}; + XlibSurfaceCreateFlagsKHR flags = {}; + Display * dpy = {}; + Window window = {}; + }; + +# if 20 <= VULKAN_HPP_CPP_VERSION + template <> + struct CppType + { + using Type = XlibSurfaceCreateInfoKHR; + }; +# endif + + template <> + struct CppType + { + using Type = XlibSurfaceCreateInfoKHR; + }; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +} // namespace VULKAN_HPP_NAMESPACE +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_to_string.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_to_string.hpp new file mode 100644 index 000000000..c6e32427b --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_to_string.hpp @@ -0,0 +1,11250 @@ +// Copyright 2015-2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_TO_STRING_HPP +#define VULKAN_TO_STRING_HPP + +#if defined( VULKAN_HPP_CXX_MODULE ) +# define VULKAN_HPP_EXPORT export +#else +# include +# define VULKAN_HPP_EXPORT +#endif + +// ignore warnings on using deprecated enum values in this header +#if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wdeprecated-declarations" +#elif defined( _MSC_VER ) +# pragma warning( push ) +# pragma warning( disable : 4996 ) +#endif + +#if !defined( VULKAN_HPP_CXX_MODULE ) +# if defined( __cpp_lib_format ) +# include // std::format +# else +# include // std::stringstream +# endif +#endif + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ + //========================== + //=== BITMASKs to_string === + //========================== + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_INLINE std::string to_string( FormatFeatureFlags value ) + { + std::string result = "{"; + if ( value & FormatFeatureFlagBits::eSampledImage ) + result += " SampledImage |"; + if ( value & FormatFeatureFlagBits::eStorageImage ) + result += " StorageImage |"; + if ( value & FormatFeatureFlagBits::eStorageImageAtomic ) + result += " StorageImageAtomic |"; + if ( value & FormatFeatureFlagBits::eUniformTexelBuffer ) + result += " UniformTexelBuffer |"; + if ( value & FormatFeatureFlagBits::eStorageTexelBuffer ) + result += " StorageTexelBuffer |"; + if ( value & FormatFeatureFlagBits::eStorageTexelBufferAtomic ) + result += " StorageTexelBufferAtomic |"; + if ( value & FormatFeatureFlagBits::eVertexBuffer ) + result += " VertexBuffer |"; + if ( value & FormatFeatureFlagBits::eColorAttachment ) + result += " ColorAttachment |"; + if ( value & FormatFeatureFlagBits::eColorAttachmentBlend ) + result += " ColorAttachmentBlend |"; + if ( value & FormatFeatureFlagBits::eDepthStencilAttachment ) + result += " DepthStencilAttachment |"; + if ( value & FormatFeatureFlagBits::eBlitSrc ) + result += " BlitSrc |"; + if ( value & FormatFeatureFlagBits::eBlitDst ) + result += " BlitDst |"; + if ( value & FormatFeatureFlagBits::eSampledImageFilterLinear ) + result += " SampledImageFilterLinear |"; + if ( value & FormatFeatureFlagBits::eTransferSrc ) + result += " TransferSrc |"; + if ( value & FormatFeatureFlagBits::eTransferDst ) + result += " TransferDst |"; + if ( value & FormatFeatureFlagBits::eMidpointChromaSamples ) + result += " MidpointChromaSamples |"; + if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter ) + result += " SampledImageYcbcrConversionLinearFilter |"; + if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter ) + result += " SampledImageYcbcrConversionSeparateReconstructionFilter |"; + if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit ) + result += " SampledImageYcbcrConversionChromaReconstructionExplicit |"; + if ( value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable ) + result += " SampledImageYcbcrConversionChromaReconstructionExplicitForceable |"; + if ( value & FormatFeatureFlagBits::eDisjoint ) + result += " Disjoint |"; + if ( value & FormatFeatureFlagBits::eCositedChromaSamples ) + result += " CositedChromaSamples |"; + if ( value & FormatFeatureFlagBits::eSampledImageFilterMinmax ) + result += " SampledImageFilterMinmax |"; + if ( value & FormatFeatureFlagBits::eVideoDecodeOutputKHR ) + result += " VideoDecodeOutputKHR |"; + if ( value & FormatFeatureFlagBits::eVideoDecodeDpbKHR ) + result += " VideoDecodeDpbKHR |"; + if ( value & FormatFeatureFlagBits::eAccelerationStructureVertexBufferKHR ) + result += " AccelerationStructureVertexBufferKHR |"; + if ( value & FormatFeatureFlagBits::eSampledImageFilterCubicEXT ) + result += " SampledImageFilterCubicEXT |"; + if ( value & FormatFeatureFlagBits::eFragmentDensityMapEXT ) + result += " FragmentDensityMapEXT |"; + if ( value & FormatFeatureFlagBits::eFragmentShadingRateAttachmentKHR ) + result += " FragmentShadingRateAttachmentKHR |"; + if ( value & FormatFeatureFlagBits::eVideoEncodeInputKHR ) + result += " VideoEncodeInputKHR |"; + if ( value & FormatFeatureFlagBits::eVideoEncodeDpbKHR ) + result += " VideoEncodeDpbKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ImageCreateFlags value ) + { + std::string result = "{"; + if ( value & ImageCreateFlagBits::eSparseBinding ) + result += " SparseBinding |"; + if ( value & ImageCreateFlagBits::eSparseResidency ) + result += " SparseResidency |"; + if ( value & ImageCreateFlagBits::eSparseAliased ) + result += " SparseAliased |"; + if ( value & ImageCreateFlagBits::eMutableFormat ) + result += " MutableFormat |"; + if ( value & ImageCreateFlagBits::eCubeCompatible ) + result += " CubeCompatible |"; + if ( value & ImageCreateFlagBits::eAlias ) + result += " Alias |"; + if ( value & ImageCreateFlagBits::eSplitInstanceBindRegions ) + result += " SplitInstanceBindRegions |"; + if ( value & ImageCreateFlagBits::e2DArrayCompatible ) + result += " 2DArrayCompatible |"; + if ( value & ImageCreateFlagBits::eBlockTexelViewCompatible ) + result += " BlockTexelViewCompatible |"; + if ( value & ImageCreateFlagBits::eExtendedUsage ) + result += " ExtendedUsage |"; + if ( value & ImageCreateFlagBits::eProtected ) + result += " Protected |"; + if ( value & ImageCreateFlagBits::eDisjoint ) + result += " Disjoint |"; + if ( value & ImageCreateFlagBits::eCornerSampledNV ) + result += " CornerSampledNV |"; + if ( value & ImageCreateFlagBits::eDescriptorHeapCaptureReplayEXT ) + result += " DescriptorHeapCaptureReplayEXT |"; + if ( value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT ) + result += " SampleLocationsCompatibleDepthEXT |"; + if ( value & ImageCreateFlagBits::eSubsampledEXT ) + result += " SubsampledEXT |"; + if ( value & ImageCreateFlagBits::eMultisampledRenderToSingleSampledEXT ) + result += " MultisampledRenderToSingleSampledEXT |"; + if ( value & ImageCreateFlagBits::e2DViewCompatibleEXT ) + result += " 2DViewCompatibleEXT |"; + if ( value & ImageCreateFlagBits::eVideoProfileIndependentKHR ) + result += " VideoProfileIndependentKHR |"; + if ( value & ImageCreateFlagBits::eFragmentDensityMapOffsetEXT ) + result += " FragmentDensityMapOffsetEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ImageUsageFlags value ) + { + std::string result = "{"; + if ( value & ImageUsageFlagBits::eTransferSrc ) + result += " TransferSrc |"; + if ( value & ImageUsageFlagBits::eTransferDst ) + result += " TransferDst |"; + if ( value & ImageUsageFlagBits::eSampled ) + result += " Sampled |"; + if ( value & ImageUsageFlagBits::eStorage ) + result += " Storage |"; + if ( value & ImageUsageFlagBits::eColorAttachment ) + result += " ColorAttachment |"; + if ( value & ImageUsageFlagBits::eDepthStencilAttachment ) + result += " DepthStencilAttachment |"; + if ( value & ImageUsageFlagBits::eTransientAttachment ) + result += " TransientAttachment |"; + if ( value & ImageUsageFlagBits::eInputAttachment ) + result += " InputAttachment |"; + if ( value & ImageUsageFlagBits::eHostTransfer ) + result += " HostTransfer |"; + if ( value & ImageUsageFlagBits::eVideoDecodeDstKHR ) + result += " VideoDecodeDstKHR |"; + if ( value & ImageUsageFlagBits::eVideoDecodeSrcKHR ) + result += " VideoDecodeSrcKHR |"; + if ( value & ImageUsageFlagBits::eVideoDecodeDpbKHR ) + result += " VideoDecodeDpbKHR |"; + if ( value & ImageUsageFlagBits::eFragmentDensityMapEXT ) + result += " FragmentDensityMapEXT |"; + if ( value & ImageUsageFlagBits::eFragmentShadingRateAttachmentKHR ) + result += " FragmentShadingRateAttachmentKHR |"; + if ( value & ImageUsageFlagBits::eVideoEncodeDstKHR ) + result += " VideoEncodeDstKHR |"; + if ( value & ImageUsageFlagBits::eVideoEncodeSrcKHR ) + result += " VideoEncodeSrcKHR |"; + if ( value & ImageUsageFlagBits::eVideoEncodeDpbKHR ) + result += " VideoEncodeDpbKHR |"; + if ( value & ImageUsageFlagBits::eAttachmentFeedbackLoopEXT ) + result += " AttachmentFeedbackLoopEXT |"; + if ( value & ImageUsageFlagBits::eInvocationMaskHUAWEI ) + result += " InvocationMaskHUAWEI |"; + if ( value & ImageUsageFlagBits::eSampleWeightQCOM ) + result += " SampleWeightQCOM |"; + if ( value & ImageUsageFlagBits::eSampleBlockMatchQCOM ) + result += " SampleBlockMatchQCOM |"; + if ( value & ImageUsageFlagBits::eTensorAliasingARM ) + result += " TensorAliasingARM |"; + if ( value & ImageUsageFlagBits::eTileMemoryQCOM ) + result += " TileMemoryQCOM |"; + if ( value & ImageUsageFlagBits::eVideoEncodeQuantizationDeltaMapKHR ) + result += " VideoEncodeQuantizationDeltaMapKHR |"; + if ( value & ImageUsageFlagBits::eVideoEncodeEmphasisMapKHR ) + result += " VideoEncodeEmphasisMapKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( InstanceCreateFlags value ) + { + std::string result = "{"; + if ( value & InstanceCreateFlagBits::eEnumeratePortabilityKHR ) + result += " EnumeratePortabilityKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( MemoryHeapFlags value ) + { + std::string result = "{"; + if ( value & MemoryHeapFlagBits::eDeviceLocal ) + result += " DeviceLocal |"; + if ( value & MemoryHeapFlagBits::eMultiInstance ) + result += " MultiInstance |"; + if ( value & MemoryHeapFlagBits::eTileMemoryQCOM ) + result += " TileMemoryQCOM |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( MemoryPropertyFlags value ) + { + std::string result = "{"; + if ( value & MemoryPropertyFlagBits::eDeviceLocal ) + result += " DeviceLocal |"; + if ( value & MemoryPropertyFlagBits::eHostVisible ) + result += " HostVisible |"; + if ( value & MemoryPropertyFlagBits::eHostCoherent ) + result += " HostCoherent |"; + if ( value & MemoryPropertyFlagBits::eHostCached ) + result += " HostCached |"; + if ( value & MemoryPropertyFlagBits::eLazilyAllocated ) + result += " LazilyAllocated |"; + if ( value & MemoryPropertyFlagBits::eProtected ) + result += " Protected |"; + if ( value & MemoryPropertyFlagBits::eDeviceCoherentAMD ) + result += " DeviceCoherentAMD |"; + if ( value & MemoryPropertyFlagBits::eDeviceUncachedAMD ) + result += " DeviceUncachedAMD |"; + if ( value & MemoryPropertyFlagBits::eRdmaCapableNV ) + result += " RdmaCapableNV |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( QueueFlags value ) + { + std::string result = "{"; + if ( value & QueueFlagBits::eGraphics ) + result += " Graphics |"; + if ( value & QueueFlagBits::eCompute ) + result += " Compute |"; + if ( value & QueueFlagBits::eTransfer ) + result += " Transfer |"; + if ( value & QueueFlagBits::eSparseBinding ) + result += " SparseBinding |"; + if ( value & QueueFlagBits::eProtected ) + result += " Protected |"; + if ( value & QueueFlagBits::eVideoDecodeKHR ) + result += " VideoDecodeKHR |"; + if ( value & QueueFlagBits::eVideoEncodeKHR ) + result += " VideoEncodeKHR |"; + if ( value & QueueFlagBits::eOpticalFlowNV ) + result += " OpticalFlowNV |"; + if ( value & QueueFlagBits::eDataGraphARM ) + result += " DataGraphARM |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( SampleCountFlags value ) + { + std::string result = "{"; + if ( value & SampleCountFlagBits::e1 ) + result += " 1 |"; + if ( value & SampleCountFlagBits::e2 ) + result += " 2 |"; + if ( value & SampleCountFlagBits::e4 ) + result += " 4 |"; + if ( value & SampleCountFlagBits::e8 ) + result += " 8 |"; + if ( value & SampleCountFlagBits::e16 ) + result += " 16 |"; + if ( value & SampleCountFlagBits::e32 ) + result += " 32 |"; + if ( value & SampleCountFlagBits::e64 ) + result += " 64 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ShaderStageFlags value ) + { + std::string result = "{"; + if ( value & ShaderStageFlagBits::eVertex ) + result += " Vertex |"; + if ( value & ShaderStageFlagBits::eTessellationControl ) + result += " TessellationControl |"; + if ( value & ShaderStageFlagBits::eTessellationEvaluation ) + result += " TessellationEvaluation |"; + if ( value & ShaderStageFlagBits::eGeometry ) + result += " Geometry |"; + if ( value & ShaderStageFlagBits::eFragment ) + result += " Fragment |"; + if ( value & ShaderStageFlagBits::eCompute ) + result += " Compute |"; + if ( value & ShaderStageFlagBits::eRaygenKHR ) + result += " RaygenKHR |"; + if ( value & ShaderStageFlagBits::eAnyHitKHR ) + result += " AnyHitKHR |"; + if ( value & ShaderStageFlagBits::eClosestHitKHR ) + result += " ClosestHitKHR |"; + if ( value & ShaderStageFlagBits::eMissKHR ) + result += " MissKHR |"; + if ( value & ShaderStageFlagBits::eIntersectionKHR ) + result += " IntersectionKHR |"; + if ( value & ShaderStageFlagBits::eCallableKHR ) + result += " CallableKHR |"; + if ( value & ShaderStageFlagBits::eTaskEXT ) + result += " TaskEXT |"; + if ( value & ShaderStageFlagBits::eMeshEXT ) + result += " MeshEXT |"; + if ( value & ShaderStageFlagBits::eSubpassShadingHUAWEI ) + result += " SubpassShadingHUAWEI |"; + if ( value & ShaderStageFlagBits::eClusterCullingHUAWEI ) + result += " ClusterCullingHUAWEI |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( DeviceQueueCreateFlags value ) + { + std::string result = "{"; + if ( value & DeviceQueueCreateFlagBits::eProtected ) + result += " Protected |"; + if ( value & DeviceQueueCreateFlagBits::eInternallySynchronizedKHR ) + result += " InternallySynchronizedKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PipelineStageFlags value ) + { + std::string result = "{"; + if ( value & PipelineStageFlagBits::eTopOfPipe ) + result += " TopOfPipe |"; + if ( value & PipelineStageFlagBits::eDrawIndirect ) + result += " DrawIndirect |"; + if ( value & PipelineStageFlagBits::eVertexInput ) + result += " VertexInput |"; + if ( value & PipelineStageFlagBits::eVertexShader ) + result += " VertexShader |"; + if ( value & PipelineStageFlagBits::eTessellationControlShader ) + result += " TessellationControlShader |"; + if ( value & PipelineStageFlagBits::eTessellationEvaluationShader ) + result += " TessellationEvaluationShader |"; + if ( value & PipelineStageFlagBits::eGeometryShader ) + result += " GeometryShader |"; + if ( value & PipelineStageFlagBits::eFragmentShader ) + result += " FragmentShader |"; + if ( value & PipelineStageFlagBits::eEarlyFragmentTests ) + result += " EarlyFragmentTests |"; + if ( value & PipelineStageFlagBits::eLateFragmentTests ) + result += " LateFragmentTests |"; + if ( value & PipelineStageFlagBits::eColorAttachmentOutput ) + result += " ColorAttachmentOutput |"; + if ( value & PipelineStageFlagBits::eComputeShader ) + result += " ComputeShader |"; + if ( value & PipelineStageFlagBits::eTransfer ) + result += " Transfer |"; + if ( value & PipelineStageFlagBits::eBottomOfPipe ) + result += " BottomOfPipe |"; + if ( value & PipelineStageFlagBits::eHost ) + result += " Host |"; + if ( value & PipelineStageFlagBits::eAllGraphics ) + result += " AllGraphics |"; + if ( value & PipelineStageFlagBits::eAllCommands ) + result += " AllCommands |"; + if ( value & PipelineStageFlagBits::eTransformFeedbackEXT ) + result += " TransformFeedbackEXT |"; + if ( value & PipelineStageFlagBits::eConditionalRenderingEXT ) + result += " ConditionalRenderingEXT |"; + if ( value & PipelineStageFlagBits::eAccelerationStructureBuildKHR ) + result += " AccelerationStructureBuildKHR |"; + if ( value & PipelineStageFlagBits::eRayTracingShaderKHR ) + result += " RayTracingShaderKHR |"; + if ( value & PipelineStageFlagBits::eFragmentDensityProcessEXT ) + result += " FragmentDensityProcessEXT |"; + if ( value & PipelineStageFlagBits::eFragmentShadingRateAttachmentKHR ) + result += " FragmentShadingRateAttachmentKHR |"; + if ( value & PipelineStageFlagBits::eTaskShaderEXT ) + result += " TaskShaderEXT |"; + if ( value & PipelineStageFlagBits::eMeshShaderEXT ) + result += " MeshShaderEXT |"; + if ( value & PipelineStageFlagBits::eCommandPreprocessEXT ) + result += " CommandPreprocessEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( MemoryMapFlags value ) + { + std::string result = "{"; + if ( value & MemoryMapFlagBits::ePlacedEXT ) + result += " PlacedEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ImageAspectFlags value ) + { + std::string result = "{"; + if ( value & ImageAspectFlagBits::eColor ) + result += " Color |"; + if ( value & ImageAspectFlagBits::eDepth ) + result += " Depth |"; + if ( value & ImageAspectFlagBits::eStencil ) + result += " Stencil |"; + if ( value & ImageAspectFlagBits::eMetadata ) + result += " Metadata |"; + if ( value & ImageAspectFlagBits::ePlane0 ) + result += " Plane0 |"; + if ( value & ImageAspectFlagBits::ePlane1 ) + result += " Plane1 |"; + if ( value & ImageAspectFlagBits::ePlane2 ) + result += " Plane2 |"; + if ( value & ImageAspectFlagBits::eMemoryPlane0EXT ) + result += " MemoryPlane0EXT |"; + if ( value & ImageAspectFlagBits::eMemoryPlane1EXT ) + result += " MemoryPlane1EXT |"; + if ( value & ImageAspectFlagBits::eMemoryPlane2EXT ) + result += " MemoryPlane2EXT |"; + if ( value & ImageAspectFlagBits::eMemoryPlane3EXT ) + result += " MemoryPlane3EXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( SparseImageFormatFlags value ) + { + std::string result = "{"; + if ( value & SparseImageFormatFlagBits::eSingleMiptail ) + result += " SingleMiptail |"; + if ( value & SparseImageFormatFlagBits::eAlignedMipSize ) + result += " AlignedMipSize |"; + if ( value & SparseImageFormatFlagBits::eNonstandardBlockSize ) + result += " NonstandardBlockSize |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( SparseMemoryBindFlags value ) + { + std::string result = "{"; + if ( value & SparseMemoryBindFlagBits::eMetadata ) + result += " Metadata |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( FenceCreateFlags value ) + { + std::string result = "{"; + if ( value & FenceCreateFlagBits::eSignaled ) + result += " Signaled |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SemaphoreCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( QueryPoolCreateFlags value ) + { + std::string result = "{"; + if ( value & QueryPoolCreateFlagBits::eResetKHR ) + result += " ResetKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( QueryPipelineStatisticFlags value ) + { + std::string result = "{"; + if ( value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices ) + result += " InputAssemblyVertices |"; + if ( value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives ) + result += " InputAssemblyPrimitives |"; + if ( value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations ) + result += " VertexShaderInvocations |"; + if ( value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations ) + result += " GeometryShaderInvocations |"; + if ( value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives ) + result += " GeometryShaderPrimitives |"; + if ( value & QueryPipelineStatisticFlagBits::eClippingInvocations ) + result += " ClippingInvocations |"; + if ( value & QueryPipelineStatisticFlagBits::eClippingPrimitives ) + result += " ClippingPrimitives |"; + if ( value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations ) + result += " FragmentShaderInvocations |"; + if ( value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches ) + result += " TessellationControlShaderPatches |"; + if ( value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations ) + result += " TessellationEvaluationShaderInvocations |"; + if ( value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations ) + result += " ComputeShaderInvocations |"; + if ( value & QueryPipelineStatisticFlagBits::eTaskShaderInvocationsEXT ) + result += " TaskShaderInvocationsEXT |"; + if ( value & QueryPipelineStatisticFlagBits::eMeshShaderInvocationsEXT ) + result += " MeshShaderInvocationsEXT |"; + if ( value & QueryPipelineStatisticFlagBits::eClusterCullingShaderInvocationsHUAWEI ) + result += " ClusterCullingShaderInvocationsHUAWEI |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( QueryResultFlags value ) + { + std::string result = "{"; + if ( value & QueryResultFlagBits::e64 ) + result += " 64 |"; + if ( value & QueryResultFlagBits::eWait ) + result += " Wait |"; + if ( value & QueryResultFlagBits::eWithAvailability ) + result += " WithAvailability |"; + if ( value & QueryResultFlagBits::ePartial ) + result += " Partial |"; + if ( value & QueryResultFlagBits::eWithStatusKHR ) + result += " WithStatusKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( BufferCreateFlags value ) + { + std::string result = "{"; + if ( value & BufferCreateFlagBits::eSparseBinding ) + result += " SparseBinding |"; + if ( value & BufferCreateFlagBits::eSparseResidency ) + result += " SparseResidency |"; + if ( value & BufferCreateFlagBits::eSparseAliased ) + result += " SparseAliased |"; + if ( value & BufferCreateFlagBits::eProtected ) + result += " Protected |"; + if ( value & BufferCreateFlagBits::eDeviceAddressCaptureReplay ) + result += " DeviceAddressCaptureReplay |"; + if ( value & BufferCreateFlagBits::eDescriptorBufferCaptureReplayEXT ) + result += " DescriptorBufferCaptureReplayEXT |"; + if ( value & BufferCreateFlagBits::eVideoProfileIndependentKHR ) + result += " VideoProfileIndependentKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( BufferUsageFlags value ) + { + std::string result = "{"; + if ( value & BufferUsageFlagBits::eTransferSrc ) + result += " TransferSrc |"; + if ( value & BufferUsageFlagBits::eTransferDst ) + result += " TransferDst |"; + if ( value & BufferUsageFlagBits::eUniformTexelBuffer ) + result += " UniformTexelBuffer |"; + if ( value & BufferUsageFlagBits::eStorageTexelBuffer ) + result += " StorageTexelBuffer |"; + if ( value & BufferUsageFlagBits::eUniformBuffer ) + result += " UniformBuffer |"; + if ( value & BufferUsageFlagBits::eStorageBuffer ) + result += " StorageBuffer |"; + if ( value & BufferUsageFlagBits::eIndexBuffer ) + result += " IndexBuffer |"; + if ( value & BufferUsageFlagBits::eVertexBuffer ) + result += " VertexBuffer |"; + if ( value & BufferUsageFlagBits::eIndirectBuffer ) + result += " IndirectBuffer |"; + if ( value & BufferUsageFlagBits::eShaderDeviceAddress ) + result += " ShaderDeviceAddress |"; + if ( value & BufferUsageFlagBits::eVideoDecodeSrcKHR ) + result += " VideoDecodeSrcKHR |"; + if ( value & BufferUsageFlagBits::eVideoDecodeDstKHR ) + result += " VideoDecodeDstKHR |"; + if ( value & BufferUsageFlagBits::eTransformFeedbackBufferEXT ) + result += " TransformFeedbackBufferEXT |"; + if ( value & BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT ) + result += " TransformFeedbackCounterBufferEXT |"; + if ( value & BufferUsageFlagBits::eConditionalRenderingEXT ) + result += " ConditionalRenderingEXT |"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & BufferUsageFlagBits::eExecutionGraphScratchAMDX ) + result += " ExecutionGraphScratchAMDX |"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & BufferUsageFlagBits::eDescriptorHeapEXT ) + result += " DescriptorHeapEXT |"; + if ( value & BufferUsageFlagBits::eAccelerationStructureBuildInputReadOnlyKHR ) + result += " AccelerationStructureBuildInputReadOnlyKHR |"; + if ( value & BufferUsageFlagBits::eAccelerationStructureStorageKHR ) + result += " AccelerationStructureStorageKHR |"; + if ( value & BufferUsageFlagBits::eShaderBindingTableKHR ) + result += " ShaderBindingTableKHR |"; + if ( value & BufferUsageFlagBits::eVideoEncodeDstKHR ) + result += " VideoEncodeDstKHR |"; + if ( value & BufferUsageFlagBits::eVideoEncodeSrcKHR ) + result += " VideoEncodeSrcKHR |"; + if ( value & BufferUsageFlagBits::eSamplerDescriptorBufferEXT ) + result += " SamplerDescriptorBufferEXT |"; + if ( value & BufferUsageFlagBits::eResourceDescriptorBufferEXT ) + result += " ResourceDescriptorBufferEXT |"; + if ( value & BufferUsageFlagBits::ePushDescriptorsDescriptorBufferEXT ) + result += " PushDescriptorsDescriptorBufferEXT |"; + if ( value & BufferUsageFlagBits::eMicromapBuildInputReadOnlyEXT ) + result += " MicromapBuildInputReadOnlyEXT |"; + if ( value & BufferUsageFlagBits::eMicromapStorageEXT ) + result += " MicromapStorageEXT |"; + if ( value & BufferUsageFlagBits::eTileMemoryQCOM ) + result += " TileMemoryQCOM |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ImageViewCreateFlags value ) + { + std::string result = "{"; + if ( value & ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT ) + result += " FragmentDensityMapDynamicEXT |"; + if ( value & ImageViewCreateFlagBits::eDescriptorBufferCaptureReplayEXT ) + result += " DescriptorBufferCaptureReplayEXT |"; + if ( value & ImageViewCreateFlagBits::eFragmentDensityMapDeferredEXT ) + result += " FragmentDensityMapDeferredEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( AccessFlags value ) + { + std::string result = "{"; + if ( value & AccessFlagBits::eIndirectCommandRead ) + result += " IndirectCommandRead |"; + if ( value & AccessFlagBits::eIndexRead ) + result += " IndexRead |"; + if ( value & AccessFlagBits::eVertexAttributeRead ) + result += " VertexAttributeRead |"; + if ( value & AccessFlagBits::eUniformRead ) + result += " UniformRead |"; + if ( value & AccessFlagBits::eInputAttachmentRead ) + result += " InputAttachmentRead |"; + if ( value & AccessFlagBits::eShaderRead ) + result += " ShaderRead |"; + if ( value & AccessFlagBits::eShaderWrite ) + result += " ShaderWrite |"; + if ( value & AccessFlagBits::eColorAttachmentRead ) + result += " ColorAttachmentRead |"; + if ( value & AccessFlagBits::eColorAttachmentWrite ) + result += " ColorAttachmentWrite |"; + if ( value & AccessFlagBits::eDepthStencilAttachmentRead ) + result += " DepthStencilAttachmentRead |"; + if ( value & AccessFlagBits::eDepthStencilAttachmentWrite ) + result += " DepthStencilAttachmentWrite |"; + if ( value & AccessFlagBits::eTransferRead ) + result += " TransferRead |"; + if ( value & AccessFlagBits::eTransferWrite ) + result += " TransferWrite |"; + if ( value & AccessFlagBits::eHostRead ) + result += " HostRead |"; + if ( value & AccessFlagBits::eHostWrite ) + result += " HostWrite |"; + if ( value & AccessFlagBits::eMemoryRead ) + result += " MemoryRead |"; + if ( value & AccessFlagBits::eMemoryWrite ) + result += " MemoryWrite |"; + if ( value & AccessFlagBits::eTransformFeedbackWriteEXT ) + result += " TransformFeedbackWriteEXT |"; + if ( value & AccessFlagBits::eTransformFeedbackCounterReadEXT ) + result += " TransformFeedbackCounterReadEXT |"; + if ( value & AccessFlagBits::eTransformFeedbackCounterWriteEXT ) + result += " TransformFeedbackCounterWriteEXT |"; + if ( value & AccessFlagBits::eConditionalRenderingReadEXT ) + result += " ConditionalRenderingReadEXT |"; + if ( value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT ) + result += " ColorAttachmentReadNoncoherentEXT |"; + if ( value & AccessFlagBits::eAccelerationStructureReadKHR ) + result += " AccelerationStructureReadKHR |"; + if ( value & AccessFlagBits::eAccelerationStructureWriteKHR ) + result += " AccelerationStructureWriteKHR |"; + if ( value & AccessFlagBits::eFragmentDensityMapReadEXT ) + result += " FragmentDensityMapReadEXT |"; + if ( value & AccessFlagBits::eFragmentShadingRateAttachmentReadKHR ) + result += " FragmentShadingRateAttachmentReadKHR |"; + if ( value & AccessFlagBits::eCommandPreprocessReadEXT ) + result += " CommandPreprocessReadEXT |"; + if ( value & AccessFlagBits::eCommandPreprocessWriteEXT ) + result += " CommandPreprocessWriteEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( DependencyFlags value ) + { + std::string result = "{"; + if ( value & DependencyFlagBits::eByRegion ) + result += " ByRegion |"; + if ( value & DependencyFlagBits::eDeviceGroup ) + result += " DeviceGroup |"; + if ( value & DependencyFlagBits::eViewLocal ) + result += " ViewLocal |"; + if ( value & DependencyFlagBits::eFeedbackLoopEXT ) + result += " FeedbackLoopEXT |"; + if ( value & DependencyFlagBits::eQueueFamilyOwnershipTransferUseAllStagesKHR ) + result += " QueueFamilyOwnershipTransferUseAllStagesKHR |"; + if ( value & DependencyFlagBits::eAsymmetricEventKHR ) + result += " AsymmetricEventKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( CommandPoolCreateFlags value ) + { + std::string result = "{"; + if ( value & CommandPoolCreateFlagBits::eTransient ) + result += " Transient |"; + if ( value & CommandPoolCreateFlagBits::eResetCommandBuffer ) + result += " ResetCommandBuffer |"; + if ( value & CommandPoolCreateFlagBits::eProtected ) + result += " Protected |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( CommandPoolResetFlags value ) + { + std::string result = "{"; + if ( value & CommandPoolResetFlagBits::eReleaseResources ) + result += " ReleaseResources |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( CommandBufferResetFlags value ) + { + std::string result = "{"; + if ( value & CommandBufferResetFlagBits::eReleaseResources ) + result += " ReleaseResources |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( CommandBufferUsageFlags value ) + { + std::string result = "{"; + if ( value & CommandBufferUsageFlagBits::eOneTimeSubmit ) + result += " OneTimeSubmit |"; + if ( value & CommandBufferUsageFlagBits::eRenderPassContinue ) + result += " RenderPassContinue |"; + if ( value & CommandBufferUsageFlagBits::eSimultaneousUse ) + result += " SimultaneousUse |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( QueryControlFlags value ) + { + std::string result = "{"; + if ( value & QueryControlFlagBits::ePrecise ) + result += " Precise |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( EventCreateFlags value ) + { + std::string result = "{"; + if ( value & EventCreateFlagBits::eDeviceOnly ) + result += " DeviceOnly |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BufferViewCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderModuleCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( PipelineCacheCreateFlags value ) + { + std::string result = "{"; + if ( value & PipelineCacheCreateFlagBits::eExternallySynchronized ) + result += " ExternallySynchronized |"; + if ( value & PipelineCacheCreateFlagBits::eInternallySynchronizedMergeKHR ) + result += " InternallySynchronizedMergeKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PipelineCreateFlags value ) + { + std::string result = "{"; + if ( value & PipelineCreateFlagBits::eDisableOptimization ) + result += " DisableOptimization |"; + if ( value & PipelineCreateFlagBits::eAllowDerivatives ) + result += " AllowDerivatives |"; + if ( value & PipelineCreateFlagBits::eDerivative ) + result += " Derivative |"; + if ( value & PipelineCreateFlagBits::eDispatchBase ) + result += " DispatchBase |"; + if ( value & PipelineCreateFlagBits::eViewIndexFromDeviceIndex ) + result += " ViewIndexFromDeviceIndex |"; + if ( value & PipelineCreateFlagBits::eFailOnPipelineCompileRequired ) + result += " FailOnPipelineCompileRequired |"; + if ( value & PipelineCreateFlagBits::eEarlyReturnOnFailure ) + result += " EarlyReturnOnFailure |"; + if ( value & PipelineCreateFlagBits::eNoProtectedAccess ) + result += " NoProtectedAccess |"; + if ( value & PipelineCreateFlagBits::eProtectedAccessOnly ) + result += " ProtectedAccessOnly |"; + if ( value & PipelineCreateFlagBits::eRayTracingNoNullAnyHitShadersKHR ) + result += " RayTracingNoNullAnyHitShadersKHR |"; + if ( value & PipelineCreateFlagBits::eRayTracingNoNullClosestHitShadersKHR ) + result += " RayTracingNoNullClosestHitShadersKHR |"; + if ( value & PipelineCreateFlagBits::eRayTracingNoNullMissShadersKHR ) + result += " RayTracingNoNullMissShadersKHR |"; + if ( value & PipelineCreateFlagBits::eRayTracingNoNullIntersectionShadersKHR ) + result += " RayTracingNoNullIntersectionShadersKHR |"; + if ( value & PipelineCreateFlagBits::eRayTracingSkipTrianglesKHR ) + result += " RayTracingSkipTrianglesKHR |"; + if ( value & PipelineCreateFlagBits::eRayTracingSkipAabbsKHR ) + result += " RayTracingSkipAabbsKHR |"; + if ( value & PipelineCreateFlagBits::eRayTracingShaderGroupHandleCaptureReplayKHR ) + result += " RayTracingShaderGroupHandleCaptureReplayKHR |"; + if ( value & PipelineCreateFlagBits::eDeferCompileNV ) + result += " DeferCompileNV |"; + if ( value & PipelineCreateFlagBits::eRenderingFragmentDensityMapAttachmentEXT ) + result += " RenderingFragmentDensityMapAttachmentEXT |"; + if ( value & PipelineCreateFlagBits::eRenderingFragmentShadingRateAttachmentKHR ) + result += " RenderingFragmentShadingRateAttachmentKHR |"; + if ( value & PipelineCreateFlagBits::eCaptureStatisticsKHR ) + result += " CaptureStatisticsKHR |"; + if ( value & PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR ) + result += " CaptureInternalRepresentationsKHR |"; + if ( value & PipelineCreateFlagBits::eIndirectBindableNV ) + result += " IndirectBindableNV |"; + if ( value & PipelineCreateFlagBits::eLibraryKHR ) + result += " LibraryKHR |"; + if ( value & PipelineCreateFlagBits::eDescriptorBufferEXT ) + result += " DescriptorBufferEXT |"; + if ( value & PipelineCreateFlagBits::eRetainLinkTimeOptimizationInfoEXT ) + result += " RetainLinkTimeOptimizationInfoEXT |"; + if ( value & PipelineCreateFlagBits::eLinkTimeOptimizationEXT ) + result += " LinkTimeOptimizationEXT |"; + if ( value & PipelineCreateFlagBits::eRayTracingAllowMotionNV ) + result += " RayTracingAllowMotionNV |"; + if ( value & PipelineCreateFlagBits::eColorAttachmentFeedbackLoopEXT ) + result += " ColorAttachmentFeedbackLoopEXT |"; + if ( value & PipelineCreateFlagBits::eDepthStencilAttachmentFeedbackLoopEXT ) + result += " DepthStencilAttachmentFeedbackLoopEXT |"; + if ( value & PipelineCreateFlagBits::eRayTracingOpacityMicromapEXT ) + result += " RayTracingOpacityMicromapEXT |"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & PipelineCreateFlagBits::eRayTracingDisplacementMicromapNV ) + result += " RayTracingDisplacementMicromapNV |"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PipelineLayoutCreateFlags value ) + { + std::string result = "{"; + if ( value & PipelineLayoutCreateFlagBits::eIndependentSetsEXT ) + result += " IndependentSetsEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PipelineShaderStageCreateFlags value ) + { + std::string result = "{"; + if ( value & PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSize ) + result += " AllowVaryingSubgroupSize |"; + if ( value & PipelineShaderStageCreateFlagBits::eRequireFullSubgroups ) + result += " RequireFullSubgroups |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( SamplerCreateFlags value ) + { + std::string result = "{"; + if ( value & SamplerCreateFlagBits::eSubsampledEXT ) + result += " SubsampledEXT |"; + if ( value & SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT ) + result += " SubsampledCoarseReconstructionEXT |"; + if ( value & SamplerCreateFlagBits::eDescriptorBufferCaptureReplayEXT ) + result += " DescriptorBufferCaptureReplayEXT |"; + if ( value & SamplerCreateFlagBits::eNonSeamlessCubeMapEXT ) + result += " NonSeamlessCubeMapEXT |"; + if ( value & SamplerCreateFlagBits::eImageProcessingQCOM ) + result += " ImageProcessingQCOM |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( DescriptorPoolCreateFlags value ) + { + std::string result = "{"; + if ( value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet ) + result += " FreeDescriptorSet |"; + if ( value & DescriptorPoolCreateFlagBits::eUpdateAfterBind ) + result += " UpdateAfterBind |"; + if ( value & DescriptorPoolCreateFlagBits::eHostOnlyEXT ) + result += " HostOnlyEXT |"; + if ( value & DescriptorPoolCreateFlagBits::eAllowOverallocationSetsNV ) + result += " AllowOverallocationSetsNV |"; + if ( value & DescriptorPoolCreateFlagBits::eAllowOverallocationPoolsNV ) + result += " AllowOverallocationPoolsNV |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DescriptorPoolResetFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( DescriptorSetLayoutCreateFlags value ) + { + std::string result = "{"; + if ( value & DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPool ) + result += " UpdateAfterBindPool |"; + if ( value & DescriptorSetLayoutCreateFlagBits::ePushDescriptor ) + result += " PushDescriptor |"; + if ( value & DescriptorSetLayoutCreateFlagBits::eDescriptorBufferEXT ) + result += " DescriptorBufferEXT |"; + if ( value & DescriptorSetLayoutCreateFlagBits::eEmbeddedImmutableSamplersEXT ) + result += " EmbeddedImmutableSamplersEXT |"; + if ( value & DescriptorSetLayoutCreateFlagBits::eIndirectBindableNV ) + result += " IndirectBindableNV |"; + if ( value & DescriptorSetLayoutCreateFlagBits::eHostOnlyPoolEXT ) + result += " HostOnlyPoolEXT |"; + if ( value & DescriptorSetLayoutCreateFlagBits::ePerStageNV ) + result += " PerStageNV |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ColorComponentFlags value ) + { + std::string result = "{"; + if ( value & ColorComponentFlagBits::eR ) + result += " R |"; + if ( value & ColorComponentFlagBits::eG ) + result += " G |"; + if ( value & ColorComponentFlagBits::eB ) + result += " B |"; + if ( value & ColorComponentFlagBits::eA ) + result += " A |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( CullModeFlags value ) + { + std::string result = "{"; + if ( value & CullModeFlagBits::eFront ) + result += " Front |"; + if ( value & CullModeFlagBits::eBack ) + result += " Back |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PipelineColorBlendStateCreateFlags value ) + { + std::string result = "{"; + if ( value & PipelineColorBlendStateCreateFlagBits::eRasterizationOrderAttachmentAccessEXT ) + result += " RasterizationOrderAttachmentAccessEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PipelineDepthStencilStateCreateFlags value ) + { + std::string result = "{"; + if ( value & PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentDepthAccessEXT ) + result += " RasterizationOrderAttachmentDepthAccessEXT |"; + if ( value & PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentStencilAccessEXT ) + result += " RasterizationOrderAttachmentStencilAccessEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineDynamicStateCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineInputAssemblyStateCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineMultisampleStateCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineRasterizationStateCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineTessellationStateCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineVertexInputStateCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineViewportStateCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( AttachmentDescriptionFlags value ) + { + std::string result = "{"; + if ( value & AttachmentDescriptionFlagBits::eMayAlias ) + result += " MayAlias |"; + if ( value & AttachmentDescriptionFlagBits::eResolveSkipTransferFunctionKHR ) + result += " ResolveSkipTransferFunctionKHR |"; + if ( value & AttachmentDescriptionFlagBits::eResolveEnableTransferFunctionKHR ) + result += " ResolveEnableTransferFunctionKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( FramebufferCreateFlags value ) + { + std::string result = "{"; + if ( value & FramebufferCreateFlagBits::eImageless ) + result += " Imageless |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( RenderPassCreateFlags value ) + { + std::string result = "{"; + if ( value & RenderPassCreateFlagBits::eTransformQCOM ) + result += " TransformQCOM |"; + if ( value & RenderPassCreateFlagBits::ePerLayerFragmentDensityVALVE ) + result += " PerLayerFragmentDensityVALVE |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( SubpassDescriptionFlags value ) + { + std::string result = "{"; + if ( value & SubpassDescriptionFlagBits::ePerViewAttributesNVX ) + result += " PerViewAttributesNVX |"; + if ( value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX ) + result += " PerViewPositionXOnlyNVX |"; + if ( value & SubpassDescriptionFlagBits::eTileShadingApronQCOM ) + result += " TileShadingApronQCOM |"; + if ( value & SubpassDescriptionFlagBits::eRasterizationOrderAttachmentColorAccessEXT ) + result += " RasterizationOrderAttachmentColorAccessEXT |"; + if ( value & SubpassDescriptionFlagBits::eRasterizationOrderAttachmentDepthAccessEXT ) + result += " RasterizationOrderAttachmentDepthAccessEXT |"; + if ( value & SubpassDescriptionFlagBits::eRasterizationOrderAttachmentStencilAccessEXT ) + result += " RasterizationOrderAttachmentStencilAccessEXT |"; + if ( value & SubpassDescriptionFlagBits::eEnableLegacyDitheringEXT ) + result += " EnableLegacyDitheringEXT |"; + if ( value & SubpassDescriptionFlagBits::eFragmentRegionEXT ) + result += " FragmentRegionEXT |"; + if ( value & SubpassDescriptionFlagBits::eCustomResolveEXT ) + result += " CustomResolveEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( StencilFaceFlags value ) + { + std::string result = "{"; + if ( value & StencilFaceFlagBits::eFront ) + result += " Front |"; + if ( value & StencilFaceFlagBits::eBack ) + result += " Back |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_VERSION_1_1 === + + VULKAN_HPP_INLINE std::string to_string( SubgroupFeatureFlags value ) + { + std::string result = "{"; + if ( value & SubgroupFeatureFlagBits::eBasic ) + result += " Basic |"; + if ( value & SubgroupFeatureFlagBits::eVote ) + result += " Vote |"; + if ( value & SubgroupFeatureFlagBits::eArithmetic ) + result += " Arithmetic |"; + if ( value & SubgroupFeatureFlagBits::eBallot ) + result += " Ballot |"; + if ( value & SubgroupFeatureFlagBits::eShuffle ) + result += " Shuffle |"; + if ( value & SubgroupFeatureFlagBits::eShuffleRelative ) + result += " ShuffleRelative |"; + if ( value & SubgroupFeatureFlagBits::eClustered ) + result += " Clustered |"; + if ( value & SubgroupFeatureFlagBits::eQuad ) + result += " Quad |"; + if ( value & SubgroupFeatureFlagBits::eRotate ) + result += " Rotate |"; + if ( value & SubgroupFeatureFlagBits::eRotateClustered ) + result += " RotateClustered |"; + if ( value & SubgroupFeatureFlagBits::ePartitionedEXT ) + result += " PartitionedEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PeerMemoryFeatureFlags value ) + { + std::string result = "{"; + if ( value & PeerMemoryFeatureFlagBits::eCopySrc ) + result += " CopySrc |"; + if ( value & PeerMemoryFeatureFlagBits::eCopyDst ) + result += " CopyDst |"; + if ( value & PeerMemoryFeatureFlagBits::eGenericSrc ) + result += " GenericSrc |"; + if ( value & PeerMemoryFeatureFlagBits::eGenericDst ) + result += " GenericDst |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( MemoryAllocateFlags value ) + { + std::string result = "{"; + if ( value & MemoryAllocateFlagBits::eDeviceMask ) + result += " DeviceMask |"; + if ( value & MemoryAllocateFlagBits::eDeviceAddress ) + result += " DeviceAddress |"; + if ( value & MemoryAllocateFlagBits::eDeviceAddressCaptureReplay ) + result += " DeviceAddressCaptureReplay |"; + if ( value & MemoryAllocateFlagBits::eZeroInitializeEXT ) + result += " ZeroInitializeEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CommandPoolTrimFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlags value ) + { + std::string result = "{"; + if ( value & ExternalMemoryHandleTypeFlagBits::eOpaqueFd ) + result += " OpaqueFd |"; + if ( value & ExternalMemoryHandleTypeFlagBits::eOpaqueWin32 ) + result += " OpaqueWin32 |"; + if ( value & ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt ) + result += " OpaqueWin32Kmt |"; + if ( value & ExternalMemoryHandleTypeFlagBits::eD3D11Texture ) + result += " D3D11Texture |"; + if ( value & ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt ) + result += " D3D11TextureKmt |"; + if ( value & ExternalMemoryHandleTypeFlagBits::eD3D12Heap ) + result += " D3D12Heap |"; + if ( value & ExternalMemoryHandleTypeFlagBits::eD3D12Resource ) + result += " D3D12Resource |"; + if ( value & ExternalMemoryHandleTypeFlagBits::eDmaBufEXT ) + result += " DmaBufEXT |"; +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + if ( value & ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID ) + result += " AndroidHardwareBufferANDROID |"; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + if ( value & ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT ) + result += " HostAllocationEXT |"; + if ( value & ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT ) + result += " HostMappedForeignMemoryEXT |"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + if ( value & ExternalMemoryHandleTypeFlagBits::eZirconVmoFUCHSIA ) + result += " ZirconVmoFUCHSIA |"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + if ( value & ExternalMemoryHandleTypeFlagBits::eRdmaAddressNV ) + result += " RdmaAddressNV |"; +#if defined( VK_USE_PLATFORM_OHOS ) + if ( value & ExternalMemoryHandleTypeFlagBits::eOhNativeBufferOHOS ) + result += " OhNativeBufferOHOS |"; +#endif /*VK_USE_PLATFORM_OHOS*/ +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + if ( value & ExternalMemoryHandleTypeFlagBits::eScreenBufferQNX ) + result += " ScreenBufferQNX |"; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + if ( value & ExternalMemoryHandleTypeFlagBits::eMtlbufferEXT ) + result += " MtlbufferEXT |"; + if ( value & ExternalMemoryHandleTypeFlagBits::eMtltextureEXT ) + result += " MtltextureEXT |"; + if ( value & ExternalMemoryHandleTypeFlagBits::eMtlheapEXT ) + result += " MtlheapEXT |"; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlags value ) + { + std::string result = "{"; + if ( value & ExternalMemoryFeatureFlagBits::eDedicatedOnly ) + result += " DedicatedOnly |"; + if ( value & ExternalMemoryFeatureFlagBits::eExportable ) + result += " Exportable |"; + if ( value & ExternalMemoryFeatureFlagBits::eImportable ) + result += " Importable |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ExternalFenceHandleTypeFlags value ) + { + std::string result = "{"; + if ( value & ExternalFenceHandleTypeFlagBits::eOpaqueFd ) + result += " OpaqueFd |"; + if ( value & ExternalFenceHandleTypeFlagBits::eOpaqueWin32 ) + result += " OpaqueWin32 |"; + if ( value & ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt ) + result += " OpaqueWin32Kmt |"; + if ( value & ExternalFenceHandleTypeFlagBits::eSyncFd ) + result += " SyncFd |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ExternalFenceFeatureFlags value ) + { + std::string result = "{"; + if ( value & ExternalFenceFeatureFlagBits::eExportable ) + result += " Exportable |"; + if ( value & ExternalFenceFeatureFlagBits::eImportable ) + result += " Importable |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( FenceImportFlags value ) + { + std::string result = "{"; + if ( value & FenceImportFlagBits::eTemporary ) + result += " Temporary |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( SemaphoreImportFlags value ) + { + std::string result = "{"; + if ( value & SemaphoreImportFlagBits::eTemporary ) + result += " Temporary |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreHandleTypeFlags value ) + { + std::string result = "{"; + if ( value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd ) + result += " OpaqueFd |"; + if ( value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32 ) + result += " OpaqueWin32 |"; + if ( value & ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt ) + result += " OpaqueWin32Kmt |"; + if ( value & ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence ) + result += " D3D12Fence |"; + if ( value & ExternalSemaphoreHandleTypeFlagBits::eSyncFd ) + result += " SyncFd |"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + if ( value & ExternalSemaphoreHandleTypeFlagBits::eZirconEventFUCHSIA ) + result += " ZirconEventFUCHSIA |"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreFeatureFlags value ) + { + std::string result = "{"; + if ( value & ExternalSemaphoreFeatureFlagBits::eExportable ) + result += " Exportable |"; + if ( value & ExternalSemaphoreFeatureFlagBits::eImportable ) + result += " Importable |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DescriptorUpdateTemplateCreateFlags ) + { + return "{}"; + } + + //=== VK_VERSION_1_2 === + + VULKAN_HPP_INLINE std::string to_string( ResolveModeFlags value ) + { + std::string result = "{"; + if ( value & ResolveModeFlagBits::eSampleZero ) + result += " SampleZero |"; + if ( value & ResolveModeFlagBits::eAverage ) + result += " Average |"; + if ( value & ResolveModeFlagBits::eMin ) + result += " Min |"; + if ( value & ResolveModeFlagBits::eMax ) + result += " Max |"; +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + if ( value & ResolveModeFlagBits::eExternalFormatDownsampleANDROID ) + result += " ExternalFormatDownsampleANDROID |"; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + if ( value & ResolveModeFlagBits::eCustomEXT ) + result += " CustomEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( SemaphoreWaitFlags value ) + { + std::string result = "{"; + if ( value & SemaphoreWaitFlagBits::eAny ) + result += " Any |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( DescriptorBindingFlags value ) + { + std::string result = "{"; + if ( value & DescriptorBindingFlagBits::eUpdateAfterBind ) + result += " UpdateAfterBind |"; + if ( value & DescriptorBindingFlagBits::eUpdateUnusedWhilePending ) + result += " UpdateUnusedWhilePending |"; + if ( value & DescriptorBindingFlagBits::ePartiallyBound ) + result += " PartiallyBound |"; + if ( value & DescriptorBindingFlagBits::eVariableDescriptorCount ) + result += " VariableDescriptorCount |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_VERSION_1_3 === + + VULKAN_HPP_INLINE std::string to_string( ToolPurposeFlags value ) + { + std::string result = "{"; + if ( value & ToolPurposeFlagBits::eValidation ) + result += " Validation |"; + if ( value & ToolPurposeFlagBits::eProfiling ) + result += " Profiling |"; + if ( value & ToolPurposeFlagBits::eTracing ) + result += " Tracing |"; + if ( value & ToolPurposeFlagBits::eAdditionalFeatures ) + result += " AdditionalFeatures |"; + if ( value & ToolPurposeFlagBits::eModifyingFeatures ) + result += " ModifyingFeatures |"; + if ( value & ToolPurposeFlagBits::eDebugReportingEXT ) + result += " DebugReportingEXT |"; + if ( value & ToolPurposeFlagBits::eDebugMarkersEXT ) + result += " DebugMarkersEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PrivateDataSlotCreateFlags ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( PipelineStageFlags2 value ) + { + std::string result = "{"; + if ( value & PipelineStageFlagBits2::eTopOfPipe ) + result += " TopOfPipe |"; + if ( value & PipelineStageFlagBits2::eDrawIndirect ) + result += " DrawIndirect |"; + if ( value & PipelineStageFlagBits2::eVertexInput ) + result += " VertexInput |"; + if ( value & PipelineStageFlagBits2::eVertexShader ) + result += " VertexShader |"; + if ( value & PipelineStageFlagBits2::eTessellationControlShader ) + result += " TessellationControlShader |"; + if ( value & PipelineStageFlagBits2::eTessellationEvaluationShader ) + result += " TessellationEvaluationShader |"; + if ( value & PipelineStageFlagBits2::eGeometryShader ) + result += " GeometryShader |"; + if ( value & PipelineStageFlagBits2::eFragmentShader ) + result += " FragmentShader |"; + if ( value & PipelineStageFlagBits2::eEarlyFragmentTests ) + result += " EarlyFragmentTests |"; + if ( value & PipelineStageFlagBits2::eLateFragmentTests ) + result += " LateFragmentTests |"; + if ( value & PipelineStageFlagBits2::eColorAttachmentOutput ) + result += " ColorAttachmentOutput |"; + if ( value & PipelineStageFlagBits2::eComputeShader ) + result += " ComputeShader |"; + if ( value & PipelineStageFlagBits2::eAllTransfer ) + result += " AllTransfer |"; + if ( value & PipelineStageFlagBits2::eBottomOfPipe ) + result += " BottomOfPipe |"; + if ( value & PipelineStageFlagBits2::eHost ) + result += " Host |"; + if ( value & PipelineStageFlagBits2::eAllGraphics ) + result += " AllGraphics |"; + if ( value & PipelineStageFlagBits2::eAllCommands ) + result += " AllCommands |"; + if ( value & PipelineStageFlagBits2::eCopy ) + result += " Copy |"; + if ( value & PipelineStageFlagBits2::eResolve ) + result += " Resolve |"; + if ( value & PipelineStageFlagBits2::eBlit ) + result += " Blit |"; + if ( value & PipelineStageFlagBits2::eClear ) + result += " Clear |"; + if ( value & PipelineStageFlagBits2::eIndexInput ) + result += " IndexInput |"; + if ( value & PipelineStageFlagBits2::eVertexAttributeInput ) + result += " VertexAttributeInput |"; + if ( value & PipelineStageFlagBits2::ePreRasterizationShaders ) + result += " PreRasterizationShaders |"; + if ( value & PipelineStageFlagBits2::eVideoDecodeKHR ) + result += " VideoDecodeKHR |"; + if ( value & PipelineStageFlagBits2::eVideoEncodeKHR ) + result += " VideoEncodeKHR |"; + if ( value & PipelineStageFlagBits2::eTransformFeedbackEXT ) + result += " TransformFeedbackEXT |"; + if ( value & PipelineStageFlagBits2::eConditionalRenderingEXT ) + result += " ConditionalRenderingEXT |"; + if ( value & PipelineStageFlagBits2::eCommandPreprocessEXT ) + result += " CommandPreprocessEXT |"; + if ( value & PipelineStageFlagBits2::eFragmentShadingRateAttachmentKHR ) + result += " FragmentShadingRateAttachmentKHR |"; + if ( value & PipelineStageFlagBits2::eAccelerationStructureBuildKHR ) + result += " AccelerationStructureBuildKHR |"; + if ( value & PipelineStageFlagBits2::eRayTracingShaderKHR ) + result += " RayTracingShaderKHR |"; + if ( value & PipelineStageFlagBits2::eFragmentDensityProcessEXT ) + result += " FragmentDensityProcessEXT |"; + if ( value & PipelineStageFlagBits2::eTaskShaderEXT ) + result += " TaskShaderEXT |"; + if ( value & PipelineStageFlagBits2::eMeshShaderEXT ) + result += " MeshShaderEXT |"; + if ( value & PipelineStageFlagBits2::eSubpassShaderHUAWEI ) + result += " SubpassShaderHUAWEI |"; + if ( value & PipelineStageFlagBits2::eInvocationMaskHUAWEI ) + result += " InvocationMaskHUAWEI |"; + if ( value & PipelineStageFlagBits2::eAccelerationStructureCopyKHR ) + result += " AccelerationStructureCopyKHR |"; + if ( value & PipelineStageFlagBits2::eMicromapBuildEXT ) + result += " MicromapBuildEXT |"; + if ( value & PipelineStageFlagBits2::eClusterCullingShaderHUAWEI ) + result += " ClusterCullingShaderHUAWEI |"; + if ( value & PipelineStageFlagBits2::eOpticalFlowNV ) + result += " OpticalFlowNV |"; + if ( value & PipelineStageFlagBits2::eConvertCooperativeVectorMatrixNV ) + result += " ConvertCooperativeVectorMatrixNV |"; + if ( value & PipelineStageFlagBits2::eDataGraphARM ) + result += " DataGraphARM |"; + if ( value & PipelineStageFlagBits2::eCopyIndirectKHR ) + result += " CopyIndirectKHR |"; + if ( value & PipelineStageFlagBits2::eMemoryDecompressionEXT ) + result += " MemoryDecompressionEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( AccessFlags2 value ) + { + std::string result = "{"; + if ( value & AccessFlagBits2::eIndirectCommandRead ) + result += " IndirectCommandRead |"; + if ( value & AccessFlagBits2::eIndexRead ) + result += " IndexRead |"; + if ( value & AccessFlagBits2::eVertexAttributeRead ) + result += " VertexAttributeRead |"; + if ( value & AccessFlagBits2::eUniformRead ) + result += " UniformRead |"; + if ( value & AccessFlagBits2::eInputAttachmentRead ) + result += " InputAttachmentRead |"; + if ( value & AccessFlagBits2::eShaderRead ) + result += " ShaderRead |"; + if ( value & AccessFlagBits2::eShaderWrite ) + result += " ShaderWrite |"; + if ( value & AccessFlagBits2::eColorAttachmentRead ) + result += " ColorAttachmentRead |"; + if ( value & AccessFlagBits2::eColorAttachmentWrite ) + result += " ColorAttachmentWrite |"; + if ( value & AccessFlagBits2::eDepthStencilAttachmentRead ) + result += " DepthStencilAttachmentRead |"; + if ( value & AccessFlagBits2::eDepthStencilAttachmentWrite ) + result += " DepthStencilAttachmentWrite |"; + if ( value & AccessFlagBits2::eTransferRead ) + result += " TransferRead |"; + if ( value & AccessFlagBits2::eTransferWrite ) + result += " TransferWrite |"; + if ( value & AccessFlagBits2::eHostRead ) + result += " HostRead |"; + if ( value & AccessFlagBits2::eHostWrite ) + result += " HostWrite |"; + if ( value & AccessFlagBits2::eMemoryRead ) + result += " MemoryRead |"; + if ( value & AccessFlagBits2::eMemoryWrite ) + result += " MemoryWrite |"; + if ( value & AccessFlagBits2::eShaderSampledRead ) + result += " ShaderSampledRead |"; + if ( value & AccessFlagBits2::eShaderStorageRead ) + result += " ShaderStorageRead |"; + if ( value & AccessFlagBits2::eShaderStorageWrite ) + result += " ShaderStorageWrite |"; + if ( value & AccessFlagBits2::eVideoDecodeReadKHR ) + result += " VideoDecodeReadKHR |"; + if ( value & AccessFlagBits2::eVideoDecodeWriteKHR ) + result += " VideoDecodeWriteKHR |"; + if ( value & AccessFlagBits2::eSamplerHeapReadEXT ) + result += " SamplerHeapReadEXT |"; + if ( value & AccessFlagBits2::eResourceHeapReadEXT ) + result += " ResourceHeapReadEXT |"; + if ( value & AccessFlagBits2::eVideoEncodeReadKHR ) + result += " VideoEncodeReadKHR |"; + if ( value & AccessFlagBits2::eVideoEncodeWriteKHR ) + result += " VideoEncodeWriteKHR |"; + if ( value & AccessFlagBits2::eShaderTileAttachmentReadQCOM ) + result += " ShaderTileAttachmentReadQCOM |"; + if ( value & AccessFlagBits2::eShaderTileAttachmentWriteQCOM ) + result += " ShaderTileAttachmentWriteQCOM |"; + if ( value & AccessFlagBits2::eTransformFeedbackWriteEXT ) + result += " TransformFeedbackWriteEXT |"; + if ( value & AccessFlagBits2::eTransformFeedbackCounterReadEXT ) + result += " TransformFeedbackCounterReadEXT |"; + if ( value & AccessFlagBits2::eTransformFeedbackCounterWriteEXT ) + result += " TransformFeedbackCounterWriteEXT |"; + if ( value & AccessFlagBits2::eConditionalRenderingReadEXT ) + result += " ConditionalRenderingReadEXT |"; + if ( value & AccessFlagBits2::eCommandPreprocessReadEXT ) + result += " CommandPreprocessReadEXT |"; + if ( value & AccessFlagBits2::eCommandPreprocessWriteEXT ) + result += " CommandPreprocessWriteEXT |"; + if ( value & AccessFlagBits2::eFragmentShadingRateAttachmentReadKHR ) + result += " FragmentShadingRateAttachmentReadKHR |"; + if ( value & AccessFlagBits2::eAccelerationStructureReadKHR ) + result += " AccelerationStructureReadKHR |"; + if ( value & AccessFlagBits2::eAccelerationStructureWriteKHR ) + result += " AccelerationStructureWriteKHR |"; + if ( value & AccessFlagBits2::eFragmentDensityMapReadEXT ) + result += " FragmentDensityMapReadEXT |"; + if ( value & AccessFlagBits2::eColorAttachmentReadNoncoherentEXT ) + result += " ColorAttachmentReadNoncoherentEXT |"; + if ( value & AccessFlagBits2::eDescriptorBufferReadEXT ) + result += " DescriptorBufferReadEXT |"; + if ( value & AccessFlagBits2::eInvocationMaskReadHUAWEI ) + result += " InvocationMaskReadHUAWEI |"; + if ( value & AccessFlagBits2::eShaderBindingTableReadKHR ) + result += " ShaderBindingTableReadKHR |"; + if ( value & AccessFlagBits2::eMicromapReadEXT ) + result += " MicromapReadEXT |"; + if ( value & AccessFlagBits2::eMicromapWriteEXT ) + result += " MicromapWriteEXT |"; + if ( value & AccessFlagBits2::eOpticalFlowReadNV ) + result += " OpticalFlowReadNV |"; + if ( value & AccessFlagBits2::eOpticalFlowWriteNV ) + result += " OpticalFlowWriteNV |"; + if ( value & AccessFlagBits2::eDataGraphReadARM ) + result += " DataGraphReadARM |"; + if ( value & AccessFlagBits2::eDataGraphWriteARM ) + result += " DataGraphWriteARM |"; + if ( value & AccessFlagBits2::eMemoryDecompressionReadEXT ) + result += " MemoryDecompressionReadEXT |"; + if ( value & AccessFlagBits2::eMemoryDecompressionWriteEXT ) + result += " MemoryDecompressionWriteEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( SubmitFlags value ) + { + std::string result = "{"; + if ( value & SubmitFlagBits::eProtected ) + result += " Protected |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( FormatFeatureFlags2 value ) + { + std::string result = "{"; + if ( value & FormatFeatureFlagBits2::eSampledImage ) + result += " SampledImage |"; + if ( value & FormatFeatureFlagBits2::eStorageImage ) + result += " StorageImage |"; + if ( value & FormatFeatureFlagBits2::eStorageImageAtomic ) + result += " StorageImageAtomic |"; + if ( value & FormatFeatureFlagBits2::eUniformTexelBuffer ) + result += " UniformTexelBuffer |"; + if ( value & FormatFeatureFlagBits2::eStorageTexelBuffer ) + result += " StorageTexelBuffer |"; + if ( value & FormatFeatureFlagBits2::eStorageTexelBufferAtomic ) + result += " StorageTexelBufferAtomic |"; + if ( value & FormatFeatureFlagBits2::eVertexBuffer ) + result += " VertexBuffer |"; + if ( value & FormatFeatureFlagBits2::eColorAttachment ) + result += " ColorAttachment |"; + if ( value & FormatFeatureFlagBits2::eColorAttachmentBlend ) + result += " ColorAttachmentBlend |"; + if ( value & FormatFeatureFlagBits2::eDepthStencilAttachment ) + result += " DepthStencilAttachment |"; + if ( value & FormatFeatureFlagBits2::eBlitSrc ) + result += " BlitSrc |"; + if ( value & FormatFeatureFlagBits2::eBlitDst ) + result += " BlitDst |"; + if ( value & FormatFeatureFlagBits2::eSampledImageFilterLinear ) + result += " SampledImageFilterLinear |"; + if ( value & FormatFeatureFlagBits2::eTransferSrc ) + result += " TransferSrc |"; + if ( value & FormatFeatureFlagBits2::eTransferDst ) + result += " TransferDst |"; + if ( value & FormatFeatureFlagBits2::eSampledImageFilterMinmax ) + result += " SampledImageFilterMinmax |"; + if ( value & FormatFeatureFlagBits2::eMidpointChromaSamples ) + result += " MidpointChromaSamples |"; + if ( value & FormatFeatureFlagBits2::eSampledImageYcbcrConversionLinearFilter ) + result += " SampledImageYcbcrConversionLinearFilter |"; + if ( value & FormatFeatureFlagBits2::eSampledImageYcbcrConversionSeparateReconstructionFilter ) + result += " SampledImageYcbcrConversionSeparateReconstructionFilter |"; + if ( value & FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicit ) + result += " SampledImageYcbcrConversionChromaReconstructionExplicit |"; + if ( value & FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable ) + result += " SampledImageYcbcrConversionChromaReconstructionExplicitForceable |"; + if ( value & FormatFeatureFlagBits2::eDisjoint ) + result += " Disjoint |"; + if ( value & FormatFeatureFlagBits2::eCositedChromaSamples ) + result += " CositedChromaSamples |"; + if ( value & FormatFeatureFlagBits2::eStorageReadWithoutFormat ) + result += " StorageReadWithoutFormat |"; + if ( value & FormatFeatureFlagBits2::eStorageWriteWithoutFormat ) + result += " StorageWriteWithoutFormat |"; + if ( value & FormatFeatureFlagBits2::eSampledImageDepthComparison ) + result += " SampledImageDepthComparison |"; + if ( value & FormatFeatureFlagBits2::eSampledImageFilterCubic ) + result += " SampledImageFilterCubic |"; + if ( value & FormatFeatureFlagBits2::eHostImageTransfer ) + result += " HostImageTransfer |"; + if ( value & FormatFeatureFlagBits2::eVideoDecodeOutputKHR ) + result += " VideoDecodeOutputKHR |"; + if ( value & FormatFeatureFlagBits2::eVideoDecodeDpbKHR ) + result += " VideoDecodeDpbKHR |"; + if ( value & FormatFeatureFlagBits2::eAccelerationStructureVertexBufferKHR ) + result += " AccelerationStructureVertexBufferKHR |"; + if ( value & FormatFeatureFlagBits2::eFragmentDensityMapEXT ) + result += " FragmentDensityMapEXT |"; + if ( value & FormatFeatureFlagBits2::eFragmentShadingRateAttachmentKHR ) + result += " FragmentShadingRateAttachmentKHR |"; + if ( value & FormatFeatureFlagBits2::eVideoEncodeInputKHR ) + result += " VideoEncodeInputKHR |"; + if ( value & FormatFeatureFlagBits2::eVideoEncodeDpbKHR ) + result += " VideoEncodeDpbKHR |"; + if ( value & FormatFeatureFlagBits2::eAccelerationStructureRadiusBufferNV ) + result += " AccelerationStructureRadiusBufferNV |"; + if ( value & FormatFeatureFlagBits2::eLinearColorAttachmentNV ) + result += " LinearColorAttachmentNV |"; + if ( value & FormatFeatureFlagBits2::eWeightImageQCOM ) + result += " WeightImageQCOM |"; + if ( value & FormatFeatureFlagBits2::eWeightSampledImageQCOM ) + result += " WeightSampledImageQCOM |"; + if ( value & FormatFeatureFlagBits2::eBlockMatchingQCOM ) + result += " BlockMatchingQCOM |"; + if ( value & FormatFeatureFlagBits2::eBoxFilterSampledQCOM ) + result += " BoxFilterSampledQCOM |"; + if ( value & FormatFeatureFlagBits2::eTensorShaderARM ) + result += " TensorShaderARM |"; + if ( value & FormatFeatureFlagBits2::eTensorImageAliasingARM ) + result += " TensorImageAliasingARM |"; + if ( value & FormatFeatureFlagBits2::eOpticalFlowImageNV ) + result += " OpticalFlowImageNV |"; + if ( value & FormatFeatureFlagBits2::eOpticalFlowVectorNV ) + result += " OpticalFlowVectorNV |"; + if ( value & FormatFeatureFlagBits2::eOpticalFlowCostNV ) + result += " OpticalFlowCostNV |"; + if ( value & FormatFeatureFlagBits2::eTensorDataGraphARM ) + result += " TensorDataGraphARM |"; + if ( value & FormatFeatureFlagBits2::eCopyImageIndirectDstKHR ) + result += " CopyImageIndirectDstKHR |"; + if ( value & FormatFeatureFlagBits2::eVideoEncodeQuantizationDeltaMapKHR ) + result += " VideoEncodeQuantizationDeltaMapKHR |"; + if ( value & FormatFeatureFlagBits2::eVideoEncodeEmphasisMapKHR ) + result += " VideoEncodeEmphasisMapKHR |"; + if ( value & FormatFeatureFlagBits2::eDepthCopyOnComputeQueueKHR ) + result += " DepthCopyOnComputeQueueKHR |"; + if ( value & FormatFeatureFlagBits2::eDepthCopyOnTransferQueueKHR ) + result += " DepthCopyOnTransferQueueKHR |"; + if ( value & FormatFeatureFlagBits2::eStencilCopyOnComputeQueueKHR ) + result += " StencilCopyOnComputeQueueKHR |"; + if ( value & FormatFeatureFlagBits2::eStencilCopyOnTransferQueueKHR ) + result += " StencilCopyOnTransferQueueKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PipelineCreationFeedbackFlags value ) + { + std::string result = "{"; + if ( value & PipelineCreationFeedbackFlagBits::eValid ) + result += " Valid |"; + if ( value & PipelineCreationFeedbackFlagBits::eApplicationPipelineCacheHit ) + result += " ApplicationPipelineCacheHit |"; + if ( value & PipelineCreationFeedbackFlagBits::eBasePipelineAcceleration ) + result += " BasePipelineAcceleration |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( RenderingFlags value ) + { + std::string result = "{"; + if ( value & RenderingFlagBits::eContentsSecondaryCommandBuffers ) + result += " ContentsSecondaryCommandBuffers |"; + if ( value & RenderingFlagBits::eSuspending ) + result += " Suspending |"; + if ( value & RenderingFlagBits::eResuming ) + result += " Resuming |"; + if ( value & RenderingFlagBits::eEnableLegacyDitheringEXT ) + result += " EnableLegacyDitheringEXT |"; + if ( value & RenderingFlagBits::eContentsInlineKHR ) + result += " ContentsInlineKHR |"; + if ( value & RenderingFlagBits::ePerLayerFragmentDensityVALVE ) + result += " PerLayerFragmentDensityVALVE |"; + if ( value & RenderingFlagBits::eFragmentRegionEXT ) + result += " FragmentRegionEXT |"; + if ( value & RenderingFlagBits::eCustomResolveEXT ) + result += " CustomResolveEXT |"; + if ( value & RenderingFlagBits::eLocalReadConcurrentAccessControlKHR ) + result += " LocalReadConcurrentAccessControlKHR |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_VERSION_1_4 === + + VULKAN_HPP_INLINE std::string to_string( MemoryUnmapFlags value ) + { + std::string result = "{"; + if ( value & MemoryUnmapFlagBits::eReserveEXT ) + result += " ReserveEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( BufferUsageFlags2 value ) + { + std::string result = "{"; + if ( value & BufferUsageFlagBits2::eTransferSrc ) + result += " TransferSrc |"; + if ( value & BufferUsageFlagBits2::eTransferDst ) + result += " TransferDst |"; + if ( value & BufferUsageFlagBits2::eUniformTexelBuffer ) + result += " UniformTexelBuffer |"; + if ( value & BufferUsageFlagBits2::eStorageTexelBuffer ) + result += " StorageTexelBuffer |"; + if ( value & BufferUsageFlagBits2::eUniformBuffer ) + result += " UniformBuffer |"; + if ( value & BufferUsageFlagBits2::eStorageBuffer ) + result += " StorageBuffer |"; + if ( value & BufferUsageFlagBits2::eIndexBuffer ) + result += " IndexBuffer |"; + if ( value & BufferUsageFlagBits2::eVertexBuffer ) + result += " VertexBuffer |"; + if ( value & BufferUsageFlagBits2::eIndirectBuffer ) + result += " IndirectBuffer |"; + if ( value & BufferUsageFlagBits2::eShaderDeviceAddress ) + result += " ShaderDeviceAddress |"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & BufferUsageFlagBits2::eExecutionGraphScratchAMDX ) + result += " ExecutionGraphScratchAMDX |"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & BufferUsageFlagBits2::eDescriptorHeapEXT ) + result += " DescriptorHeapEXT |"; + if ( value & BufferUsageFlagBits2::eConditionalRenderingEXT ) + result += " ConditionalRenderingEXT |"; + if ( value & BufferUsageFlagBits2::eShaderBindingTableKHR ) + result += " ShaderBindingTableKHR |"; + if ( value & BufferUsageFlagBits2::eTransformFeedbackBufferEXT ) + result += " TransformFeedbackBufferEXT |"; + if ( value & BufferUsageFlagBits2::eTransformFeedbackCounterBufferEXT ) + result += " TransformFeedbackCounterBufferEXT |"; + if ( value & BufferUsageFlagBits2::eVideoDecodeSrcKHR ) + result += " VideoDecodeSrcKHR |"; + if ( value & BufferUsageFlagBits2::eVideoDecodeDstKHR ) + result += " VideoDecodeDstKHR |"; + if ( value & BufferUsageFlagBits2::eVideoEncodeDstKHR ) + result += " VideoEncodeDstKHR |"; + if ( value & BufferUsageFlagBits2::eVideoEncodeSrcKHR ) + result += " VideoEncodeSrcKHR |"; + if ( value & BufferUsageFlagBits2::eAccelerationStructureBuildInputReadOnlyKHR ) + result += " AccelerationStructureBuildInputReadOnlyKHR |"; + if ( value & BufferUsageFlagBits2::eAccelerationStructureStorageKHR ) + result += " AccelerationStructureStorageKHR |"; + if ( value & BufferUsageFlagBits2::eSamplerDescriptorBufferEXT ) + result += " SamplerDescriptorBufferEXT |"; + if ( value & BufferUsageFlagBits2::eResourceDescriptorBufferEXT ) + result += " ResourceDescriptorBufferEXT |"; + if ( value & BufferUsageFlagBits2::ePushDescriptorsDescriptorBufferEXT ) + result += " PushDescriptorsDescriptorBufferEXT |"; + if ( value & BufferUsageFlagBits2::eMicromapBuildInputReadOnlyEXT ) + result += " MicromapBuildInputReadOnlyEXT |"; + if ( value & BufferUsageFlagBits2::eMicromapStorageEXT ) + result += " MicromapStorageEXT |"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & BufferUsageFlagBits2::eCompressedDataDgf1AMDX ) + result += " CompressedDataDgf1AMDX |"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & BufferUsageFlagBits2::eDataGraphForeignDescriptorARM ) + result += " DataGraphForeignDescriptorARM |"; + if ( value & BufferUsageFlagBits2::eTileMemoryQCOM ) + result += " TileMemoryQCOM |"; + if ( value & BufferUsageFlagBits2::eMemoryDecompressionEXT ) + result += " MemoryDecompressionEXT |"; + if ( value & BufferUsageFlagBits2::ePreprocessBufferEXT ) + result += " PreprocessBufferEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( HostImageCopyFlags value ) + { + std::string result = "{"; + if ( value & HostImageCopyFlagBits::eMemcpy ) + result += " Memcpy |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PipelineCreateFlags2 value ) + { + std::string result = "{"; + if ( value & PipelineCreateFlagBits2::eDisableOptimization ) + result += " DisableOptimization |"; + if ( value & PipelineCreateFlagBits2::eAllowDerivatives ) + result += " AllowDerivatives |"; + if ( value & PipelineCreateFlagBits2::eDerivative ) + result += " Derivative |"; + if ( value & PipelineCreateFlagBits2::eViewIndexFromDeviceIndex ) + result += " ViewIndexFromDeviceIndex |"; + if ( value & PipelineCreateFlagBits2::eDispatchBase ) + result += " DispatchBase |"; + if ( value & PipelineCreateFlagBits2::eFailOnPipelineCompileRequired ) + result += " FailOnPipelineCompileRequired |"; + if ( value & PipelineCreateFlagBits2::eEarlyReturnOnFailure ) + result += " EarlyReturnOnFailure |"; + if ( value & PipelineCreateFlagBits2::eNoProtectedAccess ) + result += " NoProtectedAccess |"; + if ( value & PipelineCreateFlagBits2::eProtectedAccessOnly ) + result += " ProtectedAccessOnly |"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & PipelineCreateFlagBits2::eExecutionGraphAMDX ) + result += " ExecutionGraphAMDX |"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & PipelineCreateFlagBits2::eDescriptorHeapEXT ) + result += " DescriptorHeapEXT |"; + if ( value & PipelineCreateFlagBits2::eRayTracingAllowSpheresAndLinearSweptSpheresNV ) + result += " RayTracingAllowSpheresAndLinearSweptSpheresNV |"; + if ( value & PipelineCreateFlagBits2::eEnableLegacyDitheringEXT ) + result += " EnableLegacyDitheringEXT |"; + if ( value & PipelineCreateFlagBits2::eDeferCompileNV ) + result += " DeferCompileNV |"; + if ( value & PipelineCreateFlagBits2::eCaptureStatisticsKHR ) + result += " CaptureStatisticsKHR |"; + if ( value & PipelineCreateFlagBits2::eCaptureInternalRepresentationsKHR ) + result += " CaptureInternalRepresentationsKHR |"; + if ( value & PipelineCreateFlagBits2::eLinkTimeOptimizationEXT ) + result += " LinkTimeOptimizationEXT |"; + if ( value & PipelineCreateFlagBits2::eRetainLinkTimeOptimizationInfoEXT ) + result += " RetainLinkTimeOptimizationInfoEXT |"; + if ( value & PipelineCreateFlagBits2::eLibraryKHR ) + result += " LibraryKHR |"; + if ( value & PipelineCreateFlagBits2::eRayTracingSkipTrianglesKHR ) + result += " RayTracingSkipTrianglesKHR |"; + if ( value & PipelineCreateFlagBits2::eRayTracingSkipAabbsKHR ) + result += " RayTracingSkipAabbsKHR |"; + if ( value & PipelineCreateFlagBits2::eRayTracingNoNullAnyHitShadersKHR ) + result += " RayTracingNoNullAnyHitShadersKHR |"; + if ( value & PipelineCreateFlagBits2::eRayTracingNoNullClosestHitShadersKHR ) + result += " RayTracingNoNullClosestHitShadersKHR |"; + if ( value & PipelineCreateFlagBits2::eRayTracingNoNullMissShadersKHR ) + result += " RayTracingNoNullMissShadersKHR |"; + if ( value & PipelineCreateFlagBits2::eRayTracingNoNullIntersectionShadersKHR ) + result += " RayTracingNoNullIntersectionShadersKHR |"; + if ( value & PipelineCreateFlagBits2::eRayTracingShaderGroupHandleCaptureReplayKHR ) + result += " RayTracingShaderGroupHandleCaptureReplayKHR |"; + if ( value & PipelineCreateFlagBits2::eIndirectBindableNV ) + result += " IndirectBindableNV |"; + if ( value & PipelineCreateFlagBits2::eRayTracingAllowMotionNV ) + result += " RayTracingAllowMotionNV |"; + if ( value & PipelineCreateFlagBits2::eRenderingFragmentShadingRateAttachmentKHR ) + result += " RenderingFragmentShadingRateAttachmentKHR |"; + if ( value & PipelineCreateFlagBits2::eRenderingFragmentDensityMapAttachmentEXT ) + result += " RenderingFragmentDensityMapAttachmentEXT |"; + if ( value & PipelineCreateFlagBits2::eRayTracingOpacityMicromapEXT ) + result += " RayTracingOpacityMicromapEXT |"; + if ( value & PipelineCreateFlagBits2::eColorAttachmentFeedbackLoopEXT ) + result += " ColorAttachmentFeedbackLoopEXT |"; + if ( value & PipelineCreateFlagBits2::eDepthStencilAttachmentFeedbackLoopEXT ) + result += " DepthStencilAttachmentFeedbackLoopEXT |"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & PipelineCreateFlagBits2::eRayTracingDisplacementMicromapNV ) + result += " RayTracingDisplacementMicromapNV |"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & PipelineCreateFlagBits2::eDescriptorBufferEXT ) + result += " DescriptorBufferEXT |"; + if ( value & PipelineCreateFlagBits2::eDisallowOpacityMicromapARM ) + result += " DisallowOpacityMicromapARM |"; + if ( value & PipelineCreateFlagBits2::eInstrumentShadersARM ) + result += " InstrumentShadersARM |"; + if ( value & PipelineCreateFlagBits2::eCaptureDataKHR ) + result += " CaptureDataKHR |"; + if ( value & PipelineCreateFlagBits2::eIndirectBindableEXT ) + result += " IndirectBindableEXT |"; + if ( value & PipelineCreateFlagBits2::ePerLayerFragmentDensityVALVE ) + result += " PerLayerFragmentDensityVALVE |"; + if ( value & PipelineCreateFlagBits2::e64BitIndexingEXT ) + result += " 64BitIndexingEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_surface === + + VULKAN_HPP_INLINE std::string to_string( CompositeAlphaFlagsKHR value ) + { + std::string result = "{"; + if ( value & CompositeAlphaFlagBitsKHR::eOpaque ) + result += " Opaque |"; + if ( value & CompositeAlphaFlagBitsKHR::ePreMultiplied ) + result += " PreMultiplied |"; + if ( value & CompositeAlphaFlagBitsKHR::ePostMultiplied ) + result += " PostMultiplied |"; + if ( value & CompositeAlphaFlagBitsKHR::eInherit ) + result += " Inherit |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_swapchain === + + VULKAN_HPP_INLINE std::string to_string( SwapchainCreateFlagsKHR value ) + { + std::string result = "{"; + if ( value & SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions ) + result += " SplitInstanceBindRegions |"; + if ( value & SwapchainCreateFlagBitsKHR::eProtected ) + result += " Protected |"; + if ( value & SwapchainCreateFlagBitsKHR::eMutableFormat ) + result += " MutableFormat |"; + if ( value & SwapchainCreateFlagBitsKHR::ePresentTimingEXT ) + result += " PresentTimingEXT |"; + if ( value & SwapchainCreateFlagBitsKHR::ePresentId2 ) + result += " PresentId2 |"; + if ( value & SwapchainCreateFlagBitsKHR::ePresentWait2 ) + result += " PresentWait2 |"; + if ( value & SwapchainCreateFlagBitsKHR::eDeferredMemoryAllocation ) + result += " DeferredMemoryAllocation |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( DeviceGroupPresentModeFlagsKHR value ) + { + std::string result = "{"; + if ( value & DeviceGroupPresentModeFlagBitsKHR::eLocal ) + result += " Local |"; + if ( value & DeviceGroupPresentModeFlagBitsKHR::eRemote ) + result += " Remote |"; + if ( value & DeviceGroupPresentModeFlagBitsKHR::eSum ) + result += " Sum |"; + if ( value & DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice ) + result += " LocalMultiDevice |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_display === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DisplayModeCreateFlagsKHR ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( DisplayPlaneAlphaFlagsKHR value ) + { + std::string result = "{"; + if ( value & DisplayPlaneAlphaFlagBitsKHR::eOpaque ) + result += " Opaque |"; + if ( value & DisplayPlaneAlphaFlagBitsKHR::eGlobal ) + result += " Global |"; + if ( value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel ) + result += " PerPixel |"; + if ( value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied ) + result += " PerPixelPremultiplied |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DisplaySurfaceCreateFlagsKHR ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( SurfaceTransformFlagsKHR value ) + { + std::string result = "{"; + if ( value & SurfaceTransformFlagBitsKHR::eIdentity ) + result += " Identity |"; + if ( value & SurfaceTransformFlagBitsKHR::eRotate90 ) + result += " Rotate90 |"; + if ( value & SurfaceTransformFlagBitsKHR::eRotate180 ) + result += " Rotate180 |"; + if ( value & SurfaceTransformFlagBitsKHR::eRotate270 ) + result += " Rotate270 |"; + if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirror ) + result += " HorizontalMirror |"; + if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90 ) + result += " HorizontalMirrorRotate90 |"; + if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180 ) + result += " HorizontalMirrorRotate180 |"; + if ( value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270 ) + result += " HorizontalMirrorRotate270 |"; + if ( value & SurfaceTransformFlagBitsKHR::eInherit ) + result += " Inherit |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( XlibSurfaceCreateFlagsKHR ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( XcbSurfaceCreateFlagsKHR ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( WaylandSurfaceCreateFlagsKHR ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AndroidSurfaceCreateFlagsKHR ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( Win32SurfaceCreateFlagsKHR ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + VULKAN_HPP_INLINE std::string to_string( DebugReportFlagsEXT value ) + { + std::string result = "{"; + if ( value & DebugReportFlagBitsEXT::eInformation ) + result += " Information |"; + if ( value & DebugReportFlagBitsEXT::eWarning ) + result += " Warning |"; + if ( value & DebugReportFlagBitsEXT::ePerformanceWarning ) + result += " PerformanceWarning |"; + if ( value & DebugReportFlagBitsEXT::eError ) + result += " Error |"; + if ( value & DebugReportFlagBitsEXT::eDebug ) + result += " Debug |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_video_queue === + + VULKAN_HPP_INLINE std::string to_string( VideoCodecOperationFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoCodecOperationFlagBitsKHR::eEncodeH264 ) + result += " EncodeH264 |"; + if ( value & VideoCodecOperationFlagBitsKHR::eEncodeH265 ) + result += " EncodeH265 |"; + if ( value & VideoCodecOperationFlagBitsKHR::eDecodeH264 ) + result += " DecodeH264 |"; + if ( value & VideoCodecOperationFlagBitsKHR::eDecodeH265 ) + result += " DecodeH265 |"; + if ( value & VideoCodecOperationFlagBitsKHR::eDecodeAv1 ) + result += " DecodeAv1 |"; + if ( value & VideoCodecOperationFlagBitsKHR::eEncodeAv1 ) + result += " EncodeAv1 |"; + if ( value & VideoCodecOperationFlagBitsKHR::eDecodeVp9 ) + result += " DecodeVp9 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoChromaSubsamplingFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoChromaSubsamplingFlagBitsKHR::eMonochrome ) + result += " Monochrome |"; + if ( value & VideoChromaSubsamplingFlagBitsKHR::e420 ) + result += " 420 |"; + if ( value & VideoChromaSubsamplingFlagBitsKHR::e422 ) + result += " 422 |"; + if ( value & VideoChromaSubsamplingFlagBitsKHR::e444 ) + result += " 444 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "Invalid"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoComponentBitDepthFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoComponentBitDepthFlagBitsKHR::e8 ) + result += " 8 |"; + if ( value & VideoComponentBitDepthFlagBitsKHR::e10 ) + result += " 10 |"; + if ( value & VideoComponentBitDepthFlagBitsKHR::e12 ) + result += " 12 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "Invalid"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoCapabilityFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoCapabilityFlagBitsKHR::eProtectedContent ) + result += " ProtectedContent |"; + if ( value & VideoCapabilityFlagBitsKHR::eSeparateReferenceImages ) + result += " SeparateReferenceImages |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoSessionCreateFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoSessionCreateFlagBitsKHR::eProtectedContent ) + result += " ProtectedContent |"; + if ( value & VideoSessionCreateFlagBitsKHR::eAllowEncodeParameterOptimizations ) + result += " AllowEncodeParameterOptimizations |"; + if ( value & VideoSessionCreateFlagBitsKHR::eInlineQueries ) + result += " InlineQueries |"; + if ( value & VideoSessionCreateFlagBitsKHR::eAllowEncodeQuantizationDeltaMap ) + result += " AllowEncodeQuantizationDeltaMap |"; + if ( value & VideoSessionCreateFlagBitsKHR::eAllowEncodeEmphasisMap ) + result += " AllowEncodeEmphasisMap |"; + if ( value & VideoSessionCreateFlagBitsKHR::eInlineSessionParameters ) + result += " InlineSessionParameters |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoSessionParametersCreateFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoSessionParametersCreateFlagBitsKHR::eQuantizationMapCompatible ) + result += " QuantizationMapCompatible |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoBeginCodingFlagsKHR ) + { + return "{}"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEndCodingFlagsKHR ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( VideoCodingControlFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoCodingControlFlagBitsKHR::eReset ) + result += " Reset |"; + if ( value & VideoCodingControlFlagBitsKHR::eEncodeRateControl ) + result += " EncodeRateControl |"; + if ( value & VideoCodingControlFlagBitsKHR::eEncodeQualityLevel ) + result += " EncodeQualityLevel |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_video_decode_queue === + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeCapabilityFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoDecodeCapabilityFlagBitsKHR::eDpbAndOutputCoincide ) + result += " DpbAndOutputCoincide |"; + if ( value & VideoDecodeCapabilityFlagBitsKHR::eDpbAndOutputDistinct ) + result += " DpbAndOutputDistinct |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeUsageFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoDecodeUsageFlagBitsKHR::eTranscoding ) + result += " Transcoding |"; + if ( value & VideoDecodeUsageFlagBitsKHR::eOffline ) + result += " Offline |"; + if ( value & VideoDecodeUsageFlagBitsKHR::eStreaming ) + result += " Streaming |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "Default"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoDecodeFlagsKHR ) + { + return "{}"; + } + + //=== VK_EXT_transform_feedback === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineRasterizationStateStreamCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_KHR_video_encode_h264 === + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264CapabilityFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::eHrdCompliance ) + result += " HrdCompliance |"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::ePredictionWeightTableGenerated ) + result += " PredictionWeightTableGenerated |"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::eRowUnalignedSlice ) + result += " RowUnalignedSlice |"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::eDifferentSliceType ) + result += " DifferentSliceType |"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::eBFrameInL0List ) + result += " BFrameInL0List |"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::eBFrameInL1List ) + result += " BFrameInL1List |"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::ePerPictureTypeMinMaxQp ) + result += " PerPictureTypeMinMaxQp |"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::ePerSliceConstantQp ) + result += " PerSliceConstantQp |"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::eGeneratePrefixNalu ) + result += " GeneratePrefixNalu |"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::eBPictureIntraRefresh ) + result += " BPictureIntraRefresh |"; + if ( value & VideoEncodeH264CapabilityFlagBitsKHR::eMbQpDiffWraparound ) + result += " MbQpDiffWraparound |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264StdFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eSeparateColorPlaneFlagSet ) + result += " SeparateColorPlaneFlagSet |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eQpprimeYZeroTransformBypassFlagSet ) + result += " QpprimeYZeroTransformBypassFlagSet |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eScalingMatrixPresentFlagSet ) + result += " ScalingMatrixPresentFlagSet |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eChromaQpIndexOffset ) + result += " ChromaQpIndexOffset |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eSecondChromaQpIndexOffset ) + result += " SecondChromaQpIndexOffset |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::ePicInitQpMinus26 ) + result += " PicInitQpMinus26 |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eWeightedPredFlagSet ) + result += " WeightedPredFlagSet |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eWeightedBipredIdcExplicit ) + result += " WeightedBipredIdcExplicit |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eWeightedBipredIdcImplicit ) + result += " WeightedBipredIdcImplicit |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eTransform8X8ModeFlagSet ) + result += " Transform8X8ModeFlagSet |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eDirectSpatialMvPredFlagUnset ) + result += " DirectSpatialMvPredFlagUnset |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eEntropyCodingModeFlagUnset ) + result += " EntropyCodingModeFlagUnset |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eEntropyCodingModeFlagSet ) + result += " EntropyCodingModeFlagSet |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eDirect8X8InferenceFlagUnset ) + result += " Direct8X8InferenceFlagUnset |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eConstrainedIntraPredFlagSet ) + result += " ConstrainedIntraPredFlagSet |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eDeblockingFilterDisabled ) + result += " DeblockingFilterDisabled |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eDeblockingFilterEnabled ) + result += " DeblockingFilterEnabled |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eDeblockingFilterPartial ) + result += " DeblockingFilterPartial |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eSliceQpDelta ) + result += " SliceQpDelta |"; + if ( value & VideoEncodeH264StdFlagBitsKHR::eDifferentSliceQpDelta ) + result += " DifferentSliceQpDelta |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH264RateControlFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeH264RateControlFlagBitsKHR::eAttemptHrdCompliance ) + result += " AttemptHrdCompliance |"; + if ( value & VideoEncodeH264RateControlFlagBitsKHR::eRegularGop ) + result += " RegularGop |"; + if ( value & VideoEncodeH264RateControlFlagBitsKHR::eReferencePatternFlat ) + result += " ReferencePatternFlat |"; + if ( value & VideoEncodeH264RateControlFlagBitsKHR::eReferencePatternDyadic ) + result += " ReferencePatternDyadic |"; + if ( value & VideoEncodeH264RateControlFlagBitsKHR::eTemporalLayerPatternDyadic ) + result += " TemporalLayerPatternDyadic |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_video_encode_h265 === + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265CapabilityFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::eHrdCompliance ) + result += " HrdCompliance |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::ePredictionWeightTableGenerated ) + result += " PredictionWeightTableGenerated |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::eRowUnalignedSliceSegment ) + result += " RowUnalignedSliceSegment |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::eDifferentSliceSegmentType ) + result += " DifferentSliceSegmentType |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::eBFrameInL0List ) + result += " BFrameInL0List |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::eBFrameInL1List ) + result += " BFrameInL1List |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::ePerPictureTypeMinMaxQp ) + result += " PerPictureTypeMinMaxQp |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::ePerSliceSegmentConstantQp ) + result += " PerSliceSegmentConstantQp |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::eMultipleTilesPerSliceSegment ) + result += " MultipleTilesPerSliceSegment |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::eMultipleSliceSegmentsPerTile ) + result += " MultipleSliceSegmentsPerTile |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::eBPictureIntraRefresh ) + result += " BPictureIntraRefresh |"; + if ( value & VideoEncodeH265CapabilityFlagBitsKHR::eCuQpDiffWraparound ) + result += " CuQpDiffWraparound |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265StdFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eSeparateColorPlaneFlagSet ) + result += " SeparateColorPlaneFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eSampleAdaptiveOffsetEnabledFlagSet ) + result += " SampleAdaptiveOffsetEnabledFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eScalingListDataPresentFlagSet ) + result += " ScalingListDataPresentFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::ePcmEnabledFlagSet ) + result += " PcmEnabledFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eSpsTemporalMvpEnabledFlagSet ) + result += " SpsTemporalMvpEnabledFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eInitQpMinus26 ) + result += " InitQpMinus26 |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eWeightedPredFlagSet ) + result += " WeightedPredFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eWeightedBipredFlagSet ) + result += " WeightedBipredFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eLog2ParallelMergeLevelMinus2 ) + result += " Log2ParallelMergeLevelMinus2 |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eSignDataHidingEnabledFlagSet ) + result += " SignDataHidingEnabledFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eTransformSkipEnabledFlagSet ) + result += " TransformSkipEnabledFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eTransformSkipEnabledFlagUnset ) + result += " TransformSkipEnabledFlagUnset |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::ePpsSliceChromaQpOffsetsPresentFlagSet ) + result += " PpsSliceChromaQpOffsetsPresentFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eTransquantBypassEnabledFlagSet ) + result += " TransquantBypassEnabledFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eConstrainedIntraPredFlagSet ) + result += " ConstrainedIntraPredFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eEntropyCodingSyncEnabledFlagSet ) + result += " EntropyCodingSyncEnabledFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eDeblockingFilterOverrideEnabledFlagSet ) + result += " DeblockingFilterOverrideEnabledFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eDependentSliceSegmentsEnabledFlagSet ) + result += " DependentSliceSegmentsEnabledFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eDependentSliceSegmentFlagSet ) + result += " DependentSliceSegmentFlagSet |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eSliceQpDelta ) + result += " SliceQpDelta |"; + if ( value & VideoEncodeH265StdFlagBitsKHR::eDifferentSliceQpDelta ) + result += " DifferentSliceQpDelta |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265CtbSizeFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeH265CtbSizeFlagBitsKHR::e16 ) + result += " 16 |"; + if ( value & VideoEncodeH265CtbSizeFlagBitsKHR::e32 ) + result += " 32 |"; + if ( value & VideoEncodeH265CtbSizeFlagBitsKHR::e64 ) + result += " 64 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265TransformBlockSizeFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeH265TransformBlockSizeFlagBitsKHR::e4 ) + result += " 4 |"; + if ( value & VideoEncodeH265TransformBlockSizeFlagBitsKHR::e8 ) + result += " 8 |"; + if ( value & VideoEncodeH265TransformBlockSizeFlagBitsKHR::e16 ) + result += " 16 |"; + if ( value & VideoEncodeH265TransformBlockSizeFlagBitsKHR::e32 ) + result += " 32 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeH265RateControlFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeH265RateControlFlagBitsKHR::eAttemptHrdCompliance ) + result += " AttemptHrdCompliance |"; + if ( value & VideoEncodeH265RateControlFlagBitsKHR::eRegularGop ) + result += " RegularGop |"; + if ( value & VideoEncodeH265RateControlFlagBitsKHR::eReferencePatternFlat ) + result += " ReferencePatternFlat |"; + if ( value & VideoEncodeH265RateControlFlagBitsKHR::eReferencePatternDyadic ) + result += " ReferencePatternDyadic |"; + if ( value & VideoEncodeH265RateControlFlagBitsKHR::eTemporalSubLayerPatternDyadic ) + result += " TemporalSubLayerPatternDyadic |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_video_decode_h264 === + + VULKAN_HPP_INLINE std::string to_string( VideoDecodeH264PictureLayoutFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoDecodeH264PictureLayoutFlagBitsKHR::eInterlacedInterleavedLines ) + result += " InterlacedInterleavedLines |"; + if ( value & VideoDecodeH264PictureLayoutFlagBitsKHR::eInterlacedSeparatePlanes ) + result += " InterlacedSeparatePlanes |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "Progressive"; + return result; + } + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( StreamDescriptorSurfaceCreateFlagsGGP ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlagsNV value ) + { + std::string result = "{"; + if ( value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32 ) + result += " OpaqueWin32 |"; + if ( value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt ) + result += " OpaqueWin32Kmt |"; + if ( value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image ) + result += " D3D11Image |"; + if ( value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt ) + result += " D3D11ImageKmt |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlagsNV value ) + { + std::string result = "{"; + if ( value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly ) + result += " DedicatedOnly |"; + if ( value & ExternalMemoryFeatureFlagBitsNV::eExportable ) + result += " Exportable |"; + if ( value & ExternalMemoryFeatureFlagBitsNV::eImportable ) + result += " Importable |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ViSurfaceCreateFlagsNN ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_EXT_conditional_rendering === + + VULKAN_HPP_INLINE std::string to_string( ConditionalRenderingFlagsEXT value ) + { + std::string result = "{"; + if ( value & ConditionalRenderingFlagBitsEXT::eInverted ) + result += " Inverted |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_EXT_display_surface_counter === + + VULKAN_HPP_INLINE std::string to_string( SurfaceCounterFlagsEXT value ) + { + std::string result = "{"; + if ( value & SurfaceCounterFlagBitsEXT::eVblank ) + result += " Vblank |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_NV_viewport_swizzle === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineViewportSwizzleStateCreateFlagsNV ) + { + return "{}"; + } + + //=== VK_EXT_discard_rectangles === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineDiscardRectangleStateCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_EXT_conservative_rasterization === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineRasterizationConservativeStateCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_EXT_depth_clip_enable === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineRasterizationDepthClipStateCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_KHR_performance_query === + + VULKAN_HPP_INLINE std::string to_string( PerformanceCounterDescriptionFlagsKHR value ) + { + std::string result = "{"; + if ( value & PerformanceCounterDescriptionFlagBitsKHR::ePerformanceImpacting ) + result += " PerformanceImpacting |"; + if ( value & PerformanceCounterDescriptionFlagBitsKHR::eConcurrentlyImpacted ) + result += " ConcurrentlyImpacted |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AcquireProfilingLockFlagsKHR ) + { + return "{}"; + } + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( IOSSurfaceCreateFlagsMVK ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MacOSSurfaceCreateFlagsMVK ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageSeverityFlagsEXT value ) + { + std::string result = "{"; + if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eVerbose ) + result += " Verbose |"; + if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eInfo ) + result += " Info |"; + if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eWarning ) + result += " Warning |"; + if ( value & DebugUtilsMessageSeverityFlagBitsEXT::eError ) + result += " Error |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageTypeFlagsEXT value ) + { + std::string result = "{"; + if ( value & DebugUtilsMessageTypeFlagBitsEXT::eGeneral ) + result += " General |"; + if ( value & DebugUtilsMessageTypeFlagBitsEXT::eValidation ) + result += " Validation |"; + if ( value & DebugUtilsMessageTypeFlagBitsEXT::ePerformance ) + result += " Performance |"; + if ( value & DebugUtilsMessageTypeFlagBitsEXT::eDeviceAddressBinding ) + result += " DeviceAddressBinding |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DebugUtilsMessengerCallbackDataFlagsEXT ) + { + return "{}"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DebugUtilsMessengerCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_EXT_descriptor_heap === + + VULKAN_HPP_INLINE std::string to_string( SpirvResourceTypeFlagsEXT value ) + { + std::string result = "{"; + if ( value & SpirvResourceTypeFlagBitsEXT::eSampler ) + result += " Sampler |"; + if ( value & SpirvResourceTypeFlagBitsEXT::eSampledImage ) + result += " SampledImage |"; + if ( value & SpirvResourceTypeFlagBitsEXT::eReadOnlyImage ) + result += " ReadOnlyImage |"; + if ( value & SpirvResourceTypeFlagBitsEXT::eReadWriteImage ) + result += " ReadWriteImage |"; + if ( value & SpirvResourceTypeFlagBitsEXT::eCombinedSampledImage ) + result += " CombinedSampledImage |"; + if ( value & SpirvResourceTypeFlagBitsEXT::eUniformBuffer ) + result += " UniformBuffer |"; + if ( value & SpirvResourceTypeFlagBitsEXT::eReadOnlyStorageBuffer ) + result += " ReadOnlyStorageBuffer |"; + if ( value & SpirvResourceTypeFlagBitsEXT::eReadWriteStorageBuffer ) + result += " ReadWriteStorageBuffer |"; + if ( value & SpirvResourceTypeFlagBitsEXT::eAccelerationStructure ) + result += " AccelerationStructure |"; + if ( value & SpirvResourceTypeFlagBitsEXT::eTensorARM ) + result += " TensorARM |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( TensorViewCreateFlagsARM value ) + { + std::string result = "{"; + if ( value & TensorViewCreateFlagBitsARM::eDescriptorBufferCaptureReplay ) + result += " DescriptorBufferCaptureReplay |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_NV_fragment_coverage_to_color === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCoverageToColorStateCreateFlagsNV ) + { + return "{}"; + } + + //=== VK_KHR_acceleration_structure === + + VULKAN_HPP_INLINE std::string to_string( GeometryFlagsKHR value ) + { + std::string result = "{"; + if ( value & GeometryFlagBitsKHR::eOpaque ) + result += " Opaque |"; + if ( value & GeometryFlagBitsKHR::eNoDuplicateAnyHitInvocation ) + result += " NoDuplicateAnyHitInvocation |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( GeometryInstanceFlagsKHR value ) + { + std::string result = "{"; + if ( value & GeometryInstanceFlagBitsKHR::eTriangleFacingCullDisable ) + result += " TriangleFacingCullDisable |"; + if ( value & GeometryInstanceFlagBitsKHR::eTriangleFlipFacing ) + result += " TriangleFlipFacing |"; + if ( value & GeometryInstanceFlagBitsKHR::eForceOpaque ) + result += " ForceOpaque |"; + if ( value & GeometryInstanceFlagBitsKHR::eForceNoOpaque ) + result += " ForceNoOpaque |"; + if ( value & GeometryInstanceFlagBitsKHR::eForceOpacityMicromap2StateEXT ) + result += " ForceOpacityMicromap2StateEXT |"; + if ( value & GeometryInstanceFlagBitsKHR::eDisableOpacityMicromapsEXT ) + result += " DisableOpacityMicromapsEXT |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( BuildAccelerationStructureFlagsKHR value ) + { + std::string result = "{"; + if ( value & BuildAccelerationStructureFlagBitsKHR::eAllowUpdate ) + result += " AllowUpdate |"; + if ( value & BuildAccelerationStructureFlagBitsKHR::eAllowCompaction ) + result += " AllowCompaction |"; + if ( value & BuildAccelerationStructureFlagBitsKHR::ePreferFastTrace ) + result += " PreferFastTrace |"; + if ( value & BuildAccelerationStructureFlagBitsKHR::ePreferFastBuild ) + result += " PreferFastBuild |"; + if ( value & BuildAccelerationStructureFlagBitsKHR::eLowMemory ) + result += " LowMemory |"; + if ( value & BuildAccelerationStructureFlagBitsKHR::eMotionNV ) + result += " MotionNV |"; + if ( value & BuildAccelerationStructureFlagBitsKHR::eAllowOpacityMicromapUpdateEXT ) + result += " AllowOpacityMicromapUpdateEXT |"; + if ( value & BuildAccelerationStructureFlagBitsKHR::eAllowDisableOpacityMicromapsEXT ) + result += " AllowDisableOpacityMicromapsEXT |"; + if ( value & BuildAccelerationStructureFlagBitsKHR::eAllowOpacityMicromapDataUpdateEXT ) + result += " AllowOpacityMicromapDataUpdateEXT |"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + if ( value & BuildAccelerationStructureFlagBitsKHR::eAllowDisplacementMicromapUpdateNV ) + result += " AllowDisplacementMicromapUpdateNV |"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + if ( value & BuildAccelerationStructureFlagBitsKHR::eAllowDataAccess ) + result += " AllowDataAccess |"; + if ( value & BuildAccelerationStructureFlagBitsKHR::eAllowClusterOpacityMicromapsNV ) + result += " AllowClusterOpacityMicromapsNV |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( AccelerationStructureCreateFlagsKHR value ) + { + std::string result = "{"; + if ( value & AccelerationStructureCreateFlagBitsKHR::eDeviceAddressCaptureReplay ) + result += " DeviceAddressCaptureReplay |"; + if ( value & AccelerationStructureCreateFlagBitsKHR::eDescriptorBufferCaptureReplayEXT ) + result += " DescriptorBufferCaptureReplayEXT |"; + if ( value & AccelerationStructureCreateFlagBitsKHR::eMotionNV ) + result += " MotionNV |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_NV_framebuffer_mixed_samples === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCoverageModulationStateCreateFlagsNV ) + { + return "{}"; + } + + //=== VK_EXT_validation_cache === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ValidationCacheCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_AMD_pipeline_compiler_control === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCompilerControlFlagsAMD ) + { + return "{}"; + } + + //=== VK_EXT_present_timing === + + VULKAN_HPP_INLINE std::string to_string( PresentStageFlagsEXT value ) + { + std::string result = "{"; + if ( value & PresentStageFlagBitsEXT::eQueueOperationsEnd ) + result += " QueueOperationsEnd |"; + if ( value & PresentStageFlagBitsEXT::eRequestDequeued ) + result += " RequestDequeued |"; + if ( value & PresentStageFlagBitsEXT::eImageFirstPixelOut ) + result += " ImageFirstPixelOut |"; + if ( value & PresentStageFlagBitsEXT::eImageFirstPixelVisible ) + result += " ImageFirstPixelVisible |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PresentTimingInfoFlagsEXT value ) + { + std::string result = "{"; + if ( value & PresentTimingInfoFlagBitsEXT::ePresentAtRelativeTime ) + result += " PresentAtRelativeTime |"; + if ( value & PresentTimingInfoFlagBitsEXT::ePresentAtNearestRefreshCycle ) + result += " PresentAtNearestRefreshCycle |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PastPresentationTimingFlagsEXT value ) + { + std::string result = "{"; + if ( value & PastPresentationTimingFlagBitsEXT::eAllowPartialResults ) + result += " AllowPartialResults |"; + if ( value & PastPresentationTimingFlagBitsEXT::eAllowOutOfOrderResults ) + result += " AllowOutOfOrderResults |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImagePipeSurfaceCreateFlagsFUCHSIA ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MetalSurfaceCreateFlagsEXT ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_AMD_shader_core_properties2 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderCorePropertiesFlagsAMD ) + { + return "{}"; + } + + //=== VK_NV_coverage_reduction_mode === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCoverageReductionStateCreateFlagsNV ) + { + return "{}"; + } + + //=== VK_EXT_headless_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( HeadlessSurfaceCreateFlagsEXT ) + { + return "{}"; + } + + //=== VK_NV_device_generated_commands === + + VULKAN_HPP_INLINE std::string to_string( IndirectStateFlagsNV value ) + { + std::string result = "{"; + if ( value & IndirectStateFlagBitsNV::eFlagFrontface ) + result += " FlagFrontface |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsLayoutUsageFlagsNV value ) + { + std::string result = "{"; + if ( value & IndirectCommandsLayoutUsageFlagBitsNV::eExplicitPreprocess ) + result += " ExplicitPreprocess |"; + if ( value & IndirectCommandsLayoutUsageFlagBitsNV::eIndexedSequences ) + result += " IndexedSequences |"; + if ( value & IndirectCommandsLayoutUsageFlagBitsNV::eUnorderedSequences ) + result += " UnorderedSequences |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_EXT_device_memory_report === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceMemoryReportFlagsEXT ) + { + return "{}"; + } + + //=== VK_KHR_video_encode_queue === + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeFlagBitsKHR::eIntraRefresh ) + result += " IntraRefresh |"; + if ( value & VideoEncodeFlagBitsKHR::eWithQuantizationDeltaMap ) + result += " WithQuantizationDeltaMap |"; + if ( value & VideoEncodeFlagBitsKHR::eWithEmphasisMap ) + result += " WithEmphasisMap |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeCapabilityFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeCapabilityFlagBitsKHR::ePrecedingExternallyEncodedBytes ) + result += " PrecedingExternallyEncodedBytes |"; + if ( value & VideoEncodeCapabilityFlagBitsKHR::eInsufficientBitstreamBufferRangeDetection ) + result += " InsufficientBitstreamBufferRangeDetection |"; + if ( value & VideoEncodeCapabilityFlagBitsKHR::eQuantizationDeltaMap ) + result += " QuantizationDeltaMap |"; + if ( value & VideoEncodeCapabilityFlagBitsKHR::eEmphasisMap ) + result += " EmphasisMap |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeFeedbackFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeFeedbackFlagBitsKHR::eBitstreamBufferOffset ) + result += " BitstreamBufferOffset |"; + if ( value & VideoEncodeFeedbackFlagBitsKHR::eBitstreamBytesWritten ) + result += " BitstreamBytesWritten |"; + if ( value & VideoEncodeFeedbackFlagBitsKHR::eBitstreamHasOverrides ) + result += " BitstreamHasOverrides |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeUsageFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeUsageFlagBitsKHR::eTranscoding ) + result += " Transcoding |"; + if ( value & VideoEncodeUsageFlagBitsKHR::eStreaming ) + result += " Streaming |"; + if ( value & VideoEncodeUsageFlagBitsKHR::eRecording ) + result += " Recording |"; + if ( value & VideoEncodeUsageFlagBitsKHR::eConferencing ) + result += " Conferencing |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "Default"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeContentFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeContentFlagBitsKHR::eCamera ) + result += " Camera |"; + if ( value & VideoEncodeContentFlagBitsKHR::eDesktop ) + result += " Desktop |"; + if ( value & VideoEncodeContentFlagBitsKHR::eRendered ) + result += " Rendered |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "Default"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeRateControlFlagsKHR ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeRateControlModeFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeRateControlModeFlagBitsKHR::eDisabled ) + result += " Disabled |"; + if ( value & VideoEncodeRateControlModeFlagBitsKHR::eCbr ) + result += " Cbr |"; + if ( value & VideoEncodeRateControlModeFlagBitsKHR::eVbr ) + result += " Vbr |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "Default"; + return result; + } + + //=== VK_NV_device_diagnostics_config === + + VULKAN_HPP_INLINE std::string to_string( DeviceDiagnosticsConfigFlagsNV value ) + { + std::string result = "{"; + if ( value & DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderDebugInfo ) + result += " EnableShaderDebugInfo |"; + if ( value & DeviceDiagnosticsConfigFlagBitsNV::eEnableResourceTracking ) + result += " EnableResourceTracking |"; + if ( value & DeviceDiagnosticsConfigFlagBitsNV::eEnableAutomaticCheckpoints ) + result += " EnableAutomaticCheckpoints |"; + if ( value & DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderErrorReporting ) + result += " EnableShaderErrorReporting |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_QCOM_tile_shading === + + VULKAN_HPP_INLINE std::string to_string( TileShadingRenderPassFlagsQCOM value ) + { + std::string result = "{"; + if ( value & TileShadingRenderPassFlagBitsQCOM::eEnable ) + result += " Enable |"; + if ( value & TileShadingRenderPassFlagBitsQCOM::ePerTileExecution ) + result += " PerTileExecution |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + + VULKAN_HPP_INLINE std::string to_string( ExportMetalObjectTypeFlagsEXT value ) + { + std::string result = "{"; + if ( value & ExportMetalObjectTypeFlagBitsEXT::eMetalDevice ) + result += " MetalDevice |"; + if ( value & ExportMetalObjectTypeFlagBitsEXT::eMetalCommandQueue ) + result += " MetalCommandQueue |"; + if ( value & ExportMetalObjectTypeFlagBitsEXT::eMetalBuffer ) + result += " MetalBuffer |"; + if ( value & ExportMetalObjectTypeFlagBitsEXT::eMetalTexture ) + result += " MetalTexture |"; + if ( value & ExportMetalObjectTypeFlagBitsEXT::eMetalIosurface ) + result += " MetalIosurface |"; + if ( value & ExportMetalObjectTypeFlagBitsEXT::eMetalSharedEvent ) + result += " MetalSharedEvent |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_device_address_commands === + + VULKAN_HPP_INLINE std::string to_string( AddressCommandFlagsKHR value ) + { + std::string result = "{"; + if ( value & AddressCommandFlagBitsKHR::eProtected ) + result += " Protected |"; + if ( value & AddressCommandFlagBitsKHR::eFullyBound ) + result += " FullyBound |"; + if ( value & AddressCommandFlagBitsKHR::eStorageBufferUsage ) + result += " StorageBufferUsage |"; + if ( value & AddressCommandFlagBitsKHR::eUnknownStorageBufferUsage ) + result += " UnknownStorageBufferUsage |"; + if ( value & AddressCommandFlagBitsKHR::eTransformFeedbackBufferUsage ) + result += " TransformFeedbackBufferUsage |"; + if ( value & AddressCommandFlagBitsKHR::eUnknownTransformFeedbackBufferUsage ) + result += " UnknownTransformFeedbackBufferUsage |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_EXT_graphics_pipeline_library === + + VULKAN_HPP_INLINE std::string to_string( GraphicsPipelineLibraryFlagsEXT value ) + { + std::string result = "{"; + if ( value & GraphicsPipelineLibraryFlagBitsEXT::eVertexInputInterface ) + result += " VertexInputInterface |"; + if ( value & GraphicsPipelineLibraryFlagBitsEXT::ePreRasterizationShaders ) + result += " PreRasterizationShaders |"; + if ( value & GraphicsPipelineLibraryFlagBitsEXT::eFragmentShader ) + result += " FragmentShader |"; + if ( value & GraphicsPipelineLibraryFlagBitsEXT::eFragmentOutputInterface ) + result += " FragmentOutputInterface |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_NV_ray_tracing_motion_blur === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccelerationStructureMotionInfoFlagsNV ) + { + return "{}"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccelerationStructureMotionInstanceFlagsNV ) + { + return "{}"; + } + + //=== VK_EXT_image_compression_control === + + VULKAN_HPP_INLINE std::string to_string( ImageCompressionFlagsEXT value ) + { + std::string result = "{"; + if ( value & ImageCompressionFlagBitsEXT::eFixedRateDefault ) + result += " FixedRateDefault |"; + if ( value & ImageCompressionFlagBitsEXT::eFixedRateExplicit ) + result += " FixedRateExplicit |"; + if ( value & ImageCompressionFlagBitsEXT::eDisabled ) + result += " Disabled |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "Default"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ImageCompressionFixedRateFlagsEXT value ) + { + std::string result = "{"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e1Bpc ) + result += " 1Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e2Bpc ) + result += " 2Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e3Bpc ) + result += " 3Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e4Bpc ) + result += " 4Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e5Bpc ) + result += " 5Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e6Bpc ) + result += " 6Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e7Bpc ) + result += " 7Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e8Bpc ) + result += " 8Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e9Bpc ) + result += " 9Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e10Bpc ) + result += " 10Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e11Bpc ) + result += " 11Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e12Bpc ) + result += " 12Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e13Bpc ) + result += " 13Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e14Bpc ) + result += " 14Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e15Bpc ) + result += " 15Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e16Bpc ) + result += " 16Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e17Bpc ) + result += " 17Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e18Bpc ) + result += " 18Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e19Bpc ) + result += " 19Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e20Bpc ) + result += " 20Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e21Bpc ) + result += " 21Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e22Bpc ) + result += " 22Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e23Bpc ) + result += " 23Bpc |"; + if ( value & ImageCompressionFixedRateFlagBitsEXT::e24Bpc ) + result += " 24Bpc |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DirectFBSurfaceCreateFlagsEXT ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_device_address_binding_report === + + VULKAN_HPP_INLINE std::string to_string( DeviceAddressBindingFlagsEXT value ) + { + std::string result = "{"; + if ( value & DeviceAddressBindingFlagBitsEXT::eInternalObject ) + result += " InternalObject |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageFormatConstraintsFlagsFUCHSIA ) + { + return "{}"; + } + + VULKAN_HPP_INLINE std::string to_string( ImageConstraintsInfoFlagsFUCHSIA value ) + { + std::string result = "{"; + if ( value & ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadRarely ) + result += " CpuReadRarely |"; + if ( value & ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadOften ) + result += " CpuReadOften |"; + if ( value & ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteRarely ) + result += " CpuWriteRarely |"; + if ( value & ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteOften ) + result += " CpuWriteOften |"; + if ( value & ImageConstraintsInfoFlagBitsFUCHSIA::eProtectedOptional ) + result += " ProtectedOptional |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_EXT_frame_boundary === + + VULKAN_HPP_INLINE std::string to_string( FrameBoundaryFlagsEXT value ) + { + std::string result = "{"; + if ( value & FrameBoundaryFlagBitsEXT::eFrameEnd ) + result += " FrameEnd |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ScreenSurfaceCreateFlagsQNX ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_VALVE_video_encode_rgb_conversion === + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeRgbModelConversionFlagsVALVE value ) + { + std::string result = "{"; + if ( value & VideoEncodeRgbModelConversionFlagBitsVALVE::eRgbIdentity ) + result += " RgbIdentity |"; + if ( value & VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcrIdentity ) + result += " YcbcrIdentity |"; + if ( value & VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcr709 ) + result += " Ycbcr709 |"; + if ( value & VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcr601 ) + result += " Ycbcr601 |"; + if ( value & VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcr2020 ) + result += " Ycbcr2020 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeRgbRangeCompressionFlagsVALVE value ) + { + std::string result = "{"; + if ( value & VideoEncodeRgbRangeCompressionFlagBitsVALVE::eFullRange ) + result += " FullRange |"; + if ( value & VideoEncodeRgbRangeCompressionFlagBitsVALVE::eNarrowRange ) + result += " NarrowRange |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeRgbChromaOffsetFlagsVALVE value ) + { + std::string result = "{"; + if ( value & VideoEncodeRgbChromaOffsetFlagBitsVALVE::eCositedEven ) + result += " CositedEven |"; + if ( value & VideoEncodeRgbChromaOffsetFlagBitsVALVE::eMidpoint ) + result += " Midpoint |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_EXT_opacity_micromap === + + VULKAN_HPP_INLINE std::string to_string( BuildMicromapFlagsEXT value ) + { + std::string result = "{"; + if ( value & BuildMicromapFlagBitsEXT::ePreferFastTrace ) + result += " PreferFastTrace |"; + if ( value & BuildMicromapFlagBitsEXT::ePreferFastBuild ) + result += " PreferFastBuild |"; + if ( value & BuildMicromapFlagBitsEXT::eAllowCompaction ) + result += " AllowCompaction |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( MicromapCreateFlagsEXT value ) + { + std::string result = "{"; + if ( value & MicromapCreateFlagBitsEXT::eDeviceAddressCaptureReplay ) + result += " DeviceAddressCaptureReplay |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_ARM_scheduling_controls === + + VULKAN_HPP_INLINE std::string to_string( PhysicalDeviceSchedulingControlsFlagsARM value ) + { + std::string result = "{"; + if ( value & PhysicalDeviceSchedulingControlsFlagBitsARM::eShaderCoreCount ) + result += " ShaderCoreCount |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_LUNARG_direct_driver_loading === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DirectDriverLoadingFlagsLUNARG ) + { + return "{}"; + } + + //=== VK_ARM_tensors === + + VULKAN_HPP_INLINE std::string to_string( TensorCreateFlagsARM value ) + { + std::string result = "{"; + if ( value & TensorCreateFlagBitsARM::eMutableFormat ) + result += " MutableFormat |"; + if ( value & TensorCreateFlagBitsARM::eProtected ) + result += " Protected |"; + if ( value & TensorCreateFlagBitsARM::eDescriptorHeapCaptureReplay ) + result += " DescriptorHeapCaptureReplay |"; + if ( value & TensorCreateFlagBitsARM::eDescriptorBufferCaptureReplay ) + result += " DescriptorBufferCaptureReplay |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( TensorUsageFlagsARM value ) + { + std::string result = "{"; + if ( value & TensorUsageFlagBitsARM::eShader ) + result += " Shader |"; + if ( value & TensorUsageFlagBitsARM::eTransferSrc ) + result += " TransferSrc |"; + if ( value & TensorUsageFlagBitsARM::eTransferDst ) + result += " TransferDst |"; + if ( value & TensorUsageFlagBitsARM::eImageAliasing ) + result += " ImageAliasing |"; + if ( value & TensorUsageFlagBitsARM::eDataGraph ) + result += " DataGraph |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_NV_optical_flow === + + VULKAN_HPP_INLINE std::string to_string( OpticalFlowUsageFlagsNV value ) + { + std::string result = "{"; + if ( value & OpticalFlowUsageFlagBitsNV::eInput ) + result += " Input |"; + if ( value & OpticalFlowUsageFlagBitsNV::eOutput ) + result += " Output |"; + if ( value & OpticalFlowUsageFlagBitsNV::eHint ) + result += " Hint |"; + if ( value & OpticalFlowUsageFlagBitsNV::eCost ) + result += " Cost |"; + if ( value & OpticalFlowUsageFlagBitsNV::eGlobalFlow ) + result += " GlobalFlow |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "Unknown"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( OpticalFlowGridSizeFlagsNV value ) + { + std::string result = "{"; + if ( value & OpticalFlowGridSizeFlagBitsNV::e1X1 ) + result += " 1X1 |"; + if ( value & OpticalFlowGridSizeFlagBitsNV::e2X2 ) + result += " 2X2 |"; + if ( value & OpticalFlowGridSizeFlagBitsNV::e4X4 ) + result += " 4X4 |"; + if ( value & OpticalFlowGridSizeFlagBitsNV::e8X8 ) + result += " 8X8 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "Unknown"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( OpticalFlowSessionCreateFlagsNV value ) + { + std::string result = "{"; + if ( value & OpticalFlowSessionCreateFlagBitsNV::eEnableHint ) + result += " EnableHint |"; + if ( value & OpticalFlowSessionCreateFlagBitsNV::eEnableCost ) + result += " EnableCost |"; + if ( value & OpticalFlowSessionCreateFlagBitsNV::eEnableGlobalFlow ) + result += " EnableGlobalFlow |"; + if ( value & OpticalFlowSessionCreateFlagBitsNV::eAllowRegions ) + result += " AllowRegions |"; + if ( value & OpticalFlowSessionCreateFlagBitsNV::eBothDirections ) + result += " BothDirections |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( OpticalFlowExecuteFlagsNV value ) + { + std::string result = "{"; + if ( value & OpticalFlowExecuteFlagBitsNV::eDisableTemporalHints ) + result += " DisableTemporalHints |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_EXT_shader_object === + + VULKAN_HPP_INLINE std::string to_string( ShaderCreateFlagsEXT value ) + { + std::string result = "{"; + if ( value & ShaderCreateFlagBitsEXT::eLinkStage ) + result += " LinkStage |"; + if ( value & ShaderCreateFlagBitsEXT::eDescriptorHeap ) + result += " DescriptorHeap |"; + if ( value & ShaderCreateFlagBitsEXT::eInstrumentShaderARM ) + result += " InstrumentShaderARM |"; + if ( value & ShaderCreateFlagBitsEXT::eAllowVaryingSubgroupSize ) + result += " AllowVaryingSubgroupSize |"; + if ( value & ShaderCreateFlagBitsEXT::eRequireFullSubgroups ) + result += " RequireFullSubgroups |"; + if ( value & ShaderCreateFlagBitsEXT::eNoTaskShader ) + result += " NoTaskShader |"; + if ( value & ShaderCreateFlagBitsEXT::eDispatchBase ) + result += " DispatchBase |"; + if ( value & ShaderCreateFlagBitsEXT::eFragmentShadingRateAttachment ) + result += " FragmentShadingRateAttachment |"; + if ( value & ShaderCreateFlagBitsEXT::eFragmentDensityMapAttachment ) + result += " FragmentDensityMapAttachment |"; + if ( value & ShaderCreateFlagBitsEXT::eIndirectBindable ) + result += " IndirectBindable |"; + if ( value & ShaderCreateFlagBitsEXT::e64BitIndexing ) + result += " 64BitIndexing |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_surface_maintenance1 === + + VULKAN_HPP_INLINE std::string to_string( PresentScalingFlagsKHR value ) + { + std::string result = "{"; + if ( value & PresentScalingFlagBitsKHR::eOneToOne ) + result += " OneToOne |"; + if ( value & PresentScalingFlagBitsKHR::eAspectRatioStretch ) + result += " AspectRatioStretch |"; + if ( value & PresentScalingFlagBitsKHR::eStretch ) + result += " Stretch |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( PresentGravityFlagsKHR value ) + { + std::string result = "{"; + if ( value & PresentGravityFlagBitsKHR::eMin ) + result += " Min |"; + if ( value & PresentGravityFlagBitsKHR::eMax ) + result += " Max |"; + if ( value & PresentGravityFlagBitsKHR::eCentered ) + result += " Centered |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_ARM_data_graph === + + VULKAN_HPP_INLINE std::string to_string( DataGraphPipelineSessionCreateFlagsARM value ) + { + std::string result = "{"; + if ( value & DataGraphPipelineSessionCreateFlagBitsARM::eProtected ) + result += " Protected |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DataGraphPipelineDispatchFlagsARM ) + { + return "{}"; + } + + //=== VK_KHR_video_encode_av1 === + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeAV1CapabilityFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeAV1CapabilityFlagBitsKHR::ePerRateControlGroupMinMaxQIndex ) + result += " PerRateControlGroupMinMaxQIndex |"; + if ( value & VideoEncodeAV1CapabilityFlagBitsKHR::eGenerateObuExtensionHeader ) + result += " GenerateObuExtensionHeader |"; + if ( value & VideoEncodeAV1CapabilityFlagBitsKHR::ePrimaryReferenceCdfOnly ) + result += " PrimaryReferenceCdfOnly |"; + if ( value & VideoEncodeAV1CapabilityFlagBitsKHR::eFrameSizeOverride ) + result += " FrameSizeOverride |"; + if ( value & VideoEncodeAV1CapabilityFlagBitsKHR::eMotionVectorScaling ) + result += " MotionVectorScaling |"; + if ( value & VideoEncodeAV1CapabilityFlagBitsKHR::eCompoundPredictionIntraRefresh ) + result += " CompoundPredictionIntraRefresh |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeAV1StdFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeAV1StdFlagBitsKHR::eUniformTileSpacingFlagSet ) + result += " UniformTileSpacingFlagSet |"; + if ( value & VideoEncodeAV1StdFlagBitsKHR::eSkipModePresentUnset ) + result += " SkipModePresentUnset |"; + if ( value & VideoEncodeAV1StdFlagBitsKHR::ePrimaryRefFrame ) + result += " PrimaryRefFrame |"; + if ( value & VideoEncodeAV1StdFlagBitsKHR::eDeltaQ ) + result += " DeltaQ |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeAV1SuperblockSizeFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeAV1SuperblockSizeFlagBitsKHR::e64 ) + result += " 64 |"; + if ( value & VideoEncodeAV1SuperblockSizeFlagBitsKHR::e128 ) + result += " 128 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeAV1RateControlFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeAV1RateControlFlagBitsKHR::eRegularGop ) + result += " RegularGop |"; + if ( value & VideoEncodeAV1RateControlFlagBitsKHR::eTemporalLayerPatternDyadic ) + result += " TemporalLayerPatternDyadic |"; + if ( value & VideoEncodeAV1RateControlFlagBitsKHR::eReferencePatternFlat ) + result += " ReferencePatternFlat |"; + if ( value & VideoEncodeAV1RateControlFlagBitsKHR::eReferencePatternDyadic ) + result += " ReferencePatternDyadic |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_copy_memory_indirect === + + VULKAN_HPP_INLINE std::string to_string( AddressCopyFlagsKHR value ) + { + std::string result = "{"; + if ( value & AddressCopyFlagBitsKHR::eDeviceLocal ) + result += " DeviceLocal |"; + if ( value & AddressCopyFlagBitsKHR::eSparse ) + result += " Sparse |"; + if ( value & AddressCopyFlagBitsKHR::eProtected ) + result += " Protected |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_EXT_memory_decompression === + + VULKAN_HPP_INLINE std::string to_string( MemoryDecompressionMethodFlagsEXT value ) + { + std::string result = "{"; + if ( value & MemoryDecompressionMethodFlagBitsEXT::eGdeflate10 ) + result += " Gdeflate10 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_video_encode_intra_refresh === + + VULKAN_HPP_INLINE std::string to_string( VideoEncodeIntraRefreshModeFlagsKHR value ) + { + std::string result = "{"; + if ( value & VideoEncodeIntraRefreshModeFlagBitsKHR::ePerPicturePartition ) + result += " PerPicturePartition |"; + if ( value & VideoEncodeIntraRefreshModeFlagBitsKHR::eBlockBased ) + result += " BlockBased |"; + if ( value & VideoEncodeIntraRefreshModeFlagBitsKHR::eBlockRowBased ) + result += " BlockRowBased |"; + if ( value & VideoEncodeIntraRefreshModeFlagBitsKHR::eBlockColumnBased ) + result += " BlockColumnBased |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + + //=== VK_NV_cluster_acceleration_structure === + + VULKAN_HPP_INLINE std::string to_string( ClusterAccelerationStructureClusterFlagsNV value ) + { + std::string result = "{"; + if ( value & ClusterAccelerationStructureClusterFlagBitsNV::eAllowDisableOpacityMicromaps ) + result += " AllowDisableOpacityMicromaps |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ClusterAccelerationStructureGeometryFlagsNV value ) + { + std::string result = "{"; + if ( value & ClusterAccelerationStructureGeometryFlagBitsNV::eCullDisable ) + result += " CullDisable |"; + if ( value & ClusterAccelerationStructureGeometryFlagBitsNV::eNoDuplicateAnyhitInvocation ) + result += " NoDuplicateAnyhitInvocation |"; + if ( value & ClusterAccelerationStructureGeometryFlagBitsNV::eOpaque ) + result += " Opaque |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ClusterAccelerationStructureAddressResolutionFlagsNV value ) + { + std::string result = "{"; + if ( value & ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedDstImplicitData ) + result += " IndirectedDstImplicitData |"; + if ( value & ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedScratchData ) + result += " IndirectedScratchData |"; + if ( value & ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedDstAddressArray ) + result += " IndirectedDstAddressArray |"; + if ( value & ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedDstSizesArray ) + result += " IndirectedDstSizesArray |"; + if ( value & ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedSrcInfosArray ) + result += " IndirectedSrcInfosArray |"; + if ( value & ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedSrcInfosCount ) + result += " IndirectedSrcInfosCount |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "None"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ClusterAccelerationStructureIndexFormatFlagsNV value ) + { + std::string result = "{"; + if ( value & ClusterAccelerationStructureIndexFormatFlagBitsNV::e8 ) + result += " 8 |"; + if ( value & ClusterAccelerationStructureIndexFormatFlagBitsNV::e16 ) + result += " 16 |"; + if ( value & ClusterAccelerationStructureIndexFormatFlagBitsNV::e32 ) + result += " 32 |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_NV_partitioned_acceleration_structure === + + VULKAN_HPP_INLINE std::string to_string( PartitionedAccelerationStructureInstanceFlagsNV value ) + { + std::string result = "{"; + if ( value & PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagTriangleFacingCullDisable ) + result += " FlagTriangleFacingCullDisable |"; + if ( value & PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagTriangleFlipFacing ) + result += " FlagTriangleFlipFacing |"; + if ( value & PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagForceOpaque ) + result += " FlagForceOpaque |"; + if ( value & PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagForceNoOpaque ) + result += " FlagForceNoOpaque |"; + if ( value & PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagEnableExplicitBoundingBox ) + result += " FlagEnableExplicitBoundingBox |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_EXT_device_generated_commands === + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsLayoutUsageFlagsEXT value ) + { + std::string result = "{"; + if ( value & IndirectCommandsLayoutUsageFlagBitsEXT::eExplicitPreprocess ) + result += " ExplicitPreprocess |"; + if ( value & IndirectCommandsLayoutUsageFlagBitsEXT::eUnorderedSequences ) + result += " UnorderedSequences |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( IndirectCommandsInputModeFlagsEXT value ) + { + std::string result = "{"; + if ( value & IndirectCommandsInputModeFlagBitsEXT::eVulkanIndexBuffer ) + result += " VulkanIndexBuffer |"; + if ( value & IndirectCommandsInputModeFlagBitsEXT::eDxgiIndexBuffer ) + result += " DxgiIndexBuffer |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_device_fault === + + VULKAN_HPP_INLINE std::string to_string( DeviceFaultFlagsKHR value ) + { + std::string result = "{"; + if ( value & DeviceFaultFlagBitsKHR::eFlagDeviceLost ) + result += " FlagDeviceLost |"; + if ( value & DeviceFaultFlagBitsKHR::eFlagMemoryAddress ) + result += " FlagMemoryAddress |"; + if ( value & DeviceFaultFlagBitsKHR::eFlagInstructionAddress ) + result += " FlagInstructionAddress |"; + if ( value & DeviceFaultFlagBitsKHR::eFlagVendor ) + result += " FlagVendor |"; + if ( value & DeviceFaultFlagBitsKHR::eFlagWatchdogTimeout ) + result += " FlagWatchdogTimeout |"; + if ( value & DeviceFaultFlagBitsKHR::eFlagOverflow ) + result += " FlagOverflow |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + //=== VK_KHR_maintenance8 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccessFlags3KHR ) + { + return "None"; + } + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SurfaceCreateFlagsOHOS ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_ARM_performance_counters_by_region === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PerformanceCounterDescriptionFlagsARM ) + { + return "{}"; + } + + //=== VK_ARM_shader_instrumentation === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderInstrumentationValuesFlagsARM ) + { + return "{}"; + } + + //=== VK_KHR_maintenance10 === + + VULKAN_HPP_INLINE std::string to_string( RenderingAttachmentFlagsKHR value ) + { + std::string result = "{"; + if ( value & RenderingAttachmentFlagBitsKHR::eInputAttachmentFeedback ) + result += " InputAttachmentFeedback |"; + if ( value & RenderingAttachmentFlagBitsKHR::eResolveSkipTransferFunction ) + result += " ResolveSkipTransferFunction |"; + if ( value & RenderingAttachmentFlagBitsKHR::eResolveEnableTransferFunction ) + result += " ResolveEnableTransferFunction |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + + VULKAN_HPP_INLINE std::string to_string( ResolveImageFlagsKHR value ) + { + std::string result = "{"; + if ( value & ResolveImageFlagBitsKHR::eSkipTransferFunction ) + result += " SkipTransferFunction |"; + if ( value & ResolveImageFlagBitsKHR::eEnableTransferFunction ) + result += " EnableTransferFunction |"; + + if ( result.size() > 1 ) + result.back() = '}'; + else + result = "{}"; + return result; + } + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( UbmSurfaceCreateFlagsSEC ) + { + return "{}"; + } +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + + //======================= + //=== ENUMs to_string === + //======================= + + VULKAN_HPP_INLINE std::string toHexString( uint32_t value ) + { +#if __cpp_lib_format + return std::format( "{:x}", value ); +#else + std::stringstream stream; + stream << std::hex << value; + return stream.str(); +#endif + } + + //=== VK_VERSION_1_0 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( Result value ) + { + switch ( value ) + { + case Result::eSuccess : return "Success"; + case Result::eNotReady : return "NotReady"; + case Result::eTimeout : return "Timeout"; + case Result::eEventSet : return "EventSet"; + case Result::eEventReset : return "EventReset"; + case Result::eIncomplete : return "Incomplete"; + case Result::eErrorOutOfHostMemory : return "ErrorOutOfHostMemory"; + case Result::eErrorOutOfDeviceMemory : return "ErrorOutOfDeviceMemory"; + case Result::eErrorInitializationFailed : return "ErrorInitializationFailed"; + case Result::eErrorDeviceLost : return "ErrorDeviceLost"; + case Result::eErrorMemoryMapFailed : return "ErrorMemoryMapFailed"; + case Result::eErrorLayerNotPresent : return "ErrorLayerNotPresent"; + case Result::eErrorExtensionNotPresent : return "ErrorExtensionNotPresent"; + case Result::eErrorFeatureNotPresent : return "ErrorFeatureNotPresent"; + case Result::eErrorIncompatibleDriver : return "ErrorIncompatibleDriver"; + case Result::eErrorTooManyObjects : return "ErrorTooManyObjects"; + case Result::eErrorFormatNotSupported : return "ErrorFormatNotSupported"; + case Result::eErrorFragmentedPool : return "ErrorFragmentedPool"; + case Result::eErrorUnknown : return "ErrorUnknown"; + case Result::eErrorValidationFailed : return "ErrorValidationFailed"; + case Result::eErrorOutOfPoolMemory : return "ErrorOutOfPoolMemory"; + case Result::eErrorInvalidExternalHandle : return "ErrorInvalidExternalHandle"; + case Result::eErrorInvalidOpaqueCaptureAddress : return "ErrorInvalidOpaqueCaptureAddress"; + case Result::eErrorFragmentation : return "ErrorFragmentation"; + case Result::ePipelineCompileRequired : return "PipelineCompileRequired"; + case Result::eErrorNotPermitted : return "ErrorNotPermitted"; + case Result::eErrorSurfaceLostKHR : return "ErrorSurfaceLostKHR"; + case Result::eErrorNativeWindowInUseKHR : return "ErrorNativeWindowInUseKHR"; + case Result::eSuboptimalKHR : return "SuboptimalKHR"; + case Result::eErrorOutOfDateKHR : return "ErrorOutOfDateKHR"; + case Result::eErrorIncompatibleDisplayKHR : return "ErrorIncompatibleDisplayKHR"; + case Result::eErrorInvalidShaderNV : return "ErrorInvalidShaderNV"; + case Result::eErrorImageUsageNotSupportedKHR : return "ErrorImageUsageNotSupportedKHR"; + case Result::eErrorVideoPictureLayoutNotSupportedKHR : return "ErrorVideoPictureLayoutNotSupportedKHR"; + case Result::eErrorVideoProfileOperationNotSupportedKHR : return "ErrorVideoProfileOperationNotSupportedKHR"; + case Result::eErrorVideoProfileFormatNotSupportedKHR : return "ErrorVideoProfileFormatNotSupportedKHR"; + case Result::eErrorVideoProfileCodecNotSupportedKHR : return "ErrorVideoProfileCodecNotSupportedKHR"; + case Result::eErrorVideoStdVersionNotSupportedKHR : return "ErrorVideoStdVersionNotSupportedKHR"; + case Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT: return "ErrorInvalidDrmFormatModifierPlaneLayoutEXT"; + case Result::eErrorPresentTimingQueueFullEXT : return "ErrorPresentTimingQueueFullEXT"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case Result::eErrorFullScreenExclusiveModeLostEXT: return "ErrorFullScreenExclusiveModeLostEXT"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case Result::eThreadIdleKHR : return "ThreadIdleKHR"; + case Result::eThreadDoneKHR : return "ThreadDoneKHR"; + case Result::eOperationDeferredKHR : return "OperationDeferredKHR"; + case Result::eOperationNotDeferredKHR : return "OperationNotDeferredKHR"; + case Result::eErrorInvalidVideoStdParametersKHR: return "ErrorInvalidVideoStdParametersKHR"; + case Result::eErrorCompressionExhaustedEXT : return "ErrorCompressionExhaustedEXT"; + case Result::eIncompatibleShaderBinaryEXT : return "IncompatibleShaderBinaryEXT"; + case Result::ePipelineBinaryMissingKHR : return "PipelineBinaryMissingKHR"; + case Result::eErrorNotEnoughSpaceKHR : return "ErrorNotEnoughSpaceKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( StructureType value ) + { + switch ( value ) + { + case StructureType::eApplicationInfo : return "ApplicationInfo"; + case StructureType::eInstanceCreateInfo : return "InstanceCreateInfo"; + case StructureType::eDeviceQueueCreateInfo : return "DeviceQueueCreateInfo"; + case StructureType::eDeviceCreateInfo : return "DeviceCreateInfo"; + case StructureType::eSubmitInfo : return "SubmitInfo"; + case StructureType::eMemoryAllocateInfo : return "MemoryAllocateInfo"; + case StructureType::eMappedMemoryRange : return "MappedMemoryRange"; + case StructureType::eBindSparseInfo : return "BindSparseInfo"; + case StructureType::eFenceCreateInfo : return "FenceCreateInfo"; + case StructureType::eSemaphoreCreateInfo : return "SemaphoreCreateInfo"; + case StructureType::eEventCreateInfo : return "EventCreateInfo"; + case StructureType::eQueryPoolCreateInfo : return "QueryPoolCreateInfo"; + case StructureType::eBufferCreateInfo : return "BufferCreateInfo"; + case StructureType::eBufferViewCreateInfo : return "BufferViewCreateInfo"; + case StructureType::eImageCreateInfo : return "ImageCreateInfo"; + case StructureType::eImageViewCreateInfo : return "ImageViewCreateInfo"; + case StructureType::eShaderModuleCreateInfo : return "ShaderModuleCreateInfo"; + case StructureType::ePipelineCacheCreateInfo : return "PipelineCacheCreateInfo"; + case StructureType::ePipelineShaderStageCreateInfo : return "PipelineShaderStageCreateInfo"; + case StructureType::ePipelineVertexInputStateCreateInfo : return "PipelineVertexInputStateCreateInfo"; + case StructureType::ePipelineInputAssemblyStateCreateInfo : return "PipelineInputAssemblyStateCreateInfo"; + case StructureType::ePipelineTessellationStateCreateInfo : return "PipelineTessellationStateCreateInfo"; + case StructureType::ePipelineViewportStateCreateInfo : return "PipelineViewportStateCreateInfo"; + case StructureType::ePipelineRasterizationStateCreateInfo : return "PipelineRasterizationStateCreateInfo"; + case StructureType::ePipelineMultisampleStateCreateInfo : return "PipelineMultisampleStateCreateInfo"; + case StructureType::ePipelineDepthStencilStateCreateInfo : return "PipelineDepthStencilStateCreateInfo"; + case StructureType::ePipelineColorBlendStateCreateInfo : return "PipelineColorBlendStateCreateInfo"; + case StructureType::ePipelineDynamicStateCreateInfo : return "PipelineDynamicStateCreateInfo"; + case StructureType::eGraphicsPipelineCreateInfo : return "GraphicsPipelineCreateInfo"; + case StructureType::eComputePipelineCreateInfo : return "ComputePipelineCreateInfo"; + case StructureType::ePipelineLayoutCreateInfo : return "PipelineLayoutCreateInfo"; + case StructureType::eSamplerCreateInfo : return "SamplerCreateInfo"; + case StructureType::eDescriptorSetLayoutCreateInfo : return "DescriptorSetLayoutCreateInfo"; + case StructureType::eDescriptorPoolCreateInfo : return "DescriptorPoolCreateInfo"; + case StructureType::eDescriptorSetAllocateInfo : return "DescriptorSetAllocateInfo"; + case StructureType::eWriteDescriptorSet : return "WriteDescriptorSet"; + case StructureType::eCopyDescriptorSet : return "CopyDescriptorSet"; + case StructureType::eFramebufferCreateInfo : return "FramebufferCreateInfo"; + case StructureType::eRenderPassCreateInfo : return "RenderPassCreateInfo"; + case StructureType::eCommandPoolCreateInfo : return "CommandPoolCreateInfo"; + case StructureType::eCommandBufferAllocateInfo : return "CommandBufferAllocateInfo"; + case StructureType::eCommandBufferInheritanceInfo : return "CommandBufferInheritanceInfo"; + case StructureType::eCommandBufferBeginInfo : return "CommandBufferBeginInfo"; + case StructureType::eRenderPassBeginInfo : return "RenderPassBeginInfo"; + case StructureType::eBufferMemoryBarrier : return "BufferMemoryBarrier"; + case StructureType::eImageMemoryBarrier : return "ImageMemoryBarrier"; + case StructureType::eMemoryBarrier : return "MemoryBarrier"; + case StructureType::eLoaderInstanceCreateInfo : return "LoaderInstanceCreateInfo"; + case StructureType::eLoaderDeviceCreateInfo : return "LoaderDeviceCreateInfo"; + case StructureType::eBindBufferMemoryInfo : return "BindBufferMemoryInfo"; + case StructureType::eBindImageMemoryInfo : return "BindImageMemoryInfo"; + case StructureType::eMemoryDedicatedRequirements : return "MemoryDedicatedRequirements"; + case StructureType::eMemoryDedicatedAllocateInfo : return "MemoryDedicatedAllocateInfo"; + case StructureType::eMemoryAllocateFlagsInfo : return "MemoryAllocateFlagsInfo"; + case StructureType::eDeviceGroupCommandBufferBeginInfo : return "DeviceGroupCommandBufferBeginInfo"; + case StructureType::eDeviceGroupSubmitInfo : return "DeviceGroupSubmitInfo"; + case StructureType::eDeviceGroupBindSparseInfo : return "DeviceGroupBindSparseInfo"; + case StructureType::eBindBufferMemoryDeviceGroupInfo : return "BindBufferMemoryDeviceGroupInfo"; + case StructureType::eBindImageMemoryDeviceGroupInfo : return "BindImageMemoryDeviceGroupInfo"; + case StructureType::ePhysicalDeviceGroupProperties : return "PhysicalDeviceGroupProperties"; + case StructureType::eDeviceGroupDeviceCreateInfo : return "DeviceGroupDeviceCreateInfo"; + case StructureType::eBufferMemoryRequirementsInfo2 : return "BufferMemoryRequirementsInfo2"; + case StructureType::eImageMemoryRequirementsInfo2 : return "ImageMemoryRequirementsInfo2"; + case StructureType::eImageSparseMemoryRequirementsInfo2 : return "ImageSparseMemoryRequirementsInfo2"; + case StructureType::eMemoryRequirements2 : return "MemoryRequirements2"; + case StructureType::eSparseImageMemoryRequirements2 : return "SparseImageMemoryRequirements2"; + case StructureType::ePhysicalDeviceFeatures2 : return "PhysicalDeviceFeatures2"; + case StructureType::ePhysicalDeviceProperties2 : return "PhysicalDeviceProperties2"; + case StructureType::eFormatProperties2 : return "FormatProperties2"; + case StructureType::eImageFormatProperties2 : return "ImageFormatProperties2"; + case StructureType::ePhysicalDeviceImageFormatInfo2 : return "PhysicalDeviceImageFormatInfo2"; + case StructureType::eQueueFamilyProperties2 : return "QueueFamilyProperties2"; + case StructureType::ePhysicalDeviceMemoryProperties2 : return "PhysicalDeviceMemoryProperties2"; + case StructureType::eSparseImageFormatProperties2 : return "SparseImageFormatProperties2"; + case StructureType::ePhysicalDeviceSparseImageFormatInfo2 : return "PhysicalDeviceSparseImageFormatInfo2"; + case StructureType::eImageViewUsageCreateInfo : return "ImageViewUsageCreateInfo"; + case StructureType::eProtectedSubmitInfo : return "ProtectedSubmitInfo"; + case StructureType::ePhysicalDeviceProtectedMemoryFeatures : return "PhysicalDeviceProtectedMemoryFeatures"; + case StructureType::ePhysicalDeviceProtectedMemoryProperties : return "PhysicalDeviceProtectedMemoryProperties"; + case StructureType::eDeviceQueueInfo2 : return "DeviceQueueInfo2"; + case StructureType::ePhysicalDeviceExternalImageFormatInfo : return "PhysicalDeviceExternalImageFormatInfo"; + case StructureType::eExternalImageFormatProperties : return "ExternalImageFormatProperties"; + case StructureType::ePhysicalDeviceExternalBufferInfo : return "PhysicalDeviceExternalBufferInfo"; + case StructureType::eExternalBufferProperties : return "ExternalBufferProperties"; + case StructureType::ePhysicalDeviceIdProperties : return "PhysicalDeviceIdProperties"; + case StructureType::eExternalMemoryBufferCreateInfo : return "ExternalMemoryBufferCreateInfo"; + case StructureType::eExternalMemoryImageCreateInfo : return "ExternalMemoryImageCreateInfo"; + case StructureType::eExportMemoryAllocateInfo : return "ExportMemoryAllocateInfo"; + case StructureType::ePhysicalDeviceExternalFenceInfo : return "PhysicalDeviceExternalFenceInfo"; + case StructureType::eExternalFenceProperties : return "ExternalFenceProperties"; + case StructureType::eExportFenceCreateInfo : return "ExportFenceCreateInfo"; + case StructureType::eExportSemaphoreCreateInfo : return "ExportSemaphoreCreateInfo"; + case StructureType::ePhysicalDeviceExternalSemaphoreInfo : return "PhysicalDeviceExternalSemaphoreInfo"; + case StructureType::eExternalSemaphoreProperties : return "ExternalSemaphoreProperties"; + case StructureType::ePhysicalDeviceSubgroupProperties : return "PhysicalDeviceSubgroupProperties"; + case StructureType::ePhysicalDevice16BitStorageFeatures : return "PhysicalDevice16BitStorageFeatures"; + case StructureType::ePhysicalDeviceVariablePointersFeatures : return "PhysicalDeviceVariablePointersFeatures"; + case StructureType::eDescriptorUpdateTemplateCreateInfo : return "DescriptorUpdateTemplateCreateInfo"; + case StructureType::ePhysicalDeviceMaintenance3Properties : return "PhysicalDeviceMaintenance3Properties"; + case StructureType::eDescriptorSetLayoutSupport : return "DescriptorSetLayoutSupport"; + case StructureType::eSamplerYcbcrConversionCreateInfo : return "SamplerYcbcrConversionCreateInfo"; + case StructureType::eSamplerYcbcrConversionInfo : return "SamplerYcbcrConversionInfo"; + case StructureType::eBindImagePlaneMemoryInfo : return "BindImagePlaneMemoryInfo"; + case StructureType::eImagePlaneMemoryRequirementsInfo : return "ImagePlaneMemoryRequirementsInfo"; + case StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures : return "PhysicalDeviceSamplerYcbcrConversionFeatures"; + case StructureType::eSamplerYcbcrConversionImageFormatProperties : return "SamplerYcbcrConversionImageFormatProperties"; + case StructureType::eDeviceGroupRenderPassBeginInfo : return "DeviceGroupRenderPassBeginInfo"; + case StructureType::ePhysicalDevicePointClippingProperties : return "PhysicalDevicePointClippingProperties"; + case StructureType::eRenderPassInputAttachmentAspectCreateInfo : return "RenderPassInputAttachmentAspectCreateInfo"; + case StructureType::ePipelineTessellationDomainOriginStateCreateInfo : return "PipelineTessellationDomainOriginStateCreateInfo"; + case StructureType::eRenderPassMultiviewCreateInfo : return "RenderPassMultiviewCreateInfo"; + case StructureType::ePhysicalDeviceMultiviewFeatures : return "PhysicalDeviceMultiviewFeatures"; + case StructureType::ePhysicalDeviceMultiviewProperties : return "PhysicalDeviceMultiviewProperties"; + case StructureType::ePhysicalDeviceShaderDrawParametersFeatures : return "PhysicalDeviceShaderDrawParametersFeatures"; + case StructureType::ePhysicalDeviceDriverProperties : return "PhysicalDeviceDriverProperties"; + case StructureType::ePhysicalDeviceVulkan11Features : return "PhysicalDeviceVulkan11Features"; + case StructureType::ePhysicalDeviceVulkan11Properties : return "PhysicalDeviceVulkan11Properties"; + case StructureType::ePhysicalDeviceVulkan12Features : return "PhysicalDeviceVulkan12Features"; + case StructureType::ePhysicalDeviceVulkan12Properties : return "PhysicalDeviceVulkan12Properties"; + case StructureType::eImageFormatListCreateInfo : return "ImageFormatListCreateInfo"; + case StructureType::ePhysicalDeviceVulkanMemoryModelFeatures : return "PhysicalDeviceVulkanMemoryModelFeatures"; + case StructureType::ePhysicalDeviceHostQueryResetFeatures : return "PhysicalDeviceHostQueryResetFeatures"; + case StructureType::ePhysicalDeviceTimelineSemaphoreFeatures : return "PhysicalDeviceTimelineSemaphoreFeatures"; + case StructureType::ePhysicalDeviceTimelineSemaphoreProperties : return "PhysicalDeviceTimelineSemaphoreProperties"; + case StructureType::eSemaphoreTypeCreateInfo : return "SemaphoreTypeCreateInfo"; + case StructureType::eTimelineSemaphoreSubmitInfo : return "TimelineSemaphoreSubmitInfo"; + case StructureType::eSemaphoreWaitInfo : return "SemaphoreWaitInfo"; + case StructureType::eSemaphoreSignalInfo : return "SemaphoreSignalInfo"; + case StructureType::ePhysicalDeviceBufferDeviceAddressFeatures : return "PhysicalDeviceBufferDeviceAddressFeatures"; + case StructureType::eBufferDeviceAddressInfo : return "BufferDeviceAddressInfo"; + case StructureType::eBufferOpaqueCaptureAddressCreateInfo : return "BufferOpaqueCaptureAddressCreateInfo"; + case StructureType::eMemoryOpaqueCaptureAddressAllocateInfo : return "MemoryOpaqueCaptureAddressAllocateInfo"; + case StructureType::eDeviceMemoryOpaqueCaptureAddressInfo : return "DeviceMemoryOpaqueCaptureAddressInfo"; + case StructureType::ePhysicalDevice8BitStorageFeatures : return "PhysicalDevice8BitStorageFeatures"; + case StructureType::ePhysicalDeviceShaderAtomicInt64Features : return "PhysicalDeviceShaderAtomicInt64Features"; + case StructureType::ePhysicalDeviceShaderFloat16Int8Features : return "PhysicalDeviceShaderFloat16Int8Features"; + case StructureType::ePhysicalDeviceFloatControlsProperties : return "PhysicalDeviceFloatControlsProperties"; + case StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo : return "DescriptorSetLayoutBindingFlagsCreateInfo"; + case StructureType::ePhysicalDeviceDescriptorIndexingFeatures : return "PhysicalDeviceDescriptorIndexingFeatures"; + case StructureType::ePhysicalDeviceDescriptorIndexingProperties : return "PhysicalDeviceDescriptorIndexingProperties"; + case StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo : return "DescriptorSetVariableDescriptorCountAllocateInfo"; + case StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport : return "DescriptorSetVariableDescriptorCountLayoutSupport"; + case StructureType::ePhysicalDeviceScalarBlockLayoutFeatures : return "PhysicalDeviceScalarBlockLayoutFeatures"; + case StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties : return "PhysicalDeviceSamplerFilterMinmaxProperties"; + case StructureType::eSamplerReductionModeCreateInfo : return "SamplerReductionModeCreateInfo"; + case StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures : return "PhysicalDeviceUniformBufferStandardLayoutFeatures"; + case StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures : return "PhysicalDeviceShaderSubgroupExtendedTypesFeatures"; + case StructureType::eAttachmentDescription2 : return "AttachmentDescription2"; + case StructureType::eAttachmentReference2 : return "AttachmentReference2"; + case StructureType::eSubpassDescription2 : return "SubpassDescription2"; + case StructureType::eSubpassDependency2 : return "SubpassDependency2"; + case StructureType::eRenderPassCreateInfo2 : return "RenderPassCreateInfo2"; + case StructureType::eSubpassBeginInfo : return "SubpassBeginInfo"; + case StructureType::eSubpassEndInfo : return "SubpassEndInfo"; + case StructureType::ePhysicalDeviceDepthStencilResolveProperties : return "PhysicalDeviceDepthStencilResolveProperties"; + case StructureType::eSubpassDescriptionDepthStencilResolve : return "SubpassDescriptionDepthStencilResolve"; + case StructureType::eImageStencilUsageCreateInfo : return "ImageStencilUsageCreateInfo"; + case StructureType::ePhysicalDeviceImagelessFramebufferFeatures : return "PhysicalDeviceImagelessFramebufferFeatures"; + case StructureType::eFramebufferAttachmentsCreateInfo : return "FramebufferAttachmentsCreateInfo"; + case StructureType::eFramebufferAttachmentImageInfo : return "FramebufferAttachmentImageInfo"; + case StructureType::eRenderPassAttachmentBeginInfo : return "RenderPassAttachmentBeginInfo"; + case StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures : return "PhysicalDeviceSeparateDepthStencilLayoutsFeatures"; + case StructureType::eAttachmentReferenceStencilLayout : return "AttachmentReferenceStencilLayout"; + case StructureType::eAttachmentDescriptionStencilLayout : return "AttachmentDescriptionStencilLayout"; + case StructureType::ePhysicalDeviceVulkan13Features : return "PhysicalDeviceVulkan13Features"; + case StructureType::ePhysicalDeviceVulkan13Properties : return "PhysicalDeviceVulkan13Properties"; + case StructureType::ePhysicalDeviceToolProperties : return "PhysicalDeviceToolProperties"; + case StructureType::ePhysicalDevicePrivateDataFeatures : return "PhysicalDevicePrivateDataFeatures"; + case StructureType::eDevicePrivateDataCreateInfo : return "DevicePrivateDataCreateInfo"; + case StructureType::ePrivateDataSlotCreateInfo : return "PrivateDataSlotCreateInfo"; + case StructureType::eMemoryBarrier2 : return "MemoryBarrier2"; + case StructureType::eBufferMemoryBarrier2 : return "BufferMemoryBarrier2"; + case StructureType::eImageMemoryBarrier2 : return "ImageMemoryBarrier2"; + case StructureType::eDependencyInfo : return "DependencyInfo"; + case StructureType::eSubmitInfo2 : return "SubmitInfo2"; + case StructureType::eSemaphoreSubmitInfo : return "SemaphoreSubmitInfo"; + case StructureType::eCommandBufferSubmitInfo : return "CommandBufferSubmitInfo"; + case StructureType::ePhysicalDeviceSynchronization2Features : return "PhysicalDeviceSynchronization2Features"; + case StructureType::eCopyBufferInfo2 : return "CopyBufferInfo2"; + case StructureType::eCopyImageInfo2 : return "CopyImageInfo2"; + case StructureType::eCopyBufferToImageInfo2 : return "CopyBufferToImageInfo2"; + case StructureType::eCopyImageToBufferInfo2 : return "CopyImageToBufferInfo2"; + case StructureType::eBufferCopy2 : return "BufferCopy2"; + case StructureType::eImageCopy2 : return "ImageCopy2"; + case StructureType::eBufferImageCopy2 : return "BufferImageCopy2"; + case StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeatures : return "PhysicalDeviceTextureCompressionAstcHdrFeatures"; + case StructureType::eFormatProperties3 : return "FormatProperties3"; + case StructureType::ePhysicalDeviceMaintenance4Features : return "PhysicalDeviceMaintenance4Features"; + case StructureType::ePhysicalDeviceMaintenance4Properties : return "PhysicalDeviceMaintenance4Properties"; + case StructureType::eDeviceBufferMemoryRequirements : return "DeviceBufferMemoryRequirements"; + case StructureType::eDeviceImageMemoryRequirements : return "DeviceImageMemoryRequirements"; + case StructureType::ePipelineCreationFeedbackCreateInfo : return "PipelineCreationFeedbackCreateInfo"; + case StructureType::ePhysicalDeviceShaderTerminateInvocationFeatures : return "PhysicalDeviceShaderTerminateInvocationFeatures"; + case StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeatures: return "PhysicalDeviceShaderDemoteToHelperInvocationFeatures"; + case StructureType::ePhysicalDevicePipelineCreationCacheControlFeatures : return "PhysicalDevicePipelineCreationCacheControlFeatures"; + case StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeatures : return "PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures"; + case StructureType::ePhysicalDeviceImageRobustnessFeatures : return "PhysicalDeviceImageRobustnessFeatures"; + case StructureType::ePhysicalDeviceSubgroupSizeControlProperties : return "PhysicalDeviceSubgroupSizeControlProperties"; + case StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfo : return "PipelineShaderStageRequiredSubgroupSizeCreateInfo"; + case StructureType::ePhysicalDeviceSubgroupSizeControlFeatures : return "PhysicalDeviceSubgroupSizeControlFeatures"; + case StructureType::ePhysicalDeviceInlineUniformBlockFeatures : return "PhysicalDeviceInlineUniformBlockFeatures"; + case StructureType::ePhysicalDeviceInlineUniformBlockProperties : return "PhysicalDeviceInlineUniformBlockProperties"; + case StructureType::eWriteDescriptorSetInlineUniformBlock : return "WriteDescriptorSetInlineUniformBlock"; + case StructureType::eDescriptorPoolInlineUniformBlockCreateInfo : return "DescriptorPoolInlineUniformBlockCreateInfo"; + case StructureType::ePhysicalDeviceShaderIntegerDotProductFeatures : return "PhysicalDeviceShaderIntegerDotProductFeatures"; + case StructureType::ePhysicalDeviceShaderIntegerDotProductProperties : return "PhysicalDeviceShaderIntegerDotProductProperties"; + case StructureType::ePhysicalDeviceTexelBufferAlignmentProperties : return "PhysicalDeviceTexelBufferAlignmentProperties"; + case StructureType::eBlitImageInfo2 : return "BlitImageInfo2"; + case StructureType::eResolveImageInfo2 : return "ResolveImageInfo2"; + case StructureType::eImageBlit2 : return "ImageBlit2"; + case StructureType::eImageResolve2 : return "ImageResolve2"; + case StructureType::eRenderingInfo : return "RenderingInfo"; + case StructureType::eRenderingAttachmentInfo : return "RenderingAttachmentInfo"; + case StructureType::ePipelineRenderingCreateInfo : return "PipelineRenderingCreateInfo"; + case StructureType::ePhysicalDeviceDynamicRenderingFeatures : return "PhysicalDeviceDynamicRenderingFeatures"; + case StructureType::eCommandBufferInheritanceRenderingInfo : return "CommandBufferInheritanceRenderingInfo"; + case StructureType::ePhysicalDeviceVulkan14Features : return "PhysicalDeviceVulkan14Features"; + case StructureType::ePhysicalDeviceVulkan14Properties : return "PhysicalDeviceVulkan14Properties"; + case StructureType::eDeviceQueueGlobalPriorityCreateInfo : return "DeviceQueueGlobalPriorityCreateInfo"; + case StructureType::ePhysicalDeviceGlobalPriorityQueryFeatures : return "PhysicalDeviceGlobalPriorityQueryFeatures"; + case StructureType::eQueueFamilyGlobalPriorityProperties : return "QueueFamilyGlobalPriorityProperties"; + case StructureType::ePhysicalDeviceIndexTypeUint8Features : return "PhysicalDeviceIndexTypeUint8Features"; + case StructureType::eMemoryMapInfo : return "MemoryMapInfo"; + case StructureType::eMemoryUnmapInfo : return "MemoryUnmapInfo"; + case StructureType::ePhysicalDeviceMaintenance5Features : return "PhysicalDeviceMaintenance5Features"; + case StructureType::ePhysicalDeviceMaintenance5Properties : return "PhysicalDeviceMaintenance5Properties"; + case StructureType::eDeviceImageSubresourceInfo : return "DeviceImageSubresourceInfo"; + case StructureType::eSubresourceLayout2 : return "SubresourceLayout2"; + case StructureType::eImageSubresource2 : return "ImageSubresource2"; + case StructureType::eBufferUsageFlags2CreateInfo : return "BufferUsageFlags2CreateInfo"; + case StructureType::ePhysicalDeviceMaintenance6Features : return "PhysicalDeviceMaintenance6Features"; + case StructureType::ePhysicalDeviceMaintenance6Properties : return "PhysicalDeviceMaintenance6Properties"; + case StructureType::eBindMemoryStatus : return "BindMemoryStatus"; + case StructureType::ePhysicalDeviceHostImageCopyFeatures : return "PhysicalDeviceHostImageCopyFeatures"; + case StructureType::ePhysicalDeviceHostImageCopyProperties : return "PhysicalDeviceHostImageCopyProperties"; + case StructureType::eMemoryToImageCopy : return "MemoryToImageCopy"; + case StructureType::eImageToMemoryCopy : return "ImageToMemoryCopy"; + case StructureType::eCopyImageToMemoryInfo : return "CopyImageToMemoryInfo"; + case StructureType::eCopyMemoryToImageInfo : return "CopyMemoryToImageInfo"; + case StructureType::eHostImageLayoutTransitionInfo : return "HostImageLayoutTransitionInfo"; + case StructureType::eCopyImageToImageInfo : return "CopyImageToImageInfo"; + case StructureType::eSubresourceHostMemcpySize : return "SubresourceHostMemcpySize"; + case StructureType::eHostImageCopyDevicePerformanceQuery : return "HostImageCopyDevicePerformanceQuery"; + case StructureType::ePhysicalDeviceShaderSubgroupRotateFeatures : return "PhysicalDeviceShaderSubgroupRotateFeatures"; + case StructureType::ePhysicalDeviceShaderFloatControls2Features : return "PhysicalDeviceShaderFloatControls2Features"; + case StructureType::ePhysicalDeviceShaderExpectAssumeFeatures : return "PhysicalDeviceShaderExpectAssumeFeatures"; + case StructureType::ePipelineCreateFlags2CreateInfo : return "PipelineCreateFlags2CreateInfo"; + case StructureType::ePhysicalDevicePushDescriptorProperties : return "PhysicalDevicePushDescriptorProperties"; + case StructureType::eBindDescriptorSetsInfo : return "BindDescriptorSetsInfo"; + case StructureType::ePushConstantsInfo : return "PushConstantsInfo"; + case StructureType::ePushDescriptorSetInfo : return "PushDescriptorSetInfo"; + case StructureType::ePushDescriptorSetWithTemplateInfo : return "PushDescriptorSetWithTemplateInfo"; + case StructureType::ePhysicalDevicePipelineProtectedAccessFeatures : return "PhysicalDevicePipelineProtectedAccessFeatures"; + case StructureType::ePipelineRobustnessCreateInfo : return "PipelineRobustnessCreateInfo"; + case StructureType::ePhysicalDevicePipelineRobustnessFeatures : return "PhysicalDevicePipelineRobustnessFeatures"; + case StructureType::ePhysicalDevicePipelineRobustnessProperties : return "PhysicalDevicePipelineRobustnessProperties"; + case StructureType::ePhysicalDeviceLineRasterizationFeatures : return "PhysicalDeviceLineRasterizationFeatures"; + case StructureType::ePipelineRasterizationLineStateCreateInfo : return "PipelineRasterizationLineStateCreateInfo"; + case StructureType::ePhysicalDeviceLineRasterizationProperties : return "PhysicalDeviceLineRasterizationProperties"; + case StructureType::ePhysicalDeviceVertexAttributeDivisorProperties : return "PhysicalDeviceVertexAttributeDivisorProperties"; + case StructureType::ePipelineVertexInputDivisorStateCreateInfo : return "PipelineVertexInputDivisorStateCreateInfo"; + case StructureType::ePhysicalDeviceVertexAttributeDivisorFeatures : return "PhysicalDeviceVertexAttributeDivisorFeatures"; + case StructureType::eRenderingAreaInfo : return "RenderingAreaInfo"; + case StructureType::ePhysicalDeviceDynamicRenderingLocalReadFeatures : return "PhysicalDeviceDynamicRenderingLocalReadFeatures"; + case StructureType::eRenderingAttachmentLocationInfo : return "RenderingAttachmentLocationInfo"; + case StructureType::eRenderingInputAttachmentIndexInfo : return "RenderingInputAttachmentIndexInfo"; + case StructureType::eSwapchainCreateInfoKHR : return "SwapchainCreateInfoKHR"; + case StructureType::ePresentInfoKHR : return "PresentInfoKHR"; + case StructureType::eDeviceGroupPresentCapabilitiesKHR : return "DeviceGroupPresentCapabilitiesKHR"; + case StructureType::eImageSwapchainCreateInfoKHR : return "ImageSwapchainCreateInfoKHR"; + case StructureType::eBindImageMemorySwapchainInfoKHR : return "BindImageMemorySwapchainInfoKHR"; + case StructureType::eAcquireNextImageInfoKHR : return "AcquireNextImageInfoKHR"; + case StructureType::eDeviceGroupPresentInfoKHR : return "DeviceGroupPresentInfoKHR"; + case StructureType::eDeviceGroupSwapchainCreateInfoKHR : return "DeviceGroupSwapchainCreateInfoKHR"; + case StructureType::eDisplayModeCreateInfoKHR : return "DisplayModeCreateInfoKHR"; + case StructureType::eDisplaySurfaceCreateInfoKHR : return "DisplaySurfaceCreateInfoKHR"; + case StructureType::eDisplayPresentInfoKHR : return "DisplayPresentInfoKHR"; +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR"; +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ +#if defined( VK_USE_PLATFORM_XCB_KHR ) + case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR"; +#endif /*VK_USE_PLATFORM_XCB_KHR*/ +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR"; +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR"; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eDebugReportCallbackCreateInfoEXT : return "DebugReportCallbackCreateInfoEXT"; + case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD"; + case StructureType::eDebugMarkerObjectNameInfoEXT : return "DebugMarkerObjectNameInfoEXT"; + case StructureType::eDebugMarkerObjectTagInfoEXT : return "DebugMarkerObjectTagInfoEXT"; + case StructureType::eDebugMarkerMarkerInfoEXT : return "DebugMarkerMarkerInfoEXT"; + case StructureType::eVideoProfileInfoKHR : return "VideoProfileInfoKHR"; + case StructureType::eVideoCapabilitiesKHR : return "VideoCapabilitiesKHR"; + case StructureType::eVideoPictureResourceInfoKHR : return "VideoPictureResourceInfoKHR"; + case StructureType::eVideoSessionMemoryRequirementsKHR : return "VideoSessionMemoryRequirementsKHR"; + case StructureType::eBindVideoSessionMemoryInfoKHR : return "BindVideoSessionMemoryInfoKHR"; + case StructureType::eVideoSessionCreateInfoKHR : return "VideoSessionCreateInfoKHR"; + case StructureType::eVideoSessionParametersCreateInfoKHR : return "VideoSessionParametersCreateInfoKHR"; + case StructureType::eVideoSessionParametersUpdateInfoKHR : return "VideoSessionParametersUpdateInfoKHR"; + case StructureType::eVideoBeginCodingInfoKHR : return "VideoBeginCodingInfoKHR"; + case StructureType::eVideoEndCodingInfoKHR : return "VideoEndCodingInfoKHR"; + case StructureType::eVideoCodingControlInfoKHR : return "VideoCodingControlInfoKHR"; + case StructureType::eVideoReferenceSlotInfoKHR : return "VideoReferenceSlotInfoKHR"; + case StructureType::eQueueFamilyVideoPropertiesKHR : return "QueueFamilyVideoPropertiesKHR"; + case StructureType::eVideoProfileListInfoKHR : return "VideoProfileListInfoKHR"; + case StructureType::ePhysicalDeviceVideoFormatInfoKHR : return "PhysicalDeviceVideoFormatInfoKHR"; + case StructureType::eVideoFormatPropertiesKHR : return "VideoFormatPropertiesKHR"; + case StructureType::eQueueFamilyQueryResultStatusPropertiesKHR : return "QueueFamilyQueryResultStatusPropertiesKHR"; + case StructureType::eVideoDecodeInfoKHR : return "VideoDecodeInfoKHR"; + case StructureType::eVideoDecodeCapabilitiesKHR : return "VideoDecodeCapabilitiesKHR"; + case StructureType::eVideoDecodeUsageInfoKHR : return "VideoDecodeUsageInfoKHR"; + case StructureType::eDedicatedAllocationImageCreateInfoNV : return "DedicatedAllocationImageCreateInfoNV"; + case StructureType::eDedicatedAllocationBufferCreateInfoNV : return "DedicatedAllocationBufferCreateInfoNV"; + case StructureType::eDedicatedAllocationMemoryAllocateInfoNV : return "DedicatedAllocationMemoryAllocateInfoNV"; + case StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT : return "PhysicalDeviceTransformFeedbackFeaturesEXT"; + case StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT : return "PhysicalDeviceTransformFeedbackPropertiesEXT"; + case StructureType::ePipelineRasterizationStateStreamCreateInfoEXT : return "PipelineRasterizationStateStreamCreateInfoEXT"; + case StructureType::eCuModuleCreateInfoNVX : return "CuModuleCreateInfoNVX"; + case StructureType::eCuFunctionCreateInfoNVX : return "CuFunctionCreateInfoNVX"; + case StructureType::eCuLaunchInfoNVX : return "CuLaunchInfoNVX"; + case StructureType::eCuModuleTexturingModeCreateInfoNVX : return "CuModuleTexturingModeCreateInfoNVX"; + case StructureType::eImageViewHandleInfoNVX : return "ImageViewHandleInfoNVX"; + case StructureType::eImageViewAddressPropertiesNVX : return "ImageViewAddressPropertiesNVX"; + case StructureType::eVideoEncodeH264CapabilitiesKHR : return "VideoEncodeH264CapabilitiesKHR"; + case StructureType::eVideoEncodeH264SessionParametersCreateInfoKHR : return "VideoEncodeH264SessionParametersCreateInfoKHR"; + case StructureType::eVideoEncodeH264SessionParametersAddInfoKHR : return "VideoEncodeH264SessionParametersAddInfoKHR"; + case StructureType::eVideoEncodeH264PictureInfoKHR : return "VideoEncodeH264PictureInfoKHR"; + case StructureType::eVideoEncodeH264DpbSlotInfoKHR : return "VideoEncodeH264DpbSlotInfoKHR"; + case StructureType::eVideoEncodeH264NaluSliceInfoKHR : return "VideoEncodeH264NaluSliceInfoKHR"; + case StructureType::eVideoEncodeH264GopRemainingFrameInfoKHR : return "VideoEncodeH264GopRemainingFrameInfoKHR"; + case StructureType::eVideoEncodeH264ProfileInfoKHR : return "VideoEncodeH264ProfileInfoKHR"; + case StructureType::eVideoEncodeH264RateControlInfoKHR : return "VideoEncodeH264RateControlInfoKHR"; + case StructureType::eVideoEncodeH264RateControlLayerInfoKHR : return "VideoEncodeH264RateControlLayerInfoKHR"; + case StructureType::eVideoEncodeH264SessionCreateInfoKHR : return "VideoEncodeH264SessionCreateInfoKHR"; + case StructureType::eVideoEncodeH264QualityLevelPropertiesKHR : return "VideoEncodeH264QualityLevelPropertiesKHR"; + case StructureType::eVideoEncodeH264SessionParametersGetInfoKHR : return "VideoEncodeH264SessionParametersGetInfoKHR"; + case StructureType::eVideoEncodeH264SessionParametersFeedbackInfoKHR: return "VideoEncodeH264SessionParametersFeedbackInfoKHR"; + case StructureType::eVideoEncodeH265CapabilitiesKHR : return "VideoEncodeH265CapabilitiesKHR"; + case StructureType::eVideoEncodeH265SessionParametersCreateInfoKHR : return "VideoEncodeH265SessionParametersCreateInfoKHR"; + case StructureType::eVideoEncodeH265SessionParametersAddInfoKHR : return "VideoEncodeH265SessionParametersAddInfoKHR"; + case StructureType::eVideoEncodeH265PictureInfoKHR : return "VideoEncodeH265PictureInfoKHR"; + case StructureType::eVideoEncodeH265DpbSlotInfoKHR : return "VideoEncodeH265DpbSlotInfoKHR"; + case StructureType::eVideoEncodeH265NaluSliceSegmentInfoKHR : return "VideoEncodeH265NaluSliceSegmentInfoKHR"; + case StructureType::eVideoEncodeH265GopRemainingFrameInfoKHR : return "VideoEncodeH265GopRemainingFrameInfoKHR"; + case StructureType::eVideoEncodeH265ProfileInfoKHR : return "VideoEncodeH265ProfileInfoKHR"; + case StructureType::eVideoEncodeH265RateControlInfoKHR : return "VideoEncodeH265RateControlInfoKHR"; + case StructureType::eVideoEncodeH265RateControlLayerInfoKHR : return "VideoEncodeH265RateControlLayerInfoKHR"; + case StructureType::eVideoEncodeH265SessionCreateInfoKHR : return "VideoEncodeH265SessionCreateInfoKHR"; + case StructureType::eVideoEncodeH265QualityLevelPropertiesKHR : return "VideoEncodeH265QualityLevelPropertiesKHR"; + case StructureType::eVideoEncodeH265SessionParametersGetInfoKHR : return "VideoEncodeH265SessionParametersGetInfoKHR"; + case StructureType::eVideoEncodeH265SessionParametersFeedbackInfoKHR: return "VideoEncodeH265SessionParametersFeedbackInfoKHR"; + case StructureType::eVideoDecodeH264CapabilitiesKHR : return "VideoDecodeH264CapabilitiesKHR"; + case StructureType::eVideoDecodeH264PictureInfoKHR : return "VideoDecodeH264PictureInfoKHR"; + case StructureType::eVideoDecodeH264ProfileInfoKHR : return "VideoDecodeH264ProfileInfoKHR"; + case StructureType::eVideoDecodeH264SessionParametersCreateInfoKHR : return "VideoDecodeH264SessionParametersCreateInfoKHR"; + case StructureType::eVideoDecodeH264SessionParametersAddInfoKHR : return "VideoDecodeH264SessionParametersAddInfoKHR"; + case StructureType::eVideoDecodeH264DpbSlotInfoKHR : return "VideoDecodeH264DpbSlotInfoKHR"; + case StructureType::eTextureLodGatherFormatPropertiesAMD : return "TextureLodGatherFormatPropertiesAMD"; +#if defined( VK_USE_PLATFORM_GGP ) + case StructureType::eStreamDescriptorSurfaceCreateInfoGGP: return "StreamDescriptorSurfaceCreateInfoGGP"; +#endif /*VK_USE_PLATFORM_GGP*/ + case StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV: return "PhysicalDeviceCornerSampledImageFeaturesNV"; + case StructureType::eExternalMemoryImageCreateInfoNV : return "ExternalMemoryImageCreateInfoNV"; + case StructureType::eExportMemoryAllocateInfoNV : return "ExportMemoryAllocateInfoNV"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eImportMemoryWin32HandleInfoNV : return "ImportMemoryWin32HandleInfoNV"; + case StructureType::eExportMemoryWin32HandleInfoNV : return "ExportMemoryWin32HandleInfoNV"; + case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT"; +#if defined( VK_USE_PLATFORM_VI_NN ) + case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN"; +#endif /*VK_USE_PLATFORM_VI_NN*/ + case StructureType::eImageViewAstcDecodeModeEXT : return "ImageViewAstcDecodeModeEXT"; + case StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT: return "PhysicalDeviceAstcDecodeFeaturesEXT"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR"; + case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR"; + case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR"; + case StructureType::eMemoryGetWin32HandleInfoKHR : return "MemoryGetWin32HandleInfoKHR"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR"; + case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR"; + case StructureType::eMemoryGetFdInfoKHR : return "MemoryGetFdInfoKHR"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR"; + case StructureType::eImportSemaphoreWin32HandleInfoKHR : return "ImportSemaphoreWin32HandleInfoKHR"; + case StructureType::eExportSemaphoreWin32HandleInfoKHR : return "ExportSemaphoreWin32HandleInfoKHR"; + case StructureType::eD3D12FenceSubmitInfoKHR : return "D3D12FenceSubmitInfoKHR"; + case StructureType::eSemaphoreGetWin32HandleInfoKHR : return "SemaphoreGetWin32HandleInfoKHR"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eImportSemaphoreFdInfoKHR : return "ImportSemaphoreFdInfoKHR"; + case StructureType::eSemaphoreGetFdInfoKHR : return "SemaphoreGetFdInfoKHR"; + case StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT : return "CommandBufferInheritanceConditionalRenderingInfoEXT"; + case StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT : return "PhysicalDeviceConditionalRenderingFeaturesEXT"; + case StructureType::eConditionalRenderingBeginInfoEXT : return "ConditionalRenderingBeginInfoEXT"; + case StructureType::ePresentRegionsKHR : return "PresentRegionsKHR"; + case StructureType::ePipelineViewportWScalingStateCreateInfoNV : return "PipelineViewportWScalingStateCreateInfoNV"; + case StructureType::eSurfaceCapabilities2EXT : return "SurfaceCapabilities2EXT"; + case StructureType::eDisplayPowerInfoEXT : return "DisplayPowerInfoEXT"; + case StructureType::eDeviceEventInfoEXT : return "DeviceEventInfoEXT"; + case StructureType::eDisplayEventInfoEXT : return "DisplayEventInfoEXT"; + case StructureType::eSwapchainCounterCreateInfoEXT : return "SwapchainCounterCreateInfoEXT"; + case StructureType::ePresentTimesInfoGOOGLE : return "PresentTimesInfoGOOGLE"; + case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX"; + case StructureType::eMultiviewPerViewAttributesInfoNVX : return "MultiviewPerViewAttributesInfoNVX"; + case StructureType::ePipelineViewportSwizzleStateCreateInfoNV : return "PipelineViewportSwizzleStateCreateInfoNV"; + case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT : return "PhysicalDeviceDiscardRectanglePropertiesEXT"; + case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT : return "PipelineDiscardRectangleStateCreateInfoEXT"; + case StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT : return "PhysicalDeviceConservativeRasterizationPropertiesEXT"; + case StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT : return "PipelineRasterizationConservativeStateCreateInfoEXT"; + case StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT : return "PhysicalDeviceDepthClipEnableFeaturesEXT"; + case StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT : return "PipelineRasterizationDepthClipStateCreateInfoEXT"; + case StructureType::eHdrMetadataEXT : return "HdrMetadataEXT"; + case StructureType::ePhysicalDeviceRelaxedLineRasterizationFeaturesIMG : return "PhysicalDeviceRelaxedLineRasterizationFeaturesIMG"; + case StructureType::eSharedPresentSurfaceCapabilitiesKHR : return "SharedPresentSurfaceCapabilitiesKHR"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR"; + case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR"; + case StructureType::eFenceGetWin32HandleInfoKHR : return "FenceGetWin32HandleInfoKHR"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eImportFenceFdInfoKHR : return "ImportFenceFdInfoKHR"; + case StructureType::eFenceGetFdInfoKHR : return "FenceGetFdInfoKHR"; + case StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR : return "PhysicalDevicePerformanceQueryFeaturesKHR"; + case StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR: return "PhysicalDevicePerformanceQueryPropertiesKHR"; + case StructureType::eQueryPoolPerformanceCreateInfoKHR : return "QueryPoolPerformanceCreateInfoKHR"; + case StructureType::ePerformanceQuerySubmitInfoKHR : return "PerformanceQuerySubmitInfoKHR"; + case StructureType::eAcquireProfilingLockInfoKHR : return "AcquireProfilingLockInfoKHR"; + case StructureType::ePerformanceCounterKHR : return "PerformanceCounterKHR"; + case StructureType::ePerformanceCounterDescriptionKHR : return "PerformanceCounterDescriptionKHR"; + case StructureType::ePhysicalDeviceSurfaceInfo2KHR : return "PhysicalDeviceSurfaceInfo2KHR"; + case StructureType::eSurfaceCapabilities2KHR : return "SurfaceCapabilities2KHR"; + case StructureType::eSurfaceFormat2KHR : return "SurfaceFormat2KHR"; + case StructureType::eDisplayProperties2KHR : return "DisplayProperties2KHR"; + case StructureType::eDisplayPlaneProperties2KHR : return "DisplayPlaneProperties2KHR"; + case StructureType::eDisplayModeProperties2KHR : return "DisplayModeProperties2KHR"; + case StructureType::eDisplayPlaneInfo2KHR : return "DisplayPlaneInfo2KHR"; + case StructureType::eDisplayPlaneCapabilities2KHR : return "DisplayPlaneCapabilities2KHR"; +#if defined( VK_USE_PLATFORM_IOS_MVK ) + case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK"; +#endif /*VK_USE_PLATFORM_IOS_MVK*/ +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK"; +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + case StructureType::eDebugUtilsObjectNameInfoEXT : return "DebugUtilsObjectNameInfoEXT"; + case StructureType::eDebugUtilsObjectTagInfoEXT : return "DebugUtilsObjectTagInfoEXT"; + case StructureType::eDebugUtilsLabelEXT : return "DebugUtilsLabelEXT"; + case StructureType::eDebugUtilsMessengerCallbackDataEXT: return "DebugUtilsMessengerCallbackDataEXT"; + case StructureType::eDebugUtilsMessengerCreateInfoEXT : return "DebugUtilsMessengerCreateInfoEXT"; +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + case StructureType::eAndroidHardwareBufferUsageANDROID : return "AndroidHardwareBufferUsageANDROID"; + case StructureType::eAndroidHardwareBufferPropertiesANDROID : return "AndroidHardwareBufferPropertiesANDROID"; + case StructureType::eAndroidHardwareBufferFormatPropertiesANDROID : return "AndroidHardwareBufferFormatPropertiesANDROID"; + case StructureType::eImportAndroidHardwareBufferInfoANDROID : return "ImportAndroidHardwareBufferInfoANDROID"; + case StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID : return "MemoryGetAndroidHardwareBufferInfoANDROID"; + case StructureType::eExternalFormatANDROID : return "ExternalFormatANDROID"; + case StructureType::eAndroidHardwareBufferFormatProperties2ANDROID: return "AndroidHardwareBufferFormatProperties2ANDROID"; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::ePhysicalDeviceShaderEnqueueFeaturesAMDX : return "PhysicalDeviceShaderEnqueueFeaturesAMDX"; + case StructureType::ePhysicalDeviceShaderEnqueuePropertiesAMDX: return "PhysicalDeviceShaderEnqueuePropertiesAMDX"; + case StructureType::eExecutionGraphPipelineScratchSizeAMDX : return "ExecutionGraphPipelineScratchSizeAMDX"; + case StructureType::eExecutionGraphPipelineCreateInfoAMDX : return "ExecutionGraphPipelineCreateInfoAMDX"; + case StructureType::ePipelineShaderStageNodeCreateInfoAMDX : return "PipelineShaderStageNodeCreateInfoAMDX"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case StructureType::eTexelBufferDescriptorInfoEXT : return "TexelBufferDescriptorInfoEXT"; + case StructureType::eImageDescriptorInfoEXT : return "ImageDescriptorInfoEXT"; + case StructureType::eResourceDescriptorInfoEXT : return "ResourceDescriptorInfoEXT"; + case StructureType::eBindHeapInfoEXT : return "BindHeapInfoEXT"; + case StructureType::ePushDataInfoEXT : return "PushDataInfoEXT"; + case StructureType::eDescriptorSetAndBindingMappingEXT : return "DescriptorSetAndBindingMappingEXT"; + case StructureType::eShaderDescriptorSetAndBindingMappingInfoEXT : return "ShaderDescriptorSetAndBindingMappingInfoEXT"; + case StructureType::eOpaqueCaptureDataCreateInfoEXT : return "OpaqueCaptureDataCreateInfoEXT"; + case StructureType::ePhysicalDeviceDescriptorHeapPropertiesEXT : return "PhysicalDeviceDescriptorHeapPropertiesEXT"; + case StructureType::ePhysicalDeviceDescriptorHeapFeaturesEXT : return "PhysicalDeviceDescriptorHeapFeaturesEXT"; + case StructureType::eCommandBufferInheritanceDescriptorHeapInfoEXT : return "CommandBufferInheritanceDescriptorHeapInfoEXT"; + case StructureType::eSamplerCustomBorderColorIndexCreateInfoEXT : return "SamplerCustomBorderColorIndexCreateInfoEXT"; + case StructureType::eIndirectCommandsLayoutPushDataTokenNV : return "IndirectCommandsLayoutPushDataTokenNV"; + case StructureType::eSubsampledImageFormatPropertiesEXT : return "SubsampledImageFormatPropertiesEXT"; + case StructureType::ePhysicalDeviceDescriptorHeapTensorPropertiesARM : return "PhysicalDeviceDescriptorHeapTensorPropertiesARM"; + case StructureType::eAttachmentSampleCountInfoAMD : return "AttachmentSampleCountInfoAMD"; + case StructureType::ePhysicalDeviceShaderBfloat16FeaturesKHR : return "PhysicalDeviceShaderBfloat16FeaturesKHR"; + case StructureType::eSampleLocationsInfoEXT : return "SampleLocationsInfoEXT"; + case StructureType::eRenderPassSampleLocationsBeginInfoEXT : return "RenderPassSampleLocationsBeginInfoEXT"; + case StructureType::ePipelineSampleLocationsStateCreateInfoEXT : return "PipelineSampleLocationsStateCreateInfoEXT"; + case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT : return "PhysicalDeviceSampleLocationsPropertiesEXT"; + case StructureType::eMultisamplePropertiesEXT : return "MultisamplePropertiesEXT"; + case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT : return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT"; + case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT"; + case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT : return "PipelineColorBlendAdvancedStateCreateInfoEXT"; + case StructureType::ePipelineCoverageToColorStateCreateInfoNV : return "PipelineCoverageToColorStateCreateInfoNV"; + case StructureType::eWriteDescriptorSetAccelerationStructureKHR : return "WriteDescriptorSetAccelerationStructureKHR"; + case StructureType::eAccelerationStructureBuildGeometryInfoKHR : return "AccelerationStructureBuildGeometryInfoKHR"; + case StructureType::eAccelerationStructureDeviceAddressInfoKHR : return "AccelerationStructureDeviceAddressInfoKHR"; + case StructureType::eAccelerationStructureGeometryAabbsDataKHR : return "AccelerationStructureGeometryAabbsDataKHR"; + case StructureType::eAccelerationStructureGeometryInstancesDataKHR : return "AccelerationStructureGeometryInstancesDataKHR"; + case StructureType::eAccelerationStructureGeometryTrianglesDataKHR : return "AccelerationStructureGeometryTrianglesDataKHR"; + case StructureType::eAccelerationStructureGeometryKHR : return "AccelerationStructureGeometryKHR"; + case StructureType::eAccelerationStructureVersionInfoKHR : return "AccelerationStructureVersionInfoKHR"; + case StructureType::eCopyAccelerationStructureInfoKHR : return "CopyAccelerationStructureInfoKHR"; + case StructureType::eCopyAccelerationStructureToMemoryInfoKHR : return "CopyAccelerationStructureToMemoryInfoKHR"; + case StructureType::eCopyMemoryToAccelerationStructureInfoKHR : return "CopyMemoryToAccelerationStructureInfoKHR"; + case StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR : return "PhysicalDeviceAccelerationStructureFeaturesKHR"; + case StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR : return "PhysicalDeviceAccelerationStructurePropertiesKHR"; + case StructureType::eAccelerationStructureCreateInfoKHR : return "AccelerationStructureCreateInfoKHR"; + case StructureType::eAccelerationStructureBuildSizesInfoKHR : return "AccelerationStructureBuildSizesInfoKHR"; + case StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR : return "PhysicalDeviceRayTracingPipelineFeaturesKHR"; + case StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR : return "PhysicalDeviceRayTracingPipelinePropertiesKHR"; + case StructureType::eRayTracingPipelineCreateInfoKHR : return "RayTracingPipelineCreateInfoKHR"; + case StructureType::eRayTracingShaderGroupCreateInfoKHR : return "RayTracingShaderGroupCreateInfoKHR"; + case StructureType::eRayTracingPipelineInterfaceCreateInfoKHR : return "RayTracingPipelineInterfaceCreateInfoKHR"; + case StructureType::ePhysicalDeviceRayQueryFeaturesKHR : return "PhysicalDeviceRayQueryFeaturesKHR"; + case StructureType::ePipelineCoverageModulationStateCreateInfoNV : return "PipelineCoverageModulationStateCreateInfoNV"; + case StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV : return "PhysicalDeviceShaderSmBuiltinsFeaturesNV"; + case StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV : return "PhysicalDeviceShaderSmBuiltinsPropertiesNV"; + case StructureType::eDrmFormatModifierPropertiesListEXT : return "DrmFormatModifierPropertiesListEXT"; + case StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT : return "PhysicalDeviceImageDrmFormatModifierInfoEXT"; + case StructureType::eImageDrmFormatModifierListCreateInfoEXT : return "ImageDrmFormatModifierListCreateInfoEXT"; + case StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT : return "ImageDrmFormatModifierExplicitCreateInfoEXT"; + case StructureType::eImageDrmFormatModifierPropertiesEXT : return "ImageDrmFormatModifierPropertiesEXT"; + case StructureType::eDrmFormatModifierPropertiesList2EXT : return "DrmFormatModifierPropertiesList2EXT"; + case StructureType::eValidationCacheCreateInfoEXT : return "ValidationCacheCreateInfoEXT"; + case StructureType::eShaderModuleValidationCacheCreateInfoEXT : return "ShaderModuleValidationCacheCreateInfoEXT"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR : return "PhysicalDevicePortabilitySubsetFeaturesKHR"; + case StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR: return "PhysicalDevicePortabilitySubsetPropertiesKHR"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV : return "PipelineViewportShadingRateImageStateCreateInfoNV"; + case StructureType::ePhysicalDeviceShadingRateImageFeaturesNV : return "PhysicalDeviceShadingRateImageFeaturesNV"; + case StructureType::ePhysicalDeviceShadingRateImagePropertiesNV : return "PhysicalDeviceShadingRateImagePropertiesNV"; + case StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV : return "PipelineViewportCoarseSampleOrderStateCreateInfoNV"; + case StructureType::eRayTracingPipelineCreateInfoNV : return "RayTracingPipelineCreateInfoNV"; + case StructureType::eAccelerationStructureCreateInfoNV : return "AccelerationStructureCreateInfoNV"; + case StructureType::eGeometryNV : return "GeometryNV"; + case StructureType::eGeometryTrianglesNV : return "GeometryTrianglesNV"; + case StructureType::eGeometryAabbNV : return "GeometryAabbNV"; + case StructureType::eBindAccelerationStructureMemoryInfoNV : return "BindAccelerationStructureMemoryInfoNV"; + case StructureType::eWriteDescriptorSetAccelerationStructureNV : return "WriteDescriptorSetAccelerationStructureNV"; + case StructureType::eAccelerationStructureMemoryRequirementsInfoNV : return "AccelerationStructureMemoryRequirementsInfoNV"; + case StructureType::ePhysicalDeviceRayTracingPropertiesNV : return "PhysicalDeviceRayTracingPropertiesNV"; + case StructureType::eRayTracingShaderGroupCreateInfoNV : return "RayTracingShaderGroupCreateInfoNV"; + case StructureType::eAccelerationStructureInfoNV : return "AccelerationStructureInfoNV"; + case StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV : return "PhysicalDeviceRepresentativeFragmentTestFeaturesNV"; + case StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV : return "PipelineRepresentativeFragmentTestStateCreateInfoNV"; + case StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT : return "PhysicalDeviceImageViewImageFormatInfoEXT"; + case StructureType::eFilterCubicImageViewImageFormatPropertiesEXT : return "FilterCubicImageViewImageFormatPropertiesEXT"; + case StructureType::ePhysicalDeviceCooperativeMatrixConversionFeaturesQCOM: return "PhysicalDeviceCooperativeMatrixConversionFeaturesQCOM"; + case StructureType::eImportMemoryHostPointerInfoEXT : return "ImportMemoryHostPointerInfoEXT"; + case StructureType::eMemoryHostPointerPropertiesEXT : return "MemoryHostPointerPropertiesEXT"; + case StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT : return "PhysicalDeviceExternalMemoryHostPropertiesEXT"; + case StructureType::ePhysicalDeviceShaderClockFeaturesKHR : return "PhysicalDeviceShaderClockFeaturesKHR"; + case StructureType::ePipelineCompilerControlCreateInfoAMD : return "PipelineCompilerControlCreateInfoAMD"; + case StructureType::ePhysicalDeviceShaderCorePropertiesAMD : return "PhysicalDeviceShaderCorePropertiesAMD"; + case StructureType::eVideoDecodeH265CapabilitiesKHR : return "VideoDecodeH265CapabilitiesKHR"; + case StructureType::eVideoDecodeH265SessionParametersCreateInfoKHR : return "VideoDecodeH265SessionParametersCreateInfoKHR"; + case StructureType::eVideoDecodeH265SessionParametersAddInfoKHR : return "VideoDecodeH265SessionParametersAddInfoKHR"; + case StructureType::eVideoDecodeH265ProfileInfoKHR : return "VideoDecodeH265ProfileInfoKHR"; + case StructureType::eVideoDecodeH265PictureInfoKHR : return "VideoDecodeH265PictureInfoKHR"; + case StructureType::eVideoDecodeH265DpbSlotInfoKHR : return "VideoDecodeH265DpbSlotInfoKHR"; + case StructureType::eDeviceMemoryOverallocationCreateInfoAMD : return "DeviceMemoryOverallocationCreateInfoAMD"; + case StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT : return "PhysicalDeviceVertexAttributeDivisorPropertiesEXT"; +#if defined( VK_USE_PLATFORM_GGP ) + case StructureType::ePresentFrameTokenGGP: return "PresentFrameTokenGGP"; +#endif /*VK_USE_PLATFORM_GGP*/ + case StructureType::ePhysicalDeviceMeshShaderFeaturesNV : return "PhysicalDeviceMeshShaderFeaturesNV"; + case StructureType::ePhysicalDeviceMeshShaderPropertiesNV : return "PhysicalDeviceMeshShaderPropertiesNV"; + case StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV : return "PhysicalDeviceShaderImageFootprintFeaturesNV"; + case StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV : return "PipelineViewportExclusiveScissorStateCreateInfoNV"; + case StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV : return "PhysicalDeviceExclusiveScissorFeaturesNV"; + case StructureType::eCheckpointDataNV : return "CheckpointDataNV"; + case StructureType::eQueueFamilyCheckpointPropertiesNV : return "QueueFamilyCheckpointPropertiesNV"; + case StructureType::eQueueFamilyCheckpointProperties2NV : return "QueueFamilyCheckpointProperties2NV"; + case StructureType::eCheckpointData2NV : return "CheckpointData2NV"; + case StructureType::ePhysicalDevicePresentTimingFeaturesEXT : return "PhysicalDevicePresentTimingFeaturesEXT"; + case StructureType::eSwapchainTimingPropertiesEXT : return "SwapchainTimingPropertiesEXT"; + case StructureType::eSwapchainTimeDomainPropertiesEXT : return "SwapchainTimeDomainPropertiesEXT"; + case StructureType::ePresentTimingsInfoEXT : return "PresentTimingsInfoEXT"; + case StructureType::ePresentTimingInfoEXT : return "PresentTimingInfoEXT"; + case StructureType::ePastPresentationTimingInfoEXT : return "PastPresentationTimingInfoEXT"; + case StructureType::ePastPresentationTimingPropertiesEXT : return "PastPresentationTimingPropertiesEXT"; + case StructureType::ePastPresentationTimingEXT : return "PastPresentationTimingEXT"; + case StructureType::ePresentTimingSurfaceCapabilitiesEXT : return "PresentTimingSurfaceCapabilitiesEXT"; + case StructureType::eSwapchainCalibratedTimestampInfoEXT : return "SwapchainCalibratedTimestampInfoEXT"; + case StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL: return "PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL"; + case StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL : return "QueryPoolPerformanceQueryCreateInfoINTEL"; + case StructureType::eInitializePerformanceApiInfoINTEL : return "InitializePerformanceApiInfoINTEL"; + case StructureType::ePerformanceMarkerInfoINTEL : return "PerformanceMarkerInfoINTEL"; + case StructureType::ePerformanceStreamMarkerInfoINTEL : return "PerformanceStreamMarkerInfoINTEL"; + case StructureType::ePerformanceOverrideInfoINTEL : return "PerformanceOverrideInfoINTEL"; + case StructureType::ePerformanceConfigurationAcquireInfoINTEL : return "PerformanceConfigurationAcquireInfoINTEL"; + case StructureType::ePhysicalDevicePciBusInfoPropertiesEXT : return "PhysicalDevicePciBusInfoPropertiesEXT"; + case StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD : return "DisplayNativeHdrSurfaceCapabilitiesAMD"; + case StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD : return "SwapchainDisplayNativeHdrCreateInfoAMD"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case StructureType::eImagepipeSurfaceCreateInfoFUCHSIA: return "ImagepipeSurfaceCreateInfoFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + case StructureType::eMetalSurfaceCreateInfoEXT: return "MetalSurfaceCreateInfoEXT"; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + case StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT : return "PhysicalDeviceFragmentDensityMapFeaturesEXT"; + case StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT : return "PhysicalDeviceFragmentDensityMapPropertiesEXT"; + case StructureType::eRenderPassFragmentDensityMapCreateInfoEXT : return "RenderPassFragmentDensityMapCreateInfoEXT"; + case StructureType::eRenderingFragmentDensityMapAttachmentInfoEXT : return "RenderingFragmentDensityMapAttachmentInfoEXT"; + case StructureType::eFragmentShadingRateAttachmentInfoKHR : return "FragmentShadingRateAttachmentInfoKHR"; + case StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR : return "PipelineFragmentShadingRateStateCreateInfoKHR"; + case StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR : return "PhysicalDeviceFragmentShadingRatePropertiesKHR"; + case StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR : return "PhysicalDeviceFragmentShadingRateFeaturesKHR"; + case StructureType::ePhysicalDeviceFragmentShadingRateKHR : return "PhysicalDeviceFragmentShadingRateKHR"; + case StructureType::eRenderingFragmentShadingRateAttachmentInfoKHR : return "RenderingFragmentShadingRateAttachmentInfoKHR"; + case StructureType::ePhysicalDeviceShaderCoreProperties2AMD : return "PhysicalDeviceShaderCoreProperties2AMD"; + case StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD : return "PhysicalDeviceCoherentMemoryFeaturesAMD"; + case StructureType::ePhysicalDeviceShaderConstantDataFeaturesKHR : return "PhysicalDeviceShaderConstantDataFeaturesKHR"; + case StructureType::ePhysicalDeviceShaderAbortFeaturesKHR : return "PhysicalDeviceShaderAbortFeaturesKHR"; + case StructureType::eDeviceFaultShaderAbortMessageInfoKHR : return "DeviceFaultShaderAbortMessageInfoKHR"; + case StructureType::ePhysicalDeviceShaderAbortPropertiesKHR : return "PhysicalDeviceShaderAbortPropertiesKHR"; + case StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT : return "PhysicalDeviceShaderImageAtomicInt64FeaturesEXT"; + case StructureType::ePhysicalDeviceShaderQuadControlFeaturesKHR : return "PhysicalDeviceShaderQuadControlFeaturesKHR"; + case StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT : return "PhysicalDeviceMemoryBudgetPropertiesEXT"; + case StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT : return "PhysicalDeviceMemoryPriorityFeaturesEXT"; + case StructureType::eMemoryPriorityAllocateInfoEXT : return "MemoryPriorityAllocateInfoEXT"; + case StructureType::eSurfaceProtectedCapabilitiesKHR : return "SurfaceProtectedCapabilitiesKHR"; + case StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV: return "PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV"; + case StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT : return "PhysicalDeviceBufferDeviceAddressFeaturesEXT"; + case StructureType::eBufferDeviceAddressCreateInfoEXT : return "BufferDeviceAddressCreateInfoEXT"; + case StructureType::eValidationFeaturesEXT : return "ValidationFeaturesEXT"; + case StructureType::ePhysicalDevicePresentWaitFeaturesKHR : return "PhysicalDevicePresentWaitFeaturesKHR"; + case StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV : return "PhysicalDeviceCooperativeMatrixFeaturesNV"; + case StructureType::eCooperativeMatrixPropertiesNV : return "CooperativeMatrixPropertiesNV"; + case StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV : return "PhysicalDeviceCooperativeMatrixPropertiesNV"; + case StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV : return "PhysicalDeviceCoverageReductionModeFeaturesNV"; + case StructureType::ePipelineCoverageReductionStateCreateInfoNV : return "PipelineCoverageReductionStateCreateInfoNV"; + case StructureType::eFramebufferMixedSamplesCombinationNV : return "FramebufferMixedSamplesCombinationNV"; + case StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT : return "PhysicalDeviceFragmentShaderInterlockFeaturesEXT"; + case StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT : return "PhysicalDeviceYcbcrImageArraysFeaturesEXT"; + case StructureType::ePhysicalDeviceProvokingVertexFeaturesEXT : return "PhysicalDeviceProvokingVertexFeaturesEXT"; + case StructureType::ePipelineRasterizationProvokingVertexStateCreateInfoEXT : return "PipelineRasterizationProvokingVertexStateCreateInfoEXT"; + case StructureType::ePhysicalDeviceProvokingVertexPropertiesEXT : return "PhysicalDeviceProvokingVertexPropertiesEXT"; +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + case StructureType::eSurfaceFullScreenExclusiveInfoEXT : return "SurfaceFullScreenExclusiveInfoEXT"; + case StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT: return "SurfaceCapabilitiesFullScreenExclusiveEXT"; + case StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT : return "SurfaceFullScreenExclusiveWin32InfoEXT"; +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + case StructureType::eHeadlessSurfaceCreateInfoEXT : return "HeadlessSurfaceCreateInfoEXT"; + case StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT : return "PhysicalDeviceShaderAtomicFloatFeaturesEXT"; + case StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT : return "PhysicalDeviceExtendedDynamicStateFeaturesEXT"; + case StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR: return "PhysicalDevicePipelineExecutablePropertiesFeaturesKHR"; + case StructureType::ePipelineInfoKHR : return "PipelineInfoKHR"; + case StructureType::ePipelineExecutablePropertiesKHR : return "PipelineExecutablePropertiesKHR"; + case StructureType::ePipelineExecutableInfoKHR : return "PipelineExecutableInfoKHR"; + case StructureType::ePipelineExecutableStatisticKHR : return "PipelineExecutableStatisticKHR"; + case StructureType::ePipelineExecutableInternalRepresentationKHR : return "PipelineExecutableInternalRepresentationKHR"; + case StructureType::ePhysicalDeviceMapMemoryPlacedFeaturesEXT : return "PhysicalDeviceMapMemoryPlacedFeaturesEXT"; + case StructureType::ePhysicalDeviceMapMemoryPlacedPropertiesEXT : return "PhysicalDeviceMapMemoryPlacedPropertiesEXT"; + case StructureType::eMemoryMapPlacedInfoEXT : return "MemoryMapPlacedInfoEXT"; + case StructureType::ePhysicalDeviceShaderAtomicFloat2FeaturesEXT : return "PhysicalDeviceShaderAtomicFloat2FeaturesEXT"; + case StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV : return "PhysicalDeviceDeviceGeneratedCommandsPropertiesNV"; + case StructureType::eGraphicsShaderGroupCreateInfoNV : return "GraphicsShaderGroupCreateInfoNV"; + case StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV : return "GraphicsPipelineShaderGroupsCreateInfoNV"; + case StructureType::eIndirectCommandsLayoutTokenNV : return "IndirectCommandsLayoutTokenNV"; + case StructureType::eIndirectCommandsLayoutCreateInfoNV : return "IndirectCommandsLayoutCreateInfoNV"; + case StructureType::eGeneratedCommandsInfoNV : return "GeneratedCommandsInfoNV"; + case StructureType::eGeneratedCommandsMemoryRequirementsInfoNV : return "GeneratedCommandsMemoryRequirementsInfoNV"; + case StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV : return "PhysicalDeviceDeviceGeneratedCommandsFeaturesNV"; + case StructureType::ePhysicalDeviceInheritedViewportScissorFeaturesNV : return "PhysicalDeviceInheritedViewportScissorFeaturesNV"; + case StructureType::eCommandBufferInheritanceViewportScissorInfoNV : return "CommandBufferInheritanceViewportScissorInfoNV"; + case StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT : return "PhysicalDeviceTexelBufferAlignmentFeaturesEXT"; + case StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM : return "CommandBufferInheritanceRenderPassTransformInfoQCOM"; + case StructureType::eRenderPassTransformBeginInfoQCOM : return "RenderPassTransformBeginInfoQCOM"; + case StructureType::ePhysicalDeviceDepthBiasControlFeaturesEXT : return "PhysicalDeviceDepthBiasControlFeaturesEXT"; + case StructureType::eDepthBiasInfoEXT : return "DepthBiasInfoEXT"; + case StructureType::eDepthBiasRepresentationInfoEXT : return "DepthBiasRepresentationInfoEXT"; + case StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT : return "PhysicalDeviceDeviceMemoryReportFeaturesEXT"; + case StructureType::eDeviceDeviceMemoryReportCreateInfoEXT : return "DeviceDeviceMemoryReportCreateInfoEXT"; + case StructureType::eDeviceMemoryReportCallbackDataEXT : return "DeviceMemoryReportCallbackDataEXT"; + case StructureType::eSamplerCustomBorderColorCreateInfoEXT : return "SamplerCustomBorderColorCreateInfoEXT"; + case StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT : return "PhysicalDeviceCustomBorderColorPropertiesEXT"; + case StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT : return "PhysicalDeviceCustomBorderColorFeaturesEXT"; + case StructureType::ePhysicalDeviceTextureCompressionAstc3DFeaturesEXT : return "PhysicalDeviceTextureCompressionAstc3DFeaturesEXT"; + case StructureType::ePipelineLibraryCreateInfoKHR : return "PipelineLibraryCreateInfoKHR"; + case StructureType::ePhysicalDevicePresentBarrierFeaturesNV : return "PhysicalDevicePresentBarrierFeaturesNV"; + case StructureType::eSurfaceCapabilitiesPresentBarrierNV : return "SurfaceCapabilitiesPresentBarrierNV"; + case StructureType::eSwapchainPresentBarrierCreateInfoNV : return "SwapchainPresentBarrierCreateInfoNV"; + case StructureType::ePresentIdKHR : return "PresentIdKHR"; + case StructureType::ePhysicalDevicePresentIdFeaturesKHR : return "PhysicalDevicePresentIdFeaturesKHR"; + case StructureType::eVideoEncodeInfoKHR : return "VideoEncodeInfoKHR"; + case StructureType::eVideoEncodeRateControlInfoKHR : return "VideoEncodeRateControlInfoKHR"; + case StructureType::eVideoEncodeRateControlLayerInfoKHR : return "VideoEncodeRateControlLayerInfoKHR"; + case StructureType::eVideoEncodeCapabilitiesKHR : return "VideoEncodeCapabilitiesKHR"; + case StructureType::eVideoEncodeUsageInfoKHR : return "VideoEncodeUsageInfoKHR"; + case StructureType::eQueryPoolVideoEncodeFeedbackCreateInfoKHR : return "QueryPoolVideoEncodeFeedbackCreateInfoKHR"; + case StructureType::ePhysicalDeviceVideoEncodeQualityLevelInfoKHR : return "PhysicalDeviceVideoEncodeQualityLevelInfoKHR"; + case StructureType::eVideoEncodeQualityLevelPropertiesKHR : return "VideoEncodeQualityLevelPropertiesKHR"; + case StructureType::eVideoEncodeQualityLevelInfoKHR : return "VideoEncodeQualityLevelInfoKHR"; + case StructureType::eVideoEncodeSessionParametersGetInfoKHR : return "VideoEncodeSessionParametersGetInfoKHR"; + case StructureType::eVideoEncodeSessionParametersFeedbackInfoKHR : return "VideoEncodeSessionParametersFeedbackInfoKHR"; + case StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV : return "PhysicalDeviceDiagnosticsConfigFeaturesNV"; + case StructureType::eDeviceDiagnosticsConfigCreateInfoNV : return "DeviceDiagnosticsConfigCreateInfoNV"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::eCudaModuleCreateInfoNV : return "CudaModuleCreateInfoNV"; + case StructureType::eCudaFunctionCreateInfoNV : return "CudaFunctionCreateInfoNV"; + case StructureType::eCudaLaunchInfoNV : return "CudaLaunchInfoNV"; + case StructureType::ePhysicalDeviceCudaKernelLaunchFeaturesNV : return "PhysicalDeviceCudaKernelLaunchFeaturesNV"; + case StructureType::ePhysicalDeviceCudaKernelLaunchPropertiesNV: return "PhysicalDeviceCudaKernelLaunchPropertiesNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case StructureType::ePhysicalDeviceTileShadingFeaturesQCOM : return "PhysicalDeviceTileShadingFeaturesQCOM"; + case StructureType::ePhysicalDeviceTileShadingPropertiesQCOM: return "PhysicalDeviceTileShadingPropertiesQCOM"; + case StructureType::eRenderPassTileShadingCreateInfoQCOM : return "RenderPassTileShadingCreateInfoQCOM"; + case StructureType::ePerTileBeginInfoQCOM : return "PerTileBeginInfoQCOM"; + case StructureType::ePerTileEndInfoQCOM : return "PerTileEndInfoQCOM"; + case StructureType::eDispatchTileInfoQCOM : return "DispatchTileInfoQCOM"; + case StructureType::eQueryLowLatencySupportNV : return "QueryLowLatencySupportNV"; +#if defined( VK_USE_PLATFORM_METAL_EXT ) + case StructureType::eExportMetalObjectCreateInfoEXT: return "ExportMetalObjectCreateInfoEXT"; + case StructureType::eExportMetalObjectsInfoEXT : return "ExportMetalObjectsInfoEXT"; + case StructureType::eExportMetalDeviceInfoEXT : return "ExportMetalDeviceInfoEXT"; + case StructureType::eExportMetalCommandQueueInfoEXT: return "ExportMetalCommandQueueInfoEXT"; + case StructureType::eExportMetalBufferInfoEXT : return "ExportMetalBufferInfoEXT"; + case StructureType::eImportMetalBufferInfoEXT : return "ImportMetalBufferInfoEXT"; + case StructureType::eExportMetalTextureInfoEXT : return "ExportMetalTextureInfoEXT"; + case StructureType::eImportMetalTextureInfoEXT : return "ImportMetalTextureInfoEXT"; + case StructureType::eExportMetalIoSurfaceInfoEXT : return "ExportMetalIoSurfaceInfoEXT"; + case StructureType::eImportMetalIoSurfaceInfoEXT : return "ImportMetalIoSurfaceInfoEXT"; + case StructureType::eExportMetalSharedEventInfoEXT : return "ExportMetalSharedEventInfoEXT"; + case StructureType::eImportMetalSharedEventInfoEXT : return "ImportMetalSharedEventInfoEXT"; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + case StructureType::ePhysicalDeviceDescriptorBufferPropertiesEXT : return "PhysicalDeviceDescriptorBufferPropertiesEXT"; + case StructureType::ePhysicalDeviceDescriptorBufferDensityMapPropertiesEXT : return "PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT"; + case StructureType::ePhysicalDeviceDescriptorBufferFeaturesEXT : return "PhysicalDeviceDescriptorBufferFeaturesEXT"; + case StructureType::eDescriptorAddressInfoEXT : return "DescriptorAddressInfoEXT"; + case StructureType::eDescriptorGetInfoEXT : return "DescriptorGetInfoEXT"; + case StructureType::eBufferCaptureDescriptorDataInfoEXT : return "BufferCaptureDescriptorDataInfoEXT"; + case StructureType::eImageCaptureDescriptorDataInfoEXT : return "ImageCaptureDescriptorDataInfoEXT"; + case StructureType::eImageViewCaptureDescriptorDataInfoEXT : return "ImageViewCaptureDescriptorDataInfoEXT"; + case StructureType::eSamplerCaptureDescriptorDataInfoEXT : return "SamplerCaptureDescriptorDataInfoEXT"; + case StructureType::eOpaqueCaptureDescriptorDataCreateInfoEXT : return "OpaqueCaptureDescriptorDataCreateInfoEXT"; + case StructureType::eDescriptorBufferBindingInfoEXT : return "DescriptorBufferBindingInfoEXT"; + case StructureType::eDescriptorBufferBindingPushDescriptorBufferHandleEXT : return "DescriptorBufferBindingPushDescriptorBufferHandleEXT"; + case StructureType::eAccelerationStructureCaptureDescriptorDataInfoEXT : return "AccelerationStructureCaptureDescriptorDataInfoEXT"; + case StructureType::eDeviceMemoryCopyKHR : return "DeviceMemoryCopyKHR"; + case StructureType::eCopyDeviceMemoryInfoKHR : return "CopyDeviceMemoryInfoKHR"; + case StructureType::eDeviceMemoryImageCopyKHR : return "DeviceMemoryImageCopyKHR"; + case StructureType::eCopyDeviceMemoryImageInfoKHR : return "CopyDeviceMemoryImageInfoKHR"; + case StructureType::eMemoryRangeBarriersInfoKHR : return "MemoryRangeBarriersInfoKHR"; + case StructureType::eMemoryRangeBarrierKHR : return "MemoryRangeBarrierKHR"; + case StructureType::ePhysicalDeviceDeviceAddressCommandsFeaturesKHR : return "PhysicalDeviceDeviceAddressCommandsFeaturesKHR"; + case StructureType::eBindIndexBuffer3InfoKHR : return "BindIndexBuffer3InfoKHR"; + case StructureType::eBindVertexBuffer3InfoKHR : return "BindVertexBuffer3InfoKHR"; + case StructureType::eDrawIndirect2InfoKHR : return "DrawIndirect2InfoKHR"; + case StructureType::eDrawIndirectCount2InfoKHR : return "DrawIndirectCount2InfoKHR"; + case StructureType::eDispatchIndirect2InfoKHR : return "DispatchIndirect2InfoKHR"; + case StructureType::eConditionalRenderingBeginInfo2EXT : return "ConditionalRenderingBeginInfo2EXT"; + case StructureType::eBindTransformFeedbackBuffer2InfoEXT : return "BindTransformFeedbackBuffer2InfoEXT"; + case StructureType::eMemoryMarkerInfoAMD : return "MemoryMarkerInfoAMD"; + case StructureType::eAccelerationStructureCreateInfo2KHR : return "AccelerationStructureCreateInfo2KHR"; + case StructureType::ePhysicalDeviceGraphicsPipelineLibraryFeaturesEXT : return "PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT"; + case StructureType::ePhysicalDeviceGraphicsPipelineLibraryPropertiesEXT : return "PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT"; + case StructureType::eGraphicsPipelineLibraryCreateInfoEXT : return "GraphicsPipelineLibraryCreateInfoEXT"; + case StructureType::ePhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD : return "PhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD"; + case StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesKHR : return "PhysicalDeviceFragmentShaderBarycentricFeaturesKHR"; + case StructureType::ePhysicalDeviceFragmentShaderBarycentricPropertiesKHR : return "PhysicalDeviceFragmentShaderBarycentricPropertiesKHR"; + case StructureType::ePhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR: return "PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR"; + case StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV : return "PhysicalDeviceFragmentShadingRateEnumsPropertiesNV"; + case StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV : return "PhysicalDeviceFragmentShadingRateEnumsFeaturesNV"; + case StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV : return "PipelineFragmentShadingRateEnumStateCreateInfoNV"; + case StructureType::eAccelerationStructureGeometryMotionTrianglesDataNV : return "AccelerationStructureGeometryMotionTrianglesDataNV"; + case StructureType::ePhysicalDeviceRayTracingMotionBlurFeaturesNV : return "PhysicalDeviceRayTracingMotionBlurFeaturesNV"; + case StructureType::eAccelerationStructureMotionInfoNV : return "AccelerationStructureMotionInfoNV"; + case StructureType::ePhysicalDeviceMeshShaderFeaturesEXT : return "PhysicalDeviceMeshShaderFeaturesEXT"; + case StructureType::ePhysicalDeviceMeshShaderPropertiesEXT : return "PhysicalDeviceMeshShaderPropertiesEXT"; + case StructureType::ePhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT : return "PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT"; + case StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT : return "PhysicalDeviceFragmentDensityMap2FeaturesEXT"; + case StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT : return "PhysicalDeviceFragmentDensityMap2PropertiesEXT"; + case StructureType::eCopyCommandTransformInfoQCOM : return "CopyCommandTransformInfoQCOM"; + case StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR : return "PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR"; + case StructureType::ePhysicalDeviceImageCompressionControlFeaturesEXT : return "PhysicalDeviceImageCompressionControlFeaturesEXT"; + case StructureType::eImageCompressionControlEXT : return "ImageCompressionControlEXT"; + case StructureType::eImageCompressionPropertiesEXT : return "ImageCompressionPropertiesEXT"; + case StructureType::ePhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT : return "PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT"; + case StructureType::ePhysicalDevice4444FormatsFeaturesEXT : return "PhysicalDevice4444FormatsFeaturesEXT"; + case StructureType::ePhysicalDeviceFaultFeaturesEXT : return "PhysicalDeviceFaultFeaturesEXT"; + case StructureType::eDeviceFaultCountsEXT : return "DeviceFaultCountsEXT"; + case StructureType::eDeviceFaultInfoEXT : return "DeviceFaultInfoEXT"; + case StructureType::ePhysicalDeviceRgba10X6FormatsFeaturesEXT : return "PhysicalDeviceRgba10X6FormatsFeaturesEXT"; +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + case StructureType::eDirectfbSurfaceCreateInfoEXT: return "DirectfbSurfaceCreateInfoEXT"; +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + case StructureType::ePhysicalDeviceVertexInputDynamicStateFeaturesEXT : return "PhysicalDeviceVertexInputDynamicStateFeaturesEXT"; + case StructureType::eVertexInputBindingDescription2EXT : return "VertexInputBindingDescription2EXT"; + case StructureType::eVertexInputAttributeDescription2EXT : return "VertexInputAttributeDescription2EXT"; + case StructureType::ePhysicalDeviceDrmPropertiesEXT : return "PhysicalDeviceDrmPropertiesEXT"; + case StructureType::ePhysicalDeviceAddressBindingReportFeaturesEXT : return "PhysicalDeviceAddressBindingReportFeaturesEXT"; + case StructureType::eDeviceAddressBindingCallbackDataEXT : return "DeviceAddressBindingCallbackDataEXT"; + case StructureType::ePhysicalDeviceDepthClipControlFeaturesEXT : return "PhysicalDeviceDepthClipControlFeaturesEXT"; + case StructureType::ePipelineViewportDepthClipControlCreateInfoEXT : return "PipelineViewportDepthClipControlCreateInfoEXT"; + case StructureType::ePhysicalDevicePrimitiveTopologyListRestartFeaturesEXT: return "PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case StructureType::eImportMemoryZirconHandleInfoFUCHSIA : return "ImportMemoryZirconHandleInfoFUCHSIA"; + case StructureType::eMemoryZirconHandlePropertiesFUCHSIA : return "MemoryZirconHandlePropertiesFUCHSIA"; + case StructureType::eMemoryGetZirconHandleInfoFUCHSIA : return "MemoryGetZirconHandleInfoFUCHSIA"; + case StructureType::eImportSemaphoreZirconHandleInfoFUCHSIA : return "ImportSemaphoreZirconHandleInfoFUCHSIA"; + case StructureType::eSemaphoreGetZirconHandleInfoFUCHSIA : return "SemaphoreGetZirconHandleInfoFUCHSIA"; + case StructureType::eBufferCollectionCreateInfoFUCHSIA : return "BufferCollectionCreateInfoFUCHSIA"; + case StructureType::eImportMemoryBufferCollectionFUCHSIA : return "ImportMemoryBufferCollectionFUCHSIA"; + case StructureType::eBufferCollectionImageCreateInfoFUCHSIA : return "BufferCollectionImageCreateInfoFUCHSIA"; + case StructureType::eBufferCollectionPropertiesFUCHSIA : return "BufferCollectionPropertiesFUCHSIA"; + case StructureType::eBufferConstraintsInfoFUCHSIA : return "BufferConstraintsInfoFUCHSIA"; + case StructureType::eBufferCollectionBufferCreateInfoFUCHSIA: return "BufferCollectionBufferCreateInfoFUCHSIA"; + case StructureType::eImageConstraintsInfoFUCHSIA : return "ImageConstraintsInfoFUCHSIA"; + case StructureType::eImageFormatConstraintsInfoFUCHSIA : return "ImageFormatConstraintsInfoFUCHSIA"; + case StructureType::eSysmemColorSpaceFUCHSIA : return "SysmemColorSpaceFUCHSIA"; + case StructureType::eBufferCollectionConstraintsInfoFUCHSIA : return "BufferCollectionConstraintsInfoFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + case StructureType::eSubpassShadingPipelineCreateInfoHUAWEI : return "SubpassShadingPipelineCreateInfoHUAWEI"; + case StructureType::ePhysicalDeviceSubpassShadingFeaturesHUAWEI : return "PhysicalDeviceSubpassShadingFeaturesHUAWEI"; + case StructureType::ePhysicalDeviceSubpassShadingPropertiesHUAWEI : return "PhysicalDeviceSubpassShadingPropertiesHUAWEI"; + case StructureType::ePhysicalDeviceInvocationMaskFeaturesHUAWEI : return "PhysicalDeviceInvocationMaskFeaturesHUAWEI"; + case StructureType::eMemoryGetRemoteAddressInfoNV : return "MemoryGetRemoteAddressInfoNV"; + case StructureType::ePhysicalDeviceExternalMemoryRdmaFeaturesNV : return "PhysicalDeviceExternalMemoryRdmaFeaturesNV"; + case StructureType::ePipelinePropertiesIdentifierEXT : return "PipelinePropertiesIdentifierEXT"; + case StructureType::ePhysicalDevicePipelinePropertiesFeaturesEXT : return "PhysicalDevicePipelinePropertiesFeaturesEXT"; + case StructureType::ePhysicalDeviceFrameBoundaryFeaturesEXT : return "PhysicalDeviceFrameBoundaryFeaturesEXT"; + case StructureType::eFrameBoundaryEXT : return "FrameBoundaryEXT"; + case StructureType::ePhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT: return "PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT"; + case StructureType::eSubpassResolvePerformanceQueryEXT : return "SubpassResolvePerformanceQueryEXT"; + case StructureType::eMultisampledRenderToSingleSampledInfoEXT : return "MultisampledRenderToSingleSampledInfoEXT"; + case StructureType::ePhysicalDeviceExtendedDynamicState2FeaturesEXT : return "PhysicalDeviceExtendedDynamicState2FeaturesEXT"; +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + case StructureType::eScreenSurfaceCreateInfoQNX: return "ScreenSurfaceCreateInfoQNX"; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + case StructureType::ePhysicalDeviceColorWriteEnableFeaturesEXT : return "PhysicalDeviceColorWriteEnableFeaturesEXT"; + case StructureType::ePipelineColorWriteCreateInfoEXT : return "PipelineColorWriteCreateInfoEXT"; + case StructureType::ePhysicalDevicePrimitivesGeneratedQueryFeaturesEXT : return "PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT"; + case StructureType::ePhysicalDeviceRayTracingMaintenance1FeaturesKHR : return "PhysicalDeviceRayTracingMaintenance1FeaturesKHR"; + case StructureType::ePhysicalDeviceShaderUntypedPointersFeaturesKHR : return "PhysicalDeviceShaderUntypedPointersFeaturesKHR"; + case StructureType::ePhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE: return "PhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE"; + case StructureType::eVideoEncodeRgbConversionCapabilitiesVALVE : return "VideoEncodeRgbConversionCapabilitiesVALVE"; + case StructureType::eVideoEncodeProfileRgbConversionInfoVALVE : return "VideoEncodeProfileRgbConversionInfoVALVE"; + case StructureType::eVideoEncodeSessionRgbConversionCreateInfoVALVE : return "VideoEncodeSessionRgbConversionCreateInfoVALVE"; + case StructureType::ePhysicalDeviceImageViewMinLodFeaturesEXT : return "PhysicalDeviceImageViewMinLodFeaturesEXT"; + case StructureType::eImageViewMinLodCreateInfoEXT : return "ImageViewMinLodCreateInfoEXT"; + case StructureType::ePhysicalDeviceMultiDrawFeaturesEXT : return "PhysicalDeviceMultiDrawFeaturesEXT"; + case StructureType::ePhysicalDeviceMultiDrawPropertiesEXT : return "PhysicalDeviceMultiDrawPropertiesEXT"; + case StructureType::ePhysicalDeviceImage2DViewOf3DFeaturesEXT : return "PhysicalDeviceImage2DViewOf3DFeaturesEXT"; + case StructureType::ePhysicalDeviceShaderTileImageFeaturesEXT : return "PhysicalDeviceShaderTileImageFeaturesEXT"; + case StructureType::ePhysicalDeviceShaderTileImagePropertiesEXT : return "PhysicalDeviceShaderTileImagePropertiesEXT"; + case StructureType::eMicromapBuildInfoEXT : return "MicromapBuildInfoEXT"; + case StructureType::eMicromapVersionInfoEXT : return "MicromapVersionInfoEXT"; + case StructureType::eCopyMicromapInfoEXT : return "CopyMicromapInfoEXT"; + case StructureType::eCopyMicromapToMemoryInfoEXT : return "CopyMicromapToMemoryInfoEXT"; + case StructureType::eCopyMemoryToMicromapInfoEXT : return "CopyMemoryToMicromapInfoEXT"; + case StructureType::ePhysicalDeviceOpacityMicromapFeaturesEXT : return "PhysicalDeviceOpacityMicromapFeaturesEXT"; + case StructureType::ePhysicalDeviceOpacityMicromapPropertiesEXT : return "PhysicalDeviceOpacityMicromapPropertiesEXT"; + case StructureType::eMicromapCreateInfoEXT : return "MicromapCreateInfoEXT"; + case StructureType::eMicromapBuildSizesInfoEXT : return "MicromapBuildSizesInfoEXT"; + case StructureType::eAccelerationStructureTrianglesOpacityMicromapEXT : return "AccelerationStructureTrianglesOpacityMicromapEXT"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::ePhysicalDeviceDisplacementMicromapFeaturesNV : return "PhysicalDeviceDisplacementMicromapFeaturesNV"; + case StructureType::ePhysicalDeviceDisplacementMicromapPropertiesNV : return "PhysicalDeviceDisplacementMicromapPropertiesNV"; + case StructureType::eAccelerationStructureTrianglesDisplacementMicromapNV: return "AccelerationStructureTrianglesDisplacementMicromapNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case StructureType::ePhysicalDeviceClusterCullingShaderFeaturesHUAWEI : return "PhysicalDeviceClusterCullingShaderFeaturesHUAWEI"; + case StructureType::ePhysicalDeviceClusterCullingShaderPropertiesHUAWEI : return "PhysicalDeviceClusterCullingShaderPropertiesHUAWEI"; + case StructureType::ePhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI : return "PhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI"; + case StructureType::ePhysicalDeviceBorderColorSwizzleFeaturesEXT : return "PhysicalDeviceBorderColorSwizzleFeaturesEXT"; + case StructureType::eSamplerBorderColorComponentMappingCreateInfoEXT : return "SamplerBorderColorComponentMappingCreateInfoEXT"; + case StructureType::ePhysicalDevicePageableDeviceLocalMemoryFeaturesEXT : return "PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT"; + case StructureType::ePhysicalDeviceShaderCorePropertiesARM : return "PhysicalDeviceShaderCorePropertiesARM"; + case StructureType::eDeviceQueueShaderCoreControlCreateInfoARM : return "DeviceQueueShaderCoreControlCreateInfoARM"; + case StructureType::ePhysicalDeviceSchedulingControlsFeaturesARM : return "PhysicalDeviceSchedulingControlsFeaturesARM"; + case StructureType::ePhysicalDeviceSchedulingControlsPropertiesARM : return "PhysicalDeviceSchedulingControlsPropertiesARM"; + case StructureType::ePhysicalDeviceImageSlicedViewOf3DFeaturesEXT : return "PhysicalDeviceImageSlicedViewOf3DFeaturesEXT"; + case StructureType::eImageViewSlicedCreateInfoEXT : return "ImageViewSlicedCreateInfoEXT"; + case StructureType::ePhysicalDeviceDescriptorSetHostMappingFeaturesVALVE : return "PhysicalDeviceDescriptorSetHostMappingFeaturesVALVE"; + case StructureType::eDescriptorSetBindingReferenceVALVE : return "DescriptorSetBindingReferenceVALVE"; + case StructureType::eDescriptorSetLayoutHostMappingInfoVALVE : return "DescriptorSetLayoutHostMappingInfoVALVE"; + case StructureType::ePhysicalDeviceNonSeamlessCubeMapFeaturesEXT : return "PhysicalDeviceNonSeamlessCubeMapFeaturesEXT"; + case StructureType::ePhysicalDeviceRenderPassStripedFeaturesARM : return "PhysicalDeviceRenderPassStripedFeaturesARM"; + case StructureType::ePhysicalDeviceRenderPassStripedPropertiesARM : return "PhysicalDeviceRenderPassStripedPropertiesARM"; + case StructureType::eRenderPassStripeBeginInfoARM : return "RenderPassStripeBeginInfoARM"; + case StructureType::eRenderPassStripeInfoARM : return "RenderPassStripeInfoARM"; + case StructureType::eRenderPassStripeSubmitInfoARM : return "RenderPassStripeSubmitInfoARM"; + case StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesNV : return "PhysicalDeviceCopyMemoryIndirectFeaturesNV"; + case StructureType::ePhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV : return "PhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV"; + case StructureType::eComputePipelineIndirectBufferInfoNV : return "ComputePipelineIndirectBufferInfoNV"; + case StructureType::ePipelineIndirectDeviceAddressInfoNV : return "PipelineIndirectDeviceAddressInfoNV"; + case StructureType::ePhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV : return "PhysicalDeviceRayTracingLinearSweptSpheresFeaturesNV"; + case StructureType::eAccelerationStructureGeometryLinearSweptSpheresDataNV : return "AccelerationStructureGeometryLinearSweptSpheresDataNV"; + case StructureType::eAccelerationStructureGeometrySpheresDataNV : return "AccelerationStructureGeometrySpheresDataNV"; + case StructureType::ePhysicalDeviceLinearColorAttachmentFeaturesNV : return "PhysicalDeviceLinearColorAttachmentFeaturesNV"; + case StructureType::ePhysicalDeviceShaderMaximalReconvergenceFeaturesKHR : return "PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR"; + case StructureType::ePhysicalDeviceImageCompressionControlSwapchainFeaturesEXT: return "PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT"; + case StructureType::ePhysicalDeviceImageProcessingFeaturesQCOM : return "PhysicalDeviceImageProcessingFeaturesQCOM"; + case StructureType::ePhysicalDeviceImageProcessingPropertiesQCOM : return "PhysicalDeviceImageProcessingPropertiesQCOM"; + case StructureType::eImageViewSampleWeightCreateInfoQCOM : return "ImageViewSampleWeightCreateInfoQCOM"; + case StructureType::ePhysicalDeviceNestedCommandBufferFeaturesEXT : return "PhysicalDeviceNestedCommandBufferFeaturesEXT"; + case StructureType::ePhysicalDeviceNestedCommandBufferPropertiesEXT : return "PhysicalDeviceNestedCommandBufferPropertiesEXT"; +#if defined( VK_USE_PLATFORM_OHOS ) + case StructureType::eNativeBufferUsageOHOS : return "NativeBufferUsageOHOS"; + case StructureType::eNativeBufferPropertiesOHOS : return "NativeBufferPropertiesOHOS"; + case StructureType::eNativeBufferFormatPropertiesOHOS: return "NativeBufferFormatPropertiesOHOS"; + case StructureType::eImportNativeBufferInfoOHOS : return "ImportNativeBufferInfoOHOS"; + case StructureType::eMemoryGetNativeBufferInfoOHOS : return "MemoryGetNativeBufferInfoOHOS"; + case StructureType::eExternalFormatOHOS : return "ExternalFormatOHOS"; +#endif /*VK_USE_PLATFORM_OHOS*/ + case StructureType::eExternalMemoryAcquireUnmodifiedEXT : return "ExternalMemoryAcquireUnmodifiedEXT"; + case StructureType::ePhysicalDeviceExtendedDynamicState3FeaturesEXT : return "PhysicalDeviceExtendedDynamicState3FeaturesEXT"; + case StructureType::ePhysicalDeviceExtendedDynamicState3PropertiesEXT : return "PhysicalDeviceExtendedDynamicState3PropertiesEXT"; + case StructureType::ePhysicalDeviceSubpassMergeFeedbackFeaturesEXT : return "PhysicalDeviceSubpassMergeFeedbackFeaturesEXT"; + case StructureType::eRenderPassCreationControlEXT : return "RenderPassCreationControlEXT"; + case StructureType::eRenderPassCreationFeedbackCreateInfoEXT : return "RenderPassCreationFeedbackCreateInfoEXT"; + case StructureType::eRenderPassSubpassFeedbackCreateInfoEXT : return "RenderPassSubpassFeedbackCreateInfoEXT"; + case StructureType::eDirectDriverLoadingInfoLUNARG : return "DirectDriverLoadingInfoLUNARG"; + case StructureType::eDirectDriverLoadingListLUNARG : return "DirectDriverLoadingListLUNARG"; + case StructureType::eTensorCreateInfoARM : return "TensorCreateInfoARM"; + case StructureType::eTensorViewCreateInfoARM : return "TensorViewCreateInfoARM"; + case StructureType::eBindTensorMemoryInfoARM : return "BindTensorMemoryInfoARM"; + case StructureType::eWriteDescriptorSetTensorARM : return "WriteDescriptorSetTensorARM"; + case StructureType::ePhysicalDeviceTensorPropertiesARM : return "PhysicalDeviceTensorPropertiesARM"; + case StructureType::eTensorFormatPropertiesARM : return "TensorFormatPropertiesARM"; + case StructureType::eTensorDescriptionARM : return "TensorDescriptionARM"; + case StructureType::eTensorMemoryRequirementsInfoARM : return "TensorMemoryRequirementsInfoARM"; + case StructureType::eTensorMemoryBarrierARM : return "TensorMemoryBarrierARM"; + case StructureType::ePhysicalDeviceTensorFeaturesARM : return "PhysicalDeviceTensorFeaturesARM"; + case StructureType::eDeviceTensorMemoryRequirementsARM : return "DeviceTensorMemoryRequirementsARM"; + case StructureType::eCopyTensorInfoARM : return "CopyTensorInfoARM"; + case StructureType::eTensorCopyARM : return "TensorCopyARM"; + case StructureType::eTensorDependencyInfoARM : return "TensorDependencyInfoARM"; + case StructureType::eMemoryDedicatedAllocateInfoTensorARM : return "MemoryDedicatedAllocateInfoTensorARM"; + case StructureType::ePhysicalDeviceExternalTensorInfoARM : return "PhysicalDeviceExternalTensorInfoARM"; + case StructureType::eExternalTensorPropertiesARM : return "ExternalTensorPropertiesARM"; + case StructureType::eExternalMemoryTensorCreateInfoARM : return "ExternalMemoryTensorCreateInfoARM"; + case StructureType::ePhysicalDeviceDescriptorBufferTensorFeaturesARM : return "PhysicalDeviceDescriptorBufferTensorFeaturesARM"; + case StructureType::ePhysicalDeviceDescriptorBufferTensorPropertiesARM : return "PhysicalDeviceDescriptorBufferTensorPropertiesARM"; + case StructureType::eDescriptorGetTensorInfoARM : return "DescriptorGetTensorInfoARM"; + case StructureType::eTensorCaptureDescriptorDataInfoARM : return "TensorCaptureDescriptorDataInfoARM"; + case StructureType::eTensorViewCaptureDescriptorDataInfoARM : return "TensorViewCaptureDescriptorDataInfoARM"; + case StructureType::eFrameBoundaryTensorsARM : return "FrameBoundaryTensorsARM"; + case StructureType::ePhysicalDeviceShaderModuleIdentifierFeaturesEXT : return "PhysicalDeviceShaderModuleIdentifierFeaturesEXT"; + case StructureType::ePhysicalDeviceShaderModuleIdentifierPropertiesEXT : return "PhysicalDeviceShaderModuleIdentifierPropertiesEXT"; + case StructureType::ePipelineShaderStageModuleIdentifierCreateInfoEXT : return "PipelineShaderStageModuleIdentifierCreateInfoEXT"; + case StructureType::eShaderModuleIdentifierEXT : return "ShaderModuleIdentifierEXT"; + case StructureType::ePhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT: return "PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT"; + case StructureType::ePhysicalDeviceOpticalFlowFeaturesNV : return "PhysicalDeviceOpticalFlowFeaturesNV"; + case StructureType::ePhysicalDeviceOpticalFlowPropertiesNV : return "PhysicalDeviceOpticalFlowPropertiesNV"; + case StructureType::eOpticalFlowImageFormatInfoNV : return "OpticalFlowImageFormatInfoNV"; + case StructureType::eOpticalFlowImageFormatPropertiesNV : return "OpticalFlowImageFormatPropertiesNV"; + case StructureType::eOpticalFlowSessionCreateInfoNV : return "OpticalFlowSessionCreateInfoNV"; + case StructureType::eOpticalFlowExecuteInfoNV : return "OpticalFlowExecuteInfoNV"; + case StructureType::eOpticalFlowSessionCreatePrivateDataInfoNV : return "OpticalFlowSessionCreatePrivateDataInfoNV"; + case StructureType::ePhysicalDeviceLegacyDitheringFeaturesEXT : return "PhysicalDeviceLegacyDitheringFeaturesEXT"; +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + case StructureType::ePhysicalDeviceExternalFormatResolveFeaturesANDROID : return "PhysicalDeviceExternalFormatResolveFeaturesANDROID"; + case StructureType::ePhysicalDeviceExternalFormatResolvePropertiesANDROID: return "PhysicalDeviceExternalFormatResolvePropertiesANDROID"; + case StructureType::eAndroidHardwareBufferFormatResolvePropertiesANDROID : return "AndroidHardwareBufferFormatResolvePropertiesANDROID"; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + case StructureType::ePhysicalDeviceAntiLagFeaturesAMD: return "PhysicalDeviceAntiLagFeaturesAMD"; + case StructureType::eAntiLagDataAMD : return "AntiLagDataAMD"; + case StructureType::eAntiLagPresentationInfoAMD : return "AntiLagPresentationInfoAMD"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case StructureType::ePhysicalDeviceDenseGeometryFormatFeaturesAMDX : return "PhysicalDeviceDenseGeometryFormatFeaturesAMDX"; + case StructureType::eAccelerationStructureDenseGeometryFormatTrianglesDataAMDX: return "AccelerationStructureDenseGeometryFormatTrianglesDataAMDX"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case StructureType::eSurfaceCapabilitiesPresentId2KHR : return "SurfaceCapabilitiesPresentId2KHR"; + case StructureType::ePresentId2KHR : return "PresentId2KHR"; + case StructureType::ePhysicalDevicePresentId2FeaturesKHR : return "PhysicalDevicePresentId2FeaturesKHR"; + case StructureType::eSurfaceCapabilitiesPresentWait2KHR : return "SurfaceCapabilitiesPresentWait2KHR"; + case StructureType::ePhysicalDevicePresentWait2FeaturesKHR : return "PhysicalDevicePresentWait2FeaturesKHR"; + case StructureType::ePresentWait2InfoKHR : return "PresentWait2InfoKHR"; + case StructureType::ePhysicalDeviceRayTracingPositionFetchFeaturesKHR : return "PhysicalDeviceRayTracingPositionFetchFeaturesKHR"; + case StructureType::ePhysicalDeviceShaderObjectFeaturesEXT : return "PhysicalDeviceShaderObjectFeaturesEXT"; + case StructureType::ePhysicalDeviceShaderObjectPropertiesEXT : return "PhysicalDeviceShaderObjectPropertiesEXT"; + case StructureType::eShaderCreateInfoEXT : return "ShaderCreateInfoEXT"; + case StructureType::ePhysicalDevicePipelineBinaryFeaturesKHR : return "PhysicalDevicePipelineBinaryFeaturesKHR"; + case StructureType::ePipelineBinaryCreateInfoKHR : return "PipelineBinaryCreateInfoKHR"; + case StructureType::ePipelineBinaryInfoKHR : return "PipelineBinaryInfoKHR"; + case StructureType::ePipelineBinaryKeyKHR : return "PipelineBinaryKeyKHR"; + case StructureType::ePhysicalDevicePipelineBinaryPropertiesKHR : return "PhysicalDevicePipelineBinaryPropertiesKHR"; + case StructureType::eReleaseCapturedPipelineDataInfoKHR : return "ReleaseCapturedPipelineDataInfoKHR"; + case StructureType::ePipelineBinaryDataInfoKHR : return "PipelineBinaryDataInfoKHR"; + case StructureType::ePipelineCreateInfoKHR : return "PipelineCreateInfoKHR"; + case StructureType::eDevicePipelineBinaryInternalCacheControlKHR : return "DevicePipelineBinaryInternalCacheControlKHR"; + case StructureType::ePipelineBinaryHandlesInfoKHR : return "PipelineBinaryHandlesInfoKHR"; + case StructureType::ePhysicalDeviceTilePropertiesFeaturesQCOM : return "PhysicalDeviceTilePropertiesFeaturesQCOM"; + case StructureType::eTilePropertiesQCOM : return "TilePropertiesQCOM"; + case StructureType::ePhysicalDeviceAmigoProfilingFeaturesSEC : return "PhysicalDeviceAmigoProfilingFeaturesSEC"; + case StructureType::eAmigoProfilingSubmitInfoSEC : return "AmigoProfilingSubmitInfoSEC"; + case StructureType::eSurfacePresentModeKHR : return "SurfacePresentModeKHR"; + case StructureType::eSurfacePresentScalingCapabilitiesKHR : return "SurfacePresentScalingCapabilitiesKHR"; + case StructureType::eSurfacePresentModeCompatibilityKHR : return "SurfacePresentModeCompatibilityKHR"; + case StructureType::ePhysicalDeviceSwapchainMaintenance1FeaturesKHR : return "PhysicalDeviceSwapchainMaintenance1FeaturesKHR"; + case StructureType::eSwapchainPresentFenceInfoKHR : return "SwapchainPresentFenceInfoKHR"; + case StructureType::eSwapchainPresentModesCreateInfoKHR : return "SwapchainPresentModesCreateInfoKHR"; + case StructureType::eSwapchainPresentModeInfoKHR : return "SwapchainPresentModeInfoKHR"; + case StructureType::eSwapchainPresentScalingCreateInfoKHR : return "SwapchainPresentScalingCreateInfoKHR"; + case StructureType::eReleaseSwapchainImagesInfoKHR : return "ReleaseSwapchainImagesInfoKHR"; + case StructureType::ePhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM : return "PhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM"; + case StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesNV : return "PhysicalDeviceRayTracingInvocationReorderFeaturesNV"; + case StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesNV : return "PhysicalDeviceRayTracingInvocationReorderPropertiesNV"; + case StructureType::ePhysicalDeviceCooperativeVectorFeaturesNV : return "PhysicalDeviceCooperativeVectorFeaturesNV"; + case StructureType::ePhysicalDeviceCooperativeVectorPropertiesNV : return "PhysicalDeviceCooperativeVectorPropertiesNV"; + case StructureType::eCooperativeVectorPropertiesNV : return "CooperativeVectorPropertiesNV"; + case StructureType::eConvertCooperativeVectorMatrixInfoNV : return "ConvertCooperativeVectorMatrixInfoNV"; + case StructureType::ePhysicalDeviceExtendedSparseAddressSpaceFeaturesNV : return "PhysicalDeviceExtendedSparseAddressSpaceFeaturesNV"; + case StructureType::ePhysicalDeviceExtendedSparseAddressSpacePropertiesNV : return "PhysicalDeviceExtendedSparseAddressSpacePropertiesNV"; + case StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesEXT : return "PhysicalDeviceMutableDescriptorTypeFeaturesEXT"; + case StructureType::eMutableDescriptorTypeCreateInfoEXT : return "MutableDescriptorTypeCreateInfoEXT"; + case StructureType::ePhysicalDeviceLegacyVertexAttributesFeaturesEXT : return "PhysicalDeviceLegacyVertexAttributesFeaturesEXT"; + case StructureType::ePhysicalDeviceLegacyVertexAttributesPropertiesEXT : return "PhysicalDeviceLegacyVertexAttributesPropertiesEXT"; + case StructureType::eLayerSettingsCreateInfoEXT : return "LayerSettingsCreateInfoEXT"; + case StructureType::ePhysicalDeviceShaderCoreBuiltinsFeaturesARM : return "PhysicalDeviceShaderCoreBuiltinsFeaturesARM"; + case StructureType::ePhysicalDeviceShaderCoreBuiltinsPropertiesARM : return "PhysicalDeviceShaderCoreBuiltinsPropertiesARM"; + case StructureType::ePhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT : return "PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT"; + case StructureType::ePhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT : return "PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT"; + case StructureType::ePhysicalDeviceInternallySynchronizedQueuesFeaturesKHR : return "PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR"; + case StructureType::eLatencySleepModeInfoNV : return "LatencySleepModeInfoNV"; + case StructureType::eLatencySleepInfoNV : return "LatencySleepInfoNV"; + case StructureType::eSetLatencyMarkerInfoNV : return "SetLatencyMarkerInfoNV"; + case StructureType::eGetLatencyMarkerInfoNV : return "GetLatencyMarkerInfoNV"; + case StructureType::eLatencyTimingsFrameReportNV : return "LatencyTimingsFrameReportNV"; + case StructureType::eLatencySubmissionPresentIdNV : return "LatencySubmissionPresentIdNV"; + case StructureType::eOutOfBandQueueTypeInfoNV : return "OutOfBandQueueTypeInfoNV"; + case StructureType::eSwapchainLatencyCreateInfoNV : return "SwapchainLatencyCreateInfoNV"; + case StructureType::eLatencySurfaceCapabilitiesNV : return "LatencySurfaceCapabilitiesNV"; + case StructureType::ePhysicalDeviceCooperativeMatrixFeaturesKHR : return "PhysicalDeviceCooperativeMatrixFeaturesKHR"; + case StructureType::eCooperativeMatrixPropertiesKHR : return "CooperativeMatrixPropertiesKHR"; + case StructureType::ePhysicalDeviceCooperativeMatrixPropertiesKHR : return "PhysicalDeviceCooperativeMatrixPropertiesKHR"; + case StructureType::eDataGraphPipelineCreateInfoARM : return "DataGraphPipelineCreateInfoARM"; + case StructureType::eDataGraphPipelineSessionCreateInfoARM : return "DataGraphPipelineSessionCreateInfoARM"; + case StructureType::eDataGraphPipelineResourceInfoARM : return "DataGraphPipelineResourceInfoARM"; + case StructureType::eDataGraphPipelineConstantARM : return "DataGraphPipelineConstantARM"; + case StructureType::eDataGraphPipelineSessionMemoryRequirementsInfoARM : return "DataGraphPipelineSessionMemoryRequirementsInfoARM"; + case StructureType::eBindDataGraphPipelineSessionMemoryInfoARM : return "BindDataGraphPipelineSessionMemoryInfoARM"; + case StructureType::ePhysicalDeviceDataGraphFeaturesARM : return "PhysicalDeviceDataGraphFeaturesARM"; + case StructureType::eDataGraphPipelineShaderModuleCreateInfoARM : return "DataGraphPipelineShaderModuleCreateInfoARM"; + case StructureType::eDataGraphPipelinePropertyQueryResultARM : return "DataGraphPipelinePropertyQueryResultARM"; + case StructureType::eDataGraphPipelineInfoARM : return "DataGraphPipelineInfoARM"; + case StructureType::eDataGraphPipelineCompilerControlCreateInfoARM : return "DataGraphPipelineCompilerControlCreateInfoARM"; + case StructureType::eDataGraphPipelineSessionBindPointRequirementsInfoARM : return "DataGraphPipelineSessionBindPointRequirementsInfoARM"; + case StructureType::eDataGraphPipelineSessionBindPointRequirementARM : return "DataGraphPipelineSessionBindPointRequirementARM"; + case StructureType::eDataGraphPipelineIdentifierCreateInfoARM : return "DataGraphPipelineIdentifierCreateInfoARM"; + case StructureType::eDataGraphPipelineDispatchInfoARM : return "DataGraphPipelineDispatchInfoARM"; + case StructureType::eDataGraphProcessingEngineCreateInfoARM : return "DataGraphProcessingEngineCreateInfoARM"; + case StructureType::eQueueFamilyDataGraphProcessingEnginePropertiesARM : return "QueueFamilyDataGraphProcessingEnginePropertiesARM"; + case StructureType::eQueueFamilyDataGraphPropertiesARM : return "QueueFamilyDataGraphPropertiesARM"; + case StructureType::ePhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM : return "PhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM"; + case StructureType::eDataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM: return "DataGraphPipelineConstantTensorSemiStructuredSparsityInfoARM"; + case StructureType::ePhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM : return "PhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM"; + case StructureType::eMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM : return "MultiviewPerViewRenderAreasRenderPassBeginInfoQCOM"; + case StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesKHR : return "PhysicalDeviceComputeShaderDerivativesFeaturesKHR"; + case StructureType::ePhysicalDeviceComputeShaderDerivativesPropertiesKHR : return "PhysicalDeviceComputeShaderDerivativesPropertiesKHR"; + case StructureType::eVideoDecodeAv1CapabilitiesKHR : return "VideoDecodeAv1CapabilitiesKHR"; + case StructureType::eVideoDecodeAv1PictureInfoKHR : return "VideoDecodeAv1PictureInfoKHR"; + case StructureType::eVideoDecodeAv1ProfileInfoKHR : return "VideoDecodeAv1ProfileInfoKHR"; + case StructureType::eVideoDecodeAv1SessionParametersCreateInfoKHR : return "VideoDecodeAv1SessionParametersCreateInfoKHR"; + case StructureType::eVideoDecodeAv1DpbSlotInfoKHR : return "VideoDecodeAv1DpbSlotInfoKHR"; + case StructureType::eVideoEncodeAv1CapabilitiesKHR : return "VideoEncodeAv1CapabilitiesKHR"; + case StructureType::eVideoEncodeAv1SessionParametersCreateInfoKHR : return "VideoEncodeAv1SessionParametersCreateInfoKHR"; + case StructureType::eVideoEncodeAv1PictureInfoKHR : return "VideoEncodeAv1PictureInfoKHR"; + case StructureType::eVideoEncodeAv1DpbSlotInfoKHR : return "VideoEncodeAv1DpbSlotInfoKHR"; + case StructureType::ePhysicalDeviceVideoEncodeAv1FeaturesKHR : return "PhysicalDeviceVideoEncodeAv1FeaturesKHR"; + case StructureType::eVideoEncodeAv1ProfileInfoKHR : return "VideoEncodeAv1ProfileInfoKHR"; + case StructureType::eVideoEncodeAv1RateControlInfoKHR : return "VideoEncodeAv1RateControlInfoKHR"; + case StructureType::eVideoEncodeAv1RateControlLayerInfoKHR : return "VideoEncodeAv1RateControlLayerInfoKHR"; + case StructureType::eVideoEncodeAv1QualityLevelPropertiesKHR : return "VideoEncodeAv1QualityLevelPropertiesKHR"; + case StructureType::eVideoEncodeAv1SessionCreateInfoKHR : return "VideoEncodeAv1SessionCreateInfoKHR"; + case StructureType::eVideoEncodeAv1GopRemainingFrameInfoKHR : return "VideoEncodeAv1GopRemainingFrameInfoKHR"; + case StructureType::ePhysicalDeviceVideoDecodeVp9FeaturesKHR : return "PhysicalDeviceVideoDecodeVp9FeaturesKHR"; + case StructureType::eVideoDecodeVp9CapabilitiesKHR : return "VideoDecodeVp9CapabilitiesKHR"; + case StructureType::eVideoDecodeVp9PictureInfoKHR : return "VideoDecodeVp9PictureInfoKHR"; + case StructureType::eVideoDecodeVp9ProfileInfoKHR : return "VideoDecodeVp9ProfileInfoKHR"; + case StructureType::ePhysicalDeviceVideoMaintenance1FeaturesKHR : return "PhysicalDeviceVideoMaintenance1FeaturesKHR"; + case StructureType::eVideoInlineQueryInfoKHR : return "VideoInlineQueryInfoKHR"; + case StructureType::ePhysicalDevicePerStageDescriptorSetFeaturesNV : return "PhysicalDevicePerStageDescriptorSetFeaturesNV"; + case StructureType::ePhysicalDeviceImageProcessing2FeaturesQCOM : return "PhysicalDeviceImageProcessing2FeaturesQCOM"; + case StructureType::ePhysicalDeviceImageProcessing2PropertiesQCOM : return "PhysicalDeviceImageProcessing2PropertiesQCOM"; + case StructureType::eSamplerBlockMatchWindowCreateInfoQCOM : return "SamplerBlockMatchWindowCreateInfoQCOM"; + case StructureType::eSamplerCubicWeightsCreateInfoQCOM : return "SamplerCubicWeightsCreateInfoQCOM"; + case StructureType::ePhysicalDeviceCubicWeightsFeaturesQCOM : return "PhysicalDeviceCubicWeightsFeaturesQCOM"; + case StructureType::eBlitImageCubicWeightsInfoQCOM : return "BlitImageCubicWeightsInfoQCOM"; + case StructureType::ePhysicalDeviceYcbcrDegammaFeaturesQCOM : return "PhysicalDeviceYcbcrDegammaFeaturesQCOM"; + case StructureType::eSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM : return "SamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM"; + case StructureType::ePhysicalDeviceCubicClampFeaturesQCOM : return "PhysicalDeviceCubicClampFeaturesQCOM"; + case StructureType::ePhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT : return "PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT"; + case StructureType::ePhysicalDeviceUnifiedImageLayoutsFeaturesKHR : return "PhysicalDeviceUnifiedImageLayoutsFeaturesKHR"; + case StructureType::eAttachmentFeedbackLoopInfoEXT : return "AttachmentFeedbackLoopInfoEXT"; +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + case StructureType::eScreenBufferPropertiesQNX : return "ScreenBufferPropertiesQNX"; + case StructureType::eScreenBufferFormatPropertiesQNX : return "ScreenBufferFormatPropertiesQNX"; + case StructureType::eImportScreenBufferInfoQNX : return "ImportScreenBufferInfoQNX"; + case StructureType::eExternalFormatQNX : return "ExternalFormatQNX"; + case StructureType::ePhysicalDeviceExternalMemoryScreenBufferFeaturesQNX: return "PhysicalDeviceExternalMemoryScreenBufferFeaturesQNX"; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + case StructureType::ePhysicalDeviceLayeredDriverPropertiesMSFT : return "PhysicalDeviceLayeredDriverPropertiesMSFT"; + case StructureType::eCalibratedTimestampInfoKHR : return "CalibratedTimestampInfoKHR"; + case StructureType::eSetDescriptorBufferOffsetsInfoEXT : return "SetDescriptorBufferOffsetsInfoEXT"; + case StructureType::eBindDescriptorBufferEmbeddedSamplersInfoEXT : return "BindDescriptorBufferEmbeddedSamplersInfoEXT"; + case StructureType::ePhysicalDeviceDescriptorPoolOverallocationFeaturesNV : return "PhysicalDeviceDescriptorPoolOverallocationFeaturesNV"; + case StructureType::ePhysicalDeviceTileMemoryHeapFeaturesQCOM : return "PhysicalDeviceTileMemoryHeapFeaturesQCOM"; + case StructureType::ePhysicalDeviceTileMemoryHeapPropertiesQCOM : return "PhysicalDeviceTileMemoryHeapPropertiesQCOM"; + case StructureType::eTileMemoryRequirementsQCOM : return "TileMemoryRequirementsQCOM"; + case StructureType::eTileMemoryBindInfoQCOM : return "TileMemoryBindInfoQCOM"; + case StructureType::eTileMemorySizeInfoQCOM : return "TileMemorySizeInfoQCOM"; + case StructureType::ePhysicalDeviceCopyMemoryIndirectFeaturesKHR : return "PhysicalDeviceCopyMemoryIndirectFeaturesKHR"; + case StructureType::ePhysicalDeviceCopyMemoryIndirectPropertiesKHR : return "PhysicalDeviceCopyMemoryIndirectPropertiesKHR"; + case StructureType::eCopyMemoryIndirectInfoKHR : return "CopyMemoryIndirectInfoKHR"; + case StructureType::eCopyMemoryToImageIndirectInfoKHR : return "CopyMemoryToImageIndirectInfoKHR"; + case StructureType::ePhysicalDeviceMemoryDecompressionFeaturesEXT : return "PhysicalDeviceMemoryDecompressionFeaturesEXT"; + case StructureType::ePhysicalDeviceMemoryDecompressionPropertiesEXT : return "PhysicalDeviceMemoryDecompressionPropertiesEXT"; + case StructureType::eDecompressMemoryInfoEXT : return "DecompressMemoryInfoEXT"; + case StructureType::eDisplaySurfaceStereoCreateInfoNV : return "DisplaySurfaceStereoCreateInfoNV"; + case StructureType::eDisplayModeStereoPropertiesNV : return "DisplayModeStereoPropertiesNV"; + case StructureType::eVideoEncodeIntraRefreshCapabilitiesKHR : return "VideoEncodeIntraRefreshCapabilitiesKHR"; + case StructureType::eVideoEncodeSessionIntraRefreshCreateInfoKHR : return "VideoEncodeSessionIntraRefreshCreateInfoKHR"; + case StructureType::eVideoEncodeIntraRefreshInfoKHR : return "VideoEncodeIntraRefreshInfoKHR"; + case StructureType::eVideoReferenceIntraRefreshInfoKHR : return "VideoReferenceIntraRefreshInfoKHR"; + case StructureType::ePhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR : return "PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR"; + case StructureType::eVideoEncodeQuantizationMapCapabilitiesKHR : return "VideoEncodeQuantizationMapCapabilitiesKHR"; + case StructureType::eVideoFormatQuantizationMapPropertiesKHR : return "VideoFormatQuantizationMapPropertiesKHR"; + case StructureType::eVideoEncodeQuantizationMapInfoKHR : return "VideoEncodeQuantizationMapInfoKHR"; + case StructureType::eVideoEncodeQuantizationMapSessionParametersCreateInfoKHR : return "VideoEncodeQuantizationMapSessionParametersCreateInfoKHR"; + case StructureType::ePhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR : return "PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR"; + case StructureType::eVideoEncodeH264QuantizationMapCapabilitiesKHR : return "VideoEncodeH264QuantizationMapCapabilitiesKHR"; + case StructureType::eVideoEncodeH265QuantizationMapCapabilitiesKHR : return "VideoEncodeH265QuantizationMapCapabilitiesKHR"; + case StructureType::eVideoFormatH265QuantizationMapPropertiesKHR : return "VideoFormatH265QuantizationMapPropertiesKHR"; + case StructureType::eVideoEncodeAv1QuantizationMapCapabilitiesKHR : return "VideoEncodeAv1QuantizationMapCapabilitiesKHR"; + case StructureType::eVideoFormatAv1QuantizationMapPropertiesKHR : return "VideoFormatAv1QuantizationMapPropertiesKHR"; + case StructureType::ePhysicalDeviceRawAccessChainsFeaturesNV : return "PhysicalDeviceRawAccessChainsFeaturesNV"; + case StructureType::eExternalComputeQueueDeviceCreateInfoNV : return "ExternalComputeQueueDeviceCreateInfoNV"; + case StructureType::eExternalComputeQueueCreateInfoNV : return "ExternalComputeQueueCreateInfoNV"; + case StructureType::eExternalComputeQueueDataParamsNV : return "ExternalComputeQueueDataParamsNV"; + case StructureType::ePhysicalDeviceExternalComputeQueuePropertiesNV : return "PhysicalDeviceExternalComputeQueuePropertiesNV"; + case StructureType::ePhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR : return "PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR"; + case StructureType::ePhysicalDeviceCommandBufferInheritanceFeaturesNV : return "PhysicalDeviceCommandBufferInheritanceFeaturesNV"; + case StructureType::ePhysicalDeviceMaintenance7FeaturesKHR : return "PhysicalDeviceMaintenance7FeaturesKHR"; + case StructureType::ePhysicalDeviceMaintenance7PropertiesKHR : return "PhysicalDeviceMaintenance7PropertiesKHR"; + case StructureType::ePhysicalDeviceLayeredApiPropertiesListKHR : return "PhysicalDeviceLayeredApiPropertiesListKHR"; + case StructureType::ePhysicalDeviceLayeredApiPropertiesKHR : return "PhysicalDeviceLayeredApiPropertiesKHR"; + case StructureType::ePhysicalDeviceLayeredApiVulkanPropertiesKHR : return "PhysicalDeviceLayeredApiVulkanPropertiesKHR"; + case StructureType::ePhysicalDeviceShaderAtomicFloat16VectorFeaturesNV : return "PhysicalDeviceShaderAtomicFloat16VectorFeaturesNV"; + case StructureType::ePhysicalDeviceShaderReplicatedCompositesFeaturesEXT : return "PhysicalDeviceShaderReplicatedCompositesFeaturesEXT"; + case StructureType::ePhysicalDeviceShaderFloat8FeaturesEXT : return "PhysicalDeviceShaderFloat8FeaturesEXT"; + case StructureType::ePhysicalDeviceRayTracingValidationFeaturesNV : return "PhysicalDeviceRayTracingValidationFeaturesNV"; + case StructureType::ePhysicalDeviceClusterAccelerationStructureFeaturesNV : return "PhysicalDeviceClusterAccelerationStructureFeaturesNV"; + case StructureType::ePhysicalDeviceClusterAccelerationStructurePropertiesNV : return "PhysicalDeviceClusterAccelerationStructurePropertiesNV"; + case StructureType::eClusterAccelerationStructureClustersBottomLevelInputNV : return "ClusterAccelerationStructureClustersBottomLevelInputNV"; + case StructureType::eClusterAccelerationStructureTriangleClusterInputNV : return "ClusterAccelerationStructureTriangleClusterInputNV"; + case StructureType::eClusterAccelerationStructureMoveObjectsInputNV : return "ClusterAccelerationStructureMoveObjectsInputNV"; + case StructureType::eClusterAccelerationStructureInputInfoNV : return "ClusterAccelerationStructureInputInfoNV"; + case StructureType::eClusterAccelerationStructureCommandsInfoNV : return "ClusterAccelerationStructureCommandsInfoNV"; + case StructureType::eRayTracingPipelineClusterAccelerationStructureCreateInfoNV: return "RayTracingPipelineClusterAccelerationStructureCreateInfoNV"; + case StructureType::ePhysicalDevicePartitionedAccelerationStructureFeaturesNV : return "PhysicalDevicePartitionedAccelerationStructureFeaturesNV"; + case StructureType::ePhysicalDevicePartitionedAccelerationStructurePropertiesNV: return "PhysicalDevicePartitionedAccelerationStructurePropertiesNV"; + case StructureType::eWriteDescriptorSetPartitionedAccelerationStructureNV : return "WriteDescriptorSetPartitionedAccelerationStructureNV"; + case StructureType::ePartitionedAccelerationStructureInstancesInputNV : return "PartitionedAccelerationStructureInstancesInputNV"; + case StructureType::eBuildPartitionedAccelerationStructureInfoNV : return "BuildPartitionedAccelerationStructureInfoNV"; + case StructureType::ePartitionedAccelerationStructureFlagsNV : return "PartitionedAccelerationStructureFlagsNV"; + case StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesEXT : return "PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT"; + case StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesEXT : return "PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT"; + case StructureType::eGeneratedCommandsMemoryRequirementsInfoEXT : return "GeneratedCommandsMemoryRequirementsInfoEXT"; + case StructureType::eIndirectExecutionSetCreateInfoEXT : return "IndirectExecutionSetCreateInfoEXT"; + case StructureType::eGeneratedCommandsInfoEXT : return "GeneratedCommandsInfoEXT"; + case StructureType::eIndirectCommandsLayoutCreateInfoEXT : return "IndirectCommandsLayoutCreateInfoEXT"; + case StructureType::eIndirectCommandsLayoutTokenEXT : return "IndirectCommandsLayoutTokenEXT"; + case StructureType::eWriteIndirectExecutionSetPipelineEXT : return "WriteIndirectExecutionSetPipelineEXT"; + case StructureType::eWriteIndirectExecutionSetShaderEXT : return "WriteIndirectExecutionSetShaderEXT"; + case StructureType::eIndirectExecutionSetPipelineInfoEXT : return "IndirectExecutionSetPipelineInfoEXT"; + case StructureType::eIndirectExecutionSetShaderInfoEXT : return "IndirectExecutionSetShaderInfoEXT"; + case StructureType::eIndirectExecutionSetShaderLayoutInfoEXT : return "IndirectExecutionSetShaderLayoutInfoEXT"; + case StructureType::eGeneratedCommandsPipelineInfoEXT : return "GeneratedCommandsPipelineInfoEXT"; + case StructureType::eGeneratedCommandsShaderInfoEXT : return "GeneratedCommandsShaderInfoEXT"; + case StructureType::ePhysicalDeviceFaultFeaturesKHR : return "PhysicalDeviceFaultFeaturesKHR"; + case StructureType::ePhysicalDeviceFaultPropertiesKHR : return "PhysicalDeviceFaultPropertiesKHR"; + case StructureType::eDeviceFaultInfoKHR : return "DeviceFaultInfoKHR"; + case StructureType::eDeviceFaultDebugInfoKHR : return "DeviceFaultDebugInfoKHR"; + case StructureType::ePhysicalDeviceMaintenance8FeaturesKHR : return "PhysicalDeviceMaintenance8FeaturesKHR"; + case StructureType::eMemoryBarrierAccessFlags3KHR : return "MemoryBarrierAccessFlags3KHR"; + case StructureType::ePhysicalDeviceImageAlignmentControlFeaturesMESA : return "PhysicalDeviceImageAlignmentControlFeaturesMESA"; + case StructureType::ePhysicalDeviceImageAlignmentControlPropertiesMESA : return "PhysicalDeviceImageAlignmentControlPropertiesMESA"; + case StructureType::eImageAlignmentControlCreateInfoMESA : return "ImageAlignmentControlCreateInfoMESA"; + case StructureType::ePhysicalDeviceShaderFmaFeaturesKHR : return "PhysicalDeviceShaderFmaFeaturesKHR"; + case StructureType::ePushConstantBankInfoNV : return "PushConstantBankInfoNV"; + case StructureType::ePhysicalDevicePushConstantBankFeaturesNV : return "PhysicalDevicePushConstantBankFeaturesNV"; + case StructureType::ePhysicalDevicePushConstantBankPropertiesNV : return "PhysicalDevicePushConstantBankPropertiesNV"; + case StructureType::ePhysicalDeviceRayTracingInvocationReorderFeaturesEXT : return "PhysicalDeviceRayTracingInvocationReorderFeaturesEXT"; + case StructureType::ePhysicalDeviceRayTracingInvocationReorderPropertiesEXT : return "PhysicalDeviceRayTracingInvocationReorderPropertiesEXT"; + case StructureType::ePhysicalDeviceDepthClampControlFeaturesEXT : return "PhysicalDeviceDepthClampControlFeaturesEXT"; + case StructureType::ePipelineViewportDepthClampControlCreateInfoEXT : return "PipelineViewportDepthClampControlCreateInfoEXT"; + case StructureType::ePhysicalDeviceMaintenance9FeaturesKHR : return "PhysicalDeviceMaintenance9FeaturesKHR"; + case StructureType::ePhysicalDeviceMaintenance9PropertiesKHR : return "PhysicalDeviceMaintenance9PropertiesKHR"; + case StructureType::eQueueFamilyOwnershipTransferPropertiesKHR : return "QueueFamilyOwnershipTransferPropertiesKHR"; + case StructureType::ePhysicalDeviceVideoMaintenance2FeaturesKHR : return "PhysicalDeviceVideoMaintenance2FeaturesKHR"; + case StructureType::eVideoDecodeH264InlineSessionParametersInfoKHR : return "VideoDecodeH264InlineSessionParametersInfoKHR"; + case StructureType::eVideoDecodeH265InlineSessionParametersInfoKHR : return "VideoDecodeH265InlineSessionParametersInfoKHR"; + case StructureType::eVideoDecodeAv1InlineSessionParametersInfoKHR : return "VideoDecodeAv1InlineSessionParametersInfoKHR"; +#if defined( VK_USE_PLATFORM_OHOS ) + case StructureType::eSurfaceCreateInfoOHOS: return "SurfaceCreateInfoOHOS"; +#endif /*VK_USE_PLATFORM_OHOS*/ + case StructureType::ePhysicalDeviceHdrVividFeaturesHUAWEI : return "PhysicalDeviceHdrVividFeaturesHUAWEI"; + case StructureType::eHdrVividDynamicMetadataHUAWEI : return "HdrVividDynamicMetadataHUAWEI"; + case StructureType::ePhysicalDeviceCooperativeMatrix2FeaturesNV : return "PhysicalDeviceCooperativeMatrix2FeaturesNV"; + case StructureType::eCooperativeMatrixFlexibleDimensionsPropertiesNV : return "CooperativeMatrixFlexibleDimensionsPropertiesNV"; + case StructureType::ePhysicalDeviceCooperativeMatrix2PropertiesNV : return "PhysicalDeviceCooperativeMatrix2PropertiesNV"; + case StructureType::ePhysicalDevicePipelineOpacityMicromapFeaturesARM: return "PhysicalDevicePipelineOpacityMicromapFeaturesARM"; +#if defined( VK_USE_PLATFORM_METAL_EXT ) + case StructureType::eImportMemoryMetalHandleInfoEXT: return "ImportMemoryMetalHandleInfoEXT"; + case StructureType::eMemoryMetalHandlePropertiesEXT: return "MemoryMetalHandlePropertiesEXT"; + case StructureType::eMemoryGetMetalHandleInfoEXT : return "MemoryGetMetalHandleInfoEXT"; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + case StructureType::ePhysicalDeviceDepthClampZeroOneFeaturesKHR : return "PhysicalDeviceDepthClampZeroOneFeaturesKHR"; + case StructureType::ePhysicalDevicePerformanceCountersByRegionFeaturesARM : return "PhysicalDevicePerformanceCountersByRegionFeaturesARM"; + case StructureType::ePhysicalDevicePerformanceCountersByRegionPropertiesARM : return "PhysicalDevicePerformanceCountersByRegionPropertiesARM"; + case StructureType::ePerformanceCounterARM : return "PerformanceCounterARM"; + case StructureType::ePerformanceCounterDescriptionARM : return "PerformanceCounterDescriptionARM"; + case StructureType::eRenderPassPerformanceCountersByRegionBeginInfoARM : return "RenderPassPerformanceCountersByRegionBeginInfoARM"; + case StructureType::ePhysicalDeviceShaderInstrumentationFeaturesARM : return "PhysicalDeviceShaderInstrumentationFeaturesARM"; + case StructureType::ePhysicalDeviceShaderInstrumentationPropertiesARM : return "PhysicalDeviceShaderInstrumentationPropertiesARM"; + case StructureType::eShaderInstrumentationCreateInfoARM : return "ShaderInstrumentationCreateInfoARM"; + case StructureType::eShaderInstrumentationMetricDescriptionARM : return "ShaderInstrumentationMetricDescriptionARM"; + case StructureType::ePhysicalDeviceVertexAttributeRobustnessFeaturesEXT : return "PhysicalDeviceVertexAttributeRobustnessFeaturesEXT"; + case StructureType::ePhysicalDeviceFormatPackFeaturesARM : return "PhysicalDeviceFormatPackFeaturesARM"; + case StructureType::ePhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE : return "PhysicalDeviceFragmentDensityMapLayeredFeaturesVALVE"; + case StructureType::ePhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE : return "PhysicalDeviceFragmentDensityMapLayeredPropertiesVALVE"; + case StructureType::ePipelineFragmentDensityMapLayeredCreateInfoVALVE : return "PipelineFragmentDensityMapLayeredCreateInfoVALVE"; + case StructureType::ePhysicalDeviceRobustness2FeaturesKHR : return "PhysicalDeviceRobustness2FeaturesKHR"; + case StructureType::ePhysicalDeviceRobustness2PropertiesKHR : return "PhysicalDeviceRobustness2PropertiesKHR"; + case StructureType::eSetPresentConfigNV : return "SetPresentConfigNV"; + case StructureType::ePhysicalDevicePresentMeteringFeaturesNV : return "PhysicalDevicePresentMeteringFeaturesNV"; + case StructureType::ePhysicalDeviceFragmentDensityMapOffsetFeaturesEXT : return "PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT"; + case StructureType::ePhysicalDeviceFragmentDensityMapOffsetPropertiesEXT : return "PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT"; + case StructureType::eRenderPassFragmentDensityMapOffsetEndInfoEXT : return "RenderPassFragmentDensityMapOffsetEndInfoEXT"; + case StructureType::ePhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT : return "PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT"; + case StructureType::ePhysicalDevicePresentModeFifoLatestReadyFeaturesKHR : return "PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR"; + case StructureType::ePhysicalDeviceShader64BitIndexingFeaturesEXT : return "PhysicalDeviceShader64BitIndexingFeaturesEXT"; + case StructureType::ePhysicalDeviceCustomResolveFeaturesEXT : return "PhysicalDeviceCustomResolveFeaturesEXT"; + case StructureType::eBeginCustomResolveInfoEXT : return "BeginCustomResolveInfoEXT"; + case StructureType::eCustomResolveCreateInfoEXT : return "CustomResolveCreateInfoEXT"; + case StructureType::ePhysicalDeviceDataGraphModelFeaturesQCOM : return "PhysicalDeviceDataGraphModelFeaturesQCOM"; + case StructureType::eDataGraphPipelineBuiltinModelCreateInfoQCOM : return "DataGraphPipelineBuiltinModelCreateInfoQCOM"; + case StructureType::ePhysicalDeviceMaintenance10FeaturesKHR : return "PhysicalDeviceMaintenance10FeaturesKHR"; + case StructureType::ePhysicalDeviceMaintenance10PropertiesKHR : return "PhysicalDeviceMaintenance10PropertiesKHR"; + case StructureType::eRenderingAttachmentFlagsInfoKHR : return "RenderingAttachmentFlagsInfoKHR"; + case StructureType::eRenderingEndInfoKHR : return "RenderingEndInfoKHR"; + case StructureType::eResolveImageModeInfoKHR : return "ResolveImageModeInfoKHR"; + case StructureType::ePhysicalDeviceShaderLongVectorFeaturesEXT : return "PhysicalDeviceShaderLongVectorFeaturesEXT"; + case StructureType::ePhysicalDeviceShaderLongVectorPropertiesEXT : return "PhysicalDeviceShaderLongVectorPropertiesEXT"; + case StructureType::ePhysicalDevicePipelineCacheIncrementalModeFeaturesSEC : return "PhysicalDevicePipelineCacheIncrementalModeFeaturesSEC"; + case StructureType::ePhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT: return "PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT"; + case StructureType::eComputeOccupancyPriorityParametersNV : return "ComputeOccupancyPriorityParametersNV"; + case StructureType::ePhysicalDeviceComputeOccupancyPriorityFeaturesNV : return "PhysicalDeviceComputeOccupancyPriorityFeaturesNV"; + case StructureType::ePhysicalDeviceShaderSubgroupPartitionedFeaturesEXT : return "PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT"; +#if defined( VK_USE_PLATFORM_UBM_SEC ) + case StructureType::eUbmSurfaceCreateInfoSEC: return "UbmSurfaceCreateInfoSEC"; +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + case StructureType::ePhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE: return "PhysicalDeviceShaderMixedFloatDotProductFeaturesVALVE"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ObjectType value ) + { + switch ( value ) + { + case ObjectType::eUnknown : return "Unknown"; + case ObjectType::eInstance : return "Instance"; + case ObjectType::ePhysicalDevice : return "PhysicalDevice"; + case ObjectType::eDevice : return "Device"; + case ObjectType::eQueue : return "Queue"; + case ObjectType::eSemaphore : return "Semaphore"; + case ObjectType::eCommandBuffer : return "CommandBuffer"; + case ObjectType::eFence : return "Fence"; + case ObjectType::eDeviceMemory : return "DeviceMemory"; + case ObjectType::eBuffer : return "Buffer"; + case ObjectType::eImage : return "Image"; + case ObjectType::eEvent : return "Event"; + case ObjectType::eQueryPool : return "QueryPool"; + case ObjectType::eBufferView : return "BufferView"; + case ObjectType::eImageView : return "ImageView"; + case ObjectType::eShaderModule : return "ShaderModule"; + case ObjectType::ePipelineCache : return "PipelineCache"; + case ObjectType::ePipelineLayout : return "PipelineLayout"; + case ObjectType::eRenderPass : return "RenderPass"; + case ObjectType::ePipeline : return "Pipeline"; + case ObjectType::eDescriptorSetLayout : return "DescriptorSetLayout"; + case ObjectType::eSampler : return "Sampler"; + case ObjectType::eDescriptorPool : return "DescriptorPool"; + case ObjectType::eDescriptorSet : return "DescriptorSet"; + case ObjectType::eFramebuffer : return "Framebuffer"; + case ObjectType::eCommandPool : return "CommandPool"; + case ObjectType::eDescriptorUpdateTemplate : return "DescriptorUpdateTemplate"; + case ObjectType::eSamplerYcbcrConversion : return "SamplerYcbcrConversion"; + case ObjectType::ePrivateDataSlot : return "PrivateDataSlot"; + case ObjectType::eSurfaceKHR : return "SurfaceKHR"; + case ObjectType::eSwapchainKHR : return "SwapchainKHR"; + case ObjectType::eDisplayKHR : return "DisplayKHR"; + case ObjectType::eDisplayModeKHR : return "DisplayModeKHR"; + case ObjectType::eDebugReportCallbackEXT : return "DebugReportCallbackEXT"; + case ObjectType::eVideoSessionKHR : return "VideoSessionKHR"; + case ObjectType::eVideoSessionParametersKHR : return "VideoSessionParametersKHR"; + case ObjectType::eCuModuleNVX : return "CuModuleNVX"; + case ObjectType::eCuFunctionNVX : return "CuFunctionNVX"; + case ObjectType::eDebugUtilsMessengerEXT : return "DebugUtilsMessengerEXT"; + case ObjectType::eAccelerationStructureKHR : return "AccelerationStructureKHR"; + case ObjectType::eValidationCacheEXT : return "ValidationCacheEXT"; + case ObjectType::eAccelerationStructureNV : return "AccelerationStructureNV"; + case ObjectType::ePerformanceConfigurationINTEL: return "PerformanceConfigurationINTEL"; + case ObjectType::eDeferredOperationKHR : return "DeferredOperationKHR"; + case ObjectType::eIndirectCommandsLayoutNV : return "IndirectCommandsLayoutNV"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case ObjectType::eCudaModuleNV : return "CudaModuleNV"; + case ObjectType::eCudaFunctionNV: return "CudaFunctionNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case ObjectType::eBufferCollectionFUCHSIA: return "BufferCollectionFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + case ObjectType::eMicromapEXT : return "MicromapEXT"; + case ObjectType::eTensorARM : return "TensorARM"; + case ObjectType::eTensorViewARM : return "TensorViewARM"; + case ObjectType::eOpticalFlowSessionNV : return "OpticalFlowSessionNV"; + case ObjectType::eShaderEXT : return "ShaderEXT"; + case ObjectType::ePipelineBinaryKHR : return "PipelineBinaryKHR"; + case ObjectType::eDataGraphPipelineSessionARM: return "DataGraphPipelineSessionARM"; + case ObjectType::eExternalComputeQueueNV : return "ExternalComputeQueueNV"; + case ObjectType::eIndirectCommandsLayoutEXT : return "IndirectCommandsLayoutEXT"; + case ObjectType::eIndirectExecutionSetEXT : return "IndirectExecutionSetEXT"; + case ObjectType::eShaderInstrumentationARM : return "ShaderInstrumentationARM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VendorId value ) + { + switch ( value ) + { + case VendorId::eKhronos : return "Khronos"; + case VendorId::eVIV : return "VIV"; + case VendorId::eVSI : return "VSI"; + case VendorId::eKazan : return "Kazan"; + case VendorId::eCodeplay: return "Codeplay"; + case VendorId::eMESA : return "MESA"; + case VendorId::ePocl : return "Pocl"; + case VendorId::eMobileye: return "Mobileye"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( Format value ) + { + switch ( value ) + { + case Format::eUndefined : return "Undefined"; + case Format::eR4G4UnormPack8 : return "R4G4UnormPack8"; + case Format::eR4G4B4A4UnormPack16 : return "R4G4B4A4UnormPack16"; + case Format::eB4G4R4A4UnormPack16 : return "B4G4R4A4UnormPack16"; + case Format::eR5G6B5UnormPack16 : return "R5G6B5UnormPack16"; + case Format::eB5G6R5UnormPack16 : return "B5G6R5UnormPack16"; + case Format::eR5G5B5A1UnormPack16 : return "R5G5B5A1UnormPack16"; + case Format::eB5G5R5A1UnormPack16 : return "B5G5R5A1UnormPack16"; + case Format::eA1R5G5B5UnormPack16 : return "A1R5G5B5UnormPack16"; + case Format::eR8Unorm : return "R8Unorm"; + case Format::eR8Snorm : return "R8Snorm"; + case Format::eR8Uscaled : return "R8Uscaled"; + case Format::eR8Sscaled : return "R8Sscaled"; + case Format::eR8Uint : return "R8Uint"; + case Format::eR8Sint : return "R8Sint"; + case Format::eR8Srgb : return "R8Srgb"; + case Format::eR8G8Unorm : return "R8G8Unorm"; + case Format::eR8G8Snorm : return "R8G8Snorm"; + case Format::eR8G8Uscaled : return "R8G8Uscaled"; + case Format::eR8G8Sscaled : return "R8G8Sscaled"; + case Format::eR8G8Uint : return "R8G8Uint"; + case Format::eR8G8Sint : return "R8G8Sint"; + case Format::eR8G8Srgb : return "R8G8Srgb"; + case Format::eR8G8B8Unorm : return "R8G8B8Unorm"; + case Format::eR8G8B8Snorm : return "R8G8B8Snorm"; + case Format::eR8G8B8Uscaled : return "R8G8B8Uscaled"; + case Format::eR8G8B8Sscaled : return "R8G8B8Sscaled"; + case Format::eR8G8B8Uint : return "R8G8B8Uint"; + case Format::eR8G8B8Sint : return "R8G8B8Sint"; + case Format::eR8G8B8Srgb : return "R8G8B8Srgb"; + case Format::eB8G8R8Unorm : return "B8G8R8Unorm"; + case Format::eB8G8R8Snorm : return "B8G8R8Snorm"; + case Format::eB8G8R8Uscaled : return "B8G8R8Uscaled"; + case Format::eB8G8R8Sscaled : return "B8G8R8Sscaled"; + case Format::eB8G8R8Uint : return "B8G8R8Uint"; + case Format::eB8G8R8Sint : return "B8G8R8Sint"; + case Format::eB8G8R8Srgb : return "B8G8R8Srgb"; + case Format::eR8G8B8A8Unorm : return "R8G8B8A8Unorm"; + case Format::eR8G8B8A8Snorm : return "R8G8B8A8Snorm"; + case Format::eR8G8B8A8Uscaled : return "R8G8B8A8Uscaled"; + case Format::eR8G8B8A8Sscaled : return "R8G8B8A8Sscaled"; + case Format::eR8G8B8A8Uint : return "R8G8B8A8Uint"; + case Format::eR8G8B8A8Sint : return "R8G8B8A8Sint"; + case Format::eR8G8B8A8Srgb : return "R8G8B8A8Srgb"; + case Format::eB8G8R8A8Unorm : return "B8G8R8A8Unorm"; + case Format::eB8G8R8A8Snorm : return "B8G8R8A8Snorm"; + case Format::eB8G8R8A8Uscaled : return "B8G8R8A8Uscaled"; + case Format::eB8G8R8A8Sscaled : return "B8G8R8A8Sscaled"; + case Format::eB8G8R8A8Uint : return "B8G8R8A8Uint"; + case Format::eB8G8R8A8Sint : return "B8G8R8A8Sint"; + case Format::eB8G8R8A8Srgb : return "B8G8R8A8Srgb"; + case Format::eA8B8G8R8UnormPack32 : return "A8B8G8R8UnormPack32"; + case Format::eA8B8G8R8SnormPack32 : return "A8B8G8R8SnormPack32"; + case Format::eA8B8G8R8UscaledPack32 : return "A8B8G8R8UscaledPack32"; + case Format::eA8B8G8R8SscaledPack32 : return "A8B8G8R8SscaledPack32"; + case Format::eA8B8G8R8UintPack32 : return "A8B8G8R8UintPack32"; + case Format::eA8B8G8R8SintPack32 : return "A8B8G8R8SintPack32"; + case Format::eA8B8G8R8SrgbPack32 : return "A8B8G8R8SrgbPack32"; + case Format::eA2R10G10B10UnormPack32 : return "A2R10G10B10UnormPack32"; + case Format::eA2R10G10B10SnormPack32 : return "A2R10G10B10SnormPack32"; + case Format::eA2R10G10B10UscaledPack32 : return "A2R10G10B10UscaledPack32"; + case Format::eA2R10G10B10SscaledPack32 : return "A2R10G10B10SscaledPack32"; + case Format::eA2R10G10B10UintPack32 : return "A2R10G10B10UintPack32"; + case Format::eA2R10G10B10SintPack32 : return "A2R10G10B10SintPack32"; + case Format::eA2B10G10R10UnormPack32 : return "A2B10G10R10UnormPack32"; + case Format::eA2B10G10R10SnormPack32 : return "A2B10G10R10SnormPack32"; + case Format::eA2B10G10R10UscaledPack32 : return "A2B10G10R10UscaledPack32"; + case Format::eA2B10G10R10SscaledPack32 : return "A2B10G10R10SscaledPack32"; + case Format::eA2B10G10R10UintPack32 : return "A2B10G10R10UintPack32"; + case Format::eA2B10G10R10SintPack32 : return "A2B10G10R10SintPack32"; + case Format::eR16Unorm : return "R16Unorm"; + case Format::eR16Snorm : return "R16Snorm"; + case Format::eR16Uscaled : return "R16Uscaled"; + case Format::eR16Sscaled : return "R16Sscaled"; + case Format::eR16Uint : return "R16Uint"; + case Format::eR16Sint : return "R16Sint"; + case Format::eR16Sfloat : return "R16Sfloat"; + case Format::eR16G16Unorm : return "R16G16Unorm"; + case Format::eR16G16Snorm : return "R16G16Snorm"; + case Format::eR16G16Uscaled : return "R16G16Uscaled"; + case Format::eR16G16Sscaled : return "R16G16Sscaled"; + case Format::eR16G16Uint : return "R16G16Uint"; + case Format::eR16G16Sint : return "R16G16Sint"; + case Format::eR16G16Sfloat : return "R16G16Sfloat"; + case Format::eR16G16B16Unorm : return "R16G16B16Unorm"; + case Format::eR16G16B16Snorm : return "R16G16B16Snorm"; + case Format::eR16G16B16Uscaled : return "R16G16B16Uscaled"; + case Format::eR16G16B16Sscaled : return "R16G16B16Sscaled"; + case Format::eR16G16B16Uint : return "R16G16B16Uint"; + case Format::eR16G16B16Sint : return "R16G16B16Sint"; + case Format::eR16G16B16Sfloat : return "R16G16B16Sfloat"; + case Format::eR16G16B16A16Unorm : return "R16G16B16A16Unorm"; + case Format::eR16G16B16A16Snorm : return "R16G16B16A16Snorm"; + case Format::eR16G16B16A16Uscaled : return "R16G16B16A16Uscaled"; + case Format::eR16G16B16A16Sscaled : return "R16G16B16A16Sscaled"; + case Format::eR16G16B16A16Uint : return "R16G16B16A16Uint"; + case Format::eR16G16B16A16Sint : return "R16G16B16A16Sint"; + case Format::eR16G16B16A16Sfloat : return "R16G16B16A16Sfloat"; + case Format::eR32Uint : return "R32Uint"; + case Format::eR32Sint : return "R32Sint"; + case Format::eR32Sfloat : return "R32Sfloat"; + case Format::eR32G32Uint : return "R32G32Uint"; + case Format::eR32G32Sint : return "R32G32Sint"; + case Format::eR32G32Sfloat : return "R32G32Sfloat"; + case Format::eR32G32B32Uint : return "R32G32B32Uint"; + case Format::eR32G32B32Sint : return "R32G32B32Sint"; + case Format::eR32G32B32Sfloat : return "R32G32B32Sfloat"; + case Format::eR32G32B32A32Uint : return "R32G32B32A32Uint"; + case Format::eR32G32B32A32Sint : return "R32G32B32A32Sint"; + case Format::eR32G32B32A32Sfloat : return "R32G32B32A32Sfloat"; + case Format::eR64Uint : return "R64Uint"; + case Format::eR64Sint : return "R64Sint"; + case Format::eR64Sfloat : return "R64Sfloat"; + case Format::eR64G64Uint : return "R64G64Uint"; + case Format::eR64G64Sint : return "R64G64Sint"; + case Format::eR64G64Sfloat : return "R64G64Sfloat"; + case Format::eR64G64B64Uint : return "R64G64B64Uint"; + case Format::eR64G64B64Sint : return "R64G64B64Sint"; + case Format::eR64G64B64Sfloat : return "R64G64B64Sfloat"; + case Format::eR64G64B64A64Uint : return "R64G64B64A64Uint"; + case Format::eR64G64B64A64Sint : return "R64G64B64A64Sint"; + case Format::eR64G64B64A64Sfloat : return "R64G64B64A64Sfloat"; + case Format::eB10G11R11UfloatPack32 : return "B10G11R11UfloatPack32"; + case Format::eE5B9G9R9UfloatPack32 : return "E5B9G9R9UfloatPack32"; + case Format::eD16Unorm : return "D16Unorm"; + case Format::eX8D24UnormPack32 : return "X8D24UnormPack32"; + case Format::eD32Sfloat : return "D32Sfloat"; + case Format::eS8Uint : return "S8Uint"; + case Format::eD16UnormS8Uint : return "D16UnormS8Uint"; + case Format::eD24UnormS8Uint : return "D24UnormS8Uint"; + case Format::eD32SfloatS8Uint : return "D32SfloatS8Uint"; + case Format::eBc1RgbUnormBlock : return "Bc1RgbUnormBlock"; + case Format::eBc1RgbSrgbBlock : return "Bc1RgbSrgbBlock"; + case Format::eBc1RgbaUnormBlock : return "Bc1RgbaUnormBlock"; + case Format::eBc1RgbaSrgbBlock : return "Bc1RgbaSrgbBlock"; + case Format::eBc2UnormBlock : return "Bc2UnormBlock"; + case Format::eBc2SrgbBlock : return "Bc2SrgbBlock"; + case Format::eBc3UnormBlock : return "Bc3UnormBlock"; + case Format::eBc3SrgbBlock : return "Bc3SrgbBlock"; + case Format::eBc4UnormBlock : return "Bc4UnormBlock"; + case Format::eBc4SnormBlock : return "Bc4SnormBlock"; + case Format::eBc5UnormBlock : return "Bc5UnormBlock"; + case Format::eBc5SnormBlock : return "Bc5SnormBlock"; + case Format::eBc6HUfloatBlock : return "Bc6HUfloatBlock"; + case Format::eBc6HSfloatBlock : return "Bc6HSfloatBlock"; + case Format::eBc7UnormBlock : return "Bc7UnormBlock"; + case Format::eBc7SrgbBlock : return "Bc7SrgbBlock"; + case Format::eEtc2R8G8B8UnormBlock : return "Etc2R8G8B8UnormBlock"; + case Format::eEtc2R8G8B8SrgbBlock : return "Etc2R8G8B8SrgbBlock"; + case Format::eEtc2R8G8B8A1UnormBlock : return "Etc2R8G8B8A1UnormBlock"; + case Format::eEtc2R8G8B8A1SrgbBlock : return "Etc2R8G8B8A1SrgbBlock"; + case Format::eEtc2R8G8B8A8UnormBlock : return "Etc2R8G8B8A8UnormBlock"; + case Format::eEtc2R8G8B8A8SrgbBlock : return "Etc2R8G8B8A8SrgbBlock"; + case Format::eEacR11UnormBlock : return "EacR11UnormBlock"; + case Format::eEacR11SnormBlock : return "EacR11SnormBlock"; + case Format::eEacR11G11UnormBlock : return "EacR11G11UnormBlock"; + case Format::eEacR11G11SnormBlock : return "EacR11G11SnormBlock"; + case Format::eAstc4x4UnormBlock : return "Astc4x4UnormBlock"; + case Format::eAstc4x4SrgbBlock : return "Astc4x4SrgbBlock"; + case Format::eAstc5x4UnormBlock : return "Astc5x4UnormBlock"; + case Format::eAstc5x4SrgbBlock : return "Astc5x4SrgbBlock"; + case Format::eAstc5x5UnormBlock : return "Astc5x5UnormBlock"; + case Format::eAstc5x5SrgbBlock : return "Astc5x5SrgbBlock"; + case Format::eAstc6x5UnormBlock : return "Astc6x5UnormBlock"; + case Format::eAstc6x5SrgbBlock : return "Astc6x5SrgbBlock"; + case Format::eAstc6x6UnormBlock : return "Astc6x6UnormBlock"; + case Format::eAstc6x6SrgbBlock : return "Astc6x6SrgbBlock"; + case Format::eAstc8x5UnormBlock : return "Astc8x5UnormBlock"; + case Format::eAstc8x5SrgbBlock : return "Astc8x5SrgbBlock"; + case Format::eAstc8x6UnormBlock : return "Astc8x6UnormBlock"; + case Format::eAstc8x6SrgbBlock : return "Astc8x6SrgbBlock"; + case Format::eAstc8x8UnormBlock : return "Astc8x8UnormBlock"; + case Format::eAstc8x8SrgbBlock : return "Astc8x8SrgbBlock"; + case Format::eAstc10x5UnormBlock : return "Astc10x5UnormBlock"; + case Format::eAstc10x5SrgbBlock : return "Astc10x5SrgbBlock"; + case Format::eAstc10x6UnormBlock : return "Astc10x6UnormBlock"; + case Format::eAstc10x6SrgbBlock : return "Astc10x6SrgbBlock"; + case Format::eAstc10x8UnormBlock : return "Astc10x8UnormBlock"; + case Format::eAstc10x8SrgbBlock : return "Astc10x8SrgbBlock"; + case Format::eAstc10x10UnormBlock : return "Astc10x10UnormBlock"; + case Format::eAstc10x10SrgbBlock : return "Astc10x10SrgbBlock"; + case Format::eAstc12x10UnormBlock : return "Astc12x10UnormBlock"; + case Format::eAstc12x10SrgbBlock : return "Astc12x10SrgbBlock"; + case Format::eAstc12x12UnormBlock : return "Astc12x12UnormBlock"; + case Format::eAstc12x12SrgbBlock : return "Astc12x12SrgbBlock"; + case Format::eG8B8G8R8422Unorm : return "G8B8G8R8422Unorm"; + case Format::eB8G8R8G8422Unorm : return "B8G8R8G8422Unorm"; + case Format::eG8B8R83Plane420Unorm : return "G8B8R83Plane420Unorm"; + case Format::eG8B8R82Plane420Unorm : return "G8B8R82Plane420Unorm"; + case Format::eG8B8R83Plane422Unorm : return "G8B8R83Plane422Unorm"; + case Format::eG8B8R82Plane422Unorm : return "G8B8R82Plane422Unorm"; + case Format::eG8B8R83Plane444Unorm : return "G8B8R83Plane444Unorm"; + case Format::eR10X6UnormPack16 : return "R10X6UnormPack16"; + case Format::eR10X6G10X6Unorm2Pack16 : return "R10X6G10X6Unorm2Pack16"; + case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16 : return "R10X6G10X6B10X6A10X6Unorm4Pack16"; + case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16 : return "G10X6B10X6G10X6R10X6422Unorm4Pack16"; + case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16 : return "B10X6G10X6R10X6G10X6422Unorm4Pack16"; + case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16 : return "G10X6B10X6R10X63Plane420Unorm3Pack16"; + case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16 : return "G10X6B10X6R10X62Plane420Unorm3Pack16"; + case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16 : return "G10X6B10X6R10X63Plane422Unorm3Pack16"; + case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16 : return "G10X6B10X6R10X62Plane422Unorm3Pack16"; + case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16 : return "G10X6B10X6R10X63Plane444Unorm3Pack16"; + case Format::eR12X4UnormPack16 : return "R12X4UnormPack16"; + case Format::eR12X4G12X4Unorm2Pack16 : return "R12X4G12X4Unorm2Pack16"; + case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16 : return "R12X4G12X4B12X4A12X4Unorm4Pack16"; + case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16 : return "G12X4B12X4G12X4R12X4422Unorm4Pack16"; + case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16 : return "B12X4G12X4R12X4G12X4422Unorm4Pack16"; + case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16 : return "G12X4B12X4R12X43Plane420Unorm3Pack16"; + case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16 : return "G12X4B12X4R12X42Plane420Unorm3Pack16"; + case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16 : return "G12X4B12X4R12X43Plane422Unorm3Pack16"; + case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16 : return "G12X4B12X4R12X42Plane422Unorm3Pack16"; + case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16 : return "G12X4B12X4R12X43Plane444Unorm3Pack16"; + case Format::eG16B16G16R16422Unorm : return "G16B16G16R16422Unorm"; + case Format::eB16G16R16G16422Unorm : return "B16G16R16G16422Unorm"; + case Format::eG16B16R163Plane420Unorm : return "G16B16R163Plane420Unorm"; + case Format::eG16B16R162Plane420Unorm : return "G16B16R162Plane420Unorm"; + case Format::eG16B16R163Plane422Unorm : return "G16B16R163Plane422Unorm"; + case Format::eG16B16R162Plane422Unorm : return "G16B16R162Plane422Unorm"; + case Format::eG16B16R163Plane444Unorm : return "G16B16R163Plane444Unorm"; + case Format::eG8B8R82Plane444Unorm : return "G8B8R82Plane444Unorm"; + case Format::eG10X6B10X6R10X62Plane444Unorm3Pack16 : return "G10X6B10X6R10X62Plane444Unorm3Pack16"; + case Format::eG12X4B12X4R12X42Plane444Unorm3Pack16 : return "G12X4B12X4R12X42Plane444Unorm3Pack16"; + case Format::eG16B16R162Plane444Unorm : return "G16B16R162Plane444Unorm"; + case Format::eA4R4G4B4UnormPack16 : return "A4R4G4B4UnormPack16"; + case Format::eA4B4G4R4UnormPack16 : return "A4B4G4R4UnormPack16"; + case Format::eAstc4x4SfloatBlock : return "Astc4x4SfloatBlock"; + case Format::eAstc5x4SfloatBlock : return "Astc5x4SfloatBlock"; + case Format::eAstc5x5SfloatBlock : return "Astc5x5SfloatBlock"; + case Format::eAstc6x5SfloatBlock : return "Astc6x5SfloatBlock"; + case Format::eAstc6x6SfloatBlock : return "Astc6x6SfloatBlock"; + case Format::eAstc8x5SfloatBlock : return "Astc8x5SfloatBlock"; + case Format::eAstc8x6SfloatBlock : return "Astc8x6SfloatBlock"; + case Format::eAstc8x8SfloatBlock : return "Astc8x8SfloatBlock"; + case Format::eAstc10x5SfloatBlock : return "Astc10x5SfloatBlock"; + case Format::eAstc10x6SfloatBlock : return "Astc10x6SfloatBlock"; + case Format::eAstc10x8SfloatBlock : return "Astc10x8SfloatBlock"; + case Format::eAstc10x10SfloatBlock : return "Astc10x10SfloatBlock"; + case Format::eAstc12x10SfloatBlock : return "Astc12x10SfloatBlock"; + case Format::eAstc12x12SfloatBlock : return "Astc12x12SfloatBlock"; + case Format::eA1B5G5R5UnormPack16 : return "A1B5G5R5UnormPack16"; + case Format::eA8Unorm : return "A8Unorm"; + case Format::ePvrtc12BppUnormBlockIMG : return "Pvrtc12BppUnormBlockIMG"; + case Format::ePvrtc14BppUnormBlockIMG : return "Pvrtc14BppUnormBlockIMG"; + case Format::ePvrtc22BppUnormBlockIMG : return "Pvrtc22BppUnormBlockIMG"; + case Format::ePvrtc24BppUnormBlockIMG : return "Pvrtc24BppUnormBlockIMG"; + case Format::ePvrtc12BppSrgbBlockIMG : return "Pvrtc12BppSrgbBlockIMG"; + case Format::ePvrtc14BppSrgbBlockIMG : return "Pvrtc14BppSrgbBlockIMG"; + case Format::ePvrtc22BppSrgbBlockIMG : return "Pvrtc22BppSrgbBlockIMG"; + case Format::ePvrtc24BppSrgbBlockIMG : return "Pvrtc24BppSrgbBlockIMG"; + case Format::eAstc3x3x3UnormBlockEXT : return "Astc3x3x3UnormBlockEXT"; + case Format::eAstc3x3x3SrgbBlockEXT : return "Astc3x3x3SrgbBlockEXT"; + case Format::eAstc3x3x3SfloatBlockEXT : return "Astc3x3x3SfloatBlockEXT"; + case Format::eAstc4x3x3UnormBlockEXT : return "Astc4x3x3UnormBlockEXT"; + case Format::eAstc4x3x3SrgbBlockEXT : return "Astc4x3x3SrgbBlockEXT"; + case Format::eAstc4x3x3SfloatBlockEXT : return "Astc4x3x3SfloatBlockEXT"; + case Format::eAstc4x4x3UnormBlockEXT : return "Astc4x4x3UnormBlockEXT"; + case Format::eAstc4x4x3SrgbBlockEXT : return "Astc4x4x3SrgbBlockEXT"; + case Format::eAstc4x4x3SfloatBlockEXT : return "Astc4x4x3SfloatBlockEXT"; + case Format::eAstc4x4x4UnormBlockEXT : return "Astc4x4x4UnormBlockEXT"; + case Format::eAstc4x4x4SrgbBlockEXT : return "Astc4x4x4SrgbBlockEXT"; + case Format::eAstc4x4x4SfloatBlockEXT : return "Astc4x4x4SfloatBlockEXT"; + case Format::eAstc5x4x4UnormBlockEXT : return "Astc5x4x4UnormBlockEXT"; + case Format::eAstc5x4x4SrgbBlockEXT : return "Astc5x4x4SrgbBlockEXT"; + case Format::eAstc5x4x4SfloatBlockEXT : return "Astc5x4x4SfloatBlockEXT"; + case Format::eAstc5x5x4UnormBlockEXT : return "Astc5x5x4UnormBlockEXT"; + case Format::eAstc5x5x4SrgbBlockEXT : return "Astc5x5x4SrgbBlockEXT"; + case Format::eAstc5x5x4SfloatBlockEXT : return "Astc5x5x4SfloatBlockEXT"; + case Format::eAstc5x5x5UnormBlockEXT : return "Astc5x5x5UnormBlockEXT"; + case Format::eAstc5x5x5SrgbBlockEXT : return "Astc5x5x5SrgbBlockEXT"; + case Format::eAstc5x5x5SfloatBlockEXT : return "Astc5x5x5SfloatBlockEXT"; + case Format::eAstc6x5x5UnormBlockEXT : return "Astc6x5x5UnormBlockEXT"; + case Format::eAstc6x5x5SrgbBlockEXT : return "Astc6x5x5SrgbBlockEXT"; + case Format::eAstc6x5x5SfloatBlockEXT : return "Astc6x5x5SfloatBlockEXT"; + case Format::eAstc6x6x5UnormBlockEXT : return "Astc6x6x5UnormBlockEXT"; + case Format::eAstc6x6x5SrgbBlockEXT : return "Astc6x6x5SrgbBlockEXT"; + case Format::eAstc6x6x5SfloatBlockEXT : return "Astc6x6x5SfloatBlockEXT"; + case Format::eAstc6x6x6UnormBlockEXT : return "Astc6x6x6UnormBlockEXT"; + case Format::eAstc6x6x6SrgbBlockEXT : return "Astc6x6x6SrgbBlockEXT"; + case Format::eAstc6x6x6SfloatBlockEXT : return "Astc6x6x6SfloatBlockEXT"; + case Format::eR8BoolARM : return "R8BoolARM"; + case Format::eR16SfloatFpencodingBfloat16ARM : return "R16SfloatFpencodingBfloat16ARM"; + case Format::eR8SfloatFpencodingFloat8E4M3ARM : return "R8SfloatFpencodingFloat8E4M3ARM"; + case Format::eR8SfloatFpencodingFloat8E5M2ARM : return "R8SfloatFpencodingFloat8E5M2ARM"; + case Format::eR16G16Sfixed5NV : return "R16G16Sfixed5NV"; + case Format::eR10X6UintPack16ARM : return "R10X6UintPack16ARM"; + case Format::eR10X6G10X6Uint2Pack16ARM : return "R10X6G10X6Uint2Pack16ARM"; + case Format::eR10X6G10X6B10X6A10X6Uint4Pack16ARM : return "R10X6G10X6B10X6A10X6Uint4Pack16ARM"; + case Format::eR12X4UintPack16ARM : return "R12X4UintPack16ARM"; + case Format::eR12X4G12X4Uint2Pack16ARM : return "R12X4G12X4Uint2Pack16ARM"; + case Format::eR12X4G12X4B12X4A12X4Uint4Pack16ARM : return "R12X4G12X4B12X4A12X4Uint4Pack16ARM"; + case Format::eR14X2UintPack16ARM : return "R14X2UintPack16ARM"; + case Format::eR14X2G14X2Uint2Pack16ARM : return "R14X2G14X2Uint2Pack16ARM"; + case Format::eR14X2G14X2B14X2A14X2Uint4Pack16ARM : return "R14X2G14X2B14X2A14X2Uint4Pack16ARM"; + case Format::eR14X2UnormPack16ARM : return "R14X2UnormPack16ARM"; + case Format::eR14X2G14X2Unorm2Pack16ARM : return "R14X2G14X2Unorm2Pack16ARM"; + case Format::eR14X2G14X2B14X2A14X2Unorm4Pack16ARM : return "R14X2G14X2B14X2A14X2Unorm4Pack16ARM"; + case Format::eG14X2B14X2R14X22Plane420Unorm3Pack16ARM: return "G14X2B14X2R14X22Plane420Unorm3Pack16ARM"; + case Format::eG14X2B14X2R14X22Plane422Unorm3Pack16ARM: return "G14X2B14X2R14X22Plane422Unorm3Pack16ARM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FormatFeatureFlagBits value ) + { + switch ( value ) + { + case FormatFeatureFlagBits::eSampledImage : return "SampledImage"; + case FormatFeatureFlagBits::eStorageImage : return "StorageImage"; + case FormatFeatureFlagBits::eStorageImageAtomic : return "StorageImageAtomic"; + case FormatFeatureFlagBits::eUniformTexelBuffer : return "UniformTexelBuffer"; + case FormatFeatureFlagBits::eStorageTexelBuffer : return "StorageTexelBuffer"; + case FormatFeatureFlagBits::eStorageTexelBufferAtomic : return "StorageTexelBufferAtomic"; + case FormatFeatureFlagBits::eVertexBuffer : return "VertexBuffer"; + case FormatFeatureFlagBits::eColorAttachment : return "ColorAttachment"; + case FormatFeatureFlagBits::eColorAttachmentBlend : return "ColorAttachmentBlend"; + case FormatFeatureFlagBits::eDepthStencilAttachment : return "DepthStencilAttachment"; + case FormatFeatureFlagBits::eBlitSrc : return "BlitSrc"; + case FormatFeatureFlagBits::eBlitDst : return "BlitDst"; + case FormatFeatureFlagBits::eSampledImageFilterLinear : return "SampledImageFilterLinear"; + case FormatFeatureFlagBits::eTransferSrc : return "TransferSrc"; + case FormatFeatureFlagBits::eTransferDst : return "TransferDst"; + case FormatFeatureFlagBits::eMidpointChromaSamples : return "MidpointChromaSamples"; + case FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter : return "SampledImageYcbcrConversionLinearFilter"; + case FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter: return "SampledImageYcbcrConversionSeparateReconstructionFilter"; + case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit: return "SampledImageYcbcrConversionChromaReconstructionExplicit"; + case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable: + return "SampledImageYcbcrConversionChromaReconstructionExplicitForceable"; + case FormatFeatureFlagBits::eDisjoint : return "Disjoint"; + case FormatFeatureFlagBits::eCositedChromaSamples : return "CositedChromaSamples"; + case FormatFeatureFlagBits::eSampledImageFilterMinmax : return "SampledImageFilterMinmax"; + case FormatFeatureFlagBits::eVideoDecodeOutputKHR : return "VideoDecodeOutputKHR"; + case FormatFeatureFlagBits::eVideoDecodeDpbKHR : return "VideoDecodeDpbKHR"; + case FormatFeatureFlagBits::eAccelerationStructureVertexBufferKHR: return "AccelerationStructureVertexBufferKHR"; + case FormatFeatureFlagBits::eSampledImageFilterCubicEXT : return "SampledImageFilterCubicEXT"; + case FormatFeatureFlagBits::eFragmentDensityMapEXT : return "FragmentDensityMapEXT"; + case FormatFeatureFlagBits::eFragmentShadingRateAttachmentKHR : return "FragmentShadingRateAttachmentKHR"; + case FormatFeatureFlagBits::eVideoEncodeInputKHR : return "VideoEncodeInputKHR"; + case FormatFeatureFlagBits::eVideoEncodeDpbKHR : return "VideoEncodeDpbKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageCreateFlagBits value ) + { + switch ( value ) + { + case ImageCreateFlagBits::eSparseBinding : return "SparseBinding"; + case ImageCreateFlagBits::eSparseResidency : return "SparseResidency"; + case ImageCreateFlagBits::eSparseAliased : return "SparseAliased"; + case ImageCreateFlagBits::eMutableFormat : return "MutableFormat"; + case ImageCreateFlagBits::eCubeCompatible : return "CubeCompatible"; + case ImageCreateFlagBits::eAlias : return "Alias"; + case ImageCreateFlagBits::eSplitInstanceBindRegions : return "SplitInstanceBindRegions"; + case ImageCreateFlagBits::e2DArrayCompatible : return "2DArrayCompatible"; + case ImageCreateFlagBits::eBlockTexelViewCompatible : return "BlockTexelViewCompatible"; + case ImageCreateFlagBits::eExtendedUsage : return "ExtendedUsage"; + case ImageCreateFlagBits::eProtected : return "Protected"; + case ImageCreateFlagBits::eDisjoint : return "Disjoint"; + case ImageCreateFlagBits::eCornerSampledNV : return "CornerSampledNV"; + case ImageCreateFlagBits::eDescriptorHeapCaptureReplayEXT : return "DescriptorHeapCaptureReplayEXT"; + case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT : return "SampleLocationsCompatibleDepthEXT"; + case ImageCreateFlagBits::eSubsampledEXT : return "SubsampledEXT"; + case ImageCreateFlagBits::eMultisampledRenderToSingleSampledEXT: return "MultisampledRenderToSingleSampledEXT"; + case ImageCreateFlagBits::e2DViewCompatibleEXT : return "2DViewCompatibleEXT"; + case ImageCreateFlagBits::eVideoProfileIndependentKHR : return "VideoProfileIndependentKHR"; + case ImageCreateFlagBits::eFragmentDensityMapOffsetEXT : return "FragmentDensityMapOffsetEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageTiling value ) + { + switch ( value ) + { + case ImageTiling::eOptimal : return "Optimal"; + case ImageTiling::eLinear : return "Linear"; + case ImageTiling::eDrmFormatModifierEXT: return "DrmFormatModifierEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageType value ) + { + switch ( value ) + { + case ImageType::e1D: return "1D"; + case ImageType::e2D: return "2D"; + case ImageType::e3D: return "3D"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageUsageFlagBits value ) + { + switch ( value ) + { + case ImageUsageFlagBits::eTransferSrc : return "TransferSrc"; + case ImageUsageFlagBits::eTransferDst : return "TransferDst"; + case ImageUsageFlagBits::eSampled : return "Sampled"; + case ImageUsageFlagBits::eStorage : return "Storage"; + case ImageUsageFlagBits::eColorAttachment : return "ColorAttachment"; + case ImageUsageFlagBits::eDepthStencilAttachment : return "DepthStencilAttachment"; + case ImageUsageFlagBits::eTransientAttachment : return "TransientAttachment"; + case ImageUsageFlagBits::eInputAttachment : return "InputAttachment"; + case ImageUsageFlagBits::eHostTransfer : return "HostTransfer"; + case ImageUsageFlagBits::eVideoDecodeDstKHR : return "VideoDecodeDstKHR"; + case ImageUsageFlagBits::eVideoDecodeSrcKHR : return "VideoDecodeSrcKHR"; + case ImageUsageFlagBits::eVideoDecodeDpbKHR : return "VideoDecodeDpbKHR"; + case ImageUsageFlagBits::eFragmentDensityMapEXT : return "FragmentDensityMapEXT"; + case ImageUsageFlagBits::eFragmentShadingRateAttachmentKHR : return "FragmentShadingRateAttachmentKHR"; + case ImageUsageFlagBits::eVideoEncodeDstKHR : return "VideoEncodeDstKHR"; + case ImageUsageFlagBits::eVideoEncodeSrcKHR : return "VideoEncodeSrcKHR"; + case ImageUsageFlagBits::eVideoEncodeDpbKHR : return "VideoEncodeDpbKHR"; + case ImageUsageFlagBits::eAttachmentFeedbackLoopEXT : return "AttachmentFeedbackLoopEXT"; + case ImageUsageFlagBits::eInvocationMaskHUAWEI : return "InvocationMaskHUAWEI"; + case ImageUsageFlagBits::eSampleWeightQCOM : return "SampleWeightQCOM"; + case ImageUsageFlagBits::eSampleBlockMatchQCOM : return "SampleBlockMatchQCOM"; + case ImageUsageFlagBits::eTensorAliasingARM : return "TensorAliasingARM"; + case ImageUsageFlagBits::eTileMemoryQCOM : return "TileMemoryQCOM"; + case ImageUsageFlagBits::eVideoEncodeQuantizationDeltaMapKHR: return "VideoEncodeQuantizationDeltaMapKHR"; + case ImageUsageFlagBits::eVideoEncodeEmphasisMapKHR : return "VideoEncodeEmphasisMapKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( InstanceCreateFlagBits value ) + { + switch ( value ) + { + case InstanceCreateFlagBits::eEnumeratePortabilityKHR: return "EnumeratePortabilityKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( InternalAllocationType value ) + { + switch ( value ) + { + case InternalAllocationType::eExecutable: return "Executable"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MemoryHeapFlagBits value ) + { + switch ( value ) + { + case MemoryHeapFlagBits::eDeviceLocal : return "DeviceLocal"; + case MemoryHeapFlagBits::eMultiInstance : return "MultiInstance"; + case MemoryHeapFlagBits::eTileMemoryQCOM: return "TileMemoryQCOM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MemoryPropertyFlagBits value ) + { + switch ( value ) + { + case MemoryPropertyFlagBits::eDeviceLocal : return "DeviceLocal"; + case MemoryPropertyFlagBits::eHostVisible : return "HostVisible"; + case MemoryPropertyFlagBits::eHostCoherent : return "HostCoherent"; + case MemoryPropertyFlagBits::eHostCached : return "HostCached"; + case MemoryPropertyFlagBits::eLazilyAllocated : return "LazilyAllocated"; + case MemoryPropertyFlagBits::eProtected : return "Protected"; + case MemoryPropertyFlagBits::eDeviceCoherentAMD: return "DeviceCoherentAMD"; + case MemoryPropertyFlagBits::eDeviceUncachedAMD: return "DeviceUncachedAMD"; + case MemoryPropertyFlagBits::eRdmaCapableNV : return "RdmaCapableNV"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PhysicalDeviceType value ) + { + switch ( value ) + { + case PhysicalDeviceType::eOther : return "Other"; + case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu"; + case PhysicalDeviceType::eDiscreteGpu : return "DiscreteGpu"; + case PhysicalDeviceType::eVirtualGpu : return "VirtualGpu"; + case PhysicalDeviceType::eCpu : return "Cpu"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( QueueFlagBits value ) + { + switch ( value ) + { + case QueueFlagBits::eGraphics : return "Graphics"; + case QueueFlagBits::eCompute : return "Compute"; + case QueueFlagBits::eTransfer : return "Transfer"; + case QueueFlagBits::eSparseBinding : return "SparseBinding"; + case QueueFlagBits::eProtected : return "Protected"; + case QueueFlagBits::eVideoDecodeKHR: return "VideoDecodeKHR"; + case QueueFlagBits::eVideoEncodeKHR: return "VideoEncodeKHR"; + case QueueFlagBits::eOpticalFlowNV : return "OpticalFlowNV"; + case QueueFlagBits::eDataGraphARM : return "DataGraphARM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SampleCountFlagBits value ) + { + switch ( value ) + { + case SampleCountFlagBits::e1 : return "1"; + case SampleCountFlagBits::e2 : return "2"; + case SampleCountFlagBits::e4 : return "4"; + case SampleCountFlagBits::e8 : return "8"; + case SampleCountFlagBits::e16: return "16"; + case SampleCountFlagBits::e32: return "32"; + case SampleCountFlagBits::e64: return "64"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SystemAllocationScope value ) + { + switch ( value ) + { + case SystemAllocationScope::eCommand : return "Command"; + case SystemAllocationScope::eObject : return "Object"; + case SystemAllocationScope::eCache : return "Cache"; + case SystemAllocationScope::eDevice : return "Device"; + case SystemAllocationScope::eInstance: return "Instance"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderStageFlagBits value ) + { + switch ( value ) + { + case ShaderStageFlagBits::eVertex : return "Vertex"; + case ShaderStageFlagBits::eTessellationControl : return "TessellationControl"; + case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation"; + case ShaderStageFlagBits::eGeometry : return "Geometry"; + case ShaderStageFlagBits::eFragment : return "Fragment"; + case ShaderStageFlagBits::eCompute : return "Compute"; + case ShaderStageFlagBits::eAllGraphics : return "AllGraphics"; + case ShaderStageFlagBits::eAll : return "All"; + case ShaderStageFlagBits::eRaygenKHR : return "RaygenKHR"; + case ShaderStageFlagBits::eAnyHitKHR : return "AnyHitKHR"; + case ShaderStageFlagBits::eClosestHitKHR : return "ClosestHitKHR"; + case ShaderStageFlagBits::eMissKHR : return "MissKHR"; + case ShaderStageFlagBits::eIntersectionKHR : return "IntersectionKHR"; + case ShaderStageFlagBits::eCallableKHR : return "CallableKHR"; + case ShaderStageFlagBits::eTaskEXT : return "TaskEXT"; + case ShaderStageFlagBits::eMeshEXT : return "MeshEXT"; + case ShaderStageFlagBits::eSubpassShadingHUAWEI : return "SubpassShadingHUAWEI"; + case ShaderStageFlagBits::eClusterCullingHUAWEI : return "ClusterCullingHUAWEI"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceQueueCreateFlagBits value ) + { + switch ( value ) + { + case DeviceQueueCreateFlagBits::eProtected : return "Protected"; + case DeviceQueueCreateFlagBits::eInternallySynchronizedKHR: return "InternallySynchronizedKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineStageFlagBits value ) + { + switch ( value ) + { + case PipelineStageFlagBits::eTopOfPipe : return "TopOfPipe"; + case PipelineStageFlagBits::eDrawIndirect : return "DrawIndirect"; + case PipelineStageFlagBits::eVertexInput : return "VertexInput"; + case PipelineStageFlagBits::eVertexShader : return "VertexShader"; + case PipelineStageFlagBits::eTessellationControlShader : return "TessellationControlShader"; + case PipelineStageFlagBits::eTessellationEvaluationShader : return "TessellationEvaluationShader"; + case PipelineStageFlagBits::eGeometryShader : return "GeometryShader"; + case PipelineStageFlagBits::eFragmentShader : return "FragmentShader"; + case PipelineStageFlagBits::eEarlyFragmentTests : return "EarlyFragmentTests"; + case PipelineStageFlagBits::eLateFragmentTests : return "LateFragmentTests"; + case PipelineStageFlagBits::eColorAttachmentOutput : return "ColorAttachmentOutput"; + case PipelineStageFlagBits::eComputeShader : return "ComputeShader"; + case PipelineStageFlagBits::eTransfer : return "Transfer"; + case PipelineStageFlagBits::eBottomOfPipe : return "BottomOfPipe"; + case PipelineStageFlagBits::eHost : return "Host"; + case PipelineStageFlagBits::eAllGraphics : return "AllGraphics"; + case PipelineStageFlagBits::eAllCommands : return "AllCommands"; + case PipelineStageFlagBits::eNone : return "None"; + case PipelineStageFlagBits::eTransformFeedbackEXT : return "TransformFeedbackEXT"; + case PipelineStageFlagBits::eConditionalRenderingEXT : return "ConditionalRenderingEXT"; + case PipelineStageFlagBits::eAccelerationStructureBuildKHR : return "AccelerationStructureBuildKHR"; + case PipelineStageFlagBits::eRayTracingShaderKHR : return "RayTracingShaderKHR"; + case PipelineStageFlagBits::eFragmentDensityProcessEXT : return "FragmentDensityProcessEXT"; + case PipelineStageFlagBits::eFragmentShadingRateAttachmentKHR: return "FragmentShadingRateAttachmentKHR"; + case PipelineStageFlagBits::eTaskShaderEXT : return "TaskShaderEXT"; + case PipelineStageFlagBits::eMeshShaderEXT : return "MeshShaderEXT"; + case PipelineStageFlagBits::eCommandPreprocessEXT : return "CommandPreprocessEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MemoryMapFlagBits value ) + { + switch ( value ) + { + case MemoryMapFlagBits::ePlacedEXT: return "PlacedEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageAspectFlagBits value ) + { + switch ( value ) + { + case ImageAspectFlagBits::eColor : return "Color"; + case ImageAspectFlagBits::eDepth : return "Depth"; + case ImageAspectFlagBits::eStencil : return "Stencil"; + case ImageAspectFlagBits::eMetadata : return "Metadata"; + case ImageAspectFlagBits::ePlane0 : return "Plane0"; + case ImageAspectFlagBits::ePlane1 : return "Plane1"; + case ImageAspectFlagBits::ePlane2 : return "Plane2"; + case ImageAspectFlagBits::eNone : return "None"; + case ImageAspectFlagBits::eMemoryPlane0EXT: return "MemoryPlane0EXT"; + case ImageAspectFlagBits::eMemoryPlane1EXT: return "MemoryPlane1EXT"; + case ImageAspectFlagBits::eMemoryPlane2EXT: return "MemoryPlane2EXT"; + case ImageAspectFlagBits::eMemoryPlane3EXT: return "MemoryPlane3EXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SparseImageFormatFlagBits value ) + { + switch ( value ) + { + case SparseImageFormatFlagBits::eSingleMiptail : return "SingleMiptail"; + case SparseImageFormatFlagBits::eAlignedMipSize : return "AlignedMipSize"; + case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SparseMemoryBindFlagBits value ) + { + switch ( value ) + { + case SparseMemoryBindFlagBits::eMetadata: return "Metadata"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FenceCreateFlagBits value ) + { + switch ( value ) + { + case FenceCreateFlagBits::eSignaled: return "Signaled"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SemaphoreCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( QueryPoolCreateFlagBits value ) + { + switch ( value ) + { + case QueryPoolCreateFlagBits::eResetKHR: return "ResetKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( QueryPipelineStatisticFlagBits value ) + { + switch ( value ) + { + case QueryPipelineStatisticFlagBits::eInputAssemblyVertices : return "InputAssemblyVertices"; + case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives : return "InputAssemblyPrimitives"; + case QueryPipelineStatisticFlagBits::eVertexShaderInvocations : return "VertexShaderInvocations"; + case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations : return "GeometryShaderInvocations"; + case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives : return "GeometryShaderPrimitives"; + case QueryPipelineStatisticFlagBits::eClippingInvocations : return "ClippingInvocations"; + case QueryPipelineStatisticFlagBits::eClippingPrimitives : return "ClippingPrimitives"; + case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations : return "FragmentShaderInvocations"; + case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches : return "TessellationControlShaderPatches"; + case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations"; + case QueryPipelineStatisticFlagBits::eComputeShaderInvocations : return "ComputeShaderInvocations"; + case QueryPipelineStatisticFlagBits::eTaskShaderInvocationsEXT : return "TaskShaderInvocationsEXT"; + case QueryPipelineStatisticFlagBits::eMeshShaderInvocationsEXT : return "MeshShaderInvocationsEXT"; + case QueryPipelineStatisticFlagBits::eClusterCullingShaderInvocationsHUAWEI : return "ClusterCullingShaderInvocationsHUAWEI"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( QueryResultFlagBits value ) + { + switch ( value ) + { + case QueryResultFlagBits::e64 : return "64"; + case QueryResultFlagBits::eWait : return "Wait"; + case QueryResultFlagBits::eWithAvailability: return "WithAvailability"; + case QueryResultFlagBits::ePartial : return "Partial"; + case QueryResultFlagBits::eWithStatusKHR : return "WithStatusKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( QueryType value ) + { + switch ( value ) + { + case QueryType::eOcclusion : return "Occlusion"; + case QueryType::ePipelineStatistics : return "PipelineStatistics"; + case QueryType::eTimestamp : return "Timestamp"; + case QueryType::eResultStatusOnlyKHR : return "ResultStatusOnlyKHR"; + case QueryType::eTransformFeedbackStreamEXT : return "TransformFeedbackStreamEXT"; + case QueryType::ePerformanceQueryKHR : return "PerformanceQueryKHR"; + case QueryType::eAccelerationStructureCompactedSizeKHR : return "AccelerationStructureCompactedSizeKHR"; + case QueryType::eAccelerationStructureSerializationSizeKHR : return "AccelerationStructureSerializationSizeKHR"; + case QueryType::eAccelerationStructureCompactedSizeNV : return "AccelerationStructureCompactedSizeNV"; + case QueryType::ePerformanceQueryINTEL : return "PerformanceQueryINTEL"; + case QueryType::eVideoEncodeFeedbackKHR : return "VideoEncodeFeedbackKHR"; + case QueryType::eMeshPrimitivesGeneratedEXT : return "MeshPrimitivesGeneratedEXT"; + case QueryType::ePrimitivesGeneratedEXT : return "PrimitivesGeneratedEXT"; + case QueryType::eAccelerationStructureSerializationBottomLevelPointersKHR: return "AccelerationStructureSerializationBottomLevelPointersKHR"; + case QueryType::eAccelerationStructureSizeKHR : return "AccelerationStructureSizeKHR"; + case QueryType::eMicromapSerializationSizeEXT : return "MicromapSerializationSizeEXT"; + case QueryType::eMicromapCompactedSizeEXT : return "MicromapCompactedSizeEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BufferCreateFlagBits value ) + { + switch ( value ) + { + case BufferCreateFlagBits::eSparseBinding : return "SparseBinding"; + case BufferCreateFlagBits::eSparseResidency : return "SparseResidency"; + case BufferCreateFlagBits::eSparseAliased : return "SparseAliased"; + case BufferCreateFlagBits::eProtected : return "Protected"; + case BufferCreateFlagBits::eDeviceAddressCaptureReplay : return "DeviceAddressCaptureReplay"; + case BufferCreateFlagBits::eDescriptorBufferCaptureReplayEXT: return "DescriptorBufferCaptureReplayEXT"; + case BufferCreateFlagBits::eVideoProfileIndependentKHR : return "VideoProfileIndependentKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BufferUsageFlagBits value ) + { + switch ( value ) + { + case BufferUsageFlagBits::eTransferSrc : return "TransferSrc"; + case BufferUsageFlagBits::eTransferDst : return "TransferDst"; + case BufferUsageFlagBits::eUniformTexelBuffer : return "UniformTexelBuffer"; + case BufferUsageFlagBits::eStorageTexelBuffer : return "StorageTexelBuffer"; + case BufferUsageFlagBits::eUniformBuffer : return "UniformBuffer"; + case BufferUsageFlagBits::eStorageBuffer : return "StorageBuffer"; + case BufferUsageFlagBits::eIndexBuffer : return "IndexBuffer"; + case BufferUsageFlagBits::eVertexBuffer : return "VertexBuffer"; + case BufferUsageFlagBits::eIndirectBuffer : return "IndirectBuffer"; + case BufferUsageFlagBits::eShaderDeviceAddress : return "ShaderDeviceAddress"; + case BufferUsageFlagBits::eVideoDecodeSrcKHR : return "VideoDecodeSrcKHR"; + case BufferUsageFlagBits::eVideoDecodeDstKHR : return "VideoDecodeDstKHR"; + case BufferUsageFlagBits::eTransformFeedbackBufferEXT : return "TransformFeedbackBufferEXT"; + case BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT: return "TransformFeedbackCounterBufferEXT"; + case BufferUsageFlagBits::eConditionalRenderingEXT : return "ConditionalRenderingEXT"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case BufferUsageFlagBits::eExecutionGraphScratchAMDX: return "ExecutionGraphScratchAMDX"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case BufferUsageFlagBits::eDescriptorHeapEXT : return "DescriptorHeapEXT"; + case BufferUsageFlagBits::eAccelerationStructureBuildInputReadOnlyKHR: return "AccelerationStructureBuildInputReadOnlyKHR"; + case BufferUsageFlagBits::eAccelerationStructureStorageKHR : return "AccelerationStructureStorageKHR"; + case BufferUsageFlagBits::eShaderBindingTableKHR : return "ShaderBindingTableKHR"; + case BufferUsageFlagBits::eVideoEncodeDstKHR : return "VideoEncodeDstKHR"; + case BufferUsageFlagBits::eVideoEncodeSrcKHR : return "VideoEncodeSrcKHR"; + case BufferUsageFlagBits::eSamplerDescriptorBufferEXT : return "SamplerDescriptorBufferEXT"; + case BufferUsageFlagBits::eResourceDescriptorBufferEXT : return "ResourceDescriptorBufferEXT"; + case BufferUsageFlagBits::ePushDescriptorsDescriptorBufferEXT : return "PushDescriptorsDescriptorBufferEXT"; + case BufferUsageFlagBits::eMicromapBuildInputReadOnlyEXT : return "MicromapBuildInputReadOnlyEXT"; + case BufferUsageFlagBits::eMicromapStorageEXT : return "MicromapStorageEXT"; + case BufferUsageFlagBits::eTileMemoryQCOM : return "TileMemoryQCOM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SharingMode value ) + { + switch ( value ) + { + case SharingMode::eExclusive : return "Exclusive"; + case SharingMode::eConcurrent: return "Concurrent"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageLayout value ) + { + switch ( value ) + { + case ImageLayout::eUndefined : return "Undefined"; + case ImageLayout::eGeneral : return "General"; + case ImageLayout::eColorAttachmentOptimal : return "ColorAttachmentOptimal"; + case ImageLayout::eDepthStencilAttachmentOptimal : return "DepthStencilAttachmentOptimal"; + case ImageLayout::eDepthStencilReadOnlyOptimal : return "DepthStencilReadOnlyOptimal"; + case ImageLayout::eShaderReadOnlyOptimal : return "ShaderReadOnlyOptimal"; + case ImageLayout::eTransferSrcOptimal : return "TransferSrcOptimal"; + case ImageLayout::eTransferDstOptimal : return "TransferDstOptimal"; + case ImageLayout::ePreinitialized : return "Preinitialized"; + case ImageLayout::eDepthReadOnlyStencilAttachmentOptimal : return "DepthReadOnlyStencilAttachmentOptimal"; + case ImageLayout::eDepthAttachmentStencilReadOnlyOptimal : return "DepthAttachmentStencilReadOnlyOptimal"; + case ImageLayout::eDepthAttachmentOptimal : return "DepthAttachmentOptimal"; + case ImageLayout::eDepthReadOnlyOptimal : return "DepthReadOnlyOptimal"; + case ImageLayout::eStencilAttachmentOptimal : return "StencilAttachmentOptimal"; + case ImageLayout::eStencilReadOnlyOptimal : return "StencilReadOnlyOptimal"; + case ImageLayout::eReadOnlyOptimal : return "ReadOnlyOptimal"; + case ImageLayout::eAttachmentOptimal : return "AttachmentOptimal"; + case ImageLayout::eRenderingLocalRead : return "RenderingLocalRead"; + case ImageLayout::ePresentSrcKHR : return "PresentSrcKHR"; + case ImageLayout::eVideoDecodeDstKHR : return "VideoDecodeDstKHR"; + case ImageLayout::eVideoDecodeSrcKHR : return "VideoDecodeSrcKHR"; + case ImageLayout::eVideoDecodeDpbKHR : return "VideoDecodeDpbKHR"; + case ImageLayout::eSharedPresentKHR : return "SharedPresentKHR"; + case ImageLayout::eFragmentDensityMapOptimalEXT : return "FragmentDensityMapOptimalEXT"; + case ImageLayout::eFragmentShadingRateAttachmentOptimalKHR: return "FragmentShadingRateAttachmentOptimalKHR"; + case ImageLayout::eVideoEncodeDstKHR : return "VideoEncodeDstKHR"; + case ImageLayout::eVideoEncodeSrcKHR : return "VideoEncodeSrcKHR"; + case ImageLayout::eVideoEncodeDpbKHR : return "VideoEncodeDpbKHR"; + case ImageLayout::eAttachmentFeedbackLoopOptimalEXT : return "AttachmentFeedbackLoopOptimalEXT"; + case ImageLayout::eTensorAliasingARM : return "TensorAliasingARM"; + case ImageLayout::eVideoEncodeQuantizationMapKHR : return "VideoEncodeQuantizationMapKHR"; + case ImageLayout::eZeroInitializedEXT : return "ZeroInitializedEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ComponentSwizzle value ) + { + switch ( value ) + { + case ComponentSwizzle::eIdentity: return "Identity"; + case ComponentSwizzle::eZero : return "Zero"; + case ComponentSwizzle::eOne : return "One"; + case ComponentSwizzle::eR : return "R"; + case ComponentSwizzle::eG : return "G"; + case ComponentSwizzle::eB : return "B"; + case ComponentSwizzle::eA : return "A"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageViewCreateFlagBits value ) + { + switch ( value ) + { + case ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT : return "FragmentDensityMapDynamicEXT"; + case ImageViewCreateFlagBits::eDescriptorBufferCaptureReplayEXT: return "DescriptorBufferCaptureReplayEXT"; + case ImageViewCreateFlagBits::eFragmentDensityMapDeferredEXT : return "FragmentDensityMapDeferredEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageViewType value ) + { + switch ( value ) + { + case ImageViewType::e1D : return "1D"; + case ImageViewType::e2D : return "2D"; + case ImageViewType::e3D : return "3D"; + case ImageViewType::eCube : return "Cube"; + case ImageViewType::e1DArray : return "1DArray"; + case ImageViewType::e2DArray : return "2DArray"; + case ImageViewType::eCubeArray: return "CubeArray"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccessFlagBits value ) + { + switch ( value ) + { + case AccessFlagBits::eIndirectCommandRead : return "IndirectCommandRead"; + case AccessFlagBits::eIndexRead : return "IndexRead"; + case AccessFlagBits::eVertexAttributeRead : return "VertexAttributeRead"; + case AccessFlagBits::eUniformRead : return "UniformRead"; + case AccessFlagBits::eInputAttachmentRead : return "InputAttachmentRead"; + case AccessFlagBits::eShaderRead : return "ShaderRead"; + case AccessFlagBits::eShaderWrite : return "ShaderWrite"; + case AccessFlagBits::eColorAttachmentRead : return "ColorAttachmentRead"; + case AccessFlagBits::eColorAttachmentWrite : return "ColorAttachmentWrite"; + case AccessFlagBits::eDepthStencilAttachmentRead : return "DepthStencilAttachmentRead"; + case AccessFlagBits::eDepthStencilAttachmentWrite : return "DepthStencilAttachmentWrite"; + case AccessFlagBits::eTransferRead : return "TransferRead"; + case AccessFlagBits::eTransferWrite : return "TransferWrite"; + case AccessFlagBits::eHostRead : return "HostRead"; + case AccessFlagBits::eHostWrite : return "HostWrite"; + case AccessFlagBits::eMemoryRead : return "MemoryRead"; + case AccessFlagBits::eMemoryWrite : return "MemoryWrite"; + case AccessFlagBits::eNone : return "None"; + case AccessFlagBits::eTransformFeedbackWriteEXT : return "TransformFeedbackWriteEXT"; + case AccessFlagBits::eTransformFeedbackCounterReadEXT : return "TransformFeedbackCounterReadEXT"; + case AccessFlagBits::eTransformFeedbackCounterWriteEXT : return "TransformFeedbackCounterWriteEXT"; + case AccessFlagBits::eConditionalRenderingReadEXT : return "ConditionalRenderingReadEXT"; + case AccessFlagBits::eColorAttachmentReadNoncoherentEXT : return "ColorAttachmentReadNoncoherentEXT"; + case AccessFlagBits::eAccelerationStructureReadKHR : return "AccelerationStructureReadKHR"; + case AccessFlagBits::eAccelerationStructureWriteKHR : return "AccelerationStructureWriteKHR"; + case AccessFlagBits::eFragmentDensityMapReadEXT : return "FragmentDensityMapReadEXT"; + case AccessFlagBits::eFragmentShadingRateAttachmentReadKHR: return "FragmentShadingRateAttachmentReadKHR"; + case AccessFlagBits::eCommandPreprocessReadEXT : return "CommandPreprocessReadEXT"; + case AccessFlagBits::eCommandPreprocessWriteEXT : return "CommandPreprocessWriteEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DependencyFlagBits value ) + { + switch ( value ) + { + case DependencyFlagBits::eByRegion : return "ByRegion"; + case DependencyFlagBits::eDeviceGroup : return "DeviceGroup"; + case DependencyFlagBits::eViewLocal : return "ViewLocal"; + case DependencyFlagBits::eFeedbackLoopEXT : return "FeedbackLoopEXT"; + case DependencyFlagBits::eQueueFamilyOwnershipTransferUseAllStagesKHR: return "QueueFamilyOwnershipTransferUseAllStagesKHR"; + case DependencyFlagBits::eAsymmetricEventKHR : return "AsymmetricEventKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CommandPoolCreateFlagBits value ) + { + switch ( value ) + { + case CommandPoolCreateFlagBits::eTransient : return "Transient"; + case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer"; + case CommandPoolCreateFlagBits::eProtected : return "Protected"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CommandPoolResetFlagBits value ) + { + switch ( value ) + { + case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CommandBufferLevel value ) + { + switch ( value ) + { + case CommandBufferLevel::ePrimary : return "Primary"; + case CommandBufferLevel::eSecondary: return "Secondary"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CommandBufferResetFlagBits value ) + { + switch ( value ) + { + case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CommandBufferUsageFlagBits value ) + { + switch ( value ) + { + case CommandBufferUsageFlagBits::eOneTimeSubmit : return "OneTimeSubmit"; + case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue"; + case CommandBufferUsageFlagBits::eSimultaneousUse : return "SimultaneousUse"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( QueryControlFlagBits value ) + { + switch ( value ) + { + case QueryControlFlagBits::ePrecise: return "Precise"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( IndexType value ) + { + switch ( value ) + { + case IndexType::eUint16 : return "Uint16"; + case IndexType::eUint32 : return "Uint32"; + case IndexType::eUint8 : return "Uint8"; + case IndexType::eNoneKHR: return "NoneKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCacheHeaderVersion value ) + { + switch ( value ) + { + case PipelineCacheHeaderVersion::eOne : return "One"; + case PipelineCacheHeaderVersion::eDataGraphQCOM: return "DataGraphQCOM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( EventCreateFlagBits value ) + { + switch ( value ) + { + case EventCreateFlagBits::eDeviceOnly: return "DeviceOnly"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BufferViewCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderModuleCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCacheCreateFlagBits value ) + { + switch ( value ) + { + case PipelineCacheCreateFlagBits::eExternallySynchronized : return "ExternallySynchronized"; + case PipelineCacheCreateFlagBits::eInternallySynchronizedMergeKHR: return "InternallySynchronizedMergeKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCreateFlagBits value ) + { + switch ( value ) + { + case PipelineCreateFlagBits::eDisableOptimization : return "DisableOptimization"; + case PipelineCreateFlagBits::eAllowDerivatives : return "AllowDerivatives"; + case PipelineCreateFlagBits::eDerivative : return "Derivative"; + case PipelineCreateFlagBits::eDispatchBase : return "DispatchBase"; + case PipelineCreateFlagBits::eViewIndexFromDeviceIndex : return "ViewIndexFromDeviceIndex"; + case PipelineCreateFlagBits::eFailOnPipelineCompileRequired : return "FailOnPipelineCompileRequired"; + case PipelineCreateFlagBits::eEarlyReturnOnFailure : return "EarlyReturnOnFailure"; + case PipelineCreateFlagBits::eNoProtectedAccess : return "NoProtectedAccess"; + case PipelineCreateFlagBits::eProtectedAccessOnly : return "ProtectedAccessOnly"; + case PipelineCreateFlagBits::eRayTracingNoNullAnyHitShadersKHR : return "RayTracingNoNullAnyHitShadersKHR"; + case PipelineCreateFlagBits::eRayTracingNoNullClosestHitShadersKHR : return "RayTracingNoNullClosestHitShadersKHR"; + case PipelineCreateFlagBits::eRayTracingNoNullMissShadersKHR : return "RayTracingNoNullMissShadersKHR"; + case PipelineCreateFlagBits::eRayTracingNoNullIntersectionShadersKHR : return "RayTracingNoNullIntersectionShadersKHR"; + case PipelineCreateFlagBits::eRayTracingSkipTrianglesKHR : return "RayTracingSkipTrianglesKHR"; + case PipelineCreateFlagBits::eRayTracingSkipAabbsKHR : return "RayTracingSkipAabbsKHR"; + case PipelineCreateFlagBits::eRayTracingShaderGroupHandleCaptureReplayKHR: return "RayTracingShaderGroupHandleCaptureReplayKHR"; + case PipelineCreateFlagBits::eDeferCompileNV : return "DeferCompileNV"; + case PipelineCreateFlagBits::eRenderingFragmentDensityMapAttachmentEXT : return "RenderingFragmentDensityMapAttachmentEXT"; + case PipelineCreateFlagBits::eRenderingFragmentShadingRateAttachmentKHR : return "RenderingFragmentShadingRateAttachmentKHR"; + case PipelineCreateFlagBits::eCaptureStatisticsKHR : return "CaptureStatisticsKHR"; + case PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR : return "CaptureInternalRepresentationsKHR"; + case PipelineCreateFlagBits::eIndirectBindableNV : return "IndirectBindableNV"; + case PipelineCreateFlagBits::eLibraryKHR : return "LibraryKHR"; + case PipelineCreateFlagBits::eDescriptorBufferEXT : return "DescriptorBufferEXT"; + case PipelineCreateFlagBits::eRetainLinkTimeOptimizationInfoEXT : return "RetainLinkTimeOptimizationInfoEXT"; + case PipelineCreateFlagBits::eLinkTimeOptimizationEXT : return "LinkTimeOptimizationEXT"; + case PipelineCreateFlagBits::eRayTracingAllowMotionNV : return "RayTracingAllowMotionNV"; + case PipelineCreateFlagBits::eColorAttachmentFeedbackLoopEXT : return "ColorAttachmentFeedbackLoopEXT"; + case PipelineCreateFlagBits::eDepthStencilAttachmentFeedbackLoopEXT : return "DepthStencilAttachmentFeedbackLoopEXT"; + case PipelineCreateFlagBits::eRayTracingOpacityMicromapEXT : return "RayTracingOpacityMicromapEXT"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case PipelineCreateFlagBits::eRayTracingDisplacementMicromapNV: return "RayTracingDisplacementMicromapNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + default: return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineLayoutCreateFlagBits value ) + { + switch ( value ) + { + case PipelineLayoutCreateFlagBits::eIndependentSetsEXT: return "IndependentSetsEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineShaderStageCreateFlagBits value ) + { + switch ( value ) + { + case PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSize: return "AllowVaryingSubgroupSize"; + case PipelineShaderStageCreateFlagBits::eRequireFullSubgroups : return "RequireFullSubgroups"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BorderColor value ) + { + switch ( value ) + { + case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack"; + case BorderColor::eIntTransparentBlack : return "IntTransparentBlack"; + case BorderColor::eFloatOpaqueBlack : return "FloatOpaqueBlack"; + case BorderColor::eIntOpaqueBlack : return "IntOpaqueBlack"; + case BorderColor::eFloatOpaqueWhite : return "FloatOpaqueWhite"; + case BorderColor::eIntOpaqueWhite : return "IntOpaqueWhite"; + case BorderColor::eFloatCustomEXT : return "FloatCustomEXT"; + case BorderColor::eIntCustomEXT : return "IntCustomEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( Filter value ) + { + switch ( value ) + { + case Filter::eNearest : return "Nearest"; + case Filter::eLinear : return "Linear"; + case Filter::eCubicEXT: return "CubicEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SamplerAddressMode value ) + { + switch ( value ) + { + case SamplerAddressMode::eRepeat : return "Repeat"; + case SamplerAddressMode::eMirroredRepeat : return "MirroredRepeat"; + case SamplerAddressMode::eClampToEdge : return "ClampToEdge"; + case SamplerAddressMode::eClampToBorder : return "ClampToBorder"; + case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SamplerCreateFlagBits value ) + { + switch ( value ) + { + case SamplerCreateFlagBits::eSubsampledEXT : return "SubsampledEXT"; + case SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT: return "SubsampledCoarseReconstructionEXT"; + case SamplerCreateFlagBits::eDescriptorBufferCaptureReplayEXT : return "DescriptorBufferCaptureReplayEXT"; + case SamplerCreateFlagBits::eNonSeamlessCubeMapEXT : return "NonSeamlessCubeMapEXT"; + case SamplerCreateFlagBits::eImageProcessingQCOM : return "ImageProcessingQCOM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CompareOp value ) + { + switch ( value ) + { + case CompareOp::eNever : return "Never"; + case CompareOp::eLess : return "Less"; + case CompareOp::eEqual : return "Equal"; + case CompareOp::eLessOrEqual : return "LessOrEqual"; + case CompareOp::eGreater : return "Greater"; + case CompareOp::eNotEqual : return "NotEqual"; + case CompareOp::eGreaterOrEqual: return "GreaterOrEqual"; + case CompareOp::eAlways : return "Always"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SamplerMipmapMode value ) + { + switch ( value ) + { + case SamplerMipmapMode::eNearest: return "Nearest"; + case SamplerMipmapMode::eLinear : return "Linear"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DescriptorPoolCreateFlagBits value ) + { + switch ( value ) + { + case DescriptorPoolCreateFlagBits::eFreeDescriptorSet : return "FreeDescriptorSet"; + case DescriptorPoolCreateFlagBits::eUpdateAfterBind : return "UpdateAfterBind"; + case DescriptorPoolCreateFlagBits::eHostOnlyEXT : return "HostOnlyEXT"; + case DescriptorPoolCreateFlagBits::eAllowOverallocationSetsNV : return "AllowOverallocationSetsNV"; + case DescriptorPoolCreateFlagBits::eAllowOverallocationPoolsNV: return "AllowOverallocationPoolsNV"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DescriptorSetLayoutCreateFlagBits value ) + { + switch ( value ) + { + case DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPool : return "UpdateAfterBindPool"; + case DescriptorSetLayoutCreateFlagBits::ePushDescriptor : return "PushDescriptor"; + case DescriptorSetLayoutCreateFlagBits::eDescriptorBufferEXT : return "DescriptorBufferEXT"; + case DescriptorSetLayoutCreateFlagBits::eEmbeddedImmutableSamplersEXT: return "EmbeddedImmutableSamplersEXT"; + case DescriptorSetLayoutCreateFlagBits::eIndirectBindableNV : return "IndirectBindableNV"; + case DescriptorSetLayoutCreateFlagBits::eHostOnlyPoolEXT : return "HostOnlyPoolEXT"; + case DescriptorSetLayoutCreateFlagBits::ePerStageNV : return "PerStageNV"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DescriptorType value ) + { + switch ( value ) + { + case DescriptorType::eSampler : return "Sampler"; + case DescriptorType::eCombinedImageSampler : return "CombinedImageSampler"; + case DescriptorType::eSampledImage : return "SampledImage"; + case DescriptorType::eStorageImage : return "StorageImage"; + case DescriptorType::eUniformTexelBuffer : return "UniformTexelBuffer"; + case DescriptorType::eStorageTexelBuffer : return "StorageTexelBuffer"; + case DescriptorType::eUniformBuffer : return "UniformBuffer"; + case DescriptorType::eStorageBuffer : return "StorageBuffer"; + case DescriptorType::eUniformBufferDynamic : return "UniformBufferDynamic"; + case DescriptorType::eStorageBufferDynamic : return "StorageBufferDynamic"; + case DescriptorType::eInputAttachment : return "InputAttachment"; + case DescriptorType::eInlineUniformBlock : return "InlineUniformBlock"; + case DescriptorType::eAccelerationStructureKHR : return "AccelerationStructureKHR"; + case DescriptorType::eAccelerationStructureNV : return "AccelerationStructureNV"; + case DescriptorType::eSampleWeightImageQCOM : return "SampleWeightImageQCOM"; + case DescriptorType::eBlockMatchImageQCOM : return "BlockMatchImageQCOM"; + case DescriptorType::eTensorARM : return "TensorARM"; + case DescriptorType::eMutableEXT : return "MutableEXT"; + case DescriptorType::ePartitionedAccelerationStructureNV: return "PartitionedAccelerationStructureNV"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DescriptorPoolResetFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineBindPoint value ) + { + switch ( value ) + { + case PipelineBindPoint::eGraphics: return "Graphics"; + case PipelineBindPoint::eCompute : return "Compute"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case PipelineBindPoint::eExecutionGraphAMDX: return "ExecutionGraphAMDX"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case PipelineBindPoint::eRayTracingKHR : return "RayTracingKHR"; + case PipelineBindPoint::eSubpassShadingHUAWEI: return "SubpassShadingHUAWEI"; + case PipelineBindPoint::eDataGraphARM : return "DataGraphARM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BlendFactor value ) + { + switch ( value ) + { + case BlendFactor::eZero : return "Zero"; + case BlendFactor::eOne : return "One"; + case BlendFactor::eSrcColor : return "SrcColor"; + case BlendFactor::eOneMinusSrcColor : return "OneMinusSrcColor"; + case BlendFactor::eDstColor : return "DstColor"; + case BlendFactor::eOneMinusDstColor : return "OneMinusDstColor"; + case BlendFactor::eSrcAlpha : return "SrcAlpha"; + case BlendFactor::eOneMinusSrcAlpha : return "OneMinusSrcAlpha"; + case BlendFactor::eDstAlpha : return "DstAlpha"; + case BlendFactor::eOneMinusDstAlpha : return "OneMinusDstAlpha"; + case BlendFactor::eConstantColor : return "ConstantColor"; + case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor"; + case BlendFactor::eConstantAlpha : return "ConstantAlpha"; + case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha"; + case BlendFactor::eSrcAlphaSaturate : return "SrcAlphaSaturate"; + case BlendFactor::eSrc1Color : return "Src1Color"; + case BlendFactor::eOneMinusSrc1Color : return "OneMinusSrc1Color"; + case BlendFactor::eSrc1Alpha : return "Src1Alpha"; + case BlendFactor::eOneMinusSrc1Alpha : return "OneMinusSrc1Alpha"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BlendOp value ) + { + switch ( value ) + { + case BlendOp::eAdd : return "Add"; + case BlendOp::eSubtract : return "Subtract"; + case BlendOp::eReverseSubtract : return "ReverseSubtract"; + case BlendOp::eMin : return "Min"; + case BlendOp::eMax : return "Max"; + case BlendOp::eZeroEXT : return "ZeroEXT"; + case BlendOp::eSrcEXT : return "SrcEXT"; + case BlendOp::eDstEXT : return "DstEXT"; + case BlendOp::eSrcOverEXT : return "SrcOverEXT"; + case BlendOp::eDstOverEXT : return "DstOverEXT"; + case BlendOp::eSrcInEXT : return "SrcInEXT"; + case BlendOp::eDstInEXT : return "DstInEXT"; + case BlendOp::eSrcOutEXT : return "SrcOutEXT"; + case BlendOp::eDstOutEXT : return "DstOutEXT"; + case BlendOp::eSrcAtopEXT : return "SrcAtopEXT"; + case BlendOp::eDstAtopEXT : return "DstAtopEXT"; + case BlendOp::eXorEXT : return "XorEXT"; + case BlendOp::eMultiplyEXT : return "MultiplyEXT"; + case BlendOp::eScreenEXT : return "ScreenEXT"; + case BlendOp::eOverlayEXT : return "OverlayEXT"; + case BlendOp::eDarkenEXT : return "DarkenEXT"; + case BlendOp::eLightenEXT : return "LightenEXT"; + case BlendOp::eColordodgeEXT : return "ColordodgeEXT"; + case BlendOp::eColorburnEXT : return "ColorburnEXT"; + case BlendOp::eHardlightEXT : return "HardlightEXT"; + case BlendOp::eSoftlightEXT : return "SoftlightEXT"; + case BlendOp::eDifferenceEXT : return "DifferenceEXT"; + case BlendOp::eExclusionEXT : return "ExclusionEXT"; + case BlendOp::eInvertEXT : return "InvertEXT"; + case BlendOp::eInvertRgbEXT : return "InvertRgbEXT"; + case BlendOp::eLineardodgeEXT : return "LineardodgeEXT"; + case BlendOp::eLinearburnEXT : return "LinearburnEXT"; + case BlendOp::eVividlightEXT : return "VividlightEXT"; + case BlendOp::eLinearlightEXT : return "LinearlightEXT"; + case BlendOp::ePinlightEXT : return "PinlightEXT"; + case BlendOp::eHardmixEXT : return "HardmixEXT"; + case BlendOp::eHslHueEXT : return "HslHueEXT"; + case BlendOp::eHslSaturationEXT : return "HslSaturationEXT"; + case BlendOp::eHslColorEXT : return "HslColorEXT"; + case BlendOp::eHslLuminosityEXT : return "HslLuminosityEXT"; + case BlendOp::ePlusEXT : return "PlusEXT"; + case BlendOp::ePlusClampedEXT : return "PlusClampedEXT"; + case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT"; + case BlendOp::ePlusDarkerEXT : return "PlusDarkerEXT"; + case BlendOp::eMinusEXT : return "MinusEXT"; + case BlendOp::eMinusClampedEXT : return "MinusClampedEXT"; + case BlendOp::eContrastEXT : return "ContrastEXT"; + case BlendOp::eInvertOvgEXT : return "InvertOvgEXT"; + case BlendOp::eRedEXT : return "RedEXT"; + case BlendOp::eGreenEXT : return "GreenEXT"; + case BlendOp::eBlueEXT : return "BlueEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ColorComponentFlagBits value ) + { + switch ( value ) + { + case ColorComponentFlagBits::eR: return "R"; + case ColorComponentFlagBits::eG: return "G"; + case ColorComponentFlagBits::eB: return "B"; + case ColorComponentFlagBits::eA: return "A"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CullModeFlagBits value ) + { + switch ( value ) + { + case CullModeFlagBits::eNone : return "None"; + case CullModeFlagBits::eFront : return "Front"; + case CullModeFlagBits::eBack : return "Back"; + case CullModeFlagBits::eFrontAndBack: return "FrontAndBack"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DynamicState value ) + { + switch ( value ) + { + case DynamicState::eViewport : return "Viewport"; + case DynamicState::eScissor : return "Scissor"; + case DynamicState::eLineWidth : return "LineWidth"; + case DynamicState::eDepthBias : return "DepthBias"; + case DynamicState::eBlendConstants : return "BlendConstants"; + case DynamicState::eDepthBounds : return "DepthBounds"; + case DynamicState::eStencilCompareMask : return "StencilCompareMask"; + case DynamicState::eStencilWriteMask : return "StencilWriteMask"; + case DynamicState::eStencilReference : return "StencilReference"; + case DynamicState::eCullMode : return "CullMode"; + case DynamicState::eFrontFace : return "FrontFace"; + case DynamicState::ePrimitiveTopology : return "PrimitiveTopology"; + case DynamicState::eViewportWithCount : return "ViewportWithCount"; + case DynamicState::eScissorWithCount : return "ScissorWithCount"; + case DynamicState::eVertexInputBindingStride : return "VertexInputBindingStride"; + case DynamicState::eDepthTestEnable : return "DepthTestEnable"; + case DynamicState::eDepthWriteEnable : return "DepthWriteEnable"; + case DynamicState::eDepthCompareOp : return "DepthCompareOp"; + case DynamicState::eDepthBoundsTestEnable : return "DepthBoundsTestEnable"; + case DynamicState::eStencilTestEnable : return "StencilTestEnable"; + case DynamicState::eStencilOp : return "StencilOp"; + case DynamicState::eRasterizerDiscardEnable : return "RasterizerDiscardEnable"; + case DynamicState::eDepthBiasEnable : return "DepthBiasEnable"; + case DynamicState::ePrimitiveRestartEnable : return "PrimitiveRestartEnable"; + case DynamicState::eLineStipple : return "LineStipple"; + case DynamicState::eViewportWScalingNV : return "ViewportWScalingNV"; + case DynamicState::eDiscardRectangleEXT : return "DiscardRectangleEXT"; + case DynamicState::eDiscardRectangleEnableEXT : return "DiscardRectangleEnableEXT"; + case DynamicState::eDiscardRectangleModeEXT : return "DiscardRectangleModeEXT"; + case DynamicState::eSampleLocationsEXT : return "SampleLocationsEXT"; + case DynamicState::eRayTracingPipelineStackSizeKHR : return "RayTracingPipelineStackSizeKHR"; + case DynamicState::eViewportShadingRatePaletteNV : return "ViewportShadingRatePaletteNV"; + case DynamicState::eViewportCoarseSampleOrderNV : return "ViewportCoarseSampleOrderNV"; + case DynamicState::eExclusiveScissorEnableNV : return "ExclusiveScissorEnableNV"; + case DynamicState::eExclusiveScissorNV : return "ExclusiveScissorNV"; + case DynamicState::eFragmentShadingRateKHR : return "FragmentShadingRateKHR"; + case DynamicState::eVertexInputEXT : return "VertexInputEXT"; + case DynamicState::ePatchControlPointsEXT : return "PatchControlPointsEXT"; + case DynamicState::eLogicOpEXT : return "LogicOpEXT"; + case DynamicState::eColorWriteEnableEXT : return "ColorWriteEnableEXT"; + case DynamicState::eDepthClampEnableEXT : return "DepthClampEnableEXT"; + case DynamicState::ePolygonModeEXT : return "PolygonModeEXT"; + case DynamicState::eRasterizationSamplesEXT : return "RasterizationSamplesEXT"; + case DynamicState::eSampleMaskEXT : return "SampleMaskEXT"; + case DynamicState::eAlphaToCoverageEnableEXT : return "AlphaToCoverageEnableEXT"; + case DynamicState::eAlphaToOneEnableEXT : return "AlphaToOneEnableEXT"; + case DynamicState::eLogicOpEnableEXT : return "LogicOpEnableEXT"; + case DynamicState::eColorBlendEnableEXT : return "ColorBlendEnableEXT"; + case DynamicState::eColorBlendEquationEXT : return "ColorBlendEquationEXT"; + case DynamicState::eColorWriteMaskEXT : return "ColorWriteMaskEXT"; + case DynamicState::eTessellationDomainOriginEXT : return "TessellationDomainOriginEXT"; + case DynamicState::eRasterizationStreamEXT : return "RasterizationStreamEXT"; + case DynamicState::eConservativeRasterizationModeEXT : return "ConservativeRasterizationModeEXT"; + case DynamicState::eExtraPrimitiveOverestimationSizeEXT: return "ExtraPrimitiveOverestimationSizeEXT"; + case DynamicState::eDepthClipEnableEXT : return "DepthClipEnableEXT"; + case DynamicState::eSampleLocationsEnableEXT : return "SampleLocationsEnableEXT"; + case DynamicState::eColorBlendAdvancedEXT : return "ColorBlendAdvancedEXT"; + case DynamicState::eProvokingVertexModeEXT : return "ProvokingVertexModeEXT"; + case DynamicState::eLineRasterizationModeEXT : return "LineRasterizationModeEXT"; + case DynamicState::eLineStippleEnableEXT : return "LineStippleEnableEXT"; + case DynamicState::eDepthClipNegativeOneToOneEXT : return "DepthClipNegativeOneToOneEXT"; + case DynamicState::eViewportWScalingEnableNV : return "ViewportWScalingEnableNV"; + case DynamicState::eViewportSwizzleNV : return "ViewportSwizzleNV"; + case DynamicState::eCoverageToColorEnableNV : return "CoverageToColorEnableNV"; + case DynamicState::eCoverageToColorLocationNV : return "CoverageToColorLocationNV"; + case DynamicState::eCoverageModulationModeNV : return "CoverageModulationModeNV"; + case DynamicState::eCoverageModulationTableEnableNV : return "CoverageModulationTableEnableNV"; + case DynamicState::eCoverageModulationTableNV : return "CoverageModulationTableNV"; + case DynamicState::eShadingRateImageEnableNV : return "ShadingRateImageEnableNV"; + case DynamicState::eRepresentativeFragmentTestEnableNV : return "RepresentativeFragmentTestEnableNV"; + case DynamicState::eCoverageReductionModeNV : return "CoverageReductionModeNV"; + case DynamicState::eAttachmentFeedbackLoopEnableEXT : return "AttachmentFeedbackLoopEnableEXT"; + case DynamicState::eDepthClampRangeEXT : return "DepthClampRangeEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FrontFace value ) + { + switch ( value ) + { + case FrontFace::eCounterClockwise: return "CounterClockwise"; + case FrontFace::eClockwise : return "Clockwise"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( LogicOp value ) + { + switch ( value ) + { + case LogicOp::eClear : return "Clear"; + case LogicOp::eAnd : return "And"; + case LogicOp::eAndReverse : return "AndReverse"; + case LogicOp::eCopy : return "Copy"; + case LogicOp::eAndInverted : return "AndInverted"; + case LogicOp::eNoOp : return "NoOp"; + case LogicOp::eXor : return "Xor"; + case LogicOp::eOr : return "Or"; + case LogicOp::eNor : return "Nor"; + case LogicOp::eEquivalent : return "Equivalent"; + case LogicOp::eInvert : return "Invert"; + case LogicOp::eOrReverse : return "OrReverse"; + case LogicOp::eCopyInverted: return "CopyInverted"; + case LogicOp::eOrInverted : return "OrInverted"; + case LogicOp::eNand : return "Nand"; + case LogicOp::eSet : return "Set"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( StencilOp value ) + { + switch ( value ) + { + case StencilOp::eKeep : return "Keep"; + case StencilOp::eZero : return "Zero"; + case StencilOp::eReplace : return "Replace"; + case StencilOp::eIncrementAndClamp: return "IncrementAndClamp"; + case StencilOp::eDecrementAndClamp: return "DecrementAndClamp"; + case StencilOp::eInvert : return "Invert"; + case StencilOp::eIncrementAndWrap : return "IncrementAndWrap"; + case StencilOp::eDecrementAndWrap : return "DecrementAndWrap"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VertexInputRate value ) + { + switch ( value ) + { + case VertexInputRate::eVertex : return "Vertex"; + case VertexInputRate::eInstance: return "Instance"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineColorBlendStateCreateFlagBits value ) + { + switch ( value ) + { + case PipelineColorBlendStateCreateFlagBits::eRasterizationOrderAttachmentAccessEXT: return "RasterizationOrderAttachmentAccessEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineDepthStencilStateCreateFlagBits value ) + { + switch ( value ) + { + case PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentDepthAccessEXT : return "RasterizationOrderAttachmentDepthAccessEXT"; + case PipelineDepthStencilStateCreateFlagBits::eRasterizationOrderAttachmentStencilAccessEXT: return "RasterizationOrderAttachmentStencilAccessEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PolygonMode value ) + { + switch ( value ) + { + case PolygonMode::eFill : return "Fill"; + case PolygonMode::eLine : return "Line"; + case PolygonMode::ePoint : return "Point"; + case PolygonMode::eFillRectangleNV: return "FillRectangleNV"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PrimitiveTopology value ) + { + switch ( value ) + { + case PrimitiveTopology::ePointList : return "PointList"; + case PrimitiveTopology::eLineList : return "LineList"; + case PrimitiveTopology::eLineStrip : return "LineStrip"; + case PrimitiveTopology::eTriangleList : return "TriangleList"; + case PrimitiveTopology::eTriangleStrip : return "TriangleStrip"; + case PrimitiveTopology::eTriangleFan : return "TriangleFan"; + case PrimitiveTopology::eLineListWithAdjacency : return "LineListWithAdjacency"; + case PrimitiveTopology::eLineStripWithAdjacency : return "LineStripWithAdjacency"; + case PrimitiveTopology::eTriangleListWithAdjacency : return "TriangleListWithAdjacency"; + case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency"; + case PrimitiveTopology::ePatchList : return "PatchList"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineDynamicStateCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineInputAssemblyStateCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineMultisampleStateCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineRasterizationStateCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineTessellationStateCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineVertexInputStateCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineViewportStateCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AttachmentDescriptionFlagBits value ) + { + switch ( value ) + { + case AttachmentDescriptionFlagBits::eMayAlias : return "MayAlias"; + case AttachmentDescriptionFlagBits::eResolveSkipTransferFunctionKHR : return "ResolveSkipTransferFunctionKHR"; + case AttachmentDescriptionFlagBits::eResolveEnableTransferFunctionKHR: return "ResolveEnableTransferFunctionKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AttachmentLoadOp value ) + { + switch ( value ) + { + case AttachmentLoadOp::eLoad : return "Load"; + case AttachmentLoadOp::eClear : return "Clear"; + case AttachmentLoadOp::eDontCare: return "DontCare"; + case AttachmentLoadOp::eNone : return "None"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AttachmentStoreOp value ) + { + switch ( value ) + { + case AttachmentStoreOp::eStore : return "Store"; + case AttachmentStoreOp::eDontCare: return "DontCare"; + case AttachmentStoreOp::eNone : return "None"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FramebufferCreateFlagBits value ) + { + switch ( value ) + { + case FramebufferCreateFlagBits::eImageless: return "Imageless"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( RenderPassCreateFlagBits value ) + { + switch ( value ) + { + case RenderPassCreateFlagBits::eTransformQCOM : return "TransformQCOM"; + case RenderPassCreateFlagBits::ePerLayerFragmentDensityVALVE: return "PerLayerFragmentDensityVALVE"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SubpassDescriptionFlagBits value ) + { + switch ( value ) + { + case SubpassDescriptionFlagBits::ePerViewAttributesNVX : return "PerViewAttributesNVX"; + case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX : return "PerViewPositionXOnlyNVX"; + case SubpassDescriptionFlagBits::eTileShadingApronQCOM : return "TileShadingApronQCOM"; + case SubpassDescriptionFlagBits::eRasterizationOrderAttachmentColorAccessEXT : return "RasterizationOrderAttachmentColorAccessEXT"; + case SubpassDescriptionFlagBits::eRasterizationOrderAttachmentDepthAccessEXT : return "RasterizationOrderAttachmentDepthAccessEXT"; + case SubpassDescriptionFlagBits::eRasterizationOrderAttachmentStencilAccessEXT: return "RasterizationOrderAttachmentStencilAccessEXT"; + case SubpassDescriptionFlagBits::eEnableLegacyDitheringEXT : return "EnableLegacyDitheringEXT"; + case SubpassDescriptionFlagBits::eFragmentRegionEXT : return "FragmentRegionEXT"; + case SubpassDescriptionFlagBits::eCustomResolveEXT : return "CustomResolveEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( StencilFaceFlagBits value ) + { + switch ( value ) + { + case StencilFaceFlagBits::eFront : return "Front"; + case StencilFaceFlagBits::eBack : return "Back"; + case StencilFaceFlagBits::eFrontAndBack: return "FrontAndBack"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SubpassContents value ) + { + switch ( value ) + { + case SubpassContents::eInline : return "Inline"; + case SubpassContents::eSecondaryCommandBuffers : return "SecondaryCommandBuffers"; + case SubpassContents::eInlineAndSecondaryCommandBuffersKHR: return "InlineAndSecondaryCommandBuffersKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_VERSION_1_1 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SubgroupFeatureFlagBits value ) + { + switch ( value ) + { + case SubgroupFeatureFlagBits::eBasic : return "Basic"; + case SubgroupFeatureFlagBits::eVote : return "Vote"; + case SubgroupFeatureFlagBits::eArithmetic : return "Arithmetic"; + case SubgroupFeatureFlagBits::eBallot : return "Ballot"; + case SubgroupFeatureFlagBits::eShuffle : return "Shuffle"; + case SubgroupFeatureFlagBits::eShuffleRelative: return "ShuffleRelative"; + case SubgroupFeatureFlagBits::eClustered : return "Clustered"; + case SubgroupFeatureFlagBits::eQuad : return "Quad"; + case SubgroupFeatureFlagBits::eRotate : return "Rotate"; + case SubgroupFeatureFlagBits::eRotateClustered: return "RotateClustered"; + case SubgroupFeatureFlagBits::ePartitionedEXT : return "PartitionedEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PointClippingBehavior value ) + { + switch ( value ) + { + case PointClippingBehavior::eAllClipPlanes : return "AllClipPlanes"; + case PointClippingBehavior::eUserClipPlanesOnly: return "UserClipPlanesOnly"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PeerMemoryFeatureFlagBits value ) + { + switch ( value ) + { + case PeerMemoryFeatureFlagBits::eCopySrc : return "CopySrc"; + case PeerMemoryFeatureFlagBits::eCopyDst : return "CopyDst"; + case PeerMemoryFeatureFlagBits::eGenericSrc: return "GenericSrc"; + case PeerMemoryFeatureFlagBits::eGenericDst: return "GenericDst"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MemoryAllocateFlagBits value ) + { + switch ( value ) + { + case MemoryAllocateFlagBits::eDeviceMask : return "DeviceMask"; + case MemoryAllocateFlagBits::eDeviceAddress : return "DeviceAddress"; + case MemoryAllocateFlagBits::eDeviceAddressCaptureReplay: return "DeviceAddressCaptureReplay"; + case MemoryAllocateFlagBits::eZeroInitializeEXT : return "ZeroInitializeEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CommandPoolTrimFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ExternalMemoryHandleTypeFlagBits value ) + { + switch ( value ) + { + case ExternalMemoryHandleTypeFlagBits::eOpaqueFd : return "OpaqueFd"; + case ExternalMemoryHandleTypeFlagBits::eOpaqueWin32 : return "OpaqueWin32"; + case ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt : return "OpaqueWin32Kmt"; + case ExternalMemoryHandleTypeFlagBits::eD3D11Texture : return "D3D11Texture"; + case ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt: return "D3D11TextureKmt"; + case ExternalMemoryHandleTypeFlagBits::eD3D12Heap : return "D3D12Heap"; + case ExternalMemoryHandleTypeFlagBits::eD3D12Resource : return "D3D12Resource"; + case ExternalMemoryHandleTypeFlagBits::eDmaBufEXT : return "DmaBufEXT"; +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + case ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID: return "AndroidHardwareBufferANDROID"; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + case ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT : return "HostAllocationEXT"; + case ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT: return "HostMappedForeignMemoryEXT"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case ExternalMemoryHandleTypeFlagBits::eZirconVmoFUCHSIA: return "ZirconVmoFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + case ExternalMemoryHandleTypeFlagBits::eRdmaAddressNV: return "RdmaAddressNV"; +#if defined( VK_USE_PLATFORM_OHOS ) + case ExternalMemoryHandleTypeFlagBits::eOhNativeBufferOHOS: return "OhNativeBufferOHOS"; +#endif /*VK_USE_PLATFORM_OHOS*/ +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + case ExternalMemoryHandleTypeFlagBits::eScreenBufferQNX: return "ScreenBufferQNX"; +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ +#if defined( VK_USE_PLATFORM_METAL_EXT ) + case ExternalMemoryHandleTypeFlagBits::eMtlbufferEXT : return "MtlbufferEXT"; + case ExternalMemoryHandleTypeFlagBits::eMtltextureEXT: return "MtltextureEXT"; + case ExternalMemoryHandleTypeFlagBits::eMtlheapEXT : return "MtlheapEXT"; +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + default: return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ExternalMemoryFeatureFlagBits value ) + { + switch ( value ) + { + case ExternalMemoryFeatureFlagBits::eDedicatedOnly: return "DedicatedOnly"; + case ExternalMemoryFeatureFlagBits::eExportable : return "Exportable"; + case ExternalMemoryFeatureFlagBits::eImportable : return "Importable"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ExternalFenceHandleTypeFlagBits value ) + { + switch ( value ) + { + case ExternalFenceHandleTypeFlagBits::eOpaqueFd : return "OpaqueFd"; + case ExternalFenceHandleTypeFlagBits::eOpaqueWin32 : return "OpaqueWin32"; + case ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt"; + case ExternalFenceHandleTypeFlagBits::eSyncFd : return "SyncFd"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ExternalFenceFeatureFlagBits value ) + { + switch ( value ) + { + case ExternalFenceFeatureFlagBits::eExportable: return "Exportable"; + case ExternalFenceFeatureFlagBits::eImportable: return "Importable"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FenceImportFlagBits value ) + { + switch ( value ) + { + case FenceImportFlagBits::eTemporary: return "Temporary"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SemaphoreImportFlagBits value ) + { + switch ( value ) + { + case SemaphoreImportFlagBits::eTemporary: return "Temporary"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ExternalSemaphoreHandleTypeFlagBits value ) + { + switch ( value ) + { + case ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd : return "OpaqueFd"; + case ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32 : return "OpaqueWin32"; + case ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt: return "OpaqueWin32Kmt"; + case ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence : return "D3D12Fence"; + case ExternalSemaphoreHandleTypeFlagBits::eSyncFd : return "SyncFd"; +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case ExternalSemaphoreHandleTypeFlagBits::eZirconEventFUCHSIA: return "ZirconEventFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + default: return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ExternalSemaphoreFeatureFlagBits value ) + { + switch ( value ) + { + case ExternalSemaphoreFeatureFlagBits::eExportable: return "Exportable"; + case ExternalSemaphoreFeatureFlagBits::eImportable: return "Importable"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DescriptorUpdateTemplateType value ) + { + switch ( value ) + { + case DescriptorUpdateTemplateType::eDescriptorSet : return "DescriptorSet"; + case DescriptorUpdateTemplateType::ePushDescriptors: return "PushDescriptors"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DescriptorUpdateTemplateCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SamplerYcbcrModelConversion value ) + { + switch ( value ) + { + case SamplerYcbcrModelConversion::eRgbIdentity : return "RgbIdentity"; + case SamplerYcbcrModelConversion::eYcbcrIdentity: return "YcbcrIdentity"; + case SamplerYcbcrModelConversion::eYcbcr709 : return "Ycbcr709"; + case SamplerYcbcrModelConversion::eYcbcr601 : return "Ycbcr601"; + case SamplerYcbcrModelConversion::eYcbcr2020 : return "Ycbcr2020"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SamplerYcbcrRange value ) + { + switch ( value ) + { + case SamplerYcbcrRange::eItuFull : return "ItuFull"; + case SamplerYcbcrRange::eItuNarrow: return "ItuNarrow"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ChromaLocation value ) + { + switch ( value ) + { + case ChromaLocation::eCositedEven: return "CositedEven"; + case ChromaLocation::eMidpoint : return "Midpoint"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( TessellationDomainOrigin value ) + { + switch ( value ) + { + case TessellationDomainOrigin::eUpperLeft: return "UpperLeft"; + case TessellationDomainOrigin::eLowerLeft: return "LowerLeft"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_VERSION_1_2 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DriverId value ) + { + switch ( value ) + { + case DriverId::eAmdProprietary : return "AmdProprietary"; + case DriverId::eAmdOpenSource : return "AmdOpenSource"; + case DriverId::eMesaRadv : return "MesaRadv"; + case DriverId::eNvidiaProprietary : return "NvidiaProprietary"; + case DriverId::eIntelProprietaryWindows : return "IntelProprietaryWindows"; + case DriverId::eIntelOpenSourceMESA : return "IntelOpenSourceMESA"; + case DriverId::eImaginationProprietary : return "ImaginationProprietary"; + case DriverId::eQualcommProprietary : return "QualcommProprietary"; + case DriverId::eArmProprietary : return "ArmProprietary"; + case DriverId::eGoogleSwiftshader : return "GoogleSwiftshader"; + case DriverId::eGgpProprietary : return "GgpProprietary"; + case DriverId::eBroadcomProprietary : return "BroadcomProprietary"; + case DriverId::eMesaLlvmpipe : return "MesaLlvmpipe"; + case DriverId::eMoltenvk : return "Moltenvk"; + case DriverId::eCoreaviProprietary : return "CoreaviProprietary"; + case DriverId::eJuiceProprietary : return "JuiceProprietary"; + case DriverId::eVerisiliconProprietary : return "VerisiliconProprietary"; + case DriverId::eMesaTurnip : return "MesaTurnip"; + case DriverId::eMesaV3Dv : return "MesaV3Dv"; + case DriverId::eMesaPanvk : return "MesaPanvk"; + case DriverId::eSamsungProprietary : return "SamsungProprietary"; + case DriverId::eMesaVenus : return "MesaVenus"; + case DriverId::eMesaDozen : return "MesaDozen"; + case DriverId::eMesaNvk : return "MesaNvk"; + case DriverId::eImaginationOpenSourceMESA: return "ImaginationOpenSourceMESA"; + case DriverId::eMesaHoneykrisp : return "MesaHoneykrisp"; + case DriverId::eVulkanScEmulationOnVulkan: return "VulkanScEmulationOnVulkan"; + case DriverId::eMesaKosmickrisp : return "MesaKosmickrisp"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderFloatControlsIndependence value ) + { + switch ( value ) + { + case ShaderFloatControlsIndependence::e32BitOnly: return "32BitOnly"; + case ShaderFloatControlsIndependence::eAll : return "All"; + case ShaderFloatControlsIndependence::eNone : return "None"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ResolveModeFlagBits value ) + { + switch ( value ) + { + case ResolveModeFlagBits::eNone : return "None"; + case ResolveModeFlagBits::eSampleZero: return "SampleZero"; + case ResolveModeFlagBits::eAverage : return "Average"; + case ResolveModeFlagBits::eMin : return "Min"; + case ResolveModeFlagBits::eMax : return "Max"; +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + case ResolveModeFlagBits::eExternalFormatDownsampleANDROID: return "ExternalFormatDownsampleANDROID"; +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + case ResolveModeFlagBits::eCustomEXT: return "CustomEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SemaphoreType value ) + { + switch ( value ) + { + case SemaphoreType::eBinary : return "Binary"; + case SemaphoreType::eTimeline: return "Timeline"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SemaphoreWaitFlagBits value ) + { + switch ( value ) + { + case SemaphoreWaitFlagBits::eAny: return "Any"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DescriptorBindingFlagBits value ) + { + switch ( value ) + { + case DescriptorBindingFlagBits::eUpdateAfterBind : return "UpdateAfterBind"; + case DescriptorBindingFlagBits::eUpdateUnusedWhilePending: return "UpdateUnusedWhilePending"; + case DescriptorBindingFlagBits::ePartiallyBound : return "PartiallyBound"; + case DescriptorBindingFlagBits::eVariableDescriptorCount : return "VariableDescriptorCount"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SamplerReductionMode value ) + { + switch ( value ) + { + case SamplerReductionMode::eWeightedAverage : return "WeightedAverage"; + case SamplerReductionMode::eMin : return "Min"; + case SamplerReductionMode::eMax : return "Max"; + case SamplerReductionMode::eWeightedAverageRangeclampQCOM: return "WeightedAverageRangeclampQCOM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_VERSION_1_3 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ToolPurposeFlagBits value ) + { + switch ( value ) + { + case ToolPurposeFlagBits::eValidation : return "Validation"; + case ToolPurposeFlagBits::eProfiling : return "Profiling"; + case ToolPurposeFlagBits::eTracing : return "Tracing"; + case ToolPurposeFlagBits::eAdditionalFeatures: return "AdditionalFeatures"; + case ToolPurposeFlagBits::eModifyingFeatures : return "ModifyingFeatures"; + case ToolPurposeFlagBits::eDebugReportingEXT : return "DebugReportingEXT"; + case ToolPurposeFlagBits::eDebugMarkersEXT : return "DebugMarkersEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PrivateDataSlotCreateFlagBits ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineStageFlagBits2 value ) + { + switch ( value ) + { + case PipelineStageFlagBits2::eNone : return "None"; + case PipelineStageFlagBits2::eTopOfPipe : return "TopOfPipe"; + case PipelineStageFlagBits2::eDrawIndirect : return "DrawIndirect"; + case PipelineStageFlagBits2::eVertexInput : return "VertexInput"; + case PipelineStageFlagBits2::eVertexShader : return "VertexShader"; + case PipelineStageFlagBits2::eTessellationControlShader : return "TessellationControlShader"; + case PipelineStageFlagBits2::eTessellationEvaluationShader : return "TessellationEvaluationShader"; + case PipelineStageFlagBits2::eGeometryShader : return "GeometryShader"; + case PipelineStageFlagBits2::eFragmentShader : return "FragmentShader"; + case PipelineStageFlagBits2::eEarlyFragmentTests : return "EarlyFragmentTests"; + case PipelineStageFlagBits2::eLateFragmentTests : return "LateFragmentTests"; + case PipelineStageFlagBits2::eColorAttachmentOutput : return "ColorAttachmentOutput"; + case PipelineStageFlagBits2::eComputeShader : return "ComputeShader"; + case PipelineStageFlagBits2::eAllTransfer : return "AllTransfer"; + case PipelineStageFlagBits2::eBottomOfPipe : return "BottomOfPipe"; + case PipelineStageFlagBits2::eHost : return "Host"; + case PipelineStageFlagBits2::eAllGraphics : return "AllGraphics"; + case PipelineStageFlagBits2::eAllCommands : return "AllCommands"; + case PipelineStageFlagBits2::eCopy : return "Copy"; + case PipelineStageFlagBits2::eResolve : return "Resolve"; + case PipelineStageFlagBits2::eBlit : return "Blit"; + case PipelineStageFlagBits2::eClear : return "Clear"; + case PipelineStageFlagBits2::eIndexInput : return "IndexInput"; + case PipelineStageFlagBits2::eVertexAttributeInput : return "VertexAttributeInput"; + case PipelineStageFlagBits2::ePreRasterizationShaders : return "PreRasterizationShaders"; + case PipelineStageFlagBits2::eVideoDecodeKHR : return "VideoDecodeKHR"; + case PipelineStageFlagBits2::eVideoEncodeKHR : return "VideoEncodeKHR"; + case PipelineStageFlagBits2::eTransformFeedbackEXT : return "TransformFeedbackEXT"; + case PipelineStageFlagBits2::eConditionalRenderingEXT : return "ConditionalRenderingEXT"; + case PipelineStageFlagBits2::eCommandPreprocessEXT : return "CommandPreprocessEXT"; + case PipelineStageFlagBits2::eFragmentShadingRateAttachmentKHR: return "FragmentShadingRateAttachmentKHR"; + case PipelineStageFlagBits2::eAccelerationStructureBuildKHR : return "AccelerationStructureBuildKHR"; + case PipelineStageFlagBits2::eRayTracingShaderKHR : return "RayTracingShaderKHR"; + case PipelineStageFlagBits2::eFragmentDensityProcessEXT : return "FragmentDensityProcessEXT"; + case PipelineStageFlagBits2::eTaskShaderEXT : return "TaskShaderEXT"; + case PipelineStageFlagBits2::eMeshShaderEXT : return "MeshShaderEXT"; + case PipelineStageFlagBits2::eSubpassShaderHUAWEI : return "SubpassShaderHUAWEI"; + case PipelineStageFlagBits2::eInvocationMaskHUAWEI : return "InvocationMaskHUAWEI"; + case PipelineStageFlagBits2::eAccelerationStructureCopyKHR : return "AccelerationStructureCopyKHR"; + case PipelineStageFlagBits2::eMicromapBuildEXT : return "MicromapBuildEXT"; + case PipelineStageFlagBits2::eClusterCullingShaderHUAWEI : return "ClusterCullingShaderHUAWEI"; + case PipelineStageFlagBits2::eOpticalFlowNV : return "OpticalFlowNV"; + case PipelineStageFlagBits2::eConvertCooperativeVectorMatrixNV: return "ConvertCooperativeVectorMatrixNV"; + case PipelineStageFlagBits2::eDataGraphARM : return "DataGraphARM"; + case PipelineStageFlagBits2::eCopyIndirectKHR : return "CopyIndirectKHR"; + case PipelineStageFlagBits2::eMemoryDecompressionEXT : return "MemoryDecompressionEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccessFlagBits2 value ) + { + switch ( value ) + { + case AccessFlagBits2::eNone : return "None"; + case AccessFlagBits2::eIndirectCommandRead : return "IndirectCommandRead"; + case AccessFlagBits2::eIndexRead : return "IndexRead"; + case AccessFlagBits2::eVertexAttributeRead : return "VertexAttributeRead"; + case AccessFlagBits2::eUniformRead : return "UniformRead"; + case AccessFlagBits2::eInputAttachmentRead : return "InputAttachmentRead"; + case AccessFlagBits2::eShaderRead : return "ShaderRead"; + case AccessFlagBits2::eShaderWrite : return "ShaderWrite"; + case AccessFlagBits2::eColorAttachmentRead : return "ColorAttachmentRead"; + case AccessFlagBits2::eColorAttachmentWrite : return "ColorAttachmentWrite"; + case AccessFlagBits2::eDepthStencilAttachmentRead : return "DepthStencilAttachmentRead"; + case AccessFlagBits2::eDepthStencilAttachmentWrite : return "DepthStencilAttachmentWrite"; + case AccessFlagBits2::eTransferRead : return "TransferRead"; + case AccessFlagBits2::eTransferWrite : return "TransferWrite"; + case AccessFlagBits2::eHostRead : return "HostRead"; + case AccessFlagBits2::eHostWrite : return "HostWrite"; + case AccessFlagBits2::eMemoryRead : return "MemoryRead"; + case AccessFlagBits2::eMemoryWrite : return "MemoryWrite"; + case AccessFlagBits2::eShaderSampledRead : return "ShaderSampledRead"; + case AccessFlagBits2::eShaderStorageRead : return "ShaderStorageRead"; + case AccessFlagBits2::eShaderStorageWrite : return "ShaderStorageWrite"; + case AccessFlagBits2::eVideoDecodeReadKHR : return "VideoDecodeReadKHR"; + case AccessFlagBits2::eVideoDecodeWriteKHR : return "VideoDecodeWriteKHR"; + case AccessFlagBits2::eSamplerHeapReadEXT : return "SamplerHeapReadEXT"; + case AccessFlagBits2::eResourceHeapReadEXT : return "ResourceHeapReadEXT"; + case AccessFlagBits2::eVideoEncodeReadKHR : return "VideoEncodeReadKHR"; + case AccessFlagBits2::eVideoEncodeWriteKHR : return "VideoEncodeWriteKHR"; + case AccessFlagBits2::eShaderTileAttachmentReadQCOM : return "ShaderTileAttachmentReadQCOM"; + case AccessFlagBits2::eShaderTileAttachmentWriteQCOM : return "ShaderTileAttachmentWriteQCOM"; + case AccessFlagBits2::eTransformFeedbackWriteEXT : return "TransformFeedbackWriteEXT"; + case AccessFlagBits2::eTransformFeedbackCounterReadEXT : return "TransformFeedbackCounterReadEXT"; + case AccessFlagBits2::eTransformFeedbackCounterWriteEXT : return "TransformFeedbackCounterWriteEXT"; + case AccessFlagBits2::eConditionalRenderingReadEXT : return "ConditionalRenderingReadEXT"; + case AccessFlagBits2::eCommandPreprocessReadEXT : return "CommandPreprocessReadEXT"; + case AccessFlagBits2::eCommandPreprocessWriteEXT : return "CommandPreprocessWriteEXT"; + case AccessFlagBits2::eFragmentShadingRateAttachmentReadKHR: return "FragmentShadingRateAttachmentReadKHR"; + case AccessFlagBits2::eAccelerationStructureReadKHR : return "AccelerationStructureReadKHR"; + case AccessFlagBits2::eAccelerationStructureWriteKHR : return "AccelerationStructureWriteKHR"; + case AccessFlagBits2::eFragmentDensityMapReadEXT : return "FragmentDensityMapReadEXT"; + case AccessFlagBits2::eColorAttachmentReadNoncoherentEXT : return "ColorAttachmentReadNoncoherentEXT"; + case AccessFlagBits2::eDescriptorBufferReadEXT : return "DescriptorBufferReadEXT"; + case AccessFlagBits2::eInvocationMaskReadHUAWEI : return "InvocationMaskReadHUAWEI"; + case AccessFlagBits2::eShaderBindingTableReadKHR : return "ShaderBindingTableReadKHR"; + case AccessFlagBits2::eMicromapReadEXT : return "MicromapReadEXT"; + case AccessFlagBits2::eMicromapWriteEXT : return "MicromapWriteEXT"; + case AccessFlagBits2::eOpticalFlowReadNV : return "OpticalFlowReadNV"; + case AccessFlagBits2::eOpticalFlowWriteNV : return "OpticalFlowWriteNV"; + case AccessFlagBits2::eDataGraphReadARM : return "DataGraphReadARM"; + case AccessFlagBits2::eDataGraphWriteARM : return "DataGraphWriteARM"; + case AccessFlagBits2::eMemoryDecompressionReadEXT : return "MemoryDecompressionReadEXT"; + case AccessFlagBits2::eMemoryDecompressionWriteEXT : return "MemoryDecompressionWriteEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SubmitFlagBits value ) + { + switch ( value ) + { + case SubmitFlagBits::eProtected: return "Protected"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FormatFeatureFlagBits2 value ) + { + switch ( value ) + { + case FormatFeatureFlagBits2::eSampledImage : return "SampledImage"; + case FormatFeatureFlagBits2::eStorageImage : return "StorageImage"; + case FormatFeatureFlagBits2::eStorageImageAtomic : return "StorageImageAtomic"; + case FormatFeatureFlagBits2::eUniformTexelBuffer : return "UniformTexelBuffer"; + case FormatFeatureFlagBits2::eStorageTexelBuffer : return "StorageTexelBuffer"; + case FormatFeatureFlagBits2::eStorageTexelBufferAtomic : return "StorageTexelBufferAtomic"; + case FormatFeatureFlagBits2::eVertexBuffer : return "VertexBuffer"; + case FormatFeatureFlagBits2::eColorAttachment : return "ColorAttachment"; + case FormatFeatureFlagBits2::eColorAttachmentBlend : return "ColorAttachmentBlend"; + case FormatFeatureFlagBits2::eDepthStencilAttachment : return "DepthStencilAttachment"; + case FormatFeatureFlagBits2::eBlitSrc : return "BlitSrc"; + case FormatFeatureFlagBits2::eBlitDst : return "BlitDst"; + case FormatFeatureFlagBits2::eSampledImageFilterLinear : return "SampledImageFilterLinear"; + case FormatFeatureFlagBits2::eTransferSrc : return "TransferSrc"; + case FormatFeatureFlagBits2::eTransferDst : return "TransferDst"; + case FormatFeatureFlagBits2::eSampledImageFilterMinmax : return "SampledImageFilterMinmax"; + case FormatFeatureFlagBits2::eMidpointChromaSamples : return "MidpointChromaSamples"; + case FormatFeatureFlagBits2::eSampledImageYcbcrConversionLinearFilter : return "SampledImageYcbcrConversionLinearFilter"; + case FormatFeatureFlagBits2::eSampledImageYcbcrConversionSeparateReconstructionFilter: return "SampledImageYcbcrConversionSeparateReconstructionFilter"; + case FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicit: return "SampledImageYcbcrConversionChromaReconstructionExplicit"; + case FormatFeatureFlagBits2::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable: + return "SampledImageYcbcrConversionChromaReconstructionExplicitForceable"; + case FormatFeatureFlagBits2::eDisjoint : return "Disjoint"; + case FormatFeatureFlagBits2::eCositedChromaSamples : return "CositedChromaSamples"; + case FormatFeatureFlagBits2::eStorageReadWithoutFormat : return "StorageReadWithoutFormat"; + case FormatFeatureFlagBits2::eStorageWriteWithoutFormat : return "StorageWriteWithoutFormat"; + case FormatFeatureFlagBits2::eSampledImageDepthComparison : return "SampledImageDepthComparison"; + case FormatFeatureFlagBits2::eSampledImageFilterCubic : return "SampledImageFilterCubic"; + case FormatFeatureFlagBits2::eHostImageTransfer : return "HostImageTransfer"; + case FormatFeatureFlagBits2::eVideoDecodeOutputKHR : return "VideoDecodeOutputKHR"; + case FormatFeatureFlagBits2::eVideoDecodeDpbKHR : return "VideoDecodeDpbKHR"; + case FormatFeatureFlagBits2::eAccelerationStructureVertexBufferKHR: return "AccelerationStructureVertexBufferKHR"; + case FormatFeatureFlagBits2::eFragmentDensityMapEXT : return "FragmentDensityMapEXT"; + case FormatFeatureFlagBits2::eFragmentShadingRateAttachmentKHR : return "FragmentShadingRateAttachmentKHR"; + case FormatFeatureFlagBits2::eVideoEncodeInputKHR : return "VideoEncodeInputKHR"; + case FormatFeatureFlagBits2::eVideoEncodeDpbKHR : return "VideoEncodeDpbKHR"; + case FormatFeatureFlagBits2::eAccelerationStructureRadiusBufferNV : return "AccelerationStructureRadiusBufferNV"; + case FormatFeatureFlagBits2::eLinearColorAttachmentNV : return "LinearColorAttachmentNV"; + case FormatFeatureFlagBits2::eWeightImageQCOM : return "WeightImageQCOM"; + case FormatFeatureFlagBits2::eWeightSampledImageQCOM : return "WeightSampledImageQCOM"; + case FormatFeatureFlagBits2::eBlockMatchingQCOM : return "BlockMatchingQCOM"; + case FormatFeatureFlagBits2::eBoxFilterSampledQCOM : return "BoxFilterSampledQCOM"; + case FormatFeatureFlagBits2::eTensorShaderARM : return "TensorShaderARM"; + case FormatFeatureFlagBits2::eTensorImageAliasingARM : return "TensorImageAliasingARM"; + case FormatFeatureFlagBits2::eOpticalFlowImageNV : return "OpticalFlowImageNV"; + case FormatFeatureFlagBits2::eOpticalFlowVectorNV : return "OpticalFlowVectorNV"; + case FormatFeatureFlagBits2::eOpticalFlowCostNV : return "OpticalFlowCostNV"; + case FormatFeatureFlagBits2::eTensorDataGraphARM : return "TensorDataGraphARM"; + case FormatFeatureFlagBits2::eCopyImageIndirectDstKHR : return "CopyImageIndirectDstKHR"; + case FormatFeatureFlagBits2::eVideoEncodeQuantizationDeltaMapKHR : return "VideoEncodeQuantizationDeltaMapKHR"; + case FormatFeatureFlagBits2::eVideoEncodeEmphasisMapKHR : return "VideoEncodeEmphasisMapKHR"; + case FormatFeatureFlagBits2::eDepthCopyOnComputeQueueKHR : return "DepthCopyOnComputeQueueKHR"; + case FormatFeatureFlagBits2::eDepthCopyOnTransferQueueKHR : return "DepthCopyOnTransferQueueKHR"; + case FormatFeatureFlagBits2::eStencilCopyOnComputeQueueKHR : return "StencilCopyOnComputeQueueKHR"; + case FormatFeatureFlagBits2::eStencilCopyOnTransferQueueKHR : return "StencilCopyOnTransferQueueKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCreationFeedbackFlagBits value ) + { + switch ( value ) + { + case PipelineCreationFeedbackFlagBits::eValid : return "Valid"; + case PipelineCreationFeedbackFlagBits::eApplicationPipelineCacheHit: return "ApplicationPipelineCacheHit"; + case PipelineCreationFeedbackFlagBits::eBasePipelineAcceleration : return "BasePipelineAcceleration"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( RenderingFlagBits value ) + { + switch ( value ) + { + case RenderingFlagBits::eContentsSecondaryCommandBuffers : return "ContentsSecondaryCommandBuffers"; + case RenderingFlagBits::eSuspending : return "Suspending"; + case RenderingFlagBits::eResuming : return "Resuming"; + case RenderingFlagBits::eEnableLegacyDitheringEXT : return "EnableLegacyDitheringEXT"; + case RenderingFlagBits::eContentsInlineKHR : return "ContentsInlineKHR"; + case RenderingFlagBits::ePerLayerFragmentDensityVALVE : return "PerLayerFragmentDensityVALVE"; + case RenderingFlagBits::eFragmentRegionEXT : return "FragmentRegionEXT"; + case RenderingFlagBits::eCustomResolveEXT : return "CustomResolveEXT"; + case RenderingFlagBits::eLocalReadConcurrentAccessControlKHR: return "LocalReadConcurrentAccessControlKHR"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_VERSION_1_4 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineRobustnessBufferBehavior value ) + { + switch ( value ) + { + case PipelineRobustnessBufferBehavior::eDeviceDefault : return "DeviceDefault"; + case PipelineRobustnessBufferBehavior::eDisabled : return "Disabled"; + case PipelineRobustnessBufferBehavior::eRobustBufferAccess : return "RobustBufferAccess"; + case PipelineRobustnessBufferBehavior::eRobustBufferAccess2: return "RobustBufferAccess2"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineRobustnessImageBehavior value ) + { + switch ( value ) + { + case PipelineRobustnessImageBehavior::eDeviceDefault : return "DeviceDefault"; + case PipelineRobustnessImageBehavior::eDisabled : return "Disabled"; + case PipelineRobustnessImageBehavior::eRobustImageAccess : return "RobustImageAccess"; + case PipelineRobustnessImageBehavior::eRobustImageAccess2: return "RobustImageAccess2"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( QueueGlobalPriority value ) + { + switch ( value ) + { + case QueueGlobalPriority::eLow : return "Low"; + case QueueGlobalPriority::eMedium : return "Medium"; + case QueueGlobalPriority::eHigh : return "High"; + case QueueGlobalPriority::eRealtime: return "Realtime"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MemoryUnmapFlagBits value ) + { + switch ( value ) + { + case MemoryUnmapFlagBits::eReserveEXT: return "ReserveEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BufferUsageFlagBits2 value ) + { + switch ( value ) + { + case BufferUsageFlagBits2::eTransferSrc : return "TransferSrc"; + case BufferUsageFlagBits2::eTransferDst : return "TransferDst"; + case BufferUsageFlagBits2::eUniformTexelBuffer : return "UniformTexelBuffer"; + case BufferUsageFlagBits2::eStorageTexelBuffer : return "StorageTexelBuffer"; + case BufferUsageFlagBits2::eUniformBuffer : return "UniformBuffer"; + case BufferUsageFlagBits2::eStorageBuffer : return "StorageBuffer"; + case BufferUsageFlagBits2::eIndexBuffer : return "IndexBuffer"; + case BufferUsageFlagBits2::eVertexBuffer : return "VertexBuffer"; + case BufferUsageFlagBits2::eIndirectBuffer : return "IndirectBuffer"; + case BufferUsageFlagBits2::eShaderDeviceAddress: return "ShaderDeviceAddress"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case BufferUsageFlagBits2::eExecutionGraphScratchAMDX: return "ExecutionGraphScratchAMDX"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case BufferUsageFlagBits2::eDescriptorHeapEXT : return "DescriptorHeapEXT"; + case BufferUsageFlagBits2::eConditionalRenderingEXT : return "ConditionalRenderingEXT"; + case BufferUsageFlagBits2::eShaderBindingTableKHR : return "ShaderBindingTableKHR"; + case BufferUsageFlagBits2::eTransformFeedbackBufferEXT : return "TransformFeedbackBufferEXT"; + case BufferUsageFlagBits2::eTransformFeedbackCounterBufferEXT : return "TransformFeedbackCounterBufferEXT"; + case BufferUsageFlagBits2::eVideoDecodeSrcKHR : return "VideoDecodeSrcKHR"; + case BufferUsageFlagBits2::eVideoDecodeDstKHR : return "VideoDecodeDstKHR"; + case BufferUsageFlagBits2::eVideoEncodeDstKHR : return "VideoEncodeDstKHR"; + case BufferUsageFlagBits2::eVideoEncodeSrcKHR : return "VideoEncodeSrcKHR"; + case BufferUsageFlagBits2::eAccelerationStructureBuildInputReadOnlyKHR: return "AccelerationStructureBuildInputReadOnlyKHR"; + case BufferUsageFlagBits2::eAccelerationStructureStorageKHR : return "AccelerationStructureStorageKHR"; + case BufferUsageFlagBits2::eSamplerDescriptorBufferEXT : return "SamplerDescriptorBufferEXT"; + case BufferUsageFlagBits2::eResourceDescriptorBufferEXT : return "ResourceDescriptorBufferEXT"; + case BufferUsageFlagBits2::ePushDescriptorsDescriptorBufferEXT : return "PushDescriptorsDescriptorBufferEXT"; + case BufferUsageFlagBits2::eMicromapBuildInputReadOnlyEXT : return "MicromapBuildInputReadOnlyEXT"; + case BufferUsageFlagBits2::eMicromapStorageEXT : return "MicromapStorageEXT"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case BufferUsageFlagBits2::eCompressedDataDgf1AMDX: return "CompressedDataDgf1AMDX"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case BufferUsageFlagBits2::eDataGraphForeignDescriptorARM: return "DataGraphForeignDescriptorARM"; + case BufferUsageFlagBits2::eTileMemoryQCOM : return "TileMemoryQCOM"; + case BufferUsageFlagBits2::eMemoryDecompressionEXT : return "MemoryDecompressionEXT"; + case BufferUsageFlagBits2::ePreprocessBufferEXT : return "PreprocessBufferEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( HostImageCopyFlagBits value ) + { + switch ( value ) + { + case HostImageCopyFlagBits::eMemcpy: return "Memcpy"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCreateFlagBits2 value ) + { + switch ( value ) + { + case PipelineCreateFlagBits2::eDisableOptimization : return "DisableOptimization"; + case PipelineCreateFlagBits2::eAllowDerivatives : return "AllowDerivatives"; + case PipelineCreateFlagBits2::eDerivative : return "Derivative"; + case PipelineCreateFlagBits2::eViewIndexFromDeviceIndex : return "ViewIndexFromDeviceIndex"; + case PipelineCreateFlagBits2::eDispatchBase : return "DispatchBase"; + case PipelineCreateFlagBits2::eFailOnPipelineCompileRequired: return "FailOnPipelineCompileRequired"; + case PipelineCreateFlagBits2::eEarlyReturnOnFailure : return "EarlyReturnOnFailure"; + case PipelineCreateFlagBits2::eNoProtectedAccess : return "NoProtectedAccess"; + case PipelineCreateFlagBits2::eProtectedAccessOnly : return "ProtectedAccessOnly"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case PipelineCreateFlagBits2::eExecutionGraphAMDX: return "ExecutionGraphAMDX"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case PipelineCreateFlagBits2::eDescriptorHeapEXT : return "DescriptorHeapEXT"; + case PipelineCreateFlagBits2::eRayTracingAllowSpheresAndLinearSweptSpheresNV: return "RayTracingAllowSpheresAndLinearSweptSpheresNV"; + case PipelineCreateFlagBits2::eEnableLegacyDitheringEXT : return "EnableLegacyDitheringEXT"; + case PipelineCreateFlagBits2::eDeferCompileNV : return "DeferCompileNV"; + case PipelineCreateFlagBits2::eCaptureStatisticsKHR : return "CaptureStatisticsKHR"; + case PipelineCreateFlagBits2::eCaptureInternalRepresentationsKHR : return "CaptureInternalRepresentationsKHR"; + case PipelineCreateFlagBits2::eLinkTimeOptimizationEXT : return "LinkTimeOptimizationEXT"; + case PipelineCreateFlagBits2::eRetainLinkTimeOptimizationInfoEXT : return "RetainLinkTimeOptimizationInfoEXT"; + case PipelineCreateFlagBits2::eLibraryKHR : return "LibraryKHR"; + case PipelineCreateFlagBits2::eRayTracingSkipTrianglesKHR : return "RayTracingSkipTrianglesKHR"; + case PipelineCreateFlagBits2::eRayTracingSkipAabbsKHR : return "RayTracingSkipAabbsKHR"; + case PipelineCreateFlagBits2::eRayTracingNoNullAnyHitShadersKHR : return "RayTracingNoNullAnyHitShadersKHR"; + case PipelineCreateFlagBits2::eRayTracingNoNullClosestHitShadersKHR : return "RayTracingNoNullClosestHitShadersKHR"; + case PipelineCreateFlagBits2::eRayTracingNoNullMissShadersKHR : return "RayTracingNoNullMissShadersKHR"; + case PipelineCreateFlagBits2::eRayTracingNoNullIntersectionShadersKHR : return "RayTracingNoNullIntersectionShadersKHR"; + case PipelineCreateFlagBits2::eRayTracingShaderGroupHandleCaptureReplayKHR : return "RayTracingShaderGroupHandleCaptureReplayKHR"; + case PipelineCreateFlagBits2::eIndirectBindableNV : return "IndirectBindableNV"; + case PipelineCreateFlagBits2::eRayTracingAllowMotionNV : return "RayTracingAllowMotionNV"; + case PipelineCreateFlagBits2::eRenderingFragmentShadingRateAttachmentKHR : return "RenderingFragmentShadingRateAttachmentKHR"; + case PipelineCreateFlagBits2::eRenderingFragmentDensityMapAttachmentEXT : return "RenderingFragmentDensityMapAttachmentEXT"; + case PipelineCreateFlagBits2::eRayTracingOpacityMicromapEXT : return "RayTracingOpacityMicromapEXT"; + case PipelineCreateFlagBits2::eColorAttachmentFeedbackLoopEXT : return "ColorAttachmentFeedbackLoopEXT"; + case PipelineCreateFlagBits2::eDepthStencilAttachmentFeedbackLoopEXT : return "DepthStencilAttachmentFeedbackLoopEXT"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case PipelineCreateFlagBits2::eRayTracingDisplacementMicromapNV: return "RayTracingDisplacementMicromapNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case PipelineCreateFlagBits2::eDescriptorBufferEXT : return "DescriptorBufferEXT"; + case PipelineCreateFlagBits2::eDisallowOpacityMicromapARM : return "DisallowOpacityMicromapARM"; + case PipelineCreateFlagBits2::eInstrumentShadersARM : return "InstrumentShadersARM"; + case PipelineCreateFlagBits2::eCaptureDataKHR : return "CaptureDataKHR"; + case PipelineCreateFlagBits2::eIndirectBindableEXT : return "IndirectBindableEXT"; + case PipelineCreateFlagBits2::ePerLayerFragmentDensityVALVE: return "PerLayerFragmentDensityVALVE"; + case PipelineCreateFlagBits2::e64BitIndexingEXT : return "64BitIndexingEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( LineRasterizationMode value ) + { + switch ( value ) + { + case LineRasterizationMode::eDefault : return "Default"; + case LineRasterizationMode::eRectangular : return "Rectangular"; + case LineRasterizationMode::eBresenham : return "Bresenham"; + case LineRasterizationMode::eRectangularSmooth: return "RectangularSmooth"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SurfaceTransformFlagBitsKHR value ) + { + switch ( value ) + { + case SurfaceTransformFlagBitsKHR::eIdentity : return "Identity"; + case SurfaceTransformFlagBitsKHR::eRotate90 : return "Rotate90"; + case SurfaceTransformFlagBitsKHR::eRotate180 : return "Rotate180"; + case SurfaceTransformFlagBitsKHR::eRotate270 : return "Rotate270"; + case SurfaceTransformFlagBitsKHR::eHorizontalMirror : return "HorizontalMirror"; + case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90 : return "HorizontalMirrorRotate90"; + case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180"; + case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270"; + case SurfaceTransformFlagBitsKHR::eInherit : return "Inherit"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PresentModeKHR value ) + { + switch ( value ) + { + case PresentModeKHR::eImmediate : return "Immediate"; + case PresentModeKHR::eMailbox : return "Mailbox"; + case PresentModeKHR::eFifo : return "Fifo"; + case PresentModeKHR::eFifoRelaxed : return "FifoRelaxed"; + case PresentModeKHR::eSharedDemandRefresh : return "SharedDemandRefresh"; + case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh"; + case PresentModeKHR::eFifoLatestReady : return "FifoLatestReady"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ColorSpaceKHR value ) + { + switch ( value ) + { + case ColorSpaceKHR::eSrgbNonlinear : return "SrgbNonlinear"; + case ColorSpaceKHR::eDisplayP3NonlinearEXT : return "DisplayP3NonlinearEXT"; + case ColorSpaceKHR::eExtendedSrgbLinearEXT : return "ExtendedSrgbLinearEXT"; + case ColorSpaceKHR::eDisplayP3LinearEXT : return "DisplayP3LinearEXT"; + case ColorSpaceKHR::eDciP3NonlinearEXT : return "DciP3NonlinearEXT"; + case ColorSpaceKHR::eBt709LinearEXT : return "Bt709LinearEXT"; + case ColorSpaceKHR::eBt709NonlinearEXT : return "Bt709NonlinearEXT"; + case ColorSpaceKHR::eBt2020LinearEXT : return "Bt2020LinearEXT"; + case ColorSpaceKHR::eHdr10St2084EXT : return "Hdr10St2084EXT"; + case ColorSpaceKHR::eDolbyvisionEXT : return "DolbyvisionEXT"; + case ColorSpaceKHR::eHdr10HlgEXT : return "Hdr10HlgEXT"; + case ColorSpaceKHR::eAdobergbLinearEXT : return "AdobergbLinearEXT"; + case ColorSpaceKHR::eAdobergbNonlinearEXT : return "AdobergbNonlinearEXT"; + case ColorSpaceKHR::ePassThroughEXT : return "PassThroughEXT"; + case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT"; + case ColorSpaceKHR::eDisplayNativeAMD : return "DisplayNativeAMD"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CompositeAlphaFlagBitsKHR value ) + { + switch ( value ) + { + case CompositeAlphaFlagBitsKHR::eOpaque : return "Opaque"; + case CompositeAlphaFlagBitsKHR::ePreMultiplied : return "PreMultiplied"; + case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied"; + case CompositeAlphaFlagBitsKHR::eInherit : return "Inherit"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_swapchain === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SwapchainCreateFlagBitsKHR value ) + { + switch ( value ) + { + case SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions: return "SplitInstanceBindRegions"; + case SwapchainCreateFlagBitsKHR::eProtected : return "Protected"; + case SwapchainCreateFlagBitsKHR::eMutableFormat : return "MutableFormat"; + case SwapchainCreateFlagBitsKHR::ePresentTimingEXT : return "PresentTimingEXT"; + case SwapchainCreateFlagBitsKHR::ePresentId2 : return "PresentId2"; + case SwapchainCreateFlagBitsKHR::ePresentWait2 : return "PresentWait2"; + case SwapchainCreateFlagBitsKHR::eDeferredMemoryAllocation: return "DeferredMemoryAllocation"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceGroupPresentModeFlagBitsKHR value ) + { + switch ( value ) + { + case DeviceGroupPresentModeFlagBitsKHR::eLocal : return "Local"; + case DeviceGroupPresentModeFlagBitsKHR::eRemote : return "Remote"; + case DeviceGroupPresentModeFlagBitsKHR::eSum : return "Sum"; + case DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice: return "LocalMultiDevice"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_display === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DisplayPlaneAlphaFlagBitsKHR value ) + { + switch ( value ) + { + case DisplayPlaneAlphaFlagBitsKHR::eOpaque : return "Opaque"; + case DisplayPlaneAlphaFlagBitsKHR::eGlobal : return "Global"; + case DisplayPlaneAlphaFlagBitsKHR::ePerPixel : return "PerPixel"; + case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DisplayModeCreateFlagBitsKHR ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DisplaySurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } + +#if defined( VK_USE_PLATFORM_XLIB_KHR ) + //=== VK_KHR_xlib_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( XlibSurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_XLIB_KHR*/ + +#if defined( VK_USE_PLATFORM_XCB_KHR ) + //=== VK_KHR_xcb_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( XcbSurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_XCB_KHR*/ + +#if defined( VK_USE_PLATFORM_WAYLAND_KHR ) + //=== VK_KHR_wayland_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( WaylandSurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ + +#if defined( VK_USE_PLATFORM_ANDROID_KHR ) + //=== VK_KHR_android_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AndroidSurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_KHR_win32_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( Win32SurfaceCreateFlagBitsKHR ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_debug_report === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DebugReportFlagBitsEXT value ) + { + switch ( value ) + { + case DebugReportFlagBitsEXT::eInformation : return "Information"; + case DebugReportFlagBitsEXT::eWarning : return "Warning"; + case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning"; + case DebugReportFlagBitsEXT::eError : return "Error"; + case DebugReportFlagBitsEXT::eDebug : return "Debug"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DebugReportObjectTypeEXT value ) + { + switch ( value ) + { + case DebugReportObjectTypeEXT::eUnknown : return "Unknown"; + case DebugReportObjectTypeEXT::eInstance : return "Instance"; + case DebugReportObjectTypeEXT::ePhysicalDevice : return "PhysicalDevice"; + case DebugReportObjectTypeEXT::eDevice : return "Device"; + case DebugReportObjectTypeEXT::eQueue : return "Queue"; + case DebugReportObjectTypeEXT::eSemaphore : return "Semaphore"; + case DebugReportObjectTypeEXT::eCommandBuffer : return "CommandBuffer"; + case DebugReportObjectTypeEXT::eFence : return "Fence"; + case DebugReportObjectTypeEXT::eDeviceMemory : return "DeviceMemory"; + case DebugReportObjectTypeEXT::eBuffer : return "Buffer"; + case DebugReportObjectTypeEXT::eImage : return "Image"; + case DebugReportObjectTypeEXT::eEvent : return "Event"; + case DebugReportObjectTypeEXT::eQueryPool : return "QueryPool"; + case DebugReportObjectTypeEXT::eBufferView : return "BufferView"; + case DebugReportObjectTypeEXT::eImageView : return "ImageView"; + case DebugReportObjectTypeEXT::eShaderModule : return "ShaderModule"; + case DebugReportObjectTypeEXT::ePipelineCache : return "PipelineCache"; + case DebugReportObjectTypeEXT::ePipelineLayout : return "PipelineLayout"; + case DebugReportObjectTypeEXT::eRenderPass : return "RenderPass"; + case DebugReportObjectTypeEXT::ePipeline : return "Pipeline"; + case DebugReportObjectTypeEXT::eDescriptorSetLayout : return "DescriptorSetLayout"; + case DebugReportObjectTypeEXT::eSampler : return "Sampler"; + case DebugReportObjectTypeEXT::eDescriptorPool : return "DescriptorPool"; + case DebugReportObjectTypeEXT::eDescriptorSet : return "DescriptorSet"; + case DebugReportObjectTypeEXT::eFramebuffer : return "Framebuffer"; + case DebugReportObjectTypeEXT::eCommandPool : return "CommandPool"; + case DebugReportObjectTypeEXT::eSurfaceKHR : return "SurfaceKHR"; + case DebugReportObjectTypeEXT::eSwapchainKHR : return "SwapchainKHR"; + case DebugReportObjectTypeEXT::eDebugReportCallbackEXT : return "DebugReportCallbackEXT"; + case DebugReportObjectTypeEXT::eDisplayKHR : return "DisplayKHR"; + case DebugReportObjectTypeEXT::eDisplayModeKHR : return "DisplayModeKHR"; + case DebugReportObjectTypeEXT::eValidationCacheEXT : return "ValidationCacheEXT"; + case DebugReportObjectTypeEXT::eSamplerYcbcrConversion : return "SamplerYcbcrConversion"; + case DebugReportObjectTypeEXT::eDescriptorUpdateTemplate: return "DescriptorUpdateTemplate"; + case DebugReportObjectTypeEXT::eCuModuleNVX : return "CuModuleNVX"; + case DebugReportObjectTypeEXT::eCuFunctionNVX : return "CuFunctionNVX"; + case DebugReportObjectTypeEXT::eAccelerationStructureKHR: return "AccelerationStructureKHR"; + case DebugReportObjectTypeEXT::eAccelerationStructureNV : return "AccelerationStructureNV"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case DebugReportObjectTypeEXT::eCudaModuleNV : return "CudaModuleNV"; + case DebugReportObjectTypeEXT::eCudaFunctionNV: return "CudaFunctionNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ +#if defined( VK_USE_PLATFORM_FUCHSIA ) + case DebugReportObjectTypeEXT::eBufferCollectionFUCHSIA: return "BufferCollectionFUCHSIA"; +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + default: return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_AMD_rasterization_order === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( RasterizationOrderAMD value ) + { + switch ( value ) + { + case RasterizationOrderAMD::eStrict : return "Strict"; + case RasterizationOrderAMD::eRelaxed: return "Relaxed"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_video_queue === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoCodecOperationFlagBitsKHR value ) + { + switch ( value ) + { + case VideoCodecOperationFlagBitsKHR::eNone : return "None"; + case VideoCodecOperationFlagBitsKHR::eEncodeH264: return "EncodeH264"; + case VideoCodecOperationFlagBitsKHR::eEncodeH265: return "EncodeH265"; + case VideoCodecOperationFlagBitsKHR::eDecodeH264: return "DecodeH264"; + case VideoCodecOperationFlagBitsKHR::eDecodeH265: return "DecodeH265"; + case VideoCodecOperationFlagBitsKHR::eDecodeAv1 : return "DecodeAv1"; + case VideoCodecOperationFlagBitsKHR::eEncodeAv1 : return "EncodeAv1"; + case VideoCodecOperationFlagBitsKHR::eDecodeVp9 : return "DecodeVp9"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoChromaSubsamplingFlagBitsKHR value ) + { + switch ( value ) + { + case VideoChromaSubsamplingFlagBitsKHR::eInvalid : return "Invalid"; + case VideoChromaSubsamplingFlagBitsKHR::eMonochrome: return "Monochrome"; + case VideoChromaSubsamplingFlagBitsKHR::e420 : return "420"; + case VideoChromaSubsamplingFlagBitsKHR::e422 : return "422"; + case VideoChromaSubsamplingFlagBitsKHR::e444 : return "444"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoComponentBitDepthFlagBitsKHR value ) + { + switch ( value ) + { + case VideoComponentBitDepthFlagBitsKHR::eInvalid: return "Invalid"; + case VideoComponentBitDepthFlagBitsKHR::e8 : return "8"; + case VideoComponentBitDepthFlagBitsKHR::e10 : return "10"; + case VideoComponentBitDepthFlagBitsKHR::e12 : return "12"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoCapabilityFlagBitsKHR value ) + { + switch ( value ) + { + case VideoCapabilityFlagBitsKHR::eProtectedContent : return "ProtectedContent"; + case VideoCapabilityFlagBitsKHR::eSeparateReferenceImages: return "SeparateReferenceImages"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoSessionCreateFlagBitsKHR value ) + { + switch ( value ) + { + case VideoSessionCreateFlagBitsKHR::eProtectedContent : return "ProtectedContent"; + case VideoSessionCreateFlagBitsKHR::eAllowEncodeParameterOptimizations: return "AllowEncodeParameterOptimizations"; + case VideoSessionCreateFlagBitsKHR::eInlineQueries : return "InlineQueries"; + case VideoSessionCreateFlagBitsKHR::eAllowEncodeQuantizationDeltaMap : return "AllowEncodeQuantizationDeltaMap"; + case VideoSessionCreateFlagBitsKHR::eAllowEncodeEmphasisMap : return "AllowEncodeEmphasisMap"; + case VideoSessionCreateFlagBitsKHR::eInlineSessionParameters : return "InlineSessionParameters"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoCodingControlFlagBitsKHR value ) + { + switch ( value ) + { + case VideoCodingControlFlagBitsKHR::eReset : return "Reset"; + case VideoCodingControlFlagBitsKHR::eEncodeRateControl : return "EncodeRateControl"; + case VideoCodingControlFlagBitsKHR::eEncodeQualityLevel: return "EncodeQualityLevel"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( QueryResultStatusKHR value ) + { + switch ( value ) + { + case QueryResultStatusKHR::eError : return "Error"; + case QueryResultStatusKHR::eNotReady : return "NotReady"; + case QueryResultStatusKHR::eComplete : return "Complete"; + case QueryResultStatusKHR::eInsufficientBitstreamBufferRange: return "InsufficientBitstreamBufferRange"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoSessionParametersCreateFlagBitsKHR value ) + { + switch ( value ) + { + case VideoSessionParametersCreateFlagBitsKHR::eQuantizationMapCompatible: return "QuantizationMapCompatible"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoBeginCodingFlagBitsKHR ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEndCodingFlagBitsKHR ) + { + return "(void)"; + } + + //=== VK_KHR_video_decode_queue === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoDecodeCapabilityFlagBitsKHR value ) + { + switch ( value ) + { + case VideoDecodeCapabilityFlagBitsKHR::eDpbAndOutputCoincide: return "DpbAndOutputCoincide"; + case VideoDecodeCapabilityFlagBitsKHR::eDpbAndOutputDistinct: return "DpbAndOutputDistinct"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoDecodeUsageFlagBitsKHR value ) + { + switch ( value ) + { + case VideoDecodeUsageFlagBitsKHR::eDefault : return "Default"; + case VideoDecodeUsageFlagBitsKHR::eTranscoding: return "Transcoding"; + case VideoDecodeUsageFlagBitsKHR::eOffline : return "Offline"; + case VideoDecodeUsageFlagBitsKHR::eStreaming : return "Streaming"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoDecodeFlagBitsKHR ) + { + return "(void)"; + } + + //=== VK_EXT_transform_feedback === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineRasterizationStateStreamCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_KHR_video_encode_h264 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeH264CapabilityFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeH264CapabilityFlagBitsKHR::eHrdCompliance : return "HrdCompliance"; + case VideoEncodeH264CapabilityFlagBitsKHR::ePredictionWeightTableGenerated: return "PredictionWeightTableGenerated"; + case VideoEncodeH264CapabilityFlagBitsKHR::eRowUnalignedSlice : return "RowUnalignedSlice"; + case VideoEncodeH264CapabilityFlagBitsKHR::eDifferentSliceType : return "DifferentSliceType"; + case VideoEncodeH264CapabilityFlagBitsKHR::eBFrameInL0List : return "BFrameInL0List"; + case VideoEncodeH264CapabilityFlagBitsKHR::eBFrameInL1List : return "BFrameInL1List"; + case VideoEncodeH264CapabilityFlagBitsKHR::ePerPictureTypeMinMaxQp : return "PerPictureTypeMinMaxQp"; + case VideoEncodeH264CapabilityFlagBitsKHR::ePerSliceConstantQp : return "PerSliceConstantQp"; + case VideoEncodeH264CapabilityFlagBitsKHR::eGeneratePrefixNalu : return "GeneratePrefixNalu"; + case VideoEncodeH264CapabilityFlagBitsKHR::eBPictureIntraRefresh : return "BPictureIntraRefresh"; + case VideoEncodeH264CapabilityFlagBitsKHR::eMbQpDiffWraparound : return "MbQpDiffWraparound"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeH264StdFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeH264StdFlagBitsKHR::eSeparateColorPlaneFlagSet : return "SeparateColorPlaneFlagSet"; + case VideoEncodeH264StdFlagBitsKHR::eQpprimeYZeroTransformBypassFlagSet: return "QpprimeYZeroTransformBypassFlagSet"; + case VideoEncodeH264StdFlagBitsKHR::eScalingMatrixPresentFlagSet : return "ScalingMatrixPresentFlagSet"; + case VideoEncodeH264StdFlagBitsKHR::eChromaQpIndexOffset : return "ChromaQpIndexOffset"; + case VideoEncodeH264StdFlagBitsKHR::eSecondChromaQpIndexOffset : return "SecondChromaQpIndexOffset"; + case VideoEncodeH264StdFlagBitsKHR::ePicInitQpMinus26 : return "PicInitQpMinus26"; + case VideoEncodeH264StdFlagBitsKHR::eWeightedPredFlagSet : return "WeightedPredFlagSet"; + case VideoEncodeH264StdFlagBitsKHR::eWeightedBipredIdcExplicit : return "WeightedBipredIdcExplicit"; + case VideoEncodeH264StdFlagBitsKHR::eWeightedBipredIdcImplicit : return "WeightedBipredIdcImplicit"; + case VideoEncodeH264StdFlagBitsKHR::eTransform8X8ModeFlagSet : return "Transform8X8ModeFlagSet"; + case VideoEncodeH264StdFlagBitsKHR::eDirectSpatialMvPredFlagUnset : return "DirectSpatialMvPredFlagUnset"; + case VideoEncodeH264StdFlagBitsKHR::eEntropyCodingModeFlagUnset : return "EntropyCodingModeFlagUnset"; + case VideoEncodeH264StdFlagBitsKHR::eEntropyCodingModeFlagSet : return "EntropyCodingModeFlagSet"; + case VideoEncodeH264StdFlagBitsKHR::eDirect8X8InferenceFlagUnset : return "Direct8X8InferenceFlagUnset"; + case VideoEncodeH264StdFlagBitsKHR::eConstrainedIntraPredFlagSet : return "ConstrainedIntraPredFlagSet"; + case VideoEncodeH264StdFlagBitsKHR::eDeblockingFilterDisabled : return "DeblockingFilterDisabled"; + case VideoEncodeH264StdFlagBitsKHR::eDeblockingFilterEnabled : return "DeblockingFilterEnabled"; + case VideoEncodeH264StdFlagBitsKHR::eDeblockingFilterPartial : return "DeblockingFilterPartial"; + case VideoEncodeH264StdFlagBitsKHR::eSliceQpDelta : return "SliceQpDelta"; + case VideoEncodeH264StdFlagBitsKHR::eDifferentSliceQpDelta : return "DifferentSliceQpDelta"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeH264RateControlFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeH264RateControlFlagBitsKHR::eAttemptHrdCompliance : return "AttemptHrdCompliance"; + case VideoEncodeH264RateControlFlagBitsKHR::eRegularGop : return "RegularGop"; + case VideoEncodeH264RateControlFlagBitsKHR::eReferencePatternFlat : return "ReferencePatternFlat"; + case VideoEncodeH264RateControlFlagBitsKHR::eReferencePatternDyadic : return "ReferencePatternDyadic"; + case VideoEncodeH264RateControlFlagBitsKHR::eTemporalLayerPatternDyadic: return "TemporalLayerPatternDyadic"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_video_encode_h265 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeH265CapabilityFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeH265CapabilityFlagBitsKHR::eHrdCompliance : return "HrdCompliance"; + case VideoEncodeH265CapabilityFlagBitsKHR::ePredictionWeightTableGenerated: return "PredictionWeightTableGenerated"; + case VideoEncodeH265CapabilityFlagBitsKHR::eRowUnalignedSliceSegment : return "RowUnalignedSliceSegment"; + case VideoEncodeH265CapabilityFlagBitsKHR::eDifferentSliceSegmentType : return "DifferentSliceSegmentType"; + case VideoEncodeH265CapabilityFlagBitsKHR::eBFrameInL0List : return "BFrameInL0List"; + case VideoEncodeH265CapabilityFlagBitsKHR::eBFrameInL1List : return "BFrameInL1List"; + case VideoEncodeH265CapabilityFlagBitsKHR::ePerPictureTypeMinMaxQp : return "PerPictureTypeMinMaxQp"; + case VideoEncodeH265CapabilityFlagBitsKHR::ePerSliceSegmentConstantQp : return "PerSliceSegmentConstantQp"; + case VideoEncodeH265CapabilityFlagBitsKHR::eMultipleTilesPerSliceSegment : return "MultipleTilesPerSliceSegment"; + case VideoEncodeH265CapabilityFlagBitsKHR::eMultipleSliceSegmentsPerTile : return "MultipleSliceSegmentsPerTile"; + case VideoEncodeH265CapabilityFlagBitsKHR::eBPictureIntraRefresh : return "BPictureIntraRefresh"; + case VideoEncodeH265CapabilityFlagBitsKHR::eCuQpDiffWraparound : return "CuQpDiffWraparound"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeH265StdFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeH265StdFlagBitsKHR::eSeparateColorPlaneFlagSet : return "SeparateColorPlaneFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eSampleAdaptiveOffsetEnabledFlagSet : return "SampleAdaptiveOffsetEnabledFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eScalingListDataPresentFlagSet : return "ScalingListDataPresentFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::ePcmEnabledFlagSet : return "PcmEnabledFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eSpsTemporalMvpEnabledFlagSet : return "SpsTemporalMvpEnabledFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eInitQpMinus26 : return "InitQpMinus26"; + case VideoEncodeH265StdFlagBitsKHR::eWeightedPredFlagSet : return "WeightedPredFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eWeightedBipredFlagSet : return "WeightedBipredFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eLog2ParallelMergeLevelMinus2 : return "Log2ParallelMergeLevelMinus2"; + case VideoEncodeH265StdFlagBitsKHR::eSignDataHidingEnabledFlagSet : return "SignDataHidingEnabledFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eTransformSkipEnabledFlagSet : return "TransformSkipEnabledFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eTransformSkipEnabledFlagUnset : return "TransformSkipEnabledFlagUnset"; + case VideoEncodeH265StdFlagBitsKHR::ePpsSliceChromaQpOffsetsPresentFlagSet : return "PpsSliceChromaQpOffsetsPresentFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eTransquantBypassEnabledFlagSet : return "TransquantBypassEnabledFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eConstrainedIntraPredFlagSet : return "ConstrainedIntraPredFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eEntropyCodingSyncEnabledFlagSet : return "EntropyCodingSyncEnabledFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eDeblockingFilterOverrideEnabledFlagSet: return "DeblockingFilterOverrideEnabledFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eDependentSliceSegmentsEnabledFlagSet : return "DependentSliceSegmentsEnabledFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eDependentSliceSegmentFlagSet : return "DependentSliceSegmentFlagSet"; + case VideoEncodeH265StdFlagBitsKHR::eSliceQpDelta : return "SliceQpDelta"; + case VideoEncodeH265StdFlagBitsKHR::eDifferentSliceQpDelta : return "DifferentSliceQpDelta"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeH265CtbSizeFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeH265CtbSizeFlagBitsKHR::e16: return "16"; + case VideoEncodeH265CtbSizeFlagBitsKHR::e32: return "32"; + case VideoEncodeH265CtbSizeFlagBitsKHR::e64: return "64"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeH265TransformBlockSizeFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeH265TransformBlockSizeFlagBitsKHR::e4 : return "4"; + case VideoEncodeH265TransformBlockSizeFlagBitsKHR::e8 : return "8"; + case VideoEncodeH265TransformBlockSizeFlagBitsKHR::e16: return "16"; + case VideoEncodeH265TransformBlockSizeFlagBitsKHR::e32: return "32"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeH265RateControlFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeH265RateControlFlagBitsKHR::eAttemptHrdCompliance : return "AttemptHrdCompliance"; + case VideoEncodeH265RateControlFlagBitsKHR::eRegularGop : return "RegularGop"; + case VideoEncodeH265RateControlFlagBitsKHR::eReferencePatternFlat : return "ReferencePatternFlat"; + case VideoEncodeH265RateControlFlagBitsKHR::eReferencePatternDyadic : return "ReferencePatternDyadic"; + case VideoEncodeH265RateControlFlagBitsKHR::eTemporalSubLayerPatternDyadic: return "TemporalSubLayerPatternDyadic"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_video_decode_h264 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoDecodeH264PictureLayoutFlagBitsKHR value ) + { + switch ( value ) + { + case VideoDecodeH264PictureLayoutFlagBitsKHR::eProgressive : return "Progressive"; + case VideoDecodeH264PictureLayoutFlagBitsKHR::eInterlacedInterleavedLines: return "InterlacedInterleavedLines"; + case VideoDecodeH264PictureLayoutFlagBitsKHR::eInterlacedSeparatePlanes : return "InterlacedSeparatePlanes"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_AMD_shader_info === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderInfoTypeAMD value ) + { + switch ( value ) + { + case ShaderInfoTypeAMD::eStatistics : return "Statistics"; + case ShaderInfoTypeAMD::eBinary : return "Binary"; + case ShaderInfoTypeAMD::eDisassembly: return "Disassembly"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_GGP ) + //=== VK_GGP_stream_descriptor_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( StreamDescriptorSurfaceCreateFlagBitsGGP ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_GGP*/ + + //=== VK_NV_external_memory_capabilities === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ExternalMemoryHandleTypeFlagBitsNV value ) + { + switch ( value ) + { + case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32 : return "OpaqueWin32"; + case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt"; + case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image : return "D3D11Image"; + case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt : return "D3D11ImageKmt"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ExternalMemoryFeatureFlagBitsNV value ) + { + switch ( value ) + { + case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly"; + case ExternalMemoryFeatureFlagBitsNV::eExportable : return "Exportable"; + case ExternalMemoryFeatureFlagBitsNV::eImportable : return "Importable"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_validation_flags === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ValidationCheckEXT value ) + { + switch ( value ) + { + case ValidationCheckEXT::eAll : return "All"; + case ValidationCheckEXT::eShaders: return "Shaders"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_VI_NN ) + //=== VK_NN_vi_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ViSurfaceCreateFlagBitsNN ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_VI_NN*/ + + //=== VK_EXT_conditional_rendering === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ConditionalRenderingFlagBitsEXT value ) + { + switch ( value ) + { + case ConditionalRenderingFlagBitsEXT::eInverted: return "Inverted"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_display_surface_counter === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SurfaceCounterFlagBitsEXT value ) + { + switch ( value ) + { + case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_display_control === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DisplayPowerStateEXT value ) + { + switch ( value ) + { + case DisplayPowerStateEXT::eOff : return "Off"; + case DisplayPowerStateEXT::eSuspend: return "Suspend"; + case DisplayPowerStateEXT::eOn : return "On"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceEventTypeEXT value ) + { + switch ( value ) + { + case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DisplayEventTypeEXT value ) + { + switch ( value ) + { + case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_viewport_swizzle === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ViewportCoordinateSwizzleNV value ) + { + switch ( value ) + { + case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX"; + case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX"; + case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY"; + case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY"; + case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ"; + case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ"; + case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW"; + case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineViewportSwizzleStateCreateFlagBitsNV ) + { + return "(void)"; + } + + //=== VK_EXT_discard_rectangles === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DiscardRectangleModeEXT value ) + { + switch ( value ) + { + case DiscardRectangleModeEXT::eInclusive: return "Inclusive"; + case DiscardRectangleModeEXT::eExclusive: return "Exclusive"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineDiscardRectangleStateCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_EXT_conservative_rasterization === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ConservativeRasterizationModeEXT value ) + { + switch ( value ) + { + case ConservativeRasterizationModeEXT::eDisabled : return "Disabled"; + case ConservativeRasterizationModeEXT::eOverestimate : return "Overestimate"; + case ConservativeRasterizationModeEXT::eUnderestimate: return "Underestimate"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineRasterizationConservativeStateCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_EXT_depth_clip_enable === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineRasterizationDepthClipStateCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_KHR_performance_query === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PerformanceCounterDescriptionFlagBitsKHR value ) + { + switch ( value ) + { + case PerformanceCounterDescriptionFlagBitsKHR::ePerformanceImpacting: return "PerformanceImpacting"; + case PerformanceCounterDescriptionFlagBitsKHR::eConcurrentlyImpacted: return "ConcurrentlyImpacted"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PerformanceCounterScopeKHR value ) + { + switch ( value ) + { + case PerformanceCounterScopeKHR::eCommandBuffer: return "CommandBuffer"; + case PerformanceCounterScopeKHR::eRenderPass : return "RenderPass"; + case PerformanceCounterScopeKHR::eCommand : return "Command"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PerformanceCounterStorageKHR value ) + { + switch ( value ) + { + case PerformanceCounterStorageKHR::eInt32 : return "Int32"; + case PerformanceCounterStorageKHR::eInt64 : return "Int64"; + case PerformanceCounterStorageKHR::eUint32 : return "Uint32"; + case PerformanceCounterStorageKHR::eUint64 : return "Uint64"; + case PerformanceCounterStorageKHR::eFloat32: return "Float32"; + case PerformanceCounterStorageKHR::eFloat64: return "Float64"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PerformanceCounterUnitKHR value ) + { + switch ( value ) + { + case PerformanceCounterUnitKHR::eGeneric : return "Generic"; + case PerformanceCounterUnitKHR::ePercentage : return "Percentage"; + case PerformanceCounterUnitKHR::eNanoseconds : return "Nanoseconds"; + case PerformanceCounterUnitKHR::eBytes : return "Bytes"; + case PerformanceCounterUnitKHR::eBytesPerSecond: return "BytesPerSecond"; + case PerformanceCounterUnitKHR::eKelvin : return "Kelvin"; + case PerformanceCounterUnitKHR::eWatts : return "Watts"; + case PerformanceCounterUnitKHR::eVolts : return "Volts"; + case PerformanceCounterUnitKHR::eAmps : return "Amps"; + case PerformanceCounterUnitKHR::eHertz : return "Hertz"; + case PerformanceCounterUnitKHR::eCycles : return "Cycles"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AcquireProfilingLockFlagBitsKHR ) + { + return "(void)"; + } + +#if defined( VK_USE_PLATFORM_IOS_MVK ) + //=== VK_MVK_ios_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( IOSSurfaceCreateFlagBitsMVK ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_IOS_MVK*/ + +#if defined( VK_USE_PLATFORM_MACOS_MVK ) + //=== VK_MVK_macos_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MacOSSurfaceCreateFlagBitsMVK ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_MACOS_MVK*/ + + //=== VK_EXT_debug_utils === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DebugUtilsMessageSeverityFlagBitsEXT value ) + { + switch ( value ) + { + case DebugUtilsMessageSeverityFlagBitsEXT::eVerbose: return "Verbose"; + case DebugUtilsMessageSeverityFlagBitsEXT::eInfo : return "Info"; + case DebugUtilsMessageSeverityFlagBitsEXT::eWarning: return "Warning"; + case DebugUtilsMessageSeverityFlagBitsEXT::eError : return "Error"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DebugUtilsMessageTypeFlagBitsEXT value ) + { + switch ( value ) + { + case DebugUtilsMessageTypeFlagBitsEXT::eGeneral : return "General"; + case DebugUtilsMessageTypeFlagBitsEXT::eValidation : return "Validation"; + case DebugUtilsMessageTypeFlagBitsEXT::ePerformance : return "Performance"; + case DebugUtilsMessageTypeFlagBitsEXT::eDeviceAddressBinding: return "DeviceAddressBinding"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DebugUtilsMessengerCallbackDataFlagBitsEXT ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DebugUtilsMessengerCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_EXT_descriptor_heap === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DescriptorMappingSourceEXT value ) + { + switch ( value ) + { + case DescriptorMappingSourceEXT::eHeapWithConstantOffset : return "HeapWithConstantOffset"; + case DescriptorMappingSourceEXT::eHeapWithPushIndex : return "HeapWithPushIndex"; + case DescriptorMappingSourceEXT::eHeapWithIndirectIndex : return "HeapWithIndirectIndex"; + case DescriptorMappingSourceEXT::eHeapWithIndirectIndexArray: return "HeapWithIndirectIndexArray"; + case DescriptorMappingSourceEXT::eResourceHeapData : return "ResourceHeapData"; + case DescriptorMappingSourceEXT::ePushData : return "PushData"; + case DescriptorMappingSourceEXT::ePushAddress : return "PushAddress"; + case DescriptorMappingSourceEXT::eIndirectAddress : return "IndirectAddress"; + case DescriptorMappingSourceEXT::eHeapWithShaderRecordIndex : return "HeapWithShaderRecordIndex"; + case DescriptorMappingSourceEXT::eShaderRecordData : return "ShaderRecordData"; + case DescriptorMappingSourceEXT::eShaderRecordAddress : return "ShaderRecordAddress"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SpirvResourceTypeFlagBitsEXT value ) + { + switch ( value ) + { + case SpirvResourceTypeFlagBitsEXT::eAll : return "All"; + case SpirvResourceTypeFlagBitsEXT::eSampler : return "Sampler"; + case SpirvResourceTypeFlagBitsEXT::eSampledImage : return "SampledImage"; + case SpirvResourceTypeFlagBitsEXT::eReadOnlyImage : return "ReadOnlyImage"; + case SpirvResourceTypeFlagBitsEXT::eReadWriteImage : return "ReadWriteImage"; + case SpirvResourceTypeFlagBitsEXT::eCombinedSampledImage : return "CombinedSampledImage"; + case SpirvResourceTypeFlagBitsEXT::eUniformBuffer : return "UniformBuffer"; + case SpirvResourceTypeFlagBitsEXT::eReadOnlyStorageBuffer : return "ReadOnlyStorageBuffer"; + case SpirvResourceTypeFlagBitsEXT::eReadWriteStorageBuffer: return "ReadWriteStorageBuffer"; + case SpirvResourceTypeFlagBitsEXT::eAccelerationStructure : return "AccelerationStructure"; + case SpirvResourceTypeFlagBitsEXT::eTensorARM : return "TensorARM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( TensorViewCreateFlagBitsARM value ) + { + switch ( value ) + { + case TensorViewCreateFlagBitsARM::eDescriptorBufferCaptureReplay: return "DescriptorBufferCaptureReplay"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_blend_operation_advanced === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BlendOverlapEXT value ) + { + switch ( value ) + { + case BlendOverlapEXT::eUncorrelated: return "Uncorrelated"; + case BlendOverlapEXT::eDisjoint : return "Disjoint"; + case BlendOverlapEXT::eConjoint : return "Conjoint"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_fragment_coverage_to_color === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCoverageToColorStateCreateFlagBitsNV ) + { + return "(void)"; + } + + //=== VK_KHR_acceleration_structure === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccelerationStructureTypeKHR value ) + { + switch ( value ) + { + case AccelerationStructureTypeKHR::eTopLevel : return "TopLevel"; + case AccelerationStructureTypeKHR::eBottomLevel: return "BottomLevel"; + case AccelerationStructureTypeKHR::eGeneric : return "Generic"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccelerationStructureBuildTypeKHR value ) + { + switch ( value ) + { + case AccelerationStructureBuildTypeKHR::eHost : return "Host"; + case AccelerationStructureBuildTypeKHR::eDevice : return "Device"; + case AccelerationStructureBuildTypeKHR::eHostOrDevice: return "HostOrDevice"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( GeometryFlagBitsKHR value ) + { + switch ( value ) + { + case GeometryFlagBitsKHR::eOpaque : return "Opaque"; + case GeometryFlagBitsKHR::eNoDuplicateAnyHitInvocation: return "NoDuplicateAnyHitInvocation"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( GeometryInstanceFlagBitsKHR value ) + { + switch ( value ) + { + case GeometryInstanceFlagBitsKHR::eTriangleFacingCullDisable : return "TriangleFacingCullDisable"; + case GeometryInstanceFlagBitsKHR::eTriangleFlipFacing : return "TriangleFlipFacing"; + case GeometryInstanceFlagBitsKHR::eForceOpaque : return "ForceOpaque"; + case GeometryInstanceFlagBitsKHR::eForceNoOpaque : return "ForceNoOpaque"; + case GeometryInstanceFlagBitsKHR::eForceOpacityMicromap2StateEXT: return "ForceOpacityMicromap2StateEXT"; + case GeometryInstanceFlagBitsKHR::eDisableOpacityMicromapsEXT : return "DisableOpacityMicromapsEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BuildAccelerationStructureFlagBitsKHR value ) + { + switch ( value ) + { + case BuildAccelerationStructureFlagBitsKHR::eAllowUpdate : return "AllowUpdate"; + case BuildAccelerationStructureFlagBitsKHR::eAllowCompaction : return "AllowCompaction"; + case BuildAccelerationStructureFlagBitsKHR::ePreferFastTrace : return "PreferFastTrace"; + case BuildAccelerationStructureFlagBitsKHR::ePreferFastBuild : return "PreferFastBuild"; + case BuildAccelerationStructureFlagBitsKHR::eLowMemory : return "LowMemory"; + case BuildAccelerationStructureFlagBitsKHR::eMotionNV : return "MotionNV"; + case BuildAccelerationStructureFlagBitsKHR::eAllowOpacityMicromapUpdateEXT : return "AllowOpacityMicromapUpdateEXT"; + case BuildAccelerationStructureFlagBitsKHR::eAllowDisableOpacityMicromapsEXT : return "AllowDisableOpacityMicromapsEXT"; + case BuildAccelerationStructureFlagBitsKHR::eAllowOpacityMicromapDataUpdateEXT: return "AllowOpacityMicromapDataUpdateEXT"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case BuildAccelerationStructureFlagBitsKHR::eAllowDisplacementMicromapUpdateNV: return "AllowDisplacementMicromapUpdateNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + case BuildAccelerationStructureFlagBitsKHR::eAllowDataAccess : return "AllowDataAccess"; + case BuildAccelerationStructureFlagBitsKHR::eAllowClusterOpacityMicromapsNV: return "AllowClusterOpacityMicromapsNV"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CopyAccelerationStructureModeKHR value ) + { + switch ( value ) + { + case CopyAccelerationStructureModeKHR::eClone : return "Clone"; + case CopyAccelerationStructureModeKHR::eCompact : return "Compact"; + case CopyAccelerationStructureModeKHR::eSerialize : return "Serialize"; + case CopyAccelerationStructureModeKHR::eDeserialize: return "Deserialize"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( GeometryTypeKHR value ) + { + switch ( value ) + { + case GeometryTypeKHR::eTriangles : return "Triangles"; + case GeometryTypeKHR::eAabbs : return "Aabbs"; + case GeometryTypeKHR::eInstances : return "Instances"; + case GeometryTypeKHR::eSpheresNV : return "SpheresNV"; + case GeometryTypeKHR::eLinearSweptSpheresNV: return "LinearSweptSpheresNV"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case GeometryTypeKHR::eDenseGeometryFormatTrianglesAMDX: return "DenseGeometryFormatTrianglesAMDX"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + default: return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccelerationStructureCompatibilityKHR value ) + { + switch ( value ) + { + case AccelerationStructureCompatibilityKHR::eCompatible : return "Compatible"; + case AccelerationStructureCompatibilityKHR::eIncompatible: return "Incompatible"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccelerationStructureCreateFlagBitsKHR value ) + { + switch ( value ) + { + case AccelerationStructureCreateFlagBitsKHR::eDeviceAddressCaptureReplay : return "DeviceAddressCaptureReplay"; + case AccelerationStructureCreateFlagBitsKHR::eDescriptorBufferCaptureReplayEXT: return "DescriptorBufferCaptureReplayEXT"; + case AccelerationStructureCreateFlagBitsKHR::eMotionNV : return "MotionNV"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BuildAccelerationStructureModeKHR value ) + { + switch ( value ) + { + case BuildAccelerationStructureModeKHR::eBuild : return "Build"; + case BuildAccelerationStructureModeKHR::eUpdate: return "Update"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_ray_tracing_pipeline === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( RayTracingShaderGroupTypeKHR value ) + { + switch ( value ) + { + case RayTracingShaderGroupTypeKHR::eGeneral : return "General"; + case RayTracingShaderGroupTypeKHR::eTrianglesHitGroup : return "TrianglesHitGroup"; + case RayTracingShaderGroupTypeKHR::eProceduralHitGroup: return "ProceduralHitGroup"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderGroupShaderKHR value ) + { + switch ( value ) + { + case ShaderGroupShaderKHR::eGeneral : return "General"; + case ShaderGroupShaderKHR::eClosestHit : return "ClosestHit"; + case ShaderGroupShaderKHR::eAnyHit : return "AnyHit"; + case ShaderGroupShaderKHR::eIntersection: return "Intersection"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_framebuffer_mixed_samples === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CoverageModulationModeNV value ) + { + switch ( value ) + { + case CoverageModulationModeNV::eNone : return "None"; + case CoverageModulationModeNV::eRgb : return "Rgb"; + case CoverageModulationModeNV::eAlpha: return "Alpha"; + case CoverageModulationModeNV::eRgba : return "Rgba"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCoverageModulationStateCreateFlagBitsNV ) + { + return "(void)"; + } + + //=== VK_EXT_validation_cache === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ValidationCacheHeaderVersionEXT value ) + { + switch ( value ) + { + case ValidationCacheHeaderVersionEXT::eOne: return "One"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ValidationCacheCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_NV_shading_rate_image === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShadingRatePaletteEntryNV value ) + { + switch ( value ) + { + case ShadingRatePaletteEntryNV::eNoInvocations : return "NoInvocations"; + case ShadingRatePaletteEntryNV::e16InvocationsPerPixel : return "16InvocationsPerPixel"; + case ShadingRatePaletteEntryNV::e8InvocationsPerPixel : return "8InvocationsPerPixel"; + case ShadingRatePaletteEntryNV::e4InvocationsPerPixel : return "4InvocationsPerPixel"; + case ShadingRatePaletteEntryNV::e2InvocationsPerPixel : return "2InvocationsPerPixel"; + case ShadingRatePaletteEntryNV::e1InvocationPerPixel : return "1InvocationPerPixel"; + case ShadingRatePaletteEntryNV::e1InvocationPer2X1Pixels: return "1InvocationPer2X1Pixels"; + case ShadingRatePaletteEntryNV::e1InvocationPer1X2Pixels: return "1InvocationPer1X2Pixels"; + case ShadingRatePaletteEntryNV::e1InvocationPer2X2Pixels: return "1InvocationPer2X2Pixels"; + case ShadingRatePaletteEntryNV::e1InvocationPer4X2Pixels: return "1InvocationPer4X2Pixels"; + case ShadingRatePaletteEntryNV::e1InvocationPer2X4Pixels: return "1InvocationPer2X4Pixels"; + case ShadingRatePaletteEntryNV::e1InvocationPer4X4Pixels: return "1InvocationPer4X4Pixels"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CoarseSampleOrderTypeNV value ) + { + switch ( value ) + { + case CoarseSampleOrderTypeNV::eDefault : return "Default"; + case CoarseSampleOrderTypeNV::eCustom : return "Custom"; + case CoarseSampleOrderTypeNV::ePixelMajor : return "PixelMajor"; + case CoarseSampleOrderTypeNV::eSampleMajor: return "SampleMajor"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_ray_tracing === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccelerationStructureMemoryRequirementsTypeNV value ) + { + switch ( value ) + { + case AccelerationStructureMemoryRequirementsTypeNV::eObject : return "Object"; + case AccelerationStructureMemoryRequirementsTypeNV::eBuildScratch : return "BuildScratch"; + case AccelerationStructureMemoryRequirementsTypeNV::eUpdateScratch: return "UpdateScratch"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_AMD_pipeline_compiler_control === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCompilerControlFlagBitsAMD ) + { + return "(void)"; + } + + //=== VK_AMD_memory_overallocation_behavior === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MemoryOverallocationBehaviorAMD value ) + { + switch ( value ) + { + case MemoryOverallocationBehaviorAMD::eDefault : return "Default"; + case MemoryOverallocationBehaviorAMD::eAllowed : return "Allowed"; + case MemoryOverallocationBehaviorAMD::eDisallowed: return "Disallowed"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_present_timing === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PresentStageFlagBitsEXT value ) + { + switch ( value ) + { + case PresentStageFlagBitsEXT::eQueueOperationsEnd : return "QueueOperationsEnd"; + case PresentStageFlagBitsEXT::eRequestDequeued : return "RequestDequeued"; + case PresentStageFlagBitsEXT::eImageFirstPixelOut : return "ImageFirstPixelOut"; + case PresentStageFlagBitsEXT::eImageFirstPixelVisible: return "ImageFirstPixelVisible"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PresentTimingInfoFlagBitsEXT value ) + { + switch ( value ) + { + case PresentTimingInfoFlagBitsEXT::ePresentAtRelativeTime : return "PresentAtRelativeTime"; + case PresentTimingInfoFlagBitsEXT::ePresentAtNearestRefreshCycle: return "PresentAtNearestRefreshCycle"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PastPresentationTimingFlagBitsEXT value ) + { + switch ( value ) + { + case PastPresentationTimingFlagBitsEXT::eAllowPartialResults : return "AllowPartialResults"; + case PastPresentationTimingFlagBitsEXT::eAllowOutOfOrderResults: return "AllowOutOfOrderResults"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_INTEL_performance_query === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PerformanceConfigurationTypeINTEL value ) + { + switch ( value ) + { + case PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated: return "CommandQueueMetricsDiscoveryActivated"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( QueryPoolSamplingModeINTEL value ) + { + switch ( value ) + { + case QueryPoolSamplingModeINTEL::eManual: return "Manual"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PerformanceOverrideTypeINTEL value ) + { + switch ( value ) + { + case PerformanceOverrideTypeINTEL::eNullHardware : return "NullHardware"; + case PerformanceOverrideTypeINTEL::eFlushGpuCaches: return "FlushGpuCaches"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PerformanceParameterTypeINTEL value ) + { + switch ( value ) + { + case PerformanceParameterTypeINTEL::eHwCountersSupported : return "HwCountersSupported"; + case PerformanceParameterTypeINTEL::eStreamMarkerValidBits: return "StreamMarkerValidBits"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PerformanceValueTypeINTEL value ) + { + switch ( value ) + { + case PerformanceValueTypeINTEL::eUint32: return "Uint32"; + case PerformanceValueTypeINTEL::eUint64: return "Uint64"; + case PerformanceValueTypeINTEL::eFloat : return "Float"; + case PerformanceValueTypeINTEL::eBool : return "Bool"; + case PerformanceValueTypeINTEL::eString: return "String"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_imagepipe_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImagePipeSurfaceCreateFlagBitsFUCHSIA ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MetalSurfaceCreateFlagBitsEXT ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_fragment_shading_rate === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FragmentShadingRateCombinerOpKHR value ) + { + switch ( value ) + { + case FragmentShadingRateCombinerOpKHR::eKeep : return "Keep"; + case FragmentShadingRateCombinerOpKHR::eReplace: return "Replace"; + case FragmentShadingRateCombinerOpKHR::eMin : return "Min"; + case FragmentShadingRateCombinerOpKHR::eMax : return "Max"; + case FragmentShadingRateCombinerOpKHR::eMul : return "Mul"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_AMD_shader_core_properties2 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderCorePropertiesFlagBitsAMD ) + { + return "(void)"; + } + + //=== VK_EXT_validation_features === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ValidationFeatureEnableEXT value ) + { + switch ( value ) + { + case ValidationFeatureEnableEXT::eGpuAssisted : return "GpuAssisted"; + case ValidationFeatureEnableEXT::eGpuAssistedReserveBindingSlot: return "GpuAssistedReserveBindingSlot"; + case ValidationFeatureEnableEXT::eBestPractices : return "BestPractices"; + case ValidationFeatureEnableEXT::eDebugPrintf : return "DebugPrintf"; + case ValidationFeatureEnableEXT::eSynchronizationValidation : return "SynchronizationValidation"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ValidationFeatureDisableEXT value ) + { + switch ( value ) + { + case ValidationFeatureDisableEXT::eAll : return "All"; + case ValidationFeatureDisableEXT::eShaders : return "Shaders"; + case ValidationFeatureDisableEXT::eThreadSafety : return "ThreadSafety"; + case ValidationFeatureDisableEXT::eApiParameters : return "ApiParameters"; + case ValidationFeatureDisableEXT::eObjectLifetimes : return "ObjectLifetimes"; + case ValidationFeatureDisableEXT::eCoreChecks : return "CoreChecks"; + case ValidationFeatureDisableEXT::eUniqueHandles : return "UniqueHandles"; + case ValidationFeatureDisableEXT::eShaderValidationCache: return "ShaderValidationCache"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_coverage_reduction_mode === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CoverageReductionModeNV value ) + { + switch ( value ) + { + case CoverageReductionModeNV::eMerge : return "Merge"; + case CoverageReductionModeNV::eTruncate: return "Truncate"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineCoverageReductionStateCreateFlagBitsNV ) + { + return "(void)"; + } + + //=== VK_EXT_provoking_vertex === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ProvokingVertexModeEXT value ) + { + switch ( value ) + { + case ProvokingVertexModeEXT::eFirstVertex: return "FirstVertex"; + case ProvokingVertexModeEXT::eLastVertex : return "LastVertex"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_WIN32_KHR ) + //=== VK_EXT_full_screen_exclusive === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FullScreenExclusiveEXT value ) + { + switch ( value ) + { + case FullScreenExclusiveEXT::eDefault : return "Default"; + case FullScreenExclusiveEXT::eAllowed : return "Allowed"; + case FullScreenExclusiveEXT::eDisallowed : return "Disallowed"; + case FullScreenExclusiveEXT::eApplicationControlled: return "ApplicationControlled"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } +#endif /*VK_USE_PLATFORM_WIN32_KHR*/ + + //=== VK_EXT_headless_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( HeadlessSurfaceCreateFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_KHR_pipeline_executable_properties === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PipelineExecutableStatisticFormatKHR value ) + { + switch ( value ) + { + case PipelineExecutableStatisticFormatKHR::eBool32 : return "Bool32"; + case PipelineExecutableStatisticFormatKHR::eInt64 : return "Int64"; + case PipelineExecutableStatisticFormatKHR::eUint64 : return "Uint64"; + case PipelineExecutableStatisticFormatKHR::eFloat64: return "Float64"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_device_generated_commands === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( IndirectStateFlagBitsNV value ) + { + switch ( value ) + { + case IndirectStateFlagBitsNV::eFlagFrontface: return "FlagFrontface"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( IndirectCommandsTokenTypeNV value ) + { + switch ( value ) + { + case IndirectCommandsTokenTypeNV::eShaderGroup : return "ShaderGroup"; + case IndirectCommandsTokenTypeNV::eStateFlags : return "StateFlags"; + case IndirectCommandsTokenTypeNV::eIndexBuffer : return "IndexBuffer"; + case IndirectCommandsTokenTypeNV::eVertexBuffer : return "VertexBuffer"; + case IndirectCommandsTokenTypeNV::ePushConstant : return "PushConstant"; + case IndirectCommandsTokenTypeNV::eDrawIndexed : return "DrawIndexed"; + case IndirectCommandsTokenTypeNV::eDraw : return "Draw"; + case IndirectCommandsTokenTypeNV::eDrawTasks : return "DrawTasks"; + case IndirectCommandsTokenTypeNV::ePushData : return "PushData"; + case IndirectCommandsTokenTypeNV::eDrawMeshTasks: return "DrawMeshTasks"; + case IndirectCommandsTokenTypeNV::ePipeline : return "Pipeline"; + case IndirectCommandsTokenTypeNV::eDispatch : return "Dispatch"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( IndirectCommandsLayoutUsageFlagBitsNV value ) + { + switch ( value ) + { + case IndirectCommandsLayoutUsageFlagBitsNV::eExplicitPreprocess: return "ExplicitPreprocess"; + case IndirectCommandsLayoutUsageFlagBitsNV::eIndexedSequences : return "IndexedSequences"; + case IndirectCommandsLayoutUsageFlagBitsNV::eUnorderedSequences: return "UnorderedSequences"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_depth_bias_control === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DepthBiasRepresentationEXT value ) + { + switch ( value ) + { + case DepthBiasRepresentationEXT::eLeastRepresentableValueFormat : return "LeastRepresentableValueFormat"; + case DepthBiasRepresentationEXT::eLeastRepresentableValueForceUnorm: return "LeastRepresentableValueForceUnorm"; + case DepthBiasRepresentationEXT::eFloat : return "Float"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_device_memory_report === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceMemoryReportEventTypeEXT value ) + { + switch ( value ) + { + case DeviceMemoryReportEventTypeEXT::eAllocate : return "Allocate"; + case DeviceMemoryReportEventTypeEXT::eFree : return "Free"; + case DeviceMemoryReportEventTypeEXT::eImport : return "Import"; + case DeviceMemoryReportEventTypeEXT::eUnimport : return "Unimport"; + case DeviceMemoryReportEventTypeEXT::eAllocationFailed: return "AllocationFailed"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceMemoryReportFlagBitsEXT ) + { + return "(void)"; + } + + //=== VK_KHR_video_encode_queue === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeCapabilityFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeCapabilityFlagBitsKHR::ePrecedingExternallyEncodedBytes : return "PrecedingExternallyEncodedBytes"; + case VideoEncodeCapabilityFlagBitsKHR::eInsufficientBitstreamBufferRangeDetection: return "InsufficientBitstreamBufferRangeDetection"; + case VideoEncodeCapabilityFlagBitsKHR::eQuantizationDeltaMap : return "QuantizationDeltaMap"; + case VideoEncodeCapabilityFlagBitsKHR::eEmphasisMap : return "EmphasisMap"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeFeedbackFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeFeedbackFlagBitsKHR::eBitstreamBufferOffset: return "BitstreamBufferOffset"; + case VideoEncodeFeedbackFlagBitsKHR::eBitstreamBytesWritten: return "BitstreamBytesWritten"; + case VideoEncodeFeedbackFlagBitsKHR::eBitstreamHasOverrides: return "BitstreamHasOverrides"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeUsageFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeUsageFlagBitsKHR::eDefault : return "Default"; + case VideoEncodeUsageFlagBitsKHR::eTranscoding : return "Transcoding"; + case VideoEncodeUsageFlagBitsKHR::eStreaming : return "Streaming"; + case VideoEncodeUsageFlagBitsKHR::eRecording : return "Recording"; + case VideoEncodeUsageFlagBitsKHR::eConferencing: return "Conferencing"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeContentFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeContentFlagBitsKHR::eDefault : return "Default"; + case VideoEncodeContentFlagBitsKHR::eCamera : return "Camera"; + case VideoEncodeContentFlagBitsKHR::eDesktop : return "Desktop"; + case VideoEncodeContentFlagBitsKHR::eRendered: return "Rendered"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeTuningModeKHR value ) + { + switch ( value ) + { + case VideoEncodeTuningModeKHR::eDefault : return "Default"; + case VideoEncodeTuningModeKHR::eHighQuality : return "HighQuality"; + case VideoEncodeTuningModeKHR::eLowLatency : return "LowLatency"; + case VideoEncodeTuningModeKHR::eUltraLowLatency: return "UltraLowLatency"; + case VideoEncodeTuningModeKHR::eLossless : return "Lossless"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeRateControlModeFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeRateControlModeFlagBitsKHR::eDefault : return "Default"; + case VideoEncodeRateControlModeFlagBitsKHR::eDisabled: return "Disabled"; + case VideoEncodeRateControlModeFlagBitsKHR::eCbr : return "Cbr"; + case VideoEncodeRateControlModeFlagBitsKHR::eVbr : return "Vbr"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeFlagBitsKHR::eIntraRefresh : return "IntraRefresh"; + case VideoEncodeFlagBitsKHR::eWithQuantizationDeltaMap: return "WithQuantizationDeltaMap"; + case VideoEncodeFlagBitsKHR::eWithEmphasisMap : return "WithEmphasisMap"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeRateControlFlagBitsKHR ) + { + return "(void)"; + } + + //=== VK_NV_device_diagnostics_config === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceDiagnosticsConfigFlagBitsNV value ) + { + switch ( value ) + { + case DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderDebugInfo : return "EnableShaderDebugInfo"; + case DeviceDiagnosticsConfigFlagBitsNV::eEnableResourceTracking : return "EnableResourceTracking"; + case DeviceDiagnosticsConfigFlagBitsNV::eEnableAutomaticCheckpoints: return "EnableAutomaticCheckpoints"; + case DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderErrorReporting: return "EnableShaderErrorReporting"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_QCOM_tile_shading === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( TileShadingRenderPassFlagBitsQCOM value ) + { + switch ( value ) + { + case TileShadingRenderPassFlagBitsQCOM::eEnable : return "Enable"; + case TileShadingRenderPassFlagBitsQCOM::ePerTileExecution: return "PerTileExecution"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_METAL_EXT ) + //=== VK_EXT_metal_objects === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ExportMetalObjectTypeFlagBitsEXT value ) + { + switch ( value ) + { + case ExportMetalObjectTypeFlagBitsEXT::eMetalDevice : return "MetalDevice"; + case ExportMetalObjectTypeFlagBitsEXT::eMetalCommandQueue: return "MetalCommandQueue"; + case ExportMetalObjectTypeFlagBitsEXT::eMetalBuffer : return "MetalBuffer"; + case ExportMetalObjectTypeFlagBitsEXT::eMetalTexture : return "MetalTexture"; + case ExportMetalObjectTypeFlagBitsEXT::eMetalIosurface : return "MetalIosurface"; + case ExportMetalObjectTypeFlagBitsEXT::eMetalSharedEvent : return "MetalSharedEvent"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } +#endif /*VK_USE_PLATFORM_METAL_EXT*/ + + //=== VK_KHR_device_address_commands === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AddressCommandFlagBitsKHR value ) + { + switch ( value ) + { + case AddressCommandFlagBitsKHR::eProtected : return "Protected"; + case AddressCommandFlagBitsKHR::eFullyBound : return "FullyBound"; + case AddressCommandFlagBitsKHR::eStorageBufferUsage : return "StorageBufferUsage"; + case AddressCommandFlagBitsKHR::eUnknownStorageBufferUsage : return "UnknownStorageBufferUsage"; + case AddressCommandFlagBitsKHR::eTransformFeedbackBufferUsage : return "TransformFeedbackBufferUsage"; + case AddressCommandFlagBitsKHR::eUnknownTransformFeedbackBufferUsage: return "UnknownTransformFeedbackBufferUsage"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_graphics_pipeline_library === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( GraphicsPipelineLibraryFlagBitsEXT value ) + { + switch ( value ) + { + case GraphicsPipelineLibraryFlagBitsEXT::eVertexInputInterface : return "VertexInputInterface"; + case GraphicsPipelineLibraryFlagBitsEXT::ePreRasterizationShaders: return "PreRasterizationShaders"; + case GraphicsPipelineLibraryFlagBitsEXT::eFragmentShader : return "FragmentShader"; + case GraphicsPipelineLibraryFlagBitsEXT::eFragmentOutputInterface: return "FragmentOutputInterface"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_fragment_shading_rate_enums === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FragmentShadingRateNV value ) + { + switch ( value ) + { + case FragmentShadingRateNV::e1InvocationPerPixel : return "1InvocationPerPixel"; + case FragmentShadingRateNV::e1InvocationPer1X2Pixels: return "1InvocationPer1X2Pixels"; + case FragmentShadingRateNV::e1InvocationPer2X1Pixels: return "1InvocationPer2X1Pixels"; + case FragmentShadingRateNV::e1InvocationPer2X2Pixels: return "1InvocationPer2X2Pixels"; + case FragmentShadingRateNV::e1InvocationPer2X4Pixels: return "1InvocationPer2X4Pixels"; + case FragmentShadingRateNV::e1InvocationPer4X2Pixels: return "1InvocationPer4X2Pixels"; + case FragmentShadingRateNV::e1InvocationPer4X4Pixels: return "1InvocationPer4X4Pixels"; + case FragmentShadingRateNV::e2InvocationsPerPixel : return "2InvocationsPerPixel"; + case FragmentShadingRateNV::e4InvocationsPerPixel : return "4InvocationsPerPixel"; + case FragmentShadingRateNV::e8InvocationsPerPixel : return "8InvocationsPerPixel"; + case FragmentShadingRateNV::e16InvocationsPerPixel : return "16InvocationsPerPixel"; + case FragmentShadingRateNV::eNoInvocations : return "NoInvocations"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FragmentShadingRateTypeNV value ) + { + switch ( value ) + { + case FragmentShadingRateTypeNV::eFragmentSize: return "FragmentSize"; + case FragmentShadingRateTypeNV::eEnums : return "Enums"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_ray_tracing_motion_blur === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccelerationStructureMotionInstanceTypeNV value ) + { + switch ( value ) + { + case AccelerationStructureMotionInstanceTypeNV::eStatic : return "Static"; + case AccelerationStructureMotionInstanceTypeNV::eMatrixMotion: return "MatrixMotion"; + case AccelerationStructureMotionInstanceTypeNV::eSrtMotion : return "SrtMotion"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccelerationStructureMotionInfoFlagBitsNV ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccelerationStructureMotionInstanceFlagBitsNV ) + { + return "(void)"; + } + + //=== VK_EXT_image_compression_control === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageCompressionFlagBitsEXT value ) + { + switch ( value ) + { + case ImageCompressionFlagBitsEXT::eDefault : return "Default"; + case ImageCompressionFlagBitsEXT::eFixedRateDefault : return "FixedRateDefault"; + case ImageCompressionFlagBitsEXT::eFixedRateExplicit: return "FixedRateExplicit"; + case ImageCompressionFlagBitsEXT::eDisabled : return "Disabled"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageCompressionFixedRateFlagBitsEXT value ) + { + switch ( value ) + { + case ImageCompressionFixedRateFlagBitsEXT::eNone : return "None"; + case ImageCompressionFixedRateFlagBitsEXT::e1Bpc : return "1Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e2Bpc : return "2Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e3Bpc : return "3Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e4Bpc : return "4Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e5Bpc : return "5Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e6Bpc : return "6Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e7Bpc : return "7Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e8Bpc : return "8Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e9Bpc : return "9Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e10Bpc: return "10Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e11Bpc: return "11Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e12Bpc: return "12Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e13Bpc: return "13Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e14Bpc: return "14Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e15Bpc: return "15Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e16Bpc: return "16Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e17Bpc: return "17Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e18Bpc: return "18Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e19Bpc: return "19Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e20Bpc: return "20Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e21Bpc: return "21Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e22Bpc: return "22Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e23Bpc: return "23Bpc"; + case ImageCompressionFixedRateFlagBitsEXT::e24Bpc: return "24Bpc"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_DIRECTFB_EXT ) + //=== VK_EXT_directfb_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DirectFBSurfaceCreateFlagBitsEXT ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ + + //=== VK_EXT_device_address_binding_report === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceAddressBindingFlagBitsEXT value ) + { + switch ( value ) + { + case DeviceAddressBindingFlagBitsEXT::eInternalObject: return "InternalObject"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceAddressBindingTypeEXT value ) + { + switch ( value ) + { + case DeviceAddressBindingTypeEXT::eBind : return "Bind"; + case DeviceAddressBindingTypeEXT::eUnbind: return "Unbind"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_FUCHSIA ) + //=== VK_FUCHSIA_buffer_collection === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageConstraintsInfoFlagBitsFUCHSIA value ) + { + switch ( value ) + { + case ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadRarely : return "CpuReadRarely"; + case ImageConstraintsInfoFlagBitsFUCHSIA::eCpuReadOften : return "CpuReadOften"; + case ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteRarely : return "CpuWriteRarely"; + case ImageConstraintsInfoFlagBitsFUCHSIA::eCpuWriteOften : return "CpuWriteOften"; + case ImageConstraintsInfoFlagBitsFUCHSIA::eProtectedOptional: return "ProtectedOptional"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ImageFormatConstraintsFlagBitsFUCHSIA ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_FUCHSIA*/ + + //=== VK_EXT_frame_boundary === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( FrameBoundaryFlagBitsEXT value ) + { + switch ( value ) + { + case FrameBoundaryFlagBitsEXT::eFrameEnd: return "FrameEnd"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_SCREEN_QNX ) + //=== VK_QNX_screen_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ScreenSurfaceCreateFlagBitsQNX ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ + + //=== VK_VALVE_video_encode_rgb_conversion === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeRgbModelConversionFlagBitsVALVE value ) + { + switch ( value ) + { + case VideoEncodeRgbModelConversionFlagBitsVALVE::eRgbIdentity : return "RgbIdentity"; + case VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcrIdentity: return "YcbcrIdentity"; + case VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcr709 : return "Ycbcr709"; + case VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcr601 : return "Ycbcr601"; + case VideoEncodeRgbModelConversionFlagBitsVALVE::eYcbcr2020 : return "Ycbcr2020"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeRgbRangeCompressionFlagBitsVALVE value ) + { + switch ( value ) + { + case VideoEncodeRgbRangeCompressionFlagBitsVALVE::eFullRange : return "FullRange"; + case VideoEncodeRgbRangeCompressionFlagBitsVALVE::eNarrowRange: return "NarrowRange"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeRgbChromaOffsetFlagBitsVALVE value ) + { + switch ( value ) + { + case VideoEncodeRgbChromaOffsetFlagBitsVALVE::eCositedEven: return "CositedEven"; + case VideoEncodeRgbChromaOffsetFlagBitsVALVE::eMidpoint : return "Midpoint"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_opacity_micromap === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MicromapTypeEXT value ) + { + switch ( value ) + { + case MicromapTypeEXT::eOpacityMicromap: return "OpacityMicromap"; +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + case MicromapTypeEXT::eDisplacementMicromapNV: return "DisplacementMicromapNV"; +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + default: return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BuildMicromapFlagBitsEXT value ) + { + switch ( value ) + { + case BuildMicromapFlagBitsEXT::ePreferFastTrace: return "PreferFastTrace"; + case BuildMicromapFlagBitsEXT::ePreferFastBuild: return "PreferFastBuild"; + case BuildMicromapFlagBitsEXT::eAllowCompaction: return "AllowCompaction"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CopyMicromapModeEXT value ) + { + switch ( value ) + { + case CopyMicromapModeEXT::eClone : return "Clone"; + case CopyMicromapModeEXT::eSerialize : return "Serialize"; + case CopyMicromapModeEXT::eDeserialize: return "Deserialize"; + case CopyMicromapModeEXT::eCompact : return "Compact"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MicromapCreateFlagBitsEXT value ) + { + switch ( value ) + { + case MicromapCreateFlagBitsEXT::eDeviceAddressCaptureReplay: return "DeviceAddressCaptureReplay"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BuildMicromapModeEXT value ) + { + switch ( value ) + { + case BuildMicromapModeEXT::eBuild: return "Build"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( OpacityMicromapFormatEXT value ) + { + switch ( value ) + { + case OpacityMicromapFormatEXT::e2State: return "2State"; + case OpacityMicromapFormatEXT::e4State: return "4State"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( OpacityMicromapSpecialIndexEXT value ) + { + switch ( value ) + { + case OpacityMicromapSpecialIndexEXT::eFullyTransparent : return "FullyTransparent"; + case OpacityMicromapSpecialIndexEXT::eFullyOpaque : return "FullyOpaque"; + case OpacityMicromapSpecialIndexEXT::eFullyUnknownTransparent : return "FullyUnknownTransparent"; + case OpacityMicromapSpecialIndexEXT::eFullyUnknownOpaque : return "FullyUnknownOpaque"; + case OpacityMicromapSpecialIndexEXT::eClusterGeometryDisableOpacityMicromapNV: return "ClusterGeometryDisableOpacityMicromapNV"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_NV_displacement_micromap === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DisplacementMicromapFormatNV value ) + { + switch ( value ) + { + case DisplacementMicromapFormatNV::e64Triangles64Bytes : return "64Triangles64Bytes"; + case DisplacementMicromapFormatNV::e256Triangles128Bytes : return "256Triangles128Bytes"; + case DisplacementMicromapFormatNV::e1024Triangles128Bytes: return "1024Triangles128Bytes"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_ARM_scheduling_controls === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PhysicalDeviceSchedulingControlsFlagBitsARM value ) + { + switch ( value ) + { + case PhysicalDeviceSchedulingControlsFlagBitsARM::eShaderCoreCount: return "ShaderCoreCount"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_ray_tracing_linear_swept_spheres === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( RayTracingLssIndexingModeNV value ) + { + switch ( value ) + { + case RayTracingLssIndexingModeNV::eList : return "List"; + case RayTracingLssIndexingModeNV::eSuccessive: return "Successive"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( RayTracingLssPrimitiveEndCapsModeNV value ) + { + switch ( value ) + { + case RayTracingLssPrimitiveEndCapsModeNV::eNone : return "None"; + case RayTracingLssPrimitiveEndCapsModeNV::eChained: return "Chained"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_subpass_merge_feedback === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SubpassMergeStatusEXT value ) + { + switch ( value ) + { + case SubpassMergeStatusEXT::eMerged : return "Merged"; + case SubpassMergeStatusEXT::eDisallowed : return "Disallowed"; + case SubpassMergeStatusEXT::eNotMergedSideEffects : return "NotMergedSideEffects"; + case SubpassMergeStatusEXT::eNotMergedSamplesMismatch : return "NotMergedSamplesMismatch"; + case SubpassMergeStatusEXT::eNotMergedViewsMismatch : return "NotMergedViewsMismatch"; + case SubpassMergeStatusEXT::eNotMergedAliasing : return "NotMergedAliasing"; + case SubpassMergeStatusEXT::eNotMergedDependencies : return "NotMergedDependencies"; + case SubpassMergeStatusEXT::eNotMergedIncompatibleInputAttachment: return "NotMergedIncompatibleInputAttachment"; + case SubpassMergeStatusEXT::eNotMergedTooManyAttachments : return "NotMergedTooManyAttachments"; + case SubpassMergeStatusEXT::eNotMergedInsufficientStorage : return "NotMergedInsufficientStorage"; + case SubpassMergeStatusEXT::eNotMergedDepthStencilCount : return "NotMergedDepthStencilCount"; + case SubpassMergeStatusEXT::eNotMergedResolveAttachmentReuse : return "NotMergedResolveAttachmentReuse"; + case SubpassMergeStatusEXT::eNotMergedSingleSubpass : return "NotMergedSingleSubpass"; + case SubpassMergeStatusEXT::eNotMergedUnspecified : return "NotMergedUnspecified"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_LUNARG_direct_driver_loading === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DirectDriverLoadingModeLUNARG value ) + { + switch ( value ) + { + case DirectDriverLoadingModeLUNARG::eExclusive: return "Exclusive"; + case DirectDriverLoadingModeLUNARG::eInclusive: return "Inclusive"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DirectDriverLoadingFlagBitsLUNARG ) + { + return "(void)"; + } + + //=== VK_ARM_tensors === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( TensorCreateFlagBitsARM value ) + { + switch ( value ) + { + case TensorCreateFlagBitsARM::eMutableFormat : return "MutableFormat"; + case TensorCreateFlagBitsARM::eProtected : return "Protected"; + case TensorCreateFlagBitsARM::eDescriptorHeapCaptureReplay : return "DescriptorHeapCaptureReplay"; + case TensorCreateFlagBitsARM::eDescriptorBufferCaptureReplay: return "DescriptorBufferCaptureReplay"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( TensorUsageFlagBitsARM value ) + { + switch ( value ) + { + case TensorUsageFlagBitsARM::eShader : return "Shader"; + case TensorUsageFlagBitsARM::eTransferSrc : return "TransferSrc"; + case TensorUsageFlagBitsARM::eTransferDst : return "TransferDst"; + case TensorUsageFlagBitsARM::eImageAliasing: return "ImageAliasing"; + case TensorUsageFlagBitsARM::eDataGraph : return "DataGraph"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( TensorTilingARM value ) + { + switch ( value ) + { + case TensorTilingARM::eOptimal: return "Optimal"; + case TensorTilingARM::eLinear : return "Linear"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_optical_flow === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( OpticalFlowUsageFlagBitsNV value ) + { + switch ( value ) + { + case OpticalFlowUsageFlagBitsNV::eUnknown : return "Unknown"; + case OpticalFlowUsageFlagBitsNV::eInput : return "Input"; + case OpticalFlowUsageFlagBitsNV::eOutput : return "Output"; + case OpticalFlowUsageFlagBitsNV::eHint : return "Hint"; + case OpticalFlowUsageFlagBitsNV::eCost : return "Cost"; + case OpticalFlowUsageFlagBitsNV::eGlobalFlow: return "GlobalFlow"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( OpticalFlowGridSizeFlagBitsNV value ) + { + switch ( value ) + { + case OpticalFlowGridSizeFlagBitsNV::eUnknown: return "Unknown"; + case OpticalFlowGridSizeFlagBitsNV::e1X1 : return "1X1"; + case OpticalFlowGridSizeFlagBitsNV::e2X2 : return "2X2"; + case OpticalFlowGridSizeFlagBitsNV::e4X4 : return "4X4"; + case OpticalFlowGridSizeFlagBitsNV::e8X8 : return "8X8"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( OpticalFlowPerformanceLevelNV value ) + { + switch ( value ) + { + case OpticalFlowPerformanceLevelNV::eUnknown: return "Unknown"; + case OpticalFlowPerformanceLevelNV::eSlow : return "Slow"; + case OpticalFlowPerformanceLevelNV::eMedium : return "Medium"; + case OpticalFlowPerformanceLevelNV::eFast : return "Fast"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( OpticalFlowSessionBindingPointNV value ) + { + switch ( value ) + { + case OpticalFlowSessionBindingPointNV::eUnknown : return "Unknown"; + case OpticalFlowSessionBindingPointNV::eInput : return "Input"; + case OpticalFlowSessionBindingPointNV::eReference : return "Reference"; + case OpticalFlowSessionBindingPointNV::eHint : return "Hint"; + case OpticalFlowSessionBindingPointNV::eFlowVector : return "FlowVector"; + case OpticalFlowSessionBindingPointNV::eBackwardFlowVector: return "BackwardFlowVector"; + case OpticalFlowSessionBindingPointNV::eCost : return "Cost"; + case OpticalFlowSessionBindingPointNV::eBackwardCost : return "BackwardCost"; + case OpticalFlowSessionBindingPointNV::eGlobalFlow : return "GlobalFlow"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( OpticalFlowSessionCreateFlagBitsNV value ) + { + switch ( value ) + { + case OpticalFlowSessionCreateFlagBitsNV::eEnableHint : return "EnableHint"; + case OpticalFlowSessionCreateFlagBitsNV::eEnableCost : return "EnableCost"; + case OpticalFlowSessionCreateFlagBitsNV::eEnableGlobalFlow: return "EnableGlobalFlow"; + case OpticalFlowSessionCreateFlagBitsNV::eAllowRegions : return "AllowRegions"; + case OpticalFlowSessionCreateFlagBitsNV::eBothDirections : return "BothDirections"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( OpticalFlowExecuteFlagBitsNV value ) + { + switch ( value ) + { + case OpticalFlowExecuteFlagBitsNV::eDisableTemporalHints: return "DisableTemporalHints"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_AMD_anti_lag === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AntiLagModeAMD value ) + { + switch ( value ) + { + case AntiLagModeAMD::eDriverControl: return "DriverControl"; + case AntiLagModeAMD::eOn : return "On"; + case AntiLagModeAMD::eOff : return "Off"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AntiLagStageAMD value ) + { + switch ( value ) + { + case AntiLagStageAMD::eInput : return "Input"; + case AntiLagStageAMD::ePresent: return "Present"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_ENABLE_BETA_EXTENSIONS ) + //=== VK_AMDX_dense_geometry_format === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CompressedTriangleFormatAMDX value ) + { + switch ( value ) + { + case CompressedTriangleFormatAMDX::eDgf1: return "Dgf1"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } +#endif /*VK_ENABLE_BETA_EXTENSIONS*/ + + //=== VK_EXT_shader_object === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderCreateFlagBitsEXT value ) + { + switch ( value ) + { + case ShaderCreateFlagBitsEXT::eLinkStage : return "LinkStage"; + case ShaderCreateFlagBitsEXT::eDescriptorHeap : return "DescriptorHeap"; + case ShaderCreateFlagBitsEXT::eInstrumentShaderARM : return "InstrumentShaderARM"; + case ShaderCreateFlagBitsEXT::eAllowVaryingSubgroupSize : return "AllowVaryingSubgroupSize"; + case ShaderCreateFlagBitsEXT::eRequireFullSubgroups : return "RequireFullSubgroups"; + case ShaderCreateFlagBitsEXT::eNoTaskShader : return "NoTaskShader"; + case ShaderCreateFlagBitsEXT::eDispatchBase : return "DispatchBase"; + case ShaderCreateFlagBitsEXT::eFragmentShadingRateAttachment: return "FragmentShadingRateAttachment"; + case ShaderCreateFlagBitsEXT::eFragmentDensityMapAttachment : return "FragmentDensityMapAttachment"; + case ShaderCreateFlagBitsEXT::eIndirectBindable : return "IndirectBindable"; + case ShaderCreateFlagBitsEXT::e64BitIndexing : return "64BitIndexing"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderCodeTypeEXT value ) + { + switch ( value ) + { + case ShaderCodeTypeEXT::eBinary: return "Binary"; + case ShaderCodeTypeEXT::eSpirv : return "Spirv"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_surface_maintenance1 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PresentScalingFlagBitsKHR value ) + { + switch ( value ) + { + case PresentScalingFlagBitsKHR::eOneToOne : return "OneToOne"; + case PresentScalingFlagBitsKHR::eAspectRatioStretch: return "AspectRatioStretch"; + case PresentScalingFlagBitsKHR::eStretch : return "Stretch"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PresentGravityFlagBitsKHR value ) + { + switch ( value ) + { + case PresentGravityFlagBitsKHR::eMin : return "Min"; + case PresentGravityFlagBitsKHR::eMax : return "Max"; + case PresentGravityFlagBitsKHR::eCentered: return "Centered"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_cooperative_vector === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CooperativeVectorMatrixLayoutNV value ) + { + switch ( value ) + { + case CooperativeVectorMatrixLayoutNV::eRowMajor : return "RowMajor"; + case CooperativeVectorMatrixLayoutNV::eColumnMajor : return "ColumnMajor"; + case CooperativeVectorMatrixLayoutNV::eInferencingOptimal: return "InferencingOptimal"; + case CooperativeVectorMatrixLayoutNV::eTrainingOptimal : return "TrainingOptimal"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ComponentTypeKHR value ) + { + switch ( value ) + { + case ComponentTypeKHR::eFloat16 : return "Float16"; + case ComponentTypeKHR::eFloat32 : return "Float32"; + case ComponentTypeKHR::eFloat64 : return "Float64"; + case ComponentTypeKHR::eSint8 : return "Sint8"; + case ComponentTypeKHR::eSint16 : return "Sint16"; + case ComponentTypeKHR::eSint32 : return "Sint32"; + case ComponentTypeKHR::eSint64 : return "Sint64"; + case ComponentTypeKHR::eUint8 : return "Uint8"; + case ComponentTypeKHR::eUint16 : return "Uint16"; + case ComponentTypeKHR::eUint32 : return "Uint32"; + case ComponentTypeKHR::eUint64 : return "Uint64"; + case ComponentTypeKHR::eBfloat16 : return "Bfloat16"; + case ComponentTypeKHR::eSint8PackedNV: return "Sint8PackedNV"; + case ComponentTypeKHR::eUint8PackedNV: return "Uint8PackedNV"; + case ComponentTypeKHR::eFloat8E4M3EXT: return "Float8E4M3EXT"; + case ComponentTypeKHR::eFloat8E5M2EXT: return "Float8E5M2EXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_layer_settings === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( LayerSettingTypeEXT value ) + { + switch ( value ) + { + case LayerSettingTypeEXT::eBool32 : return "Bool32"; + case LayerSettingTypeEXT::eInt32 : return "Int32"; + case LayerSettingTypeEXT::eInt64 : return "Int64"; + case LayerSettingTypeEXT::eUint32 : return "Uint32"; + case LayerSettingTypeEXT::eUint64 : return "Uint64"; + case LayerSettingTypeEXT::eFloat32: return "Float32"; + case LayerSettingTypeEXT::eFloat64: return "Float64"; + case LayerSettingTypeEXT::eString : return "String"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_low_latency2 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( LatencyMarkerNV value ) + { + switch ( value ) + { + case LatencyMarkerNV::eSimulationStart : return "SimulationStart"; + case LatencyMarkerNV::eSimulationEnd : return "SimulationEnd"; + case LatencyMarkerNV::eRendersubmitStart : return "RendersubmitStart"; + case LatencyMarkerNV::eRendersubmitEnd : return "RendersubmitEnd"; + case LatencyMarkerNV::ePresentStart : return "PresentStart"; + case LatencyMarkerNV::ePresentEnd : return "PresentEnd"; + case LatencyMarkerNV::eInputSample : return "InputSample"; + case LatencyMarkerNV::eTriggerFlash : return "TriggerFlash"; + case LatencyMarkerNV::eOutOfBandRendersubmitStart: return "OutOfBandRendersubmitStart"; + case LatencyMarkerNV::eOutOfBandRendersubmitEnd : return "OutOfBandRendersubmitEnd"; + case LatencyMarkerNV::eOutOfBandPresentStart : return "OutOfBandPresentStart"; + case LatencyMarkerNV::eOutOfBandPresentEnd : return "OutOfBandPresentEnd"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( OutOfBandQueueTypeNV value ) + { + switch ( value ) + { + case OutOfBandQueueTypeNV::eRender : return "Render"; + case OutOfBandQueueTypeNV::ePresent: return "Present"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_cooperative_matrix === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ScopeKHR value ) + { + switch ( value ) + { + case ScopeKHR::eDevice : return "Device"; + case ScopeKHR::eWorkgroup : return "Workgroup"; + case ScopeKHR::eSubgroup : return "Subgroup"; + case ScopeKHR::eQueueFamily: return "QueueFamily"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_ARM_data_graph === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DataGraphPipelineSessionBindPointARM value ) + { + switch ( value ) + { + case DataGraphPipelineSessionBindPointARM::eTransient: return "Transient"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DataGraphPipelineSessionBindPointTypeARM value ) + { + switch ( value ) + { + case DataGraphPipelineSessionBindPointTypeARM::eMemory: return "Memory"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DataGraphPipelineSessionCreateFlagBitsARM value ) + { + switch ( value ) + { + case DataGraphPipelineSessionCreateFlagBitsARM::eProtected: return "Protected"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DataGraphPipelinePropertyARM value ) + { + switch ( value ) + { + case DataGraphPipelinePropertyARM::eCreationLog: return "CreationLog"; + case DataGraphPipelinePropertyARM::eIdentifier : return "Identifier"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DataGraphPipelineDispatchFlagBitsARM ) + { + return "(void)"; + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PhysicalDeviceDataGraphProcessingEngineTypeARM value ) + { + switch ( value ) + { + case PhysicalDeviceDataGraphProcessingEngineTypeARM::eDefault : return "Default"; + case PhysicalDeviceDataGraphProcessingEngineTypeARM::eNeuralQCOM : return "NeuralQCOM"; + case PhysicalDeviceDataGraphProcessingEngineTypeARM::eComputeQCOM: return "ComputeQCOM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PhysicalDeviceDataGraphOperationTypeARM value ) + { + switch ( value ) + { + case PhysicalDeviceDataGraphOperationTypeARM::eSpirvExtendedInstructionSet: return "SpirvExtendedInstructionSet"; + case PhysicalDeviceDataGraphOperationTypeARM::eNeuralModelQCOM : return "NeuralModelQCOM"; + case PhysicalDeviceDataGraphOperationTypeARM::eBuiltinModelQCOM : return "BuiltinModelQCOM"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_video_encode_av1 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeAV1PredictionModeKHR value ) + { + switch ( value ) + { + case VideoEncodeAV1PredictionModeKHR::eIntraOnly : return "IntraOnly"; + case VideoEncodeAV1PredictionModeKHR::eSingleReference : return "SingleReference"; + case VideoEncodeAV1PredictionModeKHR::eUnidirectionalCompound: return "UnidirectionalCompound"; + case VideoEncodeAV1PredictionModeKHR::eBidirectionalCompound : return "BidirectionalCompound"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeAV1RateControlGroupKHR value ) + { + switch ( value ) + { + case VideoEncodeAV1RateControlGroupKHR::eIntra : return "Intra"; + case VideoEncodeAV1RateControlGroupKHR::ePredictive : return "Predictive"; + case VideoEncodeAV1RateControlGroupKHR::eBipredictive: return "Bipredictive"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeAV1CapabilityFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeAV1CapabilityFlagBitsKHR::ePerRateControlGroupMinMaxQIndex: return "PerRateControlGroupMinMaxQIndex"; + case VideoEncodeAV1CapabilityFlagBitsKHR::eGenerateObuExtensionHeader : return "GenerateObuExtensionHeader"; + case VideoEncodeAV1CapabilityFlagBitsKHR::ePrimaryReferenceCdfOnly : return "PrimaryReferenceCdfOnly"; + case VideoEncodeAV1CapabilityFlagBitsKHR::eFrameSizeOverride : return "FrameSizeOverride"; + case VideoEncodeAV1CapabilityFlagBitsKHR::eMotionVectorScaling : return "MotionVectorScaling"; + case VideoEncodeAV1CapabilityFlagBitsKHR::eCompoundPredictionIntraRefresh : return "CompoundPredictionIntraRefresh"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeAV1StdFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeAV1StdFlagBitsKHR::eUniformTileSpacingFlagSet: return "UniformTileSpacingFlagSet"; + case VideoEncodeAV1StdFlagBitsKHR::eSkipModePresentUnset : return "SkipModePresentUnset"; + case VideoEncodeAV1StdFlagBitsKHR::ePrimaryRefFrame : return "PrimaryRefFrame"; + case VideoEncodeAV1StdFlagBitsKHR::eDeltaQ : return "DeltaQ"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeAV1SuperblockSizeFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeAV1SuperblockSizeFlagBitsKHR::e64 : return "64"; + case VideoEncodeAV1SuperblockSizeFlagBitsKHR::e128: return "128"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeAV1RateControlFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeAV1RateControlFlagBitsKHR::eRegularGop : return "RegularGop"; + case VideoEncodeAV1RateControlFlagBitsKHR::eTemporalLayerPatternDyadic: return "TemporalLayerPatternDyadic"; + case VideoEncodeAV1RateControlFlagBitsKHR::eReferencePatternFlat : return "ReferencePatternFlat"; + case VideoEncodeAV1RateControlFlagBitsKHR::eReferencePatternDyadic : return "ReferencePatternDyadic"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_QCOM_image_processing2 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( BlockMatchWindowCompareModeQCOM value ) + { + switch ( value ) + { + case BlockMatchWindowCompareModeQCOM::eMin: return "Min"; + case BlockMatchWindowCompareModeQCOM::eMax: return "Max"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_QCOM_filter_cubic_weights === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( CubicFilterWeightsQCOM value ) + { + switch ( value ) + { + case CubicFilterWeightsQCOM::eCatmullRom : return "CatmullRom"; + case CubicFilterWeightsQCOM::eZeroTangentCardinal: return "ZeroTangentCardinal"; + case CubicFilterWeightsQCOM::eBSpline : return "BSpline"; + case CubicFilterWeightsQCOM::eMitchellNetravali : return "MitchellNetravali"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_MSFT_layered_driver === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( LayeredDriverUnderlyingApiMSFT value ) + { + switch ( value ) + { + case LayeredDriverUnderlyingApiMSFT::eNone : return "None"; + case LayeredDriverUnderlyingApiMSFT::eD3D12: return "D3D12"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_calibrated_timestamps === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( TimeDomainKHR value ) + { + switch ( value ) + { + case TimeDomainKHR::eDevice : return "Device"; + case TimeDomainKHR::eClockMonotonic : return "ClockMonotonic"; + case TimeDomainKHR::eClockMonotonicRaw : return "ClockMonotonicRaw"; + case TimeDomainKHR::eQueryPerformanceCounter: return "QueryPerformanceCounter"; + case TimeDomainKHR::ePresentStageLocalEXT : return "PresentStageLocalEXT"; + case TimeDomainKHR::eSwapchainLocalEXT : return "SwapchainLocalEXT"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_copy_memory_indirect === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AddressCopyFlagBitsKHR value ) + { + switch ( value ) + { + case AddressCopyFlagBitsKHR::eDeviceLocal: return "DeviceLocal"; + case AddressCopyFlagBitsKHR::eSparse : return "Sparse"; + case AddressCopyFlagBitsKHR::eProtected : return "Protected"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_memory_decompression === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( MemoryDecompressionMethodFlagBitsEXT value ) + { + switch ( value ) + { + case MemoryDecompressionMethodFlagBitsEXT::eGdeflate10: return "Gdeflate10"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_display_stereo === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DisplaySurfaceStereoTypeNV value ) + { + switch ( value ) + { + case DisplaySurfaceStereoTypeNV::eNone : return "None"; + case DisplaySurfaceStereoTypeNV::eOnboardDin : return "OnboardDin"; + case DisplaySurfaceStereoTypeNV::eHdmi3D : return "Hdmi3D"; + case DisplaySurfaceStereoTypeNV::eInbandDisplayport: return "InbandDisplayport"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_video_encode_intra_refresh === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( VideoEncodeIntraRefreshModeFlagBitsKHR value ) + { + switch ( value ) + { + case VideoEncodeIntraRefreshModeFlagBitsKHR::eNone : return "None"; + case VideoEncodeIntraRefreshModeFlagBitsKHR::ePerPicturePartition: return "PerPicturePartition"; + case VideoEncodeIntraRefreshModeFlagBitsKHR::eBlockBased : return "BlockBased"; + case VideoEncodeIntraRefreshModeFlagBitsKHR::eBlockRowBased : return "BlockRowBased"; + case VideoEncodeIntraRefreshModeFlagBitsKHR::eBlockColumnBased : return "BlockColumnBased"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_maintenance7 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PhysicalDeviceLayeredApiKHR value ) + { + switch ( value ) + { + case PhysicalDeviceLayeredApiKHR::eVulkan : return "Vulkan"; + case PhysicalDeviceLayeredApiKHR::eD3D12 : return "D3D12"; + case PhysicalDeviceLayeredApiKHR::eMetal : return "Metal"; + case PhysicalDeviceLayeredApiKHR::eOpengl : return "Opengl"; + case PhysicalDeviceLayeredApiKHR::eOpengles: return "Opengles"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_cluster_acceleration_structure === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ClusterAccelerationStructureClusterFlagBitsNV value ) + { + switch ( value ) + { + case ClusterAccelerationStructureClusterFlagBitsNV::eAllowDisableOpacityMicromaps: return "AllowDisableOpacityMicromaps"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ClusterAccelerationStructureGeometryFlagBitsNV value ) + { + switch ( value ) + { + case ClusterAccelerationStructureGeometryFlagBitsNV::eCullDisable : return "CullDisable"; + case ClusterAccelerationStructureGeometryFlagBitsNV::eNoDuplicateAnyhitInvocation: return "NoDuplicateAnyhitInvocation"; + case ClusterAccelerationStructureGeometryFlagBitsNV::eOpaque : return "Opaque"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ClusterAccelerationStructureAddressResolutionFlagBitsNV value ) + { + switch ( value ) + { + case ClusterAccelerationStructureAddressResolutionFlagBitsNV::eNone : return "None"; + case ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedDstImplicitData: return "IndirectedDstImplicitData"; + case ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedScratchData : return "IndirectedScratchData"; + case ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedDstAddressArray: return "IndirectedDstAddressArray"; + case ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedDstSizesArray : return "IndirectedDstSizesArray"; + case ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedSrcInfosArray : return "IndirectedSrcInfosArray"; + case ClusterAccelerationStructureAddressResolutionFlagBitsNV::eIndirectedSrcInfosCount : return "IndirectedSrcInfosCount"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ClusterAccelerationStructureIndexFormatFlagBitsNV value ) + { + switch ( value ) + { + case ClusterAccelerationStructureIndexFormatFlagBitsNV::e8 : return "8"; + case ClusterAccelerationStructureIndexFormatFlagBitsNV::e16: return "16"; + case ClusterAccelerationStructureIndexFormatFlagBitsNV::e32: return "32"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ClusterAccelerationStructureTypeNV value ) + { + switch ( value ) + { + case ClusterAccelerationStructureTypeNV::eClustersBottomLevel : return "ClustersBottomLevel"; + case ClusterAccelerationStructureTypeNV::eTriangleCluster : return "TriangleCluster"; + case ClusterAccelerationStructureTypeNV::eTriangleClusterTemplate: return "TriangleClusterTemplate"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ClusterAccelerationStructureOpTypeNV value ) + { + switch ( value ) + { + case ClusterAccelerationStructureOpTypeNV::eMoveObjects : return "MoveObjects"; + case ClusterAccelerationStructureOpTypeNV::eBuildClustersBottomLevel : return "BuildClustersBottomLevel"; + case ClusterAccelerationStructureOpTypeNV::eBuildTriangleCluster : return "BuildTriangleCluster"; + case ClusterAccelerationStructureOpTypeNV::eBuildTriangleClusterTemplate: return "BuildTriangleClusterTemplate"; + case ClusterAccelerationStructureOpTypeNV::eInstantiateTriangleCluster : return "InstantiateTriangleCluster"; + case ClusterAccelerationStructureOpTypeNV::eGetClusterTemplateIndices : return "GetClusterTemplateIndices"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ClusterAccelerationStructureOpModeNV value ) + { + switch ( value ) + { + case ClusterAccelerationStructureOpModeNV::eImplicitDestinations: return "ImplicitDestinations"; + case ClusterAccelerationStructureOpModeNV::eExplicitDestinations: return "ExplicitDestinations"; + case ClusterAccelerationStructureOpModeNV::eComputeSizes : return "ComputeSizes"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_NV_partitioned_acceleration_structure === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PartitionedAccelerationStructureOpTypeNV value ) + { + switch ( value ) + { + case PartitionedAccelerationStructureOpTypeNV::eWriteInstance : return "WriteInstance"; + case PartitionedAccelerationStructureOpTypeNV::eUpdateInstance : return "UpdateInstance"; + case PartitionedAccelerationStructureOpTypeNV::eWritePartitionTranslation: return "WritePartitionTranslation"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PartitionedAccelerationStructureInstanceFlagBitsNV value ) + { + switch ( value ) + { + case PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagTriangleFacingCullDisable: return "FlagTriangleFacingCullDisable"; + case PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagTriangleFlipFacing : return "FlagTriangleFlipFacing"; + case PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagForceOpaque : return "FlagForceOpaque"; + case PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagForceNoOpaque : return "FlagForceNoOpaque"; + case PartitionedAccelerationStructureInstanceFlagBitsNV::eFlagEnableExplicitBoundingBox: return "FlagEnableExplicitBoundingBox"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_device_generated_commands === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( IndirectCommandsTokenTypeEXT value ) + { + switch ( value ) + { + case IndirectCommandsTokenTypeEXT::eExecutionSet : return "ExecutionSet"; + case IndirectCommandsTokenTypeEXT::ePushConstant : return "PushConstant"; + case IndirectCommandsTokenTypeEXT::eSequenceIndex : return "SequenceIndex"; + case IndirectCommandsTokenTypeEXT::eIndexBuffer : return "IndexBuffer"; + case IndirectCommandsTokenTypeEXT::eVertexBuffer : return "VertexBuffer"; + case IndirectCommandsTokenTypeEXT::eDrawIndexed : return "DrawIndexed"; + case IndirectCommandsTokenTypeEXT::eDraw : return "Draw"; + case IndirectCommandsTokenTypeEXT::eDrawIndexedCount : return "DrawIndexedCount"; + case IndirectCommandsTokenTypeEXT::eDrawCount : return "DrawCount"; + case IndirectCommandsTokenTypeEXT::eDispatch : return "Dispatch"; + case IndirectCommandsTokenTypeEXT::ePushData : return "PushData"; + case IndirectCommandsTokenTypeEXT::ePushDataSequenceIndex: return "PushDataSequenceIndex"; + case IndirectCommandsTokenTypeEXT::eDrawMeshTasksNV : return "DrawMeshTasksNV"; + case IndirectCommandsTokenTypeEXT::eDrawMeshTasksCountNV : return "DrawMeshTasksCountNV"; + case IndirectCommandsTokenTypeEXT::eDrawMeshTasks : return "DrawMeshTasks"; + case IndirectCommandsTokenTypeEXT::eDrawMeshTasksCount : return "DrawMeshTasksCount"; + case IndirectCommandsTokenTypeEXT::eTraceRays2 : return "TraceRays2"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( IndirectExecutionSetInfoTypeEXT value ) + { + switch ( value ) + { + case IndirectExecutionSetInfoTypeEXT::ePipelines : return "Pipelines"; + case IndirectExecutionSetInfoTypeEXT::eShaderObjects: return "ShaderObjects"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( IndirectCommandsLayoutUsageFlagBitsEXT value ) + { + switch ( value ) + { + case IndirectCommandsLayoutUsageFlagBitsEXT::eExplicitPreprocess: return "ExplicitPreprocess"; + case IndirectCommandsLayoutUsageFlagBitsEXT::eUnorderedSequences: return "UnorderedSequences"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( IndirectCommandsInputModeFlagBitsEXT value ) + { + switch ( value ) + { + case IndirectCommandsInputModeFlagBitsEXT::eVulkanIndexBuffer: return "VulkanIndexBuffer"; + case IndirectCommandsInputModeFlagBitsEXT::eDxgiIndexBuffer : return "DxgiIndexBuffer"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_device_fault === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceFaultAddressTypeKHR value ) + { + switch ( value ) + { + case DeviceFaultAddressTypeKHR::eNone : return "None"; + case DeviceFaultAddressTypeKHR::eReadInvalid : return "ReadInvalid"; + case DeviceFaultAddressTypeKHR::eWriteInvalid : return "WriteInvalid"; + case DeviceFaultAddressTypeKHR::eExecuteInvalid : return "ExecuteInvalid"; + case DeviceFaultAddressTypeKHR::eInstructionPointerUnknown: return "InstructionPointerUnknown"; + case DeviceFaultAddressTypeKHR::eInstructionPointerInvalid: return "InstructionPointerInvalid"; + case DeviceFaultAddressTypeKHR::eInstructionPointerFault : return "InstructionPointerFault"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceFaultVendorBinaryHeaderVersionKHR value ) + { + switch ( value ) + { + case DeviceFaultVendorBinaryHeaderVersionKHR::eOne: return "One"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DeviceFaultFlagBitsKHR value ) + { + switch ( value ) + { + case DeviceFaultFlagBitsKHR::eFlagDeviceLost : return "FlagDeviceLost"; + case DeviceFaultFlagBitsKHR::eFlagMemoryAddress : return "FlagMemoryAddress"; + case DeviceFaultFlagBitsKHR::eFlagInstructionAddress: return "FlagInstructionAddress"; + case DeviceFaultFlagBitsKHR::eFlagVendor : return "FlagVendor"; + case DeviceFaultFlagBitsKHR::eFlagWatchdogTimeout : return "FlagWatchdogTimeout"; + case DeviceFaultFlagBitsKHR::eFlagOverflow : return "FlagOverflow"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_maintenance8 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( AccessFlagBits3KHR value ) + { + switch ( value ) + { + case AccessFlagBits3KHR::eNone: return "None"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_ray_tracing_invocation_reorder === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( RayTracingInvocationReorderModeEXT value ) + { + switch ( value ) + { + case RayTracingInvocationReorderModeEXT::eNone : return "None"; + case RayTracingInvocationReorderModeEXT::eReorder: return "Reorder"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_EXT_depth_clamp_control === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DepthClampModeEXT value ) + { + switch ( value ) + { + case DepthClampModeEXT::eViewportRange : return "ViewportRange"; + case DepthClampModeEXT::eUserDefinedRange: return "UserDefinedRange"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_maintenance9 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DefaultVertexAttributeValueKHR value ) + { + switch ( value ) + { + case DefaultVertexAttributeValueKHR::eZeroZeroZeroZero: return "ZeroZeroZeroZero"; + case DefaultVertexAttributeValueKHR::eZeroZeroZeroOne : return "ZeroZeroZeroOne"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_OHOS ) + //=== VK_OHOS_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( SurfaceCreateFlagBitsOHOS ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_OHOS*/ + + //=== VK_ARM_performance_counters_by_region === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( PerformanceCounterDescriptionFlagBitsARM ) + { + return "(void)"; + } + + //=== VK_ARM_shader_instrumentation === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ShaderInstrumentationValuesFlagBitsARM ) + { + return "(void)"; + } + + //=== VK_QCOM_data_graph_model === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( DataGraphModelCacheTypeQCOM value ) + { + switch ( value ) + { + case DataGraphModelCacheTypeQCOM::eGenericBinary: return "GenericBinary"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + //=== VK_KHR_maintenance10 === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( RenderingAttachmentFlagBitsKHR value ) + { + switch ( value ) + { + case RenderingAttachmentFlagBitsKHR::eInputAttachmentFeedback : return "InputAttachmentFeedback"; + case RenderingAttachmentFlagBitsKHR::eResolveSkipTransferFunction : return "ResolveSkipTransferFunction"; + case RenderingAttachmentFlagBitsKHR::eResolveEnableTransferFunction: return "ResolveEnableTransferFunction"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( ResolveImageFlagBitsKHR value ) + { + switch ( value ) + { + case ResolveImageFlagBitsKHR::eSkipTransferFunction : return "SkipTransferFunction"; + case ResolveImageFlagBitsKHR::eEnableTransferFunction: return "EnableTransferFunction"; + default : return "invalid ( " + toHexString( static_cast( value ) ) + " )"; + } + } + +#if defined( VK_USE_PLATFORM_UBM_SEC ) + //=== VK_SEC_ubm_surface === + + VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR_20 std::string to_string( UbmSurfaceCreateFlagBitsSEC ) + { + return "(void)"; + } +#endif /*VK_USE_PLATFORM_UBM_SEC*/ + +} // namespace VULKAN_HPP_NAMESPACE + +#if defined( __clang__ ) || defined( __GNUC__ ) +# pragma GCC diagnostic pop +#elif defined( _MSC_VER ) +# pragma warning( pop ) +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_vi.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_vi.h new file mode 100644 index 000000000..97d1a3c5f --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_vi.h @@ -0,0 +1,50 @@ +#ifndef VULKAN_VI_H_ +#define VULKAN_VI_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_NN_vi_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_NN_vi_surface 1 +#define VK_NN_VI_SURFACE_SPEC_VERSION 1 +#define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface" +typedef VkFlags VkViSurfaceCreateFlagsNN; +typedef struct VkViSurfaceCreateInfoNN { + VkStructureType sType; + const void* pNext; + VkViSurfaceCreateFlagsNN flags; + void* window; +} VkViSurfaceCreateInfoNN; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateViSurfaceNN)(VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN( + VkInstance instance, + const VkViSurfaceCreateInfoNN* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_video.cppm b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_video.cppm new file mode 100644 index 000000000..e03c9b872 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_video.cppm @@ -0,0 +1,72 @@ +// Copyright 2021-2026 The Khronos Group Inc. +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +module; + +#define VULKAN_HPP_CXX_MODULE 1 + +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif +#if __has_include( ) +# include +#endif + +// clang-format off +#include +// clang-format on + +export module vulkan_video; + +import vulkan; + +#if defined( _MSC_VER ) +# pragma warning( push ) +# pragma warning( disable : 5244 ) +#elif defined( __clang__ ) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Winclude-angled-in-module-purview" +#elif defined( __GNUC__ ) +#endif + +#include + +#if defined( _MSC_VER ) +# pragma warning( pop ) +#elif defined( __clang__ ) +# pragma clang diagnostic pop +#elif defined( __GNUC__ ) +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_video.hpp b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_video.hpp new file mode 100644 index 000000000..e132c9d09 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_video.hpp @@ -0,0 +1,5945 @@ +// Copyright 2021-2026 The Khronos Group Inc. +// SPDX-License-Identifier: Apache-2.0 OR MIT +// + +// This header is generated from the Khronos Vulkan XML API Registry. + +#ifndef VULKAN_VIDEO_HPP +#define VULKAN_VIDEO_HPP + +// here, we consider include files to be available when __has_include is not defined +#if !defined( __has_include ) +# define __has_include( x ) true +# define has_include_was_not_defined +#endif + +#if !defined( VULKAN_HPP_CXX_MODULE ) +# include +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif +# if __has_include( ) +# include +# endif + +#endif + +#if !defined( VULKAN_HPP_VIDEO_NAMESPACE ) +# define VULKAN_HPP_VIDEO_NAMESPACE video +#endif + +VULKAN_HPP_EXPORT namespace VULKAN_HPP_NAMESPACE +{ + namespace VULKAN_HPP_VIDEO_NAMESPACE + { + //================= + //=== CONSTANTs === + //================= + +#if defined( VULKAN_VIDEO_CODEC_H264STD_H_ ) + //=== vulkan_video_codec_h264std === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H264CpbCntListSize = 32; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H264MaxChromaPlanes = 2; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H264MaxNumListRef = 32; + VULKAN_HPP_CONSTEXPR_INLINE uint8_t H264NoReferencePicture = 0xFF; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H264ScalingList4X4NumElements = 16; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H264ScalingList4X4NumLists = 6; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H264ScalingList8X8NumElements = 64; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H264ScalingList8X8NumLists = 6; +#endif + +#if defined( VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ ) + //=== vulkan_video_codec_h264std_decode === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t DecodeH264FieldOrderCountListSize = 2; +#endif + +#if defined( VULKAN_VIDEO_CODEC_H265STD_H_ ) + //=== vulkan_video_codec_h265std === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ChromaQpOffsetListSize = 6; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ChromaQpOffsetTileColsListSize = 19; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ChromaQpOffsetTileRowsListSize = 21; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265CpbCntListSize = 32; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265MaxChromaPlanes = 2; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265MaxDeltaPoc = 48; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265MaxDpbSize = 16; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265MaxLongTermPics = 16; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265MaxLongTermRefPicsSps = 32; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265MaxNumListRef = 15; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265MaxShortTermRefPicSets = 64; + VULKAN_HPP_CONSTEXPR_INLINE uint8_t H265NoReferencePicture = 0xFF; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265PredictorPaletteComponentsListSize = 3; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265PredictorPaletteCompEntriesListSize = 128; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ScalingList16X16NumElements = 64; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ScalingList16X16NumLists = 6; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ScalingList32X32NumElements = 64; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ScalingList32X32NumLists = 2; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ScalingList4X4NumElements = 16; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ScalingList4X4NumLists = 6; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ScalingList8X8NumElements = 64; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265ScalingList8X8NumLists = 6; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t H265SublayersListSize = 7; +#endif + +#if defined( VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ ) + //=== vulkan_video_codec_h265std_decode === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t DecodeH265RefPicSetListSize = 8; +#endif + +#if defined( VULKAN_VIDEO_CODEC_VP9STD_H_ ) + //=== vulkan_video_codec_vp9std === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Vp9LoopFilterAdjustments = 2; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Vp9MaxRefFrames = 4; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Vp9MaxSegmentationPredProb = 3; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Vp9MaxSegmentationTreeProbs = 7; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Vp9MaxSegments = 8; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Vp9NumRefFrames = 8; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Vp9RefsPerFrame = 3; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Vp9SegLvlMax = 4; +#endif + +#if defined( VULKAN_VIDEO_CODEC_AV1STD_H_ ) + //=== vulkan_video_codec_av1std === + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1GlobalMotionParams = 6; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1LoopFilterAdjustments = 2; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxCdefFilterStrengths = 8; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxLoopFilterStrengths = 4; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxNumCbPoints = 10; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxNumCrPoints = 10; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxNumPlanes = 3; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxNumPosChroma = 25; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxNumPosLuma = 24; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxNumYPoints = 14; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxSegments = 8; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxTileCols = 64; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1MaxTileRows = 64; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1NumRefFrames = 8; + VULKAN_HPP_CONSTEXPR_INLINE uint8_t Av1PrimaryRefNone = 7; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1RefsPerFrame = 7; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1SegLvlMax = 8; + VULKAN_HPP_CONSTEXPR_INLINE uint8_t Av1SelectIntegerMv = 2; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1SelectScreenContentTools = 2; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1SkipModeFrames = 2; + VULKAN_HPP_CONSTEXPR_INLINE uint32_t Av1TotalRefsPerFrame = 8; +#endif + + //============= + //=== ENUMs === + //============= + +#if defined( VULKAN_VIDEO_CODEC_H264STD_H_ ) + //=== vulkan_video_codec_h264std === + + enum class H264ChromaFormatIdc + { + eMonochrome = STD_VIDEO_H264_CHROMA_FORMAT_IDC_MONOCHROME, + e420 = STD_VIDEO_H264_CHROMA_FORMAT_IDC_420, + e422 = STD_VIDEO_H264_CHROMA_FORMAT_IDC_422, + e444 = STD_VIDEO_H264_CHROMA_FORMAT_IDC_444, + eInvalid = STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID + }; + + enum class H264ProfileIdc + { + eBaseline = STD_VIDEO_H264_PROFILE_IDC_BASELINE, + eMain = STD_VIDEO_H264_PROFILE_IDC_MAIN, + eHigh = STD_VIDEO_H264_PROFILE_IDC_HIGH, + eHigh444Predictive = STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE, + eInvalid = STD_VIDEO_H264_PROFILE_IDC_INVALID + }; + + enum class H264LevelIdc + { + e1_0 = STD_VIDEO_H264_LEVEL_IDC_1_0, + e1_1 = STD_VIDEO_H264_LEVEL_IDC_1_1, + e1_2 = STD_VIDEO_H264_LEVEL_IDC_1_2, + e1_3 = STD_VIDEO_H264_LEVEL_IDC_1_3, + e2_0 = STD_VIDEO_H264_LEVEL_IDC_2_0, + e2_1 = STD_VIDEO_H264_LEVEL_IDC_2_1, + e2_2 = STD_VIDEO_H264_LEVEL_IDC_2_2, + e3_0 = STD_VIDEO_H264_LEVEL_IDC_3_0, + e3_1 = STD_VIDEO_H264_LEVEL_IDC_3_1, + e3_2 = STD_VIDEO_H264_LEVEL_IDC_3_2, + e4_0 = STD_VIDEO_H264_LEVEL_IDC_4_0, + e4_1 = STD_VIDEO_H264_LEVEL_IDC_4_1, + e4_2 = STD_VIDEO_H264_LEVEL_IDC_4_2, + e5_0 = STD_VIDEO_H264_LEVEL_IDC_5_0, + e5_1 = STD_VIDEO_H264_LEVEL_IDC_5_1, + e5_2 = STD_VIDEO_H264_LEVEL_IDC_5_2, + e6_0 = STD_VIDEO_H264_LEVEL_IDC_6_0, + e6_1 = STD_VIDEO_H264_LEVEL_IDC_6_1, + e6_2 = STD_VIDEO_H264_LEVEL_IDC_6_2, + eInvalid = STD_VIDEO_H264_LEVEL_IDC_INVALID + }; + + enum class H264PocType + { + e0 = STD_VIDEO_H264_POC_TYPE_0, + e1 = STD_VIDEO_H264_POC_TYPE_1, + e2 = STD_VIDEO_H264_POC_TYPE_2, + eInvalid = STD_VIDEO_H264_POC_TYPE_INVALID + }; + + enum class H264AspectRatioIdc + { + eUnspecified = STD_VIDEO_H264_ASPECT_RATIO_IDC_UNSPECIFIED, + eSquare = STD_VIDEO_H264_ASPECT_RATIO_IDC_SQUARE, + e12_11 = STD_VIDEO_H264_ASPECT_RATIO_IDC_12_11, + e10_11 = STD_VIDEO_H264_ASPECT_RATIO_IDC_10_11, + e16_11 = STD_VIDEO_H264_ASPECT_RATIO_IDC_16_11, + e40_33 = STD_VIDEO_H264_ASPECT_RATIO_IDC_40_33, + e24_11 = STD_VIDEO_H264_ASPECT_RATIO_IDC_24_11, + e20_11 = STD_VIDEO_H264_ASPECT_RATIO_IDC_20_11, + e32_11 = STD_VIDEO_H264_ASPECT_RATIO_IDC_32_11, + e80_33 = STD_VIDEO_H264_ASPECT_RATIO_IDC_80_33, + e18_11 = STD_VIDEO_H264_ASPECT_RATIO_IDC_18_11, + e15_11 = STD_VIDEO_H264_ASPECT_RATIO_IDC_15_11, + e64_33 = STD_VIDEO_H264_ASPECT_RATIO_IDC_64_33, + e160_99 = STD_VIDEO_H264_ASPECT_RATIO_IDC_160_99, + e4_3 = STD_VIDEO_H264_ASPECT_RATIO_IDC_4_3, + e3_2 = STD_VIDEO_H264_ASPECT_RATIO_IDC_3_2, + e2_1 = STD_VIDEO_H264_ASPECT_RATIO_IDC_2_1, + eExtendedSar = STD_VIDEO_H264_ASPECT_RATIO_IDC_EXTENDED_SAR, + eInvalid = STD_VIDEO_H264_ASPECT_RATIO_IDC_INVALID + }; + + enum class H264WeightedBipredIdc + { + eDefault = STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT, + eExplicit = STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT, + eImplicit = STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT, + eInvalid = STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID + }; + + enum class H264ModificationOfPicNumsIdc + { + eShortTermSubtract = STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_SUBTRACT, + eShortTermAdd = STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_ADD, + eLongTerm = STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM, + eEnd = STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END, + eInvalid = STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_INVALID + }; + + enum class H264MemMgmtControlOp + { + eEnd = STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_END, + eUnmarkShortTerm = STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_SHORT_TERM, + eUnmarkLongTerm = STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_LONG_TERM, + eMarkLongTerm = STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_LONG_TERM, + eSetMaxLongTermIndex = STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_SET_MAX_LONG_TERM_INDEX, + eUnmarkAll = STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_ALL, + eMarkCurrentAsLongTerm = STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_CURRENT_AS_LONG_TERM, + eInvalid = STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_INVALID + }; + + enum class H264CabacInitIdc + { + e0 = STD_VIDEO_H264_CABAC_INIT_IDC_0, + e1 = STD_VIDEO_H264_CABAC_INIT_IDC_1, + e2 = STD_VIDEO_H264_CABAC_INIT_IDC_2, + eInvalid = STD_VIDEO_H264_CABAC_INIT_IDC_INVALID + }; + + enum class H264DisableDeblockingFilterIdc + { + eDisabled = STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED, + eEnabled = STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED, + ePartial = STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL, + eInvalid = STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_INVALID + }; + + enum class H264SliceType + { + eP = STD_VIDEO_H264_SLICE_TYPE_P, + eB = STD_VIDEO_H264_SLICE_TYPE_B, + eI = STD_VIDEO_H264_SLICE_TYPE_I, + eInvalid = STD_VIDEO_H264_SLICE_TYPE_INVALID + }; + + enum class H264PictureType + { + eP = STD_VIDEO_H264_PICTURE_TYPE_P, + eB = STD_VIDEO_H264_PICTURE_TYPE_B, + eI = STD_VIDEO_H264_PICTURE_TYPE_I, + eIdr = STD_VIDEO_H264_PICTURE_TYPE_IDR, + eInvalid = STD_VIDEO_H264_PICTURE_TYPE_INVALID + }; + + enum class H264NonVclNaluType + { + eSps = STD_VIDEO_H264_NON_VCL_NALU_TYPE_SPS, + ePps = STD_VIDEO_H264_NON_VCL_NALU_TYPE_PPS, + eAud = STD_VIDEO_H264_NON_VCL_NALU_TYPE_AUD, + ePrefix = STD_VIDEO_H264_NON_VCL_NALU_TYPE_PREFIX, + eEndOfSequence = STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_SEQUENCE, + eEndOfStream = STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_STREAM, + ePrecoded = STD_VIDEO_H264_NON_VCL_NALU_TYPE_PRECODED, + eInvalid = STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ ) + //=== vulkan_video_codec_h264std_decode === + + enum class DecodeH264FieldOrderCount + { + eTop = STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP, + eBottom = STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM, + eInvalid = STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_H265STD_H_ ) + //=== vulkan_video_codec_h265std === + + enum class H265ChromaFormatIdc + { + eMonochrome = STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME, + e420 = STD_VIDEO_H265_CHROMA_FORMAT_IDC_420, + e422 = STD_VIDEO_H265_CHROMA_FORMAT_IDC_422, + e444 = STD_VIDEO_H265_CHROMA_FORMAT_IDC_444, + eInvalid = STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID + }; + + enum class H265ProfileIdc + { + eMain = STD_VIDEO_H265_PROFILE_IDC_MAIN, + eMain10 = STD_VIDEO_H265_PROFILE_IDC_MAIN_10, + eMainStillPicture = STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE, + eFormatRangeExtensions = STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS, + eSccExtensions = STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS, + eInvalid = STD_VIDEO_H265_PROFILE_IDC_INVALID + }; + + enum class H265LevelIdc + { + e1_0 = STD_VIDEO_H265_LEVEL_IDC_1_0, + e2_0 = STD_VIDEO_H265_LEVEL_IDC_2_0, + e2_1 = STD_VIDEO_H265_LEVEL_IDC_2_1, + e3_0 = STD_VIDEO_H265_LEVEL_IDC_3_0, + e3_1 = STD_VIDEO_H265_LEVEL_IDC_3_1, + e4_0 = STD_VIDEO_H265_LEVEL_IDC_4_0, + e4_1 = STD_VIDEO_H265_LEVEL_IDC_4_1, + e5_0 = STD_VIDEO_H265_LEVEL_IDC_5_0, + e5_1 = STD_VIDEO_H265_LEVEL_IDC_5_1, + e5_2 = STD_VIDEO_H265_LEVEL_IDC_5_2, + e6_0 = STD_VIDEO_H265_LEVEL_IDC_6_0, + e6_1 = STD_VIDEO_H265_LEVEL_IDC_6_1, + e6_2 = STD_VIDEO_H265_LEVEL_IDC_6_2, + eInvalid = STD_VIDEO_H265_LEVEL_IDC_INVALID + }; + + enum class H265SliceType + { + eB = STD_VIDEO_H265_SLICE_TYPE_B, + eP = STD_VIDEO_H265_SLICE_TYPE_P, + eI = STD_VIDEO_H265_SLICE_TYPE_I, + eInvalid = STD_VIDEO_H265_SLICE_TYPE_INVALID + }; + + enum class H265PictureType + { + eP = STD_VIDEO_H265_PICTURE_TYPE_P, + eB = STD_VIDEO_H265_PICTURE_TYPE_B, + eI = STD_VIDEO_H265_PICTURE_TYPE_I, + eIdr = STD_VIDEO_H265_PICTURE_TYPE_IDR, + eInvalid = STD_VIDEO_H265_PICTURE_TYPE_INVALID + }; + + enum class H265AspectRatioIdc + { + eUnspecified = STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED, + eSquare = STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE, + e12_11 = STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11, + e10_11 = STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11, + e16_11 = STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11, + e40_33 = STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33, + e24_11 = STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11, + e20_11 = STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11, + e32_11 = STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11, + e80_33 = STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33, + e18_11 = STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11, + e15_11 = STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11, + e64_33 = STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33, + e160_99 = STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99, + e4_3 = STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3, + e3_2 = STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2, + e2_1 = STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1, + eExtendedSar = STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR, + eInvalid = STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_VP9STD_H_ ) + //=== vulkan_video_codec_vp9std === + + enum class VP9Profile + { + e0 = STD_VIDEO_VP9_PROFILE_0, + e1 = STD_VIDEO_VP9_PROFILE_1, + e2 = STD_VIDEO_VP9_PROFILE_2, + e3 = STD_VIDEO_VP9_PROFILE_3, + eInvalid = STD_VIDEO_VP9_PROFILE_INVALID + }; + + enum class VP9Level + { + e1_0 = STD_VIDEO_VP9_LEVEL_1_0, + e1_1 = STD_VIDEO_VP9_LEVEL_1_1, + e2_0 = STD_VIDEO_VP9_LEVEL_2_0, + e2_1 = STD_VIDEO_VP9_LEVEL_2_1, + e3_0 = STD_VIDEO_VP9_LEVEL_3_0, + e3_1 = STD_VIDEO_VP9_LEVEL_3_1, + e4_0 = STD_VIDEO_VP9_LEVEL_4_0, + e4_1 = STD_VIDEO_VP9_LEVEL_4_1, + e5_0 = STD_VIDEO_VP9_LEVEL_5_0, + e5_1 = STD_VIDEO_VP9_LEVEL_5_1, + e5_2 = STD_VIDEO_VP9_LEVEL_5_2, + e6_0 = STD_VIDEO_VP9_LEVEL_6_0, + e6_1 = STD_VIDEO_VP9_LEVEL_6_1, + e6_2 = STD_VIDEO_VP9_LEVEL_6_2, + eInvalid = STD_VIDEO_VP9_LEVEL_INVALID + }; + + enum class VP9FrameType + { + eKey = STD_VIDEO_VP9_FRAME_TYPE_KEY, + eNonKey = STD_VIDEO_VP9_FRAME_TYPE_NON_KEY, + eInvalid = STD_VIDEO_VP9_FRAME_TYPE_INVALID + }; + + enum class VP9ReferenceName + { + eIntraFrame = STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME, + eLastFrame = STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME, + eGoldenFrame = STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME, + eAltrefFrame = STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME, + eInvalid = STD_VIDEO_VP9_REFERENCE_NAME_INVALID + }; + + enum class VP9InterpolationFilter + { + eEighttap = STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP, + eEighttapSmooth = STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH, + eEighttapSharp = STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP, + eBilinear = STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR, + eSwitchable = STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE, + eInvalid = STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID + }; + + enum class VP9ColorSpace + { + eUnknown = STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN, + eBt601 = STD_VIDEO_VP9_COLOR_SPACE_BT_601, + eBt709 = STD_VIDEO_VP9_COLOR_SPACE_BT_709, + eSmpte170 = STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170, + eSmpte240 = STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240, + eBt2020 = STD_VIDEO_VP9_COLOR_SPACE_BT_2020, + eReserved = STD_VIDEO_VP9_COLOR_SPACE_RESERVED, + eRgb = STD_VIDEO_VP9_COLOR_SPACE_RGB, + eInvalid = STD_VIDEO_VP9_COLOR_SPACE_INVALID + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_AV1STD_H_ ) + //=== vulkan_video_codec_av1std === + + enum class AV1Profile + { + eMain = STD_VIDEO_AV1_PROFILE_MAIN, + eHigh = STD_VIDEO_AV1_PROFILE_HIGH, + eProfessional = STD_VIDEO_AV1_PROFILE_PROFESSIONAL, + eInvalid = STD_VIDEO_AV1_PROFILE_INVALID + }; + + enum class AV1Level + { + e2_0 = STD_VIDEO_AV1_LEVEL_2_0, + e2_1 = STD_VIDEO_AV1_LEVEL_2_1, + e2_2 = STD_VIDEO_AV1_LEVEL_2_2, + e2_3 = STD_VIDEO_AV1_LEVEL_2_3, + e3_0 = STD_VIDEO_AV1_LEVEL_3_0, + e3_1 = STD_VIDEO_AV1_LEVEL_3_1, + e3_2 = STD_VIDEO_AV1_LEVEL_3_2, + e3_3 = STD_VIDEO_AV1_LEVEL_3_3, + e4_0 = STD_VIDEO_AV1_LEVEL_4_0, + e4_1 = STD_VIDEO_AV1_LEVEL_4_1, + e4_2 = STD_VIDEO_AV1_LEVEL_4_2, + e4_3 = STD_VIDEO_AV1_LEVEL_4_3, + e5_0 = STD_VIDEO_AV1_LEVEL_5_0, + e5_1 = STD_VIDEO_AV1_LEVEL_5_1, + e5_2 = STD_VIDEO_AV1_LEVEL_5_2, + e5_3 = STD_VIDEO_AV1_LEVEL_5_3, + e6_0 = STD_VIDEO_AV1_LEVEL_6_0, + e6_1 = STD_VIDEO_AV1_LEVEL_6_1, + e6_2 = STD_VIDEO_AV1_LEVEL_6_2, + e6_3 = STD_VIDEO_AV1_LEVEL_6_3, + e7_0 = STD_VIDEO_AV1_LEVEL_7_0, + e7_1 = STD_VIDEO_AV1_LEVEL_7_1, + e7_2 = STD_VIDEO_AV1_LEVEL_7_2, + e7_3 = STD_VIDEO_AV1_LEVEL_7_3, + eInvalid = STD_VIDEO_AV1_LEVEL_INVALID + }; + + enum class AV1FrameType + { + eKey = STD_VIDEO_AV1_FRAME_TYPE_KEY, + eInter = STD_VIDEO_AV1_FRAME_TYPE_INTER, + eIntraOnly = STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY, + eSwitch = STD_VIDEO_AV1_FRAME_TYPE_SWITCH, + eInvalid = STD_VIDEO_AV1_FRAME_TYPE_INVALID + }; + + enum class AV1ReferenceName + { + eIntraFrame = STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME, + eLastFrame = STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME, + eLast2Frame = STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME, + eLast3Frame = STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME, + eGoldenFrame = STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME, + eBwdrefFrame = STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME, + eAltref2Frame = STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME, + eAltrefFrame = STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME, + eInvalid = STD_VIDEO_AV1_REFERENCE_NAME_INVALID + }; + + enum class AV1InterpolationFilter + { + eEighttap = STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP, + eEighttapSmooth = STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH, + eEighttapSharp = STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP, + eBilinear = STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR, + eSwitchable = STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE, + eInvalid = STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID + }; + + enum class AV1TxMode + { + eOnly4X4 = STD_VIDEO_AV1_TX_MODE_ONLY_4X4, + eLargest = STD_VIDEO_AV1_TX_MODE_LARGEST, + eSelect = STD_VIDEO_AV1_TX_MODE_SELECT, + eInvalid = STD_VIDEO_AV1_TX_MODE_INVALID + }; + + enum class AV1FrameRestorationType + { + eNone = STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE, + eWiener = STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER, + eSgrproj = STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ, + eSwitchable = STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE, + eInvalid = STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID + }; + + enum class AV1ColorPrimaries + { + eBt709 = STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709, + eUnspecified = STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED, + eBtUnspecified VULKAN_HPP_DEPRECATED_17( "eBtUnspecified is deprecated, eUnspecified should be used instead." ) = + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED, + eBt470M = STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M, + eBt470BG = STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G, + eBt601 = STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601, + eSmpte240 = STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240, + eGenericFilm = STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM, + eBt2020 = STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020, + eXyz = STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ, + eSmpte431 = STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431, + eSmpte432 = STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432, + eEbu3213 = STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213, + eInvalid = STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID + }; + + enum class AV1TransferCharacteristics + { + eReserved0 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0, + eBt709 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709, + eUnspecified = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED, + eReserved3 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3, + eBt470M = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M, + eBt470BG = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G, + eBt601 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601, + eSmpte240 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240, + eLinear = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR, + eLog100 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100, + eLog100Sqrt10 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10, + eIec61966 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966, + eBt1361 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361, + eSrgb = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB, + eBt2020_10Bit = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT, + eBt2020_12Bit = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT, + eSmpte2084 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084, + eSmpte428 = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428, + eHlg = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG, + eInvalid = STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID + }; + + enum class AV1MatrixCoefficients + { + eIdentity = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY, + eBt709 = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709, + eUnspecified = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED, + eReserved3 = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3, + eFcc = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC, + eBt470BG = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G, + eBt601 = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601, + eSmpte240 = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240, + eSmpteYcgco = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO, + eBt2020Ncl = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL, + eBt2020Cl = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL, + eSmpte2085 = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085, + eChromatNcl = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL, + eChromatCl = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL, + eIctcp = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP, + eInvalid = STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID + }; + + enum class AV1ChromaSamplePosition + { + eUnknown = STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN, + eVertical = STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL, + eColocated = STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED, + eReserved = STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED, + eInvalid = STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID + }; +#endif + + //=============== + //=== STRUCTS === + //=============== + +#if defined( VULKAN_VIDEO_CODEC_H264STD_H_ ) + //=== vulkan_video_codec_h264std === + + struct H264SpsVuiFlags + { + using NativeType = StdVideoH264SpsVuiFlags; + + operator StdVideoH264SpsVuiFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264SpsVuiFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264SpsVuiFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH264SpsVuiFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H264SpsVuiFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( aspect_ratio_info_present_flag == rhs.aspect_ratio_info_present_flag ) && + ( overscan_info_present_flag == rhs.overscan_info_present_flag ) && + ( overscan_appropriate_flag == rhs.overscan_appropriate_flag ) && + ( video_signal_type_present_flag == rhs.video_signal_type_present_flag ) && + ( video_full_range_flag == rhs.video_full_range_flag ) && + ( color_description_present_flag == rhs.color_description_present_flag ) && + ( chroma_loc_info_present_flag == rhs.chroma_loc_info_present_flag ) && + ( timing_info_present_flag == rhs.timing_info_present_flag ) && + ( fixed_frame_rate_flag == rhs.fixed_frame_rate_flag ) && + ( bitstream_restriction_flag == rhs.bitstream_restriction_flag ) && + ( nal_hrd_parameters_present_flag == rhs.nal_hrd_parameters_present_flag ) && + ( vcl_hrd_parameters_present_flag == rhs.vcl_hrd_parameters_present_flag ); + } + + bool operator!=( H264SpsVuiFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t aspect_ratio_info_present_flag : 1; + uint32_t overscan_info_present_flag : 1; + uint32_t overscan_appropriate_flag : 1; + uint32_t video_signal_type_present_flag : 1; + uint32_t video_full_range_flag : 1; + uint32_t color_description_present_flag : 1; + uint32_t chroma_loc_info_present_flag : 1; + uint32_t timing_info_present_flag : 1; + uint32_t fixed_frame_rate_flag : 1; + uint32_t bitstream_restriction_flag : 1; + uint32_t nal_hrd_parameters_present_flag : 1; + uint32_t vcl_hrd_parameters_present_flag : 1; + }; + + struct H264HrdParameters + { + using NativeType = StdVideoH264HrdParameters; + + operator StdVideoH264HrdParameters const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264HrdParameters &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264HrdParameters const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH264HrdParameters *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H264HrdParameters const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( cpb_cnt_minus1 == rhs.cpb_cnt_minus1 ) && + ( bit_rate_scale == rhs.bit_rate_scale ) && + ( cpb_size_scale == rhs.cpb_size_scale ) && + ( reserved1 == rhs.reserved1 ) && + ( bit_rate_value_minus1 == rhs.bit_rate_value_minus1 ) && + ( cpb_size_value_minus1 == rhs.cpb_size_value_minus1 ) && + ( cbr_flag == rhs.cbr_flag ) && + ( initial_cpb_removal_delay_length_minus1 == rhs.initial_cpb_removal_delay_length_minus1 ) && + ( cpb_removal_delay_length_minus1 == rhs.cpb_removal_delay_length_minus1 ) && + ( dpb_output_delay_length_minus1 == rhs.dpb_output_delay_length_minus1 ) && + ( time_offset_length == rhs.time_offset_length ); + } + + bool operator!=( H264HrdParameters const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint8_t cpb_cnt_minus1 = {}; + uint8_t bit_rate_scale = {}; + uint8_t cpb_size_scale = {}; + uint8_t reserved1 = {}; + ArrayWrapper1D bit_rate_value_minus1 = {}; + ArrayWrapper1D cpb_size_value_minus1 = {}; + ArrayWrapper1D cbr_flag = {}; + uint32_t initial_cpb_removal_delay_length_minus1 = {}; + uint32_t cpb_removal_delay_length_minus1 = {}; + uint32_t dpb_output_delay_length_minus1 = {}; + uint32_t time_offset_length = {}; + }; + + struct H264SequenceParameterSetVui + { + using NativeType = StdVideoH264SequenceParameterSetVui; + + operator StdVideoH264SequenceParameterSetVui const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264SequenceParameterSetVui &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264SequenceParameterSetVui const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH264SequenceParameterSetVui *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H264SequenceParameterSetVui const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( aspect_ratio_idc == rhs.aspect_ratio_idc ) && + ( sar_width == rhs.sar_width ) && + ( sar_height == rhs.sar_height ) && + ( video_format == rhs.video_format ) && + ( colour_primaries == rhs.colour_primaries ) && + ( transfer_characteristics == rhs.transfer_characteristics ) && + ( matrix_coefficients == rhs.matrix_coefficients ) && + ( num_units_in_tick == rhs.num_units_in_tick ) && + ( time_scale == rhs.time_scale ) && + ( max_num_reorder_frames == rhs.max_num_reorder_frames ) && + ( max_dec_frame_buffering == rhs.max_dec_frame_buffering ) && + ( chroma_sample_loc_type_top_field == rhs.chroma_sample_loc_type_top_field ) && + ( chroma_sample_loc_type_bottom_field == rhs.chroma_sample_loc_type_bottom_field ) && + ( reserved1 == rhs.reserved1 ) && + ( pHrdParameters == rhs.pHrdParameters ); + } + + bool operator!=( H264SequenceParameterSetVui const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SpsVuiFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264AspectRatioIdc aspect_ratio_idc = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264AspectRatioIdc::eUnspecified; + uint16_t sar_width = {}; + uint16_t sar_height = {}; + uint8_t video_format = {}; + uint8_t colour_primaries = {}; + uint8_t transfer_characteristics = {}; + uint8_t matrix_coefficients = {}; + uint32_t num_units_in_tick = {}; + uint32_t time_scale = {}; + uint8_t max_num_reorder_frames = {}; + uint8_t max_dec_frame_buffering = {}; + uint8_t chroma_sample_loc_type_top_field = {}; + uint8_t chroma_sample_loc_type_bottom_field = {}; + uint32_t reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264HrdParameters const * pHrdParameters = {}; + }; + + struct H264SpsFlags + { + using NativeType = StdVideoH264SpsFlags; + + operator StdVideoH264SpsFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264SpsFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264SpsFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH264SpsFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H264SpsFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( constraint_set0_flag == rhs.constraint_set0_flag ) && + ( constraint_set1_flag == rhs.constraint_set1_flag ) && + ( constraint_set2_flag == rhs.constraint_set2_flag ) && + ( constraint_set3_flag == rhs.constraint_set3_flag ) && + ( constraint_set4_flag == rhs.constraint_set4_flag ) && + ( constraint_set5_flag == rhs.constraint_set5_flag ) && + ( direct_8x8_inference_flag == rhs.direct_8x8_inference_flag ) && + ( mb_adaptive_frame_field_flag == rhs.mb_adaptive_frame_field_flag ) && + ( frame_mbs_only_flag == rhs.frame_mbs_only_flag ) && + ( delta_pic_order_always_zero_flag == rhs.delta_pic_order_always_zero_flag ) && + ( separate_colour_plane_flag == rhs.separate_colour_plane_flag ) && + ( gaps_in_frame_num_value_allowed_flag == rhs.gaps_in_frame_num_value_allowed_flag ) && + ( qpprime_y_zero_transform_bypass_flag == rhs.qpprime_y_zero_transform_bypass_flag ) && + ( frame_cropping_flag == rhs.frame_cropping_flag ) && + ( seq_scaling_matrix_present_flag == rhs.seq_scaling_matrix_present_flag ) && + ( vui_parameters_present_flag == rhs.vui_parameters_present_flag ); + } + + bool operator!=( H264SpsFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t constraint_set0_flag : 1; + uint32_t constraint_set1_flag : 1; + uint32_t constraint_set2_flag : 1; + uint32_t constraint_set3_flag : 1; + uint32_t constraint_set4_flag : 1; + uint32_t constraint_set5_flag : 1; + uint32_t direct_8x8_inference_flag : 1; + uint32_t mb_adaptive_frame_field_flag : 1; + uint32_t frame_mbs_only_flag : 1; + uint32_t delta_pic_order_always_zero_flag : 1; + uint32_t separate_colour_plane_flag : 1; + uint32_t gaps_in_frame_num_value_allowed_flag : 1; + uint32_t qpprime_y_zero_transform_bypass_flag : 1; + uint32_t frame_cropping_flag : 1; + uint32_t seq_scaling_matrix_present_flag : 1; + uint32_t vui_parameters_present_flag : 1; + }; + + struct H264ScalingLists + { + using NativeType = StdVideoH264ScalingLists; + + operator StdVideoH264ScalingLists const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264ScalingLists &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264ScalingLists const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH264ScalingLists *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H264ScalingLists const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( scaling_list_present_mask == rhs.scaling_list_present_mask ) && + ( use_default_scaling_matrix_mask == rhs.use_default_scaling_matrix_mask ) && + ( ScalingList4x4 == rhs.ScalingList4x4 ) && + ( ScalingList8x8 == rhs.ScalingList8x8 ); + } + + bool operator!=( H264ScalingLists const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint16_t scaling_list_present_mask = {}; + uint16_t use_default_scaling_matrix_mask = {}; + ArrayWrapper2D ScalingList4x4 = {}; + ArrayWrapper2D ScalingList8x8 = {}; + }; + + struct H264SequenceParameterSet + { + using NativeType = StdVideoH264SequenceParameterSet; + + operator StdVideoH264SequenceParameterSet const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264SequenceParameterSet &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264SequenceParameterSet const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH264SequenceParameterSet *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H264SequenceParameterSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( profile_idc == rhs.profile_idc ) && + ( level_idc == rhs.level_idc ) && + ( chroma_format_idc == rhs.chroma_format_idc ) && + ( seq_parameter_set_id == rhs.seq_parameter_set_id ) && + ( bit_depth_luma_minus8 == rhs.bit_depth_luma_minus8 ) && + ( bit_depth_chroma_minus8 == rhs.bit_depth_chroma_minus8 ) && + ( log2_max_frame_num_minus4 == rhs.log2_max_frame_num_minus4 ) && + ( pic_order_cnt_type == rhs.pic_order_cnt_type ) && + ( offset_for_non_ref_pic == rhs.offset_for_non_ref_pic ) && + ( offset_for_top_to_bottom_field == rhs.offset_for_top_to_bottom_field ) && + ( log2_max_pic_order_cnt_lsb_minus4 == rhs.log2_max_pic_order_cnt_lsb_minus4 ) && + ( num_ref_frames_in_pic_order_cnt_cycle == rhs.num_ref_frames_in_pic_order_cnt_cycle ) && + ( max_num_ref_frames == rhs.max_num_ref_frames ) && + ( reserved1 == rhs.reserved1 ) && + ( pic_width_in_mbs_minus1 == rhs.pic_width_in_mbs_minus1 ) && + ( pic_height_in_map_units_minus1 == rhs.pic_height_in_map_units_minus1 ) && + ( frame_crop_left_offset == rhs.frame_crop_left_offset ) && + ( frame_crop_right_offset == rhs.frame_crop_right_offset ) && + ( frame_crop_top_offset == rhs.frame_crop_top_offset ) && + ( frame_crop_bottom_offset == rhs.frame_crop_bottom_offset ) && + ( reserved2 == rhs.reserved2 ) && + ( pOffsetForRefFrame == rhs.pOffsetForRefFrame ) && + ( pScalingLists == rhs.pScalingLists ) && + ( pSequenceParameterSetVui == rhs.pSequenceParameterSetVui ); + } + + bool operator!=( H264SequenceParameterSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SpsFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ProfileIdc profile_idc = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ProfileIdc::eBaseline; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264LevelIdc level_idc = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264LevelIdc::e1_0; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ChromaFormatIdc chroma_format_idc = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ChromaFormatIdc::eMonochrome; + uint8_t seq_parameter_set_id = {}; + uint8_t bit_depth_luma_minus8 = {}; + uint8_t bit_depth_chroma_minus8 = {}; + uint8_t log2_max_frame_num_minus4 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PocType pic_order_cnt_type = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PocType::e0; + int32_t offset_for_non_ref_pic = {}; + int32_t offset_for_top_to_bottom_field = {}; + uint8_t log2_max_pic_order_cnt_lsb_minus4 = {}; + uint8_t num_ref_frames_in_pic_order_cnt_cycle = {}; + uint8_t max_num_ref_frames = {}; + uint8_t reserved1 = {}; + uint32_t pic_width_in_mbs_minus1 = {}; + uint32_t pic_height_in_map_units_minus1 = {}; + uint32_t frame_crop_left_offset = {}; + uint32_t frame_crop_right_offset = {}; + uint32_t frame_crop_top_offset = {}; + uint32_t frame_crop_bottom_offset = {}; + uint32_t reserved2 = {}; + int32_t const * pOffsetForRefFrame = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingLists const * pScalingLists = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SequenceParameterSetVui const * pSequenceParameterSetVui = {}; + }; + + struct H264PpsFlags + { + using NativeType = StdVideoH264PpsFlags; + + operator StdVideoH264PpsFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264PpsFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264PpsFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH264PpsFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H264PpsFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( transform_8x8_mode_flag == rhs.transform_8x8_mode_flag ) && + ( redundant_pic_cnt_present_flag == rhs.redundant_pic_cnt_present_flag ) && + ( constrained_intra_pred_flag == rhs.constrained_intra_pred_flag ) && + ( deblocking_filter_control_present_flag == rhs.deblocking_filter_control_present_flag ) && + ( weighted_pred_flag == rhs.weighted_pred_flag ) && + ( bottom_field_pic_order_in_frame_present_flag == rhs.bottom_field_pic_order_in_frame_present_flag ) && + ( entropy_coding_mode_flag == rhs.entropy_coding_mode_flag ) && + ( pic_scaling_matrix_present_flag == rhs.pic_scaling_matrix_present_flag ); + } + + bool operator!=( H264PpsFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t transform_8x8_mode_flag : 1; + uint32_t redundant_pic_cnt_present_flag : 1; + uint32_t constrained_intra_pred_flag : 1; + uint32_t deblocking_filter_control_present_flag : 1; + uint32_t weighted_pred_flag : 1; + uint32_t bottom_field_pic_order_in_frame_present_flag : 1; + uint32_t entropy_coding_mode_flag : 1; + uint32_t pic_scaling_matrix_present_flag : 1; + }; + + struct H264PictureParameterSet + { + using NativeType = StdVideoH264PictureParameterSet; + + operator StdVideoH264PictureParameterSet const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264PictureParameterSet &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH264PictureParameterSet const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH264PictureParameterSet *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H264PictureParameterSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( seq_parameter_set_id == rhs.seq_parameter_set_id ) && + ( pic_parameter_set_id == rhs.pic_parameter_set_id ) && + ( num_ref_idx_l0_default_active_minus1 == rhs.num_ref_idx_l0_default_active_minus1 ) && + ( num_ref_idx_l1_default_active_minus1 == rhs.num_ref_idx_l1_default_active_minus1 ) && + ( weighted_bipred_idc == rhs.weighted_bipred_idc ) && + ( pic_init_qp_minus26 == rhs.pic_init_qp_minus26 ) && + ( pic_init_qs_minus26 == rhs.pic_init_qs_minus26 ) && + ( chroma_qp_index_offset == rhs.chroma_qp_index_offset ) && + ( second_chroma_qp_index_offset == rhs.second_chroma_qp_index_offset ) && + ( pScalingLists == rhs.pScalingLists ); + } + + bool operator!=( H264PictureParameterSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PpsFlags flags = {}; + uint8_t seq_parameter_set_id = {}; + uint8_t pic_parameter_set_id = {}; + uint8_t num_ref_idx_l0_default_active_minus1 = {}; + uint8_t num_ref_idx_l1_default_active_minus1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264WeightedBipredIdc weighted_bipred_idc = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264WeightedBipredIdc::eDefault; + int8_t pic_init_qp_minus26 = {}; + int8_t pic_init_qs_minus26 = {}; + int8_t chroma_qp_index_offset = {}; + int8_t second_chroma_qp_index_offset = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ScalingLists const * pScalingLists = {}; + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ ) + //=== vulkan_video_codec_h264std_decode === + + struct DecodeH264PictureInfoFlags + { + using NativeType = StdVideoDecodeH264PictureInfoFlags; + + operator StdVideoDecodeH264PictureInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH264PictureInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH264PictureInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeH264PictureInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeH264PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( field_pic_flag == rhs.field_pic_flag ) && + ( is_intra == rhs.is_intra ) && + ( IdrPicFlag == rhs.IdrPicFlag ) && + ( bottom_field_flag == rhs.bottom_field_flag ) && + ( is_reference == rhs.is_reference ) && + ( complementary_field_pair == rhs.complementary_field_pair ); + } + + bool operator!=( DecodeH264PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t field_pic_flag : 1; + uint32_t is_intra : 1; + uint32_t IdrPicFlag : 1; + uint32_t bottom_field_flag : 1; + uint32_t is_reference : 1; + uint32_t complementary_field_pair : 1; + }; + + struct DecodeH264PictureInfo + { + using NativeType = StdVideoDecodeH264PictureInfo; + + operator StdVideoDecodeH264PictureInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH264PictureInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH264PictureInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeH264PictureInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeH264PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( seq_parameter_set_id == rhs.seq_parameter_set_id ) && + ( pic_parameter_set_id == rhs.pic_parameter_set_id ) && + ( reserved1 == rhs.reserved1 ) && + ( reserved2 == rhs.reserved2 ) && + ( frame_num == rhs.frame_num ) && + ( idr_pic_id == rhs.idr_pic_id ) && + ( PicOrderCnt == rhs.PicOrderCnt ); + } + + bool operator!=( DecodeH264PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH264PictureInfoFlags flags = {}; + uint8_t seq_parameter_set_id = {}; + uint8_t pic_parameter_set_id = {}; + uint8_t reserved1 = {}; + uint8_t reserved2 = {}; + uint16_t frame_num = {}; + uint16_t idr_pic_id = {}; + ArrayWrapper1D PicOrderCnt = {}; + }; + + struct DecodeH264ReferenceInfoFlags + { + using NativeType = StdVideoDecodeH264ReferenceInfoFlags; + + operator StdVideoDecodeH264ReferenceInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH264ReferenceInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH264ReferenceInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeH264ReferenceInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeH264ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( top_field_flag == rhs.top_field_flag ) && + ( bottom_field_flag == rhs.bottom_field_flag ) && + ( used_for_long_term_reference == rhs.used_for_long_term_reference ) && + ( is_non_existing == rhs.is_non_existing ); + } + + bool operator!=( DecodeH264ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t top_field_flag : 1; + uint32_t bottom_field_flag : 1; + uint32_t used_for_long_term_reference : 1; + uint32_t is_non_existing : 1; + }; + + struct DecodeH264ReferenceInfo + { + using NativeType = StdVideoDecodeH264ReferenceInfo; + + operator StdVideoDecodeH264ReferenceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH264ReferenceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH264ReferenceInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeH264ReferenceInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeH264ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && ( FrameNum == rhs.FrameNum ) && ( reserved == rhs.reserved ) && ( PicOrderCnt == rhs.PicOrderCnt ); + } + + bool operator!=( DecodeH264ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH264ReferenceInfoFlags flags = {}; + uint16_t FrameNum = {}; + uint16_t reserved = {}; + ArrayWrapper1D PicOrderCnt = {}; + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ ) + //=== vulkan_video_codec_h264std_encode === + + struct EncodeH264WeightTableFlags + { + using NativeType = StdVideoEncodeH264WeightTableFlags; + + operator StdVideoEncodeH264WeightTableFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264WeightTableFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264WeightTableFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264WeightTableFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264WeightTableFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( luma_weight_l0_flag == rhs.luma_weight_l0_flag ) && + ( chroma_weight_l0_flag == rhs.chroma_weight_l0_flag ) && + ( luma_weight_l1_flag == rhs.luma_weight_l1_flag ) && + ( chroma_weight_l1_flag == rhs.chroma_weight_l1_flag ); + } + + bool operator!=( EncodeH264WeightTableFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t luma_weight_l0_flag = {}; + uint32_t chroma_weight_l0_flag = {}; + uint32_t luma_weight_l1_flag = {}; + uint32_t chroma_weight_l1_flag = {}; + }; + + struct EncodeH264WeightTable + { + using NativeType = StdVideoEncodeH264WeightTable; + + operator StdVideoEncodeH264WeightTable const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264WeightTable &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264WeightTable const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264WeightTable *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264WeightTable const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( luma_log2_weight_denom == rhs.luma_log2_weight_denom ) && + ( chroma_log2_weight_denom == rhs.chroma_log2_weight_denom ) && + ( luma_weight_l0 == rhs.luma_weight_l0 ) && + ( luma_offset_l0 == rhs.luma_offset_l0 ) && + ( chroma_weight_l0 == rhs.chroma_weight_l0 ) && + ( chroma_offset_l0 == rhs.chroma_offset_l0 ) && + ( luma_weight_l1 == rhs.luma_weight_l1 ) && + ( luma_offset_l1 == rhs.luma_offset_l1 ) && + ( chroma_weight_l1 == rhs.chroma_weight_l1 ) && + ( chroma_offset_l1 == rhs.chroma_offset_l1 ); + } + + bool operator!=( EncodeH264WeightTable const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264WeightTableFlags flags = {}; + uint8_t luma_log2_weight_denom = {}; + uint8_t chroma_log2_weight_denom = {}; + ArrayWrapper1D luma_weight_l0 = {}; + ArrayWrapper1D luma_offset_l0 = {}; + ArrayWrapper2D chroma_weight_l0 = {}; + ArrayWrapper2D chroma_offset_l0 = {}; + ArrayWrapper1D luma_weight_l1 = {}; + ArrayWrapper1D luma_offset_l1 = {}; + ArrayWrapper2D chroma_weight_l1 = {}; + ArrayWrapper2D chroma_offset_l1 = {}; + }; + + struct EncodeH264SliceHeaderFlags + { + using NativeType = StdVideoEncodeH264SliceHeaderFlags; + + operator StdVideoEncodeH264SliceHeaderFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264SliceHeaderFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264SliceHeaderFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264SliceHeaderFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264SliceHeaderFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( direct_spatial_mv_pred_flag == rhs.direct_spatial_mv_pred_flag ) && + ( num_ref_idx_active_override_flag == rhs.num_ref_idx_active_override_flag ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeH264SliceHeaderFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t direct_spatial_mv_pred_flag : 1; + uint32_t num_ref_idx_active_override_flag : 1; + uint32_t reserved : 30; + }; + + struct EncodeH264PictureInfoFlags + { + using NativeType = StdVideoEncodeH264PictureInfoFlags; + + operator StdVideoEncodeH264PictureInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264PictureInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264PictureInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264PictureInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( IdrPicFlag == rhs.IdrPicFlag ) && + ( is_reference == rhs.is_reference ) && + ( no_output_of_prior_pics_flag == rhs.no_output_of_prior_pics_flag ) && + ( long_term_reference_flag == rhs.long_term_reference_flag ) && + ( adaptive_ref_pic_marking_mode_flag == rhs.adaptive_ref_pic_marking_mode_flag ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeH264PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t IdrPicFlag : 1; + uint32_t is_reference : 1; + uint32_t no_output_of_prior_pics_flag : 1; + uint32_t long_term_reference_flag : 1; + uint32_t adaptive_ref_pic_marking_mode_flag : 1; + uint32_t reserved : 27; + }; + + struct EncodeH264ReferenceInfoFlags + { + using NativeType = StdVideoEncodeH264ReferenceInfoFlags; + + operator StdVideoEncodeH264ReferenceInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( used_for_long_term_reference == rhs.used_for_long_term_reference ) && ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeH264ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t used_for_long_term_reference : 1; + uint32_t reserved : 31; + }; + + struct EncodeH264ReferenceListsInfoFlags + { + using NativeType = StdVideoEncodeH264ReferenceListsInfoFlags; + + operator StdVideoEncodeH264ReferenceListsInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceListsInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceListsInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceListsInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264ReferenceListsInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( ref_pic_list_modification_flag_l0 == rhs.ref_pic_list_modification_flag_l0 ) && + ( ref_pic_list_modification_flag_l1 == rhs.ref_pic_list_modification_flag_l1 ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeH264ReferenceListsInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t ref_pic_list_modification_flag_l0 : 1; + uint32_t ref_pic_list_modification_flag_l1 : 1; + uint32_t reserved : 30; + }; + + struct EncodeH264RefListModEntry + { + using NativeType = StdVideoEncodeH264RefListModEntry; + + operator StdVideoEncodeH264RefListModEntry const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264RefListModEntry &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264RefListModEntry const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264RefListModEntry *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264RefListModEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( modification_of_pic_nums_idc == rhs.modification_of_pic_nums_idc ) && + ( abs_diff_pic_num_minus1 == rhs.abs_diff_pic_num_minus1 ) && + ( long_term_pic_num == rhs.long_term_pic_num ); + } + + bool operator!=( EncodeH264RefListModEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ModificationOfPicNumsIdc modification_of_pic_nums_idc = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264ModificationOfPicNumsIdc::eShortTermSubtract; + uint16_t abs_diff_pic_num_minus1 = {}; + uint16_t long_term_pic_num = {}; + }; + + struct EncodeH264RefPicMarkingEntry + { + using NativeType = StdVideoEncodeH264RefPicMarkingEntry; + + operator StdVideoEncodeH264RefPicMarkingEntry const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264RefPicMarkingEntry &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264RefPicMarkingEntry const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264RefPicMarkingEntry *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264RefPicMarkingEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( memory_management_control_operation == rhs.memory_management_control_operation ) && + ( difference_of_pic_nums_minus1 == rhs.difference_of_pic_nums_minus1 ) && + ( long_term_pic_num == rhs.long_term_pic_num ) && + ( long_term_frame_idx == rhs.long_term_frame_idx ) && + ( max_long_term_frame_idx_plus1 == rhs.max_long_term_frame_idx_plus1 ); + } + + bool operator!=( EncodeH264RefPicMarkingEntry const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264MemMgmtControlOp memory_management_control_operation = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264MemMgmtControlOp::eEnd; + uint16_t difference_of_pic_nums_minus1 = {}; + uint16_t long_term_pic_num = {}; + uint16_t long_term_frame_idx = {}; + uint16_t max_long_term_frame_idx_plus1 = {}; + }; + + struct EncodeH264ReferenceListsInfo + { + using NativeType = StdVideoEncodeH264ReferenceListsInfo; + + operator StdVideoEncodeH264ReferenceListsInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceListsInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceListsInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceListsInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264ReferenceListsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( num_ref_idx_l0_active_minus1 == rhs.num_ref_idx_l0_active_minus1 ) && + ( num_ref_idx_l1_active_minus1 == rhs.num_ref_idx_l1_active_minus1 ) && + ( RefPicList0 == rhs.RefPicList0 ) && + ( RefPicList1 == rhs.RefPicList1 ) && + ( refList0ModOpCount == rhs.refList0ModOpCount ) && + ( refList1ModOpCount == rhs.refList1ModOpCount ) && + ( refPicMarkingOpCount == rhs.refPicMarkingOpCount ) && + ( reserved1 == rhs.reserved1 ) && + ( pRefList0ModOperations == rhs.pRefList0ModOperations ) && + ( pRefList1ModOperations == rhs.pRefList1ModOperations ) && + ( pRefPicMarkingOperations == rhs.pRefPicMarkingOperations ); + } + + bool operator!=( EncodeH264ReferenceListsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264ReferenceListsInfoFlags flags = {}; + uint8_t num_ref_idx_l0_active_minus1 = {}; + uint8_t num_ref_idx_l1_active_minus1 = {}; + ArrayWrapper1D RefPicList0 = {}; + ArrayWrapper1D RefPicList1 = {}; + uint8_t refList0ModOpCount = {}; + uint8_t refList1ModOpCount = {}; + uint8_t refPicMarkingOpCount = {}; + ArrayWrapper1D reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefListModEntry const * pRefList0ModOperations = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefListModEntry const * pRefList1ModOperations = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264RefPicMarkingEntry const * pRefPicMarkingOperations = {}; + }; + + struct EncodeH264PictureInfo + { + using NativeType = StdVideoEncodeH264PictureInfo; + + operator StdVideoEncodeH264PictureInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264PictureInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264PictureInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264PictureInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( seq_parameter_set_id == rhs.seq_parameter_set_id ) && + ( pic_parameter_set_id == rhs.pic_parameter_set_id ) && + ( idr_pic_id == rhs.idr_pic_id ) && + ( primary_pic_type == rhs.primary_pic_type ) && + ( frame_num == rhs.frame_num ) && + ( PicOrderCnt == rhs.PicOrderCnt ) && + ( temporal_id == rhs.temporal_id ) && + ( reserved1 == rhs.reserved1 ) && + ( pRefLists == rhs.pRefLists ); + } + + bool operator!=( EncodeH264PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264PictureInfoFlags flags = {}; + uint8_t seq_parameter_set_id = {}; + uint8_t pic_parameter_set_id = {}; + uint16_t idr_pic_id = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PictureType primary_pic_type = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PictureType::eP; + uint32_t frame_num = {}; + int32_t PicOrderCnt = {}; + uint8_t temporal_id = {}; + ArrayWrapper1D reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264ReferenceListsInfo const * pRefLists = {}; + }; + + struct EncodeH264ReferenceInfo + { + using NativeType = StdVideoEncodeH264ReferenceInfo; + + operator StdVideoEncodeH264ReferenceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264ReferenceInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( primary_pic_type == rhs.primary_pic_type ) && + ( FrameNum == rhs.FrameNum ) && + ( PicOrderCnt == rhs.PicOrderCnt ) && + ( long_term_pic_num == rhs.long_term_pic_num ) && + ( long_term_frame_idx == rhs.long_term_frame_idx ) && + ( temporal_id == rhs.temporal_id ); + } + + bool operator!=( EncodeH264ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264ReferenceInfoFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PictureType primary_pic_type = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264PictureType::eP; + uint32_t FrameNum = {}; + int32_t PicOrderCnt = {}; + uint16_t long_term_pic_num = {}; + uint16_t long_term_frame_idx = {}; + uint8_t temporal_id = {}; + }; + + struct EncodeH264SliceHeader + { + using NativeType = StdVideoEncodeH264SliceHeader; + + operator StdVideoEncodeH264SliceHeader const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264SliceHeader &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH264SliceHeader const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH264SliceHeader *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH264SliceHeader const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( first_mb_in_slice == rhs.first_mb_in_slice ) && + ( slice_type == rhs.slice_type ) && + ( slice_alpha_c0_offset_div2 == rhs.slice_alpha_c0_offset_div2 ) && + ( slice_beta_offset_div2 == rhs.slice_beta_offset_div2 ) && + ( slice_qp_delta == rhs.slice_qp_delta ) && + ( reserved1 == rhs.reserved1 ) && + ( cabac_init_idc == rhs.cabac_init_idc ) && + ( disable_deblocking_filter_idc == rhs.disable_deblocking_filter_idc ) && + ( pWeightTable == rhs.pWeightTable ); + } + + bool operator!=( EncodeH264SliceHeader const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264SliceHeaderFlags flags = {}; + uint32_t first_mb_in_slice = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SliceType slice_type = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264SliceType::eP; + int8_t slice_alpha_c0_offset_div2 = {}; + int8_t slice_beta_offset_div2 = {}; + int8_t slice_qp_delta = {}; + uint8_t reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264CabacInitIdc cabac_init_idc = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264CabacInitIdc::e0; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264DisableDeblockingFilterIdc disable_deblocking_filter_idc = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H264DisableDeblockingFilterIdc::eDisabled; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH264WeightTable const * pWeightTable = {}; + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_H265STD_H_ ) + //=== vulkan_video_codec_h265std === + + struct H265DecPicBufMgr + { + using NativeType = StdVideoH265DecPicBufMgr; + + operator StdVideoH265DecPicBufMgr const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265DecPicBufMgr &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265DecPicBufMgr const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265DecPicBufMgr *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265DecPicBufMgr const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( max_latency_increase_plus1 == rhs.max_latency_increase_plus1 ) && + ( max_dec_pic_buffering_minus1 == rhs.max_dec_pic_buffering_minus1 ) && + ( max_num_reorder_pics == rhs.max_num_reorder_pics ); + } + + bool operator!=( H265DecPicBufMgr const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + ArrayWrapper1D max_latency_increase_plus1 = {}; + ArrayWrapper1D max_dec_pic_buffering_minus1 = {}; + ArrayWrapper1D max_num_reorder_pics = {}; + }; + + struct H265SubLayerHrdParameters + { + using NativeType = StdVideoH265SubLayerHrdParameters; + + operator StdVideoH265SubLayerHrdParameters const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265SubLayerHrdParameters &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265SubLayerHrdParameters const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265SubLayerHrdParameters *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265SubLayerHrdParameters const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( bit_rate_value_minus1 == rhs.bit_rate_value_minus1 ) && + ( cpb_size_value_minus1 == rhs.cpb_size_value_minus1 ) && + ( cpb_size_du_value_minus1 == rhs.cpb_size_du_value_minus1 ) && + ( bit_rate_du_value_minus1 == rhs.bit_rate_du_value_minus1 ) && + ( cbr_flag == rhs.cbr_flag ); + } + + bool operator!=( H265SubLayerHrdParameters const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + ArrayWrapper1D bit_rate_value_minus1 = {}; + ArrayWrapper1D cpb_size_value_minus1 = {}; + ArrayWrapper1D cpb_size_du_value_minus1 = {}; + ArrayWrapper1D bit_rate_du_value_minus1 = {}; + uint32_t cbr_flag = {}; + }; + + struct H265HrdFlags + { + using NativeType = StdVideoH265HrdFlags; + + operator StdVideoH265HrdFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265HrdFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265HrdFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265HrdFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265HrdFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( nal_hrd_parameters_present_flag == rhs.nal_hrd_parameters_present_flag ) && + ( vcl_hrd_parameters_present_flag == rhs.vcl_hrd_parameters_present_flag ) && + ( sub_pic_hrd_params_present_flag == rhs.sub_pic_hrd_params_present_flag ) && + ( sub_pic_cpb_params_in_pic_timing_sei_flag == rhs.sub_pic_cpb_params_in_pic_timing_sei_flag ) && + ( fixed_pic_rate_general_flag == rhs.fixed_pic_rate_general_flag ) && + ( fixed_pic_rate_within_cvs_flag == rhs.fixed_pic_rate_within_cvs_flag ) && + ( low_delay_hrd_flag == rhs.low_delay_hrd_flag ); + } + + bool operator!=( H265HrdFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t nal_hrd_parameters_present_flag : 1; + uint32_t vcl_hrd_parameters_present_flag : 1; + uint32_t sub_pic_hrd_params_present_flag : 1; + uint32_t sub_pic_cpb_params_in_pic_timing_sei_flag : 1; + uint32_t fixed_pic_rate_general_flag : 8; + uint32_t fixed_pic_rate_within_cvs_flag : 8; + uint32_t low_delay_hrd_flag : 8; + }; + + struct H265HrdParameters + { + using NativeType = StdVideoH265HrdParameters; + + operator StdVideoH265HrdParameters const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265HrdParameters &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265HrdParameters const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265HrdParameters *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265HrdParameters const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( tick_divisor_minus2 == rhs.tick_divisor_minus2 ) && + ( du_cpb_removal_delay_increment_length_minus1 == rhs.du_cpb_removal_delay_increment_length_minus1 ) && + ( dpb_output_delay_du_length_minus1 == rhs.dpb_output_delay_du_length_minus1 ) && + ( bit_rate_scale == rhs.bit_rate_scale ) && + ( cpb_size_scale == rhs.cpb_size_scale ) && + ( cpb_size_du_scale == rhs.cpb_size_du_scale ) && + ( initial_cpb_removal_delay_length_minus1 == rhs.initial_cpb_removal_delay_length_minus1 ) && + ( au_cpb_removal_delay_length_minus1 == rhs.au_cpb_removal_delay_length_minus1 ) && + ( dpb_output_delay_length_minus1 == rhs.dpb_output_delay_length_minus1 ) && + ( cpb_cnt_minus1 == rhs.cpb_cnt_minus1 ) && + ( elemental_duration_in_tc_minus1 == rhs.elemental_duration_in_tc_minus1 ) && + ( reserved == rhs.reserved ) && + ( pSubLayerHrdParametersNal == rhs.pSubLayerHrdParametersNal ) && + ( pSubLayerHrdParametersVcl == rhs.pSubLayerHrdParametersVcl ); + } + + bool operator!=( H265HrdParameters const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265HrdFlags flags = {}; + uint8_t tick_divisor_minus2 = {}; + uint8_t du_cpb_removal_delay_increment_length_minus1 = {}; + uint8_t dpb_output_delay_du_length_minus1 = {}; + uint8_t bit_rate_scale = {}; + uint8_t cpb_size_scale = {}; + uint8_t cpb_size_du_scale = {}; + uint8_t initial_cpb_removal_delay_length_minus1 = {}; + uint8_t au_cpb_removal_delay_length_minus1 = {}; + uint8_t dpb_output_delay_length_minus1 = {}; + ArrayWrapper1D cpb_cnt_minus1 = {}; + ArrayWrapper1D elemental_duration_in_tc_minus1 = {}; + ArrayWrapper1D reserved = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SubLayerHrdParameters const * pSubLayerHrdParametersNal = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SubLayerHrdParameters const * pSubLayerHrdParametersVcl = {}; + }; + + struct H265VpsFlags + { + using NativeType = StdVideoH265VpsFlags; + + operator StdVideoH265VpsFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265VpsFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265VpsFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265VpsFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265VpsFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( vps_temporal_id_nesting_flag == rhs.vps_temporal_id_nesting_flag ) && + ( vps_sub_layer_ordering_info_present_flag == rhs.vps_sub_layer_ordering_info_present_flag ) && + ( vps_timing_info_present_flag == rhs.vps_timing_info_present_flag ) && + ( vps_poc_proportional_to_timing_flag == rhs.vps_poc_proportional_to_timing_flag ); + } + + bool operator!=( H265VpsFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t vps_temporal_id_nesting_flag : 1; + uint32_t vps_sub_layer_ordering_info_present_flag : 1; + uint32_t vps_timing_info_present_flag : 1; + uint32_t vps_poc_proportional_to_timing_flag : 1; + }; + + struct H265ProfileTierLevelFlags + { + using NativeType = StdVideoH265ProfileTierLevelFlags; + + operator StdVideoH265ProfileTierLevelFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265ProfileTierLevelFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265ProfileTierLevelFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265ProfileTierLevelFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265ProfileTierLevelFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( general_tier_flag == rhs.general_tier_flag ) && + ( general_progressive_source_flag == rhs.general_progressive_source_flag ) && + ( general_interlaced_source_flag == rhs.general_interlaced_source_flag ) && + ( general_non_packed_constraint_flag == rhs.general_non_packed_constraint_flag ) && + ( general_frame_only_constraint_flag == rhs.general_frame_only_constraint_flag ); + } + + bool operator!=( H265ProfileTierLevelFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t general_tier_flag : 1; + uint32_t general_progressive_source_flag : 1; + uint32_t general_interlaced_source_flag : 1; + uint32_t general_non_packed_constraint_flag : 1; + uint32_t general_frame_only_constraint_flag : 1; + }; + + struct H265ProfileTierLevel + { + using NativeType = StdVideoH265ProfileTierLevel; + + operator StdVideoH265ProfileTierLevel const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265ProfileTierLevel &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265ProfileTierLevel const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265ProfileTierLevel *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265ProfileTierLevel const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && ( general_profile_idc == rhs.general_profile_idc ) && ( general_level_idc == rhs.general_level_idc ); + } + + bool operator!=( H265ProfileTierLevel const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileTierLevelFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileIdc general_profile_idc = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileIdc::eMain; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265LevelIdc general_level_idc = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265LevelIdc::e1_0; + }; + + struct H265VideoParameterSet + { + using NativeType = StdVideoH265VideoParameterSet; + + operator StdVideoH265VideoParameterSet const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265VideoParameterSet &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265VideoParameterSet const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265VideoParameterSet *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265VideoParameterSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( vps_video_parameter_set_id == rhs.vps_video_parameter_set_id ) && + ( vps_max_sub_layers_minus1 == rhs.vps_max_sub_layers_minus1 ) && + ( reserved1 == rhs.reserved1 ) && + ( reserved2 == rhs.reserved2 ) && + ( vps_num_units_in_tick == rhs.vps_num_units_in_tick ) && + ( vps_time_scale == rhs.vps_time_scale ) && + ( vps_num_ticks_poc_diff_one_minus1 == rhs.vps_num_ticks_poc_diff_one_minus1 ) && + ( reserved3 == rhs.reserved3 ) && + ( pDecPicBufMgr == rhs.pDecPicBufMgr ) && + ( pHrdParameters == rhs.pHrdParameters ) && + ( pProfileTierLevel == rhs.pProfileTierLevel ); + } + + bool operator!=( H265VideoParameterSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265VpsFlags flags = {}; + uint8_t vps_video_parameter_set_id = {}; + uint8_t vps_max_sub_layers_minus1 = {}; + uint8_t reserved1 = {}; + uint8_t reserved2 = {}; + uint32_t vps_num_units_in_tick = {}; + uint32_t vps_time_scale = {}; + uint32_t vps_num_ticks_poc_diff_one_minus1 = {}; + uint32_t reserved3 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265DecPicBufMgr const * pDecPicBufMgr = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265HrdParameters const * pHrdParameters = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileTierLevel const * pProfileTierLevel = {}; + }; + + struct H265ScalingLists + { + using NativeType = StdVideoH265ScalingLists; + + operator StdVideoH265ScalingLists const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265ScalingLists &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265ScalingLists const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265ScalingLists *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265ScalingLists const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( ScalingList4x4 == rhs.ScalingList4x4 ) && + ( ScalingList8x8 == rhs.ScalingList8x8 ) && + ( ScalingList16x16 == rhs.ScalingList16x16 ) && + ( ScalingList32x32 == rhs.ScalingList32x32 ) && + ( ScalingListDCCoef16x16 == rhs.ScalingListDCCoef16x16 ) && + ( ScalingListDCCoef32x32 == rhs.ScalingListDCCoef32x32 ); + } + + bool operator!=( H265ScalingLists const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + ArrayWrapper2D ScalingList4x4 = {}; + ArrayWrapper2D ScalingList8x8 = {}; + ArrayWrapper2D ScalingList16x16 = {}; + ArrayWrapper2D ScalingList32x32 = {}; + ArrayWrapper1D ScalingListDCCoef16x16 = {}; + ArrayWrapper1D ScalingListDCCoef32x32 = {}; + }; + + struct H265SpsVuiFlags + { + using NativeType = StdVideoH265SpsVuiFlags; + + operator StdVideoH265SpsVuiFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265SpsVuiFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265SpsVuiFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265SpsVuiFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265SpsVuiFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( aspect_ratio_info_present_flag == rhs.aspect_ratio_info_present_flag ) && + ( overscan_info_present_flag == rhs.overscan_info_present_flag ) && + ( overscan_appropriate_flag == rhs.overscan_appropriate_flag ) && + ( video_signal_type_present_flag == rhs.video_signal_type_present_flag ) && + ( video_full_range_flag == rhs.video_full_range_flag ) && + ( colour_description_present_flag == rhs.colour_description_present_flag ) && + ( chroma_loc_info_present_flag == rhs.chroma_loc_info_present_flag ) && + ( neutral_chroma_indication_flag == rhs.neutral_chroma_indication_flag ) && + ( field_seq_flag == rhs.field_seq_flag ) && + ( frame_field_info_present_flag == rhs.frame_field_info_present_flag ) && + ( default_display_window_flag == rhs.default_display_window_flag ) && + ( vui_timing_info_present_flag == rhs.vui_timing_info_present_flag ) && + ( vui_poc_proportional_to_timing_flag == rhs.vui_poc_proportional_to_timing_flag ) && + ( vui_hrd_parameters_present_flag == rhs.vui_hrd_parameters_present_flag ) && + ( bitstream_restriction_flag == rhs.bitstream_restriction_flag ) && + ( tiles_fixed_structure_flag == rhs.tiles_fixed_structure_flag ) && + ( motion_vectors_over_pic_boundaries_flag == rhs.motion_vectors_over_pic_boundaries_flag ) && + ( restricted_ref_pic_lists_flag == rhs.restricted_ref_pic_lists_flag ); + } + + bool operator!=( H265SpsVuiFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t aspect_ratio_info_present_flag : 1; + uint32_t overscan_info_present_flag : 1; + uint32_t overscan_appropriate_flag : 1; + uint32_t video_signal_type_present_flag : 1; + uint32_t video_full_range_flag : 1; + uint32_t colour_description_present_flag : 1; + uint32_t chroma_loc_info_present_flag : 1; + uint32_t neutral_chroma_indication_flag : 1; + uint32_t field_seq_flag : 1; + uint32_t frame_field_info_present_flag : 1; + uint32_t default_display_window_flag : 1; + uint32_t vui_timing_info_present_flag : 1; + uint32_t vui_poc_proportional_to_timing_flag : 1; + uint32_t vui_hrd_parameters_present_flag : 1; + uint32_t bitstream_restriction_flag : 1; + uint32_t tiles_fixed_structure_flag : 1; + uint32_t motion_vectors_over_pic_boundaries_flag : 1; + uint32_t restricted_ref_pic_lists_flag : 1; + }; + + struct H265SequenceParameterSetVui + { + using NativeType = StdVideoH265SequenceParameterSetVui; + + operator StdVideoH265SequenceParameterSetVui const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265SequenceParameterSetVui &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265SequenceParameterSetVui const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265SequenceParameterSetVui *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265SequenceParameterSetVui const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( aspect_ratio_idc == rhs.aspect_ratio_idc ) && + ( sar_width == rhs.sar_width ) && + ( sar_height == rhs.sar_height ) && + ( video_format == rhs.video_format ) && + ( colour_primaries == rhs.colour_primaries ) && + ( transfer_characteristics == rhs.transfer_characteristics ) && + ( matrix_coeffs == rhs.matrix_coeffs ) && + ( chroma_sample_loc_type_top_field == rhs.chroma_sample_loc_type_top_field ) && + ( chroma_sample_loc_type_bottom_field == rhs.chroma_sample_loc_type_bottom_field ) && + ( reserved1 == rhs.reserved1 ) && + ( reserved2 == rhs.reserved2 ) && + ( def_disp_win_left_offset == rhs.def_disp_win_left_offset ) && + ( def_disp_win_right_offset == rhs.def_disp_win_right_offset ) && + ( def_disp_win_top_offset == rhs.def_disp_win_top_offset ) && + ( def_disp_win_bottom_offset == rhs.def_disp_win_bottom_offset ) && + ( vui_num_units_in_tick == rhs.vui_num_units_in_tick ) && + ( vui_time_scale == rhs.vui_time_scale ) && + ( vui_num_ticks_poc_diff_one_minus1 == rhs.vui_num_ticks_poc_diff_one_minus1 ) && + ( min_spatial_segmentation_idc == rhs.min_spatial_segmentation_idc ) && + ( reserved3 == rhs.reserved3 ) && + ( max_bytes_per_pic_denom == rhs.max_bytes_per_pic_denom ) && + ( max_bits_per_min_cu_denom == rhs.max_bits_per_min_cu_denom ) && + ( log2_max_mv_length_horizontal == rhs.log2_max_mv_length_horizontal ) && + ( log2_max_mv_length_vertical == rhs.log2_max_mv_length_vertical ) && + ( pHrdParameters == rhs.pHrdParameters ); + } + + bool operator!=( H265SequenceParameterSetVui const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SpsVuiFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265AspectRatioIdc aspect_ratio_idc = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265AspectRatioIdc::eUnspecified; + uint16_t sar_width = {}; + uint16_t sar_height = {}; + uint8_t video_format = {}; + uint8_t colour_primaries = {}; + uint8_t transfer_characteristics = {}; + uint8_t matrix_coeffs = {}; + uint8_t chroma_sample_loc_type_top_field = {}; + uint8_t chroma_sample_loc_type_bottom_field = {}; + uint8_t reserved1 = {}; + uint8_t reserved2 = {}; + uint16_t def_disp_win_left_offset = {}; + uint16_t def_disp_win_right_offset = {}; + uint16_t def_disp_win_top_offset = {}; + uint16_t def_disp_win_bottom_offset = {}; + uint32_t vui_num_units_in_tick = {}; + uint32_t vui_time_scale = {}; + uint32_t vui_num_ticks_poc_diff_one_minus1 = {}; + uint16_t min_spatial_segmentation_idc = {}; + uint16_t reserved3 = {}; + uint8_t max_bytes_per_pic_denom = {}; + uint8_t max_bits_per_min_cu_denom = {}; + uint8_t log2_max_mv_length_horizontal = {}; + uint8_t log2_max_mv_length_vertical = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265HrdParameters const * pHrdParameters = {}; + }; + + struct H265PredictorPaletteEntries + { + using NativeType = StdVideoH265PredictorPaletteEntries; + + operator StdVideoH265PredictorPaletteEntries const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265PredictorPaletteEntries &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265PredictorPaletteEntries const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265PredictorPaletteEntries *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265PredictorPaletteEntries const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( PredictorPaletteEntries == rhs.PredictorPaletteEntries ); + } + + bool operator!=( H265PredictorPaletteEntries const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + ArrayWrapper2D + PredictorPaletteEntries = {}; + }; + + struct H265SpsFlags + { + using NativeType = StdVideoH265SpsFlags; + + operator StdVideoH265SpsFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265SpsFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265SpsFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265SpsFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265SpsFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( sps_temporal_id_nesting_flag == rhs.sps_temporal_id_nesting_flag ) && + ( separate_colour_plane_flag == rhs.separate_colour_plane_flag ) && + ( conformance_window_flag == rhs.conformance_window_flag ) && + ( sps_sub_layer_ordering_info_present_flag == rhs.sps_sub_layer_ordering_info_present_flag ) && + ( scaling_list_enabled_flag == rhs.scaling_list_enabled_flag ) && + ( sps_scaling_list_data_present_flag == rhs.sps_scaling_list_data_present_flag ) && + ( amp_enabled_flag == rhs.amp_enabled_flag ) && + ( sample_adaptive_offset_enabled_flag == rhs.sample_adaptive_offset_enabled_flag ) && + ( pcm_enabled_flag == rhs.pcm_enabled_flag ) && + ( pcm_loop_filter_disabled_flag == rhs.pcm_loop_filter_disabled_flag ) && + ( long_term_ref_pics_present_flag == rhs.long_term_ref_pics_present_flag ) && + ( sps_temporal_mvp_enabled_flag == rhs.sps_temporal_mvp_enabled_flag ) && + ( strong_intra_smoothing_enabled_flag == rhs.strong_intra_smoothing_enabled_flag ) && + ( vui_parameters_present_flag == rhs.vui_parameters_present_flag ) && + ( sps_extension_present_flag == rhs.sps_extension_present_flag ) && + ( sps_range_extension_flag == rhs.sps_range_extension_flag ) && + ( transform_skip_rotation_enabled_flag == rhs.transform_skip_rotation_enabled_flag ) && + ( transform_skip_context_enabled_flag == rhs.transform_skip_context_enabled_flag ) && + ( implicit_rdpcm_enabled_flag == rhs.implicit_rdpcm_enabled_flag ) && + ( explicit_rdpcm_enabled_flag == rhs.explicit_rdpcm_enabled_flag ) && + ( extended_precision_processing_flag == rhs.extended_precision_processing_flag ) && + ( intra_smoothing_disabled_flag == rhs.intra_smoothing_disabled_flag ) && + ( high_precision_offsets_enabled_flag == rhs.high_precision_offsets_enabled_flag ) && + ( persistent_rice_adaptation_enabled_flag == rhs.persistent_rice_adaptation_enabled_flag ) && + ( cabac_bypass_alignment_enabled_flag == rhs.cabac_bypass_alignment_enabled_flag ) && + ( sps_scc_extension_flag == rhs.sps_scc_extension_flag ) && + ( sps_curr_pic_ref_enabled_flag == rhs.sps_curr_pic_ref_enabled_flag ) && + ( palette_mode_enabled_flag == rhs.palette_mode_enabled_flag ) && + ( sps_palette_predictor_initializers_present_flag == rhs.sps_palette_predictor_initializers_present_flag ) && + ( intra_boundary_filtering_disabled_flag == rhs.intra_boundary_filtering_disabled_flag ); + } + + bool operator!=( H265SpsFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t sps_temporal_id_nesting_flag : 1; + uint32_t separate_colour_plane_flag : 1; + uint32_t conformance_window_flag : 1; + uint32_t sps_sub_layer_ordering_info_present_flag : 1; + uint32_t scaling_list_enabled_flag : 1; + uint32_t sps_scaling_list_data_present_flag : 1; + uint32_t amp_enabled_flag : 1; + uint32_t sample_adaptive_offset_enabled_flag : 1; + uint32_t pcm_enabled_flag : 1; + uint32_t pcm_loop_filter_disabled_flag : 1; + uint32_t long_term_ref_pics_present_flag : 1; + uint32_t sps_temporal_mvp_enabled_flag : 1; + uint32_t strong_intra_smoothing_enabled_flag : 1; + uint32_t vui_parameters_present_flag : 1; + uint32_t sps_extension_present_flag : 1; + uint32_t sps_range_extension_flag : 1; + uint32_t transform_skip_rotation_enabled_flag : 1; + uint32_t transform_skip_context_enabled_flag : 1; + uint32_t implicit_rdpcm_enabled_flag : 1; + uint32_t explicit_rdpcm_enabled_flag : 1; + uint32_t extended_precision_processing_flag : 1; + uint32_t intra_smoothing_disabled_flag : 1; + uint32_t high_precision_offsets_enabled_flag : 1; + uint32_t persistent_rice_adaptation_enabled_flag : 1; + uint32_t cabac_bypass_alignment_enabled_flag : 1; + uint32_t sps_scc_extension_flag : 1; + uint32_t sps_curr_pic_ref_enabled_flag : 1; + uint32_t palette_mode_enabled_flag : 1; + uint32_t sps_palette_predictor_initializers_present_flag : 1; + uint32_t intra_boundary_filtering_disabled_flag : 1; + }; + + struct H265ShortTermRefPicSetFlags + { + using NativeType = StdVideoH265ShortTermRefPicSetFlags; + + operator StdVideoH265ShortTermRefPicSetFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265ShortTermRefPicSetFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265ShortTermRefPicSetFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265ShortTermRefPicSetFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265ShortTermRefPicSetFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( inter_ref_pic_set_prediction_flag == rhs.inter_ref_pic_set_prediction_flag ) && ( delta_rps_sign == rhs.delta_rps_sign ); + } + + bool operator!=( H265ShortTermRefPicSetFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t inter_ref_pic_set_prediction_flag : 1; + uint32_t delta_rps_sign : 1; + }; + + struct H265ShortTermRefPicSet + { + using NativeType = StdVideoH265ShortTermRefPicSet; + + operator StdVideoH265ShortTermRefPicSet const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265ShortTermRefPicSet &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265ShortTermRefPicSet const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265ShortTermRefPicSet *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265ShortTermRefPicSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( delta_idx_minus1 == rhs.delta_idx_minus1 ) && + ( use_delta_flag == rhs.use_delta_flag ) && + ( abs_delta_rps_minus1 == rhs.abs_delta_rps_minus1 ) && + ( used_by_curr_pic_flag == rhs.used_by_curr_pic_flag ) && + ( used_by_curr_pic_s0_flag == rhs.used_by_curr_pic_s0_flag ) && + ( used_by_curr_pic_s1_flag == rhs.used_by_curr_pic_s1_flag ) && + ( reserved1 == rhs.reserved1 ) && + ( reserved2 == rhs.reserved2 ) && + ( reserved3 == rhs.reserved3 ) && + ( num_negative_pics == rhs.num_negative_pics ) && + ( num_positive_pics == rhs.num_positive_pics ) && + ( delta_poc_s0_minus1 == rhs.delta_poc_s0_minus1 ) && + ( delta_poc_s1_minus1 == rhs.delta_poc_s1_minus1 ); + } + + bool operator!=( H265ShortTermRefPicSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ShortTermRefPicSetFlags flags = {}; + uint32_t delta_idx_minus1 = {}; + uint16_t use_delta_flag = {}; + uint16_t abs_delta_rps_minus1 = {}; + uint16_t used_by_curr_pic_flag = {}; + uint16_t used_by_curr_pic_s0_flag = {}; + uint16_t used_by_curr_pic_s1_flag = {}; + uint16_t reserved1 = {}; + uint8_t reserved2 = {}; + uint8_t reserved3 = {}; + uint8_t num_negative_pics = {}; + uint8_t num_positive_pics = {}; + ArrayWrapper1D delta_poc_s0_minus1 = {}; + ArrayWrapper1D delta_poc_s1_minus1 = {}; + }; + + struct H265LongTermRefPicsSps + { + using NativeType = StdVideoH265LongTermRefPicsSps; + + operator StdVideoH265LongTermRefPicsSps const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265LongTermRefPicsSps &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265LongTermRefPicsSps const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265LongTermRefPicsSps *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265LongTermRefPicsSps const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( used_by_curr_pic_lt_sps_flag == rhs.used_by_curr_pic_lt_sps_flag ) && ( lt_ref_pic_poc_lsb_sps == rhs.lt_ref_pic_poc_lsb_sps ); + } + + bool operator!=( H265LongTermRefPicsSps const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t used_by_curr_pic_lt_sps_flag = {}; + ArrayWrapper1D lt_ref_pic_poc_lsb_sps = {}; + }; + + struct H265SequenceParameterSet + { + using NativeType = StdVideoH265SequenceParameterSet; + + operator StdVideoH265SequenceParameterSet const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265SequenceParameterSet &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265SequenceParameterSet const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265SequenceParameterSet *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265SequenceParameterSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( chroma_format_idc == rhs.chroma_format_idc ) && + ( pic_width_in_luma_samples == rhs.pic_width_in_luma_samples ) && + ( pic_height_in_luma_samples == rhs.pic_height_in_luma_samples ) && + ( sps_video_parameter_set_id == rhs.sps_video_parameter_set_id ) && + ( sps_max_sub_layers_minus1 == rhs.sps_max_sub_layers_minus1 ) && + ( sps_seq_parameter_set_id == rhs.sps_seq_parameter_set_id ) && + ( bit_depth_luma_minus8 == rhs.bit_depth_luma_minus8 ) && + ( bit_depth_chroma_minus8 == rhs.bit_depth_chroma_minus8 ) && + ( log2_max_pic_order_cnt_lsb_minus4 == rhs.log2_max_pic_order_cnt_lsb_minus4 ) && + ( log2_min_luma_coding_block_size_minus3 == rhs.log2_min_luma_coding_block_size_minus3 ) && + ( log2_diff_max_min_luma_coding_block_size == rhs.log2_diff_max_min_luma_coding_block_size ) && + ( log2_min_luma_transform_block_size_minus2 == rhs.log2_min_luma_transform_block_size_minus2 ) && + ( log2_diff_max_min_luma_transform_block_size == rhs.log2_diff_max_min_luma_transform_block_size ) && + ( max_transform_hierarchy_depth_inter == rhs.max_transform_hierarchy_depth_inter ) && + ( max_transform_hierarchy_depth_intra == rhs.max_transform_hierarchy_depth_intra ) && + ( num_short_term_ref_pic_sets == rhs.num_short_term_ref_pic_sets ) && + ( num_long_term_ref_pics_sps == rhs.num_long_term_ref_pics_sps ) && + ( pcm_sample_bit_depth_luma_minus1 == rhs.pcm_sample_bit_depth_luma_minus1 ) && + ( pcm_sample_bit_depth_chroma_minus1 == rhs.pcm_sample_bit_depth_chroma_minus1 ) && + ( log2_min_pcm_luma_coding_block_size_minus3 == rhs.log2_min_pcm_luma_coding_block_size_minus3 ) && + ( log2_diff_max_min_pcm_luma_coding_block_size == rhs.log2_diff_max_min_pcm_luma_coding_block_size ) && + ( reserved1 == rhs.reserved1 ) && + ( reserved2 == rhs.reserved2 ) && + ( palette_max_size == rhs.palette_max_size ) && + ( delta_palette_max_predictor_size == rhs.delta_palette_max_predictor_size ) && + ( motion_vector_resolution_control_idc == rhs.motion_vector_resolution_control_idc ) && + ( sps_num_palette_predictor_initializers_minus1 == rhs.sps_num_palette_predictor_initializers_minus1 ) && + ( conf_win_left_offset == rhs.conf_win_left_offset ) && + ( conf_win_right_offset == rhs.conf_win_right_offset ) && + ( conf_win_top_offset == rhs.conf_win_top_offset ) && + ( conf_win_bottom_offset == rhs.conf_win_bottom_offset ) && + ( pProfileTierLevel == rhs.pProfileTierLevel ) && + ( pDecPicBufMgr == rhs.pDecPicBufMgr ) && + ( pScalingLists == rhs.pScalingLists ) && + ( pShortTermRefPicSet == rhs.pShortTermRefPicSet ) && + ( pLongTermRefPicsSps == rhs.pLongTermRefPicsSps ) && + ( pSequenceParameterSetVui == rhs.pSequenceParameterSetVui ) && + ( pPredictorPaletteEntries == rhs.pPredictorPaletteEntries ); + } + + bool operator!=( H265SequenceParameterSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SpsFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ChromaFormatIdc chroma_format_idc = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ChromaFormatIdc::eMonochrome; + uint32_t pic_width_in_luma_samples = {}; + uint32_t pic_height_in_luma_samples = {}; + uint8_t sps_video_parameter_set_id = {}; + uint8_t sps_max_sub_layers_minus1 = {}; + uint8_t sps_seq_parameter_set_id = {}; + uint8_t bit_depth_luma_minus8 = {}; + uint8_t bit_depth_chroma_minus8 = {}; + uint8_t log2_max_pic_order_cnt_lsb_minus4 = {}; + uint8_t log2_min_luma_coding_block_size_minus3 = {}; + uint8_t log2_diff_max_min_luma_coding_block_size = {}; + uint8_t log2_min_luma_transform_block_size_minus2 = {}; + uint8_t log2_diff_max_min_luma_transform_block_size = {}; + uint8_t max_transform_hierarchy_depth_inter = {}; + uint8_t max_transform_hierarchy_depth_intra = {}; + uint8_t num_short_term_ref_pic_sets = {}; + uint8_t num_long_term_ref_pics_sps = {}; + uint8_t pcm_sample_bit_depth_luma_minus1 = {}; + uint8_t pcm_sample_bit_depth_chroma_minus1 = {}; + uint8_t log2_min_pcm_luma_coding_block_size_minus3 = {}; + uint8_t log2_diff_max_min_pcm_luma_coding_block_size = {}; + uint8_t reserved1 = {}; + uint8_t reserved2 = {}; + uint8_t palette_max_size = {}; + uint8_t delta_palette_max_predictor_size = {}; + uint8_t motion_vector_resolution_control_idc = {}; + uint8_t sps_num_palette_predictor_initializers_minus1 = {}; + uint32_t conf_win_left_offset = {}; + uint32_t conf_win_right_offset = {}; + uint32_t conf_win_top_offset = {}; + uint32_t conf_win_bottom_offset = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ProfileTierLevel const * pProfileTierLevel = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265DecPicBufMgr const * pDecPicBufMgr = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingLists const * pScalingLists = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ShortTermRefPicSet const * pShortTermRefPicSet = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265LongTermRefPicsSps const * pLongTermRefPicsSps = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SequenceParameterSetVui const * pSequenceParameterSetVui = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PredictorPaletteEntries const * pPredictorPaletteEntries = {}; + }; + + struct H265PpsFlags + { + using NativeType = StdVideoH265PpsFlags; + + operator StdVideoH265PpsFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265PpsFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265PpsFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265PpsFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265PpsFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( dependent_slice_segments_enabled_flag == rhs.dependent_slice_segments_enabled_flag ) && + ( output_flag_present_flag == rhs.output_flag_present_flag ) && + ( sign_data_hiding_enabled_flag == rhs.sign_data_hiding_enabled_flag ) && + ( cabac_init_present_flag == rhs.cabac_init_present_flag ) && + ( constrained_intra_pred_flag == rhs.constrained_intra_pred_flag ) && + ( transform_skip_enabled_flag == rhs.transform_skip_enabled_flag ) && + ( cu_qp_delta_enabled_flag == rhs.cu_qp_delta_enabled_flag ) && + ( pps_slice_chroma_qp_offsets_present_flag == rhs.pps_slice_chroma_qp_offsets_present_flag ) && + ( weighted_pred_flag == rhs.weighted_pred_flag ) && + ( weighted_bipred_flag == rhs.weighted_bipred_flag ) && + ( transquant_bypass_enabled_flag == rhs.transquant_bypass_enabled_flag ) && + ( tiles_enabled_flag == rhs.tiles_enabled_flag ) && + ( entropy_coding_sync_enabled_flag == rhs.entropy_coding_sync_enabled_flag ) && + ( uniform_spacing_flag == rhs.uniform_spacing_flag ) && + ( loop_filter_across_tiles_enabled_flag == rhs.loop_filter_across_tiles_enabled_flag ) && + ( pps_loop_filter_across_slices_enabled_flag == rhs.pps_loop_filter_across_slices_enabled_flag ) && + ( deblocking_filter_control_present_flag == rhs.deblocking_filter_control_present_flag ) && + ( deblocking_filter_override_enabled_flag == rhs.deblocking_filter_override_enabled_flag ) && + ( pps_deblocking_filter_disabled_flag == rhs.pps_deblocking_filter_disabled_flag ) && + ( pps_scaling_list_data_present_flag == rhs.pps_scaling_list_data_present_flag ) && + ( lists_modification_present_flag == rhs.lists_modification_present_flag ) && + ( slice_segment_header_extension_present_flag == rhs.slice_segment_header_extension_present_flag ) && + ( pps_extension_present_flag == rhs.pps_extension_present_flag ) && + ( cross_component_prediction_enabled_flag == rhs.cross_component_prediction_enabled_flag ) && + ( chroma_qp_offset_list_enabled_flag == rhs.chroma_qp_offset_list_enabled_flag ) && + ( pps_curr_pic_ref_enabled_flag == rhs.pps_curr_pic_ref_enabled_flag ) && + ( residual_adaptive_colour_transform_enabled_flag == rhs.residual_adaptive_colour_transform_enabled_flag ) && + ( pps_slice_act_qp_offsets_present_flag == rhs.pps_slice_act_qp_offsets_present_flag ) && + ( pps_palette_predictor_initializers_present_flag == rhs.pps_palette_predictor_initializers_present_flag ) && + ( monochrome_palette_flag == rhs.monochrome_palette_flag ) && + ( pps_range_extension_flag == rhs.pps_range_extension_flag ); + } + + bool operator!=( H265PpsFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t dependent_slice_segments_enabled_flag : 1; + uint32_t output_flag_present_flag : 1; + uint32_t sign_data_hiding_enabled_flag : 1; + uint32_t cabac_init_present_flag : 1; + uint32_t constrained_intra_pred_flag : 1; + uint32_t transform_skip_enabled_flag : 1; + uint32_t cu_qp_delta_enabled_flag : 1; + uint32_t pps_slice_chroma_qp_offsets_present_flag : 1; + uint32_t weighted_pred_flag : 1; + uint32_t weighted_bipred_flag : 1; + uint32_t transquant_bypass_enabled_flag : 1; + uint32_t tiles_enabled_flag : 1; + uint32_t entropy_coding_sync_enabled_flag : 1; + uint32_t uniform_spacing_flag : 1; + uint32_t loop_filter_across_tiles_enabled_flag : 1; + uint32_t pps_loop_filter_across_slices_enabled_flag : 1; + uint32_t deblocking_filter_control_present_flag : 1; + uint32_t deblocking_filter_override_enabled_flag : 1; + uint32_t pps_deblocking_filter_disabled_flag : 1; + uint32_t pps_scaling_list_data_present_flag : 1; + uint32_t lists_modification_present_flag : 1; + uint32_t slice_segment_header_extension_present_flag : 1; + uint32_t pps_extension_present_flag : 1; + uint32_t cross_component_prediction_enabled_flag : 1; + uint32_t chroma_qp_offset_list_enabled_flag : 1; + uint32_t pps_curr_pic_ref_enabled_flag : 1; + uint32_t residual_adaptive_colour_transform_enabled_flag : 1; + uint32_t pps_slice_act_qp_offsets_present_flag : 1; + uint32_t pps_palette_predictor_initializers_present_flag : 1; + uint32_t monochrome_palette_flag : 1; + uint32_t pps_range_extension_flag : 1; + }; + + struct H265PictureParameterSet + { + using NativeType = StdVideoH265PictureParameterSet; + + operator StdVideoH265PictureParameterSet const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265PictureParameterSet &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoH265PictureParameterSet const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoH265PictureParameterSet *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( H265PictureParameterSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( pps_pic_parameter_set_id == rhs.pps_pic_parameter_set_id ) && + ( pps_seq_parameter_set_id == rhs.pps_seq_parameter_set_id ) && + ( sps_video_parameter_set_id == rhs.sps_video_parameter_set_id ) && + ( num_extra_slice_header_bits == rhs.num_extra_slice_header_bits ) && + ( num_ref_idx_l0_default_active_minus1 == rhs.num_ref_idx_l0_default_active_minus1 ) && + ( num_ref_idx_l1_default_active_minus1 == rhs.num_ref_idx_l1_default_active_minus1 ) && + ( init_qp_minus26 == rhs.init_qp_minus26 ) && + ( diff_cu_qp_delta_depth == rhs.diff_cu_qp_delta_depth ) && + ( pps_cb_qp_offset == rhs.pps_cb_qp_offset ) && + ( pps_cr_qp_offset == rhs.pps_cr_qp_offset ) && + ( pps_beta_offset_div2 == rhs.pps_beta_offset_div2 ) && + ( pps_tc_offset_div2 == rhs.pps_tc_offset_div2 ) && + ( log2_parallel_merge_level_minus2 == rhs.log2_parallel_merge_level_minus2 ) && + ( log2_max_transform_skip_block_size_minus2 == rhs.log2_max_transform_skip_block_size_minus2 ) && + ( diff_cu_chroma_qp_offset_depth == rhs.diff_cu_chroma_qp_offset_depth ) && + ( chroma_qp_offset_list_len_minus1 == rhs.chroma_qp_offset_list_len_minus1 ) && + ( cb_qp_offset_list == rhs.cb_qp_offset_list ) && + ( cr_qp_offset_list == rhs.cr_qp_offset_list ) && + ( log2_sao_offset_scale_luma == rhs.log2_sao_offset_scale_luma ) && + ( log2_sao_offset_scale_chroma == rhs.log2_sao_offset_scale_chroma ) && + ( pps_act_y_qp_offset_plus5 == rhs.pps_act_y_qp_offset_plus5 ) && + ( pps_act_cb_qp_offset_plus5 == rhs.pps_act_cb_qp_offset_plus5 ) && + ( pps_act_cr_qp_offset_plus3 == rhs.pps_act_cr_qp_offset_plus3 ) && + ( pps_num_palette_predictor_initializers == rhs.pps_num_palette_predictor_initializers ) && + ( luma_bit_depth_entry_minus8 == rhs.luma_bit_depth_entry_minus8 ) && + ( chroma_bit_depth_entry_minus8 == rhs.chroma_bit_depth_entry_minus8 ) && + ( num_tile_columns_minus1 == rhs.num_tile_columns_minus1 ) && + ( num_tile_rows_minus1 == rhs.num_tile_rows_minus1 ) && + ( reserved1 == rhs.reserved1 ) && + ( reserved2 == rhs.reserved2 ) && + ( column_width_minus1 == rhs.column_width_minus1 ) && + ( row_height_minus1 == rhs.row_height_minus1 ) && + ( reserved3 == rhs.reserved3 ) && + ( pScalingLists == rhs.pScalingLists ) && + ( pPredictorPaletteEntries == rhs.pPredictorPaletteEntries ); + } + + bool operator!=( H265PictureParameterSet const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PpsFlags flags = {}; + uint8_t pps_pic_parameter_set_id = {}; + uint8_t pps_seq_parameter_set_id = {}; + uint8_t sps_video_parameter_set_id = {}; + uint8_t num_extra_slice_header_bits = {}; + uint8_t num_ref_idx_l0_default_active_minus1 = {}; + uint8_t num_ref_idx_l1_default_active_minus1 = {}; + int8_t init_qp_minus26 = {}; + uint8_t diff_cu_qp_delta_depth = {}; + int8_t pps_cb_qp_offset = {}; + int8_t pps_cr_qp_offset = {}; + int8_t pps_beta_offset_div2 = {}; + int8_t pps_tc_offset_div2 = {}; + uint8_t log2_parallel_merge_level_minus2 = {}; + uint8_t log2_max_transform_skip_block_size_minus2 = {}; + uint8_t diff_cu_chroma_qp_offset_depth = {}; + uint8_t chroma_qp_offset_list_len_minus1 = {}; + ArrayWrapper1D cb_qp_offset_list = {}; + ArrayWrapper1D cr_qp_offset_list = {}; + uint8_t log2_sao_offset_scale_luma = {}; + uint8_t log2_sao_offset_scale_chroma = {}; + int8_t pps_act_y_qp_offset_plus5 = {}; + int8_t pps_act_cb_qp_offset_plus5 = {}; + int8_t pps_act_cr_qp_offset_plus3 = {}; + uint8_t pps_num_palette_predictor_initializers = {}; + uint8_t luma_bit_depth_entry_minus8 = {}; + uint8_t chroma_bit_depth_entry_minus8 = {}; + uint8_t num_tile_columns_minus1 = {}; + uint8_t num_tile_rows_minus1 = {}; + uint8_t reserved1 = {}; + uint8_t reserved2 = {}; + ArrayWrapper1D column_width_minus1 = {}; + ArrayWrapper1D row_height_minus1 = {}; + uint32_t reserved3 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ScalingLists const * pScalingLists = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PredictorPaletteEntries const * pPredictorPaletteEntries = {}; + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ ) + //=== vulkan_video_codec_h265std_decode === + + struct DecodeH265PictureInfoFlags + { + using NativeType = StdVideoDecodeH265PictureInfoFlags; + + operator StdVideoDecodeH265PictureInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH265PictureInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH265PictureInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeH265PictureInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeH265PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( IrapPicFlag == rhs.IrapPicFlag ) && + ( IdrPicFlag == rhs.IdrPicFlag ) && + ( IsReference == rhs.IsReference ) && + ( short_term_ref_pic_set_sps_flag == rhs.short_term_ref_pic_set_sps_flag ); + } + + bool operator!=( DecodeH265PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t IrapPicFlag : 1; + uint32_t IdrPicFlag : 1; + uint32_t IsReference : 1; + uint32_t short_term_ref_pic_set_sps_flag : 1; + }; + + struct DecodeH265PictureInfo + { + using NativeType = StdVideoDecodeH265PictureInfo; + + operator StdVideoDecodeH265PictureInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH265PictureInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH265PictureInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeH265PictureInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeH265PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( sps_video_parameter_set_id == rhs.sps_video_parameter_set_id ) && + ( pps_seq_parameter_set_id == rhs.pps_seq_parameter_set_id ) && + ( pps_pic_parameter_set_id == rhs.pps_pic_parameter_set_id ) && + ( NumDeltaPocsOfRefRpsIdx == rhs.NumDeltaPocsOfRefRpsIdx ) && + ( PicOrderCntVal == rhs.PicOrderCntVal ) && + ( NumBitsForSTRefPicSetInSlice == rhs.NumBitsForSTRefPicSetInSlice ) && + ( reserved == rhs.reserved ) && + ( RefPicSetStCurrBefore == rhs.RefPicSetStCurrBefore ) && + ( RefPicSetStCurrAfter == rhs.RefPicSetStCurrAfter ) && + ( RefPicSetLtCurr == rhs.RefPicSetLtCurr ); + } + + bool operator!=( DecodeH265PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH265PictureInfoFlags flags = {}; + uint8_t sps_video_parameter_set_id = {}; + uint8_t pps_seq_parameter_set_id = {}; + uint8_t pps_pic_parameter_set_id = {}; + uint8_t NumDeltaPocsOfRefRpsIdx = {}; + int32_t PicOrderCntVal = {}; + uint16_t NumBitsForSTRefPicSetInSlice = {}; + uint16_t reserved = {}; + ArrayWrapper1D RefPicSetStCurrBefore = {}; + ArrayWrapper1D RefPicSetStCurrAfter = {}; + ArrayWrapper1D RefPicSetLtCurr = {}; + }; + + struct DecodeH265ReferenceInfoFlags + { + using NativeType = StdVideoDecodeH265ReferenceInfoFlags; + + operator StdVideoDecodeH265ReferenceInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH265ReferenceInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH265ReferenceInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeH265ReferenceInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeH265ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( used_for_long_term_reference == rhs.used_for_long_term_reference ) && ( unused_for_reference == rhs.unused_for_reference ); + } + + bool operator!=( DecodeH265ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t used_for_long_term_reference : 1; + uint32_t unused_for_reference : 1; + }; + + struct DecodeH265ReferenceInfo + { + using NativeType = StdVideoDecodeH265ReferenceInfo; + + operator StdVideoDecodeH265ReferenceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH265ReferenceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeH265ReferenceInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeH265ReferenceInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeH265ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && ( PicOrderCntVal == rhs.PicOrderCntVal ); + } + + bool operator!=( DecodeH265ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeH265ReferenceInfoFlags flags = {}; + int32_t PicOrderCntVal = {}; + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_ ) + //=== vulkan_video_codec_h265std_encode === + + struct EncodeH265WeightTableFlags + { + using NativeType = StdVideoEncodeH265WeightTableFlags; + + operator StdVideoEncodeH265WeightTableFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265WeightTableFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265WeightTableFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265WeightTableFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265WeightTableFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( luma_weight_l0_flag == rhs.luma_weight_l0_flag ) && + ( chroma_weight_l0_flag == rhs.chroma_weight_l0_flag ) && + ( luma_weight_l1_flag == rhs.luma_weight_l1_flag ) && + ( chroma_weight_l1_flag == rhs.chroma_weight_l1_flag ); + } + + bool operator!=( EncodeH265WeightTableFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint16_t luma_weight_l0_flag = {}; + uint16_t chroma_weight_l0_flag = {}; + uint16_t luma_weight_l1_flag = {}; + uint16_t chroma_weight_l1_flag = {}; + }; + + struct EncodeH265WeightTable + { + using NativeType = StdVideoEncodeH265WeightTable; + + operator StdVideoEncodeH265WeightTable const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265WeightTable &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265WeightTable const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265WeightTable *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265WeightTable const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( luma_log2_weight_denom == rhs.luma_log2_weight_denom ) && + ( delta_chroma_log2_weight_denom == rhs.delta_chroma_log2_weight_denom ) && + ( delta_luma_weight_l0 == rhs.delta_luma_weight_l0 ) && + ( luma_offset_l0 == rhs.luma_offset_l0 ) && + ( delta_chroma_weight_l0 == rhs.delta_chroma_weight_l0 ) && + ( delta_chroma_offset_l0 == rhs.delta_chroma_offset_l0 ) && + ( delta_luma_weight_l1 == rhs.delta_luma_weight_l1 ) && + ( luma_offset_l1 == rhs.luma_offset_l1 ) && + ( delta_chroma_weight_l1 == rhs.delta_chroma_weight_l1 ) && + ( delta_chroma_offset_l1 == rhs.delta_chroma_offset_l1 ); + } + + bool operator!=( EncodeH265WeightTable const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265WeightTableFlags flags = {}; + uint8_t luma_log2_weight_denom = {}; + int8_t delta_chroma_log2_weight_denom = {}; + ArrayWrapper1D delta_luma_weight_l0 = {}; + ArrayWrapper1D luma_offset_l0 = {}; + ArrayWrapper2D delta_chroma_weight_l0 = {}; + ArrayWrapper2D delta_chroma_offset_l0 = {}; + ArrayWrapper1D delta_luma_weight_l1 = {}; + ArrayWrapper1D luma_offset_l1 = {}; + ArrayWrapper2D delta_chroma_weight_l1 = {}; + ArrayWrapper2D delta_chroma_offset_l1 = {}; + }; + + struct EncodeH265SliceSegmentHeaderFlags + { + using NativeType = StdVideoEncodeH265SliceSegmentHeaderFlags; + + operator StdVideoEncodeH265SliceSegmentHeaderFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265SliceSegmentHeaderFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265SliceSegmentHeaderFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265SliceSegmentHeaderFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265SliceSegmentHeaderFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( first_slice_segment_in_pic_flag == rhs.first_slice_segment_in_pic_flag ) && + ( dependent_slice_segment_flag == rhs.dependent_slice_segment_flag ) && + ( slice_sao_luma_flag == rhs.slice_sao_luma_flag ) && + ( slice_sao_chroma_flag == rhs.slice_sao_chroma_flag ) && + ( num_ref_idx_active_override_flag == rhs.num_ref_idx_active_override_flag ) && + ( mvd_l1_zero_flag == rhs.mvd_l1_zero_flag ) && + ( cabac_init_flag == rhs.cabac_init_flag ) && + ( cu_chroma_qp_offset_enabled_flag == rhs.cu_chroma_qp_offset_enabled_flag ) && + ( deblocking_filter_override_flag == rhs.deblocking_filter_override_flag ) && + ( slice_deblocking_filter_disabled_flag == rhs.slice_deblocking_filter_disabled_flag ) && + ( collocated_from_l0_flag == rhs.collocated_from_l0_flag ) && + ( slice_loop_filter_across_slices_enabled_flag == rhs.slice_loop_filter_across_slices_enabled_flag ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeH265SliceSegmentHeaderFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t first_slice_segment_in_pic_flag : 1; + uint32_t dependent_slice_segment_flag : 1; + uint32_t slice_sao_luma_flag : 1; + uint32_t slice_sao_chroma_flag : 1; + uint32_t num_ref_idx_active_override_flag : 1; + uint32_t mvd_l1_zero_flag : 1; + uint32_t cabac_init_flag : 1; + uint32_t cu_chroma_qp_offset_enabled_flag : 1; + uint32_t deblocking_filter_override_flag : 1; + uint32_t slice_deblocking_filter_disabled_flag : 1; + uint32_t collocated_from_l0_flag : 1; + uint32_t slice_loop_filter_across_slices_enabled_flag : 1; + uint32_t reserved : 20; + }; + + struct EncodeH265SliceSegmentHeader + { + using NativeType = StdVideoEncodeH265SliceSegmentHeader; + + operator StdVideoEncodeH265SliceSegmentHeader const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265SliceSegmentHeader &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265SliceSegmentHeader const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265SliceSegmentHeader *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265SliceSegmentHeader const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( slice_type == rhs.slice_type ) && + ( slice_segment_address == rhs.slice_segment_address ) && + ( collocated_ref_idx == rhs.collocated_ref_idx ) && + ( MaxNumMergeCand == rhs.MaxNumMergeCand ) && + ( slice_cb_qp_offset == rhs.slice_cb_qp_offset ) && + ( slice_cr_qp_offset == rhs.slice_cr_qp_offset ) && + ( slice_beta_offset_div2 == rhs.slice_beta_offset_div2 ) && + ( slice_tc_offset_div2 == rhs.slice_tc_offset_div2 ) && + ( slice_act_y_qp_offset == rhs.slice_act_y_qp_offset ) && + ( slice_act_cb_qp_offset == rhs.slice_act_cb_qp_offset ) && + ( slice_act_cr_qp_offset == rhs.slice_act_cr_qp_offset ) && + ( slice_qp_delta == rhs.slice_qp_delta ) && + ( reserved1 == rhs.reserved1 ) && + ( pWeightTable == rhs.pWeightTable ); + } + + bool operator!=( EncodeH265SliceSegmentHeader const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265SliceSegmentHeaderFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SliceType slice_type = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265SliceType::eB; + uint32_t slice_segment_address = {}; + uint8_t collocated_ref_idx = {}; + uint8_t MaxNumMergeCand = {}; + int8_t slice_cb_qp_offset = {}; + int8_t slice_cr_qp_offset = {}; + int8_t slice_beta_offset_div2 = {}; + int8_t slice_tc_offset_div2 = {}; + int8_t slice_act_y_qp_offset = {}; + int8_t slice_act_cb_qp_offset = {}; + int8_t slice_act_cr_qp_offset = {}; + int8_t slice_qp_delta = {}; + uint16_t reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265WeightTable const * pWeightTable = {}; + }; + + struct EncodeH265ReferenceListsInfoFlags + { + using NativeType = StdVideoEncodeH265ReferenceListsInfoFlags; + + operator StdVideoEncodeH265ReferenceListsInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceListsInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceListsInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceListsInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265ReferenceListsInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( ref_pic_list_modification_flag_l0 == rhs.ref_pic_list_modification_flag_l0 ) && + ( ref_pic_list_modification_flag_l1 == rhs.ref_pic_list_modification_flag_l1 ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeH265ReferenceListsInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t ref_pic_list_modification_flag_l0 : 1; + uint32_t ref_pic_list_modification_flag_l1 : 1; + uint32_t reserved : 30; + }; + + struct EncodeH265ReferenceListsInfo + { + using NativeType = StdVideoEncodeH265ReferenceListsInfo; + + operator StdVideoEncodeH265ReferenceListsInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceListsInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceListsInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceListsInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265ReferenceListsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( num_ref_idx_l0_active_minus1 == rhs.num_ref_idx_l0_active_minus1 ) && + ( num_ref_idx_l1_active_minus1 == rhs.num_ref_idx_l1_active_minus1 ) && + ( RefPicList0 == rhs.RefPicList0 ) && + ( RefPicList1 == rhs.RefPicList1 ) && + ( list_entry_l0 == rhs.list_entry_l0 ) && + ( list_entry_l1 == rhs.list_entry_l1 ); + } + + bool operator!=( EncodeH265ReferenceListsInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265ReferenceListsInfoFlags flags = {}; + uint8_t num_ref_idx_l0_active_minus1 = {}; + uint8_t num_ref_idx_l1_active_minus1 = {}; + ArrayWrapper1D RefPicList0 = {}; + ArrayWrapper1D RefPicList1 = {}; + ArrayWrapper1D list_entry_l0 = {}; + ArrayWrapper1D list_entry_l1 = {}; + }; + + struct EncodeH265PictureInfoFlags + { + using NativeType = StdVideoEncodeH265PictureInfoFlags; + + operator StdVideoEncodeH265PictureInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265PictureInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265PictureInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265PictureInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( is_reference == rhs.is_reference ) && + ( IrapPicFlag == rhs.IrapPicFlag ) && + ( used_for_long_term_reference == rhs.used_for_long_term_reference ) && + ( discardable_flag == rhs.discardable_flag ) && + ( cross_layer_bla_flag == rhs.cross_layer_bla_flag ) && + ( pic_output_flag == rhs.pic_output_flag ) && + ( no_output_of_prior_pics_flag == rhs.no_output_of_prior_pics_flag ) && + ( short_term_ref_pic_set_sps_flag == rhs.short_term_ref_pic_set_sps_flag ) && + ( slice_temporal_mvp_enabled_flag == rhs.slice_temporal_mvp_enabled_flag ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeH265PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t is_reference : 1; + uint32_t IrapPicFlag : 1; + uint32_t used_for_long_term_reference : 1; + uint32_t discardable_flag : 1; + uint32_t cross_layer_bla_flag : 1; + uint32_t pic_output_flag : 1; + uint32_t no_output_of_prior_pics_flag : 1; + uint32_t short_term_ref_pic_set_sps_flag : 1; + uint32_t slice_temporal_mvp_enabled_flag : 1; + uint32_t reserved : 23; + }; + + struct EncodeH265LongTermRefPics + { + using NativeType = StdVideoEncodeH265LongTermRefPics; + + operator StdVideoEncodeH265LongTermRefPics const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265LongTermRefPics &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265LongTermRefPics const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265LongTermRefPics *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265LongTermRefPics const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( num_long_term_sps == rhs.num_long_term_sps ) && + ( num_long_term_pics == rhs.num_long_term_pics ) && + ( lt_idx_sps == rhs.lt_idx_sps ) && + ( poc_lsb_lt == rhs.poc_lsb_lt ) && + ( used_by_curr_pic_lt_flag == rhs.used_by_curr_pic_lt_flag ) && + ( delta_poc_msb_present_flag == rhs.delta_poc_msb_present_flag ) && + ( delta_poc_msb_cycle_lt == rhs.delta_poc_msb_cycle_lt ); + } + + bool operator!=( EncodeH265LongTermRefPics const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint8_t num_long_term_sps = {}; + uint8_t num_long_term_pics = {}; + ArrayWrapper1D lt_idx_sps = {}; + ArrayWrapper1D poc_lsb_lt = {}; + uint16_t used_by_curr_pic_lt_flag = {}; + ArrayWrapper1D delta_poc_msb_present_flag = {}; + ArrayWrapper1D delta_poc_msb_cycle_lt = {}; + }; + + struct EncodeH265PictureInfo + { + using NativeType = StdVideoEncodeH265PictureInfo; + + operator StdVideoEncodeH265PictureInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265PictureInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265PictureInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265PictureInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( pic_type == rhs.pic_type ) && + ( sps_video_parameter_set_id == rhs.sps_video_parameter_set_id ) && + ( pps_seq_parameter_set_id == rhs.pps_seq_parameter_set_id ) && + ( pps_pic_parameter_set_id == rhs.pps_pic_parameter_set_id ) && + ( short_term_ref_pic_set_idx == rhs.short_term_ref_pic_set_idx ) && + ( PicOrderCntVal == rhs.PicOrderCntVal ) && + ( TemporalId == rhs.TemporalId ) && + ( reserved1 == rhs.reserved1 ) && + ( pRefLists == rhs.pRefLists ) && + ( pShortTermRefPicSet == rhs.pShortTermRefPicSet ) && + ( pLongTermRefPics == rhs.pLongTermRefPics ); + } + + bool operator!=( EncodeH265PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265PictureInfoFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PictureType pic_type = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PictureType::eP; + uint8_t sps_video_parameter_set_id = {}; + uint8_t pps_seq_parameter_set_id = {}; + uint8_t pps_pic_parameter_set_id = {}; + uint8_t short_term_ref_pic_set_idx = {}; + int32_t PicOrderCntVal = {}; + uint8_t TemporalId = {}; + ArrayWrapper1D reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265ReferenceListsInfo const * pRefLists = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265ShortTermRefPicSet const * pShortTermRefPicSet = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265LongTermRefPics const * pLongTermRefPics = {}; + }; + + struct EncodeH265ReferenceInfoFlags + { + using NativeType = StdVideoEncodeH265ReferenceInfoFlags; + + operator StdVideoEncodeH265ReferenceInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( used_for_long_term_reference == rhs.used_for_long_term_reference ) && + ( unused_for_reference == rhs.unused_for_reference ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeH265ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t used_for_long_term_reference : 1; + uint32_t unused_for_reference : 1; + uint32_t reserved : 30; + }; + + struct EncodeH265ReferenceInfo + { + using NativeType = StdVideoEncodeH265ReferenceInfo; + + operator StdVideoEncodeH265ReferenceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeH265ReferenceInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeH265ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && ( pic_type == rhs.pic_type ) && ( PicOrderCntVal == rhs.PicOrderCntVal ) && ( TemporalId == rhs.TemporalId ); + } + + bool operator!=( EncodeH265ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeH265ReferenceInfoFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PictureType pic_type = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::H265PictureType::eP; + int32_t PicOrderCntVal = {}; + uint8_t TemporalId = {}; + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_VP9STD_H_ ) + //=== vulkan_video_codec_vp9std === + + struct VP9ColorConfigFlags + { + using NativeType = StdVideoVP9ColorConfigFlags; + + operator StdVideoVP9ColorConfigFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9ColorConfigFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9ColorConfigFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoVP9ColorConfigFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( VP9ColorConfigFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( color_range == rhs.color_range ) && ( reserved == rhs.reserved ); + } + + bool operator!=( VP9ColorConfigFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t color_range : 1; + uint32_t reserved : 31; + }; + + struct VP9ColorConfig + { + using NativeType = StdVideoVP9ColorConfig; + + operator StdVideoVP9ColorConfig const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9ColorConfig &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9ColorConfig const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoVP9ColorConfig *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( VP9ColorConfig const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( BitDepth == rhs.BitDepth ) && + ( subsampling_x == rhs.subsampling_x ) && + ( subsampling_y == rhs.subsampling_y ) && + ( reserved1 == rhs.reserved1 ) && + ( color_space == rhs.color_space ); + } + + bool operator!=( VP9ColorConfig const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9ColorConfigFlags flags = {}; + uint8_t BitDepth = {}; + uint8_t subsampling_x = {}; + uint8_t subsampling_y = {}; + uint8_t reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9ColorSpace color_space = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9ColorSpace::eUnknown; + }; + + struct VP9LoopFilterFlags + { + using NativeType = StdVideoVP9LoopFilterFlags; + + operator StdVideoVP9LoopFilterFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9LoopFilterFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9LoopFilterFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoVP9LoopFilterFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( VP9LoopFilterFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( loop_filter_delta_enabled == rhs.loop_filter_delta_enabled ) && + ( loop_filter_delta_update == rhs.loop_filter_delta_update ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( VP9LoopFilterFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t loop_filter_delta_enabled : 1; + uint32_t loop_filter_delta_update : 1; + uint32_t reserved : 30; + }; + + struct VP9LoopFilter + { + using NativeType = StdVideoVP9LoopFilter; + + operator StdVideoVP9LoopFilter const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9LoopFilter &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9LoopFilter const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoVP9LoopFilter *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( VP9LoopFilter const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( loop_filter_level == rhs.loop_filter_level ) && + ( loop_filter_sharpness == rhs.loop_filter_sharpness ) && + ( update_ref_delta == rhs.update_ref_delta ) && + ( loop_filter_ref_deltas == rhs.loop_filter_ref_deltas ) && + ( update_mode_delta == rhs.update_mode_delta ) && + ( loop_filter_mode_deltas == rhs.loop_filter_mode_deltas ); + } + + bool operator!=( VP9LoopFilter const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9LoopFilterFlags flags = {}; + uint8_t loop_filter_level = {}; + uint8_t loop_filter_sharpness = {}; + uint8_t update_ref_delta = {}; + ArrayWrapper1D loop_filter_ref_deltas = {}; + uint8_t update_mode_delta = {}; + ArrayWrapper1D loop_filter_mode_deltas = {}; + }; + + struct VP9SegmentationFlags + { + using NativeType = StdVideoVP9SegmentationFlags; + + operator StdVideoVP9SegmentationFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9SegmentationFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9SegmentationFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoVP9SegmentationFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( VP9SegmentationFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( segmentation_update_map == rhs.segmentation_update_map ) && + ( segmentation_temporal_update == rhs.segmentation_temporal_update ) && + ( segmentation_update_data == rhs.segmentation_update_data ) && + ( segmentation_abs_or_delta_update == rhs.segmentation_abs_or_delta_update ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( VP9SegmentationFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t segmentation_update_map : 1; + uint32_t segmentation_temporal_update : 1; + uint32_t segmentation_update_data : 1; + uint32_t segmentation_abs_or_delta_update : 1; + uint32_t reserved : 28; + }; + + struct VP9Segmentation + { + using NativeType = StdVideoVP9Segmentation; + + operator StdVideoVP9Segmentation const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9Segmentation &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoVP9Segmentation const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoVP9Segmentation *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( VP9Segmentation const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( segmentation_tree_probs == rhs.segmentation_tree_probs ) && + ( segmentation_pred_prob == rhs.segmentation_pred_prob ) && + ( FeatureEnabled == rhs.FeatureEnabled ) && + ( FeatureData == rhs.FeatureData ); + } + + bool operator!=( VP9Segmentation const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9SegmentationFlags flags = {}; + ArrayWrapper1D segmentation_tree_probs = {}; + ArrayWrapper1D segmentation_pred_prob = {}; + ArrayWrapper1D FeatureEnabled = {}; + ArrayWrapper2D FeatureData = {}; + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_VP9STD_DECODE_H_ ) + //=== vulkan_video_codec_vp9std_decode === + + struct DecodeVP9PictureInfoFlags + { + using NativeType = StdVideoDecodeVP9PictureInfoFlags; + + operator StdVideoDecodeVP9PictureInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeVP9PictureInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeVP9PictureInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeVP9PictureInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeVP9PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( error_resilient_mode == rhs.error_resilient_mode ) && + ( intra_only == rhs.intra_only ) && + ( allow_high_precision_mv == rhs.allow_high_precision_mv ) && + ( refresh_frame_context == rhs.refresh_frame_context ) && + ( frame_parallel_decoding_mode == rhs.frame_parallel_decoding_mode ) && + ( segmentation_enabled == rhs.segmentation_enabled ) && + ( show_frame == rhs.show_frame ) && + ( UsePrevFrameMvs == rhs.UsePrevFrameMvs ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( DecodeVP9PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t error_resilient_mode : 1; + uint32_t intra_only : 1; + uint32_t allow_high_precision_mv : 1; + uint32_t refresh_frame_context : 1; + uint32_t frame_parallel_decoding_mode : 1; + uint32_t segmentation_enabled : 1; + uint32_t show_frame : 1; + uint32_t UsePrevFrameMvs : 1; + uint32_t reserved : 24; + }; + + struct DecodeVP9PictureInfo + { + using NativeType = StdVideoDecodeVP9PictureInfo; + + operator StdVideoDecodeVP9PictureInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeVP9PictureInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeVP9PictureInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeVP9PictureInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeVP9PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( profile == rhs.profile ) && + ( frame_type == rhs.frame_type ) && + ( frame_context_idx == rhs.frame_context_idx ) && + ( reset_frame_context == rhs.reset_frame_context ) && + ( refresh_frame_flags == rhs.refresh_frame_flags ) && + ( ref_frame_sign_bias_mask == rhs.ref_frame_sign_bias_mask ) && + ( interpolation_filter == rhs.interpolation_filter ) && + ( base_q_idx == rhs.base_q_idx ) && + ( delta_q_y_dc == rhs.delta_q_y_dc ) && + ( delta_q_uv_dc == rhs.delta_q_uv_dc ) && + ( delta_q_uv_ac == rhs.delta_q_uv_ac ) && + ( tile_cols_log2 == rhs.tile_cols_log2 ) && + ( tile_rows_log2 == rhs.tile_rows_log2 ) && + ( reserved1 == rhs.reserved1 ) && + ( pColorConfig == rhs.pColorConfig ) && + ( pLoopFilter == rhs.pLoopFilter ) && + ( pSegmentation == rhs.pSegmentation ); + } + + bool operator!=( DecodeVP9PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeVP9PictureInfoFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9Profile profile = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9Profile::e0; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9FrameType frame_type = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9FrameType::eKey; + uint8_t frame_context_idx = {}; + uint8_t reset_frame_context = {}; + uint8_t refresh_frame_flags = {}; + uint8_t ref_frame_sign_bias_mask = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9InterpolationFilter interpolation_filter = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9InterpolationFilter::eEighttap; + uint8_t base_q_idx = {}; + int8_t delta_q_y_dc = {}; + int8_t delta_q_uv_dc = {}; + int8_t delta_q_uv_ac = {}; + uint8_t tile_cols_log2 = {}; + uint8_t tile_rows_log2 = {}; + ArrayWrapper1D reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9ColorConfig const * pColorConfig = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9LoopFilter const * pLoopFilter = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::VP9Segmentation const * pSegmentation = {}; + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_AV1STD_H_ ) + //=== vulkan_video_codec_av1std === + + struct AV1ColorConfigFlags + { + using NativeType = StdVideoAV1ColorConfigFlags; + + operator StdVideoAV1ColorConfigFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1ColorConfigFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1ColorConfigFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1ColorConfigFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1ColorConfigFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( mono_chrome == rhs.mono_chrome ) && + ( color_range == rhs.color_range ) && + ( separate_uv_delta_q == rhs.separate_uv_delta_q ) && + ( color_description_present_flag == rhs.color_description_present_flag ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( AV1ColorConfigFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t mono_chrome : 1; + uint32_t color_range : 1; + uint32_t separate_uv_delta_q : 1; + uint32_t color_description_present_flag : 1; + uint32_t reserved : 28; + }; + + struct AV1ColorConfig + { + using NativeType = StdVideoAV1ColorConfig; + + operator StdVideoAV1ColorConfig const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1ColorConfig &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1ColorConfig const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1ColorConfig *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1ColorConfig const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( BitDepth == rhs.BitDepth ) && + ( subsampling_x == rhs.subsampling_x ) && + ( subsampling_y == rhs.subsampling_y ) && + ( reserved1 == rhs.reserved1 ) && + ( color_primaries == rhs.color_primaries ) && + ( transfer_characteristics == rhs.transfer_characteristics ) && + ( matrix_coefficients == rhs.matrix_coefficients ) && + ( chroma_sample_position == rhs.chroma_sample_position ); + } + + bool operator!=( AV1ColorConfig const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ColorConfigFlags flags = {}; + uint8_t BitDepth = {}; + uint8_t subsampling_x = {}; + uint8_t subsampling_y = {}; + uint8_t reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ColorPrimaries color_primaries = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ColorPrimaries::eBt709; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TransferCharacteristics transfer_characteristics = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TransferCharacteristics::eReserved0; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1MatrixCoefficients matrix_coefficients = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1MatrixCoefficients::eIdentity; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ChromaSamplePosition chroma_sample_position = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ChromaSamplePosition::eUnknown; + }; + + struct AV1TimingInfoFlags + { + using NativeType = StdVideoAV1TimingInfoFlags; + + operator StdVideoAV1TimingInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1TimingInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1TimingInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1TimingInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1TimingInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( equal_picture_interval == rhs.equal_picture_interval ) && ( reserved == rhs.reserved ); + } + + bool operator!=( AV1TimingInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t equal_picture_interval : 1; + uint32_t reserved : 31; + }; + + struct AV1TimingInfo + { + using NativeType = StdVideoAV1TimingInfo; + + operator StdVideoAV1TimingInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1TimingInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1TimingInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1TimingInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1TimingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( num_units_in_display_tick == rhs.num_units_in_display_tick ) && + ( time_scale == rhs.time_scale ) && + ( num_ticks_per_picture_minus_1 == rhs.num_ticks_per_picture_minus_1 ); + } + + bool operator!=( AV1TimingInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TimingInfoFlags flags = {}; + uint32_t num_units_in_display_tick = {}; + uint32_t time_scale = {}; + uint32_t num_ticks_per_picture_minus_1 = {}; + }; + + struct AV1LoopFilterFlags + { + using NativeType = StdVideoAV1LoopFilterFlags; + + operator StdVideoAV1LoopFilterFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1LoopFilterFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1LoopFilterFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1LoopFilterFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1LoopFilterFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( loop_filter_delta_enabled == rhs.loop_filter_delta_enabled ) && + ( loop_filter_delta_update == rhs.loop_filter_delta_update ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( AV1LoopFilterFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t loop_filter_delta_enabled : 1; + uint32_t loop_filter_delta_update : 1; + uint32_t reserved : 30; + }; + + struct AV1LoopFilter + { + using NativeType = StdVideoAV1LoopFilter; + + operator StdVideoAV1LoopFilter const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1LoopFilter &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1LoopFilter const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1LoopFilter *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1LoopFilter const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( loop_filter_level == rhs.loop_filter_level ) && + ( loop_filter_sharpness == rhs.loop_filter_sharpness ) && + ( update_ref_delta == rhs.update_ref_delta ) && + ( loop_filter_ref_deltas == rhs.loop_filter_ref_deltas ) && + ( update_mode_delta == rhs.update_mode_delta ) && + ( loop_filter_mode_deltas == rhs.loop_filter_mode_deltas ); + } + + bool operator!=( AV1LoopFilter const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopFilterFlags flags = {}; + ArrayWrapper1D loop_filter_level = {}; + uint8_t loop_filter_sharpness = {}; + uint8_t update_ref_delta = {}; + ArrayWrapper1D loop_filter_ref_deltas = {}; + uint8_t update_mode_delta = {}; + ArrayWrapper1D loop_filter_mode_deltas = {}; + }; + + struct AV1QuantizationFlags + { + using NativeType = StdVideoAV1QuantizationFlags; + + operator StdVideoAV1QuantizationFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1QuantizationFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1QuantizationFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1QuantizationFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1QuantizationFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( using_qmatrix == rhs.using_qmatrix ) && ( diff_uv_delta == rhs.diff_uv_delta ) && ( reserved == rhs.reserved ); + } + + bool operator!=( AV1QuantizationFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t using_qmatrix : 1; + uint32_t diff_uv_delta : 1; + uint32_t reserved : 30; + }; + + struct AV1Quantization + { + using NativeType = StdVideoAV1Quantization; + + operator StdVideoAV1Quantization const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1Quantization &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1Quantization const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1Quantization *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1Quantization const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( base_q_idx == rhs.base_q_idx ) && + ( DeltaQYDc == rhs.DeltaQYDc ) && + ( DeltaQUDc == rhs.DeltaQUDc ) && + ( DeltaQUAc == rhs.DeltaQUAc ) && + ( DeltaQVDc == rhs.DeltaQVDc ) && + ( DeltaQVAc == rhs.DeltaQVAc ) && + ( qm_y == rhs.qm_y ) && + ( qm_u == rhs.qm_u ) && + ( qm_v == rhs.qm_v ); + } + + bool operator!=( AV1Quantization const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1QuantizationFlags flags = {}; + uint8_t base_q_idx = {}; + int8_t DeltaQYDc = {}; + int8_t DeltaQUDc = {}; + int8_t DeltaQUAc = {}; + int8_t DeltaQVDc = {}; + int8_t DeltaQVAc = {}; + uint8_t qm_y = {}; + uint8_t qm_u = {}; + uint8_t qm_v = {}; + }; + + struct AV1Segmentation + { + using NativeType = StdVideoAV1Segmentation; + + operator StdVideoAV1Segmentation const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1Segmentation &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1Segmentation const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1Segmentation *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1Segmentation const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( FeatureEnabled == rhs.FeatureEnabled ) && ( FeatureData == rhs.FeatureData ); + } + + bool operator!=( AV1Segmentation const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + ArrayWrapper1D FeatureEnabled = {}; + ArrayWrapper2D FeatureData = {}; + }; + + struct AV1TileInfoFlags + { + using NativeType = StdVideoAV1TileInfoFlags; + + operator StdVideoAV1TileInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1TileInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1TileInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1TileInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1TileInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( uniform_tile_spacing_flag == rhs.uniform_tile_spacing_flag ) && ( reserved == rhs.reserved ); + } + + bool operator!=( AV1TileInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t uniform_tile_spacing_flag : 1; + uint32_t reserved : 31; + }; + + struct AV1TileInfo + { + using NativeType = StdVideoAV1TileInfo; + + operator StdVideoAV1TileInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1TileInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1TileInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1TileInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1TileInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( TileCols == rhs.TileCols ) && + ( TileRows == rhs.TileRows ) && + ( context_update_tile_id == rhs.context_update_tile_id ) && + ( tile_size_bytes_minus_1 == rhs.tile_size_bytes_minus_1 ) && + ( reserved1 == rhs.reserved1 ) && + ( pMiColStarts == rhs.pMiColStarts ) && + ( pMiRowStarts == rhs.pMiRowStarts ) && + ( pWidthInSbsMinus1 == rhs.pWidthInSbsMinus1 ) && + ( pHeightInSbsMinus1 == rhs.pHeightInSbsMinus1 ); + } + + bool operator!=( AV1TileInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TileInfoFlags flags = {}; + uint8_t TileCols = {}; + uint8_t TileRows = {}; + uint16_t context_update_tile_id = {}; + uint8_t tile_size_bytes_minus_1 = {}; + ArrayWrapper1D reserved1 = {}; + uint16_t const * pMiColStarts = {}; + uint16_t const * pMiRowStarts = {}; + uint16_t const * pWidthInSbsMinus1 = {}; + uint16_t const * pHeightInSbsMinus1 = {}; + }; + + struct AV1CDEF + { + using NativeType = StdVideoAV1CDEF; + + operator StdVideoAV1CDEF const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1CDEF &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1CDEF const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1CDEF *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1CDEF const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( cdef_damping_minus_3 == rhs.cdef_damping_minus_3 ) && + ( cdef_bits == rhs.cdef_bits ) && + ( cdef_y_pri_strength == rhs.cdef_y_pri_strength ) && + ( cdef_y_sec_strength == rhs.cdef_y_sec_strength ) && + ( cdef_uv_pri_strength == rhs.cdef_uv_pri_strength ) && + ( cdef_uv_sec_strength == rhs.cdef_uv_sec_strength ); + } + + bool operator!=( AV1CDEF const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint8_t cdef_damping_minus_3 = {}; + uint8_t cdef_bits = {}; + ArrayWrapper1D cdef_y_pri_strength = {}; + ArrayWrapper1D cdef_y_sec_strength = {}; + ArrayWrapper1D cdef_uv_pri_strength = {}; + ArrayWrapper1D cdef_uv_sec_strength = {}; + }; + + struct AV1LoopRestoration + { + using NativeType = StdVideoAV1LoopRestoration; + + operator StdVideoAV1LoopRestoration const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1LoopRestoration &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1LoopRestoration const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1LoopRestoration *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1LoopRestoration const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( FrameRestorationType == rhs.FrameRestorationType ) && ( LoopRestorationSize == rhs.LoopRestorationSize ); + } + + bool operator!=( AV1LoopRestoration const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + ArrayWrapper1D FrameRestorationType = {}; + ArrayWrapper1D LoopRestorationSize = {}; + }; + + struct AV1GlobalMotion + { + using NativeType = StdVideoAV1GlobalMotion; + + operator StdVideoAV1GlobalMotion const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1GlobalMotion &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1GlobalMotion const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1GlobalMotion *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1GlobalMotion const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( GmType == rhs.GmType ) && ( gm_params == rhs.gm_params ); + } + + bool operator!=( AV1GlobalMotion const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + ArrayWrapper1D GmType = {}; + ArrayWrapper2D gm_params = {}; + }; + + struct AV1FilmGrainFlags + { + using NativeType = StdVideoAV1FilmGrainFlags; + + operator StdVideoAV1FilmGrainFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1FilmGrainFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1FilmGrainFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1FilmGrainFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1FilmGrainFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( chroma_scaling_from_luma == rhs.chroma_scaling_from_luma ) && + ( overlap_flag == rhs.overlap_flag ) && + ( clip_to_restricted_range == rhs.clip_to_restricted_range ) && + ( update_grain == rhs.update_grain ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( AV1FilmGrainFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t chroma_scaling_from_luma : 1; + uint32_t overlap_flag : 1; + uint32_t clip_to_restricted_range : 1; + uint32_t update_grain : 1; + uint32_t reserved : 28; + }; + + struct AV1FilmGrain + { + using NativeType = StdVideoAV1FilmGrain; + + operator StdVideoAV1FilmGrain const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1FilmGrain &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1FilmGrain const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1FilmGrain *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1FilmGrain const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( grain_scaling_minus_8 == rhs.grain_scaling_minus_8 ) && + ( ar_coeff_lag == rhs.ar_coeff_lag ) && + ( ar_coeff_shift_minus_6 == rhs.ar_coeff_shift_minus_6 ) && + ( grain_scale_shift == rhs.grain_scale_shift ) && + ( grain_seed == rhs.grain_seed ) && + ( film_grain_params_ref_idx == rhs.film_grain_params_ref_idx ) && + ( num_y_points == rhs.num_y_points ) && + ( point_y_value == rhs.point_y_value ) && + ( point_y_scaling == rhs.point_y_scaling ) && + ( num_cb_points == rhs.num_cb_points ) && + ( point_cb_value == rhs.point_cb_value ) && + ( point_cb_scaling == rhs.point_cb_scaling ) && + ( num_cr_points == rhs.num_cr_points ) && + ( point_cr_value == rhs.point_cr_value ) && + ( point_cr_scaling == rhs.point_cr_scaling ) && + ( ar_coeffs_y_plus_128 == rhs.ar_coeffs_y_plus_128 ) && + ( ar_coeffs_cb_plus_128 == rhs.ar_coeffs_cb_plus_128 ) && + ( ar_coeffs_cr_plus_128 == rhs.ar_coeffs_cr_plus_128 ) && + ( cb_mult == rhs.cb_mult ) && + ( cb_luma_mult == rhs.cb_luma_mult ) && + ( cb_offset == rhs.cb_offset ) && + ( cr_mult == rhs.cr_mult ) && + ( cr_luma_mult == rhs.cr_luma_mult ) && + ( cr_offset == rhs.cr_offset ); + } + + bool operator!=( AV1FilmGrain const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FilmGrainFlags flags = {}; + uint8_t grain_scaling_minus_8 = {}; + uint8_t ar_coeff_lag = {}; + uint8_t ar_coeff_shift_minus_6 = {}; + uint8_t grain_scale_shift = {}; + uint16_t grain_seed = {}; + uint8_t film_grain_params_ref_idx = {}; + uint8_t num_y_points = {}; + ArrayWrapper1D point_y_value = {}; + ArrayWrapper1D point_y_scaling = {}; + uint8_t num_cb_points = {}; + ArrayWrapper1D point_cb_value = {}; + ArrayWrapper1D point_cb_scaling = {}; + uint8_t num_cr_points = {}; + ArrayWrapper1D point_cr_value = {}; + ArrayWrapper1D point_cr_scaling = {}; + ArrayWrapper1D ar_coeffs_y_plus_128 = {}; + ArrayWrapper1D ar_coeffs_cb_plus_128 = {}; + ArrayWrapper1D ar_coeffs_cr_plus_128 = {}; + uint8_t cb_mult = {}; + uint8_t cb_luma_mult = {}; + uint16_t cb_offset = {}; + uint8_t cr_mult = {}; + uint8_t cr_luma_mult = {}; + uint16_t cr_offset = {}; + }; + + struct AV1SequenceHeaderFlags + { + using NativeType = StdVideoAV1SequenceHeaderFlags; + + operator StdVideoAV1SequenceHeaderFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1SequenceHeaderFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1SequenceHeaderFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1SequenceHeaderFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1SequenceHeaderFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( still_picture == rhs.still_picture ) && + ( reduced_still_picture_header == rhs.reduced_still_picture_header ) && + ( use_128x128_superblock == rhs.use_128x128_superblock ) && + ( enable_filter_intra == rhs.enable_filter_intra ) && + ( enable_intra_edge_filter == rhs.enable_intra_edge_filter ) && + ( enable_interintra_compound == rhs.enable_interintra_compound ) && + ( enable_masked_compound == rhs.enable_masked_compound ) && + ( enable_warped_motion == rhs.enable_warped_motion ) && + ( enable_dual_filter == rhs.enable_dual_filter ) && + ( enable_order_hint == rhs.enable_order_hint ) && + ( enable_jnt_comp == rhs.enable_jnt_comp ) && + ( enable_ref_frame_mvs == rhs.enable_ref_frame_mvs ) && + ( frame_id_numbers_present_flag == rhs.frame_id_numbers_present_flag ) && + ( enable_superres == rhs.enable_superres ) && + ( enable_cdef == rhs.enable_cdef ) && + ( enable_restoration == rhs.enable_restoration ) && + ( film_grain_params_present == rhs.film_grain_params_present ) && + ( timing_info_present_flag == rhs.timing_info_present_flag ) && + ( initial_display_delay_present_flag == rhs.initial_display_delay_present_flag ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( AV1SequenceHeaderFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t still_picture : 1; + uint32_t reduced_still_picture_header : 1; + uint32_t use_128x128_superblock : 1; + uint32_t enable_filter_intra : 1; + uint32_t enable_intra_edge_filter : 1; + uint32_t enable_interintra_compound : 1; + uint32_t enable_masked_compound : 1; + uint32_t enable_warped_motion : 1; + uint32_t enable_dual_filter : 1; + uint32_t enable_order_hint : 1; + uint32_t enable_jnt_comp : 1; + uint32_t enable_ref_frame_mvs : 1; + uint32_t frame_id_numbers_present_flag : 1; + uint32_t enable_superres : 1; + uint32_t enable_cdef : 1; + uint32_t enable_restoration : 1; + uint32_t film_grain_params_present : 1; + uint32_t timing_info_present_flag : 1; + uint32_t initial_display_delay_present_flag : 1; + uint32_t reserved : 13; + }; + + struct AV1SequenceHeader + { + using NativeType = StdVideoAV1SequenceHeader; + + operator StdVideoAV1SequenceHeader const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1SequenceHeader &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoAV1SequenceHeader const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoAV1SequenceHeader *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( AV1SequenceHeader const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( seq_profile == rhs.seq_profile ) && + ( frame_width_bits_minus_1 == rhs.frame_width_bits_minus_1 ) && + ( frame_height_bits_minus_1 == rhs.frame_height_bits_minus_1 ) && + ( max_frame_width_minus_1 == rhs.max_frame_width_minus_1 ) && + ( max_frame_height_minus_1 == rhs.max_frame_height_minus_1 ) && + ( delta_frame_id_length_minus_2 == rhs.delta_frame_id_length_minus_2 ) && + ( additional_frame_id_length_minus_1 == rhs.additional_frame_id_length_minus_1 ) && + ( order_hint_bits_minus_1 == rhs.order_hint_bits_minus_1 ) && + ( seq_force_integer_mv == rhs.seq_force_integer_mv ) && + ( seq_force_screen_content_tools == rhs.seq_force_screen_content_tools ) && + ( reserved1 == rhs.reserved1 ) && + ( pColorConfig == rhs.pColorConfig ) && + ( pTimingInfo == rhs.pTimingInfo ); + } + + bool operator!=( AV1SequenceHeader const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1SequenceHeaderFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Profile seq_profile = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Profile::eMain; + uint8_t frame_width_bits_minus_1 = {}; + uint8_t frame_height_bits_minus_1 = {}; + uint16_t max_frame_width_minus_1 = {}; + uint16_t max_frame_height_minus_1 = {}; + uint8_t delta_frame_id_length_minus_2 = {}; + uint8_t additional_frame_id_length_minus_1 = {}; + uint8_t order_hint_bits_minus_1 = {}; + uint8_t seq_force_integer_mv = {}; + uint8_t seq_force_screen_content_tools = {}; + ArrayWrapper1D reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1ColorConfig const * pColorConfig = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TimingInfo const * pTimingInfo = {}; + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ ) + //=== vulkan_video_codec_av1std_decode === + + struct DecodeAV1PictureInfoFlags + { + using NativeType = StdVideoDecodeAV1PictureInfoFlags; + + operator StdVideoDecodeAV1PictureInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1PictureInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1PictureInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1PictureInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeAV1PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( error_resilient_mode == rhs.error_resilient_mode ) && + ( disable_cdf_update == rhs.disable_cdf_update ) && + ( use_superres == rhs.use_superres ) && + ( render_and_frame_size_different == rhs.render_and_frame_size_different ) && + ( allow_screen_content_tools == rhs.allow_screen_content_tools ) && + ( is_filter_switchable == rhs.is_filter_switchable ) && + ( force_integer_mv == rhs.force_integer_mv ) && + ( frame_size_override_flag == rhs.frame_size_override_flag ) && + ( buffer_removal_time_present_flag == rhs.buffer_removal_time_present_flag ) && + ( allow_intrabc == rhs.allow_intrabc ) && + ( frame_refs_short_signaling == rhs.frame_refs_short_signaling ) && + ( allow_high_precision_mv == rhs.allow_high_precision_mv ) && + ( is_motion_mode_switchable == rhs.is_motion_mode_switchable ) && + ( use_ref_frame_mvs == rhs.use_ref_frame_mvs ) && + ( disable_frame_end_update_cdf == rhs.disable_frame_end_update_cdf ) && + ( allow_warped_motion == rhs.allow_warped_motion ) && + ( reduced_tx_set == rhs.reduced_tx_set ) && + ( reference_select == rhs.reference_select ) && + ( skip_mode_present == rhs.skip_mode_present ) && + ( delta_q_present == rhs.delta_q_present ) && + ( delta_lf_present == rhs.delta_lf_present ) && + ( delta_lf_multi == rhs.delta_lf_multi ) && + ( segmentation_enabled == rhs.segmentation_enabled ) && + ( segmentation_update_map == rhs.segmentation_update_map ) && + ( segmentation_temporal_update == rhs.segmentation_temporal_update ) && + ( segmentation_update_data == rhs.segmentation_update_data ) && + ( UsesLr == rhs.UsesLr ) && + ( usesChromaLr == rhs.usesChromaLr ) && + ( apply_grain == rhs.apply_grain ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( DecodeAV1PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t error_resilient_mode : 1; + uint32_t disable_cdf_update : 1; + uint32_t use_superres : 1; + uint32_t render_and_frame_size_different : 1; + uint32_t allow_screen_content_tools : 1; + uint32_t is_filter_switchable : 1; + uint32_t force_integer_mv : 1; + uint32_t frame_size_override_flag : 1; + uint32_t buffer_removal_time_present_flag : 1; + uint32_t allow_intrabc : 1; + uint32_t frame_refs_short_signaling : 1; + uint32_t allow_high_precision_mv : 1; + uint32_t is_motion_mode_switchable : 1; + uint32_t use_ref_frame_mvs : 1; + uint32_t disable_frame_end_update_cdf : 1; + uint32_t allow_warped_motion : 1; + uint32_t reduced_tx_set : 1; + uint32_t reference_select : 1; + uint32_t skip_mode_present : 1; + uint32_t delta_q_present : 1; + uint32_t delta_lf_present : 1; + uint32_t delta_lf_multi : 1; + uint32_t segmentation_enabled : 1; + uint32_t segmentation_update_map : 1; + uint32_t segmentation_temporal_update : 1; + uint32_t segmentation_update_data : 1; + uint32_t UsesLr : 1; + uint32_t usesChromaLr : 1; + uint32_t apply_grain : 1; + uint32_t reserved : 3; + }; + + struct DecodeAV1PictureInfo + { + using NativeType = StdVideoDecodeAV1PictureInfo; + + operator StdVideoDecodeAV1PictureInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1PictureInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1PictureInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1PictureInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeAV1PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( frame_type == rhs.frame_type ) && + ( current_frame_id == rhs.current_frame_id ) && + ( OrderHint == rhs.OrderHint ) && + ( primary_ref_frame == rhs.primary_ref_frame ) && + ( refresh_frame_flags == rhs.refresh_frame_flags ) && + ( reserved1 == rhs.reserved1 ) && + ( interpolation_filter == rhs.interpolation_filter ) && + ( TxMode == rhs.TxMode ) && + ( delta_q_res == rhs.delta_q_res ) && + ( delta_lf_res == rhs.delta_lf_res ) && + ( SkipModeFrame == rhs.SkipModeFrame ) && + ( coded_denom == rhs.coded_denom ) && + ( reserved2 == rhs.reserved2 ) && + ( OrderHints == rhs.OrderHints ) && + ( expectedFrameId == rhs.expectedFrameId ) && + ( pTileInfo == rhs.pTileInfo ) && + ( pQuantization == rhs.pQuantization ) && + ( pSegmentation == rhs.pSegmentation ) && + ( pLoopFilter == rhs.pLoopFilter ) && + ( pCDEF == rhs.pCDEF ) && + ( pLoopRestoration == rhs.pLoopRestoration ) && + ( pGlobalMotion == rhs.pGlobalMotion ) && + ( pFilmGrain == rhs.pFilmGrain ); + } + + bool operator!=( DecodeAV1PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeAV1PictureInfoFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FrameType frame_type = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FrameType::eKey; + uint32_t current_frame_id = {}; + uint8_t OrderHint = {}; + uint8_t primary_ref_frame = {}; + uint8_t refresh_frame_flags = {}; + uint8_t reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1InterpolationFilter interpolation_filter = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1InterpolationFilter::eEighttap; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TxMode TxMode = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TxMode::eOnly4X4; + uint8_t delta_q_res = {}; + uint8_t delta_lf_res = {}; + ArrayWrapper1D SkipModeFrame = {}; + uint8_t coded_denom = {}; + ArrayWrapper1D reserved2 = {}; + ArrayWrapper1D OrderHints = {}; + ArrayWrapper1D expectedFrameId = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TileInfo const * pTileInfo = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Quantization const * pQuantization = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Segmentation const * pSegmentation = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopFilter const * pLoopFilter = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1CDEF const * pCDEF = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopRestoration const * pLoopRestoration = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1GlobalMotion const * pGlobalMotion = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FilmGrain const * pFilmGrain = {}; + }; + + struct DecodeAV1ReferenceInfoFlags + { + using NativeType = StdVideoDecodeAV1ReferenceInfoFlags; + + operator StdVideoDecodeAV1ReferenceInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1ReferenceInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1ReferenceInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1ReferenceInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeAV1ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( disable_frame_end_update_cdf == rhs.disable_frame_end_update_cdf ) && + ( segmentation_enabled == rhs.segmentation_enabled ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( DecodeAV1ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t disable_frame_end_update_cdf : 1; + uint32_t segmentation_enabled : 1; + uint32_t reserved : 30; + }; + + struct DecodeAV1ReferenceInfo + { + using NativeType = StdVideoDecodeAV1ReferenceInfo; + + operator StdVideoDecodeAV1ReferenceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1ReferenceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1ReferenceInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoDecodeAV1ReferenceInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( DecodeAV1ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( frame_type == rhs.frame_type ) && + ( RefFrameSignBias == rhs.RefFrameSignBias ) && + ( OrderHint == rhs.OrderHint ) && + ( SavedOrderHints == rhs.SavedOrderHints ); + } + + bool operator!=( DecodeAV1ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::DecodeAV1ReferenceInfoFlags flags = {}; + uint8_t frame_type = {}; + uint8_t RefFrameSignBias = {}; + uint8_t OrderHint = {}; + ArrayWrapper1D SavedOrderHints = {}; + }; +#endif + +#if defined( VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ ) + //=== vulkan_video_codec_av1std_encode === + + struct EncodeAV1DecoderModelInfo + { + using NativeType = StdVideoEncodeAV1DecoderModelInfo; + + operator StdVideoEncodeAV1DecoderModelInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1DecoderModelInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1DecoderModelInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1DecoderModelInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeAV1DecoderModelInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( buffer_delay_length_minus_1 == rhs.buffer_delay_length_minus_1 ) && + ( buffer_removal_time_length_minus_1 == rhs.buffer_removal_time_length_minus_1 ) && + ( frame_presentation_time_length_minus_1 == rhs.frame_presentation_time_length_minus_1 ) && + ( reserved1 == rhs.reserved1 ) && + ( num_units_in_decoding_tick == rhs.num_units_in_decoding_tick ); + } + + bool operator!=( EncodeAV1DecoderModelInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint8_t buffer_delay_length_minus_1 = {}; + uint8_t buffer_removal_time_length_minus_1 = {}; + uint8_t frame_presentation_time_length_minus_1 = {}; + uint8_t reserved1 = {}; + uint32_t num_units_in_decoding_tick = {}; + }; + + struct EncodeAV1ExtensionHeader + { + using NativeType = StdVideoEncodeAV1ExtensionHeader; + + operator StdVideoEncodeAV1ExtensionHeader const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1ExtensionHeader &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1ExtensionHeader const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1ExtensionHeader *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeAV1ExtensionHeader const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( temporal_id == rhs.temporal_id ) && ( spatial_id == rhs.spatial_id ); + } + + bool operator!=( EncodeAV1ExtensionHeader const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint8_t temporal_id = {}; + uint8_t spatial_id = {}; + }; + + struct EncodeAV1OperatingPointInfoFlags + { + using NativeType = StdVideoEncodeAV1OperatingPointInfoFlags; + + operator StdVideoEncodeAV1OperatingPointInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1OperatingPointInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1OperatingPointInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1OperatingPointInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeAV1OperatingPointInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( decoder_model_present_for_this_op == rhs.decoder_model_present_for_this_op ) && + ( low_delay_mode_flag == rhs.low_delay_mode_flag ) && + ( initial_display_delay_present_for_this_op == rhs.initial_display_delay_present_for_this_op ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeAV1OperatingPointInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t decoder_model_present_for_this_op : 1; + uint32_t low_delay_mode_flag : 1; + uint32_t initial_display_delay_present_for_this_op : 1; + uint32_t reserved : 29; + }; + + struct EncodeAV1OperatingPointInfo + { + using NativeType = StdVideoEncodeAV1OperatingPointInfo; + + operator StdVideoEncodeAV1OperatingPointInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1OperatingPointInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1OperatingPointInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1OperatingPointInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeAV1OperatingPointInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( operating_point_idc == rhs.operating_point_idc ) && + ( seq_level_idx == rhs.seq_level_idx ) && + ( seq_tier == rhs.seq_tier ) && + ( decoder_buffer_delay == rhs.decoder_buffer_delay ) && + ( encoder_buffer_delay == rhs.encoder_buffer_delay ) && + ( initial_display_delay_minus_1 == rhs.initial_display_delay_minus_1 ); + } + + bool operator!=( EncodeAV1OperatingPointInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1OperatingPointInfoFlags flags = {}; + uint16_t operating_point_idc = {}; + uint8_t seq_level_idx = {}; + uint8_t seq_tier = {}; + uint32_t decoder_buffer_delay = {}; + uint32_t encoder_buffer_delay = {}; + uint8_t initial_display_delay_minus_1 = {}; + }; + + struct EncodeAV1PictureInfoFlags + { + using NativeType = StdVideoEncodeAV1PictureInfoFlags; + + operator StdVideoEncodeAV1PictureInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1PictureInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1PictureInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1PictureInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeAV1PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( error_resilient_mode == rhs.error_resilient_mode ) && + ( disable_cdf_update == rhs.disable_cdf_update ) && + ( use_superres == rhs.use_superres ) && + ( render_and_frame_size_different == rhs.render_and_frame_size_different ) && + ( allow_screen_content_tools == rhs.allow_screen_content_tools ) && + ( is_filter_switchable == rhs.is_filter_switchable ) && + ( force_integer_mv == rhs.force_integer_mv ) && + ( frame_size_override_flag == rhs.frame_size_override_flag ) && + ( buffer_removal_time_present_flag == rhs.buffer_removal_time_present_flag ) && + ( allow_intrabc == rhs.allow_intrabc ) && + ( frame_refs_short_signaling == rhs.frame_refs_short_signaling ) && + ( allow_high_precision_mv == rhs.allow_high_precision_mv ) && + ( is_motion_mode_switchable == rhs.is_motion_mode_switchable ) && + ( use_ref_frame_mvs == rhs.use_ref_frame_mvs ) && + ( disable_frame_end_update_cdf == rhs.disable_frame_end_update_cdf ) && + ( allow_warped_motion == rhs.allow_warped_motion ) && + ( reduced_tx_set == rhs.reduced_tx_set ) && + ( skip_mode_present == rhs.skip_mode_present ) && + ( delta_q_present == rhs.delta_q_present ) && + ( delta_lf_present == rhs.delta_lf_present ) && + ( delta_lf_multi == rhs.delta_lf_multi ) && + ( segmentation_enabled == rhs.segmentation_enabled ) && + ( segmentation_update_map == rhs.segmentation_update_map ) && + ( segmentation_temporal_update == rhs.segmentation_temporal_update ) && + ( segmentation_update_data == rhs.segmentation_update_data ) && + ( UsesLr == rhs.UsesLr ) && + ( usesChromaLr == rhs.usesChromaLr ) && + ( show_frame == rhs.show_frame ) && + ( showable_frame == rhs.showable_frame ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeAV1PictureInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t error_resilient_mode : 1; + uint32_t disable_cdf_update : 1; + uint32_t use_superres : 1; + uint32_t render_and_frame_size_different : 1; + uint32_t allow_screen_content_tools : 1; + uint32_t is_filter_switchable : 1; + uint32_t force_integer_mv : 1; + uint32_t frame_size_override_flag : 1; + uint32_t buffer_removal_time_present_flag : 1; + uint32_t allow_intrabc : 1; + uint32_t frame_refs_short_signaling : 1; + uint32_t allow_high_precision_mv : 1; + uint32_t is_motion_mode_switchable : 1; + uint32_t use_ref_frame_mvs : 1; + uint32_t disable_frame_end_update_cdf : 1; + uint32_t allow_warped_motion : 1; + uint32_t reduced_tx_set : 1; + uint32_t skip_mode_present : 1; + uint32_t delta_q_present : 1; + uint32_t delta_lf_present : 1; + uint32_t delta_lf_multi : 1; + uint32_t segmentation_enabled : 1; + uint32_t segmentation_update_map : 1; + uint32_t segmentation_temporal_update : 1; + uint32_t segmentation_update_data : 1; + uint32_t UsesLr : 1; + uint32_t usesChromaLr : 1; + uint32_t show_frame : 1; + uint32_t showable_frame : 1; + uint32_t reserved : 3; + }; + + struct EncodeAV1PictureInfo + { + using NativeType = StdVideoEncodeAV1PictureInfo; + + operator StdVideoEncodeAV1PictureInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1PictureInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1PictureInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1PictureInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeAV1PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( frame_type == rhs.frame_type ) && + ( frame_presentation_time == rhs.frame_presentation_time ) && + ( current_frame_id == rhs.current_frame_id ) && + ( order_hint == rhs.order_hint ) && + ( primary_ref_frame == rhs.primary_ref_frame ) && + ( refresh_frame_flags == rhs.refresh_frame_flags ) && + ( coded_denom == rhs.coded_denom ) && + ( render_width_minus_1 == rhs.render_width_minus_1 ) && + ( render_height_minus_1 == rhs.render_height_minus_1 ) && + ( interpolation_filter == rhs.interpolation_filter ) && + ( TxMode == rhs.TxMode ) && + ( delta_q_res == rhs.delta_q_res ) && + ( delta_lf_res == rhs.delta_lf_res ) && + ( ref_order_hint == rhs.ref_order_hint ) && + ( ref_frame_idx == rhs.ref_frame_idx ) && + ( reserved1 == rhs.reserved1 ) && + ( delta_frame_id_minus_1 == rhs.delta_frame_id_minus_1 ) && + ( pTileInfo == rhs.pTileInfo ) && + ( pQuantization == rhs.pQuantization ) && + ( pSegmentation == rhs.pSegmentation ) && + ( pLoopFilter == rhs.pLoopFilter ) && + ( pCDEF == rhs.pCDEF ) && + ( pLoopRestoration == rhs.pLoopRestoration ) && + ( pGlobalMotion == rhs.pGlobalMotion ) && + ( pExtensionHeader == rhs.pExtensionHeader ) && + ( pBufferRemovalTimes == rhs.pBufferRemovalTimes ); + } + + bool operator!=( EncodeAV1PictureInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1PictureInfoFlags flags = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FrameType frame_type = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FrameType::eKey; + uint32_t frame_presentation_time = {}; + uint32_t current_frame_id = {}; + uint8_t order_hint = {}; + uint8_t primary_ref_frame = {}; + uint8_t refresh_frame_flags = {}; + uint8_t coded_denom = {}; + uint16_t render_width_minus_1 = {}; + uint16_t render_height_minus_1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1InterpolationFilter interpolation_filter = + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1InterpolationFilter::eEighttap; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TxMode TxMode = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TxMode::eOnly4X4; + uint8_t delta_q_res = {}; + uint8_t delta_lf_res = {}; + ArrayWrapper1D ref_order_hint = {}; + ArrayWrapper1D ref_frame_idx = {}; + ArrayWrapper1D reserved1 = {}; + ArrayWrapper1D delta_frame_id_minus_1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1TileInfo const * pTileInfo = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Quantization const * pQuantization = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1Segmentation const * pSegmentation = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopFilter const * pLoopFilter = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1CDEF const * pCDEF = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1LoopRestoration const * pLoopRestoration = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1GlobalMotion const * pGlobalMotion = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ExtensionHeader const * pExtensionHeader = {}; + uint32_t const * pBufferRemovalTimes = {}; + }; + + struct EncodeAV1ReferenceInfoFlags + { + using NativeType = StdVideoEncodeAV1ReferenceInfoFlags; + + operator StdVideoEncodeAV1ReferenceInfoFlags const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1ReferenceInfoFlags &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1ReferenceInfoFlags const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1ReferenceInfoFlags *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeAV1ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( disable_frame_end_update_cdf == rhs.disable_frame_end_update_cdf ) && + ( segmentation_enabled == rhs.segmentation_enabled ) && + ( reserved == rhs.reserved ); + } + + bool operator!=( EncodeAV1ReferenceInfoFlags const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + uint32_t disable_frame_end_update_cdf : 1; + uint32_t segmentation_enabled : 1; + uint32_t reserved : 30; + }; + + struct EncodeAV1ReferenceInfo + { + using NativeType = StdVideoEncodeAV1ReferenceInfo; + + operator StdVideoEncodeAV1ReferenceInfo const &() const VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1ReferenceInfo &() VULKAN_HPP_NOEXCEPT + { + return *reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1ReferenceInfo const *() const VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + operator StdVideoEncodeAV1ReferenceInfo *() VULKAN_HPP_NOEXCEPT + { + return reinterpret_cast( this ); + } + + bool operator==( EncodeAV1ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return ( flags == rhs.flags ) && + ( RefFrameId == rhs.RefFrameId ) && + ( frame_type == rhs.frame_type ) && + ( OrderHint == rhs.OrderHint ) && + ( reserved1 == rhs.reserved1 ) && + ( pExtensionHeader == rhs.pExtensionHeader ); + } + + bool operator!=( EncodeAV1ReferenceInfo const & rhs ) const VULKAN_HPP_NOEXCEPT + { + return !operator==( rhs ); + } + + public: + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ReferenceInfoFlags flags = {}; + uint32_t RefFrameId = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FrameType frame_type = VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::AV1FrameType::eKey; + uint8_t OrderHint = {}; + ArrayWrapper1D reserved1 = {}; + VULKAN_HPP_NAMESPACE::VULKAN_HPP_VIDEO_NAMESPACE::EncodeAV1ExtensionHeader const * pExtensionHeader = {}; + }; +#endif + } // namespace VULKAN_HPP_VIDEO_NAMESPACE +} // namespace VULKAN_HPP_NAMESPACE + +#if defined( has_include_was_not_defined ) +# undef has_include_was_not_defined +# undef __has_include +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_wayland.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_wayland.h new file mode 100644 index 000000000..41025db43 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_wayland.h @@ -0,0 +1,59 @@ +#ifndef VULKAN_WAYLAND_H_ +#define VULKAN_WAYLAND_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_KHR_wayland_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_wayland_surface 1 +#define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6 +#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface" +typedef VkFlags VkWaylandSurfaceCreateFlagsKHR; +typedef struct VkWaylandSurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkWaylandSurfaceCreateFlagsKHR flags; + struct wl_display* display; + struct wl_surface* surface; +} VkWaylandSurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR( + VkInstance instance, + const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + struct wl_display* display); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_win32.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_win32.h new file mode 100644 index 000000000..5c7e8bd6d --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_win32.h @@ -0,0 +1,372 @@ +#ifndef VULKAN_WIN32_H_ +#define VULKAN_WIN32_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_KHR_win32_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_win32_surface 1 +#define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6 +#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface" +typedef VkFlags VkWin32SurfaceCreateFlagsKHR; +typedef struct VkWin32SurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkWin32SurfaceCreateFlagsKHR flags; + HINSTANCE hinstance; + HWND hwnd; +} VkWin32SurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR( + VkInstance instance, + const VkWin32SurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex); +#endif +#endif + + +// VK_KHR_external_memory_win32 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_memory_win32 1 +#define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32" +typedef struct VkImportMemoryWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagBits handleType; + HANDLE handle; + LPCWSTR name; +} VkImportMemoryWin32HandleInfoKHR; + +typedef struct VkExportMemoryWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + const SECURITY_ATTRIBUTES* pAttributes; + DWORD dwAccess; + LPCWSTR name; +} VkExportMemoryWin32HandleInfoKHR; + +typedef struct VkMemoryWin32HandlePropertiesKHR { + VkStructureType sType; + void* pNext; + uint32_t memoryTypeBits; +} VkMemoryWin32HandlePropertiesKHR; + +typedef struct VkMemoryGetWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkDeviceMemory memory; + VkExternalMemoryHandleTypeFlagBits handleType; +} VkMemoryGetWin32HandleInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR( + VkDevice device, + const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, + HANDLE* pHandle); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + HANDLE handle, + VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); +#endif +#endif + + +// VK_KHR_win32_keyed_mutex is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_win32_keyed_mutex 1 +#define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1 +#define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex" +typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t acquireCount; + const VkDeviceMemory* pAcquireSyncs; + const uint64_t* pAcquireKeys; + const uint32_t* pAcquireTimeouts; + uint32_t releaseCount; + const VkDeviceMemory* pReleaseSyncs; + const uint64_t* pReleaseKeys; +} VkWin32KeyedMutexAcquireReleaseInfoKHR; + + + +// VK_KHR_external_semaphore_win32 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_semaphore_win32 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32" +typedef struct VkImportSemaphoreWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkSemaphoreImportFlags flags; + VkExternalSemaphoreHandleTypeFlagBits handleType; + HANDLE handle; + LPCWSTR name; +} VkImportSemaphoreWin32HandleInfoKHR; + +typedef struct VkExportSemaphoreWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + const SECURITY_ATTRIBUTES* pAttributes; + DWORD dwAccess; + LPCWSTR name; +} VkExportSemaphoreWin32HandleInfoKHR; + +typedef struct VkD3D12FenceSubmitInfoKHR { + VkStructureType sType; + const void* pNext; + uint32_t waitSemaphoreValuesCount; + const uint64_t* pWaitSemaphoreValues; + uint32_t signalSemaphoreValuesCount; + const uint64_t* pSignalSemaphoreValues; +} VkD3D12FenceSubmitInfoKHR; + +typedef struct VkSemaphoreGetWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkSemaphore semaphore; + VkExternalSemaphoreHandleTypeFlagBits handleType; +} VkSemaphoreGetWin32HandleInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR( + VkDevice device, + const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR( + VkDevice device, + const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, + HANDLE* pHandle); +#endif +#endif + + +// VK_KHR_external_fence_win32 is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_external_fence_win32 1 +#define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1 +#define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32" +typedef struct VkImportFenceWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkFence fence; + VkFenceImportFlags flags; + VkExternalFenceHandleTypeFlagBits handleType; + HANDLE handle; + LPCWSTR name; +} VkImportFenceWin32HandleInfoKHR; + +typedef struct VkExportFenceWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + const SECURITY_ATTRIBUTES* pAttributes; + DWORD dwAccess; + LPCWSTR name; +} VkExportFenceWin32HandleInfoKHR; + +typedef struct VkFenceGetWin32HandleInfoKHR { + VkStructureType sType; + const void* pNext; + VkFence fence; + VkExternalFenceHandleTypeFlagBits handleType; +} VkFenceGetWin32HandleInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo); +typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR( + VkDevice device, + const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR( + VkDevice device, + const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, + HANDLE* pHandle); +#endif +#endif + + +// VK_NV_external_memory_win32 is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_external_memory_win32 1 +#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 +#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32" +typedef struct VkImportMemoryWin32HandleInfoNV { + VkStructureType sType; + const void* pNext; + VkExternalMemoryHandleTypeFlagsNV handleType; + HANDLE handle; +} VkImportMemoryWin32HandleInfoNV; + +typedef struct VkExportMemoryWin32HandleInfoNV { + VkStructureType sType; + const void* pNext; + const SECURITY_ATTRIBUTES* pAttributes; + DWORD dwAccess; +} VkExportMemoryWin32HandleInfoNV; + +typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV( + VkDevice device, + VkDeviceMemory memory, + VkExternalMemoryHandleTypeFlagsNV handleType, + HANDLE* pHandle); +#endif +#endif + + +// VK_NV_win32_keyed_mutex is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_win32_keyed_mutex 1 +#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2 +#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex" +typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV { + VkStructureType sType; + const void* pNext; + uint32_t acquireCount; + const VkDeviceMemory* pAcquireSyncs; + const uint64_t* pAcquireKeys; + const uint32_t* pAcquireTimeoutMilliseconds; + uint32_t releaseCount; + const VkDeviceMemory* pReleaseSyncs; + const uint64_t* pReleaseKeys; +} VkWin32KeyedMutexAcquireReleaseInfoNV; + + + +// VK_EXT_full_screen_exclusive is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_full_screen_exclusive 1 +#define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4 +#define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive" + +typedef enum 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 = 0x7FFFFFFF +} VkFullScreenExclusiveEXT; +typedef struct VkSurfaceFullScreenExclusiveInfoEXT { + VkStructureType sType; + void* pNext; + VkFullScreenExclusiveEXT fullScreenExclusive; +} VkSurfaceFullScreenExclusiveInfoEXT; + +typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT { + VkStructureType sType; + void* pNext; + VkBool32 fullScreenExclusiveSupported; +} VkSurfaceCapabilitiesFullScreenExclusiveEXT; + +typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT { + VkStructureType sType; + const void* pNext; + HMONITOR hmonitor; +} VkSurfaceFullScreenExclusiveWin32InfoEXT; + +typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); +typedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain); +typedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain); +typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT( + VkPhysicalDevice physicalDevice, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + uint32_t* pPresentModeCount, + VkPresentModeKHR* pPresentModes); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT( + VkDevice device, + VkSwapchainKHR swapchain); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT( + VkDevice device, + VkSwapchainKHR swapchain); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT( + VkDevice device, + const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + VkDeviceGroupPresentModeFlagsKHR* pModes); +#endif +#endif + + +// VK_NV_acquire_winrt_display is a preprocessor guard. Do not pass it to API calls. +#define VK_NV_acquire_winrt_display 1 +#define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1 +#define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME "VK_NV_acquire_winrt_display" +typedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display); +typedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV( + VkPhysicalDevice physicalDevice, + VkDisplayKHR display); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV( + VkPhysicalDevice physicalDevice, + uint32_t deviceRelativeId, + VkDisplayKHR* pDisplay); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h new file mode 100644 index 000000000..473f8c288 --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xcb.h @@ -0,0 +1,60 @@ +#ifndef VULKAN_XCB_H_ +#define VULKAN_XCB_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_KHR_xcb_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_xcb_surface 1 +#define VK_KHR_XCB_SURFACE_SPEC_VERSION 6 +#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface" +typedef VkFlags VkXcbSurfaceCreateFlagsKHR; +typedef struct VkXcbSurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkXcbSurfaceCreateFlagsKHR flags; + xcb_connection_t* connection; + xcb_window_t window; +} VkXcbSurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR( + VkInstance instance, + const VkXcbSurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + xcb_connection_t* connection, + xcb_visualid_t visual_id); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xlib.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xlib.h new file mode 100644 index 000000000..dfd107c3e --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xlib.h @@ -0,0 +1,60 @@ +#ifndef VULKAN_XLIB_H_ +#define VULKAN_XLIB_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_KHR_xlib_surface is a preprocessor guard. Do not pass it to API calls. +#define VK_KHR_xlib_surface 1 +#define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6 +#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface" +typedef VkFlags VkXlibSurfaceCreateFlagsKHR; +typedef struct VkXlibSurfaceCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkXlibSurfaceCreateFlagsKHR flags; + Display* dpy; + Window window; +} VkXlibSurfaceCreateInfoKHR; + +typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); +typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR( + VkInstance instance, + const VkXlibSurfaceCreateInfoKHR* pCreateInfo, + const VkAllocationCallbacks* pAllocator, + VkSurfaceKHR* pSurface); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR( + VkPhysicalDevice physicalDevice, + uint32_t queueFamilyIndex, + Display* dpy, + VisualID visualID); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xlib_xrandr.h b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xlib_xrandr.h new file mode 100644 index 000000000..a272e246c --- /dev/null +++ b/vendor/artifacts/skia/include/third_party/vulkan/vulkan/vulkan_xlib_xrandr.h @@ -0,0 +1,50 @@ +#ifndef VULKAN_XLIB_XRANDR_H_ +#define VULKAN_XLIB_XRANDR_H_ 1 + +/* +** Copyright 2015-2026 The Khronos Group Inc. +** +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + + + +// VK_EXT_acquire_xlib_display is a preprocessor guard. Do not pass it to API calls. +#define VK_EXT_acquire_xlib_display 1 +#define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1 +#define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display" +typedef VkResult (VKAPI_PTR *PFN_vkAcquireXlibDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display); +typedef VkResult (VKAPI_PTR *PFN_vkGetRandROutputDisplayEXT)(VkPhysicalDevice physicalDevice, Display* dpy, RROutput rrOutput, VkDisplayKHR* pDisplay); + +#ifndef VK_NO_PROTOTYPES +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT( + VkPhysicalDevice physicalDevice, + Display* dpy, + VkDisplayKHR display); +#endif + +#ifndef VK_ONLY_EXPORTED_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT( + VkPhysicalDevice physicalDevice, + Display* dpy, + RROutput rrOutput, + VkDisplayKHR* pDisplay); +#endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/vendor/artifacts/skia/include/utils/BUILD.bazel b/vendor/artifacts/skia/include/utils/BUILD.bazel new file mode 100644 index 000000000..8585e4539 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/BUILD.bazel @@ -0,0 +1,35 @@ +load("//bazel:skia_rules.bzl", "generate_cpp_files_for_headers", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +PUBLIC_HEADERS = [ + "SkCamera.h", + "SkCanvasStateUtils.h", + "SkCustomTypeface.h", + "SkEventTracer.h", + "SkNWayCanvas.h", + "SkNoDrawCanvas.h", + "SkNullCanvas.h", + "SkOrderedFontMgr.h", + "SkPaintFilterCanvas.h", + "SkParse.h", + "SkParsePath.h", + "SkShadowUtils.h", + "SkTextUtils.h", + "SkTraceEventPhase.h", +] + +skia_filegroup( + name = "core_hdrs", + srcs = PUBLIC_HEADERS, + visibility = ["//src/core:__pkg__"], +) + +generate_cpp_files_for_headers( + name = "headers_to_compile", + headers = PUBLIC_HEADERS, +) diff --git a/vendor/artifacts/skia/include/utils/SkCamera.h b/vendor/artifacts/skia/include/utils/SkCamera.h new file mode 100644 index 000000000..536691875 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkCamera.h @@ -0,0 +1,109 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +// Inspired by Rob Johnson's most excellent QuickDraw GX sample code + +#ifndef SkCamera_DEFINED +#define SkCamera_DEFINED + +#include "include/core/SkM44.h" +#include "include/core/SkMatrix.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkNoncopyable.h" + +// NOTE -- This entire header / impl is deprecated, and will be removed from Skia soon. +// +// Skia now has support for a 4x matrix (SkM44) in SkCanvas. +// + +class SkCanvas; + +// DEPRECATED +class SkPatch3D { +public: + SkPatch3D(); + + void reset(); + void transform(const SkM44&, SkPatch3D* dst = nullptr) const; + + // dot a unit vector with the patch's normal + SkScalar dotWith(SkScalar dx, SkScalar dy, SkScalar dz) const; + SkScalar dotWith(const SkV3& v) const { + return this->dotWith(v.x, v.y, v.z); + } + + // deprecated, but still here for animator (for now) + void rotate(SkScalar /*x*/, SkScalar /*y*/, SkScalar /*z*/) {} + void rotateDegrees(SkScalar /*x*/, SkScalar /*y*/, SkScalar /*z*/) {} + +private: +public: // make public for SkDraw3D for now + SkV3 fU, fV; + SkV3 fOrigin; + + friend class SkCamera3D; +}; + +// DEPRECATED +class SkCamera3D { +public: + SkCamera3D(); + + void reset(); + void update(); + void patchToMatrix(const SkPatch3D&, SkMatrix* matrix) const; + + SkV3 fLocation; // origin of the camera's space + SkV3 fAxis; // view direction + SkV3 fZenith; // up direction + SkV3 fObserver; // eye position (may not be the same as the origin) + +private: + mutable SkMatrix fOrientation; + mutable bool fNeedToUpdate; + + void doUpdate() const; +}; + +// DEPRECATED +class SK_API Sk3DView : SkNoncopyable { +public: + Sk3DView(); + ~Sk3DView(); + + void save(); + void restore(); + + void translate(SkScalar x, SkScalar y, SkScalar z); + void rotateX(SkScalar deg); + void rotateY(SkScalar deg); + void rotateZ(SkScalar deg); + +#ifdef SK_BUILD_FOR_ANDROID_FRAMEWORK + void setCameraLocation(SkScalar x, SkScalar y, SkScalar z); + SkScalar getCameraLocationX() const; + SkScalar getCameraLocationY() const; + SkScalar getCameraLocationZ() const; +#endif + + void getMatrix(SkMatrix*) const; + void applyToCanvas(SkCanvas*) const; + + SkScalar dotWithNormal(SkScalar dx, SkScalar dy, SkScalar dz) const; + +private: + struct Rec { + Rec* fNext; + SkM44 fMatrix; + }; + Rec* fRec; + Rec fInitialRec; + SkCamera3D fCamera; +}; + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkCanvasStateUtils.h b/vendor/artifacts/skia/include/utils/SkCanvasStateUtils.h new file mode 100644 index 000000000..0172e3793 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkCanvasStateUtils.h @@ -0,0 +1,81 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCanvasStateUtils_DEFINED +#define SkCanvasStateUtils_DEFINED + +#include "include/core/SkTypes.h" + +#include + +class SkCanvas; +class SkCanvasState; + +/** + * A set of functions that are useful for copying the state of an SkCanvas + * across a library boundary where the Skia library on the other side of the + * boundary may be newer. The expected usage is outline below... + * + * Lib Boundary + * CaptureCanvasState(...) ||| + * SkCanvas --> SkCanvasState ||| + * ||| CreateFromCanvasState(...) + * ||| SkCanvasState --> SkCanvas` + * ||| Draw into SkCanvas` + * ||| Unref SkCanvas` + * ReleaseCanvasState(...) ||| + * + */ +class SK_API SkCanvasStateUtils { +public: + /** + * Captures the current state of the canvas into an opaque ptr that is safe + * to pass to a different instance of Skia (which may be the same version, + * or may be newer). The function will return NULL in the event that one of the + * following conditions are true. + * 1) the canvas device type is not supported (currently only raster is supported) + * 2) the canvas clip type is not supported (currently only non-AA clips are supported) + * + * It is recommended that the original canvas also not be used until all + * canvases that have been created using its captured state have been dereferenced. + * + * Finally, it is important to note that any draw filters attached to the + * canvas are NOT currently captured. + * + * @param canvas The canvas you wish to capture the current state of. + * @return NULL or an opaque ptr that can be passed to CreateFromCanvasState + * to reconstruct the canvas. The caller is responsible for calling + * ReleaseCanvasState to free the memory associated with this state. + */ + static SkCanvasState* CaptureCanvasState(SkCanvas* canvas); + + /** + * Create a new SkCanvas from the captured state of another SkCanvas. The + * function will return NULL in the event that one of the + * following conditions are true. + * 1) the captured state is in an unrecognized format + * 2) the captured canvas device type is not supported + * + * @param state Opaque object created by CaptureCanvasState. + * @return NULL or an SkCanvas* whose devices and matrix/clip state are + * identical to the captured canvas. The caller is responsible for + * calling unref on the SkCanvas. + */ + static std::unique_ptr MakeFromCanvasState(const SkCanvasState* state); + + /** + * Free the memory associated with the captured canvas state. The state + * should not be released until all SkCanvas objects created using that + * state have been dereferenced. Must be called from the same library + * instance that created the state via CaptureCanvasState. + * + * @param state The captured state you wish to dispose of. + */ + static void ReleaseCanvasState(SkCanvasState* state); +}; + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkCustomTypeface.h b/vendor/artifacts/skia/include/utils/SkCustomTypeface.h new file mode 100644 index 000000000..7793db02d --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkCustomTypeface.h @@ -0,0 +1,70 @@ +/* + * Copyright 2020 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkCustomTypeface_DEFINED +#define SkCustomTypeface_DEFINED + +#include "include/core/SkDrawable.h" +#include "include/core/SkFontMetrics.h" +#include "include/core/SkFontStyle.h" +#include "include/core/SkFourByteTag.h" +#include "include/core/SkPath.h" +#include "include/core/SkRect.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypeface.h" +#include "include/core/SkTypes.h" + +#include +#include + +class SkStream; +class SkStreamAsset; +struct SkFontArguments; + +class SK_API SkCustomTypefaceBuilder { +public: + SkCustomTypefaceBuilder(); + + void setGlyph(SkGlyphID, float advance, const SkPath&); + void setGlyph(SkGlyphID, float advance, sk_sp, const SkRect& bounds); + + void setMetrics(const SkFontMetrics& fm, float scale = 1); + void setFontStyle(SkFontStyle); + + sk_sp detach(); + + static constexpr SkTypeface::FactoryId FactoryId = SkSetFourByteTag('u','s','e','r'); + static sk_sp MakeFromStream(std::unique_ptr, const SkFontArguments&); + +private: + struct GlyphRec { + // logical union + SkPath fPath; + sk_sp fDrawable; + + SkRect fBounds = {0,0,0,0}; // only used for drawable glyphs atm + float fAdvance = 0; + + bool isDrawable() const { + SkASSERT(!fDrawable || fPath.isEmpty()); + return fDrawable != nullptr; + } + }; + + std::vector fGlyphRecs; + SkFontMetrics fMetrics; + SkFontStyle fStyle; + + GlyphRec& ensureStorage(SkGlyphID); + + static sk_sp Deserialize(SkStream*); + + friend class SkTypeface; + friend class SkUserTypeface; +}; + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkEventTracer.h b/vendor/artifacts/skia/include/utils/SkEventTracer.h new file mode 100644 index 000000000..8a6188fd5 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkEventTracer.h @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2014 Google Inc. All rights reserved. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkEventTracer_DEFINED +#define SkEventTracer_DEFINED + +// The class in this header defines the interface between Skia's internal +// tracing macros and an external entity (e.g., Chrome) that will consume them. +// Such an entity should subclass SkEventTracer and provide an instance of +// that event to SkEventTracer::SetInstance. + +// If you're looking for the tracing macros to instrument Skia itself, those +// live in src/core/SkTraceEvent.h + +#include "include/core/SkTypes.h" + +#include + +class SK_API SkEventTracer { +public: + + typedef uint64_t Handle; + + /** + * If this is the first call to SetInstance or GetInstance then the passed instance is + * installed and true is returned. Otherwise, false is returned. In either case ownership of the + * tracer is transferred. + * + * On failure, the tracer is deleted; on success the tracer will be held until process exit, and + * will not have its destructor run. This avoids race conditions when using Skia from multiple + * threads in the midst of application teardown. However, subclasses can override `onExit()` to + * perform operations at exit, such as flushing to disk. + */ + static bool SetInstance(SkEventTracer*); + + /** + * Gets the event tracer. If this is the first call to SetInstance or GetIntance then a default + * event tracer is installed and returned. + */ + static SkEventTracer* GetInstance(); + + virtual ~SkEventTracer() = default; + + // The pointer returned from GetCategoryGroupEnabled() points to a + // value with zero or more of the following bits. Used in this class only. + // The TRACE_EVENT macros should only use the value as a bool. + // These values must be in sync with macro values in trace_event.h in chromium. + enum CategoryGroupEnabledFlags { + // Category group enabled for the recording mode. + kEnabledForRecording_CategoryGroupEnabledFlags = 1 << 0, + // Category group enabled for the monitoring mode. + kEnabledForMonitoring_CategoryGroupEnabledFlags = 1 << 1, + // Category group enabled by SetEventCallbackEnabled(). + kEnabledForEventCallback_CategoryGroupEnabledFlags = 1 << 2, + }; + + virtual const uint8_t* getCategoryGroupEnabled(const char* name) = 0; + virtual const char* getCategoryGroupName(const uint8_t* categoryEnabledFlag) = 0; + + virtual SkEventTracer::Handle + addTraceEvent(char phase, + const uint8_t* categoryEnabledFlag, + const char* name, + uint64_t id, + int32_t numArgs, + const char** argNames, + const uint8_t* argTypes, + const uint64_t* argValues, + uint8_t flags) = 0; + + virtual void + updateTraceEventDuration(const uint8_t* categoryEnabledFlag, + const char* name, + SkEventTracer::Handle handle) = 0; + + // Optional method that can be implemented to allow splitting up traces into different sections. + virtual void newTracingSection(const char*) {} + +protected: + SkEventTracer() = default; + SkEventTracer(const SkEventTracer&) = delete; + SkEventTracer& operator=(const SkEventTracer&) = delete; + + // Called inside an atexit() callback. Must be threadsafe as other threads could still be + // attempting to add trace events. + virtual void onExit() {} +}; + +#endif // SkEventTracer_DEFINED diff --git a/vendor/artifacts/skia/include/utils/SkNWayCanvas.h b/vendor/artifacts/skia/include/utils/SkNWayCanvas.h new file mode 100644 index 000000000..0332a1432 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkNWayCanvas.h @@ -0,0 +1,123 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkNWayCanvas_DEFINED +#define SkNWayCanvas_DEFINED + +#include "include/core/SkCanvasVirtualEnforcer.h" +#include "include/core/SkColor.h" +#include "include/core/SkM44.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSamplingOptions.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkTDArray.h" +#include "include/utils/SkNoDrawCanvas.h" + +#include + +namespace sktext { +class GlyphRunList; +} + +class SkCanvas; +class SkData; +class SkDrawable; +class SkImage; +class SkMatrix; +class SkPaint; +class SkPath; +class SkPicture; +class SkRRect; +class SkRegion; +class SkShader; +class SkTextBlob; +class SkVertices; +enum class SkBlendMode; +enum class SkClipOp; +struct SkDrawShadowRec; +struct SkPoint; +struct SkRSXform; +struct SkRect; + +namespace sktext::gpu { class Slug; } + +class SK_API SkNWayCanvas : public SkCanvasVirtualEnforcer { +public: + SkNWayCanvas(int width, int height); + ~SkNWayCanvas() override; + + virtual void addCanvas(SkCanvas*); + virtual void removeCanvas(SkCanvas*); + virtual void removeAll(); + +protected: + SkTDArray fList; + + void willSave() override; + SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec&) override; + bool onDoSaveBehind(const SkRect*) override; + void willRestore() override; + + void didConcat44(const SkM44&) override; + void didSetM44(const SkM44&) override; + void didScale(SkScalar, SkScalar) override; + void didTranslate(SkScalar, SkScalar) override; + + void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; + void onDrawGlyphRunList(const sktext::GlyphRunList&, const SkPaint&) override; + void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, + const SkPaint& paint) override; + void onDrawSlug(const sktext::gpu::Slug* slug, const SkPaint& paint) override; + void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], + const SkPoint texCoords[4], SkBlendMode, const SkPaint& paint) override; + + void onDrawPaint(const SkPaint&) override; + void onDrawBehind(const SkPaint&) override; + void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override; + void onDrawRect(const SkRect&, const SkPaint&) override; + void onDrawRegion(const SkRegion&, const SkPaint&) override; + void onDrawOval(const SkRect&, const SkPaint&) override; + void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override; + void onDrawRRect(const SkRRect&, const SkPaint&) override; + void onDrawPath(const SkPath&, const SkPaint&) override; + + void onDrawImage2(const SkImage*, SkScalar, SkScalar, const SkSamplingOptions&, + const SkPaint*) override; + void onDrawImageRect2(const SkImage*, const SkRect&, const SkRect&, const SkSamplingOptions&, + const SkPaint*, SrcRectConstraint) override; + void onDrawImageLattice2(const SkImage*, const Lattice&, const SkRect&, SkFilterMode, + const SkPaint*) override; + void onDrawAtlas2(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int, + SkBlendMode, const SkSamplingOptions&, const SkRect*, const SkPaint*) override; + + void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override; + void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&) override; + + void onClipRect(const SkRect&, SkClipOp, ClipEdgeStyle) override; + void onClipRRect(const SkRRect&, SkClipOp, ClipEdgeStyle) override; + void onClipPath(const SkPath&, SkClipOp, ClipEdgeStyle) override; + void onClipShader(sk_sp, SkClipOp) override; + void onClipRegion(const SkRegion&, SkClipOp) override; + void onResetClip() override; + + void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; + void onDrawDrawable(SkDrawable*, const SkMatrix*) override; + void onDrawAnnotation(const SkRect&, const char[], SkData*) override; + + void onDrawEdgeAAQuad(const SkRect&, const SkPoint[4], QuadAAFlags, const SkColor4f&, + SkBlendMode) override; + void onDrawEdgeAAImageSet2(const ImageSetEntry[], int count, const SkPoint[], const SkMatrix[], + const SkSamplingOptions&,const SkPaint*, SrcRectConstraint) override; + class Iter; +private: + using INHERITED = SkCanvasVirtualEnforcer; +}; + + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkNoDrawCanvas.h b/vendor/artifacts/skia/include/utils/SkNoDrawCanvas.h new file mode 100644 index 000000000..14e917df7 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkNoDrawCanvas.h @@ -0,0 +1,78 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkNoDrawCanvas_DEFINED +#define SkNoDrawCanvas_DEFINED + +#include "include/core/SkCanvas.h" +#include "include/core/SkCanvasVirtualEnforcer.h" + +struct SkIRect; + +// SkNoDrawCanvas is a helper for SkCanvas subclasses which do not need to +// actually rasterize (e.g., analysis of the draw calls). +// +// It provides the following simplifications: +// +// * not backed by any device/pixels +// * conservative clipping (clipping calls only use rectangles) +// +class SK_API SkNoDrawCanvas : public SkCanvasVirtualEnforcer { +public: + SkNoDrawCanvas(int width, int height); + explicit SkNoDrawCanvas(const SkIRect&); + + // Optimization to reset state to be the same as after construction. + void resetCanvas(int w, int h) { this->resetForNextPicture(SkIRect::MakeWH(w, h)); } + void resetCanvas(const SkIRect& rect) { this->resetForNextPicture(rect); } + +protected: + SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec& rec) override; + bool onDoSaveBehind(const SkRect*) override; + + // No-op overrides for aborting rasterization earlier than SkNullBlitter. + void onDrawAnnotation(const SkRect&, const char[], SkData*) override {} + void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override {} + void onDrawDrawable(SkDrawable*, const SkMatrix*) override {} + void onDrawTextBlob(const SkTextBlob*, SkScalar, SkScalar, const SkPaint&) override {} + void onDrawPatch(const SkPoint[12], const SkColor[4], const SkPoint[4], SkBlendMode, + const SkPaint&) override {} + + void onDrawPaint(const SkPaint&) override {} + void onDrawBehind(const SkPaint&) override {} + void onDrawPoints(PointMode, size_t, const SkPoint[], const SkPaint&) override {} + void onDrawRect(const SkRect&, const SkPaint&) override {} + void onDrawRegion(const SkRegion&, const SkPaint&) override {} + void onDrawOval(const SkRect&, const SkPaint&) override {} + void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override {} + void onDrawRRect(const SkRRect&, const SkPaint&) override {} + void onDrawPath(const SkPath&, const SkPaint&) override {} + + void onDrawImage2(const SkImage*, SkScalar, SkScalar, const SkSamplingOptions&, + const SkPaint*) override {} + void onDrawImageRect2(const SkImage*, const SkRect&, const SkRect&, const SkSamplingOptions&, + const SkPaint*, SrcRectConstraint) override {} + void onDrawImageLattice2(const SkImage*, const Lattice&, const SkRect&, SkFilterMode, + const SkPaint*) override {} + void onDrawAtlas2(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int, + SkBlendMode, const SkSamplingOptions&, const SkRect*, const SkPaint*) override {} + + void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override {} + void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&) override {} + void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override {} + + void onDrawEdgeAAQuad(const SkRect&, const SkPoint[4], QuadAAFlags, const SkColor4f&, + SkBlendMode) override {} + void onDrawEdgeAAImageSet2(const ImageSetEntry[], int, const SkPoint[], const SkMatrix[], + const SkSamplingOptions&, const SkPaint*, + SrcRectConstraint) override {} + +private: + using INHERITED = SkCanvasVirtualEnforcer; +}; + +#endif // SkNoDrawCanvas_DEFINED diff --git a/vendor/artifacts/skia/include/utils/SkNullCanvas.h b/vendor/artifacts/skia/include/utils/SkNullCanvas.h new file mode 100644 index 000000000..a77e3e3de --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkNullCanvas.h @@ -0,0 +1,22 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkNullCanvas_DEFINED +#define SkNullCanvas_DEFINED + +#include "include/core/SkTypes.h" + +#include + +class SkCanvas; + +/** + * Creates a canvas that draws nothing. This is useful for performance testing. + */ +SK_API std::unique_ptr SkMakeNullCanvas(); + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkOrderedFontMgr.h b/vendor/artifacts/skia/include/utils/SkOrderedFontMgr.h new file mode 100644 index 000000000..48f839fda --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkOrderedFontMgr.h @@ -0,0 +1,66 @@ +/* + * Copyright 2021 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkOrderedFontMgr_DEFINED +#define SkOrderedFontMgr_DEFINED + +#include "include/core/SkFontMgr.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkTypes.h" + +#include +#include + +class SkData; +class SkFontStyle; +class SkStreamAsset; +class SkString; +class SkTypeface; +struct SkFontArguments; + +/** + * Collects an order list of other font managers, and visits them in order + * when a request to find or match is issued. + * + * Note: this explicitly fails on any attempt to Make a typeface: all of + * those requests will return null. + */ +class SK_API SkOrderedFontMgr : public SkFontMgr { +public: + SkOrderedFontMgr(); + ~SkOrderedFontMgr() override; + + void append(sk_sp); + +protected: + int onCountFamilies() const override; + void onGetFamilyName(int index, SkString* familyName) const override; + sk_sp onCreateStyleSet(int index)const override; + + sk_sp onMatchFamily(const char familyName[]) const override; + + sk_sp onMatchFamilyStyle(const char familyName[], + const SkFontStyle&) const override; + sk_sp onMatchFamilyStyleCharacter(const char familyName[], const SkFontStyle&, + const char* bcp47[], int bcp47Count, + SkUnichar character) const override; + + // Note: all of these always return null + sk_sp onMakeFromData(sk_sp, int ttcIndex) const override; + sk_sp onMakeFromStreamIndex(std::unique_ptr, + int ttcIndex) const override; + sk_sp onMakeFromStreamArgs(std::unique_ptr, + const SkFontArguments&) const override; + sk_sp onMakeFromFile(const char path[], int ttcIndex) const override; + + sk_sp onLegacyMakeTypeface(const char familyName[], SkFontStyle) const override; + +private: + std::vector> fList; +}; + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkPaintFilterCanvas.h b/vendor/artifacts/skia/include/utils/SkPaintFilterCanvas.h new file mode 100644 index 000000000..9a036e6df --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkPaintFilterCanvas.h @@ -0,0 +1,140 @@ +/* + * Copyright 2015 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkPaintFilterCanvas_DEFINED +#define SkPaintFilterCanvas_DEFINED + +#include "include/core/SkCanvas.h" +#include "include/core/SkCanvasVirtualEnforcer.h" +#include "include/core/SkColor.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkRefCnt.h" +#include "include/core/SkSamplingOptions.h" +#include "include/core/SkScalar.h" +#include "include/core/SkSize.h" +#include "include/core/SkTypes.h" +#include "include/private/base/SkTDArray.h" +#include "include/utils/SkNWayCanvas.h" + +#include + +namespace sktext { +class GlyphRunList; +} + +class GrRecordingContext; +class SkData; +class SkDrawable; +class SkImage; +class SkMatrix; +class SkPaint; +class SkPath; +class SkPicture; +class SkPixmap; +class SkRRect; +class SkRegion; +class SkSurface; +class SkSurfaceProps; +class SkTextBlob; +class SkVertices; +enum class SkBlendMode; +struct SkDrawShadowRec; +struct SkPoint; +struct SkRSXform; +struct SkRect; + +/** \class SkPaintFilterCanvas + + A utility proxy base class for implementing draw/paint filters. +*/ +class SK_API SkPaintFilterCanvas : public SkCanvasVirtualEnforcer { +public: + /** + * The new SkPaintFilterCanvas is configured for forwarding to the + * specified canvas. Also copies the target canvas matrix and clip bounds. + */ + explicit SkPaintFilterCanvas(SkCanvas* canvas); + + enum Type { + kPicture_Type, + }; + + // Forwarded to the wrapped canvas. + SkISize getBaseLayerSize() const override { return proxy()->getBaseLayerSize(); } + GrRecordingContext* recordingContext() const override { return proxy()->recordingContext(); } +protected: + /** + * Called with the paint that will be used to draw the specified type. + * The implementation may modify the paint as they wish. + * + * The result bool is used to determine whether the draw op is to be + * executed (true) or skipped (false). + * + * Note: The base implementation calls onFilter() for top-level/explicit paints only. + * To also filter encapsulated paints (e.g. SkPicture, SkTextBlob), clients may need to + * override the relevant methods (i.e. drawPicture, drawTextBlob). + */ + virtual bool onFilter(SkPaint& paint) const = 0; + + void onDrawPaint(const SkPaint&) override; + void onDrawBehind(const SkPaint&) override; + void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override; + void onDrawRect(const SkRect&, const SkPaint&) override; + void onDrawRRect(const SkRRect&, const SkPaint&) override; + void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; + void onDrawRegion(const SkRegion&, const SkPaint&) override; + void onDrawOval(const SkRect&, const SkPaint&) override; + void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override; + void onDrawPath(const SkPath&, const SkPaint&) override; + + void onDrawImage2(const SkImage*, SkScalar, SkScalar, const SkSamplingOptions&, + const SkPaint*) override; + void onDrawImageRect2(const SkImage*, const SkRect&, const SkRect&, const SkSamplingOptions&, + const SkPaint*, SrcRectConstraint) override; + void onDrawImageLattice2(const SkImage*, const Lattice&, const SkRect&, SkFilterMode, + const SkPaint*) override; + void onDrawAtlas2(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int, + SkBlendMode, const SkSamplingOptions&, const SkRect*, const SkPaint*) override; + + void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override; + void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], + const SkPoint texCoords[4], SkBlendMode, + const SkPaint& paint) override; + void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; + void onDrawDrawable(SkDrawable*, const SkMatrix*) override; + + void onDrawGlyphRunList(const sktext::GlyphRunList&, const SkPaint&) override; + void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, + const SkPaint& paint) override; + void onDrawAnnotation(const SkRect& rect, const char key[], SkData* value) override; + void onDrawShadowRec(const SkPath& path, const SkDrawShadowRec& rec) override; + + void onDrawEdgeAAQuad(const SkRect&, const SkPoint[4], QuadAAFlags, const SkColor4f&, + SkBlendMode) override; + void onDrawEdgeAAImageSet2(const ImageSetEntry[], int count, const SkPoint[], const SkMatrix[], + const SkSamplingOptions&,const SkPaint*, SrcRectConstraint) override; + + // Forwarded to the wrapped canvas. + sk_sp onNewSurface(const SkImageInfo&, const SkSurfaceProps&) override; + bool onPeekPixels(SkPixmap* pixmap) override; + bool onAccessTopLayerPixels(SkPixmap* pixmap) override; + SkImageInfo onImageInfo() const override; + bool onGetProps(SkSurfaceProps* props, bool top) const override; + +private: + class AutoPaintFilter; + + SkCanvas* proxy() const { SkASSERT(fList.size() == 1); return fList[0]; } + + SkPaintFilterCanvas* internal_private_asPaintFilterCanvas() const override { + return const_cast(this); + } + + friend class SkAndroidFrameworkUtils; +}; + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkParse.h b/vendor/artifacts/skia/include/utils/SkParse.h new file mode 100644 index 000000000..6493a35e8 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkParse.h @@ -0,0 +1,36 @@ + +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkParse_DEFINED +#define SkParse_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +#include +#include + +class SK_API SkParse { +public: + static int Count(const char str[]); // number of scalars or int values + static int Count(const char str[], char separator); + static const char* FindColor(const char str[], SkColor* value); + static const char* FindHex(const char str[], uint32_t* value); + static const char* FindNamedColor(const char str[], size_t len, SkColor* color); + static const char* FindS32(const char str[], int32_t* value); + static const char* FindScalar(const char str[], SkScalar* value); + static const char* FindScalars(const char str[], SkScalar value[], int count); + + static bool FindBool(const char str[], bool* value); + // return the index of str in list[], or -1 if not found + static int FindList(const char str[], const char list[]); +}; + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkParsePath.h b/vendor/artifacts/skia/include/utils/SkParsePath.h new file mode 100644 index 000000000..2c83a4ed0 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkParsePath.h @@ -0,0 +1,33 @@ + +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkParsePath_DEFINED +#define SkParsePath_DEFINED + +#include "include/core/SkPath.h" + +class SkString; + +class SK_API SkParsePath { +public: + static std::optional FromSVGString(const char str[]); + // Deprecated + static bool FromSVGString(const char str[], SkPath* outPath) { + if (auto result = FromSVGString(str)) { + *outPath = *result; + return true; + } + return false; + } + + enum class PathEncoding { Absolute, Relative }; + static SkString ToSVGString(const SkPath&, PathEncoding = PathEncoding::Absolute); +}; + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkShadowUtils.h b/vendor/artifacts/skia/include/utils/SkShadowUtils.h new file mode 100644 index 000000000..d37eaf484 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkShadowUtils.h @@ -0,0 +1,102 @@ + +/* + * Copyright 2017 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkShadowUtils_DEFINED +#define SkShadowUtils_DEFINED + +#include "include/core/SkColor.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +#include + +class SkCanvas; +class SkMatrix; +class SkPath; +struct SkPoint3; +struct SkRect; + +enum SkShadowFlags { + kNone_ShadowFlag = 0x00, + /** The occluding object is not opaque. Knowing that the occluder is opaque allows + * us to cull shadow geometry behind it and improve performance. */ + kTransparentOccluder_ShadowFlag = 0x01, + /** Don't try to use analytic shadows. */ + kGeometricOnly_ShadowFlag = 0x02, + /** Light position represents a direction, light radius is blur radius at elevation 1 */ + kDirectionalLight_ShadowFlag = 0x04, + /** Concave paths will only use blur to generate the shadow */ + kConcaveBlurOnly_ShadowFlag = 0x08, + /** mask for all shadow flags */ + kAll_ShadowFlag = 0x0F +}; + +class SK_API SkShadowUtils { +public: + /** + * Draw an offset spot shadow and outlining ambient shadow for the given path using a disc + * light. The shadow may be cached, depending on the path type and canvas matrix. If the + * matrix is perspective or the path is volatile, it will not be cached. + * + * @param canvas The canvas on which to draw the shadows. + * @param path The occluder used to generate the shadows. + * @param zPlaneParams Values for the plane function which returns the Z offset of the + * occluder from the canvas based on local x and y values (the current matrix is not applied). + * @param lightPos Generally, the 3D position of the light relative to the canvas plane. + * If kDirectionalLight_ShadowFlag is set, this specifies a vector pointing + * towards the light. + * @param lightRadius Generally, the radius of the disc light. + * If DirectionalLight_ShadowFlag is set, this specifies the amount of + * blur when the occluder is at Z offset == 1. The blur will grow linearly + * as the Z value increases. + * @param ambientColor The color of the ambient shadow. + * @param spotColor The color of the spot shadow. + * @param flags Options controlling opaque occluder optimizations, shadow appearance, + * and light position. See SkShadowFlags. + */ + static void DrawShadow(SkCanvas* canvas, const SkPath& path, const SkPoint3& zPlaneParams, + const SkPoint3& lightPos, SkScalar lightRadius, + SkColor ambientColor, SkColor spotColor, + uint32_t flags = SkShadowFlags::kNone_ShadowFlag); + + /** + * Generate bounding box for shadows relative to path. Includes both the ambient and spot + * shadow bounds. + * + * @param ctm Current transformation matrix to device space. + * @param path The occluder used to generate the shadows. + * @param zPlaneParams Values for the plane function which returns the Z offset of the + * occluder from the canvas based on local x and y values (the current matrix is not applied). + * @param lightPos Generally, the 3D position of the light relative to the canvas plane. + * If kDirectionalLight_ShadowFlag is set, this specifies a vector pointing + * towards the light. + * @param lightRadius Generally, the radius of the disc light. + * If DirectionalLight_ShadowFlag is set, this specifies the amount of + * blur when the occluder is at Z offset == 1. The blur will grow linearly + * as the Z value increases. + * @param flags Options controlling opaque occluder optimizations, shadow appearance, + * and light position. See SkShadowFlags. + * @param bounds Return value for shadow bounding box. + * @return Returns true if successful, false otherwise. + */ + static bool GetLocalBounds(const SkMatrix& ctm, const SkPath& path, + const SkPoint3& zPlaneParams, const SkPoint3& lightPos, + SkScalar lightRadius, uint32_t flags, SkRect* bounds); + + /** + * Helper routine to compute color values for one-pass tonal alpha. + * + * @param inAmbientColor Original ambient color + * @param inSpotColor Original spot color + * @param outAmbientColor Modified ambient color + * @param outSpotColor Modified spot color + */ + static void ComputeTonalColors(SkColor inAmbientColor, SkColor inSpotColor, + SkColor* outAmbientColor, SkColor* outSpotColor); +}; + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkTextUtils.h b/vendor/artifacts/skia/include/utils/SkTextUtils.h new file mode 100644 index 000000000..a7363c94e --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkTextUtils.h @@ -0,0 +1,43 @@ +/* + * Copyright 2018 Google LLC + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkTextUtils_DEFINED +#define SkTextUtils_DEFINED + +#include "include/core/SkFontTypes.h" +#include "include/core/SkScalar.h" +#include "include/core/SkTypes.h" + +#include +#include + +class SkCanvas; +class SkFont; +class SkPaint; +class SkPath; + +class SK_API SkTextUtils { +public: + enum Align { + kLeft_Align, + kCenter_Align, + kRight_Align, + }; + + static void Draw(SkCanvas*, const void* text, size_t size, SkTextEncoding, + SkScalar x, SkScalar y, const SkFont&, const SkPaint&, Align = kLeft_Align); + + static void DrawString(SkCanvas* canvas, const char text[], SkScalar x, SkScalar y, + const SkFont& font, const SkPaint& paint, Align align = kLeft_Align) { + Draw(canvas, text, strlen(text), SkTextEncoding::kUTF8, x, y, font, paint, align); + } + + static void GetPath(const void* text, size_t length, SkTextEncoding, SkScalar x, SkScalar y, + const SkFont&, SkPath*); +}; + +#endif diff --git a/vendor/artifacts/skia/include/utils/SkTraceEventPhase.h b/vendor/artifacts/skia/include/utils/SkTraceEventPhase.h new file mode 100644 index 000000000..38457be24 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/SkTraceEventPhase.h @@ -0,0 +1,19 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +#ifndef SkTraceEventPhase_DEFINED +#define SkTraceEventPhase_DEFINED + +// Phase indicates the nature of an event entry. E.g. part of a begin/end pair. +#define TRACE_EVENT_PHASE_BEGIN ('B') +#define TRACE_EVENT_PHASE_END ('E') +#define TRACE_EVENT_PHASE_COMPLETE ('X') +#define TRACE_EVENT_PHASE_INSTANT ('I') +#define TRACE_EVENT_PHASE_ASYNC_BEGIN ('S') +#define TRACE_EVENT_PHASE_ASYNC_END ('F') +#define TRACE_EVENT_PHASE_COUNTER ('C') +#define TRACE_EVENT_PHASE_CREATE_OBJECT ('N') +#define TRACE_EVENT_PHASE_SNAPSHOT_OBJECT ('O') +#define TRACE_EVENT_PHASE_DELETE_OBJECT ('D') + +#endif // SkTraceEventPhase_DEFINED diff --git a/vendor/artifacts/skia/include/utils/mac/BUILD.bazel b/vendor/artifacts/skia/include/utils/mac/BUILD.bazel new file mode 100644 index 000000000..877d74551 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/mac/BUILD.bazel @@ -0,0 +1,15 @@ +load("//bazel:skia_rules.bzl", "skia_filegroup") + +package( + default_applicable_licenses = ["//:license"], +) + +licenses(["notice"]) + +skia_filegroup( + name = "public_hdrs", + srcs = [ + "SkCGUtils.h", + ], + visibility = ["//src/utils/mac:__pkg__"], +) diff --git a/vendor/artifacts/skia/include/utils/mac/SkCGUtils.h b/vendor/artifacts/skia/include/utils/mac/SkCGUtils.h new file mode 100644 index 000000000..73d89c174 --- /dev/null +++ b/vendor/artifacts/skia/include/utils/mac/SkCGUtils.h @@ -0,0 +1,90 @@ + +/* + * Copyright 2011 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkCGUtils_DEFINED +#define SkCGUtils_DEFINED + +#include "include/core/SkImage.h" +#include "include/core/SkImageInfo.h" +#include "include/core/SkPixmap.h" +#include "include/core/SkSize.h" + +#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) + +#ifdef SK_BUILD_FOR_MAC +#include +#endif + +#ifdef SK_BUILD_FOR_IOS +#include +#endif + +class SkBitmap; +class SkColorSpace; +class SkData; +class SkPixmap; +class SkStreamRewindable; + +SK_API CGContextRef SkCreateCGContext(const SkPixmap&); + +/** + * Given a CGImage, allocate an SkBitmap and copy the image's pixels into it. If scaleToFit is not + * null, use it to determine the size of the bitmap, and scale the image to fill the bitmap. + * Otherwise use the image's width/height. + * + * On failure, return false, and leave bitmap unchanged. + */ +SK_API bool SkCreateBitmapFromCGImage(SkBitmap* dst, CGImageRef src); + +SK_API sk_sp SkMakeImageFromCGImage(CGImageRef); + +/** + * Given a CGColorSpace, return the closest matching SkColorSpace. If no conversion is possible + * or if the input CGColorSpace is nullptr then return nullptr. + */ +SK_API sk_sp SkMakeColorSpaceFromCGColorSpace(CGColorSpaceRef); + +/** + * Copy the pixels from src into the memory specified by info/rowBytes/dstPixels. On failure, + * return false (e.g. ImageInfo incompatible with src). + */ +SK_API bool SkCopyPixelsFromCGImage(const SkImageInfo& info, size_t rowBytes, void* dstPixels, + CGImageRef src); +static inline bool SkCopyPixelsFromCGImage(const SkPixmap& dst, CGImageRef src) { + return SkCopyPixelsFromCGImage(dst.info(), dst.rowBytes(), dst.writable_addr(), src); +} + +/** + * Create an imageref from the specified bitmap. The color space parameter is ignored. + */ +SK_API CGImageRef SkCreateCGImageRefWithColorspace(const SkBitmap& bm, + CGColorSpaceRef space); + +/** + * Create an imageref from the specified bitmap. + */ +SK_API CGImageRef SkCreateCGImageRef(const SkBitmap& bm); + +/** + * Given an SkColorSpace, create a CGColorSpace. This will return sRGB if the specified + * SkColorSpace is nullptr or on failure. This will not retain the specified SkColorSpace. + */ +SK_API CGColorSpaceRef SkCreateCGColorSpace(const SkColorSpace*); + +/** + * Given an SkData, create a CGDataProviderRef that refers to the and retains the specified data. + */ +SK_API CGDataProviderRef SkCreateCGDataProvider(sk_sp); + +/** + * Draw the bitmap into the specified CG context. (x,y) specifies the position of the top-left + * corner of the bitmap. + */ +void SkCGDrawBitmap(CGContextRef, const SkBitmap&, float x, float y); + +#endif // defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS) +#endif // SkCGUtils_DEFINED diff --git a/vendor/artifacts/skia/lib/libskia.so b/vendor/artifacts/skia/lib/libskia.so new file mode 100755 index 0000000000000000000000000000000000000000..ac5a16eb560f6f2ba5e8cd237063574d64b4c856 GIT binary patch literal 12522064 zcmbT82{=`46z}&rW*H6*yTWX#wgNfITA zWJrdJM5XRJ-?zKB``zR_aFlrsC@Z&A}UzNhk{ZVRJs!^3n!Q{X7{I4od3xWO7KcB}0IqG@; zy{|tp^&F~+{qrw|{W;Hi^tk)~&*xd-=TR!o{&U6uYP{yZ4f98-pFuSn{5*}WfA8v=DAjB$MiiJV0e z!!WL-7BK}PAv?}B&kf5W_4JasxnOXRR!NI(i!`E;nR5ti9T!~b8Pn)wC`S5}A%;pZ z5}7jbCYM+234=3*jXpd}jG~8iVU5^Yb|MiYD~e$z4D?nO7?Cqttn3;O_K>hThetxp zfShC$YC-X)H_~FlJlO@pi5faY{Yd5=Vp;U@1_tyDm{lY5J`!fhMaBr8ET4`X*x^;d zS_lnBBynNV^x;@mNW3$F?f7~|OL`KPwGaCctHMO2Q)HB;8)0T3##k9qOe}6^!EFyM%t4kw_TXIfN(ofOK?(;%*{^gc0Qm6qvDR7G_y7jQTgXg|cmD zRx!fpb4fhndPE+wG)a|vJ2N?XfeT(irB^Ej4@$E`bcg)R!WSUg&v7pK};c3 z&Sq1X4z%cwk4zzqVy_*-*OJz-6IZOqa@~f67%jNh6BIBq%%An4Qp8kx9wPTtT8!fyNeY%uqFGL80gC_|_l_egxF~bsvGh_OxiOXtQa5BA_n+HAAIYY7 zm%=RNY$4>LsHdo)U_y`-H+E%9A&U`p#O&o%#poz37`Zj88Ea)E3thyr7zzXlWaur7 zPKr^cYXd!*v5BG}X5(eUOu^VrJFC#sOXy+r3NdRfq~$1>kQkTXI%Z~1c~3({Y;{&N zYYHVl1k0L8qUR#%xNl>K$JQ$_cZGLxGqXg8N*hR#upLL8AF+M1VClhPG0cTufHDK7$BvyL7CCIvinu5rfFhja2Y zvT#AaD!>iqhOb#^#zkiFWRMU_ie*f}*mfD;R~n*-iP1NSku1m*Vw9K}fjOSSgOOsJ z>2>HOKfz`yR7?t5RF9~y%Wz`_fyju3ClF34B!yo{u@)yAvFeB^V0tN-@-|H|VHu3U zqmB|ik0n6v&kmlUNlP6v$l1 zrHS_R3>*~tBc$+Btfw*DH7(nj816#UgF%OJg=dUqVANLJ1a0@LBX2MU1Qx z$`Z;uWJ#cxW+I5uhm%Q1k~IF=3qW0{rbzr(m2ss;YT#41Mp}S2pac9dBiuIu-2s^4 zu_dS#?%UvM2f7Pzz+>t)s9V@QfHUBR=iNa)08hXR@CFV7KENM41imkD6gYz^)#+QpuxCLEkFT31PH}*VW1H}BoKw?;y@FCL?8*zC4-&^Qh*Dv0?&Xy_8j~k;04f&=leik0sX*hJog545ch|09R_^|i~!@n1n>d)W0T-d z;qf%+Ebtll0?YyPz*k@aSOmTUKLM)!#+CZ*jt-y)m;h#g6<7gKjSZ9&_o*=#_}l;w zzzeJbsK$rupYJl%oB-s6@H{mZ245VI#B)-hYk>85EQhN+=te*RP{wmAxT=Aw0~&a| z1ymc@2I%2A16-+}X#~CrV20<+K`j7lz!uNhf$jnvfZce`33M;ujK{9HdVuZ+JOM8} z=MCxu9Kz$nxE=xZ1^n>%1gJmmpTzYPXdrMJ2nNmoAwU=q0sOH@@Z*65JeLTXjQc5| zmw;3t9k>EeEfX{g_o;Cn?q3Hj0E+Oq7_S-xKBNoYV#0(1-=1`z!LBS_z5fn{}?>U{ulv#1^~WHV61q41t=T9j>nv! zB;4l)T?z04tMDB4T72O11FHc6Ko}4O!~qFl4X_qi2doGFm>l@>fWlunMevpJSQS(a z_cd_U1l^4LTX6kzJuQe~V~6Pgx_~}l08q^c)EF?q#5fHj`miK{KHcA)lv z10GYa=lGXTjj6U9&pCna`Rlkd_$~nTWrGK>AE25Su2laZ_=kWafG=(9=K=5DZX&P#_GTS_Ehm5QE3@pb5ZP0KPn9DZn4Q1b!ND1;_-h0@*+= za2?183V|Cy5l{@20Dr6${4${YuUrNARlr@K2G7@m*5Q6VXamp)Gy^R_E6@f!0I1dh z`UL32<1Wx{;5pC(yZ~MT{lIHr0HE4i&>`R*Fao>>#sI2~gH8Y+fRA|Y-y`tMfp`Y^ z@>hNy_ZL9F0pEcicy1Z=H`RxidIW$7!1o4>1z-jK7(4hJ014m*cz{)aARq*Y08|sj zRSZ{gP$^&?AcN;*LFE8>U?ZRaP)!L`6;KB>fK9*_fNI*HWIzYd#dG?g2DonsYK;3P zxKhtE1>YR7#B)}-+JNo^?D3dd)(Q8W|H`?7?*SaZbKal_ao-2mL!gI&qj*fc)^XhT z!}SEHKklEz^)#-*pcEhkkE!QVE%dKA4E#tS3eQD@#sG0Z0-j3*O~UG;&Jg``4aGN0cAi1 za0jRYsCE~$2B^j323)Dfn!s=VE2idJAa46BcOU!*Ks%o60DS^<0$so}pabwk0>1$a zzO2GGs(*|QlmTD@SO8Xl9iSQqC@1cdK)C>JJYEILhx`1Xs{sK#76KIpMDbW0bPcc$ zkj8VepmKl$9{>A^@Er(ZB|N7LssgA2YJdi?8Q20)O$$^T_jN#ZabF+Q05AfKfgQjf zGX>uqumY^{ybb71z!tCvb^#86BS5v?pw56B9#eCFUM}y0+AfNG~e1A!pm3=jf@0g=ETivmCTuQ(R`cpwqaoy9c?G#NMtTmUWtmw;3t4Y&ei z0@*+g@W-x$pAQrOH-I95YBxb|0i{3%Pzl@xs)1Ud9-vwSXcN$a$E~=w;ra;l3D5~V z1)c$a+w;HTUhrQ6uYmr)^3?K!5D)#88^-++&@o^fm;k1LX0bHrR&tE<@J`C{@!1u5GQSgu9@o`-J za6JJU0GtF)0f9ge@V5p36^DQy21Edncs>d=8b|;VfwMpoK(%CCFMy`v{$L2m#>cuYN3g8QYQWk3aR8_!jORsq#O4NwO(04)I3T0z@@`*{3s z7Ty^^+zxaAPk^UD7tjqn2VMYu0M%aO`UZ3mc#Frwpznb9csz>h80ZA>0hk1)fN9_p z@CBFyz5)vX)fRF6f$K8pFWmo)E4=E*hyWcxPkpZj#)vBuuGAd$WiSgKvx2hWK07E0 z_qlLg3Caub;W71ms`39PUJbDjo)gAZ6jTyegU8hK)`Bk$tjBY*pmM+l0Delr6alI! zfvN!Nz-BzR6;vCbzB7b3^Z(d3P+dR|Fu-$$xSD{P0%mw@4r&2d0#<-EKs6iCow!ep z?ZCGO9Dv=x9)N1jxVnIP;Qqfy{{449p7X@@0IoiNl|2mp5#T6r4DbW|fk5Ci5Dc6F zLIA3TgGS(fBxn>64aDHNSkQPN2{;F&0I2}VF5}12K+}N?;0lllTm^D~T;MuT02Bcw zz%77k<)D>76>t}*1?qsmtpVc3zj96Bx8QLr=zZLO0Qv}M2Oi_OPF$aYb_36W9-t5S zW3RyP2i^cff90viharCdpByzm3c2yW@*i-23UnHn1wH}uz#m({{YB89z%oF9KXG8d z|IC3AlnM9QaHXEh0Y2AX@k;P{|BCtk@&$2U2vh_R!($0hNnkCo4v+z;CW|Z8mjizz zpa3WWDu6mbHBDSMgKhz~;_<&nVGcp818f6y0RzAYFafp$I{>Pg;Y$6}4okoakEzFY zf^QG(0v!IzQ;#{~u@mSXU@zbTxB?!)KEMMO;%sF9T^nI&cNZ1gLfu zGz-YaV`?r3{9HV~4q6Bl0XKnSpadud%7EKIC2$9*0;qNuv>K=Z>VSHn0cZr8fM%ct zpjs>Fec%BecYr?27p04N6o(le+U=`-sAZ(T&c&$!T$hE z0#m>=FbjMJz5rC4$Mq}d0M7UZ_#c`~lsK=lA4JT}4g-!uOGcL$y`1vLXK z0V}{7*a_GIcEBIo1-=6wJN}j54gOxh8E^&M0IIoz9ss=X_#o&Z;4p9mI12ayCjfsS z05}Dl27-Yz00p30C}=qDQ{%|L{AloFfH*uC51IfZ0!eu8JZK7V5lF>zmvN-cr>3xGmAR|I+!Cr4|N8enQ7se*v8bz5)xtH(&{%+IP?&z%M-hHw*KV8n1wP3D5%!05iY>umS7<3E%>_ z0UqFw@q*6}tj2Q!xC()a0HS~xAPz_XlE7ME9q`AbabE^>J?_hbZoqv7P(?r)P{VWT zpql_KU@M>vkO3WF8=wp51BSpKGXmcPkGF%uuhEz(V20-`KrM0q&pA6Gwg(&mC%_r_ zWA5PZ0}cQO0UzN1W{0565x^HX4)_870M!C;Jq>yW_bIqikB9x`hvR+(Xe1B?!~n5C z91sssEeSLkxCmSVQh{_J1GobGZJ7{f0oi!|8fZRH0NezM0jiaPmf?OmXa#T^k1KJ# zgX>*ft3hjlI-nkC0PX>ez~9yaaVzi;Xa^nx9RSsyfOg?NHGYQs&p~^DUOeu{^)=`l z+hWII zia#gAjGh>+AoAKLntPG=!-$u8>-7bPrM}k2FL&#m^(V4tKDnJ+=|ArO`(0}Ao1+%` zm)Ln~pWfqqU>sVxHO0JJFlR%ewJCGnO9648i?TCvm;oJ~;6t~9^&2_jJW2Nqn`*mO z&DBP%bJ`_+sexy&{^K*0rWdT&AF&>nkLBBAoW8JW+^yJJBq8e5LD4V6F0m!chqk@< z)qZ&K^OLihPA=7E3nTkE>dxPpx?=O{W{=g+s70-j={nQeO4nVhB97fSnai#vlv&BI z=6|%a!0nSx$d}tDlbYj?+LjmDnu=~bdtoz_pW1y$a{HEDtO=b{3{zhWE4^R8{%YHC zJ<7$@T}ttRFw5KPbw2`0@jq(PDp-%@wNg&Z(W^|3Nfo`-Fp|4*O!G{YxJyE_k>bRD zvZv3Bh%d9>beV2GTls6&)4Vp2MQ`+5tl;2@R_*2|XZPnfL~uIUomx)Qxo+iWquAYW zW$76AY1xloB{ht;)9br;uW{YYqctR?ySKA9x4e^w>(T6(_Nl^XQMvN>Z6&$2Pse{z zD5>XyjAWixc-=M|RFPN~wczDg8MjVfd6H*zgD1(k?5(gs7$&b=>FQ^H&k|Bf z;`WN_dn60zKL6LjH5!KtmuGWsv!z zGKc4oJ?V8&-ee@h?dXHyKFw^VBL`iqACOMy=td9zde9X5jeGm{RszALrRjD>iT-h} zoK||bGj_{t+bJ{a%gP7KAn`v1d`|u<`Le#1AuJe5Op31D4bN0tS3gzrvHs;@G zZLGNT$=Ubuu(iX_4c_}{DLY2oO z*hcDg7j>D^l-{q{d4DAD=DXbs1g#5CwQXzb`WI;LB@ExgecyFV8;%NQ7d6_rjFFCrIE`}&gYUwDwczx;& z`Je@tx%G*4qkL%xN=Hc2=dONNKP38QQa9<f3XVk0qB!(7!a)8EfY; z^-X+o;7ZLxN4Iv%KELn}r)Mi2gx4$2UCumuNB0#cUuDq&QNM}BA4}IolpdEqdAHu? zwd1u9NzGrsJ}+#4&9E&cmA&pc(V>lnUS;b@-r5k=B^MKZzu-{)lpMLT&^hP$l^e2z z^ya%|tR82tx^MNv)7^Znf_C%G53$1ZomZUGA8e@NnG?}4xn}HFHz4(JkdKc|>8Fv` zvk(INvF+lYpIW_Iej{+C_kc@Zz+Ci)uamz0Q@`^@Jku_=`drZnkp14N^^m@@tSTnU zz{5BEpvVXI5pShmWoJ7de-Eu%{cKIpvA$x5khh6Gm{~TC2=U4sy%{sNL_OqP{msa^5 zytZW|)PuCHyZ@v6ciy}rV}qq5EfiNc=Wt|K>CUuN4M&N>B=y6L8hRH7EBV%Zld>!2 z)wH-3V_9VX_HyofhIgDkB{q@8-yRnF4_w-r{bh42@&0Q1@_|M2Gtnch&Y#WQcZ#^l zG&XsA5cR!vdjoF24}Bqg;>P7Qy9Uag8hj40Pt5E+QKh$aQcX%<=8j>1f#26ngzZ;c z&r4q(oxezA7*iJGzO{<VpQJC`3fx@u zrKpFZ^bIR=N)8uvZ9W)kTflls_Gs7AIXN=h$X+_f8lC5!!>XZXLgk zDTT|X*y@W98M5?eWT#RZ_L7VDp1L${-=;gUrcKDC@zsY#CbOb0-UE)8{mgBm5B9~G z_)4u;uV;&Vd?RLo??+VlfPV_dLCv2+g0E*RG8i~tvF6G>K_ZE-`3C0ua%+S_yMJ9iT2d@6n$=W^beQ7+%Ju62!lHS6{-V3X!2f z!@5f)A^SW!7`)%36PLj?JC+k{t2=A#k4~LniFS zkq6zLox67JEm=2s#$eOBd4;n!&ku06oHjn7=ejI-#Cwl#;BFb>s%+jjesdyKhtj7O z+{QS5J`Zv#i{EjqiL~!&@EuE%cbZ11RrR(D5;EKDUNF8jJz;aO_CRej&ljl?pRe?r z>kSTETccxjLMP&a$p??UO5L}MVQq0Di^<4q2JY|mpEX$<~i@#b5*MY9<;I- zw#nN_wpq+uI_2I>4v)}|ExBZ8O@0vDC4W2JN2h>4S)11~;80`l3f}i&Dx;SBluO@t zVxBJ&&RRcvzoRGvD|GPTY9y;1qIu!#pF z28>6DZ5!*%Tx-NtRNd3eQh3G=uG>L(@^s~m{aXT4bJwanT@&tdO6w#P>G-6tzsf>v zp%`<^?PgppcO;^0nUBefuMKjZecGBN{mA_SgQ8;T&XS$aO}Zz1ZhX^SdHP}4@ie#C>y^u)m5*e6 zln+GC*j_u-7gdp}L3h|GrmE^nTXaONygnz>5c|m056LMDiN}UCt`H*)WkUpI^0a65 zD<{`!e(w8N-&QUbcK8&-k_^uc)`0qbZIy{-jl|!5a&Z#(JEQZYU2dyd9DHzHBz=Xn zuP@Kzk`n9HM>;QwKv^ex?qI!VDs~JH_6c9m6k%~3dnlJ6<0v2CadoTho|>fC?wsv> zYu07Pm(O>K6vj%APp{pRpJ?~9w`ihcEVXDl-Q3r!r7d0Zo%rf^=5ET|ox?KA^0}Ye z42Wg^f>&i`9kv#j7#C=Ji?GWro_p@4leTMvpR<-lg7>N>l@+NfVM&+I`}OFPbz} z;Y?qb%DIw}`3OcX^cVZJ{^-sh_5JP?Kc5b=zoXx(Fs)Pmq2IS#tv0QEcw>H{LGaD1 zhErjwcAilZ3ZJtAKbN1sZjh^WnkzUuCEx5+(#p8aFBi)djtutuWIM+jA>6wY`JLmn^IOUBvgpg( zre$yHUfy*=Kl!@3i{o8xskm#4KX3KqsV_x3-0GUg26Ogrk!>+v5F~G<7^fEr5;|m5 z3T_V$Zr<*G`%cHZ>)5U8%Lj_s1+QweOa69JWfmMBO8k`_cZY9T_sV<4=-n$;o~0<0 z3O^KkPs}7*HW`vCw8}0^s=C+@$HXSqtX8t-6LDI*jcNGF*}Z&)r0?M(pX@B6_fFPI zJ{HVoVW(isdk8)pOx030qhy2F`_mhLIZs@$;*(kTv*FxY-iHoHZXb53>U+#0nZUlO zvfHHP`_yBv4olSy4FLna(r>o`n z_>ZgXhL75Ro;YKBC+mH6@5vpe7J*&|&owYD8rQAn7@tjEh?Ko@kunqV?O4ltlbgnx z`w}Z0O-L^y_wC%UE_+|Yp4FXD7W+Hl35{8Vjp^@-fBs)yBCixT82k?yzq4oTKMY>temqS6j}q?i$GW&6(UibySO9T%?_0 zcKK?aRo(m3--|ZcIXzm&xXJ>v2&^)L|pKXSVnV-3(zFxtwQA zp6|U^GaNJX=2z>M;2q*}?omf#N&=FYe}6u#ko`Qa?1ZbXB*9E*Q^DAabdPHy+pU&L z`LM9P3jJmK*OUc4jZNKPwWTKWrKH*?hX+&Y@`oL}HUztxBz|R9-k2Y~ZG~$|g7a2W z@n5sA+A*nda>lDD`^JmPd|78kqzisWuoUYqb6A?$Y<}5y`$9{k`=;NcHI;Uqo&Hbzl^v>n=% zYwT2J^8B%|z5Y7Z9@&|S%#~M&Nq2)9qJ*AD&2D~Q(weMEVemefxxxRSV^RkBnR=eg z_ywisV|fE1MXJKG*s4IO>vKCy+}5=p?;iL5G3&xGwVu)5qW-*98AtdgUQVqC58Ok? z(+(cpnQ^+TD{)2IoB?z9=7D!6TE$Vngq}S-n{|!rMYdqyo0B&WXAJO`A9KIQlz%2i zv0CBRqu$HI%+kF+7FK3kxDGPB72EmB{ieOGhIgD>=JfY)v-?CzV*#P`<8JJeUGu%4 zj!H8ScBi~NCAcQh@pEv&{=iv3_J-pfc^?Lw@&NqCzr|7BkaW4MWm+Nibi-NP1{=L;&64#_-$ zxn+0N-f*|~?r|}rEX%IWQ?@&!!_>Jy)qFelDVE`+QO3-U2HmsEIlp;R<0}b^wwkNH zMGUSI{G29iy}RSBSQ1b2;<+uGdPf`<11+vN$5}5b8g888S<3ENbB0^TZr*eLu-j?Y z6Tf<~a_j@&>ZB99?}SKQ@meL(>Z@-voAI0@<541Gs%U>^5vHE6*1lX{|I(tNn%`>d zn2Y>bzY}HJ&b(8xJ6$Ccqp_5%Ye-i;^DY6g59teM$yUtC$Kda;}5 z;qx6D<8vk>=(LCzh|_WzEN|G0EHdMNQh@%C8Ds}7qE7$hc0ZB!ZBTTORoUu=N>wDwr$x|@7h|nq@z@R zZ>Yv-R>45vNo&2#+U^5I%y#u*8Ygr1>^4@9`?l)R*6-N8Qg%Dl;1EuyPe+aKsJE$) zshFSO`jj6~mUq4~kYM0mmGU75v!$)$4m+_@VUDOK7jQ_iQ^PDb8+vh;Oi+Nm0i>)TJ8Dsz3V`~I6D@L1PwzidHa z1)s@;8`t32c9F4|jj77F9oHmSz zyK3Ibb+bom@_YC-4vPO^sVM8uq#`>eW1p0XdfoAvq|RvmqM^DOH170$J5OrM@s_}?p3X@?jpB<~ir<*&>yJ)tpa8j&Jr`Js(h zfd4zo)#Gu@6~QCVM2V)#!#h%?GmV`*R%>58R(Cd~@zfkWgYy3FIP2eAV+Ahp#st1| z?YM8GsC!WPbTn@>*65*_dGl4om&(ow_Zpv3&S~j$+1DH&YM4@512*uphK}}x`$)>W zq?uW6lr2G z()HCYTRdGY$HQM;3^FR(EX(SCR6xOv;n6E6kuWSp(&ELE{xxGg3sU8dTs!xmulo`W z{Dgw*!>{P7{}OznJePOi;gj%`O1`wc+1$Jq*H)FY^ENdIZW~hLk_@ZSDBGYNGum?P zt?!uzU%Et}7w1l_ebYx)f0WJZv~!a-(>MpIS3tP&+q|+l(OvpDQCD`eoz*t$@Rq9u z?LMv2ymS{7WH=9tS-yR9$X>17{j}uFhPXWsPF&&LUitfukx5mCXzH-eLG|UsCI{l~ zHTbC#2qyyU4lYUla1r|u8#Nf?w3S8jyMK4z0q)trn^n(Nel@=N-Gr`RuR`hbCW6yL z?_mk!rbt2Km&-oG5pUHuotVDZK9cu3|5sn4v3l%!N29e7SH3qdthp-SN%t_W~FPFiBy(Qm{J{MD;$)N z?->7Cs&(W0w2x)!Jwl8h>s|M(eZJ%;sXiQ1p5H@pdJ^+MMY#1smB^=-g1J5!pR`p^ zm)cqOOZyL0si})BjxkzOOt&ZA%ebq{Rms15pzzIwV{t9ob^L8bVWHEXD$38zUs_Z0 zitF?)r&zk^t-gYJcy9FcLAhjN;~;t;oed|Gfp zU#D61?`xL{9s7TH?GE&7D{j!tZW5Lt^zy`q9j;(^C`OXD|H-wy`i-e_SZEOYJ!K%@g^pXSOzH2iDk$thxF# z@L8Wn$g#e5wVqwy6}c<>)sBAB+#Xi)>|&7WGJUw9W%AS(`LkDTD}OSIzuqdxaP8xd&!=eL~ z`j@=U^?2k3G29f^;XlmkO)@@J^mcpkFM~@DIZZ!NBq~Mjt@FAoz)P=iLFA`$-|=+* z+fO=^zc5JN*UdcR_W9l6>i9zq9A}>KA71}alXTV~?as*0+8uS3Rl4lfqoXm6N=K#V z_MW&^!^@j5$H1C;+vWk279szQX~Z%w_n1QWVBSMdiQTO}N3P7D?;kz5yUSq*vq;Rb zpd8J$MeSqDj}4{gPTefrwW;BVdbYCD?yYL2(M@fMi%o=+^XC@k?${<-=I+XH*E;SW zoKf;z4pOwZdLdjec*8(v zSZ25V9v%+6=EN{rgPv0^pLJJzwftOQ+7!|fr{L~rKUS^buG#$N!NWNQb+&8v+oW`? zJBzN{T$VJRGcugB9l5wQ@9MtvuZOX|AqA;-zwE7_?tYhLw#3Mi^J-FP)r%F0O^^A`E-F5a+l*Vz>2RX&|{9{r&vKGRAv`xT$66J3I>b@@{Fzc30le~@Dx&^`kqU!-IpLFZvemxQO zvX1vdmG14{#-07ZD*oOnDfi*85<`Q*i_PXMCD-1&x{7Y;UiNk6`5srZZ+lNZd&wI; z6ZXPx^PJqa3qJNTk4evD0y1^$_Xky8B(2iF=r6s)r@~37Zce7^<$znK&u-&YFQ!HI zIrnKdRO#w}eSB9&Xm9^+F`qN)(XY1OyHFJ7-0eGI)hm;;ZM{GEJ{grQ&Z-wUM{cr6FqS?UZ2Ez2vmEQ=kW|rUi@fsX3rg6`=Qyi6k7P=C ziI{hkPLL!uZFKnSZ4=7Allz2&56$F!+^4tsmS0jRraCyck+Vb5gnQkioFCPy<4!vC zHMzT@nmvS)*BEB3e62VhXd@%s#^m|<@?9Rr&eJI_A6C`|EJ_E+ya_grzJ5f>WE*FS z;u~(Qx}*BBYZVXqhz2P<%@)_RNN9Q7ZGO$;C#Q@b>#b!n=;?9O=oA z&|HzX$1G2Kuvte&mSyn~VYgkYU;SvXNi${T zh)OA*iTQoSGE8gF*0pyrUskU@42s3+^ySet&1xU%UeUKr=Pmd+jSTuQ85s&Bt35uk zOp!BX_h;7V5OrDh=L!zYGmN?QRsM?n6$g2_U71>JMQP1*st?4NHxvm~XWe?Se_%C( z95E-~J9^Vb&Exs^9B#@euZbBmspPNyS+mN;NM>Dr)u9mUb4B-F4vZ&Weq58A=<|Eq zOWoh`VZx3<<8^GQ9WHN#jbbMHTi@_r&E@>HYWLV z_-kFmgp-*nK|9RKxPr^)jfI>-HdH8YEx2Ems`2%~sy+G=<&zgwZeF>`t^43W@Nntt ze)d~=BwrOu@;W~Q%d~RK9h0{TnfPWWa;l{KHNGYJ-6}Ur`x>AUp&ePYzHi662X}K@ zD_uQJIIqZazJ9u6@G3KR@RP^l`+C3EzE4(|3=}nCmLH5(t{CP^uj*A*Xn!j2DF2n$ zz$s5=hX1f%jCtaIW$v3>cSb7*?3U@!y})CA@XGYu#74)WW41)z{5A!B`o8ryo(PQ1 zF$ENacK9xB+)Y$&JV+9a61#d{y4!(0T5G4Ko?_$u?R00wBn%@bwRH0)evamQwOLe1 zx_vKeI?pp~Mrr)&vCsVU%zjCW<9ovdN)%PiFYOt4cx`XOUU56A=U4r{OBPL~OB>ai z4%pw42zVRiWpA+ZXy!_df?3v-=Xz3MudEB04vuc)xI2BwDe`KG&l10QvHKS~ce%8S zL&>b+4yqm38%#Exe#E<{IWFpviHWem{rrj5q^*fE6OM%>ErQ)o_NW_*lXdMMV$XKF z{)psXDR9(JW!#TG@ly4pxLe~s)nYE#`G#`E`-|T9*W}*k7rMsuXnV9(t>8>q;hP~@ zzO9e?h;xoA*HqGF{buhBNGLEkQ8o$P-dY*Vb;Neh;CfvR%T&z?E^E?5h5Vosmv5KX z57(qzpRLk)^5p#G4_m&gNPe`w6SaGXVFHip;m78-*T2P-+C@(YW~})9L{Vnz(7B)f z+mf=D9&T_re>)+RZs=G}hOU*HiDGBmsBn}-$B4Ioz5mtaJD;CbUy5q;(RKT9<&Mg{ zk0bAeO8J{LCo@tsNlV{P+r`D{ezKv@=B~W)qCl9plkrKvq+rpZJ(Hi$ACeh*z;W8d zFTQSkYJ^u*ZeypMhgb|7U#wJ zJMwMso%Wm`8$1*j$A&EFI8W}W-5Rz{LV5S6>xwVuJJ#K@i@&43F{4wfC91&0p{)_AY1SBTG!HnCgki7sX%xdFI}r znhkZ#qzfCV3>OAJd=NRI zF5mM-&%^wjh?UE?9Cf}#m#bbDrrftLrF-t&$d{$8VVUwm{29;W7Eu?Q5sHeY(W%3i z-m^YS6kr#R^z}a1qOy6dA0t_AslPi-UdEcD-n>yu&h_! z>nQbe`@_B+VaH{!DzWw!sfwO6;4Wr9D=oR2H89km_80?mLaqjJf9e6*+Dnq5{a;CQDk92G4NG2|K%^bJ5GA7>B9z82Z!rbK64{8;4%=a3d6^)1}5N9p^ zJ?~t&Gc+u0L#5rw(2@SvT3S5%M9G`?FUFlcdp2S+;-FoD*KLE7(kC_K2e#K} zt$uNR;w7Jt;h{5=A#a#oJ_^0DU_SWxH?#F80%74EU)ERc*WU&{e6)#m7<#Xh>9_pd zGy)ZV}C@X0B4i(64vDP0oZ9FHk&BEEOrr`VS7QpR%2-OWu`N^P<@gzwwIeAD8G z)G`Zeqzir_&(wJ5I{xTKQDa_nzRp zC0@_teka&zOty;L!>rb|HMIySywC3KWN80Peq>^|&D(GJJvmNqzLzVM>=Jk&X1Att z`tbmv?>Vw|Z}hHoJgPmJK~^eKNeCO-pj5q~VQqczlKzjCY4_L*vpKcW?xf~%=dXBj zkY$oL(mdAeN#XdT3o3DT+MFH3w&yK2g{FOuU^nFrj0oK#WJh?ZCd&Flm#v5Oo{ocH z<(hkyc3a1v)XpZ8_V+xRuk=c8;6;vXgkM5eH-3JH+?v##L3uK_392I# zzg(sc-HmAc&R_a0sCT%CkCAocs>mG57w$-?LR6~=l-ea3*r&n`og}MHIWv#fUu0!l{<)YlZ zgEw}V_FigqZnl+g2xiY0+9jV+`}Bo%7WP=BqOtM1Vzq5z*|(3PPZrjAITr>D9=1@8 zT9s{`yv(-2s$Kc%{;k{tTsswe7PwZFE7~9LYuQ-1=EALSoiVneF|4NQy=PU=*ySf2 zSYpagk{?UBu`lzyA8*h8sMbo6*HM)v9u8V8>vx7s9gKeWy)gT&KyWPgt>rxL;*sgD zZoTa_eYY$%>s7O6XRjJ{)u}s5-tMRVy&WxE7$ac+{*R6S`%yReZv|=P3ma&cXShte zd{sZ~@@B)d^9E-S`BvKbD+9Fiim9~g^EQEY{)YkW{OnuW*I(C5JD)j0JAW*cc0TkS z?L77W9ii3!UH530cSrOi-3Qv`pCbCJWt4XLvKHF;mm#$CGKl{5X{KHNem?E{r9 zUJX%C+eX^u_gtji4h@L*Z$^x_#K*L+e;2WCa7559Uw|0rjEH%ygDC&9oA&khyr-Ry zl%<`&j%feaFKCy41ieOUT)hpWozFweFCyZ8g-2+AZWiLc-Vf3)KZmHlH)4LVBG$37 z>$LAH7g2r)(J%9ed76Y6&-W4c)q=QwKcYUc{9_U{<{c67x$cPhehRVvR3bjt3o&ko zifFfI6=JS6M$Cxw<5+TJ)#}B5bKpDq8*G8<1hnpUzW49@5>whyG&a5Yk-)iLWp{vLOibt zh;hCj(GH6RwCh7JN;^M{c>dZT#<`CJ?dz;WJeQ-+&>nC7T(t9oh$9hj_Vr(g(9R!5d@qnjj1wEgIN2XUyFRvv@%-)`?RD>~ zKJ9usA=Uv7ME+GI?dz~2_A~G5X_uEr+;0XMoSw@V1Uc~tMh?tLsh;ha8hW0q*3Z|V`MYO*s zqTg!~&lkxQ+U@xpG4F05#zQw^zAvG^UnAB5U&MOYig^BhM6}NgV!n(U({9hri2YbN zq92P8-^bGs_cd!myPXvf&%3SWwCkx>O8Yv~i1ul}K)d{PL_Nz9^CcQ_ohig~WDYT3 z9wWx*ZN&HtLX1xb#Pg8>F%H=f&v8aXJCq>Cl>uV>KSA{4D#UYP7V&+J_ciT)_e1PA zt|Qtr2{Hc3h;>yGvHnOR)>Sh^{r4fhN4!FepA^LXiX-M@6k^@(MXcL3i0fA(>Time zcP|n99KBDp=a(pAKluT%u0BLO2aOQp(-SdIvk>h=Mzn)HV%*MAXph6Ai2K@zXwTh< z`N)jeCp<>%L;4W=qBg|5*w071Uz%Z^q4mA#45FRQ5zix5#5jM9*bkT@+J6|){{D#T z#2}vgsfg?RK(w{kx2)&sW6z zrFV$^umYmLj=iIOzY&OfoXEPS&OJY330#A5&M})MEz$F?=$leVP zCl?X(cl!(4?azZ)Pf8KvJUy27byD8Z&MzVAAB)(pZbGaBUWk4XMbxuAg7$inj(DER zAm-6?#JZOnO8b6?5bf!Y$bUjSUp6AzEdeoK91!EP1o56kpp|z0^$`03TSU8kM66dg z5bMcv#Pi}1Vn0)fXtxx^IBY^(p9RsL8xi~MMZ|OAEMlM2hv>(3i1pzqqW$L){d*Vj z{e>5PtfckalsH4Xe@7ARU>v?$&dJ5 z&jHcSR)~H-GfKOj?1*(H3UQrH!?fG~4q_g?L(CT)#Pts#-uoREq+S1^)3o>P28idZ zDPlcrL-f~O#Jq4pjJG1hIzNT@Ty;c0`XSo66|wG(hR|*w6U2CHN32U{;r$z}`J#!q z4mYCR77*p{BldfH5bp`)LTQh;`-u0PgNSv81F>#MAolYDh<-0atOG5G=cy>{XK1x& zBBCFEZlK+d1&I5)CrkV9I#wXo6K=%)4k79zkGM|3Dcb#F-9$SdHB39-jTk>-h;>gD z(ax(8`{YiZSh&pSiJ?|OBJ>-D)WZ%lKl`i_T?LNHoswg^3xmE73JPw=c+fv`Gq&=|M~`dUc6!bIqVJjIr+{1 z+iwNm(C>HOu&-F+4fZU2L%RZRi05D4aGm0M!+LD!um89GjoyG?squfuRrWXN=XyhY z_J70mY@IjcfngIZJJYG)u|%1n|Nk|=Y{zQckyu*e<>hCq)N2NQ>|Ry$+IyD``Kx#7F#F62I{s?P&%3(-VKZ zi}hY8q!F}Q&XBnT+*403aHQPR|H`-S^|~va^5#RE{f9eBV&ey@_iLodo{ z!OzR-&pmU&_Z@@>DwChH75M&V=`>P}{OSYAzYlv%JoK&)zUyb{P$^;k zubjc*BVMJqMrP3dCewk(#-Lw}|8G`;zJvYVk2;+afP0F=pEBL(Qt3E!d{0pC5bB4M zz<17oAJ!4iRGj)dp_4$Jhev7WRp{I&zD@7vq*Jk(?KQH#IeyXOk(}M2a;Vj1muTQ) z@;`k7eSe0L8X1)Wzv%KC^aFh`F6xrM=@a1Y!icLm#4qdXP#M>!3u?r~Nt-D6!EDf} zPX2{qz+>eQflZ0Ow*z?eAmUtxxh_jS2k!U*S4nrtf4e{IcSX^^Yl!cl|D7e_w_L=h zEryP(J?tzRhhMbb0z9|{^~&~|E~{IyUtS^3^AbPu2zcJ8;bUY*2xo63N-#$zZE_Lz8RqVvD>V^hTc1oBTNV|(vgS5|WF1@Ws6w(C0b=MGqr-rhezapEc@Ll zkk30(zuFww6Ag(&q*RH=FD|77?ye0xjo&s4;_GJc}F(B9m{KQ;Zh1^p;#L6@Nu zpdYaYz7!cgC=0Fq+4ek!Fi@_{5*7GY656Q6}s2j^KOBV_f5}NJ)q8uTHrgW{~hr$5|G*+A9`>+bs~@7((5b#4Yb!yeq;^w)fTk3Ch?B1 zfQKrJ0a8*BUsa6thT!3W#21PIR=w`|uyX|QKlMJp_~DLMBO{5|l)$j~;nRq#LBt3C z1Kcwdab?EQgPpWz8|J%1Y}Zy9AeN3lH~N?1skYBS|3)(`*2=}H|7i=@?_r)qugMuu z^ryE!`pfw9o0ZUybb^0Ozo#Z1ZUr2@Df9Uc;0Kt0&mpA5eUeG9(tG%QIX|4cUEv2kdZY%}VzW*KyR@wN5O zb*OVtnq#fQ15e?%=j7j>0G-g3_cVVYWYh-fILrT@|9WX8C-HwOLO&Y%-+Yxc1ANy@ z%xF)@cdrFM5{H)7BK}(&;QpNG-zmgb$e&yF#tx&sm1$>ht|xGVUxpy?4>? zW}baI2IDc@{(r~grEK84euln;nJyPOF4Qns*n@cc8nDOB!|gf|pCpD^^#;nKMw2%x z@p>)B>ot>S-j@qHiy!GBo&4}rU1SJlXB;x9U*US}fmMqc8X zUITYj0gh}h=ccU!?qj|!K>lxsp&w$sHRAA#HDU5U$GFH&{y&{)XB)(c@qd}a;JbeU z-^_QD%)0kzqE?tqogr<(4`wZ{kq*SW%LawzAI}KnJxMRRlw>@6>tTHLAzo-Nbkr}U zG=jg9vtyeQ?+U+}{C{i_@W{7_XBp1AT#{+psyEsgd37xDmY={L?+Ms%;;{UE@WV|J z|1-%?;=CCtUtJ@s*uQfRfbU-f|I{VFV@=?mk!V*l;??BB#Inab7r2|am*dgB754Wf zUR46d;s^7=1F492;(RUN(bI@*~Sf>R6t5&?8jq-YSJNa^A5c*{Y^v983 zbSHE|pJ6;MOp9Nv^Z<8thyQbs|44?vWoMYzr#qA37Yn307VaDd|HP4>%njU88p2zN zcarX~_@1i3eew83LkUX@j}!uK`pYZB+`@esfcId#GP56D1!ba?;)9HuE_uV^J5Hb< z#}HpQ96GV`81EyA?`jWzxERJoU*dNw0Qbkk4}THgoB_Bx3;$1MgKO3W?jDAIPawZa zA>g69@PFRq`~~xv=O^T`GKB990pHagk-v?2H79U?A?Qfh=(33Wd;Xr1=%n<}|H?U} zW6@scAhh=v);ojy6>g5NpUCgPJRH0+SR-cLc=alDypIrvQSvj(!o%{j|HpzFk=qTr ztmSojtQP!Z@>SFJ;HxLlnL-_31h}Ii_;MMj%b6YYC*!j>`3t)PckV)e?Ixaq`tIq- zoU2me7mYJR-**Uh;$JyeG6Kz2mI+FVy>h{weqe z@L+N1G);{Ps!O{qoe;-kI@UX`32;w##1Ds^O8OCYdR}-nvnu_Nop~U}eF>v8c{Fr< zZ4p-{Uv*s%olx}#S|=_2wpYT^vPYG|_?9s1 z9@yW4I;EySCwweXBW4_hZ=>FDZ_HDb$&YfM-**b@u4%+ma=vhJzJRyooLbqh*6Y1q zOEj|=`Cm#xu-X-<3ICh%@-6qn-Gh(^9+3Z{Ed9g%C^N4WNq|o9iwc_gnEY~EfP1)~ z*^qcV^G`60@schXe&PKZ{7^Y~%t!un#-aO(S0g5GY;%F{!@NW1{!%Ek2$vbUTm z9EF`xH`*(g$-3-&2s^`P2J4@PvR~@t1s;1v$dc`+7bVIBXB3@FOwfq zM1Z?XAP!Buby*BtRff*}ln|=Xg!W{>IziHxF4g-14_rli&3OOtE_D1u(5@P^#}x+d z;<`N>@olw%JCC8>0>nqKU5fjY%ZUHZ>t9a}L~>^4;hk>S6XbnE!fM9XP$a5a8_{@KKTkIc~V(Qn3|7tew3Jl0L~rCW8WDg)E1 zH*y*gD8o&cXG0O^;S`8-#r_RF1wZx<`nMj{6Jrfi?OMoKO-Kvll%WIX-|s^z@ypIYGf(#6>q_w zz>QKGku;#6Tf(ZI=7%dh?M;r)y8#8cLz zowG2HBoKf06ZrlasJ996jo$zd4n|8&z02zZkEB366e0gw0Q!-&7pFD+%*!;W zB>OQ~5%>i1*A$1Hj_=VgEr?&0fnfRHmkqc~E4n0%C4W0IMosG1=RQodO-Id>Zq;R| z3;e*B5|C03lOOmN`flzA7S_L2>gEOT-Ftg#BuYHpOz<83F@hQpU&-~S=XjzV=`@msc;7H} zIDeVAEm)WB<#jQvRmv|3(6ZmldDi5avm=1JCL=G^q94=%;Lcy+ACsR|de)m9d7}^Q zIWU=gUKg14fS2*++=sZr=uqmF6Z}vS;6GDm6yqw~7I8J4{aB?1_%YsBMb=enV|C!+ zu^3-h;~@0)3)mTL4FAjU*JZ!l_|ty)5bZVV@V&RdkMVxWa@Jc(I!=#^&yWZ3uTrDU z{$4BiXBz#scQg3TH5k`s9Cc-!1hb&M$f8Q6&H=t-D&k>2?LU?a*FoMYOSIi)-}~nc zuwT__pz-D8Co}}^zlywP;$%p6==(o~KC*{Whjs%G@;RIgaE~gG20E@C@LLZ0Ay+Tz z>;SVm>z$PscvxY*ahp2pW<$rlv6e>0Q)fmO@SWYEBi*V?+g;Q-S4jW7fcUV*Y;O!Y zVxBImc^%~5g7rxgz^Z8(`e6m~&l>W-m;pRi1Ues+?>U8fLyM6g&XNDs5by)-5GQTO zFS!PM|H6VA$xVC(``5`lP|E0UhK{cj=Cy+<@r!iK=h4CN^GNc4OoIN1XP7}qSH7{p zodc1V{-m9KB!O7*>1hRjeoDM%PSoqUR#q$5W_%u$fobvGY;SMY`*Z_vFV}DJ#P@#* z9Y62GN;v6~<}cvE%#tvrRM!8>^LrB5mVSi$Kf{Pm6SFN``MQ9W8%RH zJD0NFQtU^M2mSbfctJ@NR=dKfF`^F=-yn(J!oAVK8rep?ZF1BbeSz^fi}MDeHDdf(_Aj=V`y{5nQWgT=Qxo~eD|T3=rzA#ge-`91 zlUKcmfro7ODW*?HUh?!rUV>Fh6%|KWI?e|0r-`2!uit$il-Bjd$Las5T_?bIKSO+G z1FR1H3EX~t{ct*P$6;9bg#49W>LkFD_t~z~6@e?>7n?wSd`;jnUYF$|-aj+_nH>Hv zLp-m9x7DstGmJY4KV3>5V!g{TBa|o!e3&#}_xn@y?-ugU$N;hSwHzC5Io{q35X4{wREEA%ouXqY8^Y_r6Mejr3-wE?+GU9)g1RmjYcV>QhIte=d%ka-^_HT+`fXBFwHRJ9l?mPLu zMjYnlLZp9f=!XYZ(e{|}wY)Oxy@vcOVW3O3MBp*r=PE%w*Lc+H>x+1Ji}26(4^ni|YFUCt&R#2S%;;}tPy_k8-Qyu{#%PL(e z_JvO1GIUN8pU-`a=yl+0Kv!wIgCE@v+{}-Q9su`lL!Oc4fiBCNQs4HR+bRiotG$j7 z;s4Im&ru5al;^26!fsdZNto$)D~dQ7L;hjz-v)n3)JP}dvt>9~{8(%FZ8!1X&cL2X z$`KmrM*MVN@I&E38d*X6y>g*p=>$6>9=b5DlC!_u1JGX=sdLFZXY~U4#Kh;QP0;sE z!TLnfyDsBWLO)g$^Y3fox!VADr-Pp#(GltP0r#9mzWtH>=y0~TGVE~@Z_D*ZZcl2_J+9sV8(TU<-jA&3TlP7sdG6AI+2<1k1RiQIXDlvkI!+L zad-PEbfWK~U1q)di}7<$=p<18_ubUF-drQ|h@Wo4_Lf0BoBZD?75MJ9@Mk~r&zA-6 zTw6gS=DMS|To~%Os@6f{+sXez(vF1(@*>_&5Dk{w2n-Rx@_wYJaP+ulVPPx$rQk&?8kwCRgQi@0PcywV5v<^?>6GxrMVH@Ce(B-cf3UBqANRCu?b@@mu#^ z)Ng?rC(>_oBv5t#W<~zVPW>;=gYRa(#cDzHd0iajedp2S_hMWH)>P1l;r~tlJ0FzN zcxUpvbH6ll5q2&h{^bu?&qNnsUN-T3ih0$s19|lY?Z0`Qc5*$InK~Dm0r&1rr;$&H zKhKZ$2Kij^G~!LzF1G{o^=Nk3pHu0d(}|jypZr475X)~q?&C=q>(bs0zK`n}6aSmV z?H1qj7V^w=^3!o%2<8C3nfN=uQKtYRxgYT#aze-7o_U7jXi_}*{(9)&1o9_}d#!pS zx8eV##K+ACUmbz};cca|y$d`zxx8k|vQwA25*U_Fh}W(4h%fyR{1D$Sm_d9A*SFqQ zh$}N6ea(F9;d?izMV>1j3jJ6a)M+CDV8x-o0p<%6591`@E!=$*^U=^$ z_=Ce-hs6Fter`ma+XKK?yiegH-r@vs2l-uy&zFGF^*%zpH74Ga>sVJD#_tf~hh&1# z_9XtVov|&zeVhjo?MfY!iP+*txZV(&E@R%KpTEU=dp7-6^A4_Gj+MqpF?ljw2k;{$ z5m$4lQ-|xl(Bh9ZlAQQ<`L9*4hxd#75dY{h^uMhCzj=6SRp>ifpnrSQo*ea|6Xx}! z(dqnz_M{)FmDf?fcy93By#H(F)18xnhjJr6TajOC8TA*V$Hx=j)ExS*hwy&}+OugR z_j=KutGd1})JhY$hZyLPVM&O}(4K&l#+ou%pXd7g< z5Ow-~27A>0%o>qD*JUc>C&c(ctCjk`3w2haAMvkJZ^_?T{S~c=85Yqf&+|w=uyAKQ zRszx;y0qWKde0WrKTF!wrH+K9#dkDEd={3!w@QK8z+F#ZXC)?--@XMN=KTUQ9(%6@ z?rsPDTaZziP63bRgML=(f3p<0$_gA&q10986LqDERxtfl;|BOK&hKWNmS_V!)bbt8 zU&6fchfLpAyCS*Z2S4rkQ~Jfa-al3inIrW<79?*P9XU1DN&9IWu4M!F++$wY(PLg?`xmzE-}$etG|Q=zCt2&^TfBQ4{c0 zCfFlsL6@#K!4K3%21r9c_mV_mwadQWTR%J7b)l^Od+9!18vO{JF!SnF>Nl3a*8VvL zKaZrJGciB=*^e8jQ-$k5?`lM50`cB_&O!0{nSsRTt!8`u@Mj|NYh1^M&tp99BA)#c z>~S9KsS$I3;l&K-IC$Me^VI|~%(6dt1o|e=IDTTilMsg<`Yrjtz@6Nmd7Jf?kqcx? z$6Ff+)a1DyUa$FV*K6x#9c%GpyEQ zIL7marU}u2Oul`58eNo_^UcO= zNHbTF{{^4db?|vzS=Q>3cMtY1iey;GZz>Bh;kMJTbuXn|C<+H!pSS${$*|YZ?3?-Kxuv+tDu1 z1o*!w19}m!I|2cW_f?FCGH0OUXb=6~)CtfJKKdaY@!!%z-|;=>i%+O?=TGPas={M& z#8)JN@1KTxrJHm~b{zch@5p1{(EsH)kGT1~oGb%$xygCo@mL%#C5e8>F8|ejI0v0% z)Su}FuF7DYP%n-CGqq(Ia3A;gS^-vDrvi6Y!U`=T@w%;He<9r;at4jcPJwra(VDwJ`_doG!h1b;i;xO>gg!US#O#I`+ zu;1fBznJ)Z&3&yf_qCG9f2%ZfqTMm?n04knakw6*9ie0LPlr9ggEtUwbEs2T(t^eJ zjYa%?PWwOS{$!-X|LT2AU+#YXF)CEeE+Tq@xBrlmVS`;e@_tqP5x`)F<#f0 z_?*FYOZYFeXfOGT?nB@09ITNd#J`dbwRA$5!pS_O!-KaMQ@dH!nhvSJF!N2ldncrD&9b}jnGTy8* zKnA|$x9ABlX8=|k*zc}RXm3B_LAE!-bsD^+RL+;M$HD#BY~;5LLf^^v7rrIlTKdt- zx1p;`G=eOu)Va67k3>spyb$@l`U4N##Q0r6JoOXQYtL6d%dpb%#_!u;mQ-p%06L+y z81H7j>$o0#ANQRyP`~Ir@T2?=3|5s&#WUW*b>N?Cou1a1ktIBIX}h0x&VhbC>U5PKwf#epH>MH)^+VwP`1Bev_gQuv!#sPp z82UX*{jdIDzpO)i)^tN?nGA4CKhg~PCQte}UZU3#Cr;4S9q!lp^TYo=h)1NOEgi+@ zg_yS0>~g3#d=7c$3wHd@RxbGU^eULK5TWkQ|SG$2m zCK5lp4E^3ZKl=SW;zuRl>g)Ysz&PLA=E~z`a8d|E-BnX1(_3yAJ(@ zc7?beOG$pJ@@&^b^!rxgk9j>F*@Sv!nCo)q@mu;k4AJ)JDJSuLl9nwyoyD*|;WAA% zl)$#|kPj=dL(~rr1K%+W8R;^0`j29J(^uEbwsH7_5gWnxpF*DROq~{=1NR=!tdXVE z*(HhBs@L5K{^>yemNUR3{GQk{=8bMmfjhV!m`r|NnfNRnkL`W@X57zrao<3e4Z1A) z7WT)EV@5FXvw{8(+WfzC7X4otes)tQVIb=D=7oQ{5-+eHc+9#{F2(rM`y6;+a7m3z z8rP*`0C?mm{A2R=H0DDm_W?{Ed!O+Z<-CAiQ!3*Y=s0;@k7!ZqH)*E!&w1nr*-p{r zdN=kvpEr0Hu$m$ZQH$@4L!6jA&_kN9@qdxuR*_#)@}$PEp}i-mU-4_;-h3F*Cf=3} z0q!pazb#|@)R6pP>3E-|(aL?PpJy@bbl!#kUsGt_9N_+Mf$w9z9Y#YZ)B^eu>Xb?V zKTx!sMr7Mom)^gSU%$BiS(c-^++kh~@IK=R;u*Q$6}7!D-&Q)vvftkg?d{EW?c{vw zYlivMT&LvD%X;Gw|5>O%Kau@XAM;>O;==~e54SO26sP@Z`T_Uyy%;lJ+!{n3t}8N7 zXM z`_7ncmFg<87OrX()65^p@AN5fS8?QdNf)~8DuQ+?K3~+I_)A%6>F>|Hi~RGP_SEG4 zBl|v5y04()|5*%^V)ExWaja#JkIyqp`qCxOzp%%{eLU$tT?UHT7C$-+_KzaIxGZp= z?fVIZYta5lm|09-a-Rm@e+~U>{8nW@@UU$?Gjcm{51*@%@YAJTbLa;jpkGXWXcVJP z9P&>b<1#brupkIelfc#^@^vUK_Y)2=a`Wq02A4Znb}}tl3iNyZHR)0P@S^f{r^X0WalG+H+zM_&$E8r62h@ zJ^N%uB~QvC4cf6@FN`&C-8<+6J!F_ z{LUC(KJr}>*c#7XTO+QN_{EJU;Kvd%F3dW1+6C~#dwObOPU^G?g72<___<4eR{s@v zxG6@cxLudkpFqd=L!$l}wa9hlZGxBHxzgS>xX`q%pw z{b_q{XJ!=F5ziYg);cCn2ClNbj}Ry9cGdF@<9+=|@B_^;I^Y%qJe+9~=i* zS=*SFpB z+|~aob>kD-Ukvuct4a-&L}%IQvwi=;Cx58pg!fO^P^VEZ=m*bYew;IY$R~^Pq4o}@g|ZOEqU0KtC-?mp z5npf?xOX&kx)5)38F+Xba4}n#zwQGMao#c4BYDpQkMMoQ&g6gH4EFo@9zj;()24wR zNQ-tgVjhUT0Pf)PX)f~1b3ehqLk6alRvf^O{{=tBb&eSqPv1kmF3!s(sPkAFX!$KT z5B2V*-=@p}?s|oOZ$bW@8MMD>Esf+Q-eDtfC-*bW_`SE6e7*-E!$+5Ksi7aSeFx7e ziP5qrIxCIlbz^*1XTLjk!_FePp_5xtpZVt`V0E11)WdPgW~nQApl|;^?I3BURj>ay z#GC1_q3lQJbNE@NOI<#bA1%I{dBeea^Ckj!%)&T|NnBcG2-~IdBK{izR{gmi4vquA zHJYt@a{ni?7wfKjecsPSFDTV}HgH!m_Bat}XpotAZMtN=MI>{?Y!lUDv;s{Ab|~&dan` zee*Hw3Hi{!gQ(x(Hu#<%$iUTT|Na!U+1IFRjx}T*RdX8x2Tqd zpc82T|97L`mj6gR86u$t+x6fZ=tucJGNMJPNzZ`0y1}1O+UZEecC|)7uBSaq#a+5z zj>2zHIG;#gQLKG{2ohB>U{et{N~|4!xxOhIsJf# zYrd_SmB~L#e|q^H_5Q>Q9bvy*EUJ;>Y;gQq;10gGxP^Ql^&R|fA-h+#+m3aks{s7z zBEQ3G==f8?KV^t}x}#l+>o;?~5Lyh}@dx~H)5M!N#PXYe5GIPH)Tzrn6KR8Z7V~t; zA_KwVd-z>Y`B9gr+@EwY9!x$t_Br_KWM<9FgyoJp_%m_a_j2Ql!cONa#M@H(En5Nd zd4IVM>mAkrxSRer>z{SGp%cARRx{1Mbl#HSdz-+J!PL1UiQQ^f)b>5DnWdl;Xe$>Q zQcT`>l^3|5?{}Me=gqRt?8vLiw+?E)>Blr&&%5~D?*#o@xgRnaI_{&18bP*Hs?Zd+ zD=#8e(wZ*sodVzc#H)YK16W170*~3^zjFw9XiRg>oJ)fmz6IRF^@dEZy7XNO+->{r zcgy;~?cZH&`7Ql<3p37Tj+ggSTjv?&Q2t7YTR-*VF0ftfcl3_4#7ldq~X z&cpmZ=M3r$iLt*@N{31@`>Rddzyt5VlP~pe<$1Ffz&(G!&d0>->>_S^uff|1_V`;M zpB$k7A3g&=(i`K zna2$+f96$@enD+{I@%wie}a6zaWDP9`eW!gsyj5ZIq^rAfk!!Bs>MU7#%thCejnA? zS%&MVAir-@koDe`4Rg!R2%mFCElMqX1)VVO&t@jSVSV6k<_%V>N=ahTI%80y`7TF> z0Pw(JD42EH-LvHLdTKWNYNEALR3v@Saj_ z-$uJaZz1oQ_vtp=1Rh@2TPqtsm*RD({T!mz(h$o|XBzme1nv1~4ejT1&L*zj&JTSz z-0!E4~t91G9J=%Y=lK!~}@q>+khxoqIAkft^ z_KP=7ag9Jt^4uNN>*sk)3FKF70z9?^nV}->`AiyO`9E|Zvu2ug)Ky9N79Ox&PyHEz zJz?APin(Os(|n$TP?Pnh?*V?4>kSD5U1~l6KgjnV%{=87Gc27L-+#|Soe=#W?T7wi zx>7HzLq9m-J+%{kyZ(!rAjXlJvu;Cpr=|7@T`b8(-?wFUFw5b_`WLY)SP zw>VC~)9Gh#KluN1+VkTU@I8Fb$jo=vGQjeKa})GSkzaZY*0GMX5=c^76Mttb_(6WR zGd1!0>0rP54))g~zBNDi;q_@WBHg5mBPICG8sHm0H{$xr%k@<*^7Ax@j(a=uYI(-( zr#}LZa(&p3crC_*;(O?3eKMge`-Rt8$j0)WtJ~0V@_eEktoOz`wrf~@jX2paD^^?LJR#x!{*XBFV~=P;*oT@l+3dnE1aa`+ka-F>R)pN}x!&N!jteQ$w=+>^$5qz*2!3E%QthNeEq}Uf^V$;er*)sgSqtlAj6S6{ zl|p-6?J)n&WgL!-VjM+m_YwMVKi~d6y?cjIZ;a=-nY?jE5{qR|h|dj{ru}_5zCxRj zulf=H`U&~A^}`&_NA~jp^Yc0`uoOCbsB?cUbiz9dYQ*5TTcf?vG>Er0Y;Vhfw4cw_ zn0Uy@=gREol{kCBpMl2kra;v7uxjubY3?F=OO-glK&~=C(8G=`_P_=9_V;^AG0#?z;D1^ z{SYD7iGQ(^IN#&wN__q?+Vg8sjTBbyOG`nLB~n@J+G{2BQV8Rm0dhfbW#dS79lJPZMqy66imvpMjJH26# zi~Ep+h;O{YcI|>6>atzqhOk{F(XJfKduh173fR_HpG^nf#ruzD-=-wjlYz@+b&b1O z?*X}SY56n!H~iBv4!?LT1IofZFTt-#eiiQ5xicg0{Y5-S2k_N$^tfDR>QX5OaQpY` z2DyO;-bF^0^s7sS^{~e|qQ3sQGVQ6&xV4|t_d?ua+36U9ap!@IdN3Zie=x>N4dUIV zKwlkC)QHJfU2Xu6^^pLRGC}{VR54koSo*PJnKjaj__5UV8=rSgApVgID~lg>(Gr zvo6mhur1t`A&dSw$bMWY{cPbrz7M;DeyDO0`i}1<@T5fbzw-T5?hm-RKVas^SG*4r z7+p>?ACkX^`8mk^oSL|c>jeA0)1R48Z{$Am+p1LfgJ5#tQ4c&eg*s`aIhOs3>&%qI z%Xgs8+lc?H?8na-=N?`kbtb>bBIpDvq95UHrRFgIJ651wGw7cLj(6vEjEkxTAoTDC zbR2xHz~sXhT))}R2OJQCo%ZtqcSrzR?FwB-{7Aai<&+1w8i@Ee{v3D~c;FkX!%LCB zi}pvqf&Jr%XPgB)LwnHD%fw4>fKIrUEEuG0BEDY|h-FWB0mj!<;;ViK?olN*!tPQf z_R{_z+iLtY`Q2NCAIk_GvtF$j06(@GdBDss$2cDC=LLkefbZ+uTq`GM|L%}}u?O19Z`d07a2_dU!nSk)_)>Qmr~`{zYye}j_H@xOpS5iLqh+)n$4 z!=CS0@1vZ+LpRE5g#dNNWe4uQ2;9u$+shDN1^Z?A>(Xv8*H_J#=%3Ae(Qga=$?yNy zC%-%6B-9OYGLrb_0nqnU#=QTMeu#Vv+-3WI`-DB@pFlr0XS>#O-^{bJ66~Y?)-m)y zuP=%dpT>SsypBe6$@fU5eyhKHJb&;b@}1NV^7}>7O}gy+n0Aha{SpSc)Zu*Le~7#{ z9I$Gf5Bg!=FT-z@O62`P58pdmM1JWz;CpQQ5-&bNz5b4F;$z;_kGxQNit`(FW%avxHrGhNzCw^}+Oeh1r6 zyo^jhx?bCNcR#F(dSiTV*UVG(rUQ2u#<=@|Iwe1Zj{UsCxf_AUP9gGVkpD`4wCeTo zeqRFdEbV}Y_?>N&A8x${9^iZ8os;1Y&P{_oF51Ikt-j?t*1Gu)&er! z=;Hd1_9S73lI4~zpFaTZ$bs=I%V}MJ3fA_!`MS`1J^M!v7&pO8V8M#c#lU+?SB>(B=4Xw)caM`sWpl ztFdga?-cADO}@3iXxSM(54;KSp{<~!_`N14@s5mt#rXf2cowef?C0Gl&83~;f|_aa zf1hN~kMTY3rPNvQ2l%ma@N;|ON5jkEG14ptPMiErn1sJqcS8ZqN;KG(7SzP&Z>Vjeps z6TMY$i0@f{$$E=4p`Up!#s=!=l7?7(FW1$SQGaX&9%Vi;`LOLk==dIBz1Py{WMI7q zU}q85`*RK8F5CAi3!Mb+z3bHqrrtS+QLmG6(vSL=KLp=?eqT|J3;X%+*SkU|^c4P& zdkaE`$FSZl)irR0_!pDF_g{2qTpmZ)rN$NDKAsGF7O*OD4!FY){h`F0)Pa7C&oyC| zk@LyvXZyKZW%dSDFH)MMsBzzjU;`Qkm*1KXmbb@@pAf9-7#<{-( z?D-MtRdu>YzU>^$vV(xTs`<1+X6j6m@U!C9QyA@?MZEqK>b#F}ZQ^rU9^fJ7=eNm! zpZ8TA9M_A9XQIA~=idd1CqF|Se!mpiQmLPZ!VhjQ@~XH+mqY1*JNIB*?4-_HM}dd= zeM>~6QgPkct^rul$#O*(ALA{+c&ozk^>9A*k7B-iM*i!Wz*QOGW7q-f^U*(iA218~ z3AcdT&x?;;CH@$3-axKnt@5`U`VrfA1usdrTKy7rfN$>a{5}bMAK!yB^J53*w_pX7^>zc|hh6TwIH6Y9&qo6=`>=_DagS7^^Zc{o=N_#7PN=oH$W80 zJ}~Ena0SFqjQn@Ag74*XL}iFS;QBUv6MmNMJ6$G=V=X%aw(nThmH^ZK;eD~J)EV^& z@K{17jnrlTrn`uGo%?!f{4V+H?(;dHvf>aa(tKUcc7cw&cLx3QF5*cN7}}oU@N+TR zd89CKS2pz59r7RYc@K3H^AW64YD_lpqvgwKrkJgZ_4u)+ADjZ6{IvfS=Oce|NjOsE zwv;aYAA+y=9e|vGRXxt{_VeSa_kbVV-^sv~a)ml;C17;D-xt)l>6h={0pB&DyvFmy z>HnzlX1{{x*9-=%?o5P^qX=4R`sMWj-~pbygsVlRQnrM?{rvi6GpNIO>r4IJt%19; zVMdVV>+-uKOv`@zcl!ftfrogW6lNvq^C7_f{sH>$Kcddrx5=*t|6e3t#|hlk82B>c zM?WAxHR9wd{W<;`+U4njb%iW&#PwyA-|BuvJ#_Nb^x;h#$>x5&c=%2s58kaEB z<= zc3`!p)XMebbKgwTqb}BEqt!1_&M%p1XHy9e3%8#GDDDKmR%!kBbs?j!?*|^9j~Zt( z4l7&(?)(e=(vkf9d@e5NLB2BMx5i2EU3tO(lKkl=t}?*`7~OI{xQsu`PW!p`ySYB` z^ZP25sPpSw_$S2gKbU;DHXHE3dCYVR$xpo+`u20@t8qN~ZSSL9Wq(Cn$dd`wNwWev z{+1ZO4~W0u{!EnnGYyGP{0aPM7Q~@Um%7y12;6-VI@^g~8wK3a6eDPk_{Azi2Lkux z1O7excbQ^)`5geLDRrSZa39Y_x(XR}lk<`Ne$c62}OtI*w5o@#(WaxbENI4(~$F2jPLg~Cmxmr zqT_!H;?3mSZKHwvGD^aiaxXdl;9vH;+7FLq1FWt{L$pqssv0rpXe2ct-Wj;KMVG^3 zfF57<5y=JVw_Lvf5Ar>0tR9t`*9o|T-wpeoI`wA(5A4mXk*|pNt4*BW;}ZAk^36@^ z*G0Q#5I;7YeC`|MBwj5I@G#Fg61V8`qyhTH{@utuJHU_eeF0=krTVS{?ktLUE=8Sr z`++-b?^&#U!#>jDCg2B_BTl4Sb*U!{NbUcT@aH_nf1oqtXEEwUFU$9BWW&MYJ9}b9 zYT|RO1dN48o`d-=^*@pUtNV-3Z!9C;I0f*~P{cW`lKbhUpdV_9d3g%?FVcb^drSUD z$_C>5F97$=MZMD9x@;W=9Y>e<_0QAUuF3aVZ&S3lA^Bf!1Mb>`7MXQg%0*a5Mf1r( zmhv(Ao#%od<+>t3{Gv>JR(ri3*kks$?_VO{HeS+y4m<7V!M&XdxYzc)bUWq;2hZy~ z#d^;lgMRoC{P_pRMa@;fBfK6=AiwILwDY}^8p%WdRN*{mKZpH0_M@W(`b93cbs2R7 zIu1Tp)`o$G>R=%&xb*ZNubTIoXHD3~r z9$$epn%P>$l~oFHAI8h}rUa~N&j#Q37BawI;&CNmXY_eFjbL=kcV8voEqzB-SSaa5 zm*ZaIwtb0z_})j9?=hMD@MsnE!+9maN=cSV|3{5!3>{}Xj7Qlf)un9{`ptp-zZ$Um zPbLm+kL`TA8(c31Z12%eO%9z9*IgzrWqARez;O8aTgGQSafqcK;&-=9p4?0SgkQox zrr-N-2H&#^Ej4jiSQdO*CmZ}Gw@Y-{{}J%03wUbcC7Dm0JCHYC5--)3{E6xH-~Y;S z+J7b5<;e(t3Qd=4X@J|$Ut9Pqbb@?u4r=l~eQV%eo^vPW>9X!`;NeE_&nx21jzK@% zrh`Tji079ZKvsJre4ci8a{S`hYT&WtNg9Y}yT1n$`MzDDwpzqK6n-M>}P zxGXbtSzd!WZ^QrFiPyTwdgo&t9iUFaIN-727+z+pXEkB;DHwYlV%}X`2%KD4$DD6^CCW zz69UJ=M!?1KTH->R=+rSUtkN3OHy0>fz;7;yK$TCltS7%_q&-OjE=tS}l)zZ9l zK0V)by{@gDI}yie+w0%RfaSQ6^BpX2sbZRmRr z7t~DYZe1dhh%A3bqZmhPh#$%a+}#ElsXaSjVh`YIL`KbQ&$!*m`1J96Q`4yP(8GFn zzyo!O_sdKDO+Hv;Hr}apBF0c|p>PE(vR)Z$A$%@`iD`t0(x;gYf6)^xLxKzyoQd zBc$9S{zC)Ulyqj`z`-~AN&aIGV@o!%y)dgx<@iyjcWfN{ZRjH z4VeDTQkZ@?TU6sF&fj?e+{fp^OdKv_d`4QpZ)+j1!iT{R@cuipmb^dI0_}D1ewm54 zDY7wc^^5-rdUii`QX~T&=JNwti05Pe50rIiM9kAAZ#L8$;k;w^RSt6=^l`rkt3;)m zl%@aqea<}8*?As1_H*J!36lY!~<6%yrGioUkXz=M^)s-Yd*|A?CeY#P6<$PL$V80piVNV$%Nq zG>t}z5&thIa0l-rn|K)b1bDDI;w?4pydoFimX7@#v^M9FuU4;?fhNV|t6J%+CI`;Phtc^#@{vgk%E)jBM|DjF-h+zis0B!E+t!2ct8*4fK8O!S_(-Py_1lytCG9@c8_| zUHne6;lGvziPbLWRm@Wx$zRBP=;eD5G9BnLKLLDS3B>a%;@j&2j}6Cs{gU|ZEwD4R zy%7GMc<~0nqkQfct&?-5I|C2$`iO2&?YTaWaQ-#%W z9Iq>bysmuC3y(NHZx-S?O30RS-=FhNl-G$q>X(`c{fIlWM)GIFF9z?0AN-NF8kj|X zzF)z2^1FFK;!S9evq?3LNLtXP5Zmi#ds7qtfa`D{zvF7~)4Wdc6hyy-$zLepVfn$s z_omG}c**QD?C+_W(tWzr84SMbP$vEJRluraDd7Gt$Ry<$xW&7my&m2#7(o7^f5DH~ zzHjq*7Wj(imtpm;)HRuiEjwdQ_@M?n-q)Qv-H~A)bH3Yq3AlSR?3qLR3*CTDgzs^f z@%8Wy`1bR&vVITT+p@H_JS}xjbN%Kmg?ba%u5+EBAK>+JR^lH7fZM;Te^(N_)h^fT zG@99w{5S{jKyTnR7>8Z26Hi`TGw-pzFS(BO@5MNhX;hbkBBb^ z$M2;6QRpCgm1=VUxQp+n*QK3Foq+p>L;qwPezEmO;2z%Zp!w=&J|_@v-&+#{{KXpf zZ*X08jT=9-467R{BNF_&gl4EDAl13`1bSi79;|9@VdSQ z^;2=Z;doV6Bgctvcm#fANePV~{`ou8~2+YjXd}etvyc875YoxcS}P0Qncr z1NQ|mjt&vGKFe?MgS;Qzig+j9j|lQPnS#W3TnFDDkGS1T+$j@>j?cvzG*X=LS)6&s z!8~L9_T4VDD{>X>`hVk#?Fu}Ce@wshGkLWc>TO2-9o$ELwnEAPAk1@ z|M2^k3pl5A>t_e)TuB^Wtvc zF}}ZFnRa$54;|O53YyuN`1hB=cYce0H1|z%bH4Ky0$!B)YWG_3!+dV4JL@ey75dIo zi5i(fyx|ex_H*$vrU345jeb8#{`2O*qx?QF!$du8zC;gUr z9q<^}ff#*CRoF&8^N$P@UCzn^QpaH`jNdhklh=}PEL`zD$_M0kYXrXiJoIG+z_*`! z-eD~G-W`ZTvu@eF0es(4jIU+X-`)YZ|J(E$DNX-ZSOnb5_YIBzQyc*vVBRBLy)6^2 zwx90{jG%rC+HXJKe83R!Lv7*DpUAIuly+Xh`2CJ}XU3;{8|;_ipvxS_XN2*IUXycF zr$gUS1S50;`AH3d2d`Gq$UQcoJmX*oXlA3Ae!P{Zr0lu$cu7jR_58OpO8}*N#qs|26jgj->;yo&ViH+A|mJLhs0X)qR2cw-wTMn|M1ViPx&vT_Cf@Cnca= zwU)uoaPrz3Se6WUfxm#Oq){5kkpuXNQmi)t{U|hDqO!oS^zGkC{=GhQe0)#24d^N* z$8|te)d*&PrRJuj{ro<|+vNX#5O`!6#!DmOUiM3X?_q5w9%lZxpW}8RFZFX_oJtzk zW!QS)_Vc;orUH+>Ee(`1n{hQn+@j;KAL8(H`k`+;@W`_?ns4k3j|1)>1%3_sxp8Xh z+s<#=$NUy+hx~@zu1H04>~~1N~*j^-7NS@Mq|kF7(5kWZ(zymD0-NsXv9+efD$V z{ZCPEh|eLUCBNmDu)p=M(hwaXS|d)xY+YQ1sn7Qicafj^Yv5`!{MM5AG5R5FJKwD_pMQ4q z`RAtOS8N9z|4aD!tyK8M0x{3>zx}+nz8}Ls5!-hlKN}3(%kLISTGJ(K3E=)H+9kIO zb@{F{aQnVfVg}m7bEeF=xcnpQZ6pqtlBoYxYX2PS9Kg81?4#7BhtP2kdq*>Cvfhe~ z*{-E zLVv@aV7-!B!Ss8H-+|lDXYc$jaAmvSH0u%U30xbjb=Zw+?Ps z*v?IRy$^g3zl$<~{48>zq4~CR(?a{f_wxDe582)-KJXnGF`xcJojTRQck?^0FNjy* z`oVr4dWDqG@$)%>PUO34K*z=J`AE3x()A_nw|(E>s}jJ&pJH6gkGhm80^FG$xOrYK zXAh(+ySom9Iw$YznFe|jPaO2okwfH_iTaw7UHemFt7FM zK>ck<*yTBXOJ4=<_!s%}9mY@hMW{D$8}&{k{}J<~uLA1*h4p^b82kvoPgREa-@iiN z-4Y|cY;yeKGVd4rk5$?d|VF)W@ANnlsYS9;;`!Vo-d>oRuC^N6M?qp zA^bT3!&sH6OnyGBlq4PL;+_QD#rNqDMe-eklJIBnUyN%>zq-_t{q{^MgYu7`1%UqS zas>QXuZ|iw`6s#q`eA-YF)#i~wdZ;`)&T3#)Vm5#d?7sJ`WtDL#cNQ(EhKn-jnG@m%X$sQ*!DcxqrDlE;TN5` zK5_FsmjUEg;(Qe0d?aqv<#Xmq{|@9yq3QBjSL&zFpno>k9mT%`9^m&t3WKhen*Bq5 z2LPi?_C0uC)y?Pq%sie`rUT1w5uPjeJ#`XZ0S|IMGW~VvIQh?^VDj@N2~WpJ00*bA9FGI#8Cox|E8eP8ZByl1_D5#c|~4_{vH= z#T(Wkb=IR^`}6JbKS1Bx7kP};s#f%~qd(d^kNU|zgpU88vKr|_JWU$txW}QrKM=n> z5Pa8CMEDF=;1EY?{|`WhG2dw!oR0SJd$~KQGv!nI;bfvl#0*_h%R*QCGY9hgSmMXB z&`y3ITZV%!bHq^=-+un`(QUvz150aOHrm;|2I}?O&b6G+ed)m9`kL>HgMQO{;H!1$ zsSVV5eTwy#Kz=*G@sf26`J1b2fkBW_rMN#C=JT;;-8lIKbX>OQd+#g*?rVl|+KM`_ zB#m3`4f8uc`H0_@>D9tRPWWvo@nZCwcL@5?MLTnKg`FO*x8EiI=P}T6^Lt+xiKiI{ z+_qV`0#Ejpm-N27+ zLSDU@9DlGb3vk~V#4Wo;-Dci%vR$Y}snX2P_V0AnrTyW7u>S$=nJsR#?D6qE!O_IW zB>@lgM5Z$SugG|IGM@90|GFORw6A|YWd8^`x(=m1Vi5OE-=S=fM9R7bCdd^Ygip z1o9W|WdAP2jDRemR5#ghw)9;*53UCJHzko;xVnx0HGa$0kM`TXgSS?~$>ImULLP&c zl=^ZM@IXVv+edV0I_8JKpJ;Cv)@vPKW$A=$&-t`5`v70T9_u+{t0Xhm5qE3ppUwHs zaX(V00rbr};bSM-tN0yS8CJUVuS1;g#TOx-p#|_5@ApYM)g`GZ^zG+)?PFZIxvrM5 z)a9i(Q2UwB$HE)(T%{yf3y)OKpm|joR}CiscONXIabzvIKd=eU<9T_Gd@snWUrvG_ z%!l^EOG>rm^@uYJOYta+>r+!D@;6(3p$avpj?1DEe?Y3;W?WNh{ycEqf_BAbKn2TA>aW%Pv|6n z!CC0rzt7o6Zira+hySUnnPy(d`;zo_Vap4&eSzkbm~YgTJ&J^i>~tJ{|cV$V8*Ry5!IiRrlv0K|3ngqU9alm0mzl>O zaX-gX730Nxx98kXlOwc z=5r}Msq@Db)ElmfndJ}SzkdQ;asJIuyafFa#6_$2of=9ySo~FT+sB zVHU*IapHrI5Wj@^_Y>kPWnabOJ8kd%?MVbbbPj$K^K|Lcj5=KBNH^({xB@!<47K&o zor&jI!*-=i(nuTXxVSzKt?_AGrW;+74nse}bJ@B9R+-*|PKfujT*NzjXeYn3x-c1j zQKb>^Am`;2mZ@8|q(t|Q|20{5my9Ihb$wgb5R{Iv(g zpdZxhg$Xe_}tWB>PKWE zuyFf%YMa`C@8S1MUeeCsY2c9>7)O)UWac z`u6kGicbLUZY>LYDfy@$C*f+@V?Q75$#1}2K6ri%^{b8t9^(5fSVhR?3CFd+Oa{%I zkQ{#y<~WURg9m=3&VV1F6V8qCGLZPB+raJ5+hpPOf{Wjsu0{TQX^v&Tlh^griT{}$ z{)t{HtC5w&3(N-YUJr$F#1nI|UGvgt#PnDC9l)ap3Ta%zOqYC_sB;73Wr~?Nxi1>y zK57>7TgrrD*%?TZ1R|w%9DdP=^O1+=KGy}ThSL90e(%@dk7q;26%XYo{hYTTaQ}1I zFJY-mv3tNh@4?SzJ__+V!jTN|X4ZSj&2wMeXGZJfJ11ozv0hJ4 z%}nq76X%zJNj&6~HYkS1VXSKgB+Gf$p8dCtj` zClh=8hd-d@ui1X_MFzk3C0hPIv)BF&EB~wCXY>16H>Jd#i~R{OB=Ns({%S}6?ay-a z^>qTTvw(Bw&(`wUm+H8%?aIGn+XvtIb35`|Yi(@&M>dbI{Y@?TUR%H1583YfEg$%A zF+6XZoP5Lh=MP%>qc2wYPbKe0{kZk>ExWhw=95g!^OM%kpZ~bFyLm_F%k4*BV*1IO_Kp&kkNo?bf6e-7=lkDe{r~b`)AEl^ zlx{9g?6*QOV?Wt$kyrSo4o3LnbP6c4gRUg znK%Ek${8IU{3?Gz@xS(tmj8aNH~!-|WW34yV&8&cvOImi`|EMA!t(STkiYXkD*W4D zq;lYI867@>juHM1d*|Yttlj_k`?Y-IvGUJvlinbn`Rf$_$3LWc@*lAB$EH7To@x1) zS^2M$UnfB+M9|42m-*2)0|AyHY@0fj| zT(q(AC3h6h`;++p-)Z{)$L!wFw;KM>2g8#N?`!Q!$)B+Di@$1ke)&I;6317+4GIk5 z(|5gpkL_!3eo*(*j^X+3|F+^!-;?^zKdj|%{U6HDR|fyxSWv|Ov5zR8zi8zj`gX(9 z&>8uu-=rUQf2+ZNz3Nv_j6Ux({BL|142geEANYN*Y5(6y&Z&RQ_S5&D-_`$PCI;oo>&_bF^E^6$?ZU%lV>>bnfj1;#=6nZ>8M z{ra{4Tg%_HxN9fp|B{^}bn@RX7*u-Wy!+26{98Y&{rO45{{=lQfBUCYAA4YQdu;8d z@1M3lsqk-nq0(Pl+1U7gD}VbnEqC(ak32U%8LE8#J=X5vzcD;N^1Gx&{}*=mZ7u)g zzpom|&wsX7_@aML@qFsbwA}dte&%}>zGLwcztiyl(9am2g;T6e4)wt^j+`2`$ueCKf5m&l#4bteg(r6{&{_p-)?avz)@8Qm~KL5M5Jbe%A0-}oj|CsH|f7I}N_*b=j8nI z@Na#u?sqDsaUcB)v^;(HYX5Iqd6F;mM?Oc(U$cD9ZEN>ee^$r))(CMvBp1!M<|AOKFjfOye!sN`4^{w3A zadvX!=66`TcHd;*@c(UF*Y70f^8X3Gvp?y3+3g?D@=x|v!hDtC$-hO*U;7T#yNo;= zzxRu@eAD8cOgwCS?uC|r>KC!0;NOp0|9{gb43FtQUu%dy>!-EW%#SlK;*6X?Xx}e4yo6 z;5uJQ{|{*K#uwhz@{hgMl#-vY0sm3spO4vlWMFUk_tgW1-+T)Q@z3>V2Md$<)Azg< z-=*ap%ew`(k$*qqzcvs+*Lf41cJul!3|{`HTw zKcBRG0`J%2jW7Pw+Mo2@>c2GC^0)ty>PthT+n@O-TE1!b{+xV1wYY^hEpFj&82%1A zO#001o{n2DKMO&@@;86(s|B)U@L&15_H&lxyEn8os|3cy4|34iF zhVQg~{^U<9eCO8`|5q6PJJ=A3=Tnv!$hCX-YpmU0Rz7j-^iTe03ZK41{c}I1@Ec$M zje=Qwh5hm8wEV5V|Av%X)>if57^G=VuhpYu~8&oqYJN zf2wxti>*H?7&?aMciFsu>Qg%JT5DtD^X7`@ZHt3aEpB7ud;V7~|M*X7PcGg3{-}-j z*S=0L_YD8v23bhA_kZMTrQ{7O|El-9@_$oGo?7{??bjdwTe@FhndtXN3jfaE)0MvS zFKhX4eyHW2GXLQh8vNA{8~(qj^4aN2e;f;${n`BNI|AwWYWTk^{2S&UeqeaM@52h8 zzCZQ-11rJY{dBYt2Qq;{+O13{C6v#|LaD#FSq?DefR1I ze?;4T>%Y_fjI2N3b3@BNZhop0EB{r4f9;o*5C4j_`@8>pgMUZqk7<&B|LHGSxy5fk zvGQN|3N7z^o31QJhwu1PR&M&kR~h_9uXlDao%9yV{(RZ%ZS)S0@Appgd44upEc5yC z{e$szk{|a^#<_m0{?Z$~==X-BNq;>0C;&hF;OHSu#dC{M>hxo^`-R{%o&Bvqs z`9Y)oEH22Bf}09)I_^BXh#+sKkgY}kSuV9F&tuS?dA?Xq=lZc|d~Z4LPZs0;GH1t# zT)UbzX7l_w{pS0;GoLO|=Y#E_%HASh9!YV#)qVQ7nS45!P6qvD`{-`B*Udm$5_#~n zH#mRV8}>)zXk3Q=LyA6a^}||x*OzC_)9Lc{(enJkbbiqvyO9(CduRFbet$V1y=Zq( zOaEkx1xVKH&t~JR-{SQ z!i0-aNmUKFjyVW6v#G$1z3Rrt#3u0_2|O zc}G|-2HESMo@xinqgT`i1;1&*4(B`{a9Ve|PY?O0jZ42brZbuG;`4)Uukmo!CRAe+ zqnl2a{m~?!V;ocP$8^5i*T3@i=yc;EzZlG}0NmV0$LINMigk%8&^kSge?A;fpZEHc z)86SQuNYLeIh~M%*2`^DcChqxoXH9~&PtWr1@@kw*4`cddnV~91eDv;-S-(2{ zOuST<(V-Nq8U(O=~E`d9h93%RIV8$!(U!E}B)nw*g-@)ye#Vpjn$M49KHYU2c$ zF%_s@@iiMQWNI&F%d1k=P5sDu)Ne(XF~$e^^X}z**dOE=W0rx%FZyTs;bb_)Pe?iY z*qKjf3!|Tn7nM7C{t7(eQaVV_v$XICIYuw)wkJLp%nVp`M5%_)Iy zMd}8Z0ki zeF^v2kD%fzw#aPQ$`;>n**`7#xtRTcMKZ$d@825t&lUj1930)gvELdV-s4Q|k7wuo z96!pm&sjA>`8IBf%{`@pin;JXNMyC^K=F3o29#6aD%QJN6 z-AGbn9>LJ@7@B9Z%a&mcnGS!8CDM8Vaf=qcYO6ip9n_lxsw8=??b677v>c5W+3rDq z#u-!`@*%O33N5X%1$$&Z9i85q_b>A2)A`e$YMJ}{C7q3?>COBZ78i+pV|qC`U6g=Y z06GTGkIl49^xwVZbf!48CZ|=z1QpdRyWfABKbkz9OrKB8?j*p$bUd9C!0g40ixJi{ z%&^{&taI^1IHHOedqjC_KD~&jaW`u^bzkVi>ZpBVw1nOpn2uWD&D5~7Eh0uIeFw>? z{NcGaLYg&4*ecLxQ=74xLu_!DbZ$NCHhcKLHvZr0YNyd5SsU7$+M(_q<>MUIMKsci zfwJM_n_U>NFc8AA`NA!DU~)4uBIs>+9-s&mbLXp|kK!kY!7*kmF8$(XCu^KSIysrN zT0#ZFtFej3=hGLX3vl|4t7X1;w8&jo0ywg1%ACrKJD6P2P$_@;2Nv9>BXt)(m&sYb z3%NHSiJhIB!4>vY{Y%_ObtV)a!GMXv8N+|5i`NQ5x)u!HB-1=-HahT#T#iewm2G}L z>eGRDb2R7nRlz28)?A(B+!OBS5^Bpb@$<09X^^$0gQ`QoDfRka#F&9yZq`XK4{#m% z#jo_r_AmjeSmyJ^4C5QY1xR^FWmAZb&M9mI?yHO0XlcXlXa^4PnfyM@2f0z1}dw;A1t~ zVg0$f^lX}2!cSg_q$NvsfZ{e5d4L_8zjZdD2FMIJ)`ACaJ`&HXQmU@gS?e^12l9M> zp#xkE?KlrTq>hpNJRP^qp@ykq7ddkCxIJi4Dqh0*df~p@xEzh)sBm*x4`A-LT7Ya5 z66Jo5MK<70PqB0h$SV7rCasVl$sCuoIfBYYUGRD>j|2cs<*0 z++8*{d%flP9KJgkL1)YJUOt~s=O!j<+ulW=MXP8pVX|1GK?{&HZogj(hbf?;ItK*6 zOAd_jnk1@4yRGb`Y-AW>4aD^~m8D{w8qAS2BxLP( zR7ljZdnTJZ>)3+pF0;+c$><}Od2hCyACi0Z%l-n>jIUUs!~W%Xi6fYCzRVBdjBJxU zSpOu?{`~CnBA+b9^A=7a4Jr2D^z81WKU4q@)t zNRnnytPdC6tI6^_hcR|zI<|c}f}+J1Ks`JelfV^yrk;**-OcBi2SsS-1x{QEHOXBN{F4;Z&jB3HL!) z=RWi~$S+XVv;)!w{=(zjTmE= zO~5qd9Z<9qsoQoEWHrTGfx;OOMmATctaVO0Tu#w;%DGEg*yd5w@ibB^QV=+fQV`c_ zwukwE24-WcqN>rwNzuSIW_R2)ZX3l_G4d|8Ef}J7=GwAJdX{aDCU7i4OhPdl>B(Ef zTbXQy^o7?lShk77vCedSb%p~vzc^gC+A^KSORYm_n!;S&Ua7prDR!$d=3!wd5UIoO zTpDg3+Rwm4aA*(mIl7%M4{7sEa3m27H-f>k^e|X0avXhj2~)k-AAIBzI&f4rR|97Q z$AT|rLms(7`ffa1OlDZfOIa9Rf#mUKcZ7w!aGrCLKz$qFD>;A3S|>QigyX*4 zTGyqlNsXZcbt7W!s!DRs<;G3)@Q8{_&(tDMtAfBK zMWj%hs_HJ5^T9>c0Xz?ppnhL-7^P>kdIa&hUVPN}b4M3+3Emj7USleVtJOT4?&LXUZG z;SL%hEpXtB5x4@ZU**W8MXGM~XNw+l1Lry8t6u-bXwidJcs9vTdu*)gK+;z#13MGH0MfUt?qhdEj@HElhOWv3^z_8s*OKX7^Hj!H(x%+u zp*7`xa(DA?(N(Mhrh2(kb>DuY=>!XBvA2*zK?s@aPX!AUJ5ZIOiqW`(pt=b>*PPCQ zt6t$)&Ntl5Y8n=0@WfvcAwfOpGsN`oc~Hc95|joL?ac?59+TmAB5blMSaFiVJidkVxA7=1)kj>OFY&FAEM#Z;Krns~0nH#;&b z*EwfHoN#3d#%jn4?1jIZ9y9JcI-~$;YoHGC7@z_dq%uw?2j|)Yb-{r~$uWpfEI_|~ zv1Xlei}ZY_EgoPMz$=x{IXy|!9h^Jprb91{O+;fW?ZBESD*6M)yqBN#2UlcIe_DW! zP#a=1#f+}W4=u<#uC!7KrW?4W(_r2UY z_I!~-6<^HhRQ}>(Dog?u^QH$G#c#(8u;!?@ALTeLLBwZDY)sKD#F?Dn%1Q-f27F?D zYHXpY8_*Qqef&5`^E9{ca0~_aA($q*V3_YOC{#fO1C` z2j`0Xnywn=tExEF19>IY+4b8oL3Io2^QZk6ir zQi1c89BCNV^h{Qd)ui+q$FSA)VM}q!=&)Mz`atDStQ*&O3cYA~6^EhQEEzAiMlh-z z%nKZjI0iX|n!_Nm5yf0nv+}=0hI)xm0`=u6XAb zE)L#-HvslfMA{-7_1sHioA%M+Un0k z6hqoikce`*w-i+5uty`xa3<%+d9arLRB1e);M95{Obr^Ugi^( zeOR(OC)+rx#Wbqh-X#O*M=-qt$9xF(gLzLOpK42!k3~41CD< z!p9Fb;RLvQxy$k;0oS&tJ&>!O=+XdQ?E~&87>)fZ|G?$@wZ6 z;5nEg_-6&o4!D~)$P5dpTgaPT`aQacl(&!I5pS|yey2*uKnz9d z>E()p^BfKalqW~cGM8a{j?;u$DJFbRoaX}`-H*&Qe5~eA56K{tInRkJqcfWUW$@^373%Z}NA$o4+CzoeKKz}r1@rmSI@d+JxZtRwd ztZN4Swo3x1xVVU;Y~G&j+?9BHNO{pA@_9=nQ>sJcACXI2Dh9dp_CAbQoO{zVZgBWd zXFi%jG+$XavmHp%{t2^&Or{JdnJh&PODvtJbMAJZ-itY&BJf0{$fEt^N#}{%wHSIA zfNvJ+U|Wf@#2|e3SQcB|d0iy~avj$y`2OxyRJeyeU>P8}p45%lvDyZbLjU>2)hXYp^ z9bt^VQN>Tj4Qi;7P9drD2_KcGk>fGO^b}gG-==PiFXz0q)Y!y^PhuYRPe+$XqtP9m zUG#Ok=Z-)aC4?{|tC?PUITx?`uu$wcyry)<)$yZ?Fv;M2_p=s6Kf+lN`>dn$A{jb? z#;!vkU;*qMLWbz^hMiPHIKCJO+q*z%hMaReFO)YTsw=wJN2f3xW&3bnNglLV z7Ju*7Vzw1r^z->waL`);d+NSdHG#%R@4?haqn8Vv=44=$E7@?9is6tRb79_;z>!+yM zABP(!5PBKFS4*MY(o%utBFw_JorDg{VkN;1d{3AlDDe(O?`B+>JnI zkNXqE8{(=wF^kc$A2^$Wm>c=*WtP9E_4l(GA$(JD=cltMXB;1Uq zHmw)st6C^A`VdA=C4U1io6K(VfAvz2YOY>pvud)33cg$~6_&8PM~7 zPoqR`hz)$xd6gN(FZQqu836j;yBaC(l_aicVI@2iBvWw~+2%f!mGcYU=K|9pe-3*9 z7LeNoBGcq{0aYk2LVlI#b|j`*BKk}jjmM}@bHnMjEJ`>Dy1;+cm;n3j9-QOmX=gdN zAb)U&?Bz4zRYZqs_lf8`r0t4GLh@dgcm<&;L-I?!1LRyjOHyd0FXLh%V( z=Pst#cq|iP(qMUSvg^_DC@5C2heo*u^*&S3nC$c2J`y@;9ubur*nlDO zP9dH=TuJmk4p$l)+kQJyEqpIEQZUovVX&EQiC#Dy$`+0o9qKJ6 z967ZCC?;Fh5f0tukc2A|HjBnGF5uXtb5BG|-Nk>0x9qO)?scSg99ndwsLDYDs?0~a zydebXtd3I!NEj+C88p;kz}UL{$Rk>T83gPa6T7c8adO17wiSzrOvtxw4VQWXQf=Ra zfWwYbK{u|afV7Kj2doAs$@1Q4d2=)zUgE}=kWwe{$#7^5tT87kZnJ`_2$y05`6@a~ zHopUTz-2qfEj=ZN+vC%(fEteM5-enCEUvfI&MJ}Gi)^8>pPs^m(bh^-t^;4S21y9- zW0MRS`@0rd>)1y0GZ?*?yviogK{epK0*v_#*le*UcYXJ{MRe|-L;chLtKy(63o5$i zQr4qqGo7r8nPT9(v|JEwTQ6s`8`63iLhpp#?q6K=rEa@(KHQj1pR4$-fX@`A)G%|i z0!mVoFap{kJ+JM+rXrMkF11iArxarH7%}N(IgMqg-V_cV(`F*}Pz8Z65IfR#;24tk zV^gEhSF7G|{pW0x*Jh8W{9iB0MbxRg+Nb4lf}a*>uz^QCp*PxV3H(we#pEF0@6Em= z1TQ3Mqj~%seS&yITO*A6_8cArUe?AmO8F4{#=Lk~`0iVBE4jdidHH&MNhZ~mc=c*bPBRSsPKzURP#ksrnBLi zl1{;!chR3C4t94r{osc_d~<6PF;`Xfika97jH#kDYbhn%L_!j{X|A83h+iOhp6B_@ zBXHFv?7yBx$e(qZ0Md3DU5$u|{IosmU1$^0Hb=U0I}GCm%|%^u7G^t2C-~9OYZY$F zgh}5ZWC3tIHL_A}np%-a?QDCrkmOyDCOBxAocZKZ2|}k#ckYUvT&U0NdayabX1de8 zw{OcE&~A9OFqq(2Jr_o!(GqRT+nUGX#+DqExWS}Q64H0nLCoG6a=W!V4@lU1SxcPb zVDbTC{YKB!KgEvsXZ;gIaxcNdxB)FmsBR#J)TjFbd%(Pfje!}l3^S#kW#YQL1rs_@ z&wNGM0e388r>)mgudh`(oQkd5ZEPhb6VSSs&ymJ{OVdny+M0fd)TY(+&93c3$8GT8 zIK}4WmVWQ@q91%vT}XHneW#@>N$G;sPf_v^uHjR78-t3OXgf5kjj!n6QU|@4qOx1> zAPb(H@g8xEJn+rcJ5t4QTe`tJqBwD=rBWd(ilunseOZCuDKHT-B}J-Y6?ALAErx+rY>mF}_H>-ag#) zIqXFY!WT+L1OH3Do68dnN@H;k$_DbT;V*2A>Inm1i&riAWc4WeLIbIF0J9Ty4c{8p zs$-=POZ5(En~lww8!U8xE=md;wFJ5?S>DCYY9_B9%q0C?iIa;e=vEt;tCaZ!W!Yn9 zJuabR!t0W$UgGfPP_hBbx@Zm6+^pNLlPIa~wn@5pAQ>FGfw+0V{LCFm{}Yr}&C8A* zy?IS6#@jZ@T4IW0UMliT0jL^^D36!6h72jVn1j)u33>mc2-FYf^C=ImqAXx#ALQPU z(M#Mnc%f>?pV(t(!(Gh$dF|1A8C8}M7jC9WX2@5?wquCkfW#T~;Y4y=+V0L^oJa?- z2pKw`5RjrApXmH4`LiuJE#yF*mx1r&ffui^;6l)3l8;pOWhUFjvWf5vXUy5+JCFK#=kd>U|X z8C|MSJHos|-yv_$AoWJ#Eww$q=2p2|M#&aYK_J?>!kLx<>1jPg`h; zD{CQJ{yvjiSEq`0VGssQhu7f+WyA@b!i9FhVI2@uP#L)Vq6^%s3W@>sS z7kowWv_sqy$c{y~-hw^pqlAoMsze2R@Gxa~TDX3{QX#+9o>P-~6%;!z$C~v5N~A0C z!cV#ncS?6Qnqab?W{B5>){N`mr~8__PG=+S9*k=}6181hQ*Bml?nn~2wt~{RTSG93 z@c~D8+kJhURTK0Qy!vZX*Ygv+0pJGCUq$1|=l8mGjP3SlXpLjw_))YSeSFUc z4(x{mT-lRxqiOtznl3(mI-0(5;Yg0A@gr)w`1qbT&G|g>ZG+GGt7ts={ArkOXc0#9 z_j+ttezLX}MW_;#;T>yD6k)ggO5y-3Hq0k|?MlXu3G)Lvj;W7ptG*$4c5!y?7C7?@ zU^yS0Urr=SDxXtB-|8ZBs-)1w+16-q_1^aGl{?@=B1MqeZs5x{)d#>wjs#r(~h1Ri57?b>Y|U(*Y&5pg#_aCuN%gP z^AR%DqRHdOuE#RYxXnW0b3iQl%yi6C(gpn|&APL9*R#@Zm!HD{WKATvm|r1yYoGMQ zhAqKB{H<9Lgvz^qM>@S%Sh^L12sTxF?e{+&@q4d1xLn_I|} z6m_t4Rn##07k?{k7KWsccL@+ZRRAcIT^9@AG5uT?JF_OC2G}nwrC9(6q z7oBILsFw{Sw|3q+aWKlmWTZ)`hePBd8m~ZU+UgkcT30+yEphsV;lXK?ZR=`0 zJUFm2WsrFN?92>alsP}HZMery#|YZSt;jzd&7ft0f+2J z0~=i%OsQRM@9}9MvT3zyyW{IAW0V!!%KF|GyL7ge`+9)VfCGIr6yFlpum#yye{!FeG+{qdAnDP&&H65MV=GZ%h zyBFEEo^Q%}k~g2UC&dFxWjfedPs}gssqprGy!df~!^gR?w2=82qwSAPzeza0a)Mk3 zvOPiK)^-hs@}&6syi75^3f5Z(k@e5SmhmuLx5nI%voY_tRI|V_yBz-VdWcgtNNTT- zWV^-EI>2iw7o*DyTyCD?!G$iPCv*k-b4&52>aGlOY?l{jZ#+7|?LT|Pwf$l=+>$f{?IUn}!Jl$jh>OSo`DeEEV9MBMc@z&kKcL;I zx1>!n=v^!ZSh&yf3SZXaJtK_{u|~7ZBpG{P%1GS>`K&3I{zYQK^hjSMsIAs;uY8#> z7?0Q~(G#v@AEcDp0`r7y=#Y?SY|JN*sh z=EVhX+?~b$suVYOa)#^7b)IKJ(r2!q)I4x`Zf>!-q6Ua~5w*POWA><$$AK3y9(~%$ z>psA*ih|`atUdYM@-3)4S{Ie9H|d6!GWnrKjK7Y@Eg8L3gm0KR81G3U>XIOhY;(D8 zWJa>a8uSwGpW;DIJau;)396a5X@ctwaDsq=8@PU0^^JKs_>PTGDnZ#~GBzA*z}1YC zFK9sb@@F{|_@S7XaB(W;-IXAfi1`i>B9RgK0Xpefu__Laae~4(lh|XNtJFgTXlsUs z@EB7hsAkYNu0Iirh8JAim2G8N^dd|PD~crD+}N3Fup^-1F`iB^D{Lj`){NOoAQDU# zuP$T@K^|>iL5m@f|U~#lgYN@#>y&H16r%CsGFdIk!@vT zxZxzpUd+=JlX0z9ao^nq4?DLCR#BMwSshhY z)u|Yb-{Ue0+^(b9>HgXBLPegA+QT*FrNtGCR4mo&*KvxL*Wy;n6vexeZA7>xh#Sl) zQY{7*W1Wojtm=nOo=QoC)_RMXJV7A)YOrj5y@V-jru^qsv(jjAe=(UJ>^rzkoNOW@ zU^M)Cc8*stn|ocJ+#(XgTO_nc%{pLT?eVF0=T@Trm93U4Rh~}}rlXe$fOM617meo4 z9N~sciygOIst13@6nhwRP8`y@_QprOyldJXnPokl_>hjKfccuF&R%g!E z(PH%&7y@8%=Lp<>eU6uE@s8qHe0GVer#h)Ex@kI8>8WRYQk{mwVL;;LTppa|MlNp> z=|Xl|X|_O~8)Vcy0XHKhjW7<5kIKh1>Fm}X__gAF4L(agQB@o^hG#V9Vptb9hNCPy z&o*r{tLkPmX8w`{2`w2r13V;dxo{$Y$|bh|^aCT|>#FKHQ_qo3j0iIG zebHlO`$mll^e=be1NW=gFzDF52MKpEgHv&iv+(2nn;&@8J?=f&zpwth1Y)!E@UZ*v zLGO6~Hdo4rAAmXcdfgdvWUDd|QTth&Nrw7z9d8As3Z&)U5~_7? z1kJD9x5nnh^z;%wOT5sjHvsO!OD)-Lvaq0BGuuXbHz-jbWwLbMDTY5CiXVcw6pt@u z;dQt+7Yz5m05ZL)ACqTyaVSUYRo@Vt8hDGL?IPob_(8W3){KFbhf>)|P;t!=PgdVl z++wnTGEAx^%P;PB)*8U3oLtUiJ9LjEmS8m7i&3qryDy#Vik_LOnJ7Vcoj6?a3+%W?%Yd*p zi-B;^D_|SjF%kENFpcg_aeeMO3YOd5MWnDSs%tx#>0v{gk4%$X>$C4J5}8N>yb1zk z_VPKg2C0qWS>BU0T1+tG?iN+C0^W5H`L}8vh6@QY?`4y^#Vft46WGF>Uq`Mtm00iP z+pJ>E9kOP@-&yallBsulhus6?;x_(Uo`3jpY49FDPWF%nt`qBSA`^a;OLS6|K!hE_5`a1IHvJzczx^m^J7 z6+QoDce+5rD)6wLF24MnW}8Juw;<8p%OetZx?b*h`N}TmplK2>k3fcTia>g#9#b;C zJdV(-fdpI2@uCM+u!kHzJd`*ci<1(p5@6m9?38pYNDS; zNA|5)!|UfH+(A2ws|lRFnkx_kxvt0D%|+BUdWX{m|DVYqrQ31uhU~cZju{7$r;j6~ zS%g^}EvAD;lldxcs!zybS-#^qum*QXtD zLnyGS;9_utnY@Pl@}nXH;4G5&Nzq!RT6ODa|MtPddk>EaeH!M4srp$<-0Cn-ERinH zG|&yK9ENAsuZANC_NHalw3Tz*JKpTIk?{~3K*413^x&2k-e5eY6>V3^z|yHhk#zTH~{?h0K?37d)U^EFIcXsPOFFU!nE%rh*UqG_V`umRFgu{ z?G&AKiCgcTY_|3Pvo`)UGA|f3pN{4iqQg(4@K%2& z*;LD;Ix>($sOcd*`oBLJAwVua6nFpmp7j0Jl zU}0ya4_guuVR~B`p?!AGI;EY^&zg)ki6>xQzU_ywrtG>@;W*-5j>5AR`Pn!qxquiE zN?XCj1I@^7e(=&zcs1byq3rns?6Weg_DIvjmq52+r{F328lq=grxL(i;1QLSMOgof*#57W5 znt+)t=Z9&Z@wsG}QuZg42S1fugWgiNa&R$3XDFqFy8t8C9yK6}X(r_s5^G?ncE4^m zN6uNF436JQlLO87Gck%%yW&;*=dkHYB4$h;1Un0v49Rj~Cft;38gkTn2?sgeF=X&x zcf=sc8Xj|xX2ehKV1m`h8$28@hmO2TnWSn>+s~NeR|P9}Wt^fzb{9XZN5^cO2SJyu zv#3FBfGK>Y7meUc zmj0#e@48SYH>$e+%J%?jqR>lSe^;^WDV9dVb`8A;C5Kzp!5r7rEVeZ9 zldvA$%MItX4L}Zb#UoMG4%Bbi)R~n8F(rfk{FFjS!z^63I~qwm?dh3a3fI+ieg#!> zp3@GOPdKxpNu*{J{qk0@0Ura(H}n+}Lbrg(-Xvir1;X0T%LUs;ROv^>yw{Gy#Ig4k zMR)LpL0GiDF%Kr>v7IDV65q7MH(Pipq$asE29OiyCop9&6r31Mrcj9Cn}9`*_eB=? z0Y}5e#U-b719_=t8&CrJF3R;`7qUK=T&zwDMc=|wQ$FKTk$<9MpN`xc$w4J22IERb z02tOkPyGSOk>I87p#YTzE1{V=H_fmLgpULn9XXy{Jr9Wsey)=m`|TC@tiMDFMO5J z=>`+taScMq-{do^7$V-C4hyoh01#lb5|At7<#s`p?M^N)ZlJ$Uk!(!5?Y2`7(G-S; zH6&o_Z}lHH<-L>P9Anq5-F*ojLJ>apkBj6U+!n1gY0&lEJwxA`o$E@952HHnsa-CQUOqr~V zE#sb};zh-dcylVHkw~zeLh#@g%n)uOJG~Db=|b&AegQ`kyirr}rbV81S)l}gCAQq) zA50}Fe>{h8o@^Mw?;>A7k6%pHLu3Al9Wbu2BrAl4@cwIjW&AdptSo$Ufe^m&&7o5z@Q1jLqUzJ=8CI54RA;tm5wMC&Hk z&sE_I);k+flen$~I|dHbXME3X!k65Z2ycB3XEB%r4tSjZOefQ3?{Oo;WfaKQs~&cS z!PDjh`ER5#m>iFeZ|#W{gg+1*Y`$6jkm1o1WGlcIh7;diirY5*B&SJw*GoU`(m$Zs zDE{T`n+N)-(RAM!b`3L(5B%_U3^Gq8pnC?%meF*C#(iVcox7vx+xGEP+8%WzSVY_1 zkwTyvbz}wE7&1b-Pn{*EKt0pJ=gi^j4EXeqP@pjTHH4fIC$iW3a8g9C0LM+ZB$y!; z=g|Wfi)}$dEfMk$nhkT1j7Fjy2l3VYg;-ZQPb^nEG85%iBZzFpLvC7n3aG4j+zg>9 zRBH7H_SPWC2rAlc@8|^1*gS^>va3l{8H-~2U&WaUE`sZN&%^8aO|L(pe;c99{mCFd zsi_OmtgA6XjTgoAGE_}1@+~8BnHjiAGnMZr;0Drk%oln1+zd8#05M~tJ(8JIO(!!w zI=WYw-abtSUnt?!uoC`smE?g#Ob-HFBlilbx9f@&XEgRxAe+Q8ulAxSa&oY;FjS7Z8ROQ|9&x!_4BPm2<40|Emy z%6?S^PQn*Jg>)~E~Jf&bR<0;5w!Oq04B!2_E9XJ zio2meuhUTd&6Z`;C7@ReRH&BRaI6CHeP;wJjj+^jNU_lXl((WKP8~arH;yUU{a60* zUyAF@4umamUmFdVaduJj#c9+dSc!j1j;htpMR7L>XG( z%XD`u@HOw`uvNWsu6nJ9?$~CHDb{E`_eEu@(~hes$u(uH;QE9pHJPliL$DsOt7-_B zuTjdcM6Gzw_mWy9j@}FKco3pw79XSQGG#;ong}vpjM-)tjn(mO?MZnD(9_zm~LW9ZX4ryO6B{Os~+1%Bo4L(fZ-RiCp{wL@W?Edhc}Vd zUE~JuS=@lz@su3fqsq&k`VzE4^}2(=V8nHdT$%tU@pWQg0YcG?9!86oH87MR1E)^# z9Xgdf6X%~;GfTM=#2kdqw)0cHhXgM3!9(P8Q~e~lW`iXD#rw>u=H?DGH2L93ZPxVW zYJ~y|Z#4J(;nlW!m5ZyY^em`62YNj9k4!OsOzy#;{{2x(}r2-|@5XgyhiV7`FK$_2Ra5CHV{Fb+m!zLo8f*jXa&b%=~M-;DE)RDtOt zi@)d#t!@$NL@9({S&b%4K`6lRyW(-P{04qJopBU$VcG-*Mg(OnsVO?xT`YzBtrol| z-~`lBWl{?>yfZk!qmc2y3(vM0(oMKecozCVVhr?FH&{`>Zr$r&<#X6cXq*?w@Zo0u z4DW*bmto*^D5U}hnVq!Jgn}u)?7hOb$Hy5&H7xolA_IwP;c-yc0a}l?IvrY2)pzIR ztBOld^DOy6Mwnqw)_!}%Dwl$qFYJghH^f@S{QiS3K z$^+I~^f97b*3znkkj%6l3O)BL(K0-}GmD`xR||wwA-CX~OS~#NhlxfET%k5zpx)&9 zk}2cpeP~#DJ-ZGX<+?F@3)k9COo13HBJ8h$uf^Md9L(p4w&zpS-VWDBw@;@PrO<%R z^8ubAp1UiURY1EAFK0p-o{F3Xl>}T4*@oSP`}Lv8KOQoRP%+p*(!qXiAiE-kBULc? z({RWdpjB#%fW@tab^|4wMpCs} z=%v<)m~(qRWrVjrhK4z?2rO=|@dqQg1NY69EBH@ZrL}mPGsCRi!o+EWi53EpBf=eE!_L5OlXUuy6JPN!YYg|oW+$|E8Jbvr}qH(z>EdMpb)1qh+ z@{GqoZn!1WL#d*1wk1t1Y9VlWYb8uW%te6UAzYQ<@!e9F;x#Z-jWF3|n#jyof2mM3 zzgxV->wkWdvaN+1u~=hF@@&SE zv#4YtB1MPBTiYAL?&JwJ^}sYEc{_w7wYIOA832RV;i9d=a8DEjed~UISIYH@{;5i9~CX_eCN+;CmM$O5~?> zOSBnJE~)}LZxpJ~RD#mC!(Ira?qCU-bn@El?(NbugOak~iUMaAm@& zN6fbwFW|HWh$SnPsv{vk_@PjQB-}5HrwbE$f}@&}{gE}}@2NSGd@uP6)9=^RNBdQ} zU)qOjVJh9PNng;G?V4VO6=cG->(TH@Y;UIZy|MEy>tECU(4BFa3RRkkmAy}D%T5X5 zpdLa9BnXt`oKvH^9*BoSnZ2Fj6Z7D4Z~jOfMT8BNeVB z1=JHsRTJvZDJ8+Ib~U~ERC}KULyx?wOjgvyBB8!lrb)3K#RNpWV0e3_wu^u(UD#yy zYUVeuYOeG)nSV0ac|WV3KBaJE5COQ}6mQa5is*PAI+alN-r@_SgZpBv6sV7pl#pe) zntK9Dkr6!br;Ad4ql^27ZYv*$PlY=^4$Crm=z*@n8DFf{j5pXulv>z3qNFt2 zE!mG5qm+L{HcP6z7TW9dT&T0S%9YP?D;^njnb=!FwV!3ry>X zz9R~X&n_pgl@bKd?7~*6rj?FR2~5R{(01@DOl=4%KG!#z;MwH?u8q!(sMNlQGaFm= z1I>kbnr#82*tl>8v%`A7E9g493lC8k7qAZ>=M((n7mn$^xM#4l@xwX(@dL-NA8zA= zz(z$!<)Yi=q8m~K-T>y~>7DLlG~1ztL5&kXk8!gUQH@XVgd+;Y+g$5_Z7ip9Wwl2L z@9e7uZ!wHJsKB1cv`ULACF1AMsXs#6z*S$0^d>pNR1V0D=@Z`4BheC-eH8+XSILa4 zOuT{gav2NR^%w*92)s$b#~6Cz7vf9fmlJW~LUcn;@rzn`%@<7>e1u__@rMV82c5P& z#3LcpOnm_>FkfsRj0Q90?|DGhkx#yjiTfrK7WWFrR_c(x*Z=6%%>`~d=i^iVnq<^` zoP}FwKSq`z^X9Xn+3OxrkFjr`_3?_P)`l!N=JRX_BderK5_6KV?nVD#jGR!gOTb`e zg{R#Uu)_tF)_!&PO18z|E(N$vq&1i%1Pl#b2V)#Gn$+MCFXZu5uVcCp+K4dQZ6=GM zAjifpS2?f?I0(50iD^X<2_h%k)n@>Zqx$lEig*C~AD5&S;21c?z;U94V|A&5h%@LPnTa9f67EU};-GDf5Ki1@R7_3fxUm0_#&vLF zsr!*{<7rB+PrYjp^`_BZq6wM1sJ!%eP}s2MIpM^MeB@S5cD<|D<0CwpWyOOkaY{3x zP=btCDHSRrA%q5wF5tf1(Hw(3@*RBCc!t7Y2QQyqogttMEFx>kZ};sJx(f&cZW>c9 zSD6h3K5(RqJy%%b-i037lvMhIIu^nVsUV&kcLdux>4<5;9*Fxb3SooBc^fy7=Ws4k z;KEIv`c)WKCbIFMKVam{9iAa^sEh?MukQA8Dp4%MLN*gZgNhoP6DN~#eQbef}WsREHp^do6`Yak+CS{;5XS69k(=( z>}3eOgYfkZlRoPL3+nBihe1T?Q2%ERr_6wYKX!-aEI7RN?3re4 z--o}|{*g4uIG_z~YkPj5Exx=$SK!aUGq?R7GQlt>=Jv5F-=&UeiqN22q<#BEKDdN_ z=Tw`h%x2Mdzx4!Wpv)}tu0k=q;3e_g&$P$oQbz{(vrRa^Zfd5~f;U_Zv|4<1_g}-> z;$pdVcB84Kdfx+8c|j1;m@zV|^#3 z6Zfh*5mK!o*HPu>&^?$9X{WW9;~BTepoq#uxbsN`v^?Y4WODE(sR zQX5dlTkwu7mE;Q=#Ou8h!aB(JA$+K(K}u_=r9-D7)+hNXp10K#M0+aN0kAz7N;6)~ zkE?Fui+T$2PAj5uD=K1TOvk7BB(AuHiZ}X;oNgy>F40$Z8DY@uC?$#g84ik?o*Rqs zI%sFV12Bnp7pp%gBy!ozX+#(EPa<>?8E>VI`g)6uT9KG1VGX!tb8K9&;P)5QVPIo8 z6@_>`hCQUI?&7ZGK1jbm9x*}snJ#}1(n40)0bb%co=QlEvx0&ZkyV4Z8QL}k&@R%T z5aic}H^{W}aE)Z|s#1gIfNzC{Bu$qvdIfzF>&BXNU6kiIX&^DSYiRNhCYvvUCS#%i z%8-`o40$q9X_0rg7ioZ`hLj9tsAy0QtKx_thlI%mKiHWTnwLe*1o5|Ahy>%Lwl(jE z8-%=1X`C)j9>N;ybJD%qDA!=gPu}AcOlFWgL|4DBmWj66e-UV#8eQb_`eg$qL$W!R z%1SJ}@|q!(8P|(&CoeyJbjVALVlx+ZjXl5;K%@YAmk6|%M`Jx^wY@RT9Bp@bHRiia zS#|(0c!CgTXU_@KyM;bg%Xd`QKWG=g@5PW|@5mciteVWkn&`s&%sUfl}=)b%! zD1IzBx~P&!R|)`VBg23PC=EQl$tEqCTp|BKx7)-lM^l34jvp7;LTTRC-q{xUPb|fVr`_MO5oGm{m%F#wJ`kH7STGQg7p}K0c_} zI%Gz5ucf=<#^z1z;d;PDD+szOx5^IBDPemKEEOq%Nc|9FwgY9J^rWK&hjJHH_<^Sc zq-!?lTeclyDpDwitu-1UjO1ObX%g@11x*H!!W|LLtc0_=aXi#@IX}a5aW>d0ItoN* zG@0PN$a=UYEg)R^!6_b&tx33JT&f!Nd1SX#!d#L{y^-O~7Yn zz)e$ju%@|ImNr*kxzsZJ;iPQTcA2_He$lP6I_NT+ zP-H(uDnZuhKEADQK+e4>ls-Vp)2K3do%rnBJ--mC5DjM+!ztr%P3qQ6`7F*J3%+O! zM`PIIrhpV7Z-EO8IxF)>&3t+Tqz2FggkmQJ*jDBYNm~|w3^h^7y{3m!iB}Jim6$hS7ad(YAbD$mv zdmoHY4NW8=YzZ?j zYB-2hM@v}w>w@AbSct=g+TDe>J&>8~ik|H3;VK|bosdjB5pECc9=+H|c;WYc{|TO_ zRJo*8LrqV0NJF_~cqPT2?s{4(o)Num{|IUu_R|BHg;@EIo6%8I;DFJJ+xMo^r~B-l z0ON|A<#jQC{KCguLbKf7Jze{do^W63+MIrMpXq;64?*d}9-9jgidx;%Ibs zj`xzFjxN;c;t>QXBXn8#FXA$@BpB%@AXXIv{GW6PpInZM6`#nRz9nXvHfKswCHNB6 zK*D$vH}oaPJ;*lsv8E64#|UTW(@9a%0#h~5f2RC?qwabK1!;!vI>BU;*M|YZ8^%24k!`8?N=-7L> zQaT@a(A2rMjQ-SJ6TB4rWo^*#xe{2kW{5ADwFjL4tvz#F-*i zf_xWxg;+VjN_Rzy(E)9Y0qrYV;=3|^o#i~xYpiaIF&lnOR&kWvkC0>ylq_P=^Adml z!cIvMawsAP2t}E~e?>5rC5`U}AMyj3Q@pJ!3@?3(*ELV`7kGum*%zxlU?FT zsNuGBZ9y!xuz!9>E1KA56A?_gjcAO;b5o_=uOUN{;{fqa%E{t#e#w_q(cg79H?f>x zKEPPS?&Y|~U5QY$xwN?;kY+#?|8UT5j7~)@xQjiKd11#nN*L9FaxN!GlkM;+-~sM! z$}+2z)4H5K-QA}qr9lxW5S5SOkT|S^E%R8eX>2~6>?RU`;_hKjwRtQ(DfPg2|4#*d-0S}Nm(QLKq66I){N!la)On+ z0}F^Z#dM_AZNPMoL0p%drWlTLbi5xfp*Kd)-C$iu|FjD*cJPv){Jc{6$8MAE7=(<2;SXM{pa;l#?WBs2bfa)yuS%nx zV&uS!J~-|vN{o4|z!~#2LD^!)dy!Bn^gXk-yC>mGgscXukB~dqhx131r+B^3?sFSV z^tzUng&gJEWe}fT?IfRCn1TPy061O-;pwAsukSHFNgj&wH#uD9#p%L|BIB?`?Ht1) z$(^NCP6b@6EXE#*+q-}h8|*x)M)db!0(IQ&97ERbRD?BAtA*iFRBP zacICJc0PWISRpxdcv%V91Q+_X=I2ZAJ~^4l1*s*&5~qa}z3%Rq#G}}_uFs=W360vc zz=lI7CVglRX~M&K(%Yro;o-a`r%S%@UVr76zztf)W`aEZ;9aT7ha$s4^1*EZNwJew z<>IOxCxyyNb3>9ypi@ATAdVzKfM-JS0ycu^MgAV*GNs5vo39G;?#%B`@yhMg-(|0a z;iZJ@V7O`n7)XfL?(_)H! zrD{aNmetf1{VC=&4Lkn@Qm zIb|zJxSC}_)kPGk3pd<~-qCz8y(xrBxo_9423Wl?D%6}Mx)NZLVmP5+{l1-I$FK^>N$9Dtz4ETh6i&4{={v}8`1`0#F`@@ z?P1p7y)R@z5onq_nM9F8QeGf5s){<=Vl^b(BElCMdA6xRtWuKZDiMLgFCBV|ylvzi zJxS1(s)H;@^hj?o!KV2Lg-&c)=UY(*1i5~1;UO2l8ml(|qj^XrZjpiUDzf47` z2M)8N@tkQzRyFp;QcR`0rz>`W47U7TF?9nIa+(3iv6=y-d$bjMJxr#7&7U9v%m_DU zkp||4Y)2A?>8A_n?`L>T?|3R?tDR$6v)QX>0(jSWWKlSZWO()9kS}&Xs^V(R35)@! zFL@9#D+(ZmPy!fTvkVK%aM))T-)s<#%_zua-#w=g>C{2G=Ws;-J2tXdVWpCf-2cx64vAto-ugFbY@g`LuyG)5MxFX9X;(6ZA31$KF< zOVA|r)6?J17$Lytyg@qW4ofvWL4ZxhU*Z9+Evm9~pGU+Q!YU7N7c5^2-xV{H>8*Ev zORIx@IHX`X!D5H+R?@LEME}sqD-J_;j{vJrBqUng3ZYW;8*WAfuD$9Z zQ}QDY&4__>o&K{CB4kOfZS{~g&t{h`CM~zvV~p1h){|S{tiw5V4eDG(5>j_Eu$u{1 z41rg2?w{Eea<@BHt|LvFiR3BMN%eQ09T*E?%9#|)dsQkvd8t{hm9->Ciz30kTPV!V zW<}h{jT_S!cSbPu=Y#VrRolv#nz;Hg873wa-KR1K7d^Zeh`ijv}cIvL@il z*-<_N&m_*_iVBUbQll=GFafG@$tk zuqN)HN1YxIw_B3Q4{s*lN=RA=AQ)F*39b;i2Axn;fuY^DTsX()69gRy+j(dem{nig z{u&N{*Itb3O()|kBxr#4iEwFu9m-*C@PPdo??do0veEd;KPX&5(H&sn%Tf0)u^)}b zd}~5?2@nSOaNaH+_u~FX`kAgn3Go|RW^HP?T9aN!sc2uQdOwbO84S?2^ptBgI{GAGxeJrSJttp15?8(6krV2DsnDa&vRDR zDfH!TNAd+(!=;N6=+d*($>*rmq^@2M0valfLLJ{qbP7X3p;PJK+_RYl=Z*6hUYL0} z@xfFMoR+*+4w=Hx6%Nm!Nu*cAZKvKG{{s&1;YbJh0NS0A`4fDbG;M?=9iQJ!(Pm9? zsB#YEyZH5GN;+z#dlZFzUciumMQ@nS!5VQcIbWN(;<36GXvYo@{Ja+k0tcqA*uve> zxsU_qCwQ*$aOT8bQ8DbBF4W>%(z2JBI{wCV2IOuwxD>68h&Ol%gCr`Bu6z|;IKI2F zo5C0G(rd@Oqjp*sta^HA#IHW z^y1l}9M`zK@v;|l-^An=H|uQiLG?+$u*p)P*GW=npQJDS;A4705~oJO&<`>usS;UV zuQ&l-ryj2pKV{MlChsAWf)jS4`+;do=on%+!&fZy4TP097ns{B#?4<@FWYrV+L2a_ zDg5{<^26YI1$yIy?{S~vCh$D$9!T7DaG&B%Q4E}!MAqex7R;>3TNwB7SzWlL!DRme z4MykkkRk_<#l9y4lR3(8d+2Q5zqrd)Sjp#w(btvO<2Gb~ZtL-++iMxuBjmNtr}?AF zbcVGDtMwG8(zqC0y(lwDh>KfqgCfqI9grtEz;^h%cqm@%?PyI$F9h0}qfw(`I| z^bY)C205bY4+HZH!&o!*Wm-*J?PYD)-)c2d+(;-(!QnNvnKW}?G1CD=>THlMCiFC zfNbW;${I|#y?7lD9l|zuqmPJ_j6M1$<^Y~mP%}729bG+6K8cGIOUNoF6l-1J5Vk!Q zITJTmd??YWH6smOR}zfWFqKBqsF+w>eZo61!~3UQKF=df7Va{?cgMXiG=R8V`WqM3 zVK859&{U};+Yut&7@Z+o$^Jr;ppBgm(9K>;VD98E3_zcC(2-#`$6Gn@UoP>zeW9OX z#;}bX5(Up@;=1ts(5EBE9VAXF)SPGr%5wrsj>^Ca9P$uYxL(k#it%KYoSQpkalk8s zmEo()8R7a&l4e%5y|ut=-?Kw6;AKo@)Ky?5u9KH8kzkhhPyJ=F1Q)_u;n03sJ!bI@ z^A1q$YRDM6sN{S29Jz^V0cq^Wj#bt3l&16#?cFa*0t=7Y7Vfv5q8NX(1NlVlNA$ z;zBq@#Xw?W->8eI`snCh=^(kc)=zV)6BBlp>ZsN)Vv<~f)G{=88G+VRr+(u3Y^GkK z4E()nF7BO4!bbpj7n6QqohB|I=tR<9D$2JmCpBM~hZcFhw34sm*dZ(sE({B7qf3fP zU~aBMINRpJBAUU=onCM7;zgE0?MA9zywW9(@52GaSH>K@J>J1vE^vt!PKyC@ypyB_ z7BbeWV-acj5*Y$~`)+9zv=1)J>LT{A?n{X}kr&y67hLU&GDe?GmXG)4CJrV8fhIk; zdhwdr0=eP)XAx~o)n(!?eTK#3abKX|U#J3|etN`8;vFh|VWk9L)=;gQa;QIVU&t!+ z72!^wai3qa+c>jTyyzfXs_t}F2E#dXZr~l3pruw3ks`B&`-BN%;D)O z^}E1>Nx>ct*R2GNK3Nx;MzNHLm1VrYM^s4HVOl_C_whmk03S`{ELiL;JI<+|gchMW zQ^jLwZa$r$tf|PLbn`|B9hp2gD>o_A*T))Ixeh(J#ht5QvZ4C~H8`tvu(aLQgl+L) z*cMX_I>=}9sgWy0ySiHky0u7HYbE&BXmRgABTVGERX6V94utA*kP+!8r>B)aWi7do z1KRoYsv3oafyQf4IlPRaks&mIf$6wP^o-}S?;6pj<~PBCM-Km}zEDfphE}l>p8$)*PKXpJqs*FeqU=u+L~5*qcrW6_l*ABs90RKo zHncN!RN;r9Eu{Oqwz+NB9P6foyuP~ctyK?NzrONb*mili*CLSXb|z!XWbtCL;*(pr zfhg0sK-!|9f)J8kJ%1bnBpO!ld6Paaftw7bNUtvnVkqy5cNGoc9SFn#Bc5qkAD7Ry z{0fIGV4{729Tx}kxLE+Ewp%W8^2Pfd|T z6jfOc5QHiQ;@wrGhAVTfdT=Kj{RI zE+uF4LPr^E?IRFPIh!Z1MePL>Wc|bW9xgMx2Q9#uqch53J+yc1^zx5jR5V0QI&G+r z6X=}LG~V?f8N1o%j{mmjYqj<<(`rITjKGsoM0ChgskZCJ-{EDzdZAE)-lRmqO4-$7&SA9@PZ1GSemBd zUg#_qp3SRB21HpPO(@QFFHD;Yd9A_ln7aroz{-JOneU%Ixm+x{#tQ=3Yd51Zof<9m z=M`Q+r@&S;mC5@!(*-g*)0>z247~t!eP_?$gqN^`>ws|y?NS;GHVDE%#1++wnT!T|xUqQ>+ZxX)dW1xQVn@bTjR@tdkl{maK3!n9!!XjIVjN;tL z@^C)lQ?h}j>Ut{=x9|twePHO7jWEOvkA<5&S8ewW@(qt?=Y6F|2%Un08#q&BuJ!ti zHY8pIK{o?=;~*LYaNrUP_iy(&csOO)sXx7q$x?Mx$aY+qwSNHyJNtz`jTJ*~EvGS+ zji?C}qiaHj5Q>EbUUK_Bh{|2TASK8k%9QDbh(OnX9))rd%T*O+-rhyU-F=$mnmVOSn~Iip zNh0Y6=KEbVSYpkUG?Hk(TFR?A5lH!0z=h~p46OY^13oRpscMMoMWihd@IbZ~);4BJ zRzxxuG0Q>}*-SQ7+^uyvm6Aq^2p4x2RKih`jYLB!AZ*wT{6xD+5>FJu4bi=v z%iYcSbjCM-c$e3TvKT z850E6oTQYnmpW`k+&)n@tjg{F#f51YRwBxzyyTr2xeQv*w)VBXK4Wq&$M9+_%kM+q zfUVm`s>o=h&8)Vo;PqBxQ*xN$&q6aX>BhK&q7Z9`oCtnd>R(Rn`Lqt{mJI128B$}_ zkoNz%9Mj&wzj>fGm|ON4E(9UOSX4$c&-^FG31kJlpe&AX3_!?+a|V>*PM!o)XZ^vIK0Gb*UjJl+xHMXP6TuRRghn>caa@dC4|BUotK3z+?pYOM6tND)xiC4M z&Jpe#hT{Kc@9qN}$?9_P7c2`|Sa!24>^AQK6vC^O?wQ#Pf@F54XEN;UZn3j3fd!JD zo}Nk1&UBaEJ+m25jIV^tDiIMPc=s3N#Rfrg6*MYnuGg0+zC_SV%TRXyQ+4XpsZ*|Dq)og*aj<=WH>}!62WQvxN-^O* z#7JUOzI+GTP0>vyJhg1T{jwpaB)Oc?vb34nTOLC#$k{Tox+HNiJS!cH`g*)xv^4K< z9W%{@(Va3=n(P`}Ui!zI8z?NUc*qT=X>s}EGB^NpsbNA)x8T~+`ufsw^Sne#nJuPNE|-_hrwS3ktsz|mgBv(H z+|o|7#f!5;{FLd8unmbrOY*hyjkWV;r^f=OE;Qhz7TM!|N+Tmx1boY{tZDf7ZCggWEEvg`31SvsMCIxJ(+{7R+G<UomGc@I_LD5Bm>MOg$h<2IJ3)qvm&We0Nv*-_3zi-V^SMSCerF*3R?E+e*66}JS zrRIB3^YXckXoh@e+oe187AwQFTQBXo{ zjF{JV-C*YF(E~T?DgQS4hWpg}Xt|#~I+vIKpO=3pUrOZ4d@q}0ljE^tRisIO+@7g# zktvbaQ*&m{ANyO1hYV0=T--QCM>a}>UI6w5Op-oC4kn#a5C(Qvuz&Z6^?o58thr9g6Fc&j`- zZfUu@{kBDGN1xlY$^+GX8m%d`x?$Vnqs&lONYAH=Tj8i zmYAE*t{poo??%g~qQ?V|%rqBy+dGn3QXiy`NZabBF&4S4LD4f?-ow+V&FXMe^PJc< z0nPYIGu%NRAlgwsrkhcxPB-mx^Giy!xxbw?0S6xpMbVREV%SZjHYL8jH!YnwB;%50 z3IW@gn-Xl+RNld?;W};gAWb{2x%a4f#%(u%gvr#Ik_k88I%QMd!A0F?dGaiujIg&4 zcC_il+!)>S$y2~h*-SLkQu1VZ;kdb7MaQ}s;w34O>7-15yV-gB{>C72M$WI_w7R-6 zAj!!kc?EuP$&SWfkcnWyX*n-nq`d~#_m671U5 z)zbo+L*{Xze1cd;eF)*+K4K@CHVH7S?4=&ne@){{}d30ahhVw5mR}m9XN>N_s zgUcV>e;7w`O19e9^Yld=`pa89o0qx+_D=CyFIuASGHf@bAhJt>qt9F-bvr;9+2xK19s zGxB4?TK0XXbHk%yhlmY-N>RZ%b@XW9kV^sCe^|ew@II@J1C1s7G$K{_-`qQ!<7f`0uD)*W6fclx{emoLHyXB?BQZ@ zxVofmxH|rlAqVC!2?Q7x(!nkd2^D5o{RWvQ$+&H4;SPz%GzCZZ4ZkIT`D>UOfCLq@ z2N0>n3X-zu3X*&*8g6BnG|d4CW1?C|lsB2@uxo+5-6QYfn}WY9T2@S0T`}03A5`_| zEIb!b%FQf1vPJXG&ym%I;~JyXA5DsFg$!EPIvez0WTP~@_5NXa1CsI=*3|~L9HwmGRLNF{vGHg%8sFgf6OaiT zo0HL*GQ1cO4hpG^7U2VsGJ~Ka$6OEhY-$j4^z`IP^|Zw}089@1?bC&z>}Q`wMF_u>80@|FiSsn@`!UEz9X(P?%jittqk3F55b}_@BGwjhm_u@>;Ci|mtv$14IB_$ zRHm=M4U_31bu2e-Q3fT-^bN^9{n|*`Tn?AayVV#1Zu4|{tb=pa)Y9VG6+6V?=H{6i zhfLONZsGG ztE&%b?@jqM=RLXWw=b3+SY8ihCU`S}!XW1-FSh5q9lE+vR8o6Q>wehuw&yO>ZGG7E zIL#edc*S{3_HnY7mMPma7nT3S?G1|N&u`P|fQLb&cJtyTgiS^<&=JCUU z14rh~*NjjP-HB;RPTPVtITEZnjLLky=df*vOh}}bP$|WCu$iivA~!ich8NUWxu7kM$DP`}5pD2I%c5C1<4cxn6U3r>`(IQ7CNd z(lXmH?`s}hUOH{Z;7zS#zWG$2K7TT$Q`TEvlp1EAHSY zi~Q(wa+7z12hVhVv2Sc#zq%;X>B>XzL-I}3#XE2}C}m~R9pd;2Z-+Q0rgL_7)jm)= zBQsD)-+gi4#%USRD&KpWe07-JZHD^GTR=CS-7q<6M#V_|HHAvQ@jP~TQxor|#)9!Z z)K~zS{%iff(z)fur6cl+^0eg5hUN@<%Zj|EbceiNg+A@|c}z;n=axO|XOEelZpmJ` zA(y9h@?+|$B(>{=In_w7y#|!Ea8()(YM7YEV=Io-SGlgs%gKxT!?P1toz?5op(E%h zxmG5Emn@%lt~7T-Qn8nCmKt`djrXQa-kh)Zc(neq>7kIki`);5->=;uHzcXit^flg z{UY*k@Lo)RH&y~>ryX3=A7rnb?syNoP{u3B?6h5+)Ugri};@axUYWnzD3`{+JbYr*u^YD?=sd@R=_k9`0IDfA)VsK@= z=WCa11&oRywA559ITK7%pm>Jvl zET(y)Lae9IDB3Y07$9ik!DSuKrQ{v;bMrFvYD!hn$)utYnls5*$Mxt|>`PShGFp6M zq;p8Rxj?VkapD&gy?obH)4F?FwCK8-7VX3eZimX7H&l0>IDEv^4*TZ0d5ShSKR>DV zr$_4pQgrQoPSN!4zMv8ZEx1h9*%=N+QVbo9CjF_ zv~VXZzK16=fpkdU!*)#@KU%olCdUi#x4yLtuae(FUe4jvKDG8tEaql#(WKJ6dqSa^ zau6?I!_!OiwCzVOoj90NP8(CMX`|t*kPFVm3*;Eub4iZSI9GNm>y zFJJfuCgqpB(GqQbPP(e?`&RR7w2N}eV^-TUJN!`CvP_x1tkZo>doZg56E^molkSAo zwZkK8n5QqJV|*sxEt*lr(q%1EquAO14$Fg(625Ufp{L&r7L|U+k(JDwe><;)8@U@~ zq@dYSDm5D1c2^Ih+jG6Vdu66mx>t$VV-j%>YjG-OBjL5zT-pQj%;b!WqPF>lTReMA z#xL9^A53Tdq%}5*ZYk0f8X3AKLk2kN z+1-P;(~r6?#eM5KK0Q+7OlC~nqVz!Nio+LnZAY+7TCKex6SkV#ZQj7!AKc=eSD+(l zhi7XeqlhrPD-V~6GAsW5BECD7*Y zx^#le%MRvy>-HsfJDJg>3$c5PDf$}oFq%Ch5$Fkfr&z|1_zm)w*l?h6G>P^tqLKIc zCzdH(a9uige93>GyyP!0`kT}bX7C>FihpSM^l846eC$bxo%DA4%7@n2f=&@e5Cr_IC}_v}fOO z`I72?O_CzVEA<^q$$!#jBF7-Q%{1D#quGp-v%?UD2~8PuBCu0O$=dP~!$|l4#9}(R zd`x)NGdO6+_)Tt!%Z!2ZQlgK_>-zFz?q6G7mlvb$dm1CVr`;wK#yO32s^~D( zK~bEW9a(>@!rEuL<7Z#wqI;War>RLMot`7NsL?%}8%d36M&PG;#5$q5ErZr3H(+)= zL1=f~AO~i@P1}s_$Y{2j9nnKGbwA9@LL@>D}hohEp=zM>Mq) zPF>Ts>H}Tx#hc;J*eZ` zloN=&z!HsgdS}OQB>rfpLnPs*!_)L_nK(xSxuF7P8TNa0@%ro>5;Cf0B}t7rpG{cD z9>$TmEzJBk!*Rb;PmaT9mpnWhnI3H>M_%enn^`iVhi%$+M(Pp{*w}S3+RHilTsA&Q z23mAFSIubZX6HsycR^V(IbX-pX_^y*3jZx9Q;IRSvquNk+V61eMIL8m*o@4}sYA#3 zcuP?lL=@fK;n>;>k1drlPtQ-ETe|+}zI~$!GMm-fh~dDy?J&9v34**DCdc+mMj}h? zvat?=k$|J9&EF z#)iDks^hQBPq|S#=Xx3Bw;4?%LDrU!xoOyen)Aob%2!U;K-%Ao9|z4BF(Qjm9n5l> zwL)I-l}m~HVO}gZcWCbSLAhfyf7|Fy!)x$EZmaQozZtMMvKjMm_UyU@G~+@{%=W)- zGxi5g(Po+1x_MdB{yj1V4Zn40fh1YBXYW2|5Ac#9-@3eXr=aC2iaYh~VEyd|(1hdzIL$$ruTKliPzEu1$yD@W3dh8^94T{c`~{xWkCVs8)F z;ZHaiHUeh)r1V`GVcq;~YT zjV%HiU|6P6Rc;KAn)m+A>>np(OqFel-53u4Hic?D1d5t#5lLkp4}&VMMdGM^vED?x zxV*k@&kLg^5FcHXN?Eg{!Hh(ziRBXwb-( zA;Wqt{bMWg*=$>}N5UbK?U{0fMPQ(>j_L|nviz>p(Ex- zzK&NnM_P(zxX0eNrb*Zt|jM|2J`)xdxkmREgVF3=*axh zK^XZY0YxWsfSOfIueg5TM4$VbQLu-O$hBtW_`=$8{bh=>_AkmuPfy8YiSlC4K^fS2 z%Kd%rR3OiPEt{_epEEzukh6&%Btv?Y?H!JNfp2u_;58s>+NxQyH(?g@96_R+BH*(v>U%h;XVV7cAXvBfFd zX{|Z4w&G@i8fkRnPBi83TR(IJH;vQo#U{i)vX*@P-P{uKvo)Kp33pVc8+kAY8Fw%v z=|bhO{YQ~tQ{t1iUEPT0L2Z`X%;U=^mgR}(gx=^W@woh)a&IYnH`tCz^u4>YoOV|? z+^8K0BTt>=SPUD4WD>7#B%1Z+ss^}c7hmr4wKKDm++QPr*`Mfi@*65 znR6~LpPOIWo4-DPcBQzwin&X63VV%&wIS_Cqs+&E7f$FV#{xV~*@u%q_lLCf&)4|N1T2^kAS5Z=Pw@M=j z6Mp7zwws-_f*b;wTx}TClqNY_bHrwSy;+?2p3|H>R+KfRtI!o8M1WJDEy9wl^sO?b z*V>td4V@}z>}2P{4Ti4H?$-GnUc7j0(GkcPgDG0X?Kh!cUu02Ohf^1wz7S6ApHFG!(vkqr*bHGP} zn7F2$%W%v`6E~$_ON!B03a7?8A(>O6osd>7T(ka!nQCMrQ`6qU#2&P+y=3oDGWEQn z<#LB$ZWxs5*hJAqz7DFCy=+9Y;63f^eTh@0UH{W4gTBCEA_HfwK zQ82gbo4A2w&r<vxSM6q*KP8gr4k9ztm7ZQ*IeE&wqA8aZ^IyBrP7$6rS4T6)%DUnSd&ibv z#49q2CQTB}P|d&^+19-M?B$vUlBgx|cB&l2WkmY?PA_kqN05z$wT)pcBdIvEuy%(u zA*`%#9M8-AA#%5Ce`+SXC$%OA%(KH6N?u{}_HJQx-$x$)+QWYh+Hf|bY2`f{$+x=t zecGhCl15Gi!x1z0nC=NXO^;ON=|be=Q1=++#H_e?k;?HuZMu>0-}#l}?oTu2qn&8l zG~kZjVWuh{mg(6WLpu$&dGl6opyj!x`AfQ>%vni(95`rZ?7cx+l82>XDvNba2>T64 zU7ngXSF{7Gi)T&eN%UyS=_D=RrCm5KUCi@l9^941@Vr+%mOmy_0NeUzs)+l&Xge_n zKhH?C`Q+)P-sbu09h>6$+l>a@so;QQGh6gz{ zr+w-&cd)s2&}O_V0lW~MC^-DlHQf;H$qRQ{bFWODCeJOTyTe@mXDqlBs!}!uIUW*seKj zPlmkM`Gl`Kq0hH$ZKPw7x(54ZE9k_v<-5_+=W9NxEB`GWm+t{@cpLIrVejM_^Pjv< zFDmD&!;7m2WWoTMU3HKC*A2EX)8w0nLi2(7+Twl*vA9Q`>Y4BC$;Tzbm6PV$mdAxI ze_~}op?RDj&&s5?FfaA=xLan5VsPZ*4Hyo9qvhn;ViN`Hj{5g8A0+KqXB}Yp2awP`>|7Mx){O~|ZVKJ==DSg4p$@^OR%pp0pY??sw7;d;zcP{7=)5ew*1x<$j zlrxPDX%FY>pg?Kk#~cw?TF_J*78m5tn48^G9H{}3V;VUmCu{?BkXqO3lLl)3^wPPd z(}N`&avmD|7?eD-wRL$l+Ah(}4hoZ5Cecfyc_eeuVskBxom)+MJZP1XChqjLP1c$1 z)A1i3jz`Wf@+*}Q~48v3AgU)kTf zJN8eRb0!k;^=C^*@re_=Tz>1rU;AqigWJB_PR<3EmG_&oo%`(`2-t%v4LM1CcwY_? zn(-4>pMF@!*GcWtZSPxImOe1kXFj|G8eF-|m&=gE-L`{zUhbmh#5TMwFh{^dfl!=> zBa24zZbW4?hRvT*!o#ec^6A1$&d80BIX~$jHoZNPF3rWfbYYoR<8ir^>T@hz=1w1S zt&FU*eutcC>Beu}-kWhqd#aR?33^@9+cR@v()%^s=h;9-xwN`FI6ZAgZ!FQSm2{Xv z1xWkq%DObzwau%f$iNkZlw$oVFJ^V-77y4+I8$4+j}o9_hV z51G3s^GmAcXk1e9WUIE%AurF(x=lBnz6U}gZ9o1L3628-h3lL{>OCoyPz^7s8!Pgf8}M0tJTxTm*l%P zH|MWED+3VhN-m<&rREUW5n@`p{I!L3<1{nn-U$w=0 zkxJrXw`hA{MmA|88RnCY)Ig0g7rp~aXU>)+%wc;8v%f~Ja`tzmMPb?~IODj+jNA{n zhK!5NUTB9g-Xs-6o&mb~ZS4Y+KN67+Ik9qBzK{(5V2PLl7u6pt>P-f+KVsN9-43Ax|%I(ksY)oM(#)?gsC2};Z6 zSL91g=OxvrM;F-5k0iu45(nwR;WED^FY!yVK)Nwmm&|ll2$2+9|t3l41;wm3n;k%*qXC&m2Rh4;LMgQ%-b&9eZWE z9Bd@^7y469N?T^-oF{XZY1fZFS(^0l2Ypg<)zv2$)1MISu>1h#6Wbxkpx11AQrrNf zonsk1ecmCM4n4p_>RsB)bjQ-sr8Vi_G*2$%V9oB5(W{FxjLKY+w3uDLup%Go)#n~| z`g6JSAFL%$G4B0ZuEURG8$5-iw59BagZIfv>-@TWaC2ehoILomj|)w}vpV?9d_!FJ zeZnUb-G_PH4$Fl=dYxs55q#$zn3s1-<<7~JAelPBd}qiuVFyV>Y^iT&Y~vZETN%$F z_0%rYhSwyT6UTgTE9MiC0U?95+ucs>-7xJnbJa0dJJZ!G-wTun>hk{T*$wH<(>9Jg z&XL->hrcqIlI8N1RB2qA52eaB@KS_kj@>{sceHS&cH8cT(F6_~2w~~W$-r+E|L)VPLx#?J5o-QsOK6UEo#@@X9X5-;g z^4+{$(xP5Be=W%W%%}FqxSZt`*|_Ojv0sL~={ht1abs7wu)KEIJid3a<;|F&1vAgh zsrh5`H{NUqvPk`y{N!EcKG--KE-lIkQ8WJ5ezRosoo+h{RC?rP%#l28Uy)lhnY}iD zvwUvzR>^NO9cun&NyjyLd2Ldr&@D=}mK$TY#FU_Eo7NGZk`3lr1O|ATA*c6wW2b`a zT+`4 z4SF!+PiIpycEZ8%_UX(`!y0CujmVwu9^C2PL+Vp$*_hkon^)}%D?4pRp2pK5bSuve zkL1)$NbQYmO-CNjk0;)I;_;>n+tl7dHd1=q*|^SYQ_ls>vFeOAjS&JSXgWbNIzj%19e z?Xo#}R@yrGg=6Mbp|MVuS?O?DU!K&@VtRXI?r9mJC~f|w(xN;?knxHhhuPD6F}aly;6&&uR_{0%Ny&5 z7tK{~aeiKg-mjb1$(cp(^s)?^pFetT_BrdT&zUtpPsm-rY+w5H4W$gp(}&a^`)iL4 zA(vLurDnu}c@DNQ2t9x3$lz~tP|T0CS??7CmNcC>cJ>t(e6z^Gvvp8_326OJ>5Ml& zt}%hkkK^Xv-iS@B5&WJrA!MM<;xnIV7Ta{48T@r}QF6unviq|LKmKg#g*aP!b}7B* z*?V>ww6RKO@`C*E4(;EcpObXRNbGC(=VzZYH~cF-_;dD}!JoT^0cQ6OboM#B2Y=6v z{5d;R*{s{fuEAe(BYzGfPVMp}H7^Y259QO6wBUwA(u6@0b2&-wuIES)8=L!yw7Q>2 z8Gg>CB7vg|-CiK{+0V5lj-4p#8P5NwVB#!6o^~^sH zlz%Vs9^_qYe?7>1u=fxzX8$(-bBXs*{O!zydzg2rtYQ8!Yny*Awf}pu_i+2)nEid3 z{B8cdT>dr7FOzLtDsh{?jp;uo9wWMa{jbKR%j5bV`@dJ%aF38w=|978nx4xfRmLu| zi!ZZ(Kghe%d!+on%zM;8&2p16&+h5PcH6p+@k=Cimw9Hp50bxQ-c|Ci?u&`r{5#zK z)%Ld#_UJ)2UoMetT`K=KV;0~av!7=F%|DNpe@%Xx+<1`p7(s*B|R+*al1;2)E&VH}1Zfn{bdA1nV}D!J(X(VX=pPP4Zr$6elQ?m9Kg zu9knz`udMKHlFu*?1ygAZOMf(|JC@+UYpcvxQpconG&GCbQ|tSnj@ttG5>3hgZW>R z1Ll7(l`TF&{x;>_r2UEZZ?n{dGe<_#tvTcN#pGndro_Z~3ATHgEfXfrCwZncUnQZ; zu{8gfBYGLanPX~x#jwoto@~RIZN_aF6KnJzvwcm2S>3>~`HT$QzXI%5jNJ3JjAvM=ctPi;V|L)I$`*Yy_9JoIR?$3eybKw3Q zxIYK(&w=}M;Qk!AKL_s5f%|jd{v5bJ2ky^-`*YwsoCE*yuMe<&e+lWY3!ZxZVV?Im zZ`W5JAiq4j?oBl_7b^O--d4$~`vybn$>&Lx!W4Wg1(m{HD)h>US z_W>+_gZ=$buO+|DKc+`>V5lG(^zie zJHGuUd4%#5?~~YG(f)q2_mB9!Y=1w=`#OH_v%jC{UAnEu>@`31bXotg-ed9myj}ii z@9FrxW`AGprSW^g{=U*Xgx^c{_Z8l)`2ErM-683{#9PAejivBc@^%Hci?IADz+PtmtU#z=g6z@0(s#FG<=b~bzVIr_u(b-7UD0HSARs~sgW1n zqh2Qu;hW?>yg{CUH_7Ah7I^~RCJ*2pau41kFElm%eR6M0eVe>~ySn#p(ehLOb@do| z_&?R-}cisK%TKMI~Be*(Nf{tS4Ld=?&(KObHq zKLjt6AB9)Q^YAM9NqCL?`{8x+AAoO?zZUheLH`jYIueGE_jvvjqn=z z&)~S%$$uWe5# zj{Ilg1@iw7UL=1nJS6`uc!~TE;AQd-yh8qHoFA&>e}(Wh@{hyoKf&YVPec4O&Ao80BU_kd{mbon16cljSD zclkdi@Xo-l4lTqkKE-? zpS+9k+vF~Pyaz_hXQHj?iIK+pOD;@pAxw%KV|X^;;)f+uFyAm>f~McCb`R>26+MDo8%$9MP7xs$zA?* z$omMtMeg#aOYZWgNAB{cPhLj+v5TVRu=5ekpE$YyQS}*emp=*e>Yr=)BzYa~lUF~X z;nU=uH>hXG3m;R@k~a{4KwgID$XkfNK;FUr7TFO`NZx{1$P1sZ3J$jXeH5^*VV2zDe%#xj|kad$oudzdH3a-&I)^u)Rq_V%p+??8{B`m!yh+~rpyp4DyaR8OyL|4D z2ME7KUVwMW%yt&wcVb;@Kv5`RqL;T0UKQj**9mCrw~dmmCy zl9v&GhTMK@hlr<4?((@p?((@x?#gqG z+~sqfJaeU{bCW!Ag?fWL{s{Fpx&M6i4te|q>RaS4pS$E;(&S~tACMpKIg^Y`0GC%JU|<%jX7pu%_E>k{6IaEpi{* z-6HS)w8qmV@56iKE}#44354G!_u<|p(efGmoo+Wq?(#WKof|n;H_1B)-ynDS+$4AT+#;_dAKK(y#NQ$B!+YedFX;aE$;)3<-zInY>^(GE zKFgoe@G^0`7@Ks;6Q5ME<{jK*Ilclo?Yo*4g`|uoj23{Z!;3e`dyi6V}Y5FVVZojJJ9fYruH}24Q>f~;}Hp$(7HOR|I zXOp}N?~u2!-7WGiyi4xt*EV_exn}kw`RCGT`RTx8;L*7Cb_$z3`_a+l5uxrg*r$-D3xc?bDfXGc0W z$wQ>GLGIGoBzNiTkjIgpE%H9R%Z_yR$lY=8le_%fCU@!dE{m2om(CgT4vu4jyn%Ek z$rDJYPwvv0CU@z~kh^qd$z3`NxUX_u(_-i9;HXPo6>e zG`WZLWXKygYdW*!EAY=yCVqG4eP(PF{bf#xp~nLHGo@ zJ6|QqT{<)5oiCdiQ#~(B-uRMwKpuWpJx5-K7s#vdB6$HGl6QVj=fEwI*Ac!-?tNa< zQzLJ{>+FbUlRSKyZnr_+LHH)QOMi>Jj(FPaNsYft-sx%jd*o%LzfaypdbY{yPsQB9 zkBFAHKElVyUHaqXEyOcJ?tM680NXPUhA4;ns09!ES`@&r5}_u)D647@-dz>DN% zc$qwo{I8IAv0qj42I8rax8Qa1E_{>R<$r^`kMK=$59#cXXW(1pA@aXV?$X~Qcj@nw zyYz39yYzckQh7uAW8^OV3G(1ywVWi${jZ?Bkyo+5Y4W%$Z{&4^&yu_J2jmTe&yly_ zA$jl;GdH*AmB>4{tCz{cW9k+1%*)j4wAa&E{%VSJpPmF zUGmK9)O+MEe(#ad@=&O2_!xN=9w%?XXUJXrK6&FE8h@I+1<#Oo;5qX8-)KAq^6JOc zi{zbesE6!mH&)2|pVe8(tK^B#sn^JZ2b-DHJ+DFD{RQ}3(^1WZubY{t4j_^716YwJW9qq0{Kt=T7>VC$N$IUZ9VOgC*XZ@A0C^D=6~izPq6XC z$piQdc>(T|SMShx(&R08hP)5YlDqS5fxPvD8h?>Ie3g1g-oIPDMDF6Rl83kG*C%S^ zt(U3S$;?JylZOajA@8E!sY>p< z@=uR z9uqCkeQY;I?&@!xyo~TO;;E1a@G5x$ULz0Tb@D<%x4TL1>TiR*v7q6bu-nLU4OU8J(Pzoc^uv& z_p!fya(DgRCU^DMdt9_UXAn<}Jb=f^>#jVL_u&ch5b-3*-SyWe_p!fe@(esfp1^U* zlDAy>Cl7J{$&q&uzChlE7s*}yEtAJlPb=hoc$M7M-x|5Q{?^&iF5M(|*WU)YtG`Wh zcl~XVyZYNEclEc!?%LbruKsq}U3;6{)!#n3tH0aiuKs$DkCtcGevXm1P)_3HuKv!D zHxNES?&@!n+|^&7+|}PSxvRe!a#w$|;_Gdt>IlHAo_pB?d}$vtd0L+&qX zda~s4=UHo2?69dcKHx5!=n?UE<3zddqSfBWRF{%(`I`s+P0TK)sX zA0v15H$fht{wB$N)L)<6)!#I^tG^lYKGKsV_g;+hOz!G$j@;GX0(lkj7s>1Jki3if zTOxP$w@ltbJQeZ|yh>ii{a20LgV)Iu$cIgGAKoB$^|wjx>TiqO)!#O`tG^v`SAVz2 zyV&0@xx4=M$ldj~PwwjPHo2?6ULsnaUHy%byZRd^clCFM+|}O%xvRfPa#w$S@&@uD zP44P%hTPTPEV-+{0eKw9JxA{9Z^(}NTO!Y({+7vI{jHF@`dcN>AU!qm0A43|^>>rp z)!zoWYd<&1UHiGkj{4gsclEc!j__OL9@=$X@;JOlo`CnsUHf^PJVgF@Pl}djSAS#V zuKvc!UHzRQcl9?x?&@!n+(-I-a#w%TTP1h(w?A$^6ctwjNH}VIC&ZAnIU)eH$h%S_#}B9?vuOvnh`|E9@Z{mqcO`kN(p^*11Q^*2ZE>TiJ^*V7`otG^+; zYj2Z#xE__sUHz?)yZT!tch}zTiSGLp)9LIJ`xkfVatA{q2yu z`nyH$>Tj3a)!!a@;MynTuKsS5yZY;W7nNtk6C-!^H%{(je`m-u@C3QL{wB#?{q@OR z{Y{g*`kNtl^*2lI>TiKOgZf(}PoVyW4R+MWCV9b?XYxM6x5-`o?U1|ryG8EmZFJZZ`nyf;>aX|RRGtw} zjJynwlULz0TjFeyIrpr9r8GQi#!4E zlDqobBX{+;PwwjPHo2?6-czIH+4Wz=$ldif&W`#!L+v7f^rW zSSzX5rG?dHf`{Vk9e5WYwr!b5Ub ze@o=9{+7u*h^Io{g;&Yl^|wauuD^A1SARFjUHxs4yZYNCclEbL?&@!w+|}O>c@_J$ zMegcvm)zCg9=WT(eew|3-)(Yt{q>U3^6%lPyl;`*jjt|~XZ}dTSIEooD!Y73+x$}_4-vjj z9*1v|SH2>jv6g=tc6U|$#*0EEcyG9{v7$w;=Ph0`3vxUv=aH9ck6a5C4zZ?17BtQ9e-QPC(`;k9eZ=Oxrg|D@&r6h-a$MW^7xB1Jz4U^ih7a! zqbQ#x@;1s_h5VJjr1@MUf7sutZ<0SA`QIe}Fye2M?|-kxvqk=A2;U?B3-~tqU&3S0 zi5{Ccfr_N(ee^1nqqCGxlaw1%&ccM-lu z{%QCo`TxLquSxy|gm05y^a12Q`9C6jkNiUq#QBPR*AHquvG0lI|CbTZ4Eb9SPm=sA z2%jdu>mfK_k-z>wbh|n7uOglz`A6LKn*84ozC!NGbB+9gxGrpxU+k_IE*HNAv$-@EP*U;7Rf;;A!$l!n5S7I6vpeuSWPH`D5TE z^2fs~UN zlkfUPJ?>fZn-D%neha)ve$}67JSFlR!dJ*|hu6qo4&Nj{`YMgTNxp#aZSv#rE%LkX z)_8j4Pr>{3+vFz^Pi!`t|9|&cjc11Z^JtGH$xk7kH2E2LmOO;#$k*XT@^kPK`G@d5 z`Ca)o$EcsjDIr67|Q}?$>emBCG$lnUDkiQ*XBmYJCCi#ady4@!EuH7j`M960k-K)+Ci$Nu{wDcH;BE4c!?(!)7TzQOG<=)<^YGa2X#Rf*K12R5@Fe-a z!_(vsK)X6i{t$SM{NeB-`IYbzc>-P`e=592{w(+=xodAX$!8J1P43!XOiRS;i;WOk7c#{0r;A!#?!n5SR3(t|a;YIR4gO|wv z8eSp)B)mrc_wY^fFTk7R{|axD{|9`F{Gy-3`Jem}_%`|F@K`#U|Br&tkUtilB!3b- zP5v}^mi*c99Qho)NWK?dB7XtALOu_#kzWVjB!3aSNq!r=P5v_Y7P-5B>5&%^ew%y+ z9@`tu{|)#I`77W_@-jS4{uA&l`CafF`Rn0D@*2EEemA^A{&skc{N3v_sD-2zD?eS$DSL_|38DzkpC4tN&YwRH2J6CS@JK!bL9UFFOq)^ULyY{ zyh464`YmhZm%9FH@<+g%B7X+FN1lRjlV1ameQz}XpAVlQ-w#icABLyN zZ-i&bZ-wW`Uj{FdFTzXY%kT>MD!fL17QRXTN_dm}N8oMp*TA>PtMDHA8{ymJKM#*R zFPi^vgU^t^3!Wr*{a|VG_aS_i`~&bD`ES9CF^@?E_jLj z1@H>_b?_SbP4G=}*Du{9&mnx9{N?a1^5gIx`6>7|c?gevUo`(;37;YVVR(|f0#B3w z6g*4*26&GA&F~_59bO`TC%i)b9(axXSKyoEzX5NO{|>xO{`>GP@(;s%zDfRg zc$54o@HY9=;alY21MiVP7rsrt4<5@z^M4*bLw+4RN&X^un*26+mi!nzM}7)kB>#SR ziTo_QLjFp4jr>R8o8%REll*7kZSpt6x5(@89{D@r+vM+o$M!|@|JUI&?5xz<8;_Z;f|5D@GB2U1(;ef1-MVJpNIQCrO@w`{WIHmfU}z#vhPZ-=m%*cjE>NfY^-i3F`6Cc#@J@P)hPhS71hTkUd zen{Or7%iVJ-(uu0-{R!n-)cNF$2UVewBr$!zi{dMvxe3QKY!x~S6+ z?dHh)KcF6xCy>u2@&M^6lee(l8hPB62lBcr59F<%)$}yTeWa(&j(9rcUHBGx;^#E} zE_nv=Z<81HKh>Uxy~9)<;4yO7E{&5nuGM&E$XoCPc^vU4$s3>2cDPU8K|E>lGUCaQ z*AYHT-h~I`-T_U2jyyQ1ULf!1)QjYW7pj-ZTW8cO5+R+Qty+y^u&(PcE4A{$H^P;8FCj- zg51w*JW29SPTeQZyhJ@i-ua4pmOS{fdO+TS7s&m8((py{R$o0N_YqHp{cTUT`CKIr z;WhH=TQz)xJV5v+c^Td!ufn&;Gw?2X0p268BR$^r(c>PzN7ET2ufyZ)zog-3$XoCP zx&O-=K1tsH6?LDy^{eV>@&@7$$UUSpNAAN5x@BzNf#$qT=x=_!%d->+UKFMmM2 zLf&|*U^JTYWNm;`JL)*au41iZV5Jue4E^*(+i^Ir_j-OV&sXBsK?3uKUSY1Pr!Zh{@k-|ex}L2UFsQfm(DDC2k`{t zU3iYX^8$^(!2XGc+w>I43wtztNZv*G61lfe^Px=cKk70Ye}%k{c&g;yHM-pzxsUv* zlV^5o_$GPqi09btw#W-ts<+7-SEzT$TktJ*JV)q~yXOl%@-E`(llS4V7e&iqi1f$F zt4RM0xl4b7JdSvh@x>U&T zf>+7Uxp`p7e;i&X_qua-yPM<;O?(7|fIOeew|LOp{lUZy9ozKUwks@dV@rc#hoV zPl4R!Pmvw@6Oz09DUrMUDU-YWsgTz{ulZ9aFPzw=<&8XqH^^Q7G|9WiHJ%oEd`Z1c z-beTjxrgvu4m40)rb>CBOLytK`?0(s$q>P7PMle}?>dW#+7(Aw-* zYxoX%8R_Yfcb=l*`{dzwt8bILa_ikj<@1ReK1SY$$H~2fhM!@-UB`PQ$XmEiPm*_^ ztnv8dEo?VU-hl_?)n{rvIr2KZK;HQg4PPYpe@s0jZ@^3J*J$`Mc{#0KBhOUT>*NLa zCb>IaE%Fw^x5*Pfqw#mh`>#{qB2OTmF1Ziyk#`YKpS+Inv0SuVh2_2W{17Lv{;2v4 zx%Vpd1bH2vCNCrY40#>#XUVIt)A$4O!cVCe$*YJzByS-861o3F8c&(L1FwH^}REskh04z0bAz-ytuyo#w(Rg~~8N|~k_u$*)9mM0kI9g7s z@ECa=9w%?WXUJRFu1}tMp{74gUWRALT|VT<{Tno%0=ajidXYRhq#lwt4yu>P^EunI=Od?`X+hx*R>teAP*3Kle_?Lk^7I+c4M17aagz8A#Yr- z-Xkv~{yupptKqlFs|fGCBwF6O2p=P_BYc9rrtv4q!#At@t&;n{u3jVWH`VLpjgP5svj3WTgS-oG zl2@0$*Ph>6>&Z{TL zThCWdl2>1-?vvLKsi(>PgX$Ub_+j-Nd23C*K;944i{#asjynp;<3$Z$B5xg2FO$cQ zt5?Vicc@p%{YCW}dE&HsoxG0lo8;jM4c{QIZ>Trf5l@S}i|w|_y=9H3Lta0lzC~U} zK6J?&OB%jMUOuVbCl9gRZSpGi*L!KSe7bbT$TQe(oV<>BX2?CHCqW*EC&|52ntq?W z@e1`cd0|C8Lmndj9C_!DHGF|Q_^^7BJn={BA-NAPk-O(#WpelYt3nI7%Uf_rw;Ll5 z;c@Z=e1_bIC&)AKGBgl~}-uKGS(4%_7Z)#@E`m;Nns|4I$tCC|Wn|T zvE4LzAMpg_@#kv%Ir8fFsu##xd)15N9e7CY&SNEVcOEN~_YqHp+(SC+7rvzF*(PuF)xG@Pk@Duse~i5Fc?};Y zkAG2phP?g{>Iw4l7u3__^;=$G(~%)>!L#Ir+ckWFy#8|aB6$NIk_X2%e1*J!QoTy< z71e9xad?B=|49wsBrpGrdW+oUf1A8}O2c=^t3Rf`MehHddYApv>f7W&ETdPd3%Qgxrab%}bGJh)mtAWu9&Jx89oLcKs9|1tF5{Y?$uBoE%P&olqD$jk6Hxhp4K^73ajo*sGTbLxF^@6Xk@ z+40=UTZop2I6Ow)Li}-ZAMwwSyLMNC+_k%sg!TW9gB*+u+B)Kck8S?IB8c&w}a`k}RL;N}N0Pz&a`v_koFTg|c zZd|upB9A{xy-MDCxO$DeA5*WBhgYj_lKTkXB9HIY@NM!&TD?Q=@_CEAby3D1uP%8V z@$|^c@IHAJ9$So-6Yn-nPn@C2gEwmYUGfBco4oZN4euR~ma7gtM()Z_oIHH5#xq0Sdi4Q4Uy)~i zLOo3${IYt6ya3OUS06ra<1dgWE>ka(XAr(j?mt$;SIEncQLmDB;WhFE;%Sig5xz+t zK2GCrkv9-eo7_YAE_wIy8c&bB4DXYN@NM$MBlLXbEk(;iHKFmx$P-UcPmuSYqn;$M z?o#*3gQuyd$r~?F&yaVYrJg1CpROK|2Yc0XfVWH z`KedbW8^M>66A4T!zalb$RD4)j&!EUJ4uZvL++y;k|mEnL&FE;E`M_5E`LJuF7l^D z9#3ohWp-D7$X))_$?M3UP4fRo*PTbbuGVEA4+vO5Fv?U#APhoZPzWGcWQt5y@JM8` z3__Ts%wakdL=j0Mz zUq|y4@a|Uf6@1vA5}vtd1FtUeb7$|TH9Y$P`4%1xe;xsze(QE;Jv(@2Z{dag08hPc z4=?RU`0)88Sm6A)e?c z@a_lY2Y7Gq;X$bU5gyuu2cMp|&OU-Co+pGy&X3`VJ%Xq93B0t&@YMS=h3EDJUfO5y z+MdGuAJ+cN;jQx-ytgmlq4z(B$Mz+>v={K!zJjOr5?D#0Uq0Xcw|4qL!Zy!A*bg#w~ye>6*PYcZ|!4vKAdNGJ)CEF z;d2thGy4?Y*b{j6W14dY@0?HJm3jcU%`8O36DMh z8eTYG!4uE3ffx1~K0Nog@Yww=ym_4Ve-H2M9lX7yzHU0e`$y^hI(X>m`Rv^@f`{k( ze8S6%`}-B};L-j(K=-ew@bVe{eg!3K`uqMi{vwTJMje?5lp{p;cXAAUX|dyT#ilOW&!sOFr(!z;>D zcywj?9G*I#!AtuB9$ra3IlOfLa2=zwyAcGX^BwZxRn&8UCy~5|_pj0G>j>|>55dDv z?@Q`^8^Hr#S4jUctviO7o+p9__6fZ7b;a=PZ(eY=BU8G6oxn$r(Dh{S%HRK7z>6pS z{8@hvkN;S{ga>|Z6!7Tf%CF$zE950SxIn&!H(s}b7xv-$hI10QKlF7Ep4i9qmuTGx zUV48f@Z9?o!@HO2^)-cO&L{BD`!<7Do+pJjFV>uMc=RXo44yl`fN%Zl99};1g0uU+ zgvYtOfG-~*U%?~yl<@5%bq?3?&_2vH+^^wz)gV7SuXga{E!u~c{xnnms?^MqOKD@qSc==}Kr|{PEB=GF*%Fp0=BTwOx z^TT}`=I^`@4f4fX)w6>qe=Tp}!|Q7gA6{P_e0UBY;KOschYzo>BfR%@1^MZ7zV$g7 z!OM4O{s`WDL_UEB|0s{)!{?AGJa;~Y$CtkS+3Rr*k1iw6;Mo=B3wZ8)4lmumgb(=w z9$ZEJD|r4R@)910@-=+OSMbjL8+i7k>Z#%356QRiA>Y8mA5?w^4}MJE!sE-z_wXU# z!SgF9e}E^KllSo8hvi3jK9&cMIz6B1<>e!Ib0v8MPah(mz-xO9|G)DIFMdlsDLnGe zgU#WYJ%a}q(fi{9KK%Y*4p05_V@r7Go&sL~y*?LJ@ZMg-TYC!+ck1cr@0K6ou|0hB z>HX^6GlAFk7#`abcy6D;hx{C#d!8IV%(;Sx&R6i(>u%t~x?6bZd;=fyEj)F84Xj93|_zX4rkBj6yDbIIlORB1}`_tFW{BE zfH$vGeg*ITTwcP5b=UCT{S`cXg?cvd$llPmzi_q>J9zPCc?(b9Am78=cgcHr{1@^g zJhcapJv|SheFTr+qMi_*J3odGKi?9=TVL-Kp1(=`2|RnFd^vz@snA zYk2r2`4*mj|9NNkv4ywp*~9a%sHcMmz5D>LJ!cP(oIk=tdwBloc}T{Za}2MqAdle9 z<>V81XOH34Rh6H@^UKQ&rLr;rH152yzT69A2NpTX=UD-S<5_zN@^0=guGCy}gH5_9HyM zoBD$%oZheDoQ&X&dqQ|&pTINEAH!p>o4|*EKRt(M=kWX-UYx_rb9i+Qug~GlIlMiG zcjxf_93DLJ^u7%H6Q09kc=4;czf*W)PvD(>29K|==SB+8ou9)yKWB1y>HHGj+6#DW zU%@MT2_K$^Yk2B>1s~4&2A(-z!xQ@s9zR0++`^MwzK2&2mUr;(0{IahJX{|9+Ua>n z>?3&kAmu}N`~>+Jo-E`MJaf+!-uZeHc<<|-!SjcxKZSQMk}u%J!{j-XQeuI1lkKCWa%Qq=Mr@JSECth~}FF&TQn{s&O`Iqp@ z{RO;pehp9Gp*bsfXWzh^w<=%L|60C<51)G*cH;z89e#){FLq=!6WBG_;6igc;a~?`0)Ndfk*zjDTY^`X9n+lT`9cwoO8N+ zGI;9z0zO<<4sYDEgb&wM(4AkwdwT_szu@x*4?gMh1|R{01=GQemKFV9V|NPV* z-n*xRR~ON`2YB#3^#{f2{c7zacps=Iga?bH9W|b-@?;J${Tp~2>A|P zyQhN(?m56Cdk@due}otI;HjtQr?!var9FaIPt^Pqc=~Jd7#_V+K7}`rlc(^^K8M%# z3?4sIJqvhh&*8D>U(z41o&w&VFJHlHdkHUoU->mWe2%<=C(n{^;OVpFHN1MNd%_USo1 zIfu{Sg?rL-_yQihQP-8jvp2|>@apg71-#qJ*YNC3@(La~zk#>@IsY17dd@9;cn&x4 z;4iiA4xYSK-ogv#5Af(4%J=Z>>+&N!`kp*^`sw-UzA7KX%cDGk2lfd(cTWtjJ?9iY z>`wykzNU3&@bsJV6kd4U1-!e@9nU_8gQv(@bTm14Loyx2jAFRc=-(7?>&5GALbfOd87+zje`3N3fOFn@&&JXhr^HlZ}`S^P3nZtAUXLQfGfJeUGVgH786X(~+clHY2 zd)*B@yn*Jd;lJ`y{~QJU%a?rK+5Wfi;CI!thllnKp1(->1AKJ8&RY*}?s_NP_h+6y zH`0HRhw#ikhR6S?d<1VkDxbg;=VN&3{1hI0-2~pdX9f@dRqLkk)cH9)-s#WdrV-oius9^QGL4&K-g@XYh{@Z3In z7S7uzeBR)>eGDIdPBntZpY(Zyr=2{8XCIeO;g$0Vy!e#zGrHGJ;hlXBFT8FB&+Q9% z`DOk6S2;ZK{w(38dkT2$>srAp_m}YAJ!^RFdirj<*(3PyIdcM!oR8u8 zCDcEq&*TZbzNCBxk8Ur|;Nb)03wU!sc}~BtdJOfKdVZoO$Vc$}f$|Vu`_I>m z;l2O<-U!}!{t3KwPYf@ePvDRKdwri_0Z)HjbLQ~EzJ#a0rF;SJ>??TvROL%}WnaT< zuUnnNH}LAW)nCKg7s|KrFzi1rMCxz=zKvH9T~F3yp*^_Uq>E3|Ma{S?jO_LAHgg4Pw3yT{utgkKZOtP%L)7j@742a4*ywu4!@^;4bR`8 zc`A6km2cqb6Xi9$`G3EBw*NbL_ju)7c0p9w0dwBU~?ZXjXd(PlDPtQs9 zGn!`%4}6{@c<-JGJaj&W*B9~mfychT34FNTIXrupdNO$aH}VBMc#S-V*YA)o;feDF zJhZRjfqN==@t5k~z{6Tz)88lG!lQqZH}K$}oUR_h3!H3W7 z3;6K4J%@Lma|s_lw-@lj`4WC!>)#)Q_qWoV4Lq^$;B}&W3oq^2AMVQn9(bM{-nnN9PamxJ# zRdcT4;nU<5ym+L1123Jg;hpnacxi9pU7`LxJhpf6G*|ur&tE1Fe*5&CB*ER!-j7D` z_`>oK-hNp55A(FgnlutJA;Q8k*DzPsGd1|xXv6NK14lBc=J$s0S_K5 zU%{h=yn=`Ck#FGj2jw-q-^sV|%smafvhU#iN7U28lYf@);rR#T9Xxoq`~V+bcRf6D z{s<54!S9@&x8Zd+hKK*6bt8CUpTLLj_r~zR`6;~lH}xm*`ak3|c=50D6kdN)zJTZF z-{b6cl*3#55D|mOyI-knFJntA7=3Svzjx75Bo5O5Bre8t1qZ$ z2~R#HFW|BFe+5r`y(K*VoO;%D=PUTI4>kN%AJ*sF7T(y8@ZdXIH~8Jt`hO5 zd@H?wRq!rUehZH;BX8j8<>Whf@i=)4FE1@W(9?UJ?SBvN?<7CMQ|E)a&{=M3IBpTfh3secY1dUAMihhI6{hb6qU7w|Aueg*G;QC`Ap`x@Tf zUik{1o+sbHGp}32gI`d73-8_Ez=xl!+`}XHbnx7MfQR0n9v<0`@cz!4GgzOVpT_+o z`0#U;A$<6`$_c#jx-q=9PvP-hG*1FgoS(r{dkPG>Rfu5tt)ey%d4`@W3fg*}4j_6a^a+C2;SbN*ZJn*}^S@7`z6+Z8;$qr8G=zbN0p(^Ou= zo27gQuU>qgvvpf|SjqSB;dR%;vo|Y$gtuFH@CPqGTW9$53q#Ks-hV^+2;O{CK7qH+ z$MD2Hh1cIvPXaH$EuX??SDP4$%U(!PfG_KNQQ4LtFEui>SA3-A5w27Y+i1;PLRvx7G; zm$&f4AL;xJeZzAvxQ?#(hIv$};EnSOc5;%|n%6!>b3&Yk2Ys`4*nq8+fx(eh)94@93{l{s0f0@8PZckMPbOTyT2cdiw}o z4}Z=YUVTpUOyIRWh8Ol3y!1Ne+%tv8m(ukn@bJ>|8N6^lg?B%o`~qHIU7o|E zYsr`J;p?UX-a5a6cQ;W_36HNTU&GsR<@8+iWD%J1Nzds=vE-@`NSTL-Va?ty+It=q#J`w<@ASoz>jaei(g zAHn0PJcNh-?}v`z%}n_Sp8I+y@XT|@^qZ?^3NJi=0uO##`5FE7@)RDwK|Y5^*OO=P z;AiCvc;)|oaSo5KtNaq)dLIgS>HG>FJ72;R`x;((A1Zk3>)ODpx9dFD@b1-`e+zGZ zS>C|od&_t5?#=QR-uOK4;jO)c7q?f>0bc*9yoY!9l^@~xgXFA%Q#@ZR3SEBhXv?$y)NgZrPo zzaQb5J@~WJ^OoDk@ZzV`6VY!hpTLuw$z%Et$*1(;?@NKF&d=cSW!00y`yZCi>5)8x zhu4rV=vR{G@Y2477nf1KfVcJ)y!lb(OL#t(ui=IFp@N53R(=CdZ!T}(%`N3Scx!Lr znSBp$@2s8)^1Y~i)Nfj9O&yiU~9 z!5jMlUf6?|pPq;M*6JC-^V`Tnc;x&T9@=Ag^VIAGxeHHK8B}%DUaaME94V+?R*RmyzUep+7o#5I`z-s;Tz-`yn3U20dLW8cHGcc`a>clHCk z_-o~Rc=J~I5gvKn;MJ$+u>L#cNATP|A-vovKZYmYeCXNhD1xW&Rel1`KB#;Q&p)92 z6kdKn`2?PSQ280Wc)9W^y#0oJ4iDU)!LuKHh~C%Wkv)fZ-nS*ZalW9xP4lndxxIuJ zzF%v2{kQ6=;PK;hy&HIKui;Uy{FeT9^*8Y9k;?Djf%7fAweR7zy@N-OQ2znm+k1HR zQ00&C?qTxaH8}r|m5<;-sQVtmvrEgz@a9tT2wq)J{S$cVd<@T?qWlydJz1W>!-dwJ z!TSp-pTdj3kk9ECe%RSL&*1r=DZhYse=g7A{abWSmhkeW$`|m!&#@J}_Vc8KxBssG zH9UHZ`YU+}vl?la2Q@aDtHZ{f*5$QyY5kMbQn{D{1TcVE}Kdw6ySc?XZbEI+{e zqr8XL|06%b%dg6V*PfpL=1cMsJpYP3q<>L9hS#1mf|uXWK1|^Kh1C^ViCE@bX>S=N4Ya%J1RP4dop?_H+0E z58Ttk!ynS~@CYv+um0e5r{_N?)B`kv)bNS66-tudgOg;Mq0gGkEKs6rNsF`8hoQ zad`%BZ=n0WfYu1Ruc=js!4qm=m-ohilF81`BDBr<@vF^(Op1Y@q7eA`}5uUpz`18~ApZ}rO9l^sZ zswad8KO!H)yR~{EcjJF2YB-|<$HMW0OgPH@Imt6FHX;Y?{hMO7xoYy+(|uSc;a;D`q-!s|zA-QX`z&wp+o!J}OH5Z*pgK87du2;RGA0*{=J;i>1D!kY`UZUS!~ zA)mqPC(BcKRLSS?&TUOz>?fG0QCKIicGxymo$<%{G6JoKC^c=rnBOL+LZ@-@7A zrM!Y?_6@vzmGU(_wr}aLR=$CE&hOymYm{&4uaocLz4INssFgp!+sDa!c=;Il5gt1q zyy5ixht7}S#pBfz!t?XxV|e&Pc?8dw@(H|pl01gTzb2o;n}^F2c=%BH3|=(y6rR38 zK8J_@Pv<#VgUzAty-aQ+5 zkm&oOH9WnAd<(B`DR1D3eFu+ks(cHNoZrJ+uiL>B&v}67w^e@+uP^e5v){)#!i!re zAH4DO{I@?NAHmD>O?m2G8sZc&k~;AO#KBsu&?0pebiIJTj$sC{{G5W^jFC@ z@cQPOr-m2yExfw7dK$Xt*}>CSDBr@XSIYPB_FnQ1-u;UF0M8zv`FnVCfB6xfdw+sA zou2>H=V1izAEtFfcw`^L^Xn-e!4uCjfyeJvK8BZ<((88$Z~s}>mB5QDsb>aHZ=!q( zkKUyG93F4w89aTrd;!nzq5d4+-B^e)56>D$oKH@oAM6cUs!V<;MrG{@8P9;j_~5B ze6T$||K+#jBY1ZoT~`S2Z=w7cp5I&f2wq%S`3bzvl#k(2uly8V-%I%f-rQXI8NB-w zc?$1eCZEGQzh7kV*6&{nx}VQEJQ&VDy!m~tThRYlzJeEjCokdgU&z<+<_bC|6}-5( zd;_my_0;qi$+z(0Z{-c$pHFu1;6b`yExdT3diL<#&*2W<`MG+47Yp_G@W_6I7Z2CE z!JALdf9^R)^araygop1}&lsLKAHh4%Gokx>V|eA~`4k@bb(Fwk`wZSaMDwTc&_0JZ zosIjCb8g`IUn*b2+kcR6 z;n|1f4LtR_J9zXa_WEPI&`w-zDF{lexTw zw~x?$+`}__2X8#*0iHinJw3d7n$|tSik5*3%FCQhJ!b5ukPwuY%8NB_FdQ$qMl%K%B~6XFOT5$^W+nF|2sNY zF}!)J@>6(dPvFVhl%K(i7pgynr@t+q!vp6tc;Y!1@btITlf%2WXr3iJwiod1uasZG zyBDaxgx9|*U&A9m_bPZ*D!+lZxx9uKPnB=s?TzIP{io$Sc<_(9t`?r%Rrx*rZt@OZ zKT>{xx9?DY4^O@B5uUtV`QUA*=fCm!8Nt(cDj&kzzm|{TrPqz%X`}oE9{rO%hNpic zpTgUB$rHNQozeeZ`4pac-8nq{JLNNY`?vB1JbjNmhqv#RFX5HfE#T=+`4v3=XL$)v z-zQ(g+xN;Vc<*&L@b-hs*YLvYZsF+%lyBhe`{g@$atEE;7M`}s@8QjPKL7CO-<3bW z+kcby@cQHOBRsbUZ$CZ%k$Xn))cFveI6sE>o-=}H|EYN<@ctX}7+%_^@b+WMC-DBJ z+P4`z`yb^~c={#z9A5mFJcD=NmM`Gt*W@`ov@hY^7nCpH*>~kDcwjH##dnln!xMW2 zPXq1GhJImr4G+Gj{w=)rJPo}0l=3@x`3ZRouRYHmo_wFrKRo}8dJgdH)AAl3d7dLY z^gO{kPS1b&AL<#wlh4aTczBSH;pu1P5j?+`u4@7>FDj4W{lBVb3U59tPvFr=Ju`TJ zO?e6ruPdL!1J9Ge`^zi8fTx#}=k!p%ga`haNg`Aczy@kJiD0u2oHT-!C#-ApXm8oH=_T;bIHC?IHXp>=FE@>@oaj>AW@Y@R~ZeJ9u|fc?)lDCf~y|_w?{+;@1T{w+HV!y3O(tr6;f4JOZ`R5Oe|vhaq8G|X@bua85FRh(V|a3>=byc-p6K6eFwcY3bQcYX{X@)7(=&ZqGFI*-!( z1w6clynrX?$ye~;+VT>fxu=GwS5v;BUrWA+x9;iTp?iYAKi!}HC)6{B$L^2d{Z*8Y z;pvad6L@!Pc?OTKDPPd9F3;he`wMvT)5@>l#YA4hOYcJkZ|<)A2A+7H8s55R3lE)d z;Q0;J-^0^)%a8DGFAsLOUmuo_;LUsFAw2k?d<+jiB#+?5-^!=(@N@D6o*m>f`0)3$ zrSRh4l%K=nkIOT7*vS|0#9qMfc}c&|!tZM@;SaX2;ZLwv@MqX-__Z&kb+_=l`0Jns zen0yjo?rFRXU~}q9$a01fHzl@_wd?1M|fcm-+g+n68DecnLUD+_6fZDam^FML+5Ak zXrg=yPwjJfY0u!@C$qDCTfj5tbNcnP?h;Rj`(hUpmnG8@0Ta=#y*25msCE57hZP`ue@#subp4O8+#7VMp}0XubeO7@r9IM!E?`3 z!HbJ2zkw&-hZ^2rT=^}$^*jx{x9{M?KD6-A=WP!Uybm3HIG^y&*W1H~eHgv(^c*(c zhY((PAI9*;^F;7rA13hV!rHeOKJ3F3p82{Gc^Z5WT z56buO)_#O%UN?CE>3NI2?g(BxAHoCY$ME6$V|e|^$DYkUrGHAEz?*-1+*y7GANn(R z_YLJ2@bH`R99}uUgxB^0UfNgi#$Lk1JDz_w{~DhCjJ$^T?%Bcv&)>jv=XdbJ-ohjI z?BT8R9Xxrb<~+dDcgTYeoSvWV2jwGpdpUUsZ?3mI+n+H!__pp>1W)Z#cyyk65_oK% z!H3sr25Yj|O=;Gum7@86=H7T&x=zK19F4qkiC z(FafOWA#?`gz(5dhF5>3d;|~eGkANYC!Xz33eW9xcwo=q<&UXn1<&mzJh_VUYj|^I zc?FN{J9zsVAjY zIiJI0`x2f%QauGcaef8Qy>1E59<81=JaWE*XZ8&|u-EX|b8g|G^9{W5{5yE%d<$=# z-@{YqJ9y{(0p8ntc=0Ih&k-KGKlt$Jc`F~I{1~1;SsuaDLOy{P&d2c5K8456QBMM| zoS(sCuba}Jubw%)e~LVV2ku$Gvu7%w!=vAjFX5g03wUl{!ON9;N_gS?8eZBfcw^td zTYC-9JpUFRdLJ5i_6E&)fJbkU_wc}egm-UNKKRJ#d28%rc=bu;BY5;_`2=1&AHy5_ z6yASEJqf&Zenxjbg;xjl%;9k_&)|`L0q;Jgd=5{XU&4Fm3wUZ@!DH`R3D2Bg!*hED zZ|oa*Yp>yf_h(D@JPo}5y!N4oSGW50v(E!Zc=xmN;2%%VRbd~&BYOz16ZMSYi9Lch zw^V)tPwX>ze+%VPcye3$9NyeUp21`L3f|sY`4XPoPQHd`&R6ip^EB}O#p>C?qYLCM zJhSiNjlF{>m3j{F*51R*KT-Y&&;L{&{L|@qNM9-+!J|Kuhw$_@@-e)9tvsT?Q9glJ zTX_u6z9OH(`!C58c-P2h@aC`ODZG8Bd=BsJ89aZN@(Xxn&*6=I3GeI$Jp7LOSMcoH z@)92XjeHFcz96sQ;kV=)c=OXwK6`G|@a)F&Ej+l9yn%-|kniAGEN|iUb>(|_@RRZm zo?b_OfM?f|_we=_@*_OGnmqXD7oT1C=BDgEN|1fKM|zcY9^Qa*)87n9H7@kQhrJh`xZ0k3>+bNYX4o+Uj0y1amA ziTYRY=4SE|9^FK~h9_TBe+AFJD&N54zm?bU!oG#K_6DB*oqBfg=Zc(sv-@YX$Jc=H0~BY5(1`2=2mMjpeXPs^w9`jhemUVdCYgZKX?PvPmu z1y;k)D&yl>8vF z4X@uS-@@}Z$s2h3JMtYod4s%#2Y(^o!<$;(!Hd_*4|Jc~9$vjr`6E2OKpuSb#V6-K z`MP`rkG?1m;lbzRV|e$+@`(ON@(H}Zr#yy7_mWTHsXc+$_8C0+74@X>+CGPe_fM@@4exV#0}ppk zIXgEycwukhy?qZ)->sew-q{cE{5{I|@anztBfNZ{JowiapPcjJ{qhk!`+z)z#~+rD z;n_#z5xn2aC-Cy4@)(|dTt0<|pO7c;;M4LMJh!Lt;4{k4;gLOqclHH5`mB0#cw%3| zGkXE=zrQ%UA1iolFX5GY*6{9gnx}&27ghfT-rYrB!=pRPxA5$ju zPvGIzWr7m`=-#J+)7z2>ap;g{rFcwukg!T%_~gZK6pUVmBnJ-q#j zyn|O?lON#G*X2F^C_lnGd+=|k=Rg0Z@*{ZiRe1=n?PGZUE#)J4@*VjE9tXN#F}$)T z@bnWG1poWb3?4mHJt@4h&*ACAl+WO?^Eo{8x=XtA1-!Pe;MK#mZV6AEui#6syMdR^ z*YL)^g-4Ijx(z&czJ&*$)IRUw{bSVA!L!H85AeX=!*lx)9@&F`KRutZeFRVJA-u4U z;i)}>*Y*j#x5x1Kak}0qJhvzC!ajrd_7q+%)jx;V_60oj{mS9_ud8PXZ|nuUe~R)e zc(jq1@buO4H9UN>yn+W$l5gO#y@uz1ulyF?+8cQEMCDuhaGv4CyOrxB<8^cRa32eJ=li&VS2s|939s#Icz=pdro(;TozJ>=M zQ~wqo*>~{pGrEs0{S)fh!_!a6J9yK{5AfFB!?RB+e}vce(Wg$&+x(z8LwJA7r~U88 zfnW?T&XY&*_!s3deBu5nJb$|K3A}x#dC{N+_jpcKAa3gsJkAFtKfH(J&=kVfu z`4S%9TwcI~XUSLa{-@+6-E*$trLVW5-%LFlcx$iW(QTFA!fW?8@bVVQ@8GTHY~hW2 z_VDgnLg?d1pfaJ@Y|cTe!?({o#Y-p@&R{4({2@Z3Iz53jEXKD@pr@U&8Y43F&z zeEOf7a|W;9tezC!*fV(Ho&`Mlta@^I^*Q+x-e2tLXRqrOJac~u5B@_vYj|R>=m+ID z@b(s3w}w|2mv7N&u>ugQCOa%IgEeCG6g zcK_w`2~Y2@d9lZZ5 z$+vUM$PtV)rOFnP#^a{^7d%cJ7+&+dE_6R=YC-CO->W|@_eF`tHto#f< z_53Nka?czddd>xW=AIm0yJrcH-Lrx(+*87vyKDY6JiCXyf>+LO;I+Lzhd1!T^X%ZM z*KOg2eGhNFZU--&KfnX~5x(|3!RJoTVdDGGKA!JzhtqS|t&|_Z zd;1ukenmYIJbRUTCh)>Og;(xL;O!gLGlO^b6yDqC@cM1)$>6;`hbLdvbuHobJJeIa zvqrvxm+zC8@apaIH9Y>jd;{Nmo*Lf&-m}im?G|2D@&+EPXqbDgpg4doWgl89M-3Y$=n(preUbsJoSN0h^ zyV7r*&7Z<6`y8Iyvvc?Y-d$Jy1w41p3f|gFcx_+9J9`B$?OS*~)jSQnvG3sRjg)WU zoqZ3FU#ff$uiSrxxAx#aPR~j2{t-O5vHC-J_89pDUb;VqclIefbbkVm>@#@$9Iczd z3->SJy*-D=?q9-(eJcLERYsdW>0;&o^6*z2b7!t2iAr9Fc; zPtv+ec*o|Dc#g4fT|x)D6^x)XTrbz^w%{wX~8Y4s=Y=@W$)T;JNcDys*#V?ZdTh4zHYF!dtIfz)R;> zbYE`?kDsD-D|m86{k``ac>B2LoPF-9;l+dHTX?#VH}KHDgJ;)KzJ-_eJ-l~M2d^Ha zo&&tI_wfFF<&W^j>jwXQdJYr&2wpuyJs~`Gehlwk`ez@EWF`vM+3Ui~?|J72zpH}(RaxPJvt z?Hl?t)L+AkXUezmppZB4%>6rf?(6E{)lxk@ym0;qPkp_?mrl=5?{!D;$~_@G_xxjc z<(>#0c-;v+w8!wsK7(iW6drjW=J3+_3|@QA9A3I-3D4cLf*1A@9^2RO#J+(yo~MTA z_8q)`lkR&9kGAske@^f3@O&G88UA_YSMcFEQ^JSm%;YPlJ?&T26T>_E6yDntc<@#A z%;3ZPDLiz34v*{^Jhm_3iG2xA?ZsDdy?(B);QzNjUpvhY^JiZ_^M!86=Ul-XdkJstYk2fB_1EzH zQ}Qjmus85wKX>r>VoqZ1v+~2`#=MV7S-os1x9N~@g!FNv2Lv-cqp56BmyuFe< zglC`Ab&cVndm?!6o+&*3rg{>1X`jJ|eNN$l^K*D;&)|`L0U!1`hd1BQoJ)9dp-Y|Z zTLEvKU%@+j3GeM|c>FD`Tfv8Y-oS@_Zs5U%HRleV*jxCp&wF_1>+RsZ{Q!^L-@}J} zKEgxigYTZ6&&)o8w_Z1d59fIdAI@_G4=$qpnZSpAj^V>T&*1SD)RV#!`y4*(a|REb zU%*3q4)3m`b(i$Z%L{nqo)x@yzJ&MoH9U7u1uq|^bvN+FJvF?wZ{g)bZ*lheYT(6B zsDB3!#_}FM?DOb*r{}7;k@6wD^E_jC=5-_Zux}Iiux~Lub{|jK_H70q_AP}E z`!U)F<9S;6 zu>X7bu>T!=*#853*#90r?Eev-d!8`R?@tbYUtIKb?avq<+avgJUncOt`4}GBr|{@E zv~B_)?#m25+?NzS+?P3gxGxzz_dE;ua9?uxa9@`2;l32`;l8Zk!+j~?ndjNS3-3=2 zFYR0Sa9AbH_y?!!G%uG=Wt&}@Zr9M z@Zr9U;lq82;KO~Hz#H#R0?%HgIcM_G?c6XX{crmTT{>= zVYOgr37}ByVQDBa2m}Q!)`_D+A&iD?EKo7ZV$p1& zX{12KxvX=3&voTH)6a{3@wx6kIrq6w?xeQ-6L|Y(o9_(Xyv00)tDbXs>Txo7=DvXE z?m1lbT+-ia`4sTVKVb$^e0^POyJ2UEYBId za8Kc9`V$_0+~Q>L$bA8iJ$?>XJ(uv<;}me6?<;uV<4gFN{)DTZ6=2WrzLN zyN}_)we7eOJanJHBlj3y+|J@m;jxcT;febkp1No7%zXjR-E(;1zJ!d(BgL;&JBi)IEb|?hAPCp2G|GCA@Sm;K3hTo-26m<4btszJ|B% z6}E3|GHJ@ZR^O3Elf`3J<(K2|RS4 z!6Ww+u6~=t)o(dG@iR!Mz_Z2*MFX4sz8eY0raP`{;Ui*(HZN4WYe{Lx{*B_H#B1|I*Vc?4H~PT=a#7_R=D!quM%T>Uwtdw-_z!thlS__@s@G;pyLd-@?m( zG*98hm(1tz;LGM2Tz$TPtIu<|`g{pjpBHfT`HJp+Uc$qREYCGO@O7!+q5B3Nxz}*@ z`4+A|Z{dl@*~3%!4xYIm;JJGbFWist(mlB1un*PeBY5rOLwMsphPUn!Tzx))tIuP2 z=KYqyd*9Dz^sjs0!kce--@hlt=K3~Jt=M`LizJYh% z&o#Wd*z(-M17DX09=h+~k$Vddzi;vP@Yu&6;F0Ik!yC{42v0puaHU~?X6_?+?jFJm z_c6S5kKoC_*t{n2+Q-N6#(fHJ-4l54^PRyX@3$1*`uH3kJ^aT`uiuyO+P#4HzjdwC z_!Ydks>Lbc-Q0W)j~{xqQ=AH(_;EMz#=U{Z_qh5g&JNzWw{YdZhb#XMuKW*h<=?~0 zds;q6cziGO@XEtJEMI^2DgQCNa*yDJ`vhLQ$MEj?R_7@^^7<$6{<$`O4v*e#d1mm! zeF4utW#e;r@nnm?geRZ0@daFYuHeeEf_Hx04Ltm`#joM*wXboi{}!%18+h|gi?f3( z&lavc5AfnfcHACbx*y@WdvKLu|5WZHxYj*{E6*`pdB*VaR+i@!9>(Sgyzucec;lYJ zmFFC;JTtiRT*7OQU%(^Ja|N$_dgR2hvN_mdp$}@y3&j~yqU-PtY$MC{^3eVgVc*Qz6E~fz6E~fz6E~fz6D--K1aIe6JBk&j=`^5o@03F9>JCW z1g`vJxbmOEm45<{US;{r;Nh#ybGY(Z!n@zK@ddnfU%`{#v+-+q_Ez%>o<7X(e>U*g zy@9viw>Ud^_5<@4u6ga@npX$cybf^9tB1#d-Txoqns4x9!#>e`M{vzIhAaOmT=^$( zT@z+7{#Jz-TUTe7KRlzl{4P5i8;kh4o3)g%bxaPZq zYrY*k8rysi@Y=nHYraRg<{Mmn*e9Cr2(I~t^m8nqFCYrYXY@;DQC=^n%LyIVd}xaOO{ zHQyOr^UdJVy)FI%p1S97&36gcd<%H!aaQocy`#<*-wLkzZs3}418*N}@ptgx zA?7Vy^WDQW-wv*RKETz_Jv{c~9^smAaE)PqYQ7`5<{QDg7uvig@cc#QF4&zKVUwB2Ol&K;i~f( zt~y6>)p-I}onv_F`Ap%7=aa(I$6fbS=Q%uc&)~{`0T0Lac}EUUJkAoHhPLhnyz%?M z6+HJi6}lc}?;lVGMS8(k!8@TqF8m@h23$OgR4LtPY?&0mm^6B9H@0%a!{&{5&SDlY= z)j7Dhbce8wU@aUn@DgPFpyYJ!3zk@6P16=v{ zaOHpef86p3u08Cx!t)u!^MA1M5xj7pz?FXtSN>DD@=xH(e+CbIpHJbX=d*x^x4glr z{y98xU&6J|6mab`E4cQV65gC=$6dpdTbbAJ@($)(c;()}mFEtwJX^T(+|xaN2d~|a z@Zf=#XKD zhbMmA6}*0;Py`vk5$W4Q91(*MQcC-B@~C(hu>#Wp^J2WQ>zv@b2- zv3m|zo=dp$Ea0l=ith1Cy63-vM^~~uYk2Iwg)7ent~_^e<=Mg$kH3c(o@a2qVL#~i zo+EhlT>CwE2#?*z@W4HShwceHai76c_lo`*tLFw@e8KAsZ*F~~Q=e?%!KKX`c>P@S z9Xx)%c?%EUcjHt1J-qet9Xz^{#W}$H>znuR@Y6Q0BRp~su0LGI+C74YZ?pIlc^6vcz2LT+V-hapZ2v5Fi9z?@_s65XRyl@ZU)yVpJ z43B+$1W&wf6L|1I>)RL}ebMrq!ejRYUc1lWiF*o9-RJPeJ%eZN3wZ9H(|x{6y03cy zZ*F7tT*12+PfmSa!h@HXui=sRa|N$1ZSgno;2iTBo~$hX7M}g6jc@3$wDCK5d{rCY z!t+@Y4NAf2kcexWTah^Y2@~jo^X$A6`DnpDPQme#PQP z@bF(P{sdlmo-sW4^_{}2Pgwi}-W29Dc!dvgFIXrol#mV5oS1tbqy!ZV%hqsZf z*AgE4yb5^daaQo!&!ZBae#`P%!xN8F!GnLd@f&#iL-P(^|Ec#IyxE%fa9!Vz@boWi zd~m~Izv=oug6sMo!gYNg!*zX+;JUug={~Ovu6ZrsnpY0jyq0jytAJ}>E4b!W!Zoio zT=Qz_KCeAo^XlN5*8#41^>EGW2-m!V8x7Z2^BTc5uMnXyO#%US#dTy@Lgs@oE-x)pHMZ3S1|DtPPpZ{V@dw}$sW zwDWWePu&}M^dB~U2k+clxazitSC_TAb#T?~09W05xaxLx{Yo! z?8CzA6T)lvFYB530(7y;f0T%!ZqInuKCX3nr{l%eCKe@H-qOsuO&Qs zlFh4tm+mXL>Q=&4w>4aKtKiiW?6@1a>RH28&n;Z_Y~ZTr4z7B(aMg1US3Ntp>Uo5> zUbo<;!+y)2Z1Ww#RnHKvdXC|$X9RD3eJ60$Glr|4Q@HAxz*Wx~T=h)hs^=W8dS>v_ z&zB{)E-`Z z!|L3@OZVjFi0^+#Yz|i)GPvrnfU6EUTyQ@W?$lZ@BKU`v{)6hw##U3{TxB z@YwT=;hB%0!c!lgz;hozgBR{=xc)v`1=snqgX?pO7Ou}J_VBK|>1ki>;N{<&AK;aH z53k*i@YX%J#c;iP_Ypk&f*m)6$NykHhF9(pyzqHV;LU{=Cx!<;ehTltXyX&OKBt($ zBY*!kg~#r5c;)M!!4n_9fa`OL9A0~zB|P&u1zev~tl*8uDdD}pKfH#wKE8tMbBYaI zpHuAM`g~yz&-`uCv<;5KZfi5{3*OI{e5_N<@wCu zdOtsf>;3#WT<_;+bYGVRT<_=SaJ`?ugx4OYfVciR!V2E0PvCk#e+}=|C-C68c755v zbKf6oc;UW<$9|q3;MxzvA0PIKd<@qZ{a%M z8+hh%c5t2VEnMgO9g>wJ&mVgCfaFHPXRUoT>~&i5%?=X(N=7yfsL;i(@tg%|E~ zc=#9o`6;~qsQCh({-t>i&tGT0g!fzX0vJly?)!fW*Z#kU z=RV&KuKoW2*Z$wbwf`UC+W&*w4EtaE{|Fv`kvtquIo+<*Y{)haD6|vgX{aT2e`f;JG$+#{`!7w2-o*x zOL%Z0gNGN|ybkckF)VRc=~Yj4&Fc2`~Z)h zW`2ZsK0f@3VLclkKZf`25nS_~!ZRPAz~iS|J}F%JEa1J5&*7!}60Us0>2O}%7jJW_ z{}^6<$vmR_b!r0F>y#KCFD`$IKZWacN&?sGlo?#FQ&PBIr_AAcosz-zI%NUZ>y#X> z*C|W5UZ)gry-r!d^*W`5>vhT+uGc9QJo5Xu4ZQOEmYVLbQ?~HL<1}!+PT9frI;DkY z9%m2N>y!?z*C_|MUZ?bMy-qp8^*SZEb?#hxsTy`of6Ugb;^Y9abmb$ zr%d6gk5Axwoic-GK0bxV?sItI>yp9sI%PrE`%ZAZPFcbWKW+in>y#B-uTx66UZK)3)kzEJzTF-I=Eh^9N>DL(!=#S

Wv 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℘cC*D~1#iMVU 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

Ra#P>FsUy`|2M1eR{9`KEU70 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 z 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βN2O7_Hyp#L~V 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 )z@R(JT{_o!t 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%0As?m%HqWNOq;NN4o3^mt7UfE>ZTL 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

yLfvLk-!o6LQT2 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 Ta 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

8F6OP5pRF{m5;Mth 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

wvf*0m-VZ82R|4~lO;zOKAL}@*=1{F?M#X-EB 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 z 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

ei^2&VV6!k31YikH4 z@nroe%B$yPZU;PBnf|YuKAZl`q@Kq<$cVX#vnsCm96uMm^~ui_uqaHX@4I5>Q2P7d z-8uBwqm2`CEW}?^`{{1zJPW7?h-u0hsEiePauB;n> zO3h_nojqvRIrQh7!}6Cb%B(k;wtsBnyWYDK4}K;V{}%(8_a2&B`v3dO9-h)I}$2#`fQ~bMRWz&a23?MDeFCX)WLqnD>suNqP%~xVH02 zjoP)D)l)Ub8n2sAD8FP;`hLH#fVnpFHx$MtB2rK=!>M7@et(h%woTm1Ju`-xT`q5j z3BI?(gGP^by`MR?Mb(c@p#rBCF|9w9fHx8)Jmx0Y|5i#fDVLWc&DD?+T9i-;dH(q| zx3KFzCWaM|+Kz^gW#^Gs zWfHLsvIpSCn=98%tqeJ1reeoA69u!v`wV;g)2qjIe`Z{ur?aU&*1)jfd^WTVnyw4R z(^Xv7i#EfdP1n=+j~vY&=Yk$aH<_L`Jv(3IA0p?FsP|I?x~}7~h*}ST@#7HnC}~8m z15B)3K5iDPffl)fx04&7X9dqn6VU}28awkAleV0+^vB;QEnrRGB58jE0N$uoN9)^8 zIV%m>dKWu2c5Bk9;VhhLtFab?Nc=&o#CE;mbQZ(lgx{wGy|xf$VTg>y*yvy(<ctZ#LK8>pIHZ><1_hKtwLw=!A`K}=ZiW*BgV0+iM!!Rjrr zpfk}ev@jE3yQ3!JEdc7j0_sK!bwW^g|FuvP^M2sNejTvS0QM$eZ(Nif`b*frLBLIS z6^$;)jAmA(fBdOo{!zL4yYzL{$h-}_lpsNF6=ia2-U?1L$dz^u%4FPme$GzGyTZh&g@>^!_G|7@Ta1Pb3rey^ez0D`RM?-4< zvVW^{CNst5zLNzXcFI3jPBnAKIb+}CcV>li_D*N)GtSx1IrpeTi}}uy z)d1u5t_Jlj$O>8Ib(H;v1Y(zDLl&-kRItuEY2HszC2 zv$;O(qTN?RND$Q`=S;gTpDx&g$PmMVb5D;TE@qoOMJk?NJukw}>y2Vntr8UNj3mO> z>3l^G5)dZE@J1XiBp?{k>D5yVfAl2;7Rv3LxSCqKXSBttp`5zeBSjF0r}7(OKA+dvl<2xVM#ICc=fIQ2 zz@Kg--U^}sQCBFvsU(Z01*NPY5m!5|U7h~?ajl^b9`7HkxrisDGiDT;6Zz)7cUl8& z6xei@ujTv$57X*a_dLo*T>csYzR~eIfS1oLm;hi`6?#96R1^W z;1OGXRgqJ}6$j-rOPuNZoR7V`a1s+rlM|2Dnl)yI&!rlt<~?V|`|yS|Nvqb5#HBEW zz?hYGX6|=tUZsNbr%~+Dc041U3tnGXY36kUNxp=5pBcLc-hgbNnh8j%-Kul?%g)E% zSvZjt;%)4Ig*L5BJTR3uXCTwg+pPxIWE<>vYMyasKIdGp_i?qg@WV8H$qtpS*#qy` zO*79pGxj($2?{mg8K-88Q}ePjeVg;K1BUHvpp~u8j9sRC2|l9*iqO!i!(uywu$||e znvKrPpE?(09?LfI(FLZ7XDGLYCN{#koSB5Jo3Ig1=uF?_eC(}-6L=kBdsBk38n^Fhj)x!SoP{baWGv(7QKZ=~3IYEL;c=)iiadkcD-6|6hslQYXdh15g}o+Z-% zZuKJb`*zG*=XwuTxAUg`<>mYmFH)O7Nr4MqD!XIVEeq0Q z=B(?zAd%eaqQ5uro*u(R0`2ySA?&U{DpLLTS9hCFAFS>%zZjqR&D&oS3M!lCTvHaC zQxkWKqI0I9aPMW1${G`24AriZr@#)X!o6V50DHxe+N~tr`^6G^J!jfjZ&mF^^UmIS zIKHGjer9bdKD8uV`#xh-R(LxeF?$QIEQ^HtBel=f9$>sDY2cxW$>OUhE92?wQ|x}| zaHn>+3d&{PUl*?39!@L_xwr}@rYw}D%eXGGF(Y?m!h5?*hg5Xo1;#g2lvJK}ZnMNu zj+lYCI{mV1fN`?+cT_)-W3DZ-ano;FADu(=#ha!>pdzHEL|cqdGhbLOV~V7L>v1p9 z7w|{Fk)V;X=|6ej&LMfWK20WVL?l59yuR^MiyU_yYk=6qq1x?|apUnaz#n*Qb!Z)a z6Fg0s&P7Fu?@+vH&a)Bk#_9=8y4UlViR2RX_BVOYc<;(hs=`~HZ?BBbnTg=*XF+ww z3f!-2`#1<$$TWWlHF9N9dAPf=AR5Q)fjO~$ecOjLHO%%C+f*4k)DXX>2q)0c3qyS! zt3&lKEqF+dP4cH|@(#(@s-lU5jC1G?c)*Q_zjMkAG6Ecs!Xl2pH&#!v_#lYp7tpx^ zocxFjX@rx17EV4>2Cm(S8^(jJu(t&?L?Yv3)iE%DY`Kr0vPigo%N>i2msXe?+W?uq zz8&@6jCenr+Y_C0TZxyBd3%Al@}YNz4)ui#r;QEcHjmpXU{9-v7LF3+-G$LOky3SR>;5-`2=$|LVZ?|x;Igs4%~3ZvFb&PHb{p!W3s=IZpvx)8cMw7*V|LI%Nb?Jv zRS7zHuI=CrTJM)NIuG5(p7QB?|Mi`rpr`72m?HBg;dlAGwXQq z?a;>)gdkp$die!5NiEyO{<3V^>AH+*tT+>fp;D1yrF2KERQeo0@bFG*P{r!V!EfYu zq=b%SZb5xQUjifL-j+!1F5EEgxeG?ez?Ma7``C=U=LNox-&zvCy{L9GPSWA=SC_bR z*14fo(K&0}+Ewn-BUnq?ox9ulj29|g@~HkeSNF*+5|)Z%P%>8A=U!q9UZjGTs7Tlp z3_DjRabTS`t}%YK3@o$UIU8VPv!jI$a*FE$5ZxfRuz8VgXwIp< z5$06I^*NB|M+|8tPCxKt9oNWGn25`enJBCgFMa{4*_L3}&P&%00P(%G03nPpbq#la zuCaEP98~V9CL`=6!?o)hg_*N>jo%KQdLwZAMp8jf?OWdFNbUBfIeoFv)}}en#A>k* z`Y7tcujnBlsAH@^8Y||q?U_@113rq~v_vZx_yhC9 zdk<=0Y7E1Uv-D!NHZ$>QVOE4unO*xHo5 z4g>Wp_=Y=XkzIsN?IZh1OOM;5a|Yy+JLfI8b|9d}ZL;+lRQsjY0aFE7zD8#{gkfZ_ zg+qvS9y%5+ycA3l0Yaq8NB}386dleI+GiW8?8f%!)WTQOJ=}eB9EPv^;jhB*Z6(5P zW+9eVW8a^1F#yJIEpkIgV)5}H-Kv?)hrA3EK5<#xdSI} z0^a;U0IOl~!zQ36nY6Be_1vrTBAG9A1O#BExLC!6*#HQBVU^K>fZF#Xj_jIqBHjDa&&V^Nln-gE6=twSMV z3Zv9@lUr7Tan@6vO1OsSHzq~PGp^4h=US`E9y5cFxvR6JpOG093hM6d41Bj zjlL~MuvX)ad_cG@mk>hn`FVI~D`BTO^XIJtwV#!MH>$s3W_8?W`xt;1m`~E2PaBd= zzqxa(CL4}C$hqbM2C+o?`GkoF(?7cm{hT8Bm(X733*gbtUwm0@($yqsUqlK;`sawbSt?r*V}rE4cAl^Nj68>z!tDu92FrUE#r@413LHEmodh8G(8~&ueQk2>Pe>P`Vh0utL-w%%zXlC!R2n^ z{F3|Mff#Ll(X3vX=7K~Tk7BIh{Z3t|SPwXz+VTlAtX8!`;Pr`b@7b6Mjr%G4Ejd z<%*F7EcaS$mWaaXtcNwBd7{sVK{3{Mo0|4HIRlol4@roZaYhe+uqYQ-C2TQE<$JJj zZT|mhdl&eqs;mDyfdqmQ&qM;o7HX(N8x$c_ut~)>0|}YY;i7U$Vgy<#+Ij&o0Yr`H zBbL2*L2L*?^(+w2=P|sK5ZR{d%vJHW%attge7H6CI5NLle-u=33Blt?2V{?+$$Or+DImwmyAT;z%S{e?5W zha|o+%w+BuhplK#)8au#t;+0|^Z`)u^?DeePm*Q-jTq-O{NnZTG#@0#B2%5cig%=j z(ydW>Ph6TPZ%+2Ty~{glRb(%7gH+7*Bt2@)$^1G&(G`@<+DxpvK4VSP#^|>QMyR^{ zXv|j_&zqyyD0n4AW8#{5Yw=>UMf3%c{jZs`VxPt-{jZr{GoLk+pxOp&bkp(y*i;7% zSe#aKt~EOIvBK-qmNT)*%ps)Kq9Lgc1%$twwOGx|Gvf-IJl`!c3&{+p&Y`auZ1CF9 zSo3q@UM9{d3dTb_BZO^8rhhIay;ZN#g81JmPevk7^eTcA?Ir&E$^3P_@(*(J->&>? zF{Oe~Ac>xW(-Qe@)DiTq(7~Jh;XX&%2F-FFo{%IRHk^htxLiqcMhhmg^Syq=Xb@w< zbY!XqriukVtB&=AIY+fEssvM&tZl`cta?i_HFC+V%3R!O)yt*>t}dZ7_;J&$@1~a+ zLgpawtb!LA@O!pOm{2nz)T@K$_!#_|F`~0)*bmGvQZz%*SOo{D2kts#)qh8IsgfoN zrIJ?qC5v&?Q*#9%&G6=01usxUsdp68iI5s^7SCI}o*vnBhZVUskd7}C=ONB4(^bDu z(1@d>+4<(PZhH}qen|_BGcv~w6c2Y;4}6b0*&R3H&*Sm8#-_W8h(Lt%%Lvz^4yQnP zu2?`M1&#j(1!>cH_B{&FI!-AeofDGs0dwy5Kxl2cOt@`Yab!Jn=5`hv+qBrY#fNgi z{-X}7{wHuUi7IxMSp{2N8}OX1q^V}zuu_KR%4QxF`l8cSHF6-sTJ3Oe<1yo9ARE1L zNs+ePwF$~CM}pQxTX^GG2WsxYK|wQ*S!<6_V5v2x(Rxt+ znZA|`?+O7ez#488*P(4On!pkoY5YOn7*C|dht}Q%I8Y!1d<_2TB@!kFL`D&?;cKu9 z;V@C0Zt_(~kjts#Bp2eL4o{a-F4czBn3B4q0ZP!moO$9U(dDy9j$nBFKz;&|KP1Sq zr8Im+>nJh!u=7!KO)V6fgQb^eP^}e)5kNv9xpvBqM6X#xMD-3HmDNmu|$BV zN|aC$bB(`vhgGk`UT{J=!km}`8m#)=a01_Zv}Rh|RwIM)3~vEOcEjxAdI}=Q+tUX0 zMDfXwmycmr&=jzbDgrp@GvXF8=!lH7VEKS`8!O0$chGsn2s>br8LzNiy z5rueO^v?(ZGp@0~;I^UwK;!)3b#CR*7t<)O+bCi^!*05m!QuG$d1%< z-oV$M2ws(}<04Zo5-V!C!feFP!M8Q$?Zwv+Ke&W=d=_ZX6?dAF;l7MmcVO9>B-z&+ z`c!0o(~URGPEGLWoXjb17@Z-y7m26jqg8wX_I@#pRgpQ`O)_8XJSTIg`z1ifCjgZ} zp0u99e;R2TWztH@5;p8}213(6tub#|_b(9MBnT0&rkBAxNXR)?{LR2w`BKz&AsMk6 z6m@P|urgepHFgVw-#OuF85e$e>mklE={>q@1q7w8CEJv)|KjIH+OxvX*0)0Mr2B>+@(q8-H~ir6b)|MkslAt#ld;DJIKw-KHwFMj z`(fX)_31U}+8yoAQR|sTj=6-r2C{k1(teTl!yI;FcJ-00wyTUC;|*gdl8IB6_27q8 z$WcFRwBQABedds#rPLDBAKMQcYfi5@QHIM@`{AQy)-ydmc0sUZArW6{x9i|-lGPqz z>8IiErtp&#u5(q`QEJuCH-#TDXY@22ARawArVqx-=NOIlD9~?UNvT)++7I~bT`X0o z_@gTR1Ih}0khNq`BzSiBYL4to`-fEKtsTDM#zazTUuI9uuqO|t-{jeISiQP!V5vPT zx71#cS87kqw{P>>lUZM%JgU^LGdn$5F@vNU4Y9g)X+UH;4$(CrvSZg6Bv^tvTw-u@ zmB3Hx0}1@wPAdBIpq}A>ga2k9L=l-{_&*N7zEF3T^}uHkPXg2zxjW5mjc>J@W1oOE z^0syiUnd@DIE8qEFWBrTzStm&HB2R|**elA95+0{=h$8Bm^{u)629`t-Cv0n{C5>x zYM&6Q)Ct|Z}B%f%fA{E$JbUsLO$n8 z`m+RPPj)?xjq5?wzkafj90+}Mxa!^f9ngF%ca4?%f`y0KpvfL<2rE!SB-|6_FN_tI zTETg$gkh&zquh;*PSqUFS^XADiz>z%7q2+?g_K&GO(j!3s&PoOmD6v{N|Rhe^jwUo zhxhS0O`4RaKgx>3e^-%;wP@);Gd(j-Lh&dfRs`sNnzenkn@8Pxe-tvA{y;su8 zxO-IN@}bM{Gp+ULUo#Co8Ta(O#tJut*nd^lF$0=K^X)cG#8RH~{u zZ>bUQncP%*T9uwgsXwJkpCW_6L0(t4E5~8wct@>z*;Ov*v`9bWubsaGskE=eQzwRe z;N8ZbW96K7S*ne{<4=mq0#D7VxuLOS_K`{dp`AAV|G(*^p9@W zMGwNS$;fkS%!i7|6iTEYSz}uD-C%kz-#`eWW{=qRVYPVWpdxpeNVmT+!f5^M2vyn} zfZd~>cJDw?xkX=eY{T|k3?qG-u154y`k!YZoxpQro&ra#KUHm{Kz`@N2LB+oOU*w- zY^7K*=O&etQ|K?=h;fv;guRZ=&f6)(^j zShP|;Q?Mu@8}w))K?T$F3Qd424q2m{t%qx+%{Q>exJPM~sg)OjVdZc|!A7fLIdRyd zSxEQW+x^9_)MPYlxHo-`jj1tLR-d$JlPA@gRZB38)UM0`a*03k(GKtQM^Ad@7}(iSsT0d6?mU zA%B&NX~V1TU}fdD3eUOLkPTLDn>A$1u_mna50MUt&5hV_V1gQg(f=|rEJsc=Zs?o59qm7;&S+?-FD`LWD7lRGTWL>g_1%9+gFuFbVO;{81S zOZhdQHJMvHx@I<+ywjGxL)D!PpR)Z=(k_ivP;;|ssN8zsiP>2^7%bJ+PzxU(tUYzt z;E-3>n9|JK)y%ocW~RFPq_p(oUsKx;tHm2{UQNs2aOKt~w%bh^W#^yK^MECKyLorz z75vd?jV{l#9)3ctZ1}OBqd6wtmKD1BTu^2H?07W_tGrMB_H22Wdd{@J z<4Mfv5lW$5G;&1sglFZ)iX_iR(|eTOtwz<-0C=uJ~4bR|3a--cwYXwS_%HlZO4Sj^8DrJtZsxnwf$rB^VOWK znCdSZ&u=~4OoY|&jGl&G+DdOV{DCLsW!IbXrsZ1?KW4(UVU~1Rso$Ezj4sbLYcW1Z zSZb9uhAlkE?A8&$aPRRQ^nQP<-4_4aV)@&`CMny49XH2yLr z{82O2kdYDwyl6d=C?V8}{+WQJr*@k!)Y_->hsjQ@ehx1BTci6eUs_wsYk7t>dUD3{ zZ`X=>LB{CGSnc_YWu1cR>RLoz3Ln+==#m79YHx_ zwz-~F8MPy@a!-BVC<58r&y(4z)w=&jBxDQ=X${24XHwrNu3U&}-O8}MNeZwAd8-=r z&ollJ<(!e7NkP__ckftZQlS;j$UgF(g4!2<(<+d%_yR$1#)7UfL@>4Z?FnAEm|3JV ze3-nm^oiw-qd*(&a&PpjMwXON$FQH1n`+kp_m53Mt(>fE3Nd!T3Ps#wBHFC`zf3-9 zj@FD3-!fs_NF2S8(BAZm;cL~3+Ix%yT6IoM1(=!#5E_c+s?Xi1F1R!UWtx_&^{gsX zZzpX0kB6xBgZrBrj@)q(anrz7*8ZL?L@KA??SP%l6@vZPn{)`ldCS>IvI!s&BH&UL3HItK-tQ3~2k9 z`l)1C9+jBNC1{zCj$Y#yidzO9DOLj?ebEm|U!*CJRaa=7X?eK`^3~1DV*?CS!L7Zn zF+AO?X-{Q`beYi~Sc8atyvZ7rM(z?15Lttisj{hlLru1+PGHt=s4W)$Ou1?WSxo3> zX-SFoc#Bo4G})nzeb|T?>p!7AhdU3!pU0X9);5Rsd}v~l3erlJ`)_I3Qgagp%Sk?S z)VpHxy4g_bHm1xMZHx^irpGWFVJy2%Zls&6mc|aX#j1orx3L%Q8w_{1&_qwR(*^0T zYebz$v*xr)KnnR(uSznBd!J%cbsa3@UXn_$3mbP zb|e%k@sV)HBD0p3vrsq#!8z0DHCmObVDeV6mVl*M;s{16(PtJ}>ym?@TX@}6l6dB1 znQ@kl5VJ>Y5lFG}iE6cScQR4622H~Tu?8l0`;quz_TXPDt&xrD1?$UYg;M5R^D7hW z?4cmitty9(oiiIC%-9OBDGZ<3-=cMV^A}K z7Gq)`Uw*DJvCoi|A4!Pt$vk)%TFe;n7C&rdXkmXz^V@8D06Cta*n!uw47vF_YsL%F zUtTH?AhXdLnIr^e&Zoj89L~FgVrwD7RHEt;TXK*=Y|o&^8QJ%k>N1z`qr$0eb3cY3 zc8h3-#*8)5gRC!&hK|`Nh$C{n_CDWvw z8$H&bF)q1tFwKC}tWkeY2`flK z%b437Zj1>!R=M7@Mmr>|@gj&>!Q<(fPvDTZC4DeHJl1IC?lq#P6*k*v0U$|6Yv8$!{cgMJ{>zNQ6i z!b;hk3uxV}&n?j~cN@LIvt*z(=KZCkg>JUKQ5u9O!7z*CP>PF~S)B~6^(Xa%bD61o zuFL|c4*t*#JXI=g`9Q*}*}zl%0Y-u*KIW{o3SL5nz1Xm!rX0&mQ{?K?)&mbiWf~^o zf(74LoL&!|Okav&!(n66}u58*to}^vzbF% z%@P>1Sx}_b6w)&D1)kW(UsAv}{t{1A-W2o)QyvePED6iG3hpB0G_cg1jZ}M+dRjYw zu#&2;n12pyVVyC33G+qvwFE@v_~+b%ph$K%`ZrE$AIgspue+4pXMT2{g=cw>HKVf~ zz_=HlJMQ@4DHFX8eS$$Lx{Uti(PGX zqd{xcIn0VsTdFP;S)oDIoD8K=!h)@O!*KvBAQ4v~y{jh4?o&0%gJ%F!C(?9~4^smc zGpp*ZEM8Cr4!@)5y@cFBhp(EWjJJ7M1Fn37!uDditJtEi7qp_>rnh#&U*eDJGOD)l z`=$cdDdBFu4pCgiHhr<8T(ys{sx9nSC1Dj~V#U-fMbWJ{nqQEzb=e$nq+GyXj=_wwsdLiX&M7~Yr zZTV$Z?j8zy#mYU6xtE(TDz;J+J}5(!rUPw~6qrkM8;M>^xwu6X?4q1qT~5egxi3&^6KT*oDi2u|>$UlD@COuySgS-% zh{Gy2^Y=pZBH=7PADJqF-p}-LUao@$J=Y?ADrsJ28_DMoQi({cn5EFGJWi|eS#u?% zp*$keB^|DuqJ6XnbUW?X4-?~mc(Ru{LCz|xcBBSUBaJoRGxUO_&K;yS#1&;pY}LHN z=2t`hH=H3Hl90%jWIp=8+TYd{wbcCXN!Cb&>(cZ5U9(vbmHD>Dy058tByd4u zJgLR3xwi1SHO`D=eJoIDi?OM1*uPO9N0h6+E75Rb^}RIW6YJZ@up4V%M@oJF_133v zA9z%Kf7i6tZQtBauCFFp9~Ra``>yym>f?TJ)%TeXcgE{G?ES>{WyIu1d`C>=rJr(fr9?%nY;bOr7HAR16=WQ>>(JQ-KPv001iJ z{3-n=)S7O$bT+QUkI;{7B?8xAo;bHS&Oo6-fq0f_!psZd_C#-Vn3*;+-;Rrm!JGEd zIVd5?u0ku0@htS}k?)-NjEbAUaRTZR;S0HTN-mkse^bq;mk-w(ppX=)@?ocX!3i;F zT&74DC~*liG_e^S0(~%|5u{wPf(NG$@kAxSF0lx#m`%r9c)2RqsKqRxfQU(uCFiPK zSD~%nQhON=fbNIg6xw~75U+iex3~1L8jMLju5GG62+vKOFDJ&k1m1qQ2fUdjURRWW zt_0%poptBaCgDpB?7nPQPv?(ZdChk(THS)cap~j|$sHG?pA&+opDo1vOZhkeNd7;` z$JX7ST0UOSc|0ld@pH7ym5;wV%atE4ylwwXo>x+xF&D%{_`faB^Zq%!$b}i~(GV9q z*CR$#;Js~p9NzZ^B;;MHJb$+1)62V|@Qsw!Sf1|#bJYPOJ zQQv=#`^5Tkll7&_^Vi?}^zDnu^8@E4>KpUP_5CU#cZwL@9(|RKU>$TqaG>f7+lU*}Dax3NsFC|w-OXo3;>N4U|ny$KYxwrE> zN%;{v$QkX;fE2Jd1g*)+p#_ zF0Z=Wu8N_;U4GFb$t==U3JsMqQGFzxyE;P&o>`!!Qkbihiuuum1bQatB}ybqnw$%1v;&S2u1W`8 zRn5vGBzECqwTVd~p1V*skdlA#F(u0{LM8W0&0&n-DwifzO;+LY>V(~@&#AV!)r*tX zn^W@&!I=;3QX8;v%O64d)hy{(?ruCSm@|BzFjM*Sn4a5h@OW*J=AD{qS~=-v>gl(A z`7J(~9(+t8Q_VkC!$908*%4_pB2DufenU?W?ZF6g$S|~La6cfB$Fw!)9IeO~$SQ;Z zWzGUI=2~lXqxJA^H|gXoQ1hSx*fS^Bnmz0;^KQ&7uNmX7yof3}=jI*jVObkOt)BJ1 z49S-DKI1RwU+**PjkeD#fNA&u{(SIw&ey3frxKjxT+NxV4B=+|QGPu#85m=Pu)jcv zt`l*Yx?x`EXG|7VRK~=6ZrGWsMm6bP05=Bv{62BLB@HkxU>Hr*udy~>EupnBE~2* z&PQj_RZH?^kZDCk%1-ktQST6HnEtjrS!6a6{2qTV^T!^L z$|y-TK%;7=)>W8cSoIRcxDd5^9nr7whY+pc0@Ml?AqqA|-3@rguW5E>4%o+>e3ppt z5!wu%v?GN!Dcbj4XfSbG9rqGE1;(5&qjJRT!Ps;cGUZqZ9_soV#;=>pT=NJf1xybe z#^lRsfncmv%LFZrKOqRp>Oeiu>+-2lXQ|soVmYJDhR_&^aZz%Q+{3S;m4xM@e2c=c zNug;oWK@*r3zsO{%RgItzKKe#z_5icVUNVq{-#$XA5`NUOd`$6m71nCD;Wzl3Yt?7 z7SYX+A4O(xJQC2MB^#KUvHwuBvnpa&Syuf;{QB5@Xx0A@Z>3yAhL>ugKT^d(U+o-b zb8paY4MZmV-CumN#QNd-K=DrNhZ)|IvnF`C@|qlh$nsOckuUi}Jq6YSx0)haD6g;e zUG4s)vDauYIE#Y$nK+OGzVR5ePg}WByl^;xP$`DOH<)n>+We7mOG>RFuk+V#4Z#5u zWO}ZoYkMYo{7r9Xa7cocyE~aNpG+J0W9@&)X8xM2A<)QJi#-!zX_j%y^G?a{O!hs} z!4IhqlsYSzz9DoPdj1Nbc2y+fI$7jcI`({Hpl$)-#kHS%0_m8?3UEF2EH*x`Rauy! z>jvN?3$RD^E-75M1wEwQNyllZ@Y#7+}N0bjW5NX7jfkKX&1}0PnWV-R`66%d5_9t{_gADdu+|L#+==QZUl+#FqVXV-J+@v*LMWlVkN>m zaD%Y6LE8fg5g=>GUX@R}*W!|jz#TZxS*(5~1eIqymT?>_Nqm@rRZi5x;0ydTsx<7U z{A@HHxQP&JP=B$DT{&otJB z#kGg4@xDk2)`8LzUH)|+gIbC!8f`g8xE+dz+d%I5KvnR3TZmr5@t7xw{e}?m8L$SH zdxYF;JbYj*J`raG!i8rB^NMxKEfgQZHB*5sTW}yBr}kN_C=S^Pp?*T>E_je1@afq` zS-ftcH|5++pWe=gSc`!`cot8}*Uo1Rn)IIONd!r8) zaZg5|xGiA6JH?vJAu z`C6>{nc-b*Fhq(3d13a`gc~5p$(eY{Z!do@fFtNOgXY+{C@LBPLR3^7_t*wzP_hl= zIV~qdPtBl6WoA%lK+;^Gr&2@SEGAPfi1pXg#N-6hs@FaoO(ETTsRew4gvtea=s2*A z*sXbWo$Zak+P%;y=5{Pv-pFw3nVav6Ebr-*7iOu(y;wVMeK^+6`Mi)ULo!c`4tv}N zdxA|2FW4fH%e$dcg@m76w=1+HJvYcz)lYWF8ql;IrGwC2bB&>j<>Uufyn-unn zyKC={VGcNGjrH9>Lr%58(xW`qBHXHBJ)K6*`~iELP83`L$8w^e zHnJ@;O7#3->}+-g`KQ?HVrI%h_=F>kuv1#~YsrMZgdFN|ocDJ2OyS~8yCYytUf0lA zw^*CumT?3Ny{nB|R;1BXTp79L{q8_y4(H?_>Ju2*Vst|ErA{k!)k8vQoldguaUP>I z(<|B4>IoL_wL+ta)*K2i*>|$6K^a_h*~wnzqqWVFMr_8?ZG*(8F7L_FOgd^pq*jxrWpMEh?lLQi#djfVF z5kdQHJjM$s%RP04zFA7ZI0ZN-u~bEGrHh&Jo$IhM(IdI*+iNzP8eACsI3>r-3}vpE zufJ=TpT=4zf=pgN1ma=HslI$^=?&qwbE>>RnwvHMK+S)XdF?J-$~zgWHd@V_2;PO( z|0aGMsOz09$1$=u;=YXv#v88WD68mWaCpzc+UD%&)wy zguy7%SVjN%dVhI5^W zR*bl|+QhCfmQ@bdXX~AF0|!W`!*ZsIC#@#KDv)DInVGreJ43#>ivcRCV_Rb5jp}`J ztYKZ%TR^?eO5o6ZhGOI;u)${zTfsDv5nI`yPiTJ});n~5?eoM12&*#szBvz*{ne)p z$D8f>nwdM7FmS=>Y@S0NVhiM*$+pq3aPE~ z$dN3s*g>>Rgh+SS`E#=?(>;S19n^fVa)Z2K=N`2<5LPzI>Q-y?hUFI+xI?M_wwVPR zm>Mg{o&RSJC4cOyJVpviVHH>*1%Er% zC-Em_Y(9|ucJcY^u78Hl3hFaRsQ@O~QayujrwG8}+rSDruSRPWsQCOAG$rLbMyx2+ zgSR~~C;&LcUXX&XbR>oNZ-e1KtG?YuQGc;tggEM*3qCx?p-sM)b<^NR$ZT{TO+c7E zRWdXHNd=hnj5v-%3_Xlc>9KLOR<{up?6Ah{kwT3}mUaJA)TG-9`lBE3)`SGfJLq$9 z7M)<2VsxwZV7YPE_*3M4uGXez02^KD!{gj9|4bADipft!_u&I=Z3KWvP->j_38 z8UvlYH2rqJq#Jm0{*YK#IQOtcHwTZA;H3ZgNI+u*u@K-x|~}n#s4Z`+e;a zDK6u@2A|R2)3}u!Zxe02J>|U7`ws2^Z9*=Wo2SUqdT*=H$%b>bC*ehLGGoc5%wc@Y zymQj^g6E!_CLs{5hRcw-n2Q*eRH!Ro>athgcRRY!_zm~po@NcnUL4|QBfkD8yfZUhhQx_uXXy@A)d*f(G9Ist}lpIE)n+!c$<0-Ts`4!@l zDNF8wX%c2`jpXzE5f^A0k=@x$qg^u8dshIbFh5TZ&d(hcuNr5ld1{Cfq@te&aW~Q# zte&Ke{AD*aXSPc%kj|D z*GyE!avrCM(M{nVx(`}Cuah#I3*A5_suEuE@Rua6G{e^KNs@Ukt~AnfXJjt}1xTVh z9>GtL&u_&(8zf0!8z#hB3LRjy-8FPbZVjoq6rSo!G1;*uA_*mHAtjRKi z(4uR&JYRdXy&$dE@LCG7LMJa=dY0KuEZXsXkQui2ph+7@-Gw$eu?wvn|BPs_0nQX{ z1hf24JcyN~^9i;fj_2I(9C=+WJZM(SGy;gzJY2D{{538$$f9Zjr7>!W;T`_8>?5_0 zp{5E()4fX`ie2a?%-ldQ$`?^S-f-E0$-Z z)#L(QqcwUWo78l2GUu4^j46MmyfR^F7|L&Gxd)l|3*O2&a&WM8nQ!tD+aF}rpX?i3 zc^T8+da#oZYYcRIaCa?OMxX0#|hx*?zezb zwz>i2r3ID?NDKfD)wdpe0_6JdYtsD?=8_2ieY&D3em-`q|AsZe^w#)E#0Qo53dKLK zhc#_IgtQv+2&NsFzIeI^WO2J2?>a)utVshl)}>8)H1e3CT3*iFXTj@?t@tmqOpO(*k;g3KWdItVH&%E&&0>t!jM?mjurE0FoYF@)ar_1+M9Qz|tsK2EUD)=~U}yt|W^3jvIuH*K3|~>bmKo3FY^tYB!`YX-h42TA9YTVb z7>9F_gOl)JC<12D9SY*4@VWP-sOG^>zwvQAP0j74#oMj=d(e0jMx=Sn$Jn=bh9$`+ ziH(tugYSq}N4_9A2&juY{(WvoHXZc>V}6Z~3Yxq%U_nplzsm29A0}&dYF3ZQiZ-lV zw~@=8AC_kc3tWwYMtjjl`CL9c3$}OHqiAEfk=`S+;k8uuI;;c`CtKTbZpYfiauqRWD+6;`B#Eb?4j z5iOI=+{kU8;RZvP=+mZY^%8<u&fpvYXK?-yiPRYqVp%;{%Ci_C9eY8jBP>>?UU&doXE|j_sq5{4cI0 z)|fTcgKq#4+-R&DAXUSkhP$ggNY@cx$Fo$7uk99h4JC?^u|U#6$gjFK55I-I`fB9s z4sDL9I-4%S)J!`rGLB#krkhlr(4$Qct-M!u@j#l8&7@;vEDTLII^3gJG@vTRMuJ`> zzt-cmF+zQ{iMkK+9sgs!zN(SQX!YM1TH)ZlY0}gBJCCu9#7j&&QyAJ=gBz%QyUZOE+L@Udj>2RDz%<*FJ!Li3Gh{Of-gzC} zeGOKIR%_-O-;lto=42_D+@^aYB-$4!yz*<^`T+QWxjVde~t!S8> z7{HW~72b2KmiC!&Ja*P5YcShsH-H17zfuwqrDDTfnKYn;x->{vt%>WmqTDV$-qB;9 zXg$|B!7Mb|h=z$>dgv0tDy@@L;b#C7iSCu#4BaWR2N2DXi#iFXYW6@<%pUK1PTjTY zUKp!#zsfj5O2ahf*dQ^Tx%NR>rfJuYhW4t3jLy|NmE8Dpu*s%ko4$mR{o+TshjWLF za^UXe=@2~Y6eR|&=m57?{RFxkL7vQ;8OyXC=v}4yP;aLQpCiOJDbH?#Dvl>2KTrzO zxE*StVe~HQ&wWDxzN=X7Q>ogetWl-dL{Rl{lZ!&oaHL~Y3#C=ZSb5&AlHXVAoXW$L~_aa8-Gccmq~rhV&5B(j}N2Z9&Xz>DLPj-NwpI{%P`K6RElp z%IDnTeUj92?16!+=8l6*c>Qn_>7xYG9pb+5PM2hzWK0&v5mFb|;cO}xI2vHVH z4@Jq;5i5QaJ!2aJkzfjFHAU?Z;EjBC=tbcG z2P5SZ8#JKoAj~0>(#)~3Ae6i$7U2L?sYMDzs{zeWQ>C$Qx5E@n`ymmGLQy24mDC2* z>x9|^D#ZauwB9hsD&8x!O|a@6*u>C@@LRmAl~7z)@V*{O?dFq2AihI*?o>hVE3>#3 zw#rasjrUQdmZ&roB;X+h98+qMlz<(|euM{gn*h^BrHI3krSMx|RB|3v&RE4JXEY^X zrBbL#aUdka3yv%FC~YtGK5Y^U8kJLdIPod)&1XEPM|IY?Z9fXms$0l)_!w^$W|TKp z69lEpPMm&2MJ^XTNljwm6sDR_Ujyw@)?=aY0GtP)LMdB4pQj8M;=LV34 zakctQf%gGCM@6yG#;SPTlw!n6lypE}{h>h!n~RB}VJcRKumM5_DI|yPrfr0FllZv# zY}MyUCBh&EO}JyW-~&d{6V{-w^2)}|TyzEotwD8JO2woC^~;?7%X=P4x~<$(#L7|Y zG^s!2UBRcU+-_d;Nqx8XQBz=DfiBL?<(Q1RLWX#@hVoWK+7FnmR_jrDLXVSr^ys0v z0q#2;6jJJal=>@=<5kA-ay;Hr0){cOcE*4pm97$%*{r4DAXfRlHTu|HEak6dDH~TI zmk}hj6p~!{jM;eu|IjRf=?vFNy{r32TY|&im|}07!i_QmUJNwt$+wRM2W-bqjw23H z1e$=*2^=6FBaI69By~DM()1A)3B>TDK6kU|5Gg~WnfCikC^q>be(tl`5oqej=Wf0M7{XdOj379?BRIgpbxi^5 zeVmbOeODLKl-bAS;@Y%716Q_UUueIlW@LaC1?;f_`%YTaRx?(dl7gM&YodM2V(nW- z``T)qQu*cg#TNytd`=na5&+O-mrr)tQg@p{i z^sl=Pe(A<(UPs5IFwFw%>y0tS!AjYfCho}=_psI>&dFKH*$LtoPE5e(wY#><*VNJX z3`W5}tayPv7JjK2yTHD^50{qL6!4M(MQbkLr5}q`HA8sG3Z2ZX$>!y((8>O_8N3Wk z0oC*igV}usvw{`wy0*yy?62c7!wShU#0Z67}(wfD6bN~dcS*#wa)-3K9 zI$>I~I4g9*v}W;Hp%bPxiwFAC-xOF@Nau~Ir>7-C7MYNhWeA2>OYK*oS?8n7ce%Xe zx7%({W2d(}pJWce{Zv={h%jfx_MJTqjkN=jgo$|s>o3DL-kugtTUAo~+2886)7nv_ z|0d~`Ecyo~=HdhA!hTq?BAHzql(_TdIIB4qW6JM*A&G$Go53Iaf+M5pi$4L0GvS+4 zO$QK{2%3o!G?_sy^S$K{?d#C$O*bCmIiWrIYxmr9K0=%Q>JeZ5y3_ZFJ7HwP+C6usW#0O~oT2NEC>)`w5hZ`^-h1*I(@Uvb)Y(F)0vDn`vr{!D&4#ehRwh zm3mM8zi)p`VxH0dFS+b{v5}O0YA$rSxaPA+MG4G7Ftg<4+4k+Z5|@4L+w(T8fmtrK zzbv*NWiLg-_NnnQnn=fb34Ui}`-JiN4E~7mf4~*E7aK7v zR7kk?1r>`2O4<&x7keaZ&$bumO4jzZ7w07e>$efCiQb_8;Y#3n1b6N?@^)KH-adxB zHSO<*F>5AV_aYbw*qhewxjilWj=!)j0v^`xt?k#8CLDm8&J5HNddpvFul;Hn`X+es zg?4k}t{GX5HRWr(Og8-7kG9WuteFyoeNIB~MXv4%o$Ob4E^JOeKao{af;99H45Jsa zE)AnEVgxmezR1v*F=r7YsA2R)P}(s1B1TZd=!*sh<1Oa4@FXIV^xjhUx&XJkJMV`o ziPT>ae%jVBMEvb%j2+xJgB6}@ns&*m9vT0hZl8%<@q*kGY}RNq!)~f)jBfx#ROVt6 zko|jITZ2*=$*fd>UBp|tc~h?O<}FLcW|#l`H*7>TkBl4O$7h1|xuxe=|J&6w;^h}` zLecoW;OOsDrPoT*vpGX*p;q{mA-iY9f11=Q6liz#$`DI$4v0>szcHDfiNR4nRm9-| zm>bxNbpl~`8CQam(Y1h^ zRuI)Q;=Rqcr=`l9l=A;a@W$&HqdG41GZTqd!URI}G36(VKP*rwpLvdokMt^D`bA0w z@26HUI$nY4-D*YCp1!)@QSgI;GvL=mN)>o}RY3Yk=1-mwe_Zh}Kf%bbo8gFHWbimK zMr8c0CN6spKY_5gD9GCs7{<=*LrGj-8MH5ueq#72^X*Lv!+GJWqDnS0qq9t>x}ltDXt31KPh0zS?>@9@m;Ua7$=ho!JL zy+pp3D-8PF@5KIQ;*ICg8S$Sw{c~E|kN)_ttWCN46$=$-8+VR+RfjHwzNb2wt=i50 zzJA_ba^C*)PP52mbh=*mxoe^0WAcOW)cn8hl|PjqKOz4a^)Kj^KULrPg#2gJ|Ak)p zQ|k{;9>|zqlc&kdS^n^3&x&QU(rV9-W^CVU^i~D=L(4o_HJm1ly!MBu7llho7`5uJ zsK7M@_ZN-?Zz=b}FnGZD?eaXQ_2s>;FBQSU7-!ig_B{CiKI`j?@BG$nH{Rh7gWKYq z+EwK7bp9enZ+Y;oetMxe%jRbRr=nw|;6n7Aauy)(_2|OVeqEt4=}G+@Tv4<0r^c9z zjcSaR{>|09Ro+c*dBwfU>rZhwBE^gA=gJM!AXDBqdX@Ly>STHOZh5yq^>4vB#hDQ^2QYMJHl zIi?Pl(BJ=GRYtIz0SqhCG%|4$P^xMne0Tp*?HRm5KenkJ4*-$yj3y0=)xJL3kAh9=sxO@B&#HfgsXw#*zXZmoZ9heQO#9>YzmLH9 znD&$DW7?nQw*P9?|0&zAhPd*mcl)1>x8KzNk@o-hN7^4mK2A~Z{3V19)eRiMbycod zE1)aqGuCK_b7Xw!pZ4Mf>GuS}+#o!?C{TQ)b^>x2y+Q$Zo^wU229j$f|#99o~Dcd7&GXLj9lFFZ1ANm^<2qb+sdwLSVqaCt<)VK zzm4dX+$TS~s+h{+ni1q9i;Hc^i*!){Z&?AmF?uIskBcXzS7juANt?5JrKc6wKBWc{ z9 zc47U&i$5r%;B6Jb;&n9_1&Uv{>VGJ#hx>-7GYP<(?GJpSG+On4R(NPl7Ab4Dld^Va zS^Wm9-kdoRb5nJW|BuLCO(%%_#dyPNx5qVkyLwtCWpTf=>&)uhZqBK$H+3hx39N=` z15_~$$IDnvNim;EKMBuF3r|Gm15=w|Vk3I}D+Z=@SyB0H#rQB>;we4LKP#$D)h1sF zRG9AZ9h+Fl_A+U!fiT;e|5`FC%eTZGHPV<8U-1M9;k7o`+A{U%?#Hz1F?Q>mW*}TV%&=Z}6v#dR_J75gK zuUid&L1T$>PjiYxtUo-_g?m&S?un^zYX?nlxF7HnBz(~ouHlcFOxT|l4Ce=ncU$%E z3Nx6pM|Su_P65};^<{dHj>9VciA-8BVQON`JoxiG`_!BhC}yWq{fz#g0#0|oMrNjd zWo5*_He2;Spm>7~VF@1Nu5)=Wa`pNxAkBVXdjgAs_FHW5l4p&dDPXYpn`u`4FiHtV zY72t)`%{X)z;0EQ8o8}tO7VgMtNup!YdT-kt@=CNuVsFi4JS7j)0D66cSXW^iFnPg zO{mk&C8B}wERXtLK6EtXi?f_dxRE~{02|eCFINiH!n07Drh3eUHQ%8^q3fz0r{>cJwd}F9XJrAz&;b*>qhElaG5(8jIX!tNXWKiuY&-i%mw4&ePIU>S ze5^~%;TW{2<2p6fQ@%@~F@{2eMIo!%i{ys$;qB?5v3sJ@NTzrjNk6`(A()HMK4+nPl070WXLQ2i+2^7 ztcIV)LWU9|d1Ez%39;MTIi>-s7mC(J?NRpUQA|;*)sO{ep3UWNKH$lZ{#G;1)id3H znSrpSebgg2Y8!h~Pv3y`6nl5qTlM~_P@=(AhXwm|?q^>w`2A{Di9a2R>I|Oe<0WCI zmSwWgZX?#z?(AIFj|q<6>$^ z-R)m}sr#?5VefCT4>Qi*h5}-5akimvQH;Gy{Ld$IbsO#%dz=0Md#{MI_w|1edjqOa zZ1{lF3D$^)V)J@4xW_oVn9VsbH@sb#A}dP^5ykF?mw;V*X+FZ8aVMx%us5Wy!r#zf zSw6#30Y^9>YA5d?tiYri_`D78 z%N3b{2wOr!%>`31etkJOvYqa)R>7Aq8deXQ({Bu`PybCXR@c!KE~}g2G-&5dN#Dy6 z-|$a`Cwe}F2!yZ9^D)XI)ZhEPd$#@}_87Fjlu&nSP#Vy6jgDPHjS?WVvDCCrjJf$McY?Yg;<-Snu!Sa3qW-U~iiP!7+? zn(hx@#w^?)Uc#rp$X|RSru7?zKHL8*DfGyDDSR^b7=@m1vk71NmR28p;Xpp%o*e_% zH^5imTkkUfqqPI)8)(|sMZ>G5yra35uzkGV0)o?cL<2s;+hVkpW z+)s$MM5Eve{~AmJf@Mk8NbCNSl+CIFCN+;sj1%EgzbmzeInoHBk_o}Ql|E5nE(Ywb99 zj+R~f3q#V{uO!J?do8N7+3{^X!YaYqJT7$^*`^Cezi} z)OW0@uhp%5H4?2cdN zQeEWHxK+p_dq2|XE1MGe7P|Qq;q)~pyTV>6Q!O0<2VP<89dZ9{_gsX?_<@P?4s7I{ zfj`FUqpF|(##H6BE8<77cK%(6ATpD^&Mq8(B072p9PZ9{Bjbn1i|kyRBtg8sZEm5! zzg+n)C!ezdtID;|wd4uL2#z_1zk6>rLvK0i*Ol1&{kBf&6NS-1Jv56GPD|Z;tohBS zw4RnyuUD5_7bwkwe&+zq&{0+Nm25SuX{C$Ueo?E0)KHhp#L&WtrC1NvDW7nJ5d#0;6t|6|S z=O206`I8%16c6+(@TUX@!{0=ix;{Tp{F+vU3IGu7tAn1z~t8yJoGl4{PazXt~kbYaWDNudYb*g6znr{ zK7WaA%;o^a8fK}HQRAE?zZ7}+;^q_lf?E9P7=k7tIPS=kl9HmD`@-YAfk>SvKv(tI zOPqjYPrzQ%6<`wxp=JroVufVTJ3qJzid4b5%EI`Z( zgw_j8kI$afJS_`=&q4K4{LGnF6BkC>YE3lZELBau3IJdIS{^6$xf}?3kh2 zp5zaN%d{=L45Uq(=MSd`)|bW7UNxPdoBZpAdB8Sw!je8|kyI%5A|}G&q)E$A1fL|G z9g^(gL(@Jx^pN|}W7CpAo-sG26ZxIYq&b_OMC6)L&zrJ@JchM7sI~V>@24g6Cl68a60(Xah;hv+PM`>BPO? z@U3WYI%pqve!)5Bkm1Q>8dGei<)%wkCi>GLF#y~|i(r7F#Cj^{2gTc)A8&8Lr))2R zJkj1iqkP2MD_;HN_9~ZYuk@98drg*q+TK55{QJMqUYtcFuIcpi)X!OrEY#@^Y0}5^ zg%B>kN#E z67fnINa=6>@a0liKGPLin3Y~Ti1{EB0Z*{_fYs1M?LE__tuP(gyZGfK0gshUNO#Xo zLP5bowM$CX#VA!jBMX)wvuZlrE%GxeGLpUTamGtZHg|jLehZb1%}AB^PWkuLls}E9 zM1`dqR$?zsuR)tL9Yj4rvc#1S_Y^vZ`!aF=7Q=Q@#Pw`3x@l5Apxkw9bmn*E<7h)V zfy>C%H=Q=K`ephTorNl%ds6M8is;Kfmh?q#Q(o-wrF!Db_gqz&B0rhm;o)!soo8U| z)HH0B_!^4UGP*)(jJN55u#cwW^w||EVTr}|Wf20}QbJf8@PXSz9$#J%_d9>&>R$Zf zE5bDzLi5ZI*9^yZljhK zid*W21;f6=KsdJ{)bRS8jP8$%NA^} zVF}KE!_`G{U8$`-=9`dSI|fsfY)JP8?aD&6)>xK`+pvZ;M@rMuZQq1w2Js1cgzu!< z8OS_@Dgp*&G&aenCg(X0nl>hH*^-d7ilr$iuf%pfBEAUUPX0GlL_Bvjhf|dOKzhBx zdglS==nSfNYJQzq-xWUuBhw(=>_RX#Fg9(4DYQDe9zR`H2y|y9U2ig&nJm0W6wpC% zhFCw@6Z;0N$$5O|#lG{-5FC-ofI7`E!Z%f<8j(%TXEWA{8+|C7AEtOZ_)& z_t}dK*=m02V$c|`UD`WY-*@eJF*I{RY)P8<#Pe&-Mel|?#4O?yTK^F~Il0o!4R%Nn z=MxN9(_KCp?>klkqb!Is$`rez@S}V}qb3+i#pc6-@S+5rRWn>7I$v)pgU+f9-k?Tf zK!VPl{~@>o;bkfO70anqvJ5$MdR#VP#D%}kC?i@WM!D)&scY&hQR!d{CC1KyOgBTJ z*k)9WZElgF>V1Fl=^C#;T!vJP35a0$LciU2O2fXIfnC1PC@<3ZAx%vpGeIX)Bc#J5 zGNei!qf!xt2rh7i^>9~MfBDBL!utD^g0PO;M2&`qyWyS7(dK z*Zs7)gl<+gpSG6p0re;O`JK-1bbc%Ntq7MPYA4M%v$@igz5G^#4w1tgBqgjsV-^Bw zK7A*|)4#{pe0)2(h#`s%JiTo@kFF*g_CrNbYl&l`f36A=cJ081t zvq~cZ!?$=#dUdG+btzX82g6@P68B;{M>tm3SzqRg=9G@pTX#AAgA_*pxy$I}M2xu; za9Ww@BE562P0hJ9krQ!WX2ku+_6FT|)2lc91`Ne|!_;_hm~MJNd_0WvfA88Sr`E2c zI#Rm93nKgU82cN|ul_%&M(klV)VioC49}bZq_GiZQX%~%wC6Mnzf7fh{pN)96<1A2 z50@3$lZw`tnT`Zn{$0K=NYOAJQN=Fb(`z8E_}*^@BEvsG0AGqRrmMf+J2x1BEU$rd5`BNBe04lfM@{vCihVuPXfbe)bg#OZJx@W|Gl+03gZn^oU6c zh|^m}MfIacY>h-bF092P5%I&J5+Zqvn>|*nFID=}^l7!stuJ zo5x_>S@P5P`jtQQwKVHTjR+&ReEQ=}{xDm1-2O-}%!mzarRK0$+3Y>Azu&9_LsA(F z8#uh?QWNN_2;MN+$oGn1_;zF@J=yj_mR`bt~n%K=C>&lr|cJswT!$BNKF%FRt=E&h`5=Rls;BlXKI7d~The zbXBDER>pl&PKk_bDJy1>u)f>O(T>V6>LVGf`ll%jtuo(NJlSJ4{DQAQc%U~BT9+Qn z{2!(l(KecN23YrNIuo5w>8_kCwPmnEKg!2=|K`f;IbRx+ckHmSH=Rp3rY^paneRN$ zlvN``iRm21*G8IpYCn1?Bi4^Z4-8chY6Sqg?Tdl;wvG{`ZPWK+Si_})ra0riA&-$d zq}e*BfcHRnDywQk0(Mk7du040fF>~WSRtqogczo=xaK+Gtw{*;oMC4`2%!v^G9}E5 zF`I!W-sH94qsje~1?D?nNhvVj+5A3T;ylw!Og8i^Ct@PY{tKo5w zs0|H0qF2kXnMzd|D|y0SpJ!7u_!KC7L^%>1Dt#RP8v zvX$s8s%gvo$C*ju5B4V$B@dX$_~*ci!4TL!@N`NOhiyq>J3ksR4KsLQ=L_4Mnxgqr zfEmWdYcU9r{B6YZrWt^7#A!xUl3=4hz0LYTvo==;dHd@Y;O5K850D@Dw@gWI4WzgF ztVdc{#kU@5@(q7cAU@LU8@}Dl#**^J`7DA&O6wiM8V$XMhBn{vO@t!t_$uv)UJCV+ z@+&gl{%*2y*{O{yX?GiEZj+4h?bu__OYlZ#nWmOtM}6m66EK^ADF~8B8hyiCe4umQ z6wy!1f>ZdakcZ-fCr2U!aNAlsgHK$F&u$arWS)GfI_+=xai!s#(FT|=r9gC-9E#kt z{@!%{*cOB6JJe<@vayBC=x73h^bD|8yKD*@h0!O<#*%aJ#+LvL-k2_Ka5xfbI7|3iT97|9rQ)7 zd>H_!S}^d(3UXIExG>t4$>|&pr?lmoL#8e1(MHAt$}?DUu@D)2 ziSAdkBjXQ85)_LD+@Ntul$l!z%=`%Rz1G>8DMd9(8fk7cG&73CJQEQF&KLe8KAyz< zXSGNbuumEPS-(1sOwnot%D^AIy1>Gn<%gf}KE#J?_5E2M~S-=O@<9`VZWboVWl8NB)D|J%OIxiT> zeB&YMhl{bVaedJ5D4~ZX2Rvlaom2uv+~P&ypTVQyotm?|Lbs+dkLw05>bcv00~Z^# zJ0rV%nt+@ny>Pe4AHln7VkF}-AY4|)gv9TQ%;*84N;14l+y;`J**k>udanqPqT`8L zI2DV&XhtbZDA;9I!!P&7FwsR-(!W}NB&GxzrRgl5oM|{vmCvn^7S`^+VTN}ZE_@oQ z%zQ`wHT12!>0AHcmE#9ulb#u%S6HXN;I5UlGLbfF!`Un4RoO@uXR8K&!+?>$xFJ_F zu}VbOyu!G2kR0)OG`dK>Gv~KzIB!PXbQa!EqTfjUO3Yvcwg0=M;09@@ zsojL2DY_fDd$vcfp=#&xANHDHB`S`$>%N1_L^drQ>X(C}-TsL+;|~ZgMY%mKX#d4~ zlSoUybUW-b-bLp78Sg6nl761~m8$?Ce{7$9niPT1S7Eq4bSFaqwV4SW?EwRM#!tr? zkLuz&=zyORcjQrn(L@_SjWWchf8;BP_wgQzwB2)|P3QK9a}o=k8uIDi7rTZNY%%oj z?9=sVN>q5v!(8*N=2Hhd3yQ~(*yAVr^0k_(C4^rQs-dk>9JsFGFmFh})O$jM-3Gp$}^QN-` zQ<*N)h}^ZzDc#`qiPu z4GAbF0TD^X0A40UFn}VckpKJhJ;4nIk0dNl-$e57ORr|y(>uYUoF|mMv3@u=FUFJm;l>lq@Ewl*Ui@Vo^Vqqt-pe}5 zy&u8MHh4d3EU(+R=pSLl#X#qR6pd+WZLLj@H%%+em#4@h^6a4H#EhniSz) zS|`8fue11?h9?|Mgc{4eKWUZ-@Ia$HULI_yYh3gY{j}@GwpgF|DEB4z@Bi$l{&)5N z3fSp~Z>t`3xt$VZG{j@B9r_2iS3~%7f|4_lglPrD>>%IRFgn|Vi!M*sVumw&^An?m zD5{}U_%4@}t}8EQiH&jbPML8imYj!RIz;SCPTbSavTo3Yt+T$FV?@P0JAK}t`>pmo zoPHE_Pj+>PCrcMuzcY^Q9sbH-{YeBs8Tr~;vAutMh;>3S-m<8Mv|E){*0T6_W9z`z z!ghI`xs}cUG8sRi-tF6JzfG6d;;t7r|8$L zRn}u%UYAdBJwDfT?0W2K{DjtHw;CE~Jr=^nez^6Rj#9ASdc^9#F7kgKVCRrY`Uh9P z!S_HL&N*=@hmEJ)A>-oR0;?QQw)M25$|JJz4b1Pa`wS}haIxfdu>~TOB0NlVj(us;-FJSa;QB?Eqz~LKApY8YXA>C# zZ7)WEN#5$&7Zs$xvW*O653z6cQIqaH=Qrke+j?9 zP_j2(wyx%H<>wZskIQa@zWL^!z(ysN847UbahP}SA5l}Jl;*{a65viQl8B9U3f^ygX>9)T>7&Csde znmuS;odJ$A=fYiIq*@GoJn0h!X#9tJeREyuS9lANs&K|%Qfdl63`f1!ksVXv82RN^ zE5uA`696kSND!l1%5QoKwkuP&OYdG?yeubsukJ=Yv7XDG(*xT_HATwqNTggZ zW2yW6#9!I?n#09>=RxCAesdBXNZ)P@)}yXe*&B;aQ9I&Rxg;Z$jxW;JC6sENbVa=R ztft^0-9>sDfOO9KPakWrUtf+PuT2^Jr@b(U>fTuYq$Ix$q^GYkk`rh$d^DgIH65@| zu9#j%>qYJ9rJPG^3TTgmfS=~)n7yrUrR(Kn<9|4PwwP3`Hw?x1!v4wSIbPV;-|ET= z3evw6PYsO2o%IoPhY2W`hxJ!ghUD=idvzE3aDS1qMq8HK=iUEhhs64IYH5>>4x}y| zb|+fpf5&VoF+pgd`v*EN<|C(AY6iu86m{YGD!VMV>~%S1t<-Pi(_sxi_dN<F)z5L&;5-r9~?wvs1rb);a05966V^JwYa z%to+nepAHDv3q9}{rrjJ@XP;3A35FtPqhJ}Yfv-VIh*)y!tENf)%D*gjMN}D-k`yK zoZXcLX}@DMMeM~eV8 zq(N=8SS-0MeHrDuuXl+(Yclk+eu>6#M<~5hyN#uoqlL|Wx##f=$n?U6WWF<2-(glC z)^hk$t;`m^GmaVQ5R#pi^KMeoFF)Y+#}Zy9bOzg_`3`N5c=D{$^Z``F-H+P#*wb%& zjLUA1zck1E{@dgGTtJZiB@N_2k5^Z%vC=~ukPvU%Eqp@Kc&1lhT;JD+ms$$#l=>Vq zCLb^NWu4x#4a@`gL~|@r2y1BiTL=64K)%{p{ExF$Es~+6pyz_-r0BSrbP%q01~Z_$ zgk~TBt=DZ{qtk!$bYI^SKcy;P8lS$kM%_h-p3s4-c#^wYs@0xXO&whRW64t{a8vbu zZ|r>rZ(5N+>2f!1cw_5IyZBZ5D*Zw(?}#PuE4|xK43xa(l4kGVT(3$NYi%ickzRT! ziN9D~=?um*BL;QTTF&4E&`*r~@bItpfQ(UBI-aUlXp|nPB_qZR25`rvl98`YBo9k= zpCbwS>hy)*)#!LaOqvl-g5Y?GrKcH2f7JDySuKvi=BXb-_Y(}D-KN!)Tc-7x%o1gy z+xW?wg6fyj59$}-vN^H!X(9z=$>cI*Q8xZCPUhMU3aiD>FMZV34+8f!gEa1Xr&|z^ z$8P)PpvolLir=mSMlNK3R>)fCGUr)lNoo2CW$N0JEYlykN+)gylng8$FOnTJQ9P@I#ex8x{9S= znXC21!!Ab5z-s4roqoVGh+m_;zi-&smKFbGTsrkT-rK23t zJ{V8#6JfNZ1= z;E3+kT}mgR#QM69^|bFU+ke+D6!eT6s_Hhws7RMs^8ML^s2fW;JSW!eZYmV>PtV$g zs*n!PW5RBD)LQ4$vE*9yEUs7yuZ5H0bC}kz7Nq|Qt)AZ@>_FcVpO1&+ixarOCh))T zHw-@TagNfkULnqohjB(IPJ~`XLA|uOAdfHq)vb1!P$elb?2ZD zS6lV|ciHy`Ll}i0$i8n^{?g3*&ESmGh26gd0@>fQpOi9^<;49jde8NQbiBBfTiZU* zX}L%}`okN-%M+nq!EhaYVUkm)ub{n5e`IJ!5WR4@YcIa^N#NVy`IkSW<+5Fi|1Fl9 zT{@3?KOT_3Zu0>3@J!2vN=npkD3|GYZmsZgA;W_e+1yPsa@5b_wO{ zG14^^q<=$}Y-pGDYmzi;^3VOME@L3sU7`LJeIUWTOeSNxI0<0aWo}&9Xud30LNs z2s7*Zw|@e>lmc`19p=Ir}4Pot^Rj!0jU#TngC=jJ=O`_}~mDhg`ooXNQlTZmmE>9^xx8#D1}u%agC z4oSs~eNeiJqCUO}W*wZ<e6rGz#C zP7Ab($&&Nv!+8bi|3nwb`Uv+C*AjXrEN=7dp!!A@pT3iBRH!WX~l^e3sAO+Ljc=Sv(F5HeS~RxB6C+|=6zE; z6Ztb%$?3s@5yXZ#M#c@28BZ3c(?836m=h8<$*~k@2A)R)OwXgK*bVnNTU)FkKVpKLoADWf}A{ZSq;L6o17H{(2gFM!8Ka9QzZx%*)@L3({tHldvlr2p?? zQy#kg18I2!G;K9 z5;jJg_&bB~9*bOs_FF8Gu+I2&%EVb&v3!){Vlkoz$KI5|1dGoln?9i0kIasIGjd(z z`oNFPP4gLmvGm`Ij?uTupM;Yp2M8q>xpLs(0{Rw65U)-aAHYkNV8ZSA&fr9fPDkKQ zdx?$Ghm@p$=}yz#Xb$pv{5e~gY>#D(fI-_j%Q~Co2VH;XevAG-lfK~C{&FcrEJx?N z3Oe+u>#FJ0p;+?&*vU}%R5wXnaksAfzB}G_cn^KDwJoNwAU%{12+hL)pijQZ3f*m^ zOAT%PCguP;elR@0!864;f0eTQK7KW&XLUbT<)4dk{r(xRJuhTO!~R?HdYY2bAGh)A z>yNkEJ~%d9-Jir*mFqP02>Da=oqrxQvz}WgEXgGm@GX+H`0cHxaD+wJ>hfn|5f^JA8H; zp|qca1^DZK-quIJxplEW#fR>xScrQd_J(T4DY90nT+T*=8^g;w?)qE2($M1cJUw?+ z@(q;&&wZU$n4UB%H*qw8+O5Lc*`CIVdIQW96u35_}1~bI{Z3p1h-Eieu(ZP zY5fI~p3s`4uQfhoo5+LHz7(X_+|HV@pI~f;_ROjtRGFGccSfJpwl zpXTI}D;yjxiPe9%oFi)G5`oTV44-!i(Q zzP2>UhSBl3YmiqQ2NKtzC!WQ9q#yfh@FZ~~aUwz~YF#Glr(}7{#xMhFUc;6CRw#Q; zEET42QY^8=I=&r_JE%-}6=*+Ib}dYT536Bu1u zRE&s)Bx!@o?xNidN0#P?&{O#>PH649tW5e-KSYnu8qLwjbvntbYXW=% zP`c7U$wAT8#?-LPQGrWeEVNY+GovE8mmTW_Y^EoGE)+hiBJD>5I4Z{X4*2P9KVkqS z@M(_V>{PkKXDBLm=i&;i%gx9J1l=uL!f6aoq$3_o-4ez~}5 zp3&#}@Y`bZH+qczBPk%OTKt z@fKt%jCr-VRqr; z5Y}RD*cy4^O_Eo25$$ZQUgeI@rY3GxZM18^Ya1-}i>=<&q0fCAW_0P31;AhS`~?jR zeUyxVKf>h&KemQNXU7N}sZDuHvOQuD-F|pkYs8z@QWhJ%s8GW&{LbNuF*+bLNMx_Q zY)0wgm+P;Z!L1aNW2utM@Eje*K>(a8QR+1HoHln={T<=5+M>lzkYfi^&-rS>qMn{# zWaMpmNi`lOvRUY^<%D`#WuMNOzsQvnIszs$pOKU;md#$QKpD=6ECXQyT^p2s^=|}T zFAsbyG^ z+#~q#H~14J_tCQ=pT)(?QXZ!DSK(ZLj(Nd16yVwaBy~CDTXy>lZ{=U|TqzUj{X8VG z^?bM3S zk8o*_>)>c8&=0L-+rxsS|9Pz-+P9+>o4>%9vK*VuzYvPJ>k=E&Vm!qO*x=TmbB;TN zza78#_*JkiPp9vlpYcaP*ZXrFzwp-#q;=OD+K9s^989mOX7i=K_eA=~Qe~tbnNGR% ztZVG~b9$bxXCO9~Oyi{E;BCq4B1qbMEA01x5QvLF8Yh&LG=LC|Uyz3~44rH8Uya`o z!}(JZ;U&k}D8vZdk$i^e3cVyFV^2Ax-}EEmI8u`@k{Ug}Zt{7SnOw)C2ofL0ex81a zLhPIiYroExG73;k9*3fDLlBz0D4u%!Vcz4(7MCo(^zmQl-K*32)&#O9YJa=`Sa-oTaDI!QPP{13pH`avJRSPlo% z`VZ!)aW2iipbh^CxEwI)`p6S^qkZK%$V6#T_uUK+6eCqK=DY;XLg-y+}bZ%ykSX zUjMit4=~k_F+yLXB0KZoAHEH{=qERL%YK*Sc>QYi(V$WG(q;3F42`D119)?)fJs9E$Y)R zbI;Z0cA5COgDxib3hs_Pzky4bp?fb3^Je~*Wm>B{nXlYN3qzk&3%a_!m_CUX=B?o4 z%&$+!k}q*IM>F%JIF{r(8PPzb>39D~Q(+UO-7qR=ww85Jw4c7ktZz&^+EQc+2Z{#?7p@r(7Q-UOv*lI|JkzP=)291>HyT#^=Uh-B*-4Y)k$K3ex*vJFMGuZglsrZ4xzq@+`*HqPhDa zvBtbZ^bj6~bbr^_*z9|hIg(@FpYqxCE>trNh3NIe*P*b|CECCsM-U4a5hCI4q$gCJ})J)%@P=lV`gh%5sIbh zgF_g^39zIBg38XBCG_Xnd44<-$e$O&QO1K;KxS>3alJUzLpIvn(&p z70V(f@jqs`)yUC04i{epqmsTCxjm!jH~-Co2?x9XhPtbASXsx=i`bqrJ7PIhqoAFs8Y zQ7o8WqZb??9P7sT>~uFqCNqd$_xp@77HC$lTe~V&A7<$mF{L^SW-it&+BXW)-!S`- zHY9-#dw!n26?u;J@%^U(>k+KbSw1T^TZ-Rz#h{`9Fw_ep8%uIF;Ldpx(DbGc$!Z3l zYj=5w5Bp+59n^yQ>+>}jdF_!=*&Y|tV>*Fnb@~k?;ePN5sKn~0mclNZF6dw*7wI8< zxPzb%^V?}KGre4#C3=UL7kxHSKcVL|e|;&kY!yWk^|z0%pInMU?>6z}(j%T{D#S$n z?+Tb;%g>kjm2n;r>p9vTKQB+DE*_M7o(7{F@^Jkn;IWx#ll!(*hK?kL+)#ktpzIGz z@9L7374Ba49;}*Z&rxT|)3aQ9be-7t<9x(Y(|KE0knM8!H^IQG9u6%!oxYCu&r+-3 z=h+n&JdEo83Po}!sGI=O-bz{7bVbSGL~0@@y7xzBMv@x3>8xhw?WJ#Ab6L-y2<~9@0Z-%`1n3i~9dTtz@!UfnLgw z@vqkW+@blwZt!kA`F4cU(N6^P61g%v9Xg?ks`-qZxgvCF3DRs{=);QoanDB?Y(?H+ zx7%P}Ev_u=MfVi3N!we@Xyb0u4#pc_9Ze>qtt?E_#%7JUOASSHrhdCk{i{rUZZph% zZZl*u_uRxBt-tv>y8x@f&Stn?bu)`kYb_&7c4!&s*Z@9h zk7=ze>{hQ{aO-dcHf~|t;1gJj2i#h8c*|abfaRHV240Ue`w^2PS5a?>V-j>Q8kZx2 zJzvf(IxLa?Lw-MNP? z!mahQH--%^=O(wQ@{*lF?T%RC?rd#TJGr%Y>o$kNZK}!r#3v4pNlw)PjvLT=(rX=9 z3G@&B>51U+7dh~l3ycE6Nb>0{OhQw}oxw)VY~RaQ1@QOL!KR}A=I3p0T0SluI{*Y^ zw)(L5k>O4)g#~;&TuZyNP|U&^6u;x3cz@ph+Ml~IDhv0=$E>d`+^vTE<@?Z3yxCj! zXZcX<`2CFjZRzXdo_wya1|UYWXXA=BWY0>_(SYeXmW&@b-&fk(8OFoh1eWmayE{1~Y(+U%`<5#-t$Z0VP{YMou&U0KKudbY6}1pNl@hq>!i z2)d7KaLr-%dAzVSQlHptGke&z0{YZmz_#LA*yKGn@z-c$Op31^^-PkB$9gL58H@96u8D-*Q4#W#L z&_f4?zQpycIMSFdjujrI&xSa&kQ-MdThnfb#Cs*RV2o29e}G~ne(^`;d5~nH@6lT zQBxyA2CYIZ4sd^)7_-f_v@@4K0dR9$+L;*B1g2Lb+c+~w6Po`MrfENL2%Q7rp9i7m zPPsfqv%7&^ zH137$zJ@#Hj$+dLfWiu{oGIjjq1Q$Wv?3I6gg|J;Ky1wV_?Qh~K?Af{;X8`3Zj?dG zLIYG~vw;JFzjrDN4`3ekRw|s0_R0ax#5*$K1KR*_sEv7Ngc6wtz5)WSpDAWr<5!Z!AQqOhd` zJoKLW(4clIz#-m|21hRp4Qw+GYG<()sWPucafmrBk_j%TENoHFY-rFiwfHPm4NM|S zUK1vuMNr{RIG^XOf4jkv&j$S>Q9V|}@iA{#7Cu`6p4Bj4a*b_tU3=AU=%_aFA=lcL zoYBU|Y|QW5miU;1m4zGCl3)&H<&pK8O+6U!eekAFJn)`lsGcLPUp^@U-q_#ck8*atTg?s9P$?`4Fn>bLh5H$=ZCt^d@Rg%g8QwyW2lxoEo&e_g z58@_v2<%@8E}U74jIc)y!-a{7dWHsJ!BmIVXw_%I91}&YleOMW-sG_9suqul!pR%0$(v_A#DU0HfcGS>P;=^=w- z6`Jd9Nl-OceiJ=>&(Vz!BB=W`te|s7P!BtT>Ndm#m*Zm)La`{6x(qQE!q-oqO9JLEg9-qLWJ@YeteQ=1P}G|xXH+B`mmVJCEkBh^o&~p4Q)i_ReFjZSl}xvtI5ibL z^Jpy8tBb`RXh@V1#o&Rb$_vtHH!w=XQqi-I23cDo-UCh1f;Q(&G`9lH=+eW(z2)c9 z{3C+~bqzhl$f@q2HA~*F zrs2vt*W5peX8&@Z#}Jii*MGnhxpTW3Z;&=tCKWT({YNP zzyUnUb%>5tXrLsjxvEyZT50vViFAJ!tSJ4rQVg{d!lOy*Y^Lii-YG?>85=m}fD!rU zpzjC)i>9TDex!wuj^(3d>x&<2~T_3x7A=tZnD&Hy-MYg${&> z`?g~+c|+o%12I)@<>itB2B%4NYl2clDGNHLx!zRwlD!puc?rC zC$Pv=&>B`X=nrKUG>~tLsgYrKbE^aI%IbL4(6-JuNwgKfS*C}C%+fp^WbC4pGPUGd z;7n=SJL-d!Cg0Y^tKLa5ln*uSr|@SJ$yGE^g?Xj+Gk-NrM#BX!tJ72#TvRg}jil-Y z3XELl3fQRDQh*F@K$zrhDY+`*t(g$@)|{H$x8zlA4LGhPJG5g8_eGOikcKSr)#4?u zDluBPCA1IU(&YNa?o%S|yXP+1(KTFX`J6-1!uGkzqT5rkP=v)@`8%v#g}3I?FpXau zj^c*lHx;x``HJK= zm2jl2p>__C5j(L=ze~nr3*S zjH4u_+*t}Y2Cmj2!!X!;FVA?E_Er>fW=dE-R)+J~15ZVfa_ZJ%=cQ4|z+4~E$I7}@ zIa;vQtD8@jA$mR!rXNBtAG6^nxwH+;{mNqwuzG~)Uwo_!#16b^n+UHTA@>}ytQk!I z7Fj-~&yGKX?~5j5RH{x)D%Q`9kz#h3b{E^!$KwN{aA8YF4;!{eD$;}zBPIr7G63D-i_o2# zeQK48jsTrX3d&U4>QFl!dhf7z&DAGPdvI&`tkIrb(4LaN1dR-;7>jS@)OFxn zD>d=DM5w7UB%&bF!hppf)K=!vB21OlX;Lc&X|RX%C+$}N#un@`T15V|oLWp34OVxN zJWL>B-4G^M1y7kKZpfQv}o}(|G*myCxC-Ckwyas zS+;0K8X@Ln(z&Cm&0*cncl#3b32KEU_d$@T(l3Sh=?J(LO=sC1YEMj@Xw|kOAMi##$DlMQ9E>j zD`3PBhNzPvz#@qlUJtq-?5+6}2=~)bsGP&{NQeRPgYaz)2v!E)Mhdq^L(LV*tr=RD z$*L&a8cD95l$tm>lI(5VI~euSsdGhVA(>sGrpI4+Gv9?xUhvLThR|D0BnB-DiQAj8q^fs&F%b~oEAP4k!zt7R^EcWU0{#1B| zsPd_ey9eizQLpB3Xv1g}J8XLqRwrbLs8k`Wd-IK^f!;)LowTu2 z$)blHwub^Lc8sk|zJ`)$CIon!|(1Mrl2@`2`jn%$1VFOXSF~UbWDE4~ZE$ zm4pD*X9ZYjfCMa)k`SY^r9~Kk1`)gylalU;97`CWAz3NudRJfoDQSvVr>h~7`%p%t zN`Bz2`4S{z(%=DQrhzcFlbKpfW=aP#li}aSjLgI~J%w+mVaZIF4O`kUn9UUsp{&@{ zczmwEksUtpM-ZC?A1i+bpy(4I_^BguF>3~GeF#}5ymmqdO4l5FoVOoP%mEC3FTSZ=9N0LkG<6NGY`1g?wc$@xat7H^Z^1?}KMOVwTKX<~ zW3Y)hEhf95jaa7bG&MDDiit1NQza+C5+=%?NA_rP0?LyW1v|aEMnn*F6^XKE$!T=b zOjAWcyI1#5er8qQ5Ah-oL5wChTT}9ty zYA9ZJ=yeb3r>HhCnkW9uMhOMloQ;0Tc7V7z+obG@`4}P$=^11TGtT#wQlP*pbf6D>Q3x-tTy)T%6UTy~e&k{vSe_YQRfBKvY!Zpvb6r)6`Vh zlxT@m(J)T3BwM0m8&X&I8SGDhVgT!w4~G9*1h-^ht9EEP53$r)UyO%(NI#8#mlPyI z;A71MKnQ&sL6A-KduS@2jCwu5`)f;-+uczl(5MC{pr?*L~Mr~G&w{z_o z%u{c15<#JJ9mP7+6x%Zm;zT}_NKC&;P_PnJJ5+Ha1w>;67nJWM9THK6EFrC<-+`AY zNf=Q&uub27O|KjE#3GxNqJC8iynsVmfy*#DC0OJYIH5OQr=ZtW7At`y!|U5V!Gds^ z^38~odc=y+dFr??2=>&FwcEqYnTC*7twN7v9znl-S`c=W8R?{ZNLBO-u;^r15|4V+ zq6i-l!p`y~VU3GLKAwl@a>UQc}N6J@xSRwB#hv2>97byQysyuDjFKjc^>9Je-d4SFZU$~ zQ@>f4qPGv$mRtE}V#VkX*P*P5kH`uXHa}AL6}CWop}&`nuq55EqB(5)m>nBPutDD# zMy?r^qi+o48((x7l_T;@XkF#28xt%2S!@w4|ACu1Jtuw;WPHrtns~#?b_Xj9;g@)m z4D^$Y-m+?pteI|R^^^!-QdGup*~n+kJZ zt_rg`TG$(@0|l?7Mey$}L8dgAjnRS@Lei1LSK$)oj^N371a(S`3Ie7{S{SN)$qGyW zNkY8BUgeFwvD6i?lz>y%r*r^+Y_zn?u@zDwieHe?3Jkc&6qh?}FFIKYoH}2Ys**`0 zf?*6PfCA@(u7u-_7VYAFgSZZ7&Jsm}xYHhlQ>cEv!~-l5)w5}zWYCw0Sruo@6Q#c( zWqt#h;Rt^clmPb%n_}|4oO`d8F8qt4M4eJw~Z>yeBq_sTtysCl+l%aYmO}5DT{MTG*p6peh z>N%j&+mx|IrNP!P7-}1Q&HI}n6%rjW2CEatD=TFA&dtu>DzqnM_d(nlhQU}U{TiiypXj>xm z0th2Ac5Ni}hjyfG`9#iPO-qe?XnLv?W=;pWYQNxp8IB2!?>FslB}@{kVeaG}cO8SE zm$0MQ;fN39##41TV3*9es8PZbO0P0T##K<% zoSCZHM|xJb49_GfzMAhkgC-4Fb8sk}+a_7cSWqqQ25;^%UpsPseMMvZV=2U-qi>Mr*14DFc~voV)5(%08}2~MvRAVlO$c> z1i0cB1lI$zE)K{g`(=cboCguCJ)qG{`<*a_#$FkB-=j8wY`T$y0(Pj}TO_jQv2{PG z>{pc5&8zg$JPNk0Q4>)PyGE(;x^)Gp(%uq(Mk#TPUMJWz_^?xOGq2VgDY(^MkGf!p zty3(Ul8@3qvXEAgBedq7`chUSu3F-HS(Q$vT{(PJ+@KUA)~Fap<-7L8p{kO$B^B5$ z7>ZBhf!>);omtP>VbrSvq1S%q=J8q9kh=Pqt2=}TK@|JFs*RFEzv4>Tn$x;z%{NGE zUUZerxJ!4w7g@RsX7L_VKy8VJ+HkFcTinORD`@{GOUE0`M2-n!T7_HBs3&8PiwEO`VNSPanZWUDz^GC_2&EQW4_) z16a*wbmUip03yi)jeCbg8aeFm>*;riG1)FX{Z*!?@AX#xmE$=Vis!sWdKz!dcft$^ z7E=S-&Va6g^~^j6>5*iQQ{3B#G@xC@{l>FPT8m@G11)4c{%|58w&e*7=Q$#+*lS}g*vFgTe&%4R_U^ILNy~;s7oDV>Qv#_YvE00Wj9yafQvO9xy$g`*tRIM z=PV`~UIPXX6z}F!V5`;TYvD74Gqq5(5CW#L_1aR&QuYBuYw(r$r^$yW$F`0V|0*%N z=gIHXXS)LjU~!SI$I9=QY07+nQu-BC`QhcL@)OGkn?j%W+4lr2uax~ud|p^(mIN6Y z4ZjUMiX{jyid;yQnPx}c%G%(u0{DPx5+Z=g`v(m_V;lfVyHE4wBAWmdbS9AspK%2+ zdGh6as5sf?`;G*S0&DnSI73U&&uHO#KC|AUc_dO(L$;pOE?I#I&Ra8XC7X5TilZ#( z%A?0NnB47lW_H-SLwu#fcdy7KM+-YLc*)@-b6NrAL_-~^k{Qv^HfE=BH`@;Il)Q?m z&%9$g<|b!OC&Gg{UwF&D#p+m8h`SkXCVq*=ukeQ&KW8VCt<1sM1k_Cx5pbz7L^xed zh%~sT96R^Xj5i1ZrN6t{qUuz}Hkr-X8VNO7bd0&V{+~?Ol4x=h?N40Je2u%Cr`b!6 zG9vb| ziY$5A88~-oADLT6;Vzq7AA<^Y`ZupwFi zeWd!NMi?-HqK(Nk+U9U$A`-Izmm?X~6?1wjF+QeiCE2(jWFg!H0+B*@m@fP4jQ^t3 zt_J>#P4Q5#0n1J7uh<(50+!)7$oXm~U^9BuS+)*To z>v@42qb0stBo5K@a@`n5IyXjk6o^_`SvN+I!I>-}h;T-(8)IJk88=3yf)b02C-uA> zH^za!5V$e&2@F;CiGFU3pUhXxsp1+&P(H95qrS3ahkdK7h~7gsJWuWt%v{!uairWB znITP3t{Wrg=Y6+G^Cir@9pk@P^b)>p!Sx={?Gg%J`3ok&Y4 zW#3s5-sZo|AJxK629`C=n3P_8hIF-rfy;CUhIoX)rIWykF^hAopv-!F)`|RJ53?%D zDhYzHkMalnHs8#IhIsfx>qZx_#9@u2mSp-KDF&;%m8s8xfB1mDsiNw=P?og@(NIgy zre^J#mCtimY)zQAyo2DOh~ByGilEMO9~kZE zjeecWqB${E$X`)(gwPJY+ajea&12E`X{1w7bLOcb5o%0GFf&C!#h}U%w8k0N_&easiA_H4QP*R;;tA3@w_n0zyYCG$kq}TB((Gizj*oaIsI!ED7NQS_GcxV0mI3M@>m- zBc{3;DjmIrj=FZ_tZ3etj>xf|)X|q20n28EL{SCAs!F?p46!dV*x9l|m`&>mKsW%} zG?*s3`N!1wR$?Hj3aVJ813RbhJlklWIe}7HDkPbtrA9NonUP8oG&fk&rI3*uV<^v! z(a>&|_&GnperPw>jj>~8jYsQW7WZ#W3OBm!w8MrahgQ0#8&}j5?WBl*$1QfT)Te;K`^~k`kjOvAmB}5OJ zYXZ8RR?eZmjw}W=7*|H?`OYGrHV3YZCz~NMOPaH;j3)nP&5zc;5$F%_XDrF{XKXX3 z2!5)|u?CnrP5yPOli_wu{^g*n&U5t3f)PSxF~dx`ES&77wr<92aR?>j&)71sKcnd@ zI=erMxo@u7`!*mkIcG-XWAkUck`$cXrU(9vE6ty=Jdmv9&iG?qC>}BCDsX4)9>N~I zrAI!FUY`!#n#nCIULjhUBjW+~oKVWkuMU3t3vB*4a+au$<@ztOlfefdc=Ope zN?=k-2iw*VC1}UoJ~%o+DUvB}$dNy?NlI{nD)8`>P#o0Nkcbnr++HVHG-Lq53A9M_ zQYbm5-Vr+qXF?Gsd?95C`5eS{M*bSc=WL4cC;-cdt9e7}F9fHyjN$zXh3&Y+GWv~qnUmxYHH;VHqD9+_w z?)x`R&GB#C=(pII{mw?Xa3AZSM@1^w;iQ80XlUc{KeA}bV0mB2zY#Syh=1ycWN&i4 z!<)yIa0+|fIjw#I4p?+bSbF5+`8S5mztJYhM~w1sl(VL#1;S^vurcs&969$~=;e|f zy}jn;;QKeWXZ;&nyU!cgzj0In!~)kwL2Ku+vU8b`Oz&^2Q!Md&>sk z!f>WJ9`q{dT~kWI79A3Bx5}*?=Wi#Upot2UQj5%eaVOvmdnA<wAg6f55j=rKl(zqSfoE&B9F-0<1NkyB)yw_|NKg!hCbijr> z@y5x7fjAgQfX3bFDXE^ z=DKI@?Exv+7iiKPCry#6wMshEQ3X1N6pSl|8Cs2a2t;H?HW^1exl!&;aqFxdE-Bg* zUX?sNoO1^=>;S^tRm>WV3!H%qt!!p`oTR&*G!9>pK^v|+a#J-LV*UdLm=Fz}v=X^s zMdcLZ;JA;XPR{*p(6-u9pPW0QwId%zK5&F;wn?hAeJNv2(Ho6F0A+Q7OaYyCfvY8g zMcsXj$%HTG^r&osAr)d)SteB*213=66Eplis4|W_55Y=He zXfI;YS=g;Px+=T%4(!%DA%q-w&e*Mcv0F>2h%6OjOT5wP?717Ej~F~<+STJ!-&hS{ zYLxMBBcDC&zEbrrpB91=7GSyHR5mhHjP1@iF${9Unj5 z#5E-G6dgbqn*JgDABB2u@MaSrSnF-_(}(qk{FsBtctxIU+ybnR7C+xBa(=E?B=%fi z@3~LGYfV1V<&eHBq_GSz3TZJ6xI&6qFn7qn2a*#Y@;LMs9P#}h*Wrm6_&-ih6>*CD zEa(3Ss`WU;jqlS*f&b%L$0amZhPv_ds3<&;IS8RM+|3olRIJX&~(2GepZAwWNiFIrE9#5Xx+(pu&2f`gSm}iDv*VN15z|Zj}*S zLv-+ggmpGC+ZHryxs0QoTJ{RgkjPfFUd=wMz$9Mxw{ZDFfZrN18w9Wc!NC;GiBySB zjKo5Xpo-|&mef4w2RQ^*4P5Y7_(7hjYM-Z?xUZq->j56BLd@A`^;8M>^*RjMEu5F< zgK}!*+&X1pv)F@h8MX&hw8(VQH!|cH>lVam+6>2(-b>66fmk` zKncdhhyE7YtThX|+@#r9)-a!t93y^;Z2PY42ryLizz$FeLXX-vB^_E9^cBBtJe7lH zH!9mkDZW(u-*fA9r6$>Oj@#3y9S;hI6|lj!+YNKkO{TEdb(8k2oBDcA z-;U`P||a z?leXmQL+{G@g=MyYinGybcRQTK4nKRMj23%Ojy$%@CO_-vJD=e ze=;n~D8qnv(kJu#*B*o*3i?dkR^SHAX)wy+>vaf7ew{i5MA$bS0sp%8wd8oM`xI^JO@e;^+I zsm>TrYZ^%O`oY5BE4v*3JxP898DCESkWsxI`x(HO(>Vv4gJ-@Ur}Z@O<77o#&jnd- ziFQgUmp4pv<*a^2BVm0)Lb4~cJQk9{GjGnU9fMJYeQU*eIYFZPxo)aN*1fS`rpVHR zL!f4+s&f4N$MEmWOo;RE8~|*6O=aGsn2V#5=HT5C& z!}xpJcLLq2@9&xS?GNkknctxNJ@c9?%=mleB?tbVO3d-@ImX}9^Zh-urmg=5f6u(0 z6*f74PfN^N=d%8u`57PH-&6HLCAt2d0KM(|NTKiVnb)ISe@|uP%vVKWj=yKWO1{6R ztFcS_%IW)e1^%A>a*p-)Bpk5$d)nkhe$5| z^x&YShdpokpOS2WNpI_f2)sI>!G_~ie_`*-v!E6WH(}7~j3>8BsjkhP@84Te}Uskm>Wo-e?y~VIS{qgXg@BF!@cDXKy*N~BM4FE0?Ee{BIDgME=V!%a;}IhE;XP%0_vtSnvX@Io267IY{_901xo z*L9tA8o6|E;x))iyCzXuBXMZ>aLFQQip4 z8skp0t9c$#c82^9}?1;WcD1e-6;( zJbJ5(CiCH)qC&4b~logVue>)h|YqV#O5|aG~IA&MWa` zPaKf<2qIS^b)epvhqy_Js5d9G5vA)< znVa_U$rg%`GY2?-4#xdCw%-xyI0(s11MpAt4)~Ri$U37)&34zwLiv~3r`1v>m}|)^{ni7_~ixQw2w}pjkc93r;5ntBU&A~pl zm*+6!3h6KhEzBGgG?JxsOM#B-u>gLeboL7mvi}z%th#LK$T+2Xt`5p2H!FPN2nvve ziol_++{6?uXe|&rDDnXDLjIxP-(C@F;c3Jah1ept0H;|%4Yz_Ca2wLSgJi~G|5uj} zb|t3{?pG8nLD3NCA*c+##A4 zTy~fqkj**A^C8myI9^`A^a%~QhfH$t54|dh@FzUEg5x&4Orl#e{Dm=O#Npk=FJ%0d z96mC>_RH81b$%(iQHM5GLPO0ds8v2eIQ&c{A)YFU;RFC`h*0+2&PBH3V}&Oi`sI)JzO+?!q$nGvFB)zNzP*N&m=0v|sJCFHsP zP=eBn^w%h?5ii$a(N?`HbBJv?6T(CDP$EvY)6LHx9?t2 zGThDwAwp(pU(RC$kS*uWqViB^zZDk&B{bXOSJozyO%ocpg8MspgfrWW;76dV;C%A$ zFxL*O+{SGBo*m|QG0_ODi%xY(DlEn7a3iCYsUn!GZ2T#iU5HGz!>fB6nwQ~D9pQ8_ zC${^fap}8&{nuT?fc?vYZ_&lHz7 z4#g^kO8g9>!@}xRjBSdfuEh<3JvRnuXIq@Re~TF4v;0Fnqzs`0HbM9v@M;Hkq``;B z&dg0_{F)>th^=~>{#dN?gKSzyP%&S)Io-yC(8*1>kW?RaJ6GJqf=-n+?&Sy*1$8}Q zAvGATRNo@8bKvid+{(glFO;k&vu&;@>Y*Wl8T0~Q^T3t&t)Ng(GpBrF>!b#wa}cz#;Q8y zK?}X!>II+$Rk$qp9gnd(j!nQ25rOmTg{WQHKMTpzlXd4 z)+rwu5-xQ3rzOYd1=`kmWp%7mv8j+B?8sqQy1 zm6d7X>np;Zj;zMPXq&R%&cp|I^q6=&t=(^9Q*!Zmup|kK5sD|r?992AJj*j1%2|H@ zVW{MSMiT&JUCxmU!ehAJJE__Zc2IvCB2)?|@!oxVENjq{Lng`R%6_DOM840-H18au-dclEKz*~s%l~M{Z z#N|75N65g*7=})Dc!Cc3g>~Lx9$eDAcU*ZILJ~M4gRxy60`grb3&TQ%ZgBzvy~+_w zK&FpC{LoXux>%T%`yfBaR_s)HcMT9?1&pfuX+W5t`Dyzs&Ow(>j)lxAYhuoMmFr0J zS41oGF4Bsdd4k<=>IgR9&8J(Eo4S|2Dq%-hRSN=Y&aNLkAju0377)H-IE^r$ofd$_ zBny9Cm~X0Gq52YhDgmSgeZ0+)aZzHO@HDe#hmlxzTTmg_3WEaSY`!SJFNr0>*w7{w z_vSoJ8N>3LQali3K2podgH+6UU9;UmvdE*Xef}b^$@GWwww6Rq@s1!~9YM^JE4Oq>3l*?OLA!6_#X7qs45EL6 zg_21K?M{OW3uhLg)e8v?w;H5!Z72lxo1i}n?eR;Y?Wu_i1P*(LlpD&QFq@Sf8>z$l6m5n@Od1UMzL-8P*4H_3%XMnoy|OMOO$) z=6p2g5%FP4lHfS2Czfk!r}Txm$!PV=@;-|uab;*dX0gbMnIU4^Hb8{eF5Z~a9mdMY z7vZA8wZ?}prz7#y#ivsLR0LJmi`2v!yblUGvx=9J^5j0ghnO>)&*9^^dLjp_YWU@| z1W?ej_7P8k+0f_1d7pn`7UB?mM{c}?J0PWj{ygV?Cl@baHzLM|kC*T-)RGQ8bH7tF zWZcC|SVb0O+{H^c%8P|cFad^e31)?HeD~|%EvP0=I>oT3E=t0}g9Z5jBI^AAb9@B4 zh{q229sFOjk2mwfGAACnT5whe%fFo;q5yBW4nXs2_7^B!blz1m((|;^-akG+ z;>SlQq`Ci5@e%%|6@4Vwi{!1VK`-=3M%b6OE6cN-UHpJe2lC;v;Bz_(1>o z2qf#Q(sAM={N7HfWSr{;q}yNz_CT!YvGEbOiSS_Kjsl&k=^JFx5x7IHqw&=Od0q4k z$_)$hl+2Yng=8_e6;ums);8fw1GxGa(sgk zbRrwyKyUx^;v0N#t)mxfUqV>4E1CY6#y8NCNgnb0AP>to^#)OS;uOo+%eqjv$+dd4jY^uFe;~XGtfxem{mL|akAqxVsDWVvV z&i$H5sH#s;gKz~SkgfuHnhjNum8-JK%a0nbfNpkViL8PZsng5M?O*!Tp+fg~ey?rmTJCi2P0BY4D2#P1uA;EhLTvCI=K9>JGiFuL^L8jnB|`Jv(w z7?QW?M|JDs5eTJ!_;>_}BRTO1B(v-ms)v428`p4dtsov9bRqi7lmLSSQWlJFA9O0%4uC82((NvWbR6Mx{Crv2Che@eq%PV51pzzoLB6EA|W13A)#3pwz9@djK|){X@muo=n9 zT$xA%h0N6WRy#GAi88PTLycVw*V=uVq6`G`gY3@*etZEJTA;uEnL80mKUzS6U9kB5 zY|zdUvz`pIo!(Ew@Hn^OxFke(n{GXT<$0F1mHQUE97Vd*+~|HDUf(`ee-p$L0Ooe` z50g$dl7Q4Za)GoH4k)yb6HlOn5_U`oc|>j!?o<-WZ;l3HuC_~vEEYQobQlx3avkU3 zcrz!;gxKa==*xrZdl#?h+1Z$iU8dmRoc7?sV%Wpp`CMHO>Ed>DMxVnm?hu0=c0u-0 zjvcJiSuuw+oh%?93=FagAmC2S*?E=S>JVbTA5GsiXl>Y8z0RNw5U;B)g@2FEyNI&z z4OgS)P17iKkXiGViYk(T0{`35I-Ql{dICl2G3Am3HiTmjpIW2Y{TK$p*QGhSvJ0On{_aN10O z07#i;595m_nx&G7h_;v!Rk4#*I9{-#X2H|(Bn(nk&esS%MW(2(xdLz?3TR|;a^eVB zi`~@Wh$;(g?dYS{Hs7;8`Edl)jvq(BZ;5gSLW;Ua=o(rPa9bP!09#5aO6dHXL6w~g zRRi=Q&6rHcG0jzt{2c^@Gy||na%GG<_k_Cyf4azUC#!Uok{?IFARKd+iz9G=a-6cu zi6a0c66fEjksn6@AXK2koHzoc=+vK!Bha%kD~@Qp$zy{SMaE7nj=(ku*!#v25R0dQ z7RMTcC;}f4P+%YZU?5f4IHlT?gQ(_BisBDC{RBDm;|chZ4Ge8wEP>C9-g+NCmcYmE zlkwP&K>L02!wC5ICw;*G35A%dU|D_nqFIpv*U=O<7qvav4w z!oQ1acPI1h5T&-g9J#AMb1GT9?1nrMmr?g6k$U=jzfdY}6h^p+CP3nauPKp-q1!Fj z$Qk?B&SrC!p1ZXXqz0yb%f$;YXXqeEs4iMna8>viA}TG?L2kvNsWNs0_CO&6Ohxi0 zv0sJzBAtO14zJ`5c;Dx<@{7AHU`9s50Ekq~iCoB-iiL&Wi+VB=GcbmGfFGyOYuoF;(HXq2R?~6cpp)JckAaXLk`)#}cO|L!Ky_n=*OGtMQTwdq5H}F@5%v)d3J)UpUEek! zKT$r*5JGfZ(F5F9CAEm>v(GXPJ9}<7x&|MH)py^;U`eSxs;bBwCP5kh_mt9^apzZ> z<@G>8LaO#z87LT7@L6DARZ6ju9N4+5y zS`di?Ue57N8m=K1riuQtoQ%c3nOTx`u1B2Ux0C&vjbO%Y&^Fen@nV@7_E}`HW@2XD z06~5>Hd?aju%Wuq5Hvs|aX|wZK=2858xe~d8`Ucb0gmydyVeZLq2U@ZX?{R5@|G4> zup3R8#F{oCivfZG2v79z&w>FQ!Fs|JoAO<7EBTjMvVa_HI%iQvX6YXc;Ezy-4IB)B z&B9K+?PX#C_;CT?fMm@jNY(pA1wa`aoTf()gKC3Tg2U#%YCq_>(||~#%83VnBQ7a2 zplByZdi;Q6^uz-=39bkZv|liQA3BcsBL@TM*Y~_$`+ZLKN;M=PEI?JQZrhmD_Y;o; za1u^*;~UgaZV-S?=%ASRPa+6_^h>rTy2+`)^*FmEW+=}aTyXv$n!>;oF#N=p!_NPo zgrien7|1{SpX=v*LVjujKmW|X=+!m2kUpA zQ+~b!)WDpQd$xZBUi(?-%O33iS%3dD7ndT@?>?s-BMmq8a-u@Y&A?jJ|73rTza0G? z_&%q+29vvi);*c_{GCnE*dVwr#v|yDENtZPp#S~*OA>2EAt~0ZbgMmp1B9{Og5S|B0B^Y-Sh{u&55)q!uySp%=+_o^CaG~ zP#_?gxxYD2ZXC{IOctPZe-Z9!b~wpFRmM*)aQW7K<9?_DOHyne zITYu>+=qFj|0Rw52@`~}O)pK;=}er?M3Z43R&{<@of7@efmi!%Jb5Vjtc+k6u-+gM z|3U#Bl#ivt8(E86N5)g(6|u5r@1B=PjU*8cZ|lTH&+$$)OyGr@O~o94)uCYR-@N0J zA2<}?p@4rga<30)^qSWTJ~nvGO;SO_lxNU~I}F?kk6@diY~7;oqU2+*Y~)5jkU&_s zt+wy}MzUl@YDTE+`Pyr}HJ9Q(vam>DV*R|CE5c>#YRkb3#pISayzq@=bVb41{tooa zXtTHG&Su(uhjt^$lDh-P_?NZ+(F=QlED!bI5?vJ2Y0y5Aw$sq;Ebl^0C(`WU*qjQx_iGyC7o zdHWAG8{GSxCUKM3{8TWBaHQ4k>_)vaxtlGY$<5&B%pQ!DH7)*oE)}#%j&N|iE~F7A z+k*kcLd~3Y0pP9-!&@Z`_D*p>mxlRu+aY{^%0J-JIkdbj2=)=)LYkrC?Fy(Q}wR(nqSiT6Fj=QDB?A*6Hq+K z%gs7+=OS@>&0ADtv)8;`xu!l4zQ(=5UCrPl@~43{6+jo8g{2`85IX0&8;W%laoMf# zHIq^o+l7&lvcq0o2a6U-z5_r#r}Z;{Qbau#;W`#%m;%rxLR)$Ll>52HfBiJq22$&4 z7H7yelHpY;4zTFvgC(@0%Ix;ZMN8KWrUAf84O|15*{}b8Ep9_OO+;4#a))av2L1{LrIg&JXd5VuXbqAX=s6>9AQ&RDa&vL&Tu!^S)WY<38rL|8f_)ERUV_ z_%i-`J*1{IxvrIO*IwyO)Diw@064 zBp8vu)`&d08_jqphh)*(P%QC^_&d4k?M^Pcnm|Yqd+Yq{7vuZWl{~!OhO7Q}%N=6= zmYWMu5B5GonAhUr^d0Dk3TwpS*_MP1<11-nI*RUrfBGJhvmQ|6LCa(8k))<~9a z(&74gyY{Ln6P*cp>?Y+o!w1_Y%C>VIGsx4qj^Di`;#s;Oiz_kz=pthj=X{?MvuBY; z2Hx|u7|;`T0|+SHCL%%3e084z2+vpK2ir<+@rdascy?x)IQiS(f5l2&&V~p^j2SE3 z;!$Bsl=ICO@ctgxdEnZrUs_k@*Q*nY@f}#t`jc>@?!fvaFwb$^;v-~f=fWMgSZa;0 z`O%~alSp+}eP~55+{Xb6CYzV7LVGrGzJm8zShsdhxjd>`q@~YClFN-AmZ2RgdxJ&S zeIKPDJ2P7CU)oF|U74l((!azV=wBv~M|W3z`3-(+`$iQ>->a=mlK7xJ9U;BV z%Zig=3dxrhb;iJ*Ht>%nicG4i{Y#2iYx-?ZD}I8@v=C;ruk(EtM$!d|%w`sB+sR%{ z)J0i#tc8pUoUa7(Th53$6bn_+&OC5tmkdpEq5Y#9JmwG_~`BSuC2cpDj@M7QM6LGZ9X5 ztljLcS^nLNLzz>yX4z=_nWbB`h>wRBP15~PO_?fN6Y~GaC^Ig>{9Tq6~EMY&=H;j^|*w@A$p zWHf)f$Q03o)3ltY0xl+5qQzo(|5T9udtlA`oFk;fKDYNboKV3EW2%@t3t#bSPZ&-U z*wakL0a;u~5M!8P^4jW?G?DO7jEin55%)KJMbCE;rfb2CtOCL>bmPgFiew{5^kzc1 zSQU0+hMi=I>gzHV3L!zzuT)aeH12h*VZN|vROKg;C|vv%EG{=w&pAHq(vuA=_(T{g z-Wok;g>xhMoK+Qtm=QA&}t#!Mm6 zewZTJp>1jxM*y9EX+QrYvX6(%o}eDxQ8fbZuu*@D0;Ji+_51jX;22>hj1Eomm>hDl zMB@jFs;l9PguRfzk@A{&}p}ulUBK_qgL64 zP+s=vVWip{ijRFsg|VE!Qf9=;Jxiuh+TV-ZeM|1SBBq7=4p-@5Rej>6BC~KwUx(S`B-1i( zZw-&xS9_v1Bl~R)#+ZxO%Sn!yz4YLPT5e z6Kd%%m?kQ7?t920;qtV`dp$$T~Ia6$ZyV+`pVHk0FSU|JVE^)vv< zYzi|slIiZATR;wcg9k(qPsqPxaAMQ zLhwfP3Vb#R5r*fRwzpO^&H9U8>v6xNfb|2msuoaU5WD#&NJ(Y`J+SQIAbPxv;5okO zaU9cLMRmq+ECm?|!=WXGi8fzMSV~}5p+Pe57k4rt26QaSE^Q-LG( zH!WtB#jL@bY(6MsR^KtRcMTp}Gab35NtfQGCw6lsV6E=Gd%!&a^IiB=6yF8c`Mitj z!qv2=e&Q}P;V*#0^X|zPcncOVg{rIhrjb_!H*rfEP8gc9(t7m89(9BnJ0WjOj{N8@ zS@;}-g+Mo5gsJ3$S`86gT1<#MCS6C7Y|1pXdf$mDAb>^}Fz6Xp3Nup*zJec7gVyxO zk_)3z0YOTb7#2Rh2PhI26toD-u$&=k!8*YR^22m+V{dMo((O2sxa%cB`9_tVv zg`46aYSe2T@X`)Nv zMz7^J`rmh#mB4uDbEr$X$L6Zy#eCGdT_aP-&BJJ1IJ%$+eZ#5vXkNyPCvHN;$Jr@H z{5d`6#)A-{ejl3wQGKgzrAB4KX_kR)`f0uHQT8++bDwaR{I0s>ak~|FRr>KT;fdK3 zyZsHhTub0pc{$I1WK38XS{vSv5bN^;Kgm5t#Ao>Xi_kNFO8?_CI2+}Ee5NeAzo-fK zV{Pbu+%>NI(c?|~$@_~E{>Sjjpm3xULM!nV_4XO(4qPPn@hgn%H^+FV3GLTyZcOzhr~egYE{S>&dd6iib}RiGP!dUr`sV3<%e-9rI6KZMjl!sWUy=4b1+D!vx0^z~#7h4P2=b?Y=LD&(6t zJNbFyMgddU?ffCyusBc!J(ENcl@lC(@77n&eenr2)vR(b0jyBz*6wK(;|(aj9=%aD z6zA%&ll0{IHPRHpX)oNiZZ)V1sBY~xs3!z8srJFE>$`^t5;}{e*uJ}}u40EJ4_sc~K6F!ifrCJMrd=gM zAg7{}FgIdeX1P7BpFrUz=@dJ*+td(?wd>QIP%{)Axhaw|`n(v|DH3OvoC3kK4d_KeS;tiu-d*`*2crA^iZ#I<-NCbe$5H{~ zTc;YvQ$ZK)OiSe4gRD_?%LJ;m)zN&|4QuN*jsHn49*jjDVJL~mjg|(+NIL-qS{a0<-%*$ z>$8d#IUhwz>YzB`e6+9mFY_BsOo!&h?_zdm{K>BtaL&Wl#E{$@#hcFAiF)CCfb~5{ z1gNd=e%3dkOxBHh*9~HM!u4$(DSM`#J%%~#@-Lo)tH8xkCFD_o^Vn`bVJ6Z@+w2Ny zTlyzw74n3hXJ#DoX_7f_oV_MH?a8yqr@!P#H9EWL?w?sY@6|Ir%7RYbS${(>lIcGz zO_w8)bYt#X)WW)oJ#%j8lzryCKC>%!*XhaDJAsl?WK_80uD~c~#Qi2&CMnyGfWV{G zHOv4}>}yPvAtv`KLIz=W+zP>NA3jviSN>ys6uu4@)%);7&&>`NkRk;Sz0aI zrs%-a0Ka(~M{*k3#(q7YW)=Efd;+Lmg)MT<6n4pm6LOHbJs7NiS*dtE9)NK(&*Z*E zuJ$iD1;knqkAttie6h0NURuKZK3x^8f5{6;3J#NoLlZe95jBL4-nvabbu;aTrpd>*HYG?J; zgshr-Ku45@Fg>V6lX@@_k?5tK30IxC_01t*!*+%^nAM4?ru0gT)SP6*Gv z0=-M=Hkbt6x1N-wYTW`HCs&Wx*ih5J#e#Se-rNh`LelRy8TMB8Q*^w;^C68^~%GRQT9P z2GZK<>13H?b*lpGwzA~Ht;*IdQ#>j?d}-bG(O~^ftr~2qmgBV1+VfGtdewywwU`u~ z%Zl{qPohNkr-3b>Gj&?^+(>KJr&Zj9HFa5NNNma=Fo${x10mdnFc34huQ4%w$&W-2 zI7uuxDxG=BqCfOhOLkga_Ui0M>oa{kxHKnoxW4_!w5!BeY9HUPKlPb|_3f|SSo`>1 z{YqC1t0aPo#Ea82^0kk@CMA~iR7Gz(Gn8r{nnw1G>5Ah9Y##;pUp!~VD}ZwakEbh! zQrL;fvU_MH)vmI8FQz3|a8G*1D=Eq@y`n*HL1kWnQGYtserVF;`-Dn+VOqt2r4D_R z)G6T9zVG74_eri-3{>15pF(cPV7GePe@-M;U9z2(kZx{FFccTb}dWWP{JcPq0GRQ?<6?vooXcqctZ zop>X7wnDwVb!xU{YPOzhhmjB|^iUMR%xPrhG^YpFXEwQsCYq1wHSwRS*r{Ueg({XT ztGQQkhP6GZXzpS1*9Hf zq=u$|5;MoNX{359hDG%CydE&;h8@A;OVM=(*WqqV+TT8Y^batJd8@v7v+Qiy-vzch zi6WKh&EqgnFUDESY(0~@VY@x%vtD7OPc)P2LPSs1n)*Rhu7%{z_O>(+`LH1cr@rBKo!QkW3YP90wiO=iU89@*I>>CPm~-PmlVl%$N) zE09r?Mc8<~0x?Ox?D0GXHV^FaMK6&!BN|bUAeY$1hz{jFHaP;>+tOI?D*f)-)7CHA zFqHu9f!|WSBv*xmKD|BdCZ?i{=ukfM(+p{BY7@{@ zMjtW&?`LcJcX8t25g$ZE-?H=)ANtF7=Vqi8cE{xVm)uPN1y>b22z>WsB1kOqtV(zdfoln-5?%_g8si=)9=beTx7OUM^mM$Y4yrAnKFdIqskeLAhqUdjdsIPga`U z30~vaof_&+a!Oqismyu~vT$hPY9xX)+A5AJ(d^E{W_RxQcIQ!sv+i5v34Sj7^WLnp zKkxmD-lr&ApR_;8=LE}o*vSUGcjvY})fuyt&DSDx*?B5(0g6|=6Wh~lJM2aE594bw^#{~0{{i0=Q=J8BkT*+nS9On7bOldrQoc%Rv#N7=HD;`oUf zte=?kM`qGD^k5mTnJt&+cPbPufGOz?S9Otr!;^rI|3n518urd@G(@EED3%PtJ&tKB zYP%lh@5Ca!Wa0C!FnfYnha0i=Te_y0!5AFrQN^y{>U6bk;94k7B^-uDq3jN&qcoAqt0+Vp9*&}OB&MjtF&z5?8jG-LyZSC`*9% zE@uMhOCOO9FNXrT7_MftFVJFQ(4=kXk_5Amx4xjdQz*9;hpJJB%<`?Fsl00msReH; z=jTC$WMV?^BfUkghx~ox*veq9O08RwLS`$gI3-s{?rkt&eGaW5yjjmpVJmM87SFQV zNBSq#aVF@g^)h!ABs)8^4Q_Nu?85wC982(zL~W|ePOr<}U1t8V?EU=ZgkWa>oXqa* zN6b@I-+mbT()@I(48m&vjqb;sip>;qdh%}c>(3}}-LQ7~znjAI4|IgFHr*TwI@~(Bc8E4D4{ye}wO2!nl1)SKj zT*P{vT26_&ijB8qF8OZl($Cm4jGskIsLS44p1uE)?A_SpcVFTL&4wr%FgH>fvv+N@ z=y@s}E%o2^eB9AubW;`2GfwG=&(~!?bBT)cW)62s?8bVu8BJGgv}e2I3(+L5@smh8 zgO-}e!1zI%#MpdVn-0F_J0G<4cXaqd$s3L}}>m$524I8|}L&Au&% zikI3kvWQDP^v*6W$S%H0J@dw~^V5H~JlY~3WgI(ifGp%t{|NVCMXOxf zYNR{Lt?fuRVK?Uz{{CCC59P{k&0dqcC3{WBtyxYKVgJ`>PMbH0HR7BM5Uq`<7K=Bl zz5k5eZ@d!w88`XQwnzT6*HaZo)AC3iW+wMT_@_$zXWJr^`&7E(umaVRW%rjb3CemG z+WwTvZay!$Z%LB70pDy?eK<+(?fa+IRlIs0YNtfSQHb5|IAGm8j{!b7j}MLbIfr}j z8{SUW{&=V9fE)2_EJEF#l8SXT4D|ss+f$i&)wdHyS}EJTsI!0q-GKRih<~T-JZJ_m z?55-Ov>3;56CH=*2ejapmfgx$xeooM@D}{%Tv`WKj#coB1EV?HzUZjvn)MVBW|wm3 zTX@o&L))+V6Qgf9H51>1ZQ7$|N@GFI)Ojqo8-WbJ_S?TN^_>$Bbs79JsFuOi_Yr%f zl2C?S3uk))_{jArICsaPQQlWQRXYEo;qW7FoZKh%pnY#vnEs#$`*T*Y+z=6obF7t7WLQqG$DgY{cpQNt_wQ4H4a zS)y|6d7`G!=vuE6N~p6tK_xjGnva1=Rc&zfJQQMnN-3ZYu%&cLk8SSP4z<+V`Nv3l zfCF3WcS|Pkk~Sq}?|}|gAE2meqa>nQZW5wsRP51POVr-U1$9!zX+`Mj3by(E2ziWO zlF(xH%$>ad=yRyRZdbYWWmDwdBGEROPfITuvY_5aO@%k5cIYe$fdHaWhx(WHMcmIA zBKn(CFi|}XV8~Iifz?sE5xg~iV3l)llsY>uhM5(5?X;; zzozBNb)}fOty&MLqx>?zhu}#a-3omv$N)$(yo&mwE@=N=j)qpY?+pUO^bpG;Z2N@J zR;S%|)~gy-)MlzMnRqd%V{t9g+R>mb7ZCHL?z)aRmD>8C_3q3bX4~ym$)Vu)u+X@@ zs?4-)1t)DHIn`PQjnk@arKt;AA;A!+(3aK(aM5V_iPAo#6(OBmHktUAB6+hu!Uf+54fg|G+&YXVsK>oCJyJu|>OQRFP$ z?~e*fm++Ez5915U5t*9Rg?j}sSOm6%Zw1tA!%y3D;DarT)uNH@{;NYBZz)#TD&#MOm^c627Rm6s>sLItv9<0 zlwIQaRm%y@8i0qQpjJ-q2aB7yyA(gvB&x%+`GjfDCe-1n11N5=eQ6l?YOfl1&E)^| z$GCBjR=nWnk76&q;#={SwTz1g*`LGbfpbI3$RpRC&6bTQX7vgj_UllUXn`H=LtaV3 z)ICGW2AuAYhd5wfqpf~KF9&e?qq9io!d{5OP{8;c7$&I1MI0} z%TRyTQl`HB;Izv% z2P(QUWzXSXn^?QF>^JLhAAVyY%8E42dlgc8zXCxYl&1MeDvMU4aL@*PT8m2J{%i%H zCfLMl6=eTN!6cBwk-hQUH!Zs*TekW5Z!y!IHd21387wRtk-a5bw>g^XkLHuzJ$|a)4$@AA{gi#v?I3Lm7B`p7^QhUi8MWygyvCH* zMRE~Hf31P&?H|Nvdgpwx-m2b zdbPDF0@7Z+kE@FeS%-QQrsj?hBNsDkrhWo>wk3OI9ZzsM+ z=gZ1*5Y*lYW#moQ&upxnYYZuABLA2S6g z-Sb)SI*~O0HU7f36?dx3icJJbozc!8KO?8Oe7ok)vM@evLBRBoKv3+pJ6fg3OS@56 zmx4V^A|W%99)E2%Cg!U)n?43}UU=haRvvO@Vb!thg41WPkLxopYU2C?7f`d}jGv-} zbxG9fM2I$sXqEmYCQs%DFRNc(%q6M?#<+2gNg?o?y_@Y^^$OqVT)L5WlA*$6P; zAWpV!z|Eu%c`H)=!ubR^L~wIwWKB|rj^Y`C)(IWixXO@ya39&8CQo} zA^1U*dce_Jv{So-EgQ#@DmD?U-Nr=`S|7)Q#VVzfS1vOcsD zYVU%=cn_)e&ibXF;0g&=%tj{as+ldk!Z7#FJ8H9&vcFcFy;L-h1c9SO);T1^dJp3~ zyhAHh@urm%&AfK8i)>NaKZgXInlY>u(+9svWd>MhI8DM3fkMItPtABM8a4bZ1DKo* z+V_tN6MsVc{ctk;Ei>K_%^-=>gwU|Cam?sNa<(?s*!owKT{OncJ1i}h(2WY)U0Ajq zH(zbGOp(G17j#RHpU;w5_|WzSWul*jT~*qZ%QalneOujjmVW z0>?ZWru0yIszM6thE#?0xnWB7m9wIpEhDi_iq^2=CY|Pbx`qKvr88Q9ro6qG&J_G= z#%H|AH5+LPDFPgSD>V^sAfXsg z=3p7qH5K7?ja$kJ58YQ~VZ)A<5@ZB#t6Rq6)on#vg2neni?{X*p`U3y{-%iC+PTCx z5RAZ~w<$0*1>dtLcwJA*qy=0OlT7PBl`Z>lIy<+zpiMsM90MF9>8+o!X->sX-tv|Z z8nEPahCXP8Fql(ZvYMm7{k@2 zD#cW$j(XX$OBJ_3NnsMAL3Y@9QH_^2SycVuWRqb-B&&^K#nJ$t<$xK2@iJ1UYv{Sb zkOXnqUM5T0`sjNCg6;odSO?J;Z(;Cj=dBrUymiA$?VaKn96d>8Mr!9~UYfJ?lFP2! zm@+S)M*9v(UiUZAJ%)K+H9cNX-D^X=rM@Dsk>*+BCbF2X?jtN}_o1%rV$ z80=WUcWj_-oEK=e_^6*DsH$kc38JB79qkfCw?LyoQ}dW~hNKsiE~dP2afp!Nn}-Va zOfPM;po#;DM#H8^RRheX!H#CLVifG6hh4O;fvn~v&5}y=jl{48Vb1iCYnylR=S5;B9{hgmc=J7r`L_G<%F;{AJ{VJ! z_-876QHu2jTI)e;gUxk;h1{8%u_-NSgvG`9`q8H#@jaEQfU}#4_E|-Wx|r*kDaeG| z7L4WwLyBUD#g9tS!L{EiT2M(iylM<+dJC!St-}-&4h{ho8}Q9SrZij9*np}+V{v1y z2~{g9OV9xf5kX1=MoL&>?}U^-J8V1ly$o{5zmTv}Y3Cqvb=B#OQ(}@qN^ncxs0#=g z-*h%zy;=j9qfcG+GrH$gbaMbuLy)uNbcO;rNnurdA*Rj-*7CY2>!MAdAOn-G&JpDi z4lI_mrz;OQ`dv`@oFL|uR$w1Oh;(Wwa*S~~hzOq$8L~nYc-^ochLvpC>hgwr+_3A1 z8tGCaT^@d~;4_;a7z3V_<9f)_p@)nI3=KkBootE3uo0Cg3O?isxxtsMvqoFRuytRg zAQZwb4*0cP>6g=O!-V^*yGCQWhb_@*7M8<`l{LE4u%fh9)_9#Rs>LFm9=)_6+jmC8 zwZZn(aO#H5!Qx&5p2GE|#g#(K6@TUcoYdl?Wa9|vmDMl3@lxmgHx_+ePt&sc>?M^N zsTE?QD}z-#>SwGGTV$_}-70TRlOZc(UvC9b|ct95xzCE*0xk^K>;7QXY{m zA<{`NFI6usJK5C|QJBP}Q~=rlhpk4!&W&S1Ex<%C`S7T&j+JxKFcvh7Ue1kz9m+Y3 zk2FQH=?|ByFqDMc0(B!pWKZ*4c#G@Nu;oS5S1JP;km1sf8Bv-DG@+*z2sgBNPSevE z%uoOt60ut21Yetx<_bP>@HkZ`agigKolh9n-_R2*E)uWcgkfwXjh2V$><6#w(d7)0 zUddA`oMdg6wgy-By4oDu-JdB9Ev+L!J(4?84V|7gJJSQ#n!T79zdI4G;sNlFLYdf= z>H zc|{hx+XgU_wtI=Y-bq~P`x{URWN(78rcLHSq@>z7szgyG)DM%Z^eN=(PS%7&Tuh1@ zN||6u@^?{vBwLUup;+;fWMZO;cSms85}JoH!9YD^%E?1gtqMe?XdS(}Op;n?F6Y;f z`ny8%%ZWd)L>Sv%p{2Jx?DldKv2@1r+Df~LMZ_#A79^0N+XfbpEa@#R378u5L?W5w=aTT5R(zu2zd} zj6eYC~DIks-S=w)AoG zo602lS4?NGsZLjHhfm_%nwe6W6a~EQ)GyA-G+k4jnz5c@$}cKg(Js=`>$8=<6>^3( zc;pV-B$fajPGvt)?dH(I4B>sEnhb+hRb8Lu9&SS!VC4d){!|Kipq9I(v7ov###dda z48aPyav@(Sq{9aIsU(kZrL?rW(bAX_Y;?4=bmmpGG3`960d^5aU~4eI0ewrxCr8qE zi3XSJ6iO7fWtOOQyu>RtOG1UsvR0IeU0}?sUKXl1UY~*F7eL;T!e+nQ1aq16nPuuN zv}Fq0a%lwUkYg3L<-YypV-+^|2aF}rYS@;Tld?Q;ScUkE*OQVe(n=2;T@!Bs=(gEF zE>HH3#IOmKFe3(@fhy_ynX}}uZIz%{m--3&;6wd{p!MN83nPK6Xae9Q+82hCSfLO# z=E~}?_UNIM?h)r=zcYzhLR+;OG?oJ=$nx045FL_)M9w#j(1np`oYi#Lo^b8-ZK0&@ zah{7vqw6#-6%K-WO=k*W3w*WT0@9_nKwW9Buf1xpOJnc*iY!hx+v}U{9osBY5sgI6 z(xhu`v@TardumFp6c|ZlDMKMSuNZLm1{NbMLrA;tj%Ps??@W*DMUNxcY3gWQPWn`W zmzh8C$0_J~@afq*ynj%XdA-?BL>4@p<9Zde2IFq{T8TBfZX=;Um6u=nJNHbuGxcLJ z1({Oy&*@X&l{@*5e*K;acRY9YYh?UT8Op+weEhkyf2uop*7xXr;>s(Fv$O%SaEQ>R zMPDOXk@6gyCMo~ighf^|ucSjt+9Ne*LW+i5ll&yOX<7D~mrNyOY_{8cB1!h8W^j1! z5FD!C=9C>PqmqK@hA3I)6tn3svagk0@Dje#(CcFLRhiWQU*^N0?VGM5=54VY`z1x{ zdRkT#3?B3Y!UT?GuM;bZ9L%XKr+7c5Hu0qiw|GlYm&! zC1_G`M9Zm4@bS&h4r&M(;nHKA>UuM-`B>QM?4ZfQTXg3~pZY_Dx~;{99U6k0RfBNr z2XnmK)u8xx9tZ~bR_+mL)a4?)BF^Rk0=NmG%w3kXK_5Sc_#ptp6Hz@I*_5I_IP9Ap zbnLcRB@JPpZbDh8abX~AL==fBg; zdrUK2U{zKh5zT*bMDvB(FXFQsBabA1?uTA}DCtrAIW}QMHZY1~Ka}vOy-QwVejd0} z)AltJM$0|}d62f#gwGo__e}Vq#77!uJ*oY%!1>y5LLf$VCT(ILhUAwMD`c3=kr;w~ zJNc!o`u}Bu%p@6th}^wg@PS!9MR6Q3ljiO6Q5cB?s}7`QJkRO-%(f)mPz=GM(k78Y zib4hrr83)`=C4erKOCCQjxIXHAtMh*LI%`+D`2@`1&Kl7@4z|8>n`>Ja110x64-h2 zN{S@IR!|2Vj>s_tgAjE@W;i-3YnO?lCTW*lod{8K$CFkX2$e6YIH&6wX#lHXW;F!G<@<>l2I77zg~=};8{EAx`k+!ePeCW0N$NC!0H`;S*4$DB4O zic0+`q$}lKdG=GG95b4PI3tx%x?ijbMkMGpL8C%w9-~b%Or!SSRz~$tyKVB}74#O89k2H``EtG*SsIW@B9W zR+F@^jK1cMp|5}XEeL50c}@GJkbq*!N>Y(GtiJVeflxMKeIodd6N#Dv112*(D+l=WmZJDpF!=%B3nPrl5pL zWfoVd5YzHLhk^()MvNj}C%XXr?+W63X;l5pG$a-AGZ7JeDR~(#qa;**+S^H}&(91A>|K>mG5yqMt1eb#R3Va2I2;bt&p0us z;$W@R#fO|68c@s>@mGf`>r|RBO*Ybe9`RQP>z%@Ar7T{H@O@Jlp*J+fP*gdaGvTk~rtonaSs*ayriwopV zXmYRVlrGD;7)d;-&gC#ojdxK|%MYyL#!J`gYU0iv)>ZGZB@+cmY^~L_JJc@jgpy@==bXu|*e<+y%*7K^pbGlF%!8geHlR_NOO_O6WnqP5^e64Mu}gLaOIZc zlflr0t;94Qu~(`0lEa7!iZO5Q3hv2S5u9^t1-qcyThvQoX+2GNI|0D?j6UnBQ;311 zqhx0E0ue79+dRi8w}r-qql{sW5=iKRl5o_4%OQpv*m>F zIUsO2)>}?a27{B98~QS}45-&feL?DXPEdhqqCs85+lS&Y#Oc4GU9~~Y{-6Ql>|t$R zY>~f{@Mm5BqqB$J+ZpunJ>l#O8mUhsLCvn9VRt>?JX2+22jpzkO&$y z)a1#_8N7kJ^Bp-kp?ULire`2$Vx3lQP8J>`Ae}aJbEak-NSKVK;Yz2?M&ejE!aFx- zt@GLtSCEXiT5a;Ugx>Fr=^Z1{=>5R;NqRRrKSI)-3~bAmDWk}J8%~^vycvolc|*0B zm0m@S2pu*6-T!3NZvGobq1R-)tS&eJKsAe3vqZb?R%Dly;} zrgw{aF+HF{q6KP~5OcvKIn$eFyi<7fqtz0ROHN|ho&U59Oci<%eLU~I)M)PLe#4kL5m85$Q8=K33o!Q!uv))p2SpYi7_ zJQ{$l>+z4aOVU&Y!xbrOIlOs+fSxX4zs1Fl_#H6Ak^m@~AILv7!noXG)aK-H^k0w#rF}BU5G~w=+ z8iB2UnowX;MEp)O5=${4YRi1`v`1YtXN0A2SFg7w&{ab?QeyQb?>vKo0cSR~rLW6% zLD9TJTOEfGT<}$Up{?P%K|1|(3Ywuyg9b9xdYnOV7#x6_HwfM>Z?}`k_KFb&e5Cs@ zR2~!1;7D+@@h(+zw^$4kSP|4*^`k50*|p2wPl_$+1Y{HHQp;%>GN+Tah!9|v7_fmv zyBt~8rKo)jZp6TJMWC5IL)(IeOsTPy$({rK(0}{gGm?xd#W%>&U>nc}X&2aZ2m2e#3jl*X^WelIW z^XK26eCCP|{7dqgcf18CL#riXH1|i0X3etk?5pw%#a~=#3mj&c@Ja=>7#9(vF&^{W zufSu7GykCD7t%>g0aCitbrK9{6o-j}F3H#uhF88r4&&lrLjA|$TR61_c2a-fACOOf zYQ~G{ihZ@2tyP94EOi8#pp5#m@C`!tPp)SCk22Kc* zArorvbn&H(-L2K>kcK*R_vB0~FLXVNQdRkO73zrAfr%m(;LryPIEi|rLVyd2-S+^_ z!*w{Y0t#@)6b;zj7%(nj?C?`h1Oqcq=vfEy-5MCU3(1D8SeEB-o|UOFc~{*S7W}9i zpm40k)C59%v%(%155GdzWBy^#QLofm(K6LHU-P9ETCQSyE?;t}u+z`VmbOXma6|F=SLR?UE_3b_}1q7Qc_ygYeNL zyr?%V)UFnTRkkHx$geU=jF^;0adYI zgv}J~7p(~Qi&kh!Emv{5Gghd08z#r>>;h*WE*B^R5N;T?Ss4T8Hf2_*glb!k>2@nv zcz`TX(N;oJW`jibAz{#tMeK08Oj8F5(T34Vz*5KQWI4m>nxiau3h|!EJ$9^dB~0K& zVJKa*N%o=NF`};yxi-smjw7@A+Eg6=?7hsi07N(fo@r?};f|3uOiTf#Xu`F;N&S>g zs${ogloRuELv~am6I)hgG)fSm?g}?gvv31jBVniJ3gunls3Kald8bKoh@0XILVE8An~{mu zR+qhoTb!h=QV{H&<`(T2(uU5g?FsHtEA&S9oi-7dL}673afi*qNkKqf39#NHJnU9< zIG59e4HW3^@g?_ZIE8H{tZEk&iW_ zL@yuay6uT;|M-fee6W4St%-fccoT74*C7+(Rp*~rIwa#!wO+;0uQB@^0l`(sEK-)V z{7)<0Zm*TlfwRw7sInDVO%<)%m6kxo)vCDKl9&UkmoWb}!G>ohC4ee)Qudr; zz&04aCy<_tds$#9!UTYkIDkr=hUgJ9_W}(X@9+#a=<60ahP+>b&L9~3rCXqa1%|DRVoGycSL{&=X>V72-&i85cZ0Y2;o$7p$rh>ybap8jl8B^K#kq1#=1hb zE2jTY=x#L*x)W5ugi{@Jt)VVzE_nAv7}@9gP^4f1tp2mgBj<^;PM8CBw&bjs*djU zS|B$E&)9<7pfDXC&G8)?=7T+L+;TuQkwhcHbU3V|Mm^^h!>~LW3;8`zLarI2=(sMI zM60SPNW&3hx6XLpUQj++L$A;T`5 z$x8lNc=<1!dSCK#IY3$?X8wUlzb8n{-@BOD|5@$zdv09JXyfJKy%ry)=rFDiiT0PT zT|Fhq!2e|x{LnwF%}yD>%SBjDzlX3&_m54FM<=ILxFx$h+&^|YK3kHB{n+IKh)qzs ze{A}ETeyE2>i2@msc=3dGWfev6ce(0sr_<()Mw{j$2AJ_ewb?Jlzt)VIKI8fV+wzA z19@eL?MkuRk_}`CiL;8)j`vExgKXA-uxP_1kPLty+YYk%KSJEe7RGI0gNwAU+cAFI zK{k=qrcHSW&shRs$TdjRb?8Pr$UEE)GB$wuloC70+KX%Au^iIF9b^Q?m>p!Pq4<}y z^&M^@Q$sugS%W{xaF4}>nFNuz2>ar#fi7Xek#s)jRl-W}v(iaFowdMJe5{<#Ig!D| zPcN1l4C-ZMG5F2$-L9)!)JPnHpkDU4U41W7+!p!CaEsiE`wp7pL*0_d$;*atK?z_I z8WE9P3HwH2^$3Y(qD8fPC04Y;IQw2TlgduMbW+72NxJxXifjnOs(F_MQy7HiGXiVj z3F^a6--nZxh#%L5)5$LQ@PrZWkY$^nn)1Zw6=!wIEDjnDC5^<4AJL-axdCkAbrh

^>N#;j3D(SG-2Lz+oTSM(m1xsO-lY**_!73i&9jr`cc&^3{Ofq?a zuV`pFHaXtDNZtiuFP)5Rcd^^L$QQ%Ji4;9f+eDnJ_OAOdR%CK0-|yGjWewa3+9QImE%IN0cDpqSll((ILk?;EoAJ3IUy8{DHg73y)GI+7df2Q?i*$Axo;jO?`qtF21HKCO90KkF$Hi+*li6EqwLvLc@~ z!q!ZYs~z4zqN$k?z_%0_b_G{I)5M(KdJ3bH*x-o-ih{6z^ z64Uh4k~tI!!@yHKIYID1Bfvokuo2d=#+^${FcB+_?0gbWDB3G( z=Ot@x;!$-JSt~`@vYaF8rguhVV`y6S3!aqw9518Vzd4%zwbv6gz38>~DNV~bjqjiM zjuEwlu@N?FSW9H85p~lt(KCDAi1c`Csg$e{7u+-1qkHPm2@{v!8gbi&d3KAN70~r~ zD1f>F*WI{QKVu_Bl!to92X|6xEfh`4Z-n&4X|HEdmPq;kN!Wu}0GD8xl)s|d=Jd!z$JE(8)8??_pao>S^}TZX9)&=``Q3gVhN4~+1qsF(YW z4H(%Q128rbQM!*CaF3XcY#;yTjCV-%&bQjYt{RY(eBDH*6r;Nz^41od|Lj z4{zA89Atj-h7B0QJW9tGR~X@YMxom(?6;tGSwVNhhWQNHYnkFX#*F86AQC}D1x6;{ znNirDArW5lq2WaN)22p?R}UyF&ETB(eE@J9Cpf7oZ6RVLT;dV)5_g@3-Tp!G9sW9v z{|(ql--!e}xo*#U%1%&k5hr#Flv5G7tu4M$BgdeQzEOh}qg$XhjlNN%@ogB&GWTYW zag~YN3HC7EnMmhS?oxp0CrHUCM7#zz!#%sW1Q09XO9)uXd!|Q6ev9@d0$yECQwixG?+=YKP{QcPjlKFRSlZ3CcTSj;x19q;pM4EqvNNnk?+FyY9iC!|4MV(L1|%_DG`MFmK}h5H<{hAp%-? zmmJ84`53}GVVB#;;*rh;+4B~V**@Tg?V~bvLBn8Z{}57BF3Dy7NZkk5+$X(Mx7wCQ zW#M=vSzLX&l}|=xSzg=dsI0cAFuqBopp#g81*gpg%*cpp)9;*$t`OW6QTUH@Op0II z3@)dNkWz1m@&VI)j({;$TuFgVs=U%dn;6KAF7nD<_tkIVS514Vm5A`c1*r(1{AN?z zg%jh0wG-Zr$2rNCqV|XO(y+#nSBO{`daXwIy9#~4cJ>$R-#G)_NmT)Rfw8Rw;CHGsNLtL;3AAAO1dY)PqB>$DM9Be*#bVdT5HYt9PE{L%)wIXK zR&ysd`{OuktcO67izw{H5hHH`ue@)}TF?2Kxb0{i5ob=kzJl5t+9&mtluijtYX;^( zjVYYt##<$;j!P!#p`x+WMF+zIv6L*VC* zV$$dzF%YT>Rl3E*Wb9YZz=;hljL~@N0HaY>9c#`)=JEqJReeOkxt+B5i0?WogOnfv zRU3TT_kogpD1&z2o3IdFSUg90^XnEu? z{i?c-{ob+5`Mps2qhr5V`tI28t1e!iyq4Vr%hwTgRGXvPE$WiE%dr#=e zgEbhxZu?!qtJzP9`Im~f0f{$Bwqbn`CBt3P8?$xQ)L zvKh!aB%8UqkQAJcM+!LsOmB)h0%dXLqseb7L6O#_QpH@!k zsM8sZ{t7o9PC&V^hEb=c;OLH5I?16r>g-DGIRrPZ!fpSb{6s}8NhuNV=?SL2JML9lM3WrU5YlIPA0 z3C}KCutzZ~n81Y#Xce8(()(bukb_Q^0CgW23nwZd!~kP{6=Vmv*iUtqup%c* zfa=EHDkp@8iYjiyOAytu9$C8gjhM=$#yb*xTi)RT*0=2+;^Q;MZX)nsNgVvjKqwBb z<=amq4(hhQ2jYNRAQ-Arc_0DI3T5_LgpcKzvB=Evm)#}=0?*NX&)!l@-EcBkJcDBm z66gtUsFufc?-H%SB|2+@EFC#Rkp##D@%)10`Jc*cDisR$=7hT|TWd)RO&*kj^PMV5 z5~1K+rZYB+trwJFUxHP?VN!ww#DYHfhCkJcxx4X6EsEb?eqMXTn7r8|w-Q|;*1g3T zy|G?f_}Xv@xxF(-oJUmL-bn*v{$l!+-^V{w{AGtE_Ld@P)|HQFr6rU6UF*t{wKo~wk)_Bq)) z_rG#FPC!_3MN`>M8D}o=Y0^^6J8y|GMoK6D8v2&AT zLbeN(*_q&8j7YEIE>-^m~jQppnC7{z>?@ z1QiJVE2#0!{UP7}D&Kw@zWt4^e?h(-A4fY6-^Srx_mvTaV;SRaFvcBuyrZowZDYZ& zZ%;=rn!Ld#RF$ zx%!9(aq$3jDy8!T(7&bhQ1Zhv5$UD#wLPni|2$ic3#w;IPB?c~d{EiR2s`Bx^s&d+teZTBw)4?c z)VFPQK@Crr@p)`^&Ru*y3DEV5yDn8b-ukOGfYg1t)O$}=`$|fw@wvF8`Aws{8b%R=~UV< z4SR)y>5X}~;=86bz zn`Rh?N3*RgTOt;;W(zi=(A@5X{UeFjv=K#B!FYIA( zVgkfDEX~xj@#P=}4Qo_^w({Ez|NK$L@tQV}WI)|GQos3t!2!J?t%!cA30FxVg24sR zV#mAGt{0n7#B1t-j$-8ZStA-JRwK?aH<&rl*$&_wsY60UR{X9H~5s&={xkfLva+IH{45NCJPWyxr+X_t^yU)0s_3AF+Mg}Vt` zDsyp-R9@w<=v@f8s`UboD;gNePAg&H#Y=1n_hysxy@DmJ zMT6%CD!*hHN~T@^M3tz;p3T*WQL$$mx@7dB+Arui7sqas+bLeCEK%NWkT;JjB5 zzMSAj$iNcmhs{zTsJZg!PVr0QAv_+^tk$E3sTMUwD?Bd}ICFA4Za41<>zOFvoWE(u z54YBUc~2d@QE^OYh~}6xbr*l59DPGfXylM%g3X_|CFr=kqti+9O_XE87b+qJBGi2` zOlr_TUAYd-2PdbTJu>nJ>OMCMIA`1lO-P$eIOMRvyhm<;P!#8pWAYj0@E$%bq0x75 zdJ9Zi;Y6_bgXWk+y2%ckDJ^f77E4M(^?KZMw@aSio91LpdTG^N^7$eP zXPR^F`B;7vfvSzAN2?noOb6Kc0meWi?e(OQHbaZ4idR#5SDv%ap=75LH~#AZ>VC@H zSZx3#jf;9;DMP}H&03+i$MV18RRJ?0?+ml((K5X=27HPSI~<19bfQ(|q_U_3zC~@( zp&1CR(ih7viy)OdNabT8k>v5F6P2bxB;cVw(2L6OfwI|)^TD%+KY*vu`vOrTY@3`_ zAmu@pp5Lun_{Mdo-d#l^M<4|&Pd7mRYbz2dP$)8Y3#zYIXnuTV3QBd_gfzHWPMeVC z5FfvVj^58YgpV(>pkNWw5-~N@hevtljn(90q%8oL6ib$3wImFgUt*ExtR%}@LD+60 zTz-iFE>qmE-$XklYFi;FJS^ufD2tB&0(F@peV4%rRByQ$E^o?(5&hCTgb__xm^exY zRpOHdUh{AP$vWPJ?f}0vLD}i>vI>Ij4;>ts2@^Uc+_b_bgOaon$~vCew@ww@sRLLV z{4J@Dcr?w_<#jrXcF*$)A21@#MEFuum%$m%Lmh(1cAvXlZ>7c>U4TOlHjIo5T0?%D z!&Zuln2w8^Mp-dDo9*V^Hfb_x@H=STFt3u zn+9Dqwf`b%J!FhZ3|TPIKD^GN`QXUH+?nj2t#SQCr7<|_r`qXq4Y1zxM}5%v>aeq` zRf|musWuFeyF=UcRK3(t?2yVMobYRVcfgSKo^BC!0ILOQi|MC%YmZtIrV{gNTC!aA zb0Dx){mMyzYSUF(kE!rOI+`W$(oLMgqcujKB%!o(8HU2=Uva$|w5e;3PbHx62)4PR z+11l^gI+JP3aCV$2Heb{Y}w3>oEBw;@hYHO_DXgspF(?&MZtq&(4Hq`?5e%^Y>qN+B7@uM_MEz3N?4ss5(>T~w*Q zV!(a|m8$ul-$Rwk9Xmd+N_D_pZEPx)yV^Jk?VrezW9d=XOM9B7$xSIRY^F4-+qL!@ z(5UV$Ie={bZSFLGV>`ZSS6!lZNXj#$TsoT~JcRx{*$j5`imuyvaZT32=TUE`ERHmvrQL!9oC_~Yv zYo%(MUj?mbuKX%ylgNIstV&ace&-!3L*@z@d6jkelQ>skSMsdjVv#$=oGZ@FA`gqU zo`z$E$hlKc{iSv#eJb9GQtDX|si(vZ-v!4C>jIXi$Y&OZIaXpfN~92(vJ^X2Oh1~l z^!FzI+wra>&#%L}*o0*%B=jS=-lz*s&~@B}_{+4GmZ-SKXql*J1-wodoY+>b^SB5= zc>9CXidb{ubr#F0y-c+&r%eEt34!IT15_bO+Wi*!=apj{3SI*uf0Xv)T0UwmFBgmz zOdnBJC_5nvfJ3ezTl&_82-x-ml4O+Lqvl4tVXQWu7#A5NXOAAw9yLU z52Zy%%kSw2SzR9&D>W?qrhIrK$Vwq=S`C;XSHT$H0>V~k3!L-HHDjGJ4xl+@kj$WoQw9Yte^jv9wYbOpFw#=M*=aB;4EQekBh=;M zLyzG$9R2FDdVE7kQL9o%yjvz5cvDa`e$r74Yp_=}=asQaXfDDYguKQgSe=o^;^yuZ zhpIVhRKL@e5g2pS*u6~0g{DT*O1R<7bG;S71ye1A$_afq3Ng!H)igvC!oZv$T`Fi3 zK(&G;Gejo^(SWdhNjfV@wE!48Y}`#J)`CqFO?~hKk7Q)j57jl&JXAKJ{!Re zRS$vjM}#8%BT_yr^S$ud+_dpsR4^(H*w3I~d~nr!s9?DFz|N~+l2%(e#gGg zPe}b<*%PUWU1tkT%TgPV%WQc(xwa;i=}p|A5}uz~df{ITkDN^{z4n)m@+VVA9P82x zFCr(lZCxXy6G==j}Q&z&)@yC-isc1`lVh}Cv&6B z6~M`JHvHj)RHmHA!3ht@Ji@;Rk&^dMO=s?%p32-0ZmF56%p=#QGPlo4WiA*@v-#lS z$Ch4Lkv06Dcq+#4=_Q8Wcb|yyyWkna@2?(@@td&7@Z0g&$l1aB3?Ta1(hINNhhDez z+8!S44Ex*EcUJxV#qYQz_4l_nDe2mIOI(urJM*uVbW`J>ojp5P6~p`aSq5+Z4Kci@ zZ#H;0e=>%5{L=>Sl8?vmR{Wa5d;M2|w{}DwHvBSw=-_=ZhIiK=7`$Jcohc?-hcaX4Dab~gZIt9kKz3vFFJT%kKt9WFnHhobKq6S@P7Vl z2Jib1$MAmerv~rlhhlig|JdN|YKh?$9yEAgZU){~g5rIDzkQ{_YpIOk{oNG~UU>}f zLzZ;yqZh>Rif`KdHlAXBpNipCeAM85?3ZJB4_|HYe!V(|x2MM8_e(Ln+ov0TnQ7qn zi5TA1Ck);b-;3e>^2-MAvws`I`_Nhk?}->*<+lvp#%};`FMF)Mzk|DMJ%8+_cs*~= z+j>5-K3>lsx1?(iw#Vza@`u*n8~&00{yFfjJ2d;cy|eXsO7_K65&G=w&c?1)63dl1 z*hFb}&ju^|kH2s2|F{1hx8L+VYyX>n9k;)xO-a}O)$+Lgu4UG~=y9;h_ou}CspHi%_XO;a9ES@UI^n}nP^|Dvt8ao8R8HVu!zFy& zUd~6VOjQ&}svTiHcwd{WYwM@9{v)dUpz7XV#>aHMb)|=HbhDuz!x~c`{Br6G`zx1% zuEl)UbOkjaY5W!-7Y^sh@HiSmHNAl^W8)j*5Bgv~6Xd6Zd!^cPQt_vE~N`bF? zf<`WYc;Xga9j@X>8*X>Cx`XM@qW zBWUcV2Y>_RP`=yxfBDDp0sXr{AApyP-*$&*v>roz*ZwFT65*?M859PF$OT&##BekcC0;{>g8I?; z8vkD9-ymH9C~*tifUc5_tdvGZWjj6D#m^VW+DRp45n^Gz1yI8_@)>d6$FCkc{_Y#2 zUd?GCuDaCO%J0K&Ej2KO4F{}I4%@erv5!SX+V0uGJj&K^lCb6l{()Rg2Y+d2-i}}% z!!(bHtyz;C9?e&m#&_*Mjp={E^`AwGRaCQ!fApkgtqprfBb&jEwi|V=B5fI=*gEFB z=0Wh+@=u{9#)Gx~CV!5`sKlhL_4Lur%#p${vA7uY=b21?zeM*5Zf@w|A2c|R;hLx6 z+QHu~MjwpPXntJ6iX%4c^=0tz{If$%Gagd2qvc@uYTSAF&F2?O@?GAWgvbOngDeIW zN)~YWeUM8~^CEp8ov-%!$JwJA?u`@0*5oy)H7}~9RqF$(WBel)sD_}EnnDsjtU}eS zaN`yZ*Oz39U)Zv7`A1l#qw*boS8n?u(>)4xr>|SzZ~A}Fm2dO+i<{%cVhrUn67=Qr zOZ}ItuHlQH%*KtL$24~ErAIT*d?MUfv%Hnk&}ksHyyzt^*(_?C_6~#D?s9sN#f_U- zf!rJfcH)#Jv(!#1G_ySx>1>*G;l5*1jN6A*3hoJE6L;c8bQ4Bint(s zK~tdg7IMY*I?fiB!9F!bDtmd?3vQCY%5Z*x-}-XlOMJ1RRJXqGQ?LAyOWmlfoIbo7 zLXW}X8FC$Q8PB9wVq(@^6G#o#$v^a^$YEw2%3mf8>@;V2&6#yL6&GY2B)-PT#&A8E zz976&9zI~WQA1;#5H*p!uFrJY5lGf%>i2Gev@fd#&D|GnCB)Y*1sg0R zR?C(u_KBJd=IhAfLc;&%KM%QHdBu9!A`3PlpJbnimZfZ!*do%$efx}W4jlGU^`_nH z9NX|~Kqkc~8gfHiicc}Zhn;HSqX^H1NBOcos3AgY!MdP^EtXu+I1Hzi5^U?Yo}=ze zF>Q0g>ERw@Pd7qmI6HfO!L7tv+(s2f_nPa}#NzSbv9j9L1sq#x9?1y4gb!|E=jsU@ z9>iUWt9Bu-Q{uKjh~Mlh6QjlHAil$98l|mV+0P1cW}D-O`e{RiE_~(d|KKGFrN&ovZ*bPKK zd7UAe<61bg>Kadyc=UQ3hfmMOk*S&QJuK4 z5nb4|dP1Pl42PB+Fmq3#(PxF+>fG-KSmZiw=)>u>@t+4*{?9Yu46u#vVwPgWwk_rV zN~Abh+n7k{vNFG&NHJUDDX=4cDC!S^3lHPeXnA@3{xIlqe~Mv$h#6iuuzG^)kDZ}e zsQz%bUj9U~Kf2q5nV~<0;GVO@Rx=+=f?@V;=p*dUu%-NEBBf|4OA{#rmh!bk3L05x zPlf$qr!p5YxG&;8pzW5fsVUf;Tm6pH+3IgDdmLPCrZ_3WMki}rH)XZ-RH{~Yxy=K= zw}|0E5nMyAyTshI)G{xuY_#pho&1xrv1trGw!XnhXCGU-r?Skh+T`5@9wmEfJEX@X zMyzR`(sTK z&)mXwJWd!~_;H~XjS_?u;slQfM@h?AgQQ2486KLZ)0%gT&?_&-nd63pWfszlr*FcD znu%zA_-uk?tRLgHvR1?Nw>VFz#R%waN;?Pg4W@INDT$A#Ge4wrvLIIt?^>T2vjk47ehlF%5n zeqCQ4W<5a@S|$(CE*)F?_a#l9lc=h$ zibJ9L-6dAjx_vqY@;cPly3M{?%;!!eswxL%_+Vo-zbUmi7cA++y9(m@;Igjcso5diop~t zJ^4VfrwrP?Y?5h~tdZK_vduBDt6Y`?rrHBm(BEO_%Z^RI8@(_9ip-bs*pf4uf~qs@09EgIQOF z-BZ;OdJ$@aDdMI$YdpVUvTTN*EKIEL9;mOdDeF33PbZJ#g%O6COW94T&*Uhg`G|{k zsu&Efp~s3%OcryCU{qOFc7qLD<|rFB5y*|Mn4n?iH*6f-W!pLIPxvD0jxRGuWiVDZ z4$fdtFV4@!`8nn12KUA2P~W3{ocdkL?-~62IG;I+Q7|M2TgerFvtDZw$H4#9x2>-Z zChOr3;);Rz>n zFl+hZPhy7S@~C@Dc@#`z6)F&G!^eyIP;_h_Wir3dh$rue=WK9UQ4}~Vf-PFkkjpuwoFTyJh3zFkQzwEMn z(@?ETK9X#pls)~U=PnU@+80!vY;v3eP0RJD+0}PoX|X@<)hB%Y(Tw7Z>#gfkDW7Op zR>UXZ5xeQ0K{$f+6b4I0H)DB2GsIi@XX0^QJ52M zwW|IEbJ`s#0SW%3*)8EuMX?HIrQxigW-d=sq9+s^8x_OoYB*%YE_B7W30#JPv432G4)3y@gTVoeQO$H{^0rJ z)o)w>$SD32GJu#r{vbIBA^Qmjbnwwp^}_Bq+8%HzW6ZS^eKHa{i$2uoDv1=>Apw|sOuuFB2%DruD7*Y z#qCLk)*f9D)Vlqbm7t4DTDRF()1{=Sjn<|1I64|fmpblpM(a`+IAV8VG~!fF{C~*h zC3LCYAH2OTb)Vx%Pwd;G`JVXV^>LC zNXAbtqXj-?4;fC(uRflvKSrN= zy_6q~8RCx8{IGlU-xTD*XCi)eUVX~*tVo|SRmzmAm}i+jwM#t9DOGTw9^+YXu8?PO zi5Uu(@hsh`*9s4dc$V%|^gL^y*p+EnqjW28|Ba(tdHZj)ZWY>pV|6QU{hdp<`uXpd z>Q=w+c+z;f)kj^{Xx-|#<2I3^lQ8{Ok7ie)ZiSu`=~k_-exzINHT}VKmg{}}y)vi@ zVjND-QP2{)MAYP)%5tjFI?q!agM(A;;om{!WBEn8)z=)eiU1_oU0n$PRdk&H5})qa zV5vga<(ZYk6Wwa78cyg|{gG}pieH^izbdi+JmJ{*lZnR&}%{V&)&h0l<=#N;9~vd)tH}*%kTa!&L2m=S}=-Vjpa92y>0!WQT%2s{@+jX zn~)tv`p+Yy>W2kle)X|r{SZ9$osv3S%8$b85&ZVj{4x5~(>~w%3rqane}Ll+_R-Qc zCHCaLBY$_5YIR@CCs+5Gs~e~HG^Eiu{%-Ta|NZ~4J$!R|hd%sX#BJo$^!`Ef*G2yC zDe~B@e}}F*SZeJ5u9DBr@Uyo-*bZxXd73bl|63SM{sl0Kw;0R|4q`+|Io~Df!0Y4S zM;9Nq`d5A&v@{Bgop*^}UM)-`m$*U%{66V8y9bHQ1L0aSmY}I^12!$!xa}OiDc0b5 z8_N0Lk)xa8W?KO)6`P@ON83=)&aQ1Lg#Kag|Kx60u5peK{iFZK1td&v;Y*Bhk1%Hc zF7)IlU9aPfu5L!Odm=Qpc95&Ujtz+R^Y0kmcK#fY#r@rHyRmkN9`#$1;7XWG<8FDd zCY)3Mzuo&LyewtAWkFuj()9lUeT!wOxlMJ12dA(-z4HID_cq{FUe}$kaO8$0q_0RN zkK2&3+S2AIr9p1oTf1?ml1GT6Trp7^D-ktzfu@dOh|ZB6XxeF15}O&Hs z8Sb6&(@ql4b(4@dakuUno!}Y@y>w|wgN#7RNzv-&=Uk3f;`k)y9uP3`7qEGkT66yYA{n(un=lC!B_v+I)<@ z)e7R-$s&zd;__q36$FhFAPfmyka=jI z2d5k>#G)r(=%JN09Pg!gTUzpLRPxMih?qP(7#DQ%?4{W;P;>jn@@!|aY&hSTu%qT6 z+(zzI<=MOfc@|Dc(DD02!?C=XQl9-?oF9ujns@eh>m+#=;up(B_l0`5=lr2ycp4_#=`ZhHp)@z3iE=B7gab<45 z&ALPY0O<%_tXBof5gZ4h6pI(Fe{|#|j1NzJ;Eg{;Q2L`km>le%2B}x${NH%i^2dnm zGn0gTW%^?)L{$7w@{`c*d=L4r3LU~9{;Vh;GyMbiZDlnOA^}~94_0zB$s!X$>pn7i zv88CO#7%6c`hpZk<_W@Rp?jz3mBv>zzy4n&02*a6qKt&s&mt#G;p~h>I-mZpYR8}w zQyq3cJTL3$83m)(=-8F0YEaw~$bzx$3`)#jj{ap72ceodPSap0l)2_zMHgG1CgMxr z6b&ANitIh;qW#l;gC|g^@Uoh6K~2vw9Ei&9blhW%zjUX9;Z?{TF0*LvG*L-((E6*^ zTw_ajlEUmzEP0>b&-d*OhwY^+qxNd%8AH!DRMjFa8;>`Yf`Z|~k3znE;JyOe`OjGt z3%;)@b5yWseL=m^y(>7V2?{AJNI~TZ1i3m8H+@PcME1nEveGP|Pl#(%r4f695yy~S zE@Yz<1bO3*7JU>=hemWbfN+rz=V4L^AZf91#F}!Ft%r2XC#5WjS2t%lY7>`mNjHW` z)}{Hb>6YpGN8k{YQU7pHwBT!F&f9n>GJe-Iw+rdzC|l{9KZ9}+%B0WpU4 zdJhkMmiC3)>E15GPermR{oYqjB0qn zZS;_Ioct-|cn}Z`IU!`}ny#vW6wt}B0{Q3peSgG5#y9C3jgIANc>xqLV!Cr5B(=?C$9Ced>~F|DSNkchs?yB?4Y{|tJODA0?%;&2E)#n2wOPT#-*lFr zEoQsa9=LJ`>wT5!j{7)j*}^SIHL1pqma@i7!XF^fAtXw4tQ7fcb2QIij%F>D(6|(|3`-RAc!vKclCukcq3~1tO`B=o zJ7BN>&VxGkRb~gy`D^0I`ppSTi9p(%8=^1`ygToA@WSfQF|&SsNeN?cmFkhbVKk`* z4dDcghx1f5DN>fM;qW7N@OqI#sBivDkoQrH`34;p{m7&(m|+Ay18{ZirSXc5=1nR)%Me0hrc z>t|L!q94U4)2}fk{#ED~)|Y=_a{c}P@!Iqc>(@+C|72$7_18~PfBlzcR-a{wZef7W zk}MM67vTG4EH0Vx@Oqo5R5G@M1s;Bg6lM{2>)cJ6zk1XJ=1K>#vYXD64(!t7*IZB&0>a--s?D5$^_SU+#jOvA;FfVhVwv>3MGEpxzt|sqn?J3+An#AnTtr{qODKP5km9_S zV&dbq8S5FzJ1X=@?%24}f%kr}RlqrkgF5E&iQ|84iy8=3CEzG#m!+u^RMnJ8TkyA1 z^J)%dO)gZ`R2v0t_D4;I@>2)zIgpxSG2!kc2vRHs(}E@hHA>9O3D`?tUE)xLTiPZm z=ID=rkK1Q-v;sa*)V?yV3_JQ}qD3&`kk#a&PLP+EfTgn&kdgki{)O!Aw}g)hmZoPt zb>)LgVE`))uOA4W8t}l>z{)wkfo^M{+BXpEbLO!llpkN_ zdR6HxiuplI@}uM7;_`K~$_gqa{9pO0;MdKn45}tqO0tXRhw0m^R{g623CAD5WG>$T z@1Cs>GNrRHkgRuwqo3fvWcjjE`P1^ETu~*#XS}1?k?YFkxmH=SuWqh6W9H0-^s4T3 zi#jZt0&I@xTZjQ18NxFc5Eu1(c*tP^)bDI5u<`_04Hk3&ES8@dpeZdOtI8+0u*t*c zO8z30x#@l`ml4iI{vrRlJlx6cQmp^hp2l2{dj&f0UFu_)fIMjBf^F-hniqF@wh7zQ ze9BSjcx8GPXN~E7s`NUFf#Y@5l(2jVttl<5{_k$carNV~zSb=6gYBelD&2XalFGri z<(-}5>ZeNIoz9(Z%yH94)yJeBfVVq_r@6={i}fuy53e7g#j3`^5};BpbmEn-40N7I zaoXB}FXvt;X`?wvJ_LoD=;5iUlAm;$4V*jQJX83BZFu|UZlyVNT56se@@=ZE7A~su zjhX(l7M-M$e0uO?8T4^|+9fh|To-)jV|WPY2M<4KDDwa*Qsqi{pW4s^&X?5fdf>y` zsay1LBM%Go@H0Hj*TXyz_>As*cd!4_UcVB)s_%TAIDGv%du8QJVSDTa!u&Az7cEJO z-5{sz^>|$P!h?S}yDaz*-(=7`J~lhO@mD{$SvL#L`Lpz_(^n1$-}$W%sjNnHs}9=o z@)>>mr)ukP_y(}5tqLNuJX)&Snh)Q4_4Zi!298x*w}x+jr?*Yv+gJ3qK74zax8+%W z?pw}JwuzrF)bQiXk4m0wP{gN<8()9nbiDB?Hz0D+it)SHmOD#9t4PBXCV^9g60FUj^|cyW0>RjX#T)l5oQs}K3m-HG$T|L+D1z2OWVt3t^w`_Qa~ zK;7SuaM1@nIZ#rccy^HEy=q0JOPi!hH!}9Mc79Rml|PP(mDo( zwh#(SMlFYChB?C{dK9&Ph{ZcbaY27(-u|^qf}~Kbyeg_1HczF<{GEng3;(I`ok7=h z>@rhRebugsuUyw6{zXMiIRPZ!#jjDm9+ER4$(;#(JXLwCS}-M?Ju@BrM0tBm&WWV{ zfq$a?kM}NwcUg>>@@A6_1>2RsZc%V&uUK;QCiyzdOId4+9_EuMK?F_VevX;WG+Opv z@nQlVmP1!R@Yq@c-kF<#tjnX=km4LJFbR804KNpil!#yUX9W|j_fW&3wyX0lqWxk^PnGXU{T8uDak(LtTlYzew3a{DlyH6|@>x#UY@;a4i%`Q*Hrf9~c?yN)YgAs0MBS#C%P0FgVV*>NDuwk` zC#=6*^~Ght%JS@GY{Bft9`uH?-C~4GIhD`xsfiO<*{2D{O=DQ9&)20N%;WytcLScEMmGRrMNtBBBZ;J2{wS0Rthl1-VXm=ETmwJ!!-PNk!ch0!^KH7Eug;}TPqUs&qX#L7z58g7bj75O8&Ddaebp{ zRNttoH~8=3B)Yy0{<~O2!I|>k(n9JL^j~AM)Tm|ruyhiwis6l2_)TPGk+o{4xn%WeAT44-ZHVs==e>CfVGsfe^M^5XIa*Cbo+4 zDZ(TaCbm3^{VT|)N%#Q9^)H53j8DxB@Tn=nM?Gnpx@Ki!s*Tk&6;(|V)mFX57Gt!2 zmF*Od7ihTt#P}5VXBw=^lJqS`O8r?rlm09(>W`{sr>@GRlEO1NF;WIM< zFKLdlNdNav(*KSojv6)%l<+=-FM~kXOwY;ASonw7Sm;a|3scI6d#)jG?uq5iJu{Iv zR>;YVdlK^Io|(!Us}$Cc<;^__d2`RS@@8iCm5i(49*Elo>s-seYG(5FYl94tv99lv zjrbL;Ohay*q|6-}l6850MpPtooyKdw3LhZt{?j+{-foq9|C&@g+jF^-Cl@5s zd49Y$rw>)P>)epic!fnsFu%YT4Y>>Hjz5-3 z6!m(@{JZj9Qa!WS91MXl)W^5(AG=A9I`CwutvfE{`9wE~>L%X=hZf!XIm-{1RxJuH zKgmz_g!L5y+SITYkb@A!R>Uvne+nkcz@rX$Kibw@a&!l(7l!V!I5X~_|_!*-vlVO)Pg=<1bW)ry>_%%^m{ zt1%E?FNZ00qOM&xBCZ>=p?!l#$Dcnc-Jv7(;>ApTQz3`eYbH+S(Eef$^}`|JW&3T6 z25f@$yWvphnMNUts+b-430bs1X3+s^NX$&dq66%Th(*zLKuAcLkU#5fzl&X&Bzq!n ziujYwB=M*4sISrQFM=UoKSS7@jfIUSWs)}~VjOSo;Ax!(Hz90JUW+$RI%1rpTJ~5( z3=?D1OPeHb3ZK@`6!NAHHWlz@x4Lt0Q^=cob-d{^V%{86AN1k0_F+Apoy40zQr%hZ zI27_v?oTDSySetyq(AD3W>uy>J87;}Yp6_4=x!hBSolj8-9;zJ`Ic*+| zs^t?#Jw2WAJPirW9zgde6sio00(0QFo1mstoH=wspi~af`2hS8pz?dr_MWyrqRhyVjx%jTQU%W!J%bcKY$YVH<+vA8su z+uD!&hXgB)n0>2b@f^xy2fTHjbpzX%#ipFR*(>#mu| z9rg3hvr(@-;K{a>Fw|A>o{IHGLNQ1k8WR@WcIYr44d*v*ccf< z4;iPxMn*fMSvxPp=6FY~UjpYNz$aQ>WI-%c}}q2*EQEe~S+us5zco;5#W<0(_&M`An~fy^hQ>5b*S zKlbv&%4A3k>$0iYOKW1W7h~+k+m>(7N4#ZPx;EQUTPQ7N#9p^dVy|1(mV_49F(=sT z_G_@0TRuY(uV`T};sYK$S?Rt}aj_wHHl3TN_?muP24K!1)m(3bc6<27G;V}vP^<51 zsOn5_ydAaLY5p0CWlB2UiG;B&Ae>~OPSu4m=+tXV#Ga1Dh4OcQ$Kng2Qc+j)9g9&X zMcObl92TPtdxH&psPRfe#~o}t$%CK|pA%g<0`@@;b%--GcUNVh^IL zQ6^}WLVbC{&o?x!-zi>h7y0)l@9%k>i#*&j*&lFqN8TnqN0Rg$xi&qmNJ!6-0(y?j zgq~IS}-`klHq{j5mX|5F9@J2eyfS(Uhc zl76QO=y&S-r{AgXi+Z&Q5l{_;)dH=Mlrc(K~LDf}L&2x>!h1>$NNJIaBw4d(E zgyn0jyzNkR)imivs@qkL%ImF3 zZw+ zGb~w0$h2Q3}2DB#FUZE#Tw(R(``sl)3JqWJm#Fn-d`-niO;K6egC zmC6t08PC_0XNmGPRz8$xdYOSdOVn>l)?aS*LwTl`ggkp2`|C;hB`7nJUr_i|Uu@JN zhamSlKfN63lJm1y=}S*>1V!=%JuL`}wgJKgv=LQUd)!!*hC zF&x^B6cEkdF{=~ zzr#c z(2&jRSRW;6YWQD^e!?+Skbt;j6c9$hw`ZRw`LQ%f&SL(mRDQ^hJYSO^6Xk2He8`V_ znE^j0>Nh3pFSq(3Kk6mHkHzzUM*JrzGvYr973K8DHMEH7mSt9<&sezYlAUa7}+k? zo{H<#<|4Q$sHk+V^)8(6Q}t(Pn*L~gQe2*6uu|n}L?5xmtx7Ai6_S}CNTk26QD0RB z&DORKTqS8~Tw`J6rV;r2glC`(zR2a^S1Yj+_|-GRmvE(N=;OxQLSi{@O;7Cvw?A=I zI+vqN`B`oh=GrLGo|q+RKTbhktZCZgn7NqCSBdyBVK2ia7Z`Y5*`ccyAmSWOT#Hd+ z%UMRV2jvasP=1OZW`O^7*TCO1D?zj#3AL|-@*r`qSkf$aNk8k4lYZfRF^esnUzAdAj#2S6E)oD&;WxDLG~;vi_E14@r#*Gk z(Zj}6jY3mtq6BBeGRx0zV@4@)Xp57L(0s0o!iZ{NPo6&c)0VM46P9PvrEn1wj!$`M z{+7H_rl}q8mxT2xn8GPc2)^p0{9XM*Xf;#glAI3)Pq55+s?&c{q94r%vu`NRga&`g zce?UOzErxJK9k(!lC4*E&rCG$WAYW)hpsODnFLS!Gr-Fx;i;^-#)H&)b;Re10&1&r zinb#Dq;7$k>v)~c#y)iilJ$nNW*whg0L>czc> zA9QYV>;K7T4>)T2U-&D#8r&t!bhn&tH*&X-K1im$lIl{{7NvZ)Acgy0Sel{Ol6!RG zS7UKEX@+%%@B{zi*K|LbUFf6FHVl>Az9M+&2$voOfBtprNviYq>d%)mX}fQ~Ie6%C z<@oy_kiVT5XRp6Vg}n~P+{(aQgx&9(m)>;+#H`mp9WOnDp8?DBF zwHk+A69cNj3`q4`jgMH3lFkb^-o7$;=s_#_=ltGY9XymFPl%l7oet?j2GLFXuXrd_ z{`c6tG;}{3Y*@;3j(b}>Lrgb(iWIL8l(8#DX~XBpO2#+QevsM&$PHg4M~wk?f7IZn z+dmsT)GM^^4>q*LC0>Y1_;#qZd;LWU{}P2cr1yze-%IDY5)Cc7Ch98cfFgOlO< zbb@C*seQk8B)OUKCB7_ZWoMX;>ma*}3#j@UH?En_Va8*_wO7_&Xin!|u5IQf;5&cS zc)sF~e%{>|)^b3%76dKt{TdlT)!mOtu@Yk4O288r<8Y`}ckfm$L7pz!gnH`d|9+mg z^1q+|!wBh2zOmzT7y24D{@$p9wH!Sa_?fZkJ_RD|)-x{`Utsnz1LtmNVi@%IPXD*X z|6Rsk!PyuVSne}Eqz!7nYh`B_R9OhvW-#koEv3Pv1Mo(x7Dd`E~ zq?iBwbwN)rr-OB^Vo(29Iit+IsJhd(MR&C*xBm*Vj#Cy@iylKRWmE|VosKdy*1CMw zN|U5YoPZP4FZ5+VucajlaW}Hl=pCkt8(?O8I6E+Ji{XelSms zfDOp@41bjz26ZWST`WC7mtNy9=i6JJrg!}5=KnMN*HsuxHtFXv;87EN^<&4ixt ztiFEwN^Jku$7@dypRaqj4oC1W^G2k}iq{={=Ee$wY*z5ypX?PuJ*S`7^>fU@w?hiS zx*^FMCq>%!u(-1Mjv`~~v+Wn>^(&7H*`j;}>q)1M)%-TTG8=cP){2`<+|1>h3fvmo z!WFU$bnWsdxS&Z1OKYj5RB6@)yZJ8zTLY9JM(fT-TWuJ5he(f{-3=Q*o zC=V+P$;ZxD)_GNpL;ZRcs6*QL%&5qSii~J)ZA4*8BV6C@_Rj$XZnRGa-K}B)SY8Chw4n9)hh$ z)GYndT;XR#pHUjwn>2o~x9$xF!Dn#KeTj@Q~ zZoF}qvFH>`NLqr0y|nFCiYL2If*2I19wiD}M?caWUpW~(Pm`HmLjq_P8EZPqIBrlU zliY$%pQ)aZ4`yPRa(rv0ZC?m|;!RTcHe=f$C@49Y;7!cewpS@irk2LdlAON;)-0S` zg&2b0I8+$#|m&7Z)A$at--KLD_1KwU7QfrI(#f^i)U5VW?l8n1C}JXz4>AYxV$ zjSRY!OTG)Tsgg`OrE zOqkNX=aSo^3)m}-&J@oG=npA_!9&UUXauLVspjMXp_2E_7`d2}0B3eiNDsJ1Xi2R{ zXlmYGd#cJmBJfTy@z>AKLAY`7Ss`R|lova&kXPZsr!{3kKoZjWuaRf=Ll&sv8pVc% zE8L4ij5iIN$dg1YG0KACUXv_q@;4t7i}9mxjGAJd2PL-$r40sqg_`XL(u!APCQ%>> zd`cq!c@QN%$=s-kWQJmah_n8=4nbE+PKW5U_{o&F+e@k3D+r>HNMI%g)D=-hPW`|U z6AS`u<7N{t;L4ku8{%&pdW~@b8E1@V>_KO|0kOzoRb*pu!$)%>L| z;Hvhe_mZqkaU~l++tjl`2Gj(TCsLJ^66dJY1mfM&Cy?9q2Q{8%wTMB+59vo@uWd{tHK=bxjt@gY6OR(1W>PW#Ovn%J zp^siQNNo8DB5LuU(Ge?5U~w`_fVPXq1`mLRwQr=>+;?);k6px0h4RA&WMW^W&*+Zv zKM+s7PD>Nu7LE%&lGJw^L(1U*JuoX3Cc!jA8(^-=M#V&XQ9t?&w6j+A>F7fu1*hcr z!9K%Sm95GPy>h0i*`_+#Ibs%@XfuM9AFnx0ziE19^!@0}8%`qgq=Vdp0`FxqZxRv^ z#hXs>9j~lLjKAnFraTi0KDL=Dg>2Ik^3qMy#hP<|j>4hjTdL+iFx*UX1xPSWs&nAu zLSHk1Usp@1q9A$dmCG9!jmGt*hDh|7e*z@MP6__9x}@fnC5ZzY@$($@=^Z~NIn?#R zSM{o>8`InvJq({&d@ra^R^%0mOxTA>Q9?o`EV4H$^0Gh~f0?yUWLx=0m0Z`T}nI?hW5QaMW%5z9~wCB?s8GC{ZU!G+x)L(Dlr?O(w+TMkH1oF-0fHb`4^A`}s$gUTveZ)TJV- z9g=azuzTtm#Y94eS)5i(HEifv8kDzBy0+6oVOnmJKJ*O4+K(1qHhyzl#H(cN#A}}6 z_UYxYevq^1OU-HHw0QCujy8%s*%DWC48Au$@?NX2uPFFx9;f(2!Df8lqJ;I7(JeRQ=lK~LCD-Kmh=G0+Sg3jj zaN4mqx&u`MX;Z8X2GDd4nLtLO(*c@M<8L}#Y5mO*4>-tUG;Um_)92*!BZWJpfih*# zXxu(xOm|Z7WumA#dSP;55*JuO<2=!3{3M8&!4tAN<5kECPB4fMoGik7U>ra}&lR2* z4w)V37(z%y454`Nk7H=8bFN9<0;1mgPs0=YyQj>56+XSO^h^4h2<~+P5zX4u%20Pm zyGxgxFA_Jw3Td-dTH{N@*&$8q_c_v+H)UbT>5e{i$KM#>{FslPei|*b{jMzFe zA0cLjFcNwLlVC?O5lyZiw%Lfs)~vUYaA>eXx->N4XmAf%wnzw+S(3gczwl1OZHIZq z-wfbU37D_~x>n*1uEHdd0JbY7)*j(?NDOO!(~MrpMZlOqJi?RXX>5PNv%*MVK^c)h z)wQWrz$#m>X>fU36s!=a6|mU-qh+Mse^$TN=Ew`d+`2F6HN$q(+<9Mu!8FD-+V3Pv zY=1K~+lSm9QqTV8;;p7nH{_nL{ZwspLvDggH)@0S?oV=*7jyVzQ#!XT#WrCh*E9qR zum9U$`t6chE=ky!zQP|Fm#qVA+dW=Vvc9A)sAqp_;Rhb1j0huUT&*8=b!h*fYrmd- ztP1`w{J>qVTz0?q*siF^0YLQAO09DEs!Fp^$+I^e^mMWbSKk{feD5!i7u4^k)cdUz zk~CP&|MsUWvaLQJRCJPg`9lr_u=@~(?L9&L1!}*lWNsLHI;bB72N?vdyMT~)l}FM1Z>>6pRj``>P&Ktfgss>?UWWs{1JFYvIfK&rJah&^*0NfM08jU1 zJGCAR>fs3Yd?2^Q)0}vHm$V<+isrP-CZ$Uog0`OC?6{J~4k2_)lAGd!%Icz3yU1BV za0CzPF|ro!%58UKKBH2(ZH~-4a~qTNtqs0ie`iC-4Qy$y*EkAF&PFr0K{(|$2n*jZ zjJ{dO=WJ-)DAK=+UAYYcZr7AMxkyN6Zi8=Uv&Ip1-OL7i^H!$P>}eZdQ$2>SeOqSK z7%Jg`flBTWg~)E--?i)-_052VmRZJc;Gv~>wvU+1yEW!69#nFZPSypNfp}2@r=82v zxg*>pxq?W8G3flj9z8JP)OU4*m8$Bu=`XTdsXCXX9yM(>_>xBaXl}O7`x7yXWr{N} z!dlC}!B6S;?hRJ<>*32J192s7tbuj20|KI@4*ys4pG)>aI4ru`pA!Tsx6b)S!^SV7 zjZ8>UUn5`s<%W($gxy@^3VoI^_g&N+cn`R=4ZPccc+&!HTwd!e3ey*~z_J+Q(aQE; z&ub?G&kuOoDp`ZncKRK9hxBc`ujA+RbxQ0n)$f^i@QcffcctMhZ@OojwpkhRXt+RDXnwEO|z)mKK*<=pQ z5w_-p8k>lv{EQj8C)i<~!a~44$P1JlZ>M(GKK`MS4@v&J1*43WOlR$PJM*1+@}2AO zNbUFLm&`Azed5vgKl*-B*K)bU$7joo2)oF7MY`N}w@3Dy83C`uxNW1N*TfE45YY=I zTeWV}PJ%M^Zf-z(KW2u9xqDP-t)7OCQoH{rc%lic0=Ya#uji>%7J%8$#3QH|Z@ze^Wp92-&oppiz~K`i6wpca8RLH+BHmbAD$X~NQ^E!sv6r0flIM}nWI zB{*%P8rTs9?bh-ja|-Z~PhoSd;9HzDf2*#ZOVjF*Ejt zrX$}FqT=72M~itUZ}JJ7Mc;cSgkOAc)f@o#8r*mI$+ zVM&v04NIG3Yk)xOp{Z>RWxX_&t)YwqNqb|*55wM=%G@ZlHbT`M85?E*I9ucHtJ@k# z%7n3jeS)>YDH3s-%ncqpr?4}qWyX)Rw7gA=Fa=~^cpIS!Q^$;pAk(})G8BS~C`>ap z*f$dQ=yGy9u@YV)J%)BNFj?&*afuvVSL9;wozgpiw+B#E<%UDE7O->yh`FF8Lu@nf z2EXg-VxA~2%RzGAf9RV8*(dos0Qy_JJbUjQL3inI&mwKV((cgvypQRf&ykhhe{aw| z=MQ<4ouW_`GdpB~Pylqh%P9&ucF6#tMRc`n5KIxO$QA>|w%yWtG6L3g-lf7|D~yJ^ zutOwll|68M?cKHakZbGre$t2futdncjvq8M_4+U^MwFGwo7q8K)HroZ&FDaq3!15L z4d4iCXRp7#>Tc_w<8@lBrstWO209(g$ktK700jjXl<`y00n{!oJCFl)91E1TMYs!k zF@#jc zT-%)(2J%B+4IovVI=Bz?gf9z>q}^HvoSVYz3AbZ@OzCtUovyMYa)V_q@?>QW2n{Q; z_ATgxrN?;85th#AGuMVL@M0>$Z1S@nk`odzX0_C+G8x_v309{mvi21 zO99)!xg{i$u?{l*D0N9|r-{ukVVW2%47U&M!WbZy#RoN;CN`Zc9cvq0kvfiS1ycb| zB^zuL&yiC0=Xjhyf;d#a$ARIJP*x}*{10=yI>wT6MuGxKlJznFPM!1W9G`&mXT&zg zd|#hs{tzl1EgsfKiMahXQJ~XwC^WzvMEhFz>??P4@j#b{%JbSCwk9|8!~(Fn zwU6e)Vsx(ewOWmvZveXn^(76;&Y#K`u5!cu;vc%c`gHlV_0>lx6Pg!S(^v0t<)+YA zr+>;M-<1CJLGqlw+GVAt(O3V|gP5eR{z}RJy!6$v_q{!R^)1Rzudn`-)AO|u5a^xeOqel zTkfIuF75IRyQq$;*b`N5bzWA(? zV}0?@VgL18bKai5c!=`T>x+9W_Zs@5mO=@A@hiM~eeppDd`f-s9tV1|z8HIt@Co(B zE>Zu7v-diUKNP3Y)c#Oq6!=4T{d4e#CN_7qU;7yJ8`CzLcUQ8_s}1FXeOKn*Mz_cB z{Gm(oOs1LnL;IXlGvN=F^T+#MwGApTll-B@zED2t00){Y6yfW)PwRtk&v|$7?OT2Y zfZA%+8YgI1TyMKPlfA*WZ~t}4@yItyh4T0DQ;JiuU6QVy5j>Sw0;%(UhL=8yygS`F zJiGB-``w>@_lM60E0L>jhG(bWb;0&%?QzuW6_?R3&uAL=m{f~f{4B@Acq)%Fkpt8# zk?6eqH1b=v{UrGDnKto<1Swvu6Z2pVKb!^1ca8bYGwtZD7%DMa7r^1yP3aZ>_r zYz5< z_+Jq0tYF_)#!ux{-~;zQz-0ORg+ll+8dnn02*G@1*MI08rqJjduS*r+*K&RRVIFFO z1=@Lb6eMs94Y_Q9C6rw5YM7Pj(h)^{Ku^5XNUXge!5I zhO1B-lpwM&Y7YAFWXtcD^rYx6%GsUYjE5fY> zGK-B0VKto((m4nDEf}W$E*z6yfaM9|(?yved@l7t;osAkOseOKSXZW#e zUqn;I(ulPb&d|2!-TK{^2vo7X3C%E@W}2L=U?{`39lr$BunbTKEeOOSY7|041DYy| zt5K;^66{P$+u7?JEK=FFBTHrNo&mRar=heEQx~FYyEY1f=9NLzvSjTk{b(Ns&lPF5 z&!b>v(r{WS{A1*#_)B3WcBtpT5#_$B*9mH{j|aMM@pI^i0BEy{Bh@C6scYpFI^u$_ znVcC%K?_vn3K*N&AbQf$J)#Z1;Y=7R&t z7cVev$k&eOOE((N; zIh^%99hIKPn&zv8lxpuHshxOWyQ8Ofir^;;MR=z6&W7CHn|Id+3-g~$=TO!4yB7ru zZ6NexUsi4>T2^2x_+P)%XJ>m^Q`L*e<^%?_A_<4MPC6Am-}q)i~mJmD-=d9g&?QTZ3PYY)|*@V-}$Ox2#sr=a!dYB zz_@s+F?S@l=<7(OC0q5?LxNJ=^1%E{_T9rs1=Kb}$h)|%=q@gDN)0G1{Wli{Jp;Nj zN%7~zf%WuT8SX^7E6<1($HEf^@5hFqvEJN(MkiPd%!LO9b5T&ie+MmRH)!PuBdh37 z6v=J;JWE2gdnFf@C0~t`Y;d@m2~0eof!xL~Xb}k@aJ7;PJ98WV$kJlK)T!XVwLOqq zvfdgVNaW|1JS4DjtI8BiYZb1_Y_VA8B@YX)WxFi5>TYQLr^;+zuUi4h(0x|TTOC&y zvNQ#Hjpc#b+iWZZ%ReKw_+QDr;Ls!XJ^4x@`_=}F_j!I~Mk?0Ncp28+EJBb(xVz_G z8#Gdgc(+0@@CJ>F9UM@ZXLH*%BA$(pyNY7t^%i)hB0F+V$}0BlUCJ$8T#U$#T-?mXO?5nQ zsv$MZ-CajmmJA?G?|RzJiiP}5o#g*%N}g<14!0`amFMkrbMROB&f%LnFWmGCZssg} zQ-yOD0q?3*P_^e6{8Vvz%EBjd8$9!$xKdO=%^q=7<>@$(jxYs!ju*F!TSc^<2EwBC zu6o50YVQ^@$EPegoLi&`F0dXetRa zUs+R7BP=ANnY4s)b>J=7b# z3Kv+usOq|a!ItgVu=h{m}sQ3 zM8+>nG-BN>hKduJ2Ud*1^u^$JD-$;Xds`VZG9PtPuj+G~;u?QSey~thX6EUn z3_3JN5hFgP#lvKt-)}6?j_(28b$$ygV(xC+5V=_}vu1KN`Qsvt?R-Kg?K~`RIeJhY+nHzjr!*7dK4B z?}%m&Z8^3g)|$D}J&E6Kxdc0k$C3SP6gz$&osQoDiC%L2>-k-aihLoz_qqa8^E>4; zHtRfM&V6EnI^_3_p5KMuDlWoaq8=Jwk&rPi*CN#M`%}T(>jbif=`cON!;B`-1pw)* zl@fNf7D$LSC-e^{dHrB>e9>?EOD9KhlLl4Wx9ZB_)CH}Lsvr ziRZCetk5IW>p|p-(Om6&p(UTU}zX@Ist+ zdzfYm!|f6ci0JL3w5~#WmWXlET9h(jJ{kki=9HzOq{D`EF458u!eN@uC6b1AIxbRf z7cB1k-7<&2YGv43{3~lwqv%=`KCTwm%}UZ#u%HcWDd-tVwBtKVp3{Jygr*5&2)_Fa zl6wD$+L9_<9}~!T6*y@1kZSQbCI&a|Sz>Ubft0ec6UH()V@SSt1%n@rU1B_=u}h4n zM;_G9gcAlEDWS&WVM-7!9v)l)AtgQTjM?cpF&>U>Vh5u19uWibcSFb)5<)t?KGa>n zil9Vne#Yik3@;w8b7XE4cEEZis9O7&-ZlSJ*mQs9m;eR~bwkAJW2hAofJ}71KTF## zA@Zo`hrHtuVNmtCJkl=6o@~x-C^OjY$9X+QBN>~>PKuQ)3$1OI&#;q~!!iMGbaeom z9rhw|o=XzcP$X9RQV!Vs5SV*SMddSwLQ*7-I+3`*ia7bsiBZMJuNs3V)Ekp7V#Hx7 zez^iy>87j|-H1fzF=K;nYW>el8)l{r%e5eerwdwb994Qk4pzkXolk%EpO0&AyAL$w z<M_|@=5C-AcLlC(pX#=3{~%I7scG`)xP=Y6^k{C|P;VDVF7 z?LNOy^>qQ>o4b2Gb)NHe0KeoR-mM0m$M5d+KBKf-qoh5f>~0$+S!cUt+)}2~H7noJ zZZzd4D0C?F9nhzjAOzQZTkVVrY!yKOP`^((B8(P1B1vYHrUe!7*#^}Y+#$j3p|ap=2SkA;dbelJ z&Kd{N{{vy#0f_7AJz#0Xqd-^Dn__)FiQp3Ri3N+pLPKuB2x-iBL*ziPcsvBkg$T`$ z<-WLHfd*k)gcaoO7U@}%FJ!UBnqhILTQuIiUI7O>2~W^L*;K&>ZhzkPkKI;pxCv=7 zU&MhS>*P8g>P_x=SiD!JKbmNft?_Byu7TqQlS5zMNawciN6In3WJff1e0Fv^x4D-` ztZj+EhK|zt=?5>&3jY27^B%sc*U>mXEh~fZJ`$w3t0IM$F7=v*AKSYL%B44cg2|Wa zOK+U>rJ(1qO!DOenG=A*p~MW-p-HBwEXO zHKXOYPmr{QHMI(`46HI-a~r$>-QooCMV3$g+`cmkwv+Zk-Q!637qgGE`zwI2fZ zK>|=PFIOK-=QhlC`Ma;AJ6|Qu*jNR#{mrhFT}05|Kn+TlSZUUkI&3T%=F9Y?I}a=W z0^_HK(w(ndr!11BEgL$P&A+j+W1Ffsc08&!mymSp**k)=@^|RB^do2MgR*(Q)X-5k zzcMJ-4e;e3MPZlC`)EVQo%3fefeosGb{uGRLHWV6|C$0HQR!4&aKnDRmc9dz-@zr6 zE?d&^NAqhMJ4{mt<^7iXOM*84J&idt=Ndb<3)i50M{t8R_7Q>?_8TTYuitqe^+>!Y zZ0zUN3?NEB!Z!v&pp@zs0AX{T00@s?QB_Ko|N7a*H2EQG_%=Py`E_tVVx@1E>L|Sx zi~^RVRG4jIl^>64k}D#`+5Llw~4I7{ItGG9d>}!tLxjJTUx>^8$jA5 zY<-z$?%1(sEVb>LuO#6pC;X%JXkG46Gr7R}84dEUo;u|G*S~zj|7UQ9ece|OQ0Gd} z$`Ua=zwY8q4ert07PG}5f(Z=ZbH9vbA>hIbU$#jCz)Z57+Fzjz&Lb;x7~LZ&L=t-e z`XZ>crGsgu zq7^6ryX8jN*~4l8g9ikZj>5;r;ee=O9$MiTvyD3SqQ+TCu)D#_({;IRCUL3v5*e&H z$sjNY8)v)5i8Pjnt}t66HW&~xOxhI>#3SKAhk1CkS=%t)ei&rCw&NzX+KO4oUTRJZ zgsL$TFBgskHbKEiToU7N6hr`ND1hOI;u0WNU!u_^TN!k9+{WS(q#`vQi%TLER}(QY z5@TWZ*N}~cuE^ql&k#DY6Jo-7h}r%lp#lWYB8~_43siTlLVhz zl5DJ)&vzs#>#2&$*RZ8KOr1n}X^Zqyx?_vhbuy_Ce)}Y}=9QRks@BB4{no~g%~EMd zv?0qxuRZG2UdEI!V(pNX{3tvv0XJl|KLRui7QQuuY%G5VZ#|2oTJ-jQo}Sm!?PZIC z8}?A|pdgf2^Yo;i=FO(WMJtOGUWzSRzDIBKev0xK=u3B6`Hxt;?}_0467^pcY!8)* znd0Vv1r);oX7_6WGbTlQOP^&pv1*5|khNeJ>SF<`iWa-sTTvn11G9qE0cs8eJqNUf zynqGAfuMpfL-pY)SuoCj4WjPvY(2<}ti$euvs88eEZ!AMvXUEvTJg1YKQ~LoB=A=r zP*VdqNbrvsTs>2E%}`K5+HS*#*o4-70O@1zLfb`ZpG8qG4ljvkaxSR3-D*f1k$nQH zBiY^kvy{;{iwg)a(OWTFx}V|&`9RzKDuzr*v4eo35!8OYsd=JHVWHU z{WYuvDzJFfJKE<~ss+7Z7NW_maNXc%=miT9)2(P>Xdbloz|&@2cbIW4oTRzByJ94| zhYc02xm&sP)hutG!6&^@R~y>reOICr*MMclEb{c1x@EXewN&69-1Jjs<58gG=5sgq z;SwW7Gs04?@FKHMFFb0B>G8ygH?b6>*oEl6z8S3_4Cinep(t0kl<@0^bO#}|ugwY` z{+oAmNw55q>EJ`??73!IH+C#1@TTQfz29QKN*KRgz>}V-#>}Vobc5ZmN znnl6uy@vAM1ZU3hEuy&=|E|Ajvh=r+zmUy2ZgZPuuBJPhQr;rxb5t(I-Pz-2i!(g! z&qMYa8RXd1@I02{ynj%-rcwJ#m>ct+!1k3~YRvIPG+j4_eXdMmnVf+hS>z<_GfR-o z_-!IL2|Z?Fek-&Y{{i83(9E%Kn(-{_?m-#Pp&9ptw~J+SehX7sV9Y+oyq))T@R{Gy znA@f?Ho*S?la|eY&@9}q!N+B#-wT`i)3Bu{WImJgO>aG`&98+9?)PLW%7%V0w4uKl z0(b&koyGi($X5QcY-QmpGxy6OkUtR+VN9pIl}tZeQU^0JX(fLzvXX%sTghJyVSOn? z=u2iL%c}qT5Y~4?Gx-~#nfztA;RpjHK3De_{7GZ(Q7H+%{A%ew;xa&1xQ2#rUKA_M zF~iT5giU={SgS|0+GX1rQn0NyFiP3)5NbE1U11%z&mT`4u~9_#ee~2LAC7K3+nz;l$&i zrECrBF0jy&Q{kj3hk-ejksR9N(-_IWw+U6}ENNs&v~o#U%h=K0w9a~y+05#hnax_l zScqGTqQZWNrZak4szkH=c4U{Aa6Zp+LBj}y7DIT_hj4}o__-DgZwv>x%?a0<&wcvlfCS$=dbd#$MowH zk>xCK-?XMX47?iq8ek&J8QTiEY@fy4Q)oFCSj{x_Eaes`7P%G2E#~u&EoWJ-Ken8w zvYhdQ4?K8;)yS!Qdf-I*T>~;xF%MhvCz@m%`|qO?r@QCo-3__%hTNHA*SdGCKX|ew zsCu-TX@m_dD^g;)>LMehYJEb&Z2KOpHOB0e#8aTp1~{r)gXm~jO|8+ zB=+q8Dus^Xb3u^VR?SjeXL;EUXISX-Ibi$Fs)lwfXyG4mDyf%)rFdvsNe(ta~omOdFQWiz~Gw|Dqavc-64lV`;e8>0tZ)zJQeaSDLZ>mt`0VS0H&KwT2DGRg?SjUnyLG|5Th^sQmF)O zckxHk+OAF4F1TGa(vCb+G2)xe{pbKVmmskBnFGJ;OY&g0z6_${xPu z&~G4^ms?GFu)1^GKf??4Gh3Q?kWBoA@B9x11+&UsXj1W)e}9)St#YBzwmn7pcJ{_F z4EZ_6&r+PPc0o9LdD|KQA=q@Xq22B~+pGpD^di0YiZVl=s+!l+q1E(IU)xZ# zy362N(b@`+A zRgB{*jF`?c*qH%}R&d2REMd9Xrx`KlgnUk|;h@uyA92S7;l^rIx2TVW0dY;&U|2cph6WiL19w%Aw&?TnHQ zvWmLPtQqM01e@*ndgQB&$9|}3^jJ80~7gbhY#s#^RQG1z} zb`Vcph9vy2htKiM3IS+x&YXcHr!aq7MBq!f#yPWahSlX+?H8TagLU#8)9{$_yJniE zioo#UPFj-(vK_x~>JqJ7lD`i>l1fmLk&@SE$iTn3=j87>>45qn{=(?K; z<`k3*Ft=TF_6CoR&~G#H=J;%a+qd&slzqYb>;@gVrHV%_#$BKf<~EApv}NWHt}1%8 zm(dcb8G{8xZi)$UDb*vgoLdQp(=$QOGv=D<LXl{#uaN^`ae!eI97pWq1_K3&i&pjtcJm6*Sy6m z^eE!m`LAw9S@+vfp<+$l{K+TyOhgHL;D0wuVRzexCt#(jM@RW1N&U+koh;X*@DYZpUJ*!G`QqW!Y(m+0NYN zIbkA{Aol9w`Jif}wgKRpJ_=FWFHi^$V6Vx~NsHf3^*L(5T<$0s{=7=62Fr+uR7pVY zz%8daD?054X$h1*(qB)I3Rcxs{ufUf!aKb`n}bzBYF7cZb|HzilA25{6~rb9Dt2i) zV437Li(&x>0~V5pcRgdnra1oG22rdoShkapG2E6i56R!h5f6;c=Q-$tK*$_q<-^wz z>Vk{U*@+MPv_$5mFfic$qs#*icVi|xAt^Y>$`3IvY2?HGhqvANIL(Oi%tUMFXN zL8AKYTiIc)AoC(v8nX~qVJl*4U(Fou4knx^d&T2uG`1T~95Y8{mRn^4%WmrrKF$Fn z%@Yr-({Mn9fP>3S^t3a?!R16f|=hFx`8)>Z6{y)^CS)NO^hcKEk(T* zyuzlY?QT}xb}AV{&IZ{ ziE9uES1eRQxL%r94 zy~9KFAEe;OeCvX*Fs=8MJyBA_CJik;qm~wILa69XXU5kYcCeY^0|=q}`)?A_w68a0 z$IOY?yF4uRceJx_L#)uH92Tsx%094mmNNSnZID!1B@9;}xz@eDC`fCON@0*6qsIMv z%LMyU?QObOf(tC_f{&}t>M`iN#hZ@%5B`TV{n$WF11Dh{nQ}J+HSPE&^bTFVM`7Eu%5kibQkty1ZErI??3F z$|B#BmFP@ATMPhvr4_xKHxQ2Xz2=%GM7ti_u}`Yj=K0xHEzrT`?e-UjnP%j8v|kd-I>5Jc zs-{mZ%(pqAlk=G~9x_mMiadyalffaF4HJO55bC#>Ff z%yuV{GcvTKuNT>8knE#Kak*8jG;Lc_Lh>;i zn-xZ6^>OT+YCVt8G8D!v?hXlt7$ei%K8QOW#dzmt^JDkJtR!eYdyLnWAknHkzV{Mb z=H>Djw0$Mu2h>3KqAU#cobTxwPOFTx_7zaa2g>J01Q7(XQw8Q}JNHhW##tLpyvcu$ zt|fCVgceCAm@|arZ#HIvj<1RoD_#YRHIdO6B>G`Ju#0(xI8xE5sojM!*x`YFkU;p4 zZ5wtJ&t9f`>I7^~g+;+i4d7)B>irB7$c_mOV$)pzOwx#B7#HM>oF)od%WT-{;7tg# z6~>2@;+~qZ+kUuac{KB1 zu)bERuSOczLmNR3J!ll$&Z^5S@$@x>3Eej&;;D~xZ7&PH3~r995FTBc++&-DQHPB^ zr|Gcks=I|w6o1?O6{~8n#7Y`p-4`W~of}HweOY?*vVB=sxZ5{8_#_yeVgct=glV+Z z((HY#U($&0?2aq94Fn(OYi^^0gfn#mE5dZ2Pc#*Rb#|g4)thswzN@()#~ZE(3KG3B zNAb)qQyCoXj#}`hoYZFK(e>b<5^goZ-;J9{ahQ(n#8K0K8v!}GMlitAGK3+iq3`X! zPF3d$L04zxPV0xA9&vV-U#-#F*m2A>Sj2s>ZNqX0&8(s9i)K%mlNA1hTihulu z3`&6-O0&6Z~}*-hK<$K2|26zlptDvC?&H87zkC}#bPk*<1!eUzDetbKaWX&q*lzNq-XRT zlTt){m_cG0-#X`EpsloSF}v4{0@gm$s3ramOcnlPsze~A8Se%^X zB*)Cr<4{4j)>%3G*b3hZK{v}UJ%J-hpO@znB@;BbNC>EhDSW_Nt>AIK9~epF?AaO*cvwLw?=0*fuIn3NP}bI&CkTn$!o8SLuEt z;G-tpr;}uF8|I)BVeZ@anCp9s;1!HHivlHbT&RPatALu+ip4(4?eMpr<1JP9Afrai z@PNp4<+#z9uBaAQCmB|*1osSbr<3(ZID&mJuEo&=46GsYmJ?$;!9B`tfY;4k8VdWm zuzem;u~}mlk$%ESGP!{ z6GSt9Wty)tW0}Dp-`FoIFlvG|VX_#(%ZG$?lNSp0LWaV`M>kag&+I10^?a z^-`SG-uTA618DZ^#0GmqzUekOEMG?%j5`hID*c$nt6qa1{U6gsjy9&2G}a?-RA;k8 zHv4QjAuH3ZzfGlGegQaGxWWBL#hBSMX5*R2*yd4V$T9X96oi9WrsHZ_?aSDtX~q~E z9?F1&eTT}NU0{et$m<-Wvejw{b-1mJA6w4K$Gz$~a`aVccNHUJ$vl)5I;MTOG3cZo zP#LQmYgI#?Iqk-lQN}ll(MAU}vz(DiIl3`!-7svmOu-xnWksB$lWd-Xyv*|zx@B#Z zMogi+reeTI$&^=6gsBs|d~F3HiwB!oPJe5j>SL?AXU`;@n>vVdDod(7FsP2;wMPcf z83x`ah!=^kTaQdFF)bwsZ7v}f3ME1$48nyA^ivaDJ_<23pY$e13+%Ey%{6!5qdGQr zod3|*P?p(fIP(K@XFcAe{5Ud4nbnk-FMmfG`u?ciD$cCh~WKdH-zPM?d+# zFjdRzMtCrA(%pPu!%9CMZD9axs9%Tq*crg)7-B0Xbx~%KeW-MZlXyL6w9D`e56{?r zF^L0z?v4SAA_mjUG0MHnI(`$lvgx3Ck|9*9VmHye!k-O_7jQvTpfB6c6Thlsfw@bZ z57e|}x5Q=-bzWzszn&!Ow~w%sG51k9-+=grUM%btP;US#g$pM&tWB2+tU(f-IW z^_s#jQ21msKjuLq(1Et$koF_|fAj@kh=kA|hj;#w$fXJ}EtT6(kZOK;{%$h^o+ZKo zh;~Rj)m%U{6f7LeZ7GAcIlSh!&1~My+?I0DJ2yfiJN65WHn}Z2v{aY7L?RtuXkBn8 zHafO=yfbz(DyX+Z7L>7Vq@0~&?ARi-<-@543@|uIve0elxG2CJpW8kVEZnYv%56yr zDGugpQ+-En%K~0CCo1_1qtqyOyJF_pdcH(29CUXuizLMkxSniNPZkA>Pm*HYAgDt9 zAc;kz>jY<0bn>dM!+aQQB5zlB$Tjq7)`cDBwyX8J;GVZ=;Q&juCVNeGf^PMOUD&8D zuqhuM=S&{n4DLD3pj`iJkFo&Jp3T1Va2Gq*MCuTa)A9?q{bvRIEr zZ9*h*`zXA{9ANK}yi=;M-OaXzMqo=2^8}08bzEq{;?yvf%)Zdf9+}<_i9yXf+Zoh9 zMLDBBiK}1ohp`ZvrtaU&Nd`NPHXof>-2ymPznR;p(K2`rikpQ(nDdgs*Ib28Fs4{$Z8jPXgoT496CZ0~5aUgdau0hF>;o2N>vV9mj z5kzEn3owHY^TbL1oDCg3O=JdDIS%M%xo)as?yD7& zp;1Mro9aRRbL?|c=P9?Z>DI^=5%oL&X=zDrqb3bxRdkY_gF_8ETC2Zqws7egTTcd= z3oqAhQeOu^x=TbA;V8f%%fs3$UB;Jt{iK1Gl5~=rnbWz=$=R=NorV|HANKgT5@Rb} zI$_5puoiSd0yY#OPxX5!qMZil0Vr*)_OS7q5(RppKs{kA5S9QT8H=r#7+HT?14~O< zAV@`e$||xUo5DM@7#87c0!r6rh~)t-Pq@u4#8c}jv4^8sUNFUnt?WK`-Mo8I@Zmm6 zxESJ9r>8VT$R1@~@XsM?&MReg@hw0ylDL0BKiRYEZCL$>x9vs5@ zkiMTP+EM3(bia16?wE#5er-NtCXcv$I{qqTeFlfGs--uUeu*3EIii!vmVwbJ%017+ z5LVOBE2_>~M;4G)@WBdFS7GPjv5+G@ST$^Rl36v%bFK;ODJ$XJzzhw0F02%^q*yh| z&x#9_WKjliMdoqmvjLMoQLcFR9aX!3Snx2fY~?3&nu~?~O~U?ua|=n+iokLPpA*c( zt_%guti-m(xO7*QYriWa)0j)kxt!N5Fzv;y-NVn2or2Zk*`}-I9_kHq-R;Zbp|;aP ziqdudqvmoHa|bt|wa%hm2vFW2oQ!0sVFyq=Zq1E&hYX#!PpoJO9aeP1c#xquT<{{w8}0qszPIec4+(c@nlV z-~Ay(MOn)`=T)!#h+ZC_ca^vH1q9uVOABYnVE&z>liNqh_IG6PzWZB}gh{=veYASz zG`($aA0^|T$^hqMCE2dd1Cu*PXIPH!S&pHgqMgcNiufMOag(a*JT+t9ZQk0omhwOG zoLB9w{Vp*A#^V>G+Zd`Q5wzL|!F4IaSH!^$=zs66yM+(UQmnrNVAm}oNcKY(yrTe< za~xJ^AN7;3mm^=W(O{CUF3d$icW{0UpZTZy^5UFwqpTn-wSYw96oe z`wXT6jBZ3m;o)Sc-G&h22Y3$r^x#pytvI3Q#lo}2-~k!Neck<+y#YY()-u;yh5Iji zD4pBN#HQ3+G(aIClLFJ~GE?@1_z^w8)5N-F=vDlTZ{?&D%kI^i3Ur)Jx$IhJkxH0T zcW2VuBpP=en(X<(@DY_Vpbceee@mt9QEpnq>)z7Bs+%IVYSm46zv!(0n60g`_^-?E zk(2H>anAitV9E^z$qP`smJCz=YZ_K`i&+p}`-k6i>jwlk?sl8c{STL8o~@(JXSJr- zSLglh6IkbiA%dSwZup$eGCqlwpT@;%E%jv$i@=Mv$lW6^v>|r^Jx+FSV6hmw^q#Is z2B`-@^jY#LNh_AcH{jnuNw7#GL?R*ygw?j3lnAR$(SbG94Va35nkAq4r==>SIE~iT zj3S+oz5$^SM@ABGDH9LgVcO|T=1%Z5q59A6*OKT4y#9O|iS`C8DQF7v9;+tvh4f_Y zKa`Yw>k9%7g@#GJPbwa9vw346j9S1bPLu9Kc$J$av+W+u{{E%}ZrllzTP90%I@@@E zGK&htg5+tn6=zG050K`V(%{)WnSGTn_TpHjE_{#_%NK6clBvA=FU;RC?WF!pTBr=SFl8#Pv^$JdH_N+K=aN;1kA5%V2`%z5EeT~U}6d&RS zj3zb|{g}_OmQPZ-FIa4ZWR;NTnMo>Y z2A{(q%HPVL1g;gw1dL31s1X0m!QBxNen9n6RzQqn1#kh4 zoc;RrGaj8B`-aU}IhQ1h-FG%nB$E`r4jn2)6Ra3ekU7`~XsW7KR{3 zAcnvQlE}Au2W2qaaR9+r8ynIrB#jwp+%IQD8Z*$DAyQ43`6idIF@W(t0lFj1fFyY3 zS0T0(v%O6*7t+cx!*VRUjTvypBRHi)sADWxM9E6un85(dpgUv+L0WiFlo@0<<(a{O zfElPMtpj72fyRHp48&?%S^7qp0U4sqz*4+=L1tjd2F}S09uJrSe#q#ossHOgIc8w} zb1AwRxI&}2!ZvY*=R&SP*FeGQE?5H}nCkm*>#lb+%w7}O8ao((re6?Ezd~z|;u^zR)IG$c)ytcai{clQxr+uLea}l(7)#D~!D zbZrwq(DoWkMAt&dSQCDr-Nd7MkcTMaX)Gn3(?eQvJ%Zo_ydZl2RVbrMK84GO=OFZG zg^VnW%mF+Ii;_&;)l4IHVUWqmgqb{b)Wlq|rLX2B`)GTsAeSJ^RNU(%z9M-vkoYcC zKkUcq|LImA>Id>NXdv5-Z@+k;+AmfJYJN)1e_!<@jH-SePWdU;&k9)VS_B5gl>h!( zvG4hly+=yQS=Xx5e^bw=TEpL#&b@s*)i6*)b7q>#`$>?5RY@XTUS?9$Q z9pA*;OES*d?B|pGvff@0$ENnN_(l?WRX>Wi+wZb?n^*Of_!6%w6R-EG8sarx6%GV- z9arVqn;C><@gyDv@${nXevsV{vioG0PAi$^h=xk>DJ7ZZf*}>;t013(5|jWSH8JhF zQLRvIbVSI8Zz(r<3i$umYp?(Rv-Z+6{|5S(fqZF5$qz#wKMP8({@Jw@=2J|^z&}Vc zlGz`{`}EuK4Tj?VaSoPql>ME$j!To-hvGeau|7>?SH?}5S`rTE+`8P#>-kvC%c_-P zVNT-f<^<5XZD`L3!g?cIL0a(hE;v{-lF?iD4b!uIfe}mvT8**#N_03Vk{z!8WQT*0 zVJU#o#kp|_csahWI+@J=Al}VeGW%G3fZw`~rpmgG)*07ztd7-oTwjq`w`=96#EvG_ zX5XysSnVT>t&KlG%K07l{XoCh;D2{tc3*AjKHR3laIq`#)^Z-r_$iqZrGts=+W00y zs9Y*T)v_8+wKCqeAbTdU<_XCL%dZ>ps+Pr<)ULt%maetZU)YJ58F{Etb8j(2>z+m)_JKB>i7 zw^p9H+NQefUUyO1yN!!9k=128>$16QuC8;ax~_B3Pn33w0!Oa%9%14A2y50yatn+d z*RB~VO=ff6-_mifmi_jI^hEkHwn-&MGIOUBmBGi9YJFAf%d09~bGFo5 z`!_Vx^RGj)&u6_6WrF3stSIkiB6(|LYtBwuxr#cAb6Q0d^`U%DKBjy&nzM4v*|Jr? z?)me9#pl9cTlC%7rYaRsN!mXWV+sQV@*j-^0bW&Ybz)7fCQ*8c^pthh&O~-=VnbO?t@pRwr~PV~2`ZiY>7kv8((dGjDOV*oWUh)O zH>|u0RQRRT6?Vu61Efy5DvuklYErFSO0QjG%`57^y08-*_6)IJ)%+M4CarApe07+x zS6j(~>*vC?W(;j; zG54b-vTW<-5o`M;YhJI!8HjTQlE}`CC$c*vvkS|K>@wJ4c6(j6JG(8J{YpHR=sfH* z6si-Y&v}oGG6+EHF7I!j+;HV@8liU{awskBPHgy`pWGl`p_YD;mR?Fjr^MA#N4qO; zLEeeQ0z6#Li^BsnV$^xHq9G?}%1akT8wq~I^J|0`D_UqXyokVR+tnxk9Y(R?8@RSx z7M}qS>TO2dRbV6OQ=q!GE|v$WmZfir4XFP{z9?X|0?ayJX$-P|7lo`i-az|k09qZb zrk(&aWfyFdyl?*+bqEevXUP{gEc=v8Hx8cjgR%N21Eb7aC)yDhOQ4CeI0*S5^r+@y zAD`-+&!hlkK_7)t38QO^qpg!xFP|6}mY`a!;)@d^!{TwKP3P#eeS#M#?Kz#0Pjt*g zjE2}msT`f>ls$*zD+4*$vY^oek9VC2hEW?lb4gKG#)vOl#ZJ6y*ZOu^>ZRK^@)I^s z-GPrr02uma@s3o{{IIAldm@2QQm0{XI+2y`q5G;__E@6xjmoQbC1D&J=D{_}el5{? zrYzV*itHbfyzB#lqhw82DSFDBmoDQsmGi2~N*SuLYxaJtKaqW2SWxRp${K5DGW*hE zwOE6vN0arSbU0IwuX7Hb=WfHwLm}mxdC}gKR<@?tG1r1bv}Dct=AEV$A|mmRqN?gd7PByS5&>~?zi!;wn*g!Zo zaFD*n_AxEJ)oufwS_Vm}9ITl$7>0DcCMB8tFW?YIejZY6UZk)K$)Hd5p8^^wIdNT- z*>j!OD5p3$%aa?Xrv1G0ok7+~gZ8u(`uJ^97o>2~-1RI4TS21~L|-*1Gku+*vPStr z!q6>ET$8|~O&Q$Zrl}+?4LwwnVhbR3mV)-FARI4c(5d<82^-MuHVWbq3OGpty}Y9` zPh&r*OcstonxIH?mOe$nDRh>)EYciSJRXr3s7r7Oo)Di9Ze}-G3;6uN3d1K#Nhw0D zr5Y19TEJ&YIUouDRsLv|;dMs?oO0ib#fd`0o8_6wiz%{)FCcqvhQe!Y?1W-2}J=n<;Up;I~}vMjc>Il*Pr zwVTg=OP*zAel)VVq)clT?&LvDzPY4bA8jXjv|=ICPjpGi)r9CwCXP1SC87yvEM_APa`Oly}dCO}YV1(z4U)JT}+h)o>ZJD|&(E~dmV5^A2 z))&Htk{?xA09(J7n5{V=c|HU#S5T30g4SD#6@l%|tT+L1XRtYF?Q?LEmv7IX_3(07 zY-1N)Ezq3&T7ZwyYxsNpg81V=l-D{Kz}b2#gz<kvC%DkaYs8Mu;f`L>GCS;Fce^~>)Z_3sC4#>%W6$5(6T${EDFtwL2?%Y} z2#0O`B@Vby#i-*^OWD$rE*m5Ye^!ixO?l6tBkS=RpMzUR*=>RGhWI?s`Yq9cNWt17 zvF0?_zPuxutD`NUN#Yl76;&POZkMJq?sxf*V$e~epUC`8@=11E%2t`ncI75{4H(*- z=}ug;bJZ&}je}`AM;Dw+LkMP9FgTE=+e?U`D^@@2t}c0PQnKTA^hmd(;7j52y~bx( zF_yfxL_Z7WmcRgGndz*RQ!%fi(;P-CekvgeHrZ=x@O~*5JF$l8B>-0OVIEVimbYbC zfjL6P!*pzBOyx}ZFhwYSvcBS%DW}!tTqaW+BfHt629awFo~tNeo8GSc zpsoEV!uctlM%pJVVlwMN+;(b9Cl;@U!8!lNS4&GXVvEGZxYis{bXlyKm7|u6ggjAu zYi$dTIK|3f3QjL@)mga_ziQXeH;YsN8{HtpTcR}ACPVpf`>t+wVr=rym7$Lx?j#vA zLZehkY-O+=gGmMm^x3qK*;!s>wDQ8TC?{98z-!F$TjJ7FPjPysrEu+3;Zt0)!(HEU z0?F*(`x;UOAR*-jA_SiF93WlY$PqG{ZOqkrw{&UOsMc%B5%xF|2fV#2rv%Jhjb`wD z2W7hXtYLtu=#VO!lO_-TkStZT>1s8izrMQr( zVF>dS;53p}@=pVmHDU0rUA9}g_y*TaNRPTfwF(L^!cCy}HvAYfa^ils*U%1=0TYdh z8d}}yRk2``(gdlrA&~JK6ZI~t2K3cb25}Dr*_H%xmBHFX`Lq~Pk!?X-HPDC#qP>fJ z7W7v!JT*&{6A~Q*Oifz^$RbGEgW5tUVG0w}wm>Xvg7%9MG)gNpw!ZoZ9Ozlcm$@-o z9#~;_3C}?f6Qn!`Jrt*mVEzL1VEYO6)fa?6N)N?# z2@8n={6+LooH7E{Mbm@iP!UD2X`de)=c9+52qzqvaN74n53atvk-$X7OhgX|bj+bl zRsz?Kjmh9*REA?_61h~%rvVtgSw7Z_j?Kgy!KFz?;G-;JU=|an7IMd@X2eaLTol5x zhjMGZQRq<|!%{9_H~|KAHW1thnQBgI(%e%cGGUm6{PAbso+1DZZR$41RKr2f3@Iob z*K?z=Nc#|sM_PAOS-PzQXlk?r!ZK+kr;Um_fRYXOT~R(gQQfh8-G-mAzC06={m7_j z-SL312#_0sU!a+StYrMT4ozD2nb1lEm(((TGqXOOjY3I3REfg==aN;OH*To7lr0!D zaxN5-=Rrv6xfqhVk**Bxz=Bbrh=4Me3IXCwkpVG(Bymmms>hh)umixf(tkXe-IW9! z2szLf72pFjE8${*x-fhJYwrmFLbcXJH#mS$z=r^BDF _1Vt?Upe7R#&wL?9~)nh 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%0APi9{D<{-s= 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%0Atc9Ckc|Gt0s;``Z7+J9*Bta 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�kmi#Ko8n>CR~3cfA_itL#V6%#vrx7o6g(J)NrRPg|B_;VaN0Zoq@47tNc-xWUE4j~^trW&K^ zQ1g*v9NUGdGIiV=qT@A?bzp)SMENk~#ocyF_!x&$`$U6GJ!JzJn)?2x*J>LUb3(*!^uwilIV6-R+KMYNzfuZ@~U0_?LNzGds(N^67-JTv3 zyt->SV#S!O&?$_6&09U9FY$uB@e6BahHzmqu^1#$12_C|Ss%-mVp$mg8xqM{0*Gy= z?@FoJJobpNcM|pOqvVqiG=D6wNFh!N!4opf$Not5Smp!91BGI|yD*@`{CGeIAw_pA zmc#h9MP=I64T&<7e<;Uks~@~8rPv@2A(cb=Nj@|cTtp&b2AMz)B)UVsL?78IDe(28a13)#aNNKh+5s$WK&W zW__BZKUo{Q+`m3qR!u9PCn#8Oz-v-lY(qmw4MQ(AZ}_<+TJ~xTCpb^>@lp9GP56Uf zG;@C}tysN_t0`5J(NR03LW#+R{}BE?Z&a37+-2_mSyF|J7;D!i^Wc086#tw+G2IcU zRs9&2t#1UVCpu9UusKU?dtD;l#$yM=B!mChTK+k`!y|X`8T%|CC42_|3C1#F51)l+ z(|FOss>Z484_OGj@+TMIw9`gFgU)2(^xo$ZIOP)OI66OkI;r=dlTFGa<{&{y44th{ zSm+cAOQ3TK=nPB!c8IeWohI;VB-b3n>r?Z<>vPyoWB42w$LCbR=jwV3pRD;c^yOnS z0_D@#);Mmfm60UG&XApcu890xY&&}zQI1*yd7GH#)%a;{s=nNx$u4&b#^cIsWxgh> zt)qGXz37GXMA|}qElepfT1!~d&MvNfB%9^=8r{Rw0rBSAZ$3z{8tl3Ll&arzfdZS6 z|ME^7v?#81&6SU`$25{|4u^taM}=ag_vRh-vkOiUKTP8`_1jmb_=TRHtL8O`}mQ)%R+NQ-DE{ z7&>L^#ft;L^Nn9_@fEb{UoSzIf7w{qQd#aR*tPg}t7mnaV;G`m%cO>GJ=3lRaLn1l zF=?DW3fo+0ceL4StQR{^jTB9E81-XL&w%ls%qU~OSlrD6M7$@!%}rLjS&4QlN6@4* z$o{n~xPKFO5ya!=BvXwpE{62Ka5z@{{6z#4zh zT}@iw6(%|UGqpt)F>3IhKM7Ps!T^l4#~+!9Qt9p>5C-S5CvWqpDIIF+X*AD`NvjN2 zAZ|3P$)IS^fd#__0#Wo(mZqH2ijv0$phb`+Ff~RJic$-uaqOMCQI<$*@b1@i`~AVm zs9rR$+yvfeY^C+}YRWb>l{MKw)>`o;5UcRX*d+*O^9^ZOG(?tQ+1J1QnAY&N%V5Y# zy%i0!MKsJUXqdF;2E?hXuUH2S-nC#V&Gq>uD>;98Bv8HyJFHW*9U${!nt)asn}Hyr zrmQEP0jL?cuDJY^*WeDmypH1XjzHcvo8ff|!|U*uclgmgyoF4p zXP8fV{|QNauXedrb+5=AGxiAM&o+ZN5Nc0|s#i6C5q>vp`Nr66Zm+zHStWA&egoAkoKjX`xEt8p`N^X>tK{#yjXSov(eFWCXZuPbz5Lt$@-gr=T;TveP=32Jc9#_!=EZp4=YfxESX*r4`&=Mzr=Y6}f0OFD zF?2P-&|qYR>iMQGcX$dm7phwo<#CC+fDo^^tk`aHsG}Rumw*-0l5Jx7LcK0uhi8&{Yq&V*J>+Q^xyEy zGAka9*N5vOh2gV_{>uHHvHt#*{$kR>Ij*3m3W<;kj?F3<>r|mep5fkOSt!X-f%&_y zsZig;EK-f-lw;It{vP?j96!SxmmCkgOV+js_Rs3Do|?GRJxV37rqqa0UfvrTtVS0fa_=21qq15OpYhe;{09OVvql@94R8N z-+W=eh0lC*>ehJw!I$(mfzJV8N>F0qQ!3Ogb*uGGYHe#Y`(s#6CLm;UjDE80RmbBN z{j3xEsk#gfH#S2J?)l)?E*L5McH#JFf)(jd_Sh^nc&u~5MomWSs>x=CrivG4T#AN% z7^k6^_r+-FdvX)bk0fA(&@=tD0IbT2QO3;_G6Sq46CJuR9(z(SEKP6!r|+1y3hPc( zIGcR>)uHRTv zMi#kL%F)hoA#QPNSKhOEWBemd+A|nP`HcF-*!MCosIVh~kq`+d=q&@lwZ0M7ciwdjF>4 z@<`-}vqH_}lX;Kf0A;Jqi$^3 z$uv5PHDxwR&rFUTpF_tu#}u2_!laP%w`vEdlauzd$k}m9^ft-JCnZP(US6ay~bvN`#`|4yNKQ$1<^{VcF2ckO$jGPPBz`O@A6qy_5LkCc8&FW!v$XVR|JyqQ~ zNZjLCTNH8*!Ti_Ze+HvwPLHBczidw^>s#)&hJHOfp)n31U%H8`UZOo*Jd3`AMD*%Q zXGxV>WIy=QSwKs!H>Cq=!G`L=9>=qX{Gf;^rKj^(o8 zIJH>*IHF5u#Ay0|)8RNx8=KX#J8Y_6s{WNwHCM(|&k;2~d&nVC4&W4>}X{z-rS zb27tv64TUw-dw>oWO5!#V(sI1I;oJrp@@o}ouz~*NsE?>O>8HYt6QVz4z(pWmuNV) zUi292xEZK&oXv;)pUH=O+=tW;W;A4z=4ajpXMS+Pa5=0>xQ2q(s>3lkZSkX)L}zvW zn#I?rsD_`>;mXOuX~TmP;Cv^yD}ST0zP01zd&=L6@9pFIj?b|pgA=@B1DDS&t*1|Z zp!`RmQNV8xnq<#o2y@i<9x7uS`Lb0&Yz$rPGGk9Lr?Os*k8~(zuah~ zrsBp?DcH>xPYI534H%Q#y?k)&@Zf`mQn$|SZ!y|w835OA?kH$nbWL#VNN;c~7f1q` z0My=k{^WZe;M;t#!kjCHhy`eTjOVb z`ydJ^cN5HphHs6Azn4r3c01Doq5j{bv!1EYuxE2tG2^0<$1)fL;|V0Jv!S0 zIIoa3JXjJR|1DLAIrzZUK-G?-&`>TL@lbNTZg&r(rXwD;@i5|ftIyYe?)Bld$_8`3|6*u27%DA%2)7F z)vj)vAWz~ri@aPd7KU6bU@|Hr{4;y?&t(Xi&G;wv@rF14ekag}HA> zTdj2j%qfcsal4MnNd>q|76UFj2GO6AgHe^r_lct5sgUwWSAz=Mks{-(_f-|bN51W_1 zpq~NYeE9Yx|7?eR#bvcXy2MsK@WpT2my0JoEo5Km|P= z!Rp)*3v;XXa8Gr?)al&S3zp`(O_k6`DG-|g&pr1AtLA6Yi?-LSaVhN> z@i6`N1}B06U3g+n!Bi<+x2bAv+ZJp77aMPi0Lv|IZ5tQ5Z%4<3kn4-d_y3j{+XKNV zDaH7-Lkod|-RcKIXujaMTzr+=e6UV7ftWji(0!}8ZfZ)3cZ8rj_;9wT;9<}md^m>( zwr!tVJ1(?nRR@6yIa6tHt4a=sd|KzmF&{>a9QIXYS;@ zi7(ul4y!9$ANak$)$|2#h6o$u`^SDEk`{mK0XaxYnUL;bPj5kKZq=2(;B=}l%dX1c zDTgOPQ`jHMdJ~yiwK`yA`fCq6qHaBPtobdcu=qw&w72v(L1&^lRHOKlo`>jD{{PANd-myz;_t;V z3H-hK;Xj1G-!c@RMSq9>ucg0RpSmdi?)1g*XFjyYQsQRP$6KRk%Cz5Bj1D(M?_tVZ zYyw;S9a6rVq4=MRzc2puqWE)p!Qi67QEVws)8UNHyr#=EQls@7l}z!tERXDot>Kym6_YztyAs3P9i z4(x|Jc_)mQWzC4F-i25)8moR~Su&bcU5db&laBHi_PoX-2bFshkdEx_bu@Vk*d&>7 z+S4$ycc|3CzTDDH2uH`UOJ(UHS(bfjmQ=~|_@`!ZN|w7nHA|Xg8S|-G(k07RKQ&8F z$s*1Tm+n!9WO*N~TsljpWDy6*OJ})EvdD7s(pfGqXsup&>EtYur(Zg`7s=ncSaNOn z3K_kENc9&T?fQODwy%prPHcPGUPmKWUrlIjfYP*v=@tD)d1^X3tL`9Vapf&WV{y>K z=50HBEI*Qi5e4m)LwSDVuztoB1LDE5oHc|SJMle`ohB9!e2}e$j6g6$wo37TpqgwJ zv(k>Wzg!YDYQP6;ibm=!E@-XH5eme_P8Lt+Zk*g_p?i#2Vy)jEkaqMl3r7#9L)Eeg z+Wu0U7YU?JK*xMSTNRmi`S3aBoz_;VvPDn8??`zG8hC%Z{Mi(nf-_HuHIW&}506+9 znM5D4%cG~Fo}hD2*z-}6&i^C!!^W8XFk;;aCH5uOFl&vCNe0Blf$|S*1LEnJ0dbr7 zLRR;4U_r#ObMD4u3nDSGEDIv6AYno5uiZc`bLOQih#pLcj)VzOt~86D&5|lvp7_)(+!~LPB;q$U*i4_esIGQSYF2*g$ zK3b-q<4GoK-#}24Ra8Qz>(R1Ih+Xfd)OMK2`RvH)?1HUT>6TpzJs1tRnC+g%MTY`d z<81}l36|pu@W6yTj_JQ8LC+=h-{MryMfBg|V6o_#sxAmJJ+i347*ia4h?rsX+yUA2 zu~guIZ1{MBoXDU6_W4XpdYjKt=^TfZF z=E`KWvt=F4AX5+U4F|pvY)ohaU((p@f=R^3rnJlTvq>wJi$DH@<5zV}0%28Gv91AM zWgg@1+~^hHN59|9@qcSry$v&5Dqyf(FQz=YmF4=c8re?_8QClswmjOvSJxig_MMRNtp@HAU$0_x@rEuc%R@UxQQc4_q>ensq+cqpg-~P~jRVl@ekMoXl zlwPf@O2NjDRbcr*m(iTJ!PhVl&wgT~8I_zKS*c2lErdKU&Khrf*uqyUBL#0hIy5TY zhL;+Zl90<=>{tU9IV`)f8P}mFqRfcA4OJiEYo%7c?aez;>{wraqWWtIppu3XtI-6q zsk{w3*Wx2Gv5NE7`;42*yewoxa`esEx>6J*E`J~5b!;!_P!pOOoI{XplyuG|$iSVB z#-uv`Pacbd^Gf~Y>vjEdoP2qDyoGeT0klFOS+qs$|Cs*4eKZ%oWa;m)xbLI6tz|dA z;l4Ch!p2Y+f3mz@wep)@;}d;_wq7q=^RDh$ibh|GmxpaI$+?4MIZ@c*fyQP%|JZ3T zJ}KBt9DQ)l+#>?ifQQ@#Oz$53sNXHd>EhJs zrFo5k^2YI@p+&`x?e&`=j~kK@R1)ep-tTxbZ+&Gy#!!@@Lu&Z|qb0Akuwfwg6B<`Z zZ;I5)D>#{4d&;4nxPjRkz&RJ{z?)BBdet_V9wt?q^ho_h*ixxGRmh`NJ@GpL&0Al! zPl%%!1)%=W;sLsryaO?#Pf~d-5jT*1o&k^Ir+Asa~MFAz|QM_c>!Stg5wUQWV)+(Pr|-?Ti_^XIgO)1?=iKBE}o;50aT z)Hh(9oBb=9K%=$X9I}b6F4fSJ9KI3bm_g?Nt2j8C8FWC;Ag1;iVz|!s8qLM2_mt-0 zC({f$GF_te;l)?B--Le$BNq1j_Mnte+7t((-#0RZ^IO2{)s%T&hp9jEnFYLe(85bHlhS{{cc)++)J!L$`I4!ZeOdHlE%$r5`Ce4{#8jsHz zu8L34|L9BVPopoYKaJD&!wco_L`LhD+-Px({wE@TA4aX3@3!S{PF()xAb&@rSt=FA*K1-;Pm#cedm_;L$Y zjmrFD$5FO#Gd&HMno;nc#5IJr!&OJ7 zjN{+eOUBA?vgBL5OP+DyC6ZZ6Lx73S@)31XBKfd>l*muYEBdAE%GfJN*;j;~*`V5_ zqm+nmACSc2f7L1Tms60l^u>Pk|@!8s|v*WQR`=T|&p#1F=6B-~<{WJxYD zwm-~eF=v=)2iUdkX0kIL{9N=luxshH)_(MxpUyH8sWJPxC4Y#0P8{;%Y5($?Pi`9g; z@G~61qQ4~MEcH7!8wc_l>(^C%y_;IBl?pATVk)0;fN_74L_MSyQ(>r@1IHvdKz!g@-K_a#EQ(Zg5X&e%*B@nuc&AWkl#fI5cm6*Wt@z3xaRE}K);{Jj+@574P0(ho9 zewrpLjI7b37l_wNkA|!sS`T8&Av82q%BYnE1t%A8(ZZ&f&&BNXRv3bumSCqb3qzn56QUUiZ6YjJRTY0Zd~s%%Ek-n>zD&w^xG$i}pd08D|6%Xj~K z7Cg>JErlZho5>gwmgToV6`KUnoghr67+|XUyP4#&FpI9^E9?&kfbyoi)4m2T8n5$v^!mp+B7Z8|VMf|2O~t-~8{Qs>yPd`Jco5kIIBc-wO5X;b_t7 z7E^y`RBkZ8=+u`GvPn~4VqC;Et8q4aOPc8yfBe68{y+5T^Z&hz&i~c__4EI+gR*kQ zi#nShKhem=8$pivy{u1Hs^w3)MCawQTnz2~$S2kil%^c7v5qg?fl=p@Kp~= z#|Uijx^4_TrsJgIb(kCJ$i`%Y{k-wcfPEe)KugWSag80+lI@9{$@b;F=V3XZ>SkXd z;?6qlDSKVM&^9C4Q-bYjG=qD`D`1`7cT2svNxqD>OeVX6H3Zg1@hP|SnEJ(VZXt7V~HbN zf^TJJalvZ!#0zA#?kIZ&2#ElRU3|SCs}%v97knoW9OzQZS-0_Uf3|t!EzwS*kEjwriXOmz%c@HRrN!iL@{X6EqjITN4kv7#(CL&a_4Qp zrI2D7G#=@oeJ&{JxEvjRcA%i59SUQRl6kS!x`mB-yKixSR>6}9KJI64Z4 zpRqw|@-$Sc^PUE;A}kd9yf5{H_JpQqvbpOCjkb1r-C3GQ@MmWh;3kyiVyidcVE=W_ zM?=EKc}R0}hM&L?-Bexndvkj5XDFLIvWq(hhw$0#_Rh3D)Ms-|*EwkT96Q1P$nLL` z`VG(#e%35?4qQyNmsr}Egvd=DJ35r}rBBZbVN>rGI37@c zr zPpUHs&)_m|zDWWy)M+slKVGEj@5vPAX-gwct+mrFIkl#xQqYo0a?63pQ8`7oOMV|) zEmD^K9~ea6ypGT_!qJdP7$(j{=-y6`anKXl zo9)fp6)3+`mgsBXU5*r(4Ex(^*;#+2GaL7@CLBStBORDZkQTe}LVd>X=7G9-R>_Bo!zu?#&PC#|) zew382j_l9IkF|UThXT*hJ%9Ncx<;4I=&qF$893g%q6TlzPGftw?lr;_yLOM3dZ?wB z(d_upqMqkHq5E9tifc`rFX?TbS>otu>us%njyQ_hQK{R(?3e!f9ou95Es57E{k8M` zo_zGzAF9>e-5Il^z|y>ii5PMlt^V>I7UM?@0lItl|Ht0Dz(-Y```-y97&UYcHE3F~ z#yZv+K?xN#BUm#!gA<(~2tia@u_)#AXr-D^+Cm7;MA;n%Y3pgN$J5%&Y3=14d+}JU zR+9iBfI!_PRdnSsirx z$Sij*=VVgCX5(vPVhSN@3nK7BqD(!R7rmh1N{^{s1yjq@xgd7q z&!3@i=ze4g1I?1|f<2)YWwfcV2M}IfF`P(@5_7UaT%C{CQ{pj!PpH}?t-OXu|ycW(MJxpV!KCBl^9kJ50Y z+iJ2vM~?qq${Hx(k^Qx47!BPOzE!dnnS%Epw@dZc;Ydt~=gKz8H1H~8B`DI}A=4zM z|9PfjR*JH)(_9>^w)e#B4SXFE?H?8~l*73n0=SX^NZ>&P^Q}e@` zkvXdE9ndiQgR1-&5-nSa0&sUhK3*huk3>2)2&h}%5CoRgz16bK2)X#jr+&zB%7`7YwA=h(?cJfsj;~qeb>pidrc77LKJ$6P&fX;<^tPI&kk7f2WDm>Z zEITv)1iKN2YKa2Ehs-vcEWo4Yl?d}-Zf$kjwHn-?>@)uOA7b!2G-S5}laeg^W~GBw ztucFjcwLsY<2>2Y;+~z~qWFE6wj4g0gXU79G5P!4-YwgvUKa=9?O6E2i$`aMoO4}f z(D@v@>6JH73ktQLSkM>sA>0Npj7{h==6{GQ5QMp+Zj+HKpbS_TDC5+KQP$GbRJ7V_>bM6s`+mU|o2M@nFW`wOUx_hd6yRR4(Ry1jN- zx5$UvAFn6x^HqHIo^H}n_iul}y9>wx>9R(Fv`gI@ zn>YLn$VT=l~iX+u1XmHpFZpcMUKq* z0((R3pL5K%f!T!|oRKLwEq{4v&%BeUvtN{hc=<~q;iEtk_Me#s_azLWS=Wzj$Lc&2 ze@t}1>sr*l96DBVRoBlA-e&#SZp9?%j^dBkHTlyJdPUKRDotcjRaj0$>f00P;eJGe z+F&VHVm7U=y_pT80&P-4L7H>7ZaDG$NxsECnIFw>HruQ0>&L9?n@7zfO)^byz&LCn z;H~;tZuarKek9XpM;i_!^ZYwN7>U611AeR0S4-e|>UoF>vdyJD?`Sp8d}qPLup6=` z%g!t;t0V~V(GV={%i`0EK*QEIIuFNcDEZ|LL`Kj>HuBgW)=Z((V~R(jU+Os{X1~Ij zwqStRWYFb&HcF6pqut|5jXy>f-qq>r*tjjMp-bG{UOU}%fud&T_8nn764uCIw7b*m zi|AYt1%es_S|WR}(ab&h$@H}|b@O{F#W0VDPl<*Gf#G_j9x&l*?C~p>Qz$m#FO!j^ ztkecdlauHLi7DS;W7tbpAcOEbIYA7nro5BLf5&?A^O-?dtCr>O<)HniC9j9fJ!`@b zzslMcRt>Yu$-mkgq(*fa%ngCJJD{( zwroCXGk&uCGRv(e9|<;4pLVH1>^p{kIaQfi-)%l%VUxh9A>?p^*I}gd| z8fg=ASRA!R?;!`CRxE_g*65a4=7&;n<2Dz~4_nQ@*W%nS{J^J8#jES@g-?QVgG@Xi zIb3Jv8KwVlKyG9v9&6)a;;|kfKchy@T7knmhg!!nz89l4V`FybG@vvmIyP>13KL_B z9a7;`Io;AFlcJ9apj|GUL{^yX&CaVWsclO9D@@1_ss3!lia>2h+v(HR03G`;7 z=ZDNu53FD9wcHCv0rxKkeUQg`+GM0&gFUTj2VpXu>1_gFd{is$)d(H%Cm_tV;~b>i z0m&c&1~!Bko>}(lYTKQFXLQTq01Fp7epJ9Kb)MzwzKJ)BfC+pa)Lb0^_VF`{(UwZ4 zQRqd}JSb|0Cd8W@&EW2wpJy)*x7)56dn~*KMau6o0BJcQgRk{C$nxJQ|*Zl7sK(@Mx$aSEEK@N?zltB-2*Bf3_i5mNtw;1PS(>;0> z%inBf)r4yE`I>v*?3e#)5Pp1|OB2Q+ez6Y{pyp}GG>4yQ9P`?vV5~i} z)SemObhk>ztf9ZM$$MKe!p&LfBGo=DFup^E&O zfv#mpgEIGc{UQHqqCJny|5P*ea%8+cpWaRcH<6H?4$LI^aHKQo-0UK5F>87lLz+x_ zViaSNOhZM~?uxNcCh3aFSTIO>apoa4J9XG=vB+!Co!3x4S`V~US}7Nc5O?idTuF{f zbM0M#RZT?V*SHKtvCr~qFINSc{t9e@*|RJ^k?AOVmgU4jc&hA0Dv6b9ej~YA*AuBg zJ*?zfC3=<=={+<0H%*i1FLuvIX%Ip&Tn&@NE=(KZo*J;@iXmR@$~2t z@$x_vd8`Tb!FsT@qP5a`aLKUN=$gZoW$#$29SkL^`$^~rrp_-7A|A_#`DUW6>%HH& zJvtBrP+Z{2fQ^b@cPeI;i@UiwQ*4wiOQll7plD?AteZUQ%6x6Up_{%*p}p>gXnI2E z2D&=QZk-ULg|#YC8=NJmvHEFCDX|gW9d$4c@4>l+rNux%%f;pK$O}{&wUW!`az7CU z-NONpEh$M8sWr2s?gFam)kuiH%?Nd@X0$@9*N-aYdNzVYwQxM>l~H4y9beq8 z2x=Fq4k}nbXLPio{=&R(E{&!~F%bu&_Na0m2k|@6**I01>(&6UU}VLtbF0#$i>lJ6 zC+q|uB|FP z0qf(pit=ioNncyi_u7EHJl=P73B<3`fVCJuOx0j&um5=x>QY&4Z>vlZ4dFY~kewE* zX})Li%1(`@B;sA}Y0dvN4V!7!WX4E-l%nuy?_tYbC&!lndPA4AEgPfGJ4ds&;26>%u4kGCv%jrm7;OoU7V7XeS&!o z5Y#=t_I#jM``Hl>8YmF_)hr;8PC#Md4Pw$m{0@&wLiy4lEduukhL|^yBhT)1kMOpz zDqWAjdZeqr&(C6!sz5zA>~tp5HxT%Db=|Jyh+$SL05TX%IU`|z3w3Tll@03Hs66)& zgK(I;hq?s+q`gXEIYvwhPO>tOg1OQ3HD%mXXeO_Uz;e;_^?^ttFlUgv4ygH!=IEy* zt_{ql`BrneSyOY}?nJsz=Fh?-Z~RqhtLuWlqv}S}a{`f>f!W_Mb>vk=me%bcxI|U@ zMjt~<2;k6{U=HaUOQL;m3_!)L>vts@EAnbfC|i;qL-L$JUjkH^FXY2czdIJ$92H={hMcd%V^#JlcPcZK?Vp0@@qZL3;VXM1P(t^e36w6cN}uH3OHKea z2$W2KoJf}QQ`kH>bLhX#;7yQb$2Rq4o=4nFIFXxpNMBV#=nJ2_*li}*PWYY3tHhvn zqkQ+;w>w%K3;w~>2YB986z(X@Yk<@o3cyk>cKabiL?a)-f!H~D&oC6IbukQ6?9lza zj4Tm{tN0l1+OCbqEWoYUT+9Nrp7icJKH)+%H)nfGziXh^shs&04kQ|9LMjAmzzl)_ z@oQK}hC&eEsycmT%-&8f=zer4NF|n+Ebi!@}?vR}H zj1s83YDXk91YXZ`TaARb_ux7!u`LeUX!=JKv)Yl3`5XJjU*W>X$Bjg>lV(C}%7KHq>?WVC7 zV;TH$^kDr*_kxf@ZTisvtrw3a;4cs4bsdjbIv7F z_$g-E(E=%mr8|5%5Z55l%9!5KW9m=9JC;d^Gb%GX%D0 zAJ&GeZq40IO#x@{pO|_cq8ZQ~t~KmH3Str8Ky9VyK9RMmgqI3TQPu4{jEtd!Amoz1 zhu5MQH(evXJK#7lVpff58#G6*nen4A{=X?WlFkU{Mq)gaS!&v`L_Zv1FRm zw8>4)Auq$2Fe^D&$>LjZ8Tv#fRc;hXxu}017lll+P*jsdN)pys_oCM_YoI}8W^6Y_ z$1|)Xp>8K9(x+m!$y_n!_j1UL&a_*Yt(6HizOv=*qVUShf;_E~%st(tncea;xH6EQ zO{0qOMyuN>xKEb;Ju%8jd_GC>oGit2BCb8@Q+X>=Wo=3C1b!^MdTyJlrQAeATXfj} zLb_1Ju50RwQ~A=VCNRdS6;(Z1CMM#=sV$m8rqO;TE%8asP2`^l{RA_LPDarpoI{)5 zToi7}%vEy`scFCK?k1T)R#s{T12J94IHzVz?erP!DqyY@6d6}j_Zq)4zw22GpS@8Pdx=J{IfD^UH*H}D z`uqLv`b}@Y-O~gyzjCkNKHRlVO$%0$cut7^8t+gRvrH?KAvTGyt9au0|*}nm}gp`NKz=9-^SdJEL0w-@#r>4Mda04UzTMQgOpes zRG*3asyJ%YA4NObZ5ex6b2n)qMoa_=sf|@LM&vKV-*{*Yjf@e_S2zo{OJD)rg(ekJ zoP;61dIYq~YcB#{9(vwjyOkP%LyQUrWF*WYI9C&^bU^hKMLDm`{#`utC;b2u=rk0U z-|#9cv_ zg%Ia_teg04+$`?|(dljKk<$p}P&eFh$MD$^fA&O&&*Qsmo9Dsz4zc%Gj}vEW%5}s= zBoHG3wbavu-6+|?o5TfsKzz>TTB)D2QZr3zR)P|^aHR20rWwi&cZu11&FnIJd-#VB z*3m#db`eQ42{Vz#P|M<`Y{;J(f4;=Sxg{QY9C>BdXie>SZK3Qy+1SX`YNp`|U(K`k znyJ*}o_H>urC5Y>$dosYaUFl_Kj~M(O_n|uMvN-H;@e(Z!MrvjNt;DpXlY&*``&)X zpH~QpS(*MqSM4ELFuNb1 zX3FgCump%mr)n(ouAO`d{*5suW_MFnTeNXkKAN^#*teO`n*!h#p6THwCZT&YJ?#`38p&(=%)}CWq!>2f8k0 zQRL`fl?~klusd2guOb`4t|*^Ca%@Bw_nd6H2C#Wi>?+89aK;MOGZu&y-aZkKvL4Ve zdnAMhHef$-C$P|}(wB{>M^hb00vcOsWK?NFvit5TD~Z=(^+6BV&=lunD7sdjB+a*t z0|2Nl@pBJ!(JaYkiO(zqW;{fAvSEf$CQ8RR+Sv1YRcRjAZFk;dIMIoSLJn6-CAu`??8`z zHEC6E233mOf0u)fy>~FOA4p!L1AcwsPi#wxdosv+tk>AYt9AQoUPM=19 zD?K^jyTC{)OwkEN0c1Ir`Tn2#TorL*xLHZacG?;+=L3PBAd}E8CKdTRM@AMHNx>en z;0ZLpd0N1Q_s{k#GNA0C_r5?AGk~R+AclFo}dzUQ^@VFTE zF54@CRZj59tldyn)}}4!=^EqH;G8S713>=zqk=nwcc+3XmAzLMs%P-|VW0XC;DWMGZaj(y>IQK_f>$-$M0K0-7Msr;4`^<2 zIbJ|$xZR42-weV}wS==exDbE9ejKpzW8vS; z5t?ZPkeZA&^aEnYz0WCw4~QF=6Azzr2(J-&&cws-v<6HdirmqkvAH1Tzg-Op9iQpF*f-x-)VZ=L}BjOQWbbM?!>7DITUAnXl(ZYJ(H41^elF zEdP~%l)I0Yd+Eo^-PgY2*6(a%2@Nn9;J-2rCdi%7qlh9UN&B#BBvrSRX>%L-St25f+DJ5ci0O zvn)t1lIX=$gS{t2SG)8dqpLX_X77_j9%X3pQshWX<%B^kMio$$=>jrNm&m`_Mjo;I5LK7Gg%pEDTyy0ymA zZ{SpWuOAOuGEYDv4ZBE+o%X*0nU;~qLPjlsLEx4F&(}f66HeDM#s-+&+oX*6W7z-- zjQD{^Z=3jTn`bmFkJ?I6Uhe5w9(wDt9vr_;F|O#i4%&Oo5_k-R2Z6^&{Hjh@Rj&^I zwx_UpiI0C9g>7k~@3$e{&j?`f0VD%_F*7Bfz?O(N+xB^9xJwDodCcs7Pj&mV+r)Fu z?A}c+ETfpOB6+gaE4@Lzi}1Ldg41QMY<1U(=T}?eAX2H8l;4z=d`?rkwY*0c3w<2z z>&vo@8B{t}`+^jVkEA`2%LmLh&uneruVz@>hk=f0oXB7PA+U>SPWHgn!!(~zjUPz` zyjAVrxKw0rTw0wCG9&5My;e&J}ybkJIqJ3DMGYKEv#S`O2gL;RmFv1`2<*IHu z=;aOiXQcub`BdzsywmFek? z|9dO*{K$4g_t73vK97&y?jCT}PlNkzw`6yZXSipg_WKmqm0NE%eL+s1hjY?j;~9$N zo@%~-I3E4%+)*0SjWn3_NuHMcze9vZR%ocIoVf`3Lp8&uXFerbW=?N>xPQmZ0yAk; z_5UsU__NErS@5*W56wc9g*~j>O<|kBmOBj|hIZyYCpPFYIV+_YT*f=QC*^!-ru&$g z1CPKz?p|)lXbzvu$Eb?&Ii(u&YT&8!+&l8dO--Od>52jzwDH9r;`?IXDV=h^H2|$c zcW7T@Y|2*Hm?Q5l<(dV2npiA|o%tpe#itZVmrUgnzHnRS+HU(gFu6J}nJK)jv8&r2 z$9C@6G2Ciy-y2Ly6hWJ$}TBf5in+m1B|-fOI)5ASt6owAUFH zY+R16nOvogeH-|jou;pv|E`#i{Kv+UlWyNL?CcGI&pu4H=5m}*Vmos_DI zpqZa4G|LoD;-plSnOEMUJ+tPSGfIBHsR zax)L!WkDM2!}u2UtdE5K>T`Sr12Awo8!p$8>)8lNGI!Z=+%~#vKjD1k4kh#ECD#O0 z&3~zyg;p4I8wM-Z@@if0;qHJKqOy5#(CtK3zyV~uPXpkg>1N7#19l$&W>>eW`Z7r; z!YjIN95Wb0(_<>;4S4On8t@r-RDpZzt(5u1oHYH#5aJxf1R80|2^viX&?ah|!CC{D zzk;mh@~92K%$;nS=*1tVtv|3e8?NK|X7EXVGG6zERZY*5o_pTZ>0+WaCNYg3IC%KL zLaCjjNpE^D+fwF|-T4+rj*`m2fc8kO~xzqhgU(J%b zSCg+L)rYEj{T{royETl$$9DrRb`8OI;H~uqn%@CUF~gOgy58?Gs|JHFwV8ccL#*7< zFnDL0Xp%?0+$#*nH?i@&`C$#+Zl)gEH^-~2l*&Z-nog38usvHMGqC&XJ(z5!XBD5! z++Aq~-7~TJ*ff|l_rJ)|Gmd2XjB0SgtQQ5IFzfVJv{?<7G+j^6-Pxuw;F{_GdG#U} zhzjmwKz!GSfX|doRPmpYB}-@MO=e*AaXmiE^q6VNm^yTJOqEyegXy;{-4{wc|!9UFRWcqr#aK-ZJOig-#pq;?^Af-=+ ztqc;_?Nz-r>StI>)oc&3pxJ)~JV~KsLdA~#*fczwmKk_Et>kndrB9~ZFBz0Oxfd?S z(31t1o{*lLaoch9#Qoy2T{B~x;)AfKyR7EFkATfcpFDtm zw(1tTJ!F)`o-$^xw=xd*D?P3E5|wdYsoICd#hbo(d{O!`%=87&{VWS6uTca1H=(H_ zPEF@h((Ol9XIP;|ZAkX%ri(uJq^h^cBxt6>V1emZ^|5stIwvJpGDOoVG+%G7{QfSl z`$5h-9jI$OW-e)>(Ql$@AANCKn6T<}6%pg{#;pW#4so2@GW8nxmr|8`jcGYb%aA9v+)?{!)BF~`a&E7;<#&(_ ztI}gYS0p08kH){)eziB#i)8AhZvXsK^u{WjfhI&f7cee1d=Ve8HTZz7MdV3NxuGC2 zeG0rY|h1v z&3(h~G;Vrd0-xu>bwwVOe$JPh?WYr;i4>^$SnNf}rynmInxY@y0vy)W-wQvFm{};AK>S>GUj?{x&0DYK5N& zD(X@CmI9fiN}aD=+|m6s2h8*Ssz1s-kCCbB47YKU)7UGWgJ-cKGlgT`z8&2?X}_Jw zJZtKaAvd1dnXqCnt3_4q+;a0C6q=g6baeq|k+?gtD1BG4)JsK6Zqfx5(E~uKkJYqH zO`#;03H+w)oX=?G<6h>xd^Kw=Q@G%bJMy^Ux+7;uI9BRTZWi_Y+h{Mz`yt-_t=_xX z&+M^NRsR$5FSGTW=ngY0HA>Lwn+i%o_wO=m`zuSOyK9Lr_f$`5(P55hbm`hm!4i6e zzcB_2^V|X%JoPax?OY!b z*+$B7qCCp6xB9`+%verh?MY@Py;9_zC#*2;xs6a^U95N?5WJBT(?PjK+ZM!_$29**`N zO*{8fhNjKh{4r?S{WYR#Uu12>3!rU9v2=B@-2!Gb{TGD6qi3}>vB)Bh%T`TU!Pb*i zy(S)66}LvOl84lkcdDik&9FTY-kTsA;@||Hil0lI%!hW=iMlfr{^WBQ(42PNz`0YT zCcL`Y56LBvUs9(@DRrJ8Vgu817t@l(ASUb&y)!5RSqZPs5;mVeCUXt>Lwe({XS00- z{geFucj;e*!?zC91&YC_F&FQxnzEd+S209Rm79TcKd+=BId&B2AqxPjX+QEv76`1; z5OD?B-T?%-lmG?yWxo4zJF~A*iVOMZanox@x^Z@ICN7j2m_WS=#J08P7B zTOpU6mpJc^&9iFO?XxcE*k`qF?`MtQwa=RPvK3lxO;|yO2Tc#H(0Xh9TI-@WO?fV= z-~AfjF8rM-%sp`z(88OP-$MDV`>aW?TN6lOgFJB71IjaWops-REF}`o`>sh?Z-o|9 zpe5fL-)_|`wkEXDv1aT38RYtF0~9yRrCCJnDiya%567vj+ezNj)$NXfY-RQHhZK}W zY)Yg*lxW%1*YGKMO@4?^CG1_|RAN{7li-{hqYOvZ6%FUKdB!A-FN{9IrHs!WmtXTy zoXTTV4o0AtVN|T}93xWBV}g^ZI$mP<*XfD$bokdj1b<&zw>6QbgDk2QzEvv7Ww`m=!RF;)xd05bc>h?V8C zF^^@zjcOH|=LAgc<1n+z18sfkhWUIfEC_M>b2$Gvmdj}kbNKp*bKxpP>>@K=DTdp_ z<~YaqiqGd@|Nn^9jq_ODrbVnOvAVy&c(U`KDg53V7Dwj6;2(tqbX~+${}~Hw`s$*= z_&76UQlTgh@sqw9aq*xQkfbygS6|qJ0MWo}!X{eBv%#4>wxxoP@RP4fp8_ZKA5}E- zXbnKLNbuDK;sYyv zKJaX?jM7$kz6l&8CLsJQbsh@&96;kxoC06EeKuI3ro*Qh%Kx3$awxwd4;?4XD#^)Q zpQZdYMfM`eMy2q8rq_^Zt)|meDD#Mciq8bb5a+{i0M4&hH$x1eiiRGt{WoQgh@mLq z>iUpaz`2Q&NnOripSn^*`ng7rcugYy_D1LPbBuffEYxes$fifPnBIFscmA8$52Blb zKHT6hotjxlo?d~xrb{y|h#P)_@wjk%2bpjO^uIet?t(&GgpTLiD{^s?v*|~iA9L!{ z9fz7B6MJ?7jUH(1V>$9nn-s*)OW~ZdLeg-l0Z_?{LIgR{mL?jH6xCmc>zGJQXXADw z60gq8`eYw_xeLWsN8F3!#FUwrVns_If zNv_0q=r~f7NMD{vUkiO{MO3sB>2Euuv<|F6xcH`ovGzq*~^VAM! zNZ9j(4WvkbMs8LwkWZ=RF%olxVN*MOPCTtd{nOHWicD%#yiotCwhsN0*37S8!P?$O zNta&f&lBDOs+VO=_+{;W%?iE4h_C3+h^?CKa3|PX>poZ$hpQ)UuqM3Wv8D^(-8nXo z^ZX6n*3j)U$|!QlE>f(}2C}b*F|Dy`$h{uMw4!Bm;8-5IS3Fd3{k4kJz`ZVb1#nVw z9Syw>4_sq-XuCDkC75qRw`pKt#xwxO%yPa~kMr$md0X)ylZ1&7WyY{Fdby#p{e3E1 z2zJbw0SadqsT2mNXe`{C&rOo6tBj}Y_gnF3y+H)_t9f6|AIpseV}x4e&d<H(yEe0=kjLmyW4A*1Gt&F?FFl0J8q{FR~!6Zu;U}<*a_o zH3#omPu^O|>m^syKLsGylxue^v_s*)g&rJ}Bf~Z2*7&Z*H;G#uxPCZ)Zmh5_;m@ZVk1DI?tIYy8mR} za9t~$`^H!~IF=KJGFXl@19>@^$lxvnWg4!{!71J&=8TupFTV=+v_+`3uE? z>WqYDR9InLMeuYew=y-XP9*J2HNOHW~JuQVYqA@)KMHY5aGUe>9YXuUhhMmzRy}MNOBJJOpbF=E zUqNfk6!tOSX~6pk*qv{fFY4&usye#6PKB?ioelt_aDmN~meeYAR^(tIvLXhHxFuOv zoA^~nwN7%>(NED$)KM)b{89b&1?~+T=?eFjgF@|~P>WTA+)iZHA$#4IWfL$ggx5Wg zt7YUr?~o&MwH9)<(nF~b2-n&H%>oT4fp{&}ghk++b>F{HzUvX$WhlQ)sPzLD| znLAk_T2{_CUSHMi{*W@%rvtMGo%p>79c5BaQ4YPsw%-Tc-2Nnaa)^|>?Oy9F%OYpZ zPc_N4IzzB6i+Dmp=ZNtJ!6z`A-$^`5P4^fW3Xf8{kl1hcMX5tKns*@6f-gTu3h4nO(BA+JomoZ?ukzgCX zT~6@5*j~?HB7+324@du2PKgUCS)ql=OMG`A%Rw5G7+7Ps$ zM_2P|cJ%QZ*SfEiNH^Kcx~a;klon5~DxFJjl!#6LoE>ph<-_B6Fw_~24}QFJ_)$=1liKX*q0_#I=vmz*EB+n%|d0mSULtL#mvzmYd$^PceJ zqKqdWS)<<=2Jc@q)gBZKzY)!Uom1L(?4|2CL9gc@vx_;!rtH$0Rw-?!M zz-t_x<5uuyPOGtR)3_rf_|zh_&!JJyIO=!`=iL~+86!bay&iD-o*>O-(g%Fls5zzP z09&_;^s8mBiqY*-oLBEW4}?Y5wK8B8ViLZ%sCWNm9Jk(i2b}>N{d<91`sg9&XVk$? z!3==aA|k4P5GKIDRW4j(LR1r0i~yzc=*8wp4d1gssZiepm_YQPZdxx9d`f%b%+PE8 z%ju|Br`Jh?DIQ8hcV|Li*hsL+wZ5KBpiKcUf4`$hbqxJ5&^?vcQL%#z4TE47)q z)Lj#knCms?nVG$qh|nwqjgQ-$aZDlxgqao)n;3D;%qI~dv@1`?HQ>g!d>!v8vRlG? zxmx&N=Dum_i4t+`jRdLYk8 zR-hzGmzjKCJ>FMPynS`n-tH&^tQTTgN< z)ob1#jA@5GOd$-h8GEq>eg-@Z(CqyJrvdB>IpCz1+*&Gdo+7}p`Dh^ivIoyE*e%uR zqFDYWL6i=>fMTBco(9;my(shGDS9&f<2Bqt5Ew96Snq>2Zq7)8hsy+A>w!6BN4c!M zIYx+kd!qpg2O|!4XbrW{jG8d;`shYDI%i<3rjqF!IBV*S-avoLLJ!c#0$)(+h5IH- z*qoOmdYtnG6ei((v3j-G)rI0dT?*^$r)h|&Jcl@#Pb`T1ExrAltD(0zMVVBQo;)Bp zX{V3-sb}3cAs1W7cukez5nXC_a7ejeqYbKc8;k*0i>QajN{;1-B}BJ zk{EnW2X+Rn`h#r8vXswx2Ssg=uc$p@SgpO{;A`isIC+tM=-}FO4xPOAWoDpX#_j!?FI`ED{(dd*aTyG%vJ8&)Ui*;! z4yU4HVS+~in#w}M8AmFJoIvwr+2U{DPIV#>SmMNCO z?2q)00FUAAjYsnFN2Jomx37#oRY~qRw_%3&L>u3{QlgQ(?X1)%Q9IJ#AjI1)Yr*ee zjp^$PBI^kLB`z6ptq1;t3L+b<%**QCJ6ssR-NFPZr26gow5`C{);x!gS7n|!r5l&4 zXomBZ=3pf(Nax_isiVXxBi7Xdx!A_j7eQyEk^NTYa$Y44PN#E#4EcNO&h%VNX|cr;*vL9{`ELgcu1{auvpRPTy5`Th)8S zGj6?-Bl1~zw`}G@n*&xV$>>4BqXKSujO(FR0_-0jJZdlh2p~uETatEjFMQvl<;KlE zd=~E&rtOZe?h|5RxR>}*!W$MTYz#Ge7ZXkRo z-xak6$Y%a3Faumd$r$)%CU9nZMlq)%7r5w8@$}aUxYmU*VOC}x@4CwM0V%=UJurVF zzsEw{3S$|klLE0o-SrvSNwbq;lFZCx^O;F8vJOUI*uEq|7V54ldk)G@clVfp5ptrL zx_n83MF^T}g>>)bH+FD{wf?hJ>7gpFtqZ%85}A_n?iv%Hm6E0av9fDFiIkhUx7&oO zRW9lUxoe+gRiaTDMLiar>~!6zz1_c02i$$|Q;)tz?fubXmtE6O42Zx5Irj;5>;rb2 zy@wUY0u)|U68Is?_I;-CbE|I0`moyl4~k^#JH%>W(#-|t(ib~aq)fS9WsV8gVZQHi zze^dgYInZ36t#f1U8x16smkvp+~;x@EY{Vf&odb^vu+e#>=&ZgFWURG=ptQKN=}TR zAM`N1-87;2G4(`dPlt-7W!~aCHXP2&_xkqF3CEdXxF1(yoHv zn{^Hz65Lji#Cnj%;EVeOB^}2tvTP;GQ=IgMTm?$k-byWN&Wfp)Uw*oR^w-C5FF9Ui1jEGyAf%y>4T~8sse6d zjn3WVwW`RGES{YGLQjILL;jXzB@xj`BwDr=Ito~sl~xk4pBRFJQ3A*byLe+$wGVLJmB-}q!4PA?8VnICdxURj$ z-X0Gt!h_Td32E*as;@@K1!vU*ON@N2qz4(LXz zHQV7Hpvv6Cd}6VrfQ>Xd0t-kCR;L=>eD_Rk)LfMPjQ&haZ}eyOBH$!7RrUwb@yX12 zcQm-&HTKKnK#vd|DU!5i)Vmyc1_)$+ETruk*<0bTX3W`9mKXy%ecr6#875$S5-4yy z4^z=p#z&O+v88<{p%6xP&#tJ#AKl)7rN(HUP}wjMsx8#9>h##k>d2Pb-}^O!5jf=g z&b(Jm<9-_5_5_ed+)K5BKt+tVfO3NC)pcXwqvd1VsbcertthZ zE`Ak>N(Ry5_N$Jx)Fm*W0+D`#M!%^Bl2{<-jSpg2SiQ6$DClEf$fO2myGv`??w(F} zOU==YO4e8hB?vUpwZ>^)zpC4hZ}&H_I4?TBCi5Hhd>m2kn7Cy6D@8drklJ7=1`y3A zv1H*P_}}f&ympNRPwfqK?+i0f>f;$OfS7$J%4qiurPXPI{cj@2?YTM7Hk5&kjf?W* z`R^*H)+cc%ukuR7?5zew)|2lNfdq2CaiI&s-^?CorUqx|MYT2&*{Q(ZKo!yMHD-C| zzZ+RJ>p4RINMahcjI?6-Z7h5w8aa5CqOdVQtGW|tzmiGy$$~2~7w5mcYA7YoHdC_P`$n(7ElT*Joml+s&9DOyGdANbB zvCNP3BS@9TGPX&w-^kpj2SKikYh8(&_5rX&xQMpA4=G;(L2r2v;cKh4Kr}wG##-L)(}I$zL898AG;s z>aE%t1Z!VT1E8Prp1B?6Ghr&xvb+TmO-0Ru5EVcziKH^X_yZmRJ0&X0wDAlQ0-}6sbywg-q7D0%6ty=Il-P;(1sGF1DX`W zkc^R_XFgyll6rdb5~GlHwe18&+}k)ay3p_|#l_ktE?FGzRCaYv9j3R=2%Rh~V6eQ4 zXEI_w3##}9_5$_+1<*7cC@WVvJ!6S;6Cz9(Cyp%t@y2AOLU1g%ia)*lWep@nJ!Xd8 zQTo!uTMU2o_bU^2agb$H(6eVLZJ9l#Cd9zsA|cDXE|s^6n}Q|8>x?uJvbCZ4eIBh) z;l37aklg)gHeCAuZk5@0A2^3!X?p?dmPJG#y#xMAYpaWTi9(R z;OFEj%)bI#gbTW4U1d3T+S2Og2@Mt!dWy5h2XbH!%9_Fq}I%`)kHB4o$%w>MhL}3rRDHT(0xXQP_$H z^Z9xslv05;f3Ep}G)ZiS3hMzyuaAy^-PAwmPUShvFIaisd~U2Jf0+L+-^LIl9jc0@tyua-$p0_R(vPKYh4z011YM4<;s?8oW}f9fR!orQ3Ka1+^tF;8 zSXsatD`Hs@Ai16yNd49{yT#k?`r@FDZq9W~%d0)pMW@SK=p~OD=qG!(EkWmSs`ocH zae6+eo&A6rxHI@%EwkFCjCxRJp2oyeDV#O4(0?g`O=kY!zXY(`XP(jvni+S4KM>hl zpZ1(gs%*#kfJ54@{PnZ*P1F74u&|gCoH@=s%Wo__3Xa~-$~^A9V7nSsU}b*B8;%d7 ziwFW#kF&e+X&}0Kk6QyDPiOy^$W8aWc{WZDYw&Zx*FlaC_pX)9lq-rkMW@RR0q@Sdn&4mtWsYpSF6bBg9gsGrX;3=`K7 z75$Z%y~?>9|FW*nWyfPSCk^+#OGKf;{QlnC z{hYg4Sj7Fp$CbDteSI;Z^65kR8wJ@?X{>$6lyiTjQ%r^*Le_@BmAMnofj}x&a+x!a zudWXKI=fb`V#nL-gR_|z?I(-c2!DmNKC@CEPmI4K;dIR5rK&|;uCm|d2n4Iix~0tu zBOi2~Y=(Z>u>-N1>Tvwl@Xcyr_@*_6VZbqWu{wd!Lf!bn74!F!qe~4FF8u9(jy1gX zQF4$zB*>rJrLKmWjT1!xVva+De3IpRv#7vi>%W5Ho{!YfRhs;jGtQ-8|7MaY+9IC= z>@+w)#P9@*SreAxzJN1xXa#OVrf$E!!PH0judOuR4%X0BUOhAaZap1V=mjhEer`QK z0C1)r&jTY{Px;@ir`-y@XoWt=j_oABjsu<>$k2n<{VzaI;H=saErB7ILL3J9v^iBu z*NuaW&j!n!FO+7o+;ToQpoc#EE6GeS!Nau2-#f3Tu_q5*5G=p;Hjq5) zyKQEEAV|;4R}O|WNK=E>%wLo$Yv`LZLOh;V?Pa_$Zhl+e#OLL8t7fY;0q^r6?>Fvl zfO1f}e}wObXpVez8|u@(QT00al~5iM`~fCE%O_Gdnw?1cqO?%B*|N!G;==x3X?P? ziP6XEO9t^y`mF`@eiIKj3X0bkKQ9+DfKq?J8v3qrK)dAVVs#Ra|JEJ!WUE!P%bKu* zo_s*bwSwPKA3NSN`7c~)^5fxu9OU06e}{p$kJ;Nj2e+S?{CGoVfxy84d?bf(GT~6}70gl~GgID(k*U z)a4F0B1?*KYUvDt4Vn5DL1O~_M|kxu_nf7CuPZ8>cw9}(8Nd5;{`8DbM>ftsEVf7vp3OfDW4wv*2Q$6y)L>sUkgdr0Uw!=fRe=+&V(fR`UH(NC?S`%I%KNI00<=Z}zz3CxY z#N;PO>k9I(vua*2M^}chz&xaU+efl3CV&5vO@5(-@9YXn$l0|W%yJ&%d{!3Y+!Rhg zS?1&%T`GR(VVJX*7wnNhwYkcEH9DaR^RZ`;rGKIhT1-^%*Sr@e{shy<3BHZQGvASkMV=N&%gV4mn)!iAIwBX9A=TQN z?1nT*V5*d3eNk289O;6(MhY)@EAtcc&}n7o1*+@`z#usb*%6tkM8WDU9r3wx|Y? zTsS~DmRjM@&83=}`U3sE!%Wr}&2vqWQmTs?{!0FF1bZW+owS0=CN0tK1fM5v=Fg-~ zJ+0LfYgRPWx!Q3D(dy>;9`5j5Tzr zb-!Y6#ki5|v$4n_eVr5h>Q$c^A)Ek7CAEeQ|yxrtOjJ^J%rn4bB=ujwx!u4 z0i8$w%=4}lRrfaSJdAQK9%;O5fBC4s&q8`&8R!JmMCVibLMu4(6`rNfq*gk8P3ni7 zW^Vxe=(<{rIR^AzqmL%-tbKnoLflKd+_XX9U*m2xG`Lc$^TL<-448Mj51GUU>dHe! ze)=76!l&#Ze^c=Ihz$EOPQTqrT=b5PsMApwfpQ$<5n;O=u7D9=c941NgL+@}% zBN1HZMz;4Vtw)wb_SB!JtI5jDY<^TYO!vMQI?ObldNIs1%wMg{#I=W5KKF+^rgz z)%3m@-hQmQQF~`J{6@TKXZ?jSbtY@_R9&=y<OK&%7+zS7?1>|75Qt>I%#=k|OL?u(5szKgZv(ASjyW;;6^UH9(M|6hOG$CR+?Bgm*>f9@XZemAV5o_vX#ug?BvnJXwqbc*+2c8?aI;9>OfdEES`kaUuJ?oSQSb0=b|Gi*V9yme;B5YsT!D{o_2g_Ti=2+dj_KyI=wErz)Aia#>_x>QlB;Ya!TM_g(KTBz#SIU#Rg(&nj-L{zPzVLm_`UI<3jFWmZS|HN(Zd5%}!2u&e z?X$kbakF}ObNyQ|ZENCNJgJShtch#n6b8qxUv0JR+{EwBh5SJaXw`W>Ya&t4??xi7 zUxsGHPqQ^~vH3B2(%rCmCAAS;yxlsj4^s1tcKyNR^cs=I?_Nhxp1Q}eIkj`I;@JYA zM&7gL>Y~h;V1-$vl7Ua(yOq3qnwo20N~CXuJa#1PRY_g6U9yUu(W zVsGwR>l}UdL;G*QKj6Wi?#(F$&;Y-{rvr3>k5x8yhr&PoCy)#c?0QVhw0@TrTE)*- z0*EhG=ndSYeXGjF`m=u^|uyj zVp@LtRU@DD zhL4B!1|d15Zy>tbnzY%7jKEe>WBm(qK713T;~4-8@+L16BK-lKm4EewfjmhfJxihG z2{l^~d19yYc&FowVtv{F=v+mYxcO&3hH)$%tV-Le` zLJ`*+8xj0u-`XhgTC0~Inw-6H?ikU{LzkyjmcafbpKX^M!bG6jE zJv6HSM4y`ZbkV;dR+BCQqW>)XC^zw|G@T{Ue-g;E`Dc({y5J$wg*bSyy`9iWz%qgCCxh}#)u@R`Wc=>1 z``JLEl%4*!6wQ<5`mh9)xJ73F+MYE~a*#+>_&jonIJPjecBgint9 z%+z+!2n{}6!a~3wM{ynW2?4sy*^I_za#q<(&HjFCcz1Zcec0~MU8$=MuC)@axRhk% z>rQuBV%GKe-Hz4`iCZ(*m1VwGCgr^xMpDSK(CdPX?^pji;UGvwuV$MA7^=a5s%c zcFZw{5&~@en)?E8Dr45{R40_P_rdnGTdL{m|MS z#h0G7n_aiVvWZ%^J!|&NY^v6*S+MRlG^OMe!pS72%rfgIndBDJn31s#CBv(dQ&uMJ z)z#drs90P-B6qc1h!m+cc`{#DCAko!X%4Tdpj=fE^$!P#YI_A|xT?a3=``VMP!9MP zQl?Nc>{U{wQmR&-ywrv!PW&!*Dg6*$=Nu+jK!DxPb984ZyOk+o;+BvXJPlb7oT5?! zi7Q`U$$wyA|5aalyofGK?=?M|NSL$Qr{~$VxrJq)Ir| z)Fr94fnSv#lE^&aoz}p?&TOjV_OFbODWe7{+CS4dvI(t<` z=$R(cVHHku$^7=IF&m?aJLmP>^(|5ua1Q(oU>rm(U&uf}evifihFlN`-YLc5&yGGj zU;{eF)-zf&P%*g%24uoQL3Ew`oPnEWMIhQu4u9y+|CXUM4`$Q~>});o2;a@9b)sL< zl$x$(wQA%u6I0&PnZ4-@?=YJLDRRPxoT^Om<*b_gml=LCe^q{S0%6M@iAT=sb2huh zl$M;Q4ooK?pw)Cl>!`z!ptm1_f6JymiHCaO zKVJ-F%1$76VyNhFA#>_uuYzW8+}<#iWYVjS#z7kt1DRgI4B=U;bdI^AO3qN6=Y0XYZ`~ zhC_wcgUz~F;lb9Tj=GZ@2*{a=@TFRQo#n8O>dejE)i%yNy9q0@?AlDphN^=Yy4O`f zTNvtR`FC@{wV9E9O!S;d1=w@g+nzLjRe^O;i}ml#Q7hh}ZKQlEwJz$+Nm0B^9df8+ zubHVOI7?vQUw$Q#gDEK&k|phqs?2ry$?#gD+R?GI;9XTj2Kr7356@F!o>hWSeDxt_ zB9Xc3(6H6k={#J2G|}lwy)`g7F{L1! zL0HnrDqpdjsB>Jva#Mi=3AKStZn!2d5k?c`UpZ&Cy_xxHc$C4J?Nav9S;jcyYSRJ-(tz zql7m(kd|tDohEP?1gII@2Xhtcq_TiN?5;9RtycWi6f?d;Fx4z&6GVZk{7DK7Z2yJl zTxcd{oF+!$-M@3#%%o;Wb4rr2MOr1?Ies|`n2Gt;Q4C}RZ0Ovb;LOPhc%2mh zR)RZsU1| zCU0oetl<@Fg2LcZY~YIj=<)yT^n99@km5Pcx%eEtXdLILW5^P3C~%oQ z>MlWct?`a^(bgFVk3;Y!-o4YR!H?;J?Ra9+)?wOukG6KpH*>;DYiOr&ZSvZIhMwAkQ1t=#6hm@i7EFKJddV1Cz;_? zSYoN}@@+_P=pzwXnXr<36H^F*IfdH~5OJuD?MABP&MC};s|@>$9O3cR#L}f+L85=l zq7XSm;iX6$L;O&AWw1m1ncrO{Kc6PqH$bl6)XSKrFaltmXLI<~r;M5H4F3z!j=V1k zXFgwWD$t>`a%Yao_N;O6a{Bbwex_#$aQ^2#&uF1lkRuv>4Jl6MK&=)zG-`>-prN&; z107mWnB%kpr81x&0-(~WOiih~&XaQt?5Z+#rCI>8agQNyl@;GFUne8(muX3rRg=Z} z={_^i)HOf_*-4?7LtdB;Zx-wg!yud69QSho!(ODq zG0uSvGBqI|M8hvD%(Z)RiNzDCMX_qgjNyX`1n}mp56$AH zGt4ZG^}poIVjEw2X7Op0&7Z}Qr{>J!Zi4p8Ix85v7cv1;7xug^GC~;8I_Ny~Te&1y zP3y_wLAA+PIOKV;s|O|Snd@!mmr|K|O?0qpM}m09 zIjT6jJ|rkU=bX|!e}B#7=n?4e`lP{1m0P48mU150VbRDMgwT-xQj(zd;u9hB^<7y3 zbZuLeO(5&v2g`VLZpF4KLi5Fu!d|HCh5ctp`w3h!_918ocsoX)tA{IsCU2AVR#TzB zaYBA>B^IX%M$X#U{gxGiVh64`QzdJh_w}xKS;J!Uti48#8)B`pEPf1WMrqtwGDDe68c}7RRnH=ndEgow@tfB0 zpna`Etkg`>QTm8Er|5GvTsl8!__&on5M;)Eu~E`B!CPz>ycnAw6Q6Nx$pG!*csp4Cf%TM1yV0Xy)Y&AFkXo!;oG)g0;=*TI4w7eQK9Sk9cZ{&1v$ z0w$hSpgA!&+Q6`31%KAJ6JCPni$D}Y%6Y?(HY_CcWE0Pq@SHs^bCxTdUBM7&fg4y) zaMrKo)2@|KXQ*_oh0gr`B|vS_pH*nRViz_%rvmHvw#!-c4E3&mk5AbV(4}~d=f$za z4RMd~>aV;ays7IoXXpz`nmYec#s~7gO8soBapvEx@mleII2~VAvH3sJGbhqSbnrT7 z-bJkcIYT)C^L#FNT+6nbh0eT5_V~P_`vDW#ILBxW7^E#rkJAh3C4#e?9D~O3P=ya} z8MtF!eS}I{ZDB@v?eE}oF%T+sLDG#B1b=5DH1tnsE*;F7f1kimxt#c2@(sh%Qi1sJi$n9%e=A_)XHXf_jCR>WH`Se*P9bwUNrzki~C2wNb$-x4AVt z5(mReYHcun1oa4JQ7Z)DAj{x;{B8$0*ZqPHc`GfIaAs`>yr*J+YYSAk~e> z(g-~(z5ToNtVJx%Y1MdmHfWBXDFz_!yJ29+hvztWN8TE3TSAlNCews zzd9qKn`x4`FWk759elSVte|TdA8&IOy(S`hoo^w~E(B%dLJYMf4mrRli&UJUrxaaw zx*mrl^7>_U#xQs^tpq~yot83VYG|9{I<*aoY2RV~v@-vqX9=CX#So1T2Hkj*ft-DG z(Uv8|0W2em`X%S4z9?cb?*%1I0NFD5+G_a9Q6Y(9zipct^TAPJb?ASJj|kdGdn{7r z@yi*UMmI*tQ`$M*T03q4t%}p3Yt`er%X}R9u`S(FGURs{r{Gxsw{O&EwxHllzQGtE z2-iYohH#6V<9!qT09*)%t`Qmh2fks?8pzQOa)hG439l-Mw-Sh7474MIzG59}YOPpe zy+5n?JJwWW^ep?G+*kx_7kF3m=>R3ogLKb~B|{`-Po4sm$$lKL}a?3NCcUFVBgAq!peMNH?$~ zSWxC71Q>E*DR)nUnv8bN`yq#iNH#15nb_}@!OSN?t{IrgAf~haEuOQp%UJuH&iplG z(FZR(g@17A4bSizy>QM;mTcZ|bpwyV^{&Oxgm}7i3617fKF#Oj*Kr>d0ZEBwRGCZl zEa2lWI`hQkjE^gXg2#>U@zu_}pK@2t*1y^!m^cWW{=UkE{2M&NjjrX-a-^)AWGO3q z6mPI@BZZ+I2qImDR+>EO4i=%oAcYIO&TeLl19T!^=G`nD>^zq!pYslvi1D!CVk?Mp zkdY;n{&6UMBfrkoy)J0vUOOd^GPhU{%!4oLy}@t`%72#stF#!V{Y8^eQEe$t5xoQ) z@&_i?q>SOOI762>^DbcAltVOis(!A1Y$O&;F`w$QdM)Ho*=m@Rv10t~`nXabljfZN z>}Z?3f&ZxbXQB3=h5rYYAGtcOchJJ*4%P4?f9M8(o};d&#dTJX~< z`7a>;WWAcfmkjJWc`#)4$%7%=Q1+`7am6dh1Wey$do}0MbDRHRHVA2CZOufR2qY1> zY6y};*O1?g8UhX&3DRF1DwU<@yq#IchXyYDJ!6&?)6TKA^ZHWL>dn1M znr}^V$#dJtbLiZteDPkpjE~xQ>gV>_O%-u{?-CU?x(xASQ-C6|mL+Ar2S6HXUTc0O zPRgX(^z%3ca?32?ahV-xHD&&WPE%+I%3hW}G3*cR@BE?pCt4N0?BYcorinlu(RD=E z=^31Q&yc_;>mBa^I8v;u(HXkUnSUm|3vsMdi;?o&txkKZfc9Fa?MtdwbBI_Brcr`V z0?H$eIt{{?_MM7E%4k0CU0_me^oiH!1kz3uNb;p3 zkf7|y=nB0xfh33HMr6b$5quz!)Cf9|G$HsA%Y@d-PgQY72f8I}W!-gZWt}tOdFS}| ztrac&V&kI-MTS43w`TPAwDBi#h7ODJk>S5kfuW=gc$&EdR+kM0PMv{1w7GC)s1L1a z*?xG{>IXw%wAvZJGX0p!XX*K2?n3z696!tC1^2NGzl<2YjDeD(BTrzr-3Ys4|B`dV zadyedo^#XZxU46E3NE07bt#>*Ha~PEJOAk`^_7|6PFoi!ZRBT1qZ*+vzF6)m3`{hB z5qtrJEVVh3CaNNb|IW|?XWj-jbpVafcv#JygwA;xp|jMsi?j;UFi(QSM~&%?RD-H$ zP)VICA~nF+3F29gQpjLJw^GLWl(Fp`CXcIv?ZflN9)4gIt7crE8PTp1}xwXiHQ_GpJ( zWA}6EUobuJd`+&%y1qU$#qfOiq&83}6tqHI9p)nUS177@LO6q7K)8GGfgP+W_T~fo zs1+aBynG+nPM+++2iA+J9Gv(@(7XGs+@5@3x9ja*d|;#7DDYs=@Oyy|>>8_Zw>~g6 zJm~$e2MvG4$^|~K?M9ecA6TWex>q0A=zf%WV2+LW-M|Od$12>d4@?c0&I=n})*{FR zKCm~f;j9nrZoS&O4{Y@JDDz0r@Xo*oma+jUc*oqNr&f>`QYbLZo(DS$;Pnlg0A zAgshRU4)9>xK7<$oRd|=rPo@~j~}6lO8EDZAyPpnlVRwVE)1+ghz9kMDN47u*q0)n zb-KO5oJDnDxoWbWkpK9AJYU)P1JxTyd&ZZ5Q2%@8+0>Li&TpQZ%#xbrJY<0lvv()i zJ5+4UJj8n%mzykb!Z@u5^I8f?I}Afkf(82JUiQ6quQtFGOZ2^7ZscJMO%~4?j6Q}S zD$nyV#4zyDaoKc7F*(l^ajk!GKD|TFfc0JWi!;K0@3kE-I*_cLdqH@vp6|wK7JPSu zeYXsz%MgaQ{A2=~Fkk1^p>85{x!Rw>hVhot3#>W@yOD1AUEjwqf8VcdD+N1eo!0O4 zr!nSAZ=L&oT=7?a#fq+1Cq@RHbXtn6)D6~k=e~Z0=JbeOPyFIvu3t(VM-bAClX#Yi@J9Z_$o-|)Qjy>Le5 zlKc6-rjF0K#X5m`#NnRQ&IMY7ExqOXB#T9m3Iz#z7WKGyg2 z#+Hhhdg~Rw!CHC+4F|r#R@*}3%>OeJ0Q2qX2plmd&k@*Uvl%JAl!uD!1|b6r#*cCc zg3K8;l=T8W^(sxP8_KH}c8qvhnK}It|K|kAv{)wcGL`{=dO28OZ;)DpR{y zh$>bDRk{DgwdMp=y@34VuBb>w{w!;%waa zw#L0DcG1r$)X(Vyo-6j@}*WY+m6^k2*KPwO3I4Gm?usos2p-w!K( z?kcMo9eOg$h7*dfwu(QsYw&ieG1p*9j$FA06XpT^M6N-|aw4Of(_F%zi~f$D!CS$O z|CDF&>sim>naoGdGZ@RTE}mwbgYPr9vVH=ONf4*#Z8h_$+&`7Qny_-=iOoNuDEtyW ztPIqIXtSm0S?7ilwEvj5LCjvuC>b2iqN{lbr*H-t-`*Q=MfoohMhOS7d5Di_aB@XC zRK7o}#1GRRm;FG!-vv$I8?slN3+HD((^dgK`?dMj(;fx?4t(S)qLO;>k(nVM(Gjo4 zM|hBx3bO+~@+G_=jIIAUR~USLoEc;38)w>sdoyDV00b6uXl*czAR-jMW@J!*`x=j? z1PDa(AAFqgXs$Cw4!Mx^XukYUyxo&Wlj`8Ds&u;b0GDO}wzG==$ahdnYsGYHrTCPf zi^tuh`taXr&33c3mhaMRw$}FS(i}Zm1>{^m$Ch58pzWB8a&GL^rI{y5*I9YwX8;-G zXDCQRaQ+v)nxTM1wtpI@rsQDY)6^!^JURHb@G_Kxp-1zj09Cazg-3HAhGQPh0vlJx zqq&`G@;sWA>DN?mDE~4l4Juns<{gsJSS&;rO~${UWESA)=umTEHv_0?Xc~l%!OOwa zU=cHmtVjnQ2l#s3YH2arXNlTV8#qmqSIM_;;rn_aT~tLXyE{Rnj8cQ|RA^&V7g8-= zSEJhI{Q`<@I~C{E^^+_1mqJ;XejJaNi3n##t0|7u_GMEdC94p91y*0=+eP9{ox({* zFG+=94zyhf-%cLr#e&R>JA!UJR3R>)H+N*-+>`0x{o$K?GH=?$+S_^He<3NowY6dZ z4@VU{tzTds0P5gf zpicNurx5mlD+DY?+wR+K5W$?nn*&vo>AuQ<82P#3p_ou5-eYToj4 z(US>>nY_w+au%7>&Z5~SEk!SP=FJZp!M#m)UgZx3`17)y*N@j*ktq}rkiv~37zDDk z{MR4WA(}aVB%}Ow1`H2{U_iv|g6vMKgBLSh%AZUg5$NqMnsDwb>Loi?UQVIa3k*6R z-OIW6|9Cyy@9w0;)CJY;)hp6PxG%$c0{{43S^wF`{NpoumGh5ZBQNR4{o~WJ-|v38 zZtc^7e_SV<`}@2ac#`G&@gFiJH1PT;!mk}mTmEtRh%9BZ{RS4e{No$BPv30LskzV_ zAP!i1&P85{uU@bwEG*-1RW$ zNNLlls6aT<%@jFBH+aHtnwitKwweBu=dK^#thYVf^)RG-cRgkat;j;bU2m;yZwOj3 zyW~~f&`OoH61eMwki0y1{b46RU!TDe(XucQ{0OGW5Jhv89-_H~#&wX6T% zTKyaTf6DCQ|F;VF;{OjDUUs1x-o5`{ul|<*pEA4n|E!`S{{J6c_bL7VSN~u2|6jX{r{|OS|NAeKj0sdA3(5V5|Ns9H|NoD7naxk) z|NqJoX*M(d+x`E9hhzhRv;Kb`?&AOd(|^kUPgZZ~?4Qp6Pew{FSXcO%|DV8;J^KH7 z7b^Il(EmTiIPU1r^I;GFKhMpz`6;4RDb|EHRN`2SIzclH1O zdr$xW6q`;=wf}_wf64z1|Nm{f@R3jA|KGvhPprHC=X}H9ljr~ciaq#*{(t*A&;QTI zMkGWu@5cX6xW^~)|6338{r?swlIQ;qx_I18s&CK!e`{@T{(lwthyNce_#g29leFT$ z4c;2X&J@~2o{{)$QD*yj4|EK)_Kl?BG|49qEJOBT;{~!1N-|;E^|6fEa%liLy zBmaL>PTSgz|6gxErT>3;&`RL{*Ny!D*2*6J|JKUh{Qn9Gk(Tuj|9^ph?Y*DG|9|5D z761R_tp6X**u(!nKhOWKW4qQyCq^f5@Fd4}*_xZV?Uui(Uv z#ZBq4Z1|R<`++<*t3vZ~O*Z<5`y_BI{pRaEYhL z8KeC`O`}*0z}$Igk|Fh=^C#Nx;DRsMZ?PNP4<8l$9#_k6aJpBdSl2B3@5FIW_PGfi zQD@>#4sm0(en^Kl$&ss~@&l!-s8;L{@lNXrHE8E`r2m@}M1y>J%sTEDE$&nAOjxK@ zw{^~>4f=MdpUV_9`dO8(+@Rf_w6oYwOvHW}LVhEn8D6lB$=fbFo+m+6)x_u2NbwDP zrd^^z7wx1uTAWPZ*eUuLhcf1p9SurY6YQhOBn(>YOk&IL5GBx4`0RwoIg!(r64@ka zStte_XJgn%3(Ex&wpX(ANAVLY*#NDc4fQ$6XY4TNy7erlSaKp|W;qD($5M03{4M9F zSx#G_XId0Ze@H1?cV<2Yzi@`ZpA0iLRXmy;rY0D`v~i1puT@L_EAa&}6qDJ|NuDX? z3bl-d8vVcC)acg@FE~Q{pV$!ktqj69l84oM?J7nTPy#KtXIY@Bj>1{-~0eW;T%vm=^q=wN-UL5E8@nL}%QVB;OHS)tC?1js^1yt7n;h~#^QFIm{7=(Tfc%Fp43K}# z-Mc}4r|ksQ8_0${0ua3#_h5Nb`u5+i;u94&$x;B2*)80`J(X=oih;`e(ZQd zp25!!vERvJHdIKAWynW3`Z(YtmmkiX@r1ZmFTD+u5ha5dVMI1+f zH@m0DuHPCRW;jWk()C7bzUbVfR968}{>H9Elt1IDz6PR9>23NJ{)BM~#)ZFmZk7w* zs`m;0_%}~r58s051U9csbiEJH@ZL&ZUgo)qRa~X}me)yB%i%Crk(l;2Ubw{IlsqyF_URHJ zlr9|;@+EIu>zc&A$#Lc0I3(!d1@t*Np0n)e^njq#2gga*;4O-3`%Nv|2D7Qtt-mxh zJBAkG?eI7uFHteAA$e&@G#tZ%-C;F4ns5(kn>-P8Fj-ArL}Km~`JU!bri zhB~gihH#QOQ)@b#zY*iqx9G^PRoJMUHskkm=LFyPvF~?ezvq-WzR!GqG^Z;b$>BXE zF`Xt3Owyl`Bv_!@5`U_J_MDpvc%pDIqI21;q}|j_iV!xk3$m&RHS=R{Q@SYygqej0Hj~)$6L%C z45{~)YI=v&r4nB*RL@BQa8<>Ky3`egIt+nxT-c}9Rl4A+D>wo%TKGa;;g))`)qGwH z1?=ha-pIgu&Y$DSgI#YFI2II(cArjSl2O#~9$z%CqV6HyI*n;WJx9;?CT^86mwWFz zckkq;LIWKZb?$z`dY>B5cWjC{V;2&Md2QmY1DMGfyd#2^Ra_7cX%xsu7 zi*U23_o0_|Q%>3InL^I zz2)(wU>Feb*w+N9W^_v-IZlvYIo?uKFEk zl1ZPjbEpWQjjirFIW>L#&he>=!^9sNG<6e6_t(XNY+K_sf0;GAK6!F^+{zHZsVF}tt#YG_;Uw0&Lp?IwG3 zIuN*Vpz9UA6`a}B37p94Xz9rxWTFeY`epfzon}F^+b{i`S|oz_shxGnCYn7f1Xonx z3dW?IWYqo`DZbv{8T5SZr4PHS{rco-pw6PM$O6{`E}ib`&57YwI%PxYTUXOq-ds|j zJPW4NBq$Ij+V3&4yf<^?%09{@njS;d3bLlep zNeJg_aj(Pw{F=?(T~GU`G~{Q{&-Bloaw>Cj@yR70>nKl8*Q;LclriL3{S236PS5m@ z=*qBfQ_k%7U+dq^tF3?k9^bWpvyr*KsU$rxHXg^^oF5Of2*)MlV(_7kaS{{`$md)#XQEm)6e6O05Bpk%59lLF3r}T z^0>h}+l{5h42yZQ8e`s=CV@Kt0EeHz+e|3r_<_wYIrqu*Rd;>7VyL+- z$qYOAb}5J4+P;F;cBN1+Q(F7-Iwfcxn)pG`iMA_2!mdMe2*qH|qhB!Fb?FOv7fYUg zUVZC|=981vb;(#i@!<2^DbbR;WE50dRqs763aeTko3f%|%JO*Cin`>!Arh?+5`kdL zIY2M*B_Z^Ab)-QY#1`OQj2i*eN!F+_<>}tElNn#l6(v`_*mZ4=e!&Xrmcr2}fzaem zVXKK3pzg`^N1{`Di}HL{rPcIM7v<-eOw$WFZGmPviRg&s(Hh@=Yc@EyFKk_&D6X&h zV9p^D$&KQ?NMkB8X`F7**gM7;EbcdGN< zl;vTLjt{?9wjIH<+w7O5rZ%9TSM1~-ACclveS7tkKl6$wyJJ(3|5MN}>cJG~W=8R$ zI6xaXstKq(>ypE@sxvmFQvscFFvJ6rK2aoHlOgFvfaKclLe3M_c}$(rYv0XYU;A$N zSHR@k7qxaK_K9A*Q+IQYcT=}mZMIw24kM$yH|g#}QaOPV>P+C! zq2sq+_T}xaGeoC5R&s{v*6!_?yrtjdOP)+z%)4WD@@UbMeb`+yVdZwbQ+!srfxXz1 z@IIaW3iZ8a74!6io|P`q^T)H5ekQDR$?hwq!kyGX)|j)`Yk&nr<31RFI6dfea>#DQjTt|+(vzGGV(Vr`+`O;m)tu*YxJem zG}W27T(wcA@{R3E=ttqL4Ds!$&LlpnT!ya-qasgV;?w>k7+I8<{qAd`ggSR$Gu0XT z*kzIJ&bfmQ;tib|@>IhVIzIIAN39UM8pwWoT?BmO;Yw$|Fq7h?o2(B*mv485YJMR!n45N^yh;(wf80EzPSU_G=U)^3`&D2H)*AmMtxD_xeqYEIrC~Cw66bAog zoMvL^N&)VL*p&C3>o&qxc(UAJ{73-3S9xa8en9tW-AW&$-r>G5jaIonZpm1g=5zYL zGDyE?LxeQ;98)S>K$=cqSH$s~o$HoBv^*hOfqJW)MwFfK@p1!g(keHG<=(Y&O(AaO z)pu`DA5Y|GqOQri;-53W9p$D64sNagBsiG9-jt$NT991A9k{`-U%9zET>%Wj`mBQj z_UIo4b*>X$cY@O|38y#FnWw>N5}8&mN*4jajJ(P8heQh#Mfs8bXH$WFED{sdEowIs zTL?3l%=jifYn3=wiAsv5Dj~bAYxI5bp+N^WW;*a*AINgTPI|zHljsFK_!T`5^xSBt zkG0^Y;>Z>6C2*Q70S_69`Cn%fm=IQ*`dk#?)(Z`ni{I^k0buxbMFFU(gy`pMFG2}7 zrgdmTLWG-l>T5ZCtsmPB5fsydZ9>$12XzQ<7x1e*Y4S;7u2%X#WBGzFo(1RxOWDSs62hLiAlF zkzSDz>C2mu*}bcFM5{WL$Zi9ca86%H6+hPx|4G>IY@g1z{s-gt|JeFucL1Nuiv@-N zmI8;ssI4@DAj94Na3ytrC^)fI>K{XF)DVjw#3hp|zU;HXdoi>iM}Hu8{Z}6VKU?3I z&#w5a!!IC>{*yXA{Wi*FRL3g@^KDq?0>GrY+x43&dV(L`?JSvdtjx^nZmdkdSE8?y zN?ujaD^&JQsPI=QZx-;x00*8e-Gy_Gji%1T0kI9ca%~BG%T12J1jMGqe)Y~o9h^;` zyDK8`n)c>b+~h&%o2#&NI3!&yvRCI0HO)UR@8O63&UJ}2*Z#?HCr|L`WOnHUsS(xh zPG0Nl<^1X&mmB#Jr;^nQf+Rkxxi4bAE2A|_>zuf6xKPvKoZ2D$6N?vKZsRl6q?YyX zu3k>-EGEM+1wy(QGbJ^=4;vPx8I@4V&UM0S*eW-NCd;beCW0A3c9ylo$x=*|h1eK2 z3ft>^ToZ>-fwoMeQ@YWXCvh5m6qN-zx2L?5LXPzn>>vddoz^QvBa949H@Z9P zMqX6z+^`rrA>mo|`mShBpN#qotr#b zje5`4kDNv&-($>iZz)N)Q`Z;Fg;pP_ufp|G-}cwUz0_6jy;Xn2%gy&zJqJPj*1A!L zw?s$Az8Lx^lLK+F1T8iHVD8n&U};<~Fp=k5a+A{wu&j$J@MCdqI_@JLNl@zeM#_L8 z6G3xKF|RRVT}oZVG~&?k7T33}Pn3aeL(IL1hXf$da?q|)50@7t4zQ;NwdyqnoTyF$ zteMUf-*_5r)Q!Bb+-VzRt(_4`o>EqGa@jSXP50wLmWcE8jgfBI)rZOAPU2;1ThqK% zLND*Vn>?kY>!@8G=Dkl|T2?c&%t^HZS1fopSt}n(Gfa0~-N?ZN>v$NrLCYHlq-H~ZQGOfv6bO3L`2AK% z`WOnuz4r7k`OU~1H+d2-T?$3{NMJsL`;+)>;`i*5^prrZ)WL*gH>R%){N+iG;8?|_ z>vh%DfNeM4%uV_Z>jqdY>k2}*8~`9RT<7IO;ewE+sKKA~2iVbH-b3g>K@-Sb#m^S~ z>4z~98Wd2=GkP?=q9|tOgbWFi#(v`o>~75Pl@3XBjJA|Z^558#E93UY+jWug6*z4- zaf=|65DDmTgFFj<>7vaf)kIcdu@qILzeOoEtoB$x2%7DupP~v#d2+>cvvFMdF+@yiAKnI*b}@oZXM%!WQU%T63ZP z=>_^{Mx19Pc}9r)ACAoTR=}Eq(18yWI`Ed8y08rU@;2BbPKzPt|4~iX^B~6A#hjfo zdOAvPs`#ikku`7#4vwL3!_+rj%#;ct88r9GVM^}yb|{;4geN?BHgEM$I%~NUJ3INv zg7bAHR1i)k?4b+%smzmdu z{N*HQ?2*g9&Sh|JB#9)k$S)&5Yw_R_rxnZ^=L{_!sEZRRGWZ~_oS}c2RqYIYSvzNE z(uQz)F27DoGd0WdvZu-LY1ZFu%J4Ajj_B(ib?b|td#`)$)zt+~o9q!C-<0@boJf~I z549rSdjn)cTeiVM-x{ejIt?!^KTQZvs+>!eZtAOL{^8%!Y!sKgA?mP`a_p6~7fl}j zL}NsfqrUVX`!1-G(>L}Af~R02gxxUHo4oT$np{U^|##-~#=@FMlJ0{N1x^E?ll+X(5XxiU3}5s#db+eUWq z;*YiUh3)ac3$p?M4cdb9jy5-LkEtm_im+HaWwAa5RA^!n9n3WI^{|=$P}gW?dBYTW z`{Ldr+#u!18XWlBwU~#9LP?XddgF&ePl@Tj>LMo?U*%S0*@A?BsmF_lByo_ zmY53ds19f}!ZYY^W*H~^rOrSHLd#sE%4>O{LtACHpcbV?L3*a&nc?pp{QAF{xfN+n zL3OR&x)zj-r=ZEOWVwE+RbR%TINirnr>Nq%R=r7ULVS@j>+$F+7TnLIRyWC&7G5Lr zo>L^TUrg(69m8T~OVKAXsI$6*FIHbg{3EO{+~VW!ug@bY8S`fEY^d6X`s^-zzjw>~ zh0cxPu>a}c^U?d)Rd?5+m)bb-)@X#HYYq?2H~9>hRPDd;Qg?UijE~f#k~n7%r|x}P z!|Z9a^xy|*^cnl_G_GCjKa97UZLdwj~is*7vhK=*jvb3oH8byFQZk$U zyQ@gZ$elnm$k>-uO8=fj6w?_NDn@jkayxS^D4R2Lql-W+}+co>HOQp<1p6!>>e zn1}K$D_X%vuuWAI?%a0{Y17x~LiO^U{h= zG>7BQ=LPE8w5+1lJPdVhCU&H$tzV0tYwFAojz`|?JZQd9a1vx56n@g+E| z4D6|EYF%$!yT9`UDoPc{@Ef|RE6ZK4_c`f%4_EP89u!A+Ex$Y{e@L#p-$rq)r$=T2 z+H=yk4${YSxrR_*A0dZIxe}1K%&A3j{GlFW3Y0yn(yoWLDNZiS$WI-iu3SyO7W;3u zXncB=>i-*jb{!{4M)1LYS|M}}IH?~gkH6`iG|)PoYHspp2uD)I3-G$xA`>sDskfVI zuBG@ef5T`N$Z&^nw3^oJFtF)`OyhFkHp1pduR2hWkpMlO`@g^N{qC-t!QTunfuqq$ z^`P>^nD;~uu@t%eL4eqVAH3cK0t(koC_XJ;Nk^{-EropLWKw>&;=N^vMZOKY+0@{rqn>|-+o>FP3Y)_O(L4|2DRvI_6N%vqbYnQ-HBVbwah3f zY+it)h^hY7;hntV%*>jV&8L|^CRN(!vpgfzpt`#=JrzpH(`TgB>hTa2_mY0w?zL!?)X9rYk8`Lba*R zdnnm!@gQ9aX<(}qQN*6Ft;4TyVg*CT=r0eLt?K8LHRtY57n5B2hcgcT;`fb7iZox? zLxTM7P=Spv{B^KWsiSk%SL{;jD+*SQ*E?-*ssDr>OtqL4KA+#C8F5DkfuZ6 zo8U#CfCJYvA^0gcxNDgIixHIYj!pjsL)rWe{?Dc|-w$M_Dl>)t^s0OjMm$r?>(h|! z!OTmAZi*?w>B|L)FT_w!y|poqb(~0SN-bd=Zjm|h8ut{*b4*O?}l9l59%+{1VD6z@3D z1|2Fgtp!!}tMH#Z4qi-&^p(s^$oB%b_R}^yY7bT?lwA^HPr2)XoJU=)55<$2A2&7n z#o`MJ+Atd^X^}UAdO^pSkmr1vsF!|;v%N7)(G@mDh)@+}6i9b=Z_J;hK@hJBb|6KH zZ^u;7WYJnL)zym+5qV>V`LCk~1tqB<<{gkeo~}#a(oaxd!133eFK(qr{GmhrD!N+y zpB)|O3-ISFnZ&YyIe&;&2y-4G=3EDJu7wM|t7ou$kd7EE*dh8xZTk103%(DS*{F){ zPD0R-dhj;vpQjbyvZPG@Cmy&S@7LtLZ{A3AT|a?e?y6r#&jf!`McOA)5S`@SCV%I| zGwQIO=wm$j&GK0CTdq6hz38#0O^+UX$u!{B&&8wX-2K7A*LpQ1FPRPbKjTh$$1UuL z_5LS3Ek&P?^^VrYJb2*JX!6>*RLnH8Hl{1k>J4lPO%$-{7wul#P`D{pxP|aX>?33S z(aF)TMg#TE^tI%5GX&z)Pwa=)N2UygEQ^=L2fUoszfjF&zmB`duRDl&N?lp$kJN>? z;hglMf7z^fz*O;HUfNCh0h#jq1?BzkQCu3BnA17w(gA`#{c(wpW^uH+zr}MkmvD%3 zpTxf4zPCK!OD2zu@A5eZ!YK4qe3xnQe*#an%}A~LLSZ&{(q)z(P6`?6ba*IATX31m zQ*j}`ifyVS56sw6xHj5xZ4`f%r=cqaZ^iK(iFY71QAz*(sAM~(l)Ux2Wpq0F&|Lj} zL=^sD34b2>E`Q*R{jLU2jJ8}eurM(&N~pd+nCt+dfUfhlwJh(|x~9&l+g2wCsIH~oR7gEn z3g)V0F=lq1_tUww7>L9`ZMhML$V$wU^#e4g?W8C0|%4EXK zQ)Wj5)1O`84;!kK+EyM<&M1o?JEJ^S^Gw_sx48ii$24h0vPB{2k3SuB+(f)t5be9Em_?ACMv&p+c-@*n8`WOqXnr%9?`8KA2Ab2CxiRR`Cc{|x zsm{}jM52J3fe*0^v|e$yris| zi++l?wV+VgrU0#tr-ttnK}pbd1#BzNEpt0+)fe=`TAM3X$+(i&l%#L%+Jy9&tG8zu z^}5M(E8UUjmWe2@De-q~-h{+o?0m2NoF3?9^f|r~6k?utif+Sh6W?)sphR2)uojtK z=0}IKQBArQku2Sbqhf`%l?JGQ&h%_wx6pPi1$1W5L%ku(Z`B`7Qs49%IyLoU^m+ze zmxlDp{u+E=;-nG-^YbesGTr21{xALs;I*x9-qv$Kfqi(Fefy!78i6j=1@#Otcm>~I zkolewFv6{mlmWYQzM4*f6g}-fob9cfcsUUsplxKX_muGr$gTlG84mt|gR_Z3cs5Z< zK%-mpJTp(3_llgh7x^&R$Lkv_#ARE!8ZvTPZ{*qiKBu}172(s1UFW35sI;lZ-fqiF zI9(Qjq(uIr+WDV7Ri+;773*RR-%0C(EN7$L>0252s)yDKaXG(F$Z%t%Ii4(xdbJd( zkGO>!@K*zHzMp5`(~lIm#A<2bM7RkmKz+b}MS$4Fp`6HWDuaQ!oLVCd%imTKXvF}m zqw9`n(04wPc8=w?RMQ`=LC*XHnXRcm=oj z<@67Y7*&|~vptAG}LKIajg8_Bg- z7BzLhy|O62jo{@tsa$yJ98g<+&SIQB=^R8&Up~Sr>1$H}MUCFpG7aw%`=`VNns+%fS=UOMb@i-K4~*W`RHgLW~c=@}jW{g&-g#(qE&e`BTHUF@=T59{!zZkbvB?gc{8L^b;^259)KEw z4yHx0(w`Ea8>?B}JOpI`xiP6cUPZJ>Pqm^pt~f6~4hXjv{wa+Kp^xGx)gs!xI&>VE zo`LAxwS2qVdn~<+i#(TwpNsBq?yVtkmHnOqo%Vgu*jzAL>kF@!pO2Q5jh~@Z5I@5L z%vt^i(eLQR8ta)Wsq3C|3Qf#e)unpvHg%qSt*kU#a0 z{`vyUq;|jNTrllN8T-H%SjQd^&aMB#KD@j;2lQY8_NeUphj^d93MBHkV+iNUW$@W1 zCwXQ$`bZ3BTC>)f#~Ki5;z${1tVBr--$Vv{sktbA>;R03IXG?Gv80e56d}OvnRv~L zxHD!24 ztB5z+Zjzp*|FLUkJzn3sK2a3&Y9sN&XB#}1zR#{q59TZ5JF8)ACS|2rCS~V!0U{qhU|mt z#v|acIp&QERBiuW7N> z9G%x?<*h6xYfv!LOSfK+46undKqv1^f^Fr23t1Lc*4I-6wvMsXypK*oakK z-EPb)i?@k@hjg!rCyQ{*L9Y0@=Eaf)>G|j@ffsURH8Bqz-JRw{JfSD+%Q3<1mB|A`Pg>fF6Umzu-TT`=`{%vtt3JXCfreAnHYlRRX?wtt&VDeqgvJt9;^+o-M z+tB~ZD;sLoeSCf)a?uCslIUZi5d!K`s{fj;0>*Nu?Wgwa<8A{wB;wHV=|&vNi3CK@ zaDY>w{&YeZ@xm3*7!ZRH$45jTf}F@>xIPF#CKKPtTF7V?TaAFA>zx~EU@JBd48RB4%LFdVBcTv~2~`R7nT~KXtH6!3 z$B4?lF|envH{Bb$C~S{=;{(kzPPHKs(XSIK$T=e#5*@_6#p#KBl4Xq<|B>~lNBz*# z1yDq`KPK-oe&djyoYwuR%uODgR)BSurb2=`iqG@9`ez76`T|@-Drqm~-r_ zRtOJlHF`;vo}^$@-T$+on<{kA+(MakLmjxUKppIE78{AoLvixY@X z&D~Yjbz}w}^^u0E*Ub&Y%9EjwMk0-MO5g-?%No2_-KxhBw(**m!PqWAC~yM79pfwy zuYGS-_o=C(O5V@?e@=;;v$-&=a?i|LGo*JN-**)6cfCI=JLRJ9F zEjwvBFA#>JFaDavkC!;?WiR+~WPlG@{8+4rOO~WRYZ(O$KYH~5Z3Z4_u*rtV{jk#l zJZ_)|vVNuMfnyhG;K#Z(s}dM{mzTMP7-TzmR93yhTSbN=_6+v>QvLP)hGFQvp<3L+ z<-s(98n@;RE61DRNdbOXdtpQQ=<(Q*dFWBt13lO{vhFXfy^VGJ4g9e7c7q@P ze#9Q}19|d^@q?9I;~&<{|2Tg9;GI3=N6~*1e%whQ>+bl+p`tP53Fu?;JE-o@?oxA}|pXE*qB;o*D4AH?n_ z#-EZ9f2^60<4>S!{kO@VNq^ll{$Nk{5HI2{V?U|S+gjeMb>@AY>e&ETy`p7Pd!4s3+On{gG6N6d&xC{I5sM#G&fmI& z$eVP)zzBaPMD#ZvDc6!nWLUK3-C4`hhe~G(I?sv;`qud{`)YTwlzv`w!g!R!0XQaLE*kyZ>J;Xzp5iO5d- z@<+T%9u(CZUVISc#Rv9c9xuE_&L0y8eKb{1KeDIOd76`LS%0bNbDw{8_w*L(bC(j! zny=3t_*#bEJ^??jk35*;$I#nC>0{2=)uFsL=d9#4>zg}pfw2tdEo*7dlh>V+*YcN( zp8iYx_^^R{q^JKo{J77Xd#0zqJ3pQVcP)Kc=E3>O&+~!o-SaG<0Y6t!=;x|qRUb5x zKSWA@X~3jU1gGqNX~3jkq#EuMXDPVm$j}mqc^wV-zAkg_tE)J2)JIP1ay}k~vb{}} zm`Bp<8z|1W-zxEc4X{R?wxeLPB0yKR)OlDD(-xzzp&yQmSl9y|5u82G#;Q7EE!_ny z8-IkJ*gPO!2nFGJqt)i`pts&-et}EM>Iil(TvktC{#?DrTivoq2w1d#-Su_-j;wia z))qn!(ckjz1&zWSqA>2zaPS{I#7A!7erCb#&R8LUNe{}|VOrNU13~VgTH67Q$7njX zA(`PUoeW}rC)RLB+!@1Cs!A*A+E8Gj#pOor^*FMDFR&956-^CFe>b^eMAy+7{rIAS zm<-%4d5gxXUX?s)GViOn3F`4$pf@j$S9Qf}-hvdL(xMIK_)Bc9m_DVCgE40OIDm+y?M?n$WUo;W z-Uz+>qxL8SGkb9QD4x*yRyrq19+v+-F^Vc*!dokf2M9~pN$=>v!*V^TZnwV3L}^MZ zc-Q&|S6-%T!N@>vKs3<#kzP-Be|){QwEFwI^LHPGWdmIBZ2SHbEMr;kTUcWF6|tl_ zo+`KYZ9K`2C+A;p41KV{l7K#abnB|TPXl{2TmE;S%ak{nt@1a0ygVCIvA7__At51R z#>pB_O|IzAii97(1(>oEl>~Yc9`)R8Wh=TI+43X@l+;WjEn8jmKP<=}OkmF$+=hL; z2`2ToR{Lvi)yBQmzOQCt7)^{IN8n^~U))M7A$|~T=Dlr;h>FRNCo60iVl^dEj}#Z1 z{C`GwU<+`^GKh$I+(dRnf0_B>@r)3=?QI~fLd&uejmq2PE%x^zoY>YHa-MRnL`H(0 z1B?AbG{(&Q>;-=N2!22Qbntt)yXTC`9){fen)oBbE9p3d;r-NEW_0m_fUjNK{UNx2 znd4qdEK^~@A?+<2KWb?&4%cS@eU8nRV18fwk&0jbh1%;A6}^p%noEY8aB53(Q+uMd zlN~SLcGJe?2XiEQ?~iQP=T!JeQP;y1sk4*Xdv`xrO!fBk-~6tR@<+6Qc;sn_^1Lp! zR#ftUUdhY(O)0)?fgQmk)&jH#^*k}XTKUJIh5;2msk*8|H2D~@n2tgxYKlhZoe(9F0)_e*ADc7g04~iE;13 zNcuAHE(gElDG0hVh;y_)v4&H%GG6l%A3p83ABbvUZlaTfs)Z+2roYTZ=x5@aQ2z~@g%C59se-t!;y zS1CYwi=_Aa#L=WS3?ell^~rW3Vp!(J^j*O`Z3pKe=7Q<6>%;F6y9M#U~j5kS1k?ew8T{%@peTjo*wz(&p3T zGnz`Ce#2)UKB{;y|L)CHOQ^ci=-_}U+SXEl4*eRk!$vUdL$x}@cEk4F)^brnq4GD- zZcZ`y9HR$x>?zFB%~romJt9u}9;)wJ<)?SRFtYjra%LK1FtrPr)T3wAq;-&)l00qm z=wZ;!lHGQ5gG30R2J!s)@T4pl11g^?-6mD~!Ba?*WHY!KL_&Q|ZM30^Y#w&B}R*pq6%#D6Hwm|Oj~arkB6Pe7!g9q7Nd zDob?c36u-sZg>(T;qaEC{Q8G!2aR`Z9$d4upm}FLcU#{p@cV3i3a7WqRP&PN1#@kU(_eBk0^*|V%HfO<_!He}`smB&3j@Sh) zj->m<5ZkuAP(Gmx7Hm_^8~od7q3a2MHB2<%_jFZiUumT!OP{iN*s*EjM0NB&^?YV#TJkAvv(F1!OaaT1}2 z#7VA79K5Zi7fH)=lpdhuls&PLl%a>%$buaII32}t@BHJQp8TWvpSx~nd>OuQvss@o zk1B>>^J8%-S^k+R_w7u%!b~~%$8ZEhFy5q+upy~?k5R-sdPwnU*If|o*Y$Qhg1QP~ zBlo@De&M5-bx5xKkX7c_oMW#(4H;_DoVZQm@2WCUP-XtV>njNk7~;O?q;Kf!({OD; zMh-)4f62{`{0GG`cz0Ickg_oryfyWLxDvaDq6tCj7%Q>^ZHd*-(ko$?*}z%aT%Y(X zgUVa#Hk?1qA537X#ot;(9racdJI}P#8U|g4{NC)7;y-w@c|n~pP|QzctWObgdYNM; zQ(cA&2*>U`N!ZPmgLeo5EMIpAjSTlSU(1HXr|4`ZbgW0xe$5;%h; z*Thvpm@etbs&)!FBtVezpnX`_)~$&?(~Eyns6B5eyv^+$wZa#WgN%uq6$Awl2cDeC zYnF6*t@=`ReS9{$@Yxu8P0@}q;Vg_P39LRDfML9Qur41LOo(Mn4X>x$>2DdJhIGCQ%^15sIpy0IB zKwJ^E<+84DS3OP;%by>YUlZ>H`!y_>m%68>PWT*xzqCyLv~OeF>RhEStrv%* zMmeuW*gVVns+Dt#MR|HF*OojeE>N0FTg*SPGwa-%r*IV#>4R(MA`;JRX}&2}k5z$t z^8vvj=53&*Sk<#K`8u9oB}4hrWUT7NhQbf4*Ho`)@c!EMryO1d@HeCyRgo?hBC3CQ z)1>_55G=qioH|VNxyFx%yD~$;w@}|mUI+j$MKfaK&D&Ub{>e1X76E*UmEusOQB-+G zD&Ca8mncWi`So+ifz|)EQU=yS&WDK$5+JUf8ujR}YHKSyPH=^=>2$*`)dyDN)+|32 zee@89)Pl5t=1D2zmUxS*R<^vaOos zqxh3}VQop*BL5edDZzN!NHcJaCQyMAnSlu-3CR1aP_aCQ63LLh5DYYgA1>4YezC&W z{l3ouLMb!`(Gw*MSd8=pN+C^IEadwvCDrpp7%N@h`jP$~%8BMXzZ=%#!?-@c zW$Vxf>d0wfuih4nVP|PFqs?bk zYu(-;1i?Ju%_jdwi@wFC5%6Y~`NvD6OX?oX={dudnqk-TGy4}H)43>7U1V^!{Q%~l z@|Jb|%wK`sl8;X=ebflGc%3S}a=AJ`8R|9lp*-VJkP86eH^cH)(B}a{H`n^S+Ui@4xB@j->2qic=214M6 z6yb3W5W>Ety)0I>EDqNU?O(*3ZCGJCJ8FYX`KjVN*G)kx^=b*`qZQM8=1h@G}SQdXHZ zfD-e<_{D~5q41`xJT<=u7P$rGTSxqRMo9q`+62&rPk>iHlf~HlFR&1Q>t94-8~p3& zepk}wwISI|hqpFVvCaJ*|F`B^nh5puzjO)9>ssKhCnT67c>taVSN3M=zZ{89>tg0z z_Bs*I_-?&r>4)usMwXoj{~WBG+yu)Xe?6`pc`Q@??;g$u6}<0FdZJ_@4^_;ymyL}~ z_^5Dc<)I3fhcUKSsL_!mdE(Ov`c$)dnC_FMKfn3{s`z!qc@&k)ewymB9Uzh}yqL)Y z`7+r-K{718g_92pCa11qgf1)-56qeM!_iMOd=@qdSmp)y6&>OIkywWm~+^F{_{+^jIu$si}^;|OKYBI99B>9k69+dtM0V+4(@MQ z6y7VLh-zEI5<*)a8nHS?k5a#E)q1DXrudB*TNGl%6EamCotNe)4a7|2{k%qTe`Ey*6snkMb>*7`|rMwydWLTy18bll*-@g4{bC6xP1h70$@ z`Ny}f`BxfWO}nM})C?tC4VAKLk<&KJ;IYoKyjh758A*@IE&c&OOMhlW9x#}4=A9n zTxEJWiv+YcqcS#fMw!$48Jk>o+j@6X5`Ol*_VgC259B#8B8vN5qP&#&Ej;dlb{o7M z920dl&w_Fx3V}RM>odw92TC=W$~wG8@;bMC<_i zKOv<5dn+n=APFz}KPjO9C69_uxIZ$uulw4wx=);|Y*3_cTO6ZBxF7zi#$nLwE00+D z1eo4`d3gN=E8E&m(Ztb|YvkR)>VU7bP6_Dz^Wv zxhgdlp!LO+@XJ(C!&oh43#G3#TIv(;ZD@DJlBa@)lX7@i9!t*2$HPDE$l_sO7RCz4 zR;ItgJez#rd)Uim8TK-D@9gDvW?U^wAVchLYiEQRyrNO*8;I&Bx&{HqfX{rSu#ftX z&s-orllWSg0l~P%4w<1A@)0Zrb|(&i!3;45^Sj5zU`CCQVfr7+0UAg?Y`_L`wiLcA z5sRkK0Gq2XPhV^(URw}2CA7FFB+CR8IBnWqC4OOZn+)bwxpD*iWT{Sb4qtKYH^5OX z2y%-^u4R((fCZzJ6B@f;NEiP zJFQ345jS-VroJN(HBbhF1K-TJ?DoP>F}r%uEKHJ-rp zU-6vPb`l01D7}P6daU2bi6`T?towFU7{Jd z|MrPzjH{L)Ed<=&yc7q$FMR%W)ZQ;Yta)05|3PKC<_7#QaIzwzlaH}5J`HvfJU4@i z_6yUe=-C2E@$1(-)19t2jzjOSEbHdTgJkcn?*(*)6Eju1^dU9UnYc@hbf(KF>=*u7 z{xtU91P;8Ngv;X5S(BI`ABlPMQdg9?w$>AXZ&f13^5zwn0KOW)_ng3YatX(Tdb3Je z-UWPzi-CrF{0M;+s%G+bWVR~NNa&Z}7w&xHw)&*{uO&Zhurk2O za&32M20Z+v9D-?wq3Y6{2e|j})ul$iWB5%d;lnDL8a+w%)_kP=hcSjfe3{;R==0i` zdM9N<@ILDgSt%ByQxUedr)v#{b9rB&1hw73*-3wni#&Q&E#9-;?DY#jQVd7_dpZ}q z&-F4rQDuye*zP9QrJnAjhnXst8+WsI)ywqPD6UG_As06CuNnRa{#MTj*E2%@c@@cM z-Q+oVLJaLe`P8K)u7wE&^R_y{`bFs?KAS84+7YJK#fOD4fCL4nMLAzB4q0yLCp%4noq5q-XMm`QuS~ zUoQRc;)Y>8S1Ve0hb0#jWH>McIhMLyds2Ahv#C4Y?|!r#z$mA=TrU3aj8b`LbCCyh zMJKTT@aO1ZsnLI3J_TNZfWoQ32|NUoc}*Y$EZx6^)QW)w-7}%oGJ8Lq9?sq!G~bg@ z?&FEZmp^-t>siZ^VRmFW{8aRFU&rq0=c9YW`McUG3R!iAeun)qM?bfy24?M>;j9(e zyMTU}waX3a$nD&`ox`K43$k+KjHS$1qn?F)XM=wpTroY`z63@g-OSCqPnUD!r`JLy z8Tynfb!6Z)wm=c`yWvO+(%ap0=O%MWfpvPO^*Kc}BP;Porav=;HN*wgE7JSuB2%BT z{eGyFgQ~N~^iwI>tnikbJ&0I4jq2$p2;eXKsVkT`B(BKcO1X z3BeB&@UIwVbsB&D|G0Y-@T#io|2x58uWj&z3W^qMtf37RA!$KLrJ4%~+(;rQsGw0$ zC}Op0HE{+bH&L#)m(psjwbojz{_M}8wspoKVMqX#QE@;8N6s}Mhzb;|`G3A^pF07z z^?lpt{XZ|y!_67?*?aA^*Iv_Jdu;^#WE)lJgUN3EH9uJ;7&7$n{RPlRg`TD9qY|E- z{5FroN1+cXEXgeTSe4v|m;RC$vgv~WLOe@Q$q`Z;To}Gg7XOalGiFlWr3IkPBhZo$ z^hvKPb9Xy;MhbY!U54%f0W-i$f;%#(Y_orgs)FTSWXyn?Hu!^C5>c3W?d_sLd@h(i z|9 zx95ov=*Q16hg16T7wN{|LO0%UHiUW%gnF$AHAg?bZyK~7drv3wpd#-}0@iF5c~82+ z>9D|?RH1YQ=~KBZaP=N2KN(PdYWW1Z%hHn@9Fa9sNZeEW@uvCN^qGBn!yk_k7+Lh+3jKfIfd;&M=2yaVjRgkuZ+b-*{jao> zl>H@m=FBM{lYj!02vJeHllg-s8v`$T7i z^0Zk!8YIxNx0PpXA*wh!R)up5WR#eHUjO;jK>Y`)tve=B8;QrVTCsj__Gjx&tix}e z54pMaI-d{d_n+54hc8q0pLpgM)jw2ksQ*GmIqp(FOz-lxDM5S=rt34a)mz2BVuN-` zvd%mc|2FB1P-rM~U|xqr&jG!&m#8dSw%@hE~NH&a;wPUXRi zq*wXhdz3rzuCI1j}_l;Qnj#xvyB<`0cI}-T9H()@I{bP(X1I^U|dGLOjuH z&W=-vN$Gs#=@2Hccn;vG-=2|*u1ZwuMBN+jV%3Nr0B$>g(mFhpHuK1LEVLoy*bN^)o{_F~q5z3 zNA$I;Vy*_*RT)>qyhkoL#veKCbIq69%GON<9FO!t^u2t4_(jZe=8)FG)(mH7Nwk-` zO0dbcnz%D#Yh(9Xr`??PdPd7A@wn~gh(#k@cSMW$)n}28XdnG`m&KXO(#)l%dr&~* zr++ma1tt3Hzq4V3R*lTH(GeBuMFQ=%x0{iU&gKpPF5^#)JFmj=-mGlYO{xf6y3l|0 zkk6@%z?d$~@C>pwFLfS^Q2ZjtL~$s~KJS}AXQjEJ1fSV?EKSOssoiI5kTKu8&ZkyF zKRCN{OyWF(c;W}tw7pxv&~P9|*NH>x^53nic(>u(8U2CnTz>EREmC*5tijaqZ{n6x zjc=l%RoPm^n8bjqRgau=nw&NHi)t(UhC!$-Ir-&WCH|t*a_ajweBA0AlPI~w>SU>U zT}|6Ns*ea1w#qb=1bQNd)f;{b-j7f5I zOV`X1wTY$)ysafr?$#e|ae;EY+pDGZG7kvKEEqG;H@Fo8pg0U*;9(j4bDd@ts|~E_ zyXeGNK?ysyYD;?AzAbD=>^#375VhhClTc|b?~|h13Kba-Xn+Sm-sYl1ZwQ}k8h6Uf zi6s84e#qJ>-gOQBV?eGZk$^Yn6pGZvAJz_!orz>_;>@cIn9|Q#yr)ZFP%gz4H^HB9}W$OC-?&1KdWcpoKrrxxD(CeD_uzYw> zuq8`@(|Wtu01Gmcaa<^v0uFax$%S%CunyQza#@ac5Rnxde{`toJp56sn%KHNoKp96}ozKqKdt2idE2?^0n1E+h)N0Fn)Meo;nZ8slO)L z)~61yZSx-~95(9TSRFqn6u#zNp{hEzG2FJXsJeV(^*QgHyR@^VDz?7OFA7&I#Lo#z z!sQEjawxHSod+8Kiu(Cgu~))gWHG6u@)w6Iwlv%tnX*_2AhE>KIKtX(z7AJB*SLz! z<=4FFhUEFig%W}_AwlHz91{{$Eebo$fwx-8y74kgerm#Y>ILSpvE$G9M7TC05Y)vwRn-XoqJit z%6{y4hd7M0MPi)I<5kaB!VA;Ktz?BuTFzt#PL5P`fBk#Vbcx@J#0yJ~i}huFwzZ)* zNuf#nB`fRI2Q<$)cskZPI#FMWhPtF-e;rb#fDtIK|1$rmzsMg#mc^I_aMb1RNE2-A zcQzKW7L7%adC|>OeJ0h0fBV4h%ab*@2uWDQnA6ZxxThiti_JdXAt=@6ZUS7*# zv`aEsq*asS&SxOM#n0Q`@8u={{BZ>eN0riSuk$-mFwlrxyfMe`K!b(WL9eCUs-pWy zoXb-C$y8TO{6Wptn#9c$_*11bH*Nj?6&)OEibcp@KpF(a^M$J5$wf8sxs&xpeD-uz zs$lPxk?k)>*JIvYScap+n`QC%`5b(Ttbk2-s4fn;8IF2mK>~!CHK`7-XE!HLq`*M= z!&%?slS-~g|7K=gncwg4U9cQgATz??Am+mYzf*bzJ5%B(BhKlMi!#j28<$Hlc_ftY zP8uoGpn$BWUw0nioKC4X))n(T+d%s*m@!r#R5VV+)Rrs?mw#A&&Jqz3+L8j;GK3Tf z$2fU)u@O?6*DRqEE@y<6W)aeS9zsZUDH|PD0|-B<`)|DG-kQ}G6yboc_5{5*x!{aG`u^XqeKqU{AW(M71UKiWZL zOT(CO{77Q9{2PhKsEPmDraZap+x%YrB<%1C&*!mbD>|ru%yIH(H9Vo~`CQlJTg#n) zO3Me$2ilw}qzr(8cKJ_i7M5(|hV2Jg4HKu7p2jjpLWVC97r`Pe#5M@tG%vS@4aUn4E13l_5w7t62UM;UIyi2N)0 z%X|h!h_-hBwT0{-t$3|r5-6fuLQ&198t`8kDJ34xK~QacFd;?1a^$q#-yE?z!O!jf zVODR4f7<<84A>sYH=sJNOWFA-EyYq7MLM)hD3UrB#St`-%!q0F^Pfe$C;NX9K0ZxP zD?-PaYoF}}|l&rar@56faoQ zac!D967?igs(8JjN=&M(F1BIXT51N!wQ(FPomClm8D1N5o3Vzf z;cQJ$+39#*i|DzEaT``0dpV5mQCr7&o)fT7-TD@%QhSz#)GPF|9Gr5!R`r|S>fvHHKC(l8@vm`lA`P5L~4ky9Hq^Ago4mmlCQ zb$VsBb5x)%R6Cs#b)mXA61C}D=C6dQ+n!C~9S&ACdwhxK&)fE?L$H^^YqK`juqb{E zgEiObKaT-YUUDAKgY}+_mf`<+wN?ro@IdV}Nd>9+m5)G5+V82UZc!yfC%6Dg&HADK zu{%D+`{lK0pG(ucU{srE%Ta#f;Ucb$dysyyZSR)WtMQ0z_ox4fdNV?UuJ|u18zNfX zrtP10g=33U=@opNuJqehDWZP&+78;iw(El0es8sPsJ71R+Tu7{cCTpVJ-dN*3>9V6 z42Q)#=xk;VWcL)ntyWVpf*yNwj-auu-kNhkXCh&lcMg~vN&L##Iw{4Nybp|I5$pz+r@~2RU(A1<&V;VX6IsFePb+n;3!=-mEzEyqJz zsXo;NeR@P9pFSO$>eFNDQ!6eg>r?VO;yX^CW7-(}3qDH0|7;q5lOV9v`a5(^PAk zBdh)$iWeahK)fuu+|PdL_~Xv}hOfZ}53mEG#7BS_id&Lyh0ffB3h@?-RQA<;L&c_N?)Hn$H=(qZltcPh=+d!5H3fdoYGu z^(-;uFkvir44>pp?if}oNc{`OZ`MuVjv%5AE!A7~ z1M0sVPbOiXrXPOxmmlTjH5^8K=bgv=D9?YC)vzYZ=$*&8i1DT(bv&wA^SRz5-Pykeqn!t zhlrc=BeCmMK${gKv03TMjwW5|UnFLqVjcELH@YXV4G;;N81DF#*9ce}mvlatmj5*z z8q;}0Mxq+Pgyuv$Lbh&zp|1d*Qo?~MO}BOrF8_M4WXjfq{sqivP-KK@Q$d66Ut}ED zd@^L_d?w9LK*%2Ik5|@aSMTyK$Ef|;y_R>SDz`W~)u{Tv{w3>o5xoKUnflNDqWb>| z6EuZUgZeMw2R}ozJCKE+eQ041_&ITp^@qnhl{#^DNTG5Hv5{t7P}0&ma|*jMAhxv) z-_07Y=!~K~uetvZ#Z{%Bb)AF=`>hcb*-_TpR7%xw**+FjE~86N zx-yanz@VV*2rv!!RfkgopGYL38?_!23G#UO^KjNg z64Gh3h2tY{X7}IxM(TmIhD7h5d?Gp2p}p*ul|(z-IcWX7Hn(Q}O?ahfs#q-JH&%nC z&_#tMly0{F^#5cBlx0RabLHZLEQ_5*1~CYGSH-U$kj~hMxQ>r19g!%!x@~?4H)~i9sY=WQ$(7TqFbepp*rq^r3uh-(x0Wx#Xbm6Q(Rok+WjMMyU-F}!1;KEB zN5zLTepfSPof97R$0} zL1HJQdd;&9GA2xUtF4$52Qjm@q;{HjK3VUdm@P3!R57pBl(<7&*J!J>U!dc+9#HGWz$o99QI^qk?hYuP%V4zWK(+0 zTF)}O(rby?bK;+c58rDp(|uyd9oBd7aiSqrdChu!enZgzW2{V%IS&T+1GxtkdhFzg zjY4+c%x$6dOXxzQQ=A-UU2-_oS#j~NVfC_mz~x39@2p-{Ph}Z4K2Afa0XxvTIwU^@ z;F1i0r>6is+{*OW^ydJ;Z*bqWA{+Yw=99PJn=!R<4^7M9-ualC9*MyXXLy@o|zhB%2uW)-Tl*^dy^*`-`k;?q%aEf|`yygd{gZ4`8cEo-U>TOZ52Ueg|jE zdVS2CX6_K6?X@hlGU6cLQhg~7(geO72f6p>=;XIis(f4Wb-9^bg?FYZ)Nw~aT{^eh zaicX4WYzU9k6m4pRM*Q^O1tTYOtMNK0mVlIl?(=St7OP8(v?u+8$5QE9HdJ25F@juNQdb_}mS8FI6QqBZx0gF2&UZUQPxA{wx(B*{_G}TK*g!WJIO47e0l=CJL#Q z$ov?UDs{qpBob%0?_Y1GCxiwJ4q{Bu_UmHpY~Y+_OiC_&3H#z{UVCf4li|1EhI;09 z$j86%m#jCDsD;c5Ou<*>6yvVAmhCa|y=$CA)K)U%JsNJQ1+wOxT=H*U<@(MSO1_ub zqX0h8^Rn)%d7ZK`(9onf6q{`GH`gj7dH?B+T-qD7&$f`%0p6=b_MJXz>M>p! z!faTo%UOjfWpvT+5!o}RbIxl`pljfoBtuRLUrZE};92N#Ij>c1mY0 zswWQ5n!QGr#Z3&|$@4G~gU=f^#BmeIJRf|&QzW#=5{@4~p!0z+ub}bsYanj(gVr0h zdo3?XUfbT7Nv2d8*>coo0gn?sI_HQ2QL-MeVn)8B5=NEe^szF%U;0yU-;MjO6@)Jj z2nT`x;pmP6@8{nV#-cjnBx|-b0UB67rBCu^I8)GX?u(P!T_28~Uz)F)h@&LMOIbDH zs0yf$y?%V6WKdc^Fm-D&>Q-z1qR5m*LJe_wUkS&ty1nKQ(d=)H&sTc4wO4e8 zy;~PlJUjC%u@9?4uQblDY~I$;oug$NA0xq9Lqj+|m{1-PHg$|Lg+jYuhcl2ag$rZ~ z-qtqMY>A#5LX^zpjcuRn(II@e=}vklhqwI#)wTIi6=V0NLreUCtp0>!y-I4QaLPre zDLvu%$Wn}sDg@!rl|rg2wjkW$vQ{Bz%T|6`1=WOOXAIy_3PnyBW2}M4hWt-3e5&FF zCC4Rt6^EnmFq4oskx)ZXYSX%M6Tol|$lPNU>ZNrsP zk4BcdY#a{d$)5%+OCrH*ZnQi0pT!o)N{Qru8mU;4$j}bj5dMu9zbK^U@cdY&J>w~#4*2?srcXx1K$vuL(f_1jWn+@M) zjhL*`3WlbKjKtGri=?JWvTxI}uK0fVwf3M*A!&x(XIhM=ESgcCH92IcfrS!brwTf- zZj1$BeBFUnk^-xnfwemtllw?ra8l@h?sOlwXk$bmiT+@(QKWjmau;u%B=TB5M;~$0 z=&WmHO^qCo{E$b|P(#T=aE~IgBU5u-s^-E>&99_uzB;?+Rvx>WL)4u78@I-2*sl|? zhva>x+?n9~m?azt-fNi;xdb2|kQScb&aPN$oU8cHEmZs=w*dJ*e}eAcdsRYUw3dw(m&}s*zg9|MY9d22GV)K4w4(Cx*20AU($JJ zB$hfGI(dtl&fH3$%(@)}co`+l`HM$YaxNNKm+-j8PpKu!#+<+LOC#n!CTX4*T>u{N z6FI*!r+#ZezOG_Xoi`kL;&(%{Dx?JAHj6m;%&%DE{p@aTYvWfJBf?+=<(qU!T)nxE zI}6kNS9y)ei1(GMim4@qGl$l=4Wl*j-#ckZPIlB4%Mzxb=g$?nv)7*`i^D8a`^W5{ zYq;4SH~(wk`IW~w=G!7?uppgszG4RxXWiJpd=qZ!wbm8uM>zIU+s{AxxtU{lR4 zjut0Emwjw`b45d4*NVB8hx8C|r9{Ih-)#A{Xuq`m>^Q=&Y&DJC@iw&@(Y3@0mj6Kw zyM3>Jb5p8*7Jd8Q485Y?-kPJEKJD*wqt<caIH&i&0aL176gRcq zK--sE+gwEu>793Fu&4dcU(h}>(k(CuhWB7CSy;GipA-zcwEsY7rhRFJ5aXvXFcDa& z^M1)|EIzj(nb9D@I7<&fhsmomoq2lUP>1;r|DxPBvt~ksRsevJ^Rv!*$?ETQ)@G`| zcW3waBu-wB?MOF{Mi$wcT39i>$EO2CBn8AKEZ(e+X92O`eFubtAsqo>v`D|fdx788 z9P}M`Xn|Xg-F5$?0Rx8n1<#-AE^u%(LVT0+Y5Rg?dKjn(pO0KeopG4yO zYOf9}lVPn)LhNQXo#aq)ytC%y(ORtTx)73vQQY@Iw<7$Y;bOO{A=Sr)6=2A6O{>HC z=?R}i=L_OyG7kedT;$0N!_9{cm!aydyqacgokTSf$0@l{xs=sfT;Oe_?K^u~y3H_FoLb#jZZl zzeBDOJ;a|C>@58Vf8X|$zwf#7CFb#~#a6mz<4_y`S+2f^N=kWPxrpuWeI*z2H_dq1 z4N=U!{$agTlv~G{Y=tF$XoGr+kkz)h=+3bB^W&u#N#ki*74gO_*4~Pu*o{_!6dn{u z|Bow0X&kk&rcP%0Eb6VPSi_mZTe)wzghBfewa+Jm>W5zYJEXQv(G$C`Hm{YFhW|_W zzlt>43LP)1@}8+IVD03)FY9V=UA0zukLG!gR(8|P;*Y%VuK38Cu-NOhfIq9fUQ50G z+q{VjIVz!gOQd3F;~jDb92e06zN6mI^)cnN611GP2$gjiiT9GPX*lPbPpl5nOwWR5 zwpD7gc;nk~hcoySrxBRz6qJyXzoEPT!n?v*v*A3WzzktqrG_OX8EjRiNjQ(a^t5c^ z2-dSd^f`U2Eh}wFnQi{BuTSeU%%;$f^M0J?|M9035>w4^OUGw7mWEBDnu4RVO81rf zbYGORg7i{0ByW40+x+|3NJjs32Ls3wV%=>r`F&|R(}K>Ih`oqTqu{=fKk2udP=}P@ zFKX^%B^vIiR(I$~RIX+!2}y@Y%Wu9%A_w39neW-XYTu@rypl`kOSZ}DPxfH1$4}{6L;`-*dJcg1J{u2L5fNO*x{7VI54oW z9HTqQ$=YXs56?*XmhQHB(&LmX#a&S7KUcj@=Kk$+JzL>5KV)TkkFe!8?(gKjYelNP zNPM0{Lsvs)MMy5|DcS98Q@x2Eo39AkQT%bx&gfJ-3VcFNueDVp+Sx%F3Ep`Q{ap=` z=NKhFbp6;XQ-8y$)O~}iyOH%=(-}Ux%;0Z0k2GedM>1%X;#0-t?P4X4g^AV^_xj z)p3f|(L~cw4H7iaXDmHdN`K0FPF|t(e8?$pY3|amg7uv6$ShM(_(+6G*30 z3=0-=SS2N6jsMiI-Ha6ZSH(Wm3XaWn;?oE^cqO2DXCAYUNhGX)V_DJh|M1yo^c4g6 z)QMTME})NKQleUZ&B(-SHXpGm4VkGJ5NpgPnDo$8;k#(W@{nhjwFwmP3CiZucT~Dh zY91Zw=8 zP#-J2HlglF)u&|~Nb!5A`V`%c`)MvjHjVYBk z^{k{+rk?Jup2nd;9qZF|9GzXq!)aI+BJPq;SRG9?oioompU4`&ta+9^4G{J)|7_0t z!=p&HxlEKuj%XZ8;@U?>MOyv6hvhfoH$%D&994Nmw}u1b!%O_QLV9B+e-0r~BO#iNJb{{V&HBQ43E_F49zG?G-Ho zP2&|?dX?%a!$X`B?*NfkKPPnm|U6uH&+2?11UHUN_ z)v2|W|4Yz}+Pp#C2V6Ba&$~|fXsr-AdnhC&C%e#BROr{OK~BFW8UgQ|OfJh`ib~fr zfue%_9r7M&jSVlc@L0wf#4YhkIfq1Qk;=Y(sVi%#1^q?W1oo@e+`a^Vd;ORH&-q*1 zj{hEi`<+lD_2=K_Z-4xC7E1{D+n|fZQgZoQ{HJ;bKMVNVH*9_HU-Gvc4O8}p@wI{3 zjh^86+7lNAjb3AYFkZBOs?kY~x80puKpf+ETTjPw()F&9^0EtmJImFp{r^_y{0oDQ z1pMv9RGt3`{`Rmfp`btPk-u&DnZPqYXEuMk@F%e*E#N5Y@rP5ujaDgZ!Vnc=d|rA1P3 zpapOEy=;jkh}$^MREWkAjwpX)nw70$H%ve<_BTRV+*lP5PV9Um95T)(dLQiY+Hh(Y zQ2;J}Jv-E+u^!o8`Ooq{x@EOp^FL}0FwimYcCv5$x#*ad|1q`9)A^k5$!)cZewGfj zNts2Lp_L5?w6gO^?Gk(5G30I?Fu;~gI;Y?R_oR$$TK>K4DKPKjBEOQgL;Qp_v1Bzt z1LR;P5{IF9&wmLIr2FJ`z>-QcJ!4buOP4PTvhK1#;r|$qPX~iEwTp^w7t9bcDI0AyMkkz?O;&k&rwr5du8ec}R1U%SWJweJ$KOb}u}LK8W(NNsvd4T} zo#z+Lk-6Ah(g$b>S!ynECXM?NbM1C2@Oqj#=ig{$C4A5c&xlYgvXz`7SABZoV~y75d|_dH358L?jiyXQIQ z=QBO5hb`@-^N;?;=}n{5NIW)F&OMKRiG`W&S~U1Qc4Y_c&<$SGRR( z<4UtT-*>O3t2nHT{d4MPhK1n$D0X}VbRX@e_h2`@PZc^-vcWdX5?^KNA91DCsNSrs30!q~BSe!Wx@Kqtm>p}(1_P$x>W zSfw|@j}h8|YRzVK(VOgQ|0?3is$wK$2&l~-{!iQynuga1O%#{Vc{hMqetbrA~eLkr|O-Qy!9MCL%dr~=tS=U*9P}GErj(x zH*9OpcJ!ywP1B#(GEVhevrt5kqQNr){WEK3iaIeGbXtGnR`lzHAP0@FjR-TR~VuJM?l&HK}K#oK}?m}Bj( zy$jV|TqUxN2JK(Ye$e@le*hdYup^jfA3FCH9I+ciJ~)u7rW3Cr;b!VIiS)QM+G?H& zCI9(LcA38?1r8-VZ&~>jkglKj;l%=EokHJZ@B1IE7xt>M^R0gs&X1JFkX_(6P_g*T z7uT0sDZ1`KhD87T^&M21n1>w#xmY7}c5mb>YD6u3U7*8{cHsK5PZXUqgKynzm!BWu zuVCfHrsAAHjLX&_-&kVEcpJ2>jh9B^C&1QwJTy%Mr9&LmdZI^_1};{>2{SzV4bPN4 zzn~;OThOwqGe!$K(N>mGIyjdMkdha1_|dev@wrxDRm1*S1-_a*iI=7yq}Q*g+f}LX z{L1ut6yRVV_h_^gu%&_Dr*XDpU4Pa(nSjz6ECAMWcA8cPPtgn{Z|SLyUX7wu);}oq zrqbw_sl{lbM9?2y#@SqTOV)fL#*qA7Ag(6%;nBZVXBv)Yg9+`mu{TqMsiUB=1Q}@{ z!S*WhFI}$2c_fW1$UX)v(Ve}o9#p=>`Q&S2Y;!T>)Wjdtc-4}RElN6^uRf7IUjx6h z6h2f9gB4@#5q39Ak+Z~R)(F1n&il-MXFcL8RF~J0CZtI0IwJ_TPLbtIQTcy^UT!w^ zE0E+tLeIdQrdD)_GEk%4Y`iv+%UqRNVK;kPK z`ijI+CXK{H{_kw*!&V~4i}HE1vZKkq;k$^VWND1wwB-%|V1Tpa0wvu+JsY5)@GJs^ zUpZ!#eCKY773TfFL60F*$8zcM#wi-`3_X5)rV&7ze>H2}@=MXg@zs$PiVPmP7hT!I`2HL6 zt_U4d|NJejChz*l1?=SAZLjbIa6%bjotAgsx*#L(?2|8)cQ2bdlS?mCjXpB;vT%|O zP?}!GYrytIFM@WD@^01=M=w@jS9$j%UVa&RX|dIuUHR8DTBj0FyVFZm{TI>8cT;b^ zB)z~6`bM8oZ@!ov%)vt5om}i21{8K+0|Ptg>)64v2Lf_AFn>?vB74cU#YpM$KV<1f zn@c$0<~=S6T&h@f(E&PGSf?{$APqa*KOIGz4F)&PKP|R`Xr2XgPs&=pe2}jw%a#UK z%tMt!&)ctyBZFZlSX+)8l9ZHbh zcLFfwziiq8MBU4pZQL86iceeMACH$Q!^{80mC;ie&%uYOLx!Fai28@FSBjaL)v0i7 zMQvhgNw3=2ySe*0IXH)y|HyXmyqFxZMB)zqWh8%Fr2iIjUPq#T-vi+LmvjMYZ)6B!F$bS`k-;SQ!zAiF_K5bS#ejz4@(l#?pHT^frm7)zPZ}}ys=rq=X z!*=Po9WCK}p$q)6a-Oh>#v9m*wp|z~?zQYFjs4xbeianul`j6st6%I5Tyo_|^I#8Z zyX1(D{BzEqhK?F$L-%;w9^<7o#N8YKe{*x9T!d-MnWvu<;$@dg{Eh{K-Pm$N6@bG&=UW=^HdkVZ3MXh6U z_f@*JqS-y~>DJKGd$elszSzd)pQqM25(VW+C5#E~JMzyz^Lzu|k>} zx_wnS{{9O_tPp{|ro<$r0(6g8?dzMvnT=ZP>Ck6@jnTpBHGk!2h&(ym74L!rEYItj^ z&EW>emgG?x_}zEzlY+qplAXSpTK{s~Ax6Ac)nN36s`4GlzhjU}#KiJ>R>-4&B;Vta zf5JKBUk=PI+(N5#9&Go)JEt-lV*02WFP}zy?+T__apO7U{3(nihVO&HaS>j{4gav! zn20tzO+QUsN%~2Aa7jmHfg4dAS(k-kMeUU#%>Qi-2Sjj?%CHXkv&XAEV=R@ry{ab# zVlPKxqD=x#34&U9$Jo5bwM{ZORwyn3i2Bi71u;XdC42_eZWfMqY9#&%z9%g-xFO9Q(kdIR$mGqObAES zK{ts=G%a7=-VOf#PpStJ3`a+TjY5$a9>T7M{rpqodZ%nBUBtcA+8w>lNK`Q&`suHP zm(Cprn-xdQc1L5`d>S+-%=K1+E2KlnA9JCq<_a!rlgCfU0inS)NcgM12B7rvmlLca zCyY7$y8Eqm3&+icMU1c-Sc3k$lhgVJ+@M~KrJ??xdaB=`Al3Cr)L&*hv1pV)dAB#_1S>B3Mj*|fM7dUo| z{QiUyA;7aEh-le$0Zv6c zHXggeF9%$__c5P{cn*+LknqipKb?x5-?&ugvucL2bIO0_QGsiWQB#_|6K+1oD}o1gqC0>l3)ju++!{Ue+k_PaNLKo4Aj()~GyLk=o|1Ws!<@A{v=@%(HN8 zn}3~6A8yE;Ok5u)r))*_>K4yq;}Fi}i?49Z^ufOZy9UE=e?YzXe$5mdm>rQRdsob- zK4Q5@w1MX-ox5KMS1>;-=x1c`H&5IBN=7|SqgB*qRH{li#z#ecU-M%B8O=Y0ujWdKwyvIv@1!!yA-gsjT0A0lyi1PO5IWX^P*hL;25q zY;>(1&C5)McUyFnIfD~N*NF}x!2tmYvW2RA6S~&kXjqzSBa5E4{lw@m#eV1-89|pd z{IHAlldF#)(~&qhHU_FQbHC8d{c}a1rfRe1kX|H>Ez-WL?bK5!FZK_CP$@4@Vlwf0 zp&c-c($$gpDP|BpNdLFC2>LRGJ8uJz7*~lOjyerRXe(RHl?Xcaa%YR*GAWSXta+6d zXpY=hQfz-Y8yW2(N#6zseS4@RWN)DDxBQK0f{}`a4d2o7ot|fO14tpL z@OvixW`7nIM(2`9?ADS#y!7`n2v}~}__FAZX;LP}#HK!Sx5%9uVe%cNCAG0$|Jstt zUjOkW7kd3~Eoq{-*Z)pie)9U?S8}`EKU5+om)HNvl2-l#eHO8Yk5&c zNUyBWG6ltLaOjVPESdyE&X&WTk zxz}vYX9eFdEsM2-Mk>`!)V&N%_016>t2!@U zL}>a&!x&{Tw_<-gJKWrdn@mDwdPUvhYZ2>TuvXOsZu4sMKdSA&^|(Ys8HXth>+9c0 z)twJWU(>d{t(L?Bi8q7C$t%pfY1U_q<7V}rZjV>r8aQXW0$?4pt&rEBp0k+QdVHd= z?4mPuHj-?8j-t^#<;#%Y-+IB7y!A!l_5$n+VIylWQV_>NNks=5e_G&%0JhYBb@C#6 zT9ubaJU&MmETb=OSn@gif~t+k{GT5$$QTK0N$Uckq)u=OC_>{d>|4b~FaGPN+7)*B zgH%JtGj=yIN7D31GLI-LS>ZF>yjI}B_>uxU*oX7sS{Sb7{=i+pW&gV+gK!{AW)BFM z%6VFk`9v-c7SrEsS#^0KE2%w>*#4@x*uHhK_0FF&H?|_SrUrXE?Y|k;l;73=^Jsfn zbmu-Cc{sc5(%0%@@7m!)?REVZ5vS`<7%3*n$?I}%9G568t?mD&zZVehGO=@<8yBCN zjp?-fgg;q)H*r)f`Aj|(#n<)5YU4CnA|5p4z;n{o3EfiZB z+p0p*9s69mjI?G)h>WIJCC>WX96(H-8peuBUaHOKM1>FX{q77@UH|vAL2i0o|LtxR z$!+iVt(G6C5F3p{)IN|g7>e{y`iltm6!sz+awyRRnILX8S$lIY)V#hdeU4Lb{FMRX zA22Zow`t*);iY@Ja`Jb)BZQQnT9)tbG(<+7^;t;Ey8O53r~krQ{Mn2H2j6H5s6!i0Gej8mkT16KWx= z!F92XImCnfSd((pWcBIGTq^ZmbYp(a_Vrvj|KTwFhxq??82w9^rCa zf;tir3m?K6KKYE5nbk4#&)jw4{C??n2);{RN_SS}N_z9Ww5 zh5ByW+RZYtzL)tMPs*7p7GI6O6`wb~Dh#+aY7(p6-t}Dwz$};Rl$6W$2dFbW<#e@E z^F+u!C6i(u{%2S3IvQTfa;H{AjIYC_dgnckf`&H0XR1gJ*{pn~_%#x}Yko2=*eWUg zz>IH`bLNvRod!zc%7I%8_fR!*&bD1VMb6o^R4wQ1*JxGFS)GR_=j>qqDizT<3HL|P zA}VJ$l;ETFnicorJz7=xP5iW9{XF?SZZmUC0Lnva(Jqq9iK_~Wv;4DPZAB|L|Lj-O z{@Jgt*E9KNzbgN%H)|cz+xciek2)XiV0mZpwenj#xRT$h!DI2!eh(k*_loe*eosEy z?>Qf>wwR^mg^Hq6CK?JWWeW7P`!Zb~%H>G8YOVQ^D|EFbIn@-0$~^a7`jbK$(d+7z zULi6nmKM>It3qUF)mL{Uzr$NS*JGac<>5b)U+1BJ*SJ8xx9GM{%u9LAMrrt2ljBa) z#DnOzkpG8K&<4^sWO^J*BZTb#W2@AYb&-yC(B2i9vJ~6Jf0Q^*vCEL(!%Wd;t0*(U z3(=U>maLft{(-=f#*e%oa>9QlsnlN6<|dC;HiWc9nEQX5J<#`8Zo*_4sTq6V*b}p1 z59C#PgVDdjcR6axZutJ$hswk!j5}1<;)ZspzC->KMQ>^l)4Vhn)eoGI3s5Cm>@N6z z_Ltd3{;$LLd2{~>zL$^9hCO9}p_61;dqe3lnOtit+Ar>1D^q(VOJz81Fpw5wm^FSg zR~UIM?}*n$*=XYGL+~L(+Bv3DzAj>$2Q-?%EDW(Zre=pUduKz` z#JknCaJKM;p~gWqiGqD<`ja@k7Nr~gy3Bt?PDWMhFaKYxne%e^S#4~oPOdCflT<2O z!I?K`=>FA5yCzFzKNJU+gc(0HPJzx}&aKT~9?5U#FmTlp^6P>xLY+?4*!fiAGSx)|b(3a6dyq2#bb8P4{b?jPX18q(7X0m)T zqaaZRqIEj-@zG>Q;?LXwBL&X20YzHA{Q` z756|?Ux%m+z9*(xE4Aw!rCz?R3|d}gb=>73+1JZZk#Sf3)S;eX;!!_K9SB< znWJ|ztj|Yx=6lUgQG3&|#52daXjvt-ae~yaNZ7j(D!i&>a_7DVN7K=H4X5eIZ&?-4 z#8lS)@hHg7Bq80lhIR4k!gyn7rB7b3IhzGDDc2%X+Q}&#Yb4Rfur{4__<1D|#@;|n z*IgO5N^SnzRNZ)&lqs}HHIL0QS;Ls28n5NMgh@#2ggej|DV$?X;hgK=i?@^01ViElPenZ;Esk=4;o(02L7)AU#qM|Dd6i8gK+|E_rqDhZ}%^j zm688;=WULTu0d*dUF|gwfF!rF!|lG>v3c}eL+Tv+A>o9X(MRR{yN*)hFGZ%Dgnrv9 z-)P%g94@`0$Typi{If~engq6I!8LXVF|=;@^ST%S_p4dU4(Js;D{D}9C1%lNR~ zefXMJ`W8=KWcMI{HhAL?9-(T+_Zwz^dJnN;lV0-%y-X!9v$c^byixPZw{iO_PcP}g zv&RIXCGFS7L?Ugr5PY5J^-^>TVI+miBZ-0zn*SF6uPFGa$}2ihKViEhx}xa90U^t%=>g85x^b?UlY+<(01asM@Q4TR$tj(xg|q+BQgry@?wsJ#iIxYuPUO zBLAQL$UB4FqwHxMwDO`J)ZJsjaQZW7>BZj+(+K}p>67Pz?ch5zll&1)?M2g!S&amw z<28=jk#(f^{l0xWJan0cpkKk5*0 z+iNkK49;&4d;8Vp`Jb?gn7kZXmuHitv7>R;qA-v;yq6N6@wbGh)p^?7y5EQ@zh#(q z9L=m#*%8Cc4dm6g`RDUEd9Ef@mVG|mc{36haDiQqpy(UOePHejJB&5y< zpw^0;c z|Lk|^FSi0F-=LT9i$=z8Z3$Q^sxKMf4O-z{yOILlpjW(W7rT<@m4t-xZQh_yyla(} zg0feY6zbUqZ_ozs+S~1eMc%Am+r@Hk)*QRo>dk7gi?_X5S8*X{H{#|mlcnvMew;zWC4VoPlE`tUzEaV6bPJ@1eMP3_ziGP;%U{;9hsszPyjsB}jsSI# z1)8p`xrq#_D|A7<_*`Xn{G8gm8HF_-?L%!HBb0!rD>kBbS3PMM5M<--DjDVLwgJyC6JyuZfjP>7~wFtxiE7z6Hn>t1WysD^s*$*Y2p!HDWH;m2;y+I4S=t??jUZykP;yp(fRK>Iz zk(87Cf(L(Mgo*7v!ouN*3I2WDw2v4M4YMvYVzM^rvloSb+|~NWoDGJcJR7OR;1gq8 z{ll?>+oOK~B2>f8eqTyN5?4+yUlLp6d%QD%Bynk~J^FXZEFVtXdn&L>mn-gwPVKHX zGy&`YCJ=(KnQstJB$tsG8b>$@g{baWc}*((ltg2)9KdqrgYz?Avr%xwlIAKz6s_L(8y=$Nh8@?)%|` z#5>(o>SiuC+Qq;mA1gB`HJ~p#oc8>mJ#*$`~;o9182UpU2LSd zW=cU*ZGNlEyBERW^R6BLf)P+RZ{YBdcl{lj%PqI^%LpA;;0-*k(7Qfi53l2wPw+M# z$|n>r@~*$w-uy(r1CQ(FU9STwIopK}Cns>}^k&!2#?{&F{J=gO%rET>r=8)n)6c#> zP+uRU%d~%6aNd{my$3=h^+kuH;@`^B7mM zk9WOJ@bFrG>q_?ZuK$Iunp*%Tc`cXz1;^%^)1osp!jnV#{kDEa7V7tm0u;9Q0dAV~ zrb~KB{o2T*9eR0wAN?NRR}Vks;UfN%%Hnk<1gefywEEY*(iO~|bzJK2N^juWD^K8gJmUTrL2xH>yLgl9Zo%DEQD9cKCXa65hbKQ~jdgE%U=(l>^0&qnzt}@Ub^| zSCp@x8rHa$qa*Iu+jK<6kI)B{M3*u(`CL<=0%UdeEgEp0-I~+cq)zF`W}natosLlF z)kZSx$=d?o92}^FmgsnmsAH6o(J9y$8`Qfuu_w03jM(axibfXlaAG^l9^UnRkxn4K z^>G+~o;Ps4^|h_a8@PqOdetlUSrMBb-HJ%SqT**vudpjw`l?s@Ayt|2vISd+YyMlU zR~)VyQ$zW(cS{?+TS}GSudSNPs(m>2X~{l|!_g1(1@75K(v$kSPoNYLyJ}<()B{ZE zCQ8-oXQE&24cv6az-iUq=1t*w0y^vsT;!Tycn5CM7}3V+s(n_5V@uV>*8K7%&`ons zWT5v5FCSUL|5a7_i>vbS^uUvb>CO0lmHSDp89!twe}%TC1fTO~C1ztk9+~zH43j>_ z>g=U5-lU~q_5*cc$fZNZ0!rz-)!v{F_-fL7fSts=^aefWUDu9);a=SWNT!u)r`ly- zcP-IG@A+I~_EG6uVQS&|JkMbade{BVzM$#uH0wNITz-`CH%1w2%=LgDhN*lOWI)N(n77N2oE|`<%{TQ5IF`!X7281z zp;OOZ#2Qf1!7qFt3}Gxp*FqDNT19EIcAulTS-Z1-%A0UGv{<^7|0}D@S00xr5IjZ2 z`k5f6`x-!X0?Qi$3XN}~a5qsFHmAmI#^P3!ORdS?XIhghy{Ph5QgkhYFmV&*C%i7b zZdN|+N!||7_FD77`1{V>jG~}3DbcoCT4M{mIrB_P!z6U@2j=_Yi+gy3x_4LIvy|PY zyfykMjzHymp`W;Nvx~j)Jr#S8V$n~#HIPGz0-PnCsplyxFcAQ;S;ml=Tpr26NV7mbYpK~-Lgz#Fo~e|VtjWAjj4D#pax>eD zDH-vqcRWrLOr~QxqsR|Sc@VZo$!5L^?&(op@?_nsu;V#Nox8=@yuvt{Sc9D2_DaQi zArN@OyA0E6b7mm=m|-t!EFc{`CEP(T<}RVc(qt!9nf+A0q#Um*u2cp@Sj@TpQ_)f@@4DzLZlMY5lJ@{IE~X{2OluN@ zR|sw#`hlMT$iqM$geN%)E20~siM`c>{Tek-jz?P>V_=$AqYk(iBY82ZuX^@Z+F{cd z1m!iWP!3Uf(Z__jLEWd8L3z=8GcXZW))$zBLp;d-LsJ~3^YvcBW(I`OX%Nm)RT&UQ zq(KkqG3dcs!Rty?gS2|{N#-9E4^TB&58_k@8GOZX_q z_x|i_hMtScgc{IZG#Ub|S1ynG(S=FH0i@>v#&h4KX;_vg$$3lG`A1LN>_~2?TBU~Z zCBxiMX&%%Q>gZgzQ_1!;5U*}e3{QTimh{cw^>MW`@XgGFdw9UdmAXXV1Og@_N- z@xp)k`y#Gp^-jYvQ*e(g=4V<7-dQ2Dbh|vY?Q7pP=`c}#SbUcCCKDJ@O&gi4NEM!< zZm;sLznOa_r$(}j#Q(gaedLj*?3Qg=WOr_UI8`_4_VE*Fe-VG>OgO=gm9op7#wj9Is6u5dk zI6#B5^3uZqzg^fhHpPt?=R!n}_v?{I27XUAP~f+ox!h}CCHk6AV;ICcjB(9ug|9-a zBSXfWF#{^4X1s_?z$^U+^~q$wmobrRWUn!681{shfCX|Kw9LuRLmfD<6vO+(wbZdl zJzPZDm$^Z6FI}&$(?{cqxa=o>X050Nr1C_p9ksBAOa8kS=-Da>X}Q6BKY6(I`Qq>i*5|j?GT`MbH`R2!7uaj2#>e{S}QU z0H^SSLM8yDA$G7B{&y08xwiEXDTp9^!n4r17d-@qOGGjbAUOoJ1lZgvV#{kRHOB@l zu$S3RUds#U8L&XNL4btNnf^PTdOAx9rLE?81lV&!DZb0i6yRCu^?KIp1z)J&tZ`?` z6rJ9SxpO>oXBGdK$P(uTD@ltopUzz6O@z60q@I{jyfAgA&-A&6mrd4C(dk9>j>&=1 zWh$|1Wo~cv+PA@&G!s0bFn)fSa(MY??fi zX+MEkwf@qRy#0`2CdiCSBS>NSA^*7VnlHx;c6|MX628hW$;U`vCU2|u{7$Tw>Y{O6 z3}NNBCZ$$szU_xN$J+r3V9Rzwhp4>85j>k)k2gxeMaHw!3g~{1XTQVbAKznocgd%s z-Vbu?FoF)|6@3j*Cz_izhl~Oe5;-|Cn)Mt_3oBoUr|oV8P~otDzbu~Wa`1#l*{~Jz zzt!LHR4>N{D;>zFWIk>m;Y8tKn$)Ki*;M9gG!y0vL}5}?_L0U*R-?&6 zjY$2nl;m5+W`NPr*DgM{y<9&16C^S#OiI+7vN_L=iq;^v+V~(ww%{BI%hJwj}@G zZ*<5%(vBr3Qk^vu<+6i(-`?59;Va_LBg$A-DPm<#WNqrJ>G*y=AGMDd!dCJI7Vpn= zq@ePsGYXSRjKIhIiYxmfM?1BT7#x&6+{!l5d*=8HCO~ZkS%W7zy^;QA$!Q*&oL=ta z^yMWcLOshoc74l#pov#>a76ckv#Ht3o1zFAk5(!zPN^puBzWqcQVp^9F}UT~}BrvEj~5cilvHBB?bJ?gn~-@4V8J0VEJ!1s9p1{!`4 zbiC-KG#*YD(_X>zDe%C0jV;<*I?Q3UH|Q;ImXh)6OOEkG8WXo=OUsbI(7cY|&Q!Hv z7M^02&#;IKg4^|krBLHxZ;DtXC^v{zyvnP3Bub}q&Q0v(?L>rxX>UMbK^7=xXE;7L zXtnb?ouOzEtikBRU=%*Kn*Xop)7AQ+2NO^UU~!bWv|rP_fHwAph?81rfR#7RIFdD= zt!e%pjD?0J7@^Ftj3s_7d9IuHwn9FXYuidCK4M|<>xeHOZ}}37c>z)g$nzuA9y25N z`+NXECzbJ2H-N)Mc)v%I`9*Oq$z0o)4qBW0aY5CD6=t`2lC@dJ3z!xg4E-0Nc-Q7L zv>p&s@^4xFOw(OfKSLrvI$T%ee?$mia%Q@GdsN8FPu@elnui)@_+%Y?vf8>X7AP86 zyBW?`JtW_KJ6GjW{89Kw`cGJa!THH?RF1xi3kg{4xCs=b7hQAZR(%GD`SmMl~lYgS9EKt2mg-;dsJjH>gyrq4za zEiTSw#`Ne@#^D$avH^>&6%l4;Ca+{V3Q$`4-wEpEo=okw0`0K3%V2EkgOlYUxpD~> z-ry%^m=~$l8;D;k$BWcZqGyFEze7WBNN8qZiGK0a1r8pmbGTq|@Pzzh4zX~j=8*sZ zoLYy?a`ISj5$T*8)S|Aqu}zr=&J>r!N?r#%KoeF39v^Q%_@e(yb{2>PTJ{!~NX&rE z8)~x9lA3O#i~MFX0p$8;Ob=msn(f8v^+#9z$9f(4rt5VXw7G{~%Uzi2vgtdq5yiQk z2Bqq7wwDXFswnxHF^48d&&JK>eG2~X|L5SJeXzOZ#{Wy$(Z6Ci_Oe`bMh?5f{f9MzLMG8<@j0QSTCwRWDff!#rCyy~6azz!B3ZE5o*E!=ulYbrxKyk@yQ zLMv-yZVx?KQY~ERTQ3^Fn(4=m+l+Uz^@{zedz<4Q1KZO)W8d1i`!1=o@aEDX@f}yi z1($DD8aR7EA0K?Jt4pdJkvUT)`@bx4{9nN?klkee7rd^GO_`joP`L$CYLj?NNGVsT zC$h#MyH*;N<(_VkRkE%|XC3L^u}=8rbwrJ!@tFvFdEJuykIU<2`~O$u^`*O1`(KpTliBL=ACT97 zI{H5*x#k@3-;>vGz5iw8^$Tn;`KR*wZ$J2t_4?-h|38q|A65Lv;D5RI{}1K$VF#ML zPQ_EEgm#u(4g{PN&6s8;nk8om8#fLM`|F1N1D~Dhc8FDar9N-QmsIhL{qj!YuCT(D zJd*sy*Q?c$l>E)e-XUq(+Xs1~C`+d&q*ob7N&Gr-o5??FGEg#18?FbwmlClbq(y9d zO2n?oh}ec3Ln|BRN+y>1&pz)A4sDR~2aYhJ*-ff?Et3#M-oWnn_k=0_cD`37bGYR= z9=ci{9?Ehxas&ei5oUqkrT$nXb|gM}vdLH%GZBZr-=9ji9WXfY#NBahP&{Yyz*HGCPTpEl{CiQDE9=_>v;*%G%b zBXM`DVH!uD>I=bQ!JpaH`9E+HxK@LX3RWqEVDKV)hwxtnaaqO25 zv1xU>ea07Ztr!li2BdM(|6%Xlre0tyEwni1KmsQk z6qTE;R#1y#tw2mfTftxw%kJqxrnTBmJFUIUw4JeI`<;rmV{1;569S5ca5qveg6w1D zrgGIJzxQXYeNIjwD0VL2KYpVxPWE1VU7z)=&w8F`J!`FfW;Qn8bF5ObhLb8zn2+r| zZ01-y5f_<>*mzlLzmb`ljZA3_{Y32elXoGIWc9rzZyiNVJ#;Yc#XZ*N}kzkOVnVA}jPk@Uf)E#ZiyqVegxp1A|gDog6yE!FLMun#5Ym4^UnZ`=%cCmf{Q9?EE zV__WnIclzLsO5%9a#6~EXaS~ihu1YrN(AbxpWx6Xx&H8qjh9o<#oxIBcKbV4SFyaZRnG{_;W)Vz>E#B%puqmXC>>8@wxpt(ZhGEG%Gi*(_LKb}$5wkz6_CJlAFt}Q8Ed89J` z`75lSJhR-4ukt9TJb6QIHj@E9b+Lsrxn@VV*^iOUI5j*C&AbQNM2lYD`^nss*i_7e zQ4+=&Y`VIK9{$cISb0>N_rl+qCCD>Pj}+@>n*T6cL5@sESktLmb9{YnCiL?TG95sr zY^Uy3W1-=w7t^!eWN#lo(;np)x|3(<>-;q zSY_v(l-oRMaEA8#4N1SDTkn$sY3Jb;FI||M_PU(+LFw<>-Dg~{-Zd+U&WbJm2~MEw zINuNXLD1CQ!P?-3X=0`?&=48MjX!41Zn}>*#1XAO=jF>zmUlPnpZvK!7|>## za}%2r5Ao++=dzW~6AjK~&A8N#X{bCi9L>JD=mz|GhZi`Pt-CKzYu7Sb$~^F%4E&ev zR^YoV660n{AS;)0s9_OG4#m5i6{Uk@^Eb=m1Z>gE4t{2CI{pQ zXp==Disvokz=4Z^wsE+}Y3xf`Ok0n|r{V}ME^ps=M)jh>0Q>WXk$c-A9@TVV4{)*` zS7`(m!Ls+`MOETlRvK7%zq4YUxU_K8Dt7PCS$At$e8}y_=c!WWX#Af*ZGXFvnVJEX zfcFcw8YnNb073xdHy`Cb!Lvz}XEK1+pc8~2p187yuSI~`c5Zv7i6u@x1jv60!mNWB zTEoSQI)A;0!}IHe$+fqhXav1Z)TWR#tlp2-$Y*wkA?Fx3(LchK%%LBlEzq7ZYkGjK zES#jk<5YGbW=>*MX}h+%fI`=(VCub=g7M2Xb)xY6m;8Ee_v=o@@^|C8VC$K0>PM2D zsyp>=N?dF5tfiiGZ}TcF3R`I{1aXF~b7nT+bfG;~*;_Bvk?Hget#MZ5W9MtwW!S{K zh%*QhGP`orJgjdb37AIO4pby|=pbvE=8*B}bSdVRS*nq@iq*O5_cH&`U)5W&u4ao7 z6Gm!x*EKBmr+VG6ir>4or){rW4zSz+XBcN)Z+)%=s$%%^trjwdA+n?Wrx;5jBRk-a zY~&$68vl#|a#aQcI3SWBRx8v%cGz)1B=78@%_F-?0{OGoWB zJ1I4a*pMH6KA5Lr9X+q%Q#XiIlLOxGxvNSoW}oZx=Ijoy0n?#f=chCR#8;oAZ=T$9kfJzR6VpYzB*Hr#TE1e5%N z9A<3Hfwl@>C(Ej(?xBwFC+(M}$=pPB9I^Dd^i;_d=OWE?yp-~9vN4zS74xU8A$9yL zX+N&vIEqK+n0V9y!Q!{{VX7V%au-{MLL{hYPI z`}LB@qTSSH3N~0yRxdb;Hq=C#czdoW0e?qgxtt{~M;Z+}}Pjn$x z)$7Yce^M(G*~xZ{Y713&X4)N6k0JH?{dQpk^wOo$_Iom%i#$dh_Hy{h`5R)LLKxA@ z399#>w=Z91A(5#ivr0T2fJVCKIdm9nWmaWQsQTIEluu=!54KQ$?`E_2*iSmef4QG1 z-UPiMVQCngJP`e1fq8^E51{S~)m15RIkSJ3mgZYImWngZB#VBZ*m5Ac;3gxJ)ABiTIO*Pp@=>Wc@e@D3&8I*6s}dK$smt|Hz(X27T`MQ~dXtev^IYfBmapd+O|^a#4)SKr}0v~m)xT>Sz8#Tlu0GZ7$qQ8j-JC6-!4$>tn{s`K0f&WeSOX>@G+fSNZR z8rY09>)3n~KmWWcg&WITax||`o8&M!$S-(Oz^QSefL7lN&B_-CFk&Gpb2sYX9d?Hw z@s$z<+_J}O<{8RNz$&!I`+@($`4M}(2TiOAR4cC^=Yg7oLHE>q z1E?m00v;diJ#bV5i9&VUjy>Na8S#AW!kgqdpH*2}T-#kW zlOl)abzv`(7imLdrZaW3Gp)gy-pHomDpBjaSK(v4j&VPf33AZ>&TDzSF_t{115R%x zD9N{KGtc7R?B@vYc-G>U^Q<{uW|BtIwE<_vLxU5EE6ie!#Va^R=kZ5pK#YgNoPzli zQ%+uS308}>ZdY;r{s834s@cFH7ZG84aK-23A}yHwUACLQt*LMbG| z8T{*SSM68Hk-oWY2O)A3t`}(}Vd8g^*H|ijBYfMlX5YvNHgV`=*{{C8#yF#*E}6~g zGN9;FQy~kbQYTn$R(52?CXkr%5MGVYjv)JkInKOT;*4HCZN@m^kh%AE5q*uPf|k`5 zPlN4E#_|L9>nHt+Ju3L|4WrKWKk({FK{R7WAPvWx+7nw7zvP48ewx09rpwE_h&W)* zVnztUr>dt@d8lYI|C?TwuRV-#S-1K&57)%STku|XMj*I)4-XeF%88UW9<(nH-t^6C z5Z>QY&uiz=x^tg5>pdPX+g$MlO)4^GqzSx#Pm!9QP4$?PRE2W>n({gSomYd0)L;{) zOHC+ZlhRSU2*KKnMW~GH==h6%ymlet%Hk^u156z5=8$w!9y+*L%$dP?HhY}28L7_M zw;M$e0~1xw{`sbB5vU%t2M!eKoQdiy^GIivmm+)t+KaSL=tD)vQGOU0f0XE*6&uW_kB~oZGs`zFTG2#HqHi_Z{)(aJmPnb$A27Rq%fd z=g10|41W@A2+6zFegJX&cin zHRo(CZBT>#^EeswVxvdN;UZ@;ThloI^Lf@d)lN2rXyoxU4J`vNG@jV*fw5#VJhFBn zD*EE{Zpl&ydSQ1fS9>@!8lAJvVAXyT64O)$y!SWwlqCbUdBgRVbV5>`ZEAXdLd^INMm;8cfoFmsd&E4AVv`JC3uiRiTd|in%<2AdppozB26`PZ5X6%y%)wyhw z@AOH63oku-t#V<2-PFJy=0{17on(8(1!~NgRAZdFzn~S+pkg)1juR-kgAqaPZe&9U z>j}2 zpJ9uV9cg-Y%BRwMcD&x?GnR^Ey7toqC-%aN^XGPF3~l;5XB_1aIH(8VljQ0U8=1@JN($zCB1@{uJ=4Qzb5 z1#E@6F==?W0s^Lfm~Ifh1uA^84I&)Fn~6CyR$9Btsr?ZZ3*YvP#v*)dX1XPZlz|eZ z5y*>R*h2G}MQ@f#9DAuV_y=i|&`ws#oM@P@>le6-s= zK29^dPrkRNTVy|m?wB(IG>HV>??WmrV!zRG!H1te zqLe8hudf2WlvcnC?14DV0)nQ1V#ZGP4|d$1(OsC7x7^lJmerOu1?bLbvGIU>{giH#u%CRDkm|bz*MaN7(cI{&(Gn4UiRO4gnB81istAww3v-h&aDKhrnC;tPD)Du9uXcK9wMrN40H6V$P5N zmp;~WM}31+_e*dnnjaMog~qlzwKAE7+_umk#I6$~!yhkkq3DXn5_e0iqhQGn;&nSu zH`dfY8>Z+L^&v{(Un3>iTCB1) zNnFG!sTY+DJQ&+fxy}lX1?p8#ztoZ^0&3_ooj*7}GWBteeWpy^HQ}sS%~h_H7u#3h ztk@V@vfVGydHQAN>1OBYjlGMkX;4#jZI)khjFP#h0gA+S<_v5d@0L7)_Bvb|R37_R z%VOKJMy;}xmHZRQ9~^Smacqp}ZJM}K1)fmtl7X#!SAAk{vY+i~mPuB$mGajwo&!@J znry1^=0y}+M){%G&ODNFzD~fwd>AMj+fwzNM$QwWp=tF=TN*NWO5+W_)u!Xy5v+tK z;@j(l-2k{5NCV-z4XoXR*>m0z76hGn`(gj~3;~;9s$ye-4{RF*Y`etxM+(?4%p zKr;h*7d$?%RX=1=(Pkix>7cz?!>COI;6zB%DCq;zYz`(}*BYweBa?u?<);DKdKw0x8PI_uqN&9)V2wa(0G26S&w?Tm zA_--Ff>S`*ii-aVbm13g?-jdffJO^%0je9fTG|oY? zkVUdaq6k$2HL!S%P3tN+|qtvN=gGR&xMkn$x1_8^JOQ zQQ=no|f0OEgtE%v0fV6iB#n~*{8`%k-%W5CDxMT=c|>Ow>~7#p4=%PJY#pf6u?pdvP`c~@cVY$#-cE+)!U6R}di z?O=?_qy69<=Z=lMtW}0@^TL3;bNw7=*1Np7@b5SSX&y0Vu^2b^9bRSw4zu4QR+B^s zNr4)mb0wTq9L&@2fgA!Exg=c07Y)VPLX(39CJt!ap&ij35>ITjmrI->#q~}Lb~ z`&l8mN}@7SO-G9}BrJSH_>jP(jGTD~C~{z}Ago8!bvhdOcSJErvYl8O?r-NM z)A6R!Ud){kYn?i+=aslEvF*&~EZ`kMzb@fcF*i1%fm^VyDT!W>3(Rr4><+75p7$0i z{Wa12Yg}31Fc-3yv<}w z@l@6??HzT1dZB|%OeZMXt2VjvRzE0P+kbqdXUV(d(E^s!Ag}v&<^fJ=yAEg==&ZOd z(`_zwSI2f1SV^R#hY)1}%-27*wQ-DeYu!*E2epwa?`kgBJ)Mo?HDWEy=hxzdX z#Lqr;{G8~NekQ);Mdi)M1$%Xh;$$ zh*Z~taJd8V*$vD9CbG)MHdJk5rRLzMdXDN#3`LqxL7}@=@bw!u%S6Xx7HxIgYK}4- zt{?#5nhtOo1bYG~a~{5kP#MQ+j)Guc=Y>KM?KlW=N%fLyaLj-h=V3Eo=W)jM(NY)g zU$9{yuQ1L0!x>B$*=3mrdg>3BopmCfW#7?;Ifwz1{bfBk?Tq*Zh*1b&j4+M2kaI^p zqmL8kHM{^UA`?ka2F8^*vrsrUG!ShApF3gWPDalz&K%nHG8wcoloza(B%;(H3=cbc z@QlIvI=D1%y?$OJ6LB@aZyWSmr%-8aCf)3IePL86Rso^#JdpO9elRNznPRYydin@T z9*k6pJBTG@1X3B;GZGT;D!8?n`nHCf26uG6jBPV@~ZV1oDvE0``SQ)L#X}l}4xd;P*WXeuMV6TJS4zn~}R0XV2J+eG~-z zxPHb9217O5St?vSx|A=JPQ%&-f$OMwJ5@1LkGkcK%>p7q=eP4CXqdH$za9Jq;SEI1 z+RqDIp^n=?_gFOC&5Iy^4^4VkWbKq%+evS$>(qtnIa9Lf$Jt~zo2(5if}oZWI(8D; zGtX#tn7vYDY$c|!QxWEY&?HS_BphJsWstW*^rdiUPv{a>!PTQ=HHwh^}$rKfG4`d#oi^e-EDl&nmEGwOcTu!xp zx;genK?nf~eJ)mp3|i_omJDnTp}B@)uQT}n!rOTFGfzb4XO2DSENi20$)+FKjL$ml zHB|#^tsXb0i~BGF7+R%^f@0PeO`2a zwrM{IO!_mG{tOWKBV>`!uvzvUlYTs|Sez#PG?GL?^g3UqfAb=j^J#%+AE>3v7r?x- zJA%_^CG~h4k|uPfJ%ZhXGx6RV>^$8{-f7}43cblZO;NuVMIAJcRjmTe-?nI8BA1xd zae2#=`uQ)AFH`o%b9gyXKkuiol>JfrL3-OCk+7t!qnE?5`;GmvT|@r$zSQ)d3V`ML zzPfIPy+*e&Jz5oA_B~X06gTvA$G1A3(ukj1>_aCl{xEqcUkpC1(mkYd1L> z6`Y?o#X#7V88gk8X&}j3G;du^6shq>`!{AsM!VE=Yjva>(cZB%wvjU`x=fA+b$kPZ zO2EJfC>tZC(Tp`Upx0BhW({Alw^cFbMnpVgZloZY8+%(Djj^DYZk}Ga<_DqehnId* z!AZ583^bFVmiyL;d7zr~WXz5b(@1SHSQvR+wD|+thV)({y_%D<~|LKYmI$TUL!dZBl*ip&??<^GQD+RdaJjFyD%sy^%1qzjT1wL zFKmg7@^vA%QTMDo-7c-O9P3vI&7Hqnq;{5}xr3L8o14)x2QkRIQPCew8XL7vg|Ts2 zpvTULk8OL>&gi~L1*F%?Iv~@4iU5;UifW`1R4c}A4mG2MlIRWQtG@IUSn{aE%Efn~ zr7tr+EZ7(s!T7<@3{#k=rcwfDS3j-4tu@Umh(ZpkAd2M==EZ%cyx1Em&X^Yuq*_(- zXpcb;|1qs+eTcoW&6pf96QIIlPlVngE2ZPBY}&kzDyYdas>-ftAE|~1VX=5mLM?wU8Jmf*$DTWncVuI(`l41Haxm!M=Fd+81HqdHalg5#@#z6JuXQ zCu1GO2d-WVC-|%R=0zDMVfuMTHGVZ7%zDWtrfU{Hoc2y}I+7C&AL~_TxV+;}fYaxMFLxg;cRIK#|vKWFIPtq^#$_q(NCO&wv1`~2_ zB?DGToUZp3)mYaoWF^O-St&VjX~5UkZDB~9{(^@EF2<}sj+4kGc~;}y3}n>^%UaB= zlt^BcsncI6(Wtj8C2ErZSpU)uivo<4QIC?5Jsv}4ONGR|X5ka)A z*iKD^V+4ZHz?acvsSRyVkKB7eR9>%CCV^;gs$<$?iD%N9W~3pQ($oAFe~rZHLd;7U z7L9~=f?e_H4}dX?VCzaYOo}8+B@Jdp!YhdFlNq(1by!Y` zHBi>-H&Q zpCO(P(n+Z5DK8DJesoGZBlHCps5$nsZ5^OuIlZn}36 z^1LIp>|yQTGj>2}(OZnTFD)9E2;4F2tsQV4deFSBB`!J-sz^BYMj)KorS%~2Dhr(+ z^Pe&O9WdIjHR`e4iXG3G@KUB6!?Loc>7ipa+Gaf&D_0Yk{$R{cq&Kk`=Y7XAU$^rW zh{OPBB_=7ZU;&z_|IpE3EpQv1I_*`n7C0%Px*N=W*=-onToSzo?Nip$bucPAWv;K* z$wVgOnbqikZme5IKR2c*8MkJOI8qXcX^J#ay9lurz&~^Gc^&Q2P&*nK`Wpk)B#X-gtzn4@~?|HzojgbD3jKDl#gu`SDZA{vnj8NbnsM&tB=8XYPZGc8*HfYFxX29IT znViGFL>D(=UinOQw8Cg*J9y{w=X!sxtPVsgjMf!9#rK?Oh0&^hdW!G4(F&tAEjh*a zyl4el(c-VD?3#xDCl;SScJ1Oaw2^b>wwY?LCL5|fwOY2PYF@BC!SucKm%ur5>lN7y z(~uij4tr*nja^%{t8rBQDBQ5ILi9}XX-{Up$3B0vi~C&e6KP*Q!lScdVwUslFpl`g zucEmh=#dmRCcPgX`%2ZeGyx+m+mymY`M3Y4%71n`>RbP0`Ez0olE9p2(cKI|Tw9IJ zN%}b}vVYxvdj_7h*#s3!1;f4QitiET6~4BnoBL98Sqjcc#>c`QvNuI~+fDkJq$w(agO>X54;O zBAVM0-;ItK@0_=0RDFDJ#m0|?xP~;o72`C9c0{i1-ux2p!apV6S+OZE{!GQDf_Q0r zWBfN2n{wivJjC1IZ)#Xn9BUeXMR6>CN&C8{@s|{@jdyl6#INXTXu5S#(U$l#OyBWK zy4sp<9bL4lDYR&Q`=O=@qqAO|)^zJ7d>-A^(iB^SjzUF?VokBpOxXH8nCHiBT$I%~ zjVQ|RiXt*cWZ~yPPJDESN!scsCF{0BO+;@n(d+$~9V-pgxbe|I zTmwWXHv>>-Nl~i|B{HiT+Uod;`0;teABi6m!D5gqz6vtM4_2(pi~pfwT|sY$Ri&GvclxgFl{WrUVKx z!U0l&F{d>k6*Tz8%Ce@~l_G>#jfxVDcz~7XCxMc&j3PNftH_V)7_vI8oDXsg`AJUv z=)!R1<^$!Cs-vqwgc3OD=t3EPZa$EBLb$qIkE{@8ag0Kb(?}XVkBw>Fj97x_4Md3R%S%Qp+5^gJ>H|{fexO>ahN_>QJKpx^ zizJTqYKgU6?Z&5F5{H^XSKL<*5FHf|X=DLJaz6oxnqt!` zT7^X0M%6dPZmwuGP}CHgjD6n6qB+asi|6I`XZWMuHO0P$Mi+mkeNEHOD#lstl8Uu? z@xAREK%NavJHN)L8{Pggu)@P3#>uT!MeXrUhFpAa*LuNABRI6a7pwq5MCk%|s>}$g zDta*mFew145?IBmx>h&c`n95U@k1JUoea7|$t22B&{LJQdKx9Kwowi-I7!yA%0%vZ z$oOaVjX&4=_){59-P^c+37V3aQZJWuLHmV4E5VDs27}@TgZB5r zpjUcfkm4=KTH|BT?4msuTrB*oGw?%#bohBO4W$lttnLGYrZXZ#nf233S>yGMN4sy3 zQwLg?!J$6&E)4_eU8o4gt3yhcffyXj(%p~7{QI(3^ys(On=ySEHntHlYM)as{tDtBO{q4|~Zb`rft54*qBC;79g3IV!PQQV@}c zbP|)K1Zt$mUS;rPmGC4b$;9J-LXzo9mt-zMl8FY^sArAC#3djJB(#!D5=s8TSCAy| z2;&h7ZGkq3Ge-*I36Wu~$go2sNVKm7Mz$be6mN(hYljrGi?<3-)*!*G2SHww`~iYU z*qB@Nh7hFLAMy`mHGv?ri{1c18sdq21qgGCHl`2+ImJN3+^qH4UcU!bDmYJ7nfTSWhv0_O-9oJPn3VcaOP6>V+a05#LMN&TL z6DQ;+hVy|H3wy~Yxq~Gtzv!%pe*kSInzfxwTg-Dw+8S9hRj+_khEMBcd|H1jEp(N+ z%1iQzl{d5?mM(8Raw0lZrO@GIy{DCLr=j=wxM}bKL?{qQa6ti23j^;R-1vzz3hZkaMmOlk0nLK?C{0 z#tdD7IC5(#x>D>4Gyrnx001ypOM)?(3K|w=#imjA%2Xy)vZD!ns0Sa?Bn{z1x~4O_ zFG)kwU=knDbhe~49g7O0K+J$d`xaq@U}2j;Vv_}l1;wuzY!F5m{bT|9iB)y1mLrWM zi4S}+T8Eo z9GoslvkAyqVQjcPgIOavC4@_wzzT^h{;GV?ljAG!L{hepm27;Z#Fs4^Da>Y=l4ztj z8B4N;g!MX?P-9h_ElJ3r6p1$~sl*o5u*6t-#=BFkQ1P{Np#tgW1g}wfxLeIZj_#%$ z`PTQ?Zsq8na&PYgCjJxh#DArMH(ieS2VahuWaNmHEydVp++#Jz2Q0n^Ir?bq&3=dj zgUbH>dJZ&*e!W{_0QO&B(@6uhv_~T!Fw`<)8c1wWHYS5A4;{8&iL5V2!?;A1jNoXF z^2|aun)NRPP-RVioDRo$fbHPEyTZ|sZ`Elsa~<3N3m8_KIWo?SUH!o6LopnMuub$MiBK~GRYW2ArTja)J- z&yH|2V=762(_kvk?G>r__sGPYp4d5x-4>ac+Y^*a&78VhK@neG3%kcKAsly{Wy@$* z%nLy11M%JWwMXyoj_<~?h$|=SA+l(lGGg_nZ+`#yp#^W}pt&^~)u?m!>UihehNjo6 zCL%8J+cFB;=ZE+y4;9)TXsv3-+)gKO+kK1j4#)QNFBwr!2MnVZ%EuO~7ua=j6JU>@ zl<^Ur$ul;s=(xWRkL|j55GS)tmy_wkXBf-Q;{NfY!zSjaR|ehp+iNpS_bjpxBiCY5 zkudVWNTi?#E^(@(<2SX*(3jy7`L z1DCIgukF}R-ybYc+ z>yZ$~!|}!EeWG5oT*r$|KYd_h?xTF78rB?b;`mUO%u@(vqT<$ma@?Me!Zn(45cSzF z49j9iqYA-k9or)C_B!>hX~=Oo)Ne&#aOqsL)D>FNLNK<4z@ymrGfT8RQHKCcBu@Vm z(4X22ZM}%xe_*)Z!<-L=ul8?91+0=5F zZHN)iTpDZ5J0*Rt@AZlsctXp2+9tDGX;A4{;`4 zvnk%Wt1-TJ0X^DjjHC_m&e^Q*%#Ag@{xvg#zc#T|V>eflz|^E9&`|Z%=}7`F*kNm! zdj-#ZNdiAMLp5CzxcgVWByg{N7`a)z&X8Pu$*~t;>f?(qG=CEt)|oMpk`o{S!b1Gu zhL(7ub3;6_3uUNtP5j`lm*R;9Z38q;j$4Ugl|%{T34iRY?bsJTh?BHpykl3Gb{O-? z1DEfJuj)9GECIAoRAzO_4@eWMjNN482ni9)_8qV4yFR5032Qq5nU3{{1vg3}c-It) z>{0P9HW$eZJ33x7YEz(@7zTr0Q=ZiI8e|x(6{65Z=ift#`5& zP$ZjhKQ5vPbM0wU+swTyN!5=^Wt~o?B)?RCj}+OY2%Js|E6Ln~Qb4K!r0RbyRyU1bG_$_u7}{Jr%pW>j&%rGka>!$&|MnNx zBM^M?K_u4|tDg{8L@GxZc> z|IT1NYEedWyz^Gz{jOMi(X96P-dWhy?*#wvTo>=$z#7>G%;$?XG{z4BntK7z&Q4|v zz;iD^+PSNVi2{)8WHtW~D@liDv&1)7w(#pE&Ru21x!Q7e%W&96iOZQA+tChjQ+aSe zv2^reROg32gM`58@`HZOVfJ`jJiLcLPDzYuu^R^|-`_$lpZW9aGZL9%RMVdRO6Sym z%hF}&=lQDkG~mBND_0iQya}jYlF=qwY@v~>@n0}g++7VcY1U4b1!k#nck)_wC%W#2 zHowVDENOPO6583q_fGsVb|K8}f-=mEnkETFUfav`cxbj7I%#|2bAG)#=M7!{GwQj3 z_nsM?^;zWTu-i4NJCO-kue`wLx@W(D% z&-rpr?R!3ZoK4|9?D1kcdq|k?VUO*wM^Blj#~`VdC>G!2DMhU_qW^7YrmC#9B8mWw~e{1m$DvMQfH zM3*|qp|Sy)eh_j+c;|WUYcZCWslVU7xDVf0BC6|IhIU17+?% z;JFkX`m?u0jzRxHe&OioCiCZtOSm*J>~hX<_7`ld*Y+v^7pd$|nt(z7$}PlUcO(JF zexQ6te-R!GyJHC0ZUU~j(F7=ul?pJ4pD|BL^>g!tnr{8slIw*{0r0BVc|9pNC`@j{ z`1)V9S%ywdlV{mychdP5a+EgbTNoGgR(unan`dxlX5S1+TC58>9?PdVvd7QC9>0U1 zq&Cj5|HDD;!c$u=>~fa2TlDQ9^!k_XhOS*asl7PH0p3#a zLn=X}6VA72lOK4SIk3l^Z{cqmf+A*1%>c@=hg`5Nkg8|{G}O?p9jcV(R&F-cm{gR} z_jx_1Jmg}nUx(Bo7iJ?VPVfJFUXQka?*lZ=^2Pt2*MsgMf3YOK)u!W{Ij<)j-`>Eo z-N#`)jHI-~di>2aI~iVm9@b;Z`)lyb95!HqX$ynM0F$;2TU61xTm}unGN%jvw_tdB z2$+I1yV*}0-BgfYNH6GOBOrs)3~Ekx_%A+yOy?Gzh$sIq4J`Pp|WOw3YgQ&+B0);QznQ>*w`8evqRZzTn2QschDS8b`oBh{c;lL0Hf4?WkfN%<ze z>4JY#r{25&bO=cAv&j72f2}7JW)(dR%|r;3UQfd+3Z92Ouw2| z{?td!*-FcF4+yf?vgBEb#;O0mYaesUzS8IUWB-HumrwV+#FO_kr^{cu7bso+`l~iG zTlp)gPX6zHW+Te{?|$Z<(-r^I`% zyEwk(qzZ89*y^dwY%#*giS~5AcH8u|JOrd^#M6wi{?K~S|`R}^^b7J*5II23& zvd7Q3C_qy~xGRaFqx1&$6~oZ)JYujwcU^8@G1AG{!~b$08sIF`T}y0Tg~yJvMn$ zsJssYcpu^e$|6DKFa}Ba*h2XUbs4@h&Sa-_i*jl=n^-K(vP9cwwCk)xnXb!Yk?%tt z%9h%A{k0U^cYa!Ut-PJQKFpb{m^dHoOg5kjKf38SlT94dhc6vxX)X7iLw`W6jC1Jq z2k4w#J-%Jspq=#XO3FX@cbTO^#=9)uC@RLlG>hjud7kwe?{C_36U=FQ9lT@lnadHR zQ;0Krvoqw*dS}SY?VOeXOte(}tM%(*Ay9r@0U(>jK;zeyca>HI)mf{V8k2sax&lw$ zA-PY4IRG{{ocT5fKsXQoieOGA7|huZsFC8BS*i|2rj9z$F@&>C9r(*4;%wC&ZZZec znOIV>oD+^Z$oQdu)Pb{6XD9%1Hdgur#}qglCz1A)#~koEkIzyp`#R)+&(`5{yJ3*& zIq63PxHIhfbCdlxu=h8+%51K=STX&K-ruZ)#kXy`GkbrN8%1TM7^HW2%28ra?{MP| zfuGjI!Rg*jleE?Y>ksP{`5gHa$|*FnSMUrCmZ}R8EKZ2tM@)jUdMB16LnUda_v;;Q zM$Eqw9_Sq|XN1b{5}w^V+`1bqWJ!!~{d<42P6c1G-v;#lX5A`pVV#yH*FsZPt*n1F z`1bF-fp5Y#VVw2DGAPHfjGWnt50-Vm3h4NxF~dA*XC|a>gzgO~X#dZW}Z-DmekCK*E1J4J5pakpm?@vg3+V>w5`(B^|hYQs|UXv$>C|t@Etuhko?BKunxSzJEEabLL94;V=_3qMtpV`%y+A-_Byfn zPB9N}E>r5<2zG*h$e#)7>C2RV zh|f>(kxrS!JH)WlDs#wWx8-aF~jRE`xyLAF%ARAGLGz} zcgmq)miTBEyr%P$HHJ12$2Og#WI8wTb(coeE-r4}FsV$QlJ2|B?3=npm$HhZ6aZ z>@)#s{v)eQ!06-eD2e<>erp1*Sf%?QMwZgh1$?L9G40EAR zAegG(2bA}P4=V4v4=wM}k67N7pXyEeGem7Qr5Kw{I^8$!K8fz1GG)Q89nbW@$(-dM zNY95p`9bYlKq3CPI0ZeQe(0mo^ZXOaJEy1rsJNG53e<@6n=QQ1-L&GX38t)%*1i`m z=-s{(%3Hom)jvgf>lXVT`=;j$0vEROByHj-+w0KjPG|iN*a4wn7>*3iSB>VFZY2}|;x5}1({^ck0k15OWPa$Rb zYS^g{MpJw^PKB)W~Ke+tJ`Qe&x6l6HH zUpAs;b9O-wUrYMv1FxjJ9b!IryKkN<|Rgb-dE-I?w>h)W+_x6)@ZIy#L z*}JBxD1{HY(47Tp6zGu6#8dnUoiUmQO4SyJMM0ixQuNCr;J=J5Ia(PPlHB z+8-)V`wPO+2VlwaV2&XGp3kZguYWEw^?b$q;(d_eUy}S$9x>NR=e?lM+U^az3w`+`G$S-!*8xw{#1vlgmaH%sp@!x@aBBub z;9@S^yx3d{tb3-v&&P1|lBJTmxN~zi_iU~|P%|KthO8=&+`-E3Jq6{F`?%RzH~Bso zoL?TfpH8j~E>(N@Pd8LA=dUxQJb3?PjOVqwzm+Z=Z0O^R(BNLlRk@06A}MQU$TfN9 z3h>Jw(2c9}ZVKLyM4B5k^m7Y%CRw?AXJNTJzW~Erjx*%jrbr1dlEQvDYG1eVE-o9p z(y7yBxvC-QxFHtREI6gy-GivuDzPn6%&;#H&eE~scRC}=gHv?VQn7lugi!jyF-iRH zKVm-=r#_5K|6p65`gVWsZz5;vPT;Bq;U!I?e)5jv&@GI~44*D^turD&n4*mrykCe# z1M>LIPm&@zibM>olR1gwMhjrx0KYC)y+_j2Q1_<9B>2I5sE$lh%Dj~?Yu*|oy7szg zwFr#RIRGQ*R(i)Dvn4`AJ5-0L3q@^4BBOCcZg3RG)xP2V*ie*UkzkPD`ZvPv9!s^N zp4MjrLSq`ey|uk-lrc^G*0s0WuqS6>Mi9XmgpqGB`Ugme4UhFI-|TKxc$G&cIbXUt z%|NjnmYxZM=qB|d^Y=Ynl0Ak;?!6Z~7MsU4x-vV=qpr-JV*WCyAi_AG`JWFK5URU` zr+A*3dMAX{sO$qZ#W|Ul(IOM3m$In$<4aI@%uYk2=bK%opWX(pMNG`Vr^G6-F^*Q=o z(yL~@3-+E|-ABIfFyQ_m><&k#it)+g`QUGP_ZIYr{iDA(FAAJOOz*8+jfn|R`-Z$^ zV0q*VVYk`)9k&&Sqr+RnV;h~?Kiihx6l8*UDmaqLm$}VcEWBO!9vAd5Sy|-LcesF? z<9Al(ltm^TQ)1H{F;Bi^uZguc`FB~4;|P(*U0sp~!8PpfOfFu|bXrd};oi~M?ivBIxc zxA{Kw&1L@ke%`xV6E6t;Q=nn<9oCa?(<@|-z3bgtU?}yoCMn25ELkCA~UFya{GkPI6)2Z8JKC_2^Xt8pRFj=y~{Ifp` zrMxxwtm#fX)04rPZ~GbOA}~LLeW?t(mA%ctse@0tZ6-^VNlQ;AOOu&2P=ud}uGJPI zMTh<|J(D28Hj@d;kL`$C2{5qmj`L-4{tjg5 zM2iC5aX|s_xM1QrRlDc)GL46x*LL&O4iE2oP!IVrI_a`72U#cO#Wbun{m4Ynf8_v( z%k(`dFlTvEbI$(ZoZC6wpmM)EDSzc8BkF}$PAVi``V|jGJ}qEfu)Ej%lQXIwG!0~A zX0be3GA8g|*^$A~h3D5BH_tCyawIo%(J zTKEgpsogl)74q*B&SMQ1Z0v~Iaey3#xh68NAhIwB4Tk&E&rQ;Uun7~=^ipnQWJk<9 zhjM*jWT*G+xWb=nOjkvr5QxUU5Jm1Mr5o^}_~ zBXidUgIgi!b@n&=ctMsg#WaP2tNf%>hn>12G5R5`un3P^%Pti92C2ws8%>=iSA+<&y zj^0uvAyUw0yXL9jZ+T|8rm0Gb=ypnh7zxk!t6E&*?&LI#ayoIOmA^6(k^h4HYBu@gCFtw2vm{bP ztwvMo?k;!tg!M*C^S(H)Ylz5!IR(n3QaO+Fmy;2)m$aqwHdGs>|)yrbL zv(noac`R5>-eZ4cXyYt<@k}tn-7F#4NVs{(3=g7);$kN8y?Aowk;$2FIeEERPCoNT zW2Rw-m{CH#!9QHn{e_zgDt_%0Q7s94D!d$lPpyM}riq6p4~J3I6HfkWXV@xdW{Whk zG)7_o&I^-B6-#z$c40BMZr8VoD;FCR3oIxpQw)^2ub2E+cH8^Oey3B? zmuEJ!8PD2ZhCj=3InirzGYOJvsW4 z?Mm{a*I9)v$Y;*PZwJ1d2G2geEqTjWUBDhSq?br=Ka+yj@#TFKx)B|l`tobLkY_s1 zxvb?rRP(&4K?#pH1&2GAy}IybrbzF?UqOly7YB``VES7IPb^aNE{5&zPUu@2!$>!} zKTQ!i2qOq~R3%_WHT3ZqrB>r+mowt_U?DI)j#A6Y>KJbonGuq!R zJ0<($u(kiNlmCX3-|P%)a%OVhOWq9{7*_+XX(J->@t%2?`uH3$RWm1oUv%o(Md9yA z(e+>t^=tKm!Qu?3ZVSyol@A_i{Z+rpUpPfK1@k)oA<3WQgUC`VZ)7_OgS$(48MT-4 zv-e%aY|8Yl=|gA>4D~CTlinU!+UMtz;FOwpX85_(2mpy@iK%5vnD5;tONnMBWI{A^ zi~@$8nQpuSY(q8#WGVEvJPtd56+>xW_C1te@guQwq10YgOtXcmlF&&hoc|(VNt`Fb z6m3uZyJ2-W`j5UQU{d&%_llY0|FA%;5FNVYH#h|wkzw?W^QJKM`MD?K2In9P${&?H(J^2Rl*+2E7mbM$IN zQw&XqFrhS0U}BFb5!@=-)Mi@siEx^I+xzrC^~#{*Po^BNvVsADD2dxZxZlD&1o`mT zg*g>DwX2*u?c0gWD5`6#8XB%Sx(VSSPm)A9I={$yydHrcYbq`UwX3Q^;g!vhP75K} zs6HQF$viaO6rq&e@4o>ED&2 zF-<6Z+bKmKiKs!~!<> zCM$hGh!Txi+Ll+foQz7yiA*rz^yF0N?S2AvtwHB~e1)=YZfXYYa)r zy$re7dCF#(XA-c3p;^@|nA|UfiG37VPUhg&vS`USi^?;b!=iD8Ukx|@lGdB$?(M;FNQT$S;LI}jFl>-t`Jm>`CQSPx{YCDZ zP|w{)&s>!0UHT_N1qwj#ML@51unCD-6Dj44%ps*=wFj0b`|=2RtGP4P+*#u39{Vz8 zBEwfS1h$qNkKaD`O)v5Mnr?Ak6&w?)UUYFr)xXH_nuFn0_eGqT(JxI{rN%Kumqiyb z(oZhFoG?>V;){Qu4tl0;y_=A@P7Ir*x7#doJOi|rMf#UT7Uh-oLycuTCoRnb%Gm!P z@o^$E!K9p!^Xx=scNW0rU|NCMCk}IODOfsb7@*1`%%tI^b&Q68gmCUWY^jrAw9+xq zCO^e#HM@b)k^%ZqjNRD)7XBXN)guvk3p7NoMHMIU)NirhV_NuEIZmy(!#h72g$cMU zQpF`vrA3)!1G7|t*^CVyXh2nlHx=zH@ne|Hm+M2#r59%={*C}E=Y(or0z=0I*`l+n z#JwZvHEI&0_!4&vW`M}NAZ(DI_<|u7^G4aq(lAwEBT7e|VKT#FhQADR8BX+me0MtS zh3_|%xhQh)xoc6gP$NdQd3TA&q7%kgzk(Z3SJXYkAtsUBwL~*c7G7~GX3r#+%1?kOU1lF4sh?Gvn0QxPGxw9VL4mo4d&d@_c$-!ltq1BO?@-sghze34olfPU;!-0$dH16HeeTy zT+Z6SNV7&2&OA^P4hF(2m0^b0gsdHo-V5%n47+F(Q%!ej+Sb}Hv*5}JnnUIBGE#q? zArsKV5yFfGfMQycejX>w2jQA4Gb&L9efa<(hxmW-E@)7V^upBI|3J-UnU!T>mMVDr zga&b%NKme^TL=;qCB7P0D&Bl~yLZH->;RC_Ztw5@-4>DK<^LSJ&QDDpyfN5#QsbBP zGqEBK>D1RepmKP+5$~OFbYXz?d8F{}<-ZjLq)6}aUPnMOLssHrvA_zfWRAHzh_M0b z&L20C`M`}5kJ{Tkg_8DoU!SXl7S`_xx3SlYFns#quM>*^aU6v6X9-vL=!-vaJNXaz(}?GaFPT}?rHLk zz)OA3ysDn6VdXK|f8N#9$Yp=pwvtGp>>l5%Um7PXEPIBO#!&JUrIjG4yW9Q*tuySG z#PVsIAz8xogJ60HBLarI<$;85N;sj5z5RFehAVI`G(#h% z_Zoc*W!_%yFHK5&L`Pt`?TC^2jbdHyc6(?2?l`1nCiIp*4UyqRB$aOOhyQY%qlKHq zWlIC1YPYwPAh*#Nd2S{MRqdP8_-k&IZLaNhYP$_Pc6+xdVoY=UXui9EB;-f+fJ3`A zm3#O6#+F&^edgaF1110}Q0zVN^?jn3vjWo~6K8q!;?H`QGk_!{<{%5@yYc5B2Z#Ob z&SE{+dHA2j!p_tCLb7Aw=ZjR9{|rwVYAGXTf7mH$6<4x?lDWUw`3}<0Q6pxDGg}d$ zi=D@sODgRbtcPbBF%r7zpc06OmQ^Sibf$u<@E_0j8G>+udFhjZfB81KZrva4( z3Xq%5=lzd)JYUK))(CaNr=C4-q>yva)PxQ`q&~y=RCn>OS%4qgQy9+dq+59O3T0vo*Br>Cz9HbH>!0dr{eo$J>y4Bb9h#YJ{Y2Axe?BlH=rA&M7^9llFAYbc z%4|uK#v>-ZG{=pe`PlHx#eMM1cfVqICb81m!}^Hv)1TNF|3r)wz59sw03!+RODrOu z)=!7AQkjZRPXjnZH?U%&p03k*@Mg`zsndd?%<<8o0~Uy4X5rMS3(z-q?PB?L{(_;_ zL2N$JWIi=L`D`(Kr+i+RpO%kI1~#9t@{uXQjo zC6@42?RkK|J?%k8^w%!sJ1&vYf7M#P_nTXLBPiWtT$&KTWRg%(Ow2OBEakDxeMy!% zV~KJ1l(~mwpZmV~uu-`BB#&u8`(W@+={BS4OWb4LZMVY`h)UDLD@%!{7L)|b5Huc$29TdMghL#Qb*VvCZU@JYhqqhIldiKv=Cq{Pcf=z?g|=r#YEN$FKq53F@4 z&&$46ea^8V$I9Ke%Om)G&13-W!?|a&+geUq-tvRqpKsG-lpic}H-}w(*nkyHCvtak z50<+dy?;bG5!ESWzqegnt|GnuNb4GD_b2|3Au>dC9c_hOxp5`G<yrqqzxTACb!*cWLjZtAlQCa8vc+`%l0WEsuFTzi(&DFdsF;Ik+LA&=W_TaJ zI*k--#0Z8I?;vg^WQy_1Zh;Y!^3sRV<0KmN=7;mBLy8oq;s@=#J`H~ODXZb?+7vfD zIpssR;U{#eKlg|P+Pv$XdsSNVU&b}VHvirKOY?72^RN1HI>dyZyPeuG4`fW!$TDtf zOWx9qkk<02%)}9P*C4lsSu~T_uLTduYO}&Ak2)R-_`+O^eKz?}lzbSOd>E5_C{8|v zlMhpp4>OYw^OFzv+XuU1mwaBT2maH-&2sx_p1;qt+NAI&)53q{KYK&}5kb!?E?50n zkK1I0y;f(hGB+1$QvMi*NcM*8$G8wcPWntdhs55v5|R9bnY3z9`YhV$?YT*Vty+bJ zrW^SepgAOGM`Ytauis-?8B}AqUcwPX z7N*ze#l?uY+2PEs;jvq*&PzzH7O14HXRvZLD?GM?E4*vIQJhhA0Ln_*99}NG);LxK z@BeJ-?sf?!X4S?LV10Nv^1P|BD39dy`=BZk9?|8!SSEr$WtycWn7BqrXPJfnQ^HUo758{dIJLheDP9v!ojk#O5%S`4Ux{W4W{U3=x(s-SWc-;DSRC$FfE&s+au3eWa7Xy6edYO6ZgULzq`0q18_ zJt+QBcc)FZe^R_9P2vg+s!2&q{wTiuGsje`>V9AL`HH4BBm11G3MXZss|mI;%VS~2 z`<1-O!GJVR;k{)VuK)tVIw*ZqfCL$E|!9mi<7I z3V#x2=eFhV(ou&K#RxdwJ2#5wC9f3Gh_bP(%3M5@eq{Sm7SyMLdHUc?WNTw5;9^-n z4C{+iMbVLbm%qx@TA?7!u&*-&H(ATgY4qyCN`r8sPBDxEgD7`MsM6Ec7bGf))>xj@ zx?xt`~`%o6KUS&QQIXSbtrM#!fh?oew=`y?niu(8E{m)*lja!+?dV3X-p%f z#*%b}9SNVc%Ee1piCuivN^Srs7X?NrZgFaF;k~={g!Q~V-kp;)4_P`U<{6nc!@K-v zc5=d4AxerehDL^3X6ZHY8c_vp;%Y>PQSGJF(kRMs;`z9*m5*pEAA$dEtMl-E9b`9_ ziN7^05;zkY%yNT7!MyTJL_*~s9akqpl>4p<-ZnGtkN|AyW>JFpEER=o-pm}oG9bui zDUMStassH}MnI6$;&5z7W(9{NVQ5+4{eGsJ!;@NqIBN159-Lg)?$oLN@MYzB_G_KnrJXXyw((&?61TPwx4~N{HNOt{#4!rL>`-H zpKk?Iwwk1-eJdFN#;Zl7gTmh5hlGJXA?XwAtZDHq`&N@j)g?ZjeUE%Bo_#?jSv;%y zvBk2M2>{i-is2@;r4CB744JI3S1}Fx`P`PcC?PbWUPhq7+*^WV-KRen+Y=*K3Zkbm z^w}PShn+htGNZtq&U`ncDC|y0x8ROG40(adAz?Sm*sk5yr2m%j1EU+ghi9m{f(kdw zn0*-H1&yQH6g9PG44$78mfJ|ac#5@S)@yYtg-~a=>GQR?5IMC*dXAi-tvjrngz(Uh zjL{ZdnM^WCYR0rvcUVaxpDT|Jn)+3d?HXJIkq-6{OxSihO7C@_Q(=*7Xwc|!r6T-6 zr?yOC(a|r><{gH%tC?o(>8t9}y;cJP-ex@Vz>-~#=A#N4I6nt*eLNl;Ly9@Ys3L!k zJD=M%t{)bTE+|?$Wmx1oP<4Kxiw!n9^{k{j!Vnreg@3Cd=6HxXoDD)rLZ$X^;ZJGx zBzIG}i{1U==^7OQG{9bQF)`(sxr=5|$mnNovCXP`n2H;os@fWku+wF9$E;orjFeG* z8bl-O&Sg|t4x0n3p48X``vXp(O^PItLv&Fs-ejQkreMdv7)%jPz&nN`;M=vvhObgc zsz8jyX6dYlJ2Zd#_V+^H{*KYVFZ(+-hM!$S2U-#K4z%eoL_!l`Ws8oLVU}6$Zd@U@ zLlE+{=3ejSa&ZDNr7O-K?)~Fry<1cI?A!N|%V+eh$Byoud0jHao)S#y-isJRWJ15( zxC0ogeA0xT=C+wMp?fb);ZnH0m0=ZP4Cu0v`o{AoZ>HKQ<2eR%eAj;T{}J~t@KIIQ z9)AK82yJje4VqT0!A1=}DkxS`p=KZKP+~S`lC5|NX6f<`Kl!-h2Q5e?Bnhoc&yT?X}ll zd+oK?CcV-+z4=uDpVOQBt%^f)UV3vub9Ik|HWj?h6yRTZf=hA`P^y^7;+3h3s@WmL z=?VShA3>G%-ivBtP5V|;j(d;!jpX91?In`fwu65RA(oG8t7rJ%{47A+0EIigkl)y|?*iVs$N27v=U>)x!8xn@1$Lyn+iUNhfA{$Rx4%=3 z6$K#Z{;I|i1pyuZtp0+u0pHxYJvmV)x{igB))hS{5h!!@SW|g0AHrWs|DrJe-|HZP z^w9owXVKH;P@+y$^7>xJN2!+8kI26M6MKLk`p2xq13+K09z+qayJt>g{mW#V)dR{N zdp0a7u*W`jF&1R$W5!Lw9(x@S_?xaPBze|b%!#Q1ka}4_P9~zS2U0WjNY%}ji5$n% z?3}Oh)I8}PXzn674V=^OM7{58Mt(S0y7WBePXf677;7r-OnkloiMT@3zK30j!kbVYfyu6Bi`bh`p>5&d z0EPS~>zw>kWRlkPsEcs6J*+pzN?7ux(awV@^)l_mJ zPo$ilmHGCk$3+PAZ)Fry_7l<&hD?NsrpFym46BP!M{!A!zfhWubjf*NrA_H^WmZzj z{>r-sC0EZ+{2}NVI|@+c=q+7Rs~q0I%rB=BPYEORZDP?t!@j?m2wOPXIcu6xnR&N1 zJD#(4^!`y;u7}L zfM6t|@sJ)j+|nVZ;`c`&@CK&t6s9V&m>NnNFjZlgnt?n@`H>?GQ!h~JN8;uX&Y#vcmOE?zR)~zXoRfcy?1J;|pE4eX*om&X zDjN^kLBCsThi3;wc0BJs9v=6<-UmoJE($ugHl1CBMPO&kk&yXzKBB3?Z|R{!f=hwZ zScWKn&Q2Qtn4*#^qbunDaevSU`=sR(ef+~1M^4-!1iUW$%Sf{O)y9!7D!KVkL*kXn zla7w0tjl@j6g{TACD$s_8$8EC>U2`Lt4@a4+iLG39WTt?1NMGxbRLLmP z$c(0rt!0@Yj6uB?AJM6u3F={^Z+UJpI*{d2NE@kbAN-Z_+IKj)lm=8XOJUJuk{tbt zl}PkKD$(D-XzliBxN)_azROHxg+EynE0C~L-6G=$&cp(Ayt*pJMA?p=B1M=4$XS8% zmc!$Mf{e!E&@ZT-QvcM^DkQ(2CXDQu$qgxQ0)Yp{M|5F_s1-5je@vogssHP*NlH} z%8U;6;)A0R8Pk8V56K>T9rLC(f!l8sg=D$d{Z5-NR>|xnJV{ zDu}s5A*3B(43Q;^+g|c#DV`4r8~(|`hXE0@oNcBE%8m1I`}tB4Em&!4A=}(M)8@CN zI}yv~^(YzxsrNfUoFm+J5}y$Jhm(YxbljL!cfs_hB0{t>&cUC#bG;kBiS zZK>;>a$HMRZ!d0Rz8|C-NtjkeDyvmba@Fa> zFpU~mPyH#PIhuwJ-DKHptIe?p!LBPZqj-&_zGjQnTMb)I>kfKuxBQ!<>E=>D_H&l& zC8TwF#c{uk!5ORJGFqMdlyJuZ4jcn>WJLe;VB-K+kc#Z$0P}baI6zvF-p~sz#BqQh zxS&}ssLDU|G^(3m)iLg~@P*WEPEDWf6R9|%Ck9ErcW5!=hu&%1t#|6_owmZ>VW)$D zeDAPXs$7M=1O5rg_YP+cbf9%7xUnvtv$(Cgl@A5xd#5ev9T%tJOz*f}(e_2YcYxDB z1A{5YdpgrJp=wGW};3GcyG87X%)O+SE9dsc|~5ni?na?0G8apW%G?ZRm?( zE}M*Cv$Ng-#DKkKoAu6uW0Um+*IjQk(p_H3$2|PoQT_J((tnF-vBN2GR{vc@Q#Vgj z)8IZLELTV7lp$7sY9KmOB*I@=mc_yki}QrMy(k_Q*<0W)QRTbzNtb@{KTnV7c&;UG zRqqL;&spKBs%X@XQ5yJ`@FD9#&{_P#~I3a&Y>AupGe2Mfc2-f>ZYC(bV)nmk~^+2I#>8 z6xTg<#J$83)!+DMqtP*ZYdw)3yy~sqzDKfA7_1Yos{n6I@$2Mb$krBX63E|sT3hUw z7o{XOYF&|CR6OOs%TmVVjsk0f1#c_`0eu$jn!G$L4cTj9hh^^~|H>nzbHSLP-}zHzcAJX@6Y8O2`3qJqRW)WTWb-LF+*?co0^8iX z4pmP@^5cG}xgi0zyY^kb$lv!iEh~%o2GXwYHOjg$Rw|-3dhmib z!7J{<$L@K29KDC}fzFd*((_cF=l2;m5BLv^>$^g7>tnaz85SVwboCd$1IEqSrjD%} zgIOePOH}*I{`(VJh`m7rVlilN?S&aU@1H^~0pH7eifV_Yj++SS;Z2qsC-U#Zy-U5_^Y)%k20|Wm++>AsK<&<6} zK%LkXQ2MA%{*BB4YBa1=2T@W7NLr*?4y230iW_8H|srCHHmKlu%-)L6nm+wtH~7<@?` zRlt|V2;c=P)t?1?iG7yz;1`Z~j3R8ev!#LWub#wr?V6TTA&Wn|@nGrpQFxFpLAu{4 zAEZ9K_oULyR~YI!eTo9+!O*hnY4*VS7sgWxd~WDLjVfSWVrHll*bIZ5Y?X4xo1o>{u?TdY-Am5?nOA}-IItEyF9=eY8N#VS7@3|drf8**J zWaQJx5qw{w?>_*yKlbZ|1Mu9ASnWEt=&?cGkO+yt%RcHYMm9WSJr^2BPR2;}*l6m( z+vy=jWxTdK!36*t5(k_XITMdx)ZZP`9_}-2J6e#$9_Gu_M(v24iC!)8txW7VV@9G7 z%3yw`>;z?xdWc1H85}Yc41A^qwzfOvY>LxB1LLX1s?y1Rm%1s>g(AdHRa~&G4>o==t|_~>KY4tLim6Ww%K<9 z?b$(Mj1yBq_5~|dT7i;G_Lqih_=6rzqGj0?4i8MW8@t7r0T^14~pm-^>^ zjTiT5GpI6F`~1a6;vt~WUPptR0qD;{h}YCrHQoyy8cVK19ddeg<=oBM%RtvT zmZ|i8_>UQBzT_WtjAIB@#*N$x{zX_`+6S{l{W_vGaA-m5r)KW}u)lz>mTA6#KC}7-w<9oRS z#;r#;lg6d>9~l9+-*|-W zXJ^!VgtNcslfu_`HKn{xa+a=Pe>+|BQ_6}l#*P`)iT}-LdOUl`ow0CZXAI#o*;$PC zWA4H5$hoSMI~8glYIzE?geG`zr1wR0ZXvNuADO!!D&#JCcrS7AZVBK$P?MY6l_-NV zQTPRiXjh_?$vp7$NV@}mEhZY^XHAg*bK12y>N4u;_!RuSYWQ52O`l)??K%C)F8wo~ zHT~Bty`1^6-nA{AEPvT^`2z~l4<$V}0gXGQAH($*xD#^i1S2@`$%h*%wEwR5uYN`C z$=BEASF)FB^0?)5-!4nRayv&~H@f_CbCTfJ1h$<1F}#;p`qqxmijRpd{Y{@Cy>^Pd z_Ywnxc4JO90^XA2&r@k_joiZrtIfjQaMo~~uCHrWD-Ov@$9*P-aQmYIAz1zzewbqr zCt0fK@EYoV5jroQAbXl;@_h^ zRb8XP%_gL{yreSzs_c` zz(_30j8`)H_h=<~_n;t2&*m)M@7+3SaKD~^_kVCypD}f3W6jupE#H!@3X6p1d*C)j z+rxK!F3|wWSYU}<4td$g-z2-*buAN2NQkB{tqcSQ>G@YT*7U<{s}Vm7S52t`WtE_- z4qa8hvHcS7TcAY;{Ul*lo`<+jqJY5aG@p-&&T2#jeYUjTA4%tD#w;@AisI|nm^wd* zl83Lrc=Kn-HFiKSo<8QtY8i6Y^|2>)2OuR6l@=#P<;*$#mUH5@+Y`;mP3ZK7o^znd zTP>IK{{A=I`-L)P!+sN|JUw&olJ*+_G^Oyv7ClGoB8aeM#fe#V@{T5tS;2XYY>xJx zwUV!#TsD22ljj0|S-*97y;d~^wo2ETq@~P$CH+gC;f2T3r9D^Mc#dfX)d4?Mlesfx zB(CvTD6io!Oa3ylw#!Zn!5QfSc>?^_L}yKegt1{ueOc(F{a{iX4lxd_VH$gekdGA{ z$J90Hdyn>fAxD3%b=4@H2uuIXi zx4It3HxcIhB`c{Sg%M+_p{Vw`@RIMXz}CY1>!eg@3;0g%EKY1pHI&w;=Yao)qDiT- zTeKWI%TdW`&eSm?SvqU#cq`>GuRJu;e47)s z0(q&v_8pDchN9T4jnP!ax=CKemU=Hy8cA*|Zuvqaxz)hGHbTz_^A#-@lB$G3BfBxS z`C>LA;4I28gAQ1b-0J2>TL--Ib%Pj@m>Fhv+=Pqq4cWe_Rjg(Vk2M{2)W--I>;6md>yF? zWvPox*ZZ~GuNrHHB~3+9FwxxruGG(E>+qB1U0jOKIICZ}yUkvx8uLSc3k#4Gj{1Mb zxYFUM-uW%_-e%R@`qe2#=C zPkejF1jg}kZ0+iji1~4^KR{w{*`KL_ExP46r6~3$l)1|}3@(4_!obhr3E-*{a5=EdfWiVyC3+O~m!^Qw5kbLux|4ddrD zX6tWG#eK#%CzSDXLb?Ba>AmkfVO)Lqt`oRgaq8HheB3VFEm20flP`uNojxw7zBvIu zRo^@T$J)nSPsNesmau=ED`1S=JAZvtXKLzbN+7|1lfeHnk*TR8vyJ%S*)-yFY6RmX z!X!XR$)$gahu@*} zKifn4pXJlHx%9tQ`k6|9-X7A+%rYo{noFNh`jJY1+#b?jkxyUk(l;o5k3_F}^#7huf4xipXQiK`^jGX5 zz1%Sb<)7`+w<~>}(x0%0^ey@Hqh0#xN?)$@`|XxqZVZmOEzV6)Cw`0lQ0)hO^cNA7 z&BRsF)P>k%$gafMZ?GEiE1BS;?fAIR(u8RTHf0G`NFZyFE#GFp;xy@XORlWcy7+gk zl*dMI+}je99LV}6U^LLu;8QIPDstqMzgS8{quhBYTNKDJ`ap@asS~kgcpE<>>0|y_ z$u~1K--!{uCjtrYOnIyXGGCj@MNT$v5|XLmE4!ZQ#i)fja%1+J648GSKIkaPFApcM z$HK{V0_j`o*l!&jRFOIfq5R>Nqk`Nw(GET4n-OQa<|co)?5? zw=NntQrWP_bp5>2$*GsB^?{E2%Sg8WRoK1)5%uA$e)`oRY*Q_goF({g8Y&{s!=EGK z5v~abx+Z*EGIG#_F*M<=q1J>%H883T3z``+K^rsxPs_}wnqVIYs5TYI+leDxJE~ke zI$b-KsdYg+_94e_S)UcI*EVF~KUnamR35waNE=3Hh#H033SfH2M2-4BqJ|bz)P|^$ zm1=hvC%)js2{;Dg1gnKsa)6)L{5$rclLC3-Qb9`2wxblGir95#sMgC9Z ziFztFd7=k19}4({JTZ#|{$oTI$P*DY;$Fgx_oT-iTcycjjzo#S%Z8LTpZhyKZP6-|5o;H7rp3$Zvzc{J+Ha{m1^# z@crce0lu$r1$+YE?~uShlgI*mujf7ve-dEKr^x>aou5v{M(6!q0iVG86(sOqMWtDQ_ft=$5gTj^g~=d2?ich; zfcLT!9o}0m1Ml)V;{TL&Q=Weo*k_8pr|5)u?i4xl1J;?=35|uF@Sr6BfXQH`S@XL$ zWiAwMm&?Q5JHd8S;hG2(XPQ6!*Zinvn*jee%mDO#1$rO4AG+WF68|gN&iS9<|F2&P z@Sk)Ad;$u^J-|Bduffd6Y`0uIgn{ZjC++auUeO zZ0IV#e>QZbzw?X_dRy=Nv)F#($a?QejGPj9E5D$$e(^bFiyH>7ZYVDX9tNPTHzR<< zR;-iPH12{Gt9V_{(}m!ncan8kFr-T{Mn_!Wuw>)OLc%t0LdYMBcx$hv{t#oq+ZInK z^S?In(cZ-qbdzMM25WA4p5@189fs`IpS@x^af|9T5wiC&_O2P)`5g=2$quqUs)*oY zFdt01Rj%;e_fNQA!FyCf^^*mV>z?zz8^^Q-wJ1j&JdQW`w~2wIOYYcpR#E-p^H|X0 zp^as`H{tN`oehH*PdFxq3>ynPL=g;#h0_5S&>2^<3l#j%vC7G}7`vY0J7!@k@9pY( zy>h{;^iglBti!``*PTyyZ7J1G%(C_2WnBxF7ZtS@mFS0r1P^+b)3YZ*_0UjJL3{48(HEmLe%-mqx<(*P$+vB)I9Y`T2-xucJpZabuR%Kn` zhKIxT%e_;|ErS>K8bg-D;Cm?D-0!$k%C1DGJcar;gzp-CB9+yj$Tbh8w-+b&W7kjs z*xp1?x7E33MaSFRul-`r3psvYSpUA{bEbH%R_b&O=S1zE@G}N@1%m2|&U!n1SLl1F zL5e|h{U8J)%&G3G|6adrBMbwLas})f@9>@6Rorqya#z2WgYgQxBXMjrIlmI#F!WYf z0VH&R9^r=Nx&8^_OX?BCNp^uAdx#(Uq|1NHC-SpFgXTRXF_S{YrL*7KfGPa0a^E^X ztQ*8QfkejazL^AJ#rH9`RetpGvTa1|E-i3=x~>sJ((cR;pt9&JIR}&lyUs?K9+n}D z>+t{5gfUf+@ir{hr8Z>r;`j z4e91x4V@#=86tx^?myWWpFqqQ3qUth{emwqZCd{;QK-nVPOcT!0&*Fj(SBHP`Q z)5CrN`TiB1njkIMBq)3hUs%@<>+dJnIuAjEY-ukq)6MH5zjMP^o%DAi*J~8KNx3W6 zGf=J?|B)hg#%rHRbWXs2AyT`crAA^C7DI?0QS?T*w5`I*xpIL$+;$e8rJU0iH>sMh?WI}S)$UCEEghOqNj-mxdfO+b>%SGs<|%Amo)hjlG<+9BXn8*XrG_~la9Dg7&yT`) z9mQi8)<%ivGcgSsQJ(gJ>ipj#X6MHDR5rWD)Thp@t4~ctmx*fyTzsZZW~-|!+SOB) zxQL6CPRU7sOvdydg#7dDE!Q%tWfo$|1US<&+u-ykE;KoJHava`o^R@Q@My z(emMM<3l@qT^FJZXSnbxcC1{4T;J8U9+xH*!KU?H;YCCB#-`$Fv~@*?VTCGWG%Gr> zZ|Wy#9YGyoUJ3 zZ9Y!riyy&ODz*$k(1KHC1ufl;6;l+2MxgJ)Sw<#cokg&+$;`ex|AKn=)-UhGj zj0hGRx5-{8^mcNi4-L2dLNCc~Hk8k47Z)#4FN&JQ z0&sHGgibbG|9Xs`WAN5qAAq`>V+LP&j4A;18e< zzDQz!_C7+ms=ATSbR(8|nV#F-tjBm}UhiwN8Q6#GKApx=u#V7;odt6!3*};OH28b9 z^=u3;WZ1bE?Fp${m1eMi0sBLe6$(y;hy&ED@P8B*2SBKBRuMtTnX!E~l;q!0zJ_u3 z&pO6zy_0Xu#wR!+4hvWgJ_q0x_34?te(#C$C9EB4e;Th~YVkD)Cf=&ZUmO{2_Qw(~ zm%*1!=1Qq);j6z-Jigo2Dv`85Y|00{xo-fUQLu0RLkT&_m9yh}SeM~^(#jh}8ul1B zMp}3EyYx2=ZM`kO%r5nA;zZB&y6gJddT&RBrG-G7hGU5hyo=<$bx3uiz3rfH%;K}F z$KpAx%O3=e+joG>aTsf+$J*T36mGzi?H2g=4rraRv9U>=I~uBp;7&fpj{0GHHx)m0 zLOK+V7c)G!>xkpR3gWehGKsLx4#BFY%omg2pJkA)89=m97)>vC{6ykoKCyq_S7jCY zfw&#=RKWqo5>Iy|eS-VHYl}h{}T9xu? z_U+E!`)RS{mF)Gm{}D@x%q_ClZeX8kYi2I5ZoKK6nSHat`HRUP^a_(A+Jy-iDo`912=l-O!!U+ZYXP*XQ2pYvKxl?U*hZ?=7WSqQ)05-7H?wK-W zUdMMterE5t^9tB2%W_&)12T=UGsy)*jeFe`le*c?KqA~V3pLH*8|tf1Z-R64JOhfJ z1|OK=|FO~$)J(+veKc}r)mKlGnd~!^5x%pf`i$_M@#@pX^r@BEE!@7$D51h=To>KQ zgtD$}N4WhrA@V~?W5`jUm%*cu)oyRNP`S;5coamvjlbR*8kxQnaF zOdfh?eE6cW!&pPex=ldv%DUoNB-R8iJ~zB+&AH*teD!bz8;6OcUnEJWdOT+@YOwPz zZ>oJaaSv-Tb|34a-1iwx&&I>~?6RiXZQ2=n9L?0{=iFp}r6>bR7X1}) zXcp7-PEyFZohV(tjYZ)yRo}vsQzbqRt*ec!E+V_Z$g%q@J!Rx?r(izKQk`X}RXcMj zJ4hK%j~)b9Yep)1NHAt;L;?*aV!8~*TLS}@-}m9~#fzUY0e=@ZMUwTe>yD@E#6HCJ z=HMkB-|+8++u{`Lg!}QlO-hHpXdNR^k#*LIpOb!`f27T>3S<>h=6pSM`9bshig%P z81GeJgJ%6DIZoar((|LDtxBq`5YZrHWAgUuQ9#Nhh;#^-*K7z45Feev+9j%DOh}V_ zmYSmaqUjT<>y+lX*dVB`Q)YOhoqkL8Pzk^e(<+>K4C=9ZpoFXP^;B>Jg*?PEE=Yi9 z94bQ7p(6qKZpmq!|9AE6^?z5N9A}rB{VRCHL&khsUD!6_X^wyMs2nD_K2sMm^lhRQ z?^Ber|Kr zn>s^P*Knug%9_Ic;}+SVAp08b#{vuRRrnu`6nrN%Ymj4H27I_gw2mKJ-ScDZf754z zoYbZMW0qPKlMv#lsP0*k@0(z~Ula6^o!ghm1!O_h%`>LMzuiwbqF&6F>=412p1 z$G54>XwT7vgNhpel&=x_|KxbOG0N3k=m^Y&pb7#6Ia3flW`nKF+#{lL5$v5e!>hpU z%S)WS4jn2ia<3#<hM;2g7_+dQ=0(x#`eZG>r zBerq3n(Ydu-(2hXA*i;ZOqC$i{m6;{5)h3NfFLtPMc1Ykuc3K)=Br1*Idin`@Yx;B z+;x!T7~>z>1sS!&+G^ebD*Z#Ji$zbJp_@c%Cp6F9-`drGD&(^gv~NT2v+;~fh*XZh ztd6FI50-aP4*}uBuc~SKN@3T-i683ww}bydeV4;~{&{`VNVUiMQoGeB!yUHOR%eb{ zy2H*x=m5ijQ9aaA2kop&T;PVmDKoeNz&Op^GOjwbcFvg*?XSHiET;OUBBdTj1H>(? z-e5q2fovB-EUV(3VJSH~P9XpszRQHWboV zdOY4Qb+LK81oiS`bLT|86X=<3tgl*1yXyzatqi)34T;7a(FOciXV#d(`qJH*&_gtJ zu^XKQbazb-J{6NCzVbJi*uBU4l;cz=`&c=S_-MH)^;t(`&O~0>o!;Qrj;DWO{A%dh z82)VI_m_u%hVkn$r;R~0Mj3QE5)kZ# zfSRaQN=&_?3)suK^bb=g?B#H-zvE~TRGV%vDu|`0i3-+-7s|jnXF6tXfK;D$nqbS#Yl{lJ&Oww%>MYl%CEVa>tE;B2OA8*tX42? zKEbb__dktazdS-M{{+AO{|5eZt@6(R|Nfr}|5yJ1g#R}+SppS56WM&qe0j!epN9Wg zR>c1v|Ax2(jIva=vK96?M8y zxVNR0Cii|Y{ax~$*F5)Yv<}GOvj7f7749zEDS5Z;4Buoz&>^cfl}at}P4P8& zktcl!qK%0=l6L+R`4&kKY0Amd0Vq-_Bz_k4xK#8At%Nzs=dbKpi^ZzsVdN+AVND<^ z@IGX-ocxqIB+C~^ZAJ5MiCyK~as#in9G>N1ABqNP%~R?`5rYA=WqYPw7qMsVvZZ4k z{h)GS!m1gml-b+lnXy(Fn4usi)7arw$uyah$!j`LCYi@H$*5N{=Mbt5mO6jr&b7U= zzn%H|x4~21{&xO6b;F+TLpgl25OPJJig`g+gLItI2Oc{v;oFR`r#a)@rl^^M-@2Df zYoRYWlzdGclO8}I+@gzDv+kaU9 z{>bD=XZPID-_qyq5+oa55x{I|%vx9gvu^~?2dxcxYST_0D!O#e73$jWnxFDy(ff>WKA;k3-# zFRc~*74&1zZvI;`Q^}DRm-h6=dh?Ch5<|7Aet6Cn7jYTm9_Ecz{e=R|e@;iatD`Ar zAe)}8+pzyGX?BJ-s8LU~$+$3@x>5r*+;+P@*sSTi5}unLIs(5>XwqacXU>rnOB~ipc6Ok*(snv}W?2t1BjU6!@WuuA z^S2*~)#sHhrZb>jOQg$fcXuJjQ`6_M6P9jdH-%eCBHsGp>w3P(yp;5d>%Hf~(WjGL z#l`Dt9}o7WF&jx&oD@rs-jLcyMkTjURHSx&VqLs;Vrk-Gd8Na85=#9DM>ZVq7=!5_ zCtSkqZPvV|08`&_m}<1Z08^p8vY1M4GzN`MX0uHUa}E%eL)DoFjd!$Cr^)?p_s5bn zS(53^tYnxrNP2}OtyAxi7B8`&CpEj-4}HkEP7l3h8_Yg6tU6ZvRJgsvz|ejyTPmCV zu3>EcG|bWLQ(2$7phYuF6()5kCV8uwke+ry5uEoL?L%tCGt-WDzrYt!N5BBePGaLd zj>8Z{fk#ULw!2}D!JJCW^BP)AbrMB+H>(mn`J|_9tirEa zbj0Jy*GgOVkESP9bwfiS1LpS3p7TdZke^w98aCYf|(%_OP`LZLhTudRP%_02oMs^n88gr zRl-eXDN5t)`c8%~=ont>U7wmhfcX-P!r z$!FrnomrZYKAv45VI-cqz{XPM7E_Q1_P7!lUUc!TSsTvi(SSsRlJ;N<6K?cv|A?)T@IL0W0g>VmQs*=7xV zG#x)Y(T1Dffils$*>$@3w~M&cw2ZBQg}pgcvhR0Z!&4Wg($l7o+G@JN1#iemMt=3; zIp?9bR_m@TnboifrQu3^YpWh2uKoi=T(9|$Y!%}eTJfkUn6+G?=2=J$buo7W9xMIdc@9?8gP*=v&&YQE%IqR*)sa1CERj>Nt zKdYA#hS^QH?N1gd$Cy8Wqc)|^scK3kDygp0pj!oW6gVTEn!p5vxSMVcX^paQt<@^o zcq(g}>Vde;t`1aiqx;2bw}%%_QVOkCil2_vuFPxUnz$^x{Q@GXzWq9?-yTU`pu3j; zU`4hWwhHE@Cq73x3swrRGTaKR?p&33+55pVU{M{Pk>D_F8rq#yba-Q>vT@5z_BI|@}Ij2QQO(Kt4#j-xECf|TcY|?c&EL&_caCYa;L37rKt?w!|a5wBTUaN!E<}? zl%a}$TO}FTjTKnp9J7^sCm$L~_1;MAQo>8*XnWMwc=}J(t%S<-1M|JMvq8Qj705_l zk705%`rJ<@+OcYLx?#xrxQq3!+PIf;FPl{%-9Lu(voNi6*f?0`;?29Og~RQqlORio&sd?sM)%21 zV4mUx=IN4Gv*P#|&FksGFaA}cH$=AB=6PFAjoYL!mQRx`&Co~R3%sF4j79i{&CFW*-^)azeo4vp*STwDoDru+^?%8_t1 zHM=UB!mut~@*rF!R*U7}{sR>^3sydXGN(q-OI9-g7@k+y$i9O9zL@>V!w-q4&p~tf zw~wZz#~vK7-5Fl^bz@9dpgVmpUi(VRAXJx!IDLZ#ZpgCJVJI`?p3_F~MFd(09s@(o zRP&S9k20Ip_^&>R^nL>^?T7}WM+2))5)h&^7Eu1*hN?pqCRU#7T5^xf97o2yegXe< z*?vcmRS_fo-vqhI$Y+*(GSAr@(h3&A;5L69D*`=dZvvXVtx$-={N2s=U*@=DjuP81 zA*c9@=q8pvgE{|ZqsZ{Wq!G#WZmb2A2OmKJ%3Smy*@F2W{QsUK_QQb++t-m?i4MH>~PncFP!R${8>Cd$v@ms!=X+L<) z3^mld_7@C2_|purx7orAxs$JU9*Ml;V6E4e9_YNQYU6tKHfs?^y8-@*UU)FX8TYQqv%7Wq`BxSt?Xuf}-N{~eVIj9G^#7F}{BIu#|AF%1r%IO|{La(r zF_cMX@hz`S0sb66JBO|@e%5v$Jp9uqjs0yRD3~;^x!g?})5x~lq!BT**gzPb?T_cE zjCdqdMKAIY-JLaji>I%Ew>hu2;e|(8yW9Yk9i4`7cgXz9WXiPQH+dfoU6y`~g$VC8 zB7W{?9ipz~P1MiS6L1@Gmf%Ku`m=!kl)uIXssClN=Ee+JUB6}`Mw_hwLTn2w=Z%j; zSuKPzK70K!FNiPo`s+k*-*I#d`k7dVZhg|mNy{YO7rf=(zX6T6TPnff#?#R478h>U zy$8W~`Zj6YcxqJ6Kxekxjio2oQ`hlUioqpIr0jT_Q4Zza6To47>{Y*BVJmm!_*m3q z5%`!tn1)Eso}GEaI2L%}UO|kSSRVN0ETr{yN>gj|GSKMst#MC=V z*D|yk=LFArdJ;c||IPfLiLOl>x4MAh<0lYF*+w8(Woj?i%8cw*rt!L{cPaAxDb18U z!^-w9ow=uaR6d&|Gucy!x+|5yqm*A*AImFC>sKWtO_~9zp?BV%*gIN0rSxuwqZvWD z{^Wj3>f#QDoE~`}85uaAcjiiiLjY25PjvFv@lO7FN^(@7XdVqWI_C+|`3tL zQhC!(KGc4T$=pb2FwfKBIseeVSE|Ajwa|O2Z~N*n%rW(S-}b$`L$w>nZBhH$Hweaj z`(9aRFkAaB+v?swt$l;`*uDwM^~v_FeRNOlyOYq**uFqN%F^LuY+2YTX{nwOVXGdz z%w#b<)>h>D8iNt5pMHiRJFBTGdQ+4$yOYa(@*lBTUH38r%$K=iS3Nuk*V=3D$%Z_`PEa+%`?=w>Rw%`5(eRYzI?z`9wiYvx z^ut(Dt`V(=r>y6ds}Weukeu-IF&a#qps?c=AIWWRVcqT_2vZT04kc+p5BC&jUE>L%j20JRJ)!!%^_E zbuwP+dKG~WE7t2)Ta33F3&b7a>p8H)Z|Csks7T5ePpdBTP_0#>RZ5jr%ZX|kHZM1! zdw%a(JD1m1aGS95`w|qXh z!CUC5QjLVyBaSyBZL0r9x{O{!m0u4^Cd zYHW<6;qh-p7pyMQYh*~kanwR{d)}M-7D!f6=#0FDY!qy zJpNw9oZHCpGA5xWRyk|J3zw_0spEwn2E>uNXpw_5vl`^6FJuTzH*t*(_kNIgoP;eQ zGTl^G@6{g}YTM9KkIv4_6_wz0NyQ|PLF197E~bn%Cl@Ji2`~IIgBp3+#g@?28H_v5jjp&!HTwN8NFy)RjHF&L<{ zy39XQjyZz9q{|czoSYN1zI+IR?$ehpQ)X4ZFD-dyDG77)AAQf5y#ajgGD5@Zd^IOc z(JXxm#f95@g_2KFT_L1@GVdFX>OKK!`_&Y{VHTacV?<=Wz8gHX?-?YHov%Jy943((1@sFzJG20ja&f)@TN4VfWeK}h8lIFSbFe{V^6d#Ui*fgU z9wZL7bUEY4sJ6`i$hfLR7W?&A0@R9FScf_u)&0q*#khhg#By47)QwB%|ab_?~c?A7u9| zU#pW=Mx1a!ICgHJWjaiCVRZ4S^*!|V9_xD~sIP$6I+Vw#&sF32tsA4B)xNFSi4 za<>ctaY(H~d-}j-oQ*+nOaN1k-nuj26fJ!sy^Vx{+0<^hbZ34c*iFtUEI&s&0bJ|e zQbV$IlkKkV%n%z)S@}B;UoOAH!w>sp56G@NbAsT^tygT*16j}99>-G`mB&-xD%C(} z`z}OfXNYx~$GmSv(~9Hxe}h;P#!D(IEITt#J)@@ z(p^7T6B=8IO{m+h!~pa;-MqD|6G~WJzkf*LH|~+mK}=RI#kKY6tRGV>0<{%Zit~b= zA8?-Up?gXxi9P3g(L-^#>Y&R%m`pb|*mQtH4+P92I9uF%Av>?fi(iP>u7;~^&vCUx zX}J9%vXhVb;7Xg@$1zGIG;*z|)NLBKahCoPvr7GX_QGjem1MiaHNjU|PsCZ!n#coq zR~Bi)*O~9AZM95i$Rix8G)Mj_t<=BwFX}~{5K&TeW8W+&gDT$K6uYG4J!y^h7Mdw|wO8(=GMiL%~Xqp}@f9iG}Cr2l;G!uxEy+S#zMnUL>8eFZ@%c zw56_B5OFpAZRFBe1g?C?AaEUCIQ7B0IX}hTu?-CGxVpBjiNjR49mS}l1M~FmFS8B4 z?w$wpZODyp%aR%QVBzAN^`7V)26Zz3zlI6OFk8+@+@wQ4^dD41>7vryzEz^&n(n#{ z#CkiEy9R_8ec@a{Ob<@Kd14U3sbA448i~PJXT$o_w=E9)B(^;U=AyVfnkhQEc?wZ~QEoDJJgHzvcW#*a!r0V`2oG;4!jQTzm;Cv zkn1JUxl+zQD}r60_kP5C#M>FjZ-%N`yt~u6{u^Z5LAF0w=LYbIL5C(lmJ3aVQnOIB)!A0lmki znO$$4bc2M{^w3LtTqlM8$N`?-EfCiwQw!`>uumwNecxpCYUZ4V`57H>j?lyHwy$Tz zK87(1e@U18gfX2G1$tURNWp;C&#S0THJ3tsAw^uxfXqfr!*HUxoR~7j{Jl?1d8)aR zm#1&{Vu8BK4c&H-evhJ>A*$NV?=Z`o1gwU90cg^528>{p0-i zvyi=<%eFG^gpc3yZTGVWa9yTv8RrGxF?~)%;gNUCl>Z5H&xfga^5V?f3H$)cgm94-PUe`jx(V z`6+;-B7kEN!2ujkegcl~DxH4_MI=} z$y5<;Uq`5M8@u{0xf2*3P{Jmcu>B4`fMF-S@N0!16J%WUV|^XMm%slbYkTq7qHNG@ zW&&aPxmom(>>V)w^Xz`+`xMWanJ`Qy6 zl}6ilWBnw93-l54TZL~p*@w%^Z!}&YTanqaGMy%?9{2&;@-1P zyY^xgcgPg4;b?c<>kMDFB8C$%6&mvfaabOf89}{>Cm()sG-OIRy@<5hnzive>-*Ki zVkvou-WeSP1cFD7>NFc0K$?-+J=r7$XH2IyW%dwW_8g$Shc<8p?`&jm=2UrA6F#Sk zIa_^QcdYB>DqM5edHp+C9V+Ba0PCs3OWe_#!J@I^ClKq|95h1;z+6#3{5b$buIwKE zL1Z{?St6x!;PoSPdR=^rJ+z$-Rt0l)EHw!Q+y~J?51a3cwg~~ud}ff*3t?u*+`;^8 z0P_>T%pQ6k<`4S7{2aR3PlNdp-4E9X=4Z1ozaJTnuObfg7UM~;lW7cxPRU(dQn&`t z;&|^kJeIngB}i9v5W*vnL|Iro6U7>LMjYMiYt1fdcqbxgK zNc(Wa1`<7NoJGnYOJ~M-vGiCD3bKDU;_Xp8>KCIR=SZ*r>YBB^c*)|6MM^0?mZIIA zFl>mbeobbe26480t2&geI@;Z(WSPG)-W~smr9Ky(WoO+Vj}Cg;l-}*nFvJ9x$-YKe zerp5j|ARIHMCjY-sz+i(WxHr|lM((iP*xYqBRULChjkQ` z6=(ZT{@frnh>HLbmWWDJKPf$SKf^=3xLY(-&`Y@1;uEd?^?Dor0aPV7TLok#8AxLj zvbwxH<~gM8kFm%Wu6()gAD!0VQ4fMbD;M9LS#*{_0<1Pj){42QRE z%xt28DEaX3=U#?C9WCbeSUD5hnb{wxa{Z}cO~sjI^oaN~F35~}97sn@|;7)Bh>md7!-*-!vCF3 zcsJ|X0&m(B7ZR@P6!VD}KZ^#u)8P=HArQVd#fqPc6*JmJ9-E+t<@Lj##@A1lGInNK z0z5HB68pws{oT&#Te7pX=N;Bl49|?iU}h0XJHRh6bY^}V;7k6?)@05n%8eJ;sG!#h zh@l))Tg0B=M`DlA0vAsjx1y9y{1Xp!ml!kMm~m1bh-`{0S?xvFO&%sY_TO@4j|E zQ2vNCUFW3h!nJeAvg^JA@59tp!*n;*0L-`RQMC?5t50Dp`!Tj{W^g0! zH@TCV^Ej5C*)TP^>{BvS<}-BQ$GEn!w1wpvQ+_=L`V-4)8_N>gsiU^BJmIGX)DBF% zl$sc-Z44!zOHHh-ZLCaeNKG78+c+%oaB5;jEw@Wvugp&VNWNZ-{qCiErOR%#aS?rD zOLUMqk#+I(Z*teLOW9T%yx^t2x&W(RW|nRx@A?}Xa0whP2z>5YKcFN%Ycw8RynWwo z<8y;ai9Npy9BmtVtR(2*8DeYrzj(zySef2@~e=H&g^u!`s}+w z-@t2`#_(a~=*tCZ>l6QRNK~72s`t{W$aMTP#na1LNz&Kl^ny2L01t)>7#E-gD^Osx zRY!@zzv_^IGLc}vd33cFLg5iOXo@*A0+vVY%wWNVJEuw(u#>m@2R*PBS6vge56lI} zZzi5fCGbp)Kf~lw1@RXil5BO44jz)VPo-6blg(yIC+A;Tu6y!U$$GY`DBSiY z(u2-Hw4Dl2v01Ckdm+Ne%zK0p*#sfdNf*clYF#u%h*jd>IY6{OmLoeHZ1*egbXufl zm&}_m(jR&Un$Ohe>g1KBsA7JP*vLjPtJkhAlFUO3ZS5-jVy`AEbJktd;7>N);aFU| zv{cu}Q@?8^#{c3y6hDiTtlD#5r;{nkjf4YNooCHgYs!(|WP1!(X!3SO9#EN0-fJ-r zZ)@j`u|`ZtRV;JuQeBf$EpN<>d!cIX4D=^?Z9P`k^Ci-R$kP>eIdy;T+pdOkf7~+K zMRlcR6H=p>#Z#f`@S;tKjS(>d+BdYYeRw}>Xxq{9eVN0l*K>>_-2P*UnhREnO7aGV z3_>IvT7Miir;+e2tNj<)dXOaRN1x!|mUykNR*O5kmNyJv9W=gu0MyyjL6sCzpbvOsWRfdP0v)!M1FUaj~Fp9=bH-Y;k ztb~GUF#oPo5Ap|;R->LH38NrqsU9BE-`=glArlaOIjw@)c2#98*ZJ{Jv}(i~m>nedTvq{6201N5Buh zao^fraR}H{QRZdapE5pia1d^M`wQSU8OF?Qc^_IK?tn3D)ZeBST+Dqxa~3G>ODWXqZ8S0UJV#DSIer&a_Iv(YJ5Z$639DHR z<#1Ux^Wkhsj{;Q~Bca$0kN9!t%a7*`pj0CbZkt)^fJFTNE-XlJ2>{LcdR{HS8aEk6LUV&s~x0LldK`ZkZ+qx6V#l{lhotKfM?VOR2VgxbNPmA0$k=W zfMVR+{NKspDQ~0P$i5qy7Ej;S3gm1Iv8kB;7IOFIz-gv!vGtkzpCKWN^sF!M0>)|j z79#y|vk%`waf(`tA7Qi|1Icu0Gzdx#jtP-W0n zmE6f3d`4U*T!?M2Ka0Az;)kec+jPPz9eo!KQuu0JL!XZJ+WSDdA|3tM-sSHyxpTl( zCr3;jc|D(K*xD(i-g_%Gb_t?;6)GnTuP7|JvoyRUX-USNqe>75)Y6cr>q-(cL4e-;l*Qm~Wve*gN zcLnGPw|&g~#1UJYO*xsHME#UJgp9YNUs*$GoAgAr@&-?7M!U$nTIdbj zNYsm34T7sDkR(^fPe{jy`Ze5kjr&l?hTFBHL7(6}3C25@4|4Ypw@bNAa22O|=r>fa z#}be^$;G2yeV1@F??*m;V$t|i=#E@PBS}H{z#u#$oVj&{J7oD93pe*|Bv?#xk>Isb zGYjrZFN0Q}-B>`Y2J^LZh|fI1PsiQmf>hdNR}K=AUyQ9+#ozSvcm0I)Qz1kyTuQp+ zmQJ|C`s8w`rXH(Aen#u3UO&@nm(P7Ua~a8KZk9~L*G?xOGm9S@GYN3i$c*-iMs*tC zQKE#<%<+2Zq@-#U9ID8Cl>mBLh%;2ycbPea1A8DPOL!HE(VJoctNXrZ^UkuH-V&Hb@ zziWL37Cw~LVYU{O(u2&wDR*}?l@bWq!#_yP+)|%hg+JcamHu}yhmFpf{t@%^^ewUC zC*!prCLYU~7SERYcn*R{sAaA^A{bI}+yn1)()z=B-z=%Y|#snjo=1fHeyEEn+I~jz=&TXYb4G{bPH7+1@|o z{gNZ1;a@#{@y!uLua;B!?bkAu-%z3{nx6Dga_7KkIKCcwClSgvEh8I3Fk)>3Kw3hrmNT5( z2{*9n{!9i;kXA>Zcs1I-E8Mo(MT8PJtE2z~3NgG3>f{4K*1(>Z?0um9xr>I`pQ6r5 zz8=cxB$Dzcd)YM`UJt&-+a|AP&JW#P;D6P5+jnBpQs52vi8&8q-)VHP@6=*9(`9c2 zN?+j!wR?h*1k_*S{|e7p@!FRYn{b+^L-h@~*+;DaTTI=cf|+k`=V4J$Z@a?08`khk z%-uYU!!Y5xVVpoW&cz(bm88YpQSO*u<`L$7exZ%nS3i{W^+QLFQ|#O=QLiVS z{`FGco&7~{Nz$HB(t+QgSnXdEoAN7goA&bpVYIuwlallYN`!>~O&X$A8q)>ZOB{dt z8o#J~)Yzo_=yq@wf*k?!r{d6x+fyJb|E8Dp`a;xuNm`Q6NoA56R?Vhb%YSW89#)*V z4d&s0MQnoSeM@nKb%UYB-^MCBuUfbE;esHr#w$-vmXAJeFb~sT#&|3xjEAEj>&<_Kg5azDDFESW4@0UMpG4N)jEwLCde8Q2)XQIa=O1iWs#qVR zW+SosIcz#7HRM>ywLBmHIS1L^f?4<_|0xcQ{J?!1-qYq3RhE~mmDHXBCQu0zI6Pni z=ZgtEn$>7TIgeq}Rd++c1y zj-+l>Y5r~Z6PVmuqb~8k{!?XoCGlp~ZGX-iK8qS5zF<+a*Au(pO1rrp#6C!^N*U}yd~TG+(KMn#Lzyf+4_s2783m^tWyE}QK@Ta z=5vgM?5!8sj>ukp;rIJ3J z_I;K5ex&iLi?p;z4;{BA%d4hyu^mefCTB?_s5V^ZpIpZ~F4#||^U+wj&OdoJ@0eYm zOy_gz+jaicLFaSi^y*e%Q0LL8Hx%tttD^q`2&#Yj( z;DqgdHA@W6jqM~o{)t~sJZ*p>t#F?5?CP1_?MoHI9}u;=huSN49L+H#-5raFBPVi6 zJj7YMB$>?gr~jJb)lB=$oXoA}!F&jRR#%84+Y^q=(?&T@X0Nfq>~(+j?F7WU-qeFa zq#Vi}+mDW4qK-E%VbSlxxtG}eHCl#=5`{;9^e;u0b_`KIqto{r+4>Kl7ta!C*Y&(h zdz8AqdLCtowD#c%+x@;ip{;@Lvz3QYQHL%dPY-=>RX|0~EvBZrX!;tf!Dbzj;|FOK zDljf$;X^BPkp}@BNN=)(k%9bzN-~nVsKRf%h0&6_bZ0E}t?lTIW3w7fZyfVhjp~d! zf3op#BgmG2xtTDcG18$8ir2mwZYu>X?OU%Jtw`dLD3fI_2O+t@eQSSF%r%n#EhqWsbuiAw&WXL=~GLx6G zAtG;dZ^24J&!s_$;u`wy*dhRvo9JEn(zeT9hs z2dT+*UZ~n4t|7ugW<%p43%V=_S`skHQVX5sLUXK<_0ET6Df2gKD8gC_ju7bFL={#X zr>*cy0W-_blD+#~dYr9|uUk9|EQNMLB`~Q0JnE26Cvu|dqPi+xs`P?Rdg4gE)bUaW zenbbnR`4H<;6zk>6VdQZtmAZ4N$aJPp}8RwqxvD&kcqfm7&4$>^?hzfzW%rW&+9Mx z4E0CTjgnw7(j}KXH@PUMABv`atn`RUlSXrg4r0#u zzUA4yG^|Wgzfd}{Z|v1RlE#Sj`et@$M(yzLx;=yZdPP-HxGkj0i7b`OFO^bNQ`$MI zig~xJgOKGSG5Sv!#cNFec}DS0VqGkKz3KB~>Gq`>4BXyuXp9l@j6M+DLfex?#j(^a zii|nkgqF)(>ULOh%jsIFIL~Mi@)QX|<|tel0v+Qkr`K>7uSL9eF&E878hwFoL#H%o zx)g41>7LzxXIXaBO@PaDykdrUuZNjPPIwco#$Gt9G>s5RsvX-)wf|A?SZsz&wV4lC#Io0x>jI*`F1P*7T>2a^;ABnQB zJmHYBN#nU5evn&n^l_%gYQr$gYGVt9>aSi?uvQ%EbpQGC*Lv-U9Qzu@zl5PkBeUEe z@U;(n<)5&v30S31;08`^(PRk+1AG?Mes6Pm!>GT>frFTJQ~F%iyl0d*r5~_vbJL}fu4y`U(AdjCLR^L@1&#x;{N$kzGL3idWg8WX$>7g+pqY9 zp*i@;_5ZN<=HXRW*Z*%KL4txODri*HSfdS!HYjRRryNP(q$U_-ih>%ArL;JpCK5#; zm_#`}9;JgrTc^%;wpXjRT4W9?D&mB#6>2N&)2P7_EY;lCd+pEX3_;s(zrW``_x^Ex zT5>+q-fOSD_L}$Fj%&&4ZTy9NZxB58Tmz5BZ_qGx{}KL5d@R%7^jfJ(o1qUdl^jpe z`nEvX!Alv*a}najGlR`prgvuE7vJjVy#xyF`E}<0oZx;T_fs*DraTYo>?BXPP4RAu zT`s8K*_Tq5t1JDUczl)o8&*gYmyVq}jK+;G6LRrpfcQ`hrv{T)K_cu{1QJ?bID@C( zqZwS`#*f(vemNc%PdR%RiI}3;a;h~EGb>B?Q=8SAyvIeyX!IkhnF#cIie2)f$ZfxA z9s3@+#rGq~NoNf|mb{S3*u5q`uDCwFU_>-Nm59S-Wwps)dpw_CUYk6>;@^?%anEIu zEHB4uq4%t0AEsJ!XbzA1%=6#w!gdKus} z8h6tV#9=_{=nbZdQvX$#85<(f^$;z<(;BmBD=ovqDJs?!6}j`EQq4>eGebu7YG&qh zH)&>SNc*l~YUVRFQ<$1dnVMf|Jkj`hOwD=!c4}^aHfL%sjb+$LZFiSi(SHb<^aM$& zvD_alylYlAfR@e6i_bYUN9_!g%2FK5p zHwql3Cr{r6`$IYVJkT$x+RtA4B^po1j)CmMObnp$@W$>f$K>7^#6HoiH>N8dot0l} zVw*(YP(SS7Uo0{3u(D=LCw+fP{6z{^7g>Q`N)xeZXB+t+P+y)qf|?x4PT=O)5-M31 z#%Gs_9#^_wJintazB;^IGKIAIV7EJ3@`yl7o*}o-d*Ve!C<5IDrL>s|!MT&3wlxS6 zi9HQ}1%3ywX<#-v9r!(R@hQCgdHdKMbA#T*i{4E(1R8Ft)dB55Ift~yLaKP z==+I5eN9anlp|lYSQF7Ac&1n4RRHh~?vWhMKBr^Jt4~ZE#;&B~m3>xg>Cm|cp2}n% zx^UmbHHDmKeaez7e^PBw2^_*y8)>j2UHQ97O0PvWs6&8j=TBbZiXnu8pOAfjFPC-k zmC=*WDBvh zP?g>br7w$I2?1r}M)uIDP|>%lu16XvJ{z`$Ye!X;;-clWhm2ehWwu|5 zOkWn+7tf8mUM>sXFH_2>o2+n)`gDKl2%5FMSGXZM#RaVz8TEt(n$DpZ`nMafj@Za) zRp^yoX2rFV!%yyF*Ou&mRe}8;_f_DQOGNR#Tm?Jw;US_!J_>FpAQF>@C!bwP{eP}% zlUD-ov#N5yCLac8yTasJa9ic^f$9Jx(K9fc__8X|kGysr7mg4*Wy>qdUa9E}K+@)=ruGgvNgj3Sad z7VH@tj9+RSd4DY&61^$SYpbC9>c~4TVA=p~nD$k*?>Bumy>%DGQa# z7AqHHOY@DfCDQH6>f;|&C$6HxROIeuq-9k_?p{+pxOecj?Jsw1%U|Am=wUl5XS31g zt~FJi+gkRisoXMu|D5{NGT6#e=fcmTi7Sf${Ou^IGQ_1$g}x7+yLl0RV09a#>>dN+ z^}Hp9g}$^~EOE3r6N6*BVsw(t8k^ckdSsi-ioRPHGmOS_eFq27ioxqv995p`hn_ZgyJJOVyWq={m6meW7{;HfHxttQO?!|39DqPtT`q>-^7CdW4^# zolFpV<-ecL-RJE(pDQrxW|FU#?e5a`h%ALw^W9yP+P*AHzI3c9f(VqP;+dnCb|FjK z{neyyHml3tur`VAfOAqUyPRRbY60mPuva7$TQ#?Jj4RA1BoE<_AwIB0>)>m7?i$vp zNV=%;Trt&SOx0*T(yJNQEl8^wtz!cfW8-z)nos!*Q(_wYW!F?XK{@4ETB!dv!V!+T;byxTEALU=!QZVa=zSUo%! z%9A`+%RN?)%!0B$!0Pq$JXVjPOn-*K=gKw?$of?L-q4nV-|_zoc&|Dn2dla8UM&oI zWs|HqRdG!Y-*D~!9^RMc=D>S<{J+4jJK!)u>ZMM(N9#zB)@Oyn0L*a#m`4X-9;uq) zRebnAq1O|0;oH7A1K)q7*C(W3+WK;r+sg8gp6DU{f`{~oEJ*7DNEcn>5jqM2NSn0( zGk9;fItQQQ|CjJSZZ!L8@U{wz0cJyZpKJSH!~0Te4!pPDn8ELVTwm^hEGYZUzcAQ; z{sSogyZO(BZ#!0Uu>Jv$Sm5wmIcEzFT@dK|=FLMJZC@ts0rR>n^b0_4SwW^lwSB!q ziFu(u5UAZ=wSLYe=_xb$@@K%KRd0$i1syAjq$55TZQ#_69q#&jOs&rrFT5|;H`ea( zf_#n$B4Z1$F$U5Hf!Q(#>O(Ay3d90+)1xG8dHX>IW7n^MpOSNxV@q0xBx*`4$Ch%Q zipGRBQ|@|yD{DpWlWP3aGIL4F=v#6>FT_`}!TdP?S|RLRbUQ0cC;zn?=~y+#n^ZbX z2MK|`7A7 zTUu*d_s7H<{b4k|)@-a)7Y$iEq7T_vBe1EI??G`CnWXVkO1*700z*n}-eG1tE6Ep5 zrV0{JMY^?$5@;vVzv>VtuD_Rib(QSp=ePUBu@d^E@Qn>V!jvWMBzo^~t$>H^nPR#2#<@&(o$>MA zlLvvyZ~jHrkL%f&qv+$5orI*g_WJsfSBRp+FH>jn%tma(bsMkORYl|%DzyIym#$hGZ*wz7^!C^t)P2}otAk4V7S>0`Z)K&qQf)7V<~nxZz`8(2 zpth+$qaU_@hiT6_90U&pS&z!3VVuRZoafH@p+Ltss{Rsf#ct!Zde?Gm9xH9<72D`2 z1D?$U+U z{uW*{o*P01(i}7VaTt5e$F6;e=0Snj(EvqfGM{yucP>r)|h zvh}wkxU_ev$RBMtCRiP`CoxC0I^3VFXNJ!Ffh`T$zI(Pkww#`OV^GVnxi>g}(pHWb zQO^;`lMO7Uw=yDFhc|*Fgai5Vz3yXJk5HL$H?_)Dh{>bO!t+J_blevRD z>1%4sToZIOYppDn_+k!=g^P1Ecwfr`D}XPDgu8biomJCPZ95@|u`#J%1nb*?FxJh& z*4i3Ad#g}?9nLS*kSoFfAq@>8k>dPLqGKH==d~7Y>!`s+8$Viu$x=`zi`SapGmQ89 zb18?b)sSSuKIs6lJwP4z{4CUu@DD*{AS5`pyr}1T_wf9*{-k__U2R(>t_B?2efMiZ zv1i(X`R5%zqL+p8tQw~?XgY(N03Uk6y;1pXz6!fv*D#QRv<*qKy)`3h@@k)0AZluiM4PHxq zh$ZJ1si4Wfd`LTou3|_bW5IvW?i;rb*MoR#Q7ucqL=Vc{;)``pB!pD2a)U1kFPT{K z^`U-ExxOlQza)>)lvmLzDFZs$NixT`^vvwwQ#TB)N`hWR3l2Z^QTfYW-tRYe2351HfNI72d z-uTMKb36asvcFpa7w`G0=hjod3J*JnewVnO=cGuwVaPMn2jpLGj>29jI|fE1;mN07 zi4Rrcd04=J5L~sY(7LzwLylzI{Y3n(&)1E7J#b)ekOQ0B>*Xgo`qPbpx#G4Z(nZR> zSx}+z$SGYHf1@UGVaZ^8$rDSrzqI`ALu)GkhJ*UBZI#cFF0euzP^VBuQ%z4ut4m+1z@cA){t8CP(@uy-aD4Xr4 zDJV^1*pBO(_$uix;x!%N=Zf;f51 zGOh@(4J(zpiyPZ?@ z)h72t7#|KhVbXmi4N#K1>TE4-rx#76>rr)u&Sz81JtF_uRV z`2_PtZs-%hrU(ol)esrLO0hzi@#Pw&SRh06E`H8w$`O@^!HMY2hX~XB-t(6a;h;Uw zy2o+LWP^+TCUNhk8Cx9KKK-J+HDgCHodZaXx3xfKLE81>^{eF2b9jxBp%Cnd#Uqi2 zrj6>{(0XVrG5nE1q#q^Qa2KzDqw)d=JiJsst6-(gJ|=%&j4v+0Mbt`&jzW?lmtO_VK!9zrJ>S1ev6zA z9f3mzeSiNElmD`c#XupT&^_@L84$YUpCUt_$|DE%sa~mzuMy1r>bbceKBH4dZ>Wtw zV{nA3Y4zgj(g?HfZBt={@^P#U*L$h(fjlQ{$t$9V%Wbi3s*ArfdP84Bd3p`y`jd}T zHTu9&cV6KByk14jk(Q_K;{VRlPseEVT6CfRDAYe+4)jkSZ@BtG*54}42l0l-+)0>J zY5#q4V9_}&DA9B``$#Y?;^Xgg->!Zeh~|+b)7OH3;_|}$)-fWO_Zj@b^W{tDox}{C)GH0Dr#+%v}6UgKv_jmW4kU?IyR)%KR7}m$viK^wiB4 zNMVp4(fFY7d60d(3qDs}lELR}@cHV1&%ozFkWL1l$IyYTcta+BA$JgWQkQuY(XYqj z?z*X}NZ6164u8L20>Po%kE_UGrcm@h6AQ}VPKA}%lt^Fn)*S1%tiKc|yyw#xg83oA z%orc6tPrMmRxB|Argv)TY>oE{IMrT|5q$Zh){BE?LmtEH*W4NKm~PKHj+HnxzR(fU zGd?`riN;!>H*un`HtQwb<4yPr_j=+P{vw_uehGIG)udU_Vs}425*1x~(Kd~HpY)

<-Q~HPiDMoL*Dc&4_S%Z?R;qbZSyvX?xp{^y#Ocm4ENId zkB!>BbRPE~<^B?*FHAG{{F-%r>g2Va?}#t!RtZbZQZ?Ld2$EnO`+P#_ifyt)+BJ~) z$1*~MXk5!OI_}^nXJG^`CQgn8)iO>56tt8T->4b=mb>GxvJ)(jP~y(~`xXl%aNaX7 zt5Q{$a#X@N1c#9B;%{|wNYVu+Lmf1goWc(<>bB9Ym2bok-cDnFE@oxsqQ*A$`I964 zTo`FIXfCRxlDNMtVoAi;q$k6^SUlcn5XdeSiFpr9GY8LN+?ctgNX^OiD9}&`x)(MB z3otggb44O)B~tV_D~o7VGAh0?hR*LH2F)@Agj*Q`LZF0M@P_|YTwp!nM z?X37U4?VvEkGK=?$FO+$90JtZeMi&Hsx;^CKzGq5T^blCy{ez>oAoMAv8!x4Z>S-U zEQ&stCrrdtPdv?OjaDq)=W`*E6|uXU!Y|B1_{nl9Saw$_^42Tn~K?iYT(ED8C0?ou2#8RFKsk#C%$(1ct?io!A3QiC^puokYC8HB;Xx`*dE-4{*;im3f9J(Gn-&5tpN)BSP?T zE5^~p6rB=?M>0#9P;KbKh2}@#){0>>U)^Ip=)v)v7JFOGVC2IhX3Q?$c(2x6q1!?n zLko}O$irjtNyXZVyn#0pV@F7Obn{c$>4k}^lK9xNdX@8Q21C)rekV^NL3$d$>u3lR zzg?HSSiE<;yZ)DgVypr>;ti%MoYvq;f#Kjrz~AE@n}%_sNNlhBKIAJpDYw_h7Q1_S zRtwSqp=%GiaQFOZ2bK)L1BBj0Yf2}1YNwPOXjO7-#gtCisDv#Dft}%*DGH=Gxr{A^ zIkj@K7A$Bd-VA09 ztu})bB-q)0Xh8@{LV()l|$ggIure!(vP{{J z9F{0(>ifI-^EB(o>vE*e{^5M6!!bYIPjtD#gGpK+TUx^axW!|mK zPA$`6_Eg0E&O6a;V~K-=XEs$1U{fX2Dm%%xSW3W_iLY?T0{$VdxG+QI z<~wq#Evtc+=mVV1W!j%6I-s>+yV@{oe+FMDigh>Wf4rT4+_#}E<_4`yd8blpSGqZG z(_C_3{+So$b&sv09bAj5mH_92Dw*fTHDjxp+OZXpy~oBR4a#{Z&sCiGHV7qzZ6mBj zRk2}?@n$3YNn|#Tot9^6#35=)Y@NZop@&{xo8|NGR1AqGAMeMJI$!c3mZ5(Ustx3TGfG%C$*<6%>A+3h@ zCen#whk?A6pUQZ`wNleTFhbv3yyO$f;{BX;Xclj{-iDq?hoRNW=i=gl+1oARjx6p;JR+!{q1XD=(1;})nUjx=KS=M`43X6O6oIw;40r$Av}Gw7 zKMLw>tbi;@ZUc3gt#@5y>UmO5B)Lpqt$TAp1J%Ir#0;{);rxZ*mL%pn2+7 zxggT@j+lTdh4imp@S~u_#4k(N3&KQhH3O5!kjP>&$Iy?R-so$*0Ul5RxU_C^%a_{_ z!>+Peh5q?BrvMx(iI?=zgzz+g+R8PpPiy$5Zu#g35rC|EMN*CmlF8Nq4|;3)DX`Y;w5XObE2@C^bcy$$h>r2dzK&e zdfKS1T-EwU&)#YJPPfTdW`qD+8H<6hi`^}JSYNrNwU=E8EeHGUgWvmd3SQ+ApW2dM z$LU+D3M>5?3HqSLIcgK*wkgRZ@JUdD6GiciZQNeZ-yQBxxJ$W!TEt%BXJFiQ`f4K` zE6VCBx3w-6h0S4P>2*?1|3a>+OX)8PQp+H4aBP0dS9tdh-i_jbR~+(n+Z)}+9cd?= z3E63}8TPCC8dQ|+vNsm%8{K?__T0>slE?G&Qn$en#9D7{l(gUKjuE5!uHD@3+U@3c zSIo_x8)X-7q!m|-Ig!Dy{No+njfm=kKvWy+-94@TqKm=EA1s&u&PUz*`9B-df~>XH zBtmldOA}0pwT$#hwV$1@JOc4kjBXtG$zD4XNMF@D!!P@SyNC6VQ8r8;vxxPqSmF=> z&g7fH-#!ijW(j&V7m;|BY5VSB=)^1apQ_0>GOdLC0#67#gQZO{%~}`Ny)TtQml++R z3@qv%YQ~>irh5HhGF?C*=;qq7=k0}E_d{h@@(&2u}B5w3BySoT{+ z?iZ_Hpel2>)rqeK5cnz+M@qagjcEn=0KJW}YpExoIPeEbp6_oyOb)Jwd!7+XFw~)| zre$ff((ln`H@+?DN?=5CIS3-TgRJYcU>)_PESY{N7k08@X3`jCk^8B6oqd1ouT_7O zGyS#VZykQgr}gz4$RSIJFRRV!>j5sZ&eim4>)pDk{j3@Kj&~zsm94}r`6+bW^Ltl~ z*=P1|kOpB{L=BQfxWi1L#1K@_q);*If*fj#$)uR$zQH>3tdbmD7M~gWX#pz@Q8t&Q zzX*e6eMkZQKbF)cJSBpaS{Zx!;CL6qz&*p;e&#z?L0x^y|5B(S$X}1tXO`N`V5!YM z(=WAgVg5SwkqJtch$>=fsvu_3v8tgiZgmr&iK@U)H#5e%v;7xdPnoLg2ZMF^OSeDX zh;)1;9qh~S3p~9xTsF0ffEhxXeXtxL9e50OD(hmCFi`?WlcEG3%BXFGPwFMp%JoJt z?g~Hd(Oy^HpW60eIOwuq+*f_ck9z`}Omg@OT(sZ#i*v`1ILq39vIKbD%<=ukuj{Pw zpOYTHohO;40eQVE2oxm;u0D+=gYp|w%&6(8Ow8jjKcEBsfW~Rk!kCBhr?pE_k)iq0 z0CFN5dw~*~BQmu2>*$~9IL0JAzb0uN`?yduag1R-84a0*oQVrfVu~|yj4zMV zm6mxJ7n-CyVb{0)HC#U|rb&J=1^grq22GFC4@6J1iE=!j*LZyb^0U;*bU)7mI#co|N5~F zpb{%A8yE+k4ATar;%Vhj&4-6>&~ct^#KPs1OKlrtS=jwEOU?GgipgbUi;f7;0O8GY zgGu(upq1|ey^j0#11O5!&)$?+!w{FC>@^PPro1IF$FVcD;W)5A{QYB@EQVE<=w=$#E& z1F#~FiQ)He)d1!PB63Qe+g=@5y|SkFFyO0myzEQ7Y;Lo-kn!O(-Ohv87|@AX$mh3O zqCv-pXLo$04Sx7Z{X1Te-SIch@GYfDww)Vc{*0HGm+8*H9C>MWILLbs<D2Og6Ks5dHcEgd}_kMMB4qz8up*AjodM%Ox2 znf2AnQv0O`Ih5zAO=&%!hllx#Z2rVI8jIB~4)uU6zGcRo8;#3=^WQL0!;(M$!n%H1 z-mF>Jr(*&SD~?1RO{i5{$ATsWq{ZII!ox^H9A z=@5O1ngZRak~z11<9m^#R`CC|?s4=d3NX6ce?%xl)&V7ZdpmYe_V3%vrG^Y~AAi~M z&uXCLv1N71v5h37)#tT8dY_hOeWZE~t3jH@5K`8blbOcq3!D+^*IZ{TZf`;{uEM?t zWKZ-xAchi!o75qUYgG)1h4LBPT3vu*G*pu7N?zG6l%?%p`U(-PvKX% z1+%L-nZ7vJ{FAed{wsqR%Hj1QJo7iTo=X*#lm8wrI!W7_Ja;`b68Kts-L0o*sfvra z=xO)!?&;}j?xd!RUqdgadnO*zi{d1!Tq!n_^dHT>GMoJDTgV_5w}4`i+bsVedRtK} zaV`ndN9DI17E5*rmAWgfW0=uQq$}yiS~49o<66KaSLj>j4MrX(sEhy$8y8EU0-SJ4 zU3z`Bp2^yp{5K6#%yF`WvpA&kI>`5_()tY7){jrq6|V$q>t**X?u17p+B%^tbYCLw zq$0iIs_{g5{nsq2+$ay(tsGwQiFP~v%NVQ?|NG2@9}pjD?px3o#RAh z_R06PN4i@1eP5)d@V>nwUA1<9Jf@J}lLx~Y;vSPPl2O718(1Uq$j5;#as7h~CH*Gy z=3Bfdh{`Rn6grF)SMdQw$hJ0dRuL7X7EGwf->`ghfqssw8oYk=2CDQ7DT>?*6D?Xk zczqOZfWxLNQ8i>{H1bjnt|;~a)yC`DC|OfrM;~S6jp*kQmQuA{NFf&%v0;^y5M$E>c@g5uqV_^ zoJo*>I+kFyd#)CPGd|)L`yto!ND2CjlPM$7_=d%42Z~ zBb|wlAihFJAIHZ{{%}Pk(%Hr*of{(YS^QP^u8dcL7gCdg_B^oOZ~^SpOJKv+v!PTG z)PmAJb`TkNM{~&a!yn1pex>{ik)5F?;d4A``e}7$Nvvbxth|UF#?lTg?~-5JKc7}Y zcy2{>ay?ngrhHJnosu899HfR#xzN`VR7DBK#lB@jfSc z(V2pw!5=lHePRQ&ze3|B-FO2snQ60;iY}NZ|9x`c-lH$FG;OPzx^R|k3GGAr+*vf2 zoLAvSP7wAn*qb&`^@jp&?4kA60xA1iIwqj@d5Xl4(ly8s_fW-x}Q zZ3;r{p~V~MyXKoC`2z6VS*BA8kPfyA{1q~RpA9_h*iWVRB1W%xR!YOB zrE|dO^whq90De_J)r#%bB`<@m37N*$g0g`5tb$X5Rgm7&%$f3$&IH;7OR&@O*pf3! zn`Cs+OX3Rk_77N|Qlp**V!i!4beqT3v3m-tN!(O=lTGw$;j5`KR?=F;y~W(CjFDt; z4{wW7T9iZBTgSq3ozDP#a^MNaAkfq_ePB}@D@C%qW)>eB-6C@A+(|scnw!XRnh_a- zXi>NgJR>*&zOt?3Qrx!K?#y*^=(LlvOs2ExJn&)uhWg`*pLZUqd&%LqAXe=9G+j&6 z)QDe!i`B!_^92uc&8YPJRwu40sG&$;*CVu@7}r!8fQi&4d=vPC!@S5UF{^UJ6F(~S z!>zwo2d#Qrd5)eph0hJ4?tY$2KvQH(eynnL=qvB^=|UwKx4XT$l5cz#rZ8JZB#T)~ zEr>goL%EI+a7*Q2;A)QRJl_ARa@X=ppRd^XPG7XLJ95)GtZU(M;^n-OrX1Nv3S6#1 zAqcAh=&jlKMHNZh?k3iz`cgOAP^&QPFPm6^u^r`D_RH21ac>BgH7J@Hx#-Ej-bRP| z8U$)v#AwYd@Dlg(WgfU9cZ`&@Ob#;s@P0XxFS~y>d6NDn$VyBpNVK9R_e%Yl$fJqZonnPIV#7Lwr&P!xf#pd1FU}2D|%fc^VGAi*SqYYETjP%6Zkq=J~weV zm(Oajg`j9GlEiklU$V&GY|=Lo-c5}L;Tfisjrwh{tJHp`ph5kc+??B_+NCCYrO)## zi%+Pn2fo0|I_xrl%ltx5XRZ_TXR)5YJW}hKMHsBj`QwQW<6-HdE4A{+C&_pc-_S*q zn*2IV$c}6thG}ajj_d4#)uVW{8Cr0AA`CO&OJA5(m)J)pAaY|Puv-2~$>E%+i`alS_C$<$M2JgHk% zd5MXQ7z`^D(HYRgW9Z^$b~e-{zse8GdAkDBR9dVE!~M!MZGQQ}jm>O91ujY?kY;ez z5ML!Ba)Wlj#X7F3%AzuD;aheKZ1x0IU5f6d_d}CvDV}@ zRc5A*{?NNgY#OFM^$y_3TmlfhEu0aDTfnGv7+tgr`CrCLVB6IcNX#Z zQ!dk~j8NP%R#ED={F4EzXOls!aWZ68d0_n8WyictQmg046EFs}5*|W$Tb6W;S;LZY3+EK2gt1 z&qH=Go_FvjFrG5FhBQOImPS^@#idpC$tG5c7av9NjS;Sc zC7{Z*ewo84w7&2Yji_zrXb&ABe=3u@aPA?o%9U3gAf{BVbx>u#^vnorJK75KS~hdc zYRmC;THLf^j6}UzN7o{7(;b~cSzz91X~3m3Vz-vs+Qb}Q$Fzm@q~UX0=VyIlC1flg zIE{-mEN`#^y?ijHBaUc{s3CxZ6hON}Ey0zI zBU%S@YgA=pNy|J-M}rd8fF%mJDss}0Iq!T9vISG1c_FKMkaJStx;|8!kgKuBnDfc!D0nyk!~Y6!3tGTW}_OidEt|Oxel{|^1zlW<&_6s`JM)Xt8gB>J>b0? z6n-;%0v==E+n2TR0}WFvPY;n2uwrj0wHcDchAWKxJd)l*h-a_|PHVfz8;8q66QFqFJzA*se#>q?t~s*-`3Pa4;o zR_cNj6SsPu7f@B_o+CwZ(6)|Qh50QPX*W_a{P-u5UvR2pzYecfd9U-Hl*eR5O$ppiiMBRQchiKH(+WX)^;o?WDHH*@bF3F z5MlbXFHGt(cZ57(ic!n3C|RnV98yfEM>0#3WoGychQ?RkXyGg3)TD%ek5{*K%*J}F zQvObI=yykE8E+q(relfP?|wco-d?t`4BwzIpp3bBHWsUEq}j$P|0UnxSl?i6c7t}< zgu+_M;ok@wn5zc34m-G59gv659%2wVgTX5A%(uyYP67FW5E~{?T%7^3K5Szz59Bdn zAK%HeiE)$R*J@vZgh*!|jK=zibbWy2_WdNY`?0f@JnU~A86e}^hUwv}sefq5cwg6o zJ#{~g%v=)a@7?ab!_g!z(LL|KQEVzTBXgZ-Lw`Tv#|KLVFw=T(30GLO`~AsYHwI^I z@EzTH$b8F4HuvUIfyyt_>RnR3>`tpeznk1V-6_q!^Htp`fSS_pOw*ljGXC_P8r{*} zDvf1B>T~H|GKKxU^|rqCRHin2#esj|8zTh2N6x-@NnY;v1F zM<;P(UH0*PxgReNKVB;(o{#ggKmMUUJ}uMp?A(t#!;cfe$1DGs)$>e!Tn|zLu#e6C zczpQrgy7>FvOgZFk1yt9*9#}ikdmKQ?PrGT!9{HIQb`P@UXd}_U@tsvRN(x%L~8Jh z?o#vTv=a1XTC;4Qvy7y1Uh2G__$KdffmDkjijGwksUsd1yTJcNt75IxN?hfZnSWtY z3=OUU`-KW)?qK;8hOA>16z8|r@G@?^ zp*s;H>FhYvC$812o?)^v8)7k58FTr5H)$kEeaIfpoy+um| z$Oa2$8k*cGm|^ZD{t5L|<_k@0JhSYi4=Yht%P!4x-HEo(5>9LL zruD}g2J8^1zEHqwLgm7dMLWz|Zylzo3*!jhyy{d{yb5&2W4XBK%Cz2nWsy2ND= zM%KQfm;|IbAm*Hh{Pl%A?YbNlmc6E@BqpIMFE}AFwlu9rmj!xs2^-Q7fOCsG=8YII zcb~3ht>a*_+5FI2nkv_8=(A-cu`JRo6=`;?YV@K|n`k7r6#uI_im#d{m3SXdZRLws z{#LhBs7dkV?74|O&;K^pR<3USj+v!f-CkFjgGVZDOP3$ipUo6Kp4u6a&TC*&wg9%e zzq1legNr4m7rK{Nf=U=6qY{O7i#A3iq|Cn}@rMGcU zGg_#0EBTGgyc4r{KvQJn6a5 zJ%q2(BDi7m9j1w@&1;0>h#Zy-#q13JDz%C0<8%m{4YbvF@i z!}Ok-m_#A}1t%uPW{y=D8BFhCiLr&6-UB-34H+8J+ zO;S3o&?YU;Sz4xZv_jj0-Th2Bi<9$-%51)i!ufvT%J1v;N6mh|H~aantK8fgH~o5( zQu4(B+-M2I)32!dm5>;o{l7uJXzfYHTL_C#ia`4|y7pdhecNg=>Ws zf~0^Lu<3{i;#FA_n#1x%z=QQqs4=-&QVJNJ=@p&|U_)BN0k;`H2HiW3BQorKBhwtp zZO+%zxEbjEVlivdFMXev(j$BU3(NGmAYX#X-x*7sX7kT-_F_O+B#H!k&*eFjwFDHA z&Kdj&{5e=4fp^WuiX&cn^c;7g1<6R8XT!XEKOOSIV_a1of7hLT$J=IBz{6EPkFz5a zyM-1bi=j#!sys&_te9fvkd6W%LtFM?h3q;KsOqqxjyu?A>BoFo{M`E8Up_QTAG5rD zFChMSa3COFWs)gmvqX5V5}tFvKO*~kCxY`b7A>sYjRj1mmyx1miaj$?9Jz zUcvXL`tMs}I`s#n_3Rb${U8j-AhU^Id#}vrsAXy^Kv^QtyZ?H<*XP`k2g>qMdrO1% zOzyb7xSu)zN=@4b{{Dvta6hbv@{uPd@83l@jm&;uXZ+Bv1?T)Ue;q3;qh!EOG(4F~ z{-kB-s#^BzkE})kt|gJ+eY`?F2<<|<-+sP~91H3}5OByLz_x0*r^H(wWtx_6E{P3Z z;~x6gKcH~DbTC!Ssoi6h4JB7i4nvpVtSyUSe9iQK{ItGYf_9mS)EZMAm3jH>Q_;3g`oj@7{OhvwKW>>`9n6+Mg435=s$+q?(pcXjEQP*g^4 ze1}dwKaJcX$0twAc-pb!pvaBN&%ve~H6U{1ll=66!~n!f@M=MM-*V*oU!)(W&iDLq zTPXk5_yjp^!m@!BUc&bhf!7+OZlgtVf!WPEktqtKlxIfNKa}#K`wj61%IZ!J zCraaXU#GR6(P8|Ps>6$)0yHanlTt7&;A{5o`RX|gP>UlU4B@H{#=U%!8o=A8*N~`* zM#&e(8ma=S5w&E(8`zibf^Coyf&<3-mTdA%^YU9tH33RR^kY5cP>oQ#L|~|2z*tR< z)3bQ*Vkpx6TBF7nIqo31sfvB|phtLU+?8!K&7eXYjJ z-zIU%r@0yE7m}~KALD+{&)uRUm9IS6T<3K`-f731y?Ti_dq0z?EhlQP{Jh49W@~FgFxnKAL-urUk_4>7n&ti4AnU>}Enb^h= z2_U4MH^8I|&Z3;373!bOGOVS#D_O{0Pk4PRaT=P}&1Xv>Oy!KM$jz!d6z%vZ|8euD zB~FxwG}Q3^P(;)9@inqRsD+?00t}JlYW1yOu-SYdNodk)(CK zjG)K)p`%O()F#H#>NSm#y`$y2fq`zHM62-klfNC`)5h<%Fkhiw+_R_AeMaA!m8Cn} zWxb+1XzqONFjyge4cnp2(TbxE@gwr^=J(tg>RU_r(y%MXbWvm^PK+f*>J^mMu^?I2 zmy^f%D`O{BNa}0Kg(vqEDjL8FOY{-xj2XAQrm_9^hLDyUTwK0X9;c2mmKm5V0}w^< zC0p=W36HVFcv1t?0WS30@kP1U)W4Bgk=h4&HFHVUv%qfL5mSjAULn=}P232Qds{v) z5csvUSP1G^#r^Ko{SoqO?FJV=Y4W< z=d;VA_X%E}FpP^QYm`B=85kp982J4IC#Wd$dy&2CN(&=5Tr?0v?^k4$U30C>JSP9vR6b(%1|&_Paf3tjRZK zw~KVUY;9!nlaXUziQM=W&)R!} z7?e;};9j8DfBJ1C5d0SPgMz%CIigm|gwa8MTCC?3^TJ=jG${{Wt}v!+@RyvEe4 zDA=CQcI?cL-1r5esMXk{<(!EtLFaC+C%FtRBzv$L6JtHi#yd-2;7`{RttDEvF?$me z+9kzr4g-oqVcC6@elX}cgG z`otaFn2}*CBl|(Foo4ocuDS*bS1HU$EyAEc#lGkxVu_3OEkvNd`mga^1^Fx30HBS} zM5rm2bHaW_pqPO@mfqG}k|C7hkvc4|vewBzIavB`oHt0Og=qaAPM zt9~DHF20>uMEn)_L&wVe!5g)CF;;)t8@w{#wi?qtpdt~}Ns{1Xu_uWr) zQ~stU?#xQhVGkYdIqXyKekzB(;ckk>!XZV^e`krD`rfb!d66j&65bpsd;h)2ify|` zCU1W)GGj|*>Kl==RjEt)!24_Pgs8|vHc>I`CJ|qz?s=dPhwHoFeAj4R!vI3PIGNXG z@7h!3LJ%>+z4Uy$pX>prfN-OpaM`~k!X4T-B&(GVQObf=riHECr+W%LfW%Hwh!)AN z>ucyk*$q9MX=tyop)0r-#2=MEFco}Dj7lbEX)mwp%SEdsWHYHYUVp)#q0oFxQ(J~U zTi^VZqT1$#!~Eeuqn8E81Jy;wZ?28}=3njwj2q1ASkhOakw0fG;ER(kv%f1{eoWrc z@kJ_ruVcs9GRFoX*nCyyu2saVX7mvaKnSDF2(e3p#h7*KjesEIJ`;O zy~p~}vqP^DlES%cORwGG&kYXd@(DP5-+Gj+Nar7+Q9i${kkem(%kNsNj($>h3#DoH zHvE>bg=c7$^bn$`*YT0p`%~|*PgDCBf5zYR{A#v0q$c}Y)t)JCNNo}Adi^Rnzu5h> zPUM89@|g19bmvyxVVBqZT92+Dh7YdO19W&Si8bz7Bw97czJY06s$d*3su|LZ{9YVL z?$b8@GEcAoO@guCr2kt>zzvR2=1!6)Dr>D2Sqa-ceD3<62I?U)QZ2XBmdVP=BmF13 zVd8Q>km@E7N?`#@*IR}};;1*#g4SG_ZL3|&WvTsIW@?!9C$Xg4l;?*yA}qMo6fYhW z@gRmk@(_Q!^j>;$2Y)pe(o7Av{aJqtH9v_nNOM@r843Von>mxiUmg_9{2ey)YPFr# z3@*teyMTS@ul{paD^e0Z2>pi0nB4A)vb&p<>26lo-GM=OQdO?nT}=kUCfJtSgL)In zil}+KxGEI{sjVs>3rP3sivRSxzxJp5(T;!ZhBPAH$1mKHP5KUl$?Jxi@q76ld*l~C z|M_Y9zwW4=)JeREe(rvO*$1*eMQOd^Oj-?CG8%Q!F-;M%<>3}kVkgFU6Mmr7hcF3U!9gJ($*aX_KV47q%dhOb z-5A=VTtWwiMrGOezPP;eqFQpW_!d zru#puc*FPlb$yUd0dezm`3f`VC-M?qPUjNdszh`CJeGcVmL49$P44c`ziuxiSH`&Y zc07U_#84K`_-p_DeE;cM`^$?c+LyRGw^}Bov(w!IHx`pEOv~8p6P*{~R9F%o9n?L( z5HL<(89ymLtsoX&&0G>0w%l$-_Qfs-?{xPm@%_Z9-~JJfsgCZVZt51=cq+8@b2Lt) zd~?^t=ZuIqlyp}aw}|XrHAHZgW#Af(QEulGCGj8Qff#~u%^0*F0%r{ZV~DZzL_y%{ z>G`!=zPI4FdiO(z(>;Ev0<*SFNPtmBVX)W+S5A-EVDRi_@Wc{Rfi(k7ykSH?h(;Pj zl3gsn5SYKn-_{S32i-|P67T~`!)CgEChLZ%WUv!Pla{mRf}`>Cb1!R=6<}C99~Vn4slXtbtS4ArE+#D&LaV? zb;wA`>Fgd`VZUXbKEy9?@dO1-uis6~A;^I_LS1_m_D^{Mb4c-pXAYJLQscj-{+G(1 zR%gC$Jv{jG-tf!YgD)pl^z0kVOW%e-e@RS&GKmcTkaq+bmS}IMhD?z~;nH$RGB~<|#%$yAY3?qQK8*a)P-u z5#Y%u(%YgMH-go>TMiACS+&p>t%&r2dPX5or7bIWQ@k#*=4QqW^(DSRf^;i5F!mkmnKMXbr%{>fv_HP6IRC7Rl zQ#pe@cey);tjQPg`b?QWM`o(5wS57S_9+17>4{GM;!dKI z0Dqsoej6J4HI;SB;D;FFzCB9EumL(bycBsX$75#qsCJI-o|Exbp~IEqZvZmqZ>(>< z#ESvNqHdGlItcQ*1GJ6aGB&g^aci}fvAj}aTwk%C;4yMt|AHWqo%8h<{KDhI9n>nZ zSe3Oq(90=$Vd&p;rwH;i`;vV-sPEo(mQsKZ@n@ZE+>GFFK2Br{_AHYRegtb-9UHk# z9>0?6#6|c{0j;k2%7WVF_v=P}$Y4DWlwZ0~o@g>1mMwrAe5m8^w#Aya#VWV8Os-?T z!u+K8mZ)l!oI;$PgS7;Ws>@_E%}AH@Bp+i_ELG_^!Sa>}3gD(vxzdTs>f;|&C$1{N z*tvTdhdJnUyz0TdgSTyexno=Y^4>!a+fg}tL{;Q2J2P*en#wKn_s=;$LwP=BRzEPB zxUvYqIdkufOrp_di?1KLaAP!aZ6Oe^=dB@ZF<%=?>=sKLZRNW*Dfu}%NoR8}=O83( zpy$XX=$kU9@m$~f2pEI`>wb-$pP3EQFWCGaQ+5N6H4vX@;~YT}1le*dr+%YQU&h&k zXqmVv>zYSu3M%TFuPD$4AHtg>->hrytsnWpu5-~;-}Uze?3j9M!JhSl->h$bv%d1p z78=Z*3+g8Q+qqC-e9c9%qz=;{aQH>GjOu82tcnHetUA#=qB=1fcN8)BsHy;e$N_~> zrUM@oe^w2Cw`TDB+czx#$Dz@V_w%ENy-<1Ph{#=~{6cs}t9i-RD6tL#va zXo9q_*2~!lLu{&LYsc&Pt*@&xI~h;7B5NWK;qB!d@=xj#7qwXpt?nA=252QQn2xi- z->kFQolkmCtT5UK$edmGf<$~dfLl_H-(zr)JQr1|e5Pp$-9)#M^ za5n0tSK&=IM)!Ilb1D7i|I_nV^8fPu&HX=|KMP&|=P86JH9N{)^mJtNczHOF*K^bB zd){W4`aw9K>(cYN4>lh2x#-P1AR?q{L0VUBB&1G;Y^3vakeL`)!hSCJ&CR2QTGs8X z`16UWrHY^Gd90bF$LmVvQ(qR#-?kJG7V=UFoRBy~X)JQq8U-~=xUk(e<)Ya*x^}F2 zc`SeZAN0P06%rW|*;RbOMxV*0<=h-axQ!Dg8LD*X3b(Y;+&P_VME900gUi1{DI@LN z0VSuz2q%oGjX%c`rkqnMo&ukL8P`aW^4*G~R2LuluDJFvw5|n_^r58@+aD5ya$W}5 zVgW@a9u2q~iK>t;(rnGe|3quB2eb~Nv~0}mYnUaDF-v(g0wagtiq|)$g;%7jhZk@u z3g@u)D&sY?dR|G-S58Yk%a{1g)r^uLz{Q+hL-N;RzO8G%xRm&&ch4#vl4{Q*+59>g zl)*XYh@XzM!&%SQIL~36HI;9OowZ3g)Kq>H#uDI3hrLu&`Cb^i;CR);UaIUB`<%dz+!bA~`DjH3sKukIbGi`R6KxT;*clGtE! zb_oqw^Tnb5M^b-TPu6+fT&tI|^mDWSS|IAz6;d?Q5#x{6Qr}1W5`X7{=Ma8DoOt@9 zyp|Xu7iocio5(94q$Uxp#eR@Zs1r#uJG&}!biy*#_VG6BFu$4K9Y7?@_8!E0t5MrE zUAQU}4wbbiBLEjH%L3MR2Olc`MyS+%N3E{Xe0XPn2wkhCunUj=^MKt%PEZ z@f0&)*Zz%Stbd~!qt|SDS(2wFpqPglM|yn>s%775a`*#QT(A9J$W+SlAS=LAm4{fb zLwVX9@@oizmv8eg%h9Np_pq1Sxysw+JRN)gYXAQI|M~s?{+le)xAFA9?*G2%BS%;$ z|4On*^BAnh|M7X=w}7zBQnCJ#M`b2w?hH;^w)2@4sJEn@!0gFT;s>B`1 zI<#UNG$DgBeMIxeY>-iGM~)t%-J}yGFGl^sBHHDIW}SzUm{O8xMX}%NTIh!lg7cbf z1LvJSoi_Wp=GTs~x6;QodvuWC=A%e%FIbiM#JFDMJ*}R`-&oSW<^Ian8i_8JGRMtO z=+=Aj-AAdXG?>oi8aP2PQJs=|H3lJ~gln)bksW-ZF8+p%X;xg$+07iim34OW>3@*~ z*yOeXmOs0>$^GK(ERdcNymYB4$r6$}@8X)f(h*; zyr|k!fwy0aLH`BkH{064q8aB|Z8$*NUM#6 zL2q-9ZCsy|j|iZqu0~ON?|c<3i>Ajc@$t_ep2?tzI*+v?CTjiEJt)USA6- zlnPn>>rI;KzERTB`bvCrnaEaWSS{iPXL`utMgE1QUyvceMJ4Q9YcKQI%V!;068~rS_);6P0-rzT7trbbU>&1FoKo7i zWC;&YT^Gg@h~LDu_(0F7@L%<{e9a@J*@_V zO(;L5i-&#dvHrQ1j$K0^`^iU;9Qp@EFcR(3aCJI%aM-g)Q&k>mgcL`S$Mkyt-eUh= z%SKgQU*Gdwh@Zs599VzoVZAeI=~*dXz7T)4$NSapslE&_xp)r1mKR1p1+r~6@^+Io zM+wq_%@n4kUY^nO+!2fyo$GUAUSHEi{I%&`=Ym?w`d-gW$mnI+N0`rCvWvXToTK-t z@-=I2?YY5|b+dna=FiJv5rtZTFPZ}vTFNZtEO*}LKgwCJkKZTV5{IL^jCD;8eBvqu zf+f@yx|3@}1GEHX7foMj{e4zE=kYHD?|y2pzuoZ^`ebt86R)#=d3^umvqC+gB=dvu+TmOFiXAHwxwhPwdE8Khw z5`Grme}fw(Ln?lL328%TX%8g^ZdKML{ARos9W2G$@8Ih~U=&%B>y7JW{3GrTbBp-gQq<0XK{=VMF4wKI~smbO<7-+LBv_nwC>~zG~97#6pkmpS;bGPIDN7>nv z|8t0nSqGXd)f}TLVH5fcakh6$16@a=nYp3?%jYj~YY7k7SMGesBynbe&M%ak5RK=$ zG5%S(Tk)n84U3ZWx>hA5s0lZHr&zQ=f&^w|2$umnDFqspjNf#+vgZ@#muX+nmPaM9 z#DbV)%0PDu(KqF6Yi#VH!&{I!L)E?eh^Sh5jV73bqFr(J53k+nsNXH|KF8gJXC^a+ z$eWJtSnAY{zkg{tj zC4^eY@|C7PCU6TWLo7Krrop2BTJ{Pr`w&xnlPM*|{7V=_s!EA_Ko!Xtd5KU}>AClD zp7R%P)g!NxQ18K1l9o5Phf4AVC5dJ4X9a^i^Qgb8^|L+zT5tqGrno>rN@`E|2T00dV$}7EO*Ns zInUcL$Ne1YsxeBMlT!Y*OQ|l|ObKhwb;N{;#VR@Wu`>zvdyyE`*`cjfu>>jqC(P9B zBqpL5yxV#nKUlOwSNv^V-{R`hh}An$-E3G(-v;gCisZ~6UVVsgn2}MW>sd?l>9_S* zbt{9-0oG!=p`K;25l@6WGjjP)BAt^pfW#v)BqM2h?stzd*9qTks>f7*&;LSL z-1F4s!ct%Nn&Qsg7F7%a&z%*5FFE`Y_SqqUaAIp%g^^@#Y6vqx$ z-6wwyT6u%71lX4=sKY}V=+p`fShtKd@+cLGGAp5Ht8{|_L{~HTAind!WvZ{{H zBUlY-rIC0C0ebXg*xxm9e;Lp1vXnv`-(-)g%-~F;g)MfWvKr}9?JI1uBXlRio)bSG zwmzh$UG*AkLd2Jf(^OhsL6JH24>ZKo=gnqor=dL0*XMh_K0n~=4inHX@8$C&EI#Q z_xJU>o#bxl-Z+In-_}KP_`~lw1UE#cc`E_$tqW;at(B#8PA5Y&lGfsJ*NXWWBJMGa zc>?b`l=pg`2>8i37J*^nU|uo3!Sk78x$g_xg!lytQP+7DsS;kDsr<|(w8ZHL<=h8= zp6{oZ#4=2KO4@flvEZP@_;gG$a{G!!%3(S*a?i5D6)k&>-Vk4((I*mT6_S_pR$}}R z#=Irg@kt-&Uz$!Qp)d7tF{KyX>aALtpYjWwTD#D3hhvC3zzJdM|QzlC?t zIUJ<1+>7;6k#aPHow+fNp2SE|E6wAF@#UJJK;&&JaM79ax5Vfn>wGn<>X%j0PkL)2 zKS$d^mONb-UrqtL#GDbXN5uz{1An=Zjal*Ls#tPf3|rX!h&_&?1<4ZKN;H(argw}1 z!OOOwqjuMb9<7eAK0yO2uhutMSfJ)4Dqc~v1wDgvWp&DSa_DoL^w^708Z@?W%xm03 zjFwr7bT#|##J-S&S_ONGMlY-HT2{wN7u5Ar z;71ji65}#ceB+n75$>rzM-QhKDye0Hy~otTr}$}g645lDVulH(e#D~DDz<61==&IA z8aP=LUnl;8M&;I_rJ{tC`bf?lvF53o^7XOG=Ofp9ui$n!>o9GNn2gVwx!&k^VaF;r zM!Ghsar;=xnWDPV`%7ZY<23s#gW13F5ni)>aKGWlPIDX>27YQvPKDNr;V|zr{oFy;_=)9vAER+OY zQ*iAb3%f$J%o_U0flL&lVg2;z`DuF~sPMpDZZW@M#fQwB8EsOme3Etv_1At_C_AGK zC^zm`1I#lAI9UXer76CJ9hKdn3^#~#hLri8Xch$~)(tV{RnaPCdvd z0{YGD6U?Y}k*@KkKWvm@Ue2gv>G3AUSr!Ipz{kuc?1%;8E&AE>K*0APl@+o07)sea z>xLK#EkHM>v|c+uzX;(4ld5f$n#8&2*L4In#Mg_NZg9PZEcR$|ew{)dk6^g!vF)Ya zt~p|YiDGKvAj%TAH83NYM;c*u*80_XM%L;){?+vAjC5&91S>T0C*|DpnKXlAxi7Ih zq%`EWfbmt<`Ej+0sMh#fe`ZfW@*0+WkeK#8pbc7z(vr2Zo_k`_45lv5Zt!I-U-j@@ zlm*WZX(`>x4VhMUzT!E?R9``(!UvXTgmNL6uME~xQOSX{(V6w2j0cE^7XHmV_j2W> zmxNK7XmDS`)+V#s0fPO$S@(6kZNPW@cX#t$>Top};>X{=!P;XBr*@MIn`(y3rFLni zApN*6;11K4YJ{lan$R;_P9WtWLPkT+A3a?0Cndr?m(hAEa#4#}Qenzi zjQ3cGss0SK1q98Ei=tW2(5Soj70;8*y8$UsU#?qJTdpd^kb2;lCA4m4n=3J0P8KR8 zqmqin`PAX|tm$OkJJ*vDIcjO4GehJO5~K1O17dveWlu(zi;NhSWd&+|`t|Pb`9n$C z`3nEJURo_$^5f5R@zKU~7p>ER=BEVBSKwhkcUOA2`UTOKTD*!D#rH%Ix^51xJ>5*; zz0`qx51sDIzcv-F(40+vJ}1>B#|<%-$(p;mY8Ru?&Bn?Qjy|1V{!vbq^x|OrfnP=E zQDt}~{-(8~pKvArwy7)4Kl54n8M1?(7y6;)SM-z5@Ih*uyu;#}C*oT`({I_+>Nst6GqsZwrTT6b5c=n|3$~>7&-MoKGO7NH)IBaE zf)Mrbzt+cH7(0r8R*1HSJBPB$nRFlb@02j1pBjl>@Z%?q4fm>O~4V9r$(fZE;0REKy>UF(5kdv znFZ6nt!2}@45$0!Jx?2)@RoM9q7c!(vF>qZLq+!9J-i?O70)YC@-f*uQpj1Q68#r!c2SR_DKEq zy8Pv_MIY%ha+78;iuED)ew%K_|t{W~_ zL3?T;-B{qDJ!PqGcGo}p3XfuoR_H@A2M-dM0gPkp1sk9pt>+uS0kLq4b?dLQUaFue zdy;jplzTb+0RL`DKYwqw&v^;YbFcB2zu3e&>xRO{Z%d7WS7jQ+Uzi;D9iAJTNiMW^ zjGwW3&6_?wb?&p-U#NZTph(A?3^_U(I@q9c}VyL==YhJ!y8&ojK!&!i)}}c^KvO(6AL4IpIKO2 zx$3HYa0IK#mS3sZA9t?&4#Xawe^-w} z@XMaZGV8V5yA5(a3%--TJ2Vw1l+RTEmc&{c_w5W&E zQ%gxf2;{v?dmgww!#;a{W%kNv_7|U15<7WL*;Rbi?M~>|VGym7|2(_D30eKg2HWKI z|J$F_oXTz!QhuDlhQ>1Wjv^2g%##|8D#Lt%n&@^$%Y3KWl2qAYIk_BIByehBBCk_ooX5)omP#Ev|per z5@AAI9GU>mWAQ7ne9vG_A-e9d8xwfzO9WRvDb~fSNSfy0tlBsp1ooMTF28DSkZ@pw zx|UtDug&0MshJ<0Kz0+ZmBPSjV)P~f0+8l}VP@T!^+K`kVLlW)3 zqZ6#AH0OR<-Re`H(UZVdyF);Dzs#-cxR30ggY2(G>Pdm>^z&!*I-Q&Xk4G`WZ2F1E zG$WC&=^y}3Q(?K{+4!=>i}PT`Galm%@|4n4U!eDf^e25_dTPQGp_nRCz z@mbKyaielqt=>dq!BVQSPxs|h>GN`cY3;fzjT`Z6srV!>7pHpHW{VnYH}cTHy*c6$ zO=V~-F>o(_dj2HEkwX|i;J`(<5uXb75MqAdTRMQTgVXpz`SZAXcWc%O?#l=M->kg} ze3ixZ{~si1)Zi0jF)C=Zu?@-+Dkvyu0twt`(8wAT6{{jD71RU~w@4D;_IfS0)>>;@ z`_;O%eyy$6;)Wq0i?{@=id(_`xuSwA;6ncI&za}B_eluf+TZKX>qYJ}+nF;nXU?2C zbLPyym*e3m+4G*~h3SYTWKQ4j)=GqohDAnP1kXE{j#!TA4&8 zx-^6pWxCSvZGYb0J`DLCh&6B;Kf>4JX(1hs7(y}-h;vtn{k0+(Do{(`1%U+aRp3X7 z65T4uIpa*30E#b|?o%=#CeSPo@9(k$NnBUpKhi9dt(r?9N%nc?p_fP=(QE`F!O<*L zhT@miYkW?-aCQSsFVr+(8n z_1pKrqL|Ew`DC{$yqlZ%<_1qV@6)x$TQ)Dq43hL5?OM`s42@`Q;i-thYN!No>l43t z!`fE)3zQD`yYOL@FYPd}l7~Ml6W7sKr((r@R!#+~E9nmVz82fIp?(uC=pU?unmF(B z=I^bKPP}wnuc(UnXkM_ry70;@uW^-iK&Q&&kY7Vq{~%>SaNx3@ZgwLif-jDsTct`N!^K~d9y0vEf6KJQVubP%zo??00A zP!?W=t|{zIu>%W zJ>n;&`xza?M^}9KNyW0Xe?CtCtuxx5FKyNMCN1N9;z02ks zg5O8=3qM1}wjK3HZlEg0X%hD{Vu^0-65Rf?B7wZZUi1!{!oxaVgY+2nJMqgP`wG`jGbA`RLqC=?T1o>cDS^(y14hKmrbIA?Nq zz79x6g?m`Dvhn&fV*OL+WFZrB(jciNJ`{OVB0Q!+o4aM`KQKa4$&9|Qc7(GYiY;F( zd6<)4f5IU;lK}kYe_6k!>)&fLYX$uh;&Z^}hx~;oM*_MKcbeu-n0g167gO=EB?S*X zBzh8R3rk57qys*@?!E7P(WLa(2H`WA92PO_N} z2uv1cf6tmzQo2MYO41i_)SX`a^#-MX3wi5&0;`pw|M;S zYc&#iHZl)%I&dwKSyaXH``0yY~Qv*1Rl)xamvq)LuUJ_%ZU$W zyVr0a3BfeAI;@{7QL5a%S(obqewR6K$mo>3#*+lJe#JBxmbNJ+neo^t?a|Ps)(2EI zR7Q=f$StI$IVG;xKZauyH4f3NwPv`(eTWv<-Z)N67$W3AIi;uIGV{^#pE*m> z>*iCI^Xbj^Ydl^2S;QObbwxK)v;+R@5}O5A=i4p%2*=04=_UA5AiCgQ3XY^Ya_dn% zf2DLRMt^~l=r*FrgL%9|OIANLgT=xnre+6e@xepm*c&gVo) zOkS3S^H>C!tpySW3;ac`jtbaFQUepNKy=&2-(A;+XszNbK?lCEH0Z#uz$EZ@C$h)a z6ayd3S9!j2A-8ej~2mPFh44tYr@$jK3-_dF%bpCS{7 z>I0Hp`a+%Q{U-9_JbbRE!{1~7Ni(ZegZ7+@srbTw{%867d<|zf%n|wf$;XKo;r@5> zcdrb%wETTp6jXcpyXX2g^7n!z0bg$?e_xW0U)cel|DN*qlt=!9{9P>q2{}|m{(kT= zM>zjk{_d55ke0tM3rYv__Yc---h}e^um0Ia{$4;ZDu2&WxI_8dTm^q=OO2fon9@7X z|8nRKY}H_=EIPhVfZeE=b+s)#I@dKx+lJPU!DS>rz)SO&y=qGR)=%$7(cTD$F8rcAnM; z)`D+MC4>G&hnZz!`LGW**m??!H);~&NNM&O56afcIa9U^KSftSTcxv6nLJD3ZG*9i zT2e4A3yS;|V7y}u97N|J^HF3r6WRnC$vFVvm56@|0RHxPnbYM%XE45t%Fd?j36+Uc zhgJ+j*Ly4?Hdg2Ksc|}X72;k9c_?hz0hz#$$G)v(^Y>LtwH3Ef(hfutV7?4vXEOwt zXm{DrgbUFDqYJ#BJRRnIy@t&Ik^Mm^L~@ksybi_DF%FPDBI-rsquN3^ z$>%7MEa)dd$mSopo{L}1(;ncz@M80y^^Ik)5a<#tP z7HgR>=1*TNyqD0O!n**xOT7UlAl}mu*E=5-3EqAc;`^(UoZ#CA=XpBc*%fC5P8$(W z?z(V^P#z7+^x{lpG>3ARjgJ`0QEXST2_r)UTOpd4dWgOa9DA3+aoWGNds( zn|E35>L>XX9V znMreEaBxN*mMX1C9!nrsC{venp?ay^IAg-DDia(e1#c{M2Gyh2HScr6`(*l5ct5n% z@GdWycYp1l$0mN7k7pIH;dcxL!b3TRy_`cID%8z+D8>kMfK@3VJ3&uCE&+%)pqv3) zL3enKOT_|!WpeHxscEY~=}7xunB1B(Sg&DkgG37i>4pGOp+Oo|Fz=GunStuv`K?d) z<1Y+?`texTkAI`T(*1ZBK!bkV`yZKp{Asiwt?!(Sl{VpUasNPe2>405f9-J<_>JV3 zacO=-w;(p?l4$$<);XE(x6$CfSgZf4Zqf>DY6Vh4$S>nBh>mKWQaAqSNgE5zSV>-9 zV=w-WP0V3TP>!VBn2gq#Z1WR9V@%8=Yd^AyFY)dqZBF;azG}4FQGfSPrZ4`jewPzM zyCS#MaLEF{VL&vBN?okV1AZ>X1FyANtAUa^jc~o{2@QEEs9q`vjTiGbmblW*(cjyU z%ZHh`$);Q(6>t-;aX;f+QqOIBID+lKo-%x7EuIAE=_Q-(o^ zuPs_EVi=3H7;_ZA5$01UF3gubF3d-Q`9C?;!=EjGxiaZ6*L?}?ts~6vuqgV*486wB zfQ1eNRm{=WhRgCQ#pvH*h+K~kN&MY-isRgsD)5|< zy55Gr1omq6pC7IN51IO({9C5}pAs$d59kMRmipl`^tk^ej-afvbphO9-QMUw{s5AV z?qrUq!1Tpx418^!qTHnTtI$i&N5=O)V5Lqo@Fi@?Y!NZ9D7 zIx$q!ktd?7kv}$?#ek;f30As(htoZ-%gRu}NAOK8COVuS89p&D+P~>`FaKZHZU@ku zit3C`yzt&2$xXViC~mcEalPVVHxX;F#D}j)7l7rbu5tx56xNMyE}Wk!u+1MG6iDq8 z=H2GWJOkmyWjUQJuD+Y1S%zi~l(`Yu+R++b5$+<*Ey! zp49Eho(qsSMOlG-W`}MjGJYpmGe}h{)rK7J5ec|RTih{w0f{+02TY9RfJ(w9m#q?) z(nBq=zAuM|Q**Op!**VFd8|`2Pp2;(BDzVA%#LA9!o9sc`~&`?vzwE3AFu1?N5s`m zE(j2ux2M-IS?zUo>PAvnYaL*;^~~o^v#dxg%wpDs>}mdB=RcHL${J$K#hU29^y<6T zB)S}4| zr{8-Hc08CY(U!78;GwwdNS7J^ z&=8Ete~dlGMwi30e(!_+5nynp)tikRI)AQ`Jr535jBYfXh*{ZZ&=)Sf`Uq9rOh zqVtzyv-}-0JxvaoPo+fd`~nk#dh{!A6HWiP_ZAtZ{rEpUJ91EUgLy)!i0>d_5@VEi zRxVDuao5fNDLjKSrJ4WBy#Y;E9T}eP1QxJqG`+^ZgJY$P3f-fKiviQW`XT6{$Fr3X zF0-dcp;z=Y&bgO&@+SD+MC{afkYo}uJQ~-d#q0Hq*H;%|MxCU$_IeZs$20U4w74vm z__1}VUw8q@D8k@Ar1)RX{IK<@0_ye?f1&l-ymQq2*Cx6k5xOjf^X>eTo{us#ut|o> zOL9}kGTr?zQKT6CGQP$YIqZsD@GjD&agoM%53g-y0UC|$&9WUJzhbr!1F)h~-Vc~%=ODIzb>6(f`pe<{{-416A^)$aWun}Tc7>Lf)vf`((`S4! zrb*BMh+?Dv%Wd03C2q};;pH%)$EiYK8tpZ96`6Chz}{+xCzLR&Y!r(9?%%2T8~w!g z?JQiir}AnKhi(O?AUD$ko<_9G@oW$M_n&q>Qlw#mu2^>%s+;T?gM@2RcbXKs{-qrb zn9PxltLFI2Q99f1#`P>)+?!op_?KWRv%pzD@t7Ip<{xpFBMFk^VaG_2w&|$aYd8}M zbiUTdYo!u@4@!&V<~`_&=J(RS*^BpWkea z@X!BKf0{J=9h{py2v9K*sZcYuS^qDQ4os3<8q)P2Z6L_R?{eJ@W94aaa4_f(2Ty?D zUzZt!aqqnBRAdJ)uN=AM_@!s4cyc5dlwza1hri)}#Br~YAfqSJWON>iLoL#{m(-T} zJxB<=Mb}Y0D=il|Ay#9&Y@K8RF&E(xiUOM#1ad&?Xh8TkFgr6n2tQ^$Qk@COUVnYzWWgUD z<>zdEA>3~WP+(`W`LRro(x3O;5!GjRU=6b9PeRU)tZPq1n<#6Lckd()TarT&*x(|+ zLU!Rdum;(S>VtZnX#Uk5@Vi%pFXyi>WNK$TgY{VBmmIP9W7gvfG3KL75GukbO{LU0 z+4wES)-#sCb{r89)y4wyFmXoacmwyi>}q}GdILvhUv?>Ai%d8P)YKC+e@r>bGIuM? zr81$7nJs&P$%g;8M@2)*skG#XoBqJKIr^lee2bf`hw9Z|N@fv;)?fOTs61 zolcPPz!9IKdfvO}-y;ADsueAOGRltklQtEOhZl=j|mZpc4jzWw~O?p)jIPx)ePYuyv}HdmI{FrLh8&l;TbKLl=BKY4wf z14K(GR`onkvx!kqLJPkJIhJ%_x#Z?&3v%n{QOJFF2YD+1+CY|}u^?yh3sV|f#UI2N zZy+yK){{9=UQHJj$(FX^VxZD&$9R%A6gH7=#N&4|tAFc+v~ko}>m=*4blhPU*I?b6 z9(1qqC;0*dA+Yjmydu_~j5`=joZt;)-|H>R$!&`gch98o9MN+3SPdT%pZ)EZLGx@p@r>8CX8L-)vc*iA0T@p(a`@h5R1rzTR{w5P|ui^LB*b&DP6xZkyoE*7(eSQhV zr!lxyg%O{(azL(~-C_e)JuP-rb+x^;^k@BxE&HZ3xAZp{hy0QgqF8eHo8-*$m%trj z$sQKK^-HpFgH5r9!aGQnXQ~I4>+h(iXk|I?WPYVc?H2WVG>a(;SN>HzsV|9Z6;Fj< ze!moJM|=~G8JlB=ZBY4ad?)LabbnIHT#BM|V$0qx2$HsOO%k)2NTEDSdD?%|Qnp4? zdRWRze>o{-aZ3?646*`nEB$+|&~~EFLl{47gO%R9#T#&b0XKQ)71kckXW_iwwFmKA zgm?%w{6w7h8ENwqO$Qd;)B5w*wjn=@}n?a_+NBhX`BQSA@;&7W6Ldx-Z4 ztYOI>ojPU3ygOHWzi9FvX#(2t&AD2NFe4l;1Y^lFOX}IC@fKrwF>sKA*u8pX%VS2^nk{w@ifb( zBOnxUS~efJJ+f?Gy}xMIq?iGI%~o@&kyV5 zom`zj1{szzX=!xNP4DW)!tI51Li7*X^>6|ndfO}U`xrAsq~>Y&Jmj6dcZKk0Ao%A~ z((J>UYPjsR%71SekgUkT(IPZOmDa1skJ}abd%DPjnoRBRJX1wlVT#dOu1gmgVm!$8 z_tK!2V^rkXc10@FMV>KU5EQY#OZLoDk>9i{a-b`c?KPYoEz;Gs<-K<(GQC}q_nWNw z6!{|B{QX>!CKWllU6F^PHa1=4 z&S)nG%^#&&ZfjTMpmdSqXc1^hwdAYF1r)*hLZoA(|G`sX^PdKCdMJY;AH7YH!R?AX zoGx-YMdaKlco`7kz8b+w3%xj`*7!U44PD_?4BJvOwKCcNyx(xBmK^fjujPa;;vdTH z4Z!Muh&RS>7ne?gwtJ!hHp^6$$qZ>Y3^%osa+LTq-Q|8$0SUsc7)`< zpZNFOO#48@77Eh$ow?IV=aZ#+Pq<^OKn^0voOIh5%&hS z&ct7{JMImIb=2p7yhb%WVF5u5Y?K$Yt0;)pnPXr&S34-Mygd2V2#XnQBWNt<&Rd*3 z+;9?woaH5Wz*<^sj(2^<22=*a`$Pf!01^&()K5YHDQ1Egln^FSYqPW@%Q(q!?QeX9 zPY3Kt#wWc`c!7ceu%02X`wdvCff8a=!o0^kA}yXEgWuC2KBT3OG}Y_m!NzJ-?%O* z2&Ku?KRCH@=lWs(t&B-JzvMycvHX$|QybIyU6Y@`i6-yhL@RxsqVtLB)XpzLxc*=M zK$bVs;piKdl3pT?ty70Eh-{ATi^5}R?ce)%CfCg@>_=$GhqqfuSLP44Hx~ms67Ain z-Uxf?0psyTyzl?gjaI{%#L-KCa8+m@Z0qWzXt@EIau2AS+m1HM`hQ&1L9ZuPT zec+PYAuslWRlg#>AE1eMO2!A2^R{SvT>LGHznFOEuS)i?^@<9b4qh(bC5miuofqg! zOhTBX_`8T_KR4p0ySWB<9-3uQ_$fMz<9z+KD!47Li>`FyDEobP;$U-*?>qFtKhnh} zE&YCd@X!AdZggYGn;nBet2$RwZk%y13#6bwV3${95(Q13)T_+=w*gp5pYH@Y2 z0jljuxe?QEFl-y*)mN#|b=b{dy zJ2xI<6XzA?VR;Ng(&|wEHOAx8Ju(N&3z&QPBfW0f1*tw6{A3B08^JeONiQFZTkHqN=0qGwsB(Us39E zn-!7vbx^J-D7PxRD0h!0kB)c{x^j2j$NU z5J;CV-=%y({Pmn`9tnMt6X@lzSGJ~p2>z?2k>U+0tV5GWEyKCKdHaUXo zzJn1(TQ~NIJQvONnUfvi_UuDkH7Ca(C6$M#t`;cAa?>+qq0< z-t~V>gm=A$-%5xqmCs{*BU^QM*$k3Vye5Jr%!{_}!gif`_H+*E!Gh#-t z$El3Av1i*#{S&Od2J0CqfOpSZIK0`zb?E@=+5l%&{yJKM%_Z# zGCF?WBDeY1Dzdxf+~%(fA}>^=ES4p+ENR+Em-x?-s%1Eq z`qY4J@ej6gTl|Mq?u7uCJ%h;KEAleKWsCpm&s|T%6)7W0A^3(x@}83-|0#}?skVtU zSM4NH!{|l0ay7l$|=wOvUG8l-3LFA!|91uia7DVo&$eW-q6+bhG{Bj|YzX~E_ zLF6Vy#*rSC^XMRQts;{|I+3DZJ;7Co6wp=^KmKNPF`45j-bcYQjFZmZX~Pu`4!>#T zx^Vd4zwoy-u6_jq$?i_6ehth(9$UgbBBf?h!s5(0ile^5^3Bv*Z&RHuoiIJ*cbb;KZ?VA`=9N!}`W^f!k&cv8Ju+qsh$0)m|MNXjY{f>;`>Rxq2 zb)U!DI3^Dt)Ae8DMM39r^bm-EDgHHi*rG*;WVY{$VwaB^!aFF zY*qa=`Ms|go#2cj*>gz?8|8De=ks)@ELCX~uG!+xEIrKX9O~a*C)<%xIfK?a4LFAn zaiSvom5HdY*4JR#F)C;2WLJvD;;bY!O=ayf;~$*9V4Nq-SUM@F;CM3Gqg~c31T_dagA{s}?($Aj`I z-T%eD!QofEbY+nK+c5q1Al>krv2-tYSf1T7!Rq`t&r}rx^y=Ra< zTbTy=!`(ApP5GNq4u7>xkNA{N7Od~isb^1To&LDpCE$!ML!W+Iz{i#KOh|rgVbBC*c^YiWC{K>_q z#<#2Yt^nURu2K6fv5u&8d&2&Ig7l#MKMIQ6ry_;z;5mtGsDFbJ_u3WS5kcXZO85# z2liX%{YpHP`M|@f)%L9(3+=a7UZur>qTk1UYj5x~7B4qg&=f!Lk4$v3ltuJ0}7meMrs5iO27xl~uMIn#|R; z2twc|&)d%7)VcXfpC_?GeMX|4y^uJ7M2lP6LTV(TrzN0UqBeg6(v8dYdfQxEt_)zm z&;jiABz6e-yvawbP}%Ooxx_Jb6G^DqirW~Fn=+Rz_ch^WpSqDb*rnRbBVzm zgTUf2fGeuHJHkLQfd>gV*&{tu4!a_tX88rTv5icKY!cmgzd~vxVe=d%1l0ThyO0j4 z;%Rc(Ec{mou_jVE;S{d))3|Ul_uEsRP)RyMujn6!urBO*_Q9YY6-04q$Js z-A$joVhKT?+_pQ|e<;$C5OzoXJ#=@l4~@cpo84Q7 zeX^q_z`LXVeuG3;svX|TEg|TW1-pa&yAXCq{av>^*cU`$AGtf&r6KH&`nxa<`_;De zy>Aru^Qcrh?34F6h}kWDuO`uzY6ttTmJsyGWxInN4`FxI-!pdydwdjjuie4!AHwda zzw>qnd)sA^IsX_Mqz?OJ9l3T(-wzuI&H2~b_V;h2u+Q2Z?Aj1^NAz92JJ=^iVehd! z*awENJL>OmFAc}C9p3L)LNJzh^N3T2eexu^tWP@X?>lw_J9Rw^xvhBq?@+H~#82&? zxjl#6giZhl#`4V`zrV0fYRdR`GFn{3C;r)E@!JdM@~H<47TYgox%_flZMZ37^m4%r z%ZtbFvclPz3^wWd$TXS7RkM6cVq#?)@$Hncd{0FY(f0|n;?%F%El{i~wj{j0B8{<3 z7)tA|n~QAM6WFn2gO$*03AZX7$2J_j3hJ{O)1}~|e8gd&Vh^>_j7JWn+Cl5_GLuBf ztmTSBsM-ALpT6e?-~L?eKr51S@*=fUWUGpR#S(ri5@=2G`kx5$Dk*icK_PjQC67k2 zf`*uH{mMvLMSXt#KR*cc#OMNiLCzXIL3U3DIYf$VS?ajN=o+tELtzfzmh(ITC{i=g zz^f9a=3BE}GZe21luu3ZmtEnMdIHCII#_Ca*pkJ{O({VYG@)x5L$FJTP=fIH=U)oA z=1PaEG~I2G9C4Y+udKen*v{bPV-`g-9H z1|pS+DRFniuClnVC)Y(~GQAQF>QG{l{RULWNrR|PS1ejEqHu`jvI>0|t=6(U*8VzOg8*f>w2b}M>{ullY6HPDU1}CIAGs0GT)#rHz+>xXu zYz-o^_=Q@!beoI_IKX9`w|_{zqFS$^jBQ{h#;%F@omxbzb=!;oWAgN;K!1w$r=()l8135_^Ct?M$XCHe&@MR7 zdRP=!V~^YcLus)WKPio0fdqc7>u&FiCa-%*t`U&eI2vTsHD67X#I2eyXNQCz;%%{Q zuf_VVs(%}+*^_c(!(Q;_@1adwrxqHLi-IrK_xV_yD`jL`Wpj_L_}*ra=*M~FXeeB* z>WA(0<}X4sM0?kGMJ-;@hFB-0-y^ZUQ?h^qX4ObnGJbPm3(;7Ntn+$2<8_w{_BEDU zXYoWMf0Oc}*L{CC1rASOL)X|^dyx84?Oi!~LMNc{6}ke)qM#UU=2alU=TJUp^BFQC z5s6sHCY9iyzBP;W&&2U!KSi(7Nk^=kFjmc2pP}uLC3xNLGD6j_<}M5)@02QmiV@O3 zZ{RcD!rAn;{HPWyCT5=8I9#KT%8SdGN{fU_oT)_|1dM@}cQZtnm{?pE-<}vdxPH@j zUf+ic>qxHOo?YA1jbX#vv}SKy0FA@!O8N_VQsw?&m57wlg6He&RsC5l62F7;3UF8W z4Bz5C!yI#?adE|Gh~kfWtoZ=9@jLD8Nlpk!=&eV#&pp1$w7ucNiFp z<6Ivacu?v5ZsJ!Kba&XVyY=Apz1{9&`1kTko}5w?>nLzoj3KS!-pA5^lh>bm5!+8H z)cAxI`d3gOolTde{2`XjaT-7NFPH}%dIM!xe3%L9TC;aQL(ZS@$M9HHR{ik#Ik+R_ z_}x0P<_8AR9KDv-w|1_{t-Ge8(}7>rzrRQQ%Fct<`|B^{w$e4REZ$Mjkv)wU?f9E7 zhD+SZ8BD0Z<*Z=aOy(g2J(~yb=OZ*n#p(R+_n6~t;Rv7VB#p~A)TmQIvfv1f)Z>R|uj?((?Q0N~kGciz^ zCREZmm7&X-jkkoF)L%^tQ>WC&psuW?)%;;e_jmsKT}J9E%$x$YmKqf3)j(&0Z1(f| ze^|>#zoGCWwVi)N4S8p-ZS#+~s>YJONGDDCkmN3NPqXC8!kLu&Hj{{bSYDr1bCfvc z?J}>Z$tyxXP|g1-uYF$TP1UaXVVkX9(I=%|58vy4zw3jdkG#qK*BRKUs16VT)FoaK z-_;-S{{xHLZgHT%v~`PgHGwHT{Q%tp&}EZOfvInc?@aD_t%0l-$eRmu)$2ts6MccJ z$wAE~niA+C0mNG%ot z6_MiKbdL!}F^M~quGXYefsoLZt%PtzVu5t;>VTNwk@*%=PLn=E`I&A7{3=7W!o-U% z6|ZU(_WAYy=MpVe4k%KO0~eyHTxyjv2&$mvSl5s-1Y1Oe62x--b7u≧*0qbS;lY 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 z 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%0A~t5U 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]<`M4&<-PBv`>=9%KneQ>s)j)D;C zrTj+AewEU~Sy8+SsYP*Uem?zFyW7af$YZ2I@x(BX=F?`xh+?!?C)8c~(sA9F6B}Ii zg}Nr+KOgIZmegWyy1$71CK_C>^dpp3tj6zdS0Duta`nl} z>S3GYp%fms>3e*stS738>T(OTIicic167NaISu67{))-$)h_>Xj;Tg$ zZJ}~n4FVaNd=23o_Babn*^~nbcx|91pD*`-|MeKHq}tuRNN~SEuI#ElM?udGXF{## zX5xVJHIL$yh0y)K3Ppa6dr%p?bu@B~c*rYQ-bWy)0qN924MP?P^s516hyMK3+|X6% z9*q*5SNp

mG2M+iCQ-5_Y|QuEO&?cNQ*W-&%HDg4_xXdpEZ)4{Apv);Kik-tN1^ zS}2?}TgXS%g==>PoKJR8-#E$9h-{gKo!3aUU#L&+J#KJ`Gd9hNA6_^~;moV6>$G6= zCfWAqQqaRws_Z%{3BlpP>nO!2YUnMUKyO>qUWU8Z=#dEpfQ11(J_y3xKWq#M^f-GOfW7}a2>tj|YT z&+3ph%Y@wUVV5E|Mn#5pD3a;E8L>Nc96m2jz?yK8&b?}et;Qp4ytE}~x(@&$kTfm3 z`A@^RQ z6P*~SUUE?8&bPY&s6MJ>2P(-U+h=qI|F|gY`^!3H-Gi+16EiQXw~jQNT7Ul7N}wwh zPR`Yym4^J<-j(emSgAg`e*gTI(=2T&1H+@N%;{}m%UKP1Tch>FbgiZ#KNls9Mdg&n zr*?=kZQ;lcQKq*Y8b#%_$1-xXy7pj`^a^ZUK(HvUFg^iIq;6*9E0A?#;>yuKl7YgRDi#v0A4E`hB*3;{l#(?SLU)z?F5%S{!Bl zOUJB_NnI{vGJx8l$6c5xKNV^$Pp1?_aBE{dwl&eu<(sN5OHkD{oV z*<43NQ99|!jBsK5)|ic54%)3t*#q26aTL{L)d&+l!4B1O`6$i&8&Op53}kr}Wmsj$ zAoHRqgSMT7+!jUMnC;~?M0J*!GE1iFkSsh_N`}(ey?K$DoAU$L<_CV0AGnx6sCC0E z_WFJanF2M^cn4F2Kz5pAu()0eHYC!2u^%q#aE8m{fl+yUfSUcOKLsB!@pbt)Jfw*q zw_!1d;h$sSkyG8`k1zS9`3N)bp>7wlXm`|Yihi*fK|ga)$CT?2Onv%cOfe`^?D&t;5UlS$s79A>1{% z7UZ2sd4tfik}>KS&c%dSDcL8v8M)M{QR4s!NJWYvHs$-3+hg$bN&g61DYNnCHRfd*L(X{ z(rkqeXi}jIE~&eSD0{^$IKX^EUT{|3&lGi!c7-nSNj+u06E= z2^r)S)O}Brl)7I<=-0==e$8^)@p16u9_IlgUK$C@&9ZVH2zrNfk+P-kzk_mSuIUG* zj(P8afZMtmg0-zabNCD0^ZjL*|BG~wx0g?VTAr<~_#F1?Gs>`q`@;OruCJ|3h^>n5 zYbLpUgJa(Gg$Y-&zXZYyV{RY+G1TqK$NcfMu0#EE=R?t&*2}LF$0w2)^W$QJpA;gzTR!i816eaykAkjKq%0DMospy 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 z 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 q+qSEeTOacB7&N;YB3;3*)nVKfP5>j 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

dK!7+{&h;mnTQ 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 Yh-8M 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

ShO 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%0A`R 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ⲻGI&kxPLQh;j;8c49dxQgZ9=nC;IR$ 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%0A%MwLwn|g088>zq=ww&I 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 aM@leeK7`)=XKFBJ#)3RuDMFfzrlZwD z7Gb-mYUkx^Ia=bYSvoPX#q3$-7=z$^2aCux*wn>CH|6mbXUZ)wmZKv%=U>9ENH3&6 zZeMi8ryutkU{sM%l;l?HuEb{vq3#CvexZ7x!8!EmWcmu&>aPve!M|B0H{IZ=CtrTQ zHD0(0?EdMz0*Ssu-#sM=hT(_@6PNDKiV*GOE-nWNA-Id{_;61LjtgXn2e0p8Dxt$4 zUhg$~UW+STi}HA*lFolBkQPb6rCi<8THrfW{6WY#^8*%}m4z&cQ)L%y8sGnoZ{VBL z^sWaNy5U4tZ@hYI7QbfP(-#wGiz}FHBZ_qvh=w`yo$mVVsv-7ujwQ)}a@)`H6$i(9_w;@j`z7bBjO0 zd<&85HyDG)wBh${qv<20HGOC_eS!b)AiN6y0dUYIZN{Jw{-55)$F*Z)K~*6*VJv0qJ03CSJcl!6Ou)Wr_8;sUGD_(q{G6=#GP(W=0n*BjFS3Zr_#BHU3ME46#Ve;= z#v*u}rm@GbD~3v^90SjIeRJ(hyCTD`%Ct+eM#N{%Bu$KnSI^8I5uY=Y^^AyHGo>Ov zDtT4dF2hFj*YGv@V}t^k$G|ergdFg3gFY}~v%%QtaE&BMH*6%s)(TlySxu>pfd!OOI4fgA7$uFUIx%gtQDp|0Ctj|q zPeTPAb-WAH6=K+~$qw7M6*;xIu|pSWoE}MR+9rpw^?ZX>6lvjyJ zDBcuWMut#Y{8_1S=4Z$}YXPDW`z5Ag9qS*7JAChNBArI!l`a{0;*A5(vBEqi0T59n zh;lmkc2Jgh%;EYwt^!v(CS<_rU5Qrb+tZaEt*)9$TV~wh^2+p2pTOwlg?h; zljjD}K)P}mjh9y0i4x)joshvt&r0xQ8w!QTt-^|)YbG*k%M%mvTI`_Dj2M?a5*<-S zGA16~mr%XmzsX+z(ACZz1Q$wQUlzxdB6%eB?*i#xY5aQWV7=c#_AQnN&Y|R6_7Gl% ziCeT>btRaS=irkZL`l@=qxE=o9erlcFbhcLm_r2}b-DOdc|q46;C*n&v6wdD*VMEj z)%eq<2J)n$Ec(MFDRRn?4mo9n0H>~+fapq(m^=z|{vUPk9v^ja{r@MBKooF;f<#4) zx@r(?6H9C&pu4hxT?rcH76l6mMJisRBsCR;;3mMkZx`a-w${?tw%Dq*t;K+d;TmnL zMZ96X;g$CiFQ}CwUh;ju=KX%}ZUSOIkKgC>$B)+R`#tZOGiT16IdkUBnKPeVlF85U z_o8UbC`DIrCLVsZn;T5WUBEqf|KJIK#A0bSFdLKi$7Y>Hbh|5vY-@eGmbSpUTqqy5 zo>n}#BIoZc`&ej|g=OMd`hbD8xWW8L$r4DI;{$#wt$D#vMakQhi4mJ0f3u_g+w#BH zjZe|+WSF}|V~Lh}Xtdg}M|@Mia7S|u?*d*?{_gxM11sm$I(NUo6uX%al`KCSR81w~ z2;oJxP*G+1p4t;x2Mz!{(F<#T1*W~ZG)lqw6d5)rhyd$NI7usNCEIP)AC~%_RoCAj zm%Jp^&y_aFM(sHS4y2XRQHV+h5fsgqszto`#%S{Af7i-2B6{sir?#E>EI>}$I6J~mgysL2 z=nN+zb&2&!^#R?zavgQGRT#jP_Fn}!Y+p5l>#F92?NL*Rtv)+CeUrJnt)k@pXyA|A z(&`- z9N!5};%3@{fTk2b%Fwc!IO3*=y#6m5H2h#S*Kf{zR-dt<6S^hdXXDs(QLT1!*ECA8yk?4{80H7tQ`49C+jf z{`==dz&rsMYjcIQJ?z8Ld7kQv+8>7As`ql$5;lwI@PtbDvRRXrDB6kDnkdknsb2E} zWMr)$o)W$|{Jrp0^dIOKF$5I-oEx+>rO7VwQq4AzZe2Nqd^fU;G3FW?5LFWMMkX7P z4FebvULiRenr39XMF8sE4W_RHO?k-wh`r(!Xaxx?0+IL3%H(gnn`xos<@R!4KdQ93 zEh4)eA%Tv-9S$F>O^-@B40qfr?T|rP#`-3(bP>fP+3&OFyRO!G9@UV$U&=(aLEF3z ztSEOX0_PEwH`R}I%VYL+Mb=K%A8NjMNVPe4AYfJ8ocLAUlItFnO8Xo*_2XD#)i&6Z zP~D1;;bXDvdL+CNp8$q$A&wESY1!@ye#!QAo4)F3CR-u3V~p&^0$X7G3rHbdlF2B8 z*FFA-dUK~S^q9WziXigPIkdMEnijEJT>5rI0+G+SQ)cOjnssHw0VjpoX4eZ74$^FrRmHu zJ@aSOz)qTuW-(uB@HL%N0WSq&g{SF6VK142IRo!%I?GT@+HX$R-&x<8d?0$Z?#~cyFrKyR70?yuom3N?CT<-JK$v&L>;U?h$KaEu#W+ ziwNp%wo{I9E6H*z(cSdKPa%&us}rnf{08kq|Bi3F8$7Uj5u3)^DtI!0;gpePC&mN( zyT2IhUBEvjj{u{>r%RwOjx@V7?ls2!>(V7^`_XS1Q?s^eLf$@%JMXi#&^b%SCPHek zUkK}CslbFFfpy|;Hrhs!{X&PhQ`UmAs6so*wSpI*Wah2UOO4cj9{AoqF%wfaLf2>cX);)8&0E%s7(HJbjd;1` zbG_b^wI|2yzTBYF_s%!?bapkjy423%y<`>dJXf+g(XmDG?y*lN08(jjpHlrScsI{3 zPE5?UFu1(woQ+Z446pPW`(&t|KUvBb&2JQ4vMRfub62K3s3>`|{ddl9FEC5$2>J!) zjoj}xo|%PQ_;Q?m9n)V=RsjPUe^h8DI&X&Cg9k@Pv%*PI;#5k=U=_70YIZlNDy$64 z`C+VAX`JUew^Zw#(f32#mRQEsSG9#+{|wV-VE0sIcxQvT}S$)`b%zv*( z2fgN$gtXPo_2lF~+8xo~I&vpTOt?tRv1^%Zvz%UTE;H^WT%>#|i-r~LQzfclar@m~ z{WsJ*cXANH1i+u!tnAuv>Dbb~%F}-syYmoVZ^Fw_rs=%3TK|ZjlfO7C(^_xf>Hev) zQuf2+Sty#tRJ0PSi7BIPA(RXhru%~|aF~xHT86I)Hkg-6tx4|>F5$&g2`dfvt|FNi zEPGraoGBwkMRIBhTLhQbH=c=+dVU3@-w?GhtG>$?i}QKk?C1%(MLZJ8jRpGLn_d>8p++w8Uss=EWoN9 z=sT_mIfyA}IhY0djw!Q7R`a&Pyp1H+6yCHeWsRK1Q;T_`QS6sgTGMAaHF$Ni-W_6j z7iVf}unKm?N9JX7eQz{T%NmtscCquwDzUbftaN?n`{1uQTel)qaTU_v>aKD*vwu`Q zg%WWolgOHo;`DE+9i=Ph)&H7+boCdPvBS9aHJY39o$s^g*Qc`d;5o~ktC&+W)-Ue$ z+rJyZ9`Ii~wzmIC{gm&tX|D?W@(pV^OZ52;=lt{T>u7Ep9i-V=sqx4DjOb&^88Zd+ z$niQk5}aj^3N^I`mg=~rOtcLq>!&h-srR`nR93L%JaPqvXj3oitr$jTTd`F8MXuaq zTnqnvi+xY*MX0JVE>5hpr_FK>s(!b_By(Yi^Tnih4L`9JSy4}_T}3AYZHM;Wto6=& zFMrixSA-(vyXKD{W9M-9%qQGgX2jMnT(R}zhtp!~I2iJrTa4J^SQN91FS?Rf^P=%2 z`D3=%eftfHOufcKgBpPe&@{#$9~ec|ZVi#;{L)p!)hd+avaH%3yF&%tYUi6~iu&A3 zUK?b4W`6Fn1-dPpOMBR#paf4*WYqa6@iU`lukVU=fkBaAm2=FwJLou`bkj+|lwaMQ zityOb6i$bv_#x2rxIQf0sP2>SmylD=HtusqrqgYW*U(5$xPwrBKI}>aTa&0OvWjm` zQ3`!r$%#Ide{qHU6j#Cv%3xD~zC(!`E`fgrGw>=^23NqPlKjvh@JOh)f3b}2DJfJA zO)_UBMrHFe+$sJS8`*5(bws;ge^<=D-pQy_o|~dbLbRk zXos|Y)!0KL8NMCp@$D2eVe9jmftu~_%nZ!uuGRT(luzmxXw>=xN%Qh2f&4z(M-7Hn zS3v2+?3zykr);yv^$QfSIsd}Q-k$`%hpK!Jzp&#Q7eQDn550RNqKJvBDKqg8?v5*MtD0z`zI`2Kk&n z=ZKiX2x_LseW2-9ib|7@BIBzWxDC8#1t#_BdxAi@xBw55Gqf8X=XVIdXSwLmAOwu_ zJUXZlsU>+n3E+I{iQqglFlS34Nv(m&t$}`E!@4*f~*3fs!%VkY0wW~Asb7usxjy`8!P~&`CykJ*Q;0C6S zx*9q(-w02;XN);YKsu_}>vAU~dvv{Ik+!$MxX;=17*vVeF=&>C8%kc*V8Th@ioeNi zA~l{zS21zq;5}NaNox2uvxj2$+a~n5*aXr8FiYdF(D~}rcg*-hnQpDEHAURWH-OfT?cASr=V|>^?KW4v9p5-B zIqI05o}TJgAe$tW1eOhh>g~5@jBnzO4|w){&>YUhx4!+CrtvakOmnV|Wp;);za(-? z=1ThX+&#KqcAdPugdi9$$V+~k^9^a$+MAC?=apZVA6Pouxvzsuxt2`l*V=6leJK7F z*Z!e)6?9g+@`wW2v0M?9P5BH}xHG(?J$U`U0baF%rx?r!hWF1ME`DwN9tgkfbZ^IU zMSngpyoDaTAAJM7VuPRJM;{p8cRYB5zX9F~15c5p4-D^}cir~B%I|^NyT`y&Eb0Tp zyVHZW>>J=U7`ZFt+I-=q8!EdU)Ux(jAF1!`{ftTptw@&lJo~SjzOc8z77SgcfxDr`JSXb)4v;{1L zq(*$j83s*fc_xq6oamd$B9pa|Qlf&_-t#^DVww1rxb)+iVpn-O5D{H?`Q}==TFPgE8 z*oamvB?OL*$ZQ%eDCt;TsIHv;ak%`mz|udH!LBU{#n(r}*3i|F^7Zqpr5~+iY0-XS zN;Ao*G~#JL8Y~8wTi~9Y8*jTi7siR02VNFQ)5N*+gnMJfP!wAMe5z2+mqQNdQz$J@3Gz-nXzi`Vp)z>bJ z+4WdU^x3os2(;S=<1}(~VSj~<(?Bu|-f7}EmthA=zb60jTBe$pWH$Zn*==4v7%MGRN7lhXonl!c} z!WJ%`Z1KmqX?prbyEZo@MeA1yH{OA0V1b{q}i@XZLOQ}AiEyR zOs+@m*$Sdt94<)BkV(xM&u;z%#_<(q4D8e?;0Kv}l&+rJ|7G7OUmyF=E&P>7 zaz7TOSZwx=RA%?O(UjP!I}gi+niaJiT<_C7X-^#DwcxtbF_#_v&DiH9hsO6ppjG5U(5`O#7Fc|44{cukMjtGiKOHB08M2Tvm$gU zoD*D&V1@OS`?h@LPCHt_Lsi9WU`AQDcigP-`r8)GrgIgNusDrBm!Z5k%TNauzM$d#gx@;g1ftV!91(ycS{q0PPEvu(7gFS&-g z(m7`C%m0j*?)6Xj_k#Mxnhc7OEcgCwGpMS!LHxv(%yQZ6K@JAW128BB*SV? zbDw+dl`^*{O20!+=N=^ALS^&AZ4wg7|`>V6|pbF){LOFLsi(P2S~~yAP0WVC}+3nGJEt;BldT^pxXPty7u;5M`+K6LF>^3UN`b5G>s1Rt`bZ1f39Bp3OG+prfd@)Qa^BE z$jHB(+O=O~^Z}2>@!menWAXAmhBvqlh$8k#m(6pYqn{J~zkK{#=o;vva5*lyE~9T7 z<8g=_+t{J{(0O5KlC7T)#pm{1F-Uif4Z8+pUvrYkeL#J_meoevW++CBb~t}I+T@E_ z4hQwv7`bx8V32&*YoT*niwbE@IfY5Y9>-+Oi&x%Rbg>Fc{ZI7&)gvm%_F)uBAzIep zWrV*pdxWO^kC&2{3UAb}x8163S5ZSg?4pif)u;85De_fsAYB_&>bul7P&3;^+Ozp7 ztCINp*${e}In3q3ZC?o{aH8h_4=e2f zvF_J9$%k>2G~*pF(oLLDGTX~IOynWH%v4#31Q_BeU0N%kkh826Nm!!gfpbvP|wR*0>>o zl@oHTkwv{K@|KJnCRebwk%g*j^T;z;CeI#fjT>Hfh`PUfwG+2n`N9gXldd;_dOhzK zR>WD%SNAd1wJ&rIJx%jlc+yzwpZL$>uk<|rN+oZry`Rtq7JkEntk+y8%1+|1fEuQ$ zSN=(Tk70u$_+MTvk-qaE!>pAhHqQ!FIFIk)cPuV5PS2oN;k3mI}=Y3?~V^L zZB?>;%D!!4Rw%|Ig0XiFCPovJYDmi^9Do<%KtoI)jr%qlSj9bBEXEh2u-rkZvWr)%aIwyheScRV+SBpFFNR z-Ux%v-pDS$m9KucBRLf@ou^myQE$KAJ`Xd2DQb-PvuVU!PwPq@mJYZX^(6Dy5y= zc9`H)+Lz-7@kF5MAx^dUa{Jt;;gm%Giq)tmp4^5`uG}shbswe_26CeRiKl-F-9p7? z%9uuZ5p#J28whL4%}$TL_yF1yBBU~>oVx`hL)d!3`D5LE9pU(wEQTMZ{ul(u|Go;R zxbCex(b4K1@_~Lh{!Vu7Otm=CXUc8b0}mM|r^9$3c&)qtJ=zG;+QIfnmQ5Z3JYnk# zW#o)6hm$u;aEb(G{>!vacwU={aYf#8uR*k-N;tn|51~BqSyJ5BaYa}#uwQz8;MK`_ z3}43k)h17r;7+ag?Cxtr2?G$-a7}jscOE&&#U|0`%UybMwMNFq{f9{cm`)i7hxnbc z>K~?49%_-!_+d(6Y=+)yl$qHWsuh8iPwAwLl{6C}BG|sIyTs4sSx)dJhrGtfz)}to zUqCw0Miz38oW)$BH}G^`$*jPX=#R$VnXDf=AI?#Qa%DtVeq=~`*s3tCGfj-x4U$3L zg4wWGhD-YD?KjcoiB)+J6Q^|DQP-82`%vSvSY>v=` zt|BhmfW6xYER9=HP2GMMzg^^A$RXlEq2d_CS1lf)2l2A)L zR!p0%b%xP8Zr8Pk(keEOEX(dR-bdz@yr0BD4E8`?H*F0pStJtK-C28?cAD0h#%ct) zb*JhzVnM|1XcncD{XD)3mCZhbfJ$aeFd|FuT_(BZY1?=uo{t3kIMDbM{fiWvc;y=` z^|s=K7HHb3rrUQmn4i>%mfZ_qA|bo>+iV=%~g2QiA=t5#GLKaU}hIhjBj^`j`^(_n9_@AlLbK#j^J%&rr|%NFZdW zUneg61(Wk>p$Q&<0-nJuj+eUkOxrz?B5PM5 zPHBlI6<3s8+T9l=xrmb5lN#nCL7KjRUhZC=j9D0i?xWn~WGQ9|1HWPJ8CkW@sY4Qd zcHNZ0vzXPZ;Mu=%kEn)6qR+1`f1?8nv{?2R0Yv(!R0uE}23Q?>pEv&*C{muvd#h`j~$Gyj$`vL3^ePkGNGjBf?e2u(( z3xXNs#lWuIb0w##q^rc7f3-~2O#?THL%g|AJ@XB7;lA<`F~y#)VX6i&aQn>m*k7%d$*^Y>SMVMU3ktI8eE)aj*L2wh>3QAc@Be_w zzlS~Ubdi4UCN>+`mmR9g3|(CNkH6o241hGnbl&eSGud5vqb1C$LI_qO=1uhf;v+&{ zCrU3a8j|JgI{dy4=kr;aQ+zYHA7^m64i@f-nLMAeSxY7rc>eqLBsg*pn*>)jEGW{J zg4ur`;OdUDt$Lhhb{9JB7f>*rYD3To?bg z(e7vVe3XN)7x6W%lcc`OB<3VXbowa&fQ9dAWi}(4at&V-+@t!iXcYF6?Azg#%@FrC zn)I|0Baiu5MK?Gt$BXqJj~e<#N?HPC2#ltPMe z&B1je=#alZ$o^Nq8|_itl6KT}r3jiBDJWI;(1p%}<-&|IX|%ZLK!R-BO27uI5NK6RK zzv=vp*;Hg(`@J>`R{z(M>%qW#vh_N#sBcL8nW7Q_4rP~>c$Xo!Q1Rjq^60PW}3M0|6-arAI9LkNFf86 z-bu|5XONu6Xg~5-f~I@T^0XK}3r>yPhZyedi(#nVfBgzi4Bu$|%{g(XH(b&Jg&R*i zLA*-y0VST``fGPuD1C=Vry1$u{Ol6`{BR&b`pZYLPp8hacy<(b@vL<;LO5-YuIH4g zC`aH7*Wgt9a~bN~1D{O`U@H_L-@@jr&=Gr1Z_k(#^>G?U+fLgU@8y_$WBqN6+&{>cj1!MpIyz7NLWLM8&UA=r zk1I4U{x-(r5wBN(+e>hDY9YOiA=0I`F*aa((`5fBziC6u0k<(Kx*BNGD|A(5_9_06 zoWs14<~Ktt)<0$+Bl#TPQa$0>L;c=zE;$m;xc@)QI`8NPRad|B_b;AH?O!leOk#(L z=sRZb6^2>(UKyQ}!7uj*i_}{R^Dsb;cE*5qt&%Ww6={6n_2_r^FHOhx8TVT=kxw-f z`9gcNCUSH|9=(FZGa?e?aG%f-%v-6(7%4SXB%->iZCuPpxESa=p#Rlds z&EEy~xZWa1amkbJ3=U29Gl>^z5-)bf^>iokB6ku$SiTa0#!b|u!xT@AMW0UO>egm# zdsxCcouzQ@xJYZq9nMw!vTIX;igGnaECvBsI}w4t6+pSVB0tb~Y(6FDx9U?!-bCDK zT54`sE8kT&2Zr_bV|@O5|EMHv+-T^V9{N*Y1a(0R|7E$S-H?h6yqK|qn(>v}|MGit z=Y3aR-qQm)FeGz6GRHSeli2q%Q>_y#fG=+Q6u$T;x2UFB%bgb&zGsYXvcH*=U^NaK zqppQb>%>`v(Nq`M_bdmSsJ-+q{UpW_?d$VEV6h2WsTgF#3>VaLz60mCQ2foaYWtP6 zT5a*xY|OAZ<&h;hXO?fdmLR2*-Lp(FQ~VxxDZJokj5S7OC|dr}wSA(AoMXgs@#8_4 zYO-rjv9`rO&kMxQBYXVwoWP9}F?-qLdwjv}OBH)i6Rq(%7qs`${HC3kD*U`AuDWDu zRu=49HFezVA4qo#%_Qge%@HoR(Nr0VicO>z6h_Pc6KMRI8o*MR252*mrWeQTLtPg~ zR?{*2wnG~X1u{%Z+I`BeEtbhnDo)JWvx>gJQh!0=+HM1k3Gc3Bjd@lV#j4gqX+Y8P zHZE%crD8Tmvz?cW$YR4N#Snp}V`!ip59{F!^$+aetrx5p)h*a&9u79}LGG7SPKfaJ zc@kbS$J8oiidxd9_J!D(a{iqyamAr3E%)=IEj=mAzlLb`wrG4$ZeY1% zKvgx<3PX_dd(4UK-cT55l5E?(fiqsya1G{m^uNwlavRff1__`IBzkcmg?TeZNkBsl}Rp1fm zq2V%dCiEDee29Gm6=blz%&<9<65Y)Ev_M~Ghs5|}1o!OLK;KZS9>6WMC3!mJ_DgvM zjseHWk-L&d@yW0U@GR{}AHzx|a^xOkz7*S7FI(M6{er|VlJAQSF9#lp9P<_DE06pt z`3edC0B|lp3>jGT7tMI+`R;tTA{jIWxsVnX=q@vYMTntG`kOElp49RB1 z6U-yZL>O;FAmB(Fv4{?ah=^g(oO_#5Gb#t1mDLuPU0?qqOMY#(X3Ual9D?F-A~;B$ z*T1NBtHTc`tMf*D%BXd3Ss3ws>|cS#_xLhGMrYTQ=tgnUBAd;oQQ-FxaXCBWi_JZc zqh<4XU2hYd#XkTPyxuX2jRN%miTFAJ!uC7bVQ;e}fpYk!|Dk3j^!e7knGe>xxc zO~m2!j8!#zOcnj`&gc!LL@@fu3z_D}sc`9VMHf2A0X1Wt_ViaPIuzzBlw~^D`Jh{> zPw|F0K%Y(sXttRb3_5f5#Jp$v&IDC($`lO8n?F*D+jYHAa__lY+SrX7s+?M`D^k6R zpJ0N~d42H3<6<5;eJCb#fdpY>No6qLi~}`|o@$MyX~rPGsZ*Gi#0|wzelC<}J}AA} zjG`X>7)4ED8~uwcdCZKWwx-n3F#~D>E78NE*6kWa_P9L1x7YFN_x5khv)kJb^PK8! z;_|H=Nu7ik{+N+7i*fYiNR6Wp^@eCEta8fEGGpnP^UgwD7)Q5_=}p{>EYHyuymRvY-*(yp}_5%QmbqGUf;oWFmoI0N*302Bb`G)AJL*1?o`M55j1<}v)-_;>%{ut zI1R!~)v@kS*o4(SrwmNo8QfOaI-`xjsDW|fE-^Cr&9$$rNdB7}ON{;$|FAf@!@QXM zvKJMPXVTI1==y^va_?m1M6J=qDcA5CY>ZWz9u69x>K}&RPeb@GKflWOFHgLHg61Sj zdgiK8Id6G3-xSMjt5UW{wIq^APUJovAi=edne479^Dr|ah_5m^dHd3oollGVl_F8v z9(LVlD}29q^8SFlDf=D%46AO(pW!?+KtoyXx@r^!l547Z*I8J=!2WH|49wND3fx{$$b*IeLk6p1rQ@b^PV z*oOr9X%gI$kiFIQ?_SxfbNlynYQHl2@AZ;5Xd#KRlW!{n?qc`-MkLyC<1`o$ElREh&PrY~H8;MO5#+gR&-apX!rpy~*zq zO1z#AeL4DY+f8DC5LlW1Ke%)I|C4GzS${y*PVK*S-~OjSm;RS5h6%7oxPr&rFV#sb zUxPS@Uywg(;eErijOI?c#*iy5Zj?WFi^$^B7gK)jcPo`}pz-zdG-I7H0s_~qGz8vl z2=}#&bv>|WtLriu>)PHa(q@dUV!N;b7`(rYfX>Op#nIdo}2D_qHiV7JFMm!ykRFwVLP=Vq4p-Y8}lPA&;(@vM) zM&)&)Lr=c8Z}jPKA-Y0xd?z}*`)}x=eT1&^Ws^EEQ@#v2M@0B9dFQu(tynN_w3w$zP4{lwZC~E`SR{3zI;i~ zmrRs7sZGsUnwL0t!66E79%be{(6ni8cXg-DO6Nr`)!k>>T%QY$h$M{3*Hzxvb=o`% zHqV$gQ}TiN^RG_N+?2kQ#@8PG3iJE$F7tchx-H->OyOZ`N0&+d@D?*}`;Wrzs2M)y z4A~#51JbDeW6VCNDnw~#R9TRLXNxmcOTaGYIpgomGU2Cm^tMJ8pfYp%@rq!m5=ZvH z$`Fgr88QpaP%x``!D%szA>UTR>iAf~+F=Cfr(?OOwO0hIFb%qU3VLIycYm;f21T&9 z9fPa0b6%6t@(c6i?+me%DC2x$fL>XK4$i8iknH$AFD^!y=$|$nW7Z_}hY48~OBN3$ zIcDAITA%+FYg;T8K>tK`wZJp(zVMO6DkpGVXG>3eXf_#R(w^maU0Oh;;qkc0_cxBy zwJhubF*IUVs1M~A-Y2jNU8z#2}S*fS!WuV&>o zKppklxT21cf=H_*0%W596+O<%qPO_o)|Bd;MCo5oKa;LBE1~uIktGRrP}G`G6Jukb zt;z2l)@ojtx&7q2q`P+b!Nw!EYgb_l!Lfejr2b(hfE$Xzfx`s~F`6j7lqxg(tJqoc zwCSt+Vs2ll6KItdZ0a$}>&@#mE!~_+jqo80`zZHLbnd~EO)}@WGnQyZPPzSb?uYb~ z;yyY3Fknib!0?}2_R%R>ZKDemWJ-YvuHVRixMGja-#mI?mI+0f8gtEVV_rumUiV?U#9T@X+HlWYp@k21dt9$63 z-%)*d=t~?x$^-)|&t|oEUh$IAL;U>$d-U*(8Yyot)`^AkM+*2mzgN@l`kvPAz#};| z8v?zIzJ#1j^q(n9kb+SmlddEVb~G`%kel@iW2=_ERkl?B$7SL8#PHpb#Mu}lzbsVu zmG4}pL38u z{crkSYWGt6P2X}>bReQwI8rbi-%Lz^r|16$6atMS;fW}50SNTfNOgFMrfHM$=*0(^ zThP>@_!GpxNa7ry)^{TuVuwa9&SW+ht_{%MSW^iAg$)t==w#5fDm z4mLl*UnYGu;W)Pm$Hh7|VfGHw1mjUikO5k-Y5x7D1&?TDOAC&7IU)n;jK|FQ2E<=b z{En`)ZvaW~C7v(sFes}Xiswf=uwR+;O1ke+hnCpnj9Fhy7*|Q$1UIk%6Sg~t`3Jw` zH@yvz;fAuh+5ms&;2(~aa&;YvF?ToRB?K!$J9aoN%qST#PufIJWlnr zs5E(todFnC~*%B*Y(#W^YhqLg6^k64~UKo49&y4+skd}CC8B9zWU;g7e7?GfSUM^He(mArYz%i5 zAtfTjg+$C~0tr)OxM@qGy2JTsf=h^L&JORX+IiJ`s&byy6AbWo{Q_OHZfe7>?o#&Y z?ji+0y7XlWlCR;0`s~>p31UZy$8J*tjlbtHx!mk9!8)r8v$6_hxy@fYi}KDZgVwv0 z%p_lun*%zWg?m?YU>~ovo-~{p9zWLF=-!@)k^D;*PoH=kj?ZYOn&6(r7;8Nx^oPIY z@vl93N*5MB{{x?eM|)4xoDtqrz4IMC`7C_WY4>$_m&z^frLD?D|EY^`Z=oxUr(Zvs zg3&amn}}Noi{?9@5Hv||MNaa4pPgUl>A>v#zV=3e>ap`{-mAyX|1_^+=hE>$^ugX! zp>v$~l;;fKNnzqeX2#bnZ9zyItr41zb+%iF$JN(+K=YmL#=7=%sg(!f>z{lbU&ou) zP;?*0zVJNN=QH*g_swJM5xlvK4O5G|J2CdL`sy;a{Z~!su(#bbkcVfS@?C+YC=*QM zw`;=ZG7&C@n7(+GZjaRay_IjV=wM&p4isbIa>S)4x4`RT@>?XB{2{O=FPIAmT3DdzD2-A3VzLljh)_WNDu|4`T3^M>zgr^qj=J6U&@OtM2R2Q=#)G@2SA~o%fXQ{G6w7yyMsfe>Wza%VM^Wws|HvJ};-3bJKB>#})a8 z(&~T|rMsmm{U24JkY9nOH71Ko=@Y=34qCEKpDPMbW{yiEUH7Kp&xk$2w7IdBO#7qn zWX8NpU&XW5Q-L$ud&+ktFH-caU67*fV?d*8A==x4B@daG$i=RKV-=ujIwN>vh;yH{{ zu$W_JP!^+DlV6nrcqs|#w};8)u5a8E+e6P~{BFjNfweHDOHF1y*<_4b?Ib4)O`>_M zGsVHf8=rlO{`>KH#Q%JJnmP3UW_%ts*5{wT-cy0o(|gKyzQhui;-5fcr}242=J?b# zvJt|LnejQ`|7?7I06Xk=d^R4N9-sB@^Kv-OdGF}|+4#Kwe|vmBih<6Pf8G=F&wE1t z@sy%(#`t^y+*9LI4T;#^_L*{tA$Q_UIuH*6APUDdal{$^bdx@i+d?7U+D^la}XX)`+oF0!&{&@T!7$<`J zF-{EVVw`Ap?GnZq(g20B{(leuPOM7kAB&gk$6ltNZ?fVH-VdR$oprL}_*Mte%Z`+p zB~&L%ji(p6mwV*}8h=g2;YpQ=1%?hmRNp8e)-^YV4^5ncOF*aUD4G<`rZ!AN#7BBV_xzTFIUtG8c~YaA(g zU(r|cV$(Ov5K}4R)h$`MB5F;3)IwMFZV61BnYdaT%R@nL8AnfOL@T#vfuW5_77eCxL^AX;}8<1%r_9Sx3{;{NL#5{b{u1n0!7n+ zvD3d2erm)RJ2E2QZ-#MfH_oi`Ulr=BT-0wC>LaZyMuZ~6h6d+PFi7j>Eg}8Q@lQ9T z;!}F@SNChbQTWM=A%ts=(hZx$q;&D_9ZbsDmF}aAr)H18YV#UV1@2UXF`#Fd1JkxZ z!()dVrs>3AvhRhBHp8l2{N4f z{?7cz4R-FWJ>BJ;ttO$brTOE)_C4I|GVOaVl63c2bDyW~@no~0rgm_afBUHQPsB@z z{gI(&8`1cBautxX3jcRJ^G^-y{`0B)Q0=j%1es5Lgrh)$y zRQP^F3u7xRoe0p*RJf2D!quzk^QrmD93vw8Kd0psz30s~d z?bMKjKQ8z99I)YWX!$F0H9AJ)J_tXJu1y|*= zok$BRHTJNu%h8`z=y*(#_i#`*d{KBZtw{|&GxE&g1k43#PU$?xR&(M!EBP8u=FZNy zS+l10`0(c`J@ayQL~z0k^^@QUG`>t;k}sl}I3PHKOmd6*Akg@@`|TX>TOaqEc**T7 zQxS#F_A;z_ZH0j;yBNu*dCAWo=2mrsn|z#?yw)V^BCgU=SG%?U!A&}kq#Q5TT_&l8 z*(ZzpAQPn>Ue*RTT}`b$lJwsm>w=g?x@3sPb9`IJWZC^%BrPXzXl~I^o1EU?3r}3# zn-tHrr>v87CPwydz^=Onx%Bp{YFAw`?{`o=EaKeUhb`EZt#UHf9(+F|)dNji!AHh| z$>Hy@KPtY`$?rsIt%vpBjxpE;8gG`ehU(-(^{d8*yl?s5x1x-4jo!C^zvA{|?~HHN-nVVu zw_VWGZC@c!S6<~(f9KJrtCyZbNqQmB_>yL$MCr-i_cPcdQYboc-XSoOiETaNCcZj< z?CWyLw<#)*?Zk+sO1{fWE+82|cakRhf5c|E2$oN)0!^}r@Ntp%@j34!7ozg9+Wk1k z`}m0WaiICAz>Ac;$ou$H_am1qxp1yW;rE~Jhv|sYn%&{;@P_!&{t|ZTIIX`RsLzU^LlxKnuj%ewnQMZuS5xV1~*U2&}QCuM+m2iYrSBoaKzz%d|P3{MxF z4V;EWf2b?YM8)8BWF}rmwFEPOHh(?PPi6!3s{a<~$r(V08K7z>3Sj9Yz!6{Y;(ff(`&ei`zRE{`lK67A+p~9WlW=J{ z-hf_{k>PnS!w=mICzuRBBZDhugx?6SmiQ5#7##(7xSWwFUFMZP-7P=Jl%MRP*V`+& zx*gm#J)FYV_?E2XFuteOAMts?fd>T^&mhg{SuL<|R5y{L_3->NF32$%$ec|3uc%J`*g?lGyG%RhT{KCDD>Ur6_fLXZnGM-x)#Khh> zBCz-Y%CO<`+z)i}r8#*Iuf|SH_Y~6nsXs71z~S>7SvDj^8yC;RgjWr@OIjE1eNffk z-5PK0k-V6smZSA?oSu%+Q_RbDsIa)5Y(dWx_*tdVQsjOy$XC%2}YCO?u)CYgTfuo(|X3H9VzN z9am2#5^N{W%>r0S*Dh+m$Q|NFa^z@NO9cLOrU?AGa{>)PRCsF8&r`Ws8jTNf9_Mwb zhp~C=A--p+U9YNZreOvEU$VivZw93rd8L;N-KSRN#G$*6Y`Mh{Zq9>O*r3$SUcrFR1GTU$zIOW_ND3( z`rgy6xAstc=Qq$*QHcy)1$o2*vBvKYHk5tArR;DdcbY+2KQDaGp>c}bsdXz< z9_Tq?-)$}uW~kzV7-$^NptDCYF7FSvn*5(CTF4e2D-#c@A514HHpLT4lUwP-#;d9_ zQEGj83Mp%X+xemeSjX+^vb8r6N}h~#T`Uk`{9p?4zGTzi-WRKFY#{QLm!6f8zLE5I z-E^bL0j4rgvCFZMiP6MO!3HYR2&k#FIsnZYxAgi;*^+N{?mN^-9`-j8&t0>MZl(9C z^KT>@4hs^c2yB?3gzTERkKp)SG%=PXH#L!3i6IAz!M))Eq*xxHhp z?VRY1Ce{QS078y@XE^69ZP$B9J`uA>By3fq$siIGI)D4yiVkBc0g~yD{n)1E4IcJNm7+XthvF+lG!27@)lcTh6ipR8Frrew&n|$ z|K*l#7@c=B2q5S-aMex8+xcz3J}n1pBm&(Yri1$>ThP=~<5~X2D>j}2{U9gw&>+k* zl(C4i*djuSj`+0^v_a`g;jIit^^Pd>TTG%thlT=ui6#s?t>8VwV7XLlW^0?`&!__Y zb{u|;{6(P5f}%gZkZCzlpXYoI6ZpLcN&OB?^{+cqMiRp}0U;}S0$PkaKhAR}*qV}7 z1#wQey_p_frNxXs=hT44UiU!LP|At%)a6L3Q!l{=kl$VX91h&JDcRqEMIV&uRrtlG zqOpJ~);4=LSS`PFM|LvEaFN{{EG#`SH%25NKe29~Yh@2T<>iSOwbSo|irRv(v>pOutSDOpnt%&02-@QW24jo>ke9z|ZQ zt>DfhPb4M!--_qc+EJvqk}MjCtQSI6sSMYWLEx&yxq*r;MA&y8Lp(&;7bvC>2UXT` za+@;6@h^!RvBgNX(z9?G=BsnTc0&cD4G~R0`6oUj&pmn_A;)6%=U}p>`jckw)1ehd zutU8gHym&4o}3^Uu3jfNZlF`9PDD!Six@t|1vSvnfOdHmG8sbGJJ&S+3xntQV10Zq z;^9_^<=53&CZt#ipYmbCw?;0eRhplwD-%PvFm%KS~(LJ*1gxbqrIOx)xA;YrArD1FILafj0z zX=-@s*Ail#q-Xe`l=P%6S;@y(3qap_L5)3+nSk^xkemsqFXE}j`wc6ohQBNQ0nBwV zk0pO%DAmTNzw#*!!zpkJ*N#l5k?A)E!wzR}F9W*v#71u~$lwmSTmGMC)J6Oi}`%CU{?JnBfOnD!^7L0!W6gZbNyTO?~l8+h~ zA-bq^(8U@6JDl^~`k8-3*iK!y2+w41;uC)+yHPsL*ELa_EuAX1Y@_UBuT$j1gJSV@ z2Vu!j+@CU;ilds>LypdmYc}VE53)ql7eiLF#`@Uo`tLcMb95}Zp&(7Jb7(Vk0ej;vzKj zu~4nn6yaL!D%J~yq&7S}{t%J#1?Dg#fJ@(->{g!RRepTu%15LtM<}wAB)k}1@R(QX z>6cxUyOipgE+vLY#!V>=$V3rCbgW)IMKY~1dK0OyHhTJ^V?ULtuo9n!`g8BNNUQf2 z?7#7j!xr>1i^zCKV1CaH@eljOJJ{Dd;Yw+}8@Rv3bw6N}Flzlxr@3)JSk^#C4*TO0 z{st0XUBRsLeqhONel4fMBIN%@0>4BPIStXoK&~|GM#QxKgWp8RC|uqXwNrVYp!f18 z>Ou;4Qr$2&C#&}R_Svsk-AlNCr^D${#(fR(FEBSeLZ9Ic`aTFptnF+u-e|TMQ}e$V zjt!OW?sd0C%BSbm-5M#I-McOUXI7Pu z%&%*#ET2;lXu4i|f2sWlc5(A}hmPo0JA`c0%10K~o?xwyxtBC3ES}k2E;w52sC@n^ z6L%P}is*9Q#q5Tz>W(%Xc9-nlDU@)-mq!McDUKIUy#q^s%996PJ27Fdk94aEPt>87 zY0*T>EK}Pw{#IWk+#}X>Vv5Y}jfzug%_&I6+|5f#EoNSg-&H-Rmlz1`H#eJYw$%H= zX0x^DzbCIs?|X_}Q|a;#b;rL8ua^rid1g8tyt7vM=_jSr4IDrHkaW7qpX0&V&0zB2 zYmBb)(_c%c8#sQt?j6d+C(DELU^?Bv_tWo4ryDqa`uuddp;NX8XJ$Ix!12@1O{W_; ze){R@^b{PopOZ)NiTTv+f93bmyL;&demAe)4_wtYLcbaKe)S`jK9ellv-6yCdTd&ccsE`p2?$g&>B3s74O!}hu9~Kn|9cG&UfIJ=Rr}}dfIqy zOO&A5{FMc- zg&Q98AZg(d#*-aTk@C0ZpJ9B)Bi1{a_WsmRmy3-HZyI|W9nIDJEq}G{b>ovODN$kl zMv!)gj?Atdo~op&iAwwdP5H2in=g9^Be@J1Yk!asxMChFmi+ZLAcQwJ2|*JWiaBachD6)C+ z&-tsHEtVcbZ-uQb@x2^pI+ADWW@QLlTT8aavbQp2+%hK7@0M61XI(7O@0lobmoP#XXM7;j|;*-~4qmSs34Wjv-bR<(t;nKB&7+=*-U{J9lYYo+zXn8eVA=(=~i zQ$dM8DeSL&(dN)A+T!{a0!IM12_h&zlt}YwLFACL)JsTc)^e0EY*y4^wREPKpWJotsW! ziZ=HE7fbo$;G3rAeer$ip%lJkAfBMX_t|~$Rj9WVzIPkse0*1{;g#jvt{sp@IQE~n zgyup50(2}$j6XEH(psn%SU0Q5(dmZODiS$|Ml6HBJh7K8LQW-LXRfYX8Xv!37i8!i}$mpm+eT{UdfOS<$6RbCI$>s4Ub=KF?&5!T`&S0T4lV&BWju zgMq#ZikKx6gAYw3JPcl!dk10s3;>QLx=q;ipfJ#f&Shb_q^29^*bSMwrjZvm4o!i^ z`RYBQ(Ap~-%+ubeJ%8Hn#n17QS39MlMR&Jl)#eRbqIFj77&IS{9F-^QASg)3%a0{m z97zlu?!q0-+r_@Z0t#R!=lkXc0m-%uh-iX?-P(F+)|2csCR{x8s_fx9P&^}8#ASRk zf@q^fGfy%0gQ$H+1FxEJsP&VmeavW1$m&^TfDzo zICk73^uVt7=D3SgTl2{fAZ zt{oRb++7x2dn-#HZwk`P)zSQf`BL$UR`X_#D7H*-H<%!{Q|68$$WWGH55V$a;w0Y@ zbs?8*-9KESuo>f?@Mn1hkl&XG* zz#=L6?aALQb?-+Lqa=Ux;%}tnFGm!us(poO6V-%gI3CUYj?p`T5BYqf549?1AkLytbu{r6t#a5 zVp8{2t9_5f;bp4mVS}-~{0QAUWZK30zq%(S&dy=jLLVG9a&ZLNcJmZAaNxCP=;Gd*BTIZ46vpjXLHGkvz zxw-7KyXQx)@tz8t%e<$2=VG2x=SRAn&k4hQsq=F~&5L(F=PdE1i^Bi%`MFXc?{hu} z@;Ps}ufx*zm`LetbDx*%xpF7zc2mAj;v+IiZ0PEe_}?P2dxY*?lf^wkSLhv~TdU9J z2;DIm_VsLn{htpdACE|^K+6@sq;A>@!~VU z|K|C*XMhU*m&#s%dwn_t9QsR&I z?K3}f^!-!m*|P1J5NdhOg^P8>J@?>`Mr5rjfU3HgR6zu|aF}p?> zjDEJu?8&$&By#Wm5E+$tRNcQSDjbO?Oa}d1Jx#;eg#P}_qZ zVu!P3v)BiV+oMK=TXtHKKmRy(bbEARETQYLv;|`s{G7_Y?=V!{#46_=-n7oFs^ow~ zaiH-vD5o3zn(C;AZ7FR`%?Rda=)*F1ve~l3ne)y&j37f5D_NqA#XRy02r-&7D+zNYYd_U(64NDTbe{HPK2wlOt&>fHGC5Fy8Co%j}@r3hj&8OBnVj<%N$)G(a(a(I) z2y1gLS!KQ^hw~*>-lw<^&u@>;TR9zX(I&QJNxV`UBKEE7@%U$i3+VT;s2`|+8(3sm zm*-oj8Tv=9v-3hruFWB@Mr}mK8}AU)*&JeuLJ>6W6<~{&y__Gnd!DBzmnV#UbiZAc zy(hDa#_^W!qCjICtwN3LO$A&joET15?Vzjt_Bh{h+frcG7sAT06351@JcZR7XwAxB z63r=j5>^US{Eg#Q@isA6)YAPTaaZRu%c+J2VeOh~)Q-$%9HM5JPF$QcHoNBiw&c72 z$!v+mo7)nV3^aa;Kxa^xk?w zm8Z;lhJE)%({ePgFEWCu&Ez$Z%#zJsRKwS3;*JnMmG&JP#Jc2z)$39TMk8R!Sxha} zWC;v1;I!UjS-Yr8h1(1aA0~ubWV*S{6fntcCZit17lhBROe~fD6t1dFEHVm{wRw`* zx6J&Fn!h3MuS8bz|%YBfMuhs_CE7#nS$BQO0v|#&cQ5b136E%ClYtrz#`8+Ix16`S^Ks8ka^+U!oF@ zs2n$D9OpsoHO6g4{l<0SqxVGPA2N~UgrbR|n+$VAexkl?G(=2wXQ1gH@F(|y*lrKV zpG1A4K#;~(w{W96kB+9h?hiKb9OF}iPy`G8$}Q|J(xY~hdDS*7{po(frsVXBzsc-z zb?&n_$!Tl{Ez>vs<4}XSBA2Aw+!Q=Q?hR@U8R**>Y$R=_)o89h#&zhYyk?VChPTuB zPc&N2uPDan6?$-%Vr?@c86SsW$yTCaE|Aw?6=AjsjuiCvI(!Ps7FaC^OB#bW@{^%p zG3=*B6E3dC%R?_&Y9|;8L%o-I??wDF+W~Espy{DT4>N&sqMEYDYf>H=^FTAR`Kinm{^Y11~v|dnnO!+v|CPk$;+HY&SQ$?EV9H7unX9$mLJu2>XM_9vPBd3 z2dC-RzQKvc-^YupgFB3D4&n^@$~o&EF~JRFsvtCATWue1z(W1vI+qjqQd#~^-4hZZ zH43qH(ysWGS=n{R5>e9m4|=+OmmwcCs5A7f%IPzL(}+q^TdtDTv2}0f#FutjfDzAMNzmFL#-hX9Q;x3oz8X0j_@&x8E*Um5HYb{bZ%ehdFGU^+s3TNr+ z=T>z~4e#=)xGAU((bNWCEFqEhmd-e}KR^8!l@B)E!bSD8T+FEN{0j`aEqE8tQM=xx zukg}go8qkS#ApIBSfyG85P^PEa5<%%r>^d+sjAR)*jb`c`y<>_MconWE8%57)LAn9 zGWiC%Wyornb(_iLQpXVh{>_v@SI8x8K_(;LX8Hr`GyX2oeGtxX;C$7Jv$;j$V)Ov+}|$_ZB5im1tc!JE0! z?&Ed2#lfCBX|4AaN;`*p9$K@@8S)G0uqKtqog}62T&TG=LTv@8Jj=S_>VxiMR37@c z!`uz;m1@8NG^=)y@}urFn5^V68W2SaLAs;4Kn?V35n!R3Xlc!t_Pe{IS)LyLcVyQP zq{$F4%36IR+(QmC^Cw!W`UqH*zc!g<)RxB++G+%vY@J{3>rpN}q;;2xATkbfb1atO zyI78P+@fV|G);lXf~RdGSSqptk3@n&B6n5fD5Tp-;UyJ4+HXLgP*ky%IE2V`vVk5= zjn(UL%Hg}ApJ|j-6bOZ|f=c`)G19bq{^=zzXUYeYUncW1wagy+Q}h%T3@rw~X5m*p zB^X)o0^>t6z`2MZbH21o_A%aJ5!%4et9jTRdYR*nI*BpN*emhIo>sn3n}=WE(yuFU zO}c=wmmG*f1WQC7EX_xSDtXzp*Z#NkNxm#C-kYZVY1yAWoPNJg>0^7?c}D3kMwm(o zdxF=9wE?1O;{Jcky$g7h#TEa*fkcCV8z`69VvQOtD%eCpi4xs~02>X8;sxss#Uj>A z)h2>fF<}#6yROE&ZLP)DDq34@wTP$?Koiiah?jb)irVVCMg?sJ#FqR&-!t#Kmk4N| z-~ajle|a9*dFOiO%sFSyoH;Y|Dqpo6#ZNvsA8beuTW2x_`1Zi-Zh-s#C~XsGd0F)lYbc{K$4S6ytco; zpGos?OfWWlg~~7o7uWbc29IJYq+GAwyVz-{4wuMTvDa` zqF!gr%vBs{l^_*}IjYe@9Ya7N5`IMM>X{TJVMq#+@FLn5K5)R@%+E@#A0IB?AV|=U z#P5=#`qrPq-$aEhpE!dAnYr3%Om*JOX#@Z{FxyI%ZPcgdooQ12Lw> zsp-_%!dR7?7sGQN>P-x?ewI?C2J4q=t%B;p?%cFBQ7%d(N2-YvC7vgL5D(WlG*;W!3NkKDD#z4}Kyo zpW-#tV=}F=k&rLiLMGZaGc2H2IWpaQ?#?&5hi6;Bbw7)E$oZaJcz#cu{*er4tj+ zYxA;f{%PeyJ1>X+r+pGz{!b>```w$PsneYg=i+qC?fC|(RaSkBz)R9&K>m9bf;G6(@+_K>qrmdt`Bz%HF%CGk%*T#6mQq)He`?i?aE;Yw zZhq>+@^^~xDnuroPd^W^ZpOKBQr$d`JutoUW!-!d5L`FMsKe@}qQ>;suU?)P(A zabh!v?XG=}HhJ)>a&_my!91Qg$X!%)X-SYfiKQvN9Jhj_D22~!S=IC5YqgT%s;9ct zm=Z3+U>w|t*Cl$yk`+vZC3RKLHT)S*+2V<*;|ikjEs=110cD~aSCoZY{vdP3#udD7 z_+J;oP5nD?H*wrhat$H86zUVPxof0GR#( z$(qMDx)DLoKVFz%tx)WoCYVt~lCk9<7saYx=GxB>Qx^;`NZfA&m@Z;YGyT5?D>W1F z#8jVAya3O|=@U3u&@Zaz2`8*kNN*=jSf|iBg*GU(!TLAn87hg!-{l;`>KZPSjxUdp zW5^Nwcft|&jN%bxglmqdpv;g_{CC1ABw@e0QDyvJGpb@-)eD!lr*&nS~W#_<4V%+S&SH+@3AH6B~~XGecbTqedoWl=lCXl za~2M<0(8VCefd<{_6`SL9g3h}3gN)Rl2*93t)U#Ces4mbDE z)a_5l@{TLhel7+8j8Kva6-b36)AK2ku^-n>dtYnBx}J9#xV0&~IcgI_%8hesqmFY1 zqpZ~8WpA9*U+irHVpJd?1`t3%93BXWiQ0xX3E{dE2#E)tm5>O4jjDK(oRaG5wRbG( zzNqkrNE7>mBspoJN2CI2@e^NK+<0e3TC|c;(n7ywe)u+iOk`*UM zT#xs$74{0(<5l7Z^|)m=jRqs#UNbNwDLBUDONzhJ9#2dnDexYvq1^u`a$q}1E{XC^x=N4i9^#>Ue-pX2v|{J654 z{P;ChiuU0kR(8Gs*&+e*azbkMkn;4)CN3h5ilXzeW~WyWmEp&X+<0$uR&Kc485^o!+Y5=Q0Ts9HL-w36momzr;5bmnY-|wuap{Ix~W7BxMXw)B9-e|88oR zrPBMjF-OIB`qPiz{965~SyQIdpZ@-LUw_(U(`ZJCf6=nsZn{j4T6K@2r#W%RQH+D7 zsJZEexiK}YC+pS2(USvf7y(%s1}7Pd_)2W(otM6qow=SDuOVlpSf%ghXsFpm-}YX; zh3qK47hlIV`JY`pg4_<1uJ?|bPwYdyisZG78U=C2aXhvU~+a6|6Y zyiCV7f@$L)Ty>r4+Zs;9QYcgN7-q*o8@^h@RaV0h08pD4#ieqCHXqIWzd5&&ACM)t zs{a+pG4dKQb^Y~A0%j9?5_Qw6veaFMBLn!_T)MyS%sChJY667Za7YVmE6Y zE{M3LHouQ-Po5s)YQ$q}I||E9Ffef{OU{b9x?+h~Wpayb0Wvh0F^P3ctMVj&Ci0IZqf^6+8f5@jSWv(B!XDh9$4*i#ZcD5X22ial zZe*nv$bTK^_EH-Ver|IP-fzc*B0QB(Y?OZLD zrsMNJ1MVq5f&EEM@MM|9kABb5uZ(GaBN$tMgan*bM%o41n;-)1uHd|Pab;LqLU*(g zf$Tlr`|s2ZU6oyC$95)Kr1x+wY$`~eH zkl$K)A`;dDt~NC{BE<0-^RsU7v##^M%`8rOsUYfijjfdRJD+s@-lkt|rTM>Y{_h$; z-SdAp`@hAihx}#!Z-xJBaA;uOCc+lLHms!F zRot_3Gm}eQl^1T-jfp(V6&}=VRq%Y7)--JG={A-Y5@Ya+%EuBnS&sIdX~#v?Rjsc- zK=rF}x`zuU(^{k%=>iFDu(meW@68rWaay;+yDXWMhW9i2ft$-Sy@rbd-Ye6Zn>!8J zUW@8f7&7`Aqf(9C%^aCbyw06u+SeYn4ndZ>y?henz%!}rOLYeOQa`bMse9r8wylZy zS|tGSI(4&ZWdq(L+bBL`d&Q6Si(i~6E>81GF;LlCcfg}LPXZ@B%s*%B%Z-4v%!I9N zx2{&(bz7Od0dLf=zeFHtVJ#8#r}zaHa^ZzJ z;RkcVi*v$lIpI|~;Was75u*MALq-tZY_Trh0QB<|3s^r~k`pc^tWVWbmJ>fT2qQ`= z2ulPsl25775_cB$(ogqvl{w+-uX^UGkgT9(Uj^I=F^@rLD2Q8c{h zn(~pL-mgzcy`9M&cytR>5w3RZ9J(#K6 z5`gBK!diRbFWo+d?H4BAvPTyO)Fzjy0_|n!9K--%L18TO4!}&xKJb(u*sBdKWT|zc zPx7%vMSQDj&OQwLDJ^fzK9GGF^j|;E*Y3Xr6MwogZ~c%O87wm;>v%r=Zr$rOHFI(8F6|hL`H-vw77H=<4@XaVJ3=hog+z)*6 zI~og~m-ENNEx&C@=2NYW##91sG=?AVHXxhZ8ZP`=yyy%|jgH~i{>yZyuXn@Gj^>N> zYgv1XPhv8iy!LZ{IJE_pc*`G1y?4h@GG}qwB@6_}-kB&e+Lp3?{f2YC7T_e)6llCw zSLbTGs78a`A~a^^x9#tzrS&p7_AHIl-3bX`hR9}K8!?+>ZNxMudoR6=K(}dm$!p9P zPDBX1F|iqA}1HnUcaSP1L>(aneWP#LULnVVg(8p4${D zC6}2<>D^tVt}7?2~j5me;4eN`iK&WyYJ3A z9A7&C_(e<(zZt}St$awoK^v{uShYRQmbB9xWNTX|`~(vI_fvUGb$&0(yq z7jfs~Y@Bhb_(h-sw1ZZlKkTd8{*3hHnY?y<9$VWeW%c_>3kx(d)5f%LnFNG&Xns@m zn^>Rz2`f*4o!zFv#J5138)?^z*(+q7Ids-SmZrYeCsojLw-;s=xaraGD-$-S_oF7K ze72M_%IW_?`d=>lZ%G;OEfgqZ9|zbT6W5y%YXz585_mM}8sgW0W**ZgcYH8yPnr>?#0pOJ2GlhX|n z%jchfT7cgD2u(2e*(}L1-s?>IIf^pq6N3Kyi#PLHE^~h@-d>!(pCXo)gl1f{GMG+5 zx;L19b*GqbQAS+~;;pOc|3dSGvLYhgDNbADH1GL4+r>w|d`oi2zr=(ONT6ZP;(fyN znIVvIrN$5?4OQJ`mURv#2mtzoo1>6|f&W0zHS5)R&~(rg;&)tPbB-W2X7@}!uj79x z9t{VH>*Rx-%1^xI?TUsbmeg|W1`ydD4yTGWTtMqwW|xPv_bzs{P-2J)u#`&+FF;Ru ziH7+=LOn!kcPoH*hUO&+)zj!(+I7(E1->3-p5jiOI=-awr)8mrp7C{C1^v@T2HC~r zfaf(V+fpp+>$cIGf%L}5<@VQ{kzaAcFHSc_qfQ6LXHPyHC%&7nkp zg@iKwN5nW%>?W#yK>||!jX_STKXxfv)?QBJBfoSXN^S5s>VKCl+k+@xNYz^k6VO^u zto(Q~CZPFdM5rs*Gm@iyhg#GyVtIYRdlg?@S&tdi-g5k3b+5j$ggji{XlSIM?3t(v zW!|ZOWmS$vX8|c39H=isk<%47O8fB@8+3nG%V6lTwqqPQBw&^DIVVD7mX*odn_>08 z?KL(!HWM5A&2^ z_`F6B?=RlBlwn#hl=9fER2(+J?kb;3-7@-=D!WW3icoJV*fJbeUQmCrtlOoE`L2s; z7^Ic#CqS&tw0xrZwE6%4U=#@u{!UgWFiL4)(0?@1{5Pd@MHJZJo)89Gjkv(=f!+O3Od zqb|l#rHUfZn)s`>@uo%-n-Z^R8*h?GGMwXvZHE5~$}jG^QMaHco`PoTg=)>CWxATP zB=Lz!6KeF>u+kE#Os};T6DaArah>8)k7=os_@wJb^GcxTfF(^*jz3{c2H2RS9-D#x zP1lW6`5(zRfQP7SVyP>pBtDeW-DK2!mR>nTQv=a(s4ZzdQ?D48nC<^-$6_i=u^HyC zZV$E#*wVx&<2dKy+6hQuNi$IRjY1vTyWxE#o?f1z!_xS3Fh`91*?m|HQv>HPaJ9+N z<>uk>E76g#pBkw5v&_TePQ|4jlOLP9s?{%!CH1hf&(bRqM>LM{|h`75Qtj9oJgHmU;L+pq~|0) z(@Y(XCALC(SkmqJde(pNwM7x5?M}mw_kKK}ZwU|U+q_2oKsi%HHB)2BDa8ry3_YiO z21Fx-4v-PrGNm4qb0U(3DLQO!i>g&8%0~FI2d#*gT!O*wy3yPi8G2)+-VCK=zHZcw zK~Ws%g5Zphm_90uafbqomXP(()&w?mM|SjMStwD%U0}8FM6!gNLBD_J!&neE)_=P; zdCaKVntWQ?ODL6)Y@}erE_&c>x4|CJ1DBmnJAN1x;RBeZ2>g|Sz)}9dnbId1 z%`&0i=;37&eR?=biSqb)%|QNG1hC$#*JWo=W|{R+&b+&dq$|u&cPq0G9|J_c7lVqM z+a$(xKgR$=V7Nuz@FI2`S{V!x`wWrOEUm5^m4^J}XJxCSr|EwV=;|qkMuL-ra$NX;m~R^q0k?N&6Ym>y z7=hs#c=IFGq4x2mY=sVrCC2Bz7oRG+oHRRM{`NYpM~lwWci#DO5`?SbrD!fBadNbQ z`PAB#XZ6TKDWR*tbTji1!;lCS7lto8c7})$t}~H!GfUbhl$jS1JC!5YFRje+zZORXe6P?9&uTFjL&4QP%};s*Mvo~iKKk9WlD=JDZq2Lh#>9p-*aOe(g)NzfPHmD}l( zP^hdl#Jvr%mKVY;cJIhibt)8!gzWaLSj(pkeJa<+HxCZq#5H#4=+;)V<*A-_z^@LU zdAaG})n_UEPAWDh{>8xXyhq8fST)67TzBt-p|Vi8i;;oc zTUfKkfe1Yb?q0N{*KFqLnJ`5Zgl}Czed&XZx*FA#d&9#zX5T!DG>}x`JHGkq`qJS| zWKzjn+PL_8`MRFE(t!FGGqLARnl?UhuSfOu#Lw)_`1~|{AXGh|ht&-sZjR3`K5ORS zQwi`sc!kzbJ(wSaE%Y-krwNzi7sp+jz z>yX{aYp1>_ryiz%Y^aK0C(~y(-BN9|(sjaDPP)}=g%8T&IcgUTE>mxe+a6WO$SmE* zl~+VIo%R)xUTDkJ(KdKp-t6i!l6xa9UQWnl6;}pJIEPi!qsG)!Iq%!>7ev-3( zPM%a!b#h4qH?thW)fvZ@Hav6q__Buf#u)r4UUe@u?A zsG3mGaCdV2h^h%A8tzDrA5}GBRKqRF@uRCIjBdC#IX+S~A<{56IliW9LJfEEA|wn? zvH0xLkiK)FrJw9*Pbh(iA>8x+EV(%-+;6-#`zMqkR|%IXTtT2hfk^xKNdML|ss$)X&J`9WwLwf8lRWQeHDA3ode3kG|HP)2BOX#qbt>HxzPRoI*mAMoQ zvML_WF~AAM-64jv^7A9#|MVv(?%VpP30yH|Dg;b;3uYBR!Nr0IxBjH+P1#1@d;T4d_F)biLprpU4sk4fpzH@Xg_V z%m!Pea?S5*g{Hs7CvWi0uy&JdK zg~VIqZ9S!N_g(RaYDq2bdHH~!lO(H-DT^igloJ?Vkr;bg$Ji3Ue4zHo z2TEtMA};?8oL}mE&g*2GAq$b@{Z!7P7RRriQc%B(-CEX2FL_tFI5CLxE{#`%iT+A$ z;5ia>VP8IF?l)`tXcgJRi^8DUtzP7>pgrx%wau$l@rZ)@{VG?>VyM^*{=zL%P!p>F zST*>1RV;a{$CoMZvDD0%R&pit>&kcb#_)iFuA(b8N-xnuWoJzEa`J%(2t`UPC@=3w znPUe99cN5ZFk-P&6`W+jixr$ou(`aER`qqUeYLu;M#VzM?pQL(jn@#7u0T`re#5o{ z@&?h?yYa|S{Z7_V-TkIAnzz)C^ndOhoU=Pk{;$W^fd3I+ZE8-O4!&4!2KefK{r_F~ zy7VXA@kK{-@uhyG|GF?AUv_oP6S^}pswZT5E|`g>>7x)5B^j-$OIAX5!~7-T{dW2) z@iGGzEvZeG)OJuzwuYMIDJ-b{DOayNRhJsR^4{uD@{&nd-fN+di%uEMhD~iu zric>aq9-ITpF;Fz>bhhG|D89B^gHKMU0w1L^f1R4Sr#LK6o6Ub zN18-K)5B+X@b5+4Zy3>O_k~0zn{KnD3)a*?*&4bTGQ(YfWlrZ`Os3$IA#Ty1BqHSc zN?rNX@P5u@8{Urt{3H?UEVbsvCnp6!Wm!KxJbP8*{9@bVZE3URB)2vf>a_{WFf?4V zJYZ8IrAlgZcx<2S@goUki;hiC9L&cg`#>CyMQ)FsYF{(j%2X5PSy)?@{q@rSqQ6-_Gcv|f%t`nL)g=FHpM_hF&333v9b$tC?Q%`Hc`p*=zsh&c`XzwM zL3Gg_YLpx{I;Am=>#50PG{zW~S>#aP5x}U!Cj?AVHOrk7-ucjaKnUIGBZnjyw@dG? zW+(&7n4aj(hfft5GRY?lXi3EKO^Cxh@Lrd1Y)8C}9_TNZD$?b)P?SEH-c4)3U_N&G z;=ZT*crbIk;YP|ih)HXI*?Z+8WRtTuog95kuc*0Ks}mceCq@%5M^E6|vS)qKQw-is z^qi>cOUiwV=UpayCMNz0Qpc6lB_|fQv?Y%NL$l9As9?E8?5vcmNj8jjPur$;-*8to z_t}ioIQ&pD=JZ(zkqx>_wS>S{%HAyg;fjT!CUEevJb{F92pqVT(8N)?pfM7RxnxLk z+!W+ZJO7?H*@ELMC;yRC7pww`8NO_45zeJ#P0Glm7O^Js1ao6}zq`sCEyL}Bl)0&V z0TJ5}PTr}H21NhqnR!I7ri#5jQ*+6lm>87=WZ&P&KHNML(@8LI`dsBb#7zK?;@-jf z@T#eyhLXzFO;`C!+VWIgFC@hkWyuTc+IwPDXRTL~TqU0vb|NONq=(ua18)j1SV_Y{j5 zl{k779~!fo@>qL(1BpsyjvxXV`I88At+BI+8R1*UqU6SfVT+i>ha?{#84)R**tc?# zzAE@uM!sL=hgC0rqXgW_H;^WYxTnNa(XW4l71p51%E}|0XkjfYS$W|ZfoOR;+#;}j zS^3myCM(0uI&btwUhJg%OVx14S&ET2ENES)k2WnE*y(n=Om zOthW12IIe&eEPe(u4;35&fYwiQk%NEKvK_Zg^L-OGV!hEAtWo?ZEONs>WY&@X;+jO zSMOo1VNdb-{}guIv=7sYeAtiQjC^otIqCEaS{iWQ(`Nd>Kc8wSsqc%?dpeTG$p=^8 zD^sZNI3lS|_bqxi|0u9u#6QAjKTm^(X41#kOzfiaPi^>qONtx5)W9R}w51bfm3~o) z=n18_0TJT_2rDWgoHw6V!u^`` zqfbXurgpS9JxC-jPf%{o)F&So7KL00?(|pH1{R8LUjS3soRcV^at9>=2O@$0S73{E zSXTi|Pz&1R$y1Uu*%3sW^)|Cx=H}IFPnC!6OY|w1;o)FSr+v!1-RB1c%HZvFtD5Rlo?ZfNW$4Gz zL%Y#lpYl#D7k$j`L-z$>x+ClI5TuYvpP(A)D z9}h`u(>qQnMzRFkV7J?4X0gOGFl>|?`H#cAU6-sKsx=H7tEdtv9_{R*y?DFUJEH@g zB)sVI6SNhUtVLhAXoK{Py5zxBG7Uj8TUUQeaGZ)l&%#pL2g>7E)QF45M)>dOQIYvq zmY*iYL()W3{fzJ$4MC!HeBYT?}`%)ef1|f)L|9$Vym6@;8AU6 z%4wK}<{+BpuHwK4NcXF7;~A0q%QTHFU7WAapL87Su)8!g*ne-&uFsAjK7EQbh_&hC z`SJeCLM>hfaJ#+I=+fS-v)(ynGVMyqm7;64#hAA5FXf24Sl3qEjkb+At`<8MQIr zs(=+CmKr|%=hYA@)&sK{#FCe2j4okBFeAj0`|)v}l={sz^G_>}QQRyD&U!!=c)a>vC)bHT0|OYP#GM@ksclj?|S$7SKuQ(3{br zk1j(WhjIqpCO()fg9E)Ld1wufduH`#p6`?u0Z~I*tbJ@5)SS_tJI0m@a&+GL{8*M5 z84Wx~iB4QGs=FSYQN`oxJVhP7qbx?gqEb7Z{8jRq@#IDVfeGT|Tk}j1qTB9j^`VXt zDjXvWnw(*TaLajFS#r^Fju}o7Gc-~SY$c6m-}Y_l(^slwjy`St@Kt>oD@f-fetk~= z7=KK_4~Z=qdql7-tU=1MK*GuYf!_yGbKLPxYPJa^_NOpVoJ~|sazMGB{VL3}RM`Da z%7_3s*7ZB)G^+0&AM_hb#V?h`$PC!=*@votQXYzS$+fA3fIu|p>2^@XN7Z^>`LU;bP5sy6)-gogJV_MKdD z5y7x+$}?)Q+h1H-K`+y<)RE8hxurw(-Jbb|_^+RO1gdl!TI0^?KfLo#jKq2KN6{rp zZ(1)34YJKuwm?6`2d!wL^1%1(MOa1NIpl~XiC9`HB8jt~cpQytziUtOPL8F19is;> z`#cM>M{uA@v4^EHr>4s&fc}YeLKs!Pk+(i!=J^8dX2x z;C2_v1Huf^XR@i0oKh2}#8Q7+M_8{oOH>x!c9V2N=Jixg_q~Se218pUX$PPT4Zn?~iEIMnCdYEXxu7RD z*$HxT0hKba;HodeEtUO#+^8nWgKCPo3#Ru0R}SAnJImCXH~d(Zm?;65cuhAeR&Y%U zXMEI~wKvk6jz}@t=+zW*xIV~>L48=`jxGq=lUoI?00n^NJP5VK$Oq*Ykgs9MaA=6| z#-A3@7uQeMeEK~YK1#LKPp|yS0I1% zN>ee+R@k-1Hp3w4LJq&R*YY-MEtm81HuLiRhQW`1Ht*DH&KI7yJf->N+P#gc~^ z{@&;AEnl7{k4(SHR{&ou!A7&gpL{M2E5aXmI}5ln$==>N+8E>r>b+L=9vIXmI!zu@ z%avaK_!@izSIeP)$KyLb557@3@MQ+B+xTKfi}i`R0p2_`cYuG&#WG((;6GQY%kTqa zHxxl%=o_LCs#vGQxf|jW z$e+rMtmVSqKHMawGaKQ~=e-2WFOcu%OYG+-*dc{&d2hzI7HG!#y=I)crWi-vrLg>&hrQzNLQH_)r4E1q?aWIhrIi+^<-%P{Nh)U+4;6p zbhkDFt0|RdYOZFsjhH*k16G2CVCv1SUz|)g}L|F57&V znGC%Y0?CA+rln2JvY~m%<}4v%L`rjR30wY|sftIFQ$_VKbsi?lyaIZYnWe(rW+~Oq zNw#O_4`yTpQg+`ZmVB&4{X%T-Ztj^J#Jt(M!DaTPWK^pDV##=;{XFz4KY*09haUWE z9lBa?Q!RcTu1V@J8#g(LG)2LCV6Gq(+B)Lvl)xWB?ax^d2kD4> z!W@QfE|+dsDM#-qh7$sjATU({{QYLIm|~sPxb*2_BErq{_&>^mEfT)zDURLV+!iT& zs=gr=wI|W%?uJ4W|AHss7Zxc{7;YYnPQilmE>*{$AT&2r)mk6+?{e3#ZYKnQi#fBd z&7wwr;$PzU+Y>)mup9r!aBic|JgO}Dxry$`j@~dm{v}O5VI^qt;hwIYpthiu95C#n z8}etMQ0vy*3K3Rn;IQt^)ySjYOe2kp%K<4=|1)d#$Av1$&1MHt(0nHSJ}d?mp~{b~ z1^&(Pcq#cia6oU?-}TCTKRl8yWfv?lVC~U(6d$3k8pzzb)-* zZKW6oNHF5)NR|KG-_hJp<*OFlF9#NxIc#rFr?D52Pp1>wpWrT>oQr-$LmA6VxaB1V zo^`0`jr)EA>x}kw(D&_pmXE)1^AuZrt#9M4p0=F+WyYl0dgdr2{f@2K8i^7)spDh# z7frm)DVc9U1n`F+U!wSBv=8>vn`tAMPyBRYER+6fPP*RnUhlpCIQ?@YU6c4iaM7-8AlF1X^?;=Wn$yuVj;!HbH9gsF~kfUPz-ln{4}C zDR`VK8tQfZ^fl#z$BQ%#)>RF%-$?|Xa)zdu{xVK(puS*@qIm{46n|j-F&)?3)iAnp zt&@qt$fR}dKhTp?)lGZyu5p`m7jNzy&U+9@f8TOI*P04gl;dT>W0kb#o(?d6@(JT0 z9a?lcXSn4rIfTK1E78UrqJ+Eq9&=g%hN(}y;dCh2p&HY1* zC4)FB!3}($P0}?C1H3g{2Wf6!Ot9d7hU>N30r&5_zjDVqkm$?eYH3Ew_{%~91? z0PW)bgt%p?bDrzZ;vV#v?{vN6*Tv#seV^mLVdlkF_yj*)eN%c3-zHA=aVQ_IKAz2M zBZrNk_x*yNSO=EFHsR*IX-A!ku^KP4q4rrth8cGPF;PjSe@d|MAAQ5}>ud8)d4?zp% z+51bahIgWbxV!k#pPMPZDc;lj!^0VQ&pPDO-NonLZ)Pv-f;H1KL^GK+htX2HHbX}{ zU`{g^iHT=iH8_;+%c{xy3t4Y*35GVgE>f~t#@4gQ|!0I%*JXC+~hWNPR z0tpZu-TgpE^K9{fz2~)wda+PO^I%p&&nfl}e8jhUN!j#QBnaL7CCX{BB6Cv3BymMv}~!xDkKtla2b^722sI$!kVE8l1F9n{@$SLeM!zFLd7CK`U#`5T{Z zlWudWamlwuKjD^*jAFMn6@9Gb@f}`&0}Vf!n_XOCMuP$D@TPa_QMp4R`-$1-BAFFK z;$@w}oWz-L5#v<0DMr{*OkbmF6VGj&r`d{|n$Ln`{KZ|y1UImW+!fYwV%a&uj+X z52?uPdp?0B@=b0d3}oNr)_pPKV}Lfi|6DORWZQA9BiaB-f8CZ4T&!m63MTjjMiy|d z70^^DXvWG`K=oF^eO5>3Q}P#`;@!%sESRU`AH~?Td0KKIu_}LMSi?gl$?G)JNH&zQ zkkxM?+1q6j6~5g{ko}$I;Xy@ZM{y9@T?++Q3=^be!oPXZYPXg>^H$MR-ukBqFk>sd zB7?~Ef_a*wunWrs7jXvya~2(W#zW>2j8P*YXpB*VWz|bg@+#Xl)(k2wso%MAb}?rL zbB&MWx8qvX`-&LzgX z28WxUC7GKb_qTiiOqnIF3}+Y{%R-@si|!4D%D9gBA?1uVyfW$0J5^wnn7E^l|NU&hBxUE1KOpE2{8rmna`gPOWp_-$CWn8l4Qt8C_n^MvB&oc@?J z%lVFX65{LB)y>||@Q^SSQ@^AqNEHWDL(v{w~#;d1L$mUq`>N1H#Zl?JN zxh*+5zD}G*NO@zaS;gsp&r|jYh~wh}`)CAuHWH?-rCdq!;ahZJ0H9{MW4HFJUM$@i4(Gk2~o_{a4WLAW11`WFg5djFuxwo@7Zb8mn3rZk9yBF4}KCn~GJdbe?L= z#eDDSzUwa_{JT#DAbB5G-oz$gMC1VGv6XF{L@WsZy3NR_ReQ-IIk!qFHsOAo%IIzc z^6!ysodOTHtZmqZn<6KPo$C*994az&^lnwTd9pkGCtE8h1E&;(nm!aG#=^f{6TYD> zzNMcW8<9V4;j!G4ZaW4wYIjU)tYAa>N*j_$DAx1R#&15G1LA&&^f(nug1>Jqp^{23|yO@mZw>vpF~8 zLkzq-QO|hQn~X3#Yw927`!ZK={ofpBnK3!?Z}p!}2*YcFz~tMC9JYqj@rBv;!~ ze%`NS80%QJW4fCK``UArMCnF| z)W&EZOy%lRU7~G?iq|Fj#g=svlt|32cI!SxRq z<(t6OmwFvsYrYn)-vd`HSycy(mg-DHiM%_QEO3r(xy@}taY2pZg^(Bs@vV9$$1Cd+ ze^b$%QelA9)>XCu7)-xRGuin+z`ZwyeXdN8ID?fwQQ%~f-TMmuKq&dS?L+%FTzS=Q zcWD1>MYaLx^r71V^hvVIT4*d3@HocB1z^&Pk9Kl!F&`liU^jWmr2jHk^0+I!63^uv zE7AIhwVhM^WP6x3PBLkpDvu?WDY?U3Q3!;*k*71crHY=bW|cJUA(uyspOpDbNs0`0 zN4d(#tNTy`~k_vG3zG|c)B++%Ftiuh6OE5ee_bb-gwVMOy0(jZ#UU+G%J(l1JfdU!*`SZU+)dc1SFjGRNO*K}L>W2Kl@<-#C0?Kz#?2aHj63gl z_zdLg5I~i@zr89WSM9KU3FBzk(!HEldpDPBy!Q?7Vhb-0UQ_ja17Wn9DNOrr=*)q8|Q;@LJKnB zL?4Vk)U$D%fcOmZWcS9OXD;LguKbB+Tpv5h;L}k6$NiMD`EL}@IZHOg+Y5|(0(?mK zX5QN5&DmQhY10)((@aMANNJ2syRlWsvw2Skr#71C0i-TPCsz3&IZ@ROD$AO_RJ+w~ z-OfOEUCn+VMFrQt58dH7eY}^A6F_ZyoElDcW7KeH0LOO6XN--H_e^|YR}{)GPQOe< zt8Rp|8SlpHH67uayvX3JO^(2($(}ir;V6Kxq#LKVdeVPg`D%KCym(9uZ}V0iEb1L? z^}t|tFiiTbfNo>Shm_CsQmXvto~}v|p8f-QKu$Bs@aO^5pR^euT|tX~Vz5k3@Fu+{M{n zN_eOvf0Yn!vAbhgcAa{9#@-WNRFtkgQueOC%%`6a>`XelNc9VRczvoCcCqYz54-$p zeA``49Yre$>d*Vb4;h!#z(b0Tly3U~(Xo!AC;e2)T!^Kzqv)|9`+?Ufd-Y7dz5W<} zJCok2BXZH%YHsOn3A8O6(3?ZF{xO{bI}99`H3YeL!rekBJ3blAKlBus?~Q%g$M+%K z@O@LyMmm%nGlbsWEx)?BR}h~6*ozCh5^c%CIh{8^a>!Hg^=K@>*TAI&JD>6KbtfO* z-w(~;>t4QneBD4$f8JH+7`}Gm=q32NnrQHKlb;G^sy`OKl0o*ZDZ|$UzP)!@kAklQ z4$i}uJSDb5gr9@B^EWr?UhVP#VeovVY;J4@uf*E>@^5I>1NCv;PeEax4h@k$w-KQCT z@9tsv-GgZGJHk%|zi;wxM@P{CLH0W^j}rUAcxs+A!SMS` zn4!mh>Qx=m%IDwR`1bMDgP`H-M* zJ0628^!Uq)ZQ<*0+Y*S*jN$FJo5L3Zu^YyEFqC6e^bi=3VnM_LJU-0-&O$Lwe6YPA*=j+vc zc!h{5ACE8a?c;F?K|{>%rWzg(3>hBpAsV`S+)o9MKTHdc4+Yux)mko9{bRnpT`&%d z#@&2ohPU*4%w1j-UTro0wr$D0*#*0{VRL}&J*x&o6w5IS?ImqIcjxaDfCHgJ6RSjo z)}O@N=CJti0W8n#!c_TGV$OULOb=iRNVb9JZ)NBeOff%g*{y!x!~3+_{B*qLr$8Qr zA1RK%Q(&9p4u0_X^RWRQi|!!U`G$|jCO*8!56a*%!MBgcO9>htPq#Dl1K;0@`+sWW znM8xfdOsD6?d}PW=Lgx}ns0dg9^c-Iu||)*58Ng_o;VqV#Xl;`Gi8Crmo-Tb@LC4> zDBPnv3gFg)n zMUhQgbSEWFZn#2jZrHtYHOq>YAy$~1tim@hPlx$nsF~L)+tL&HkUV)UYU4K$Vt9*S z`U029)z26_O5}X5+VwWT`qqCK1D~ww#U$8(Dz&5NSA5!_&ga}Z^Gv`0+Mxc7Xa@Dy zek$c+ycyk5bW4!Emv$;r)yMPgeH`_hNM8gL-hsn%2Um1u_v6@RijC#Kx-DH@{!p`3 zk+)e~8cjS0QX^QK!Y$_Fb-yQvt^e118@?r& z!p$@2dZxY3$G6koZz$NUz2?G3A{{-QltWLQ{d3_(e_T_4=;6{I7e$KKc-Se@pCf>b zE^2H&-L*z=tRvEJmOj;ygrl3)QnUm4CH_Cs=w~EDeg{F@p2$tV+|t9%w)>GP`l<3b zOCa0u)OKW|6T zXg}mV&}@{o`3M@g@kkVU<0R&PMeJoQhMUi$Z?yUzaek{W5zKFO(GRFdiy~S*%(WVK zt*-L(b`-VyA+O4{I)`s>ceT2+NO>BzKkT;>?Gj4aT}Fh`mz*HsNe$Y(`b?Pu9wEfR zj&RFXsL`nIpG%+ubT()+pf~w$HjSR6ZQh1-AX8XJm>#h)R8U{fHLFV1l+l8Zdgu9+ z=a>ptJqOiZt7^ZUcU~(~|DP#J{Vm(Ae*pC>RrT+q`g;pLKD=Xvt^AoukGPAkGW(@% zpfarH2X|lJ`0FFu7R6-wDYtL8(YDbO&E1P}z4JO>e}Eo)RU19>wpG!t1k;lo@j7`% zdU~|dd1qacK2`J~pXt8_^iTR~KRuzorHY>BGdo{HZ}$@6{e$@wdi^CC^zBp5F9_-{ zORraQb4EZpq0L6GweJ|cUhC)WD7wZEd0kCLuQ9&8_pqm?t1^5?yOoN*z}gKrPjgf| zoH)Pj@A|c5+YaTl-Mq=#epXM{brkjY^L7-K_#rRu+Wza|G;*%mE>PR8wEL){{>}WS z{U3XtCROwo;{0~+CYayn`4B_U=RU686J5K%@bh*Q-R6h9-mcvf`1aQ0AY-p$cq8{E zG@_mVzR!QzKXjCl0C1dB5$Ls}AcAjbz&&r`Hk~iVwoby!UqbmWA+i)WDuqp0+~6ExSOezEf5$hBr1WUA|w4f>Q(E80GRc_fR?QlA4Q} z>u*aN`*7jr56Ig1(_OG!UPVZbOH=Heo3j~Teya0O?Ylr#*{=Gk`u*8F3JI*LRrQCf zS}c$2&3{Nc(^}sdk)!Wq<(uqzRm0+0{zqRbY^2j0L&f3d(@3ps>)bV)|6O8g zRN$jP7-kFLV6Vq6@yaU*Unjn2i?oE`AeF(w3vQ>>^x9%)CF7qJq*u`lQ<&zb1m;ZV z9zY<~_sW+UBY&7*!93)KS@(?lgL{VUh*v*(NHDgW>%R{Zm8)FU=K3R@PnaxcBg!?j z)M~?v|AMQUBc2R!p%j+v_=a09c6O^U<14bnlon8Ci*D=TqphyMgZvDlW@qM#*eMh? zM{+Fo_uFs=?@Bn2FZZ$p@>!2cG}5pgf^la@-TiOjMYo8J^gz*K+`;56=<;QVTQsSX zX}zwUng0bB`~AR`egPQ^|IRALMgQiG^u5ZK`EF0w+c)yJ_Rv6|C_08y<=y>2ma_YBqJLzsp<#c zFyZ*QpQ)qhUw+7&ekI(Ks(yfP@2EqON>dSz)}BZz68?3&BdA}mh!lTTUoRh>s?p`) zmM|cW)2m*6=o~)pJOV+0&6@debYy;g`5xY5ukjGw`ov1_&jiAYh_6~%zjuafYN|fQ zcVd^C@;$;W9U$IF_}V83<(%$S@2#2N5pT`hPJm{-)2;R>$K59@^m+}Cezj*RPdAW_ ze*JAE{p!DulkhrT&P@+566a&>NrL)|rNG+nj}s~ej`%dd+D~6MtS$31bre0}hrEg_ z3~QJ3?G3<=lRk#39ir}Nixh7Nw|tJ>J4z2*J|bW}c+Ud7LApB_PQT1oR(yJUl;zF^ zhJRZx#}a=#Q5LanxKj8=*_(?^-REA`$~V}kPrPnBt8hghU+&Ni5drBkF zY~tIE`#XLxdoj1W=(JYV(1!KNNFn|kY3;vhJ=L_u9#oi;I?6qwpey5SdWgOF{-*W^ zLuE{2(lj}Y@P2QWkg?Q|lxQJ6**HLUl%F4L{CX9fxZdSmM*j#`ZZ}PD8Fu?V(1sy@;^zr$3xOTRsH_{6RBdIK?djZC3ZAaj%ZO z282q2k7gMaKg73p z493{t@erp^#8g$nIONEvwyB8$boihLuz6F**b zciDgJ{j043MPtwX%7IqRo!BsH*)d*PB(kpmHp=#ZRI3r^mV(QASIZ92Fhb*-NAOzc z1_b}CBX~K9pTS9|U_4BJ|K&Q#&JlrcI+9&|;W>&P;cGiBz#`(d#}_&eP{^tBjm}>< z`h`sf7*D*Rd|Tj&vl+a&ctT5S;|aa94JSCCGdyBBmEhPTwkM2$hS1w`4z?pLv2e|+ zIr@P*Kk{#XfJ43&(6_A@+&zIi;*Zb3@ecUoMUr#)V-=smAGCC>opds%JtLd zo2ie9gPXSKC6e&GGf55@X}SuDZnLkE?9b;yn5Ye>KL}WBr%?I;${=sxqvI+vd~^~) zJ3-Rwb5FA@drsyUR_eGF7{sLYFqh#0J_=e}2n)$g>t4q}+DUW=KO6_G>IT4lRFPG% zq5sw2htdo8$m64DiSzkr5kdWVcOGqgw121Z(Qk={j~4r>)N|HL;-d$G?0YpBADz#) zw-c5mdCCdWUT{2l-FAcXU#_$Qn3W2RI1=Y4*>f^So4k0rTN#B}PH zuV<9!UznvkdTp+$dYboL%Fy$FMjs~cf(t?7>H1#srE65LqVdf*bT4(GaWgOGJ2G=L z|0BycD3;f3?3`Zg#Sdb*SBY>Xm!9W(Z&B?BtlFO@KndKtFJi<4f9*>?Hu*b9kg0pzmSK8D|xPc zZSeFVN5*(kxl#J`|q!CjUp9HpeYW+i84={=zM%Lw{CP+Nu zEDBeJTZFHLU{DS=@vVcyEz2mESc7A6AfNI;4W2peOys3!JHmr4)D%kVIJDzidQlLb zJA-OfQ*KVfdU~|6BlF@`hrTN*KJ)CRt-@UW@l9JD(uNAGRq}UE9h33bU&vtHO*Zq} zckgN4tDy=ve*t;=e&X@1MVDO>-wG!GLFB0`YZACk!~acNonQTP#MY?C{y5?cY3aHB zZlm8eMCogR!|zwqW>-Oq3No49qnJ^LgtN%p$`u6Rx#tO<%~o$s;J*$VWyYWSjhfO2 zZUayG_YF^uCSFWDQ=8a=1AMCQ5etW-MSWD(IVc#fU_T+;{0mTX_=xLmJs0dL^k^h9 zmYUR~`3=O`n(!k%78Y~wK6WB`liU2YwsTOveahdTxTxmvKG!#FV6Ep@c9UP(m>zg$ zjnb=3E5eV278ce&7-f6t>ibYUD+;dut!{0IsD)E&dbPzj6lC`yU)bN-g_avkMQi!Y z>iNj$KUsQxFSOr91Uqj+#{G(bt|`M^a!9%NJUd-A$sy&OuqBEq^d)qnpOM8xr}DAm zGK;*Yv6yBB*HLsHiTd+S7>{(+VlXxEwSP*WR`2z^>DA}@IXa4d803BR$0kYlGD{#_gQfwB~x93i)Ho$$~ru}tQdoqxO+I$oGUL+Ms^&` zF)&s1{C)xGRKv|ffKDGuRTZz}$tYo+xQlGoiR;+f@;foWb>j5rtP{WSb959f2=ac* zb>cL>y-oWGBI*-Jps4T0-wh8LK&1j`NczGIo%`|}udAC^6t8L6Ns|5QoOc`y^SxGS zU`-x{7oGfF_GdP(h=iME(5oJM9E^N<^XJy^DeTMkB0w9ngnCnm|{gi%Y% zNWmI(?25#MQIxl0j;9;XExlSXR)bvv)_Cr2Un-_V6*V75MSh}L5P49oJu)<)v-rEq z<{Lyl1d=a)TLx=NbQP|$Vm zhYC8F?p7;rSwGDpY?U1dOs#%z+UM=2YTM`S#ZRbXLK*-2aM^Z*U!@%M9R|;}rt7Cx zulqJO+S{6D_j#+0z$oflZyhi&{bI+cm;-eIBkA{7Yv}YJ`4*oC^3L^hca2`7VDN{; zFLE}yGZ0$~>3X8F>I?ew#KiMj6uz<~LUCQk!b!qhzf;V1$)<%25}QTCZ1pFf)>%Z? z;q~3dFXKMJ#=R-T7i?VEc|u zbM<5;51iHwC7ZQ_4CtG4fSlL*|*rDD1?b+v7hieT`ArGuTJLk9J@&|v3@$j7TQPHlO$|texKtRh-6^kYs3LB3e647~mbvI)Z;t~-&IEe{1y>izB$+0CJktu+O%M>>xv(LFtXQf6g zM=8$<`s?NTU7JRg0cFGb_^gtG`hFc_%T$HkI%j-IggTZ!8(eu4N~8rf@{JeWJ8Xqa zBlG0CX&e&#vNnOM?2ujRQhndK(@ieXWPdDwC2rme*2neJqlXV@viTrzsB#WIv7s%i zXIDAJ{~a8vmUj-!pHJjZwY+|CO;xDjvuLu%m_&12C&6rrSlL>O=fK3O*BgG;`H3%2 zita5pJzf4&e7xVZ5!;Cc8T~VZ&q0Te$oEg%xe;Kv(!c25y|eu%=;SQ3KK9}2 z6cOI4{#rXQkEe?C4JM0Ml9nLsuOTias6X#?_QwF={kN=dXDT=Q|9&cEcDKHrA7p=P zhV|`xe0wYQX4~g>gTLd~Uxk0)ZNiU6z;+elAUfuVe|9OAlPqZ9=BET=r(SP;~ z#&zH;1Unhnh!l}W`C$I<<86RVnU4D)5#R9Rt;b62D7u4e*6W1M3Z(}2f78Y^Ni@A) z;HOfqwq3oxHORipxi+Sg`Sw0x141pNXCW4h9uqG_6DWBD|M4s9K8Nspf4(#F{DESr z-2NVBTK=`#TG#r00l$G$Q0L(8`wj98dZGU6WRIGvwktOT^A2>eybQ=w1E1yxUz^{# zaj5=1pW^a9-aFxis9uDi^@(J>lN5*V{ayRgcyUM?o@u+c?A@-tQolVL0zhK@XN#zn zjBzJOI*rOQasli{_|~6yz-Ytn!*3XNhZ7BU$M~rf?0iz#tqQW=|3ky>=X-$NR?Mdc za9R_xHD~7xv(u;O%{Z#zb~vgpaAoj)OgH*!cJyWbsz>G8RkrP~`n{^+hJRsu%)#$j zz{G?mzMD?a`CkR=U?1DnBpB`0?;6lv15;noNaCHJ!@jv~?*e`U|5(>v7QYq(K|Ls% zL$)7$*GKHy!wj*fzHW$piD(d;_ERZ$!%87`U66gUd3ILc&bN0c#u6i2&1P9_8vi86 z57oZg;Ej!P4R5U9RmV?f^PJa&-P*jJ8Ez*(8#ekU(Q{=J{1;v{z8)m)89$<6_TKT? zvkGSS4T>6nH0+uwXW!J93xMcqhu@3)K~y%Y51%3^is9>V>rL#U}s`V!%c0X1uQfOdLob?6vUFPVAl66RF$j_2!r zyBerER7d#r>d#9R1 zk$$Vv&+*f5DAo~C(oMU#T;pMQSt2`KTD~6cyQ%A3dN{KpHE-D*Za3&fs*Gd>p@>4^ z-!A8jE@rxTTd$_BsBkfMjhX6rJg@5oee=Zcie71%vh(l@-A?5i1s$%8=vE4rNIVSr zyj^Kgxq4#a$>`$2v|yVWwTX@FR*x_pG{!z!MNQ(l<1y!$rr9-V)DKQUvT&sjyV^-S zmm(XVDrop|6p7=O8ubTN&us*fW;xE2$f>*WkQgCu_Uhw8TpX~L)c8M3!Y$Vm&;b(^ z!2BJ-(d4z4=5@G*tw3FWr(5Nm{J)~uJ2?bvOdHF_UIt9Ng)#)<~nOv2x3{U9N{KXZH6VK3tanx^3rQ`#b9g>T)O@*nKVkncL3)8<*cG zOcod$A#Y9*mPg-yzmbvD!sD+jJYF^z_r&v1Mn&F%x1qebBoY~-MS36U@k7)ze#`aS zbz%kMG(-#FK8Y2Z);7Icpaq=SQ8qqVSYI?fesqt*jZYT4P%)Xyvia&yQl7%;@!rZ3 zex#=sDaF$hJs0+9*gKy98m2Sa6{h=ZC&2N?#Kh*h#5;Dp7bgPVcVt96JEpgWANf|| zh4|A2@zp&yK3NbR_rmnVw>odiVSz^`_voHsa*woDsNU2u}(+!qQ8+ z7~#uUe0?K0!exWQA<;+o0R`G4heHZ|4#D)Gt9|D^$VlwvnV8JTOS*HF$-vs~U5&VO0Ik1CfB ze<)M`Nyx^ptN+i?px~dlz4|A1uYbYj06&K?w|`yz@A~kcy1n{O?OuQ6f2#j%zy8VF ztABF$`qym=;9rE|{B`gz0Y6RP=WOled)=p?#>aM-@{NN8*&I_WcaQ|bpU$?8U=kl)i z%g?*IZ1WG@48_b`V^A3fNE`8%a(oND`<`othqN1w0`>M%{d&J6A-9xdn@VYp_U5}% z=jE1?a^U^ATPfvMseP1qe78iAqY@={ypgWTom8dT5+F$AkT;}Tsqgxw4E!!mP31x< z4PI43BAkcpmZ%a+l$zu{)h$u0M#srbxTCSw8ZhM_P5;< z_sC70+bwaBpC}RRo!2c9o!P3D{PgO&B}%Cg5+wY*?{`at;w@1-)n0!RHHYV(U+Y8N zEJpmBD}BeLMoNX;d8_7w5Ye#k_wtQ++vMLUpoo9fSXMsdtME$8@UK+(>d$-;-MmV| zx?{pnt!|eY0lvWUrB-*%$vY%ea!|=Zu?~eG?u)t7bAsL5*2{aEeId3=%3@{=u`Wl7 z9S@YGFQrzqN90$1Sx~iXEcsQ(a;pAurfSi*(Rid-Ovw%S>E&oAtUvQW{%%n3jzJ!r zsaHIzf1Dr->g}a^4-EG6^Xp&Q^BbY$5w@-zN<@*L_|uBJWWv76ppQdnqo^NAM}sX*svy*q=zxPb*HbT1>XpN zk8BC>r%A#lik$v2q2=RG(75+4&j{+@7XEVkN4Shqf_7-OuSaIum4wy5M@x=3;`aG5 zwnWlZ|J23U5{Xk2sXj^)lgc{SyC-&fA~r02FIS5D+LibqI}VF5keO)sIykei{q~Ch zCpo;F0ZX%x{t2ul4(3t^#-t(X-yo!N`7w*H1HUO8+s0Qo1Cyp@{aY5A1P~d@KrCcH z6gc|lFsGSO|3qxWWYIQjSo*V1^5In}CsJo)VB0RQKsL?>4}Snq@Vt%`;@-bCXTP| z-=@!l{z)S>tu(_3>4(2UAKCG{V@LIGyMM_{TN2*-M;C0!GF)i#xr`M3%gE;oxJm^3 zEax8!wXYU#z8*m9Qq{Zgnf{PO(>q8{_jKt6F8xD3(?7~dU+t$~kM2VGryD0q+CLL;6Fw_4YuK#yJBcy-GXL@)}`f5MDfQgFqrW1v`qKrj|NUJ0hkT~@&l$hfLAs-lr}+%5 z4b7j?PiOs>*&t7K?(qTJI%{+A(B#*13j7Ehb8_nuzFa*rZ{*dpgxdkq`{&eC<=1m3 z<3T-#@tOWbPJegv)BCyfZ!7)VIq6@7{PA}9-oj_5KXWp0$V`z3$3cSQ>;R6A_(GU1 z%h^vdWyF$?Ef5E8OE~5-H@C`LKJKXQ#s?Kty7rbVvGxuon)YITD)oH&TeWv&kp0g!*4~#~E#lpR9+2LE z`Cjd%6;tlF_ZX4HeN3F+-YW#Hf6KpZ{X5FFw~}bud(}^+Op~?ue2{&NYcI*Sx3Aip z>bG~fVjlk3_3r@J-c`i;?M)9VIL@{A`lHsr$wbrM3_q3j`dNEt2HDq+wf=pFZ*LKL zLV6A6clEEAVru;Men}*8eTnni+sL&X*1vb~1IAeNBiG)0x~-$5XtSS6nLB?Ye6A0& zpY7WFJ>TAVwHNW*`?+FX`pEUKw`=cL#QE*b4Jx?AwYO!l_3tM{)82ePmG&yFy{m)l zpN+Bp9nQD+3VK5NK^CIw-+qcY$8YZnB8eMLoZsG{pn?L|-p^cnJ&C5hQa_b4%kNbG z!a?>quDxgeL+#Vmp3MDf?@`74yVLcr6B{>iPY~y~cQ--9=k=wA&u_c-ZX}xa7W%1_ zInLVqb&$QkYwuLPy^ZJz=~k*%d$o#b_S-w!;d3H!etU-m73}HSyYCUh=iWrq-Y7qn zdfr)}{(V2l{+p=bv-3-8pR4vZ`2BlLF$04Bv6`jqo5cC;wG*`d{b{iE?=aWiLqyZw zDnFGnmsoqtg6s#m_O9UD8)W^XYW43t#oYDb|HIvzz}Hn(eg6qfAwb~WooLeMBd ziY8Jdkyh@d2|a-u2vDF%!D6vinQBR(GPEf-p*Uf>K4L2$nK79a9jcEu$h( zwb*kBLj^1a!Ti6!wa>XjC^S>h%vEyCe!Pb(S=eSbV%QKoKdF@QQF~XB zNZO}Ji`v^ZuHf&x+xX6R?Y;SqwO1Z}rOaJF)c6KSH*idM?LEMIc)Z%HkJ|g0Qr3rV ze9t-j{gSk(y=&tNX1n%waP4JCW_;I2UuiF8?OhRP-^R6f1n=SBScqmjBK$Qdr7ddj z2&@p49Yb2w-sj>9c5&_9aF4-rHX(JXh^)#1J8P zKBAPesJ#bBB<**kMeQx*(ExPIaD(UPU3<5ZOnZx>uar5}+PgE({%P0V>AZ*As=Y~3 zdnYR8>J1K_`?>Z`CM|03u(*Oc*WUei+xQM3nfAQsEA9RLCXMfqIQy^74Rg#t3BVCv zi++$@{gxYFRw>m{dpD9u*;h%6+IyNu8{ZOqm*I!QU3<$&roCsQuauc>?L8i6Kh(7s z@E(3n?Iol3zNeIX{^rKFqigRX(xUdJ#1$Ov+WX_LZG6X)OnXzKue7&|wfFTn`&x5^ z9P^*NhYMNsW*5Ba#<#sv8l(0uAd#{=kruVLX;U=5KjWsX`OmfYSCVOObM%!mx7;Xr zz8+`)hHLK*-owMxURBiI50vucOKyDqEF>s~9>b?u|K^_wZ>Jz1beB7Jcrkl+&X2PIB$-Pg>O89&rVwuDwfLdqYU3y~^k- z^(?tT<4eTZFLv$y_8-(fMeUVPHOr;@Nx%bf7^?ST9r1zen z%hKHuk4^4$$79D4;Ejq5>|2rn+^q!`1+E2ZCmy1 zubjq;g7Xjcb!{W^_K(OXA<=m(s}a7nzh)Qb{)28c28UPJ#!r(%v;375jW@9SVp74q z6*Qlkdxf@rxoqhX7uoz(YVjtoBt+k~%|qtsMwfU`0t<|Az&fNh`mL8;C$WoH!T(iu z&76hQBH(e#x7rD~y$Uduw(t6IDS1;JN9~!M!Z#failH>|E_eE+?9m*Q_T+OON+Sel zptM&3PzoMn_*BgPO8LKj1bm3RiZ9_cOH*^N+e_W2X!XZ{FXf-Tc%I51UZE>pRle%q zC=Y&Wj#2xW`UAI!pBsTc-y-~c6L`>5Lyue^kK^5X$yu89tiwUf-n9N^qJpzE;3VbG z8L9UaPH43}%zm)iqe6EuOIPaQ>Bh#6Jjb|kIRyp7D3?{Y@gP*>%c>`+q(7r}WpZTc?00mOZDq2&G<9O?Yr#F$i|9wjQ3ZrcDb*N(L10F5)_9|dSGOeLyar@=Zr^BH6y7m68+Z~~Eg9yZ7m(|G3L zStJh}TYJhPJ$#*D=bz(8wB zp$hWnPFy9rej-eA>Wb8YQ&;S-bR6{`BO<_ey{@Kox{$%>+P%{37eJuVok&sPj(J8~M=WzAR!5k+bgt&pmM|t?doB<>bof(oe3<{AFEcX{}_=x2Qsb zp%(G@SgqU_J2jp{QHOs7mq)KmbRJCJz$@E(O~ab@m+AEt&>%TN>?N zw}eWol4RCHjYwVB*_MZ^RxpVmGA&B_b&{is{pq_?TCzf~?8Nh-R*E78@VrlRofExt+LNKO-be%pdePN0wBw3_`sE3Udn5UE#4 z)Dg+^VKC!n6JB=FdMs$EH|pWLiFpuqE|(dKCq-D_*QiRvDG7i3S;cR+`5=2EFb{wJ zY~d8F_$1Lq-3o<%Y`Xh5D(7|I><-PnQbVhg6i91o6zPgKILdok^)!0N)v#>%hbK&i zC%T7TpWrqRzp13~JYK4gUV@+kSOlmnIarP8Ev3PvfPpOX8e^9EYsz619^ck*0rrO|`Pu_ce{y4+EEW$3eXL^Lgwy;tA^c z1oS`UnGI0&=<0_n$r)A|jq}YF%y1PTg?At|KcL27&PHa+U``KRmb|n$z3Je(kkl3l zQ=yFXt}cGl!4-4K2j&0WxvalZ9$Yt%l*Gb2ujePY_a^?PgCBH|nJe}tP)X`&Kg*$x z*3>bnR_>We4P2!LS7wyIq%Wfv{p-u92l~fNovOti4Hq25pa*Ruqh3XwXhB4DO^0*) ztnbQBP~TIHmGkGR`)qjnNZT4-0~z`sMCf!XvE;avB2T^E>kcUpmF{V@=x6y*;CJ6y zy^4go-ZW~(MxH!05%G`5yTTBnH?0sD?>!bClYs zPpu?Qz!csQC61C1n*?ZMpSCJNLBR$%=gb_fg8@k-yUt1@$i`Qo0l^)H6^9s*C(9Sy5sPF~9^bFxP7hjwQ|l5BUVjgE&* z79=_~t*G;D8WQ(}9SWD`Zu{1t_0Qw_WpSkD(rNT~+8g-Tn!|YlKp$OloLmr~{Q+w(b@YAYsmUvHRmEa6QG}`r)R|9p9Flhae+SFP77WB#M zgS<9R?yOGo3b?)I;HK(&p1tmo%LpHy6A)fz8Tvv0IfS!5SgiZ{#?0BnO4~yhtFTV+)xIu`)JW>$ffyz2^E2#U*uxtQ)#1YID+@rsiEN(XnlukuAznORZJrE%w+ zi3PHuO;a^jik`uctYn#l=kYPQ$4tJHtst!x8Gm!#|3KBd&A9>E8cXnuterFPek| zdNSR8;fj*t_`1<(#<@`>KRAjo(YcT6)o{Mb1K~Kfv+l2Q@rIG0{L{c7YN;ejZXybn56Oaq(v$=sX5HzZ%hZbMT-MLAcv~khkLQ zI6Ns`*bM(k0F>;DMd_l;@UKe$rF120NBJev!`~|XOSyD}v?O|XkCGLoF`8GDU*O$B z$Fp4x_c7mGWyFY~9z3ofXD-@5)obJ`G_jy0JjI)6gB zXhL&^r^kg)RAF6uBhq-drl9_#;w*|Um%UW=$L)s)@GUzoH!g>M*Lb;WyajgLZevPQ zX>;6i_}+tbSqRJSsIonAd*NUCkbN74)9KJnjAs5D@@KDTI9roHPn?;TKL^qL|4I2Xhq^6Rv*LsO+wx~g zvHbBjJUkzc&&i?eJNFgMk2ZfLF5V69Dv(Etge88IT+pNxWD*l&&_NpUJ8(FMm3JTO@y)^fi`0Q~8#Y zKl}0Jqvg+W+i2-&dJo65H7!XQvbhu`$eTQ86(oWZGASM0-pgZ4_sHe_!?cdhEH7_q zc;%dN&B4fOuj|#e*EVL(#ALbwGcgX}OwOMtJ9kRfvfg7|cU=9z>W4j(;jgP~7~FgN z02NGM?C`fK^BDP=B?Bo_lQRokyQ9!MjY_*uTT!$=)_rHpBHX3`5t;(D0tE==l0y5f&G#=! zzq5{L{8I2XL<%0W;P%J91QotC{dv{0DHCaTlU;j}aJBJ~V(k^K|8wJePOL5kPvfhM z$43!hwL#w|XJYN{X26>cZgt9?)9aePJuqN6`;T~?7&L+K*QqMT;5Ty^#K14b?oVLS zDRxm-G&`PR)o!f@(7pRfc!HTIeb>GBPmSI`4fs^IT3Ia&|48FERc=!zQslHgqT{g~ zz0!5usd3iv{V$_B^wNLe6lxN*rF-=9Liog;Mt@Uhlh#FztDv)Ja2L^#X>bp!#qOP& zte0qTujpMpjOB{a^Lx_Y)B$ngrc9)`shflJAJg(8?X82}n=%V>5*JTKgvA8dIjcaP zJs>&`$M22Uno4qv4@XCdi+4m+QqB^fcN5_g*Q^K6Yv=-kM+yf!;IRSMv~Jn zZ(C6$-@mD^dq(=@T)ySx`w@KUzlH9(O*x$j21Ye>?HbunS>LjjmDP7w`y!2XHHd^} zE3*m84%SDzhh}$H_qQuHHf+2~+g0?H zNw;umJ9lzkwfqx~!a2cccI^>N!_T$l*R#7xK|BU=xSRGG(+w}Po&`E-E;sJ{mC5X( z`%od5XeK&O(L34K=J?Ug4ki!dg}70#H@QpGO<$LKu7B$5ulP*|KXDUJfmPv|Z{#{T zayk3v`_O3xo@x{VhN!{(G;~UH;70JV>hjhc{M5iVc5O*>y*=%$g?{4v?i-&Hi(^)Pui9_8$?XGi`UpEWxn$pgW0Oy2Luz-g7L`6|)4iiWFWm1m@`d8!-opGkB3a2`|S&%LWs35(4Xkvw$c zN?iP$MEKvG2seDja{w%2B_V$=Z{LpfbKxeu;+N4paG2!p4g3M#TPmO39q>o=V)lck z9ZZ!g5dTto;#Is={-wC`EJ8IqhRQV$MfQiG`SQ+~J}WL8zWWPA?OB$c@x<$YtMWxY z*}QeFs(jhxcVzDfm#Nr66m#&2%Y}C+eJ|3T6n<=RkzDWA*Cs@n`}(WmuV?EkyjdWm z^P(fh13OF>0Y+*&M}JIwloMuc@4DxZ2VT%6eZvbzKMN_AhL{@$FTG%_)cdv*5)03%1*pu^$L3Z07Y$qs z?r^I8@&bKX>H!VWLZ3Bm1PacP&gy<bKSl`O@db-!HvDn=Z`m402sX}TYtX`EPDwn? zozLIJ;r`9U%wg40C}7(VVe61wfh}RygsFz!ME4)W-cK62?3dHc-!KVeSsR4 z3;*;}sas?)NOCm;%MIbQ*23X?`IfymxkONuc4#4bCVAi-p zGSRg&oysjI`-F!@v^ww^p6*xk>4x6vpYRr4@z?sx^%1i|Z#(-h`bO+FfD;%& z1=c73DlJU2)0{Bvq!Pih7)+Ag0+Rp)r<4TOY5nRp?bf`^9Dez9`s4;Rd9`=?+Inw@ z?cF7I*(M&@p}Bz_TGbpJ&XK{xYr(&7dvDqIB&&i4)UPyqI%tm&oB-}%9NvK2WqzO3 zfarjm9iZd7x15p|;*Gr-D;Mtb6CpvbqTU=TvP&p1nCeg3cK(3FOd;7D_N;3WpT&L; zzhtx`gg-Im75P1s3wSv)c5wYAP`#YDI(TEL|R|eyMyRmo=720`ngev z_LmeADagzds2p2%DW*{f6I?=}iLQ63KWEzbwHhGnx@8(14j$-%I$unKxBhs` zH2CxuXz-aKbkT?;P z$lu6Da&UB&=l|3HyBtA?eSGQ}Uc=RoPok%7-|@O(vdAkyR9gw6P(a0gZr9vaF{nox zmpCc7TY9S+IovP%YhVTgudhkPOcKxhGE!JttQSe)VMt+Dq*$OlPk~6FOe8*K%vZl4 zS%loVuz;_Gb(68h%r)Z{p;+IzPI&TFYNgp<-s}&1QXJNvj?5YD2Y7zysL#LEx|ZiG z$5OI-1R0fwcd}_vi9YD;9o59z?O&|**4?I?`y0YF^H}-b8qd4xTe#;oqAfQ}-m_n! zitwF#3hdbtzG@4$^O-8RVGb1{(Yb!S=xP#ZdJ0UX8*Z24+;)N&T+$&hIaH+mzj2Gu z+JT-VA06afn`!@6O`3%BB#$X@GHzC6=h>i3y!-FP+ z^6)x>&lRuZ1aVdrAMb(zC;>N@7&l#XaFU*jkvci8DoK_1uSuW&&j zqnMDa(Ss`__ng`#=J_2Uz`sN6EdP#9`JIBOu3k&e*yNd5c%u}Rmf*S$QiH4J@eSe%*?Tax#b@EN}?Y6rL z_$iiegP7|2n~LOHPJ@idUU~mD@p$sHZMft{PO~!0vN<>qmMsvwC7A>_MqtMj=06%u zF^&F`CVy4hWHugXunOiW!)L^wO*#Hd5ww+o5svhg%0ljB4jaajtyNsP7+@B1>5IIJ zs-<{DRGwJ)fMe1hb&y!dq=nq+zZ0|UM|*{Bkw;VbmKmEC^JpV(jz8V&J{u9bj8&=>x8i#+TlHRof9d_@`MOd71TW$}VpSE*5`8IzVcmXCvCxn~AfV zq(e%TL|9=pHvQ4*fvh}`>oRrnwYec#(LTRm|0`;r#-&8k`1MiahaIavvAm`IG-fvL z9&QOPEofT{`SR4j_czl4t=-FIj#4jF5lvUv{d)yXMg2f+JiMItOjAAJiuuaTV80qo z3apx)2C4y4FnIAN*LfYOJ`gw4#-ch~lbGto8&w9JMPG zyNt(WJ6JqlFhtyq;#VOXt7?>>I|_7ivWgU48c>qhcR0DtgL|N-mx1~#nIO?u<%@k6 zlOh{6_1d56k~uSx_r-onavM+V{dX;u*ZL26b#j|T?*TQMFd@`@goBSkn#Mvw$Ao@q*hUOfqwkCN&Q%VXhRi+?(=5*ylA7n zjd|($(V)I(25)^GQmFN>uR}JqBu`$SX&g$V24_&bUS`{s9nvE8Jw6h!vg5WWWg3;~ zA0I`!`q$SX-q31@#N0}#BexRj=;1RH4D$k}wT?-=C3cx>l-AcVU-j}&Bju5wRs4`` zk=~#z5A(I#K4`ClfLnF{rO%ax>}RefB7Rmbym+JEbsiU;_VOWo{AqZb54-Xq{02t9 zDLw2+yxyyWL(rfX5pWSHVoQ2c&hK0U*j9}lAKKHj`*}JhIy4~16t@~=8O81CDDDu{ z*NEcUkIzwC+kT?7WjIlBA`fY1N-<#O}8QeH$l&w-^P+po|VzEp6w=l ze5jf~!`O3bq^;oYB!9K%G;=%>SMn*gbZWmzAGJ-jqq&78I)~B)k@?hu9j8Z>mRUZ- zPSWPrgKqwd_1>$=B)#{-Tehlav|pyR_wvYrkj;hVo)~fF=yVXMZ`>VH*9(PoYM_Pw zTrEM_5&*D7$u8FR5)A99%?&GO;lHSn#{PXvULGPF{w%DFHrj@zY)PyJQrbxJuTs|R z5HdJAjQf8R09F4VoVV5f|0YoXpUmx#tQ3me{)o=^=3L-D#Y@^>7g=%5(9hY1 zdp6zU*{r$BHfww~FtAV&)8O2FUmD21!mI4dHYeJ;VKHGyoL%#$F{*O*6}ltS=fq2+ zEZOq}>z?qAe(7s!K3h#nRA1Pph$d@o>>Y;Ncvs}@@RL-L{keU@PI`L2{CLtRZ`jqI zX81)aafEJ)Om;Ipj_hjT0ai|Qo}EZ?xZ4lSzRK$AACdU@fHBn>74pW0)pSg&<6HS1 zWNb(W*Qne7Ba7oM)f}&nW6@iW7-2?`7|}oY()_M^P@jIcg*EGVKwY$EMNn_iE+d>^ zm&wgnd3#u5;Tw@PY+zn3tvkMPHirm;+9ennDTNprFja@N#v_ykVfZQTv!%n;eH-yKf1bIjSIU_%+v_ zobi_rIdx|%hTlO3)4w^$yA6n9Inv1|TmRp*RXK9z9P#ZEi4x7AYzC>9ewpn-#A9s# z4z>W&OWRYiERijM6bGjdNEBtx{sr!U-wq}ak;|4n!||Iz(wK9AwUguD+Y9*DeSbW> z#b{56L^*2QJQFpr2^M7H}Dw`_tX&i~J0V0NS`u!58b|g9MMMIIj24ir}J-so>p>GM0E#Wyy##iZBdTul`xkV zz&0zqtn2oHI;M(eJbzhu#aryD`tRDbL`Np#+<-UV#Ol^Y-iG5*r~`PlHcf3Pm5Wh* z-E;ot(zV;Krau$qGXtY9D{XFgG0`cQG($7&&orD|p1AzH2HCo+pG|jP;@zon_yP(jSG`BrZ+i0^4syEfpLalpKE1LVn!-KNg^yIec z3Gzp3UGs7p=g%X%NBqND>OQix5%0*$HxDf-Im$14OML{*6V%VH34lSq;T%e2Jb6$H z#8Uxrg&?~vp(@2KNB-dBL-tFZ1&}@PO@k~3`ZH*&!XRwW6~0yTTi2r?qXGc!NioJm zY6k2-BR}#u^H)U>KO_8orl5^AZ{)G3dZy99HV$LLoVKx1Ff^pP=a_f*W(xKa_rF{v zx}U)rSGPVl{JoIqe2&JYj|zVis{!@GgM`45AaHbqz>D^F_>+?O0rd4F`3Ip7MJ_^L zS#_#`**9_dsZB$6DkSp1w9RA*S_&W;xy_>jPrjDch#`jAoaiMb00E<>) z+M1V->>mD5QSMKZdu(6hLnR#*^u(cjMsvdpiLTG)Q4UbR$y9kMPSWc*ue)mkV{G+6s3);eA6~HpW@p3KHe$MZ{iW_y zJ@pRflIAfjBHQ4i^15D%3@>n^D|l?^OI)7*vZAdI>y`evGF4UTHEe9(;7D<1Jql*E zNeQb3mTN51KUIEMQTe@Hd7_P6i0U~C9^ml|9(Qq%6M6g_V@q@LOR~k(X9WhhhL_B{ z@3rsR91FS&t1Ab3B)oDd<}6*ewmC2vIMAc@EB>h_CCSHC7RN;Ma0E#9Y%#{yJt7cC zKn2VO*9f5BDfvzW)bNmA2Ty-#+^Me9!JW?Ks~5TDdZO$1FsK(qa-4(E3;3K4oZz?c zSoZEjesl!htqbJGlT6K~R=N9p0XT>oPq_we6l?mw2eCCp3|YX5;gKD3LZJpwTytn& z*&@+ev*ydyimlLf5cNfX{~C|R_RUK|xDrxpZs=|CSELi;LU4OwQ|YV3t7+UmMDARe zO`B%eD2d-F>Y7;4NrnAUC-1v@i=8w%U)af?%~B_+LCZ=_ryPo3+U&1s>3Z%+zie}& z>(f*i(L^^i5%n@VM6j9E+_0pD>C*M`jKW@?k!{1RXOLgRNGee0M#P;%`6&e92YR<7 zy>orSOX?blf8fW`z%-0RmsEvKCR`xX^9o={@47WN07W|28<^wzIIURNi*59+NLJpl zj{XEfFBPw%4uf&k%X6!O;^O4daDy+?eP(iduoA80t3&pCUN6 z8XO;^tLrE|v8i;uVS61dPRyQ85Y0hw98U%6;geTJJ^Uy*F1u)paCF`xiLT-5TMWl% z^1TZ`796`a$8gL~kZ^L{b1*U^n2}xau0{a8a+IQb%!Y3gui@9rSQhR1c9b4T3}+o% zlam+Yi7X(BETH&Epd{i^QZKjzAL5q?%Q9zEz~8SkT#V-iThwl2pqz;dCl320~>|9ta=crrn~! z)Tnzfk|dOeRPq)zx?U(V%+Y`d%^avirDv zhL3}uE5gTvMp`jGKx`2{US`3hVHDuwa4XOu{29tN{BbZUx-Z`fD&|Igi{}QLEIt$! z5M+#sy{upXDi$KhoV=|g4Bgw|7w}unRue}whaXM$tFr@dz`EUIzJ97K>EYbPw-5L) zWRC*U?(@O+2T?>@xsi1)8b7v_n|RJXLu#IjpQ_wXmwT(X%rgN zU*n*8Y*25>8`O72iDMJ(#gnpUZbk~({u%LZ>8;t#pM4l~$xa^U8fUo-{;{85u^s)6 z-1ymtvz4SoSq~$SFV34z8M;;#c&@)#8wakerMHqtEBuw=dYqp!@0Ye6GON71sf@sB zZA}&$XS4%h6J5IRam0EZ*N3s}Y$BPU^=I)D{(*TbT)#S6A7hBA>$Tkg>n~#{j|`@C zJ?XT+f=#>FauUqZIc^rl!y@|$0)wOctU5bUq~^}iN_b%B zCC?ErIYwt@8CKnY4faMgVbUD;>Q~$KwM>0=eqAFm9_FoC_#2JK;>YgMWIF?d#rcqC z|E;>`3g{<){->|(S;4qtvF(_(VK-O2j#7@x>lhrZHat7)aZC}P)&V$mf&*|-*dn&3 zqSzif%{D#TXZcl|4Ce*-@ce%%a3R%(d+!6f;))Yj5Hm*yRo%I<>9-H6A(qE+JiYf* z<1xT6HaY)@;LZHn$nHl6joJ<2Y>bSKHbySg;hhJ~N)dkLZb7+w7067j?6Siv_+hsV z-Iz%c8q_U3Q-y{DZB{l1*GQ~;lm7+vdH%3>n~CXVRk$UnYS{flYdDCa&4s21YFM3$ zN#{J*QMjdX&!ML*5KLs}@Bwt@Yo!@k&-CdALiT%n@!;+a4;)eb&eQ-Z;*d;PKU-{JJO+h1-hK_cPVdaR#YmQ z3LcWi-QrYfGe|Tn?LJS2_SOFC?qR#8f@@@#(TaIi<}an&KbrC_fg93ObL}bnW7+X? z_Sl$z%P6J(5C0hbFaL=COHRi9Z$Bkw-dv}PwkuLj^M@`pFu7$m7WL0y7_NNcc7i~f z24sNCexFPx=Rua!2XNKbL{|}>|7XY0oO0u}zr)RM%|-KjML2xA%LNXWWRC(|k$&Xb zJAQC`fBx|Hb|`8ud$i?*hzj+Titx7Y7PM!F82*AKPyUK2i(hG*kMG&;LE8T<{5C-W z;RH$RQ6utdg!UfiTS{3qAGM?=c^HrL++$@COL~p43SR1oqy|Ln$X|STdrg`$!1_0c5S;|HSlkTDlMcfgDSR(3N zm$xMAHUV4wXoL+*JiK~gKbX&7ox;*Fi2sl+0&NP*w7wW4x<@w1vOkUKD(?4Nj8y%; ztaGdV?mByLznlFLQNMkv$o0GZ_;`;l*X81QGsQ?84Rl&Z#ezp#uR5rwBs>B|B&HAB zHH-P_L5E^^u12$IRap9h6Kgfn+^hQMMErS=<%h?w?BEqZ(j`K<>x!%w->PBTT<{M z{=4sb5GKwWUbGLzTI+Y=_y=`$(L>6?*7`;uMLx*$Mon7bm-%XopaD`xFf}PdOYlp5 z)B?Ob9R3TjR-QNI7P|_L*^C+tYc@b0`?h zcoD)Z_=MQ*8=}tV9uprJaS1yj`{g7YDXLmTZ@4{Pdnl?*p1ihEb9~fiQ2JscvZOkJ1!S&y(HVBfoy}J zQ1e@pE=NeopS;=shqia0jP6I!kp|R88S!bT93FGCf*7QRW#-@KOOb4X1K()!H%I%u z;%_mN7tED14QpvQX!RmpRaQRGGmpm>@~r|8Ekym*YEKLu zcSSJH4K&_0ZSL+`M1H2vbfPJA-r{b;R7X%L&0{ax`H~Nex#tOR1@oO&z3>Z1Vqz_F z5Wk3WP5#f!@ynLZnRR`;*k5Eti{JJX(-TLiyHZqv|A`Q%)q|G0T zc@N~}Cse>#d8n+OJoqiZ9~xZ+PUu$LexWm;OouYj`%zleccZj6Fcwyn<&*rxeoHs#*i~Yxn&P$kAEc#h>v}8I>3`G=j z9h*o9Nd>3uv=GMN(8VS*>2_@5f9d>=gnfC7|L2@{#WjxEjJ@0e6?T;1FE5(RP$pT~ zX-6?5(sdXz`$9V`VdOSA48b6l_yWZSu>|WX*;}R}mLjl3P_VOl3U*TDd$O*89%6dE z4J3+Q8!y-@y^fhOh>x26Gh#lPO%<`H)6{>DhvawYxlkR$FVi#{1@GlUBb0y(0QFv5$Q3X zb3RIhx2LKuAiUr6F2Yl|mq8v$|8vJXCF9d}Zj9SUa)f6T=LHL#l%FGD4VaI!E$!I&PND&upW^<+^Y^H&^rx2oYB{OkX55xsqPl1MO~zn3k^l^-;JyZN8;*=MX`!vl6)rDF>X_obffoqP(< zZu_wL``?wHoS*-{O@7*C!5<+%=fg+;Z^_Tjb3UAZI!^fzdi~#&pZl>Hwgvh57R#$a z^7EFHWBIuOV_b+p)$&c-&dzb-#(4y?S zvO0%bAb*^Gg;6H0ya)f*Eo94WKPW(sxbLiU*$;aDBz<-JK?)2Pj=+GJpKaZG*UnFK z86a+}ZoM0A%CQYm=*}!N(oQ$%6p7pF_(+5%E`J)RGPl|A3${vZvn4*P@krZlwox*e z91@qe8UTuv@;pfxDMVf$>0rTXQN-ClV}imgD=NWyrKNy?Fo9&$%km~2rq1S9XlERG!sQs)Y#(TbMFz86i(1bfSN)9vq zS1VDwaW(ca)4@-{DbWMnnY{qrDR)ZrhcupZGe~sa&MO=I;dZF1oD%)Edvymnq3n|I zwP(2eOIx?$Y0ORLJY`2QlYDf?LHWi;KRdquTssnKpR1Hud^oh|Na%m}IB54yD{dXF z7DBk1qoSMn;T+`*_cMtfo%uWPn?x<$!eLOIY$!Sqdi_RK6Q2uR)Wewm=gx(4pHYVl zdV>ypeg!eYfzO^Izm4n(kdD(g@m9HSjGg<$@gsctCK!T;tO8z#Q?XUX@?X36hOuay zyFC24rlT%)@L%tBC`$@E-CjADOGZHRo7LgFt)OnI^79gt3|Xlw@1zd zc#!<{7GZe)1VhdBt^8~Wm!7}C7D4`kBso@gX#YVSovTXx4?!i!pQe1u`d>QR%duI9 z!_1&)&e8eXXnvgG1u2&01#{$7PE+NMPd0k~6*jKM>eJL0?dI*PKEdEgO5DuU7jm7b+xu^Qz$S)~*gQLp+`|}!vqv!av>doPU z7$5Urffo>oz{PIUB^?^S+qWq=KKq%d(~Ge)@$-OC3Lij*HGe;xO=tQ{{~I zUkh?KZv+f2ERxjD1t-w2tGu7?Qe|zX9!KZ-M}QGVw%5~ z|1Xcr^!A62^WdVL$UkT0xJuwOt0o+Fn?OQXd;hgC`6oReSLFrmxSw5A6CQG_5>9UQ zCO1ux^9`;xZTnD3fxo}}aa0618WjtNQKY%yPr7fToq)WX+PL_wsp6!%wHWw|FB@d* zTC5kv?UB-Ka8P`B?qm9)xc3Z&@FRdQ7k-SJfFsbCJfEPy!Pi@Lc87?Cxp>%Z$wB@= zUNE9s=H!Y^O%qEMH<}R=nxDQBM_$!(YXr1dsn$g^Xkiu?d-|RI%N_iJi(2vDmu6x` z+gG@9lqv8oVtwxV`_#?&dN|7ZaY$2oLH5}ys=O=q%c~cJR)@Ihdr>KuWp8yha z4KPuV=^e^r6|Pg-(5=P$PhD`D1PP;9Qgx6rVDTA1(IGy7Qgn%9hZgYKO0q6|kZkmI(=pEhaJnW0%LXvHtRWI2GRTD;9kGf@loJa1(1`4=>`%I1pOWivi za}y|#xgK=_F;wn?J}_(=YUPy6Rodn4<2q)3f-7}jsOL|pSedNEziL{Q=TC(Pya|5m zB+abykaBCj_M@N^g&&CdO853DJYMw9z4r~~1$yx{c!9na1!EQ+5PSWjC0GXyMg2N_wecLGoARg`oN5XWg(c#u?_JSR}KFX@U2`~7H=$O#? z+bPp zCY3jX^CmQ$H)+<_8JNwf!Fg38mnwIi0i;mnaUFIsi^q2wppxe1fJ7HDLjaG$>_=Rf zJV|Wm;1P_Q$ZpBXi@xXuCjbJ@qK;U~7Jtg0HbHysh4nltkYorwEV-dI($sGtmvusr z0{IJvjRK(I8gMo%oY)en-`cIl;c{~81h%SONXi3Jo03S2f_-YQH5Jfs@s3=|PfpA_ z(VS$%bsEy>arstMgpa2sFL=`aFek8<^#8Is;G`8Foimm#Gs5rzm(6)(S>FC2{0nBe zDLoR*1p=n$*mzR&|EUWc?3j`loKrR6BB2msJZ%1<&`ZQ~|Ap|Prw0aBj;$=s;h$5A zwCGs8So{cOnxL!x`)>NK(cJR>@6%gdU)Sk z?{;kmG)HyeTs}BY`PB{umD%HtjN}n>@f+r>jC2WS%@=15U3a}I9AbEKL~>r022*(T zEVID`n+*!dk^U6G!un@%?6ZFZi;n+N<27NYeDhNgC&B5q%z=PMMzZbms*azHW3ZmL!mnT#f#uN`LAI#1=eN z6xL-d^xhgxm5yJWUZ4Okig%I$Ut|6}DyQea*5fn@_2(O|KfesWXG^i%c>|ahU7`B~ z;>IuPrE}TruG>f$yZXUb)yB+Jt};5#XdnPoJ8giKP%A6EhDX~D^Du#+Y7Br-9=dlr zpRn5=*|^+;?}VVHPLhvRvfeM%yWhu1DhK}3lao`y4B9!n9LC+Lo~-Q;dO<>1V)7f! zoZn1iYuvmsutt&qxu^6`kiXnowC37o;WZxqi>BZ?iqfNoH`)%5ItOc(XD3N^=lr9h z`yZ@3*(;6^6?f3V_?`uqeqKR(Eg!=vB-n7R#+|7#hF5gYLezLTrYNJkTixmpZ)N4> zhQL^|2Ur!3|4OfgAja7|<@x7<9oX&!DE6qTMt@w5*|G|_B0m)4kJJg=FR)bi3#`f? zb<(8+-&mpmhVtezKa<2BLqCZci$&FOiO$!u0e?pIw8Sps&>>muG27T`+)bh5ppS92 z^upu+8Dt_{%h5o1T$1!wey4F@@NykkW-p-b)w)e~hO&P`vAS5GId1te1xAChNpJEd zfB1r6tjGOgIuPfd!c`hcvTsUoZEnv$BFQwc zO%!*4^44SG_}@=y{f%~ffL7A}1st=^`M+r5q?>fnjqpP2=@rKVH}PDd>GFCi zf`gHVWP@bqLZkHy_yAvo*?Yu1V#Obl9`RfF=1&n-=XlwJEe!?X zf@$Gma%PXD@jQ_;_u(Ej5S~W;*?o;`I_ODBc(;|GkyZTk@LEiY`7$5($@)M0l~o!U zkrw9h>;EH|j$QCJ^E1X(OA#0rklw6i$xY^$D}P)m#RVGEP3HNJ-y|nq5}n&KX=L6n zOLQvk5MhTi?{CZX5tMMZ&F{bywCRCin&s45*QUhfmq4AVP#D4nJ`5F~KmG4c~5CJ22>X-acl5djXR>Fmx!O>gTNNa_bOu!?wv7)su|1DUbz*zI{l+J_9cgf4TSO&2 zH6_43Sl!F(5#6KDl@9MM*)Sv=ewxkHD2;ugNPtf6rlG1M%P|_UI3n^(I-bF@z zOZ1CB8Ky>^n-O#%t4meSSZZ^J4GJxm~ZS_$(@>qA__n zQ^$P{o9fo~e=efeRA%K6FSDdFvy^3^hx>dV@aU~gSPYZYjtkN7@t~{yWT6Mdn z`x3o1Vqd|5VQt&q-DQg#yAN+&vaT%CTa{{9GV6<(rM2GVrOj`z=XBAw`#yt7E75uO zo0?`fdcl`dgo^K4+rFxQLoENU_Xy)s-xOR}Qp1cn+Ihr&P6Obzw$UHGAZok0`(d?B z^q6|i`@iN|U)b1vXs-3%S#`y&KW!Iy{GB){OtD_DeQ<&rf22Rm&v4%LP{vejRoJ|!L*W?WDDw%wxHHDPtK-;es?yeZggtzo(= zOQ}iPXsQjDZ>G4vEDFPLEe-NG8iiwCH1rt-7JwU-=07X(IhX1Xk3xp6Lt};KFtSMD zx%!wv3XkNOraq_ebdM1%R(O+vqUS%+=wH}{mlO6Ir_8-Z=BOWcsGR?-DL%3+a&3}P z!eFhAUT42%T+%^_od43bJgYxtgZm>I&G+a1(V~oJ)P<>l!}CWzAt&VaBMdO@^$6Ce z2Lx;}Oy!j?Q@Oxd_GClFg+TS;I}ibfnf7&I^`!7lUi(=XNgZHCH;Kmje;VF*vx$SL z(RofqI6^Rty@AX;nw$|;F!YNeb;L6(F|Ll-q2<3ML=7p zMZ0n(-JFBLtRc2KKEJVGx)CWCSskxXdH=<_SHt5TC@JY5%Y5wYjfe5-)Pe_7PAwqF zi(RX^LXxY-j9jf!5?F`5o|fG!ypl8E6TVhA5PtIK3St!Q%8z(%LXObeN24G^2B95S z?xb;R9{GHxbXq4ryT|Fbb!k?B3ABDetUXSqiE2=a4 z_yGRKZVi7%ZC%HJA#|&se;V{Xbx|ID&2-An$%kJ*q8NSXNs+yzHW)V&TZz+YWW^;0 z(Z=As8qKdW_rq3Q#ng&Nl%`hyoEi~V;bQrZ8e~S10^I!8HbZmCq9gKi8)df?8{n5; zmPX7c-4%B%jdBpo1utwrbJN(7rS0S5Lse=2h^l~=2hAsAM`pk6h}X#8b(4KRr^@WyxVwZ0>Z=7Tu&ATqK8NS*W)0_+ zx9w=gWY=C}aHaGMqH#1He1g~hQj@GiOG&}audX*TNd-5|BPAVtJ(&)^H7z)MhPOCY z>Qce?C7fEif2J&rgnaY=kW-bW=TxPYv%cU|CGYJGrl>hpX;oI!F?XMBp9+qP6tzh1 zUf*20f{2ARV;jmc?fbIK@ERLdBrd;}5=S(YEpOkWnWa$+7Z`Tw0#B1F{bf^n6nnxQ zRa$0g1(rCI=XJfASr|*pgK^rb!nj^24q|#jb+iZ{v$#EUz{Sxp+h==922I&JrJma* z$vk)O^a-xS5J|BP#X9B;ol{6pC|!hu9ri3|;|z|d=svo1&C8{a&VE->XwLmY-`I+h zGOpRvpWvMG$jTc&@d`nqyLvr;Y-Qq_UWl{8?DPJy75#qz-vPgC_>JtN5Y2Q*(Su_8 zA%~>1kA|njX>)V-E}hgyy}}~+RB%E?(K?{Mu2*r{%pe>bRT+#MrhQ0{cnU+t4fn?l zH|_Rr&L?F3l#xR3wpB8UWlM$IJDAFd=09{(K`n}n{O1$*I*Mq zc37cEvi;_oU>vfgAdm?<$vZ^aU@!LQs_tnZY4jWZcTEOW=5&!nm&WM%Z0>QTZJsFA zN|ja<{u5HP<6d3>o#UiM_S-4;cgvg41hIBOp`Ftsq+^YW!fHu9942) zwaU&~UStIdj+@cfRHG3{u+HJvb>%Jg8tBUN{Mh`v#TKq}EhM^T@{sGP|0QOJ<7N~r znhPG?5dJa~W^0%4&+i6 z?TJIl4Ue`TW_2L*b1d9`kfd~hgE=r|VjWT4|4g1jUE^8Lqz!UuU~T_>;haNr^nR>- z@0?(r{mMLhJbS0xzgVP|Mn+BlpHk|P2!BcJf_0RACAO59M6{>`YttUFJ<_RKmRv#w z%2dzGPT%Imtsa=Udr~DOKOU>sNjX>{l*_5c77tbK!9|DFv#RkV-)DpiW(XmjW{Su| zVHld;JTjV>L--5UYx&Vjo^%i0c)s?V&8(#Ki@ZC0L)nK>{IZOn)o8vQh2`&CYA#jX;oIX3tD?u&>7Z_lw z!|i6OC~tjZTWt`GZ)Zkwl4Oy5Gm<4XM9p*NFM#e(eSSuPUjRe$a3Pt24nC;{U!_{^NcZ}Zp4Hu#G^{oIO(p#Y#&$^L zP517sD7W#G-O`#^ z*s(W+vaBbuaLywL$Aa>gs63jw&Xwc6CW+>6&VQfX*UNyi>)$A43l9G+tt?=z5z%Zo zQC<+3+ctz>GKH6!3pX&WCGrw=dkGyUPEW>am=~waFUP_WwpO{Mhh{!daj>9wD8#<< zJCf8NR%tnv=HM~=mHAY}35AM+^|X`mxSj>c(FY$|apBO0Lx;~C86oQfQ$V6i?%o`K zf=pEzzyR}j@dV$+p+?F-tc--xI-Sv@wSLa}Hw>3hQaTwcM z*sZyB*0Llxy0SUAUt>3QK~(}Ot&IKQ)#1OsAi-(tWYW8O6>y`n?U!CKs=7Hi8ZN$2 zQA1cf{pJx}!NX!iYwl*hq`xP8<13N=`)E8@1u=|=MaZLKZbk)pjX{UO`SR5Q-ACZ? z2dX%Rw{A7&)K!zku5+H!DEkB&aq$=EY19^x!L^?^BHZCK;zEMkH~MHvuaURBDY5W( ziG^%86G$I_Q7QhF;Ww-=+R5>U3_jV^zB4366VE#Fu`C=)pB(?h`|Izx#ogPGR9V!8 zPTNQ4YO1A~-Xyxm@CyB@(w|!WNsj3N57XDFpAHG6)>a_gO&;?*N$gHwuX*GvP3&7% z8@_^}2bHTzM1(p51@GsYYu^*UQY88jy#$eI^cz8^M@RJ(9sDez#J=DQp zJ96U%r&ML$-3A+Nx!h-}t@Cn7_E1R^jZ1Bzjas-r1(-3eXR4rQ6*7h=8ef(P75--4 zUe)cIvibB zkt5}Y1YBxOnS8!aYya<*hO;h+ceK4c9K`+3r!4$Bi@QSZ7hGn)qMc*yt*KK**b?+G zlV=vIneuD z75H;(Dk*P2LK{Ptj#99W@7h;aW$f$;k7_s9|3ue9s%>PrWL6hJt9l&y>$-+i`>$(M zds*9$*@14VTpgwe5RrMQw4L?lmRsw;O8RvWU1`O(qfm%?9zu1vN$uNN-9dBu)riui zf6?PS9vg!jL~4=gOQ{Q#VaTLVfx~1DOMzRn zHSeb~?+)Sdb$tKtBNrLgGN9!+=lHSAvjgELd?IOF)(oADN#jHGwRN8b+ZCF zHH@0tB)$|1n7G~oxKPM-fcmTd*)Ob~ky<1b&GRp-zDd79_eOhl=v5HxxxDKik3H^* zf;U;f@5bnYl}5<@Hokd&r)@l|*n%i8kJdD=jet$~Z-i5N?f1dz<@|mJw@23=Bm2&F zM~DCT6%$Kld2Qptr*Y|H*H6)^;vphw#&fS4_z<}EF;D>~1CfU5AlvGo1)MI$m?ZgZ z2U;K2P{X&sy$9pmGSzFZSD4jauV9qDRK5hcJq`4?x}CKDF-0?eF?(hwnzKR&rMFUj zRP6!e&GUa$Q6w~C>e5D|`Vg+fc*2y1JhJsmuvoB-RC9Nu124i&$D&G&u)RFDUg>_I zmxPnDyS*v}DK5XdoLVawCs5V%N!iSMkUifM3r*qqfTklA>WaiR6!?hg_dnFv9K53a z1Be-$8hS%nqhE$!O%y3sOGQ-sXTq1-@mZl}^oKG{z8HeYkJC?hL512ht;6)Tyh*QJ zlADTg_78u8HO1hg^LtQ3YEcKHKK8yU{=x#aUT}Wp{b*{%8XSe+{LVnQ=oe(toa(0J z7sdS*;Wj^8&)n2RnK;m0LDM_XH0u!UY=-;Nc23{$B7L;Yz@03~%=Ajz5BD-NCza?T zNA7Gt487nD)Y+2}E^YN=Y7e;i;6&HnYw7>OIeUUU?2S7l79QHz8*Y!c@ITMITiW)YO#f|PMrO5@u@&(tx|GMa=O0x3?hbV* z&G3W&JsP}?qC@oq66WFpV{ScXKgv74w|7Y!iU8Am!9;gDtN=Vb!2?~{oob&m5%C(_ zt1}t48O2qb*XdNCxq1w9XD1fuYySeR4`Tlc`O#_*YE)fr4~n&=kr`U2=_G=L9+)@r zn*GcOX~oJQeHW3c%OfVc8^-)$Yh9?dA5tW>sY6{VZJ(I-SDCXzi{GOjr2^~6pdG4| zZ`rfQ(hB1;-CAr>5&rqY!WN^_S>5EW@dt}kry}K{YasB|`SP&)Qk7AfCIM6T&2*BZ z&*or(D@R;@9n`Q=pZHH#Dn7Td)DHNBtzSgO&3>g)V2|`4(VVHCm5r2?o72chdHqFB zW2rJUIi(0MGC(4ECY^*RQxbWhCEe!4EEP+{Nz_&Fo65ZNnZ%soL~m*ISFwU0wq&Gq zC`>8H{L$P!%%xlxvVk8=3)7{4<8^@Ls#3yTfAym2?bAGLnNJ~4(hdJ?ZzW!94b={5 zKTMjF9$C=6{U#?v+edksi(rENTdPZx zxoINmKhuVWsA)svKrh6c@hnwBz{3qjiLRZsl4a7^NHS`g01GX5@J4dnJERx4MmWvJ zFf{OHVkQq#f01LIrVOVMSGAhkWycvG=}2$e#k7rNH|>ENvY=j%Mx@`2kABb4FBgd} z$*WRa9g43b)h7{#cigVdC;}H31-t`TOnotpA+<<~mls%MCPE`thdbXT55=36MPX#} z;<7mx95J{`5s1GK7Q$*b69R5)QjqmK&D^Ye)t5NO3vHt8n? z*GOd$sIym^&Be*9F=E!X?}@cf+<#vMkhZnl78v@NN~jwJjXUvZx!LZsv@15-PmH4* zai3*q9Gvzode9)&EeuV_FtYWu9qz}rmWx(sn?KC28ff^|CG4aieWNHuZ-=*jf`n^7 zoE;)^ir6AtzMm#IXWxJdb}pKq+3Wg|a1fhux@RvEqPiaO5>2aI94r@-#w4W9EIQ!3 z5U`5*ArRR5yg=L6Ut=I3=$g@*Z=Q(NJWa{xHupa;on6y zZ$CE%a!WxR7wgub9sEJ@AEmdOoW!iLn7CtZU~0$WxJ2+axn^7W7j!u(>bCN)%3;98 zZ}}8`Ob0H0i-ppg`1wNZ#r7MwI6qZ=?D?q;#02+F<8N+$nkrmPW-C9QpY(Oh^V8Lz z&%wD$gEHZ}rTHndyBlXk@%*HkfqC)#q%IZDPwEjfjB*bma^@#x-@^QqI=8UJsC2>n zq&f%BPp@*}-ABz&u3X{#blz}RYS8?&pa%4B+tvF$;=6q!v-w{aeIv8^z4lWR3opJN zDn;KpUJ6$_xLA^Xr6rc8gG--fV)uee*YPvAv6>^Lzn(8{3GVOU2UAbSUT9%y|Ix7a zjy>2FR~9K@PJdZ>=!{aQ%s6>d?BbyP(P)1zK55j7Lz>zjY$|!uIj7m4vv`LrrfpQl z4^{C)P5e+BKh*01^G3MmoieLEp!!otN3GwK{H;9)1~M-V!NCM&au)?5pT`$oyVj=Y zu(U8rYv zu|C~B>gnbNoS}6evphbkh{PZ>7;(9l%c}sj3@_U>s$9}`#3-NWJekZz``3&I3|>&d zS~k(S*GfrD9qIc=fHD&tI>BpLmFP5us{6pZzD-&K_mr*E0E0uPlJEUH*O5k^d(?~W z1AiIi>3njDz$tCsV&$C#prb3Y>$#Q&qIEU%|dus}~}pSY%Q zTs@pb4XnH~E6ST2UgN$(B)7aG@OuSXicWwvSRg|GO6m&FdQb{!iFy>S=MbmAEPJ@k291n;$obdzKRczT*?*h8qlK3OD*O?qzK9dRXP^Dmx`F=I zc>Qtc)O5qTMCVlkV)srLlEnacD{(JfqqvvQaQjd#m3m_Tj^<2Xd3Xi7QA@+W5}gOq zY)kOP=HMcSxG5Ai-y~t|*|z`i8p5_~;vuwgx@KHu|8Ly-NBw-gV7)Zt{JGf)roeR2 zBaLHjRvuS5eu!veh-)G{#PWifsOf&LX`|^Z%Bto?cYlO=XgF)P^PO!3g~MdpSVbF7 z^GB2HLdqg2D?xR1O7Lye+Kq9QB@deY@ZKmIvt<0^Q zv8tsq>xU?1QYY6ZDvq(2c__&bHJxZAD&KTDj&fnGtmq?eaT^0H`*<~k|BT#Hb|DAd zF=_S*iZC+V9&&b~)bU!~=wh_d@<*N)9vV^%dYTFq)u!MJ8ZC7^c&e6_CK(Pj=ZCl-2fo!)Zyh02~Np!W6lumY)L?;ME z|Ae1hNL=)gT?+ye(OnEV;cK^OHJ4FtxfGAor`%$NN5IgO;@(YTvG z8ISh&O0rM7^FKNHJS2gC%;mX$=Hzt$&ZM84OJ~`k`C!HAZa&auCgp4^pIK7cwrfuI z->Wi*Qbu<0KkgmP5qi0qFa6JiQ>x5_BRC@8-%Om1k>VW@D4O;06^UJ+o#G{CzKG6U z7Oi%nPHsW%^)g>Ak@uh=u$ECM;7|+6wmR#+uUAQcwKm-SkB-c1HMj1tF;l~K0QPIh zr`W_{l;unu4nC|a5VY-gEcUD}g(d-6*vwdmv%ymx?zpS?pLDF=FFv)VVwLYsgRE!@FgHPt! zfyj|9Nr$~EXszvw8dpVP;j~)9jljG!YTU8(iicfC`@%za0_Y>GD#2B5JwRtKE2sQk z_q2NXY*J1Cqd9sYA5vg#+a6Z6vZ< zJtmtVE`ISj0swGX^*R8;i+lgIc3M+x9J)KD!jpE{28?hB z1u<3CV(zchr5SiVeQ8EoqBbKfhmhLB0VfX~Oo6FP=4#YaQ^CdB10$_XoC84}h0hyj z`VP{%h|^cokiDHps8-aIrydf0Pz-%@;XgBt#3zd?NU>FsYFK{GE{%y>|2lo8UhCG9 zF#UB2UT$tQJE}HZ3in;iE&zdr7vnuARelC3jZ7vT^uG&zp^?61TiA}Sr=59l1#-FIq8Da5J31RIsw!>p^adY?R?eGN} zbNl*%{$Dfh82AxBv~61ng3vY+3mvu%B_pbj23f7C@xq6=BRu^8hmUERHiVC^X$XqA z&1l(^ECGUTwti#BMHfy_UWuo>i~Z7F)`3Det*>l0^?{bz!}wu~A{1yW`zM%nhu7usowkl zk@qg(QB~*ue9 zbR3KomA2YLt5U7K(5e*iLbwLJRK$u_TfiIcF)FAP5S08r-*@djGeK<6?|*-uKaXbi zT6?Xv*X6yhcfE^4{W=IXS^GWtfk}4+Omdw~e#b@8h1BTXmkejrXkK;sfzgG5r+IAK zOL&e~O@CR<=0|@9vkXuJWtj}ENfbUsHuG%T{wGZ^x0T8IZb66ROZ452tw_Ld{KSZr z)p<`Axgu*YZfDiM>)I6wo4_q4s#>ov*Ll^-c{D{2;p9|=9An)iJ5etQu zdUJ}IPovqI29tXFSV|_yvNT^4n0-Eiv*8l2p3~oWL@Xo^yuJqH%bi&Bw1-?@#p9^z z2-LL3aa)W@Sg+mC-xuL48^v+T#hg2SJ0*Gm>RQ42KWsUl@Yq<039d|K>&*+&eq3! z?;>!jqq-oEEz$AZHQ?H4;Q}#!uv&^*%-~N31zO3$c7t7eKpzhElbxo?EyXy-?XAvH$^WkTwqdK zi-G?oN3nC2eub3@%~-)-FhWXID80rKg$sEPDpX$iyFE1d*Vh1f5lXdMZLKCr;ZB&{ zpxY$tyivb-f-OOwTJjSri7pb!C;C^g+SgwwG=m;jkID~gBqRS{Y^55S8g}L{BxwtF z#L|}LH$vBIP=bil4#X7z#KN8+2}&@bk(Xd1yq7j1c^At*6XOIc`;SZ9zRrA&2r62` zf!--R$CmWCd*3jvHN={iaV_}sC*{xkJX`m!s2$?U^TR~#U)Vv6tD6!?xshjDd+g@_eX|v@>`uP>WXE1TY>1Sc7 zcu{e`mPP!&t!tF*!WI_B!Py>`aKNi9q0Jym*lI%#ixLhBrT0_i`vhNrv3LO7fb$P- zVGEZ@A~7XFd7ALT(Ev0N69vjDUhkzVTp{-!6fMZVHsrvoE3Sd7zN2sv34F~|x25v!!e8ilZcGi}MEHXn zN%-ItX?`{|>li9}t<(Wqi#6(%S&s>c{j$5YIBatz?RO{kKZ$gGlm|rwkm$!5BrqMH zMld^;eOJ3|Gp*K>xz4}xATOd$e(@ld2htpST%ql>x%Re26B}=6LP!s#m(ZAT5tD&L z%H*m7n8zuL^>4MDd)NB{6434M8c_gzRzH%@^Fwp(J}*Kw<7IdVx%`fnBp4tIniQJ0 z%w3ZsXHKl}4nqo%lFi1B`MX>Ia}vF(4rPwj7{$>(w3DLEso`7 zF28-P1s%weKA8B9oELYRn|DDWuN~f*(q4GDn0D{KP^ACJz|FVeAHSXw+8-i)gwn5& z4!|jZq5y;f`0*|qP;TrrJ_P&@w|U(=oaEqRm+}Xe>qpeT&g-+w%l+ z3^7sOROQ7RhUBOJ;;$DjN6`*lCntk|27a4oww>vQL{-U7L%T?;dBJve zrSsDqCU>)8@`xLjq$~PWmz=le3%skEj1QE^0`19*YCb=#pgc9VC|5 zS=<>;Ds0wTO&N+Mk<8Xb3HAnnCuuo``*ME&{&TSVYYRZO|3=|ce*Zt7w!uuA((}02mKe2==n;?YN1e@^$-M2dXfa zW&tkYe#Ihrt%>M1wq&=r9I+(;K62PX*)A%exrpiz7Vpke9mVv+kzuL1FN~fDOOjcl z=Q?3eRYPA+G_av~d;m`5Iw@`_>q?{VB&;s9Ys;(AJ2TIE!*3d)>t!70P(CXW#JE63 z7+xcOv8bXR?|40#P1ehrZJDLio`zY}leFAZx1bXgK* zxh*K&u~sV@v_7K2yEHRKGm1wRJfyzzU~f-nf|6oMd%1@9YR^w*7+YBJvWQn#i2=0 z>wTF(l{WTJ<~T2cJWvFApgN~t!LUz|MG8T)%|@8x`AGze7ybR$B-*>jv)hT1Y`F3fj9Bi-rfi6DJD9fU5{tKSeH3d zIxkDU?RD^3Vcj`rGlaxB!2wTy*H|;ot`E5G)hyE#DEc-#w_mlLTh3FQfK8c^e~X@l z7F>b3gENQuGluuB@vX@lynk+;XY!3r(?d1__UNv#p=v6>;m$)-bstFK0Xwxmc97KZ zQ`s`ua=!Ef^0lS&0OQe~GktNuQ-+HsS599pI4mCEDB{o17hP;uZ%b-YEhl6%KV&kZ z`4Jpi^ydErz@JFk+EqVh?I`wx__3}JZ)~?dBn}fM`)i)5G4Ty)b?A$QMp`I-?@<=J z!rS`(yxzhKpjW3$Z&KR!Lwna2mXcpAPnuH%r8ILZLs0@Z2hHgf%xU4*!p++H#iWV89O!C8sBrJ9DsADaAdxMBnVgv#& zj}d{fR%@vbmaXMcVtdndZ0)$VIVGeDWpsoUqw*YObCss-@5#jni>ZXt=kPAd zPJ*aVMaQRE_QbX|ck6Cmy#PDdkb&BHe|g4{lFUV*lhr5))`o##j*@ z_JP*9nu%TWr~z+l&A!xRtIi1kam$gde`*zmvmZND18A?# zf_%T!Vn@P9kk#*7Yl$&{-Vu~^d^4E6Q2J5wf|<=MCQ;Z~;zP;BpSLN`=+64W%e-(H zbN{aP0MbSkOJ6R!kMB_qKk^PHla)9J2M1GRPK}0J7B= z2iXcS5Qb4)-GFb}$`S;h=O8#I2dNB+y=yix8bEa+^EChdR1v>| z%E2^d)(RYDbMpN08@J+F8R@BlDiy$ZgW2;^U`|&Goj&yb2FR% zre~ww8?fBXAv^m%Zb2vR&^VG(@XUkgOvs{BXNx+lNb@j}=3yeu!-}LCM-9;@sh%MT z|IsWmKM)-Lmn0ep_x`I@Q#Pk;4YEpLE7D0#f-EPdURHEMljxS9W-0(&!%YRI!#20qG<0VSSh>R z_v1tMzV;VKnnwtFB^&>$|Hp?1lt1E==z%_zi$wRCJa6^(fK*GMdRtQ@h%Y0|z&X6y z#LFUyHoL>2%w?SyecuslgdHZu9Y2Lu4|BBoD-K{k`)(0nLzy=WIt*yPw}pI(Kyp8j z2olieiNK%__TT2wwesXUWv$#^YUME3N@6OYKa|o%`2!&lj?=}scyl0cc8B*dDn_$JLB9c6>3%?sPx8w$JN?Cpvj0 zl6^{!nd|X%H)+)Ag?IKQklFW{!m4z&jw_v2j7teW@DI#=-c<<0VjsZW6D_#yFw1yNNK-3HI&{_v zKgc_%B4=tPxL;zuw?CUhdy;#GJ6sy-u%P?xGAvk9!h%EJ@^NXV;ga#+B0e2T_kDa4 zd3P;cQ);Ow@BHmeYsKW9Hvr$=<(;Y24pt^JjYQ#LE0yG7ZR**~abySue|WlD6KmQoUlh!hnX zkebU=)+BB3pjnW=?9UbbL_AF271DIu2@;ACzi950CzMKo_0vALTZ$W*y0Xx942 z2ike0$T z6Zuz4TUMqp&DagZ{o;Pf43X zxLig@@q%f~JtTPQb6z%@&vj`6vNa9<(b-VuAggk(`|4YX1I&k%uze25l&ycco5u2_ zpkrB5e*CkaTF|lQ*`A5#M}CJ?&q0A7FaD!zW4KtgG~c0$Q_tiGl%VhA+>n=@m+DIx zljzB2i+jiufez#BU#GvohvT@Nq~}7SjlYx6j!W{pm}x3k-Br?L*F z1g*&Pvosm5gX`y52fyJu*hQ)bFDdb1eK+Wz>RJDU5C6V@msq#xpUlM{@87Yme`=Ke z#oc+RcfKEr{r6{j}yp>O6;yHy;FbiD%-erqRMXp z<8b_lE!cye@$3$hQkAHe1c^gI{*O|1lBgk1Djr z-ScSd`I5nk9;t`D3IeRV1vNkD@I&c{WI{R5U?%&s$|$`_X?Z>u_M%1OZ`^IN3hGjL0WS-UH%p8o zC}@|JB%bQhAYaytOSf)fggn`y4DV?AR-A$_s-tgMX@ftN|7PFvy)T!Qf0snz9J&!e zzqe62m(YUm1l)Ce$qD#i=LFm_NM63LzrV>H3sK@X<&EC1CcaD)#rexAXCOHxGeFr> zCtC-I=KUY|ig?~6?K9$9dY*LIi)4-2C%IV6p(2$2k;p~v5hFz18U5&AIhn^1R3&^D z>SBDh@fmR)s5Uzow@=|w9Jik6ij__4AuA2bdJYgB)mOarFQH1L?B>QR4$~EPfZJw~ zY!p;tC?@{K+PK%3zvSRSoV$K&CQZ8-FL!~lTQhbXER^}1CG6}n_vDa><{uGf^`dz? zk-N(d=jCn}-s*C-hoY=jE??)vm{UDX7XA)u61wpNZxk zuycs`fE=;j+e>4k2O8%sGol*!iP6nj6sFcXOh>u zCcp=`B(&03UwY-$vQ{FcR*nl=d4-NhUwS0TgL=`o{vGA@t4sBFzU=oxVP92Wz`{Nc zz`{xif>O&H3(uaUaCgE3vtOTC-q<{S&kgDKuCc@vFmj1-yp#Tji+HoKqZm2x>6Ulj zcI3eymC=DmM9sZPDt7>6Bj8K9M+9TuXyv~n?5gE+US9_$|Lc>Iie9LwWAdc?0m7Pu&ZUvpVUB409jfw#RqR89nOg2g(E5I zi33DFeaFHut56@yof8HfL+OL~u+4-%yd`x)b>(8Ml=o8*lNzpzkl7P;X`OAUvE8Tn z3)2BR_hwtRXP&P1YvtF9^^>4vI!eM!j+HsD*2}%;z`%MrR_MWnlbK$KUsZ!DRwvGL z*v|e*D4y?s+)KjK|Ei61(@*BO{!Du=hKPL3O&iEpi~4|BsiMvAgwh+CTb)c`>eQH4 zp|+2Gn!^OAY)MVTr@Tcsjpj$bu+e=W%0aKpM^yJe@Kyf~p04OZbOnzE5p11Yn3A% zOF2!37Rs6H=Y)l$6G&7jS4x1&VbXD1N=l4VVvYZ1vJx9zBAMh@=`DU*pHaHPbu>BG zPuKcsHLv&ee!9y~H~Hx&lpc`gau{%_ZTwTS-@AM>_80DWMXhq=PtG}_V*VZqaKQGocOs=fRzgR-kl!5; z^~?(RX{RP+>!?G*p^T(6ZI9;nA0&fw5wt8~dnmJ=f{+H&d+*<>q9Ym}HIj0`-{2ti zYTvg?FYz}FS(cU>Ek{jK)5fp9HnNL9mz!tRID-+{;8dzA$qV7<9_Xa^(%=6la}8Z| zR1)eK_h;OjhmI=RXfC9}&cZqdXv|Ps9A`bRmVNBH9G)k91B?9}yJ9BG4WWgRk~C|r zkGMLHq)YvdCG4Yr8!SB(R-4r>!aC^A{@$yK|Lxu4orTtqT@5U z8PXv4n<3>nl)i@=a%Uw*$?KAjvBqN8Gp6Gm)GE+=WH<%A-_6kT&BDo;VpwBsw*ywu zd|u*EJfAV?={hbr;mD}WmGWm#9tX+YOC&cC#zSc*tvi7{e@sV%Wbq-(dOqjNHBKHs zbzLBj_v}F)-%^stdjfg9+oXNEXD3TD5AgL|MkAHtuKRj8%7N^ESk@HxslcJc|1fw2 zpU~lmmgYxPeCovv)9LGjcR2ooJ>jz|b~?QGvqfuycErt^K)_Ta{QeKkl&-h5qoB zgMLi&ZqX*suti&q1-#4-R9ZLHn2HbZ&4NK<$^XlB+ex#wZa?FJb?ZmtA78g8pRsjQ z%hTowPP#LC*1v+bMmnR4HIVOrbCXo%eo|w6^TaC@@pbbJ-gPun_=U>*dhrJD3T5TU z^67qeM(C@5<{whzN3Q*2O6`9|<_`>kSqc5;Z`uT0@Z<~vhtMdCUS^*ucA=lX_l(xU z^nhYNde)NvP$|EO9soSvGs=Io*gx!DyDfX#I_tWz?zKMMxK(v~)h7Jydzzn)qiue4 zoVbrA;dUxo*JVilU{CRyKngP-sl@2OUuQS}sJ}ivueWDu3GgF$&gh%^ z=Oc-Wv*|7RX*sGCHo$gh+?<5CtRrv|>bZ+d^AM^DzR1-OfX@kX4@%5XNhG+dk>E)x62wdSxT%0i3O2|30FTrspjFY%7Opso!KX?B_;qd}v|pG$R3y&Yz4e~E439J>cD`(YwKHu$KkzA) zqq`PY0zj?pkaf&wjteUtvZZO3zGS;?T5N)tEAJF0QS)MAgH4qV>->W{_C50xecVz> ztB-zaPQmzXvsYa7V?@7YZIM!>9ZLQ7zIbj$#n~6g+giIpshxy{J8(KdKb~jBwq8Dj zX&dZ58d^}b7Y70&xs;|qwf*YQjH#-z{gluQ=^v@>Cx&J`We=gyb)s7N=oWW$_Zf~~ zK5b{<>ME*0i_Ftpdrg7pqngBuig1O6c8_M>={R8M+SK*~S#FNjo?Zg*So2>K=gO;F zoiukPN3TYX*D0zQ8CaVI?H~Ca(pNs6k6x<-QZv+xh581E@$Q*lQIG%FDvI8{Zz%H^ zzkKV1O1{-IS5DQ>apdz-PW^0W!kokN=GAsY2ba^(5uDet-A-K`ah}AraTjwyl=~^3 ze~pJ1Vxd1Q=SaNHe$3^2_+U?^DZmhwC}BO&HH|CKzv?C9VMTvNZHA+{`9fH8uAb!G zb(shzh6Y>~i@2DMRDf6{fUz?mO zHco6U@NTRE(RQ;|2o7)o(t)7IzAXX;8y|a)z6i@QF|~L$=sCXXpT+5Bg3KEm=UDn+ zKG_EBh23%v~cqSWjH=X~goq1eo<4y4@ zo_!@YeudG1&>x9j?@{D>`XdiA6AB#c5pCCCt*vN z?x0YIj^?VrK3yr?jjTRWr!^Db9lCa;j`z8UzZkI!Bj8W@==}jK-hFLH+dUP@`U<=% z4Mi{$gBEKDDWbrzm1_(8Q9-D%FW{Nl-aj;B2Mk0Rm7!ags(?)Ti>mp4VWXbJg9__Z zW~)YW{da?r1jO$XI{hAeL^oHPF^BaygNjCDqB(XMbii=v+QL-Yjg1Gmw~1^6x?X%0 z5(VVQ?gS3_LO?_UBnX&@cPT1i373tIy7PM%@fG7r0!*FO^Micj&H#FH#ex8T++&RZ zg*)!W`E%kf?yD~*88M2CftUb4&WngFKJ6EaRiS?qwo(xo#T3N=&~`AGAR4&CVjxhI zT$vCr@_#1-T0%we(h!n!AJ~hc%q`76c<2T$b$&}(nLGt)3of_+pCaON6q}>GeE-WS zCV_E(i7q#vT?ubp(er7^-D}0s3vt}bg^l2le?}wwcHh7co4r{a2#W!O^%O#xa^;Mi z+W`*WH{AQK6^l32bKb?oM0`nCOVEr|SMsNZ2o%W{$O19rL>=r9_pH6>CRd{jCnGvO zh)fvCS_xGL!-Zs-=?FN^Wb#f?mYWNKm-nbH&r05SOQp$hVTZ?n{(WrAjT|@)=Hj# zB<4gbUx;QArAS^}jQ`L=8#*vN`-R2|9oWw^>9X`fL4b5XqrO@_;-L`{Y?_x|A*+DV z6h&O*MEly<_@ri+Bg*uG8}6r`B$;b2)#BL~hIX~(=4-A6^kwpQTdrm$eiRJJ)x+v{0rMBnu34lmv}Nbm+LgjL(r?}AO9Vj`FEla0PIuqz zb>s1rPbnRADLB6WCg0V#Z~I&MxU2Rw%vZECeR05d!mC*F4DmFr{Z@Vbu!RN3sECBu|}y=bkrSm5SpvdsG_MwsIKMmQw6DsrX{kjbkF zw-Tq2pmvP#)sBZv57DjF;8$I2NpF25wH;~mNrJM(h$f!xqK8CvMDCnAVF=XvNuiyI z+0opBEkM#JiJ)(qQry{s$aV&m7HoFB1oJoE=n3NqeU^P60Q za-55H97=zQ7F#o0r=Fk#>qJ=CAgZd#GmW_D?-9@L;@DC|4j+{pys2IDdTF%2wfXIi z*ZjDln08>k(CjGCj`i}fc;4B?oiz1{lQG-P!_S$A-Nt|L;df~KoM3hmpoB7-@y1cq z1f!n)itvOefYZDd64)DP5ag~8^i{HwM+lZC@G6?WzadF!q3v*YeV6uP)OUXBU>);m04Z_;oMHfoSpF z|3n>ww^Y-TaDl|b{-JUBQxtAAez}mV-el?jqLg41$r5in-{I#|Q4W;Whps(`MrE|) zThOw$>|ajFS51rOhpeDm)Y|Ozut%)fg9Z|Vb4qo*(u-$z6xS!X8!NSx!vmuPUogp0 zhH4UiHrhoTYMU4-A4T(3;aI+AWzPY{`myG}B+kVMQx{9EBx1qd3Ud?7od}U?B^b_$ zW+tiHlB&QT>6%(H$>>cyW+pC%XnV2(onxL*FZJ{|T*@GomOJKkmhCEQVTHHCME#3q z)22m6QXeAbJjt2sqb4;BKT0AAIB)ox^@yNOvyGY@h2GH}MMU5E!Mcsinjan;bm*cv z*ka*t{4zAb%|aeE8sgQ_B9~VbYE7h8iy+3Ru`4TlJ{LJahIK45i|O&e65O} zSMe($AU=Kz1R%kN^m`9Gfuz;~nasA4aeXtqR|hkQGW;^fpAKV?L}Xx8w{ABR0`a}?WW~1TVhMz zCZf$;Q07?;7 z*b`*8hSku4enf;z&^R3=LB+SUG&|KRH0w1&sGOXydW}Y)jaN5BPwqDY%Lwb-M&QpI$=RxYKt%PZY@%O1xx+_gTl!UxqQzR_!-?68 z`VCZSuu>}2paMfww@LXHdy0D1#tX9V5~^xfKjK(P#LK=x>Z5)Htcu}_8BHyz%dUtw zUj!w~Xdlqr8AQ&e^wF$Jq4!%rTES0f!EYPx=U0{_O#r9a`QkV&#snRc8Wh#+5qOS7 zE4oVVrspXY%RMRyKb~!9aIyKlYfe+-=Su8mJ~aqsuB3!B{gyCoJ@ai~B7HHIJ88S4 zgoC?vXTlc>4^X9ik<0W03M9Di{d?P^sUFP3Z^=GQuuaw*+I)OBw2t5B#J6baIpXnJ z7 zkc7rSN(!)2{xD%-;2yE@;)RYFjg$XN*e25HNb<1BOr>4s#?TG>8=Wbks9|ip`I94m z74b9DQpEewVK}zcY7MOaD)mohI?&hp;3Y48 z#4BN_g<}Bg1lKo6Q33&F{MZc#gUfw=Jba%GW$cv%+un)VRk)fj1{hiR37&aTzk3D< zChQqo^`4}(qnxY-6dMv;C|LRXZ8&k=RL&dkq6Zw@xH2%-!u=E*y0vhtuc3JiK9J)A zZWYLAfq3R!iY2lHn`Zyw{(AYc4oBy)s3Vg!!%t$txbWx=cq$|sq6#e%6WK?!Y|TD} zOgY$>DbLfkzMQ}mmE?6Oa|m8uRYqw2``5o!VZVh?f8$Y>O+C7f)_~fPKZEkJ2#kT@!!8&}do}mgD+L zuW18b17}ChNq1Rui6hijr1y&Iw%mTL_@$fa*DOoxy~I1cy<8|qyq?Jw9X}LbXezuZ z4nZ6Z;wKe!f=cu644$;(>M_pAZP~wBYcJDayZ8Bj>e@FOTgM;8AF5FbcF}oNcbc+#?m><_+Q>x$o&roeHa)7QX@G-$d}nzb)&*dS*(@=I)5%wp(ki;tA@g z=GYqvg)avf`EyJlWD_sZFm?h91ASN+t;N*oEnl-p)V8u<`+@0Ev!L4?1p+2G{VDqt$GW%>N6auUrSCyHX>zPIa`fxrN^5~?4KehmQF?fjUe?-69_oXK zrr;s0hsbFW4vgg=l8hK>k7QY3Y$@Ka?-jb9$92eE7krzYzQpB{DiEGH+vWh0c@KLV z|H#ZTmqriP2U}T2I#?=qOW}EZM@`j%Rh-IqmjSwabh7JXj*a&s?TD^5dXL6>d(Sa3 z<81u2hE#S8=Vx$b#{iQC3Qw>Of&T(MsI`^w2A9on0C^il;*T|JZa+W|mn(f!~l=fx2k%@@nQ}iD}72B-v zvDua0oU@+jwS7YDrG;Jo{JW4Kx1UOU;v2lZQ38FwWbtXwlTyCN$beC>LXiP~W~hMr ziTpoFxb?oM@;L662qFVc67zggOFG$N-(5=$+ZBup85I6c@)EE=SRDsOi{bw;njpIR zMt%w?pfCUvg#W9zRwVu_N;e0Wt}vWN(HMpqi>jVGIBF<-H*gdk+66zm>M^ z(`~Zf6`a$tX%^m3I5Z|GH4Qr0&w9&x(kG^$H|-^4>`HyDyGz6Mv`wV`>Fv8dA3dg#nwahBBKcwxxJr*7M~o(v#-WopKP)OsmND&f4ktwN1mk8 zeNRYkvM%%ilVxNDU^0a}$}~p*1H~bHLhs48Uh-S(1Is`gQnA}+JaYgude1>18yJ&< zKr-C|n05mgfywY9f9p72U=jvQ#>$D>(O;t*1w7&Uz{iMk_&EDy;N#Oid_)Bw?cM`u zSdPzQRgaw3hG7M-5PTWr)xS%ZP{Pr?%@;5SDcxOEvM)k^AS$5+x7vACAPGtYltUDU z80U5ngHk2}eXP^ILz(XaC~Wi?aK^GbvF7^`*?>|+8f;Cigx$vpBgsB+`gN+xfnnAU zsMd-vPkM|1%^eWW{w4c@xQe4f@$6vENBn6QTk!HL*g{PlKa>1$Rg>@F;X*Ek(wftu zTlEQ>-Ee3&@vJZH$`5-$afdnYaFfPF*3*hK_Za9i0xmV&bmr)W77K}WA%=Pc zI>wGez@$|ydp#|S$eA#~Z&+zLR5W@!kA-?HlY4-SX+{i00-ytoyJxh2yOYJL)Tj;- zZLNjeRNKft`opf?5tSW-;ZfDWcxr7thu8%D?&EDL!W7#EMgA1ZBPf;L{7Y~YCK*U9a94WPGZCX$( zN3Sg4Bu72_G<;{!aIglCV%KvYxYRxnmI19L3)^6FOoFnx0?EB|+n+#f$;p98B6(LO zUpR!dr{Hc2T=*Pq*=|R6Ws5voG|{*e97GF2eH)oorlp`aHqzG+5C~n~rxU9E;jaL8W8|IK|0xOK z&RkWtvg27DL{1*76)HZM0?_3B5;iK~M*A>H@{*|ohyW|TJO0VJ>n53zAu1}cLPZw{ZXCG-# zA&o$l2|^VonoAT$Sf}V-wGS$rc%zhf>wCyC?Pseiaf_M76?H9C3fRJbU9E)2qlV_LE+&R}yd_2zJ0ycjPFgwQCZUe+p! zw{_A5f-4xI0F8*X6Dt_w+V+XW3zjz%n}gRk%;jU=>?SHfLL@abiL(R}(7CiG0)vMk zw|B@shoLSpp)I#yjy;npxz3%tLR;hTfVa=qdA-5OpnG}gP6iG5t!xSY$sp%HZ4qED z`3?E<%ic&)z(gm5_@0{&9sJTIG{EdjU)2v>y~g{&*VO2v>VYC|oPq~^>bKLzu32L+6%iP=i3cM7OuSxoNmGO^zLD|JR`tEM2BnzBG*3UL${!yw-Q;>3XsSWVv}o&bx6G zd>s3%ujk_zB0N{^GIp|)g>}kZ358QU1>XtU z$rr4EJF|HoMcl^@a-DMT`JU}*mAn4_giLe&Ee{U(LkS?x`!|&Sz9q~9_(C4NFJr}Y z;~XQ8-R!e6miW=qgz1pSDxW;2?fP7#R7hF4NMFLDFYWp>PJbqk)Zi}P2)dhA@AHkS z1`ND2c>^2~XcO$<3ny5nN<2CKD{Xogbtma6wt+SpE8jAXqFTPp0oYqwOppBiVWaeivD zr6yY{-H;5vpY$_~dq5_;c;W3Q5=&wu3EAE~{Z3!5PU8p)sVN<6<|4vlp7^ye#Xr5c z!RpxQ#fEvp6uirXfAS!EE3uF51SI~`O(HFQ%^ln%zNc{RT5HKCN5U`vpyCU68O|j- zit#wrr7|XIf!wAq7aaLv!N9|4t_?g{owzKtpra|8y9S%jnBl!o`|(0Id&_?XMqDn~ zI5bH`A5VU-+;(ySRtNtMIc_1pCoR10ecEoADZU4vE-5chj1KT+t!xVVW(QYT_59fA z${0|F{GdNnRQMgrW3(iStMEj1$Ulom@4fpZ!B_l$1Ya_}W%#oF!%xJQgI_P=%jLiL z{{_Chxb1%nUv9f|&-n7sU;Xdm%jwqA$MNMi*3z2)i}7XlfA0xjrYd(2_;NA%{}1EK zviXKD@!YN2@+2^FVu(mFTgiy7t0UPp?YR13EZc>o#R1CM@8R(+)z`=W;5V8x-+QrG ztKW(RF}o`JbmTNtXQWqLt#(c1LXK|l^im7Zn__*%|3JNlq?9o=3<$cJz8ePyNE2)V zV>G1RJ7l6H8lLpMy>;zh;t-|l%E;SnRY@&xVOuh8Sz5w-xbA{26^=y?6GnMX2DlQCK;;1o@4q74ly; zYn+BYPW--}W(fEi%{w8Z-P>@7mJii$w|L#JV_Z>-xZ-0MP`s$PJ639Y>Oa+6fo5*p zC&la5u~je9s0kx(+QY{3y#Wd+86>K{vZ0uue?z=}M7fii)vkR6sZut0^*w5$R4Zji=P!@qUwab>E3{)SlryzyDnF z{2oiEV}6(~^ZbryhvBGgCDdMxuiK=1`LZ@jhQ|Rf+qEo5~}ZzwLXgmqjwys@(f!b*8n#MKVWPY-Q{W80f=Nwpo+g?rk+8 zO13jJl^Un1T+S%CZ_B)=*tLnX3wbnMb)o>B}`gE!i!7)Soc>09*U)hV%(w zzWEq56dc~m(B5@t?QTw{?JDVItr4(<_yJ ziJC=!`eAfh&I&E}7X8ZIwQ$v1T<~Ko-=F4Af{M_!gU$`J9 zmj-`V`A$>+T~Iu})`y+c4K2Ka%gmd>&y}G6RWnvfn97P#2FF zeUgio^H4$H(MRn8<7Snb_V;xm)!X`P?Ye#4^cN`utct?_i<2E+_car}*MZY3NS5v2xXQl0Y5Q^bC z$G#w%tsJ-EZ%t)xx`=M>MtxNt3!J!F6Ph)bTG8BegTV3crk3JeIAlu{GgXtCuFYC; z8u-4B-5kdZ`$qvp^f=5zK%l;7Z#sRFPSb}`x_Fr9F`ABM2e0D1gi5G7)*C|Pgwp>| znlFaivRfXM^klT#&iA)R9+Wv2VGLeV=Us8IF8MpDCUVqCRk86S8j#y^Csjv|+9v|o zRz>G%+oN(jE*8;|3@aJB{^x3Xq_BFi{)A55jvcr=I(}(%{L|6OH9@h7#bSn$c=A!~ zZ~PBMGk4z2JpV=e2k`2lYk7Fw87sAQpp%kK-tYqy!_x=8oP#_W1_gGqM+)X-rtIR^ z=rzA(^tyr`1b%wJ0`6Ds3>P*&$urxClA>YCM;9lwjr1t`Y*a`Tmz{GO45il4zTqFjiDy@fQisdW zH?axRjjxv3fZX_W{^x8PUvT~>l+pfTtaJuwrY0)Zyp(Gm*D$)1boi&$Km2pJ8{Zz* zRmi(LSm2iP<7?!W^GWcr8z2;htdrUkrlAMjYGLHmywuy`d$-%Q53I6wEwD!O!eMzq zS0KtR0gTjow-8m{z}bKKC$|JGLQ*@gBm*1mVqv#Q_gZP!rr2+n7m=J{uU%7If)`i( z>$GphgF=c4ZhT9Jc{X^re1&yaP{oDJNwV;>;0e^~vIveP+U=u{PqhP*9nfpUT)<&sJX_TOXBpvhmWPeAw1B418|d4mjU3PE2jT_2i))XyFLNn! zl#jEKdqi1SD)YB;Y(ke*Z3|9K*0SL)3g-=H`@vxTU-OayRt&H=Pc(Nb%V#Hu;<~#% zU?=+Oc~Q-EQAxN+97rYD0%c1k2BcKOP{Jz1uiVAyEb0Xb?KhHe+z1A9z28nbM=74* zG@v;90>@E4P0c=JAC3}`{eY4Di84L|+>Md=TTe4*N#s_hRI^Isn8mX>xM z-Cln<>-{UJbwB|F!8)MJ-Vm%%B`S>mTMQllzIhR1F6*;n%CV~zA19UWepjxCJ!Z(^ zy4Wzv0e1o{Zq_2_k9mIM`d;icil6wTa^x)jk_5%E@x&c5(6;1-lE6WG`kxX zpEB3RY7Lrr7-!MsFA>c}SVn9Wbz-6UV+L$kkL`j}rcUpOj3q|;{*^eD6P_o1b(NKQ za=l;XBI?AnU&pqcfy2|G^dZ*Hpw(7}w2WPtY=~-y=cg=j(^M(mdsgKt#i zkAV$r;pIowM^j51)2pMQRw5;F!R3r5P`uT}jWLIX)?7}G5#U@6Z|zawG-E8~xNdI0 zSZcAUWTBgv5N<}fX71rtO)T}0y$XkJUKwH22hBGeTChvD>7&L}9Mw-kc{4i8n3~)P zH4%bm9CZTFIi`x^PqVus^-H-6jNT9Jili2s54%4OUW&6tQqHp-$gZOQ@uN6*W>teI2j|3as1p&XwW|T8*S4SGJwY7C zvFEUs3Xsa8^{@wNaHy!?tmbWB0w3jc-%TJ1I@mgtsB`{JlV@2C0lA#qs!WgyWuB&# z+>|&c0C=_FG=@JMUX;L=%ykp!+LV%h6VF{WQ*Bmm4w~(_#~(W9WW4ilU@ZAT2ha<6 zVg96gqSLX0u~2JwJck*u1RWXO^@Yi7X1wy{vioJgm4hxnvZ4j&uWE0@V+39aE#R?m zVt`-%IPd?WjWd*)20RU&VF!(#mV&TT=KSQGLK^pG78om z1f2f?-!TYq^^Y&rj}VB%EBpr>(9zu~bK;epYTI6zOO|s0J09y`iPEOH+cj%bQzjne{#76P>*AyqXov0%+!!SQAJ#IKX2 z-Y93OBrn^|%hQEKI!jwqtmE*rxo3TC;(IQBF_ijK@~aFkQtUkqwE$QLdNzH1mz@zH zgP01$OKyHA(Lw%yET$oG+KfJ*Kj!z8qX~OI(pZz7EGV;Ys>KOlyBlyQ^LtekM*H)Q zf6U)Ce||K{=e*-mFee>P=vi+0jjE7+PG9j3Exx-u;9ubD2OAVy|5$FSW!tP*+h#{s zCO+>6+H(~*UF$bmkYSOw4wdf0$T<$@|@{?G{&vEaPg5_nV<|FnKcazye6@aB2x4l>oMfIas}et^9x_CdKG?~*?QHa z)UI9Ed^@%4!;T9=3uee7No0#N)OtKOL%eCFWn$O5VIzWnG6#V&a-m?vv zJQQOXok^1P?mplE91ZoJuln(qSDrMba%k7GPWVHacQ5+^e5Mb}#`?Uy1dj>4TMh{J zDYFDi8HiWR%ib*-X3qIovvspiZ##!wSfL_W@91ye_D0^+7XvDMA+ISnBaITqmun0Y zB!xCcv+v~ooFrQTex|lE&?zLMx#sA2zC2=Sv>Td=r|`ebMK#$J;KXhqqmA_v!oy=EAI)+cqNi^ap%ezs~KHoQGV3? zdox~pr8oJ|Dh)fa_qn_agFqX+`E%G3wabbsOV`4bu3X{vB5B(Cr#g=R2u^FKKPnNV z>1($i$ASiat>-}&vO5tzqNzt$Y2gyBx$B%@lo+buVAEGd#UuG}x1I0p13zrGFK2DRB!#H~YF@LLP3`60IxKvy9LE$ApHJ=BEAjQzj(&+MsNKPUeQ8Fb z*>Chscgv)L9OZupqPsUnzybUC>D!L{D#B!;}I_I!C0kju3UIH;%diNib$I{ zHU_MMb9O_B-|yVxF`|{^BdkIy0{1UsgKJqE6 z;f-FZh4w21pINM(ouaG0o2PvL!V98@^lw@jJq*TU!!WY9*Nx?5&$_)BXxhC!Q3Kb| zr=#6rY)}f}3xVAm5NHv;K?JS6KXrbrz03B{UVc!_`nNrrJuqn5k?es!$?h(EgL*!H zaP0#c5P$~nRQm=|!0YISS4%M?JFcRU*zUrPtIG%B(;FCBaS$hz1`)B1sN5CxXl1#D zqNN;EN%GTcijcj{UjYqVI8*Nc$#V-o>l##1nj|;&1viwB-Mf-5^xSFla|Yo~=KoC# zvXh|z(X7kjF2Oyl>ND&}q&NVP`MNShMqwxqNd@ckc8m4Pe|xw8Ht=V)D|m7bnT|x0 zLH5;F$4;@Tt-klu9iA-Po;}jOZQHZcrjjoWY;W@9UKfVR_g``&-OoL=%4VR8A(V#! z{;fYRAmh1(X_&-$XIJt*U{zm1BNaEIO?^%7;tNVullF=Imu_y#zE|z!u#q%goc!!3xpIT6Z0X~=D z|1;JFhWh9l&8W!0WmGFQW#e}Dl@TV&-I!-*Cl%_dG4*mKa^WyvE<|nPUcHV8!B@gt zSM1gC&D3jEf(zn)F0z%yN>e6Po#wvi8w(=3vf5vV$YRx!`LH&cKY@d?Z&v3{2@~L( zquATya%s_fuj5M;f}Pg0AMIkNk&8lI)!@6bICq0k`U$nhf*NT#*!dtFu;-aKg+%cZ z!Yty@t^((>uqUV!)|=gX(vmwR?!EQJVm}TsOQ7q<-tw+^F>$;L9{w2#Rm33_Xt@W# z>pXSo#l%6MSVT@H^ycQS!lSHIasBoTG`effOJa8%+J(6ybBjjJA|a9p8Iz0W+pGd@ zwTs8<9TXihi16Go)w>7mmywL#DK|fI{)*!&y2I60MFKWFX8Ly3^66_Q)!UC4|=&aRW?Ad2Ruk6{m0Z3Rb-<}wce^((xHN z6>)T-y*7BLHs7niGj|lRD@la5TuFlaj}>zd)de9)35m@HhLZ}2xmXqKAeXlQL`O|L zmz{czmFT!cf$DaiK&cfR?fYsk ztG=Iv_k*=-W42Zrrdnt~=I>T|b7(+bKuEz;bTlm9aOlj;^Lmxx61A~dzRGuky-@$4gWc@@oO=J1nqx@-34P7*rx zJ(uF~>;rd`1a}AIlggi+nXjJ#8Bs*<97$IT?zinY=Gl9UNsMKOG?+O_pDG!fI*y8G zH=3LH`^h7L$vVWi00Fm6yGf8sX`ZKAW%*@#&Qrme5tG(v;I|ei_>)1b% zKlQ`Z2YZFC)3Hbry{QlO30?O-34ALfsa@5f8EVwnRV4R76VG-$H??b8V!-sbr&BPs zYp;V=r(WuxT2e_bF+6VW%I?q>9Y~!KN@%}wAoi_T?g0@+jYXy?X~H}XkK{5V$VLJW zOOm$TO(@D}YRZHw>Qeg^p80L39QChmXlQ}7Hv$SnFpdrL-g-u7c5L|E@UY>*K~M~r zTJKdZ8f2h7woD~mPcsng31wb&zFv?&<_iZ7!8@^PmK!|hfn~Rwe*l^6LyoVR6|H=y z_oWCZArvm$XH1Jti`y)%3C{dCc|HFyxni;4tgws>*ZyL`nN{-BNi}ju+50f*o66F_ ztA$t%>H}egD~j(U({~B*Y- z%q!tbazCiiX|)?jVZ0ax$#k(D*}X(ij@Y5#-|#Y$J9%LKwB8KSZ*wG5AJm3sC~iR{ zcX}Q7ocK`#wYgNS*E=dX0@~e@AMp`ignm4v1C>i&-!GEgrOlW~Zd9#+MkjnvuF~Jn zg}7L0Hf51-@8*Zj&g6%JgV~~a%-XU`a7O?oH9mB$EUR+Yx}TK(0b%1ltzWliPT%z?8-*U@SXo*a+kBpjyiex8$-SMT zeA@I3rCpqwevqHKFG(RaZ8Vhm8fyd0+m*&M;#LB^7f7p(<<>o+4`M8H*Ecm zzA17w_oh>5L8??o^olh(9=|=ehY7W^} zdqU1uwcgL)l%(K}sj_71B&VNv;~)Pn$`lffLkngegdt7queA@05>P?lA-G6w3=_#` z9F(t15W9*jczyQ6$P#bwnX}EsP~)C?eS^**waiR6tmRi(`pQ_I@ms&%IgDU$9u5cO zm{>gTf(d$^e;i~@GyfYYdJfBXwz_U7okQsl$;-SI$`trTl2s(u{rBI@91uMza}DV3 zL!=tTH%9`ogK9|;!{xC9Vb=!8=!T}=POUJjMc4$1q`Jj{3c6j;=@){luKF^#s^J4Z zSP80LWs(I|BYH%(kij6k-ZTbK?1Ukd^lEw&sM8Mmbc{?ZCT9pO*6z?)xYDfbNs7oF zI$9OV)QCDV=3g@AgWk3=CvJ}B-Q^#p*rq+x>62U!7)x=$-kdiC0%Wo9;u|3HHXF61 zgT_c`zzNm%CT#Ojq7D-W$Flu!iB<{SG~Ut>TjCMg^};8W^92%h??DS4rqO9Ta z%RG6Y{*K~+q#JEy<_V+U3)L=(B*%}&hUVJ1spjaqoSnH4c>njZ1+OelTSeWLdcp4S5T80y=$lm zbQhLlSqhnbCumMJd9XEk)s5s^gRW z0EGkW4G4Nb61=Ul=~#bce;>LQtB#arhLsVNL~~z9e7T#a0MK0M7<&qF0D z7K$T=T0PKAqKlWLj{i((3-7dtnXQ|A(de_0)JKR!=TpvPqZS@onqTYqY@~Tb$EPD4 z)c6pqW$3zRXjiG;)DFa>w@DGfBK0BCks|yU`_1Jf99is@)CUrd3ezcuY<1Au)XV+x z$1%YOB#&iZ%I+|k2&(>IMZIY3HpxWb=oYHzRh4ZT`&H|kHBShW8m`%5f(IXZsejnT@-dS3<@(&`$d`nrYu6y^hxl7m}w zzgODCqua>qA(V&U*vUsr#7q3NjkxA#FmK}xDdF>tB#|TuiM=sVp%QnZ!b?Kk!59k3lc4g}yGdNczx>NeGoHF~K z+1()Tu7rMq5*(|gxx}T^U+CWICwN;lIo?Z7(d5|W3hE~)_yuR1BqTQ$l3bWz1sFej zH~M|OS+$iD*qQch0xDd|@;N%PXFE&tzj?2acUIqhHzT6?37@hUNu7ImN$+u~wBEb@ zE@uP0oTi;=Ql`4)KiXvQ16A?u*;>5P`#Xd8IkUHv?TY25U=qa?#o{A^IS_x8SHsxUiY5ByJ!O#BvYn zo3ZS4_vzlmF@dq#>GEiC^RqWNsa= zKnyoO8@*r<61T%&;#akip{Foq+D-EZTI{FkQw1qiC3({!(*S=og|GC1SB$Wl04Hih z*`P3!BnDL55%nijh1`tVhYD}dzIWIU1Od<`{Ez=9>u(79f8+Wev4{27H(7u8>Hj0^ z?|1tD-SzMP@7F)*=f7TmmHI!q{?>$B|3qp1x6^QI_A#^fNvj|!@dmYKjXiQCiQxNI zXu15-H}c5oq?y`Ce7cXKEmSQ#H@i_F&pBD+_54=wTIpJT{d2P)1#0E zK-c-$$;wqJHKv;$zDI^G8T*JE!?x+huq{$X6|W0xZY`JvC%cuD2{A31mqVFmrBWZF zx*yGxuXaha+d^{5%V_7%p;phOeTbOM7CJSvxl5|K^koT_N&Oa8bP)`SR#UVE6EtaUO(^2GDGNnBszJ9(rx$`xnTqcreNmn9|MW!+g+ z%A@2#P|^*{`E`1E3us=O>5>w)f=q2r%urEE5rDN#q0l$^fpAJPQegh+@f z_n+x*)rXA0YkA8EeBNp!efltya{wciLeL@?^Nsw%0JifJ?4##y(x7zza^j9)jXHj+ z^||tkVNjMKyc# z+7>#ebu#^`sB$B@M^dkZeQjIxd#uLTntdKEx>J32`nL4y7Ie8GQlUcwMssNhUZykC z4L_lb@~AmkHPyrvJpi#u{YtZ#Nuin7H{57_!)~K?;Vfej`nlgCj@GSDd7t~$pbA9- z1q4Yd7-%T{5>2p}4O-DgMLV?hbUOFQpKf4?x+1ctzj~UG=VA%$d@z;HJyxoAyRT}O zVB;S3&tT)*1Il0{M{8xUajqH%HeP&@uc2VK%c1QM`igK-4j=B*{#Tv49d%le)M_nE z09l3ks9fmN6VRtQ*=+iB7u!>-*V}j!_Zy~Bp-i8iD<#*^(XD*w(qKI=e1^qe>K6SQ z^pO>2u+pfb@qD@=$smJ8hv5qg+tvO?@}pp@etmRjl%WB$&E#Z_jN|nXy3vx|uKewk zT;lDA{ynmcK6^qq-Ql*Ndcj59lzehmxX+k zR7{>EB`|L|zi~IUnp3l7_^jTvX*ZBS+ce{lM(0u8yK3$rCrp{!PH?Mv8^LG(gRLg+ zBpMDSQq1psAgpA?{aF?8asfMdXcU+d$ z+HJ*G%0a~BjNELa>VU*x2Ca`0km%utq$LoOyfYr0*Sok${V#kQHI~8X9f2)OLG-G| zDbrQ(p2IWTcE7wwD7$DsYN5A%`$LZ6W!IzV-)5`AO%_^V`@-u>yuGyhg>hjenOeI@ zYExzEVOwdg0%W*Uyc)7CD)NK3UvW-=0EB}TIKpZQ&_e4>cjU@8Ua`8kxJg!U3mu67 zB5U~71ln75z~1U10&Ix`U_SiZ!V$!PqoKo6}mZ!?N+Z|Z|LdLZZe25rIFtES+U z9$IJK-=K{ydlL@c=s`Q^mfIfW>Y)uTE_P*a#szQmplf)$c%y&zc5?7m4>8`ZaxdN6 zB$*N}?Id55KxjC#+oXn|g!B33TX0Ao+8Fs<`{l|E6(HTIUkz&^58gZHYinn=8Hm}5 z*fH-o;N*3TSuBB&Fq&=hcd@nIRu3%NuC=|drh#BP+cu9aSNIjpjztk_uaEJ)Riw3r z?X7(46|DFFN#Az^*g^Q)8oYk&&Ccz5!@`YhZauOB5x?3C-;RNW2a(D9*Ogdkq1(zP zHB&0cdkkAV6lUK#9^d~3wUb%t}j*QT=Rh{$h)P4QEZUKGil6Dt+`Z{imxR(cz`X*8N5+#j%9=32Qg zd6dL8&Rc&;-w%W<&WJ1$$)h2hW))pgiYOl$=zjzWWhl{Hv3oB1EafIvj;L&pgj&`T zR?*G`ScH?)bpnQ1@0H&9|F#R~_US^WZ{Mg>JkdyYwH?Xk^CSGvgW&WFC)7o^@^$qu zNz*KYIQ{@eZ6{`f2fNZ^2ayt{5l>8L_8YQ_|IBJqTvaWFc8CmCemWYbC>f9 z4ku7eMjaSrlP($-ryNcmaD%EWDam$MP3{mA4Ow~Pfx)43nO4KZBE9akws8dq_$ZN}(aAyqdYmwa4=CFl(#q4NJ}TeaDSDyJuEclTWFK8! zCNF89qD)@WemwK<-Mf|@THgaiLfzfumkG`0$>YM;;R_)1BbJdCS9LN~7dKMg+cZ{| zT<9v)i*1&JPyAKMgC{F;#{Ux_X;lq9KX>$G=v#O=twLZ9{NM5;&yL70ZBMnutV4O zc5W1OxCr#o+!aJ@+NwBGnIx|{?%KE13DxA1eZ}NYDAow2k9MD6T>=d;rT~gmx@>ec7*H7NzlJouKoi5qsC+~8}HGXoQODg{1LUmmlQy21bmvBLF?xn&0 z2PKEHTa|CMVNIu!L}PsdNVXeAR$A|ZxwwoH7lSf@Wg(c1?~w;K)l#WADc^N@4St?Y z&Uo_JygU*N4Tm+p3tgchL~T_?o2d)P6D?>GCXzW$10c|CaY8!7Q$*J)f<1Gbs^6c{ggpz)Eyet z6MCQ#LcSJ0L~nVBswltX^s9^sdg$$xScQy?nho_mrm%08eR?988w!V@%g z(Ia+wpK1q@iu>a#wuWNy=FN!#qJJAz2lp%QDsZPsq zW|?BCxk0I0tW?@C`{Tq_1b_>s%Jz1`Op&!25WWp0<65lq;wWHZPP3Y&&6bXu}c!4!TvZB_j4Mi(;JdAxmDn@cQNJ(kSojSQK zedo-bJSOSdCaa0vv2Tl%52*$ud5U=*c#9er&o%idJ~v{JrK|SuoLywn&TY zI6s<00D@wm+x4DatJi#C|5qwhlqBI=b@1?O>~NAjf{^f*?k9Uhe*Y&_Oz%^APYVi4 zTxO4u*XB5rZsql|Nn7DFgcjY(~DIdpDU=(8Yzw{gL)UOTX6Rf+JX z3Qkg{Hg&>5ov1hL&%0nBn+f!_*#dqu3O4aK%T)0q|G%X<<8}!;UGZQof7pRPZ1UJf zeviZ$F}opYc}Iq;>EV&L>O;I4Tcy+=9=6oj)$fJIcD)z6;4yw*Z7^&LX!7F=RH9IUR>}Go|p6g5}u#s_wS*BkMqMt@8>-e8n`rcz!D6p4M{3_V?KI~ z*`|x2b0~ch2;+U`fL*9xXHK42F?97rKw}Bh7m;G7x${Q@gl8SeQR5JTeY;>>f2fbaY@($xUsn43a*?>K;ni}#r(g& znRAyQ_U(W9{O<>H&Y3f3=9y=ndFFYZdFGieaR|S4J_+`O^agL}8qZ`EdTgQ&ahMFmEnx+S;!Nk7m29=K*--2G0_4@Eer$-Ac-g9XP~1Zf z-{p%9K0?Gb9cWf(68pg-CvC=Jfaz3TpNx!cO=F2J47H!BV`eDatjuti>bLKgy8xdh zL2Y!n$PAx;V>y7uJQv&N7k80I?{8P-+Ps^U-?6G{Ov}nDs*#no&0Ot}ma$FaxpRLj z7iQjz!Q4rD9=H60x^zrK$Z>91wt@GVb-F>Xc0O&|!*owP9(G+z9xat^>J9P5)G1d~ zeY+qyWezNGvSEQOe61M$Jj`@jRoKb@c5@3yD-b=TK3DR2zP#M?zcgnnv-MC@6s zihHobP!pYSFAp4y{iq6W@GME~w!h6}^;=aA(@pv|jE%4c8@H=923VO+gvV$uxZ;bv zeyHaw(w=Pz`yp(;X>&o~6Ajc3uQWrDJS_L7`nKMy zEjTq;nDQ%g^Et)-LB!Az5s8a4BcKtJBxpNkJ?#>Fa0|vtmeQb+4f6Apz95?)b;LkpwAOB7Tw4}mbl0?-*AKn# z%e+fJOh07CV_0rS&|BrspuP}-jll zw`I!I!#G}dCNtteMli_85gF+qBN_xdQI#_7%~QRseB;lWO?SXH?D)sL5z%D7pX-mS zag*1$1x?l;!GA>gn6cCU+^(rJlRvq2GR_A@#^j(~r$k<;ca7!wY329pYh;<4fXPH& zZvG5R({4qb{|il$%w2O9bM=Rp`Dc{+WBYJAp7&z%TKH~howq(ZV13M6H(*K3+u*%8 zpbKy6ir4_+=@LwUiUw-ziG>;+fN1=c&_JctZqPu2zs)m7TpV#PBaT0lKO+cuu8rWL zq^3|rOtu79gK(sb2oa+%*eT0sPr(^DJg*owna|V&Iwa?toj4y|cJfkyZe2IyDBFVc zQ2IH;N6b;Voqr7Z0PU;YpIpu@<>aXyUgX^3a1-@CHG!xV%xQym3|cp+JAEMO24}&k zGVx?ZbJJg=5F*-Sol9=5K)x&sO+7dX=qRStw2`j2S-1!$67iCap%QA^l)zrZ8kF>i zKLWjfvFS@cf}v^$ajAW_8HihK3U&<@jv&13Jd-$>c2?y1>6mz(olgb79|Lgg-M7_0y%Qi(rK}P_kM|kTF?*n2B1aIGGQK^z*5)p3HX5h|OLi}XrEn8lERD(Y* zg2!-!f49n0`0b-D`=X z#_^vZZ(xW#X8b|hOvS|Fgi2T{nl?o}0O@`%PRlwAdpY9XCq#MCCMDN7Z-rgC+I5RL z1*i20K5OtNq8Mw_jX^K|oFid-PRk%TBiLt^?@9{VGH4s?5J`=;Fs`>;R)UYAV%Hlc zLEC9@%om1A!5?B)aM6!V8T8<_6FAx~Bw@vyU^K=3U#S1gN>Fgzg^>1gx!A4(CN?%S z>y>7v9g#={raQ_GKL`OujtW|bDD`&b<@5!H1S|D#8YoO#B)Q$NL@)!CwrG zPSsX!pk-%tr*pz5&aC%MZ{pih6 zXUtA#>=z$713R3mwd{kC($$Ih%DQ-<@MEsyH+tB#=jQy$|}r)o1_zQvc%J7YFG zW8dP#=bfsxPSxAa==IJCA3C$%q`A&_(u=Ym9-TBFB9AXw%ZIC-G0!_=*Ye?Nr)s4$ z`YGpx52jt_d?$D!`$fOA%ok_?OIGqlyEA6BGj=6kd>~@+t{mx&V9S?5u{UbGH|%^7 zOzU&-{09GzqT}>ZBd$btN4Yt{&Ej=n7et4yQF`>65wvT}22_k^4G1)cir4H#8&M$u zvfUZG6!@;XF+BkuW5xrpNC#TyjCs?b^=8VTfVHO8PSs}=@Xx)X&S>y_{!303;6Dvc zoSWoVnGVcEDx%?=fzqAci8)nER8Zex1{l8o_FD$^BraLDR~<+|M;gD$sRDN|(J#(T z$j;sANv0^#$-rfl!x*VrX3F{ebTx{8{dS-tmS>9yoUz-Ts&~_`fuS6e3`rX<*N_@E zQgmz48+@xK90utxt?*#yyWo;nwxBjy$|nfIerCQEd25`TaUU$iLXtP%jn}IhCcVmV z(wn5npwEX4q!w}$@2K+F&xnu~_qsKh4kB4w8s!{J*bOl?6&`W@Ur7tpX0hs+|K}RC zV)h*-ewzN4$X4faov&C*9NuHR_~V&RH%4_l>6_6-W%?Qg9@f%?q~8ETG=hX?wSKP8 znJUFKf89vh+2wBSlBNs0*LhpqRM{^ZQ*I>Wbt z)5Pyw-_Go}oADF2w}kd~K1zQDi+_x4_K=|f)2XJHP0t&02rfAze@@r_S7eH;orsy2 z4K$iltqQgWN;+~+lmv>*0opf-m@HvgikhFHsEgA_@!?#_oR*%1YnJ{qVqJ!wgsVJy znnE<9e0tK!I>G%S4P1I_S3*x~z%@~Y;)Tl~r>Sw|fGjylki=I3a_T$De1o|N+fS>! zdM!C!XUNIO14a%de1f5;)meHX!a*QJ?;0S-RWr` zK`6~*t5`=KQ61a>QCay0$J$iii;cb?(ZT46Q>;ie)`)0%^4UqQk)@D3y$_8Y#YBMW z2)_T@oS+t=5>*Om_|H-!g$*RB3*8juZ>j$okJcp3;vw|EH z!L+;brMhN1K$|=bkicNtnSp~bXWnP!M{AGG8&cM8k{wk#1YTN6PFu1D7rY2DApCrh zrrycb^8cDowcseDPQkd%p>m;7HluYh5Jt+x(0UkBPxOYzt0-TQYzSNvPd=^{NQUwx zF6~#&PNtM+^p^2yd;p!1pvEWi-v~Vq1{f4gI@?Zwhcv6jM30Dzo_HnYw zoEdRT)LMh@xafjTY7Ay=1hggQNcAQnb*kq65}?pGlWm>Af^y zCvv3m+>Q-shavQrPF0jsrck8HP^3^Puu}$C--xS3 zasf}wN@h=Oz8sx&9~8EV48Fn>Ng)Zt)zd#P3@HLW!Da3K%I4gnqN7G<(*}>IZ#Kot zwAw5+vAMS0X;?}33e!+R!xD&f5D|YlisF~#H}q;C!}tP77@;uLqT*#pEVKxEp+zuU z4#?15R*fHoQONp7cwLMgW>E#=m^q<``dy`vQ&z#%DnrX_LYKEBc>eoxOl#U}$FS=P z6RiKRHjTt?)kmlG?-KQsihO0 JkwNb@Pj?Y<(o<2k_9)NHhqt7)@q>b`bDh7?ql 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ñZa5or?^)o2m>c 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%0A!@Origls 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

FdIWt%+^UjUaxdAB+_p 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%0D8<$on$=NQ>Bw z$Qjcjx^RIggyh^2X=w$ezzzgwZS$yFqb-OnwLMk+Sos-ncd7QW_9JpDu|Q}lxJ=Yc zkp9q<`Wmp)nukR$u#Nc)JcCS2q$>-El(DYN;v$i0q$}*9?_ol`65^;U!`d2awnbV- z?Jkr@+)kv)>pMaFJ2)Y2r}_gsG;af6qM7+L&i0NDZMz^rg`hBl7Y2pWu<5T(q7O7} zsgAxcAXzRR*`5ZI>gc0LOBGEE3Qc$-1cNbZdK`Y-Jkcw-WRC!HH_RPhDebfE!}hlX z+dj_1!D%kCRy8XZ*<5SC&N<@_L&xUWc~f7o6|IZO6?1qn^yvsu9Nj7-=4AC}wzjvl z2onqSRoiy*S5{p#bE<3qap_OfFxfEvYk8pn8?TgRxoGmfGO|EEXz7w;H8X)O3HY7% z_Ghp_HiQKcLf95X9&3 zupUQeJae`|00r)qc+GnDW{;x_p})FjJ^CA8b<*Evm_5v-kef@i01&y1S0OBmqe+Mt8$(zYqYLv2qJ~v^ z&l2+IkCHfCAb+tL6q!Bw91Q&^UIpXuR$vy$%&7L4!J}E{PAB-Y@YCr8hbyrK`94+^ z?bM%GujoQE*IJf~i4@G~2a8@ne8WMOsQH9*lugosM#$F?3;Bsef3XjV{^A*^&&fT- z05<>*WV}SbcfBapgxt(~@k9qM<0WgjQBC5G{`WBl=f`X5G_VUd;eb<%7>Tv#tqRyrb(j&LXYuquWJ^cSgq{_GDV_yP zOP>&!%neI|obxfF_kRIoDWEsVH0FODY_+$C`fndmvH)I}GfP2Ik~6}jB>RV?!<8rh z*KqZY{R4IO_1E_gWP2`rNsA=#0#!lc0NvBucqXxY8218Qfjyy(Ds%P(;exq^QT1Ua zj@J~b`17}V>mJV`MZZo+Q83;RKkBKx06$vQ>mX|CUNkm}3qOc8lY;+#dv3h0{6Me7 zm5-!Srr)_-M1}fCw&#ytEEum67Bb$~w+7>Nd2}Y>FI7Gw@Pm9r>(FpR{lnqMJnPnI zsfU`sqHmtRBxQlW=Fjwf3g%E~$+JQs;OCvnSN<(paJl(2{kZ4o=dEATk9+zbx@+mj z=S!%OiOne@J+C&G+*tk zldtH$KD@8=*699H1Q@+H9qDh+sZUOSk6ZuNCDlJ=*(&H?pV#H+kcVpuOEKu*@1@;j zq$owc-oIO)p?}v}E&2Y9RQrzx?W6A=r~71hU+EpL``4Lx>@6Xc&FQypm(#z$o5L^W zqh$ae+tAWDA&3N(pyghI*<)JR$Xb&_|;#XoX z*`5_!3_&6-_jA7ky(?J1#Z;MFzjRAmrsi6=%xHzZgY=?|Vh8>t{l3h*6SqJ(9z$pf z8bY%Gy^T)^p$T`H$5)bAT2I9zVwPL&)|iYlT*Ps@tb(&;%MEv@$tmvrewE0C?L<8| zw?i>p521ac%G%HEPh3UwXch(hBezHK59@$Nuv0Cc5Aokat^eX5-;fUx`|8nJ-r1gO zKMmkHmHQpwS!kd53w7q`gY7=Gyo7G|Df~XzrP#?dACBit>yM2`;CwnyAJ%&}!%PjF zNArhX_uRGC-~N~e3fJHHzP)oBc!Tw~4SM6&-}NflnLhNT zZT}U%2-c6;m)79W@c%6`CHg@AJKYZt?u{P&=4sc5%UIPlL4U@J99w>d zXNM{C=a}rLBxtDWQsRJpCDuvVes2=3TlVmy5IC4Nq&X%zpPt-UGjKh|0eaNj=2J zp^R0?KM@qn<9@FOm+g7yN17u91$nPoBO!bW<*UWi*?wDqv8g9*Qq6L=x0_%Khd9rq zC!6=b$T1>ju?L+G=6#sG7PEM3BX2uf?k-!)yzk2w=<5EY&1M8!Of0O7VAXC?s{L!2 zuAmPcPq;puPjxq{Iyl(rVChJ4Ov*I5GEM&TASyGxzXc9h-+G6A%QD`eZ{;~gJEEX( z_c)wo1#0NiLNf>yul^BW-s5%&g9psK?E5Z z)X7Jx7SIo0>8Q!M%jm{Vn@Zme~Vx!seh97L!(n@Y4SeA-;l>m$?rOU z?(xR-O7b6nW?Rrw@1uINk2r`Rd}Rjs z(n%`Wq=)$dZW-s^Er4_o-Yj90QhuH#odf7R|enwMXUjeP@SBj*s? zi!X6KbiZofBJZFgW*9MRHoF$Q~V;cU(m9i?n zL3|65hKG3bH(1WlMF*N5J*q6x@159@d&by7)Y5}Tsja;u*B{JhhtyE5cPQ1xGCy?oQ55Cd`C2D_YegTAHZFri%y}hb z)Js1Zu5Y69QPv)D!P&@2>Un);dOf=@BIy%*VJAp!$Nn^NKkA_V1-x!Z`zL36Kg|{L za@GGw+qb|+Rb2mPA%UPtXHlX-L82~gg5ePbB?6k&4QzD5s62v1rGiM6D#Zk~1q>z; zZr4S$TC~;HU#r!&TJ={8_yCgtNkGx?22pv4a+in%P+mUv|NWl1_wL;d+V=DR|M_V4 z&il-nGv}N+b7rP%N#RkvKhhiQDKbvq;g;Kj`p^hiDo1dvapCy^80c_$6kd;=kFZ?y zHXI5hH=SWADyOqFSHQ-nxPKMp!o8$O6NUn%S(4YG9EVCQ#u;+}#~#L+9r$qW$XvN#w8_W$Fw`)kCm)bs4=eic8k+vqe z|HKBNoFCz~ff58m`!JU9$f5lAux&k=S z@=}zK;M>ji<2(p)6_>SQhigASz8}`Nun|LQ?T0y6BUDKF9Y3IN znyRMhe3D0InJ7${c^@GB1NvqW>a_JufJObiuYhImSN7ALar;->{n^u3kRtt|zB3R7 zE&Uz$AAkvJeP82?q5kz_?H4{EP}y21o&c_U(BrM(ed_7VCY3^4b=A}U^qpTH*VcqJA(U%OLa)4=YD9-x4(mwD}3b;!iH_!7pgH#DAdH)~Bc^*fJEtGcxR@84xj7Y>UMx zAs2j%g+fAdb{!lJ&PTFHVzUI5L@!9ENw_FQJGRd3#_q{2KE31?ADT^t3)}S64TZG5 zNc^&IMFANOjIvp_99uDk->TXj(3(n&&*{=LfVhWCKg0$_7*4a3I&nAwk4ze=csk_> zSql6eA9GmBQB$EJ9vh}7I1gdgeuu8mNbn4b(n9b8epxX*;r5E7RtyZ6%o<10HT`p+ zO{CE~Ora>ap%1W3X>=_71)Y0i+@J35NPw&u%A*LWKiy z|J6*CF1GHaDu#9j|1L`cJkH^!1o$Km1V9P!0X`fFkS7v=$AvOVN+KD}B~$=b{6u#G zCq5|pxj!S`W;qlCxvg1l{sKmeT{AHGK=^8Lz>@Q+BuDY!nkVcZW@B@bv=1HI94`Ri z&ITeK5@04;A2<`8J^~kDyv^`2ns?|QQ5A)Ou)Yk78&9yzxNgI`@lj{EV&=rRC;{M) ze>9iG{zYYzU3uIc0-i^O|02JFtrpFn%g1aW1M-hJ>qFX`asEYDL4K*+iHI=(ln{(z}?r_c88PQk3Qlo(ne+}JeWiSyBT3JGH4yz z-k{HK6rrxxzi1M$k1T!DQ-hTbuxf9{EU?cbRoOEFq-hR^&=cAC(NBn(k8n?xtV~A2 z2`asIyYbi#Fw z+@f6v)y=w7-g1}T?_A}k=QI4@ba_?%8)Sx6Ky3W(^=Bk=-EtRu3Y;b=>-mX=vT}qe zI$;5D?6+RjY0FE^R~A4)wfG9`w>aq`*W$ZXJKKH!wI5Ru%B@Ib_kB^&;V;K1@VLbb z*UZ|p!Rd)SFc?eE#tx;ITQAhYgL&VXtC2l!PJGr^MdIOYay*p915G#sl^!zMLU}uR z$|-LhZfR5xR6{AoEv`XNOE6r(w?c7`Efmrjcr?{7S~8y!-NQ%f6YO;kzX_vq;Wztm zRkZM%UHEYL%^Z%8wL$Fgo4L?G#I4lkH>cwKBl$}|&6B%)?PL4j$6d0b z^U%6WeMs+$9!qahDDh)8sBsq6Kmn=$D#x#U~25%l22|+y(lC#a$eJ z1{ov#Wwfp&&R-^B&O7|26Yy=F4-@{f`Av+WWz$SNAIA5FC@ZQrU;@}Yrrr54C`WgT zJRkJ=4o(<^!?rx<`!1Tl>^witU-W$8@cw7>r3PhP^W|G~z?m=2i|zRW%P`FzoDDJy zz=36#lB-ByCX{!?{5>*jy`X?q!u-CIi6~*pueE5lyl-5ayIJP}*044U&@-|{vRmeY zxhpwm@Ln!ge4#MbcbKx4tEx*M!v^*-v-`_{z_Ca3W<+Qowmi4>kH^k)^beZbHgU~t zop>pP?VHp32luN+>+-7lRI!wwjNk2g9YbZSW22$uK}7WZn8ODdJq_VxewTwf6ZzdA zurP(1DEn2~9u2?0A~*fp`sGU4N5tP(pK}|7g3kD*Q(#iP{Ub6(PdVte*ASN!8}LJ- zw@F;J1v5BizW0)YO7L4A8Un*jnBO+P4WMd^eu&StE_~_(EX1dM*Tnw#{+}+7{Xbn^ zRi6%n8I05?kspsNb>Z__x@KVi??VfpZy`*4iuk~NY1sZ-mjiVE(b5a7#llCpZUkbD z$0o5~!dFSwCicgsj|voauNNLeK|v@Cw&s$5S_mD5T+u=v>$mAE2*iW^Rh&T*Rwj&`@ez7T*Z0aty&OX*WG-J+!N=X}6k z6l^a0({VKiT1K_JZ=MzuxqO>C>tA{SP1ISR=7)WK>&K`b1S;kOxYytW_#svEckmVK zVBR-4mqHT?#1^=HYfq<>F8(X_liN^Hv31xT*QW6Nw&h?`o5o=R1U?&rv+?0bvA-d? zofO+El2i8L#k(d)6!IU`pD#u|{_vgJfU}?H`z;5XvD8NBVDs!b7*D#l{2m`8!^PTw zQY`ATHlV<_sct0Cq^*+nC-W%Xs*%Pw6sWMJO!JlTa{ekJ*wufR{iNKopKNFQwttPb zp8$aKZ2-;^0K~th;@)`Ydtk{x-hh#{5^o_URnvv-eyhW3oRwk)qnSXL<;J(`J=T{^e--tw1bYd z|Jmbv_CI?FN~Awj2+1$3`HcNfNDOU1nT>2o_7jZ0*iS$JRJJE3GD)b`e|>@YC0ChP^>msb=;VqfCddC$FvU-OzCOEG-s>UJb z1Ln1;rZ{q^Cpru}LpFcq3uKsF;<^F_bT9cA_o#uqxa{J=SM#*z9odER9Ct$v@HO&0 zht}U7JIjHe@`~?i+w%V)mR6i(aryscTwdAqJzAGn)hlEnrhS?c$79#4uJPD|g*4^= zW@|in#8%7yxIa@4>a^)wkH?S5KArIxLPfvbcW)`z;J0iEO2Pfk5kyl*!94*VE%#Su&_?(8Y#%KJ!!M^OgK!qnlqW`MZVCQOFg&4_2!9eAoUpWB$S7+P@}h z?OJkwKNHjR>&F~PjjKMFEEc@mHU$G0mZ32V#HySB79|c%1@iFM<&Flx@+klme1z#R_ zgvHd1xVKW`q}35jCd-l(*@qg zUyS23&js((f_VqttYuA-Pt_L2;f>#yaDcr@gm)H%uiTeljh`rnYp58~?HsozS~?te z7v}@t(IOj8f$Q79$KiTJaHa9c{Xo|^XZ5z>>W-={JbGl$kmEeAJzRSr#G*TZ0*9{P z|BwZ=G=5>@DaX8@5xt2=mp?7&;WoxkMnE~H5GHmSveZ-{v>oBsn2uiJhhw=rTgA}o3v$8b;61z)j-Pu1}KHjKa~3yzux zL=Hr6g<;wrKhEbYJAVUc0O9BC{QrwE_{gW9S^4>%hKWOc(VO8H0C>PUz2+81WFdm< zWjqJi#BjgQ85V=Nm`iI=ldRgso>7A=Fp6k<1{hvV73fZ09sD&5&k!n%)BUQI79Rfs z!3|+faRQ(0Gyg(oaobaRQ&qhUi!&?%V!}d}N?I1nJRFbZp z?oMU;gY=~mJRv>BJa8I7yBG;>dK7n$-Zp%Dy$*aHtkgAp)|iEN_pselKW)q;kkb$ zmaou{6Mm@mi?wSxF0e0rY3UcP^>96^bo4!IJ-ilh{YUHJ$tdhz57(fevmSo_SxX*X zhFnntwBpD^+s-`@`Y6p~l)QKk6uUM;gtQt7{iRC%ar&!0jFp?!0PNprKvp&%c?kyW z-!BPy{ulP|r>Ug>fc;x4cGGy60WvwGnd<@~-E* z950yjK1W#VFE0Bx>a_Jii_d-g9P?|v;*kdZO}!#3Nw4T#&ouZIS7M!E&Ci37T^9Yb zWFnv2^C!^$`)<7g{9j=-kI2l|e3$RnL|^3ay7@okKjV9%u)~kXxZsQmELu+W1T(Pt z9OQl0Y;L@eANP#Ic^rMwaK6lviEs`joOGMAO$gBYF!wn*TA}4~57N z>Ho;^9O2i(N1kW+9P$ySd(A}*Zz8X;c9PtE>20e&OJFau@IKy= zyF1w1#QseCAN1!ExBL@%mgQ>iuNp^Mo_(5#zhQQJW%2e5qn@yfOm5AKb?1AirjYjN@~igOG& zpm)Gr%ZZ8ujC3S}pIE)D_Gn(j`M9f$)YZ0XplTXnA>_?r@QrDK=Td@E(Y5{$+3!;| zVTQP(0IsKh2Doe(U764IQ@-d#8gCB z@^=Ko?|m%v^fqPy|EUo1-K-Bo!WMFTqQO-8ZpA%|UfVebCb!X9yBEycwsK*J5DkAz}b_@C0m+f*+W>z)CpRIn4|AshR*N zrG%3ihiaQk@=Q!q^3Tik`P)WVk#U1w({S1R3>DT@?irc)8K~NZ+(lHb&l0E#@zc=L z99)rQM%Vx8f8D8hl?b#6zj_z$zR@(0(eI(E#yf>rQ2dcjYWfhZe!Rau(nN zd!gEe<6$OS22(t(hBLQt;n)H-M7t556Bl|e_$1RMDCrN+hWQ!y9j!)aEc z`MEb5!bhpu10T3u1TF5Vm~)c5arUA;w><)PR8$NJ->vV)Ia1Na^|x~|YPQ+)7y4q< zY*CfWbAE5>N&o6hJ?X>BRaO&jCpz9J@zrmTQTwEyqYtwAaFC7qy>))A0u_V`Ke5lR zbr(aFKJRxf@h!(+d^o?h2j^ZsjN8X-d*wh~UR58aVtSJIZz7rXf8bQPLhG*^S!pCQ zbA`~Ns+j@ICD|)IsM4jsivQefj@hJ9vY%5DJ_jZ{c)Ggn=XQUd?PT=_24&iF2BM&) zULG~~J_&48r;=BK>lcDMsoE7#A7~DP?UED)CW=Q(u-6Z-$1`x%Gxx2?j`1ksUs+nX z+1=o3&-$t`S!{oSpmA!jV+gaxxEjaE;cn0aY%RKSH<QfQJJOBTi|<>azo{4BNJ$$%Z#O7&G1FjQ>IC|-ghV0o zXnpB&mQ2*o-dzOdeWuh>g)U>fE;H{X7;oG9CNBNBjS-cWzBwny9LMmTqHkJqrC7s< zEj`o$F|kSDXi+tF2vdKT+A#mX&o6=;I2k`5i3L3PKiWIm5wlxvxxvC=69}pve^5l$ z&1ip%r0dJ8e#7)1xzaB)mm)d(HloPTv-O#Y?C9pWDBb&-U{KXg#4uP`x*KTMSn5vL zHI`Iu5m2L7&wu(YFf~$gX|*Z%2GaOXmE=JKI0k2Et?i)OhsU7~XqRtk?UD+jD&EN% zRpMFc)^S!syW9yPhIYBvyz6&*rctGVPhAsr9H=#y*g8#+_XDg#mDfZNX{@1&6}~in z|HHkw|Dg{0Ut~J=M^{&zs+AMdd>lH7bvR?B2e;tb$LZhFs>re}>^kfX_jdr|ZpBa` za9*_`7qzrtz?SKZ9}M6zABJ}G%6laEC2 zfa#pY93s?r+cZaa!B&IOi(ZRKWS_@KK6qiKz@8Kg-#;MwJgxhx_{Lo&Y^1|`wmqMML0{8*FzPhL99Yz>qQQMzN=SeN7uaQ zKGTES#-mFSV{1*4|5`1$kekU*vVfBwzLxt8S+8ZkaPXNWwFx*(*h^Onh{}&*bFw04-cp_N+^}$G5%V|W&*XTVI z$IdoV60bDwMy*;a0~Hqm;AekJfSW6O#Q++7f>&bSL!Uj`v3xLi=7i{lXmiTKSWD|p zJr1Ir_kD%MS}JpOKUZmvbsKxHIab9vDDjUth@?LI{9o&uDGPOfHb1f`);eG6jiiA_ zQTpvFv?{mHT{i%(d#d&s3Ac+jP8MB>hiZ~?R!(XkRoXskSoR?{_g%5LYaPuR~lz<^4Jw&l7H+XF_70 z$~%(k7?PBJbyE7-5{6>qfKqvZc_n~u?L>WtLVa%e0^4$`{s%EMTNSySvUSiXi zT{d_Ucp2x0SHdoMCG3J%!Y+6v?1ERqE_fyEf|ud{5Z*_diP`vku(}bC*7G4Ln)4w! z3iBa33iBa33iBa33iBa33Im@MWzPr9gIw_2$G^)5ODczLCH%)K_CTM~`j$+ao>TjT zUho2I)&$%r@(* z(u0NTRP9P+2!@yHN<>H$XnIBR8r-kKWSjMxa=sOecR4L2W?_WPR@ibAxwo19ZX+V> zCF!wsNh0Aa zM@2jbe{gZbR}U>-LMP$4n9BvdVZ3Sp_>&!xoN5B5`$7zg(1ecyAvw+CWb4TVmsXet%z&e#QJi-uRbQY z>ywP_>Wh!pV!|^Sd@h-Uwj-;yPW>u)3NnXzk@!T8P{h8%>b;2MHA&@YnDozOFmNAT+x#Tjs*R&*kKmXAMK&~ z5&8`htgpy~JbTY+-$^GOAicTr74u$>*x${$Fb$!60>0-9uZ*N&*{xB&%#CtGQaKVL z-(5w4rFdeZ2(ikzMTi~c5+Qa}se@I!zDkz}v2(dZh#mFgb_G=pb#Qw`EPjwY9?AW$ zVt>E4|C0KB{dW=*`)@_N`)^0N`fo?M`fo?M`fo?M`fo?M`fo-3XZ^SMT_m%CTU0{g zV53#(utJgZDU!^21$EAS7)d#rD?VYiM(|P5xBe@B=S5Lfo5=4%SVZ$4fZBHa4)?zx zI+5R5xhoU-oz9ua@9dn3{Ej)@{LapGGJYp{Eq>QEk>B~-&C%}hIcn*l)C-`BZZW$& z=Hhq$F}&gAn=#izu@8b1 z(qOnFt_#IJVp?x*{BTtil4zaRxJWKNmDhE`W00Fx7vvd?JfZMQQlC)?z5l3O4*E7o z2v;D)^W`94N%(Q*D`7rfzF12-3!kFb6<{nG(%!FiT^GX2iCZEh3zipn5gGe^wR}G| z6rQWI6v{;s-?Bc@z+M$<`I}^k*YYW{lo*92;n$gqR<3JNF{@}(m(2rFHR8Mmz?U&fuOxG)#+p0JSOvOmx6e~(_D;xWGvUBVz&MMQ* zpS;Zlk5fGNB*kGobJ~>MXY6Q9=XGuD)k3^gB=rxs{M#atzH>~e}jH&e1+x@oCNDz z*Tv>5nW)(d3ph|lo*$mgx_E;&amTSDd3e%*}Qr1KSWuvq%vq>|02Y zQxTSVWU$O{&dlhm$hT0>$4$_SKH-)+*Ai>~VV+_fnFN|}vRXXVmH!&aKbrHEiS0@-1ymxe z*i~#Zw>VwuIQARI;CeB+T8w&)@eZakeA$38>OgfQTWH`zphK1zcvO8u(Ab7`#)J@` z%>Cd-=sXLlG07d`b`E#R%J(H5wS~e9Sz8G=p4YPg$58PR<`R+JccK&#>p%iuvwi@HiL3 zisU}FjruaS@I0OEYmyeWB+b%~G&KgdFT&H%({8*X;q60{xbj-+)xdHxG^e)B41M+?gd%Y^8x zd)*kBvXFY4H~ioW1T?&udD<=Kj1GA3A>Diwm$@V@mxVV}7zj5Fa!?Gq--o z&%I^}Ulql~c5QWZVh<;*Ften4q|fkh?~t+R+P1;y+IlsA9exdN7`D*HoYq!dL}KWy z37YF=4PTFh6|y;~vRzXyWIjLN+0XQkllMV3`^O4NRDYf`Ib=OgM=z^vzwsV*>vZ$* zTc{Cl)1{|WVE>0`!15c{>EV_6gH)u`F|?3Z-_fe=HG5;rof@2%Vhu~{&M~OX)aVkz z5K)dwRCx|i0Znl01piI`n?dU}tPt}Rnl`SyUvD0o$ML#e-t(yb95m1&fs%rp5lxVp zCS zE=AN#L52gj3K{nho&|TPy=FZrz}V|In#_xL;o>ELQCt(NSXL4q>n+@>7UW(0MC__? z>Ul0Y#p(%qA)vsKbtqMA9Q zZ>*dhG*{MYeEG-vA;P|rMdaJr=oxtPCOv7~bdDFX-!t3pVFxijE8K@zN#`7{8NViF zzylE;Vx8Nnf1cv0xC+_;$sgXc^cd^mGyBR$`45e0E@!->_4{vf^!@|p0Bc3j3^-b! zH9hD8_-7<*DZEZF&2wOTPat{dVz7l3O%*G_Z_u{{KFewAC1(Y3XP5(V$qlEkH>INd z?K0#wJFvIljozjr_?DAsya;6kn~J;)8kn$6MZ_59V9@~iHK3p;%-IX=Iooc&Zno{q z0tF^y2E3qtMLE-_#yw{oez*T3&F?xH za~pZ7WI+CGKCRaI1ELN*BcK+qU{a253f;ua-0QGI@|7HObq~(-a%8IAUU4~m@dgAV zR}KyqHdUmVnNT1Q0~ZcFA0#nfbHas(xR}Cn4i|yS`2_(14CZ2F3K_RrJ$ONil#{u( zYv4smb2sq2?{DDk>AGLJab`z5%>Yry1Q7pHNp`E9VeDJN)**lE_W zto7)?TxqEsqef3v*|J6UT=1_Ic%$MkPr!SUPQtkR>(YuRTs+!BE&WH}v2(8M$@1o8 zv*PFUI4*)aO2SbEKK4LA*(Q!4R#lU!IkO=;jM53RvZuYPIvA4xzJ7Lz$6Mc}z6DP* zCqwic^uX$;b~e8;qWxJ0Yk!tUs8~m`7A=VTv*bH9ss}E|{E6O;KXI8O_7+;#K<}+@ zXz!L|cfwPTwq3Tb@ws-#N$@!xdgybm3$GPOOEmMW$;tH^~R%kP{gg#))u(!@Sj7rrdYK#mbd8 znNQxqEMPsHGABX>#Yo0 zb=vP`!=J@fC!9K?yqKT!1X_{p2PZ5<5AE99LE6p8;!bb5S_K0i(acerSvBWZw)NzZ$XJN=S6O+bY^slchCO80#tc*}(vM(cHg`8VZXPZrE_spZJ z1-Fq%Cf~;dy+ikbN5yGatC45o-~%c!590z$GES&c&~U)A&ZASbc$<)QLVr`W@1rL3 zhAEnT3Wq5Y4pUjE+2_j(oncZnf0Ft$hfI^9QnkBL7{f*8=sMpc3N4iatO~WV3ndq< zt3+3fjYJuLcg3sOpGfBJJFJR-rYj~(&vtXYgCsBP7-89-$7bSM6>iz%{*h=_VBOHH zT=Y{33}p4jl{kW&Bn)H{17)`o15hn3xO31DCb+=;+XT4(@UROZT{S}b*l_PcDIkP! z6PK!H9LPe7V_OTKy6Y3%RV>h5-+Q~&^?&FpqCFit)rEfSF2r|Ufv^A7g(?S0n;oNj z$XMXt8|}{zd%Z8jAS8gxHIZ13L@m#vuaN!`^&5A7gn6HjQy$^Gr104qI4vKLKHZ&e z&8JP(>=8Cw`RoF4z#~K#AfM*book84B5beWXaiRcs72rOf&mu!`nX*_iq2Z)Q=IZm zHLmgCzO%dhBf9)5rW(#+#B>r&Jjho{T){p_)eNV6GI+{5oI=pS zkq8nMTb!67%rFH(S8=Llu3!(RwjVL`GfvsqBm}X@imeHKPHxQmKi)m-!vpk@_K z)iiAKpLsscB%oBrXB3Rd>tvewawe=W`vI)DFeP34$N7!-{bNfESZ5mjV@4Wl!C`5k z5G^x1VRf4x!1AM%rkFDTK#^Ju%gzx(Jnw`+Jatdsl)(HqX-yV0h6C?joEQige7`nb%Q`-Nj`iY*Hhu?<5yzr80}glhp+DJ@Bs`)AMk&J@CF~6cjf3HPvibJy9Qc=y zfRa@hoU}RE#7a@y&=x#?YupXfQ6ghCnF_`V-*Fj#``KLTUwk&VqQZJMm-;vD#29&R zItx(%fUxd2e|9rzl83D8dE6DRSOvo#t6^M!gTuDFJ67Jt3%n}*c-ZC*77F3~Ul`ET zn;og=s}T*6K#Iq>vPYDXUi2?)XkA{n2yalLx(r|RE-N1AJ-I)Fy&+`y4)$km{otHo zhOhNcGQV+A8MoeGfqLd9rt($X`si#FH+Rf92|i(b2Jx7aR-+d*Qo0dNdc%k<0cn>Q zpn>~yX&);t*bk!POu-JdYo=ff4rAQ5x<=C&(bhC#r!}y|H3#?@f6WffL|aF^cbtn$ zFoE11u~M%;ELTh~IG^$^lD1%7eoDditHSwa>uGv?umyW zvTm5zs4kd=FCf4#K6wA)yR<}(gC+7v#XngAEBo`gv_$rx!3Eo{fVQprN?6S!neUlk zBy{3{8zgO{81rs2?WvGNk&&k3ZhT=zS~_qeyJU+;%6arGCl~>xaC^Gu9=mGZLV?$W zMI{*~BDC^ik%WVKh&sj<9WDXcD-w9n3zNufaY*rEgdq*x=YgH(YR{6&?@0GlTu@Sd ze@;pT#wL;0>$DOvI6g;LKtDVkjx2wndMN8iv^r7xHRwXNN|!k_OqUTfEcI5t;BKF| zBpRW(Ehx`nEh$uBYGmI*cXNc+7VZQEN>^3wBz$VYzxEcp;bv9yducecyXdM2bK9I2 zM=C7Sc2>QORB%^q-tLUUymMwT#+i zs-$Ub$;%@e8pte1nu1$htd_z3eW( zo@3M^Z_w##-ilXqv0cqu@oK)Hjv(f;sjg~je}9smEkY?0ndlsGN{hZfVUgBD(4g6X zK=e^jJX}lVe-H>6rtjp-mDCr*rnQ)PELv)-A*`&DF+~7HXPCm^xyf~3gbK{FVO)x{ z=!Mm>9%|mFJ%CrxOaGoJ;L?*)-@q;NoEEeVJ~q$?@=g43Cb7$1@y2xS+0Jb(9CnUGyFq4*UM+*t|SeeXRREg}}m{eend` zq|^t5=BZ!)2>8a1Hy(d^A5*ZzD1xq3S7MZUF{RUOJRr3m^Q)w(h{_za8z`@J2zeQj zjGFHsR&&ydR>K$`NxP2?HI49sZ>3BLsyj`Tn4+ewQe8V+HDkUpf4a_pt(6}VOY-m3 z`B%2fzqMKFFG$J{8wTrdXqW#5o&R{ghR3ddtIofoUH>Rq&)bC6U=CuVq zO&F6*;>@!poVwKB7oEhV%3@S4aSQ#U{l=HJ5uT@A<3{-0g8k-N+R>aRT$@ihs4QsCx#^Y4kEdbuSy7bdLO{ZQ~XnXh7h zRx%r_%v;A{K~}TBVtz1uWx78y%@=D-iB*5=Q44a=0DTq?EAOBK6T7Dz_NzWC^}Ps( z)lF@ORaY!O;}b%%GRt9Ami7+wtMOQy;&0k7Zege_t;)Zv z6V`7kGGV=wx$-vo?foKt533vM4k7Og_@1IhH&0RhcFi1eD5&y5mj_lO`=A?{J*fI1 zEqC1^)zH!j88;tNSW}YQbc!!-P zzYWbEHM(And0&lfKCJTBT`|8~4(^lk@V%>AI>50k@Z6Z1n_~XH9HR0vOmsb8uV_ro zsbXfiwfkelx2`ky!T@IRBbAFP%bQid)xWGz{nIwx+CAl-I{-q~MZ?%(Z_j&f?w*27 zYV;b_Z`;g#v@e}ixm%Ii`$ndYX*rA@A65<9I;qhg0-Nukf6~4Dx;Jt_A6U!9)Uvur z(6f}}vSBAwyifyJ58liSoaPH?%ph`kIcc?%-Xw^;pg*S?qqy8`; z>_Z1X zM+Y~lu^Uuw12PPngbe;=b+Opxs(;(e-UOtaWpXzle+ve#L5&9g=4`QgmN|RLs`l|T^Z^qSTc}ot=B{M# zR~VZ)k&0w8a$z==drQ-~t$T0sZ5`$Zw0<(TS;XZT=4h#2G{II=6qH#C`?E7oTg)!l zrs=W}Gnc^<3T2#Q{BW~`(wze(_uYr@a$Ku-kYQaBH6LR)mTP`$^buNZrr12T1<#t5(Z9ufj1y8t1Qw7FyJpS)G+BaC` zZgQ{RWK_|3Hg4TaMJ|kSS8P|~3tmt7p6u&}zvZMYl+G|iP(RUvM0gQ_Z)WkUuEW0x z6&^-VN|$lApjOb%#>(I0@Ad*tqxB1s)0>KhZd!rJ7M5eEYqyTLl_ix|Ee)vr5FA?PD+bpoR{dILUVvHOFr^q=IH1O? zLDoKXewAAX0&l>CSc!;oiSVnj^{lApC{z?s{kN(IdGD&~j}||{2h%byLz+J_J622% z5l{_v9={r0SFFa=2h`X)U?9H^uS`T7dHp zg^}v}$PGeA!@lKjvFfub5GevjJ#eJph#J@XlEISN^Jb)yiMjSegc_9vyB@6dBaP!2 zoJK&q3ec9{o%eKC{p;`P<~JG+j{uQ8_6-^w-vv3#FkWRVN~-Hqt4&YkCh(|U zz~#<+&Sw5IiX)-46qd+%m<2Lwqy)&u!&1S*Rh8gCW$RV{4Kq6mH@bN?YNp-^<)V*cj<)H{EX>C9^I~P{jsA6}tlda+Y@W9ocV=nM0jQ zz8-|SM9vK>+z#zO)lR#*ewLLP+EwRKqFq(u>;$-&OQ1{w8-S6MtQq+I`q7I z?R5cVNLjJ*jp$|dpZB7xu-~xlOzfk6wG>WEGi`r{Rf`3^nez3;{P@N!q4wt5-^UT{nZHX;Z2R0jozNU z&`wEYObpyKl=nrjBm8w+Pq)WuAEw1VRsD3v6ERfjP5rIP-B(?YN^b%iDr=Tz5C?wL zP!BP0f`O^As}8H1Q8l@3Sz3tDV458(nm_amf8o3L|BXjWvJ2J&ko{LhLV2;)%wTmC zdK@0y9;DkT%V3=BILt9eyPN^EL-i+#X)d$Dus@sa@7x)V|-oI38rVbeJV4nQ; zI{LRAHAme-i#JA)K35azb2T-33`84Os^AU^qdUa!zfOhCH!@V@t9b-F*Cp6b;Xpoo z2??BlmrTO(3#)~JXrc8fTy5!&?8Ro2nlsRx5Rp(0ouH*FQ}l{Ky@<#DB_d^DUSmrp;ncP2GqP45Z`+J+cb8(i7HY|pWRr2W-3;5-~P*Lj*U!a4|3y` zch)`YU2(mjB{Qc$(xEYNInrDLUPOq;@Log)>Oe=yu~2~9 zYi2L3ApPMnss1oddx9}eG{3z;bG?b?B+w#R9={}z>3m-xTby>!~(cx z4?0AlQPYa%a07okDgfbwbTWeV(P6m%19z5EpRGL$2;)SlJ|0sKEy9iNMssn&>f(Y} z!Tx%)m!}zNW$TWi-~gjpA|#MuY-M2Ux?@MTA}xn!j*0+4?~LoZgPrcdqnQW|I&>{Z z0Vo>m)*pgERUL2<1aU0IZ?Ulx7e<$;msjFBxz2FbEdwaLEs}FEI{*lB3XWjNs1~y- z<0$rc7K{aw14eVf`r^n>J$T_(%}+&4(7?q!ParcEL*E4O+C8a?eo!GaI-iY2#>b*O zmKWzI$i1389(=vL-VT84mVh%5x-hI>q4lBiw9l^jj_*rPTi`{`-muSLA}k;NbAuuHTE({3aP1%<`U7pkWfc* zBwMA9RJcJc7=W4KFKn9A3S0zgsppZ)Q)|5#Qx$;JwL(;Rdp=YOHn0?2kpFtMU)f<{ z7b)-S2~GMM*Jp!=E<;yf8N-?o^IlzXEZPbB4j{rSVnpQuj;0TFsxdnN8-SN}XN-9h7%BPu6fF9Km?b6}c8T{YYrTlgUyG53 zEglQjLLSSNn=sb7E6Ii7x6dY;=W-HRbL?x(sMZCzi*O7&f&J?6Kp!%J#g;*h%wO-H zKYCCKws)aL78|?rjs>4UOj@k40<$ObNAiBi1MJvp>a?lVf3zjg(GRC`c>QCecv2lL z6tE99z=~xaFT!qnA@nWo^8#1BQ?C*JGpKD8P!c&sD#aABL6n`}XRjs(C>|pEWm@x! z2x6d>)NCaw18n-O;X2y0u4GP&saq^HnhE^M{s7ubOGkUrHE0I<_7#zCrxw(K5nY2N z`5L3eum0E&$ZN*8UTh&XaDo!TIu=^hU~v!*pbr_)p-PNZ&=RTCbj7j3t0MV1QO-DoLn7aL9vDfal&!)4 zTUGye)Pq-H05LJBP(iTaEAw4sQMpt{FagKoSIbh}l^(s|EmnrZaSpVu${T$}PqjLswa&VeAf<*5*MfHd6>cNSmQI>cDC76@G zI8|@69Ln7PE;m zS4C2v10Z0tP^$v4$Gj3CIiL(0m;5j&l*96Ylh`Pm>Q%Mp0kb8MK(|z=+Z7;ay#ENr z0ePXmO7%f=2xbq}d^CsRL8|seBaKf(o=?Rp_(Qzh)sbx`$oMR%FxP3HN-td$l(LRMr#M^2ND^h@jr4{ZYlKvt3Y z^UJN?ge<%u^6E(bc_WQY@}fn%i5vj8)GbO4rRLv9LUh#fnb+LbHF*+*WhSGuJ1^yhSoU!SSe^c1A zpr_pDC0hmf0}N=D)n9j%HGmqm0!YokLU`RVtn51ad4USdbk`iK#;AFK>s%P#YH#2K z!4TQDU2A}$DNq2}HePK4w#?7sXQfA?+`KeIXE`XIA)LQBy(ctS^l*h*{2>l|wNS>D z`s-V9>UE3X_^4Pd-d?{qEnsX7OVWXKGp$)h<5W~ndtHjC}H>MkshlgHP(T=rpvcRQ~l0U zkrDU_Elq(e@A7p4q(A_48}8y?jzNZEeIPPAGbK=X$gi&1?9bcck95l@Hoo&8{kT{K zkNV$cra<8dq;4rTb|6E*IC1m?zY1>gY(wFI=a8-_PLyx)=I^wY@qg7CQ2N77LC2A%1c^i`6n~ggz5eQB>8kcz5IW{bD3bawLR196)>1fK&D-`A~j$B2D@zS(pKHvq3B2x9C$bn3XaI!uio21H5+v*uo+&BnCdN9 zJ1wY$AmB{DR?qahka6hbGySxZ$XIKppQy+ZdQ)9-n!f?_`wGnO6MBBDn)6Ykp5vXO zXW~1)-U6ayF@S^Q;jPNdR^icy@GGl|0L?S{BIjau9m<7j@$mfcsNDG@@{Mb9Yw9Y-1&u?x&F=_YWv|BJIVsi0J5*jS{)3TU z0@6l6T7=(~*|D9$@F;X-G!NI_kB@=ASXWt_KsQN8y{)kESE1#U6|Y}F03ulz4L&;s z2823z)s^DY95Mu6#KW<+vFw!Lv~3@>gP%|X_~=bFi5)IN?6F|s(F)vRYvbuslt{ez+7q@FtQ2 z;cGJdxb61=o`awh_nPagp<^uI!Xa{1%&*1PvenfGdx1-C_ylqSi!4<$59!!Xe*HZB zzL|qR)os1<>ho3v>vwg8Uhg>`jPz&v!^dHqHQ*{+`Ax!bE=J~Y9zgk8dkb8FvP z@bkJCaRu8osI3nyEU3f%3ofL+o{e{67)@Pgh+tEYxx4%cRyus3O%LBY9wTz&gW)tU{^zTo1F>*A!8tkl z;XF6RNcvxqE^g*Ru_M~drO1O>Ec0qYbj?NX5|(QTYJ*o2yo0*2XW_e!ndfuLPrBY0 z3}1~2+5$)6>u}#f#p%JORGx@PF{V923QWgIOm%7;L8vAe@W5bS&LwjN7Y^SMSXnVA zT;PDKHon5d%8+$AbV67HuqzM%7wl$s!akNiJjdsc+~_I%T16J1!IJPO0D|3F7{KNS zAp=1<`UU0=cq=7Y z&52-vY^Ct)*%wIdsAg0ol~v)^JAX$n+#VvN`;NoYjWhCEjN$3Eb#sAWD%}Uxw{_0z#>a%oI2`v^Bd}4P zbQ0XrsyM)0#04Nx89i_q8+7~d$HouFuZ-gs4218O}QI0nE2;hQu3#yUStCl8ns z9_K5jwUv@+jC(PzJ-f ziMwj0P{;5O^P@OC^_wdrsrmlG##vYR!zplXQVYmGLPkTt*lT>zdb;52f?uY>Vgb>c zQ5&0cyT9;|T5tin5k3W;?V);qB*Wt`d}sDH@usfJ2o!Frd`^}svM~Z}I%Z$_44^om z18DccMIGn{_tZ-DxeMYx2wq;jvdr?&D%?6d-ybeZ^&1CJcK}_1S9x6qZ9m2eGy_*? zbfon+Ha=DDeF*!*MX9JNqp&TYMxuxs*%(lvZxd>us?YK#pyot*!x2SH32h-ejcozr zyMVD4bIJTY)Csi&7@p!cZtM_HFMmo>(S1NvF*JUFFO0C*GX>}NrAN{?^hNi?#ZM$- zo2pOioZl~H7?(%)dsdXbp2gvdWIg_AcL+0xvQ-6;YIWwF;9KT>xSGY8Pfqz27r4vk z=<;Li@@sYZek@<;E?=-d`s8d^eF@wW`g{-<$VGNCq+gV!M0S9frA*gvL+mCAFPQG zCo1In3tZC6ugG+dc@et6P~3m0vIjpveh!`*j(MPb8d{wuQ^?@ztXtwIIJI@gN18?YE*r&K9(cS;Dtxk z$fJ=_G2>9}!HV7}EbNzscUy(M#yVpQ3dcHlju*bCM)AZEb#nm8^I|x$Bd2iJUJv63 zxsTpf#JEfhM#^DJ!%~;~Y(cQCY(7{<(|BNhz}J~OGwBdIL&b57rj4yA&LuJJBjz*r zbNln>aK$SJhsB;0_Lh10LaBK-N_{)z-clYiFuU~uk6b<)b&BeR#s^bg70GTDxnIzn zD@J`RtAm9*aP1cImCDGD&*#Xp0PH^Z2f+s*4G+ae^RlT`7`SQTv9XdJ!%QBmmRva% z6FJqV7GHV0AKmCc4Lp$XVr=HH3}Gizl3%^L@??i%TrYa@Z%kXStktLD{m{&N3~ za?KRp+rj}$*7y#r>K3ms;EjT`7%nTZUnIr4&vXVrns`^yj{aI5mi67;}htLTXc# zC)!;4g>j-_b;yYMV;hOnqUcPtLVJdB0|v8(fEWbDx!{s|q2coi;$#{6W6F7gomot{bX% zt0~nd($u_Vp95z`BiQ7;jy+SVKT`pXL01Nu`DBJ}@*2!?-Rg&(oPl*LS+%P`l6UbWJbNi9zGU+~u0`!bjZ zsc9N@HAqlPtXqc(zu3WrN*vc7<@Sus%)oNDR!w6G%eRUwhC3-uGSC=ck#lte5=rx(qIpz@R-N@mR1H372Dtmw9iiHA!c?L5%H^nt$m2UHM z%D=O#PjslbxcWrLid4P{oGAbPojk-11V(2Oo>c_<|8;#lTUm8Eg^GXdNTZP~{RISI z#7Ntv=)D270DS|<%z;C^X1vBVqEGp_e8T;j90M(DWjnMb#Xrc^>ddPvHGrZQwmRqYlG511sImo=csP000tZz2YNAmEVEB{1NyRmcW-q+!W4 zU0N1-uO>8VqWA|`4lkuT*E&+^H6Mb?0zX_Yp^5Sy3X8v>!;^hI@OMxnyfpCJa|XJv za=*qW$P0f%zHTb_b9_KhsL`#e-&blLZ=ps^-#?(t(kghXsQ#bN%%PiR+9E_@OZ^yj zr@w)F(_X(Cb4-o>hTGWiPC~_M^e3v{mulWEs6+MN_Xdm4?1|cjm7}Q2-HVdDQF5ai zvsaDXje;BDiK=ox(Vo_7-Y#H3^^d;p6zqMz6x@h{>rilw8naP*kHDE64(RWweh2Tl z3qJD8of26G2e2vF7#b`e`8C={{vg*5C8WK*1~6}YrcEvo1`y$?Jgc08)-eDudYgl> z=TifBp0qYN&PV)tFs^))4A|b!46NTIHSq|$TGY^TZv?zUiD)PoPA7V*TSoJ2h< zQO|zVL%&^b=9?Mp6vnlW$tqSkRhVk*0hRk{^h0cfoBskUvh_f0;vNcLSc1!JjUGN( zRvPtOgMkNOAGh$ZdT1{I<}!7Kdgw!Zasz8pTabeH@)Y%3@Yh+`CGxAs>H_I?6| z)lHt@q?q~FU%vvfAawOR&kPoBCA8{M^a8LhjDs`-JC6bqpqcwMp-~I?U>soL0@(ZH z(XS1(oQhu?f+x{5Vw>!r!>Q(q*#aE!>4m0237s_9eI&E=-db%)bB;m*a67K4NxT`f=g?GZ0KGlDnux_mV zI+DGVvNLKzojM(&S3OvZ5DJ(32IB8z-%!>6lbIEqhbp&C^1aqx z83>yiWRB*8r9j?eXG0_+5d~~PdEtgTmJsDIn)k(V20;{YlU;+BkV)12i26U&V=Mt_ zJc1w_z~U$b)q};e&5jq-Rs4u7XIRRsYKqYypa6KlnDY@j92|P&Kxaakj5u7N|>%od6{0w^nsGz zjp=zz=RkU=pyi!2;Ay{cCQoO0hxbtZSIodM0r`X%9(QG8z#A*|%dEWprCU6XJUk7hFK1A1(>d%YN$Fw1xyC)h72GiCL8-Zv5arK6x zN;H%lb19C+)NHR9isD(ReJM}iD*>wj3YoK@$*KMje(E=1s~}cqy2_w>n5(Ux=*Uau{j7!I7Mq$IOj^S|`#<&c= zr|ExFKtg|-MxrrGZHsK$Y!V;YlO9~PY25^b` z!wax*4q(dV(vm&@j11Y);h_gE9q5G$PYN_vY zbM#%PI14FSbAl1=TW5ZOMJzSxGtxxd_5PxRtVN#ky(>NQ_RZ@p5f}v>@sMvNK2$Cb z%01?5=J)6?RlhH07C=#jsq(-PD5@(&Q9TWHsWG1bv^FZLjgF$)rpA7$az925y*K-i zr~fDF!A9Z9Y``4DnUbX|yz-sJ9R5WaYG<^bon7ZjfW2Hub)$jqD-k`>Otj2!8 zUZLs1DA98r>cnr~EXlY|mPPyI04g1);qvDlc8)Z=4b8Tw+(W49Al&MYg1K#$r2=)N z-n-9dpLeMTU+*k^?)ecSP{AJUsJu?EqyQ%U@b{srPh~8NP&R9n24T>ntiw9wd(b%p z3)biz^!pU{yanZ&ar6NoYy}ADRk?G>*E{TH0pXZ>@Ei?7)(sj2XgA4AGn|5rg46Z^ z5rdpdA$Bz_1S606c4GLcWxzIpb#aY^&A<26B((y%B7M*~W!2)>d~e~Gp6a#xpu`u| z9KkzZ_yEM%pTJ*eU{lnc@L*HjR^ceGI>S_XNI@K&&!+g*ojA8}%UT36L2tqLw0bd; zuvt#*VD-J;6jjr281*462puGgk-1YrrW8tzoo&1nfqLQ zDb!hVVNK@q-QlPj#swC93OE9qlh+aS7{QnAUeA@0{GqgtCl;ITE_RJBhU>Gi_2w`9 zcvc1esG58L!P1yOvTg?!%E|Zoti>0$lJOS@LrB3`Tw{@>x@}Y48q^sph_*U_KJz8X zm<{%clL%NY^Z@%@CkKOC;E2Pzoi=Ab1n!xS{tqaIfw$2^POTzAWCQ+Q0VF&;0v%jS zhR~#E1vykbDW*zkpw?b_Fb@TAi9W`O)5E+3)~oS1VXL#^+>v+e85}e|D)D@1?N7ng zvU=5Ev*KqMy24Lq8~~N@QXsfBJtt$N<)~vSRkZ^lNdV%#Fl_}pV_jAo6Beo$+oZ90?Ip9TM=_{)6}$ZHY} z|EX>VszF`|!9V0EI02_~4)XQB{hMsk^00rLBkZ<}KJ|O?Nx3o-o1Cenu zdDFYKXZI8_{HXrBrQJcFB1Yt3lEA?+EN{=ry4~I{NG2_8b_=Js$$Z$WC)isG8(8U1 zE^G!>qPR9)^*<=B_Pk3fL>sov&XP3bWm#XKO8gGHP%`ODB#uj~)?rNVpdr#K<;(lu zCtrHUdUQ{Dn?^sZ;iT29sP9`dDv7Qjw2@B>m9%-wy=4@rDX4jPi@ zXm+Lz6Ue+3l!VL!)#)#ats-E&C|U5s4Ibp6JI z>Wrv}oamoH#E!l%x>KoNjs`}*JLa-!jfS;AbA2@Y#i6*rLQS1HX8Uz&e2Us$Uew6Ea#ESE~2jaD- zo-Z*M{|fGn(y{|$sBkAhTxx@e`;@WD=oqv?v|#eAmlXgHjlPluB3A{*zQb|ez8<`t z=Btmv$4f0n?y&F**!jzDuvZBV25TljIB@^A8z79*v(vJh*}~QQ`j<#}!r`mtsj%n} z4{zpl7XtaWgz>jiU4-#=Gq4~dWUS&1LnIU$*NV)Gau?yeFs}9xVu@}c9j=eQ1k%ON zUHCEQ_QHOtf80o;iLQNE-xbT{tnwNfx6zJbt;aPRRjGUVi+bTP^Q>>W1YlW8Sl;DI zR_?fAg;C4d5e&<&dFIx6+yv_kjR4n5LL-w{Gcx2PIk z|vWMD(#@LQ)mWpO-3{RRv8#&+Q=`nvC_r1bB!GAhIbdXKQ-Uw zuPME>wNxEn8j8T08H!+1lXf|+%$d;`6r5@t2C4a#G!3#0m-@m*IdG`!QM-N))GwG1 zsV9tv`4vXSc^#n>$iDso^NAcB34%c{!&i)5Q-Zbla5jv|b-~Dd^2ZV|5HF4V0e1^(o|H8`&TQourK2EU|XaZw~0UA&;O6H~#Uoyc z#OZjkGbd;~=6i-f!45n9I{qDf9r(vHs5|_a=s=5X39N>lq^&ZH0Ivzt?;3GnXLt z^80|I61=`@CD$r;*BiDELF%q+i ziDI}Dml;)5UMYC?^Qk{1*s(RTd=oq5>6S_YPtOW5Mz-E~V{WyFn`(m-=MR*iwaNAuNeaHOi}&-fytQ=UP)$d4Du} z)FlLTZ{t26Us9$x;e{qTyew2_Sp;+!3p5{66Wv1EC z&;f@_ioJ#uNu$R{- z)gO(^zjaV<^o-=|lDAt;PrKv?u>*j){?3w>JXMMh^+K)@m;(bP=bT#8VRdp=esyx3 zLS*^{7TslrQtm@{{KfuT94(oX@9x=&-bD!8R@ABM4h6Ap60vB~OGvncr0YCANRb~# zTPcz=ZXVMxgkTZN#J0$9J%Al*AUsswL)ibYh}XhTrM3V}C$#u%++eG8QWzx)AJqri z=GW7M2tiL>cgYd%nlwace*(tawgj=-vxpDoBnKQ%6s}QC+jjxa9H&9jVvQg$`f`HP zUdiWEFi1o5OF*)lLae^;ViwTQ7I)@o5D%C|d4S18fJSsAgGStdLZb`>jr^i%2>0s^ zMhqSpEZ#PQmNYt)T}6^|KWMo(UrI0=&q0Vq!(VYUMPYvu=YuVGbp{O?nnY1ru08-5 zqp0kAb_xUZ-6AD_^B3AIVuXi?Les7pNH1qqb2vLl;_q9UQlbA))=ld}ZDUAw;5`(~Mph?K6{*=xT3334g9EIe@ydW>QBu9)yeVs-upGl3qMMpnqTqqqUB4F&|1lTgYJoV2M>ga5h+F9Q#6fmK(J^I zHM8lk{m}2do*Q9nT(ipZF6~Xp)z>}=tZeiY6BC`IN;21^2i8&*GUIfCude2P&KNy*bYq2lHViGfAgwo#d8a5sN*s@u%Pakv=4Afg+%O(-k=6utsD3}MU&#vf0ckd(XB zg;{)BM!<3?mVh~kZ1RiGH+!ImtFU1LNXqln-2jx1=QH(dwk$P{H2;Y?cD^OBpDELv z5o6ai;u=W-_=M9F-tuRBdZU?`i*!>Pfzxm;=ylg-WLCwqmzb{%P1j?G z#O)ZnjEK$5jIq9`D@E)5Bb{6YBs&lMr&nsL{+&Y9^}d7OD9YOhmt-&Lh0Dcj!4*Ag z_X7aw8n!pE2J&1sdj<$}4_I9YCUGxy%yQ>i4qEvCR~DcURbZKRIqM zC`^Uh-%`l*HS2j3_K0Yh+xKEzbZpwBnyqT2xs`QmDh0r)$fmdz- zBOG-i1;4g)`7 z#yK3PL+DJ5AGer|EjSgNNnahKB1Ha9I(noj{Hjy>yfffsdBCmrOVhG*xSZh^3~OL^$;&Gjkx1!cm$^XfKE<31FzYWrk%%RUoq?3_+iMzWW1!vbY)L-ydo>ZN(IfG7TnA(Fg%$e`mNZ8n6EX>+5$h7Hs_#mq~F zLH|y+gcD;wE0X_Gw4$^2JZDuO8MF=tc24bO5l2Ih7>lIej&8zh7CAZbFQeJuaN7}d zd{rxEkayaT%p2V&G2o|ea?Vz^|D4Ui$xaoy9M_ZN@uk@BCBup}1tascbQgh~Rh5NH zSr-c8AAf*87B9Jy>-^XZu4bC6c^MdzWYIAbFV8cw&}l%=XCzc<;cJ;jrg|}pnR?AH z`nCDBT%x4{w_$fc8tL^by0kPU$kk{G_CAazb-EoY4PtIi(*U zDwY4R`Gbj0^Ts@9${weA>tB@BuJlFnD?80EPIRX1kb{tN%^Q21DJ|qERxoz+Gn8(3 zCO>a)ctg1NCr(=Q}8;^*F>7=H1WfkWU z;VC=Xc|>4H+zcTVb=DPNvz*Xa-|aXJOAglft7Djm%R;AvCZY?9bu*>^Ki`+_VhU*h zr+jr-0nW6^IJoQXEHQ(4@)IUff2Y&j-s3dy{0nagN2z;_q}k3C!bgI;$prLMW+$lF zq?TUe|0ZY324{-uYBYC~o1DYfk$X?kB}kfqtxj_rzO%`A$l8c`oyaA=zw>Rn_$lj2 zLBE@*MCY0kG|Vs&t zT*G~0LhPi534O1rtiAq2*ziaFH6{X?GGjA#2o)&niX{8B$p+VLMDM_VDLu6rJ&2Y< zegFCr8Wwb1DJ&yag*70sX!mzcT5W>I{!BFi4#=Y7EWh^wi2IXINvh$*Z{s@XPe413 z;Oq3%%AI;YKj=vNTi&x}dzAQU`JgYT(^jMf7-Nh79zBxt(DhEzWP@mCu@%?+I=~ z3wfH2>}zx;Zy>a6E+!^t2Qg(Y?Bt?z19?U3S}D>&*(b1iIdj|jv!j(NsAgSrKBbWG z)gVblH&Mk4t+om(L%;3>+$RV_tlJpQnIZ^Y>r}Oyh(}SkfWH4}&r7OvIc=vi?LBAO zhulai?^Xp)9g_}{y-7Vr?n0%fHTM`S>H$*wd>%d}8uor@Rsu>JITtCUw2>fm=)G^7 zDda7u^vN_CECM$ zTi!8z)SXccD!yW5h?zW;`~Qr4kuUD2#+z8pby~hy(W;Si98a@?C3QVsfI!?(*32+Q z%|X(vXUvNi?U)bLoIX~!VW6sPTE*$D-XO%V`$->?>eG2ajkc0YQC%E2cT=Nw6gNN#Fu@XbW3JxR?s3U0&~5VI{tEAr!M@bak5$aXYcnv*85@r z&Daa}slP@APG?jx#fGMrVNSyZ+>x%*SZbqSS@TTLN1~L-`uo|b$Fuxx}m2EiZzhYP@;V6RI9$a7=gv;YnTKuq3(OXC~ErkpVxnCmpOTA<8| z&}o>-9br-is6a`HqS_d_!y&q9_$+Mg@0incEmNkUy9k@wtQ97%!h1@f{faoe*Vl)SIZwfMr*2u!|tBj#K^59xU>qyd=c!{Ok5RjTQ_D&N zbAZHtdEUBU@Yv8V+2&i5r-{4O^ZM3&*2=mHx{*zFQLVSJ6a0^=~IX9Xoek;YW~_WfRjTqvOv@LQVEf)$tv)$26~M4!~_1WC?XAs8xw;qw3({rLcl z>jgj|ck)UtBIiDA6R>&(4kFUSjBg{Cury({?6n26BgW{|AfS+)ddXfp4lku2g6Yl= zg_qAAhqt}Fh`w#@&C7 zpFXL}5YmF-mTpXnNd#u%U>K9kNAAY#(df#?QD3+NaKQt|8UeACR6tep4_cWJ;}82vw< zZ-#ee=bOO+fE#va=bJ2my(gX3J9`6YwNz%FKoaP1wJf6voLulk#PoEt&++YcJf>>i zl||m#9FU}b5$#cVrpNK$Fi~n&uvH_CkDnlETu_pV^Tv0_WR&vMAXD^yGil&elP8m{ z$jn7njQ_pEdMQc2W}YF-GmytGh1b=LVY_`k+;F-KtEw#XVQTC?<#CyE#{A7eNj#<; zL%(2O&=>OBfPM($Jh#{105p1?>NK^cd+@ZYIuA5p_bcI~uvC${JTaWrqc$4nR~GC_ zxe{%s{r&+km2%%&*i#ct!`bo_#og<_LJpIlhuo&dGphDMhDtrsyVPGysT^QcX7Ub; z55;-G-?QasEuLhAUhVd{clo@v3?KQ`0DKT!dzt;N(a0 z%T+&J_y*6-(DN5*fiQ~^fvPyf=Eyun}I5IQij)T4I6rq)aZf!Oe#?S#lfpZ(EIe2UD2j4>_t%f!FO{$ z_((*&I_HD`xdcdR=N>vtNtXA-LiR)~dA)E6=>foig~S0#gZVY8KyADcjWR0Heb^ z>Y8+P4G*`cAF^0q?=-)_f_0jVCtn@WS;XeTQdYTBwzG9Pl&3@?ZjnbOQ5 zAUaiNXSFlwl`3te`5tYY_d;{NJ||Jov=hGu?7-W7V$a$|Ctr3LuMhc}@!)3sl_rxD zc*Bods^kej&%b02R*N8VKu3$*+~`zul;gLzJ2$UmcX44`>=1LK#|kT!YYlMD!@j_- z-)STM@``D*%eE=^scq7&-%z@qe7fd0vmVS?qJCuT1sq^^Ml^A0!{#N_{*6?N*KH#7*y)#x1Fzmp)&fK)!%-bl7$ep>ZiliAa>uKytF z3+x(o*f!?9_c}Q0BK|PG3iTgy$<(smT>6gej>q}VPtAS&E}rs5BlfPpnagbl+DsAO zM3t3ZD%?5KKE({ku|1pK(-8L((|cJT&P`v{Ci!qHx`h=`nOXJ+;j1z)Rm^t zVgNSBNi>-QU9nej-Xa`9A}Re4(?(&ENB9fyv%16!=`B(BdK(&e*haXH3sa20{ZeOA z>xzk>OF838@k}@*1{Z>EpL=>`7_8?fGw0`>Lt_=sfAKz8CYT=VE9 zJz9|m-zNKR(j!|(W!^+pU^4T~pB*Hj+{B{UByk(7Ey`o<&gRi3UaJ34 z9l?_r!_MYbCvL2M$^H+$2$;fjqiJ^xaf`|%Z|O`Gu`lXDITJzIiq&I2TPu-eigF^0i9@bwP_Q(NqK zKJCXc_zKZop;80CvPYj+7V7PxCSj{-{*TY9`AP#zPe(3NIv>e$K=vwa-y>72If8%$ zCuHNsYruFV`!NpAPe?-+!2snwUfd$$9t~4vGXfI&_T}lbxCp- zKkQdZnmu5NclJg)sNvfb)7jIF5zKtENm+(%kquD(`NuxdDd1v6R{y=g1 z)+0WkWM(vw*Lt{}qHO8&PpS}~4M3rMM+S^y6iffh^NA86$zh%oKi|4E8W;cF6)hbhm|Va570?8L>qzGNqF`f%STWNN8B*I9+$N>BZFsnb0^U<5`i&SS*1boHtNn2c zpvR2)uB-@rr1y=oVb??FzM*u3 zp`<=P8nqzL(>WxC9H0+7l{{)22A#7{XZy8JW`qC#r!d$W^CKt|@ zlV2s&m(`}^ShDy8Nn)l@QZY<=A+D)xu9u`E)@$qnJ#W-=D_Z@#SXn5BNeIz`ArEAv zUPF|p<%8zLkw=I#GjUpZ8mNACNUD<}`d)Gs=wC3@uIA#nU1$=TP7lfS$^mmZs;4Mu0UO$s>_A zz<;veM!J?q;bjVWi6l<)+R7div0RT3sInFWT`FP#UaW#WZK(+D?hD_D&%zhKk8&BD zUBhzE$X_eJkM7ctXp0RE?~%k_HQ~y999jU?=Mj)8ts`dGD0l=f(Q(z zN73Yv^#uIIN;*f_d5t5RNTEGlW3(Enyq-?+kxSTK?O_oe5SSNxA@SYLo#}C7CVcJZ z&534ael^;C&Li}T%V{pNe&YV_YmUg?ukNe2IWjr)C220HmyIqt@TC{=L^e0($y+Z^ zD>{C2(`y8gQsH90?DeViBtx;(@onf;reD%w)`lqPpZN^fPY%3qBB#YvN`iqFBI-D4 zjWozve&W0aM7`aEr76>8j&)X@d87`1yQxv(f4^8)+*bQ_W$iq>#6@ln2(meTi#nOk zCYyPT$=S>ZQE$_l0@`|1e`G&fT2=}ilIhkp60lS$IlY+m%z#qFLn|u4`#zN^#q#9T*U!zAmt-+ur#AA9e<23HedzPI&4xaQo&7KAlglci_rJSG z7Y*fYzH)qc|~KXM*WVo``~$f$2U(~B5HpTaZ$aF?uKY3TWOA@mqm>Kt+qJNEs% zj$XwOKDWrL=75(Cj1iK-=TuL;*x8vH>ffHur`L4T94vjx5ZU?A;ZY58Vvn zyQ{2GMH1H(sbyv*J+I{3F{L&m#oRI(hUSjtc1JYvhhI`mMMD1J0*kEOHC_k97VfHa zll2Dv9of!49 zqm};Jvjn!9wZf9Ox0}w+y*ATn#!`vlFG<5z-ZBTfiEGuvbg!>9y%t_fFSDIC`&l*P zPJd{mI>EGi55H?B@W(&vCqio)7k3C30nIE*`jm)L*urW&KkDrS0maCks;k*eKvPie zoe4kWypy+!EefK^WmW-9A_Oy-;p`z{X42zS4pv5jieap5bQ-~eQYl}3#WiF~2=?VK zpR0m#)6wk6`V!H`LX6FSu->1IX)ry%p5-Q12`z{z|DIyRwvk2|_n65q56!Ms8QA8? zz+^zbq^bfejnf@4v3RMfN!;^Ger6#v^9>%{M4>PLl)&daBL482Vh^v@k5_Mg=m=*g z9%Qme2{+syn7&68WqWd<5HNMUfBTC$^7S8JG2|w0vQ=%aMFVl>0&-&Ge;AFJvIe#kG{VY=3={5I>q zW@JpSdLPN+o3Z`*_1~&`ssF+`|FZsBpIbj$J|s`jy3aILWD*4^Awp~HKzfe6N?cON z(ltw8V9|QA`uEz2-;K)2lr(7fwKssj{Ma{m^FHfm=7mW(euUgV#$#QL*MDWk{{FTBF8(9Ov9XD}bscI_Q>+fk5 z!#pfyQ@o&8q2Sev_LVR030`&Uny;GdtB&B+5r|$o^e!T=pptOYjp982mL^kmn(fkT zmRuN`np(W;0ofxeeiy)N&%8?`<7i&({f&^Z5G*um>h{0=7`1T{*F8WtHC1TB(8>$)JYec!OwW8qyxQVkuYt?)-@pmJG*fLn?zX5?HW9hp#&m+QyVTluInCBlbf|;QxwFIg& z(bETwIfhdL*{sR^J(NH# zW@jEZjrOM4^%_hCWQ1+_l%|w2B?v@Ez4A}LoG`|Q?G&c7EBUEP+$DU=q?6ycWT%jo zX)Mh7=huA?D7BuGIIL!sz5E+Uwed-G)>D%OXV!RaHCVne%^P7?WNydp=zMN@4AgNHSa;wt1P@xnBDnyAsMV+T~of2q4tH#$hd$qAOVL zj=dH2ZtdXO^zdVK)!QZa2L=>Ojyq0GR{e-h++R|tSLM5^lk-S8FjI19cr&NeOLgr$ z%(fb-Usn_n;Ut;Di33oc-VP^DDYVG-9_J|J^2aZFK?8%6j$wYxi3QNOd_89(5AG`O z={&;76~pImaiVS;rxN71h3VHH11_&g_S-^QZ26<^Az-IsOKh`JSX*ANXphNyKlhYE zRv(eV)EqPpYX>lVX%@P0X2UEQGgzB1Bj5&p6VK){YQrSn>pR1u*lhe)M;iVV3Memr zF#LH37ls^6d1>aX!a-{}llUU8#FqN5bLOlS#*}3aqE3ad8LSBEpXb-x`ipJ-rRnLhdJ?Uly84yFTE3#xjiL5Zf zP}tiPZc2s1NUw`FiR4vYD>M&RG&%9(X(C+S#1q4Hr$eW3GR9E&g*dUC6gDpm?&>Tu zeDE@S@PYWCD_rp@rvpoioY4jM&96xoydO>sldO4?g>kszz1Wjs7I%sybn+^miminW zu%0uZQg5RLAxLC3J7A?RWb~Q>tgWUtJaa`=; z)-~&SGeF$@R&l@kQ1+u%!t)rxLnrPV?8Iy7TGVUAwy*-l-;7?jz6ntnZsWePgNqJbbaBD<=XJ5?U=~hm z4{|~r94#ZV$yfK*+1xG~6z*W=jI%5I;2Xy6_L$fU`$O%wqGin{7}jjxH=+v3x%E-? zL66M3LS68Z!emW;D&TG&h~}v)VLi~SS>ZoN^QOhQXa=DHmJyU%@(9Z^#QrNZU$9Of zlD|agoTuOqc+tp9i)JBMB(S3=7t=O9SQ^=T7;zTanMFp9{QSR!|A~L!5B`N>i+_!K z@Gq&6`h;}|_?K}1&+#8w^#2+EuQXcxXEARu4woCGuLK^8bi?s>0?#nJox;;3&>;&M z60nH+zmNZ|5AO&6Lb1ialn(GOt;Ixph1a4tqU){uwk#sh}?>% z+QSjAX-Qn|ZA8+hZZ__PK%Mb6=GL@`SFX1%RcmIBbw*n1{xz{vF!!f5A^*lF()Iw> zvm;rKTsU+H2$+esf^8Zr49h20!i(lfQO8snn59`XE?YxXAZwV}dNa^XTxOSyO>Y!% zZg`>pqxF&Wcua#irmTv--=U#n3>C!K+Mev=Vz%9u~5*sTCy1 zFaZx;v@Vq5ekH{tJV!9n>nJm6G3%<4ZqplmQY)!~qekz{@k8ADEaMD6#4zKBh+U7> zg*E@P+j$!JAWpPCh?#tAvaF@o{W)&+&UM-4O7CXZuX&RcTmwQFlHdM&Z^`j)5|(5uAK>wZ2@ov(Q{u+#LS7i1Z0 z-l1gn{lPJ^{b+a?o|H?fFhBN9>(4#1LsgrAh}xsDD&6_80BDUlJs03YtJFekvAU9p zhcNLMCPpC~z&hOW7VCZS*1~OBSW6A8bhju~V7gnWzUu@s0D`T9u#L_~^|YtM;33)n z-ZE>e@~{h8kWaB7k2S`ugoCf@!X0Xb4dWH>*G9SjK$#M}f)egyLwdBStDxl3BH^0t zJ!(I`O6bPE5Ijs>Y98eEY*x|EEg5@O;tcF5{V#k*Xm~6=Ztl0p`mK7bRuX3tfALt% z_RlY+DpN~x)(Y3Iw(#Rou~7+d=B=@gcwt91lZGbNu3Re)=wGBna7rPbXCtrG+ z+HlL*&^l_IpYb^}z;1X8xfzUL->M4!g;{n*KuwA*p3PmNPt zB=D>TIWK9Vfn( zXgRWZa8u{N74<3XFPqcrQciU5#{NA+CoW5gPJ9QK+yIESJv!?9g|W@4sbfW4>+6b% zNx2kFq&o4<^39m~+&%L_<+wsDQEg#jwDWyTXCeDI1T=- z@jhjjO$A^SJOGN}WneE6k;AqhL0iI6dS& z*7R1W{IQERn-zasli$C5-9?*6-2Jz89ycLUG{lwvpnP4}Yp+UN8m*S?>vfa0V(Nr& zay}Uvu{cx>eyYaX?sat@!FsUTd#hRou$KHP83y(`@pr#~`Zc5N^km7FYE}TsJRX06 zXH^xOV^4)gk;pLC;%W$EbFDP#D9K!kCf^|GpYfek`X|f0ELIbPh1O0-9}Ba8qY!zb z*#e}*jCpn>pP^hgr~S&wz8@Slga-#kl64{fxn~|gcY9PAhz99F@0vz_c+$a-{&A@_fc~L2UgHP9-NCPn5PGhKgFoigzrywlXC}r@k9c>t zQbg)gWmCriW0M0Gk=uCLkB}Kk&AfaNW|r~El9TBUTog&pDd};W-b7<-DQp=#oi7=L zr_Od+?|NfrN)UwnKRzu~YQc!WPtJo~ioyPIjA|XY7Aflr*LQ?!4{?*@i(06i8jzDk zvsPs6Q^hTn(yH}5_Ll2iI@>_f2;|jlgGpYb;GPITMDpM59F&!3`7cYlMGnf8XAomCV39D9Xs2p?zT48k2(*R93j#Jh1qeNWoKPi z@l@^Y?hN9pI~e6;S|$@VEVdHBtFW|gv2w9GFSf}XW@hEkIF!^z4$W3%Nb<);sunp= zgT#s`;zIA9;hi#KYb>pAH)F{jnf@>@G&XDG+`rr0To&TALA(Ir`f-IM05k+kcMN|8 zYz^`J@%>GEzAWvlsL`oA!YI+7O4 z>pr0?3uiX;)Lk41WeH>*WLfD{w<){v=CIe6oYYe_cwOh0)9@I&wK;AJnL?o39_EiU z-C7fcN*ZzuVk(SAwKY0wa$(FkIdayQk;IP?k(Y+bIoRMrMg%ew8*;%`!;0t<%q?Tn z^3w+ViB3X3_MB}-h7J+^tsHgY!-dU#WGO*rPQzDt5y;amlBeR%wND!!ST6=K=afd} z2o$Hh5BdYrCr+;MkkLK0((_Ophgx0eRp~-jaU?Mc6B}C7T=F=WK)@b26*a=>c{_Z& zhfB$u#a`btzD+rUQ^#=`%rj)V0S^l+b7owQ$8_Qwz+NCV_7xXj)J!9BF`3r?OK}l1 z4zzzKF7S_L#l^bXvNX|i=(ivFu`Wk`)PVJWD?cI??>g~fN+xOuwCyE7h7xiAe@uQX z!UXzx^1~ie3nQ*AmJk$w`HTN5nR-^S>?+va7qU-XY-yt#;?8X-v~eMnXAn&noJ40~mA2|8FlN z31%enO#lmV515Tlq(0PrriTO}wc#Rn&j*oYL3=cT@NJB>F*jghAXf8Ke(*zA81?p!RBfA(6!42#y=ubA-tz=*qKi z+@%FPak~T-|B*+?lhk3xdqPbWJ8ChqjKxW%F`Qm*|MpLT)eJeR`S;=w*o}IpDnuYF zQB&tiCpLIqSOhyF@Dy-UY1U7dhHAXg?QU``Z>sZBlMQDwk0!>tW0Rxjqpgsud6{PN z@yQ{_*LZK8k{rDY`IAScX_T$AqAg>^ocM8~B|~Jl*Fl-3+!QH?aLE4zH?Xn>%Xfit z(!yn_ESSYnuk@5;?VF)!ayGs=K8|?*h?j(uXSDH-mCLT5A_@g_M$vP%WS;?mRp*zeb46tf_d_ ziC@c?VdLC=yE?J3pvvpP?OavfW1Y-$B=;|Gxv0lz)@iSDxyDM1*L@V#mv8DEr1@U{ z^MnYqb+g_&5Akc)m0$mHwz&of*2jZfrC$ zbpmy$E^^Z|p?40be+T&30EXg)zo)s18T?4{zTop)A5P@M8FO)OJRcqvDTqCzc{ZB3 zbU}2~eTxCQ_9rm3RH@a!-oyfV>;lYjW*w5sBLfR2m^`FX{aBX<>gY}CcV^=2H9YoG z!Wc!Zhi(HU!d`@V?$vLB;k25u9Bv8Z?H0@q6jtEu&5lnAT?JJv~`;INlHyf795r{NB>TU(Z3NM?$Wl+Ua29#5@%`hg{yaQHK~DzS zp2Vh0_Gv>;gkq5drwR=`Wqqa_u@g)e#8c1wfnJoTE{1LT#H3U=5c?1P4k_n#q;#w{ z4c?4Qim^I6QhktWrLE4QCbUXjGR2FkfI5VhOd@_%R>6Ty9Y1f-w$+Z!8{7wkoO>R5Ll$jpf&$hpd7weaQ zuGa?_={)pw?dSrek;af8O?<1S;Wa0IED*@%JrB#}qJgpmV&{%{7~N1odztp{Wzzc> zrv0D&`d^xkFEy`a5W#|Vg^Ut#zcuX_KAtrl-*P*LY~}F#zq9X?ACo@Hh8&X(c}2#) z-$zsQzq9Y}Yd?MpQh$#9_CUo#$nV80CZ%5#f@Q3YZA)X8 z?TYQlnNF3dQz>Ee_8j}{I+*Lb_IY>`$tIuUKWQl6-5frLgxKrDZ0eiS)+;i3b~q6t z0*H6nAl5+V2NE3~q#jCvQEu(5C3RnxcZs_Cv)y|(7|X(%}-{!#R4jk#vEgr2eQ zx^{`6Vo4hWNC$y)S^I;Hm%E+WE_E^#S^@ouMXk)x|L>~5EmmsntG~0fe-?jL+O~S6 zrTt85=)79?>m0g22Hh{FR{wDPELPtzy9Fn^iLX66L4Phi4YmKe{JMWTyNGWagnr`Luph;@u}*j5 zXHYB?;5K}V)lx?D5YtOr)u?j{V~=6fM6KU}nG6_g@B|DAI9R*b$xc8(al{J`<1TF9 zn#*GU(X|iQ`QGdl6rFP7bF{bDzmqjrmb%bm$=gfmM^)lrNy*u`JFAq@V-D%pybnwu z;GB|qRpn1xl;p(x&C$*h6Y%$0J?*A_F>@miEM_Kx8HK{M<;F!lZ|u(jf@_owZmqj2RT zX02n)m;EZ?n`K`{DV2?4fnm0D_=qI}aeGk(v-uH%jZmzfECl?t8lR{s^r{O?s7V!! zR0Pnl70wKQD{gBO&LEp6rpG2iv{^q%1J-h9zK-T#`G5jk`yQ*-V);gItCXb^fW7CV$s?OOkNKCY-UvRS znu-^lcr`V#N4EqLbXJ38R`GkA-eJYC_oCg#7T={6L-R$u&5D5=CEztXNXwg9AS4zP zV0pVYIUYOYyu!h4=;qcgs`W#s)xDrWH z@p9~$s!>-J#-2+1-e*_>PqQAc;YQ0c9xo^U3i=*iug2eKoKf>2&YK*qOT@uyg7F^e`n)NzH7kbR+ufk-ywx;o^Yo0sZ9K@+QJCR$)5Sz2`M zUtl%E8VIZp4P|6`wnMU}&=?;Fw|0Jc)(W$pYG*vQ%HY^qB_#erl5|F^o9q`M&-SLO zM43X|;_G-^Rq<}@iBV@1${&F*5WXK{(K51`SRruH!2;d;+ic^^e_fEg%;S1Q~>@guS*3rqgd*K4_nR1nHU?o>a3?yA37c8=`^ z{=*O{cN?Y4PX9mV{v@?aY(5&mDKwk9o04WmFvpmr-T;*Wvb~D>>b(3^k^+xHjUd*? ztX8ZE>`%naFkMfxKRU^%e0ORx&vr8EN1n{oKGuR|z-4 zlB$OiMmf-YUUd^1hGPmE$8A-*9>>&Uk`#2vQe=Vv=I7S)=X5=O&y7^F#*{LZ^pG*z z0P~$}B?;4p)_3K(m0X;uWQ{6O|9UW%Y49@k7>yddc7!rkQ!~I^(Bqrajl2xn-~{!! z%Dh%1PtcF73{c-cBL_g%UOu&Y(rC5*Hb@33VAf<#Ij2x$H^al&EOT`zBLo;>SSLn= z3?y*bOIb+nNkcMXj4+xWc9sYf{e7n8b-%!*muY8#zRS_oQhx^{>IkbTVzt$YQq@*0 zVa7~xr52IG*GS2Vkd*+#Y!;}K+*1T0%6&?QLI<--+P|#*GiRafl)~I*Vn?+c9XRbDF{hTe zNe-(78-B`|rQ_yCj!V5LhCOr=q@0)fhnI^^O(=HC;`ZI@nLO1?l^U5Y#dT%QwVQK2 zA?JE>&h_-1>)AQi^Kz~iJ^>1!`u(#ExV zxtL%7q}SJ@WLR`?#LF`(=U@KjdJMpvqlbq&>}_PLMDos(mAoNx?W;sabsmO%PU|EeqV_{T6Y!iAFBn)Pu%l_aIiswf`68M(wl-I1h8<8~$15SfJn$^UNwMbpI-$ z%Yug$u@gUC#7*{hZ_==Dtxa&$v1u-Lea8NnhTdQQ#`+#Od59q2h;t80zfiu*Dbq|G z^w2+1f~mojRIk>xp#@Hwap~mJxX>6b2mKrfDYrGjTV#V z#80As*(%G?*)mmL42s!ftrL736y%aE)<(U-+7!Ryuyhm9E+o)YF{kzjW%}(1e!GHS z5!yfRcMoaW?o^K)XP2O7XJJ!1WAA13 zvGSMyl{$7F1hVSbl_lt7&hm44V01FHP%R8LvoOH-iN9KU*=EOm*6s^>nw>Kg4ORv< z$%z*Z!~*p5yRxooAUQ zjlZ|E1^#GJ!?(+7m94w>i-v!lIGdI+RFEniTF2Sub1L^78#iiB$q=XE65}4owTG&T zN(0X4?HK!LsZ{%0jQEo63G>6Tm>=%bkYa0Z5nalOBDz`lSh7K4vC8Ytacl?jGnnKa zz*%Bu(j`u-U(WL%)t-Nb z62Z143raA_G3A#v(&J#=mS%8QS8tnW$P!<=aQo1@*`MCVqlX@;-Jn{{{^?mmM1!2QAfleHG^ zMnM21EA_iC+&upi&#OFNMegC!UadBTGhjFLg`qN|v0)oPaC&p&Qt{j5Iw5 z$Ek76XV&y0*gOOC4Hg3JR<*$RI|kVCxl)ZW2YkoQ0moV<(K$02CV8LsVVo1M518bS zR0)%;Fk@bsL_%weR153rVt>yH$k_0Li##aS0-q%~-+DdA(oYgA$a*~)Rl{b>p;t!U zI`Mu=-U_$|oTO#vXwsH)lQ)=d_`mLH0je}M1K9%g^^yLmS|fkx&n31$Hi)wSPN{Qg zrhmzxr2mgr1pRq3-}FbEx>B|9b?^9zKjeP>ef#xs>923KUo$Svfn%nE7ql5yO8Rrp zNW29~`cz61HvwPwy?pPnK-))6Raij3V-Y_xx2fTFbZ)pV090w3&Ey}a6(obj`VRlB z1UL_9?H?ErR)|O?th3ja*V>?nwSj)`kvth`)IUa=7L5F)eyj&J+SB>78bzPpKs|w! zTA5iig#RLZ2K{;y{;*Q&v7b`w6_m1m(A>VwfW!onT7Y+l+xO&bHVW`R8RI-qxC%d0?8g^q z;G^Ca+m05ej^*tdrNBxJp`tbS8k(MXVr3wZj!81Ghd#9*f%MCV{{w*p8%hWT1G|Gu zJFq3Ca^=ytXgfz9Np}yhfBpXk*k1!=0rqdDFLuec{!cmBZ>5CAe$)f|mzh##$repl zqD)yqC4(}R)a6zZ%T#iZDtRvp$wBE#zMie5k9n;nSw(IoCuAyF$Gn+(31(XJ8qW}! zubvcOwk-i>x3ERzGot>aHU9@irX6ZI+Q%cXj~QrA!@c4pGZkLEOn3~Y!V@$)ll>pO zN0`U7e4WO1TdJPYYwobU_-eWr2dfwT_t%RBxO@NYg!P~DhaD7|`RYJ{avPwe=81hD z*VT{g0`NWI`awMykwgF60w&Ua@qqrVW`v7$b$H7%L-?nZuuOE&wUF-jlnPs$(6fxJ zHJWo$BkYj+wT2p#=t@2TKR4v$ zICBe+rcf|AYK&fiozz0_re z+xbxHI#+v6^1>4%-Us2c!`?HB^j}*_2Z^M9T*3Z+F_MifPYQ>Mq)oy>+8h-Bl72>}?Po$RQ3Y zOH&ucjdRP+XX*VefKY@j^xWTL9wMaSQo|N8{AaS7-t-5dCIeGqK6n>g%}&EkDz;2= zDAlU1EOfd1b$Yf*ScQU@>}d%0>u56J?lv>IRLOFa_6fKidmYSIST>9)g*BO*7+sQ@ z4jZRK69aa>jRf4xw6T)|cAlvEjA`x#dSu8Nu(WHTomp?8O&v=~NQUunoq<7(sAb>^ z+UvYSVD#$PH53gX?_>aG*#rJNIaTyd7QTP!KTI5#@gHvZmso zpYb0SF$lFCBS@f;WStk0r}j!VfqTPCltwtnxj~UG_&1$g1QT3AV1l#C2Meo=kAn-T zirA(whNLevtjv>P>5GxN@DIFq6A4@=&O}fw*Eu8Qm~uM%89y}^po-_~PEbNnqTM5X zs%IxgqQSCVZaQuiy9$d`1V>=TW$@N%zl7cM*&^j_cH$$cF_MUpd$5}5sQXI_>2P}M zC}|Vj)x^cp#sx83ot83KUH)1pVU|@` ziLwJEQojL%+bhm;9Zx5}C`fSgyOm;~_Ek4AnGs&^8_?@T8tf5ZAaP%#9;q$=V_Hhw z_sh(EC--(i0MP!f-#)+*WcRgYUcdd*O+AYr);)EdjFKHqJgoYoiThN)o4jKf*sH17 z6FZ`F6mr0v0rCz}y2Jb*e06nCO~qdJA0>XiT4ftH$2z3B=K|gF!E54 z_24g1N_}+`31RY_@T3}Vom75%v1y{D&l|Oy3r@3BZEkE@OmNybD z5^08Q5NV>H(=ZgRR8K`l2|AIF6wK!7BPNM&1apL_sDGlt!OY~SK8Ad}O4BWM4{C0j zO)3nVI1TO6c@vgLDh!V}4S(lZs-8cL$F$rm-(_^a7ieN%5o*pO$&9ZA8G{n1p%XkF zEqm3i=)Ck?xBg>t`pdh9jn;(3zUh{|L2#d=U3&+P^%F z#JlV3NWA+Ld1d!SzyB*NF0{Jn|v%U957PpkYM(|(=eyYxRvB`%A$%siU;n9WhIRwJ!-%_ ze$B-Kdl4^LtPB3hoVwIrn(Gxg*OD9hr!p(emA(E`&hJ!u{C_-#E6&>?aWLJ#eS^sHNXcUA)d=2yF1e0*DrF@>Ml8kp%lr>acIUO9 zz?PC#A65_pMBZ3-g{NLYD9&1;Ri^x?5(+tNaf=Zk+QJJ3hY84Zv?O#Zq%3HFQPUSi z>5Jm@MX4_QcW#$tHwqDz?C6G<*580NNAmDr z!i%et?Ry5||5xB%XTYsyjFCtKNCmF}ahqP~D&FWi)z%l|w_mT$eLmdViB$Ca0e2St zv&fHBclt2?j1TsC6Sg{OG=IjAbV8?>Is?`@hjSWHtHz9uzloM~@wckPPp>oG#H3;@ zM7w<1ZXqSB_06>yn6EIQse@%F&=TE)N*_MDg7IweDLP*U zZFcZIlCe+E3XLE`x!6b%ZpC7AuOPaY{i2igj_djj2#=Sio|~G_6YB@Su6zct8M&Yw z661@5?J~Xd(=H78@53}yJvDU%k=0pwwdCzz8mf~UT$8CPBO=E9P6DO=V16!TrTIZjq%Vv&C=A3hLHPJb)eZIT+;RmQ7uXc)?wxEEc z*%`KT8V=W_j;WMcW`T|zSWIc@0&16$CEyf)3gjluezaK)&n+kkDvtfHn5Qy$tyRSe zzVNG`Fr!;LQ!4$^lZ@lHpafs_()$>yC+>ZhGeWOz)6hzFCsu|@n$ zbG@^Qy|G6|y@ey4LzLT^(7a+z$Z2AZ#8SiTd{^lac@IsLq)iT-7&9~T-f@_id&(RA zqc3B29=6Gpdx&=rolZlY+m!#6O|{{3f;9PzzO9nJs}0yvNLVE!hO?0@e=={L^$RM^ zVJb`Cf;|Ivk*O7S5vMFQoH8MoQ$Dnu(&lYRUO|NBr~WIk8+*LxyyrznM993#_76!B z;Q#t?A(J(^d0s`NFcCpU{DEnnvxzfUumhV44&gWI4HjdI?|gQJ?~oJ>1-AJ!;cr51VKBCa>|NXw2rHXo|fRVZ@RLfdHH*^cF};*+pKy z%Os%inxpyMf~BZ4v;qrCC_0MLPW*Qi4JVGraP(FfPx%0LJnoE;eWfZ{CyEwTB}@;B zS2Li%0LLX%Hek4N9YRB-4}pS-KFo1( zIps)K8zT@y$$XJNTF)!y&YyFgQVKW?KU5JxA**rcpR@V^`$0-EJ*}iI(=Vd*=*$*t z-KQBhf4w>LNioN6a_E)6=)M0caaNaG-x)$l8iAFIg=J6e5bHl6{}c(M!uT+JC;lqU z!+|f)6Px3|sOO%vQ1XXJ1Xiq%tpX(mi>N%!CMyK}K!Om|TmNpMfA)np_9%>ffT6-Q z0kom&Fg}k+3a6Hx>(o=vx)Kx#bFu#__cH98r`l^!Q`EKHB4Vy?l zz0+nWP1}dM-ii)A)V+80c3pyfa^;(I6-`ZMhX(1$a->e6_tC@Th`oy8F*wC9G!9sJ z_S3m~hNc2yV~ap)sy0X7JPg_F{`{QS&L31nxo43W)srBq?x%k4vj?L+gA1HSkM z_jF-DP^Eqk&|>%f)hj2^D?bw+g3$S+sfTAjrd~zNH|SuZ9uDpiwQO%vrvWG6E|hIT z`~H*t^Og#V*4TW5&cIXiEs7aWP5*LvzKkSpjs4JiX&$`@G2E9Dm`S49iXObyR+K(1 zF5{5zze`O7b$rLxafRxz=Mh0fg!z(Qp36rJFaY`+>gVTi(7@001}p=1Bxr3x0P)%k z#EWuTJIl7#Ppt(zRdqUA5DMMb)X^1_?@#X5E$KQ&jLOu}75kR0qjffQ+)D}I&>@$( z@TM-~G0%Ut&-2dP(|ml528LTUzSK=z)4^r^Tn(2SH5?cvaoT{+yTjy%K`NetRo93|8w=z#+#``_LKI3BW|R(5_=AzN z{qMinu#nSmtt91{h1H3=0qJxD;rgBe=Q`OX(Vt3lM1|y$H^`j0lhrpS6{a>r4E8yP z@>L6BF_Ne&s!pEXL%Ia-r3k6ZPD>6MWa*O?lk88QvC(8aN|qdCcM>^q?H(af*WgVR zPgXj=X|CuDJGZQ_c)ac)@4c$R=VDEq=vmvhI{rfJ!AQlr+E|!`S(>*IG5i4~N^Kuk z&++lFjj9@qyiiLzL9;L8cy-+&um)c`+!qP0KM`8T&(HXm< zUT5m-fEq>~pk`E&BjP$8f>Gst9BvtBlm|piQTxYX@4NvK@5M;dYi#>s1}E7%yGPz+ z0dh)mKykSKH56<_gIicjJ_pkQqtnv2LD_p$g>LmtzV4JnOi{H?Ydoz;)kfGilivY{ znF*@XiPUdIL6}og=)@o7n=om~kd>)$Vt$|?RA&?fJE?`TlUn&^s~mhSD}SXQ7=~?T zLzWbT_j444^NfB_do1(Wv+4OP#L~@h>Y3MCPJP@!F@FGv?7Ua0hagt9>1tZ+k7G8d z2AdY+shAOTSE7t5#ME!3%G;q$`h zr;a<9rMk{P*w55MSnPv>Azh|!KuTwl2NlKB6=_%p6@8kiXjN`S zLYA%QWGYIjx%5a#5A4)G?JS|;8Z>ZJx`FHXJZKKm)N8 z7XVVgXZ__W$-emw1u5@~-?C5Jd72#!=qqN)p~>a+V&xAgPD~n3#EgvaV$b3gc))Vtqnbt~uPI z_9T-yvGWVTyoM*NqVtlzXq9zecN2Ga@CB|hx6f}h-GxbJ;^%8!)vzn}OpqgyhGnl} zowZ$iZi}^sHk;MZdN+&=@&}NnF?MYE3l-b0+HOEKaE85YO&=W)F54Zh*jD94-!~B_ z7LIJ8)Cll}etlVK>P?UotS5}&(42>KS*icDaG#i}lnYM$XQq#1akBzmZg|f z|2s(X6nJ_zU`Sg?O6caosi_}Kxe@s5b%<29d=FciQJ*uX97tukziUO=kT{ zt~Eybh&nOrd+9u;ztUPHIbyD|oC6CEP-M${u^^9W_xZ8|6qJ~J%SKEa2BRe=EzRuY zF*VJmPNT^zEVezxa4Usw99*H49FzkrsKXS+d5sD-`@o>y9+{S7V7=e?3prd?=9Xdp zEpfB&Wwq)ee+lnL_1O&_0r? zfSMV98rh19`Cruqw5Pn$l0BdGDrPLRi8ReWfwYb-RMl-Uo6Fg0SZx52q`u=y0b=bz zKd{rlNL6BDG}}^P(+WzAje;)hB!9UP-$(6JV^OBYDLFL;*{t7~Mvc4eg5$)`)JWf+ z=bgU-W|KpMQGV+g*0l7{w?PF^HvOKH$de;ZE60<1`46x*#qYEJrJ($B-pi2t&`?|c zdRzW$Dj!k#vwN36clwuY`9Ze)(cDx2JHse{gvyr$(VI?cN1)>o@xZtyZ-UD zKuWTgw{k^^vA>zqRHMm(ubniM&3Nxk#9r*ITGX$ap-bt+a=uoe@eDmra91P(-98Xg4w@c>efuDKz=rd4UBm@NOT%Jvdu)95{O& zk>_`jMZ`4&tPxgqgER$$$CD;AW;TocFUTgxW_U>l@B4K2mpt=YgIiHDF}`254jkBd zAV{hDLaR5vUw!w<&NYA4hf8pa_i)P8ts>cs&F+$q3_dP$XKZo<+)O4npfi7zG7cZ_ zCdWB${aYb*niw1oa%O+nB@nZ*_RDVm`x@YG{VTj`V~yjMb$R0poiYw>-cTrc0VIIX zUoK>TSnqFuLBYW_A*`EN;L{%dUFRActok-M*m)i}c>5myoFHz#fIsLD`^CrZ*r0tH z$c$Hu1@C?Dy{1tkKiD89>I?@cDqaV8Vt})fc6!D??0kHvJV7u z!zlYXQ%HGZ&JF!Eo6B<^VUNWjIjK~$cCxB%Le4A0-}|1oOZj2O$Jx};XTRl<$GL~B z?%O`!Pj+YA)Iq6a!NxBA#M@SwZ%ljt4|DGVA60es`v*uQSkfI8Bvx#r9c@s=V6i0% z?F14s!9imIMX?%Rk>VA!iBhc?OrjZwL2SX=i!D~))>_+IYmsWzBtW=WHR27m0^au+ z6huX|m7MSIS$oe+P~UU@=RN2DIeb23_Fj8kpY^Qgwx0E@PvuYS&gs(ZC3}yrZ++VL z?^~a@;(9fb;jep_mvWff-@Wf6_U^axI0SssZ#Ej<9&g38NUwK4@5Jmb9@L%FJMr_q z%ZIluk2MbNAN^-|i9(HdD;gqWYzrF;ceOTSinX8N_O#_dj;$4jv%MCZU|H{yHhO8N zsHPBN#p#9p{u!@$wc&6znkx@c*1P}fa%^<9%c=3Lob?{u{v7n@)_YukT>GvFvaf5u zBxt`h+djrfx*1PJxD5JL#amWh*B%yBHsr_d)gG(7ggDQ|0I&#ugIDwN@TU2q;8z3| zm)L^K0U`3*wz65VVEb67#bCl$(62ZBPRfe&7E3N+6E3(%xv_wH%2xRkF)D%I_|J4f z0=AV>$#C0)mgvq%{-rt=P>1aXi+h`(Qe{=;TTXMS0qAn6dH;Kk-~8A0jSBl@l{W9_ z*EX^EzpVCFs?8Mu1AhrN(%r_sx8i=GtJEICxFrX8EB^X!_C58``}VTg{{Rg)mb$uL z+x;V2B!v%1HUg$hvBn|xf>MBYMFJ2cJjI_FwzGgBO6<2?k@1mT?|DaV=W!SRU-Rx?&ub_DcY%CIZuQC@^G+)&`j+nTp0P#+`IPp`_IRg_ z|8P9FdJlPm5AS$G)_4c5^U79xWv_Ur9sZKObhYPsXOgzc8}fp8TETkDz1ll))n__t zSWgscXjiNB{0oICdk;YI-@FQ2zM4IKbRh z9qX?JSzXL-Y|-R#5`_>h<#SRh{?hdAVmhPOa$G0We$-!j!OfgBhlUI$mYex?mHJWS zI-*OLV3H`El8UUIQt>92pJ6f}KEIXT~d3Xu=2@_+s_e%U%Uj|TAU+1cK+EL#2&GQuyyd>k`x z2)rss_xdT~BFSNWi|sc1C!MBO(${eG5GQ4#%XAS*=HFh+EV{@z%BGyqSnf4{Y3NUS zCntyRu-+@aS8eL*vHsTIikPiz(`ZmW9+43R-HHvQhQDAJ|C30ix1#^J{>T&vrS{nP zPWmREQ97LdWkdY`GVT{=x^WLk=vQ}X5B7h8^Tg-FU=Wll0|SAq?Qbf|v0GfP*mL(| zr(%X`ko>sC|NG)TfM_^73xuIV1cZ?Q;cX(Igg|)lH+_Jx%I!V;br#3v4HoMf?&s<@|s#)&u#^!I|`oyQ|PyU~+AAS^z zB}Zcb8Dc!!Lga8yowwpA8m6|AN@HsQxSo+7kUPrzwM~nRW&>f2QjHvy)i%#B#y;|N zv7!aFYuT~$kHn>m9Eoa+`wBu1vO#Yh(s5wS=zHG#FPCQ&dd$VCqKV%zWxnwU6!|{# z82($?b@U&w+L-hW=+SG={$twp8r!bP-0QX8R_)N=p#O#oOJHylpxj;u? z%=oUz+rLCGh1iX8@Z`>R!Se=>4m)BV!ZV!%%&A#me$!copewSD%x=sAvzqr^bq<)L z0VcrupTN`YU;$O|4+#7-2d)=uBPbg$v%|slw}N(H0}0|~j)?=;U$Z_zpp5Njevyv;Z@}}w9ET#o^EW5|AA;v0=YJMFPqXbdXHyE``P$^qh38L^ z6f*Dx8M(OpG=z+z+J{4**`|+s8zymg*4UPfjkCoIvhfdOh8_ETO`p3g>>A$Jog^s9 zs=KrCYHzMz z$ivGa8U8Q^W5(Q`d)&=mJ$Gj7xBJBkY!_%lXfIAUwEniBrH%#niv{-Lb+xJvd-2&Y z?M$1hShx8ZE;mobKY$oZ4mMuD92cK6*;Jp>q0_1qG=Th9w$7-m$my#%~BOD-aG}j_S96Cf!t^>H!T6)>^vHRouZwk41&4+AP4X3H4A;=J%kF=C);|>f%h8V zef(#^`{=*@H{soYZT$1$eg0>|`zyFB1&Eu0_wQ>z3*JXRo`rWPs4}&{*f7}E;-S^r zKl>D%H$0XD=TE9aIA{EG1oWR~=z9*lU$*Uza6#w7dzfaTFTC%d;{PRha~?tZ9?M>K zqrrj6XHjH^Qn`}OjwV{jgg_shz&WFQ?6CpaXu)1O!ZhEG$zZV&9V?-5{AMU^#%Xij77)`4`0)?|zay5|S;dLpb2n(H)5Ij6Cwg%Vg&2|i zZaX5TThR|7kU73482j<8IP2{3+abKfx6@=0Mwq~LM@t{zfGM9LFi&q7Nh_Ey<^xDH zG~h9ht>XGv>cT?Yz)Q?EUA8b>#l;sJ7?9?!u7^uuefY~_Hd=EGnX2(+&SUtpS;myotS)}$_pD}!q zgftFY0VJRs3hTo2}w^k!G=7lL7_DcOCz)sE=Zt*W;{wtF; z!q7_gn$9>qKvCU9FeUl55JNHi=rfoydR>U3wIiO^ww-WP4rTSkoo6yKC@Ob$hotr) zi>5lMnnBds&}FWc>={(G5>X{(uvITJ{IAb8bRF^+F|IAOsWTO(JU`;kRC=;nNE_!4 z#thPO>?VV>M+#~8HBbgfTVhD-wVX#{AN!K*NJe$B8#$^QP*&cJvSNQS%8EV7C@V`! zq&%ZSa}leEASb;@U4=bmnrN5NiRa+Pi|iP5R31tS)m#ck4??M^BbiCbo^<$dXP^kbTuC@x* zHj5l|cZzmfyVG3)LvG!2D~lyUFSDLI$+HIZ;O8h+y|*awKM@!Fo3Y}gFW@dw-3L)7 zWTb}OjL-I|Tws^kF>e7O)BkP(1UQr?8KjV`n7$%`>FW-QX^DFfI?Y(N8*15Z7^}6o z4@)FxyWvB%kh-SKe|QPRj}7tRu_XSKQz58p{RfsnM^jgo`8WOe(cZ3!75%yo?+KwO<0ZBwUM2pxf}dzBwZqsMAes4nk*Pk(|*Zu zB;$${!{Vf{=dv}I=r{TOLM}OV*J?^sE7rJ^N5zvD7LR^0l($^VYO9?d7>i%RgExYh z%wfWE9@NLJ{OUtDzuM=hddYs`FX2JDs-M4QA|26f6!OALAu^K9zu{VSTGv(3bDXMr zv7J>Yz)i8g{SJMSo7OU{;RQWx(tP8+>lP$$E1k)A6>~@~&QjIU4;ovs4^Q z9&A_BzRB43w(tFS<|qFh%~Jdwre{q*KRSUEYEbPt=&t<2<_i7cm70S4Y^wBa+_Ajt z@GKLi_xSC$_kt_{ieWby$Ei$3HEBJUiL%oQ4v)gQN}nvsW`G+_RUANQy%>s+UPW>U zoAgfQNxTFOE(t}(|2_Q6-)!UC?9i`1XDsZQT{>Dr0UH?#uh;&XSFo-Yt4|_*3!OrQ z9%J!p)nCL3c^tgwoi(x4KXt000wxG&OZ;JH@Cr?pjLH?X^gdvxBQy}>H20k?%50pb zVLY6t>IBDShKkGd*Wd%BPLFbw^&NgffP~24FV32KR!uWT5SV+s)`!XONcKn5Gfbc{ zuzpQ*)mZz9JV+9aX6V>^b$FL zafAUQ);8h!Op8>5+Z60*Z12{b^}`ixZzfjtKF|a%kMGBF^d@%3n$4?7@~|EF-zSzB zj#m~w2smHi${ABAobBO`{KPWt!?rhgbVb|_F`d`O_vKsRoGR#yb+$?-o8rFmz4B}! zx)vhdfZn=t?Ll@`_CC!U>EMGo63CJ5#m0>y&@4Xsf~wEKIBcI;U^%(P-A|My)uOs< z4`B-$LjbBFfe37yggbr|bc~jf+2>1V&hbfY&|O83ONoqXpBO#?rummHUPY)Xcf5Zr zX9R$kNLf{%>x6EHyy>V6=9(FHlaSrM0YMY@$9~9(3;?LRhJveuI9^?um{i!j`dzG(oOoTM2of+QKZYRvrQWk7-mFu?X-tJ5N`G zflz}7>Ay8A6si};X(A;pB4PStVhht==s(@Esu!>qrmvzZ;k9s4A0FgG(4yw0&}&7( z=uL0PmiKSTX7O58zBa*?OF>K4YML@2Pzk#?R?_ zIJ;i^^m>7)#a`nCqE;w9h?bXR#^2i8_^L~PS47aEAa#d$=yxIvh`w_bw}ke=m&ZC@ zE{OH(kmbB$^v2My7*&=dK=qss+-I0k^8eids(5_m&`;m_+ey@khac$ z@CJFL)PQ#^Ttn!EXwy)Ep|8sk1u8H|F?BG7j5lKXdHxt)CTFMoVLHbaCTzcBnSyHLON?fX|Jo3WBs`G zbb3QO;}x?YBQ0*d449l6ypk#2>Ha zLvtbE?-kGhX!pV6U5Z^mjQ;RWsdxum^TC#bs>X3j6K?dU1>9{JdA zQN*#eV-Inw?tiM%JPrLtFR&2GnKFPlW`Sqf2P^C3`uIW`IPR1x%^!9S z2%oYYm>9W`m@FT8oojW+-4otvk9!9U?o37XwrRGvr4tmOmKV3o_Ifb8&+Sg11M0i= zq6WOO7j*UUNG*$~*Y(15k-r|G#vJn<*dgFD4|Evvly_h^b_=mCp=hlzllLJJ{#?Wf{*pGCbgKGO;Gv_qg7%4 z?Qf&)4h4IRj)=sTsv;Yn9NoepT4b>$LESO$0PxQmxZ!FEThk&j=16HP+SMFkVaQ?{`V>E_*Y^6b>`iXq__QdF z|J(h`kogos5EPj254}!QYI?DSD&CRr;8QiWggNgabewLBj;YbZ!tw#h5o?M>TU<&9c(Ih0{!J79m&o4y0rL_YoN zJ+E{3KHju{Lx;BT>YciWr^ooeR^%l*dY9I$RKWMV{jgBrzxWTxRnb`b$@6Mb@vjtf1nde71emZDPZE~PdE_y~iTJOkt&&kcdmx=&bX0KY@?OEZT*vp+eezw59;bKS#Sr>cmap7hgJs2I)^OMDzld<1fKyj2?ONSEUQ%b{X#$eZ}VLa&7erTDB?LGt2|^b!6u z-1(qsgwzq%wRtN+rErKeacoNB1t`JMx8n(GzBNoYB%JdoCm{wRuCeCHTG`ymsrSo^ zH6A~kT>7Dl21gJST`#MtI)*nK?IYY=5r`_lk-?@v@ElJ}r z{sm)2@I>sqxkTt{pPuf>p?3;a6?be|l6gH`db(G(l|Jg0!Ke|jYKDrga zl7Yu?%^fAMmOZWGg1X>4@j@WyyVXjWuhu3eLG&Lb(3&mu+Qg})-hmxc5|g43`+fL7 z8}7H?C1w6suNBdEbSK9=GMEm;6FX!fSw{;ZzTNza4{WtxN76+9cj)`V)gp&k`X9mq z(8nWlZ2huKq3QfRlW1Q5Byg0iKcm)jpw^&^eJ?LAE zqD-W}HhN>aD8n}r-1u$5<8e-z3?@YDB)>#0`pHA+uTT-Jjf#A4^G2%$WnVXRJ|xbs zwV}qCHCO^xw@1_WFmE9x^uJm`$K~H`{?1Cig>D4$;&OX5c~R_;h;1VHBEz)_lNYi5 z(-{cPhB6Y& zFHaI>tY@m^#bdy+awjhaB8kd=2zZ?silNbo(K)R*vu}x4uAlL^DlZ0qHIZbKpYSDx~(jp>SBM_05{9ta4vaaWb z@*_eLB*A371F@+}stYcj#mU=AlGOmh$4=Gz_tML7 zHHYiie`<`QC(YZi{y^O&QO&7MU?OI-zgEJD;Bm^jN~wS14@E!D zMv{XmEHHp$S1=iFR%8a$L5njlh?>?jQS@On*pM%j1#hS4RZB`j$dT2IDIQ5b`1noS zy9#GlCGu-fDZ2=o(U0TxF6auv)a2AiA9}#KE2lwLn+EwjdT-&wg)|3LC7#qK;W+mX ziLeii+Q^C;6E6HlCMij?w6D5@KH$4R2e?5mpAR0D+1`nxNqbthq5{T#Yov$k;GMz@|Xbe z=sAiKfd9qn`Pk3Y6w}LX=~x(V)T(nWk=8!?#hxFzZ^Gi9>qL@4ET+SM9ox3y8}`iq z-h9uz^8c~<=HkN7o$qh_KQ-UwKluM`zCS3>&NnE4)@=-7RyUMCfd+#S7Tc)hUnx z`q=mrtqE8OofFcJm2Eky)xkPp#pFnk@;1HVXwP{xztGUgfEr5}fUUQ% z|G%~HXtS5}ZtU4+cE6dL3Cz<*ggFt{u8lja}_vzJZiS=qZW z{R3L!=UDq@NTNv)dKhjPV)!kigm6)}Uy>LO`E=VeSOifn3B#%a#q8bme9_S%JDdMv z!vVI>p&M(lF!$D#;*9#5X4!m`fipE}mt!T9n%A>K`$5}up0VgF!Fk4oHaSC&;~hi( z<{fM=4?2|dj6-0c>JRtZnCGyZ3r7aBuRKu`ANYr2W|tJwK^1{TyFntC%nt}+Z;1m4 zu?AZ)Hs$F9ogv^>j(wL3+9Yz1-}6bYcew(7CUCmB`QnU`9B$Eg*Z5w(dacrZQ-jy= zH!nH8u=$mLC#Dy22kIj8=h9};xjRQ}P!-b)6Ke=xY4P>D;;Qlerd4doe>+} zr97~cq(7zlQ?5VAsGr))FGXDnG*I@uasshs=?NY8+b$$t$#9z}I2AjGTm18o-^{Y6 z@ZwDs%bIB2YyB-47IX?HIGY%50zoDz^;cg4?_io{m^o;b|MX?zC4A9sHrG=Q@QfdD zxD03)MPevyRjCWucX`(9>IF6kYH1mEwZAc?zP92yulbKJD#qEk-Mvp@h2r$_7-TRO zV42jAjojnnwJahBf&^a?xOv!Fo!C0tyL78J+gq~}L&chp@$h@AbhdZSj`t=&`giNl zunq|?cwEvkicGIJlS9G_)=QW1&XjS6K(!rcQ%7RtSH*PZxb)%zA%o8r{B-*=JZH(aVUh`Lk!x&Y&HucJ| zghA*Ka(TzB@|yGYX-KzBKV=_#2Yw_Nq(1~A{sm>ZW^Bm9SkY083+5{0&TE^~i+IEx z5qVQ#)iC%&vxfvUd#O3d#1fFlwExX$uPz7Qp^0cXI$XxJVQgkAOY9)~?w>Ipwts23 zKcL08`+KXHRrfu!+!W$Vjxo1vA~@S<@bt|}i?ty}0P}|eZT3A}#<+;LF0Ucnmu;9I zHX2qa_bu&t3fkuG6+6lq*}Yapw$znU$zbd#y&AaGQjHo)BG9;VaACDQf6CJBDE$ul z+t{W-;^lH5$0KoCYUOx?cTBP zFy^Bb$pRqGrwjIO7dmo@LBMXTh5n4+-@^5gjyvmi@DD|%-%nnFdpXarFEn7ju z5n&GnW!0?8>VadrmOmhsgI^VkySQ2>(B=PI$t*gDXMO|Rkv~MO5u^3SO-+}Z#7 zqu6&O#sGmYXwzF}*KZL9nv1yJ2LMSN{+BgtzYtlhwUuApC=iZ1UBGB%H(guJ7ijng z&?M*2;O{s$v!1YLlWv=E+4a_)^S$*C`u{CY5kZmDrxdiQ7yF!9?TG-OrVM}36NaQzs1~L0YfL^#-;|ZeVoBb>--2-d3 z^D*Fe+ka%>+<05&%tzo(|8v!obK)bHG;O)%{~~GX|4l=$SDWQ9-_9(SxJ_I^{7{?b3$OqN3hYO|uPi@TxQnA$0- ze-d%M5uwcN#0$MI=bL`-;TLLBp4Tv4Yq`u0j&rW1MtrSTJx5WrV+6-J)pwLrF=u^K z>goiYGxb`w=aVm0v}1p1^Xt6UD|pARP~6uACQk74Ec+oc&8eadHBYlfts+0TDww38m&lG zUY_#@tD}VI>RI=MboFD)5G7TH0_|>z7x{tk{uT$X7mB18lWp5BHeY4!)@x?Di&Pr zxzlJFtyn?nMm$+H!dGLCH^QJ6RG0~&GF5{NRMkNrxoDB-r+xfCIjhsWrqG{tws0m< zy*pkpGSZm#Ry51eQj6|Ov}`NVYdPR??FukjbK(>$m{WyWE@}oofx#KW^n`x^rYk+w z`w)WsHxs@xo@Aes`E_I$Yceh#IK?#A@i#y5L|4Lgm)znL0D4kYQU(Lq9ecVs6@-ZdGGBG7lk%wG{xyl z5W4&7(__yBAMfS(h~cAKLz(Q7(Me~o^-ywfUO1gl1sQw<<95%?@}ozp6Q5Kr>~%=+ z6z$pMS9ZKk6u;fvso~xDD2bZmL?`p>R^14Kj4;pXLkuaK1Q14rZa4IyuW2xx1JY&d zW`pxu2hqN{6b{{9rr`(ipf{4k+2ZC8VgJz1iS>I^&SKtLh{sMqqcZT_!U-D(j%L4K zUvQiXi2&XQ(I7v+*3WmanU&!B=@Vqx)*LyqZP?KoD-^W4(qIn^Ie*yv-V+EUY za$o-5a*SXf@b~YDLlXb?3z{kT``SMI-MZqnOvs_OEmvDNt7)9(|L%Glo|AP~MdmQz zn^nDIz+$-CIu!uLfCW7EKoar*_gt8rg00YB$oQcX9SwwT7No^pTUwh=d$E} zbXeFbt}b*}9qHu(-w~&3KMlHbttE&6+Bg}^dis>t@Xc^{SsYK$&xyrwa2BVi$Ihip z!(MLj0VLzJlU=chb)Zm`bQmp5z7eT4VyYPL0Wtjtk50~c_voA{xt@_QC07p$rX=4@ ziCy&}ybO7op})x$I~i^uS0GN9rD!?rxh0({IBLF=E36M#29ir{RHlYGt{^ER6fT5< z8npiD`4;!cG)^QujPt5N;3zc-<{mz_O(c5eRCcuYn^^9D^YllF1w1=35u*We$crXw zv{)5_d+b!;{%0qD2)Yg|$P?|PDZ_`0a*k#mnGYrWjpat35P2&%c}4MEMdCJunf3C? z05Zocvun@E7yg&7G_bc_0EJ{tXc$NtZmt^ZoGA6naEcWyc^se6w zm@)hnI|+i*ZLLp|xzBV|;cvO<4Dz93!(&8U-7LVuOOY!qB0CJHEY@$GI>nyQx`rAq(-0sf`nWeg)nUnH%tr>UTDXyPBX8E8G7&!qCpIDbhIv5bwqMqWKz5T2Mk1? zTC>ApgSq^^a2ohC)X58d<;y+)8OoPC?Q>LeLj}eA$P4SHX5=*Xj zmiv~jfk#q)1m*de%8&TAk;jn4ruLV0%9*tNZrE#<(tYNW&dY8ZEDi`?L^I$q&dt?S z*KMg!XuXwGCJ6#Xzvj#9q`di+-ErnyScT;zKQIV`S(K3awwvF|gi3%{%^!1)=($1q zA_buNt+5G?$&OfOsEkz0zQ8G^IAHKd&<(H}B&{orrEm{f8!e*=NLC#OiK1XTd4;Lk zBTQ%&FN*9?C+*zr-I05E2AAjM*Cq$ZaJ|yr=W^(j2UbdqGbG>984?*E+ezariQu=6 zN3Dgev<2EX;8Dtb6fFlw)bs}K{T|WT{7R_;m~+yk;+dE?;VpOIWL?8owSSXMP1el| zGZeI|=fri|5=&8aK43*BtRINyO-p1>As_Xf>^uSx z-EAF9^o(xjAWGte+SIt~9+tT}uI*!7cKmzxll(b6Qb`zk3{omYXE z=>rASaaSM)FjU~zfYS;nXL=LaW-r-AMkbUc*~+EAy#1Tjc{|U&sS@6*-JANr+Y=0h zoPs8Ah>-S1BfO<~lfWbFl0+e_lE5Pb5}_0J2_hW0kDvDAKnruUk?GNt<{@ zNNS#JoP5k`~k2X}<$|xTbJsMmSSq0!dhuc?G zRtu-C^v;;b2J9IpvX3=`-NVxh7Q8WxF9*cVeNl@_0$MDUA61u3=FN(yyV@5{2>&ux64o)|oOTd+S z#aS8awG5#s8<%sBs7+lGo06Q3jb&-zp{!lK#CGjlmiiZexI*{N*Th)a`H^;ipK<*f z?~qJh>5Zz1Uis6;pXm0E-)3o}{3oFli;Nt^<%Z4yU^HJ$`+hek`{~!vvVrE`hZ&z# zZ(2dyYs1)d>-Mfa`HKR;-y?;}y|a03uhkY$fj*>!wS{$W_pfmk9{t=tL50djh2OLa zeec>!L^!EXI}848R7mr>_O*EY9TXvFk>%X&HNR|(4gm=nz;-g_=vG(i4VxyfYe*3C zC^S}Nv>Pi-srY>!n00tNFjs~hWEigrVB6v=Y83&JBoXm?7Kh|lw&`aa>|9K7PZVen z+2VqgG6pd7?@B5D0hCRNh#=>}Fd+_%a# z8&2|5bb-@Ct^6DRB5^Umg^79G`{DxJiK3K3gU?mq_=qYIa^*ss1M>m2$#C{2piL&6Hdo4Ich4!B@+@q>?qJIyM%ku*ZGu#w;cn1P!KtEA z{|;a~osP+DyhQM9YchBa0iHwe7z8}8e^!JgGnMAI83I=}I<4`~N8t1g0uhKS7)!AQ zf&Ivj)*^(?g{Byu2-}xPLx4|-yv5FSY+dlyb$W3YK(Q@=`+_R&h%8rrmR);LPOP0O z7dg5Khc2`AMuoPVmIm`nNUtVv+dI$+2MPqD7PMy7f;Zw0>xqBa6YPc1;UY+UZ{vP( zde+VNDPpmgvTOxuQ`5oXZ2V6_daQ)m5Q|S^)seRP;{ehN4hyij1>6)Yw)-X5tnE$D zbMkB~F(#6GX7~yJ_@B{_so0s=L>|a~)=vC{x(ZA393d4=F@XY(q-S8~6jYuOYp?Nt z|K2haGIWyeTqgvu&}B<*T}D?RMF9^#o;S3O-fI}BlC)3+C}>B_tJy@@l+@sZ6PpHY zI9!>4yD~Lz=-1|+LIK0~QY$}ny)02LdqmYhQs!R$L(~4ep7slRiuEYlQz9JD)4!JG z_B6$t^;Aq!U97EGUF%I+J%9rpyrru0`Z4?JUiz4zE6ZRppA9gOrZ2#*+}Q_U5}pLG zj#mbFt&rS$#FpKlwfXOffIc`)IQbS zN8feb4WQ<_%e|KB?ulQ^?e153V=MCkO`jlV-R$rOpu{o3oj^~81L&!9>Glt#Xf^>M zupPa{IDkC7Ab9iqe#bhy_(5NgICBjlY~=m=1=Kb|IuOKu=_-rP@)M>&qFYHa8i6xK z4{xWsfHTfUcC~N2qU?OPK0($N;{C7X*N953Hvfz<20TCHiX6t&$~kF4Kw88T!LV{L z%wI2t31D;Sh|w3;MutA{z($Xe7m`I@x*-BaPIy;wk&_T>V@Rf|TeG`d-$DPamS1P# z`Vy2FxaafD2n%^dSX8$+0-npef6y8h^e>FC(2J#!<*FFsdJn%kAyKL;4}LC~HzVVc zhzPMruK;nrdbESukUdZt`A8L^WC1}VL9&ASs`fKE*XaWtn;&FYY1MBlSLc=l-|h(t zSz)-i)vV4*WT(f3<<@(OlMESM(5NeCS zn>NU>>-ivfr~(aH6^hWSp#S`1!ZyS=C_QbWBQh{e$UFl`L!?y4!dw4C!)4yuY}i=m zbf3HCWS+Mox-ZtHdOQhms$4PYyC@yaL@2tMG&gBspHoB6JXXkQAgz<0V-uleksBZI z4-r{ZEb^uEZHY;iQF8#$ekK1gbHLO;vf6QdOVD;^W#8JL8FsiOr+ib2kBVj_R5uT7B=$Xc6}hu0-)C@>FN>?8M|9v5Kz7 zms9yK(WI-pDuJQk-_%>t=`AWggjC#zowsJ3$yeWEBM3XTIZ;;_OAWDt{-SNm*vZ49 zCw^^N82K$Wa*ie=#5uV|&=YF6EsEU7kC04@DVD%Mqr%kh;Ec9uh43Z^f6TV_kzb;^qz(hhN)y>udq~yje>CP#zC-lc?4pK-ry!@zpc}`>68&v?i=Y<^kLx(#LrldMGm){U zGF7(x4k8Gi9(OPi`Wy2LT4PVVHF*8pbUq&QH(kQ8Kt|gy+c*m@&=Rp z%CE0*r%I-(2Ti3axvn*$EN+?6(_4wR|7$`8vtrK znQnRW^?R|5fF6|t#9Vp=EfA{gfQ*|&3i%L5SzVw^sotSS-TDqa+RE=|(xW`1Kae^5 zMOh@HH-d`z^(!6~J<4Ga>V@c0lwV^I)#4BnEcNcl41R3`U^EXIa^r?K^zEZHuwYBU zk)3ERrTK1Y4yD;4kbD-Ukv_R9+Lz4qiKKnp>)XS5=H}sp4igxT8_oSMu?pTl;=Q*U zth~cCe90c_G>AEi*r5wQahuccfekq7Spcv}so`%MfwhHNFfGrm^7RWkzmT{VXcn6*P6+>j4gFZ3{x8PWlbkaXsL2M9KHRg;NV=A9CaY z6%if&is)=)8N`!EIg(>!U=#AxB_rBNJx?jMkW6 zwWX?4xK5i7cA5Wu8r98Dcpjp1@ky5;RJXtw&kvL#8xhMkiy68M;nBB+8Fm>0muVkr zm@&+}l{gl4DevxH0YY$m7otOau;lUa#F2doPc$SvyBRTrXR-*-Awjc-wKUszKX;ln z8)&;9m#W#K<@*JM=NvT);W2vPc5BsOUwU(ya)+dAA2pUL+OsX7H%}Gk&>JHmQ!jP& zrscQWpf^+B4(Uyb-BO^1)GWJIJ&)QV1ySq$?hg>%6Wi^Sk-zF7?Nw}%Zafy#gXo}T zre7yGk~+qb)EBrDCeyF`VDj{9cG$0#7$T*|XTqvz#^;H=W5at(G;19oj3qHx_@|%` z=&2rTD6WA|oQ2L!|9pSld$a~ ziCd`_X@FKQAWmpjQET8^=V`A5&TVb=ZadgcXxV=U%fM9?^eO| zC+zpiaFE(P>~r*BI8k3c__9~~=)r1OdT>8h{6F_My)rQH-^ZI%gP&AKl`7_EvUkO* zDj1i_ezpxknVmMQC-#X`9_p!j`r?P`sZ0ln9$|tOQPqf7Ls95c-CgxcA3fN0ca3#7 zk41rUW5wp4pMT5Rkad)EAlN^giSg&@W*#Nn}dE4(v98=qY%E zs^(QO1gwyc%XzmP$60hL|}k8?K}mT_<%rCRgykB^qgZaED>FbO3Q=_{v+ zz3mM$EX*Ta6t~X4JG*5@m^5`&A7J@S`bBJX&0|i;sITCTTCOL9sjv3yYV<~+_ww%l z3?EWZFr&RLXL_>c1SD3RBU=BH`4gxlGnlZrl!T11C?G-Q+rRoLVX;0}Skx|;Q%f0o zRFYyj)rpwv*T3x>PC~Rq$aGc?kS4I|buEE_As_76mbb4E7EPcFvMqNtCs~Z%#nI&2 z#Pg;fYcz;K>bQ{sO_hAs*himnK|j35Ou*Kld06BmDPXB7^&gp|QNyI-i8OaRh!@t` zJTtwhss3CX;Z0#b{Va6NjM5%$`nW%GmA4eRmm8T8pKx{o|GmXOMmTix)xx&~G$%dL z6nW_U5_K+BP8P?R%wJ2SiD7DJTj`T`My$j;BU&2nw|;T`F!VdOiz=Gu-&*t_Cji;W z;=Wd*fgOx+a9rXos0D!@rxk5qEAil6@7fPw1(F|5B7xt6N&G?`MN0(u9MVCGND(_q zTFBiz`U%87bxbcdxhkTf>YuqkDP42CuD7X}eVi$B{`de2J2{o#N_EuW%t}%k zZ6P~LQyZU50l9?-|2ZT4E+dtrw2-=%|H8R7wX%J+q>&1+VdN7!n9ixZs#Zp;XE_ge zrTkm;Zwb%-?K=b&_oCsroYd`djw$8@a%{w=_=tC6&3=BYV-HuO?=JMN`v|*KZ7PaY zl9Sfg?O^`niM3uC_6!8mj_tU|6K?30{7@ca4|9NbRtIaQssKXLjtfd>BPSs9AEFa% zB(yhF)sAS_5E_nxpbT#24=X61==2UOxN-Y1%Dl3tvUzJi@2qu|1W9bo)dc-w_Ot+z@u|;$a?tU`w@)Imk%7aJQkzZWtBI$*Q zkC--Z{1v-@TI^AbS1W0b7YMvMD-MznwnppANyb4E!Okn>41K z^7KPn)fj6@NKQM_HN7$?6$(f~A$=E{u;a-Au0h@V>Efa_w*tRZ(YNk9IB)dE%D-!j z$&m|dEi7Rr`iwlZ?jf;K>R4zlVAEHk%5u`hg6`xuz0mk(&|q-EQK?!M1VE!Dvbojo z#aWAH4;N>>+pN9uzPB8$WB260V5;$B`ZCqN6!mdQd?8aUE>;hU&e$AK)Wx3BLhFmW z*{Dk4DFGS~4do4^H-fmBDu!v1n-acT`fjB&o*5coA*uRWrqY0StbRe7vI{u6%^Jbi zm4n`>nH_%3IquWE?A=HizDo=_|3i+d8=m`r*w@bW?$c@KdQU&g`|+wi2Yb(h(8iNj zW8%pi&IHu7?9TT7@|;{w`&?~eARX24YPmv|m006W1l>srm)O9CIaRJ_zGV4oWm^p# z7#&dM*47jmC=8G%0G9_we__t$1hu?0C9|d3im90WRYy2}Yur_se zq2ED{+TQJpXiw#pYIz?(N@|HX z%r>XjGEKaJj%W?)UanH1_ZvSm^gjE~2NSStB=>TC(y%_BcvW|DwVos=NSsaUH7-4r z>LGnP$%K5={YKnmepYAtEPOZ7R*%|lKli=mG=ei>exI!o00@>vUya~f&-Bp<}%1C)48P()v-nh)(_9O9=lFG;j_*efx7fVfJBNv5|R2YLQ8}StS@Sz!% z^4!kETV&7|ETT8wvI)z}pZFtH=I3c+$$hmL^|_A!@Xt)at0O=?yIskF0-;n+9{LF^RZ^miz#o()pZK2yn}x=(?$ z=czs*HQ%vtJNi1Xh3*9odi(Qc-3zv(l`N=ASN!}{|pRZfoS;7zwu}QpKb{7qWMi{SJ*C;8y-2z4fAu& z3Kwk*5#(8QULb+Og*xuZuJ3`4`^$lh?8$fB9Kb~cuK=R86r04hH) zZ`3;P`ai;4Oi(^$efnd`8xXH1mX~1a*Km`X`K#PbJNhDp*1jAaep$U)UoaNhmpA>V zyB(a)jtLtn zpom2xVgfPx+P;N&s>GO3{_ra=Hx#gm6velX!L~)ZP{yLf6E2()TO7X##1tosQ&k&P z`Fn^1n32(zt8(yBl1jipT&7ia8i41esS5O1*} z+-rDSbow*kg*C06!JCA4-V{!{SBz*;=c#^I<6-=VhXUIjN z2;^kHP&6`G$jlS$`gB~-&p&>K1N)so3Nb96Jd=|qds!mliRb-ScJHCvZ~8yubOWJI z-di~=ZwBl5jHvhHHIj)Yh5;)sMgoW@zxrvBh|Q{0L2^c}NM!f)*&Tg$W1g^xMJgR7 zxUbKNMo4ctvJo1+gQgF|Q zImoe}7z_7P5-P%Wj6Y@|;6?g4vSZiJ#=B4)gs#h2dc;9kh%bu}*okF$L0o{ctrJ=2 zotASV>z2n+vg-6DiP{9EOc+5#kMj>Hb0{3hbp)VBRNc+up3)2kg|v>z3o{`o8T z>TJz(Rmld+WtGegD~V+*IlzF zcK@mk0b?0sAJD*sJ2-2UTDf0PP871#3V&<2z?Q?Wt`4hRWmpyRtL=Uyto9f7A&2=* z4vU=roGODa7+c)#zq>x@$+6)FV@q%Po5Bwt1bug1G*^^T{{g;cd$<_aIQ1~Y(q1GS zy7j#)7@uQYaGQ?s%NK=C8J4!)pA)wCW_Iu3wY1g+^Ermz2J_jSna=|?QQ>^v3jp1G z{_0Vt;x6UF+->-S)FUJp=46WitWU@vGv%{*(R}as#8jeWU$cLO=)JmRt87Pmh@y zA$W#DXDtctIlbJlQr=eG&2Qzyu+7n`)0t4-M25>HUR(S@mpIXJDzaVx=Y7J_#j~^f znh8f*Xk!JyaCYCwfT#mBNk2@kzSZA#vB{U|ALtZ%E^X{#grXa@-^rmyKU5`8YV6S3 zi_snQ`>u&{2KS5J4B%dsg?lsNh?~4$s^4MH9?kUZYpV3S`@{9p_szcp0Xz$gSkU41RrEm8`a0jLZQk6dJ#1`t6{yN4u->8lIg-+b>U0o(q0$x zX!=5vFKkTbh83>QVp-fitHNbe7>LusncADl<_2~UwYuttD}V0v|DMs&?+=~2m$${< ze(HpbaZh9h^QLW|Fh{pTyMw_TVxQIaLD|7HE^tl$W(@=R*W-J^^7ibkFAHnDJEz7B zJ6Wr-hTv%?hpV+twSEX?6vl2Bg=8%CZer@wYu#8{tL=>dLA89&r zEBwYMm`U!sE;pLx>?K^)(Xz3z5HdUT&}X#Swcjvo02{qyI-_k@6tJB+L-W=hBzwZ4x0DbC*Pjeg^QRLJ#gpA1-Kq?i z=@{43aAT0S;*>%=ROqz`Em}4<42(4|D9&pbo2-c(-cHi^CjNLWYxujXhCl!(n?>T7 zj>{*}#iB1i>HK$oq8l#D65Xqo;FG;N%<>@B52DVQ-ZA~WYww~8%GBno+sniKq0t-h zW~M9$O4X8boEmi%Jn3C`IgrEUtpyIth7%og_pbKbn(+$k)6a%RUhgbyxG~%HMq0`} zzZOf3TLiYCDE$Ozn zZ5nYD!pevHtM|*Pd^nX0H&FV>rDmpSKorXsDfVy5Ekaf+qTD?Tv;G&FJ8#9wZq^$1 zYgykg$j#Uhqt_?at?A=2|(yT+vx2Deom?uy#B<25>&30!0T>0O{1^Rwg=}oEQA+JCAX!__ z$Gpr1M&Cb#ZRrlY)aLw73$e3cJ8mpo`LxcP-szp%QJds+W_BA9b-c6|~VB$p6(o*-r=H zWN0F@%h|%=FRzS9W3mU(Woky2CN>E*7c5Lc7ggCVDLJY*PzW(CB?L>cN|ljw zqTWh0xG}R66S)+e(X>rGLRN)=@U_Bz4K>P|y^z9dJrq6)T1DB3P=M>4bzc;7-hh{# z;FSS??tOgBE=h89%iP=F=@j;uQ%l2n+Fvwj7E{#KbhNj-=SRZ->U{nj{^}FM^3s1{ zeY*Y5pvN|fwG)fUj?xr#-3F4||8xz@Gb}d&E6>o@muR@68@J@t(C6FT^YIY%FB`cK zU3Cgp(Le25qkM6sqVJ&tPD+}n8XOO9>~j3K`yu$RLV&U^ZMitsTiny>w?4u2h+Z37 zbCc=&?<_;`^o|*D`4<@7iEf3q&s+uee?p%3WHZCm$G3sRtR?O?@hS`!$lo+u2FMF% zez$k)R5F5-1m}R>DAF`fv%LkY{AS*`SMMn@787`RCJTVMVO*z`1L($MadS!RjwL+K z2R7hea;0v6Z8((LN@V;2p$l~*Ek9I15h8hrPA_2 z{4g?-zc_YPC1ws!oS2^^cH7h{Z^#pg6N||kscO3_mN=1vA?(JsO^mmlSgXfk?|>5v z+fJOU=M%xO?+?S^HS9Jg;^rsD>XMmFNS}g~c^(rgIp(o-AsM3)4Hy|Vr zjOyg%v%?or_g3ujR_r{#_kJq5u>BkTcBjVeN{w02 zZ%1Nnd3(q9!o;4AH;Vi18Pt{7vG9$pWGdo+Z(=Q_`Fglg7QU&!#NSKo?s$7ZWrx2{ z)u1(lK1qDo@p@s$_5p)F=y+!zUe^x#Ako#aeV>kZ1`OIWXh+A^;z4T`K1Ru24y_Ni z0Wg#Pg!eQ8o+=Za(CTX3o1*RS>=SJhziQ2g%Ep=jbDp;h+it@UCUX`5yeLx7T8J>g z9Cw5TET}Eh-%5KvrKC1lSxD@O+T@68*`>W18?Z)13CL7{S5z!DtpJy)_41ZteanHy9g9k z?;rfv73`Ahww44($KLUK&|xYEt&MRj{8K`Qav=k@X6mbM!6)qdG-X$s!OkY>rpDrv zhUADqE%NP9>RF|BD{jM=VW%6tQ7?Em+{72Jj2-bdW${k$Ychxl}sA0zq4^^IP5`g>kgyPwbfKyY-e z_lt}{&WemoKZBf~pQK%kitYrqCNTsqo6pjsMikU|t4a`DEi0h`T3_tvRu= zE7TW~lZq>9iW^r@zV`S@wT*wE{Ltj2l8Ty=#@keM2t|ind2{2^L_d&9&PDugc41PHSge%H40m>$LQDvvBvid zvSe%6N=yHN091Uzn1wI50|$UNOQIjsUcB%lLB?zO9hL8zP*vD)0vRVbrDjyemHit$ z-iw-lX_J63hes`UMN;_mP5d{<9qKTvV zev+DC>1_y_7+UI@c+x9l*_}=^rw717@X-X;=J9|vp zx_B}_l9*hT9;NK51*MAnRi^wbU*H(=ziuTITZdw(!0q&m^u(m9^aGR$YR8?5JDvwx zUd3f0KUotKs?rKi%=&Tn18_Nw0?uax_!f<}a`CmCrz$$q0eBI-iCRAbF1u_t@H$yJLsXU(Ibgt@-n(K8tH7MYW zy>#0P_4-%bOFhl2%e9r)bM_-9RiZ2~Ghk$U!p;zvLg0vr7Pv#j67x%8LSqwk<6=y> z^ZQTCFC%T7f~7Gz1?T*HSl(JZG-)Q5C`rs8seaJLyz)d0hPR~2+K<+gp9==7*&b)G zq~-ZFrwS_4Rm`<(&L-{X5HlqsY&9NFcVUUSckEzBNzTEHGMxsI^1uF9Got+SI*cet z-u?jQ!2jYPLbIk#6f(Sv_Wfg zEP_;qCNQ2nd@`>qAz{5!Qh;PfrPood8yyxOi{w@bqt4Ip2q6*RAB z|7<6anfg_{u;6l2?PJN2o2pJ|ENx83Q&$&T<*Ij}sy&KUlhuQhjfGG89Kv1vW7W)c zkf8nG*tuPa!MJ-gbmns_rE!r&V_{JA2Suiq6O73J6IMFwnrrnM?n$6)E@%|!JkLsI zM$)#>Qa4oG;Tb*p<+Da-@ zKL4e=m-T7{x<%;R>G&9TDAGw~V(@;G5)J$2bKZ%1c2!H&eT#zl!#|*M@x+uoAd%xh zW)5T3gVX;uG8!dkuU~o}`mgS(H$AiOI6hKs?lwxM9D&IJNrM7k=BHZ@l0g&vPK`hP z*^znv9jlkwXYz}0}*@*uf-ZnwT?@zKBH5eZXG>LPf4{xib!hN4)q zU^b6Tt?Um{#8cy^kl^0}fr4t_WLr?pJMb#W%)i0LzwXZ&u)tJdTYd!gt3`^jV|*cn z)Bxsj;R++4wEhZ{i9qZtp*5FpitPS{eCR?mT_~nu@mWVOUcU2 z|AHB!+gX6dE$-vRjYcp1w0KHa``_t(4 zSJg2C2hFrh$$}T#qb1BnIu^VmtylQ$C9)@v18X zSRlA*RhN!le`q(+HG00J^#qu>4cd!6$E~&fx+|XWS|nrQ`xHwJC;I5C`SE_Mk_QNq z9|M(&XB!`{I$>&Ie0J23;HNpTHZ6n!IjX5{i-UyU*;`-LC{Q2EJfTn zDK+i`-ts0V$L)wUuZ{YTvxURta(m>&QkPq(G&z}%J9m4-slkDb=>#n9Y=ADtV0ZIM z?Do(@~rMFsyvs*pMGfU_VS$7g{kT_$H`Hv;06x&@e^pAGwR(cl6>BL1@JZ#<;GyD)!q_6)Ll%v-T z6jJDTVl6_Dt*t4NfAm(We%ZCGFY&;Y#=C`DrLojV><+IppP$s~p1X+@*2#E8zN6oK z66qTBfVjb3dx~@R8+(z?An@19?L5F~@W`7)if#y|(gzCF&?XK#P{TgnAtd{!ohbor&_QqRSAJ$)B zZ8K0Veugb;3_X7%Ki1q;$hm{ve%oy#NLn7D1ZcEJ(nn!sSAN78NtxgoWeQ_VVU#Ec zJuUk6uR^s>cQF~k`gix9R(GkB8ycg59e28B$4t;yt(E5C?olmwcHF`{S-)R*>v!}n zo3ac(nCcQ-huU*5`;A{9UzTDr{%s{TpPItP{bUdofpjEWbe-uf^q>8r8s({HbGEFb z`z!Bq|N4hFm&MP0gG)-$Nve`_^JB@mQb~qq%%d@+wYB(_ilpYpE4F&godalP?OM9k z>wimI+X-+Z240?6sC&E?e+*)roI3MjeCVf?Vv(qY2u$hsXwUxEer&j($P+rtGYQ&O`&fLR6Ww^oN= zK;Z8=1g_VlCokhtVG8cdr(kO6`FDwhoGFL4c%-CCoIKddQzXu3z1G>}V@o}jWP=Fd z3D|If?k!<^@`pS{;!d+oK> zUVE*z=}C#gxiT|$q`WUzdF1!V&ZvUnjZ8+LZmLTX|FyG@3R<^PGMO2abd_XSG2|LKB65`O zN@ejoUGw*{Wa%48awxan4(Y%yRzCqkvM0>=#kYI92WwIl@rzXSA5F_-^y*5c-w?-m zD>;|FBQB;Tg^W~o;=1B|3ZLK~pnnqR_am*ECMi_ww!66izoFhE{_)}B&e+a)H5}yY zvTauRC%|H9y17kY=NSfI6xM(oz}t^*u?|dRuiYhPQaErmIN=B3{!84u++jVtplB#k z-h#cy;J8>O9D}x}!DxCAt1G!yicvs4KBUbzPub z@V-53)xd!E-Y}mIfe7XTtWN(sEj#hT#G2P&ik;>Dl_)7mjJ_=H6Szi0CmSp^;K;DC zqVef;t)$y)5=^bgihdO7{cOn#!47PP{|lm`pQ5YaQ_RTRd}5F6i;{G1d+aT@b%xg? zmg3L!i8`imdKUX?G|a9YK4L+Go0(dJOb5unLTEt|QTlSR`p z+!uL!2G#W&N`K6p6%ps4JrG_9r5n)}>lY>j=Q$q$oc z2USAHmKa=&r|Z}IKc|ue&1lZEX4)bM(DB;|bxO>g5fZ}*pukP~_ZfqfwM$(kPy-6{5Z9B(gTU<*woGFO!M=8N{_*ZI;7>6SYg(ie8; zKtpBejZ?pQprF!oq0aDV06k;Gayi}U^auUWjjemF)71s?FT&9}E8|6 zznJj)URY$vlvRUmLp5BHm>WZRfQHzn>B~~0`63Nl^RXz2;gDUvk0BFF4$c7k%z(2D zPi_$Q0>#g;KD64cEo)wIaCAaO-F)9a8p!rhAh?pMg*Einak?pB&mLz zHOJcvdThT{?~&FqyoyI(Yu*r_ zaA|q-+IZ$n(9y)!aQ2EiWs$u3ba=e>iCgGY(tAHnW9TG*mv+nPpbTpFA)y|#p7qH^ ztWOS5Yb=Y{Fe8=sKlo1TlkK)XITl|+txw1oE#@$P8zx zfoH$=n|Guq6J#EJDbo6s-CbOcnEx4%n4gA0aK{o-dht>%NoH&JxP{uaU|GcOu?DkedyzaZe70A`tA(keubf=5 zN(*gSL%BA(AC`@`JTZ4N#^Tc|6QdM+i*pDA-Fg>nI^iYU;%uAU#40k%uEBYc94RPb z*rx6=29Rub?VI`05ctTrM@yq`MQ*-GpW14Xyap3}8-=@ZsLL!F$v|KecbVrrls?T+ z??nMz;q8cL7lGIMDn0_Bo~E;$KG&GYj7wz)?)Rv$J_Wr3@|sQ)Jp1OIJi`>qRH7!$ zB)x4r0w8;4m22v_CNLdV74R90KG_seL&>>MGH*A)Q!C+X85D;`O#iD{)=+8&R-6KQ>d;;FeCrf18N zNm79(OLx>~DwU0}^>@6fkG{~{SwCTZdGi`AZeVQy4splQ3oA>fXU8hCmUR+Td}3a| zO}|My+tp6I^wHGZN2g~GM5TMVjHUQN^_l*rH_rwku@PPI=%ca757$NgSmgG#@o4*X z<@Mgy`tq*kKh(EA-_(y>bj|mM_f2Has7h*^?KHHe=^O;yj*~>B z?OKrN40zcku+djXq`W0)B}+zXAseu1=Txb$M?-`x`KoF+C%v<(VwtnhUnf^( zCXXfy1W6$F@A4*(j-|hX0(%+??2?hS?ZlanjAij}P*n7-zkQ0yGZ~w53#}^%@i< z|0N7~pf)ZV)lBfFR0PAU@Dya`2|W*l6Iq8thBEUpdyTqtLhXaa1Sj7hW8a$i`!fPg zQr`PrGr$(nUf@{`F&Y^7Lu&vkeS`k&NM9^F?5O~T^AB&kR*TA|Pf=nb9od_gxMxLt z#M%t`h`8uJm`U(yAli!|1it~3a$eHx(LB^_30@W;#b}(*gQVP%M5dWYecQ(7Sh}Yy za`UUE2_Ppjb(Ki3iZ$E&L^&<$#(Nik9|n`^2oT(3u}*V^Gi#_}+zFg3;e%s>3S zXrL?7b`4`{G|;@td4$z!@N!<+XXQuyq3@s@eU;Yam3@JJyLvO9U?tcl0eF=^oqfs> zFj&8nsgkBn1cp*C&@qb4vq-C%M(3U}k|p}-EU!V=2|xHgrj~5{8Tc@G&nD`mjhimmIT;0MhE3$1n#4)(N~Zh2 zoyf7w)RErgk%scxjWKUJmy4MFMYB2>C2Gpx7j|}EmYH|K62vyxYw5WDLNSsxucDj1 z+w=#ONkR+$yWhH1zPWDU(R^Px3L4sQCf0#kHxfVB7=^xhSG##P_S=lY;le(npzU$3 z03NwJ)G7C&^Z$_orqr8G|k3V(Ui` zRa0HTy&@dws>-$_^l2Jn0WZmI4va*+$WV|%)NDj1X|pYrqz83{eG3^8?W2adD7?uLR0b2GYoH$o6qDfo;{uQLb3{tYD8DeYwtc(`b7){!+R-` zco)4YR=Pv>*iQ+@N zstsJyxp__uC_F zli@VMGX6OIC54?UIGx*Y-@+KXj(#NHFuWq=QWe}rccm2E$*-G6ZTo>QO_2Hd9sNk# zx3rEyBC;gu?V6VJO3S;ouCl2V+PzMqp$6|mQHAtb+*#g)y`-d%S6l2rw` zTIa)7GBbt;8<7k)S8Lyt!TRgkJmd&_XL37E#LSFNP(yC&w+-N7VZvk5&P{m*)hGO2 zA2|)DE;xj$GqFnPBVE_GKD}Gg9l4JK@D_iCFV1`*$2PpZF}TQBTyHF7HSoeh&M^-M zjywWF#Ds_l+GsNAMDwLdM6=px@Lo!KZzQspJX2E8Uz3@ML>=@rjdLQJ1sCR*ekYoy z$A*_q{`)&U<=NVAN#w1Gv~A>`6^!7V2maQVW4m39BvA|hjER#++LjADodApz11Mc( zVrZLx-7UzF#}F!J|H5aIBOm1|&?o`em@|6Krt{bPzr6_$bp*yU3GY$=_aAB_!P!To zmoSI(xn#t1OWS3Q?gHH@8@k{$T1+Ck6VicG9^urBsX|IO=AGdV$>-2c&(ntQ6Aa(e zq-1~ZUiI^xUN%JuY;8TEuV}X^lSBum#8FU&6Ypo^y_Z+QY$s%r5g^cu4bb;dfUj?|ch3_>mzp^92hSN=bF z1yKODSPJeR(hh0>52qxmlwBXprP*?uDTjSrT+GeZC=U#-qkv0nPu$UTylbRPN?0O` z3Lmr{M^#C5MFFo7!8Xh8g1^(VRa1?SD3im+U_T1xLKKu^I5cRLanbJsKg=;kU`s)8_`Ulqgmy_zH&lQ>5)kIvS3otiOqz zekjq9h(1d4W?$-I%v)$E2;`CJ$RzlSh6E`$-l>S=4a!T5j9K{NSuElaqWm2zZ|xB_ zMNTTEj#UMZWA9Uk-u=Pb8Y~5z3 zgNSKHwB@xsy-gΠ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

W-mnBB+(Ak510Yd+9rL9;QP* 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�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 t9Hj+QN!X5q;tN$bT9>iw8Vjb%*R+a%KH%d6# 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 z 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 |ZdK`X#c6VReOe9v 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

B<2aw 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%0A>nYn>~M&OfN64CZD-1n<@N|9JCbHu{^?DiJ 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ⅆ%C>c) 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

u&*5(pD2_^wZ4a1 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%0D5Z2Z_fZ2sbSSo{L};8I3g?VpXC#9x(f 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

DKTzj3 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 #Qp`W)UcfIc>-87uwMwqdbT<|u#WdJUT=0~ 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


W;V{r?bB@10n^pN4^#);V|A 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

FRx7UkpfmfSX* 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

Mm2cbl=>8Zud0T+?`prHb~6j&UaX&e@%Xwr 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

V+-d4Raou{g{ST`TewstYo;0ChKu@n}FTOL+SH) zmIfoVNlRH2_E-A*&+(XS4|90rt7Q_uzAptezziRQf^`&hAQT^?KC~*J z*wqWv)WP`tr5!xL9@YQERiHh#KMk#!ukA6!(8bTLt^iL$vY&<5$k)elH4ed{H{++l z6?QAF9zVOhlYF-(sq(W+^p7?{z6O8aeHyB_2^A*a=fQgI0$2&W_Tj$y9KDndzyxzY z4|RK`-@as}pNHxdDCptg;j_o-6;K}FJ`Ycsqn*0`$;+ogHNr+2D24wnt}($6kT zDO>xBE|wv@Yo7+G>(k1RPXkjd$x1>#yWN%&a$b=2S%A7e4F!guXWT__4y34VS6Amm zj1~bpk)uksx%+%>PP{*lYGVH`k$uhju4@N z=}MfI&efef-CpbGMPC^Q%vwJW)`&noR~I6%i2F`tY7yWQ{_oS6RHSwX@R}HAzk=U$ zaP>qr zUQTYcpcy*2RHJC}YJ+e7>8FoSS0~_3{coQJr#CGD)*x{NO|uz34^7e9^de#h#ZRKO zw*j!>2%w=8=FWU}g?hUNVCWW{hsr-!}|Ok{&8{mDkhfyeE#S&NS{9V4AQ5MJ%i-x&>@~3@E%DN-0-|) zJ!g&_Mq$nnM?&_9e~Xzp2x?3vsu9m--43!T5bn5`r+;h&PKM8~?*vZL=hy0i6XbCp zh@5PK+w1eG2(F-xAMp9q2YA5eQxRZ6!Qb!msSj_z&!-~1!U-Pm`BVg0D}GW9W+{Fk z4xa;lq>5lwjgX+AdXWxAP^!V*4ovI~c2omeI)f@cpK4&Y*Sgm^Qw`{@wK@P>J&aOq znKj}l6#=SrJse1>2u@YzLy?q zLex915N`PhynQ~YkHFjKmHG(0eV)*Y@D!&RB-!tPt_UuVN9^+s)&}O_BJ!0vxP=^; zgDa>Qcd2%0suCRtywn8s`P0u<_4%{UKsh`4gTa?N$8{k3QWKP`lRprDsktf#C$G9l zl?Y6=wUxpg4p@(}#lta}53KImd`(%xav!N0U^gw*03r_mI(Gp4F|u}o1v>nRW^U5W>7mLN_} zlSe#{s>#;I4>q6gHc{S`>a#U~cTszFu};}|L4S_2A+&;+=)#a`_G?gD*Wi~e7}Qne z&j#$m+4YwzM7>x3Gi?0n7joK4Z>jXqM!{9zZ>20G{*8j-RXmH%2H(%4 zl@`kiyrbv^z2Rjk8;AFx-#^4FGbnK5`}kq-pc!{~@V{PL?e6)ea6ReC95T-!Olu6~d)NRYx@CM^2C>;m>E!V*cAW_J;~NtGQx19*YZi#}C`AXy@1cU6wE!kh1rO{0A@FtlG+dY*@(Q(k(*VSGu(u zm zn8W_G`Wi3`gnYpFTLY*GR{X|1UUWZrKNeR5WVLW>4S*Fxt~DUm3cJ>TTQT%n1EL~Q zh45<)nCdsI6oRb{wUW2J22?fv>8+|%(oh}p2YmU}fg47pfttNB=?}tmrEV3Ys_yiy zB2;$@m-0V7Q)e1i5vVhjtGIt>I#)SL=~y{3VxUIMx(4Fbi(A(KtjwWu?7BMS@>x4p zytY^ENIlxQYDch3v216$SCLTMDPKjJcBXw5m+DUaQt@7)(5yP{7K5t$tIcY_RQ_-{ z5Lz4L;b3SDka|az0-_&>x-TeN8)~J%Xbq@}PZffrABE}2MkuXwpUe28>)aQyr~y;) z{&29g2FN^;xG!q)A%Ko9CtsnXo5=w>x|WIo)ar+r#Teb(Ne0f%jbz~5+(!n^>1`Yg zs@A=Y1A)~KfOB~p2Lh}gSe>KWQ0=EmptbrMD+gOY2-3~Plve46R4NBvYj6B;@b!Zr z>umh}cv0OT>|~CjYeWz+K{S1q#)AArRk7^PMZzA$GLSv{Y>5ugQ`5XT`%v3xhuZU$ zfD+r&kbj^8PhxD^(ojA@xG!Lb=d58dKV4_dr1=+G+m08QkDk56n*oc)HOy_@P!8>n*a*%D;9MvyKeZEeYC(3uvk#?f>!>+ovd zGMlszvBc+5a*WRRXhe_x(Bfwacf=8pXE*D}IIM6*Tm7HE5Y zv)iqP{zp9wDH%!!evIYt<%ej5i0E9durt(_z{<`guB&oNqR;^pV)K>z-arxG6B`0>#wN@fSQ%wt@xo){p{ zu5K00q}@Bl8<_J%l>T{yPe%;g|M45`$kYGt<>=4GpJV+)TayQh@agaP-+$4TItaAP z>G3|ee@rSph*sy1$?M)n@jw6m0gCLZ+3;C_k`64k`Q&Y$hY z6T8JAO{1p2_tEiUiIoT5;fMU70;ERJI1H&7G!H-24%&Mk0<9>0L1{R+ORHO{%2fWv zWBd>VRBzD<9p6BS#N}YLNornS{$3vp)=ReQiziI1TzP-|{C;sU3@&>YL2!E0yYBuy z8hYoqqod*%H{H?j>~zreH^1neogrKC5|x~O@%g{62j{1wQ~b~Fg)GdXjkb@r{SWcu zp(9gmPzU7@`|3P@AG7U$5Kfm*VRcQd$o=hvo{y*p!Y(Qn zH*xI{euc1P*`L7ZjP{Spwgk1egYSXt!-lFnDQhnX*n^-A&I_Eb{|dJ2cX7T348^C9 zuRmYI28?RjLcUcpckk{RP*z0rEqHW-rYJqN~qpd+U|1Z*u_~ zo3rc8U=?he-p#0c*FQb$2It-W=(K39U!C24zZqeSR&jLVu#dr4aN6sX zV{xH#I^)?>gz1uRv-`zV{OD(kgt4DF0ubhzk@(?z=jP9|aLEzF<-ZD}mWR*g2{WbD zJa~%gtFisnw|IqF%ABH!?vAT>J~hECK4q73fsuZt^>c0)2Sp+>VBS*zE%SxV$HV^5 zOKkR?DU_$z=hqUjDG%W^BPz?^{7f)YJ$s!_MH?-+5W7k?rqaU7k-s?_rL@8<;B_eYoe~?u>rW|7= zpzNb{hurTJqZv8P(7eLKKxj;oPWTefpT+Zdwx0b6rx->fV}oTKUQ;H+arm`NEwz9# zwf6|~?J>CqVV$IRbt6xo;A+8-W?g*Uoam@$m_t((EcQ@o*zKAz&Ntri*JxAa%XgWinhRJc`>S#*6^M#$D-0Sl%+_ zxc#(GzMgT_`&a3mrv3H$$hbiUAO!kgA z2{@YK4~|Obbl)S)?8HII^f~j%8N!t)dd2es&a@L!|`9kkAW$=t~S zrh#K5DuxPPhnSW7%7fwaXAEm0qRMIP-=^^jfmg-Y%S6rzlM~0$-!zf!_;$}TU-jk> z3*ZbMNA%XeOfLJj{J3{9Xa|_I&X6a@<#KB7fY^n>yy!HGPwYhZDvPJ7@> zDA;`plK@tEyh?lH?l8oEp~h4X5vBzO^+o~ar;dnPw=CzxTwl@- zXF&dpLX7`?IGe9L|2O^}OyYF8z=%i^P6H3zMUNQg$8pKa)te4Gzrdk`5iqiulUJK( zjmUfAd-h*4FZ?cAV$f@pSbD)*$yVmkBLe6zk=Hnb8zKpRJ|SZN_x~!r;+imS`S?)~ z+H3P}hIrvP#;9K0!tK)Y7xO_9;Xm}GzDqBlq8z7R-+q9P4ZOx>a=Kh%0J1P=rKD&1A5=(xvV%CwxEd9_TR}(ah|KkgYo4Zk83zD_UNYmj}N$E&9(>3<)| z0r_~$+#MKsJOP>Cg~US=6D|$xsmBBd{y77vQO`RfUM-gN;mTH;{2Q+JaU^xy`Smo< zm7iZm3$o%S_Gbjel?Uo3^C4>tE|MtXAO6W=jsf3SQ8EWHfk7lXDx8CNOSgrIe!Vzj zS2>%HKwR9S(hx_5%K~xFH;VyNUea?2*)fQLOiA{|69Qx8VR4&-E8-MByF+z1w$IZE zfpb{T?NX*q=gjK{xTQJ|9!tjj6+{R)0Xdtj4lHfhFYt1|vBaq1fZ`dJ>y|1<&s?XbBEQUeLpKNn^y5>Ti?F>>^B6wI4P0pujn&b$`$GE8oFmBsVoxZy5j-UOm9$d?-B5xH!4JuyqhqakRRJrVp#qM0QA?ttsu?z!mhF z=iYchjd1L>1^J-h%vtv@vsx8@@MB_lA#=$)>ZLuCsU**kpfQ*nVl)(1(VPJbd;f*B z)PIo~0!^vtkdXf8?h3aA6*WG`VTMHJ-&303zz;ZJSIN6QM2J?LsFS1?NjdQ#c)*Q|h6CjmFc5WzavL zNiGl z9R2W5a*h*R#IN7NiBdCF5dIwN|3Ql*^^WwdJY=hPs%EB1Sh#~1q?jdM`!_Urvy>5( zJ{U8^65LApLmnZO{oCJjjL?3Hm-d6RaQqZejNsk9TOO|L<5+lM432@+I5HH=4T*q* zc+3}pQ9$AJj=~AHA)kN&fk@0Bf|(`B+z}FCqLt@EEJOFANSlyNKpPX`C})iwWa<>5 zlz{k0=VAKP#}SJPCj0>hakQ9IAPP^RGItbse(3?s`FObg4}Z8$hsb14q%tKlyW5D+Q{Q z!|)qtaWbApkR!8bmAqvPza&w>j)a8=D!)7k6Uu_05O+}KVQQvUSLY$gCuTbZCFocM zgea{d8bGN=AW%k#(#k~+8{RuODeTY;vG@2}k*1c8J)ednY`bWMQ-eZPVjF`iQ4WOE ze{9o{*O10B1L#bQnF{9_4Sm5md$K|F3bhhghFR}3we?_+0c%oNW1>wPjNGBZ{E7!x zzheAfNg_}|jv*1`3#-aNPqv@oIK1}FVs$#5Ez(t&R>=41GBtV*(Vi-Q_#0da1F@ST zCOtI<_-`Q$JaHZ;_zT>N`uB~J{Aw{rI7pl@N9MPq4#3hC(z#^e*VEg=jF?r#!?{+YmNP)*otNTw^# zlDZo(7}RS2!h(U1A}v)v4CpV2fUq##*0Z^6s4T48V58$_q_RTggvAOJHH!O{4`vKL zw|I`SYsqAr*P?*65*6H*%o{sU$wx_`ugcFZeeQ@UW9%55>h1Dk3T;ddpHGWA~z>u5QfJULn%}+9Qp=_SM z{F+i1D-oWkV${WQNekVKA7Hr$HI9Pv@IQAqFm~HaG!`aK)XR7%IMIfwRz(Ro*;E29 zMF$Wuu5!<~lgQviR!%6ta)MEg4hyplZ8DlzLtU&uRl5qFlHePqFsQ=E*n?iQ zUfs!Mf5W@yHRa~$4?1HOx&nUpqFX8Sj#cqyf87mN$1fnMMbi5PaRt`_QN;(B=|Z?C z#%5DfG4mTXg*(qgnhp1IGQm<YmeD`*wZO(+)rX~W?Tm~U;!i&V&G0M=-l%~ZOdHhUA2G=sex}}h zB3zm(LE05z-zvHgjP&&UF|xK-k-n4XiB}rS>*!3rqJpMomldf>e_+GdVd6DY`h>}f zZj+nElA2C?ut=fFF6LxzMNcBW>j)JK=i24#qmm)Vv6G{Df+SR_=8rWPCjlxd`GygF zPk|H1aJ9jCg3XC`)_sNB0nPESY`HD@MeeHgj^niKF15)2Kd2x$*F>r7$E2g_^7t2Q zkE#U&!idq74Ok-;B69mViQYlklT(3~VvrzE-)5t+n4i*D22+j<9PRh+kcO`^_J6aA@F$j|0y$A6>&D z>kckn1}__TjYGv_Ewi`~%aW3eU6+1F&C1UWMsTjm+Z)C&< z_|@(Fb{-9>XA8}o4;HZN@2IJt{}7fi01=V~M?dh{-?JrcQXXiVs$ujBe{oCD8E&7+ z5hydBckk4D0w+Nf&g>tsgQE#r|NWw3VqEQht6*23$Km5*9!}N1MvukylFq)=3M6sC zrv>gt-yl5^VwF<{hshcA&=Y)01A-(u4EPrv-euw{$TcExD@Wkd1PcEiI%)|W$<^zl z#4GWy{Zg(e4#^G0;BN8TUVswQ4gu`@0$F!o*qCm^>l8ksOO(-;?oP%%dYZT4A=zMW z-bqRqPc#7;zrN|xbAK!Jo8R$j{Dkw%j5#qB%T5+LG@y)X1c`Vqw{b{HgBC{g(~H^t z@}9*F_C-f^ZgHz$nasP$+>gJVlQCP1(+CDAO>n37O~}Lp zdx=G<3&wVR-mm6&@L`-cZeiHR2rzq>xq8XHb5BE>w@h6dv#;UHeAnsvH-;NfIe~iwM9S zCF2po2ZEyJikD<;e48&uEoA)aEdYCrOobrjMgbSD1Y;7gK>Q|)B?&i)=j$jJ#j*jh z(flLT2+GbCkqunP4%>%2$LV@Usuj`G0zTCYI%>HiHm84rW^0=~=3on#*E(In+Ou|+ z*b3d(XuL+uYp}^K`0G;03CE+y4HMwoY{YV80zOKt;v0e%vd@m&RZWK#?6{rORPM@n+ zgIE;H1}up3eTmo>z9Er8@z#ThfSFhq+Is=j;-<~b7A}%*L4gf006$nv$hYze`wQ$}RRr0K$`K?kI)#o5L?bS zD9o5q*oF8h1cwavs5ENFshakN+(93gef5eIMWC>ExZPj8lRGg53StexJmW+Z8JMfd za(39oDYU#dq-As`kI@O@81&cbC5ZN^(d`@I>rg5!c4z{~Ngw<_38$^`6n?X^R!8`P zL&m`Jed{m;XM%Pp<>6gmPl*%2Zvck7n8XhV(57nAD8mpfu{DBoM(vvBGL8_!Um?JW z$TnpIBCyCWz~Aco;GeBiFtGJ~_5n7g&WszNJ|hQEpnN!_ktH-w5gAr{gV0>`-LO{_J081)YMXK}`22;sj>tc+K30sqrmKm3=$m)AFh0gJ&L zQKfS~((9Yo=A&ofbb1fBkulPZa!`)Mk&&PxuEpoA1`VeJO!taPVSF>}1_jS|7Frd! zJ_tAS%ZY9U27FHB?|{2%VjkXvlhY(VFjz@=GnOK#@0z(@&_SSk!}kwqjlap={oc1O zh7lB)4e!YVvM5#Dycfl(5DkUeQwX4e2_X55ndmX_C^{aAiMkz5>)#*Y*t*UB0uD3v z(GJEb87f|zZu#rs z>1iR9K#k!YC4WcYf(%cMXk_T97a#0LB*73e1%4y=fvHmYxC>hQ(9tyq2yt=7(B`f95o##VJ0eM|I-m%Ws|H0M4mrs3ZL}~d&fPF5 zIB}SM#}geh4e>p(OhT1}6(+XA!DpEb0vg3@_l`z?!2p*0#~!7${COQNd+;<0hi?Bs z@LUX~UqsZ)#bUx=beqsflJ2k-ASJDLHj~t0#YW%Es0JcH;%b4<(!3#t`ut^ zWp_m=TVq@aEKWK+Ne@O3YD;Bam69Lj=2(-4z)6_SXMaY014N2UKy{H&#Zqp;bS*B1 zsc@u0yc(sN;woc^Qxy*AcW?soYp{-^;9@Lk=#a!$V|hD4tKd~9$^+05PB-grTO>>o zLxNC9WpR;ono{t9IP<%SsqcFM zumR+12Ej{+{2Qzp(QUh|l2wfKBYF%WfYiK#R!$59%|P8@4vGnE7aUpK+K6Al4e|{+ z>yutTZglPcckl6kc$H+XwT|JJrRLr@u7phkT1}kee)zUnui#E%)EIGP5FEnY`YDbJ zd~vr|n~Utu*E1N{To4(kccedK$WducQq|s#cv}`vbHpV2LScolL((t(LCPo%yMmramXx`~XwsUapp+}HRN}w-3HW;Y*b!jXD$^jlxJi?!|%&|`2-oY&|) z(aw|$|2QiN+2YKFv??kmKp;B&)qQmY_Z6feR52sl;Rb?ymK1(1%V0_wBwI~q{7!q& z>x6Xum5VvDbQ)`I?hqT@9f`Y;be4UQUHoc(#ZE36alOTf;!Ovvj6%8{Xr-dCwke> zRcO564izy7l?eY3hS_Ey3&>{!7^)fZ?17~H5N87UBs3N zaMRf!qr!}Siq%T&rJSY4?ee|2CW257~%zsnN{o| zitqH_bgasQ@SsKGwj!7~ zi&P}YF7%F^!YpbH`9J#e);^i(9kIob=xvkC`?zs|Sw;qoBB~Ox+vKjd93*zh_@Iq57?IUR?$#uN#WG4&Fo<0@W(;AUO<_q(E{Uex6Y5- z68aUVJ>{`J4aDJ6Co-$dolD3 zhLrqY_wu{k{uXr-j$@GP@OKm~5uBCsBrb-SRjx*{`iCsDP%YxY%*8>!!c<7PILi!o zCA7nzk4@bQJEATSj}3`zd8lScGsJQgjS5WZkHX|d>wve1Bsj!lP)%qyY+M`M@KKByba^0Ws(9-2NH`r1UzqE+VjjuGU525D-I^d_Q317;m^$ z-F=KdCp`QOtrN?_+Yw&c<-BF$*D8x5$$dasCS~0+noflYCMvFp3nEO6)i%%yIUZon#5zg0EgsW7;&>IoQ%R;3=1&LvD{t#lT7EH)453?5)T z@yzTd^`YC_*2DHnvbr7jQAWPvO7&=yt%RbJAMxWHB{z{e8&3wN^R3O{5)_oRDGr=V zp_ycW+(Ib;X93+)kd=K7YSwzkM*9*qo@tElvrLj(9uv1-{WBKdWX5wbs&y1VvKv7! z>w`Xc1I5;8u&nUBiGG{EuuLM7Tn%ZBKQOK=$z;nzcfWq|dNu-n$Hp|egD|rRjJ6ytggz|G#j%;ZYU7#Rp&bh6^w447+R2B{QIu%Eso7xWcqFu8 zxiOXN%YN}BQR@pHD+r1xZTFXGSMc&f28L^RJj1yVn#$9Y2QA)J|A=@gl_PUgqLdde zf!PT~A2-VmoEb^NwU%e5*LieM~({oM7?tq_o0x{D#4j9 zLOp!*JA2I;4;F7YIKLc$B-XE23$;Jh(3B9ny(qnWA88obtsnGU2y4MF7%H)8#pz~# z0v;o0MZ;7moJc@EgB84~D0KeMBNN-{;AKsoc;rrA{33);GBug#~R zT+)Ym*YJZOc=Of6AcgCiib))kT(x)$0$em}!C)ycMk?`B0$qBXiG6w!787^Ge9n`)EYi^iV#WeXO)QxyB6`MgPHeW9#M<4{ zQ-<9Q4>SEkn&_ZGFE4qzny!4NkeynKXF5PYZoGU$)hftWEh5Aj4;G5T*H=zky%0r!?h$$|%5mUEOBGlx z51`8vN-Q!6tbH%E&7;brQVdv?J|I!S&1PL9%;^k91NikJ0Hq#r7(QeGjk_9ZN4QGi zJ}qDX*2X^n!k3`@@mJtGPYuRvW(@BD&9_`He7eMF;U-capz&vVtx!|yZ6dwKAWQiS zxyP3HFWi}Uv^x_Xm>`1MtC0@hR$UC6D%Pd9FqRY!BXvGe&qr!60>TrxwA4ffbD`oU zCG?v*0_y2tPhc_fXqLyQVOP~}aOKm*eKF6`!%+bqDjuArJ46W>$sEiAa#<{io!)VgCyk&-L*?7I#p_>4y9$%> z)0+t@^4fMd>J6KL-6a|JTCarOz*`vUNt!FQ9TZ-9%e)|6L@g{KkS5$z52z-lVs1Rz zgd@D|7fJ$k`HG_U<*}dAfoWxj@(hj|?sbW0=qdht~!?DQZkk_LXlPsE{f`WmO=Iur4aq-k~YsM8Qe&Sjq*+DGpX zG3hn9gJ)q`_xQtjqKl(J^aD{D`;tPh4+LwuPCBIq)xJd!EP8xlq>Ur=Lohvr;Duq-q%e4jeT|k+2u7%@6KJZTF*U#b zuljt@$?`28GvCX`K{VZvICovYDoo;dW8uk~AX{D?})alp?ilDFip>82qLY@%$ZgP1r#} z%S}nYKQ@H-W<`Ktr4@4CvB<+qWDXebFct!~RQLcep#VU0_>ORX!@q_?VZ7l!&fv0d z7n8Hu7I3BU(4}T!m7~8PgQrmsPFenBxZ_9OiQ(7!=oJjqE>KW?X;QO6XO}kBh@~He z$xh>q)3B88fF4r55Rzh(FL-GGil(6J7Faou7oxqHKEJ#+Q1XWGeY5)j(TOGUx5JZM zn}C~it8m&slDaLCccRfD*%1lx00~u7m=c``85ilkQ*Dd)#}6ll;DMY**k&;uHMm80 z2kb(04rjch!J2kaD#b%^opc(59Eha6pdQ-iysE)2IX)r})FSP`dU}wJ!IL^eU$Ne8 zaM9}vg6uVR+AlE*SOJcejW`4nrM>AaHiyK$F3McE4&ie@o=X>u&Lx`dVZ}7Ex6>|_ zVoFfcMXQ_$T4JUC5&h&pBczvSR}NuoY;6@Fay89lff8R01R9T#NqVqG4R|fIk>)qp zgYdvY4AF08$d$vX(BuL&ii{_YU}ST%QbE6h_4gOTIM^Zh(sm!hoqZRIMIWGCv`z}( z$DJ=$@QqUx2Vsz|Q#96K-kF@;dsOCmz-sj(G@THe>DeJj>iLR`YCr&0_550_SwlO$ zL;_S$y%5j^J;0k3^&a4UNNMPF2Ox6fYSI?WHL4O9r(t%sNElRP=1txL%1UtJeleBM zLme;nio7Ls7DK2>brqyWNMYZ@>;(1nUc0x z*6YnNOL-z4hSX@nGGIb5(MD_n9K@%c_>AunV47JPBGWd#`5>z705lmV!)+dpYFuh+ z^Kg1-XJzZhcvqtlUGPPDg706Y7O7Q=yX^>7SxL2nzgRmTtK%ITb&&R{cg$5H&7H}u z(qyg6Y8`OMqX4?GHsjlRgcz;`lTe#dY3QTaU^YuP4E5RE<0xLVUF|8vo63Ww!k|Z- z8=-iQ*MZ;1su-u^1lUT)&uXwjzaQvg^#2IK0U?wHrA(DW*a`})-vYCmzCqvK&f+L2 zJ+d85CD2xo-VnZH+h0q-XRext77`j2H%ph|eo-eOiv2I^*eccz!VLh4mwCwH%|^~V z6qpo5rRtN>3GiCsW?dwf`^CiadYTStl~lUfuFW$I5P(;xy%on#mT$^)*juTdF%$_i zAz)(C1E{g>&kZ0xwGp)oCr~&}&;*!jff6en4bZo+>G3nzv9NLEAR_shCP+6HbdY}+ zt_+qge{{PPy?eOw8^Lf1n`BKtBKx}{_YuuB#!y~BcEf&_m4`6EOSga134+J@T6$>u z0ZO-?15_oW>aUB?71ArOOYJcs388V6o$*LLS%bw$TVCE*%w!e>g(Np$^G5KqyIB$K#Tn4)Uf?6x44j_@qIP7Ml|OI<0sA>YCH=5nS27N^v5?hslwO z=8Bc9R3(K|DM48dCI`7o&+>L;8PI>k#9{4s$WpTJ>|XEQiE`4?q)Y~r}MuRB@vOYoZuWJ67bq$1_QJ87U^?-V`+@vE- zmLY9b3gN%##g&EIhJF=4b=+@;Jx$i!T+N)r#sH1kRBDZv6jb}U*qO-fM` zYn`^5U>l5nK~{h=iw+j9dxVdLyHkHf0+CgQy{3ABq2sb|oQ;LC>rSD+U{OlbTXoFT zml3jeNIs`?R1@8!vJtUIA9!l4ht1#gXWq%NhO)}d53~^WT6!l)tVXm0+c%j}X|ydW zM0|Lw1??Ffa28QAhBA7FEIWu+MMTJD&{H10&3^@2%-gRYPZx`4Q`U{}t$xEaDLxNI zRmhq3jEX>JZ25#&?Dm~$CD6Z(;}Td87p3j|Cp3^b7INC>yQr?%OA!l&C}mcF6$52Z z;>XU2$YsT&C0DlBD*cIDl&kg|L|`D?lGD7xS&G@aXzTEn#Y$8pvI#Q)J|_7da(pBjkQ4n?Q#h7_!NV1saf;L~~GusXG-e$^3tP7gYeU z>;$6$f?t85AjT`!m314S40y~&WjG@iilOVOGz_-#rHEx)8JSwQByCt|Lys2X#3_^p zYPy6ZtKP8=0$DJoH>sxaPE^Y={D4A1!wiy($`-oscJ85d44yBnk4SBgj4HK!xYd%U zS*;}x9;+0CI7KwGYrF<0rwHl}&1wVP={?-O){mOJuGQ z)Si1<0dxYNPLZEM3sh(-^ZYg%$XAx^KIY_$ZX-SpT0JJ85Bf$ycN8QQCql90*N2Bd zd6HUEEV%4Jdz6mnV&sW%&U4Hf1#%Y6%7mLNjY<-w4Iug*+gacgEq&PJ9u8YYB1y;1 za@*x|cvmxirl=r%AIdxACn{Q*5yY;X7(H<+v~UH!X>bJj)K+trRSTBcaP7MtaIMRh zE%@Qz*RDbu#Skum7@5t+@sU}I{U$5eglL3?`v|A3b%6hJ1Nq(w8xf$KN3 z^bk#_M*=bv`1VRJA^J%nlR*B?V$RYuOp6JWH;#c@m{GRWnq+C*V?7DhmC5#8G^~um zWZ9DB@$wn!d5rN$JrPfIWAl|~FQ~ymfeO}%RLMS7uOfB!#lI+M3obp5va~)M zmFjIrr9fXKxk65G;~v%rDuhbB4cvY+S;U+K1nFjTGr>gBLdpiVNp-d=3DGbQA(IPc zvX2n77`~+4m?#)+EUV;r$3<0!R5|b)#gCxfWV#Qo+w+T+oVI}XSN|U6!h#;iA)!7_ z9m-gv`W=>ptwNZQ8A)2Ny!s@e*+yqpD2kMa&-h$w+vBmeWI`tvqX zRyKsf6v6SpXLu}7P0SB8j}x(oAyQT88P(()YVrI_#3Fuy+n0axb*-XWvfImeg6u5F ze0aKO&Xr3#OXdfSRkltmG-QPd;qwE&o=HU-eZ1Q7R#w{=eVdX%j8}?xt=#dGsaq=8 zzfIT4>GTm1tJTwtm2T2_1IaY_+&fp_%8q`AkmZYq6_lBBPvsM?@)VtUm@W1qzB-#q zyj9@X%{oHeNx`^Ww7PwOMAG4VcgizmHuat1UuxpuZ_quPz}Rf#%o)Ve&U!RF1S!96-9Yvg0&^NrEg>N2rIhhe zI1LcV+BI6J*w!QU z+BSn6lOX6)g61y#j!nijBCq0)9OT^$R>OHO`!Ep=pJ{(vBZ9$3$8b-T3rCw07v!hF z`m)cc(K|=11dQP0Zk^J7!(ow*z;5xsNOz3qSm=hJ6{dsFwz`Tmp;}0+mwrIR-jKW) ztuiG7>G=`FDRn5Y* zrd^5Wv`Kcw!YPn6p2GMy|I&NoU$PqMSaWUXn?aKIH;*pQVy! zj9o{ZVz5SK-WcbPQfJYHvtdN!2w5RFkCL{Hx&PuFZI*TO{bjd=hYVuTDqtG|nX_%| z2m#V&WM$0afz|X8hFs|R0aMU}tVd=?7c`tzG(ZyTUKLG8?A?I5H_U*iIcT!mwwnxX z8!mC2o6H^^BQQw+0&~sz;>Kt#dMB|u38%kTqFxY+g55Y7^e$M%Gf9prEMKk%;sk2B z7Rzbzpoh**%rnm`I6=sob!umcoxGnyPx8voBu^GaAp{vFZqvBX%%#%f=6Uf({H&}7 zcCxradkp`S@ibvoCO~Af=kS8l(~RrL<`IIIcS;?hr9U;)jT;iT_I-(HM#Pl>QC?=I z+z}h$b(+W6Ey*Mx;4qap$pM;Vwx$F^vV1Y^;?F)*MwA;Tft)OIM>#`?EH<;Kx!U(q zZoRE(RIQ?xyn`7@+(kGOL;$D=Z1t5Lm!uJs>VY<+2V7pJK-drnoWL`S;WXIj{#uOJ zT1K3T|NR#|86-cj1r`d^V|R)PJe^o<9(DH{5E6?q z{Lj=`gnLi)y~3|-WiEqdUFJd0HWHmRf1`BSCWj3U)D0CujGZ0fWIng0Hn5&e`dWD! z*vayj*at$~KOWpa)GNPT-g#t4-m%W*_=eUH#laj(0~%!T{D(sEgt-gQ<5n8*F?>3p zIQ3B(*A&eTx$KZ4 zLKfgYOg06F#F8uumXpf41}Pn>o$Oalx*b&&CW{=#bof}S_I9b1Lfw_B8&;gFd1QB75jAUcb4M+7evdS1?dU`} zP9WNUKyF}W8QBi)G5aT;lYk}J030Xq!RH3KCPQunRmhACY3dcz{1x}I@ck@Sx2?sB zX$d#*pGM0hvcP4;&9zUWNN1=ze?rWFB$UA;C zrReld2=NNSi2c_^c7**{g|n$pF+>X|)Q-Gk-W#P9n`UMR?s@np%cp4zSb-$m<^-kI z%n|Iet!Os)Rn#6Jwggz1uL@qCHNrA8HwG8?{EgQrM<~Jb7#QkZ=~#}@nR?I+!`Lc( z1TO*Ip+(yK5y@B(2d(Z49Mqbl0(F*jTKsxz&?)*99?`GMcB#UzV0hG1`r%KJ~>B}BP%NvH7x76mf;lN@_yhG zT9nb+Nry zUU?SCNGu*a*%=b4k_G!KgIk?WFr+%4hx!h;lfM1YioG8OGE|qZ1jmvOr1^ueC-sgB zj@$)L+t8FoVs89kZ`Qw-7O=kfM|!ARs$iIxF!mOpXIz5cA-<^O}- zjN|`=_&;P%9tC}D52xxipgF&0k*;ocx*BEQ`TS0Toa`0Qjs8hyGL5z$qbuai)%Pi8 z`HhXDMN?H!lT^3(Z3@kyn_%xW?bVAVoQe7!F_QHS9W?2>de=>ZhAcaL_@Jrcpe3&b zX-BlOVyqi$zdX7Vfb@9~+&h6GC`!UPOdv_@#PY~FtPm?0Ow`|-z-2o`_va#^-kA#% zWiJr3NLtSa>XIBycL$My>G5g$zCueUO!;}DovOZNy#wKYQIr(f#W*3K1VZa4#C(2G z%A^-yz&y5ors0GfY%!Y{B?br@!a9HiY>%dtJP%G^l5C7)Gpm!#oC*ULT=X8|liaLS zStwwHdQ)LG4Dn;)n|84TGMKq$n(K4A5wj3g>!#TNH%P$JQ4MX{U}W7a zVlDH*bRRnekNtThXa$}Lf660ABjS#+DZQ^kDk0gGCh1%4NEnz=dokDoy}f7ChEZP2 zst=VgJ$`5~HL4YKbW`2}pfq<<}`lWFS1aPf0_!<_GiX(03&7{M9Ix5A9`2WpfJxSV zXnq1S{VX2K{I_HNqlftxzOSu{vd2s-C&E|k*oEI!T(E*6g@Fgv#l<@z{tZq83eO^^ zJN-Ks;4>QeM-5Oxzv0#t|Bj&qq>Fj&n#^4?RTMsG@@nzP^?;3L=|C+Ludh43h5;xu z4bAI-C<|3_r<27!eKnxC!l$ykjdCu@W-}Q{XQS&(i80ebmFpUI=^w$(tqs*+TWPrA zW222RN}K+aHTr0!CiX-skO&)ji})&ze-t2E%Q?IH|0e6ybHdrO7)J=PANU#6TJeRKTA+KMPF@v?F_6BnpYG|ndOBxH(cr7_a&UJ>BRiSsyOLaK}KtlMH#Evc6*Y- zi^srW<}%OH{O#-BJ1(Yb6)Xw9YiBS~0}v4G>Rkb<-wm~M7!q@ORz@+oo~{>=;=7JW zc?CpZDRs##(`ywv%Cv)qPiG(k%%+_Tf2u4`MEMEK3nc&3S}@6HGWNb;Tli|vAi~&7 zyL5I_W7|b@e<0U_I^^5>B?#Hj2(J?RmL6wj4cG=E+EaC-`|1suS24KKQCsgC^X_26 zGbR8b72oj^@ECkL@G*_h!xIVI+*2NSK`T~GC=uC@)fQ%~**yY?s-_(fTtAvWBKtxv zUfrB1m!~sDTcAo`O^z{<2YkL?d)e_RDHMkqyd2n;MV$q>toX#k5cWUB;qbO z^Z*!x#Ec4LfairPnvqZ^sm9B=)Fjc@i^Xs&MX(_Q5Kz9}K<&M#9$+6QTS{Q_iw{VoB4eBt~ zt$d8pXwwZ1`9C?zydMmeEkkrMfWquOyXoGAaJHfgsNQTQmUdK{%|siP>^__6lMm`7 zZ!M-_r05kY{Wd+{zPDqj?rmN|CZrj?jw8tewM<4>4|q-r!TpJ)?|0m8SCkJ>sJnps=@xD71`zfrf6n&<-Ko zsU=9b%-ix5^johnCLf(sS;P_zAAn2ADma=%Noy3Mom>I_7wluNS7xX7OA!J;r=M2} zAy?!S?N+TbRqHH~;|Jj+rhx6wuL?H21~>?GbP6B0T4wIlw}I7Li7YTkclJdpxC6yU zm`yJc)H^ZsW~qecxa}uio!+4-LMW($eaQW7w1sBdHTQ10%` zcug@K{P-SL`1lE9;)8Jh7DyN}Kr>7vG-}ZSP-eivzeccPrH{+CaekP@q7&0d(;^Nf zA{1b@4{zMRH6R~EL#7&OC)jl`q(b9S%<<+tyKHuy-=NY2A1OM@AS}toLCQxkkz+C` z{4I}wG$2>$%*6K4MGn$y212 zGhcW=M77Hpt;>t<@Z8INV!p=#8e9`4NlKrX5T1L+u@D9&Mm;I}MUKT`0}4e1#(*O3 z(oM42w!`YIQlo>Zzr{#5Iq|zW7(}kErxD^uP@X47B&WD5$B!9sCmb5$bB+MfY9=VCaNprxWPg;y8f2#aGYMS`>_0)8Eov6ZrDEYs}ZKV74vN_;9LpDvU-z_xlaqL>g=Q62xzmE-UZI^OAS^AA}4V2!S z?qs<{1`gCC&onJn4GYt(kV8Z*+Lo^HCpvrMXcRv@XmTiF)Bf0+mZFX@0Fdr7k^l)+ z`Lk{JIP$LNA8YN^BkU7I8pn{%=)ahXPAi?s;qJv_Pl(}lXAQqts3k0st%{M1V}Igz zN>3~TO^>o)3kxur*Qw`8gCy~gjS4N2cq2AE2GOml^?16MntB~nhN^7N1qK0|EZSUP zS7%j{K z)I=q(Wvywv`gZv@FhzhA45`Z3WWY<=Kd- zXq4_o-xeKVg&zlF%JLK2dfa>s!BYrSNq#YA(y3&SFVLw}MAgnLV|2_DA5(4{2)d~M zdnO&MB&vW<*-3)IX6g|mMo8vR3<{bA5kV@AZ6tyH%F%Il`a66}Wx9xQz!_Z;;I75T zP+0z<28ZhNqWc3#z&e4AY)~|Z*t8xtTxc5f$!zdEs`CJf43H}VJ>@(Q*IX$CAqqSK z#&?U~wUajsYN=*!QfY@}Cz+k%gJuIfo*#9LEL#N*3nOeB+?7epqY@D6C}}mLva&7!#iHwcYKkOioJ1`MRz3DjtkxDG_uzKc)xI@U{6>hOO!%mXpDXo zG`-KcWJ(?xL1EFT!3j34_~L6sSQkPFjKP_nIwjn`_Ejuwa0O2e;ef!x^ zUACGt^Ce0p6+TjeM4(FPg2)s(0tuNHc4O6k`4S8`_tJR{x>FU zBI1W2s)|9;wdm-`n@d{rP<%5x+|72o8cCmG5u8M46<9>ERBx2D6Wi$=6d-Nsr0{2` zA$bdjHa0`%2r$DnkK!L#@#ZhxgSPa9DlA)vS_nU($OkbAIh$*=poXc!vnj!JgO3eR zP!Du1$I$JLko~LW0#?8hBy2#_o7QK7jhv3AF~h`0k2|!=L}tk=1VwI(njh$6zkc0| znZUMPBxhK#(92~{^nsavjVPAr1Q%odlJBk2&S4w1e2VWtw@$@Uk*UVsFM zaQN`0a8z2(TFEN998qhStNjMoL1u-0NemkJ+sVVv1JslN5qBz24W&uy9M~{>(_drG zHn@I{U5unWY_-^WCu-4z4r;}GY4q#v0wfc-EKY1WiIF$7ETwsgzg^;gT6@NcjnO1U zTC7ztftpC$z3U?@6am60>0rUr!o*_);7S=1c6Z`hDUg|F-8P~1iQ0ia(J0rF9y^Mz zJR@c)2!?MCdEsoIQSaiyOw^HAj+v?mdXC2VE4M5l_(-4Wfwfhmva3-~9D!(|C;bWp zvplblctfI5+>9;-+kpu)6a*TAW0QY!!zFU33iQA}w5aNQwqMCMaP@KmS=5@g870Ds^SZAHD+-fA6)uV5T>e1oVL1wjd3q?dXSAtd z)4wPr`M7>%dYG%ZDwSz;gDFy+P9`vvUhM3+vS^l$Yehdg+Z?{W?Nu=e)-p7|nSv=t zxe!oiEV+UftkH(F`3PP|25wkAObAHwM~mq(FVHSFqwLBPXm7*MSL$g&zl|?35o;k~ zA_4N_&-dG_G4yPd)Zf(I67} zkKmLKNvT}~tsbd4s3s>~a0@j{5No*)RX$XEaYI=J7E|W)jZ#DcY!g>)R)>m_2{!D< zrGXrz*~Kw?2|)YA&nFE(2;0J#G=d<#O)!DyB|5*kM71fK-5ENTcu83gr(m%(MKyyK zvc`DCHgQ}A)4=IjDM1m2b1xvqmOV(rL(=}wreN=SMEgt`)que?#6_34Udvf9xM{KM z8 zDWh`an*w&`etN8Eui79cb>39c*TGaQ@1iEgdF2zS^hY8+W~0RegXna;tEB2`mMf#g zO!?PE8mp$^kAWLV=!SZykyTaWfSXgv?=tLN%p(yGD!!$kl@(u#^3tKmghBL4CEIqG z>MOfsJ|nz~z6nqtM8;Mu1c#y2tIP>|H>?$+`}Iu|Gr&qq(e6wmQ$bbG$_^z3HcLr? z%}PmuglXa~vL@#lg0LDGa*Gn%atoZ%e4+;p!a^zLu_mqN>1Em`Q*_=efv{v`ZHFgI zmgBAfCC00Yp=O8hbukpKkfSDYN0);E?o0$Ck?x!axMOse=l^DE2g2Btw|oz5aJ7fP zgwnJNtA49ZhrDvk6&P4qiczPd&mr#!#phTXW{T|#+}cVF$r0E!or(SB z)QA;5UO5nWsiATaZ2Sf}OCoW>@xY0*l&S(>lJiwUvifAllxh)xsw7d8vp?xyM1wXD zcvOly5sAwVg5!q;N}3q&k{NE`{Y2jk^-OF72W0(GTQ?5h6HIz-B>W>zRxHp#mPUes zq7?l41tkh3590-;%G6T~s4EwystE#A$)>va9?<}%n>c$?@in1+rlOnQ{0p_ZC|P5V zkX8H_YVM4x(q@EMydE54%_A0~F+~wx3x#nHtDKSrTmz37a{*R!npetZaZxf0{e*UCnygUZF_GBHN`w|d)iW4McBNHKp&pq6(rl@~9X7@=MANxnqr{FS zO4uQu7W7ABYErnQjAkOLC=S4DHge;^*4oT&x4{J51Sdc5?1-Qqi+aiMWFnM@a5f=S5MUKSr{aUR8>ao&V0VBdkhjCpiqEPg=x}eEYBCH{c|^;^gs5BaYIt#% zQ3T5}J~$y%_#BmEtGJ80WQk3VG;^SXZRcHiz=hBWl*ETrI7mqzXd#iR(7J0o%bFF- zoN&z(-^~#lEb7(rBZ(1@M~hQQgD!b@Qd@Fr4-g|49?qbZNzLs&7O3wiR7Q6KI9dZ5 zIfo0e8y_gd?ywM>70mC{Un6xYtG{L%75UE2^6U4julWt!4?Bvl1Mgt%wG=F1V9}k) zX!FH)_Xw{IV>bv7L#4$4HnufG%0&b`1F^1W#$bkcR;CUH`u~V~*RD3QWLx|FMQ4yH ziOWZ9WEW-1aDZ~v*x>yX z$|)J8qr4rcYj@Efu=LPi;Pgq%9;o~zzU>-yF}*GN56}WS{j8L_QZxFcn1^EpZb2*y z-i@6EK@CeK$)oX7W1^F-zz($>wM`bkEF*pH1v?E0c6l-XUJif1oT8ZMO24=soh;6Q z{|yp!V-^ecBC*%??YC>Ipp(Ikl zmjp=A)=1{I5o*%OOnh z-pzO=KG_k1P~>=dTGR5)p2_>evqLLqG>uhxU2NkfGSlhFgeRN*Ia{nEtNBWcOrbn+ zj%qvgDhIV|!gAXw2MfSckbqZu%+M>Xi65-xMVIj1t{!rM5T!Mtt`GK@aXD(U4(oKV z^*ZW8Q^2aO*6PduK_^ymWNXM+w8mjdzu4cnYVDL=`-^33w0rEVyPGo9T?UWhtlNQu7&C)QS#8DP=!|+ zwtinQwJOD4Q@SPEh5YC{$ui1)W#K+fzNeMR33Ne>>IzCy*R_kB6G%)I#20%UufI$; zGe`fUIjxq2fQ~b__A6xzV73l!35SgMqUERD(G<9qyJ&kuT_TM&N!>X*)qM|aN2z+s zMw9+<2+Zh|xh8P{_8Tzxz7`OnfNeqgCOd6G(3+YBM6QF!lQ*R*pB%2tt=Sks(5RYi z9?LW~1{%pP6dkhTriBC-a`uqf}KljQ*;>6B?qAo5dliuL78tMV~}dGowF&FzCd6~71iUc~VR zZZaOu1pqo&<)ZChh&NrYr4J8dmK1vVX8t2b(cM0F%z$z#XRW#8@x+2ItNj(#lDltp zX*ZpPCN$M;xTr3gwRW1eN6YU0O-c@^BrYsxYTRIu17%-;k)lvRaP%_OHf<(y@9}EqsOys|eZl z%&{jhJgV{*1GT&O>$iGdnuIp`s3^X3yjkJP!n$RV<;Fv^LKGg)Zg6(`a3~ zs;huiI584jt#YoB_syhFI<1Y$L(647$PRqvj{Re5HENX#$hE7{v0iizqS3Cr7WiDd z&*#FzX>OzK1i(JZs5kxA>8b8+1n=}!$iwa$GFkLRdRjY_Ie{Vd-?-}YmG#b%bdgtOXF9g-okQxS zuIe^4>La>vPil_HUbn9=&xybiczIOsrD>N&ttKlr%nnyac)8`AiG`zau>2A2!*qj?^obHq!myp}ZnP`T6o zt7Ro>(6}v4f(_kSyjj$?6E;^u-06z-x{Y?clPY4$uZPcZE5 zF{l?3etdf)I0EY9MZyQkrZAqc^l+3vpX88E?(%CZ@RWW(>!GO%e{uf}nQW)@i{8oH z$vS)!m^vDQ#8(stN}JKCCIaJPe{?AZw)Mq*#lV)hbyy-xIOQLjf3ol&4QBw7S5ydj z%Ha>NoF2mAP_8bBw@@2mSirH#Y2~icm6nWSoL~kiAknS@hV@Ch!}JHWw2~jKb~r!` zn4%2+NgqNQjVg1hN_9SLh}NH>npCRIU@yT>l&4x)c})$P)0FEhdS8jlSHwLLAn2W& zceM{go6xft@;Ox|PP$xD#yl!7pFH+graAl2HhMPlYVYJh2Ax0_wxaG}g)=>N)}z3R z-YQ(-D zDBI15@I`X`uRmF3c{+WpAa72_I)UodgN+32Fh2-=gB~54b)HE%btkOqMwYhNMY2=P zThD;=JRzg<&%fkwd5t`*lcocr|?B1Qg~Ze&>@+~N2Uu!5M;wW26pdZQPJ|0xMGZePOY}X?U^|tzmCrfpxSBQErSTha~CFXwtbkqJ6q-__B9KwvrEzcw-6hM+hCSGKw z#R}oIf*vS{2M5Lp@(2i+;yCh^-cfcUfU-V~&j0cF&fp9^k-C-L{_^GF;UNT7k_Q3N zOQdQ#2w}@K?|!~~xq9J79vg9Hy6?)nEqWN;1Vx09=A~w4rGKh&jS%~`MU^_y269J+EiZA7iyk7<3glYC z%|hA#tUdyK*aZQfNAwTlTtSp?;CWl)n|wB2Z|)TT)-v_IMGL439Q<}T14s2W3nAjY z)i9FK#?o7wvmhhh?2(qHl-=EI_R5;nxY`|@N1xz4>Z`zzsubOISA|{0{eLR#k|amP zpb5x}rDMEcRw?PFkhwhM|GRhmvjKo6wFi*o>VqsB7LE;<=%SG+< zmGP{gx7H7Mes=|21ft16<1Rey_izM>GAN|w>D79$ex{$`^!MoVHYh5XFx2j-*YBvd zO!!BGaqt`c`>OTQ4xaumi>Pad)j+tS|Ga|GNkLe!3)@~Pm`I}SG712!kg<1X2X zT4Z=sB`jW-z@5ToZJYh-@VO5^<9xFCU@l{v2KhwI)CmsTxWA43hlJ7Yb@6(zX012H z5A{xCDK}~dHqRI~xmVmlRq~IN42#lCYB)-h_H89|&=%@%Fxlc6{>jX7cF05W>Hy$p zHVA8Z*+vc|KfdK;TUE9`ocjxu%yh!-D^qIRR$>)SDIGA|t!Edzc2Uq~g2KJ2fO_ZO21&7d(`l^6IYs02N# zk0{f%@d9qAVojbftCA@19Oru$v*PU6{mLkdDh5fOXhW4I4-_BIXE;>ms|fqoW*iU; zO@{YQJv4U0$DWv#c}mf$Bn_Iq`M!K(YQ=d_?~$n*)E7Wgt3FxvcqDspeHv|zkCR8- zn-Soqs!h~<^^JkO;Y{eDCpG*ygMTXW57g5r(fihfZ308(6djNsoXbqi)yPAlC0@xh zcHojogmtDL<%v{3px^fjB+#XV4kxZ2E*(DIfCHsqo_kY3pn3!Rsp(=A(%Qn#Y=nc+ z==R5tqHu@9^i~->K6GVwMAlisa!Yx0Lk8g{kdW+BIYfzLQomo$ITVWP!NSZVyGLq{@ zGeJ1I@jiMi#&>M7BpH=~E7)ZO$j4DF^D3ws5aBjI=-Eos?YJCqPIS!^|sR(u4m zIsuhA3FNU#wcJ%raF zsFUgV^PJRYNE%!T$-@isZbYDQJOnfk8zLVvfV;Fxb^xN!FPxy=a_D<<>4 z@QZfOxJy|DetADo0GyG{9IBRSBTZYFmq4x&wYNi>xX}QKIU%aP{&G5oBwux(0ZN)& zE{FSt1Yq1i_u(l^r)qNE*3T=z+Y|E|DUT54?rwSL}uw{TF zx8Y9+lC(??1xwP*`H|71HTEv@xSfqHdGYIXc)C(5lo)-Ut!5)73ekgN9+)Kq6xcz+ z1|ci%lH%{n{w8(I`%_CWE6_&SQ@SDRnao3y8EHcs5?n*$bgLb=*VVYUawV2Km+ZBmDINuqctj96YI`?q+!r%%*ZLZEnf4ut9$8QOXE z^+g9DKkHWUxb^|#vvsb!-Dyb5+AG=O4>G$6_M9qz{(-cZdo<=zJyMgOdRdZQR@Ki* zVo)r)MJsA%<|IoA^px_Mg^~@kElx8Dvi;?a(dH_$-Vt_;;CBRPP%q?~lBelZ$@G?J~}8%@WSghn2% zN>p>`9Ug`>{WV=boG+)Jr|B-DcG(!+kWX1xj92y`4j$h=Ty0UqJKNn<%;;o-2m8}q z1(3>@l=>keK2KF#FUr1siDe%?0tgZGV6EjpFgq3+a^S!??!_CBdP&-~7Hq#F`rGMh z1*Tcq7uyS0FW*c*r(!7B;Kf2XhezHZtpy!aXa(PrfYDsJoRBSjT4@oTrpSx614AG{ zQ~951B8ZhF{g!Z%==?0Yot&MjyK6*5oL)ae-DR+MG6zZm?(1JRUGBb+QAV}5s`7H0 z()xtTOV5kr=F<6&AzSR2*pDK}`Q(NRihe2S;6sSwugDMb`K}5Ykn}~NIkoLRZdq?# z=$PlLAFT4Vd21wn&2*0VDA0oJjF;vRN8p~>EVFtTj&GmQQ!ack2d$n4uZtEmYK?U^zIktU4jl=!#)bBn{o64ncDp=Udr*m?G)b%g zR&2kMa&mSQTs(bl)JV{3PFZDkHnj@9n=V(T)(s3pV%24@dZZGrmC843Hw>3F%m6o8 zE-?dq?P&JAzIgb;qQ_KnGN3jd6{)wY9f4)=%IC82@v3@@_vL4^$78G+tl+P7TV*kk zP=5NFg8h^#X0{=8|4(!WG;sIG6RUWT{Ba)LTy&dmW75acfn~v3DLk2|v?Fd1^wwRn zVw>iJ(B5qDP`td?;nOfNJqm-D7Xix8zyV)^6z?n`qyP6-s z;~4d}nPSy}PKPv%lW&0Hi*0&}Q1Xeco$Fq%6{Tz%dXaC%(5jiUvV z>V;+-plVsl_}s?e?I;vcd*f6HY?9_sSO?%|HbT`s$`eBCDP{gNIlsS0r^QBJUzMhF zpFY8iayx-T^%gvdVUXOrB1<)WS9}Ly(=GfV5migL`Q-f58>y0;3y)5$nYwdKk+eLV zxnpi7>mC5_;W96m^JOlLco`9#Pc*p+Z?Ej+p9?Z86UQWiGzI>~H;_FkWsG>-92Z4V zunPb!WnDmgajyd{#ao=17Utr^J-{0t)PjKLV**yaxsWa3_^3$LG6x^aeuCg^4cg5{ z*!Ngj*j{-;>~y;(PHK?CNhQxY-gfA1ZJX_UibZ>_9Z`q(G~wa@M-pLvPcdGAItYJn zCU>wTdEHQY+I1cI1;gw0zxo^L^Ez!MEeZd&OJp{fE3YyKAbJGA);_NgC|0rLdVx{9PIL z_t0|gU=_u!01*x(;oI;KHcJ0H9uGZ9*zoS6x5tXE2x`|s946J5F4%^kfmn)Na1(u( zbhe`4wiPM|@SUjacTWe%^*p?{ba+EKRFNj%AC_C+=9C1Hrsq0{WviY3v_jm>i4IZ{ zhW}M;+0j}`(Q_<`IlVu7>?drXR#mAZWx2o+R_NwK!sI8sW6pp&X+nJ-16wD<#Q2MA zsxeZiM28Lp<45~z0GR|M8hC2;zf^Zf&WaA=@!vi?KS|JUAF9TQ;qMC3(Jue}3^B&t z>6s(;GTyYtpSf8Lf%O=s4|Rhw*9hVn4UUJtdO%Abf9&&6yeIwD(qSA4C(EQLvAJJ>g9f%OKqR@hGyGjMXQJETnbs(KtSrw&y zuB6-xrLW8u7yiHbi&9<&wXE9^0EKrmHsz2y=G8n)88Z%WCJ|S1nH*^I! zNR>lvf#JVAqA{1}!vx*s!(RKwwBBtT{0$xqJ=g1lj^T3DnmSOT!ROo9>Y*xdm?u75 zy@(v%pxc>-4E*2*M!)O^wqEnG^Aa2#&!*#*4gIb*IuZnsRpDkYPTK4)O0s3ZrevuY9T?(1Q?rA=|V>#W{smGBh9e7JVFKtf-Y z|KX+=M;p!iCv@dx=%MHNH@4tob*2w@x;c`<#|`7b*%1iplE>&Zv(9m;*gd>fO& zxy6X@WjCUXD*&_PnWgKZ1k?A2nEd*f<)Z&xWQ|I1O&;;P`8h3q{kLzLLm+f!QZ$N6 z>^?gH-HcDqXBzT<>M3dJ65EI-JRb^r$`ma-!Mnwy#dw3h<{Ky# znDlAWLVLmK_`x3BuzcDatH=M?7?F+1t_NXh9m9lB4#9l>b3j?Op{as6SUJ^Z-4my* z!1spghM{s}wfRwxKh+A6xCo8o!FnyO%Odrfq_am(hW*a9?0!mGrx%MOBP&riw17~& zj@=qIoG$bgWki^z8qca8wNpIW#l!edrh95uP-0S)BnP*?LPW!i!J_f|gZQ^)4X^#= z1s2}vt%Cs5;(kOhoEh!=Ux{t8JUpJ!@U|Xi(w>j=k1_!>7Xa^5A%u`Kelt5ta29dT z{>7?}-~vv7N=qMq*^9r=Z@!@3BP zggX1r?s`q`4{BTO8*vy;4dcq~92#1Ersu5=i-R#Zyix=v6rciRuTTg;(KDPbU-XZZ z4B)_muIHoA%gGDHq*-b}bJ|XJDG8qcZtzD}r~AkQ6XdNrGZ8Ad%15w`H5ScIO2gBv zkxSa`K`jqXOjlct=_0EK=g8#8!T8oWzF43SKN;Ab+~;OY*a%6xBiEMwudyXO+v+Rs zh6I%a+@9#w!xP|A(|-sPw$0d7?pfwliC8{T?tfbUhUms>wFF-atKz83BW=eZpT^2a z?Jp;^OeFopU0lO&vo7}CjNgEc=jKg_~v;{Q|;npyn29QGj(+Tr)XHDyzxnl26JV<7=*h~N6_e8EBO32luroC zX7ivH%c(LnK5lSnYTJYhhyrh(^?5+`3JHpfWSysXQ5}fyO`cS4cRI2nkq1%t!ScqS z%BjyR`Q6af8-s7ql9Tmc4>;(5{~w(Xmw11?00*J2kc5g@O8{ zCI}L#MzTsDk#Z40ccV4#Fl%1li;rH+>!zpF!EEbwg8mKjv=tfij*J5qb=c^-N|cJH zBuS4H4IF?Lo2w_n@CTSvj1Q<%4>BOFgpWP&-1?7hOX$DwJ5<|sg5O3WzL$KlGC{~( zxW`2=Uw4&Btush`P;@w)aekf$;;KcC*gW+@$2-*$?qceW+23TY0oj{!Q6D)g4TCd53i3=5$JZgc)*vmodB{rGvcnyN00 zvm3YY6W5fUwd@+L<>1&T3)!h#0Y64-+~cIZl6q7V z4o3QF!Q`gMno5}R6-}Rkg|H-*4`d*mw_KS-yky;`3JVQig_!Jk`RV;P)qp~g!Rd(%_)CbQTTX9a~G?E7$L6H=&U zS_h|5%&vNw^wACnf!)*%E4B$WDs}g0h*`ekPx6~*L5`ZXud8l=I%Ox}lS|~+FlHt4 z>nS23{_IhI^zP4(Ll^+Zn4Rfc_Kw7)3e7O;Dh&G-9e3iB|+WsoD@T4wm!93F)vWj|_{P z%m$yx#^_UaI9fUQG4!n~^~xa#3__SfEc!VC*K&myJU@A)QhUeS@m+7P74B_? zkU!7pgGW-PKl@?rAM0SV!cn5$o=9UWC`E<3V2zHCH-Q!LZZ;2U#-UJr7kg|v2M-FLPa_gJM80-S_FH&2crJ!;W zd<*mt>ianE*H>^T6??+CR(79N4B}6{N6Mqcq3KrD1N&XhFGk-7fzU=#lIPTSpF-(_ zgWURxLw}IDdf_a**223Vj(=U$w+d+y7WgiaGjn03v{>FZ)z_q%wEpODpXUH0$azr8 zE591ps7HeYCFiR9Y{nPv9z|!bB)U;fzTuBiR9r_4^SB$0m!F?i@X}o&tc{9g)0!k< zLHuAjq`u^;A9&T}__ID7E^#g_96m4-FH>Hp`M0+1uMSN{>;QV=7Xapzx|H*!)j^<| z6P6X{J*`hk;jgFbGzXoN==0OFxe&?`@xa#+B1#2TfY5xH>S4f%i%%^QkQ(kT`sO@LJ!`qM z%uA0(ohA|L$Ns%GE#TNn?PVf{&PNwXTCp znEYxoz{4+!g15UtRJ3e6we~C7lM3Hf9NkRU-={ELE^8g0w5e2CC({N=ER5w6LrAz_ zc!_1GQ6qmp#E*2TXQ34M!%PQgP`L9!_&o71C6;p%~5CBvBX z^1lnDEFu)$q@2sqx6|tp_-R_9Y1*YXjzpU)u_x=*^6D+$LUZC>eE0Boz|l(Nc}4j# zrKI5zTMI^XvN&1apY1IK+$EjHOqmZ%{<(oes`7%*lK?wR!n!OK>bRwX1OzT9xljje zZ`4#AlE(RA#<0SK>^+z~f*_@KGRs5B9Oa?oAHpI|KR-#k;UN4bTidNfwZe=Z!SNs6 zk7u-`kd~Z{@qN*)Go>0|MhwiEM}LP;g>uoo)cW;m8oG}Z%UdE5xV)q%X*|o$PAJ@j zuMx_}XT#rKXYhObzs>n9zXZg+-LkSeUSH1_QEj$&-bm@UL&t-wYuC^iRr7C*YS65z zh&5FzAlj|RV5vG#7xb*jwyLhh;0Ni6geSEQXvQk|7wD)urwVQi*6`#NSwF_kE6A?m zKF=zY5e?Ty{~EmFqxrsYDH4vIA;va%>5EzLmf=a^hSer7IERMQ5`W8+(nX@VpXJG9 zrwp`3nwNkYZe;~g2TGzzyZ%RGBxO|KxXew`CKz)NUCR{A6q~c*QsJG`{);W`TFHvQ z4Mc^IWQ>(gYBFMcnbK#43eY55{2dc!YQs7XHgf zq+sZ4CdiACi?)#$*K?>XH)z@dgGVzM76fxi=#;AFjso6VHT6!4-a>6A*Yoi95j{i- zlYINoJJI;$CddqNk^8I0CJf)|P-Qx`JMkez$ukt-({N%~jfc3Fq=40kWyKZ2Oz=bM zIJL6Cx^?--ja*hJlAmR?tXR5oti>}+B;{+~r3)o+^5=ZJO(@~u`H7Pf4uGc=322>jFsrZS z9#dT&j2!#%VolD*%gi`_ivpqq`c_FmeYt6$oSujTiagYR{3V?6Yaw=yP^K&601+rB zPRKuOSQP&#i(MtL_Lam6<9f`*L5lDVtZk>OQYV8h>f#^YE08|N0gE;H5jxY4Dw@W4 zRL)bgj8qJsp|Abp3O0>svh%X0EJI5(76(Q_DvaG!i*gNoS}yS9!J8ApGB+rI=^Qgs zLr{GW7UcG?hdz6XmYDg zhK={9ni5PmyUYF+gOD|!A8RX@io96|r!GM)l`>Ql;$E)pG9GyhTc;Ex+Gb+XT&h#(gaQ^-4Ii!LPW2^AInd4I8QB;dT<5?ubB?Gq?O%r#B*njsYv|COLkfavK6E^n%WLw!92fUr_)Cfmi$qt91cC1t$Mw7 za(g7EE8paj$U0}7Whs?7XqCB9T$}!Ha$;Hs4DAuB2aAZ-T4UH(N(mq&`a0WGyG8Y` zMFo@7X}`<8)cUBsN;JU%0WYNkT~bljhqi`(L!P>UzveiS{@s{|`-Rfrmxojq zr0Sk$;!*`HMh{g&WS_CPaf$6n3iQ=1ZQh?ws7Uu7vjVL|wm`8?E%S>E+6-t_K>jl) zNtK;MtZ+88OTXyRIm3)wRcPquHR%)v^5VO)o|-PN0}dOCVLEJBH1wh7rRpV*KKlhk zGaNcO3y$VOLHSr$>5f(sLOP&E5?9}&e9hqWk&!FPw4{tp-!zUjY|yE*n#IMN-4e7+ zDMeBq=aecS$4~i-rajbCZ5RM(Yq5FNoW9JeR}^FDTI6$x@UkKbv_%9JbD&od%#9PxVE9))z8vVxtk7Ke_klb~sa+RI2 z(z(iB9i%?>bv@ixYKhE&3tLkZr@Nt&E^cGOrpbJ_S~fjhwNCKMh?JuZv99Dso^rukB)_!%5aIxo}#6S>E z>z>#zX@wiy@UZ%X-$YMCSJv0Ko0TKhPrr)j0`Bl%2Nd@CNXYuF9&4)eoU7lA3_9SaIbtd4KcD?WDZ_EiUDH+qBuF4O6N+7=B!)O z{|eEThLFS%?Z`ljLoyO|Ht@-G%fRy{lo#=tk{IH6(HIBJ&gJ!^#(=R~i&r za)-9t$qDvL zr_R~@id^KeR%ZGF~EIf~BYf6h$M002OhxtO$3p zEj55Gd6R-{rF70Qfg^~h#ANeCAT*x+EVeTApatcp;y|eeCWCs0ioJ8<)s%iS1n0yH z&7w(FNH1VvYSpbZY%Nn!HX~`3P*Xxxmwk@GaMSDJB&)88-7Xy1dSYg=7Y9Y1jX58} zo)J7JZx5(Pai~6<`tQrRz{*P3DFmP2R@j4>T~@D|Q(r01g>JJ_2!{Dl&muvD^YvaSLdVQIq0fz1Z`7Bh)M!sPQ{^Q7@tob9tSo!X zBm(QpkLzqG1&AAMumc!i*TqL@&2p=hDGJ>-vZpD{ITcp#yd#VPZ98Z(u>ib^HpfvQ za}-(TO>)Qf;Tkwsl^?AxIHU44UM!k(Q_ZO8g)57PMk=2~A!*>G>h19U>-%W(16&eT zYahePKM?PSi-(wL(*E6pYA}&+K!bz!1Z3K#+BMvTFT_TDUyra zzg2jsSQK{xWmPynv-6{m!DnzTfo%GGt{b+@$D-^tNFthz&>XqblwpnxORG&dGvD3=m=R%DOx-zzJnZtmTTXE zze=dQM;gEqs$%JZW*cSQij>2pdW`yATtTY!kg@$s=d zh-5aES>{$R0Z;PJ)*4|5RtBT$cejQ~x_Twy+MH%PxB(&bG>rbnR^Y18 z=k`%nSpL>K>^+|3Z{t~Fgy0E-GpOHFij7v_=Nre5Sc5T1wty1o^uVT7`69IY*cUe# z49tEpLZc|^NluOSH2EqAIl*4}D?3@Je9j(&w&xCq1V#&&$S9ZEi)e3USL9Tnn$O5C zb%sqAkD`<=g!E63Bzic@bgQV)AcM{#_<^6!l`><8&arfCTBSGHt!mz>oQcXQ)$%JI ztuB}Z*fP&a$bEicY)iV90KpNSYMRN*+c(*H5Y)2<6K8iT4ilAW6oGP*vWNO&KWAoC zE^#cFbLj{=6MP`M34+of)@~x#D1U^qGLhJqgxM<>F>S@(^MWY}$JR3=I%)O%&L(wd4 zzg#jZfqaQ|QNg=UgfHe=@$$&3f>^&;E<3H2U*1P?; zb||Khrv|4-^up+_SB}Pqw7)#!*FAoTWR4KsWnW0^T}Xe_>_3><6)CW~#N8Mr^WhaR zQ&~JtKR?jp4bdHG7V6$s5XmxI+IHq~cc1l*GD4P%=1C*4L9_{Qw+w3?)JnN(qcYV> z!{izrHE8Aq${mx?@{c3b`%N&oaPqMKzJ~c`fBpdCY8c1}F6Z@#VzwIA5{rgi+V9hU z{fqoUw@J!+OddqC_`=R|E?|-IG!$Gtop}fJZO-KFN8GGrb+Q(v=hY;36LmGOeMNP?_a^O1aI4u{Lt*gx@cGI%2SvPj5C0d$MeXC-F=& zgu#9FCOVv6<$?hOjyik?t<~%$9SRTFAofSuQO%GSnS92k4b;3`q$mWV<}A?}lZsFZ zAj%5dj$=%n8@tyj>Pl}U>30)X?(J{uao;YUBNv#Qj`=c^C#AK_{*CLv5VYg!@EcG_ zMHr?cx|KW;0oAt(m;{iTE2l0SbzP;KPju-UbT0Pq55G>dhp- z5FSNCNA7Z0klPn@Jz=h?NivA~Y^skCCg~&9oWvsf-}R9^;SUt3_%xst0vb?v2uFP_ za&H5o9%|!GYgrU)w0X(!OOK_XFB$ep^r7b|C0P^k1d&;G(ar3VnPVhJZu>2jX%&MM z@_vj(%rGA9vVhvs5*z)Rnm(QlKdTwE{P_SKqzG)FV#y~}N?fF|VkWY|6ME?V@jM&a zN2cPJQ&o|RRzxlP@@Dct+{OJ%qEu|)eyMlcu~CrZ4((MPg5hKBni6SOJ;Yl44z**a zLPPBn>NTvF!jSD2I!r=QQim6$;}e*|$;AhPuaqjOV@=zKZt2c8uSATF=@3p0T=VZ$ zm6@RfU`p%OKUOx}MyuoKPK+OLxpg_YuezvAy4i5wSuDnnt2})<{(k!I1ek*MTM>!% zMMSIFKIW=_$=ait9G2KOi$ZsHW4RweXBdhk&h%!_C&dS?W1C-z^!6LRAo5kKT&xkW zBrXlrW8H%#4lX6gr%V*eudiWx^1V7zA`TW#E9FzN%z@sEg0l)%BU9-wYpkcwiJa)H zWh)KSEZgujcB@w9VNS$}DJN;cig*K+=X2NPA>WSb~eQK*O?U8;!VV>-E0 zrHN+O;y@LG3p&!s1jHDkX!Vz>YTD-A;{(%vDXCQ#_VZ9qr4j0@)xx6~LjM9$gQGO^ zOQ2$6kK3R=F2=P#Wd9azL*vMkNnUZ26!Cm$;$qE!v~hey$Rt4O}J^l{N!qfyC5 zq@qVk^kX9Id1Z6~s@i@Q@xsSE~d zS?<9wDwC3|Gm4DBtQ>q|TE+OOeiRJ;(7L1 z?1yEKpZ$M1^QcfGE()?e^QblD=w}0v^zpJ(jNm|3vVk_X244BQ%TlrbS2d~Y)Gg<; z^djSX4w|ErRPNy;{jJGKzm2Yb8%4~<=3nzI)7zuf^UcXrrOqK!sD1f)`E6p$vFUe| z@;f3Fw8wD_J2G+1@R3?5YixhK;d)FHj=vwL*pAxtR;M_7*y)u<*Q+W1(!e--2df8Q zK2nkU@h;hDy4E5gK3|Qew>A2SST%*^5`Y8)M9+px9a4}ftefr`BgZ`zR-opDFF;R` zS!~o%oW!32q}Bafn4@|MPIc_qMnfxpTth}xMc=;yGd{c{C9i-vw3C$6CW&ERG=v^K zkk%NOp>ALot)UD{juSZA=$T(&GmIzVz4o+SS@_^*&tjD*AaYQ6vgY)uh}Po{$unmId83JE)g>PUsJ2A>sd4IL7N4~bK6 zwx^2e38F5C`Nc1CJvruXw)Gy~f_k&TsG?6KMm3%Dg#%9h3eAt7K!6bc7ArB5z~kAH z;(CYmTeV_#<-nUcm16JuH;U&58cEY0`cG=Xr$7sQa%(L3MgmayT|{|%Hp&qRQo6rZ z%8zF49|W8@ILpoqp=yParT6pso$hDYkGBpq25tz5&AEr9YRKzFxJlGDA|kzj`*B|E zoxXj`ACy!$;a@JPBUs#93L(SK`{MLXhcP^7dk9%$$)5`V7o-dcsB3S!Mr(OzluK%_ zZZz65casil)#tNFweBLd^GRA;Nm{lw;Kl)Kk(w|uhpB^NkW1(H@y0C>rSwCW`0HBj z1pIgrCyVm9IlCvt$ITi9ilVUAiokQ*fzbL&^EmLklQxzo5{M@)SA(uI-*+mC4w$?7 zFegQw+RAp7N#s9WEi{uNC9yQT{&w-Q1^ms`);^8{7H?$`#2jcXpo-h&)C`Dk2Dd+c z6ouo59aQ+&pIGzI7=Ab&g49fAOD}qfEnWE;4loIgQHw&d{ zg;2N(l+&>Zy<|4BP`Bv1oI^m?1Gicc{yK3Pgn$&LSE>J0=B#wK?faWd>{^LKQLem;oxCxRt!t}_J|5Z6?K&G<%YJpFZdl)C{ZC}WVBVT z1=Lw#|1{gePvb+XGE5zwpU#K%wFDm1CW8?`+Ef74&pb?}R2wB<{|M_|4F}d!Bts-2 zceOtiTs`6_^&-{H6JIK%Kg|=7-Lv&+1I?H_f-8YIn+R<93)A1Flm83qlv53~)ot>v zL3dCufUczQ>Hpl`+$uhj_G#n-=q3p;OF@_~PaNdTVrGRu0=B07z$x=c*Hlm@r@se5 zPf$P@0;Aqay?)0?&1HPG*sPHm*p%DqGf2j7~f3E)=#Nqb!YDCp3r}j z;u1dq<(BK&2>THYQNiHj)2=21nZSI}M_W#B)M7=^v5p8lIjcDM14z&C8ev%yUI`xHm$j zCj-H&^7ssEqIwNspwb5Si~%Rm^oDG=Ociu@KF&37Lx?_gSS3dqk&s_i1v`htS?jlx z+@or)N{t{bJ)U{8WFi8?{}iT@98ztIJ8`rc&&54=bk0&7P6L;c%|5d0C2ep3%Y_Ca zr~PLKC?QQ3o^PHVh@@0b@2iE)JN6G!x{E*@isbhue$mCR|34_ix|zL(E|qU)0i(*& zn!p#pu(J0_hi#<1$$I)5PIhva@~Y)Xu|$r8C8CW%^eiKtZYkahpcvSwbzmaD zvX$ARdGvEKPqy1rW>&7!BJGVLv}a;OWg{xx5EoSk8nv^d=ctMIGY zQYq?MlL;XqH$u$Y7*RsO%5_bSLkd&E!)Q4ZTv9BEf02=d3T|q+Sa31o&bvaidVchG zcX@|XFht2gL=1Cx?H5#XX7W(J-NfrmU1kltM&bb>H#5} z5<32pU>@WcMTH#m@Me>m>V<|Khbu(bl=M#eo{n$>(hG+h$HzKw6p}L|P5KBio9zGl z<@{OYYYKa~Z$Bot6tGOoGkCQu@^58Sr7lnvnOd`k`kC-z_~-;z?w*K^-9#Jga?cxC zoz{)#e9IAx12b|)Nf1%jG@H4dDbgoJ0CQm5eNZ8|qN|XHRgM2zYhPCT)TeNtLbIJO zF4picjN(7uXY2oB;LxVl`TsN>fs;5>T6gDY2tWIy?gBdzO^4!zN!KF z%)g-g)cZ^alr|nIjws%$YX!DZ0)!u_&R~nmWDWuh3ZR@42_dr6EccYn$~Lof>aeEl z{)Ax`Us5oOlE2z4ZWsHQd$C&`bCM2W;oev0*-Ats{y%MZ(@`tr;cK4d(`Qb2!fGNw z8<0-As2=9evpc~%Q?MA7$(O@#;56sKfh^R|XhAm{ma+ZdaF5HtJ1k#DSJ6z4?MvOKGbZ--Lrud80 zhO)4)jRxe-^1K0ODx`|j+%)Ii6v;|8^IW@o;t<1@@b3^yKVVa(cGp`ag*BrXVU^F- zVnXKP_?S#sR08y6x+C3ib2s7$QZbdq4*hWcG<(T`l=erpnC*{LQ|jF2%sD(h){65i z+(0Ul{if_2g$P8RUrwO;wdizQ=ek?60Z`UKB_m#L1w`eYd%dNiX(_D z4%J+XZ-uodSa!PxcN%YM4*8a-x|2x0Qje>8;LV*+X)U z+Wuz-V)*jbwsi2U8n|`4GeF z3$53h&YO=r>BI5H*kTRZ0mgZGHe@jj+RL$D>g|!ct$kFk&0iuz@Ai<^RbE=p*Ss(3 z30I|(q5jDfJSe}t23^VNN~oee6U|s9sC^gG_E%Zo>zt*6ZpVq@q~>kQIBj%Q(bY5B zI6fDUZhM3IC7kS%s(fw8$Ga*3HRIbVwe zoV|ncjAUh~S z%m@slb35kfQ3eRFD;elwPfwT{7C56DU_s7Z)W*<%r*)FaiLpH2x+p+;A($vi^D;Ke_U(mGHgoY@}*!SRVkuow7c^m}YW-N5g<*p{Y}Q zrOF6Ncxx2qs*d^Db|f$AEvN|24BIILw5wd^$I4$Ryn0!5e+$r-ef7$$)wgRl{niiLMqOuj0?84x-ZlNodW&)Q;IA&?i#T!jb0iK1zU)k=IWNCYKgm~ zy%%Zq#z8)rj;WPpBxOjy3XRoC-+V(CUsuR5yF90awz}Fe>$ncO_ks4?eJsNNoZ8Yc9 zr4P3Ic4fK%g#lDCCTkfxg@mxDsE9U6F?*flO5m%^Q~VSDe(8i-&lf$=84H1rBQYJ& zZUH;3#VfBpuMT>WO?I_^Q)Oz$KVYCfFP;+~svLkBO~bly&*VAAahNO{v9ok8^+OVlWkw?^O6MwLPoC<3frn%^cQ?WZ=ns09{L|T91O6ihO(yerB_FRjnh-}w ztPRQXn=O0%&s8y4W zmr!5g(q&YMH_lAx3Oo-S=IHrU6(BX^$W=)G-_-=b`@=kRMB47_)19>D`q2#{|N28V z+B2#%9Yk*Y;`_6< -#0_M_Ss|4`wI)&e#6K{u;iGE5k8!t_7pKjx3uQs=;J;u?L5>T zt?0^ApjNU}zdu87Y1GVyR2%Gc6YvO$bP{<4ydly6mbOIN3GEg&>oz6TM@=nj>4`?T zpFFfy63Z>5=@t;iz)MYyAqYg9qld-<8~G8AapRtj??(;P}PmMy8|oSO{#aiUmK zGY(%dx!9N#$?`Av2AJQ%xrXet7zuVAhAr%$*1E5dHFls~WN zbn?r`;^1dg{h5yWbdNEOZa-w)MQCx(s2(hx@9FeDA?#S~`|^Fk%}>w~uIonkT(&!%&KQj8?E0EB~TjLOK4Obh4$$K`b?{9CyYfa_<&2bLWFrOKu2YRZ;9EXK zB4`OOLVKFOcXZFT-X;xWBv>V3A<4Q4<#W{cTI?%}C_xb7KvzS`qF~cd5Q9-r!N`v@ zowG`fwSC1u=!&zlc;@ew0%25k3AUj6_&DoZtwek!YS1TWF;^_%y0+CXO zQXS;@#$%;2)G?pFPC~*RRPz?AoT0H;^$rN4qp(emFWPkQ#}$u~@v6BT^@w!?{C1qS zqwl@FZW#pIC@KKhTs8g-d9rgarNMf+VBKF3Q%SBeM6;?^t0_*m#v~G8Tw`&~X2^`z z%rW;=K*1b@u!#0sVuSMKZnhMXj5N7W$Pkw?Y$^ONo3l51cgxM;7Cp(Q^CXmy4f>ee z0>rU@KTXl}5<*Rqy=u$i`!qRn12YlA!3$j9B4-d#qJnCo8NfJr=n`R#<~nk?2P0Bj zW*pa3hw3^=E$urMm;IhpXKA21WJj9Lr@m2vKvoAfviw)%BE#x5w2*e=;fX1qHiBx0 zkM!6n9&OzouK~u}Q;BHb=?jyd#ek!_h44GXf4`n50tZFbDXXz z@fL?UfSE*>E9^S;zNF4kBvy_;AF;Q3^TkFq2Pbk?vY1=fDZrZf~hNb+t4-y*$h zC3>k%<9hfRUoV?P(Wi|EUC7VUkym&7Dz&$-YI54CsVf2ui&k_YslQlGzQx8m#@i>P zDfXXz=g72Ag=0=? zga1IJKUU%I5eGBMNR9mZ&sWlS8+6DjzzTm7iHjU#wf(2U3}ls^RhYyUa$MV;9_%WI zsdge4uyt;%qg}p6T%a3yE%=Cu<4L=J(B$eG`{)=$hbh%Y_Nif%_uqyRt!!^|MPzr4 zva?Wv=VC`G_A94}cF{zo+iSgzusG@dpZTXH$!Ji`x-Go}1(Cz8XSS}2Bs;Sb|Q``mXb13Aj7|5t60`GOrNA=nUw z({q_e-zf(oES~)+;qo;aBrYXl0;EF0yZwqMaN5gCU10I_N+y)p_@ewaCyvkR97rUE z3X(aG%J$_{?&t#7N5XUcDT)|h7L(73kWh3XeWj`>fYI8_!3`x>!ZW#T} zX*7hYyDCk-){?{qb@ZW;G9$+%?FMvUZisZ!{Ep1UchXtHd7N>+-GKi%#y$Iy#8H0p zObW2&vf}M&Js!l#v16=k1 z#=$P3WzO~T4rY#Q&1JTs$L`|k7{V5%*UChW#X)_JTvI2ROLEu)@yY#3yLxkoEg2D^ zq3Q~fb?em?J-Twf@6TGkMVZ8T0xB^O+m-ZSb+A^`?E*d#3jSxG*s8s zMz$P{+3K}=jRi8(d*Ghd@d%!>)elEJ`5p!E&m}I)f?TH2V!4eAr=qSm91<_wS$zHR z)N);Okn+8OF_+qmCe;Y-_)Jc6f>k2!@idB0)8(2{&yb*Kc}q``%L|l03_4ug$>FV4GG37ztUu(ED}!i&sIAWl>-E>LyNO&PYl1>WB;nDi! z--gni9FFfHE^*!vvFtapniXdb(1Ga^m9mwcwLw&KgRES`CT_iPhfTz=lu&mq-(S@8 zKX%rFii-E_S{Pzf0NU`&o#H_4use@jYuoRqbn1sjzP9n8zqA8Zi2hLG`+-?wwUyK$ z3T`XFoGO#LQ!-T!uM&)QzVI6pae$KIN^ZpDzQ)2=g!xw|%8zx{3%}4dHhkNMm7vih ztBa%l=-rbe)&F+O~oPQSF~ z2jbPK1EUz}g?vwqYd-yUSsU6zjk}%$R~(sGEz(1jUo6V_M@a#dAB}2^mvvdL$v&}l zKu5^#IS--VsPQF->akE(mKcQ}&h|;28;DOEdh#(DowA?4RG&Ks>?&Mz4aBrMY$Y+u z{sOAhup}fX$fZBhDl}bjI_yC0CmMe8BNe>Ip0Y9~wO$N8+cg4IN>T5vG=;vYqWt2I zqDK*WdOw{k<33U6zX;)**KkXd z3Dlv!{#92JEPqXHI>G4UHGgv<{e$BE4M2r|pmF;^^?xw-Vt&&jaqU7uUPOCmC|>z8T+7C^q3HS5 z%At$AnSPwd(}Xi5t%eqLrGa+gM!hXWQq;*>&R7QR-&bjtbf-n5-PeyN{TN%Bn0s>sENxPE-RCi<+9rKCM=F(xC~X6 z`Y2PE)mZjmdzPztiuzYih7Wv?#Yo;Lb%Pa%zuSrX5LC@Mj+(;711%@hsof+U-#U5= z&}>=>g*@?3KZjGNoLw-Mc}P)t*U0{0mi!h%vAjk&IXROQ6c)%SDWeyfQm3~LkWxbt zq%mww9r#d=;j?mln^vo&MxVjf&Fk3{tU}e;#G+5LrH5|3aVercDN+YZVAaf5A|)YK z`nUqEsGUl=gdv`&l$9~W$1^qdP|JCb@1iZHETTy&Uj_rZoZb+i?yzPtIcT$?=_o!%gG7Uq z+K1CBA$;Q?^y-a0)ner=w%dR?{RC=h)p;g=WE6@gE5Wk=8&h(+;?_E-PzE5_&E;&t zy#Wl3T8C{$IQK+9*||@3-g%XMtQ{Q z#Vh(7(|u!cekZ9LQRL54=@%POdzg+LWoPA1^tcU6g>M=&p}~YK;pAOI>5szVmZOg6 zgGilwPAK;0kW|WlO&6!Xe^^)bdYEW>qtoBlRIK^up*NR%`lmB3D8m22Y-N^ap13GN z5fly1fudB3=5dnv3fnHPJkrc$`0MViR%75fJBL}l<=xZKuw?RI?)NMAlw$X#HyT9? zEl(7!lT~hjP1Dz6s&`Ow7L;l~(UCuShNwy-38)WDe#DX=b?|OR#v&n@e71Bte{rID zfVa7EMMC!Da;;RywG&-+@qs`TJ5<-(e!TG323|{#nA3{={Uk)`?b0+!t3*2o=_vab z!RJ!fmH)kYe7`V&FNCLmGP!yFtRf^`SkrI$G^gC&rkB`RUy`q01!WZ2urY8vOni*Q z;+3pt!aTo=2|opV3`FWM=Xio9e);uaoXk=OSrz; z(J-E=YP%UcKhd0&^oL>@PO+Z1+^edpz$0Q0%nn^SEjKyg9`Fg`0AVT3$QF@^c6o!L zCTG1(dszKIgx&wcF_ztj1qVWh#TN8z{6fp?E9a!>wchFbM;PL8XKyCPE7)@YXdzYR zFK33q~tXULSaBGI0&*5oysU)ouwG1M+6ZVH( zJ)S)W4LNGK$+714lj+K^V^K-2lu{c4a`-S_RpYy&amA9LFqzwYesrqa-x7%8t#`$Fu2&W;Ct+1SS;1mpz)gJ|$kpgWgfdF}3!&ru(1mJbx{7Yr7Djn~$$o8sibxFAsl^sDun~rN z?tONw{>@6io)3{a4+MF+??=FyK^e-sU5yl)xEZT5I>>61mXuUC*4RE2;BVG8MEJ;8 z>;xjF@*YlWgIq7XcZ=|hULKd&D!jmad2l~|lEW6trtg31?N*#QVKSiK_x9_l3%^Pp z`P>bzLGVS72EX0t8v1`!56!Z#IKt|(fA14Yt{xbyGr2ji$he%zGWw6J-cE;#tX?!V zm2;&_()re!)-10Q)LKXD2V#!lM)L-hozXKVo#u@IpX+ns;tQXvJhEHCqua8L_Cg+; zS%qrRNf{Q0Dekj35YA+pCgDV3%`)M3nWHP311^>F*2d8MBZw(>mbjymim@yeEbIn! zj27z^v&H0{MAKsSJ)5^NRZTR3TsbkX?D*u+HD7uYX(} z9}8ZcfCFUP!+*=CrZHwlAClgXYa8J%hrr{2nHAg={+6PqexSXv2J?pLU)6@y$D!!y zZ4$*8e^;$(V@S~9aK?ZYO&Ai0B_h-eZ^6D|=jr;iholuldwTHcN~SyWE-BC56py}= z$EQ3PdgqcGUrWW!zb9WHQXv;62u9sBJt+~u4*#58e1m6qcyfI^yI+jXPM(It;rVrN z7u{Cr@i+FUdFb#ZLLtNtx!@WKp;{fJ3$=fO(untPTUrgw2H{j`_FLc(De%&48tI`h z7^hJ#S-HV3iop7)L&WK=TLfFiNSgCg9+_1f-HILHE`l9p#<43yyO52h4S!!3G>pP@ z%&utW$KZ;aJzGQVrv~4$`7&oXOR~Njxw8Ds@SK5BBvikP80cgCp- z8Su$h%}s|vH`Sr!UOzKB*7@*Oxdiilo+>E*MowqTWB>AnqjPi&K`7m(tBIL@`}**A zZsFyYb@^;(IkxB5tHfpOTCh&n&Zb%#kO509Ib6eTYm{(Y5T}lm)!`VwIwpQt0$H(@p%CmGgPG zW>rh&-KNPd>rBW4y|m1n{j8*>%VDF&*fS>lIyS2G21Pk^jPz@2me~QIKa^!7=MzzD zs9SQeVbrQF5}n6gHP-FvCpnBfTw^~p=n=&>8ofVT@lSt~OWV`?I~x8djH-tr6RK4$ z_ccPnQN zpg#7t@&|B5PH*Rt3X6fbDSNlElJK9S7WiquwVGb-p`xy2+k>$2l8adGWzspSp|pLN z`ZY_4g|P)TlQ$` zrVX0qCp5(Te*GO{D=lwm!n$rF{UL^+jUrx#q#$AP*CZzkb;29}D|0R%GY&KQC=S!) zPX3HC)~{9$`$_A-lxnW~i31T^D57(VU{jjOSL8b)*>y z9*D!323dqH%*WLlioxmf^aCi9?vg?a?SeK_ub4trm^R`zb%c-+hAr2mkvcWZ=c&h>&o^mr~%>E3&BE z4|Ha_EJYa#IMrsviH^z+k1D;%=Of0DlH#bUE?WtREi%`(HZSbFMrTMdz{ksVI{AaA zNwKGPfbfxx9{ink{ub)HkPpkK6?xk1UXKO#@j`;e>*2}b{5s)&kPIE(Du^&-C_LmA zGNssOR5=)X!3|~s!4+@@N!p%-l}y7%UJD!{z3Sju)>Fbxxpvt z!>vkqFNol;;2>BF)%HAHO971G>4b{o2N`Y{g+0nZ3-k{iP{nVa16cGQp5Y{uJKgBm zJ|RCdy}fXnLfs@AeJClxrF2AI1I$5!i(3qgD@q)&>P<>xacfOTNav2uFJiQFzhh9P3h%~wWca!YI%?tHr_ ztS`wi7{3&ir~ROm{Rm>cn^m@2TKMDV%>KNK$(3eHXQxK1WXtlvc23n zJG7Vj`+2^KmnpmIHKHAQr)usF>fuCBU9UniZ|q-KT}2+~zBTS&;o*}(7kKj@08ZgTnI24CRfdXy}EcLou@SJR)@ zDa7{)aS^b|dbD2wf)lP<%^)~IX&3^}L)p1n$PbVB0u`6}sXZ*ObyPKqM!_*GC+0;Y z99U?y@Az>wx+jY@d6`)1w5F*pBb%L5#s$(6WzGKm@ITO7nOZBIVpnY8oY?-2Ot^}u z*)h;9shCZA&aoKSlNPVH)oIZh`5WQ4vrkq13e{A@Z0$G&S~qf3T}WNLHaO{OZ^ET~ ziHD5s+lTqW8tr)f_b`-NO>jmcS$CZkeV#N=%ZK@(1$7dtL>`K30ZD4nAfAFPQ*X?n zI_Bc>Ih=|fkk5Sdm{_Z`*8&7-w}OQ~IY3SmgcHnZYmU$E4JPI>pU4YPd(oeE(}V^P zYk;mwp?&bj>Z90#73`#e(LLv;oO=B_YxcT19Ve@070E^pELw`$igOp2A7u}|qJop| zf$kB^31?PYMY~?36iXccLAyJxDRDG#L!(#9zp$z+5` z$OmWFHM6j&c15wvGFbDB9Zgq)2`?+epC`y!Yqf*_-O>B!ch})S=;_KH_*g{_cgJmZ z-Qw^b&+uV1y&uuF{Gc%RZWz*>B%??-qKD{L^k=*2dYc(kGttK(QY)bjlMXsndL`01 zx829yFU7Inb+%3Go78KuQq)=hBavA zLOJXq^2YkZ7sxbUaIYwZEGB-7iJ!@&GFw`)oBrjNKxX6;{E)**(B3+cEfQp+#6|Gh z4)M?A?kMQP)=eF^*jD+TjXfzZ@yQ5spFW4^ovz+YC<^2zK_1O{fI%~(bd*dxd93|6 z$}-C|ol&;qo({tWwnv12lisQGLYu+M6t6j`v#WK$$Jic|xn~<5=h=v)#+azV*5xjK z%?k8%bT@Tgit))?y(78_kN&lh1GU-wn{uwyrrmv9?-d>kH~ zGEk<`*12uCwAH5Kt(^)w<9dnVRE7Zfxk93kiThqw(^Xm8r=iU28oKHq0IaSQtLedV z>rS4jt-5c~YYBg-_zlxmlxv|LNZ3I&vP?N3-qVEm>_zNXBE%vqO6U3 zELBs#!hV>#4|k6L=&O#%1j0U~alaGB3`Hl8e?uQonMZNs>{|k-;hMI;J(Nl zN{tL~u_tf?s%N&}53|Xm)xl-rBq^gh&Mr@eIZ99o3|p)tS*6G`L{^Fc)m)x z*1lFK90X#cFT6Y=1Y1ufmuZJr#~D$|`ox&NYf8sLu$UDozUv6-fe{T%wE%R-wp1NrW<-qa;e?avZVU;q5Pi zxB6-%RpYBEF&e*t-M~|Kk(bOlKhR*YZ*be!&hAYkt(085szX-Wm`y{^hzDU@NuGWu zQ~W(KOWe7W*t58Wk%O^`$zL^hut}6sWOm9qB z6QqD(l=X;UF-RBjA$B>qH(3{V=v0yh9Fn>$xr2W*XM~y==!WW!6N;>|I&_e)}$NDh5@1W7C=HjM8zqAhmJp3$>OR zNoLnkhFuTec&_?bNrqTHGyAJTij&GHmCMg zAF6stYJ=U{idy(1+^>qEr_wydMyMQKs@=tre8(h18+VP*B~ zH6a&C*7bF%5RYc6{_wks66i{usZ?s6@%Fsr^lP;O9sP5O#Xlp-s_LqB1%ooSU+^+{ zL5uzy>@1ExBKn4HhJ38ri*%hyL=m{(xK~QJ>apU}8{H0DS@y&41d~do+rk~<`~5c$dk3=P z^nCR06kCk%ptY#j9PriHt%y(s#Aak3g~>?s$@zu1d%QeenZH%{;WezAki(vHF|=yv zosx2%y#dNd$H!L4gbV_GH?>W^?oeU~KUdBM+MY&!3L)ic&Nf!v`g*6Zl+O7bP_~t4};eMXNkwJPnaSE>I$2xHe)~&B;O~RSdTFINt z3$KiXj(m_=bLMi!gVjQl)tOuMuNLaZQ%gwr!>B3qAl!y5-umYRK&`;_S=2 zf(L9oy`|XB*yuW2`{j!>Pl`32aJe{XYl(q!%jhxXv7L$bz4_$es=qwm%x4Z!i&BJw z=>h>QYF&X!Zm5!-sq-Ik)0pjQY(#DaX8W!=sp8*A6AimF#`=a2gJ$So^uz`W0gF%} z$H%?B)}PxA0$UHZ>Hp{_TEEae_v_Gb*Xg~shP!v!ID8kRjb|ar6a!HYbz{n)QZmPxmCktN2!~ARC-^%QSFL-7~ait zbaO_IZ@;gO#e-y1t6G!&m6lVHU)tD>wu>vqq~u~;Juj3ak|4KZ7H_G`u$XBvZ6wZc z6fkK;EC`BG#VkiJHM2NZ^~uH{fTjsw?W-2{=_@BRelS%KwSsJ}(g|skyT?UEEbr#d zj0eHQ)YLxuX|FLHX7VkWtubakH`9af?k=8D4!3eT=xZiv2bx`{paG(+hH2|{y^$VU z6;Z}1K@i{k4{tgbn4GXvRnib&YCl5r(1C&dFK~e{g!x<&oGN8l882^-Da4 zCg*HrGmcHMkfHYK3QcOarBph~j75)Lxh!L=+@VdN58W7jG)m77P}l0I;L+luRt9my zXWD}25P4-mRMl@!MvDgor8AW9!Jp`ITEN4}W;Ss382FE1K@v=|UOpT1oAKRfp;qP5 zj8!Z8r)FM1CBK8ScsC5H0J+G~xtCIgc9VL}k|$sHf7)xwu|sXyvg*)r1Y#k&&zlyi zWZ5?IbpA86Kt>&Y!YIGS9hFXQjIc~iaM{XWTHiDq5+awC#jmwdY1Bj68$U6aXnHqd zwD4>-x+UN|UcoHsO^#uJ+O4aNks@5{k!Y_ANlE@={EVr_ngP`+Eol)FR?{08 zaL?@8Ho$#HBmA_{4HEZrL}BmWMid?iQ79^-;T4dOf9t*7IKtg9LcO9K?ly{$ z2I&`8mibmWH4(zvY@f`$UIdxiXg-@r-HKlsADp+Kg0v=`R0xACQ*U&R`_-kjc2sj25Y-bPt8E3KsyTNfn053 zwED6RSr@ia#=}QUPQ-ftA^e%DdVM5jEEtFrARk)NtdgT#Q57Okqoin-bZ||g^+WbH zOk-7-Yuv5i9Tx}`acvH5QA-gS)^Osib7Od4<%59$l4qN%U`Pz%-s!yy|vB+dc?_f{V!sle|Hg;WU z2_=XD4vt9@Z|lLxzIJ7Ar(eVw*UI1WW(eb28QkiM?k@zlgViXoI$KUu(@nOb!!I!} z&_-u}4QCoG)|sBuCsh@oNz|$}Mw$iSzh&^BK2vyl#%my%QZTYQbXf!JzpnepsJrKbm+{7^b??Fb-a@6Qa62)JKV^hJ`;hV)`p9D%z1>i*?Bu;q*u6BR}yxGWX?=0IYL*H4gj<#&bj`^P;&!)f$JrgB=qUfC}cj{q#0%mOZlQ<4OE66#Pm%WpfHwCTLqfLI<`-OJ|$4ZfZuB<+~R6^_l+WDzZ{ zX+wApqYwf#4hLiI%Lw(RX}RPU z)${=i_zE=*`z|pVeFj=ZHB7F|ax}Vse!7J+U zRq30W(|SyjXy&qpOrnJwr=0{JAPuTjYZn*7|2RM@@lKaq1sLKci!c}XOjd8zBYDC@ zJdE1GQhF<|7s^r&YSfX^#pzbXC|~dm=v&gl=fJjOHVk)<&OMTu-hia(x%f@h_AzqP z>4h+WPEx0oImh0;sx;&Be_AD5TAkbQ3)xrJjnfPwDgb#(weT|)`yBWwEg>$2KM{v& zurVAXJFCKxR&BU!cB(gUb0`{qCFRmz55ChG$2lz?@#<4+*J*OMnzP5lXZ+oDz}kk$ z((F~Z4bmcm+7pXUF!W#}5dJ#BoB8ik_z#M~Xtd%!XOq$V<_oUrF!0V6vlRG66tXda z>QmPQDw_K$1B3gK>SJ)PInN$;{qOJ&)UudR0K;zxqkX+)aR3@Z|Kye++A+d5Nwm5@ za-#dy{z2`#*jPQk7Z@Wju9ax>bP$HZugNq>HZo*ce^jNr<{G@XK`UxRWLzPIBQuPgygqgF3;8{+dvzt6`|j{L*#lDU$@OFo5ON!t}< z>wk)7)I8X#e^<_{5H8A@oiEWu!$7cD@G~_{F}<(qrZ#q^N{n}NlD7DK;$oP+jG|le zdA3;H-K8NRUZ;*FkV|S0C%qO9STdtLbi*66;^?8XoGUp9)Ys|#N4UXOt1)}2g$gt6 z&{@Mm?Zrkk7E_>pYLH~E4l}dT?+))U6m%}u1+!mi22l2gK7qO!;4}gg9_bnZq}OH7 zQ2%JC54B5$un9XBU^!d;jWR)DRVP&oWV8IHL61_{|ChNp?QUC1vbFz`0FoL$$`um8UtL5EFma?NXsN_(P?R{ZlT|T@ApfnK;gd^iqhbiae{6`52fS3QAWSP1jdq zALJ}WbR+gsGiQ{eo~$K@lu2>3>yjDH8cb#UvTm5G&A!(@7u&h;+Np&Cz?t!;F?0lO zoPAVngipn)O}KRIpg0bqlI9_OW^hrC z`E?|j{kj#rGtl&9-5B^P15myn?ifSUk_@FHB2^Ym`p*)!Bx2Lpo5H@BpI&j}&EKOL-Uu+P4Rsb4O~E zI2>67V)HUxNS>w;0p%KM5Zjqq)AU|YTSq!fzdb!9!{{6%!t8rbIz5BNb9&e0Qf;X z{+-?$AE5o<-O+sj=ZT-_qeKR?gC{#_HMXlU<;F{Bv2Y=ZY}Eb)l+w`SjQ3S-06bo) zF&i>rf30#ijqtNZt`m8|z2Y>t-MMPtlgTd@3mr_? zY9~Skxd20#=Y)Yvn_Gy28D1DgalC;+52S$;L%WC16t6%Xi3o9ej{4f&e3gwNTd~Hu zF6CF;$@xb-l!NKn16ec}lQU*On$5gCZc#1Ye3NvZT^xTKpS(YqPCwl}POpCasOl*# zNx$Z%FSLTxqq(U;hUw{)rt0(*2(c}v7=wtun=y6@MCDrR+b@q%&1bP5MLvpw&1X;G zLANqanS8UrwlT>Pmjc%NlZVxdd?QArZCE6u91?{Y<3K*w+CRzPGbXat*k2a%?Bm0SnE4O8QpyDqM$cBh$_og7FE$16a{^${R@NRqZQ~& zFsutaCbJ!JngZ^}6_5Oj4HS7=?-5TTEVVH9Z8is4%Kx$2sbbpa&fx%w)50UZVp9}qsTk4)1rnkvUJfW8*)_Iv}|~ z)jiZ1*t^--V69*07n)l@c7L{it}a#3N{;6gj7w?0y}!TKYbmhf0ph`;5n?`%oh5yy zu~+71BmZU2UH-nkr1pht@?oblN1G4y7_w_Zl9E2?`9aYotyir&kjUrg1?h)m8rrR2 z^fhsX-{0Gy#(5dLCX`%BIQ7c^Xhh*x;;k&14ZH9X| zOpW^Y(j#CxbtbL2s+eghDYz6`-lU`@iuxqs`lW98SF&^T6L4$3!|QJz?qWc6{9lju z7X-M`i~o9@4eOxub}Wj16qdssI_KhS{2}Nr(l9hRaN`F&l%h#*rTSR%B!bGU@j_I} za_cPZ-EZkW&zm*I7P+8q$tC;Mq~ zo2t5jltG*?I3t;94umCeazR}a4Ud!Z5)Hl^QT$?yMunmbCNVVsJ+mNl#Pe_&x&&cQp^srY(Vm%1}Z*>{i*JJ1S{X>_m5C0RuKN7PqtE{i74Mp zaVgb`ssr?G2>+%jVdS06veF6BONe(5ScET!zKI)-s=A~|P6cn4rr8>P(qiD0V$jqk z{}-28B`FaQW_}dEAb!g1UtIl6%-v3e$Tnk)deW=a!Nc^nF4mWMO&g``2!}~dh?LylF&NgP-Idx%gXT6Anp6sQi`>>BZVzz8Hkc+2 z#zW}ZpbbvD%rsa9k2RW+r^$TS$Yb@k8S4#{mwuE1KYsa;ms{(f6dGHlJi@+2NxFxR z=zIL@^y0fe9?Z{H0j-4OCuC#Iw@(gLVueHloR5;9k6$q*PuPK^vn_Po$NT&61yTlR zAlh3=_M}rQ$M4}WpKH!kdph-Ys0}XMovtY%Z%3f|ZEcz;=>n|?4t_*YTvcb5cv==t zrvY!@u8YCx?ZA9+)MGG>&(`&z9b=Fc#{L;FOKHJEEct~f12XEyupgDyq|8fOu}G(7 zJu&J)czb8JgqphjC<*$cJ|=VIF7qX>lJS^SeAJ2t#Tax-NlssUFcL*Uo*Jf>liJkqWn{}P>EIRuC6;f z$U&h^bY9jt$#g*guU0W0>M(UI8!L6!Occ}JXj^f!J(evl~ z+myXGEWE zwsVlb@P|I_&t@0)|GjZfTH73SMI#Jh!a~`z_7HXJ2pu@TI#@kk9#NwP)?^!SlnY}h z`LW?v%nS{HxxO%k=PQ)lld^!-K$w;FhSgF&7pR-8RHj&(!i_Z&jW4b;#njj~MTJyXr_0r_ZxM}4Q=SG^TyR3q4O?ULD~4c#;v>aviOOS(0F z&C(WvdeAU4ijt8kS7^ifwDrt}Y3HpDoY-gEH4~0|PR@Q;$Ly7uJx&5GepsoL5&20$ zr}L|Zu&qi;5>lLa7h2|?oO%SEd;J~hbK!JK0J)5f4aUM~`&i~UKSYxkH?!z^rK~-q zeHE4cTO^LH2u`O$nq~ntXzz zEXIcWwC(5qL87v7I%z~bXHYlCm(|nGt-^Cs6Jv!z1)p=nos_g|@8L7qyS-&xCl2Rs zYv3^y;7iW0+_dHWf&l*V^77`!h=10*RUN%|!ip3i#q7WI8a`mIs<(&iK!?iL`<0ut zyI0IV!y(s7n`-lYHhaj7)vPY%H*R-t|C#Mm)00LQrdokLyacF*=v`V(KOFurH$-rN zuv{I#tu5E_^ssjAaq?R!B;b#+5FeKw7S|*2IJV!0o zSd}{I!8YE~)kOY!eZQpo!oIqjop?aSPy7(KD`?pV6*fL&BkIA&equ>B6%iQ+-oU8| zo&qhT!IJK-p`)E$5u{!L@tTLw(rE%vI?u1el|H6t&)5wE8Dy{xiOt^=O}Cgq{*zx# z&4M}AzYafBvLUPo6%s!nJVi}?v~SSqX7s?uy8(H&3_AY$f6uuQm{N4r-S?Q4uA@c- zoX>3_6cHV4hU6{_b9aE2;%}OgS-buvvMbb5P>fJ){|TG$ILU zjyFh#j>Vtz>vM$|>g|vnRi6-TixVgbAr~D&oh1xvZ!yL6l@g0(nbhwjf5$#R9O9p9 zsQt+ijnFzx67m%XyRRPC@RA?Y78T`B5BSAwtMfphcx{_^;Ep7(2}kplItC0nR%s)E z!7}_{X(uKRAF?|pVCU7vrw=z8a3zWOmL)I8e)YYUD1_uhq@-eELlM2lo-w?L5a@0)UhN7g(xSS zC92-YLA!xpLb^J^LqlLQEhaGuSd`mW?#rv~HN};{Q0z3ZaIOOaUG8HvB1(l@9hGz) zKEgj~H~c2r3=8uvy<`BKENJR0P-bu?#Uq;o5pHArmNJB`2E6|oKhuC$maFv5js0U} zro~fyd8M+aZ)t9M5#2eb%vI8z_=Huz-V30LX#|;BA?XTtyxWynuB8gDQ3XOLULPMB z$NA^{di|LiJg9{DFGMK3kJYCtU8F=ggrPkaPY<6tb1^8V#!v1cR!Cr1SqMy)31wr0 zVt%;Fv|gY8$^CIBksm3K+#)Ir%LKl^m{&_vM5%kZxm(ls@JrnC#2D0caQQS~bM5-N zB~5WL9t7glYTM_hKEDU)7jjPit7IPL;eB&wo6nYnI2U=T7iuX)5oUIQKhD&Z@+j5j zz~Fq`g#abIRc?!L>PC~D2LMoCfDdAP97T$g;kJg_N*=vHKKd13eXciA5niD8b z0o${9N)$Ag1|6V5bG`>pUBpRLHvr;HIYq&KNWN_>ufL|~6g@YeH#b!&6E8%Wwe{Vk zq~-2}Mi$h~msT*nX-h@vrHGnubmmvHskz9!;H=+euX87#9v)kMY9`O%ueTKB&c!PGXfetHgT!IrAZn|PHZ~fw zb|1}l3w<^$&z7urIO-13Cnur`ihQ0ReMSXE*4wm-ravZS7v&&W9MF(&PXwssA9n`2l)S%X zDx+3X9p)zQ!$R(tSG*X4em}X-YVvA+Hpy-~NApc&!7dw8S(;6*V5SPj$!_^x)sEOc z%sHX+wivW^o9nTAZUYYou9}VzY@qz;;poNSLn9*`rD_yOG%%g~=r-PLruW0(f9fQ;^OjbauOpP~Xm zW~G)gpLtwYdAT@as@?@6srGp^e6vLDIiIiLJCwZ@3g zt`)>g)^1t+?z8>#?%h+{)#8bfdlFrR8VI@|6lhH}zz#mA==k-5J{R%|y(MnAl%fng z!JtNCysWl9-;+<;3=?X9rPqC5!H9OPSL7Dimk(HcVNsDJYV;NYr2r|<%#6ve&o_8f zmZ2xt<4Nq*P$3&sn)hn5kI!%#W7VW!Q0Yr(F&KdRtIaCrXZsxX*N>e_qabKyz)Z>E zD!TmHn3~J(2zLp-j#6oG-iikU@3XQ%!Nb4Gs=s>tBJLD2Y=mHV-+=e-QoDV7qlWsmO8Rz@(&=36etF> zx19U#@ix_VUr%qu1dVyKl(5poFh7(|`02&>(27imGj}5kIX4_qU)7X{+GkfgGU!cS zDcnh=+}<)V@1ei%qj9z&k9|S`auaO{_7oJLcq{)FuzPk;!t|?5>`)_tVMyRB&I~;k zuX@9WmP_CD?d$Zlh|S-#yj7K6GVgry=G)}kModPEf{%^TuU-IkiX__0!xIB#3_T?l zLcT|`w0jqqm@%3^gaVQJhqXe!ncE`?o#%B+^-0U|HviH>18o1SC$^$M*7D5+A1%q0 zg8gn9kOL@&07UetqtP9vI5BmzOHI-kjy(IOpAA^%CpWCsjT_d#e({ENV&9%LfK!n= zlwk=G>S`T8GNcQ}NU=MrXb7h-j5Hon(}|kM7BbBVDJD&ziIipj%e#S7%f`7kg0-fC znRnK-+vSR}s2fw<*8v`V zcbJXPMkZYEKRi;##BHY4=SUT(m{-b2b8;mzB^`_3tNK@g>qVevnhN0V~xu?-tiTcye`{YJVyryV*S0-FYr zDzdG)6(zVSmU#W=zuu|XmYOH1pcLDFnfEHs^=z@2(%_Cfy1k5{l~_j(_r9Kx)j0n@F6Gn6l}Tzs(O_|M{59+HZsr1xK+0UWID!lqix{dpjk7?1 zKwXehPFcPrn!TY3RyP%DrLnOJP4wb)IDPZidzqjTBy^S@)f@@B1YqE<5TEc7$L5^z zHa6vSP|^{{=34mi49w=rwzR=SrQPG8PbS1cmCgHSi$};q3@l3mv5EG8v`l8R)KDjc z;pKLe_2^{w>Ei0iR^h|l;^}2_kCIQ*jL9-Y`R*EK9g`>MO|zff$KyBj`DYE1lCbP& zb7W^VS4b;Yi_u_f5CiQi)oJU+1rT3fSFnT--7L*jh;H~e`)C#bXuVYk2X z*W!$-|LK_alH#bt*h19K)(6wWyQk?j$C|gbuyXJnfgBL(JIf$4_#vahzR|?mIG&y( z?Xg*0S7z#1WaF)*N&GjFy7JrbbQJ?o0T{#O3>ltu%l^(c`Gm$b^Ea zXJPUFW#8zXI}x-qldmRt(J0M zO^*++zA~S6F~j3J|2$tEugv7BB1!A}HLn>k zALL#SQfs--kB2D@)93SxzBjHP@Ko|AQ{KdNegQ&>Tjh^p@d_x7o5``r@w>=>JaqnZ z6zT?lHCYLy9FaB;(Vp`&HDA>Lqt=SciTfJY|*htZb%9 z5a*FNZN!?}(mL+-ywTUu%H=GbdSkSHDndvAG8QtpOj@w6D_3o^s#s5_8fa%h|_8|$9pH7|rhB_HtsaO15P3$JTWSZbh&$^GK#j&^M% zT}plnxjSn!a)1Ea2y!=I*E2qcCJW*fP+Li?@pe}BTg>=rivYe7=`$rPPyRahvNA^5 zbWa{H)k|0VS7HSI(2ffJSg@d+#vm~ZbP#r^=f8)c(@4Qi7)WtT(%BSKRcoh4vLA_d zO-XOGRvff|lem2YHdh3yOVzjC-$1U+`z3$Ep$eEbj{mdtRy}T%R3r>HA7iT$P)~!D z8p8?0i=uYeAo__oS~Q2sZO#a z@-0Wtajke>9?fM`K8X5PGBoz%^>-^3Cz?m`uUI{9CstM|f#b9F=$hmfLyp>>il+C% z*QbU8N5mULl9mW?^&IaZi76+>2_R-j2P;o8kGM_g6mRgNH}FPpB1`Nhwc14tUsWmj z{wGa;4%h!ewxr1=EiuyD6|OcE@{_TD5lnOXgZ&?!LJm}Z?H5W>SbI8^7n?;o^6zG# zGH|N#_4T#1^iKSFNUM6UM-NdY9o0gPbkn(RAuauc=?a@I9_4EEy|+5$sX$HI4Pbo-|e<2iF;>a6|53J&ZIMD;2D^F15%S7~ZJ+o5Mt9mv0~F0bUx zN*7{L`U>Zy$`<5XVtMj!M|)^Elq-6Rt#W_FUG(PB=TyG%d5-#^0VEPwrhHM?4p%EJTPk7H&srm)@lou$UpbI855LwtoGMdNG(go3`A_? z`B9|d0J&qPg?l6wJ6L=d`l~}l$PojVk-o`OybhOC9}&#Q4BJf(@(1l*@mbEImA#J{ z;p-2`CQ4Ans-_JX66>|1GXpvP8~o*?`&8S`J3bYZG+}8|aPz-?rnse}!p~q2~(NPyLG_><%)ADLUY8t3WF2oSdTsmHvIAW^W&X>`m4_cQ6B$8>EXg4IzDl^ zZ5` z_1(2KQ&jlYwLFZk|G;^Ys8dUj-c*(C6+RYu6F--ig6|AhU%&krP_K4;GOx!sID~&p zD191{^Ir12r zwBN~nJ~+n1o94z&(-pDCz@LB&B3G>mB@zI_T98^20ZuLw4}-!E5p1Qg{o`mDSHP4F zt?JY!*)N;C6E!k+wpcahYmr`lK&K3lvSTjbhW+F7>FGN>>aMtV#vEqHLQfo}s`me~ z1i#!uhnk=Vb;wCQ1qsA*)(=b_`a~N29b-JE=M3kKSgS>+@KUIZrO7u&d6Bt^S`M@v zF?mI=xre8u+gyj1{@thoxF^byvBAL=R4z>y=0v_%k*Oj_5fY&@8Qn-(a=+rw+thJ0pf7(sFHFSNU?>-Y04WFQ|oGuOf0I!Rf2$V;fdg4o>3|)Us$g{C}^KV#01Qts?(HRAVcxYoN!`` z9we%Uo%>fl9CftY+iL1*`gU z(--GsIOCv2Tr)nRuPLwl>SDQ^&z8=z^HOx^^op?+XHk2RWemrgrbxK5$ZvivX3jrr zTN@V+=dwN$KpMis_^Yj;yxoya;+Zq8VHVYJ-(zOP$U0F77@Agas!aWMG@XB3&HzHf zj0BqsMa3mQ69pBAX5@4gfB<{uBUPk-i4n}o{Ll?8MG)^Ys$HQOd2(MYGGh?e^vV@F2x zdrx#eg16(NSeucZjjDnVmYOq1zSzx~XpD$MLXWtv;<0bdcg%^rG(B4I+ zUd$JGUMwl_sz$2Fi!kvodq(C4m6m+CpO^8NBg%!YuLE^Tvgj_Jeo6-< zzf*rQaHcKiI%V!4BEX(&)o$-pP>HJF9m8+3#@wfXj{IZG~)28x1qhm zz>vmyGD_ey=*5U3Z0BZV(S)?!E1%~WVO&c_${>30#i|7uS6^VK1DEuu3TPj z$Ql7{pPwjPcGG+1EN%v0c03|pw)*1?8D(ip&vGCGvwxP9^y1eAQPgsk zOzWA6bg-PmuXJ&-Nute0{&LMp(@e09GW9u~l@?^q}>oRnk^ z6$vJb`uhB&&RXh`_DhuiXjr2;l-2OFGwB>%_5BGp_(WEn6|xO%;s$)l@`FJ$)zL%E zI_!B~3{fW18+=8fQCyls>5?_gsvz3ZbyGeCuS(-zx-}Zv%;?6?BgM9TGinL;;K$`xK9v#S{mhu`Ry_;8Wv!Kvq*7<;(gp0Xw^kmtg@A`_n!eWb zYG{PKY&{=zh_hB#8*uc$c88NI(?wAqT%hSf>P0EOM^*i3g4&?(w3BDjJgul#E2Hmw z$KhvJqvPA#$F+C?Cr&tRJecU5RUO^|$e}1nb#KkW()9; zMqvD!BjZ%HY6RIve8l!=_T`#6PlXj?Xqo=>ZfeomC(L!`(kDa}GY+i!a(;SZ#am~K zb_nTxz8P0R^|vA3bfUaW_|YmApI>S5vShGt+}`b^WWJHAtB1#-^1V5e!3ua}$IjO= z{qz`GKmQaz#+Q2w(eoE`dN%Rn^}G9*^R?RrBtLlQDy|_7iZ5=yG z@dUnt+BaUT+J9$H9zdZzN=E#bo@Bp0{o;sGSu0`YHdD z@|tp6b`-)>sK7FK4+1%_J*iM{@hBwGyNC)xBebpiqSj8`-9LOsCdk=8BD|n1B!+^c?Dj;v9!@3LiZmJtRmn;IpaO%qKc`W zDXi7Wpi5=`i!Z8_f1h?@UCN(Yag>1$v4v8#+1&h;KY`3AM$ce<|Ax%SIwici$t5ls zZQ<{i`07Nz-{ZH$ABkg*#>X{bcZs;>-`pDV?9JEt12tq`NKY0Su-{Fq%ma-gzHsdYW2bnuR1lvUA`$wba%4f16jrP~>grfKwJcP|8y!m& zNo&94?h=$ztoRKThZUs}u5je=#k|USx`(s0CY-zE*lLn^+;dYpc#Q!|)LL~02-Ss^)R-b}9&ewdW1u*vaxx`IeK+!Q*Mp67l^B)f zaO(N%VW-gcbOJIREmQK&hTX~sy=;QsVY_+i4K*V(%2x8Uix$P1p%}a`LjQh_gQ?oG9_M6SeRBqXkU5OM6Ro zza2-jP-9@Yey=~-Tf3FP;p%X!pkkv%j(N=1(L{|PVouo&Ml_nDFw?;N>d>jl71W=* zl^O-$HPBKHZocj+OB{L3QgGasx!CHMy_#o|0NI|`RZq`BGS@&M z1VOrc=^~&I#S1ce`ZEduwU`4}ct~Z^iRwFTw!Y`d?8Y{opwD*_fk{=Z9xt(l=l2|= zY;*id0{+rW9Q09c09ftA1PLGF&x;@KbCAM4RW2yT0g-9ZsqzoXZf?vy*pU@a?s*e7 z!|BFH6LY91{n@qYc(9&&MT_GFRo@9R&PFR3h51D-khE4_HpX2r&cLtQz0y;uwH4tc z2bEFjKc1MO28icnk?iId{2iIuG9OHhB&5jx7v_Tref;?K&$C0$0xdM7w4tuzK<1b8 zGZsP(x7d@7Bxv7CNBXrUAE`g}d?<%hU@#3!U+>;Zm1mADw82)y(`ls^+G~SLixp~p zUa+`N?Xx}BHsKc3zGVGyNtgW$XVMS3D-QZn+jh4N)-QUAw!WFE3+_s>Z5afW#C+7o z^_X(>@Fb3Yzg6kukPrs90zU1pmxAaEKa))0{OalV;yCmy!l=FvWx%3I9-a2@y?r0p z2E*?|F+meQoJ1|j53{5Alu+H3X>4%ZCpsC_E z3v!%G^hwTLR-=F`Wx{E!NK>RD26DL)Nz{`2Lh(gkQcouvt3beD{b&!#+@-l1_njJK zrSg%6ui28U~9hKIldH`lS=8a9h2o8DW>~Ju+wdk z9=fKmLQ^VKXc_6U4Bw(TWVM6?R09E4{1KH_ah=*`5(PotP8`mNxzfq2tH?YtpC+<+ z!EZ=+fPy$uK6~%_$Mw_U`kW4(EKu?OaF3*vS7KvbTZ`#@+DD7@k`;vCC_T|n3DJ-+ zuIxfA_95{L8(nU${2nYXT@3}b67w^)y9}eA9(j`(Yy2tUW2xn46Iznrkkdm>%cx#< za3U7#_AiuY&}j>nMo7uX^Y!`FuBr3uF=JM|jj}vSHx>?0E;3*XX#lY7kUXnjude3z z9PL%&t}y!{QWum?g%*xsCE60Hh4kR)P++%%i`3*i+(W+@n;Q0u3UqB+TF97yrmjHH z|Cn(KO`euYIQ{$%_mF2&2zR4f%1kKkW-BNI~mY0C4+n<-t5&hdo_ z&S0?2udf9Q5?8R?VHpPJIAKa(IFFI_NsWmdql>fN3((z&o^bZv$GZjmn21^5?Y}0b zzrXz(?IDLH85B|e(r<91y-AV$Yb9#=kB;vh!2s+G^?gG?#W`KoP-Wl4^ntVdxcEx5 zm>*C>RgkFqjX@g=wz^ONkJAs5NVlv%--2in?`lLtbu_-2BaI(x_BqO!_y$yX zfK(sE(tyPoOk_ZwHk+u+^F4YVZfAZ6mFa)6!E*60mh;v9otk%E(BA7#KC-eO{k=C8 ztaK}4F|wtJXd_^Plj%3ACUhI7n$aO?teDubPM3ehQIi(-*9|Il+Ok z=}i3QU|ndoa(&hK)YUu@fL5_>31hI|)_@FQJ)&P7w)*iFiHlR{6o?!mwQsAGBqGX_ zhje#E%2c~4R~*Hiq7nC=X)B-ntnoOSPy9!?0Z+(rswS1A_yGf)%=8b;- zte*i6Hj*M^5|uIDLoFcr`1&HfC_pn-ZqObI&_0fN@8zGi6O!5)kq<)RZ4{K@9VurV zWX^r`;0=>A?=a$WY~LK8jHkYLeOKa>8ajS>xIhS|DFvO5_4!$C;3{bdO&E|36oC?T zV7U;g&=9?w91btJv zRRNN7tEqd=Az3$sSnjFnzSC^HK%AH-QQHC=G-Pm^n(dip>WfGjNmQc0aYqPIB-Y38F2c_AN7XoXKA(8qv*jr#B`m4?zQS70Q~c2GNF89*%FK_U z+-^}o*=Z&8q9|!R{&xEAJi>~XsCgQB^Gu^q<-R&O+_5-llJeM-o+eyrpx4G`C5K>h z567qdO^)atCcsD$WpK5#KzY1fPNv zAKqLsF?L#B{`=zk1oG3UybzjkJWg-ymN(FaB<7yRLEP>{9QnSaavEPCW_7lFelro< z$0#5Ap$bJSSn^+I5nw0QhwP4)xY(Tss*V$8riZku;st8BUsH!I24+@N&s5o(cxmd8 z@-P99D=&rxm&N2?DFQT*qQ6~zfpsG#iLf;Ro37OO_KvDc7fOx4h5ds?o?qvLs??Ko zr0&_NKBU@xwwGi?HTUZe5+BabI+;qV-SoDTkUJ5uIHACz@XS_i`Wt&K1>SstX>ck! ziRLUiaOC0+#2@=xzt5WHTj4@4LK?biU&;D@ULPI`mS3O zL4T*4`}~0cw#jmuJ&tmxdBmLoANSbG&rsgcnFMawsENhgY+bBRu@0fbM$NbjH*{BF zE`86BqR}&leQ|KO0)M+$P~GnJ5FnauMv3vVBW^8ZpOx_|oS_zT4Pb;(Ht1yadO?e| zNK5+J&|ll3O?BYVhB?hGq&I1=;l`_`J3ZgEtJgJYQr)4zbr>a1-c8~Ji>Q!Bqfn=3 zRwd=^sR5~uz$>+(QJ{t(Bhwqm$=QAi$W!VqdA0S<5wRg=MU!XwrZ0U4rVN@Gcr_JSSPK6whbozjVY;ZM$arv^s* zBW$Ldvvt|5#%^gw^8aq`*20lcf7l#C6E2yP(5VHNwXM#cZZGc_VW;|JUR73>Hduaj zwR@??8F0%;Byp7J*f61kYCNqKP6{Q|_x~Ua+MgFom{CiSa~Lr&2Zdt2P)&d+Ab00{ zk|0G_V7XIOkg|he%EAX8-x}x2J@g!?u(+vdV3mV|h*$mL3tByz>Q65jDzMGZEKFTS z6{$mjgQ(!^ChEh0r*66)>Ck<6_+z#p%O{4*S(M<``?2uoMU|V#%(UL+d=l;|hrLB< z=?fEop*(mZ{kGM3P&)=7P9~Q8f_ID{w8f|1sv;gx5>M-dDXzeJ_G5Z~bAw%7O`&nP zZvJ{!+)qOT0^AJ(-Kb9pdiQ|%jwU2{o#WIup;1)fPUav&2BUAXwbYVNrGR`)mNEdP z2N*ia?|I`eu4edox~}>@(>EK^tWH_7fP5U~)ULmJv2kMP@~w$S+2+NxsRq*dnC4Dl zQvt!qW5>V%y3)0?I-Qbru#(6NT`}?ZG^nw+8};jYHa({f<^Cn$odSK5Xlok$D7=+_ zzWWN=!PRGX)l)%`nYL}yq_D214*rW(E-s<#t68nJnGF=f!O03UsUXTCZA+r&IszEZ z?C1yc<1?%P(kVCw@mG`3ziVgoH62=HUa>Lb1W4hNflz!EQjVxHgFaF#Zg zA`+KclQx#5)DPlQ=}R-jhk z)h6X#V>0#KJbGZXF?zszVee(L$6Pf`-Wyj?IbPdg3cRlHq*&4q9oqMHhG1VUpE5~_ zD{7WOZy$C!yi`w(^!c<7LW>BG*eVoP3Sk1c%@Q$}!`-l-)2cUA<@aZA+u*i%*DR*G zo16*N4xuWaRtE+08-_4?Is0v#QanO&I7`&s=qaVBx332DJhMF_%reXN=?pwj~-yJ;3NdRIi07zqe^^q7>mp*Jx8uE9})z6?k3_D zA{wNw9`thV>`Ed?F17OiupEog@YmvD zWsXc~B=}-}H5;XlKB?{7ZbeZ-F@BFrA|qT1&3hsPar8+crYuiuhf9QUHZBQFi59@c zr4734d0!^V6A_qwWpAWBOm#UoL-R3AZR zh=YmGS%;fy#4WPSq5H_94y+t!%b;%$<(xf(e){v6g9ckprBf`VViKu6bnJ88 zR{ZrQ;z|lf2#C&SJjd3_BCPDz9xz`GHbs=$fOX4aw7K6!XK!C=q-C=#Yo%eUf^gtt zXE(c-ZOvx%*eQ_7j(G4XZsX{8nkz{%+v3d56wYKLk?0!8;CibP6#7 zfuQS{ZlIw!Cq~P^{`z=W1L2>};KZoo39X|_R=RLs6?8SPrn$NbF-hIeR_FJB|Lgx8 zjdtP*X(J&b)U%o~k_kzjH|bQw^T(5Ycb$s#c0y!z;cOoODPs(hcvtt|W%*6vOOcEa zFgF=C={rJAs3&Qto$s*SM@B%Y4S8!(G5k8-?QpKOwElJrUk%iDL%ngyQUc)LlnTzp zQdB=V2ZY~~Y9-NfG`^qTy}w7<(kJtVhjRO?eU%o8yq|hsZ5jDa4Q$iD7_DCt0eB*`j|# z#6yZmksfuZ2yb^@$9&+GQTSe;awe5}9Zs(XM{Q*|FE>f5y2+*-X{2jRDE@pb6PHn-MO4h6CUPkX25}S(4JMhAVQK*Ho6QFRm$|){V&5 zd?rsR-2DtUwlU8Ql`N-_8!#4YN!s5kkBupl|OGt@#28g z+#*SL1EpbhZ8G*J6!?Mx+btvB`4`7$pINfdMJ86vxHzT-{6YwW+EsJlQJ1_77lofFY{*edHy+I|J}DI&Nq!qLpSFCKxbp}>YOMlY zaTO$T-V~J#Z2agzeorDI^}J|jzBi%MjEC43rtJ*(iSXmN%#To(WXpB(Ld)J1mIVGM zep?slRH*bj(B|(Vo7#gHfz3C+25i#ftb=QUll(^Wh7EU@=n&@`Kgq%wz05X5)cA&W zPL9hIn3_7bp56@J`5q2%^?NNqrRBsA#`-jhE(}$*U4~;Epv-Lv&q;pQzSva4R9}s* ze*CE7U=iBN`*Hj15FHB!zHSqn7&IjCSl&Mbx08kus}Bp2S~ZdLJy{w9jrY|Kl=oRQ zDkftCf;gr6zh140@+bgwE?6(`Unj=G@q%u9CNCVHEUGd8zmxw1BF=yMq%?a=;Q_X1 zk>;ZNWHDPrbv7b2dxB6&^D5HT|C=Y}qPzT;PkBSqk&LF=XH0)SbF7+*Nk0MB@(*B@ z)r#!C?-%`Q?}PvH?A5yFO>}!9#*$c4xFHt<8y30h7{<| zPxy&yUFj{t2s9prcB0>w82Fl) zp2VY~Si=|wjTDm2)S*3=%jCbw%SMTVPDZE+fk3}92rarKMK4xO*rk%5+*3_)*Mp5- z%+GLdL>TI#F`{E(*$5IzfAN@`kso)br;W3e(~Ns(G~QXr?>3$$-?GBD#7vw+%A-wy z9t!9#f676z<5MJQ6rb@LI_`(BKVKlS80=50M2J33bEH^0&H@+R<@!9&ST2)OF$4YO zi?k7t7^|IIB!;J*|Kh_2dyF)YZ*Ymf(xBsSS$@4=!mlzT%luKQG$O zX;E``e*g5QI;!>~zl(Mex*e*>AbJX48qM$bHe3SPi?-A7dk(_jcRhrxA)ERKKU7cT zR1L~=8R^}wc|>%65>El5vw(`p2o*eK;hHtj<@~Ge2_Q2zr2!uup0abAifixCRl6T9 zzsS+t&`vs

4IA6!uU@E9Bli+jLK}|6+-?7`&yU#OM4>oRFZg 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 P?D7Ubv7sq#rE6@SW= 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

) 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

)!4Xrv5osOXlzet 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�rFF| zAH17)`x3HUP^}x5ga!I*`g|_W%qjD0ysxjT^H#pr`c%^)sq_?1XqJ@Q#mBwLs;-3t zxa5cv^zpLpa8^XsjylB=1ZUU;)dSm%Skx?34d5ku^YWU}gcWc3xhPiA*M^np{3RSZ zUN{<7#)5<;TF`ziqhNAz=MgKAUka<2R}ye2!GeCpYq^rz=@|_G#c6t7d8#l>6>d=! zrqMI1{RuOCY&&XyLS5y8L-<#=9=>z_I1!Kl&n53vdNKss*7TiJ`jAuw2wKy9`_keQ zwR}pZou_IZqzPb7!8{+(0^)x+VdUW+D6~+$oc%Rf$m`(P6?ofRCZGftH8=7IcZxxV z<)>CnHes)_e#aatLQ>hk|#6Pq^ zN7f)sq|&@6lc_zVupUb&wR!T9%Wzy|PgT$mKGRO56CCqTmLy?!+?7r%U;to(j|t25 zikS#bf(yaPD+Ec<+Fa2+z4oNy3UFS^8^gufhipxN6wKnB1u}pcJI?9wL7vKP=TJG}zN&9Zvh9bg;^BEUQB2k(ENi`1*?X zQkjd3HxOho6IH5rjz`|(DkW=d+a=V z>hf`87*oN9q7n*ToJc9Sb_ca6G43ctdW__H9;L9piWi43QFG~f_|gjtyC3Ad$s7pg zmqRO=B91;JHES~s8Bj9!4z;cb<7@0S>rD**5hEg90|s?0E6kHN-QoN20SmJChLHg? z9gaUy^JWuIvF;W{a4=x%cgy>BPxIQsyavAv?PwOEGIgSM+|&n`G2*)7tggxD)(6S} zaoPkSt}Z;42})Uuf<^i5433*3-Q5c?bP;m!@EvhPr?K0$*W(#v@13v|58CA=mKLPdn;`W<|ZIk`0-4?8YjOxLVBf;5vrc` zmi++m{0Y-57YyaCAaB_=KF79YAK*_8e{hvy>CbWtYH-H@NPv9D&okHJwZEgjVvQby zU#0+8{)9!93)-|P{K?En7W+25@?8eQs)bO|iDEz;01LmKN>49MPjBE}bkSI@;k7>6 zbh-x8d0yPV3dFg7b348r5%3Ep8sHxP!sA;FMmSI zlOx9t-Q4+{;+u)Q9I&goKoS8@;t~BA)}ER$wbENwLjivA z?)jwS2x_q8Gh>-|Cf>eKtekL+FBV6OM}SGhh41~hVW)?~Jm!R83kWw#ifXEJIFnlND| zqpnf?;8}~{uk6swD8z_1_TKrSjq@jYk%VJOn|JvrC6J1puw z`#ZNsc-U{>g;C$N7%7bcY!2!aIpz)N2h0F2JWzW)3(Zo1tR%>L%mnd*DI(b#I6>{u zHVbGG;V(`vR{AP>>XokYop;Y&(W9IvlJ7I474b-NGupk19#fR~=2Hz^EupF1O9&#? ztD+i4_Ok#U>shguKEUbdg{aF3!ZRYFx5+=C9}T_nQ)uVEe5q% z(%I-V^pBU2;<`7lT*)`-v!!o6zE!|K*7VJ&xb>GkoC>+|8@PY4ayu}-WljmA-$(O% zYqdYn1Y zGfsP1k~QgRJjqnUD^8Q#lT4i-zj+_krxf$t^;}*7dO^G$eQi+qm%|EbmX4?1uc=qd z`A%KNFRTrci5h#=>UUI3r7wa15PxQe&vW3l=}8T#s(&mPD&E-gyruw&;2;SeLsM0o zyyhJwnVQL7)G5Wj1wC3o-M5?8=|gw_Icni7%GaPd zXQp8vo#xtDKpIpdae@6U8Emhwcpe4UTgC|jFL=s7I#uy9qhD>K@h0unh?gCtwVFn2 zPERVu>foQ58F>VS77`)*Wxry#U$qIF(0hL2-eh5y#Zi4Ol^J$WD!^h^u{#yaD)+12 z<4>jUO?fX>g~_M^-F$vE-msg%l)CapAhGzqu$5=uvy-sxwO)HoB3s|huT4YMyE)Sm z*}cYY9DOI#2S9e`A9w4%WXGh0jliwPMl4gO-2N|Hi@G9t%J1B7ucbl=(KZ?d8sd=x zDX6SO($t z@fQpmhC5maKk+GA7TOGf*|Tk8mTDHjh2bQ8U(CyJq9}Oi*I#mWB>4~LcoJuD@i@a@ z9OG;OC>b_NAtF6C(qUpgb*zRcoZBlR&0yQwqSx>XR$r4am<~aa81}oNE6<#3Nj!8zuxAI;w)xI|F&H64jCR;eu!k+ z-2K=GAl4q=a#P9AM`G^reNeCOqF&#ei1#R8K!N=BbRQ)DTbEz*zqJPPzk9dOqlG>4 z@5U6LUtV`!^1pfDv&Z)XB;@Doer5i50RzbY9^NazH+;SE0XRMCm-YJYjo%Ty^5tcg z-~Yiq^YgOYIZyXg{{P>#tSik=_Lfh?@`L-nuGjb6Uf<{U`kvD3`!l`1kL&e)Sg-HF zy}oySyeB+w^!k3b*Y}2A-z$54|FqZloxQ$q>GgeG?i<#z7!`vPv7(%di$AvQfznd* z^(;Q?oSCI_VVonSh`DS3r~$I8$TBHgq+<5TokY<-Py0{E-Mi&wePR)srND(UHF2A% z(is~wSCtiaeyW>DQ&n%e8+(;@WACL=Fuvxsh5pU&e}|?T=gHLRE}Pkj?c3pt+Ptuz zlY8xm8n(nts`<(dB9s3)C#x;b$8M?6!b)e$3WMcYb#k zSKZiBWb_+pxM>;zGhOWDB5SIXhl$jzP|aCviOu`Xj6vFr* za{{&uor5*MSLogHj<6QnE(idD^*z1FH$8ucx9n+^Ha*|;1hC$`(a?;&Std+vvd+pd z^q&qxw)eB`n`KevkVSq2QogL^k1NuWQI)VZkQ;9l!8VGq?8~{sG;v2qk@o zzwjFoECcJCzKVv3(0;QGn;;>1UHvHP%3G#`Ds|^I%Vn^iF7M(VMr7BCyYxq6VVp1( zBf~MOV>Yd#0drSOtoK?ECuKunVO9}f14~yT zSBq>cS=nS{3p}Lr=Q()*0-BdQ(5m18DihoqLB!1;E@edC?LS~T?L5oQw`Be2FaVz} zkus~A2j}1N+dnKywtp~CODus}bfhF$u7vrSF`a(%RlFdc%3O)OMSN?MI^@)ekCbAI zB6~prsq_LKeCY6+w+M;u$d`_rgyoep-^S z32Hr<(UlB_&{yZ3IlWbgGZSsF6}Kk8;-&Cz@ExIX$s}Q~IJ-$n!b~4LFusM?qiznw zI~6~G4Q++qh=JKsBL>N#9PGi8#*5qdc3db^JeGOQgdG<)ubao|`t_h$vnT(9Yq~T5 zIg;U8R7X%lkbR)~`8?Njx@a*OoYlo3vVSzFbU-@Cs>=OFb@TC0TxV51RGz)A?s;Wa z`9`Z;2W#T!afT)&`vsD07(5j6s5~+@=mM(7(?Cu=cM&-0soR%)l0c-4O*B=iU*#sl zawLuiq)yHW5LoJEPKKKBr*rdrX6C9B27u?zE}ih%KcC6N&v2k3vJ(NtK~b_|LkxW$e((#t;nAArHw&9a z>Osc#y+w+Sl&aza@PArI*X&ESZ#`pr=BiVeu@CXeYO2h>NsiO^BYf4x_$oIatVs@2 zHW$ntnBuk~XcVTtB&)W=6mQiTZEIjW^LQlMO%mNC`)?6Y@LuN@{>lED55ecP?vOn$ zctKcbTF*H-2sks7`V0oX65{t7ksIPGEArYkqQO05h%15X?Y%Rf? zNundiX?QdJ`lpBTi{sp@pctLb6Gka_J6m@KFT&(s17) zQLEvxs#j|DTnW=ogy*~b=X&NN(&3b){Li@jZRFElB8Hka#)n5LFI|sI81te3 zc>o4Z_6T~8MS_94&ZN6b$UH6O2e`{6kFa_{5U2HCU01TOBj<%g_?94p8th(5hyt4mK8euEEMM$~7EZ~Py(cP*@2%G|31ziU*&}mh?~BSN zt6uV27DIh~%D#PQ48ueD?QTFv?NfG5uI$GAc0WLY?o;;8T-j&x+da9zvR}xR-ICw# zJadNbg@@B~W#7tgcW-|X(-sCH8iZuR?^7rm?^yxwZ+@(gNbE! zn=v6$OHE*3X`IiS8_D!2JhOTmYw8IdfM~KpmsC8nuTN(8=!B*w!()97eRu4w$e`> z{R{@j^t0RgdDCP%lbTpl3;yai7ir(p1!M$2e3KJRzm>G^TrMs2>f9C0d#k-$bWtyO zNBEd%SOJB}%*bI%VDHu+^g-C%e{AQUbGGo$w9Wi8sm&WP-WxF=WB9yMZ^Z0MZ^T6j z@OfThi#H;b*bG_|ZP|N_hufU#4h@U-&2TVcLp`b`?kfD_wOmHJLaS-sI;)+3SW%f{ zI~5(NLN4d&jpqgt7s^HOMtDEVzCOSaPlJ?97`5~(|3!beHPVM~K3Q5aC$S6Y;A3T~o5?myOni|H9 zw`fB#!!HIAwZ&VqKhdnxt%CN)z8PMsVyDz&Ju0VXT_eQv^t4}xoX|O7;d$p>BBsX=fZ=2=Iw~ROZMfvy5Qpvrp8}Dk(vVUh zr@)I7a7&nGadr?p`bR-`S<(Lty7!9r2i-~gf$pwh{X;ha@4%0Ou4CZ;47v;V3*Fa- z_K&;w4(uN~#i#lx=qmn)&^_$!4|h8g{X=)*exUoA9ND@FPVSc#oCS3g-R%QD8gZ%2 zxb-YahPvGY4XGNWZ{Nn)w4(qJCf~hAT{g` zTMwd-RstPUAehL)SVu%cxyEp7pd(y0#6ghE)Q*C4!U+)~yp}@{D*zQiqQ3AA$r7GH zN;X0dIYgv^%Vul9^x5X{`#oeYs{X=)^exMr-bYANp zm|s~N{9s7-=lq5kH2<1=(LgrEUEE|^ZsNt+=lI>dIkWHQ^pSJ%1eN0%mf11KmK(AD zs_b6-i~nbBStSxnB#8!D)rH?F1+qYEX%J zsu;Mu4J~DN@C6_(7Kuca!%A3-0Fp-2d7_g)uwT^`)GSwGa|gp{DZ87ZNo-N0O{=7y9POt+jk|*%q~J6RKD?8_?AS|?BT2!2`89P%*eNE= zy1Ns?MI!-yfA?A|;2ZxJd+!2YWp(BK=OiZ(1bu>q3SKJh#MV?>!SMoB#~ciD4hF$X zEq0t1s4oz01wvwNYXwZeoJmvZ)R}gsPHU%~)@hyMOdUXMYYt$zc!MYxiD&?Ya|p;q zZ9ozBcV@4tLLh&Wgfx6HwoS!9{VMMSH) z18-R&c-*3&^DAF?hG{)#gO zlr@Vez#iEC^$f|{H$?XvJ?!lnUjmqtnqjAT^=MK9(G zxBD?2nox{d9V^}G)qPX_^Vu#Gu!gj<{~wI zR?)%g8=I+)Q`9btavz6gre?m^zR>AwKzK>}lQxFr7yD&T)#Y;^YG$5R%%(5a7yV$^ zu@d*BiiQ%09TlZ*ntS3{0aAqv>2Cq?D&kwYyRf}4Tn)3K@ME`EJ73Vr!V$$|uHKZ! z5*dHT)+R%>hx(Rze+S0w;uc=20LS$HJXhzvu8)p?Gl*3bTONL$686n?ytmB&DFYAZ z_~(VX0Mg)S@Xi6IY|K$0%KevyDVu7(r|a&@SqL;HjbzTfkd;vHU)z5`klHWuW)n>w zL37HCPgiEbNp)rBqa_M-V`mk>r#?PDeaoWYJS{hXPQl1uXN^`~p%{}tArmY?@@zvleB#e)chAN}2j*tKHJdC^6mY7VPE z8&DY!4Q?5PGAkNgq#0Jf6%?Q=B;==Tv?L{!qyk!H6Wm5bR zPOsuCUsv+6Aa4K<3{Gj$AZ;iQY6>=JG3vd(br#1`YnbgXqF;^^F-@^m>}87DD%Od$ z#+%!uSGS6(S9c+}FB&&KQSuns?Ye5KoMOXvSND%HRV5l%zqE5EWXh7Js%GnxSD-j9~T*xUhVy!AfE&e)iusOj6}0xXnpeadJIrH$_sh#)+&qZtzia-G;d3~;sQFWdeWBDKR#P|(R_2R3 z=VD43DI}vO?heGkc8;BsXkh=z&sSP41>i`jufQ2x)jb_us@9C54OQE(JRC=ds){y3 zO||48W+?S%G>~~~AuqYD;2~ChJ-x1{(Hs5JtXk;0?XDKSp|c*Ywnl8kNsU z6x`!J0CFOZko*MNU$778;=?{IHz_f-CtSEz_|+hBxYbM==60^n+#WT$$0I9w>stDQ zwVjXMCwcHqKlc8d=M0MeCqEJ9h&%DwZ~7-6bN29_``LSlKQiSDg*hi`X0~hQw4j+p zmu6nJ5{_AAVb6OcYrS>T6DsL!^zSQeOgZ zf)|#!TX{u(5fOa+{Vtg7&EbYjQG~GB@K@mOPvru3R~=4y*UET8Jt@|s5=?f=M+d>7*%2zsF;zQ^{sM#>Lc6$h*0hM?kK1{H7aQgJ91;gTTM$UzKf%!T|J$p#Z)VQ?6c zW?81D68f`()M=PaOYj#44RLL;BVDzUmKgXnEu=cm&FN`Kxy)N|Ao*hpCk1WBm-u7_ zPjCEc4qxZEo7Q8f^VdK0snf;@UypXi$2h)jVow%zcH7K%4SNc|95nN1nr==rLzKem z22nl2g)&9nBTGKITJ9Cux7gjQ(WH+Zma!1ao2bB>D<>0zh=c`}XsR!7hL09^0X7S+ zJq~uv%X$~iI()zUio@CX8inca_2!s=QUmeI8ZAGL1w+Xq15g(=&6sS!H--0?zjLTd zJ2hY7OoiImM_$mz+)NufM}!_8;CYYKzmU)s|9hl1D19C+Bv%}p+o|sBNzwZv|NU9L z6Erm%zq&*x;;+_`YCyCuFLuZ=;Ol&y5MyVeJDS`?UT{ROYe1QCruwM32Nmk%MzFYQ`?nKwj#$nU$`Yjo_M3s3D+PMpPbbebykS7VSiN?bv$!nhWn_%rNacywJqg*(@L{Xjm9?W>g<1HA% ziBp#)%1?Ks%|y_|lha&G4~tblc%^lDtGd)>KGCa?(!AP%dSuwHQ}I)nuZ>%_H^0*( za=)yVpRaXFhkfZ#9Sv#n7HnAjNqr2pz{Ro2BX+w(i3=82oLq#F8$(CG;C%pxG0^ho zxHva}BsDP2Z=(%ou{JE&mrWNg?#Z0n4f+<(MEUgqMC*^-$vST)mIN0f4LGiyd%A09 zvq8t&QGU>la4Kl$taLlb3PLA7yT&;+EoUv}+q$?hy4EMNK4sEZDSaNTCoeoWm-w{| zuZbjoeN=jJkUoKQeMYF@VX3^xG%MJb*7b05dM(m`9j2Ia#Ur0h?n^ni(syC{vmJ*k zS5h?iY#|&_moOoSZM?*FZE!ovbMCJ}r{`okJp?q=Kb`KW_5xz8LxR z+l!%i8p;G3k>73K)TiwmFpT7WtRb4}Dfrzr%hO-_59fD+AN+2}BR->wf}pvK>K;-~ z$?tSTj%Idz*Kek8mu5U`CYRs+$M3=K0#^5?+HnZ{Ep;kZSF49?OuG3g;Q-vS3#%JP z(c@X&k4Y1&yIRfI!ja4B_FI?6>WsfRR(FPVn#Jli{W{(0ajb6ZajfoQst!4j#pf<7 zNp|9PB6Fo87d2dFLA;BTpTUZ$#LG!^*!}&Nxan{Yh7F|{e_OY!8~$eJ1YNu)4&bJfWM{c4Ab*6{Oi{wWS{5TVejHw zwD* zK=A=DyTrJH*1cR_b};DBd$5m+I9?VyzSGtJrcQHt+3WVr(!4BB{`7=H5(Rzko-OXF-qtx^H&d*N4r>>@3Umr0@Uvi4_%j`>J_|(lBLYzh%pSqro zlQ$imi99xYr;IsI%i`yZ^i2YeTl=3d^A*Bc#-6oEx!AMnmH_4(#uAW(=>K}9KLq7>4$+c>Y6>FiHKuYVjnIE`jE(@AD z%6o1zhpmLOgJ)T_>cW9l%VvyKYlY@Edzs*oJ|8L3voz%n^=Bn4fm?M2YU~WRF9mtthK9YAHC(4- zHy0v6Jxq#L;X)hp-GtZpKZL_+iPvL-7T=2}&Y*16liXF`OrD?B zN33*zY}gB4?K8@z57y2>bZ`+36R6nu7PzqAair__`Uc6mofOZcpTYK?yCn2g(%Fxg z#e8pxjJ|~t^H!_3&)zsvBVI~@Xu~ZI6SPDA?@Ex7uai>V+@J7D$L*K<{HoF4I$&!! z*NDGk+f1CqmxW@p-#@IHb(LzU(d`sGt>d5-+>?q}x!D#7e+K~z-}lMtS@SdB=+6?)vS(_I%bShJyzGo_8#8bzkrX+jc70GP=>>ItcKKeF0%a^@R zrc&AMMg;Wd>L1wNO?|r$!P)#QU-cXP`V~R_<=0ufp7hv$VuW9owugjLYe>n+Q-Pf% zl**%tN%NA=?3~+~QdB$#_vA12E_M^}DSy%x)-b5z-m!Onh7`WDKCba&ecbq3dDZ&Z zX!K$Tf14=ds=L9)3OzZD|IQO#G5%9z3mb**aL(@l;f7l*sLO|pxZot(*~#?rs=k5s zu}_@W`bg@@_3Y(>K=S87~gB{KZCTP;~mZb*$!1MjCZIXFR{23YS}%fjUQD-> zmPbEnBg~RVZ&#VD_!9H%oz{{o;I<|u&9yqSn61g9PX_6qApIorXt4$;_2k6z=zsh? z{hb9;*>Ze4%<=N50ydmV9+iK*b$D`lw9GoCzl$=ub$9Y;CydC+ql(t*zQ^oqg*V=u z?W9B-A1QeZm_&!I_vYw4RO)5N;`sjAa_eC+D+P7S$gS5wlBpk2I^c)C{CX}$O+Gz= zp54b9BjLO>c_3Rc6<#wNM_Dy}5VI;q^2Yz|Wkd~*znoI4@X<35m z9XL1;2gA7KYuG_-k&&p%A*F^}5LKN)@mJI| B|oIa%Q(@?m&&KFhLFF#JkyufH9 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ⅈ_x8Ai7;6v#`e_@g@h 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